@clickview/lite 0.73.1 → 0.74.0-rc.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (164) hide show
  1. package/dist/bundles.json +2 -2
  2. package/dist/css/{7122-lite-a094f8fe17.chunk.css → 7122-lite-e0652641e4.chunk.css} +1 -1
  3. package/dist/css/{4499-lite-c43d17524f.chunk.css → 7150-lite-60d455ba66.chunk.css} +1 -1
  4. package/dist/css/{lite-app-10d57977f3.css → lite-app-98b3200025.css} +1 -1
  5. package/dist/languages/en.json +1 -1
  6. package/dist/scripts/{1362-061cd588c0-lite.chunk.js → 1362-56810ef4c8-lite.chunk.js} +3 -3
  7. package/dist/scripts/1362-56810ef4c8-lite.chunk.js.map +1 -0
  8. package/dist/scripts/{1367-12750422b0-lite.chunk.js → 1367-e0481edee3-lite.chunk.js} +2 -2
  9. package/dist/scripts/1367-e0481edee3-lite.chunk.js.map +1 -0
  10. package/dist/scripts/{1735-c0f3f1238a-lite.chunk.js → 1735-e4cdbc46ed-lite.chunk.js} +3 -3
  11. package/dist/scripts/1735-e4cdbc46ed-lite.chunk.js.map +1 -0
  12. package/dist/scripts/{324-6d6ee95d5d-lite.chunk.js → 324-e7a99b7d52-lite.chunk.js} +2 -2
  13. package/dist/scripts/{324-6d6ee95d5d-lite.chunk.js.map → 324-e7a99b7d52-lite.chunk.js.map} +1 -1
  14. package/dist/scripts/{3252-22fac3da15-lite.chunk.js → 3252-50b5c19f19-lite.chunk.js} +1 -1
  15. package/dist/scripts/{3252-22fac3da15-lite.chunk.js.map → 3252-50b5c19f19-lite.chunk.js.map} +1 -1
  16. package/dist/scripts/3677-4904f30c6a-lite.chunk.js +2 -0
  17. package/dist/scripts/3677-4904f30c6a-lite.chunk.js.map +1 -0
  18. package/dist/scripts/{3781-7a9ddc7736-lite.chunk.js → 3781-e092f92668-lite.chunk.js} +2 -2
  19. package/dist/scripts/{3781-7a9ddc7736-lite.chunk.js.map → 3781-e092f92668-lite.chunk.js.map} +1 -1
  20. package/dist/scripts/{3823-e38a508a3c-lite.chunk.js → 3823-0dc1972eb2-lite.chunk.js} +2 -2
  21. package/dist/scripts/3823-0dc1972eb2-lite.chunk.js.map +1 -0
  22. package/dist/scripts/3915-abd9a65a08-lite.chunk.js +2 -0
  23. package/dist/scripts/3915-abd9a65a08-lite.chunk.js.map +1 -0
  24. package/dist/scripts/{3978-09fb1f250e-lite.chunk.js → 3978-a551dd2648-lite.chunk.js} +2 -2
  25. package/dist/scripts/3978-a551dd2648-lite.chunk.js.map +1 -0
  26. package/dist/scripts/{4013-d31272b42a-lite.chunk.js → 4013-6f68d7031e-lite.chunk.js} +1 -1
  27. package/dist/scripts/{4013-d31272b42a-lite.chunk.js.map → 4013-6f68d7031e-lite.chunk.js.map} +1 -1
  28. package/dist/scripts/{4014-4225ce1eb6-lite.chunk.js → 4014-3eccce2f89-lite.chunk.js} +3 -3
  29. package/dist/scripts/4014-3eccce2f89-lite.chunk.js.map +1 -0
  30. package/dist/scripts/{4050-cf35c4ec45-lite.chunk.js → 4050-ffe5b6ae6d-lite.chunk.js} +2 -2
  31. package/dist/scripts/{4050-cf35c4ec45-lite.chunk.js.map → 4050-ffe5b6ae6d-lite.chunk.js.map} +1 -1
  32. package/dist/scripts/{4061-525ef00f69-lite.chunk.js → 4061-100002abf6-lite.chunk.js} +2 -2
  33. package/dist/scripts/4061-100002abf6-lite.chunk.js.map +1 -0
  34. package/dist/scripts/4191-9a08c4b205-lite.chunk.js +2 -0
  35. package/dist/scripts/4191-9a08c4b205-lite.chunk.js.map +1 -0
  36. package/dist/scripts/{4358-b21c24f96a-lite.chunk.js → 4358-a1bbca8249-lite.chunk.js} +1 -1
  37. package/dist/scripts/{4358-b21c24f96a-lite.chunk.js.map → 4358-a1bbca8249-lite.chunk.js.map} +1 -1
  38. package/dist/scripts/{4400-8c36fb4ab5-lite.chunk.js → 4400-755a158a52-lite.chunk.js} +2 -2
  39. package/dist/scripts/4400-755a158a52-lite.chunk.js.map +1 -0
  40. package/dist/scripts/4806-13c9302b2c-lite.chunk.js +2 -0
  41. package/dist/scripts/4806-13c9302b2c-lite.chunk.js.map +1 -0
  42. package/dist/scripts/{5135-864055ab0b-lite.chunk.js → 5135-166ec46620-lite.chunk.js} +2 -2
  43. package/dist/scripts/5135-166ec46620-lite.chunk.js.map +1 -0
  44. package/dist/scripts/{5143-286c66de2b-lite.chunk.js → 5143-d6c4a357ea-lite.chunk.js} +2 -2
  45. package/dist/scripts/5143-d6c4a357ea-lite.chunk.js.map +1 -0
  46. package/dist/scripts/{5743-a764171a6d-lite.chunk.js → 5743-14700e4f76-lite.chunk.js} +2 -2
  47. package/dist/scripts/5743-14700e4f76-lite.chunk.js.map +1 -0
  48. package/dist/scripts/{6030-5db8cc1bc4-lite.chunk.js → 6030-c2e07df714-lite.chunk.js} +2 -2
  49. package/dist/scripts/6030-c2e07df714-lite.chunk.js.map +1 -0
  50. package/dist/scripts/{618-4334f9451b-lite.chunk.js → 618-996d8b560b-lite.chunk.js} +2 -2
  51. package/dist/scripts/618-996d8b560b-lite.chunk.js.map +1 -0
  52. package/dist/scripts/{6207-f444184025-lite.chunk.js → 6207-be843186e0-lite.chunk.js} +1 -1
  53. package/dist/scripts/{6207-f444184025-lite.chunk.js.map → 6207-be843186e0-lite.chunk.js.map} +1 -1
  54. package/dist/scripts/{6413-c4333e80d4-lite.chunk.js → 6413-caaae6a383-lite.chunk.js} +3 -3
  55. package/dist/scripts/{6413-c4333e80d4-lite.chunk.js.map → 6413-caaae6a383-lite.chunk.js.map} +1 -1
  56. package/dist/scripts/{6646-24a34f7d99-lite.chunk.js → 6646-c5775f6553-lite.chunk.js} +3 -3
  57. package/dist/scripts/6646-c5775f6553-lite.chunk.js.map +1 -0
  58. package/dist/scripts/{6909-8a45942b63-lite.chunk.js → 6909-6805b6a0d9-lite.chunk.js} +2 -2
  59. package/dist/scripts/6909-6805b6a0d9-lite.chunk.js.map +1 -0
  60. package/dist/scripts/7064-b3bafc599f-lite.chunk.js +2 -0
  61. package/dist/scripts/7064-b3bafc599f-lite.chunk.js.map +1 -0
  62. package/dist/scripts/7122-dbf374af58-lite.chunk.js +2 -0
  63. package/dist/scripts/7122-dbf374af58-lite.chunk.js.map +1 -0
  64. package/dist/scripts/7150-93a205975c-lite.chunk.js +2 -0
  65. package/dist/scripts/7150-93a205975c-lite.chunk.js.map +1 -0
  66. package/dist/scripts/{7234-85d4acaa33-lite.chunk.js → 7234-bcddfe2112-lite.chunk.js} +2 -2
  67. package/dist/scripts/7234-bcddfe2112-lite.chunk.js.map +1 -0
  68. package/dist/scripts/{7383-690bc234f1-lite.chunk.js → 7383-02d4956304-lite.chunk.js} +2 -2
  69. package/dist/scripts/7383-02d4956304-lite.chunk.js.map +1 -0
  70. package/dist/scripts/{7873-2e64f4eb37-lite.chunk.js → 7873-0ce0523a28-lite.chunk.js} +2 -2
  71. package/dist/scripts/{7873-2e64f4eb37-lite.chunk.js.map → 7873-0ce0523a28-lite.chunk.js.map} +1 -1
  72. package/dist/scripts/{8248-050265ed2d-lite.chunk.js → 8248-41dad9bf71-lite.chunk.js} +3 -3
  73. package/dist/scripts/8248-41dad9bf71-lite.chunk.js.map +1 -0
  74. package/dist/scripts/8385-6ef08fa319-lite.chunk.js +2 -0
  75. package/dist/scripts/8385-6ef08fa319-lite.chunk.js.map +1 -0
  76. package/dist/scripts/{8451-1cb649a3f3-lite.chunk.js → 8451-0103210a8f-lite.chunk.js} +2 -2
  77. package/dist/scripts/8451-0103210a8f-lite.chunk.js.map +1 -0
  78. package/dist/scripts/8630-80f676dcda-lite.chunk.js +2 -0
  79. package/dist/scripts/8630-80f676dcda-lite.chunk.js.map +1 -0
  80. package/dist/scripts/8891-5118c47b59-lite.chunk.js +2 -0
  81. package/dist/scripts/8891-5118c47b59-lite.chunk.js.map +1 -0
  82. package/dist/scripts/8982-b9e53e43ec-lite.chunk.js +2 -0
  83. package/dist/scripts/8982-b9e53e43ec-lite.chunk.js.map +1 -0
  84. package/dist/scripts/{9186-daf77d7174-lite.chunk.js → 9186-c1d2615458-lite.chunk.js} +2 -2
  85. package/dist/scripts/9186-c1d2615458-lite.chunk.js.map +1 -0
  86. package/dist/scripts/{9241-dbac9cb9f9-lite.chunk.js → 9241-2386134dd3-lite.chunk.js} +2 -2
  87. package/dist/scripts/9241-2386134dd3-lite.chunk.js.map +1 -0
  88. package/dist/scripts/{9345-30ccf524c5-lite.chunk.js → 9345-0a7f58bb53-lite.chunk.js} +3 -3
  89. package/dist/scripts/9345-0a7f58bb53-lite.chunk.js.map +1 -0
  90. package/dist/scripts/9352-d4b2dc16a8-lite.chunk.js +2 -0
  91. package/dist/scripts/9352-d4b2dc16a8-lite.chunk.js.map +1 -0
  92. package/dist/scripts/{9503-275c13891d-lite.chunk.js → 9503-715c46ecc1-lite.chunk.js} +2 -2
  93. package/dist/scripts/9503-715c46ecc1-lite.chunk.js.map +1 -0
  94. package/dist/scripts/9630-ca2a850260-lite.chunk.js +2 -0
  95. package/dist/scripts/9630-ca2a850260-lite.chunk.js.map +1 -0
  96. package/dist/scripts/{9767-d69fdc31b0-lite.chunk.js → 9767-1b583ceb6c-lite.chunk.js} +2 -2
  97. package/dist/scripts/9767-1b583ceb6c-lite.chunk.js.map +1 -0
  98. package/dist/scripts/9894-7c119a8fe3-lite.chunk.js +2 -0
  99. package/dist/scripts/9894-7c119a8fe3-lite.chunk.js.map +1 -0
  100. package/dist/scripts/bundle-5b65703152.min.js +3 -0
  101. package/dist/scripts/{bundle-0075afb6af.min.js.map → bundle-5b65703152.min.js.map} +1 -1
  102. package/package.json +1 -1
  103. package/dist/scripts/1362-061cd588c0-lite.chunk.js.map +0 -1
  104. package/dist/scripts/1367-12750422b0-lite.chunk.js.map +0 -1
  105. package/dist/scripts/1735-c0f3f1238a-lite.chunk.js.map +0 -1
  106. package/dist/scripts/3677-20958f59d3-lite.chunk.js +0 -2
  107. package/dist/scripts/3677-20958f59d3-lite.chunk.js.map +0 -1
  108. package/dist/scripts/3823-e38a508a3c-lite.chunk.js.map +0 -1
  109. package/dist/scripts/3915-a1f15d687a-lite.chunk.js +0 -2
  110. package/dist/scripts/3915-a1f15d687a-lite.chunk.js.map +0 -1
  111. package/dist/scripts/3978-09fb1f250e-lite.chunk.js.map +0 -1
  112. package/dist/scripts/4014-4225ce1eb6-lite.chunk.js.map +0 -1
  113. package/dist/scripts/4061-525ef00f69-lite.chunk.js.map +0 -1
  114. package/dist/scripts/4191-7612e1713c-lite.chunk.js +0 -2
  115. package/dist/scripts/4191-7612e1713c-lite.chunk.js.map +0 -1
  116. package/dist/scripts/4400-8c36fb4ab5-lite.chunk.js.map +0 -1
  117. package/dist/scripts/4499-1365934bf2-lite.chunk.js +0 -2
  118. package/dist/scripts/4499-1365934bf2-lite.chunk.js.map +0 -1
  119. package/dist/scripts/4806-384760d9c9-lite.chunk.js +0 -2
  120. package/dist/scripts/4806-384760d9c9-lite.chunk.js.map +0 -1
  121. package/dist/scripts/5135-864055ab0b-lite.chunk.js.map +0 -1
  122. package/dist/scripts/5143-286c66de2b-lite.chunk.js.map +0 -1
  123. package/dist/scripts/5743-a764171a6d-lite.chunk.js.map +0 -1
  124. package/dist/scripts/6030-5db8cc1bc4-lite.chunk.js.map +0 -1
  125. package/dist/scripts/618-4334f9451b-lite.chunk.js.map +0 -1
  126. package/dist/scripts/6646-24a34f7d99-lite.chunk.js.map +0 -1
  127. package/dist/scripts/6909-8a45942b63-lite.chunk.js.map +0 -1
  128. package/dist/scripts/7064-3ccf1b82d1-lite.chunk.js +0 -2
  129. package/dist/scripts/7064-3ccf1b82d1-lite.chunk.js.map +0 -1
  130. package/dist/scripts/7122-352fdd3516-lite.chunk.js +0 -2
  131. package/dist/scripts/7122-352fdd3516-lite.chunk.js.map +0 -1
  132. package/dist/scripts/7234-85d4acaa33-lite.chunk.js.map +0 -1
  133. package/dist/scripts/7383-690bc234f1-lite.chunk.js.map +0 -1
  134. package/dist/scripts/8248-050265ed2d-lite.chunk.js.map +0 -1
  135. package/dist/scripts/8385-083e882d77-lite.chunk.js +0 -2
  136. package/dist/scripts/8385-083e882d77-lite.chunk.js.map +0 -1
  137. package/dist/scripts/8451-1cb649a3f3-lite.chunk.js.map +0 -1
  138. package/dist/scripts/8630-0945271ea2-lite.chunk.js +0 -2
  139. package/dist/scripts/8630-0945271ea2-lite.chunk.js.map +0 -1
  140. package/dist/scripts/8891-393bb5bdaf-lite.chunk.js +0 -2
  141. package/dist/scripts/8891-393bb5bdaf-lite.chunk.js.map +0 -1
  142. package/dist/scripts/8982-8c21fab48a-lite.chunk.js +0 -2
  143. package/dist/scripts/8982-8c21fab48a-lite.chunk.js.map +0 -1
  144. package/dist/scripts/9186-daf77d7174-lite.chunk.js.map +0 -1
  145. package/dist/scripts/9241-dbac9cb9f9-lite.chunk.js.map +0 -1
  146. package/dist/scripts/9345-30ccf524c5-lite.chunk.js.map +0 -1
  147. package/dist/scripts/9352-04db4c533d-lite.chunk.js +0 -2
  148. package/dist/scripts/9352-04db4c533d-lite.chunk.js.map +0 -1
  149. package/dist/scripts/9503-275c13891d-lite.chunk.js.map +0 -1
  150. package/dist/scripts/9630-285237c980-lite.chunk.js +0 -2
  151. package/dist/scripts/9630-285237c980-lite.chunk.js.map +0 -1
  152. package/dist/scripts/9767-d69fdc31b0-lite.chunk.js.map +0 -1
  153. package/dist/scripts/9894-10943e41f7-lite.chunk.js +0 -2
  154. package/dist/scripts/9894-10943e41f7-lite.chunk.js.map +0 -1
  155. package/dist/scripts/bundle-0075afb6af.min.js +0 -3
  156. /package/dist/scripts/{1362-061cd588c0-lite.chunk.js.LICENSE.txt → 1362-56810ef4c8-lite.chunk.js.LICENSE.txt} +0 -0
  157. /package/dist/scripts/{1735-c0f3f1238a-lite.chunk.js.LICENSE.txt → 1735-e4cdbc46ed-lite.chunk.js.LICENSE.txt} +0 -0
  158. /package/dist/scripts/{4014-4225ce1eb6-lite.chunk.js.LICENSE.txt → 4014-3eccce2f89-lite.chunk.js.LICENSE.txt} +0 -0
  159. /package/dist/scripts/{4050-cf35c4ec45-lite.chunk.js.LICENSE.txt → 4050-ffe5b6ae6d-lite.chunk.js.LICENSE.txt} +0 -0
  160. /package/dist/scripts/{6413-c4333e80d4-lite.chunk.js.LICENSE.txt → 6413-caaae6a383-lite.chunk.js.LICENSE.txt} +0 -0
  161. /package/dist/scripts/{6646-24a34f7d99-lite.chunk.js.LICENSE.txt → 6646-c5775f6553-lite.chunk.js.LICENSE.txt} +0 -0
  162. /package/dist/scripts/{8248-050265ed2d-lite.chunk.js.LICENSE.txt → 8248-41dad9bf71-lite.chunk.js.LICENSE.txt} +0 -0
  163. /package/dist/scripts/{9345-30ccf524c5-lite.chunk.js.LICENSE.txt → 9345-0a7f58bb53-lite.chunk.js.LICENSE.txt} +0 -0
  164. /package/dist/scripts/{bundle-0075afb6af.min.js.LICENSE.txt → bundle-5b65703152.min.js.LICENSE.txt} +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scripts/9352-d4b2dc16a8-lite.chunk.js","mappings":"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","sources":["file:///app/packages/libs/shared/src/apps/analytics/utils/InteractiveUtils.ts","file:///app/packages/libs/shared/src/enums/InteractionCorrectness.ts","file:///app/packages/libs/shared/src/enums/InteractiveAnswerStatus.ts","file:///app/packages/libs/shared/src/utils/InteractiveCorrectnessHelper.ts","file:///app/packages/libs/shared/src/apps/analytics/components/insights/average-attempts/insight-average-attempts.scss","file:///app/packages/libs/shared/src/apps/analytics/components/insights/average-attempts/InsightAverageAttempts.tsx","file:///app/packages/libs/shared/src/apps/analytics/components/insights/average-score/insight-average-score.scss","file:///app/packages/libs/shared/src/apps/analytics/components/insights/average-score/InsightAverageScore.tsx","file:///app/packages/libs/shared/src/apps/analytics/components/insights/completed-students/InsightCompletedStudents.tsx","file:///app/packages/libs/shared/src/apps/analytics/components/insights/easiest-question/InsightEasiestQuestion.tsx","file:///app/packages/libs/shared/src/apps/analytics/components/insights/hardest-question/InsightHardestQuestion.tsx","file:///app/packages/libs/shared/src/apps/analytics/components/insights/high-scoring-students/InsightHighScoringStudents.tsx","file:///app/packages/libs/shared/src/apps/analytics/components/insights/low-scoring-students/InsightLowScoringStudents.tsx","file:///app/packages/libs/shared/src/apps/analytics/components/insights/marking-required/InsightMarkingRequired.tsx","file:///app/packages/libs/shared/src/apps/analytics/components/insights/not-completed-students/InsightNotCompletedStudents.tsx","file:///app/packages/projects/lite/src/apps/insights/components/insights-mask/InsightsMarkingRequiredMask.tsx","file:///app/packages/projects/lite/src/apps/insights/components/interactive-insights-overview/partial-loading/partial-interactive-insights-overview.scss","file:///app/packages/projects/lite/src/apps/insights/components/interactive-insights-overview/partial-loading/PartialInteractiveInsightsOverview.tsx","file:///app/packages/projects/lite/src/apps/insights/components/interactive-insights-overview/InteractiveInsightsOverview.tsx"],"sourcesContent":["import { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\n\nimport { MarkedAnswerHash } from 'libs/shared/apps/analytics/hooks/UseMarkAnswers';\nimport { ResultsSummary } from 'libs/shared/apps/analytics/interfaces/ResultsSummary';\nimport { StudentResultsWithSummary } from 'libs/shared/apps/analytics/interfaces/StudentResultsWithSummary';\nimport { ScoreThresholdDefaults, ScoreThresholds } from 'libs/shared/constants/ScoreThresholds';\nimport { InteractionCorrectness } from 'libs/shared/enums/InteractionCorrectness';\nimport { InteractiveAnswerStatus } from 'libs/shared/enums/InteractiveAnswerStatus';\nimport { Interaction, StudentAnswer, StudentResults } from 'libs/shared/interfaces';\nimport { Interactive, InteractiveResultSet } from 'libs/shared/interfaces';\nimport { InteractiveCorrectnessHelper } from 'libs/shared/utils/InteractiveCorrectnessHelper';\nimport { flattenInteractions, getInteractions, getStudentAttempt, getStudentResult } from 'libs/shared/utils/InteractiveHelper';\n\ninterface StudentGroups {\n markingRequired: StudentResultsWithSummary[];\n lowScore: StudentResultsWithSummary[];\n highScore: StudentResultsWithSummary[];\n completed: StudentResultsWithSummary[];\n notCompleted: StudentResultsWithSummary[];\n}\n\nexport function groupStudents(\n interactive: Interactive,\n results: InteractiveResultSet,\n scoreThreshold?: ScoreThresholds\n): StudentGroups {\n const groups: StudentGroups = {\n markingRequired: [],\n lowScore: [],\n highScore: [],\n completed: [],\n notCompleted: []\n };\n\n const interactions = getInteractions(interactive);\n const interactionIds = new Set(interactions.map(i => i.id));\n \n results.students.forEach(s => {\n const withSummary = {\n ...s,\n summary: getStudentResultsSummary(interactive, s)\n };\n \n if (withSummary.summary.awaitingMarking) {\n groups.markingRequired.push(withSummary);\n return;\n }\n\n const result = ArrayHelper.last(s.results);\n const answeredInteractions = result.attempts.filter(a => !!interactionIds.has(a?.answers[0]?.questionId)).length;\n\n if (answeredInteractions === interactionIds.size) {\n groups.completed.push(withSummary);\n } else {\n groups.notCompleted.push(withSummary);\n return;\n }\n \n if (withSummary.summary.percentCorrect >= (scoreThreshold?.HIGH || ScoreThresholdDefaults.HIGH))\n groups.highScore.push(withSummary);\n \n if (withSummary.summary.percentCorrect < (scoreThreshold?.MODERATE || ScoreThresholdDefaults.MODERATE))\n groups.lowScore.push(withSummary);\n });\n \n const sortedLowScore = ArrayHelper.sortBy(groups.lowScore, s => s.summary.percentCorrect);\n const sortedHighScore = ArrayHelper.sortBy(groups.highScore, s => -s.summary.percentCorrect);\n \n return {\n ...groups,\n lowScore: sortedLowScore,\n highScore: sortedHighScore\n };\n}\n\nexport function getInteractionById(interactive: Interactive, interactionId: string): Interaction {\n const flattenedInteractions = flattenInteractions(interactive);\n return flattenedInteractions.find(i => i.id.toString() === interactionId.toString());\n}\n\n/**\n * We need to use the question and result ids as a list of one student's responses\n * to multiple questions will all have the same result id and a list of multiple\n * students responses to one question will all have the same questionId.\n */\nexport function getMarkedAnswerId(answer: StudentAnswer): string {\n return `${answer.questionId}:${answer.resultId}`;\n}\n\nexport function getMarkedStatus(\n interactionId: string,\n studentResults: StudentResults,\n markedAnswers: MarkedAnswerHash\n): InteractiveAnswerStatus {\n const result = getStudentResult(studentResults);\n const studentResponse = getStudentAttempt(interactionId, result);\n\n const isMarkedCorrect = studentResponse?.answers.every(a => {\n return markedAnswers[getMarkedAnswerId(a)]?.status === InteractiveAnswerStatus.Correct;\n });\n\n if (isMarkedCorrect)\n return InteractiveAnswerStatus.Correct;\n\n const isMarkedIncorrect = studentResponse?.answers.every(a => {\n return markedAnswers[getMarkedAnswerId(a)]?.status === InteractiveAnswerStatus.Incorrect;\n });\n\n if (isMarkedIncorrect)\n return InteractiveAnswerStatus.Incorrect;\n}\n\nexport function getInteractionResultsSummary(\n interaction: Interaction,\n results: InteractiveResultSet\n): ResultsSummary {\n const numStudents = results.students.length;\n let numCorrect = 0;\n let answered = 0;\n let unanswered = 0;\n let awaitingMarking = 0;\n let attempts = 0;\n\n results.students.forEach(s => {\n const result = getStudentResult(s);\n\n if (!result)\n return;\n\n attempts = attempts + s.results.length;\n\n const correctness = InteractiveCorrectnessHelper.isInteractionCorrect(interaction, result);\n\n if (correctness === InteractionCorrectness.Correct)\n numCorrect++;\n\n if (correctness === InteractionCorrectness.UnAnswered)\n unanswered++;\n\n if (correctness === InteractionCorrectness.AwaitingMarking)\n awaitingMarking++;\n\n if (correctness !== InteractionCorrectness.UnAnswered)\n answered++;\n });\n\n\n const percentCorrect = numStudents > 0\n ? numCorrect / numStudents\n : 0;\n\n return {\n percentCorrect,\n correct: numCorrect,\n answered,\n unanswered,\n awaitingMarking,\n attempts\n };\n}\n\nexport function getStudentResultsSummary(interactive: Interactive, studentResults: StudentResults): ResultsSummary {\n const result = getStudentResult(studentResults);\n\n const interactions = getInteractions(interactive);\n\n const numInteractions = interactions.length;\n\n let numCorrect = 0;\n let awaitingMarking = 0;\n\n interactions.forEach(i => {\n const correctness = InteractiveCorrectnessHelper.isInteractionCorrect(i, result);\n\n if (correctness === InteractionCorrectness.Correct)\n numCorrect++;\n\n if (correctness === InteractionCorrectness.AwaitingMarking)\n awaitingMarking++;\n });\n\n const percentCorrect = numInteractions > 0 ? numCorrect / numInteractions : 0;\n\n /**\n * Our interactions list has images and annotations filtered out.\n * We built a map of valid questions, so that we can calculate the unswered accurately.\n * We're doing this because of a bug that caused annotations and images to record answers in the player.\n * - Sha\n */\n const interactionIds = new Set(interactions.map(i => i.id));\n const answeredInteractions = result.attempts.filter(a => !!interactionIds.has(a?.answers[0]?.questionId)).length;\n\n return {\n answered: answeredInteractions,\n attempts: studentResults.results.length,\n unanswered: numInteractions - answeredInteractions,\n percentCorrect,\n correct: numCorrect,\n awaitingMarking\n };\n}","export enum InteractionCorrectness {\n Correct,\n Incorrect,\n AwaitingMarking,\n \n Answered,\n UnAnswered,\n NotApplicable\n}","export enum InteractiveAnswerStatus {\n Incorrect = 0,\n Correct = 1,\n PendingReview = 2\n}","import { InteractionCorrectness } from 'libs/shared/enums/InteractionCorrectness';\nimport { InteractiveAnswerStatus } from 'libs/shared/enums/InteractiveAnswerStatus';\nimport { Interaction, InteractionTypeId, InteractiveResult, StudentAnswer } from 'libs/shared/interfaces';\n\ntype GetStudentAnswerByActionableItemId = (id: string) => string;\n\nfunction notApplicable(): InteractionCorrectness {\n return InteractionCorrectness.NotApplicable;\n}\n\nfunction awaitingMarking(): InteractionCorrectness {\n return InteractionCorrectness.AwaitingMarking;\n}\n\nfunction isMissingWordCorrect(\n interaction: Interaction,\n getStudentAnswer: GetStudentAnswerByActionableItemId\n): InteractionCorrectness {\n const items = interaction.actionableItems.filter(a => a\n .isCorrect);\n\n if (items.every(a => !getStudentAnswer(a.id)))\n return InteractionCorrectness.UnAnswered;\n\n const correct = items.every(a => a.name.trim().toLowerCase() === getStudentAnswer(a.id)?.trim().toLowerCase());\n return correct ? InteractionCorrectness.Correct : InteractionCorrectness.Incorrect;\n}\n\nfunction isMultipleChoiceCorrect(\n interaction: Interaction,\n getStudentAnswer: GetStudentAnswerByActionableItemId\n): InteractionCorrectness {\n if (interaction.actionableItems.every(a => !getStudentAnswer(a.id)))\n return InteractionCorrectness.UnAnswered;\n \n const correctItems = interaction.actionableItems.filter(a => a.isCorrect);\n\n const correct = correctItems.every(a => {\n const studentAnswer = getStudentAnswer(a.id);\n\n /**\n * In the past we've only ever checked the answer name. But since we introduced the ability to have image interactions\n * with no question text, we've need to swap to saving the id. But past submissions still have the name\n * - Sha\n */\n return studentAnswer?.toString() === a.id?.toString() || studentAnswer === a.name;\n });\n return correct ? InteractionCorrectness.Correct : InteractionCorrectness.Incorrect;\n}\n\nfunction isMarkableAnswerMarkedCorrect(\n interaction: Interaction,\n getStudentAnswer: (id: string) => StudentAnswer\n): InteractionCorrectness {\n let correctness: InteractionCorrectness;\n\n // There should only be one actionableItem\n interaction.actionableItems.forEach(item => {\n const studentAnswer = getStudentAnswer(item.id);\n\n if (!studentAnswer) {\n correctness = InteractionCorrectness.UnAnswered;\n return;\n }\n\n if (studentAnswer.status === InteractiveAnswerStatus.Correct) {\n correctness = InteractionCorrectness.Correct;\n return;\n }\n\n if (studentAnswer.status === InteractiveAnswerStatus.Incorrect) {\n correctness = InteractionCorrectness.Incorrect;\n return;\n }\n\n correctness = InteractionCorrectness.AwaitingMarking;\n });\n\n return correctness;\n}\n\ntype IsCorrectFunction = (interaction: Interaction, result: InteractiveResult) => InteractionCorrectness;\n\nfunction getGetStudentAnswer(interaction: Interaction, result: InteractiveResult): (id: string) => StudentAnswer {\n return (id: string) => {\n const attempt = result.attempts.find(a => a.id === interaction.id);\n return attempt?.answers.find(s => s.id === id);\n };\n}\n\nfunction wrapIsMissingWordCorrect(interaction: Interaction, result: InteractiveResult): InteractionCorrectness {\n const getStudentAnswer = getGetStudentAnswer(interaction, result);\n\n return isMissingWordCorrect(interaction, (id: string) => {\n const answer = getStudentAnswer(id);\n return answer?.text;\n });\n}\n\nfunction wrapIsMultipleChoiceCorrect(interaction: Interaction, result: InteractiveResult): InteractionCorrectness {\n const getStudentAnswer = getGetStudentAnswer(interaction, result);\n\n return isMultipleChoiceCorrect(interaction, (id: string) => {\n const answer = getStudentAnswer(id);\n return answer?.text;\n });\n}\n\nfunction wrapIsMarkableAnswerMarkedCorrect(\n interaction: Interaction,\n result: InteractiveResult\n): InteractionCorrectness {\n const getStudentAnswer = getGetStudentAnswer(interaction, result);\n return isMarkableAnswerMarkedCorrect(interaction, getStudentAnswer);\n}\n\nconst IsCorrectLookup: {[typeId: number]: IsCorrectFunction} = {\n [InteractionTypeId.Annotation]: notApplicable,\n [InteractionTypeId.Image]: notApplicable,\n [InteractionTypeId.MissingWord]: wrapIsMissingWordCorrect,\n [InteractionTypeId.MultipleChoice]: wrapIsMultipleChoiceCorrect,\n [InteractionTypeId.ShortAnswer]: wrapIsMarkableAnswerMarkedCorrect,\n [InteractionTypeId.TrueOrFalse]: wrapIsMultipleChoiceCorrect,\n [InteractionTypeId.Illustration]: wrapIsMarkableAnswerMarkedCorrect\n};\n\nfunction isInteractionCorrect(interaction: Interaction, result: InteractiveResult): InteractionCorrectness {\n const isCorrectFn = IsCorrectLookup[interaction.typeId];\n\n return isCorrectFn(interaction, result);\n}\n\nexport const InteractiveCorrectnessHelper = {\n notApplicable,\n awaitingMarking,\n isMissingWordCorrect,\n isMultipleChoiceCorrect,\n isInteractionCorrect\n};\n","// extracted by mini-css-extract-plugin\nexport default {\"tealChart\":\"lZZf0\",\"grayChart\":\"wJQc4\"};","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { InsightCard } from 'libs/shared/apps/analytics/components/insight-card/InsightCard';\nimport { InsightChart } from 'libs/shared/apps/analytics/components/insight-chart/InsightChart';\nimport { CHART_FONT_STYLES } from 'libs/shared/apps/analytics/constants/ChartStyles';\nimport { ChartData } from 'libs/shared/apps/analytics/interfaces/ChartData';\nimport { StudentResultsWithSummary } from 'libs/shared/apps/analytics/interfaces/StudentResultsWithSummary';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport styles from './insight-average-attempts.scss';\n\nconst namespace = 'shared.insightAverageAttempts';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface InsightAverageAttemptsProps {\n students: StudentResultsWithSummary[];\n}\n\nexport function InsightAverageAttempts(props: InsightAverageAttemptsProps) {\n const categoriesData = getCategoriesData();\n const highestAttemptsCount = getHighestAttemptsCount();\n const averageAttempts = getAverageAttempts();\n const chartData = getChartData();\n\n function getCategoriesData() {\n const categoriesData = props.students.reduce((acc, student) => {\n const attemptsCategory = student.summary.attempts.toString();\n\n if (!(attemptsCategory in acc)) {\n Object.assign(acc, { [attemptsCategory]: 0 });\n }\n\n acc[attemptsCategory]++;\n\n return acc;\n }, {} as HashObject);\n return Object.keys(categoriesData).length ? categoriesData : { 0: 0 };\n }\n\n function getHighestAttemptsCount() {\n return Math.max(...Object.keys(categoriesData).map(category => categoriesData[category]));\n }\n\n function getAverageAttempts(): number[] {\n return Object.keys(categoriesData).reduce((acc, category) => {\n const userCount = categoriesData[category];\n return userCount === highestAttemptsCount ? [ ...acc, category ] : acc;\n }, []);\n }\n\n function calculateAverage() {\n const total = Object.entries(categoriesData).reduce(\n (acc, [ attemptsCount, usersCount ]) => {\n acc.totalAttempts += +attemptsCount * usersCount;\n acc.totalUsers += usersCount;\n return acc;\n },\n { totalAttempts: 0, totalUsers: 0 }\n );\n\n return total.totalUsers === 0 ? 0 : Math.round(total.totalAttempts / total.totalUsers * 100) / 100;\n }\n\n function getChartData(): ChartData {\n const noAttempts = categoriesData[0] === 0;\n\n return {\n categories: Object.keys(categoriesData),\n series: [{\n type: 'column',\n color: categoriesData[0] ? '#EAEAEA' : '#40C2BB',\n borderRadius: 4,\n dataLabels: {\n enabled: !noAttempts,\n style: CHART_FONT_STYLES,\n inside: false,\n overflow: 'allow',\n crop: false\n },\n data: Object.keys(categoriesData).map(category => {\n const highestCount = highestAttemptsCount !== 0 && categoriesData[category] === highestAttemptsCount;\n\n return {\n className: `${noAttempts ? styles.grayChart : styles.tealChart} ${categoriesData[category] !== highestAttemptsCount && categoriesData[category] !== 0 ? 'opacity-25' : ''}`,\n borderWidth: highestCount ? 2 : 0,\n borderColor: highestCount ? 'black' : '',\n y: categoriesData[category]\n };\n })\n }]\n };\n }\n\n return (\n <InsightCard\n title={getPhrase('title')}\n svgName={cvSvgLibrary.Refresh}\n svgClassName='bg-light-purple text-purple'\n >\n <p>\n {averageAttempts.length\n ? <Text namespace={namespace} phrase='averageAttempts' options={{ smartCount: calculateAverage() }} />\n : <Text namespace={namespace} phrase='noAttempts' />\n }\n </p>\n\n <div className='mt-auto'>\n <InsightChart label={getPhrase('attempts')} chartData={chartData} />\n </div>\n </InsightCard>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"redChart\":\"G7zOw\",\"yellowChart\":\"k34mm\",\"greenChart\":\"vBneA\",\"blueChart\":\"RPTWm\",\"grayChart\":\"k4JFZ\",\"borderDark\":\"LWor3\"};","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\n\nimport { InsightCard } from 'libs/shared/apps/analytics/components/insight-card/InsightCard';\nimport { InsightChart } from 'libs/shared/apps/analytics/components/insight-chart/InsightChart';\nimport { ChartData } from 'libs/shared/apps/analytics/interfaces/ChartData';\nimport { StudentResultsWithSummary } from 'libs/shared/apps/analytics/interfaces/StudentResultsWithSummary';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport styles from './insight-average-score.scss';\n\nconst namespace = 'shared.insightAverageScore';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\n\ninterface InsightAverageScoreProps {\n students: StudentResultsWithSummary[];\n}\n\nexport function InsightAverageScore(props: InsightAverageScoreProps) {\n function getChartData(): ChartData {\n const scoreCount = Array(11).fill(0);\n const scorePercentageData = props.students.reduce((acc, value) => {\n const scoreIndex = Math.floor(value.summary.percentCorrect * 10);\n acc[scoreIndex]++;\n\n return acc;\n }, scoreCount);\n\n const PERCENTAGES = [ '0', '10', '20', '30', '40', '50', '60', '70', '80', '90', '100' ];\n\n return {\n categories: PERCENTAGES,\n series: [{\n type: 'column',\n color: '#4E9ACE',\n borderRadius: 4,\n data: scorePercentageData.map((score, index) => {\n const percentageCategory = Number(PERCENTAGES[index]);\n\n const getChartColour = (percentage: number, score: number) => {\n if (score === 0)\n return styles.grayChart;\n if (percentage < 50)\n return styles.redChart;\n if (percentage < 70)\n return styles.yellowChart;\n if (percentage < 90)\n return styles.greenChart;\n\n return styles.blueChart;\n };\n\n return {\n className: `${getChartColour(percentageCategory, score)}`,\n y: score\n };\n })\n }]\n };\n }\n\n function getAverageNumbers() {\n const averageScores = props.students.map(student => student.summary.percentCorrect);\n const averagePercentage = averageScores.reduce((a, b) => a + b, 0) / averageScores.length;\n const totalQuestions = ArrayHelper.last(\n ArrayHelper.last(props.students).results\n ).attempts.length;\n\n return {\n averageScore: Math.round(totalQuestions * averagePercentage),\n totalQuestions,\n averagePercentage: (averagePercentage * 100).toFixed(1)\n };\n }\n\n return (\n <InsightCard\n title={getPhrase('title')}\n svgName={cvSvgLibrary.Analytics}\n svgClassName='bg-light-orange text-orange'\n >\n <p>\n {props.students.length\n ? <Text namespace={namespace} phrase='averageScore' options={getAverageNumbers()} />\n : <Text namespace={namespace} phrase='noAnswers' />\n }\n </p>\n\n <InsightChart label={`${getPhrase('studentScores')} (%)`} chartData={getChartData()} />\n </InsightCard>\n );\n}","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { InsightCard } from 'libs/shared/apps/analytics/components/insight-card/InsightCard';\nimport { InsightStudentList } from 'libs/shared/apps/analytics/components/insight-student-list/InsightStudentList';\nimport { StudentResultsWithSummary } from 'libs/shared/apps/analytics/interfaces/StudentResultsWithSummary';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nconst namespace = 'shared.insightCompletedStudents';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface InsightCompletedStudentsProps {\n students: StudentResultsWithSummary[];\n imageCdnUrl: string;\n imageUrl: string;\n resultsAppLink: Core.AppLink;\n anonymiseUsers: boolean;\n}\n\nexport function InsightCompletedStudents(props: InsightCompletedStudentsProps) {\n return (\n <InsightCard\n title={getPhrase('title')}\n svgName={cvSvgLibrary.Flag}\n svgClassName='bg-light-indigo text-indigo'\n count={props.students.length}\n >\n <InsightStudentList\n students={props.students.map(student => ({ ...student.user, percentage: student.summary.percentCorrect }))}\n imageCdnUrl={props.imageCdnUrl}\n imageUrl={props.imageUrl}\n description={getPhrase('completedStudents')}\n appLink={props.resultsAppLink}\n appLinkText={getPhrase('viewAll')}\n anonymiseUsers={props.anonymiseUsers}\n />\n </InsightCard>\n );\n}","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { HashObject } from 'libs/common/react/interfaces';\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\n\nimport { InsightCard } from 'libs/shared/apps/analytics/components/insight-card/InsightCard';\nimport { InteractionWithResultsSummary } from 'libs/shared/apps/analytics/interfaces/InteractionWithResultsSummary';\nimport { getInteractionResultsSummary } from 'libs/shared/apps/analytics/utils/InteractiveUtils';\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { InteractionLabel } from 'libs/shared/components/interactive-questions/InteractionLabel';\nimport { PercentageIndicator, PercentageIndicatorLayout } from 'libs/shared/components/percentage-indicator/PercentageIndicator';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { Interactive, InteractiveMetadata, InteractiveResultSet } from 'libs/shared/interfaces';\nimport { getInteractions } from 'libs/shared/utils/InteractiveHelper';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nconst namespace = 'shared.insightEasiestQuestion';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface InsightEasiestQuestionProps {\n interactive: Interactive;\n interactiveMetadata: InteractiveMetadata;\n results: InteractiveResultSet;\n questionsAppLink: Core.AppLink;\n}\n\nexport function InsightEasiestQuestion(props: InsightEasiestQuestionProps) {\n const easiestQuestion = React.useMemo(\n () => getEasiestQuestion(props.interactive, props.results),\n [props.results.students.length]\n );\n\n function getEasiestQuestion(interactive: Interactive, results: InteractiveResultSet): InteractionWithResultsSummary {\n const interactions: InteractionWithResultsSummary[] = getInteractions(interactive).map(i => ({\n ...i,\n resultsSummary: getInteractionResultsSummary(i, results)\n }));\n\n const answeredInteractions = interactions.filter(i =>\n !!i.resultsSummary.answered && !i.resultsSummary.awaitingMarking);\n\n const sortedInteractions = ArrayHelper.sortBy(\n answeredInteractions,\n i => i.resultsSummary.percentCorrect\n );\n\n return ArrayHelper.last(sortedInteractions);\n }\n\n return (\n <InsightCard\n title={getPhrase('title')}\n svgName={cvSvgLibrary.StarOutline}\n svgClassName='bg-light-blue text-blue'\n >\n <div className='d-flex align-items-center'>\n <PercentageIndicator\n percentage={easiestQuestion?.resultsSummary?.percentCorrect}\n layout={PercentageIndicatorLayout.LabelInside}\n />\n {easiestQuestion\n ? <div className='d-flex ms-2'>\n <InteractionLabel interaction={easiestQuestion} iconClassName='flex-shrink-0' />\n </div>\n : <span className='ms-2'>{getPhrase('noAnswers')}</span>\n }\n </div>\n\n {easiestQuestion && (\n <AppLink\n appLink={{\n ...props.questionsAppLink,\n params: {\n ...props.questionsAppLink.params as HashObject,\n sortBy: 'score_desc'\n }\n }}\n className='text-info'>\n <Text namespace={namespace} phrase='viewQuestions' />\n </AppLink>\n )}\n </InsightCard>\n );\n}","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { HashObject } from 'libs/common/react/interfaces';\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\n\nimport { InsightCard } from 'libs/shared/apps/analytics/components/insight-card/InsightCard';\nimport { InteractionWithResultsSummary } from 'libs/shared/apps/analytics/interfaces/InteractionWithResultsSummary';\nimport { getInteractionResultsSummary } from 'libs/shared/apps/analytics/utils/InteractiveUtils';\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { InteractionLabel } from 'libs/shared/components/interactive-questions/InteractionLabel';\nimport { PercentageIndicator, PercentageIndicatorLayout } from 'libs/shared/components/percentage-indicator/PercentageIndicator';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { Interactive, InteractiveMetadata, InteractiveResultSet } from 'libs/shared/interfaces';\nimport { getInteractions } from 'libs/shared/utils/InteractiveHelper';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nconst namespace = 'shared.insightHardestQuestion';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface InsightHardestQuestionProps {\n interactive: Interactive;\n interactiveMetadata: InteractiveMetadata;\n results: InteractiveResultSet;\n questionsAppLink: Core.AppLink;\n}\n\nexport function InsightHardestQuestion(props: InsightHardestQuestionProps) {\n const hardestQuestion = React.useMemo(\n () => getHardestQuestion(props.interactive, props.results),\n [props.results.students.length]\n );\n\n function getHardestQuestion(interactive: Interactive, results: InteractiveResultSet): InteractionWithResultsSummary {\n const interactions: InteractionWithResultsSummary[] = getInteractions(interactive).map(i => ({\n ...i,\n resultsSummary: getInteractionResultsSummary(i, results)\n }));\n\n const answeredInteractions = interactions.filter(i =>\n !!i.resultsSummary.answered && !i.resultsSummary.awaitingMarking);\n\n const sortedInteractions = ArrayHelper.sortBy(\n answeredInteractions,\n i => i.resultsSummary.percentCorrect\n );\n\n return ArrayHelper.first(sortedInteractions);\n }\n\n return (\n <InsightCard\n title={getPhrase('title')}\n svgName={cvSvgLibrary.QuestionMark}\n svgClassName='bg-light-orange text-orange'\n >\n <div className='d-flex align-items-center'>\n <PercentageIndicator\n percentage={hardestQuestion?.resultsSummary?.percentCorrect}\n layout={PercentageIndicatorLayout.LabelInside}\n />\n {hardestQuestion\n ? <div className='d-flex ms-2'>\n <InteractionLabel interaction={hardestQuestion} iconClassName='flex-shrink-0' />\n </div>\n : <span className='ms-2'>{getPhrase('noAnswers')}</span>\n }\n </div>\n\n {hardestQuestion && (\n <AppLink\n appLink={{\n ...props.questionsAppLink,\n params: {\n ...props.questionsAppLink.params as HashObject,\n sortBy: 'score_asc'\n }\n }}\n className='text-info'\n >\n <Text namespace={namespace} phrase='viewQuestions' />\n </AppLink>\n )}\n </InsightCard>\n );\n}","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { InsightCard } from 'libs/shared/apps/analytics/components/insight-card/InsightCard';\nimport { InsightStudentList } from 'libs/shared/apps/analytics/components/insight-student-list/InsightStudentList';\nimport { StudentResultsWithSummary } from 'libs/shared/apps/analytics/interfaces/StudentResultsWithSummary';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nconst namespace = 'shared.insightHighScoringStudents';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface InsightHighScoringStudentsProps {\n students: StudentResultsWithSummary[];\n imageCdnUrl: string;\n greenChartImageUrl: string;\n resultsAppLink: Core.AppLink;\n completed: StudentResultsWithSummary[];\n anonymiseUsers?: boolean;\n}\n\nexport function InsightHighScoringStudents(props: InsightHighScoringStudentsProps) {\n return (\n <InsightCard\n title={getPhrase('title')}\n svgName={cvSvgLibrary.Trophy}\n svgClassName='bg-light-teal text-teal'\n count={props.students.length}\n >\n <InsightStudentList\n students={props.students.map(student => ({ ...student.user, percentage: student.summary.percentCorrect }))}\n imageCdnUrl={props.imageCdnUrl}\n imageUrl={props.greenChartImageUrl}\n description={getPhrase(props.completed.length ? 'noStudents' : 'highScore')}\n appLink={{\n ...props.resultsAppLink,\n params: {\n ...props.resultsAppLink.params as HashObject,\n sortBy: 'score_desc'\n }\n }}\n appLinkText={getPhrase('viewByHighest')}\n anonymiseUsers={props.anonymiseUsers}\n />\n </InsightCard>\n );\n}","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { InsightCard } from 'libs/shared/apps/analytics/components/insight-card/InsightCard';\nimport { InsightStudentList } from 'libs/shared/apps/analytics/components/insight-student-list/InsightStudentList';\nimport { StudentResultsWithSummary } from 'libs/shared/apps/analytics/interfaces/StudentResultsWithSummary';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nconst namespace = 'shared.insightLowScoringStudents';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface InsightLowScoringStudentsProps {\n students: StudentResultsWithSummary[];\n imageCdnUrl: string;\n redChartImageUrl: string;\n heartImageUrl: string;\n resultsAppLink: Core.AppLink;\n completed: StudentResultsWithSummary[];\n anonymiseUsers: boolean;\n}\n\nexport function InsightLowScoringStudents(props: InsightLowScoringStudentsProps) {\n return (\n <InsightCard\n title={getPhrase('title')}\n svgName={cvSvgLibrary.Hand}\n svgClassName='bg-light-red text-red'\n count={props.students.length}\n >\n <InsightStudentList\n students={props.students.map(student => ({ ...student.user, percentage: student.summary.percentCorrect }))}\n imageCdnUrl={props.imageCdnUrl}\n imageUrl={props.completed.length ? props.heartImageUrl : props.redChartImageUrl}\n description={getPhrase(props.completed.length ? 'doingWell' : 'lowScore')}\n appLink={{\n ...props.resultsAppLink,\n params: {\n ...props.resultsAppLink.params as HashObject,\n sortBy: 'score_asc'\n }\n }}\n appLinkText={getPhrase('viewByLowest')}\n anonymiseUsers={props.anonymiseUsers}\n />\n </InsightCard>\n );\n}","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { InsightCard } from 'libs/shared/apps/analytics/components/insight-card/InsightCard';\nimport { InsightStudentList } from 'libs/shared/apps/analytics/components/insight-student-list/InsightStudentList';\nimport { FilterStudentsBy } from 'libs/shared/apps/analytics/utils/StudentTableUtils';\nimport { User } from 'libs/shared/interfaces';\nimport { PublicInteractiveUser } from 'libs/shared/interfaces/models/interactive-results/PublicInteractiveUser';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\n\nconst namespace = 'shared.insightMarkingRequired';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\n\ninterface InsightMarkingRequiredProps {\n students: (User | PublicInteractiveUser)[];\n imageCdnUrl: string;\n imageUrl: string;\n resultsAppLink: Core.AppLink;\n anonymiseUsers: boolean;\n}\n\nexport function InsightMarkingRequired(props: InsightMarkingRequiredProps) {\n const markingRequiredFilter: FilterStudentsBy = 'marking_required';\n\n return (\n <InsightCard\n title={getPhrase('title')}\n svgName={cvSvgLibrary.Hand}\n svgClassName='bg-light-blue text-blue'\n count={props.students.length}\n >\n <InsightStudentList\n students={props.students}\n imageCdnUrl={props.imageCdnUrl}\n imageUrl={props.imageUrl}\n description={getPhrase('studentsRequireMarking')}\n appLink={{\n ...props.resultsAppLink,\n params: {\n filterBy: markingRequiredFilter\n }\n }}\n appLinkText={getPhrase('viewAll')}\n anonymiseUsers={props.anonymiseUsers}\n />\n </InsightCard>\n );\n}","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\n\nimport { InsightCard } from 'libs/shared/apps/analytics/components/insight-card/InsightCard';\nimport { InsightStudentList } from 'libs/shared/apps/analytics/components/insight-student-list/InsightStudentList';\nimport { StudentResultsWithSummary } from 'libs/shared/apps/analytics/interfaces/StudentResultsWithSummary';\nimport { FilterStudentsBy } from 'libs/shared/apps/analytics/utils/StudentTableUtils';\nimport { User } from 'libs/shared/interfaces';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nconst namespace = 'shared.insightNotCompletedStudents';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface InsightNotCompletedStudentsProps {\n markingRequiredStudents: StudentResultsWithSummary[];\n completedStudents: StudentResultsWithSummary[];\n notCompletedStudents: StudentResultsWithSummary[];\n classroomStudents: User[];\n imageCdnUrl: string;\n imageUrl: string;\n resultsAppLink: Core.AppLink;\n anonymiseUsers: boolean;\n}\n\nexport function InsightNotCompletedStudents(props: InsightNotCompletedStudentsProps) {\n const notCompletedStudents = getNotCompletedStudents();\n \n function getNotCompletedStudents() {\n const markingRequiredStudentIds = props.markingRequiredStudents.map(student => student?.user.id);\n const completedStudentIds = props.completedStudents.map(student => student?.user.id);\n \n const notStartedStudents = props.classroomStudents.filter(student => {\n return !markingRequiredStudentIds.includes(student.id) &&\n !completedStudentIds.includes(student.id);\n });\n \n return ArrayHelper.uniq([\n ...props.notCompletedStudents.map(student => student.user),\n ...notStartedStudents\n ], 'id');\n }\n \n const notCompletedFilter: FilterStudentsBy = 'not_completed';\n\n return (\n <InsightCard\n title={getPhrase('title')}\n svgName={cvSvgLibrary.Puzzle}\n svgClassName='bg-light-teal text-teal'\n count={notCompletedStudents.length}\n >\n <InsightStudentList\n students={notCompletedStudents}\n imageCdnUrl={props.imageCdnUrl}\n imageUrl={props.imageUrl}\n description={getPhrase('completed')}\n appLink={{\n ...props.resultsAppLink,\n params: notCompletedFilter\n }}\n appLinkText={getPhrase('viewAll')}\n anonymiseUsers={props.anonymiseUsers}\n />\n </InsightCard>\n );\n}","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { FilterStudentsBy } from 'libs/shared/apps/analytics/utils/StudentTableUtils';\nimport { IconButton } from 'libs/shared/components/icon-button/IconButton';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport { ImageUrls } from 'shared/constants/ImageUrls';\n\nimport styles from './insights-mask.scss';\n\nconst namespace = 'lite.insightsMask';\n\ninterface InsightsMarkingRequiredMaskProps extends React.PropsWithChildren {\n requiresMarking: number;\n appLink: Core.AppLink;\n hideMarkingRequiredMask: () => void;\n}\n\nexport function InsightsMarkingRequiredMask(props: InsightsMarkingRequiredMaskProps) {\n const filterBy: FilterStudentsBy = 'marking_required';\n\n return (\n <div className={`${props.requiresMarking && styles.mask} position-relative`}>\n <div className={props.requiresMarking ? 'position-absolute top-0' : ''}>{props.children}</div>\n <div\n className={props.requiresMarking ? `${styles.backdrop} d-flex flex-column align-items-center justify-content-start py-5` : ''}\n >\n {!!props.requiresMarking && (\n <div className='text-center w-50'>\n <img src={ImageUrls.Insights.MARKING_RESPONSES} className='mb-3' width={288} />\n <h2 className='h3 mb-3'><Text namespace={namespace} phrase='markHeading' /></h2>\n <p className='mb-3'><Text namespace={namespace} phrase='markDescription' /></p>\n <IconButton\n svgName={cvSvgLibrary.Check}\n className='btn btn-dark mb-3'\n appLink={{\n ...props.appLink,\n params: {\n ...props.appLink.params as HashObject,\n filterBy\n }\n }}\n >\n <Text namespace={namespace} phrase='markResponses' options={{ smartCount: props.requiresMarking }} />\n </IconButton>\n <button className='btn btn-link d-block p-0 mx-auto' onClick={props.hideMarkingRequiredMask}><Text namespace={namespace} phrase='seeIncomplete' /></button>\n </div>\n )}\n </div>\n </div>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"partialInsights\":\"jf2hT\"};","import React from 'react';\n\nimport styles from './partial-interactive-insights-overview.scss';\n\nexport function PartialInteractiveInsightsOverview() {\n return (\n <div>\n <h2 className='h4 w-25 partial-loading-background'>&nbsp;</h2>\n <div className='row g-3 mb-5'>\n <div className='col-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\n <h2 className='h4 w-25 partial-loading-background'>&nbsp;</h2>\n <div className='row g-3 mb-5'>\n <div className='col-6'>\n <div className={`${styles.partialInsights} rounded partial-loading-background`}></div>\n </div>\n <div className='col-6'>\n <div className={`${styles.partialInsights} rounded partial-loading-background`}></div>\n </div>\n <div 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\n <h2 className='h4 w-25 partial-loading-background'>&nbsp;</h2>\n <div className='row g-3 mb-5'>\n <div className='col-6'>\n <div className={`${styles.partialInsights} rounded partial-loading-background`}></div>\n </div>\n <div className='col-6'>\n <div className={`${styles.partialInsights} rounded partial-loading-background`}></div>\n </div>\n <div className='col-6'>\n <div className={`${styles.partialInsights} rounded partial-loading-background`}></div>\n </div>\n <div className='col-6'>\n <div className={`${styles.partialInsights} rounded partial-loading-background`}></div>\n </div>\n </div>\n </div>\n );\n}","import React from 'react';\n\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { InsightAverageAttempts } from 'libs/shared/apps/analytics/components/insights/average-attempts/InsightAverageAttempts';\nimport { InsightAverageScore } from 'libs/shared/apps/analytics/components/insights/average-score/InsightAverageScore';\nimport { InsightCompletedStudents } from 'libs/shared/apps/analytics/components/insights/completed-students/InsightCompletedStudents';\nimport { InsightDevices } from 'libs/shared/apps/analytics/components/insights/devices/InsightDevices';\nimport { InsightEasiestQuestion } from 'libs/shared/apps/analytics/components/insights/easiest-question/InsightEasiestQuestion';\nimport { InsightHardestQuestion } from 'libs/shared/apps/analytics/components/insights/hardest-question/InsightHardestQuestion';\nimport { InsightHeatmap } from 'libs/shared/apps/analytics/components/insights/heatmap/InsightHeatmap';\nimport { InsightHighScoringStudents } from 'libs/shared/apps/analytics/components/insights/high-scoring-students/InsightHighScoringStudents';\nimport { InsightLowScoringStudents } from 'libs/shared/apps/analytics/components/insights/low-scoring-students/InsightLowScoringStudents';\nimport { InsightMarkingRequired } from 'libs/shared/apps/analytics/components/insights/marking-required/InsightMarkingRequired';\nimport { InsightNotCompletedStudents } from 'libs/shared/apps/analytics/components/insights/not-completed-students/InsightNotCompletedStudents';\nimport { BaseAnalyticsEventResponse } from 'libs/shared/apps/analytics/interfaces/BaseAnalyticsEvent';\nimport { StudentResultsWithSummary } from 'libs/shared/apps/analytics/interfaces/StudentResultsWithSummary';\nimport { groupStudents } from 'libs/shared/apps/analytics/utils/InteractiveUtils';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { ScoreThresholdInsights } from 'libs/shared/constants/ScoreThresholds';\nimport { BasePaginatedCollection, Config, Engagement, Interactive, InteractiveMetadata, InteractiveResultSet, User } from 'libs/shared/interfaces';\nimport { PublicInteractiveUser } from 'libs/shared/interfaces/models/interactive-results/PublicInteractiveUser';\n\nimport { ImageUrls } from 'shared/constants/ImageUrls';\n\nimport { InsightsMarkingRequiredMask } from 'apps/insights/components/insights-mask/InsightsMarkingRequiredMask';\nimport { InsightsShareMask } from 'apps/insights/components/insights-mask/InsightsShareMask';\nimport { PartialInteractiveInsightsOverview } from 'apps/insights/components/interactive-insights-overview/partial-loading/PartialInteractiveInsightsOverview';\n\nconst namespace = 'insights.interactiveInsightsOverview';\n\ninterface InteractiveInsightsOverviewProps {\n interactive: Interactive;\n results: InteractiveResultSet;\n interactiveMetadata: InteractiveMetadata;\n videoViews: BaseAnalyticsEventResponse;\n classroomStudents: BasePaginatedCollection<User>;\n aggregateEngagement: Engagement\n interactiveInsightsAppLinks: HashObject;\n classroomFilterOnly?: boolean;\n config: Config;\n params: HashObject;\n anonymiseUsers: boolean;\n hasShared: boolean;\n hasDataLoaded: boolean;\n}\n\nexport function InteractiveInsightsOverview(props: InteractiveInsightsOverviewProps) {\n const [ hideMarkingRequiredMask, setHideMarkingRequiredMask ] = React.useState(false);\n\n const studentGroups = props.hasDataLoaded && groupStudents(props.interactive, props.results, ScoreThresholdInsights);\n\n function getUsers(studentResult: StudentResultsWithSummary[]): (User | PublicInteractiveUser)[] {\n return studentResult.map(student => student.user || student.publicUser);\n }\n\n return (\n <>\n {!props.hasDataLoaded && <PartialInteractiveInsightsOverview />}\n\n {props.hasDataLoaded &&\n <InsightsShareMask video={props.interactiveMetadata} hasShared={props.hasShared}>\n <section className='mb-5'>\n <h2 className='h4'>\n <Text namespace={namespace} phrase='studentResponses' />\n <span>: {props.results.students.length}{props.classroomStudents ? `/${props.classroomStudents.data.length}` : ''}</span>\n </h2>\n <div className='row g-3'>\n <div className='col'>\n <InsightMarkingRequired\n imageUrl={ImageUrls.Insights.SPEECH_BUBBLE_ASTERISK}\n resultsAppLink={props.interactiveInsightsAppLinks.resultsAppLink}\n imageCdnUrl={props.config.imageCdnUrl}\n students={getUsers(studentGroups.markingRequired)}\n anonymiseUsers={props.anonymiseUsers}\n />\n </div>\n {props.classroomFilterOnly && (\n <div className='col'>\n <InsightNotCompletedStudents\n markingRequiredStudents={studentGroups.markingRequired}\n completedStudents={studentGroups.completed}\n notCompletedStudents={studentGroups.notCompleted}\n classroomStudents={props.classroomStudents.data}\n imageCdnUrl={props.config.imageCdnUrl}\n imageUrl={ImageUrls.Insights.JIGSAW}\n resultsAppLink={props.interactiveInsightsAppLinks.resultsAppLink}\n anonymiseUsers={props.anonymiseUsers}\n />\n </div>\n )}\n <div className='col'>\n <InsightCompletedStudents\n students={studentGroups.completed}\n imageCdnUrl={props.config.imageCdnUrl}\n imageUrl={ImageUrls.Insights.AVATAR}\n resultsAppLink={props.interactiveInsightsAppLinks.resultsAppLink}\n anonymiseUsers={props.anonymiseUsers}\n />\n </div>\n </div>\n </section>\n <InsightsMarkingRequiredMask\n requiresMarking={!hideMarkingRequiredMask && studentGroups.markingRequired.length}\n appLink={props.interactiveInsightsAppLinks.resultsAppLink}\n hideMarkingRequiredMask={() => setHideMarkingRequiredMask(true)}\n >\n <section className='mb-5'>\n <h2 className='h4'>\n <Text namespace={namespace} phrase='studentsPerformance' />\n </h2>\n <div className='row g-3'>\n <div className='col-6'>\n <InsightLowScoringStudents\n redChartImageUrl={ImageUrls.Insights.RED_CHART}\n heartImageUrl={ImageUrls.Insights.SPEECH_BUBBLE_HEART}\n resultsAppLink={props.interactiveInsightsAppLinks.resultsAppLink}\n imageCdnUrl={props.config.imageCdnUrl}\n students={studentGroups.lowScore}\n completed={studentGroups.completed}\n anonymiseUsers={props.anonymiseUsers}\n />\n </div>\n <div className='col-6'>\n <InsightHighScoringStudents\n greenChartImageUrl={ImageUrls.Insights.GREEN_CHART}\n resultsAppLink={props.interactiveInsightsAppLinks.resultsAppLink}\n imageCdnUrl={props.config.imageCdnUrl}\n students={studentGroups.highScore}\n completed={studentGroups.completed}\n anonymiseUsers={props.anonymiseUsers}\n />\n </div>\n <div className='col-6'>\n <InsightHardestQuestion\n interactive={props.interactive}\n interactiveMetadata={props.interactiveMetadata}\n results={props.results}\n questionsAppLink={props.interactiveInsightsAppLinks.questionsAppLink}\n />\n </div>\n <div className='col-6'>\n <InsightEasiestQuestion\n interactive={props.interactive}\n interactiveMetadata={props.interactiveMetadata}\n results={props.results}\n questionsAppLink={props.interactiveInsightsAppLinks.questionsAppLink}\n />\n </div>\n </div>\n </section>\n <section className='mb-5'>\n <h2 className='h4'>\n <Text namespace={namespace} phrase='classPerformance' />\n </h2>\n <div className='row g-3'>\n <div className='col-6'>\n <InsightAverageScore\n students={studentGroups.completed}\n />\n </div>\n <div className='col-6'>\n <InsightAverageAttempts\n students={studentGroups.completed}\n />\n </div>\n <div className='col-6'>\n <InsightDevices\n osCount={props.videoViews?.osCount}\n />\n </div>\n <div className='col-6'>\n <InsightHeatmap\n engagement={props.aggregateEngagement}\n heatmapAppLink={props.interactiveInsightsAppLinks.heatmapAppLink}\n />\n </div>\n </div>\n </section>\n </InsightsMarkingRequiredMask>\n </InsightsShareMask>\n }\n </>\n );\n}"],"names":["groupStudents","interactive","results","scoreThreshold","groups","markingRequired","lowScore","highScore","completed","notCompleted","interactions","interactionIds","Set","map","i","id","students","forEach","s","withSummary","summary","getStudentResultsSummary","awaitingMarking","push","attempts","filter","a","has","answers","questionId","length","size","percentCorrect","HIGH","MODERATE","sortedLowScore","sortedHighScore","getInteractionById","interactionId","find","toString","getMarkedAnswerId","answer","resultId","getMarkedStatus","studentResults","markedAnswers","result","studentResponse","every","status","getInteractionResultsSummary","interaction","numStudents","numCorrect","answered","unanswered","correctness","correct","numInteractions","answeredInteractions","InteractionCorrectness","InteractiveAnswerStatus","notApplicable","isMissingWordCorrect","getStudentAnswer","items","actionableItems","isCorrect","name","trim","toLowerCase","isMultipleChoiceCorrect","studentAnswer","getGetStudentAnswer","attempt","wrapIsMultipleChoiceCorrect","text","wrapIsMarkableAnswerMarkedCorrect","item","isMarkableAnswerMarkedCorrect","IsCorrectLookup","InteractiveCorrectnessHelper","isInteractionCorrect","isCorrectFn","typeId","namespace","getPhrase","LanguageService","InsightAverageAttempts","props","noAttempts","total","categoriesData","reduce","acc","student","attemptsCategory","Object","assign","keys","getCategoriesData","highestAttemptsCount","Math","max","category","averageAttempts","chartData","categories","series","type","color","borderRadius","dataLabels","enabled","style","inside","overflow","crop","data","highestCount","className","borderWidth","borderColor","y","InsightCard","title","svgName","svgClassName","Text","phrase","options","smartCount","entries","attemptsCount","usersCount","totalAttempts","totalUsers","round","InsightChart","label","InsightAverageScore","averageScores","averagePercentage","b","totalQuestions","ArrayHelper","averageScore","toFixed","scoreCount","Array","fill","scorePercentageData","value","floor","PERCENTAGES","score","index","percentageCategory","Number","percentage","getChartColour","InsightCompletedStudents","count","InsightStudentList","user","imageCdnUrl","imageUrl","description","appLink","resultsAppLink","appLinkText","anonymiseUsers","InsightEasiestQuestion","easiestQuestion","resultsSummary","sortedInteractions","PercentageIndicator","layout","InteractionLabel","iconClassName","AppLink","questionsAppLink","params","sortBy","InsightHardestQuestion","hardestQuestion","InsightHighScoringStudents","greenChartImageUrl","InsightLowScoringStudents","heartImageUrl","redChartImageUrl","InsightMarkingRequired","filterBy","InsightNotCompletedStudents","markingRequiredStudentIds","completedStudentIds","notStartedStudents","notCompletedStudents","markingRequiredStudents","completedStudents","classroomStudents","includes","InsightsMarkingRequiredMask","requiresMarking","children","src","ImageUrls","width","IconButton","onClick","hideMarkingRequiredMask","PartialInteractiveInsightsOverview","InteractiveInsightsOverview","studentResult","setHideMarkingRequiredMask","studentGroups","hasDataLoaded","InsightsShareMask","video","interactiveMetadata","hasShared","interactiveInsightsAppLinks","config","publicUser","classroomFilterOnly","InsightDevices","osCount","videoViews","InsightHeatmap","engagement","aggregateEngagement","heatmapAppLink"],"sourceRoot":""}
@@ -1,2 +1,2 @@
1
- "use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[9503],{70621:(e,t,n)=>{n.d(t,{b:()=>c});var a=n(32735),r=n(86348),i=n(68626),o=n(80143);var c=a.memo((function(e){var t,n,c=null===(n=null===(t=e.data)||void 0===t?void 0:t.subjectPresentationAudiences)||void 0===n?void 0:n.data,s=(0,o.n)(c,e.presentationAudiences);return a.createElement("div",{className:"px-1 flex-shrink-0 position-relative ".concat("YY2CD")},a.createElement(r.u,{video:e.data,preload:e.preloadImage,analyticsData:e.analyticsData,analyticsOptions:e.analyticsOptions,type:"static",appLink:e.getAppLink(e.data),imageOptions:{size:e.thumbnailSize},textPosition:i.z.Below,audience:s,hideRating:!!s,hideDuration:!1,commonVideoProps:e.commonVideoProps}))}))},94644:(e,t,n)=>{n.d(t,{r:()=>u});var a=n(50242),r=n(81886),i=n(67058),o=n(14553),c=n(49267),s=n(49075),l={notFound:i.d,forbidden:{rating:o.q,yearLevel:o.q,region:c.a,privacy:o.q},badRequest:s._,internalServerError:s._};function u(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(e){var i;i="number"==typeof e?e:e.status;var o=Object.assign(Object.assign({},l),t);i&&r.Q.Ry.isStatusCodeError(i)&&(i!==a.o.InternalServer?i!==a.o.NotFound?i!==a.o.Forbidden?n.badRequest||r.Q.Ry.throw(new o.badRequest):n.forbidden||r.Q.Ry.throw(new o.forbidden.privacy):n.notFound||r.Q.Ry.throw(new o.notFound):n.internalServerError||r.Q.Ry.throw(new s._))}}},99503:(e,t,n)=>{n.r(t),n.d(t,{StudentFeedView:()=>ht});var a=n(32735),r=n(4390),i=n(23481),o=n(81886),c=n(20354),s=n(65858),l=n(11518),u=n(16714),d=n(39151),m=n(31949),f=n(90605),p=n(65294),v=n(22902),g=n(79612),y=n(75795),h=n(14070),E=n(97291),b=n(58321),S=n(28400),A=n(70621),D=n(4594),I=n(58704),N=n(38129);const C={avatar:"y1nvt",higherWidgetBtn:"EQjTN"};var w="studentFeed.recentActivities",k=function(e){var t;if(e.shareId)return{application:E.O.SHARE,action:h.e.Share.VIEW_SHARE_LINK,args:[e.shareId]};switch(null===(t=e.object)||void 0===t?void 0:t.typeId){case D.E.Video:return{application:E.O.VIDEOS,action:h.e.Videos.PLAY_VIDEO,args:[e.object.id,S.m.slugify(e.object.name)]};case D.E.Clip:return{application:E.O.CLIPS,action:h.e.Clips.PLAY_CLIP,args:[e.object.id,S.m.slugify(e.object.name)]};case D.E.Interactive:return{application:E.O.INTERACTIVES,action:h.e.Interactives.VIEW_INTERACTIVE,args:[e.object.id,S.m.slugify(e.object.name)]};default:return null}};function O(e){return a.createElement(A.b,{data:e.data.object,getAppLink:function(){return k(e.data)},preloadImage:e.preloadImage,analyticsData:e.analyticsData,analyticsOptions:e.analyticsOptions,presentationAudiences:[],context:e.context,collectionAppLink:e.collectionAppLink,thumbnailSize:e.thumbnailSize,onHover:e.onHover,commonVideoProps:e.commonVideoProps})}function x(e){if(!e.recentActivities)return a.createElement(a.Fragment,null);var t=!!e.recentActivities.find((function(e){var t,n;return!!(null===(n=null===(t=e.share)||void 0===t?void 0:t.owner)||void 0===n?void 0:n.id)}));return a.createElement("div",{className:"pb-5"},a.createElement(l.kM,{name:i.T.getPhrase(w,"recentlyWatched"),type:N.l9.Row,contents:I.z.RecentActivities,childComponent:O,extraChildComponentProps:{setActivityStatus:e.setActivityStatus,commonVideoProps:e.commonVideoProps},appLink:{application:E.O.WATCH_HISTORY,action:h.e.WatchHistory.HOME},collection:e.recentActivities,leftWidgetButtonClassName:t?C.higherWidgetBtn:"",rightWidgetButtonClassName:t?C.higherWidgetBtn:"",prefetched:!0}))}const T={partialAvatar:"kgqoG",partialName:"yctHY",partialDateShared:"Vno44",partialThumbnail:"OIIaa",partialAction:"acv6h",partialSeries:"S2Srj",partialTitle:"fkwl5",partialDescription:"Nim0N"};function j(){return a.createElement("div",{className:"pb-4"},a.createElement("div",{className:"mb-2"},a.createElement("div",{className:"d-flex align-items-center"},a.createElement("div",{className:"".concat(T.partialAvatar," me-2 rounded-circle partial-loading-background")}),a.createElement("div",{className:"d-flex flex-column"},a.createElement("div",{className:"partial-loading-background mb-1 ".concat(T.partialName)}),a.createElement("div",{className:"partial-loading-background ".concat(T.partialDateShared)})))),a.createElement("div",{className:"partial-loading-background rounded ".concat(T.partialThumbnail)}),a.createElement("div",{className:"d-flex align-items-center my-1"},a.createElement("div",{className:"partial-loading-background me-1 ".concat(T.partialAction)}),a.createElement("div",{className:"partial-loading-background ms-1 ".concat(T.partialAction)})),a.createElement("div",{className:"partial-loading-background mb-1 ".concat(T.partialSeries)}),a.createElement("div",{className:"partial-loading-background mb-1 ".concat(T.partialTitle)}),a.createElement("div",{className:"partial-loading-background mt-1 ".concat(T.partialDescription)}))}function P(e){return a.createElement(a.Fragment,null,new Array(e.items).fill(null).map((function(e,t){return a.createElement(j,{key:t})})))}var L=n(8935),V=n(110),F=n(1048),R=n(83345),M=i.T.encloseNamespace("studentFeed.utils");function _(e){return e.setHours(23),e.setMinutes(59),e.setSeconds(59),e}var z={getPresetDateRanges:function(){return[{name:M("mostRecent"),default:!0},{name:M("lastWeek"),endDate:(e=new Date,e.setDate(e.getDate()+5-7-(e.getDay()||7)),_(e))},{name:M("lastMonth"),endDate:_(new Date((new Date).getFullYear(),(new Date).getMonth(),0))}];var e}};const B={dropdownDescription:"wmk99"};var U="studentFeed.studentFeedDateFilter";function Y(e){if(!e.dateRange)return a.createElement(a.Fragment,null);var t=z.getPresetDateRanges();return a.createElement(L.Z,null,a.createElement(L.Z.Toggle,{id:"student-feed-date-filter",variant:"outline-dark",className:e.floating?"rounded-pill px-3":"",size:e.floating?"lg":void 0},a.createElement(R.x,{namespace:U,phrase:"jumpTo"})),a.createElement(L.Z.Menu,{className:e.floating?"w-100":"",align:"end"},a.createElement(L.Z.Item,{as:"div",className:B.dropdownDescription},a.createElement(R.x,{namespace:U,phrase:"jumpTo"}),"..."),t.map((function(t){return a.createElement(L.Z.Item,{key:t.name,onClick:function(){return function(t){var n=o.Q.C$.getCurrentAppLink(),a=n.params||{},r=V.O.format(t.endDate,"YYYY-MM-DD");if(a.date!==r){var i=F.t.omit(a,["date"]);t.endDate&&(i.date=V.O.format(t.endDate,"YYYY-MM-DD")),o.Q.C$.trigger(Object.assign(Object.assign({},n),{params:i}),{replace:!0})}else e.scrollToCurrent()}(t)}},t.name)}))))}var H="studentFeed.studentFeedHeader";function W(e){return a.createElement("div",{className:"d-flex justify-content-between align-items-center"},a.createElement("h1",{className:"h2"},a.createElement(R.x,{namespace:H,phrase:"hello",options:{name:e.currentUser.givenName}})),a.createElement(Y,{dateRange:e.dateRange,scrollToCurrent:e.scrollToCurrent}))}var q,Q=n(97395),Z=n(71995),$=n(62803);!function(e){e[e.DateAscending=0]="DateAscending",e[e.DateDescending=1]="DateDescending"}(q||(q={}));var G={getFeed:function(e){var t=e.ownerId,n=e.from,a=e.to,r=e.cursor,i=e.limit,o=e.sort,c=e.success,s=e.error,l={},u=function(e){var t=V.O.convertDateToUTC(e);return V.O.format(t,"YYYY-MM-DDTHH:mm:ss")};return r&&(l.cursor=r),t&&(l.ownerId=t),n&&(l.from=u(n)),a&&(l.to=u(a)),i&&(l.limit=i),void 0!==o&&(l.sort=o),{url:Q._.urlBuilder("{gateway}/v1/users/me/feed",l),key:"feed:".concat(l.ownerId,":").concat(l.from,":").concat(l.to,":").concat(l.cursor,":").concat(l.sort,":").concat(l.limit),cacheDuration:Z.f.SHORT,success:c,error:s,formatData:function(e){return l.sort===q.DateAscending&&e.data.reverse(),e}}},getRecentActivities:function(){return{url:Q._.urlBuilder("{gateway}/v1/users/me/recent-activities",{"query.video":$.v.VIDEO_COLLECTION,"query.interactive":$.v.INTERACTIVE_COLLECTION,"query.clip":$.v.CLIP_COLLECTION}),key:"recent:share:activities",cacheDuration:Z.f.SHORT,formatData:function(e){return e.map((function(e){return e.id="".concat(e.shareId,":").concat(e.object.id),e.share?(e.share.activityStatus=e.activityStatus,e):e}))}}}};function K(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,a=Array(t);n<t;n++)a[n]=e[n];return a}var J=function(){var e,t,n=(e=a.useState(null),t=2,function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var a,r,i,o,c=[],s=!0,l=!1;try{if(i=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;s=!1}else for(;!(s=(a=i.call(n)).done)&&(c.push(a.value),c.length!==t);s=!0);}catch(e){l=!0,r=e}finally{try{if(!s&&null!=n.return&&(o=n.return(),Object(o)!==o))return}finally{if(l)throw r}}return c}}(e,t)||function(e,t){if(e){if("string"==typeof e)return K(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?K(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.")}()),r=n[0],i=n[1],c=o.Q.C$.getCurrentAppLink(),s=c.params||{},l=z.getPresetDateRanges();return a.useEffect((function(){if(s.from||s.to){var e=!1;l.forEach((function(t){if(!e){var n=t.startDate&&V.O.format(t.startDate,"YYYY-MM-DD"),a=t.endDate&&V.O.format(t.endDate,"YYYY-MM-DD");n&&n!==s.from||a&&a!==s.to||(a||n)&&(e=!0,i(t))}})),e||o.Q.C$.trigger(Object.assign(Object.assign({},c),{params:F.t.omit(s,["from","to"])}),{replace:!0})}else i(l.find((function(e){return e.default})))}),[s.from,s.to]),r},X=n(97958),ee=n(99742),te="studentFeed.emptyState",ne={application:E.O.DASHBOARD,action:h.e.Dashboard.HOME};function ae(e){var t=e.hasDiscover;return a.createElement(R.D.Provider,{value:te},a.createElement(X.u,{className:"pt-3"},a.createElement(X.u.Image,{src:ee.W.EmptyStates.STUDENT_FEED}),a.createElement(X.u.Heading,{className:"h3 d-flex align-items-center justify-content-center"},a.createElement(R.x,{phrase:"emptyStateHeading"})),a.createElement(X.u.Info,null,a.createElement(R.x,{phrase:"emptyStateInfo"})),t&&a.createElement(X.u.Info,null,a.createElement(R.x,{phrase:"discoverInfo"})),t&&a.createElement(X.u.Cta,{appLink:ne,text:i.T.getPhrase(te,"cta")})))}var re=n(83657),ie=n(15611),oe=n(26339),ce=n(31908),se=n(82431),le=n(82602),ue=n(97408),de=n(64818);const me={avatar:"QEQhk"};function fe(e){var t;return a.createElement(a.Fragment,null,a.createElement("div",{className:"d-flex align-items-center"},a.createElement("div",{className:"".concat(me.avatar," me-2")},a.createElement(ue.q,{imageCdnUrl:e.imageCdnUrl,initials:de.l.getInitials(e.shareData.owner.name,e.shareData.owner.surname),imageUrl:null===(t=e.shareData.owner.avatar)||void 0===t?void 0:t.url})),a.createElement("div",{className:"d-flex flex-column"},a.createElement("h2",{className:"h6 mb-0"},de.l.getDisplayName(e.shareData.owner)),a.createElement("div",null,(0,le.WU)(e.shareData.dateShared)))),!!e.shareData.message&&a.createElement("p",{className:"mt-1 mb-0 fw-semibold"},e.shareData.message))}var pe=n(7432),ve=n(86348),ge=n(54610),ye=n(68626);const he={imageClass:"Qig1U",fallbackText:"Bt4GN"};var Ee="studentFeed.feedVideoThumbnail";function be(e){if(!ce.M.getCanBeConsumed(e.video).canConsume){var t=ce.M.getPrivacyReasoning(e.video);return a.createElement(pe.Z,{data:ee.W.Fallbacks.VIDEO_UNAVAILABLE_STUDENT_FEED,className:"border rounded",imageType:ge.__.Thumbnails,imageClassName:"".concat(he.imageClass," w-25 h-25")},a.createElement("div",{className:he.fallbackText},a.createElement("h3",{className:"h4"},t),a.createElement("p",null,a.createElement(R.x,{namespace:Ee,phrase:"unavailableDescription"}))))}return a.createElement(ve.u,{appLink:e.appLink,video:e.video,analyticsOptions:{location:s.LZ.StudentFeed},type:"static",textPosition:ye.z.Independent,imageOptions:{size:ge.h2.Large},preload:!0,commonVideoProps:e.commonVideoProps})}var Se=n(1643),Ae=n(35223),De=n(27638),Ie=i.T.encloseNamespace("studentFeed.hooks");function Ne(){var e=(0,De.u)(s.LZ.StudentFeed).setFavourite;return function(t){var n=ce.M.getCanBeConsumed(t).canConsume,a=ce.M.isVideoTypeArchived(t);if(!n||a)return[];var r=Se.h.isFavouritedByCurrentUser(t);return[{svgName:r?Ae.vn.Heart:Ae.vn.HeartOutline,order:0,tooltip:Ie("favourite"),onClick:function(){return e(t,!r)},button:!0,className:"btn btn-link "+(r?"text-danger":"text-link")},{order:10,svgName:Ae.vn.AddToPlaylists,tooltip:Ie("addToPlaylist"),className:"btn btn-link text-link",button:!0,appLink:{application:E.O.PLAYLISTS,action:h.e.Playlists.ADD_TO_PLAYLIST,args:[t.id]},analyticsOptions:{entity:ce.M.getAnalyticsEntity(t),location:s.LZ.StudentFeed,actionType:s.Vw.Associate,descriptor:s.iF.Playlist,workflowPhase:s.eu.Start},analyticsData:ce.M.getAnalyticsData(t)}]}}var Ce=function(e){return{application:E.O.SHARE,action:h.e.Share.VIEW_SHARE_LINK,args:[e]}};function we(e){var t=e.data.object,n=Ne(),r=ce.M.getCanBeConsumed(t).canConsume;return a.createElement("div",{className:"pb-5"},a.createElement("div",{className:"pb-2"},a.createElement(fe,{imageCdnUrl:e.commonVideoProps.imageCdnUrl,shareData:e.data})),a.createElement(be,{video:e.data.object,appLink:Ce(e.data.id),shareData:e.data,setActivityStatus:e.setActivityStatus,commonVideoProps:e.commonVideoProps}),a.createElement(re.e,{actions:r?n(t):[]}),ce.M.isVideo(t)&&a.createElement(oe.$,{type:"series",video:t,appLink:se.j.getSeriesAppLink(t.series),analyticsOptions:{location:s.LZ.StudentFeed},className:r?"":"mt-2"}),a.createElement("div",null,a.createElement(ie.F,{className:"d-inline-block",appLink:r?Ce(e.data.id):null},a.createElement("h3",{className:"h4 mb-0"},t.name))),!!t.description&&a.createElement("p",{className:"clamp-2 mb-0 mt-1"},t.description))}var ke=n(68050),Oe=n(69111),xe=n(75896),Te=n(11607),je=n(83914),Pe=n(45778);const Le={circle:"BJPA7",active:"YuQnu",sm:"wI7Zf",xs:"KkKSG"};function Ve(e){var t=e.indicator,n=e.onClick,r=Le.circle;return t.active&&(r+=" "+Le.active),"sm"===t.size&&(r+=" "+Le.sm),"xs"===t.size&&(r+=" "+Le.xs),"invisible"===t.size&&(r+=" d-none"),a.createElement(Te.L,{className:r,onClick:n})}function Fe(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var a,r,i,o,c=[],s=!0,l=!1;try{if(i=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;s=!1}else for(;!(s=(a=i.call(n)).done)&&(c.push(a.value),c.length!==t);s=!0);}catch(e){l=!0,r=e}finally{try{if(!s&&null!=n.return&&(o=n.return(),Object(o)!==o))return}finally{if(l)throw r}}return c}}(e,t)||function(e,t){if(e){if("string"==typeof e)return Re(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?Re(e,t):void 0}}(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 Re(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,a=Array(t);n<t;n++)a[n]=e[n];return a}function Me(e){var t,n=function(t){return e.videos.findIndex((function(e){return e.id===t.id}))},r=Fe(a.useState(n(e.currentVideo)),2),i=r[0],o=r[1],c=a.useState(function(e){var t=e.videos.findIndex((function(t){return t.id===e.currentVideo.id})),n=function(e){return e<5?"std":5===e?"sm":6===e?"xs":"invisible"};return e.videos.map((function(e,a){return{active:t===a,size:n(a)}}))}(e)),s=Fe(c,2),l=s[0],u=s[1];a.useEffect((function(){var t=i,a=n(e.currentVideo);if(t!==a){var r=d+(a-t);o(a);var c=l.map((function(e,t){return{active:t===r,size:e.size}}));if(u(c),"std"!==l[r].size){var s=function(e,t){var n,a;e.forEach((function(e,t){"std"===e.size&&void 0===n&&(n=t),"std"===e.size&&(a=t)}));var r=F.t.deepClone(e);return"left"===t?(r[n-1]={active:!0,size:"std"},r[n-2]={active:!1,size:"sm"},r[n-3]={active:!1,size:"xs"},r[a+2]={active:!1,size:"invisible"},r[a+1]={active:!1,size:"xs"},r[a]={active:!1,size:"sm"}):(r[a+1]={active:!0,size:"std"},r[a+2]&&(r[a+2]={active:!1,size:"sm"}),r[a+3]&&(r[a+3]={active:!1,size:"xs"}),r[n-2]={active:!1,size:"invisible"},r[n-1]={active:!1,size:"xs"},r[n]={active:!1,size:"sm"}),r}(c,a<t?"left":"right");u(s)}}}),[null===(t=e.currentVideo)||void 0===t?void 0:t.id]);var d=l.findIndex((function(e){return e.active}));return a.createElement("div",{className:"d-flex align-items-center"},l.map((function(t,n){return a.createElement(Ve,{key:n,indicator:t,onClick:function(){return e.onSelectIndex(n)}})})))}var _e=n(183),ze=function(e,t){var n={application:E.O.SHARE,action:h.e.Share.VIEW_SHARE_LINK,args:[e]};return t&&(n.params=t),n},Be=function(e){return ce.M.isClip(e)?{clipId:e.id}:ce.M.isInteractive(e)?{interactiveId:e.id}:{videoId:e.id}};function Ue(e){return a.createElement("div",{className:"flex-shrink-0 position-relative w-100"},a.createElement(be,{video:e.data,appLink:ze(e.shareData.id,Object.assign(Object.assign({},Be(e.data)),{contextId:e.shareData.object.id,context:e.shareData.object.typeId===D.E.Playlist?_e.Q.Playlist:_e.Q.Series})),shareData:e.shareData,setActivityStatus:e.setActivityStatus,commonVideoProps:e.commonVideoProps}))}var Ye=function(e,t){var n={application:E.O.SHARE,action:h.e.Share.VIEW_SHARE_LINK,args:[e]};return t&&(n.params=t),n},He=function(e){return ce.M.isClip(e)?{clipId:e.id}:ce.M.isInteractive(e)?{interactiveId:e.id}:{videoId:e.id}};function We(e){return a.createElement("div",{className:"p-1 flex-shrink-0 position-relative col-6 col-sm-4 col-md-3"},a.createElement(ve.u,{video:e.data,type:"static",appLink:Ye(e.shareData.id,Object.assign(Object.assign({},He(e.data)),{contextId:e.shareData.object.id,context:e.shareData.object.typeId===D.E.Playlist?_e.Q.Playlist:_e.Q.Series})),textPosition:ye.z.Overlay,imageOptions:{size:ge.h2.Medium},preload:e.preloadImage,analyticsData:e.analyticsData,analyticsOptions:e.analyticsOptions,commonVideoProps:e.commonVideoProps}))}var qe="studentFeed.feedVideoCollectionEmptyState";function Qe(e){return a.createElement(X.u,{className:"border rounded-3 pt-5 pb-3"},a.createElement(X.u.Image,{src:ee.W.EmptyStates.Playlists.PLAYLIST_VIDEOS}),a.createElement(X.u.Heading,null,a.createElement(R.x,{namespace:qe,phrase:"heading",options:{name:e.data.name}})),e.data.typeId===D.E.Playlist&&a.createElement(X.u.Info,null,a.createElement(R.x,{namespace:qe,phrase:"playlistInfo"})))}const Ze={leftWidgetButton:"bux3R",rightWidgetButton:"QTLk7"};function $e(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var a,r,i,o,c=[],s=!0,l=!1;try{if(i=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;s=!1}else for(;!(s=(a=i.call(n)).done)&&(c.push(a.value),c.length!==t);s=!0);}catch(e){l=!0,r=e}finally{try{if(!s&&null!=n.return&&(o=n.return(),Object(o)!==o))return}finally{if(l)throw r}}return c}}(e,t)||function(e,t){if(e){if("string"==typeof e)return Ge(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?Ge(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 Ge(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,a=Array(t);n<t;n++)a[n]=e[n];return a}var Ke=function(e,t){var n={application:E.O.SHARE,action:h.e.Share.VIEW_SHARE_LINK,args:[e]};return t&&(n.params=t),n},Je=function(e){return Pe.G.isType(e,D.E.Playlist)?e.union.data:e.videos.data};function Xe(e){var t=e.data.object,n=Je(e.data.object),r=$e(a.useState(xe.m.first(n)),2),i=r[0],o=r[1],c=$e(a.useState(!1),2),s=c[0],u=c[1],d=a.useRef(null),m=Ne(),f=n.findIndex((function(e){return e.id===i.id}));return a.createElement("div",{className:"pb-5"},a.createElement("div",{className:"pb-2"},a.createElement(fe,{imageCdnUrl:e.commonVideoProps.imageCdnUrl,shareData:e.data})),i?a.createElement(a.Fragment,null,a.createElement("div",{className:"position-relative"},a.createElement(l.kM,{controlsRef:d,type:N.l9.Row,contents:I.z.FeedVideos,childComponent:Ue,extraChildComponentProps:{setActivityStatus:e.setActivityStatus,shareData:e.data,commonVideoProps:e.commonVideoProps},collection:n,onNext:function(){o(n[f+1])},onPrevious:function(){o(n[f-1])},leftWidgetButtonClassName:Ze.leftWidgetButton,rightWidgetButtonClassName:Ze.rightWidgetButton,hideBleedingContent:!0,hideName:!0,hideExtendedClickableArea:!0,prefetched:!0,lazyLoad:!1,touchBehavior:"drag"})),a.createElement("div",{className:"position-relative"},a.createElement(ke.Z,{className:"g-0"},a.createElement(Oe.Z,{xs:2,className:"d-flex align-items-center justify-content-start"},a.createElement(re.e,{actions:m(i)})),a.createElement(Oe.Z,{xs:8,className:"d-flex align-items-center justify-content-center"},a.createElement(Me,{videos:n,currentVideo:i,onSelectIndex:function(e){d.current&&(o(n[e]),d.current.jumpToIndex(e))}})),a.createElement(Oe.Z,{xs:2,className:"d-flex align-items-center justify-content-end"},a.createElement(Te.L,{onClick:function(){return u((function(e){return!e}))}},a.createElement(je.x,{svgName:s?Ae.vn.ChevronUp:Ae.vn.ChevronDown}))))),a.createElement("div",null,a.createElement(ie.F,{className:"d-inline-block",appLink:Ke(e.data.id)},a.createElement("h3",{className:"h4 mb-0"},t.name))),s?a.createElement("div",{className:"pt-1"},a.createElement(l.kM,{type:N.l9.Row,contents:I.z.Videos,childComponent:We,extraChildComponentProps:{shareData:e.data,commonVideoProps:e.commonVideoProps},collection:n,appLink:Ke(e.data.id),touchBehavior:"drag",limitTotalItems:!0,hideName:!0,prefetched:!0})):!!t.description&&a.createElement("p",{className:"clamp-2 mb-0 mt-1"},t.description)):a.createElement(Qe,{data:e.data.object}))}function et(e){return a.createElement(a.Fragment,null,e.feed.map((function(t,n){var r;switch(null===(r=t.object)||void 0===r?void 0:r.typeId){case D.E.Video:case D.E.Clip:case D.E.Interactive:return a.createElement(we,{key:"".concat(t.id,":").concat(n),data:t,setActivityStatus:e.setActivityStatus,commonVideoProps:e.commonVideoProps});case D.E.Playlist:case D.E.Series:return a.createElement(Xe,{key:"".concat(t.id,":").concat(n),data:t,setActivityStatus:e.setActivityStatus,commonVideoProps:e.commonVideoProps});case D.E.Subject:default:return a.createElement(a.Fragment,{key:n})}})))}function tt(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,a=Array(t);n<t;n++)a[n]=e[n];return a}var nt=15,at=635;function rt(e){var t,n,r,i=e.request,o=e.reversed,s=e.scrollTo,l=a.useRef(null),u=(0,p.Y)({triggerOnce:!1,rootMargin:at+"px"}),d=u.ref,m=u.inView,f=null===(t=c.a.useBasicFetch(m?i:null).data)||void 0===t?void 0:t.data,v=window.scrollY,g=(n=a.useState(at*e.limit),r=2,function(e){if(Array.isArray(e))return e}(n)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var a,r,i,o,c=[],s=!0,l=!1;try{if(i=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;s=!1}else for(;!(s=(a=i.call(n)).done)&&(c.push(a.value),c.length!==t);s=!0);}catch(e){l=!0,r=e}finally{try{if(!s&&null!=n.return&&(o=n.return(),Object(o)!==o))return}finally{if(l)throw r}}return c}}(n,r)||function(e,t){if(e){if("string"==typeof e)return tt(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?tt(e,t):void 0}}(n,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.")}()),y=g[0],h=g[1];return a.useLayoutEffect((function(){var e=l.current.getBoundingClientRect();o?window.scrollTo(0,v+e.height):s&&window.requestAnimationFrame((function(){window.scrollTo(0,v+e.top-100)}))}),[s]),a.useLayoutEffect((function(){if(y){var e=l.current.getBoundingClientRect().height;if(h(e),!(y<e+nt&&y>e-nt||l.current.offsetTop>v)){var t=y-e;window.scrollTo(0,v-t)}}})),a.createElement("div",{ref:d},a.createElement("div",{ref:l},(null==f?void 0:f.length)?a.createElement(et,{feed:f,setActivityStatus:e.setActivityStatus,commonVideoProps:e.commonVideoProps}):a.createElement("div",{style:{height:y,overflow:"hidden"}},a.createElement(P,{items:e.limit}))))}var it=n(70680),ot=n(94644),ct=n(69883);function st(e){return function(e){if(Array.isArray(e))return dt(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||ut(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 lt(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var a,r,i,o,c=[],s=!0,l=!1;try{if(i=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;s=!1}else for(;!(s=(a=i.call(n)).done)&&(c.push(a.value),c.length!==t);s=!0);}catch(e){l=!0,r=e}finally{try{if(!s&&null!=n.return&&(o=n.return(),Object(o)!==o))return}finally{if(l)throw r}}return c}}(e,t)||ut(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 ut(e,t){if(e){if("string"==typeof e)return dt(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?dt(e,t):void 0}}function dt(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,a=Array(t);n<t;n++)a[n]=e[n];return a}var mt=i.T.encloseNamespace("studentFeed.studentFeed"),ft=function(e,t){var n=(0,it.oR)(),r=(0,ct.Z)(),i=lt(a.useState([]),2),o=i[0],s=i[1],l=lt(a.useState(!1),2),u=l[0],d=l[1];function m(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},a=t.from,i=t.to,o=t.cursor,l=t.reverse,u=function(e){var n,a;if(u=null,e.data.length){if(null===(a=null===(n=e.pagination)||void 0===n?void 0:n.cursors)||void 0===a?void 0:a.next)if(l){var r={request:m(Object.assign(Object.assign({},t),{cursor:e.pagination.cursors.next})),reversed:!0};s((function(e){return[r].concat(st(e))}))}else{var i={request:m(Object.assign(Object.assign({},t),{cursor:e.pagination.cursors.next}))};s((function(e){return[].concat(st(e),[i])}))}}else s((function(e){var t=e.findIndex((function(e){return e.request.key===f.key})),n=[].concat(st(e.slice(0,t)),st(e.slice(t+1)));return n.length||d(!0),n}))},f=G.getFeed({from:a,to:i,cursor:o,sort:l?q.DateAscending:q.DateDescending,limit:e,success:function(e){window.requestAnimationFrame((function(){u&&u(e)}))},error:function(e){return function(e,t){if(!e)return(0,ot.r)(t.status);r.error(mt("error"))}(o,e)}}),p=c.a.getResponse(n.getState(),f.key);return p.data&&window.setTimeout((function(){u(p.data)}),0),f}return a.useEffect((function(){var e=null;if(isNaN(Date.parse(t))||(e=new Date(t)),e){var n={request:m({from:e,reverse:!0}),reversed:!0},a={request:m({to:e}),current:!0};s([a]),window.requestAnimationFrame((function(){s((function(e){return[n].concat(st(e))}))}))}else s([{request:m(),current:!0}])}),[]),{requests:o,isEmpty:u}};function pt(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var a,r,i,o,c=[],s=!0,l=!1;try{if(i=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;s=!1}else for(;!(s=(a=i.call(n)).done)&&(c.push(a.value),c.length!==t);s=!0);}catch(e){l=!0,r=e}finally{try{if(!s&&null!=n.return&&(o=n.return(),Object(o)!==o))return}finally{if(l)throw r}}return c}}(e,t)||function(e,t){if(e){if("string"==typeof e)return vt(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?vt(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 vt(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,a=Array(t);n<t;n++)a[n]=e[n];return a}var gt=i.T.encloseNamespace("studentFeed.studentFeed"),yt=10;function ht(e){var t=(0,v.T)().hasPermissions,n=e.date,i=(0,b.U)({locationContext:s.LZ.StudentFeed}).commonVideoProps,S=(0,f.O)(s.LZ.StudentFeed),A=J();(0,g.M)({title:gt("pageTitle")});var D=c.a.useBasicFetch(m.N.currentUser()),I=c.a.useBasicFetch(d.L.config()),N=c.a.useBasicFetch(G.getRecentActivities()),C=ft(yt,n),w=C.requests,k=C.isEmpty,O=pt(a.useState(!1),2),T=O[0],j=O[1],L=(0,p.Y)({triggerOnce:!1,rootMargin:"300px"}),V=L.ref,F=L.inView,R=L.initialized&&!F,M=t(u.C.ViewDiscover),_=pt(a.useState(null),2),z=_[0],B=_[1];function U(){var e=w.find((function(e){return e.current}));e?B(e.request.key):window.scrollTo(0,document.body.scrollHeight)}return a.useLayoutEffect((function(){B(null)})),T?a.createElement(a.Fragment,null):M&&k&&y.O.fromPageLoad()?(j(!0),o.Q.C$.trigger({application:E.O.DASHBOARD,action:h.e.Dashboard.HOME},{replace:!0}),a.createElement(a.Fragment,null)):a.createElement("div",{className:"px-4 container-compact"},a.createElement("div",{className:"pb-2 border-bottom mb-3",ref:V},a.createElement(W,{currentUser:D.data,dateRange:A,scrollToCurrent:U})),a.createElement("div",{className:"d-flex justify-content-center"},a.createElement("div",{className:"floating-jump-to"},a.createElement(r.Z,{timeout:R?500:0,in:R,className:"floating-jump-to",classNames:"floating-jump-to",mountOnEnter:!0,unmountOnExit:!0},a.createElement(Y,{dateRange:A,floating:!0,scrollToCurrent:U})))),N.hasCompleted?a.createElement(x,{recentActivities:N.data,setActivityStatus:S,commonVideoProps:i}):a.createElement("div",{className:"pb-3"},a.createElement(l.j7,{hideDescription:!0})),(!D.data||!I.data)&&a.createElement(P,{items:yt}),k&&a.createElement(ae,{hasDiscover:M}),null==w?void 0:w.map((function(e){return a.createElement(rt,{key:e.request.key,limit:yt,request:e.request,reversed:e.reversed,setActivityStatus:S,scrollTo:e.request.key===z,commonVideoProps:i})})))}},58321:(e,t,n)=>{n.d(t,{U:()=>p});var a=n(20354),r=n(16714),i=n(39151),o=n(1666),c=n(31949),s=n(22902),l=n(37802),u=n(22490),d=n(82431),m=n(46390),f=n(27638);function p(e){var t,n,p,v=e||{},g=v.locationContext,y=v.mtv,h=v.flightNamespace,E=v.sharedPlaylist,b=(0,m.G)().isPlugin,S=(0,f.u)(g,h),A=S.setFavourite,D=S.canFavourite,I=(0,l.r)(null),N=I.hasTopicDirectories,C=I.isLoadingSettings,w=(0,s.T)(),k=w.hasPermissions,O=w.isLoaded,x=k(r.C.StudentExperience),T=a.a.useBasicFetch(i.L.config()),j=a.a.useBasicFetch(c.N.currentUser()),P=a.a.useBasicFetch((null===(t=j.data)||void 0===t?void 0:t.isAuthenticated)&&o.h.yearGroups(j.data.customerId));return{hasCommonVideoPropsCompleted:!C&&O&&T.hasCompleted&&j.hasCompleted&&(!(null===(n=j.data)||void 0===n?void 0:n.isAuthenticated)||P.hasCompleted),commonVideoProps:{subTextType:"series",getSubTextAppLink:function(e){var t;return"series"in e?E&&!(null===(t=j.data)||void 0===t?void 0:t.isAuthenticated)?null:d.j.getSeriesAppLink(e.series,{mtv:y}):null},isPlugin:b,canFavourite:D,setFavourite:A,imageCdnUrl:null===(p=T.data)||void 0===p?void 0:p.imageCdnUrl,yearGroups:P.data,getClassroomGuideAppLink:u.W.getClassroomGuideAppLink,getInteractiveGuidanceAppLink:u.W.getInteractiveGuidanceAppLink,getResourceGuidanceAppLink:u.W.getResourceGuidanceAppLink,showNewVideoIndicator:N,companyLogoFallbackUrl:null,hasStudentExperience:x}}}},82602:(e,t,n)=>{n.d(t,{WU:()=>l});var a=["second","minute","hour","day","week","month","year"],r=["秒","分钟","小时","天","周","个月","年"],i={},o=function(e,t){i[e]=t},c=[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 l=function(e,t,n){var a=function(e,t){return(+(t?s(t):new Date)-+s(e))/1e3}(e,n&&n.relativeDate);return function(e,t){for(var n=e<0?1:0,a=e=Math.abs(e),r=0;e>=c[r]&&r<c.length;r++)e/=c[r];return(e=Math.floor(e))>(0==(r*=2)?9:1)&&(r+=1),t(e,r,a)[n].replace("%s",e.toString())}(a,function(e){return i[e]||i.en_US}(t))};o("en_US",(function(e,t){if(0===t)return["just now","right now"];var n=a[Math.floor(t/2)];return e>1&&(n+="s"),[e+" "+n+" ago","in "+e+" "+n]})),o("zh_CN",(function(e,t){if(0===t)return["刚刚","片刻后"];var n=r[~~(t/2)];return[e+" "+n+"前",e+" "+n+"后"]}))}}]);
2
- //# sourceMappingURL=9503-275c13891d-lite.chunk.js.map
1
+ "use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[9503],{70621:(e,t,n)=>{n.d(t,{b:()=>c});var a=n(32735),r=n(86348),i=n(68626),o=n(80143);var c=a.memo((function(e){var t,n,c=null===(n=null===(t=e.data)||void 0===t?void 0:t.subjectPresentationAudiences)||void 0===n?void 0:n.data,s=(0,o.n)(c,e.presentationAudiences);return a.createElement("div",{className:"px-1 flex-shrink-0 position-relative ".concat("YY2CD")},a.createElement(r.u,{video:e.data,preload:e.preloadImage,analyticsData:e.analyticsData,analyticsOptions:e.analyticsOptions,type:"static",appLink:e.getAppLink(e.data),imageOptions:{size:e.thumbnailSize},textPosition:i.z.Below,audience:s,hideRating:!!s,hideDuration:!1,commonVideoProps:e.commonVideoProps}))}))},94644:(e,t,n)=>{n.d(t,{r:()=>u});var a=n(50242),r=n(81886),i=n(67058),o=n(14553),c=n(49267),s=n(49075),l={notFound:i.d,forbidden:{rating:o.q,yearLevel:o.q,region:c.a,privacy:o.q},badRequest:s._,internalServerError:s._};function u(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(e){var i;i="number"==typeof e?e:e.status;var o=Object.assign(Object.assign({},l),t);i&&r.Q.Ry.isStatusCodeError(i)&&(i!==a.o.InternalServer?i!==a.o.NotFound?i!==a.o.Forbidden?n.badRequest||r.Q.Ry.throw(new o.badRequest):n.forbidden||r.Q.Ry.throw(new o.forbidden.privacy):n.notFound||r.Q.Ry.throw(new o.notFound):n.internalServerError||r.Q.Ry.throw(new s._))}}},99503:(e,t,n)=>{n.r(t),n.d(t,{StudentFeedView:()=>ht});var a=n(32735),r=n(4390),i=n(23481),o=n(81886),c=n(20354),s=n(65858),l=n(11518),u=n(16714),d=n(39151),m=n(31949),f=n(90605),p=n(65294),v=n(22902),g=n(79612),y=n(75795),h=n(14070),E=n(97291),b=n(58321),S=n(28400),A=n(70621),D=n(4594),I=n(58704),N=n(38129);const C={avatar:"y1nvt",higherWidgetBtn:"EQjTN"};var w="studentFeed.recentActivities",k=function(e){var t;if(e.shareId)return{application:E.O.SHARE,action:h.e.Share.VIEW_SHARE_LINK,args:[e.shareId]};switch(null===(t=e.object)||void 0===t?void 0:t.typeId){case D.E.Video:return{application:E.O.VIDEOS,action:h.e.Videos.PLAY_VIDEO,args:[e.object.id,S.m.slugify(e.object.name)]};case D.E.Clip:return{application:E.O.CLIPS,action:h.e.Clips.PLAY_CLIP,args:[e.object.id,S.m.slugify(e.object.name)]};case D.E.Interactive:return{application:E.O.INTERACTIVES,action:h.e.Interactives.VIEW_INTERACTIVE,args:[e.object.id,S.m.slugify(e.object.name)]};default:return null}};function O(e){return a.createElement(A.b,{data:e.data.object,getAppLink:function(){return k(e.data)},preloadImage:e.preloadImage,analyticsData:e.analyticsData,analyticsOptions:e.analyticsOptions,presentationAudiences:[],context:e.context,collectionAppLink:e.collectionAppLink,thumbnailSize:e.thumbnailSize,onHover:e.onHover,commonVideoProps:e.commonVideoProps})}function x(e){if(!e.recentActivities)return a.createElement(a.Fragment,null);var t=!!e.recentActivities.find((function(e){var t,n;return!!(null===(n=null===(t=e.share)||void 0===t?void 0:t.owner)||void 0===n?void 0:n.id)}));return a.createElement("div",{className:"pb-5"},a.createElement(l.kM,{name:i.T.getPhrase(w,"recentlyWatched"),type:N.l9.Row,contents:I.z.RecentActivities,childComponent:O,extraChildComponentProps:{setActivityStatus:e.setActivityStatus,commonVideoProps:e.commonVideoProps},appLink:{application:E.O.WATCH_HISTORY,action:h.e.WatchHistory.HOME},collection:e.recentActivities,leftWidgetButtonClassName:t?C.higherWidgetBtn:"",rightWidgetButtonClassName:t?C.higherWidgetBtn:"",prefetched:!0}))}const T={partialAvatar:"kgqoG",partialName:"yctHY",partialDateShared:"Vno44",partialThumbnail:"OIIaa",partialAction:"acv6h",partialSeries:"S2Srj",partialTitle:"fkwl5",partialDescription:"Nim0N"};function j(){return a.createElement("div",{className:"pb-4"},a.createElement("div",{className:"mb-2"},a.createElement("div",{className:"d-flex align-items-center"},a.createElement("div",{className:"".concat(T.partialAvatar," me-2 rounded-circle partial-loading-background")}),a.createElement("div",{className:"d-flex flex-column"},a.createElement("div",{className:"partial-loading-background mb-1 ".concat(T.partialName)}),a.createElement("div",{className:"partial-loading-background ".concat(T.partialDateShared)})))),a.createElement("div",{className:"partial-loading-background rounded ".concat(T.partialThumbnail)}),a.createElement("div",{className:"d-flex align-items-center my-1"},a.createElement("div",{className:"partial-loading-background me-1 ".concat(T.partialAction)}),a.createElement("div",{className:"partial-loading-background ms-1 ".concat(T.partialAction)})),a.createElement("div",{className:"partial-loading-background mb-1 ".concat(T.partialSeries)}),a.createElement("div",{className:"partial-loading-background mb-1 ".concat(T.partialTitle)}),a.createElement("div",{className:"partial-loading-background mt-1 ".concat(T.partialDescription)}))}function P(e){return a.createElement(a.Fragment,null,new Array(e.items).fill(null).map((function(e,t){return a.createElement(j,{key:t})})))}var L=n(8935),V=n(110),F=n(1048),R=n(83345),M=i.T.encloseNamespace("studentFeed.utils");function _(e){return e.setHours(23),e.setMinutes(59),e.setSeconds(59),e}var z={getPresetDateRanges:function(){return[{name:M("mostRecent"),default:!0},{name:M("lastWeek"),endDate:(e=new Date,e.setDate(e.getDate()+5-7-(e.getDay()||7)),_(e))},{name:M("lastMonth"),endDate:_(new Date((new Date).getFullYear(),(new Date).getMonth(),0))}];var e}};const B={dropdownDescription:"wmk99"};var U="studentFeed.studentFeedDateFilter";function Y(e){if(!e.dateRange)return a.createElement(a.Fragment,null);var t=z.getPresetDateRanges();return a.createElement(L.Z,null,a.createElement(L.Z.Toggle,{id:"student-feed-date-filter",variant:"outline-dark",className:e.floating?"rounded-pill px-3":"",size:e.floating?"lg":void 0},a.createElement(R.x,{namespace:U,phrase:"jumpTo"})),a.createElement(L.Z.Menu,{className:e.floating?"w-100":"",align:"end"},a.createElement(L.Z.Item,{as:"div",className:B.dropdownDescription},a.createElement(R.x,{namespace:U,phrase:"jumpTo"}),"..."),t.map((function(t){return a.createElement(L.Z.Item,{key:t.name,onClick:function(){return function(t){var n=o.Q.C$.getCurrentAppLink(),a=n.params||{},r=V.O.format(t.endDate,"YYYY-MM-DD");if(a.date!==r){var i=F.t.omit(a,["date"]);t.endDate&&(i.date=V.O.format(t.endDate,"YYYY-MM-DD")),o.Q.C$.trigger(Object.assign(Object.assign({},n),{params:i}),{replace:!0})}else e.scrollToCurrent()}(t)}},t.name)}))))}var H="studentFeed.studentFeedHeader";function W(e){return a.createElement("div",{className:"d-flex justify-content-between align-items-center"},a.createElement("h1",{className:"h2"},a.createElement(R.x,{namespace:H,phrase:"hello",options:{name:e.currentUser.givenName}})),a.createElement(Y,{dateRange:e.dateRange,scrollToCurrent:e.scrollToCurrent}))}var q,Q=n(97395),Z=n(71995),$=n(62803);!function(e){e[e.DateAscending=0]="DateAscending",e[e.DateDescending=1]="DateDescending"}(q||(q={}));var G={getFeed:function(e){var t=e.ownerId,n=e.from,a=e.to,r=e.cursor,i=e.limit,o=e.sort,c=e.success,s=e.error,l={},u=function(e){var t=V.O.convertDateToUTC(e);return V.O.format(t,"YYYY-MM-DDTHH:mm:ss")};return r&&(l.cursor=r),t&&(l.ownerId=t),n&&(l.from=u(n)),a&&(l.to=u(a)),i&&(l.limit=i),void 0!==o&&(l.sort=o),{url:Q._.urlBuilder("{gateway}/v1/users/me/feed",l),key:"feed:".concat(l.ownerId,":").concat(l.from,":").concat(l.to,":").concat(l.cursor,":").concat(l.sort,":").concat(l.limit),cacheDuration:Z.f.SHORT,success:c,error:s,formatData:function(e){return l.sort===q.DateAscending&&e.data.reverse(),e}}},getRecentActivities:function(){return{url:Q._.urlBuilder("{gateway}/v1/users/me/recent-activities",{"query.video":$.v.VIDEO_COLLECTION,"query.interactive":$.v.INTERACTIVE_COLLECTION,"query.clip":$.v.CLIP_COLLECTION}),key:"recent:share:activities",cacheDuration:Z.f.SHORT,formatData:function(e){return e.map((function(e){return e.id="".concat(e.shareId,":").concat(e.object.id),e.share?(e.share.activityStatus=e.activityStatus,e):e}))}}}};function K(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,a=Array(t);n<t;n++)a[n]=e[n];return a}var J=function(){var e,t,n=(e=a.useState(null),t=2,function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var a,r,i,o,c=[],s=!0,l=!1;try{if(i=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;s=!1}else for(;!(s=(a=i.call(n)).done)&&(c.push(a.value),c.length!==t);s=!0);}catch(e){l=!0,r=e}finally{try{if(!s&&null!=n.return&&(o=n.return(),Object(o)!==o))return}finally{if(l)throw r}}return c}}(e,t)||function(e,t){if(e){if("string"==typeof e)return K(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?K(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.")}()),r=n[0],i=n[1],c=o.Q.C$.getCurrentAppLink(),s=c.params||{},l=z.getPresetDateRanges();return a.useEffect((function(){if(s.from||s.to){var e=!1;l.forEach((function(t){if(!e){var n=t.startDate&&V.O.format(t.startDate,"YYYY-MM-DD"),a=t.endDate&&V.O.format(t.endDate,"YYYY-MM-DD");n&&n!==s.from||a&&a!==s.to||(a||n)&&(e=!0,i(t))}})),e||o.Q.C$.trigger(Object.assign(Object.assign({},c),{params:F.t.omit(s,["from","to"])}),{replace:!0})}else i(l.find((function(e){return e.default})))}),[s.from,s.to]),r},X=n(97958),ee=n(99742),te="studentFeed.emptyState",ne={application:E.O.DASHBOARD,action:h.e.Dashboard.HOME};function ae(e){var t=e.hasDiscover;return a.createElement(R.D.Provider,{value:te},a.createElement(X.u,{className:"pt-3"},a.createElement(X.u.Image,{src:ee.W.EmptyStates.STUDENT_FEED}),a.createElement(X.u.Heading,{className:"h3 d-flex align-items-center justify-content-center"},a.createElement(R.x,{phrase:"emptyStateHeading"})),a.createElement(X.u.Info,null,a.createElement(R.x,{phrase:"emptyStateInfo"})),t&&a.createElement(X.u.Info,null,a.createElement(R.x,{phrase:"discoverInfo"})),t&&a.createElement(X.u.Cta,{appLink:ne,text:i.T.getPhrase(te,"cta")})))}var re=n(83657),ie=n(15611),oe=n(26339),ce=n(31908),se=n(82431),le=n(82602),ue=n(97408),de=n(64818);const me={avatar:"QEQhk"};function fe(e){var t;return a.createElement(a.Fragment,null,a.createElement("div",{className:"d-flex align-items-center"},a.createElement("div",{className:"".concat(me.avatar," me-2")},a.createElement(ue.q,{imageCdnUrl:e.imageCdnUrl,initials:de.l.getInitials(e.shareData.owner.name,e.shareData.owner.surname),imageUrl:null===(t=e.shareData.owner.avatar)||void 0===t?void 0:t.url})),a.createElement("div",{className:"d-flex flex-column"},a.createElement("h2",{className:"h6 mb-0"},de.l.getDisplayName(e.shareData.owner)),a.createElement("div",null,(0,le.WU)(e.shareData.dateShared)))),!!e.shareData.message&&a.createElement("p",{className:"mt-1 mb-0 fw-semibold"},e.shareData.message))}var pe=n(7432),ve=n(86348),ge=n(54610),ye=n(68626);const he={imageClass:"Qig1U",fallbackText:"Bt4GN"};var Ee="studentFeed.feedVideoThumbnail";function be(e){if(!ce.M.getCanBeConsumed(e.video).canConsume){var t=ce.M.getPrivacyReasoning(e.video);return a.createElement(pe.Z,{data:ee.W.Fallbacks.VIDEO_UNAVAILABLE_STUDENT_FEED,className:"border rounded",imageType:ge.__.Thumbnails,imageClassName:"".concat(he.imageClass," w-25 h-25")},a.createElement("div",{className:he.fallbackText},a.createElement("h3",{className:"h4"},t),a.createElement("p",null,a.createElement(R.x,{namespace:Ee,phrase:"unavailableDescription"}))))}return a.createElement(ve.u,{appLink:e.appLink,video:e.video,analyticsOptions:{location:s.LZ.StudentFeed},type:"static",textPosition:ye.z.Independent,imageOptions:{size:ge.h2.Large},preload:!0,commonVideoProps:e.commonVideoProps})}var Se=n(1643),Ae=n(35223),De=n(27638),Ie=i.T.encloseNamespace("studentFeed.hooks");function Ne(){var e=(0,De.u)(s.LZ.StudentFeed).setFavourite;return function(t){var n=ce.M.getCanBeConsumed(t).canConsume,a=ce.M.isVideoTypeArchived(t);if(!n||a)return[];var r=Se.h.isFavouritedByCurrentUser(t);return[{svgName:r?Ae.vn.Heart:Ae.vn.HeartOutline,order:0,tooltip:Ie("favourite"),onClick:function(){return e(t,!r)},button:!0,className:"btn btn-link "+(r?"text-danger":"text-link")},{order:10,svgName:Ae.vn.AddToPlaylists,tooltip:Ie("addToPlaylist"),className:"btn btn-link text-link",button:!0,appLink:{application:E.O.PLAYLISTS,action:h.e.Playlists.ADD_TO_PLAYLIST,args:[t.id]},analyticsOptions:{entity:ce.M.getAnalyticsEntity(t),location:s.LZ.StudentFeed,actionType:s.Vw.Associate,descriptor:s.iF.Playlist,workflowPhase:s.eu.Start},analyticsData:ce.M.getAnalyticsData(t)}]}}var Ce=function(e){return{application:E.O.SHARE,action:h.e.Share.VIEW_SHARE_LINK,args:[e]}};function we(e){var t=e.data.object,n=Ne(),r=ce.M.getCanBeConsumed(t).canConsume;return a.createElement("div",{className:"pb-5"},a.createElement("div",{className:"pb-2"},a.createElement(fe,{imageCdnUrl:e.commonVideoProps.imageCdnUrl,shareData:e.data})),a.createElement(be,{video:e.data.object,appLink:Ce(e.data.id),shareData:e.data,setActivityStatus:e.setActivityStatus,commonVideoProps:e.commonVideoProps}),a.createElement(re.e,{actions:r?n(t):[]}),ce.M.isVideo(t)&&a.createElement(oe.$,{type:"series",video:t,appLink:se.j.getSeriesAppLink(t.series),analyticsOptions:{location:s.LZ.StudentFeed},className:r?"":"mt-2"}),a.createElement("div",null,a.createElement(ie.F,{className:"d-inline-block",appLink:r?Ce(e.data.id):null},a.createElement("h3",{className:"h4 mb-0"},t.name))),!!t.description&&a.createElement("p",{className:"clamp-2 mb-0 mt-1"},t.description))}var ke=n(68050),Oe=n(69111),xe=n(75896),Te=n(11607),je=n(83914),Pe=n(45778);const Le={circle:"BJPA7",active:"YuQnu",sm:"wI7Zf",xs:"KkKSG"};function Ve(e){var t=e.indicator,n=e.onClick,r=Le.circle;return t.active&&(r+=" "+Le.active),"sm"===t.size&&(r+=" "+Le.sm),"xs"===t.size&&(r+=" "+Le.xs),"invisible"===t.size&&(r+=" d-none"),a.createElement(Te.L,{className:r,onClick:n})}function Fe(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var a,r,i,o,c=[],s=!0,l=!1;try{if(i=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;s=!1}else for(;!(s=(a=i.call(n)).done)&&(c.push(a.value),c.length!==t);s=!0);}catch(e){l=!0,r=e}finally{try{if(!s&&null!=n.return&&(o=n.return(),Object(o)!==o))return}finally{if(l)throw r}}return c}}(e,t)||function(e,t){if(e){if("string"==typeof e)return Re(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?Re(e,t):void 0}}(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 Re(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,a=Array(t);n<t;n++)a[n]=e[n];return a}function Me(e){var t,n=function(t){return e.videos.findIndex((function(e){return e.id===t.id}))},r=Fe(a.useState(n(e.currentVideo)),2),i=r[0],o=r[1],c=a.useState(function(e){var t=e.videos.findIndex((function(t){return t.id===e.currentVideo.id})),n=function(e){return e<5?"std":5===e?"sm":6===e?"xs":"invisible"};return e.videos.map((function(e,a){return{active:t===a,size:n(a)}}))}(e)),s=Fe(c,2),l=s[0],u=s[1];a.useEffect((function(){var t=i,a=n(e.currentVideo);if(t!==a){var r=d+(a-t);o(a);var c=l.map((function(e,t){return{active:t===r,size:e.size}}));if(u(c),"std"!==l[r].size){var s=function(e,t){var n,a;e.forEach((function(e,t){"std"===e.size&&void 0===n&&(n=t),"std"===e.size&&(a=t)}));var r=F.t.deepClone(e);return"left"===t?(r[n-1]={active:!0,size:"std"},r[n-2]={active:!1,size:"sm"},r[n-3]={active:!1,size:"xs"},r[a+2]={active:!1,size:"invisible"},r[a+1]={active:!1,size:"xs"},r[a]={active:!1,size:"sm"}):(r[a+1]={active:!0,size:"std"},r[a+2]&&(r[a+2]={active:!1,size:"sm"}),r[a+3]&&(r[a+3]={active:!1,size:"xs"}),r[n-2]={active:!1,size:"invisible"},r[n-1]={active:!1,size:"xs"},r[n]={active:!1,size:"sm"}),r}(c,a<t?"left":"right");u(s)}}}),[null===(t=e.currentVideo)||void 0===t?void 0:t.id]);var d=l.findIndex((function(e){return e.active}));return a.createElement("div",{className:"d-flex align-items-center"},l.map((function(t,n){return a.createElement(Ve,{key:n,indicator:t,onClick:function(){return e.onSelectIndex(n)}})})))}var _e=n(183),ze=function(e,t){var n={application:E.O.SHARE,action:h.e.Share.VIEW_SHARE_LINK,args:[e]};return t&&(n.params=t),n},Be=function(e){return ce.M.isClip(e)?{clipId:e.id}:ce.M.isInteractive(e)?{interactiveId:e.id}:{videoId:e.id}};function Ue(e){return a.createElement("div",{className:"flex-shrink-0 position-relative w-100"},a.createElement(be,{video:e.data,appLink:ze(e.shareData.id,Object.assign(Object.assign({},Be(e.data)),{contextId:e.shareData.object.id,context:e.shareData.object.typeId===D.E.Playlist?_e.Q.Playlist:_e.Q.Series})),shareData:e.shareData,setActivityStatus:e.setActivityStatus,commonVideoProps:e.commonVideoProps}))}var Ye=function(e,t){var n={application:E.O.SHARE,action:h.e.Share.VIEW_SHARE_LINK,args:[e]};return t&&(n.params=t),n},He=function(e){return ce.M.isClip(e)?{clipId:e.id}:ce.M.isInteractive(e)?{interactiveId:e.id}:{videoId:e.id}};function We(e){return a.createElement("div",{className:"p-1 flex-shrink-0 position-relative col-6 col-sm-4 col-md-3"},a.createElement(ve.u,{video:e.data,type:"static",appLink:Ye(e.shareData.id,Object.assign(Object.assign({},He(e.data)),{contextId:e.shareData.object.id,context:e.shareData.object.typeId===D.E.Playlist?_e.Q.Playlist:_e.Q.Series})),textPosition:ye.z.Overlay,imageOptions:{size:ge.h2.Medium},preload:e.preloadImage,analyticsData:e.analyticsData,analyticsOptions:e.analyticsOptions,commonVideoProps:e.commonVideoProps}))}var qe="studentFeed.feedVideoCollectionEmptyState";function Qe(e){return a.createElement(X.u,{className:"border rounded-3 pt-5 pb-3"},a.createElement(X.u.Image,{src:ee.W.EmptyStates.Playlists.PLAYLIST_VIDEOS}),a.createElement(X.u.Heading,null,a.createElement(R.x,{namespace:qe,phrase:"heading",options:{name:e.data.name}})),e.data.typeId===D.E.Playlist&&a.createElement(X.u.Info,null,a.createElement(R.x,{namespace:qe,phrase:"playlistInfo"})))}const Ze={leftWidgetButton:"bux3R",rightWidgetButton:"QTLk7"};function $e(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var a,r,i,o,c=[],s=!0,l=!1;try{if(i=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;s=!1}else for(;!(s=(a=i.call(n)).done)&&(c.push(a.value),c.length!==t);s=!0);}catch(e){l=!0,r=e}finally{try{if(!s&&null!=n.return&&(o=n.return(),Object(o)!==o))return}finally{if(l)throw r}}return c}}(e,t)||function(e,t){if(e){if("string"==typeof e)return Ge(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?Ge(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 Ge(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,a=Array(t);n<t;n++)a[n]=e[n];return a}var Ke=function(e,t){var n={application:E.O.SHARE,action:h.e.Share.VIEW_SHARE_LINK,args:[e]};return t&&(n.params=t),n},Je=function(e){return Pe.G.isType(e,D.E.Playlist)?e.union.data:e.videos.data};function Xe(e){var t=e.data.object,n=Je(e.data.object),r=$e(a.useState(xe.m.first(n)),2),i=r[0],o=r[1],c=$e(a.useState(!1),2),s=c[0],u=c[1],d=a.useRef(null),m=Ne(),f=n.findIndex((function(e){return e.id===i.id}));return a.createElement("div",{className:"pb-5"},a.createElement("div",{className:"pb-2"},a.createElement(fe,{imageCdnUrl:e.commonVideoProps.imageCdnUrl,shareData:e.data})),i?a.createElement(a.Fragment,null,a.createElement("div",{className:"position-relative"},a.createElement(l.kM,{controlsRef:d,type:N.l9.Row,contents:I.z.FeedVideos,childComponent:Ue,extraChildComponentProps:{setActivityStatus:e.setActivityStatus,shareData:e.data,commonVideoProps:e.commonVideoProps},collection:n,onNext:function(){o(n[f+1])},onPrevious:function(){o(n[f-1])},leftWidgetButtonClassName:Ze.leftWidgetButton,rightWidgetButtonClassName:Ze.rightWidgetButton,hideBleedingContent:!0,hideName:!0,hideExtendedClickableArea:!0,prefetched:!0,lazyLoad:!1,touchBehavior:"drag"})),a.createElement("div",{className:"position-relative"},a.createElement(ke.Z,{className:"g-0"},a.createElement(Oe.Z,{xs:2,className:"d-flex align-items-center justify-content-start"},a.createElement(re.e,{actions:m(i)})),a.createElement(Oe.Z,{xs:8,className:"d-flex align-items-center justify-content-center"},a.createElement(Me,{videos:n,currentVideo:i,onSelectIndex:function(e){d.current&&(o(n[e]),d.current.jumpToIndex(e))}})),a.createElement(Oe.Z,{xs:2,className:"d-flex align-items-center justify-content-end"},a.createElement(Te.L,{onClick:function(){return u((function(e){return!e}))}},a.createElement(je.x,{svgName:s?Ae.vn.ChevronUp:Ae.vn.ChevronDown}))))),a.createElement("div",null,a.createElement(ie.F,{className:"d-inline-block",appLink:Ke(e.data.id)},a.createElement("h3",{className:"h4 mb-0"},t.name))),s?a.createElement("div",{className:"pt-1"},a.createElement(l.kM,{type:N.l9.Row,contents:I.z.Videos,childComponent:We,extraChildComponentProps:{shareData:e.data,commonVideoProps:e.commonVideoProps},collection:n,appLink:Ke(e.data.id),touchBehavior:"drag",limitTotalItems:!0,hideName:!0,prefetched:!0})):!!t.description&&a.createElement("p",{className:"clamp-2 mb-0 mt-1"},t.description)):a.createElement(Qe,{data:e.data.object}))}function et(e){return a.createElement(a.Fragment,null,e.feed.map((function(t,n){var r;switch(null===(r=t.object)||void 0===r?void 0:r.typeId){case D.E.Video:case D.E.Clip:case D.E.Interactive:return a.createElement(we,{key:"".concat(t.id,":").concat(n),data:t,setActivityStatus:e.setActivityStatus,commonVideoProps:e.commonVideoProps});case D.E.Playlist:case D.E.Series:return a.createElement(Xe,{key:"".concat(t.id,":").concat(n),data:t,setActivityStatus:e.setActivityStatus,commonVideoProps:e.commonVideoProps});case D.E.Subject:default:return a.createElement(a.Fragment,{key:n})}})))}function tt(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,a=Array(t);n<t;n++)a[n]=e[n];return a}var nt=15,at=635;function rt(e){var t,n,r,i=e.request,o=e.reversed,s=e.scrollTo,l=a.useRef(null),u=(0,p.Y)({triggerOnce:!1,rootMargin:at+"px"}),d=u.ref,m=u.inView,f=null===(t=c.a.useBasicFetch(m?i:null).data)||void 0===t?void 0:t.data,v=window.scrollY,g=(n=a.useState(at*e.limit),r=2,function(e){if(Array.isArray(e))return e}(n)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var a,r,i,o,c=[],s=!0,l=!1;try{if(i=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;s=!1}else for(;!(s=(a=i.call(n)).done)&&(c.push(a.value),c.length!==t);s=!0);}catch(e){l=!0,r=e}finally{try{if(!s&&null!=n.return&&(o=n.return(),Object(o)!==o))return}finally{if(l)throw r}}return c}}(n,r)||function(e,t){if(e){if("string"==typeof e)return tt(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?tt(e,t):void 0}}(n,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.")}()),y=g[0],h=g[1];return a.useLayoutEffect((function(){var e=l.current.getBoundingClientRect();o?window.scrollTo(0,v+e.height):s&&window.requestAnimationFrame((function(){window.scrollTo(0,v+e.top-100)}))}),[s]),a.useLayoutEffect((function(){if(y){var e=l.current.getBoundingClientRect().height;if(h(e),!(y<e+nt&&y>e-nt||l.current.offsetTop>v)){var t=y-e;window.scrollTo(0,v-t)}}})),a.createElement("div",{ref:d},a.createElement("div",{ref:l},(null==f?void 0:f.length)?a.createElement(et,{feed:f,setActivityStatus:e.setActivityStatus,commonVideoProps:e.commonVideoProps}):a.createElement("div",{style:{height:y,overflow:"hidden"}},a.createElement(P,{items:e.limit}))))}var it=n(70680),ot=n(94644),ct=n(69883);function st(e){return function(e){if(Array.isArray(e))return dt(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||ut(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 lt(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var a,r,i,o,c=[],s=!0,l=!1;try{if(i=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;s=!1}else for(;!(s=(a=i.call(n)).done)&&(c.push(a.value),c.length!==t);s=!0);}catch(e){l=!0,r=e}finally{try{if(!s&&null!=n.return&&(o=n.return(),Object(o)!==o))return}finally{if(l)throw r}}return c}}(e,t)||ut(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 ut(e,t){if(e){if("string"==typeof e)return dt(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?dt(e,t):void 0}}function dt(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,a=Array(t);n<t;n++)a[n]=e[n];return a}var mt=i.T.encloseNamespace("studentFeed.studentFeed"),ft=function(e,t){var n=(0,it.oR)(),r=(0,ct.Z)(),i=lt(a.useState([]),2),o=i[0],s=i[1],l=lt(a.useState(!1),2),u=l[0],d=l[1];function m(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},a=t.from,i=t.to,o=t.cursor,l=t.reverse,u=function(e){var n,a;if(u=null,e.data.length){if(null===(a=null===(n=e.pagination)||void 0===n?void 0:n.cursors)||void 0===a?void 0:a.next)if(l){var r={request:m(Object.assign(Object.assign({},t),{cursor:e.pagination.cursors.next})),reversed:!0};s((function(e){return[r].concat(st(e))}))}else{var i={request:m(Object.assign(Object.assign({},t),{cursor:e.pagination.cursors.next}))};s((function(e){return[].concat(st(e),[i])}))}}else s((function(e){var t=e.findIndex((function(e){return e.request.key===f.key})),n=[].concat(st(e.slice(0,t)),st(e.slice(t+1)));return n.length||d(!0),n}))},f=G.getFeed({from:a,to:i,cursor:o,sort:l?q.DateAscending:q.DateDescending,limit:e,success:function(e){window.requestAnimationFrame((function(){u&&u(e)}))},error:function(e){return function(e,t){if(!e)return(0,ot.r)(t.status);r.error(mt("error"))}(o,e)}}),p=c.a.getResponse(n.getState(),f.key);return p.data&&window.setTimeout((function(){u(p.data)}),0),f}return a.useEffect((function(){var e=null;if(isNaN(Date.parse(t))||(e=new Date(t)),e){var n={request:m({from:e,reverse:!0}),reversed:!0},a={request:m({to:e}),current:!0};s([a]),window.requestAnimationFrame((function(){s((function(e){return[n].concat(st(e))}))}))}else s([{request:m(),current:!0}])}),[]),{requests:o,isEmpty:u}};function pt(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var a,r,i,o,c=[],s=!0,l=!1;try{if(i=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;s=!1}else for(;!(s=(a=i.call(n)).done)&&(c.push(a.value),c.length!==t);s=!0);}catch(e){l=!0,r=e}finally{try{if(!s&&null!=n.return&&(o=n.return(),Object(o)!==o))return}finally{if(l)throw r}}return c}}(e,t)||function(e,t){if(e){if("string"==typeof e)return vt(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?vt(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 vt(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,a=Array(t);n<t;n++)a[n]=e[n];return a}var gt=i.T.encloseNamespace("studentFeed.studentFeed"),yt=10;function ht(e){var t=(0,v.T)().hasPermissions,n=e.date,i=(0,b.U)({locationContext:s.LZ.StudentFeed}).commonVideoProps,S=(0,f.O)(s.LZ.StudentFeed),A=J();(0,g.M)({title:gt("pageTitle")});var D=c.a.useBasicFetch(m.N.currentUser()),I=c.a.useBasicFetch(d.L.config()),N=c.a.useBasicFetch(G.getRecentActivities()),C=ft(yt,n),w=C.requests,k=C.isEmpty,O=pt(a.useState(!1),2),T=O[0],j=O[1],L=(0,p.Y)({triggerOnce:!1,rootMargin:"300px"}),V=L.ref,F=L.inView,R=L.initialized&&!F,M=t(u.C.ViewDiscover),_=pt(a.useState(null),2),z=_[0],B=_[1];function U(){var e=w.find((function(e){return e.current}));e?B(e.request.key):window.scrollTo(0,document.body.scrollHeight)}return a.useLayoutEffect((function(){B(null)})),T?a.createElement(a.Fragment,null):M&&k&&y.O.fromPageLoad()?(j(!0),o.Q.C$.trigger({application:E.O.DASHBOARD,action:h.e.Dashboard.HOME},{replace:!0}),a.createElement(a.Fragment,null)):a.createElement("div",{className:"px-4 container-compact"},a.createElement("div",{className:"pb-2 border-bottom mb-3",ref:V},a.createElement(W,{currentUser:D.data,dateRange:A,scrollToCurrent:U})),a.createElement("div",{className:"d-flex justify-content-center"},a.createElement("div",{className:"floating-jump-to"},a.createElement(r.Z,{timeout:R?500:0,in:R,className:"floating-jump-to",classNames:"floating-jump-to",mountOnEnter:!0,unmountOnExit:!0},a.createElement(Y,{dateRange:A,floating:!0,scrollToCurrent:U})))),N.hasCompleted?a.createElement(x,{recentActivities:N.data,setActivityStatus:S,commonVideoProps:i}):a.createElement("div",{className:"pb-3"},a.createElement(l.j7,{hideDescription:!0})),(!D.data||!I.data)&&a.createElement(P,{items:yt}),k&&a.createElement(ae,{hasDiscover:M}),null==w?void 0:w.map((function(e){return a.createElement(rt,{key:e.request.key,limit:yt,request:e.request,reversed:e.reversed,setActivityStatus:S,scrollTo:e.request.key===z,commonVideoProps:i})})))}},58321:(e,t,n)=>{n.d(t,{U:()=>p});var a=n(20354),r=n(16714),i=n(39151),o=n(1666),c=n(31949),s=n(22902),l=n(37802),u=n(22490),d=n(82431),m=n(46390),f=n(27638);function p(e){var t,n,p,v=e||{},g=v.locationContext,y=v.mtv,h=v.flightNamespace,E=v.sharedPlaylist,b=(0,m.G)(),S=b.isPlugin,A=b.params,D=(0,f.u)(g,h),I=D.setFavourite,N=D.canFavourite,C=(0,l.r)(null),w=C.hasTopicDirectories,k=C.isLoadingSettings,O=(0,s.T)(),x=O.hasPermissions,T=O.isLoaded,j=x(r.C.StudentExperience),P=a.a.useBasicFetch(i.L.config()),L=a.a.useBasicFetch(c.N.currentUser()),V=a.a.useBasicFetch((null===(t=L.data)||void 0===t?void 0:t.isAuthenticated)&&o.h.yearGroups(L.data.customerId));return{hasCommonVideoPropsCompleted:!k&&T&&P.hasCompleted&&L.hasCompleted&&(!(null===(n=L.data)||void 0===n?void 0:n.isAuthenticated)||V.hasCompleted),commonVideoProps:{subTextType:"series",getSubTextAppLink:function(e){var t;return"series"in e?E&&!(null===(t=L.data)||void 0===t?void 0:t.isAuthenticated)?null:d.j.getSeriesAppLink(e.series,{mtv:y}):null},isPlugin:S,isPluginPopup:!!(null==A?void 0:A.popup),canFavourite:N,setFavourite:I,imageCdnUrl:null===(p=P.data)||void 0===p?void 0:p.imageCdnUrl,yearGroups:V.data,getClassroomGuideAppLink:u.W.getClassroomGuideAppLink,getInteractiveGuidanceAppLink:u.W.getInteractiveGuidanceAppLink,getResourceGuidanceAppLink:u.W.getResourceGuidanceAppLink,showNewVideoIndicator:w,companyLogoFallbackUrl:null,hasStudentExperience:j}}}},82602:(e,t,n)=>{n.d(t,{WU:()=>l});var a=["second","minute","hour","day","week","month","year"],r=["秒","分钟","小时","天","周","个月","年"],i={},o=function(e,t){i[e]=t},c=[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 l=function(e,t,n){var a=function(e,t){return(+(t?s(t):new Date)-+s(e))/1e3}(e,n&&n.relativeDate);return function(e,t){for(var n=e<0?1:0,a=e=Math.abs(e),r=0;e>=c[r]&&r<c.length;r++)e/=c[r];return(e=Math.floor(e))>(0==(r*=2)?9:1)&&(r+=1),t(e,r,a)[n].replace("%s",e.toString())}(a,function(e){return i[e]||i.en_US}(t))};o("en_US",(function(e,t){if(0===t)return["just now","right now"];var n=a[Math.floor(t/2)];return e>1&&(n+="s"),[e+" "+n+" ago","in "+e+" "+n]})),o("zh_CN",(function(e,t){if(0===t)return["刚刚","片刻后"];var n=r[~~(t/2)];return[e+" "+n+"前",e+" "+n+"后"]}))}}]);
2
+ //# sourceMappingURL=9503-715c46ecc1-lite.chunk.js.map