@clickview/lite 0.75.0-rc.2 → 0.75.0-rc.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/bundles.json +1 -1
- package/dist/css/{119-lite-a1f592f602.chunk.css → 1243-lite-13eda8f6a0.chunk.css} +2 -4
- package/dist/css/{7230-lite-36ff6e6d53.chunk.css → 1867-lite-8baa8af02b.chunk.css} +3 -5
- package/dist/css/{5241-lite-baab687563.chunk.css → 4203-lite-9ffab89741.chunk.css} +3 -5
- package/dist/css/{8364-lite-99938dea56.chunk.css → 5193-lite-d434056013.chunk.css} +1 -0
- package/dist/css/{7339-lite-05c396fed3.chunk.css → 6756-lite-839687d3d7.chunk.css} +1 -0
- package/dist/css/{9527-lite-1d2221b6a8.chunk.css → 7103-lite-fef3024f61.chunk.css} +2 -4
- package/dist/css/{8856-lite-827b34aed7.chunk.css → 8856-lite-c114ab5c89.chunk.css} +1 -1
- package/dist/languages/en.json +1 -1
- package/dist/scripts/104-7abe2b09dd-lite.chunk.js +2 -0
- package/dist/scripts/104-7abe2b09dd-lite.chunk.js.map +1 -0
- package/dist/scripts/1074-2ab8b03e30-lite.chunk.js +2 -0
- package/dist/scripts/1074-2ab8b03e30-lite.chunk.js.map +1 -0
- package/dist/scripts/1087-861be5211f-lite.chunk.js +2 -0
- package/dist/scripts/1087-861be5211f-lite.chunk.js.map +1 -0
- package/dist/scripts/1199-6522b1d291-lite.chunk.js +2 -0
- package/dist/scripts/1199-6522b1d291-lite.chunk.js.map +1 -0
- package/dist/scripts/121-1b744469ee-lite.chunk.js +2 -0
- package/dist/scripts/121-1b744469ee-lite.chunk.js.map +1 -0
- package/dist/scripts/{1221-502395e693-lite.chunk.js → 1221-894d8474d5-lite.chunk.js} +3 -3
- package/dist/scripts/1221-894d8474d5-lite.chunk.js.map +1 -0
- package/dist/scripts/1243-ede924125c-lite.chunk.js +2 -0
- package/dist/scripts/1243-ede924125c-lite.chunk.js.map +1 -0
- package/dist/scripts/147-44ee7e9a78-lite.chunk.js +2 -0
- package/dist/scripts/147-44ee7e9a78-lite.chunk.js.map +1 -0
- package/dist/scripts/{1610-7f58bb25a9-lite.chunk.js → 1610-bf848cce4d-lite.chunk.js} +2 -2
- package/dist/scripts/{1610-7f58bb25a9-lite.chunk.js.map → 1610-bf848cce4d-lite.chunk.js.map} +1 -1
- package/dist/scripts/{7230-71f8d6d1bd-lite.chunk.js → 1867-3b447a1b85-lite.chunk.js} +2 -2
- package/dist/scripts/{7230-71f8d6d1bd-lite.chunk.js.map → 1867-3b447a1b85-lite.chunk.js.map} +1 -1
- package/dist/scripts/2258-ed7383502f-lite.chunk.js +3 -0
- package/dist/scripts/2258-ed7383502f-lite.chunk.js.map +1 -0
- package/dist/scripts/3268-2736356687-lite.chunk.js +2 -0
- package/dist/scripts/{3268-faca1bf46e-lite.chunk.js.map → 3268-2736356687-lite.chunk.js.map} +1 -1
- package/dist/scripts/3836-425334ab13-lite.chunk.js +2 -0
- package/dist/scripts/{3836-f2a0c9f713-lite.chunk.js.map → 3836-425334ab13-lite.chunk.js.map} +1 -1
- package/dist/scripts/3837-e4c5bb738b-lite.chunk.js +2 -0
- package/dist/scripts/3837-e4c5bb738b-lite.chunk.js.map +1 -0
- package/dist/scripts/4185-1f65c7adc9-lite.chunk.js +2 -0
- package/dist/scripts/4185-1f65c7adc9-lite.chunk.js.map +1 -0
- package/dist/scripts/4203-ee50e89841-lite.chunk.js +3 -0
- package/dist/scripts/4203-ee50e89841-lite.chunk.js.map +1 -0
- package/dist/scripts/4598-bcd3f6f8a7-lite.chunk.js +2 -0
- package/dist/scripts/{4598-2b1daca7ae-lite.chunk.js.map → 4598-bcd3f6f8a7-lite.chunk.js.map} +1 -1
- package/dist/scripts/4948-f21dad2ca1-lite.chunk.js +2 -0
- package/dist/scripts/4948-f21dad2ca1-lite.chunk.js.map +1 -0
- package/dist/scripts/{5153-079b4125ae-lite.chunk.js → 5153-acc6c13153-lite.chunk.js} +3 -3
- package/dist/scripts/5153-acc6c13153-lite.chunk.js.map +1 -0
- package/dist/scripts/6137-bc8b193237-lite.chunk.js +2 -0
- package/dist/scripts/6137-bc8b193237-lite.chunk.js.map +1 -0
- package/dist/scripts/6756-e90680dfcd-lite.chunk.js +3 -0
- package/dist/scripts/6756-e90680dfcd-lite.chunk.js.map +1 -0
- package/dist/scripts/6790-c8a9efba50-lite.chunk.js +2 -0
- package/dist/scripts/6790-c8a9efba50-lite.chunk.js.map +1 -0
- package/dist/scripts/705-10a85bae7a-lite.chunk.js +2 -0
- package/dist/scripts/705-10a85bae7a-lite.chunk.js.map +1 -0
- package/dist/scripts/7103-14bd3771d2-lite.chunk.js +2 -0
- package/dist/scripts/7103-14bd3771d2-lite.chunk.js.map +1 -0
- package/dist/scripts/7205-12a6b2ac55-lite.chunk.js +2 -0
- package/dist/scripts/7205-12a6b2ac55-lite.chunk.js.map +1 -0
- package/dist/scripts/7438-88d11bb89a-lite.chunk.js +2 -0
- package/dist/scripts/7438-88d11bb89a-lite.chunk.js.map +1 -0
- package/dist/scripts/7480-e0749592fc-lite.chunk.js +2 -0
- package/dist/scripts/7480-e0749592fc-lite.chunk.js.map +1 -0
- package/dist/scripts/8010-e9163f5bee-lite.chunk.js +2 -0
- package/dist/scripts/8010-e9163f5bee-lite.chunk.js.map +1 -0
- package/dist/scripts/8410-1f1fd5ccf0-lite.chunk.js +3 -0
- package/dist/scripts/8410-1f1fd5ccf0-lite.chunk.js.map +1 -0
- package/dist/scripts/8705-ecd20ef6cb-lite.chunk.js +2 -0
- package/dist/scripts/8705-ecd20ef6cb-lite.chunk.js.map +1 -0
- package/dist/scripts/8856-02dd2e486c-lite.chunk.js +2 -0
- package/dist/scripts/8856-02dd2e486c-lite.chunk.js.map +1 -0
- package/dist/scripts/9003-1db925f5ec-lite.chunk.js +2 -0
- package/dist/scripts/9003-1db925f5ec-lite.chunk.js.map +1 -0
- package/dist/scripts/9042-1a42fcbba2-lite.chunk.js +2 -0
- package/dist/scripts/9042-1a42fcbba2-lite.chunk.js.map +1 -0
- package/dist/scripts/9103-4eec16d73b-lite.chunk.js +2 -0
- package/dist/scripts/9103-4eec16d73b-lite.chunk.js.map +1 -0
- package/dist/scripts/9134-19912ca3ee-lite.chunk.js +2 -0
- package/dist/scripts/9134-19912ca3ee-lite.chunk.js.map +1 -0
- package/dist/scripts/9266-f0ad8d5cb3-lite.chunk.js +2 -0
- package/dist/scripts/9266-f0ad8d5cb3-lite.chunk.js.map +1 -0
- package/dist/scripts/9740-9d50d31b72-lite.chunk.js +2 -0
- package/dist/scripts/9740-9d50d31b72-lite.chunk.js.map +1 -0
- package/dist/scripts/{bundle-95a6fc2722.min.js → bundle-828ca65de8.min.js} +3 -3
- package/dist/scripts/{bundle-95a6fc2722.min.js.map → bundle-828ca65de8.min.js.map} +1 -1
- package/package.json +1 -1
- package/dist/scripts/104-b62a8447f0-lite.chunk.js +0 -2
- package/dist/scripts/104-b62a8447f0-lite.chunk.js.map +0 -1
- package/dist/scripts/107-989ac2dc47-lite.chunk.js +0 -2
- package/dist/scripts/107-989ac2dc47-lite.chunk.js.map +0 -1
- package/dist/scripts/119-e3a8bd94dd-lite.chunk.js +0 -2
- package/dist/scripts/119-e3a8bd94dd-lite.chunk.js.map +0 -1
- package/dist/scripts/1199-a2ac2338d0-lite.chunk.js +0 -2
- package/dist/scripts/1199-a2ac2338d0-lite.chunk.js.map +0 -1
- package/dist/scripts/121-bf7a153eb8-lite.chunk.js +0 -2
- package/dist/scripts/121-bf7a153eb8-lite.chunk.js.map +0 -1
- package/dist/scripts/1221-502395e693-lite.chunk.js.map +0 -1
- package/dist/scripts/2258-4d0639c9fe-lite.chunk.js +0 -3
- package/dist/scripts/2258-4d0639c9fe-lite.chunk.js.map +0 -1
- package/dist/scripts/3268-faca1bf46e-lite.chunk.js +0 -2
- package/dist/scripts/3836-f2a0c9f713-lite.chunk.js +0 -2
- package/dist/scripts/3837-fe321e8deb-lite.chunk.js +0 -2
- package/dist/scripts/3837-fe321e8deb-lite.chunk.js.map +0 -1
- package/dist/scripts/4025-306e0fbdd5-lite.chunk.js +0 -2
- package/dist/scripts/4025-306e0fbdd5-lite.chunk.js.map +0 -1
- package/dist/scripts/4164-5d3af57b67-lite.chunk.js +0 -2
- package/dist/scripts/4164-5d3af57b67-lite.chunk.js.map +0 -1
- package/dist/scripts/4185-e8e40dab72-lite.chunk.js +0 -2
- package/dist/scripts/4185-e8e40dab72-lite.chunk.js.map +0 -1
- package/dist/scripts/4562-545f04c53f-lite.chunk.js +0 -2
- package/dist/scripts/4562-545f04c53f-lite.chunk.js.map +0 -1
- package/dist/scripts/4598-2b1daca7ae-lite.chunk.js +0 -2
- package/dist/scripts/4948-66ba60c8e3-lite.chunk.js +0 -2
- package/dist/scripts/4948-66ba60c8e3-lite.chunk.js.map +0 -1
- package/dist/scripts/5153-079b4125ae-lite.chunk.js.map +0 -1
- package/dist/scripts/5241-163f5ac64c-lite.chunk.js +0 -3
- package/dist/scripts/5241-163f5ac64c-lite.chunk.js.map +0 -1
- package/dist/scripts/5349-bc0fcb4083-lite.chunk.js +0 -2
- package/dist/scripts/5349-bc0fcb4083-lite.chunk.js.map +0 -1
- package/dist/scripts/6135-a878a9cff0-lite.chunk.js +0 -3
- package/dist/scripts/6135-a878a9cff0-lite.chunk.js.map +0 -1
- package/dist/scripts/6509-23fdb20a4b-lite.chunk.js +0 -2
- package/dist/scripts/6509-23fdb20a4b-lite.chunk.js.map +0 -1
- package/dist/scripts/6790-5086b72662-lite.chunk.js +0 -2
- package/dist/scripts/6790-5086b72662-lite.chunk.js.map +0 -1
- package/dist/scripts/7205-2428f775a5-lite.chunk.js +0 -2
- package/dist/scripts/7205-2428f775a5-lite.chunk.js.map +0 -1
- package/dist/scripts/7339-5793c921bb-lite.chunk.js +0 -3
- package/dist/scripts/7339-5793c921bb-lite.chunk.js.map +0 -1
- package/dist/scripts/7438-a5f96e58fc-lite.chunk.js +0 -2
- package/dist/scripts/7438-a5f96e58fc-lite.chunk.js.map +0 -1
- package/dist/scripts/7926-6b040931aa-lite.chunk.js +0 -2
- package/dist/scripts/7926-6b040931aa-lite.chunk.js.map +0 -1
- package/dist/scripts/8536-f75009dd87-lite.chunk.js +0 -2
- package/dist/scripts/8536-f75009dd87-lite.chunk.js.map +0 -1
- package/dist/scripts/8856-df102acdff-lite.chunk.js +0 -2
- package/dist/scripts/8856-df102acdff-lite.chunk.js.map +0 -1
- package/dist/scripts/9134-42dc2390ce-lite.chunk.js +0 -2
- package/dist/scripts/9134-42dc2390ce-lite.chunk.js.map +0 -1
- package/dist/scripts/9266-c5d6705147-lite.chunk.js +0 -2
- package/dist/scripts/9266-c5d6705147-lite.chunk.js.map +0 -1
- package/dist/scripts/9284-402a14d41c-lite.chunk.js +0 -2
- package/dist/scripts/9284-402a14d41c-lite.chunk.js.map +0 -1
- package/dist/scripts/9470-11c8c2ca71-lite.chunk.js +0 -2
- package/dist/scripts/9470-11c8c2ca71-lite.chunk.js.map +0 -1
- package/dist/scripts/9527-111c8586a7-lite.chunk.js +0 -2
- package/dist/scripts/9527-111c8586a7-lite.chunk.js.map +0 -1
- package/dist/scripts/9591-230bcf0935-lite.chunk.js +0 -2
- package/dist/scripts/9591-230bcf0935-lite.chunk.js.map +0 -1
- /package/dist/css/{5349-lite-829df3b4e7.chunk.css → 6137-lite-829df3b4e7.chunk.css} +0 -0
- /package/dist/css/{9470-lite-edb2d29928.chunk.css → 8010-lite-edb2d29928.chunk.css} +0 -0
- /package/dist/css/{6135-lite-41bdd1c5a3.chunk.css → 8410-lite-41bdd1c5a3.chunk.css} +0 -0
- /package/dist/css/{121-lite-1337d9acf0.chunk.css → 9042-lite-1337d9acf0.chunk.css} +0 -0
- /package/dist/scripts/{1221-502395e693-lite.chunk.js.LICENSE.txt → 1221-894d8474d5-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{2258-4d0639c9fe-lite.chunk.js.LICENSE.txt → 2258-ed7383502f-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{5153-079b4125ae-lite.chunk.js.LICENSE.txt → 4203-ee50e89841-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{5241-163f5ac64c-lite.chunk.js.LICENSE.txt → 5153-acc6c13153-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{6135-a878a9cff0-lite.chunk.js.LICENSE.txt → 6756-e90680dfcd-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{7339-5793c921bb-lite.chunk.js.LICENSE.txt → 8410-1f1fd5ccf0-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{bundle-95a6fc2722.min.js.LICENSE.txt → bundle-828ca65de8.min.js.LICENSE.txt} +0 -0
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"scripts/7438-a5f96e58fc-lite.chunk.js","mappings":"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","sources":["file:///app/packages/libs/shared/src/apps/share-v2/components/delete-share-content/DeleteShareContent.tsx","file:///app/packages/libs/shared/src/apps/share-v2/enums/SharePrivacy.ts","file:///app/packages/libs/shared/src/apps/share-v2/flight-requests/ShareRequests.ts","file:///app/packages/libs/shared/src/apps/share-v2/hooks/useShareLinkActions.ts","file:///app/packages/libs/shared/src/apps/share-v2/utils/ShareLinkHelper.ts","file:///app/packages/libs/shared/src/apps/share-v2/views/delete-open-classroom-confirmation-view/DeleteOpenClassroomConfirmationView.tsx"],"sourcesContent":["import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { Checkbox } from 'libs/shared/components/forms/form-checkbox/Checkbox';\nimport { PopupButtons } from 'libs/shared/components/popup/PopupButtons';\n\nconst namespace = 'sharev2.deleteShareContent';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nexport interface DeleteShareContentProps {\n loading: boolean;\n phrases: {\n leadingSentence: string;\n bulletPoints: string[];\n acknowledgement: string;\n deleteButton: string;\n backButton?: string;\n };\n onDelete: () => void;\n onBack?: () => void;\n}\n\nexport function DeleteShareContent(props: DeleteShareContentProps) {\n const [ ack, setAck ] = React.useState(false);\n\n function onDelete() {\n if (!ack || props.loading)\n return;\n\n props.onDelete();\n }\n\n return (\n <div className='d-flex flex-column gap-3'>\n <p className='m-0'>{props.phrases.leadingSentence}</p>\n <ul className='m-0'>\n {props.phrases.bulletPoints.map((phrase, index) => (\n <li key={index}>\n {phrase}\n </li>\n ))}\n </ul>\n <Checkbox\n id='ack'\n checked={ack}\n onChange={e => setAck(e.target.checked)}\n label={props.phrases.acknowledgement}\n />\n <PopupButtons>\n {props.onBack && (\n <PopupButtons.Cancel\n onClick={props.onBack}\n text={props.phrases.backButton ?? getPhrase('backButton')}\n variant='link'\n />\n )}\n <PopupButtons.Submit\n onClick={onDelete}\n text={props.phrases.deleteButton}\n variant='danger'\n disabled={!ack || props.loading}\n showSpinner={props.loading}\n />\n </PopupButtons>\n </div>\n );\n}","export enum SharePrivacy {\n Public = 'Public',\n PinCode = 'PinCode',\n PasswordProtected = 'PasswordProtected',\n ProtectedOverrideRestriction = 'ProtectedOverrideRestriction',\n JustMySchoolOverrideRestriction = 'JustMySchoolOverrideRestriction',\n Protected = 'Protected',\n JustMySchool = 'JustMySchool',\n Direct = 'Direct'\n}","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:${data.objectId}` ]\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}` ]\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}` ]\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' ],\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 { Flight } from 'libs/common/react/index';\n\nimport { SharePrivacy } from '../enums/SharePrivacy';\nimport { ShareRequests } from '../flight-requests/ShareRequests';\nimport { Share } from '../interfaces/Share';\nimport { SharePrivacyResponse } from '../interfaces/SharePrivacyResponse';\nimport { UpdateShareRequest } from '../interfaces/UpdateShareRequest';\nimport { ShareLinkHelper } from '../utils/ShareLinkHelper';\n\ninterface UseShareLinkActionsOptions {\n entityId: string;\n}\n\nexport function useShareLinkActions(options: UseShareLinkActionsOptions) {\n const fetchAsync = Flight.useGetFetchAsync();\n\n const entityPrivacy = Flight.useBasicFetch<SharePrivacyResponse>(ShareRequests.getPrivacy(options.entityId));\n\n function getCreateSharePrivacy() {\n const accessType = ShareLinkHelper.getShareLinkAccessType(entityPrivacy.data);\n return accessType === 'private'\n ? SharePrivacy.JustMySchool\n : SharePrivacy.Protected;\n }\n\n function updateShareLink(shareId: string, data: UpdateShareRequest): Promise<Share> {\n return fetchAsync<Share>(ShareRequests.updateShare(shareId, data));\n }\n\n function createShareLink(privacy?: SharePrivacy): Promise<Share> {\n const requestPrivacy = privacy ?? getCreateSharePrivacy();\n return fetchAsync<Share>(ShareRequests.createShareLink({ objectId: options.entityId, privacy: requestPrivacy }));\n }\n\n function deleteShareLink(shareId: string): Promise<void> {\n return fetchAsync(ShareRequests.deleteShare(shareId));\n }\n\n return {\n loaded: !!entityPrivacy.data,\n updateShareLink,\n createShareLink,\n deleteShareLink\n };\n}","import { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { DateHelper } from 'libs/common/react/utils/DateHelper';\n\nimport { SharePrivacy } from 'libs/shared/apps/share-v2/enums/SharePrivacy';\nimport type { SharePrivacyResponse } from 'libs/shared/apps/share-v2/interfaces/SharePrivacyResponse';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { ShareLinkStatus } from 'libs/shared/enums/ShareLinkStatus';\nimport type { BaseObject, YearGroup } from 'libs/shared/interfaces';\nimport { RestrictionHelper } from 'libs/shared/utils/RestrictionHelper';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\nconst namespace = 'sharev2.utils';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface GetIconAndTextOptions {\n linkExpireDate: string;\n isPasswordProtected: boolean;\n privacy: SharePrivacy;\n status: ShareLinkStatus;\n entityTypeId: MasterType;\n hasStudentExp: boolean;\n entity: BaseObject;\n yearGroups: YearGroup[];\n}\n\ninterface GetPrivateIconAndTextOptions {\n privacy: SharePrivacy;\n entityTypeId: MasterType;\n hasStudentExp: boolean;\n entity: BaseObject;\n yearGroups: YearGroup[];\n}\n\n\nexport const ShareLinkHelper = {\n getPrivateIconAndText: (options: GetPrivateIconAndTextOptions) => {\n const { entityTypeId, privacy, hasStudentExp, entity, yearGroups } = options;\n \n if (entityTypeId === MasterType.Topic || entityTypeId === MasterType.Series)\n return { icon: cvSvgLibrary.VisibleOn, text: getPhrase(hasStudentExp ? 'justMySchoolTeachers' : 'justMySchoolDescription') };\n \n /**\n * This is mainly for typescript, privacy will be an array for playlists\n * but that is handled above\n */\n if (Array.isArray(privacy))\n return;\n \n switch (privacy) {\n case SharePrivacy.Public:\n return { icon: cvSvgLibrary.VisibleOn, text: getPhrase('publicDescription') };\n case SharePrivacy.ProtectedOverrideRestriction:\n return { icon: cvSvgLibrary.VisibleOn, text: getPhrase('clickViewOnly') };\n case SharePrivacy.Protected:\n return {\n icon: cvSvgLibrary.Lock,\n text: ShareLinkHelper.getRespectRatingText(entity, yearGroups, hasStudentExp)\n };\n case SharePrivacy.JustMySchoolOverrideRestriction:\n return { icon: cvSvgLibrary.Lock, text: getPhrase(hasStudentExp ? 'justMySchoolTeachers' : 'justMySchoolDescription') };\n case SharePrivacy.JustMySchool:\n return {\n icon: cvSvgLibrary.Lock,\n text: ShareLinkHelper.getRespectRatingText(entity, yearGroups, hasStudentExp)\n };\n case SharePrivacy.PinCode:\n return { icon: cvSvgLibrary.Lock, text: getPhrase('pinDescription') };\n case SharePrivacy.PasswordProtected:\n return { icon: cvSvgLibrary.Lock, text: getPhrase('privateDescription') };\n default:\n return {};\n }\n },\n\n getIconAndText: (options: GetIconAndTextOptions) => {\n const { linkExpireDate, isPasswordProtected, status } = options;\n if (!linkExpireDate && !isPasswordProtected)\n return ShareLinkHelper.getPrivateIconAndText(options);\n \n if (!linkExpireDate)\n return { icon: cvSvgLibrary.Lock, text: getPhrase('password') };\n \n const isToday = DateHelper.isToday(linkExpireDate);\n const dayDifference = DateHelper.diffBetween(linkExpireDate, new Date(), 'day');\n \n if (!isPasswordProtected) {\n let text = isToday\n ? getPhrase('expiryToday')\n : getPhrase('expiry', { days: dayDifference });\n \n if (status === ShareLinkStatus.Expired)\n text = getPhrase('expired');\n \n return { icon: cvSvgLibrary.Timer, text };\n }\n \n let text = isToday\n ? getPhrase('passwordExpiryToday')\n : getPhrase('passwordExpiry', { days: dayDifference });\n \n if (status === ShareLinkStatus.Expired)\n text = getPhrase('passwordExpired');\n \n return { icon: cvSvgLibrary.Lock, text };\n },\n\n getRespectRatingText(video: BaseObject, yearGroups: YearGroup[], hasStudentExp: boolean) {\n if (!video || !yearGroups)\n return null;\n \n if (hasStudentExp)\n return getPhrase('justMySchoolTeachers');\n \n if (!VideoHelper.isVideoType(video))\n return getPhrase('collectionRating');\n \n const restriction = RestrictionHelper.getWeightedRestriction(video._restrictions?.value);\n \n /**\n * Restrictions without a year level are teacher restricitons, which means only admins can see it.\n */\n if (restriction && !restriction.yearGroup)\n return getPhrase('onlyAdmins');\n \n const rating = VideoHelper.getRating(video);\n \n let maxYearGroup: YearGroup;\n let minAllowedYearGroup: YearGroup;\n \n for (const yearGroup of yearGroups) {\n /**\n * If our year level is our new highest so far, save it\n */\n if (!maxYearGroup || yearGroup.value > maxYearGroup.value)\n maxYearGroup = yearGroup;\n \n /**\n * If the restriction is higher than this year level, skip it.\n */\n if (restriction && yearGroup.value <= restriction.yearGroup)\n continue;\n \n /**\n * If therating is higher than this year level's rating value, skip it.\n */\n if (rating && yearGroup.rating.value < rating.value)\n continue;\n \n /**\n * If our year level is the new lowest so far, save it\n */\n if (!minAllowedYearGroup || yearGroup.value < minAllowedYearGroup.value)\n minAllowedYearGroup = yearGroup;\n }\n \n /**\n * If no year levels are allowed, then it's staff only.\n */\n if (!minAllowedYearGroup)\n return getPhrase('onlyStaff');\n \n \n /**\n * If there's only one year level, and it's allowed, then we can just\n * say that everyone in your school can access it.\n */\n if (yearGroups.length === 1)\n return getPhrase('clickViewOnly');\n \n /**\n * We differentiate the copy if it's the highest year level or not. \n * Basically if we need to say \"X and above\" or not.\n */\n if (minAllowedYearGroup.value === maxYearGroup.value)\n return getPhrase('maxYearGroup', { yearGroup: maxYearGroup.name });\n \n return getPhrase('yearGroupRange', { yearGroup: minAllowedYearGroup.name });\n },\n\n getShareLinkAccessType(privacy: SharePrivacyResponse): 'private' | 'clickview' | 'tv' {\n /**\n * If an entity is not a ClickView content and they cannot manage access\n * settings of the entity (which they can if its their private entity)\n * it means that its a TV content\n */\n if (privacy.isTvContent)\n return 'tv';\n \n if (privacy.isClickViewContent)\n return 'clickview';\n\n return 'private';\n }\n};","import React from 'react';\n\nimport { AppLinkHelper } from 'libs/common/backbone/core';\nimport { Core } from 'libs/common/backbone/index';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Flight } from 'libs/common/react/index';\n\nimport { DeleteShareContent } from 'libs/shared/apps/share-v2/components/delete-share-content/DeleteShareContent';\nimport { ShareRequests } from 'libs/shared/apps/share-v2/flight-requests/ShareRequests';\nimport { useShareLinkActions } from 'libs/shared/apps/share-v2/hooks/useShareLinkActions';\nimport { Share } from 'libs/shared/apps/share-v2/interfaces/Share';\nimport { Popup } from 'libs/shared/components/popup/Popup';\nimport { useAlerts } from 'libs/shared/hooks/UseAlerts';\nimport { PopupViewProps } from 'libs/shared/interfaces';\n\nconst namespace = 'sharev2.deleteOpenClassroomConfirmation';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nexport interface DeleteOpenClassroomConfirmationViewProps extends PopupViewProps {\n shareId: string;\n previousAppLink?: Core.AppLink;\n}\n\nexport function DeleteOpenClassroomConfirmationView(props: DeleteOpenClassroomConfirmationViewProps) {\n const alerts = useAlerts();\n const share = Flight.useBasicFetch<Share>(ShareRequests.getShare(props.shareId));\n\n const [ loading, setLoading ] = React.useState(false);\n\n const { deleteShareLink: deleteShare } = useShareLinkActions({\n entityId: share.data?.objectId.toString()\n });\n \n function onClickDelete() {\n setLoading(true);\n\n deleteShare(share.data?.shareId).then(() => {\n setLoading(false);\n alerts.success(getPhrase('deleteSuccess'));\n props.closePopup();\n\n if (props.previousAppLink) {\n AppLinkHelper.trigger(props.previousAppLink);\n }\n }).catch(() => {\n alerts.error(getPhrase('deleteFailed'));\n }).finally(() => {\n setLoading(false);\n });\n }\n\n const loaded = share.hasCompleted;\n\n return (\n <Popup\n title={getPhrase('title')}\n closePopup={props.closePopup}\n showLoadingSpinner={!loaded}\n >\n <DeleteShareContent\n loading={loading}\n phrases={{\n leadingSentence: getPhrase('intro'),\n bulletPoints: [\n getPhrase('loseAccessInfo'),\n getPhrase('loseAccessUsage')\n ],\n acknowledgement: getPhrase('acknowledgement'),\n deleteButton: getPhrase('delete')\n }}\n onDelete={onClickDelete}\n />\n </Popup>\n );\n}"],"names":["getPhrase","DeleteShareContent","props","ack","setAck","className","phrases","leadingSentence","bulletPoints","map","phrase","index","key","id","checked","onChange","e","target","label","acknowledgement","onBack","onClick","text","backButton","variant","loading","onDelete","deleteButton","disabled","showSpinner","SharePrivacy","normalizeOptions","namespace","ShareRequests","createShare","data","url","type","invalidationKeys","objectId","updateShare","shareId","deleteShare","getShare","bootstrapName","getSentShares","params","Object","values","sort","join","normalize","getShareLink","createShareLink","getPrivacy","getSharesByObjectId","createSharePincode","getPincodeByShareId","getPincodeByCode","code","useShareLinkActions","options","fetchAsync","entityPrivacy","entityId","loaded","updateShareLink","privacy","requestPrivacy","deleteShareLink","ShareLinkHelper","getPrivateIconAndText","entityTypeId","hasStudentExp","entity","yearGroups","icon","Array","isArray","getRespectRatingText","getIconAndText","linkExpireDate","isPasswordProtected","status","isToday","dayDifference","Date","days","video","restriction","_restrictions","value","yearGroup","maxYearGroup","minAllowedYearGroup","rating","length","name","getShareLinkAccessType","isTvContent","isClickViewContent","DeleteOpenClassroomConfirmationView","alerts","share","setLoading","toString","hasCompleted","title","closePopup","showLoadingSpinner","then","success","previousAppLink","error"],"sourceRoot":""}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
"use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[7926],{9806:(e,t,a)=>{a.d(t,{k:()=>x});var n=a(32735),i=a(65858),c=a(64249),l=a(15611),o=a(7432),s=a(11834),r=a(83345),m=a(56754),d=a(86348),p=a(7733),u=a(54610),v=a(4594),g=a(68626),b=a(9085),h=a(67453),y=a(31908);const f={thumbnailFallbackSvg:"D4JFs",posterFallbackSvg:"bjUWl",coverFallbackSvg:"kdLpt",thumbnailContainer:"d3CKN",insightsMask:"KM76U",requireMarking:"peLH7",badge:"mVu0E",bar:"zO3MS",a:"K1jW5",expandBar:"YITJl",b:"tCpLF",c:"lC0cq"};var E="shared.sharedObjectImage",k="rounded overflow-hidden";function N(){return n.createElement("div",{className:"d-flex pointer-events-none position-absolute bottom-0 start-0 h-100 w-100 z-1 justify-content-center align-items-center"},n.createElement("div",{className:"position-absolute bg-dark bg-gradient opacity-50 w-100 h-100 z-0 rounded-3"}),n.createElement("div",{className:"d-flex align-items-end gap-2 h-50 z-1"},n.createElement("div",{className:"d-flex align-items-end h-50"},n.createElement("div",{className:"".concat(f.bar," ").concat(f.a," rounded shadow")})),n.createElement("div",{className:"d-flex align-items-end h-75"},n.createElement("div",{className:"".concat(f.bar," ").concat(f.b," rounded shadow")})),n.createElement("div",{className:"d-flex align-items-end h-100"},n.createElement("div",{className:"".concat(f.bar," ").concat(f.c," rounded shadow")}))))}function x(e){var t=n.useCallback((function(t){var a;t&&e.fixedHeight&&(t.style.width="".concat(t.offsetHeight*(a=e.object,y.M.isVideoType(a)?16/9:a.typeId===v.E.Playlist?1:a.typeId===v.E.Series?9/16:void 0),"px"))}),[]),a=y.M.isVideoType(e.object),x=function(e){var t=h.j.getDisplayImageFromObject(e);if(y.M.isVideoType(e))return{image:t,imageType:u.__.Thumbnails,imageClassName:k,imageFallbackComponent:n.createElement(s.oy,{type:s.mS.Video})};switch(e.typeId){case v.E.Series:return{image:t,imageType:u.__.TallPosters,imageClassName:k,imageFallbackComponent:n.createElement(s.oy,{type:s.mS.Series,svgContainerClassName:f.posterFallbackSvg})};case v.E.Playlist:return{image:t,imageType:u.__.Covers,imageClassName:(null==t?void 0:t.url)?k:"".concat(k," ").concat((0,b.x)(e.name,p.o)),imageFallbackComponent:n.createElement(s.oy,{type:s.mS.Playlist,svgContainerClassName:(null==t?void 0:t.url)?f.coverFallbackSvg:"d-none",extraClasses:!(null==t?void 0:t.url)&&"bg-transparent"})}}}(e.object),w=x.image,C=x.imageType,S=x.imageClassName,T=x.imageFallbackComponent,M=e.showVideoMetadata?{hideBottomBar:e.hideBottomBar}:{hideDuration:!0,hideMask:!0,hideRating:!0,hideVideoBadgeType:!0,hideBottomBar:!0};return n.createElement("div",{className:"d-flex align-items-center justify-content-center w-100 h-100"},n.createElement("div",{ref:t,className:e.fixedHeight?"h-100":"w-100"},a&&n.createElement("div",{className:"".concat(f.thumbnailContainer," position-relative")},e.showInsightsMask&&n.createElement(N,null),n.createElement(l.F,{appLink:e.appLink},n.createElement(d.u,Object.assign({video:e.object,size:e.thumbnailSize,imageOptions:e.imageOptions,textPosition:g.z.Independent,type:"cosmetic",imageClassName:e.imageClassName},M))),!!e.requireMarking&&n.createElement("div",{className:"".concat(e.showInsightsMask&&f.requireMarking," position-absolute bottom-0 end-0 z-1 m-2")},n.createElement("div",{className:"".concat(f.badge," d-flex align-items-center bg-light-ultramarine text-ultramarine fw-semibold rounded-pill w-fit mt-1 px-2")},n.createElement(r.x,{namespace:E,phrase:"requireMarking",options:{smartCount:e.requireMarking}})))),!a&&n.createElement(n.Fragment,null,"videos"in e.object?n.createElement(m.I,{collection:e.object,imageOptions:e.imageOptions,appLink:e.appLink,analyticsData:{id:e.object.id,name:e.object.name},analyticsOptions:{entity:c.I.getAnalyticsEntity(e.object.type),actionType:i.Vw.Click,location:e.locationContext},showMask:e.showCollectionMask,showVideoCount:e.showVideoCount}):n.createElement(o.Z,{data:null==w?void 0:w.url,imageType:C,imageOptions:e.imageOptions,appLink:e.appLink,className:S,analyticsData:{id:e.object.id,name:e.object.name},analyticsOptions:{entity:c.I.getAnalyticsEntity(e.object.type),actionType:i.Vw.Click,location:e.locationContext}},T))))}x.defaultProps={imageOptions:{size:u.h2.Small}}},95834:(e,t,a)=>{a.d(t,{J:()=>n});var n={table:"striped-list no-full-width pb-3",header:"fw-semibold pb-1",headerCell:"py-2 ps-2 text-nowrap",row:"striped-row rounded",cell:"d-flex align-items-center p-2"}},31754:(e,t,a)=>{a.d(t,{x:()=>o});var n=a(82602),i=a(75896),c=a(41859),l=a(11576),o={groupByDateShared:function(e){var t=i.m.groupBy(e,"dateShared");return Object.keys(t).sort().reverse().reduce((function(e,a){var i=(0,n.WU)(a);return e[i]||(e[i]=[]),e[i]=e[i].concat(t[a]),e}),{})},mapActivityStatusToCheckMarkStatus:function(e){switch(e){case l.T.Complete:return c.h.Complete;case l.T.Incomplete:return c.h.Incomplete;case l.T.None:return c.h.None}},mapCheckMarkStatusToActivityStatus:function(e){switch(e){case c.h.Complete:return l.T.Complete;case c.h.Incomplete:return l.T.Incomplete;case c.h.None:return l.T.None}}}},38502:(e,t,a)=>{a.d(t,{r:()=>d});var n=a(32735),i=a(49985),c=a(15611),l=a(18559),o=a(11607),s=a(83914),r=a(22771);function m(e){return n.createElement(n.Fragment,null,!!e.tab.svgName&&n.createElement("div",{className:e.tab.name?"pe-1":""},n.createElement(s.x,{svgName:e.tab.svgName})),e.tab.name,"number"==typeof e.tab.count&&n.createElement("div",{className:"ps-2"},n.createElement(l.C,{type:l.g.Count,data:e.tab.count})))}function d(e){var t;return n.createElement("nav",{className:null!==(t=e.className)&&void 0!==t?t:"",ref:e.containerRef},n.createElement("ul",{className:"\n list-unstyled d-inline-block m-0 ".concat(r.Z.pillTabSelector,"\n ").concat(e.borderRadius?r.Z.radiusSmall:"","\n ").concat(e.listClassName,"\n ")},e.tabs.map((function(e,t){return n.createElement("li",{className:"\n p-0 ".concat(r.Z.tab," ").concat(e.active?"btn btn-dark":"btn btn-outline-dark","\n ").concat(e.name?r.Z.minWidth:""," ").concat(e.className,"\n "),key:t},e.appLink?n.createElement(c.F,{appLink:e.appLink,analyticsData:e.analyticsData,analyticsOptions:e.analyticsOptions,className:"\n cursor-pointer d-flex align-items-center justify-content-center\n text-decoration-none text-reset px-2 text-nowrap ".concat(r.Z.tabLink,"\n ")},n.createElement(m,{tab:e})):n.createElement(o.L,{className:"\n cursor-pointer d-flex align-items-center justify-content-center\n text-decoration-none text-reset px-2 text-nowrap ".concat(r.Z.tabLink,"\n "),onClick:function(){return function(e){!e.active&&e.onSelect&&(e.onSelect(),e.analyticsData&&e.analyticsOptions&&i.k.logUserAction(e.analyticsData,e.analyticsOptions))}(e)}},n.createElement(m,{tab:e})))}))))}d.defaultProps={borderRadius:"lg"}},56754:(e,t,a)=>{a.d(t,{I:()=>E});var n=a(32735),i=a(75896),c=a(65858),l=a(15611),o=a(83914),s=a(83345);const r={thumbnailTitle:"OsWjL"};function m(e){return n.createElement("h3",{title:e.title,className:"h6"},e.title)}function d(e){return e.appLink?n.createElement(l.F,{appLink:e.appLink,className:"".concat(r.thumbnailTitle)},n.createElement(m,Object.assign({},e))):n.createElement(m,Object.assign({},e))}var p=a(86348),u=a(62335),v=a(4594),g=a(68626),b=a(45778),h=a(35223);const y={badge:"M4zat",mask:"r0Ztg",thumbnailContainer:"uD9dz"};var f="shared.collectionThumbnail";function E(e){var t,a,r,m,E=function(){var t,a=null===(t=e.collection)||void 0===t?void 0:t.videos;if(a){if(!a.count&&e.collection.typeId===v.E.Playlist){var n=e.collection;n.clips.count&&(a=n.clips),n.interactives.count&&(a=n.interactives)}return i.m.first(a.data)}}(),k=function(){var t,a,n=0;if(e.collection.videos&&e.collection.videos.count&&(n+=e.collection.videos.count),e.collection.typeId===v.E.Playlist){var i=e.collection;(null===(t=i.interactives)||void 0===t?void 0:t.count)&&(n+=i.interactives.count),(null===(a=i.clips)||void 0===a?void 0:a.count)&&(n+=i.clips.count)}return n}(),N=(null===(t=e.title)||void 0===t?void 0:t.length)||(null===(a=e.subText)||void 0===a?void 0:a.length),x=Object.assign({id:e.collection.id.toString(),name:e.collection.name},e.analyticsData),w=Object.assign({actionType:c.Vw.Click,entity:(m=e.collection,b.G.isType(m,v.E.Playlist)?c.py.Playlist:b.G.isType(m,v.E.Series)?c.py.Series:void 0)},e.analyticsOptions);return n.createElement("div",null,n.createElement("div",{className:"position-relative ".concat(y.thumbnailContainer," z-1")},n.createElement(l.F,{appLink:e.appLink,analyticsData:x,analyticsOptions:w,preventFocus:!0},e.showMask&&n.createElement("div",{className:"".concat(y.mask," position-absolute w-100 h-100 rounded-3 bg-dark bg-gradient z-1 bg-opacity-50 pointer-events-none")},n.createElement("div",{className:"".concat(y.badge," d-flex align-items-center w-fit flex-grow-0 bg-dark rounded-pill ps-1 m-2")},n.createElement(o.x,{svgName:h.vn.Play,className:"svg-container text-white"}),n.createElement("p",{className:"d-inline fw-medium text-white mb-0"},(null===(r=e.hoverText)||void 0===r?void 0:r.length)?n.createElement("span",null,e.hoverText):n.createElement(s.x,{namespace:f,phrase:"playAll"})))),E&&n.createElement(p.u,{video:E,imageOptions:e.imageOptions,textPosition:g.z.Independent,type:"cosmetic",hideMask:!0,hideRating:!0,hideDuration:!0,hideVideoTypeBadge:!0}),!E&&n.createElement("div",{className:"ratio ratio-16x9 bg-light rounded-3"},n.createElement("div",{className:"d-flex justify-content-center align-items-center"},n.createElement(o.x,{svgName:h.vn.Play,className:"w-33 opacity-25 text-gray-400"}))),e.showVideoCount&&n.createElement("div",{className:"".concat(y.badge," d-flex align-items-center w-fit bg-dark bg-opacity-75 rounded-pill position-absolute bottom-0 end-0 ps-1 m-2")},n.createElement(o.x,{svgName:h.vn.Series,className:"svg-container text-white me-1"}),n.createElement("p",{className:"d-inline fw-semibold text-white mb-0"},n.createElement(s.x,{namespace:f,phrase:"videos",options:{count:k,smartCount:k}}))))),N&&n.createElement("div",{className:"mt-2 d-flex flex-column"},e.subText&&n.createElement(u.m,{title:e.subText,appLink:e.subTextAppLink},e.subText),e.title&&n.createElement(d,{title:e.collection.name,appLink:e.titleAppLink})))}},2523:(e,t,a)=>{a.d(t,{w:()=>u});var n=a(32735),i=a(23481),c=a(81886),l=a(38502),o=a(75795),s=a(14070),r=a(97291),m=i.T.encloseNamespace("share.sharesHeader"),d={application:r.O.MY_SHARES,action:s.e.MyShares.SHARED_BY_ME},p={application:r.O.MY_SHARES,action:s.e.MyShares.SHARED_WITH_ME};function u(){return n.createElement("div",{className:"pb-3"},n.createElement("h1",{className:"h2 mb-3"},m("shares")),n.createElement(l.r,{tabs:(t=null===(e=o.O.getCurrentRoute())||void 0===e?void 0:e.appLink,[{name:m("sharedByMe"),onSelect:function(){return c.Q.C$.trigger(d)},active:(null==t?void 0:t.action)===d.action},{name:m("sharedWithMe"),onSelect:function(){return c.Q.C$.trigger(p)},active:(null==t?void 0:t.action)===p.action}])}));var e,t}},22771:(e,t,a)=>{a.d(t,{Z:()=>n});const n={pillTabSelector:"Hdi6o",tab:"RvNxr",minWidth:"GHSz9",radiusSmall:"VhJJa",tabLink:"WFyvo"}},82602:(e,t,a)=>{a.d(t,{WU:()=>r});var n=["second","minute","hour","day","week","month","year"],i=["秒","分钟","小时","天","周","个月","年"],c={},l=function(e,t){c[e]=t},o=[60,60,24,7,365/7/12,12];function s(e){return e instanceof Date?e:!isNaN(e)||/^\d+$/.test(e)?new Date(parseInt(e)):(e=(e||"").trim().replace(/\.\d+/,"").replace(/-/,"/").replace(/-/,"/").replace(/(\d)T(\d)/,"$1 $2").replace(/Z/," UTC").replace(/([+-]\d\d):?(\d\d)/," $1$2"),new Date(e))}var r=function(e,t,a){var n=function(e,t){return(+(t?s(t):new Date)-+s(e))/1e3}(e,a&&a.relativeDate);return function(e,t){for(var a=e<0?1:0,n=e=Math.abs(e),i=0;e>=o[i]&&i<o.length;i++)e/=o[i];return(e=Math.floor(e))>(0==(i*=2)?9:1)&&(i+=1),t(e,i,n)[a].replace("%s",e.toString())}(n,function(e){return c[e]||c.en_US}(t))};l("en_US",(function(e,t){if(0===t)return["just now","right now"];var a=n[Math.floor(t/2)];return e>1&&(a+="s"),[e+" "+a+" ago","in "+e+" "+a]})),l("zh_CN",(function(e,t){if(0===t)return["刚刚","片刻后"];var a=i[~~(t/2)];return[e+" "+a+"前",e+" "+a+"后"]}))}}]);
|
|
2
|
-
//# sourceMappingURL=7926-6b040931aa-lite.chunk.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"scripts/7926-6b040931aa-lite.chunk.js","mappings":"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","sources":["file:///app/packages/libs/shared/src/apps/share/components/shared-object-image/shared-object-image.scss","file:///app/packages/libs/shared/src/apps/share/components/shared-object-image/SharedObjectImage.tsx","file:///app/packages/libs/shared/src/apps/share/constants/TableTheme.ts","file:///app/packages/libs/shared/src/apps/share/utils/ShareHelper.ts","file:///app/packages/libs/shared/src/components/pill-tab-selector/PillTabSelector.tsx","file:///app/packages/libs/shared/src/components/thumbnails/collection/title/collection-thumbnail-title.scss","file:///app/packages/libs/shared/src/components/thumbnails/collection/title/CollectionThumbnailTitle.tsx","file:///app/packages/libs/shared/src/components/thumbnails/collection/collection-thumbnail.scss","file:///app/packages/libs/shared/src/components/thumbnails/collection/CollectionThumbnail.tsx","file:///app/packages/projects/lite/src/apps/share/components/shares-header/SharesHeader.tsx","file:///app/packages/libs/shared/src/components/pill-tab-selector/pill-tab-selector.scss","file:///app/node_modules/timeago.js/esm/lang/en_US.js","file:///app/node_modules/timeago.js/esm/lang/zh_CN.js","file:///app/node_modules/timeago.js/esm/register.js","file:///app/node_modules/timeago.js/esm/utils/date.js","file:///app/node_modules/timeago.js/esm/format.js","file:///app/node_modules/timeago.js/esm/index.js"],"sourcesContent":["// extracted by mini-css-extract-plugin\nexport default {\"thumbnailFallbackSvg\":\"D4JFs\",\"posterFallbackSvg\":\"bjUWl\",\"coverFallbackSvg\":\"kdLpt\",\"thumbnailContainer\":\"d3CKN\",\"insightsMask\":\"KM76U\",\"requireMarking\":\"peLH7\",\"badge\":\"mVu0E\",\"bar\":\"zO3MS\",\"a\":\"K1jW5\",\"expandBar\":\"YITJl\",\"b\":\"tCpLF\",\"c\":\"lC0cq\"};","import React from 'react';\n\nimport { Core } from 'libs/common/core';\n\nimport { LocationContext, UserAction } from 'libs/analytics/interfaces';\n\nimport { ShareViewHelper } from 'libs/shared/apps/share/views/share/ShareViewHelper';\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { BaseImage } from 'libs/shared/components/image/BaseImage';\nimport { ImageFallback, ImageFallbackType } from 'libs/shared/components/image/ImageFallback';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { CollectionThumbnail } from 'libs/shared/components/thumbnails/collection/CollectionThumbnail';\nimport { VideoThumbnail } from 'libs/shared/components/thumbnails/video/VideoThumbnail';\nimport { BG_COLOUR_CLASS_NAMES } from 'libs/shared/constants/ColourClassNames';\nimport { ImageSize, ImageType } from 'libs/shared/enums/Images';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { ThumbnailTextPosition } from 'libs/shared/enums/ThumbnailTextPosition';\nimport { BaseObject, Image, Playlist, Series } from 'libs/shared/interfaces';\nimport { getBgColorClass } from 'libs/shared/utils/getBgColorClass';\nimport { ImageHelper, ImageOptions } from 'libs/shared/utils/ImageHelper';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\nimport styles from './shared-object-image.scss';\n\nconst namespace = 'shared.sharedObjectImage';\n\nconst BASE_IMAGE_CLASS_NAME = 'rounded overflow-hidden';\n\ninterface ImageProps {\n image: Image;\n imageType: ImageType;\n imageClassName?: string;\n imageFallbackComponent: JSX.Element;\n}\n\nfunction getImageProps(object: BaseObject): ImageProps {\n const image = ImageHelper.getDisplayImageFromObject(object);\n\n if (VideoHelper.isVideoType(object))\n return {\n image,\n imageType: ImageType.Thumbnails,\n imageClassName: BASE_IMAGE_CLASS_NAME,\n imageFallbackComponent: <ImageFallback type={ImageFallbackType.Video} />\n };\n\n switch (object.typeId) {\n case MasterType.Series:\n return {\n image,\n imageType: ImageType.TallPosters,\n imageClassName: BASE_IMAGE_CLASS_NAME,\n imageFallbackComponent:\n <ImageFallback type={ImageFallbackType.Series} svgContainerClassName={styles.posterFallbackSvg} />\n };\n\n case MasterType.Playlist:\n return {\n image,\n imageType: ImageType.Covers,\n imageClassName: !image?.url\n ? `${BASE_IMAGE_CLASS_NAME} ${getBgColorClass(object.name, BG_COLOUR_CLASS_NAMES)}`\n : BASE_IMAGE_CLASS_NAME,\n imageFallbackComponent: (\n <ImageFallback\n type={ImageFallbackType.Playlist}\n svgContainerClassName={image?.url ? styles.coverFallbackSvg : 'd-none'}\n extraClasses={!image?.url && 'bg-transparent'}\n />\n )\n };\n }\n}\n\nfunction InsightsMask() {\n return (\n <div className={`d-flex pointer-events-none position-absolute bottom-0 start-0 h-100 w-100 z-1 justify-content-center align-items-center`}>\n <div className='position-absolute bg-dark bg-gradient opacity-50 w-100 h-100 z-0 rounded-3'></div>\n <div className='d-flex align-items-end gap-2 h-50 z-1'>\n <div className='d-flex align-items-end h-50'>\n <div className={`${styles.bar} ${styles.a} rounded shadow`}></div>\n </div>\n <div className='d-flex align-items-end h-75'>\n <div className={`${styles.bar} ${styles.b} rounded shadow`}></div>\n </div>\n <div className='d-flex align-items-end h-100'>\n <div className={`${styles.bar} ${styles.c} rounded shadow`}></div>\n </div>\n </div>\n </div>\n );\n}\n\nfunction getImageRatio(object: BaseObject): ImageFallbackType {\n if (VideoHelper.isVideoType(object))\n return 16 / 9;\n\n if (object.typeId === MasterType.Playlist)\n return 1;\n\n if (object.typeId === MasterType.Series)\n return 9 / 16;\n}\n\nSharedObjectImage.defaultProps = {\n imageOptions: { size: ImageSize.Small }\n};\n\ninterface SharedObjectImageProps {\n object: BaseObject;\n locationContext: LocationContext;\n appLink?: Core.AppLink;\n showVideoMetadata?: boolean;\n fixedHeight?: boolean;\n requireMarking?: number;\n imageOptions?: ImageOptions;\n showInsightsMask?: boolean;\n showCollectionMask?: boolean;\n showVideoCount?: boolean;\n thumbnailSize?: 'sm' | 'md';\n imageClassName?: string;\n hideBottomBar?: boolean;\n}\n\nexport function SharedObjectImage(props: SharedObjectImageProps): JSX.Element {\n const ref = React.useCallback((el: HTMLDivElement) => {\n if (!el || !props.fixedHeight)\n return;\n\n el.style.width = `${el.offsetHeight * getImageRatio(props.object)}px`;\n }, []);\n\n const useVideoThumbnail = VideoHelper.isVideoType(props.object);\n\n const {\n image,\n imageType,\n imageClassName,\n imageFallbackComponent\n } = getImageProps(props.object);\n\n const thumbnailMetadata = !props.showVideoMetadata ? {\n hideDuration: true,\n hideMask: true,\n hideRating: true,\n hideVideoBadgeType: true,\n hideBottomBar: true\n } : {\n hideBottomBar: props.hideBottomBar\n };\n\n return (\n <div className='d-flex align-items-center justify-content-center w-100 h-100'>\n <div ref={ref} className={props.fixedHeight ? 'h-100' : 'w-100'}>\n {useVideoThumbnail &&\n <div className={`${styles.thumbnailContainer} position-relative`}>\n {props.showInsightsMask && <InsightsMask />}\n <AppLink appLink={props.appLink}>\n <VideoThumbnail\n video={props.object}\n size={props.thumbnailSize}\n imageOptions={props.imageOptions}\n textPosition={ThumbnailTextPosition.Independent}\n type='cosmetic'\n imageClassName={props.imageClassName}\n {...thumbnailMetadata}\n />\n </AppLink>\n {!!props.requireMarking && (\n <div className={`${props.showInsightsMask && styles.requireMarking} position-absolute bottom-0 end-0 z-1 m-2`}>\n <div className={`${styles.badge} d-flex align-items-center bg-light-ultramarine text-ultramarine fw-semibold rounded-pill w-fit mt-1 px-2`}>\n <Text namespace={namespace} phrase='requireMarking' options={{ smartCount: props.requireMarking }} />\n </div>\n </div>\n )}\n </div>\n }\n {!useVideoThumbnail &&\n <>\n {'videos' in (props.object as Playlist | Series) ? (\n <CollectionThumbnail\n collection={props.object}\n imageOptions={props.imageOptions}\n appLink={props.appLink}\n analyticsData={{\n id: props.object.id,\n name: props.object.name\n }}\n analyticsOptions={{\n entity: ShareViewHelper.getAnalyticsEntity(props.object.type),\n actionType: UserAction.Click,\n location: props.locationContext\n }}\n showMask={props.showCollectionMask}\n showVideoCount={props.showVideoCount}\n />\n ) : (\n <BaseImage\n data={image?.url}\n imageType={imageType}\n imageOptions={props.imageOptions}\n appLink={props.appLink}\n className={imageClassName}\n analyticsData={{\n id: props.object.id,\n name: props.object.name\n }}\n analyticsOptions={{\n entity: ShareViewHelper.getAnalyticsEntity(props.object.type),\n actionType: UserAction.Click,\n location: props.locationContext\n }}\n >\n {imageFallbackComponent}\n </BaseImage>\n )}\n </>\n }\n </div>\n </div>\n );\n}","import { TableTheme } from 'libs/shared/components/table/Table';\n\nexport const SHARES_TABLE_THEME: TableTheme = {\n table: 'striped-list no-full-width pb-3',\n header: 'fw-semibold pb-1',\n headerCell: `py-2 ps-2 text-nowrap`,\n row: 'striped-row rounded',\n cell: 'd-flex align-items-center p-2'\n};","import { format } from 'timeago.js';\n\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\n\nimport { CheckMarkStatus } from 'libs/shared/components/check-mark-button/CheckMarkButton';\nimport { ShareActivityStatus } from 'libs/shared/enums/ShareActivityStatus';\n\ninterface ObjectWithDateShared {\n dateShared: string;\n}\n\ntype GroupedByDate<T extends ObjectWithDateShared> = { [date: string]: T[] };\n\nexport const ShareHelper = {\n groupByDateShared<T extends ObjectWithDateShared>(data: T[]): GroupedByDate<T> {\n const dateToObjectMapping: GroupedByDate<T> = ArrayHelper.groupBy(data, 'dateShared');\n\n const sortedDates = Object.keys(dateToObjectMapping).sort().reverse();\n\n // Create a sorted mapping between dates and the \"ObjectWithDateShared\" objects\n return sortedDates.reduce((acc: GroupedByDate<T>, date) => {\n const heading = format(date);\n\n if (!acc[heading])\n acc[heading] = [];\n\n acc[heading] = acc[heading].concat(dateToObjectMapping[date]);\n return acc;\n }, {});\n },\n\n mapActivityStatusToCheckMarkStatus(activityStatus: ShareActivityStatus): CheckMarkStatus {\n switch (activityStatus) {\n case ShareActivityStatus.Complete:\n return CheckMarkStatus.Complete;\n case ShareActivityStatus.Incomplete:\n return CheckMarkStatus.Incomplete;\n case ShareActivityStatus.None:\n return CheckMarkStatus.None;\n }\n },\n\n mapCheckMarkStatusToActivityStatus(checkMarkStatus: CheckMarkStatus): ShareActivityStatus {\n switch (checkMarkStatus) {\n case CheckMarkStatus.Complete:\n return ShareActivityStatus.Complete;\n case CheckMarkStatus.Incomplete:\n return ShareActivityStatus.Incomplete;\n case CheckMarkStatus.None:\n return ShareActivityStatus.None;\n }\n }\n};","import React from 'react';\n\nimport { Core } from 'libs/common/core';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { AnalyticsHelper } from 'libs/analytics/AnalyticsHelper';\nimport { AnalyticsOptions } from 'libs/analytics/interfaces';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { Badge, BadgeType } from 'libs/shared/components/badges/Badge';\nimport { DivButton } from 'libs/shared/components/div-button/DivButton';\n\nimport { SvgContainer } from '../svg-container/SvgContainer';\n\nimport styles from './pill-tab-selector.scss';\n\ninterface TabContentsProps {\n tab: PillTab;\n}\n\nfunction TabContents(props: TabContentsProps): JSX.Element {\n return (\n <>\n {!!props.tab.svgName && (\n <div className={props.tab.name ? 'pe-1' : ''}>\n <SvgContainer svgName={props.tab.svgName} />\n </div>\n )}\n\n {props.tab.name}\n\n {typeof (props.tab.count) === 'number' && (\n <div className='ps-2'>\n <Badge type={BadgeType.Count} data={props.tab.count} />\n </div>\n )}\n </>\n );\n}\n\nexport interface PillTab {\n name: string;\n active: boolean;\n svgName?: string;\n\n className?: string;\n\n appLink?: Core.AppLink;\n onSelect?: () => void;\n\n analyticsData?: HashObject;\n analyticsOptions?: AnalyticsOptions;\n\n count?: number;\n}\n\ninterface PillTabSelectorProps {\n tabs: PillTab[];\n containerRef?: (el: HTMLElement) => void;\n listClassName?: string;\n className?: string;\n borderRadius?: 'sm' | 'lg'\n}\n\nPillTabSelector.defaultProps = {\n borderRadius: 'lg'\n};\n\nexport function PillTabSelector(props: PillTabSelectorProps): JSX.Element {\n function onSelectTab(tab: PillTab): void {\n if (tab.active || !tab.onSelect)\n return;\n\n tab.onSelect();\n\n if (tab.analyticsData && tab.analyticsOptions)\n AnalyticsHelper.logUserAction(tab.analyticsData, tab.analyticsOptions);\n }\n\n return (\n <nav className={props.className ?? ''} ref={props.containerRef}>\n <ul className={`\n list-unstyled d-inline-block m-0 ${styles.pillTabSelector}\n ${props.borderRadius ? styles.radiusSmall : ''}\n ${props.listClassName}\n `}>\n {props.tabs.map((tab, index) => {\n return (\n <li\n className={`\n p-0 ${styles.tab} ${tab.active ? 'btn btn-dark' : 'btn btn-outline-dark'}\n ${tab.name ? styles.minWidth : ''} ${tab.className}\n `}\n key={index}\n >\n {tab.appLink ? (\n <AppLink\n appLink={tab.appLink}\n analyticsData={tab.analyticsData}\n analyticsOptions={tab.analyticsOptions}\n className={`\n cursor-pointer d-flex align-items-center justify-content-center\n text-decoration-none text-reset px-2 text-nowrap ${styles.tabLink}\n `}\n >\n <TabContents tab={tab} />\n </AppLink>\n ) : (\n <DivButton\n className={`\n cursor-pointer d-flex align-items-center justify-content-center\n text-decoration-none text-reset px-2 text-nowrap ${styles.tabLink}\n `}\n onClick={() => onSelectTab(tab)}\n >\n <TabContents tab={tab} />\n </DivButton>\n )}\n </li>\n );\n })}\n </ul>\n </nav>\n );\n}\n","// extracted by mini-css-extract-plugin\nexport default {\"thumbnailTitle\":\"OsWjL\"};","import React from 'react';\n\nimport { Core } from 'libs/common/core';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\n\nimport styles from './collection-thumbnail-title.scss';\n\ninterface BaseCollectionThumbnailTitleProps {\n title: string;\n}\n\nfunction BaseCollectionThumbnailTitle(props: BaseCollectionThumbnailTitleProps): JSX.Element {\n return (\n <h3 title={props.title} className='h6'>{props.title}</h3>\n );\n}\n\ninterface CollectionThumbnailTitleProps extends BaseCollectionThumbnailTitleProps {\n appLink: Core.AppLink;\n}\n\nexport function CollectionThumbnailTitle(props: CollectionThumbnailTitleProps) {\n if (!props.appLink) {\n return (\n <BaseCollectionThumbnailTitle {...props} />\n );\n }\n \n return (\n <AppLink appLink={props.appLink} className={`${styles.thumbnailTitle}`}>\n <BaseCollectionThumbnailTitle {...props} />\n </AppLink>\n );\n}\n","// extracted by mini-css-extract-plugin\nexport default {\"badge\":\"M4zat\",\"mask\":\"r0Ztg\",\"thumbnailContainer\":\"uD9dz\"};","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { HashObject } from 'libs/common/react/interfaces';\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\n\nimport { AnalyticsOptions, EntityType, UserAction } from 'libs/analytics/interfaces';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { CollectionThumbnailTitle } from 'libs/shared/components/thumbnails/collection/title/CollectionThumbnailTitle';\nimport { VideoThumbnail } from 'libs/shared/components/thumbnails/video/VideoThumbnail';\nimport { TitleSubText } from 'libs/shared/components/title-sub-text/TitleSubText';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { ThumbnailTextPosition } from 'libs/shared/enums/ThumbnailTextPosition';\nimport { Playlist, Series } from 'libs/shared/interfaces';\nimport { ImageOptions } from 'libs/shared/utils/ImageHelper';\nimport { MasterTypeHelper } from 'libs/shared/utils/MasterTypeHelper';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport styles from './collection-thumbnail.scss';\n\nconst namespace = 'shared.collectionThumbnail';\n\ntype SupportedContentType = Playlist | Series;\n\ninterface CollectionThumbnailProps {\n appLink?: Core.AppLink\n collection: SupportedContentType;\n imageOptions?: ImageOptions;\n analyticsData?: HashObject;\n analyticsOptions?: AnalyticsOptions;\n showMask?: boolean;\n showVideoCount?: boolean;\n title?: string;\n titleAppLink?: Core.AppLink;\n subText?: string;\n subTextAppLink?: Core.AppLink;\n hoverText?: string;\n}\n\nexport function CollectionThumbnail(props: CollectionThumbnailProps) {\n function getFirstVideo() {\n let collectionVideos = props.collection?.videos;\n\n if (!collectionVideos)\n return;\n\n if (!collectionVideos.count && props.collection.typeId === MasterType.Playlist) {\n const playlist = props.collection as Playlist;\n\n if (playlist.clips.count)\n collectionVideos = playlist.clips;\n\n if (playlist.interactives.count)\n collectionVideos = playlist.interactives;\n }\n\n return ArrayHelper.first(collectionVideos.data);\n }\n\n function getVideoCount() {\n let totalCount = 0;\n\n if (props.collection.videos && props.collection.videos.count) {\n totalCount += props.collection.videos.count;\n }\n\n if (props.collection.typeId === MasterType.Playlist) {\n const playlist = props.collection as Playlist;\n\n if (playlist.interactives?.count)\n totalCount += playlist.interactives.count;\n\n if (playlist.clips?.count)\n totalCount += playlist.clips.count;\n }\n\n return totalCount;\n }\n\n function getEntityType(collection: SupportedContentType) {\n if (MasterTypeHelper.isType<Playlist>(collection, MasterType.Playlist)) {\n return EntityType.Playlist;\n }\n\n if (MasterTypeHelper.isType<Series>(collection, MasterType.Series)) {\n return EntityType.Series;\n }\n }\n\n const firstVideo = getFirstVideo();\n const videoCount = getVideoCount();\n const showTexts = props.title?.length || props.subText?.length;\n\n const analyticsData = {\n id: props.collection.id.toString(),\n name: props.collection.name,\n\n ...props.analyticsData\n };\n\n const analyticsOptions = {\n actionType: UserAction.Click,\n entity: getEntityType(props.collection),\n \n ...props.analyticsOptions\n };\n\n return (\n <div>\n <div className={`position-relative ${styles.thumbnailContainer} z-1`}>\n <AppLink\n appLink={props.appLink}\n analyticsData={analyticsData}\n analyticsOptions={analyticsOptions}\n preventFocus\n >\n {props.showMask &&\n <div className={`${styles.mask} position-absolute w-100 h-100 rounded-3 bg-dark bg-gradient z-1 bg-opacity-50 pointer-events-none`}>\n <div className={`${styles.badge} d-flex align-items-center w-fit flex-grow-0 bg-dark rounded-pill ps-1 m-2`}>\n <SvgContainer svgName={cvSvgLibrary.Play} className='svg-container text-white' />\n <p className='d-inline fw-medium text-white mb-0'>\n {props.hoverText?.length ?\n <span>{props.hoverText}</span> :\n <Text namespace={namespace} phrase='playAll' />\n }\n </p>\n </div>\n </div>\n }\n\n {firstVideo &&\n <VideoThumbnail\n video={firstVideo}\n imageOptions={props.imageOptions}\n textPosition={ThumbnailTextPosition.Independent}\n type='cosmetic'\n hideMask\n hideRating\n hideDuration\n hideVideoTypeBadge\n />\n }\n\n {!firstVideo &&\n <div className='ratio ratio-16x9 bg-light rounded-3'>\n <div className='d-flex justify-content-center align-items-center'>\n <SvgContainer svgName={cvSvgLibrary.Play} className='w-33 opacity-25 text-gray-400' />\n </div>\n </div>\n }\n\n {props.showVideoCount &&\n <div className={`${styles.badge} d-flex align-items-center w-fit bg-dark bg-opacity-75 rounded-pill position-absolute bottom-0 end-0 ps-1 m-2`}>\n <SvgContainer svgName={cvSvgLibrary.Series} className='svg-container text-white me-1' />\n <p className='d-inline fw-semibold text-white mb-0'>\n <Text namespace={namespace} phrase='videos' options={{ count: videoCount, smartCount: videoCount }} />\n </p>\n </div>\n }\n </AppLink>\n\n </div>\n \n {showTexts &&\n <div className='mt-2 d-flex flex-column'>\n {props.subText &&\n <TitleSubText title={props.subText} appLink={props.subTextAppLink}>\n {props.subText}\n </TitleSubText>\n }\n {props.title &&\n <CollectionThumbnailTitle\n title={props.collection.name}\n appLink={props.titleAppLink}\n />\n }\n </div>\n }\n </div>\n );\n}","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Core } from 'libs/common/core';\n\nimport { PillTab, PillTabSelector } from 'libs/shared/components/pill-tab-selector/PillTabSelector';\nimport { ContextService } from 'libs/shared/services/ContextService';\n\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\n\nconst namespace = 'share.sharesHeader';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nconst SHARED_BY_ME_APP_LINK = { application: AppChannels.MY_SHARES, action: Actions.MyShares.SHARED_BY_ME };\nconst SHARED_WITH_ME_APP_LINK = { application: AppChannels.MY_SHARES, action: Actions.MyShares.SHARED_WITH_ME };\n\nfunction getPillTabs(): PillTab[] {\n const currentAppLink = ContextService.getCurrentRoute()?.appLink;\n\n return [\n {\n name: getPhrase('sharedByMe'),\n onSelect: () => Core.AppLinkHelper.trigger(SHARED_BY_ME_APP_LINK),\n active: currentAppLink?.action === SHARED_BY_ME_APP_LINK.action\n },\n {\n name: getPhrase('sharedWithMe'),\n onSelect: () => Core.AppLinkHelper.trigger(SHARED_WITH_ME_APP_LINK),\n active: currentAppLink?.action === SHARED_WITH_ME_APP_LINK.action\n }\n ];\n}\n\nexport function SharesHeader(): JSX.Element {\n return (\n <div className='pb-3'>\n <h1 className='h2 mb-3'>{getPhrase('shares')}</h1>\n <PillTabSelector tabs={getPillTabs()} />\n </div>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"pillTabSelector\":\"Hdi6o\",\"tab\":\"RvNxr\",\"minWidth\":\"GHSz9\",\"radiusSmall\":\"VhJJa\",\"tabLink\":\"WFyvo\"};","var EN_US = ['second', 'minute', 'hour', 'day', 'week', 'month', 'year'];\nexport default function (diff, idx) {\n if (idx === 0)\n return ['just now', 'right now'];\n var unit = EN_US[Math.floor(idx / 2)];\n if (diff > 1)\n unit += 's';\n return [diff + \" \" + unit + \" ago\", \"in \" + diff + \" \" + unit];\n}\n//# sourceMappingURL=en_US.js.map","var ZH_CN = ['秒', '分钟', '小时', '天', '周', '个月', '年'];\nexport default function (diff, idx) {\n if (idx === 0)\n return ['刚刚', '片刻后'];\n var unit = ZH_CN[~~(idx / 2)];\n return [diff + \" \" + unit + \"\\u524D\", diff + \" \" + unit + \"\\u540E\"];\n}\n//# sourceMappingURL=zh_CN.js.map","/**\n * Created by hustcc on 18/5/20.\n * Contract: i@hust.cc\n */\n/**\n * All supported locales\n */\nvar Locales = {};\n/**\n * register a locale\n * @param locale\n * @param func\n */\nexport var register = function (locale, func) {\n Locales[locale] = func;\n};\n/**\n * get a locale, default is en_US\n * @param locale\n * @returns {*}\n */\nexport var getLocale = function (locale) {\n return Locales[locale] || Locales['en_US'];\n};\n//# sourceMappingURL=register.js.map","/**\n * Created by hustcc on 18/5/20.\n * Contract: i@hust.cc\n */\nvar SEC_ARRAY = [\n 60,\n 60,\n 24,\n 7,\n 365 / 7 / 12,\n 12,\n];\n/**\n * format Date / string / timestamp to timestamp\n * @param input\n * @returns {*}\n */\nexport function toDate(input) {\n if (input instanceof Date)\n return input;\n // @ts-ignore\n if (!isNaN(input) || /^\\d+$/.test(input))\n return new Date(parseInt(input));\n input = (input || '')\n // @ts-ignore\n .trim()\n .replace(/\\.\\d+/, '') // remove milliseconds\n .replace(/-/, '/')\n .replace(/-/, '/')\n .replace(/(\\d)T(\\d)/, '$1 $2')\n .replace(/Z/, ' UTC') // 2017-2-5T3:57:52Z -> 2017-2-5 3:57:52UTC\n .replace(/([+-]\\d\\d):?(\\d\\d)/, ' $1$2'); // -04:00 -> -0400\n return new Date(input);\n}\n/**\n * format the diff second to *** time ago, with setting locale\n * @param diff\n * @param localeFunc\n * @returns\n */\nexport function formatDiff(diff, localeFunc) {\n /**\n * if locale is not exist, use defaultLocale.\n * if defaultLocale is not exist, use build-in `en`.\n * be sure of no error when locale is not exist.\n *\n * If `time in`, then 1\n * If `time ago`, then 0\n */\n var agoIn = diff < 0 ? 1 : 0;\n /**\n * Get absolute value of number (|diff| is non-negative) value of x\n * |diff| = diff if diff is positive\n * |diff| = -diff if diff is negative\n * |0| = 0\n */\n diff = Math.abs(diff);\n /**\n * Time in seconds\n */\n var totalSec = diff;\n /**\n * Unit of time\n */\n var idx = 0;\n for (; diff >= SEC_ARRAY[idx] && idx < SEC_ARRAY.length; idx++) {\n diff /= SEC_ARRAY[idx];\n }\n /**\n * Math.floor() is alternative of ~~\n *\n * The differences and bugs:\n * Math.floor(3.7) -> 4 but ~~3.7 -> 3\n * Math.floor(1559125440000.6) -> 1559125440000 but ~~1559125440000.6 -> 52311552\n *\n * More information about the performance of algebraic:\n * https://www.youtube.com/watch?v=65-RbBwZQdU\n */\n diff = Math.floor(diff);\n idx *= 2;\n if (diff > (idx === 0 ? 9 : 1))\n idx += 1;\n return localeFunc(diff, idx, totalSec)[agoIn].replace('%s', diff.toString());\n}\n/**\n * calculate the diff second between date to be formatted an now date.\n * @param date\n * @param relativeDate\n * @returns {number}\n */\nexport function diffSec(date, relativeDate) {\n var relDate = relativeDate ? toDate(relativeDate) : new Date();\n return (+relDate - +toDate(date)) / 1000;\n}\n/**\n * nextInterval: calculate the next interval time.\n * - diff: the diff sec between now and date to be formatted.\n *\n * What's the meaning?\n * diff = 61 then return 59\n * diff = 3601 (an hour + 1 second), then return 3599\n * make the interval with high performance.\n **/\nexport function nextInterval(diff) {\n var rst = 1, i = 0, d = Math.abs(diff);\n for (; diff >= SEC_ARRAY[i] && i < SEC_ARRAY.length; i++) {\n diff /= SEC_ARRAY[i];\n rst *= SEC_ARRAY[i];\n }\n d = d % rst;\n d = d ? rst - d : rst;\n return Math.ceil(d);\n}\n//# sourceMappingURL=date.js.map","import { formatDiff, diffSec } from './utils/date';\nimport { getLocale } from './register';\n/**\n * format a TDate into string\n * @param date\n * @param locale\n * @param opts\n */\nexport var format = function (date, locale, opts) {\n // diff seconds\n var sec = diffSec(date, opts && opts.relativeDate);\n // format it with locale\n return formatDiff(sec, getLocale(locale));\n};\n//# sourceMappingURL=format.js.map","/**\n * Created by hustcc on 18/5/20.\n * Contract: i@hust.cc\n */\nimport en_US from './lang/en_US';\nimport zh_CN from './lang/zh_CN';\nimport { register } from './register';\nregister('en_US', en_US);\nregister('zh_CN', zh_CN);\nexport { format } from './format';\nexport { render, cancel } from './realtime';\nexport { register };\n//# sourceMappingURL=index.js.map"],"names":["namespace","BASE_IMAGE_CLASS_NAME","InsightsMask","className","SharedObjectImage","props","ref","el","object","fixedHeight","style","width","offsetHeight","VideoHelper","typeId","MasterType","useVideoThumbnail","image","ImageHelper","imageType","imageClassName","imageFallbackComponent","ImageFallback","type","svgContainerClassName","url","getBgColorClass","name","extraClasses","getImageProps","thumbnailMetadata","showVideoMetadata","hideBottomBar","hideDuration","hideMask","hideRating","hideVideoBadgeType","showInsightsMask","AppLink","appLink","VideoThumbnail","video","size","thumbnailSize","imageOptions","textPosition","ThumbnailTextPosition","requireMarking","Text","phrase","options","smartCount","CollectionThumbnail","collection","analyticsData","id","analyticsOptions","entity","ShareViewHelper","actionType","location","locationContext","showMask","showCollectionMask","showVideoCount","BaseImage","data","defaultProps","SHARES_TABLE_THEME","table","header","headerCell","row","cell","ShareHelper","groupByDateShared","dateToObjectMapping","Object","keys","sort","reverse","reduce","acc","date","heading","concat","mapActivityStatusToCheckMarkStatus","activityStatus","mapCheckMarkStatusToActivityStatus","checkMarkStatus","TabContents","tab","svgName","count","PillTabSelector","containerRef","borderRadius","listClassName","tabs","map","index","active","key","onClick","onSelect","onSelectTab","BaseCollectionThumbnailTitle","title","CollectionThumbnailTitle","firstVideo","collectionVideos","videos","playlist","clips","interactives","ArrayHelper","getFirstVideo","videoCount","totalCount","getVideoCount","showTexts","length","subText","toString","MasterTypeHelper","preventFocus","SvgContainer","hoverText","hideVideoTypeBadge","TitleSubText","subTextAppLink","titleAppLink","getPhrase","SHARED_BY_ME_APP_LINK","application","action","SHARED_WITH_ME_APP_LINK","SharesHeader","currentAppLink","EN_US","ZH_CN","Locales","register","locale","func","SEC_ARRAY","toDate","input","Date","isNaN","test","parseInt","trim","replace","format","opts","sec","relativeDate","diff","localeFunc","agoIn","totalSec","Math","abs","idx","floor","unit"],"sourceRoot":""}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
"use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[8536],{1704:(e,t,r)=>{r.d(t,{l:()=>s});var n=r(32735),a=r(23481),i=r(9111),l=r(13876);function c(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r<t;r++)n[r]=e[r];return n}var o=a.T.encloseNamespace("shared.confirmationPopup");function s(e){var t,r,a=(t=n.useState(!1),r=2,function(e){if(Array.isArray(e))return e}(t)||function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var n,a,i,l,c=[],o=!0,s=!1;try{if(i=(r=r.call(e)).next,0===t){if(Object(r)!==r)return;o=!1}else for(;!(o=(n=i.call(r)).done)&&(c.push(n.value),c.length!==t);o=!0);}catch(e){s=!0,a=e}finally{try{if(!o&&null!=r.return&&(l=r.return(),Object(l)!==l))return}finally{if(s)throw a}}return c}}(t,r)||function(e,t){if(e){if("string"==typeof e)return c(e,t);var r={}.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?c(e,t):void 0}}(t,r)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),s=a[0],u=a[1];return n.createElement(i.G,{title:e.title,closePopup:e.closePopup},n.createElement(n.Fragment,null,e.children,n.createElement(l.u,null,n.createElement(l.u.Cancel,{onClick:e.closePopup,variant:e.cancelButtonVariant,text:e.cancelButtonText||o("cancel")}),n.createElement(l.u.Submit,{onClick:function(){u(!0),e.onClickConfirm()},text:e.confirmButtonText||o("confirm"),variant:e.confirmButtonVariant,showSpinner:s,disabled:e.disabledConfirmButton}))))}s.defaultProps={confirmButtonVariant:"primary",cancelButtonVariant:"link"}},57266:(e,t,r)=>{r.d(t,{e:()=>l});var n=r(81886),a=r(1048),i=r(75795),l={updateParams:function(e,t){var r=i.O.getCurrentRoute().appLink,l="string"==typeof r.params?n.Q.Ab.DeserializeQueryParams(r.params):r.params;t.keysToRemove&&(l=a.t.omit(l,t.keysToRemove));var c=(null==t?void 0:t.merge)?Object.assign(Object.assign({},l),e):e,o=Object.assign(Object.assign({},r),{params:c});a.t.isEqual(r,o)||n.Q.C$.trigger(o,a.t.omit(t,["merge","keysToRemove"]))}}},68536:(e,t,r)=>{r.d(t,{x:()=>he});var n=r(32735),a=r(23481),i=r(92869),l=r(75896),c=r(69087),o=r(97958),s=r(83345),u="shared.interactionResponseList";function m(e){return n.createElement(n.Fragment,null,n.createElement(o.u,{className:"m-4"},n.createElement(o.u.Image,{src:function(){switch(e.filter){case"correct":return e.correctImageUrl;case"incorrect":return e.incorrectImageUrl;case"marking_required":return e.markingRequiredImageUrl;case"skipped":return e.skippedImageUrl}}(),className:"w-25 h-auto"}),n.createElement(o.u.Info,null,n.createElement(s.x,{namespace:u,phrase:function(){switch(e.filter){case"correct":return"correctEmptyState";case"incorrect":return"incorrectEmptyState";case"marking_required":return"markingRequiredEmptyState";case"skipped":return"skippedEmptyState"}}()}))))}function d(e){function t(t){return"rounded-pill bg-light ".concat(function(t){return t===e.filter}(t)?"bg-dark text-white":"")}return n.createElement("div",{className:"d-flex gap-2 m-3"},n.createElement("button",{className:t("marking_required"),onClick:function(){return e.toggleFilter("marking_required")}},n.createElement(s.x,{namespace:u,phrase:"markingRequired"})),n.createElement("button",{className:t("correct"),onClick:function(){return e.toggleFilter("correct")}},n.createElement(s.x,{namespace:u,phrase:"correct"})),n.createElement("button",{className:t("incorrect"),onClick:function(){return e.toggleFilter("incorrect")}},n.createElement(s.x,{namespace:u,phrase:"incorrect"})),n.createElement("button",{className:t("skipped"),onClick:function(){return e.toggleFilter("skipped")}},n.createElement(s.x,{namespace:u,phrase:"skipped"})))}var f=r(86572),g=a.T.encloseNamespace("interactives.interactionResponseListHeader");function p(e){var t,r=null===(t=e.interaction.data)||void 0===t?void 0:t.suggestedResponse;return n.createElement("div",{className:"rounded bg-white"},n.createElement("div",{className:"p-2 position-relative"},n.createElement("div",{className:"d-flex"},n.createElement(f.y,{interaction:e.interaction,iconClassName:"flex-shrink-0"})),!!r&&n.createElement("div",{className:"mt-2"},n.createElement("strong",null,g("suggestedResponse")),n.createElement("p",{className:"m-0"},r))))}var b=a.T.encloseNamespace("shared.submitMarkedAnswers");function v(e){return n.createElement("div",{className:"d-flex justify-content-end"},n.createElement("button",{className:"btn btn-outline-dark",onClick:e.submit,disabled:e.disabled},b("submitAnswers")))}var y=r(26136),h=r(39157),E=r(69186),w=r(36532),k=r(28972),I=r(83140),S=r(80845);const N={awaitingMarking:"PPNkp"};function A(e){return A="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},A(e)}function C(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r<t;r++)n[r]=e[r];return n}var x="shared.interactionResponseList",U=a.T.encloseNamespace(x);function j(e){var t,r,a,i,l=(a=n.useState(),i=2,function(e){if(Array.isArray(e))return e}(a)||function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var n,a,i,l,c=[],o=!0,s=!1;try{if(i=(r=r.call(e)).next,0===t){if(Object(r)!==r)return;o=!1}else for(;!(o=(n=i.call(r)).done)&&(c.push(n.value),c.length!==t);o=!0);}catch(e){s=!0,a=e}finally{try{if(!o&&null!=r.return&&(l=r.return(),Object(l)!==l))return}finally{if(s)throw a}}return c}}(a,i)||function(e,t){if(e){if("string"==typeof e)return C(e,t);var r={}.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?C(e,t):void 0}}(a,i)||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.")}()),u=l[0],f=l[1],g=(r=e.interaction,e.results.students.filter((function(e){return I.A.isInteractionCorrect(r,(0,S.j_)(e))===k.w.AwaitingMarking})).reduce((function(e,t){var r,n;return Object.assign(Object.assign({},e),function(e,t,r){return(t=function(e){var t=function(e){if("object"!=A(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var r=t.call(e,"string");if("object"!=A(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==A(t)?t:t+""}(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}({},(null===(r=t.user)||void 0===r?void 0:r.id)||(null===(n=t.user)||void 0===n?void 0:n.sessionId),!0))}),{})),b=Object.keys(e.markedAnswers).length;if(!(null===(t=e.results.students)||void 0===t?void 0:t.length))return n.createElement("div",{className:"d-flex flex-column h-100"},n.createElement(o.u,{className:"bg-white rounded mt-2 py-5 flex-grow-1 justify-content-center"},n.createElement(o.u.Image,{src:e.emptyStateImageUrl,size:"small"}),n.createElement(o.u.Heading,null,U("emptyStateHeading")),n.createElement(o.u.Info,{className:"w-100"},U("emptyStateDescription"))));var j=e.results.students.filter((function(t){var r=(0,S.j_)(t),n=I.A.isInteractionCorrect(e.interaction,r),a={correct:k.w.Correct,incorrect:k.w.Incorrect,marking_required:k.w.AwaitingMarking,skipped:k.w.UnAnswered};return!u||u in a&&n===a[u]}));return n.createElement(n.Fragment,null,e.reportsStyling&&n.createElement(p,{interaction:e.interaction}),n.createElement("div",{className:e.reportsStyling?"d-flex justify-content-end":"d-flex align-items-center justify-content-between border-bottom px-3 py-2"},!e.reportsStyling&&n.createElement("p",{className:"fw-semibold mb-0"},n.createElement(s.x,{namespace:x,phrase:"studentAnswers"})),!!Object.keys(g).length&&n.createElement(w.u,{id:"submitAnswers",title:U("demoOnly"),spanHack:e.isDemo},n.createElement("div",{className:"".concat(e.isDemo?"pointer-events-none":""," ").concat(e.reportsStyling?"mt-2":"")},n.createElement(v,{submit:e.submitMarkedAnswers,disabled:!b})))),n.createElement(n.Fragment,null,!e.reportsStyling&&n.createElement(d,{filter:u,toggleFilter:function(e){f(u===e?null:e)}}),!e.reportsStyling&&!j.length&&u&&n.createElement(m,{filter:u,markingRequiredImageUrl:e.markingRequiredImageUrl,correctImageUrl:e.correctImageUrl,incorrectImageUrl:e.incorrectImageUrl,skippedImageUrl:e.skippedImageUrl}),j&&n.createElement("ul",{className:"list-unstyled mb-0"},j.map((function(t,r){var a,i,l=(0,y.B)(t.user,e.anonymiseUsers),o=g[(null===(a=t.user)||void 0===a?void 0:a.id)||(null===(i=t.user)||void 0===i?void 0:i.sessionId)],s=e.reportsStyling?"bg-white p-2":"bg-white px-3 pt-3 pb-2";return o&&(s+=" ".concat(N.awaitingMarking," my-1")),n.createElement("li",{key:r,className:e.reportsStyling?"":"border-bottom"},e.reportsStyling?n.createElement(E.O,{interaction:e.interaction,studentResults:t,markedStatus:(0,h.HI)(e.interaction.id,t,e.markedAnswers),markInteraction:e.addMarkedAnswers,imageCdnUrl:e.imageCdnUrl,showStudentDetails:!0,anonymisedUserName:l,className:s,showFeedback:!0,reportsStyling:!0,responseComponentClass:"mx-n2"}):n.createElement(c.d,{interaction:e.interaction,studentResults:t,markedStatus:(0,h.HI)(e.interaction.id,t,e.markedAnswers),markInteraction:e.addMarkedAnswers,imageCdnUrl:e.imageCdnUrl,showStudentDetails:!0,anonymisedUserName:l,className:s,showFeedback:!0}))}))),e.reportsStyling&&!!g.length&&n.createElement("div",{className:"mt-2"},n.createElement(v,{submit:e.submitMarkedAnswers,disabled:!b}))))}var T=r(34079);function O(e){var t;return n.createElement("div",null,n.createElement("p",{className:"mb-0"},(t=e.interaction.data.sentence)?t.split(/({\d+})/).map((function(t,r){var a=t.match(/{(\d+)}/);if(a){var i=a[1],l=e.interaction.actionableItems.find((function(e){return+e.order==+i}));if(l)return n.createElement("span",{className:"bg-white border border-gray-300 rounded p-1 lh-lg",key:r},l.name)}return t})):""))}var M=r(7730);const R={row:"fXno_",answerImage:"pDAuW",answerWidth:"YHK27"};function q(e){var t,r;return(null===(r=l.m.first(null===(t=e.interaction)||void 0===t?void 0:t.actionableItems).data)||void 0===r?void 0:r.imageUrl)?n.createElement("div",{className:R.answerWidth},n.createElement(M.n,{interaction:e.interaction,size:"sm",showFeedback:!1,showCorrectnessIcons:!0,isDisplayOnly:!0})):n.createElement("ul",{className:"".concat(R.answerWidth," list-unstyled row g-2")},e.interaction.actionableItems.map((function(t){return n.createElement("li",{key:t.id,className:"col-12"},n.createElement("div",{className:"".concat(t.isCorrect?"bg-light-green border-green":"bg-light-red border-red"," rounded border py-1 px-2 m-0")},n.createElement("span",{className:"fw-semibold"},e.indexToLetter(t.order),". "),n.createElement("span",null,t.name)))})))}var P="shared.questionTable";function W(e){var t,r=null===(t=e.interaction.data)||void 0===t?void 0:t.suggestedResponse;return r?n.createElement("div",{className:"".concat(R.answerWidth," bg-light-blue rounded p-2 mb-2")},n.createElement("div",{className:"d-flex justify-content-between"},n.createElement("p",{className:"fw-semibold mb-2"},n.createElement(s.x,{namespace:P,phrase:"suggestedResponse"}))),n.createElement("p",{className:"mb-0"},r)):n.createElement(n.Fragment,null)}function B(e){return n.createElement("ul",{className:"list-unstyled d-flex gap-2"},e.interaction.actionableItems.map((function(t){return n.createElement("li",{key:t.id,className:"".concat(t.isCorrect?"bg-light-green border-green":"bg-light-red border-red"," rounded border px-2 py-1 mb-2 w-50")},n.createElement("span",{className:"fw-semibold"},e.indexToLetter(t.order),". "),n.createElement("span",null,t.name))})))}var D=r(38129);function F(e){var t=function(){switch(e.interaction.typeId){case D.Z9.MultipleChoice:return n.createElement(q,{interaction:e.interaction,indexToLetter:z});case D.Z9.TrueOrFalse:return n.createElement(B,{interaction:e.interaction,indexToLetter:z});case D.Z9.ShortAnswer:return n.createElement(W,{interaction:e.interaction});case D.Z9.MissingWord:return n.createElement(O,{interaction:e.interaction});default:return null}}();return t?n.createElement("div",{className:"w-100 mt-3"},t):n.createElement(n.Fragment,null)}var L=r(40782);function _(e){return _="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},_(e)}var Z=a.T.encloseNamespace("shared.questionTable");function H(e,t,r){var n=e.cells.find((function(e){return e.column.id===r})).value,a=t.cells.find((function(e){return e.column.id===r})).value;return n.awaitingMarking?-1:a.awaitingMarking||n.percentCorrect>=a.percentCorrect?1:-1}function Q(e){var t;return n.createElement("div",{className:"d-flex ".concat(null!==(t=e.className)&&void 0!==t?t:"")},e.children)}function K(e){return n.createElement(Q,{className:e.column.isSorted&&"fw-bold"},Z(e.phraseKey))}function z(e){return String.fromCharCode(e+"A".charCodeAt(0))}var V=r(8246),$=a.T.encloseNamespace("shared.questionTable");function G(e,t){var r=e.actionableItems.map((function(t,r){return{id:t.id,label:e.typeId===D.Z9.MultipleChoice?z(r):t.name,isCorrect:t.isCorrect,count:0}}));return t.students.forEach((function(t){var n=l.m.last(t.results).attempts,a=l.m.findWhere(n,{id:e.id});a&&a.answers.forEach((function(e){var t=l.m.findWhere(r,{id:e.id});t&&t.count++}))})),r}function J(e,t){var r=e.actionableItems.map((function(e){return{id:e.id,label:e.name,isCorrect:e.isCorrect,count:0}}));return r.push({label:$("incorrect"),count:0,isCorrect:!1}),t.students.forEach((function(t){var n=l.m.last(t.results).attempts,a=l.m.findWhere(n,{id:e.id});a&&a.answers.forEach((function(e){var t=l.m.findWhere(r,{id:e.id});t&&e.status===V.N.Correct?t.count++:l.m.findWhere(r,{label:$("incorrect")}).count++}))})),r}function X(e,t){var r=[{label:$("correct"),isCorrect:!0,count:0},{label:$("incorrect"),isCorrect:!1,count:0}];return t.students.forEach((function(t){var n=l.m.last(t.results).attempts,a=l.m.findWhere(n,{id:e.id});a&&a.answers.forEach((function(e){if(e.status===V.N.Correct&&l.m.findWhere(r,{label:$("correct")}).count++,e.status===V.N.Incorrect&&l.m.findWhere(r,{label:$("incorrect")}).count++,e.status===V.N.PendingReview){var t=l.m.findWhere(r,{label:$("pending")});t||(r.push({label:$("pending"),count:0,isCorrect:!1}),t=l.m.findWhere(r,{label:$("pending")})),t.count++}}))})),r}var Y=r(83914),ee=r(35223),te="shared.questionTable",re=a.T.encloseNamespace(te);function ne(e){var t=function(){if(e.interaction&&e.results){var t;switch(e.interaction.typeId){case D.Z9.ShortAnswer:case D.Z9.Illustration:t=X;break;case D.Z9.MissingWord:t=J;break;case D.Z9.MultipleChoice:case D.Z9.TrueOrFalse:t=G}return t(e.interaction,e.results)}}(),r=null==t?void 0:t.reduce((function(e,t){return t.count>e?t.count:e}),0);function a(e){var t="border rounded me-2";return e.count?e.label===re("pending")?"".concat(t," border-blue bg-light-blue"):e.isCorrect?"".concat(t," border-green bg-light-green"):"".concat(t," border-red bg-light-red"):"".concat(t," border bg-light px-1")}return n.createElement("div",{className:"border border rounded p-3 mb-3"},n.createElement("div",{className:"d-flex align-items-center gap-2 mb-3"},n.createElement("div",{className:"rounded-circle bg-light-teal text-teal"},n.createElement(Y.x,{svgName:ee.vn.Lightbulb,size:Y.S.Large})),n.createElement("h2",{className:"h6 mb-0"},n.createElement("span",null,n.createElement(s.x,{namespace:te,phrase:"questionSummary"})))),n.createElement("div",{className:"d-flex gap-2"},n.createElement("div",{className:"max-w-25"},null==t?void 0:t.map((function(e){return n.createElement("p",{key:e.label,className:"text-truncate mb-2"},e.label)}))),n.createElement("div",{className:"flex-grow-1"},null==t?void 0:t.map((function(t,i){return n.createElement("div",{key:"".concat(e.interaction.id).concat(i),className:"d-flex mb-2"},n.createElement("div",{className:a(t),style:{width:"".concat(t.count/r*100,"%"),height:20}}),n.createElement("span",null,t.count))})))))}var ae=a.T.encloseNamespace("shared.selectedInteractionEmptyState");function ie(e){return n.createElement(o.u,{className:"rounded h-100 bg-white justify-content-center py-4"},n.createElement(o.u.Image,{src:e.emptyStateUrl,size:"small"}),n.createElement(o.u.Info,{className:"w-100"},ae("emptyStateText")))}var le=r(97364),ce=r(6748),oe=r(57266);function se(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r<t;r++)n[r]=e[r];return n}function ue(e){var t,r,a,c,o=(a=n.useState((0,le.P)(e.sortBy,"correctlyAnswered")),c=2,function(e){if(Array.isArray(e))return e}(a)||function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var n,a,i,l,c=[],o=!0,s=!1;try{if(i=(r=r.call(e)).next,0===t){if(Object(r)!==r)return;o=!1}else for(;!(o=(n=i.call(r)).done)&&(c.push(n.value),c.length!==t);o=!0);}catch(e){s=!0,a=e}finally{try{if(!o&&null!=r.return&&(l=r.return(),Object(l)!==l))return}finally{if(s)throw a}}return c}}(a,c)||function(e,t){if(e){if("string"==typeof e)return se(e,t);var r={}.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?se(e,t):void 0}}(a,c)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),s=o[0],u=o[1],m=function(e,t,r,a){return n.useMemo((function(){var r=(0,S.Q)(e),n=r.reduce((function(e,t,r){return Object.assign(Object.assign({},e),function(e,t,r){return(t=function(e){var t=function(e){if("object"!=_(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var r=t.call(e,"string");if("object"!=_(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==_(t)?t:t+""}(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}({},t.id,r))}),{}),i=r.map((function(e){return Object.assign(Object.assign({},e),{questionNumber:n[e.id],resultsSummary:(0,h.nq)(e,t)})}));if("correctlyAnswered"===(null==a?void 0:a.id)){var c=l.m.sortBy(i,(function(e){return e.resultsSummary.awaitingMarking?-1:e.resultsSummary.percentCorrect}));return a.desc?c.reverse():c}return i}),[r,a])}(e.interactive,e.results,e.refreshTable,l.m.first(s)),d=e.selectedInteractionId&&(0,h.Zs)(e.interactive,e.selectedInteractionId);return n.createElement("div",{className:"row"},n.createElement("div",{className:"col-6 flex-grow-1"},n.createElement(ce.i,{key:e.selectedInteractionId,columns:(r=e.showAnswersInTable,[{Header:function(e){var t=e.column;return n.createElement(K,{column:t,phraseKey:"#"})},accessor:"questionNumber",id:"index",Cell:function(e){var t=e.row.original.questionNumber;return n.createElement(Q,null,t+1,".")},width:15,disableSortBy:!0},{Header:function(e){var t=e.column;return n.createElement(K,{column:t,phraseKey:"question"})},accessor:"data",Cell:function(e){var t=e.row.original,a=e.initialState.selectedRowIds,i=null==a?void 0:a[null==t?void 0:t.id];return n.createElement(Q,{className:"flex-column"},n.createElement("div",{className:"".concat(i?"":"clamp-1"," pe-2")},n.createElement(f.y,{interaction:t,containerClassName:"d-flex"})),r&&i&&n.createElement(F,{interaction:t}))},disableSortBy:!0},{Header:function(e){var t=e.column;return n.createElement(K,{column:t,phraseKey:"score"})},accessor:"resultsSummary",id:"correctlyAnswered",Cell:function(e){var t=e.value,r=t.percentCorrect;return t.awaitingMarking?n.createElement(T.O,{title:Z("markingRequired"),className:"flex-grow-1",tooltipClassName:"d-block",showLabel:!0}):n.createElement(L.O,{percentage:r,layout:L.I.LabelBefore})},width:60,sortDescFirst:!0,sortType:H}]),data:m,theme:e.theme,onSelectRow:function(e){var t=e.original;i.t.preventScrollTop(),oe.e.updateParams({interactionId:t.id},{merge:!0})},initialSelectedRowIds:d?[d.id]:null,getRowId:function(e){return e.id},enableSort:!0,manualSort:!0,onSort:u,initialSortBy:s})),n.createElement("div",{className:"col-6 d-flex flex-column"},!e.reportsStyling&&e.selectedInteractionId&&!!(null===(t=e.results.students)||void 0===t?void 0:t.length)&&n.createElement(ne,{interaction:d,results:e.results}),n.createElement("div",{className:"rounded flex-grow-1 ".concat(e.reportsStyling?"":"border")},!!d&&n.createElement(j,{interaction:d,results:e.results,markedAnswers:e.markedAnswers,addMarkedAnswers:e.addMarkedAnswers,submitMarkedAnswers:e.submitMarkedAnswers,imageCdnUrl:e.imageCdnUrl,anonymiseUsers:e.anonymiseUsers,emptyStateImageUrl:e.emptyStateImageUrl,markingRequiredImageUrl:e.markingRequiredImageUrl,correctImageUrl:e.correctImageUrl,incorrectImageUrl:e.incorrectImageUrl,skippedImageUrl:e.skippedImageUrl,reportsStyling:e.reportsStyling,isDemo:e.isDemo}),!d&&n.createElement(ie,{emptyStateUrl:e.selectQuestionImageUrl}))))}var me=r(9193),de=r(1704),fe=r(99742);const ge={partialInsights:"mhxg4"};function pe(){return n.createElement("div",null,n.createElement("div",{className:"row g-3 mb-5"},n.createElement("div",{className:"col-6"},n.createElement("div",{className:"".concat(ge.partialInsights," rounded partial-loading-background")})),n.createElement("div",{className:"col-6"},n.createElement("div",{className:"".concat(ge.partialInsights," rounded partial-loading-background")}))))}function be(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r<t;r++)n[r]=e[r];return n}var ve=a.T.encloseNamespace("shared.interactiveInsightsQuestions"),ye={table:"bg-white rounded border h-100 pb-2",header:"border-bottom px-3 py-2 mb-2",headerCell:"d-flex align-items-center",cell:"",row:"px-3 py-2 bg-light-blue-hover",selectedRow:"bg-gray-100",sortIndicator:"ms-2"};function he(e){var t,r,a,i,l,c=(i=n.useState(!1),l=2,function(e){if(Array.isArray(e))return e}(i)||function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var n,a,i,l,c=[],o=!0,s=!1;try{if(i=(r=r.call(e)).next,0===t){if(Object(r)!==r)return;o=!1}else for(;!(o=(n=i.call(r)).done)&&(c.push(n.value),c.length!==t);o=!0);}catch(e){s=!0,a=e}finally{try{if(!o&&null!=r.return&&(l=r.return(),Object(l)!==l))return}finally{if(s)throw a}}return c}}(i,l)||function(e,t){if(e){if("string"==typeof e)return be(e,t);var r={}.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?be(e,t):void 0}}(i,l)||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.")}()),o=c[0],s=c[1],u=(0,me.D)(null===(t=e.interactive)||void 0===t?void 0:t.id,null===(r=e.interactiveMetadata)||void 0===r?void 0:r.id,(function(){return s(!1)})),m=u.markedAnswers,d=u.addMarkedAnswers,f=u.submitMarkedAnswers;return n.createElement(n.Fragment,null,!e.hasDataLoaded&&n.createElement(pe,null),e.hasDataLoaded&&n.createElement(ue,{interactive:e.interactive,results:e.results,markedAnswers:m,addMarkedAnswers:d,submitMarkedAnswers:function(){return s(!0)},imageCdnUrl:e.config.imageCdnUrl,selectedInteractionId:e.interactionId,refreshTable:e.isFetching,emptyStateImageUrl:fe.W.Insights.NO_RESPONSES,selectQuestionImageUrl:fe.W.Insights.NO_DATA,anonymiseUsers:e.anonymiseUsers,sortBy:e.sortBy,showAnswersInTable:!0,theme:ye,correctImageUrl:fe.W.Insights.JIGSAW,incorrectImageUrl:fe.W.Insights.RED_JIGSAW,skippedImageUrl:fe.W.Insights.SKIPPED,markingRequiredImageUrl:fe.W.Insights.CLIPBOARD,isDemo:e.isDemo}),o&&n.createElement(de.l,{title:ve("markPopupTitle",{smartCount:null!==(a=Object.keys(m).length)&&void 0!==a?a:0}),closePopup:function(){return s(!1)},confirmButtonText:ve("submit"),confirmButtonVariant:"dark",onClickConfirm:f},n.createElement("p",null,ve("markPopupBody"))))}}}]);
|
|
2
|
-
//# sourceMappingURL=8536-f75009dd87-lite.chunk.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"scripts/8536-f75009dd87-lite.chunk.js","mappings":"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","sources":["file:///app/packages/libs/shared/src/components/confirmation-popup/ConfirmationPopup.tsx","file:///app/packages/libs/shared/src/utils/AppRouteHelper.ts","file:///app/packages/libs/shared/src/apps/analytics/components/questions-list/interaction-response-list/InteractionResponseListFilters.tsx","file:///app/packages/libs/shared/src/apps/analytics/components/questions-list/interaction-response-list/InteractionResponseListHeader.tsx","file:///app/packages/libs/shared/src/apps/analytics/components/questions-list/submit-marked-answers/SubmitMarkedAnswers.tsx","file:///app/packages/libs/shared/src/apps/analytics/components/questions-list/interaction-response-list/interaction-response-list.scss","file:///app/packages/libs/shared/src/apps/analytics/components/questions-list/interaction-response-list/InteractionResponseList.tsx","file:///app/packages/libs/shared/src/apps/analytics/components/questions-list/question-table/question-table-answers/QuestionTableMissingWord.tsx","file:///app/packages/libs/shared/src/apps/analytics/components/questions-list/question-table/question-table-answers/question-table-answers.scss","file:///app/packages/libs/shared/src/apps/analytics/components/questions-list/question-table/question-table-answers/QuestionTableMultipleChoice.tsx","file:///app/packages/libs/shared/src/apps/analytics/components/questions-list/question-table/question-table-answers/QuestionTableShortAnswer.tsx","file:///app/packages/libs/shared/src/apps/analytics/components/questions-list/question-table/question-table-answers/QuestionTableTrueOrFalse.tsx","file:///app/packages/libs/shared/src/apps/analytics/components/questions-list/question-table/question-table-answers/QuestionTableAnswers.tsx","file:///app/packages/libs/shared/src/apps/analytics/components/questions-list/question-table/QuestionTableUtils.tsx","file:///app/packages/libs/shared/src/apps/analytics/components/questions-list/question-table/question-results-summary/QuestionResultsSummaryUtils.ts","file:///app/packages/libs/shared/src/apps/analytics/components/questions-list/question-table/question-results-summary/QuestionResultsSummary.tsx","file:///app/packages/libs/shared/src/apps/analytics/components/questions-list/selected-interaction-empty-state/SelectedInteractionEmptyState.tsx","file:///app/packages/libs/shared/src/apps/analytics/components/questions-list/question-table/QuestionTable.tsx","file:///app/packages/projects/lite/src/apps/my-shares/components/interactive-insights-questions/partial-loading/partial-interactive-insights-questions.scss","file:///app/packages/projects/lite/src/apps/my-shares/components/interactive-insights-questions/partial-loading/PartialInteractiveInsightsQuestions.tsx","file:///app/packages/projects/lite/src/apps/my-shares/components/interactive-insights-questions/InteractiveInsightsQuestions.tsx"],"sourcesContent":["import * as React from 'react';\nimport { ButtonProps } from 'react-bootstrap';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { Popup } from 'libs/shared/components/popup/Popup';\nimport { PopupButtons } from 'libs/shared/components/popup/PopupButtons';\nimport { PopupViewProps } from 'libs/shared/interfaces';\n\nconst namespace = 'shared.confirmationPopup';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface ConfirmationPopupProps {\n title: string;\n onClickConfirm: () => void;\n confirmButtonText?: string;\n cancelButtonText?: string;\n confirmButtonVariant?: ButtonProps['variant'];\n cancelButtonVariant?: ButtonProps['variant'];\n disabledConfirmButton?: boolean;\n}\n\nConfirmationPopup.defaultProps = {\n confirmButtonVariant: 'primary',\n cancelButtonVariant: 'link'\n};\n\ntype PropTypes = React.PropsWithChildren<ConfirmationPopupProps & PopupViewProps>;\n\nexport function ConfirmationPopup(props: PropTypes): React.ReactElement {\n const [ showButtonSpinner, setShowButtonSpinner ] = React.useState(false);\n\n return (\n <Popup title={props.title} closePopup={props.closePopup}>\n <>\n {props.children}\n <PopupButtons>\n <PopupButtons.Cancel\n onClick={props.closePopup}\n variant={props.cancelButtonVariant}\n text={props.cancelButtonText || getPhrase('cancel')}\n />\n <PopupButtons.Submit\n onClick={() => { setShowButtonSpinner(true); props.onClickConfirm(); }}\n text={props.confirmButtonText || getPhrase('confirm')}\n variant={props.confirmButtonVariant}\n showSpinner={showButtonSpinner}\n disabled={props.disabledConfirmButton}\n />\n </PopupButtons>\n </>\n </Popup>\n );\n}","import { Core } from 'libs/common/core';\nimport { HashObject } from 'libs/common/react/interfaces';\nimport { ObjectHelper } from 'libs/common/react/utils/ObjectHelper';\n\nimport { ContextService } from 'libs/shared/services/ContextService';\n\ninterface UpdateParamsOptions extends Core.AppLinkOptions {\n merge?: boolean;\n keysToRemove?: string[]\n}\n\nexport const AppRouteHelper = {\n /**\n * Utility to update the params on the current appRoute.\n * \n * This is built on top of ContextService rather than build into AppLink\n * as we will generally only want to update params on appRoutes, not appLinks.\n */\n updateParams(params: HashObject, options?: UpdateParamsOptions): void {\n const { appLink } = ContextService.getCurrentRoute();\n\n let currentParams = typeof(appLink.params) === 'string'\n ? Core.LocationUtils.DeserializeQueryParams(appLink.params)\n : appLink.params as HashObject;\n\n if (options.keysToRemove)\n currentParams = ObjectHelper.omit(currentParams, options.keysToRemove);\n\n const updatedParams = options?.merge\n ? { ...currentParams, ...params }\n : params;\n\n const updatedAppLink = {\n ...appLink,\n params: updatedParams\n };\n\n /**\n * This prevents us pointlessly re-triggering if we're already on the right applink.\n */\n if (ObjectHelper.isEqual(appLink, updatedAppLink))\n return;\n \n Core.AppLinkHelper.trigger(updatedAppLink, ObjectHelper.omit(options, [ 'merge', 'keysToRemove' ]));\n }\n};","import React from 'react';\n\nimport { EmptyState } from 'libs/shared/components/empty-states/EmptyState';\nimport { Text } from 'libs/shared/components/text/Text';\n\nconst namespace = 'shared.interactionResponseList';\n\nexport type InteractionResponseFilterType = 'marking_required' | 'correct' | 'incorrect' | 'skipped';\n\ninterface InteractionResponseListFiltersEmptyStatesProps {\n filter: InteractionResponseFilterType;\n markingRequiredImageUrl: string;\n correctImageUrl: string;\n incorrectImageUrl: string;\n skippedImageUrl: string;\n}\n\nexport function InteractionResponseListFiltersEmptyStates(props: InteractionResponseListFiltersEmptyStatesProps) {\n function getFilterEmptyStateImageUrl() {\n switch (props.filter) {\n case 'correct': return props.correctImageUrl;\n case 'incorrect': return props.incorrectImageUrl;\n case 'marking_required': return props.markingRequiredImageUrl;\n case 'skipped': return props.skippedImageUrl;\n }\n }\n\n function getFilterEmptyStatePhrase() {\n switch (props.filter) {\n case 'correct': return 'correctEmptyState';\n case 'incorrect': return 'incorrectEmptyState';\n case 'marking_required': return 'markingRequiredEmptyState';\n case 'skipped': return 'skippedEmptyState';\n }\n }\n\n return (\n <>\n <EmptyState className='m-4'>\n <EmptyState.Image src={getFilterEmptyStateImageUrl()} className='w-25 h-auto' />\n <EmptyState.Info>\n <Text namespace={namespace} phrase={getFilterEmptyStatePhrase()} />\n </EmptyState.Info>\n </EmptyState>\n </>\n );\n}\n\ninterface InteractionResponseListFiltersProps {\n filter: InteractionResponseFilterType;\n toggleFilter: (filter: InteractionResponseFilterType) => void\n}\n\nexport function InteractionResponseListFilters(props: InteractionResponseListFiltersProps) {\n function isFilterSelected(filterButton: InteractionResponseFilterType) {\n return filterButton === props.filter;\n }\n\n function getFilterClassName(filterButton: InteractionResponseFilterType) {\n return `rounded-pill bg-light ${isFilterSelected(filterButton) ? 'bg-dark text-white' : ''}`;\n }\n\n return (\n\n <div className='d-flex gap-2 m-3'>\n <button className={getFilterClassName('marking_required')} onClick={() => props.toggleFilter('marking_required')}>\n <Text namespace={namespace} phrase='markingRequired' />\n </button>\n <button className={getFilterClassName('correct')} onClick={() => props.toggleFilter('correct')}>\n <Text namespace={namespace} phrase='correct' />\n </button>\n <button className={getFilterClassName('incorrect')} onClick={() => props.toggleFilter('incorrect')}>\n <Text namespace={namespace} phrase='incorrect' />\n </button>\n <button className={getFilterClassName('skipped')} onClick={() => props.toggleFilter('skipped')}>\n <Text namespace={namespace} phrase='skipped' />\n </button>\n </div>\n );\n}","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { InteractionLabel } from 'libs/shared/components/interactive-questions/InteractionLabel';\nimport { Interaction } from 'libs/shared/interfaces';\n\nconst namespace = 'interactives.interactionResponseListHeader';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface InteractionResponseListHeaderProps {\n interaction: Interaction;\n}\n\nexport function InteractionResponseListHeader(props: InteractionResponseListHeaderProps): JSX.Element {\n const suggestedResponse = props.interaction.data?.suggestedResponse;\n\n return (\n <div className='rounded bg-white'>\n <div className='p-2 position-relative'>\n <div className='d-flex'>\n <InteractionLabel\n interaction={props.interaction}\n iconClassName='flex-shrink-0'\n />\n </div>\n {!!suggestedResponse &&\n <div className='mt-2'>\n <strong>{getPhrase('suggestedResponse')}</strong>\n <p className='m-0'>{suggestedResponse}</p>\n </div>\n }\n </div>\n </div>\n );\n}","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nconst namespace = 'shared.submitMarkedAnswers';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface SubmitMarkedAnswersProps {\n submit: () => void;\n disabled: boolean\n}\n\nexport function SubmitMarkedAnswers(props: SubmitMarkedAnswersProps): JSX.Element {\n return (\n <div className='d-flex justify-content-end'>\n <button\n className='btn btn-outline-dark'\n onClick={props.submit}\n disabled={props.disabled}\n >\n {getPhrase('submitAnswers')}\n </button>\n </div>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"awaitingMarking\":\"PPNkp\"};","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { InteractionResponseItem } from 'libs/shared/apps/analytics/components/questions-list/interaction-response-item/InteractionResponseItem';\nimport { InteractionResponseFilterType, InteractionResponseListFilters, InteractionResponseListFiltersEmptyStates } from 'libs/shared/apps/analytics/components/questions-list/interaction-response-list/InteractionResponseListFilters';\nimport { InteractionResponseListHeader } from 'libs/shared/apps/analytics/components/questions-list/interaction-response-list/InteractionResponseListHeader';\nimport { SubmitMarkedAnswers } from 'libs/shared/apps/analytics/components/questions-list/submit-marked-answers/SubmitMarkedAnswers';\nimport { MarkedAnswerHash } from 'libs/shared/apps/analytics/hooks/UseMarkAnswers';\nimport { anonymiseUserName } from 'libs/shared/apps/analytics/utils/AnonymiseUserUtils';\nimport { getMarkedStatus } from 'libs/shared/apps/analytics/utils/InteractiveUtils';\nimport { EmptyState } from 'libs/shared/components/empty-states/EmptyState';\nimport { InteractionResponse } from 'libs/shared/components/interaction-response/InteractionResponse';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { Tooltip } from 'libs/shared/components/tooltip/Tooltip';\nimport { InteractionCorrectness } from 'libs/shared/enums/InteractionCorrectness';\nimport { InteractiveAnswerStatus } from 'libs/shared/enums/InteractiveAnswerStatus';\nimport { Interaction, InteractiveResultSet, StudentAnswer, StudentResults } from 'libs/shared/interfaces';\nimport { InteractiveCorrectnessHelper } from 'libs/shared/utils/InteractiveCorrectnessHelper';\nimport { getStudentResult } from 'libs/shared/utils/InteractiveHelper';\n\nimport styles from './interaction-response-list.scss';\n\nconst namespace = 'shared.interactionResponseList';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nfunction getResponsesToMark(\n interaction: Interaction,\n studentResults: StudentResults[]\n): HashObject {\n const responsesToMark = studentResults.filter(s => {\n const correctness = InteractiveCorrectnessHelper.isInteractionCorrect(\n interaction,\n getStudentResult(s)\n );\n return correctness === InteractionCorrectness.AwaitingMarking;\n });\n\n return responsesToMark.reduce((acc, s) => ({\n ...acc,\n [s.user?.id || s.user?.sessionId]: true\n }), {});\n}\n\ninterface InteractionResponseListProps {\n interaction: Interaction\n results: InteractiveResultSet;\n markedAnswers: MarkedAnswerHash;\n addMarkedAnswers: (answer: StudentAnswer[], status: InteractiveAnswerStatus) => void;\n submitMarkedAnswers: () => void;\n imageCdnUrl: string;\n anonymiseUsers: boolean;\n reportsStyling?: boolean;\n emptyStateImageUrl: string;\n markingRequiredImageUrl: string;\n correctImageUrl: string;\n incorrectImageUrl: string;\n skippedImageUrl: string;\n isDemo?: boolean;\n}\n\nexport function InteractionResponseList(props: InteractionResponseListProps): JSX.Element {\n const [ filter, setFilter ] = React.useState<InteractionResponseFilterType>();\n\n const responsesToMark = getResponsesToMark(props.interaction, props.results.students);\n const numMarkedAnswers = Object.keys(props.markedAnswers).length;\n\n if (!props.results.students?.length)\n return (\n <div className='d-flex flex-column h-100'>\n <EmptyState className='bg-white rounded mt-2 py-5 flex-grow-1 justify-content-center'>\n <EmptyState.Image src={props.emptyStateImageUrl} size='small' />\n <EmptyState.Heading>\n {getPhrase('emptyStateHeading')}\n </EmptyState.Heading>\n <EmptyState.Info className='w-100'>\n {getPhrase('emptyStateDescription')}\n </EmptyState.Info>\n </EmptyState>\n </div>\n );\n\n\n function toggleFilter(selectedFilter: InteractionResponseFilterType) {\n setFilter(filter === selectedFilter ? null : selectedFilter);\n }\n\n function filterStudentResults() {\n return props.results.students.filter(s => {\n const result = getStudentResult(s);\n\n const correctness = InteractiveCorrectnessHelper.isInteractionCorrect(props.interaction, result);\n\n const filterMap = {\n correct: InteractionCorrectness.Correct,\n incorrect: InteractionCorrectness.Incorrect,\n marking_required: InteractionCorrectness.AwaitingMarking,\n skipped: InteractionCorrectness.UnAnswered\n };\n\n return !filter || (filter in filterMap && correctness === filterMap[filter]);\n });\n }\n\n const filteredStudentResults = filterStudentResults();\n\n return (\n <>\n {props.reportsStyling && <InteractionResponseListHeader interaction={props.interaction} />}\n <div className={props.reportsStyling\n ? 'd-flex justify-content-end'\n : 'd-flex align-items-center justify-content-between border-bottom px-3 py-2'\n }>\n {!props.reportsStyling && <p className='fw-semibold mb-0'><Text namespace={namespace} phrase='studentAnswers' /></p>}\n {!!Object.keys(responsesToMark).length &&\n <Tooltip id='submitAnswers' title={getPhrase('demoOnly')} spanHack={props.isDemo}>\n <div className={`${props.isDemo ? 'pointer-events-none' : ''} ${props.reportsStyling ? 'mt-2' : ''}`}>\n <SubmitMarkedAnswers submit={props.submitMarkedAnswers} disabled={!numMarkedAnswers} />\n </div>\n </Tooltip>\n }\n </div>\n <>\n {!props.reportsStyling && <InteractionResponseListFilters filter={filter} toggleFilter={toggleFilter} />}\n\n {!props.reportsStyling && !filteredStudentResults.length && filter && (\n <InteractionResponseListFiltersEmptyStates\n filter={filter}\n markingRequiredImageUrl={props.markingRequiredImageUrl}\n correctImageUrl={props.correctImageUrl}\n incorrectImageUrl={props.incorrectImageUrl}\n skippedImageUrl={props.skippedImageUrl}\n />\n )}\n \n {filteredStudentResults && (\n <ul className='list-unstyled mb-0'>\n {filteredStudentResults.map((s, idx) => {\n const anonymisedUserName = anonymiseUserName(s.user, props.anonymiseUsers);\n const markingRequired = responsesToMark[s.user?.id || s.user?.sessionId];\n\n let className = props.reportsStyling ? 'bg-white p-2' : 'bg-white px-3 pt-3 pb-2';\n\n if (markingRequired)\n className += ` ${styles.awaitingMarking} my-1`;\n\n return (\n <li key={idx} className={props.reportsStyling ? '' : 'border-bottom'}>\n {props.reportsStyling ? (\n <InteractionResponse\n interaction={props.interaction}\n studentResults={s}\n markedStatus={getMarkedStatus(props.interaction.id, s, props.markedAnswers)}\n markInteraction={props.addMarkedAnswers}\n imageCdnUrl={props.imageCdnUrl}\n showStudentDetails\n anonymisedUserName={anonymisedUserName}\n className={className}\n showFeedback\n reportsStyling\n responseComponentClass='mx-n2'\n />\n ) : (\n <InteractionResponseItem\n interaction={props.interaction}\n studentResults={s}\n markedStatus={getMarkedStatus(props.interaction.id, s, props.markedAnswers)}\n markInteraction={props.addMarkedAnswers}\n imageCdnUrl={props.imageCdnUrl}\n showStudentDetails\n anonymisedUserName={anonymisedUserName}\n className={className}\n showFeedback\n />\n )}\n </li>\n );\n })}\n </ul>\n )}\n {props.reportsStyling && !!responsesToMark.length &&\n <div className='mt-2'>\n <SubmitMarkedAnswers submit={props.submitMarkedAnswers} disabled={!numMarkedAnswers} />\n </div>\n }\n </>\n </>\n );\n}","import React from 'react';\n\nimport { QuestionTableAnswersProps } from 'libs/shared/apps/analytics/components/questions-list/question-table/question-table-answers/QuestionTableAnswers';\n\nexport function QuestionTableMissingWord(props: QuestionTableAnswersProps) {\n const replacePlaceholders = (str: string) => {\n if (!str) return '';\n\n return str.split(/({\\d+})/).map((part, index) => {\n const match = part.match(/{(\\d+)}/);\n\n if (match) {\n const key = match[1];\n\n const replacement = props.interaction.actionableItems.find(answer => +answer.order === +key);\n\n\n if (replacement) {\n return <span className='bg-white border border-gray-300 rounded p-1 lh-lg' key={index}>{replacement.name}</span>;\n }\n }\n\n return part;\n });\n };\n\n return (\n <div>\n <p className='mb-0'>{replacePlaceholders(props.interaction.data.sentence)}</p>\n </div>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"row\":\"fXno_\",\"answerImage\":\"pDAuW\",\"answerWidth\":\"YHK27\"};","import React from 'react';\n\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\n\nimport { QuestionTableAnswersProps } from 'libs/shared/apps/analytics/components/questions-list/question-table/question-table-answers/QuestionTableAnswers';\nimport { MultipleChoiceInteractionAnswers } from 'libs/shared/components/interaction-answers/multiple-choice/MultipleChoiceInteractionAnswers';\n\nimport styles from './question-table-answers.scss';\n\nexport function QuestionTableMultipleChoice(props: QuestionTableAnswersProps) {\n const hasImages = !!ArrayHelper.first(props.interaction?.actionableItems).data?.imageUrl;\n\n if (!hasImages) {\n return (\n <ul className={`${styles.answerWidth} list-unstyled row g-2`}>\n {props.interaction.actionableItems.map(option => {\n return (\n <li key={option.id} className='col-12'>\n <div className={`${option.isCorrect ? 'bg-light-green border-green' : 'bg-light-red border-red'} rounded border py-1 px-2 m-0`}>\n <span className='fw-semibold'>{props.indexToLetter(option.order)}. </span>\n <span>{option.name}</span>\n </div>\n </li>\n );\n })}\n </ul>\n );\n }\n\n return (\n <div className={styles.answerWidth}>\n <MultipleChoiceInteractionAnswers\n interaction={props.interaction}\n size='sm'\n showFeedback={false}\n showCorrectnessIcons\n isDisplayOnly\n />\n </div>\n );\n}","import React from 'react';\n\nimport { QuestionTableAnswersProps } from 'libs/shared/apps/analytics/components/questions-list/question-table/question-table-answers/QuestionTableAnswers';\nimport { Text } from 'libs/shared/components/text/Text';\n\nimport styles from './question-table-answers.scss';\n\nconst namespace = 'shared.questionTable';\n\nexport function QuestionTableShortAnswer(props: QuestionTableAnswersProps) {\n const suggestedResponse = props.interaction.data?.suggestedResponse;\n\n if (!suggestedResponse) return <></>;\n\n return (\n <div className={`${styles.answerWidth} bg-light-blue rounded p-2 mb-2`}>\n <div className='d-flex justify-content-between'>\n <p className='fw-semibold mb-2'>\n <Text namespace={namespace} phrase='suggestedResponse' />\n </p>\n </div>\n\n <p className='mb-0'>{suggestedResponse}</p>\n </div>\n );\n}","import React from 'react';\n\nimport { QuestionTableAnswersProps } from 'libs/shared/apps/analytics/components/questions-list/question-table/question-table-answers/QuestionTableAnswers';\n\n\nexport function QuestionTableTrueOrFalse(props: QuestionTableAnswersProps) {\n return (\n <ul className='list-unstyled d-flex gap-2'>\n {props.interaction.actionableItems.map(option => {\n return (\n <li\n key={option.id}\n className={`${option.isCorrect ? 'bg-light-green border-green' : 'bg-light-red border-red'} rounded border px-2 py-1 mb-2 w-50`}\n >\n <span className='fw-semibold'>{props.indexToLetter(option.order)}. </span>\n <span>{option.name}</span>\n </li>\n );\n })}\n </ul>\n );\n}","import React from 'react';\n\nimport { QuestionTableMissingWord } from 'libs/shared/apps/analytics/components/questions-list/question-table/question-table-answers/QuestionTableMissingWord';\nimport { QuestionTableMultipleChoice } from 'libs/shared/apps/analytics/components/questions-list/question-table/question-table-answers/QuestionTableMultipleChoice';\nimport { QuestionTableShortAnswer } from 'libs/shared/apps/analytics/components/questions-list/question-table/question-table-answers/QuestionTableShortAnswer';\nimport { QuestionTableTrueOrFalse } from 'libs/shared/apps/analytics/components/questions-list/question-table/question-table-answers/QuestionTableTrueOrFalse';\nimport { indexToLetter } from 'libs/shared/apps/analytics/components/questions-list/question-table/QuestionTableUtils';\nimport { Interaction, InteractionTypeId } from 'libs/shared/interfaces';\n\nexport interface QuestionTableAnswersProps {\n interaction: Interaction;\n indexToLetter?: (index: number) => string;\n}\n\nexport function QuestionTableAnswers(props: QuestionTableAnswersProps) {\n function getQuestionTableAnswerComponent(): JSX.Element {\n switch (props.interaction.typeId) {\n case InteractionTypeId.MultipleChoice:\n return <QuestionTableMultipleChoice interaction={props.interaction} indexToLetter={indexToLetter} />;\n case InteractionTypeId.TrueOrFalse:\n return <QuestionTableTrueOrFalse interaction={props.interaction} indexToLetter={indexToLetter} />;\n case InteractionTypeId.ShortAnswer:\n return <QuestionTableShortAnswer interaction={props.interaction} />;\n case InteractionTypeId.MissingWord:\n return <QuestionTableMissingWord interaction={props.interaction} />;\n default: return null;\n }\n }\n\n const QuestionTableAnswerComponent = getQuestionTableAnswerComponent();\n\n if (!QuestionTableAnswerComponent) return <></>;\n\n return (\n <div className='w-100 mt-3'>\n {QuestionTableAnswerComponent}\n </div>\n );\n}","import React from 'react';\nimport { Column, ColumnInstance, Row, SortingRule } from 'react-table';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { HashObject } from 'libs/common/react/interfaces';\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\n\nimport { PendingIndicator } from 'libs/shared/apps/analytics/components/pending-indicator/PendingIndicator';\nimport { QuestionTableAnswers } from 'libs/shared/apps/analytics/components/questions-list/question-table/question-table-answers/QuestionTableAnswers';\nimport { InteractionWithResultsSummary } from 'libs/shared/apps/analytics/interfaces/InteractionWithResultsSummary';\nimport { getInteractionResultsSummary } from 'libs/shared/apps/analytics/utils/InteractiveUtils';\nimport { InteractionLabel } from 'libs/shared/components/interactive-questions/InteractionLabel';\nimport { PercentageIndicator, PercentageIndicatorLayout } from 'libs/shared/components/percentage-indicator/PercentageIndicator';\nimport { Interactive, InteractiveResultSet } from 'libs/shared/interfaces';\nimport { getInteractions } from 'libs/shared/utils/InteractiveHelper';\n\nconst namespace = 'shared.questionTable';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nfunction sortScore(\n rowA: Row<InteractionWithResultsSummary>,\n rowB: Row<InteractionWithResultsSummary>,\n columnId: string\n): 1 | -1 {\n const cellA = rowA.cells.find(cell => cell.column.id === columnId).value;\n const cellB = rowB.cells.find(cell => cell.column.id === columnId).value;\n\n if (cellA.awaitingMarking)\n return -1;\n\n if (cellB.awaitingMarking)\n return 1;\n\n return cellA.percentCorrect >= cellB.percentCorrect\n ? 1\n : -1;\n}\ninterface CellWrapperProps {\n className?: string;\n}\n\nfunction CellWrapper(props: React.PropsWithChildren<CellWrapperProps>): JSX.Element {\n return (\n <div className={`d-flex ${props.className ?? ''}`}>\n {props.children}\n </div>\n );\n}\n\ninterface HeaderCellProps {\n column: ColumnInstance<InteractionWithResultsSummary>;\n phraseKey: string;\n}\n\nfunction HeaderCell(props: HeaderCellProps): JSX.Element {\n return (\n <CellWrapper className={props.column.isSorted && 'fw-bold'}>\n {getPhrase(props.phraseKey)}\n </CellWrapper>\n );\n}\n\nexport function getColumns(\n showAnswersInTable: boolean\n): Column<InteractionWithResultsSummary>[] {\n return [\n {\n Header: ({ column }) => <HeaderCell column={column} phraseKey='#' />,\n accessor: 'questionNumber',\n id: 'index',\n Cell: ({ row: { original: { questionNumber } } }) => {\n return <CellWrapper>{questionNumber + 1}.</CellWrapper>;\n },\n width: 15,\n disableSortBy: true\n },\n {\n Header: ({ column }) => <HeaderCell column={column} phraseKey='question' />,\n accessor: 'data', // This isn't used but it's needed for the typings on row,\n Cell: ({ row: { original: interaction }, initialState: { selectedRowIds } }) => {\n const selectedRow = selectedRowIds?.[interaction?.id];\n\n return (\n <CellWrapper className='flex-column'>\n <div className={`${!selectedRow ? 'clamp-1' : ''} pe-2`}>\n <InteractionLabel interaction={interaction} containerClassName='d-flex' />\n </div>\n\n {showAnswersInTable && selectedRow && (\n <QuestionTableAnswers interaction={interaction} />\n )}\n </CellWrapper>\n );\n },\n disableSortBy: true\n },\n {\n Header: ({ column }) => <HeaderCell column={column} phraseKey='score' />,\n accessor: 'resultsSummary',\n id: 'correctlyAnswered',\n Cell: ({ value: { percentCorrect, awaitingMarking } }) => {\n if (awaitingMarking) {\n return (\n <PendingIndicator\n title={getPhrase('markingRequired')}\n className='flex-grow-1'\n tooltipClassName='d-block'\n showLabel\n />\n );\n }\n\n return (\n <PercentageIndicator\n percentage={percentCorrect}\n layout={PercentageIndicatorLayout.LabelBefore}\n />\n );\n },\n width: 60,\n sortDescFirst: true,\n sortType: sortScore\n }\n ];\n}\n\n/**\n * Returns memoized table data. To trigger a recalculation, toggle the value of `refreshData`.\n */\nexport function useGetTableData(\n interactive: Interactive,\n results: InteractiveResultSet,\n refreshData: boolean,\n sortBy?: SortingRule<InteractionWithResultsSummary>\n): InteractionWithResultsSummary[] {\n return React.useMemo(() => {\n const flattenedInteractions = getInteractions(interactive);\n const questionNumbers: HashObject = flattenedInteractions.reduce((acc, interaction, index) => ({\n ...acc, [interaction.id]: index\n }), {});\n\n const interactions = flattenedInteractions.map(i => ({\n ...i,\n questionNumber: questionNumbers[i.id],\n resultsSummary: getInteractionResultsSummary(i, results)\n }));\n\n if (sortBy?.id === 'correctlyAnswered') {\n const sorted = ArrayHelper.sortBy(interactions, interaction => {\n if (interaction.resultsSummary.awaitingMarking)\n return -1;\n\n return interaction.resultsSummary.percentCorrect;\n });\n\n return sortBy.desc ? sorted.reverse() : sorted;\n }\n\n return interactions;\n }, [ refreshData, sortBy ]);\n}\n\nexport function indexToLetter(index: number) {\n return String.fromCharCode(index + 'A'.charCodeAt(0));\n}","import { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\n\nimport { indexToLetter } from 'libs/shared/apps/analytics/components/questions-list/question-table/QuestionTableUtils';\nimport { InteractiveAnswerStatus } from 'libs/shared/enums/InteractiveAnswerStatus';\nimport { Interaction, InteractionTypeId, InteractiveResultSet } from 'libs/shared/interfaces';\n\nconst namespace = 'shared.questionTable';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nexport interface QuestionSummary {\n id?: string;\n count: number;\n isCorrect: boolean;\n label?: string | number;\n}\n\nexport function multipleChoiceSummary(\n interaction: Interaction,\n studentResults: InteractiveResultSet\n): QuestionSummary[] {\n const questionsSummary: QuestionSummary[] = interaction.actionableItems.map((item, i) => {\n return {\n id: item.id,\n label: interaction.typeId === InteractionTypeId.MultipleChoice ? indexToLetter(i) : item.name,\n isCorrect: item.isCorrect,\n count: 0\n };\n });\n\n studentResults.students.forEach(student => {\n const latestAttempts = ArrayHelper.last(student.results).attempts;\n const response = ArrayHelper.findWhere(latestAttempts, { id: interaction.id });\n\n if (!response) return;\n\n response.answers.forEach(answer => {\n const questionSummary = ArrayHelper.findWhere(questionsSummary, { id: answer.id });\n\n if (questionSummary)\n questionSummary.count++;\n });\n });\n\n return questionsSummary;\n}\n\nexport function missingWordSummary(interaction: Interaction, studentResults: InteractiveResultSet): QuestionSummary[] {\n const questionsSummary: QuestionSummary[] = interaction.actionableItems.map(item => {\n return {\n id: item.id,\n label: item.name,\n isCorrect: item.isCorrect,\n count: 0\n };\n });\n\n questionsSummary.push({\n label: getPhrase('incorrect'),\n count: 0,\n isCorrect: false\n });\n\n studentResults.students.forEach(student => {\n const latestAttempts = ArrayHelper.last(student.results).attempts;\n const response = ArrayHelper.findWhere(latestAttempts, { id: interaction.id });\n\n if (!response) return;\n\n response.answers.forEach(answer => {\n const questionSummary = ArrayHelper.findWhere(questionsSummary, { id: answer.id });\n\n if (questionSummary && answer.status === InteractiveAnswerStatus.Correct) {\n questionSummary.count++;\n } else {\n const incorrectSummary = ArrayHelper.findWhere(questionsSummary, { label: getPhrase('incorrect') });\n\n incorrectSummary.count++;\n }\n });\n });\n\n return questionsSummary;\n}\n\nexport function markedSummary(interaction: Interaction, studentResults: InteractiveResultSet): QuestionSummary[] {\n const questionsSummary: QuestionSummary[] = [\n {\n label: getPhrase('correct'),\n isCorrect: true,\n count: 0\n },\n {\n label: getPhrase('incorrect'),\n isCorrect: false,\n count: 0\n }\n ];\n\n studentResults.students.forEach(student => {\n const latestAttempts = ArrayHelper.last(student.results).attempts;\n const response = ArrayHelper.findWhere(latestAttempts, { id: interaction.id });\n\n if (!response) return;\n\n response.answers.forEach(answer => {\n if (answer.status === InteractiveAnswerStatus.Correct) {\n const correctSummary = ArrayHelper.findWhere(questionsSummary, { label: getPhrase('correct') });\n correctSummary.count++;\n }\n if (answer.status === InteractiveAnswerStatus.Incorrect) {\n const incorrectSummary = ArrayHelper.findWhere(questionsSummary, { label: getPhrase('incorrect') });\n incorrectSummary.count++;\n }\n if (answer.status === InteractiveAnswerStatus.PendingReview) {\n let pendingSummary = ArrayHelper.findWhere(questionsSummary, { label: getPhrase('pending') });\n\n if (!pendingSummary) {\n questionsSummary.push({\n label: getPhrase('pending'),\n count: 0,\n isCorrect: false\n });\n pendingSummary = ArrayHelper.findWhere(questionsSummary, { label: getPhrase('pending') });\n }\n\n pendingSummary.count++;\n }\n });\n });\n\n return questionsSummary;\n}","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { markedSummary, missingWordSummary, multipleChoiceSummary, QuestionSummary } from 'libs/shared/apps/analytics/components/questions-list/question-table/question-results-summary/QuestionResultsSummaryUtils';\nimport { SvgContainer, SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { Interaction, InteractionTypeId, InteractiveResultSet } from 'libs/shared/interfaces';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nconst namespace = 'shared.questionTable';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface QuestionResultsSummaryProps {\n interaction: Interaction;\n results: InteractiveResultSet;\n}\n\nexport function QuestionResultsSummary(props: QuestionResultsSummaryProps) {\n const questionSummary = getQuestionSummary();\n const maxResponseCount = getMaxResponseCount();\n\n function getQuestionSummary(): QuestionSummary[] {\n if (!props.interaction || !props.results) return;\n\n let summaryMethod: (\n interaction: Interaction,\n results: InteractiveResultSet,\n interactionTypeId?: InteractionTypeId\n ) => QuestionSummary[];\n\n switch (props.interaction.typeId) {\n case InteractionTypeId.ShortAnswer:\n case InteractionTypeId.Illustration:\n summaryMethod = markedSummary;\n break;\n case InteractionTypeId.MissingWord:\n summaryMethod = missingWordSummary;\n break;\n case InteractionTypeId.MultipleChoice:\n case InteractionTypeId.TrueOrFalse:\n summaryMethod = multipleChoiceSummary;\n break;\n }\n\n return summaryMethod(props.interaction, props.results);\n }\n\n function getMaxResponseCount() {\n return questionSummary?.reduce((acc, summary) => summary.count > acc ? summary.count : acc, 0);\n }\n\n function getBarClassName(summary: QuestionSummary) {\n const className = 'border rounded me-2';\n\n if (!summary.count)\n return `${className} border bg-light px-1`;\n\n if (summary.label === getPhrase('pending'))\n return `${className} border-blue bg-light-blue`;\n\n if (summary.isCorrect)\n return `${className} border-green bg-light-green`;\n\n return `${className} border-red bg-light-red`;\n }\n\n return (\n <div className='border border rounded p-3 mb-3'>\n <div className='d-flex align-items-center gap-2 mb-3'>\n <div className='rounded-circle bg-light-teal text-teal'>\n <SvgContainer svgName={cvSvgLibrary.Lightbulb} size={SvgContainerSize.Large} />\n </div>\n <h2 className='h6 mb-0'>\n <span><Text namespace={namespace} phrase='questionSummary' /></span>\n </h2>\n </div>\n <div className='d-flex gap-2'>\n <div className='max-w-25'>\n {questionSummary?.map(summary => {\n return (\n <p key={summary.label} className='text-truncate mb-2'>{summary.label}</p>\n );\n })}\n </div>\n <div className='flex-grow-1'>\n {questionSummary?.map((summary, i) => {\n return (\n <div key={`${props.interaction.id}${i}`} className='d-flex mb-2'>\n <div\n className={getBarClassName(summary)}\n style={{ width: `${(summary.count / maxResponseCount) * 100}%`, height: 20 }}>\n </div>\n <span>{summary.count}</span>\n </div>\n );\n })}\n </div>\n </div>\n </div>\n );\n}","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { EmptyState } from 'libs/shared/components/empty-states/EmptyState';\n\nconst namespace = 'shared.selectedInteractionEmptyState';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface SelectedInteractionEmptyStateProps {\n emptyStateUrl: string;\n}\n\nexport function SelectedInteractionEmptyState(props: SelectedInteractionEmptyStateProps): JSX.Element {\n return (\n <EmptyState className='rounded h-100 bg-white justify-content-center py-4'>\n <EmptyState.Image\n src={props.emptyStateUrl}\n size='small'\n />\n <EmptyState.Info className='w-100'>\n {getPhrase('emptyStateText')}\n </EmptyState.Info>\n </EmptyState>\n );\n}","import React from 'react';\nimport { Row, SortingRule } from 'react-table';\n\nimport { ScrollHelper } from 'libs/common/backbone/utils/ScrollHelper';\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\n\nimport { InteractionResponseList } from 'libs/shared/apps/analytics/components/questions-list/interaction-response-list/InteractionResponseList';\nimport { QuestionResultsSummary } from 'libs/shared/apps/analytics/components/questions-list/question-table/question-results-summary/QuestionResultsSummary';\nimport { SelectedInteractionEmptyState } from 'libs/shared/apps/analytics/components/questions-list/selected-interaction-empty-state/SelectedInteractionEmptyState';\nimport { InteractionWithResultsSummary } from 'libs/shared/apps/analytics/interfaces/InteractionWithResultsSummary';\nimport { getInteractionById } from 'libs/shared/apps/analytics/utils/InteractiveUtils';\nimport { getSortStudents, SortStudentsBy } from 'libs/shared/apps/analytics/utils/StudentTableUtils';\nimport { Table, TableTheme } from 'libs/shared/components/table/Table';\nimport { InteractiveAnswerStatus } from 'libs/shared/enums/InteractiveAnswerStatus';\nimport { Interactive, InteractiveResultSet, StudentAnswer } from 'libs/shared/interfaces';\nimport { AppRouteHelper } from 'libs/shared/utils/AppRouteHelper';\n\nimport { getColumns, useGetTableData } from './QuestionTableUtils';\n\ninterface QuestionTableProps {\n interactive: Interactive;\n results: InteractiveResultSet;\n markedAnswers: { [id: string]: StudentAnswer };\n addMarkedAnswers: (answer: StudentAnswer[], status: InteractiveAnswerStatus) => void;\n submitMarkedAnswers: () => void;\n editSuggestedResponse?: () => void;\n imageCdnUrl: string;\n selectQuestionImageUrl: string;\n anonymiseUsers: boolean;\n sortBy?: SortStudentsBy;\n emptyStateImageUrl: string;\n markingRequiredImageUrl?: string;\n correctImageUrl?: string;\n incorrectImageUrl?: string;\n skippedImageUrl?: string;\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 selectedInteractionId?: string;\n showAnswersInTable?: boolean;\n theme: TableTheme;\n reportsStyling?: boolean;\n isDemo?: boolean;\n}\n\nexport function QuestionTable(props: QuestionTableProps): JSX.Element {\n const [ sortBy, setSortBy ] = React.useState<SortingRule<InteractionWithResultsSummary>[]>(\n getSortStudents(props.sortBy, 'correctlyAnswered')\n );\n const data = useGetTableData(props.interactive, props.results, props.refreshTable, ArrayHelper.first(sortBy));\n\n const selectedInteraction = props.selectedInteractionId &&\n getInteractionById(props.interactive, props.selectedInteractionId);\n\n function onSelectRow({ original: interaction }: Row<InteractionWithResultsSummary>): void {\n ScrollHelper.preventScrollTop();\n\n AppRouteHelper.updateParams(\n { interactionId: interaction.id },\n { merge: true }\n );\n }\n\n return (\n <div className='row'>\n <div className='col-6 flex-grow-1'>\n <Table\n key={props.selectedInteractionId}\n columns={getColumns(props.showAnswersInTable)}\n data={data}\n theme={props.theme}\n onSelectRow={onSelectRow}\n initialSelectedRowIds={selectedInteraction ? [selectedInteraction.id] : null}\n getRowId={(row: InteractionWithResultsSummary) => row.id}\n enableSort\n manualSort\n onSort={setSortBy}\n initialSortBy={sortBy}\n />\n </div>\n <div className='col-6 d-flex flex-column'>\n {!props.reportsStyling && props.selectedInteractionId && !!props.results.students?.length && (\n <QuestionResultsSummary\n interaction={selectedInteraction}\n results={props.results}\n />\n )}\n\n <div className={`rounded flex-grow-1 ${props.reportsStyling ? '' : 'border'}`}>\n {!!selectedInteraction &&\n <InteractionResponseList\n interaction={selectedInteraction}\n results={props.results}\n markedAnswers={props.markedAnswers}\n addMarkedAnswers={props.addMarkedAnswers}\n submitMarkedAnswers={props.submitMarkedAnswers}\n imageCdnUrl={props.imageCdnUrl}\n anonymiseUsers={props.anonymiseUsers}\n emptyStateImageUrl={props.emptyStateImageUrl}\n markingRequiredImageUrl={props.markingRequiredImageUrl}\n correctImageUrl={props.correctImageUrl}\n incorrectImageUrl={props.incorrectImageUrl}\n skippedImageUrl={props.skippedImageUrl}\n reportsStyling={props.reportsStyling}\n isDemo={props.isDemo}\n />\n }\n {!selectedInteraction && <SelectedInteractionEmptyState emptyStateUrl={props.selectQuestionImageUrl} />}\n </div>\n </div>\n </div>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"partialInsights\":\"mhxg4\"};","import React from 'react';\n\nimport styles from './partial-interactive-insights-questions.scss';\n\nexport function PartialInteractiveInsightsQuestions() {\n return (\n <div>\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 { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { QuestionTable } from 'libs/shared/apps/analytics/components/questions-list/question-table/QuestionTable';\nimport { useMarkAnswers } from 'libs/shared/apps/analytics/hooks/UseMarkAnswers';\nimport { SortStudentsBy } from 'libs/shared/apps/analytics/utils/StudentTableUtils';\nimport { ConfirmationPopup } from 'libs/shared/components/confirmation-popup/ConfirmationPopup';\nimport { TableTheme } from 'libs/shared/components/table/Table';\nimport { Config, Interactive, InteractiveMetadata, InteractiveResultSet } from 'libs/shared/interfaces';\n\nimport { ImageUrls } from 'shared/constants/ImageUrls';\n\nimport { PartialInteractiveInsightsQuestions } from 'apps/my-shares/components/interactive-insights-questions/partial-loading/PartialInteractiveInsightsQuestions';\n\n\nconst namespace = 'shared.interactiveInsightsQuestions';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nconst theme: TableTheme = {\n table: 'bg-white rounded border h-100 pb-2',\n header: 'border-bottom px-3 py-2 mb-2',\n headerCell: 'd-flex align-items-center',\n cell: '',\n row: `px-3 py-2 bg-light-blue-hover`,\n selectedRow: 'bg-gray-100',\n sortIndicator: 'ms-2'\n};\n\ninterface InteractiveInsightsQuestionsProps {\n interactionId: string;\n interactive: Interactive;\n interactiveMetadata: InteractiveMetadata;\n results: InteractiveResultSet;\n isFetching: boolean;\n config: Config;\n hasDataLoaded: boolean;\n anonymiseUsers: boolean;\n sortBy: SortStudentsBy;\n isDemo?: boolean;\n}\n\nexport function InteractiveInsightsQuestions(props: InteractiveInsightsQuestionsProps) {\n const [ showMarkConfirmationPopup, setShowMarkConfirmationPopup ] = React.useState(false);\n\n const { markedAnswers, addMarkedAnswers, submitMarkedAnswers } = useMarkAnswers(\n props.interactive?.id,\n props.interactiveMetadata?.id,\n () => setShowMarkConfirmationPopup(false)\n );\n\n return (\n <>\n {!props.hasDataLoaded && <PartialInteractiveInsightsQuestions />}\n\n {props.hasDataLoaded &&\n <QuestionTable\n interactive={props.interactive}\n results={props.results}\n markedAnswers={markedAnswers}\n addMarkedAnswers={addMarkedAnswers}\n submitMarkedAnswers={() => setShowMarkConfirmationPopup(true)}\n imageCdnUrl={props.config.imageCdnUrl}\n selectedInteractionId={props.interactionId}\n refreshTable={props.isFetching}\n emptyStateImageUrl={ImageUrls.Insights.NO_RESPONSES}\n selectQuestionImageUrl={ImageUrls.Insights.NO_DATA}\n anonymiseUsers={props.anonymiseUsers}\n sortBy={props.sortBy}\n showAnswersInTable\n theme={theme}\n correctImageUrl={ImageUrls.Insights.JIGSAW}\n incorrectImageUrl={ImageUrls.Insights.RED_JIGSAW}\n skippedImageUrl={ImageUrls.Insights.SKIPPED}\n markingRequiredImageUrl={ImageUrls.Insights.CLIPBOARD}\n isDemo={props.isDemo}\n />\n }\n\n {showMarkConfirmationPopup &&\n <ConfirmationPopup\n title={getPhrase('markPopupTitle', { smartCount: Object.keys(markedAnswers).length ?? 0 })}\n closePopup={() => setShowMarkConfirmationPopup(false)}\n confirmButtonText={getPhrase('submit')}\n confirmButtonVariant='dark'\n onClickConfirm={submitMarkedAnswers}\n >\n <p>{getPhrase('markPopupBody')}</p>\n </ConfirmationPopup>\n }\n </>\n );\n}"],"names":["getPhrase","ConfirmationPopup","props","showButtonSpinner","setShowButtonSpinner","title","closePopup","children","onClick","variant","cancelButtonVariant","text","cancelButtonText","onClickConfirm","confirmButtonText","confirmButtonVariant","showSpinner","disabled","disabledConfirmButton","defaultProps","AppRouteHelper","updateParams","params","options","appLink","currentParams","keysToRemove","updatedParams","merge","updatedAppLink","namespace","InteractionResponseListFiltersEmptyStates","EmptyState","className","src","filter","correctImageUrl","incorrectImageUrl","markingRequiredImageUrl","skippedImageUrl","getFilterEmptyStateImageUrl","Text","phrase","getFilterEmptyStatePhrase","InteractionResponseListFilters","getFilterClassName","filterButton","isFilterSelected","toggleFilter","LanguageService","InteractionResponseListHeader","suggestedResponse","interaction","data","InteractionLabel","iconClassName","SubmitMarkedAnswers","submit","InteractionResponseList","setFilter","responsesToMark","results","students","s","InteractiveCorrectnessHelper","InteractionCorrectness","reduce","acc","user","id","sessionId","numMarkedAnswers","Object","keys","markedAnswers","length","emptyStateImageUrl","size","filteredStudentResults","result","correctness","filterMap","correct","incorrect","marking_required","skipped","reportsStyling","Tooltip","spanHack","isDemo","submitMarkedAnswers","selectedFilter","map","idx","anonymisedUserName","anonymiseUsers","markingRequired","key","InteractionResponse","studentResults","markedStatus","markInteraction","addMarkedAnswers","imageCdnUrl","showStudentDetails","showFeedback","responseComponentClass","InteractionResponseItem","QuestionTableMissingWord","str","sentence","split","part","index","match","replacement","actionableItems","find","answer","order","name","QuestionTableMultipleChoice","ArrayHelper","imageUrl","MultipleChoiceInteractionAnswers","showCorrectnessIcons","isDisplayOnly","option","isCorrect","indexToLetter","QuestionTableShortAnswer","QuestionTableTrueOrFalse","QuestionTableAnswers","QuestionTableAnswerComponent","typeId","getQuestionTableAnswerComponent","sortScore","rowA","rowB","columnId","cellA","cells","cell","column","value","cellB","awaitingMarking","percentCorrect","CellWrapper","HeaderCell","isSorted","phraseKey","String","fromCharCode","charCodeAt","multipleChoiceSummary","questionsSummary","item","i","label","count","forEach","student","latestAttempts","attempts","response","answers","questionSummary","missingWordSummary","push","status","InteractiveAnswerStatus","markedSummary","pendingSummary","QuestionResultsSummary","summaryMethod","getQuestionSummary","maxResponseCount","summary","getBarClassName","SvgContainer","svgName","S","style","width","height","SelectedInteractionEmptyState","emptyStateUrl","QuestionTable","showAnswersInTable","sortBy","setSortBy","interactive","refreshData","flattenedInteractions","questionNumbers","interactions","questionNumber","resultsSummary","sorted","desc","reverse","useGetTableData","refreshTable","selectedInteraction","selectedInteractionId","Table","columns","Header","accessor","Cell","row","original","disableSortBy","selectedRowIds","initialState","selectedRow","containerClassName","PendingIndicator","tooltipClassName","showLabel","PercentageIndicator","percentage","layout","sortDescFirst","sortType","theme","onSelectRow","ScrollHelper","interactionId","initialSelectedRowIds","getRowId","enableSort","manualSort","onSort","initialSortBy","selectQuestionImageUrl","PartialInteractiveInsightsQuestions","table","header","headerCell","sortIndicator","InteractiveInsightsQuestions","showMarkConfirmationPopup","setShowMarkConfirmationPopup","interactiveMetadata","hasDataLoaded","config","isFetching","ImageUrls","smartCount"],"sourceRoot":""}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
"use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[8856],{41196:(e,t,a)=>{a.d(t,{W:()=>o});var r=a(20354),n=a(93479),i=a(20768),s=a(31949);function o(e,t,a){var o,l=r.a.useBasicFetch(s.N.currentUser()),c=r.a.useBasicFetch(!!e&&i.b.interactiveMetadata(e)),u=r.a.useBasicFetch(!!(null===(o=c.data)||void 0===o?void 0:o.interactiveId)&&i.b.interactive(c.data.interactiveId)),d=!!l.data&&!!u.data;return r.a.useBasicFetch(d&&n.I.interactiveResultSet(c.data.interactiveId,c.data.id,l.data,t,a))}},18488:(e,t,a)=>{a.d(t,{o:()=>s});var r=a(99940),n=a(97395),i={namespace:"share-v2"},s={createShare:function(e){return{url:"{gateway}/v2/shares",key:"create:share-v2",type:r.k.POST,data:e,normalizeOptions:i,invalidationKeys:["sent:share-v2","get:share-v2:shares:object:".concat(e.objectId)]}},updateShare:function(e,t){return{url:"{gateway}/v2/shares/".concat(e),key:"update:share-v2",type:r.k.PUT,data:t,normalizeOptions:i,invalidationKeys:["share-v2:permanent-link:object","share-v2:".concat(e)]}},deleteShare:function(e){return{type:r.k.DELETE,url:"{gateway}/v2/shares/".concat(e),key:"delete:share-v2",normalizeOptions:i,invalidationKeys:["share-v2:permanent-link:object","sent:share-v2","share-v2:".concat(e)]}},getShare:function(e){return{url:"{gateway}/v2/shares/".concat(e),key:"share-v2:".concat(e),bootstrapName:"share-v2:".concat(e),type:r.k.GET,normalizeOptions:i}},getSentShares:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=Object.values(e).sort().join(":");return{url:n._.urlBuilder("{gateway}/v2/shares/sent",e),key:"sent:share-v2:".concat(t),type:r.k.GET,normalize:!1}},getShareLink:function(e){return{url:n._.urlBuilder("{gateway}/v2/shares/permanent-link",{objectId:e}),key:"share-v2:permanent-link:object:".concat(e),normalizeOptions:i}},createShareLink:function(e){return{type:r.k.POST,url:n._.urlBuilder("{gateway}/v2/shares/permanent-link",Object.assign({},e)),key:"create:share-v2:permanent-link:object:".concat(e.objectId),invalidationKeys:["share-v2:permanent-link:object:".concat(e.objectId),"sent:share-v2"],normalizeOptions:i}},getPrivacy:function(e){return{url:"{gateway}/v1/objects/".concat(e,"/access"),key:"privacy:".concat(e),normalize:!1}},getSharesByObjectId:function(e){return{url:"{gateway}/v2/shares/objects/".concat(e),key:"get:share-v2:shares:object:".concat(e),type:r.k.GET,normalizeOptions:i}},createSharePincode:function(e){return{url:"{gateway}/v2/shares/".concat(e,"/pincode"),key:"create:share-v2:".concat(e,":pincode"),type:r.k.POST}},getPincodeByShareId:function(e){return{url:"{gateway}/v2/shares/".concat(e,"/pincode"),key:"get:share-v2:".concat(e,":pincode")}},getPincodeByCode:function(e){return{url:"{gateway}/v2/shares/pincode?code=".concat(e),key:"get:share-v2:pincode:".concat(e)}}}},94644:(e,t,a)=>{a.d(t,{r:()=>u});var r=a(50242),n=a(81886),i=a(67058),s=a(14553),o=a(49267),l=a(49075),c={notFound:i.d,forbidden:{rating:s.q,yearLevel:s.q,region:o.a,privacy:s.q},badRequest:l._,internalServerError:l._};function u(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},a=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(e){var i;i="number"==typeof e?e:e.status;var s=Object.assign(Object.assign({},c),t);i&&n.Q.Ry.isStatusCodeError(i)&&(i!==r.o.InternalServer?i!==r.o.NotFound?i!==r.o.Forbidden?a.badRequest||n.Q.Ry.throw(new s.badRequest):a.forbidden||n.Q.Ry.throw(new s.forbidden.privacy):a.notFound||n.Q.Ry.throw(new s.notFound):a.internalServerError||n.Q.Ry.throw(new l._))}}},39902:(e,t,a)=>{a.d(t,{FN:()=>v,SW:()=>f,fh:()=>h});var r=a(32735),n=a(20354),i=a(75896);function s(e){return function(e){if(Array.isArray(e))return l(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 l(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)?l(e,t):void 0}}function l(e,t){(null==t||t>e.length)&&(t=e.length);for(var a=0,r=Array(t);a<t;a++)r[a]=e[a];return r}function c(e){return c="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},c(e)}function u(e,t,a){return(t=function(e){var t=function(e){if("object"!=c(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var a=t.call(e,"string");if("object"!=c(a))return a;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==c(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 r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(a[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var n=0;for(r=Object.getOwnPropertySymbols(e);n<r.length;n++)t.indexOf(r[n])<0&&Object.prototype.propertyIsEnumerable.call(e,r[n])&&(a[r[n]]=e[r[n]])}return a},m=50;function h(e,t){var a=i.m.chunk(e,m).map((function(e){return t(i.m.uniq(e))})),r=n.a.useBasicFetchAll(a),s=i.m.flatten(r.data),o=r.data.length?s.reduce((function(e,t){return Object.assign(Object.assign({},e),u({},t.id,t))}),{}):null;return{itemsArr:s,items:o,isFetching:r.isFetching,hasCompleted:r.hasCompleted}}function v(e,t,a){var n=null!=a?a:function(e){return"object"===c(e)?e.id:e},i=f({getRequest:t,_getKey:a}),s=i.fetchItems,o=d(i,["fetchItems"]);return r.useEffect((function(){(null==e?void 0:e.length)&&s(e)}),[null==e?void 0:e.map(n).join(",")]),o}function f(e){var t,a,l,d,h,v=null!==(t=e._getKey)&&void 0!==t?t:function(e){return"object"===c(e)?e.id:e},f=r.useRef(new Set),g=(d=r.useState([]),h=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 r,n,i,s,o=[],l=!0,c=!1;try{if(i=(a=a.call(e)).next,0===t){if(Object(a)!==a)return;l=!1}else for(;!(l=(r=i.call(a)).done)&&(o.push(r.value),o.length!==t);l=!0);}catch(e){c=!0,n=e}finally{try{if(!l&&null!=a.return&&(s=a.return(),Object(s)!==s))return}finally{if(c)throw n}}return o}}(d,h)||o(d,h)||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.")}()),p=g[0],y=g[1],b=n.a.useBasicFetchAll(p),I=i.m.flatten(b.data),E=b.data.length?I.reduce((function(e,t){return Object.assign(Object.assign({},e),u({},v(t),t))}),{}):null;return{hasFirstRequestCompleted:!!(null===(l=null===(a=b.responses)||void 0===a?void 0:a[0])||void 0===l?void 0:l.hasCompleted),itemsArr:I,items:E,isFetching:b.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&&y((function(t){return[].concat(s(t),s(i.m.chunk(a,m).map(e.getRequest)))}))}}}}},91286:(e,t,a)=>{a.d(t,{v:()=>s});var r=a(32735),n=a(94644);function i(e){return e.map((function(e){return e.statusCode})).join(":")}function s(e,t,a){var s=Array.isArray(e)?e:[e];(0,r.useEffect)((function(){s.forEach((function(e){(0,n.r)(e.statusCode,t,a)}))}),[i(s),t,a])}},78057:(e,t,a)=>{a.d(t,{R:()=>j});var r=a(32735),n=a(75896),i=a(23481),s=a(97958),o=i.T.encloseNamespace("shared.studentResultsTable");function l(e){return"not_completed"===e.filter?r.createElement(s.u,{className:"bg-white rounded-bottom py-5"},r.createElement(s.u.Image,{src:e.notCompletedImageUrl,size:"small"}),r.createElement(s.u.Info,null,o("notCompletedDescription"))):"marking_required"===e.filter?r.createElement(s.u,{className:"bg-white rounded-bottom py-5"},r.createElement(s.u.Image,{src:e.markingRequiredImageUrl,size:"small"}),r.createElement(s.u.Info,null,o("markingRequiredDescription"))):"helping_hand"===e.filter?r.createElement(s.u,{className:"bg-white rounded-bottom py-5"},r.createElement(s.u.Image,{src:e.helpingHandImageUrl,size:"small"}),r.createElement(s.u.Info,null,o("helpingHandDescription"))):r.createElement(s.u,{className:"bg-white rounded-bottom py-5"},r.createElement(s.u.Image,{src:e.emptyStateImageUrl,size:"small"}),r.createElement(s.u.Heading,null,o("emptyStateHeading")),r.createElement(s.u.Info,null,o("emptyStateDescription")))}var c=a(83345),u="shared.studentResultsTable";function d(e){function t(t){var a=e.filter===t?null:t;e.setFilter(a)}function a(t){return"btn btn-outline-dark ".concat(function(t){return e.filter===t}(t)?"bg-dark text-white":"")}return r.createElement("div",{className:"d-flex align-items-center mb-3"},r.createElement("p",{className:"h6 mb-0"},r.createElement(c.x,{namespace:u,phrase:"filters"})),r.createElement("div",{className:"d-flex border-start ps-3 ms-3 gap-2"},r.createElement("button",{className:a("not_completed"),onClick:function(){return t("not_completed")}},r.createElement(c.x,{namespace:u,phrase:"notCompletedFilter"})),r.createElement("button",{className:a("marking_required"),onClick:function(){return t("marking_required")}},r.createElement(c.x,{namespace:u,phrase:"markingRequiredFilter"})),r.createElement("button",{className:a("helping_hand"),onClick:function(){return t("helping_hand")}},r.createElement(c.x,{namespace:u,phrase:"helpingHandFilter"}))))}var m=a(97364),h=a(6748),v=a(84806),f=a(19912);function g(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var a=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=a){var r,n,i,s,o=[],l=!0,c=!1;try{if(i=(a=a.call(e)).next,0===t){if(Object(a)!==a)return;l=!1}else for(;!(l=(r=i.call(a)).done)&&(o.push(r.value),o.length!==t);l=!0);}catch(e){c=!0,n=e}finally{try{if(!l&&null!=a.return&&(s=a.return(),Object(s)!==s))return}finally{if(c)throw n}}return o}}(e,t)||function(e,t){if(e){if("string"==typeof e)return p(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)?p(e,t):void 0}}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function p(e,t){(null==t||t>e.length)&&(t=e.length);for(var a=0,r=Array(t);a<t;a++)r[a]=e[a];return r}var y={table:"".concat(f.Z.fixedTable," bg-white rounded-start border border-end-0"),header:"".concat(f.Z.header," border-bottom"),headerRow:"h-100",headerCell:"d-flex align-items-center justify-content-start",row:f.Z.row},b={header:"".concat(f.Z.header," fw-bold"),headerRow:"h-100",headerCell:"".concat(f.Z.interactionHeaderCellOuter," bg-white border-bottom"),row:"".concat(f.Z.row," ").concat(f.Z.resultsRow),cell:f.Z.resultsCellOuter};function I(e){var t,a=g(r.useState((0,m.P)(e.sortBy,"score")),2),i=a[0],s=a[1],o=g(r.useState(e.filterBy),2),c=o[0],u=o[1],p=r.useRef(null),I=(0,v.R7)(e.results,e.anonymiseUsers,null===(t=e.config)||void 0===t?void 0:t.imageCdnUrl),E=(0,v.lE)(e.interactive,e.interactiveMetadata,e.results,(function(e){(0,v.bB)(p.current,e)}),e.refreshTable),S=(0,v.Fx)(e.interactive,e.results,e.refreshTable,e.anonymiseUsers,n.m.first(i),c);function w(e){(0,v.l8)(p.current,e)}return r.createElement("div",null,!!e.results.students.length&&r.createElement(d,{filter:c,setFilter:u}),!S.length&&r.createElement(l,{emptyStateImageUrl:e.emptyStateImageUrl,helpingHandImageUrl:e.helpingHandImageUrl,markingRequiredImageUrl:e.markingRequiredImageUrl,notCompletedImageUrl:e.notCompletedImageUrl,filter:c}),!!S.length&&r.createElement("div",{ref:p,className:"d-flex".concat(S.length?" ".concat(f.Z.hasResults):"")},r.createElement(h.i,{columns:I,data:S,theme:y,onSelectRow:function(t){var a=t.original;e.viewStudentResults(a.user,e.interactiveMetadata.id)},onRowMouseOver:function(e){return w(e.index)},onRowMouseLeave:function(){return w()},enableSort:!0,manualSort:!0,onSort:s,initialSortBy:i}),r.createElement(h.i,{columns:E,data:S,theme:b,enableSlider:!0,scrollIncrement:8*v.Ju,onSelectCell:function(t){e.viewStudentResults(t.row.original.user,e.interactiveMetadata.id,t.column.id)},scrollContainerClassName:"rounded-end border border-start-0 border"})))}var E=a(99742);const S={partialInsights:"qSeTe"};function w(){return r.createElement("div",null,r.createElement("div",{className:"d-flex align-items-center mb-3"},r.createElement("p",{className:"h6 px-4 mb-0 me-4 partial-loading-background"}," "),r.createElement("div",{className:"row g-2 w-50"},r.createElement("div",{className:"col-3"},r.createElement("div",{className:"p-2 rounded-1 partial-loading-background"}," ")),r.createElement("div",{className:"col-3"},r.createElement("div",{className:"p-2 rounded-1 partial-loading-background"}," ")),r.createElement("div",{className:"col-3"},r.createElement("div",{className:"p-2 rounded-1 partial-loading-background"}," ")))),r.createElement("div",{className:"row g-3 mb-5"},r.createElement("div",{className:"col-12"},r.createElement("div",{className:"".concat(S.partialInsights," rounded partial-loading-background")}))))}function j(e){return r.createElement(r.Fragment,null,!e.hasDataLoaded&&r.createElement(w,null),e.hasDataLoaded&&r.createElement(I,{interactive:e.interactive,interactiveMetadata:e.interactiveMetadata,results:e.results,refreshTable:e.isFetching,viewStudentResults:e.viewStudentResults,emptyStateImageUrl:E.W.Insights.NO_RESPONSES,sortBy:e.sortBy,filterBy:e.filterBy,anonymiseUsers:e.anonymiseUsers,notCompletedImageUrl:E.W.Insights.JIGSAW,markingRequiredImageUrl:E.W.Insights.CLIPBOARD,helpingHandImageUrl:E.W.Insights.SPEECH_BUBBLE_HEART,config:e.config}))}},9447:(e,t,a)=>{a.d(t,{Y:()=>s});var r=a(20354),n=a(30439);function i(e){return i="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},i(e)}function s(e){var t,a=r.a.useBasicFetch(n.o.getAnonSessions(e));return{items:(null===(t=a.data)||void 0===t?void 0:t.reduce((function(e,t){return Object.assign(Object.assign({},e),(a={},r=t.sessionId,n={sessionId:(s=t).sessionId,name:s.sessionName},(r=function(e){var t=function(e){if("object"!=i(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var a=t.call(e,"string");if("object"!=i(a))return a;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==i(t)?t:t+""}(r))in a?Object.defineProperty(a,r,{value:n,enumerable:!0,configurable:!0,writable:!0}):a[r]=n,a));var a,r,n,s}),{}))||{},hasCompleted:a.hasCompleted}}},5780:(e,t,a)=>{a.d(t,{p:()=>c});var r=a(20354),n=a(2510),i=a(18488),s=a(4594),o=a(3010),l=a(88630);function c(e){var t,a,c,u,d=r.a.useGetFetch(),m=r.a.useBasicFetch(i.o.getShare(e)),h=(null===(t=m.data)||void 0===t?void 0:t.type)===n.y.Classroom&&(null===(u=null===(c=null===(a=m.data)||void 0===a?void 0:a.recipients)||void 0===c?void 0:c.find((function(e){return e.recipientTypeId===s.E.Classroom})))||void 0===u?void 0:u.recipientId),v=function(e){return l.F.getClassroomStudents(h,e)},f=(0,o.i)(h&&v,(function(e){return d(v(e))}));return Object.assign(Object.assign({},f),{hasCompleted:!h||f.hasCompleted})}},52389:(e,t,a)=>{a.d(t,{_:()=>d});var r=a(20354),n=a(41196),i=a(18488),s=a(91286),o=a(9447),l=a(5780);function c(e,t){(null==t||t>e.length)&&(t=e.length);for(var a=0,r=Array(t);a<t;a++)r[a]=e[a];return r}var u=[{id:"0",attempts:[{id:"0",answeredAt:0,answers:[]}]}];function d(e){var t,a,d=r.a.useBasicFetch(i.o.getShare(e)),m=(0,n.W)(null===(t=d.data)||void 0===t?void 0:t.objectId,null,!0),h=(0,o.Y)(e),v=(0,l.p)(e);(0,s.v)(m);var f=m.hasCompleted&&h.hasCompleted&&v.hasCompleted;if(!f)return{data:null,hasCompleted:!1};var g,p=new Set,y=m.data.students.map((function(e){return e.user?(p.add(e.user.id),e):Object.assign(Object.assign({},e),{user:h.items[e.sessionId]||{sessionId:e.sessionId}})}));return(null===(a=null==v?void 0:v.items)||void 0===a?void 0:a.length)&&y.push.apply(y,function(e){if(Array.isArray(e))return c(e)}(g=v.items.filter((function(e){return!p.has(e.id)})).map((function(e){return{user:e,results:u}})))||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(g)||function(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}}(g)||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.")}()),{hasCompleted:f,data:Object.assign(Object.assign({},m.data),{students:y})}}},50808:(e,t,a)=>{a.r(t),a.d(t,{BaseInsightsView:()=>we});var r=a(32735),n=a(81886),i=a(20354),s=a(18488),o=a(86099),l=a(4594),c=a(23481),u=a(2948),d=a(60051),m=a(16714),h=a(39151),v=a(1666),f=a(47812),g=a(31949),p=a(91286),y=a(93322),b=a(22902),I=a(79612),E=a(31908),S=a(86702),w=a(40913),j=a(17132),C=function(e,t){return{url:"{gateway}/v2/analytics/streams/shares/".concat(e,"/aggregation/").concat(t),key:"video:views:v2:share:aggregation:".concat(e,":").concat(t),normalize:!1}},A=function(e){return{url:"{gateway}/v2/analytics/streams/shares/".concat(e,"/heat-map"),key:"video:views:v2:share:heatmap:".concat(e),normalize:!1}},k=function(e){return{url:"{gateway}/v2/analytics/streams/shares/".concat(e,"/aggregation/heat-map"),key:"video:views:v2:share:heatmap:aggregation:".concat(e),normalize:!1}},N=a(39902),B=a(9447);function O(e){var t,a,r=i.a.useBasicFetch(A(e)),n=(0,B.Y)(e),s=(null===(t=r.data)||void 0===t?void 0:t.map((function(e){return e.userId})).filter((function(e){return!!e})))||[],o=(0,N.fh)(s,g.N.getById),l=Object.assign(Object.assign({},n.items),o.items),c=null===(a=r.data)||void 0===a?void 0:a.map((function(e){var t=l[e.userId||e.sessionId]||{sessionId:e.sessionId};return Object.assign(Object.assign({},t),{percentage:e.engagementRate})}));return{engagement:r.data,users:c,hasCompleted:r.hasCompleted&&n.hasCompleted&&(!(null==s?void 0:s.length)||o.hasCompleted)}}var U=a(5780),F=a(10447);function T(e,t){(null==t||t>e.length)&&(t=e.length);for(var a=0,r=Array(t);a<t;a++)r[a]=e[a];return r}var R=c.T.encloseNamespace("shared.insightsHeatmap");function L(e){var t,a,n,o,c,A=(o=(0,u.D)(S.y.ANONYMISE_USERS),c=1,function(e){if(Array.isArray(e))return e}(o)||function(e,t){var a=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=a){var r,n,i,s,o=[],l=!0,c=!1;try{if(i=(a=a.call(e)).next,0===t){if(Object(a)!==a)return;l=!1}else for(;!(l=(r=i.call(a)).done)&&(o.push(r.value),o.length!==t);l=!0);}catch(e){c=!0,n=e}finally{try{if(!l&&null!=a.return&&(s=a.return(),Object(s)!==s))return}finally{if(c)throw n}}return o}}(o,c)||function(e,t){if(e){if("string"==typeof e)return T(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)?T(e,t):void 0}}(o,c)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}())[0];(0,y.F)();var N=(0,b.T)().hasPermissions,B=i.a.useBasicFetch(s.o.getShare(e.shareId)),L=(0,U.p)(e.shareId),_=B.data&&E.M.getVideoRequest(B.data.objectId,B.data.objectTypeId),M=i.a.useBasicFetch(_),x=i.a.useBasicFetch(h.L.config()),P=i.a.useBasicFetch(g.N.currentUser()),q=i.a.useBasicFetch(P.data&&v.h.yearGroups(P.data.customerId)),D=i.a.useBasicFetch(k(e.shareId)),W=O(e.shareId),z=W.users,V=W.engagement,G=W.hasCompleted,H=i.a.useBasicFetch(C(e.shareId,"year_group")),$=i.a.useBasicFetch((null===(t=B.data)||void 0===t?void 0:t.objectId)&&f.k.createViewKey(B.data.objectId,d.f.MasterObject));(0,I.M)({title:M.data?R("pageTitle",{video:null===(a=M.data)||void 0===a?void 0:a.name}):null}),(0,p.v)([B,M]);var Z=B.hasCompleted&&M.hasCompleted&&x.hasCompleted&&D.hasCompleted&&H.hasCompleted&&$.hasCompleted&&q.hasCompleted;return r.createElement("div",{className:"px-3"},r.createElement(w.j,{video:M.data,tabs:function(){var e;return(null===(e=B.data)||void 0===e?void 0:e.objectTypeId)===l.E.Interactive?(0,F.kj)(B.data,"heatmap"):(0,F.$6)(B.data,"heatmap")}(),hasAnalytics:N(m.C.ViewCustomerAnalytics),analyticsWebUrl:null===(n=x.data)||void 0===n?void 0:n.analyticsWebUrl,share:B.data,yearGroups:q.data}),r.createElement(j.w,{aggregateEngagement:D.data,individualEngagement:V,yearGroups:H.data,config:x.data,users:z,viewKey:$.data,hasDataLoaded:Z,tableDataLoaded:G,anonymiseUsers:A,classroomStudents:L.items}))}var _=a(38143),M=a(20768),x=a(54948),P=a(52389);function q(e,t){(null==t||t>e.length)&&(t=e.length);for(var a=0,r=Array(t);a<t;a++)r[a]=e[a];return r}var D=c.T.encloseNamespace("insights.interactiveInsightsOverviewView");function W(e){var t,a,n,l,c,d,f=(c=(0,u.D)(_.g.ANONYMISE_USERS),d=1,function(e){if(Array.isArray(e))return e}(c)||function(e,t){var a=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=a){var r,n,i,s,o=[],l=!0,c=!1;try{if(i=(a=a.call(e)).next,0===t){if(Object(a)!==a)return;l=!1}else for(;!(l=(r=i.call(a)).done)&&(o.push(r.value),o.length!==t);l=!0);}catch(e){c=!0,n=e}finally{try{if(!l&&null!=a.return&&(s=a.return(),Object(s)!==s))return}finally{if(c)throw n}}return o}}(c,d)||function(e,t){if(e){if("string"==typeof e)return q(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)?q(e,t):void 0}}(c,d)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}())[0];(0,y.F)();var E=(0,b.T)().hasPermissions,S=i.a.useBasicFetch(h.L.config()),j=i.a.useBasicFetch(g.N.currentUser()),N=i.a.useBasicFetch(j.data&&v.h.yearGroups(j.data.customerId)),B=i.a.useBasicFetch(s.o.getShare(e.shareId)),O=(0,U.p)(e.shareId),T=i.a.useBasicFetch((null===(t=B.data)||void 0===t?void 0:t.objectId)&&M.b.interactiveMetadata(B.data.objectId)),R=i.a.useBasicFetch((null===(a=T.data)||void 0===a?void 0:a.interactiveId)&&M.b.interactive(T.data.interactiveId)),L=(0,P._)(e.shareId),W=i.a.useBasicFetch(A(e.shareId)),z=i.a.useBasicFetch(k(e.shareId)),V=i.a.useBasicFetch(C(e.shareId,"os_name"));(0,I.M)({title:T.data?D("pageTitle",{video:null===(n=T.data)||void 0===n?void 0:n.name}):null}),(0,p.v)([B,R,T]);var G=S.hasCompleted&&T.hasCompleted&&R.data&&z.hasCompleted&&W.hasCompleted&&V.hasCompleted&&L.hasCompleted&&N.hasCompleted,H=function(e,t){return{resultsAppLink:(0,o.rq)(e,t),questionsAppLink:(0,o.Sj)(e,t),heatmapAppLink:(0,o.Rv)(e,t)}}(B.data);return r.createElement("div",{className:"px-3"},r.createElement(w.j,{video:T.data,tabs:(0,F.kj)(B.data,"insights"),hasAnalytics:E(m.C.ViewCustomerAnalytics),analyticsWebUrl:null===(l=S.data)||void 0===l?void 0:l.analyticsWebUrl,share:B.data,yearGroups:N.data}),r.createElement(x.m,{aggregateEngagement:z.data,individualEngagement:W.data,interactive:R.data,interactiveMetadata:T.data,interactiveInsightsAppLinks:H,classroomStudents:O.items,results:L.data,osCount:V.data,config:S.data,anonymiseUsers:f,hasDataLoaded:G,share:B.data}))}var z=a(68536);function V(e,t){(null==t||t>e.length)&&(t=e.length);for(var a=0,r=Array(t);a<t;a++)r[a]=e[a];return r}var G=c.T.encloseNamespace("shared.interactiveInsightsQuestionsView");function H(e){var t,a,n,o,l,c,d,f=(c=(0,u.D)(_.g.ANONYMISE_USERS),d=1,function(e){if(Array.isArray(e))return e}(c)||function(e,t){var a=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=a){var r,n,i,s,o=[],l=!0,c=!1;try{if(i=(a=a.call(e)).next,0===t){if(Object(a)!==a)return;l=!1}else for(;!(l=(r=i.call(a)).done)&&(o.push(r.value),o.length!==t);l=!0);}catch(e){c=!0,n=e}finally{try{if(!l&&null!=a.return&&(s=a.return(),Object(s)!==s))return}finally{if(c)throw n}}return o}}(c,d)||function(e,t){if(e){if("string"==typeof e)return V(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)?V(e,t):void 0}}(c,d)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}())[0];(0,y.F)();var E=(0,b.T)().hasPermissions,S=i.a.useBasicFetch(g.N.currentUser()),j=i.a.useBasicFetch(h.L.config()),C=i.a.useBasicFetch(S.data&&v.h.yearGroups(S.data.customerId)),A=i.a.useBasicFetch(s.o.getShare(e.shareId)),k=i.a.useBasicFetch((null===(t=A.data)||void 0===t?void 0:t.objectId)&&M.b.interactiveMetadata(null===(a=A.data)||void 0===a?void 0:a.objectId)),N=i.a.useBasicFetch((null===(n=k.data)||void 0===n?void 0:n.interactiveId)&&M.b.interactive(k.data.interactiveId)),B=(0,P._)(e.shareId);(0,I.M)({title:k.data?G("pageTitle",{video:null===(o=k.data)||void 0===o?void 0:o.name}):null}),(0,p.v)([A,N,k]);var O=N.data&&k.data&&!!B.data&&!!C.data;return r.createElement("div",{className:"px-3"},r.createElement(w.j,{tabs:(0,F.kj)(A.data,"questions"),video:k.data,hasAnalytics:E(m.C.ViewCustomerAnalytics),analyticsWebUrl:null===(l=j.data)||void 0===l?void 0:l.analyticsWebUrl,share:A.data,yearGroups:C.data}),r.createElement(z.x,{interactive:N.data,interactiveMetadata:k.data,interactionId:e.interactionId,config:j.data,sortBy:e.sortBy,isFetching:!B.hasCompleted||N.isFetching,anonymiseUsers:f,results:B.data,hasDataLoaded:O}))}var $=a(14070),Z=a(97291),Q=a(78057);function Y(e,t){(null==t||t>e.length)&&(t=e.length);for(var a=0,r=Array(t);a<t;a++)r[a]=e[a];return r}var K=c.T.encloseNamespace("insights.interactiveInsightsStudents");function J(e){var t,a,o,l,c,d,f=(c=(0,u.D)(_.g.ANONYMISE_USERS),d=1,function(e){if(Array.isArray(e))return e}(c)||function(e,t){var a=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=a){var r,n,i,s,o=[],l=!0,c=!1;try{if(i=(a=a.call(e)).next,0===t){if(Object(a)!==a)return;l=!1}else for(;!(l=(r=i.call(a)).done)&&(o.push(r.value),o.length!==t);l=!0);}catch(e){c=!0,n=e}finally{try{if(!l&&null!=a.return&&(s=a.return(),Object(s)!==s))return}finally{if(c)throw n}}return o}}(c,d)||function(e,t){if(e){if("string"==typeof e)return Y(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)?Y(e,t):void 0}}(c,d)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}())[0],y=(0,b.T)().hasPermissions,E=i.a.useBasicFetch(g.N.currentUser()),S=i.a.useBasicFetch(h.L.config()),j=i.a.useBasicFetch(E.data&&v.h.yearGroups(E.data.customerId)),C=i.a.useBasicFetch(s.o.getShare(e.shareId)),A=i.a.useBasicFetch((null===(t=C.data)||void 0===t?void 0:t.objectId)&&M.b.interactiveMetadata(C.data.objectId)),k=i.a.useBasicFetch((null===(a=A.data)||void 0===a?void 0:a.interactiveId)&&M.b.interactive(A.data.interactiveId)),N=(0,P._)(e.shareId),B=k.data&&A.data&&!!N.data&&!!j.data;return(0,I.M)({title:A.data?K("pageTitle",{video:null===(o=A.data)||void 0===o?void 0:o.name}):null}),(0,p.v)([C,k,A]),r.createElement("div",{className:"px-3"},r.createElement(w.j,{tabs:(0,F.kj)(C.data,"results"),video:A.data,hasAnalytics:y(m.C.ViewCustomerAnalytics),analyticsWebUrl:null===(l=S.data)||void 0===l?void 0:l.analyticsWebUrl,share:C.data,yearGroups:j.data}),r.createElement(Q.R,{interactiveMetadata:A.data,viewStudentResults:function(t,a,r){n.Q.C$.trigger({application:Z.O.MY_SHARES,action:$.e.MyShares.INTERACTIVE_STUDENT_RESULTS,params:{studentId:t.id,shareId:e.shareId,interactionId:r,sessionId:t.sessionId}})},interactive:k.data,results:N.data,filterBy:e.filterBy,sortBy:e.sortBy,isFetching:!N.hasCompleted,anonymiseUsers:f,hasDataLoaded:B,config:S.data}))}var X=a(37802),ee=a(51870),te=a(50916),ae=a(84621),re=a(98551),ne=a(35223),ie=c.T.encloseNamespace("shared.insightStudentsNotWatched");function se(e){var t,a=(null===(t=e.students)||void 0===t?void 0:t.filter((function(t){var a;return!(null===(a=e.watchedIds)||void 0===a?void 0:a.includes(t.id))})))||[];return r.createElement(ae.L,{title:ie("title"),svgName:ne.vn.Puzzle,svgClassName:"bg-light-teal text-teal"},r.createElement(re.y,{students:a,imageCdnUrl:e.imageCdnUrl,imageUrl:e.imageUrl,description:ie("studentsDisplay"),anonymiseUsers:e.anonymiseUsers}))}var oe=c.T.encloseNamespace("shared.insightStudentsWatched");function le(e){return r.createElement(ae.L,{title:oe("title"),svgName:ne.vn.Flag,svgClassName:"bg-light-indigo text-indigo",count:e.students.length},r.createElement(re.y,{students:e.students,imageCdnUrl:e.imageCdnUrl,imageUrl:e.imageUrl,description:oe("studentsDisplay"),appLink:e.heatmapAppLink,appLinkText:oe("viewAll"),anonymiseUsers:e.anonymiseUsers}))}var ce=a(8604),ue=a(83345),de=a(99742),me=a(53214);const he="oHwkx";function ve(){return r.createElement("div",null,r.createElement("h2",{className:"h4 w-25 partial-loading-background"}," "),r.createElement("div",{className:"row g-3 mb-5"},r.createElement("div",{className:"col-12"},r.createElement("div",{className:"".concat(he," rounded partial-loading-background")}))),r.createElement("h2",{className:"h4 w-25 partial-loading-background"}," "),r.createElement("div",{className:"row g-3 mb-5"},r.createElement("div",{className:"col-6"},r.createElement("div",{className:"".concat(he," rounded partial-loading-background")})),r.createElement("div",{className:"col-6"},r.createElement("div",{className:"".concat(he," rounded partial-loading-background")}))))}var fe="insights.videoInsightsOverview";function ge(e){var t,a,n,i=e.hasDataLoaded&&!!(null===(t=e.viewers)||void 0===t?void 0:t.length);function s(){return e.viewers?Object.values(e.viewers):[]}return r.createElement(r.Fragment,null,!e.hasDataLoaded&&r.createElement(ve,null),e.hasDataLoaded&&r.createElement(me.u,{video:e.video,hasData:i,share:e.share},r.createElement("section",{className:"mb-5"},r.createElement("h2",{className:"h4"},r.createElement(ue.x,{namespace:fe,phrase:"studentViewing"}),r.createElement("span",null,": ",s().length,e.classroomStudents?"/".concat(e.classroomStudents.length):"")),r.createElement("div",{className:"row g-3"},!!(null===(a=e.classroomStudents)||void 0===a?void 0:a.length)&&r.createElement("div",{className:"col-12 col-md"},r.createElement(se,{students:e.classroomStudents,watchedIds:null===(n=e.viewers)||void 0===n?void 0:n.map((function(e){return e.id})),imageCdnUrl:e.config.imageCdnUrl,heatmapAppLink:e.videoInsightsAppLinks.heatmapAppLink,imageUrl:de.W.Insights.AVATAR,anonymiseUsers:e.anonymiseUsers})),r.createElement("div",{className:"col-12 col-md"},r.createElement(le,{students:s(),imageCdnUrl:e.config.imageCdnUrl,heatmapAppLink:e.videoInsightsAppLinks.heatmapAppLink,imageUrl:de.W.Insights.AVATAR,anonymiseUsers:e.anonymiseUsers})))),r.createElement("section",{className:"mb-5"},r.createElement("h2",{className:"h4"},r.createElement(ue.x,{namespace:fe,phrase:e.hasClassrooms?"classEngagement":"engagement"})),r.createElement("div",{className:"row g-3"},r.createElement("div",{className:"col-12 col-md-6"},r.createElement(ee.i,{osCount:e.osCount})),r.createElement("div",{className:"col-12 col-md-6"},r.createElement(te.b,{engagement:e.aggregateEngagement,heatmapAppLink:e.videoInsightsAppLinks.heatmapAppLink,engagementRate:(0,ce.Q)(e.individualEngagement)}))))))}function pe(e,t){(null==t||t>e.length)&&(t=e.length);for(var a=0,r=Array(t);a<t;a++)r[a]=e[a];return r}var ye=c.T.encloseNamespace("insights.videoInsightsOverviewView");function be(e){var t,a,n,l,c=(n=(0,u.D)(_.g.ANONYMISE_USERS),l=1,function(e){if(Array.isArray(e))return e}(n)||function(e,t){var a=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=a){var r,n,i,s,o=[],l=!0,c=!1;try{if(i=(a=a.call(e)).next,0===t){if(Object(a)!==a)return;l=!1}else for(;!(l=(r=i.call(a)).done)&&(o.push(r.value),o.length!==t);l=!0);}catch(e){c=!0,n=e}finally{try{if(!l&&null!=a.return&&(s=a.return(),Object(s)!==s))return}finally{if(c)throw n}}return o}}(n,l)||function(e,t){if(e){if("string"==typeof e)return pe(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)?pe(e,t):void 0}}(n,l)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}())[0];(0,y.F)();var d=(0,X.r)(null).hasClassrooms,f=(0,b.T)().hasPermissions,S=i.a.useBasicFetch(h.L.config()),j=i.a.useBasicFetch(g.N.currentUser()),N=i.a.useBasicFetch(j.data&&v.h.yearGroups(j.data.customerId)),B=i.a.useBasicFetch(s.o.getShare(e.shareId)),T=(0,U.p)(e.shareId),R=B.data&&E.M.getVideoRequest(B.data.objectId,B.data.objectTypeId),L=i.a.useBasicFetch(R);(0,I.M)({title:L.data?ye("pageTitle",{video:null===(t=L.data)||void 0===t?void 0:t.name}):null}),(0,p.v)([B,L]);var M=i.a.useBasicFetch(A(e.shareId)),x=i.a.useBasicFetch(k(e.shareId)),P=i.a.useBasicFetch(C(e.shareId,"os_name")),q=O(e.shareId),D=q.users,W=q.hasCompleted,z=S.hasCompleted&&L.hasCompleted&&M.hasCompleted&&x.hasCompleted&&P.hasCompleted&&N.data&&W,V=function(e){return{heatmapAppLink:(0,o.Rv)(e,void 0)}}(B.data);return r.createElement("div",{className:"px-3"},r.createElement(w.j,{video:L.data,tabs:(0,F.$6)(B.data,"insights"),hasAnalytics:f(m.C.ViewCustomerAnalytics),analyticsWebUrl:null===(a=S.data)||void 0===a?void 0:a.analyticsWebUrl,share:B.data,yearGroups:N.data}),r.createElement(ge,{hasDataLoaded:!!z,hasClassrooms:d,anonymiseUsers:c,videoInsightsAppLinks:V,config:S.data,video:L.data,classroomStudents:T.items,viewers:D,individualEngagement:M.data,aggregateEngagement:x.data,share:B.data,osCount:P.data}))}function Ie(e){return Ie="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},Ie(e)}function Ee(e,t,a){return(t=function(e){var t=function(e){if("object"!=Ie(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var a=t.call(e,"string");if("object"!=Ie(a))return a;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==Ie(t)?t:t+""}(t))in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}var Se=Ee(Ee(Ee({},l.E.Video,{insights:function(e){return r.createElement(be,{shareId:e.share.shareId})},heatmap:function(e){return r.createElement(L,{shareId:e.share.shareId})}}),l.E.Clip,{insights:function(e){return r.createElement(be,{shareId:e.share.shareId})},heatmap:function(e){return r.createElement(L,{shareId:e.share.shareId})}}),l.E.Interactive,{insights:function(e){return r.createElement(W,{shareId:e.share.shareId})},heatmap:function(e){return r.createElement(L,{shareId:e.share.shareId})},questions:function(e){return r.createElement(H,{interactionId:e.interactionId,sortBy:e.sortBy,shareId:e.share.shareId})},results:function(e){return r.createElement(J,{filterBy:e.filterBy,sortBy:e.sortBy,shareId:e.share.shareId})}});function we(e){var t=i.a.useBasicFetch(s.o.getShare(e.shareId)),a=function(e){var t,a=e.share,n=e.tab,i=null===(t=Se[null==a?void 0:a.objectTypeId])||void 0===t?void 0:t[n];return i?i(e):r.createElement(r.Fragment,null)}({share:t.data,tab:e.tab,interactionId:e.interactionId,sortBy:e.sortBy,filterBy:e.filterBy});return r.useEffect((function(){if(e.showShareOptions&&t.data){var a=(0,o.Zm)(t.data);a&&n.Q.C$.trigger(a)}}),[t.data,e.showShareOptions]),r.createElement(r.Fragment,null,a)}}}]);
|
|
2
|
-
//# sourceMappingURL=8856-df102acdff-lite.chunk.js.map
|