@clickview/lite 0.75.0-rc.8 → 0.75.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (105) hide show
  1. package/dist/bundles.json +1 -1
  2. package/dist/css/{7103-lite-fef3024f61.chunk.css → 2878-lite-d8e0bf912a.chunk.css} +1 -1
  3. package/dist/css/{1243-lite-13eda8f6a0.chunk.css → 3615-lite-240342ff8e.chunk.css} +1 -1
  4. package/dist/css/{1867-lite-8baa8af02b.chunk.css → 4630-lite-0157b1c437.chunk.css} +1 -1
  5. package/dist/css/{4203-lite-9ffab89741.chunk.css → 8362-lite-10810fdef2.chunk.css} +1 -1
  6. package/dist/languages/en.json +1 -1
  7. package/dist/scripts/{104-7ee25cbbb8-lite.chunk.js → 104-da7394bcfa-lite.chunk.js} +2 -2
  8. package/dist/scripts/104-da7394bcfa-lite.chunk.js.map +1 -0
  9. package/dist/scripts/1192-bb27568f21-lite.chunk.js +2 -0
  10. package/dist/scripts/1192-bb27568f21-lite.chunk.js.map +1 -0
  11. package/dist/scripts/1199-cf2cb206b5-lite.chunk.js +2 -0
  12. package/dist/scripts/1199-cf2cb206b5-lite.chunk.js.map +1 -0
  13. package/dist/scripts/1502-9836df10cd-lite.chunk.js +2 -0
  14. package/dist/scripts/1502-9836df10cd-lite.chunk.js.map +1 -0
  15. package/dist/scripts/{1610-9ccecc428a-lite.chunk.js → 1610-0edaa98d40-lite.chunk.js} +2 -2
  16. package/dist/scripts/{1610-9ccecc428a-lite.chunk.js.map → 1610-0edaa98d40-lite.chunk.js.map} +1 -1
  17. package/dist/scripts/{7103-3b181ec69b-lite.chunk.js → 2878-487c4a8e1a-lite.chunk.js} +2 -2
  18. package/dist/scripts/2878-487c4a8e1a-lite.chunk.js.map +1 -0
  19. package/dist/scripts/{3057-1ae8087b3a-lite.chunk.js → 3057-a5bc753736-lite.chunk.js} +1 -1
  20. package/dist/scripts/{3057-1ae8087b3a-lite.chunk.js.map → 3057-a5bc753736-lite.chunk.js.map} +1 -1
  21. package/dist/scripts/3268-7be966dc82-lite.chunk.js +3 -0
  22. package/dist/scripts/3268-7be966dc82-lite.chunk.js.map +1 -0
  23. package/dist/scripts/{1243-72f3d31787-lite.chunk.js → 3615-a0da361aa5-lite.chunk.js} +2 -2
  24. package/dist/scripts/3615-a0da361aa5-lite.chunk.js.map +1 -0
  25. package/dist/scripts/{3872-6fe7371d39-lite.chunk.js → 3872-cf9a6bdae8-lite.chunk.js} +1 -1
  26. package/dist/scripts/{3872-6fe7371d39-lite.chunk.js.map → 3872-cf9a6bdae8-lite.chunk.js.map} +1 -1
  27. package/dist/scripts/4125-6d34b8b8f2-lite.chunk.js +2 -0
  28. package/dist/scripts/4125-6d34b8b8f2-lite.chunk.js.map +1 -0
  29. package/dist/scripts/4208-f22ed7a148-lite.chunk.js +2 -0
  30. package/dist/scripts/4208-f22ed7a148-lite.chunk.js.map +1 -0
  31. package/dist/scripts/4598-e25e9e03d6-lite.chunk.js +2 -0
  32. package/dist/scripts/4598-e25e9e03d6-lite.chunk.js.map +1 -0
  33. package/dist/scripts/{1867-0823a787c3-lite.chunk.js → 4630-4a35ecbf2b-lite.chunk.js} +2 -2
  34. package/dist/scripts/4630-4a35ecbf2b-lite.chunk.js.map +1 -0
  35. package/dist/scripts/6475-f019242ec2-lite.chunk.js +2 -0
  36. package/dist/scripts/6475-f019242ec2-lite.chunk.js.map +1 -0
  37. package/dist/scripts/6550-1d60d863e8-lite.chunk.js +2 -0
  38. package/dist/scripts/6550-1d60d863e8-lite.chunk.js.map +1 -0
  39. package/dist/scripts/{6695-4e01b4a18c-lite.chunk.js → 6695-4ae0acad94-lite.chunk.js} +1 -1
  40. package/dist/scripts/{6695-4e01b4a18c-lite.chunk.js.map → 6695-4ae0acad94-lite.chunk.js.map} +1 -1
  41. package/dist/scripts/6756-3c7f911759-lite.chunk.js +3 -0
  42. package/dist/scripts/6756-3c7f911759-lite.chunk.js.map +1 -0
  43. package/dist/scripts/6790-1695fcf576-lite.chunk.js +2 -0
  44. package/dist/scripts/6790-1695fcf576-lite.chunk.js.map +1 -0
  45. package/dist/scripts/{7148-50ccb48a44-lite.chunk.js → 7148-e314dd9a4e-lite.chunk.js} +2 -2
  46. package/dist/scripts/7148-e314dd9a4e-lite.chunk.js.map +1 -0
  47. package/dist/scripts/7438-35b887a48e-lite.chunk.js +2 -0
  48. package/dist/scripts/7438-35b887a48e-lite.chunk.js.map +1 -0
  49. package/dist/scripts/{8323-d6d1d07ce5-lite.chunk.js → 8323-5694456903-lite.chunk.js} +2 -2
  50. package/dist/scripts/{8323-d6d1d07ce5-lite.chunk.js.map → 8323-5694456903-lite.chunk.js.map} +1 -1
  51. package/dist/scripts/{4203-83f90f92f3-lite.chunk.js → 8362-ed5df8f4fc-lite.chunk.js} +3 -3
  52. package/dist/scripts/8362-ed5df8f4fc-lite.chunk.js.LICENSE.txt +1 -0
  53. package/dist/scripts/{4203-83f90f92f3-lite.chunk.js.map → 8362-ed5df8f4fc-lite.chunk.js.map} +1 -1
  54. package/dist/scripts/{8732-3e8332e620-lite.chunk.js → 8732-dc5182fb69-lite.chunk.js} +1 -1
  55. package/dist/scripts/{8732-3e8332e620-lite.chunk.js.map → 8732-dc5182fb69-lite.chunk.js.map} +1 -1
  56. package/dist/scripts/8856-08061bbec5-lite.chunk.js +2 -0
  57. package/dist/scripts/8856-08061bbec5-lite.chunk.js.map +1 -0
  58. package/dist/scripts/{8957-bc83ea1180-lite.chunk.js → 8957-b3f0dbb85d-lite.chunk.js} +1 -1
  59. package/dist/scripts/{8957-bc83ea1180-lite.chunk.js.map → 8957-b3f0dbb85d-lite.chunk.js.map} +1 -1
  60. package/dist/scripts/9042-7c30ffd4f0-lite.chunk.js +2 -0
  61. package/dist/scripts/9042-7c30ffd4f0-lite.chunk.js.map +1 -0
  62. package/dist/scripts/9134-b0ae877597-lite.chunk.js +2 -0
  63. package/dist/scripts/9134-b0ae877597-lite.chunk.js.map +1 -0
  64. package/dist/scripts/{bundle-58c25f6529.min.js → bundle-941a464ef0.min.js} +3 -3
  65. package/dist/scripts/{bundle-58c25f6529.min.js.map → bundle-941a464ef0.min.js.map} +1 -1
  66. package/package.json +1 -1
  67. package/dist/scripts/104-7ee25cbbb8-lite.chunk.js.map +0 -1
  68. package/dist/scripts/1074-6dadbd8187-lite.chunk.js +0 -2
  69. package/dist/scripts/1074-6dadbd8187-lite.chunk.js.map +0 -1
  70. package/dist/scripts/1192-6ac54d734b-lite.chunk.js +0 -2
  71. package/dist/scripts/1192-6ac54d734b-lite.chunk.js.map +0 -1
  72. package/dist/scripts/1199-1cddf4e0e0-lite.chunk.js +0 -2
  73. package/dist/scripts/1199-1cddf4e0e0-lite.chunk.js.map +0 -1
  74. package/dist/scripts/1243-72f3d31787-lite.chunk.js.map +0 -1
  75. package/dist/scripts/1867-0823a787c3-lite.chunk.js.map +0 -1
  76. package/dist/scripts/3268-aa893d0068-lite.chunk.js +0 -2
  77. package/dist/scripts/3268-aa893d0068-lite.chunk.js.map +0 -1
  78. package/dist/scripts/4208-3ba21abb7c-lite.chunk.js +0 -2
  79. package/dist/scripts/4208-3ba21abb7c-lite.chunk.js.map +0 -1
  80. package/dist/scripts/4598-f5120153c2-lite.chunk.js +0 -2
  81. package/dist/scripts/4598-f5120153c2-lite.chunk.js.map +0 -1
  82. package/dist/scripts/6475-502e390010-lite.chunk.js +0 -2
  83. package/dist/scripts/6475-502e390010-lite.chunk.js.map +0 -1
  84. package/dist/scripts/6550-c621babbcb-lite.chunk.js +0 -2
  85. package/dist/scripts/6550-c621babbcb-lite.chunk.js.map +0 -1
  86. package/dist/scripts/6756-20c0ab9591-lite.chunk.js +0 -3
  87. package/dist/scripts/6756-20c0ab9591-lite.chunk.js.map +0 -1
  88. package/dist/scripts/6790-df00506bec-lite.chunk.js +0 -2
  89. package/dist/scripts/6790-df00506bec-lite.chunk.js.map +0 -1
  90. package/dist/scripts/7103-3b181ec69b-lite.chunk.js.map +0 -1
  91. package/dist/scripts/7148-50ccb48a44-lite.chunk.js.map +0 -1
  92. package/dist/scripts/7438-1162aba8b6-lite.chunk.js +0 -2
  93. package/dist/scripts/7438-1162aba8b6-lite.chunk.js.map +0 -1
  94. package/dist/scripts/8856-8ac95bf4e0-lite.chunk.js +0 -2
  95. package/dist/scripts/8856-8ac95bf4e0-lite.chunk.js.map +0 -1
  96. package/dist/scripts/9003-36ab592cc5-lite.chunk.js +0 -2
  97. package/dist/scripts/9003-36ab592cc5-lite.chunk.js.map +0 -1
  98. package/dist/scripts/9042-3092af11d5-lite.chunk.js +0 -2
  99. package/dist/scripts/9042-3092af11d5-lite.chunk.js.map +0 -1
  100. package/dist/scripts/9134-7037c2c47a-lite.chunk.js +0 -2
  101. package/dist/scripts/9134-7037c2c47a-lite.chunk.js.map +0 -1
  102. /package/dist/scripts/{4203-83f90f92f3-lite.chunk.js.LICENSE.txt → 3268-7be966dc82-lite.chunk.js.LICENSE.txt} +0 -0
  103. /package/dist/scripts/{6756-20c0ab9591-lite.chunk.js.LICENSE.txt → 6756-3c7f911759-lite.chunk.js.LICENSE.txt} +0 -0
  104. /package/dist/scripts/{8323-d6d1d07ce5-lite.chunk.js.LICENSE.txt → 8323-5694456903-lite.chunk.js.LICENSE.txt} +0 -0
  105. /package/dist/scripts/{bundle-58c25f6529.min.js.LICENSE.txt → bundle-941a464ef0.min.js.LICENSE.txt} +0 -0
@@ -1 +0,0 @@
1
- {"version":3,"file":"scripts/8856-8ac95bf4e0-lite.chunk.js","mappings":"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","sources":["file:///app/packages/libs/shared/src/apps/analytics/hooks/UseFetchInteractiveResults.ts","file:///app/packages/libs/shared/src/apps/share-v2/flight-requests/ShareRequests.ts","file:///app/packages/libs/shared/src/errors/handlers/HttpErrorHandlers.ts","file:///app/packages/libs/shared/src/hooks/UseBatchFetch.ts","file:///app/packages/libs/shared/src/hooks/UseHandleObjectError.ts","file:///app/packages/libs/shared/src/apps/analytics/components/student-results/student-results-table/StudentResultsEmptyState.tsx","file:///app/packages/libs/shared/src/apps/analytics/components/student-results/student-results-table/StudentResultsTableFilters.tsx","file:///app/packages/libs/shared/src/apps/analytics/components/student-results/student-results-table/StudentResultsTable.tsx","file:///app/packages/projects/lite/src/apps/my-shares/components/interactive-insights-students/partial-loading/partial-interactive-insights-students.scss","file:///app/packages/projects/lite/src/apps/my-shares/components/interactive-insights-students/partial-loading/PartialInteractiveInsightsStudents.tsx","file:///app/packages/projects/lite/src/apps/my-shares/components/interactive-insights-students/InteractiveInsightsStudents.tsx","file:///app/packages/projects/lite/src/apps/my-shares/hooks/useAnonSessions.ts","file:///app/packages/projects/lite/src/apps/my-shares/hooks/useInsightsClassroomStudents.ts","file:///app/packages/projects/lite/src/apps/my-shares/hooks/useInsightsInteractiveResults.ts","file:///app/packages/projects/lite/src/apps/my-shares/flight-requests/VideoViewsV2Requests.ts","file:///app/packages/projects/lite/src/apps/my-shares/hooks/useInsightEngagement.ts","file:///app/packages/projects/lite/src/apps/my-shares/views/heatmap/InsightsHeatmapView.tsx","file:///app/packages/projects/lite/src/apps/my-shares/views/interactive/overview/InteractiveInsightsOverviewView.tsx","file:///app/packages/projects/lite/src/apps/my-shares/views/interactive/overview/InteractiveInsightsOverviewUtils.ts","file:///app/packages/projects/lite/src/apps/my-shares/views/interactive/questions/InteractiveInsightsQuestionsView.tsx","file:///app/packages/projects/lite/src/apps/my-shares/views/interactive/students/InteractiveInsightsStudentsView.tsx","file:///app/packages/libs/shared/src/apps/analytics/components/insights/students-not-watched/InsightStudentsNotWatched.tsx","file:///app/packages/libs/shared/src/apps/analytics/components/insights/students-watched/InsightStudentsWatched.tsx","file:///app/packages/projects/lite/src/apps/my-shares/components/video-insights-overview/partial-loading/partial-video-insights-overview.scss","file:///app/packages/projects/lite/src/apps/my-shares/components/video-insights-overview/partial-loading/PartialVideoInsightsOverview.tsx","file:///app/packages/projects/lite/src/apps/my-shares/components/video-insights-overview/VideoInsightsOvervew.tsx","file:///app/packages/projects/lite/src/apps/my-shares/views/video/overview/VideoInsightsOverviewView.tsx","file:///app/packages/projects/lite/src/apps/my-shares/views/video/overview/VideoInsightsOverviewUtils.ts","file:///app/packages/projects/lite/src/apps/my-shares/views/base-insights-view/useInsightsView.tsx","file:///app/packages/projects/lite/src/apps/my-shares/views/base-insights-view/BaseInsightsView.tsx"],"sourcesContent":["import { Flight } from 'libs/common/flight';\n\nimport { InteractiveResultsRequests } from 'libs/shared/apps/analytics/flight-requests/InteractiveResultsRequests';\nimport { InteractiveRequests } from 'libs/shared/flight-requests/InteractiveRequests';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { AnalyticsRequestFilter, CurrentUser, Interactive, InteractiveMetadata, InteractiveResultSet } from 'libs/shared/interfaces';\n\nexport function useFetchInteractiveResults(\n interactiveMetadataId: string,\n requestFilter?: AnalyticsRequestFilter,\n includePublicResults?: boolean\n): Flight.Response<InteractiveResultSet> {\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n\n const interactiveMetadata = Flight.useBasicFetch<InteractiveMetadata>(!!interactiveMetadataId &&\n InteractiveRequests.interactiveMetadata(interactiveMetadataId));\n\n const interactive = Flight.useBasicFetch<Interactive>(!!interactiveMetadata.data?.interactiveId &&\n InteractiveRequests.interactive(interactiveMetadata.data.interactiveId));\n\n const shouldFetchResults = !!currentUser.data && !!interactive.data;\n\n return Flight.useBasicFetch<InteractiveResultSet>(shouldFetchResults &&\n InteractiveResultsRequests.interactiveResultSet(\n interactiveMetadata.data.interactiveId,\n interactiveMetadata.data.id,\n currentUser.data,\n requestFilter,\n includePublicResults\n ));\n}","import { HttpVerbs } from 'libs/common/backbone/enums/HttpVerbs';\nimport { UrlHelper } from 'libs/common/backbone/utils/UrlHelper';\nimport { Flight } from 'libs/common/flight';\n\nimport { ShareType } from 'libs/shared/apps/share-v2/enums/ShareType';\nimport { CreateShareLinkRequest } from 'libs/shared/apps/share-v2/interfaces/CreateShareLinkRequest';\nimport { CreateShareRequest } from 'libs/shared/apps/share-v2/interfaces/CreateShareRequest';\nimport { UpdateShareRequest } from 'libs/shared/apps/share-v2/interfaces/UpdateShareRequest';\n\nconst normalizeOptions: Flight.NormalizeOptions = {\n namespace: 'share-v2'\n};\n\nexport interface GetSentSharesParams {\n cursor?: string;\n scopeId?: string;\n objectTypeId?: number;\n type?: ShareType[];\n}\n\nexport const ShareRequests = {\n createShare(\n data: CreateShareRequest\n ): Flight.Request {\n return {\n url: '{gateway}/v2/shares',\n key: 'create:share-v2',\n type: HttpVerbs.POST,\n data,\n normalizeOptions,\n invalidationKeys: [ 'sent:share-v2', 'get:share-v2:shares:object' ]\n };\n },\n\n updateShare(\n shareId: string,\n data: UpdateShareRequest\n ): Flight.Request {\n return {\n url: `{gateway}/v2/shares/${shareId}`,\n key: `update:share-v2`,\n type: HttpVerbs.PUT,\n data,\n normalizeOptions,\n invalidationKeys: [ 'share-v2:permanent-link:object', `share-v2:${shareId}`, 'get:share-v2:shares:object' ]\n };\n },\n \n deleteShare(\n shareId: string\n ): Flight.Request {\n return {\n type: HttpVerbs.DELETE,\n url: `{gateway}/v2/shares/${shareId}`,\n key: `delete:share-v2`,\n normalizeOptions,\n invalidationKeys: [ 'share-v2:permanent-link:object', 'sent:share-v2', `share-v2:${shareId}`, 'get:share-v2:shares:object' ]\n };\n },\n\n getShare(\n shareId: string\n ): Flight.Request {\n return {\n url: `{gateway}/v2/shares/${shareId}`,\n key: `share-v2:${shareId}`,\n bootstrapName: `share-v2:${shareId}`,\n type: HttpVerbs.GET,\n normalizeOptions\n };\n },\n\n getSentShares(\n params: GetSentSharesParams = {}\n ): Flight.Request {\n const key = Object.values(params).sort().join(':');\n\n return {\n url: UrlHelper.urlBuilder('{gateway}/v2/shares/sent', params),\n key: `sent:share-v2:${key}`,\n type: HttpVerbs.GET,\n normalize: false\n };\n },\n\n getShareLink(\n id: string\n ): Flight.Request {\n return {\n url: UrlHelper.urlBuilder('{gateway}/v2/shares/permanent-link', { objectId: id }),\n key: `share-v2:permanent-link:object:${id}`,\n normalizeOptions\n };\n },\n\n createShareLink(\n data: CreateShareLinkRequest\n ): Flight.Request {\n return {\n type: HttpVerbs.POST,\n url: UrlHelper.urlBuilder('{gateway}/v2/shares/permanent-link', { ...data }),\n key: `create:share-v2:permanent-link:object:${data.objectId}`,\n invalidationKeys: [ `share-v2:permanent-link:object:${data.objectId}`, 'sent:share-v2', `get:share-v2:shares:object:${data.objectId}` ],\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 \n getSharesByObjectId(\n objectId: string | number\n ): Flight.Request {\n return {\n url: `{gateway}/v2/shares/objects/${objectId}`,\n key: `get:share-v2:shares:object:${objectId}`,\n type: HttpVerbs.GET,\n normalizeOptions\n };\n },\n\n createSharePincode(shareId: string): Flight.Request {\n return {\n url: `{gateway}/v2/shares/${shareId}/pincode`,\n key: `create:share-v2:${shareId}:pincode`,\n type: HttpVerbs.POST\n };\n },\n\n getPincodeByShareId(shareId: string): Flight.Request {\n return {\n url: `{gateway}/v2/shares/${shareId}/pincode`,\n key: `get:share-v2:${shareId}:pincode`\n };\n },\n\n getPincodeByCode(code: string): Flight.Request {\n return {\n url: `{gateway}/v2/shares/pincode?code=${code}`,\n key: `get:share-v2:pincode:${code}`\n };\n }\n};\n","import { BaseError } from 'libs/common/backbone/core/BaseError';\nimport { HttpStatus } from 'libs/common/backbone/enums/HttpStatus';\nimport { Xhr } from 'libs/common/backbone/interfaces';\nimport { Core } from 'libs/common/core';\n\nimport { NotFoundError } from 'libs/shared/errors/general/not-found/NotFoundError';\nimport { PrivateResourceError } from 'libs/shared/errors/general/private-resource/PrivateResourceError';\nimport { RegionLockedResourceError } from 'libs/shared/errors/general/region-locked-resource/RegionLockedResourceError';\nimport { UnspecifiedError } from 'libs/shared/errors/general/unspecified-error/UnspecifiedError';\nimport { VideoTypes } from 'libs/shared/interfaces';\n\nexport interface HttpErrorMap {\n notFound?: new () => BaseError;\n forbidden?: {\n rating?: new (description: string) => BaseError;\n yearLevel?: new (description: string) => BaseError;\n region?: new () => BaseError;\n privacy?: new (video?: VideoTypes) => BaseError;\n };\n badRequest?: new () => BaseError;\n 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 React from 'react';\n\nimport { Flight } from 'libs/common/flight';\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\n\nimport { BaseObject } from 'libs/shared/interfaces';\n\nconst CHUNK_SIZE = 50;\n\nexport interface UseBatchFetchResult<T extends BaseObject> {\n itemsArr: T[];\n items: { [key: string]: T} | null;\n isFetching: boolean;\n hasCompleted: boolean;\n}\n\n/**\n * Used to fetch multiple items by id with Flight. Will fetch 25 items at a time firing off multiple\n * requests if there are more than 25 items.\n * This will return items as null until we have all our items. Items will be returned as an object with\n * their ids as they key for easy mapping\n * \n * @param itemIds \n * @param getRequest \n */\nexport function useBatchFetch<T extends BaseObject>(\n itemIds: string[],\n getRequest: (ids: string[]) => Flight.Request\n): UseBatchFetchResult<T> {\n const chunks = ArrayHelper.chunk<string>(itemIds, CHUNK_SIZE);\n\n const requests = chunks.map(chunk => getRequest(ArrayHelper.uniq(chunk)));\n\n const responses = Flight.useBasicFetchAll<T[]>(requests);\n\n const itemsArr = ArrayHelper.flatten(responses.data);\n const items = responses.data.length\n ? itemsArr.reduce((acc, item) => ({ ...acc, [item.id]: item }), {})\n : null;\n\n return {\n itemsArr,\n items,\n isFetching: responses.isFetching,\n hasCompleted: responses.hasCompleted\n };\n}\n\n/**\n * When you need the useBatchFetch() behavior, but your list of objects to hydrate\n * will grow, such as on a scrolling page. useGrowingBatchFetch() will use local state\n * to determine what we've already built a request for and what items are new\n * as to not re-fetch items - Sha\n */\nexport function useGrowingBatchFetch<TResponse, TObjects = string>(\n objs: TObjects[],\n getRequest: (items: TObjects[]) => Flight.Request,\n _getKey?: (obj: TObjects) => string\n) {\n const getKey = _getKey ?? ((obj: any) => {\n if (typeof obj === 'object')\n return obj.id;\n\n return obj;\n });\n\n const { fetchItems, ...data } = useGrowingBatchFetchFunc<TResponse, TObjects>({ getRequest, _getKey });\n\n React.useEffect(() => {\n if (!objs?.length)\n return;\n\n fetchItems(objs);\n }, [objs?.map(getKey).join(',')]);\n\n return data;\n}\n\ninterface UseGrowingBatchFetchFuncOptions<TObjects> {\n getRequest: (items: TObjects[]) => Flight.Request;\n _getKey?: (obj: TObjects) => string;\n}\n\n/**\n * When you need the useGrowingBatchFetch() behaviour, but need to trigger the\n * fetch manually and update the objects - Nish \n */\nexport function useGrowingBatchFetchFunc<TResponse, TObjects = string>(\n options: UseGrowingBatchFetchFuncOptions<TObjects>\n) {\n const getKey = options._getKey ?? ((obj: any) => {\n if (typeof obj === 'object')\n return obj.id;\n\n return obj;\n });\n\n const fetchedItems = React.useRef<Set<string>>(new Set<string>());\n const [ requests, setRequests ] = React.useState<Flight.Request[]>([]);\n\n function fetchItems(objs: TObjects[]) {\n if (!objs?.length)\n return;\n\n const unfetchedItems: TObjects[] = [];\n \n objs.forEach(obj => {\n const key = getKey(obj);\n\n if (fetchedItems.current.has(key))\n return;\n\n unfetchedItems.push(obj);\n fetchedItems.current.add(key);\n });\n \n if (!unfetchedItems.length)\n return;\n \n setRequests(r => ([ ...r, ...ArrayHelper.chunk<TObjects>(unfetchedItems, CHUNK_SIZE).map(options.getRequest) ]));\n }\n\n const responses = Flight.useBasicFetchAll<TResponse[]>(requests);\n const itemsArr = ArrayHelper.flatten(responses.data);\n const items = responses.data.length\n ? itemsArr.reduce<Record<string, TResponse>>((acc, item) => ({ ...acc, [getKey(item)]: item }), {})\n : null;\n\n return {\n hasFirstRequestCompleted: !!responses.responses?.[0]?.hasCompleted,\n itemsArr,\n items,\n isFetching: responses.isFetching,\n fetchItems\n };\n}\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 { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { FilterStudentsBy } from 'libs/shared/apps/analytics/utils/StudentTableUtils';\nimport { EmptyState } from 'libs/shared/components/empty-states/EmptyState';\n\n\nconst namespace = 'shared.studentResultsTable';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface StudentResultsEmptyStateProps {\n filter: FilterStudentsBy;\n notCompletedImageUrl: string;\n helpingHandImageUrl: string;\n markingRequiredImageUrl: string;\n emptyStateImageUrl: string;\n}\n\nexport function StudentResultsEmptyState(props: StudentResultsEmptyStateProps) {\n if (props.filter === 'not_completed') {\n return (\n <EmptyState className='bg-white rounded-bottom py-5'>\n <EmptyState.Image src={props.notCompletedImageUrl} size='small' />\n <EmptyState.Info>\n {getPhrase('notCompletedDescription')}\n </EmptyState.Info>\n </EmptyState>\n );\n }\n if (props.filter === 'marking_required') {\n return (\n <EmptyState className='bg-white rounded-bottom py-5'>\n <EmptyState.Image src={props.markingRequiredImageUrl} size='small' />\n <EmptyState.Info>\n {getPhrase('markingRequiredDescription')}\n </EmptyState.Info>\n </EmptyState>\n );\n }\n\n if (props.filter === 'helping_hand') {\n return (\n <EmptyState className='bg-white rounded-bottom py-5'>\n <EmptyState.Image src={props.helpingHandImageUrl} size='small' />\n <EmptyState.Info>\n {getPhrase('helpingHandDescription')}\n </EmptyState.Info>\n </EmptyState>\n );\n }\n\n return (\n <EmptyState className='bg-white rounded-bottom py-5'>\n <EmptyState.Image src={props.emptyStateImageUrl} size='small' />\n <EmptyState.Heading>\n {getPhrase('emptyStateHeading')}\n </EmptyState.Heading>\n <EmptyState.Info>\n {getPhrase('emptyStateDescription')}\n </EmptyState.Info>\n </EmptyState>\n );\n}","import React from 'react';\n\nimport { FilterStudentsBy } from 'libs/shared/apps/analytics/utils/StudentTableUtils';\nimport { Text } from 'libs/shared/components/text/Text';\n\nconst namespace = 'shared.studentResultsTable';\n\ninterface StudentResultsTableFiltersProps {\n filter: FilterStudentsBy;\n setFilter: (filter: FilterStudentsBy) => void;\n}\n\nexport function StudentResultsTableFilterButtons(props: StudentResultsTableFiltersProps) {\n function toggleFilter(selectedFilter: FilterStudentsBy) {\n const updatedFilter = props.filter === selectedFilter ? null : selectedFilter;\n\n props.setFilter(updatedFilter);\n }\n\n function isFilterSelected(filter: FilterStudentsBy) {\n return props.filter === filter;\n }\n\n function getClassName(filter: FilterStudentsBy) {\n return `btn btn-outline-dark ${isFilterSelected(filter) ? 'bg-dark text-white' : ''}`;\n }\n\n return (\n <div className='d-flex align-items-center mb-3'>\n <p className='h6 mb-0'><Text namespace={namespace} phrase='filters' /></p>\n <div className='d-flex border-start ps-3 ms-3 gap-2'>\n <button className={getClassName('not_completed')} onClick={() => toggleFilter('not_completed')}>\n <Text namespace={namespace} phrase='notCompletedFilter' />\n </button>\n <button className={getClassName('marking_required')} onClick={() => toggleFilter('marking_required')}>\n <Text namespace={namespace} phrase='markingRequiredFilter' />\n </button>\n <button className={getClassName('helping_hand')} onClick={() => toggleFilter('helping_hand')}>\n <Text namespace={namespace} phrase='helpingHandFilter' />\n </button>\n </div>\n </div>\n );\n}","import React from 'react';\nimport { Cell, Row, SortingRule } from 'react-table';\n\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\n\nimport { StudentResultsEmptyState } from 'libs/shared/apps/analytics/components/student-results/student-results-table/StudentResultsEmptyState';\nimport { StudentResultsTableFilterButtons } from 'libs/shared/apps/analytics/components/student-results/student-results-table/StudentResultsTableFilters';\nimport { StudentResultsWithSummary } from 'libs/shared/apps/analytics/interfaces/StudentResultsWithSummary';\nimport { FilterStudentsBy, getSortStudents, SortStudentsBy } from 'libs/shared/apps/analytics/utils/StudentTableUtils';\nimport { Table, TableTheme } from 'libs/shared/components/table/Table';\nimport { Config, Interactive, InteractiveMetadata, InteractiveResultSet } from 'libs/shared/interfaces';\nimport { AnonUser } from 'libs/shared/interfaces/models/interactive-results/AnonUser';\n\nimport {\n highlightColumns,\n highlightRows,\n RESULTS_COL_WIDTH,\n useGetFixedColumns,\n useGetResultColumns,\n useGetResultsTableData\n} from './StudentResultsTableUtils';\n\nimport styles from './student-results-table.scss';\n\nconst fixedTableTheme: TableTheme = {\n table: `${styles.fixedTable} bg-white rounded-start border border-end-0`,\n header: `${styles.header} border-bottom`,\n headerRow: 'h-100',\n headerCell: 'd-flex align-items-center justify-content-start',\n row: styles.row\n};\n\nconst resultsTableTheme: TableTheme = {\n header: `${styles.header} fw-bold`,\n headerRow: 'h-100',\n headerCell: `${styles.interactionHeaderCellOuter} bg-white border-bottom`,\n row: `${styles.row} ${styles.resultsRow}`,\n cell: styles.resultsCellOuter\n};\n\ninterface StudentResultsTableProps {\n interactive: Interactive;\n interactiveMetadata: InteractiveMetadata;\n results: InteractiveResultSet;\n\n /**\n * As the table data is memoized, it must be prompted to recalculate.\n * Toggle `refreshTable` to do so.\n */\n refreshTable: boolean;\n config?: Config;\n selectedStudentId?: string;\n emptyStateImageUrl?: string;\n notCompletedImageUrl?: string;\n helpingHandImageUrl?: string;\n markingRequiredImageUrl?: string;\n anonymiseUsers?: boolean;\n sortBy?: SortStudentsBy;\n filterBy?: FilterStudentsBy;\n viewStudentResults: (\n student: AnonUser,\n interactiveMetadataId: string,\n interactionId?: string\n ) => void;\n}\n\nexport function StudentResultsTable(props: StudentResultsTableProps): JSX.Element {\n const [ sortBy, setSortBy ] = React.useState<SortingRule<StudentResultsWithSummary>[]>(\n getSortStudents(props.sortBy, 'score')\n );\n const [ filter, setFilter ] = React.useState<FilterStudentsBy>(props.filterBy);\n\n const ref = React.useRef<HTMLDivElement>(null);\n\n const fixedColumns = useGetFixedColumns(props.results, props.anonymiseUsers, props.config?.imageCdnUrl);\n const resultColumns = useGetResultColumns(\n props.interactive,\n props.interactiveMetadata,\n props.results,\n onColumnHover,\n props.refreshTable\n );\n const data = useGetResultsTableData(\n props.interactive,\n props.results,\n props.refreshTable,\n props.anonymiseUsers,\n ArrayHelper.first(sortBy),\n filter\n );\n\n function onSelectStudent({ original }: Row<StudentResultsWithSummary>): void {\n props.viewStudentResults(original.user, props.interactiveMetadata.id);\n }\n\n function onSelectStudentResponse(cell: Cell<StudentResultsWithSummary>): void {\n props.viewStudentResults(\n cell.row.original.user,\n props.interactiveMetadata.id,\n cell.column.id\n );\n }\n\n function onColumnHover(index?: number): void {\n highlightColumns(ref.current, index);\n }\n\n function onRowHover(index?: number): void {\n highlightRows(ref.current, index);\n }\n\n return (\n <div>\n {!!props.results.students.length && <StudentResultsTableFilterButtons filter={filter} setFilter={setFilter} />}\n\n {!data.length && (\n <StudentResultsEmptyState\n emptyStateImageUrl={props.emptyStateImageUrl}\n helpingHandImageUrl={props.helpingHandImageUrl}\n markingRequiredImageUrl={props.markingRequiredImageUrl}\n notCompletedImageUrl={props.notCompletedImageUrl}\n filter={filter}\n />\n )}\n\n {!!data.length && (\n <div ref={ref} className={`d-flex${data.length ? ` ${styles.hasResults}` : ''}`}>\n <Table\n columns={fixedColumns}\n data={data}\n theme={fixedTableTheme}\n onSelectRow={onSelectStudent}\n onRowMouseOver={row => onRowHover(row.index)}\n onRowMouseLeave={() => onRowHover()}\n enableSort\n manualSort\n onSort={setSortBy}\n initialSortBy={sortBy}\n />\n <Table\n columns={resultColumns}\n data={data}\n theme={resultsTableTheme}\n enableSlider\n scrollIncrement={RESULTS_COL_WIDTH * 8}\n onSelectCell={onSelectStudentResponse}\n scrollContainerClassName='rounded-end border border-start-0 border'\n />\n </div>\n )}\n </div>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"partialInsights\":\"qSeTe\"};","import React from 'react';\n\nimport styles from './partial-interactive-insights-students.scss';\n\nexport function PartialInteractiveInsightsStudents() {\n return (\n <div>\n <div className='d-flex align-items-center mb-3'>\n <p className='h6 px-4 mb-0 me-4 partial-loading-background'>&nbsp;</p>\n <div className='row g-2 w-50'>\n <div className='col-3'>\n <div className='p-2 rounded-1 partial-loading-background'>&nbsp;</div>\n </div>\n <div className='col-3'>\n <div className='p-2 rounded-1 partial-loading-background'>&nbsp;</div>\n </div>\n <div className='col-3'>\n <div className='p-2 rounded-1 partial-loading-background'>&nbsp;</div>\n </div>\n </div>\n </div>\n <div className='row g-3 mb-5'>\n <div className='col-12'>\n <div className={`${styles.partialInsights} rounded partial-loading-background`}></div>\n </div>\n </div>\n </div>\n );\n}","import React from 'react';\n\nimport { StudentResultsTable } from 'libs/shared/apps/analytics/components/student-results/student-results-table/StudentResultsTable';\nimport { FilterStudentsBy, SortStudentsBy } from 'libs/shared/apps/analytics/utils/StudentTableUtils';\nimport { Config, Interactive, InteractiveMetadata, InteractiveResultSet } from 'libs/shared/interfaces';\nimport { AnonUser } from 'libs/shared/interfaces/models/interactive-results/AnonUser';\n\nimport { ImageUrls } from 'shared/constants/ImageUrls';\n\nimport { PartialInteractiveInsightsStudents } from 'apps/my-shares/components/interactive-insights-students/partial-loading/PartialInteractiveInsightsStudents';\n\ninterface InteractiveInsightsStudentsProps {\n interactive: Interactive;\n interactiveMetadata: InteractiveMetadata;\n results: InteractiveResultSet;\n isFetching: boolean;\n sortBy: SortStudentsBy;\n filterBy: FilterStudentsBy;\n anonymiseUsers: boolean;\n config: Config;\n viewStudentResults: (\n user: AnonUser,\n interactiveMetadataId: string,\n interactionId?: string\n ) => void;\n hasDataLoaded: boolean;\n}\n\nexport function InteractiveInsightsStudents(props: InteractiveInsightsStudentsProps) {\n return (\n <>\n {!props.hasDataLoaded &&\n <PartialInteractiveInsightsStudents />\n }\n\n {props.hasDataLoaded &&\n <StudentResultsTable\n interactive={props.interactive}\n interactiveMetadata={props.interactiveMetadata}\n results={props.results}\n refreshTable={props.isFetching}\n viewStudentResults={props.viewStudentResults}\n emptyStateImageUrl={ImageUrls.Insights.NO_RESPONSES}\n sortBy={props.sortBy}\n filterBy={props.filterBy}\n anonymiseUsers={props.anonymiseUsers}\n notCompletedImageUrl={ImageUrls.Insights.JIGSAW}\n markingRequiredImageUrl={ImageUrls.Insights.CLIPBOARD}\n helpingHandImageUrl={ImageUrls.Insights.SPEECH_BUBBLE_HEART}\n config={props.config}\n />\n }\n </>\n );\n}","import { Flight } from 'libs/common/react/index';\n\nimport { ShareRequests } from 'libs/shared/apps/share/flight-requests/ShareRequests';\nimport { AnonSession } from 'libs/shared/apps/share/interfaces/AnonSession';\nimport { AnonUser } from 'libs/shared/interfaces/models/interactive-results/AnonUser';\n\nfunction toAnonUser(anonSession: AnonSession) {\n return { sessionId: anonSession.sessionId, name: anonSession.sessionName } as AnonUser;\n}\n\nexport function useAnonSessions(shareId: string) {\n const anonSessions = Flight.useBasicFetch<AnonSession[]>(ShareRequests.getAnonSessions(shareId));\n\n const anonSessionMap = anonSessions.data\n ?.reduce<Record<string, AnonUser>>((prev, next) => {\n return {\n ...prev,\n [next.sessionId]: toAnonUser(next)\n };\n }, {});\n\n return {\n items: anonSessionMap || {},\n hasCompleted: anonSessions.hasCompleted\n };\n}","import { Flight } from 'libs/common/react/index';\n\nimport { ShareType } from 'libs/shared/apps/share-v2/enums/ShareType';\nimport { ShareRequests } from 'libs/shared/apps/share-v2/flight-requests/ShareRequests';\nimport { Share } from 'libs/shared/apps/share-v2/interfaces/Share';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { useFetchAll } from 'libs/shared/hooks/UseFetchAll';\nimport { User } from 'libs/shared/interfaces/models/User';\n\nimport { ClassroomRequests } from 'apps/classrooms/flight-requests/ClassroomRequests';\n\nexport function useInsightsClassroomStudents(shareId: string) {\n const fetch = Flight.useGetFetch();\n\n const share = Flight.useBasicFetch<Share>(ShareRequests.getShare(shareId));\n \n const classroomId = share.data?.type === ShareType.Classroom &&\n share.data?.recipients?.find(r => r.recipientTypeId === MasterType.Classroom)?.recipientId;\n\n const getRequest = (cursor: string) => ClassroomRequests.getClassroomStudents(classroomId, cursor);\n const result = useFetchAll<User>(classroomId && getRequest, cursor => fetch(getRequest(cursor)));\n\n return {\n ...result,\n hasCompleted: !classroomId || result.hasCompleted\n };\n}","import { Flight } from 'libs/common/react/index';\n\nimport { useFetchInteractiveResults } from 'libs/shared/apps/analytics/hooks/UseFetchInteractiveResults';\nimport { ShareRequests } from 'libs/shared/apps/share-v2/flight-requests/ShareRequests';\nimport { Share } from 'libs/shared/apps/share-v2/interfaces/Share';\nimport { useHandleObjectError } from 'libs/shared/hooks/UseHandleObjectError';\nimport { InteractiveResult, InteractiveResultSet } from 'libs/shared/interfaces';\nimport { AnonUser } from 'libs/shared/interfaces/models/interactive-results/AnonUser';\n\nimport { useAnonSessions } from 'apps/my-shares/hooks/useAnonSessions';\nimport { useInsightsClassroomStudents } from 'apps/my-shares/hooks/useInsightsClassroomStudents';\n\nconst EMPTY_INTERACTIVE_RESULTS: InteractiveResult[] = [\n {\n id: '0',\n attempts: [{ id: '0', answeredAt: 0, answers: []}]\n }\n];\n\nexport function useInsightsInteractiveResults(shareId: string) {\n const share = Flight.useBasicFetch<Share>(ShareRequests.getShare(shareId));\n const results = useFetchInteractiveResults(share.data?.objectId, null, true);\n\n const anonSessions = useAnonSessions(shareId);\n\n const classroomStudents = useInsightsClassroomStudents(shareId);\n\n useHandleObjectError(results);\n\n const hasCompleted = (\n results.hasCompleted &&\n anonSessions.hasCompleted &&\n classroomStudents.hasCompleted\n );\n\n if (!hasCompleted) {\n return {\n data: null as InteractiveResultSet,\n hasCompleted: false\n };\n }\n\n const studentHash = new Set<string>();\n const students = results.data.students.map(s => {\n if (s.user) {\n studentHash.add(s.user.id);\n return s;\n }\n\n /**\n * Set the user to our anon user, so we can display the name they entered\n * when completing the interactive - Sha\n */\n return {\n ...s,\n user: anonSessions.items[s.sessionId] || { sessionId: s.sessionId } as AnonUser\n };\n });\n\n /**\n * If we have classroom students, we're adding any students who haven't attempted to the list\n * with an empty attempt. This is so the student list can show all classroom students - Sha\n */\n if (classroomStudents?.items?.length) {\n students.push(...classroomStudents.items\n .filter(s => !studentHash.has(s.id))\n .map(user => ({ user, results: EMPTY_INTERACTIVE_RESULTS })));\n }\n\n return {\n hasCompleted,\n data: {\n ...results.data,\n students\n }\n };\n}","import { Flight } from 'libs/common/react/index';\n\nimport { StreamAggregationType } from 'libs/shared/apps/analytics/interfaces/StreamAggregationType';\n\nexport const VideoViewsV2Requests = {\n shareViews(shareId: string): Flight.Request {\n return {\n url: `{gateway}/v2/analytics/streams/shares/${shareId}/users/count`,\n key: `video:views:v2:share:${shareId}`,\n normalize: false\n };\n },\n\n shareAggregation(shareId: string, type: StreamAggregationType): Flight.Request {\n return {\n url: `{gateway}/v2/analytics/streams/shares/${shareId}/aggregation/${type}`,\n key: `video:views:v2:share:aggregation:${shareId}:${type}`,\n normalize: false\n };\n },\n\n shareHeatMap(shareId: string): Flight.Request {\n return {\n url: `{gateway}/v2/analytics/streams/shares/${shareId}/heat-map`,\n key: `video:views:v2:share:heatmap:${shareId}`,\n normalize: false\n };\n },\n\n shareHeatMapAggregation(shareId: string): Flight.Request {\n return {\n url: `{gateway}/v2/analytics/streams/shares/${shareId}/aggregation/heat-map`,\n key: `video:views:v2:share:heatmap:aggregation:${shareId}`,\n normalize: false\n };\n }\n};","import { Flight } from 'libs/common/react/index';\n\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { useBatchFetch } from 'libs/shared/hooks/UseBatchFetch';\nimport { Engagement } from 'libs/shared/interfaces';\nimport { AnonUser } from 'libs/shared/interfaces/models/interactive-results/AnonUser';\n\nimport { VideoViewsV2Requests } from 'apps/my-shares/flight-requests/VideoViewsV2Requests';\nimport { useAnonSessions } from 'apps/my-shares/hooks/useAnonSessions';\n\nexport function useInsightEngagement(shareId: string) {\n const engagement = Flight.useBasicFetch<Engagement[]>(\n VideoViewsV2Requests.shareHeatMap(shareId)\n );\n\n const anonSessions = useAnonSessions(shareId);\n\n const userIds = engagement.data?.map(u => u.userId).filter(id => !!id) || [];\n const users = useBatchFetch<AnonUser>(userIds, UserRequests.getById);\n\n const userMap = {\n ...anonSessions.items,\n ...users.items\n };\n \n const viewers = engagement.data?.map(e => {\n const user = userMap[e.userId || e.sessionId] || { sessionId: e.sessionId } as AnonUser;\n return { ...user, percentage: e.engagementRate } as AnonUser;\n });\n\n return {\n engagement: engagement.data,\n users: viewers,\n hasCompleted: (\n engagement.hasCompleted &&\n anonSessions.hasCompleted &&\n (!userIds?.length || users.hasCompleted)\n )\n };\n}","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { useViewModel } from 'libs/common/react/hooks/UseViewModel';\nimport { Flight } from 'libs/common/react/index';\n\nimport { GroupedAnalyticsCount } from 'libs/shared/apps/analytics/interfaces/BaseAnalyticsEvent';\nimport { ShareRequests } from 'libs/shared/apps/share-v2/flight-requests/ShareRequests';\nimport { Share } from 'libs/shared/apps/share-v2/interfaces/Share';\nimport { ShareHelper } from 'libs/shared/apps/share-v2/utils/ShareHelper';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { MediaIdType } from 'libs/shared/enums/MediaIdType';\nimport { PermissionName } from 'libs/shared/enums/PermissionName';\nimport { ConfigRequests } from 'libs/shared/flight-requests/ConfigRequests';\nimport { CustomerRequests } from 'libs/shared/flight-requests/CustomerRequests';\nimport { PlayerRequests } from 'libs/shared/flight-requests/PlayerRequests';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\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 { Classroom, Config, CurrentUser, Engagement, PlayerViewKey, VideoTypes, YearGroup } from 'libs/shared/interfaces';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\nimport { ViewModelKeys } from 'shared/constants/LiteViewModels';\n\nimport { ClassroomRequests } from 'apps/classrooms/flight-requests/ClassroomRequests';\nimport { InsightsHeader } from 'apps/my-shares/components/insights-header/InsightsHeader';\nimport { InsightsHeatmap } from 'apps/my-shares/components/insights-heatmap/InsightsHeatmap';\nimport { VideoViewsV2Requests } from 'apps/my-shares/flight-requests/VideoViewsV2Requests';\nimport { useInsightEngagement } from 'apps/my-shares/hooks/useInsightEngagement';\nimport { useInsightsClassroomStudents } from 'apps/my-shares/hooks/useInsightsClassroomStudents';\nimport { getInsightsInteractiveTabs, getInsightsVideoTabs } from 'apps/my-shares/utils/InsightsAppLinkUtils';\n\nconst namespace = 'shared.insightsHeatmap';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface InsightsHeatmapViewProps {\n shareId: string;\n}\n\nexport function InsightsHeatmapView(props: InsightsHeatmapViewProps) {\n const [anonymiseUsers] = useViewModel<boolean>(ViewModelKeys.ANONYMISE_USERS);\n\n useLockContentWidth();\n\n const { hasPermissions } = usePermissions();\n\n const share = Flight.useBasicFetch<Share>(ShareRequests.getShare(props.shareId));\n \n const classroomId = ShareHelper.getClassroomIdFromShare(share.data);\n const classroom = Flight.useBasicFetch<Classroom>(classroomId && ClassroomRequests.getClassroom(classroomId));\n\n const classroomStudents = useInsightsClassroomStudents(props.shareId);\n \n const videoRequest = share.data && VideoHelper.getVideoRequest(share.data.objectId, share.data.objectTypeId);\n const video = Flight.useBasicFetch<VideoTypes>(videoRequest);\n\n const config = Flight.useBasicFetch<Config>(ConfigRequests.config());\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n const yearGroups = Flight.useBasicFetch<YearGroup[]>(\n currentUser.data && CustomerRequests.yearGroups(currentUser.data.customerId)\n );\n\n const aggregateEngagement = Flight.useBasicFetch<Engagement>(\n VideoViewsV2Requests.shareHeatMapAggregation(props.shareId)\n );\n\n const { users, engagement, hasCompleted } = useInsightEngagement(props.shareId);\n\n const yearGroupsCount = Flight.useBasicFetch<GroupedAnalyticsCount[]>(\n VideoViewsV2Requests.shareAggregation(props.shareId, 'year_group')\n );\n\n const viewKey = Flight.useBasicFetch<PlayerViewKey>(\n share.data?.objectId &&\n PlayerRequests.createViewKey(share.data.objectId, MediaIdType.MasterObject)\n );\n\n useSetPageMetadata({ title: video.data ? getPhrase('pageTitle', { video: video.data?.name }) : null });\n useHandleObjectError([ share, video ]);\n\n const hasDataLoaded =\n share.hasCompleted &&\n video.hasCompleted &&\n config.hasCompleted &&\n aggregateEngagement.hasCompleted &&\n yearGroupsCount.hasCompleted &&\n viewKey.hasCompleted &&\n yearGroups.hasCompleted;\n\n function getInsightsTabs() {\n if (share.data?.objectTypeId === MasterType.Interactive)\n return getInsightsInteractiveTabs(share.data, 'heatmap');\n\n return getInsightsVideoTabs(share.data, 'heatmap');\n }\n\n return (\n <div className='px-3'>\n <InsightsHeader\n video={video.data}\n tabs={getInsightsTabs()}\n hasAnalytics={hasPermissions(PermissionName.ViewCustomerAnalytics)}\n analyticsWebUrl={config.data?.analyticsWebUrl}\n share={share.data}\n yearGroups={yearGroups.data}\n classroom={classroom.data}\n />\n <InsightsHeatmap\n aggregateEngagement={aggregateEngagement.data}\n individualEngagement={engagement}\n yearGroups={yearGroupsCount.data}\n config={config.data}\n users={users}\n viewKey={viewKey.data}\n hasDataLoaded={hasDataLoaded}\n tableDataLoaded={hasCompleted}\n anonymiseUsers={anonymiseUsers}\n classroomStudents={classroomStudents.items}\n />\n </div>\n );\n}","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { useViewModel } from 'libs/common/react/hooks/UseViewModel';\nimport { Flight } from 'libs/common/react/index';\n\nimport { GroupedAnalyticsCount } from 'libs/shared/apps/analytics/interfaces/BaseAnalyticsEvent';\nimport { ShareRequests } from 'libs/shared/apps/share-v2/flight-requests/ShareRequests';\nimport { Share } from 'libs/shared/apps/share-v2/interfaces/Share';\nimport { ShareHelper } from 'libs/shared/apps/share-v2/utils/ShareHelper';\nimport { SharedViewModelKeys } from 'libs/shared/constants/SharedViewModelKeys';\nimport { PermissionName } from 'libs/shared/enums/PermissionName';\nimport { ConfigRequests } from 'libs/shared/flight-requests/ConfigRequests';\nimport { CustomerRequests } from 'libs/shared/flight-requests/CustomerRequests';\nimport { InteractiveRequests } from 'libs/shared/flight-requests/InteractiveRequests';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\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 { Classroom, Config, CurrentUser, Engagement, Interactive, InteractiveMetadata, YearGroup } from 'libs/shared/interfaces';\n\nimport { ClassroomRequests } from 'apps/classrooms/flight-requests/ClassroomRequests';\nimport { InsightsHeader } from 'apps/my-shares/components/insights-header/InsightsHeader';\nimport { InteractiveInsightsOverview } from 'apps/my-shares/components/interactive-insights-overview/InteractiveInsightsOverview';\nimport { VideoViewsV2Requests } from 'apps/my-shares/flight-requests/VideoViewsV2Requests';\nimport { useInsightsClassroomStudents } from 'apps/my-shares/hooks/useInsightsClassroomStudents';\nimport { useInsightsInteractiveResults } from 'apps/my-shares/hooks/useInsightsInteractiveResults';\nimport { getInsightsInteractiveTabs } from 'apps/my-shares/utils/InsightsAppLinkUtils';\nimport { getInteractiveInsightsAppLinks } from 'apps/my-shares/views/interactive/overview/InteractiveInsightsOverviewUtils';\n\nconst namespace = 'insights.interactiveInsightsOverviewView';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface InteractiveInsightsViewProps {\n shareId: string;\n}\n\nexport function InteractiveInsightsOverviewView(props: InteractiveInsightsViewProps) {\n const [anonymiseUsers] = useViewModel<boolean>(SharedViewModelKeys.ANONYMISE_USERS);\n\n useLockContentWidth();\n\n const { hasPermissions } = usePermissions();\n\n const config = Flight.useBasicFetch<Config>(ConfigRequests.config());\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n const yearGroups = Flight.useBasicFetch<YearGroup[]>(\n currentUser.data && CustomerRequests.yearGroups(currentUser.data.customerId)\n );\n\n const share = Flight.useBasicFetch<Share>(ShareRequests.getShare(props.shareId));\n \n const classroomId = ShareHelper.getClassroomIdFromShare(share.data);\n const classroom = Flight.useBasicFetch<Classroom>(classroomId && ClassroomRequests.getClassroom(classroomId));\n\n const classroomStudents = useInsightsClassroomStudents(props.shareId);\n\n const interactiveMetadata = Flight.useBasicFetch<InteractiveMetadata>(\n share.data?.objectId &&\n InteractiveRequests.interactiveMetadata(share.data.objectId)\n );\n\n const interactive = Flight.useBasicFetch<Interactive>(\n interactiveMetadata.data?.interactiveId &&\n InteractiveRequests.interactive(interactiveMetadata.data.interactiveId)\n );\n\n const results = useInsightsInteractiveResults(props.shareId);\n\n const engagement = Flight.useBasicFetch<Engagement[]>(\n VideoViewsV2Requests.shareHeatMap(props.shareId)\n );\n\n const aggregateEngagement = Flight.useBasicFetch<Engagement>(\n VideoViewsV2Requests.shareHeatMapAggregation(props.shareId)\n );\n\n const osCount = Flight.useBasicFetch<GroupedAnalyticsCount[]>(\n VideoViewsV2Requests.shareAggregation(props.shareId, 'os_name')\n );\n\n useSetPageMetadata({ title: interactiveMetadata.data ? getPhrase('pageTitle', { video: interactiveMetadata.data?.name }) : null });\n\n useHandleObjectError([ share, interactive, interactiveMetadata ]);\n\n const hasDataLoaded =\n config.hasCompleted &&\n interactiveMetadata.hasCompleted &&\n interactive.data &&\n aggregateEngagement.hasCompleted &&\n engagement.hasCompleted &&\n osCount.hasCompleted &&\n results.hasCompleted &&\n yearGroups.hasCompleted;\n\n const interactiveInsightsAppLinks = getInteractiveInsightsAppLinks(share.data);\n\n return (\n <div className='px-3'>\n <InsightsHeader\n video={interactiveMetadata.data}\n tabs={getInsightsInteractiveTabs(share.data, 'insights')}\n hasAnalytics={hasPermissions(PermissionName.ViewCustomerAnalytics)}\n analyticsWebUrl={config.data?.analyticsWebUrl}\n share={share.data}\n yearGroups={yearGroups.data}\n classroom={classroom.data}\n />\n\n <InteractiveInsightsOverview\n aggregateEngagement={aggregateEngagement.data}\n individualEngagement={engagement.data}\n interactive={interactive.data}\n interactiveMetadata={interactiveMetadata.data}\n interactiveInsightsAppLinks={interactiveInsightsAppLinks}\n classroomStudents={classroomStudents.items}\n results={results.data}\n osCount={osCount.data}\n config={config.data}\n anonymiseUsers={anonymiseUsers}\n hasDataLoaded={hasDataLoaded}\n share={share.data}\n />\n </div>\n );\n}","import { HashObject } from 'libs/common/react/interfaces';\n\nimport { Share } from 'libs/shared/apps/share-v2/interfaces/Share';\n\nimport { getInsightsHeatmapAppLink, getInsightsQuestionsAppLink, getInsightsStudentsAppLink } from 'shared/utils/ObjectAppLinkHelper';\n\nexport function getInteractiveInsightsAppLinks(share: Share, params?: HashObject) {\n return {\n resultsAppLink: getInsightsStudentsAppLink(share, params),\n questionsAppLink: getInsightsQuestionsAppLink(share, params),\n heatmapAppLink: getInsightsHeatmapAppLink(share, params)\n };\n}","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { useViewModel } from 'libs/common/react/hooks/UseViewModel';\nimport { Flight } from 'libs/common/react/index';\n\nimport { SortStudentsBy } from 'libs/shared/apps/analytics/utils/StudentTableUtils';\nimport { ShareRequests } from 'libs/shared/apps/share-v2/flight-requests/ShareRequests';\nimport { Share } from 'libs/shared/apps/share-v2/interfaces/Share';\nimport { ShareHelper } from 'libs/shared/apps/share-v2/utils/ShareHelper';\nimport { SharedViewModelKeys } from 'libs/shared/constants/SharedViewModelKeys';\nimport { PermissionName } from 'libs/shared/enums/PermissionName';\nimport { ConfigRequests } from 'libs/shared/flight-requests/ConfigRequests';\nimport { CustomerRequests } from 'libs/shared/flight-requests/CustomerRequests';\nimport { InteractiveRequests } from 'libs/shared/flight-requests/InteractiveRequests';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\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 { Classroom, Config, CurrentUser, Interactive, InteractiveMetadata, YearGroup } from 'libs/shared/interfaces';\n\nimport { ClassroomRequests } from 'apps/classrooms/flight-requests/ClassroomRequests';\nimport { InsightsHeader } from 'apps/my-shares/components/insights-header/InsightsHeader';\nimport { InteractiveInsightsQuestions } from 'apps/my-shares/components/interactive-insights-questions/InteractiveInsightsQuestions';\nimport { useInsightsInteractiveResults } from 'apps/my-shares/hooks/useInsightsInteractiveResults';\nimport { getInsightsInteractiveTabs } from 'apps/my-shares/utils/InsightsAppLinkUtils';\n\nconst namespace = 'shared.interactiveInsightsQuestionsView';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface InteractiveInsightsQuestionsViewProps {\n shareId: string;\n interactionId: string;\n sortBy: SortStudentsBy;\n}\n\nexport function InteractiveInsightsQuestionsView(props: InteractiveInsightsQuestionsViewProps) {\n const [anonymiseUsers] = useViewModel<boolean>(SharedViewModelKeys.ANONYMISE_USERS);\n\n useLockContentWidth();\n\n const { hasPermissions } = usePermissions();\n\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n const config = Flight.useBasicFetch<Config>(ConfigRequests.config());\n const yearGroups = Flight.useBasicFetch<YearGroup[]>(\n currentUser.data && CustomerRequests.yearGroups(currentUser.data.customerId)\n );\n\n const share = Flight.useBasicFetch<Share>(ShareRequests.getShare(props.shareId));\n \n const classroomId = ShareHelper.getClassroomIdFromShare(share.data);\n const classroom = Flight.useBasicFetch<Classroom>(classroomId && ClassroomRequests.getClassroom(classroomId));\n\n const interactiveMetadata = Flight.useBasicFetch<InteractiveMetadata>(\n share.data?.objectId &&\n InteractiveRequests.interactiveMetadata(share.data?.objectId)\n );\n\n const interactive = Flight.useBasicFetch<Interactive>(interactiveMetadata.data?.interactiveId &&\n InteractiveRequests.interactive(interactiveMetadata.data.interactiveId));\n\n const results = useInsightsInteractiveResults(props.shareId);\n\n\n useSetPageMetadata({ title: interactiveMetadata.data ? getPhrase('pageTitle', { video: interactiveMetadata.data?.name }) : null });\n useHandleObjectError([ share, interactive, interactiveMetadata ]);\n\n const hasDataLoaded = interactive.data && interactiveMetadata.data && !!results.data && !!yearGroups.data;\n\n return (\n <div className='px-3'>\n <InsightsHeader\n tabs={getInsightsInteractiveTabs(share.data, 'questions')}\n video={interactiveMetadata.data}\n hasAnalytics={hasPermissions(PermissionName.ViewCustomerAnalytics)}\n analyticsWebUrl={config.data?.analyticsWebUrl}\n share={share.data}\n yearGroups={yearGroups.data}\n classroom={classroom.data}\n />\n\n <InteractiveInsightsQuestions\n interactive={interactive.data}\n interactiveMetadata={interactiveMetadata.data}\n interactionId={props.interactionId}\n config={config.data}\n sortBy={props.sortBy}\n isFetching={!results.hasCompleted || interactive.isFetching}\n anonymiseUsers={anonymiseUsers}\n results={results.data}\n hasDataLoaded={hasDataLoaded}\n />\n </div>\n );\n}","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { useViewModel } from 'libs/common/react/hooks/UseViewModel';\nimport { Flight } from 'libs/common/react/index';\n\nimport { FilterStudentsBy, SortStudentsBy } from 'libs/shared/apps/analytics/utils/StudentTableUtils';\nimport { ShareRequests } from 'libs/shared/apps/share-v2/flight-requests/ShareRequests';\nimport { Share } from 'libs/shared/apps/share-v2/interfaces/Share';\nimport { ShareHelper } from 'libs/shared/apps/share-v2/utils/ShareHelper';\nimport { SharedViewModelKeys } from 'libs/shared/constants/SharedViewModelKeys';\nimport { PermissionName } from 'libs/shared/enums/PermissionName';\nimport { ConfigRequests } from 'libs/shared/flight-requests/ConfigRequests';\nimport { CustomerRequests } from 'libs/shared/flight-requests/CustomerRequests';\nimport { InteractiveRequests } from 'libs/shared/flight-requests/InteractiveRequests';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { useHandleObjectError } from 'libs/shared/hooks/UseHandleObjectError';\nimport { usePermissions } from 'libs/shared/hooks/usePermissions';\nimport { useSetPageMetadata } from 'libs/shared/hooks/useSetPageMetadata';\nimport { Classroom, Config, CurrentUser, Interactive, InteractiveMetadata, YearGroup } from 'libs/shared/interfaces';\nimport { AnonUser } from 'libs/shared/interfaces/models/interactive-results/AnonUser';\n\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\n\nimport { ClassroomRequests } from 'apps/classrooms/flight-requests/ClassroomRequests';\nimport { InsightsHeader } from 'apps/my-shares/components/insights-header/InsightsHeader';\nimport { InteractiveInsightsStudents } from 'apps/my-shares/components/interactive-insights-students/InteractiveInsightsStudents';\nimport { useInsightsInteractiveResults } from 'apps/my-shares/hooks/useInsightsInteractiveResults';\nimport { getInsightsInteractiveTabs } from 'apps/my-shares/utils/InsightsAppLinkUtils';\n\nconst namespace = 'insights.interactiveInsightsStudents';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface InteractiveInsightsStudentsViewProps {\n shareId: string;\n sortBy: SortStudentsBy;\n filterBy: FilterStudentsBy;\n}\n\nexport function InteractiveInsightsStudentsView(props: InteractiveInsightsStudentsViewProps) {\n const [anonymiseUsers] = useViewModel<boolean>(SharedViewModelKeys.ANONYMISE_USERS);\n\n const { hasPermissions } = usePermissions();\n \n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n const config = Flight.useBasicFetch<Config>(ConfigRequests.config());\n const yearGroups = Flight.useBasicFetch<YearGroup[]>(\n currentUser.data && CustomerRequests.yearGroups(currentUser.data.customerId)\n );\n\n const share = Flight.useBasicFetch<Share>(ShareRequests.getShare(props.shareId));\n \n const classroomId = ShareHelper.getClassroomIdFromShare(share.data);\n const classroom = Flight.useBasicFetch<Classroom>(classroomId && ClassroomRequests.getClassroom(classroomId));\n\n const interactiveMetadata = Flight.useBasicFetch<InteractiveMetadata>(\n share.data?.objectId &&\n InteractiveRequests.interactiveMetadata(share.data.objectId)\n );\n\n const interactive = Flight.useBasicFetch<Interactive>(interactiveMetadata.data?.interactiveId &&\n InteractiveRequests.interactive(interactiveMetadata.data.interactiveId));\n\n const results = useInsightsInteractiveResults(props.shareId);\n\n const hasDataLoaded = interactive.data && interactiveMetadata.data && !!results.data && !!yearGroups.data;\n\n useSetPageMetadata({ title: interactiveMetadata.data ? getPhrase('pageTitle', { video: interactiveMetadata.data?.name }) : null });\n useHandleObjectError([ share, interactive, interactiveMetadata ]);\n\n function viewStudentResults(\n user: AnonUser,\n interactiveMetadataId: string,\n interactionId?: string\n ) {\n Core.AppLinkHelper.trigger({\n application: AppChannels.MY_SHARES,\n action: Actions.MyShares.INTERACTIVE_STUDENT_RESULTS,\n params: {\n studentId: user.id,\n shareId: props.shareId,\n interactionId,\n sessionId: user.sessionId\n }\n });\n }\n\n return (\n <div className='px-3'>\n <InsightsHeader\n tabs={getInsightsInteractiveTabs(share.data, 'results')}\n video={interactiveMetadata.data}\n hasAnalytics={hasPermissions(PermissionName.ViewCustomerAnalytics)}\n analyticsWebUrl={config.data?.analyticsWebUrl}\n share={share.data}\n yearGroups={yearGroups.data}\n classroom={classroom.data}\n />\n\n <InteractiveInsightsStudents\n interactiveMetadata={interactiveMetadata.data}\n viewStudentResults={viewStudentResults}\n interactive={interactive.data}\n results={results.data}\n filterBy={props.filterBy}\n sortBy={props.sortBy}\n isFetching={!results.hasCompleted}\n anonymiseUsers={anonymiseUsers}\n hasDataLoaded={hasDataLoaded}\n config={config.data}\n />\n </div>\n );\n}","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { InsightCard } from 'libs/shared/apps/analytics/components/insight-card/InsightCard';\nimport { InsightStudentList } from 'libs/shared/apps/analytics/components/insight-student-list/InsightStudentList';\nimport { User } from 'libs/shared/interfaces';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nconst namespace = 'shared.insightStudentsNotWatched';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface InsightStudentsNotWatchedProps {\n students: User[];\n imageCdnUrl: string;\n imageUrl: string;\n heatmapAppLink: Core.AppLink;\n watchedIds: string[];\n anonymiseUsers: boolean;\n}\n\nexport function InsightStudentsNotWatched(props: InsightStudentsNotWatchedProps) {\n const studentsNotWatched = props.students?.filter(student => !props.watchedIds?.includes(student.id)) || [];\n\n return (\n <InsightCard\n title={getPhrase('title')}\n svgName={cvSvgLibrary.Puzzle}\n svgClassName='bg-light-teal text-teal'\n >\n <InsightStudentList\n students={studentsNotWatched}\n imageCdnUrl={props.imageCdnUrl}\n imageUrl={props.imageUrl}\n description={getPhrase('studentsDisplay')}\n anonymiseUsers={props.anonymiseUsers}\n />\n </InsightCard>\n );\n}","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { InsightCard } from 'libs/shared/apps/analytics/components/insight-card/InsightCard';\nimport { InsightStudentList } from 'libs/shared/apps/analytics/components/insight-student-list/InsightStudentList';\nimport { AnonUser } from 'libs/shared/interfaces/models/interactive-results/AnonUser';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nconst namespace = 'shared.insightStudentsWatched';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface InsightWatchedProps {\n students: AnonUser[];\n imageCdnUrl: string;\n heatmapAppLink: Core.AppLink;\n imageUrl: string;\n anonymiseUsers: boolean;\n}\n\nexport function InsightStudentsWatched(props: InsightWatchedProps) {\n return (\n <InsightCard\n title={getPhrase('title')}\n svgName={cvSvgLibrary.Flag}\n svgClassName='bg-light-indigo text-indigo'\n count={props.students.length}\n >\n <InsightStudentList\n students={props.students}\n imageCdnUrl={props.imageCdnUrl}\n imageUrl={props.imageUrl}\n description={getPhrase('studentsDisplay')}\n appLink={props.heatmapAppLink}\n appLinkText={getPhrase('viewAll')}\n anonymiseUsers={props.anonymiseUsers}\n />\n </InsightCard>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"partialInsights\":\"oHwkx\"};","import React from 'react';\n\nimport styles from './partial-video-insights-overview.scss';\n\nexport function PartialVideoInsightsOverview() {\n return (\n <div>\n <h2 className='h4 w-25 partial-loading-background'>&nbsp;</h2>\n <div className='row g-3 mb-5'>\n <div className='col-12'>\n <div className={`${styles.partialInsights} rounded partial-loading-background`}></div>\n </div>\n </div>\n\n <h2 className='h4 w-25 partial-loading-background'>&nbsp;</h2>\n <div className='row g-3 mb-5'>\n <div className='col-6'>\n <div className={`${styles.partialInsights} rounded partial-loading-background`}></div>\n </div>\n <div className='col-6'>\n <div className={`${styles.partialInsights} rounded partial-loading-background`}></div>\n </div>\n </div>\n </div>\n );\n}","import React from 'react';\n\nimport { HashObject } from 'libs/common/react/interfaces/HashObject';\n\nimport { InsightDevices } from 'libs/shared/apps/analytics/components/insights/devices/InsightDevices';\nimport { InsightHeatmap } from 'libs/shared/apps/analytics/components/insights/heatmap/InsightHeatmap';\nimport { InsightStudentsNotWatched } from 'libs/shared/apps/analytics/components/insights/students-not-watched/InsightStudentsNotWatched';\nimport { InsightStudentsWatched } from 'libs/shared/apps/analytics/components/insights/students-watched/InsightStudentsWatched';\nimport { GroupedAnalyticsCount } from 'libs/shared/apps/analytics/interfaces/BaseAnalyticsEvent';\nimport { getEngagementRate } from 'libs/shared/apps/analytics/utils/EngagementUtils';\nimport { Share } from 'libs/shared/apps/share-v2/interfaces/Share';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { Config, Engagement, User, Video } from 'libs/shared/interfaces';\nimport { AnonUser } from 'libs/shared/interfaces/models/interactive-results/AnonUser';\n\nimport { ImageUrls } from 'shared/constants/ImageUrls';\n\nimport { InsightsShareMask } from 'apps/my-shares/components/insights-mask/InsightsShareMask';\nimport { PartialVideoInsightsOverview } from 'apps/my-shares/components/video-insights-overview/partial-loading/PartialVideoInsightsOverview';\n\nconst namespace = 'insights.videoInsightsOverview';\n\ninterface VideoInsightsOverviewProps {\n hasDataLoaded: boolean;\n hasClassrooms: boolean;\n anonymiseUsers: boolean;\n videoInsightsAppLinks: HashObject;\n config: Config;\n video: Video;\n classroomStudents: User[];\n viewers: AnonUser[];\n individualEngagement: Engagement[];\n aggregateEngagement: Engagement;\n share: Share;\n osCount: GroupedAnalyticsCount[];\n}\n\nexport function VideoInsightsOverview(props: VideoInsightsOverviewProps) {\n const hasData = props.hasDataLoaded && !!props.viewers?.length;\n\n function getStudentsList() {\n if (!props.viewers) return [];\n\n return Object.values(props.viewers);\n }\n\n return (\n <>\n {!props.hasDataLoaded && <PartialVideoInsightsOverview />}\n\n {props.hasDataLoaded &&\n <InsightsShareMask video={props.video} hasData={hasData} share={props.share}>\n <section className='mb-5'>\n <h2 className='h4'>\n <Text namespace={namespace} phrase='studentViewing' />\n <span>: {getStudentsList().length}{props.classroomStudents ? `/${props.classroomStudents.length}` : ''}</span>\n </h2>\n <div className='row g-3'>\n {!!props.classroomStudents?.length && (\n <div className='col-12 col-md'>\n <InsightStudentsNotWatched\n students={props.classroomStudents}\n watchedIds={props.viewers?.map(u => u.id)}\n imageCdnUrl={props.config.imageCdnUrl}\n heatmapAppLink={props.videoInsightsAppLinks.heatmapAppLink}\n imageUrl={ImageUrls.Insights.AVATAR}\n anonymiseUsers={props.anonymiseUsers}\n />\n </div>\n )}\n <div className='col-12 col-md'>\n <InsightStudentsWatched\n students={getStudentsList()}\n imageCdnUrl={props.config.imageCdnUrl}\n heatmapAppLink={props.videoInsightsAppLinks.heatmapAppLink}\n imageUrl={ImageUrls.Insights.AVATAR}\n anonymiseUsers={props.anonymiseUsers}\n />\n </div>\n </div>\n </section>\n <section className='mb-5'>\n <h2 className='h4'>\n <Text\n namespace={namespace}\n phrase={props.hasClassrooms ? 'classEngagement' : 'engagement'}\n />\n </h2>\n <div className='row g-3'>\n <div className='col-12 col-md-6'>\n <InsightDevices\n osCount={props.osCount}\n />\n </div>\n <div className='col-12 col-md-6'>\n <InsightHeatmap\n engagement={props.aggregateEngagement}\n heatmapAppLink={props.videoInsightsAppLinks.heatmapAppLink}\n engagementRate={getEngagementRate(props.individualEngagement)}\n />\n </div>\n </div>\n </section>\n </InsightsShareMask>\n }\n </>\n );\n}","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { useViewModel } from 'libs/common/react/hooks/UseViewModel';\nimport { Flight } from 'libs/common/react/index';\n\nimport { GroupedAnalyticsCount } from 'libs/shared/apps/analytics/interfaces/BaseAnalyticsEvent';\nimport { ShareRequests } from 'libs/shared/apps/share-v2/flight-requests/ShareRequests';\nimport { Share } from 'libs/shared/apps/share-v2/interfaces/Share';\nimport { ShareHelper } from 'libs/shared/apps/share-v2/utils/ShareHelper';\nimport { SharedViewModelKeys } from 'libs/shared/constants/SharedViewModelKeys';\nimport { PermissionName } from 'libs/shared/enums/PermissionName';\nimport { ConfigRequests } from 'libs/shared/flight-requests/ConfigRequests';\nimport { CustomerRequests } from 'libs/shared/flight-requests/CustomerRequests';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\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 { Classroom, Config, CurrentUser, Engagement, VideoTypes, YearGroup } from 'libs/shared/interfaces';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\nimport { ClassroomRequests } from 'apps/classrooms/flight-requests/ClassroomRequests';\nimport { InsightsHeader } from 'apps/my-shares/components/insights-header/InsightsHeader';\nimport { VideoInsightsOverview } from 'apps/my-shares/components/video-insights-overview/VideoInsightsOvervew';\nimport { VideoViewsV2Requests } from 'apps/my-shares/flight-requests/VideoViewsV2Requests';\nimport { useInsightEngagement } from 'apps/my-shares/hooks/useInsightEngagement';\nimport { useInsightsClassroomStudents } from 'apps/my-shares/hooks/useInsightsClassroomStudents';\nimport { getInsightsVideoTabs } from 'apps/my-shares/utils/InsightsAppLinkUtils';\nimport { getVideoInsightsAppLinks } from 'apps/my-shares/views/video/overview/VideoInsightsOverviewUtils';\n\nconst namespace = 'insights.videoInsightsOverviewView';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface VideoInsightsViewProps {\n shareId: string;\n}\n\nexport function VideoInsightsOverviewView(props: VideoInsightsViewProps) {\n const [anonymiseUsers] = useViewModel<boolean>(SharedViewModelKeys.ANONYMISE_USERS);\n\n useLockContentWidth();\n\n const { hasClassrooms } = useSettings(null);\n\n const { hasPermissions } = usePermissions();\n\n const config = Flight.useBasicFetch<Config>(ConfigRequests.config());\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n const yearGroups = Flight.useBasicFetch<YearGroup[]>(\n currentUser.data && CustomerRequests.yearGroups(currentUser.data.customerId)\n );\n\n const share = Flight.useBasicFetch<Share>(ShareRequests.getShare(props.shareId));\n\n const classroomId = ShareHelper.getClassroomIdFromShare(share.data);\n const classroom = Flight.useBasicFetch<Classroom>(classroomId && ClassroomRequests.getClassroom(classroomId));\n\n const classroomStudents = useInsightsClassroomStudents(props.shareId);\n\n const videoRequest = share.data && VideoHelper.getVideoRequest(share.data.objectId, share.data.objectTypeId);\n const video = Flight.useBasicFetch<VideoTypes>(videoRequest);\n\n useSetPageMetadata({ title: video.data ? getPhrase('pageTitle', { video: video.data?.name }) : null });\n useHandleObjectError([ share, video ]);\n\n const engagement = Flight.useBasicFetch<Engagement[]>(\n VideoViewsV2Requests.shareHeatMap(props.shareId)\n );\n\n const aggregateEngagement = Flight.useBasicFetch<Engagement>(\n VideoViewsV2Requests.shareHeatMapAggregation(props.shareId)\n );\n\n const osCount = Flight.useBasicFetch<GroupedAnalyticsCount[]>(\n VideoViewsV2Requests.shareAggregation(props.shareId, 'os_name')\n );\n\n const { users, hasCompleted } = useInsightEngagement(props.shareId);\n \n const hasDataLoaded =\n config.hasCompleted &&\n video.hasCompleted &&\n engagement.hasCompleted &&\n aggregateEngagement.hasCompleted &&\n osCount.hasCompleted &&\n yearGroups.data &&\n hasCompleted;\n\n const videoInsightsAppLinks = getVideoInsightsAppLinks(share.data);\n\n return (\n <div className='px-3'>\n <InsightsHeader\n video={video.data}\n classroom={classroom.data}\n tabs={getInsightsVideoTabs(share.data, 'insights')}\n hasAnalytics={hasPermissions(PermissionName.ViewCustomerAnalytics)}\n analyticsWebUrl={config.data?.analyticsWebUrl}\n share={share.data}\n yearGroups={yearGroups.data}\n />\n\n <VideoInsightsOverview\n hasDataLoaded={!!hasDataLoaded}\n hasClassrooms={hasClassrooms}\n anonymiseUsers={anonymiseUsers}\n videoInsightsAppLinks={videoInsightsAppLinks}\n config={config.data}\n video={video.data}\n classroomStudents={classroomStudents.items}\n viewers={users}\n individualEngagement={engagement.data}\n aggregateEngagement={aggregateEngagement.data}\n share={share.data}\n osCount={osCount.data}\n />\n </div>\n );\n}","import { HashObject } from 'libs/common/react/interfaces';\n\nimport { Share } from 'libs/shared/apps/share-v2/interfaces/Share';\n\nimport { getInsightsHeatmapAppLink } from 'shared/utils/ObjectAppLinkHelper';\n\nexport function getVideoInsightsAppLinks(share: Share, params?: HashObject) {\n return {\n heatmapAppLink: getInsightsHeatmapAppLink(share, params)\n };\n}","import React from 'react';\n\nimport { FilterStudentsBy, SortStudentsBy } from 'libs/shared/apps/analytics/utils/StudentTableUtils';\nimport { Share } from 'libs/shared/apps/share-v2/interfaces/Share';\nimport { MasterType } from 'libs/shared/enums/MasterType';\n\nimport { InsightsTabs } from 'apps/my-shares/utils/InsightsAppLinkUtils';\nimport { InsightsHeatmapView } from 'apps/my-shares/views/heatmap/InsightsHeatmapView';\nimport { InteractiveInsightsOverviewView } from 'apps/my-shares/views/interactive/overview/InteractiveInsightsOverviewView';\nimport { InteractiveInsightsQuestionsView } from 'apps/my-shares/views/interactive/questions/InteractiveInsightsQuestionsView';\nimport { InteractiveInsightsStudentsView } from 'apps/my-shares/views/interactive/students/InteractiveInsightsStudentsView';\nimport { VideoInsightsOverviewView } from 'apps/my-shares/views/video/overview/VideoInsightsOverviewView';\n\ninterface UseInsightsViewOptions {\n share: Share | undefined;\n tab: InsightsTabs;\n interactionId: string;\n sortBy: SortStudentsBy;\n filterBy: FilterStudentsBy;\n}\n\ntype ShareContext = Omit<UseInsightsViewOptions, 'tab'>;\ntype ViewFn = (ctx: ShareContext) => JSX.Element;\ntype ViewRegistry = Partial<Record<MasterType, Partial<Record<InsightsTabs, ViewFn>>>>;\n\nconst INSIGHTS_VIEWS: ViewRegistry = {\n [MasterType.Video]: {\n insights: ctx => <VideoInsightsOverviewView shareId={ctx.share.shareId} />,\n heatmap: ctx => <InsightsHeatmapView shareId={ctx.share.shareId} />\n },\n [MasterType.Clip]: {\n insights: ctx => <VideoInsightsOverviewView shareId={ctx.share.shareId} />,\n heatmap: ctx => <InsightsHeatmapView shareId={ctx.share.shareId} />\n },\n [MasterType.Interactive]: {\n insights: ctx => <InteractiveInsightsOverviewView shareId={ctx.share.shareId} />,\n heatmap: ctx => <InsightsHeatmapView shareId={ctx.share.shareId} />,\n questions: ctx => (\n <InteractiveInsightsQuestionsView\n interactionId={ctx.interactionId}\n sortBy={ctx.sortBy}\n shareId={ctx.share.shareId}\n />\n ),\n results: ctx => (\n <InteractiveInsightsStudentsView\n filterBy={ctx.filterBy}\n sortBy={ctx.sortBy}\n shareId={ctx.share.shareId}\n />\n )\n }\n};\n\n/**\n * Takes any Share object and a tab, and returns the corresponding \"insights\" view.\n * This is just a utility hook, and as such doesn't need to set the page title directly.\n */\n// eslint-disable-next-line rulesdir/require-view-title\nexport function useInsightsView(options: UseInsightsViewOptions): JSX.Element {\n const { share, tab } = options;\n const viewFn = INSIGHTS_VIEWS[share?.objectTypeId]?.[tab];\n\n if (viewFn)\n return viewFn(options);\n\n return <></>;\n}","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { Flight } from 'libs/common/react/index';\n\nimport { FilterStudentsBy, SortStudentsBy } from 'libs/shared/apps/analytics/utils/StudentTableUtils';\nimport { ShareRequests } from 'libs/shared/apps/share-v2/flight-requests/ShareRequests';\nimport { Share } from 'libs/shared/apps/share-v2/interfaces/Share';\n\nimport { getShareOptionsAppLink } from 'shared/utils/ObjectAppLinkHelper';\n\nimport { InsightsTabs } from 'apps/my-shares/utils/InsightsAppLinkUtils';\nimport { useInsightsView } from 'apps/my-shares/views/base-insights-view/useInsightsView';\n\ninterface BaseInsightsViewProps {\n shareId: string;\n tab: InsightsTabs;\n interactionId: string;\n sortBy: SortStudentsBy;\n filterBy: FilterStudentsBy;\n showShareOptions?: boolean;\n}\n\n/**\n * BaseInsightsView is a generic component that renders different \"insights\" views based on the provided share.\n * The child views will handle setting the page title and other specific details.\n * \n * It also handles the logic for showing share options if `showShareOptions` is true - which is currently used\n * in our used in our LCE emails.\n */\n// eslint-disable-next-line rulesdir/require-view-title\nexport function BaseInsightsView(props: BaseInsightsViewProps): JSX.Element {\n const share = Flight.useBasicFetch<Share>(ShareRequests.getShare(props.shareId));\n\n const view = useInsightsView({\n share: share.data,\n tab: props.tab,\n interactionId: props.interactionId,\n sortBy: props.sortBy,\n filterBy: props.filterBy\n });\n\n React.useEffect(() => {\n if (!props.showShareOptions) return;\n if (!share.data) return;\n\n const appLink = getShareOptionsAppLink(share.data);\n \n if (!appLink) return;\n\n Core.AppLinkHelper.trigger(appLink);\n }, [ share.data, props.showShareOptions ]);\n\n return (\n <>\n {view}\n </>\n );\n}"],"names":["useFetchInteractiveResults","interactiveMetadataId","requestFilter","includePublicResults","currentUser","interactiveMetadata","interactive","data","interactiveId","shouldFetchResults","I","id","normalizeOptions","namespace","ShareRequests","createShare","url","key","type","invalidationKeys","updateShare","shareId","deleteShare","getShare","bootstrapName","getSentShares","params","Object","values","sort","join","normalize","getShareLink","objectId","createShareLink","getPrivacy","getSharesByObjectId","createSharePincode","getPincodeByShareId","getPincodeByCode","code","defaultErrors","notFound","forbidden","rating","yearLevel","region","privacy","badRequest","internalServerError","handleHttpError","info","customErrorMap","ignoreMap","statusCode","status","errorMap","CHUNK_SIZE","useBatchFetch","itemIds","getRequest","requests","map","chunk","responses","itemsArr","items","length","reduce","acc","item","isFetching","hasCompleted","useGrowingBatchFetch","objs","_getKey","getKey","obj","useGrowingBatchFetchFunc","fetchItems","options","fetchedItems","Set","setRequests","hasFirstRequestCompleted","unfetchedItems","forEach","current","has","push","add","r","generateCacheKey","flightObjs","useHandleObjectError","_flightObjs","customErrors","ignoreErrors","Array","isArray","useEffect","getPhrase","LanguageService","StudentResultsEmptyState","props","filter","EmptyState","className","src","notCompletedImageUrl","size","markingRequiredImageUrl","helpingHandImageUrl","emptyStateImageUrl","StudentResultsTableFilterButtons","toggleFilter","selectedFilter","updatedFilter","setFilter","getClassName","isFilterSelected","Text","phrase","onClick","fixedTableTheme","table","header","headerRow","headerCell","row","resultsTableTheme","cell","StudentResultsTable","sortBy","setSortBy","filterBy","ref","fixedColumns","results","anonymiseUsers","config","imageCdnUrl","resultColumns","index","refreshTable","ArrayHelper","onRowHover","students","Table","columns","theme","onSelectRow","original","viewStudentResults","user","onRowMouseOver","onRowMouseLeave","enableSort","manualSort","onSort","initialSortBy","enableSlider","scrollIncrement","onSelectCell","column","scrollContainerClassName","PartialInteractiveInsightsStudents","InteractiveInsightsStudents","hasDataLoaded","ImageUrls","useAnonSessions","anonSessions","prev","next","sessionId","anonSession","name","sessionName","useInsightsClassroomStudents","fetch","share","classroomId","recipients","find","recipientTypeId","recipientId","cursor","result","EMPTY_INTERACTIVE_RESULTS","attempts","answeredAt","answers","useInsightsInteractiveResults","classroomStudents","studentHash","s","VideoViewsV2Requests","useInsightEngagement","engagement","userIds","u","userId","users","UserRequests","userMap","viewers","e","percentage","engagementRate","InsightsHeatmapView","useLockContentWidth","hasPermissions","usePermissions","ShareHelper","classroom","ClassroomRequests","videoRequest","VideoHelper","objectTypeId","video","ConfigRequests","yearGroups","CustomerRequests","customerId","aggregateEngagement","yearGroupsCount","viewKey","PlayerRequests","MediaIdType","useSetPageMetadata","title","InsightsHeader","tabs","MasterType","getInsightsTabs","hasAnalytics","PermissionName","analyticsWebUrl","InsightsHeatmap","individualEngagement","tableDataLoaded","InteractiveInsightsOverviewView","SharedViewModelKeys","InteractiveRequests","osCount","interactiveInsightsAppLinks","resultsAppLink","questionsAppLink","heatmapAppLink","getInteractiveInsightsAppLinks","InteractiveInsightsOverview","InteractiveInsightsQuestionsView","InteractiveInsightsQuestions","interactionId","InteractiveInsightsStudentsView","application","action","studentId","InsightStudentsNotWatched","studentsNotWatched","student","watchedIds","includes","InsightCard","svgName","svgClassName","InsightStudentList","imageUrl","description","InsightStudentsWatched","count","appLink","appLinkText","PartialVideoInsightsOverview","VideoInsightsOverview","hasData","getStudentsList","InsightsShareMask","videoInsightsAppLinks","hasClassrooms","InsightDevices","InsightHeatmap","VideoInsightsOverviewView","useSettings","getVideoInsightsAppLinks","INSIGHTS_VIEWS","insights","ctx","heatmap","questions","BaseInsightsView","view","tab","viewFn","useInsightsView","showShareOptions"],"sourceRoot":""}
@@ -1,2 +0,0 @@
1
- "use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[9003],{26025:(e,t,i)=>{i.d(t,{B:()=>r});var a=i(1048),n=i(75795),r={getAudienceAppLinkParams:function(){var e=n.O.getCurrentRoute().appLink,t=a.t.isObject(e.params)?e.params:{},i=t.users,r=t.classrooms,o=t.classroomGroups,s=function(e){var i=t[e];if(i)return Array.isArray(i)?i:[i]},p={};return i&&(p.users=s("users")),r&&(p.classrooms=s("classrooms")),o&&(p.classroomGroups=s("classroomGroups")),p},getDateRangeAppLinkParams:function(){var e=n.O.getCurrentRoute().appLink,t=a.t.isObject(e.params)?e.params:{},i=t.from,r=t.to,o=t.rangeName,s={};return i&&(s.from=i),r&&(s.to=r),o&&(s.rangeName=o),s}}},49087:(e,t,i)=>{i.d(t,{G:()=>r});var a=i(1048),n=i(4594),r={isPlaylist:function(e){return(null==e?void 0:e.typeId)===n.E.Playlist},isOwner:function(e,t){var i;return!(!t||!e||a.t.isEmpty(e._liteOwner))&&e._liteOwner.id.toString()===(null===(i=t.id)||void 0===i?void 0:i.toString())},getVideoCount:function(e){var t,i,a;if(e){var n=0;return(null===(t=e.videos)||void 0===t?void 0:t.count)&&(n+=e.videos.count),(null===(i=e.clips)||void 0===i?void 0:i.count)&&(n+=e.clips.count),(null===(a=e.interactives)||void 0===a?void 0:a.count)&&(n+=e.interactives.count),n}}}},2510:(e,t,i)=>{var a;i.d(t,{y:()=>a}),function(e){e.Link="Link",e.Classroom="Classroom",e.Open="Open",e.Live="Live",e.LegacyDirect="LegacyDirect"}(a||(a={}))},21789:(e,t,i)=>{i.d(t,{x:()=>o});var a=i(75896),n=i(110),r=i(4594),o={getFlattenedRecipients:function(e){return a.m.flatten(e.map(function(e){var t;return null!==(t=e.recipients)&&void 0!==t?t:[]}))},getFlattenedUniqueScopes:function(e){var t=o.getFlattenedRecipients(e);return a.m.uniq(t.map(function(e){var t;return null===(t=e.scopeId)||void 0===t?void 0:t.toString()})).filter(function(e){return!!e})},getClassroomIdFromShare:function(e){var t,i=null===(t=e.recipients)||void 0===t?void 0:t[0];if(i)return i.scopeId?i.scopeId.toString():i.recipientId&&i.recipientTypeId===r.E.Classroom?i.recipientId.toString():void 0},getClassroomForShare:function(e,t){var i=o.getClassroomIdFromShare(e);if(i)return t.find(function(e){return e.id.toString()===i.toString()})},getRecipientsCount:function(e,t){var i,a,n,r;return t?null!==(r=null===(n=e.recipients)||void 0===n?void 0:n.filter(function(e){return e.recipientTypeId===t}).length)&&void 0!==r?r:0:null!==(a=null===(i=e.recipients)||void 0===i?void 0:i.length)&&void 0!==a?a:0},hasShareExpired:function(e){if(e.expireDate){var t=new Date,i=new Date(e.expireDate);if(n.O.isAfter(t,i))return!0}return!1},calculateDaysToExpiry:function(e){if(e.expireDate){var t=n.O.diffBetween(new Date(e.expireDate),new Date,"day")||1;return 0===t?1:t}},getShareLocalExpiry:function(e,t){if(!e.expireDate)return null;var i=n.O.convertUTCToLocal(e.expireDate);return n.O.format(i,t)}}},69003:(e,t,i)=>{i.d(t,{cl:()=>b,sD:()=>f});var a=i(23481),n=i(65858),r=i(26025),o=i(49087),s=i(2510),p=i(21789),l=i(4594),c=i(45778),u=i(26860),d=i(35223),S=i(31908),m=i(14070),v=i(97291),g=i(86099);function y(e){return function(e){if(Array.isArray(e))return O(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,t){if(e){if("string"==typeof e)return O(e,t);var i={}.toString.call(e).slice(8,-1);return"Object"===i&&e.constructor&&(i=e.constructor.name),"Map"===i||"Set"===i?Array.from(e):"Arguments"===i||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(i)?O(e,t):void 0}}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function O(e,t){(null==t||t>e.length)&&(t=e.length);for(var i=0,a=Array(t);i<t;i++)a[i]=e[i];return a}var I=a.T.encloseNamespace("myShares.myShares");function f(e){var t,i=e.isPlugin,a=e.breakpoints,n=(null==a?void 0:a.xs)||(null==a?void 0:a.sm),r={button:!n,className:"btn btn-outline-dark"};return(i?[h]:[E,(t=e.sharedObject,(c.G.isType(t,l.E.Video)||c.G.isType(t,l.E.Clip)||c.G.isType(t,l.E.Interactive))&&L),!e.hideShareOptionsActions&&A,C]).reduce(function(t,i){return"function"!=typeof i?t:[].concat(y(t),y(i(Object.assign(Object.assign({},e),{buttonProps:r,isMobile:n}))))},[])}function b(e){var t=function(e){return e?"string"==typeof e?[+e]:e.map(function(e){return+e})||[]:[]}(e),i=r.B.getAudienceAppLinkParams();return{typeIdAppLinkParams:t,audienceAppLinkParams:i,currentAppLink:{application:v.O.MY_SHARES,action:m.e.MyShares.HOME,params:Object.assign(Object.assign({},i),{typeId:t})},sentSharesParams:{recipientUserId:null==i?void 0:i.users,recipientGroupId:[].concat(y((null==i?void 0:i.classroomGroups)||[]),y((null==i?void 0:i.classrooms)||[])),objectTypeId:t.length?t:void 0}}}function h(e){var t=e.sharedObject,i=e.buttonProps;return S.M.isVideoType(t)&&S.M.getCanBeConsumed(t).canConsume?[Object.assign(Object.assign({label:I("embedVideo"),appLink:{application:v.O.DEFAULT,action:m.e.Default.PLUGIN_SHARE,args:[t.id],params:{entityType:t.type}}},i),{analyticsOptions:{actionType:n.Vw.Share,descriptor:n.YM.PluginEmbed,workflowPhase:n.eu.Start,eventVersion:n.eq.V5}})]:[]}function E(e){var t=e.sharedObject,i=e.breakpoints,a=e.buttonProps;return S.M.isVideoType(t)?S.M.getCanBeConsumed(t).canConsume?[Object.assign({label:!(null==i?void 0:i.md)&&I("viewVideo"),tooltip:(null==i?void 0:i.md)&&I("viewVideo"),svgName:d.vn.Video,appLink:(0,g.Qh)(t),group:"main"},a)]:[]:u.v.isSeries(t)?[Object.assign({label:!(null==i?void 0:i.md)&&I("viewSeries"),tooltip:(null==i?void 0:i.md)&&I("viewSeries"),svgName:d.vn.Series,appLink:(0,g.Qh)(t),group:"main"},a)]:o.G.isPlaylist(t)?[Object.assign({label:!(null==i?void 0:i.md)&&I("viewPlaylist"),tooltip:(null==i?void 0:i.md)&&I("viewPlaylist"),svgName:d.vn.Playlist,appLink:(0,g.Qh)(t),group:"main"},a)]:[]}function L(e){var t=e.share,i=e.audienceParams,a=e.hasInsights,n=e.breakpoints,r=e.buttonProps;return a?[Object.assign({svgName:d.vn.Analytics,label:!(null==n?void 0:n.md)&&I("viewInsights"),tooltip:(null==n?void 0:n.md)&&I("viewInsights"),appLink:(0,g.pY)(t,i),group:"main"},r)]:[]}function A(e){var t=e.share,i=e.breakpoints,a=e.buttonProps;return p.x.hasShareExpired(t)?[]:t.type===s.y.Link?[Object.assign({label:!(null==i?void 0:i.md)&&I("shareLink"),tooltip:(null==i?void 0:i.md)&&I("shareLink"),svgName:d.vn.Link,appLink:(0,g.Zm)(t),group:"main"},a)]:t.type===s.y.Classroom||t.type===s.y.Open||t.type===s.y.LegacyDirect?[Object.assign({label:!(null==i?void 0:i.md)&&I("shareOptions"),tooltip:(null==i?void 0:i.md)&&I("shareOptions"),svgName:d.vn.Share,appLink:(0,g.Zm)(t),group:"main"},a)]:[]}function C(e){var t=e.share,i=e.breakpoints,a=e.buttonProps;return t.type===s.y.Link?[Object.assign(Object.assign({label:!(null==i?void 0:i.md)&&I("deleteShareLink"),tooltip:(null==i?void 0:i.md)&&I("deleteShareLink"),svgName:d.vn.Delete,appLink:(0,g.BR)(t),group:"danger"},a),{className:"btn btn-outline-dark text-danger"})]:t.type===s.y.Classroom?[Object.assign(Object.assign({label:!(null==i?void 0:i.md)&&I("deleteAssignment"),tooltip:(null==i?void 0:i.md)&&I("deleteAssignment"),svgName:d.vn.Delete,appLink:(0,g.BR)(t),group:"danger"},a),{className:"btn btn-outline-dark text-danger"})]:t.type===s.y.Open?[Object.assign(Object.assign({label:!(null==i?void 0:i.md)&&I("deleteOpenClassroom"),tooltip:(null==i?void 0:i.md)&&I("deleteOpenClassroom"),svgName:d.vn.Delete,appLink:(0,g.BR)(t),group:"danger"},a),{className:"btn btn-outline-dark text-danger"})]:t.type===s.y.LegacyDirect?[Object.assign(Object.assign({label:!(null==i?void 0:i.md)&&I("deleteLegacyShare"),tooltip:(null==i?void 0:i.md)&&I("deleteLegacyShare"),svgName:d.vn.Delete,appLink:(0,g.BR)(t),group:"danger"},a),{className:"btn btn-outline-dark text-danger"})]:[]}},86099:(e,t,i)=>{i.d(t,{BR:()=>b,Qh:()=>v,Rv:()=>y,Sj:()=>O,Zm:()=>f,pY:()=>g,rq:()=>I});var a=i(23481),n=i(28400),r=i(2510),o=i(21789),s=i(4594),p=i(31908),l=i(14070),c=i(97291),u=i(40254),d=i(82431),S=a.T.encloseNamespace("shared.utils"),m=[s.E.Video,s.E.Clip,s.E.Interactive];function v(e){return p.M.isInteractive(e)?{application:c.O.INTERACTIVES,action:l.e.Interactives.VIEW_INTERACTIVE,args:[e.id,n.m.slugify(e.name)]}:p.M.isClip(e)?{application:c.O.CLIPS,action:l.e.Clips.PLAY_CLIP,args:[e.id,n.m.slugify(e.name)]}:p.M.isVideo(e)?{application:c.O.VIDEOS,action:l.e.Videos.PLAY_VIDEO,args:[e.id,n.m.slugify(e.name)]}:e.typeId===s.E.Playlist?{application:c.O.PLAYLISTS,action:l.e.Playlists.PLAYLIST,args:[e.id,n.m.slugify(e.name)]}:e.typeId===s.E.Series?d.j.getSeriesAppLink(e):void 0}function g(e,t){if(!e)return null;if(!m.includes(e.objectTypeId))return v({id:e.objectId.toString(),typeId:e.objectTypeId});if(e.type===r.y.Classroom){var i=o.x.getClassroomIdFromShare(e);return{application:c.O.CLASSROOMS,action:l.e.Classrooms.INSIGHTS_OVERVIEW,args:[i,e.shareId],params:t}}return e.type===r.y.Open?{application:c.O.CLASSROOMS,action:l.e.Classrooms.OPEN_CLASSROOM_INSIGHTS_OVERVIEW,args:[e.shareId],params:t}:{application:c.O.MY_SHARES,action:l.e.MyShares.INSIGHTS_OVERVIEW,args:[e.shareId],params:t}}function y(e,t){if(!e)return null;if(!m.includes(e.objectTypeId))return v({id:e.objectId.toString(),typeId:e.objectTypeId});if(e.type===r.y.Classroom){var i=o.x.getClassroomIdFromShare(e);return{application:c.O.CLASSROOMS,action:l.e.Classrooms.INSIGHTS_HEATMAP,args:[i,e.shareId],params:t}}return e.type===r.y.Open?{application:c.O.CLASSROOMS,action:l.e.Classrooms.OPEN_CLASSROOM_INSIGHTS_HEATMAP,args:[e.shareId],params:t}:{application:c.O.MY_SHARES,action:l.e.MyShares.INSIGHTS_HEATMAP,args:[e.shareId],params:t}}function O(e,t){if(!e)return null;if(!m.includes(e.objectTypeId))return v({id:e.objectId.toString(),typeId:e.objectTypeId});if(e.type===r.y.Classroom){var i=o.x.getClassroomIdFromShare(e);return{application:c.O.CLASSROOMS,action:l.e.Classrooms.INSIGHTS_QUESTIONS,args:[i,e.shareId],params:t}}return e.type===r.y.Open?{application:c.O.CLASSROOMS,action:l.e.Classrooms.OPEN_CLASSROOM_INSIGHTS_QUESTIONS,args:[e.shareId],params:t}:{application:c.O.MY_SHARES,action:l.e.MyShares.INSIGHTS_QUESTIONS,args:[e.shareId],params:t}}function I(e,t){if(!e)return null;if(!m.includes(e.objectTypeId))return v({id:e.objectId.toString(),typeId:e.objectTypeId});if(e.type===r.y.Classroom){var i=o.x.getClassroomIdFromShare(e);return{application:c.O.CLASSROOMS,action:l.e.Classrooms.INSIGHTS_STUDENTS,args:[i,e.shareId],params:t}}return e.type===r.y.Open?{application:c.O.CLASSROOMS,action:l.e.Classrooms.OPEN_CLASSROOM_INSIGHTS_STUDENTS,args:[e.shareId],params:t}:{application:c.O.MY_SHARES,action:l.e.MyShares.INSIGHTS_STUDENTS,args:[e.shareId],params:t}}function f(e){if(e){var t=h(e);return e.type===r.y.Link?{application:c.O.SHARE,action:l.e.Share.SHARE,args:[e.objectId],params:{entityType:t}}:u.W.assignDetails({objectId:e.objectId.toString(),shareId:e.shareId,entityType:t,detailsTitle:S("shareOptions")})}}function b(e){if(e){var t=h(e);return e.type===r.y.Link?{application:c.O.SHARE,action:l.e.Share.DELETE_SHARE_LINK,args:[e.objectId],params:{entityType:t,previousAppLink:{application:c.O.MY_SHARES,action:l.e.MyShares.HOME}}}:e.type===r.y.LegacyDirect?{application:c.O.SHARE,action:l.e.Share.DELETE_LEGACY_SHARE,args:[e.shareId],params:{previousAppLink:{application:c.O.MY_SHARES,action:l.e.MyShares.HOME}}}:e.type===r.y.Classroom?{application:c.O.SHARE,action:l.e.Share.DELETE_ASSIGNMENT,args:[e.shareId],params:{previousAppLink:{application:c.O.CLASSROOMS,action:l.e.Classrooms.CLASSROOM_HOME,args:[o.x.getClassroomIdFromShare(e)]}}}:e.type===r.y.Open?{application:c.O.SHARE,action:l.e.Share.DELETE_OPEN_CLASSROOM,args:[e.shareId],params:{previousAppLink:{application:c.O.CLASSROOMS,action:l.e.Classrooms.OPEN_CLASSROOMS,args:[o.x.getClassroomIdFromShare(e)]}}}:void 0}}function h(e){return e.objectTypeId===s.E.Video?"video":e.objectTypeId===s.E.Interactive?"interactive":e.objectTypeId===s.E.Clip?"clip":e.objectTypeId===s.E.Series?"series":e.objectTypeId===s.E.Playlist?"playlist":void 0}}}]);
2
- //# sourceMappingURL=9003-36ab592cc5-lite.chunk.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"scripts/9003-36ab592cc5-lite.chunk.js","mappings":"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","sources":["file:///app/packages/libs/shared/src/apps/analytics/utils/AnalyticsFilterUtils.ts","file:///app/packages/libs/shared/src/apps/playlists/utils/PlaylistHelper.ts","file:///app/packages/libs/shared/src/apps/share-v2/enums/ShareType.ts","file:///app/packages/libs/shared/src/apps/share-v2/utils/ShareHelper.ts","file:///app/packages/projects/lite/src/apps/my-shares/views/my-shares/MySharesViewUtils.ts","file:///app/packages/projects/lite/src/shared/utils/ObjectAppLinkHelper.ts"],"sourcesContent":["import { HashObject } from 'libs/common/react/interfaces';\nimport { ObjectHelper } from 'libs/common/react/utils/ObjectHelper';\n\nimport { AudienceQueryParams } from 'libs/shared/apps/analytics/interfaces/AudienceQueryParams';\nimport { DateRangeQueryParams } from 'libs/shared/apps/analytics/interfaces/DateRangeQueryParams';\nimport { ContextService } from 'libs/shared/services/ContextService';\n\nexport const AnalyticsFilterHelper = {\n getAudienceAppLinkParams: () => {\n const { appLink } = ContextService.getCurrentRoute();\n const params = ObjectHelper.isObject(appLink.params) ? appLink.params as HashObject : {};\n const { users, classrooms, classroomGroups } = params;\n\n const getParam = (key: keyof AudienceQueryParams) => {\n const param = params[key];\n\n if (!param)\n return;\n\n return Array.isArray(param) ? param : [param];\n };\n\n const audienceFilters: AudienceQueryParams = {};\n\n if (users)\n audienceFilters.users = getParam('users');\n\n if (classrooms)\n audienceFilters.classrooms = getParam('classrooms');\n\n if (classroomGroups)\n audienceFilters.classroomGroups = getParam('classroomGroups');\n\n return audienceFilters;\n },\n getDateRangeAppLinkParams: () => {\n const { appLink } = ContextService.getCurrentRoute();\n const params = ObjectHelper.isObject(appLink.params) ? appLink.params as HashObject : {};\n const { from, to, rangeName } = params;\n\n const dateRangeFilters: DateRangeQueryParams = {};\n\n if (from)\n dateRangeFilters.from = from;\n\n if (to)\n dateRangeFilters.to = to;\n\n if (rangeName)\n dateRangeFilters.rangeName = rangeName;\n\n return dateRangeFilters;\n }\n};","import { ObjectHelper } from 'libs/common/react/utils/ObjectHelper';\n\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { BaseObject, CurrentUser, Playlist } from 'libs/shared/interfaces';\n\nexport const PlaylistHelper = {\n isPlaylist(obj: BaseObject): obj is Playlist {\n return obj?.typeId === MasterType.Playlist;\n },\n\n isOwner(playlist: Playlist, currentUser: CurrentUser): boolean {\n if (!currentUser || !playlist || ObjectHelper.isEmpty(playlist._liteOwner))\n return false;\n\n return playlist._liteOwner.id.toString() === currentUser.id?.toString();\n },\n\n getVideoCount(playlist: Playlist): number {\n if (!playlist)\n return;\n\n let count = 0;\n\n if (playlist.videos?.count)\n count += playlist.videos.count;\n\n if (playlist.clips?.count)\n count += playlist.clips.count;\n\n if (playlist.interactives?.count)\n count += playlist.interactives.count;\n\n return count;\n }\n};","export enum ShareType {\n Link = 'Link',\n Classroom = 'Classroom',\n Open = 'Open',\n Live = 'Live',\n LegacyDirect = 'LegacyDirect',\n}","import { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\nimport { DateHelper } from 'libs/common/react/utils/DateHelper';\n\nimport { Share } from 'libs/shared/apps/share-v2/interfaces/Share';\nimport { ShareRecipient } from 'libs/shared/apps/share-v2/interfaces/ShareRecipient';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { Classroom } from 'libs/shared/interfaces';\n\nexport const ShareHelper = {\n getFlattenedRecipients(shares: Share[]): ShareRecipient[] {\n return ArrayHelper.flatten(shares.map(s => s.recipients ?? []));\n },\n\n getFlattenedUniqueScopes(shares: Share[]): string[] {\n const recipients = ShareHelper.getFlattenedRecipients(shares);\n return ArrayHelper.uniq(recipients.map(r => r.scopeId?.toString())).filter(x => !!x);\n },\n \n getClassroomIdFromShare(share: Share): 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: Share, 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\n getRecipientsCount(share: Share, type?: MasterType.ClassroomGroup | MasterType.User): number {\n if (!type) return share.recipients?.length ?? 0;\n \n return share.recipients?.filter(r => r.recipientTypeId === type).length ?? 0;\n },\n\n hasShareExpired(share: Share): boolean {\n if (share.expireDate) {\n const now = new Date();\n const expireDate = new Date(share.expireDate);\n\n if (DateHelper.isAfter(now, expireDate))\n return true;\n }\n\n return false;\n },\n\n calculateDaysToExpiry(share: Share): number | undefined {\n if (!share.expireDate) return;\n\n const remainingDays = DateHelper.diffBetween(new Date(share.expireDate), new Date(), 'day') || 1;\n const smartCount = remainingDays === 0 ? 1 : remainingDays; // Prevent zero count\n\n return smartCount;\n },\n\n getShareLocalExpiry(share: Share, format: string): string | null {\n if (!share.expireDate)\n return null;\n \n const localDate = DateHelper.convertUTCToLocal(share.expireDate);\n return DateHelper.format(localDate, format);\n }\n};","import { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { EventVersion, ShareDescriptors, UserAction, WorkflowPhase } from 'libs/analytics/interfaces';\n\nimport { AudienceQueryParams } from 'libs/shared/apps/analytics/interfaces/AudienceQueryParams';\nimport { AnalyticsFilterHelper } from 'libs/shared/apps/analytics/utils/AnalyticsFilterUtils';\nimport { PlaylistHelper } from 'libs/shared/apps/playlists/utils/PlaylistHelper';\nimport { ShareType } from 'libs/shared/apps/share-v2/enums/ShareType';\nimport { Share } from 'libs/shared/apps/share-v2/interfaces/Share';\nimport { ShareHelper } from 'libs/shared/apps/share-v2/utils/ShareHelper';\nimport { ActionOptions } from 'libs/shared/components/actions/Actions';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { Breakpoints } from 'libs/shared/hooks/useBreakpoints';\nimport { BaseObject } from 'libs/shared/interfaces';\nimport { MasterTypeHelper } from 'libs/shared/utils/MasterTypeHelper';\nimport { SeriesHelper } from 'libs/shared/utils/SeriesHelper';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\nimport { getObjectAppLink } from 'shared/utils/ObjectAppLinkHelper';\nimport { getDeleteShareAppLink, getInsightsOverviewAppLink, getShareOptionsAppLink } from 'shared/utils/ObjectAppLinkHelper';\n\nconst namespace = 'myShares.myShares';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nexport function hasInsightsActions(sharedObject: BaseObject): boolean {\n return (\n MasterTypeHelper.isType(sharedObject, MasterType.Video) ||\n MasterTypeHelper.isType(sharedObject, MasterType.Clip) ||\n MasterTypeHelper.isType(sharedObject, MasterType.Interactive)\n );\n}\n\ninterface ShareObjectActionsOptions {\n share: Share;\n sharedObject: BaseObject;\n audienceParams?: AudienceQueryParams;\n hasInsights?: boolean;\n isPlugin?: boolean;\n breakpoints?: Breakpoints;\n hideShareOptionsActions?: boolean;\n}\n\nexport function getShareObjectActions(options: ShareObjectActionsOptions): ActionOptions[] {\n const { isPlugin, breakpoints } = options;\n const isMobile = breakpoints?.xs || breakpoints?.sm;\n const buttonProps = {\n button: !isMobile,\n className: 'btn btn-outline-dark'\n };\n\n const actionProviders = isPlugin ? [getActionsForPlugin] : [\n getMediaActions,\n hasInsightsActions(options.sharedObject) && getInsightsActions,\n !options.hideShareOptionsActions && getShareOptionsActions,\n getDeleteActions\n ];\n\n return actionProviders.reduce((actions, getActionFn) => {\n if (typeof getActionFn !== 'function')\n return actions;\n \n return [ ...actions, ...getActionFn({ ...options, buttonProps, isMobile }) ];\n }, [] as ActionOptions[]);\n}\n\nexport function getTypeIdParams(typeId: string | string[]): MasterType[] {\n if (!typeId) return [];\n\n if (typeof typeId === 'string')\n return [+typeId];\n\n return typeId.map(typeId => +typeId) || [];\n}\n\nexport function getSharesParams(typeId: string | string[]) {\n const typeIdAppLinkParams = getTypeIdParams(typeId);\n const audienceAppLinkParams = AnalyticsFilterHelper.getAudienceAppLinkParams();\n const currentAppLink = {\n application: AppChannels.MY_SHARES,\n action: Actions.MyShares.HOME,\n params: {\n ...audienceAppLinkParams,\n typeId: typeIdAppLinkParams\n }\n };\n const sentSharesParams = {\n recipientUserId: audienceAppLinkParams?.users,\n recipientGroupId: [ ...audienceAppLinkParams?.classroomGroups || [], ...audienceAppLinkParams?.classrooms || [] ],\n objectTypeId: typeIdAppLinkParams.length ? typeIdAppLinkParams : undefined\n };\n\n return {\n typeIdAppLinkParams,\n audienceAppLinkParams,\n currentAppLink,\n sentSharesParams\n };\n}\n\ninterface ShareActionHanderOptions extends ShareObjectActionsOptions {\n isMobile: boolean;\n buttonProps: {\n button: boolean;\n className: string;\n }\n}\n\nfunction getActionsForPlugin(options: ShareActionHanderOptions): ActionOptions[] {\n const { sharedObject, buttonProps } = options;\n\n if (VideoHelper.isVideoType(sharedObject)) {\n const { canConsume } = VideoHelper.getCanBeConsumed(sharedObject);\n\n if (!canConsume)\n return [];\n\n return [{\n label: getPhrase('embedVideo'),\n appLink: {\n application: AppChannels.DEFAULT,\n action: Actions.Default.PLUGIN_SHARE,\n args: [sharedObject.id],\n params: { entityType: sharedObject.type }\n },\n ...buttonProps,\n analyticsOptions: {\n actionType: UserAction.Share,\n descriptor: ShareDescriptors.PluginEmbed,\n workflowPhase: WorkflowPhase.Start,\n eventVersion: EventVersion.V5\n }\n }];\n }\n\n return [];\n}\n\nfunction getMediaActions(options: ShareActionHanderOptions): ActionOptions[] {\n const { sharedObject, breakpoints, buttonProps } = options;\n\n if (VideoHelper.isVideoType(sharedObject)) {\n const { canConsume } = VideoHelper.getCanBeConsumed(sharedObject);\n\n if (!canConsume)\n return [];\n\n return [{\n label: !breakpoints?.md && getPhrase('viewVideo'),\n tooltip: breakpoints?.md && getPhrase('viewVideo'),\n svgName: cvSvgLibrary.Video,\n appLink: getObjectAppLink(sharedObject),\n group: 'main',\n ...buttonProps\n }];\n }\n \n if (SeriesHelper.isSeries(sharedObject)) {\n return [{\n label: !breakpoints?.md && getPhrase('viewSeries'),\n tooltip: breakpoints?.md && getPhrase('viewSeries'),\n svgName: cvSvgLibrary.Series,\n appLink: getObjectAppLink(sharedObject),\n group: 'main',\n ...buttonProps\n }];\n }\n \n if (PlaylistHelper.isPlaylist(sharedObject)) {\n return [{\n label: !breakpoints?.md && getPhrase('viewPlaylist'),\n tooltip: breakpoints?.md && getPhrase('viewPlaylist'),\n svgName: cvSvgLibrary.Playlist,\n appLink: getObjectAppLink(sharedObject),\n group: 'main',\n ...buttonProps\n }];\n }\n \n return [];\n}\n\nfunction getInsightsActions(options: ShareActionHanderOptions): ActionOptions[] {\n const { share, audienceParams, hasInsights, breakpoints, buttonProps } = options;\n\n if (!hasInsights)\n return [];\n\n return [{\n svgName: cvSvgLibrary.Analytics,\n label: !breakpoints?.md && getPhrase('viewInsights'),\n tooltip: breakpoints?.md && getPhrase('viewInsights'),\n appLink: getInsightsOverviewAppLink(share, audienceParams),\n group: 'main',\n ...buttonProps\n }];\n}\n\nfunction getShareOptionsActions(options: ShareActionHanderOptions): ActionOptions[] {\n const { share, breakpoints, buttonProps } = options;\n\n if (ShareHelper.hasShareExpired(share))\n return [];\n\n if (share.type === ShareType.Link) {\n return [{\n label: !breakpoints?.md && getPhrase('shareLink'),\n tooltip: breakpoints?.md && getPhrase('shareLink'),\n svgName: cvSvgLibrary.Link,\n appLink: getShareOptionsAppLink(share),\n group: 'main',\n ...buttonProps\n }];\n }\n\n if (share.type === ShareType.Classroom) {\n return [{\n label: !breakpoints?.md && getPhrase('shareOptions'),\n tooltip: breakpoints?.md && getPhrase('shareOptions'),\n svgName: cvSvgLibrary.Share,\n appLink: getShareOptionsAppLink(share),\n group: 'main',\n ...buttonProps\n }];\n }\n\n if (share.type === ShareType.Open) {\n return [{\n label: !breakpoints?.md && getPhrase('shareOptions'),\n tooltip: breakpoints?.md && getPhrase('shareOptions'),\n svgName: cvSvgLibrary.Share,\n appLink: getShareOptionsAppLink(share),\n group: 'main',\n ...buttonProps\n }];\n }\n\n if (share.type === ShareType.LegacyDirect) {\n return [{\n label: !breakpoints?.md && getPhrase('shareOptions'),\n tooltip: breakpoints?.md && getPhrase('shareOptions'),\n svgName: cvSvgLibrary.Share,\n appLink: getShareOptionsAppLink(share),\n group: 'main',\n ...buttonProps\n }];\n }\n\n return [];\n}\n\nfunction getDeleteActions(options: ShareActionHanderOptions): ActionOptions[] {\n const { share, breakpoints, buttonProps } = options;\n \n if (share.type === ShareType.Link) {\n return [{\n label: !breakpoints?.md && getPhrase('deleteShareLink'),\n tooltip: breakpoints?.md && getPhrase('deleteShareLink'),\n svgName: cvSvgLibrary.Delete,\n appLink: getDeleteShareAppLink(share),\n group: 'danger',\n ...buttonProps,\n className: 'btn btn-outline-dark text-danger'\n }];\n }\n\n if (share.type === ShareType.Classroom) {\n return [{\n label: !breakpoints?.md && getPhrase('deleteAssignment'),\n tooltip: breakpoints?.md && getPhrase('deleteAssignment'),\n svgName: cvSvgLibrary.Delete,\n appLink: getDeleteShareAppLink(share),\n group: 'danger',\n ...buttonProps,\n className: 'btn btn-outline-dark text-danger'\n }];\n }\n\n if (share.type === ShareType.Open) {\n return [{\n label: !breakpoints?.md && getPhrase('deleteOpenClassroom'),\n tooltip: breakpoints?.md && getPhrase('deleteOpenClassroom'),\n svgName: cvSvgLibrary.Delete,\n appLink: getDeleteShareAppLink(share),\n group: 'danger',\n ...buttonProps,\n className: 'btn btn-outline-dark text-danger'\n }];\n }\n\n if (share.type === ShareType.LegacyDirect) {\n return [{\n label: !breakpoints?.md && getPhrase('deleteLegacyShare'),\n tooltip: breakpoints?.md && getPhrase('deleteLegacyShare'),\n svgName: cvSvgLibrary.Delete,\n appLink: getDeleteShareAppLink(share),\n group: 'danger',\n ...buttonProps,\n className: 'btn btn-outline-dark text-danger'\n }];\n }\n\n return [];\n}","import { Core } from 'libs/common/backbone/index';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { HashObject } from 'libs/common/react/interfaces';\nimport { TextHelper } from 'libs/common/react/utils/TextHelper';\n\nimport { SharableEntityType } from 'libs/shared/apps/share/views/share/ShareViewHelper';\nimport { ShareType } from 'libs/shared/apps/share-v2/enums/ShareType';\nimport { Share } from 'libs/shared/apps/share-v2/interfaces/Share';\nimport { ShareHelper } from 'libs/shared/apps/share-v2/utils/ShareHelper';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { BaseObject, Series } from 'libs/shared/interfaces';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\n\nimport { AssignAppLinkHelper } from 'apps/assign/utils/AssignAppLinkHelper';\nimport { SeriesAppLinkHelper } from 'apps/series/SeriesAppLinkHelper';\n\nconst namespace = 'shared.utils';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nconst INSIGHTS_WHITELIST = [\n MasterType.Video,\n MasterType.Clip,\n MasterType.Interactive\n];\n\nexport function getObjectAppLink(object: BaseObject): Core.AppLink {\n if (VideoHelper.isInteractive(object)) {\n return {\n application: AppChannels.INTERACTIVES,\n action: Actions.Interactives.VIEW_INTERACTIVE,\n args: [ object.id, TextHelper.slugify(object.name) ]\n };\n }\n\n if (VideoHelper.isClip(object)) {\n return {\n application: AppChannels.CLIPS,\n action: Actions.Clips.PLAY_CLIP,\n args: [ object.id, TextHelper.slugify(object.name) ]\n };\n }\n\n if (VideoHelper.isVideo(object)) {\n return {\n application: AppChannels.VIDEOS,\n action: Actions.Videos.PLAY_VIDEO,\n args: [ object.id, TextHelper.slugify(object.name) ]\n };\n }\n\n if (object.typeId === MasterType.Playlist) {\n return {\n application: AppChannels.PLAYLISTS,\n action: Actions.Playlists.PLAYLIST,\n args: [ object.id, TextHelper.slugify(object.name) ]\n };\n }\n\n if (object.typeId === MasterType.Series) {\n return SeriesAppLinkHelper.getSeriesAppLink(object as Series);\n }\n}\n\nexport function getInsightsOverviewAppLink(share: Share, params?: HashObject): Core.AppLink {\n if (!share)\n return null;\n\n if (!INSIGHTS_WHITELIST.includes(share.objectTypeId))\n return getObjectAppLink({ id: share.objectId.toString(), typeId: share.objectTypeId });\n\n if (share.type === ShareType.Classroom) {\n const classroomId = ShareHelper.getClassroomIdFromShare(share);\n\n return {\n application: AppChannels.CLASSROOMS,\n action: Actions.Classrooms.INSIGHTS_OVERVIEW,\n args: [ classroomId, share.shareId ],\n params\n };\n }\n\n if (share.type === ShareType.Open) {\n return {\n application: AppChannels.CLASSROOMS,\n action: Actions.Classrooms.OPEN_CLASSROOM_INSIGHTS_OVERVIEW,\n args: [share.shareId],\n params\n };\n }\n\n return {\n application: AppChannels.MY_SHARES,\n action: Actions.MyShares.INSIGHTS_OVERVIEW,\n args: [share.shareId],\n params\n };\n}\n\nexport function getInsightsHeatmapAppLink(share: Share, params?: HashObject): Core.AppLink {\n if (!share)\n return null;\n\n if (!INSIGHTS_WHITELIST.includes(share.objectTypeId))\n return getObjectAppLink({ id: share.objectId.toString(), typeId: share.objectTypeId });\n\n if (share.type === ShareType.Classroom) {\n const classroomId = ShareHelper.getClassroomIdFromShare(share);\n\n return {\n application: AppChannels.CLASSROOMS,\n action: Actions.Classrooms.INSIGHTS_HEATMAP,\n args: [ classroomId, share.shareId ],\n params\n };\n }\n\n if (share.type === ShareType.Open) {\n return {\n application: AppChannels.CLASSROOMS,\n action: Actions.Classrooms.OPEN_CLASSROOM_INSIGHTS_HEATMAP,\n args: [share.shareId],\n params\n };\n }\n\n return {\n application: AppChannels.MY_SHARES,\n action: Actions.MyShares.INSIGHTS_HEATMAP,\n args: [share.shareId],\n params\n };\n}\n\nexport function getInsightsQuestionsAppLink(share: Share, params?: HashObject): Core.AppLink {\n if (!share)\n return null;\n\n if (!INSIGHTS_WHITELIST.includes(share.objectTypeId))\n return getObjectAppLink({ id: share.objectId.toString(), typeId: share.objectTypeId });\n\n if (share.type === ShareType.Classroom) {\n const classroomId = ShareHelper.getClassroomIdFromShare(share);\n\n return {\n application: AppChannels.CLASSROOMS,\n action: Actions.Classrooms.INSIGHTS_QUESTIONS,\n args: [ classroomId, share.shareId ],\n params\n };\n }\n\n if (share.type === ShareType.Open) {\n return {\n application: AppChannels.CLASSROOMS,\n action: Actions.Classrooms.OPEN_CLASSROOM_INSIGHTS_QUESTIONS,\n args: [share.shareId],\n params\n };\n }\n\n return {\n application: AppChannels.MY_SHARES,\n action: Actions.MyShares.INSIGHTS_QUESTIONS,\n args: [share.shareId],\n params\n };\n}\n\nexport function getInsightsStudentsAppLink(share: Share, params?: HashObject): Core.AppLink {\n if (!share)\n return null;\n \n if (!INSIGHTS_WHITELIST.includes(share.objectTypeId))\n return getObjectAppLink({ id: share.objectId.toString(), typeId: share.objectTypeId });\n\n if (share.type === ShareType.Classroom) {\n const classroomId = ShareHelper.getClassroomIdFromShare(share);\n\n return {\n application: AppChannels.CLASSROOMS,\n action: Actions.Classrooms.INSIGHTS_STUDENTS,\n args: [ classroomId, share.shareId ],\n params\n };\n }\n\n if (share.type === ShareType.Open) {\n return {\n application: AppChannels.CLASSROOMS,\n action: Actions.Classrooms.OPEN_CLASSROOM_INSIGHTS_STUDENTS,\n args: [share.shareId],\n params\n };\n }\n\n return {\n application: AppChannels.MY_SHARES,\n action: Actions.MyShares.INSIGHTS_STUDENTS,\n args: [share.shareId],\n params\n };\n}\n\nexport function getShareOptionsAppLink(share: Share): Core.AppLink {\n if (!share) return;\n\n const entityType = getSharableEntityType(share);\n\n if (share.type === ShareType.Link) {\n return {\n application: AppChannels.SHARE,\n action: Actions.Share.SHARE,\n args: [share.objectId],\n params: { entityType }\n };\n }\n\n return AssignAppLinkHelper.assignDetails({\n objectId: share.objectId.toString(),\n shareId: share.shareId,\n entityType,\n detailsTitle: getPhrase('shareOptions')\n });\n}\n\nexport function getDeleteShareAppLink(share: Share): Core.AppLink {\n if (!share) return;\n\n const entityType = getSharableEntityType(share);\n\n if (share.type === ShareType.Link) {\n return {\n application: AppChannels.SHARE,\n action: Actions.Share.DELETE_SHARE_LINK,\n args: [share.objectId],\n params: {\n entityType,\n previousAppLink: {\n application: AppChannels.MY_SHARES,\n action: Actions.MyShares.HOME\n } as Core.AppLink\n }\n };\n }\n\n if (share.type === ShareType.LegacyDirect) {\n return {\n application: AppChannels.SHARE,\n action: Actions.Share.DELETE_LEGACY_SHARE,\n args: [share.shareId],\n params: {\n previousAppLink: {\n application: AppChannels.MY_SHARES,\n action: Actions.MyShares.HOME\n } as Core.AppLink\n }\n };\n }\n\n if (share.type === ShareType.Classroom) {\n return {\n application: AppChannels.SHARE,\n action: Actions.Share.DELETE_ASSIGNMENT,\n args: [share.shareId],\n params: {\n previousAppLink: {\n application: AppChannels.CLASSROOMS,\n action: Actions.Classrooms.CLASSROOM_HOME,\n args: [ShareHelper.getClassroomIdFromShare(share)]\n } as Core.AppLink\n }\n };\n }\n\n if (share.type === ShareType.Open) {\n return {\n application: AppChannels.SHARE,\n action: Actions.Share.DELETE_OPEN_CLASSROOM,\n args: [share.shareId],\n params: {\n previousAppLink: {\n application: AppChannels.CLASSROOMS,\n action: Actions.Classrooms.OPEN_CLASSROOMS,\n args: [ShareHelper.getClassroomIdFromShare(share)]\n } as Core.AppLink\n }\n };\n }\n}\n\nexport function getInsightsReportAppLink(share: Share): Core.AppLink {\n if (!share) return;\n if (share.objectTypeId !== MasterType.Interactive) return;\n\n return {\n application: AppChannels.MY_SHARES,\n action: Actions.MyShares.INTERACTIVE_GENERATE_REPORT,\n args: [share.objectId]\n };\n}\n\nfunction getSharableEntityType(share: Share): SharableEntityType {\n if (share.objectTypeId === MasterType.Video)\n return 'video';\n\n if (share.objectTypeId === MasterType.Interactive)\n return 'interactive';\n \n if (share.objectTypeId === MasterType.Clip)\n return 'clip';\n\n if (share.objectTypeId === MasterType.Series)\n return 'series';\n\n if (share.objectTypeId === MasterType.Playlist)\n return 'playlist';\n}"],"names":["AnalyticsFilterHelper","getAudienceAppLinkParams","appLink","params","users","classrooms","classroomGroups","getParam","key","param","Array","isArray","audienceFilters","getDateRangeAppLinkParams","from","to","rangeName","dateRangeFilters","PlaylistHelper","isPlaylist","obj","typeId","isOwner","playlist","currentUser","_liteOwner","id","toString","getVideoCount","count","videos","clips","interactives","ShareType","ShareHelper","getFlattenedRecipients","shares","map","s","recipients","getFlattenedUniqueScopes","r","scopeId","filter","x","getClassroomIdFromShare","share","firstRecipient","recipientId","recipientTypeId","getClassroomForShare","classroomId","find","classroom","getRecipientsCount","type","length","hasShareExpired","expireDate","now","Date","calculateDaysToExpiry","remainingDays","getShareLocalExpiry","format","localDate","getPhrase","getShareObjectActions","options","sharedObject","isPlugin","breakpoints","isMobile","xs","sm","buttonProps","button","className","getActionsForPlugin","getMediaActions","getInsightsActions","hideShareOptionsActions","getShareOptionsActions","getDeleteActions","reduce","actions","getActionFn","getSharesParams","typeIdAppLinkParams","getTypeIdParams","audienceAppLinkParams","currentAppLink","application","action","sentSharesParams","recipientUserId","recipientGroupId","objectTypeId","undefined","canConsume","label","args","entityType","analyticsOptions","actionType","descriptor","workflowPhase","eventVersion","md","tooltip","svgName","group","audienceParams","hasInsights","INSIGHTS_WHITELIST","getObjectAppLink","object","name","getInsightsOverviewAppLink","includes","objectId","shareId","getInsightsHeatmapAppLink","getInsightsQuestionsAppLink","getInsightsStudentsAppLink","getShareOptionsAppLink","getSharableEntityType","detailsTitle","getDeleteShareAppLink","previousAppLink"],"sourceRoot":""}
@@ -1,2 +0,0 @@
1
- "use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[9042],{93479:(e,t,a)=>{a.d(t,{I:()=>s});var n=a(99940);function r(e,t,a){if(!t)return e;var n="".concat(e,":").concat(t.start,":").concat(t.end),r=Array.isArray(t.userId)?t.userId.sort().join(":"):t.userId,i=Array.isArray(t.groupId)?t.groupId.sort().join(":"):t.groupId,s=Array.isArray(t.customerId)?t.customerId.sort().join(":"):t.customerId;return r&&(n+=":".concat(r)),i&&(n+=":".concat(i)),s&&(n+=":".concat(s)),a&&(n+=":".concat(a)),n}function i(e,t){return{currentUserId:e.id,currentCustomerId:e.customerId,dateRange:t?{start:t.start,end:t.end}:void 0,userIds:null==t?void 0:t.userId,classroomsAndGroups:null==t?void 0:t.groupId}}var s={interactiveResultSet:function(e,t,a,s,o,c,l,u){return{url:o?"/api/domain/v3/analytics/interactives/".concat(e,"/metadata/").concat(t):"/api/domain/v2/analytics/interactives/".concat(e,"/metadata/").concat(t),key:r("interactive:result:set:".concat(e,":").concat(t),s),data:i(a,s),type:n.k.POST,normalize:!1,success:c,error:l,always:u}},mark:function(e,t,a,r,i,s,o){return{url:"/api/domain/v1/analytics/answers/".concat(a),key:"mark:answer:".concat(a,":").concat(r.resultId),type:n.k.PUT,data:r,normalize:!1,invalidationKeys:"interactive:result:set:".concat(e,":").concat(t),success:i,error:s,always:o}},pendingReviews:function(e){return{url:"/api/domain/v1/analytics/interactives/pending-reviews/summary",key:"interactives:pending:reviews",type:n.k.POST,data:e}},interactiveResultsReport:function(e){return{url:"/api/domain/v3/analytics/interactives/report",key:"interactive:results:report",data:e,type:n.k.POST,normalize:!1}}}},2510:(e,t,a)=>{var n;a.d(t,{y:()=>n}),function(e){e.Link="Link",e.Classroom="Classroom",e.Open="Open",e.Live="Live",e.LegacyDirect="LegacyDirect"}(n||(n={}))},21789:(e,t,a)=>{a.d(t,{x:()=>s});var n=a(75896),r=a(110),i=a(4594),s={getFlattenedRecipients:function(e){return n.m.flatten(e.map(function(e){var t;return null!==(t=e.recipients)&&void 0!==t?t:[]}))},getFlattenedUniqueScopes:function(e){var t=s.getFlattenedRecipients(e);return n.m.uniq(t.map(function(e){var t;return null===(t=e.scopeId)||void 0===t?void 0:t.toString()})).filter(function(e){return!!e})},getClassroomIdFromShare:function(e){var t,a=null===(t=e.recipients)||void 0===t?void 0:t[0];if(a)return a.scopeId?a.scopeId.toString():a.recipientId&&a.recipientTypeId===i.E.Classroom?a.recipientId.toString():void 0},getClassroomForShare:function(e,t){var a=s.getClassroomIdFromShare(e);if(a)return t.find(function(e){return e.id.toString()===a.toString()})},getRecipientsCount:function(e,t){var a,n,r,i;return t?null!==(i=null===(r=e.recipients)||void 0===r?void 0:r.filter(function(e){return e.recipientTypeId===t}).length)&&void 0!==i?i:0:null!==(n=null===(a=e.recipients)||void 0===a?void 0:a.length)&&void 0!==n?n:0},hasShareExpired:function(e){if(e.expireDate){var t=new Date,a=new Date(e.expireDate);if(r.O.isAfter(t,a))return!0}return!1},calculateDaysToExpiry:function(e){if(e.expireDate){var t=r.O.diffBetween(new Date(e.expireDate),new Date,"day")||1;return 0===t?1:t}},getShareLocalExpiry:function(e,t){if(!e.expireDate)return null;var a=r.O.convertUTCToLocal(e.expireDate);return r.O.format(a,t)}}},49863:(e,t,a)=>{a.d(t,{m9:()=>S,Ad:()=>E,Kh:()=>I});var n=a(32735),r=a(23481),i=a(75896),s=a(97408),o=a(18995),c=a(12528),l=a(83914),u=a(36532),d=a(4594),m=a(36511),p=a(35223),v=a(64818);const f={avatarContainer:"ByxQa",sm:"EgJ0v",sharedAvatar:"cW0NT"};var y=r.T.encloseNamespace("reportsShare.sharedToAvatarList");function h(e){var t=i.m.countBy(e,"typeId"),a=t[d.E.User],n=t[d.E.Classroom],r=t[d.E.ClassroomGroup];return a&&n&&r?y("classroomsGroupsAndUsers",{userCount:a,classroomCount:n,groupCount:r}):a&&n?y("classroomsAndUsers",{userCount:a,classroomCount:n}):a&&r?y("groupsAndUsers",{userCount:a,groupCount:r}):n&&r?y("classroomsAndGroups",{classroomCount:n,groupCount:r}):a?y("users",{userCount:a}):n?y("classrooms",{classroomCount:n}):r?y("groups",{groupCount:r}):void 0}function g(e){var t,a,r,i,o,y=(null===(t=e.item)||void 0===t?void 0:t.typeId)===d.E.User&&e.item,h=(null===(a=e.item)||void 0===a?void 0:a.typeId)===d.E.Classroom&&e.item,g=(null===(r=e.item)||void 0===r?void 0:r.typeId)===d.E.ClassroomGroup&&e.item,S="d-flex justify-content-center align-items-center text-white rounded-circle h-100 w-100";return n.createElement(n.Fragment,null,!!y&&n.createElement(u.u,{title:"".concat(y.name," ").concat(y.surname),spanHack:!0,spanHackClassName:"h-100 w-100"},n.createElement(s.q,{imageUrl:null===(i=y.avatar)||void 0===i?void 0:i.url,imageCdnUrl:e.imageCdnUrl,initials:v.l.getInitials(y.name,y.surname),extraClasses:f.sharedAvatar})),!!h&&n.createElement(u.u,{title:h.name,spanHack:!0,spanHackClassName:"h-100 w-100"},n.createElement("div",{className:S},n.createElement(c.f,{svgName:p.vn.Classrooms,svgSize:l.S.Large,variant:"teal"}))),!!g&&n.createElement(u.u,{title:g.name,spanHack:!0,spanHackClassName:"h-100 w-100"},n.createElement("div",{className:S},n.createElement(c.f,{svgName:p.vn.Group,variant:(0,m.I)(null===(o=g.metadata)||void 0===o?void 0:o.colour)}))))}function S(e){return n.createElement("div",{className:"".concat(f.avatarContainer," ").concat("sm"===e.avatarSize?f.sm:"")},n.createElement(u.u,{title:y("anonymous"),spanHack:!0,spanHackClassName:"bg-light text-dark d-flex justify-content-center align-items-center rounded-circle h-100 w-100"},n.createElement(l.x,{svgName:p.vn.Anonymous,size:"sm"===e.avatarSize?l.S.Small:null})))}function E(e){return n.createElement("div",{className:"".concat(f.avatarContainer," ").concat("sm"===e.avatarSize?f.sm:"")},n.createElement(u.u,{title:e.text||y("sharedLink"),spanHack:!0,spanHackClassName:"bg-light text-dark d-flex justify-content-center align-items-center rounded-circle h-100 w-100 ".concat(e.className||"")},n.createElement(l.x,{svgName:p.vn.Link,size:"sm"===e.avatarSize?l.S.Small:null})))}function I(e){return n.createElement(o.e,Object.assign({},e,{items:e.recipients,avatarItem:g,avatarContainerClassname:"".concat(f.avatarContainer," ").concat("sm"===e.avatarSize?f.sm:""),getHiddenTooltip:h,hasShareLink:e.hasShareLink,shareLinkText:e.shareLinkText}))}I.defaultProps={maxAvatars:5}},65853:(e,t,a)=>{a.d(t,{R:()=>m});var n=a(23481),r=a(110),i=a(4594),s=a(49080),o=a(26361),c=a(35223),l=a(31908);function u(e,t){(null==t||t>e.length)&&(t=e.length);for(var a=0,n=Array(t);a<t;a++)n[a]=e[a];return n}var d=n.T.encloseNamespace("share.shareLinkInfo"),m={getPrivateIconAndText:function(e){var t=e.entityTypeId,a=e.privacy,n=e.hasStudentExp,r=e.entity,s=e.yearGroups;if(t===i.E.Topic||t===i.E.Series)return{icon:c.vn.VisibleOn,text:d(n?"justMySchoolTeachers":"justMySchoolDescription")};if(!Array.isArray(a))switch(a.privacy){case"public":return{icon:c.vn.VisibleOn,text:d("publicDescription")};case"protected":return a.overrideRestrictions?{icon:c.vn.VisibleOn,text:d("clickViewOnly")}:{icon:c.vn.Lock,text:m.getRespectRatingText(r,s,n)};case"just_my_customer":return a.overrideRestrictions?{icon:c.vn.Lock,text:d(n?"justMySchoolTeachers":"justMySchoolDescription")}:{icon:c.vn.Lock,text:m.getRespectRatingText(r,s,n)};case"restricted":case"private":return{icon:c.vn.Lock,text:d("privateDescription")};default:return{}}},getIconAndText:function(e){var t=e.linkExpireDate,a=e.isPasswordProtected,n=e.status;if(!t&&!a)return m.getPrivateIconAndText(e);if(!t)return{icon:c.vn.Lock,text:d("password")};var i=r.O.isToday(t),o=r.O.diffBetween(t,new Date,"day");if(!a){var l=i?d("expiryToday"):d("expiry",{days:o});return n===s.F.Expired&&(l=d("expired")),{icon:c.vn.Timer,text:l}}var u=i?d("passwordExpiryToday"):d("passwordExpiry",{days:o});return n===s.F.Expired&&(u=d("passwordExpired")),{icon:c.vn.Lock,text:u}},getRespectRatingText:function(e,t,a){var n;if(!e||!t)return null;if(a)return d("justMySchoolTeachers");if(!l.M.isVideoType(e))return d("collectionRating");var r=o.l.getWeightedRestriction(null===(n=e._restrictions)||void 0===n?void 0:n.value);if(r&&!r.yearGroup)return d("onlyAdmins");var i,s,c,m=l.M.getRating(e),p=function(e,t){var a="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!a){if(Array.isArray(e)||(a=function(e,t){if(e){if("string"==typeof e)return u(e,t);var a={}.toString.call(e).slice(8,-1);return"Object"===a&&e.constructor&&(a=e.constructor.name),"Map"===a||"Set"===a?Array.from(e):"Arguments"===a||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(a)?u(e,t):void 0}}(e))||t&&e&&"number"==typeof e.length){a&&(e=a);var n=0,r=function(){};return{s:r,n:function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:r}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,s=!0,o=!1;return{s:function(){a=a.call(e)},n:function(){var e=a.next();return s=e.done,e},e:function(e){o=!0,i=e},f:function(){try{s||null==a.return||a.return()}finally{if(o)throw i}}}}(t);try{for(p.s();!(c=p.n()).done;){var v=c.value;(!i||v.value>i.value)&&(i=v),r&&v.value<=r.yearGroup||m&&v.rating.value<m.value||(!s||v.value<s.value)&&(s=v)}}catch(e){p.e(e)}finally{p.f()}return s?1===t.length?d("clickViewOnly"):s.value===i.value?d("maxYearGroup",{yearGroup:i.name}):d("yearGroupRange",{yearGroup:s.name}):d("onlyStaff")}}},18995:(e,t,a)=>{a.d(t,{e:()=>c});var n=a(32735),r=a(23481),i=a(49863),s=a(36532),o=r.T.encloseNamespace("shared.avatarList");function c(e){var t=e.items.length>e.maxAvatars?e.items.slice(0,e.maxAvatars-1):e.items,a=e.items.length>t.length?e.items.slice(e.maxAvatars-1):[],r=e.avatarItem,c=a.length,l="sm"===e.avatarSize?4:8;function u(t){return{transform:"translateX(".concat((e.hasShareLink?t+1:t)*-l,"px)"),zIndex:e.maxAvatars-t}}return 0===t.length&&0===a.length?n.createElement(n.Fragment,null):n.createElement("div",{className:"d-flex",style:{marginRight:"-".concat((t.length-1+(a.length?1:0)+(e.hasShareLink?1:0))*l,"px")}},e.hasShareLink&&n.createElement("div",{style:{zIndex:e.maxAvatars+1}},n.createElement(i.Ad,{text:e.shareLinkText,avatarSize:e.avatarSize,className:"bg-dark text-white"})),t.map(function(t,a){return n.createElement("div",{className:"".concat(e.avatarContainerClassname||""),key:t.id,style:u(a)},n.createElement(r,{item:t,imageCdnUrl:e.imageCdnUrl,index:a,maxAvatars:e.maxAvatars}))}),!!a.length&&n.createElement("div",{className:"".concat(e.avatarContainerClassname||""," bg-white rounded-circle"),style:{transform:"translateX(".concat(t.length*-l,"px)"),zIndex:e.maxAvatars-t.length}},n.createElement(s.u,{title:e.getHiddenTooltip?e.getHiddenTooltip(a):e.roleToDisplay?o("staff"===e.roleToDisplay?"staff":"student",{count:c,smartCount:c}):o("users",{count:c,smartCount:c}),spanHack:!0,spanHackClassName:"h-100 w-100"},n.createElement("div",{className:"d-flex justify-content-center align-items-center border border-dark rounded-circle h-100 w-100 ".concat(e.numberClassname||"")},"+".concat(a.length)))))}c.defaultProps={maxAvatars:5}},39902:(e,t,a)=>{a.d(t,{FN:()=>v,SW:()=>f,fh:()=>p});var n=a(32735),r=a(20354),i=a(75896);function s(e){return function(e){if(Array.isArray(e))return c(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||o(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function o(e,t){if(e){if("string"==typeof e)return c(e,t);var a={}.toString.call(e).slice(8,-1);return"Object"===a&&e.constructor&&(a=e.constructor.name),"Map"===a||"Set"===a?Array.from(e):"Arguments"===a||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(a)?c(e,t):void 0}}function c(e,t){(null==t||t>e.length)&&(t=e.length);for(var a=0,n=Array(t);a<t;a++)n[a]=e[a];return n}function l(e){return l="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},l(e)}function u(e,t,a){return(t=function(e){var t=function(e){if("object"!=l(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var a=t.call(e,"string");if("object"!=l(a))return a;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==l(t)?t:t+""}(t))in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}var d=function(e,t){var a={};for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&t.indexOf(n)<0&&(a[n]=e[n]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var r=0;for(n=Object.getOwnPropertySymbols(e);r<n.length;r++)t.indexOf(n[r])<0&&Object.prototype.propertyIsEnumerable.call(e,n[r])&&(a[n[r]]=e[n[r]])}return a},m=50;function p(e,t){var a=i.m.chunk(e,m).map(function(e){return t(i.m.uniq(e))}),n=r.a.useBasicFetchAll(a),s=i.m.flatten(n.data),o=n.data.length?s.reduce(function(e,t){return Object.assign(Object.assign({},e),u({},t.id,t))},{}):null;return{itemsArr:s,items:o,isFetching:n.isFetching,hasCompleted:n.hasCompleted}}function v(e,t,a){var r=null!=a?a:function(e){return"object"===l(e)?e.id:e},i=f({getRequest:t,_getKey:a}),s=i.fetchItems,o=d(i,["fetchItems"]);return n.useEffect(function(){(null==e?void 0:e.length)&&s(e)},[null==e?void 0:e.map(r).join(",")]),o}function f(e){var t,a,c,d,p,v=null!==(t=e._getKey)&&void 0!==t?t:function(e){return"object"===l(e)?e.id:e},f=n.useRef(new Set),y=(d=n.useState([]),p=2,function(e){if(Array.isArray(e))return e}(d)||function(e,t){var a=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=a){var n,r,i,s,o=[],c=!0,l=!1;try{if(i=(a=a.call(e)).next,0===t){if(Object(a)!==a)return;c=!1}else for(;!(c=(n=i.call(a)).done)&&(o.push(n.value),o.length!==t);c=!0);}catch(e){l=!0,r=e}finally{try{if(!c&&null!=a.return&&(s=a.return(),Object(s)!==s))return}finally{if(l)throw r}}return o}}(d,p)||o(d,p)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),h=y[0],g=y[1],S=r.a.useBasicFetchAll(h),E=i.m.flatten(S.data),I=S.data.length?E.reduce(function(e,t){return Object.assign(Object.assign({},e),u({},v(t),t))},{}):null;return{hasFirstRequestCompleted:!!(null===(c=null===(a=S.responses)||void 0===a?void 0:a[0])||void 0===c?void 0:c.hasCompleted),itemsArr:E,items:I,isFetching:S.isFetching,fetchItems:function(t){if(null==t?void 0:t.length){var a=[];t.forEach(function(e){var t=v(e);f.current.has(t)||(a.push(e),f.current.add(t))}),a.length&&g(function(t){return[].concat(s(t),s(i.m.chunk(a,m).map(e.getRequest)))})}}}}},36511:(e,t,a)=>{a.d(t,{I:()=>r});var n=a(38129);function r(e){switch(e){case n.R.Pink:return"pink";case n.R.Orange:return"orange";case n.R.Green:return"green";case n.R.Blue:return"blue";case n.R.Purple:return"purple";case n.R.Indigo:return"indigo";default:return"pink"}}},58647:(e,t,a)=>{a.r(t),a.d(t,{SharedByMeView:()=>Se});var n=a(32735),r=a(81886),i=a(23481),s=a(97958),o=i.T.encloseNamespace("share.sharedByMeEmptyState");function c(e){return n.createElement(s.u,null,n.createElement(s.u.Image,{src:e.imageUrl,size:"small"}),n.createElement(s.u.Heading,null,o(e.useInteractiveCopy?"interactivesHeading":"genericHeading")),n.createElement(s.u.Info,null,o(e.useInteractiveCopy?"interactivesInfo":"genericInfo")),!!e.appLink&&n.createElement(s.u.Cta,{appLink:e.appLink,text:o("cta")}))}var l=a(95834),u=a(6748),d=a(82602),m=a(75896),p=a(110),v=a(65858),f=a(83914),y=a(36532),h=a(49080),g=a(85063),S=a(35223);const E={indicatorContainer:"T6YAv",indicator:"_MRHG"};var I=i.T.encloseNamespace("share.shareStatusIndicator");function b(e){if(e.type===g.y.DirectShare)return I("active");switch(e.status){case h.F.Active:return I("active");case h.F.Expired:return I("expired")}}function C(e){if(e.type===g.y.DirectShare)return"bg-success";switch(e.status){case h.F.Active:return"bg-success";case h.F.Expired:return"bg-gray-500"}}function O(e){var t;return e.share.type!==g.y.DirectShare||(null===(t=e.share.recipients)||void 0===t?void 0:t.length)?e.share.type===g.y.ShareLink&&e.share.isPasswordProtected?n.createElement(y.u,{title:I("passwordProtected"),spanHack:!0},n.createElement(f.x,{svgName:S.vn.Lock,size:f.S.Small})):n.createElement(y.u,{title:b(e.share),spanHack:!0,spanHackClassName:E.indicatorContainer},n.createElement("div",{className:"".concat(E.indicator," ").concat(C(e.share))})):n.createElement(n.Fragment,null)}var A=a(9806),x=a(49863),T=a(31754),k=a(65853),N=a(64249),w=a(83657),R=a(15611),j=a(83345),L=a(62335),M=a(26339),H=a(4594),_=a(31908);function F(e){return F="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},F(e)}var P="share.sharedByMeTable",D=i.T.encloseNamespace(P);function U(e){var t;if(e.type===g.y.ShareLink||!(null===(t=null==e?void 0:e.recipients)||void 0===t?void 0:t.length))return e.dateCreated;var a=e.recipients.map(function(e){return e.dateShared});return a.sort(function(e,t){return p.O.isSame(e,t)?0:p.O.isAfter(e,t)?1:-2}),a.length?m.m.last(a):""}function G(e){var t=e.index,a=e.dateHeading,r=e.getObjectAppLink,i=e.getObjectActions,s=e.imageCdnUrl,o=e.showStatus,c=e.showViewCount,l=e.breakpoints,u=e.yearGroups,m=l&&(l.xs||l.sm),p=[{Header:o?"":a,accessor:"sharedObject",id:"image",Cell:function(e){var t=e.value;return n.createElement("div",{className:"w-100"},n.createElement(A.k,{object:t,appLink:r(t),showVideoMetadata:!0,locationContext:v.LZ.SharedByMe}))},minWidth:140,maxWidth:30},{accessor:"sharedObject",id:"name",Cell:function(e){var t,a=e.value;if(a.name){if(_.M.isVideoType(a)&&!(null===(t=_.M.getCanBeConsumed(a))||void 0===t?void 0:t.canNavigate))return n.createElement("span",{className:"clamp-2"},a.name);var i=function(){switch(a.typeId){case H.E.Series:return"series";case H.E.Playlist:return"playlist"}}();return n.createElement("div",{className:"clamp-2"},i&&n.createElement(L.m,null,n.createElement(j.x,{namespace:P,phrase:i})),_.M.isVideoType(a)&&n.createElement(M.$,{type:"series",video:a,appLink:"series"in a&&a.series?r(a.series):null,analyticsOptions:{location:v.LZ.Insights}}),n.createElement(R.F,{appLink:r(a),analyticsData:{id:a.id,name:a.name},analyticsOptions:{entity:N.I.getAnalyticsEntity(a.type),actionType:v.Vw.Click,location:v.LZ.SharedByMe}},a.name))}return n.createElement("span",null,n.createElement(j.x,{namespace:P,phrase:"videoUnavailable"}))},width:60},{Header:0===t?D("sharedTo"):"",accessor:"sharedToData",Cell:function(e){var t=e.value,a=t.share,r=t.sharedObject,i=t.recipients;if(!i){var o=a.type===g.y.ShareLink&&k.R.getIconAndText({entity:r,entityTypeId:r.typeId,hasStudentExp:!1,isPasswordProtected:a.isPasswordProtected,linkExpireDate:a.linkExpireDate,privacy:{privacy:a.privacy,overrideRestrictions:a.overrideRestrictions},status:a.status,yearGroups:null!=u?u:[]});return n.createElement(x.Ad,{text:null==o?void 0:o.text})}return(null==i?void 0:i.length)?n.createElement(x.Kh,{recipients:i,imageCdnUrl:s,maxAvatars:m?1:2}):n.createElement(x.m9,null)},width:40},!m&&{Header:0===t?D("shared"):"",id:"dateShared",accessor:function(e){return(0,d.WU)(e.dateShared)},width:40},{accessor:"sharedObject",id:"actions",Cell:function(e){var t=e.value;return n.createElement(w.e,{actions:i(t),className:"w-100 justify-content-end pe-2"})},width:20}],f={Header:a,accessor:"share",id:"status",Cell:function(e){var t=e.value;return n.createElement(O,{share:t})},width:5},y={Header:D("views"),accessor:"viewCount",width:30};return o&&p.splice(0,0,f),c&&p.splice(p.length-1,0,y),p.filter(Boolean)}function V(e){var t,a,r,i,s,o,c,d,m=(t=e.sentShares,a=e.sharedObjects,r=e.shareRecipients,i=!!e.groupByDateShared,s=[],t.forEach(function(e){var t,n,i=null==a?void 0:a[e.objectId],o=null;e.type===g.y.DirectShare&&(o=[],null===(t=e.recipients)||void 0===t||t.forEach(function(e){var t=null==r?void 0:r[e.id];t&&o.push(t)})),i&&s.push({share:e,sharedObject:i,sharedToData:{share:e,sharedObject:i,recipients:o},dateShared:U(e),viewCount:null!==(n=e.viewCount)&&void 0!==n?n:0})}),i?T.x.groupByDateShared(s):(o={},c=D("title"),d=s,(c=function(e){var t=function(e){if("object"!=F(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var a=t.call(e,"string");if("object"!=F(a))return a;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==F(t)?t:t+""}(c))in o?Object.defineProperty(o,c,{value:d,enumerable:!0,configurable:!0,writable:!0}):o[c]=d,o));return n.createElement(n.Fragment,null,Object.keys(m).map(function(t,a){return n.createElement(u.i,{key:a,columns:G({index:a,dateHeading:t,getObjectAppLink:e.getObjectAppLink,getObjectActions:e.getObjectActions,imageCdnUrl:e.imageCdnUrl,showStatus:e.showStatus,showViewCount:e.showViewCount,breakpoints:e.breakpoints,yearGroups:e.yearGroups}),data:m[t],theme:l.J})}))}var B=a(87801),z=a(16714),Y=a(79967),W=a(22902),q=a(79612),K=a(37802),Q=a(99742),X=a(14070),Z=a(97291),$=a(20354),J=a(1048),ee=a(93479),te=a(30439),ae=a(39151),ne=a(1666),re=a(31949),ie=a(39902),se=a(60115),oe={getDirectShares:function(e){var t;return null!==(t=null==e?void 0:e.filter(function(e){return e.type===g.y.DirectShare}))&&void 0!==t?t:[]},getRecipients:function(e){return m.m.flatten(oe.getDirectShares(e).map(function(e){var t;return null!==(t=e.recipients)&&void 0!==t?t:[]}))}},ce=a(86099),le=a(2523);const ue={imageColumn:"uIOaA",nameColumn:"Nta2B",sharedToColumn:"XTJBC",dateSharedColumn:"HdARK",actionsColumn:"DXyZw",heading:"XZ6o7",image:"MolfU",name:"MM43m",avatar:"EboYM",date:"by_XM",actions:"_S2M_"};function de(){return n.createElement("div",{className:"d-flex striped-row rounded"},n.createElement("div",{className:"d-flex align-items-center justify-content-center p-2 ".concat(ue.imageColumn)},n.createElement("div",{className:"partial-loading-background rounded w-100 ".concat(ue.image)})),n.createElement("div",{className:"d-flex align-items-center p-2 ".concat(ue.nameColumn)},n.createElement("div",{className:"partial-loading-background w-75 ".concat(ue.name)})),n.createElement("div",{className:"d-flex align-items-center p-2 ".concat(ue.sharedToColumn)},n.createElement("div",{className:"partial-loading-background ".concat(ue.avatar)})),n.createElement("div",{className:"d-none d-md-flex align-items-center p-2 ".concat(ue.dateSharedColumn)},n.createElement("div",{className:"partial-loading-background ".concat(ue.date)})),n.createElement("div",{className:"d-flex align-items-center justify-content-end p-2 ".concat(ue.actionsColumn)},n.createElement("div",{className:"partial-loading-background rounded me-2 ".concat(ue.actions)})))}function me(e){return n.createElement("div",{className:"d-flex mb-1"},n.createElement("div",{className:"".concat(ue.imageColumn," p-2")},n.createElement("div",{className:"partial-loading-background ".concat(ue.heading)})),n.createElement("div",{className:"".concat(ue.nameColumn," p-2")}," "),n.createElement("div",{className:"".concat(ue.sharedToColumn," p-2")},e.fullHeader?n.createElement("div",{className:"partial-loading-background ".concat(ue.heading)}):n.createElement(n.Fragment,null," ")),n.createElement("div",{className:"".concat(ue.dateSharedColumn," p-2 d-none d-md-flex")},e.fullHeader?n.createElement("div",{className:"partial-loading-background ".concat(ue.heading)}):n.createElement(n.Fragment,null," ")),n.createElement("div",{className:"".concat(ue.actionsColumn," p-2")}," "))}function pe(){return n.createElement(n.Fragment,null,n.createElement("div",{className:"mb-3"},n.createElement(me,{fullHeader:!0}),n.createElement("div",{className:"striped-list no-full-width"},n.createElement(de,null),n.createElement(de,null),n.createElement(de,null))),n.createElement("div",{className:"mb-3"},n.createElement(me,null),n.createElement("div",{className:"striped-list no-full-width"},n.createElement(de,null),n.createElement(de,null),n.createElement(de,null),n.createElement(de,null))),n.createElement("div",{className:"mb-3"},n.createElement(me,null),n.createElement("div",{className:"striped-list no-full-width"},n.createElement(de,null),n.createElement(de,null),n.createElement(de,null),n.createElement(de,null),n.createElement(de,null),n.createElement(de,null),n.createElement(de,null),n.createElement(de,null),n.createElement(de,null),n.createElement(de,null))))}var ve=a(70227),fe=i.T.encloseNamespace("liteShare.sharedByMe");function ye(e,t){return{label:fe("editShareSettings"),appLink:{application:Z.O.SHARE,action:X.e.Share.SHARE,args:[e.id],params:{entityType:t}}}}function he(e){return n.createElement(y.u,{title:e.label,spanHack:!0},n.createElement("a",{href:e.url,target:"_blank"},n.createElement(f.x,{svgName:S.vn.Analytics})))}var ge=i.T.encloseNamespace("liteShare.sharedByMe");function Se(){var e=(0,W.T)().hasPermissions,t=(0,K.r)(null).hasShareFlowV2,a=(0,Y.k)(),i=function(e,t){var a,n,r=!(arguments.length>2&&void 0!==arguments[2])||arguments[2],i=$.a.useGetFetch(),s=$.a.useBasicFetch(re.N.currentUser()),o=$.a.useBasicFetch(ae.L.config()),c=$.a.useBasicFetch((null===(a=s.data)||void 0===a?void 0:a.isAuthenticated)&&ne.h.yearGroups(s.data.customerId)),l=function(t){return r&&te.o.sentShare(Object.assign({cursor:t},e))},u=function(e){return i(l(e))},d=(0,se.K)(l,u),m=d.items,p=d.hasMore,v=d.isFetching,f=d.nextCursor,y=d.hasFirstPageCompleted,h=(0,ie.FN)(null==m?void 0:m.map(function(e){return e.objectId}),te.o.sharedObjectsById),g=(0,ie.FN)(oe.getRecipients(m).map(function(e){return e.id}),function(e){return te.o.getRecipientsById(e,s.data.customerId)}),S=(0,ie.FN)(t?J.t.values(h.items||[]):[],function(e){return ee.I.pendingReviews({interactives:e.filter(_.M.isInteractive).map(function(e){return{interactiveId:e.interactiveId,metadataId:e.id}}),filters:{currentCustomerId:s.data.customerId,currentUserId:s.data.id}})},function(e){return"".concat(e.id,":").concat(e.interactiveId)}),E=v||h.isFetching||g.isFetching||S.isFetching||c.isFetching,I=!y||(null==m?void 0:m.length)&&!h.hasFirstRequestCompleted;return{sentShares:m,sharedObjects:h,shareRecipients:g,yearGroups:c.data,interactivesPendingReview:S,isFetching:E,showPartialLoading:I,nextCursor:f,hasMore:p,fetchNext:u,imageCdnUrl:null===(n=o.data)||void 0===n?void 0:n.imageCdnUrl}}(),s=i.sentShares,o=i.sharedObjects,l=i.shareRecipients,u=i.isFetching,d=i.showPartialLoading,m=i.nextCursor,p=i.hasMore,v=i.fetchNext,f=i.imageCdnUrl,y=i.yearGroups,h=e(z.C.ViewMyShares)&&t;n.useEffect(function(){h&&r.Q.C$.trigger({application:Z.O.MY_SHARES,action:X.e.MyShares.HOME},{replace:!0})},[h]),(0,q.M)({title:ge("sharedByMe")});var g=function(e){var t=$.a.useBasicFetch(ae.L.config()),a=e.xs||e.sm;return n.useCallback(function(e){return function(e,t,a){var r,i="viewUsage";if(_.M.isVideo(e)&&(r="video"),_.M.isInteractive(e)&&(r="interactive",i="viewResults"),_.M.isClip(e)&&(r="clip"),e.typeId===H.E.Series&&(r="series"),e.typeId===H.E.Playlist&&(r="playlist"),_.M.isVideoType(e)&&!_.M.getCanBeConsumed(e).canConsume)return[];var s=[ye(e,r)],o=ve.c.getObjectUrl(null==a?void 0:a.analyticsWebUrl,e);return o&&s.push({label:t?fe(i):function(){return n.createElement(he,{label:fe(i),url:o})},className:"btn btn-link",button:!t,href:ve.c.getObjectUrl(null==a?void 0:a.analyticsWebUrl,e),openInNewTab:!0}),s}(e,a,t.data)},[a])}(a);return n.createElement("div",{className:"px-3"},!h&&n.createElement(le.w,null),d?n.createElement(pe,null):s.length?n.createElement(n.Fragment,null,n.createElement(V,{sentShares:s,sharedObjects:o.items,shareRecipients:l.items,getObjectAppLink:ce.Qh,getObjectActions:g,groupByDateShared:!0,breakpoints:a,yearGroups:y,imageCdnUrl:f}),(p||u)&&n.createElement(B._,{isFetching:u,fetchNext:v,nextCursor:m})):n.createElement(c,{appLink:{application:Z.O.DASHBOARD,action:X.e.Dashboard.HOME},imageUrl:Q.W.EmptyStates.Share.SHARED_WITH_ME}))}},86099:(e,t,a)=>{a.d(t,{BR:()=>I,Qh:()=>f,Rv:()=>h,Sj:()=>g,Zm:()=>E,pY:()=>y,rq:()=>S});var n=a(23481),r=a(28400),i=a(2510),s=a(21789),o=a(4594),c=a(31908),l=a(14070),u=a(97291),d=a(40254),m=a(82431),p=n.T.encloseNamespace("shared.utils"),v=[o.E.Video,o.E.Clip,o.E.Interactive];function f(e){return c.M.isInteractive(e)?{application:u.O.INTERACTIVES,action:l.e.Interactives.VIEW_INTERACTIVE,args:[e.id,r.m.slugify(e.name)]}:c.M.isClip(e)?{application:u.O.CLIPS,action:l.e.Clips.PLAY_CLIP,args:[e.id,r.m.slugify(e.name)]}:c.M.isVideo(e)?{application:u.O.VIDEOS,action:l.e.Videos.PLAY_VIDEO,args:[e.id,r.m.slugify(e.name)]}:e.typeId===o.E.Playlist?{application:u.O.PLAYLISTS,action:l.e.Playlists.PLAYLIST,args:[e.id,r.m.slugify(e.name)]}:e.typeId===o.E.Series?m.j.getSeriesAppLink(e):void 0}function y(e,t){if(!e)return null;if(!v.includes(e.objectTypeId))return f({id:e.objectId.toString(),typeId:e.objectTypeId});if(e.type===i.y.Classroom){var a=s.x.getClassroomIdFromShare(e);return{application:u.O.CLASSROOMS,action:l.e.Classrooms.INSIGHTS_OVERVIEW,args:[a,e.shareId],params:t}}return e.type===i.y.Open?{application:u.O.CLASSROOMS,action:l.e.Classrooms.OPEN_CLASSROOM_INSIGHTS_OVERVIEW,args:[e.shareId],params:t}:{application:u.O.MY_SHARES,action:l.e.MyShares.INSIGHTS_OVERVIEW,args:[e.shareId],params:t}}function h(e,t){if(!e)return null;if(!v.includes(e.objectTypeId))return f({id:e.objectId.toString(),typeId:e.objectTypeId});if(e.type===i.y.Classroom){var a=s.x.getClassroomIdFromShare(e);return{application:u.O.CLASSROOMS,action:l.e.Classrooms.INSIGHTS_HEATMAP,args:[a,e.shareId],params:t}}return e.type===i.y.Open?{application:u.O.CLASSROOMS,action:l.e.Classrooms.OPEN_CLASSROOM_INSIGHTS_HEATMAP,args:[e.shareId],params:t}:{application:u.O.MY_SHARES,action:l.e.MyShares.INSIGHTS_HEATMAP,args:[e.shareId],params:t}}function g(e,t){if(!e)return null;if(!v.includes(e.objectTypeId))return f({id:e.objectId.toString(),typeId:e.objectTypeId});if(e.type===i.y.Classroom){var a=s.x.getClassroomIdFromShare(e);return{application:u.O.CLASSROOMS,action:l.e.Classrooms.INSIGHTS_QUESTIONS,args:[a,e.shareId],params:t}}return e.type===i.y.Open?{application:u.O.CLASSROOMS,action:l.e.Classrooms.OPEN_CLASSROOM_INSIGHTS_QUESTIONS,args:[e.shareId],params:t}:{application:u.O.MY_SHARES,action:l.e.MyShares.INSIGHTS_QUESTIONS,args:[e.shareId],params:t}}function S(e,t){if(!e)return null;if(!v.includes(e.objectTypeId))return f({id:e.objectId.toString(),typeId:e.objectTypeId});if(e.type===i.y.Classroom){var a=s.x.getClassroomIdFromShare(e);return{application:u.O.CLASSROOMS,action:l.e.Classrooms.INSIGHTS_STUDENTS,args:[a,e.shareId],params:t}}return e.type===i.y.Open?{application:u.O.CLASSROOMS,action:l.e.Classrooms.OPEN_CLASSROOM_INSIGHTS_STUDENTS,args:[e.shareId],params:t}:{application:u.O.MY_SHARES,action:l.e.MyShares.INSIGHTS_STUDENTS,args:[e.shareId],params:t}}function E(e){if(e){var t=b(e);return e.type===i.y.Link?{application:u.O.SHARE,action:l.e.Share.SHARE,args:[e.objectId],params:{entityType:t}}:d.W.assignDetails({objectId:e.objectId.toString(),shareId:e.shareId,entityType:t,detailsTitle:p("shareOptions")})}}function I(e){if(e){var t=b(e);return e.type===i.y.Link?{application:u.O.SHARE,action:l.e.Share.DELETE_SHARE_LINK,args:[e.objectId],params:{entityType:t,previousAppLink:{application:u.O.MY_SHARES,action:l.e.MyShares.HOME}}}:e.type===i.y.LegacyDirect?{application:u.O.SHARE,action:l.e.Share.DELETE_LEGACY_SHARE,args:[e.shareId],params:{previousAppLink:{application:u.O.MY_SHARES,action:l.e.MyShares.HOME}}}:e.type===i.y.Classroom?{application:u.O.SHARE,action:l.e.Share.DELETE_ASSIGNMENT,args:[e.shareId],params:{previousAppLink:{application:u.O.CLASSROOMS,action:l.e.Classrooms.CLASSROOM_HOME,args:[s.x.getClassroomIdFromShare(e)]}}}:e.type===i.y.Open?{application:u.O.SHARE,action:l.e.Share.DELETE_OPEN_CLASSROOM,args:[e.shareId],params:{previousAppLink:{application:u.O.CLASSROOMS,action:l.e.Classrooms.OPEN_CLASSROOMS,args:[s.x.getClassroomIdFromShare(e)]}}}:void 0}}function b(e){return e.objectTypeId===o.E.Video?"video":e.objectTypeId===o.E.Interactive?"interactive":e.objectTypeId===o.E.Clip?"clip":e.objectTypeId===o.E.Series?"series":e.objectTypeId===o.E.Playlist?"playlist":void 0}}}]);
2
- //# sourceMappingURL=9042-3092af11d5-lite.chunk.js.map