@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/{7855-37bcdd134e-lite.chunk.js.map → 7855-4b69540a71-lite.chunk.js.map}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scripts/7855-37bcdd134e-lite.chunk.js","mappings":"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","sources":["file:///app/packages/libs/shared/src/apps/share/components/recipient-item/recipient-item.scss","file:///app/packages/libs/shared/src/apps/share/components/recipient-item/classroom-group-recipient-item-metadata/ClassroomGroupRecipientItemMetadata.tsx","file:///app/packages/libs/shared/src/apps/share/components/recipient-item/classroom-recipient-item-metadata/ClassroomRecipientItemMetadata.tsx","file:///app/packages/libs/shared/src/apps/share/components/recipient-item/user-recipient-item-metadata/UserRecipientItemMetadata.tsx","file:///app/packages/libs/shared/src/apps/share/components/recipient-item/RecipientItem.tsx","file:///app/packages/libs/shared/src/apps/share/components/white-avatar/white-avatar.scss","file:///app/packages/libs/shared/src/apps/share/components/white-avatar/WhiteAvatar.tsx","file:///app/packages/libs/shared/src/apps/share/components/tokenized-typeahead/input-selection.scss","file:///app/packages/libs/shared/src/apps/share/components/tokenized-typeahead/InputSelectionExpander.tsx","file:///app/packages/libs/shared/src/apps/share/components/tokenized-typeahead/InputSelection.tsx","file:///app/packages/libs/shared/src/apps/share/components/tokenized-typeahead/tokenized-typeahead.scss","file:///app/packages/libs/shared/src/apps/share/components/tokenized-typeahead/TokenizedTypeahead.tsx","file:///app/packages/libs/shared/src/components/typeahead-empty-state/typeahead-empty-state.scss","file:///app/packages/libs/shared/src/components/typeahead-empty-state/TypeaheadEmptyState.tsx","file:///app/packages/libs/shared/src/components/typeahead-error-state/typeahead-error-state.scss","file:///app/packages/libs/shared/src/components/typeahead-error-state/TypeaheadErrorState.tsx","file:///app/packages/libs/shared/src/utils/GroupHelper.ts"],"sourcesContent":["// extracted by mini-css-extract-plugin\nexport default {\"removeRecipient\":\"mCbMC\",\"recipientItem\":\"kdcb0\",\"showSpinner\":\"xH6Mu\",\"avatarContainer\":\"Zcpg3\",\"recipientDetails\":\"v5EmV\",\"recipientDetailsWithRemoveButton\":\"_V928\"};","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { IconCircle } from 'libs/shared/components/icon-circle/IconCircle';\nimport { ClassroomGroup } from 'libs/shared/interfaces';\nimport { mapColourToBsVariant } from 'libs/shared/utils/GroupHelper';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport styles from '../recipient-item.scss';\n\nconst namespace = 'shared.classroomGroupRecipientItemMetadata';\n\nfunction getSubheading(classroomGroup: ClassroomGroup): string {\n const userCount = classroomGroup.users?.count ?? 0;\n const classroomName = classroomGroup.classroom?.name;\n\n if (classroomName)\n return LanguageService.getPhrase(namespace, 'subheading', { classroomName, smartCount: userCount });\n\n return '';\n}\n\ninterface ClassroomGroupRecipientItemMetadataProps {\n classroomGroup: ClassroomGroup;\n detailsClassName: string;\n}\n\nexport function ClassroomGroupRecipientItemMetadata(props: ClassroomGroupRecipientItemMetadataProps): JSX.Element {\n return (\n <>\n <div className={`${styles.avatarContainer} d-inline-block`}>\n <IconCircle\n svgName={cvSvgLibrary.Group}\n variant={mapColourToBsVariant(props.classroomGroup.metadata?.colour)}\n />\n </div>\n\n <div className={props.detailsClassName}>\n <h4 className='font-size-normal fw-normal m-0'>\n {props.classroomGroup.name}\n </h4>\n <p className='text-secondary m-0'>{getSubheading(props.classroomGroup)}</p>\n </div>\n </>\n );\n}","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { IconCircle } from 'libs/shared/components/icon-circle/IconCircle';\nimport { Classroom } from 'libs/shared/interfaces';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport styles from '../recipient-item.scss';\n\nconst namespace = 'shared.classroomRecipientItemMetadata';\n\nfunction getSubheading(classroom: Classroom): string {\n const userCount = classroom.users?.count;\n\n if (Number.isInteger(userCount))\n return LanguageService.getPhrase(namespace, 'subheading', { smartCount: userCount });\n\n return '';\n}\n\ninterface ClassroomRecipientItemMetadataProps {\n classroom: Classroom;\n detailsClassName: string;\n}\n\nexport function ClassroomRecipientItemMetadata(props: ClassroomRecipientItemMetadataProps): JSX.Element {\n return (\n <>\n <div className={`${styles.avatarContainer} d-inline-block`}>\n <IconCircle svgName={cvSvgLibrary.Classrooms} variant='teal' />\n </div>\n\n <div className={props.detailsClassName}>\n <h4 className='font-size-normal fw-normal m-0'>\n {props.classroom.name}\n </h4>\n <p className='text-secondary m-0'>{getSubheading(props.classroom)}</p>\n </div>\n </>\n );\n}","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { Avatar } from 'libs/shared/components/avatar/Avatar';\nimport { UserGroup } from 'libs/shared/enums/UserGroup';\nimport { UserRole } from 'libs/shared/enums/UserRole';\nimport { BaseObject, User } from 'libs/shared/interfaces';\nimport { UserHelper } from 'libs/shared/utils/UserHelper';\n\nimport styles from '../recipient-item.scss';\n\nconst namespace = 'shared.userRecipientItemMetadata';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nfunction getSubText(user: User): string {\n const userType = UserHelper.getUserType(user);\n const role = UserHelper.getUserRole(user);\n\n if (userType === UserGroup.Staff) {\n if (role === UserRole.Admin)\n return getPhrase('admin');\n\n return getPhrase('staff');\n }\n\n const yearGroup = UserHelper.getYearGroup(user);\n\n if (yearGroup?.name)\n return yearGroup.name;\n\n return getPhrase('student');\n}\n\ninterface UserRecipientItemMetadataProps {\n user: User;\n imageCdnUrl: string;\n detailsClassName: string;\n showDisplayName: boolean;\n getSubText?: (user: BaseObject) => string;\n}\n\nexport function UserRecipientItemMetadata(props: UserRecipientItemMetadataProps): JSX.Element {\n return (\n <>\n <div className={`${styles.avatarContainer} d-inline-block`}>\n <Avatar\n imageUrl={props.user.avatar?.url}\n imageCdnUrl={props.imageCdnUrl}\n initials={UserHelper.getInitials(props.user.name, props.user.surname)}\n />\n </div>\n\n <div className={props.detailsClassName}>\n <h4 className='font-size-normal fw-normal m-0'>\n {props.showDisplayName\n ? UserHelper.getDisplayName(props.user)\n : UserHelper.getFullName(props.user)\n }\n </h4>\n <p className='text-secondary m-0'>{props.getSubText ? props.getSubText(props.user) : getSubText(props.user)}</p>\n </div>\n </>\n );\n}","import React from 'react';\nimport { Spinner } from 'react-bootstrap';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\n\nimport { Tooltip } from 'libs/shared/components/tooltip/Tooltip';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { BaseObject, Classroom, ClassroomGroup, User } from 'libs/shared/interfaces';\nimport { MasterTypeHelper } from 'libs/shared/utils/MasterTypeHelper';\n\nimport { ClassroomGroupRecipientItemMetadata } from './classroom-group-recipient-item-metadata/ClassroomGroupRecipientItemMetadata';\nimport { ClassroomRecipientItemMetadata } from './classroom-recipient-item-metadata/ClassroomRecipientItemMetadata';\nimport { UserRecipientItemMetadata } from './user-recipient-item-metadata/UserRecipientItemMetadata';\n\nimport styles from './recipient-item.scss';\n\nconst namespace = 'share.recipientItem';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nfunction getRemovePhrase(type: MasterType): string {\n switch (type) {\n case (MasterType.User):\n return getPhrase('removeUser');\n case (MasterType.Classroom):\n return getPhrase('removeClassroom');\n case (MasterType.ClassroomGroup):\n return getPhrase('removeGroup');\n }\n return null;\n}\n\ninterface RecipientItemProps<T extends BaseObject = BaseObject> {\n entity: T;\n imageCdnUrl: string;\n showDisplayName: boolean;\n removeRecipient?: (id: string, onError?: () => void) => void;\n getSubText?: (entity: T) => string;\n}\n\nexport function RecipientItem<T extends BaseObject = BaseObject>(props: RecipientItemProps<T>): JSX.Element {\n const [ showSpinner, setShowSpinner ] = React.useState(false);\n\n let className = `${styles.recipientItem} d-flex`;\n\n if (showSpinner)\n className += ` ${styles.showSpinner}`;\n\n const detailsClassName = `${props.removeRecipient\n ? styles.recipientDetailsWithRemoveButton\n : styles.recipientDetails} d-inline-block ms-2`;\n\n function removeRecipient(): void {\n setShowSpinner(true);\n props.removeRecipient(props.entity.id, () => setShowSpinner(false));\n }\n\n return (\n <div className={className}>\n {(() => {\n if (MasterTypeHelper.isType<User>(props.entity, MasterType.User)) {\n return (\n <UserRecipientItemMetadata\n user={props.entity}\n imageCdnUrl={props.imageCdnUrl}\n detailsClassName={detailsClassName}\n showDisplayName={props.showDisplayName}\n getSubText={props.getSubText}\n />\n );\n }\n\n if (MasterTypeHelper.isType<Classroom>(props.entity, MasterType.Classroom)) {\n return (\n <ClassroomRecipientItemMetadata\n classroom={props.entity}\n detailsClassName={detailsClassName}\n />\n );\n }\n\n if (MasterTypeHelper.isType<ClassroomGroup>(props.entity, MasterType.ClassroomGroup)) {\n return (\n <ClassroomGroupRecipientItemMetadata\n classroomGroup={props.entity}\n detailsClassName={detailsClassName}\n />\n );\n }\n })()}\n\n {FunctionHelper.isFunction(props.removeRecipient) && (\n <div className={`${styles.removeRecipient} d-inline-flex justify-content-center align-items-center`}>\n {showSpinner\n ? <Spinner as='div' size='sm' animation='border' role='status' />\n : (\n <Tooltip title={getRemovePhrase(props.entity.typeId)} spanHack>\n <div\n className='btn-close cursor-pointer'\n role='button'\n aria-label='Close'\n onClick={removeRecipient}\n >\n </div>\n </Tooltip>\n )\n }\n </div>\n )}\n </div>\n );\n}\n","// extracted by mini-css-extract-plugin\nexport default {\"avatar\":\"srrS3\"};","import React from 'react';\n\nimport styles from './white-avatar.scss';\n\ninterface WhiteAvatarProps {\n initials: string;\n imageUrl?: string;\n}\n\nexport function WhiteAvatar(props: WhiteAvatarProps): React.ReactElement {\n const { imageUrl, initials } = props;\n\n const style: React.CSSProperties = {};\n\n if (imageUrl)\n style.backgroundImage = `url('${imageUrl}')`;\n\n return (\n <div className={styles.avatar} style={style}>\n {imageUrl ? <> </> : initials}\n </div>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"svgContainer\":\"laVU4\",\"selection\":\"vEOCt\",\"expander\":\"d1NHd\",\"iconContainer\":\"rFH4W\",\"icon\":\"BarYz\",\"bubble\":\"HF0E8\",\"spinnerContainer\":\"iKeXW\",\"remove\":\"pyzCM\",\"removeBubble\":\"mgt6Y\"};","import React from 'react';\nimport { Spinner } from 'react-bootstrap';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { WhiteAvatar } from 'libs/shared/apps/share/components/white-avatar/WhiteAvatar';\nimport { DivButton } from 'libs/shared/components/div-button/DivButton';\nimport { SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\nimport { Tooltip } from 'libs/shared/components/tooltip/Tooltip';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { BaseObject, Classroom, ClassroomGroup, User } from 'libs/shared/interfaces';\nimport { mapColourToBsVariant } from 'libs/shared/utils/GroupHelper';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\nimport { UserHelper } from 'libs/shared/utils/UserHelper';\n\nimport styles from './input-selection.scss';\n\nconst getPhrase = LanguageService.encloseNamespace('shared.inputSelection');\n\nfunction mapEntityTypeToForegroundColor(entity: BaseObject): string {\n switch (entity.typeId) {\n case MasterType.Classroom: {\n return 'text-teal-hover';\n }\n\n case MasterType.ClassroomGroup: {\n return `text-${mapColourToBsVariant((entity as ClassroomGroup).metadata?.colour)}-hover`;\n }\n }\n}\n\nfunction getColouredIconClass(selection: Classroom | ClassroomGroup): string {\n let iconClass = `${styles.svgContainer} ${styles.icon}`;\n\n if (selection.typeId === MasterType.Classroom)\n iconClass += ' text-teal';\n else\n iconClass += ` text-${mapColourToBsVariant((selection as ClassroomGroup).metadata?.colour)}`;\n\n return iconClass;\n}\n\ninterface InputSelectionExpanderProps {\n canExpand: boolean;\n hasExpanded: boolean;\n selection: BaseObject;\n onClickExpand?: () => void;\n}\n\nexport function InputSelectionExpander(props: InputSelectionExpanderProps): JSX.Element {\n const colourClass = mapEntityTypeToForegroundColor(props.selection);\n\n const isClassroom = props.selection.typeId === MasterType.Classroom;\n\n if (!props.canExpand) {\n if (!props.selection.typeId || props.selection.typeId === MasterType.User) {\n const user = props.selection as User;\n\n return (\n <div className={styles.svgContainer}>\n <WhiteAvatar\n imageUrl={user.avatar?.url}\n initials={UserHelper.getInitials(props.selection.name, (props.selection as User).surname)}\n />\n </div>\n );\n }\n\n return (\n <Tooltip title={getPhrase(isClassroom ? 'emptyClassroom' : 'emptyGroup')}>\n <div className={`align-items-center border border-white bg-white ${styles.iconContainer}`}>\n <SvgContainer\n className={getColouredIconClass(props.selection)}\n svgName={isClassroom ? cvSvgLibrary.Classrooms : cvSvgLibrary.Group}\n />\n </div>\n </Tooltip>\n );\n }\n\n if (!props.hasExpanded) {\n return (\n <>\n {/* Visible on hover */}\n <DivButton\n className={`align-items-center cursor-pointer text-white border border-white rounded-circle ${styles.expander} ${colourClass}`}\n onClick={props.onClickExpand}\n >\n <SvgContainer svgName={cvSvgLibrary.Plus} className={`d-flex align-items-center ${styles.svgContainer}`} />\n </DivButton>\n\n {/* Visible when not hovering */}\n <div className={`align-items-center border border-white bg-white ${styles.iconContainer}`}>\n <SvgContainer\n className={getColouredIconClass(props.selection)}\n svgName={isClassroom ? cvSvgLibrary.Classrooms : cvSvgLibrary.Group}\n />\n </div>\n </>\n );\n }\n\n return (\n <div className={`d-flex align-items-center text-white ${styles.spinnerContainer} ${styles.svgContainer}`}>\n <Spinner as='div' size='sm' animation='border' role='status' />\n </div>\n );\n}","import React from 'react';\nimport { ButtonProps } from 'react-bootstrap';\n\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { DivButton } from 'libs/shared/components/div-button/DivButton';\nimport { SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { UserGroup } from 'libs/shared/enums/UserGroup';\nimport { Classroom, ClassroomGroup, User } from 'libs/shared/interfaces';\nimport { mapColourToBsVariant } from 'libs/shared/utils/GroupHelper';\nimport { MasterTypeHelper } from 'libs/shared/utils/MasterTypeHelper';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\nimport { UserHelper } from 'libs/shared/utils/UserHelper';\n\nimport { InputSelectionExpander } from './InputSelectionExpander';\n\nimport styles from './input-selection.scss';\n\n/**\n * TODO: This entire file needs to be refactored to work\n * better with non standard entities. ATM it's also being used\n * in the invite a colleague UI for trials. - Sha\n */\ninterface OtherEntity {\n id: never;\n typeId: never;\n name: string;\n}\n\ntype Entity = Classroom | ClassroomGroup | User | OtherEntity;\n\nfunction mapEntityTypeToBsVariant(entity: Entity): ButtonProps['variant'] {\n if (!entity.typeId)\n return 'dark-blue';\n\n switch (entity.typeId) {\n case MasterType.User: {\n // TODO: Delete this once https://clickview.atlassian.net/browse/INBOX-2151 is addressed\n if (typeof(entity as User).userType === 'number')\n return ((entity as User).userType as any) === 2 ? 'dark-blue' : 'indigo';\n\n if ((entity as User).userType === UserGroup.Learner)\n return 'dark-blue';\n\n return 'indigo';\n }\n\n case MasterType.Classroom: {\n return 'teal';\n }\n\n case MasterType.ClassroomGroup: {\n return mapColourToBsVariant((entity as ClassroomGroup).metadata?.colour);\n }\n }\n}\n\ninterface InputSelectionProps {\n selection: Entity;\n onClickRemove?: (selection: Entity) => void;\n onClickExpand?: (id: string) => void;\n hasStudentExperience?: boolean;\n}\n\nexport function InputSelection(props: InputSelectionProps): JSX.Element {\n const isClassroom = MasterTypeHelper.isType(props.selection, MasterType.Classroom);\n const isClassroomGroup = MasterTypeHelper.isType(props.selection, MasterType.ClassroomGroup);\n const isExpandable = props.onClickExpand && (isClassroom || isClassroomGroup);\n\n /**\n * We only know that there are no members if props.selections.users.count exists\n * and is 0 as it is set to 0 in <MainShare /> after fetching the users.\n */\n const hasMembers = !!(props.selection as Classroom | ClassroomGroup).users?.count;\n const hasFetchedMembers = !!(props.selection as Classroom | ClassroomGroup).users?.data?.length;\n\n const [ hasExpanded, setHasExpanded ] = React.useState(false);\n const [ canExpand, setCanExpand ] = React.useState(isExpandable && hasMembers);\n\n React.useEffect(() => {\n setCanExpand(isExpandable && hasMembers);\n }, [ isExpandable, hasMembers ]);\n\n function onClickExpand(): void {\n setHasExpanded(true);\n props.onClickExpand(props.selection.id);\n }\n\n if (hasFetchedMembers) {\n const selection: Classroom | ClassroomGroup = props.selection as Classroom | ClassroomGroup;\n\n const colourVariant = mapEntityTypeToBsVariant(props.selection);\n\n return (\n <div className={`d-flex align-items-center flex-wrap me-1 mt-1 pb-1 ps-1 pe-4 position-relative border-${colourVariant} text-${colourVariant} ${styles.bubble}`}>\n {selection.users.data.map(user => (\n <InputToken\n key={`${user.id}:${props.selection.id}`}\n selection={user}\n colourVariant={colourVariant}\n hasStudentExperience={props.hasStudentExperience}\n />\n ))}\n\n <DivButton\n className={`cursor-pointer position-absolute text-${colourVariant} ${styles.removeBubble}`}\n onClick={() => props.onClickRemove(props.selection)}\n >\n <SvgContainer svgName={cvSvgLibrary.Close} className={`d-flex align-items-center ${styles.svgContainer}`} />\n </DivButton>\n </div>\n );\n }\n\n return (\n <InputToken\n selection={props.selection}\n canExpand={canExpand}\n hasExpanded={hasExpanded}\n onClickExpand={onClickExpand}\n onClickRemove={props.onClickRemove}\n colourVariant={mapEntityTypeToBsVariant(props.selection)}\n hasStudentExperience={props.hasStudentExperience}\n />\n );\n}\n\ninterface InputTokenProps<T extends HashObject> {\n selection: T | Entity;\n colourVariant: string;\n canExpand?: boolean;\n hasExpanded?: boolean;\n onClickExpand?: () => void;\n onClickRemove?: (selection: Entity) => void;\n hasStudentExperience?: boolean;\n hideExpander?: boolean;\n}\n\nexport function InputToken<T extends HashObject = Entity>(props: InputTokenProps<T>): JSX.Element {\n const colourVariant = props.colourVariant || mapEntityTypeToBsVariant(props.selection);\n\n let selectionName = props.selection.name;\n\n if (props.selection.typeId === MasterType.User) {\n selectionName = props.hasStudentExperience\n ? UserHelper.getDisplayName(props.selection as User)\n : UserHelper.getFullName(props.selection as User);\n }\n\n return (\n <div className={`${styles.selection} bg-${colourVariant} rounded-pill text-${colourVariant} d-flex align-items-center me-1 mt-1 overflow-hidden`}>\n {!props.hideExpander && (\n <InputSelectionExpander\n canExpand={props.canExpand}\n hasExpanded={props.hasExpanded}\n onClickExpand={props.onClickExpand}\n selection={props.selection}\n />\n )}\n\n <span className='mx-1 text-white text-truncate'>{selectionName}</span>\n\n {FunctionHelper.isFunction(props.onClickRemove) && (\n <DivButton\n className={`d-flex align-items-center cursor-pointer align-self-stretch text-white ${styles.remove}`}\n onClick={() => props.onClickRemove(props.selection)}\n >\n <SvgContainer svgName={cvSvgLibrary.Close} className={`d-flex align-items-center ${styles.svgContainer}`} />\n </DivButton>\n )}\n </div>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"container\":\"Dc3kX\",\"suggestionsContainerOpen\":\"c5t3e\",\"selectionContainer\":\"kFjoN\",\"sectionContainer\":\"mLrE3\"};","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\n\nimport { RecipientItem } from 'libs/shared/apps/share/components/recipient-item/RecipientItem';\nimport { SearchBar, SearchBarProps } from 'libs/shared/components/search-bar/SearchBar';\nimport { SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\nimport { TypeaheadEmptyState } from 'libs/shared/components/typeahead-empty-state/TypeaheadEmptyState';\nimport { TypeaheadErrorState } from 'libs/shared/components/typeahead-error-state/TypeaheadErrorState';\nimport { BaseObject } from 'libs/shared/interfaces';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport { InputSelection } from './InputSelection';\n\nimport styles from './tokenized-typeahead.scss';\n\nconst namespace = 'shared.tokenizedTypeahead';\n\nexport const TOKENIZED_TYPEAHEAD_SUGGESTIONS_LIMIT = 10;\n\ninterface TokenizedTypeaheadProps<T extends BaseObject = BaseObject> extends SearchBarProps<T> {\n selections: T[];\n removeSelection: (selection: T) => void;\n emptyStateImageUrl: string;\n errorStateImageUrl: string;\n hasStudentExperience?: boolean;\n getInputTokenComponent?: (selection: T) => JSX.Element;\n imageCdnUrl?: string;\n className?: string;\n hideIcon?: boolean;\n\n /**\n * If this is passed in groups and classrooms will have the option to expand\n * otherwise they will appear as normal without the + icon\n */\n fetchSelectionMembers?: (id: string) => void;\n sharePermissionsDescription?: string;\n}\n\nTokenizedTypeahead.defaultProps = {\n renderSuggestionsOnInputFocus: true\n};\n\n/**\n * This component extends the functionality of the `SearchBar` component by\n * displaying a list of selections as tokens inside the search bar.\n * \n * Any component using this component is responsible for managing the state of\n * these tokens (selections). See `MainShare.tsx` for an example.\n */\nexport function TokenizedTypeahead<T extends BaseObject = BaseObject>(props: TokenizedTypeaheadProps<T>): JSX.Element {\n return (\n <div className={`form-control h-auto d-flex align-items-top position-relative ${props.hideIcon ? '' : 'py-1 px-0'} ${props.className}`}>\n {!props.hideIcon && <SvgContainer className='svg-container m-1' svgName={cvSvgLibrary.Search} />}\n\n <div className={`${styles.selectionContainer} d-flex flex-wrap align-items-center mt-n1`}>\n {props.selections.map(s => {\n if (props.getInputTokenComponent)\n return props.getInputTokenComponent(s);\n\n return (\n <InputSelection\n key={s.id}\n selection={s}\n onClickRemove={props.removeSelection}\n onClickExpand={props.fetchSelectionMembers}\n hasStudentExperience={props.hasStudentExperience}\n />\n );\n })}\n\n <SearchBar\n {...props}\n onBackspace={() => {\n if (!props.selections.length)\n return;\n\n props.removeSelection(ArrayHelper.last(props.selections));\n }}\n recentSearchHeading={props.recentSearchHeading || LanguageService.getPhrase(namespace, 'recentSearchHeading')}\n placeholder={!props.selections?.length ? props.placeholder : ' '}\n searchIconPlacement={false}\n clearQueryOnSelect\n getSuggestionComponent={suggestion => {\n if (props.getSuggestionComponent)\n return props.getSuggestionComponent(suggestion);\n\n return (\n <RecipientItem\n entity={suggestion}\n imageCdnUrl={props.imageCdnUrl}\n showDisplayName={props.hasStudentExperience}\n />\n );\n }}\n getEmptyStateComponent={query => <TypeaheadEmptyState query={query} imageUrl={props.emptyStateImageUrl} />}\n getErrorStateComponent={onClickTryAgain =>\n <TypeaheadErrorState imageUrl={props.errorStateImageUrl} onClickTryAgain={onClickTryAgain} />\n }\n theme={{\n container: styles.container,\n suggestionsContainerOpen: `bg-white py-1 rounded border mt-1 ${styles.suggestionsContainerOpen}`,\n sectionContainer: `border-bottom py-1 ${styles.sectionContainer}`\n }}\n sectionTitleClassName='ps-2'\n renderSuggestionsOnInputFocus={props.renderSuggestionsOnInputFocus}\n onSuggestionDependencies={[props.selections]}\n />\n </div>\n\n {!!props.sharePermissionsDescription &&\n <span className='px-2 text-secondary text-nowrap'>{props.sharePermissionsDescription}</span>\n }\n </div>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"emptyState\":\"bKTf0\"};","import React from 'react';\n\nimport { Text } from 'libs/shared/components/text/Text';\nimport { useDebounce } from 'libs/shared/hooks/UseDebounce';\n\nimport styles from './typeahead-empty-state.scss';\n\nconst namespace = 'shared.typeaheadEmptyState';\n\ninterface TypeaheadEmptyStateProps {\n query: string;\n imageUrl: string;\n}\n\nexport function TypeaheadEmptyState({ query = '', imageUrl }: TypeaheadEmptyStateProps): JSX.Element {\n function onClick(e: React.MouseEvent<HTMLDivElement>): void {\n e.stopPropagation();\n }\n\n const debouncedQuery = useDebounce(query, 300);\n\n return (\n <div className='d-flex flex-column align-items-center text-center' onClick={onClick}>\n <img\n alt=''\n role='presentation'\n src={imageUrl}\n className={`pb-2 ${styles.emptyState}`}\n />\n <h2 className='h6'>\n <Text\n namespace={namespace}\n phrase='noResults'\n options={{ query: debouncedQuery, smartCount: debouncedQuery.length }}\n />\n </h2>\n </div>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"emptyState\":\"k5mEG\"};","import React from 'react';\n\nimport { DivButton } from 'libs/shared/components/div-button/DivButton';\nimport { Text } from 'libs/shared/components/text/Text';\n\nimport styles from './typeahead-error-state.scss';\n\nconst namespace = 'shared.typeaheadErrorState';\n\ninterface TypeaheadErrorStateProps {\n imageUrl: string;\n onClickTryAgain: () => void;\n}\n\nexport function TypeaheadErrorState(props: TypeaheadErrorStateProps): JSX.Element {\n function onClickComponent(e: React.MouseEvent<HTMLDivElement>): void {\n e.stopPropagation();\n }\n\n function onClickTryAgain(e: React.MouseEvent<HTMLDivElement>): void {\n e.stopPropagation();\n \n props.onClickTryAgain();\n }\n\n return (\n <div className='d-flex flex-column align-items-center text-center' onClick={onClickComponent}>\n <img\n alt=''\n role='presentation'\n src={props.imageUrl}\n className={`pb-2 ${styles.emptyState}`}\n />\n <h2 className='h6'>\n <Text namespace={namespace} phrase='error' />\n </h2>\n <DivButton onClick={onClickTryAgain} className='btn btn-link info-link p-0'>\n <Text namespace={namespace} phrase='tryAgain' />\n </DivButton>\n </div>\n );\n}","import { ButtonProps } from 'react-bootstrap';\n\nimport { ClassroomGroupColour } from 'libs/shared/interfaces';\n\nexport function mapColourToBsVariant(groupColour: ClassroomGroupColour): ButtonProps['variant'] {\n switch (groupColour) {\n case ClassroomGroupColour.Pink:\n return 'pink';\n case ClassroomGroupColour.Orange:\n return 'orange';\n case ClassroomGroupColour.Green:\n return 'green';\n case ClassroomGroupColour.Blue:\n return 'blue';\n case ClassroomGroupColour.Purple:\n return 'purple';\n case ClassroomGroupColour.Indigo:\n return 'indigo';\n default:\n return 'pink';\n }\n}\n"],"names":["namespace","ClassroomGroupRecipientItemMetadata","props","className","IconCircle","svgName","variant","classroomGroup","metadata","colour","detailsClassName","name","userCount","users","count","classroomName","classroom","LanguageService","smartCount","getSubheading","ClassroomRecipientItemMetadata","Number","isInteger","getPhrase","UserRecipientItemMetadata","Avatar","imageUrl","user","avatar","url","imageCdnUrl","initials","UserHelper","surname","showDisplayName","getSubText","userType","role","UserGroup","UserRole","yearGroup","getRemovePhrase","type","MasterType","RecipientItem","showSpinner","setShowSpinner","removeRecipient","MasterTypeHelper","entity","FunctionHelper","Spinner","as","size","animation","Tooltip","title","typeId","spanHack","onClick","id","WhiteAvatar","style","backgroundImage","getColouredIconClass","selection","iconClass","InputSelectionExpander","colourClass","mapEntityTypeToForegroundColor","isClassroom","canExpand","SvgContainer","hasExpanded","DivButton","onClickExpand","mapEntityTypeToBsVariant","InputSelection","isClassroomGroup","isExpandable","hasMembers","hasFetchedMembers","data","length","setHasExpanded","setCanExpand","colourVariant","map","InputToken","key","hasStudentExperience","onClickRemove","selectionName","hideExpander","TOKENIZED_TYPEAHEAD_SUGGESTIONS_LIMIT","TokenizedTypeahead","hideIcon","selections","s","getInputTokenComponent","removeSelection","fetchSelectionMembers","SearchBar","onBackspace","ArrayHelper","recentSearchHeading","placeholder","searchIconPlacement","clearQueryOnSelect","getSuggestionComponent","suggestion","getEmptyStateComponent","query","TypeaheadEmptyState","emptyStateImageUrl","getErrorStateComponent","onClickTryAgain","TypeaheadErrorState","errorStateImageUrl","theme","container","suggestionsContainerOpen","sectionContainer","sectionTitleClassName","renderSuggestionsOnInputFocus","onSuggestionDependencies","sharePermissionsDescription","defaultProps","debouncedQuery","e","stopPropagation","alt","src","Text","phrase","options","mapColourToBsVariant","groupColour"],"sourceRoot":""}
|
|
1
|
+
{"version":3,"file":"scripts/7855-4b69540a71-lite.chunk.js","mappings":"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","sources":["file:///app/packages/libs/shared/src/apps/share/components/recipient-item/recipient-item.scss","file:///app/packages/libs/shared/src/apps/share/components/recipient-item/classroom-group-recipient-item-metadata/ClassroomGroupRecipientItemMetadata.tsx","file:///app/packages/libs/shared/src/apps/share/components/recipient-item/classroom-recipient-item-metadata/ClassroomRecipientItemMetadata.tsx","file:///app/packages/libs/shared/src/apps/share/components/recipient-item/user-recipient-item-metadata/UserRecipientItemMetadata.tsx","file:///app/packages/libs/shared/src/apps/share/components/recipient-item/RecipientItem.tsx","file:///app/packages/libs/shared/src/apps/share/components/white-avatar/white-avatar.scss","file:///app/packages/libs/shared/src/apps/share/components/white-avatar/WhiteAvatar.tsx","file:///app/packages/libs/shared/src/apps/share/components/tokenized-typeahead/input-selection.scss","file:///app/packages/libs/shared/src/apps/share/components/tokenized-typeahead/InputSelectionExpander.tsx","file:///app/packages/libs/shared/src/apps/share/components/tokenized-typeahead/InputSelection.tsx","file:///app/packages/libs/shared/src/apps/share/components/tokenized-typeahead/tokenized-typeahead.scss","file:///app/packages/libs/shared/src/apps/share/components/tokenized-typeahead/TokenizedTypeahead.tsx","file:///app/packages/libs/shared/src/components/typeahead-empty-state/typeahead-empty-state.scss","file:///app/packages/libs/shared/src/components/typeahead-empty-state/TypeaheadEmptyState.tsx","file:///app/packages/libs/shared/src/components/typeahead-error-state/typeahead-error-state.scss","file:///app/packages/libs/shared/src/components/typeahead-error-state/TypeaheadErrorState.tsx","file:///app/packages/libs/shared/src/utils/GroupHelper.ts"],"sourcesContent":["// extracted by mini-css-extract-plugin\nexport default {\"removeRecipient\":\"mCbMC\",\"recipientItem\":\"kdcb0\",\"showSpinner\":\"xH6Mu\",\"avatarContainer\":\"Zcpg3\",\"recipientDetails\":\"v5EmV\",\"recipientDetailsWithRemoveButton\":\"_V928\"};","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { IconCircle } from 'libs/shared/components/icon-circle/IconCircle';\nimport { ClassroomGroup } from 'libs/shared/interfaces';\nimport { mapColourToBsVariant } from 'libs/shared/utils/GroupHelper';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport styles from '../recipient-item.scss';\n\nconst namespace = 'shared.classroomGroupRecipientItemMetadata';\n\nfunction getSubheading(classroomGroup: ClassroomGroup): string {\n const userCount = classroomGroup.users?.count ?? 0;\n const classroomName = classroomGroup.classroom?.name;\n\n if (classroomName)\n return LanguageService.getPhrase(namespace, 'subheading', { classroomName, smartCount: userCount });\n\n return '';\n}\n\ninterface ClassroomGroupRecipientItemMetadataProps {\n classroomGroup: ClassroomGroup;\n detailsClassName: string;\n}\n\nexport function ClassroomGroupRecipientItemMetadata(props: ClassroomGroupRecipientItemMetadataProps): JSX.Element {\n return (\n <>\n <div className={`${styles.avatarContainer} d-inline-block`}>\n <IconCircle\n svgName={cvSvgLibrary.Group}\n variant={mapColourToBsVariant(props.classroomGroup.metadata?.colour)}\n />\n </div>\n\n <div className={props.detailsClassName}>\n <h4 className='font-size-normal fw-normal m-0'>\n {props.classroomGroup.name}\n </h4>\n <p className='text-secondary m-0'>{getSubheading(props.classroomGroup)}</p>\n </div>\n </>\n );\n}","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { IconCircle } from 'libs/shared/components/icon-circle/IconCircle';\nimport { Classroom } from 'libs/shared/interfaces';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport styles from '../recipient-item.scss';\n\nconst namespace = 'shared.classroomRecipientItemMetadata';\n\nfunction getSubheading(classroom: Classroom): string {\n const userCount = classroom.users?.count;\n\n if (Number.isInteger(userCount))\n return LanguageService.getPhrase(namespace, 'subheading', { smartCount: userCount });\n\n return '';\n}\n\ninterface ClassroomRecipientItemMetadataProps {\n classroom: Classroom;\n detailsClassName: string;\n}\n\nexport function ClassroomRecipientItemMetadata(props: ClassroomRecipientItemMetadataProps): JSX.Element {\n return (\n <>\n <div className={`${styles.avatarContainer} d-inline-block`}>\n <IconCircle svgName={cvSvgLibrary.Classrooms} variant='teal' />\n </div>\n\n <div className={props.detailsClassName}>\n <h4 className='font-size-normal fw-normal m-0'>\n {props.classroom.name}\n </h4>\n <p className='text-secondary m-0'>{getSubheading(props.classroom)}</p>\n </div>\n </>\n );\n}","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { Avatar } from 'libs/shared/components/avatar/Avatar';\nimport { UserGroup } from 'libs/shared/enums/UserGroup';\nimport { UserRole } from 'libs/shared/enums/UserRole';\nimport { BaseObject, User } from 'libs/shared/interfaces';\nimport { UserHelper } from 'libs/shared/utils/UserHelper';\n\nimport styles from '../recipient-item.scss';\n\nconst namespace = 'shared.userRecipientItemMetadata';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nfunction getSubText(user: User): string {\n const userType = UserHelper.getUserType(user);\n const role = UserHelper.getUserRole(user);\n\n if (userType === UserGroup.Staff) {\n if (role === UserRole.Admin)\n return getPhrase('admin');\n\n return getPhrase('staff');\n }\n\n const yearGroup = UserHelper.getYearGroup(user);\n\n if (yearGroup?.name)\n return yearGroup.name;\n\n return getPhrase('student');\n}\n\ninterface UserRecipientItemMetadataProps {\n user: User;\n imageCdnUrl: string;\n detailsClassName: string;\n showDisplayName: boolean;\n getSubText?: (user: BaseObject) => string;\n}\n\nexport function UserRecipientItemMetadata(props: UserRecipientItemMetadataProps): JSX.Element {\n return (\n <>\n <div className={`${styles.avatarContainer} d-inline-block`}>\n <Avatar\n imageUrl={props.user.avatar?.url}\n imageCdnUrl={props.imageCdnUrl}\n initials={UserHelper.getInitials(props.user.name, props.user.surname)}\n />\n </div>\n\n <div className={props.detailsClassName}>\n <h4 className='font-size-normal fw-normal m-0'>\n {props.showDisplayName\n ? UserHelper.getDisplayName(props.user)\n : UserHelper.getFullName(props.user)\n }\n </h4>\n <p className='text-secondary m-0'>{props.getSubText ? props.getSubText(props.user) : getSubText(props.user)}</p>\n </div>\n </>\n );\n}","import React from 'react';\nimport { Spinner } from 'react-bootstrap';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\n\nimport { Tooltip } from 'libs/shared/components/tooltip/Tooltip';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { BaseObject, Classroom, ClassroomGroup, User } from 'libs/shared/interfaces';\nimport { MasterTypeHelper } from 'libs/shared/utils/MasterTypeHelper';\n\nimport { ClassroomGroupRecipientItemMetadata } from './classroom-group-recipient-item-metadata/ClassroomGroupRecipientItemMetadata';\nimport { ClassroomRecipientItemMetadata } from './classroom-recipient-item-metadata/ClassroomRecipientItemMetadata';\nimport { UserRecipientItemMetadata } from './user-recipient-item-metadata/UserRecipientItemMetadata';\n\nimport styles from './recipient-item.scss';\n\nconst namespace = 'share.recipientItem';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nfunction getRemovePhrase(type: MasterType): string {\n switch (type) {\n case (MasterType.User):\n return getPhrase('removeUser');\n case (MasterType.Classroom):\n return getPhrase('removeClassroom');\n case (MasterType.ClassroomGroup):\n return getPhrase('removeGroup');\n }\n return null;\n}\n\ninterface RecipientItemProps<T extends BaseObject = BaseObject> {\n entity: T;\n imageCdnUrl: string;\n showDisplayName: boolean;\n removeRecipient?: (id: string, onError?: () => void) => void;\n getSubText?: (entity: T) => string;\n}\n\nexport function RecipientItem<T extends BaseObject = BaseObject>(props: RecipientItemProps<T>): JSX.Element {\n const [ showSpinner, setShowSpinner ] = React.useState(false);\n\n let className = `${styles.recipientItem} d-flex`;\n\n if (showSpinner)\n className += ` ${styles.showSpinner}`;\n\n const detailsClassName = `${props.removeRecipient\n ? styles.recipientDetailsWithRemoveButton\n : styles.recipientDetails} d-inline-block ms-2`;\n\n function removeRecipient(): void {\n setShowSpinner(true);\n props.removeRecipient(props.entity.id, () => setShowSpinner(false));\n }\n\n return (\n <div className={className}>\n {(() => {\n if (MasterTypeHelper.isType<User>(props.entity, MasterType.User)) {\n return (\n <UserRecipientItemMetadata\n user={props.entity}\n imageCdnUrl={props.imageCdnUrl}\n detailsClassName={detailsClassName}\n showDisplayName={props.showDisplayName}\n getSubText={props.getSubText}\n />\n );\n }\n\n if (MasterTypeHelper.isType<Classroom>(props.entity, MasterType.Classroom)) {\n return (\n <ClassroomRecipientItemMetadata\n classroom={props.entity}\n detailsClassName={detailsClassName}\n />\n );\n }\n\n if (MasterTypeHelper.isType<ClassroomGroup>(props.entity, MasterType.ClassroomGroup)) {\n return (\n <ClassroomGroupRecipientItemMetadata\n classroomGroup={props.entity}\n detailsClassName={detailsClassName}\n />\n );\n }\n })()}\n\n {FunctionHelper.isFunction(props.removeRecipient) && (\n <div className={`${styles.removeRecipient} d-inline-flex justify-content-center align-items-center`}>\n {showSpinner\n ? <Spinner as='div' size='sm' animation='border' role='status' />\n : (\n <Tooltip title={getRemovePhrase(props.entity.typeId)} spanHack>\n <div\n className='btn-close cursor-pointer'\n role='button'\n aria-label='Close'\n onClick={removeRecipient}\n >\n </div>\n </Tooltip>\n )\n }\n </div>\n )}\n </div>\n );\n}\n","// extracted by mini-css-extract-plugin\nexport default {\"avatar\":\"srrS3\"};","import React from 'react';\n\nimport styles from './white-avatar.scss';\n\ninterface WhiteAvatarProps {\n initials: string;\n imageUrl?: string;\n}\n\nexport function WhiteAvatar(props: WhiteAvatarProps): React.ReactElement {\n const { imageUrl, initials } = props;\n\n const style: React.CSSProperties = {};\n\n if (imageUrl)\n style.backgroundImage = `url('${imageUrl}')`;\n\n return (\n <div className={styles.avatar} style={style}>\n {imageUrl ? <> </> : initials}\n </div>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"svgContainer\":\"laVU4\",\"selection\":\"vEOCt\",\"expander\":\"d1NHd\",\"iconContainer\":\"rFH4W\",\"icon\":\"BarYz\",\"bubble\":\"HF0E8\",\"spinnerContainer\":\"iKeXW\",\"remove\":\"pyzCM\",\"removeBubble\":\"mgt6Y\"};","import React from 'react';\nimport { Spinner } from 'react-bootstrap';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { WhiteAvatar } from 'libs/shared/apps/share/components/white-avatar/WhiteAvatar';\nimport { DivButton } from 'libs/shared/components/div-button/DivButton';\nimport { SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\nimport { Tooltip } from 'libs/shared/components/tooltip/Tooltip';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { BaseObject, Classroom, ClassroomGroup, User } from 'libs/shared/interfaces';\nimport { mapColourToBsVariant } from 'libs/shared/utils/GroupHelper';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\nimport { UserHelper } from 'libs/shared/utils/UserHelper';\n\nimport styles from './input-selection.scss';\n\nconst getPhrase = LanguageService.encloseNamespace('shared.inputSelection');\n\nfunction mapEntityTypeToForegroundColor(entity: BaseObject): string {\n switch (entity.typeId) {\n case MasterType.Classroom: {\n return 'text-teal-hover';\n }\n\n case MasterType.ClassroomGroup: {\n return `text-${mapColourToBsVariant((entity as ClassroomGroup).metadata?.colour)}-hover`;\n }\n }\n}\n\nfunction getColouredIconClass(selection: Classroom | ClassroomGroup): string {\n let iconClass = `${styles.svgContainer} ${styles.icon}`;\n\n if (selection.typeId === MasterType.Classroom)\n iconClass += ' text-teal';\n else\n iconClass += ` text-${mapColourToBsVariant((selection as ClassroomGroup).metadata?.colour)}`;\n\n return iconClass;\n}\n\ninterface InputSelectionExpanderProps {\n canExpand: boolean;\n hasExpanded: boolean;\n selection: BaseObject;\n onClickExpand?: () => void;\n}\n\nexport function InputSelectionExpander(props: InputSelectionExpanderProps): JSX.Element {\n const colourClass = mapEntityTypeToForegroundColor(props.selection);\n\n const isClassroom = props.selection.typeId === MasterType.Classroom;\n\n if (!props.canExpand) {\n if (!props.selection.typeId || props.selection.typeId === MasterType.User) {\n const user = props.selection as User;\n\n return (\n <div className={styles.svgContainer}>\n <WhiteAvatar\n imageUrl={user.avatar?.url}\n initials={UserHelper.getInitials(props.selection.name, (props.selection as User).surname)}\n />\n </div>\n );\n }\n\n return (\n <Tooltip title={getPhrase(isClassroom ? 'emptyClassroom' : 'emptyGroup')}>\n <div className={`align-items-center border border-white bg-white ${styles.iconContainer}`}>\n <SvgContainer\n className={getColouredIconClass(props.selection)}\n svgName={isClassroom ? cvSvgLibrary.Classrooms : cvSvgLibrary.Group}\n />\n </div>\n </Tooltip>\n );\n }\n\n if (!props.hasExpanded) {\n return (\n <>\n {/* Visible on hover */}\n <DivButton\n className={`align-items-center cursor-pointer text-white border border-white rounded-circle ${styles.expander} ${colourClass}`}\n onClick={props.onClickExpand}\n >\n <SvgContainer svgName={cvSvgLibrary.Plus} className={`d-flex align-items-center ${styles.svgContainer}`} />\n </DivButton>\n\n {/* Visible when not hovering */}\n <div className={`align-items-center border border-white bg-white ${styles.iconContainer}`}>\n <SvgContainer\n className={getColouredIconClass(props.selection)}\n svgName={isClassroom ? cvSvgLibrary.Classrooms : cvSvgLibrary.Group}\n />\n </div>\n </>\n );\n }\n\n return (\n <div className={`d-flex align-items-center text-white ${styles.spinnerContainer} ${styles.svgContainer}`}>\n <Spinner as='div' size='sm' animation='border' role='status' />\n </div>\n );\n}","import React from 'react';\nimport { ButtonProps } from 'react-bootstrap';\n\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { DivButton } from 'libs/shared/components/div-button/DivButton';\nimport { SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { UserGroup } from 'libs/shared/enums/UserGroup';\nimport { Classroom, ClassroomGroup, User } from 'libs/shared/interfaces';\nimport { mapColourToBsVariant } from 'libs/shared/utils/GroupHelper';\nimport { MasterTypeHelper } from 'libs/shared/utils/MasterTypeHelper';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\nimport { UserHelper } from 'libs/shared/utils/UserHelper';\n\nimport { InputSelectionExpander } from './InputSelectionExpander';\n\nimport styles from './input-selection.scss';\n\n/**\n * TODO: This entire file needs to be refactored to work\n * better with non standard entities. ATM it's also being used\n * in the invite a colleague UI for trials. - Sha\n */\ninterface OtherEntity {\n id: never;\n typeId: never;\n name: string;\n}\n\ntype Entity = Classroom | ClassroomGroup | User | OtherEntity;\n\nfunction mapEntityTypeToBsVariant(entity: Entity): ButtonProps['variant'] {\n if (!entity.typeId)\n return 'dark-blue';\n\n switch (entity.typeId) {\n case MasterType.User: {\n // TODO: Delete this once https://clickview.atlassian.net/browse/INBOX-2151 is addressed\n if (typeof(entity as User).userType === 'number')\n return ((entity as User).userType as any) === 2 ? 'dark-blue' : 'indigo';\n\n if ((entity as User).userType === UserGroup.Learner)\n return 'dark-blue';\n\n return 'indigo';\n }\n\n case MasterType.Classroom: {\n return 'teal';\n }\n\n case MasterType.ClassroomGroup: {\n return mapColourToBsVariant((entity as ClassroomGroup).metadata?.colour);\n }\n }\n}\n\ninterface InputSelectionProps {\n selection: Entity;\n onClickRemove?: (selection: Entity) => void;\n onClickExpand?: (id: string) => void;\n hasStudentExperience?: boolean;\n}\n\nexport function InputSelection(props: InputSelectionProps): JSX.Element {\n const isClassroom = MasterTypeHelper.isType(props.selection, MasterType.Classroom);\n const isClassroomGroup = MasterTypeHelper.isType(props.selection, MasterType.ClassroomGroup);\n const isExpandable = props.onClickExpand && (isClassroom || isClassroomGroup);\n\n /**\n * We only know that there are no members if props.selections.users.count exists\n * and is 0 as it is set to 0 in <MainShare /> after fetching the users.\n */\n const hasMembers = !!(props.selection as Classroom | ClassroomGroup).users?.count;\n const hasFetchedMembers = !!(props.selection as Classroom | ClassroomGroup).users?.data?.length;\n\n const [ hasExpanded, setHasExpanded ] = React.useState(false);\n const [ canExpand, setCanExpand ] = React.useState(isExpandable && hasMembers);\n\n React.useEffect(() => {\n setCanExpand(isExpandable && hasMembers);\n }, [ isExpandable, hasMembers ]);\n\n function onClickExpand(): void {\n setHasExpanded(true);\n props.onClickExpand(props.selection.id);\n }\n\n if (hasFetchedMembers) {\n const selection: Classroom | ClassroomGroup = props.selection as Classroom | ClassroomGroup;\n\n const colourVariant = mapEntityTypeToBsVariant(props.selection);\n\n return (\n <div className={`d-flex align-items-center flex-wrap me-1 mt-1 pb-1 ps-1 pe-4 position-relative border-${colourVariant} text-${colourVariant} ${styles.bubble}`}>\n {selection.users.data.map(user => (\n <InputToken\n key={`${user.id}:${props.selection.id}`}\n selection={user}\n colourVariant={colourVariant}\n hasStudentExperience={props.hasStudentExperience}\n />\n ))}\n\n <DivButton\n className={`cursor-pointer position-absolute text-${colourVariant} ${styles.removeBubble}`}\n onClick={() => props.onClickRemove(props.selection)}\n >\n <SvgContainer svgName={cvSvgLibrary.Close} className={`d-flex align-items-center ${styles.svgContainer}`} />\n </DivButton>\n </div>\n );\n }\n\n return (\n <InputToken\n selection={props.selection}\n canExpand={canExpand}\n hasExpanded={hasExpanded}\n onClickExpand={onClickExpand}\n onClickRemove={props.onClickRemove}\n colourVariant={mapEntityTypeToBsVariant(props.selection)}\n hasStudentExperience={props.hasStudentExperience}\n />\n );\n}\n\ninterface InputTokenProps<T extends HashObject> {\n selection: T | Entity;\n colourVariant: string;\n canExpand?: boolean;\n hasExpanded?: boolean;\n onClickExpand?: () => void;\n onClickRemove?: (selection: Entity) => void;\n hasStudentExperience?: boolean;\n hideExpander?: boolean;\n}\n\nexport function InputToken<T extends HashObject = Entity>(props: InputTokenProps<T>): JSX.Element {\n const colourVariant = props.colourVariant || mapEntityTypeToBsVariant(props.selection);\n\n let selectionName = props.selection.name;\n\n if (props.selection.typeId === MasterType.User) {\n selectionName = props.hasStudentExperience\n ? UserHelper.getDisplayName(props.selection as User)\n : UserHelper.getFullName(props.selection as User);\n }\n\n return (\n <div className={`${styles.selection} bg-${colourVariant} rounded-pill text-${colourVariant} d-flex align-items-center me-1 mt-1 overflow-hidden`}>\n {!props.hideExpander && (\n <InputSelectionExpander\n canExpand={props.canExpand}\n hasExpanded={props.hasExpanded}\n onClickExpand={props.onClickExpand}\n selection={props.selection}\n />\n )}\n\n <span className='mx-1 text-white text-truncate'>{selectionName}</span>\n\n {FunctionHelper.isFunction(props.onClickRemove) && (\n <DivButton\n className={`d-flex align-items-center cursor-pointer align-self-stretch text-white ${styles.remove}`}\n onClick={() => props.onClickRemove(props.selection)}\n >\n <SvgContainer svgName={cvSvgLibrary.Close} className={`d-flex align-items-center ${styles.svgContainer}`} />\n </DivButton>\n )}\n </div>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"container\":\"Dc3kX\",\"suggestionsContainerOpen\":\"c5t3e\",\"selectionContainer\":\"kFjoN\",\"sectionContainer\":\"mLrE3\"};","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\n\nimport { RecipientItem } from 'libs/shared/apps/share/components/recipient-item/RecipientItem';\nimport { SearchBar, SearchBarProps } from 'libs/shared/components/search-bar/SearchBar';\nimport { SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\nimport { TypeaheadEmptyState } from 'libs/shared/components/typeahead-empty-state/TypeaheadEmptyState';\nimport { TypeaheadErrorState } from 'libs/shared/components/typeahead-error-state/TypeaheadErrorState';\nimport { BaseObject } from 'libs/shared/interfaces';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport { InputSelection } from './InputSelection';\n\nimport styles from './tokenized-typeahead.scss';\n\nconst namespace = 'shared.tokenizedTypeahead';\n\nexport const TOKENIZED_TYPEAHEAD_SUGGESTIONS_LIMIT = 10;\n\ninterface TokenizedTypeaheadProps<T extends BaseObject = BaseObject> extends SearchBarProps<T> {\n selections: T[];\n removeSelection: (selection: T) => void;\n emptyStateImageUrl: string;\n errorStateImageUrl: string;\n hasStudentExperience?: boolean;\n getInputTokenComponent?: (selection: T) => JSX.Element;\n imageCdnUrl?: string;\n className?: string;\n hideIcon?: boolean;\n\n /**\n * If this is passed in groups and classrooms will have the option to expand\n * otherwise they will appear as normal without the + icon\n */\n fetchSelectionMembers?: (id: string) => void;\n sharePermissionsDescription?: string;\n}\n\nTokenizedTypeahead.defaultProps = {\n renderSuggestionsOnInputFocus: true\n};\n\n/**\n * This component extends the functionality of the `SearchBar` component by\n * displaying a list of selections as tokens inside the search bar.\n * \n * Any component using this component is responsible for managing the state of\n * these tokens (selections). See `MainShare.tsx` for an example.\n */\nexport function TokenizedTypeahead<T extends BaseObject = BaseObject>(props: TokenizedTypeaheadProps<T>): JSX.Element {\n return (\n <div className={`form-control h-auto d-flex align-items-top position-relative ${props.hideIcon ? '' : 'py-1 px-0'} ${props.className}`}>\n {!props.hideIcon && <SvgContainer className='svg-container m-1' svgName={cvSvgLibrary.Search} />}\n\n <div className={`${styles.selectionContainer} d-flex flex-wrap align-items-center mt-n1`}>\n {props.selections.map(s => {\n if (props.getInputTokenComponent)\n return props.getInputTokenComponent(s);\n\n return (\n <InputSelection\n key={s.id}\n selection={s}\n onClickRemove={props.removeSelection}\n onClickExpand={props.fetchSelectionMembers}\n hasStudentExperience={props.hasStudentExperience}\n />\n );\n })}\n\n <SearchBar\n {...props}\n onBackspace={() => {\n if (!props.selections.length)\n return;\n\n props.removeSelection(ArrayHelper.last(props.selections));\n }}\n recentSearchHeading={props.recentSearchHeading || LanguageService.getPhrase(namespace, 'recentSearchHeading')}\n placeholder={!props.selections?.length ? props.placeholder : ' '}\n searchIconPlacement={false}\n clearQueryOnSelect\n getSuggestionComponent={suggestion => {\n if (props.getSuggestionComponent)\n return props.getSuggestionComponent(suggestion);\n\n return (\n <RecipientItem\n entity={suggestion}\n imageCdnUrl={props.imageCdnUrl}\n showDisplayName={props.hasStudentExperience}\n />\n );\n }}\n getEmptyStateComponent={query => <TypeaheadEmptyState query={query} imageUrl={props.emptyStateImageUrl} />}\n getErrorStateComponent={onClickTryAgain =>\n <TypeaheadErrorState imageUrl={props.errorStateImageUrl} onClickTryAgain={onClickTryAgain} />\n }\n theme={{\n container: styles.container,\n suggestionsContainerOpen: `bg-white py-1 rounded border mt-1 ${styles.suggestionsContainerOpen}`,\n sectionContainer: `border-bottom py-1 ${styles.sectionContainer}`\n }}\n sectionTitleClassName='ps-2'\n renderSuggestionsOnInputFocus={props.renderSuggestionsOnInputFocus}\n onSuggestionDependencies={[props.selections]}\n />\n </div>\n\n {!!props.sharePermissionsDescription &&\n <span className='px-2 text-secondary text-nowrap'>{props.sharePermissionsDescription}</span>\n }\n </div>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"emptyState\":\"bKTf0\"};","import React from 'react';\n\nimport { Text } from 'libs/shared/components/text/Text';\nimport { useDebounce } from 'libs/shared/hooks/UseDebounce';\n\nimport styles from './typeahead-empty-state.scss';\n\nconst namespace = 'shared.typeaheadEmptyState';\n\ninterface TypeaheadEmptyStateProps {\n query: string;\n imageUrl: string;\n}\n\nexport function TypeaheadEmptyState({ query = '', imageUrl }: TypeaheadEmptyStateProps): JSX.Element {\n function onClick(e: React.MouseEvent<HTMLDivElement>): void {\n e.stopPropagation();\n }\n\n const debouncedQuery = useDebounce(query, 300);\n\n return (\n <div className='d-flex flex-column align-items-center text-center' onClick={onClick}>\n <img\n alt=''\n role='presentation'\n src={imageUrl}\n className={`pb-2 ${styles.emptyState}`}\n />\n <h2 className='h6'>\n <Text\n namespace={namespace}\n phrase='noResults'\n options={{ query: debouncedQuery, smartCount: debouncedQuery.length }}\n />\n </h2>\n </div>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"emptyState\":\"k5mEG\"};","import React from 'react';\n\nimport { DivButton } from 'libs/shared/components/div-button/DivButton';\nimport { Text } from 'libs/shared/components/text/Text';\n\nimport styles from './typeahead-error-state.scss';\n\nconst namespace = 'shared.typeaheadErrorState';\n\ninterface TypeaheadErrorStateProps {\n imageUrl: string;\n onClickTryAgain: () => void;\n}\n\nexport function TypeaheadErrorState(props: TypeaheadErrorStateProps): JSX.Element {\n function onClickComponent(e: React.MouseEvent<HTMLDivElement>): void {\n e.stopPropagation();\n }\n\n function onClickTryAgain(e: React.MouseEvent<HTMLDivElement>): void {\n e.stopPropagation();\n \n props.onClickTryAgain();\n }\n\n return (\n <div className='d-flex flex-column align-items-center text-center' onClick={onClickComponent}>\n <img\n alt=''\n role='presentation'\n src={props.imageUrl}\n className={`pb-2 ${styles.emptyState}`}\n />\n <h2 className='h6'>\n <Text namespace={namespace} phrase='error' />\n </h2>\n <DivButton onClick={onClickTryAgain} className='btn btn-link info-link p-0'>\n <Text namespace={namespace} phrase='tryAgain' />\n </DivButton>\n </div>\n );\n}","import { ButtonProps } from 'react-bootstrap';\n\nimport { ClassroomGroupColour } from 'libs/shared/interfaces';\n\nexport function mapColourToBsVariant(groupColour: ClassroomGroupColour): ButtonProps['variant'] {\n switch (groupColour) {\n case ClassroomGroupColour.Pink:\n return 'pink';\n case ClassroomGroupColour.Orange:\n return 'orange';\n case ClassroomGroupColour.Green:\n return 'green';\n case ClassroomGroupColour.Blue:\n return 'blue';\n case ClassroomGroupColour.Purple:\n return 'purple';\n case ClassroomGroupColour.Indigo:\n return 'indigo';\n default:\n return 'pink';\n }\n}\n"],"names":["namespace","ClassroomGroupRecipientItemMetadata","props","className","IconCircle","svgName","variant","classroomGroup","metadata","colour","detailsClassName","name","userCount","users","count","classroomName","classroom","LanguageService","smartCount","getSubheading","ClassroomRecipientItemMetadata","Number","isInteger","getPhrase","UserRecipientItemMetadata","Avatar","imageUrl","user","avatar","url","imageCdnUrl","initials","UserHelper","surname","showDisplayName","getSubText","userType","role","UserGroup","UserRole","yearGroup","getRemovePhrase","type","MasterType","RecipientItem","showSpinner","setShowSpinner","removeRecipient","MasterTypeHelper","entity","FunctionHelper","Spinner","as","size","animation","Tooltip","title","typeId","spanHack","onClick","id","WhiteAvatar","style","backgroundImage","getColouredIconClass","selection","iconClass","InputSelectionExpander","colourClass","mapEntityTypeToForegroundColor","isClassroom","canExpand","SvgContainer","hasExpanded","DivButton","onClickExpand","mapEntityTypeToBsVariant","InputSelection","isClassroomGroup","isExpandable","hasMembers","hasFetchedMembers","data","length","setHasExpanded","setCanExpand","colourVariant","map","InputToken","key","hasStudentExperience","onClickRemove","selectionName","hideExpander","TOKENIZED_TYPEAHEAD_SUGGESTIONS_LIMIT","TokenizedTypeahead","hideIcon","selections","s","getInputTokenComponent","removeSelection","fetchSelectionMembers","SearchBar","onBackspace","ArrayHelper","recentSearchHeading","placeholder","searchIconPlacement","clearQueryOnSelect","getSuggestionComponent","suggestion","getEmptyStateComponent","query","TypeaheadEmptyState","emptyStateImageUrl","getErrorStateComponent","onClickTryAgain","TypeaheadErrorState","errorStateImageUrl","theme","container","suggestionsContainerOpen","sectionContainer","sectionTitleClassName","renderSuggestionsOnInputFocus","onSuggestionDependencies","sharePermissionsDescription","defaultProps","debouncedQuery","e","stopPropagation","alt","src","Text","phrase","options","mapColourToBsVariant","groupColour"],"sourceRoot":""}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
/*! For license information please see 8024-
|
|
1
|
+
/*! For license information please see 8024-765a4170c7-lite.chunk.js.LICENSE.txt */
|
|
2
2
|
"use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[8024],{69624:(e,t,n)=>{n.d(t,{F:()=>c});var r=n(97395),a=n(86664),o=n(93824),i={Marketing:{au:"https://www.clickview.com.au",uk:"https://www.clickview.co.uk",nz:"https://www.clickview.co.nz",us:"https://www.clickvieweducation.com"},Support:{au:"https://www.clickviewsupport.com/hc/en-au",uk:"https://www.clickviewsupport.com/hc/en-au#gb",nz:"https://www.clickviewsupport.com/hc/en-au#nz",us:"https://www.clickviewsupport.com/hc/en-au#us"}},c={getMarketingUrlForGeoLocation:function(e){var t=a.I.getCountryCode(null==e?void 0:e.countryCode);return i.Marketing[t]||i.Marketing.us},getMarketingSalesContactForGeoLocation:function(e){var t=a.I.getCountryCode(null==e?void 0:e.countryCode),n=this.getMarketingUrlForGeoLocation(e);return e&&t===o.C.NZ?n+"/contact-us/":n+"/contact-us/trial/"},getFreeResourcesForGeoLocation:function(e){var t=a.I.getCountryCode(null==e?void 0:e.countryCode);return t===o.C.NZ&&(t=o.C.AU),this.getMarketingUrlForGeoLocation({countryCode:t})+"/free-student-resources//"},getTermsAndConditionsLink:function(){return this.getMarketingUrlForGeoLocation(o.C.US)+"/terms-and-conditions/"},getPrivacyPolicyLink:function(){return this.getMarketingUrlForGeoLocation(o.C.US)+"/privacy-policy/"},getSupportUrlForGeoLocation:function(e){var t=a.I.getCountryCode(null==e?void 0:e.countryCode);return i.Support[t]||i.Support.us},getLoginLink:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.email,n=e.customerId,a={redirectUrl:window.location.pathname+window.location.search};return t&&(a.email=t),n&&(a.customerId=n),r._.urlBuilder("/login",a)}}},97481:(e,t,n)=>{n.d(t,{d:()=>l});var r=n(32735),a=n(11607),o=n(83345);const i={emptyState:"k5mEG"};var c="shared.typeaheadErrorState";function l(e){return r.createElement("div",{className:"d-flex flex-column align-items-center text-center",onClick:function(e){e.stopPropagation()}},r.createElement("img",{alt:"",role:"presentation",src:e.imageUrl,className:"pb-2 ".concat(i.emptyState)}),r.createElement("h2",{className:"h6"},r.createElement(o.x,{namespace:c,phrase:"error"})),r.createElement(a.L,{onClick:function(t){t.stopPropagation(),e.onClickTryAgain()},className:"btn btn-link info-link p-0"},r.createElement(o.x,{namespace:c,phrase:"tryAgain"})))}},99705:(e,t,n)=>{var r,a;n.d(t,{b:()=>a}),function(e){e.AddToPlaylist="115005679748",e.EditSsoAccounts="8202508040345",e.LibraryEditor="360001974533",e.VideoAccess="360000153947",e.AddFromOnline="360011718234",e.UploadToLibraryEditor="360012069334",e.PBTErrorCodes="360012421153",e.ManuelReview="360020004534",e.LibraryReview="360000163788"}(r||(r={})),function(e){e.Integrations="4407268725529",e.Classrooms="4405362551833",e.MakeInteractive="4405370510873",e.EditSsoAccounts="8202605666073",e.UploadToLibraryEditor="10672936659865",e.AddFromLite="10671345281561",e.ManageSsoYearGroups="14691130889241",e.ContentReview="18525199576601",e.ContentPermissions="14692125209497",e.AccessSettings="22110291468057",e.ContentGuidelines="24133696186009",e.FoxtelFaq="24133519542169",e.ViviIntegration="23826297956377",e.AppleTvIntegration="25832373739929"}(a||(a={}))},12617:(e,t,n)=>{n.d(t,{E:()=>s});var r=n(99940),a=n(97395),o=n(62803),i=n(5960),c=n(4594),l=n(78417),s={videos:function(e,t,n){var r=o.v.VIDEO_COLLECTION,s=o.v.CLIP_COLLECTION,u=o.v.INTERACTIVE,d="videos[".concat(r,"]{libraries.typeid:").concat(c.E.WorkspaceCollection,"}"),m="clips[".concat(s,"]{status:").concat(i.X.Published,"}"),p="interactives[".concat(u,"]{status:[").concat(i.X.Published,",").concat(i.X.Draft,"]}"),h=[];(null==n?void 0:n.length)?(n.includes("video")&&h.push(d),n.includes("clip")&&h.push(m),n.includes("interactive")&&h.push(p)):h.push(d,m,p);var v={query:"(".concat(h.join("|"),"){orderbydesc:timestamp}"),permissionFilterOption:l.r.StripMetadata};return t&&(v.cursor=t),{url:a._.urlBuilder("{gateway}/v1/objects/".concat(e,"/members"),v),key:"my:videos:".concat(e,":").concat(t).concat(n?":".concat(Array.isArray(n)?n.join(":"):n):"")}},workspaceWithCategories:function(){return{url:a._.urlBuilder("/api/domain/v2/me/libraries",{type:["workspace"],maxCategoryDepth:6}),key:"workspace:folders",normalize:!1}},exchangeWithCategories:function(){return{url:a._.urlBuilder("/api/domain/v2/me/libraries",{type:["exchange"],maxCategoryDepth:5}),key:"exchange:folders",normalize:!1}},addFolder:function(e){var t="/api/domain/v2/collections/".concat(e.collectionId,"/categories");return e.parentCategoryId&&(t=a._.urlBuilder(t,{parentCategoryId:e.parentCategoryId})),{url:t,key:"add:folder",type:r.k.POST,data:{name:e.name},invalidationKeys:["workspace","folder"]}},deleteFolder:function(e){return{url:"{gateway}/v1/objects/".concat(e),key:"delete:folder",type:r.k.DELETE,invalidationKeys:["workspace","folder"]}},moveFolder:function(e){return{url:"/api/domain/v2/objects/move",key:"move:folder",type:r.k.POST,data:{assocType:"has",newCollectionId:e.newFolderId,oldCollectionId:e.oldFolderId,objectIds:[e.moveFolderId]},invalidationKeys:["workspace","folder"]}},updateFolder:function(e,t){return{url:"{gateway}/v1/objects/".concat(e),key:"rename:folder",type:r.k.PUT,data:{name:t},invalidationKeys:["workspace","folder"]}},videoFolders:function(e,t){return{url:"/api/domain/v2/objects/".concat(e,"/categories?query=libraries{id:").concat(t,"}"),key:"video:folders:".concat(e)}},moveVideo:function(e){var t={newCollectionId:e.newFolderId,oldCollectionId:e.oldFolderId,objectIds:e.videoId};return{url:"/api/domain/v3/objects/move",key:"move:folder:".concat(t.objectIds.join(",")),type:r.k.POST,data:t,invalidationKeys:["video"]}},addToExchange:function(e){return{url:"{gateway}/v1/users/me/videos/exchange",key:"add:to:exchange",type:r.k.POST,data:e}}}},54485:(e,t,n)=>{n.d(t,{b:()=>c});var r=n(32735),a=n(23481),o=n(11462),i=a.T.encloseNamespace("myVideos.hooks");function c(e){var t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];return r.useMemo((function(){return(null==e?void 0:e.length)?{children:e.map((function(e){return Object.assign(Object.assign({},e),{data:Object.assign(Object.assign({},e.data),{name:t?i("myVideos"):e.data.name})})})).map(o.d.convertNestedObjectToTree)}:null}),[e])}},81720:(e,t,n)=>{n.r(t),n.d(t,{AddToExchangeView:()=>ie});var r=n(32735),a=n(81886),o=n(23481),i=n(20354),c=n(49985),l=n(65858),s=n(82644),u=n(9111),d=n(1575),m=n(69883),p=n(31908),h=n(14070),v=n(97291),f=n(24965),g=n(12617),y=n(54485),w=n(92802),E=n(5173),b=n(110),C=n(69624),k=n(38365),N=n(13876),x=n(83345),S=n(42648),L=n(55367);const T={selectButton:"HWv2E",suggestionsContainer:"m1Nm0"};var I="myVideos.addToExchange",F=o.T.encloseNamespace(I);function O(e){var t=(0,w.u6)();return r.createElement(k.W,{label:F("category"),name:"category",showRequiredStar:!0},(function(){var n,a,o;return r.createElement("div",{className:"dropdown mb-2"},r.createElement("button",{className:"dropdown-toggle form-control text-start position-relative ".concat(T.selectButton),type:"button",id:"select-folder","data-bs-toggle":"dropdown","aria-haspopup":"true","aria-expanded":"false"},r.createElement("div",{className:"text-truncate"},null!==(a=null===(n=t.values.category)||void 0===n?void 0:n.name)&&void 0!==a?a:r.createElement(x.x,{namespace:I,phrase:"categoryPlaceholder"}))),r.createElement("div",{className:"dropdown-menu w-100","aria-labelledby":"select-folder"},r.createElement(S.$B,{autoHeight:!0,autoHeightMax:300,hideTracksWhenNotNeeded:!0},r.createElement(L.m,{tree:e.categories,onSelect:function(e){return t.setFieldValue("category",e,!0)},selectedIds:(null===(o=t.values.category)||void 0===o?void 0:o.id)?[t.values.category.id]:void 0,selectedLinkClassName:"bg-light fw-semibold",isDropdown:!0}))))}))}var A=n(97395),P=n(2136),R=n(97481),_=n(99742),j=o.T.encloseNamespace("myVideos.addToExchange");function V(){var e=(0,w.u6)();return r.createElement(k.W,{label:j("channel"),name:"channel",id:"channel",showRequiredStar:!0},(function(){var t,n;return r.createElement(r.Fragment,null,r.createElement(P.E,{theme:function(){return{suggestionsContainer:T.suggestionsContainer,suggestionsContainerOpen:"pb-0 pt-1 overflow-hidden bg-white border rounded position-absolute w-100"}},activationLength:2,placeholder:j("channelPlaceholder"),clearQueryOnSelect:!1,searchIconPlacement:!1,debounceTime:300,allowableSuggestionFetchRequestedReasons:["input-changed","input-focused"],getRemoteUrl:function(e){return A._.urlBuilder("/api/domain/v1/search/channel/instant/raw",{q:e})},onSuggestionSelected:function(t){return e.setFieldValue("channel",t,!0)},showClearInputIcon:!0,renderAsForm:!1,onClickClearInput:function(){return e.setFieldValue("channel",null,!0)},initialQuery:null!==(n=null===(t=e.values.channel)||void 0===t?void 0:t.name)&&void 0!==n?n:"",getErrorStateComponent:function(e){return r.createElement(R.d,{imageUrl:_.W.TYPEAHEAD_ERROR,onClickTryAgain:e})},getEmptyStateComponent:function(e){return r.createElement("div",null,j("emptySearch",{query:e}))}}))}))}var B=n(36848),G=n(72355),M=n(54610),U=n(99705),q=n(68626),D=n(12778),Y="myVideos.addToExchange";function W(e){return r.createElement(r.Fragment,null,r.createElement("p",null,r.createElement(x.x,{namespace:Y,phrase:"message",options:{contentGuidelines:D.o.getLiteArticle(U.b.ContentGuidelines)}})),r.createElement("div",{className:"row form-group"},r.createElement("div",{className:"col-5"},r.createElement(G.u,{video:e.video,type:"cosmetic",imageOptions:{size:M.h2.Small},textPosition:q.z.Independent,preload:!0})),r.createElement("div",{className:"col-7"},r.createElement("h2",{className:"h6"},e.video.name),r.createElement(B.F,{appLink:{application:v.O.VIDEOS,action:h.e.Videos.EDIT_VIDEO,args:[e.video.id]},className:"info-link",onClick:e.onClickCancel},r.createElement(x.x,{namespace:Y,phrase:"edit"})))),r.createElement("p",null,r.createElement(x.x,{namespace:Y,phrase:"prompt"})))}var z=o.T.encloseNamespace("myVideos.addToExchange"),Z=128;function H(e){var t,n=(0,w.u6)();return r.createElement(k.W,{as:"select",label:z("rating"),name:"rating",showRequiredStar:!0,value:null===(t=n.values.rating)||void 0===t?void 0:t.id,onChange:function(t){var r=t.target.value;if(r){var a=e.ratings.find((function(e){return e.id.toString()===r.toString()}));n.setFieldValue("rating",a)}else n.setFieldValue("rating",null)}},r.createElement("option",{value:""},z("ratingPlaceholder")),e.ratings.map((function(e,t){return e.value>=Z?r.createElement(r.Fragment,{key:t}):r.createElement("option",{key:t,value:e.id},e.code||e.name)})))}var K=o.T.encloseNamespace("myVideos.addToExchange");function Q(){var e=(0,w.u6)();return r.createElement(k.W,{label:K("series"),name:"series",id:"series"},(function(){var t,n;return r.createElement(r.Fragment,null,r.createElement(P.E,{theme:function(){return{suggestionsContainer:T.suggestionsContainer,suggestionsContainerOpen:"pb-0 pt-1 overflow-hidden bg-white border rounded position-absolute w-100"}},activationLength:2,placeholder:K("seriesPlaceholder"),clearQueryOnSelect:!1,searchIconPlacement:!1,debounceTime:300,allowableSuggestionFetchRequestedReasons:["input-changed","input-focused"],getRemoteUrl:function(e){return A._.urlBuilder("/api/domain/v1/search/series/instant/raw",{q:e,filterEmptySeries:!1})},onSuggestionSelected:function(t){return e.setFieldValue("series",t,!0)},showClearInputIcon:!0,renderAsForm:!1,onClickClearInput:function(){return e.setFieldValue("series",null,!0)},initialQuery:null!==(n=null===(t=e.values.series)||void 0===t?void 0:t.name)&&void 0!==n?n:"",getErrorStateComponent:function(e){return r.createElement(R.d,{imageUrl:_.W.TYPEAHEAD_ERROR,onClickTryAgain:e})},getEmptyStateComponent:function(e){return r.createElement("div",null,K("emptySearch",{query:e}))}}))}))}var X="myVideos.addToExchange",$=o.T.encloseNamespace(X),J=E.Ry().shape({category:E.Ry().required($("categoryRequired")),rating:E.Ry().nullable().required($("ratingRequired")),channel:E.Ry().required($("channelRequired")),dateBroadcast:E.Z_().required($("dateBroadcastRequired")),series:E.Ry(),seasonNumber:E.Rx().integer().min(1,(function(){return $("seasonNumberRange")})).max(3e3,(function(){return $("seasonNumberRange")})),episodeNumber:E.Rx().integer().min(1,(function(){return $("episodeNumberRange")})).max(2147483647,(function(){return $("episodeNumberRange")}))});function ee(e){var t=(0,w.u6)();return r.createElement(w.l0,null,r.createElement(W,{video:e.video,onClickCancel:e.onClickCancel}),r.createElement("div",{className:"container"},r.createElement("div",{className:"row"},r.createElement("div",{className:"col-lg-6 col-12"},r.createElement(O,{categories:e.categories})),r.createElement("div",{className:"col-lg-6 col-12"},r.createElement(H,{ratings:e.ratings}))),r.createElement("div",{className:"row"},r.createElement("div",{className:"col-lg-6 col-12"},r.createElement(V,null)),r.createElement("div",{className:"col-lg-6 col-12"},r.createElement(k.W,{type:"date",name:"dateBroadcast",label:$("dateBroadcast"),value:t.values.dateBroadcast?b.O.format(t.values.dateBroadcast,"YYYY-MM-DD"):"",min:"1927-09-07",max:b.O.format(new Date,"YYYY-MM-DD"),showRequiredStar:!0}))),r.createElement("div",{className:"row"},r.createElement("div",{className:"col-lg-6 col-12"},r.createElement(Q,null)),r.createElement("div",{className:"col-lg-6 col-12"},r.createElement("div",{className:"row"},r.createElement("div",{className:"col-6"},r.createElement(k.W,{label:$("seasonNumber"),type:"number",name:"seasonNumber",id:"seasonNumber",placeholder:$("seasonNumber"),autoFocus:!0,value:t.values.seasonNumber,disabled:!t.values.series})),r.createElement("div",{className:"col-6"},r.createElement(k.W,{label:$("episodeNumber"),type:"number",name:"episodeNumber",id:"episodeNumber",placeholder:$("episodeNumber"),autoFocus:!0,value:t.values.episodeNumber,disabled:!t.values.series})))))),r.createElement("p",null,r.createElement(x.x,{namespace:X,phrase:"disclaimer",options:{termsAndCondiditons:C.F.getTermsAndConditionsLink()}})),r.createElement(N.u,null,r.createElement(N.u.Cancel,{onClick:e.onClickCancel}),r.createElement(N.u.Submit,{variant:"dark",showSpinner:e.showSpinner,text:$("contribute")})))}function te(e){return te="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},te(e)}function ne(){ne=function(){return t};var e,t={},n=Object.prototype,r=n.hasOwnProperty,a=Object.defineProperty||function(e,t,n){e[t]=n.value},o="function"==typeof Symbol?Symbol:{},i=o.iterator||"@@iterator",c=o.asyncIterator||"@@asyncIterator",l=o.toStringTag||"@@toStringTag";function s(e,t,n){return Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}),e[t]}try{s({},"")}catch(e){s=function(e,t,n){return e[t]=n}}function u(e,t,n,r){var o=t&&t.prototype instanceof g?t:g,i=Object.create(o.prototype),c=new F(r||[]);return a(i,"_invoke",{value:S(e,n,c)}),i}function d(e,t,n){try{return{type:"normal",arg:e.call(t,n)}}catch(e){return{type:"throw",arg:e}}}t.wrap=u;var m="suspendedStart",p="suspendedYield",h="executing",v="completed",f={};function g(){}function y(){}function w(){}var E={};s(E,i,(function(){return this}));var b=Object.getPrototypeOf,C=b&&b(b(O([])));C&&C!==n&&r.call(C,i)&&(E=C);var k=w.prototype=g.prototype=Object.create(E);function N(e){["next","throw","return"].forEach((function(t){s(e,t,(function(e){return this._invoke(t,e)}))}))}function x(e,t){function n(a,o,i,c){var l=d(e[a],e,o);if("throw"!==l.type){var s=l.arg,u=s.value;return u&&"object"==te(u)&&r.call(u,"__await")?t.resolve(u.__await).then((function(e){n("next",e,i,c)}),(function(e){n("throw",e,i,c)})):t.resolve(u).then((function(e){s.value=e,i(s)}),(function(e){return n("throw",e,i,c)}))}c(l.arg)}var o;a(this,"_invoke",{value:function(e,r){function a(){return new t((function(t,a){n(e,r,t,a)}))}return o=o?o.then(a,a):a()}})}function S(t,n,r){var a=m;return function(o,i){if(a===h)throw Error("Generator is already running");if(a===v){if("throw"===o)throw i;return{value:e,done:!0}}for(r.method=o,r.arg=i;;){var c=r.delegate;if(c){var l=L(c,r);if(l){if(l===f)continue;return l}}if("next"===r.method)r.sent=r._sent=r.arg;else if("throw"===r.method){if(a===m)throw a=v,r.arg;r.dispatchException(r.arg)}else"return"===r.method&&r.abrupt("return",r.arg);a=h;var s=d(t,n,r);if("normal"===s.type){if(a=r.done?v:p,s.arg===f)continue;return{value:s.arg,done:r.done}}"throw"===s.type&&(a=v,r.method="throw",r.arg=s.arg)}}}function L(t,n){var r=n.method,a=t.iterator[r];if(a===e)return n.delegate=null,"throw"===r&&t.iterator.return&&(n.method="return",n.arg=e,L(t,n),"throw"===n.method)||"return"!==r&&(n.method="throw",n.arg=new TypeError("The iterator does not provide a '"+r+"' method")),f;var o=d(a,t.iterator,n.arg);if("throw"===o.type)return n.method="throw",n.arg=o.arg,n.delegate=null,f;var i=o.arg;return i?i.done?(n[t.resultName]=i.value,n.next=t.nextLoc,"return"!==n.method&&(n.method="next",n.arg=e),n.delegate=null,f):i:(n.method="throw",n.arg=new TypeError("iterator result is not an object"),n.delegate=null,f)}function T(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function I(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function F(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(T,this),this.reset(!0)}function O(t){if(t||""===t){var n=t[i];if(n)return n.call(t);if("function"==typeof t.next)return t;if(!isNaN(t.length)){var a=-1,o=function n(){for(;++a<t.length;)if(r.call(t,a))return n.value=t[a],n.done=!1,n;return n.value=e,n.done=!0,n};return o.next=o}}throw new TypeError(te(t)+" is not iterable")}return y.prototype=w,a(k,"constructor",{value:w,configurable:!0}),a(w,"constructor",{value:y,configurable:!0}),y.displayName=s(w,l,"GeneratorFunction"),t.isGeneratorFunction=function(e){var t="function"==typeof e&&e.constructor;return!!t&&(t===y||"GeneratorFunction"===(t.displayName||t.name))},t.mark=function(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,w):(e.__proto__=w,s(e,l,"GeneratorFunction")),e.prototype=Object.create(k),e},t.awrap=function(e){return{__await:e}},N(x.prototype),s(x.prototype,c,(function(){return this})),t.AsyncIterator=x,t.async=function(e,n,r,a,o){void 0===o&&(o=Promise);var i=new x(u(e,n,r,a),o);return t.isGeneratorFunction(n)?i:i.next().then((function(e){return e.done?e.value:i.next()}))},N(k),s(k,l,"Generator"),s(k,i,(function(){return this})),s(k,"toString",(function(){return"[object Generator]"})),t.keys=function(e){var t=Object(e),n=[];for(var r in t)n.push(r);return n.reverse(),function e(){for(;n.length;){var r=n.pop();if(r in t)return e.value=r,e.done=!1,e}return e.done=!0,e}},t.values=O,F.prototype={constructor:F,reset:function(t){if(this.prev=0,this.next=0,this.sent=this._sent=e,this.done=!1,this.delegate=null,this.method="next",this.arg=e,this.tryEntries.forEach(I),!t)for(var n in this)"t"===n.charAt(0)&&r.call(this,n)&&!isNaN(+n.slice(1))&&(this[n]=e)},stop:function(){this.done=!0;var e=this.tryEntries[0].completion;if("throw"===e.type)throw e.arg;return this.rval},dispatchException:function(t){if(this.done)throw t;var n=this;function a(r,a){return c.type="throw",c.arg=t,n.next=r,a&&(n.method="next",n.arg=e),!!a}for(var o=this.tryEntries.length-1;o>=0;--o){var i=this.tryEntries[o],c=i.completion;if("root"===i.tryLoc)return a("end");if(i.tryLoc<=this.prev){var l=r.call(i,"catchLoc"),s=r.call(i,"finallyLoc");if(l&&s){if(this.prev<i.catchLoc)return a(i.catchLoc,!0);if(this.prev<i.finallyLoc)return a(i.finallyLoc)}else if(l){if(this.prev<i.catchLoc)return a(i.catchLoc,!0)}else{if(!s)throw Error("try statement without catch or finally");if(this.prev<i.finallyLoc)return a(i.finallyLoc)}}}},abrupt:function(e,t){for(var n=this.tryEntries.length-1;n>=0;--n){var a=this.tryEntries[n];if(a.tryLoc<=this.prev&&r.call(a,"finallyLoc")&&this.prev<a.finallyLoc){var o=a;break}}o&&("break"===e||"continue"===e)&&o.tryLoc<=t&&t<=o.finallyLoc&&(o=null);var i=o?o.completion:{};return i.type=e,i.arg=t,o?(this.method="next",this.next=o.finallyLoc,f):this.complete(i)},complete:function(e,t){if("throw"===e.type)throw e.arg;return"break"===e.type||"continue"===e.type?this.next=e.arg:"return"===e.type?(this.rval=this.arg=e.arg,this.method="return",this.next="end"):"normal"===e.type&&t&&(this.next=t),f},finish:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.finallyLoc===e)return this.complete(n.completion,n.afterLoc),I(n),f}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.tryLoc===e){var r=n.completion;if("throw"===r.type){var a=r.arg;I(n)}return a}}throw Error("illegal catch attempt")},delegateYield:function(t,n,r){return this.delegate={iterator:O(t),resultName:n,nextLoc:r},"next"===this.method&&(this.arg=e),f}},t}function re(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}var ae=function(e,t,n,r){return new(n||(n=Promise))((function(a,o){function i(e){try{l(r.next(e))}catch(e){o(e)}}function c(e){try{l(r.throw(e))}catch(e){o(e)}}function l(e){var t;e.done?a(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(i,c)}l((r=r.apply(e,t||[])).next())}))},oe=o.T.encloseNamespace("myVideos.addToExchange");function ie(e){var t,n,o,w,E,b=(w=r.useState(!1),E=2,function(e){if(Array.isArray(e))return e}(w)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,a,o,i,c=[],l=!0,s=!1;try{if(o=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;l=!1}else for(;!(l=(r=o.call(n)).done)&&(c.push(r.value),c.length!==t);l=!0);}catch(e){s=!0,a=e}finally{try{if(!l&&null!=n.return&&(i=n.return(),Object(i)!==i))return}finally{if(s)throw a}}return c}}(w,E)||function(e,t){if(e){if("string"==typeof e)return re(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?re(e,t):void 0}}(w,E)||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.")}()),C=b[0],k=b[1],N=i.a.useGetFetchAsync(),x=(0,m.Z)(),S=i.a.useBasicFetch(d.R.video(e.id)),L=i.a.useBasicFetch(g.E.exchangeWithCategories()),T=(0,y.b)(null===(n=null===(t=L.data)||void 0===t?void 0:t[0])||void 0===n?void 0:n.children,!1),I=i.a.useBasicFetch(f.Z.ratings()),F=S.hasCompleted&&L.hasCompleted&&I.hasCompleted;return r.createElement(u.G,{title:oe("title"),closePopup:e.closePopup,showLoadingSpinner:!F,size:"lg"},F&&r.createElement(s.n,{initialValues:{rating:S.data.rating,channel:S.data.channel,dateBroadcast:S.data.dateBroadcast,series:S.data.series,seasonNumber:null===(o=S.data.season)||void 0===o?void 0:o.number,episodeNumber:S.data.episodeNumber},validationSchema:J,onSubmit:function(t){var n;return ae(this,void 0,void 0,ne().mark((function r(){var o;return ne().wrap((function(r){for(;;)switch(r.prev=r.next){case 0:return k(!0),o={videoId:S.data.id,categoryId:t.category.id,videoAttribute:{name:S.data.name,description:S.data.description,rating:t.rating.id,dateBroadcast:t.dateBroadcast,productionYear:S.data.productionYear,channel:t.channel.id,series:null===(n=t.series)||void 0===n?void 0:n.id,seasonNumber:t.seasonNumber,episodeNumber:t.episodeNumber}},r.prev=2,r.next=5,N(g.E.addToExchange(o));case 5:c.k.logUserAction({id:S.data.id,name:S.data.name,isBroadcast:p.M.isBroadcast(S.data)},{actionType:l.Vw.Create,entity:l.py.Video,location:l.LZ.Popup,workflowPhase:l.eu.Complete,descriptor:l.ne.AddToExchange}),x.success(oe("success")),a.Q.C$.trigger({application:v.O.MY_VIDEOS,action:h.e.MyVideos.ADD_TO_EXCHANGE_SUCCESS}),r.next=14;break;case 10:r.prev=10,r.t0=r.catch(2),x.error(oe("error")),e.closePopup();case 14:case"end":return r.stop()}}),r,null,[[2,10]])})))},validateOnMount:!0},r.createElement(ee,{categories:T,ratings:I.data,onClickCancel:e.closePopup,showSpinner:C,video:S.data})))}},24965:(e,t,n)=>{n.d(t,{Z:()=>a});var r=n(97395),a={ratings:function(e){return{url:"/api/domain/v2/me/ratings",publicUrl:r._.urlBuilder("/api/domain/v2/me/ratings",{countryCode:e}),key:"ratings",formatData:function(e){return e.sort((function(e,t){return e.value-t.value}))}}}}}}]);
|
|
3
|
-
//# sourceMappingURL=8024-
|
|
3
|
+
//# sourceMappingURL=8024-765a4170c7-lite.chunk.js.map
|
package/dist/scripts/{8024-66413cc05b-lite.chunk.js.map → 8024-765a4170c7-lite.chunk.js.map}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scripts/8024-66413cc05b-lite.chunk.js","mappings":"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","sources":["file:///app/packages/libs/shared/src/apps/sign-up/helpers/ExternalLinkHelper.ts","file:///app/packages/libs/shared/src/components/typeahead-error-state/typeahead-error-state.scss","file:///app/packages/libs/shared/src/components/typeahead-error-state/TypeaheadErrorState.tsx","file:///app/packages/libs/shared/src/enums/SupportArticle.ts","file:///app/packages/projects/lite/src/apps/my-videos/flight-requests/MyVideosRequests.ts","file:///app/packages/projects/lite/src/apps/my-videos/hooks/useShapeTree.ts","file:///app/packages/projects/lite/src/apps/my-videos/views/add-to-exchange/add-to-exchange.scss","file:///app/packages/projects/lite/src/apps/my-videos/views/add-to-exchange/components/add-to-exchange-category/AddToExchangeCategory.tsx","file:///app/packages/projects/lite/src/apps/my-videos/views/add-to-exchange/components/add-to-exchange-channel/AddToExchangeChannel.tsx","file:///app/packages/projects/lite/src/apps/my-videos/views/add-to-exchange/components/add-to-exchange-details/AddToExchangeDetails.tsx","file:///app/packages/projects/lite/src/apps/my-videos/views/add-to-exchange/components/add-to-exchange-rating/AddtoExchangeRating.tsx","file:///app/packages/projects/lite/src/apps/my-videos/views/add-to-exchange/components/add-to-exchange-series/AddToExchangeSeries.tsx","file:///app/packages/projects/lite/src/apps/my-videos/views/add-to-exchange/AddToExchangeForm.tsx","file:///app/packages/projects/lite/src/apps/my-videos/views/add-to-exchange/AddToExchangeView.tsx","file:///app/packages/projects/lite/src/shared/flight-requests/RatingRequests.ts"],"sourcesContent":["import { UrlHelper } from 'libs/common/backbone/utils/UrlHelper';\nimport { HashObject } from 'libs/common/react/interfaces/HashObject';\n\nimport { LocalityHelper } from 'libs/shared/apps/sign-up/helpers/LocalityHelper';\nimport { CountryCode } from 'libs/shared/enums/CountryCode';\nimport { GeoLocation } from 'libs/shared/interfaces/responses/GeoLocation';\n\ntype ExternalLinkType = {\n [key: string]: {\n [key in CountryCode]: string\n }\n}\n\ninterface LoginLinkOptions {\n email?: string;\n customerId?: string;\n}\n\nexport const ExternalLink: ExternalLinkType = {\n Marketing: {\n au: 'https://www.clickview.com.au',\n uk: 'https://www.clickview.co.uk',\n nz: 'https://www.clickview.co.nz',\n us: 'https://www.clickvieweducation.com'\n },\n Support: {\n au: 'https://www.clickviewsupport.com/hc/en-au',\n uk: 'https://www.clickviewsupport.com/hc/en-au#gb',\n nz: 'https://www.clickviewsupport.com/hc/en-au#nz',\n us: 'https://www.clickviewsupport.com/hc/en-au#us'\n }\n};\n\nexport const ExternalLinkHelper = {\n \n getMarketingUrlForGeoLocation(geoLocation: GeoLocation): string {\n const countryCode = LocalityHelper.getCountryCode(geoLocation?.countryCode);\n const url = ExternalLink.Marketing[countryCode];\n\n if (!url)\n return ExternalLink.Marketing.us;\n\n return url;\n },\n\n getMarketingSalesContactForGeoLocation(geoLocation: GeoLocation): string {\n const countryCode = LocalityHelper.getCountryCode(geoLocation?.countryCode);\n const baseUrl = this.getMarketingUrlForGeoLocation(geoLocation);\n if (geoLocation && countryCode === CountryCode.NZ) {\n return baseUrl + '/contact-us/';\n }\n return baseUrl + '/contact-us/trial/';\n },\n\n getFreeResourcesForGeoLocation(geoLocation: GeoLocation): string {\n let countryCode = LocalityHelper.getCountryCode(geoLocation?.countryCode);\n\n if (countryCode === CountryCode.NZ)\n countryCode = CountryCode.AU;\n\n const baseUrl = this.getMarketingUrlForGeoLocation({ countryCode });\n return baseUrl + '/free-student-resources//';\n },\n\n getTermsAndConditionsLink(): string {\n const baseUrl = this.getMarketingUrlForGeoLocation(CountryCode.US);\n return baseUrl + '/terms-and-conditions/';\n },\n\n getPrivacyPolicyLink(): string {\n const baseUrl = this.getMarketingUrlForGeoLocation(CountryCode.US);\n return baseUrl + '/privacy-policy/';\n },\n\n getSupportUrlForGeoLocation(geoLocation: GeoLocation): string {\n const countryCode = LocalityHelper.getCountryCode(geoLocation?.countryCode);\n const url = ExternalLink.Support[countryCode];\n\n if (!url)\n return ExternalLink.Support.us;\n\n return url;\n },\n\n getLoginLink(options: LoginLinkOptions = {}): string {\n const { email, customerId } = options;\n\n const params: HashObject = {\n redirectUrl: window.location.pathname + window.location.search\n };\n\n if (email)\n params.email = email;\n\n if (customerId)\n params.customerId = customerId;\n\n return UrlHelper.urlBuilder('/login', params);\n }\n};","// extracted by mini-css-extract-plugin\nexport default {\"emptyState\":\"k5mEG\"};","import React from 'react';\n\nimport { DivButton } from 'libs/shared/components/div-button/DivButton';\nimport { Text } from 'libs/shared/components/text/Text';\n\nimport styles from './typeahead-error-state.scss';\n\nconst namespace = 'shared.typeaheadErrorState';\n\ninterface TypeaheadErrorStateProps {\n imageUrl: string;\n onClickTryAgain: () => void;\n}\n\nexport function TypeaheadErrorState(props: TypeaheadErrorStateProps): JSX.Element {\n function onClickComponent(e: React.MouseEvent<HTMLDivElement>): void {\n e.stopPropagation();\n }\n\n function onClickTryAgain(e: React.MouseEvent<HTMLDivElement>): void {\n e.stopPropagation();\n \n props.onClickTryAgain();\n }\n\n return (\n <div className='d-flex flex-column align-items-center text-center' onClick={onClickComponent}>\n <img\n alt=''\n role='presentation'\n src={props.imageUrl}\n className={`pb-2 ${styles.emptyState}`}\n />\n <h2 className='h6'>\n <Text namespace={namespace} phrase='error' />\n </h2>\n <DivButton onClick={onClickTryAgain} className='btn btn-link info-link p-0'>\n <Text namespace={namespace} phrase='tryAgain' />\n </DivButton>\n </div>\n );\n}","// Article name mapped to article ID on support site. Used by `ArticleHelper`\n\nexport enum OnlineSupportArticle {\n AddToPlaylist = '115005679748',\n EditSsoAccounts = '8202508040345',\n\n // LE\n LibraryEditor = '360001974533',\n VideoAccess = '360000153947',\n AddFromOnline = '360011718234',\n UploadToLibraryEditor = '360012069334',\n PBTErrorCodes = '360012421153',\n ManuelReview = '360020004534',\n LibraryReview = '360000163788',\n}\n\nexport enum LiteSupportArticle {\n Integrations = '4407268725529',\n Classrooms = '4405362551833',\n MakeInteractive = '4405370510873',\n EditSsoAccounts = '8202605666073',\n UploadToLibraryEditor = '10672936659865',\n AddFromLite = '10671345281561',\n ManageSsoYearGroups = '14691130889241',\n ContentReview = '18525199576601',\n ContentPermissions = '14692125209497',\n AccessSettings = '22110291468057',\n ContentGuidelines = '24133696186009',\n FoxtelFaq = '24133519542169',\n ViviIntegration = '23826297956377',\n AppleTvIntegration = '25832373739929',\n}\n","import { HttpVerbs } from 'libs/common/backbone/enums/HttpVerbs';\nimport { UrlHelper } from 'libs/common/backbone/utils/UrlHelper';\nimport { Flight } from 'libs/common/flight';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { SearchIndices } from 'libs/shared/apps/search/interfaces';\nimport { SharedWithStatements } from 'libs/shared/constants/WithStatements';\nimport { CurationStatus } from 'libs/shared/enums/CurationStatus';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { PermissionFilterOption } from 'libs/shared/enums/PermissionFilterOption';\n\nimport { AddFolderRequest } from 'apps/my-videos/interfaces/requests/AddFolderRequest';\nimport { AddToExchangeRequest } from 'apps/my-videos/interfaces/requests/AddToExchangeRequest';\nimport { MoveFolderRequest } from 'apps/my-videos/interfaces/requests/MoveFolderRequest';\nimport { MoveVideoRequest } from 'apps/my-videos/interfaces/requests/MoveVideoRequest';\n\nexport const MyVideosRequests = {\n videos(id: string, cursor?: string, typeFilter?: SearchIndices | SearchIndices[]): Flight.Request {\n const { VIDEO_COLLECTION, CLIP_COLLECTION, INTERACTIVE } = SharedWithStatements;\n\n const videoQuery = `videos[${VIDEO_COLLECTION}]{libraries.typeid:${MasterType.WorkspaceCollection}}`;\n const clipQuery = `clips[${CLIP_COLLECTION}]{status:${CurationStatus.Published}}`;\n const interactiveQuery = `interactives[${INTERACTIVE}]{status:[${CurationStatus.Published},${CurationStatus.Draft}]}`;\n\n const query = [];\n if (typeFilter?.length) {\n if (typeFilter.includes('video'))\n query.push(videoQuery);\n if (typeFilter.includes('clip'))\n query.push(clipQuery);\n if (typeFilter.includes('interactive'))\n query.push(interactiveQuery);\n } else {\n query.push(videoQuery, clipQuery, interactiveQuery);\n }\n\n const params: HashObject = {\n query: `(${query.join('|')}){orderbydesc:timestamp}`,\n permissionFilterOption: PermissionFilterOption.StripMetadata\n };\n\n if (cursor)\n params.cursor = cursor;\n\n return {\n url: UrlHelper.urlBuilder(`{gateway}/v1/objects/${id}/members`, params),\n key: `my:videos:${id}:${cursor}${typeFilter ? `:${Array.isArray(typeFilter) ? typeFilter.join(':') : typeFilter}` : ''}`\n };\n },\n\n workspaceWithCategories(): Flight.Request {\n return {\n // TODO: Need to stop using domain\n url: UrlHelper.urlBuilder('/api/domain/v2/me/libraries', {\n type: ['workspace'],\n maxCategoryDepth: 6\n }),\n key: 'workspace:folders',\n normalize: false\n };\n },\n\n exchangeWithCategories(): Flight.Request {\n return {\n // TODO: Need to stop using domain\n url: UrlHelper.urlBuilder('/api/domain/v2/me/libraries', {\n type: ['exchange'],\n maxCategoryDepth: 5\n }),\n key: 'exchange:folders',\n normalize: false\n };\n },\n\n addFolder(data: AddFolderRequest): Flight.Request {\n // TODO: Need to stop using domain\n let url = `/api/domain/v2/collections/${data.collectionId}/categories`;\n\n if (data.parentCategoryId)\n url = UrlHelper.urlBuilder(url, { parentCategoryId: data.parentCategoryId });\n\n return {\n url,\n key: 'add:folder',\n type: HttpVerbs.POST,\n data: { name: data.name },\n invalidationKeys: [ 'workspace', 'folder' ]\n };\n },\n\n deleteFolder(id: string): Flight.Request {\n return {\n url: `{gateway}/v1/objects/${id}`,\n key: 'delete:folder',\n type: HttpVerbs.DELETE,\n invalidationKeys: [ 'workspace', 'folder' ]\n };\n },\n\n moveFolder(data: MoveFolderRequest): Flight.Request {\n return {\n // TODO: Need to stop using domain\n url: '/api/domain/v2/objects/move',\n key: 'move:folder',\n type: HttpVerbs.POST,\n data: {\n assocType: 'has',\n newCollectionId: data.newFolderId,\n oldCollectionId: data.oldFolderId,\n objectIds: [data.moveFolderId]\n },\n invalidationKeys: [ 'workspace', 'folder' ]\n };\n },\n\n updateFolder(id: string, name: string): Flight.Request {\n return {\n url: `{gateway}/v1/objects/${id}`,\n key: 'rename:folder',\n type: HttpVerbs.PUT,\n data: { name },\n invalidationKeys: [ 'workspace', 'folder' ]\n };\n },\n\n videoFolders(videoId: string, libraryId: string): Flight.Request {\n return {\n // TODO: Need to stop using domain\n url: `/api/domain/v2/objects/${videoId}/categories?query=libraries{id:${libraryId}}`,\n key: `video:folders:${videoId}`\n };\n },\n\n moveVideo(request: MoveVideoRequest): Flight.Request {\n const data: HashObject = {\n newCollectionId: request.newFolderId,\n oldCollectionId: request.oldFolderId,\n objectIds: request.videoId\n };\n\n return {\n url: '/api/domain/v3/objects/move',\n key: `move:folder:${data.objectIds.join(',')}`,\n type: HttpVerbs.POST,\n data,\n invalidationKeys: ['video']\n };\n },\n\n addToExchange(data: AddToExchangeRequest): Flight.Request {\n return {\n url: '{gateway}/v1/users/me/videos/exchange',\n key: 'add:to:exchange',\n type: HttpVerbs.POST,\n data\n };\n }\n};","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { BaseObject, BaseTree, MasterNestedObject } from 'libs/shared/interfaces';\nimport { TreeHelper } from 'libs/shared/utils/TreeHelper';\n\nconst namespace = 'myVideos.hooks';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nexport function useShapeTree<T extends BaseObject>(\n trees: MasterNestedObject<T>[],\n rename: boolean = true\n): BaseTree<T> {\n return React.useMemo(() => {\n if (!trees?.length)\n return null;\n\n /**\n * Renaming \"<fullName>'s Workspace\"\n * to \"My Videos\"\n */\n const renamed = trees.map(t => ({\n ...t,\n data: {\n ...t.data,\n name: rename ? getPhrase('myVideos') : t.data.name\n }\n }));\n\n const rootBranches = renamed.map(TreeHelper.convertNestedObjectToTree);\n\n return {\n children: rootBranches\n } as BaseTree<T>;\n }, [trees]);\n}","// extracted by mini-css-extract-plugin\nexport default {\"selectButton\":\"HWv2E\",\"suggestionsContainer\":\"m1Nm0\"};","import React from 'react';\nimport { Scrollbars } from 'react-custom-scrollbars-2';\nimport { useFormikContext } from 'formik';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { FormField } from 'libs/shared/components/forms/form-field/FormField';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { Tree } from 'libs/shared/components/tree/Tree';\nimport { BaseTree, Folder } from 'libs/shared/interfaces';\n\nimport { AddToExchangeFormData } from 'apps/my-videos/views/add-to-exchange/AddToExchangeForm';\n\nimport styles from '../../add-to-exchange.scss';\n\nconst namespace = 'myVideos.addToExchange';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface AddToExchangeCategoryProps {\n categories: BaseTree<Folder>;\n}\n\nexport function AddToExchangeCategory(props: AddToExchangeCategoryProps): JSX.Element {\n const formikProps = useFormikContext<AddToExchangeFormData>();\n\n return (\n <FormField\n label={getPhrase('category')}\n name='category'\n showRequiredStar\n >\n {() => (\n <div className='dropdown mb-2'>\n <button\n className={`dropdown-toggle form-control text-start position-relative ${styles.selectButton}`}\n type='button'\n id='select-folder'\n data-bs-toggle='dropdown'\n aria-haspopup='true'\n aria-expanded='false'\n >\n <div className='text-truncate'>\n {formikProps.values.category?.name ?? <Text namespace={namespace} phrase='categoryPlaceholder' />}\n </div>\n </button>\n <div className='dropdown-menu w-100' aria-labelledby='select-folder'>\n <Scrollbars autoHeight autoHeightMax={300} hideTracksWhenNotNeeded>\n <Tree\n tree={props.categories}\n onSelect={(folder: BaseTree<Folder>) => formikProps.setFieldValue('category', folder, true)}\n selectedIds={formikProps.values.category?.id ? [formikProps.values.category.id] : undefined}\n selectedLinkClassName='bg-light fw-semibold'\n isDropdown\n />\n </Scrollbars>\n </div>\n </div>\n )}\n </FormField>\n );\n}","import React from 'react';\nimport { useFormikContext } from 'formik';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { UrlHelper } from 'libs/common/backbone/utils/UrlHelper';\n\nimport { FormField } from 'libs/shared/components/forms/form-field/FormField';\nimport { SearchBar } from 'libs/shared/components/search-bar/SearchBar';\nimport { TypeaheadErrorState } from 'libs/shared/components/typeahead-error-state/TypeaheadErrorState';\nimport { Channel } from 'libs/shared/interfaces';\n\nimport { ImageUrls } from 'shared/constants/ImageUrls';\n\nimport { AddToExchangeFormData } from 'apps/my-videos/views/add-to-exchange/AddToExchangeForm';\n\nimport styles from '../../add-to-exchange.scss';\n\nconst namespace = 'myVideos.addToExchange';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nexport function AddToExchangeChannel(): JSX.Element {\n const formikProps = useFormikContext<AddToExchangeFormData>();\n\n return (\n <FormField\n label={getPhrase('channel')}\n name='channel'\n id='channel'\n showRequiredStar\n >\n {() => (\n <>\n <SearchBar<Channel>\n theme={() => ({\n suggestionsContainer: styles.suggestionsContainer,\n suggestionsContainerOpen: 'pb-0 pt-1 overflow-hidden bg-white border rounded position-absolute w-100'\n })}\n activationLength={2}\n placeholder={getPhrase('channelPlaceholder')}\n clearQueryOnSelect={false}\n searchIconPlacement={false}\n debounceTime={300}\n allowableSuggestionFetchRequestedReasons={[ 'input-changed', 'input-focused' ]}\n getRemoteUrl={query => UrlHelper.urlBuilder('/api/domain/v1/search/channel/instant/raw', {\n q: query\n })}\n onSuggestionSelected={channel => formikProps.setFieldValue('channel', channel, true)}\n showClearInputIcon\n renderAsForm={false}\n onClickClearInput={() => formikProps.setFieldValue('channel', null, true)}\n initialQuery={formikProps.values.channel?.name ?? ''}\n getErrorStateComponent={onClickTryAgain =>\n <TypeaheadErrorState imageUrl={ImageUrls.TYPEAHEAD_ERROR} onClickTryAgain={onClickTryAgain} />\n }\n getEmptyStateComponent={query => (<div>{getPhrase('emptySearch', { query })}</div>)}\n />\n </>\n )}\n </FormField>\n );\n}","import React from 'react';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { VideoThumbnail } from 'libs/shared/components/thumbnails/video/VideoThumbnail';\nimport { ImageSize } from 'libs/shared/enums/Images';\nimport { LiteSupportArticle } from 'libs/shared/enums/SupportArticle';\nimport { ThumbnailTextPosition } from 'libs/shared/enums/ThumbnailTextPosition';\nimport { Video } from 'libs/shared/interfaces';\nimport { ArticleHelper } from 'libs/shared/utils/ArticleHelper';\n\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\n\nconst namespace = 'myVideos.addToExchange';\n\ninterface AddToExchangeDetailsProps {\n video: Video;\n onClickCancel: () => void;\n}\n\nexport function AddToExchangeDetails(props: AddToExchangeDetailsProps): JSX.Element {\n return (\n <>\n <p>\n <Text\n namespace={namespace}\n phrase='message'\n options={{ contentGuidelines: ArticleHelper.getLiteArticle(LiteSupportArticle.ContentGuidelines) }}\n />\n </p>\n <div className='row form-group'>\n <div className='col-5'>\n <VideoThumbnail\n video={props.video}\n type='cosmetic'\n imageOptions={{ size: ImageSize.Small }}\n textPosition={ThumbnailTextPosition.Independent}\n preload\n />\n </div>\n <div className='col-7'>\n <h2 className='h6'>{props.video.name}</h2>\n <AppLink\n appLink={{\n application: AppChannels.VIDEOS,\n action: Actions.Videos.EDIT_VIDEO,\n args: [props.video.id]\n }}\n className='info-link'\n onClick={props.onClickCancel}\n >\n <Text namespace={namespace} phrase='edit' />\n </AppLink>\n </div>\n </div>\n <p><Text namespace={namespace} phrase='prompt' /></p>\n </>\n );\n}","import React from 'react';\nimport { useFormikContext } from 'formik';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { FormField } from 'libs/shared/components/forms/form-field/FormField';\nimport { Rating } from 'libs/shared/interfaces';\n\nimport { AddToExchangeFormData } from 'apps/my-videos/views/add-to-exchange/AddToExchangeForm';\n\nconst namespace = 'myVideos.addToExchange';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\n/**\n * We want to hide inappropriate rating values that won't be used.\n */\nconst MAX_DISPLAYED_RATING_VALUE = 128;\n\ninterface AddToExchangeRatingProps {\n ratings: Rating[];\n}\n\nexport function AddToExchangeRating(props: AddToExchangeRatingProps): JSX.Element {\n const formikProps = useFormikContext<AddToExchangeFormData>();\n\n return (\n <FormField\n as='select'\n label={getPhrase('rating')}\n name='rating'\n showRequiredStar\n value={formikProps.values.rating?.id}\n onChange={(e: React.ChangeEvent<HTMLSelectElement>) => {\n const ratingId = e.target.value;\n\n if (!ratingId) {\n formikProps.setFieldValue('rating', null);\n return;\n }\n\n const rating = props.ratings.find(r => r.id.toString() === ratingId.toString());\n formikProps.setFieldValue('rating', rating);\n }}\n >\n <option value=''>{getPhrase('ratingPlaceholder')}</option>\n {props.ratings.map((rating, key) => {\n if (rating.value >= MAX_DISPLAYED_RATING_VALUE)\n return <React.Fragment key={key} />;\n \n return (\n <option key={key} value={rating.id}>\n {rating.code || rating.name}\n </option>\n );\n })}\n </FormField>\n );\n}","import React from 'react';\nimport { useFormikContext } from 'formik';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { UrlHelper } from 'libs/common/backbone/utils/UrlHelper';\n\nimport { FormField } from 'libs/shared/components/forms/form-field/FormField';\nimport { SearchBar } from 'libs/shared/components/search-bar/SearchBar';\nimport { TypeaheadErrorState } from 'libs/shared/components/typeahead-error-state/TypeaheadErrorState';\nimport { Series } from 'libs/shared/interfaces';\n\nimport { ImageUrls } from 'shared/constants/ImageUrls';\n\nimport { AddToExchangeFormData } from 'apps/my-videos/views/add-to-exchange/AddToExchangeForm';\n\nimport styles from '../../add-to-exchange.scss';\n\nconst namespace = 'myVideos.addToExchange';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nexport function AddToExchangeSeries(): JSX.Element {\n const formikProps = useFormikContext<AddToExchangeFormData>();\n\n return (\n <FormField\n label={getPhrase('series')}\n name='series'\n id='series'\n >\n {() => (\n <>\n <SearchBar<Series>\n theme={() => ({\n suggestionsContainer: styles.suggestionsContainer,\n suggestionsContainerOpen: 'pb-0 pt-1 overflow-hidden bg-white border rounded position-absolute w-100'\n })}\n activationLength={2}\n placeholder={getPhrase('seriesPlaceholder')}\n clearQueryOnSelect={false}\n searchIconPlacement={false}\n debounceTime={300}\n allowableSuggestionFetchRequestedReasons={[ 'input-changed', 'input-focused' ]}\n getRemoteUrl={query => UrlHelper.urlBuilder('/api/domain/v1/search/series/instant/raw', {\n q: query,\n filterEmptySeries: false\n })}\n onSuggestionSelected={series => formikProps.setFieldValue('series', series, true)}\n showClearInputIcon\n renderAsForm={false}\n onClickClearInput={() => formikProps.setFieldValue('series', null, true)}\n initialQuery={formikProps.values.series?.name ?? ''}\n getErrorStateComponent={onClickTryAgain =>\n <TypeaheadErrorState imageUrl={ImageUrls.TYPEAHEAD_ERROR} onClickTryAgain={onClickTryAgain} />\n }\n getEmptyStateComponent={query => (<div>{getPhrase('emptySearch', { query })}</div>)}\n />\n </>\n )}\n </FormField>\n );\n}","import React from 'react';\nimport { Form, useFormikContext } from 'formik';\nimport * as Yup from 'yup';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { DateHelper } from 'libs/common/react/utils/DateHelper';\n\nimport { ExternalLinkHelper } from 'libs/shared/apps/sign-up/helpers/ExternalLinkHelper';\nimport { FormField } from 'libs/shared/components/forms/form-field/FormField';\nimport { PopupButtons } from 'libs/shared/components/popup/PopupButtons';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { BaseTree, Channel, Folder, Rating, Series, Video } from 'libs/shared/interfaces';\n\nimport { AddToExchangeCategory } from 'apps/my-videos/views/add-to-exchange/components/add-to-exchange-category/AddToExchangeCategory';\nimport { AddToExchangeChannel } from 'apps/my-videos/views/add-to-exchange/components/add-to-exchange-channel/AddToExchangeChannel';\nimport { AddToExchangeDetails } from 'apps/my-videos/views/add-to-exchange/components/add-to-exchange-details/AddToExchangeDetails';\nimport { AddToExchangeRating } from 'apps/my-videos/views/add-to-exchange/components/add-to-exchange-rating/AddtoExchangeRating';\nimport { AddToExchangeSeries } from 'apps/my-videos/views/add-to-exchange/components/add-to-exchange-series/AddToExchangeSeries';\n\nconst namespace = 'myVideos.addToExchange';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nexport const AddToExchangeValidationSchema = Yup.object().shape({\n category: Yup.object().required(getPhrase('categoryRequired')),\n rating: Yup.object().nullable().required(getPhrase('ratingRequired')),\n channel: Yup.object().required(getPhrase('channelRequired')),\n dateBroadcast: Yup.string().required(getPhrase('dateBroadcastRequired')),\n series: Yup.object(),\n seasonNumber: Yup\n .number()\n .integer()\n .min(1, () => getPhrase('seasonNumberRange'))\n .max(3000, () => getPhrase('seasonNumberRange')),\n episodeNumber: Yup\n .number()\n .integer()\n .min(1, () => getPhrase('episodeNumberRange'))\n .max(2147483647, () => getPhrase('episodeNumberRange'))\n});\n\nexport interface AddToExchangeFormData {\n category: Folder;\n rating: Rating;\n channel: Channel;\n dateBroadcast: string;\n series: Series;\n seasonNumber: number;\n episodeNumber: number;\n}\n\ninterface AddToExchangeFormProps {\n onClickCancel: () => void;\n showSpinner: boolean;\n categories: BaseTree<Folder>;\n ratings: Rating[];\n video: Video;\n}\n\nexport function AddToExchangeForm(props: AddToExchangeFormProps): JSX.Element {\n const formikProps = useFormikContext<AddToExchangeFormData>();\n\n return (\n <Form>\n <AddToExchangeDetails video={props.video} onClickCancel={props.onClickCancel} />\n <div className='container'>\n <div className='row'>\n <div className='col-lg-6 col-12'>\n <AddToExchangeCategory categories={props.categories} />\n </div>\n <div className='col-lg-6 col-12'>\n <AddToExchangeRating ratings={props.ratings} />\n </div>\n </div>\n <div className='row'>\n <div className='col-lg-6 col-12'>\n <AddToExchangeChannel />\n </div>\n <div className='col-lg-6 col-12'>\n <FormField\n type='date'\n name='dateBroadcast'\n label={getPhrase('dateBroadcast')}\n value={formikProps.values.dateBroadcast ?\n DateHelper.format(formikProps.values.dateBroadcast, 'YYYY-MM-DD') :\n ''}\n min='1927-09-07' // First ever TV broadcast\n max={DateHelper.format(new Date(), 'YYYY-MM-DD')}\n showRequiredStar\n />\n </div>\n </div>\n <div className='row'>\n <div className='col-lg-6 col-12'>\n <AddToExchangeSeries />\n </div>\n <div className='col-lg-6 col-12'>\n <div className='row'>\n <div className='col-6'>\n <FormField\n label={getPhrase('seasonNumber')}\n type='number'\n name='seasonNumber'\n id='seasonNumber'\n placeholder={getPhrase('seasonNumber')}\n autoFocus\n value={formikProps.values.seasonNumber}\n disabled={!formikProps.values.series}\n />\n </div>\n <div className='col-6'>\n <FormField\n label={getPhrase('episodeNumber')}\n type='number'\n name='episodeNumber'\n id='episodeNumber'\n placeholder={getPhrase('episodeNumber')}\n autoFocus\n value={formikProps.values.episodeNumber}\n disabled={!formikProps.values.series}\n />\n </div>\n </div>\n </div>\n </div>\n </div>\n <p><Text namespace={namespace} phrase='disclaimer' options={{ termsAndCondiditons: ExternalLinkHelper.getTermsAndConditionsLink() }} /></p>\n <PopupButtons>\n <PopupButtons.Cancel onClick={props.onClickCancel} />\n <PopupButtons.Submit variant='dark' showSpinner={props.showSpinner} text={getPhrase('contribute')} />\n </PopupButtons>\n </Form>\n );\n}","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Flight } from 'libs/common/flight';\n\nimport { AnalyticsHelper } from 'libs/analytics/AnalyticsHelper';\nimport { AddToExchangeDescriptor, EntityType, LocationContext, UserAction, WorkflowPhase } from 'libs/analytics/interfaces';\n\nimport { FormWrapper } from 'libs/shared/components/forms/form-wrapper/FormWrapper';\nimport { Popup } from 'libs/shared/components/popup/Popup';\nimport { VideoRequests } from 'libs/shared/flight-requests/VideoRequests';\nimport { useAlerts } from 'libs/shared/hooks/UseAlerts';\nimport { LibraryTree, PopupViewProps, Video } from 'libs/shared/interfaces';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\nimport { RatingRequests } from 'shared/flight-requests/RatingRequests';\n\nimport { MyVideosRequests } from 'apps/my-videos/flight-requests/MyVideosRequests';\nimport { useShapeTree } from 'apps/my-videos/hooks/useShapeTree';\nimport { AddToExchangeRequest } from 'apps/my-videos/interfaces/requests/AddToExchangeRequest';\nimport { AddToExchangeForm, AddToExchangeFormData, AddToExchangeValidationSchema } from 'apps/my-videos/views/add-to-exchange/AddToExchangeForm';\n\nconst namespace = 'myVideos.addToExchange';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface AddToExchangeViewProps extends PopupViewProps {\n id: string;\n}\n\nexport function AddToExchangeView(props: AddToExchangeViewProps): JSX.Element {\n const [ showSpinner, setShowSpinner ] = React.useState(false);\n\n const fetchAsync = Flight.useGetFetchAsync();\n const alerts = useAlerts();\n\n const video = Flight.useBasicFetch<Video>(VideoRequests.video(props.id));\n const exchangeCategories = Flight.useBasicFetch<LibraryTree[]>(MyVideosRequests.exchangeWithCategories());\n const categories = useShapeTree(exchangeCategories.data?.[0]?.children, false);\n const ratings = Flight.useBasicFetch<any>(RatingRequests.ratings());\n \n async function onSubmit(data: AddToExchangeFormData): Promise<void> {\n setShowSpinner(true);\n\n const requestData: AddToExchangeRequest = {\n videoId: video.data.id,\n categoryId: data.category.id,\n videoAttribute: {\n name: video.data.name,\n description: video.data.description,\n rating: data.rating.id,\n dateBroadcast: data.dateBroadcast,\n productionYear: video.data.productionYear,\n channel: data.channel.id,\n series: data.series?.id,\n seasonNumber: data.seasonNumber,\n episodeNumber: data.episodeNumber\n }\n };\n\n try {\n await fetchAsync(MyVideosRequests.addToExchange(requestData));\n\n AnalyticsHelper.logUserAction({\n id: video.data.id,\n name: video.data.name,\n isBroadcast: VideoHelper.isBroadcast(video.data)\n }, {\n actionType: UserAction.Create,\n entity: EntityType.Video,\n location: LocationContext.Popup,\n workflowPhase: WorkflowPhase.Complete,\n descriptor: AddToExchangeDescriptor.AddToExchange\n });\n\n alerts.success(getPhrase('success'));\n Core.AppLinkHelper.trigger({\n application: AppChannels.MY_VIDEOS,\n action: Actions.MyVideos.ADD_TO_EXCHANGE_SUCCESS\n });\n } catch {\n alerts.error(getPhrase('error'));\n props.closePopup();\n }\n }\n\n const hasLoaded = (\n video.hasCompleted &&\n exchangeCategories.hasCompleted &&\n ratings.hasCompleted\n );\n\n return (\n <Popup\n title={getPhrase('title')}\n closePopup={props.closePopup}\n showLoadingSpinner={!hasLoaded}\n size='lg'\n >\n {hasLoaded &&\n <FormWrapper<AddToExchangeFormData>\n initialValues={{\n rating: video.data.rating,\n channel: video.data.channel,\n dateBroadcast: video.data.dateBroadcast,\n series: video.data.series,\n seasonNumber: video.data.season?.number,\n episodeNumber: video.data.episodeNumber\n }}\n validationSchema={AddToExchangeValidationSchema}\n onSubmit={onSubmit}\n validateOnMount\n >\n <AddToExchangeForm\n categories={categories}\n ratings={ratings.data}\n onClickCancel={props.closePopup}\n showSpinner={showSpinner}\n video={video.data}\n />\n </FormWrapper>\n }\n </Popup>\n );\n}","import { UrlHelper } from 'libs/common/backbone/utils/UrlHelper';\nimport { Flight } from 'libs/common/flight';\n\nimport { Rating } from 'libs/shared/interfaces';\n\nexport const RatingRequests = {\n ratings(countryCode?: string): Flight.PublicRequest {\n return {\n url: '/api/domain/v2/me/ratings',\n publicUrl: UrlHelper.urlBuilder('/api/domain/v2/me/ratings', { countryCode }),\n key: 'ratings',\n // v2/me/ratings doesn't support `query={orderby:value}`. Adding this due to time constraints\n formatData: (ratings: Rating[]) => {\n return ratings.sort((a, b) => a.value - b.value);\n }\n };\n }\n};"],"names":["ExternalLink","Marketing","au","uk","nz","us","Support","ExternalLinkHelper","getMarketingUrlForGeoLocation","geoLocation","countryCode","getMarketingSalesContactForGeoLocation","baseUrl","this","C","getFreeResourcesForGeoLocation","getTermsAndConditionsLink","getPrivacyPolicyLink","getSupportUrlForGeoLocation","getLoginLink","options","email","customerId","params","redirectUrl","window","location","pathname","search","namespace","TypeaheadErrorState","props","className","onClick","e","stopPropagation","alt","role","src","imageUrl","Text","phrase","DivButton","onClickTryAgain","OnlineSupportArticle","LiteSupportArticle","MyVideosRequests","videos","id","cursor","typeFilter","VIDEO_COLLECTION","CLIP_COLLECTION","INTERACTIVE","videoQuery","clipQuery","interactiveQuery","query","length","includes","push","join","permissionFilterOption","url","key","Array","isArray","workspaceWithCategories","type","maxCategoryDepth","normalize","exchangeWithCategories","addFolder","data","collectionId","parentCategoryId","name","invalidationKeys","deleteFolder","moveFolder","assocType","newCollectionId","newFolderId","oldCollectionId","oldFolderId","objectIds","moveFolderId","updateFolder","videoFolders","videoId","libraryId","moveVideo","request","addToExchange","getPhrase","useShapeTree","trees","rename","children","map","t","LanguageService","AddToExchangeCategory","formikProps","FormField","label","showRequiredStar","values","category","autoHeight","autoHeightMax","hideTracksWhenNotNeeded","Tree","tree","categories","onSelect","folder","setFieldValue","selectedIds","undefined","selectedLinkClassName","isDropdown","AddToExchangeChannel","SearchBar","theme","suggestionsContainer","suggestionsContainerOpen","activationLength","placeholder","clearQueryOnSelect","searchIconPlacement","debounceTime","allowableSuggestionFetchRequestedReasons","getRemoteUrl","UrlHelper","q","onSuggestionSelected","channel","showClearInputIcon","renderAsForm","onClickClearInput","initialQuery","getErrorStateComponent","ImageUrls","getEmptyStateComponent","AddToExchangeDetails","contentGuidelines","ArticleHelper","VideoThumbnail","video","imageOptions","size","textPosition","ThumbnailTextPosition","preload","AppLink","appLink","application","action","args","onClickCancel","MAX_DISPLAYED_RATING_VALUE","AddToExchangeRating","as","value","rating","onChange","ratingId","target","ratings","find","r","toString","code","AddToExchangeSeries","filterEmptySeries","series","AddToExchangeValidationSchema","shape","required","nullable","dateBroadcast","seasonNumber","integer","min","max","episodeNumber","AddToExchangeForm","DateHelper","Date","autoFocus","disabled","termsAndCondiditons","PopupButtons","variant","showSpinner","text","AddToExchangeView","setShowSpinner","fetchAsync","alerts","VideoRequests","exchangeCategories","RatingRequests","hasLoaded","hasCompleted","Popup","title","closePopup","showLoadingSpinner","FormWrapper","initialValues","season","number","validationSchema","onSubmit","requestData","categoryId","videoAttribute","description","productionYear","AnalyticsHelper","isBroadcast","VideoHelper","actionType","entity","workflowPhase","descriptor","AddToExchange","success","error","validateOnMount","publicUrl","formatData","sort","a","b"],"sourceRoot":""}
|
|
1
|
+
{"version":3,"file":"scripts/8024-765a4170c7-lite.chunk.js","mappings":"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","sources":["file:///app/packages/libs/shared/src/apps/sign-up/helpers/ExternalLinkHelper.ts","file:///app/packages/libs/shared/src/components/typeahead-error-state/typeahead-error-state.scss","file:///app/packages/libs/shared/src/components/typeahead-error-state/TypeaheadErrorState.tsx","file:///app/packages/libs/shared/src/enums/SupportArticle.ts","file:///app/packages/projects/lite/src/apps/my-videos/flight-requests/MyVideosRequests.ts","file:///app/packages/projects/lite/src/apps/my-videos/hooks/useShapeTree.ts","file:///app/packages/projects/lite/src/apps/my-videos/views/add-to-exchange/add-to-exchange.scss","file:///app/packages/projects/lite/src/apps/my-videos/views/add-to-exchange/components/add-to-exchange-category/AddToExchangeCategory.tsx","file:///app/packages/projects/lite/src/apps/my-videos/views/add-to-exchange/components/add-to-exchange-channel/AddToExchangeChannel.tsx","file:///app/packages/projects/lite/src/apps/my-videos/views/add-to-exchange/components/add-to-exchange-details/AddToExchangeDetails.tsx","file:///app/packages/projects/lite/src/apps/my-videos/views/add-to-exchange/components/add-to-exchange-rating/AddtoExchangeRating.tsx","file:///app/packages/projects/lite/src/apps/my-videos/views/add-to-exchange/components/add-to-exchange-series/AddToExchangeSeries.tsx","file:///app/packages/projects/lite/src/apps/my-videos/views/add-to-exchange/AddToExchangeForm.tsx","file:///app/packages/projects/lite/src/apps/my-videos/views/add-to-exchange/AddToExchangeView.tsx","file:///app/packages/projects/lite/src/shared/flight-requests/RatingRequests.ts"],"sourcesContent":["import { UrlHelper } from 'libs/common/backbone/utils/UrlHelper';\nimport { HashObject } from 'libs/common/react/interfaces/HashObject';\n\nimport { LocalityHelper } from 'libs/shared/apps/sign-up/helpers/LocalityHelper';\nimport { CountryCode } from 'libs/shared/enums/CountryCode';\nimport { GeoLocation } from 'libs/shared/interfaces/responses/GeoLocation';\n\ntype ExternalLinkType = {\n [key: string]: {\n [key in CountryCode]: string\n }\n}\n\ninterface LoginLinkOptions {\n email?: string;\n customerId?: string;\n}\n\nexport const ExternalLink: ExternalLinkType = {\n Marketing: {\n au: 'https://www.clickview.com.au',\n uk: 'https://www.clickview.co.uk',\n nz: 'https://www.clickview.co.nz',\n us: 'https://www.clickvieweducation.com'\n },\n Support: {\n au: 'https://www.clickviewsupport.com/hc/en-au',\n uk: 'https://www.clickviewsupport.com/hc/en-au#gb',\n nz: 'https://www.clickviewsupport.com/hc/en-au#nz',\n us: 'https://www.clickviewsupport.com/hc/en-au#us'\n }\n};\n\nexport const ExternalLinkHelper = {\n \n getMarketingUrlForGeoLocation(geoLocation: GeoLocation): string {\n const countryCode = LocalityHelper.getCountryCode(geoLocation?.countryCode);\n const url = ExternalLink.Marketing[countryCode];\n\n if (!url)\n return ExternalLink.Marketing.us;\n\n return url;\n },\n\n getMarketingSalesContactForGeoLocation(geoLocation: GeoLocation): string {\n const countryCode = LocalityHelper.getCountryCode(geoLocation?.countryCode);\n const baseUrl = this.getMarketingUrlForGeoLocation(geoLocation);\n if (geoLocation && countryCode === CountryCode.NZ) {\n return baseUrl + '/contact-us/';\n }\n return baseUrl + '/contact-us/trial/';\n },\n\n getFreeResourcesForGeoLocation(geoLocation: GeoLocation): string {\n let countryCode = LocalityHelper.getCountryCode(geoLocation?.countryCode);\n\n if (countryCode === CountryCode.NZ)\n countryCode = CountryCode.AU;\n\n const baseUrl = this.getMarketingUrlForGeoLocation({ countryCode });\n return baseUrl + '/free-student-resources//';\n },\n\n getTermsAndConditionsLink(): string {\n const baseUrl = this.getMarketingUrlForGeoLocation(CountryCode.US);\n return baseUrl + '/terms-and-conditions/';\n },\n\n getPrivacyPolicyLink(): string {\n const baseUrl = this.getMarketingUrlForGeoLocation(CountryCode.US);\n return baseUrl + '/privacy-policy/';\n },\n\n getSupportUrlForGeoLocation(geoLocation: GeoLocation): string {\n const countryCode = LocalityHelper.getCountryCode(geoLocation?.countryCode);\n const url = ExternalLink.Support[countryCode];\n\n if (!url)\n return ExternalLink.Support.us;\n\n return url;\n },\n\n getLoginLink(options: LoginLinkOptions = {}): string {\n const { email, customerId } = options;\n\n const params: HashObject = {\n redirectUrl: window.location.pathname + window.location.search\n };\n\n if (email)\n params.email = email;\n\n if (customerId)\n params.customerId = customerId;\n\n return UrlHelper.urlBuilder('/login', params);\n }\n};","// extracted by mini-css-extract-plugin\nexport default {\"emptyState\":\"k5mEG\"};","import React from 'react';\n\nimport { DivButton } from 'libs/shared/components/div-button/DivButton';\nimport { Text } from 'libs/shared/components/text/Text';\n\nimport styles from './typeahead-error-state.scss';\n\nconst namespace = 'shared.typeaheadErrorState';\n\ninterface TypeaheadErrorStateProps {\n imageUrl: string;\n onClickTryAgain: () => void;\n}\n\nexport function TypeaheadErrorState(props: TypeaheadErrorStateProps): JSX.Element {\n function onClickComponent(e: React.MouseEvent<HTMLDivElement>): void {\n e.stopPropagation();\n }\n\n function onClickTryAgain(e: React.MouseEvent<HTMLDivElement>): void {\n e.stopPropagation();\n \n props.onClickTryAgain();\n }\n\n return (\n <div className='d-flex flex-column align-items-center text-center' onClick={onClickComponent}>\n <img\n alt=''\n role='presentation'\n src={props.imageUrl}\n className={`pb-2 ${styles.emptyState}`}\n />\n <h2 className='h6'>\n <Text namespace={namespace} phrase='error' />\n </h2>\n <DivButton onClick={onClickTryAgain} className='btn btn-link info-link p-0'>\n <Text namespace={namespace} phrase='tryAgain' />\n </DivButton>\n </div>\n );\n}","// Article name mapped to article ID on support site. Used by `ArticleHelper`\n\nexport enum OnlineSupportArticle {\n AddToPlaylist = '115005679748',\n EditSsoAccounts = '8202508040345',\n\n // LE\n LibraryEditor = '360001974533',\n VideoAccess = '360000153947',\n AddFromOnline = '360011718234',\n UploadToLibraryEditor = '360012069334',\n PBTErrorCodes = '360012421153',\n ManuelReview = '360020004534',\n LibraryReview = '360000163788',\n}\n\nexport enum LiteSupportArticle {\n Integrations = '4407268725529',\n Classrooms = '4405362551833',\n MakeInteractive = '4405370510873',\n EditSsoAccounts = '8202605666073',\n UploadToLibraryEditor = '10672936659865',\n AddFromLite = '10671345281561',\n ManageSsoYearGroups = '14691130889241',\n ContentReview = '18525199576601',\n ContentPermissions = '14692125209497',\n AccessSettings = '22110291468057',\n ContentGuidelines = '24133696186009',\n FoxtelFaq = '24133519542169',\n ViviIntegration = '23826297956377',\n AppleTvIntegration = '25832373739929',\n}\n","import { HttpVerbs } from 'libs/common/backbone/enums/HttpVerbs';\nimport { UrlHelper } from 'libs/common/backbone/utils/UrlHelper';\nimport { Flight } from 'libs/common/flight';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { SearchIndices } from 'libs/shared/apps/search/interfaces';\nimport { SharedWithStatements } from 'libs/shared/constants/WithStatements';\nimport { CurationStatus } from 'libs/shared/enums/CurationStatus';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { PermissionFilterOption } from 'libs/shared/enums/PermissionFilterOption';\n\nimport { AddFolderRequest } from 'apps/my-videos/interfaces/requests/AddFolderRequest';\nimport { AddToExchangeRequest } from 'apps/my-videos/interfaces/requests/AddToExchangeRequest';\nimport { MoveFolderRequest } from 'apps/my-videos/interfaces/requests/MoveFolderRequest';\nimport { MoveVideoRequest } from 'apps/my-videos/interfaces/requests/MoveVideoRequest';\n\nexport const MyVideosRequests = {\n videos(id: string, cursor?: string, typeFilter?: SearchIndices | SearchIndices[]): Flight.Request {\n const { VIDEO_COLLECTION, CLIP_COLLECTION, INTERACTIVE } = SharedWithStatements;\n\n const videoQuery = `videos[${VIDEO_COLLECTION}]{libraries.typeid:${MasterType.WorkspaceCollection}}`;\n const clipQuery = `clips[${CLIP_COLLECTION}]{status:${CurationStatus.Published}}`;\n const interactiveQuery = `interactives[${INTERACTIVE}]{status:[${CurationStatus.Published},${CurationStatus.Draft}]}`;\n\n const query = [];\n if (typeFilter?.length) {\n if (typeFilter.includes('video'))\n query.push(videoQuery);\n if (typeFilter.includes('clip'))\n query.push(clipQuery);\n if (typeFilter.includes('interactive'))\n query.push(interactiveQuery);\n } else {\n query.push(videoQuery, clipQuery, interactiveQuery);\n }\n\n const params: HashObject = {\n query: `(${query.join('|')}){orderbydesc:timestamp}`,\n permissionFilterOption: PermissionFilterOption.StripMetadata\n };\n\n if (cursor)\n params.cursor = cursor;\n\n return {\n url: UrlHelper.urlBuilder(`{gateway}/v1/objects/${id}/members`, params),\n key: `my:videos:${id}:${cursor}${typeFilter ? `:${Array.isArray(typeFilter) ? typeFilter.join(':') : typeFilter}` : ''}`\n };\n },\n\n workspaceWithCategories(): Flight.Request {\n return {\n // TODO: Need to stop using domain\n url: UrlHelper.urlBuilder('/api/domain/v2/me/libraries', {\n type: ['workspace'],\n maxCategoryDepth: 6\n }),\n key: 'workspace:folders',\n normalize: false\n };\n },\n\n exchangeWithCategories(): Flight.Request {\n return {\n // TODO: Need to stop using domain\n url: UrlHelper.urlBuilder('/api/domain/v2/me/libraries', {\n type: ['exchange'],\n maxCategoryDepth: 5\n }),\n key: 'exchange:folders',\n normalize: false\n };\n },\n\n addFolder(data: AddFolderRequest): Flight.Request {\n // TODO: Need to stop using domain\n let url = `/api/domain/v2/collections/${data.collectionId}/categories`;\n\n if (data.parentCategoryId)\n url = UrlHelper.urlBuilder(url, { parentCategoryId: data.parentCategoryId });\n\n return {\n url,\n key: 'add:folder',\n type: HttpVerbs.POST,\n data: { name: data.name },\n invalidationKeys: [ 'workspace', 'folder' ]\n };\n },\n\n deleteFolder(id: string): Flight.Request {\n return {\n url: `{gateway}/v1/objects/${id}`,\n key: 'delete:folder',\n type: HttpVerbs.DELETE,\n invalidationKeys: [ 'workspace', 'folder' ]\n };\n },\n\n moveFolder(data: MoveFolderRequest): Flight.Request {\n return {\n // TODO: Need to stop using domain\n url: '/api/domain/v2/objects/move',\n key: 'move:folder',\n type: HttpVerbs.POST,\n data: {\n assocType: 'has',\n newCollectionId: data.newFolderId,\n oldCollectionId: data.oldFolderId,\n objectIds: [data.moveFolderId]\n },\n invalidationKeys: [ 'workspace', 'folder' ]\n };\n },\n\n updateFolder(id: string, name: string): Flight.Request {\n return {\n url: `{gateway}/v1/objects/${id}`,\n key: 'rename:folder',\n type: HttpVerbs.PUT,\n data: { name },\n invalidationKeys: [ 'workspace', 'folder' ]\n };\n },\n\n videoFolders(videoId: string, libraryId: string): Flight.Request {\n return {\n // TODO: Need to stop using domain\n url: `/api/domain/v2/objects/${videoId}/categories?query=libraries{id:${libraryId}}`,\n key: `video:folders:${videoId}`\n };\n },\n\n moveVideo(request: MoveVideoRequest): Flight.Request {\n const data: HashObject = {\n newCollectionId: request.newFolderId,\n oldCollectionId: request.oldFolderId,\n objectIds: request.videoId\n };\n\n return {\n url: '/api/domain/v3/objects/move',\n key: `move:folder:${data.objectIds.join(',')}`,\n type: HttpVerbs.POST,\n data,\n invalidationKeys: ['video']\n };\n },\n\n addToExchange(data: AddToExchangeRequest): Flight.Request {\n return {\n url: '{gateway}/v1/users/me/videos/exchange',\n key: 'add:to:exchange',\n type: HttpVerbs.POST,\n data\n };\n }\n};","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { BaseObject, BaseTree, MasterNestedObject } from 'libs/shared/interfaces';\nimport { TreeHelper } from 'libs/shared/utils/TreeHelper';\n\nconst namespace = 'myVideos.hooks';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nexport function useShapeTree<T extends BaseObject>(\n trees: MasterNestedObject<T>[],\n rename: boolean = true\n): BaseTree<T> {\n return React.useMemo(() => {\n if (!trees?.length)\n return null;\n\n /**\n * Renaming \"<fullName>'s Workspace\"\n * to \"My Videos\"\n */\n const renamed = trees.map(t => ({\n ...t,\n data: {\n ...t.data,\n name: rename ? getPhrase('myVideos') : t.data.name\n }\n }));\n\n const rootBranches = renamed.map(TreeHelper.convertNestedObjectToTree);\n\n return {\n children: rootBranches\n } as BaseTree<T>;\n }, [trees]);\n}","// extracted by mini-css-extract-plugin\nexport default {\"selectButton\":\"HWv2E\",\"suggestionsContainer\":\"m1Nm0\"};","import React from 'react';\nimport { Scrollbars } from 'react-custom-scrollbars-2';\nimport { useFormikContext } from 'formik';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { FormField } from 'libs/shared/components/forms/form-field/FormField';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { Tree } from 'libs/shared/components/tree/Tree';\nimport { BaseTree, Folder } from 'libs/shared/interfaces';\n\nimport { AddToExchangeFormData } from 'apps/my-videos/views/add-to-exchange/AddToExchangeForm';\n\nimport styles from '../../add-to-exchange.scss';\n\nconst namespace = 'myVideos.addToExchange';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface AddToExchangeCategoryProps {\n categories: BaseTree<Folder>;\n}\n\nexport function AddToExchangeCategory(props: AddToExchangeCategoryProps): JSX.Element {\n const formikProps = useFormikContext<AddToExchangeFormData>();\n\n return (\n <FormField\n label={getPhrase('category')}\n name='category'\n showRequiredStar\n >\n {() => (\n <div className='dropdown mb-2'>\n <button\n className={`dropdown-toggle form-control text-start position-relative ${styles.selectButton}`}\n type='button'\n id='select-folder'\n data-bs-toggle='dropdown'\n aria-haspopup='true'\n aria-expanded='false'\n >\n <div className='text-truncate'>\n {formikProps.values.category?.name ?? <Text namespace={namespace} phrase='categoryPlaceholder' />}\n </div>\n </button>\n <div className='dropdown-menu w-100' aria-labelledby='select-folder'>\n <Scrollbars autoHeight autoHeightMax={300} hideTracksWhenNotNeeded>\n <Tree\n tree={props.categories}\n onSelect={(folder: BaseTree<Folder>) => formikProps.setFieldValue('category', folder, true)}\n selectedIds={formikProps.values.category?.id ? [formikProps.values.category.id] : undefined}\n selectedLinkClassName='bg-light fw-semibold'\n isDropdown\n />\n </Scrollbars>\n </div>\n </div>\n )}\n </FormField>\n );\n}","import React from 'react';\nimport { useFormikContext } from 'formik';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { UrlHelper } from 'libs/common/backbone/utils/UrlHelper';\n\nimport { FormField } from 'libs/shared/components/forms/form-field/FormField';\nimport { SearchBar } from 'libs/shared/components/search-bar/SearchBar';\nimport { TypeaheadErrorState } from 'libs/shared/components/typeahead-error-state/TypeaheadErrorState';\nimport { Channel } from 'libs/shared/interfaces';\n\nimport { ImageUrls } from 'shared/constants/ImageUrls';\n\nimport { AddToExchangeFormData } from 'apps/my-videos/views/add-to-exchange/AddToExchangeForm';\n\nimport styles from '../../add-to-exchange.scss';\n\nconst namespace = 'myVideos.addToExchange';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nexport function AddToExchangeChannel(): JSX.Element {\n const formikProps = useFormikContext<AddToExchangeFormData>();\n\n return (\n <FormField\n label={getPhrase('channel')}\n name='channel'\n id='channel'\n showRequiredStar\n >\n {() => (\n <>\n <SearchBar<Channel>\n theme={() => ({\n suggestionsContainer: styles.suggestionsContainer,\n suggestionsContainerOpen: 'pb-0 pt-1 overflow-hidden bg-white border rounded position-absolute w-100'\n })}\n activationLength={2}\n placeholder={getPhrase('channelPlaceholder')}\n clearQueryOnSelect={false}\n searchIconPlacement={false}\n debounceTime={300}\n allowableSuggestionFetchRequestedReasons={[ 'input-changed', 'input-focused' ]}\n getRemoteUrl={query => UrlHelper.urlBuilder('/api/domain/v1/search/channel/instant/raw', {\n q: query\n })}\n onSuggestionSelected={channel => formikProps.setFieldValue('channel', channel, true)}\n showClearInputIcon\n renderAsForm={false}\n onClickClearInput={() => formikProps.setFieldValue('channel', null, true)}\n initialQuery={formikProps.values.channel?.name ?? ''}\n getErrorStateComponent={onClickTryAgain =>\n <TypeaheadErrorState imageUrl={ImageUrls.TYPEAHEAD_ERROR} onClickTryAgain={onClickTryAgain} />\n }\n getEmptyStateComponent={query => (<div>{getPhrase('emptySearch', { query })}</div>)}\n />\n </>\n )}\n </FormField>\n );\n}","import React from 'react';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { VideoThumbnail } from 'libs/shared/components/thumbnails/video/VideoThumbnail';\nimport { ImageSize } from 'libs/shared/enums/Images';\nimport { LiteSupportArticle } from 'libs/shared/enums/SupportArticle';\nimport { ThumbnailTextPosition } from 'libs/shared/enums/ThumbnailTextPosition';\nimport { Video } from 'libs/shared/interfaces';\nimport { ArticleHelper } from 'libs/shared/utils/ArticleHelper';\n\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\n\nconst namespace = 'myVideos.addToExchange';\n\ninterface AddToExchangeDetailsProps {\n video: Video;\n onClickCancel: () => void;\n}\n\nexport function AddToExchangeDetails(props: AddToExchangeDetailsProps): JSX.Element {\n return (\n <>\n <p>\n <Text\n namespace={namespace}\n phrase='message'\n options={{ contentGuidelines: ArticleHelper.getLiteArticle(LiteSupportArticle.ContentGuidelines) }}\n />\n </p>\n <div className='row form-group'>\n <div className='col-5'>\n <VideoThumbnail\n video={props.video}\n type='cosmetic'\n imageOptions={{ size: ImageSize.Small }}\n textPosition={ThumbnailTextPosition.Independent}\n preload\n />\n </div>\n <div className='col-7'>\n <h2 className='h6'>{props.video.name}</h2>\n <AppLink\n appLink={{\n application: AppChannels.VIDEOS,\n action: Actions.Videos.EDIT_VIDEO,\n args: [props.video.id]\n }}\n className='info-link'\n onClick={props.onClickCancel}\n >\n <Text namespace={namespace} phrase='edit' />\n </AppLink>\n </div>\n </div>\n <p><Text namespace={namespace} phrase='prompt' /></p>\n </>\n );\n}","import React from 'react';\nimport { useFormikContext } from 'formik';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { FormField } from 'libs/shared/components/forms/form-field/FormField';\nimport { Rating } from 'libs/shared/interfaces';\n\nimport { AddToExchangeFormData } from 'apps/my-videos/views/add-to-exchange/AddToExchangeForm';\n\nconst namespace = 'myVideos.addToExchange';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\n/**\n * We want to hide inappropriate rating values that won't be used.\n */\nconst MAX_DISPLAYED_RATING_VALUE = 128;\n\ninterface AddToExchangeRatingProps {\n ratings: Rating[];\n}\n\nexport function AddToExchangeRating(props: AddToExchangeRatingProps): JSX.Element {\n const formikProps = useFormikContext<AddToExchangeFormData>();\n\n return (\n <FormField\n as='select'\n label={getPhrase('rating')}\n name='rating'\n showRequiredStar\n value={formikProps.values.rating?.id}\n onChange={(e: React.ChangeEvent<HTMLSelectElement>) => {\n const ratingId = e.target.value;\n\n if (!ratingId) {\n formikProps.setFieldValue('rating', null);\n return;\n }\n\n const rating = props.ratings.find(r => r.id.toString() === ratingId.toString());\n formikProps.setFieldValue('rating', rating);\n }}\n >\n <option value=''>{getPhrase('ratingPlaceholder')}</option>\n {props.ratings.map((rating, key) => {\n if (rating.value >= MAX_DISPLAYED_RATING_VALUE)\n return <React.Fragment key={key} />;\n \n return (\n <option key={key} value={rating.id}>\n {rating.code || rating.name}\n </option>\n );\n })}\n </FormField>\n );\n}","import React from 'react';\nimport { useFormikContext } from 'formik';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { UrlHelper } from 'libs/common/backbone/utils/UrlHelper';\n\nimport { FormField } from 'libs/shared/components/forms/form-field/FormField';\nimport { SearchBar } from 'libs/shared/components/search-bar/SearchBar';\nimport { TypeaheadErrorState } from 'libs/shared/components/typeahead-error-state/TypeaheadErrorState';\nimport { Series } from 'libs/shared/interfaces';\n\nimport { ImageUrls } from 'shared/constants/ImageUrls';\n\nimport { AddToExchangeFormData } from 'apps/my-videos/views/add-to-exchange/AddToExchangeForm';\n\nimport styles from '../../add-to-exchange.scss';\n\nconst namespace = 'myVideos.addToExchange';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nexport function AddToExchangeSeries(): JSX.Element {\n const formikProps = useFormikContext<AddToExchangeFormData>();\n\n return (\n <FormField\n label={getPhrase('series')}\n name='series'\n id='series'\n >\n {() => (\n <>\n <SearchBar<Series>\n theme={() => ({\n suggestionsContainer: styles.suggestionsContainer,\n suggestionsContainerOpen: 'pb-0 pt-1 overflow-hidden bg-white border rounded position-absolute w-100'\n })}\n activationLength={2}\n placeholder={getPhrase('seriesPlaceholder')}\n clearQueryOnSelect={false}\n searchIconPlacement={false}\n debounceTime={300}\n allowableSuggestionFetchRequestedReasons={[ 'input-changed', 'input-focused' ]}\n getRemoteUrl={query => UrlHelper.urlBuilder('/api/domain/v1/search/series/instant/raw', {\n q: query,\n filterEmptySeries: false\n })}\n onSuggestionSelected={series => formikProps.setFieldValue('series', series, true)}\n showClearInputIcon\n renderAsForm={false}\n onClickClearInput={() => formikProps.setFieldValue('series', null, true)}\n initialQuery={formikProps.values.series?.name ?? ''}\n getErrorStateComponent={onClickTryAgain =>\n <TypeaheadErrorState imageUrl={ImageUrls.TYPEAHEAD_ERROR} onClickTryAgain={onClickTryAgain} />\n }\n getEmptyStateComponent={query => (<div>{getPhrase('emptySearch', { query })}</div>)}\n />\n </>\n )}\n </FormField>\n );\n}","import React from 'react';\nimport { Form, useFormikContext } from 'formik';\nimport * as Yup from 'yup';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { DateHelper } from 'libs/common/react/utils/DateHelper';\n\nimport { ExternalLinkHelper } from 'libs/shared/apps/sign-up/helpers/ExternalLinkHelper';\nimport { FormField } from 'libs/shared/components/forms/form-field/FormField';\nimport { PopupButtons } from 'libs/shared/components/popup/PopupButtons';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { BaseTree, Channel, Folder, Rating, Series, Video } from 'libs/shared/interfaces';\n\nimport { AddToExchangeCategory } from 'apps/my-videos/views/add-to-exchange/components/add-to-exchange-category/AddToExchangeCategory';\nimport { AddToExchangeChannel } from 'apps/my-videos/views/add-to-exchange/components/add-to-exchange-channel/AddToExchangeChannel';\nimport { AddToExchangeDetails } from 'apps/my-videos/views/add-to-exchange/components/add-to-exchange-details/AddToExchangeDetails';\nimport { AddToExchangeRating } from 'apps/my-videos/views/add-to-exchange/components/add-to-exchange-rating/AddtoExchangeRating';\nimport { AddToExchangeSeries } from 'apps/my-videos/views/add-to-exchange/components/add-to-exchange-series/AddToExchangeSeries';\n\nconst namespace = 'myVideos.addToExchange';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nexport const AddToExchangeValidationSchema = Yup.object().shape({\n category: Yup.object().required(getPhrase('categoryRequired')),\n rating: Yup.object().nullable().required(getPhrase('ratingRequired')),\n channel: Yup.object().required(getPhrase('channelRequired')),\n dateBroadcast: Yup.string().required(getPhrase('dateBroadcastRequired')),\n series: Yup.object(),\n seasonNumber: Yup\n .number()\n .integer()\n .min(1, () => getPhrase('seasonNumberRange'))\n .max(3000, () => getPhrase('seasonNumberRange')),\n episodeNumber: Yup\n .number()\n .integer()\n .min(1, () => getPhrase('episodeNumberRange'))\n .max(2147483647, () => getPhrase('episodeNumberRange'))\n});\n\nexport interface AddToExchangeFormData {\n category: Folder;\n rating: Rating;\n channel: Channel;\n dateBroadcast: string;\n series: Series;\n seasonNumber: number;\n episodeNumber: number;\n}\n\ninterface AddToExchangeFormProps {\n onClickCancel: () => void;\n showSpinner: boolean;\n categories: BaseTree<Folder>;\n ratings: Rating[];\n video: Video;\n}\n\nexport function AddToExchangeForm(props: AddToExchangeFormProps): JSX.Element {\n const formikProps = useFormikContext<AddToExchangeFormData>();\n\n return (\n <Form>\n <AddToExchangeDetails video={props.video} onClickCancel={props.onClickCancel} />\n <div className='container'>\n <div className='row'>\n <div className='col-lg-6 col-12'>\n <AddToExchangeCategory categories={props.categories} />\n </div>\n <div className='col-lg-6 col-12'>\n <AddToExchangeRating ratings={props.ratings} />\n </div>\n </div>\n <div className='row'>\n <div className='col-lg-6 col-12'>\n <AddToExchangeChannel />\n </div>\n <div className='col-lg-6 col-12'>\n <FormField\n type='date'\n name='dateBroadcast'\n label={getPhrase('dateBroadcast')}\n value={formikProps.values.dateBroadcast ?\n DateHelper.format(formikProps.values.dateBroadcast, 'YYYY-MM-DD') :\n ''}\n min='1927-09-07' // First ever TV broadcast\n max={DateHelper.format(new Date(), 'YYYY-MM-DD')}\n showRequiredStar\n />\n </div>\n </div>\n <div className='row'>\n <div className='col-lg-6 col-12'>\n <AddToExchangeSeries />\n </div>\n <div className='col-lg-6 col-12'>\n <div className='row'>\n <div className='col-6'>\n <FormField\n label={getPhrase('seasonNumber')}\n type='number'\n name='seasonNumber'\n id='seasonNumber'\n placeholder={getPhrase('seasonNumber')}\n autoFocus\n value={formikProps.values.seasonNumber}\n disabled={!formikProps.values.series}\n />\n </div>\n <div className='col-6'>\n <FormField\n label={getPhrase('episodeNumber')}\n type='number'\n name='episodeNumber'\n id='episodeNumber'\n placeholder={getPhrase('episodeNumber')}\n autoFocus\n value={formikProps.values.episodeNumber}\n disabled={!formikProps.values.series}\n />\n </div>\n </div>\n </div>\n </div>\n </div>\n <p><Text namespace={namespace} phrase='disclaimer' options={{ termsAndCondiditons: ExternalLinkHelper.getTermsAndConditionsLink() }} /></p>\n <PopupButtons>\n <PopupButtons.Cancel onClick={props.onClickCancel} />\n <PopupButtons.Submit variant='dark' showSpinner={props.showSpinner} text={getPhrase('contribute')} />\n </PopupButtons>\n </Form>\n );\n}","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Flight } from 'libs/common/flight';\n\nimport { AnalyticsHelper } from 'libs/analytics/AnalyticsHelper';\nimport { AddToExchangeDescriptor, EntityType, LocationContext, UserAction, WorkflowPhase } from 'libs/analytics/interfaces';\n\nimport { FormWrapper } from 'libs/shared/components/forms/form-wrapper/FormWrapper';\nimport { Popup } from 'libs/shared/components/popup/Popup';\nimport { VideoRequests } from 'libs/shared/flight-requests/VideoRequests';\nimport { useAlerts } from 'libs/shared/hooks/UseAlerts';\nimport { LibraryTree, PopupViewProps, Video } from 'libs/shared/interfaces';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\nimport { RatingRequests } from 'shared/flight-requests/RatingRequests';\n\nimport { MyVideosRequests } from 'apps/my-videos/flight-requests/MyVideosRequests';\nimport { useShapeTree } from 'apps/my-videos/hooks/useShapeTree';\nimport { AddToExchangeRequest } from 'apps/my-videos/interfaces/requests/AddToExchangeRequest';\nimport { AddToExchangeForm, AddToExchangeFormData, AddToExchangeValidationSchema } from 'apps/my-videos/views/add-to-exchange/AddToExchangeForm';\n\nconst namespace = 'myVideos.addToExchange';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface AddToExchangeViewProps extends PopupViewProps {\n id: string;\n}\n\nexport function AddToExchangeView(props: AddToExchangeViewProps): JSX.Element {\n const [ showSpinner, setShowSpinner ] = React.useState(false);\n\n const fetchAsync = Flight.useGetFetchAsync();\n const alerts = useAlerts();\n\n const video = Flight.useBasicFetch<Video>(VideoRequests.video(props.id));\n const exchangeCategories = Flight.useBasicFetch<LibraryTree[]>(MyVideosRequests.exchangeWithCategories());\n const categories = useShapeTree(exchangeCategories.data?.[0]?.children, false);\n const ratings = Flight.useBasicFetch<any>(RatingRequests.ratings());\n \n async function onSubmit(data: AddToExchangeFormData): Promise<void> {\n setShowSpinner(true);\n\n const requestData: AddToExchangeRequest = {\n videoId: video.data.id,\n categoryId: data.category.id,\n videoAttribute: {\n name: video.data.name,\n description: video.data.description,\n rating: data.rating.id,\n dateBroadcast: data.dateBroadcast,\n productionYear: video.data.productionYear,\n channel: data.channel.id,\n series: data.series?.id,\n seasonNumber: data.seasonNumber,\n episodeNumber: data.episodeNumber\n }\n };\n\n try {\n await fetchAsync(MyVideosRequests.addToExchange(requestData));\n\n AnalyticsHelper.logUserAction({\n id: video.data.id,\n name: video.data.name,\n isBroadcast: VideoHelper.isBroadcast(video.data)\n }, {\n actionType: UserAction.Create,\n entity: EntityType.Video,\n location: LocationContext.Popup,\n workflowPhase: WorkflowPhase.Complete,\n descriptor: AddToExchangeDescriptor.AddToExchange\n });\n\n alerts.success(getPhrase('success'));\n Core.AppLinkHelper.trigger({\n application: AppChannels.MY_VIDEOS,\n action: Actions.MyVideos.ADD_TO_EXCHANGE_SUCCESS\n });\n } catch {\n alerts.error(getPhrase('error'));\n props.closePopup();\n }\n }\n\n const hasLoaded = (\n video.hasCompleted &&\n exchangeCategories.hasCompleted &&\n ratings.hasCompleted\n );\n\n return (\n <Popup\n title={getPhrase('title')}\n closePopup={props.closePopup}\n showLoadingSpinner={!hasLoaded}\n size='lg'\n >\n {hasLoaded &&\n <FormWrapper<AddToExchangeFormData>\n initialValues={{\n rating: video.data.rating,\n channel: video.data.channel,\n dateBroadcast: video.data.dateBroadcast,\n series: video.data.series,\n seasonNumber: video.data.season?.number,\n episodeNumber: video.data.episodeNumber\n }}\n validationSchema={AddToExchangeValidationSchema}\n onSubmit={onSubmit}\n validateOnMount\n >\n <AddToExchangeForm\n categories={categories}\n ratings={ratings.data}\n onClickCancel={props.closePopup}\n showSpinner={showSpinner}\n video={video.data}\n />\n </FormWrapper>\n }\n </Popup>\n );\n}","import { UrlHelper } from 'libs/common/backbone/utils/UrlHelper';\nimport { Flight } from 'libs/common/flight';\n\nimport { Rating } from 'libs/shared/interfaces';\n\nexport const RatingRequests = {\n ratings(countryCode?: string): Flight.PublicRequest {\n return {\n url: '/api/domain/v2/me/ratings',\n publicUrl: UrlHelper.urlBuilder('/api/domain/v2/me/ratings', { countryCode }),\n key: 'ratings',\n // v2/me/ratings doesn't support `query={orderby:value}`. Adding this due to time constraints\n formatData: (ratings: Rating[]) => {\n return ratings.sort((a, b) => a.value - b.value);\n }\n };\n }\n};"],"names":["ExternalLink","Marketing","au","uk","nz","us","Support","ExternalLinkHelper","getMarketingUrlForGeoLocation","geoLocation","countryCode","getMarketingSalesContactForGeoLocation","baseUrl","this","C","getFreeResourcesForGeoLocation","getTermsAndConditionsLink","getPrivacyPolicyLink","getSupportUrlForGeoLocation","getLoginLink","options","email","customerId","params","redirectUrl","window","location","pathname","search","namespace","TypeaheadErrorState","props","className","onClick","e","stopPropagation","alt","role","src","imageUrl","Text","phrase","DivButton","onClickTryAgain","OnlineSupportArticle","LiteSupportArticle","MyVideosRequests","videos","id","cursor","typeFilter","VIDEO_COLLECTION","CLIP_COLLECTION","INTERACTIVE","videoQuery","clipQuery","interactiveQuery","query","length","includes","push","join","permissionFilterOption","url","key","Array","isArray","workspaceWithCategories","type","maxCategoryDepth","normalize","exchangeWithCategories","addFolder","data","collectionId","parentCategoryId","name","invalidationKeys","deleteFolder","moveFolder","assocType","newCollectionId","newFolderId","oldCollectionId","oldFolderId","objectIds","moveFolderId","updateFolder","videoFolders","videoId","libraryId","moveVideo","request","addToExchange","getPhrase","useShapeTree","trees","rename","children","map","t","LanguageService","AddToExchangeCategory","formikProps","FormField","label","showRequiredStar","values","category","autoHeight","autoHeightMax","hideTracksWhenNotNeeded","Tree","tree","categories","onSelect","folder","setFieldValue","selectedIds","undefined","selectedLinkClassName","isDropdown","AddToExchangeChannel","SearchBar","theme","suggestionsContainer","suggestionsContainerOpen","activationLength","placeholder","clearQueryOnSelect","searchIconPlacement","debounceTime","allowableSuggestionFetchRequestedReasons","getRemoteUrl","UrlHelper","q","onSuggestionSelected","channel","showClearInputIcon","renderAsForm","onClickClearInput","initialQuery","getErrorStateComponent","ImageUrls","getEmptyStateComponent","AddToExchangeDetails","contentGuidelines","ArticleHelper","VideoThumbnail","video","imageOptions","size","textPosition","ThumbnailTextPosition","preload","AppLink","appLink","application","action","args","onClickCancel","MAX_DISPLAYED_RATING_VALUE","AddToExchangeRating","as","value","rating","onChange","ratingId","target","ratings","find","r","toString","code","AddToExchangeSeries","filterEmptySeries","series","AddToExchangeValidationSchema","shape","required","nullable","dateBroadcast","seasonNumber","integer","min","max","episodeNumber","AddToExchangeForm","DateHelper","Date","autoFocus","disabled","termsAndCondiditons","PopupButtons","variant","showSpinner","text","AddToExchangeView","setShowSpinner","fetchAsync","alerts","VideoRequests","exchangeCategories","RatingRequests","hasLoaded","hasCompleted","Popup","title","closePopup","showLoadingSpinner","FormWrapper","initialValues","season","number","validationSchema","onSubmit","requestData","categoryId","videoAttribute","description","productionYear","AnalyticsHelper","isBroadcast","VideoHelper","actionType","entity","workflowPhase","descriptor","AddToExchange","success","error","validateOnMount","publicUrl","formatData","sort","a","b"],"sourceRoot":""}
|