@clickview/lite 0.67.0-rc.2 → 0.67.0-rc.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/bundles.json +1 -1
- package/dist/scripts/{1033-4d86251a49-lite.chunk.js → 1033-ae28a23114-lite.chunk.js} +3 -3
- package/dist/scripts/1033-ae28a23114-lite.chunk.js.map +1 -0
- package/dist/scripts/1265-1c11ef03e1-lite.chunk.js +3 -0
- package/dist/scripts/1265-1c11ef03e1-lite.chunk.js.map +1 -0
- package/dist/scripts/2302-6ed6711d59-lite.chunk.js +3 -0
- package/dist/scripts/2302-6ed6711d59-lite.chunk.js.map +1 -0
- package/dist/scripts/{5595-9427836ce1-lite.chunk.js → 5595-b40e8d1fa7-lite.chunk.js} +2 -2
- package/dist/scripts/5595-b40e8d1fa7-lite.chunk.js.map +1 -0
- package/dist/scripts/8675-8b2f552e9f-lite.chunk.js +2 -0
- package/dist/scripts/8675-8b2f552e9f-lite.chunk.js.map +1 -0
- package/dist/scripts/{bundle-729d35b93d.min.js → bundle-87ed395a6c.min.js} +3 -3
- package/dist/scripts/{bundle-729d35b93d.min.js.map → bundle-87ed395a6c.min.js.map} +1 -1
- package/package.json +1 -1
- package/dist/scripts/1033-4d86251a49-lite.chunk.js.map +0 -1
- package/dist/scripts/1265-e698bc4a88-lite.chunk.js +0 -3
- package/dist/scripts/1265-e698bc4a88-lite.chunk.js.map +0 -1
- package/dist/scripts/2302-c88b6018bc-lite.chunk.js +0 -3
- package/dist/scripts/2302-c88b6018bc-lite.chunk.js.map +0 -1
- package/dist/scripts/5595-9427836ce1-lite.chunk.js.map +0 -1
- package/dist/scripts/8675-d0e9117cea-lite.chunk.js +0 -2
- package/dist/scripts/8675-d0e9117cea-lite.chunk.js.map +0 -1
- /package/dist/scripts/{1033-4d86251a49-lite.chunk.js.LICENSE.txt → 1033-ae28a23114-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{1265-e698bc4a88-lite.chunk.js.LICENSE.txt → 1265-1c11ef03e1-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{2302-c88b6018bc-lite.chunk.js.LICENSE.txt → 2302-6ed6711d59-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{bundle-729d35b93d.min.js.LICENSE.txt → bundle-87ed395a6c.min.js.LICENSE.txt} +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scripts/5595-b40e8d1fa7-lite.chunk.js","mappings":"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","sources":["file:///app/packages/libs/shared/src/apps/calendar/components/coming-soon-tag/coming-soon-tag.scss","file:///app/packages/libs/shared/src/apps/calendar/components/coming-soon-tag/ComingSoonTag.tsx","file:///app/packages/libs/shared/src/apps/calendar/components/generic-calendar-date/generic-calendar-date.scss","file:///app/packages/libs/shared/src/apps/calendar/components/generic-calendar-date/GenericCalendarDate.tsx","file:///app/packages/libs/shared/src/components/back-button/BackButton.tsx","file:///app/packages/libs/shared/src/components/banner-header/banner-header.scss","file:///app/packages/libs/shared/src/components/banner-header/BannerHeader.tsx","file:///app/packages/libs/shared/src/components/caret/Caret.tsx","file:///app/packages/libs/shared/src/components/caret/caret.scss","file:///app/packages/libs/shared/src/components/folder-list/FolderList.tsx","file:///app/packages/libs/shared/src/components/folder-list/partial-loading/partial-folder-list.scss","file:///app/packages/libs/shared/src/components/folder-list/partial-loading/PartialFolderList.tsx","file:///app/packages/libs/shared/src/components/library-folder/library-folder.scss","file:///app/packages/libs/shared/src/components/library-folder/LibraryFolder.tsx","file:///app/packages/libs/shared/src/errors/handlers/HttpErrorHandlers.ts","file:///app/packages/libs/shared/src/hooks/UseHandleObjectError.ts","file:///app/packages/projects/lite/src/apps/libraries/hooks/UseFetchAllChildFolders.ts","file:///app/packages/projects/lite/src/apps/libraries/hooks/UseHandleLibraryType.ts","file:///app/packages/projects/lite/src/apps/libraries/views/library-folder/LibraryFolderViewUtils.ts","file:///app/packages/projects/lite/src/apps/libraries/views/library/LibraryView.tsx"],"sourcesContent":["// extracted by mini-css-extract-plugin\nexport default {\"tag\":\"XRj8d\",\"tooltip\":\"X6mLk\"};","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\nimport { Tooltip } from 'libs/shared/components/tooltip/Tooltip';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport styles from './coming-soon-tag.scss';\n\nconst namespace = 'specialEventCalendar.comingSoonTag';\n\ninterface ComingSoonProps {\n className?: string;\n onlyIcon?: boolean;\n}\n\nexport function ComingSoonTag(props: ComingSoonProps): JSX.Element {\n return (\n <Tooltip title={LanguageService.getPhrase(namespace, 'tooltip')} spanHackClassName={`d-block ${styles.tooltip}`} spanHack>\n <div className={`d-flex text-dark align-items-center ${styles.tag} ${props.className}`}>\n <SvgContainer svgName={cvSvgLibrary.Timer} />\n {!props.onlyIcon && LanguageService.getPhrase(namespace, 'comingSoon')}\n </div>\n </Tooltip>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"dateItem\":\"I3SBm\",\"label\":\"PRORs\",\"body\":\"RfiM_\",\"bodyDay\":\"ZOVny\",\"bodyRange\":\"vYhXN\",\"bodyMonth\":\"mYslO\",\"month\":\"EPkkQ\"};","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { AnalyticsOptions } from 'libs/analytics/interfaces';\n\nimport { CalendarTheme } from 'libs/shared/apps/calendar/interfaces/CalendarTheme';\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\n\nimport styles from './generic-calendar-date.scss';\n\nexport interface GenericCalendarDateProps {\n label?: string;\n body: {\n type: 'month' | 'range' | 'day';\n text: string;\n };\n month?: string;\n getAppLink?: () => Core.AppLink;\n analyticsData?: HashObject;\n analyticsOptions?: AnalyticsOptions;\n className?: string;\n theme?: CalendarTheme;\n}\n\nexport function GenericCalendarDate(props: GenericCalendarDateProps): JSX.Element {\n function getBodyClass(): string {\n switch (props.body.type) {\n case 'range':\n return styles.bodyRange;\n case 'day':\n return styles.bodyDay;\n case 'month':\n return styles.bodyMonth;\n }\n }\n\n return (\n <AppLink\n appLink={props.getAppLink?.()}\n className={`text-decoration-none text-center bg-white text-dark border border-3 ${props.theme?.border} rounded-3 d-block fw-semibold ${props.className}`}\n analyticsData={props.analyticsData}\n analyticsOptions={props.analyticsOptions}\n >\n <div className={`position-relative ${styles.dateItem}`}>\n <div className={`${props.theme?.background} py-1 ${styles.label} d-flex align-items-center justify-content-center`}>\n {props.label ? props.label : <> </>}\n </div>\n <div className={`${getBodyClass()} ${styles.body} my-2`}>\n {props.body.text}\n </div>\n <div className={`mb-0 ${styles.month}`}>\n {props.month}\n </div>\n </div>\n </AppLink>\n );\n}","import * as React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Core } from 'libs/common/core';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { SvgContainer, SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nconst namespace = 'shared.backButton';\n\ninterface BackButtonProps {\n appLink: Core.AppLink;\n backToName?: string;\n color?: 'black' | 'white';\n extraClasses?: string;\n /**\n * Whether or not the button text has a text shadow. Defaults to true\n */\n textShadow?: boolean;\n}\n\nBackButton.defaultProps = {\n color: 'black',\n extraClasses: ''\n};\n\nexport function BackButton(props: BackButtonProps): React.ReactElement {\n const { backToName, appLink, color, extraClasses, textShadow } = {\n textShadow: true,\n ...props\n };\n\n const backPhrase = backToName\n ? LanguageService.getPhrase(namespace, 'backTo', { backToName })\n : LanguageService.getPhrase(namespace, 'back');\n\n const colorClass = color === 'black' ? '' : 'text-white';\n const textShadowClass = textShadow ? 'text-shadow' : '';\n\n return (\n <AppLink\n appLink={appLink}\n className={`d-inline-flex align-items-center h5 mb-0 ${extraClasses} ${colorClass} ${textShadowClass}`}\n >\n <SvgContainer svgName={cvSvgLibrary.ChevronLeft} size={SvgContainerSize.Medium} />\n <span className='ms-1'>{backPhrase}</span>\n </AppLink>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"bannerContent\":\"sSCTB\",\"actionsContainer\":\"Z5WI2\",\"bannerContentWithLogo\":\"rgs7Q\",\"container\":\"M51HJ\",\"logoContainer\":\"vkeJk\",\"logoContainerLeft\":\"M3U9B\",\"logoHeading\":\"EtRwC\",\"specialEventContainer\":\"rOxDc\",\"headingLarge\":\"_8pnV\",\"heading\":\"JXVBH\"};","import * as React from 'react';\n\nimport { Core } from 'libs/common/core';\nimport { DateHelper } from 'libs/common/react/utils/DateHelper';\nimport { PortalHelper } from 'libs/common/react/utils/PortalHelper';\n\nimport { ComingSoonTag } from 'libs/shared/apps/calendar/components/coming-soon-tag/ComingSoonTag';\nimport { GenericCalendarDate } from 'libs/shared/apps/calendar/components/generic-calendar-date/GenericCalendarDate';\nimport { CalendarTheme } from 'libs/shared/apps/calendar/interfaces/CalendarTheme';\nimport { ActionOptions, Actions } from 'libs/shared/components/actions/Actions';\nimport { BackButton } from 'libs/shared/components/back-button/BackButton';\nimport { LazyImage } from 'libs/shared/components/lazy-image/LazyImage';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { BG_COLOUR_CLASS_NAMES } from 'libs/shared/constants/ColourClassNames';\nimport { ImageMinDimensions } from 'libs/shared/constants/ImageSizes';\nimport { BannerPortalContext } from 'libs/shared/context/BannerPortalContext';\nimport { ImageSize, ImageType, ResizeType } from 'libs/shared/enums/Images';\nimport { useBreakpoints } from 'libs/shared/hooks/useBreakpoints';\nimport { Banner, CalendarEvent, Logo } from 'libs/shared/interfaces';\nimport { getBgColorClass } from 'libs/shared/utils/getBgColorClass';\nimport { ImageHelper, ImageOptions } from 'libs/shared/utils/ImageHelper';\n\nimport styles from './banner-header.scss';\n\nconst RATIO = `${ImageMinDimensions[ImageType.Banners].width}:${ImageMinDimensions[ImageType.Banners].height}`;\nconst DEFAULT_WIDTH = 1200; // This is ImageSize.Large for a Banner.\nconst LARGE_SCREEN_WIDTH = 1920;\n\nfunction useGetImageWidth(): number {\n const breakpoints = useBreakpoints();\n\n if (breakpoints.xxl)\n return LARGE_SCREEN_WIDTH;\n\n return DEFAULT_WIDTH;\n}\n\nfunction getSizeClass(heading: string): string {\n if (heading.length < 160)\n return 'h1';\n\n return styles.headingLarge;\n}\n\ninterface BannerHeaderProps {\n heading: string;\n banner?: Banner;\n bannerClassName?: string;\n imageCdnUrl?: string;\n logo?: Logo;\n logoBgColour?: string;\n actions?: ActionOptions[];\n specialEvent?: CalendarEvent;\n backButtonAppLink?: Core.AppLink;\n backButtonText?: string;\n backButtonClasses?: string;\n sortComponent?: JSX.Element;\n blockColourClass?: string;\n actionsDropdownClassName?: string;\n detailsComponent?: () => React.ReactElement;\n imageOptions?: ImageOptions;\n showComingSoon?: boolean;\n alignLogoLeft?: boolean;\n calendarTheme?: CalendarTheme;\n}\n\nconst namespace = 'shared.bannerHeader';\n\nexport const BannerHeader = React.memo(function(props: React.PropsWithChildren<BannerHeaderProps>): React.ReactElement {\n const { heading, banner, imageCdnUrl, actions, sortComponent, blockColourClass, specialEvent } = props;\n\n const portalContainerContext = React.useContext(BannerPortalContext);\n\n const imageWidth = useGetImageWidth();\n\n const specialEventIsToday = React.useMemo(() => {\n if (!specialEvent || props.showComingSoon)\n return false;\n\n const today = DateHelper.format(new Date(), 'YYYY-MM-DD');\n\n if (!specialEvent.endDate)\n return specialEvent.startDate === today;\n\n return specialEvent.startDate <= today && specialEvent.endDate >= today;\n }, [specialEvent]);\n\n function getSpecialEventMonthText(specialEvent: CalendarEvent): string {\n if (!specialEvent.endDate)\n return DateHelper.format(specialEvent.startDate, 'MMMM');\n\n if (DateHelper.isSame(specialEvent.startDate, specialEvent.endDate, 'month'))\n return DateHelper.format(specialEvent.startDate, 'MMMM');\n\n return `${DateHelper.format(specialEvent.startDate, 'MMM')} - ${DateHelper.format(specialEvent.endDate, 'MMM')}`;\n }\n\n const imageOptions = props.imageOptions || {\n width: imageWidth,\n ratio: RATIO,\n resizeType: ResizeType.Cover\n };\n\n const url = !!banner && !!imageCdnUrl && ImageHelper.createBannerUrl(banner, {\n fallbackBaseUrl: imageCdnUrl,\n fallbackCategoryName: heading,\n type: ImageType.Banners\n }, imageOptions);\n\n const containerProps: React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement> = {\n className: `banner banner-header ${props.bannerClassName}`,\n style: url ? { backgroundImage: `url('${url}')` } : {}\n };\n\n if (!banner && blockColourClass) {\n delete containerProps.style;\n containerProps.className += ` ${blockColourClass}`;\n }\n\n const DetailsComponent = props.detailsComponent;\n\n const logoFallbackBgClassName = getBgColorClass(props.heading, BG_COLOUR_CLASS_NAMES);\n\n return PortalHelper.renderInPortalIfExists(\n // \"banner\" is used in playlists in Online. banner-header is used by all other projects\n <header {...containerProps}>\n <div className={`container ${styles.container} position-relative inner-banner`}>\n {props.backButtonAppLink && (\n <div className='pt-3'>\n <BackButton\n appLink={props.backButtonAppLink}\n backToName={props.backButtonText}\n extraClasses={props.backButtonClasses}\n color='white'\n />\n </div>\n )}\n \n <div className={`${props.alignLogoLeft ? 'position-absolute top-50 start-0 translate-middle-y w-100 ps-4' : `${styles.bannerContent} px-2 ${props.logo?.url ? styles.bannerContentWithLogo : ''}`}`}>\n {!!specialEvent && (\n <div className={`position-relative ${styles.specialEventContainer}`}>\n <GenericCalendarDate\n body={{\n type: specialEvent.endDate ? 'range' : 'day',\n text: specialEvent.endDate\n ? `${DateHelper.format(specialEvent.startDate, 'DD')}-${DateHelper.format(specialEvent.endDate, 'DD')}`\n : DateHelper.format(specialEvent.startDate, 'DD')\n }}\n month={getSpecialEventMonthText(specialEvent)}\n theme={props.calendarTheme}\n />\n </div>\n )}\n <div>\n {specialEventIsToday && (\n <div className='rounded-pill py-1 px-2 my-1 me-1 fw-semibold bg-light-blue lh-1 d-inline-block'>\n <Text namespace={namespace} phrase='onToday' />\n </div>\n )}\n {props.showComingSoon && (\n <ComingSoonTag className='pe-2 fw-semibold mb-1 rounded-pill justify-content-start text-nowrap' />\n )}\n <div className='d-flex align-items-center'>\n {props.alignLogoLeft && props.logo?.url &&\n <div className={`${styles.logoContainerLeft} d-none d-md-block rounded-circle overflow-hidden me-3 ${logoFallbackBgClassName}`}>\n <LazyImage\n src={ImageHelper.createUrl(props.logo?.url, { size: ImageSize.Medium })}\n style={{ backgroundColor: props.logoBgColour }}\n />\n </div>\n }\n <h1 className={`text-white text-shadow pe-3 position-static ${styles.heading} ${getSizeClass(heading)} ${props.alignLogoLeft ? 'w-50' : ''}`}>\n {heading}\n {DetailsComponent && <DetailsComponent />}\n </h1>\n </div>\n </div>\n {!!actions && (\n <div className={styles.actionsContainer}>\n <Actions\n actions={actions}\n sortComponent={sortComponent}\n actionsDropdownClassName={props.actionsDropdownClassName}\n />\n </div>\n )}\n </div>\n {!props.alignLogoLeft && !!props.logo?.url &&\n <div className={styles.logoContainer}>\n <img\n src={ImageHelper.createUrl(props.logo.url, { size: ImageSize.Medium })}\n className='rounded-circle'\n />\n </div>\n }\n </div>\n </header>,\n portalContainerContext?.container\n );\n}, (prevProps, nextProps): boolean => (\n prevProps.actions === nextProps.actions\n && prevProps.heading === nextProps.heading\n && prevProps.logo?.url === nextProps.logo?.url\n));\n\nexport function PartialBannerHeader(): JSX.Element {\n const portalContainerContext = React.useContext(BannerPortalContext);\n\n return PortalHelper.renderInPortalIfExists(\n <div className={`partial-banner partial-loading-background ${styles.banner}`} />,\n portalContainerContext?.container\n );\n}","import React from 'react';\n\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport { SvgContainer } from '../svg-container/SvgContainer';\n\nimport styles from './caret.scss';\n\ntype CaretDirection = 'left' | 'right' | 'up' | 'down';\n\n\nconst getDirectionClass = (direction: CaretDirection) => {\n switch (direction) {\n case 'up':\n return styles.up;\n case 'down':\n return styles.down;\n case 'right':\n return styles.right;\n case 'left':\n return styles.left;\n }\n};\n\ninterface CaretProps {\n direction?: CaretDirection;\n className?: string;\n}\n\nCaret.defaultProps = {\n direction: 'right'\n};\n\nexport function Caret(props: CaretProps): JSX.Element {\n return (\n <SvgContainer\n svgName={cvSvgLibrary.Caret}\n className={`${getDirectionClass(props.direction)} svg-container d-inline-block ${props.className}`}\n />\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"up\":\"JAT0R\",\"down\":\"ld41u\",\"left\":\"jZTRR\",\"right\":\"HHkPe\"};","import React from 'react';\n\nimport { LocalStorageHelper } from 'libs/common/backbone/utils/LocalStorageHelper';\nimport { Core } from 'libs/common/core';\n\nimport { ActionOptions } from 'libs/shared/components/actions/Actions';\nimport { Caret } from 'libs/shared/components/caret/Caret';\nimport { DivButton } from 'libs/shared/components/div-button/DivButton';\nimport { LibraryFolder } from 'libs/shared/components/library-folder/LibraryFolder';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { useBreakpoints } from 'libs/shared/hooks/useBreakpoints';\nimport { Folder } from 'libs/shared/interfaces';\n\nconst namespace = 'libraries.folderList';\n\nconst EXPANDED_FOLDERS_KEY = 'has:expanded:library:folders';\n\nfunction useGetFolderLimit(): number {\n const breakpoints = useBreakpoints();\n\n if (breakpoints.xxl || breakpoints.xl || breakpoints.lg)\n return 6;\n\n if (breakpoints.md)\n return 4;\n\n return 3;\n}\n\ninterface FolderListProps {\n folders: Folder[];\n getAppLink: (folder: Folder) => Core.AppLink;\n expandFolders?: boolean;\n showHeading?: boolean;\n getFolderActions?: (f: Folder) => ActionOptions[];\n drag?: boolean;\n drop?: boolean;\n extraButtons?: JSX.Element;\n}\n\nFolderList.defaultProps = {\n showHeading: true\n};\n\nexport function FolderList(props: FolderListProps): JSX.Element {\n const [ _hasExpandedFolders, setHasExpandedFolders ] = React.useState(\n LocalStorageHelper.get(EXPANDED_FOLDERS_KEY) || false\n );\n\n const hasExpandedFolders = props.expandFolders || _hasExpandedFolders;\n\n const folderLimit = useGetFolderLimit();\n\n function onToggleFolder(): void {\n setHasExpandedFolders(!hasExpandedFolders);\n LocalStorageHelper.set(EXPANDED_FOLDERS_KEY, !hasExpandedFolders);\n }\n\n const displayableFolders = hasExpandedFolders ? props.folders : props.folders.slice(0, folderLimit);\n\n const canToggleCollapsedView = props.folders.length > folderLimit && !props.expandFolders;\n\n return (\n <>\n <div className='d-flex justify-content-between align-items-center'>\n {props.showHeading &&\n <DivButton\n className={`d-inline-flex align-items-center mb-2 px-2 ${!canToggleCollapsedView ? 'cursor-default' : ''}`}\n onClick={onToggleFolder}\n >\n {canToggleCollapsedView && (\n <Caret direction={hasExpandedFolders ? 'down' : 'right'} />\n )}\n <h2 className='h4 mb-0'>\n <Text namespace={namespace} phrase='folders' options={{ count: props.folders.length }} />\n </h2>\n </DivButton>\n }\n\n {!!(!hasExpandedFolders && canToggleCollapsedView) && (\n <div className='d-flex justify-content-end justify-self-end px-2'>\n <DivButton onClick={onToggleFolder} className='text-dark hover-text-underline d-inline-block'>\n <Text namespace={namespace} phrase='seeAll' options={{ count: props.folders.length }} />\n </DivButton>\n </div>\n )}\n {!!(hasExpandedFolders && canToggleCollapsedView) && (\n <div className='d-flex justify-content-end justify-self-end px-2'>\n <DivButton onClick={onToggleFolder} className='text-dark hover-text-underline d-inline-block'>\n <Text namespace={namespace} phrase='seeLess' />\n </DivButton>\n </div>\n )}\n\n {props.extraButtons ? props.extraButtons : <></>}\n </div>\n\n <div className='row mx-1'>\n {displayableFolders.map(f => (\n <div key={f.id} className='col-4 col-md-3 col-lg-2 px-1 pb-3'>\n <LibraryFolder\n folder={f}\n getAppLink={props.getAppLink}\n getFolderActions={props.getFolderActions}\n drag={props.drag}\n drop={props.drop}\n />\n </div>\n ))}\n </div>\n </>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"partialFolderHeading\":\"dhbsL\",\"partialFolderThumbnail\":\"CI9vk\",\"partialFolderName\":\"l0Nll\"};","import React from 'react';\n\nimport styles from './partial-folder-list.scss';\n\nconst PartialFolder = () => (\n <div className='col-4 col-md-3 col-lg-2 px-1 pb-3'>\n <div className={`${styles.partialFolderThumbnail} partial-loading-background rounded-top-lg`} />\n <div className={`${styles.partialFolderName} partial-loading-background border-bottom rounded-bottom-lg font-size-normal mb-0 p-2`}>\n \n </div>\n </div>\n);\n\nexport function PartialFolderList({ count = 3 }: { count?: number; }): JSX.Element {\n return (\n <>\n <div className={`${styles.partialFolderHeading} h4 mb-2 partial-loading-background`}> </div>\n <div className='row mx-n1'>\n {Array(count).fill(null).map((_, i) => <PartialFolder key={i} />)}\n </div>\n </>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"actions\":\"cN3nB\",\"actionsContainer\":\"xM37V\",\"ownerLogo\":\"g3JFo\",\"dropStyle\":\"kvCLS\",\"dragStyle\":\"md9Na\"};","import React from 'react';\n\nimport { UrlHelper } from 'libs/common/backbone/utils/UrlHelper';\nimport { Core } from 'libs/common/core';\n\nimport { AnalyticsOptions, EntityType, HashObject, UserAction } from 'libs/analytics/interfaces';\n\nimport { ActionOptions, Actions } from 'libs/shared/components/actions/Actions';\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { DragDropMoveWrapper } from 'libs/shared/components/drag-drop-move/DragDropMoveWrapper';\nimport { BaseImage } from 'libs/shared/components/image/BaseImage';\nimport { ImageFallback, ImageFallbackType } from 'libs/shared/components/image/ImageFallback';\nimport { ImageSize, ImageType } from 'libs/shared/enums/Images';\nimport { Folder } from 'libs/shared/interfaces';\n\nimport styles from './library-folder.scss';\n\ninterface LibraryFolderProps {\n folder: Folder;\n showOwnerLogo?: boolean;\n drag?: boolean;\n drop?: boolean;\n getAppLink: (f: Folder) => Core.AppLink;\n getFolderActions?: (f: Folder) => ActionOptions[];\n analyticsOptions?: AnalyticsOptions;\n analyticsData?: HashObject;\n}\n\nexport function LibraryFolder(props: LibraryFolderProps): JSX.Element {\n const thumbnailUrl = props.folder.thumbnail\n ? UrlHelper.urlBuilder(props.folder.thumbnail.url, { size: ImageSize.Small })\n : null;\n\n const owner = props.folder?.libraries?.data?.[0]?.owner;\n const ownerLogoUrl = props.showOwnerLogo && !!owner?.logo?.url\n ? UrlHelper.urlBuilder(owner.logo.url, { size: ImageSize.Small })\n : null;\n\n const actions = props.getFolderActions?.(props.folder);\n\n const analyticsData = props.analyticsData ? {\n id: props.folder.id.toString(),\n name: props.folder.name,\n ...props.analyticsData\n } : undefined;\n\n const analyticsOptions = props.analyticsOptions ? {\n actionType: UserAction.Click,\n entity: EntityType.Folder,\n\n ...props.analyticsOptions\n } : undefined;\n\n return (\n <DragDropMoveWrapper\n draggable={props.drag && { id: props.folder.id, data: props.folder }}\n droppable={props.drop && { id: props.folder.id, data: props.folder }}\n dropStye={styles.dropStyle}\n dragStyle={styles.dragStyle}\n >\n <div className='position-relative'>\n <AppLink\n className='rounded-3 d-block text-decoration-none'\n appLink={props.getAppLink(props.folder)}\n title={props.folder.name}\n analyticsData={analyticsData}\n analyticsOptions={analyticsOptions}\n >\n <BaseImage\n data={thumbnailUrl}\n imageType={ImageType.Thumbnails}\n imageClassName='rounded-top-lg'\n >\n <ImageFallback\n name={props.folder.name}\n type={ImageFallbackType.Folder}\n extraClasses='rounded-top-lg'\n />\n </BaseImage>\n <h3 className='bg-white border-start border-end border-bottom rounded-bottom-lg font-size-normal fw-semibold mb-0 p-2'>\n <span className='text-truncate d-block'>{props.folder.name}</span>\n </h3>\n </AppLink>\n {actions?.length &&\n <Actions\n actions={actions}\n className={styles.actionsContainer}\n actionsDropdownClassName={styles.actions}\n // Intentionally setting to the default SVG size\n dropdownToggleSvgSize={null}\n />\n }\n {!!ownerLogoUrl &&\n <img src={ownerLogoUrl} className={`rounded-circle ${styles.ownerLogo}`} alt={`${owner?.name} logo`} title={owner?.name || ''} />\n }\n </div>\n </DragDropMoveWrapper>\n );\n}","import { BaseError } from 'libs/common/backbone/core/BaseError';\nimport { HttpStatus } from 'libs/common/backbone/enums/HttpStatus';\nimport { Xhr } from 'libs/common/backbone/interfaces';\nimport { Core } from 'libs/common/core';\n\nimport { NotFoundError } from 'libs/shared/errors/general/not-found/NotFoundError';\nimport { PrivateResourceError } from 'libs/shared/errors/general/private-resource/PrivateResourceError';\nimport { RegionLockedResourceError } from 'libs/shared/errors/general/region-locked-resource/RegionLockedResourceError';\nimport { UnspecifiedError } from 'libs/shared/errors/general/unspecified-error/UnspecifiedError';\nimport { VideoTypes } from 'libs/shared/interfaces';\n\nexport interface HttpErrorMap {\n notFound?: new () => BaseError;\n forbidden?: {\n rating?: new (description: string) => BaseError;\n yearLevel?: new (description: string) => BaseError;\n region?: new () => BaseError;\n privacy?: new (video?: VideoTypes) => BaseError;\n };\n badRequest?: new () => BaseError;\n internalServerError?: new () => BaseError;\n}\n\nexport type IgnoreHttpErrorMap = {\n [key in keyof HttpErrorMap]: boolean;\n};\n\nconst defaultErrors: HttpErrorMap = {\n notFound: NotFoundError,\n forbidden: {\n rating: PrivateResourceError,\n yearLevel: PrivateResourceError,\n region: RegionLockedResourceError,\n privacy: PrivateResourceError\n },\n badRequest: UnspecifiedError,\n internalServerError: UnspecifiedError\n};\n\nexport function handleHttpError(\n info: HttpStatus | Xhr,\n customErrorMap: HttpErrorMap = {},\n /**\n * Prevent certain errors in the errorMap from being thrown\n * so that you may implement your own handler\n */\n ignoreMap: IgnoreHttpErrorMap = {}\n): void {\n if (!info)\n return;\n\n let statusCode: HttpStatus;\n\n if (typeof(info) === 'number') {\n statusCode = info;\n } else {\n statusCode = info.status;\n }\n\n const errorMap = {\n ...defaultErrors,\n ...customErrorMap\n };\n\n if (!statusCode)\n return;\n\n if (!Core.ErrorHelper.isStatusCodeError(statusCode))\n return;\n\n if (statusCode === HttpStatus.InternalServer) {\n if (!ignoreMap.internalServerError)\n Core.ErrorHelper.throw(new UnspecifiedError());\n return;\n }\n\n if (statusCode === HttpStatus.NotFound) {\n if (!ignoreMap.notFound)\n Core.ErrorHelper.throw(new errorMap.notFound());\n return;\n }\n\n if (statusCode === HttpStatus.Forbidden) {\n /**\n * TODO: Work out how to go about handling all forbidden errors, such as region locking, year levels,\n * ratings, and privacy.\n */\n if (!ignoreMap.forbidden)\n Core.ErrorHelper.throw(new errorMap.forbidden.privacy());\n return;\n }\n\n if (!ignoreMap.badRequest)\n Core.ErrorHelper.throw(new errorMap.badRequest());\n}\n\nexport function handleXhrError(xhr: Xhr, customErrorMap?: HttpErrorMap): void {\n handleHttpError(xhr.status, customErrorMap);\n}","import { useEffect } from 'react';\n\nimport { Flight } from 'libs/common/flight';\n\nimport { handleHttpError, HttpErrorMap, IgnoreHttpErrorMap } from 'libs/shared/errors/handlers/HttpErrorHandlers';\n\nfunction generateCacheKey(flightObjs: Array<Flight.Response<any>>): string {\n return flightObjs.map(obj => obj.statusCode).join(':');\n}\n\n// TODO: Change this to just `useHandleHttpError` and only accept a status code.\nexport function useHandleObjectError(\n _flightObjs: Flight.Response<any> | Array<Flight.Response<any>>,\n customErrors?: HttpErrorMap,\n ignoreErrors?: IgnoreHttpErrorMap\n): void {\n const flightObjs = Array.isArray(_flightObjs) ? _flightObjs : [_flightObjs];\n\n useEffect(() => {\n flightObjs.forEach(obj => {\n handleHttpError(obj.statusCode, customErrors, ignoreErrors);\n });\n }, [ generateCacheKey(flightObjs), customErrors, ignoreErrors ]);\n}","import { Flight } from 'libs/common/flight';\n\nimport { LibraryRequests } from 'libs/shared/flight-requests/LibraryRequests';\nimport { useFetchAll } from 'libs/shared/hooks/UseFetchAll';\nimport { SelectAllPagesResult, useSelectAllPages } from 'libs/shared/hooks/UseSelectAllPages';\nimport { Folder } from 'libs/shared/interfaces';\n\nexport function useFetchAllChildFolders(parentId?: string): SelectAllPagesResult<Folder> {\n const fetch = Flight.useGetFetch();\n\n function getRequest(cursor?: string): Flight.Request {\n return LibraryRequests.childFolders(parentId, cursor);\n }\n \n function fetchNext(cursor?: string): void {\n fetch(getRequest(cursor));\n }\n\n useFetchAll(!!parentId && getRequest, !!parentId && fetchNext);\n\n return (useSelectAllPages<Folder>(!!parentId && ((cursor?: string) => getRequest(cursor).key)));\n}","import React from 'react';\n\nimport { Core } from 'libs/common/core';\nimport { Flight } from 'libs/common/flight';\n\nimport { MasterObjectTypes } from 'libs/shared/enums/MasterObjectTypes';\nimport { NotFoundError } from 'libs/shared/errors/general/not-found/NotFoundError';\nimport { Library } from 'libs/shared/interfaces';\n\n/**\n * This hook prevents the libraries UI to be used for anything \n * other than customer libraries i.e Hosted, Exchange, Workspace etc\n */\nexport function useHandleLibraryType(request: Flight.Response<Library>): void {\n React.useEffect(() => {\n if (!request.hasCompleted || request.hasError)\n return;\n\n if (request.data.type !== MasterObjectTypes.CustomLibrary)\n Core.ErrorHelper.throw(new NotFoundError());\n }, [request.hasCompleted]);\n}","import { Core } from 'libs/common/core';\nimport { TextHelper } from 'libs/common/react/utils/TextHelper';\n\nimport { BG_COLOUR_CLASS_NAMES } from 'libs/shared/constants/ColourClassNames';\nimport { Folder, Library } from 'libs/shared/interfaces';\n\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\n\nexport function getFolderAppLink(libraryId: string, folder: Folder, sort: string): Core.AppLink {\n if (!libraryId || !folder)\n return null;\n\n return {\n application: AppChannels.LIBRARIES,\n action: Actions.Libraries.FOLDER,\n args: [ libraryId, folder.id, TextHelper.slugify(folder.name) ],\n params: {\n sort\n }\n };\n}\n\nexport function getFolderBgColourClass(folder: Folder | Library): string {\n let charCode = 0;\n\n for (let i = 0; i < folder.name?.length ?? 0; i++) {\n charCode += folder.name.charCodeAt(i);\n }\n\n return BG_COLOUR_CLASS_NAMES[charCode % BG_COLOUR_CLASS_NAMES.length];\n}","import React from 'react';\n\nimport { Flight } from 'libs/common/flight';\n\nimport { EntityType, LocationContext, SearchSourceDescriptor, UserAction } from 'libs/analytics/interfaces';\n\nimport { SourceFilterOptions } from 'libs/shared/apps/search/interfaces';\nimport { BannerHeader, PartialBannerHeader } from 'libs/shared/components/banner-header/BannerHeader';\nimport { FolderList } from 'libs/shared/components/folder-list/FolderList';\nimport { PartialFolderList } from 'libs/shared/components/folder-list/partial-loading/PartialFolderList';\nimport { IconButton } from 'libs/shared/components/icon-button/IconButton';\nimport { useFocusSearchBar } from 'libs/shared/components/search-bar/SearchUtils';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { VideoSortType } from 'libs/shared/enums/VideoSortType';\nimport { LibraryRequests } from 'libs/shared/flight-requests/LibraryRequests';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { useHandleObjectError } from 'libs/shared/hooks/UseHandleObjectError';\nimport { useSetPageMetadata } from 'libs/shared/hooks/useSetPageMetadata';\nimport { CurrentUser, Folder, Library } from 'libs/shared/interfaces';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\nimport { VideoSortHelper } from 'libs/shared/utils/VideoSortHelper';\n\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\n\nimport { useFetchAllChildFolders } from 'apps/libraries/hooks/UseFetchAllChildFolders';\nimport { useHandleLibraryType } from 'apps/libraries/hooks/UseHandleLibraryType';\nimport { getFolderAppLink, getFolderBgColourClass } from 'apps/libraries/views/library-folder/LibraryFolderViewUtils';\n\nconst namespace = 'libraries.library';\n\ninterface LibraryViewProps {\n id: string;\n sort?: VideoSortType;\n}\n\nexport function LibraryView(props: LibraryViewProps): JSX.Element {\n const { focusSearchBar } = useFocusSearchBar();\n\n const libraries = Flight.useBasicFetch<Library[]>(LibraryRequests.domainLibraries([ 'customLibrary', 'sharedLibrary' ]));\n const library = Flight.useBasicFetch<Library>(LibraryRequests.library(props.id));\n const libraryFolders = useFetchAllChildFolders(library.data?.categoryTree?.id);\n const user = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n\n const sort = !!user.data && VideoSortHelper.getOrSetSortType(user.data.id, props.sort);\n\n useSetPageMetadata({ title: library.data?.name });\n useHandleObjectError(library);\n useHandleLibraryType(library);\n\n return (\n <>\n {library.data\n ? (\n <BannerHeader\n heading={library.data.name}\n blockColourClass={getFolderBgColourClass(library.data)}\n logo={library.data.owner?.logo}\n />\n ) : <PartialBannerHeader />\n }\n\n {(() => {\n if (!libraryFolders?.items)\n return <div className='mt-3 px-3'><PartialFolderList count={10} /></div>;\n\n if (!libraryFolders.items.length)\n return <></>;\n\n return (\n <div className='mt-3 px-2'>\n <FolderList\n folders={libraryFolders.items}\n getAppLink={(f: Folder) => getFolderAppLink(props.id, f, sort)}\n expandFolders\n extraButtons={\n <IconButton\n svgName={cvSvgLibrary.Search}\n appLink={{\n application: AppChannels.SEARCH,\n action: Actions.Search.HOME,\n params: {\n source: SourceFilterOptions.School\n }\n }}\n className='btn btn-outline-dark mb-3 me-2 d-none d-sm-inline-block'\n onClick={focusSearchBar}\n analyticsData={{}}\n analyticsOptions={{\n entity: EntityType.SearchResults,\n location: LocationContext.Libraries,\n actionType: UserAction.Click,\n descriptor: SearchSourceDescriptor.School\n }}\n >\n <Text namespace={namespace} phrase='searchLibrary' options={{ smartCount: libraries.data?.length ?? 1 }} />\n </IconButton>\n }\n />\n </div>\n );\n })()}\n </>\n );\n}\n"],"names":["namespace","ComingSoonTag","props","Tooltip","title","LanguageService","spanHackClassName","spanHack","className","SvgContainer","svgName","onlyIcon","GenericCalendarDate","AppLink","appLink","getAppLink","theme","border","analyticsData","analyticsOptions","background","label","body","type","getBodyClass","text","month","BackButton","textShadow","backToName","color","extraClasses","backPhrase","colorClass","textShadowClass","size","S","defaultProps","RATIO","width","height","getSizeClass","heading","length","BannerHeader","banner","imageCdnUrl","actions","sortComponent","blockColourClass","specialEvent","portalContainerContext","BannerPortalContext","imageWidth","useBreakpoints","xxl","specialEventIsToday","showComingSoon","today","DateHelper","Date","endDate","startDate","imageOptions","ratio","resizeType","url","ImageHelper","fallbackBaseUrl","fallbackCategoryName","containerProps","bannerClassName","style","backgroundImage","DetailsComponent","detailsComponent","logoFallbackBgClassName","getBgColorClass","PortalHelper","backButtonAppLink","backButtonText","backButtonClasses","alignLogoLeft","logo","getSpecialEventMonthText","calendarTheme","Text","phrase","LazyImage","src","backgroundColor","logoBgColour","Actions","actionsDropdownClassName","container","prevProps","nextProps","PartialBannerHeader","getDirectionClass","direction","Caret","EXPANDED_FOLDERS_KEY","FolderList","breakpoints","_hasExpandedFolders","setHasExpandedFolders","hasExpandedFolders","expandFolders","folderLimit","xl","lg","md","onToggleFolder","displayableFolders","folders","slice","canToggleCollapsedView","showHeading","onClick","options","count","extraButtons","map","f","key","id","folder","getFolderActions","drag","drop","PartialFolder","PartialFolderList","Array","fill","_","i","LibraryFolder","thumbnailUrl","thumbnail","UrlHelper","owner","libraries","data","ownerLogoUrl","showOwnerLogo","toString","name","undefined","actionType","entity","DragDropMoveWrapper","draggable","droppable","dropStye","dragStyle","BaseImage","imageType","imageClassName","ImageFallback","dropdownToggleSvgSize","alt","defaultErrors","notFound","forbidden","rating","yearLevel","region","privacy","badRequest","internalServerError","handleHttpError","info","customErrorMap","ignoreMap","statusCode","status","errorMap","generateCacheKey","flightObjs","obj","join","useHandleObjectError","_flightObjs","customErrors","ignoreErrors","isArray","useEffect","forEach","useFetchAllChildFolders","parentId","fetch","getRequest","cursor","useHandleLibraryType","request","hasCompleted","hasError","getFolderAppLink","libraryId","sort","application","action","args","params","getFolderBgColourClass","charCode","charCodeAt","LibraryView","focusSearchBar","library","libraryFolders","categoryTree","user","items","source","location","descriptor","smartCount"],"sourceRoot":""}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[8675],{11921:(e,t,a)=>{a.d(t,{F:()=>o});var n=a(32735),r=a(35223),l=a(83914);var i=function(e){switch(e){case"up":return"JAT0R";case"down":return"ld41u";case"right":return"HHkPe";case"left":return"jZTRR"}};function o(e){return n.createElement(l.x,{svgName:r.vn.Caret,className:"".concat(i(e.direction)," svg-container d-inline-block ").concat(e.className)})}o.defaultProps={direction:"right"}},39958:(e,t,a)=>{a.d(t,{$:()=>p});var n=a(32735),r=a(57900),l=a(11921),i=a(11607),o=a(20710),c=a(83345),s=a(79967);function d(e,t){(null==t||t>e.length)&&(t=e.length);for(var a=0,n=Array(t);a<t;a++)n[a]=e[a];return n}var u="libraries.folderList",m="has:expanded:library:folders";function p(e){var t,a,p,v=(a=n.useState(r.SG.get(m)||!1),p=2,function(e){if(Array.isArray(e))return e}(a)||function(e,t){var a=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=a){var n,r,l,i,o=[],c=!0,s=!1;try{if(l=(a=a.call(e)).next,0===t){if(Object(a)!==a)return;c=!1}else for(;!(c=(n=l.call(a)).done)&&(o.push(n.value),o.length!==t);c=!0);}catch(e){s=!0,r=e}finally{try{if(!c&&null!=a.return&&(i=a.return(),Object(i)!==i))return}finally{if(s)throw r}}return o}}(a,p)||function(e,t){if(e){if("string"==typeof e)return d(e,t);var a={}.toString.call(e).slice(8,-1);return"Object"===a&&e.constructor&&(a=e.constructor.name),"Map"===a||"Set"===a?Array.from(e):"Arguments"===a||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(a)?d(e,t):void 0}}(a,p)||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.")}()),g=v[0],f=v[1],h=e.expandFolders||g,b=(t=(0,s.k)()).xxl||t.xl||t.lg?6:t.md?4:3;function y(){f(!h),r.SG.set(m,!h)}var E=h?e.folders:e.folders.slice(0,b),k=e.folders.length>b&&!e.expandFolders;return n.createElement(n.Fragment,null,n.createElement("div",{className:"d-flex justify-content-between align-items-center"},e.showHeading&&n.createElement(i.L,{className:"d-inline-flex align-items-center mb-2 px-2 ".concat(k?"":"cursor-default"),onClick:y},k&&n.createElement(l.F,{direction:h?"down":"right"}),n.createElement("h2",{className:"h4 mb-0"},n.createElement(c.x,{namespace:u,phrase:"folders",options:{count:e.folders.length}}))),!(h||!k)&&n.createElement("div",{className:"d-flex justify-content-end justify-self-end px-2"},n.createElement(i.L,{onClick:y,className:"text-dark hover-text-underline d-inline-block"},n.createElement(c.x,{namespace:u,phrase:"seeAll",options:{count:e.folders.length}}))),!(!h||!k)&&n.createElement("div",{className:"d-flex justify-content-end justify-self-end px-2"},n.createElement(i.L,{onClick:y,className:"text-dark hover-text-underline d-inline-block"},n.createElement(c.x,{namespace:u,phrase:"seeLess"}))),e.extraButtons?e.extraButtons:n.createElement(n.Fragment,null)),n.createElement("div",{className:"row mx-1"},E.map((function(t){return n.createElement("div",{key:t.id,className:"col-4 col-md-3 col-lg-2 px-1 pb-3"},n.createElement(o.y,{folder:t,getAppLink:e.getAppLink,getFolderActions:e.getFolderActions,drag:e.drag,drop:e.drop}))}))))}p.defaultProps={showHeading:!0}},65403:(e,t,a)=>{a.d(t,{i:()=>i});var n=a(32735);const r={partialFolderHeading:"dhbsL",partialFolderThumbnail:"CI9vk",partialFolderName:"l0Nll"};var l=function(){return n.createElement("div",{className:"col-4 col-md-3 col-lg-2 px-1 pb-3"},n.createElement("div",{className:"".concat(r.partialFolderThumbnail," partial-loading-background rounded-top-lg")}),n.createElement("div",{className:"".concat(r.partialFolderName," partial-loading-background border-bottom rounded-bottom-lg font-size-normal mb-0 p-2")}," "))};function i(e){var t=e.count,a=void 0===t?3:t;return n.createElement(n.Fragment,null,n.createElement("div",{className:"".concat(r.partialFolderHeading," h4 mb-2 partial-loading-background")}," "),n.createElement("div",{className:"row mx-n1"},Array(a).fill(null).map((function(e,t){return n.createElement(l,{key:t})}))))}},20710:(e,t,a)=>{a.d(t,{y:()=>p});var n=a(32735),r=a(97395),l=a(65858),i=a(83657),o=a(36848),c=a(88711),s=a(75163),d=a(5465),u=a(54610);const m={actions:"cN3nB",actionsContainer:"xM37V",ownerLogo:"g3JFo",dropStyle:"kvCLS",dragStyle:"md9Na"};function p(e){var t,a,p,v,g,f,h=e.folder.thumbnail?r._.urlBuilder(e.folder.thumbnail.url,{size:u.h2.Small}):null,b=null===(v=null===(p=null===(a=null===(t=e.folder)||void 0===t?void 0:t.libraries)||void 0===a?void 0:a.data)||void 0===p?void 0:p[0])||void 0===v?void 0:v.owner,y=e.showOwnerLogo&&(null===(g=null==b?void 0:b.logo)||void 0===g?void 0:g.url)?r._.urlBuilder(b.logo.url,{size:u.h2.Small}):null,E=null===(f=e.getFolderActions)||void 0===f?void 0:f.call(e,e.folder),k=e.analyticsData?Object.assign({id:e.folder.id.toString(),name:e.folder.name},e.analyticsData):void 0,x=e.analyticsOptions?Object.assign({actionType:l.Vw.Click,entity:l.py.Folder},e.analyticsOptions):void 0;return n.createElement(c.j,{draggable:e.drag&&{id:e.folder.id,data:e.folder},droppable:e.drop&&{id:e.folder.id,data:e.folder},dropStye:m.dropStyle,dragStyle:m.dragStyle},n.createElement("div",{className:"position-relative"},n.createElement(o.F,{className:"rounded-3 d-block text-decoration-none",appLink:e.getAppLink(e.folder),title:e.folder.name,analyticsData:k,analyticsOptions:x},n.createElement(s.Z,{data:h,imageType:u.__.Thumbnails,imageClassName:"rounded-top-lg"},n.createElement(d.oy,{name:e.folder.name,type:d.mS.Folder,extraClasses:"rounded-top-lg"})),n.createElement("h3",{className:"bg-white border-start border-end border-bottom rounded-bottom-lg font-size-normal fw-semibold mb-0 p-2"},n.createElement("span",{className:"text-truncate d-block"},e.folder.name))),(null==E?void 0:E.length)&&n.createElement(i.e,{actions:E,className:m.actionsContainer,actionsDropdownClassName:m.actions,dropdownToggleSvgSize:null}),!!y&&n.createElement("img",{src:y,className:"rounded-circle ".concat(m.ownerLogo),alt:"".concat(null==b?void 0:b.name," logo"),title:(null==b?void 0:b.name)||""})))}},98860:(e,t,a)=>{a.d(t,{P:()=>o});var n=a(20354),r=a(98064),l=a(3010),i=a(45719);function o(e){var t=n.a.useGetFetch();function a(t){return r.D.childFolders(e,t)}return(0,l.i)(!!e&&a,!!e&&function(e){t(a(e))}),(0,i.P)(!!e&&function(e){return a(e).key})}},21325:(e,t,a)=>{a.d(t,{o:()=>o});var n=a(32735),r=a(81886),l=a(96560),i=a(67058);function o(e){n.useEffect((function(){e.hasCompleted&&!e.hasError&&e.data.type!==l.r.CustomLibrary&&r.Q.Ry.throw(new i.d)}),[e.hasCompleted])}},3435:(e,t,a)=>{a.r(t),a.d(t,{LibraryFolderView:()=>le});var n=a(32735),r=a(70680),l=a(23481),i=a(20354),o=a(65858),c=a(43500),s=a(44522),d=a(49935),u=a(39958),m=a(10874),p=a(4201),v=a(83345),g=a(79718),f=a(51365),h=a(94644),b=a(39151),y=a(1666),E=a(98064),k=a(31949),x=a(1575),F=a(69883),L=a(63719),S=a(91286),N=a(60115),C=a(79612),w=a(35223),A=a(68140),I=a(14070),O=a(97291),j=a(51855),P=a(10671),T=a(27638),V=a(44110),B=a(97816),R=a(71020),G=a(13231),D=a(183),H=a(22902),U=a(10741),_=a(22490),M=a(23232),Z=a(99742),W="libraries.libraryFolderEmptyState";function z(){return n.createElement(v.D.Provider,{value:W},n.createElement(M.u,null,n.createElement(M.u.Image,{src:Z.W.EmptyStates.Libraries.FOLDER}),n.createElement(M.u.Heading,null,n.createElement(v.x,{phrase:"heading"})),n.createElement(M.u.Info,null,n.createElement(v.x,{phrase:"info"}))))}var Q=a(82431),J="libraries.libraryFolderVideos";function $(e){var t,a=(0,p.of)().focusSearchBar,r=(0,H.T)().hasPermissions;return e.videos.length||e.hasSubFolders?e.videos.length?n.createElement("div",null,e.hasSubFolders&&n.createElement("div",{className:"d-flex justify-content-between align-items-center"},n.createElement("h2",{className:"h4 mb-0"},n.createElement(v.x,{namespace:J,phrase:"videos"})),n.createElement("div",{className:"d-flex"},n.createElement(m.h,{svgName:w.vn.Search,appLink:{application:O.O.SEARCH,action:I.e.Search.HOME,params:{source:c.fi.School}},className:"btn btn-outline-dark d-none d-sm-inline-block",onClick:a,analyticsData:{},analyticsOptions:{entity:o.py.SearchResults,location:o.LZ.Libraries,actionType:o.Vw.Click,descriptor:o.Bk.School}},n.createElement(v.x,{namespace:J,phrase:"searchLibrary",options:{smartCount:null===(t=e.libraries)||void 0===t?void 0:t.length}})),n.createElement(g.p,{variant:"outline-dark",type:e.sort,getSortAppLink:e.getSortAppLink,analyticsOptions:{location:o.LZ.VideoListHeader,entity:o.py.Video,actionType:o.Vw.Sort,workflowPhase:o.eu.Complete}}))),n.createElement(G.E4,{videos:e.videos,yearGroups:e.yearGroups,getVideoAppLink:function(t,a){var n;return _.W.getAppLink(t,Object.assign(Object.assign({},a),{context:D.Q.Folder,contextId:e.folderId,includeContext:null===(n=e.currentUser)||void 0===n?void 0:n.isAuthenticated}))},getSubTextAppLink:function(e){return Q.j.getSeriesAppLink(e.series)},setFavourite:e.setFavourite,canFavourite:e.canFavourite,presentationAudiences:e.audiences,hasPermissions:r,getPreviewQuestionsAppLink:function(e){return U.j.getPreviewQuestionsAppLink(e)},imageCdnUrl:e.imageCdnUrl,isPlugin:e.isPlugin,getClassroomGuideAppLink:_.W.getClassroomGuideAppLink,getInteractiveGuidanceAppLink:_.W.getInteractiveGuidanceAppLink,getResourceGuidanceAppLink:_.W.getResourceGuidanceAppLink}),(e.hasMore||e.isFetching)&&n.createElement(R._,{isFetching:e.isFetching,fetchNext:e.fetchNext,nextCursor:e.nextCursor})):n.createElement(n.Fragment,null):n.createElement(z,null)}var K=a(98860),q=a(21325),X=a(65403),Y=a(74696);const ee={subheading:"IJZtA"};function te(){return n.createElement(n.Fragment,null,n.createElement("div",{className:"m-3"},n.createElement(X.i,null)),n.createElement("div",{className:"mx-3 mb-3"},n.createElement("div",{className:"".concat(ee.subheading," partial-loading-background mb-2")}),n.createElement(Y.S,null)))}var ae=a(8406),ne="libraries.libraryFolder",re=l.T.encloseNamespace(ne);function le(e){var t,a,l,R,G,D,H,U,_,M,Z=(0,r.I0)(),W=(0,F.Z)(),z=(0,p.of)().focusSearchBar,Q=(0,j.G)().isPlugin,J=i.a.useBasicFetch(E.D.domainLibraries(["customLibrary","sharedLibrary"])),X=i.a.useBasicFetch(E.D.library(e.libraryId)),Y=i.a.useBasicFetch(E.D.folder(e.folderId)),ee=(0,K.P)(e.folderId),le=i.a.useBasicFetch(k.N.currentUser()),ie=i.a.useBasicFetch(b.L.config()),oe=i.a.useBasicFetch((null===(t=le.data)||void 0===t?void 0:t.isAuthenticated)&&y.h.yearGroups(le.data.customerId)),ce=(0,P._)({location:P.i.VideoItem}),se=(0,T.u)(o.LZ.VideoThumbnail),de=se.setFavourite,ue=se.canFavourite,me=(0,L.h)({name:null===(a=Y.data)||void 0===a?void 0:a.name}),pe=(0,V.i)();(0,C.M)({title:null===(l=Y.data)||void 0===l?void 0:l.name}),(0,S.v)([X,Y]),(0,q.o)(X);var ve=!!le.data&&A.d.getOrSetSortType(le.data.id,e.sort),ge=(0,N.K)(Ee,ke,(function(e,t){if(1===e)return(0,h.r)(t);W.error(re("error"))})),fe=ge.items,he=ge.hasMore,be=ge.isFetching,ye=ge.nextCursor;function Ee(t){return x.R.collectionVideos(e.folderId,ve,t)}function ke(e){return i.a.getFetch(Z)(Ee(e))}(0,B.V)(fe);var xe=!(!ee.hasCompleted||(null===(R=ee.items)||void 0===R?void 0:R.length));return n.createElement(f.M.Provider,{value:ce},X.data&&Y.data&&ie.data?n.createElement(s.p,{heading:Y.data.name,banner:Y.data.banner,imageCdnUrl:ie.data.imageCdnUrl,blockColourClass:(0,ae.W)(Y.data),logo:null===(G=X.data.owner)||void 0===G?void 0:G.logo}):n.createElement(s.v,null),n.createElement("div",{className:"d-flex justify-content-between align-items-center py-3 mx-3 ".concat(xe?"":"border-bottom")},X.data&&Y.data?n.createElement(d.Oo,{breadcrumbs:me}):n.createElement(d.b2,null),n.createElement("div",{className:"d-flex"},(xe||!(null==fe?void 0:fe.length))&&n.createElement(m.h,{svgName:w.vn.Search,appLink:{application:O.O.SEARCH,action:I.e.Search.HOME,params:{source:c.fi.School}},className:"btn btn-outline-dark d-none d-sm-inline-block",onClick:z,analyticsData:{},analyticsOptions:{entity:o.py.SearchResults,location:o.LZ.Libraries,actionType:o.Vw.Click,descriptor:o.Bk.School}},n.createElement(v.x,{namespace:ne,phrase:"searchLibrary",options:{smartCount:null!==(H=null===(D=J.data)||void 0===D?void 0:D.length)&&void 0!==H?H:1}})),xe&&Y.data&&n.createElement(g.p,{variant:"outline-dark",type:ve,getSortAppLink:function(t){return(0,ae.a)(e.libraryId,Y.data,t)},analyticsOptions:{location:o.LZ.VideoListHeader,entity:o.py.Video,actionType:o.Vw.Sort,workflowPhase:o.eu.Complete}}))),fe&&ee?n.createElement(n.Fragment,null,!!(null===(U=ee.items)||void 0===U?void 0:U.length)&&n.createElement("div",{className:"px-2 py-3"},n.createElement(u.$,{folders:ee.items,getAppLink:function(t){return(0,ae.a)(e.libraryId,t,ve)},expandFolders:!fe.length})),n.createElement("div",{className:"px-3 pb-3"},n.createElement($,{folderId:e.folderId,videos:fe,yearGroups:oe.data,hasSubFolders:!!(null===(_=ee.items)||void 0===_?void 0:_.length),setFavourite:de,canFavourite:ue,hasMore:he,isFetching:be,fetchNext:ke,nextCursor:ye,sort:ve,getSortAppLink:function(t){return(0,ae.a)(e.libraryId,Y.data,t)},audiences:pe.data,libraries:J.data,imageCdnUrl:null===(M=ie.data)||void 0===M?void 0:M.imageCdnUrl,isPlugin:Q,currentUser:le.data}))):n.createElement(te,null))}},8406:(e,t,a)=>{a.d(t,{W:()=>c,a:()=>o});var n=a(28400),r=a(7733),l=a(14070),i=a(97291);function o(e,t,a){return e&&t?{application:i.O.LIBRARIES,action:l.e.Libraries.FOLDER,args:[e,t.id,n.m.slugify(t.name)],params:{sort:a}}:null}function c(e){for(var t,a,n=0,l=0;null!==(a=l<(null===(t=e.name)||void 0===t?void 0:t.length))&&void 0!==a&&a;l++)n+=e.name.charCodeAt(l);return r.o[n%r.o.length]}}}]);
|
|
2
|
+
//# sourceMappingURL=8675-8b2f552e9f-lite.chunk.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scripts/8675-8b2f552e9f-lite.chunk.js","mappings":"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","sources":["file:///app/packages/libs/shared/src/components/caret/Caret.tsx","file:///app/packages/libs/shared/src/components/caret/caret.scss","file:///app/packages/libs/shared/src/components/folder-list/FolderList.tsx","file:///app/packages/libs/shared/src/components/folder-list/partial-loading/partial-folder-list.scss","file:///app/packages/libs/shared/src/components/folder-list/partial-loading/PartialFolderList.tsx","file:///app/packages/libs/shared/src/components/library-folder/library-folder.scss","file:///app/packages/libs/shared/src/components/library-folder/LibraryFolder.tsx","file:///app/packages/projects/lite/src/apps/libraries/hooks/UseFetchAllChildFolders.ts","file:///app/packages/projects/lite/src/apps/libraries/hooks/UseHandleLibraryType.ts","file:///app/packages/projects/lite/src/apps/libraries/views/library-folder/empty-state/LibraryFolderEmptyState.tsx","file:///app/packages/projects/lite/src/apps/libraries/components/library-folder-videos/LibraryFolderVideos.tsx","file:///app/packages/projects/lite/src/apps/libraries/views/library-folder/partial-loading/library-folder-partial-loading.scss","file:///app/packages/projects/lite/src/apps/libraries/views/library-folder/partial-loading/LibraryFolderPartialLoading.tsx","file:///app/packages/projects/lite/src/apps/libraries/views/library-folder/LibraryFolderView.tsx","file:///app/packages/projects/lite/src/apps/libraries/views/library-folder/LibraryFolderViewUtils.ts"],"sourcesContent":["import React from 'react';\n\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport { SvgContainer } from '../svg-container/SvgContainer';\n\nimport styles from './caret.scss';\n\ntype CaretDirection = 'left' | 'right' | 'up' | 'down';\n\n\nconst getDirectionClass = (direction: CaretDirection) => {\n switch (direction) {\n case 'up':\n return styles.up;\n case 'down':\n return styles.down;\n case 'right':\n return styles.right;\n case 'left':\n return styles.left;\n }\n};\n\ninterface CaretProps {\n direction?: CaretDirection;\n className?: string;\n}\n\nCaret.defaultProps = {\n direction: 'right'\n};\n\nexport function Caret(props: CaretProps): JSX.Element {\n return (\n <SvgContainer\n svgName={cvSvgLibrary.Caret}\n className={`${getDirectionClass(props.direction)} svg-container d-inline-block ${props.className}`}\n />\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"up\":\"JAT0R\",\"down\":\"ld41u\",\"left\":\"jZTRR\",\"right\":\"HHkPe\"};","import React from 'react';\n\nimport { LocalStorageHelper } from 'libs/common/backbone/utils/LocalStorageHelper';\nimport { Core } from 'libs/common/core';\n\nimport { ActionOptions } from 'libs/shared/components/actions/Actions';\nimport { Caret } from 'libs/shared/components/caret/Caret';\nimport { DivButton } from 'libs/shared/components/div-button/DivButton';\nimport { LibraryFolder } from 'libs/shared/components/library-folder/LibraryFolder';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { useBreakpoints } from 'libs/shared/hooks/useBreakpoints';\nimport { Folder } from 'libs/shared/interfaces';\n\nconst namespace = 'libraries.folderList';\n\nconst EXPANDED_FOLDERS_KEY = 'has:expanded:library:folders';\n\nfunction useGetFolderLimit(): number {\n const breakpoints = useBreakpoints();\n\n if (breakpoints.xxl || breakpoints.xl || breakpoints.lg)\n return 6;\n\n if (breakpoints.md)\n return 4;\n\n return 3;\n}\n\ninterface FolderListProps {\n folders: Folder[];\n getAppLink: (folder: Folder) => Core.AppLink;\n expandFolders?: boolean;\n showHeading?: boolean;\n getFolderActions?: (f: Folder) => ActionOptions[];\n drag?: boolean;\n drop?: boolean;\n extraButtons?: JSX.Element;\n}\n\nFolderList.defaultProps = {\n showHeading: true\n};\n\nexport function FolderList(props: FolderListProps): JSX.Element {\n const [ _hasExpandedFolders, setHasExpandedFolders ] = React.useState(\n LocalStorageHelper.get(EXPANDED_FOLDERS_KEY) || false\n );\n\n const hasExpandedFolders = props.expandFolders || _hasExpandedFolders;\n\n const folderLimit = useGetFolderLimit();\n\n function onToggleFolder(): void {\n setHasExpandedFolders(!hasExpandedFolders);\n LocalStorageHelper.set(EXPANDED_FOLDERS_KEY, !hasExpandedFolders);\n }\n\n const displayableFolders = hasExpandedFolders ? props.folders : props.folders.slice(0, folderLimit);\n\n const canToggleCollapsedView = props.folders.length > folderLimit && !props.expandFolders;\n\n return (\n <>\n <div className='d-flex justify-content-between align-items-center'>\n {props.showHeading &&\n <DivButton\n className={`d-inline-flex align-items-center mb-2 px-2 ${!canToggleCollapsedView ? 'cursor-default' : ''}`}\n onClick={onToggleFolder}\n >\n {canToggleCollapsedView && (\n <Caret direction={hasExpandedFolders ? 'down' : 'right'} />\n )}\n <h2 className='h4 mb-0'>\n <Text namespace={namespace} phrase='folders' options={{ count: props.folders.length }} />\n </h2>\n </DivButton>\n }\n\n {!!(!hasExpandedFolders && canToggleCollapsedView) && (\n <div className='d-flex justify-content-end justify-self-end px-2'>\n <DivButton onClick={onToggleFolder} className='text-dark hover-text-underline d-inline-block'>\n <Text namespace={namespace} phrase='seeAll' options={{ count: props.folders.length }} />\n </DivButton>\n </div>\n )}\n {!!(hasExpandedFolders && canToggleCollapsedView) && (\n <div className='d-flex justify-content-end justify-self-end px-2'>\n <DivButton onClick={onToggleFolder} className='text-dark hover-text-underline d-inline-block'>\n <Text namespace={namespace} phrase='seeLess' />\n </DivButton>\n </div>\n )}\n\n {props.extraButtons ? props.extraButtons : <></>}\n </div>\n\n <div className='row mx-1'>\n {displayableFolders.map(f => (\n <div key={f.id} className='col-4 col-md-3 col-lg-2 px-1 pb-3'>\n <LibraryFolder\n folder={f}\n getAppLink={props.getAppLink}\n getFolderActions={props.getFolderActions}\n drag={props.drag}\n drop={props.drop}\n />\n </div>\n ))}\n </div>\n </>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"partialFolderHeading\":\"dhbsL\",\"partialFolderThumbnail\":\"CI9vk\",\"partialFolderName\":\"l0Nll\"};","import React from 'react';\n\nimport styles from './partial-folder-list.scss';\n\nconst PartialFolder = () => (\n <div className='col-4 col-md-3 col-lg-2 px-1 pb-3'>\n <div className={`${styles.partialFolderThumbnail} partial-loading-background rounded-top-lg`} />\n <div className={`${styles.partialFolderName} partial-loading-background border-bottom rounded-bottom-lg font-size-normal mb-0 p-2`}>\n \n </div>\n </div>\n);\n\nexport function PartialFolderList({ count = 3 }: { count?: number; }): JSX.Element {\n return (\n <>\n <div className={`${styles.partialFolderHeading} h4 mb-2 partial-loading-background`}> </div>\n <div className='row mx-n1'>\n {Array(count).fill(null).map((_, i) => <PartialFolder key={i} />)}\n </div>\n </>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"actions\":\"cN3nB\",\"actionsContainer\":\"xM37V\",\"ownerLogo\":\"g3JFo\",\"dropStyle\":\"kvCLS\",\"dragStyle\":\"md9Na\"};","import React from 'react';\n\nimport { UrlHelper } from 'libs/common/backbone/utils/UrlHelper';\nimport { Core } from 'libs/common/core';\n\nimport { AnalyticsOptions, EntityType, HashObject, UserAction } from 'libs/analytics/interfaces';\n\nimport { ActionOptions, Actions } from 'libs/shared/components/actions/Actions';\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { DragDropMoveWrapper } from 'libs/shared/components/drag-drop-move/DragDropMoveWrapper';\nimport { BaseImage } from 'libs/shared/components/image/BaseImage';\nimport { ImageFallback, ImageFallbackType } from 'libs/shared/components/image/ImageFallback';\nimport { ImageSize, ImageType } from 'libs/shared/enums/Images';\nimport { Folder } from 'libs/shared/interfaces';\n\nimport styles from './library-folder.scss';\n\ninterface LibraryFolderProps {\n folder: Folder;\n showOwnerLogo?: boolean;\n drag?: boolean;\n drop?: boolean;\n getAppLink: (f: Folder) => Core.AppLink;\n getFolderActions?: (f: Folder) => ActionOptions[];\n analyticsOptions?: AnalyticsOptions;\n analyticsData?: HashObject;\n}\n\nexport function LibraryFolder(props: LibraryFolderProps): JSX.Element {\n const thumbnailUrl = props.folder.thumbnail\n ? UrlHelper.urlBuilder(props.folder.thumbnail.url, { size: ImageSize.Small })\n : null;\n\n const owner = props.folder?.libraries?.data?.[0]?.owner;\n const ownerLogoUrl = props.showOwnerLogo && !!owner?.logo?.url\n ? UrlHelper.urlBuilder(owner.logo.url, { size: ImageSize.Small })\n : null;\n\n const actions = props.getFolderActions?.(props.folder);\n\n const analyticsData = props.analyticsData ? {\n id: props.folder.id.toString(),\n name: props.folder.name,\n ...props.analyticsData\n } : undefined;\n\n const analyticsOptions = props.analyticsOptions ? {\n actionType: UserAction.Click,\n entity: EntityType.Folder,\n\n ...props.analyticsOptions\n } : undefined;\n\n return (\n <DragDropMoveWrapper\n draggable={props.drag && { id: props.folder.id, data: props.folder }}\n droppable={props.drop && { id: props.folder.id, data: props.folder }}\n dropStye={styles.dropStyle}\n dragStyle={styles.dragStyle}\n >\n <div className='position-relative'>\n <AppLink\n className='rounded-3 d-block text-decoration-none'\n appLink={props.getAppLink(props.folder)}\n title={props.folder.name}\n analyticsData={analyticsData}\n analyticsOptions={analyticsOptions}\n >\n <BaseImage\n data={thumbnailUrl}\n imageType={ImageType.Thumbnails}\n imageClassName='rounded-top-lg'\n >\n <ImageFallback\n name={props.folder.name}\n type={ImageFallbackType.Folder}\n extraClasses='rounded-top-lg'\n />\n </BaseImage>\n <h3 className='bg-white border-start border-end border-bottom rounded-bottom-lg font-size-normal fw-semibold mb-0 p-2'>\n <span className='text-truncate d-block'>{props.folder.name}</span>\n </h3>\n </AppLink>\n {actions?.length &&\n <Actions\n actions={actions}\n className={styles.actionsContainer}\n actionsDropdownClassName={styles.actions}\n // Intentionally setting to the default SVG size\n dropdownToggleSvgSize={null}\n />\n }\n {!!ownerLogoUrl &&\n <img src={ownerLogoUrl} className={`rounded-circle ${styles.ownerLogo}`} alt={`${owner?.name} logo`} title={owner?.name || ''} />\n }\n </div>\n </DragDropMoveWrapper>\n );\n}","import { Flight } from 'libs/common/flight';\n\nimport { LibraryRequests } from 'libs/shared/flight-requests/LibraryRequests';\nimport { useFetchAll } from 'libs/shared/hooks/UseFetchAll';\nimport { SelectAllPagesResult, useSelectAllPages } from 'libs/shared/hooks/UseSelectAllPages';\nimport { Folder } from 'libs/shared/interfaces';\n\nexport function useFetchAllChildFolders(parentId?: string): SelectAllPagesResult<Folder> {\n const fetch = Flight.useGetFetch();\n\n function getRequest(cursor?: string): Flight.Request {\n return LibraryRequests.childFolders(parentId, cursor);\n }\n \n function fetchNext(cursor?: string): void {\n fetch(getRequest(cursor));\n }\n\n useFetchAll(!!parentId && getRequest, !!parentId && fetchNext);\n\n return (useSelectAllPages<Folder>(!!parentId && ((cursor?: string) => getRequest(cursor).key)));\n}","import React from 'react';\n\nimport { Core } from 'libs/common/core';\nimport { Flight } from 'libs/common/flight';\n\nimport { MasterObjectTypes } from 'libs/shared/enums/MasterObjectTypes';\nimport { NotFoundError } from 'libs/shared/errors/general/not-found/NotFoundError';\nimport { Library } from 'libs/shared/interfaces';\n\n/**\n * This hook prevents the libraries UI to be used for anything \n * other than customer libraries i.e Hosted, Exchange, Workspace etc\n */\nexport function useHandleLibraryType(request: Flight.Response<Library>): void {\n React.useEffect(() => {\n if (!request.hasCompleted || request.hasError)\n return;\n\n if (request.data.type !== MasterObjectTypes.CustomLibrary)\n Core.ErrorHelper.throw(new NotFoundError());\n }, [request.hasCompleted]);\n}","import React from 'react';\n\nimport { EmptyState } from 'libs/shared/components/empty-states/EmptyState';\nimport { LanguageNamespaceContext, Text } from 'libs/shared/components/text/Text';\n\nimport { ImageUrls } from 'shared/constants/ImageUrls';\n\nconst namespace = 'libraries.libraryFolderEmptyState';\n\nexport function LibraryFolderEmptyState(): JSX.Element {\n return (\n <LanguageNamespaceContext.Provider value={namespace}>\n <EmptyState>\n <EmptyState.Image src={ImageUrls.EmptyStates.Libraries.FOLDER} />\n\n <EmptyState.Heading><Text phrase='heading' /></EmptyState.Heading>\n\n <EmptyState.Info><Text phrase='info' /></EmptyState.Info>\n </EmptyState>\n </LanguageNamespaceContext.Provider>\n );\n}","import React from 'react';\n\nimport { Core } from 'libs/common/core';\n\nimport { EntityType, LocationContext, SearchSourceDescriptor, UserAction, WorkflowPhase } from 'libs/analytics/interfaces';\n\nimport { SourceFilterOptions } from 'libs/shared/apps/search/interfaces';\nimport { IconButton } from 'libs/shared/components/icon-button/IconButton';\nimport { InfiniteScrollFooter } from 'libs/shared/components/infinite-scroll-footer/InfiniteScrollFooter';\nimport { useFocusSearchBar } from 'libs/shared/components/search-bar/SearchUtils';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { VideoList } from 'libs/shared/components/video-list/VideoList';\nimport { VideoSortSelect } from 'libs/shared/components/video-sort-select/VideoSortSelect';\nimport { RelatedVideosContext } from 'libs/shared/enums/RelatedVideosContext';\nimport { VideoSortType } from 'libs/shared/enums/VideoSortType';\nimport { usePermissions } from 'libs/shared/hooks/usePermissions';\nimport { CanFavouriteFunc, CurrentUser, FavouriteFunc, Library, PresentationAudience, VideoTypes, YearGroup } from 'libs/shared/interfaces';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\nimport { InteractiveHelpers } from 'shared/utils/InteractiveHelper';\nimport { VideoAppLinkHelper } from 'shared/utils/VideoAppLinkHelper';\n\nimport { LibraryFolderEmptyState } from 'apps/libraries/views/library-folder/empty-state/LibraryFolderEmptyState';\nimport { SeriesAppLinkHelper } from 'apps/series/SeriesAppLinkHelper';\n\nconst namespace = 'libraries.libraryFolderVideos';\n\ninterface LibraryFolderVideosProps {\n folderId: string;\n videos: VideoTypes[];\n yearGroups: YearGroup[];\n hasSubFolders: boolean;\n setFavourite: FavouriteFunc;\n canFavourite: CanFavouriteFunc;\n audiences: PresentationAudience[];\n libraries: Library[];\n currentUser: CurrentUser;\n\n getSortAppLink: (sort: VideoSortType) => Core.AppLink;\n sort: VideoSortType;\n\n isFetching: boolean;\n hasMore: boolean;\n fetchNext: (cursor: string) => void;\n nextCursor?: string;\n imageCdnUrl?: string;\n isPlugin: boolean;\n}\n\nexport function LibraryFolderVideos(props: LibraryFolderVideosProps): JSX.Element {\n const { focusSearchBar } = useFocusSearchBar();\n const { hasPermissions } = usePermissions();\n\n if (!props.videos.length && !props.hasSubFolders)\n return <LibraryFolderEmptyState />;\n\n if (!props.videos.length)\n return <></>;\n\n return (\n <div>\n {/* With no subfolders, we don't show this subheading, and the sort is moved up to the parent component */}\n {props.hasSubFolders && (\n <div className='d-flex justify-content-between align-items-center'>\n <h2 className='h4 mb-0'>\n <Text namespace={namespace} phrase='videos' />\n </h2>\n\n <div className='d-flex'>\n <IconButton\n svgName={cvSvgLibrary.Search}\n appLink={{\n application: AppChannels.SEARCH,\n action: Actions.Search.HOME,\n params: {\n source: SourceFilterOptions.School\n }\n }}\n className='btn btn-outline-dark d-none d-sm-inline-block'\n onClick={focusSearchBar}\n analyticsData={{}}\n analyticsOptions={{\n entity: EntityType.SearchResults,\n location: LocationContext.Libraries,\n actionType: UserAction.Click,\n descriptor: SearchSourceDescriptor.School\n }}\n >\n <Text namespace={namespace} phrase='searchLibrary' options={{ smartCount: props.libraries?.length }} />\n </IconButton>\n <VideoSortSelect\n variant='outline-dark'\n type={props.sort}\n getSortAppLink={props.getSortAppLink}\n analyticsOptions={{\n location: LocationContext.VideoListHeader,\n entity: EntityType.Video,\n actionType: UserAction.Sort,\n workflowPhase: WorkflowPhase.Complete\n }}\n />\n </div>\n </div>\n )}\n\n <VideoList\n videos={props.videos}\n yearGroups={props.yearGroups}\n getVideoAppLink={(v, opts) => VideoAppLinkHelper.getAppLink(v, {\n ...opts,\n context: RelatedVideosContext.Folder,\n contextId: props.folderId,\n includeContext: props.currentUser?.isAuthenticated\n })}\n getSubTextAppLink={video => SeriesAppLinkHelper.getSeriesAppLink(video.series)}\n setFavourite={props.setFavourite}\n canFavourite={props.canFavourite}\n presentationAudiences={props.audiences}\n hasPermissions={hasPermissions}\n getPreviewQuestionsAppLink={interactive => InteractiveHelpers.getPreviewQuestionsAppLink(interactive)}\n imageCdnUrl={props.imageCdnUrl}\n isPlugin={props.isPlugin}\n getClassroomGuideAppLink={VideoAppLinkHelper.getClassroomGuideAppLink}\n getInteractiveGuidanceAppLink={VideoAppLinkHelper.getInteractiveGuidanceAppLink}\n getResourceGuidanceAppLink={VideoAppLinkHelper.getResourceGuidanceAppLink}\n />\n\n {(props.hasMore || props.isFetching) && (\n <InfiniteScrollFooter\n isFetching={props.isFetching}\n fetchNext={props.fetchNext}\n nextCursor={props.nextCursor}\n />\n )}\n </div>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"subheading\":\"IJZtA\"};","import React from 'react';\n\nimport { PartialFolderList } from 'libs/shared/components/folder-list/partial-loading/PartialFolderList';\nimport { PartialVideoList } from 'libs/shared/components/video-list/partial-loading/PartialVideoList';\n\nimport styles from './library-folder-partial-loading.scss';\n\nexport function LibraryFolderPartialLoading(): JSX.Element {\n return (\n <>\n <div className='m-3'>\n <PartialFolderList />\n </div>\n\n <div className='mx-3 mb-3'>\n <div className={`${styles.subheading} partial-loading-background mb-2`} />\n <PartialVideoList />\n </div>\n </>\n );\n}","import React from 'react';\nimport { useDispatch } from 'react-redux';\n\nimport { HttpStatus } from 'libs/common/backbone/enums/HttpStatus';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Flight } from 'libs/common/flight';\n\nimport { EntityType, LocationContext, SearchSourceDescriptor, UserAction, WorkflowPhase } from 'libs/analytics/interfaces';\n\nimport { SourceFilterOptions } from 'libs/shared/apps/search/interfaces';\nimport { BannerHeader, PartialBannerHeader } from 'libs/shared/components/banner-header/BannerHeader';\nimport { Breadcrumbs, PartialBreadcrumbs } from 'libs/shared/components/breadcrumbs/Breadcrumbs';\nimport { FolderList } from 'libs/shared/components/folder-list/FolderList';\nimport { IconButton } from 'libs/shared/components/icon-button/IconButton';\nimport { useFocusSearchBar } from 'libs/shared/components/search-bar/SearchUtils';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { VideoSortSelect } from 'libs/shared/components/video-sort-select/VideoSortSelect';\nimport { VideoActionsContext } from 'libs/shared/context/VideoActionsContext';\nimport { VideoSortType } from 'libs/shared/enums/VideoSortType';\nimport { handleHttpError } from 'libs/shared/errors/handlers/HttpErrorHandlers';\nimport { ConfigRequests } from 'libs/shared/flight-requests/ConfigRequests';\nimport { CustomerRequests } from 'libs/shared/flight-requests/CustomerRequests';\nimport { LibraryRequests } from 'libs/shared/flight-requests/LibraryRequests';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { VideoRequests } from 'libs/shared/flight-requests/VideoRequests';\nimport { useAlerts } from 'libs/shared/hooks/UseAlerts';\nimport { useBreadcrumbs } from 'libs/shared/hooks/useBreadcrumbs';\nimport { useHandleObjectError } from 'libs/shared/hooks/UseHandleObjectError';\nimport { useInfiniteList } from 'libs/shared/hooks/UseInfiniteList';\nimport { useSetPageMetadata } from 'libs/shared/hooks/useSetPageMetadata';\nimport { Config, CurrentUser, Folder, Library, VideoTypes, YearGroup } from 'libs/shared/interfaces';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\nimport { VideoSortHelper } from 'libs/shared/utils/VideoSortHelper';\n\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\nimport { usePluginHelper } from 'shared/hooks/use-plugin-helper/usePluginHelper';\nimport { useVideoActions, VideoActionsLocation } from 'shared/hooks/use-video-actions/useVideoActions';\nimport { useLiteFavourites } from 'shared/hooks/useLiteFavourites';\nimport { usePresentationAudiences } from 'shared/hooks/usePresentationAudiences';\nimport { useVideoMixin } from 'shared/hooks/useVideoMixin';\n\nimport { LibraryFolderVideos } from 'apps/libraries/components/library-folder-videos/LibraryFolderVideos';\nimport { useFetchAllChildFolders } from 'apps/libraries/hooks/UseFetchAllChildFolders';\nimport { useHandleLibraryType } from 'apps/libraries/hooks/UseHandleLibraryType';\n\nimport { LibraryFolderPartialLoading } from './partial-loading/LibraryFolderPartialLoading';\nimport { getFolderAppLink, getFolderBgColourClass } from './LibraryFolderViewUtils';\n\nconst namespace = 'libraries.libraryFolder';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface LibraryFolderViewProps {\n libraryId: string;\n folderId: string;\n sort?: VideoSortType;\n}\n\nexport function LibraryFolderView(props: LibraryFolderViewProps): JSX.Element {\n const dispatch = useDispatch();\n const alerts = useAlerts();\n const { focusSearchBar } = useFocusSearchBar();\n const { isPlugin } = usePluginHelper();\n\n const libraries = Flight.useBasicFetch<Library[]>(LibraryRequests.domainLibraries([ 'customLibrary', 'sharedLibrary' ]));\n const library = Flight.useBasicFetch<Library>(LibraryRequests.library(props.libraryId));\n const folder = Flight.useBasicFetch<Folder>(LibraryRequests.folder(props.folderId));\n const subfolders = useFetchAllChildFolders(props.folderId);\n\n const curentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n const config = Flight.useBasicFetch<Config>(ConfigRequests.config());\n const yearGroups = Flight.useBasicFetch<YearGroup[]>(\n curentUser.data?.isAuthenticated && CustomerRequests.yearGroups(curentUser.data.customerId)\n );\n\n const videoActions = useVideoActions({ location: VideoActionsLocation.VideoItem });\n const { setFavourite, canFavourite } = useLiteFavourites(LocationContext.VideoThumbnail);\n const breadcrumbs = useBreadcrumbs({ name: folder.data?.name });\n const audiences = usePresentationAudiences();\n\n useSetPageMetadata({ title: folder.data?.name });\n\n useHandleObjectError([ library, folder ]);\n useHandleLibraryType(library);\n\n const sort = !!curentUser.data && VideoSortHelper.getOrSetSortType(curentUser.data.id, props.sort);\n\n const {\n items: videos,\n hasMore,\n isFetching,\n nextCursor\n } = useInfiniteList<VideoTypes>(getVideosRequest, fetchNext, onError);\n\n useVideoMixin(videos);\n\n function getVideosRequest(cursor?: string): Flight.Request {\n return VideoRequests.collectionVideos(props.folderId, sort, cursor);\n }\n\n function fetchNext(cursor?: string): void {\n return Flight.getFetch(dispatch)(getVideosRequest(cursor));\n }\n\n function onError(pageNumber: number, httpStatus: HttpStatus): void {\n if (pageNumber === 1)\n return handleHttpError(httpStatus);\n\n alerts.error(getPhrase('error'));\n }\n\n const hasNoSubfolders = !!(subfolders.hasCompleted && !subfolders.items?.length);\n\n return (\n <VideoActionsContext.Provider value={videoActions}>\n {(library.data && folder.data && config.data)\n ? (\n <BannerHeader\n heading={folder.data.name}\n banner={folder.data.banner}\n imageCdnUrl={config.data.imageCdnUrl}\n blockColourClass={getFolderBgColourClass(folder.data)}\n logo={library.data.owner?.logo}\n />\n ) : <PartialBannerHeader />\n }\n\n <div className={`d-flex justify-content-between align-items-center py-3 mx-3 ${hasNoSubfolders ? '' : 'border-bottom'}`}>\n {(library.data && folder.data)\n ? <Breadcrumbs breadcrumbs={breadcrumbs} />\n : <PartialBreadcrumbs />\n }\n \n <div className='d-flex'>\n {(hasNoSubfolders || !videos?.length) &&\n <IconButton\n svgName={cvSvgLibrary.Search}\n appLink={{\n application: AppChannels.SEARCH,\n action: Actions.Search.HOME,\n params: {\n source: SourceFilterOptions.School\n }\n }}\n className='btn btn-outline-dark d-none d-sm-inline-block'\n onClick={focusSearchBar}\n analyticsData={{}}\n analyticsOptions={{\n entity: EntityType.SearchResults,\n location: LocationContext.Libraries,\n actionType: UserAction.Click,\n descriptor: SearchSourceDescriptor.School\n }}\n >\n <Text namespace={namespace} phrase='searchLibrary' options={{ smartCount: libraries.data?.length ?? 1 }} />\n </IconButton>\n }\n {(hasNoSubfolders && folder.data) && (\n <VideoSortSelect\n variant='outline-dark'\n type={sort}\n getSortAppLink={sort => getFolderAppLink(props.libraryId, folder.data, sort)}\n analyticsOptions={{\n location: LocationContext.VideoListHeader,\n entity: EntityType.Video,\n actionType: UserAction.Sort,\n workflowPhase: WorkflowPhase.Complete\n }}\n />\n )}\n </div>\n </div>\n\n {(videos && subfolders) ? (\n <>\n {!!subfolders.items?.length && (\n <div className='px-2 py-3'>\n <FolderList\n folders={subfolders.items}\n getAppLink={(f: Folder) => getFolderAppLink(props.libraryId, f, sort)}\n expandFolders={!videos.length}\n />\n </div>\n )}\n\n <div className='px-3 pb-3'>\n <LibraryFolderVideos\n folderId={props.folderId}\n videos={videos}\n yearGroups={yearGroups.data}\n hasSubFolders={!!subfolders.items?.length}\n setFavourite={setFavourite}\n canFavourite={canFavourite}\n hasMore={hasMore}\n isFetching={isFetching}\n fetchNext={fetchNext}\n nextCursor={nextCursor}\n sort={sort}\n getSortAppLink={sort => getFolderAppLink(props.libraryId, folder.data, sort)}\n audiences={audiences.data}\n libraries={libraries.data}\n imageCdnUrl={config.data?.imageCdnUrl}\n isPlugin={isPlugin}\n currentUser={curentUser.data}\n />\n </div>\n </>\n ) : <LibraryFolderPartialLoading />}\n </VideoActionsContext.Provider>\n );\n}","import { Core } from 'libs/common/core';\nimport { TextHelper } from 'libs/common/react/utils/TextHelper';\n\nimport { BG_COLOUR_CLASS_NAMES } from 'libs/shared/constants/ColourClassNames';\nimport { Folder, Library } from 'libs/shared/interfaces';\n\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\n\nexport function getFolderAppLink(libraryId: string, folder: Folder, sort: string): Core.AppLink {\n if (!libraryId || !folder)\n return null;\n\n return {\n application: AppChannels.LIBRARIES,\n action: Actions.Libraries.FOLDER,\n args: [ libraryId, folder.id, TextHelper.slugify(folder.name) ],\n params: {\n sort\n }\n };\n}\n\nexport function getFolderBgColourClass(folder: Folder | Library): string {\n let charCode = 0;\n\n for (let i = 0; i < folder.name?.length ?? 0; i++) {\n charCode += folder.name.charCodeAt(i);\n }\n\n return BG_COLOUR_CLASS_NAMES[charCode % BG_COLOUR_CLASS_NAMES.length];\n}"],"names":["getDirectionClass","direction","Caret","props","SvgContainer","svgName","className","defaultProps","namespace","EXPANDED_FOLDERS_KEY","FolderList","breakpoints","_hasExpandedFolders","setHasExpandedFolders","hasExpandedFolders","expandFolders","folderLimit","xxl","xl","lg","md","onToggleFolder","displayableFolders","folders","slice","canToggleCollapsedView","length","showHeading","onClick","phrase","options","count","extraButtons","map","f","key","id","folder","getAppLink","getFolderActions","drag","drop","PartialFolder","PartialFolderList","Array","fill","_","i","LibraryFolder","thumbnailUrl","thumbnail","UrlHelper","url","size","owner","libraries","data","ownerLogoUrl","showOwnerLogo","logo","actions","analyticsData","toString","name","undefined","analyticsOptions","actionType","entity","DragDropMoveWrapper","draggable","droppable","dropStye","dragStyle","AppLink","appLink","title","BaseImage","imageType","imageClassName","ImageFallback","type","extraClasses","Actions","actionsDropdownClassName","dropdownToggleSvgSize","src","alt","useFetchAllChildFolders","parentId","fetch","getRequest","cursor","useHandleLibraryType","request","hasCompleted","hasError","LibraryFolderEmptyState","value","EmptyState","ImageUrls","Text","LibraryFolderVideos","focusSearchBar","hasPermissions","usePermissions","videos","hasSubFolders","IconButton","application","action","params","source","location","descriptor","smartCount","VideoSortSelect","variant","sort","getSortAppLink","workflowPhase","VideoList","yearGroups","getVideoAppLink","v","opts","VideoAppLinkHelper","context","RelatedVideosContext","contextId","folderId","includeContext","currentUser","isAuthenticated","getSubTextAppLink","video","SeriesAppLinkHelper","series","setFavourite","canFavourite","presentationAudiences","audiences","getPreviewQuestionsAppLink","interactive","InteractiveHelper","imageCdnUrl","isPlugin","getClassroomGuideAppLink","getInteractiveGuidanceAppLink","getResourceGuidanceAppLink","hasMore","isFetching","InfiniteScrollFooter","fetchNext","nextCursor","LibraryFolderPartialLoading","PartialVideoList","getPhrase","LanguageService","LibraryFolderView","dispatch","alerts","usePluginHelper","LibraryRequests","library","libraryId","subfolders","curentUser","UserRequests","config","ConfigRequests","CustomerRequests","customerId","videoActions","useVideoActions","useLiteFavourites","u","breadcrumbs","useBreadcrumbs","usePresentationAudiences","useSetPageMetadata","VideoSortHelper","getVideosRequest","pageNumber","httpStatus","error","items","VideoRequests","useVideoMixin","hasNoSubfolders","VideoActionsContext","BannerHeader","heading","banner","blockColourClass","Breadcrumbs","getFolderAppLink","args","getFolderBgColourClass","charCode","charCodeAt"],"sourceRoot":""}
|