@clickview/lite 0.75.0-rc.2 → 0.75.0-rc.4

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 (193) hide show
  1. package/dist/bundles.json +1 -1
  2. package/dist/css/{119-lite-a1f592f602.chunk.css → 1243-lite-13eda8f6a0.chunk.css} +2 -4
  3. package/dist/css/{7230-lite-36ff6e6d53.chunk.css → 1867-lite-8baa8af02b.chunk.css} +3 -5
  4. package/dist/css/{5241-lite-baab687563.chunk.css → 4203-lite-9ffab89741.chunk.css} +3 -5
  5. package/dist/css/{8364-lite-99938dea56.chunk.css → 5193-lite-d434056013.chunk.css} +1 -0
  6. package/dist/css/{7339-lite-05c396fed3.chunk.css → 6756-lite-839687d3d7.chunk.css} +1 -0
  7. package/dist/css/{9527-lite-1d2221b6a8.chunk.css → 7103-lite-fef3024f61.chunk.css} +2 -4
  8. package/dist/css/{8856-lite-827b34aed7.chunk.css → 8856-lite-c114ab5c89.chunk.css} +1 -1
  9. package/dist/languages/en.json +1 -1
  10. package/dist/scripts/104-0c03791b45-lite.chunk.js +2 -0
  11. package/dist/scripts/104-0c03791b45-lite.chunk.js.map +1 -0
  12. package/dist/scripts/1074-4f6b136f9a-lite.chunk.js +2 -0
  13. package/dist/scripts/1074-4f6b136f9a-lite.chunk.js.map +1 -0
  14. package/dist/scripts/1087-861be5211f-lite.chunk.js +2 -0
  15. package/dist/scripts/1087-861be5211f-lite.chunk.js.map +1 -0
  16. package/dist/scripts/1192-d409863a3c-lite.chunk.js +2 -0
  17. package/dist/scripts/1192-d409863a3c-lite.chunk.js.map +1 -0
  18. package/dist/scripts/1199-d2fcbb547e-lite.chunk.js +2 -0
  19. package/dist/scripts/1199-d2fcbb547e-lite.chunk.js.map +1 -0
  20. package/dist/scripts/121-1b744469ee-lite.chunk.js +2 -0
  21. package/dist/scripts/121-1b744469ee-lite.chunk.js.map +1 -0
  22. package/dist/scripts/{1221-502395e693-lite.chunk.js → 1221-1109d5379d-lite.chunk.js} +3 -3
  23. package/dist/scripts/1221-1109d5379d-lite.chunk.js.map +1 -0
  24. package/dist/scripts/1243-ede924125c-lite.chunk.js +2 -0
  25. package/dist/scripts/1243-ede924125c-lite.chunk.js.map +1 -0
  26. package/dist/scripts/147-44ee7e9a78-lite.chunk.js +2 -0
  27. package/dist/scripts/147-44ee7e9a78-lite.chunk.js.map +1 -0
  28. package/dist/scripts/1491-ab92a040e5-lite.chunk.js +2 -0
  29. package/dist/scripts/1491-ab92a040e5-lite.chunk.js.map +1 -0
  30. package/dist/scripts/{1610-7f58bb25a9-lite.chunk.js → 1610-bb6eff2ff1-lite.chunk.js} +2 -2
  31. package/dist/scripts/1610-bb6eff2ff1-lite.chunk.js.map +1 -0
  32. package/dist/scripts/{7230-71f8d6d1bd-lite.chunk.js → 1867-3b447a1b85-lite.chunk.js} +2 -2
  33. package/dist/scripts/{7230-71f8d6d1bd-lite.chunk.js.map → 1867-3b447a1b85-lite.chunk.js.map} +1 -1
  34. package/dist/scripts/{218-297de74688-lite.chunk.js → 218-f6cc4a3b6a-lite.chunk.js} +2 -2
  35. package/dist/scripts/218-f6cc4a3b6a-lite.chunk.js.map +1 -0
  36. package/dist/scripts/2258-ed7383502f-lite.chunk.js +3 -0
  37. package/dist/scripts/2258-ed7383502f-lite.chunk.js.map +1 -0
  38. package/dist/scripts/{2968-c4c0114915-lite.chunk.js → 2968-13e56eeff8-lite.chunk.js} +1 -1
  39. package/dist/scripts/2968-13e56eeff8-lite.chunk.js.map +1 -0
  40. package/dist/scripts/3268-2736356687-lite.chunk.js +2 -0
  41. package/dist/scripts/{3268-faca1bf46e-lite.chunk.js.map → 3268-2736356687-lite.chunk.js.map} +1 -1
  42. package/dist/scripts/3597-eaae787997-lite.chunk.js +3 -0
  43. package/dist/scripts/3597-eaae787997-lite.chunk.js.map +1 -0
  44. package/dist/scripts/3836-425334ab13-lite.chunk.js +2 -0
  45. package/dist/scripts/{3836-f2a0c9f713-lite.chunk.js.map → 3836-425334ab13-lite.chunk.js.map} +1 -1
  46. package/dist/scripts/3837-e4c5bb738b-lite.chunk.js +2 -0
  47. package/dist/scripts/3837-e4c5bb738b-lite.chunk.js.map +1 -0
  48. package/dist/scripts/4185-7178e5a716-lite.chunk.js +2 -0
  49. package/dist/scripts/4185-7178e5a716-lite.chunk.js.map +1 -0
  50. package/dist/scripts/4203-ee50e89841-lite.chunk.js +3 -0
  51. package/dist/scripts/4203-ee50e89841-lite.chunk.js.map +1 -0
  52. package/dist/scripts/4598-bcd3f6f8a7-lite.chunk.js +2 -0
  53. package/dist/scripts/{4598-2b1daca7ae-lite.chunk.js.map → 4598-bcd3f6f8a7-lite.chunk.js.map} +1 -1
  54. package/dist/scripts/{4722-d96da2a258-lite.chunk.js → 4722-9eb591621a-lite.chunk.js} +3 -3
  55. package/dist/scripts/4722-9eb591621a-lite.chunk.js.map +1 -0
  56. package/dist/scripts/4948-f21dad2ca1-lite.chunk.js +2 -0
  57. package/dist/scripts/4948-f21dad2ca1-lite.chunk.js.map +1 -0
  58. package/dist/scripts/{5153-079b4125ae-lite.chunk.js → 5153-cf62a95421-lite.chunk.js} +3 -3
  59. package/dist/scripts/5153-cf62a95421-lite.chunk.js.map +1 -0
  60. package/dist/scripts/6137-bc8b193237-lite.chunk.js +2 -0
  61. package/dist/scripts/6137-bc8b193237-lite.chunk.js.map +1 -0
  62. package/dist/scripts/6756-cfd00009e4-lite.chunk.js +3 -0
  63. package/dist/scripts/6756-cfd00009e4-lite.chunk.js.map +1 -0
  64. package/dist/scripts/6790-36ce6dda04-lite.chunk.js +2 -0
  65. package/dist/scripts/6790-36ce6dda04-lite.chunk.js.map +1 -0
  66. package/dist/scripts/705-10a85bae7a-lite.chunk.js +2 -0
  67. package/dist/scripts/705-10a85bae7a-lite.chunk.js.map +1 -0
  68. package/dist/scripts/7103-14bd3771d2-lite.chunk.js +2 -0
  69. package/dist/scripts/7103-14bd3771d2-lite.chunk.js.map +1 -0
  70. package/dist/scripts/7148-d966512e45-lite.chunk.js +2 -0
  71. package/dist/scripts/7148-d966512e45-lite.chunk.js.map +1 -0
  72. package/dist/scripts/7205-12a6b2ac55-lite.chunk.js +2 -0
  73. package/dist/scripts/7205-12a6b2ac55-lite.chunk.js.map +1 -0
  74. package/dist/scripts/7438-38f60d3e8e-lite.chunk.js +2 -0
  75. package/dist/scripts/7438-38f60d3e8e-lite.chunk.js.map +1 -0
  76. package/dist/scripts/7480-e0749592fc-lite.chunk.js +2 -0
  77. package/dist/scripts/7480-e0749592fc-lite.chunk.js.map +1 -0
  78. package/dist/scripts/8010-e9163f5bee-lite.chunk.js +2 -0
  79. package/dist/scripts/8010-e9163f5bee-lite.chunk.js.map +1 -0
  80. package/dist/scripts/8410-1f1fd5ccf0-lite.chunk.js +3 -0
  81. package/dist/scripts/8410-1f1fd5ccf0-lite.chunk.js.map +1 -0
  82. package/dist/scripts/8705-ecd20ef6cb-lite.chunk.js +2 -0
  83. package/dist/scripts/8705-ecd20ef6cb-lite.chunk.js.map +1 -0
  84. package/dist/scripts/8856-4da691f96f-lite.chunk.js +2 -0
  85. package/dist/scripts/8856-4da691f96f-lite.chunk.js.map +1 -0
  86. package/dist/scripts/9003-fc8e674468-lite.chunk.js +2 -0
  87. package/dist/scripts/9003-fc8e674468-lite.chunk.js.map +1 -0
  88. package/dist/scripts/9042-add0f1c2e2-lite.chunk.js +2 -0
  89. package/dist/scripts/9042-add0f1c2e2-lite.chunk.js.map +1 -0
  90. package/dist/scripts/9103-4eec16d73b-lite.chunk.js +2 -0
  91. package/dist/scripts/9103-4eec16d73b-lite.chunk.js.map +1 -0
  92. package/dist/scripts/9134-a6a5fc92cf-lite.chunk.js +2 -0
  93. package/dist/scripts/9134-a6a5fc92cf-lite.chunk.js.map +1 -0
  94. package/dist/scripts/9266-f0ad8d5cb3-lite.chunk.js +2 -0
  95. package/dist/scripts/9266-f0ad8d5cb3-lite.chunk.js.map +1 -0
  96. package/dist/scripts/9620-3746c84350-lite.chunk.js +3 -0
  97. package/dist/scripts/9620-3746c84350-lite.chunk.js.map +1 -0
  98. package/dist/scripts/9740-9d50d31b72-lite.chunk.js +2 -0
  99. package/dist/scripts/9740-9d50d31b72-lite.chunk.js.map +1 -0
  100. package/dist/scripts/{bundle-95a6fc2722.min.js → bundle-fc60888464.min.js} +3 -3
  101. package/dist/scripts/{bundle-95a6fc2722.min.js.map → bundle-fc60888464.min.js.map} +1 -1
  102. package/package.json +1 -1
  103. package/dist/scripts/104-b62a8447f0-lite.chunk.js +0 -2
  104. package/dist/scripts/104-b62a8447f0-lite.chunk.js.map +0 -1
  105. package/dist/scripts/107-989ac2dc47-lite.chunk.js +0 -2
  106. package/dist/scripts/107-989ac2dc47-lite.chunk.js.map +0 -1
  107. package/dist/scripts/119-e3a8bd94dd-lite.chunk.js +0 -2
  108. package/dist/scripts/119-e3a8bd94dd-lite.chunk.js.map +0 -1
  109. package/dist/scripts/1199-a2ac2338d0-lite.chunk.js +0 -2
  110. package/dist/scripts/1199-a2ac2338d0-lite.chunk.js.map +0 -1
  111. package/dist/scripts/121-bf7a153eb8-lite.chunk.js +0 -2
  112. package/dist/scripts/121-bf7a153eb8-lite.chunk.js.map +0 -1
  113. package/dist/scripts/1221-502395e693-lite.chunk.js.map +0 -1
  114. package/dist/scripts/1400-43b37bfa8d-lite.chunk.js +0 -2
  115. package/dist/scripts/1400-43b37bfa8d-lite.chunk.js.map +0 -1
  116. package/dist/scripts/1610-7f58bb25a9-lite.chunk.js.map +0 -1
  117. package/dist/scripts/218-297de74688-lite.chunk.js.map +0 -1
  118. package/dist/scripts/2258-4d0639c9fe-lite.chunk.js +0 -3
  119. package/dist/scripts/2258-4d0639c9fe-lite.chunk.js.map +0 -1
  120. package/dist/scripts/2968-c4c0114915-lite.chunk.js.map +0 -1
  121. package/dist/scripts/3268-faca1bf46e-lite.chunk.js +0 -2
  122. package/dist/scripts/3836-f2a0c9f713-lite.chunk.js +0 -2
  123. package/dist/scripts/3837-fe321e8deb-lite.chunk.js +0 -2
  124. package/dist/scripts/3837-fe321e8deb-lite.chunk.js.map +0 -1
  125. package/dist/scripts/4025-306e0fbdd5-lite.chunk.js +0 -2
  126. package/dist/scripts/4025-306e0fbdd5-lite.chunk.js.map +0 -1
  127. package/dist/scripts/4164-5d3af57b67-lite.chunk.js +0 -2
  128. package/dist/scripts/4164-5d3af57b67-lite.chunk.js.map +0 -1
  129. package/dist/scripts/4185-e8e40dab72-lite.chunk.js +0 -2
  130. package/dist/scripts/4185-e8e40dab72-lite.chunk.js.map +0 -1
  131. package/dist/scripts/4562-545f04c53f-lite.chunk.js +0 -2
  132. package/dist/scripts/4562-545f04c53f-lite.chunk.js.map +0 -1
  133. package/dist/scripts/4598-2b1daca7ae-lite.chunk.js +0 -2
  134. package/dist/scripts/4722-d96da2a258-lite.chunk.js.map +0 -1
  135. package/dist/scripts/4948-66ba60c8e3-lite.chunk.js +0 -2
  136. package/dist/scripts/4948-66ba60c8e3-lite.chunk.js.map +0 -1
  137. package/dist/scripts/5153-079b4125ae-lite.chunk.js.map +0 -1
  138. package/dist/scripts/5241-163f5ac64c-lite.chunk.js +0 -3
  139. package/dist/scripts/5241-163f5ac64c-lite.chunk.js.map +0 -1
  140. package/dist/scripts/5349-bc0fcb4083-lite.chunk.js +0 -2
  141. package/dist/scripts/5349-bc0fcb4083-lite.chunk.js.map +0 -1
  142. package/dist/scripts/6135-a878a9cff0-lite.chunk.js +0 -3
  143. package/dist/scripts/6135-a878a9cff0-lite.chunk.js.map +0 -1
  144. package/dist/scripts/6509-23fdb20a4b-lite.chunk.js +0 -2
  145. package/dist/scripts/6509-23fdb20a4b-lite.chunk.js.map +0 -1
  146. package/dist/scripts/6790-5086b72662-lite.chunk.js +0 -2
  147. package/dist/scripts/6790-5086b72662-lite.chunk.js.map +0 -1
  148. package/dist/scripts/7148-432ab72091-lite.chunk.js +0 -2
  149. package/dist/scripts/7148-432ab72091-lite.chunk.js.map +0 -1
  150. package/dist/scripts/7205-2428f775a5-lite.chunk.js +0 -2
  151. package/dist/scripts/7205-2428f775a5-lite.chunk.js.map +0 -1
  152. package/dist/scripts/7339-5793c921bb-lite.chunk.js +0 -3
  153. package/dist/scripts/7339-5793c921bb-lite.chunk.js.map +0 -1
  154. package/dist/scripts/7438-a5f96e58fc-lite.chunk.js +0 -2
  155. package/dist/scripts/7438-a5f96e58fc-lite.chunk.js.map +0 -1
  156. package/dist/scripts/7926-6b040931aa-lite.chunk.js +0 -2
  157. package/dist/scripts/7926-6b040931aa-lite.chunk.js.map +0 -1
  158. package/dist/scripts/8536-f75009dd87-lite.chunk.js +0 -2
  159. package/dist/scripts/8536-f75009dd87-lite.chunk.js.map +0 -1
  160. package/dist/scripts/8687-549a2d9278-lite.chunk.js +0 -3
  161. package/dist/scripts/8687-549a2d9278-lite.chunk.js.map +0 -1
  162. package/dist/scripts/8856-df102acdff-lite.chunk.js +0 -2
  163. package/dist/scripts/8856-df102acdff-lite.chunk.js.map +0 -1
  164. package/dist/scripts/9134-42dc2390ce-lite.chunk.js +0 -2
  165. package/dist/scripts/9134-42dc2390ce-lite.chunk.js.map +0 -1
  166. package/dist/scripts/9266-c5d6705147-lite.chunk.js +0 -2
  167. package/dist/scripts/9266-c5d6705147-lite.chunk.js.map +0 -1
  168. package/dist/scripts/9284-402a14d41c-lite.chunk.js +0 -2
  169. package/dist/scripts/9284-402a14d41c-lite.chunk.js.map +0 -1
  170. package/dist/scripts/9470-11c8c2ca71-lite.chunk.js +0 -2
  171. package/dist/scripts/9470-11c8c2ca71-lite.chunk.js.map +0 -1
  172. package/dist/scripts/9527-111c8586a7-lite.chunk.js +0 -2
  173. package/dist/scripts/9527-111c8586a7-lite.chunk.js.map +0 -1
  174. package/dist/scripts/9528-2b478f4ca8-lite.chunk.js +0 -3
  175. package/dist/scripts/9528-2b478f4ca8-lite.chunk.js.map +0 -1
  176. package/dist/scripts/9591-230bcf0935-lite.chunk.js +0 -2
  177. package/dist/scripts/9591-230bcf0935-lite.chunk.js.map +0 -1
  178. /package/dist/css/{8687-lite-6787cc731a.chunk.css → 3597-lite-6787cc731a.chunk.css} +0 -0
  179. /package/dist/css/{5349-lite-829df3b4e7.chunk.css → 6137-lite-829df3b4e7.chunk.css} +0 -0
  180. /package/dist/css/{9470-lite-edb2d29928.chunk.css → 8010-lite-edb2d29928.chunk.css} +0 -0
  181. /package/dist/css/{6135-lite-41bdd1c5a3.chunk.css → 8410-lite-41bdd1c5a3.chunk.css} +0 -0
  182. /package/dist/css/{121-lite-1337d9acf0.chunk.css → 9042-lite-1337d9acf0.chunk.css} +0 -0
  183. /package/dist/css/{9528-lite-6787cc731a.chunk.css → 9620-lite-6787cc731a.chunk.css} +0 -0
  184. /package/dist/scripts/{1221-502395e693-lite.chunk.js.LICENSE.txt → 1221-1109d5379d-lite.chunk.js.LICENSE.txt} +0 -0
  185. /package/dist/scripts/{2258-4d0639c9fe-lite.chunk.js.LICENSE.txt → 2258-ed7383502f-lite.chunk.js.LICENSE.txt} +0 -0
  186. /package/dist/scripts/{4722-d96da2a258-lite.chunk.js.LICENSE.txt → 3597-eaae787997-lite.chunk.js.LICENSE.txt} +0 -0
  187. /package/dist/scripts/{5153-079b4125ae-lite.chunk.js.LICENSE.txt → 4203-ee50e89841-lite.chunk.js.LICENSE.txt} +0 -0
  188. /package/dist/scripts/{5241-163f5ac64c-lite.chunk.js.LICENSE.txt → 4722-9eb591621a-lite.chunk.js.LICENSE.txt} +0 -0
  189. /package/dist/scripts/{6135-a878a9cff0-lite.chunk.js.LICENSE.txt → 5153-cf62a95421-lite.chunk.js.LICENSE.txt} +0 -0
  190. /package/dist/scripts/{7339-5793c921bb-lite.chunk.js.LICENSE.txt → 6756-cfd00009e4-lite.chunk.js.LICENSE.txt} +0 -0
  191. /package/dist/scripts/{8687-549a2d9278-lite.chunk.js.LICENSE.txt → 8410-1f1fd5ccf0-lite.chunk.js.LICENSE.txt} +0 -0
  192. /package/dist/scripts/{9528-2b478f4ca8-lite.chunk.js.LICENSE.txt → 9620-3746c84350-lite.chunk.js.LICENSE.txt} +0 -0
  193. /package/dist/scripts/{bundle-95a6fc2722.min.js.LICENSE.txt → bundle-fc60888464.min.js.LICENSE.txt} +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scripts/6790-36ce6dda04-lite.chunk.js","mappings":"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","sources":["file:///app/packages/libs/shared/src/apps/share-v2/components/delete-share-content/DeleteShareContent.tsx","file:///app/packages/libs/shared/src/apps/share-v2/enums/SharePrivacy.ts","file:///app/packages/libs/shared/src/apps/share-v2/flight-requests/ShareRequests.ts","file:///app/packages/libs/shared/src/apps/share-v2/hooks/useShareLinkActions.ts","file:///app/packages/libs/shared/src/apps/share-v2/utils/ShareLinkHelper.ts","file:///app/packages/libs/shared/src/apps/share-v2/views/delete-assignment-confirmation-view/DeleteAssignmentConfirmationView.tsx"],"sourcesContent":["import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { Checkbox } from 'libs/shared/components/forms/form-checkbox/Checkbox';\nimport { PopupButtons } from 'libs/shared/components/popup/PopupButtons';\n\nconst namespace = 'sharev2.deleteShareContent';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nexport interface DeleteShareContentProps {\n loading: boolean;\n phrases: {\n leadingSentence: string;\n bulletPoints: string[];\n acknowledgement: string;\n deleteButton: string;\n backButton?: string;\n };\n onDelete: () => void;\n onBack?: () => void;\n}\n\nexport function DeleteShareContent(props: DeleteShareContentProps) {\n const [ ack, setAck ] = React.useState(false);\n\n function onDelete() {\n if (!ack || props.loading)\n return;\n\n props.onDelete();\n }\n\n return (\n <div className='d-flex flex-column gap-3'>\n <p className='m-0'>{props.phrases.leadingSentence}</p>\n <ul className='m-0'>\n {props.phrases.bulletPoints.map((phrase, index) => (\n <li key={index}>\n {phrase}\n </li>\n ))}\n </ul>\n <Checkbox\n id='ack'\n checked={ack}\n onChange={e => setAck(e.target.checked)}\n label={props.phrases.acknowledgement}\n />\n <PopupButtons>\n {props.onBack && (\n <PopupButtons.Cancel\n onClick={props.onBack}\n text={props.phrases.backButton ?? getPhrase('backButton')}\n variant='link'\n />\n )}\n <PopupButtons.Submit\n onClick={onDelete}\n text={props.phrases.deleteButton}\n variant='danger'\n disabled={!ack || props.loading}\n showSpinner={props.loading}\n />\n </PopupButtons>\n </div>\n );\n}","export enum SharePrivacy {\n Public = 'Public',\n PinCode = 'PinCode',\n PasswordProtected = 'PasswordProtected',\n ProtectedOverrideRestriction = 'ProtectedOverrideRestriction',\n JustMySchoolOverrideRestriction = 'JustMySchoolOverrideRestriction',\n Protected = 'Protected',\n JustMySchool = 'JustMySchool',\n Direct = 'Direct'\n}","import { HttpVerbs } from 'libs/common/backbone/enums/HttpVerbs';\nimport { UrlHelper } from 'libs/common/backbone/utils/UrlHelper';\nimport { Flight } from 'libs/common/flight';\n\nimport { ShareType } from 'libs/shared/apps/share-v2/enums/ShareType';\nimport { CreateShareLinkRequest } from 'libs/shared/apps/share-v2/interfaces/CreateShareLinkRequest';\nimport { CreateShareRequest } from 'libs/shared/apps/share-v2/interfaces/CreateShareRequest';\nimport { UpdateShareRequest } from 'libs/shared/apps/share-v2/interfaces/UpdateShareRequest';\n\nconst normalizeOptions: Flight.NormalizeOptions = {\n namespace: 'share-v2'\n};\n\nexport interface GetSentSharesParams {\n cursor?: string;\n scopeId?: string;\n objectTypeId?: number;\n type?: ShareType[];\n}\n\nexport const ShareRequests = {\n createShare(\n data: CreateShareRequest\n ): Flight.Request {\n return {\n url: '{gateway}/v2/shares',\n key: 'create:share-v2',\n type: HttpVerbs.POST,\n data,\n normalizeOptions,\n invalidationKeys: [ 'sent:share-v2', `get:share-v2:shares:object:${data.objectId}` ]\n };\n },\n\n updateShare(\n shareId: string,\n data: UpdateShareRequest\n ): Flight.Request {\n return {\n url: `{gateway}/v2/shares/${shareId}`,\n key: `update:share-v2`,\n type: HttpVerbs.PUT,\n data,\n normalizeOptions,\n invalidationKeys: [ 'share-v2:permanent-link:object', `share-v2:${shareId}` ]\n };\n },\n \n deleteShare(\n shareId: string\n ): Flight.Request {\n return {\n type: HttpVerbs.DELETE,\n url: `{gateway}/v2/shares/${shareId}`,\n key: `delete:share-v2`,\n normalizeOptions,\n invalidationKeys: [ 'share-v2:permanent-link:object', 'sent:share-v2', `share-v2:${shareId}` ]\n };\n },\n\n getShare(\n shareId: string\n ): Flight.Request {\n return {\n url: `{gateway}/v2/shares/${shareId}`,\n key: `share-v2:${shareId}`,\n bootstrapName: `share-v2:${shareId}`,\n type: HttpVerbs.GET,\n normalizeOptions\n };\n },\n\n getSentShares(\n params: GetSentSharesParams = {}\n ): Flight.Request {\n const key = Object.values(params).sort().join(':');\n\n return {\n url: UrlHelper.urlBuilder('{gateway}/v2/shares/sent', params),\n key: `sent:share-v2:${key}`,\n type: HttpVerbs.GET,\n normalize: false\n };\n },\n\n getShareLink(\n id: string\n ): Flight.Request {\n return {\n url: UrlHelper.urlBuilder('{gateway}/v2/shares/permanent-link', { objectId: id }),\n key: `share-v2:permanent-link:object:${id}`,\n normalizeOptions\n };\n },\n\n createShareLink(\n data: CreateShareLinkRequest\n ): Flight.Request {\n return {\n type: HttpVerbs.POST,\n url: UrlHelper.urlBuilder('{gateway}/v2/shares/permanent-link', { ...data }),\n key: `create:share-v2:permanent-link:object:${data.objectId}`,\n invalidationKeys: [ `share-v2:permanent-link:object:${data.objectId}`, 'sent:share-v2' ],\n normalizeOptions\n };\n },\n\n getPrivacy(id: string): Flight.Request {\n return {\n url: `{gateway}/v1/objects/${id}/access`,\n key: `privacy:${id}`,\n normalize: false\n };\n },\n \n getSharesByObjectId(\n objectId: string | number\n ): Flight.Request {\n return {\n url: `{gateway}/v2/shares/objects/${objectId}`,\n key: `get:share-v2:shares:object:${objectId}`,\n type: HttpVerbs.GET,\n normalizeOptions\n };\n },\n\n createSharePincode(shareId: string): Flight.Request {\n return {\n url: `{gateway}/v2/shares/${shareId}/pincode`,\n key: `create:share-v2:${shareId}:pincode`,\n type: HttpVerbs.POST\n };\n },\n\n getPincodeByShareId(shareId: string): Flight.Request {\n return {\n url: `{gateway}/v2/shares/${shareId}/pincode`,\n key: `get:share-v2:${shareId}:pincode`\n };\n },\n\n getPincodeByCode(code: string): Flight.Request {\n return {\n url: `{gateway}/v2/shares/pincode?code=${code}`,\n key: `get:share-v2:pincode:${code}`\n };\n }\n};\n","import { Flight } from 'libs/common/react/index';\n\nimport { SharePrivacy } from '../enums/SharePrivacy';\nimport { ShareRequests } from '../flight-requests/ShareRequests';\nimport { Share } from '../interfaces/Share';\nimport { SharePrivacyResponse } from '../interfaces/SharePrivacyResponse';\nimport { UpdateShareRequest } from '../interfaces/UpdateShareRequest';\nimport { ShareLinkHelper } from '../utils/ShareLinkHelper';\n\ninterface UseShareLinkActionsOptions {\n entityId: string;\n}\n\nexport function useShareLinkActions(options: UseShareLinkActionsOptions) {\n const fetchAsync = Flight.useGetFetchAsync();\n\n const entityPrivacy = Flight.useBasicFetch<SharePrivacyResponse>(ShareRequests.getPrivacy(options.entityId));\n\n function getCreateSharePrivacy() {\n const accessType = ShareLinkHelper.getShareLinkAccessType(entityPrivacy.data);\n\n return accessType === 'protected'\n ? SharePrivacy.Protected\n : SharePrivacy.JustMySchool;\n }\n\n function updateShareLink(shareId: string, data: UpdateShareRequest): Promise<Share> {\n return fetchAsync<Share>(ShareRequests.updateShare(shareId, data));\n }\n\n function createShareLink(privacy?: SharePrivacy): Promise<Share> {\n const requestPrivacy = privacy ?? getCreateSharePrivacy();\n return fetchAsync<Share>(ShareRequests.createShareLink({ objectId: options.entityId, privacy: requestPrivacy }));\n }\n\n function deleteShareLink(shareId: string): Promise<void> {\n return fetchAsync(ShareRequests.deleteShare(shareId));\n }\n\n return {\n loaded: !!entityPrivacy.data,\n updateShareLink,\n createShareLink,\n deleteShareLink\n };\n}","import { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { DateHelper } from 'libs/common/react/utils/DateHelper';\n\nimport { SharePrivacy } from 'libs/shared/apps/share-v2/enums/SharePrivacy';\nimport type { SharePrivacyResponse } from 'libs/shared/apps/share-v2/interfaces/SharePrivacyResponse';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { ShareLinkStatus } from 'libs/shared/enums/ShareLinkStatus';\nimport type { BaseObject, YearGroup } from 'libs/shared/interfaces';\nimport { RestrictionHelper } from 'libs/shared/utils/RestrictionHelper';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\nconst namespace = 'sharev2.utils';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface GetIconAndTextOptions {\n linkExpireDate: string;\n isPasswordProtected: boolean;\n privacy: SharePrivacy;\n status: ShareLinkStatus;\n entityTypeId: MasterType;\n hasStudentExp: boolean;\n entity: BaseObject;\n yearGroups: YearGroup[];\n}\n\ninterface GetPrivateIconAndTextOptions {\n privacy: SharePrivacy;\n entityTypeId: MasterType;\n hasStudentExp: boolean;\n entity: BaseObject;\n yearGroups: YearGroup[];\n}\n\nexport const ShareLinkHelper = {\n getPrivateIconAndText: (options: GetPrivateIconAndTextOptions) => {\n const { entityTypeId, privacy, hasStudentExp, entity, yearGroups } = options;\n \n if (entityTypeId === MasterType.Topic || entityTypeId === MasterType.Series)\n return { icon: cvSvgLibrary.VisibleOn, text: getPhrase(hasStudentExp ? 'justMySchoolTeachers' : 'justMySchoolDescription') };\n \n /**\n * This is mainly for typescript, privacy will be an array for playlists\n * but that is handled above\n */\n if (Array.isArray(privacy))\n return;\n \n switch (privacy) {\n case SharePrivacy.Public:\n return { icon: cvSvgLibrary.VisibleOn, text: getPhrase('publicDescription') };\n case SharePrivacy.ProtectedOverrideRestriction:\n return { icon: cvSvgLibrary.VisibleOn, text: getPhrase('clickViewOnly') };\n case SharePrivacy.Protected:\n return {\n icon: cvSvgLibrary.Lock,\n text: ShareLinkHelper.getRespectRatingText(entity, yearGroups, hasStudentExp)\n };\n case SharePrivacy.JustMySchoolOverrideRestriction:\n return { icon: cvSvgLibrary.Lock, text: getPhrase(hasStudentExp ? 'justMySchoolTeachers' : 'justMySchoolDescription') };\n case SharePrivacy.JustMySchool:\n return {\n icon: cvSvgLibrary.Lock,\n text: ShareLinkHelper.getRespectRatingText(entity, yearGroups, hasStudentExp)\n };\n case SharePrivacy.PinCode:\n return { icon: cvSvgLibrary.Lock, text: getPhrase('pinDescription') };\n case SharePrivacy.PasswordProtected:\n return { icon: cvSvgLibrary.Lock, text: getPhrase('privateDescription') };\n default:\n return {};\n }\n },\n\n getIconAndText: (options: GetIconAndTextOptions) => {\n const { linkExpireDate, isPasswordProtected, status } = options;\n if (!linkExpireDate && !isPasswordProtected)\n return ShareLinkHelper.getPrivateIconAndText(options);\n \n if (!linkExpireDate)\n return { icon: cvSvgLibrary.Lock, text: getPhrase('password') };\n \n const isToday = DateHelper.isToday(linkExpireDate);\n const dayDifference = DateHelper.diffBetween(linkExpireDate, new Date(), 'day');\n \n if (!isPasswordProtected) {\n let text = isToday\n ? getPhrase('expiryToday')\n : getPhrase('expiry', { days: dayDifference });\n \n if (status === ShareLinkStatus.Expired)\n text = getPhrase('expired');\n \n return { icon: cvSvgLibrary.Timer, text };\n }\n \n let text = isToday\n ? getPhrase('passwordExpiryToday')\n : getPhrase('passwordExpiry', { days: dayDifference });\n \n if (status === ShareLinkStatus.Expired)\n text = getPhrase('passwordExpired');\n \n return { icon: cvSvgLibrary.Lock, text };\n },\n\n getRespectRatingText(video: BaseObject, yearGroups: YearGroup[], hasStudentExp: boolean) {\n if (!video || !yearGroups)\n return null;\n \n if (hasStudentExp)\n return getPhrase('justMySchoolTeachers');\n \n if (!VideoHelper.isVideoType(video))\n return getPhrase('collectionRating');\n \n const restriction = RestrictionHelper.getWeightedRestriction(video._restrictions?.value);\n \n /**\n * Restrictions without a year level are teacher restricitons, which means only admins can see it.\n */\n if (restriction && !restriction.yearGroup)\n return getPhrase('onlyAdmins');\n \n const rating = VideoHelper.getRating(video);\n \n let maxYearGroup: YearGroup;\n let minAllowedYearGroup: YearGroup;\n \n for (const yearGroup of yearGroups) {\n /**\n * If our year level is our new highest so far, save it\n */\n if (!maxYearGroup || yearGroup.value > maxYearGroup.value)\n maxYearGroup = yearGroup;\n \n /**\n * If the restriction is higher than this year level, skip it.\n */\n if (restriction && yearGroup.value <= restriction.yearGroup)\n continue;\n \n /**\n * If therating is higher than this year level's rating value, skip it.\n */\n if (rating && yearGroup.rating.value < rating.value)\n continue;\n \n /**\n * If our year level is the new lowest so far, save it\n */\n if (!minAllowedYearGroup || yearGroup.value < minAllowedYearGroup.value)\n minAllowedYearGroup = yearGroup;\n }\n \n /**\n * If no year levels are allowed, then it's staff only.\n */\n if (!minAllowedYearGroup)\n return getPhrase('onlyStaff');\n \n \n /**\n * If there's only one year level, and it's allowed, then we can just\n * say that everyone in your school can access it.\n */\n if (yearGroups.length === 1)\n return getPhrase('clickViewOnly');\n \n /**\n * We differentiate the copy if it's the highest year level or not. \n * Basically if we need to say \"X and above\" or not.\n */\n if (minAllowedYearGroup.value === maxYearGroup.value)\n return getPhrase('maxYearGroup', { yearGroup: maxYearGroup.name });\n \n return getPhrase('yearGroupRange', { yearGroup: minAllowedYearGroup.name });\n },\n\n getShareLinkAccessType(privacy: SharePrivacyResponse): 'private' | 'owner' | 'protected' {\n /**\n * If an entity is not a ClickView content and they cannot manage access\n * settings of the entity (which they can if its their private entity)\n * it means that its a TV content\n */\n if (privacy.isTvContent || privacy.isClickViewContent)\n return 'protected';\n\n if (privacy.canManageAccess)\n return 'owner';\n\n return 'private';\n }\n};","import React from 'react';\n\nimport { AppLinkHelper } from 'libs/common/backbone/core';\nimport { Core } from 'libs/common/backbone/index';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Flight } from 'libs/common/react/index';\n\nimport { DeleteShareContent } from 'libs/shared/apps/share-v2/components/delete-share-content/DeleteShareContent';\nimport { ShareRequests } from 'libs/shared/apps/share-v2/flight-requests/ShareRequests';\nimport { useShareLinkActions } from 'libs/shared/apps/share-v2/hooks/useShareLinkActions';\nimport { Share } from 'libs/shared/apps/share-v2/interfaces/Share';\nimport { Popup } from 'libs/shared/components/popup/Popup';\nimport { useAlerts } from 'libs/shared/hooks/UseAlerts';\nimport { PopupViewProps } from 'libs/shared/interfaces';\n\nconst namespace = 'sharev2.deleteAssignmentConfirmation';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nexport interface DeleteAssignmentConfirmationViewProps extends PopupViewProps {\n shareId: string;\n previousAppLink?: Core.AppLink;\n}\n\nexport function DeleteAssignmentConfirmationView(props: DeleteAssignmentConfirmationViewProps) {\n const alerts = useAlerts();\n const share = Flight.useBasicFetch<Share>(ShareRequests.getShare(props.shareId));\n\n const [ loading, setLoading ] = React.useState(false);\n\n const { deleteShareLink: deleteShare } = useShareLinkActions({\n entityId: share.data?.objectId.toString()\n });\n \n function onClickDelete() {\n setLoading(true);\n\n deleteShare(share.data?.shareId).then(() => {\n setLoading(false);\n alerts.success(getPhrase('deleteSuccess'));\n props.closePopup();\n\n if (props.previousAppLink) {\n AppLinkHelper.trigger(props.previousAppLink);\n }\n }).catch(() => {\n alerts.error(getPhrase('deleteFailed'));\n }).finally(() => {\n setLoading(false);\n });\n }\n\n const loaded = share.hasCompleted;\n\n return (\n <Popup\n title={getPhrase('title')}\n closePopup={props.closePopup}\n showLoadingSpinner={!loaded}\n >\n <DeleteShareContent\n loading={loading}\n phrases={{\n leadingSentence: getPhrase('intro'),\n bulletPoints: [\n getPhrase('studentsLoseAccessInfo'),\n getPhrase('loseAccessInfo'),\n getPhrase('loseAccessUsage')\n ],\n acknowledgement: getPhrase('acknowledgement'),\n deleteButton: getPhrase('delete')\n }}\n onDelete={onClickDelete}\n />\n </Popup>\n );\n}"],"names":["getPhrase","DeleteShareContent","props","ack","setAck","className","phrases","leadingSentence","bulletPoints","map","phrase","index","key","id","checked","onChange","e","target","label","acknowledgement","onBack","onClick","text","backButton","variant","loading","onDelete","deleteButton","disabled","showSpinner","SharePrivacy","normalizeOptions","namespace","ShareRequests","createShare","data","url","type","invalidationKeys","objectId","updateShare","shareId","deleteShare","getShare","bootstrapName","getSentShares","params","Object","values","sort","join","normalize","getShareLink","createShareLink","getPrivacy","getSharesByObjectId","createSharePincode","getPincodeByShareId","getPincodeByCode","code","useShareLinkActions","options","fetchAsync","entityPrivacy","entityId","loaded","updateShareLink","privacy","requestPrivacy","deleteShareLink","ShareLinkHelper","getPrivateIconAndText","entityTypeId","hasStudentExp","entity","yearGroups","icon","Array","isArray","getRespectRatingText","getIconAndText","linkExpireDate","isPasswordProtected","status","isToday","dayDifference","Date","days","video","restriction","_restrictions","value","yearGroup","maxYearGroup","minAllowedYearGroup","rating","length","name","getShareLinkAccessType","isTvContent","isClickViewContent","canManageAccess","DeleteAssignmentConfirmationView","alerts","share","setLoading","toString","hasCompleted","title","closePopup","showLoadingSpinner","then","success","previousAppLink","error"],"sourceRoot":""}
@@ -0,0 +1,2 @@
1
+ "use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[705],{49863:(e,t,a)=>{a.d(t,{m9:()=>y,Ad:()=>b,Kh:()=>E});var n=a(32735),r=a(23481),o=a(75896),s=a(97408),i=a(18995),l=a(12528),c=a(83914),u=a(36532),m=a(4594),d=a(36511),v=a(35223),p=a(64818);const f={avatarContainer:"ByxQa",sm:"EgJ0v",sharedAvatar:"cW0NT"};var g=r.T.encloseNamespace("reportsShare.sharedToAvatarList");function h(e){var t=o.m.countBy(e,"typeId"),a=t[m.E.User],n=t[m.E.Classroom],r=t[m.E.ClassroomGroup];return a&&n&&r?g("classroomsGroupsAndUsers",{userCount:a,classroomCount:n,groupCount:r}):a&&n?g("classroomsAndUsers",{userCount:a,classroomCount:n}):a&&r?g("groupsAndUsers",{userCount:a,groupCount:r}):n&&r?g("classroomsAndGroups",{classroomCount:n,groupCount:r}):a?g("users",{userCount:a}):n?g("classrooms",{classroomCount:n}):r?g("groups",{groupCount:r}):void 0}function C(e){var t,a,r,o,i,g=(null===(t=e.item)||void 0===t?void 0:t.typeId)===m.E.User&&e.item,h=(null===(a=e.item)||void 0===a?void 0:a.typeId)===m.E.Classroom&&e.item,C=(null===(r=e.item)||void 0===r?void 0:r.typeId)===m.E.ClassroomGroup&&e.item,y="d-flex justify-content-center align-items-center text-white rounded-circle h-100 w-100";return n.createElement(n.Fragment,null,!!g&&n.createElement(u.u,{title:"".concat(g.name," ").concat(g.surname),spanHack:!0,spanHackClassName:"h-100 w-100"},n.createElement(s.q,{imageUrl:null===(o=g.avatar)||void 0===o?void 0:o.url,imageCdnUrl:e.imageCdnUrl,initials:p.l.getInitials(g.name,g.surname),extraClasses:f.sharedAvatar})),!!h&&n.createElement(u.u,{title:h.name,spanHack:!0,spanHackClassName:"h-100 w-100"},n.createElement("div",{className:y},n.createElement(l.f,{svgName:v.vn.Classrooms,svgSize:c.S.Large,variant:"teal"}))),!!C&&n.createElement(u.u,{title:C.name,spanHack:!0,spanHackClassName:"h-100 w-100"},n.createElement("div",{className:y},n.createElement(l.f,{svgName:v.vn.Group,variant:(0,d.I)(null===(i=C.metadata)||void 0===i?void 0:i.colour)}))))}function y(e){return n.createElement("div",{className:"".concat(f.avatarContainer," ").concat("sm"===e.avatarSize?f.sm:"")},n.createElement(u.u,{title:g("anonymous"),spanHack:!0,spanHackClassName:"bg-light text-dark d-flex justify-content-center align-items-center rounded-circle h-100 w-100"},n.createElement(c.x,{svgName:v.vn.Anonymous,size:"sm"===e.avatarSize?c.S.Small:null})))}function b(e){return n.createElement("div",{className:"".concat(f.avatarContainer," ").concat("sm"===e.avatarSize?f.sm:"")},n.createElement(u.u,{title:e.text||g("sharedLink"),spanHack:!0,spanHackClassName:"bg-light text-dark d-flex justify-content-center align-items-center rounded-circle h-100 w-100 ".concat(e.className||"")},n.createElement(c.x,{svgName:v.vn.Link,size:"sm"===e.avatarSize?c.S.Small:null})))}function E(e){return n.createElement(i.e,Object.assign({},e,{items:e.recipients,avatarItem:C,avatarContainerClassname:"".concat(f.avatarContainer," ").concat("sm"===e.avatarSize?f.sm:""),getHiddenTooltip:h,hasShareLink:e.hasShareLink,shareLinkText:e.shareLinkText}))}E.defaultProps={maxAvatars:5}},18995:(e,t,a)=>{a.d(t,{e:()=>l});var n=a(32735),r=a(23481),o=a(49863),s=a(36532),i=r.T.encloseNamespace("shared.avatarList");function l(e){var t=e.items.length>e.maxAvatars?e.items.slice(0,e.maxAvatars-1):e.items,a=e.items.length>t.length?e.items.slice(e.maxAvatars-1):[],r=e.avatarItem,l=a.length,c="sm"===e.avatarSize?4:8;function u(t){return{transform:"translateX(".concat((e.hasShareLink?t+1:t)*-c,"px)"),zIndex:e.maxAvatars-t}}return 0===t.length&&0===a.length?n.createElement(n.Fragment,null):n.createElement("div",{className:"d-flex",style:{marginRight:"-".concat((t.length-1+(a.length?1:0)+(e.hasShareLink?1:0))*c,"px")}},e.hasShareLink&&n.createElement("div",{style:{zIndex:e.maxAvatars+1}},n.createElement(o.Ad,{text:e.shareLinkText,avatarSize:e.avatarSize,className:"bg-dark text-white"})),t.map((function(t,a){return n.createElement("div",{className:"".concat(e.avatarContainerClassname||""),key:t.id,style:u(a)},n.createElement(r,{item:t,imageCdnUrl:e.imageCdnUrl,index:a,maxAvatars:e.maxAvatars}))})),!!a.length&&n.createElement("div",{className:"".concat(e.avatarContainerClassname||""," bg-white rounded-circle"),style:{transform:"translateX(".concat(t.length*-c,"px)"),zIndex:e.maxAvatars-t.length}},n.createElement(s.u,{title:e.getHiddenTooltip?e.getHiddenTooltip(a):e.roleToDisplay?i("staff"===e.roleToDisplay?"staff":"student",{count:l,smartCount:l}):i("users",{count:l,smartCount:l}),spanHack:!0,spanHackClassName:"h-100 w-100"},n.createElement("div",{className:"d-flex justify-content-center align-items-center border border-dark rounded-circle h-100 w-100 ".concat(e.numberClassname||"")},"+".concat(a.length)))))}l.defaultProps={maxAvatars:5}},94644:(e,t,a)=>{a.d(t,{r:()=>u});var n=a(50242),r=a(81886),o=a(67058),s=a(14553),i=a(49267),l=a(49075),c={notFound:o.d,forbidden:{rating:s.q,yearLevel:s.q,region:i.a,privacy:s.q},badRequest:l._,internalServerError:l._};function u(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},a=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(e){var o;o="number"==typeof e?e:e.status;var s=Object.assign(Object.assign({},c),t);o&&r.Q.Ry.isStatusCodeError(o)&&(o!==n.o.InternalServer?o!==n.o.NotFound?o!==n.o.Forbidden?a.badRequest||r.Q.Ry.throw(new s.badRequest):a.forbidden||r.Q.Ry.throw(new s.forbidden.privacy):a.notFound||r.Q.Ry.throw(new s.notFound):a.internalServerError||r.Q.Ry.throw(new l._))}}},60115:(e,t,a)=>{a.d(t,{K:()=>c});var n=a(32735),r=a(50242),o=a(91967),s=400,i=a(45719);function l(e,t){(null==t||t>e.length)&&(t=e.length);for(var a=0,n=Array(t);a<t;a++)n[a]=e[a];return n}function c(e,t,a,c,u,m){var d,v,p,f,g=(d=(0,n.useState)(0),v=2,function(e){if(Array.isArray(e))return e}(d)||function(e,t){var a=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=a){var n,r,o,s,i=[],l=!0,c=!1;try{if(o=(a=a.call(e)).next,0===t){if(Object(a)!==a)return;l=!1}else for(;!(l=(n=o.call(a)).done)&&(i.push(n.value),i.length!==t);l=!0);}catch(e){c=!0,r=e}finally{try{if(!l&&null!=a.return&&(s=a.return(),Object(s)!==s))return}finally{if(c)throw r}}return i}}(d,v)||function(e,t){if(e){if("string"==typeof e)return l(e,t);var a={}.toString.call(e).slice(8,-1);return"Object"===a&&e.constructor&&(a=e.constructor.name),"Map"===a||"Set"===a?Array.from(e):"Arguments"===a||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(a)?l(e,t):void 0}}(d,v)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),h=g[0],C=g[1],y=t,b=(0,i.P)((function(t){if(!e)return null;var a=e(t);return a?a.key:null}),c,u);return p={fetchNextPage:function(){if(t&&e&&b)return C((function(e){return e+1})),y(b.nextCursor)},hasMore:!!(null==b?void 0:b.nextCursor),isFetching:null==b?void 0:b.isFetching,scrollContainer:m},f=function(){if(!p.isFetching){if(p.scrollContainer){var e=p.scrollContainer;if(e.getBoundingClientRect().height+e.scrollTop<e.scrollHeight-s)return}else if(window.innerHeight+document.documentElement.scrollTop<document.documentElement.scrollHeight-s)return;p.fetchNextPage()}},(0,n.useEffect)((function(){var e=o.q.throttle(f,200),t=p.scrollContainer||window;return p.hasMore&&t.addEventListener("scroll",e),function(){return t.removeEventListener("scroll",e)}}),[p.hasMore,p.fetchNextPage,p.scrollContainer]),(0,n.useEffect)((function(){b&&b.shouldInitialFetch&&t&&(y(),C((function(e){return e+1})))}),[null==b?void 0:b.shouldInitialFetch,t]),(0,n.useEffect)((function(){var e,t;if((null==b?void 0:b.statusCode)&&o.q.isFunction(a)){var n=+(null===(t=null===(e=b.statusCode)||void 0===e?void 0:e.toString())||void 0===t?void 0:t.substr(0,1));n!==r.k.ClientError&&n!==r.k.ServerError||a(h,b.statusCode)}}),[null==b?void 0:b.statusCode]),{items:null==b?void 0:b.items,hasMore:!!(null==b?void 0:b.nextCursor),nextCursor:null==b?void 0:b.nextCursor,isFetching:null==b?void 0:b.isFetching,totalItems:null==b?void 0:b.totalItems,hasFirstPageCompleted:null==b?void 0:b.hasFirstPageCompleted}}},36511:(e,t,a)=>{a.d(t,{I:()=>r});var n=a(38129);function r(e){switch(e){case n.R.Pink:return"pink";case n.R.Orange:return"orange";case n.R.Green:return"green";case n.R.Blue:return"blue";case n.R.Purple:return"purple";case n.R.Indigo:return"indigo";default:return"pink"}}},62691:(e,t,a)=>{a.d(t,{m:()=>f});var n=a(32735),r=a(23481),o=a(49985),s=a(65858),i=a(11607),l=a(83914),c=a(69883),u=a(1643),m=a(35223);function d(e,t){(null==t||t>e.length)&&(t=e.length);for(var a=0,n=Array(t);a<t;a++)n[a]=e[a];return n}var v=r.T.encloseNamespace("classrooms.classroomStar"),p=function(e){return u.h.isFavouritedByCurrentUser(e)};function f(e){var t,a,r=(t=n.useState(p(e.classroom)),a=2,function(e){if(Array.isArray(e))return e}(t)||function(e,t){var a=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=a){var n,r,o,s,i=[],l=!0,c=!1;try{if(o=(a=a.call(e)).next,0===t){if(Object(a)!==a)return;l=!1}else for(;!(l=(n=o.call(a)).done)&&(i.push(n.value),i.length!==t);l=!0);}catch(e){c=!0,r=e}finally{try{if(!l&&null!=a.return&&(s=a.return(),Object(s)!==s))return}finally{if(c)throw r}}return i}}(t,a)||function(e,t){if(e){if("string"==typeof e)return d(e,t);var a={}.toString.call(e).slice(8,-1);return"Object"===a&&e.constructor&&(a=e.constructor.name),"Map"===a||"Set"===a?Array.from(e):"Arguments"===a||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(a)?d(e,t):void 0}}(t,a)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),u=r[0],f=r[1],g=(0,c.Z)();return n.useEffect((function(){p(e.classroom)!==u&&f(!u)}),[p(e.classroom)]),n.createElement(i.L,{onClick:function(){f(!u),e.onToggle(!u,(function(){return function(t){if(t)return o.k.logUserAction({id:e.classroom.id},{location:e.locationContext,actionType:s.Vw.Favourite,descriptor:s.DL.On,entity:s.py.Classroom,workflowPhase:s.eu.Complete}),void g.success(v("pinSuccess",{classroomName:e.classroom.name,escapeText:!0}));o.k.logUserAction({id:e.classroom.id},{location:e.locationContext,actionType:s.Vw.Favourite,descriptor:s.DL.Off,entity:s.py.Classroom,workflowPhase:s.eu.Complete}),g.success(v("unpinSuccess",{classroomName:e.classroom.name,escapeText:!0}))}(!u)}),(function(){return f(t=u),void(t?g.error(v("unpinError",{classroomName:e.classroom.name,escapeText:!0})):g.error(v("pinError",{classroomName:e.classroom.name,escapeText:!0})));var t}))},className:u?"text-yellow":""},n.createElement(l.x,{svgName:u?m.vn.Star:m.vn.StarOutline,size:l.S.Medium}))}},90681:(e,t,a)=>{a.d(t,{D:()=>U,J:()=>F});var n=a(32735),r=a(6748),o=a(79967),s=a(23481),i=a(91967),l=a(65858),c=a(83657),u=a(15611),m=a(83914),d=a(83345),v=a(36532),p=a(38129),f=a(35223),g=a(16714),h=a(22902),C=a(14070),y=a(97291),b=s.T.encloseNamespace("classrooms.classroomActions");function E(e){var t,a=n.useContext(F),r=e.value,o=!!(null===(t=r._integrations)||void 0===t?void 0:t.rostered),s=r.enrolments.data.find((function(e){return e.user.id===a.currentUser.id})),i=(0,h.T)().hasPermissions,u={id:r.id},m=[];return s&&(m.push({order:0,label:b("edit"),appLink:{application:y.O.CLASSROOMS,action:C.e.Classrooms.EDIT_CLASSROOM,args:[r.id]},disabled:o,className:o?"disabled":"",tooltip:o?b("disabled"):"",analyticsData:u,analyticsOptions:{entity:l.py.Classroom,actionType:l.Vw.Edit,location:l.LZ.ClassroomsListItem,workflowPhase:l.eu.Start}}),m.push({order:10,label:b("archive"),appLink:{application:y.O.CLASSROOMS,action:C.e.Classrooms.ARCHIVE_CLASSROOM,args:[r.id]},disabled:o,className:o?"disabled":"",tooltip:o?b("disabled"):"",analyticsData:u,analyticsOptions:{entity:l.py.Classroom,actionType:l.Vw.Archive,descriptor:l.DL.On,location:l.LZ.ClassroomsListItem,workflowPhase:l.eu.Start}})),i(g.C.ManageAllClassrooms)||m.push({order:20,label:b("leaveClassroom"),className:"text-danger",analyticsData:Object.assign(Object.assign({},u),{teacherId:a.currentUser.id}),analyticsOptions:{entity:l.py.Classroom,location:l.LZ.ClassroomsListItem,workflowPhase:l.eu.Start,actionType:l.Vw.Dissociate,descriptor:l.iF.User},appLink:{application:y.O.CLASSROOMS,action:C.e.Classrooms.REMOVE_TEACHERS,args:[r.id],params:{teacherIds:[a.currentUser.id]}}}),n.createElement(c.e,{className:"w-100 justify-content-end pe-2",actionsDropdownClassName:"btn btn-link ms-1",actions:m})}var w=a(97408),k=a(18995),x=a(64818);const N={avatarContainer:"zMxWi"};function S(e){var t;return n.createElement(v.u,{title:"".concat(e.item.name," ").concat(e.item.surname),spanHack:!0,spanHackClassName:"h-100 w-100"},n.createElement(w.q,{imageUrl:null===(t=e.item.avatar)||void 0===t?void 0:t.url,imageCdnUrl:e.imageCdnUrl,initials:x.l.getInitials(e.item.name,e.item.surname)}))}function A(e){return n.createElement(k.e,Object.assign({},e,{items:e.owners,avatarItem:S,avatarContainerClassname:N.avatarContainer,roleToDisplay:"staff"}))}var T=a(62691);const L={avatar:"btxC4",table:"IUfRF"};function O(e){return function(e){if(Array.isArray(e))return I(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,t){if(e){if("string"==typeof e)return I(e,t);var a={}.toString.call(e).slice(8,-1);return"Object"===a&&e.constructor&&(a=e.constructor.name),"Map"===a||"Set"===a?Array.from(e):"Arguments"===a||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(a)?I(e,t):void 0}}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function I(e,t){(null==t||t>e.length)&&(t=e.length);for(var a=0,n=Array(t);a<t;a++)n[a]=e[a];return n}var j="classrooms.classroomsTable",H=s.T.encloseNamespace(j),R={table:"striped-list no-full-width pb-3 ".concat(L.table),header:"fw-semibold pb-1",headerCell:"py-2 ps-2 text-nowrap",row:"striped-row rounded",cell:"d-flex align-items-center py-2 ps-2"},F=n.createContext(null);function U(e){var t,a=e.imageCdnUrl,s=e.appLinks,g=e.onTogglePin,h=e.hasRostering,C=(0,o.k)();t=function(e){return"classroom"in e}(s)?function(e){var t=e.imageCdnUrl,a=e.appLinks,r=e.onTogglePin,o=e.breakpoints,s=e.hasRostering,c=o&&(o.xs||o.sm),g=o&&(o.md||c),h=[{accessor:function(e){return e},id:"pinned",Cell:function(e){var t=e.value;return n.createElement("div",{className:"w-100"},i.q.isFunction(r)&&n.createElement("div",{className:L.starContainer},n.createElement(T.m,{classroom:t,onToggle:function(){for(var e=arguments.length,a=new Array(e),n=0;n<e;n++)a[n]=arguments[n];return r.apply(void 0,[t].concat(a))},locationContext:l.LZ.ClassroomsListItem})))},width:15},{Header:H("classroom"),accessor:function(e){return e},id:"name",Cell:function(e){var t=e.value;return n.createElement(u.F,{appLink:Object.assign(Object.assign({},a.classroom),{args:[t.id]}),title:t.name,className:"cursor-pointer clamp-2"},t.name)},width:c?80:70},{accessor:"enrolments",Header:H("owner"),id:"owner",Cell:function(e){var a=e.value,r=a.data.filter((function(e){return e.role===p.tM.Owner})).map((function(e){return e.user})).filter(Boolean);return a.data&&a.data.length&&r.length?n.createElement(A,{imageCdnUrl:t,owners:r,maxAvatars:c?1:2}):n.createElement(n.Fragment,null)},width:g?30:40},s&&!c&&{Header:H("type"),accessor:function(e){return e},Cell:function(e){return e.value._integrations.rostered?n.createElement(d.x,{namespace:j,phrase:"roster"}):n.createElement(d.x,{namespace:j,phrase:"manual"})},width:40},{Header:H("link"),accessor:function(e){return e},id:"link",Cell:function(e){var t,r,o,s,i=e.value;return n.createElement(v.u,{title:(null===(t=i._integrations)||void 0===t?void 0:t.rostered)?H("disabled"):"",spanHack:!0},n.createElement(u.F,{disabled:null===(r=i._integrations)||void 0===r?void 0:r.rostered,className:(null===(o=i._integrations)||void 0===o?void 0:o.rostered)?"text-secondary cursor-default":"",appLink:(null===(s=i._integrations)||void 0===s?void 0:s.rostered)?null:Object.assign(Object.assign({},a.link),{args:[i.id],params:{source:"list"}})},n.createElement(m.x,{svgName:f.vn.Link,className:"svg-container me-1"}),n.createElement(d.x,{namespace:j,phrase:"generate"})))},width:g?40:50},{accessor:function(e){return e},id:"actions",Cell:E,width:g?30:50}];return h.filter(Boolean)}({imageCdnUrl:a,appLinks:s,onTogglePin:g,breakpoints:C,hasRostering:h}):function(e){var t=!1;return[{Header:n.createElement("div",{className:"ms-3"},H("classroom")),accessor:function(e){return e},id:"name",Cell:function(e){var t=e.value;return n.createElement("div",{className:"ms-3"},t.name)},width:80},{accessor:"id",id:"placeholder-column",Cell:function(){return n.createElement(n.Fragment,null)},width:120},{accessor:function(e){return e},id:"retrieve",Cell:function(a){var r=a.value;return n.createElement(c.e,{actions:[{appLink:Object.assign(Object.assign({},e.retrieve),{args:[r.id]}),disabled:t,tooltip:H("retrieve"),svgName:f.vn.Retrieve,button:!0}],className:"w-100 justify-content-end pe-2",actionsDropdownClassName:"btn btn-link ms-1"})},width:10},{accessor:function(e){return e},id:"delete",Cell:function(a){var r=a.value;return n.createElement(c.e,{actions:[{appLink:Object.assign(Object.assign({},e.delete),{args:[r.id]}),disabled:t,tooltip:H("delete"),svgName:f.vn.Delete,button:!0}],className:"w-100 justify-content-end pe-2",actionsDropdownClassName:"btn btn-link ms-1"})},width:10}].filter(Boolean)}(s);var y=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],a=arguments.length>2?arguments[2]:void 0,r=arguments.length>3?arguments[3]:void 0;return n.useMemo((function(){var n;if(!a){var r=null!==(n=null==e?void 0:e.filter((function(e){return!t.some((function(t){return t.id===e.id}))})))&&void 0!==n?n:[];return[].concat(O(t),O(r))}return e}),[r,a])}(e.allClassrooms,e.pinnedClassrooms,e.query,e.refreshTable);return n.createElement(F.Provider,{value:e},n.createElement(r.i,{columns:t,data:y,theme:R}))}},19948:(e,t,a)=>{a.d(t,{I:()=>i});var n=a(32735);const r={partialStar:"Xbiwa",partialText:"Txo6a",partialName:"WT6R3",partialAvatar:"T5kj5",partialAction:"VI06f",shortHeading:"Gvufi",heading:"dh0wz",starColumn:"GsT4V",nameColumn:"eAvib",ownerColumn:"T6yK9",actionsColumn:"LIRFn"};function o(){return n.createElement("li",{className:"d-flex justify-content-between align-items-center py-2"},n.createElement("div",{className:"d-flex align-items-center"},n.createElement("div",{className:"ms-4 partial-loading-background ".concat(r.partialStar)}),n.createElement("div",{className:"mx-3 partial-loading-background ".concat(r.partialName)}),n.createElement("div",{className:"ms-3 me-4 rounded-circle partial-loading-background ".concat(r.partialAvatar)}),n.createElement("div",{className:"ms-4 rounded-circle partial-loading-background ".concat(r.partialAvatar)}),n.createElement("div",{className:"mx-1 partial-loading-background ".concat(r.partialText)}),n.createElement("div",{className:"mx-4 partial-loading-background ".concat(r.partialText)})),n.createElement("div",{className:"ms-4 me-3 partial-loading-background ".concat(r.partialAction)}))}function s(){return n.createElement("div",{className:"d-flex mb-1"},n.createElement("div",{className:"".concat(r.starColumn)}," "),n.createElement("div",{className:"".concat(r.nameColumn," p-2")},n.createElement("div",{className:"partial-loading-background ".concat(r.heading)})),n.createElement("div",{className:"".concat(r.ownerColumn," p-2")},n.createElement("div",{className:"partial-loading-background ".concat(r.shortHeading)})),n.createElement("div",{className:"".concat(r.ownerColumn," p-2 d-none d-md-flex")},n.createElement("div",{className:"partial-loading-background ".concat(r.shortHeading)})),n.createElement("div",{className:"".concat(r.ownerColumn," p-2 d-none d-md-flex")},n.createElement("div",{className:"partial-loading-background ".concat(r.heading)})),n.createElement("div",{className:"".concat(r.actionsColumn," p-2")}," "))}function i(){return n.createElement(n.Fragment,null,n.createElement(s,null),n.createElement("ul",{className:"m-0 list-unstyled striped-list"},Array(15).fill(null).map((function(e,t){return n.createElement(o,{key:t})}))))}}}]);
2
+ //# sourceMappingURL=705-10a85bae7a-lite.chunk.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scripts/705-10a85bae7a-lite.chunk.js","mappings":"6RACA,SAAgB,gBAAkB,QAAQ,GAAK,QAAQ,aAAe,SCiBtE,IACMA,EAAYC,EAAA,mBADA,mCAGlB,SAASC,EAAuBC,GAC9B,IAAMC,EAASC,EAAA,UAAoBF,EAAkB,UAC/CG,EAAYF,EAAOG,EAAA,QACnBC,EAAiBJ,EAAOG,EAAA,aACxBE,EAAaL,EAAOG,EAAA,kBAE1B,OAAID,GAAaE,GAAkBC,EAC1BT,EAAU,2BAA4B,CAAEM,UAAAA,EAAWE,eAAAA,EAAgBC,WAAAA,IAExEH,GAAaE,EACRR,EAAU,qBAAsB,CAAEM,UAAAA,EAAWE,eAAAA,IAElDF,GAAaG,EACRT,EAAU,iBAAkB,CAAEM,UAAAA,EAAWG,WAAAA,IAE9CD,GAAkBC,EACbT,EAAU,sBAAuB,CAAEQ,eAAAA,EAAgBC,WAAAA,IAExDH,EACKN,EAAU,QAAS,CAAEM,UAAAA,IAE1BE,EACKR,EAAU,aAAc,CAAEQ,eAAAA,IAE/BC,EACKT,EAAU,SAAU,CAAES,WAAAA,SAD/B,CAEF,CAEA,SAASC,EAAeC,G,cAChBC,GAAuB,QAAV,EAAAD,EAAME,YAAI,eAAEC,UAAWP,EAAA,QAAmBI,EAAME,KAC7DE,GAAiC,QAAV,EAAAJ,EAAME,YAAI,eAAEC,UAAWP,EAAA,aAAwBI,EAAME,KAC5EG,GAA2C,QAAV,EAAAL,EAAME,YAAI,eAAEC,UAAWP,EAAA,kBACzDI,EAAME,KAELI,EAAwB,yFAE9B,OACE,kCACKL,GACD,gBAACM,EAAA,EAAO,CAACC,MAAK,UAAKP,EAAKQ,KAAI,YAAIR,EAAKS,SAAWC,UAAQ,EAACC,kBAAkB,eACzE,gBAACC,EAAA,EAAM,CACLC,SAAqB,QAAX,EAAAb,EAAKc,cAAM,eAAEC,IACvBC,YAAajB,EAAMiB,YACnBC,SAAUC,EAAA,cAAuBlB,EAAKQ,KAAMR,EAAKS,SACjDU,aAAc,oBAIjBhB,GACD,gBAACG,EAAA,EAAO,CAACC,MAAOJ,EAAUK,KAAME,UAAQ,EAACC,kBAAkB,eACzD,uBAAKS,UAAWf,GACd,gBAACgB,EAAA,EAAU,CACTC,QAAS,gBACTC,QAASC,EAAAC,EAAA,MACTC,QAAQ,aAKbtB,GACD,gBAACE,EAAA,EAAO,CAACC,MAAOH,EAAeI,KAAME,UAAQ,EAACC,kBAAkB,eAC9D,uBAAKS,UAAWf,GACd,gBAACgB,EAAA,EAAU,CACTC,QAAS,WACTI,SAAS,OAA4C,QAAvB,EAAAtB,EAAeuB,gBAAQ,eAAEC,YAOrE,CAOM,SAAUC,EAAwB9B,GACtC,OACE,uBAAKqB,UAAS,UAAK,kBAAsB,YAAyB,OAArBrB,EAAM+B,WAAsB,KAAY,KACnF,gBAACxB,EAAA,EAAO,CACNC,MAAOnB,EAAU,aACjBsB,UAAQ,EACRC,kBAAkB,kGAElB,gBAACa,EAAA,EAAY,CAACF,QAAS,eAAwBS,KAA2B,OAArBhC,EAAM+B,WAAsBN,EAAAC,EAAA,MAAyB,QAIlH,CAQM,SAAUO,EAAiBjC,GAC/B,OACE,uBAAKqB,UAAS,UAAK,kBAAsB,YAAyB,OAArBrB,EAAM+B,WAAsB,KAAY,KACnF,gBAACxB,EAAA,EAAO,CACNC,MAAOR,EAAMkC,MAAQ7C,EAAU,cAC/BsB,UAAQ,EACRC,kBAAiB,yGAAoGZ,EAAMqB,WAAa,KAExI,gBAACI,EAAA,EAAY,CAACF,QAAS,UAAmBS,KAA2B,OAArBhC,EAAM+B,WAAsBN,EAAAC,EAAA,MAAyB,QAI7G,CAeM,SAAUS,EAAmBnC,GACjC,OACE,gBAACoC,EAAA,EAAU,iBACLpC,EAAK,CACTqC,MAAOrC,EAAMsC,WACbC,WAAYxC,EACZyC,yBAAwB,UAAK,kBAAsB,YAAyB,OAArBxC,EAAM+B,WAAsB,KAAY,IAC/FU,iBAAkBlD,EAClBmD,aAAc1C,EAAM0C,aACpBC,cAAe3C,EAAM2C,gBAG3B,CAhBAR,EAAmBS,aAAe,CAChCC,WAAY,E,mFCtIRxD,EAAY,qBADA,qBA6BZ,SAAU+C,EAAWpC,GACzB,IAAM8C,EAAiB9C,EAAMqC,MAAMU,OAAS/C,EAAM6C,WAC9C7C,EAAMqC,MAAMW,MAAM,EAAGhD,EAAM6C,WAAa,GACxC7C,EAAMqC,MAEJY,EAAcjD,EAAMqC,MAAMU,OAASD,EAAeC,OACpD/C,EAAMqC,MAAMW,MAAMhD,EAAM6C,WAAa,GACrC,GAEEK,EAAalD,EAAMuC,WACnBY,EAAoBF,EAAYF,OAChCK,EAAkC,OAArBpD,EAAM+B,WAAsB,EAAI,EAkBnD,SAASsB,EAAgBC,GACvB,MAAO,CACLC,UAAW,cAAF,QAAiBvD,EAAM0C,aAAeY,EAAM,EAAIA,IAAQF,EAAU,OAC3EI,OAAQxD,EAAM6C,WAAaS,EAE/B,CAEA,OAA8B,IAA1BR,EAAeC,QAAuC,IAAvBE,EAAYF,OACtC,iCAGP,uBACE1B,UAAU,SACVoC,MAlBK,CACLC,YAAa,IAAF,QAAQZ,EAAeC,OAAS,GAAME,EAAYF,OAAS,EAAI,IAAM/C,EAAM0C,aAAe,EAAI,IAAMU,EAAU,QAmBxHpD,EAAM0C,cACL,uBAAKe,MAAO,CAAED,OAAQxD,EAAM6C,WAAa,IACvC,gBAAC,KAAgB,CAACX,KAAMlC,EAAM2C,cAAeZ,WAAY/B,EAAM+B,WAAYV,UAAU,wBAGxFyB,EAAea,KAAI,SAACzD,EAAMoD,GAAG,OAC5B,uBACEjC,UAAS,UAAKrB,EAAMwC,0BAA4B,IAAMoB,IAAK1D,EAAK2D,GAChEJ,MAAOJ,EAAgBC,IAEvB,gBAACJ,EAAU,CACThD,KAAMA,EACNe,YAAajB,EAAMiB,YACnB6C,MAAOR,EACPT,WAAY7C,EAAM6C,aAEhB,MAGLI,EAAYF,QACb,uBACE1B,UAAS,UAAKrB,EAAMwC,0BAA4B,GAAE,4BAClDiB,MAAO,CAAEF,UAAW,cAAF,OAAgBT,EAAeC,QAAUK,EAAU,OAAOI,OAAQxD,EAAM6C,WAAaC,EAAeC,SAEtH,gBAAC,IAAO,CAACvC,MAtDXR,EAAMyC,iBACDzC,EAAMyC,iBAAiBQ,GAE5BjD,EAAM+D,cACD1E,EAAkC,UAAxBW,EAAM+D,cAA4B,QAAU,UAAW,CAAEC,MAAOb,EAAmBc,WAAYd,IAE3G9D,EAAU,QAAS,CAAE2E,MAAOb,EAAmBc,WAAYd,IAgD9BxC,UAAQ,EAACC,kBAAkB,eACvD,uBAAKS,UAAS,yGAAoGrB,EAAMkE,iBAAmB,KAAI,WACxIjB,EAAYF,WAO/B,CAjFAX,EAAWQ,aAAe,CACxBC,WAAY,E,yGCPRsB,EAA8B,CAClCC,SAAU,IACVC,UAAW,CACTC,OAAQ,IACRC,UAAW,IACXC,OAAQ,IACRC,QAAS,KAEXC,WAAY,IACZC,oBAAqB,KAGjB,SAAUC,EACdC,GAMkC,IALlCC,EAAA,uDAA+B,CAAC,EAKhCC,EAAA,uDAAgC,CAAC,EAEjC,GAAKF,EAAL,CAGA,IAAIG,EAGFA,EADmB,iBAAVH,EACIA,EAEAA,EAAKI,OAGpB,IAAMC,EAAW,OAAH,wBACTf,GACAW,GAGAE,GAGA,yBAAmCA,KAGpCA,IAAe,mBAMfA,IAAe,aAMfA,IAAe,cAUdD,EAAUL,YACb,aAAuB,IAAIQ,EAASR,YAN/BK,EAAUV,WACb,aAAuB,IAAIa,EAASb,UAAUI,SAX3CM,EAAUX,UACb,aAAuB,IAAIc,EAASd,UAPjCW,EAAUJ,qBACb,aAAuB,IAAI,KAvBvB,CA6CV,C,wEC1FMQ,EAAmB,I,iHC2BnB,SAAUC,EACdC,EACAC,EACAC,EACAC,EACAC,EACAC,GAEA,I,ID1BgCC,EAC1BC,ECyB+C,G,GAAX,IAAAC,UAAS,G,EAAE,E,o4BAA7CC,EAAY,KAAEC,EAAe,KAE/BC,EAAcV,EAcdW,GAAW,QAZjB,SAAgBC,GACd,IAAKb,EACH,OAAO,KAET,IAAMc,EAAUd,EAAWa,GAE3B,OAAKC,EAGEA,EAAQvC,IAFN,IAGX,GAIE4B,EACAC,GAwCF,ODrFgCE,ECwDd,CAChBS,cATF,WACE,GAAKd,GAAcD,GAAeY,EAIlC,OADAF,GAAgB,SAAAM,GAAU,OAAIA,EAAa,CAAC,IACrCL,EAAYC,EAASK,WAC9B,EAIEC,WAAWN,aAAQ,EAARA,EAAUK,YACrBE,WAAYP,aAAQ,EAARA,EAAUO,WACtBd,gBAAAA,GD3DIE,EAAe,WACnB,IAAID,EAAQa,WAAZ,CAGA,GAAKb,EAAQD,gBAON,CACL,IAAQA,EAAoBC,EAApBD,gBAKR,GAJ4BA,EAAgBe,wBAAwBC,OAAShB,EAAgBiB,UAEzEjB,EAAgBkB,aAAezB,EAGjD,MACH,MAVC,GAJ4B0B,OAAOC,YAAcC,SAASC,gBAAgBL,UAEtDI,SAASC,gBAAgBJ,aAAezB,EAG1D,OAWJQ,EAAQS,eAnBA,CAoBV,GAEA,IAAAa,YAAU,WACR,IAAMC,EAAWC,EAAA,WAAwBvB,EAAc,KAEjDF,EAAkBC,EAAQD,iBAAmBmB,OAKnD,OAHIlB,EAAQY,SACVb,EAAgB0B,iBAAiB,SAAUF,GAEtC,kBAAMxB,EAAgB2B,oBAAoB,SAAUH,EAAS,CACtE,GAAG,CAAEvB,EAAQY,QAASZ,EAAQS,cAAeT,EAAQD,mBC6BrD,IAAAuB,YAAU,WACHhB,GAGDA,EAASqB,oBAAsBhC,IACjCU,IACAD,GAAgB,SAAAM,GAAU,OAAIA,EAAa,CAAC,IAEhD,GAAG,CAAEJ,aAAQ,EAARA,EAAUqB,mBAAoBhC,KAEnC,IAAA2B,YAAU,W,QACR,IAAKhB,aAAQ,EAARA,EAAUjB,aAAemC,EAAA,aAA0B5B,GAAxD,CAGA,IAAMgC,IAAoE,QAA/B,EAAmB,QAAnB,EAAAtB,EAASjB,kBAAU,eAAEwC,kBAAU,eAAEC,OAAO,EAAG,IAElFF,IAAoBG,EAAA,eAA+BH,IAAoBG,EAAA,eAG3EnC,EAAQO,EAAcG,EAASjB,WAPvB,CAQV,GAAG,CAACiB,aAAQ,EAARA,EAAUjB,aAEP,CACL3C,MAAO4D,aAAQ,EAARA,EAAU5D,MACjBkE,WAAWN,aAAQ,EAARA,EAAUK,YACrBA,WAAYL,aAAQ,EAARA,EAAUK,WACtBE,WAAYP,aAAQ,EAARA,EAAUO,WACtBmB,WAAY1B,aAAQ,EAARA,EAAU0B,WACtBC,sBAAuB3B,aAAQ,EAARA,EAAU2B,sBAErC,C,kDCtGM,SAAUC,EAAqBC,GACnC,OAAQA,GACN,KAAK,SACH,MAAO,OACT,KAAK,WACH,MAAO,SACT,KAAK,UACH,MAAO,QACT,KAAK,SACH,MAAO,OACT,KAAK,WACH,MAAO,SACT,KAAK,WACH,MAAO,SACT,QACE,MAAO,OAEb,C,+OCPA,IACMzI,EAAY,qBADA,4BAGZ0I,EAAc,SAAC3H,GACnB,OAAO,8BAA0CA,EACnD,EAQM,SAAU4H,EAAchI,GAE5B,I,IAA8E,G,EAA5C,WAAe+H,EAAY/H,EAAMI,Y,EAAW,E,o4BAAtE6H,EAAQ,KAAEC,EAAW,KAEvBC,GAAS,SAiEf,OA/DA,aAAgB,WACVJ,EAAY/H,EAAMI,aAAe6H,GAGrCC,GAAaD,EACf,GAAG,CAACF,EAAY/H,EAAMI,aA2DpB,gBAAC,IAAS,CAACgI,QAzDb,WACEF,GAAaD,GAEbjI,EAAMqI,UAAUJ,GAAU,kBAG5B,SAAmBA,GACjB,GAAIA,EAcF,OAbA,kBAA8B,CAAEpE,GAAI7D,EAAMI,UAAUyD,IAAM,CACxDyE,SAAUtI,EAAMuI,gBAChBC,WAAY,eACZC,WAAY,QACZC,OAAQ,eACRC,cAAe,qBAGjBR,EAAOS,QAAQvJ,EAAU,aAAc,CACrCwJ,cAAe7I,EAAMI,UAAUK,KAC/BqI,YAAY,KAMhB,kBAA8B,CAAEjF,GAAI7D,EAAMI,UAAUyD,IAAM,CACxDyE,SAAUtI,EAAMuI,gBAChBC,WAAY,eACZC,WAAY,SACZC,OAAQ,eACRC,cAAe,gBAGjBR,EAAOS,QAAQvJ,EAAU,eAAgB,CACvCwJ,cAAe7I,EAAMI,UAAUK,KAC/BqI,YAAY,IAEhB,CAjCkCC,EAAWd,EAAS,IAAE,kBAoCtDC,EADec,EAnCqDf,QAsChEe,EACFb,EAAOc,MAAM5J,EAAU,aAAc,CACnCwJ,cAAe7I,EAAMI,UAAUK,KAC/BqI,YAAY,KAMhBX,EAAOc,MAAM5J,EAAU,WAAY,CACjCwJ,cAAe7I,EAAMI,UAAUK,KAC/BqI,YAAY,MAdhB,IAAiBE,CAnC8D,GAC/E,EAqDgC3H,UAAW4G,EAAW,cAAgB,IAClE,gBAAC,IAAY,CACX1G,QAAS0G,EAAW,UAAoB,iBACxCjG,KAAM,EAAAN,EAAA,SAId,C,yOCrFMrC,EAAYC,EAAA,mBADA,+BAGZ,SAAU4J,EAAiBlJ,G,MACzBmJ,EAAU,aAAiBC,GAE3BhJ,EAAYJ,EAAMqJ,MAClBC,KAAsC,QAAvB,EAAAlJ,EAAUmJ,qBAAa,eAAEC,UAExCC,EAAUrJ,EAAUsJ,WAAWC,KAAKC,MAAK,SAAAC,GAAS,OAAIA,EAAU5J,KAAK4D,KAAOsF,EAAQW,YAAYjG,EAAE,IAEhGkG,GAAmB,EAAAC,EAAA,KAAnBD,eAEFE,EAAgB,CAAEpG,GAAIzD,EAAUyD,IAChCqG,EAA2B,GAuEjC,OArEIT,IACFS,EAAQC,KAAK,CACXC,MAAO,EACPC,MAAOhL,EAAU,QACjBiL,QAAS,CACPC,YAAa,eACbC,OAAQ,8BACRC,KAAM,CAACrK,EAAUyD,KAEnB6G,SAAUpB,EACVjI,UAAWiI,EAAa,WAAa,GACrCqB,QAASrB,EAAajK,EAAU,YAAc,GAC9C4K,cAAAA,EACAW,iBAAkB,CAChBlC,OAAQ,eACRF,WAAY,UACZF,SAAU,wBACVK,cAAe,cAInBuB,EAAQC,KAAK,CACXC,MAAO,GACPC,MAAOhL,EAAU,WACjBiL,QAAS,CACPC,YAAa,eACbC,OAAQ,iCACRC,KAAM,CAACrK,EAAUyD,KAEnB6G,SAAUpB,EACVjI,UAAWiI,EAAa,WAAa,GACrCqB,QAASrB,EAAajK,EAAU,YAAc,GAC9C4K,cAAAA,EACAW,iBAAkB,CAChBlC,OAAQ,eACRF,WAAY,aACZC,WAAY,QACZH,SAAU,wBACVK,cAAe,eAKhBoB,EAAec,EAAA,wBAClBX,EAAQC,KAAK,CACXC,MAAO,GACPC,MAAOhL,EAAU,kBACjBgC,UAAW,cACX4I,cAAe,OAAF,wBACRA,GAAa,CAChBa,UAAW3B,EAAQW,YAAYjG,KAEjC+G,iBAAkB,CAChBlC,OAAQ,eACRJ,SAAU,wBACVK,cAAe,WACfH,WAAY,gBACZC,WAAY,WAEd6B,QAAS,CACPC,YAAa,eACbC,OAAQ,+BACRC,KAAM,CAACrK,EAAUyD,IACjBkH,OAAQ,CACNC,WAAY,CAAC7B,EAAQW,YAAYjG,QAMvC,gBAACoH,EAAA,EAAgB,CACf5J,UAAU,iCACV6J,yBAAyB,oBACzBhB,QAASA,GAGf,C,qCC7GA,SAAgB,gBAAkB,SCalC,SAASiB,EAAYnL,G,MACnB,OACE,gBAACO,EAAA,EAAO,CAACC,MAAK,UAAKR,EAAME,KAAKO,KAAI,YAAIT,EAAME,KAAKQ,SAAWC,UAAQ,EAACC,kBAAkB,eACrF,gBAACC,EAAA,EAAM,CACLC,SAA2B,QAAjB,EAAAd,EAAME,KAAKa,cAAM,eAAEC,IAC7BC,YAAajB,EAAMiB,YACnBC,SAAUC,EAAA,cAAuBnB,EAAME,KAAKO,KAAMT,EAAME,KAAKQ,WAIrE,CAQM,SAAU0K,EAA0BpL,GACxC,OACE,gBAACoC,EAAA,EAAU,iBACLpC,EAAK,CACTqC,MAAOrC,EAAMqL,OACb9I,WAAY4I,EACZ3I,yBAA0B,kBAC1BuB,cAAc,UAGpB,C,eCzCA,SAAgB,OAAS,QAAQ,MAAQ,S,8tBCwBzC,IAAM,EAAY,6BACZ,EAAYzE,EAAA,mBAAiC,GCf7CgM,EAAqC,CACzCC,MAAO,mCAAF,OAAqC,SAC1CC,OAAQ,mBACRC,WAAY,wBACZC,IAAK,sBACLC,KAAM,uCAkBKvC,EAAyB,gBAA0C,MAE1E,SAAUwC,EAAgB5L,GAC9B,IAII6L,EAJI5K,EAAqDjB,EAArDiB,YAAa6K,EAAwC9L,EAAxC8L,SAAUC,EAA8B/L,EAA9B+L,YAAaC,EAAiBhM,EAAjBgM,aAEtCC,GAAc,EAAAC,EAAA,KAQlBL,EDbE,SACJC,GAEA,MAAO,cAAeA,CACxB,CCIMK,CAAmBL,GD2EnB,SAAqC,GAY1C,IAXC7K,EAAW,EAAXA,YACA6K,EAAQ,EAARA,SACAC,EAAW,EAAXA,YACAE,EAAW,EAAXA,YACAD,EAAY,EAAZA,aAQMI,EAAWH,IAAgBA,EAAYI,IAAMJ,EAAYK,IACzDC,EAAWN,IAAgBA,EAAYO,IAAMJ,GAE7CP,EAAyC,CAC7C,CACEY,SAAU,SAAC9C,GAAyB,OAAKA,CAAI,EAC7C9F,GAAI,SACJ6I,KAAM,SAAF,OAAYtM,EAAS,EAAhBiJ,MAAK,OACZ,uBAAKhI,UAAU,SACZ8F,EAAA,aAA0B4E,IACzB,uBAAK1K,UAAW,iBACd,gBAAC2G,EAAA,EAAa,CACZ5H,UAAWA,EACXiI,SAAU,WAAF,2BAAMoC,EAAI,yBAAJA,EAAI,uBAAKsB,EAAW,cAAC3L,GAAS,OAAKqK,GAAK,EACtDlC,gBAAiB,2BAInB,EAERoE,MAAO,IAET,CACEC,OAAQ,EAAU,aAClBH,SAAU,SAAC9C,GAAyB,OAAKA,CAAI,EAC7C9F,GAAI,OACJ6I,KAAM,SAAF,GAA2D,IAA/CtM,EAAS,EAAhBiJ,MACP,OACE,gBAACwD,EAAA,EAAO,CACNvC,QAAO,+BAAOwB,EAAS1L,WAAS,CAAEqK,KAAM,CAACrK,EAAUyD,MACnDrD,MAAOJ,EAAUK,KACjBY,UAAU,0BAETjB,EAAUK,KAGjB,EACAkM,MAAOP,EAAW,GAAK,IAEzB,CACEK,SAAU,aACVG,OAAQ,EAAU,SAClB/I,GAAI,QACJ6I,KAAM,SAAF,GAA4B,IAAhBhD,EAAU,EAAjBL,MACDgC,EAAS3B,EAAWC,KAAKmD,QAAO,SAAAjD,GAAS,OAAIA,EAAUkD,OAAS,UAAmB,IACtFpJ,KAAI,SAAAqJ,GAAC,OAAIA,EAAE/M,IAAI,IAAE6M,OAAOG,SAE3B,OAAKvD,EAAWC,MAASD,EAAWC,KAAK5G,QAAWsI,EAAOtI,OAIzD,gBAACqI,EAAyB,CACxBnK,YAAaA,EACboK,OAAQA,EACRxI,WAAYuJ,EAAW,EAAI,IANtB,gCASX,EACAO,MAAOJ,EAAW,GAAK,IAGzBP,IAAiBI,GAAY,CAC3BQ,OAAQ,EAAU,QAClBH,SAAU,SAAC9C,GAAyB,OAAKA,CAAI,EAC7C+C,KAAM,SAAF,GACF,OADuB,EAAhBrD,MACWE,cAAcC,SAG9B,gBAAC0D,EAAA,EAAI,CAACC,UAAW,EAAWC,OAAO,WAFnC,gBAACF,EAAA,EAAI,CAACC,UAAW,EAAWC,OAAO,UAIvC,EACAT,MAAO,IAET,CACEC,OAAQ,EAAU,QAClBH,SAAU,SAAC9C,GAAyB,OAAKA,CAAI,EAC7C9F,GAAI,OACJ6I,KAAM,SAAF,GAA2D,I,QAA/CtM,EAAS,EAAhBiJ,MACP,OACE,gBAAC9I,EAAA,EAAO,CACNC,OAA8B,QAAvB,EAAAJ,EAAUmJ,qBAAa,eAAEC,UAAW,EAAU,YAAc,GACnE7I,UAAQ,GAER,gBAACkM,EAAA,EAAO,CACNnC,SAAiC,QAAvB,EAAAtK,EAAUmJ,qBAAa,eAAEC,SACnCnI,WAAkC,QAAvB,EAAAjB,EAAUmJ,qBAAa,eAAEC,UAAW,gCAAkC,GACjFc,SAAgC,QAAvB,EAAAlK,EAAUmJ,qBAAa,eAAEC,UAAW,KAAM,+BAAMsC,EAASuB,MAAI,CAAE5C,KAAM,CAACrK,EAAUyD,IAAKkH,OAAQ,CAAEuC,OAAQ,WAEhH,gBAAC7L,EAAA,EAAY,CAACF,QAAS,UAAmBF,UAAU,uBACpD,gBAAC6L,EAAA,EAAI,CAACC,UAAW,EAAWC,OAAO,cAI3C,EACAT,MAAOJ,EAAW,GAAK,IAEzB,CACEE,SAAU,SAAC9C,GAAyB,OAAKA,CAAI,EAC7C9F,GAAI,UACJ6I,KAAMxD,EACNyD,MAAOJ,EAAW,GAAK,KAI3B,OAAOV,EAAQiB,OAAQG,QACzB,CChMcM,CAA2B,CACnCtM,YAAAA,EAAa6K,SAAAA,EAAUC,YAAAA,EAAaE,YAAAA,EAAaD,aAAAA,IDJjD,SACJF,GAGA,IAAM0B,GAAc,EAsEpB,MArE+C,CAC7C,CACEZ,OAAQ,uBAAKvL,UAAU,QAAQ,EAAU,cACzCoL,SAAU,SAAC9C,GAAyB,OAAKA,CAAI,EAC7C9F,GAAI,OACJ6I,KAAM,SAAF,GAA2D,IAA/CtM,EAAS,EAAhBiJ,MACP,OACE,uBAAKhI,UAAU,QACZjB,EAAUK,KAGjB,EACAkM,MAAO,IAET,CAEEF,SAAU,KACV5I,GAAI,qBACJ6I,KAAM,WACJ,OAAO,gCACT,EACAC,MAAO,KAET,CACEF,SAAU,SAAC9C,GAAyB,OAAKA,CAAI,EAC7C9F,GAAI,WACJ6I,KAAM,SAAF,GAA2D,IAA/CtM,EAAS,EAAhBiJ,MACP,OACE,gBAAC4B,EAAA,EAAO,CACNf,QAAS,CACP,CACEI,QAAS,OAAF,wBAAOwB,EAAS2B,UAAQ,CAAEhD,KAAM,CAACrK,EAAUyD,MAClD6G,SAAU8C,EACV7C,QAA+C,EAAU,YACzDpJ,QAAS,cACTmM,QAAQ,IAGZrM,UAAU,iCACV6J,yBAAyB,qBAG/B,EACAyB,MAAO,IAET,CACEF,SAAU,SAAC9C,GAAyB,OAAKA,CAAI,EAC7C9F,GAAI,SACJ6I,KAAM,SAAF,GAA2D,IAA/CtM,EAAS,EAAhBiJ,MACP,OACE,gBAAC4B,EAAA,EAAO,CACNf,QAAS,CACP,CACEI,QAAS,OAAF,wBAAOwB,EAAQ,QAAO,CAAErB,KAAM,CAACrK,EAAUyD,MAChD6G,SAAU8C,EACV7C,QAA+C,EAAU,UACzDpJ,QAAS,YACTmM,QAAQ,IAIZrM,UAAU,iCACV6J,yBAAyB,qBAG/B,EACAyB,MAAO,KAGIG,OAAOG,QACxB,CCpEcU,CAA6B7B,GAEzC,IAAMnC,ED4LF,SACJiE,GAGsB,IAFtBC,EAAA,uDAAgC,GAChCC,EAAc,uCACdC,EAAsB,uCAEtB,OAAO,WAAc,W,MACnB,IAAKD,EAAO,CACV,IAAME,EAEJ,QAFyB,EAAAJ,aAAa,EAAbA,EAAed,QAAO,SAAAmB,GAC/C,OAAQJ,EAAiBK,MAAK,SAAAC,GAAE,OAAIA,EAAGtK,KAAOoK,EAAEpK,EAAE,GACpD,WAAE,QAAI,GACN,MAAO,GAAP,SAAYgK,GAAgB,EAAKG,GAClC,CAED,OAAOJ,CACT,GAAG,CAAEG,EAAcD,GACrB,CC5MeM,CAAapO,EAAM4N,cAAe5N,EAAM6N,iBAAkB7N,EAAM8N,MAAO9N,EAAM+N,cAE1F,OACE,gBAAC3E,EAAuBiF,SAAQ,CAAChF,MAAOrJ,GACtC,gBAACsO,EAAA,EAAK,CACJzC,QAASA,EACTlC,KAAMA,EACN4E,MAAOjD,IAIf,C,kDC3DA,SAAgB,YAAc,QAAQ,YAAc,QAAQ,YAAc,QAAQ,cAAgB,QAAQ,cAAgB,QAAQ,aAAe,QAAQ,QAAU,QAAQ,WAAa,QAAQ,WAAa,QAAQ,YAAc,QAAQ,cAAgB,SCG3P,SAASkD,IACP,OACE,sBAAInN,UAAU,0DACZ,uBAAKA,UAAU,6BACb,uBAAKA,UAAS,0CAAqC,iBAEnD,uBAAKA,UAAS,0CAAqC,iBAEnD,uBAAKA,UAAS,8DAAyD,mBAEvE,uBAAKA,UAAS,yDAAoD,mBAClE,uBAAKA,UAAS,0CAAqC,iBAEnD,uBAAKA,UAAS,0CAAqC,kBAGrD,uBAAKA,UAAS,+CAA0C,mBAG9D,CAEA,SAASoN,IACP,OACE,uBAAKpN,UAAU,eACb,uBAAKA,UAAS,UAAK,eAAmB,KAItC,uBAAKA,UAAS,UAAK,aAAiB,SAClC,uBAAKA,UAAS,qCAAgC,cAGhD,uBAAKA,UAAS,UAAK,cAAkB,SACnC,uBAAKA,UAAS,qCAAgC,mBAEhD,uBAAKA,UAAS,UAAK,cAAkB,0BACnC,uBAAKA,UAAS,qCAAgC,mBAEhD,uBAAKA,UAAS,UAAK,cAAkB,0BACnC,uBAAKA,UAAS,qCAAgC,cAGhD,uBAAKA,UAAS,UAAK,gBAAoB,SAAM,KAKnD,CAEM,SAAUqN,IACd,OACE,gCACE,gBAACD,EAAa,MACd,sBAAIpN,UAAU,kCACXsN,MAAM,IAAIC,KAAK,MAAMjL,KAAI,SAACzD,EAAM4D,GAAK,OAAK,gBAAC0K,EAAoB,CAAC5K,IAAKE,GAAS,KAIvF,C","sources":["file:///app/packages/libs/shared/src/apps/share/components/shared-to-avatar-list/shared-to-avatar-list.scss","file:///app/packages/libs/shared/src/apps/share/components/shared-to-avatar-list/SharedToAvatarList.tsx","file:///app/packages/libs/shared/src/components/avatar-list/AvatarList.tsx","file:///app/packages/libs/shared/src/errors/handlers/HttpErrorHandlers.ts","file:///app/packages/libs/shared/src/hooks/UseInfiniteScroll.ts","file:///app/packages/libs/shared/src/hooks/UseInfiniteList.ts","file:///app/packages/libs/shared/src/utils/GroupHelper.ts","file:///app/packages/projects/lite/src/apps/classrooms/components/classroom-star/ClassroomStar.tsx","file:///app/packages/projects/lite/src/apps/classrooms/components/classroom-actions/ClassroomActions.tsx","file:///app/packages/projects/lite/src/apps/classrooms/components/classroom-owners-avatar-list/classroom-owner-avatar-list.scss","file:///app/packages/projects/lite/src/apps/classrooms/components/classroom-owners-avatar-list/ClassroomOwnersAvatarList.tsx","file:///app/packages/projects/lite/src/apps/classrooms/components/classrooms-table/classrooms-table.scss","file:///app/packages/projects/lite/src/apps/classrooms/components/classrooms-table/ClassroomsTableUtils.tsx","file:///app/packages/projects/lite/src/apps/classrooms/components/classrooms-table/ClassroomsTable.tsx","file:///app/packages/projects/lite/src/apps/classrooms/components/classrooms-table/partial-classrooms-table/partial-classrooms-table.scss","file:///app/packages/projects/lite/src/apps/classrooms/components/classrooms-table/partial-classrooms-table/PartialClassroomsTable.tsx"],"sourcesContent":["// extracted by mini-css-extract-plugin\nexport default {\"avatarContainer\":\"ByxQa\",\"sm\":\"EgJ0v\",\"sharedAvatar\":\"cW0NT\"};","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\n\nimport { Avatar } from 'libs/shared/components/avatar/Avatar';\nimport { AvatarItemProps, AvatarList } from 'libs/shared/components/avatar-list/AvatarList';\nimport { IconCircle } from 'libs/shared/components/icon-circle/IconCircle';\nimport { SvgContainer, SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\nimport { Tooltip } from 'libs/shared/components/tooltip/Tooltip';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { BaseObject, Classroom, ClassroomGroup, User } from 'libs/shared/interfaces';\nimport { mapColourToBsVariant } from 'libs/shared/utils/GroupHelper';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\nimport { UserHelper } from 'libs/shared/utils/UserHelper';\n\nimport styles from './shared-to-avatar-list.scss';\n\nconst namespace = 'reportsShare.sharedToAvatarList';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nfunction getHiddenRecipientText(hiddenRecipients: BaseObject[]): string {\n const counts = ArrayHelper.countBy(hiddenRecipients, 'typeId');\n const userCount = counts[MasterType.User];\n const classroomCount = counts[MasterType.Classroom];\n const groupCount = counts[MasterType.ClassroomGroup];\n\n if (userCount && classroomCount && groupCount)\n return getPhrase('classroomsGroupsAndUsers', { userCount, classroomCount, groupCount });\n\n if (userCount && classroomCount)\n return getPhrase('classroomsAndUsers', { userCount, classroomCount });\n\n if (userCount && groupCount)\n return getPhrase('groupsAndUsers', { userCount, groupCount });\n\n if (classroomCount && groupCount)\n return getPhrase('classroomsAndGroups', { classroomCount, groupCount });\n\n if (userCount)\n return getPhrase('users', { userCount });\n\n if (classroomCount)\n return getPhrase('classrooms', { classroomCount });\n\n if (groupCount)\n return getPhrase('groups', { groupCount });\n}\n\nfunction SharedToAvatar(props: AvatarItemProps): JSX.Element {\n const user: User = props.item?.typeId === MasterType.User && props.item as User;\n const classroom: Classroom = props.item?.typeId === MasterType.Classroom && props.item as Classroom;\n const classroomGroup: ClassroomGroup = props.item?.typeId === MasterType.ClassroomGroup\n && props.item as ClassroomGroup;\n\n const svgContainerClassName = 'd-flex justify-content-center align-items-center text-white rounded-circle h-100 w-100';\n\n return (\n <>\n {!!user &&\n <Tooltip title={`${user.name} ${user.surname}`} spanHack spanHackClassName='h-100 w-100'>\n <Avatar\n imageUrl={user.avatar?.url}\n imageCdnUrl={props.imageCdnUrl}\n initials={UserHelper.getInitials(user.name, user.surname)}\n extraClasses={styles.sharedAvatar}\n />\n </Tooltip>\n }\n {!!classroom &&\n <Tooltip title={classroom.name} spanHack spanHackClassName='h-100 w-100'>\n <div className={svgContainerClassName}>\n <IconCircle\n svgName={cvSvgLibrary.Classrooms}\n svgSize={SvgContainerSize.Large}\n variant='teal'\n />\n </div>\n </Tooltip>\n }\n {!!classroomGroup &&\n <Tooltip title={classroomGroup.name} spanHack spanHackClassName='h-100 w-100'>\n <div className={svgContainerClassName}>\n <IconCircle\n svgName={cvSvgLibrary.Group}\n variant={mapColourToBsVariant(classroomGroup.metadata?.colour)}\n />\n </div>\n </Tooltip>\n }\n </>\n );\n}\n\n\ninterface AnonymousSharedToAvatarProps {\n avatarSize?: 'md' | 'sm';\n}\n\nexport function AnonymousSharedToAvatar(props: AnonymousSharedToAvatarProps): JSX.Element {\n return (\n <div className={`${styles.avatarContainer} ${props.avatarSize === 'sm' ? styles.sm : ''}`}>\n <Tooltip\n title={getPhrase('anonymous')}\n spanHack\n spanHackClassName='bg-light text-dark d-flex justify-content-center align-items-center rounded-circle h-100 w-100'\n >\n <SvgContainer svgName={cvSvgLibrary.Anonymous} size={props.avatarSize === 'sm' ? SvgContainerSize.Small : null} />\n </Tooltip>\n </div>\n );\n}\n\ninterface SharedLinkAvatarProps {\n text?: string;\n avatarSize?: 'md' | 'sm';\n className?: string;\n}\n\nexport function SharedLinkAvatar(props: SharedLinkAvatarProps): JSX.Element {\n return (\n <div className={`${styles.avatarContainer} ${props.avatarSize === 'sm' ? styles.sm : ''}`}>\n <Tooltip\n title={props.text || getPhrase('sharedLink')}\n spanHack\n spanHackClassName={`bg-light text-dark d-flex justify-content-center align-items-center rounded-circle h-100 w-100 ${props.className || ''}`}\n >\n <SvgContainer svgName={cvSvgLibrary.Link} size={props.avatarSize === 'sm' ? SvgContainerSize.Small : null} />\n </Tooltip>\n </div>\n );\n}\n\ninterface SharedToAvatarListProps {\n recipients: BaseObject[];\n imageCdnUrl: string;\n maxAvatars?: number;\n hasShareLink?: boolean;\n avatarSize?: 'md' | 'sm';\n shareLinkText?: string;\n}\n\nSharedToAvatarList.defaultProps = {\n maxAvatars: 5\n};\n\nexport function SharedToAvatarList(props: SharedToAvatarListProps): JSX.Element {\n return (\n <AvatarList\n {...props}\n items={props.recipients}\n avatarItem={SharedToAvatar}\n avatarContainerClassname={`${styles.avatarContainer} ${props.avatarSize === 'sm' ? styles.sm : ''}`}\n getHiddenTooltip={getHiddenRecipientText}\n hasShareLink={props.hasShareLink}\n shareLinkText={props.shareLinkText}\n />\n );\n}","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { SharedLinkAvatar } from 'libs/shared/apps/share/components/shared-to-avatar-list/SharedToAvatarList';\nimport { Tooltip } from 'libs/shared/components/tooltip/Tooltip';\nimport { BaseObject } from 'libs/shared/interfaces';\n\nconst namespace = 'shared.avatarList';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nexport interface AvatarItemProps {\n imageCdnUrl: string;\n index: number;\n item?: BaseObject;\n hiddenItems?: BaseObject[];\n maxAvatars?: number;\n}\n\ninterface AvatarListProps {\n items: BaseObject[];\n imageCdnUrl: string;\n maxAvatars?: number;\n avatarItem?: (props: AvatarItemProps) => JSX.Element;\n getHiddenTooltip?: (hiddenItems: BaseObject[]) => string;\n numberClassname?: string;\n avatarContainerClassname?: string;\n roleToDisplay?: 'student' | 'staff';\n hasShareLink?: boolean;\n avatarSize?: 'md' | 'sm';\n shareLinkText?: string;\n}\n\nAvatarList.defaultProps = {\n maxAvatars: 5\n};\n\nexport function AvatarList(props: AvatarListProps): JSX.Element {\n const itemsToDisplay = props.items.length > props.maxAvatars\n ? props.items.slice(0, props.maxAvatars - 1)\n : props.items;\n\n const hiddenItems = props.items.length > itemsToDisplay.length\n ? props.items.slice(props.maxAvatars - 1)\n : [];\n\n const AvatarItem = props.avatarItem;\n const hiddenItemsCounts = hiddenItems.length;\n const translateX = props.avatarSize === 'sm' ? 4 : 8;\n\n function getTooltip() {\n if (props.getHiddenTooltip)\n return props.getHiddenTooltip(hiddenItems);\n\n if (props.roleToDisplay)\n return getPhrase(props.roleToDisplay === 'staff' ? 'staff' : 'student', { count: hiddenItemsCounts, smartCount: hiddenItemsCounts });\n\n return getPhrase('users', { count: hiddenItemsCounts, smartCount: hiddenItemsCounts });\n }\n\n function getContainerStyles() {\n return {\n marginRight: `-${((itemsToDisplay.length - 1) + (hiddenItems.length ? 1 : 0) + (props.hasShareLink ? 1 : 0)) * translateX}px`\n };\n }\n\n function getAvatarStyles(idx: number) {\n return {\n transform: `translateX(${(props.hasShareLink ? idx + 1 : idx) * -translateX}px)`,\n zIndex: props.maxAvatars - idx\n };\n }\n\n if (itemsToDisplay.length === 0 && hiddenItems.length === 0)\n return <></>;\n\n return (\n <div\n className='d-flex'\n style={getContainerStyles()}\n >\n {props.hasShareLink && (\n <div style={{ zIndex: props.maxAvatars + 1 }}>\n <SharedLinkAvatar text={props.shareLinkText} avatarSize={props.avatarSize} className='bg-dark text-white' />\n </div>\n )}\n {itemsToDisplay.map((item, idx) => (\n <div\n className={`${props.avatarContainerClassname || ''}`} key={item.id}\n style={getAvatarStyles(idx)}\n >\n <AvatarItem\n item={item}\n imageCdnUrl={props.imageCdnUrl}\n index={idx}\n maxAvatars={props.maxAvatars}\n />\n </div>\n ))}\n\n {!!hiddenItems.length && (\n <div\n className={`${props.avatarContainerClassname || ''} bg-white rounded-circle`}\n style={{ transform: `translateX(${itemsToDisplay.length * -translateX}px)`, zIndex: props.maxAvatars - itemsToDisplay.length }}\n >\n <Tooltip title={getTooltip()} spanHack spanHackClassName='h-100 w-100'>\n <div className={`d-flex justify-content-center align-items-center border border-dark rounded-circle h-100 w-100 ${props.numberClassname || ''}`}>\n {`+${hiddenItems.length}`}\n </div>\n </Tooltip>\n </div>\n )}\n </div>\n );\n}","import { BaseError } from 'libs/common/backbone/core/BaseError';\nimport { HttpStatus } from 'libs/common/backbone/enums/HttpStatus';\nimport { Xhr } from 'libs/common/backbone/interfaces';\nimport { Core } from 'libs/common/core';\n\nimport { NotFoundError } from 'libs/shared/errors/general/not-found/NotFoundError';\nimport { PrivateResourceError } from 'libs/shared/errors/general/private-resource/PrivateResourceError';\nimport { RegionLockedResourceError } from 'libs/shared/errors/general/region-locked-resource/RegionLockedResourceError';\nimport { UnspecifiedError } from 'libs/shared/errors/general/unspecified-error/UnspecifiedError';\nimport { VideoTypes } from 'libs/shared/interfaces';\n\nexport interface HttpErrorMap {\n notFound?: new () => BaseError;\n forbidden?: {\n rating?: new (description: string) => BaseError;\n yearLevel?: new (description: string) => BaseError;\n region?: new () => BaseError;\n privacy?: new (video?: VideoTypes) => BaseError;\n };\n badRequest?: new () => BaseError;\n internalServerError?: new () => BaseError;\n}\n\nexport type IgnoreHttpErrorMap = {\n [key in keyof HttpErrorMap]: boolean;\n};\n\nconst defaultErrors: HttpErrorMap = {\n notFound: NotFoundError,\n forbidden: {\n rating: PrivateResourceError,\n yearLevel: PrivateResourceError,\n region: RegionLockedResourceError,\n privacy: PrivateResourceError\n },\n badRequest: UnspecifiedError,\n internalServerError: UnspecifiedError\n};\n\nexport function handleHttpError(\n info: HttpStatus | Xhr,\n customErrorMap: HttpErrorMap = {},\n /**\n * Prevent certain errors in the errorMap from being thrown\n * so that you may implement your own handler\n */\n ignoreMap: IgnoreHttpErrorMap = {}\n): void {\n if (!info)\n return;\n\n let statusCode: HttpStatus;\n\n if (typeof(info) === 'number') {\n statusCode = info;\n } else {\n statusCode = info.status;\n }\n\n const errorMap = {\n ...defaultErrors,\n ...customErrorMap\n };\n\n if (!statusCode)\n return;\n\n if (!Core.ErrorHelper.isStatusCodeError(statusCode))\n return;\n\n if (statusCode === HttpStatus.InternalServer) {\n if (!ignoreMap.internalServerError)\n Core.ErrorHelper.throw(new UnspecifiedError());\n return;\n }\n\n if (statusCode === HttpStatus.NotFound) {\n if (!ignoreMap.notFound)\n Core.ErrorHelper.throw(new errorMap.notFound());\n return;\n }\n\n if (statusCode === HttpStatus.Forbidden) {\n /**\n * TODO: Work out how to go about handling all forbidden errors, such as region locking, year levels,\n * ratings, and privacy.\n */\n if (!ignoreMap.forbidden)\n Core.ErrorHelper.throw(new errorMap.forbidden.privacy());\n return;\n }\n\n if (!ignoreMap.badRequest)\n Core.ErrorHelper.throw(new errorMap.badRequest());\n}\n\nexport function handleXhrError(xhr: Xhr, customErrorMap?: HttpErrorMap): void {\n handleHttpError(xhr.status, customErrorMap);\n}","import { useEffect } from 'react';\n\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\n\nconst SCROLL_TOLERANCE = 400; // value in px\n\ninterface UseInfiniteScrollOptions {\n fetchNextPage: () => void;\n hasMore: boolean;\n isFetching: boolean;\n scrollContainer?: HTMLElement;\n}\n\nexport function useInfiniteScroll(options: UseInfiniteScrollOptions): void {\n const handleScroll = (): void => {\n if (options.isFetching)\n return;\n\n if (!options.scrollContainer) {\n const currentScrollHeight = window.innerHeight + document.documentElement.scrollTop;\n \n const totalHeight = document.documentElement.scrollHeight - SCROLL_TOLERANCE;\n \n if (currentScrollHeight < totalHeight)\n return;\n } else {\n const { scrollContainer } = options;\n const currentScrollHeight = scrollContainer.getBoundingClientRect().height + scrollContainer.scrollTop;\n \n const totalHeight = scrollContainer.scrollHeight - SCROLL_TOLERANCE;\n \n if (currentScrollHeight < totalHeight)\n return;\n }\n\n options.fetchNextPage();\n };\n\n useEffect(() => {\n const onScroll = FunctionHelper.throttle(handleScroll, 200);\n\n const scrollContainer = options.scrollContainer || window;\n\n if (options.hasMore)\n scrollContainer.addEventListener('scroll', onScroll);\n\n return () => scrollContainer.removeEventListener('scroll', onScroll);\n }, [ options.hasMore, options.fetchNextPage, options.scrollContainer ]);\n}","import { useEffect, useState } from 'react';\n\nimport { HttpStatus, HttpStatusClass } from 'libs/common/backbone/enums/HttpStatus';\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\nimport { Flight } from 'libs/common/flight';\n\nimport { BaseObject, BasePaginatedCollection } from 'libs/shared/interfaces';\n\nimport { useInfiniteScroll } from './UseInfiniteScroll';\nimport { useSelectAllPages } from './UseSelectAllPages';\n\nexport interface UseInfiniteListResult<T extends BaseObject> {\n items: T[];\n hasMore: boolean;\n isFetching: boolean;\n nextCursor: string;\n totalItems?: number;\n hasFirstPageCompleted: boolean;\n}\n\n/**\n * Hook to extract an infinite list from the application state,\n * save it locally in state and only update when new data\n * is fetched.\n * \n * @param getRequest - callback function to get the request for each page.\n * Can be false if the request requires data that hasn't yet been fetched - e.g. user id.\n * \n * @param fetchNext - callback function to fetch a page.\n * Can be false if the request requires data that hasn't yet been fetched - e.g. user id.\n */\nexport function useInfiniteList<TObject = BaseObject, TResponse = BasePaginatedCollection<TObject>>(\n getRequest: ((cursor?: string) => Flight.Request) | false,\n fetchNext: ((cursor?: string) => void) | false,\n onError?: (pageNumber: number, statusCode: HttpStatus) => void,\n getItems?: (responseData: TResponse) => TObject[],\n getCursor?: (responseData: TResponse) => string,\n scrollContainer?: HTMLElement\n): UseInfiniteListResult<TObject> {\n const [ pagesFetched, setPagesFetched ] = useState(0);\n\n const fetchNextFn = fetchNext as (cursor?: string) => void;\n\n function getKey(cursor?: string): string {\n if (!getRequest)\n return null;\n\n const request = getRequest(cursor);\n\n if (!request)\n return null;\n\n return request.key;\n }\n\n const response = useSelectAllPages<TObject, TResponse>(\n getKey,\n getItems,\n getCursor\n );\n\n function fetchNextPage(): void {\n if (!fetchNext || !getRequest || !response)\n return;\n\n setPagesFetched(currentVal => currentVal + 1);\n return fetchNextFn(response.nextCursor);\n }\n\n useInfiniteScroll({\n fetchNextPage,\n hasMore: !!response?.nextCursor,\n isFetching: response?.isFetching,\n scrollContainer\n });\n\n useEffect(() => {\n if (!response)\n return;\n\n if (response.shouldInitialFetch && fetchNext) {\n fetchNextFn();\n setPagesFetched(currentVal => currentVal + 1);\n }\n }, [ response?.shouldInitialFetch, fetchNext ]);\n\n useEffect(() => {\n if (!response?.statusCode || !FunctionHelper.isFunction(onError))\n return;\n\n const httpStatusClass: HttpStatusClass = +(response.statusCode?.toString()?.substr(0, 1));\n\n if (httpStatusClass !== HttpStatusClass.ClientError && httpStatusClass !== HttpStatusClass.ServerError)\n return;\n\n onError(pagesFetched, response.statusCode);\n }, [response?.statusCode]);\n\n return {\n items: response?.items,\n hasMore: !!response?.nextCursor,\n nextCursor: response?.nextCursor,\n isFetching: response?.isFetching,\n totalItems: response?.totalItems,\n hasFirstPageCompleted: response?.hasFirstPageCompleted\n };\n}","import { ButtonProps } from 'react-bootstrap';\n\nimport { ClassroomGroupColour } from 'libs/shared/interfaces';\n\nexport function mapColourToBsVariant(groupColour: ClassroomGroupColour): ButtonProps['variant'] {\n switch (groupColour) {\n case ClassroomGroupColour.Pink:\n return 'pink';\n case ClassroomGroupColour.Orange:\n return 'orange';\n case ClassroomGroupColour.Green:\n return 'green';\n case ClassroomGroupColour.Blue:\n return 'blue';\n case ClassroomGroupColour.Purple:\n return 'purple';\n case ClassroomGroupColour.Indigo:\n return 'indigo';\n default:\n return 'pink';\n }\n}\n","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { AnalyticsHelper } from 'libs/analytics/AnalyticsHelper';\nimport { EntityType, LocationContext, ToggleDescriptor, UserAction, WorkflowPhase } from 'libs/analytics/interfaces';\n\nimport { DivButton } from 'libs/shared/components/div-button/DivButton';\nimport { SvgContainer, SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\nimport { useAlerts } from 'libs/shared/hooks/UseAlerts';\nimport { Classroom } from 'libs/shared/interfaces';\nimport { FavouriteHelper } from 'libs/shared/utils/FavouriteHelpers';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nconst namespace = 'classrooms.classroomStar';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nconst getIsPinned = (classroom: Classroom) => {\n return FavouriteHelper.isFavouritedByCurrentUser(classroom);\n};\n\ninterface ClassroomStarProps {\n classroom: Classroom;\n onToggle: (shouldPin: boolean, onSuccess: () => void, onError: () => void) => void;\n locationContext: LocationContext;\n}\n\nexport function ClassroomStar(props: ClassroomStarProps): JSX.Element {\n // Local state is used to provide instant feedback when the user clicks on the star.\n const [ isPinned, setIsPinned ] = React.useState(getIsPinned(props.classroom));\n\n const alerts = useAlerts();\n\n React.useEffect(() => {\n if (getIsPinned(props.classroom) === isPinned)\n return;\n\n setIsPinned(!isPinned);\n }, [getIsPinned(props.classroom)]);\n\n function onToggle(): void {\n setIsPinned(!isPinned);\n\n props.onToggle(!isPinned, () => onSuccess(!isPinned), () => onError(isPinned));\n }\n\n function onSuccess(isPinned: boolean): void {\n if (isPinned) {\n AnalyticsHelper.logUserAction({ id: props.classroom.id }, {\n location: props.locationContext,\n actionType: UserAction.Favourite,\n descriptor: ToggleDescriptor.On,\n entity: EntityType.Classroom,\n workflowPhase: WorkflowPhase.Complete\n });\n \n alerts.success(getPhrase('pinSuccess', {\n classroomName: props.classroom.name,\n escapeText: true\n }));\n \n return;\n }\n\n AnalyticsHelper.logUserAction({ id: props.classroom.id }, {\n location: props.locationContext,\n actionType: UserAction.Favourite,\n descriptor: ToggleDescriptor.Off,\n entity: EntityType.Classroom,\n workflowPhase: WorkflowPhase.Complete\n });\n\n alerts.success(getPhrase('unpinSuccess', {\n classroomName: props.classroom.name,\n escapeText: true\n }));\n }\n\n function onError(prevState: boolean): void {\n setIsPinned(prevState);\n\n if (prevState) {\n alerts.error(getPhrase('unpinError', {\n classroomName: props.classroom.name,\n escapeText: true\n }));\n\n return;\n }\n\n alerts.error(getPhrase('pinError', {\n classroomName: props.classroom.name,\n escapeText: true\n }));\n }\n\n return (\n <DivButton onClick={onToggle} className={isPinned ? 'text-yellow' : ''}>\n <SvgContainer\n svgName={isPinned ? cvSvgLibrary.Star : cvSvgLibrary.StarOutline}\n size={SvgContainerSize.Medium}\n />\n </DivButton>\n );\n}","import React from 'react';\nimport { CellProps } from 'react-table';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { AssocDescriptor, EntityType, LocationContext, ToggleDescriptor, UserAction, WorkflowPhase } from 'libs/analytics/interfaces';\n\nimport { Actions as ActionsComponent } from 'libs/shared/components/actions/Actions';\nimport { ActionOptions } from 'libs/shared/components/actions/Actions';\nimport { PermissionName } from 'libs/shared/enums/PermissionName';\nimport { usePermissions } from 'libs/shared/hooks/usePermissions';\n\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\n\nimport { ClassroomsTableContext } from 'apps/classrooms/components/classrooms-table/ClassroomsTable';\nimport { ClassroomsTableData } from 'apps/classrooms/components/classrooms-table/ClassroomsTableUtils';\n\nconst namespace = 'classrooms.classroomActions';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nexport function ClassroomActions(props: CellProps<ClassroomsTableData, ClassroomsTableData>): JSX.Element {\n const context = React.useContext(ClassroomsTableContext);\n\n const classroom = props.value;\n const isRostered = !!classroom._integrations?.rostered;\n\n const isOwner = classroom.enrolments.data.find(enrolment => enrolment.user.id === context.currentUser.id);\n\n const { hasPermissions } = usePermissions();\n\n const analyticsData = { id: classroom.id };\n const actions: ActionOptions[] = [];\n\n if (isOwner) {\n actions.push({\n order: 0,\n label: getPhrase('edit'),\n appLink: {\n application: AppChannels.CLASSROOMS,\n action: Actions.Classrooms.EDIT_CLASSROOM,\n args: [classroom.id]\n },\n disabled: isRostered,\n className: isRostered ? 'disabled' : '',\n tooltip: isRostered ? getPhrase('disabled') : '',\n analyticsData,\n analyticsOptions: {\n entity: EntityType.Classroom,\n actionType: UserAction.Edit,\n location: LocationContext.ClassroomsListItem,\n workflowPhase: WorkflowPhase.Start\n }\n });\n\n actions.push({\n order: 10,\n label: getPhrase('archive'),\n appLink: {\n application: AppChannels.CLASSROOMS,\n action: Actions.Classrooms.ARCHIVE_CLASSROOM,\n args: [classroom.id]\n },\n disabled: isRostered,\n className: isRostered ? 'disabled' : '',\n tooltip: isRostered ? getPhrase('disabled') : '',\n analyticsData,\n analyticsOptions: {\n entity: EntityType.Classroom,\n actionType: UserAction.Archive,\n descriptor: ToggleDescriptor.On,\n location: LocationContext.ClassroomsListItem,\n workflowPhase: WorkflowPhase.Start\n }\n });\n }\n\n if (!hasPermissions(PermissionName.ManageAllClassrooms)) {\n actions.push({\n order: 20,\n label: getPhrase('leaveClassroom'),\n className: 'text-danger',\n analyticsData: {\n ...analyticsData,\n teacherId: context.currentUser.id\n },\n analyticsOptions: {\n entity: EntityType.Classroom,\n location: LocationContext.ClassroomsListItem,\n workflowPhase: WorkflowPhase.Start,\n actionType: UserAction.Dissociate,\n descriptor: AssocDescriptor.User\n },\n appLink: {\n application: AppChannels.CLASSROOMS,\n action: Actions.Classrooms.REMOVE_TEACHERS,\n args: [classroom.id],\n params: {\n teacherIds: [context.currentUser.id]\n }\n }\n });\n }\n return (\n <ActionsComponent\n className='w-100 justify-content-end pe-2'\n actionsDropdownClassName='btn btn-link ms-1'\n actions={actions}\n />\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"avatarContainer\":\"zMxWi\"};","import React from 'react';\n\nimport { Avatar } from 'libs/shared/components/avatar/Avatar';\nimport { AvatarItemProps, AvatarList } from 'libs/shared/components/avatar-list/AvatarList';\nimport { Tooltip } from 'libs/shared/components/tooltip/Tooltip';\nimport { User } from 'libs/shared/interfaces';\nimport { UserHelper } from 'libs/shared/utils/UserHelper';\n\nimport styles from './classroom-owner-avatar-list.scss';\n\ninterface OwnerAvatarProps extends AvatarItemProps {\n item: User;\n}\n\nfunction OwnerAvatar(props: OwnerAvatarProps): JSX.Element {\n return (\n <Tooltip title={`${props.item.name} ${props.item.surname}`} spanHack spanHackClassName='h-100 w-100'>\n <Avatar\n imageUrl={props.item.avatar?.url}\n imageCdnUrl={props.imageCdnUrl}\n initials={UserHelper.getInitials(props.item.name, props.item.surname)}\n />\n </Tooltip>\n );\n}\n\ninterface ClassroomOwnersListProps {\n owners: User[];\n imageCdnUrl: string;\n maxAvatars: number;\n}\n\nexport function ClassroomOwnersAvatarList(props: ClassroomOwnersListProps): JSX.Element {\n return (\n <AvatarList\n {...props}\n items={props.owners}\n avatarItem={OwnerAvatar}\n avatarContainerClassname={styles.avatarContainer}\n roleToDisplay='staff'\n />\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"avatar\":\"btxC4\",\"table\":\"IUfRF\"};","import React from 'react';\nimport { Column } from 'react-table';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\n\nimport { LocationContext } from 'libs/analytics/interfaces';\n\nimport { Actions } from 'libs/shared/components/actions/Actions';\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { Tooltip } from 'libs/shared/components/tooltip/Tooltip';\nimport { Breakpoints } from 'libs/shared/hooks/useBreakpoints';\nimport { Classroom, EnrolmentRole } from 'libs/shared/interfaces';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport { ClassroomActions } from 'apps/classrooms/components/classroom-actions/ClassroomActions';\nimport { ClassroomOwnersAvatarList } from 'apps/classrooms/components/classroom-owners-avatar-list/ClassroomOwnersAvatarList';\nimport { ClassroomStar } from 'apps/classrooms/components/classroom-star/ClassroomStar';\nimport { OnTogglePinFn } from 'apps/classrooms/components/classrooms-table/ClassroomsTable';\nimport { ActiveClassroomsTableApplinks, ArchivedClassroomsTableApplinks, ClassroomsTableApplinks } from 'apps/classrooms/interfaces/ClassroomsTableApplinks';\n\nimport styles from './classrooms-table.scss';\n\nconst namespace = 'classrooms.classroomsTable';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nexport interface ClassroomsTableData extends Classroom {\n // todo wait for backend to finalize\n creator?: any;\n}\n\n\nexport function isActiveClassrooms(\n appLinks: ClassroomsTableApplinks\n): appLinks is ActiveClassroomsTableApplinks {\n return 'classroom' in appLinks;\n}\n\nexport function getArchivedClassroomsColumns(\n appLinks: ArchivedClassroomsTableApplinks\n) {\n // todo get data from backend, support rostering in the future\n const isRostering = false;\n const columns: Column<ClassroomsTableData>[] = [\n {\n Header: <div className='ms-3'>{getPhrase('classroom')}</div>,\n accessor: (data: ClassroomsTableData) => data,\n id: 'name',\n Cell: ({ value: classroom }: { value: ClassroomsTableData }) => {\n return (\n <div className='ms-3'>\n {classroom.name}\n </div>\n );\n },\n width: 80\n },\n {\n // just add an empty column for styling\n accessor: 'id',\n id: 'placeholder-column',\n Cell: () => {\n return <></>;\n },\n width: 120\n },\n {\n accessor: (data: ClassroomsTableData) => data,\n id: 'retrieve',\n Cell: ({ value: classroom }: { value: ClassroomsTableData }) => {\n return (\n <Actions\n actions={[\n {\n appLink: { ...appLinks.retrieve, args: [classroom.id]},\n disabled: isRostering,\n tooltip: isRostering ? getPhrase('disabled') : getPhrase('retrieve'),\n svgName: cvSvgLibrary.Retrieve,\n button: true\n }\n ]}\n className='w-100 justify-content-end pe-2'\n actionsDropdownClassName='btn btn-link ms-1'\n />\n );\n },\n width: 10\n },\n {\n accessor: (data: ClassroomsTableData) => data,\n id: 'delete',\n Cell: ({ value: classroom }: { value: ClassroomsTableData }) => {\n return (\n <Actions\n actions={[\n {\n appLink: { ...appLinks.delete, args: [classroom.id]},\n disabled: isRostering,\n tooltip: isRostering ? getPhrase('disabled') : getPhrase('delete'),\n svgName: cvSvgLibrary.Delete,\n button: true\n }\n\n ]}\n className='w-100 justify-content-end pe-2'\n actionsDropdownClassName='btn btn-link ms-1'\n />\n );\n },\n width: 10\n }\n ];\n return columns.filter(Boolean);\n}\n\nexport function getActiveClassroomsColumns({\n imageCdnUrl,\n appLinks,\n onTogglePin,\n breakpoints,\n hasRostering\n}: {\n imageCdnUrl: string,\n appLinks: ActiveClassroomsTableApplinks,\n onTogglePin: OnTogglePinFn,\n breakpoints?: Breakpoints,\n hasRostering?: boolean\n}): Column<ClassroomsTableData>[] {\n const isMobile = breakpoints && (breakpoints.xs || breakpoints.sm);\n const isTablet = breakpoints && (breakpoints.md || isMobile);\n\n const columns: Column<ClassroomsTableData>[] = [\n {\n accessor: (data: ClassroomsTableData) => data,\n id: 'pinned',\n Cell: ({ value: classroom }: { value: ClassroomsTableData }) => (\n <div className='w-100'>\n {FunctionHelper.isFunction(onTogglePin) && (\n <div className={styles.starContainer}>\n <ClassroomStar\n classroom={classroom}\n onToggle={(...args) => onTogglePin(classroom, ...args)}\n locationContext={LocationContext.ClassroomsListItem}\n />\n </div>\n )}\n </div>\n ),\n width: 15\n },\n {\n Header: getPhrase('classroom'),\n accessor: (data: ClassroomsTableData) => data,\n id: 'name',\n Cell: ({ value: classroom }: { value: ClassroomsTableData }) => {\n return (\n <AppLink\n appLink={{ ...appLinks.classroom, args: [classroom.id]}}\n title={classroom.name}\n className='cursor-pointer clamp-2'\n >\n {classroom.name}\n </AppLink>\n );\n },\n width: isMobile ? 80 : 70\n },\n {\n accessor: 'enrolments',\n Header: getPhrase('owner'),\n id: 'owner',\n Cell: ({ value: enrolments }) => {\n const owners = enrolments.data.filter(enrolment => enrolment.role === EnrolmentRole.Owner)\n .map(o => o.user).filter(Boolean);\n\n if (!enrolments.data || !enrolments.data.length || !owners.length)\n return <></>;\n\n return (\n <ClassroomOwnersAvatarList\n imageCdnUrl={imageCdnUrl}\n owners={owners}\n maxAvatars={isMobile ? 1 : 2}\n />\n );\n },\n width: isTablet ? 30 : 40\n },\n // todo for v1 we display ‘Type’ for school has rostering, in the future we will use 'Creator' here\n hasRostering && !isMobile && {\n Header: getPhrase('type'),\n accessor: (data: ClassroomsTableData) => data,\n Cell: ({ value: classroom }: { value: ClassroomsTableData }) => {\n return !classroom._integrations.rostered ? (\n <Text namespace={namespace} phrase='manual'/>\n ) : (\n <Text namespace={namespace} phrase='roster'/>\n );\n },\n width: 40\n },\n {\n Header: getPhrase('link'),\n accessor: (data: ClassroomsTableData) => data,\n id: 'link',\n Cell: ({ value: classroom }: { value: ClassroomsTableData }) => {\n return (\n <Tooltip\n title={classroom._integrations?.rostered ? getPhrase('disabled') : ''}\n spanHack\n >\n <AppLink\n disabled={classroom._integrations?.rostered}\n className={classroom._integrations?.rostered ? 'text-secondary cursor-default' : ''}\n appLink={classroom._integrations?.rostered ? null : { ...appLinks.link, args: [classroom.id], params: { source: 'list' } }}\n >\n <SvgContainer svgName={cvSvgLibrary.Link} className='svg-container me-1'/>\n <Text namespace={namespace} phrase='generate'/>\n </AppLink>\n </Tooltip>\n );\n },\n width: isTablet ? 40 : 50\n },\n {\n accessor: (data: ClassroomsTableData) => data,\n id: 'actions',\n Cell: ClassroomActions,\n width: isTablet ? 30 : 50\n }\n ];\n \n return columns.filter((Boolean));\n}\n\nexport function useTableData(\n allClassrooms: Classroom[],\n pinnedClassrooms: Classroom[] = [],\n query?: string,\n refreshTable?: boolean\n): ClassroomsTableData[] {\n return React.useMemo(() => {\n if (!query) {\n const unpinnedClassrooms = allClassrooms?.filter(c => {\n return !pinnedClassrooms.some(pc => pc.id === c.id);\n }) ?? [];\n return [ ...pinnedClassrooms, ...unpinnedClassrooms ];\n }\n\n return allClassrooms;\n }, [ refreshTable, query ]);\n}","import React from 'react';\n\nimport { Table, TableTheme } from 'libs/shared/components/table/Table';\nimport { useBreakpoints } from 'libs/shared/hooks/useBreakpoints';\nimport { Classroom, CurrentUser } from 'libs/shared/interfaces';\n\nimport { getActiveClassroomsColumns, getArchivedClassroomsColumns, isActiveClassrooms, useTableData } from 'apps/classrooms/components/classrooms-table/ClassroomsTableUtils';\nimport { ClassroomsTableApplinks } from 'apps/classrooms/interfaces/ClassroomsTableApplinks';\n\nimport styles from './classrooms-table.scss';\n\nconst CLASSROOMS_TABLE_THEME: TableTheme = {\n table: `striped-list no-full-width pb-3 ${styles.table}`,\n header: 'fw-semibold pb-1',\n headerCell: 'py-2 ps-2 text-nowrap',\n row: 'striped-row rounded',\n cell: 'd-flex align-items-center py-2 ps-2'\n};\n\nexport type OnTogglePinFn =\n (classroom: Classroom, shouldPin: boolean, onSuccess: () => void, onError: () => void) => void;\n\ninterface ClassroomsTableProps {\n allClassrooms: Classroom[];\n pinnedClassrooms?: Classroom[];\n appLinks: ClassroomsTableApplinks;\n imageCdnUrl: string;\n currentUser: CurrentUser;\n refreshTable?: boolean;\n query?: string;\n onTogglePin?: OnTogglePinFn;\n hasRostering?: boolean;\n}\n\nexport const ClassroomsTableContext = React.createContext<ClassroomsTableProps>(null);\n\nexport function ClassroomsTable(props: ClassroomsTableProps): JSX.Element {\n const { imageCdnUrl, appLinks, onTogglePin, hasRostering } = props;\n\n const breakpoints = useBreakpoints();\n\n let columns = [];\n if (isActiveClassrooms(appLinks)) {\n columns = getActiveClassroomsColumns({\n imageCdnUrl, appLinks, onTogglePin, breakpoints, hasRostering\n });\n } else {\n columns = getArchivedClassroomsColumns(appLinks);\n }\n const data = useTableData(props.allClassrooms, props.pinnedClassrooms, props.query, props.refreshTable);\n\n return (\n <ClassroomsTableContext.Provider value={props}>\n <Table\n columns={columns}\n data={data}\n theme={CLASSROOMS_TABLE_THEME}\n />\n </ClassroomsTableContext.Provider>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"partialStar\":\"Xbiwa\",\"partialText\":\"Txo6a\",\"partialName\":\"WT6R3\",\"partialAvatar\":\"T5kj5\",\"partialAction\":\"VI06f\",\"shortHeading\":\"Gvufi\",\"heading\":\"dh0wz\",\"starColumn\":\"GsT4V\",\"nameColumn\":\"eAvib\",\"ownerColumn\":\"T6yK9\",\"actionsColumn\":\"LIRFn\"};","import React from 'react';\n\nimport styles from './partial-classrooms-table.scss';\n\nfunction PartialClassroomItem(): JSX.Element {\n return (\n <li className='d-flex justify-content-between align-items-center py-2'>\n <div className='d-flex align-items-center'>\n <div className={`ms-4 partial-loading-background ${styles.partialStar}`} />\n\n <div className={`mx-3 partial-loading-background ${styles.partialName}`} />\n\n <div className={`ms-3 me-4 rounded-circle partial-loading-background ${styles.partialAvatar}`} />\n \n <div className={`ms-4 rounded-circle partial-loading-background ${styles.partialAvatar}`} />\n <div className={`mx-1 partial-loading-background ${styles.partialText}`} />\n\n <div className={`mx-4 partial-loading-background ${styles.partialText}`} />\n </div>\n\n <div className={`ms-4 me-3 partial-loading-background ${styles.partialAction}`} />\n </li>\n );\n}\n\nfunction PartialHeader(): JSX.Element {\n return (\n <div className='d-flex mb-1'>\n <div className={`${styles.starColumn}`}>\n &nbsp;\n </div>\n\n <div className={`${styles.nameColumn} p-2`}>\n <div className={`partial-loading-background ${styles.heading}`} />\n </div>\n\n <div className={`${styles.ownerColumn} p-2`}>\n <div className={`partial-loading-background ${styles.shortHeading}`} />\n </div>\n <div className={`${styles.ownerColumn} p-2 d-none d-md-flex`}>\n <div className={`partial-loading-background ${styles.shortHeading}`} />\n </div>\n <div className={`${styles.ownerColumn} p-2 d-none d-md-flex`}>\n <div className={`partial-loading-background ${styles.heading}`} />\n </div>\n\n <div className={`${styles.actionsColumn} p-2`}>\n &nbsp;\n </div>\n </div>\n );\n}\n\nexport function PartialClassroomsTable(): JSX.Element {\n return (\n <>\n <PartialHeader/>\n <ul className='m-0 list-unstyled striped-list'>\n {Array(15).fill(null).map((item, index) => <PartialClassroomItem key={index} />)}\n </ul>\n </>\n );\n}"],"names":["getPhrase","LanguageService","getHiddenRecipientText","hiddenRecipients","counts","ArrayHelper","userCount","MasterType","classroomCount","groupCount","SharedToAvatar","props","user","item","typeId","classroom","classroomGroup","svgContainerClassName","Tooltip","title","name","surname","spanHack","spanHackClassName","Avatar","imageUrl","avatar","url","imageCdnUrl","initials","UserHelper","extraClasses","className","IconCircle","svgName","svgSize","SvgContainer","S","variant","metadata","colour","AnonymousSharedToAvatar","avatarSize","size","SharedLinkAvatar","text","SharedToAvatarList","AvatarList","items","recipients","avatarItem","avatarContainerClassname","getHiddenTooltip","hasShareLink","shareLinkText","defaultProps","maxAvatars","itemsToDisplay","length","slice","hiddenItems","AvatarItem","hiddenItemsCounts","translateX","getAvatarStyles","idx","transform","zIndex","style","marginRight","map","key","id","index","roleToDisplay","count","smartCount","numberClassname","defaultErrors","notFound","forbidden","rating","yearLevel","region","privacy","badRequest","internalServerError","handleHttpError","info","customErrorMap","ignoreMap","statusCode","status","errorMap","SCROLL_TOLERANCE","useInfiniteList","getRequest","fetchNext","onError","getItems","getCursor","scrollContainer","options","handleScroll","useState","pagesFetched","setPagesFetched","fetchNextFn","response","cursor","request","fetchNextPage","currentVal","nextCursor","hasMore","isFetching","getBoundingClientRect","height","scrollTop","scrollHeight","window","innerHeight","document","documentElement","useEffect","onScroll","FunctionHelper","addEventListener","removeEventListener","shouldInitialFetch","httpStatusClass","toString","substr","HttpStatus","totalItems","hasFirstPageCompleted","mapColourToBsVariant","groupColour","getIsPinned","ClassroomStar","isPinned","setIsPinned","alerts","onClick","onToggle","location","locationContext","actionType","descriptor","entity","workflowPhase","success","classroomName","escapeText","onSuccess","prevState","error","ClassroomActions","context","ClassroomsTableContext","value","isRostered","_integrations","rostered","isOwner","enrolments","data","find","enrolment","currentUser","hasPermissions","usePermissions","analyticsData","actions","push","order","label","appLink","application","action","args","disabled","tooltip","analyticsOptions","PermissionName","teacherId","params","teacherIds","Actions","actionsDropdownClassName","OwnerAvatar","ClassroomOwnersAvatarList","owners","CLASSROOMS_TABLE_THEME","table","header","headerCell","row","cell","ClassroomsTable","columns","appLinks","onTogglePin","hasRostering","breakpoints","useBreakpoints","isActiveClassrooms","isMobile","xs","sm","isTablet","md","accessor","Cell","width","Header","AppLink","filter","role","o","Boolean","Text","namespace","phrase","link","source","getActiveClassroomsColumns","isRostering","retrieve","button","getArchivedClassroomsColumns","allClassrooms","pinnedClassrooms","query","refreshTable","unpinnedClassrooms","c","some","pc","useTableData","Provider","Table","theme","PartialClassroomItem","PartialHeader","PartialClassroomsTable","Array","fill"],"sourceRoot":""}
@@ -0,0 +1,2 @@
1
+ "use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[7103],{34079:(e,t,n)=>{n.d(t,{O:()=>s});var r=n(32735),a=n(23481),o=n(40782),i=n(36532),l=a.T.encloseNamespace("interactives.pendingIndicator");function c(e){var t="d-flex align-items-center h-100";return t+=e.showLabel?" justify-content-between":" justify-content-center",e.className&&(t+=" ".concat(e.className)),t}function s(e){var t=function(){return r.createElement("div",{className:c(e)},!!e.showLabel&&r.createElement("em",null,l("pending")),r.createElement(o.O,null))};return e.title?r.createElement(i.u,{title:e.title,spanHack:!0,spanHackClassName:e.tooltipClassName||"h-100 w-100 d-flex align-items-center"},r.createElement(t,null)):r.createElement(t,null)}},97364:(e,t,n)=>{n.d(t,{C:()=>o,P:()=>a});var r=n(94892);function a(e,t){switch(e){case"score_desc":return[{id:t,desc:!0}];case"score_asc":return[{id:t,desc:!1}];default:return[]}}function o(e,t){return"marking_required"===e&&!t.awaitingMarking||"helping_hand"===e&&t.percentCorrect>=r.T.HIGH||"not_completed"===e&&!t.unanswered}},6748:(e,t,n)=>{n.d(t,{i:()=>I});var r=n(32735),a=n(42648),o=n(35509),i=n(91967),l=n(15611),c=n(17808),s=n(1287),u=n(83914),d=n(90281),m={opacity:"0.8",cursor:"grabbing"},f=n(35223);function v(e){return function(e){if(Array.isArray(e))return h(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||g(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 g(e,t){if(e){if("string"==typeof e)return h(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)?h(e,t):void 0}}function h(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}function p(e){var t,n,r,a;return{canScrollLeft:(null===(t=e.current)||void 0===t?void 0:t.scrollLeft)>0,canScrollRight:(null===(n=e.current)||void 0===n?void 0:n.scrollLeft)+1<(null===(r=e.current)||void 0===r?void 0:r.scrollWidth)-(null===(a=e.current)||void 0===a?void 0:a.clientWidth)}}const y={sortIndicator:"gFhu0",scrollContainer:"sWUp9",scrollbarTrack:"Vn2qM"};function b(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}var S=function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var a=0;for(r=Object.getOwnPropertySymbols(e);a<r.length;a++)t.indexOf(r[a])<0&&Object.prototype.propertyIsEnumerable.call(e,r[a])&&(n[r[a]]=e[r[a]])}return n};function w(e){var t,n;return e.column.canSort?r.createElement("span",{className:"".concat(y.sortIndicator,"\n ").concat(e.column.isSorted?"":"text-secondary","\n ").concat(null!==(n=null===(t=e.theme)||void 0===t?void 0:t.sortIndicator)&&void 0!==n?n:"")},r.createElement(u.x,{svgName:e.column.isSortedDesc||!e.column.isSorted?f.vn.ArrowRight:f.vn.ArrowLeft,size:u.S.Small})):r.createElement(r.Fragment,null)}function E(e){var t,n,a,u,d,f,g,h,p={columns:e.columns,data:e.data,disableSortBy:!e.enableSort,manualSortBy:e.manualSort,autoResetHiddenColumns:e.autoResetHiddenColumns,autoResetSortBy:e.autoResetSortBy,initialState:{sortBy:e.initialSortBy||[]}};e.initialSelectedRowIds&&(p.initialState={selectedRowIds:(g=e.initialSelectedRowIds,h={},g.forEach((function(e){return h[e]=!0})),h)}),e.getRowId&&(p.getRowId=e.getRowId);var y,S=o.useTable.apply(void 0,[p].concat((y=function(e){var t=[o.useSortBy,o.useRowSelect,"flex"===e.layout?o.useFlexLayout:o.useBlockLayout];return e.allowFiltering&&(t=[].concat(v(t),[o.useFilters])),e.allowGlobalFiltering&&(t=[].concat(v(t),[o.useGlobalFilter])),t}(Object.assign({},e)),function(e){if(Array.isArray(e))return b(e)}(y)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(y)||function(e,t){if(e){if("string"==typeof e)return b(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)?b(e,t):void 0}}(y)||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.")}()))),E=S.getTableProps,I=S.getTableBodyProps,j=S.headerGroups,k=S.rows,O=S.prepareRow,R=S.toggleAllRowsSelected,A=S.setGlobalFilter,C=S.setHiddenColumns,N=S.state.sortBy;function L(){return!k.length&&e.emptyState?e.emptyState:k.map((function(t){O(t);var n=function(t){var n,r,a,o,l,c=i.q.isFunction(null===(n=e.theme)||void 0===n?void 0:n.row)?e.theme.row(t):null!==(a=null===(r=e.theme)||void 0===r?void 0:r.row)&&void 0!==a?a:"";return t.isSelected&&(null===(o=e.theme)||void 0===o?void 0:o.selectedRow)&&(c+=" ".concat(null===(l=e.theme)||void 0===l?void 0:l.selectedRow)),e.onSelectRow&&(c+=" cursor-pointer"),e.enableSortableRows&&(c+=" cursor-grab"),c}(t),a=!!e.getRowAppLink&&e.getRowAppLink(t);function o(){e.onSelectRow&&(e.allowSelectMultipleRows||R(!1),e.onSelectRow(t),t.toggleRowSelected(!0))}function c(e,i){var c=function(e,t){return"dragAttributes"in e&&"dragListeners"in e?Object.assign(Object.assign(Object.assign({},e.dragAttributes),e.dragListeners),{"aria-roledescription":"Sortable row",ref:t}):{}}(e,i);return a?r.createElement("div",{role:"row",key:t.id},r.createElement(l.F,Object.assign({},e,c,{className:n,appLink:a}),F(t))):r.createElement("div",Object.assign({},e,c,{key:t.id,role:"row",className:n,onClick:o}),F(t))}var u=t.getRowProps();return e.enableSortableRows?r.createElement(s.W,{id:t.original.id,key:t.id,childProps:u,childComponent:r.forwardRef((function(e,t){return c(e,t)}))}):c(u)}))}function F(t){return t.cells.map((function(n){var a=function(t,n){var r,a,o="";return"function"==typeof(null===(r=e.theme)||void 0===r?void 0:r.cell)&&(o=e.theme.cell(t,n)),"string"==typeof(null===(a=e.theme)||void 0===a?void 0:a.cell)&&(o=e.theme.cell),e.onSelectCell&&(o+=" cursor-pointer"),o}(t,n);return r.createElement("div",Object.assign({key:n.column.id},n.getCellProps(),{className:a,onClick:function(){e.onSelectCell&&e.onSelectCell(n)}}),n.render("Cell"))}))}return r.useEffect((function(){e.onSort&&e.onSort(N)}),[N]),r.useEffect((function(){e.globalFilter&&A(e.globalFilter)}),[e.globalFilter]),r.useEffect((function(){e.hiddenColumns&&C(e.hiddenColumns)}),[e.hiddenColumns&&e.hiddenColumns.length]),r.createElement("div",Object.assign({},E(),{className:null!==(n=null===(t=e.theme)||void 0===t?void 0:t.table)&&void 0!==n?n:""}),r.createElement("div",{className:null!==(u=null===(a=e.theme)||void 0===a?void 0:a.header)&&void 0!==u?u:""},j.map((function(t){var n,a;return r.createElement("div",Object.assign({},t.getHeaderGroupProps(),{className:null!==(a=null===(n=e.theme)||void 0===n?void 0:n.headerRow)&&void 0!==a?a:""}),t.headers.map((function(t){var n,a;return r.createElement("div",Object.assign({},t.getHeaderProps(t.getSortByToggleProps()),{className:null!==(a=null===(n=e.theme)||void 0===n?void 0:n.headerCell)&&void 0!==a?a:""}),t.render("Header",{renderSortIndicator:function(){return r.createElement(w,{column:t,theme:e.theme})}}),!t.hideSortIndicator&&r.createElement(w,{column:t,theme:e.theme}))})))}))),r.createElement("div",Object.assign({},I(),{className:null!==(f=null===(d=e.theme)||void 0===d?void 0:d.body)&&void 0!==f?f:""}),e.enableSortableRows?r.createElement(c.Q,{ids:k.map((function(e){return e.original.id})),getDragOverlay:function(t){var n,a,o=k.findIndex((function(e){return e.original.id===t})),i=k[o];return r.createElement("div",Object.assign({},e,{className:(n=e.theme,a="g-0 ",n&&(a+=n.row),a),style:m}),F(i))},onSortEnd:e.onSortingRowsEnd},L()):L()))}function I(e){var t=e.enableSlider,n=e.scrollIncrement,o=e.scrollable,l=S(e,["enableSlider","scrollIncrement","scrollable"]),c=function(){var e,t,n=r.useRef(null),a=(e=r.useState(p(n)),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 r,a,o,i,l=[],c=!0,s=!1;try{if(o=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;c=!1}else for(;!(c=(r=o.call(n)).done)&&(l.push(r.value),l.length!==t);c=!0);}catch(e){s=!0,a=e}finally{try{if(!c&&null!=n.return&&(i=n.return(),Object(i)!==i))return}finally{if(s)throw a}}return l}}(e,t)||g(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.")}()),o=a[0],l=a[1],c=i.q.throttle((function(){l(p(n))}),200),s=r.useCallback((function(e){var t;n.current&&(null===(t=n.current)||void 0===t||t.removeEventListener("scroll",c)),e&&(l(p(n)),e.addEventListener("scroll",c)),n.current=e}),[]);return r.useEffect((function(){(null==n?void 0:n.current)&&l(p(n))}),[n]),{ref:s,scrollState:o,scroll:function(e){var t;null===(t=n.current)||void 0===t||t.scrollBy({left:e,top:0,behavior:"smooth"})}}}(),s=c.ref,u=c.scrollState,m=c.scroll;if(o)return r.createElement(a.$B,{renderTrackHorizontal:function(){return r.createElement("div",{className:y.scrollbarTrack})},autoHeightMax:1e4,autoHeight:!0},r.createElement(E,Object.assign({},l)));if(!t)return r.createElement(E,Object.assign({},l));function f(e){m(n*("right"===e?1:-1))}return r.createElement("div",{className:"mx-n4 overflow-x-hidden overflow-y-hidden"},r.createElement("div",{className:"px-4"},r.createElement("div",{className:"position-relative"},r.createElement(d.W,{direction:d.f.Left,onClick:function(){return f("left")},hide:!u.canScrollLeft}),r.createElement("div",{className:"".concat(y.scrollContainer," ").concat(e.scrollContainerClassName),ref:s},r.createElement(E,Object.assign({},l))),r.createElement(d.W,{direction:d.f.Right,onClick:function(){return f("right")},hide:!u.canScrollRight}))))}I.defaultProps={scrollIncrement:250,scrollable:!1,layout:"flex"}},54405:(e,t,n)=>{n.d(t,{X:()=>r});var r={interactive:function(){return{url:"/mocks/insights/interactive.json",key:"demo:interactive",normalize:!1}},interactiveMetadata:function(){return{url:"/mocks/insights/interactive-metadata.json",key:"demo:interactive:metadata",normalize:!1}},interactiveResults:function(){return{url:"/mocks/insights/interactive-results.json",key:"demo:interactive:results",normalize:!1}},videoViews:function(){return{url:"/mocks/insights/video-views.json",key:"demo:video:views",normalize:!1}},users:function(){return{url:"/mocks/insights/users.json",key:"demo:users",normalize:!1}},individualHeatmap:function(){return{url:"/mocks/insights/individual-heatmap.json",key:"demo:individual:heatmap",normalize:!1}},aggregateHeatmap:function(){return{url:"/mocks/insights/aggregate-heatmap.json",key:"demo:aggregate:heatmap",normalize:!1}}}},9566:(e,t,n)=>{n.d(t,{G6:()=>m,GJ:()=>f,VE:()=>g});var r=n(23481),a=n(110),o=n(33518),i=n(2510),l=n(4594),c=n(35223),s=n(14070),u=n(97291),d=r.T.encloseNamespace("myShares.demoInsights"),m={type:i.y.Link,privacy:o.e.JustMySchool,objectId:"0",objectTypeId:l.E.Interactive,viewCount:28,accessCount:15,dateCreated:(new Date).toISOString(),expireDate:null,link:{shortenedEmbedUrl:"",shortenedUrl:""},shareId:"0",ownerCustomerId:0,ownerId:0,recipients:[],options:{preventScrubbing:!1,immediateFeedback:!1}},f={share:m,sharedObject:null,shareRecipients:null,dateShared:a.O.subtract(new Date,7,"days").toISOString()},v={application:u.O.MY_SHARES,action:s.e.MyShares.INTERACTIVE_OVERVIEW_DEMO},g={svgName:c.vn.Analytics,label:d("demoInsights"),appLink:v,group:"insights",className:"btn btn-outline-dark"}},71519:(e,t,n)=>{n.r(t),n.d(t,{InteractiveInsightsQuestionsDemoView:()=>b});var r=n(32735),a=n(23481),o=n(2948),i=n(20354),l=n(26025),c=n(38143),s=n(39151),u=n(54405),d=n(93322),m=n(79612),f=n(9540),v=n(48705),g=n(9566),h=n(10447);function p(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}var y=a.T.encloseNamespace("shared.interactiveInsightsQuestionsView");function b(e){var t,n,a,b,S,w=(b=(0,o.D)(c.g.ANONYMISE_USERS),S=1,function(e){if(Array.isArray(e))return e}(b)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,a,o,i,l=[],c=!0,s=!1;try{if(o=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;c=!1}else for(;!(c=(r=o.call(n)).done)&&(l.push(r.value),l.length!==t);c=!0);}catch(e){s=!0,a=e}finally{try{if(!c&&null!=n.return&&(i=n.return(),Object(i)!==i))return}finally{if(s)throw a}}return l}}(b,S)||function(e,t){if(e){if("string"==typeof e)return p(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)?p(e,t):void 0}}(b,S)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}())[0];(0,d.F)();var E=i.a.useBasicFetch(s.L.config()),I=i.a.useBasicFetch(u.X.interactiveMetadata()),j=i.a.useBasicFetch(u.X.interactive()),k=l.B.getAudienceAppLinkParams(),O=l.B.getDateRangeAppLinkParams(),R=i.a.useBasicFetch(u.X.interactiveResults());(0,m.M)({title:I.data?y("pageTitle",{video:null===(t=I.data)||void 0===t?void 0:t.name}):null});var A=j.data&&I.data&&!!R.data,C=Object.assign(Object.assign({},k),O);return r.createElement("div",{className:"px-3"},r.createElement(f.j,{tabs:(0,h.aq)(null===(n=I.data)||void 0===n?void 0:n.id,"questions",C),video:I.data,dateRangeAppLinkParams:O,share:Object.assign(Object.assign({},g.G6),{objectId:null===(a=I.data)||void 0===a?void 0:a.id}),yearGroups:[],isDemo:!0}),r.createElement(v.x,{interactive:j.data,interactiveMetadata:I.data,interactionId:e.interactionId,config:E.data,sortBy:e.sortBy,isFetching:R.isFetching||j.isFetching,anonymiseUsers:w,results:R.data,hasDataLoaded:A,isDemo:!0}))}}}]);
2
+ //# sourceMappingURL=7103-14bd3771d2-lite.chunk.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scripts/7103-14bd3771d2-lite.chunk.js","mappings":"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","sources":["file:///app/packages/libs/shared/src/apps/analytics/components/pending-indicator/PendingIndicator.tsx","file:///app/packages/libs/shared/src/apps/analytics/utils/StudentTableUtils.ts","file:///app/packages/libs/shared/src/constants/DragOverlayStyles.ts","file:///app/packages/libs/shared/src/components/table/TableUtils.ts","file:///app/packages/libs/shared/src/components/table/table.scss","file:///app/packages/libs/shared/src/components/table/Table.tsx","file:///app/packages/libs/shared/src/flight-requests/InsightsDemoRequests.ts","file:///app/packages/projects/lite/src/apps/my-shares/constants/MySharesDemoInsights.ts","file:///app/packages/projects/lite/src/apps/my-shares/views/demo/questions/InteractiveInsightsQuestionsDemoView.tsx"],"sourcesContent":["import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { PercentageIndicator } from 'libs/shared/components/percentage-indicator/PercentageIndicator';\nimport { Tooltip } from 'libs/shared/components/tooltip/Tooltip';\n\nconst namespace = 'interactives.pendingIndicator';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nfunction getClassName(props: PendingIndicatorProps): string {\n let className = 'd-flex align-items-center h-100';\n\n className += props.showLabel ? ' justify-content-between' : ' justify-content-center';\n\n if (props.className)\n className += ` ${props.className}`;\n\n return className;\n}\n\ninterface PendingIndicatorProps {\n title?: string;\n className?: string;\n showLabel?: boolean;\n tooltipClassName?: string;\n}\n\nexport function PendingIndicator(props: PendingIndicatorProps): JSX.Element {\n const Indicator = () => (\n <div className={getClassName(props)}>\n {!!props.showLabel &&\n <em>{getPhrase('pending')}</em>\n }\n <PercentageIndicator />\n </div>\n );\n\n if (!props.title)\n return <Indicator />;\n\n return (\n <Tooltip title={props.title} spanHack spanHackClassName={props.tooltipClassName || 'h-100 w-100 d-flex align-items-center'}>\n <Indicator />\n </Tooltip>\n );\n}","import { SortingRule } from 'react-table';\n\nimport { ResultsSummary } from 'libs/shared/apps/analytics/interfaces/ResultsSummary';\nimport { ScoreThresholdInsights } from 'libs/shared/constants/ScoreThresholds';\n\nexport type SortStudentsBy = 'score_desc' | 'score_asc';\n\nexport function getSortStudents(sortBy: SortStudentsBy, id: string): SortingRule<any>[] {\n switch (sortBy) {\n case 'score_desc': return [{ id, desc: true }];\n case 'score_asc': return [{ id, desc: false }];\n default: return [];\n }\n}\n\nexport type FilterStudentsBy = 'not_completed' | 'marking_required' | 'helping_hand';\n\nexport function shouldFilterStudent(filter: FilterStudentsBy, summary: ResultsSummary): boolean {\n if (filter === 'marking_required' && !summary.awaitingMarking)\n return true;\n\n if (filter === 'helping_hand' && summary.percentCorrect >= ScoreThresholdInsights.HIGH)\n return true;\n\n if (filter === 'not_completed' && !summary.unanswered)\n return true;\n \n return false;\n}\n\n","export const DragOverlayStyles = { opacity: '0.8', cursor: 'grabbing' };","import React from 'react';\nimport { PluginHook, useBlockLayout, useFilters, useFlexLayout, useGlobalFilter, useRowSelect, useSortBy } from 'react-table';\n\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\nimport { HashObject } from 'libs/common/react/interfaces';\n\ninterface PluginOptions {\n allowFiltering?: boolean;\n allowGlobalFiltering?: boolean;\n layout?: 'flex' | 'block';\n}\n\nexport function getPlugins<T extends HashObject>(props: PluginOptions): PluginHook<T>[] {\n let plugins: PluginHook<T>[] = [\n useSortBy,\n useRowSelect,\n props.layout === 'flex' ? useFlexLayout : useBlockLayout\n ];\n\n if (props.allowFiltering)\n plugins = [\n ...plugins,\n useFilters\n ];\n\n if (props.allowGlobalFiltering)\n plugins = [\n ...plugins,\n useGlobalFilter\n ];\n\n return plugins;\n}\n\nexport function getSelectedRowIds(ids: string[]): Record<string, boolean> {\n const idHash: Record<string, boolean> = {};\n\n ids.forEach(id => idHash[id] = true);\n\n return idHash;\n}\n\ninterface TableScrollState {\n canScrollLeft: boolean;\n canScrollRight: boolean;\n}\n\nfunction calculateScrollState(ref: React.MutableRefObject<HTMLDivElement>): TableScrollState {\n const canScrollLeft = ref.current?.scrollLeft > 0;\n const canScrollRight = (ref.current?.scrollLeft + 1) < ref.current?.scrollWidth - ref.current?.clientWidth;\n\n return { canScrollLeft, canScrollRight };\n}\n\ninterface UseTableScroll {\n ref: (el: HTMLDivElement) => void;\n scrollState: TableScrollState;\n scroll: (scrollBy: number) => void;\n}\n\nexport function useTableScroll(): UseTableScroll {\n const elRef = React.useRef<HTMLDivElement>(null);\n const [ scrollState, setScrollState ] = React.useState<TableScrollState>(calculateScrollState(elRef));\n\n function onScroll(): void {\n setScrollState(calculateScrollState(elRef));\n }\n\n function scroll(scrollBy: number): void {\n elRef.current?.scrollBy({ left: scrollBy, top: 0, behavior: 'smooth' });\n }\n\n const throttledOnScroll = FunctionHelper.throttle(onScroll, 200);\n\n const ref = React.useCallback((el: HTMLDivElement) => {\n if (elRef.current) {\n elRef.current?.removeEventListener('scroll', throttledOnScroll);\n }\n\n if (el) {\n setScrollState(calculateScrollState(elRef));\n el.addEventListener('scroll', throttledOnScroll);\n }\n\n elRef.current = el;\n }, []);\n\n React.useEffect(() => {\n if (elRef?.current) {\n setScrollState(calculateScrollState(elRef));\n }\n }, [elRef]);\n\n return { ref, scrollState, scroll };\n}","// extracted by mini-css-extract-plugin\nexport default {\"sortIndicator\":\"gFhu0\",\"scrollContainer\":\"sWUp9\",\"scrollbarTrack\":\"Vn2qM\"};","import React from 'react';\nimport { Scrollbars } from 'react-custom-scrollbars-2';\nimport {\n Cell,\n Column as BaseColumn,\n HeaderGroup,\n HeaderProps as BaseHeaderProps,\n IdType,\n Row,\n SortingRule,\n TableOptions,\n TableRowProps,\n useTable } from 'react-table';\nimport { DragEndEvent } from '@dnd-kit/core';\n\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\nimport { Core } from 'libs/common/core';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { SortableContainerWrapper } from 'libs/shared/components/sortable/SortableContainerWrapper';\nimport { PropsWithSortableItemProps, SortableItemWrapper } from 'libs/shared/components/sortable/SortableItemWrapper';\nimport { SvgContainer, SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\nimport { WidgetButton, WidgetButtonDirection } from 'libs/shared/components/widgets/widget-button/WidgetButton';\nimport { DragOverlayStyles } from 'libs/shared/constants/DragOverlayStyles';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport { getPlugins, getSelectedRowIds, useTableScroll } from './TableUtils';\n\nimport styles from './table.scss';\n\nexport interface TableTheme {\n table?: string;\n header?: string;\n headerRow?: string;\n headerCell?: string;\n body?: string;\n row?: string | ((row: Row<any>) => string);\n selectedRow?: string;\n cell?: string | ((row?: Row<any>, cell?: Cell<any, any>) => string);\n sortIndicator?: string;\n}\n\nexport type HeaderProps<T extends HashObject> = BaseHeaderProps<T> & {\n renderSortIndicator: () => void;\n}\n\nexport type Column<T extends HashObject> = BaseColumn<T> & {\n hideSortIndicator?: boolean;\n}\n\ninterface SortIndicatorProps<T extends HashObject> {\n column: HeaderGroup<T>;\n theme?: TableTheme;\n}\n\nfunction SortIndicator<T extends HashObject>(props: SortIndicatorProps<T>): JSX.Element {\n if (!props.column.canSort)\n return <></>;\n\n return (\n <span\n className={\n `${styles.sortIndicator}\n ${!props.column.isSorted ? 'text-secondary' : ''}\n ${props.theme?.sortIndicator ?? ''}`\n }\n >\n <SvgContainer\n svgName={(props.column.isSortedDesc || !props.column.isSorted)\n ? cvSvgLibrary.ArrowRight\n : cvSvgLibrary.ArrowLeft\n }\n size={SvgContainerSize.Small}\n />\n </span>\n );\n}\n\ninterface BaseTableProps<T extends HashObject> {\n /**\n * Must be memoized.\n */\n data: T[];\n\n /**\n * Must be memoized.\n * \n * For documentation on Column Options, see https://react-table.tanstack.com/docs/api/useTable#column-options\n */\n columns: Column<T>[];\n\n theme?: TableTheme;\n\n onSelectRow?: (row: Row<T>) => void;\n\n onSelectCell?: (cell: Cell<T>) => void;\n\n onRowMouseOver?: (row: Row<T>) => void;\n\n onRowMouseLeave?: (row: Row<T>) => void;\n\n allowSelectMultipleRows?: boolean;\n\n initialSelectedRowIds?: string[];\n\n getRowId?: (row: T) => string;\n\n getRowAppLink?: (row: Row<T>) => Core.AppLink;\n\n enableSort?: boolean;\n\n manualSort?: boolean;\n\n onSort?: (sortingRule: SortingRule<T>[]) => void;\n \n // Opt-in to utilise react-table's useFilter hook.\n allowFiltering?: boolean;\n\n // Opt-in to utilise react-table's useGlobalFilter hook.\n allowGlobalFiltering?: boolean;\n\n // Use either a flex layout or a block layout. Default is flex.\n layout?: 'flex' | 'block';\n\n // Used by useGlobalFilter hook, needs to be enabled by prop above.\n globalFilter?: string;\n\n // Set initial state of hidden columns in react-table.\n hiddenColumns?: IdType<T>[];\n\n // Determine whether hidden columns should be preserved on a table update event.\n autoResetHiddenColumns?: boolean;\n\n // Determine whether sort order state should be preserved on a table update event.\n autoResetSortBy?: boolean;\n\n // Determine whether rows are sortable by drag and drop\n enableSortableRows?: boolean;\n\n onSortingRowsEnd?: (event: DragEndEvent) => void;\n\n // Set initial state of sorting in react-table\n initialSortBy?: SortingRule<T>[];\n\n emptyState?: JSX.Element;\n}\n \ntype SortableRowProps = PropsWithSortableItemProps<TableRowProps>;\n\nfunction BaseTable<T extends HashObject>(props: BaseTableProps<T>): JSX.Element {\n const tableOptions: TableOptions<T> = {\n columns: props.columns,\n data: props.data,\n disableSortBy: !props.enableSort,\n manualSortBy: props.manualSort,\n autoResetHiddenColumns: props.autoResetHiddenColumns,\n autoResetSortBy: props.autoResetSortBy,\n initialState: {\n sortBy: props.initialSortBy || []\n }\n };\n\n if (props.initialSelectedRowIds)\n tableOptions.initialState = { selectedRowIds: getSelectedRowIds(props.initialSelectedRowIds) };\n\n if (props.getRowId)\n tableOptions.getRowId = props.getRowId;\n\n const {\n getTableProps,\n getTableBodyProps,\n headerGroups,\n rows,\n prepareRow,\n toggleAllRowsSelected,\n setGlobalFilter,\n setHiddenColumns,\n state: { sortBy }\n } = useTable<T>(tableOptions, ...getPlugins<T>({ ...props }));\n\n function getTableRowsClass(row: Row<T>) {\n let className = FunctionHelper.isFunction(props.theme?.row)\n ? props.theme.row(row)\n : props.theme?.row ?? '';\n\n if (row.isSelected && props.theme?.selectedRow)\n className += ` ${props.theme?.selectedRow}`;\n\n if (props.onSelectRow)\n className += ' cursor-pointer';\n\n if (props.enableSortableRows)\n className += ' cursor-grab';\n\n return className;\n }\n\n function renderTableRows() {\n if (!rows.length && props.emptyState)\n return props.emptyState;\n \n return rows.map(row => {\n prepareRow(row);\n \n const className = getTableRowsClass(row);\n const rowAppLink = !!props.getRowAppLink && props.getRowAppLink(row);\n\n function onClickRow(): void {\n if (!props.onSelectRow)\n return;\n\n if (!props.allowSelectMultipleRows)\n toggleAllRowsSelected(false);\n \n props.onSelectRow(row);\n row.toggleRowSelected(true);\n }\n\n function getSortableProps(props: TableRowProps | PropsWithSortableItemProps<TableRowProps>, ref?: any) {\n if ('dragAttributes' in props && 'dragListeners' in props) {\n return {\n ...props.dragAttributes,\n ...props.dragListeners,\n 'aria-roledescription': 'Sortable row',\n ref\n };\n }\n\n return {};\n }\n\n function renderRow(props: TableRowProps | PropsWithSortableItemProps<TableRowProps>, ref?: any): JSX.Element {\n const sortableProps = getSortableProps(props, ref);\n\n if (rowAppLink) {\n return (\n <div\n role='row'\n key={row.id}\n >\n <AppLink\n {...props}\n {...sortableProps}\n className={className}\n appLink={rowAppLink}\n >\n {renderCells(row)}\n </AppLink>\n </div>\n );\n }\n\n return (\n <div\n {...props}\n {...sortableProps}\n key={row.id}\n role='row'\n className={className}\n onClick={onClickRow}\n >\n {renderCells(row)}\n </div>\n );\n }\n\n const rowProps = row.getRowProps();\n\n if (props.enableSortableRows) {\n return (\n <SortableItemWrapper\n id={row.original.id}\n key={row.id}\n childProps={rowProps}\n childComponent={React.forwardRef(\n (props: SortableRowProps, ref: React.LegacyRef<HTMLDivElement>) => (renderRow(props, ref))\n )}\n />\n );\n }\n\n return renderRow(rowProps);\n });\n }\n\n function getDragOverlayClassName(theme: TableTheme): string {\n let className = 'g-0 ';\n\n if (theme)\n className += theme.row;\n\n return className;\n }\n\n function getDragOverlay(id: string) {\n const rowIndex = rows.findIndex(item => item.original.id === id);\n const row = rows[rowIndex];\n \n return (\n <div\n {...props}\n className={getDragOverlayClassName(props.theme)}\n style={DragOverlayStyles}\n >\n {renderCells(row)}\n </div>\n );\n }\n\n function getCellClassName(row: Row<T>, cell: Cell<T>): string {\n let cellClassName = '';\n\n if (typeof props.theme?.cell === 'function')\n cellClassName = props.theme.cell(row, cell);\n\n if (typeof props.theme?.cell === 'string')\n cellClassName = props.theme.cell;\n\n if (props.onSelectCell)\n cellClassName += ' cursor-pointer';\n\n return cellClassName;\n }\n\n function renderCells(row: Row<T>): JSX.Element[] {\n return row.cells.map(cell => {\n const cellClassName = getCellClassName(row, cell);\n\n function onClickCell(): void {\n props.onSelectCell && props.onSelectCell(cell);\n }\n\n return (\n <div key={cell.column.id} {...cell.getCellProps()} className={cellClassName} onClick={onClickCell} >\n {cell.render('Cell')}\n </div>\n );\n });\n }\n\n React.useEffect(() => {\n if (!props.onSort)\n return;\n\n props.onSort(sortBy);\n }, [sortBy]);\n\n React.useEffect(() => {\n if (!props.globalFilter)\n return;\n\n setGlobalFilter(props.globalFilter);\n }, [props.globalFilter]);\n\n React.useEffect(() => {\n if (!props.hiddenColumns)\n return;\n\n setHiddenColumns(props.hiddenColumns);\n }, [props.hiddenColumns && props.hiddenColumns.length]);\n\n return (\n <div {...getTableProps()} className={props.theme?.table ?? ''}>\n <div className={props.theme?.header ?? ''}>\n {headerGroups.map(headerGroup => (\n <div {...headerGroup.getHeaderGroupProps()} className={props.theme?.headerRow ?? ''}>\n {headerGroup.headers.map(column => (\n <div {...column.getHeaderProps(column.getSortByToggleProps())} className={props.theme?.headerCell ?? ''}>\n {column.render('Header', { renderSortIndicator: () => <SortIndicator column={column} theme={props.theme} /> })}\n {!(column as Column<T>).hideSortIndicator &&\n <SortIndicator column={column} theme={props.theme} />\n }\n </div>\n ))}\n </div>\n ))}\n </div>\n <div {...getTableBodyProps()} className={props.theme?.body ?? ''}>\n { props.enableSortableRows ? (\n <SortableContainerWrapper\n ids={rows.map(row => row.original.id)}\n getDragOverlay={getDragOverlay}\n onSortEnd={props.onSortingRowsEnd}\n >\n {renderTableRows()}\n </SortableContainerWrapper>\n ) : (\n renderTableRows()\n )}\n </div>\n </div>\n );\n}\n\ninterface TableProps<T extends HashObject> extends BaseTableProps<T> {\n enableSlider?: boolean;\n scrollIncrement?: number;\n scrollContainerClassName?: string;\n scrollable?: boolean;\n initialSortBy?: SortingRule<T>[];\n}\n\nTable.defaultProps = {\n scrollIncrement: 250,\n scrollable: false,\n layout: 'flex'\n};\n\nexport function Table<T extends HashObject>(props: TableProps<T>): JSX.Element {\n const { enableSlider, scrollIncrement, scrollable, ...tableProps } = props;\n\n const { ref, scrollState, scroll } = useTableScroll();\n\n if (scrollable) {\n return (\n <Scrollbars\n renderTrackHorizontal={() => <div className={styles.scrollbarTrack} />}\n autoHeightMax={10000}\n autoHeight\n >\n <BaseTable {...tableProps} />\n </Scrollbars>\n );\n }\n\n if (!enableSlider)\n return <BaseTable {...tableProps} />;\n\n function onClickScroll(direction: 'left' | 'right'): void {\n scroll(scrollIncrement * (direction === 'right' ? 1 : -1));\n }\n\n return (\n <div className='mx-n4 overflow-x-hidden overflow-y-hidden'>\n <div className='px-4'>\n <div className='position-relative'>\n <WidgetButton\n direction={WidgetButtonDirection.Left}\n onClick={() => onClickScroll('left')}\n hide={!scrollState.canScrollLeft}\n />\n <div className={`${styles.scrollContainer} ${props.scrollContainerClassName}`} ref={ref}>\n <BaseTable {...tableProps } />\n </div>\n <WidgetButton\n direction={WidgetButtonDirection.Right}\n onClick={() => onClickScroll('right')}\n hide={!scrollState.canScrollRight}\n />\n </div>\n </div>\n </div>\n );\n}","import { Flight } from 'libs/common/react/index';\n\nexport const InsightsDemoRequests = {\n interactive(): Flight.Request {\n return {\n url: `/mocks/insights/interactive.json`,\n key: `demo:interactive`,\n normalize: false\n };\n },\n\n interactiveMetadata(): Flight.Request {\n return {\n url: `/mocks/insights/interactive-metadata.json`,\n key: `demo:interactive:metadata`,\n normalize: false\n };\n },\n\n interactiveResults(): Flight.Request {\n return {\n url: `/mocks/insights/interactive-results.json`,\n key: `demo:interactive:results`,\n normalize: false\n };\n },\n\n videoViews(): Flight.Request {\n return {\n url: `/mocks/insights/video-views.json`,\n key: `demo:video:views`,\n normalize: false\n };\n },\n\n users(): Flight.Request {\n return {\n url: `/mocks/insights/users.json`,\n key: `demo:users`,\n normalize: false\n };\n },\n\n individualHeatmap(): Flight.Request {\n return {\n url: `/mocks/insights/individual-heatmap.json`,\n key: `demo:individual:heatmap`,\n normalize: false\n };\n },\n\n aggregateHeatmap(): Flight.Request {\n return {\n url: `/mocks/insights/aggregate-heatmap.json`,\n key: `demo:aggregate:heatmap`,\n normalize: false\n };\n }\n};","import { Core } from 'libs/common/backbone/index';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { DateHelper } from 'libs/common/react/utils/DateHelper';\n\nimport { SharePrivacy } from 'libs/shared/apps/share-v2/enums/SharePrivacy';\nimport { ShareType } from 'libs/shared/apps/share-v2/enums/ShareType';\nimport { Share } from 'libs/shared/apps/share-v2/interfaces/Share';\nimport { ActionOptions } from 'libs/shared/components/actions/Actions';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\n\nimport { MySharesTableData } from 'apps/my-shares/components/my-shares-table/MySharesTableUtils';\n\nconst namespace = 'myShares.demoInsights';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nconst DEMO_INSIGHT_DAYS_AGO = 7;\n\nexport const DEMO_INSIGHTS_SHARE: Share = {\n type: ShareType.Link,\n privacy: SharePrivacy.JustMySchool,\n objectId: '0',\n objectTypeId: MasterType.Interactive,\n viewCount: 28,\n accessCount: 15,\n dateCreated: new Date().toISOString(),\n expireDate: null,\n link: {\n shortenedEmbedUrl: '',\n shortenedUrl: ''\n },\n shareId: '0',\n ownerCustomerId: 0,\n ownerId: 0,\n recipients: [],\n options: {\n preventScrubbing: false,\n immediateFeedback: false\n }\n};\n\nexport const DEMO_INSIGHTS_SHARE_TABLE_DATA: MySharesTableData = {\n share: DEMO_INSIGHTS_SHARE,\n sharedObject: null,\n shareRecipients: null,\n dateShared: DateHelper.subtract(new Date(), DEMO_INSIGHT_DAYS_AGO, 'days').toISOString()\n};\n\nconst DEMO_INSIGHTS_APPLINK: Core.AppLink = {\n application: AppChannels.MY_SHARES,\n action: Actions.MyShares.INTERACTIVE_OVERVIEW_DEMO\n};\n\nexport const DEMO_INSIGHTS_ACTION: ActionOptions = {\n svgName: cvSvgLibrary.Analytics,\n label: getPhrase('demoInsights'),\n appLink: DEMO_INSIGHTS_APPLINK,\n group: 'insights',\n className: 'btn btn-outline-dark'\n};\n","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { useViewModel } from 'libs/common/react/hooks/UseViewModel';\nimport { Flight } from 'libs/common/react/index';\n\nimport { AnalyticsFilterHelper } from 'libs/shared/apps/analytics/utils/AnalyticsFilterUtils';\nimport { SortStudentsBy } from 'libs/shared/apps/analytics/utils/StudentTableUtils';\nimport { SharedViewModelKeys } from 'libs/shared/constants/SharedViewModelKeys';\nimport { ConfigRequests } from 'libs/shared/flight-requests/ConfigRequests';\nimport { InsightsDemoRequests } from 'libs/shared/flight-requests/InsightsDemoRequests';\nimport { useLockContentWidth } from 'libs/shared/hooks/useLockContentWidth';\nimport { useSetPageMetadata } from 'libs/shared/hooks/useSetPageMetadata';\nimport { Config, Interactive, InteractiveMetadata, InteractiveResultSet } from 'libs/shared/interfaces';\n\nimport { InsightsHeader } from 'apps/my-shares/components/insights-header/InsightsHeader';\nimport { InteractiveInsightsQuestions } from 'apps/my-shares/components/interactive-insights-questions/InteractiveInsightsQuestions';\nimport { DEMO_INSIGHTS_SHARE } from 'apps/my-shares/constants/MySharesDemoInsights';\nimport { getInsightsDemoInteractiveTabs } from 'apps/my-shares/utils/InsightsAppLinkUtils';\n\nconst namespace = 'shared.interactiveInsightsQuestionsView';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface InteractiveInsightsQuestionsViewProps {\n interactionId: string;\n sortBy: SortStudentsBy;\n}\n\nexport function InteractiveInsightsQuestionsDemoView(props: InteractiveInsightsQuestionsViewProps) {\n const [anonymiseUsers] = useViewModel<boolean>(SharedViewModelKeys.ANONYMISE_USERS);\n\n useLockContentWidth();\n\n const config = Flight.useBasicFetch<Config>(ConfigRequests.config());\n\n const interactiveMetadata = Flight.useBasicFetch<InteractiveMetadata>(\n InsightsDemoRequests.interactiveMetadata()\n );\n\n const interactive = Flight.useBasicFetch<Interactive>(InsightsDemoRequests.interactive());\n\n const audienceAppLinkParams = AnalyticsFilterHelper.getAudienceAppLinkParams();\n const dateRangeAppLinkParams = AnalyticsFilterHelper.getDateRangeAppLinkParams();\n\n const results = Flight.useBasicFetch<InteractiveResultSet>(InsightsDemoRequests.interactiveResults());\n\n useSetPageMetadata({ title: interactiveMetadata.data ? getPhrase('pageTitle', { video: interactiveMetadata.data?.name }) : null });\n\n const hasDataLoaded = interactive.data && interactiveMetadata.data && !!results.data;\n\n const params = {\n ...audienceAppLinkParams,\n ...dateRangeAppLinkParams\n };\n\n return (\n <div className='px-3'>\n <InsightsHeader\n tabs={getInsightsDemoInteractiveTabs(interactiveMetadata.data?.id, 'questions', params)}\n video={interactiveMetadata.data}\n dateRangeAppLinkParams={dateRangeAppLinkParams}\n share={{\n ...DEMO_INSIGHTS_SHARE,\n objectId: interactiveMetadata.data?.id\n }}\n yearGroups={[]}\n isDemo\n />\n\n <InteractiveInsightsQuestions\n interactive={interactive.data}\n interactiveMetadata={interactiveMetadata.data}\n interactionId={props.interactionId}\n config={config.data}\n sortBy={props.sortBy}\n isFetching={results.isFetching || interactive.isFetching}\n anonymiseUsers={anonymiseUsers}\n results={results.data}\n hasDataLoaded={hasDataLoaded}\n isDemo\n />\n </div>\n );\n}"],"names":["getPhrase","getClassName","props","className","showLabel","PendingIndicator","Indicator","title","spanHack","spanHackClassName","tooltipClassName","getSortStudents","sortBy","id","desc","shouldFilterStudent","filter","summary","awaitingMarking","percentCorrect","unanswered","DragOverlayStyles","opacity","cursor","calculateScrollState","ref","canScrollLeft","current","scrollLeft","canScrollRight","scrollWidth","clientWidth","SortIndicator","column","canSort","isSorted","theme","sortIndicator","SvgContainer","svgName","isSortedDesc","size","S","BaseTable","ids","idHash","tableOptions","columns","data","disableSortBy","enableSort","manualSortBy","manualSort","autoResetHiddenColumns","autoResetSortBy","initialState","initialSortBy","initialSelectedRowIds","selectedRowIds","forEach","getRowId","useTable","plugins","useSortBy","useRowSelect","layout","useFlexLayout","useBlockLayout","allowFiltering","useFilters","allowGlobalFiltering","useGlobalFilter","getPlugins","getTableProps","getTableBodyProps","headerGroups","rows","prepareRow","toggleAllRowsSelected","setGlobalFilter","setHiddenColumns","state","renderTableRows","length","emptyState","map","row","FunctionHelper","isSelected","selectedRow","onSelectRow","enableSortableRows","getTableRowsClass","rowAppLink","getRowAppLink","onClickRow","allowSelectMultipleRows","toggleRowSelected","renderRow","sortableProps","dragAttributes","dragListeners","getSortableProps","role","key","AppLink","appLink","renderCells","onClick","rowProps","getRowProps","SortableItemWrapper","original","childProps","childComponent","cells","cell","cellClassName","onSelectCell","getCellClassName","getCellProps","render","onSort","globalFilter","hiddenColumns","table","header","headerGroup","getHeaderGroupProps","headerRow","headers","getHeaderProps","getSortByToggleProps","headerCell","renderSortIndicator","hideSortIndicator","body","SortableContainerWrapper","getDragOverlay","rowIndex","findIndex","item","style","onSortEnd","onSortingRowsEnd","Table","enableSlider","scrollIncrement","scrollable","tableProps","elRef","scrollState","setScrollState","throttledOnScroll","el","removeEventListener","addEventListener","scroll","scrollBy","left","top","behavior","useTableScroll","renderTrackHorizontal","autoHeightMax","autoHeight","onClickScroll","direction","WidgetButton","W","hide","scrollContainerClassName","defaultProps","InsightsDemoRequests","interactive","url","normalize","interactiveMetadata","interactiveResults","videoViews","users","individualHeatmap","aggregateHeatmap","DEMO_INSIGHTS_SHARE","type","privacy","objectId","objectTypeId","viewCount","accessCount","dateCreated","Date","toISOString","expireDate","link","shortenedEmbedUrl","shortenedUrl","shareId","ownerCustomerId","ownerId","recipients","options","preventScrubbing","immediateFeedback","DEMO_INSIGHTS_SHARE_TABLE_DATA","share","sharedObject","shareRecipients","dateShared","DEMO_INSIGHTS_APPLINK","application","action","DEMO_INSIGHTS_ACTION","label","group","InteractiveInsightsQuestionsDemoView","anonymiseUsers","config","audienceAppLinkParams","dateRangeAppLinkParams","results","video","name","hasDataLoaded","params","tabs","yearGroups","isDemo","interactionId","isFetching"],"sourceRoot":""}
@@ -0,0 +1,2 @@
1
+ "use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[7148],{41196:(e,t,n)=>{n.d(t,{W:()=>o});var r=n(20354),a=n(93479),i=n(20768),s=n(31949);function o(e,t,n){var o,c=r.a.useBasicFetch(s.N.currentUser()),l=r.a.useBasicFetch(!!e&&i.b.interactiveMetadata(e)),u=r.a.useBasicFetch(!!(null===(o=l.data)||void 0===o?void 0:o.interactiveId)&&i.b.interactive(l.data.interactiveId)),d=!!c.data&&!!u.data;return r.a.useBasicFetch(d&&a.I.interactiveResultSet(l.data.interactiveId,l.data.id,c.data,t,n))}},26136:(e,t,n)=>{n.d(t,{B:()=>o});var r=n(76198),a=n(23481),i=n(64818),s=a.T.encloseNamespace("shared.analyticsUtils");function o(e,t){return e?t?(0,r._8)((n=e.id,a=e.sessionId,o=+"".concat(n||function(e){if(!e)return 0;for(var t=0,n=0;n<e.length;n++)t=(t<<5)-t+e.charCodeAt(n),t|=0;return Math.abs(t)}(a)).concat(Math.floor((new Date).getMinutes()/5)),{dictionaries:[r.O9,r.yd],separator:" ",length:2,style:"capital",seed:o})):i.l.getFullName(e)||s("anonUser"):s("anonUser");var n,a,o}},2510:(e,t,n)=>{var r;n.d(t,{y:()=>r}),function(e){e.Link="Link",e.Classroom="Classroom",e.Open="Open",e.Live="Live",e.LegacyDirect="LegacyDirect"}(r||(r={}))},18488:(e,t,n)=>{n.d(t,{o:()=>s});var r=n(99940),a=n(97395),i={namespace:"share-v2"},s={createShare:function(e){return{url:"{gateway}/v2/shares",key:"create:share-v2",type:r.k.POST,data:e,normalizeOptions:i,invalidationKeys:["sent:share-v2","get:share-v2:shares:object:".concat(e.objectId)]}},updateShare:function(e,t){return{url:"{gateway}/v2/shares/".concat(e),key:"update:share-v2",type:r.k.PUT,data:t,normalizeOptions:i,invalidationKeys:["share-v2:permanent-link:object","share-v2:".concat(e)]}},deleteShare:function(e){return{type:r.k.DELETE,url:"{gateway}/v2/shares/".concat(e),key:"delete:share-v2",normalizeOptions:i,invalidationKeys:["share-v2:permanent-link:object","sent:share-v2","share-v2:".concat(e)]}},getShare:function(e){return{url:"{gateway}/v2/shares/".concat(e),key:"share-v2:".concat(e),bootstrapName:"share-v2:".concat(e),type:r.k.GET,normalizeOptions:i}},getSentShares:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=Object.values(e).sort().join(":");return{url:a._.urlBuilder("{gateway}/v2/shares/sent",e),key:"sent:share-v2:".concat(t),type:r.k.GET,normalize:!1}},getShareLink:function(e){return{url:a._.urlBuilder("{gateway}/v2/shares/permanent-link",{objectId:e}),key:"share-v2:permanent-link:object:".concat(e),normalizeOptions:i}},createShareLink:function(e){return{type:r.k.POST,url:a._.urlBuilder("{gateway}/v2/shares/permanent-link",Object.assign({},e)),key:"create:share-v2:permanent-link:object:".concat(e.objectId),invalidationKeys:["share-v2:permanent-link:object:".concat(e.objectId),"sent:share-v2"],normalizeOptions:i}},getPrivacy:function(e){return{url:"{gateway}/v1/objects/".concat(e,"/access"),key:"privacy:".concat(e),normalize:!1}},getSharesByObjectId:function(e){return{url:"{gateway}/v2/shares/objects/".concat(e),key:"get:share-v2:shares:object:".concat(e),type:r.k.GET,normalizeOptions:i}},createSharePincode:function(e){return{url:"{gateway}/v2/shares/".concat(e,"/pincode"),key:"create:share-v2:".concat(e,":pincode"),type:r.k.POST}},getPincodeByShareId:function(e){return{url:"{gateway}/v2/shares/".concat(e,"/pincode"),key:"get:share-v2:".concat(e,":pincode")}},getPincodeByCode:function(e){return{url:"{gateway}/v2/shares/pincode?code=".concat(e),key:"get:share-v2:pincode:".concat(e)}}}},3218:(e,t,n)=>{n.d(t,{R:()=>S});var r=n(32735),a=n(69087),i=n(26136),s=n(39157),o=n(69186),c=n(86572),l=n(28972),u=n(83140),d=n(80845),m=n(23481),v=n(2102),f=n(36532),h=m.T.encloseNamespace("interactives.studentResponseList");function y(e){var t=Object.keys(e.markedAnswers).length;return r.createElement("div",{className:"d-flex justify-content-end pt-3"},r.createElement("div",null,!e.showSubmitButtonSpinner&&r.createElement("button",{className:"btn btn-link",onClick:e.onClickClose},h("close")),!!e.interactionsToMark.length&&r.createElement(r.Fragment,null,e.isDemo?r.createElement(f.u,{id:"submitAnswers",title:h("demoOnly"),spanHack:!0,spanHackClassName:"d-inline-flex"},r.createElement("button",{className:"btn btn-outline-dark pointer-events-none",disabled:!t},h("submitAnswers"))):r.createElement(v.m,{variant:"outline-dark",onClick:e.onClickSubmit,disabled:!t,showSpinner:e.showSubmitButtonSpinner},h("submitAnswers")))))}var p=m.T.encloseNamespace("interactives.studentResponseList");function b(e){var t=Object.keys(e.markedAnswers).length;return r.createElement("div",{className:"d-flex justify-content-between pb-3"},r.createElement("div",{className:"d-flex"},!!e.summary.unanswered&&r.createElement("div",{className:"bg-light rounded p-2 me-2"},r.createElement("strong",{className:"me-2"},p("unanswered")),e.summary.unanswered),r.createElement("div",{className:"bg-light rounded p-2 me-2"},r.createElement("strong",{className:"me-2"},p("score")),e.summary.awaitingMarking?r.createElement("em",null,p("pending")):"".concat(Math.round(100*e.summary.percentCorrect),"%"))),!!e.interactionsToMark.length&&r.createElement(r.Fragment,null,e.isDemo?r.createElement(f.u,{id:"submitAnswers",title:p("demoOnly"),spanHack:!0},r.createElement("button",{className:"btn btn-outline-dark pointer-events-none",disabled:!t},p("submitAnswers"))):r.createElement(v.m,{variant:"outline-dark",onClick:e.onClickSubmit,disabled:!t,showSpinner:e.showSubmitButtonSpinner},p("submitAnswers"))))}const g={awaitingMarking:"MvGb5"};function k(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 r,a,i,s,o=[],c=!0,l=!1;try{if(i=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;c=!1}else for(;!(c=(r=i.call(n)).done)&&(o.push(r.value),o.length!==t);c=!0);}catch(e){l=!0,a=e}finally{try{if(!c&&null!=n.return&&(s=n.return(),Object(s)!==s))return}finally{if(l)throw a}}return o}}(e,t)||function(e,t){if(e){if("string"==typeof e)return w(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)?w(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 w(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}function S(e){var t,n,m,v,f=k(r.useState(!1),2),h=f[0],p=f[1],w=(t=r.useRef(null),n=k(r.useState(!1),2),m=n[0],v=n[1],r.useEffect((function(){t.current&&!m&&(v(!0),requestAnimationFrame((function(){return t.current.scrollIntoView({behavior:"smooth",block:"center"})})))}),[t.current,m]),t),S=(0,s.Rt)(e.interactive,e.studentResults),C=(0,d.Q)(e.interactive),I=function(e,t){return e.filter((function(e){return u.A.isInteractionCorrect(e,(0,d.j_)(t))===l.w.AwaitingMarking}))}(C,e.studentResults);function A(){p(!0),e.submitMarkedAnswers()}return r.createElement(r.Fragment,null,r.createElement(b,{summary:S,interactionsToMark:I,markedAnswers:e.markedAnswers,onClickSubmit:A,showSubmitButtonSpinner:h,isDemo:e.isDemo}),r.createElement("ul",{className:"list-unstyled"},C.map((function(t,n){var l,u=t.id.toString()===(null===(l=e.selectedInteractionId)||void 0===l?void 0:l.toString()),d=I.some((function(e){return e.id===t.id})),m=(0,i.B)(e.studentResults.user,e.anonymiseUsers),v="p-2 mb-3 rounded";return u&&(v+=" border-2 border-info shadow"),v+=d?" ".concat(g.awaitingMarking):" border",r.createElement("li",{key:n,className:v,ref:u?w:null},r.createElement("div",{className:"d-flex mb-2"},r.createElement(c.y,{interaction:t,iconClassName:"flex-shrink-0"})),e.reportsStyling?r.createElement(o.O,{interaction:t,studentResults:e.studentResults,markedStatus:(0,s.HI)(t.id,e.studentResults,e.markedAnswers),markInteraction:e.addMarkedAnswers,imageCdnUrl:e.imageCdnUrl,anonymisedUserName:m,className:"bg-light ps-2",showFeedback:!0,reportsStyling:!0,responseComponentClass:"mx-n2"}):r.createElement(a.d,{interaction:t,studentResults:e.studentResults,markedStatus:(0,s.HI)(t.id,e.studentResults,e.markedAnswers),markInteraction:e.addMarkedAnswers,imageCdnUrl:e.imageCdnUrl,anonymisedUserName:m,showFeedback:!0}))}))),r.createElement(y,{interactionsToMark:I,markedAnswers:e.markedAnswers,onClickSubmit:A,onClickClose:e.onClickClose,showSubmitButtonSpinner:h,isDemo:e.isDemo}))}},94892:(e,t,n)=>{n.d(t,{T:()=>a,i:()=>r});var r={HIGH:.75,MODERATE:.5},a={HIGH:.7,MODERATE:.7}},94644:(e,t,n)=>{n.d(t,{r:()=>u});var r=n(50242),a=n(81886),i=n(67058),s=n(14553),o=n(49267),c=n(49075),l={notFound:i.d,forbidden:{rating:s.q,yearLevel:s.q,region:o.a,privacy:s.q},badRequest:c._,internalServerError:c._};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 s=Object.assign(Object.assign({},l),t);i&&a.Q.Ry.isStatusCodeError(i)&&(i!==r.o.InternalServer?i!==r.o.NotFound?i!==r.o.Forbidden?n.badRequest||a.Q.Ry.throw(new s.badRequest):n.forbidden||a.Q.Ry.throw(new s.forbidden.privacy):n.notFound||a.Q.Ry.throw(new s.notFound):n.internalServerError||a.Q.Ry.throw(new c._))}}},91286:(e,t,n)=>{n.d(t,{v:()=>s});var r=n(32735),a=n(94644);function i(e){return e.map((function(e){return e.statusCode})).join(":")}function s(e,t,n){var s=Array.isArray(e)?e:[e];(0,r.useEffect)((function(){s.forEach((function(e){(0,a.r)(e.statusCode,t,n)}))}),[i(s),t,n])}},9447:(e,t,n)=>{n.d(t,{Y:()=>s});var r=n(20354),a=n(30439);function i(e){return i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},i(e)}function s(e){var t,n=r.a.useBasicFetch(a.o.getAnonSessions(e));return{items:(null===(t=n.data)||void 0===t?void 0:t.reduce((function(e,t){return Object.assign(Object.assign({},e),(n={},r=t.sessionId,a={sessionId:(s=t).sessionId,name:s.sessionName},(r=function(e){var t=function(e){if("object"!=i(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!=i(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==i(t)?t:t+""}(r))in n?Object.defineProperty(n,r,{value:a,enumerable:!0,configurable:!0,writable:!0}):n[r]=a,n));var n,r,a,s}),{}))||{},hasCompleted:n.hasCompleted}}},5780:(e,t,n)=>{n.d(t,{p:()=>l});var r=n(20354),a=n(2510),i=n(18488),s=n(4594),o=n(3010),c=n(88630);function l(e){var t,n,l,u,d=r.a.useGetFetch(),m=r.a.useBasicFetch(i.o.getShare(e)),v=(null===(t=m.data)||void 0===t?void 0:t.type)===a.y.Classroom&&(null===(u=null===(l=null===(n=m.data)||void 0===n?void 0:n.recipients)||void 0===l?void 0:l.find((function(e){return e.recipientTypeId===s.E.Classroom})))||void 0===u?void 0:u.recipientId),f=function(e){return c.F.getClassroomStudents(v,e)},h=(0,o.i)(v&&f,(function(e){return d(f(e))}));return Object.assign(Object.assign({},h),{hasCompleted:!v||h.hasCompleted})}},52389:(e,t,n)=>{n.d(t,{_:()=>d});var r=n(20354),a=n(41196),i=n(18488),s=n(91286),o=n(9447),c=n(5780);function l(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}var u=[{id:"0",attempts:[{id:"0",answeredAt:0,answers:[]}]}];function d(e){var t,n,d=r.a.useBasicFetch(i.o.getShare(e)),m=(0,a.W)(null===(t=d.data)||void 0===t?void 0:t.objectId,null,!0),v=(0,o.Y)(e),f=(0,c.p)(e);(0,s.v)(m);var h=m.hasCompleted&&v.hasCompleted&&f.hasCompleted;if(!h)return{data:null,hasCompleted:!1};var y,p=new Set,b=m.data.students.map((function(e){return e.user?(p.add(e.user.id),e):Object.assign(Object.assign({},e),{user:v.items[e.sessionId]||{sessionId:e.sessionId}})}));return(null===(n=null==f?void 0:f.items)||void 0===n?void 0:n.length)&&b.push.apply(b,function(e){if(Array.isArray(e))return l(e)}(y=f.items.filter((function(e){return!p.has(e.id)})).map((function(e){return{user:e,results:u}})))||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(y)||function(e,t){if(e){if("string"==typeof e)return l(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)?l(e,t):void 0}}(y)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),{hasCompleted:h,data:Object.assign(Object.assign({},m.data),{students:b})}}},2900:(e,t,n)=>{n.r(t),n.d(t,{InsightsStudentResultsView:()=>g});var r=n(32735),a=n(23481),i=n(20354),s=n(2948),o=n(9193),c=n(26136),l=n(18488),u=n(3218),d=n(9111),m=n(38143),v=n(39151),f=n(20768),h=n(91286),y=n(52389);function p(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}var b=a.T.encloseNamespace("shared.insightsStudentResults");function g(e){var t,n,a,g,k,w,S,C=(w=(0,s.D)(m.g.ANONYMISE_USERS),S=1,function(e){if(Array.isArray(e))return e}(w)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,a,i,s,o=[],c=!0,l=!1;try{if(i=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;c=!1}else for(;!(c=(r=i.call(n)).done)&&(o.push(r.value),o.length!==t);c=!0);}catch(e){l=!0,a=e}finally{try{if(!c&&null!=n.return&&(s=n.return(),Object(s)!==s))return}finally{if(l)throw a}}return o}}(w,S)||function(e,t){if(e){if("string"==typeof e)return p(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)?p(e,t):void 0}}(w,S)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}())[0],I=i.a.useBasicFetch(v.L.config()),A=i.a.useBasicFetch(l.o.getShare(e.shareId)),E=i.a.useBasicFetch((null===(t=A.data)||void 0===t?void 0:t.objectId)&&f.b.interactiveMetadata(A.data.objectId)),j=i.a.useBasicFetch((null===(n=E.data)||void 0===n?void 0:n.interactiveId)&&f.b.interactive(E.data.interactiveId)),O=(0,y._)(e.shareId);(0,h.v)([A,j,E]);var N=(0,o.D)(null===(a=j.data)||void 0===a?void 0:a.id,null===(g=E.data)||void 0===g?void 0:g.id,e.closePopup),R=N.markedAnswers,M=N.addMarkedAnswers,B=N.submitMarkedAnswers,F=null===(k=O.data)||void 0===k?void 0:k.students.find((function(t){var n,r,a,i,s;return e.userId?(null===(r=null===(n=t.user)||void 0===n?void 0:n.id)||void 0===r?void 0:r.toString())===(null===(a=e.userId)||void 0===a?void 0:a.toString()):!!e.sessionId&&(null===(i=t.sessionId)||void 0===i?void 0:i.toString())===(null===(s=e.sessionId)||void 0===s?void 0:s.toString())})),T=F?b("heading",{studentName:(0,c.B)(F.user,C)}):"",U=I.hasCompleted&&A.hasCompleted&&E.hasCompleted&&j.hasCompleted&&O.hasCompleted;return r.createElement(d.G,{title:T,showLoadingSpinner:!U,closePopup:e.closePopup,size:"lg"},U&&r.createElement(u.R,{interactive:j.data,studentResults:F,markedAnswers:R,addMarkedAnswers:M,submitMarkedAnswers:B,imageCdnUrl:I.data.imageCdnUrl,selectedInteractionId:e.interactionId,onClickClose:e.closePopup,anonymiseUsers:C}))}}}]);
2
+ //# sourceMappingURL=7148-d966512e45-lite.chunk.js.map