@clickview/lite 0.69.1-dev.0 → 0.69.1-dev.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (72) hide show
  1. package/dist/bundles.json +1 -1
  2. package/dist/css/{2636-lite-f995954232.chunk.css → 6078-lite-4d1b877b3f.chunk.css} +4 -0
  3. package/dist/css/{1239-lite-8152f713c8.chunk.css → 7210-lite-a568e8ec1e.chunk.css} +1 -0
  4. package/dist/scripts/1210-7afb28caac-lite.chunk.js +2 -0
  5. package/dist/scripts/1210-7afb28caac-lite.chunk.js.map +1 -0
  6. package/dist/scripts/232-1522c00252-lite.chunk.js +3 -0
  7. package/dist/scripts/232-1522c00252-lite.chunk.js.map +1 -0
  8. package/dist/scripts/300-3d9f3cd4e3-lite.chunk.js +2 -0
  9. package/dist/scripts/300-3d9f3cd4e3-lite.chunk.js.map +1 -0
  10. package/dist/scripts/3079-0a333d6805-lite.chunk.js +2 -0
  11. package/dist/scripts/3079-0a333d6805-lite.chunk.js.map +1 -0
  12. package/dist/scripts/3110-eee18143c6-lite.chunk.js +2 -0
  13. package/dist/scripts/3110-eee18143c6-lite.chunk.js.map +1 -0
  14. package/dist/scripts/312-693aa30814-lite.chunk.js +2 -0
  15. package/dist/scripts/312-693aa30814-lite.chunk.js.map +1 -0
  16. package/dist/scripts/4229-477b1858dc-lite.chunk.js +2 -0
  17. package/dist/scripts/4229-477b1858dc-lite.chunk.js.map +1 -0
  18. package/dist/scripts/{4845-f3646fb657-lite.chunk.js → 4845-9b4657e696-lite.chunk.js} +2 -2
  19. package/dist/scripts/4845-9b4657e696-lite.chunk.js.map +1 -0
  20. package/dist/scripts/5679-b40a221c78-lite.chunk.js +2 -0
  21. package/dist/scripts/5679-b40a221c78-lite.chunk.js.map +1 -0
  22. package/dist/scripts/6046-104677f08c-lite.chunk.js +2 -0
  23. package/dist/scripts/6046-104677f08c-lite.chunk.js.map +1 -0
  24. package/dist/scripts/6078-0bc71f8768-lite.chunk.js +2 -0
  25. package/dist/scripts/6078-0bc71f8768-lite.chunk.js.map +1 -0
  26. package/dist/scripts/{6188-e108abca25-lite.chunk.js → 6188-77fc2f3ec5-lite.chunk.js} +2 -2
  27. package/dist/scripts/6188-77fc2f3ec5-lite.chunk.js.map +1 -0
  28. package/dist/scripts/6351-dff9edbb16-lite.chunk.js +3 -0
  29. package/dist/scripts/6351-dff9edbb16-lite.chunk.js.map +1 -0
  30. package/dist/scripts/6973-c4cb114bd7-lite.chunk.js +2 -0
  31. package/dist/scripts/6973-c4cb114bd7-lite.chunk.js.map +1 -0
  32. package/dist/scripts/7210-d8fa7ca624-lite.chunk.js +3 -0
  33. package/dist/scripts/7210-d8fa7ca624-lite.chunk.js.map +1 -0
  34. package/dist/scripts/7482-13e6f78c32-lite.chunk.js +2 -0
  35. package/dist/scripts/7482-13e6f78c32-lite.chunk.js.map +1 -0
  36. package/dist/scripts/9040-be65e4eb1e-lite.chunk.js +2 -0
  37. package/dist/scripts/9040-be65e4eb1e-lite.chunk.js.map +1 -0
  38. package/dist/scripts/{bundle-90d3c7fd15.min.js → bundle-bad2e20859.min.js} +3 -3
  39. package/dist/scripts/{bundle-90d3c7fd15.min.js.map → bundle-bad2e20859.min.js.map} +1 -1
  40. package/package.json +1 -1
  41. package/dist/scripts/1210-3cbdc62b0a-lite.chunk.js +0 -2
  42. package/dist/scripts/1210-3cbdc62b0a-lite.chunk.js.map +0 -1
  43. package/dist/scripts/1239-ed9b8aadb4-lite.chunk.js +0 -3
  44. package/dist/scripts/1239-ed9b8aadb4-lite.chunk.js.map +0 -1
  45. package/dist/scripts/2636-63e5f2c9e6-lite.chunk.js +0 -2
  46. package/dist/scripts/2636-63e5f2c9e6-lite.chunk.js.map +0 -1
  47. package/dist/scripts/3036-d18c598435-lite.chunk.js +0 -2
  48. package/dist/scripts/3036-d18c598435-lite.chunk.js.map +0 -1
  49. package/dist/scripts/4229-75ba28a266-lite.chunk.js +0 -2
  50. package/dist/scripts/4229-75ba28a266-lite.chunk.js.map +0 -1
  51. package/dist/scripts/4266-e856b96643-lite.chunk.js +0 -3
  52. package/dist/scripts/4266-e856b96643-lite.chunk.js.map +0 -1
  53. package/dist/scripts/4598-f326dc1aec-lite.chunk.js +0 -2
  54. package/dist/scripts/4598-f326dc1aec-lite.chunk.js.map +0 -1
  55. package/dist/scripts/4845-f3646fb657-lite.chunk.js.map +0 -1
  56. package/dist/scripts/6046-44c115a89c-lite.chunk.js +0 -2
  57. package/dist/scripts/6046-44c115a89c-lite.chunk.js.map +0 -1
  58. package/dist/scripts/6188-e108abca25-lite.chunk.js.map +0 -1
  59. package/dist/scripts/6317-49be898c73-lite.chunk.js +0 -2
  60. package/dist/scripts/6317-49be898c73-lite.chunk.js.map +0 -1
  61. package/dist/scripts/6973-ede6601614-lite.chunk.js +0 -2
  62. package/dist/scripts/6973-ede6601614-lite.chunk.js.map +0 -1
  63. package/dist/scripts/7075-9a76ce47c9-lite.chunk.js +0 -3
  64. package/dist/scripts/7075-9a76ce47c9-lite.chunk.js.map +0 -1
  65. package/dist/scripts/9040-9393c59004-lite.chunk.js +0 -2
  66. package/dist/scripts/9040-9393c59004-lite.chunk.js.map +0 -1
  67. /package/dist/css/{3036-lite-1b3e9aa905.chunk.css → 3079-lite-1b3e9aa905.chunk.css} +0 -0
  68. /package/dist/css/{7075-lite-a377febbb0.chunk.css → 6351-lite-a377febbb0.chunk.css} +0 -0
  69. /package/dist/scripts/{4266-e856b96643-lite.chunk.js.LICENSE.txt → 232-1522c00252-lite.chunk.js.LICENSE.txt} +0 -0
  70. /package/dist/scripts/{1239-ed9b8aadb4-lite.chunk.js.LICENSE.txt → 6351-dff9edbb16-lite.chunk.js.LICENSE.txt} +0 -0
  71. /package/dist/scripts/{7075-9a76ce47c9-lite.chunk.js.LICENSE.txt → 7210-d8fa7ca624-lite.chunk.js.LICENSE.txt} +0 -0
  72. /package/dist/scripts/{bundle-90d3c7fd15.min.js.LICENSE.txt → bundle-bad2e20859.min.js.LICENSE.txt} +0 -0
@@ -1 +0,0 @@
1
- {"version":3,"file":"scripts/1239-ed9b8aadb4-lite.chunk.js","mappings":"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","sources":["file:///app/packages/libs/shared/src/apps/share-v2/flight-requests/ShareRequests.ts","file:///app/packages/libs/shared/src/apps/share-v2/enums/ShareOption.ts","file:///app/packages/libs/shared/src/apps/share-v2/utils/ShareViewHelper.tsx","file:///app/packages/libs/shared/src/apps/share/components/shared-object-image/shared-object-image.scss","file:///app/packages/libs/shared/src/apps/share/components/shared-object-image/SharedObjectImage.tsx","file:///app/packages/libs/shared/src/components/thumbnails/collection/title/collection-thumbnail-title.scss","file:///app/packages/libs/shared/src/components/thumbnails/collection/title/CollectionThumbnailTitle.tsx","file:///app/packages/libs/shared/src/components/thumbnails/collection/collection-thumbnail.scss","file:///app/packages/libs/shared/src/components/thumbnails/collection/CollectionThumbnail.tsx","file:///app/packages/libs/shared/src/enums/IntegrationId.ts","file:///app/packages/libs/shared/src/utils/IntegrationHelper.ts","file:///app/packages/projects/lite/src/apps/share-v2/components/section-setting-toggle-item/SectionSettingToggleItem.tsx","file:///app/packages/projects/lite/src/apps/share-v2/enums/SharePrivacy.ts","file:///app/packages/projects/lite/src/apps/share-v2/enums/ShareType.ts","file:///app/packages/projects/lite/src/apps/share-v2/flight-requests/ShareRequests.ts","file:///app/packages/projects/lite/src/apps/share-v2/hooks/useCreateShare.ts","file:///app/packages/projects/lite/src/apps/share-v2/utils/ShareHelper.ts","file:///app/packages/projects/lite/src/apps/share-v2/views/components/flow-selector-options/flow-selector-options.scss","file:///app/packages/projects/lite/src/apps/share-v2/views/components/flow-selector-options/FlowSelectorOptions.tsx","file:///app/packages/projects/lite/src/apps/share-v2/views/components/flow-selector-options/previous-shares/previous-shares.scss","file:///app/packages/projects/lite/src/apps/share-v2/views/components/flow-selector-options/previous-shares/PreviousShares.tsx","file:///app/packages/projects/lite/src/apps/share-v2/components/classroom-selector/classroom-selector.scss","file:///app/packages/projects/lite/src/apps/share-v2/components/classroom-selector/ClassroomSelector.tsx","file:///app/packages/projects/lite/src/apps/share-v2/components/ClassroomSettingsSectioned.tsx","file:///app/packages/projects/lite/src/apps/share-v2/views/ClassroomFlowView.tsx","file:///app/packages/projects/lite/src/apps/share-v2/views/FlowSelectorView.tsx","file:///app/packages/projects/lite/src/apps/share-v2/components/SessionSettingsSectioned.tsx","file:///app/packages/projects/lite/src/apps/share-v2/views/SessionFlowView.tsx","file:///app/node_modules/timeago.js/esm/lang/en_US.js","file:///app/node_modules/timeago.js/esm/lang/zh_CN.js","file:///app/node_modules/timeago.js/esm/register.js","file:///app/node_modules/timeago.js/esm/utils/date.js","file:///app/node_modules/timeago.js/esm/format.js","file:///app/node_modules/timeago.js/esm/index.js"],"sourcesContent":["import { HttpVerbs } from 'libs/common/backbone/enums/HttpVerbs';\nimport { UrlHelper } from 'libs/common/backbone/utils/UrlHelper';\nimport { Flight } from 'libs/common/flight';\n\nimport { CreateShareRequest } from 'libs/shared/apps/share-v2/interfaces/CreateShareRequest';\nimport { Share } from 'libs/shared/apps/share-v2/interfaces/Share';\nimport { UpdateShareRequest } from 'libs/shared/apps/share-v2/interfaces/UpdateShareRequest';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { BasePaginatedCollection } from 'libs/shared/interfaces';\n\nconst normalizeOptions: Flight.NormalizeOptions = {\n namespace: 'share-v2'\n};\n\nexport interface GetSentSharesParams {\n cursor?: string;\n limit?: number;\n objectTypeId?: MasterType | MasterType[];\n recipientUserId?: string | string[];\n recipientGroupId?: string | string[];\n start?: string;\n end?: string;\n}\n\nexport const ShareRequests = {\n createShare(\n data: CreateShareRequest,\n success?: (response: Share) => void,\n error?: () => void,\n always?: () => void\n ): Flight.Request {\n return {\n url: '/api/share/v2/shares',\n key: 'create:share-v2',\n type: HttpVerbs.POST,\n data,\n normalizeOptions,\n invalidationKeys: ['sent:shares-v2'],\n success,\n error,\n always\n };\n },\n\n updateShare(\n shareId: string,\n data: UpdateShareRequest,\n success?: (response: Share) => void,\n error?: () => void,\n always?: () => void\n ): Flight.Request {\n return {\n url: `/api/share/v2/shares/${shareId}`,\n key: `update:share-v2:${shareId}`,\n type: HttpVerbs.PUT,\n data,\n normalizeOptions,\n invalidationKeys: [ 'share-v2:permanent-link:object', `share-v2:${shareId}` ],\n success,\n error,\n always\n };\n },\n\n getShare(\n shareId: string,\n success?: (response: Share) => void,\n error?: () => void,\n always?: () => void\n ): Flight.Request {\n return {\n url: `/api/share/v2/shares/${shareId}`,\n key: `share-v2:${shareId}`,\n bootstrapName: `share-v2:${shareId}`,\n type: HttpVerbs.GET,\n normalizeOptions,\n success,\n error,\n always\n };\n },\n\n getSentShares(\n params: GetSentSharesParams = {},\n success?: (response: BasePaginatedCollection<Share>[]) => void,\n error?: () => void,\n always?: () => void\n ): Flight.Request {\n const key = Object.values(params).join(':');\n\n return {\n url: UrlHelper.urlBuilder('/api/share/v2/shares/sent', params),\n key: `sent:shares-v2:${key}`,\n formatData: (response: Share[]) => {\n return {\n data: response,\n count: response.length,\n pagination: {\n cursors: {\n next: null, // TODO: Share V2 - fix hardcoded value\n previous: params.cursor\n }\n }\n };\n },\n type: HttpVerbs.GET,\n normalize: false,\n success,\n error,\n always\n };\n },\n\n getShareLinkByObjectId(id: string): Flight.Request {\n return {\n url: UrlHelper.urlBuilder('/api/share/v2/shares/permanent-link', { objectId: id }),\n key: `share-v2:permanent-link:object:${id}`,\n type: HttpVerbs.POST,\n normalizeOptions\n };\n },\n\n getPrivacy(id: string): Flight.Request {\n return {\n url: `{gateway}/v1/objects/${id}/access`,\n key: `privacy:${id}`,\n normalize: false\n };\n }\n};","export enum ShareOption {\n InstantFeedback = 'instant_feedback',\n PreventSkipping = 'prevent_skipping'\n}","import { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Flight } from 'libs/common/react/index';\n\nimport { AnalyticsHelper } from 'libs/analytics/AnalyticsHelper';\nimport { AnalyticsOptions, EntityType, EventVersion, LocationContext, UserAction, WorkflowPhase } from 'libs/analytics/interfaces';\n\nimport { ShareOption } from 'libs/shared/apps/share-v2/enums/ShareOption';\nimport { ShareRequests } from 'libs/shared/apps/share-v2/flight-requests/ShareRequests';\nimport type { Share } from 'libs/shared/apps/share-v2/interfaces/Share';\nimport type { UpdateShareRequest } from 'libs/shared/apps/share-v2/interfaces/UpdateShareRequest';\nimport { IntegrationId } from 'libs/shared/enums/IntegrationId';\nimport { ClassificationRequests } from 'libs/shared/flight-requests/ClassificationRequests';\nimport { ClipRequests } from 'libs/shared/flight-requests/ClipRequests';\nimport { InteractiveRequests } from 'libs/shared/flight-requests/InteractiveRequests';\nimport { PlaylistRequests } from 'libs/shared/flight-requests/PlaylistRequests';\nimport { SeriesRequests } from 'libs/shared/flight-requests/SeriesRequests';\nimport { VideoRequests } from 'libs/shared/flight-requests/VideoRequests';\nimport { Alerts } from 'libs/shared/hooks/UseAlerts';\nimport type { Classification, Clip, Interactive, InteractiveMetadata, Playlist, Series, Subject, Video } from 'libs/shared/interfaces';\nimport { IntegrationHelper } from 'libs/shared/utils/IntegrationHelper';\n\nexport type SharableEntityType = 'video' | 'playlist' | 'subject' | 'series' | 'interactive' | 'clip';\nexport type SharableEntity = Video | Playlist | Subject | Series | InteractiveMetadata | Clip;\nexport interface ShareSettingsFormFields {\n preventSkipping: boolean;\n instantFeedback: boolean;\n}\n\nconst namespace = 'sharev2.utils';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nexport const ShareViewHelper = {\n canEmbed(type: SharableEntityType): boolean {\n return [ 'video', 'interactive', 'clip' ].includes(type);\n },\n\n canAddPolicies(type: SharableEntityType): boolean {\n return [ 'video', 'interactive', 'clip' ].includes(type);\n },\n \n getEnabledIntegrations(googleClassroomSetting: boolean, msftTeamsSetting: boolean): IntegrationId[] {\n const integrations = IntegrationHelper.getShareIntegrations(googleClassroomSetting, msftTeamsSetting);\n return integrations.filter(i => i.enabled).map(i => i.id);\n },\n\n getFetchFunctionByType: (type: SharableEntityType) => {\n switch (type) {\n case 'video': {\n return (id: string) => Flight.useBasicFetch<Video>(VideoRequests.video(id));\n }\n \n case 'playlist': {\n return (id: string) => Flight.useBasicFetch<Playlist>(PlaylistRequests.getPlaylist(id));\n }\n \n case 'subject': {\n return (id: string, userId: string) => {\n return Flight.useBasicFetch<Classification>(ClassificationRequests.classification(id, userId));\n };\n }\n \n case 'series': {\n return (id: string) => Flight.useBasicFetch<Series>(SeriesRequests.series(id));\n }\n \n case 'interactive': {\n return (id: string) =>\n Flight.useBasicFetch<InteractiveMetadata>(InteractiveRequests.interactiveMetadata(id));\n }\n \n case 'clip': {\n return (id: string) =>\n Flight.useBasicFetch<Clip>(ClipRequests.clip(id));\n }\n }\n },\n\n getAnalyticsEntity(entityType: string): EntityType {\n switch (entityType) {\n case 'playlist':\n return EntityType.Playlist;\n case 'subject':\n return EntityType.Classification;\n case 'video':\n return EntityType.Video;\n case 'series':\n return EntityType.Series;\n case 'interactive':\n return EntityType.Interactive;\n case 'clip':\n return EntityType.Clip;\n }\n },\n\n getAnalyticsOptions(entityType: SharableEntityType): AnalyticsOptions {\n return {\n entity: ShareViewHelper.getAnalyticsEntity(entityType),\n location: LocationContext.Popup,\n workflowPhase: WorkflowPhase.Complete\n };\n },\n\n updateShareLink(\n dispatch: Flight.Dispatch,\n entity: SharableEntity,\n entityType: SharableEntityType,\n share: Share,\n data: UpdateShareRequest,\n alerts: Alerts,\n onSuccess?: (data: Share) => void,\n onError?: () => void\n ): void {\n const success = (updatedShare: Share) => {\n AnalyticsHelper.logUserAction(\n { ...updatedShare, objectName: entity.name },\n AnalyticsHelper.mergeOptions(ShareViewHelper.getAnalyticsOptions(entityType), {\n actionType: UserAction.Edit,\n entity: EntityType.ShareLink,\n eventVersion: EventVersion.V3\n })\n );\n\n if (onSuccess)\n onSuccess(updatedShare);\n\n alerts.success(getPhrase('editSuccess', { name: entity.name, escapeText: true }));\n };\n\n const error = () => {\n if (onError)\n onError();\n\n alerts.error(getPhrase('editError', { name: entity.name, escapeText: true }));\n };\n\n Flight.fetch(dispatch, ShareRequests.updateShare(share.shareId, data, success, error));\n },\n\n getShareSettingsInitialValues(share: Share, interactive: Interactive | null) {\n const defaults = {\n preventSkipping: interactive?.preventScrubbing || false,\n instantFeedback: interactive?.immediateFeedback || false\n };\n\n const ShareOptionKeyMapping: {[key in ShareOption]: keyof typeof defaults} = {\n [ShareOption.InstantFeedback]: 'instantFeedback',\n [ShareOption.PreventSkipping]: 'preventSkipping'\n };\n\n return share.options.reduce((prev, curr) => {\n if (!Object.keys(ShareOptionKeyMapping).includes(curr.option))\n return prev;\n\n if (curr.value === 'True')\n prev[ShareOptionKeyMapping[curr.option]] = true;\n else if (curr.value === 'False')\n prev[ShareOptionKeyMapping[curr.option]] = false;\n\n return prev;\n }, defaults);\n }\n\n};","// extracted by mini-css-extract-plugin\nexport default {\"thumbnailFallbackSvg\":\"D4JFs\",\"posterFallbackSvg\":\"bjUWl\",\"coverFallbackSvg\":\"kdLpt\",\"thumbnailContainer\":\"d3CKN\",\"insightsMask\":\"KM76U\",\"requireMarking\":\"peLH7\",\"badge\":\"mVu0E\",\"bar\":\"zO3MS\",\"a\":\"K1jW5\",\"expandBar\":\"YITJl\",\"b\":\"tCpLF\",\"c\":\"lC0cq\"};","import React from 'react';\n\nimport { Core } from 'libs/common/core';\n\nimport { LocationContext, UserAction } from 'libs/analytics/interfaces';\n\nimport { ShareViewHelper } from 'libs/shared/apps/share/views/share/ShareViewHelper';\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { BaseImage } from 'libs/shared/components/image/BaseImage';\nimport { ImageFallback, ImageFallbackType } from 'libs/shared/components/image/ImageFallback';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { CollectionThumbnail } from 'libs/shared/components/thumbnails/collection/CollectionThumbnail';\nimport { VideoThumbnail } from 'libs/shared/components/thumbnails/video/VideoThumbnail';\nimport { BG_COLOUR_CLASS_NAMES } from 'libs/shared/constants/ColourClassNames';\nimport { ImageSize, ImageType } from 'libs/shared/enums/Images';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { ThumbnailTextPosition } from 'libs/shared/enums/ThumbnailTextPosition';\nimport { BaseObject, Image, Playlist, Series } from 'libs/shared/interfaces';\nimport { getBgColorClass } from 'libs/shared/utils/getBgColorClass';\nimport { ImageHelper, ImageOptions } from 'libs/shared/utils/ImageHelper';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\nimport styles from './shared-object-image.scss';\n\nconst namespace = 'shared.sharedObjectImage';\n\nconst BASE_IMAGE_CLASS_NAME = 'rounded overflow-hidden';\n\ninterface ImageProps {\n image: Image;\n imageType: ImageType;\n imageClassName?: string;\n imageFallbackComponent: JSX.Element;\n}\n\nfunction getImageProps(object: BaseObject): ImageProps {\n const image = ImageHelper.getDisplayImageFromObject(object);\n\n if (VideoHelper.isVideoType(object))\n return {\n image,\n imageType: ImageType.Thumbnails,\n imageClassName: BASE_IMAGE_CLASS_NAME,\n imageFallbackComponent: <ImageFallback type={ImageFallbackType.Video} />\n };\n\n switch (object.typeId) {\n case MasterType.Series:\n return {\n image,\n imageType: ImageType.TallPosters,\n imageClassName: BASE_IMAGE_CLASS_NAME,\n imageFallbackComponent:\n <ImageFallback type={ImageFallbackType.Series} svgContainerClassName={styles.posterFallbackSvg} />\n };\n\n case MasterType.Playlist:\n return {\n image,\n imageType: ImageType.Covers,\n imageClassName: !image?.url\n ? `${BASE_IMAGE_CLASS_NAME} ${getBgColorClass(object.name, BG_COLOUR_CLASS_NAMES)}`\n : BASE_IMAGE_CLASS_NAME,\n imageFallbackComponent: (\n <ImageFallback\n type={ImageFallbackType.Playlist}\n svgContainerClassName={image?.url ? styles.coverFallbackSvg : 'd-none'}\n extraClasses={!image?.url && 'bg-transparent'}\n />\n )\n };\n }\n}\n\nfunction InsightsMask() {\n return (\n <div className={`d-flex pointer-events-none position-absolute bottom-0 start-0 h-100 w-100 z-1 justify-content-center align-items-center`}>\n <div className='position-absolute bg-dark bg-gradient opacity-50 w-100 h-100 z-0 rounded-3'></div>\n <div className='d-flex align-items-end gap-2 h-50 z-1'>\n <div className='d-flex align-items-end h-50'>\n <div className={`${styles.bar} ${styles.a} rounded shadow`}></div>\n </div>\n <div className='d-flex align-items-end h-75'>\n <div className={`${styles.bar} ${styles.b} rounded shadow`}></div>\n </div>\n <div className='d-flex align-items-end h-100'>\n <div className={`${styles.bar} ${styles.c} rounded shadow`}></div>\n </div>\n </div>\n </div>\n );\n}\n\nfunction getImageRatio(object: BaseObject): ImageFallbackType {\n if (VideoHelper.isVideoType(object))\n return 16 / 9;\n\n if (object.typeId === MasterType.Playlist)\n return 1;\n\n if (object.typeId === MasterType.Series)\n return 9 / 16;\n}\n\nSharedObjectImage.defaultProps = {\n imageOptions: { size: ImageSize.Small }\n};\n\ninterface SharedObjectImageProps {\n object: BaseObject;\n locationContext: LocationContext;\n appLink?: Core.AppLink;\n showVideoMetadata?: boolean;\n fixedHeight?: boolean;\n requireMarking?: number;\n imageOptions?: ImageOptions;\n showInsightsMask?: boolean;\n showCollectionMask?: boolean;\n showVideoCount?: boolean;\n}\n\nexport function SharedObjectImage(props: SharedObjectImageProps): JSX.Element {\n const ref = React.useCallback((el: HTMLDivElement) => {\n if (!el || !props.fixedHeight)\n return;\n\n el.style.width = `${el.offsetHeight * getImageRatio(props.object)}px`;\n }, []);\n\n const useVideoThumbnail = VideoHelper.isVideoType(props.object);\n\n const {\n image,\n imageType,\n imageClassName,\n imageFallbackComponent\n } = getImageProps(props.object);\n\n return (\n <div className='d-flex align-items-center justify-content-center w-100 h-100'>\n <div ref={ref} className={props.fixedHeight ? 'h-100' : 'w-100'}>\n {useVideoThumbnail &&\n <div className={`${styles.thumbnailContainer} position-relative`}>\n {props.showInsightsMask && <InsightsMask />}\n <AppLink appLink={props.appLink}>\n <VideoThumbnail\n video={props.object}\n imageOptions={props.imageOptions}\n textPosition={ThumbnailTextPosition.Independent}\n type='cosmetic'\n hideDuration\n hideMask\n />\n </AppLink>\n {!!props.requireMarking && (\n <div className={`${props.showInsightsMask && styles.requireMarking} position-absolute bottom-0 end-0 z-1 m-2`}>\n <div className={`${styles.badge} d-flex align-items-center bg-light-ultramarine text-ultramarine fw-semibold rounded-pill w-fit mt-1 px-2`}>\n <Text namespace={namespace} phrase='requireMarking' options={{ smartCount: props.requireMarking }} />\n </div>\n </div>\n )}\n </div>\n }\n {!useVideoThumbnail &&\n <>\n {'videos' in (props.object as Playlist | Series) ? (\n <CollectionThumbnail\n collection={props.object}\n imageOptions={props.imageOptions}\n appLink={props.appLink}\n analyticsData={{\n id: props.object.id,\n name: props.object.name\n }}\n analyticsOptions={{\n entity: ShareViewHelper.getAnalyticsEntity(props.object.type),\n actionType: UserAction.Click,\n location: props.locationContext\n }}\n showMask={props.showCollectionMask}\n showVideoCount={props.showVideoCount}\n />\n ) : (\n <BaseImage\n data={image?.url}\n imageType={imageType}\n imageOptions={props.imageOptions}\n appLink={props.appLink}\n className={imageClassName}\n analyticsData={{\n id: props.object.id,\n name: props.object.name\n }}\n analyticsOptions={{\n entity: ShareViewHelper.getAnalyticsEntity(props.object.type),\n actionType: UserAction.Click,\n location: props.locationContext\n }}\n >\n {imageFallbackComponent}\n </BaseImage>\n )}\n </>\n }\n </div>\n </div>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"thumbnailTitle\":\"OsWjL\"};","import React from 'react';\n\nimport { Core } from 'libs/common/core';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\n\nimport styles from './collection-thumbnail-title.scss';\n\ninterface BaseCollectionThumbnailTitleProps {\n title: string;\n}\n\nfunction BaseCollectionThumbnailTitle(props: BaseCollectionThumbnailTitleProps): JSX.Element {\n return (\n <h3 title={props.title} className='h6'>{props.title}</h3>\n );\n}\n\ninterface CollectionThumbnailTitleProps extends BaseCollectionThumbnailTitleProps {\n appLink: Core.AppLink;\n}\n\nexport function CollectionThumbnailTitle(props: CollectionThumbnailTitleProps) {\n if (!props.appLink) {\n return (\n <BaseCollectionThumbnailTitle {...props} />\n );\n }\n \n return (\n <AppLink appLink={props.appLink} className={`${styles.thumbnailTitle}`}>\n <BaseCollectionThumbnailTitle {...props} />\n </AppLink>\n );\n}\n","// extracted by mini-css-extract-plugin\nexport default {\"badge\":\"M4zat\",\"mask\":\"r0Ztg\",\"thumbnailContainer\":\"uD9dz\"};","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { HashObject } from 'libs/common/react/interfaces';\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\n\nimport { AnalyticsOptions, EntityType, UserAction } from 'libs/analytics/interfaces';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { CollectionThumbnailTitle } from 'libs/shared/components/thumbnails/collection/title/CollectionThumbnailTitle';\nimport { VideoThumbnail } from 'libs/shared/components/thumbnails/video/VideoThumbnail';\nimport { TitleSubText } from 'libs/shared/components/title-sub-text/TitleSubText';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { ThumbnailTextPosition } from 'libs/shared/enums/ThumbnailTextPosition';\nimport { Playlist, Series } from 'libs/shared/interfaces';\nimport { ImageOptions } from 'libs/shared/utils/ImageHelper';\nimport { MasterTypeHelper } from 'libs/shared/utils/MasterTypeHelper';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport styles from './collection-thumbnail.scss';\n\nconst namespace = 'shared.collectionThumbnail';\n\ntype SupportedContentType = Playlist | Series;\n\ninterface CollectionThumbnailProps {\n appLink?: Core.AppLink\n collection: SupportedContentType;\n imageOptions?: ImageOptions;\n analyticsData?: HashObject;\n analyticsOptions?: AnalyticsOptions;\n showMask?: boolean;\n showVideoCount?: boolean;\n title?: string;\n titleAppLink?: Core.AppLink;\n subText?: string;\n subTextAppLink?: Core.AppLink;\n hoverText?: string;\n}\n\nexport function CollectionThumbnail(props: CollectionThumbnailProps) {\n function getFirstVideo() {\n let collectionVideos = props.collection?.videos;\n\n if (!collectionVideos)\n return;\n\n if (!collectionVideos.count && props.collection.typeId === MasterType.Playlist) {\n const playlist = props.collection as Playlist;\n\n if (playlist.clips.count)\n collectionVideos = playlist.clips;\n\n if (playlist.interactives.count)\n collectionVideos = playlist.interactives;\n }\n\n return ArrayHelper.first(collectionVideos.data);\n }\n\n function getVideoCount() {\n let totalCount = 0;\n\n if (props.collection.videos && props.collection.videos.count) {\n totalCount += props.collection.videos.count;\n }\n\n if (props.collection.typeId === MasterType.Playlist) {\n const playlist = props.collection as Playlist;\n\n if (playlist.interactives?.count)\n totalCount += playlist.interactives.count;\n\n if (playlist.clips?.count)\n totalCount += playlist.clips.count;\n }\n\n return totalCount;\n }\n\n function getEntityType(collection: SupportedContentType) {\n if (MasterTypeHelper.isType<Playlist>(collection, MasterType.Playlist)) {\n return EntityType.Playlist;\n }\n\n if (MasterTypeHelper.isType<Series>(collection, MasterType.Series)) {\n return EntityType.Series;\n }\n }\n\n const firstVideo = getFirstVideo();\n const videoCount = getVideoCount();\n const showTexts = props.title?.length || props.subText?.length;\n\n const analyticsData = {\n id: props.collection.id.toString(),\n name: props.collection.name,\n\n ...props.analyticsData\n };\n\n const analyticsOptions = {\n actionType: UserAction.Click,\n entity: getEntityType(props.collection),\n \n ...props.analyticsOptions\n };\n\n return (\n <div>\n <div className={`position-relative ${styles.thumbnailContainer} z-1`}>\n <AppLink\n appLink={props.appLink}\n analyticsData={analyticsData}\n analyticsOptions={analyticsOptions}\n preventFocus\n >\n {props.showMask &&\n <div className={`${styles.mask} position-absolute w-100 h-100 rounded-3 bg-dark bg-gradient z-1 bg-opacity-50 pointer-events-none`}>\n <div className={`${styles.badge} d-flex align-items-center w-fit flex-grow-0 bg-dark rounded-pill ps-1 m-2`}>\n <SvgContainer svgName={cvSvgLibrary.Play} className='svg-container text-white' />\n <p className='d-inline fw-medium text-white mb-0'>\n {props.hoverText?.length ?\n <span>{props.hoverText}</span> :\n <Text namespace={namespace} phrase='playAll' />\n }\n </p>\n </div>\n </div>\n }\n\n {firstVideo &&\n <VideoThumbnail\n video={firstVideo}\n imageOptions={props.imageOptions}\n textPosition={ThumbnailTextPosition.Independent}\n type='cosmetic'\n hideMask\n hideRating\n hideDuration\n hideVideoTypeBadge\n />\n }\n\n {!firstVideo &&\n <div className='ratio ratio-16x9 bg-light rounded-3'>\n <div className='d-flex justify-content-center align-items-center'>\n <SvgContainer svgName={cvSvgLibrary.Play} className='w-33 opacity-25 text-gray-400' />\n </div>\n </div>\n }\n\n {props.showVideoCount &&\n <div className={`${styles.badge} d-flex align-items-center w-fit bg-dark bg-opacity-75 rounded-pill position-absolute bottom-0 end-0 ps-1 m-2`}>\n <SvgContainer svgName={cvSvgLibrary.Series} className='svg-container text-white me-1' />\n <p className='d-inline fw-semibold text-white mb-0'>\n <Text namespace={namespace} phrase='videos' options={{ count: videoCount, smartCount: videoCount }} />\n </p>\n </div>\n }\n </AppLink>\n\n </div>\n \n {showTexts &&\n <div className='mt-2 d-flex flex-column'>\n {props.subText &&\n <TitleSubText title={props.subText} appLink={props.subTextAppLink}>\n {props.subText}\n </TitleSubText>\n }\n {props.title &&\n <CollectionThumbnailTitle\n title={props.collection.name}\n appLink={props.titleAppLink}\n />\n }\n </div>\n }\n </div>\n );\n}","export enum IntegrationId {\n GoogleClassroom = 'google-classroom',\n MicrosoftTeams = 'microsoft-teams',\n Vivi = 'vivi',\n AppleTv = 'apply-tv'\n}","import { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { IntegrationId } from 'libs/shared/enums/IntegrationId';\nimport { SettingName } from 'libs/shared/enums/SettingName';\nimport { Integration } from 'libs/shared/interfaces';\n\nconst namespace = 'shared.shared-utils';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nexport const IntegrationHelper = {\n getShareIntegrations(googleClassroomSetting: boolean, msftTeamsSetting: boolean): Integration[] {\n return [\n {\n id: IntegrationId.GoogleClassroom,\n name: getPhrase('googleClassroom'),\n enabled: googleClassroomSetting,\n settingName: SettingName.ShareToGoogleClassroom\n },\n {\n id: IntegrationId.MicrosoftTeams,\n name: getPhrase('msftTeams'),\n enabled: msftTeamsSetting,\n settingName: SettingName.ShareToMicrosoftTeams\n }\n ];\n }\n};\n","import React from 'react';\n\nimport { ToggleSwitch } from 'libs/shared/components/toggle-switch/ToggleSwitch';\n\ninterface SectionSettingToggleItemProps {\n title: string;\n description: string;\n toggled: boolean;\n onClick: () => void;\n}\n\nexport function SectionSettingToggleItem(props: SectionSettingToggleItemProps): JSX.Element {\n return (\n <div className='d-flex justify-content-between align-items-start'>\n <div>\n <label className='m-0' htmlFor=''>{props.title}</label>\n <p className='m-0 text-secondary'>{props.description}</p>\n </div>\n <div>\n <ToggleSwitch\n onClick={props.onClick}\n on={props.toggled}\n />\n </div>\n </div>\n );\n}\n","export enum SharePrivacy {\n Public = 'Public',\n PinCode = 'PinCode',\n PasswordProtected = 'PasswordProtected',\n ProtectedOverrideRestriction = 'ProtectedOverrideRestriction',\n JustMySchoolOverrideRestriction = 'JustMySchoolOverrideRestriction',\n Protected = 'Protected',\n JustMySchool = 'JustMySchool',\n Direct = 'Direct'\n}","export enum ShareType {\n Link = 'Link',\n Classroom = 'Classroom',\n Open = 'Open',\n Live = 'Live'\n}","import { HttpVerbs } from 'libs/common/backbone/enums/HttpVerbs';\nimport { UrlHelper } from 'libs/common/backbone/utils/UrlHelper';\nimport { Flight } from 'libs/common/flight';\n\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { BasePaginatedCollection } from 'libs/shared/interfaces';\n\nimport { CreateShareLinkRequest } from 'apps/share-v2/interfaces/CreateShareLinkRequest';\nimport { ShareLink } from 'apps/share-v2/interfaces/ShareLink';\n\nconst normalizeOptions: Flight.NormalizeOptions = {\n namespace: 'share-v2'\n};\n\nexport interface GetSentSharesParams {\n cursor?: string;\n limit?: number;\n objectTypeId?: MasterType | MasterType[];\n recipientUserId?: string | string[];\n recipientGroupId?: string | string[];\n start?: string;\n end?: string;\n scopeId?: string;\n}\n\nexport const ShareRequests = {\n createShareLink(\n data: CreateShareLinkRequest,\n success?: (shareLink: ShareLink) => void,\n error?: () => void,\n always?: () => void\n ): Flight.Request {\n return {\n url: '/api/share/v2/shares',\n key: 'create:share-v2:link',\n type: HttpVerbs.POST,\n data,\n normalizeOptions,\n invalidationKeys: [\n `share:link:object:${data.objectId}`,\n `privacy:${data.objectId}`,\n 'sent:shares',\n 'get:share-v2:shares:object'\n ],\n success,\n error,\n always\n };\n },\n\n getShareLink(\n shareId: string,\n success?: (shareLink: ShareLink) => void,\n error?: () => void,\n always?: () => void\n ): Flight.Request {\n return {\n url: `/api/share/v2/shares/${shareId}`,\n key: `get:share-v2:link:${shareId}`,\n type: HttpVerbs.GET,\n normalizeOptions,\n success,\n error,\n always\n };\n },\n\n getSharesByObjectId(\n objectId: string | number,\n success?: (shares: ShareLink[]) => void,\n error?: () => void,\n always?: () => void\n ): Flight.Request {\n return {\n url: `/api/share/v2/shares/objects/${objectId}`,\n key: `get:share-v2:shares:object:${objectId}`,\n type: HttpVerbs.GET,\n normalizeOptions,\n success,\n error,\n always\n };\n },\n\n getSentShares(\n params: GetSentSharesParams = {},\n success?: (response: BasePaginatedCollection<ShareLink>[]) => void,\n error?: () => void,\n always?: () => void\n ): Flight.Request {\n const adaptedParams = {\n scopeId: params.scopeId,\n limit: params.limit || 25,\n offset: parseInt(params.cursor) || 0\n };\n\n const key = Object.values(adaptedParams).join(':');\n\n return {\n url: UrlHelper.urlBuilder('/api/share/v2/shares/sent', adaptedParams),\n key: `sent:shares-v2:${key}`,\n formatData: (response: ShareLink[]) => {\n return {\n data: response,\n count: response.length,\n pagination: {\n cursors: {\n next: adaptedParams.offset + response.length\n }\n }\n };\n },\n type: HttpVerbs.GET,\n normalize: false,\n success,\n error,\n always\n };\n },\n\n createPincode(shareId: string): Flight.Request {\n return {\n url: `/api/share/v2/shares/${shareId}/pincode`,\n key: 'create:share-v2:pincode',\n type: HttpVerbs.POST\n };\n },\n\n getPincode(code: string): Flight.Request {\n return {\n url: `/api/share/v2/shares/pincode?code=${code}`,\n key: `get:share-v2:pincode:${code}`\n };\n },\n\n getPincodeByShareId(shareId: string): Flight.Request {\n return {\n url: `/api/share/v2/shares/${shareId}/pincode`,\n key: `get:share-v2:${shareId}:pincode`\n };\n }\n};","import { Flight } from 'libs/common/react/index';\n\nimport { ShareRequests as ShareRequestsV1 } from 'libs/shared/apps/share/flight-requests/ShareRequests';\nimport { SharePrivacyResponse } from 'libs/shared/apps/share/interfaces/responses/SharePrivacyResponse';\n\nimport { SharePrivacy } from 'apps/share-v2/enums/SharePrivacy';\nimport { ShareType } from 'apps/share-v2/enums/ShareType';\nimport { ShareRequests as ShareRequestsV2 } from 'apps/share-v2/flight-requests/ShareRequests';\nimport { ShareLink } from 'apps/share-v2/interfaces/ShareLink';\n\ninterface CreateShareLinkOptions {\n objectId: string;\n privacy: SharePrivacy;\n preventSkipping: boolean;\n instantFeedback: boolean;\n}\n\ninterface CreateDirectShareOptions {\n objectId: string;\n preventShipping: boolean;\n instantFeedback: boolean;\n requireSignIn: boolean;\n message?: string;\n recipients: string[];\n scopeId: string | number;\n}\n\ninterface CreateOpenSessionOptions {\n objectId: string;\n preventSkipping: boolean;\n instantFeedback: boolean;\n requireSignIn: boolean;\n respectRatingsAndRestrictions: boolean;\n}\n\nexport function useCreateShare(objectId: string) {\n const accessPermissions = Flight.useBasicFetch<SharePrivacyResponse>(ShareRequestsV1.getPrivacy(objectId));\n const fetchAsync = Flight.useGetFetchAsync();\n const canManageAccess = accessPermissions.data?.canManageAccess;\n\n async function createShareLink(options: CreateShareLinkOptions) {\n if (!accessPermissions.data) return;\n\n const shareLink = await fetchAsync<ShareLink>(ShareRequestsV2.createShareLink({\n objectId: options.objectId,\n type: ShareType.Link,\n privacy: options.privacy,\n optionRequest: {\n preventSkipping: options.preventSkipping,\n instantFeedback: options.instantFeedback\n }\n }));\n\n return shareLink;\n }\n\n async function createDirectShare(options: CreateDirectShareOptions) {\n if (!accessPermissions.data) return;\n\n const privacy = options.requireSignIn ? SharePrivacy.Direct : SharePrivacy.PinCode;\n\n const shareLink = await fetchAsync<ShareLink>(ShareRequestsV2.createShareLink({\n objectId: options.objectId,\n type: ShareType.Classroom,\n privacy,\n optionRequest: {\n preventSkipping: options.preventShipping,\n instantFeedback: options.instantFeedback\n },\n recipientRequest: options\n .recipients\n .map(recipientId => ({ recipientId, message: options.message, scopeId: options.scopeId }))\n }));\n\n if (privacy === SharePrivacy.PinCode)\n await fetchAsync(ShareRequestsV2.createPincode(shareLink.shareId));\n\n return shareLink;\n }\n\n async function createOpenSession(options: CreateOpenSessionOptions) {\n if (!accessPermissions.data) return;\n\n let privacy = SharePrivacy.PinCode;\n\n if (options.requireSignIn) {\n if (options.respectRatingsAndRestrictions) {\n privacy = canManageAccess ? SharePrivacy.JustMySchool : SharePrivacy.Protected;\n } else {\n privacy = canManageAccess\n ? SharePrivacy.JustMySchoolOverrideRestriction\n : SharePrivacy.ProtectedOverrideRestriction;\n }\n }\n\n const shareLink = await fetchAsync<ShareLink>(ShareRequestsV2.createShareLink({\n objectId: options.objectId,\n type: ShareType.Open,\n privacy,\n optionRequest: {\n preventSkipping: options.preventSkipping,\n instantFeedback: options.instantFeedback\n }\n }));\n\n if (privacy === SharePrivacy.PinCode)\n await fetchAsync(ShareRequestsV2.createPincode(shareLink.shareId));\n\n return shareLink;\n }\n\n return {\n createShareLink,\n createDirectShare,\n createOpenSession,\n canManageAccess,\n hasCompleted: accessPermissions.hasCompleted\n };\n}","import { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\n\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { Classroom } from 'libs/shared/interfaces';\n\nimport { ShareLink, ShareRecipient } from '../interfaces/ShareLink';\n\nexport const ShareHelper = {\n getFlattenedRecipients(shares: ShareLink[]): ShareRecipient[] {\n return ArrayHelper.flatten(shares.map(s => s.recipients ?? []));\n },\n\n getClassoomIds(shares: ShareLink[]): string[] {\n const recipients = ShareHelper.getFlattenedRecipients(shares);\n\n const classroomIds = recipients.map(r => {\n if (r.scopeId)\n return r.scopeId.toString();\n\n if (r.recipientId && r.recipientTypeId === MasterType.Classroom)\n return r.recipientId.toString();\n });\n\n return ArrayHelper.uniq(classroomIds.filter(x => !!x));\n },\n\n getClassroomIdFromShare(share: ShareLink): string | undefined {\n const firstRecipient = share.recipients?.[0];\n \n if (!firstRecipient) return;\n \n if (firstRecipient.scopeId)\n return firstRecipient.scopeId.toString();\n \n if (firstRecipient.recipientId && firstRecipient.recipientTypeId === MasterType.Classroom)\n return firstRecipient.recipientId.toString();\n },\n \n getClassroomForShare(share: ShareLink, classrooms: Classroom[]): Classroom | undefined {\n const classroomId = ShareHelper.getClassroomIdFromShare(share);\n \n if (!classroomId) return;\n \n return classrooms.find(classroom => classroom.id.toString() === classroomId.toString());\n }\n};","// extracted by mini-css-extract-plugin\nexport default {\"optionImage\":\"_uLZl\"};","import React from 'react';\n\nimport { DivButton } from 'libs/shared/components/div-button/DivButton';\n\nimport styles from './flow-selector-options.scss';\n\nexport interface FlowSelectorOption {\n id: string;\n image: string;\n title: string;\n description: string;\n}\n\ninterface FlowSelectorOptionsProps {\n options: [FlowSelectorOption, FlowSelectorOption];\n onClick: (option: FlowSelectorOption) => void;\n}\n\nexport function FlowSelectorOptions(props: FlowSelectorOptionsProps): JSX.Element {\n return (\n <div className='bg-white rounded-bottom-3 p-3'>\n <div className='d-flex justify-content-center align-items-center gap-3'>\n {props.options.map(option => (\n <DivButton onClick={() => props.onClick(option)} className='text-center cursor-pointer p-3 border rounded-3 user-select-none w-50' key={option.id}>\n <img src={option.image} className={`img-fluid my-3 w-75 ${styles.optionImage}`} draggable={false} />\n <h2 className='h3'>{option.title}</h2>\n <p className='mb-0'>{option.description}</p>\n </DivButton>\n ))}\n </div>\n </div>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"previousSharesList\":\"LZvYG\",\"previousSharesListItem\":\"LEwrl\"};","import React from 'react';\nimport { format as formatDate } from 'timeago.js';\n\nimport { LocationContext } from 'libs/analytics/interfaces';\n\nimport { SharedObjectImage } from 'libs/shared/apps/share/components/shared-object-image/SharedObjectImage';\nimport { SharableEntity } from 'libs/shared/apps/share-v2/utils/ShareViewHelper';\nimport { DivButton } from 'libs/shared/components/div-button/DivButton';\nimport { IconCircle } from 'libs/shared/components/icon-circle/IconCircle';\nimport { SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\nimport { ImageSize } from 'libs/shared/enums/Images';\nimport { Classroom } from 'libs/shared/interfaces';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport { ShareLink } from 'apps/share-v2/interfaces/ShareLink';\nimport { ShareHelper } from 'apps/share-v2/utils/ShareHelper';\n\nimport styles from './previous-shares.scss';\n\ninterface PreviousSharesProps {\n data: {\n shares: ShareLink[]\n classrooms: Classroom[];\n entity: SharableEntity;\n };\n onClick: (item: ShareLink) => void;\n}\n\nexport function PreviousShares(props: PreviousSharesProps) {\n return (\n <div className={`d-flex flex-column mt-3 border rounded overflow-hidden ${styles.previousSharesList}`}>\n {props.data.shares.reverse().map(share => {\n return (\n <DivButton\n key={share.shareId}\n onClick={props.onClick}\n className={`p-3 ${styles.previousSharesListItem}`}\n >\n <div className='row'>\n <div className='col-1'>\n <SharedObjectImage\n locationContext={LocationContext.PlayPage}\n object={props.data.entity}\n imageOptions={{ size: ImageSize.Small }}\n />\n </div>\n <div className='col-3 d-flex align-items-center'>\n <span className='clamp-2 align-self-center'>\n {props.data.entity.name}\n </span>\n </div>\n <div className='col-3 d-flex align-items-center'>\n <div className='d-flex flex-row gap-1 align-items-center'>\n <div>\n <IconCircle\n variant='teal'\n textVariant='white'\n svgName={cvSvgLibrary.Classrooms}\n svgSize={SvgContainerSize.Standard}\n />\n </div>\n <span>\n {ShareHelper.getClassroomForShare(share, props.data.classrooms)?.name ?? 'Unknown'}\n </span>\n </div>\n </div>\n <p className='mb-0 col-2 d-flex align-items-center'>{share.viewCount || 0} views</p>\n <p className='mb-0 col-2 d-flex align-items-center'>{formatDate(share.dateCreated)}</p>\n <div className='col-1 d-flex align-items-center'>\n <a onClick={() => props.onClick(share)} className='cursor-pointer text-info'>View</a>\n </div>\n </div>\n </DivButton>\n );\n })}\n </div>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"searchInput\":\"udDMG\"};","import React from 'react';\nimport { Form } from 'react-bootstrap';\n\nimport { IconCircle } from 'libs/shared/components/icon-circle/IconCircle';\nimport { SvgContainer, SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\nimport { Classroom } from 'libs/shared/interfaces';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport { ImageUrls } from 'shared/constants/ImageUrls';\n\nimport styles from './classroom-selector.scss';\n\ninterface ClassroomSelectorProps {\n classrooms: Classroom[];\n selectedClassroom?: Classroom;\n className?: string;\n onClassroomSelected: (classroom: Classroom | undefined) => void;\n onSelectGroupsOrStudents: () => void;\n onClickCreateOpenClassroom: () => void;\n}\n\ninterface ClassroomSelectorListProps {\n searchQuery: string;\n classrooms: Classroom[];\n selectedClassroom?: Classroom;\n onSelectGroupsOrStudents: () => void;\n onClassroomSelected: (classroom: Classroom) => void;\n onClickCreateOpenClassroom: () => void;\n}\n\nfunction ClassroomSelectorList(props: ClassroomSelectorListProps): JSX.Element {\n if (!props.classrooms.length) {\n return (\n <div className='d-flex flex-column gap-2 justify-content-center align-items-center'>\n <img src={ImageUrls.EmptyStates.Search.RESULTS} width='30%' alt='No results found' />\n <h4 className='h6 m-0'>No results found for \"{props.searchQuery}\"</h4>\n <p className='mb-0'>\n Contact your school administrator to assign you to a classroom or <a className='p-0 text-info cursor-pointer' onClick={props.onClickCreateOpenClassroom} >create an Open classroom.</a>\n </p>\n </div>\n );\n }\n \n return (\n <div className='d-flex flex-column gap-2'>\n <h3 className='h6 m-0'>My Classrooms</h3>\n <div>\n {props.classrooms.map(classroom => (\n <div className='d-flex align-items-center' key={classroom.id} onClick={() => props.onClassroomSelected(classroom)}>\n <div className={`d-flex align-items-center bg-light-hover px-2 py-1 w-100 rounded gap-2 cursor-pointer justify-content-between`}>\n <div className='w-100 d-flex align-items-center gap-2'>\n <Form.Check\n type='radio'\n name='classroom-radio'\n id='classroom-radio'\n value={classroom.id}\n onChange={() => props.onClassroomSelected(classroom)}\n checked={classroom.id === props.selectedClassroom?.id}\n />\n <div className='d-flex align-items-center gap-2'>\n <div>\n <IconCircle\n svgName={cvSvgLibrary.Classrooms}\n svgSize={SvgContainerSize.Standard}\n variant='teal'\n textVariant='white'\n svgWrapperClassName='p-1'\n />\n </div>\n <div className='w-100'>\n <label className='m-0'>{classroom?.name}</label>\n <p className='m-0 text-muted font-size-sm'>30 students</p>\n </div>\n </div>\n </div>\n {props.selectedClassroom?.id === classroom.id && (\n <div className='d-flex align-items-center justify-content-end w-100'>\n <a\n className='cursor-pointer text-info'\n onClick={props.onSelectGroupsOrStudents}\n >\n Select specific groups or students\n </a>\n </div>\n )}\n </div>\n </div>\n ))}\n </div>\n </div>\n );\n}\n\nexport function ClassroomSelector(props: ClassroomSelectorProps): JSX.Element {\n const [ search, setSearch ] = React.useState('');\n const filteredClassrooms = search\n ? props.classrooms.filter(x => x.name.toLowerCase().includes(search.toLowerCase()))\n : props.classrooms;\n\n return (\n <div className={`d-flex flex-column gap-3 ${props.className} mb-3`}>\n <div className='position-relative'>\n <div className={`position-absolute top-50 start-0 translate-middle-y p-1`}>\n <SvgContainer svgName={cvSvgLibrary.Search} size={SvgContainerSize.Standard} />\n </div>\n <input\n type='text'\n placeholder='Search for a classroom you teach'\n value={search}\n onChange={e => setSearch(e.target.value)}\n className={`form-control pe-1 py-2 border-dark ${styles.searchInput}`}\n />\n </div>\n\n <ClassroomSelectorList\n searchQuery={search}\n classrooms={filteredClassrooms}\n selectedClassroom={props.selectedClassroom}\n onSelectGroupsOrStudents={props.onSelectGroupsOrStudents}\n onClassroomSelected={props.onClassroomSelected}\n onClickCreateOpenClassroom={props.onClickCreateOpenClassroom}\n />\n \n </div>\n );\n}","import React from 'react';\n\nimport { IconCircle } from 'libs/shared/components/icon-circle/IconCircle';\nimport { SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\nimport { Classroom } from 'libs/shared/interfaces';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport { SectionSettingToggleItem } from './section-setting-toggle-item/SectionSettingToggleItem';\n\ninterface ClassroomSettingsSectionedProps {\n requireSignIn: boolean;\n preventSkippingAhead: boolean;\n enableInstantFeedback: boolean;\n className?: string;\n selectedClassroom: Classroom;\n message?: string;\n onToggleRequireSignIn: () => void;\n onTogglePreventSkippingAhead: () => void;\n onToggleEnableInstantFeedback: () => void;\n onChangeClassroom: () => void;\n onChangeMessage: (message: string) => void;\n}\n\nexport function ClassroomSettingsSectioned({\n requireSignIn,\n preventSkippingAhead,\n enableInstantFeedback,\n className,\n selectedClassroom,\n message,\n onToggleRequireSignIn,\n onTogglePreventSkippingAhead,\n onToggleEnableInstantFeedback,\n onChangeClassroom,\n onChangeMessage\n}: ClassroomSettingsSectionedProps): JSX.Element {\n return (\n <div className={`d-flex flex-column gap-4 ${className}`}>\n <div className={`d-flex align-items-center w-100 rounded gap-2 justify-content-between`}>\n <div className='d-flex align-items-center gap-2 w-100'>\n <div>\n <IconCircle\n svgName={cvSvgLibrary.Classrooms}\n svgSize={SvgContainerSize.Standard}\n variant='teal'\n textVariant='white'\n svgWrapperClassName='p-1'\n />\n </div>\n <div className='w-100'>\n <label className='m-0'>{selectedClassroom.name}</label>\n <p className='m-0 text-muted font-size-sm'>30 students</p>\n </div>\n </div>\n <div className='d-flex align-items-center justify-content-end w-100'>\n <a\n className='cursor-pointer text-info'\n onClick={onChangeClassroom}\n >\n Change classroom\n </a>\n </div>\n </div>\n\n <div className='d-flex flex-column gap-2'>\n <h4 className='h6 m-0'>Access</h4>\n <div className='d-flex flex-column gap-3'>\n <SectionSettingToggleItem\n title='Classroom students select their name when accessing video'\n description='Collect student data without the fuss of signing in.'\n toggled={!requireSignIn}\n onClick={onToggleRequireSignIn}\n />\n </div>\n </div>\n\n <div className='d-flex flex-column gap-2'>\n <h4 className='h6 m-0'>Settings</h4>\n <div className='d-flex flex-column gap-3'>\n <SectionSettingToggleItem\n title='Prevent skipping ahead'\n description='Students cannot skip ahead to parts of the video they have not watched'\n toggled={preventSkippingAhead}\n onClick={onTogglePreventSkippingAhead}\n />\n </div>\n <div className='d-flex flex-column gap-3'>\n <SectionSettingToggleItem\n title='Enable instant feedback'\n description='Allow students to see feedback on their answers before continuing'\n toggled={enableInstantFeedback}\n onClick={onToggleEnableInstantFeedback}\n />\n </div>\n </div>\n\n <div>\n <label>Add a message (optional)</label>\n <br />\n <textarea className='form-control' placeholder='Type a message...' value={message} onChange={e => onChangeMessage(e.target.value)} />\n </div>\n </div>\n );\n}","import React from 'react';\n\nimport { AppLinkHelper } from 'libs/common/backbone/core';\nimport { Flight } from 'libs/common/flight';\n\nimport { Popup } from 'libs/shared/components/popup/Popup';\nimport { PopupButtons } from 'libs/shared/components/popup/PopupButtons';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { Classroom, CurrentUser } from 'libs/shared/interfaces';\nimport { PopupViewProps } from 'libs/shared/interfaces';\nimport { BasePaginatedCollection } from 'libs/shared/interfaces';\n\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\n\nimport { ClassroomRequests } from 'apps/classrooms/flight-requests/ClassroomRequests';\nimport { ClassroomSelector } from 'apps/share-v2/components/classroom-selector/ClassroomSelector';\nimport { ClassroomSettingsSectioned } from 'apps/share-v2/components/ClassroomSettingsSectioned';\nimport { useCreateShare } from 'apps/share-v2/hooks/useCreateShare';\n\ninterface ClassroomFlowViewProps extends PopupViewProps {\n objectId: string;\n entityType: 'video' | 'clip' | 'interactive' | 'series' | 'playlist';\n}\n\nexport function ClassroomFlowView(props: ClassroomFlowViewProps): JSX.Element {\n const [ step, setStep ] = React.useState<'select-classroom' | 'narrow-selection' | 'settings'>('select-classroom');\n \n const { createDirectShare } = useCreateShare(props.objectId);\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n const classrooms = Flight.useBasicFetch<BasePaginatedCollection<Classroom>>(\n currentUser.data && ClassroomRequests.getPublished(currentUser.data.id)\n );\n\n const [ selectedClassroom, setSelectedClassroom ] = React.useState<Classroom>();\n const [ preventSkippingAhead, setPreventSkippingAhead ] = React.useState(false);\n const [ enableInstantFeedback, setEnableInstantFeedback ] = React.useState(false);\n const [ requireSignIn, setRequireSignIn ] = React.useState(true);\n const [ message, setMessage ] = React.useState('');\n const [ working, setWorking ] = React.useState(false);\n\n function onSelectGroupsOrStudents() {\n console.log('Selecting groups or students..');\n setStep('narrow-selection');\n }\n\n function onCreateNewClassroom() {\n console.log('Creating a new classroom..');\n }\n\n function onBack() {\n if (step === 'select-classroom') {\n props.closePopup();\n return;\n }\n\n if ([ 'narrow-selection', 'settings' ].includes(step)) {\n setStep('select-classroom');\n return;\n }\n }\n\n function onClickNext() {\n if (!selectedClassroom)\n return;\n\n if ([ 'select-classroom', 'narrow-selection' ].includes(step)) {\n setStep('settings');\n return;\n }\n\n if (step === 'settings') {\n onShare();\n return;\n }\n }\n\n function onClickCreateOpenClassroom() {\n AppLinkHelper.trigger({\n application: AppChannels.SHARE_V2,\n action: Actions.ShareV2.OPEN_CLASSROOM,\n args: [props.objectId],\n params: {\n objectId: props.objectId,\n entityType: props.entityType\n }\n });\n }\n\n async function onShare() {\n if (!selectedClassroom) return;\n\n setWorking(true);\n\n const shareLink = await createDirectShare({\n objectId: props.objectId,\n preventShipping: preventSkippingAhead,\n instantFeedback: enableInstantFeedback,\n requireSignIn,\n message,\n recipients: [selectedClassroom?.id],\n scopeId: selectedClassroom?.id\n });\n\n const actions = {\n video: Actions.Insights.VIDEO_SHARE_OPTIONS,\n clip: Actions.Insights.CLIP_SHARE_OPTIONS,\n interactive: Actions.Insights.INTERACTIVE_SHARE_OPTIONS,\n series: Actions.Insights.SERIES_SHARE_OPTIONS,\n playlist: Actions.Insights.PLAYLIST_SHARE_OPTIONS\n };\n\n AppLinkHelper.trigger({\n application: AppChannels.INSIGHTS,\n action: actions[props.entityType],\n args: [props.objectId],\n params: {\n shareId: shareLink.shareId\n }\n });\n\n setWorking(false);\n }\n\n const dataLoaded = (\n !! currentUser.data &&\n !! classrooms.data\n );\n\n return (\n <Popup\n title={'Assign to ClickView classroom'}\n showLoadingSpinner={!dataLoaded}\n size='lg'\n bodyClassName='d-flex flex-column gap-3'\n {...props}\n >\n {(() => {\n if (!dataLoaded) return null;\n \n switch (step) {\n case 'select-classroom':\n return (\n <ClassroomSelector\n classrooms={classrooms.data?.data ?? []}\n selectedClassroom={selectedClassroom}\n onClassroomSelected={setSelectedClassroom}\n onSelectGroupsOrStudents={onSelectGroupsOrStudents}\n onClickCreateOpenClassroom={onClickCreateOpenClassroom}\n />\n );\n case 'narrow-selection':\n return <>Narrow selection</>;\n case 'settings':\n return (\n <ClassroomSettingsSectioned\n selectedClassroom={selectedClassroom}\n requireSignIn={requireSignIn}\n enableInstantFeedback={enableInstantFeedback}\n preventSkippingAhead={preventSkippingAhead}\n message={message}\n onToggleRequireSignIn={() => setRequireSignIn(!requireSignIn)}\n onTogglePreventSkippingAhead={() => setPreventSkippingAhead(!preventSkippingAhead)}\n onToggleEnableInstantFeedback={() => setEnableInstantFeedback(!enableInstantFeedback)}\n onChangeClassroom={() => setStep('select-classroom')}\n onChangeMessage={setMessage}\n />\n );\n }\n })()}\n \n <PopupButtons className={step === 'settings' ? 'justify-content-end' : 'justify-content-between'}>\n {step !== 'settings' &&\n <PopupButtons.Submit variant='link' onClick={onCreateNewClassroom} text='Create a new classroom' className='text-info p-0' />\n }\n <div>\n <PopupButtons.Cancel variant='link' onClick={onBack} text='Back' />\n <PopupButtons.Submit variant='dark' onClick={onClickNext} text={step === 'settings' ? 'Assign' : 'Next'} disabled={!selectedClassroom} showSpinner={working} />\n </div>\n </PopupButtons>\n </Popup>\n );\n}\n","import React from 'react';\n\nimport { AppLinkHelper } from 'libs/common/backbone/core';\nimport { Flight } from 'libs/common/react/index';\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\n\nimport { ShareViewHelper } from 'libs/shared/apps/share-v2/utils/ShareViewHelper';\nimport { IconButton } from 'libs/shared/components/icon-button/IconButton';\nimport { Popup } from 'libs/shared/components/popup/Popup';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { Classroom, CurrentUser, PopupViewProps } from 'libs/shared/interfaces';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport { ImageUrls } from 'shared/constants/ImageUrls';\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\n\nimport { ClassroomRequests } from 'apps/classrooms/flight-requests/ClassroomRequests';\n\nimport { ShareType } from '../enums/ShareType';\nimport { ShareRequests } from '../flight-requests/ShareRequests';\nimport { ShareLink } from '../interfaces/ShareLink';\nimport { ShareHelper } from '../utils/ShareHelper';\n\nimport { FlowSelectorOption, FlowSelectorOptions } from './components/flow-selector-options/FlowSelectorOptions';\nimport { PreviousShares } from './components/flow-selector-options/previous-shares/PreviousShares';\nimport { ClassroomFlowView } from './ClassroomFlowView';\nimport { SessionFlowView } from './SessionFlowView';\n\ninterface FlowSelectorViewProps extends PopupViewProps {\n objectId: string;\n entityType: 'video' | 'clip' | 'interactive' | 'series' | 'playlist';\n}\n\nexport function FlowSelectorView(props: FlowSelectorViewProps): JSX.Element {\n const [ selectedFlow, setSelectedFlow ] = React.useState('');\n const [ showPreviousAssignments, setShowPreviousAssignments ] = React.useState(true);\n\n const previousShares = Flight.useBasicFetch<ShareLink[]>(ShareRequests.getSharesByObjectId(props.objectId));\n const previousClassroomShares = previousShares.data?.filter(share => share.type === ShareType.Classroom) || [];\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n const entity = ShareViewHelper.getFetchFunctionByType(props.entityType)(props.objectId, currentUser.data?.id);\n\n const classroomIds = ArrayHelper.uniq(\n previousClassroomShares\n .map(ShareHelper.getClassroomIdFromShare)\n .filter(x => !!x)\n );\n const classrooms = Flight.useBasicFetch<Classroom[]>(\n previousShares.hasCompleted && ClassroomRequests.getClassroomsByIds(classroomIds)\n );\n\n if (selectedFlow === 'classroom') {\n return <ClassroomFlowView {...props} closePopup={() => setSelectedFlow('')} />;\n }\n\n if (selectedFlow === 'session') {\n return <SessionFlowView {...props} closePopup={() => setSelectedFlow('')} />;\n }\n\n function onViewReport(share: ShareLink) {\n const actions = {\n video: Actions.Insights.VIDEO_SHARE_OPTIONS,\n clip: Actions.Insights.CLIP_SHARE_OPTIONS,\n interactive: Actions.Insights.INTERACTIVE_SHARE_OPTIONS,\n series: Actions.Insights.SERIES_SHARE_OPTIONS,\n playlist: Actions.Insights.PLAYLIST_SHARE_OPTIONS\n };\n\n AppLinkHelper.trigger({\n application: AppChannels.INSIGHTS,\n action: actions[props.entityType],\n args: [props.objectId],\n params: {\n shareId: share.shareId\n }\n });\n }\n\n const choices: [FlowSelectorOption, FlowSelectorOption] = [{\n id: 'classroom',\n title: 'ClickView classroom',\n description: 'Only students from your chosen classroom can view the video.',\n image: ImageUrls.Share.CLASSROOM_SHARE\n }, {\n id: 'session',\n title: 'Open classroom',\n description: 'Allow any students who have the PIN, QR code or link to access the video for 30 days.',\n image: ImageUrls.Share.OPEN_CLASSROOM\n }];\n\n const dataLoaded = (\n !! currentUser.data &&\n !! entity.data &&\n !! previousShares.data &&\n !! classrooms.data\n );\n\n return (\n <Popup\n size='lg'\n title='Assign'\n showLoadingSpinner={!dataLoaded}\n closePopup={props.closePopup}\n contentClassName={dataLoaded ? 'bg-transparent border-0' : ''}\n bodyClassName='p-0 d-flex flex-column gap-3'\n\n >\n {(() => {\n if (!dataLoaded)\n return null;\n\n return (\n <>\n <FlowSelectorOptions\n options={choices}\n onClick={option => setSelectedFlow(option.id)}\n />\n \n {previousClassroomShares.length ? (\n <div className='bg-white rounded-3 p-3'>\n <div className='d-flex align-items-center justify-content-between'>\n <h3 className='h6 m-0 p-0'>Previous assignments ({previousClassroomShares.length})</h3>\n <IconButton\n svgName={showPreviousAssignments ? cvSvgLibrary.ChevronUp : cvSvgLibrary.ChevronDown}\n onClick={() => setShowPreviousAssignments(!showPreviousAssignments)}\n />\n </div>\n {showPreviousAssignments && (\n <PreviousShares\n data={{\n shares: previousClassroomShares,\n classrooms: classrooms.data,\n entity: entity.data\n }}\n onClick={onViewReport}\n />\n )}\n </div>\n ) : null}\n </>\n );\n })()}\n </Popup>\n );\n}","import React from 'react';\n\nimport { IconCircle } from 'libs/shared/components/icon-circle/IconCircle';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport { SectionSettingToggleItem } from './section-setting-toggle-item/SectionSettingToggleItem';\n\ninterface SessionSettingsSectionedProps {\n requireSignIn: boolean;\n respectRatingsAndRestrictions: boolean;\n preventSkippingAhead: boolean;\n enableInstantFeedback: boolean;\n className?: string;\n message?: string;\n onToggleRequireSignIn: () => void;\n onToggleRespectRatingsAndRestrictions: () => void;\n onTogglePreventSkippingAhead: () => void;\n onToggleEnableInstantFeedback: () => void;\n onChangeMessage: (message: string) => void;\n}\n\nexport function SessionSettingsSectioned({\n requireSignIn,\n respectRatingsAndRestrictions,\n preventSkippingAhead,\n enableInstantFeedback,\n className,\n message,\n onToggleRequireSignIn,\n onToggleRespectRatingsAndRestrictions,\n onTogglePreventSkippingAhead,\n onToggleEnableInstantFeedback,\n onChangeMessage\n}: SessionSettingsSectionedProps): JSX.Element {\n return (\n <div className={`d-flex flex-column gap-4 ${className}`}>\n <div className='d-flex align-items-center'>\n <div className='d-flex align-items-center justify-content-center'>\n <div>\n <IconCircle\n svgName={cvSvgLibrary.VisibleOn}\n variant='blue'\n textVariant='white'\n svgWrapperClassName='p-1'\n />\n </div>\n <div className='d-flex flex-column ms-2'>\n <label className='m-0'>Open Session</label>\n <span className='text-secondary'>Anyone can view for 30 days</span>\n </div>\n </div>\n </div>\n <div className='d-flex flex-column gap-2'>\n <h4 className='h6 m-0'>Access</h4>\n <div className='d-flex flex-column gap-3'>\n <SectionSettingToggleItem\n title='Require students to sign in'\n description='Best way to gather student data linked to their ClickView accounts'\n toggled={requireSignIn}\n onClick={onToggleRequireSignIn}\n />\n <SectionSettingToggleItem\n title='Respect ratings and restrictions of video'\n description='Only students from Year 4 and above can view this video. Will require students to sign in.'\n toggled={respectRatingsAndRestrictions}\n onClick={onToggleRespectRatingsAndRestrictions}\n />\n </div>\n </div>\n <div className='d-flex flex-column gap-2'>\n <h4 className='h6 m-0'>Settings</h4>\n <div className='d-flex flex-column gap-3'>\n <SectionSettingToggleItem\n title='Prevent skipping ahead'\n description='Students cannot skip ahead to parts of the video they have not watched'\n toggled={preventSkippingAhead}\n onClick={onTogglePreventSkippingAhead}\n />\n <SectionSettingToggleItem\n title='Enable instant feedback'\n description='Allow students to see feedback on their answers before continuing'\n toggled={enableInstantFeedback}\n onClick={onToggleEnableInstantFeedback}\n />\n </div>\n </div>\n <div className='d-flex flex-column gap-2'>\n <label className='m-0'>Add a message (optional)</label>\n <textarea\n value={message}\n className='form-control rounded w-100 h-100'\n placeholder='Type a message...'\n onChange={e => onChangeMessage(e.target.value)}\n />\n </div>\n </div>\n );\n}","import React from 'react';\n\nimport { AppLinkHelper } from 'libs/common/backbone/core';\n\nimport { Popup } from 'libs/shared/components/popup/Popup';\nimport { PopupButtons } from 'libs/shared/components/popup/PopupButtons';\nimport { PopupViewProps } from 'libs/shared/interfaces';\n\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\n\nimport { SessionSettingsSectioned } from 'apps/share-v2/components/SessionSettingsSectioned';\nimport { useCreateShare } from 'apps/share-v2/hooks/useCreateShare';\n\ninterface SessionFlowViewProps extends PopupViewProps {\n objectId: string;\n entityType: 'video' | 'clip' | 'interactive' | 'series' | 'playlist';\n}\n\nexport function SessionFlowView(props: SessionFlowViewProps): JSX.Element {\n const { createOpenSession } = useCreateShare(props.objectId);\n const [ preventSkippingAhead, setPreventSkippingAhead ] = React.useState(false);\n const [ enableInstantFeedback, setEnableInstantFeedback ] = React.useState(false);\n const [ requireSignIn, setRequireSignIn ] = React.useState(false);\n const [ respectRatingsAndRestrictions, setRespectRatingsAndRestrictions ] = React.useState(false);\n const [ message, setMessage ] = React.useState('');\n const [ working, setWorking ] = React.useState(false);\n\n function onBack() {\n props.closePopup();\n }\n\n async function onCreate() {\n setWorking(true);\n\n const shareLink = await createOpenSession({\n instantFeedback: enableInstantFeedback,\n preventSkipping: preventSkippingAhead,\n requireSignIn,\n respectRatingsAndRestrictions,\n objectId: props.objectId\n });\n\n const actions = {\n video: Actions.Insights.VIDEO_SHARE_OPTIONS,\n clip: Actions.Insights.CLIP_SHARE_OPTIONS,\n interactive: Actions.Insights.INTERACTIVE_SHARE_OPTIONS,\n series: Actions.Insights.SERIES_SHARE_OPTIONS,\n playlist: Actions.Insights.PLAYLIST_SHARE_OPTIONS\n };\n\n AppLinkHelper.trigger({\n application: AppChannels.INSIGHTS,\n action: actions[props.entityType],\n args: [props.objectId],\n params: {\n shareId: shareLink.shareId\n }\n });\n }\n\n return (\n <Popup\n title={'Assign to an Open classroom'}\n showLoadingSpinner={false}\n size='lg'\n bodyClassName='d-flex flex-column gap-3'\n {...props}\n >\n <SessionSettingsSectioned\n requireSignIn={requireSignIn}\n respectRatingsAndRestrictions={respectRatingsAndRestrictions}\n enableInstantFeedback={enableInstantFeedback}\n preventSkippingAhead={preventSkippingAhead}\n message={message}\n onToggleRequireSignIn={() => setRequireSignIn(!requireSignIn)}\n onToggleRespectRatingsAndRestrictions={() => setRespectRatingsAndRestrictions(!respectRatingsAndRestrictions)}\n onTogglePreventSkippingAhead={() => setPreventSkippingAhead(!preventSkippingAhead)}\n onToggleEnableInstantFeedback={() => setEnableInstantFeedback(!enableInstantFeedback)}\n onChangeMessage={setMessage}\n />\n <PopupButtons>\n <PopupButtons.Cancel variant='link' onClick={onBack} />\n <PopupButtons.Submit variant='dark' onClick={onCreate} showSpinner={working} text='Assign' />\n </PopupButtons>\n </Popup>\n );\n}","var EN_US = ['second', 'minute', 'hour', 'day', 'week', 'month', 'year'];\nexport default function (diff, idx) {\n if (idx === 0)\n return ['just now', 'right now'];\n var unit = EN_US[Math.floor(idx / 2)];\n if (diff > 1)\n unit += 's';\n return [diff + \" \" + unit + \" ago\", \"in \" + diff + \" \" + unit];\n}\n//# sourceMappingURL=en_US.js.map","var ZH_CN = ['秒', '分钟', '小时', '天', '周', '个月', '年'];\nexport default function (diff, idx) {\n if (idx === 0)\n return ['刚刚', '片刻后'];\n var unit = ZH_CN[~~(idx / 2)];\n return [diff + \" \" + unit + \"\\u524D\", diff + \" \" + unit + \"\\u540E\"];\n}\n//# sourceMappingURL=zh_CN.js.map","/**\n * Created by hustcc on 18/5/20.\n * Contract: i@hust.cc\n */\n/**\n * All supported locales\n */\nvar Locales = {};\n/**\n * register a locale\n * @param locale\n * @param func\n */\nexport var register = function (locale, func) {\n Locales[locale] = func;\n};\n/**\n * get a locale, default is en_US\n * @param locale\n * @returns {*}\n */\nexport var getLocale = function (locale) {\n return Locales[locale] || Locales['en_US'];\n};\n//# sourceMappingURL=register.js.map","/**\n * Created by hustcc on 18/5/20.\n * Contract: i@hust.cc\n */\nvar SEC_ARRAY = [\n 60,\n 60,\n 24,\n 7,\n 365 / 7 / 12,\n 12,\n];\n/**\n * format Date / string / timestamp to timestamp\n * @param input\n * @returns {*}\n */\nexport function toDate(input) {\n if (input instanceof Date)\n return input;\n // @ts-ignore\n if (!isNaN(input) || /^\\d+$/.test(input))\n return new Date(parseInt(input));\n input = (input || '')\n // @ts-ignore\n .trim()\n .replace(/\\.\\d+/, '') // remove milliseconds\n .replace(/-/, '/')\n .replace(/-/, '/')\n .replace(/(\\d)T(\\d)/, '$1 $2')\n .replace(/Z/, ' UTC') // 2017-2-5T3:57:52Z -> 2017-2-5 3:57:52UTC\n .replace(/([+-]\\d\\d):?(\\d\\d)/, ' $1$2'); // -04:00 -> -0400\n return new Date(input);\n}\n/**\n * format the diff second to *** time ago, with setting locale\n * @param diff\n * @param localeFunc\n * @returns\n */\nexport function formatDiff(diff, localeFunc) {\n /**\n * if locale is not exist, use defaultLocale.\n * if defaultLocale is not exist, use build-in `en`.\n * be sure of no error when locale is not exist.\n *\n * If `time in`, then 1\n * If `time ago`, then 0\n */\n var agoIn = diff < 0 ? 1 : 0;\n /**\n * Get absolute value of number (|diff| is non-negative) value of x\n * |diff| = diff if diff is positive\n * |diff| = -diff if diff is negative\n * |0| = 0\n */\n diff = Math.abs(diff);\n /**\n * Time in seconds\n */\n var totalSec = diff;\n /**\n * Unit of time\n */\n var idx = 0;\n for (; diff >= SEC_ARRAY[idx] && idx < SEC_ARRAY.length; idx++) {\n diff /= SEC_ARRAY[idx];\n }\n /**\n * Math.floor() is alternative of ~~\n *\n * The differences and bugs:\n * Math.floor(3.7) -> 4 but ~~3.7 -> 3\n * Math.floor(1559125440000.6) -> 1559125440000 but ~~1559125440000.6 -> 52311552\n *\n * More information about the performance of algebraic:\n * https://www.youtube.com/watch?v=65-RbBwZQdU\n */\n diff = Math.floor(diff);\n idx *= 2;\n if (diff > (idx === 0 ? 9 : 1))\n idx += 1;\n return localeFunc(diff, idx, totalSec)[agoIn].replace('%s', diff.toString());\n}\n/**\n * calculate the diff second between date to be formatted an now date.\n * @param date\n * @param relativeDate\n * @returns {number}\n */\nexport function diffSec(date, relativeDate) {\n var relDate = relativeDate ? toDate(relativeDate) : new Date();\n return (+relDate - +toDate(date)) / 1000;\n}\n/**\n * nextInterval: calculate the next interval time.\n * - diff: the diff sec between now and date to be formatted.\n *\n * What's the meaning?\n * diff = 61 then return 59\n * diff = 3601 (an hour + 1 second), then return 3599\n * make the interval with high performance.\n **/\nexport function nextInterval(diff) {\n var rst = 1, i = 0, d = Math.abs(diff);\n for (; diff >= SEC_ARRAY[i] && i < SEC_ARRAY.length; i++) {\n diff /= SEC_ARRAY[i];\n rst *= SEC_ARRAY[i];\n }\n d = d % rst;\n d = d ? rst - d : rst;\n return Math.ceil(d);\n}\n//# sourceMappingURL=date.js.map","import { formatDiff, diffSec } from './utils/date';\nimport { getLocale } from './register';\n/**\n * format a TDate into string\n * @param date\n * @param locale\n * @param opts\n */\nexport var format = function (date, locale, opts) {\n // diff seconds\n var sec = diffSec(date, opts && opts.relativeDate);\n // format it with locale\n return formatDiff(sec, getLocale(locale));\n};\n//# sourceMappingURL=format.js.map","/**\n * Created by hustcc on 18/5/20.\n * Contract: i@hust.cc\n */\nimport en_US from './lang/en_US';\nimport zh_CN from './lang/zh_CN';\nimport { register } from './register';\nregister('en_US', en_US);\nregister('zh_CN', zh_CN);\nexport { format } from './format';\nexport { render, cancel } from './realtime';\nexport { register };\n//# sourceMappingURL=index.js.map"],"names":["normalizeOptions","namespace","ShareRequests","createShare","data","success","error","always","url","key","type","invalidationKeys","updateShare","shareId","getShare","bootstrapName","getSentShares","params","Object","values","join","formatData","response","count","length","pagination","cursors","next","previous","cursor","normalize","getShareLinkByObjectId","id","objectId","getPrivacy","ShareOption","getPhrase","LanguageService","ShareViewHelper","canEmbed","includes","canAddPolicies","getEnabledIntegrations","googleClassroomSetting","msftTeamsSetting","IntegrationHelper","filter","i","enabled","map","getFetchFunctionByType","VideoRequests","PlaylistRequests","userId","ClassificationRequests","SeriesRequests","InteractiveRequests","ClipRequests","getAnalyticsEntity","entityType","getAnalyticsOptions","entity","location","workflowPhase","updateShareLink","dispatch","share","alerts","onSuccess","onError","updatedShare","AnalyticsHelper","objectName","name","actionType","eventVersion","escapeText","getShareSettingsInitialValues","interactive","defaults","preventSkipping","preventScrubbing","instantFeedback","immediateFeedback","ShareOptionKeyMapping","InstantFeedback","PreventSkipping","options","reduce","prev","curr","keys","option","value","BASE_IMAGE_CLASS_NAME","InsightsMask","className","SharedObjectImage","props","ref","el","object","fixedHeight","style","width","offsetHeight","VideoHelper","typeId","MasterType","useVideoThumbnail","image","ImageHelper","imageType","imageClassName","imageFallbackComponent","ImageFallback","svgContainerClassName","getBgColorClass","extraClasses","getImageProps","showInsightsMask","AppLink","appLink","VideoThumbnail","video","imageOptions","textPosition","ThumbnailTextPosition","hideDuration","hideMask","requireMarking","Text","phrase","smartCount","CollectionThumbnail","collection","analyticsData","analyticsOptions","locationContext","showMask","showCollectionMask","showVideoCount","BaseImage","defaultProps","size","BaseCollectionThumbnailTitle","title","CollectionThumbnailTitle","firstVideo","collectionVideos","videos","playlist","clips","interactives","ArrayHelper","getFirstVideo","videoCount","totalCount","getVideoCount","showTexts","subText","toString","MasterTypeHelper","preventFocus","SvgContainer","svgName","hoverText","hideRating","hideVideoTypeBadge","TitleSubText","subTextAppLink","titleAppLink","IntegrationId","getShareIntegrations","settingName","SectionSettingToggleItem","htmlFor","description","onClick","on","toggled","SharePrivacy","ShareType","createShareLink","getShareLink","getSharesByObjectId","adaptedParams","scopeId","limit","offset","parseInt","createPincode","getPincode","code","getPincodeByShareId","useCreateShare","accessPermissions","fetchAsync","canManageAccess","privacy","optionRequest","shareLink","createDirectShare","requireSignIn","preventShipping","recipientRequest","recipients","recipientId","message","createOpenSession","respectRatingsAndRestrictions","hasCompleted","ShareHelper","getFlattenedRecipients","shares","s","getClassoomIds","classroomIds","r","recipientTypeId","x","getClassroomIdFromShare","firstRecipient","getClassroomForShare","classrooms","classroomId","find","classroom","FlowSelectorOptions","DivButton","src","draggable","PreviousShares","reverse","IconCircle","variant","textVariant","svgSize","S","viewCount","dateCreated","ClassroomSelectorList","onClassroomSelected","Form","onChange","checked","selectedClassroom","svgWrapperClassName","onSelectGroupsOrStudents","ImageUrls","alt","searchQuery","onClickCreateOpenClassroom","ClassroomSelector","search","setSearch","filteredClassrooms","toLowerCase","placeholder","e","target","ClassroomSettingsSectioned","preventSkippingAhead","enableInstantFeedback","onToggleRequireSignIn","onTogglePreventSkippingAhead","onToggleEnableInstantFeedback","onChangeClassroom","onChangeMessage","ClassroomFlowView","step","setStep","currentUser","UserRequests","ClassroomRequests","setSelectedClassroom","setPreventSkippingAhead","setEnableInstantFeedback","setRequireSignIn","setMessage","working","setWorking","console","log","application","action","args","dataLoaded","Popup","showLoadingSpinner","bodyClassName","PopupButtons","text","closePopup","actions","clip","series","onShare","disabled","showSpinner","FlowSelectorView","selectedFlow","setSelectedFlow","showPreviousAssignments","setShowPreviousAssignments","previousShares","previousClassroomShares","SessionFlowView","choices","contentClassName","IconButton","SessionSettingsSectioned","onToggleRespectRatingsAndRestrictions","setRespectRatingsAndRestrictions","EN_US","ZH_CN","Locales","register","locale","func","SEC_ARRAY","toDate","input","Date","isNaN","test","trim","replace","format","date","opts","sec","relativeDate","diff","localeFunc","agoIn","totalSec","Math","abs","idx","floor","unit"],"sourceRoot":""}
@@ -1,2 +0,0 @@
1
- (self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[2636],{9806:(e,t,n)=>{"use strict";n.d(t,{k:()=>C});var a=n(32735),o=n(65858),i=n(64249),r=n(15611),c=n(7432),l=n(11834),s=n(83345),d=n(56754),u=n(86348),p=n(7733),m=n(54610),v=n(4594),y=n(68626),f=n(9085),b=n(67453),h=n(31908);const g={thumbnailFallbackSvg:"D4JFs",posterFallbackSvg:"bjUWl",coverFallbackSvg:"kdLpt",thumbnailContainer:"d3CKN",insightsMask:"KM76U",requireMarking:"peLH7",badge:"mVu0E",bar:"zO3MS",a:"K1jW5",expandBar:"YITJl",b:"tCpLF",c:"lC0cq"};var E="shared.sharedObjectImage",k="rounded overflow-hidden";function w(){return a.createElement("div",{className:"d-flex pointer-events-none position-absolute bottom-0 start-0 h-100 w-100 z-1 justify-content-center align-items-center"},a.createElement("div",{className:"position-absolute bg-dark bg-gradient opacity-50 w-100 h-100 z-0 rounded-3"}),a.createElement("div",{className:"d-flex align-items-end gap-2 h-50 z-1"},a.createElement("div",{className:"d-flex align-items-end h-50"},a.createElement("div",{className:"".concat(g.bar," ").concat(g.a," rounded shadow")})),a.createElement("div",{className:"d-flex align-items-end h-75"},a.createElement("div",{className:"".concat(g.bar," ").concat(g.b," rounded shadow")})),a.createElement("div",{className:"d-flex align-items-end h-100"},a.createElement("div",{className:"".concat(g.bar," ").concat(g.c," rounded shadow")}))))}function C(e){var t=a.useCallback((function(t){var n;t&&e.fixedHeight&&(t.style.width="".concat(t.offsetHeight*(n=e.object,h.M.isVideoType(n)?16/9:n.typeId===v.E.Playlist?1:n.typeId===v.E.Series?9/16:void 0),"px"))}),[]),n=h.M.isVideoType(e.object),C=function(e){var t=b.j.getDisplayImageFromObject(e);if(h.M.isVideoType(e))return{image:t,imageType:m.__.Thumbnails,imageClassName:k,imageFallbackComponent:a.createElement(l.oy,{type:l.mS.Video})};switch(e.typeId){case v.E.Series:return{image:t,imageType:m.__.TallPosters,imageClassName:k,imageFallbackComponent:a.createElement(l.oy,{type:l.mS.Series,svgContainerClassName:g.posterFallbackSvg})};case v.E.Playlist:return{image:t,imageType:m.__.Covers,imageClassName:(null==t?void 0:t.url)?k:"".concat(k," ").concat((0,f.x)(e.name,p.o)),imageFallbackComponent:a.createElement(l.oy,{type:l.mS.Playlist,svgContainerClassName:(null==t?void 0:t.url)?g.coverFallbackSvg:"d-none",extraClasses:!(null==t?void 0:t.url)&&"bg-transparent"})}}}(e.object),x=C.image,O=C.imageType,j=C.imageClassName,N=C.imageFallbackComponent;return a.createElement("div",{className:"d-flex align-items-center justify-content-center w-100 h-100"},a.createElement("div",{ref:t,className:e.fixedHeight?"h-100":"w-100"},n&&a.createElement("div",{className:"".concat(g.thumbnailContainer," position-relative")},e.showInsightsMask&&a.createElement(w,null),a.createElement(r.F,{appLink:e.appLink},a.createElement(u.u,{video:e.object,imageOptions:e.imageOptions,textPosition:y.z.Independent,type:"cosmetic",hideDuration:!0,hideMask:!0})),!!e.requireMarking&&a.createElement("div",{className:"".concat(e.showInsightsMask&&g.requireMarking," position-absolute bottom-0 end-0 z-1 m-2")},a.createElement("div",{className:"".concat(g.badge," d-flex align-items-center bg-light-ultramarine text-ultramarine fw-semibold rounded-pill w-fit mt-1 px-2")},a.createElement(s.x,{namespace:E,phrase:"requireMarking",options:{smartCount:e.requireMarking}})))),!n&&a.createElement(a.Fragment,null,"videos"in e.object?a.createElement(d.I,{collection:e.object,imageOptions:e.imageOptions,appLink:e.appLink,analyticsData:{id:e.object.id,name:e.object.name},analyticsOptions:{entity:i.I.getAnalyticsEntity(e.object.type),actionType:o.Vw.Click,location:e.locationContext},showMask:e.showCollectionMask,showVideoCount:e.showVideoCount}):a.createElement(c.Z,{data:null==x?void 0:x.url,imageType:O,imageOptions:e.imageOptions,appLink:e.appLink,className:j,analyticsData:{id:e.object.id,name:e.object.name},analyticsOptions:{entity:i.I.getAnalyticsEntity(e.object.type),actionType:o.Vw.Click,location:e.locationContext}},N))))}C.defaultProps={imageOptions:{size:m.h2.Small}}},56754:(e,t,n)=>{"use strict";n.d(t,{I:()=>E});var a=n(32735),o=n(75896),i=n(65858),r=n(15611),c=n(83914),l=n(83345);const s={thumbnailTitle:"OsWjL"};function d(e){return a.createElement("h3",{title:e.title,className:"h6"},e.title)}function u(e){return e.appLink?a.createElement(r.F,{appLink:e.appLink,className:"".concat(s.thumbnailTitle)},a.createElement(d,Object.assign({},e))):a.createElement(d,Object.assign({},e))}var p=n(86348),m=n(62335),v=n(4594),y=n(68626),f=n(45778),b=n(35223);const h={badge:"M4zat",mask:"r0Ztg",thumbnailContainer:"uD9dz"};var g="shared.collectionThumbnail";function E(e){var t,n,s,d,E=function(){var t,n=null===(t=e.collection)||void 0===t?void 0:t.videos;if(n){if(!n.count&&e.collection.typeId===v.E.Playlist){var a=e.collection;a.clips.count&&(n=a.clips),a.interactives.count&&(n=a.interactives)}return o.m.first(n.data)}}(),k=function(){var t,n,a=0;if(e.collection.videos&&e.collection.videos.count&&(a+=e.collection.videos.count),e.collection.typeId===v.E.Playlist){var o=e.collection;(null===(t=o.interactives)||void 0===t?void 0:t.count)&&(a+=o.interactives.count),(null===(n=o.clips)||void 0===n?void 0:n.count)&&(a+=o.clips.count)}return a}(),w=(null===(t=e.title)||void 0===t?void 0:t.length)||(null===(n=e.subText)||void 0===n?void 0:n.length),C=Object.assign({id:e.collection.id.toString(),name:e.collection.name},e.analyticsData),x=Object.assign({actionType:i.Vw.Click,entity:(d=e.collection,f.G.isType(d,v.E.Playlist)?i.py.Playlist:f.G.isType(d,v.E.Series)?i.py.Series:void 0)},e.analyticsOptions);return a.createElement("div",null,a.createElement("div",{className:"position-relative ".concat(h.thumbnailContainer," z-1")},a.createElement(r.F,{appLink:e.appLink,analyticsData:C,analyticsOptions:x,preventFocus:!0},e.showMask&&a.createElement("div",{className:"".concat(h.mask," position-absolute w-100 h-100 rounded-3 bg-dark bg-gradient z-1 bg-opacity-50 pointer-events-none")},a.createElement("div",{className:"".concat(h.badge," d-flex align-items-center w-fit flex-grow-0 bg-dark rounded-pill ps-1 m-2")},a.createElement(c.x,{svgName:b.vn.Play,className:"svg-container text-white"}),a.createElement("p",{className:"d-inline fw-medium text-white mb-0"},(null===(s=e.hoverText)||void 0===s?void 0:s.length)?a.createElement("span",null,e.hoverText):a.createElement(l.x,{namespace:g,phrase:"playAll"})))),E&&a.createElement(p.u,{video:E,imageOptions:e.imageOptions,textPosition:y.z.Independent,type:"cosmetic",hideMask:!0,hideRating:!0,hideDuration:!0,hideVideoTypeBadge:!0}),!E&&a.createElement("div",{className:"ratio ratio-16x9 bg-light rounded-3"},a.createElement("div",{className:"d-flex justify-content-center align-items-center"},a.createElement(c.x,{svgName:b.vn.Play,className:"w-33 opacity-25 text-gray-400"}))),e.showVideoCount&&a.createElement("div",{className:"".concat(h.badge," d-flex align-items-center w-fit bg-dark bg-opacity-75 rounded-pill position-absolute bottom-0 end-0 ps-1 m-2")},a.createElement(c.x,{svgName:b.vn.Series,className:"svg-container text-white me-1"}),a.createElement("p",{className:"d-inline fw-semibold text-white mb-0"},a.createElement(l.x,{namespace:g,phrase:"videos",options:{count:k,smartCount:k}}))))),w&&a.createElement("div",{className:"mt-2 d-flex flex-column"},e.subText&&a.createElement(m.m,{title:e.subText,appLink:e.subTextAppLink},e.subText),e.title&&a.createElement(u,{title:e.collection.name,appLink:e.titleAppLink})))}},94644:(e,t,n)=>{"use strict";n.d(t,{r:()=>d});var a=n(50242),o=n(81886),i=n(67058),r=n(14553),c=n(49267),l=n(49075),s={notFound:i.d,forbidden:{rating:r.q,yearLevel:r.q,region:c.a,privacy:r.q},badRequest:l._,internalServerError:l._};function d(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(e){var i;i="number"==typeof e?e:e.status;var r=Object.assign(Object.assign({},s),t);i&&o.Q.Ry.isStatusCodeError(i)&&(i!==a.o.InternalServer?i!==a.o.NotFound?i!==a.o.Forbidden?n.badRequest||o.Q.Ry.throw(new r.badRequest):n.forbidden||o.Q.Ry.throw(new r.forbidden.privacy):n.notFound||o.Q.Ry.throw(new r.notFound):n.internalServerError||o.Q.Ry.throw(new l._))}}},91286:(e,t,n)=>{"use strict";n.d(t,{v:()=>r});var a=n(32735),o=n(94644);function i(e){return e.map((function(e){return e.statusCode})).join(":")}function r(e,t,n){var r=Array.isArray(e)?e:[e];(0,a.useEffect)((function(){r.forEach((function(e){(0,o.r)(e.statusCode,t,n)}))}),[i(r),t,n])}},93322:(e,t,n)=>{"use strict";n.d(t,{F:()=>i});var a=n(32735),o=n(13126);function i(){a.useEffect((function(){return o.e.lockContentWidth(),function(){return o.e.unlockContentWidth()}}),[])}},31932:(e,t,n)=>{"use strict";n.r(t),n.d(t,{ShareOptionsView:()=>M});var a=n(32735),o=n(20354),i=n(26025),r=n(91693),c=n(4594),l=n(16714),s=n(39151),d=n(5112),u=n(60011),p=n(91286),m=n(93322),v=n(22902),y=n(79612),f=n(37802),b=n(35223),h=n(31908),g=n(59087),E=n(65858),k=n(9806),w=n(54610),C=n(14070),x=n(97291),O=n(12528),j=n(93975);function N(e){return N="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},N(e)}function S(e,t,n){return(t=function(e){var t=function(e){if("object"!=N(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!=N(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==N(t)?t:t+""}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function I(e){return a.createElement("div",{className:"d-flex align-items-center"},a.createElement("div",{className:"d-flex align-items-center justify-content-center"},a.createElement("div",null,a.createElement(O.f,{svgName:L[e.shareLink.type],variant:P[e.shareLink.type],textVariant:"white",svgWrapperClassName:"p-1"})),a.createElement("div",{className:"d-flex flex-column ms-2"},a.createElement("label",{className:"m-0"},(n=(t=e).shareLink,o=t.classroomName,n.type===j.y.Classroom&&o?o:T[n.type])),a.createElement("span",{className:"text-secondary"},function(e){var t,n,a,o,i=e.shareLink;if(i.type===j.y.Classroom){var r=null!==(n=null===(t=i.recipients)||void 0===t?void 0:t.filter((function(e){return e.recipientTypeId===c.E.ClassroomGroup})).length)&&void 0!==n?n:0,l=null!==(o=null===(a=i.recipients)||void 0===a?void 0:a.filter((function(e){return e.recipientTypeId===c.E.User})).length)&&void 0!==o?o:0;return r&&l?"".concat(r," ").concat(D(r,"group","groups"),", ").concat(l," ").concat(D(l,"student","students")):r?"".concat(r," ").concat(D(r,"group","groups")):l?"".concat(l," ").concat(D(l,"student","students")):"All students in classroom can view"}return i.type===j.y.Open?"Anyone in my school can view":i.type===j.y.Link?"Anyone with a link can view":i.type===j.y.Live?"Live now":"Anyone can view for 30 days"}(e)))));var t,n,o}var L=S(S(S(S({},j.y.Open,b.vn.School),j.y.Link,b.vn.Link),j.y.Classroom,b.vn.Classrooms),j.y.Live,b.vn.Play),P=S(S(S(S({},j.y.Open,"blue"),j.y.Link,"black"),j.y.Classroom,"teal"),j.y.Live,"purple"),T=S(S(S(S({},j.y.Open,"Open classroom"),j.y.Link,"Link"),j.y.Classroom,"Classroom"),j.y.Live,"Live");function D(e,t,n){return 1===e?t:n}function F(e){var t,n,o,i,c,l,s,d;console.log("ShareOptions",e);var u=null!==(o=null===(n=null===(t=e.shareLink)||void 0===t?void 0:t.link)||void 0===n?void 0:n.shortenedUrl)&&void 0!==o?o:"";return a.createElement("div",{className:"mb-4"},a.createElement("div",{className:"d-flex gap-2"},e.sharedObject&&a.createElement("div",{style:{minWidth:180},className:"d-flex flex-column"},a.createElement(k.k,{object:e.sharedObject,showVideoMetadata:!0,locationContext:E.LZ.Insights,imageOptions:{size:w.h2.Medium},showCollectionMask:!0,showVideoCount:!0})),a.createElement("div",{className:"d-flex flex-column justify-content-end"},a.createElement("div",{className:"flex-grow-1"}),e.shareLink&&a.createElement(I,{shareLink:e.shareLink}),a.createElement("div",{className:"flex-grow-1"}),a.createElement("div",{className:"d-flex gap-2"},a.createElement(r.h,{svgName:b.vn.Share,className:"btn btn-outline-dark",appLink:{application:x.O.SHARE_V2,action:C.e.ShareV2.LINK,args:[null===(i=e.sharedObject)||void 0===i?void 0:i.id],params:{entityType:null===(c=e.sharedObject)||void 0===c?void 0:c.type,shareId:null===(l=e.shareLink)||void 0===l?void 0:l.shareId}}},"Share a link or embed"),a.createElement(r.h,{svgName:b.vn.Download,onClick:function(){return console.log("QR code..")},className:"btn btn-outline-dark",appLink:{application:x.O.INSIGHTS,action:C.e.Insights.QR_CODE,params:{value:u}}},"QR code"))),a.createElement("div",{className:"flex-grow-1"}),e.pinCode&&a.createElement("div",{className:"border p-3 rounded-3 d-flex flex-column align-items-center"},a.createElement("p",null,"Go to ",a.createElement("a",{href:"https://staging.clickview.net/pin",target:"_blank",className:"text-info"},"staging.clickview.net/pin")," and enter PIN:"),a.createElement("div",{className:"d-flex align-items-center"},a.createElement("h4",{className:"mb-0 pb-0 me-1"},null===(s=e.pinCode)||void 0===s?void 0:s.code),a.createElement(g.CopyToClipboard,{text:null===(d=e.pinCode)||void 0===d?void 0:d.code},a.createElement(r.h,{svgName:b.vn.Copy,className:"btn"})),a.createElement(r.h,{svgName:b.vn.NewWindow,onClick:function(){console.log("Expanding code..")},className:"btn"})))))}var R=n(26203),_=n(10447),A=n(91574);function M(e){var t,n,g,E,k,w,C,x,O,N,S,I=o.a.useBasicFetch(s.L.config()),L=o.a.useBasicFetch(e.shareId&&A.o.getShareLink(e.shareId)),P=o.a.useBasicFetch(e.shareId&&A.o.getPincodeByShareId(e.shareId)),T=(0,f.r)(null).hasShareFlowV2,D=(0,v.T)().hasPermissions,M=[c.E.Video,c.E.Clip,c.E.Interactive].includes(e.typeId)&&h.M.getVideoRequest(e.objectId,e.typeId),V=o.a.useBasicFetch(M),z=e.typeId===c.E.Series&&u.J.series(e.objectId),B=o.a.useBasicFetch(z),q=e.typeId===c.E.Playlist&&d.C.getPlaylist(e.objectId),U=o.a.useBasicFetch(q),W=i.B.getAudienceAppLinkParams(),G=i.B.getDateRangeAppLinkParams(),Q=Object.assign(Object.assign({},W),G);return(0,m.F)(),(0,y.M)({title:null!==(E=null!==(n=null===(t=V.data)||void 0===t?void 0:t.name)&&void 0!==n?n:null===(g=B.data)||void 0===g?void 0:g.name)&&void 0!==E?E:null===(k=U.data)||void 0===k?void 0:k.name}),(0,p.v)([V,B,U]),a.createElement("div",{className:"px-3"},a.createElement(R.j,{video:null!==(C=null!==(w=V.data)&&void 0!==w?w:B.data)&&void 0!==C?C:U.data,dateRangeAppLinkParams:G,tabs:e.typeId===c.E.Interactive?(0,_.kj)(e.objectId,"shareOptions",Q,T):e.typeId===c.E.Clip?(0,_.$o)(e.objectId,"shareOptions",Q,T):e.typeId===c.E.Video?(0,_.$6)(e.objectId,"shareOptions",Q,T):e.typeId===c.E.Series?(0,_.lo)(e.objectId,"shareOptions",Q):e.typeId===c.E.Playlist?(0,_.W_)(e.objectId,"shareOptions",Q):void 0,hasAnalytics:D(l.C.ViewCustomerAnalytics),analyticsWebUrl:null===(x=I.data)||void 0===x?void 0:x.analyticsWebUrl,hasShareFlowV2:T,shareId:e.shareId}),a.createElement(F,{sharedObject:null!==(N=null!==(O=V.data)&&void 0!==O?O:B.data)&&void 0!==N?N:U.data,shareLink:L.data,pinCode:P.data}),a.createElement("div",{className:"d-flex align-items-center"},a.createElement("h3",{className:"p-0 m-0"},"Students who have viewed this video"),(null===(S=L.data)||void 0===S?void 0:S.type)===j.y.Classroom&&a.createElement(r.h,{svgName:b.vn.Plus,onClick:function(){return console.log("Add new student..")},className:"btn btn-outline-dark ms-auto"},"Add new student")),a.createElement("div",{className:"border rounded-1 d-flex flex-column mt-3"},a.createElement("div",{className:"d-flex flex-row border-bottom p-2"},a.createElement("h5",{className:"w-25"},"Name"),a.createElement("h5",{className:"w-25"},"Views"),a.createElement("h5",{className:"w-50"},"Engagement")),a.createElement("div",{className:"d-flex flex-column justify-content-center align-items-center p-5"},a.createElement("h3",{className:"mt-3 mb-3"},"⏱️ Waiting for students to view..."))))}},93975:(e,t,n)=>{"use strict";var a;n.d(t,{y:()=>a}),function(e){e.Link="Link",e.Classroom="Classroom",e.Open="Open",e.Live="Live"}(a||(a={}))},91574:(e,t,n)=>{"use strict";n.d(t,{o:()=>r});var a=n(99940),o=n(97395),i={namespace:"share-v2"},r={createShareLink:function(e,t,n,o){return{url:"/api/share/v2/shares",key:"create:share-v2:link",type:a.k.POST,data:e,normalizeOptions:i,invalidationKeys:["share:link:object:".concat(e.objectId),"privacy:".concat(e.objectId),"sent:shares","get:share-v2:shares:object"],success:t,error:n,always:o}},getShareLink:function(e,t,n,o){return{url:"/api/share/v2/shares/".concat(e),key:"get:share-v2:link:".concat(e),type:a.k.GET,normalizeOptions:i,success:t,error:n,always:o}},getSharesByObjectId:function(e,t,n,o){return{url:"/api/share/v2/shares/objects/".concat(e),key:"get:share-v2:shares:object:".concat(e),type:a.k.GET,normalizeOptions:i,success:t,error:n,always:o}},getSentShares:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=arguments.length>1?arguments[1]:void 0,n=arguments.length>2?arguments[2]:void 0,i=arguments.length>3?arguments[3]:void 0,r={scopeId:e.scopeId,limit:e.limit||25,offset:parseInt(e.cursor)||0},c=Object.values(r).join(":");return{url:o._.urlBuilder("/api/share/v2/shares/sent",r),key:"sent:shares-v2:".concat(c),formatData:function(e){return{data:e,count:e.length,pagination:{cursors:{next:r.offset+e.length}}}},type:a.k.GET,normalize:!1,success:t,error:n,always:i}},createPincode:function(e){return{url:"/api/share/v2/shares/".concat(e,"/pincode"),key:"create:share-v2:pincode",type:a.k.POST}},getPincode:function(e){return{url:"/api/share/v2/shares/pincode?code=".concat(e),key:"get:share-v2:pincode:".concat(e)}},getPincodeByShareId:function(e){return{url:"/api/share/v2/shares/".concat(e,"/pincode"),key:"get:share-v2:".concat(e,":pincode")}}}},91969:(e,t,n)=>{"use strict";var a=n(47033),o={"text/plain":"Text","text/html":"Url",default:"Text"};e.exports=function(e,t){var n,i,r,c,l,s,d=!1;t||(t={}),n=t.debug||!1;try{if(r=a(),c=document.createRange(),l=document.getSelection(),(s=document.createElement("span")).textContent=e,s.ariaHidden="true",s.style.all="unset",s.style.position="fixed",s.style.top=0,s.style.clip="rect(0, 0, 0, 0)",s.style.whiteSpace="pre",s.style.webkitUserSelect="text",s.style.MozUserSelect="text",s.style.msUserSelect="text",s.style.userSelect="text",s.addEventListener("copy",(function(a){if(a.stopPropagation(),t.format)if(a.preventDefault(),void 0===a.clipboardData){n&&console.warn("unable to use e.clipboardData"),n&&console.warn("trying IE specific stuff"),window.clipboardData.clearData();var i=o[t.format]||o.default;window.clipboardData.setData(i,e)}else a.clipboardData.clearData(),a.clipboardData.setData(t.format,e);t.onCopy&&(a.preventDefault(),t.onCopy(a.clipboardData))})),document.body.appendChild(s),c.selectNodeContents(s),l.addRange(c),!document.execCommand("copy"))throw new Error("copy command was unsuccessful");d=!0}catch(a){n&&console.error("unable to copy using execCommand: ",a),n&&console.warn("trying IE specific stuff");try{window.clipboardData.setData(t.format||"text",e),t.onCopy&&t.onCopy(window.clipboardData),d=!0}catch(a){n&&console.error("unable to copy using clipboardData: ",a),n&&console.error("falling back to prompt"),i=function(e){var t=(/mac os x/i.test(navigator.userAgent)?"⌘":"Ctrl")+"+C";return e.replace(/#{\s*key\s*}/g,t)}("message"in t?t.message:"Copy to clipboard: #{key}, Enter"),window.prompt(i,e)}}finally{l&&("function"==typeof l.removeRange?l.removeRange(c):l.removeAllRanges()),s&&document.body.removeChild(s),r()}return d}},44818:(e,t,n)=>{"use strict";function a(e){return a="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},a(e)}Object.defineProperty(t,"__esModule",{value:!0}),t.CopyToClipboard=void 0;var o=c(n(32735)),i=c(n(91969)),r=["text","onCopy","options","children"];function c(e){return e&&e.__esModule?e:{default:e}}function l(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function s(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?l(Object(n),!0).forEach((function(t){v(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):l(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function d(e,t){for(var n=0;n<t.length;n++){var a=t[n];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}function u(e,t){return u=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e},u(e,t)}function p(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function m(e){return m=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)},m(e)}function v(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var y=function(e){!function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&u(e,t)}(f,e);var t,n,c,l,y=(c=f,l=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,t=m(c);if(l){var n=m(this).constructor;e=Reflect.construct(t,arguments,n)}else e=t.apply(this,arguments);return function(e,t){if(t&&("object"===a(t)||"function"==typeof t))return t;if(void 0!==t)throw new TypeError("Derived constructors may only return object or undefined");return p(e)}(this,e)});function f(){var e;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,f);for(var t=arguments.length,n=new Array(t),a=0;a<t;a++)n[a]=arguments[a];return v(p(e=y.call.apply(y,[this].concat(n))),"onClick",(function(t){var n=e.props,a=n.text,r=n.onCopy,c=n.children,l=n.options,s=o.default.Children.only(c),d=(0,i.default)(a,l);r&&r(a,d),s&&s.props&&"function"==typeof s.props.onClick&&s.props.onClick(t)})),e}return t=f,(n=[{key:"render",value:function(){var e=this.props,t=(e.text,e.onCopy,e.options,e.children),n=function(e,t){if(null==e)return{};var n,a,o=function(e,t){if(null==e)return{};var n,a,o={},i=Object.keys(e);for(a=0;a<i.length;a++)n=i[a],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(a=0;a<i.length;a++)n=i[a],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}(e,r),a=o.default.Children.only(t);return o.default.cloneElement(a,s(s({},n),{},{onClick:this.onClick}))}}])&&d(t.prototype,n),Object.defineProperty(t,"prototype",{writable:!1}),f}(o.default.PureComponent);t.CopyToClipboard=y,v(y,"defaultProps",{onCopy:void 0,options:void 0})},59087:(e,t,n)=>{"use strict";var a=n(44818).CopyToClipboard;a.CopyToClipboard=a,e.exports=a},47033:e=>{e.exports=function(){var e=document.getSelection();if(!e.rangeCount)return function(){};for(var t=document.activeElement,n=[],a=0;a<e.rangeCount;a++)n.push(e.getRangeAt(a));switch(t.tagName.toUpperCase()){case"INPUT":case"TEXTAREA":t.blur();break;default:t=null}return e.removeAllRanges(),function(){"Caret"===e.type&&e.removeAllRanges(),e.rangeCount||n.forEach((function(t){e.addRange(t)})),t&&t.focus()}}}}]);
2
- //# sourceMappingURL=2636-63e5f2c9e6-lite.chunk.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"scripts/2636-63e5f2c9e6-lite.chunk.js","mappings":"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","sources":["file:///app/packages/libs/shared/src/apps/share/components/shared-object-image/shared-object-image.scss","file:///app/packages/libs/shared/src/apps/share/components/shared-object-image/SharedObjectImage.tsx","file:///app/packages/libs/shared/src/components/thumbnails/collection/title/collection-thumbnail-title.scss","file:///app/packages/libs/shared/src/components/thumbnails/collection/title/CollectionThumbnailTitle.tsx","file:///app/packages/libs/shared/src/components/thumbnails/collection/collection-thumbnail.scss","file:///app/packages/libs/shared/src/components/thumbnails/collection/CollectionThumbnail.tsx","file:///app/packages/libs/shared/src/errors/handlers/HttpErrorHandlers.ts","file:///app/packages/libs/shared/src/hooks/UseHandleObjectError.ts","file:///app/packages/libs/shared/src/hooks/useLockContentWidth.ts","file:///app/packages/projects/lite/src/apps/share-v2/components/ShareAvatar.tsx","file:///app/packages/projects/lite/src/apps/insights/components/share-options/ShareOptions.tsx","file:///app/packages/projects/lite/src/apps/insights/views/share-options/ShareOptionsView.tsx","file:///app/packages/projects/lite/src/apps/share-v2/enums/ShareType.ts","file:///app/packages/projects/lite/src/apps/share-v2/flight-requests/ShareRequests.ts","file:///app/node_modules/copy-to-clipboard/index.js","file:///app/node_modules/react-copy-to-clipboard/lib/Component.js","file:///app/node_modules/react-copy-to-clipboard/lib/index.js","file:///app/node_modules/toggle-selection/index.js"],"sourcesContent":["// extracted by mini-css-extract-plugin\nexport default {\"thumbnailFallbackSvg\":\"D4JFs\",\"posterFallbackSvg\":\"bjUWl\",\"coverFallbackSvg\":\"kdLpt\",\"thumbnailContainer\":\"d3CKN\",\"insightsMask\":\"KM76U\",\"requireMarking\":\"peLH7\",\"badge\":\"mVu0E\",\"bar\":\"zO3MS\",\"a\":\"K1jW5\",\"expandBar\":\"YITJl\",\"b\":\"tCpLF\",\"c\":\"lC0cq\"};","import React from 'react';\n\nimport { Core } from 'libs/common/core';\n\nimport { LocationContext, UserAction } from 'libs/analytics/interfaces';\n\nimport { ShareViewHelper } from 'libs/shared/apps/share/views/share/ShareViewHelper';\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { BaseImage } from 'libs/shared/components/image/BaseImage';\nimport { ImageFallback, ImageFallbackType } from 'libs/shared/components/image/ImageFallback';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { CollectionThumbnail } from 'libs/shared/components/thumbnails/collection/CollectionThumbnail';\nimport { VideoThumbnail } from 'libs/shared/components/thumbnails/video/VideoThumbnail';\nimport { BG_COLOUR_CLASS_NAMES } from 'libs/shared/constants/ColourClassNames';\nimport { ImageSize, ImageType } from 'libs/shared/enums/Images';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { ThumbnailTextPosition } from 'libs/shared/enums/ThumbnailTextPosition';\nimport { BaseObject, Image, Playlist, Series } from 'libs/shared/interfaces';\nimport { getBgColorClass } from 'libs/shared/utils/getBgColorClass';\nimport { ImageHelper, ImageOptions } from 'libs/shared/utils/ImageHelper';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\nimport styles from './shared-object-image.scss';\n\nconst namespace = 'shared.sharedObjectImage';\n\nconst BASE_IMAGE_CLASS_NAME = 'rounded overflow-hidden';\n\ninterface ImageProps {\n image: Image;\n imageType: ImageType;\n imageClassName?: string;\n imageFallbackComponent: JSX.Element;\n}\n\nfunction getImageProps(object: BaseObject): ImageProps {\n const image = ImageHelper.getDisplayImageFromObject(object);\n\n if (VideoHelper.isVideoType(object))\n return {\n image,\n imageType: ImageType.Thumbnails,\n imageClassName: BASE_IMAGE_CLASS_NAME,\n imageFallbackComponent: <ImageFallback type={ImageFallbackType.Video} />\n };\n\n switch (object.typeId) {\n case MasterType.Series:\n return {\n image,\n imageType: ImageType.TallPosters,\n imageClassName: BASE_IMAGE_CLASS_NAME,\n imageFallbackComponent:\n <ImageFallback type={ImageFallbackType.Series} svgContainerClassName={styles.posterFallbackSvg} />\n };\n\n case MasterType.Playlist:\n return {\n image,\n imageType: ImageType.Covers,\n imageClassName: !image?.url\n ? `${BASE_IMAGE_CLASS_NAME} ${getBgColorClass(object.name, BG_COLOUR_CLASS_NAMES)}`\n : BASE_IMAGE_CLASS_NAME,\n imageFallbackComponent: (\n <ImageFallback\n type={ImageFallbackType.Playlist}\n svgContainerClassName={image?.url ? styles.coverFallbackSvg : 'd-none'}\n extraClasses={!image?.url && 'bg-transparent'}\n />\n )\n };\n }\n}\n\nfunction InsightsMask() {\n return (\n <div className={`d-flex pointer-events-none position-absolute bottom-0 start-0 h-100 w-100 z-1 justify-content-center align-items-center`}>\n <div className='position-absolute bg-dark bg-gradient opacity-50 w-100 h-100 z-0 rounded-3'></div>\n <div className='d-flex align-items-end gap-2 h-50 z-1'>\n <div className='d-flex align-items-end h-50'>\n <div className={`${styles.bar} ${styles.a} rounded shadow`}></div>\n </div>\n <div className='d-flex align-items-end h-75'>\n <div className={`${styles.bar} ${styles.b} rounded shadow`}></div>\n </div>\n <div className='d-flex align-items-end h-100'>\n <div className={`${styles.bar} ${styles.c} rounded shadow`}></div>\n </div>\n </div>\n </div>\n );\n}\n\nfunction getImageRatio(object: BaseObject): ImageFallbackType {\n if (VideoHelper.isVideoType(object))\n return 16 / 9;\n\n if (object.typeId === MasterType.Playlist)\n return 1;\n\n if (object.typeId === MasterType.Series)\n return 9 / 16;\n}\n\nSharedObjectImage.defaultProps = {\n imageOptions: { size: ImageSize.Small }\n};\n\ninterface SharedObjectImageProps {\n object: BaseObject;\n locationContext: LocationContext;\n appLink?: Core.AppLink;\n showVideoMetadata?: boolean;\n fixedHeight?: boolean;\n requireMarking?: number;\n imageOptions?: ImageOptions;\n showInsightsMask?: boolean;\n showCollectionMask?: boolean;\n showVideoCount?: boolean;\n}\n\nexport function SharedObjectImage(props: SharedObjectImageProps): JSX.Element {\n const ref = React.useCallback((el: HTMLDivElement) => {\n if (!el || !props.fixedHeight)\n return;\n\n el.style.width = `${el.offsetHeight * getImageRatio(props.object)}px`;\n }, []);\n\n const useVideoThumbnail = VideoHelper.isVideoType(props.object);\n\n const {\n image,\n imageType,\n imageClassName,\n imageFallbackComponent\n } = getImageProps(props.object);\n\n return (\n <div className='d-flex align-items-center justify-content-center w-100 h-100'>\n <div ref={ref} className={props.fixedHeight ? 'h-100' : 'w-100'}>\n {useVideoThumbnail &&\n <div className={`${styles.thumbnailContainer} position-relative`}>\n {props.showInsightsMask && <InsightsMask />}\n <AppLink appLink={props.appLink}>\n <VideoThumbnail\n video={props.object}\n imageOptions={props.imageOptions}\n textPosition={ThumbnailTextPosition.Independent}\n type='cosmetic'\n hideDuration\n hideMask\n />\n </AppLink>\n {!!props.requireMarking && (\n <div className={`${props.showInsightsMask && styles.requireMarking} position-absolute bottom-0 end-0 z-1 m-2`}>\n <div className={`${styles.badge} d-flex align-items-center bg-light-ultramarine text-ultramarine fw-semibold rounded-pill w-fit mt-1 px-2`}>\n <Text namespace={namespace} phrase='requireMarking' options={{ smartCount: props.requireMarking }} />\n </div>\n </div>\n )}\n </div>\n }\n {!useVideoThumbnail &&\n <>\n {'videos' in (props.object as Playlist | Series) ? (\n <CollectionThumbnail\n collection={props.object}\n imageOptions={props.imageOptions}\n appLink={props.appLink}\n analyticsData={{\n id: props.object.id,\n name: props.object.name\n }}\n analyticsOptions={{\n entity: ShareViewHelper.getAnalyticsEntity(props.object.type),\n actionType: UserAction.Click,\n location: props.locationContext\n }}\n showMask={props.showCollectionMask}\n showVideoCount={props.showVideoCount}\n />\n ) : (\n <BaseImage\n data={image?.url}\n imageType={imageType}\n imageOptions={props.imageOptions}\n appLink={props.appLink}\n className={imageClassName}\n analyticsData={{\n id: props.object.id,\n name: props.object.name\n }}\n analyticsOptions={{\n entity: ShareViewHelper.getAnalyticsEntity(props.object.type),\n actionType: UserAction.Click,\n location: props.locationContext\n }}\n >\n {imageFallbackComponent}\n </BaseImage>\n )}\n </>\n }\n </div>\n </div>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"thumbnailTitle\":\"OsWjL\"};","import React from 'react';\n\nimport { Core } from 'libs/common/core';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\n\nimport styles from './collection-thumbnail-title.scss';\n\ninterface BaseCollectionThumbnailTitleProps {\n title: string;\n}\n\nfunction BaseCollectionThumbnailTitle(props: BaseCollectionThumbnailTitleProps): JSX.Element {\n return (\n <h3 title={props.title} className='h6'>{props.title}</h3>\n );\n}\n\ninterface CollectionThumbnailTitleProps extends BaseCollectionThumbnailTitleProps {\n appLink: Core.AppLink;\n}\n\nexport function CollectionThumbnailTitle(props: CollectionThumbnailTitleProps) {\n if (!props.appLink) {\n return (\n <BaseCollectionThumbnailTitle {...props} />\n );\n }\n \n return (\n <AppLink appLink={props.appLink} className={`${styles.thumbnailTitle}`}>\n <BaseCollectionThumbnailTitle {...props} />\n </AppLink>\n );\n}\n","// extracted by mini-css-extract-plugin\nexport default {\"badge\":\"M4zat\",\"mask\":\"r0Ztg\",\"thumbnailContainer\":\"uD9dz\"};","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { HashObject } from 'libs/common/react/interfaces';\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\n\nimport { AnalyticsOptions, EntityType, UserAction } from 'libs/analytics/interfaces';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { CollectionThumbnailTitle } from 'libs/shared/components/thumbnails/collection/title/CollectionThumbnailTitle';\nimport { VideoThumbnail } from 'libs/shared/components/thumbnails/video/VideoThumbnail';\nimport { TitleSubText } from 'libs/shared/components/title-sub-text/TitleSubText';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { ThumbnailTextPosition } from 'libs/shared/enums/ThumbnailTextPosition';\nimport { Playlist, Series } from 'libs/shared/interfaces';\nimport { ImageOptions } from 'libs/shared/utils/ImageHelper';\nimport { MasterTypeHelper } from 'libs/shared/utils/MasterTypeHelper';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport styles from './collection-thumbnail.scss';\n\nconst namespace = 'shared.collectionThumbnail';\n\ntype SupportedContentType = Playlist | Series;\n\ninterface CollectionThumbnailProps {\n appLink?: Core.AppLink\n collection: SupportedContentType;\n imageOptions?: ImageOptions;\n analyticsData?: HashObject;\n analyticsOptions?: AnalyticsOptions;\n showMask?: boolean;\n showVideoCount?: boolean;\n title?: string;\n titleAppLink?: Core.AppLink;\n subText?: string;\n subTextAppLink?: Core.AppLink;\n hoverText?: string;\n}\n\nexport function CollectionThumbnail(props: CollectionThumbnailProps) {\n function getFirstVideo() {\n let collectionVideos = props.collection?.videos;\n\n if (!collectionVideos)\n return;\n\n if (!collectionVideos.count && props.collection.typeId === MasterType.Playlist) {\n const playlist = props.collection as Playlist;\n\n if (playlist.clips.count)\n collectionVideos = playlist.clips;\n\n if (playlist.interactives.count)\n collectionVideos = playlist.interactives;\n }\n\n return ArrayHelper.first(collectionVideos.data);\n }\n\n function getVideoCount() {\n let totalCount = 0;\n\n if (props.collection.videos && props.collection.videos.count) {\n totalCount += props.collection.videos.count;\n }\n\n if (props.collection.typeId === MasterType.Playlist) {\n const playlist = props.collection as Playlist;\n\n if (playlist.interactives?.count)\n totalCount += playlist.interactives.count;\n\n if (playlist.clips?.count)\n totalCount += playlist.clips.count;\n }\n\n return totalCount;\n }\n\n function getEntityType(collection: SupportedContentType) {\n if (MasterTypeHelper.isType<Playlist>(collection, MasterType.Playlist)) {\n return EntityType.Playlist;\n }\n\n if (MasterTypeHelper.isType<Series>(collection, MasterType.Series)) {\n return EntityType.Series;\n }\n }\n\n const firstVideo = getFirstVideo();\n const videoCount = getVideoCount();\n const showTexts = props.title?.length || props.subText?.length;\n\n const analyticsData = {\n id: props.collection.id.toString(),\n name: props.collection.name,\n\n ...props.analyticsData\n };\n\n const analyticsOptions = {\n actionType: UserAction.Click,\n entity: getEntityType(props.collection),\n \n ...props.analyticsOptions\n };\n\n return (\n <div>\n <div className={`position-relative ${styles.thumbnailContainer} z-1`}>\n <AppLink\n appLink={props.appLink}\n analyticsData={analyticsData}\n analyticsOptions={analyticsOptions}\n preventFocus\n >\n {props.showMask &&\n <div className={`${styles.mask} position-absolute w-100 h-100 rounded-3 bg-dark bg-gradient z-1 bg-opacity-50 pointer-events-none`}>\n <div className={`${styles.badge} d-flex align-items-center w-fit flex-grow-0 bg-dark rounded-pill ps-1 m-2`}>\n <SvgContainer svgName={cvSvgLibrary.Play} className='svg-container text-white' />\n <p className='d-inline fw-medium text-white mb-0'>\n {props.hoverText?.length ?\n <span>{props.hoverText}</span> :\n <Text namespace={namespace} phrase='playAll' />\n }\n </p>\n </div>\n </div>\n }\n\n {firstVideo &&\n <VideoThumbnail\n video={firstVideo}\n imageOptions={props.imageOptions}\n textPosition={ThumbnailTextPosition.Independent}\n type='cosmetic'\n hideMask\n hideRating\n hideDuration\n hideVideoTypeBadge\n />\n }\n\n {!firstVideo &&\n <div className='ratio ratio-16x9 bg-light rounded-3'>\n <div className='d-flex justify-content-center align-items-center'>\n <SvgContainer svgName={cvSvgLibrary.Play} className='w-33 opacity-25 text-gray-400' />\n </div>\n </div>\n }\n\n {props.showVideoCount &&\n <div className={`${styles.badge} d-flex align-items-center w-fit bg-dark bg-opacity-75 rounded-pill position-absolute bottom-0 end-0 ps-1 m-2`}>\n <SvgContainer svgName={cvSvgLibrary.Series} className='svg-container text-white me-1' />\n <p className='d-inline fw-semibold text-white mb-0'>\n <Text namespace={namespace} phrase='videos' options={{ count: videoCount, smartCount: videoCount }} />\n </p>\n </div>\n }\n </AppLink>\n\n </div>\n \n {showTexts &&\n <div className='mt-2 d-flex flex-column'>\n {props.subText &&\n <TitleSubText title={props.subText} appLink={props.subTextAppLink}>\n {props.subText}\n </TitleSubText>\n }\n {props.title &&\n <CollectionThumbnailTitle\n title={props.collection.name}\n appLink={props.titleAppLink}\n />\n }\n </div>\n }\n </div>\n );\n}","import { BaseError } from 'libs/common/backbone/core/BaseError';\nimport { HttpStatus } from 'libs/common/backbone/enums/HttpStatus';\nimport { Xhr } from 'libs/common/backbone/interfaces';\nimport { Core } from 'libs/common/core';\n\nimport { NotFoundError } from 'libs/shared/errors/general/not-found/NotFoundError';\nimport { PrivateResourceError } from 'libs/shared/errors/general/private-resource/PrivateResourceError';\nimport { RegionLockedResourceError } from 'libs/shared/errors/general/region-locked-resource/RegionLockedResourceError';\nimport { UnspecifiedError } from 'libs/shared/errors/general/unspecified-error/UnspecifiedError';\nimport { VideoTypes } from 'libs/shared/interfaces';\n\nexport interface HttpErrorMap {\n notFound?: new () => BaseError;\n forbidden?: {\n rating?: new (description: string) => BaseError;\n yearLevel?: new (description: string) => BaseError;\n region?: new () => BaseError;\n privacy?: new (video?: VideoTypes) => BaseError;\n };\n badRequest?: new () => BaseError;\n internalServerError?: new () => BaseError;\n}\n\nexport type IgnoreHttpErrorMap = {\n [key in keyof HttpErrorMap]: boolean;\n};\n\nconst defaultErrors: HttpErrorMap = {\n notFound: NotFoundError,\n forbidden: {\n rating: PrivateResourceError,\n yearLevel: PrivateResourceError,\n region: RegionLockedResourceError,\n privacy: PrivateResourceError\n },\n badRequest: UnspecifiedError,\n internalServerError: UnspecifiedError\n};\n\nexport function handleHttpError(\n info: HttpStatus | Xhr,\n customErrorMap: HttpErrorMap = {},\n /**\n * Prevent certain errors in the errorMap from being thrown\n * so that you may implement your own handler\n */\n ignoreMap: IgnoreHttpErrorMap = {}\n): void {\n if (!info)\n return;\n\n let statusCode: HttpStatus;\n\n if (typeof(info) === 'number') {\n statusCode = info;\n } else {\n statusCode = info.status;\n }\n\n const errorMap = {\n ...defaultErrors,\n ...customErrorMap\n };\n\n if (!statusCode)\n return;\n\n if (!Core.ErrorHelper.isStatusCodeError(statusCode))\n return;\n\n if (statusCode === HttpStatus.InternalServer) {\n if (!ignoreMap.internalServerError)\n Core.ErrorHelper.throw(new UnspecifiedError());\n return;\n }\n\n if (statusCode === HttpStatus.NotFound) {\n if (!ignoreMap.notFound)\n Core.ErrorHelper.throw(new errorMap.notFound());\n return;\n }\n\n if (statusCode === HttpStatus.Forbidden) {\n /**\n * TODO: Work out how to go about handling all forbidden errors, such as region locking, year levels,\n * ratings, and privacy.\n */\n if (!ignoreMap.forbidden)\n Core.ErrorHelper.throw(new errorMap.forbidden.privacy());\n return;\n }\n\n if (!ignoreMap.badRequest)\n Core.ErrorHelper.throw(new errorMap.badRequest());\n}\n\nexport function handleXhrError(xhr: Xhr, customErrorMap?: HttpErrorMap): void {\n handleHttpError(xhr.status, customErrorMap);\n}","import { useEffect } from 'react';\n\nimport { Flight } from 'libs/common/flight';\n\nimport { handleHttpError, HttpErrorMap, IgnoreHttpErrorMap } from 'libs/shared/errors/handlers/HttpErrorHandlers';\n\nfunction generateCacheKey(flightObjs: Array<Flight.Response<any>>): string {\n return flightObjs.map(obj => obj.statusCode).join(':');\n}\n\n// TODO: Change this to just `useHandleHttpError` and only accept a status code.\nexport function useHandleObjectError(\n _flightObjs: Flight.Response<any> | Array<Flight.Response<any>>,\n customErrors?: HttpErrorMap,\n ignoreErrors?: IgnoreHttpErrorMap\n): void {\n const flightObjs = Array.isArray(_flightObjs) ? _flightObjs : [_flightObjs];\n\n useEffect(() => {\n flightObjs.forEach(obj => {\n handleHttpError(obj.statusCode, customErrors, ignoreErrors);\n });\n }, [ generateCacheKey(flightObjs), customErrors, ignoreErrors ]);\n}","import React from 'react';\n\nimport { LayoutHelper } from 'libs/shared/utils/LayoutHelper';\n\nexport function useLockContentWidth(): void {\n React.useEffect(() => {\n LayoutHelper.lockContentWidth();\n return () => LayoutHelper.unlockContentWidth();\n }, []);\n}","import React from 'react';\n\nimport { IconCircle } from 'libs/shared/components/icon-circle/IconCircle';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport { ShareType } from '../enums/ShareType';\nimport { ShareLink } from '../interfaces/ShareLink';\n\ninterface ShareAvatarProps {\n shareLink: ShareLink;\n classroomName?: string;\n}\n\nexport function ShareAvatar(props: ShareAvatarProps): JSX.Element {\n return (\n <div className='d-flex align-items-center'>\n <div className='d-flex align-items-center justify-content-center'>\n <div>\n <IconCircle\n svgName={icons[props.shareLink.type]}\n variant={iconColours[props.shareLink.type]}\n textVariant='white'\n svgWrapperClassName='p-1'\n />\n </div>\n <div className='d-flex flex-column ms-2'>\n <label className='m-0'>{getTitle(props)}</label>\n <span className='text-secondary'>{getSubtitle(props)}</span>\n </div>\n </div>\n </div>\n );\n}\n\nconst icons = {\n [ShareType.Open]: cvSvgLibrary.School,\n [ShareType.Link]: cvSvgLibrary.Link,\n [ShareType.Classroom]: cvSvgLibrary.Classrooms,\n [ShareType.Live]: cvSvgLibrary.Play\n};\n\nconst iconColours = {\n [ShareType.Open]: 'blue',\n [ShareType.Link]: 'black',\n [ShareType.Classroom]: 'teal',\n [ShareType.Live]: 'purple'\n};\n\nconst titles = {\n [ShareType.Open]: 'Open classroom',\n [ShareType.Link]: 'Link',\n [ShareType.Classroom]: 'Classroom',\n [ShareType.Live]: 'Live'\n};\n\nfunction pluralize(count: number, singular: string, plural: string) {\n return count === 1 ? singular : plural;\n}\n\nfunction getTitle({ shareLink, classroomName }: ShareAvatarProps) {\n if (shareLink.type === ShareType.Classroom && classroomName)\n return classroomName;\n\n return titles[shareLink.type];\n}\n\nfunction getSubtitle({ shareLink }: ShareAvatarProps) {\n if (shareLink.type === ShareType.Classroom) {\n const groupCount = shareLink.recipients?.filter(r => r.recipientTypeId === MasterType.ClassroomGroup).length ?? 0;\n const studentCount = shareLink.recipients?.filter(r => r.recipientTypeId === MasterType.User).length ?? 0;\n\n if (groupCount && studentCount)\n return `${groupCount} ${pluralize(groupCount, 'group', 'groups')}, ${studentCount} ${pluralize(studentCount, 'student', 'students')}`;\n\n if (groupCount)\n return `${groupCount} ${pluralize(groupCount, 'group', 'groups')}`;\n\n if (studentCount)\n return `${studentCount} ${pluralize(studentCount, 'student', 'students')}`;\n\n return `All students in classroom can view`;\n }\n\n if (shareLink.type === ShareType.Open)\n return 'Anyone in my school can view';\n\n if (shareLink.type === ShareType.Link)\n return 'Anyone with a link can view';\n\n if (shareLink.type === ShareType.Live)\n return 'Live now';\n\n return 'Anyone can view for 30 days';\n}","import React from 'react';\nimport { CopyToClipboard } from 'react-copy-to-clipboard';\n\nimport { LocationContext } from 'libs/analytics/interfaces';\n\nimport { SharedObjectImage } from 'libs/shared/apps/share/components/shared-object-image/SharedObjectImage';\nimport { IconButton } from 'libs/shared/components/icon-button/IconButton';\nimport { ImageSize } from 'libs/shared/enums/Images';\nimport { BaseObject } from 'libs/shared/interfaces';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\n\nimport { ShareAvatar } from 'apps/share-v2/components/ShareAvatar';\nimport { Pincode } from 'apps/share-v2/interfaces/Pincode';\nimport { ShareLink } from 'apps/share-v2/interfaces/ShareLink';\n\ninterface ShareOptionsProps {\n sharedObject?: BaseObject;\n shareLink?: ShareLink;\n pinCode?: Pincode;\n}\n\nexport function ShareOptions(props: ShareOptionsProps) {\n console.log('ShareOptions', props);\n\n function onExpandCode() {\n console.log('Expanding code..');\n }\n\n const qrCodeValue = props.shareLink?.link?.shortenedUrl ?? '';\n \n return (\n <div className='mb-4'>\n <div className='d-flex gap-2'>\n\n { props.sharedObject && (\n <div style={{ minWidth: 180 }} className='d-flex flex-column'>\n <SharedObjectImage\n object={props.sharedObject}\n showVideoMetadata\n locationContext={LocationContext.Insights}\n imageOptions={{ size: ImageSize.Medium }}\n showCollectionMask\n showVideoCount\n />\n </div>\n )}\n \n <div className='d-flex flex-column justify-content-end'>\n <div className='flex-grow-1' />\n {props.shareLink && <ShareAvatar shareLink={props.shareLink} />}\n <div className='flex-grow-1' />\n <div className='d-flex gap-2'>\n <IconButton\n svgName={cvSvgLibrary.Share}\n className='btn btn-outline-dark'\n appLink={{\n application: AppChannels.SHARE_V2,\n action: Actions.ShareV2.LINK,\n args: [props.sharedObject?.id],\n params: {\n entityType: props.sharedObject?.type,\n shareId: props.shareLink?.shareId\n }\n }}\n >\n Share a link or embed\n </IconButton>\n <IconButton\n svgName={cvSvgLibrary.Download}\n onClick={() => console.log('QR code..')}\n className='btn btn-outline-dark'\n appLink={{\n application: AppChannels.INSIGHTS,\n action: Actions.Insights.QR_CODE,\n params: {\n value: qrCodeValue\n }\n }}\n >\n QR code\n </IconButton>\n </div>\n </div>\n\n <div className='flex-grow-1' />\n\n {props.pinCode && (\n <div className='border p-3 rounded-3 d-flex flex-column align-items-center'>\n <p>Go to <a href='https://staging.clickview.net/pin' target='_blank' className='text-info'>staging.clickview.net/pin</a> and enter PIN:</p>\n <div className='d-flex align-items-center'>\n <h4 className='mb-0 pb-0 me-1'>{props.pinCode?.code}</h4>\n <CopyToClipboard text={props.pinCode?.code}>\n <IconButton\n svgName={cvSvgLibrary.Copy}\n className='btn'\n />\n </CopyToClipboard>\n <IconButton\n svgName={cvSvgLibrary.NewWindow}\n onClick={onExpandCode}\n className='btn'\n />\n </div>\n </div>\n )}\n </div>\n </div>\n );\n}","import React from 'react';\n\nimport { Flight } from 'libs/common/react/index';\n\nimport { AnalyticsFilterHelper } from 'libs/shared/apps/analytics/utils/AnalyticsFilterUtils';\nimport { IconButton } from 'libs/shared/components/icon-button/IconButton';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { PermissionName } from 'libs/shared/enums/PermissionName';\nimport { ConfigRequests } from 'libs/shared/flight-requests/ConfigRequests';\nimport { PlaylistRequests } from 'libs/shared/flight-requests/PlaylistRequests';\nimport { SeriesRequests } from 'libs/shared/flight-requests/SeriesRequests';\nimport { useHandleObjectError } from 'libs/shared/hooks/UseHandleObjectError';\nimport { useLockContentWidth } from 'libs/shared/hooks/useLockContentWidth';\nimport { usePermissions } from 'libs/shared/hooks/usePermissions';\nimport { useSetPageMetadata } from 'libs/shared/hooks/useSetPageMetadata';\nimport { useSettings } from 'libs/shared/hooks/useSettings';\nimport { Config, Playlist, Series, VideoTypes } from 'libs/shared/interfaces';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\nimport { ShareOptions } from 'apps/insights/components/share-options/ShareOptions';\nimport { InsightsHeader } from 'apps/my-shares/components/insights-header/InsightsHeader';\nimport { getInsightsClipTabs, getInsightsInteractiveTabs, getInsightsPlaylistTabs, getInsightsSeriesTabs, getInsightsVideoTabs } from 'apps/my-shares/utils/InsightsAppLinkUtils';\nimport { ShareType } from 'apps/share-v2/enums/ShareType';\nimport { ShareRequests } from 'apps/share-v2/flight-requests/ShareRequests';\nimport { Pincode } from 'apps/share-v2/interfaces/Pincode';\nimport { ShareLink } from 'apps/share-v2/interfaces/ShareLink';\n\ninterface ShareOptionsViewProps {\n objectId: string;\n typeId: MasterType;\n shareId?: string;\n}\n\nexport function ShareOptionsView(props: ShareOptionsViewProps) {\n const config = Flight.useBasicFetch<Config>(ConfigRequests.config());\n const shareLink = Flight.useBasicFetch<ShareLink>(props.shareId && ShareRequests.getShareLink(props.shareId));\n const pinCode = Flight.useBasicFetch<Pincode>(props.shareId && ShareRequests.getPincodeByShareId(props.shareId));\n\n const { hasShareFlowV2 } = useSettings(null);\n const { hasPermissions } = usePermissions();\n\n const isVideo = () => [ MasterType.Video, MasterType.Clip, MasterType.Interactive ].includes(props.typeId);\n const isSeries = () => props.typeId === MasterType.Series;\n const isPlaylist = () => props.typeId === MasterType.Playlist;\n\n const videoRequest = isVideo() && VideoHelper.getVideoRequest(props.objectId, props.typeId);\n const video = Flight.useBasicFetch<VideoTypes>(videoRequest);\n\n const seriesRequest = isSeries() && SeriesRequests.series(props.objectId);\n const series = Flight.useBasicFetch<Series>(seriesRequest);\n\n const playlistRequest = isPlaylist() && PlaylistRequests.getPlaylist(props.objectId);\n const playlist = Flight.useBasicFetch<Playlist>(playlistRequest);\n\n const audienceAppLinkParams = AnalyticsFilterHelper.getAudienceAppLinkParams();\n const dateRangeAppLinkParams = AnalyticsFilterHelper.getDateRangeAppLinkParams();\n const params = {\n ...audienceAppLinkParams,\n ...dateRangeAppLinkParams\n };\n\n useLockContentWidth();\n useSetPageMetadata({ title: video.data?.name ?? series.data?.name ?? playlist.data?.name });\n useHandleObjectError([ video, series, playlist ]);\n\n function getInsightsTabs() {\n if (props.typeId === MasterType.Interactive)\n return getInsightsInteractiveTabs(props.objectId, 'shareOptions', params, hasShareFlowV2);\n\n if (props.typeId === MasterType.Clip)\n return getInsightsClipTabs(props.objectId, 'shareOptions', params, hasShareFlowV2);\n\n if (props.typeId === MasterType.Video)\n return getInsightsVideoTabs(props.objectId, 'shareOptions', params, hasShareFlowV2);\n\n if (props.typeId === MasterType.Series)\n return getInsightsSeriesTabs(props.objectId, 'shareOptions', params);\n\n if (props.typeId === MasterType.Playlist)\n return getInsightsPlaylistTabs(props.objectId, 'shareOptions', params);\n }\n\n return (\n <div className='px-3'>\n <InsightsHeader\n video={video.data ?? series.data ?? playlist.data}\n dateRangeAppLinkParams={dateRangeAppLinkParams}\n tabs={getInsightsTabs()}\n hasAnalytics={hasPermissions(PermissionName.ViewCustomerAnalytics)}\n analyticsWebUrl={config.data?.analyticsWebUrl}\n hasShareFlowV2={hasShareFlowV2}\n shareId={props.shareId}\n />\n <ShareOptions\n sharedObject={video.data ?? series.data ?? playlist.data}\n shareLink={shareLink.data}\n pinCode={pinCode.data}\n />\n <div className='d-flex align-items-center'>\n <h3 className='p-0 m-0'>Students who have viewed this video</h3>\n {shareLink.data?.type === ShareType.Classroom && (\n <IconButton\n svgName={cvSvgLibrary.Plus}\n onClick={() => console.log('Add new student..')}\n className='btn btn-outline-dark ms-auto'\n >\n Add new student\n </IconButton>\n )}\n </div>\n <div className='border rounded-1 d-flex flex-column mt-3'>\n <div className='d-flex flex-row border-bottom p-2'>\n <h5 className='w-25'>Name</h5>\n <h5 className='w-25'>Views</h5>\n <h5 className='w-50'>Engagement</h5>\n </div>\n <div className='d-flex flex-column justify-content-center align-items-center p-5'>\n <h3 className='mt-3 mb-3'>⏱️ Waiting for students to view...</h3>\n </div>\n </div>\n </div>\n );\n}","export enum ShareType {\n Link = 'Link',\n Classroom = 'Classroom',\n Open = 'Open',\n Live = 'Live'\n}","import { HttpVerbs } from 'libs/common/backbone/enums/HttpVerbs';\nimport { UrlHelper } from 'libs/common/backbone/utils/UrlHelper';\nimport { Flight } from 'libs/common/flight';\n\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { BasePaginatedCollection } from 'libs/shared/interfaces';\n\nimport { CreateShareLinkRequest } from 'apps/share-v2/interfaces/CreateShareLinkRequest';\nimport { ShareLink } from 'apps/share-v2/interfaces/ShareLink';\n\nconst normalizeOptions: Flight.NormalizeOptions = {\n namespace: 'share-v2'\n};\n\nexport interface GetSentSharesParams {\n cursor?: string;\n limit?: number;\n objectTypeId?: MasterType | MasterType[];\n recipientUserId?: string | string[];\n recipientGroupId?: string | string[];\n start?: string;\n end?: string;\n scopeId?: string;\n}\n\nexport const ShareRequests = {\n createShareLink(\n data: CreateShareLinkRequest,\n success?: (shareLink: ShareLink) => void,\n error?: () => void,\n always?: () => void\n ): Flight.Request {\n return {\n url: '/api/share/v2/shares',\n key: 'create:share-v2:link',\n type: HttpVerbs.POST,\n data,\n normalizeOptions,\n invalidationKeys: [\n `share:link:object:${data.objectId}`,\n `privacy:${data.objectId}`,\n 'sent:shares',\n 'get:share-v2:shares:object'\n ],\n success,\n error,\n always\n };\n },\n\n getShareLink(\n shareId: string,\n success?: (shareLink: ShareLink) => void,\n error?: () => void,\n always?: () => void\n ): Flight.Request {\n return {\n url: `/api/share/v2/shares/${shareId}`,\n key: `get:share-v2:link:${shareId}`,\n type: HttpVerbs.GET,\n normalizeOptions,\n success,\n error,\n always\n };\n },\n\n getSharesByObjectId(\n objectId: string | number,\n success?: (shares: ShareLink[]) => void,\n error?: () => void,\n always?: () => void\n ): Flight.Request {\n return {\n url: `/api/share/v2/shares/objects/${objectId}`,\n key: `get:share-v2:shares:object:${objectId}`,\n type: HttpVerbs.GET,\n normalizeOptions,\n success,\n error,\n always\n };\n },\n\n getSentShares(\n params: GetSentSharesParams = {},\n success?: (response: BasePaginatedCollection<ShareLink>[]) => void,\n error?: () => void,\n always?: () => void\n ): Flight.Request {\n const adaptedParams = {\n scopeId: params.scopeId,\n limit: params.limit || 25,\n offset: parseInt(params.cursor) || 0\n };\n\n const key = Object.values(adaptedParams).join(':');\n\n return {\n url: UrlHelper.urlBuilder('/api/share/v2/shares/sent', adaptedParams),\n key: `sent:shares-v2:${key}`,\n formatData: (response: ShareLink[]) => {\n return {\n data: response,\n count: response.length,\n pagination: {\n cursors: {\n next: adaptedParams.offset + response.length\n }\n }\n };\n },\n type: HttpVerbs.GET,\n normalize: false,\n success,\n error,\n always\n };\n },\n\n createPincode(shareId: string): Flight.Request {\n return {\n url: `/api/share/v2/shares/${shareId}/pincode`,\n key: 'create:share-v2:pincode',\n type: HttpVerbs.POST\n };\n },\n\n getPincode(code: string): Flight.Request {\n return {\n url: `/api/share/v2/shares/pincode?code=${code}`,\n key: `get:share-v2:pincode:${code}`\n };\n },\n\n getPincodeByShareId(shareId: string): Flight.Request {\n return {\n url: `/api/share/v2/shares/${shareId}/pincode`,\n key: `get:share-v2:${shareId}:pincode`\n };\n }\n};","\"use strict\";\n\nvar deselectCurrent = require(\"toggle-selection\");\n\nvar clipboardToIE11Formatting = {\n \"text/plain\": \"Text\",\n \"text/html\": \"Url\",\n \"default\": \"Text\"\n}\n\nvar defaultMessage = \"Copy to clipboard: #{key}, Enter\";\n\nfunction format(message) {\n var copyKey = (/mac os x/i.test(navigator.userAgent) ? \"⌘\" : \"Ctrl\") + \"+C\";\n return message.replace(/#{\\s*key\\s*}/g, copyKey);\n}\n\nfunction copy(text, options) {\n var debug,\n message,\n reselectPrevious,\n range,\n selection,\n mark,\n success = false;\n if (!options) {\n options = {};\n }\n debug = options.debug || false;\n try {\n reselectPrevious = deselectCurrent();\n\n range = document.createRange();\n selection = document.getSelection();\n\n mark = document.createElement(\"span\");\n mark.textContent = text;\n // avoid screen readers from reading out loud the text\n mark.ariaHidden = \"true\"\n // reset user styles for span element\n mark.style.all = \"unset\";\n // prevents scrolling to the end of the page\n mark.style.position = \"fixed\";\n mark.style.top = 0;\n mark.style.clip = \"rect(0, 0, 0, 0)\";\n // used to preserve spaces and line breaks\n mark.style.whiteSpace = \"pre\";\n // do not inherit user-select (it may be `none`)\n mark.style.webkitUserSelect = \"text\";\n mark.style.MozUserSelect = \"text\";\n mark.style.msUserSelect = \"text\";\n mark.style.userSelect = \"text\";\n mark.addEventListener(\"copy\", function(e) {\n e.stopPropagation();\n if (options.format) {\n e.preventDefault();\n if (typeof e.clipboardData === \"undefined\") { // IE 11\n debug && console.warn(\"unable to use e.clipboardData\");\n debug && console.warn(\"trying IE specific stuff\");\n window.clipboardData.clearData();\n var format = clipboardToIE11Formatting[options.format] || clipboardToIE11Formatting[\"default\"]\n window.clipboardData.setData(format, text);\n } else { // all other browsers\n e.clipboardData.clearData();\n e.clipboardData.setData(options.format, text);\n }\n }\n if (options.onCopy) {\n e.preventDefault();\n options.onCopy(e.clipboardData);\n }\n });\n\n document.body.appendChild(mark);\n\n range.selectNodeContents(mark);\n selection.addRange(range);\n\n var successful = document.execCommand(\"copy\");\n if (!successful) {\n throw new Error(\"copy command was unsuccessful\");\n }\n success = true;\n } catch (err) {\n debug && console.error(\"unable to copy using execCommand: \", err);\n debug && console.warn(\"trying IE specific stuff\");\n try {\n window.clipboardData.setData(options.format || \"text\", text);\n options.onCopy && options.onCopy(window.clipboardData);\n success = true;\n } catch (err) {\n debug && console.error(\"unable to copy using clipboardData: \", err);\n debug && console.error(\"falling back to prompt\");\n message = format(\"message\" in options ? options.message : defaultMessage);\n window.prompt(message, text);\n }\n } finally {\n if (selection) {\n if (typeof selection.removeRange == \"function\") {\n selection.removeRange(range);\n } else {\n selection.removeAllRanges();\n }\n }\n\n if (mark) {\n document.body.removeChild(mark);\n }\n reselectPrevious();\n }\n\n return success;\n}\n\nmodule.exports = copy;\n","\"use strict\";\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.CopyToClipboard = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _copyToClipboard = _interopRequireDefault(require(\"copy-to-clipboard\"));\n\nvar _excluded = [\"text\", \"onCopy\", \"options\", \"children\"];\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar CopyToClipboard = /*#__PURE__*/function (_React$PureComponent) {\n _inherits(CopyToClipboard, _React$PureComponent);\n\n var _super = _createSuper(CopyToClipboard);\n\n function CopyToClipboard() {\n var _this;\n\n _classCallCheck(this, CopyToClipboard);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _super.call.apply(_super, [this].concat(args));\n\n _defineProperty(_assertThisInitialized(_this), \"onClick\", function (event) {\n var _this$props = _this.props,\n text = _this$props.text,\n onCopy = _this$props.onCopy,\n children = _this$props.children,\n options = _this$props.options;\n\n var elem = _react[\"default\"].Children.only(children);\n\n var result = (0, _copyToClipboard[\"default\"])(text, options);\n\n if (onCopy) {\n onCopy(text, result);\n } // Bypass onClick if it was present\n\n\n if (elem && elem.props && typeof elem.props.onClick === 'function') {\n elem.props.onClick(event);\n }\n });\n\n return _this;\n }\n\n _createClass(CopyToClipboard, [{\n key: \"render\",\n value: function render() {\n var _this$props2 = this.props,\n _text = _this$props2.text,\n _onCopy = _this$props2.onCopy,\n _options = _this$props2.options,\n children = _this$props2.children,\n props = _objectWithoutProperties(_this$props2, _excluded);\n\n var elem = _react[\"default\"].Children.only(children);\n\n return /*#__PURE__*/_react[\"default\"].cloneElement(elem, _objectSpread(_objectSpread({}, props), {}, {\n onClick: this.onClick\n }));\n }\n }]);\n\n return CopyToClipboard;\n}(_react[\"default\"].PureComponent);\n\nexports.CopyToClipboard = CopyToClipboard;\n\n_defineProperty(CopyToClipboard, \"defaultProps\", {\n onCopy: undefined,\n options: undefined\n});","\"use strict\";\n\nvar _require = require('./Component'),\n CopyToClipboard = _require.CopyToClipboard;\n\nCopyToClipboard.CopyToClipboard = CopyToClipboard;\nmodule.exports = CopyToClipboard;","\nmodule.exports = function () {\n var selection = document.getSelection();\n if (!selection.rangeCount) {\n return function () {};\n }\n var active = document.activeElement;\n\n var ranges = [];\n for (var i = 0; i < selection.rangeCount; i++) {\n ranges.push(selection.getRangeAt(i));\n }\n\n switch (active.tagName.toUpperCase()) { // .toUpperCase handles XHTML\n case 'INPUT':\n case 'TEXTAREA':\n active.blur();\n break;\n\n default:\n active = null;\n break;\n }\n\n selection.removeAllRanges();\n return function () {\n selection.type === 'Caret' &&\n selection.removeAllRanges();\n\n if (!selection.rangeCount) {\n ranges.forEach(function(range) {\n selection.addRange(range);\n });\n }\n\n active &&\n active.focus();\n };\n};\n"],"names":["namespace","BASE_IMAGE_CLASS_NAME","InsightsMask","className","SharedObjectImage","props","ref","el","object","fixedHeight","style","width","offsetHeight","VideoHelper","typeId","MasterType","useVideoThumbnail","image","ImageHelper","imageType","imageClassName","imageFallbackComponent","ImageFallback","type","svgContainerClassName","url","getBgColorClass","name","extraClasses","getImageProps","showInsightsMask","AppLink","appLink","VideoThumbnail","video","imageOptions","textPosition","ThumbnailTextPosition","hideDuration","hideMask","requireMarking","Text","phrase","options","smartCount","CollectionThumbnail","collection","analyticsData","id","analyticsOptions","entity","ShareViewHelper","actionType","location","locationContext","showMask","showCollectionMask","showVideoCount","BaseImage","data","defaultProps","size","BaseCollectionThumbnailTitle","title","CollectionThumbnailTitle","firstVideo","collectionVideos","videos","count","playlist","clips","interactives","ArrayHelper","getFirstVideo","videoCount","totalCount","getVideoCount","showTexts","length","subText","toString","MasterTypeHelper","preventFocus","SvgContainer","svgName","hoverText","hideRating","hideVideoTypeBadge","TitleSubText","subTextAppLink","titleAppLink","defaultErrors","notFound","forbidden","rating","yearLevel","region","privacy","badRequest","internalServerError","handleHttpError","info","customErrorMap","ignoreMap","statusCode","status","errorMap","generateCacheKey","flightObjs","map","obj","join","useHandleObjectError","_flightObjs","customErrors","ignoreErrors","Array","isArray","useEffect","forEach","useLockContentWidth","ShareAvatar","IconCircle","icons","shareLink","variant","iconColours","textVariant","svgWrapperClassName","classroomName","ShareType","titles","groupCount","recipients","filter","r","recipientTypeId","studentCount","pluralize","getSubtitle","singular","plural","ShareOptions","console","log","qrCodeValue","link","shortenedUrl","sharedObject","minWidth","showVideoMetadata","IconButton","application","action","args","params","entityType","shareId","onClick","value","pinCode","href","target","code","CopyToClipboard","text","ShareOptionsView","config","ConfigRequests","ShareRequests","hasShareFlowV2","useSettings","hasPermissions","usePermissions","videoRequest","includes","objectId","seriesRequest","SeriesRequests","series","playlistRequest","PlaylistRequests","audienceAppLinkParams","dateRangeAppLinkParams","useSetPageMetadata","InsightsHeader","tabs","hasAnalytics","PermissionName","analyticsWebUrl","normalizeOptions","createShareLink","success","error","always","key","invalidationKeys","getShareLink","getSharesByObjectId","getSentShares","adaptedParams","scopeId","limit","offset","parseInt","cursor","Object","values","formatData","response","pagination","cursors","next","normalize","createPincode","getPincode","getPincodeByShareId","deselectCurrent","clipboardToIE11Formatting","module","exports","debug","message","reselectPrevious","range","selection","mark","document","createRange","getSelection","createElement","textContent","ariaHidden","all","position","top","clip","whiteSpace","webkitUserSelect","MozUserSelect","msUserSelect","userSelect","addEventListener","e","stopPropagation","format","preventDefault","clipboardData","warn","window","clearData","setData","onCopy","body","appendChild","selectNodeContents","addRange","execCommand","Error","err","copyKey","test","navigator","userAgent","replace","prompt","removeRange","removeAllRanges","removeChild","_typeof","Symbol","iterator","constructor","prototype","defineProperty","_react","_interopRequireDefault","_copyToClipboard","_excluded","__esModule","ownKeys","enumerableOnly","keys","getOwnPropertySymbols","symbols","sym","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","i","arguments","source","_defineProperty","getOwnPropertyDescriptors","defineProperties","_defineProperties","descriptor","configurable","writable","_setPrototypeOf","o","p","setPrototypeOf","__proto__","_assertThisInitialized","self","ReferenceError","_getPrototypeOf","getPrototypeOf","_React$PureComponent","subClass","superClass","TypeError","create","_inherits","Constructor","protoProps","Derived","hasNativeReflectConstruct","_super","Reflect","construct","sham","Proxy","Boolean","valueOf","call","_isNativeReflectConstruct","result","Super","NewTarget","this","_possibleConstructorReturn","_this","instance","_classCallCheck","_len","_key","concat","event","_this$props","children","elem","Children","only","_this$props2","excluded","sourceKeys","indexOf","_objectWithoutPropertiesLoose","sourceSymbolKeys","propertyIsEnumerable","_objectWithoutProperties","cloneElement","PureComponent","undefined","rangeCount","active","activeElement","ranges","getRangeAt","tagName","toUpperCase","blur","focus"],"sourceRoot":""}
@@ -1,2 +0,0 @@
1
- "use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[3036],{54405:(e,a,t)=>{t.d(a,{X:()=>n});var n={interactive:function(){return{url:"/mocks/insights/interactive.json",key:"demo:interactive",normalize:!1}},interactiveMetadata:function(){return{url:"/mocks/insights/interactive-metadata.json",key:"demo:interactive:metadata",normalize:!1}},interactiveResults:function(){return{url:"/mocks/insights/interactive-results.json",key:"demo:interactive:results",normalize:!1}},videoViews:function(){return{url:"/mocks/insights/video-views.json",key:"demo:video:views",normalize:!1}},users:function(){return{url:"/mocks/insights/users.json",key:"demo:users",normalize:!1}},individualHeatmap:function(){return{url:"/mocks/insights/individual-heatmap.json",key:"demo:individual:heatmap",normalize:!1}},aggregateHeatmap:function(){return{url:"/mocks/insights/aggregate-heatmap.json",key:"demo:aggregate:heatmap",normalize:!1}}}},9566:(e,a,t)=>{t.d(a,{G:()=>d,V:()=>m});var n=t(23481),i=t(110),r=t(35223),s=t(14070),o=t(97291),l=t(93975),c=n.T.encloseNamespace("myShares.demoInsights"),d={share:{shareId:"demo-insights",type:l.y.Link},sharedObject:null,shareRecipients:null,dateShared:i.O.subtract(new Date,7,"days").toISOString(),viewCount:23},u={application:o.O.MY_SHARES,action:s.e.MyShares.INTERACTIVE_OVERVIEW_DEMO},m={svgName:r.vn.Analytics,label:c("demoInsights"),appLink:u,group:"insights",className:"btn btn-outline-dark"}},30475:(e,a,t)=>{t.r(a),t.d(a,{InteractiveInsightsOverviewDemoView:()=>D});var n=t(32735),i=t(23481),r=t(2948),s=t(20354),o=t(75896),l=t(26025),c=t(38143),d=t(39151),u=t(54405),m=t(31949),v=t(93322),p=t(79612),h=t(88630),g=t(26203),y=t(54948),E=t(82602),f=t(65853),k=t(91693),S=t(83345),A=t(36532),b=t(49080),I=t(35223),O=t(86099),N=t(24758),w=t(9566),T="insights.shareInfoDemo",M=i.T.encloseNamespace(T);function L(e){var a=e.video&&f.R.getIconAndText({entity:e.video,entityTypeId:e.video.typeId,hasStudentExp:!1,isPasswordProtected:null,linkExpireDate:null,privacy:{privacy:"public",overrideRestrictions:!1},status:b.F.Active,yearGroups:null});return n.createElement("div",{className:"mb-4"},n.createElement("h2",{className:"h4"},n.createElement(S.x,{namespace:T,phrase:"shareInfo"})),n.createElement("div",{className:"d-flex border p-3 rounded-3 align-items-center justify-content-between"},n.createElement("div",{className:"d-flex align-items-center gap-2"},n.createElement(N.A,{shareRecipients:null,imageCdnUrl:e.imageCdnUrl,hasShareLink:!0,maxAvatars:4,shareLinkText:null==a?void 0:a.text}),"·",n.createElement("p",{className:"mb-0"},(0,E.WU)(w.G.dateShared)),"·",n.createElement("p",{className:"mb-0"},n.createElement(S.x,{namespace:T,phrase:"views",options:{count:w.G.viewCount}}))),n.createElement(A.u,{id:"shareButton",title:M("demoOnly"),spanHack:!0},n.createElement(k.h,{appLink:(0,O.YK)(e.video),svgName:I.vn.Share,className:"btn btn-outline-dark pointer-events-none"},n.createElement(S.x,{namespace:T,phrase:"share"})))))}var R=t(10447),_=t(14070),j=t(97291);function C(e,a){(null==a||a>e.length)&&(a=e.length);for(var t=0,n=Array(a);t<a;t++)n[t]=e[t];return n}var x=i.T.encloseNamespace("insights.interactiveInsightsOverviewView");function D(){var e,a,t,i,E,f,k,S=(f=(0,r.D)(c.g.ANONYMISE_USERS),k=1,function(e){if(Array.isArray(e))return e}(f)||function(e,a){var t=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=t){var n,i,r,s,o=[],l=!0,c=!1;try{if(r=(t=t.call(e)).next,0===a){if(Object(t)!==t)return;l=!1}else for(;!(l=(n=r.call(t)).done)&&(o.push(n.value),o.length!==a);l=!0);}catch(e){c=!0,i=e}finally{try{if(!l&&null!=t.return&&(s=t.return(),Object(s)!==s))return}finally{if(c)throw i}}return o}}(f,k)||function(e,a){if(e){if("string"==typeof e)return C(e,a);var t={}.toString.call(e).slice(8,-1);return"Object"===t&&e.constructor&&(t=e.constructor.name),"Map"===t||"Set"===t?Array.from(e):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?C(e,a):void 0}}(f,k)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}())[0];(0,v.F)();var A=s.a.useBasicFetch(m.N.currentUser()),b=s.a.useBasicFetch(d.L.config()),I=s.a.useBasicFetch(u.X.interactiveMetadata()),O=s.a.useBasicFetch(u.X.interactive()),N=l.B.getAudienceAppLinkParams(),w=l.B.getDateRangeAppLinkParams(),T=s.a.useBasicFetch(u.X.interactiveResults()),M=1===(null===(e=N.classrooms)||void 0===e?void 0:e.length)&&!(null===(a=N.classroomGroups)||void 0===a?void 0:a.length),D=s.a.useBasicFetch(M&&h.F.getClassroomStudents(o.m.first(N.classrooms))),F=s.a.useBasicFetch(u.X.aggregateHeatmap()),V=s.a.useBasicFetch(u.X.videoViews());(0,p.M)({title:I.data?x("pageTitle",{video:null===(t=I.data)||void 0===t?void 0:t.name}):null});var B=A.data&&b.data&&I.data&&O.data&&T.data&&(!M||D.data)&&F.data&&!!V.data,U=Object.assign(Object.assign({},N),w),H=function(e,a){return{resultsAppLink:{application:j.O.MY_SHARES,action:_.e.MyShares.INTERACTIVE_STUDENTS_DEMO,args:[""],params:a},questionsAppLink:{application:j.O.MY_SHARES,action:_.e.MyShares.INTERACTIVE_QUESTIONS_DEMO,args:[""],params:a},heatmapAppLink:{application:j.O.MY_SHARES,action:_.e.MyShares.INTERACTIVE_HEATMAP_DEMO,args:[""],params:a}}}(0,U);return n.createElement("div",{className:"px-3"},n.createElement(g.j,{video:I.data,tabs:(0,R.aq)(null===(i=I.data)||void 0===i?void 0:i.id,"insights",U),dateRangeAppLinkParams:w,isDemo:!0}),n.createElement(L,{video:I.data,imageCdnUrl:null===(E=b.data)||void 0===E?void 0:E.imageCdnUrl}),n.createElement(y.m,{aggregateEngagement:F.data,interactive:O.data,interactiveMetadata:I.data,classroomStudents:D.data,results:T.data,videoViews:V.data,config:b.data,interactiveInsightsAppLinks:H,classroomFilterOnly:!1,anonymiseUsers:S,params:U,hasDataLoaded:B,hasShared:!0}))}},93975:(e,a,t)=>{var n;t.d(a,{y:()=>n}),function(e){e.Link="Link",e.Classroom="Classroom",e.Open="Open",e.Live="Live"}(n||(n={}))}}]);
2
- //# sourceMappingURL=3036-d18c598435-lite.chunk.js.map