@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.
Files changed (194) hide show
  1. package/dist/css/11.chunk.css.map +1 -1
  2. package/dist/css/12.chunk.css.map +1 -1
  3. package/dist/css/13.chunk.css.map +1 -1
  4. package/dist/css/14.chunk.css.map +1 -1
  5. package/dist/css/15.chunk.css.map +1 -1
  6. package/dist/css/16.chunk.css.map +1 -1
  7. package/dist/css/17.chunk.css.map +1 -1
  8. package/dist/css/18.chunk.css.map +1 -1
  9. package/dist/css/20.chunk.css.map +1 -1
  10. package/dist/css/29.chunk.css.map +1 -1
  11. package/dist/css/3.chunk.css.map +1 -1
  12. package/dist/css/30.chunk.css.map +1 -1
  13. package/dist/css/31.chunk.css.map +1 -1
  14. package/dist/css/33.chunk.css.map +1 -1
  15. package/dist/css/38.chunk.css +11 -34
  16. package/dist/css/38.chunk.css.map +1 -1
  17. package/dist/css/4.chunk.css +3 -3
  18. package/dist/css/44.chunk.css +11 -3
  19. package/dist/css/44.chunk.css.map +1 -1
  20. package/dist/css/45.chunk.css +38 -0
  21. package/dist/css/45.chunk.css.map +1 -0
  22. package/dist/css/5.chunk.css.map +1 -1
  23. package/dist/css/52.chunk.css +52 -0
  24. package/dist/css/52.chunk.css.map +1 -0
  25. package/dist/css/59.chunk.css +14 -0
  26. package/dist/css/59.chunk.css.map +1 -0
  27. package/dist/css/6.chunk.css.map +1 -1
  28. package/dist/css/60.chunk.css +43 -0
  29. package/dist/css/60.chunk.css.map +1 -0
  30. package/dist/en.json +1 -1
  31. package/dist/libs/shared/src/components/curriculum-links/CurriculumLinks.d.ts +9 -0
  32. package/dist/libs/shared/src/components/widgets/items/resource-widget-item/ResourceWidgetItem.d.ts +12 -0
  33. package/dist/libs/shared/src/enums/CurriculumType.d.ts +6 -0
  34. package/dist/libs/shared/src/flight-requests/ClassificationRequests.d.ts +1 -0
  35. package/dist/libs/shared/src/flight-requests/ResourceRequests.d.ts +11 -0
  36. package/dist/libs/shared/src/interfaces/collections/SubtitleCollection.d.ts +3 -0
  37. package/dist/libs/shared/src/interfaces/models/Curriculum.d.ts +14 -0
  38. package/dist/libs/shared/src/interfaces/models/FileUpload.d.ts +20 -0
  39. package/dist/libs/shared/src/interfaces/models/Language.d.ts +4 -0
  40. package/dist/libs/shared/src/interfaces/models/Pdf.d.ts +4 -0
  41. package/dist/libs/shared/src/interfaces/models/Subtitle.d.ts +7 -0
  42. package/dist/libs/shared/src/interfaces/models/index.d.ts +1 -0
  43. package/dist/libs/shared/src/interfaces/requests/UpdateObjectChannel.d.ts +3 -0
  44. package/dist/libs/shared/src/interfaces/requests/UpdateObjectRating.d.ts +3 -0
  45. package/dist/libs/shared/src/interfaces/requests/UpdateResourceRequest.d.ts +3 -0
  46. package/dist/projects/lite/src/app.d.ts +1 -0
  47. package/dist/projects/lite/src/shared/components/play-page/PlayPage.d.ts +2 -1
  48. package/dist/projects/lite/src/shared/components/synopsis/Synopsis.d.ts +3 -1
  49. package/dist/projects/lite/src/shared/components/video-details/VideoDetails.d.ts +2 -0
  50. package/dist/projects/lite/src/shared/constants/MinimumGlanceHeight.d.ts +1 -0
  51. package/dist/projects/lite/src/shared/views/preview-pdf/PreviewPdfView.d.ts +7 -0
  52. package/dist/scripts/0-b02efe11fb.chunk.js +1 -0
  53. package/dist/scripts/1-4f19a5caea.chunk.js +17 -0
  54. package/dist/scripts/1.chunk.js.map +1 -1
  55. package/dist/scripts/10.chunk.js +484 -1203
  56. package/dist/scripts/10.chunk.js.map +1 -1
  57. package/dist/scripts/11-32e30d10ce.chunk.js +1 -0
  58. package/dist/scripts/11.chunk.js +289 -1388
  59. package/dist/scripts/11.chunk.js.map +1 -1
  60. package/dist/scripts/12-72a5373486.chunk.js +1 -0
  61. package/dist/scripts/12.chunk.js +1371 -283
  62. package/dist/scripts/12.chunk.js.map +1 -1
  63. package/dist/scripts/13-1cd85ad3ee.chunk.js +1 -0
  64. package/dist/scripts/13.chunk.js +361 -394
  65. package/dist/scripts/13.chunk.js.map +1 -1
  66. package/dist/scripts/14-3d60b8ee85.chunk.js +1 -0
  67. package/dist/scripts/14.chunk.js +793 -332
  68. package/dist/scripts/14.chunk.js.map +1 -1
  69. package/dist/scripts/15-90226fb996.chunk.js +1 -0
  70. package/dist/scripts/15.chunk.js +295 -214
  71. package/dist/scripts/15.chunk.js.map +1 -1
  72. package/dist/scripts/16-913b2535ea.chunk.js +1 -0
  73. package/dist/scripts/16.chunk.js +530 -434
  74. package/dist/scripts/16.chunk.js.map +1 -1
  75. package/dist/scripts/17-d6c19ccb60.chunk.js +1 -0
  76. package/dist/scripts/17.chunk.js +296 -170
  77. package/dist/scripts/17.chunk.js.map +1 -1
  78. package/dist/scripts/18-33efcac0c6.chunk.js +1 -0
  79. package/dist/scripts/18.chunk.js +265 -199
  80. package/dist/scripts/18.chunk.js.map +1 -1
  81. package/dist/scripts/19-2380200cfb.chunk.js +1 -0
  82. package/dist/scripts/19.chunk.js +7 -3
  83. package/dist/scripts/19.chunk.js.map +1 -1
  84. package/dist/scripts/2-53e37c2047.chunk.js +1 -0
  85. package/dist/scripts/2.chunk.js +18673 -622
  86. package/dist/scripts/2.chunk.js.map +1 -1
  87. package/dist/scripts/20-ca85f0514e.chunk.js +1 -0
  88. package/dist/scripts/20.chunk.js +1824 -221
  89. package/dist/scripts/20.chunk.js.map +1 -1
  90. package/dist/scripts/21-ef4a226771.chunk.js +1 -0
  91. package/dist/scripts/22-99c04e164f.chunk.js +1 -0
  92. package/dist/scripts/23-028eb81a43.chunk.js +1 -0
  93. package/dist/scripts/23.chunk.js +1 -1
  94. package/dist/scripts/23.chunk.js.map +1 -1
  95. package/dist/scripts/24-68f8df3eca.chunk.js +1 -0
  96. package/dist/scripts/24.chunk.js.map +1 -1
  97. package/dist/scripts/25-7ad07f87d4.chunk.js +1 -0
  98. package/dist/scripts/25.chunk.js.map +1 -1
  99. package/dist/scripts/26-f3dcacfe4f.chunk.js +1 -0
  100. package/dist/scripts/26.chunk.js +1 -1
  101. package/dist/scripts/26.chunk.js.map +1 -1
  102. package/dist/scripts/27-e844268f38.chunk.js +1 -0
  103. package/dist/scripts/28-853bc5de1f.chunk.js +1 -0
  104. package/dist/scripts/29-b164ecafe9.chunk.js +1 -0
  105. package/dist/scripts/29.chunk.js +435 -500
  106. package/dist/scripts/29.chunk.js.map +1 -1
  107. package/dist/scripts/3-a1bd8c9016.chunk.js +7 -0
  108. package/dist/scripts/3.chunk.js +625 -18676
  109. package/dist/scripts/3.chunk.js.map +1 -1
  110. package/dist/scripts/30-2cfcf52ea1.chunk.js +1 -0
  111. package/dist/scripts/30.chunk.js +634 -429
  112. package/dist/scripts/30.chunk.js.map +1 -1
  113. package/dist/scripts/31-e6a8291d2f.chunk.js +1 -0
  114. package/dist/scripts/31.chunk.js +371 -670
  115. package/dist/scripts/31.chunk.js.map +1 -1
  116. package/dist/scripts/32-7030dc98ed.chunk.js +1 -0
  117. package/dist/scripts/32.chunk.js +27 -54
  118. package/dist/scripts/32.chunk.js.map +1 -1
  119. package/dist/scripts/33-47b0ac90bd.chunk.js +1 -0
  120. package/dist/scripts/33.chunk.js +700 -312
  121. package/dist/scripts/33.chunk.js.map +1 -1
  122. package/dist/scripts/34-2de007b628.chunk.js +1 -0
  123. package/dist/scripts/34.chunk.js +3 -3
  124. package/dist/scripts/34.chunk.js.map +1 -1
  125. package/dist/scripts/35-d2fb66920b.chunk.js +1 -0
  126. package/dist/scripts/36-bc85df33de.chunk.js +1 -0
  127. package/dist/scripts/36.chunk.js.map +1 -1
  128. package/dist/scripts/37-e26652840b.chunk.js +1 -0
  129. package/dist/scripts/37.chunk.js +288 -464
  130. package/dist/scripts/37.chunk.js.map +1 -1
  131. package/dist/scripts/38-0b6a6b9619.chunk.js +1 -0
  132. package/dist/scripts/39-6549f483c6.chunk.js +1 -0
  133. package/dist/scripts/39.chunk.js +1 -1
  134. package/dist/scripts/39.chunk.js.map +1 -1
  135. package/dist/scripts/4-9e83a22d7a.chunk.js +1 -0
  136. package/dist/scripts/4.chunk.js +259 -1021
  137. package/dist/scripts/4.chunk.js.map +1 -1
  138. package/dist/scripts/40-8e6e9d285f.chunk.js +1 -0
  139. package/dist/scripts/41-2b44a2e66f.chunk.js +1 -0
  140. package/dist/scripts/42-9e75f420d8.chunk.js +1 -0
  141. package/dist/scripts/42.chunk.js.map +1 -1
  142. package/dist/scripts/43-1141245420.chunk.js +1 -0
  143. package/dist/scripts/44-9bc4201e0f.chunk.js +1 -0
  144. package/dist/scripts/45-5ded8ca3db.chunk.js +1 -0
  145. package/dist/scripts/46-2afd7ee1fb.chunk.js +1 -0
  146. package/dist/scripts/47-ab30686138.chunk.js +1 -0
  147. package/dist/scripts/48-d9cd99d55e.chunk.js +1 -0
  148. package/dist/scripts/49-f43a08f90b.chunk.js +1 -0
  149. package/dist/scripts/5-974660e17b.chunk.js +1 -0
  150. package/dist/scripts/5.chunk.js +1017 -259
  151. package/dist/scripts/5.chunk.js.map +1 -1
  152. package/dist/scripts/50-af699c531e.chunk.js +1 -0
  153. package/dist/scripts/51-aa7b835007.chunk.js +1 -0
  154. package/dist/scripts/52-805f7fe04d.chunk.js +1 -0
  155. package/dist/scripts/53-d75ca53045.chunk.js +1 -0
  156. package/dist/scripts/54-2e75bad46f.chunk.js +1 -0
  157. package/dist/scripts/55-ed637c4847.chunk.js +1 -0
  158. package/dist/scripts/55.chunk.js.map +1 -1
  159. package/dist/scripts/56-2ed3b5764b.chunk.js +1 -0
  160. package/dist/scripts/57-e51101c8a1.chunk.js +1 -0
  161. package/dist/scripts/58-9a32a6fb2d.chunk.js +1 -0
  162. package/dist/scripts/59-da8a8c97a9.chunk.js +1 -0
  163. package/dist/scripts/6-6ac39034e0.chunk.js +1 -0
  164. package/dist/scripts/6.chunk.js +291 -1250
  165. package/dist/scripts/6.chunk.js.map +1 -1
  166. package/dist/scripts/60-5713de53e2.chunk.js +1 -0
  167. package/dist/scripts/61-7d2ad17963.chunk.js +1 -0
  168. package/dist/scripts/62-a0a69501ac.chunk.js +1 -0
  169. package/dist/scripts/63-c921b87f3f.chunk.js +1 -0
  170. package/dist/scripts/64-87c1cf6985.chunk.js +1 -0
  171. package/dist/scripts/65-2322082836.chunk.js +1 -0
  172. package/dist/scripts/66-6d5356f6ce.chunk.js +1 -0
  173. package/dist/scripts/67-2e0d661c52.chunk.js +1 -0
  174. package/dist/scripts/7-5ac5be64dd.chunk.js +1 -0
  175. package/dist/scripts/7.chunk.js +1 -1
  176. package/dist/scripts/76.chunk.js +3 -3
  177. package/dist/scripts/76.chunk.js.map +1 -1
  178. package/dist/scripts/79.chunk.js +931 -347
  179. package/dist/scripts/79.chunk.js.map +1 -1
  180. package/dist/scripts/8-95563e3d36.chunk.js +1 -0
  181. package/dist/scripts/8.chunk.js +14 -920
  182. package/dist/scripts/8.chunk.js.map +1 -1
  183. package/dist/scripts/80.chunk.js +22 -313
  184. package/dist/scripts/80.chunk.js.map +1 -1
  185. package/dist/scripts/9.chunk.js +320 -17
  186. package/dist/scripts/9.chunk.js.map +1 -1
  187. package/dist/scripts/bundle-9ed1e126dd.min.js +15 -0
  188. package/dist/scripts/bundle.js +147 -121
  189. package/dist/scripts/bundle.js.map +1 -1
  190. package/dist/scripts/bundles.json +2 -2
  191. package/dist/scripts/pdf.worker.entry.worker.js +46239 -0
  192. package/dist/scripts/pdf.worker.entry.worker.js.map +1 -0
  193. package/dist/scripts/polyfills-2723daf478.min.js +1 -0
  194. package/package.json +2 -2
@@ -1 +1 @@
1
- {"version":3,"sources":["file://C:/ClickView Projects/@clickview/packages/libs/shared/src/apps/playlists/components/empty-state/EmptyVideoList.tsx","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/components/back-button/BackButton.tsx","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/components/banner-header/BannerHeader.tsx","webpack://@clickview/lite/C:/ClickView Projects/@clickview/packages/libs/shared/src/components/banner-header/banner-header.scss?f381","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/components/empty-state/EmptyState.tsx","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/components/infinite-scroll-footer/InfiniteScrollFooter.tsx","webpack://@clickview/lite/C:/ClickView Projects/@clickview/packages/libs/shared/src/components/infinite-scroll-footer/infinite-scroll-footer.scss?cf3d","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/constants/SupportArticles.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/flight-requests/FavouriteVideoRequests.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/hooks/UseInfiniteList.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/hooks/UseInfiniteScroll.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/hooks/UseReorderedItems.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/hooks/UseSelectAllPages.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/utils/RatingHelper.ts","file://C:/ClickView Projects/@clickview/packages/projects/lite/src/apps/playlists/components/playlist-header/PlaylistHeader.tsx","file://C:/ClickView Projects/@clickview/packages/projects/lite/src/apps/playlists/components/playlist-header/partial-loading/PartialPlaylistHeader.tsx","webpack://@clickview/lite/./src/apps/playlists/components/playlist-header/partial-loading/partial-playlist-header.scss?2ed2","file://C:/ClickView Projects/@clickview/packages/projects/lite/src/apps/playlists/components/video-list/SortableVideoListContainer.tsx","webpack://@clickview/lite/./src/apps/playlists/components/video-list/sortable-video-list-container.scss?ea6f","file://C:/ClickView Projects/@clickview/packages/projects/lite/src/apps/playlists/utils/PlaylistVideoActionAppLinkHelper.ts","file://C:/ClickView Projects/@clickview/packages/projects/lite/src/apps/playlists/views/playlist/PlaylistView.tsx","file://C:/ClickView Projects/@clickview/packages/projects/lite/src/apps/playlists/views/playlist/PlaylistViewUtils.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/useHandleObjectError.ts","file://C:/ClickView Projects/@clickview/packages/projects/lite/src/shared/hooks/useVideoMixin.ts"],"names":[],"mappings":"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","file":"scripts/11.chunk.js","sourcesContent":["import * as React from 'react';\r\nimport { UrlHelper } from 'libs/common/backbone/utils/UrlHelper';\r\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\r\nimport { useService } from 'libs/common/react/hooks/UseService';\r\n\r\nimport { SharedServices } from 'libs/shared/constants/SharedServices';\r\nimport { SupportArticles } from 'libs/shared/constants/SupportArticles';\r\nimport { EmptyState } from 'libs/shared/components/empty-state/EmptyState';\r\nimport { ImageUrlService } from 'libs/shared/services/ImageUrlService';\r\nimport { CurrentUser, Playlist } from 'libs/shared/interfaces';\r\n\r\nconst getPhrase = LanguageService.encloseNamespace('playlists.emptyState');\r\n\r\ninterface EmptyVideoListComponentProps {\r\n playlist: Playlist;\r\n currentUser: CurrentUser;\r\n supportSiteUrl: string;\r\n}\r\n\r\nexport function EmptyVideoListComponent(props: EmptyVideoListComponentProps): React.ReactElement {\r\n const imageUrlService = useService<ImageUrlService>(SharedServices.ImageUrl);\r\n const imageUrls = imageUrlService.getImageUrls();\r\n const supportArticleUrl = UrlHelper.safeUrlConcat(props.supportSiteUrl, SupportArticles.ADD_TO_PLAYLIST);\r\n\r\n const currentUserIsPlaylistOwner = props.playlist.owner?.id === props.currentUser.id;\r\n\r\n return (\r\n <EmptyState\r\n imageUrl={imageUrls.EmptyStates.VIDEOS}\r\n heading={getPhrase('noVideosHeading')}\r\n description={currentUserIsPlaylistOwner &&\r\n `<a href=\"${supportArticleUrl}\" target=\"_blank\">${getPhrase('noVideosInfo')}</a>`\r\n }\r\n />\r\n );\r\n}","import * as React from 'react';\r\nimport { Core } from 'libs/common/core';\r\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\r\n\r\nimport { SvgContainer, SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\r\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\r\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\r\n\r\nconst namespace = 'shared.backButton';\r\n\r\ninterface BackButtonProps {\r\n appLink: Core.AppLink;\r\n backToName?: string;\r\n color?: 'black' | 'white';\r\n extraClasses?: string;\r\n}\r\n\r\nBackButton.defaultProps = {\r\n color: 'black',\r\n extraClasses: ''\r\n};\r\n\r\nexport function BackButton({ backToName, appLink, color, extraClasses }: BackButtonProps): React.ReactElement {\r\n const backPhrase = backToName\r\n ? LanguageService.getPhrase(namespace, 'backTo', { backToName })\r\n : LanguageService.getPhrase(namespace, 'back');\r\n\r\n const colorClass = color === 'black' ? '' : 'text-light';\r\n\r\n return (\r\n <AppLink appLink={appLink} className={`d-inline-flex align-items-center h5 mb-0 ${extraClasses} ${colorClass}`}>\r\n <SvgContainer svgName={cvSvgLibrary.ChevronLeft} size={SvgContainerSize.Medium} />\r\n <span className='ml-1'>{backPhrase}</span>\r\n </AppLink>\r\n );\r\n}","import * as React from 'react';\r\nimport { Core } from 'libs/common/core';\r\n\r\nimport { BackButton } from 'libs/shared/components/back-button/BackButton';\r\nimport { Banner } from 'libs/shared/interfaces';\r\nimport { ImageHelper } from 'libs/shared/utils/ImageHelper';\r\nimport { ImageType, ImageSize, ResizeType } from 'libs/shared/enums/Images';\r\nimport { Actions, ActionOptions } from 'libs/shared/components/actions/Actions';\r\n\r\nimport styles from './banner-header.scss';\r\n\r\ninterface BannerHeaderProps {\r\n heading: string;\r\n banner: Banner;\r\n imageCdnUrl: string;\r\n actions?: ActionOptions[];\r\n backButtonAppLink?: Core.AppLink;\r\n backButtonText?: string;\r\n backButtonClasses?: string;\r\n sortComponent?: JSX.Element;\r\n}\r\n\r\nexport const BannerHeader = React.memo(function(props: React.PropsWithChildren<BannerHeaderProps>): React.ReactElement {\r\n const { heading, banner, imageCdnUrl, actions, sortComponent } = props;\r\n\r\n const url = ImageHelper.createBannerUrl(banner, {\r\n fallbackBaseUrl: imageCdnUrl,\r\n fallbackCategoryName: heading,\r\n type: ImageType.Banners,\r\n }, {\r\n size: ImageSize.Large,\r\n resizeType: ResizeType.Cover\r\n });\r\n\r\n return (\r\n <div className='banner-header' style={{ backgroundImage: `url('${url}')` }}>\r\n {props.backButtonAppLink && (\r\n <div className='pt-3'>\r\n <BackButton\r\n appLink={props.backButtonAppLink}\r\n backToName={props.backButtonText}\r\n extraClasses={props.backButtonClasses}\r\n color='white'\r\n />\r\n </div>\r\n )}\r\n <h1 className={`${styles.text} text-white text-shadow position-absolute mb-3 clamp-2`}>\r\n {heading}\r\n </h1>\r\n {!!actions && (\r\n <div className={styles.actionsContainer}>\r\n <Actions actions={actions} sortComponent={sortComponent} />\r\n </div>\r\n )}\r\n </div>\r\n );\r\n}, (prevProps, nextProps): boolean => (\r\n prevProps.actions === nextProps.actions\r\n));\r\n\r\nexport const PartialBannerHeader = () => <div className={`partial-banner partial-loading-background`} />;","// extracted by mini-css-extract-plugin\nmodule.exports = {\"actionsContainer\":\"cv--actionsContainer--286KF\",\"text\":\"cv--text--3TSgh\"};","import * as React from 'react';\r\n\r\ninterface EmptyStateProps {\r\n imageUrl: string;\r\n heading: string;\r\n description?: string;\r\n}\r\n\r\nexport function EmptyState(props: EmptyStateProps): React.ReactElement {\r\n const { imageUrl, heading, description } = props;\r\n\r\n return (\r\n <div className='empty-state-container'>\r\n <div className='content-container'>\r\n {imageUrl && <img src={imageUrl} />}\r\n <h1>{heading}</h1>\r\n {description && <p dangerouslySetInnerHTML={{ __html: description }}/>}\r\n </div>\r\n </div>\r\n );\r\n}","import * as React from 'react';\r\nimport { Spinner } from 'react-bootstrap';\r\n\r\nimport { SvgContainer, SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\r\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\r\n\r\nimport styles from './infinite-scroll-footer.scss';\r\n\r\ninterface InfiniteScrollFooterProps {\r\n isFetching: boolean;\r\n onClick?: () => void;\r\n}\r\n\r\nexport function InfiniteScrollFooter(props: InfiniteScrollFooterProps): React.ReactElement {\r\n return (\r\n <div className={`p-3 text-center ${styles.container}`}>\r\n {props.isFetching\r\n ? <Spinner as='span' animation='border' role='status' className={styles.spinner} />\r\n : <SvgContainer\r\n svgName={cvSvgLibrary.ChevronDown}\r\n className='svg-container cursor-pointer'\r\n size={SvgContainerSize.Large}\r\n onClick={props.onClick}\r\n />\r\n }\r\n </div>\r\n );\r\n}","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"cv--container--1_KC6\",\"spinner\":\"cv--spinner--VXlcl\"};","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\"};","export const SupportArticles: { [article: string]: string } = {\r\n ADD_TO_PLAYLIST: 'hc/articles/115005679748'\r\n};","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 { useEffect } from 'react';\r\n\r\nimport { Flight } from 'libs/common/flight';\r\n\r\nimport { BaseObject } from 'libs/shared/interfaces';\r\n\r\nimport { useSelectAllPages } from './UseSelectAllPages';\r\nimport { useInfiniteScroll } from './UseInfiniteScroll';\r\n\r\ninterface UseInfiniteListResult<T extends BaseObject> {\r\n items: T[];\r\n hasMore: boolean;\r\n isFetching: boolean;\r\n}\r\n\r\n/**\r\n * Hook to extract an infinite list from the application state,\r\n * save it locally in state and only update when new data\r\n * is fetched.\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 useInfiniteList<T extends BaseObject>(\r\n getRequest: ((cursor?: string) => Flight.Request) | false,\r\n fetchNext: ((cursor?: string) => void) | false\r\n): UseInfiniteListResult<T> {\r\n const fetchNextFn = (fetchNext as Function);\r\n\r\n const response = useSelectAllPages<T>(getRequest && ((cursor?: string) => getRequest(cursor).key));\r\n\r\n useInfiniteScroll(() => fetchNext && fetchNextFn(response.nextCursor), !!response.nextCursor, response.isFetching);\r\n\r\n useEffect(() => {\r\n if (response.shouldInitialFetch && fetchNext)\r\n fetchNextFn();\r\n }, [ response.shouldInitialFetch, fetchNext ]);\r\n\r\n return { items: response.items, hasMore: !!response.nextCursor, isFetching: response.isFetching };\r\n}","import { useEffect } from 'react';\r\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\r\n\r\nconst SCROLL_TOLERANCE = 400; // value in px\r\n\r\nexport function useInfiniteScroll(fetchNextPage: () => void, hasMore: boolean, isFetching: boolean): void {\r\n const handleScroll = (): void => {\r\n if (isFetching)\r\n return;\r\n\r\n const currentScrollHeight = window.innerHeight + document.documentElement.scrollTop;\r\n\r\n const totalHeight = document.documentElement.scrollHeight - SCROLL_TOLERANCE;\r\n\r\n if (currentScrollHeight < totalHeight)\r\n return;\r\n\r\n fetchNextPage();\r\n };\r\n\r\n useEffect(() => {\r\n const onScroll = FunctionHelper.throttle(handleScroll, 200);\r\n\r\n if (hasMore)\r\n window.addEventListener('scroll', onScroll);\r\n\r\n return () => window.removeEventListener('scroll', onScroll);\r\n }, [hasMore]);\r\n}","import { useState, useEffect } from 'react';\r\n\r\nimport { BaseObject } from 'libs/shared/interfaces';\r\n\r\nfunction isOrderEqual(arr1: BaseObject[], arr2: BaseObject[]): boolean {\r\n let isEqual = true;\r\n\r\n if (arr1.length !== arr2.length)\r\n return false;\r\n\r\n for (let i = 0; i < arr1.length; i++) {\r\n if (arr1[i].id !== arr2[i].id) {\r\n isEqual = false;\r\n break;\r\n }\r\n }\r\n\r\n return isEqual;\r\n}\r\n\r\n/**\r\n * This function can be used to temporarily store an array of reordered objects\r\n * until the array obtained from the application store updates to the new order.\r\n * \r\n * @param items array of objects from application store.\r\n */\r\nexport function useReorderedItems<T extends BaseObject>(\r\n items: T[]\r\n): [ T[], React.Dispatch<React.SetStateAction<T[]>> ] {\r\n const [ reorderedItems, setReorderedItems ] = useState<T[]>();\r\n\r\n useEffect(() => {\r\n if (!reorderedItems)\r\n return;\r\n\r\n if (items.length !== reorderedItems.length || isOrderEqual(items, reorderedItems))\r\n setReorderedItems(null);\r\n }, [items]);\r\n\r\n return [ reorderedItems, setReorderedItems ];\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 { OnlineCurrentUser } from 'libs/shared/interfaces';\r\nimport { OnlineUserRole } from 'libs/shared/enums/UserRole';\r\n\r\nexport const RatingHelper = {\r\n getMaxAllowedRatingForUser(user: OnlineCurrentUser): number | null {\r\n if (user?.onlineRole === OnlineUserRole.Staff)\r\n return;\r\n\r\n return user?.maxAllowedRating;\r\n }\r\n};","import * as React from 'react';\r\n\r\nimport { Core } from 'libs/common/core';\r\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\r\nimport { AnalyticsHelper } from 'libs/analytics/AnalyticsHelper';\r\nimport { LocationContext, UserAction, ToggleDescriptor, EntityType, WorkflowPhase } from 'libs/analytics/interfaces';\r\n\r\nimport { useMediaQuery } from 'libs/shared/hooks/UseMediaQuery';\r\nimport { MediaQueryStrings } from 'libs/shared/enums/MediaQueries';\r\nimport { Playlist, AppLinkWithLabel } from 'libs/shared/interfaces';\r\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\r\nimport { BannerHeader } from 'libs/shared/components/banner-header/BannerHeader';\r\nimport { ActionOptions } from 'libs/shared/components/actions/Actions';\r\n\r\nimport { Actions } from 'shared/constants/LiteActions';\r\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\r\n\r\nimport { PartialPlaylistHeader } from './partial-loading/PartialPlaylistHeader';\r\n\r\nconst namespace = 'playlists.playlistHeader';\r\nconst getPhrase = LanguageService.encloseNamespace(namespace);\r\n\r\ninterface PlaylistHeaderProps {\r\n playlistId: string;\r\n playlist: Playlist;\r\n hasVideos: boolean;\r\n isFollowing: boolean;\r\n follow: (shouldFollow: boolean, onSuccess: () => void, onError: () => void) => void;\r\n application: string;\r\n imageCdnUrl: string;\r\n showPartialLoading: boolean;\r\n showBreadcrumbs: boolean;\r\n showDateMetadata: boolean;\r\n canEdit?: boolean;\r\n canFollow?: boolean;\r\n isShared?: boolean;\r\n playAllAppLink?: Core.AppLink;\r\n returnAppLink?: AppLinkWithLabel;\r\n lastUpdated?: string;\r\n}\r\n\r\nexport function PlaylistHeader(props: PlaylistHeaderProps): JSX.Element {\r\n // Store isFollowing in local state so that it updates immediately.\r\n const [ isFollowing, setIsFollowing ] = React.useState(props.isFollowing);\r\n const [ showFollowSpinner, setShowFollowSpinner ] = React.useState(false);\r\n\r\n React.useEffect(() => setIsFollowing(props.isFollowing), [props.isFollowing]);\r\n\r\n const isMobile = useMediaQuery(MediaQueryStrings.XS);\r\n\r\n if (props.showPartialLoading)\r\n return <PartialPlaylistHeader />;\r\n\r\n const description = props.playlist.description;\r\n\r\n const application = props.application;\r\n const args = [props.playlist.id];\r\n\r\n const actions: ActionOptions[] = [{\r\n label: getPhrase('share'),\r\n appLink: {\r\n application: AppChannels.DEFAULT,\r\n action: Actions.Default.SHARE,\r\n args: [props.playlist.id],\r\n params: { entityType: 'playlist' }\r\n },\r\n svgName: cvSvgLibrary.Share,\r\n className: 'btn btn-light',\r\n button: !isMobile\r\n }];\r\n\r\n if (props.canEdit) {\r\n actions.push(\r\n // TODO: Add collaborate\r\n {\r\n label: getPhrase('edit'),\r\n appLink: { application, action: Actions.Playlists.EDIT_PLAYLIST, args },\r\n svgName: cvSvgLibrary.Edit,\r\n className: 'btn btn-light',\r\n button: false\r\n },\r\n {\r\n label: getPhrase('delete'),\r\n appLink: { application, action: Actions.Playlists.DELETE_PLAYLIST, args },\r\n svgName: cvSvgLibrary.Delete,\r\n className: 'text-danger',\r\n button: false\r\n }\r\n );\r\n }\r\n\r\n if (!props.canEdit) {\r\n actions.push(\r\n {\r\n label: getPhrase(isFollowing ? 'following' : 'follow'),\r\n onClick: () => {\r\n setIsFollowing(!isFollowing);\r\n setShowFollowSpinner(true);\r\n props.follow(\r\n !isFollowing,\r\n () => {\r\n setShowFollowSpinner(false);\r\n AnalyticsHelper.logUserAction({ id: props.playlistId }, {\r\n location: LocationContext.Banner,\r\n actionType: UserAction.Follow,\r\n descriptor: isFollowing ? ToggleDescriptor.Off : ToggleDescriptor.On,\r\n entity: EntityType.Playlist,\r\n workflowPhase: WorkflowPhase.Complete\r\n });\r\n },\r\n () => {\r\n setShowFollowSpinner(false);\r\n setIsFollowing(isFollowing);\r\n }\r\n );\r\n },\r\n svgName: cvSvgLibrary.Bell,\r\n className: `btn follow-btn btn-${isFollowing ? 'dark' : 'light'}`,\r\n button: !isMobile,\r\n showSpinner: showFollowSpinner\r\n },\r\n // TODO: Add copy playlist\r\n );\r\n }\r\n\r\n return (\r\n <>\r\n <BannerHeader\r\n heading={props.playlist.name}\r\n banner={props.playlist.banner}\r\n imageCdnUrl={props.imageCdnUrl}\r\n actions={actions.length && actions}\r\n />\r\n {!!description && (\r\n <p className='py-2 border-bottom'>{description}</p>\r\n )}\r\n </>\r\n );\r\n}","import React from 'react';\r\nimport { PartialBannerHeader } from 'libs/shared/components/banner-header/BannerHeader';\r\n\r\nimport styles from './partial-playlist-header.scss';\r\n\r\nexport function PartialPlaylistHeader(): JSX.Element {\r\n return (\r\n <>\r\n <PartialBannerHeader />\r\n <div className='mb-2'>\r\n <div className={`partial-loading-background my-2 border-bottom ${styles.partialDescription}`} />\r\n </div>\r\n </>\r\n );\r\n}","// extracted by mini-css-extract-plugin\nmodule.exports = {\"partialDescription\":\"cv--partialDescription--3cyjk\"};","import * as React from 'react';\r\nimport { SortStart, SortEnd } from 'react-sortable-hoc';\r\n\r\nimport { Core } from 'libs/common/core';\r\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\r\nimport { DevError } from 'libs/common/backbone/errors/DevError';\r\nimport { SortableVideoList, VideoList, VideoListProps } from 'libs/shared/components/video-list/VideoList';\r\nimport { PartialVideoList } from 'libs/shared/components/video-list/partial-loading/PartialVideoList';\r\n\r\nimport styles from './sortable-video-list-container.scss';\r\n\r\ninterface SortableVideoListContainerProps extends VideoListProps {\r\n playlistId: string;\r\n onSortComplete: (oldIdx: number, newIdx: number) => void;\r\n onSortStart?: (index: number) => void;\r\n isUserSignedIn: boolean;\r\n canEdit?: boolean;\r\n showPartialLoading?: boolean;\r\n fetchRestrictions?: () => void;\r\n}\r\n\r\nexport function SortableVideoListContainer(props: SortableVideoListContainerProps): React.ReactElement {\r\n const { onSortComplete, onSortStart, showPartialLoading, ...videoListProps } = props;\r\n\r\n const [ currentSortingIndex, setCurrentSortingIndex ] = React.useState<number>();\r\n\r\n const onSortStartHandler = (index: number) => {\r\n if (FunctionHelper.isFunction(onSortStart))\r\n onSortStart(index);\r\n };\r\n\r\n const onSortEnd = (sort: SortEnd) => {\r\n setCurrentSortingIndex(null);\r\n\r\n if (!FunctionHelper.isFunction(onSortComplete)) {\r\n Core.ErrorHelper.throw(new DevError('An onSortComplete callback function must be passed to SortableVideoListComponent'));\r\n return;\r\n }\r\n\r\n onSortComplete(sort.oldIndex, sort.newIndex);\r\n };\r\n\r\n if (showPartialLoading)\r\n return <PartialVideoList withReordering />;\r\n\r\n if (!props.canEdit)\r\n return <VideoList {...videoListProps} />;\r\n\r\n return (\r\n <SortableVideoList\r\n {...videoListProps}\r\n currentSortingIndex={currentSortingIndex}\r\n updateBeforeSortStart={({ index }: SortStart) => setCurrentSortingIndex(index)}\r\n onSortStart={({ index }: SortStart) => onSortStartHandler(index)}\r\n onSortEnd={onSortEnd}\r\n lockAxis='y'\r\n lockToContainerEdges\r\n lockOffset={[ '0%', '100%' ]} // Allow movement beyond the bottom of container\r\n helperClass={`bg-white ${styles.sortableItem}`}\r\n distance={1} // This allows mousedown/click events to be consumed before sorting is triggered.\r\n useDragHandle\r\n />\r\n );\r\n}","// extracted by mini-css-extract-plugin\nmodule.exports = {\"sortableItem\":\"cv--sortableItem--2eiPB\"};","import { Core } from 'libs/common/core';\r\nimport { Video } from 'libs/shared/interfaces';\r\nimport { VideoAction } from 'libs/shared/utils/video-actions/VideoActionsHelper';\r\n\r\nimport { Actions } from 'shared/constants/LiteActions';\r\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\r\n\r\nexport function getVideoActionAppLink(\r\n application: string,\r\n playlistId: string\r\n): (video: Video, action: VideoAction) => Core.AppLink {\r\n return (video: Video, action: VideoAction) => {\r\n switch (action) {\r\n case VideoAction.RemoveFromPlaylist:\r\n return { application, action: Actions.Playlists.REMOVE_VIDEO_FROM_PLAYLIST, args: [ video.id, playlistId ]};\r\n\r\n case VideoAction.AddToPlaylist:\r\n return { application, action: Actions.Playlists.ADD_TO_PLAYLIST, args: [video.id]};\r\n\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: { entityType: 'video' }\r\n };\r\n }\r\n };\r\n}","import * as React from 'react';\r\nimport { useDispatch } from 'react-redux';\r\n\r\nimport { Core } from 'libs/common/core';\r\nimport { Flight } from 'libs/common/flight';\r\nimport { ObjectHelper } from 'libs/common/react/utils/ObjectHelper';\r\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\r\nimport { WorkflowPhase, EntityType, UserAction, LocationContext, ToggleDescriptor } from 'libs/analytics/interfaces';\r\nimport { AnalyticsHelper } from 'libs/analytics/AnalyticsHelper';\r\n\r\nimport { EmptyVideoListComponent } from 'libs/shared/apps/playlists/components/empty-state/EmptyVideoList';\r\nimport { AppLinkWithLabel, Restriction, Playlist, Config, Video, Series, Following, OnlineCurrentUser } from 'libs/shared/interfaces';\r\nimport { ConfigRequests } from 'libs/shared/flight-requests/ConfigRequests';\r\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\r\nimport { FavouriteVideoRequests } from 'libs/shared/flight-requests/FavouriteVideoRequests';\r\nimport { PlaylistRequests } from 'libs/shared/flight-requests/PlaylistRequests';\r\nimport { useSetPageTitle } from 'libs/common/react/hooks/UseSetPageTitle';\r\nimport { useInfiniteList } from 'libs/shared/hooks/UseInfiniteList';\r\nimport { InfiniteScrollFooter } from 'libs/shared/components/infinite-scroll-footer/InfiniteScrollFooter';\r\nimport { ReorderHelper } from 'libs/shared/utils/ReorderHelper';\r\nimport { RatingHelper } from 'libs/shared/utils/RatingHelper';\r\nimport { useReorderedItems } from 'libs/shared/hooks/UseReorderedItems';\r\nimport { VideoActionsContext } from 'libs/shared/context/VideoActionsContext';\r\nimport { useAlerts } from 'libs/shared/hooks/UseAlerts';\r\n\r\nimport { useVideoMixin } from 'shared/hooks/useVideoMixin';\r\nimport { VideoRequests } from 'shared/flight-requests/VideoRequests';\r\nimport { useHandleObjectError } from 'shared/hooks/useHandleObjectError';\r\n\r\nimport { PlaylistHeader } from 'apps/playlists/components/playlist-header/PlaylistHeader';\r\nimport { SortableVideoListContainer } from 'apps/playlists/components/video-list/SortableVideoListContainer';\r\nimport { getVideoActionAppLink } from 'apps/playlists/utils/PlaylistVideoActionAppLinkHelper';\r\n\r\nimport * as PlaylistViewUtils from './PlaylistViewUtils';\r\n\r\nconst namespace = 'playlists.playlist';\r\n\r\ninterface PlaylistViewProps {\r\n playlistId: string;\r\n isShared?: boolean;\r\n application: string;\r\n getVideoAppLink: (video: Video) => Core.AppLink;\r\n getSeriesAppLink: (series: Series) => Core.AppLink;\r\n allowEdit?: boolean;\r\n showBreadcrumbs?: boolean;\r\n showDateMetadata?: boolean;\r\n playAllAppLink?: Core.AppLink;\r\n returnAppLink?: AppLinkWithLabel;\r\n filterByRating?: boolean;\r\n}\r\n\r\nexport function PlaylistView(props: PlaylistViewProps): React.ReactElement {\r\n const dispatch = useDispatch();\r\n const alerts = useAlerts();\r\n\r\n const config = Flight.useBasicFetch<Config>(ConfigRequests.config);\r\n const user = Flight.useBasicFetch<OnlineCurrentUser>(UserRequests.currentUser());\r\n const isUserSignedIn = !ObjectHelper.isEmpty(user.data);\r\n\r\n const maxAllowedRating = props.filterByRating\r\n ? isUserSignedIn && RatingHelper.getMaxAllowedRatingForUser(user.data)\r\n : null;\r\n\r\n const playlistRequest = props.isShared\r\n ? !!user.data && PlaylistRequests.getSharedPlaylist(props.playlistId, maxAllowedRating)\r\n : PlaylistRequests.getPlaylist(props.playlistId);\r\n\r\n const playlist = Flight.useBasicFetch<Playlist>(playlistRequest);\r\n\r\n useHandleObjectError(playlist, PlaylistViewUtils.playlistErrors, user.data);\r\n\r\n const getVideosRequest = !!user.data && ((cursor?: string) => {\r\n const request = props.isShared ? PlaylistRequests.getSharedPlaylistVideos : PlaylistRequests.getPlaylistVideos;\r\n\r\n return request(props.playlistId, maxAllowedRating, cursor);\r\n });\r\n\r\n const following = Flight.useBasicFetch<Following>(!!user.data\r\n && PlaylistRequests.getIsFollowingPlaylist(props.playlistId, user.data.id));\r\n\r\n const fetchNext = (cursor?: string) => {\r\n Flight.getFetch(dispatch, getVideosRequest(cursor))();\r\n };\r\n\r\n const { items: videos, hasMore, isFetching } = useInfiniteList<Video>(getVideosRequest, fetchNext);\r\n\r\n useVideoMixin(videos);\r\n\r\n // Locally stored array of videos used to immediately reflect changes in order.\r\n const [ reorderedVideos, setReorderedVideos ] = useReorderedItems(videos);\r\n\r\n const restrictionsRequest = isUserSignedIn && !!videos && !!videos.length &&\r\n VideoRequests.getRestrictions(videos.map(v => v.id));\r\n\r\n const restrictions = Flight.useGetResponse<Restriction[]>(restrictionsRequest && restrictionsRequest.key);\r\n\r\n const fetchRestrictions = Flight.useGetFetch(restrictionsRequest);\r\n\r\n if (restrictionsRequest && restrictions.shouldFetch) {\r\n fetchRestrictions();\r\n }\r\n\r\n useSetPageTitle(!!playlist.data && playlist.data.name, [playlist.data]);\r\n\r\n const onSortStart = (index: number) => {\r\n const video = videos[index];\r\n\r\n if (video)\r\n PlaylistViewUtils.logSortAction(props.playlistId, video.id, WorkflowPhase.Start);\r\n };\r\n\r\n const onSortComplete = (oldIdx: number, newIdx: number) => {\r\n if (oldIdx === newIdx)\r\n return;\r\n\r\n const video = videos[oldIdx];\r\n\r\n if (!video)\r\n return;\r\n\r\n const { reorderedItems, reorderRequest } = ReorderHelper.reorder(videos, oldIdx, newIdx);\r\n\r\n setReorderedVideos(reorderedItems);\r\n\r\n PlaylistViewUtils.logSortAction(props.playlistId, video.id, WorkflowPhase.Complete);\r\n\r\n const onError = () => {\r\n setReorderedVideos(null);\r\n };\r\n\r\n Flight.fetch(dispatch, PlaylistRequests.reorderVideos(props.playlistId, reorderRequest, null, onError));\r\n };\r\n\r\n const follow = (shouldFollow: boolean, onSuccess: () => void, onError: () => void) => {\r\n const req = shouldFollow\r\n ? PlaylistRequests.followPlaylist\r\n : PlaylistRequests.unfollowPlaylist;\r\n\r\n const error = () => {\r\n onError();\r\n alerts.error(LanguageService.getPhrase(namespace, shouldFollow ? 'followError' : 'unfollowError'));\r\n };\r\n\r\n Flight.fetch(dispatch, req(props.playlistId, user.data.id, onSuccess, error));\r\n };\r\n\r\n const setFavourite = (video: Video, shouldFavourite: boolean, onError?: () => void) => {\r\n Flight.fetch(\r\n dispatch,\r\n FavouriteVideoRequests.updateIsVideoFavourited(video.id, user.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(\r\n LanguageService.getPhrase(\r\n namespace,\r\n shouldFavourite ? 'favourited' : 'unfavourited',\r\n { video: video.name }\r\n )\r\n );\r\n }, onError)\r\n );\r\n };\r\n\r\n const canEdit = !!props.allowEdit && PlaylistViewUtils.canEditPlaylist(playlist.data, user.data);\r\n\r\n const playlistIsEmpty = !!videos && videos.length === 0;\r\n\r\n return (\r\n <VideoActionsContext.Provider\r\n value={{\r\n videoActions: PlaylistViewUtils.getVideoActions(canEdit),\r\n getActionAppLink: getVideoActionAppLink(props.application, props.playlistId),\r\n hideLabel: true\r\n }}\r\n >\r\n <div className='bg-white px-3'>\r\n <PlaylistHeader\r\n playlistId={props.playlistId}\r\n playlist={playlist.data}\r\n hasVideos={!playlistIsEmpty}\r\n isFollowing={following.data?.isFollowing}\r\n follow={follow}\r\n application={props.application}\r\n canEdit={canEdit}\r\n isShared={props.isShared}\r\n showBreadcrumbs={props.showBreadcrumbs}\r\n showDateMetadata={props.showDateMetadata}\r\n playAllAppLink={props.playAllAppLink}\r\n showPartialLoading={!playlist.data || !videos || !user.data || !config.data || !following.data}\r\n lastUpdated={!!videos && PlaylistViewUtils.getLastUpdatedDate(videos)}\r\n imageCdnUrl={!!config.data && config.data.imageCdnUrl}\r\n returnAppLink={props.returnAppLink}\r\n />\r\n <div className='mt-2'>\r\n {playlistIsEmpty\r\n ? (!!config.data && !!user.data && !!playlist.data) && (\r\n <EmptyVideoListComponent\r\n playlist={playlist.data}\r\n currentUser={user.data}\r\n supportSiteUrl={config.data.supportSiteUrl}\r\n />\r\n )\r\n : <SortableVideoListContainer\r\n videos={reorderedVideos || videos}\r\n playlistId={!!playlist.data && playlist.data.id}\r\n onSortStart={onSortStart}\r\n onSortComplete={onSortComplete}\r\n isUserSignedIn={isUserSignedIn}\r\n canEdit={canEdit}\r\n showPartialLoading={!videos || !user.data || !config.data}\r\n getVideoAppLink={props.getVideoAppLink}\r\n getSeriesAppLink={props.getSeriesAppLink}\r\n fetchRestrictions={fetchRestrictions}\r\n setFavourite={setFavourite}\r\n />\r\n }\r\n </div>\r\n {!!hasMore && <InfiniteScrollFooter isFetching={isFetching} onClick={fetchNext} />}\r\n </div>\r\n </VideoActionsContext.Provider>\r\n );\r\n}","import { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\r\nimport { ObjectHelper } from 'libs/common/react/utils/ObjectHelper';\r\n\r\nimport { Video, Playlist, CurrentUser } from 'libs/shared/interfaces';\r\nimport { VideoAction } from 'libs/shared/utils/video-actions/VideoActionsHelper';\r\n\r\nimport { WorkflowPhase, LocationContext, EntityType, UserAction } from 'libs/analytics/interfaces';\r\nimport { AnalyticsHelper } from 'libs/analytics/AnalyticsHelper';\r\n\r\nimport { PlaylistNotFoundError } from 'shared/errors/playlists/playlist-not-found/LitePlaylistNotFoundError';\r\nimport { PlaylistPrivateError } from 'shared/errors/playlists/playlist-private/PlaylistPrivateError';\r\n\r\n/**\r\n * NOTE:\r\n * This will be wrong if we increase the playlist limit from 100, or\r\n * stop fetching all 100 videos at once.\r\n */\r\nexport function getLastUpdatedDate(videos: Video[]): string {\r\n const videoLastUpdatedDates: string[] = videos && videos.length && videos.map(v => v.dateAssociated);\r\n\r\n return (videoLastUpdatedDates && videoLastUpdatedDates.length)\r\n ? ArrayHelper.max<string, number>(videoLastUpdatedDates, (date: string) => new Date(date).getTime())\r\n : null;\r\n}\r\n\r\nexport function getVideoActions(canEdit: boolean): VideoAction[] {\r\n return [\r\n canEdit ? VideoAction.RemoveFromPlaylist : VideoAction.AddToPlaylist,\r\n VideoAction.Share\r\n ];\r\n}\r\n\r\nexport function logSortAction(playlistId: string, videoId: string, workflowPhase: WorkflowPhase) : void {\r\n AnalyticsHelper.logUserAction({ id: videoId, playlistId }, {\r\n location: LocationContext.VideoList,\r\n entity: EntityType.Video,\r\n actionType: UserAction.Move,\r\n workflowPhase\r\n });\r\n}\r\n\r\nexport function canEditPlaylist(playlist: Playlist, user: CurrentUser): boolean {\r\n if (ObjectHelper.isEmpty(user) || !playlist || ObjectHelper.isEmpty(playlist.owner))\r\n return false;\r\n\r\n return playlist.owner.id === user.id;\r\n}\r\n\r\nexport const playlistErrors = {\r\n notFound: PlaylistNotFoundError,\r\n forbidden: {\r\n privacy: PlaylistPrivateError\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 { Core } from 'libs/common/core';\r\nimport { Flight } from 'libs/common/flight';\r\nimport { HttpStatus } from 'libs/common/backbone/enums/HttpStatus';\r\n\r\nimport { BaseObject, CurrentUser } from 'libs/shared/interfaces';\r\nimport { BaseError } from 'libs/common/backbone/core/BaseError';\r\n\r\nimport { NotFoundError } from 'shared/errors/general/not-found/LiteNotFoundError';\r\nimport { UnspecifiedError } from 'shared/errors/general/unspecified-error/UnspecifiedError';\r\nimport { PrivateResourceError } from 'shared/errors/general/private-resource/PrivateResourceError';\r\nimport { RegionLockedResourceError } from 'shared/errors/general/region-locked-resource/RegionLockedResourceError';\r\n\r\ninterface ErrorMap {\r\n notFound?: new () => BaseError;\r\n forbidden?: {\r\n rating?: new (description: string) => BaseError;\r\n yearLevel?: new (description: string) => BaseError;\r\n region?: new () => BaseError;\r\n privacy?: new () => BaseError;\r\n };\r\n badRequest?: new () => BaseError;\r\n}\r\n\r\nconst defaultErrors: ErrorMap = {\r\n notFound: NotFoundError,\r\n forbidden: {\r\n rating: PrivateResourceError,\r\n yearLevel: PrivateResourceError,\r\n region: RegionLockedResourceError,\r\n privacy: PrivateResourceError\r\n },\r\n badRequest: UnspecifiedError\r\n};\r\n\r\nexport function useHandleObjectError(\r\n object: Flight.Response<BaseObject>,\r\n customErrors: ErrorMap,\r\n currentUser: CurrentUser\r\n): void {\r\n const errors = {\r\n ...defaultErrors,\r\n ...customErrors\r\n };\r\n\r\n if (!object.statusCode || object.statusCode === HttpStatus.Ok)\r\n return;\r\n\r\n if (object.statusCode === HttpStatus.NotFound) {\r\n Core.ErrorHelper.throw(new errors.notFound());\r\n return;\r\n }\r\n\r\n if (object.statusCode === HttpStatus.Forbidden) {\r\n /**\r\n * TODO: Work out how to go about handling all forbidden errors, such as region locking, year levels,\r\n * ratings, and privacy.\r\n */\r\n Core.ErrorHelper.throw(new errors.forbidden.privacy());\r\n return;\r\n }\r\n\r\n Core.ErrorHelper.throw(new errors.badRequest());\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/apps/subjects/components/preferences/footer/PreferenceFooter.tsx","webpack://@clickview/lite/C:/ClickView Projects/@clickview/packages/libs/shared/src/apps/subjects/components/preferences/footer/preference-footer.scss?29ba","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/apps/subjects/components/preferences/index.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/apps/subjects/components/preferences/preference-item/PreferenceItem.tsx","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/apps/subjects/components/preferences/preference-item/PreferenceItemStatus.tsx","webpack://@clickview/lite/C:/ClickView Projects/@clickview/packages/libs/shared/src/apps/subjects/components/preferences/preference-item/preference-item.scss?b5e6","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/apps/subjects/components/preferences/subject-preference-grid/SubjectPreferenceGrid.tsx","webpack://@clickview/lite/C:/ClickView Projects/@clickview/packages/libs/shared/src/apps/subjects/components/preferences/subject-preference-grid/subject-preference-grid.scss?3ca9","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/apps/subjects/components/preferences/subject-preference-item/SubjectPreferenceItem.tsx","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/apps/subjects/contexts/SubjectPreferencesContext.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/hooks/UseAlerts.ts"],"names":[],"mappings":"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","file":"scripts/11.chunk.js","sourcesContent":["import * as React from 'react';\r\n\r\nimport { MediaQueryStrings } from 'libs/shared/enums/MediaQueries';\r\nimport { useGetMediaQueryString } from 'libs/shared/hooks/UseGetMediaQueryString';\r\n\r\nimport styles from './preference-footer.scss';\r\n\r\ninterface PreferenceFooterProps extends React.PropsWithChildren<{}> {\r\n justify?: 'end' | 'center' | 'between';\r\n}\r\n\r\nPreferenceFooter.defaultProps = {\r\n justify: 'between'\r\n};\r\n\r\nexport function PreferenceFooter(props: PreferenceFooterProps): JSX.Element {\r\n const mediaQuery = useGetMediaQueryString();\r\n const widthClass = (mediaQuery === MediaQueryStrings.SM || mediaQuery === MediaQueryStrings.XS) ? 'w-100' : 'w-75';\r\n\r\n let justifyClass = `justify-content-${props.justify}`;\r\n\r\n return (\r\n <div className={`${widthClass} ${justifyClass} ${styles.preferenceFooter} d-flex px-3`}>\r\n {props.children}\r\n </div>\r\n );\r\n}","// extracted by mini-css-extract-plugin\nmodule.exports = {\"preferenceFooter\":\"cv--preferenceFooter--P29kw\"};","export * from './footer/PreferenceFooter';\r\nexport * from './nav/PreferencesNav';\r\nexport * from './subject-preference-grid/SubjectPreferenceGrid';\r\nexport * from './subject-preference-item/SubjectPreferenceItem';\r\nexport * from './preference-item/PreferenceItem';","import React from 'react';\r\n\r\nimport { ExpandableItemStatus, SelectableItemStatus } from './PreferenceItemStatus';\r\n\r\nimport styles from './preference-item.scss';\r\n\r\ninterface PreferenceItemProps {\r\n name: string;\r\n imageUrl: string;\r\n\r\n onClick?: (event: React.MouseEvent<HTMLLIElement, MouseEvent>) => void;\r\n isDisabled?: boolean;\r\n isSelected: boolean;\r\n hideStatus?: boolean;\r\n radioButton?: boolean;\r\n\r\n isExpandable?: boolean;\r\n expand?: boolean;\r\n selectedChildCount?: number;\r\n\r\n extraClasses?: string;\r\n}\r\n\r\nexport function PreferenceItem(props: PreferenceItemProps): JSX.Element {\r\n function getContainerClass(): string {\r\n let baseClass = styles.preferenceItem;\r\n\r\n if (props.extraClasses)\r\n baseClass += ' ' + props.extraClasses;\r\n\r\n if (props.isDisabled)\r\n baseClass += ' ' + styles.disabled;\r\n\r\n if (props.isSelected && !props.isExpandable)\r\n baseClass += ' ' + styles.selected;\r\n\r\n if (props.hideStatus)\r\n baseClass += ' ' + styles.noBorder;\r\n\r\n return baseClass;\r\n }\r\n\r\n const caretClass = `${styles.expandCaret} ${props.expand ? styles.up : styles.down}`;\r\n\r\n return (\r\n <li\r\n className={getContainerClass()}\r\n onClick={props.onClick}\r\n aria-checked={props.isSelected}\r\n aria-haspopup={props.isExpandable}\r\n role={props.isExpandable ? 'button' : 'checkbox'}\r\n style={{ backgroundImage: `url(${props.imageUrl})` }}\r\n tabIndex={0}\r\n >\r\n <div className={`${styles.textBox} p-2`}>\r\n <p className='m-0 text-truncate'>\r\n {props.name}\r\n <span className={props.isExpandable ? caretClass : ''} />\r\n </p>\r\n\r\n {!props.hideStatus && (\r\n <>{props.isExpandable\r\n ? <ExpandableItemStatus selectedChildrenCount={props.selectedChildCount} />\r\n : <SelectableItemStatus selected={props.isSelected} radioButton={props.radioButton} />\r\n }</>\r\n )}\r\n </div>\r\n </li>\r\n );\r\n}","import * as React from 'react';\r\n\r\nimport { SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\r\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\r\n\r\nimport styles from './preference-item.scss';\r\n\r\ninterface ExpandableItemStatusProps {\r\n selectedChildrenCount: number;\r\n}\r\n\r\nexport const ExpandableItemStatus = (props: ExpandableItemStatusProps): JSX.Element => {\r\n if (!props.selectedChildrenCount)\r\n return <></>;\r\n\r\n return (\r\n <div className={`${styles.itemStatus} ${styles.green}`}>\r\n {props.selectedChildrenCount}\r\n </div>\r\n );\r\n};\r\n\r\ninterface SelectableItemStatusProps {\r\n selected: boolean;\r\n radioButton?: boolean;\r\n}\r\n\r\nexport const SelectableItemStatus = (props: SelectableItemStatusProps): JSX.Element => {\r\n let svg;\r\n\r\n if (props.selected)\r\n svg = <SvgContainer svgName={cvSvgLibrary.Check} />;\r\n else if (!props.radioButton)\r\n svg = <SvgContainer svgName={cvSvgLibrary.Plus} />;\r\n else\r\n svg = <>&nbsp;</>;\r\n\r\n return (\r\n <div className={`${styles.itemStatus} ${props.selected ? styles.green : styles.unchecked}`}>\r\n {svg}\r\n </div>\r\n );\r\n};\r\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"preferenceItem\":\"cv--preferenceItem--1LDb6\",\"expandCaret\":\"cv--expandCaret--3QEWB\",\"down\":\"cv--down--2y-iF\",\"up\":\"cv--up--1kGNY\",\"disabled\":\"cv--disabled--2w4FH\",\"selected\":\"cv--selected--1lSYv\",\"noBorder\":\"cv--noBorder--3Mxuo\",\"textBox\":\"cv--textBox--3HCeK\",\"itemStatus\":\"cv--itemStatus--2msq4\",\"unchecked\":\"cv--unchecked--2VQLv\",\"green\":\"cv--green--AHd64\"};","import * as React from 'react';\r\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\r\n\r\nimport { MediaQueryStrings } from 'libs/shared/enums/MediaQueries';\r\nimport { Classification } from 'libs/shared/interfaces';\r\nimport { useGetMediaQueryString } from 'libs/shared/hooks/UseGetMediaQueryString';\r\n\r\nimport { SubjectPreferenceItem } from 'libs/shared/apps/subjects/components/preferences';\r\nimport { SubjectPreferencesContext } from 'libs/shared/apps/subjects/contexts/SubjectPreferencesContext';\r\nimport { ClassificationPreference } from 'libs/shared/apps/subjects/interfaces/ClassificationPreference';\r\n\r\nimport styles from './subject-preference-grid.scss';\r\n\r\nfunction useGetRowItemCapacity(): number {\r\n const viewportWidth = useGetMediaQueryString();\r\n\r\n switch (viewportWidth) {\r\n case MediaQueryStrings.LG:\r\n default:\r\n return 5;\r\n\r\n case MediaQueryStrings.MD:\r\n return 4;\r\n\r\n case MediaQueryStrings.SM:\r\n return 3;\r\n\r\n case MediaQueryStrings.XS:\r\n return 2;\r\n }\r\n}\r\n\r\nfunction isDisabled(subject: ClassificationPreference, expandedSubject: ClassificationPreference): boolean {\r\n if (!expandedSubject || subject.id === expandedSubject.id)\r\n return false;\r\n\r\n if (expandedSubject.children.find(child => child.id === subject.id))\r\n return false;\r\n\r\n return true;\r\n}\r\n\r\ninterface SubjectPreferenceGridRowProps extends SubjectPreferenceGridProps {}\r\n\r\nfunction SubjectPreferenceGridRow(props: SubjectPreferenceGridRowProps): JSX.Element {\r\n const { expandedSubject, selectedSubjects: selections } = React.useContext(SubjectPreferencesContext);\r\n\r\n return (\r\n <>\r\n {props.subjects.map(subject => {\r\n const itemDisabled = isDisabled(subject, expandedSubject);\r\n\r\n let clickHandler = props.onSelect;\r\n\r\n if (subject.isExpandableOption)\r\n clickHandler = props.onExpand;\r\n\r\n if (itemDisabled)\r\n clickHandler = props.onCollapse;\r\n\r\n if (props.hasSelectedBulk)\r\n clickHandler = () => {};\r\n\r\n return (\r\n <SubjectPreferenceItem\r\n key={subject.id}\r\n subject={subject}\r\n selected={!props.hasSelectedBulk && selections.includes(subject.id)}\r\n disabled={props.hasSelectedBulk || itemDisabled}\r\n onClick={(e: React.MouseEvent<HTMLLIElement, MouseEvent>) => clickHandler(subject)}\r\n hasSelectedBulk={props.hasSelectedBulk}\r\n />\r\n );\r\n })}\r\n </>\r\n );\r\n}\r\n\r\ninterface SubjectPreferenceGridProps {\r\n subjects: ClassificationPreference[];\r\n onSelect: (subject: Classification) => void;\r\n onExpand: (subject: Classification) => void;\r\n onCollapse: (subject: Classification) => void;\r\n hasSelectedBulk?: boolean;\r\n}\r\n\r\nexport function SubjectPreferenceGrid(props: SubjectPreferenceGridProps): JSX.Element {\r\n const { subjects, hasSelectedBulk, ...eventHandlers } = props;\r\n const { expandedSubject } = React.useContext(SubjectPreferencesContext);\r\n\r\n const itemsPerRow = useGetRowItemCapacity();\r\n\r\n /**\r\n * This is an array of arrays, where each sub-array is a row of classifications.\r\n * We do this to make sure any sub-grid's of child preference options get rendered in the row\r\n * directly beneath their parent's row.\r\n */\r\n const subjectRows = subjects.reduce((\r\n acc: ClassificationPreference[][], subject: ClassificationPreference, index: number\r\n ) => {\r\n index % itemsPerRow === 0\r\n ? acc.push([subject]) // Start a new row\r\n : ArrayHelper.last(acc).push(subject); // Fill up an existing row\r\n\r\n return acc;\r\n }, []);\r\n\r\n return (\r\n <ul className={styles.grid}>\r\n {subjectRows.map((row, i) => {\r\n const isExpanded = expandedSubject && !!row.find(subject => {\r\n return expandedSubject.id === subject.id && subject.isExpandableOption;\r\n });\r\n\r\n return (\r\n <React.Fragment key={i}>\r\n <SubjectPreferenceGridRow\r\n subjects={row}\r\n hasSelectedBulk={hasSelectedBulk}\r\n {...eventHandlers}\r\n />\r\n\r\n {isExpanded && (\r\n <li className={`${styles.subgrid} m-0`}>\r\n <SubjectPreferenceGrid\r\n subjects={expandedSubject.children as ClassificationPreference[]}\r\n hasSelectedBulk={hasSelectedBulk}\r\n {...eventHandlers}\r\n />\r\n </li>\r\n )}\r\n </React.Fragment>\r\n );\r\n })}\r\n </ul>\r\n );\r\n}","// extracted by mini-css-extract-plugin\nmodule.exports = {\"grid\":\"cv--grid--G_RXX\",\"subgrid\":\"cv--subgrid--38ohZ\"};","import * as React from 'react';\r\n\r\nimport { ImageHelper } from 'libs/shared/utils/ImageHelper';\r\nimport { ImageSize } from 'libs/shared/enums/Images';\r\nimport { SubjectPreferencesContext } from 'libs/shared/apps/subjects/contexts/SubjectPreferencesContext';\r\nimport { ClassificationPreference } from 'libs/shared/apps/subjects/interfaces/ClassificationPreference';\r\nimport { PreferenceItem } from 'libs/shared/apps/subjects/components/preferences/preference-item/PreferenceItem';\r\nimport { Tooltip } from 'libs/shared/components/tooltip/Tooltip';\r\n\r\ninterface SubjectPreferenceItemProps {\r\n subject: ClassificationPreference;\r\n selected: boolean;\r\n disabled?: boolean;\r\n onClick?: (event: React.MouseEvent<HTMLLIElement, MouseEvent>) => void;\r\n extraClasses?: string;\r\n hideStatus?: boolean;\r\n hasSelectedBulk?: boolean;\r\n}\r\n\r\nexport function SubjectPreferenceItem(props: SubjectPreferenceItemProps): JSX.Element {\r\n const context = React.useContext(SubjectPreferencesContext);\r\n\r\n const coverUrl = props.subject.cover ? ImageHelper.createUrl(props.subject.cover.url, { size: ImageSize.Small }) : '';\r\n\r\n const childIds = props.subject.isExpandableOption ? props.subject.children.map(child => child.id) : [];\r\n const selectedChildCount = !props.hasSelectedBulk\r\n ? context?.selectedSubjects?.filter(selection => childIds.includes(selection)).length\r\n : 0;\r\n\r\n const component = (\r\n <PreferenceItem\r\n name={props.subject.name}\r\n imageUrl={coverUrl}\r\n onClick={props.onClick}\r\n isSelected={props.selected}\r\n isDisabled={props.disabled}\r\n isExpandable={props.subject.isExpandableOption}\r\n expand={context?.expandedSubject?.id === props.subject.id}\r\n selectedChildCount={selectedChildCount}\r\n extraClasses={props.extraClasses}\r\n hideStatus={props.hideStatus}\r\n />\r\n );\r\n\r\n return props.disabled\r\n ? <span>{component}</span>\r\n : <Tooltip title={props.subject.name}><span>{component}</span></Tooltip>;\r\n}","import { createContext } from 'react';\r\nimport { ClassificationPreference } from '../interfaces/ClassificationPreference';\r\n\r\ninterface SubjectPreferencesContextFields {\r\n selectedSubjects: string[];\r\n expandedSubject: ClassificationPreference;\r\n}\r\n\r\nexport const SubjectPreferencesContext = createContext<SubjectPreferencesContextFields>(undefined);","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};"],"sourceRoot":""}
@@ -0,0 +1 @@
1
+ (window.webpackJsonp_clickview_lite=window.webpackJsonp_clickview_lite||[]).push([[12],{1016:function(e,t,n){"use strict";var r=n(0),a=n.n(r),o=n(127),i=n(7),c=n(936),s=n(55),l=n(13),u=n(953),f=n(825),p=n(928),d=n.n(p);function m(e){var t=function(e){switch(e){case"user":return d.a.selectedUser;case"classroom":return d.a.selectedClassroom}}("user");return a.a.createElement("div",{className:"".concat(t," d-flex align-items-center pl-2 pr-1 mr-1 mt-1")},a.a.createElement("span",{className:"mr-1"},e.selection.name),a.a.createElement(f.a,{className:"cursor-pointer",onClick:function(){return e.onClickRemove(e.selection.id)}},a.a.createElement(s.a,{svgName:l.b.Close})))}n.d(t,"a",(function(){return y}));function y(e){return a.a.createElement("div",{className:"form-control h-auto d-flex flex-wrap align-items-center py-1 px-0 position-relative"},a.a.createElement(s.a,{className:"svg-container mx-1 h-100 align-self-start",svgName:l.b.Search}),a.a.createElement("div",{className:"".concat(d.a.selectionContainer," d-flex flex-wrap align-items-center mt-n1")},e.selections.map((function(t){return a.a.createElement(m,{key:t.id,selection:t,onClickRemove:function(t){return e.removeSelection(t)}})})),a.a.createElement(c.a,{onSuggestionSelected:function(t){e.updateSelections(t)},onBackspace:function(){return e.removeSelection(o.a.last(e.selections).id)},local:e.localSuggestions,recentSearchHeading:e.recentSearchHeading||i.a.getPhrase("shared.tokenizedTypeahead","recentSearchHeading"),recentSearches:[],placeholder:e.placeholder,searchIconPlacement:!1,activationLength:2,clearQueryOnSelect:!0,getSuggestionComponent:function(e){return a.a.createElement(u.a,{entity:e})},theme:{container:d.a.container,suggestionsContainerOpen:"bg-white py-1 rounded border mt-1 ".concat(d.a.suggestionsContainerOpen),suggestionsList:"list-unstyled m-0",suggestion:"cursor-pointer py-1 px-2",suggestionHighlighted:d.a.suggestionHighlighted}})))}},1070:function(e,t,n){"use strict";var r=n(1235).CopyToClipboard;r.CopyToClipboard=r,e.exports=r},1235:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.CopyToClipboard=void 0;var r=o(n(0)),a=o(n(1236));function o(e){return e&&e.__esModule?e:{default:e}}function i(e){return(i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function c(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function s(e,t){if(null==e)return{};var n,r,a=function(e,t){if(null==e)return{};var n,r,a={},o=Object.keys(e);for(r=0;r<o.length;r++)n=o[r],t.indexOf(n)>=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r<o.length;r++)n=o[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}function l(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function u(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function f(e,t){return!t||"object"!==i(t)&&"function"!=typeof t?d(e):t}function p(e){return(p=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function d(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function m(e,t){return(m=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function y(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var h=function(e){function t(){var e,n;l(this,t);for(var o=arguments.length,i=new Array(o),c=0;c<o;c++)i[c]=arguments[c];return y(d(n=f(this,(e=p(t)).call.apply(e,[this].concat(i)))),"onClick",(function(e){var t=n.props,o=t.text,i=t.onCopy,c=t.children,s=t.options,l=r.default.Children.only(c),u=(0,a.default)(o,s);i&&i(o,u),l&&l.props&&"function"==typeof l.props.onClick&&l.props.onClick(e)})),n}var n,o,i;return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&m(e,t)}(t,e),n=t,(o=[{key:"render",value:function(){var e=this.props,t=(e.text,e.onCopy,e.options,e.children),n=s(e,["text","onCopy","options","children"]),a=r.default.Children.only(t);return r.default.cloneElement(a,function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?c(n,!0).forEach((function(t){y(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):c(n).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}({},n,{onClick:this.onClick}))}}])&&u(n.prototype,o),i&&u(n,i),t}(r.default.PureComponent);t.CopyToClipboard=h,y(h,"defaultProps",{onCopy:void 0,options:void 0})},1236:function(e,t,n){"use strict";var r=n(1237),a={"text/plain":"Text","text/html":"Url",default:"Text"};e.exports=function(e,t){var n,o,i,c,s,l,u=!1;t||(t={}),n=t.debug||!1;try{if(i=r(),c=document.createRange(),s=document.getSelection(),(l=document.createElement("span")).textContent=e,l.style.all="unset",l.style.position="fixed",l.style.top=0,l.style.clip="rect(0, 0, 0, 0)",l.style.whiteSpace="pre",l.style.webkitUserSelect="text",l.style.MozUserSelect="text",l.style.msUserSelect="text",l.style.userSelect="text",l.addEventListener("copy",(function(r){if(r.stopPropagation(),t.format)if(r.preventDefault(),void 0===r.clipboardData){n&&console.warn("unable to use e.clipboardData"),n&&console.warn("trying IE specific stuff"),window.clipboardData.clearData();var o=a[t.format]||a.default;window.clipboardData.setData(o,e)}else r.clipboardData.clearData(),r.clipboardData.setData(t.format,e);t.onCopy&&(r.preventDefault(),t.onCopy(r.clipboardData))})),document.body.appendChild(l),c.selectNodeContents(l),s.addRange(c),!document.execCommand("copy"))throw new Error("copy command was unsuccessful");u=!0}catch(r){n&&console.error("unable to copy using execCommand: ",r),n&&console.warn("trying IE specific stuff");try{window.clipboardData.setData(t.format||"text",e),t.onCopy&&t.onCopy(window.clipboardData),u=!0}catch(r){n&&console.error("unable to copy using clipboardData: ",r),n&&console.error("falling back to prompt"),o=function(e){var t=(/mac os x/i.test(navigator.userAgent)?"⌘":"Ctrl")+"+C";return e.replace(/#{\s*key\s*}/g,t)}("message"in t?t.message:"Copy to clipboard: #{key}, Enter"),window.prompt(o,e)}}finally{s&&("function"==typeof s.removeRange?s.removeRange(c):s.removeAllRanges()),l&&document.body.removeChild(l),i()}return u}},1237:function(e,t){e.exports=function(){var e=document.getSelection();if(!e.rangeCount)return function(){};for(var t=document.activeElement,n=[],r=0;r<e.rangeCount;r++)n.push(e.getRangeAt(r));switch(t.tagName.toUpperCase()){case"INPUT":case"TEXTAREA":t.blur();break;default:t=null}return e.removeAllRanges(),function(){"Caret"===e.type&&e.removeAllRanges(),e.rangeCount||n.forEach((function(t){e.addRange(t)})),t&&t.focus()}}},1238:function(e,t,n){e.exports={shareLink:"cFx7z",copyBtn:"mrGX3"}},1239:function(e){e.exports=JSON.parse('[{"id":"instant-user-1","name":"Josh"},{"id":"instant-user-2","name":"Mike"},{"id":"instant-user-3","name":"Sha"},{"id":"instant-user-4","name":"Matt"},{"id":"instant-user-5","name":"Kevin"},{"id":"instant-user-6","name":"Joe"},{"id":"instant-user-7","name":"Bertha"},{"id":"instant-user-8","name":"Michael"},{"id":"instant-user-9","name":"Michelle"}]')},1240:function(e,t,n){e.exports={copyBtnContainer:"_3SR_7",copyBtn:"B_4l9"}},1241:function(e,t,n){e.exports={passwordVisibilityToggle:"_4X-7U"}},1307:function(e,t,n){"use strict";n.r(t);var r=n(0),a=n.n(r),o=n(7),i=n(14),c=n(861),s=n(249),l=n(154),u=n(73),f=n(238),p=n(239),d=n(992),m=n(1070),y=n(824),h=n(55),g=n(825),b=n(13),v=n(1016),S=n(953),E=n(1238),w=n.n(E),O=n(1239),C=n(40),k=n(3);function j(e){return function(e){if(Array.isArray(e))return N(e)}(e)||function(e){if("undefined"!=typeof Symbol&&Symbol.iterator in Object(e))return Array.from(e)}(e)||x(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function P(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,o=void 0;try{for(var i,c=e[Symbol.iterator]();!(r=(i=c.next()).done)&&(n.push(i.value),!t||n.length!==t);r=!0);}catch(e){a=!0,o=e}finally{try{r||null==c.return||c.return()}finally{if(a)throw o}}return n}(e,t)||x(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 x(e,t){if(e){if("string"==typeof e)return N(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?N(e,t):void 0}}function N(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 I=o.a.encloseNamespace("shared.share");function T(e){var t=P(a.a.useState(!1),2),n=t[0],r=t[1],i=P(a.a.useState(!1),2),c=i[0],s=i[1],l=P(a.a.useState([]),2),f=l[0],p=l[1],d=P(a.a.useState([]),2),E=d[0],x=d[1],N=P(a.a.useState([]),2),T=N[0],A=N[1],D=Object(y.a)();return a.a.useEffect((function(){var e=E.map((function(e){return e.id})),t=O.filter((function(t){return!e.includes(t.id)}));p(t)}),[E]),a.a.createElement(a.a.Fragment,null,a.a.createElement("div",{className:"d-flex justify-content-between align-items-center pb-3"},a.a.createElement(v.a,{localSuggestions:f,selections:E,updateSelections:function(e){return x([].concat(j(E),[e]))},removeSelection:function(e){return x(E.filter((function(t){return t.id!==e})))},placeholder:I("searchPlaceholder")}),"playlist"===e.entityType&&a.a.createElement("p",{className:"text-secondary pl-3 mb-0 text-center text-nowrap"},a.a.createElement(u.b,{phrase:"viewOnly"}))),T.length?a.a.createElement("div",null,a.a.createElement("h3",{className:"font-size-normal"},a.a.createElement(u.b,{phrase:"sharedTo"})),a.a.createElement("ul",{className:"list-unstyled"},T.map((function(e){return a.a.createElement("li",{className:"mb-2"},a.a.createElement(S.a,{key:e.id,entity:e}))})))):a.a.createElement(a.a.Fragment,null),a.a.createElement("div",{className:"mx-n3 px-3 pt-3 border-top"},E.length?a.a.createElement("button",{onClick:function(){C.a.logUserAction({shareCount:E.length},C.a.mergeOptions(e.analyticsOptions,{actionType:k.n.Share})),A([].concat(j(T),j(E))),x([]),D.success(o.a.getPhrase("shared.share","success",{name:e.entity.name}))},className:"btn btn-dark float-right"},a.a.createElement(u.b,{phrase:"share"})):a.a.createElement(a.a.Fragment,null,a.a.createElement("div",{className:n?"d-flex justify-content-between":""},a.a.createElement("h3",{className:"h6 mr-auto"},a.a.createElement(u.b,{phrase:"shareLinkInstead"})),n&&a.a.createElement(g.a,{className:"cursor-pointer",onClick:e.onClickShowSettings},a.a.createElement(h.a,{svgName:b.b.Cog}))),a.a.createElement("div",{className:"d-flex justify-content-between align-items-center"},a.a.createElement("div",{className:"d-flex align-items-center ".concat(n?"w-100":"w-75")},n?a.a.createElement(a.a.Fragment,null,a.a.createElement("input",{type:"text",id:"share-link",autoComplete:"off",className:"form-control bg-white border-dark ".concat(w.a.shareLink),spellCheck:!1,value:e.shareData.shortUrl,readOnly:!0}),a.a.createElement(m,{text:e.shareData.shortUrl},a.a.createElement(g.a,{className:"input-group-append border border-dark text-nowrap px-2 py-1 ".concat(w.a.copyBtn),onClick:function(){c||(s(!0),setTimeout((function(){return s(!1)}),2e3))}},a.a.createElement(u.b,{phrase:c?"copiedLink":"copyLink"})))):a.a.createElement(a.a.Fragment,null,a.a.createElement(h.a,{className:"mr-1 svg-container",svgName:b.b.VisibleOn}),a.a.createElement(u.b,{phrase:"publicLinkInfo"}))),!n&&a.a.createElement(g.a,{className:"info-link",onClick:function(){r(!0),C.a.logUserAction({shareLink:e.shareData.shortUrl},C.a.mergeOptions(e.analyticsOptions,{actionType:k.n.Create,entity:k.d.ShareLink}))}},a.a.createElement(u.b,{phrase:"createLink"}))))))}var A=n(243),D=n(875),L=n(33),_=n(862),R=function(){return[{label:o.a.getPhrase("shared.shared-utils","responsive"),width:"100%",height:"100%"},{label:o.a.getPhrase("shared.shared-utils","small"),width:"640",height:"360"},{label:o.a.getPhrase("shared.shared-utils","medium"),width:"1014",height:"576"},{label:o.a.getPhrase("shared.shared-utils","large"),width:"1280",height:"720"}]},U=n(1240),F=n.n(U);function M(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,o=void 0;try{for(var i,c=e[Symbol.iterator]();!(r=(i=c.next()).done)&&(n.push(i.value),!t||n.length!==t);r=!0);}catch(e){a=!0,o=e}finally{try{r||null==c.return||c.return()}finally{if(a)throw o}}return n}(e,t)||function(e,t){if(!e)return;if("string"==typeof e)return B(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 B(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 B(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}function V(e){var t=R(),n=M(a.a.useState("copy"),2),r=n[0],o=n[1],i=M(a.a.useState(!1),2),c=i[0],s=i[1],l=M(a.a.useState(t.find((function(e){return"100%"===e.width}))),2),f=l[0],p=l[1];var d,y,h=(d="100%"===f.width?'style="position:absolute; top:0; left:0; width:100%; height:100%;"':'width="'.concat(f.width,'" height="').concat(f.height,'"'),y='src="'.concat("https://localhost:5001/share/embed","/").concat(e.shortCode,"?a=").concat(c,'"'),"<iframe ".concat(d," ").concat('frameborder="0" allowfullscreen webkitallowfullscreen mozallowfullscreen'," ").concat(y,"></iframe>"));return a.a.createElement(u.a.Provider,{value:"share.copyEmbedHtml"},a.a.createElement("label",{className:"m-0"},a.a.createElement(u.b,{namespace:"share.copyEmbedHtml",phrase:"label"})),a.a.createElement("div",{className:"position-relative mb-2"},a.a.createElement("textarea",{className:"form-control rounded w-100 h-100 bg-white border-dark",spellCheck:!1,value:h,rows:5,readOnly:!0}),a.a.createElement("div",{className:"input-group-append rounded ".concat(F.a.copyBtnContainer)},a.a.createElement(m,{onCopy:function(){o("copied"),C.a.logUserAction({id:e.entityId,size:f,autoplay:c},C.a.mergeOptions(e.analyticsOptions,{actionType:k.n.Click,descriptor:k.b.CopyEmbedHtml}))},text:h},a.a.createElement("button",{className:"btn bg-white ".concat(F.a.copyBtn)},a.a.createElement(u.b,{phrase:r}))))),a.a.createElement("div",{className:"d-flex align-items-center"},a.a.createElement("div",{className:"mr-1"},a.a.createElement(u.b,{phrase:"videoSize"})),a.a.createElement("div",{className:"pr-3"},a.a.createElement(L.Dropdown,null,a.a.createElement(L.Dropdown.Toggle,{id:"embed-resolution",variant:"outline-dark"},f.label),a.a.createElement(L.Dropdown.Menu,null,t.map((function(e){return a.a.createElement(L.Dropdown.Item,{key:"".concat(e.width,"x").concat(e.height),onClick:function(){return p(e)}},e.label)}))))),a.a.createElement("div",{className:"mr-1"},a.a.createElement(u.b,{phrase:"autoplay"})),a.a.createElement(_.a,{id:e.shortCode,checked:c,onChange:function(){return s(!c)}})))}var H=n(1241),q=n.n(H);function K(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,o=void 0;try{for(var i,c=e[Symbol.iterator]();!(r=(i=c.next()).done)&&(n.push(i.value),!t||n.length!==t);r=!0);}catch(e){a=!0,o=e}finally{try{r||null==c.return||c.return()}finally{if(a)throw o}}return n}(e,t)||function(e,t){if(!e)return;if("string"==typeof e)return z(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 z(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 z(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 Q=o.a.encloseNamespace("shared.share");function $(e){var t=K(a.a.useState(!1),2),n=t[0],r=t[1],o=K(a.a.useState(!1),2),i=o[0],c=o[1],s=K(a.a.useState(!1),2),l=s[0],f=s[1],p=K(a.a.useState(""),2),d=p[0],m=p[1];return a.a.createElement(a.a.Fragment,null,a.a.createElement("div",{className:"d-flex align-items-center pb-3"},a.a.createElement(h.a,{className:"mr-1 svg-container",svgName:b.b.VisibleOn}),a.a.createElement("div",{className:"mr-auto"},a.a.createElement(u.b,{phrase:"publicLinkInfo"})),a.a.createElement(g.a,{onClick:function(){C.a.logUserAction({shareLink:e.shareData.shortUrl},C.a.mergeOptions(e.analyticsOptions,{actionType:k.n.Delete,entity:k.d.ShareLink})),e.showMain()},className:"info-link"},a.a.createElement(u.b,{phrase:"deleteLink"}))),a.a.createElement("div",{className:"d-flex justify-content-between align-items-center pb-3"},a.a.createElement("div",null,a.a.createElement("label",{className:"m-0",htmlFor:""},a.a.createElement(u.b,{phrase:"linkExpirationHeading"})),a.a.createElement("p",{className:"m-0"},a.a.createElement(u.b,{phrase:"linkExpirationInfo"}))),a.a.createElement(D.a,{onClick:function(){return r(!n)},on:n})),a.a.createElement("div",{className:"pb-3"},a.a.createElement("div",{className:"d-flex justify-content-between align-items-center"},a.a.createElement("div",null,a.a.createElement("label",{className:"m-0",htmlFor:""},a.a.createElement(u.b,{phrase:"passwordProtectHeading"})),a.a.createElement("p",{className:"m-0"},a.a.createElement(u.b,{phrase:"passwordProtectInfo"}))),a.a.createElement(D.a,{onClick:function(){return c(!i)},on:i})),i&&a.a.createElement("div",{className:"position-relative w-75 mt-2"},a.a.createElement("input",{className:"form-control",value:d,onChange:function(e){m(e.currentTarget.value)},type:l?"text":"password",placeholder:Q("passwordPlaceholder")}),a.a.createElement(g.a,{className:q.a.passwordVisibilityToggle,onClick:function(){return f(!l)}},a.a.createElement(h.a,{svgName:l?b.b.VisibleOn:b.b.VisibleOff})))),a.a.createElement("div",{className:"pb-3"},a.a.createElement(V,{entityId:e.entityId,shortCode:e.shareData.shortCode,analyticsOptions:e.analyticsOptions})),a.a.createElement(A.a,{buttons:[{variant:"outline-dark",onClick:e.showMain,buttonText:Q("cancel")},{variant:"dark",onClick:function(){C.a.logUserAction({hasPassword:!!d,willExpire:n},C.a.mergeOptions(e.analyticsOptions,{actionType:k.n.Edit,entity:k.d.ShareLink})),e.showMain()},buttonText:Q("save")}]}))}var J=n(993);function Y(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,o=void 0;try{for(var i,c=e[Symbol.iterator]();!(r=(i=c.next()).done)&&(n.push(i.value),!t||n.length!==t);r=!0);}catch(e){a=!0,o=e}finally{try{r||null==c.return||c.return()}finally{if(a)throw o}}return n}(e,t)||function(e,t){if(!e)return;if("string"==typeof e)return W(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 W(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 W(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}n.d(t,"ShareView",(function(){return X}));function X(e){var t,n,r,m,y=Y(a.a.useState(!1),2),h=y[0],g=y[1],b=i.a.useBasicFetch(l.a.currentUser()),v=function(e){switch(e){case"video":return function(e){return i.a.useBasicFetch(p.a.video(e))};case"playlist":return function(e){return i.a.useBasicFetch(c.a.getPlaylist(e))};case"subject":return function(e,t){return i.a.useBasicFetch(s.a.classification(e,t))};case"series":return function(e){return i.a.useBasicFetch(J.a.series(e))}}}(e.entityType)(e.entityId,null===(t=b.data)||void 0===t?void 0:t.id),S=i.a.useBasicFetch(d.a.getShareData(null===(n=v.data)||void 0===n?void 0:n.id)),E=h?o.a.getPhrase("shared.share","settingsTitle",{name:(null===(m=v.data)||void 0===m?void 0:m.name)||""}):o.a.getPhrase("shared.share","mainTitle",{name:(null===(r=v.data)||void 0===r?void 0:r.name)||""});var w={entity:function(){switch(e.entityType){case"playlist":return k.d.Playlist;case"subject":return k.d.Classification;case"video":return k.d.Video;case"series":return k.d.Series}}(),location:k.j.Popup,workflowPhase:k.o.Complete};return a.a.createElement(u.a.Provider,{value:"shared.share"},a.a.createElement(f.a,{title:E,closePopup:e.closePopup,showLoadingSpinner:!S.data},S.data?h?a.a.createElement($,{shareData:S.data,showMain:function(){return g(!1)},entityId:e.entityId,analyticsOptions:w}):a.a.createElement(T,{shareData:S.data,entity:v.data,entityType:e.entityType,onClickShowSettings:function(){return g(!0)},analyticsOptions:w}):a.a.createElement(a.a.Fragment,null)))}},824:function(e,t,n){"use strict";n.d(t,"a",(function(){return i}));var r=n(153),a=n(48),o=n(52),i=function(){var e=Object(r.a)(o.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})}}}},825:function(e,t,n){"use strict";n.d(t,"a",(function(){return a}));var r=n(0);function a(e){return r.createElement("div",{role:"button",tabIndex:0,className:"".concat(e.className?e.className:""," cursor-pointer"),onKeyDown:function(t){return"Enter"===t.key&&e.onClick(t)},onClick:e.onClick,style:e.style?e.style:{}},e.children)}},838:function(e,t,n){"use strict";n.d(t,"a",(function(){return d}));var r=n(244),a=n(85),o=n(865);function i(e){return(i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function c(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function s(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function l(e,t){return(l=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function u(e){var t=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(e){return!1}}();return function(){var n,r=p(e);if(t){var a=p(this).constructor;n=Reflect.construct(r,arguments,a)}else n=r.apply(this,arguments);return f(this,n)}}function f(e,t){return!t||"object"!==i(t)&&"function"!=typeof t?function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(e):t}function p(e){return(p=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}var d=function(e){!function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&l(e,t)}(f,e);var t,n,r,i=u(f);function f(){var e,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:a.a.Newest,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:o.a.OwnedByMe;return c(this,f),(e=i.call(this,{collectionPrefix:"user:playlists",cursor:n,sort:t})).type=r,e}return t=f,(n=[{key:"toString",value:function(){return[this.collectionPrefix,this.sort,this.cursor,this.type].filter(Boolean).join(":")}}])&&s(t.prototype,n),r&&s(t,r),f}(r.a)},861:function(e,t,n){"use strict";var r=n(21),a=n(46),o=n(864);n(838);function i(e){return(i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function c(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function s(e,t){return(s=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function l(e){var t=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(e){return!1}}();return function(){var n,r=f(e);if(t){var a=f(this).constructor;n=Reflect.construct(r,arguments,a)}else n=r.apply(this,arguments);return u(this,n)}}function u(e,t){return!t||"object"!==i(t)&&"function"!=typeof t?function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(e):t}function f(e){return(f=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}var p,d=function(e){!function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&s(e,t)}(n,e);var t=l(n);function n(e){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"";return c(this,n),t.call(this,{collectionPrefix:"playlist:videos",id:e,cursor:r})}return n}(n(244).a);!function(e){e[e.Queued=1]="Queued",e[e.Processing=2]="Processing",e[e.Processed=3]="Processed",e[e.Errored=4]="Errored"}(p||(p={}));var m=function(e,t){return function(n){var r=Object.assign({},n);return r.hasOwnProperty(e)&&(r[e]=Object.assign(Object.assign({},r[e]),t)),r}},y=function(e){return function(t){var n=Object.assign({},t);return n.hasOwnProperty(e)&&delete n[e],n}},h=function(e,t){return function(n){var r=Object.assign({},n);return r.hasOwnProperty(e)?(r[e].videos||(r[e].videos={}),r[e].videos.count=r[e].videos.count?r[e].videos.count+t:t,r):n}};n.d(t,"a",(function(){return S}));var g=function(e){return e?"&cursor=".concat(e):""},b=function(e){return Number.isInteger(e)?"&maxRatingValue=".concat(e):""},v=function(e,t){return"".concat(e).concat(t?":".concat(t):"")},S={getPlaylist:function(e,t,n){return{url:"/api/domain/v2/objects/".concat(e,"?query=").concat(a.a.PLAYLIST),key:"playlist:".concat(e),success:t,error:n}},getSharedPlaylist:function(e,t,n,r){var o="/api/domain/v2/share/".concat(e);return{url:"".concat(o,"?query=").concat(a.a.PLAYLIST).concat(b(t)),key:"shared:playlist:".concat(e),success:n,error:r}},getUserPlaylists:function(e){var t=e.sort,n=e.type;return{url:"/api/domain/v2/me/playlists/".concat(n,"?sort=").concat(t,"&query={limit:100}")+"".concat(a.a.PLAYLIST_COLLECTION).concat(g(e.cursor)),key:e.toString()}},getPlaylistVideos:function(e,t,n){var r="orderBy:orderindex,limit:100";return Number.isInteger(t)&&(r+=",rating.value:0...".concat(t)),{url:"/api/domain/v2/objects/".concat(e,"/videos?query={").concat(r,"}")+"".concat(a.a.VIDEO_COLLECTION).concat(g(n)),key:v("playlist:".concat(e,":videos"),n)}},getSharedPlaylistVideos:function(e,t,n){return{url:"/api/domain/v2/share/".concat(e,"/videos?query={orderBy:orderindex,limit:100}")+"".concat(a.a.SHARED_PLAYLIST_VIDEO_COLLECTION)+"".concat(g(n)).concat(b(t)),key:v("shared:playlist:".concat(e,":videos"),n)}},getVideoPlaylists:function(e,t,n){return{url:"/api/domain/v2/objects/".concat(e,"/playlists?query={limit:100,owner.id:[").concat(t,"]}"),key:v("video:playlists:".concat(e),n)}},createPlaylist:function(e,t,n,a){return{key:"create:playlist",url:"/api/domain/v2/objects/".concat(e,"/playlists"),data:t,type:r.a.POST,success:n,error:a,invalidationKeys:"user:playlists"}},updatePlaylist:function(e,t,n,a){return{key:"update:playlist",url:"/api/domain/v2/objects/".concat(e),data:t,type:r.a.PUT,success:n,error:a,updateState:{keys:"playlist:".concat(e),updateData:m("playlist:".concat(e),t)}}},deletePlaylist:function(e,t,n){return{key:"delete:playlist",url:"/api/domain/v2/objects/".concat(e),type:r.a.DELETE,success:t,error:n,invalidationKeys:"user:playlists",updateState:{keys:"playlist:".concat(e),updateData:y("playlist:".concat(e))}}},addToPlaylist:function(e,t,n,a){var o=["user:playlists",new d(e).toString()];return t.forEach((function(e){o.push("video:playlists:".concat(e))})),{key:"add:to:playlist",url:"/api/domain/v2/objects/".concat(e,"/associate"),data:t,type:r.a.POST,success:n,error:a,invalidationKeys:o,updateState:{keys:"playlist:".concat(e),updateData:h("playlist:".concat(e),t.length)}}},reorderVideos:function(e,t,n,a){return{key:"reorder:playlist",url:"/api/domain/v2/objects/".concat(e,"/videos/reorder"),data:t,type:r.a.PUT,success:n,error:a,invalidationKeys:"user:playlists",updateState:{keys:"playlist:".concat(e,":videos"),updateData:function(n){return o.a.updateState("playlist:".concat(e,":videos"),t,n)}}}},removePlaylistVideo:function(e,t,n,a){return{key:"remove:playlist:video",url:"/api/domain/v2/objects/".concat(e,"/dissociate?memberId=").concat(t),type:r.a.DELETE,success:n,error:a,invalidationKeys:["user:playlists","playlist:".concat(e,":videos")]}},getIsFollowingPlaylist:function(e,t){return{url:"/api/domain/v2/objects/".concat(t,"/followedPlaylists?query={id:").concat(e,"}"),key:"playlist:".concat(e,":following:").concat(t),formatData:function(t){var n,r;return{objectId:e,isFollowing:!!(null===(r=null===(n=t)||void 0===n?void 0:n.data)||void 0===r?void 0:r.length)}},normalize:!1}},followPlaylist:function(e,t,n,a,o){return{url:"/api/domain/v2/objects/".concat(t),key:"follow:playlist:".concat(e),data:{followedPlaylists:e},type:r.a.PUT,invalidationKeys:["user:playlists","playlist:".concat(e,":following:").concat(t)],success:n,error:a,always:o}},unfollowPlaylist:function(e,t,n,a,o){return{url:"/api/domain/v2/objects/".concat(t,"/followedplaylists/").concat(e),key:"unfollow:playlist:".concat(e),type:r.a.DELETE,invalidationKeys:["user:playlists","playlist:".concat(e,":following:").concat(t)],success:n,error:a,always:o}},getPlaylistPrivacy:function(e){return{key:"playlist:privacy:".concat(e),url:"/api/domain/v1/playlists/".concat(e,"/privacy"),formatData:function(t){return{id:e,privacy:t}}}},updatePlaylistPrivacy:function(e,t,n,a,o){return{key:"update:playlist:privacy:".concat(e),url:"/api/domain/v1/playlists/".concat(e,"/privacy"),type:r.a.PUT,data:{privacy:t},formatData:function(){return{id:e,privacy:t}},success:n,error:a,always:o}},getMigrationTask:function(e,t){return{url:"/api/playlist-app/migration-task",key:"migration:task",formatData:function(e){return e||{status:p.Processed}},success:e,error:t}}}},862:function(e,t,n){"use strict";n.d(t,"a",(function(){return a}));var r=n(0);function a(e){return r.createElement("div",{className:"custom-control custom-checkbox ".concat(e.className)},r.createElement("input",{type:"checkbox",className:"custom-control-input",id:e.id,name:e.name,checked:e.checked,onChange:e.onChange}),r.createElement("label",{className:"custom-control-label cursor-pointer",htmlFor:e.id},e.label))}a.defaultProps={checked:!1,label:"",className:""}},864:function(e,t,n){"use strict";n.d(t,"a",(function(){return c}));var r=n(127),a=n(57);function o(e){return function(e){if(Array.isArray(e))return i(e)}(e)||function(e){if("undefined"!=typeof Symbol&&Symbol.iterator in Object(e))return Array.from(e)}(e)||function(e,t){if(!e)return;if("string"==typeof e)return i(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 i(e,t)}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function i(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={reorder:function(e,t,n){if(t===n)return{reorderedItems:e,reorderRequest:null};var a=r.a.moveItem(e,t,n),o=n<e.length-1?a[n+1].id:null;return{reorderedItems:a,reorderRequest:{sourceMemberId:a[n].id,destinationMemberId:o}}},updateState:function(e,t,n){for(var i=[],c=a.a.deepClone(n),s=[e],l=n[e],u=!!l&&!!l.data&&l.data.length;l&&Array.isArray(l.data);){i.push.apply(i,o(l.data));var f=l.pagination&&l.pagination.cursors&&l.pagination.cursors.next,p=!!f&&"".concat(e,":").concat(f);(l=f&&n[p])&&s.push(p)}if(!i.length)return n;var d=r.a.findIndex(i,(function(e){return e.id===t.sourceMemberId})),m=[].concat(i),y=m.splice(d,1),h=t.destinationMemberId?r.a.findIndex(m,(function(e){return e.id===t.destinationMemberId})):m.length;return m.splice(h,0,y[0]),s.forEach((function(e){var t=m.splice(0,u);c[e].data=t})),c}}},865:function(e,t,n){"use strict";var r;n.d(t,"a",(function(){return r})),function(e){e.OwnedByMe="owned_by_me",e.Followed="followed",e.All="all"}(r||(r={}))},875:function(e,t,n){"use strict";n.d(t,"a",(function(){return i}));var r=n(0),a=n.n(r),o=n(825);function i(e){var t=e.on&&!e.disabled?"on":"",n=e.disabled?"disabled":"",r=e.hideOutline?"outline-none":"";return a.a.createElement(o.a,{onClick:function(){e.disabled||e.onClick.apply(e,arguments)},className:"".concat("d-inline-block float-right align-top custom-toggle toggle-option"," ").concat(t," ").concat(n," ").concat(r)},a.a.createElement("span",{className:"handle"}))}},878:function(e,t,n){"use strict";function r(e){return(r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}n.d(t,"a",(function(){return a}));var a={isNumber:function(e){return a.isType(e,"number")},isString:function(e){return a.isType(e,"string")},isType:function(e,t){return r(e)===t}}},890:function(e,t,n){e.exports={input:"_3MysI",suggestionsContainerOpen:"ahMdW",sectionContainer:"xstWL",suggestionHighlighted:"_3YTCa"}},928:function(e,t,n){e.exports={container:"_16rdL",suggestionsContainerOpen:"_2886c",selectionContainer:"_12TCg",suggestionHighlighted:"_3HZFR",selectedUser:"_3NTEb",selectedClassroom:"x8G1B"}},936:function(e,t,n){"use strict";var r,a=n(0),o=n(820),i=n(35),c=n(7),s=n(107),l=n(45),u=n(21),f=n(14),p=n(57),d=n(878),m=n(890),y=n.n(m);function h(e){return function(e){if(Array.isArray(e))return g(e)}(e)||function(e){if("undefined"!=typeof Symbol&&Symbol.iterator in Object(e))return Array.from(e)}(e)||function(e,t){if(!e)return;if("string"==typeof e)return g(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 g(e,t)}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function g(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}function b(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function v(e,t){return p.a.isObject(e)&&e.hasOwnProperty(t)&&d.a.isString(e[t])}function S(e,t,n){return function(a){var o=a.value;if(o.length||n(),!(o.length<e.activationLength)){if(e.local){var c=i.a.isFunction(e.getLocalSuggestions)?e.getLocalSuggestions(o,e.local):(s=o,l=e.local,p=e.valueKey,(m=s.trim().toLowerCase()).length?l.filter((function(e){return!(!v(e,p)||!d.a.isString(e[p]))&&e[p].trim().toLowerCase().includes(m)})):[]);t((function(e){return Object.assign(Object.assign({},e),b({},r.Local,c))}))}var s,l,p,m;e.getRemoteUrl&&function(e,t,n){var r=i.a.isFunction(e)&&e(t);r&&f.a.ajaxRequest({resource:r,type:u.a.GET,success:n,error:function(){}})}(e.getRemoteUrl,o,(function(n){return t((function(t){return Object.assign(Object.assign({},t),b({},r.Remote,i.a.isFunction(e.formatRemoteSuggestions)?e.formatRemoteSuggestions(n):n))}))}))}}}function E(e,t,n,a,o,c){var s=function(t){return e[t]||[]},l=t?s(r.Recent):[],u=s(r.Local),f=s(r.Remote),p=[];l.length&&p.push({title:n,data:l});var d=[].concat(h(u),h(f));return Number.isInteger(c)&&p.length>c&&d.slice(0,c),i.a.isFunction(o)?p.push.apply(p,h(o(d))):p.push({title:a,data:d}),p}function w(e){return e.data}function O(e){if(e.title)return a.createElement("strong",null,e.title)}!function(e){e.Local="local",e.Recent="recent",e.Remote="remote"}(r||(r={}));var C={container:"position-relative",suggestionsContainerOpen:"bg-white py-1 border rounded ".concat(y.a.suggestionsContainerOpen),suggestionsList:"list-unstyled m-0",suggestion:"cursor-pointer py-1 px-2",suggestionHighlighted:y.a.suggestionHighlighted,sectionContainer:"border-bottom py-1 ".concat(y.a.sectionContainer)};function k(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return Object.assign(C,e)}var j=n(55),P=n(13),x=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},N=function(e){var t="d-inline-block svg-container";return i.a.isFunction(e)?t+" cursor-pointer":t};function I(e){var t=e.onClickSearchIcon,n=e.searchIconPlacement,r=e.className,o=x(e,["onClickSearchIcon","searchIconPlacement","className"]),i="form-control ".concat(y.a.input),c="input-group-text bg-white";"right"===n&&(i+=" border-right-0",c+=" pl-0"),"left"===n&&(i+=" border-left-0",c+=" pr-0"),r&&(i+=" ".concat(r));var s=function(){return a.createElement("div",{className:c},a.createElement(j.a,{svgName:P.b.Search,size:j.b.Small,onClick:t,className:N(t)}))};return a.createElement("div",{className:"input-group"},"left"===n&&a.createElement("div",{className:"input-group-prepend"},a.createElement(s,null)),a.createElement("input",Object.assign({className:i},o)),"right"===n&&a.createElement("div",{className:"input-group-append"},a.createElement(s,null)))}function T(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,o=void 0;try{for(var i,c=e[Symbol.iterator]();!(r=(i=c.next()).done)&&(n.push(i.value),!t||n.length!==t);r=!0);}catch(e){a=!0,o=e}finally{try{r||null==c.return||c.return()}finally{if(a)throw o}}return n}(e,t)||function(e,t){if(!e)return;if("string"==typeof e)return A(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 A(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 A(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}n.d(t,"a",(function(){return L}));var D=i.a.isFunction;function L(e){var t,n,i,u=(t=e.initialSuggestions,n=e.recentSearches,b(i={},r.Recent,n),b(i,r.Local,t),b(i,r.Remote,[]),i),f=T(a.useState(e.initialQuery||""),2),p=f[0],d=f[1],m=T(a.useState(u),2),y=m[0],h=m[1],g=Object(s.a)(l.a.XS),C=function(){h(u)},j=function(t){t.preventDefault(),D(e.onSubmit)&&e.onSubmit(p)};return a.createElement("form",{onSubmit:j},a.createElement(o,{suggestions:E(y,!p,e.recentSearchHeading||c.a.getPhrase("shared.searchBar","recentSearchHeading"),e.suggestionsHeading,e.getSections,e.suggestionLimit),onSuggestionsFetchRequested:S(e,h,C),onSuggestionsClearRequested:function(){e.alwaysRenderSuggestions||C()},onSuggestionSelected:function(t,n){var r=n.suggestion;e.clearQueryOnSelect&&d(""),e.onSuggestionSelected(r)},getSuggestionValue:function(t){return e.updateQueryOnSelection?function(e,t){return v(t,e)?t[e]:""}(e.valueKey,t):p},renderSuggestion:function(t){return D(e.getSuggestionComponent)?e.getSuggestionComponent(t):function(e,t){return v(t,e)?a.createElement(a.Fragment,null,t[e]):a.createElement(a.Fragment,null)}(e.valueKey,t)},alwaysRenderSuggestions:e.alwaysRenderSuggestions,focusInputOnSuggestionClick:!g,inputProps:{placeholder:e.placeholder||c.a.getPhrase("shared.searchBar","placeholder"),value:p,onChange:function(t,n){var r=n.newValue;d(r),D(e.onQueryChange)&&e.onQueryChange(r)},onKeyDown:function(t){8===t.keyCode&&e.onBackspace&&!p&&e.onBackspace()},autoFocus:!!e.autoFocusInput,onClickSearchIcon:!!e.submitOnClickSearchIcon&&j,searchIconPlacement:e.searchIconPlacement},renderInputComponent:I,theme:k(e.theme),multiSection:!0,renderSectionTitle:O,getSectionSuggestions:w}))}L.defaultProps={updateQueryOnSelection:!0,valueKey:"name",activationLength:3,suggestionLimit:5,recentSearches:[],initialSuggestions:[],searchIconPlacement:"right"}},953:function(e,t,n){"use strict";n.d(t,"a",(function(){return i}));var r=n(0),a=n.n(r),o=n(247);function i(e){return a.a.createElement("div",{className:"d-flex align-items-center"},a.a.createElement("div",{className:"pr-2"},a.a.createElement(o.a,{imageUrl:"",imageCdnUrl:"",initials:""})),a.a.createElement("div",null,a.a.createElement("h4",{className:"font-size-normal font-weight-normal m-0"},e.entity.name),a.a.createElement("p",{className:"text-muted m-0"},"Email or classroom count here idk")),a.a.createElement("div",null))}},992:function(e,t,n){"use strict";n.d(t,"a",(function(){return o}));var r=n(21),a=n(161),o={getShareData:function(e){if(e)return{url:"/api/domain/v1/share",key:"share:".concat(e),type:r.a.POST,data:{id:e,privacy:null}}},sharedResource:function(e){return{url:"/api/domain/v2/share/".concat(e,"?query=").concat(a.a.VIDEO),key:"shared:resource:".concat(e)}}}},993:function(e,t,n){"use strict";n.d(t,"a",(function(){return c}));var r=n(161),a=function(e){return"/api/domain/v2/objects/".concat(e)},o=function(e,t){return"/api/domain/v2/objects/".concat(e,"/videos?query=").concat(r.a.VIDEO_COLLECTION).concat(function(e){return e?"&cursor=".concat(e):""}(t))},i=function(e){return"/api/domain/v1/subjects/".concat(e,"/path")},c={series:function(e){return{url:a(e),key:"series:".concat(e)}},seriesVideos:function(e,t){return{url:o(e,t),key:"series:".concat(e,":videos:").concat(t)}},breadcrumbs:function(e){if(e)return{url:i(e),key:"series:".concat(e,":breadcrumbs")}}}}}]);