@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/dist/scripts/{8681-41edd08b98-lite.chunk.js.map → 8681-49db3daae6-lite.chunk.js.map}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scripts/8681-41edd08b98-lite.chunk.js","mappings":"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","sources":["file:///app/packages/libs/shared/src/components/badges/BadgeListContainer.tsx","file:///app/packages/libs/shared/src/components/video-list/components/video-item-restriction-badge/RestrictionBadge.tsx","file:///app/packages/projects/lite/src/shared/flight-requests/RestrictionRequests.ts","file:///app/packages/projects/lite/src/shared/components/vertical-year-group-selector/vertical-year-group-selector.scss","file:///app/packages/projects/lite/src/shared/components/vertical-year-group-selector/YearGroupAccessMessage.tsx","file:///app/packages/projects/lite/src/shared/components/vertical-year-group-selector/VerticalYearGroupSelectorItem.tsx","file:///app/packages/projects/lite/src/shared/components/vertical-year-group-selector/VerticalYearGroupSelector.tsx","file:///app/packages/projects/lite/src/shared/views/manage-access-popup/ManageAccessPopupView.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport styles from './badge.scss';\n\ninterface BadgeListContainerProps {\n className?: string;\n}\n\nexport function BadgeListContainer(props: React.PropsWithChildren<BadgeListContainerProps>): JSX.Element {\n let className = `d-flex align-items-center badge-list ${styles.minHeight}`;\n\n if (props.className)\n className += ` ${props.className}`;\n\n return (\n <div className={className}>\n {props.children}\n </div>\n );\n}","import React from 'react';\n\nimport { Badge, BadgeType } from 'libs/shared/components/badges/Badge';\nimport { Restrictions, YearGroup } from 'libs/shared/interfaces';\n\ninterface RestrictionBadgeProps {\n restrictions: Restrictions;\n yearGroups: YearGroup[];\n}\n\nexport function RestrictionBadge(props: RestrictionBadgeProps): JSX.Element {\n return (\n <Badge\n type={BadgeType.Restriction}\n data={{ restrictions: props.restrictions, yearGroups: props.yearGroups }}\n inline\n />\n );\n}","import { HttpVerbs } from 'libs/common/backbone/enums/HttpVerbs';\nimport { UrlHelper } from 'libs/common/backbone/utils/UrlHelper';\nimport { Flight } from 'libs/common/flight';\n\nimport { SharedWithStatements } from 'libs/shared/constants/WithStatements';\nimport { RestrictionType } from 'libs/shared/enums/RestrictionType';\n\nimport { AddRestrictionRequest } from 'shared/interfaces/requests/AddRestrictionRequest';\n\nexport const RestrictionRequests = {\n getRestrictions(id: string): Flight.Request {\n return {\n key: `restrictions:${id}`,\n url: UrlHelper.urlBuilder(`{gateway}/v1/objects/restrictions`, { id })\n };\n },\n\n addRestriction(data: AddRestrictionRequest): Flight.Request {\n return {\n type: HttpVerbs.POST,\n key: `restrictions:${data.objectTypeId}:${data.objectId}:add`,\n url: `{gateway}/v1/restrictions`,\n data: [data],\n invalidationKeys: ['restrictions']\n };\n },\n\n\n deleteRestrictions(objectId: string): Flight.Request {\n return {\n url: UrlHelper.urlBuilder('{gateway}/v1/restrictions', { objectId }),\n key: 'restrictions:delete',\n type: HttpVerbs.DELETE,\n invalidationKeys: ['restrictions']\n };\n },\n\n\n getRestrictedObjects(\n type: RestrictionType[],\n cursor?: string\n ): Flight.Request {\n const params: any = {\n 'type': type,\n 'query.video': SharedWithStatements.VIDEO_COLLECTION,\n 'query.interactive': SharedWithStatements.INTERACTIVE_COLLECTION,\n 'query.clip': SharedWithStatements.CLIP_COLLECTION\n };\n\n if (cursor)\n params.cursor = cursor;\n\n return {\n url: UrlHelper.urlBuilder('{gateway}/v1/restrictions/objects', params),\n key: `restrictions:objects:${type.sort().join(',')}:${cursor}`\n };\n },\n\n approveAll(): Flight.Request {\n return {\n url: '{gateway}/v1/library-reviews/restrictions',\n key: 'restrictions:approve:all',\n type: HttpVerbs.DELETE\n };\n }\n};","// extracted by mini-css-extract-plugin\nexport default {\"firstItem\":\"RcBIB\",\"lastItem\":\"_YfTU\",\"opacity100\":\"QV8wx\",\"opacity50\":\"WoP6Y\",\"yearGroupButton\":\"DOT14\"};","import React from 'react';\n\nimport { Badge, BadgeType } from 'libs/shared/components/badges/Badge';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { Rating } from 'libs/shared/interfaces';\n\nimport styles from './vertical-year-group-selector.scss';\n\nconst namespace = 'shared.verticalYearGroupSelector';\n\ninterface YearGroupAccessMessageProps {\n isSelected: boolean;\n isDisabled: boolean;\n contentRating: Rating;\n}\n\nexport function YearGroupAccessMessage(props: YearGroupAccessMessageProps): JSX.Element {\n if (props.isDisabled) {\n return (\n <div className='text-secondary'>\n <Text namespace={namespace} phrase='isDisabled'/> \n <div className={`d-inline ${styles.opacity50}`}>\n <Badge data={props.contentRating} type={BadgeType.Rating} inline />\n </div> \n <Text namespace={namespace} phrase='ratingRestricted' />\n </div>\n );\n }\n\n if (props.isSelected) {\n return <Text namespace={namespace} phrase='isSelected'/>;\n }\n \n return <Text namespace={namespace} phrase='canAccess' />;\n}\n\n","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { DivButton } from 'libs/shared/components/div-button/DivButton';\nimport { SvgContainer, SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\nimport { Tooltip } from 'libs/shared/components/tooltip/Tooltip';\nimport { useHover } from 'libs/shared/hooks/UseHover';\nimport { Rating, YearGroup } from 'libs/shared/interfaces';\n\nimport { YearGroupAccessMessage } from 'shared/components/vertical-year-group-selector/YearGroupAccessMessage';\n\nimport styles from './vertical-year-group-selector.scss';\n\nconst namespace = 'shared.verticalYearGroupSelector';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nexport interface StaffPlaceholder {\n name: string;\n value: number;\n}\n\ninterface VerticalYearGroupSelectorItemProps {\n item: YearGroup | StaffPlaceholder;\n isActive: boolean;\n isSelected: boolean;\n isDisabled: boolean;\n contentRating: Rating;\n onClick: () => void;\n onHover: (isHovering: boolean) => void;\n getButtonClass: () => string;\n getButtonSvg: () => string;\n}\n\nexport function VerticalYearGroupSelectorItem(props: VerticalYearGroupSelectorItemProps): JSX.Element {\n /**\n * The { delay: 1 } is required to make sure that the onmouseleave event fires before onmouseenter\n */\n const [ buttonRef, isHovering ] = useHover<HTMLDivElement>({ delay: 1 });\n\n React.useEffect(() => {\n if (props.isDisabled) return;\n props.onHover(isHovering);\n }, [isHovering]);\n\n return (\n <div className='row align-items-center mx-auto'>\n <div className='col-auto g-0'>\n <Tooltip title={props.isDisabled ? getPhrase('tooltip') : ''} placement='left' spanHack >\n <DivButton\n ref={buttonRef}\n onClick={props.onClick}\n className={`btn px-2 py-1 border ${styles.yearGroupButton} ${props.getButtonClass()}`}\n >\n <SvgContainer\n size={SvgContainerSize.Standard}\n svgName={props.getButtonSvg()}\n />\n </DivButton>\n </Tooltip>\n </div>\n <div className='col-3'>\n {props.item.name}\n </div>\n <div className='col'>\n <YearGroupAccessMessage\n contentRating={props.contentRating}\n isDisabled={props.isDisabled}\n isSelected={props.isSelected}\n />\n </div>\n </div>\n );\n}\n","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { useDebounce } from 'libs/shared/hooks/UseDebounce';\nimport { Rating, YearGroup } from 'libs/shared/interfaces';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport { StaffPlaceholder, VerticalYearGroupSelectorItem } from 'shared/components/vertical-year-group-selector/VerticalYearGroupSelectorItem';\n\nimport styles from './vertical-year-group-selector.scss';\n\nconst namespace = 'shared.verticalYearGroupSelector';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface VerticalYearGroupSelectorProps {\n selection: YearGroup | StaffPlaceholder;\n yearGroups: YearGroup[];\n contentRating: Rating;\n onSelect: (lastItem: YearGroup | StaffPlaceholder) => void;\n}\n\nexport function VerticalYearGroupSelector(props: VerticalYearGroupSelectorProps): JSX.Element {\n const [ activeItemIndex, setActiveItemIndex ] = React.useState<number>();\n\n /**\n * This is required so that we can check against this in isActive method\n * which removes the jittery behaviour of the VerticalYearGroupSelectorItems.\n * Debounce time of anything greater than 5ms seems to work\n */\n const debouncedActiveItemIndex = useDebounce(activeItemIndex, 20);\n\n /**\n * We don't have any data to represent staff, so we create a placeholder object\n */\n const staffPlaceholder = {\n name: getPhrase('staff'),\n value: Number.MAX_SAFE_INTEGER\n };\n\n function onHover(index: number, isHovering: boolean) {\n if (!isHovering) {\n setActiveItemIndex(undefined);\n return;\n }\n setActiveItemIndex(index);\n }\n\n function isActive(index: number): boolean {\n if (!debouncedActiveItemIndex) return false;\n\n return index <= debouncedActiveItemIndex;\n }\n\n function isSelected(yearGroup: YearGroup | StaffPlaceholder): boolean {\n if (!props.selection) return false;\n\n return yearGroup.value <= props.selection.value;\n }\n\n function onItemClick(index: number): void {\n let selectedYearGroup = props.yearGroups[index] ?? staffPlaceholder;\n\n if (props.selection?.value === selectedYearGroup.value)\n selectedYearGroup = index ? props.yearGroups[index - 1] : undefined;\n\n if (selectedYearGroup && isDisabled(selectedYearGroup))\n selectedYearGroup = undefined;\n\n props.onSelect(selectedYearGroup);\n }\n\n function isDisabled(item: YearGroup | StaffPlaceholder): boolean {\n if (!('rating' in item))\n return false;\n\n return item.rating.value < props.contentRating.value;\n }\n\n function getButtonClass(index: number, yearGroup: YearGroup | StaffPlaceholder): string {\n const active = isActive(index);\n const selected = isSelected(yearGroup);\n const disabled = isDisabled(yearGroup);\n const first = index === 0;\n const last = index === props.yearGroups.length;\n\n let baseClass = `rounded-0 border-bottom-0`;\n\n if (active && !disabled && !selected)\n baseClass += ' hovering';\n\n if (first)\n baseClass = `rounded-top border-bottom-0 ${styles.firstItem}`;\n \n if (last)\n baseClass = `rounded-bottom ${styles.lastItem}`;\n\n if (selected || disabled)\n return `${baseClass} btn-dark`;\n\n return `${baseClass} btn-outline-dark`;\n }\n\n function getButtonSvg(index: number, yearGroup: YearGroup | StaffPlaceholder): string {\n const active = isActive(index);\n const selected = isSelected(yearGroup);\n const disabled = isDisabled(yearGroup);\n\n if (active || selected || disabled) {\n return cvSvgLibrary.Lock;\n }\n\n return cvSvgLibrary.VisibleOn;\n }\n\n return (\n <div className='pb-2'>\n {props.yearGroups.map((item, index) => (\n <VerticalYearGroupSelectorItem\n key={item.id}\n item={item}\n contentRating={props.contentRating}\n isActive={isActive(index)}\n isSelected={isSelected(item)}\n onClick={() => onItemClick(index)}\n onHover={isHovering => onHover(index, isHovering)}\n getButtonClass={() => getButtonClass(index, item)}\n getButtonSvg={() => getButtonSvg(index, item)}\n isDisabled={isDisabled(item)}\n />\n ))}\n <VerticalYearGroupSelectorItem\n item={staffPlaceholder}\n contentRating={props.contentRating}\n isActive={isActive(props.yearGroups.length)}\n isSelected={isSelected(staffPlaceholder)}\n onClick={() => onItemClick(props.yearGroups.length)}\n onHover={isHovering => onHover(props.yearGroups.length, isHovering)}\n getButtonClass={() => getButtonClass(props.yearGroups.length, staffPlaceholder)}\n getButtonSvg={() => getButtonSvg(props.yearGroups.length, staffPlaceholder)}\n isDisabled={false}\n />\n </div>\n );\n}","import React from 'react';\n\nimport { AlertType, DefaultAlertHeading } from 'libs/common/backbone/services/BaseAlertService';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Flight } from 'libs/common/flight';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { BadgeListContainer } from 'libs/shared/components/badges/BadgeListContainer';\nimport { DivButton } from 'libs/shared/components/div-button/DivButton';\nimport { Popup } from 'libs/shared/components/popup/Popup';\nimport { PopupButtons } from 'libs/shared/components/popup/PopupButtons';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { RestrictionBadge } from 'libs/shared/components/video-list/components/video-item-restriction-badge/RestrictionBadge';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { RestrictionType } from 'libs/shared/enums/RestrictionType';\nimport { CustomerRequests } from 'libs/shared/flight-requests/CustomerRequests';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { useAlerts } from 'libs/shared/hooks/UseAlerts';\nimport { CurrentUser, ObjectsRestriction, PopupViewProps, VideoTypes, YearGroup } from 'libs/shared/interfaces';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\nimport { VerticalYearGroupSelector } from 'shared/components/vertical-year-group-selector/VerticalYearGroupSelector';\nimport { StaffPlaceholder } from 'shared/components/vertical-year-group-selector/VerticalYearGroupSelectorItem';\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\nimport { RestrictionRequests } from 'shared/flight-requests/RestrictionRequests';\nimport { AddRestrictionRequest } from 'shared/interfaces/requests/AddRestrictionRequest';\n\nconst namespace = 'shared.manageAccessPopup';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface ManageAccessPopupViewProps extends PopupViewProps {\n objectId: string;\n objectTypeId: MasterType;\n}\n\nconst ContentPermissionAppLink = {\n application: AppChannels.SETTINGS,\n action: Actions.Settings.CONTENT_PERMISSIONS\n};\n\nexport function ManageAccessPopupView(props: ManageAccessPopupViewProps): JSX.Element {\n const fetchAsync = Flight.useGetFetchAsync();\n const [ initial, setInitial ] = React.useState<YearGroup | StaffPlaceholder>();\n const [ selection, setSelection ] = React.useState<YearGroup | StaffPlaceholder>();\n const [ spinner, setspinner ] = React.useState(false);\n\n const alerts = useAlerts();\n\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n const yearGroups = Flight.useBasicFetch<YearGroup[]>(currentUser.data?.isAuthenticated &&\n CustomerRequests.yearGroups(currentUser.data.customerId));\n\n const videoRequest = VideoHelper.getVideoRequest(props.objectId, props.objectTypeId);\n const video = Flight.useBasicFetch<VideoTypes>(videoRequest);\n const videoRestrictions =\n Flight.useBasicFetch<ObjectsRestriction[]>(RestrictionRequests.getRestrictions(props.objectId));\n\n React.useEffect(() => {\n if (!videoRestrictions.hasCompleted || !yearGroups.hasCompleted || !video.hasCompleted) return;\n \n const userRestriction = videoRestrictions.data?.find(item => item.type === RestrictionType.User);\n\n if (!userRestriction) return;\n\n if (userRestriction.yearGroup === null) {\n const staffPlaceholder: StaffPlaceholder = { name: null, value: Number.MAX_SAFE_INTEGER };\n setSelection(staffPlaceholder);\n setInitial(staffPlaceholder);\n return;\n }\n\n const selectedYearGroup = yearGroups.data.find(item => item.value === userRestriction.yearGroup);\n\n if (!selectedYearGroup) return;\n\n setSelection(selectedYearGroup);\n setInitial(selectedYearGroup);\n }, [ videoRestrictions.data, yearGroups.data, video.data ]);\n\n function onYearGroupSelect(lastYearGroup: YearGroup): void {\n setSelection(lastYearGroup);\n }\n \n function clearDraftSelections(): void {\n setSelection(undefined);\n }\n\n function onClickUpdate(): Promise<void> {\n if (!selection) {\n deleteRestriction();\n return;\n }\n\n addRestriction();\n }\n\n async function addRestriction(): Promise<void> {\n setspinner(true);\n\n let yearGroupValue = selection.value;\n\n /**\n * We use Number.MAX_SAFE_INTEGER for our staff placeholder because our components\n * work based on the incrementing year group value, but our backend treats staff\n * restrictions as a value of null\n */\n if (yearGroupValue === Number.MAX_SAFE_INTEGER)\n yearGroupValue = null;\n\n const data: AddRestrictionRequest = {\n targetId: currentUser.data.customerId,\n targetTypeId: MasterType.Customer,\n objectId: video.data.id,\n objectTypeId: video.data.typeId,\n ownerId: currentUser.data.id,\n type: RestrictionType.User,\n yearGroup: yearGroupValue\n };\n\n try {\n await fetchAsync(RestrictionRequests.addRestriction(data));\n\n /**\n * Refetch the video to update our flight store with the right restrictions\n */\n await fetchAsync(videoRequest);\n\n alerts.success({\n heading: DefaultAlertHeading.Success,\n type: AlertType.Success,\n message: getPhrase('success', { name: video.data.name }),\n appLink: {\n application: AppChannels.SETTINGS,\n action: Actions.Settings.VIDEO_RESTRICTIONS\n },\n appLinkText: getPhrase('successAppLink'),\n appLinkClassName: 'info-link'\n });\n props.closePopup();\n } catch {\n alerts.error(getPhrase('error'));\n }\n\n setspinner(false);\n }\n\n async function deleteRestriction(): Promise<void> {\n setspinner(true);\n\n try {\n await fetchAsync(RestrictionRequests.deleteRestrictions(video.data.id));\n\n /**\n * Refetch the video to update our flight store with the right restrictions\n */\n await fetchAsync(videoRequest);\n\n alerts.success(getPhrase('removedSuccess'));\n props.closePopup();\n } catch {\n alerts.error(getPhrase('error'));\n }\n\n setspinner(true);\n }\n\n const dataLoaded = (\n videoRestrictions.hasCompleted && video.hasCompleted &&\n (!currentUser.data?.isAuthenticated || yearGroups.hasCompleted)\n );\n\n const videoRating = dataLoaded && VideoHelper.getRating(video.data);\n const restrictedUptoYearGroupItems = dataLoaded &&\n yearGroups.data.filter(item => item.rating.value <= videoRating.value);\n const selections = dataLoaded && yearGroups.data.filter(\n item => !restrictedUptoYearGroupItems.includes(item) && item.value <= selection?.value\n );\n\n return (\n <Popup\n title={getPhrase('title')}\n closePopup={props.closePopup}\n showLoadingSpinner={!dataLoaded}\n >\n {dataLoaded &&\n <>\n <div className='mb-3'>\n <p>\n <AppLink appLink={ContentPermissionAppLink} className='info-link' onClick={props.closePopup}>\n <Text namespace={namespace} phrase='infoStart' />\n </AppLink>\n <Text namespace={namespace} phrase='infoEnd' />\n \n </p>\n <p>\n <Text namespace={namespace} phrase='prompt' />\n </p>\n\n <VerticalYearGroupSelector\n selection={selection}\n yearGroups={yearGroups.data}\n contentRating={videoRating}\n onSelect={onYearGroupSelect}\n />\n\n {selection &&\n <BadgeListContainer className='pt-1 mb-2'>\n <RestrictionBadge\n restrictions={{\n value: [{\n type: RestrictionType.User,\n yearGroup: selection.value === Number.MAX_SAFE_INTEGER ? null : selection.value\n } as ObjectsRestriction]\n }}\n yearGroups={yearGroups.data}\n />\n </BadgeListContainer>\n }\n \n\n {!!(selection) &&\n <DivButton onClick={clearDraftSelections} className='d-inline info-link'>\n <Text namespace={namespace} phrase='clear' options={{ smartCount: selections?.length }}/>\n </DivButton>\n }\n </div>\n <PopupButtons>\n <PopupButtons.Cancel\n text={getPhrase('cancel')}\n onClick={props.closePopup}\n />\n <PopupButtons.Submit\n text={getPhrase('update')}\n onClick={onClickUpdate}\n variant='dark'\n showSpinner={spinner}\n disabled={initial?.value === selection?.value}\n />\n </PopupButtons>\n </>\n }\n </Popup>\n );\n}"],"names":["BadgeListContainer","props","className","children","RestrictionBadge","type","data","restrictions","yearGroups","inline","RestrictionRequests","getRestrictions","id","key","url","addRestriction","objectTypeId","objectId","invalidationKeys","deleteRestrictions","getRestrictedObjects","cursor","params","sort","join","approveAll","namespace","YearGroupAccessMessage","isDisabled","Text","phrase","Badge","contentRating","isSelected","getPhrase","LanguageService","VerticalYearGroupSelectorItem","delay","buttonRef","isHovering","onHover","Tooltip","title","placement","spanHack","DivButton","ref","onClick","getButtonClass","SvgContainer","size","S","svgName","getButtonSvg","item","name","VerticalYearGroupSelector","activeItemIndex","setActiveItemIndex","debouncedActiveItemIndex","staffPlaceholder","value","Number","MAX_SAFE_INTEGER","index","undefined","isActive","yearGroup","selection","onItemClick","selectedYearGroup","onSelect","rating","active","selected","disabled","first","last","length","baseClass","map","ContentPermissionAppLink","application","action","ManageAccessPopupView","fetchAsync","initial","setInitial","setSelection","spinner","setspinner","alerts","currentUser","UserRequests","isAuthenticated","CustomerRequests","customerId","videoRequest","VideoHelper","video","videoRestrictions","hasCompleted","userRestriction","find","RestrictionType","dataLoaded","videoRating","restrictedUptoYearGroupItems","filter","selections","includes","Popup","closePopup","showLoadingSpinner","AppLink","appLink","lastYearGroup","options","smartCount","PopupButtons","text","yearGroupValue","targetId","targetTypeId","MasterType","typeId","ownerId","success","heading","message","appLinkText","appLinkClassName","error","deleteRestriction","variant","showSpinner"],"sourceRoot":""}
|
|
1
|
+
{"version":3,"file":"scripts/8681-49db3daae6-lite.chunk.js","mappings":"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","sources":["file:///app/packages/libs/shared/src/components/badges/BadgeListContainer.tsx","file:///app/packages/libs/shared/src/components/video-list/components/video-item-restriction-badge/RestrictionBadge.tsx","file:///app/packages/projects/lite/src/shared/flight-requests/RestrictionRequests.ts","file:///app/packages/projects/lite/src/shared/components/vertical-year-group-selector/vertical-year-group-selector.scss","file:///app/packages/projects/lite/src/shared/components/vertical-year-group-selector/YearGroupAccessMessage.tsx","file:///app/packages/projects/lite/src/shared/components/vertical-year-group-selector/VerticalYearGroupSelectorItem.tsx","file:///app/packages/projects/lite/src/shared/components/vertical-year-group-selector/VerticalYearGroupSelector.tsx","file:///app/packages/projects/lite/src/shared/views/manage-access-popup/ManageAccessPopupView.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport styles from './badge.scss';\n\ninterface BadgeListContainerProps {\n className?: string;\n}\n\nexport function BadgeListContainer(props: React.PropsWithChildren<BadgeListContainerProps>): JSX.Element {\n let className = `d-flex align-items-center badge-list ${styles.minHeight}`;\n\n if (props.className)\n className += ` ${props.className}`;\n\n return (\n <div className={className}>\n {props.children}\n </div>\n );\n}","import React from 'react';\n\nimport { Badge, BadgeType } from 'libs/shared/components/badges/Badge';\nimport { Restrictions, YearGroup } from 'libs/shared/interfaces';\n\ninterface RestrictionBadgeProps {\n restrictions: Restrictions;\n yearGroups: YearGroup[];\n}\n\nexport function RestrictionBadge(props: RestrictionBadgeProps): JSX.Element {\n return (\n <Badge\n type={BadgeType.Restriction}\n data={{ restrictions: props.restrictions, yearGroups: props.yearGroups }}\n inline\n />\n );\n}","import { HttpVerbs } from 'libs/common/backbone/enums/HttpVerbs';\nimport { UrlHelper } from 'libs/common/backbone/utils/UrlHelper';\nimport { Flight } from 'libs/common/flight';\n\nimport { SharedWithStatements } from 'libs/shared/constants/WithStatements';\nimport { RestrictionType } from 'libs/shared/enums/RestrictionType';\n\nimport { AddRestrictionRequest } from 'shared/interfaces/requests/AddRestrictionRequest';\n\nexport const RestrictionRequests = {\n getRestrictions(id: string): Flight.Request {\n return {\n key: `restrictions:${id}`,\n url: UrlHelper.urlBuilder(`{gateway}/v1/objects/restrictions`, { id })\n };\n },\n\n addRestriction(data: AddRestrictionRequest): Flight.Request {\n return {\n type: HttpVerbs.POST,\n key: `restrictions:${data.objectTypeId}:${data.objectId}:add`,\n url: `{gateway}/v1/restrictions`,\n data: [data],\n invalidationKeys: ['restrictions']\n };\n },\n\n\n deleteRestrictions(objectId: string): Flight.Request {\n return {\n url: UrlHelper.urlBuilder('{gateway}/v1/restrictions', { objectId }),\n key: 'restrictions:delete',\n type: HttpVerbs.DELETE,\n invalidationKeys: ['restrictions']\n };\n },\n\n\n getRestrictedObjects(\n type: RestrictionType[],\n cursor?: string\n ): Flight.Request {\n const params: any = {\n 'type': type,\n 'query.video': SharedWithStatements.VIDEO_COLLECTION,\n 'query.interactive': SharedWithStatements.INTERACTIVE_COLLECTION,\n 'query.clip': SharedWithStatements.CLIP_COLLECTION\n };\n\n if (cursor)\n params.cursor = cursor;\n\n return {\n url: UrlHelper.urlBuilder('{gateway}/v1/restrictions/objects', params),\n key: `restrictions:objects:${type.sort().join(',')}:${cursor}`\n };\n },\n\n approveAll(): Flight.Request {\n return {\n url: '{gateway}/v1/library-reviews/restrictions',\n key: 'restrictions:approve:all',\n type: HttpVerbs.DELETE\n };\n }\n};","// extracted by mini-css-extract-plugin\nexport default {\"firstItem\":\"RcBIB\",\"lastItem\":\"_YfTU\",\"opacity100\":\"QV8wx\",\"opacity50\":\"WoP6Y\",\"yearGroupButton\":\"DOT14\"};","import React from 'react';\n\nimport { Badge, BadgeType } from 'libs/shared/components/badges/Badge';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { Rating } from 'libs/shared/interfaces';\n\nimport styles from './vertical-year-group-selector.scss';\n\nconst namespace = 'shared.verticalYearGroupSelector';\n\ninterface YearGroupAccessMessageProps {\n isSelected: boolean;\n isDisabled: boolean;\n contentRating: Rating;\n}\n\nexport function YearGroupAccessMessage(props: YearGroupAccessMessageProps): JSX.Element {\n if (props.isDisabled) {\n return (\n <div className='text-secondary'>\n <Text namespace={namespace} phrase='isDisabled'/> \n <div className={`d-inline ${styles.opacity50}`}>\n <Badge data={props.contentRating} type={BadgeType.Rating} inline />\n </div> \n <Text namespace={namespace} phrase='ratingRestricted' />\n </div>\n );\n }\n\n if (props.isSelected) {\n return <Text namespace={namespace} phrase='isSelected'/>;\n }\n \n return <Text namespace={namespace} phrase='canAccess' />;\n}\n\n","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { DivButton } from 'libs/shared/components/div-button/DivButton';\nimport { SvgContainer, SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\nimport { Tooltip } from 'libs/shared/components/tooltip/Tooltip';\nimport { useHover } from 'libs/shared/hooks/UseHover';\nimport { Rating, YearGroup } from 'libs/shared/interfaces';\n\nimport { YearGroupAccessMessage } from 'shared/components/vertical-year-group-selector/YearGroupAccessMessage';\n\nimport styles from './vertical-year-group-selector.scss';\n\nconst namespace = 'shared.verticalYearGroupSelector';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nexport interface StaffPlaceholder {\n name: string;\n value: number;\n}\n\ninterface VerticalYearGroupSelectorItemProps {\n item: YearGroup | StaffPlaceholder;\n isActive: boolean;\n isSelected: boolean;\n isDisabled: boolean;\n contentRating: Rating;\n onClick: () => void;\n onHover: (isHovering: boolean) => void;\n getButtonClass: () => string;\n getButtonSvg: () => string;\n}\n\nexport function VerticalYearGroupSelectorItem(props: VerticalYearGroupSelectorItemProps): JSX.Element {\n /**\n * The { delay: 1 } is required to make sure that the onmouseleave event fires before onmouseenter\n */\n const [ buttonRef, isHovering ] = useHover<HTMLDivElement>({ delay: 1 });\n\n React.useEffect(() => {\n if (props.isDisabled) return;\n props.onHover(isHovering);\n }, [isHovering]);\n\n return (\n <div className='row align-items-center mx-auto'>\n <div className='col-auto g-0'>\n <Tooltip title={props.isDisabled ? getPhrase('tooltip') : ''} placement='left' spanHack >\n <DivButton\n ref={buttonRef}\n onClick={props.onClick}\n className={`btn px-2 py-1 border ${styles.yearGroupButton} ${props.getButtonClass()}`}\n >\n <SvgContainer\n size={SvgContainerSize.Standard}\n svgName={props.getButtonSvg()}\n />\n </DivButton>\n </Tooltip>\n </div>\n <div className='col-3'>\n {props.item.name}\n </div>\n <div className='col'>\n <YearGroupAccessMessage\n contentRating={props.contentRating}\n isDisabled={props.isDisabled}\n isSelected={props.isSelected}\n />\n </div>\n </div>\n );\n}\n","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { useDebounce } from 'libs/shared/hooks/UseDebounce';\nimport { Rating, YearGroup } from 'libs/shared/interfaces';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport { StaffPlaceholder, VerticalYearGroupSelectorItem } from 'shared/components/vertical-year-group-selector/VerticalYearGroupSelectorItem';\n\nimport styles from './vertical-year-group-selector.scss';\n\nconst namespace = 'shared.verticalYearGroupSelector';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface VerticalYearGroupSelectorProps {\n selection: YearGroup | StaffPlaceholder;\n yearGroups: YearGroup[];\n contentRating: Rating;\n onSelect: (lastItem: YearGroup | StaffPlaceholder) => void;\n}\n\nexport function VerticalYearGroupSelector(props: VerticalYearGroupSelectorProps): JSX.Element {\n const [ activeItemIndex, setActiveItemIndex ] = React.useState<number>();\n\n /**\n * This is required so that we can check against this in isActive method\n * which removes the jittery behaviour of the VerticalYearGroupSelectorItems.\n * Debounce time of anything greater than 5ms seems to work\n */\n const debouncedActiveItemIndex = useDebounce(activeItemIndex, 20);\n\n /**\n * We don't have any data to represent staff, so we create a placeholder object\n */\n const staffPlaceholder = {\n name: getPhrase('staff'),\n value: Number.MAX_SAFE_INTEGER\n };\n\n function onHover(index: number, isHovering: boolean) {\n if (!isHovering) {\n setActiveItemIndex(undefined);\n return;\n }\n setActiveItemIndex(index);\n }\n\n function isActive(index: number): boolean {\n if (!debouncedActiveItemIndex) return false;\n\n return index <= debouncedActiveItemIndex;\n }\n\n function isSelected(yearGroup: YearGroup | StaffPlaceholder): boolean {\n if (!props.selection) return false;\n\n return yearGroup.value <= props.selection.value;\n }\n\n function onItemClick(index: number): void {\n let selectedYearGroup = props.yearGroups[index] ?? staffPlaceholder;\n\n if (props.selection?.value === selectedYearGroup.value)\n selectedYearGroup = index ? props.yearGroups[index - 1] : undefined;\n\n if (selectedYearGroup && isDisabled(selectedYearGroup))\n selectedYearGroup = undefined;\n\n props.onSelect(selectedYearGroup);\n }\n\n function isDisabled(item: YearGroup | StaffPlaceholder): boolean {\n if (!('rating' in item))\n return false;\n\n return item.rating.value < props.contentRating.value;\n }\n\n function getButtonClass(index: number, yearGroup: YearGroup | StaffPlaceholder): string {\n const active = isActive(index);\n const selected = isSelected(yearGroup);\n const disabled = isDisabled(yearGroup);\n const first = index === 0;\n const last = index === props.yearGroups.length;\n\n let baseClass = `rounded-0 border-bottom-0`;\n\n if (active && !disabled && !selected)\n baseClass += ' hovering';\n\n if (first)\n baseClass = `rounded-top border-bottom-0 ${styles.firstItem}`;\n \n if (last)\n baseClass = `rounded-bottom ${styles.lastItem}`;\n\n if (selected || disabled)\n return `${baseClass} btn-dark`;\n\n return `${baseClass} btn-outline-dark`;\n }\n\n function getButtonSvg(index: number, yearGroup: YearGroup | StaffPlaceholder): string {\n const active = isActive(index);\n const selected = isSelected(yearGroup);\n const disabled = isDisabled(yearGroup);\n\n if (active || selected || disabled) {\n return cvSvgLibrary.Lock;\n }\n\n return cvSvgLibrary.VisibleOn;\n }\n\n return (\n <div className='pb-2'>\n {props.yearGroups.map((item, index) => (\n <VerticalYearGroupSelectorItem\n key={item.id}\n item={item}\n contentRating={props.contentRating}\n isActive={isActive(index)}\n isSelected={isSelected(item)}\n onClick={() => onItemClick(index)}\n onHover={isHovering => onHover(index, isHovering)}\n getButtonClass={() => getButtonClass(index, item)}\n getButtonSvg={() => getButtonSvg(index, item)}\n isDisabled={isDisabled(item)}\n />\n ))}\n <VerticalYearGroupSelectorItem\n item={staffPlaceholder}\n contentRating={props.contentRating}\n isActive={isActive(props.yearGroups.length)}\n isSelected={isSelected(staffPlaceholder)}\n onClick={() => onItemClick(props.yearGroups.length)}\n onHover={isHovering => onHover(props.yearGroups.length, isHovering)}\n getButtonClass={() => getButtonClass(props.yearGroups.length, staffPlaceholder)}\n getButtonSvg={() => getButtonSvg(props.yearGroups.length, staffPlaceholder)}\n isDisabled={false}\n />\n </div>\n );\n}","import React from 'react';\n\nimport { AlertType, DefaultAlertHeading } from 'libs/common/backbone/services/BaseAlertService';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Flight } from 'libs/common/flight';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { BadgeListContainer } from 'libs/shared/components/badges/BadgeListContainer';\nimport { DivButton } from 'libs/shared/components/div-button/DivButton';\nimport { Popup } from 'libs/shared/components/popup/Popup';\nimport { PopupButtons } from 'libs/shared/components/popup/PopupButtons';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { RestrictionBadge } from 'libs/shared/components/video-list/components/video-item-restriction-badge/RestrictionBadge';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { RestrictionType } from 'libs/shared/enums/RestrictionType';\nimport { CustomerRequests } from 'libs/shared/flight-requests/CustomerRequests';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { useAlerts } from 'libs/shared/hooks/UseAlerts';\nimport { CurrentUser, ObjectsRestriction, PopupViewProps, VideoTypes, YearGroup } from 'libs/shared/interfaces';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\nimport { VerticalYearGroupSelector } from 'shared/components/vertical-year-group-selector/VerticalYearGroupSelector';\nimport { StaffPlaceholder } from 'shared/components/vertical-year-group-selector/VerticalYearGroupSelectorItem';\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\nimport { RestrictionRequests } from 'shared/flight-requests/RestrictionRequests';\nimport { AddRestrictionRequest } from 'shared/interfaces/requests/AddRestrictionRequest';\n\nconst namespace = 'shared.manageAccessPopup';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface ManageAccessPopupViewProps extends PopupViewProps {\n objectId: string;\n objectTypeId: MasterType;\n}\n\nconst ContentPermissionAppLink = {\n application: AppChannels.SETTINGS,\n action: Actions.Settings.CONTENT_PERMISSIONS\n};\n\nexport function ManageAccessPopupView(props: ManageAccessPopupViewProps): JSX.Element {\n const fetchAsync = Flight.useGetFetchAsync();\n const [ initial, setInitial ] = React.useState<YearGroup | StaffPlaceholder>();\n const [ selection, setSelection ] = React.useState<YearGroup | StaffPlaceholder>();\n const [ spinner, setspinner ] = React.useState(false);\n\n const alerts = useAlerts();\n\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n const yearGroups = Flight.useBasicFetch<YearGroup[]>(currentUser.data?.isAuthenticated &&\n CustomerRequests.yearGroups(currentUser.data.customerId));\n\n const videoRequest = VideoHelper.getVideoRequest(props.objectId, props.objectTypeId);\n const video = Flight.useBasicFetch<VideoTypes>(videoRequest);\n const videoRestrictions =\n Flight.useBasicFetch<ObjectsRestriction[]>(RestrictionRequests.getRestrictions(props.objectId));\n\n React.useEffect(() => {\n if (!videoRestrictions.hasCompleted || !yearGroups.hasCompleted || !video.hasCompleted) return;\n \n const userRestriction = videoRestrictions.data?.find(item => item.type === RestrictionType.User);\n\n if (!userRestriction) return;\n\n if (userRestriction.yearGroup === null) {\n const staffPlaceholder: StaffPlaceholder = { name: null, value: Number.MAX_SAFE_INTEGER };\n setSelection(staffPlaceholder);\n setInitial(staffPlaceholder);\n return;\n }\n\n const selectedYearGroup = yearGroups.data.find(item => item.value === userRestriction.yearGroup);\n\n if (!selectedYearGroup) return;\n\n setSelection(selectedYearGroup);\n setInitial(selectedYearGroup);\n }, [ videoRestrictions.data, yearGroups.data, video.data ]);\n\n function onYearGroupSelect(lastYearGroup: YearGroup): void {\n setSelection(lastYearGroup);\n }\n \n function clearDraftSelections(): void {\n setSelection(undefined);\n }\n\n function onClickUpdate(): Promise<void> {\n if (!selection) {\n deleteRestriction();\n return;\n }\n\n addRestriction();\n }\n\n async function addRestriction(): Promise<void> {\n setspinner(true);\n\n let yearGroupValue = selection.value;\n\n /**\n * We use Number.MAX_SAFE_INTEGER for our staff placeholder because our components\n * work based on the incrementing year group value, but our backend treats staff\n * restrictions as a value of null\n */\n if (yearGroupValue === Number.MAX_SAFE_INTEGER)\n yearGroupValue = null;\n\n const data: AddRestrictionRequest = {\n targetId: currentUser.data.customerId,\n targetTypeId: MasterType.Customer,\n objectId: video.data.id,\n objectTypeId: video.data.typeId,\n ownerId: currentUser.data.id,\n type: RestrictionType.User,\n yearGroup: yearGroupValue\n };\n\n try {\n await fetchAsync(RestrictionRequests.addRestriction(data));\n\n /**\n * Refetch the video to update our flight store with the right restrictions\n */\n await fetchAsync(videoRequest);\n\n alerts.success({\n heading: DefaultAlertHeading.Success,\n type: AlertType.Success,\n message: getPhrase('success', { name: video.data.name }),\n appLink: {\n application: AppChannels.SETTINGS,\n action: Actions.Settings.VIDEO_RESTRICTIONS\n },\n appLinkText: getPhrase('successAppLink'),\n appLinkClassName: 'info-link'\n });\n props.closePopup();\n } catch {\n alerts.error(getPhrase('error'));\n }\n\n setspinner(false);\n }\n\n async function deleteRestriction(): Promise<void> {\n setspinner(true);\n\n try {\n await fetchAsync(RestrictionRequests.deleteRestrictions(video.data.id));\n\n /**\n * Refetch the video to update our flight store with the right restrictions\n */\n await fetchAsync(videoRequest);\n\n alerts.success(getPhrase('removedSuccess'));\n props.closePopup();\n } catch {\n alerts.error(getPhrase('error'));\n }\n\n setspinner(true);\n }\n\n const dataLoaded = (\n videoRestrictions.hasCompleted && video.hasCompleted &&\n (!currentUser.data?.isAuthenticated || yearGroups.hasCompleted)\n );\n\n const videoRating = dataLoaded && VideoHelper.getRating(video.data);\n const restrictedUptoYearGroupItems = dataLoaded &&\n yearGroups.data.filter(item => item.rating.value <= videoRating.value);\n const selections = dataLoaded && yearGroups.data.filter(\n item => !restrictedUptoYearGroupItems.includes(item) && item.value <= selection?.value\n );\n\n return (\n <Popup\n title={getPhrase('title')}\n closePopup={props.closePopup}\n showLoadingSpinner={!dataLoaded}\n >\n {dataLoaded &&\n <>\n <div className='mb-3'>\n <p>\n <AppLink appLink={ContentPermissionAppLink} className='info-link' onClick={props.closePopup}>\n <Text namespace={namespace} phrase='infoStart' />\n </AppLink>\n <Text namespace={namespace} phrase='infoEnd' />\n \n </p>\n <p>\n <Text namespace={namespace} phrase='prompt' />\n </p>\n\n <VerticalYearGroupSelector\n selection={selection}\n yearGroups={yearGroups.data}\n contentRating={videoRating}\n onSelect={onYearGroupSelect}\n />\n\n {selection &&\n <BadgeListContainer className='pt-1 mb-2'>\n <RestrictionBadge\n restrictions={{\n value: [{\n type: RestrictionType.User,\n yearGroup: selection.value === Number.MAX_SAFE_INTEGER ? null : selection.value\n } as ObjectsRestriction]\n }}\n yearGroups={yearGroups.data}\n />\n </BadgeListContainer>\n }\n \n\n {!!(selection) &&\n <DivButton onClick={clearDraftSelections} className='d-inline info-link'>\n <Text namespace={namespace} phrase='clear' options={{ smartCount: selections?.length }}/>\n </DivButton>\n }\n </div>\n <PopupButtons>\n <PopupButtons.Cancel\n text={getPhrase('cancel')}\n onClick={props.closePopup}\n />\n <PopupButtons.Submit\n text={getPhrase('update')}\n onClick={onClickUpdate}\n variant='dark'\n showSpinner={spinner}\n disabled={initial?.value === selection?.value}\n />\n </PopupButtons>\n </>\n }\n </Popup>\n );\n}"],"names":["BadgeListContainer","props","className","children","RestrictionBadge","type","data","restrictions","yearGroups","inline","RestrictionRequests","getRestrictions","id","key","url","addRestriction","objectTypeId","objectId","invalidationKeys","deleteRestrictions","getRestrictedObjects","cursor","params","sort","join","approveAll","namespace","YearGroupAccessMessage","isDisabled","Text","phrase","Badge","contentRating","isSelected","getPhrase","LanguageService","VerticalYearGroupSelectorItem","delay","buttonRef","isHovering","onHover","Tooltip","title","placement","spanHack","DivButton","ref","onClick","getButtonClass","SvgContainer","size","S","svgName","getButtonSvg","item","name","VerticalYearGroupSelector","activeItemIndex","setActiveItemIndex","debouncedActiveItemIndex","staffPlaceholder","value","Number","MAX_SAFE_INTEGER","index","undefined","isActive","yearGroup","selection","onItemClick","selectedYearGroup","onSelect","rating","active","selected","disabled","first","last","length","baseClass","map","ContentPermissionAppLink","application","action","ManageAccessPopupView","fetchAsync","initial","setInitial","setSelection","spinner","setspinner","alerts","currentUser","UserRequests","isAuthenticated","CustomerRequests","customerId","videoRequest","VideoHelper","video","videoRestrictions","hasCompleted","userRestriction","find","RestrictionType","dataLoaded","videoRating","restrictedUptoYearGroupItems","filter","selections","includes","Popup","closePopup","showLoadingSpinner","AppLink","appLink","lastYearGroup","options","smartCount","PopupButtons","text","yearGroupValue","targetId","targetTypeId","MasterType","typeId","ownerId","success","heading","message","appLinkText","appLinkClassName","error","deleteRestriction","variant","showSpinner"],"sourceRoot":""}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
"use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[8772],{14919:(e,a,t)=>{t.d(a,{w:()=>m});var r=t(32735),c=t(64249),n=t(11607),s=t(2786),i=t(7733),l=t(9085),o=t(98084),d=t(87984);const u={playButtonCircle:"zima4"};function m(e){var a,t,m,v,p=e.onClick,b=e.video,g="rating"in b&&(null===(a=b.rating)||void 0===a?void 0:a.code),E="rating"in b&&(null===(t=b.rating)||void 0===t?void 0:t.value),h=(0,d.C)(E),f="series"in b&&(null===(m=b.series)||void 0===m?void 0:m.name),I="episodeNumber"in b&&b.episodeNumber,C="season"in b&&(null===(v=b.season)||void 0===v?void 0:v.number),k=c.I.getImageUrl(b),w="";k||(w=(0,l.x)(b.name,i.b));var N={backgroundImage:k?"url('".concat(k,"')"):"",backgroundColor:w};return r.createElement(n.L,{className:"cv-embed-splash ".concat(w||"cv-embed-splash-black"),style:N,onClick:p},!!k&&r.createElement("div",{className:"cv-splash-mask"}),r.createElement("div",{className:"cv-splash-metadata"},r.createElement("h1",null,r.createElement("div",{className:"cv-splash-series"},function(e,a,t){if(!e)return"";if(!t||!a)return e;var r=o.I.padNumber(t,2),c=o.I.padNumber(a,2);return"".concat(e," S").concat(r," • E").concat(c)}(f,I,C)),b.name),r.createElement("div",{className:"cv-splash-rating ".concat(h)},g)),r.createElement("div",{className:u.playButtonCircle},r.createElement("svg",{viewBox:"0 0 1800 1800"},r.createElement("path",{d:"M597.3333333333334 1418.6666666666665V373.3333333333333L1418.6666666666667 896z"}))),r.createElement("div",{className:"cv-splash-logo"},r.createElement(s.Yo,null)))}},58772:(e,a,t)=>{t.r(a),t.d(a,{EmbedLoginView:()=>E});var r=t(32735),c=t(97395),n=t(81886),s=t(20354),i=t(30439),l=t(39151),o=t(75795),d=t(14070),u=t(97291),m=t(62756),v=t(14919),p=t(6736),b=t(13746),g=t(75608);function E(e){var a=s.a.useBasicFetch(l.L.config()),t=s.a.useBasicFetch(i.o.getShareObject(e.shareId)),E=(0,g.a)(e.shareId);function h(){var e=o.O.getCurrentRoute().appLink,a=n.Q.C$.getHref(Object.assign(Object.assign({},e),{params:{a:!0}}));n.Q.Ab.PageLoad(a)}return r.useLayoutEffect((function(){b.R.remove()}),[]),a.data&&t.data&&E?r.createElement(v.w,{onClick:function(){if(t.data.isPasswordProtected){var r={application:u.O.EMBED,action:d.e.Embed.VIEW_EMBEDDED_RESOURCE,args:[e.shareId],params:n.Q.C$.getCurrentAppLink().params};n.Q.C$.trigger({application:u.O.LAUNCHPAD,action:d.e.Launchpad.PASSWORD_PROTECTED_SHARE_LINK,args:[e.shareId],params:{appLink:r}})}else if(p.b.canUseCookies())p.b.renderSignInPopup({primaryUrl:a.data.primaryUrl,shareId:e.shareId,customerId:e.customerId,isMicrosoftTeams:e.consumerKey===m.A.MicrosoftTeams,onClose:h});else{var s=c._.safeUrlConcat(a.data.primaryUrl,"/share/".concat(e.shareId));window.open(s,"_blank")}},video:E}):r.createElement(r.Fragment,null)}},75608:(e,a,t)=>{t.d(a,{a:()=>v});var r=t(20354),c=t(30439),n=t(4594),s=t(21750),i=t(43012),l=t(20768),o=t(5112),d=t(60011),u=t(31949),m=t(1575);function v(e){var a=r.a.useBasicFetch(u.N.currentUser()),t=r.a.useBasicFetch(c.o.getShareObject(e)),v=function(){if(!t.data||!a.data)return null;switch(t.data.objectTypeId){case n.E.Video:return m.R.publicVideo(t.data.objectId,e);case n.E.Clip:return i.e.publicClip(t.data.objectId,e);case n.E.Interactive:return l.b.publicInteractiveMetadata(t.data.objectId,e);case n.E.Playlist:return o.C.getSharedPlaylist(t.data.objectId,e);case n.E.Subject:return s.x.classification(t.data.objectId,a.data.id);case n.E.Series:return d.J.sharedSeries(t.data.objectId,e)}}();return r.a.useBasicFetch(v).data}},87984:(e,a,t)=>{function r(e){return e?function(e){switch(!0){case e<32:return"cv-rating-purple";case e<48:return"cv-rating-green";case e<80:return"cv-rating-blue";case e<96:return"cv-rating-red";case e<128:return"cv-rating-pink";case e>=128:return"cv-rating-yellow";default:return""}}(e):""}t.d(a,{C:()=>r})}}]);
|
|
2
|
-
//# sourceMappingURL=8772-
|
|
2
|
+
//# sourceMappingURL=8772-6c11095cea-lite.chunk.js.map
|
package/dist/scripts/{8772-9ae4d77363-lite.chunk.js.map → 8772-6c11095cea-lite.chunk.js.map}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scripts/8772-9ae4d77363-lite.chunk.js","mappings":"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","sources":["file:///app/packages/projects/lite/src/apps/embed/components/embedded-login/embedded-login.scss","file:///app/packages/projects/lite/src/apps/embed/components/embedded-login/EmbeddedLogin.tsx","file:///app/packages/projects/lite/src/apps/embed/views/embed-login/EmbedLoginView.tsx","file:///app/packages/projects/lite/src/apps/share/hooks/useFetchSharedResource.ts","file:///app/packages/projects/player/src/utils/PlayerRatingHelper.ts"],"sourcesContent":["// extracted by mini-css-extract-plugin\nexport default {\"playButtonCircle\":\"zima4\"};","/**\n * IMPORTANT!\n * Please refer to projects\\player\\src\\components\\poster-image\\poster-image-details.md\n * before changing this file\n */\nimport React from 'react';\n\nimport { ShareViewHelper } from 'libs/shared/apps/share/views/share/ShareViewHelper';\nimport { DivButton } from 'libs/shared/components/div-button/DivButton';\nimport { ClickViewLogoInverted } from 'libs/shared/components/svgs/clickview-logo/ClickViewLogo';\nimport { LOGO_SAFE_BG_CLASS_NAMES } from 'libs/shared/constants/ColourClassNames';\nimport { VideoTypes } from 'libs/shared/interfaces';\nimport { getBgColorClass } from 'libs/shared/utils/getBgColorClass';\nimport { NumberHelper } from 'libs/shared/utils/NumberHelper';\n\nimport { mapRatingValueToColourClass } from 'projects/player/utils/PlayerRatingHelper';\n\nimport styles from './embedded-login.scss';\n\nfunction getSeries(seriesName: string, episodeNumber: number, seasonNumber: number): string {\n if (!seriesName)\n return '';\n\n if (!seasonNumber || !episodeNumber)\n return seriesName;\n\n const paddedSeason = NumberHelper.padNumber(seasonNumber, 2);\n const paddedEpisode = NumberHelper.padNumber(episodeNumber, 2);\n\n return `${seriesName} S${paddedSeason} • E${paddedEpisode}`;\n}\n\ninterface EmbeddedLoginProps {\n onClick: () => void;\n video: VideoTypes;\n}\n\nexport function EmbeddedLogin(props: EmbeddedLoginProps): React.ReactElement {\n const {\n onClick,\n video\n } = props;\n\n const ratingCode = 'rating' in video && video.rating?.code;\n const ratingValue = 'rating' in video && video.rating?.value;\n const ratingColour = mapRatingValueToColourClass(ratingValue);\n\n const seriesName = 'series' in video && video.series?.name;\n const episodeNumber = 'episodeNumber' in video && video.episodeNumber;\n const seasonNumber = 'season' in video && video.season?.number;\n\n const backgroundImage = ShareViewHelper.getImageUrl(video);\n let backgroundColor = '';\n\n if (!backgroundImage)\n backgroundColor = getBgColorClass(video.name, LOGO_SAFE_BG_CLASS_NAMES);\n\n const style: React.CSSProperties = {\n backgroundImage: backgroundImage ? `url('${backgroundImage}')` : '',\n backgroundColor\n };\n\n // Markup changes here should also be made to components in `landing-splash-plugin.ts`\n return (\n <DivButton\n className={`cv-embed-splash ${backgroundColor || 'cv-embed-splash-black'}`}\n style={style}\n onClick={onClick}\n >\n {!!backgroundImage && <div className='cv-splash-mask' />}\n\n <div className='cv-splash-metadata'>\n <h1>\n <div className='cv-splash-series'>\n {getSeries(seriesName, episodeNumber, seasonNumber)}\n </div>\n {video.name}\n </h1>\n\n <div className={`cv-splash-rating ${ratingColour}`}>\n {ratingCode}\n </div>\n </div>\n\n <div className={styles.playButtonCircle}>\n <svg viewBox='0 0 1800 1800'>\n <path d='M597.3333333333334 1418.6666666666665V373.3333333333333L1418.6666666666667 896z'></path>\n </svg>\n </div>\n\n <div className='cv-splash-logo'>\n <ClickViewLogoInverted />\n </div>\n </DivButton>\n );\n}","import React from 'react';\n\nimport { UrlHelper } from 'libs/common/backbone/utils/UrlHelper';\nimport { Core } from 'libs/common/core';\nimport { Flight } from 'libs/common/flight';\n\nimport { ShareRequests } from 'libs/shared/apps/share/flight-requests/ShareRequests';\nimport { ConfigRequests } from 'libs/shared/flight-requests/ConfigRequests';\nimport { Config, ShareLink, VideoTypes } from 'libs/shared/interfaces';\nimport { ContextService } from 'libs/shared/services/ContextService';\n\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\nimport { PluginConsumers } from 'shared/hooks/use-plugin-helper/usePluginHelper';\n\nimport { EmbeddedLogin } from 'apps/embed/components/embedded-login/EmbeddedLogin';\nimport { EmbedAuthHelper } from 'apps/embed/utils/EmbedAuthHelper';\nimport { EmbedPlaceHolderHelper } from 'apps/embed/utils/EmbedPlaceholderHelper';\nimport { useFetchSharedResource } from 'apps/share/hooks/useFetchSharedResource';\n\ninterface EmbedLoginViewProps {\n shareId: string;\n consumerKey?: string;\n customerId?: number\n}\n\nexport function EmbedLoginView(props: EmbedLoginViewProps): JSX.Element {\n const config = Flight.useBasicFetch<Config>(ConfigRequests.config());\n\n const shareLink = Flight.useBasicFetch<ShareLink>(ShareRequests.getShareObject(props.shareId));\n const sharedResource = useFetchSharedResource<VideoTypes>(props.shareId);\n\n function onClick(): void {\n if (shareLink.data.isPasswordProtected) {\n const appLink: Core.AppLink = {\n application: AppChannels.EMBED,\n action: Actions.Embed.VIEW_EMBEDDED_RESOURCE,\n args: [props.shareId],\n params: Core.AppLinkHelper.getCurrentAppLink().params\n };\n\n Core.AppLinkHelper.trigger({\n application: AppChannels.LAUNCHPAD,\n action: Actions.Launchpad.PASSWORD_PROTECTED_SHARE_LINK,\n args: [props.shareId],\n params: { appLink }\n });\n return;\n }\n\n\n // If the user can't use cookies, we open the share link in a new tab\n if (!EmbedAuthHelper.canUseCookies()) {\n const url = UrlHelper.safeUrlConcat(config.data.primaryUrl, `/share/${props.shareId}`);\n window.open(url, '_blank');\n return;\n }\n\n EmbedAuthHelper.renderSignInPopup({\n primaryUrl: config.data.primaryUrl,\n shareId: props.shareId,\n customerId: props.customerId,\n isMicrosoftTeams: props.consumerKey === PluginConsumers.MicrosoftTeams,\n onClose\n });\n }\n\n function onClose(): void {\n const currentAppLink = ContextService.getCurrentRoute().appLink;\n\n // Force autoplay after reloading to save the user another click\n const currentUrl = Core.AppLinkHelper.getHref({\n ...currentAppLink,\n params: { a: true }\n });\n Core.LocationUtils.PageLoad(currentUrl);\n }\n\n React.useLayoutEffect(() => {\n EmbedPlaceHolderHelper.remove();\n }, []);\n\n if (!config.data || !shareLink.data || !sharedResource)\n return <></>;\n \n return (\n <EmbeddedLogin\n onClick={onClick}\n video={sharedResource}\n />\n );\n}","import { Flight } from 'libs/common/flight';\n\nimport { ShareRequests } from 'libs/shared/apps/share/flight-requests/ShareRequests';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { ClassificationRequests } from 'libs/shared/flight-requests/ClassificationRequests';\nimport { ClipRequests } from 'libs/shared/flight-requests/ClipRequests';\nimport { InteractiveRequests } from 'libs/shared/flight-requests/InteractiveRequests';\nimport { PlaylistRequests } from 'libs/shared/flight-requests/PlaylistRequests';\nimport { SeriesRequests } from 'libs/shared/flight-requests/SeriesRequests';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { VideoRequests } from 'libs/shared/flight-requests/VideoRequests';\nimport { CurrentUser, ShareLink } from 'libs/shared/interfaces';\n\nexport function useFetchSharedResource<T>(shareId: string): T {\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n const shareLink = Flight.useBasicFetch<ShareLink>(ShareRequests.getShareObject(shareId));\n\n function getResourceRequest(): Flight.Request {\n if (!shareLink.data || !currentUser.data)\n return null;\n\n switch (shareLink.data.objectTypeId) {\n case MasterType.Video:\n return VideoRequests.publicVideo(shareLink.data.objectId, shareId);\n case MasterType.Clip:\n return ClipRequests.publicClip(shareLink.data.objectId, shareId);\n case MasterType.Interactive:\n return InteractiveRequests.publicInteractiveMetadata(shareLink.data.objectId, shareId);\n case MasterType.Playlist:\n return PlaylistRequests.getSharedPlaylist(shareLink.data.objectId, shareId);\n case MasterType.Subject:\n return ClassificationRequests.classification(shareLink.data.objectId, currentUser.data.id);\n case MasterType.Series:\n return SeriesRequests.sharedSeries(shareLink.data.objectId, shareId);\n }\n }\n\n const resourceRequest = getResourceRequest();\n const resource = Flight.useBasicFetch<T>(resourceRequest);\n\n return resource.data;\n}","export function mapRatingValueToColourClass(ratingValue: number): string {\n if (!ratingValue) return '';\n\n const ratings = (rating: number): string => {\n switch (true) {\n case (rating < 32):\n return 'cv-rating-purple';\n case (rating < 48):\n return 'cv-rating-green';\n case (rating < 80):\n return 'cv-rating-blue';\n case (rating < 96):\n return 'cv-rating-red';\n case (rating < 128):\n return 'cv-rating-pink';\n case (rating >= 128):\n return 'cv-rating-yellow';\n default:\n return ''; // Handles unrated\n }\n };\n\n return ratings(ratingValue);\n}"],"names":["EmbeddedLogin","props","onClick","video","ratingCode","rating","code","ratingValue","value","ratingColour","seriesName","series","name","episodeNumber","seasonNumber","season","number","backgroundImage","ShareViewHelper","backgroundColor","getBgColorClass","style","DivButton","className","paddedSeason","NumberHelper","paddedEpisode","getSeries","viewBox","d","ClickViewLogo","EmbedLoginView","config","shareLink","shareId","sharedResource","onClose","currentAppLink","appLink","currentUrl","params","a","data","isPasswordProtected","application","action","args","primaryUrl","customerId","isMicrosoftTeams","consumerKey","url","window","open","useFetchSharedResource","currentUser","resourceRequest","objectTypeId","objectId","id","getResourceRequest","mapRatingValueToColourClass","ratings"],"sourceRoot":""}
|
|
1
|
+
{"version":3,"file":"scripts/8772-6c11095cea-lite.chunk.js","mappings":"6NACA,SAAgB,iBAAmB,SCoC7B,SAAUA,EAAcC,G,YAE1BC,EAEED,EAFFC,QACAC,EACEF,EADFE,MAGIC,EAAa,WAAYD,IAAqB,QAAZ,EAAAA,EAAME,cAAM,eAAEC,MAChDC,EAAc,WAAYJ,IAAqB,QAAZ,EAAAA,EAAME,cAAM,eAAEG,OACjDC,GAAe,OAA4BF,GAE3CG,EAAa,WAAYP,IAAqB,QAAZ,EAAAA,EAAMQ,cAAM,eAAEC,MAChDC,EAAgB,kBAAmBV,GAASA,EAAMU,cAClDC,EAAe,WAAYX,IAAqB,QAAZ,EAAAA,EAAMY,cAAM,eAAEC,QAElDC,EAAkBC,EAAA,cAA4Bf,GAChDgB,EAAkB,GAEjBF,IACHE,GAAkB,EAAAC,EAAA,GAAgBjB,EAAMS,KAAM,MAEhD,IAAMS,EAA6B,CACjCJ,gBAAiBA,EAAkB,QAAH,OAAWA,EAAe,MAAO,GACjEE,gBAAAA,GAIF,OACE,gBAACG,EAAA,EAAS,CACRC,UAAS,0BAAqBJ,GAAmB,yBACjDE,MAAOA,EACPnB,QAASA,KAENe,GAAmB,uBAAKM,UAAU,mBAErC,uBAAKA,UAAU,sBACb,0BACE,uBAAKA,UAAU,oBAtDzB,SAAmBb,EAAoBG,EAAuBC,GAC5D,IAAKJ,EACH,MAAO,GAET,IAAKI,IAAiBD,EACpB,OAAOH,EAET,IAAMc,EAAeC,EAAA,YAAuBX,EAAc,GACpDY,EAAgBD,EAAA,YAAuBZ,EAAe,GAE5D,MAAO,GAAP,OAAUH,EAAU,aAAKc,EAAY,oBAAYE,EACnD,CA4CaC,CAAUjB,EAAYG,EAAeC,IAEvCX,EAAMS,MAGT,uBAAKW,UAAS,2BAAsBd,IACjCL,IAIL,uBAAKmB,UAAW,oBACd,uBAAKK,QAAQ,iBACX,wBAAMC,EAAE,sFAIZ,uBAAKN,UAAU,kBACb,gBAACO,EAAA,GAAqB,OAI9B,C,oNCrEM,SAAUC,EAAe9B,GAC7B,IAAM+B,EAAS,kBAA6B,cAEtCC,EAAY,kBAAgC,mBAA6BhC,EAAMiC,UAC/EC,GAAiB,OAAmClC,EAAMiC,SAqChE,SAASE,IACP,IAAMC,EAAiB,sBAAiCC,QAGlDC,EAAa,eAA2B,OAAD,wBACxCF,GAAc,CACjBG,OAAQ,CAAEC,GAAG,MAEf,gBAA4BF,EAC9B,CAMA,OAJA,mBAAsB,WACpB,YACF,GAAG,IAEEP,EAAOU,MAAST,EAAUS,MAASP,EAItC,gBAAC,IAAa,CACZjC,QAvDJ,WACE,GAAI+B,EAAUS,KAAKC,oBAAnB,CACE,IAAML,EAAwB,CAC5BM,YAAa,UACbC,OAAQ,iCACRC,KAAM,CAAC7C,EAAMiC,SACbM,OAAQ,2BAAuCA,QAGjD,eAA2B,CACzBI,YAAa,cACbC,OAAQ,4CACRC,KAAM,CAAC7C,EAAMiC,SACbM,OAAQ,CAAEF,QAAAA,IAGb,MAID,GAAK,oBAML,sBAAkC,CAChCS,WAAYf,EAAOU,KAAKK,WACxBb,QAASjC,EAAMiC,QACfc,WAAY/C,EAAM+C,WAClBC,iBAAkBhD,EAAMiD,cAAgB,mBACxCd,QAAAA,QAXF,CACE,IAAMe,EAAM,kBAAwBnB,EAAOU,KAAKK,WAAY,UAAF,OAAY9C,EAAMiC,UAC5EkB,OAAOC,KAAKF,EAAK,SAElB,CASH,EAuBIhD,MAAOgC,IALF,gCAQX,C,kJC9EM,SAAUmB,EAA0BpB,GACxC,IAAMqB,EAAc,kBAAkC,mBAChDtB,EAAY,kBAAgC,mBAA6BC,IAsBzEsB,EApBN,WACE,IAAKvB,EAAUS,OAASa,EAAYb,KAClC,OAAO,KAET,OAAQT,EAAUS,KAAKe,cACrB,KAAK,UACH,OAAO,gBAA0BxB,EAAUS,KAAKgB,SAAUxB,GAC5D,KAAK,SACH,OAAO,eAAwBD,EAAUS,KAAKgB,SAAUxB,GAC1D,KAAK,gBACH,OAAO,8BAA8CD,EAAUS,KAAKgB,SAAUxB,GAChF,KAAK,aACH,OAAO,sBAAmCD,EAAUS,KAAKgB,SAAUxB,GACrE,KAAK,YACH,OAAO,mBAAsCD,EAAUS,KAAKgB,SAAUH,EAAYb,KAAKiB,IACzF,KAAK,WACH,OAAO,iBAA4B1B,EAAUS,KAAKgB,SAAUxB,GAElE,CAEwB0B,GAGxB,OAFiB,kBAAwBJ,GAEzBd,IAClB,C,kBCzCM,SAAUmB,EAA4BtD,GAC1C,OAAKA,EAEW,SAACF,GACf,QAAQ,GACN,KAAMA,EAAS,GACb,MAAO,mBACT,KAAMA,EAAS,GACb,MAAO,kBACT,KAAMA,EAAS,GACb,MAAO,iBACT,KAAMA,EAAS,GACb,MAAO,gBACT,KAAMA,EAAS,IACb,MAAO,iBACT,KAAMA,GAAU,IACd,MAAO,mBACT,QACE,MAAO,GAEb,CAEOyD,CAAQvD,GArBU,EAsB3B,C","sources":["file:///app/packages/projects/lite/src/apps/embed/components/embedded-login/embedded-login.scss","file:///app/packages/projects/lite/src/apps/embed/components/embedded-login/EmbeddedLogin.tsx","file:///app/packages/projects/lite/src/apps/embed/views/embed-login/EmbedLoginView.tsx","file:///app/packages/projects/lite/src/apps/share/hooks/useFetchSharedResource.ts","file:///app/packages/projects/player/src/utils/PlayerRatingHelper.ts"],"sourcesContent":["// extracted by mini-css-extract-plugin\nexport default {\"playButtonCircle\":\"zima4\"};","/**\n * IMPORTANT!\n * Please refer to projects\\player\\src\\components\\poster-image\\poster-image-details.md\n * before changing this file\n */\nimport React from 'react';\n\nimport { ShareViewHelper } from 'libs/shared/apps/share/views/share/ShareViewHelper';\nimport { DivButton } from 'libs/shared/components/div-button/DivButton';\nimport { ClickViewLogoInverted } from 'libs/shared/components/svgs/clickview-logo/ClickViewLogo';\nimport { LOGO_SAFE_BG_CLASS_NAMES } from 'libs/shared/constants/ColourClassNames';\nimport { VideoTypes } from 'libs/shared/interfaces';\nimport { getBgColorClass } from 'libs/shared/utils/getBgColorClass';\nimport { NumberHelper } from 'libs/shared/utils/NumberHelper';\n\nimport { mapRatingValueToColourClass } from 'projects/player/utils/PlayerRatingHelper';\n\nimport styles from './embedded-login.scss';\n\nfunction getSeries(seriesName: string, episodeNumber: number, seasonNumber: number): string {\n if (!seriesName)\n return '';\n\n if (!seasonNumber || !episodeNumber)\n return seriesName;\n\n const paddedSeason = NumberHelper.padNumber(seasonNumber, 2);\n const paddedEpisode = NumberHelper.padNumber(episodeNumber, 2);\n\n return `${seriesName} S${paddedSeason} • E${paddedEpisode}`;\n}\n\ninterface EmbeddedLoginProps {\n onClick: () => void;\n video: VideoTypes;\n}\n\nexport function EmbeddedLogin(props: EmbeddedLoginProps): React.ReactElement {\n const {\n onClick,\n video\n } = props;\n\n const ratingCode = 'rating' in video && video.rating?.code;\n const ratingValue = 'rating' in video && video.rating?.value;\n const ratingColour = mapRatingValueToColourClass(ratingValue);\n\n const seriesName = 'series' in video && video.series?.name;\n const episodeNumber = 'episodeNumber' in video && video.episodeNumber;\n const seasonNumber = 'season' in video && video.season?.number;\n\n const backgroundImage = ShareViewHelper.getImageUrl(video);\n let backgroundColor = '';\n\n if (!backgroundImage)\n backgroundColor = getBgColorClass(video.name, LOGO_SAFE_BG_CLASS_NAMES);\n\n const style: React.CSSProperties = {\n backgroundImage: backgroundImage ? `url('${backgroundImage}')` : '',\n backgroundColor\n };\n\n // Markup changes here should also be made to components in `landing-splash-plugin.ts`\n return (\n <DivButton\n className={`cv-embed-splash ${backgroundColor || 'cv-embed-splash-black'}`}\n style={style}\n onClick={onClick}\n >\n {!!backgroundImage && <div className='cv-splash-mask' />}\n\n <div className='cv-splash-metadata'>\n <h1>\n <div className='cv-splash-series'>\n {getSeries(seriesName, episodeNumber, seasonNumber)}\n </div>\n {video.name}\n </h1>\n\n <div className={`cv-splash-rating ${ratingColour}`}>\n {ratingCode}\n </div>\n </div>\n\n <div className={styles.playButtonCircle}>\n <svg viewBox='0 0 1800 1800'>\n <path d='M597.3333333333334 1418.6666666666665V373.3333333333333L1418.6666666666667 896z'></path>\n </svg>\n </div>\n\n <div className='cv-splash-logo'>\n <ClickViewLogoInverted />\n </div>\n </DivButton>\n );\n}","import React from 'react';\n\nimport { UrlHelper } from 'libs/common/backbone/utils/UrlHelper';\nimport { Core } from 'libs/common/core';\nimport { Flight } from 'libs/common/flight';\n\nimport { ShareRequests } from 'libs/shared/apps/share/flight-requests/ShareRequests';\nimport { ConfigRequests } from 'libs/shared/flight-requests/ConfigRequests';\nimport { Config, ShareLink, VideoTypes } from 'libs/shared/interfaces';\nimport { ContextService } from 'libs/shared/services/ContextService';\n\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\nimport { PluginConsumers } from 'shared/hooks/use-plugin-helper/usePluginHelper';\n\nimport { EmbeddedLogin } from 'apps/embed/components/embedded-login/EmbeddedLogin';\nimport { EmbedAuthHelper } from 'apps/embed/utils/EmbedAuthHelper';\nimport { EmbedPlaceHolderHelper } from 'apps/embed/utils/EmbedPlaceholderHelper';\nimport { useFetchSharedResource } from 'apps/share/hooks/useFetchSharedResource';\n\ninterface EmbedLoginViewProps {\n shareId: string;\n consumerKey?: string;\n customerId?: number\n}\n\nexport function EmbedLoginView(props: EmbedLoginViewProps): JSX.Element {\n const config = Flight.useBasicFetch<Config>(ConfigRequests.config());\n\n const shareLink = Flight.useBasicFetch<ShareLink>(ShareRequests.getShareObject(props.shareId));\n const sharedResource = useFetchSharedResource<VideoTypes>(props.shareId);\n\n function onClick(): void {\n if (shareLink.data.isPasswordProtected) {\n const appLink: Core.AppLink = {\n application: AppChannels.EMBED,\n action: Actions.Embed.VIEW_EMBEDDED_RESOURCE,\n args: [props.shareId],\n params: Core.AppLinkHelper.getCurrentAppLink().params\n };\n\n Core.AppLinkHelper.trigger({\n application: AppChannels.LAUNCHPAD,\n action: Actions.Launchpad.PASSWORD_PROTECTED_SHARE_LINK,\n args: [props.shareId],\n params: { appLink }\n });\n return;\n }\n\n\n // If the user can't use cookies, we open the share link in a new tab\n if (!EmbedAuthHelper.canUseCookies()) {\n const url = UrlHelper.safeUrlConcat(config.data.primaryUrl, `/share/${props.shareId}`);\n window.open(url, '_blank');\n return;\n }\n\n EmbedAuthHelper.renderSignInPopup({\n primaryUrl: config.data.primaryUrl,\n shareId: props.shareId,\n customerId: props.customerId,\n isMicrosoftTeams: props.consumerKey === PluginConsumers.MicrosoftTeams,\n onClose\n });\n }\n\n function onClose(): void {\n const currentAppLink = ContextService.getCurrentRoute().appLink;\n\n // Force autoplay after reloading to save the user another click\n const currentUrl = Core.AppLinkHelper.getHref({\n ...currentAppLink,\n params: { a: true }\n });\n Core.LocationUtils.PageLoad(currentUrl);\n }\n\n React.useLayoutEffect(() => {\n EmbedPlaceHolderHelper.remove();\n }, []);\n\n if (!config.data || !shareLink.data || !sharedResource)\n return <></>;\n \n return (\n <EmbeddedLogin\n onClick={onClick}\n video={sharedResource}\n />\n );\n}","import { Flight } from 'libs/common/flight';\n\nimport { ShareRequests } from 'libs/shared/apps/share/flight-requests/ShareRequests';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { ClassificationRequests } from 'libs/shared/flight-requests/ClassificationRequests';\nimport { ClipRequests } from 'libs/shared/flight-requests/ClipRequests';\nimport { InteractiveRequests } from 'libs/shared/flight-requests/InteractiveRequests';\nimport { PlaylistRequests } from 'libs/shared/flight-requests/PlaylistRequests';\nimport { SeriesRequests } from 'libs/shared/flight-requests/SeriesRequests';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { VideoRequests } from 'libs/shared/flight-requests/VideoRequests';\nimport { CurrentUser, ShareLink } from 'libs/shared/interfaces';\n\nexport function useFetchSharedResource<T>(shareId: string): T {\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n const shareLink = Flight.useBasicFetch<ShareLink>(ShareRequests.getShareObject(shareId));\n\n function getResourceRequest(): Flight.Request {\n if (!shareLink.data || !currentUser.data)\n return null;\n\n switch (shareLink.data.objectTypeId) {\n case MasterType.Video:\n return VideoRequests.publicVideo(shareLink.data.objectId, shareId);\n case MasterType.Clip:\n return ClipRequests.publicClip(shareLink.data.objectId, shareId);\n case MasterType.Interactive:\n return InteractiveRequests.publicInteractiveMetadata(shareLink.data.objectId, shareId);\n case MasterType.Playlist:\n return PlaylistRequests.getSharedPlaylist(shareLink.data.objectId, shareId);\n case MasterType.Subject:\n return ClassificationRequests.classification(shareLink.data.objectId, currentUser.data.id);\n case MasterType.Series:\n return SeriesRequests.sharedSeries(shareLink.data.objectId, shareId);\n }\n }\n\n const resourceRequest = getResourceRequest();\n const resource = Flight.useBasicFetch<T>(resourceRequest);\n\n return resource.data;\n}","export function mapRatingValueToColourClass(ratingValue: number): string {\n if (!ratingValue) return '';\n\n const ratings = (rating: number): string => {\n switch (true) {\n case (rating < 32):\n return 'cv-rating-purple';\n case (rating < 48):\n return 'cv-rating-green';\n case (rating < 80):\n return 'cv-rating-blue';\n case (rating < 96):\n return 'cv-rating-red';\n case (rating < 128):\n return 'cv-rating-pink';\n case (rating >= 128):\n return 'cv-rating-yellow';\n default:\n return ''; // Handles unrated\n }\n };\n\n return ratings(ratingValue);\n}"],"names":["EmbeddedLogin","props","onClick","video","ratingCode","rating","code","ratingValue","value","ratingColour","seriesName","series","name","episodeNumber","seasonNumber","season","number","backgroundImage","ShareViewHelper","backgroundColor","getBgColorClass","style","DivButton","className","paddedSeason","NumberHelper","paddedEpisode","getSeries","viewBox","d","ClickViewLogo","EmbedLoginView","config","shareLink","shareId","sharedResource","onClose","currentAppLink","appLink","currentUrl","params","a","data","isPasswordProtected","application","action","args","primaryUrl","customerId","isMicrosoftTeams","consumerKey","url","window","open","useFetchSharedResource","currentUser","resourceRequest","objectTypeId","objectId","id","getResourceRequest","mapRatingValueToColourClass","ratings"],"sourceRoot":""}
|