@clickview/lite 0.48.0-rc.7 → 0.48.0
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/{170-1f815b85a1-lite.chunk.js → 170-2d124965b7-lite.chunk.js} +2 -2
- package/dist/scripts/{170-1f815b85a1-lite.chunk.js.map → 170-2d124965b7-lite.chunk.js.map} +1 -1
- package/dist/scripts/{1818-b9f9297d6d-lite.chunk.js → 1818-72409e60a9-lite.chunk.js} +1 -1
- package/dist/scripts/{1818-b9f9297d6d-lite.chunk.js.map → 1818-72409e60a9-lite.chunk.js.map} +1 -1
- package/dist/scripts/{1863-cf9df40052-lite.chunk.js → 1863-e7c4a6f342-lite.chunk.js} +1 -1
- package/dist/scripts/{1863-cf9df40052-lite.chunk.js.map → 1863-e7c4a6f342-lite.chunk.js.map} +1 -1
- package/dist/scripts/{1958-9889c1ad24-lite.chunk.js → 1958-5336189397-lite.chunk.js} +1 -1
- package/dist/scripts/{1958-9889c1ad24-lite.chunk.js.map → 1958-5336189397-lite.chunk.js.map} +1 -1
- package/dist/scripts/{2086-a247f6e201-lite.chunk.js → 2086-f7082703d0-lite.chunk.js} +1 -1
- package/dist/scripts/{2086-a247f6e201-lite.chunk.js.map → 2086-f7082703d0-lite.chunk.js.map} +1 -1
- package/dist/scripts/{2118-462a279c5a-lite.chunk.js → 2118-ec2a5f1e9b-lite.chunk.js} +2 -2
- package/dist/scripts/{2118-462a279c5a-lite.chunk.js.map → 2118-ec2a5f1e9b-lite.chunk.js.map} +1 -1
- package/dist/scripts/{2182-5c9db07f5b-lite.chunk.js → 2182-8e4d603a1b-lite.chunk.js} +1 -1
- package/dist/scripts/{2182-5c9db07f5b-lite.chunk.js.map → 2182-8e4d603a1b-lite.chunk.js.map} +1 -1
- package/dist/scripts/{2279-5e92c84310-lite.chunk.js → 2279-252e92e1d8-lite.chunk.js} +1 -1
- package/dist/scripts/{2279-5e92c84310-lite.chunk.js.map → 2279-252e92e1d8-lite.chunk.js.map} +1 -1
- package/dist/scripts/{2355-6cd89fa80d-lite.chunk.js → 2355-c588dc3ce2-lite.chunk.js} +1 -1
- package/dist/scripts/{2355-6cd89fa80d-lite.chunk.js.map → 2355-c588dc3ce2-lite.chunk.js.map} +1 -1
- package/dist/scripts/{2469-aa5bbbb17f-lite.chunk.js → 2469-46411b862e-lite.chunk.js} +1 -1
- package/dist/scripts/{2469-aa5bbbb17f-lite.chunk.js.map → 2469-46411b862e-lite.chunk.js.map} +1 -1
- package/dist/scripts/{2672-0fc559f1d1-lite.chunk.js → 2672-b01985cee8-lite.chunk.js} +1 -1
- package/dist/scripts/{2672-0fc559f1d1-lite.chunk.js.map → 2672-b01985cee8-lite.chunk.js.map} +1 -1
- package/dist/scripts/{2734-6c6d57d0f3-lite.chunk.js → 2734-6a7beb2ce2-lite.chunk.js} +1 -1
- package/dist/scripts/{2734-6c6d57d0f3-lite.chunk.js.map → 2734-6a7beb2ce2-lite.chunk.js.map} +1 -1
- package/dist/scripts/{287-ba98be7f21-lite.chunk.js → 287-3cbed16363-lite.chunk.js} +1 -1
- package/dist/scripts/{287-ba98be7f21-lite.chunk.js.map → 287-3cbed16363-lite.chunk.js.map} +1 -1
- package/dist/scripts/{2875-0e5f209e47-lite.chunk.js → 2875-aefd69a61f-lite.chunk.js} +1 -1
- package/dist/scripts/{2875-0e5f209e47-lite.chunk.js.map → 2875-aefd69a61f-lite.chunk.js.map} +1 -1
- package/dist/scripts/{3042-6650521d8b-lite.chunk.js → 3042-7c1b5e4ff7-lite.chunk.js} +1 -1
- package/dist/scripts/{3042-6650521d8b-lite.chunk.js.map → 3042-7c1b5e4ff7-lite.chunk.js.map} +1 -1
- package/dist/scripts/{3158-31baada6cc-lite.chunk.js → 3158-2147de456d-lite.chunk.js} +1 -1
- package/dist/scripts/{3158-31baada6cc-lite.chunk.js.map → 3158-2147de456d-lite.chunk.js.map} +1 -1
- package/dist/scripts/{3296-6d80e4dd56-lite.chunk.js → 3296-f3732c93d9-lite.chunk.js} +1 -1
- package/dist/scripts/{3296-6d80e4dd56-lite.chunk.js.map → 3296-f3732c93d9-lite.chunk.js.map} +1 -1
- package/dist/scripts/{3541-7ebd9db295-lite.chunk.js → 3541-15581012d3-lite.chunk.js} +1 -1
- package/dist/scripts/{3541-7ebd9db295-lite.chunk.js.map → 3541-15581012d3-lite.chunk.js.map} +1 -1
- package/dist/scripts/{3841-95df66e647-lite.chunk.js → 3841-bfae79638b-lite.chunk.js} +2 -2
- package/dist/scripts/{3841-95df66e647-lite.chunk.js.map → 3841-bfae79638b-lite.chunk.js.map} +1 -1
- package/dist/scripts/{3888-0bee9a9309-lite.chunk.js → 3888-87c1075a1b-lite.chunk.js} +1 -1
- package/dist/scripts/{3888-0bee9a9309-lite.chunk.js.map → 3888-87c1075a1b-lite.chunk.js.map} +1 -1
- package/dist/scripts/{4138-75a2bb69ab-lite.chunk.js → 4138-b9b03c9900-lite.chunk.js} +1 -1
- package/dist/scripts/{4138-75a2bb69ab-lite.chunk.js.map → 4138-b9b03c9900-lite.chunk.js.map} +1 -1
- package/dist/scripts/{4778-ebe369973c-lite.chunk.js → 4778-3c9f2b7f76-lite.chunk.js} +2 -2
- package/dist/scripts/{4778-ebe369973c-lite.chunk.js.map → 4778-3c9f2b7f76-lite.chunk.js.map} +1 -1
- package/dist/scripts/{4942-a27a31e79e-lite.chunk.js → 4942-acce40b333-lite.chunk.js} +2 -2
- package/dist/scripts/{4942-a27a31e79e-lite.chunk.js.map → 4942-acce40b333-lite.chunk.js.map} +1 -1
- package/dist/scripts/{5075-f8719465be-lite.chunk.js → 5075-53172298fe-lite.chunk.js} +1 -1
- package/dist/scripts/{5075-f8719465be-lite.chunk.js.map → 5075-53172298fe-lite.chunk.js.map} +1 -1
- package/dist/scripts/{5157-cd12e2e443-lite.chunk.js → 5157-47a0f5c088-lite.chunk.js} +1 -1
- package/dist/scripts/{5157-cd12e2e443-lite.chunk.js.map → 5157-47a0f5c088-lite.chunk.js.map} +1 -1
- package/dist/scripts/{5268-f4db3933ff-lite.chunk.js → 5268-9b7560f3b1-lite.chunk.js} +2 -2
- package/dist/scripts/{5268-f4db3933ff-lite.chunk.js.map → 5268-9b7560f3b1-lite.chunk.js.map} +1 -1
- package/dist/scripts/{5442-01ffd95162-lite.chunk.js → 5442-5ddfa2d951-lite.chunk.js} +1 -1
- package/dist/scripts/{5442-01ffd95162-lite.chunk.js.map → 5442-5ddfa2d951-lite.chunk.js.map} +1 -1
- package/dist/scripts/{5591-98cfe6c6e5-lite.chunk.js → 5591-119d72ede5-lite.chunk.js} +1 -1
- package/dist/scripts/{5591-98cfe6c6e5-lite.chunk.js.map → 5591-119d72ede5-lite.chunk.js.map} +1 -1
- package/dist/scripts/{5595-3763b14d77-lite.chunk.js → 5595-628d4f252c-lite.chunk.js} +2 -2
- package/dist/scripts/5595-628d4f252c-lite.chunk.js.map +1 -0
- package/dist/scripts/{6102-4d948a5e48-lite.chunk.js → 6102-751dbbbf33-lite.chunk.js} +3 -3
- package/dist/scripts/{6102-4d948a5e48-lite.chunk.js.map → 6102-751dbbbf33-lite.chunk.js.map} +1 -1
- package/dist/scripts/{6158-0c5e44f800-lite.chunk.js → 6158-d123add596-lite.chunk.js} +1 -1
- package/dist/scripts/{6158-0c5e44f800-lite.chunk.js.map → 6158-d123add596-lite.chunk.js.map} +1 -1
- package/dist/scripts/{6263-8957d50afe-lite.chunk.js → 6263-24e67b7df2-lite.chunk.js} +1 -1
- package/dist/scripts/{6263-8957d50afe-lite.chunk.js.map → 6263-24e67b7df2-lite.chunk.js.map} +1 -1
- package/dist/scripts/{6330-c66465bd6d-lite.chunk.js → 6330-9a2a5fc07e-lite.chunk.js} +1 -1
- package/dist/scripts/{6330-c66465bd6d-lite.chunk.js.map → 6330-9a2a5fc07e-lite.chunk.js.map} +1 -1
- package/dist/scripts/{671-003843ca84-lite.chunk.js → 671-5571f33165-lite.chunk.js} +1 -1
- package/dist/scripts/{671-003843ca84-lite.chunk.js.map → 671-5571f33165-lite.chunk.js.map} +1 -1
- package/dist/scripts/{7167-efe85af16e-lite.chunk.js → 7167-dc4c954c2b-lite.chunk.js} +1 -1
- package/dist/scripts/{7167-efe85af16e-lite.chunk.js.map → 7167-dc4c954c2b-lite.chunk.js.map} +1 -1
- package/dist/scripts/7293-58f4a7cf47-lite.chunk.js +2 -0
- package/dist/scripts/{7293-afd3349468-lite.chunk.js.map → 7293-58f4a7cf47-lite.chunk.js.map} +1 -1
- package/dist/scripts/{7301-f20e4bdb8f-lite.chunk.js → 7301-7c9342ef0c-lite.chunk.js} +1 -1
- package/dist/scripts/{7301-f20e4bdb8f-lite.chunk.js.map → 7301-7c9342ef0c-lite.chunk.js.map} +1 -1
- package/dist/scripts/{7708-ece31b78a9-lite.chunk.js → 7708-e91903481a-lite.chunk.js} +1 -1
- package/dist/scripts/{7708-ece31b78a9-lite.chunk.js.map → 7708-e91903481a-lite.chunk.js.map} +1 -1
- package/dist/scripts/{771-eb60e33941-lite.chunk.js → 771-5612b4ffc2-lite.chunk.js} +2 -2
- package/dist/scripts/{771-eb60e33941-lite.chunk.js.map → 771-5612b4ffc2-lite.chunk.js.map} +1 -1
- package/dist/scripts/{7855-37bcdd134e-lite.chunk.js → 7855-4b69540a71-lite.chunk.js} +1 -1
- package/dist/scripts/{7855-37bcdd134e-lite.chunk.js.map → 7855-4b69540a71-lite.chunk.js.map} +1 -1
- package/dist/scripts/{8024-66413cc05b-lite.chunk.js → 8024-765a4170c7-lite.chunk.js} +2 -2
- package/dist/scripts/{8024-66413cc05b-lite.chunk.js.map → 8024-765a4170c7-lite.chunk.js.map} +1 -1
- package/dist/scripts/{823-58d27c255b-lite.chunk.js → 823-33c5207c68-lite.chunk.js} +1 -1
- package/dist/scripts/{823-58d27c255b-lite.chunk.js.map → 823-33c5207c68-lite.chunk.js.map} +1 -1
- package/dist/scripts/8261-69854ff4d5-lite.chunk.js +2 -0
- package/dist/scripts/8261-69854ff4d5-lite.chunk.js.map +1 -0
- package/dist/scripts/{8466-ee9d40ee97-lite.chunk.js → 8466-cea62163e8-lite.chunk.js} +1 -1
- package/dist/scripts/{8466-ee9d40ee97-lite.chunk.js.map → 8466-cea62163e8-lite.chunk.js.map} +1 -1
- package/dist/scripts/{8681-41edd08b98-lite.chunk.js → 8681-49db3daae6-lite.chunk.js} +2 -2
- package/dist/scripts/{8681-41edd08b98-lite.chunk.js.map → 8681-49db3daae6-lite.chunk.js.map} +1 -1
- package/dist/scripts/{8772-9ae4d77363-lite.chunk.js → 8772-6c11095cea-lite.chunk.js} +1 -1
- package/dist/scripts/{8772-9ae4d77363-lite.chunk.js.map → 8772-6c11095cea-lite.chunk.js.map} +1 -1
- package/dist/scripts/{8906-b75b51bd0f-lite.chunk.js → 8906-2f6b5e4c5c-lite.chunk.js} +2 -2
- package/dist/scripts/{8906-b75b51bd0f-lite.chunk.js.map → 8906-2f6b5e4c5c-lite.chunk.js.map} +1 -1
- package/dist/scripts/{920-4de8efbcf1-lite.chunk.js → 920-acc6596891-lite.chunk.js} +1 -1
- package/dist/scripts/{920-4de8efbcf1-lite.chunk.js.map → 920-acc6596891-lite.chunk.js.map} +1 -1
- package/dist/scripts/{9212-8f95fbd9b9-lite.chunk.js → 9212-cc987a13bf-lite.chunk.js} +1 -1
- package/dist/scripts/{9212-8f95fbd9b9-lite.chunk.js.map → 9212-cc987a13bf-lite.chunk.js.map} +1 -1
- package/dist/scripts/{9242-2e533bdc0d-lite.chunk.js → 9242-144e7728ad-lite.chunk.js} +1 -1
- package/dist/scripts/{9242-2e533bdc0d-lite.chunk.js.map → 9242-144e7728ad-lite.chunk.js.map} +1 -1
- package/dist/scripts/{9264-d2285d4310-lite.chunk.js → 9264-518952f13f-lite.chunk.js} +1 -1
- package/dist/scripts/{9264-d2285d4310-lite.chunk.js.map → 9264-518952f13f-lite.chunk.js.map} +1 -1
- package/dist/scripts/{9478-8eacf2fe47-lite.chunk.js → 9478-4b3c088537-lite.chunk.js} +2 -2
- package/dist/scripts/{9478-8eacf2fe47-lite.chunk.js.map → 9478-4b3c088537-lite.chunk.js.map} +1 -1
- package/dist/scripts/{9484-be04a34bbf-lite.chunk.js → 9484-b85011dbea-lite.chunk.js} +2 -2
- package/dist/scripts/{9484-be04a34bbf-lite.chunk.js.map → 9484-b85011dbea-lite.chunk.js.map} +1 -1
- package/dist/scripts/{bundle-8f540a1154.min.js → bundle-c158cdd3a9.min.js} +3 -3
- package/dist/scripts/{bundle-8f540a1154.min.js.map → bundle-c158cdd3a9.min.js.map} +1 -1
- package/package.json +1 -1
- package/dist/scripts/5595-3763b14d77-lite.chunk.js.map +0 -1
- package/dist/scripts/7293-afd3349468-lite.chunk.js +0 -2
- package/dist/scripts/8261-72453f1978-lite.chunk.js +0 -2
- package/dist/scripts/8261-72453f1978-lite.chunk.js.map +0 -1
- /package/dist/scripts/{170-1f815b85a1-lite.chunk.js.LICENSE.txt → 170-2d124965b7-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{2118-462a279c5a-lite.chunk.js.LICENSE.txt → 2118-ec2a5f1e9b-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{3841-95df66e647-lite.chunk.js.LICENSE.txt → 3841-bfae79638b-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{4778-ebe369973c-lite.chunk.js.LICENSE.txt → 4778-3c9f2b7f76-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{4942-a27a31e79e-lite.chunk.js.LICENSE.txt → 4942-acce40b333-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{5268-f4db3933ff-lite.chunk.js.LICENSE.txt → 5268-9b7560f3b1-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{6102-4d948a5e48-lite.chunk.js.LICENSE.txt → 6102-751dbbbf33-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{771-eb60e33941-lite.chunk.js.LICENSE.txt → 771-5612b4ffc2-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{8024-66413cc05b-lite.chunk.js.LICENSE.txt → 8024-765a4170c7-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{8681-41edd08b98-lite.chunk.js.LICENSE.txt → 8681-49db3daae6-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{8906-b75b51bd0f-lite.chunk.js.LICENSE.txt → 8906-2f6b5e4c5c-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{9478-8eacf2fe47-lite.chunk.js.LICENSE.txt → 9478-4b3c088537-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{9484-be04a34bbf-lite.chunk.js.LICENSE.txt → 9484-b85011dbea-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{bundle-8f540a1154.min.js.LICENSE.txt → bundle-c158cdd3a9.min.js.LICENSE.txt} +0 -0
package/package.json
CHANGED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"scripts/5595-3763b14d77-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/actions/Actions.tsx","file:///app/packages/libs/shared/src/components/actions/actions.scss","file:///app/packages/libs/shared/src/components/actions/ActionsDropdown.tsx","file:///app/packages/libs/common/src/react/utils/PortalHelper.ts","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/drag-drop-move/DragDropMoveWrapper.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/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/errors/handlers/HttpErrorHandlers.ts","file:///app/packages/libs/shared/src/hooks/UseHandleObjectError.ts","file:///app/packages/libs/shared/src/hooks/useBuildBreadcrumbs.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 { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\nimport { Core } from 'libs/common/core';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { AnalyticsOptions } from 'libs/analytics/interfaces';\n\nimport { IconButton } from 'libs/shared/components/icon-button/IconButton';\nimport { SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\nimport { Tooltip } from 'libs/shared/components/tooltip/Tooltip';\nimport { BaseObject } from 'libs/shared/interfaces';\n\nimport { ActionButton } from './ActionButton';\nimport { ActionsDropdown } from './ActionsDropdown';\n\nexport interface ActionOptions {\n order?: number;\n label?: string | (() => JSX.Element);\n appLink?: Core.AppLink;\n href?: string;\n onClick?: () => void;\n svgName?: string;\n className?: string;\n button?: boolean; // If true, a button will be rendered. Otherwise the action will be rendered in the dropdown.\n tooltip?: string;\n showSpinner?: boolean;\n analyticsData?: HashObject;\n analyticsOptions?: AnalyticsOptions;\n disabled?: boolean;\n openInNewTab?: boolean; // Only used if appLink or href is provided\n group?: string;\n lazyPlaceholder?: boolean;\n}\n\nexport type ActionGenerator = (obj: BaseObject) => ActionOptions[];\n\ninterface ActionsProps {\n actions: ActionOptions[];\n className?: string;\n actionsDropdownClassName?: string;\n dropdownToggleSvgSize?: SvgContainerSize;\n sortComponent?: JSX.Element;\n fetchMore?: () => void;\n}\n\nexport function Actions(props: ActionsProps): JSX.Element {\n const orderedActions = React.useMemo(() => props.actions.sort((a, b) => a.order - b.order), [props.actions]);\n\n const buttonActions: ActionOptions[] = [];\n const moreActions: ActionOptions[] = [];\n\n orderedActions.forEach(a => {\n if (a.button)\n buttonActions.push(a);\n else\n moreActions.push(a);\n });\n\n let className = 'd-flex';\n\n if (props.className)\n className += ` ${props.className}`;\n\n if (!buttonActions.length && !moreActions.length)\n return <></>;\n\n return (\n <div className={className}>\n <>\n <span className='d-flex align-items-center'>\n {buttonActions.length ? buttonActions.map((a, idx) => (\n <React.Fragment key={idx}>\n {(() => {\n if (a.label) {\n const label = FunctionHelper.isFunction(a.label)\n ? a.label\n : () => <>{a.label}</>;\n \n return (\n <ActionButton\n appLink={a.appLink}\n href={a.href}\n onClick={a.onClick}\n svgName={a.svgName}\n className={a.className}\n tooltip={a.tooltip}\n showSpinner={a.showSpinner}\n analyticsData={a.analyticsData}\n analyticsOptions={a.analyticsOptions}\n openInNewTab={a.openInNewTab}\n disabled={a.disabled}\n >\n {label()}\n </ActionButton>\n );\n }\n\n const iconButton = (\n <IconButton\n appLink={a.appLink}\n href={a.href}\n onClick={a.onClick}\n svgName={a.svgName}\n className={a.className}\n analyticsData={a.analyticsData}\n analyticsOptions={a.analyticsOptions}\n openInNewTab={a.openInNewTab}\n disabled={a.disabled}\n />\n );\n\n return a.tooltip\n ? <Tooltip title={a.tooltip} spanHack>{iconButton}</Tooltip>\n : iconButton;\n })()}\n </React.Fragment>\n )) : <></>}\n {props.sortComponent && props.sortComponent}\n {moreActions.length ? (\n <ActionsDropdown\n actions={moreActions}\n dropdownToggleClassName={props.actionsDropdownClassName}\n dropdownToggleSvgSize={props.dropdownToggleSvgSize}\n fetchMore={props.fetchMore}\n />\n ) : <></>}\n </span>\n </>\n </div>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"dropdownToggle\":\"UCAnJ\"};","import * as React from 'react';\n\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\nimport { Core } from 'libs/common/core';\nimport { RandomHelper } from 'libs/common/react/utils/RandomHelper';\n\nimport { AnalyticsHelper } from 'libs/analytics/AnalyticsHelper';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { SvgContainer, SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\nimport { Tooltip } from 'libs/shared/components/tooltip/Tooltip';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport { ActionOptions } from './Actions';\n\nimport styles from './actions.scss';\n\nfunction LazyDropdownItems(): JSX.Element {\n return (\n <>\n <div style={{ padding: '0.53125rem 1rem' }}>\n <div className='partial-loading-background' style={{ height: '1.0625rem', width: '8rem' }}></div>\n </div>\n <div style={{ padding: '0.53125rem 1rem' }}>\n <div className='partial-loading-background' style={{ height: '1.0625rem', width: '12rem' }}></div>\n </div>\n <div style={{ padding: '0.53125rem 1rem' }}>\n <div className='partial-loading-background' style={{ height: '1.0625rem', width: '11rem' }}></div>\n </div>\n <div style={{ padding: '0.53125rem 1rem' }}>\n <div className='partial-loading-background' style={{ height: '1.0625rem', width: '9rem' }}></div>\n </div>\n </>\n );\n}\n\nfunction getDropdownItemClassName(actionClassName?: string): string {\n let className = 'dropdown-item';\n\n if (actionClassName)\n className += ` ${actionClassName}`;\n\n return className;\n}\n\nexport type DropdownActionOptions = Omit<ActionOptions, 'button'>;\n\ninterface ActionsDropdownItemProps {\n action: DropdownActionOptions;\n}\n\nfunction ActionsDropdownItem(props: ActionsDropdownItemProps): React.ReactElement {\n const label = FunctionHelper.isFunction(props.action.label)\n ? props.action.label\n : () => <>{props.action.label}</>;\n\n if (props.action.appLink)\n return (\n <AppLink\n appLink={props.action.appLink}\n onClick={props.action.onClick}\n className={getDropdownItemClassName(props.action.className)}\n analyticsData={props.action.analyticsData}\n analyticsOptions={props.action.analyticsOptions}\n openInNewTab={props.action.openInNewTab}\n disabled={props.action.disabled}\n >\n {props.action.svgName && <SvgContainer svgName={props.action.svgName} className='d-inline-block svg-container me-2 align-middle' />}\n <span className='align-middle'>{label()}</span>\n </AppLink>\n );\n\n function onClick(e: React.MouseEvent | React.KeyboardEvent): void {\n e.preventDefault();\n\n if (props.action.analyticsData && props.action.analyticsOptions)\n AnalyticsHelper.logUserAction(props.action.analyticsData, props.action.analyticsOptions);\n\n if (FunctionHelper.isFunction(props.action.onClick))\n props.action.onClick();\n\n if (props.action.href)\n Core.LocationUtils.PageLoad(props.action.href, props.action.openInNewTab);\n }\n\n if (props.action.href) {\n return (\n <a\n className={getDropdownItemClassName(props.action.className)}\n onClick={onClick}\n href={props.action.href}\n >\n {props.action.svgName && <SvgContainer svgName={props.action.svgName} className='d-inline-block svg-container me-2 align-middle' />}\n <span className='align-middle'>{label()}</span>\n </a>\n );\n }\n\n return (\n <span\n className={`cursor-pointer ${getDropdownItemClassName(props.action.className)}`}\n onClick={onClick}\n role='button'\n tabIndex={0}\n onKeyDown={(e: React.KeyboardEvent) => e.key === 'Enter' && onClick(e)}\n >\n {props.action.svgName && <SvgContainer svgName={props.action.svgName} className='d-inline-block svg-container me-2' />}\n {label()}\n </span>\n );\n}\n\ninterface ActionsDropdownProps {\n actions: DropdownActionOptions[];\n className?: string;\n dropdownToggleClassName?: string;\n dropdownToggleSvgSize?: SvgContainerSize;\n fetchMore?: () => void;\n}\n\nActionsDropdown.defaultProps = {\n dropdownToggleClassName: 'btn btn-light',\n dropdownToggleSvgSize: SvgContainerSize.Small\n};\n\nexport function ActionsDropdown(props: ActionsDropdownProps): React.ReactElement {\n if (!props.actions || !props.actions.length)\n return <></>;\n\n const isLazy = props.actions.some(a => a.lazyPlaceholder);\n\n let className = 'dropdown';\n\n if (props.className)\n className += ` ${props.className}`;\n\n // Generate unique id to avoid collisions.\n const dropdownToggleId = `actions-dropdown-${RandomHelper.getRandomInt()}`;\n\n let dropdownToggleClassName = `dropdown-toggle px-0 ${styles.dropdownToggle}`;\n\n if (props.dropdownToggleClassName)\n dropdownToggleClassName += ` ${props.dropdownToggleClassName}`;\n\n let currentGroup: string;\n\n return (\n <div className={className}>\n <button\n className={dropdownToggleClassName}\n type='button'\n id={dropdownToggleId}\n data-bs-toggle='dropdown'\n data-toggle='dropdown'\n aria-haspopup='true'\n aria-expanded='false'\n onClick={isLazy ? props.fetchMore : null}\n >\n <SvgContainer svgName={cvSvgLibrary.More} size={props.dropdownToggleSvgSize} />\n </button>\n <div className='dropdown-menu dropdown-menu-end dropdown-menu-right' aria-labelledby={dropdownToggleId}>\n {isLazy ?\n <LazyDropdownItems /> :\n props.actions.map((a, idx) => {\n const showDivider = currentGroup !== undefined && currentGroup !== a.group;\n currentGroup = a.group;\n \n if (a.tooltip) {\n return (\n <React.Fragment key={idx}>\n {showDivider && <hr className='dropdown-divider' role='separator'></hr>}\n <Tooltip title={a.tooltip} spanHack>\n <ActionsDropdownItem action={a} />\n </Tooltip>\n \n </React.Fragment>\n );\n }\n \n return (\n <React.Fragment key={idx}>\n {showDivider && <hr className='dropdown-divider' role='separator'></hr>}\n <ActionsDropdownItem action={a} />\n </React.Fragment>\n );\n })\n }\n </div>\n </div>\n );\n}","import React from 'react';\nimport { createPortal } from 'react-dom';\n\nexport const PortalHelper = {\n renderInPortalIfExists(component: React.ReactElement, portalContainer: Element | null): React.ReactElement {\n if (portalContainer)\n return createPortal(component, portalContainer);\n\n return component;\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 { 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 { 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 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 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 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} ${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={DateHelper.format(specialEvent.startDate, 'MMMM')}\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 &&\n <div className={`${styles.logoContainerLeft} d-none d-md-block partial-loading-background rounded-circle overflow-hidden me-3`}>\n {props.logo?.url &&\n <LazyImage src={ImageHelper.createUrl(props.logo?.url, { size: ImageSize.Small })} />}\n </div>\n }\n <h1 className={`text-white text-shadow pe-3 ${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.Small })}\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';\nimport { useDraggable, UseDraggableArguments, useDroppable, UseDroppableArguments } from '@dnd-kit/core';\n\ninterface DragDropMoveWrapperProps extends React.PropsWithChildren {\n droppable?: UseDroppableArguments,\n draggable?: UseDraggableArguments\n dragStyle?: string;\n dropStye?: string;\n setIsDragging?: React.Dispatch<React.SetStateAction<boolean>>\n isDragging?: boolean;\n}\n\nexport function DragDropMoveWrapper(props: DragDropMoveWrapperProps) {\n const {\n active: dragActive,\n isDragging,\n attributes,\n listeners,\n setNodeRef: draggableRef\n } = useDraggable({ ...props.draggable, disabled: !props.draggable });\n const {\n isOver,\n over,\n active: dropActive,\n setNodeRef: droppableRef\n } = useDroppable({ ...props.droppable, disabled: !props.droppable });\n\n React.useEffect(() => {\n const data = props.draggable?.data;\n if (Array.isArray(data) && data?.includes(dragActive?.id.toString())) {\n props.setIsDragging?.(isDragging);\n } else {\n props.setIsDragging?.(false);\n }\n }, [isDragging]);\n\n function isSelected() {\n const data = props.draggable?.data;\n return Array.isArray(data) && data.includes(props.draggable.id.toString());\n }\n\n return (\n <div\n ref={draggableRef}\n {...listeners}\n {...attributes}\n className={`${props.draggable ? 'cursor-grab' : 'cursor-default'} ${(isDragging && dragActive) || (props.isDragging && isSelected()) ? props.dragStyle : null}`}\n >\n <div\n ref={droppableRef}\n className={(dropActive && isOver && dragActive?.id !== over?.id) ? props.dropStye : null}\n >\n {props.children}\n </div>\n </div>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"actions\":\"cN3nB\",\"actionsContainer\":\"xM37V\",\"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 { 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 drag?: boolean;\n drop?: boolean;\n getAppLink: (f: Folder) => Core.AppLink;\n getFolderActions?: (f: Folder) => ActionOptions[];\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 actions = props.getFolderActions?.(props.folder);\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 >\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 </div>\n </DragDropMoveWrapper>\n );\n}","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 onToggleFolderView(): 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={onToggleFolderView}\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={onToggleFolderView} 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={onToggleFolderView} 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}","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}\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};\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.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 { Core } from 'libs/common/core';\nimport { Flight } from 'libs/common/flight';\n\nimport { Breadcrumb } from 'libs/shared/components/breadcrumbs/Breadcrumbs';\nimport { LibraryRequests } from 'libs/shared/flight-requests/LibraryRequests';\nimport { Folder, MasterNestedObject } from 'libs/shared/interfaces';\n\ninterface BuildOptions {\n folderId: string;\n firstItem?: Breadcrumb;\n lastItem?: Breadcrumb;\n getAppLink: (folder: MasterNestedObject<Folder>) => Core.AppLink;\n}\n\nexport function useBuildBreadcrumbs(options: BuildOptions): Breadcrumb[] {\n const { folderId, firstItem, lastItem, getAppLink } = options;\n\n const parentTree = Flight.useBasicFetch<MasterNestedObject<Folder>>(LibraryRequests.folderParentTree(folderId));\n\n if (!parentTree.data?.children?.length)\n return [];\n\n const searchStack: {\n node: MasterNestedObject<Folder>,\n path: MasterNestedObject<Folder>[]\n }[] = parentTree.data.children.map(c => ({ node: c, path: [c]}));\n\n let breadcrumbs: Breadcrumb[] = [];\n\n while (searchStack.length) {\n const { node, path } = searchStack.pop();\n \n if (node.data.id.toString() === folderId.toString())\n breadcrumbs = path.map(object => ({\n name: object.data.name,\n appLink: getAppLink(object)\n }));\n\n if (node.children)\n searchStack.push(...node.children.map(c => ({ node: c, path: [ ...path, c ]})));\n }\n\n if (firstItem) breadcrumbs.unshift(firstItem);\n if (lastItem) breadcrumbs.push(lastItem);\n\n breadcrumbs[breadcrumbs.length - 1].active = true;\n\n return breadcrumbs;\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 { Core } from 'libs/common/core';\nimport { TextHelper } from 'libs/common/react/utils/TextHelper';\n\nimport { Breadcrumb } from 'libs/shared/components/breadcrumbs/Breadcrumbs';\nimport { BG_COLOUR_CLASS_NAMES } from 'libs/shared/constants/ColourClassNames';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { VideoSortType } from 'libs/shared/enums/VideoSortType';\nimport { useBuildBreadcrumbs } from 'libs/shared/hooks/useBuildBreadcrumbs';\nimport { Folder, Library, VideoTypes } from 'libs/shared/interfaces';\n\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\n\nexport function getVideoAppLink(video: VideoTypes): Core.AppLink {\n switch (video.typeId) {\n case MasterType.Clip:\n return {\n application: AppChannels.CLIPS,\n action: Actions.Clips.PLAY_CLIP,\n args: [ video.id, TextHelper.slugify(video.name) ]\n };\n case MasterType.Interactive:\n return {\n application: AppChannels.INTERACTIVES,\n action: Actions.Interactives.VIEW_INTERACTIVE,\n args: [ video.id, TextHelper.slugify(video.name) ]\n };\n default:\n return {\n application: AppChannels.VIDEOS,\n action: Actions.Videos.PLAY_VIDEO,\n args: [ video.id, TextHelper.slugify(video.name) ]\n };\n }\n}\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}\n\nexport function useGetFolderBreadcrumbs(folderId: string, library: Library, sort: VideoSortType): Breadcrumb[] {\n return useBuildBreadcrumbs({\n folderId: library && folderId,\n getAppLink: object => getFolderAppLink(library.id, object.data, sort),\n firstItem: {\n name: library?.name,\n appLink: {\n application: AppChannels.LIBRARIES,\n action: Actions.Libraries.LIBRARY,\n args: [ library?.id, TextHelper.slugify(library?.name) ]\n }\n }\n });\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","Actions","orderedActions","actions","sort","a","b","order","buttonActions","moreActions","forEach","button","push","length","map","idx","key","href","onClick","tooltip","showSpinner","openInNewTab","disabled","iconButton","sortComponent","dropdownToggleClassName","actionsDropdownClassName","dropdownToggleSvgSize","fetchMore","LazyDropdownItems","style","padding","height","width","getDropdownItemClassName","actionClassName","ActionsDropdownItem","FunctionHelper","action","e","preventDefault","AnalyticsHelper","role","tabIndex","onKeyDown","ActionsDropdown","isLazy","some","lazyPlaceholder","currentGroup","dropdownToggleId","RandomHelper","id","size","showDivider","undefined","group","defaultProps","S","PortalHelper","renderInPortalIfExists","component","portalContainer","createPortal","BackButton","textShadow","backToName","color","extraClasses","backPhrase","colorClass","textShadowClass","RATIO","getSizeClass","heading","BannerHeader","banner","imageCdnUrl","blockColourClass","specialEvent","portalContainerContext","BannerPortalContext","imageWidth","useBreakpoints","xxl","specialEventIsToday","showComingSoon","today","DateHelper","Date","endDate","startDate","imageOptions","ratio","resizeType","url","ImageHelper","fallbackBaseUrl","fallbackCategoryName","containerProps","bannerClassName","backgroundImage","DetailsComponent","detailsComponent","backButtonAppLink","backButtonText","backButtonClasses","alignLogoLeft","logo","calendarTheme","Text","phrase","LazyImage","src","container","prevProps","nextProps","PartialBannerHeader","getDirectionClass","direction","Caret","DragDropMoveWrapper","data","draggable","dragActive","active","isDragging","attributes","listeners","draggableRef","setNodeRef","droppable","isOver","over","dropActive","droppableRef","Array","isArray","includes","toString","setIsDragging","ref","dragStyle","dropStye","children","LibraryFolder","thumbnailUrl","folder","thumbnail","UrlHelper","getFolderActions","drag","drop","name","BaseImage","imageType","imageClassName","ImageFallback","EXPANDED_FOLDERS_KEY","FolderList","breakpoints","LocalStorageHelper","_hasExpandedFolders","setHasExpandedFolders","hasExpandedFolders","expandFolders","folderLimit","xl","lg","md","onToggleFolderView","displayableFolders","folders","slice","canToggleCollapsedView","showHeading","DivButton","options","count","extraButtons","f","PartialFolder","PartialFolderList","fill","_","i","defaultErrors","notFound","forbidden","rating","yearLevel","region","privacy","badRequest","handleHttpError","info","customErrorMap","ignoreMap","statusCode","status","errorMap","generateCacheKey","flightObjs","obj","join","useHandleObjectError","_flightObjs","customErrors","ignoreErrors","useEffect","useBuildBreadcrumbs","folderId","firstItem","lastItem","parentTree","searchStack","c","node","path","breadcrumbs","pop","object","unshift","useFetchAllChildFolders","parentId","fetch","getRequest","cursor","useHandleLibraryType","request","hasCompleted","hasError","getVideoAppLink","video","typeId","application","args","getFolderAppLink","libraryId","params","getFolderBgColourClass","charCode","charCodeAt","useGetFolderBreadcrumbs","library","LibraryView","focusSearchBar","libraries","libraryFolders","categoryTree","user","owner","items","source","entity","location","actionType","descriptor","smartCount"],"sourceRoot":""}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
"use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[7293],{91200:(e,t,a)=>{a.d(t,{Y:()=>c});var n=a(32735),i=a(68050),r=a(69111),l=a(84231);function s(e,t){(null==t||t>e.length)&&(t=e.length);for(var a=0,n=new Array(t);a<t;a++)n[a]=e[a];return n}function c(e){var t,a=function(e){if(Array.isArray(e))return s(e)}(t=Array(e.numItems))||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(t)||function(e,t){if(e){if("string"==typeof e)return s(e,t);var a=Object.prototype.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)?s(e,t):void 0}}(t)||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.")}(),c=e.itemClassName||"";return n.createElement(n.Fragment,null,e.showHeading&&n.createElement("div",{className:"".concat(l.Z.partialHeading," mb-1 partial-loading-background")}),n.createElement(i.Z,{className:"mx-n1 mb-n2"},a.map((function(e,t){return n.createElement(r.Z,{key:t,xs:6,sm:4,lg:3,className:"".concat(c," px-1 pb-2")},n.createElement("div",{className:"".concat(l.Z.playlistItem," partial-loading-background rounded-3")}))}))))}c.defaultProps={numItems:8}},48745:(e,t,a)=>{a.d(t,{t:()=>k});var n=a(32735),i=a(82602),r=a(23481),l=a(110),s=a(65858),c=a(83345);const o={fontSmall:"OYBRp"};var m="playlists.playlistCount";function d(e){var t=function(e){var t,a,n,i,r,l;return!!e&&(null!==(a=null===(t=e.videos)||void 0===t?void 0:t.count)&&void 0!==a?a:0)+(null!==(i=null===(n=e.interactives)||void 0===n?void 0:n.count)&&void 0!==i?i:0)+(null!==(l=null===(r=e.clips)||void 0===r?void 0:r.count)&&void 0!==l?l:0)}(e.playlist);return!1===t||Number.isNaN(t)?n.createElement(n.Fragment,null):n.createElement("span",{className:o.fontSmall},n.createElement(c.x,{namespace:m,phrase:"count",options:{smartCount:t}}))}var u=a(20789),p=a(89725),v=a(64818);function g(e){var t,a,i,r=e.playlist._liteOwner;if(null===(t=e.playlist._isClickViewCurated)||void 0===t?void 0:t.value)return n.createElement(p.F,null);if(!(null==r?void 0:r.id)||!(null===(a=e.currentUser)||void 0===a?void 0:a.id))return n.createElement(n.Fragment,null);if(r.id.toString()===e.currentUser.id.toString())return n.createElement(n.Fragment,null);var l="string"==typeof r.avatar?r.avatar:null===(i=r.avatar)||void 0===i?void 0:i.url;return n.createElement(u.q,{imageUrl:l,imageCdnUrl:e.imageCdnUrl,initials:v.l.getInitials(r.name,r.surname)})}var y=a(36848),f=a(40955),b=a(75163),E=a(5465),h=a(54610),C=a(80143),N=a(9085),S=a(67453),w=a(84231),x="playlists.playlistList";function k(e){var t,a,c=S.j.createUrl(e.data.cover&&e.data.cover.url,{size:h.h2.Medium,resizeType:h.Nq.Cover}),o=e.data.subjectPresentationAudiences&&e.data.subjectPresentationAudiences.data,m=(0,C.n)(o,e.presentationAudiences),u=w.Z.playlistItem,p=!!c||!!e.showFallbackImage;p&&(u+=" ".concat(w.Z.playlistItemGradient)),!p&&e.bgColourClassNames&&(u+=" ".concat(w.Z.playlistItem," ").concat((0,N.x)(e.data.name,e.bgColourClassNames))),"round"===e.itemStyle&&(u+=" rounded-3 overflow-hidden"),"round-left"===e.itemStyle&&(u+=" rounded-start-lg overflow-hidden");var v=Object.assign(Object.assign({},e.analyticsData),{id:null===(t=e.data)||void 0===t?void 0:t.id,name:null===(a=e.data)||void 0===a?void 0:a.name}),k=Object.assign(Object.assign({},e.analyticsOptions),{entity:s.py.Playlist});return n.createElement(y.F,{appLink:e.appLink,analyticsData:v,analyticsOptions:k,title:function(){var t;return!e.data.contentModifiedDate||(null===(t=e.data._isClickViewCurated)||void 0===t?void 0:t.value)?"":r.T.getPhrase(x,"lastUpdated",{timeago:(0,i.WU)(l.O.convertUTCToLocal(e.data.contentModifiedDate))})}()},n.createElement(b.Z,{data:c,alt:e.data.name,className:u},!!e.showFallbackImage&&n.createElement(E.oy,{type:E.mS.Playlist}),n.createElement("div",{className:"text-white ".concat(w.Z.playlistMetadata)},!!e.showCount&&n.createElement(d,{playlist:e.data}),n.createElement("h5",{className:"mb-0 ".concat(e.titleClassName||"")},n.createElement("span",{className:"clamp-2"},e.data.name)),!!o&&!!o.length&&!!m&&n.createElement(f.P,{className:"".concat(e.audienceLabelClass?e.audienceLabelClass:""," mt-1"),audience:m,border:"white"})),!!e.showOwner&&!!e.imageCdnUrl&&n.createElement("div",{className:w.Z.ownerAvatarContainer},n.createElement(g,{playlist:e.data,currentUser:e.currentUser,imageCdnUrl:e.imageCdnUrl}))))}k.defaultProps={itemStyle:"square"}},31273:(e,t,a)=>{a.d(t,{P:()=>o});var n=a(32735),i=a(68050),r=a(69111),l=a(65858),s=a(48745),c={actionType:l.Vw.Click,entity:l.py.Playlist,location:l.LZ.PlaylistListItem,descriptor:l._S.Cover};function o(e){return n.createElement(i.Z,{className:"mx-n1"},e.extraPlaylistItem&&n.createElement(r.Z,{key:"extra-playlist-item",xs:6,sm:4,lg:3,className:"mb-2 px-1 ".concat(e.itemContainerClassName?e.itemContainerClassName:"")},e.extraPlaylistItem),e.playlists.map((function(t){return n.createElement(r.Z,{key:t.id,xs:6,sm:4,lg:3,className:"mb-2 px-1 ".concat(e.itemContainerClassName?e.itemContainerClassName:"")},n.createElement(s.t,{data:t,appLink:e.getPlaylistAppLink(t),imageCdnUrl:e.imageCdnUrl,currentUser:e.currentUser,presentationAudiences:e.presentationAudiences,bgColourClassNames:e.bgColourClassNames,showCount:e.showCount,showOwner:e.showOwner,showFallbackImage:e.showFallbackImage,titleClassName:e.itemTitleClassName,itemStyle:e.itemStyle,analyticsData:e.analyticsData,analyticsOptions:Object.assign(Object.assign({},e.analyticsOptions),c)}))})))}},98981:(e,t,a)=>{a.d(t,{YA:()=>n.Y,tN:()=>i.t});var n=a(91200),i=(a(31273),a(48745))},3626:(e,t,a)=>{a.d(t,{J:()=>S});var n=a(32735),i=a(68050),r=a(69111),l=a(49985),s=a(65858),c=a(40955),o=a(18559),m=a(17464),d=a(72355),u=a(66190),p=a(77590),v=a(85784),g=a(70872),y=a(11882),f=a(54610),b=a(68626),E=a(80143),h=a(59598),C=a(31908);const N={partialHeroThumbnail:"z0_Sm",partialSeriesText:"xuWtC",partialVideoTitleText:"fXYdC",partialBadge:"FlUpr",partialDescription:"YgWxP",partialSubject:"QBKwQ",partialHeading:"S__E9",guidance:"Ax9h2",description:"zejMP",details:"MRyVe"};function S(e){var t,a=e.video,S=e.presentationAudiences,w=e.getVideoAppLink,x=e.subTextAppLink,k=e.hideInteractiveBadge,I=null===(t=null==a?void 0:a.subjectPresentationAudiences)||void 0===t?void 0:t.data,O=(0,E.n)(I,S),A=l.k.mergeOptions(e.analyticsOptions,{location:s.LZ.ClassificationHero,entity:C.M.getAnalyticsEntity(a)}),j=n.useRef();return a?n.createElement(i.Z,null,n.createElement(r.Z,{xs:12,md:6},n.createElement("div",{ref:j},n.createElement(d.u,{analyticsData:e.analyticsData,analyticsOptions:A,video:a,appLink:w(e.video,{}),imageOptions:{size:f.h2.Medium},textPosition:b.z.Independent,type:"static",setFavourite:e.setFavourite,canFavourite:e.canFavourite,audience:"thumbnail"===e.badgePosition?O:null,newDurationStyle:e.newDurationStyle,hideRating:"thumbnail"!==e.badgePosition||!!O,companyLogoFallbackUrl:e.companyLogoFallbackUrl,subTextType:"none"}))),n.createElement(r.Z,{xs:12,md:6,className:"".concat(N.details," position-relative")},n.createElement(v.Q,{analyticsData:e.analyticsData,analyticsOptions:A,video:a}),n.createElement(y.$,{type:e.subTextType,analyticsData:e.analyticsData,analyticsOptions:A,video:a,appLink:x,className:"text-reset"}),n.createElement(g.u,{video:a,analyticsData:e.analyticsData,analyticsOptions:A,appLink:w(e.video,{}),linkClassName:"d-inline-block",textClassName:"h4",yearGroups:e.yearGroups}),"info-panel"===e.badgePosition&&n.createElement(m.c,{className:"pb-1"},!k&&n.createElement(o.C,{type:o.g.Interactive,data:a.interactives}),n.createElement(o.C,{type:o.g.Rating,data:a.rating}),n.createElement(o.C,{type:o.g.ProductionYear,data:a.productionYear})),n.createElement("p",{className:"mb-1"},n.createElement("span",{className:N.description},a.description)),"info-panel"===e.badgePosition&&n.createElement(c.P,{audience:O,className:"mt-1",border:"dark"}),e.showVideoGuidance&&n.createElement("div",{className:"d-flex ".concat(N.guidance)},n.createElement(u.Y,{video:a,appLink:e.getVideoAppLink(a,{scrollToPosition:h.K.Interactives}),analyticsData:e.analyticsData,analyticsOptions:A}),n.createElement(p.x,{video:a,appLink:e.getVideoAppLink(a,{scrollToPosition:h.K.Resources}),analyticsData:e.analyticsData,analyticsOptions:A})))):n.createElement(n.Fragment,null)}S.defaultProps={newDurationStyle:!0,badgePosition:"thumbnail"}},34004:(e,t,a)=>{a.d(t,{r:()=>p});var n=a(32735),i=a(40955),r=a(18559),l=a(75163),s=a(5465),c=a(54610),o=a(49439),m=a(80143);const d={labelContainer:"ieonz",hoverActive:"vqHCl",mask:"qEOPN",largeHoverTitle:"ZYApF",smallHoverTitle:"qcfHO",largeHoverDescription:"Uh4gM",smallHoverDescription:"TiqqV"};function u(e,t){(null==t||t>e.length)&&(t=e.length);for(var a=0,n=new Array(t);a<t;a++)n[a]=e[a];return n}function p(e){var t,a,p=(t=(0,o.L)({className:d.hoverActive}),a=2,function(e){if(Array.isArray(e))return e}(t)||function(e,t){var a=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=a){var n,i,r,l,s=[],c=!0,o=!1;try{if(r=(a=a.call(e)).next,0===t){if(Object(a)!==a)return;c=!1}else for(;!(c=(n=r.call(a)).done)&&(s.push(n.value),s.length!==t);c=!0);}catch(e){o=!0,i=e}finally{try{if(!c&&null!=a.return&&(l=a.return(),Object(l)!==l))return}finally{if(o)throw i}}return s}}(t,a)||function(e,t){if(e){if("string"==typeof e)return u(e,t);var a=Object.prototype.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)?u(e,t):void 0}}(t,a)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),v=p[0],g=p[1],y=e.series&&e.series.subjectPresentationAudiences&&e.series.subjectPresentationAudiences.data||[],f=(0,m.n)(y,e.presentationAudiences),b=!!(y&&y.length&&f);return n.createElement("div",{ref:v},g&&n.createElement("div",{className:"py-3 text-white text-center mb-3 ".concat(d.mask)},n.createElement("h3",{className:"fw-semibold ".concat(d.hoverTitle," ").concat(e.isSmall?d.smallHoverTitle:d.largeHoverTitle)},n.createElement("span",{className:"clamp-3"},e.series.name)),!!e.series.description&&n.createElement("p",{className:"".concat(d.hoverDescription," ").concat(e.isSmall?d.smallHoverDescription:d.largeHoverDescription," mb-0")},e.series.description)),n.createElement(l.Z,{data:e.series.tallPoster,alt:e.series.name,imageType:c.__.TallPosters,preload:e.preloadImage,imageOptions:{size:c.h2.Large},imageClassName:e.imageClass?e.imageClass:"rounded-3"},n.createElement(s.oy,{type:s.mS.Series}),n.createElement("div",{className:"position-absolute text-white ".concat(d.labelContainer)},b?n.createElement(i.P,{audience:f,border:"white"}):n.createElement(r.C,{type:r.g.Rating,data:e.series.rating}))))}},2192:(e,t,a)=>{a.d(t,{M:()=>y,Q:()=>f});var n=a(32735),i=a(45157),r=a(36848),l=a(60376),s=a(5465),c=a(83914),o=a(83345),m=a(54610),d=a(67453),u=a(35223),p=a(92038),v=function(e){var t=e.name,a=e.multiline,i="".concat(p.Z.comingSoonPanel," \n d-flex flex-column align-items-center justify-content-center px-3 text-center"),r="";return a?r+=" ".concat(p.Z.clamped," clamp-2"):(i+=" text-nowrap",r+=" text-truncate"),n.createElement("div",{className:i},n.createElement("small",{className:"text-secondary"},n.createElement(o.x,{namespace:"shared.subjectWidgetItem",phrase:"comingSoon"})),n.createElement("p",{className:"".concat(p.Z.name," h6")},n.createElement("span",{className:r},t)))},g=function(e){var t=e.name,a=e.multiline,i=e.subtitle,r="px-3 d-flex flex-column justify-content-center",l="".concat(p.Z.name," h6");return a?l+=" clamp-3 text-start":(r+=" text-nowrap text-truncate",l+=" text-truncate mb-0 pb-1"),n.createElement("div",{className:r},i&&n.createElement("div",{className:"text-secondary clamp-1 ".concat(p.Z.text)},i),n.createElement("div",{className:l,title:t},t))};function y(e){var t=d.j.createUrl(e.coverUrl,{size:e.isLarge?m.h2.Medium:m.h2.Small}),a={name:e.data.name,multiline:e.isLarge||e.multiline,subtitle:e.subtitle};return n.createElement("div",{className:"border d-flex position-relative ".concat(e.className," ").concat(p.Z.widgetItem," ").concat(e.isSelected?"border-success border-2":""),id:"".concat(e.data.id,"-").concat(i.Y.getRandomInt())},e.isSelected&&n.createElement("div",{className:"".concat(p.Z.selectedMask," border-2")}),n.createElement("div",{className:"".concat(p.Z.imagePanel," ").concat(e.isLarge?p.Z.large:"")},e.isSelected&&!e.hideCheckmark&&n.createElement("div",{className:p.Z.selected},n.createElement(l.f,{svgName:u.vn.Check,svgSize:c.S.Large,textVariant:"white",variant:"green"})),n.createElement("div",{className:"".concat(p.Z.image," ").concat(e.imageClassName),style:e.coverUrl?{backgroundImage:"url('".concat(t,"')")}:{}}),!e.hideFallback&&n.createElement(s.oy,{type:s.mS.Subject,extraClasses:e.isLarge?p.Z.large:""})),e.isComingSoon?n.createElement(v,Object.assign({},a)):n.createElement(g,Object.assign({},a)))}function f(e){var t,a=e.getChildAppLink?e.getChildAppLink(e.data):null;return n.createElement(n.Fragment,null,a?n.createElement(r.F,{className:p.Z.appLink,appLink:a,analyticsData:e.analyticsData,analyticsOptions:e.analyticsOptions,appLinkOptions:null===(t=e.getChildAppLinkOptions)||void 0===t?void 0:t.call(e)},n.createElement(y,Object.assign({},e))):n.createElement(y,Object.assign({},e)))}},43741:(e,t,a)=>{a.d(t,{M:()=>o,Q:()=>c});var n=a(32735),i=a(45157),r=a(5465),l=a(92038);function s(e,t){(null==t||t>e.length)&&(t=e.length);for(var a=0,n=new Array(t);a<t;a++)n[a]=e[a];return n}var c=function(){var e,t,a=(e=n.useState(i.Y.getRandomInt(5)+3+"rem"),t=1,function(e){if(Array.isArray(e))return e}(e)||function(e,t){var a=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=a){var n,i,r,l,s=[],c=!0,o=!1;try{if(r=(a=a.call(e)).next,0===t){if(Object(a)!==a)return;c=!1}else for(;!(c=(n=r.call(a)).done)&&(s.push(n.value),s.length!==t);c=!0);}catch(e){o=!0,i=e}finally{try{if(!c&&null!=a.return&&(l=a.return(),Object(l)!==l))return}finally{if(o)throw i}}return s}}(e,t)||function(e,t){if(e){if("string"==typeof e)return s(e,t);var a=Object.prototype.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)?s(e,t):void 0}}(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.")}())[0];return n.createElement("div",{className:"border d-flex position-relative me-2 ".concat(l.Z.widgetItem)},n.createElement("div",{className:l.Z.imagePanel}),n.createElement("div",{className:"px-2",style:{width:a}}),n.createElement("div",{className:l.Z.partialIcon},n.createElement(r.oy,{type:r.mS.Subject})))},o=function(){return n.createElement("div",{className:"border d-flex position-relative me-2 ".concat(l.Z.widgetItem)},n.createElement("div",{className:"".concat(l.Z.partialLargeImage)}),n.createElement("div",{className:"px-2"}),n.createElement("div",{className:l.Z.partialIcon},n.createElement(r.oy,{type:r.mS.Subject,extraClasses:l.Z.partialLargeFallback})))}},91028:(e,t,a)=>{a.d(t,{V:()=>c});var n=a(32735),i=a(65858),r=a(2192),l=a(52641),s=a(2284),c=n.memo((function(e){var t,a,c,o,m,d=(null===(t=e.data)||void 0===t?void 0:t.status)===s.W.ComingSoon,u=function(e,t){var a;if((null==t?void 0:t.length)>=l._.MULTI_PRESENTATION_THRESHOLD)return null===(a=null==t?void 0:t.find((function(t){return t.id===e})))||void 0===a?void 0:a.name}(e.data.presentationId,null==e?void 0:e.availablePresentations),p=Object.assign(Object.assign({},e.analyticsData),{id:null===(a=e.data)||void 0===a?void 0:a.id,name:null===(c=e.data)||void 0===c?void 0:c.name,presentationId:e.data.presentationId,comingSoon:!!d}),v=Object.assign(Object.assign({location:i.LZ.ClassificationListItem},e.analyticsOptions),{actionType:i.Vw.Click,entity:i.py.Classification,descriptor:i._S.Cover});return n.createElement(r.Q,Object.assign({},e,{analyticsData:p,analyticsOptions:v,coverUrl:null===(o=e.data.cover)||void 0===o?void 0:o.url,subtitle:(null===(m=e.getSubtitle)||void 0===m?void 0:m.call(e,e.data))||u,isComingSoon:d}))}))},9513:(e,t,a)=>{a.d(t,{Ml:()=>i.M,Qh:()=>i.Q,Vz:()=>n.V});var n=a(91028),i=a(43741),r=(a(32735),a(65858));a(36848),a(83914),a(83345),a(35223),a(92038),r.Vw.Click,r.py.UserSetting,r._S.Tile,a(2786),r.Vw.Click,r.py.Url,r._S.Tile},2284:(e,t,a)=>{var n;a.d(t,{W:()=>n}),function(e){e.Draft="Draft",e.ComingSoon="ComingSoon",e.Published="Published"}(n||(n={}))},84231:(e,t,a)=>{a.d(t,{Z:()=>n});const n={playlistItem:"CaRJx",playlistItemGradient:"BI7p2",playlistMetadata:"eDk1l",partialHeading:"w4lWh",ownerAvatarContainer:"JImqE"}},92038:(e,t,a)=>{a.d(t,{Z:()=>n});const n={appLink:"fFjKN",name:"A_by9",selectedMask:"xSQtR",widgetItem:"Ys9W_",text:"JfAoy",imagePanel:"aUNDc",partialLargeImage:"RuLxv",selected:"BViJb",image:"LkTep",dragHandle:"CJqvP",large:"R5clw",comingSoonPanel:"Wa2PG",editSubjectsItem:"gGNFD",allSubjectsItem:"IHdlJ",logoContainer:"Nzaes",draggingItem:"zUOye",partialLargeFallback:"FmJP9",partialIcon:"sdZuo"}},82602:(e,t,a)=>{a.d(t,{WU:()=>o});var n=["second","minute","hour","day","week","month","year"],i=["秒","分钟","小时","天","周","个月","年"],r={},l=function(e,t){r[e]=t},s=[60,60,24,7,365/7/12,12];function c(e){return e instanceof Date?e:!isNaN(e)||/^\d+$/.test(e)?new Date(parseInt(e)):(e=(e||"").trim().replace(/\.\d+/,"").replace(/-/,"/").replace(/-/,"/").replace(/(\d)T(\d)/,"$1 $2").replace(/Z/," UTC").replace(/([+-]\d\d):?(\d\d)/," $1$2"),new Date(e))}var o=function(e,t,a){var n=function(e,t){return(+(t?c(t):new Date)-+c(e))/1e3}(e,a&&a.relativeDate);return function(e,t){for(var a=e<0?1:0,n=e=Math.abs(e),i=0;e>=s[i]&&i<s.length;i++)e/=s[i];return(e=Math.floor(e))>(0==(i*=2)?9:1)&&(i+=1),t(e,i,n)[a].replace("%s",e.toString())}(n,function(e){return r[e]||r.en_US}(t))};l("en_US",(function(e,t){if(0===t)return["just now","right now"];var a=n[Math.floor(t/2)];return e>1&&(a+="s"),[e+" "+a+" ago","in "+e+" "+a]})),l("zh_CN",(function(e,t){if(0===t)return["刚刚","片刻后"];var a=i[~~(t/2)];return[e+" "+a+"前",e+" "+a+"后"]}))}}]);
|
|
2
|
-
//# sourceMappingURL=7293-afd3349468-lite.chunk.js.map
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
"use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[8261],{11921:(e,t,a)=>{a.d(t,{F:()=>o});var r=a(32735),n=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 r.createElement(l.x,{svgName:n.vn.Caret,className:"".concat(i(e.direction)," svg-container d-inline-block ").concat(e.className)})}o.defaultProps={direction:"right"}},83834:(e,t,a)=>{a.d(t,{$:()=>S});var r=a(32735),n=a(57900),l=a(11921),i=a(11607),o=a(97395),c=a(83657),s=a(36848),d=a(88711),u=a(75163),m=a(5465),p=a(54610);const f={actions:"cN3nB",actionsContainer:"xM37V",dropStyle:"kvCLS",dragStyle:"md9Na"};function v(e){var t,a=e.folder.thumbnail?o._.urlBuilder(e.folder.thumbnail.url,{size:p.h2.Small}):null,n=null===(t=e.getFolderActions)||void 0===t?void 0:t.call(e,e.folder);return r.createElement(d.j,{draggable:e.drag&&{id:e.folder.id,data:e.folder},droppable:e.drop&&{id:e.folder.id,data:e.folder},dropStye:f.dropStyle,dragStyle:f.dragStyle},r.createElement("div",{className:"position-relative"},r.createElement(s.F,{className:"rounded-3 d-block text-decoration-none",appLink:e.getAppLink(e.folder),title:e.folder.name},r.createElement(u.Z,{data:a,imageType:p.__.Thumbnails,imageClassName:"rounded-top-lg"},r.createElement(m.oy,{name:e.folder.name,type:m.mS.Folder,extraClasses:"rounded-top-lg"})),r.createElement("h3",{className:"bg-white border-start border-end border-bottom rounded-bottom-lg font-size-normal fw-semibold mb-0 p-2"},r.createElement("span",{className:"text-truncate d-block"},e.folder.name))),(null==n?void 0:n.length)&&r.createElement(c.e,{actions:n,className:f.actionsContainer,actionsDropdownClassName:f.actions,dropdownToggleSvgSize:null})))}var h=a(83345),g=a(79967);function b(e,t){(null==t||t>e.length)&&(t=e.length);for(var a=0,r=new Array(t);a<t;a++)r[a]=e[a];return r}var y="libraries.folderList",E="has:expanded:library:folders";function S(e){var t,a,o,c=(a=r.useState(n.SG.get(E)||!1),o=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 r,n,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=(r=l.call(a)).done)&&(o.push(r.value),o.length!==t);c=!0);}catch(e){s=!0,n=e}finally{try{if(!c&&null!=a.return&&(i=a.return(),Object(i)!==i))return}finally{if(s)throw n}}return o}}(a,o)||function(e,t){if(e){if("string"==typeof e)return b(e,t);var a=Object.prototype.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)?b(e,t):void 0}}(a,o)||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.")}()),s=c[0],d=c[1],u=e.expandFolders||s,m=(t=(0,g.k)()).xxl||t.xl||t.lg?6:t.md?4:3;function p(){d(!u),n.SG.set(E,!u)}var f=u?e.folders:e.folders.slice(0,m),S=e.folders.length>m&&!e.expandFolders;return r.createElement(r.Fragment,null,r.createElement("div",{className:"d-flex justify-content-between align-items-center"},e.showHeading&&r.createElement(i.L,{className:"d-inline-flex align-items-center mb-2 px-2 ".concat(S?"":"cursor-default"),onClick:p},S&&r.createElement(l.F,{direction:u?"down":"right"}),r.createElement("h2",{className:"h4 mb-0"},r.createElement(h.x,{namespace:y,phrase:"folders",options:{count:e.folders.length}}))),!(u||!S)&&r.createElement("div",{className:"d-flex justify-content-end justify-self-end px-2"},r.createElement(i.L,{onClick:p,className:"text-dark hover-text-underline d-inline-block"},r.createElement(h.x,{namespace:y,phrase:"seeAll",options:{count:e.folders.length}}))),!(!u||!S)&&r.createElement("div",{className:"d-flex justify-content-end justify-self-end px-2"},r.createElement(i.L,{onClick:p,className:"text-dark hover-text-underline d-inline-block"},r.createElement(h.x,{namespace:y,phrase:"seeLess"}))),e.extraButtons?e.extraButtons:r.createElement(r.Fragment,null)),r.createElement("div",{className:"row mx-1"},f.map((function(t){return r.createElement("div",{key:t.id,className:"col-4 col-md-3 col-lg-2 px-1 pb-3"},r.createElement(v,{folder:t,getAppLink:e.getAppLink,getFolderActions:e.getFolderActions,drag:e.drag,drop:e.drop}))}))))}S.defaultProps={showHeading:!0}},65403:(e,t,a)=>{a.d(t,{i:()=>i});var r=a(32735);const n={partialFolderHeading:"dhbsL",partialFolderThumbnail:"CI9vk",partialFolderName:"l0Nll"};var l=function(){return r.createElement("div",{className:"col-4 col-md-3 col-lg-2 px-1 pb-3"},r.createElement("div",{className:"".concat(n.partialFolderThumbnail," partial-loading-background rounded-top-lg")}),r.createElement("div",{className:"".concat(n.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 r.createElement(r.Fragment,null,r.createElement("div",{className:"".concat(n.partialFolderHeading," h4 mb-2 partial-loading-background")}," "),r.createElement("div",{className:"row mx-n1"},Array(a).fill(null).map((function(e,t){return r.createElement(l,{key:t})}))))}},17087:(e,t,a)=>{a.d(t,{T:()=>o});var r=a(20354),n=a(98064);function l(e){return function(e){if(Array.isArray(e))return i(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,t){if(e){if("string"==typeof e)return i(e,t);var a=Object.prototype.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)?i(e,t):void 0}}(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 a=0,r=new Array(t);a<t;a++)r[a]=e[a];return r}function o(e){var t,a,i=e.folderId,o=e.firstItem,c=e.lastItem,s=e.getAppLink,d=r.a.useBasicFetch(n.D.folderParentTree(i));if(!(null===(a=null===(t=d.data)||void 0===t?void 0:t.children)||void 0===a?void 0:a.length))return[];for(var u=d.data.children.map((function(e){return{node:e,path:[e]}})),m=[],p=function(){var e=u.pop(),t=e.node,a=e.path;t.data.id.toString()===i.toString()&&(m=a.map((function(e){return{name:e.data.name,appLink:s(e)}}))),t.children&&u.push.apply(u,l(t.children.map((function(e){return{node:e,path:[].concat(l(a),[e])}}))))};u.length;)p();return o&&m.unshift(o),c&&m.push(c),m[m.length-1].active=!0,m}},98860:(e,t,a)=>{a.d(t,{P:()=>o});var r=a(20354),n=a(98064),l=a(3010),i=a(45719);function o(e){var t=r.a.useGetFetch();function a(t){return n.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 r=a(32735),n=a(81886),l=a(96560),i=a(67058);function o(e){r.useEffect((function(){e.hasCompleted&&!e.hasError&&e.data.type!==l.r.CustomLibrary&&n.Q.Ry.throw(new i.d)}),[e.hasCompleted])}},3435:(e,t,a)=>{a.r(t),a.d(t,{LibraryFolderView:()=>te});var r=a(32735),n=a(70680),l=a(23481),i=a(20354),o=a(65858),c=a(43500),s=a(89043),d=a(49935),u=a(83834),m=a(10874),p=a(4201),f=a(83345),v=a(79718),h=a(51365),g=a(94644),b=a(39151),y=a(1666),E=a(98064),S=a(31949),k=a(1575),L=a(69883),x=a(91286),F=a(60115),N=a(79612),A=a(35223),C=a(68140),I=a(14070),w=a(97291),O=a(10671),T=a(27638),V=a(44110),B=a(97816),j=a(71020),P=a(13231),R=a(22902),D=a(10741),H=a(23232),_=a(99742),M="libraries.libraryFolderEmptyState";function Z(){return r.createElement(f.D.Provider,{value:M},r.createElement(H.u,null,r.createElement(H.u.Image,{src:_.W.EmptyStates.Libraries.FOLDER}),r.createElement(H.u.Heading,null,r.createElement(f.x,{phrase:"heading"})),r.createElement(H.u.Info,null,r.createElement(f.x,{phrase:"info"}))))}var G=a(8406),U=a(82431),z="libraries.libraryFolderVideos";function W(e){var t,a=(0,p.of)().focusSearchBar,n=(0,R.T)().hasPermissions;return e.videos.length||e.hasSubFolders?e.videos.length?r.createElement("div",null,e.hasSubFolders&&r.createElement("div",{className:"d-flex justify-content-between align-items-center"},r.createElement("h2",{className:"h4 mb-0"},r.createElement(f.x,{namespace:z,phrase:"videos"})),r.createElement("div",{className:"d-flex"},r.createElement(m.h,{svgName:A.vn.Search,appLink:{application:w.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}},r.createElement(f.x,{namespace:z,phrase:"searchLibrary",options:{smartCount:null===(t=e.libraries)||void 0===t?void 0:t.length}})),r.createElement(v.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}}))),r.createElement(P.E4,{videos:e.videos,yearGroups:e.yearGroups,getVideoAppLink:G.lS,getSubTextAppLink:function(e){return U.j.getSeriesAppLink(e.series)},setFavourite:e.setFavourite,canFavourite:e.canFavourite,presentationAudiences:e.audiences,hasPermissions:n,getPreviewQuestionsAppLink:function(e){return D.j.getPreviewQuestionsAppLink(e)}}),(e.hasMore||e.isFetching)&&r.createElement(j._,{isFetching:e.isFetching,fetchNext:e.fetchNext,nextCursor:e.nextCursor})):r.createElement(r.Fragment,null):r.createElement(Z,null)}var $=a(98860),Q=a(21325),Y=a(65403),J=a(74696);const K={subheading:"IJZtA"};function q(){return r.createElement(r.Fragment,null,r.createElement("div",{className:"m-3"},r.createElement(Y.i,null)),r.createElement("div",{className:"mx-3 mb-3"},r.createElement("div",{className:"".concat(K.subheading," partial-loading-background mb-2")}),r.createElement(J.S,null)))}var X="libraries.libraryFolder",ee=l.T.encloseNamespace(X);function te(e){var t,a,l,j,P,R,D,H,_=(0,n.I0)(),M=(0,L.Z)(),Z=(0,p.of)().focusSearchBar,U=i.a.useBasicFetch(E.D.domainLibraries(["customLibrary","sharedLibrary"])),z=i.a.useBasicFetch(E.D.library(e.libraryId)),Y=i.a.useBasicFetch(E.D.folder(e.folderId)),J=(0,$.P)(e.folderId),K=i.a.useBasicFetch(S.N.currentUser()),te=i.a.useBasicFetch(b.L.config()),ae=i.a.useBasicFetch((null===(t=K.data)||void 0===t?void 0:t.isAuthenticated)&&y.h.yearGroups(K.data.customerId)),re=(0,O._)({location:O.i.VideoItem}),ne=(0,T.u)(o.LZ.VideoThumbnail),le=ne.setFavourite,ie=ne.canFavourite,oe=(0,G.Bf)(e.folderId,z.data,e.sort),ce=(0,V.i)();(0,N.M)({title:null===(a=Y.data)||void 0===a?void 0:a.name}),(0,x.v)([z,Y]),(0,Q.o)(z);var se=!!K.data&&C.d.getOrSetSortType(K.data.id,e.sort),de=(0,F.K)(ve,he,(function(e,t){if(1===e)return(0,g.r)(t);M.error(ee("error"))})),ue=de.items,me=de.hasMore,pe=de.isFetching,fe=de.nextCursor;function ve(t){return k.R.collectionVideos(e.folderId,se,t)}function he(e){return i.a.getFetch(_)(ve(e))}(0,B.V)(ue);var ge=!(!J.hasCompleted||(null===(l=J.items)||void 0===l?void 0:l.length));return r.createElement(h.M.Provider,{value:re},z.data&&Y.data&&te.data?r.createElement(s.p,{heading:Y.data.name,banner:Y.data.banner,imageCdnUrl:te.data.imageCdnUrl,blockColourClass:(0,G.WO)(Y.data),logo:null===(j=z.data.owner)||void 0===j?void 0:j.logo}):r.createElement(s.v,null),r.createElement("div",{className:"d-flex justify-content-between align-items-center py-3 mx-3 ".concat(ge?"":"border-bottom")},z.data&&Y.data?r.createElement(d.Oo,{breadcrumbs:oe}):r.createElement(d.b2,null),r.createElement("div",{className:"d-flex"},(ge||!(null==ue?void 0:ue.length))&&r.createElement(m.h,{svgName:A.vn.Search,appLink:{application:w.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}},r.createElement(f.x,{namespace:X,phrase:"searchLibrary",options:{smartCount:null!==(R=null===(P=U.data)||void 0===P?void 0:P.length)&&void 0!==R?R:1}})),ge&&Y.data&&r.createElement(v.p,{variant:"outline-dark",type:se,getSortAppLink:function(t){return(0,G.a5)(e.libraryId,Y.data,t)},analyticsOptions:{location:o.LZ.VideoListHeader,entity:o.py.Video,actionType:o.Vw.Sort,workflowPhase:o.eu.Complete}}))),ue&&J?r.createElement(r.Fragment,null,!!(null===(D=J.items)||void 0===D?void 0:D.length)&&r.createElement("div",{className:"px-2 py-3"},r.createElement(u.$,{folders:J.items,getAppLink:function(t){return(0,G.a5)(e.libraryId,t,se)},expandFolders:!ue.length})),r.createElement("div",{className:"px-3 pb-3"},r.createElement(W,{videos:ue,yearGroups:ae.data,hasSubFolders:!!(null===(H=J.items)||void 0===H?void 0:H.length),setFavourite:le,canFavourite:ie,hasMore:me,isFetching:pe,fetchNext:he,nextCursor:fe,sort:se,getSortAppLink:function(t){return(0,G.a5)(e.libraryId,Y.data,t)},audiences:ce.data,libraries:U.data}))):r.createElement(q,null))}},8406:(e,t,a)=>{a.d(t,{Bf:()=>m,WO:()=>u,a5:()=>d,lS:()=>s});var r=a(28400),n=a(7733),l=a(4594),i=a(17087),o=a(14070),c=a(97291);function s(e){switch(e.typeId){case l.E.Clip:return{application:c.O.CLIPS,action:o.e.Clips.PLAY_CLIP,args:[e.id,r.m.slugify(e.name)]};case l.E.Interactive:return{application:c.O.INTERACTIVES,action:o.e.Interactives.VIEW_INTERACTIVE,args:[e.id,r.m.slugify(e.name)]};default:return{application:c.O.VIDEOS,action:o.e.Videos.PLAY_VIDEO,args:[e.id,r.m.slugify(e.name)]}}}function d(e,t,a){return e&&t?{application:c.O.LIBRARIES,action:o.e.Libraries.FOLDER,args:[e,t.id,r.m.slugify(t.name)],params:{sort:a}}:null}function u(e){for(var t,a,r=0,l=0;null!==(a=l<(null===(t=e.name)||void 0===t?void 0:t.length))&&void 0!==a&&a;l++)r+=e.name.charCodeAt(l);return n.o[r%n.o.length]}function m(e,t,a){return(0,i.T)({folderId:t&&e,getAppLink:function(e){return d(t.id,e.data,a)},firstItem:{name:null==t?void 0:t.name,appLink:{application:c.O.LIBRARIES,action:o.e.Libraries.LIBRARY,args:[null==t?void 0:t.id,r.m.slugify(null==t?void 0:t.name)]}}})}}}]);
|
|
2
|
-
//# sourceMappingURL=8261-72453f1978-lite.chunk.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"scripts/8261-72453f1978-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/library-folder/library-folder.scss","file:///app/packages/libs/shared/src/components/library-folder/LibraryFolder.tsx","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/hooks/useBuildBreadcrumbs.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/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\"};","// extracted by mini-css-extract-plugin\nexport default {\"actions\":\"cN3nB\",\"actionsContainer\":\"xM37V\",\"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 { 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 drag?: boolean;\n drop?: boolean;\n getAppLink: (f: Folder) => Core.AppLink;\n getFolderActions?: (f: Folder) => ActionOptions[];\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 actions = props.getFolderActions?.(props.folder);\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 >\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 </div>\n </DragDropMoveWrapper>\n );\n}","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 onToggleFolderView(): 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={onToggleFolderView}\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={onToggleFolderView} 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={onToggleFolderView} 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}","import { Core } from 'libs/common/core';\nimport { Flight } from 'libs/common/flight';\n\nimport { Breadcrumb } from 'libs/shared/components/breadcrumbs/Breadcrumbs';\nimport { LibraryRequests } from 'libs/shared/flight-requests/LibraryRequests';\nimport { Folder, MasterNestedObject } from 'libs/shared/interfaces';\n\ninterface BuildOptions {\n folderId: string;\n firstItem?: Breadcrumb;\n lastItem?: Breadcrumb;\n getAppLink: (folder: MasterNestedObject<Folder>) => Core.AppLink;\n}\n\nexport function useBuildBreadcrumbs(options: BuildOptions): Breadcrumb[] {\n const { folderId, firstItem, lastItem, getAppLink } = options;\n\n const parentTree = Flight.useBasicFetch<MasterNestedObject<Folder>>(LibraryRequests.folderParentTree(folderId));\n\n if (!parentTree.data?.children?.length)\n return [];\n\n const searchStack: {\n node: MasterNestedObject<Folder>,\n path: MasterNestedObject<Folder>[]\n }[] = parentTree.data.children.map(c => ({ node: c, path: [c]}));\n\n let breadcrumbs: Breadcrumb[] = [];\n\n while (searchStack.length) {\n const { node, path } = searchStack.pop();\n \n if (node.data.id.toString() === folderId.toString())\n breadcrumbs = path.map(object => ({\n name: object.data.name,\n appLink: getAppLink(object)\n }));\n\n if (node.children)\n searchStack.push(...node.children.map(c => ({ node: c, path: [ ...path, c ]})));\n }\n\n if (firstItem) breadcrumbs.unshift(firstItem);\n if (lastItem) breadcrumbs.push(lastItem);\n\n breadcrumbs[breadcrumbs.length - 1].active = true;\n\n return breadcrumbs;\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 { VideoSortType } from 'libs/shared/enums/VideoSortType';\nimport { usePermissions } from 'libs/shared/hooks/usePermissions';\nimport { CanFavouriteFunc, 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';\n\nimport { LibraryFolderEmptyState } from 'apps/libraries/views/library-folder/empty-state/LibraryFolderEmptyState';\nimport { getVideoAppLink } from 'apps/libraries/views/library-folder/LibraryFolderViewUtils';\nimport { SeriesAppLinkHelper } from 'apps/series/SeriesAppLinkHelper';\n\nconst namespace = 'libraries.libraryFolderVideos';\n\ninterface LibraryFolderVideosProps {\n videos: VideoTypes[];\n yearGroups: YearGroup[];\n hasSubFolders: boolean;\n setFavourite: FavouriteFunc;\n canFavourite: CanFavouriteFunc;\n audiences: PresentationAudience[];\n libraries: Library[];\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}\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={getVideoAppLink}\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 />\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 { 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 { 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, useGetFolderBreadcrumbs } 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\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 user = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n const config = Flight.useBasicFetch<Config>(ConfigRequests.config());\n const yearGroups = Flight.useBasicFetch<YearGroup[]>(\n user.data?.isAuthenticated && CustomerRequests.yearGroups(user.data.customerId)\n );\n\n const videoActions = useVideoActions({ location: VideoActionsLocation.VideoItem });\n const { setFavourite, canFavourite } = useLiteFavourites(LocationContext.VideoThumbnail);\n const breadcrumbs = useGetFolderBreadcrumbs(props.folderId, library.data, props.sort);\n const audiences = usePresentationAudiences();\n\n useSetPageMetadata({ title: folder.data?.name });\n\n useHandleObjectError([ library, folder ]);\n useHandleLibraryType(library);\n\n const sort = !!user.data && VideoSortHelper.getOrSetSortType(user.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 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 />\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 { Breadcrumb } from 'libs/shared/components/breadcrumbs/Breadcrumbs';\nimport { BG_COLOUR_CLASS_NAMES } from 'libs/shared/constants/ColourClassNames';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { VideoSortType } from 'libs/shared/enums/VideoSortType';\nimport { useBuildBreadcrumbs } from 'libs/shared/hooks/useBuildBreadcrumbs';\nimport { Folder, Library, VideoTypes } from 'libs/shared/interfaces';\n\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\n\nexport function getVideoAppLink(video: VideoTypes): Core.AppLink {\n switch (video.typeId) {\n case MasterType.Clip:\n return {\n application: AppChannels.CLIPS,\n action: Actions.Clips.PLAY_CLIP,\n args: [ video.id, TextHelper.slugify(video.name) ]\n };\n case MasterType.Interactive:\n return {\n application: AppChannels.INTERACTIVES,\n action: Actions.Interactives.VIEW_INTERACTIVE,\n args: [ video.id, TextHelper.slugify(video.name) ]\n };\n default:\n return {\n application: AppChannels.VIDEOS,\n action: Actions.Videos.PLAY_VIDEO,\n args: [ video.id, TextHelper.slugify(video.name) ]\n };\n }\n}\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}\n\nexport function useGetFolderBreadcrumbs(folderId: string, library: Library, sort: VideoSortType): Breadcrumb[] {\n return useBuildBreadcrumbs({\n folderId: library && folderId,\n getAppLink: object => getFolderAppLink(library.id, object.data, sort),\n firstItem: {\n name: library?.name,\n appLink: {\n application: AppChannels.LIBRARIES,\n action: Actions.Libraries.LIBRARY,\n args: [ library?.id, TextHelper.slugify(library?.name) ]\n }\n }\n });\n}"],"names":["getDirectionClass","direction","Caret","props","SvgContainer","svgName","className","defaultProps","LibraryFolder","thumbnailUrl","folder","thumbnail","UrlHelper","url","size","actions","getFolderActions","DragDropMoveWrapper","draggable","drag","id","data","droppable","drop","dropStye","dragStyle","AppLink","appLink","getAppLink","title","name","BaseImage","imageType","imageClassName","ImageFallback","type","extraClasses","length","Actions","actionsDropdownClassName","dropdownToggleSvgSize","namespace","EXPANDED_FOLDERS_KEY","FolderList","breakpoints","LocalStorageHelper","_hasExpandedFolders","setHasExpandedFolders","hasExpandedFolders","expandFolders","folderLimit","useBreakpoints","xxl","xl","lg","md","onToggleFolderView","displayableFolders","folders","slice","canToggleCollapsedView","showHeading","DivButton","onClick","Text","phrase","options","count","extraButtons","map","f","key","PartialFolder","PartialFolderList","Array","fill","_","i","useBuildBreadcrumbs","folderId","firstItem","lastItem","parentTree","children","searchStack","c","node","path","breadcrumbs","pop","toString","object","push","unshift","active","useFetchAllChildFolders","parentId","fetch","getRequest","cursor","useHandleLibraryType","request","hasCompleted","hasError","LibraryFolderEmptyState","value","EmptyState","src","ImageUrls","LibraryFolderVideos","focusSearchBar","hasPermissions","usePermissions","videos","hasSubFolders","IconButton","application","action","params","source","analyticsData","analyticsOptions","entity","location","actionType","descriptor","smartCount","libraries","VideoSortSelect","variant","sort","getSortAppLink","workflowPhase","VideoList","yearGroups","getVideoAppLink","getSubTextAppLink","video","SeriesAppLinkHelper","series","setFavourite","canFavourite","presentationAudiences","audiences","getPreviewQuestionsAppLink","interactive","InteractiveHelper","hasMore","isFetching","InfiniteScrollFooter","fetchNext","nextCursor","LibraryFolderPartialLoading","PartialVideoList","getPhrase","LanguageService","LibraryFolderView","dispatch","alerts","LibraryRequests","library","libraryId","subfolders","user","UserRequests","config","ConfigRequests","isAuthenticated","CustomerRequests","customerId","videoActions","useVideoActions","useLiteFavourites","u","usePresentationAudiences","useSetPageMetadata","VideoSortHelper","getVideosRequest","pageNumber","httpStatus","error","items","VideoRequests","useVideoMixin","hasNoSubfolders","VideoActionsContext","BannerHeader","heading","banner","imageCdnUrl","blockColourClass","logo","owner","Breadcrumbs","typeId","args","getFolderAppLink","getFolderBgColourClass","charCode","charCodeAt","useGetFolderBreadcrumbs"],"sourceRoot":""}
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
/package/dist/scripts/{bundle-8f540a1154.min.js.LICENSE.txt → bundle-c158cdd3a9.min.js.LICENSE.txt}
RENAMED
|
File without changes
|