@clickview/lite 0.53.4 → 0.53.6-rc.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (188) hide show
  1. package/dist/bundles.json +1 -1
  2. package/dist/css/{6094-lite-bcd14ea6d2.chunk.css → 1019-lite-bbcf2bff27.chunk.css} +3 -2
  3. package/dist/css/{1329-lite-be86e46c78.chunk.css → 1329-lite-458183b24f.chunk.css} +2 -2
  4. package/dist/css/{1838-lite-e6a28b84ed.chunk.css → 1838-lite-981a5e0783.chunk.css} +1 -1
  5. package/dist/css/{1760-lite-bcd14ea6d2.chunk.css → 2548-lite-bbcf2bff27.chunk.css} +3 -2
  6. package/dist/css/{3969-lite-29e14c7861.chunk.css → 3969-lite-ed58852d97.chunk.css} +2 -2
  7. package/dist/css/{422-lite-dace5f41de.chunk.css → 422-lite-b8c1fd1dee.chunk.css} +1 -1
  8. package/dist/css/{4502-lite-92be6697e7.chunk.css → 4502-lite-eaf1a1113c.chunk.css} +1 -1
  9. package/dist/css/{5220-lite-9832e2c2fb.chunk.css → 5220-lite-8a8d5d035f.chunk.css} +1 -1
  10. package/dist/css/{537-lite-56a3fc7e48.chunk.css → 537-lite-4de4c47713.chunk.css} +1 -1
  11. package/dist/css/{6489-lite-9045df4bb9.chunk.css → 6489-lite-e271aaed2d.chunk.css} +1 -1
  12. package/dist/css/{6544-lite-d46c2d634c.chunk.css → 6544-lite-319ed51ccc.chunk.css} +1 -1
  13. package/dist/css/{5549-lite-97ed26d0aa.chunk.css → 6596-lite-bb28584922.chunk.css} +2 -1
  14. package/dist/css/{841-lite-27b6485cd1.chunk.css → 841-lite-46ef623835.chunk.css} +1 -1
  15. package/dist/css/{8522-lite-2f2797038e.chunk.css → 8522-lite-f100606ec5.chunk.css} +1 -1
  16. package/dist/css/{8801-lite-c88eb54bee.chunk.css → 8801-lite-d34200ab29.chunk.css} +2 -2
  17. package/dist/css/{3640-lite-97ed26d0aa.chunk.css → 9010-lite-bb28584922.chunk.css} +2 -1
  18. package/dist/languages/en.json +1 -1
  19. package/dist/scripts/{1760-8d51aa0b08-lite.chunk.js → 1019-8f977b5095-lite.chunk.js} +2 -2
  20. package/dist/scripts/{1760-8d51aa0b08-lite.chunk.js.map → 1019-8f977b5095-lite.chunk.js.map} +1 -1
  21. package/dist/scripts/1080-509aa6e738-lite.chunk.js +2 -0
  22. package/dist/scripts/1080-509aa6e738-lite.chunk.js.map +1 -0
  23. package/dist/scripts/1169-e64f0dbd67-lite.chunk.js +2 -0
  24. package/dist/scripts/1169-e64f0dbd67-lite.chunk.js.map +1 -0
  25. package/dist/scripts/1329-bdbbf6c7fd-lite.chunk.js +3 -0
  26. package/dist/scripts/1329-bdbbf6c7fd-lite.chunk.js.map +1 -0
  27. package/dist/scripts/{1379-976d20185f-lite.chunk.js → 1379-ca519ec56b-lite.chunk.js} +3 -3
  28. package/dist/scripts/{1379-976d20185f-lite.chunk.js.map → 1379-ca519ec56b-lite.chunk.js.map} +1 -1
  29. package/dist/scripts/1518-4f76dbeee8-lite.chunk.js +2 -0
  30. package/dist/scripts/1518-4f76dbeee8-lite.chunk.js.map +1 -0
  31. package/dist/scripts/{1838-87fb96ee2c-lite.chunk.js → 1838-95081e8dea-lite.chunk.js} +1 -1
  32. package/dist/scripts/{1838-87fb96ee2c-lite.chunk.js.map → 1838-95081e8dea-lite.chunk.js.map} +1 -1
  33. package/dist/scripts/184-6ce393c251-lite.chunk.js +2 -0
  34. package/dist/scripts/184-6ce393c251-lite.chunk.js.map +1 -0
  35. package/dist/scripts/{2004-3005565af0-lite.chunk.js → 2004-e20d72976c-lite.chunk.js} +3 -3
  36. package/dist/scripts/{2004-3005565af0-lite.chunk.js.map → 2004-e20d72976c-lite.chunk.js.map} +1 -1
  37. package/dist/scripts/{2094-58390aa60a-lite.chunk.js → 2094-a16bbca3a3-lite.chunk.js} +2 -2
  38. package/dist/scripts/2094-a16bbca3a3-lite.chunk.js.map +1 -0
  39. package/dist/scripts/2142-c46ca4050f-lite.chunk.js +2 -0
  40. package/dist/scripts/2142-c46ca4050f-lite.chunk.js.map +1 -0
  41. package/dist/scripts/2199-be40da7440-lite.chunk.js +2 -0
  42. package/dist/scripts/2199-be40da7440-lite.chunk.js.map +1 -0
  43. package/dist/scripts/2548-c48b8d3e3c-lite.chunk.js +2 -0
  44. package/dist/scripts/2548-c48b8d3e3c-lite.chunk.js.map +1 -0
  45. package/dist/scripts/3969-6d7c342d0c-lite.chunk.js +2 -0
  46. package/dist/scripts/3969-6d7c342d0c-lite.chunk.js.map +1 -0
  47. package/dist/scripts/3999-317a4538c6-lite.chunk.js +3 -0
  48. package/dist/scripts/3999-317a4538c6-lite.chunk.js.map +1 -0
  49. package/dist/scripts/{422-ee640f76c5-lite.chunk.js → 422-a63a7eb901-lite.chunk.js} +1 -1
  50. package/dist/scripts/{422-ee640f76c5-lite.chunk.js.map → 422-a63a7eb901-lite.chunk.js.map} +1 -1
  51. package/dist/scripts/{4502-af4903784e-lite.chunk.js → 4502-a7d60fa257-lite.chunk.js} +1 -1
  52. package/dist/scripts/{4502-af4903784e-lite.chunk.js.map → 4502-a7d60fa257-lite.chunk.js.map} +1 -1
  53. package/dist/scripts/{4554-c0d7490a46-lite.chunk.js → 4554-b9aa07891f-lite.chunk.js} +2 -2
  54. package/dist/scripts/4554-b9aa07891f-lite.chunk.js.map +1 -0
  55. package/dist/scripts/{4591-379f0fe588-lite.chunk.js → 4591-21c0094f28-lite.chunk.js} +2 -2
  56. package/dist/scripts/{4591-379f0fe588-lite.chunk.js.map → 4591-21c0094f28-lite.chunk.js.map} +1 -1
  57. package/dist/scripts/{4683-ce52da47d8-lite.chunk.js → 4683-d3afe2dfa8-lite.chunk.js} +2 -2
  58. package/dist/scripts/4683-d3afe2dfa8-lite.chunk.js.map +1 -0
  59. package/dist/scripts/5220-291b2243ad-lite.chunk.js +3 -0
  60. package/dist/scripts/5220-291b2243ad-lite.chunk.js.map +1 -0
  61. package/dist/scripts/537-6efb9bc099-lite.chunk.js +3 -0
  62. package/dist/scripts/537-6efb9bc099-lite.chunk.js.map +1 -0
  63. package/dist/scripts/5660-6711768c20-lite.chunk.js +2 -0
  64. package/dist/scripts/5660-6711768c20-lite.chunk.js.map +1 -0
  65. package/dist/scripts/5936-e839cb8193-lite.chunk.js +2 -0
  66. package/dist/scripts/5936-e839cb8193-lite.chunk.js.map +1 -0
  67. package/dist/scripts/{624-bf0ff6257f-lite.chunk.js → 624-09b51a9d32-lite.chunk.js} +3 -3
  68. package/dist/scripts/{624-bf0ff6257f-lite.chunk.js.map → 624-09b51a9d32-lite.chunk.js.map} +1 -1
  69. package/dist/scripts/6450-f16821bf09-lite.chunk.js +2 -0
  70. package/dist/scripts/6450-f16821bf09-lite.chunk.js.map +1 -0
  71. package/dist/scripts/6489-c242844567-lite.chunk.js +3 -0
  72. package/dist/scripts/6489-c242844567-lite.chunk.js.map +1 -0
  73. package/dist/scripts/6544-07898e3fa3-lite.chunk.js +2 -0
  74. package/dist/scripts/6544-07898e3fa3-lite.chunk.js.map +1 -0
  75. package/dist/scripts/6596-848fbf79bb-lite.chunk.js +2 -0
  76. package/dist/scripts/6596-848fbf79bb-lite.chunk.js.map +1 -0
  77. package/dist/scripts/{6741-1c125dbc6c-lite.chunk.js → 6741-fe09fea334-lite.chunk.js} +3 -3
  78. package/dist/scripts/{6741-1c125dbc6c-lite.chunk.js.map → 6741-fe09fea334-lite.chunk.js.map} +1 -1
  79. package/dist/scripts/6752-0d139a6c9a-lite.chunk.js +2 -0
  80. package/dist/scripts/6752-0d139a6c9a-lite.chunk.js.map +1 -0
  81. package/dist/scripts/696-fa78eb455f-lite.chunk.js +2 -0
  82. package/dist/scripts/696-fa78eb455f-lite.chunk.js.map +1 -0
  83. package/dist/scripts/{7234-ef6ab1e557-lite.chunk.js → 7234-d15fe07f0e-lite.chunk.js} +2 -2
  84. package/dist/scripts/{7234-ef6ab1e557-lite.chunk.js.map → 7234-d15fe07f0e-lite.chunk.js.map} +1 -1
  85. package/dist/scripts/729-594be12089-lite.chunk.js +2 -0
  86. package/dist/scripts/729-594be12089-lite.chunk.js.map +1 -0
  87. package/dist/scripts/{7293-3e6ad36a7a-lite.chunk.js → 7293-35871fc150-lite.chunk.js} +2 -2
  88. package/dist/scripts/7293-35871fc150-lite.chunk.js.map +1 -0
  89. package/dist/scripts/{8192-e2d9a26cc5-lite.chunk.js → 8192-eb7054ccc6-lite.chunk.js} +2 -2
  90. package/dist/scripts/{8192-e2d9a26cc5-lite.chunk.js.map → 8192-eb7054ccc6-lite.chunk.js.map} +1 -1
  91. package/dist/scripts/841-11af1334bf-lite.chunk.js +3 -0
  92. package/dist/scripts/841-11af1334bf-lite.chunk.js.map +1 -0
  93. package/dist/scripts/{8522-b4b217640c-lite.chunk.js → 8522-8e9c576bf6-lite.chunk.js} +1 -1
  94. package/dist/scripts/{8522-b4b217640c-lite.chunk.js.map → 8522-8e9c576bf6-lite.chunk.js.map} +1 -1
  95. package/dist/scripts/8801-3a7652eb35-lite.chunk.js +2 -0
  96. package/dist/scripts/8801-3a7652eb35-lite.chunk.js.map +1 -0
  97. package/dist/scripts/9010-ef7ea501ee-lite.chunk.js +2 -0
  98. package/dist/scripts/9010-ef7ea501ee-lite.chunk.js.map +1 -0
  99. package/dist/scripts/9139-22fb64f542-lite.chunk.js +2 -0
  100. package/dist/scripts/9139-22fb64f542-lite.chunk.js.map +1 -0
  101. package/dist/scripts/9173-e45847aa35-lite.chunk.js +2 -0
  102. package/dist/scripts/9173-e45847aa35-lite.chunk.js.map +1 -0
  103. package/dist/scripts/{9395-e9b5cdbdce-lite.chunk.js → 9395-e1a02b01ce-lite.chunk.js} +3 -3
  104. package/dist/scripts/{9395-e9b5cdbdce-lite.chunk.js.map → 9395-e1a02b01ce-lite.chunk.js.map} +1 -1
  105. package/dist/scripts/{9478-abfa7ed3cc-lite.chunk.js → 9478-13da35c4ee-lite.chunk.js} +3 -3
  106. package/dist/scripts/{9478-abfa7ed3cc-lite.chunk.js.map → 9478-13da35c4ee-lite.chunk.js.map} +1 -1
  107. package/dist/scripts/{953-bf3d621a33-lite.chunk.js → 953-225db845ab-lite.chunk.js} +3 -3
  108. package/dist/scripts/{953-bf3d621a33-lite.chunk.js.map → 953-225db845ab-lite.chunk.js.map} +1 -1
  109. package/dist/scripts/{9899-68b030d4e2-lite.chunk.js → 9899-fa58471776-lite.chunk.js} +2 -2
  110. package/dist/scripts/{9899-68b030d4e2-lite.chunk.js.map → 9899-fa58471776-lite.chunk.js.map} +1 -1
  111. package/dist/scripts/bundle-7f9a9b650d.min.js +3 -0
  112. package/dist/scripts/bundle-7f9a9b650d.min.js.map +1 -0
  113. package/package.json +1 -1
  114. package/dist/scripts/1080-4173ce26bd-lite.chunk.js +0 -2
  115. package/dist/scripts/1080-4173ce26bd-lite.chunk.js.map +0 -1
  116. package/dist/scripts/1169-d090f0a147-lite.chunk.js +0 -2
  117. package/dist/scripts/1169-d090f0a147-lite.chunk.js.map +0 -1
  118. package/dist/scripts/1329-d48379c043-lite.chunk.js +0 -3
  119. package/dist/scripts/1329-d48379c043-lite.chunk.js.map +0 -1
  120. package/dist/scripts/1518-9756fde01e-lite.chunk.js +0 -2
  121. package/dist/scripts/1518-9756fde01e-lite.chunk.js.map +0 -1
  122. package/dist/scripts/184-ee581fa2e0-lite.chunk.js +0 -2
  123. package/dist/scripts/184-ee581fa2e0-lite.chunk.js.map +0 -1
  124. package/dist/scripts/2094-58390aa60a-lite.chunk.js.map +0 -1
  125. package/dist/scripts/2199-476ac5922f-lite.chunk.js +0 -2
  126. package/dist/scripts/2199-476ac5922f-lite.chunk.js.map +0 -1
  127. package/dist/scripts/3640-1ac0a110f4-lite.chunk.js +0 -2
  128. package/dist/scripts/3640-1ac0a110f4-lite.chunk.js.map +0 -1
  129. package/dist/scripts/3969-c0160d0139-lite.chunk.js +0 -2
  130. package/dist/scripts/3969-c0160d0139-lite.chunk.js.map +0 -1
  131. package/dist/scripts/4063-786732e7b0-lite.chunk.js +0 -2
  132. package/dist/scripts/4063-786732e7b0-lite.chunk.js.map +0 -1
  133. package/dist/scripts/4273-de24896b28-lite.chunk.js +0 -3
  134. package/dist/scripts/4273-de24896b28-lite.chunk.js.map +0 -1
  135. package/dist/scripts/4554-c0d7490a46-lite.chunk.js.map +0 -1
  136. package/dist/scripts/4683-ce52da47d8-lite.chunk.js.map +0 -1
  137. package/dist/scripts/4850-5ddd277550-lite.chunk.js +0 -2
  138. package/dist/scripts/4850-5ddd277550-lite.chunk.js.map +0 -1
  139. package/dist/scripts/5220-85898810a6-lite.chunk.js +0 -3
  140. package/dist/scripts/5220-85898810a6-lite.chunk.js.map +0 -1
  141. package/dist/scripts/537-de7445d41a-lite.chunk.js +0 -3
  142. package/dist/scripts/537-de7445d41a-lite.chunk.js.map +0 -1
  143. package/dist/scripts/5549-e0ed88aaa1-lite.chunk.js +0 -2
  144. package/dist/scripts/5549-e0ed88aaa1-lite.chunk.js.map +0 -1
  145. package/dist/scripts/5660-a356acdbca-lite.chunk.js +0 -2
  146. package/dist/scripts/5660-a356acdbca-lite.chunk.js.map +0 -1
  147. package/dist/scripts/5936-92d9cea005-lite.chunk.js +0 -2
  148. package/dist/scripts/5936-92d9cea005-lite.chunk.js.map +0 -1
  149. package/dist/scripts/6094-8546003d79-lite.chunk.js +0 -2
  150. package/dist/scripts/6094-8546003d79-lite.chunk.js.map +0 -1
  151. package/dist/scripts/6450-601f889072-lite.chunk.js +0 -2
  152. package/dist/scripts/6450-601f889072-lite.chunk.js.map +0 -1
  153. package/dist/scripts/6489-532a022587-lite.chunk.js +0 -3
  154. package/dist/scripts/6489-532a022587-lite.chunk.js.map +0 -1
  155. package/dist/scripts/6544-ae27efabab-lite.chunk.js +0 -2
  156. package/dist/scripts/6544-ae27efabab-lite.chunk.js.map +0 -1
  157. package/dist/scripts/6752-5dddab5e0b-lite.chunk.js +0 -2
  158. package/dist/scripts/6752-5dddab5e0b-lite.chunk.js.map +0 -1
  159. package/dist/scripts/6852-9dfd47d085-lite.chunk.js +0 -2
  160. package/dist/scripts/6852-9dfd47d085-lite.chunk.js.map +0 -1
  161. package/dist/scripts/7293-3e6ad36a7a-lite.chunk.js.map +0 -1
  162. package/dist/scripts/841-73ef4ba5ec-lite.chunk.js +0 -3
  163. package/dist/scripts/841-73ef4ba5ec-lite.chunk.js.map +0 -1
  164. package/dist/scripts/8801-222a1b2e99-lite.chunk.js +0 -2
  165. package/dist/scripts/8801-222a1b2e99-lite.chunk.js.map +0 -1
  166. package/dist/scripts/9139-49023800c6-lite.chunk.js +0 -2
  167. package/dist/scripts/9139-49023800c6-lite.chunk.js.map +0 -1
  168. package/dist/scripts/9173-f9708ec0de-lite.chunk.js +0 -2
  169. package/dist/scripts/9173-f9708ec0de-lite.chunk.js.map +0 -1
  170. package/dist/scripts/bundle-e72459b30e.min.js +0 -3
  171. package/dist/scripts/bundle-e72459b30e.min.js.map +0 -1
  172. /package/dist/css/{4273-lite-a3c7435ba4.chunk.css → 3999-lite-a3c7435ba4.chunk.css} +0 -0
  173. /package/dist/css/{4063-lite-f72fc7b813.chunk.css → 4860-lite-f72fc7b813.chunk.css} +0 -0
  174. /package/dist/css/{4850-lite-f72fc7b813.chunk.css → 729-lite-f72fc7b813.chunk.css} +0 -0
  175. /package/dist/scripts/{1329-d48379c043-lite.chunk.js.LICENSE.txt → 1329-bdbbf6c7fd-lite.chunk.js.LICENSE.txt} +0 -0
  176. /package/dist/scripts/{1379-976d20185f-lite.chunk.js.LICENSE.txt → 1379-ca519ec56b-lite.chunk.js.LICENSE.txt} +0 -0
  177. /package/dist/scripts/{2004-3005565af0-lite.chunk.js.LICENSE.txt → 2004-e20d72976c-lite.chunk.js.LICENSE.txt} +0 -0
  178. /package/dist/scripts/{4273-de24896b28-lite.chunk.js.LICENSE.txt → 3999-317a4538c6-lite.chunk.js.LICENSE.txt} +0 -0
  179. /package/dist/scripts/{5220-85898810a6-lite.chunk.js.LICENSE.txt → 5220-291b2243ad-lite.chunk.js.LICENSE.txt} +0 -0
  180. /package/dist/scripts/{537-de7445d41a-lite.chunk.js.LICENSE.txt → 537-6efb9bc099-lite.chunk.js.LICENSE.txt} +0 -0
  181. /package/dist/scripts/{624-bf0ff6257f-lite.chunk.js.LICENSE.txt → 624-09b51a9d32-lite.chunk.js.LICENSE.txt} +0 -0
  182. /package/dist/scripts/{6489-532a022587-lite.chunk.js.LICENSE.txt → 6489-c242844567-lite.chunk.js.LICENSE.txt} +0 -0
  183. /package/dist/scripts/{6741-1c125dbc6c-lite.chunk.js.LICENSE.txt → 6741-fe09fea334-lite.chunk.js.LICENSE.txt} +0 -0
  184. /package/dist/scripts/{841-73ef4ba5ec-lite.chunk.js.LICENSE.txt → 841-11af1334bf-lite.chunk.js.LICENSE.txt} +0 -0
  185. /package/dist/scripts/{9395-e9b5cdbdce-lite.chunk.js.LICENSE.txt → 9395-e1a02b01ce-lite.chunk.js.LICENSE.txt} +0 -0
  186. /package/dist/scripts/{9478-abfa7ed3cc-lite.chunk.js.LICENSE.txt → 9478-13da35c4ee-lite.chunk.js.LICENSE.txt} +0 -0
  187. /package/dist/scripts/{953-bf3d621a33-lite.chunk.js.LICENSE.txt → 953-225db845ab-lite.chunk.js.LICENSE.txt} +0 -0
  188. /package/dist/scripts/{bundle-e72459b30e.min.js.LICENSE.txt → bundle-7f9a9b650d.min.js.LICENSE.txt} +0 -0
@@ -1,2 +1,2 @@
1
- "use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[8192,4489],{36199:(t,e,n)=>{var r;n.d(e,{V:()=>r}),function(t){t[t.Original=0]="Original",t[t.Copy=1]="Copy"}(r||(r={}))},94644:(t,e,n)=>{n.d(e,{r:()=>f});var r=n(50242),o=n(81886),i=n(67058),a=n(14553),c=n(49267),u=n(49075),l={notFound:i.d,forbidden:{rating:a.q,yearLevel:a.q,region:c.a,privacy:a.q},badRequest:u._};function f(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(t){var i;i="number"==typeof t?t:t.status;var a=Object.assign(Object.assign({},l),e);i&&o.Q.Ry.isStatusCodeError(i)&&(i!==r.o.NotFound?i!==r.o.Forbidden?n.badRequest||o.Q.Ry.throw(new a.badRequest):n.forbidden||o.Q.Ry.throw(new a.forbidden.privacy):n.notFound||o.Q.Ry.throw(new a.notFound))}}},91286:(t,e,n)=>{n.d(e,{v:()=>a});var r=n(32735),o=n(94644);function i(t){return t.map((function(t){return t.statusCode})).join(":")}function a(t,e,n){var a=Array.isArray(t)?t:[t];(0,r.useEffect)((function(){a.forEach((function(t){(0,o.r)(t.statusCode,e,n)}))}),[i(a),e,n])}},63649:(t,e,n)=>{n.d(e,{X:()=>i});var r=n(32735);const o={video:"ekpg6",notice:"lQs4F",heading:"Gt6uV",interaction:"LEfYX",button:"caHP7",edit:"de4DP",questions:"XelbS"};function i(){return r.createElement("div",{className:"px-3 w-100"},r.createElement("div",{className:"partial-loading-background ".concat(o.notice)}),r.createElement("div",{className:"partial-loading-background mb-3 ".concat(o.video)},r.createElement("div",{className:"partial-loading-background ".concat(o.questions)})),r.createElement("div",{className:"partial-loading-background mb-3 ".concat(o.heading)}),r.createElement("div",null,Array(5).fill(null).map((function(t,e){return r.createElement("div",{key:e,className:"partial-loading-background my-2 ".concat(o.interaction)})}))))}},9064:(t,e,n)=>{function r(t){var e,n,r,o,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(!t)return null;var a=Object.assign(Object.assign({},i),{id:t.id,interactiveId:t.interactiveId,name:t.name,status:t.status,originType:t.originType});return(null===(e=null==t?void 0:t._parentClip)||void 0===e?void 0:e.id)&&(a.clip={id:null===(n=null==t?void 0:t._parentClip)||void 0===n?void 0:n.id}),(null===(r=null==t?void 0:t._parentVideo)||void 0===r?void 0:r.id)&&(a.video={id:null===(o=null==t?void 0:t._parentVideo)||void 0===o?void 0:o.id}),a}n.d(e,{T:()=>r})},9897:(t,e,n)=>{n.r(e),n.d(e,{EditInteractiveView:()=>tt});var r=n(32735),o=n(17082),i=n(81886),a=n(20354),c=n(49985),u=n(65858),l=n(5960),f=n(60051),s=n(61990),d=n(33803),y=n(39151),p=n(20768),b=n(47812),v=n(31949),m=n(91286),g=n(72596),h=n(38314),w=n(72004),E=n(14070),O=n(97291),j=n(23481),P=n(64364);function S(t){return S="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},S(t)}function k(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,T(r.key),r)}}function T(t){var e=function(t,e){if("object"!=S(t)||!t)return t;var n=t[Symbol.toPrimitive];if(void 0!==n){var r=n.call(t,"string");if("object"!=S(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==S(e)?e:e+""}function I(t,e,n){return e=A(e),function(t,e){if(e&&("object"==S(e)||"function"==typeof e))return e;if(void 0!==e)throw new TypeError("Derived constructors may only return object or undefined");return function(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}(t)}(t,_()?Reflect.construct(e,n||[],A(t).constructor):e.apply(t,n))}function _(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(t){}return(_=function(){return!!t})()}function A(t){return A=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)},A(t)}function C(t,e){return C=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t},C(t,e)}var R="shared.cannotEditPublishedInteractive",N=function(t){function e(){return function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e),I(this,e,[j.T.getPhrase(R,"title")])}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,"prototype",{writable:!1}),e&&C(t,e)}(e,t),n=e,(r=[{key:"name",get:function(){return"CannotEditPublishedInteractiveError"}},{key:"heading",get:function(){return j.T.getPhrase(R,"heading")}},{key:"description",get:function(){return j.T.getPhrase(R,"description")}}])&&k(n.prototype,r),Object.defineProperty(n,"prototype",{writable:!1}),n;var n,r}(P.H),F=n(63649),V=n(9064),L=n(70680),Q=n(36199);function U(t){return U="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},U(t)}function q(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,x(r.key),r)}}function x(t){var e=function(t,e){if("object"!=U(t)||!t)return t;var n=t[Symbol.toPrimitive];if(void 0!==n){var r=n.call(t,"string");if("object"!=U(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==U(e)?e:e+""}function B(t,e,n){return e=M(e),function(t,e){if(e&&("object"==U(e)||"function"==typeof e))return e;if(void 0!==e)throw new TypeError("Derived constructors may only return object or undefined");return function(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}(t)}(t,D()?Reflect.construct(e,n||[],M(t).constructor):e.apply(t,n))}function D(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(t){}return(D=function(){return!!t})()}function M(t){return M=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)},M(t)}function X(t,e){return X=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t},X(t,e)}var $="shared.cannotEditInteractive",H=function(t){function e(){return function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e),B(this,e,[j.T.getPhrase($,"title")])}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,"prototype",{writable:!1}),e&&X(t,e)}(e,t),n=e,(r=[{key:"name",get:function(){return"CannnotEditInteractiveError"}},{key:"heading",get:function(){return j.T.getPhrase($,"heading")}},{key:"description",get:function(){return j.T.getPhrase($,"description")}}])&&q(n.prototype,r),Object.defineProperty(n,"prototype",{writable:!1}),n;var n,r}(P.H);function K(t,e){return function(t){if(Array.isArray(t))return t}(t)||function(t,e){var n=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=n){var r,o,i,a,c=[],u=!0,l=!1;try{if(i=(n=n.call(t)).next,0===e){if(Object(n)!==n)return;u=!1}else for(;!(u=(r=i.call(n)).done)&&(c.push(r.value),c.length!==e);u=!0);}catch(t){l=!0,o=t}finally{try{if(!u&&null!=n.return&&(a=n.return(),Object(a)!==a))return}finally{if(l)throw o}}return c}}(t,e)||function(t,e){if(t){if("string"==typeof t)return G(t,e);var n={}.toString.call(t).slice(8,-1);return"Object"===n&&t.constructor&&(n=t.constructor.name),"Map"===n||"Set"===n?Array.from(t):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?G(t,e):void 0}}(t,e)||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 G(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=Array(e);n<e;n++)r[n]=t[n];return r}var Z=function(t){var e=(0,L.I0)(),n=K(r.useState(!1),2),o=n[0],c=n[1],u=K(r.useState(!1),2),l=u[0],f=u[1];return r.useEffect((function(){if(t&&!l&&!o)if(t.originType!==Q.V.Original){var n=function(){i.Q.Ry.throw(new H)};c(!0),a.a.fetch(e,p.b.copyInteractive(t.interactiveId,(function(r){var o={originType:Q.V.Original,interactiveId:r.id};a.a.fetch(e,p.b.updateInteractiveMetadata(t.id,o,(function(){return f(!0)}),n))}),n))}else f(!0)}),[t]),l};function Y(t,e){return function(t){if(Array.isArray(t))return t}(t)||function(t,e){var n=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=n){var r,o,i,a,c=[],u=!0,l=!1;try{if(i=(n=n.call(t)).next,0===e){if(Object(n)!==n)return;u=!1}else for(;!(u=(r=i.call(n)).done)&&(c.push(r.value),c.length!==e);u=!0);}catch(t){l=!0,o=t}finally{try{if(!u&&null!=n.return&&(a=n.return(),Object(a)!==a))return}finally{if(l)throw o}}return c}}(t,e)||function(t,e){if(t){if("string"==typeof t)return z(t,e);var n={}.toString.call(t).slice(8,-1);return"Object"===n&&t.constructor&&(n=t.constructor.name),"Map"===n||"Set"===n?Array.from(t):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?z(t,e):void 0}}(t,e)||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 z(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=Array(e);n<e;n++)r[n]=t[n];return r}var J={application:O.O.INTERACTIVES,action:E.e.Interactives.EDIT_INTERACTIVE_DETAILS},W={notFound:s.l,forbidden:{privacy:d.G}};function tt(t){var e=Y(r.useState(!1),2),n=e[0],s=e[1],d=Y(r.useState(!1),2),E=d[0],O=d[1],j=r.useRef(),P=a.a.useBasicFetch(y.L.config()),S=a.a.useBasicFetch(v.N.currentUser()),k=a.a.useBasicFetch(!!S.data&&p.b.interactiveMetadata(t.id)),T=Z(k.data),I=a.a.useBasicFetch(T?b.k.createViewKey(k.data.id,f.f.MasterObject):null),_=a.a.useBasicFetch(v.N.token()),A=r.useMemo((function(){return(0,o.oD)()}),[]),C=r.useMemo((function(){return(0,o.oD)()}),[]),R=r.useRef();if((0,m.v)(k,W),!(I.data&&P.data&&k.data&&_.data))return r.createElement(F.X,null);if(!E&&(O(!0),k.data.status!==l.X.Draft))return i.Q.Ry.throw(new N),null;var L=(0,V.T)(k.data),Q={entity:u.py.Interactive,location:u.LZ.EditInteractive,workflowPhase:u.eu.Start};return r.createElement(r.Fragment,null,!n&&r.createElement(F.X,null),r.createElement("div",{className:"px-3 ".concat(n?"":"d-none")},r.createElement("div",{className:"d-flex justify-content-between align-items-center mb-3"},r.createElement("h1",{className:"h3 text-truncate mb-0 pb-1"},k.data.name),r.createElement("div",{className:"flex-shrink-0"},r.createElement(o.t0,{node:A}))),r.createElement(w.ClickViewInteractivePlayer,{viewKey:I.data.viewKey,imageApi:new URL(P.data.imageCdnUrl),playerApi:new URL(P.data.playerApiUrl),hotkeyElQuerySelector:"body",autoplay:!0,onReady:function(t){j.current=t,s(!0),R.current=new g.M({player:t,video:k.data,analyticsLocation:u.LZ.EditInteractive})},currentUser:S.data,mode:h.A.Create,actionsPortalNode:A,questionListPortalNode:C,authToken:_.data.value,onClickEditDetails:function(){c.k.logUserAction(L,Object.assign({actionType:u.Vw.Edit},Q)),i.Q.C$.trigger(Object.assign(Object.assign({},J),{args:[t.id]}))},onClickPublish:function(){c.k.logUserAction(L,Object.assign({actionType:u.Vw.Publish},Q)),i.Q.C$.trigger(Object.assign(Object.assign({},J),{args:[t.id],params:{publish:!0}}))},enableImmersiveReader:!0}),r.createElement(o.t0,{node:C})))}}}]);
2
- //# sourceMappingURL=8192-e2d9a26cc5-lite.chunk.js.map
1
+ "use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[8192,4489],{36199:(t,e,n)=>{var r;n.d(e,{V:()=>r}),function(t){t[t.Original=0]="Original",t[t.Copy=1]="Copy"}(r||(r={}))},94644:(t,e,n)=>{n.d(e,{r:()=>f});var r=n(50242),o=n(81886),i=n(67058),a=n(14553),c=n(49267),u=n(49075),l={notFound:i.d,forbidden:{rating:a.q,yearLevel:a.q,region:c.a,privacy:a.q},badRequest:u._};function f(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(t){var i;i="number"==typeof t?t:t.status;var a=Object.assign(Object.assign({},l),e);i&&o.Q.Ry.isStatusCodeError(i)&&(i!==r.o.NotFound?i!==r.o.Forbidden?n.badRequest||o.Q.Ry.throw(new a.badRequest):n.forbidden||o.Q.Ry.throw(new a.forbidden.privacy):n.notFound||o.Q.Ry.throw(new a.notFound))}}},91286:(t,e,n)=>{n.d(e,{v:()=>a});var r=n(32735),o=n(94644);function i(t){return t.map((function(t){return t.statusCode})).join(":")}function a(t,e,n){var a=Array.isArray(t)?t:[t];(0,r.useEffect)((function(){a.forEach((function(t){(0,o.r)(t.statusCode,e,n)}))}),[i(a),e,n])}},63649:(t,e,n)=>{n.d(e,{X:()=>i});var r=n(32735);const o={video:"ekpg6",notice:"lQs4F",heading:"Gt6uV",interaction:"LEfYX",button:"caHP7",edit:"de4DP",questions:"XelbS"};function i(){return r.createElement("div",{className:"px-3 w-100"},r.createElement("div",{className:"partial-loading-background ".concat(o.notice)}),r.createElement("div",{className:"partial-loading-background mb-3 ".concat(o.video)},r.createElement("div",{className:"partial-loading-background ".concat(o.questions)})),r.createElement("div",{className:"partial-loading-background mb-3 ".concat(o.heading)}),r.createElement("div",null,Array(5).fill(null).map((function(t,e){return r.createElement("div",{key:e,className:"partial-loading-background my-2 ".concat(o.interaction)})}))))}},9064:(t,e,n)=>{function r(t){var e,n,r,o,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(!t)return null;var a=Object.assign(Object.assign({},i),{id:t.id,interactiveId:t.interactiveId,name:t.name,status:t.status,originType:t.originType});return(null===(e=null==t?void 0:t._parentClip)||void 0===e?void 0:e.id)&&(a.clip={id:null===(n=null==t?void 0:t._parentClip)||void 0===n?void 0:n.id}),(null===(r=null==t?void 0:t._parentVideo)||void 0===r?void 0:r.id)&&(a.video={id:null===(o=null==t?void 0:t._parentVideo)||void 0===o?void 0:o.id}),a}n.d(e,{T:()=>r})},9897:(t,e,n)=>{n.r(e),n.d(e,{EditInteractiveView:()=>tt});var r=n(32735),o=n(38750),i=n(81886),a=n(20354),c=n(49985),u=n(65858),l=n(5960),f=n(60051),s=n(61990),d=n(33803),y=n(39151),p=n(20768),b=n(47812),v=n(31949),m=n(91286),g=n(72596),h=n(38314),w=n(72004),E=n(14070),O=n(97291),j=n(23481),P=n(64364);function S(t){return S="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},S(t)}function k(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,T(r.key),r)}}function T(t){var e=function(t,e){if("object"!=S(t)||!t)return t;var n=t[Symbol.toPrimitive];if(void 0!==n){var r=n.call(t,"string");if("object"!=S(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==S(e)?e:e+""}function I(t,e,n){return e=A(e),function(t,e){if(e&&("object"==S(e)||"function"==typeof e))return e;if(void 0!==e)throw new TypeError("Derived constructors may only return object or undefined");return function(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}(t)}(t,_()?Reflect.construct(e,n||[],A(t).constructor):e.apply(t,n))}function _(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(t){}return(_=function(){return!!t})()}function A(t){return A=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)},A(t)}function C(t,e){return C=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t},C(t,e)}var R="shared.cannotEditPublishedInteractive",N=function(t){function e(){return function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e),I(this,e,[j.T.getPhrase(R,"title")])}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,"prototype",{writable:!1}),e&&C(t,e)}(e,t),n=e,(r=[{key:"name",get:function(){return"CannotEditPublishedInteractiveError"}},{key:"heading",get:function(){return j.T.getPhrase(R,"heading")}},{key:"description",get:function(){return j.T.getPhrase(R,"description")}}])&&k(n.prototype,r),Object.defineProperty(n,"prototype",{writable:!1}),n;var n,r}(P.H),F=n(63649),V=n(9064),L=n(70680),Q=n(36199);function U(t){return U="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},U(t)}function q(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,x(r.key),r)}}function x(t){var e=function(t,e){if("object"!=U(t)||!t)return t;var n=t[Symbol.toPrimitive];if(void 0!==n){var r=n.call(t,"string");if("object"!=U(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==U(e)?e:e+""}function B(t,e,n){return e=M(e),function(t,e){if(e&&("object"==U(e)||"function"==typeof e))return e;if(void 0!==e)throw new TypeError("Derived constructors may only return object or undefined");return function(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}(t)}(t,D()?Reflect.construct(e,n||[],M(t).constructor):e.apply(t,n))}function D(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(t){}return(D=function(){return!!t})()}function M(t){return M=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)},M(t)}function X(t,e){return X=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t},X(t,e)}var $="shared.cannotEditInteractive",H=function(t){function e(){return function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e),B(this,e,[j.T.getPhrase($,"title")])}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,"prototype",{writable:!1}),e&&X(t,e)}(e,t),n=e,(r=[{key:"name",get:function(){return"CannnotEditInteractiveError"}},{key:"heading",get:function(){return j.T.getPhrase($,"heading")}},{key:"description",get:function(){return j.T.getPhrase($,"description")}}])&&q(n.prototype,r),Object.defineProperty(n,"prototype",{writable:!1}),n;var n,r}(P.H);function K(t,e){return function(t){if(Array.isArray(t))return t}(t)||function(t,e){var n=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=n){var r,o,i,a,c=[],u=!0,l=!1;try{if(i=(n=n.call(t)).next,0===e){if(Object(n)!==n)return;u=!1}else for(;!(u=(r=i.call(n)).done)&&(c.push(r.value),c.length!==e);u=!0);}catch(t){l=!0,o=t}finally{try{if(!u&&null!=n.return&&(a=n.return(),Object(a)!==a))return}finally{if(l)throw o}}return c}}(t,e)||function(t,e){if(t){if("string"==typeof t)return G(t,e);var n={}.toString.call(t).slice(8,-1);return"Object"===n&&t.constructor&&(n=t.constructor.name),"Map"===n||"Set"===n?Array.from(t):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?G(t,e):void 0}}(t,e)||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 G(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=Array(e);n<e;n++)r[n]=t[n];return r}var Z=function(t){var e=(0,L.I0)(),n=K(r.useState(!1),2),o=n[0],c=n[1],u=K(r.useState(!1),2),l=u[0],f=u[1];return r.useEffect((function(){if(t&&!l&&!o)if(t.originType!==Q.V.Original){var n=function(){i.Q.Ry.throw(new H)};c(!0),a.a.fetch(e,p.b.copyInteractive(t.interactiveId,(function(r){var o={originType:Q.V.Original,interactiveId:r.id};a.a.fetch(e,p.b.updateInteractiveMetadata(t.id,o,(function(){return f(!0)}),n))}),n))}else f(!0)}),[t]),l};function Y(t,e){return function(t){if(Array.isArray(t))return t}(t)||function(t,e){var n=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=n){var r,o,i,a,c=[],u=!0,l=!1;try{if(i=(n=n.call(t)).next,0===e){if(Object(n)!==n)return;u=!1}else for(;!(u=(r=i.call(n)).done)&&(c.push(r.value),c.length!==e);u=!0);}catch(t){l=!0,o=t}finally{try{if(!u&&null!=n.return&&(a=n.return(),Object(a)!==a))return}finally{if(l)throw o}}return c}}(t,e)||function(t,e){if(t){if("string"==typeof t)return z(t,e);var n={}.toString.call(t).slice(8,-1);return"Object"===n&&t.constructor&&(n=t.constructor.name),"Map"===n||"Set"===n?Array.from(t):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?z(t,e):void 0}}(t,e)||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 z(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=Array(e);n<e;n++)r[n]=t[n];return r}var J={application:O.O.INTERACTIVES,action:E.e.Interactives.EDIT_INTERACTIVE_DETAILS},W={notFound:s.l,forbidden:{privacy:d.G}};function tt(t){var e=Y(r.useState(!1),2),n=e[0],s=e[1],d=Y(r.useState(!1),2),E=d[0],O=d[1],j=r.useRef(),P=a.a.useBasicFetch(y.L.config()),S=a.a.useBasicFetch(v.N.currentUser()),k=a.a.useBasicFetch(!!S.data&&p.b.interactiveMetadata(t.id)),T=Z(k.data),I=a.a.useBasicFetch(T?b.k.createViewKey(k.data.id,f.f.MasterObject):null),_=a.a.useBasicFetch(v.N.token()),A=r.useMemo((function(){return(0,o.oD)()}),[]),C=r.useMemo((function(){return(0,o.oD)()}),[]),R=r.useRef();if((0,m.v)(k,W),!(I.data&&P.data&&k.data&&_.data))return r.createElement(F.X,null);if(!E&&(O(!0),k.data.status!==l.X.Draft))return i.Q.Ry.throw(new N),null;var L=(0,V.T)(k.data),Q={entity:u.py.Interactive,location:u.LZ.EditInteractive,workflowPhase:u.eu.Start};return r.createElement(r.Fragment,null,!n&&r.createElement(F.X,null),r.createElement("div",{className:"px-3 ".concat(n?"":"d-none")},r.createElement("div",{className:"d-flex justify-content-between align-items-center mb-3"},r.createElement("h1",{className:"h3 text-truncate mb-0 pb-1"},k.data.name),r.createElement("div",{className:"flex-shrink-0"},r.createElement(o.t0,{node:A}))),r.createElement(w.ClickViewInteractivePlayer,{viewKey:I.data.viewKey,imageApi:new URL(P.data.imageCdnUrl),playerApi:new URL(P.data.playerApiUrl),hotkeyElQuerySelector:"body",autoplay:!0,onReady:function(t){j.current=t,s(!0),R.current=new g.M({player:t,video:k.data,analyticsLocation:u.LZ.EditInteractive})},currentUser:S.data,mode:h.A.Create,actionsPortalNode:A,questionListPortalNode:C,authToken:_.data.value,onClickEditDetails:function(){c.k.logUserAction(L,Object.assign({actionType:u.Vw.Edit},Q)),i.Q.C$.trigger(Object.assign(Object.assign({},J),{args:[t.id]}))},onClickPublish:function(){c.k.logUserAction(L,Object.assign({actionType:u.Vw.Publish},Q)),i.Q.C$.trigger(Object.assign(Object.assign({},J),{args:[t.id],params:{publish:!0}}))},enableImmersiveReader:!0}),r.createElement(o.t0,{node:C})))}}}]);
2
+ //# sourceMappingURL=8192-eb7054ccc6-lite.chunk.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"scripts/8192-e2d9a26cc5-lite.chunk.js","mappings":"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","sources":["file:///app/packages/libs/shared/src/enums/InteractiveOriginType.ts","file:///app/packages/libs/shared/src/errors/handlers/HttpErrorHandlers.ts","file:///app/packages/libs/shared/src/hooks/UseHandleObjectError.ts","file:///app/packages/projects/lite/src/apps/interactives/components/interactive-partial-loading/interactive-partial-loading.scss","file:///app/packages/projects/lite/src/apps/interactives/components/interactive-partial-loading/InteractivePartialLoading.tsx","file:///app/packages/projects/lite/src/apps/interactives/utils/getInteractiveAnalyticsData.ts","file:///app/packages/projects/lite/src/shared/errors/interactives/cannot-edit-published-interactive/CannotEditPublishInteractiveError.ts","file:///app/packages/projects/lite/src/shared/errors/interactives/cannot-edit/CannotEditError.ts","file:///app/packages/projects/lite/src/apps/interactives/views/edit-interactive/useEnsureOriginal.ts","file:///app/packages/projects/lite/src/apps/interactives/views/edit-interactive/EditInteractiveView.tsx"],"sourcesContent":["export enum InteractiveOriginType {\n Original = 0,\n Copy = 1\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}\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};\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.NotFound) {\n if (!ignoreMap.notFound)\n Core.ErrorHelper.throw(new errorMap.notFound());\n return;\n }\n\n if (statusCode === HttpStatus.Forbidden) {\n /**\n * TODO: Work out how to go about handling all forbidden errors, such as region locking, year levels,\n * ratings, and privacy.\n */\n if (!ignoreMap.forbidden)\n Core.ErrorHelper.throw(new errorMap.forbidden.privacy());\n return;\n }\n\n if (!ignoreMap.badRequest)\n Core.ErrorHelper.throw(new errorMap.badRequest());\n}\n\nexport function handleXhrError(xhr: Xhr, customErrorMap?: HttpErrorMap): void {\n handleHttpError(xhr.status, customErrorMap);\n}","import { useEffect } from 'react';\n\nimport { Flight } from 'libs/common/flight';\n\nimport { handleHttpError, HttpErrorMap, IgnoreHttpErrorMap } from 'libs/shared/errors/handlers/HttpErrorHandlers';\n\nfunction generateCacheKey(flightObjs: Array<Flight.Response<any>>): string {\n return flightObjs.map(obj => obj.statusCode).join(':');\n}\n\n// TODO: Change this to just `useHandleHttpError` and only accept a status code.\nexport function useHandleObjectError(\n _flightObjs: Flight.Response<any> | Array<Flight.Response<any>>,\n customErrors?: HttpErrorMap,\n ignoreErrors?: IgnoreHttpErrorMap\n): void {\n const flightObjs = Array.isArray(_flightObjs) ? _flightObjs : [_flightObjs];\n\n useEffect(() => {\n flightObjs.forEach(obj => {\n handleHttpError(obj.statusCode, customErrors, ignoreErrors);\n });\n }, [ generateCacheKey(flightObjs), customErrors, ignoreErrors ]);\n}","// extracted by mini-css-extract-plugin\nexport default {\"video\":\"ekpg6\",\"notice\":\"lQs4F\",\"heading\":\"Gt6uV\",\"interaction\":\"LEfYX\",\"button\":\"caHP7\",\"edit\":\"de4DP\",\"questions\":\"XelbS\"};","import React from 'react';\n\nimport styles from './interactive-partial-loading.scss';\n\nexport function InteractivePartialLoading(): React.ReactElement {\n return (\n <div className='px-3 w-100'>\n <div className={`partial-loading-background ${styles.notice}`} />\n <div className={`partial-loading-background mb-3 ${styles.video}`}>\n <div className={`partial-loading-background ${styles.questions}`}></div>\n </div>\n <div className={`partial-loading-background mb-3 ${styles.heading}`}></div>\n <div>\n {Array(5).fill(null).map((_, i) => (\n <div key={i} className={`partial-loading-background my-2 ${styles.interaction}`}></div>\n ))}\n </div>\n </div>\n );\n}","import { HashObject } from 'libs/common/react/interfaces';\n\nimport { AnalyticsDataPayload } from 'libs/analytics/models/AnalyticsEvent';\n\nimport { InteractiveMetadata } from 'libs/shared/interfaces';\n\nexport function getInteractiveAnalyticsData(\n interactiveMetadata: InteractiveMetadata,\n extraAnalyticsData: HashObject = {}\n): AnalyticsDataPayload {\n if (!interactiveMetadata)\n return null;\n\n const data: AnalyticsDataPayload = {\n ...extraAnalyticsData,\n id: interactiveMetadata.id,\n interactiveId: interactiveMetadata.interactiveId,\n name: interactiveMetadata.name,\n status: interactiveMetadata.status,\n originType: interactiveMetadata.originType\n };\n\n if (interactiveMetadata?._parentClip?.id)\n data.clip = { id: interactiveMetadata?._parentClip?.id };\n \n if (interactiveMetadata?._parentVideo?.id)\n data.video = { id: interactiveMetadata?._parentVideo?.id };\n \n return data;\n}","import { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { ErrorPageError } from 'libs/shared/errors/primitives/ErrorPageError';\n\nconst namespace = 'shared.cannotEditPublishedInteractive';\n\nexport class CannotEditPublishInteractiveError extends ErrorPageError {\n constructor() {\n super(LanguageService.getPhrase(namespace, 'title'));\n }\n\n // @ts-ignore\n public get name(): string {\n return 'CannotEditPublishedInteractiveError';\n }\n\n // @ts-ignore\n public get heading(): string {\n return LanguageService.getPhrase(namespace, 'heading');\n }\n\n // @ts-ignore\n public get description(): string {\n return LanguageService.getPhrase(namespace, 'description');\n }\n}","import { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { ErrorPageError } from 'libs/shared/errors/primitives/ErrorPageError';\n\nconst namespace = 'shared.cannotEditInteractive';\n\nexport class CannotEditInteractiveError extends ErrorPageError {\n constructor() {\n super(LanguageService.getPhrase(namespace, 'title'));\n }\n\n // @ts-ignore\n public get name(): string {\n return 'CannnotEditInteractiveError';\n }\n\n // @ts-ignore\n public get heading(): string {\n return LanguageService.getPhrase(namespace, 'heading');\n }\n\n // @ts-ignore\n public get description(): string {\n return LanguageService.getPhrase(namespace, 'description');\n }\n}","import React from 'react';\nimport { useDispatch } from 'react-redux';\n\nimport { Core } from 'libs/common/core';\nimport { Flight } from 'libs/common/flight';\n\nimport { InteractiveOriginType } from 'libs/shared/enums/InteractiveOriginType';\nimport { InteractiveRequests } from 'libs/shared/flight-requests/InteractiveRequests';\nimport { EditInteractiveMetadataOriginRequest, Interactive, InteractiveMetadata } from 'libs/shared/interfaces';\n\nimport { CannotEditInteractiveError } from 'shared/errors/interactives/cannot-edit/CannotEditError';\n\nexport const useEnsureOriginal = (\n interactiveMetadata: InteractiveMetadata\n) => {\n const dispatch = useDispatch();\n\n /* Used to ensure only one request */\n const [ requested, setRequest ] = React.useState(false);\n const [ ready, setReady ] = React.useState(false);\n\n React.useEffect(() => {\n if (!interactiveMetadata || ready || requested)\n return;\n\n if (interactiveMetadata.originType === InteractiveOriginType.Original) {\n setReady(true);\n return;\n }\n\n const error = () => {\n Core.ErrorHelper.throw(new CannotEditInteractiveError());\n };\n\n const success = (resp: Interactive) => {\n const data: EditInteractiveMetadataOriginRequest = {\n originType: InteractiveOriginType.Original,\n interactiveId: resp.id\n };\n\n Flight.fetch(\n dispatch,\n InteractiveRequests.updateInteractiveMetadata(\n interactiveMetadata.id,\n data,\n () => setReady(true),\n error\n )\n );\n };\n\n setRequest(true);\n Flight.fetch(dispatch, InteractiveRequests.copyInteractive(\n interactiveMetadata.interactiveId,\n success,\n error\n ));\n }, [interactiveMetadata]);\n\n return ready;\n};","import React from 'react';\nimport { createHtmlPortalNode, OutPortal } from 'react-reverse-portal';\n\nimport { Core } from 'libs/common/core';\nimport { Flight } from 'libs/common/flight';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { AnalyticsHelper } from 'libs/analytics/AnalyticsHelper';\nimport { EntityType, LocationContext, UserAction, WorkflowPhase } from 'libs/analytics/interfaces';\n\nimport { CurationStatus } from 'libs/shared/enums/CurationStatus';\nimport { MediaIdType } from 'libs/shared/enums/MediaIdType';\nimport { VideoNotFoundError } from 'libs/shared/errors/videos/video-not-found/VideoNotFoundError';\nimport { VideoPrivateError } from 'libs/shared/errors/videos/video-private/VideoPrivateError';\nimport { ConfigRequests } from 'libs/shared/flight-requests/ConfigRequests';\nimport { InteractiveRequests } from 'libs/shared/flight-requests/InteractiveRequests';\nimport { PlayerRequests } from 'libs/shared/flight-requests/PlayerRequests';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { useHandleObjectError } from 'libs/shared/hooks/UseHandleObjectError';\nimport { Config, CurrentUser, InteractiveMetadata, PlayerViewKey } from 'libs/shared/interfaces';\nimport { PlayerAnalyticsTracker } from 'libs/shared/utils/PlayerAnalyticsTracker';\n\nimport { InteractivePlayer } from 'projects/player/players/interactive-player';\nimport { InteractiveMode } from 'projects/player/plugins/interactive-plugin/interfaces';\nimport { ClickViewInteractivePlayer } from 'projects/player/react/InteractivePlayer';\n\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\nimport { CannotEditPublishInteractiveError } from 'shared/errors/interactives/cannot-edit-published-interactive/CannotEditPublishInteractiveError';\n\nimport { InteractivePartialLoading } from 'apps/interactives/components/interactive-partial-loading/InteractivePartialLoading';\nimport { getInteractiveAnalyticsData } from 'apps/interactives/utils/getInteractiveAnalyticsData';\n\nimport { useEnsureOriginal } from './useEnsureOriginal';\n\nconst EDIT_APPLINK = {\n application: AppChannels.INTERACTIVES,\n action: Actions.Interactives.EDIT_INTERACTIVE_DETAILS\n};\n\nconst videoErrors = {\n notFound: VideoNotFoundError,\n forbidden: {\n privacy: VideoPrivateError\n }\n};\n\ninterface EditInteractiveProps {\n id: string;\n}\n\nexport function EditInteractiveView(props: EditInteractiveProps): React.ReactElement {\n const [ ready, setReady ] = React.useState(false);\n\n const [ hasCheckedStatus, setHasCheckedStatus ] = React.useState(false);\n const playerRef = React.useRef<InteractivePlayer>();\n\n const config = Flight.useBasicFetch<Config>(ConfigRequests.config());\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n\n const interactiveMetadata = Flight.useBasicFetch<InteractiveMetadata>(!!currentUser.data &&\n InteractiveRequests.interactiveMetadata(props.id));\n\n /**\n * This will check if the interactive is a copy or not\n * and update it to original if it is a copy.\n */\n const isOriginal = useEnsureOriginal(interactiveMetadata.data);\n\n /**\n * We don't fetch our view key until we know our interactive has been upgraded\n * to an original\n */\n const viewKey = Flight.useBasicFetch<PlayerViewKey>(isOriginal ?\n PlayerRequests.createViewKey(interactiveMetadata.data.id, MediaIdType.MasterObject) : null);\n\n const token = Flight.useBasicFetch<HashObject>(UserRequests.token());\n\n const actionsPortalNode = React.useMemo(() => createHtmlPortalNode(), []);\n const questionListPortalNode = React.useMemo(() => createHtmlPortalNode(), []);\n\n const analyticsTracker = React.useRef<PlayerAnalyticsTracker>();\n\n useHandleObjectError(interactiveMetadata, videoErrors);\n\n function onReady(player: InteractivePlayer): void {\n playerRef.current = player;\n\n setReady(true);\n\n analyticsTracker.current = new PlayerAnalyticsTracker({\n player,\n video: interactiveMetadata.data,\n analyticsLocation: LocationContext.EditInteractive\n });\n }\n\n if (!viewKey.data || !config.data || !interactiveMetadata.data || !token.data)\n return <InteractivePartialLoading />;\n\n /**\n * We do this because when the publish popup publishes\n * the flight state updates and this briefly re-renders\n * with data.status being published\n */\n if (!hasCheckedStatus) {\n setHasCheckedStatus(true);\n if (interactiveMetadata.data.status !== CurationStatus.Draft) {\n Core.ErrorHelper.throw(new CannotEditPublishInteractiveError());\n return null;\n }\n }\n\n const analyticsData = getInteractiveAnalyticsData(interactiveMetadata.data);\n\n const baseAnalyticsOptions = {\n entity: EntityType.Interactive,\n location: LocationContext.EditInteractive,\n workflowPhase: WorkflowPhase.Start\n };\n\n function onClickEditDetails(): void {\n AnalyticsHelper.logUserAction(analyticsData, {\n actionType: UserAction.Edit,\n ...baseAnalyticsOptions\n });\n\n Core.AppLinkHelper.trigger({\n ...EDIT_APPLINK,\n args: [props.id]\n });\n }\n\n function onClickPublish(): void {\n AnalyticsHelper.logUserAction(analyticsData, {\n actionType: UserAction.Publish,\n ...baseAnalyticsOptions\n });\n\n Core.AppLinkHelper.trigger({\n ...EDIT_APPLINK,\n args: [props.id],\n params: { publish: true }\n });\n }\n\n return (\n <>\n {!ready && <InteractivePartialLoading />}\n <div className={`px-3 ${ready ? '' : 'd-none'}`}>\n <div className='d-flex justify-content-between align-items-center mb-3'>\n <h1 className='h3 text-truncate mb-0 pb-1'>{interactiveMetadata.data.name}</h1>\n <div className='flex-shrink-0'>\n <OutPortal node={actionsPortalNode} />\n </div>\n </div>\n <ClickViewInteractivePlayer\n viewKey={viewKey.data.viewKey}\n imageApi={new URL(config.data.imageCdnUrl)}\n playerApi={new URL(config.data.playerApiUrl)}\n hotkeyElQuerySelector='body'\n autoplay\n onReady={onReady}\n currentUser={currentUser.data}\n mode={InteractiveMode.Create}\n actionsPortalNode={actionsPortalNode}\n questionListPortalNode={questionListPortalNode}\n authToken={token.data.value}\n onClickEditDetails={onClickEditDetails}\n onClickPublish={onClickPublish}\n enableImmersiveReader\n />\n <OutPortal node={questionListPortalNode} />\n </div>\n </>\n );\n}\n"],"names":["InteractiveOriginType","defaultErrors","notFound","forbidden","rating","yearLevel","region","privacy","badRequest","handleHttpError","info","customErrorMap","ignoreMap","statusCode","status","errorMap","generateCacheKey","flightObjs","map","obj","join","useHandleObjectError","_flightObjs","customErrors","ignoreErrors","Array","isArray","useEffect","forEach","InteractivePartialLoading","className","fill","_","i","key","getInteractiveAnalyticsData","interactiveMetadata","extraAnalyticsData","data","id","interactiveId","name","originType","_parentClip","clip","_parentVideo","video","namespace","CannotEditPublishInteractiveError","LanguageService","ErrorPageError","CannotEditInteractiveError","useEnsureOriginal","dispatch","requested","setRequest","ready","setReady","error","InteractiveRequests","resp","EDIT_APPLINK","application","action","videoErrors","VideoNotFoundError","VideoPrivateError","EditInteractiveView","props","hasCheckedStatus","setHasCheckedStatus","playerRef","config","ConfigRequests","currentUser","UserRequests","isOriginal","viewKey","PlayerRequests","MediaIdType","token","actionsPortalNode","questionListPortalNode","analyticsTracker","CurationStatus","analyticsData","baseAnalyticsOptions","entity","location","workflowPhase","node","ClickViewInteractivePlayer","imageApi","URL","imageCdnUrl","playerApi","playerApiUrl","hotkeyElQuerySelector","autoplay","onReady","player","current","PlayerAnalyticsTracker","analyticsLocation","mode","authToken","value","onClickEditDetails","AnalyticsHelper","actionType","args","onClickPublish","params","publish","enableImmersiveReader"],"sourceRoot":""}
1
+ {"version":3,"file":"scripts/8192-eb7054ccc6-lite.chunk.js","mappings":"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","sources":["file:///app/packages/libs/shared/src/enums/InteractiveOriginType.ts","file:///app/packages/libs/shared/src/errors/handlers/HttpErrorHandlers.ts","file:///app/packages/libs/shared/src/hooks/UseHandleObjectError.ts","file:///app/packages/projects/lite/src/apps/interactives/components/interactive-partial-loading/interactive-partial-loading.scss","file:///app/packages/projects/lite/src/apps/interactives/components/interactive-partial-loading/InteractivePartialLoading.tsx","file:///app/packages/projects/lite/src/apps/interactives/utils/getInteractiveAnalyticsData.ts","file:///app/packages/projects/lite/src/shared/errors/interactives/cannot-edit-published-interactive/CannotEditPublishInteractiveError.ts","file:///app/packages/projects/lite/src/shared/errors/interactives/cannot-edit/CannotEditError.ts","file:///app/packages/projects/lite/src/apps/interactives/views/edit-interactive/useEnsureOriginal.ts","file:///app/packages/projects/lite/src/apps/interactives/views/edit-interactive/EditInteractiveView.tsx"],"sourcesContent":["export enum InteractiveOriginType {\n Original = 0,\n Copy = 1\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}\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};\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.NotFound) {\n if (!ignoreMap.notFound)\n Core.ErrorHelper.throw(new errorMap.notFound());\n return;\n }\n\n if (statusCode === HttpStatus.Forbidden) {\n /**\n * TODO: Work out how to go about handling all forbidden errors, such as region locking, year levels,\n * ratings, and privacy.\n */\n if (!ignoreMap.forbidden)\n Core.ErrorHelper.throw(new errorMap.forbidden.privacy());\n return;\n }\n\n if (!ignoreMap.badRequest)\n Core.ErrorHelper.throw(new errorMap.badRequest());\n}\n\nexport function handleXhrError(xhr: Xhr, customErrorMap?: HttpErrorMap): void {\n handleHttpError(xhr.status, customErrorMap);\n}","import { useEffect } from 'react';\n\nimport { Flight } from 'libs/common/flight';\n\nimport { handleHttpError, HttpErrorMap, IgnoreHttpErrorMap } from 'libs/shared/errors/handlers/HttpErrorHandlers';\n\nfunction generateCacheKey(flightObjs: Array<Flight.Response<any>>): string {\n return flightObjs.map(obj => obj.statusCode).join(':');\n}\n\n// TODO: Change this to just `useHandleHttpError` and only accept a status code.\nexport function useHandleObjectError(\n _flightObjs: Flight.Response<any> | Array<Flight.Response<any>>,\n customErrors?: HttpErrorMap,\n ignoreErrors?: IgnoreHttpErrorMap\n): void {\n const flightObjs = Array.isArray(_flightObjs) ? _flightObjs : [_flightObjs];\n\n useEffect(() => {\n flightObjs.forEach(obj => {\n handleHttpError(obj.statusCode, customErrors, ignoreErrors);\n });\n }, [ generateCacheKey(flightObjs), customErrors, ignoreErrors ]);\n}","// extracted by mini-css-extract-plugin\nexport default {\"video\":\"ekpg6\",\"notice\":\"lQs4F\",\"heading\":\"Gt6uV\",\"interaction\":\"LEfYX\",\"button\":\"caHP7\",\"edit\":\"de4DP\",\"questions\":\"XelbS\"};","import React from 'react';\n\nimport styles from './interactive-partial-loading.scss';\n\nexport function InteractivePartialLoading(): React.ReactElement {\n return (\n <div className='px-3 w-100'>\n <div className={`partial-loading-background ${styles.notice}`} />\n <div className={`partial-loading-background mb-3 ${styles.video}`}>\n <div className={`partial-loading-background ${styles.questions}`}></div>\n </div>\n <div className={`partial-loading-background mb-3 ${styles.heading}`}></div>\n <div>\n {Array(5).fill(null).map((_, i) => (\n <div key={i} className={`partial-loading-background my-2 ${styles.interaction}`}></div>\n ))}\n </div>\n </div>\n );\n}","import { HashObject } from 'libs/common/react/interfaces';\n\nimport { AnalyticsDataPayload } from 'libs/analytics/models/AnalyticsEvent';\n\nimport { InteractiveMetadata } from 'libs/shared/interfaces';\n\nexport function getInteractiveAnalyticsData(\n interactiveMetadata: InteractiveMetadata,\n extraAnalyticsData: HashObject = {}\n): AnalyticsDataPayload {\n if (!interactiveMetadata)\n return null;\n\n const data: AnalyticsDataPayload = {\n ...extraAnalyticsData,\n id: interactiveMetadata.id,\n interactiveId: interactiveMetadata.interactiveId,\n name: interactiveMetadata.name,\n status: interactiveMetadata.status,\n originType: interactiveMetadata.originType\n };\n\n if (interactiveMetadata?._parentClip?.id)\n data.clip = { id: interactiveMetadata?._parentClip?.id };\n \n if (interactiveMetadata?._parentVideo?.id)\n data.video = { id: interactiveMetadata?._parentVideo?.id };\n \n return data;\n}","import { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { ErrorPageError } from 'libs/shared/errors/primitives/ErrorPageError';\n\nconst namespace = 'shared.cannotEditPublishedInteractive';\n\nexport class CannotEditPublishInteractiveError extends ErrorPageError {\n constructor() {\n super(LanguageService.getPhrase(namespace, 'title'));\n }\n\n // @ts-ignore\n public get name(): string {\n return 'CannotEditPublishedInteractiveError';\n }\n\n // @ts-ignore\n public get heading(): string {\n return LanguageService.getPhrase(namespace, 'heading');\n }\n\n // @ts-ignore\n public get description(): string {\n return LanguageService.getPhrase(namespace, 'description');\n }\n}","import { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { ErrorPageError } from 'libs/shared/errors/primitives/ErrorPageError';\n\nconst namespace = 'shared.cannotEditInteractive';\n\nexport class CannotEditInteractiveError extends ErrorPageError {\n constructor() {\n super(LanguageService.getPhrase(namespace, 'title'));\n }\n\n // @ts-ignore\n public get name(): string {\n return 'CannnotEditInteractiveError';\n }\n\n // @ts-ignore\n public get heading(): string {\n return LanguageService.getPhrase(namespace, 'heading');\n }\n\n // @ts-ignore\n public get description(): string {\n return LanguageService.getPhrase(namespace, 'description');\n }\n}","import React from 'react';\nimport { useDispatch } from 'react-redux';\n\nimport { Core } from 'libs/common/core';\nimport { Flight } from 'libs/common/flight';\n\nimport { InteractiveOriginType } from 'libs/shared/enums/InteractiveOriginType';\nimport { InteractiveRequests } from 'libs/shared/flight-requests/InteractiveRequests';\nimport { EditInteractiveMetadataOriginRequest, Interactive, InteractiveMetadata } from 'libs/shared/interfaces';\n\nimport { CannotEditInteractiveError } from 'shared/errors/interactives/cannot-edit/CannotEditError';\n\nexport const useEnsureOriginal = (\n interactiveMetadata: InteractiveMetadata\n) => {\n const dispatch = useDispatch();\n\n /* Used to ensure only one request */\n const [ requested, setRequest ] = React.useState(false);\n const [ ready, setReady ] = React.useState(false);\n\n React.useEffect(() => {\n if (!interactiveMetadata || ready || requested)\n return;\n\n if (interactiveMetadata.originType === InteractiveOriginType.Original) {\n setReady(true);\n return;\n }\n\n const error = () => {\n Core.ErrorHelper.throw(new CannotEditInteractiveError());\n };\n\n const success = (resp: Interactive) => {\n const data: EditInteractiveMetadataOriginRequest = {\n originType: InteractiveOriginType.Original,\n interactiveId: resp.id\n };\n\n Flight.fetch(\n dispatch,\n InteractiveRequests.updateInteractiveMetadata(\n interactiveMetadata.id,\n data,\n () => setReady(true),\n error\n )\n );\n };\n\n setRequest(true);\n Flight.fetch(dispatch, InteractiveRequests.copyInteractive(\n interactiveMetadata.interactiveId,\n success,\n error\n ));\n }, [interactiveMetadata]);\n\n return ready;\n};","import React from 'react';\nimport { createHtmlPortalNode, OutPortal } from 'react-reverse-portal';\n\nimport { Core } from 'libs/common/core';\nimport { Flight } from 'libs/common/flight';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { AnalyticsHelper } from 'libs/analytics/AnalyticsHelper';\nimport { EntityType, LocationContext, UserAction, WorkflowPhase } from 'libs/analytics/interfaces';\n\nimport { CurationStatus } from 'libs/shared/enums/CurationStatus';\nimport { MediaIdType } from 'libs/shared/enums/MediaIdType';\nimport { VideoNotFoundError } from 'libs/shared/errors/videos/video-not-found/VideoNotFoundError';\nimport { VideoPrivateError } from 'libs/shared/errors/videos/video-private/VideoPrivateError';\nimport { ConfigRequests } from 'libs/shared/flight-requests/ConfigRequests';\nimport { InteractiveRequests } from 'libs/shared/flight-requests/InteractiveRequests';\nimport { PlayerRequests } from 'libs/shared/flight-requests/PlayerRequests';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { useHandleObjectError } from 'libs/shared/hooks/UseHandleObjectError';\nimport { Config, CurrentUser, InteractiveMetadata, PlayerViewKey } from 'libs/shared/interfaces';\nimport { PlayerAnalyticsTracker } from 'libs/shared/utils/PlayerAnalyticsTracker';\n\nimport { InteractivePlayer } from 'projects/player/players/interactive-player';\nimport { InteractiveMode } from 'projects/player/plugins/interactive-plugin/interfaces';\nimport { ClickViewInteractivePlayer } from 'projects/player/react/InteractivePlayer';\n\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\nimport { CannotEditPublishInteractiveError } from 'shared/errors/interactives/cannot-edit-published-interactive/CannotEditPublishInteractiveError';\n\nimport { InteractivePartialLoading } from 'apps/interactives/components/interactive-partial-loading/InteractivePartialLoading';\nimport { getInteractiveAnalyticsData } from 'apps/interactives/utils/getInteractiveAnalyticsData';\n\nimport { useEnsureOriginal } from './useEnsureOriginal';\n\nconst EDIT_APPLINK = {\n application: AppChannels.INTERACTIVES,\n action: Actions.Interactives.EDIT_INTERACTIVE_DETAILS\n};\n\nconst videoErrors = {\n notFound: VideoNotFoundError,\n forbidden: {\n privacy: VideoPrivateError\n }\n};\n\ninterface EditInteractiveProps {\n id: string;\n}\n\nexport function EditInteractiveView(props: EditInteractiveProps): React.ReactElement {\n const [ ready, setReady ] = React.useState(false);\n\n const [ hasCheckedStatus, setHasCheckedStatus ] = React.useState(false);\n const playerRef = React.useRef<InteractivePlayer>();\n\n const config = Flight.useBasicFetch<Config>(ConfigRequests.config());\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n\n const interactiveMetadata = Flight.useBasicFetch<InteractiveMetadata>(!!currentUser.data &&\n InteractiveRequests.interactiveMetadata(props.id));\n\n /**\n * This will check if the interactive is a copy or not\n * and update it to original if it is a copy.\n */\n const isOriginal = useEnsureOriginal(interactiveMetadata.data);\n\n /**\n * We don't fetch our view key until we know our interactive has been upgraded\n * to an original\n */\n const viewKey = Flight.useBasicFetch<PlayerViewKey>(isOriginal ?\n PlayerRequests.createViewKey(interactiveMetadata.data.id, MediaIdType.MasterObject) : null);\n\n const token = Flight.useBasicFetch<HashObject>(UserRequests.token());\n\n const actionsPortalNode = React.useMemo(() => createHtmlPortalNode(), []);\n const questionListPortalNode = React.useMemo(() => createHtmlPortalNode(), []);\n\n const analyticsTracker = React.useRef<PlayerAnalyticsTracker>();\n\n useHandleObjectError(interactiveMetadata, videoErrors);\n\n function onReady(player: InteractivePlayer): void {\n playerRef.current = player;\n\n setReady(true);\n\n analyticsTracker.current = new PlayerAnalyticsTracker({\n player,\n video: interactiveMetadata.data,\n analyticsLocation: LocationContext.EditInteractive\n });\n }\n\n if (!viewKey.data || !config.data || !interactiveMetadata.data || !token.data)\n return <InteractivePartialLoading />;\n\n /**\n * We do this because when the publish popup publishes\n * the flight state updates and this briefly re-renders\n * with data.status being published\n */\n if (!hasCheckedStatus) {\n setHasCheckedStatus(true);\n if (interactiveMetadata.data.status !== CurationStatus.Draft) {\n Core.ErrorHelper.throw(new CannotEditPublishInteractiveError());\n return null;\n }\n }\n\n const analyticsData = getInteractiveAnalyticsData(interactiveMetadata.data);\n\n const baseAnalyticsOptions = {\n entity: EntityType.Interactive,\n location: LocationContext.EditInteractive,\n workflowPhase: WorkflowPhase.Start\n };\n\n function onClickEditDetails(): void {\n AnalyticsHelper.logUserAction(analyticsData, {\n actionType: UserAction.Edit,\n ...baseAnalyticsOptions\n });\n\n Core.AppLinkHelper.trigger({\n ...EDIT_APPLINK,\n args: [props.id]\n });\n }\n\n function onClickPublish(): void {\n AnalyticsHelper.logUserAction(analyticsData, {\n actionType: UserAction.Publish,\n ...baseAnalyticsOptions\n });\n\n Core.AppLinkHelper.trigger({\n ...EDIT_APPLINK,\n args: [props.id],\n params: { publish: true }\n });\n }\n\n return (\n <>\n {!ready && <InteractivePartialLoading />}\n <div className={`px-3 ${ready ? '' : 'd-none'}`}>\n <div className='d-flex justify-content-between align-items-center mb-3'>\n <h1 className='h3 text-truncate mb-0 pb-1'>{interactiveMetadata.data.name}</h1>\n <div className='flex-shrink-0'>\n <OutPortal node={actionsPortalNode} />\n </div>\n </div>\n <ClickViewInteractivePlayer\n viewKey={viewKey.data.viewKey}\n imageApi={new URL(config.data.imageCdnUrl)}\n playerApi={new URL(config.data.playerApiUrl)}\n hotkeyElQuerySelector='body'\n autoplay\n onReady={onReady}\n currentUser={currentUser.data}\n mode={InteractiveMode.Create}\n actionsPortalNode={actionsPortalNode}\n questionListPortalNode={questionListPortalNode}\n authToken={token.data.value}\n onClickEditDetails={onClickEditDetails}\n onClickPublish={onClickPublish}\n enableImmersiveReader\n />\n <OutPortal node={questionListPortalNode} />\n </div>\n </>\n );\n}\n"],"names":["InteractiveOriginType","defaultErrors","notFound","forbidden","rating","yearLevel","region","privacy","badRequest","handleHttpError","info","customErrorMap","ignoreMap","statusCode","status","errorMap","generateCacheKey","flightObjs","map","obj","join","useHandleObjectError","_flightObjs","customErrors","ignoreErrors","Array","isArray","useEffect","forEach","InteractivePartialLoading","className","fill","_","i","key","getInteractiveAnalyticsData","interactiveMetadata","extraAnalyticsData","data","id","interactiveId","name","originType","_parentClip","clip","_parentVideo","video","namespace","CannotEditPublishInteractiveError","LanguageService","ErrorPageError","CannotEditInteractiveError","useEnsureOriginal","dispatch","requested","setRequest","ready","setReady","error","InteractiveRequests","resp","EDIT_APPLINK","application","action","videoErrors","VideoNotFoundError","VideoPrivateError","EditInteractiveView","props","hasCheckedStatus","setHasCheckedStatus","playerRef","config","ConfigRequests","currentUser","UserRequests","isOriginal","viewKey","PlayerRequests","MediaIdType","token","actionsPortalNode","questionListPortalNode","analyticsTracker","CurationStatus","analyticsData","baseAnalyticsOptions","entity","location","workflowPhase","node","ClickViewInteractivePlayer","imageApi","URL","imageCdnUrl","playerApi","playerApiUrl","hotkeyElQuerySelector","autoplay","onReady","player","current","PlayerAnalyticsTracker","analyticsLocation","mode","authToken","value","onClickEditDetails","AnalyticsHelper","actionType","args","onClickPublish","params","publish","enableImmersiveReader"],"sourceRoot":""}
@@ -0,0 +1,3 @@
1
+ /*! For license information please see 841-11af1334bf-lite.chunk.js.LICENSE.txt */
2
+ "use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[841],{49602:(e,t,n)=>{var r;n.d(t,{b:()=>c}),function(e){e[e.None=0]="None",e[e.AllSubjects=1]="AllSubjects",e[e.AllLevels=2]="AllLevels",e[e.AllSubjectsAndAllLevels=3]="AllSubjectsAndAllLevels"}(r||(r={}));var a=n(25925),c={hasManyPresentationTypes:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=0,n=0;return null==e||e.forEach((function(e){e.type===a.R.Subject?t++:e.type===a.R.Curriculum&&n++})),{hasManySubjectPresentations:t>1,hasManyCurriculumPresentations:n>1}},getBulkPreferencesState:function(e){return e===r.AllSubjectsAndAllLevels?{levels:!0,subjects:!0}:{levels:e===r.AllLevels,subjects:e===r.AllSubjects}},hasBulkSelectedLevels:function(e){return e===r.AllLevels||e===r.AllSubjectsAndAllLevels},hasBulkSelectedTopics:function(e){return e===r.AllSubjects||e===r.AllSubjectsAndAllLevels},getNextBulkState:function(e,t){var n=r.None,a=r.AllSubjects,c=r.AllLevels,l=r.AllSubjectsAndAllLevels,o="topics"===t;switch(e){case n:default:return o?a:c;case a:return o?n:l;case c:return o?l:n;case l:return o?c:a}}}},2192:(e,t,n)=>{n.d(t,{M:()=>b,Q:()=>y});var r=n(32735),a=n(45157),c=n(36848),l=n(60376),o=n(5465),i=n(83914),s=n(83345),u=n(54610),m=n(67453),d=n(45778),f=n(35223),h=n(92038),v="shared.subjectWidgetItem",p=function(e){var t=e.name,n=e.multiline,a=e.noUnderLine,c="".concat(h.Z.comingSoonPanel," \n d-flex flex-column align-items-center justify-content-center px-3 text-center"),l="";return n?l+=" ".concat(h.Z.clamped," clamp-2"):(c+=" text-nowrap",l+=" text-truncate"),r.createElement("div",{className:c},r.createElement("small",{className:"text-secondary"},r.createElement(s.x,{namespace:v,phrase:"comingSoon"})),r.createElement("p",{className:"".concat(a?"":h.Z.name," h6")},r.createElement("span",{className:l},t)))},g=function(e){var t=e.name,n=e.multiline,a=e.subtitle,c=e.noUnderLine,l=e.newVideosCount,o="px-3 d-flex flex-column justify-content-center",i="".concat(c?"":h.Z.name," h6");return n?i+=" ".concat(l?"clamp-2":"clamp-3"," text-start"):(o+=" text-nowrap text-truncate",i+=" text-truncate mb-0"),r.createElement("div",{className:o},a&&r.createElement("div",{className:"text-secondary clamp-1 ".concat(h.Z.text)},a),r.createElement("div",{className:i,title:t},t),!!l&&r.createElement("div",{className:"fw-semibold d-inline-block rounded-pill px-2 mt-1 bg-light-green w-fit h-fit text-green ".concat(h.Z.newVideos)},r.createElement(s.x,{namespace:v,phrase:"newVideos",options:{smartCount:l}})))};function b(e){var t,n=m.j.createUrl(e.coverUrl,{size:e.isLarge?u.h2.Medium:u.h2.Small}),c=void 0;d.G.isClassification(e.data)&&(c=e.data);var s={name:e.data.name,multiline:e.isLarge||e.multiline,subtitle:e.subtitle,noUnderLine:e.highlightOnHover,newVideosCount:e.showNewVideosCount?null===(t=null==c?void 0:c.externalMetadata)||void 0===t?void 0:t.childDashboardNewVideoCount:0};return r.createElement("div",{className:"".concat(e.themeColor?h.Z.hasThemeColor:"border"," d-flex position-relative ").concat(e.className," ").concat(h.Z.widgetItem," ").concat(e.isSelected?"border-success border-2":""," ").concat(e.highlightOnHover&&!e.themeColor?"bg-light-blue-hover":""),style:e.themeColor?{"--themeColor":e.themeColor}:{},id:"".concat(e.data.id,"-").concat(a.Y.getRandomInt())},e.isSelected&&r.createElement("div",{className:"".concat(h.Z.selectedMask," border-2")}),r.createElement("div",{className:"".concat(h.Z.imagePanel," ").concat(e.isLarge?h.Z.large:"")},e.isSelected&&!e.hideCheckmark&&r.createElement("div",{className:h.Z.selected},r.createElement(l.f,{svgName:f.vn.Check,svgSize:i.S.Large,textVariant:"white",variant:"green"})),r.createElement("div",{className:"".concat(h.Z.image," ").concat(e.imageClassName),style:e.coverUrl?{backgroundImage:"url('".concat(n,"')")}:{}}),!e.hideFallback&&r.createElement(o.oy,{type:o.mS.Subject,extraClasses:e.isLarge?h.Z.large:""})),e.isComingSoon?r.createElement(p,Object.assign({},s)):r.createElement(g,Object.assign({},s)))}function y(e){var t,n=e.getChildAppLink?e.getChildAppLink(e.data):null;return r.createElement(r.Fragment,null,n?r.createElement(c.F,{className:h.Z.appLink,appLink:n,analyticsData:e.analyticsData,analyticsOptions:e.analyticsOptions,appLinkOptions:null===(t=e.getChildAppLinkOptions)||void 0===t?void 0:t.call(e)},r.createElement(b,Object.assign({},e))):r.createElement(b,Object.assign({},e)))}},75919:(e,t,n)=>{n.d(t,{N:()=>c});var r=n(32735);const a={annotation:"LkdHB",above:"ROdbm",below:"OzyHx",left:"W9EBF",right:"zhio2",divider:"cdR_p",imageContainer:"QZZMF"};function c(e){return r.createElement("div",{className:(t="d-flex align-items-center text-center position-relative w-100 ".concat(a.imageContainer),"center"===e.contentPosition&&(t+=" px-5 justify-content-center"),"right"===e.contentPosition&&(t+=" me-n5 justify-content-end"),t)},!!e.annotationUrl&&r.createElement("div",{className:function(){var t=a.annotation;switch(e.annotationPosition){case"top-left":t+=" ".concat(a.above," ").concat(a.left);break;case"top-right":t+=" ".concat(a.above," ").concat(a.right);break;case"bottom-left":t+=" ".concat(a.below," ").concat(a.left);break;case"bottom-right":t+=" ".concat(a.below," ").concat(a.right)}return e.annotationClassName&&(t+=" ".concat(e.annotationClassName)),t}()},r.createElement("img",{className:"img-fluid",src:e.annotationUrl})),e.children,"right"===e.contentPosition&&r.createElement("div",{className:a.divider}));var t}c.defaultProps={contentPosition:"center"}},39375:(e,t,n)=>{n.d(t,{Y:()=>u});var r=n(32735),a=n(54610),c=n(67453),l=n(2248);const o={magicTab:"H5jzm",subjectPlaceholder:"r1L6T",placeholderCover:"z9CFT",promotedTopicPlaceholder:"PbYs6",promotedTopicPlaceholderText:"hZ8Nf"};function i(e){return r.createElement("li",{className:"col-4"},r.createElement("div",{className:"d-flex border rounded-3 overflow-hidden ".concat(o.subjectPlaceholder)},e.coverUrl?r.createElement("div",{className:o.placeholderCover},r.createElement("img",{className:"img-fluid",src:c.j.createUrl(e.coverUrl,{size:a.h2.Small})})):r.createElement("div",{className:"".concat(o.placeholderCover," bg-light-blue")})))}function s(){return r.createElement("li",{className:"col-4"},r.createElement("div",{className:"bg-light-blue rounded-3 w-100 p-1 ".concat(o.promotedTopicPlaceholder)}))}function u(e){var t,n,a,c=Math.max(12-(null!==(n=null===(t=e.subjects)||void 0===t?void 0:t.length)&&void 0!==n?n:0),0);return r.createElement(l.L,{presentation:e.presentation,curriculum:e.curriculum,editingCurriculum:e.editingCurriculum},r.createElement("div",{className:"px-3 pt-3 w-100 d-flex flex-column align-items-center"},r.createElement("div",{className:"rounded-3 border overflow-hidden d-flex mb-2"},r.createElement("div",{className:"bg-light ".concat(o.magicTab)}),r.createElement("div",{className:"".concat(o.magicTab)})),r.createElement("ul",{className:"list-unstyled mb-0 row w-100 g-xl-2 g-lg-1 mb-2"},null===(a=e.subjects)||void 0===a?void 0:a.map((function(e){var t;return r.createElement(i,{key:e.id,coverUrl:null===(t=e.cover)||void 0===t?void 0:t.url})})),new Array(c).fill(0).map((function(e,t){return r.createElement(i,{key:t})}))),r.createElement("ul",{className:"list-unstyled mb-0 row w-100 g-xl-2 g-lg-1"},r.createElement(s,null),r.createElement(s,null),r.createElement(s,null),r.createElement(s,null),r.createElement(s,null),r.createElement(s,null),r.createElement(s,null),r.createElement(s,null),r.createElement(s,null))))}},2248:(e,t,n)=>{n.d(t,{L:()=>v});var r=n(32735),a=n(60376),c=n(83914),l=n(2786),o=n(83345),i=n(72639),s=n(79967),u=n(35223),m=n(87114);const d={dot:"AlRQD",logo:"L42gR",blackBar:"ESCxm",topNav:"a3G_4",leftNav:"YxGVV",belowHeader:"jc_cg",leftNavIcon:"U6i6r",leftNavText:"LnYlW",presentationPlaceholderIcon:"Ljaju",presentationIcon:"QdwPq",presentationPlaceholderText:"af06V",curriculumIcon:"N7T4T",curriculumIconSmall:"_6xrUg",curriculumContainer:"Z65qX",iconPlaceholder:"CKOXL",shadow:"zygeJ",presentationName:"Oj7Dt"};var f="onboarding.mockLayout";function h(){return r.createElement("div",{className:"d-flex align-items-center justify-content-center mb-2 px-3"},r.createElement("div",{className:"".concat(d.leftNavIcon," rounded-circle")}),r.createElement("div",{className:"".concat(d.leftNavText," rounded-pill")}))}function v(e){var t,n,v=(0,s.k)();return r.createElement("div",{className:"border border-dark border-2 bg-white rounded-3 user-select-none overflow-hidden position-relative h-100 w-100"},!!e.editingCurriculum&&r.createElement("div",{className:"w-100 h-100 position-absolute ".concat(d.shadow)},r.createElement("div",{className:"d-flex align-items-center h-100 w-50 ".concat(d.curriculumContainer)},r.createElement("div",{className:"bg-white rounded-3 border p-3 w-100"},r.createElement("h2",{className:"h6 text-start"},r.createElement(o.x,{namespace:f,phrase:"curriculum"})),e.curriculum?r.createElement("div",{className:"d-flex align-items-center"},r.createElement("div",{className:"".concat(d.curriculumIcon," rounded-circle me-2 border")},r.createElement(a.f,{imageUrl:null===(t=e.curriculum.cover)||void 0===t?void 0:t.url})),r.createElement("div",{className:"text-start"},e.curriculum.name)):r.createElement("div",{className:"d-flex align-items-center text-secondary"},r.createElement("div",{className:"me-2 rounded-circle p-1 ".concat(d.iconPlaceholder)},r.createElement(a.f,{svgSize:c.S.Large,textVariant:"secondary",svgName:u.vn.GraduationCap})),r.createElement(o.x,{namespace:f,phrase:"selectCurriculum"}))))),r.createElement("div",{className:"bg-dark d-flex px-3 py-2 ".concat(d.blackBar)},r.createElement("div",{className:"rounded-circle me-2 ".concat(d.dot)}),r.createElement("div",{className:"rounded-circle me-2 ".concat(d.dot)}),r.createElement("div",{className:"rounded-circle ".concat(d.dot)})),r.createElement("div",{className:"border-bottom px-3 py-2 d-flex align-items-center ".concat(d.topNav)},r.createElement("div",{className:"".concat(d.logo," me-4")},v.xs?r.createElement(l.bc,null):r.createElement(l.$S,null)),r.createElement("div",{className:"form-control w-75 d-flex justify-content-start"},r.createElement(c.x,{svgName:u.vn.Search})),!!e.curriculum&&r.createElement("div",{className:"".concat(d.curriculumIconSmall," rounded-circle ms-2 me-n1 border")},r.createElement(a.f,{imageUrl:null===(n=e.curriculum.cover)||void 0===n?void 0:n.url}))),r.createElement("div",{className:"d-flex ".concat(d.belowHeader)},r.createElement("div",{className:"".concat(d.leftNav," border-end")},r.createElement("div",{className:"d-flex flex-column pt-3 h-100"},r.createElement(h,null),r.createElement(h,null),r.createElement(h,null),r.createElement(h,null),r.createElement(h,null),r.createElement("div",{className:"d-flex align-items-end h-100 w-100"},r.createElement("div",{className:"border-top p-3 w-100"},r.createElement("div",{className:"d-flex align-items-center"},r.createElement("div",{className:"".concat(function(){if(!e.presentation)return d.presentationPlaceholderIcon;switch(m.i.getMappedPresentationLevel(e.presentation.learningLevel)){case i.p.Level_1:return"bg-indigo ".concat(d.presentationIcon);case i.p.Level_3:return"bg-blue ".concat(d.presentationIcon);default:case i.p.Level_2:return"bg-green ".concat(d.presentationIcon)}}()," text-white rounded")},r.createElement(c.x,{svgName:u.vn.School,size:c.S.Large})),e.presentation?r.createElement("span",{className:"fw-semibold text-truncate ".concat(d.presentationName)},e.presentation.name):r.createElement("div",{className:"".concat(d.presentationPlaceholderText," fw-semibold")},r.createElement(o.x,{namespace:f,phrase:"schoolLevel"}))))))),r.createElement("div",{className:"w-100 h-100 overflow-hidden"},e.children)))}},59158:(e,t,n)=>{n.r(t),n.d(t,{OnboardingSubjectsView:()=>M});var r=n(32735),a=n(23481),c=n(20354),l=n(65858),o=n(60736),i=n(45716),s=n(2158),u=n(49602),m=n(11607),d=n(83345),f=n(2192),h=n(54610),v=n(77963),p=n(65728),g=n(61699),b=n(31949),y=n(84703),E=n(37802),x=n(67453),N=n(87114),w=n(99742),S=n(82817),L=n(86698),j=n(75359),k=n(12058),C=n(40695),A=n(75919),P=n(39375),I=n(73190),O=n(90815),T=n(67963);const _={selected:"igx0Y",disabled:"nDUWB",annotation:"IN0vA"};function U(e){return U="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},U(e)}function Z(){Z=function(){return t};var e,t={},n=Object.prototype,r=n.hasOwnProperty,a=Object.defineProperty||function(e,t,n){e[t]=n.value},c="function"==typeof Symbol?Symbol:{},l=c.iterator||"@@iterator",o=c.asyncIterator||"@@asyncIterator",i=c.toStringTag||"@@toStringTag";function s(e,t,n){return Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}),e[t]}try{s({},"")}catch(e){s=function(e,t,n){return e[t]=n}}function u(e,t,n,r){var c=t&&t.prototype instanceof g?t:g,l=Object.create(c.prototype),o=new P(r||[]);return a(l,"_invoke",{value:j(e,n,o)}),l}function m(e,t,n){try{return{type:"normal",arg:e.call(t,n)}}catch(e){return{type:"throw",arg:e}}}t.wrap=u;var d="suspendedStart",f="suspendedYield",h="executing",v="completed",p={};function g(){}function b(){}function y(){}var E={};s(E,l,(function(){return this}));var x=Object.getPrototypeOf,N=x&&x(x(I([])));N&&N!==n&&r.call(N,l)&&(E=N);var w=y.prototype=g.prototype=Object.create(E);function S(e){["next","throw","return"].forEach((function(t){s(e,t,(function(e){return this._invoke(t,e)}))}))}function L(e,t){function n(a,c,l,o){var i=m(e[a],e,c);if("throw"!==i.type){var s=i.arg,u=s.value;return u&&"object"==U(u)&&r.call(u,"__await")?t.resolve(u.__await).then((function(e){n("next",e,l,o)}),(function(e){n("throw",e,l,o)})):t.resolve(u).then((function(e){s.value=e,l(s)}),(function(e){return n("throw",e,l,o)}))}o(i.arg)}var c;a(this,"_invoke",{value:function(e,r){function a(){return new t((function(t,a){n(e,r,t,a)}))}return c=c?c.then(a,a):a()}})}function j(t,n,r){var a=d;return function(c,l){if(a===h)throw Error("Generator is already running");if(a===v){if("throw"===c)throw l;return{value:e,done:!0}}for(r.method=c,r.arg=l;;){var o=r.delegate;if(o){var i=k(o,r);if(i){if(i===p)continue;return i}}if("next"===r.method)r.sent=r._sent=r.arg;else if("throw"===r.method){if(a===d)throw a=v,r.arg;r.dispatchException(r.arg)}else"return"===r.method&&r.abrupt("return",r.arg);a=h;var s=m(t,n,r);if("normal"===s.type){if(a=r.done?v:f,s.arg===p)continue;return{value:s.arg,done:r.done}}"throw"===s.type&&(a=v,r.method="throw",r.arg=s.arg)}}}function k(t,n){var r=n.method,a=t.iterator[r];if(a===e)return n.delegate=null,"throw"===r&&t.iterator.return&&(n.method="return",n.arg=e,k(t,n),"throw"===n.method)||"return"!==r&&(n.method="throw",n.arg=new TypeError("The iterator does not provide a '"+r+"' method")),p;var c=m(a,t.iterator,n.arg);if("throw"===c.type)return n.method="throw",n.arg=c.arg,n.delegate=null,p;var l=c.arg;return l?l.done?(n[t.resultName]=l.value,n.next=t.nextLoc,"return"!==n.method&&(n.method="next",n.arg=e),n.delegate=null,p):l:(n.method="throw",n.arg=new TypeError("iterator result is not an object"),n.delegate=null,p)}function C(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function A(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function P(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(C,this),this.reset(!0)}function I(t){if(t||""===t){var n=t[l];if(n)return n.call(t);if("function"==typeof t.next)return t;if(!isNaN(t.length)){var a=-1,c=function n(){for(;++a<t.length;)if(r.call(t,a))return n.value=t[a],n.done=!1,n;return n.value=e,n.done=!0,n};return c.next=c}}throw new TypeError(U(t)+" is not iterable")}return b.prototype=y,a(w,"constructor",{value:y,configurable:!0}),a(y,"constructor",{value:b,configurable:!0}),b.displayName=s(y,i,"GeneratorFunction"),t.isGeneratorFunction=function(e){var t="function"==typeof e&&e.constructor;return!!t&&(t===b||"GeneratorFunction"===(t.displayName||t.name))},t.mark=function(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,y):(e.__proto__=y,s(e,i,"GeneratorFunction")),e.prototype=Object.create(w),e},t.awrap=function(e){return{__await:e}},S(L.prototype),s(L.prototype,o,(function(){return this})),t.AsyncIterator=L,t.async=function(e,n,r,a,c){void 0===c&&(c=Promise);var l=new L(u(e,n,r,a),c);return t.isGeneratorFunction(n)?l:l.next().then((function(e){return e.done?e.value:l.next()}))},S(w),s(w,i,"Generator"),s(w,l,(function(){return this})),s(w,"toString",(function(){return"[object Generator]"})),t.keys=function(e){var t=Object(e),n=[];for(var r in t)n.push(r);return n.reverse(),function e(){for(;n.length;){var r=n.pop();if(r in t)return e.value=r,e.done=!1,e}return e.done=!0,e}},t.values=I,P.prototype={constructor:P,reset:function(t){if(this.prev=0,this.next=0,this.sent=this._sent=e,this.done=!1,this.delegate=null,this.method="next",this.arg=e,this.tryEntries.forEach(A),!t)for(var n in this)"t"===n.charAt(0)&&r.call(this,n)&&!isNaN(+n.slice(1))&&(this[n]=e)},stop:function(){this.done=!0;var e=this.tryEntries[0].completion;if("throw"===e.type)throw e.arg;return this.rval},dispatchException:function(t){if(this.done)throw t;var n=this;function a(r,a){return o.type="throw",o.arg=t,n.next=r,a&&(n.method="next",n.arg=e),!!a}for(var c=this.tryEntries.length-1;c>=0;--c){var l=this.tryEntries[c],o=l.completion;if("root"===l.tryLoc)return a("end");if(l.tryLoc<=this.prev){var i=r.call(l,"catchLoc"),s=r.call(l,"finallyLoc");if(i&&s){if(this.prev<l.catchLoc)return a(l.catchLoc,!0);if(this.prev<l.finallyLoc)return a(l.finallyLoc)}else if(i){if(this.prev<l.catchLoc)return a(l.catchLoc,!0)}else{if(!s)throw Error("try statement without catch or finally");if(this.prev<l.finallyLoc)return a(l.finallyLoc)}}}},abrupt:function(e,t){for(var n=this.tryEntries.length-1;n>=0;--n){var a=this.tryEntries[n];if(a.tryLoc<=this.prev&&r.call(a,"finallyLoc")&&this.prev<a.finallyLoc){var c=a;break}}c&&("break"===e||"continue"===e)&&c.tryLoc<=t&&t<=c.finallyLoc&&(c=null);var l=c?c.completion:{};return l.type=e,l.arg=t,c?(this.method="next",this.next=c.finallyLoc,p):this.complete(l)},complete:function(e,t){if("throw"===e.type)throw e.arg;return"break"===e.type||"continue"===e.type?this.next=e.arg:"return"===e.type?(this.rval=this.arg=e.arg,this.method="return",this.next="end"):"normal"===e.type&&t&&(this.next=t),p},finish:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.finallyLoc===e)return this.complete(n.completion,n.afterLoc),A(n),p}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.tryLoc===e){var r=n.completion;if("throw"===r.type){var a=r.arg;A(n)}return a}}throw Error("illegal catch attempt")},delegateYield:function(t,n,r){return this.delegate={iterator:I(t),resultName:n,nextLoc:r},"next"===this.method&&(this.arg=e),p}},t}function B(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,c,l,o=[],i=!0,s=!1;try{if(c=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;i=!1}else for(;!(i=(r=c.call(n)).done)&&(o.push(r.value),o.length!==t);i=!0);}catch(e){s=!0,a=e}finally{try{if(!i&&null!=n.return&&(l=n.return(),Object(l)!==l))return}finally{if(s)throw a}}return o}}(e,t)||function(e,t){if(e){if("string"==typeof e)return F(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)?F(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 F(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 V=function(e,t,n,r){return new(n||(n=Promise))((function(a,c){function l(e){try{i(r.next(e))}catch(e){c(e)}}function o(e){try{i(r.throw(e))}catch(e){c(e)}}function i(e){var t;e.done?a(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(l,o)}i((r=r.apply(e,t||[])).next())}))},z="onboarding.subjects";function M(e){var t,n=(0,T.u)(),U=(0,s.T)(n).getPathway,F=c.a.useBasicFetch(b.N.currentUser()),M=(0,L.y)().preferredPresentation,G=c.a.useGetFetchAsync(),D=(0,I.Q)(e.redirectUrl),H=D.onClickBack,R=D.exitOnboarding,Y=D.onSaveError,W=D.completeStepAsync,J=(0,S.M)().preferredCurriculum,Q=(0,O.H)().logEvent,X=U(),q=i.H[X.currentScreen],K=(0,E.r)(null==q?void 0:q.analyticsLocation),$=K.updateSettingAsync,ee=K.bulkOnboardingPreferencesState,te=c.a.useBasicFetch(g.o.allSubjectPreferences()),ne=c.a.useBasicFetch(g.o.mySubjectPreferences()),re=u.b.hasBulkSelectedTopics(ee),ae=B(r.useState([]),2),ce=ae[0],le=ae[1],oe=B(r.useState(re),2),ie=oe[0],se=oe[1],ue=(0,y.n)(),me=null===(t=te.data)||void 0===t?void 0:t.filter((function(e){var t;return!!(null===(t=o.A[e.presentationId])||void 0===t?void 0:t[e.id])}));return r.useEffect((function(){var e;ne.hasCompleted&&(null===(e=ne.data)||void 0===e?void 0:e.length)&&(ie||le(ne.data))}),[ne.hasCompleted]),r.createElement(C.z,{namespace:z},r.createElement(C.z.Left,{className:"bg-dark-blue d-flex flex-column align-items-end justify-content-center"},r.createElement(A.N,{annotationUrl:w.W.OnboardingV2.Subjects.ANNOTATION,annotationPosition:"top-right",annotationClassName:"me-5 ".concat(_.annotation)},r.createElement(P.Y,{presentation:M,subjects:ie?me:ce,curriculum:J}))),r.createElement(C.z.Right,{hasCustomButtons:!1,onClickNext:function(){return V(this,void 0,void 0,Z().mark((function e(){var t,n,r;return Z().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return Q(l.Vw.Click,l.Ix.Next,{subjects:ce.map((function(e){return{subjectId:e.id,subjectName:e.name}})),allSubjectsSelected:ie,presentationId:M.id,presentationName:M.name,presentationDescription:M.description}),e.prev=1,t=[],ie!==re&&t.push($(F.data.id,{name:p.E.BulkOnboardingPreferencesState,value:u.b.getNextBulkState(ee,"topics"),kind:v.g.Permanent})),ie||(n=ce.filter((function(e){return!ne.data.find((function(t){return t.id===e.id}))})),r=ne.data.filter((function(e){return!ce.find((function(t){return t.id===e.id}))})),(null==n?void 0:n.length)&&t.push(G(g.o.followSubjects(n.map((function(e){return e.id}))))),(null==r?void 0:r.length)&&t.push(G(g.o.unfollowSubjects(r.map((function(e){return e.id})))))),e.next=7,Promise.all(t);case 7:return e.next=9,W();case 9:e.next=15;break;case 11:return e.prev=11,e.t0=e.catch(1),Y(),e.abrupt("return",Promise.reject());case 15:case"end":return e.stop()}}),e,null,[[1,11]])})))},onClickBack:H,onClickComeBackLater:R,disableNext:!ce.length&&!ie},r.createElement(j.W,null,r.createElement(d.x,{phrase:ue?"headingKdm":"heading"})),r.createElement(k.X,null,r.createElement(d.x,{phrase:"info"})),r.createElement(m.L,{onClick:function(){Q(l.Vw.Select,l.Ix.SelectAllSubjects,{presentationId:M.id,presentationName:M.name,presentationDescription:M.description}),ie||le([]),se(!ie)}},r.createElement(f.M,{data:{name:a.T.getPhrase(z,"allSubjects")},coverUrl:N.i.getPresentationLevelImage(M.learningLevel,"cover"),isSelected:ie,multiline:!0})),r.createElement("div",{className:"d-flex align-items-center justify-content-between py-3"},r.createElement("hr",{className:"m-0 flex-grow-1 border-dark"}),r.createElement("p",{className:"mb-0 px-3"},r.createElement(d.x,{phrase:"orSelectSubjects"})),r.createElement("hr",{className:"m-0 flex-grow-1 border-dark"})),r.createElement("ul",{className:"list-unstyled row g-2 mb-0"},null==me?void 0:me.map((function(e){var t,n=!!ce.find((function(t){return t.id===e.id})),a="";return ie?a+="cursor-default ".concat(_.disabled):n&&(a+=_.selected),r.createElement("li",{key:e.id,className:"col-12 col-sm-6 col-md-6 col-lg-12 col-xl-6"},r.createElement(m.L,{onClick:function(){return function(e){ie||(Q(l.Vw.Select,l.Ix.SelectSubject,{subjectId:e.id,subjectName:e.name,presentationId:M.id,presentationName:M.name,presentationDescription:M.description}),ce.find((function(t){return t.id===e.id}))?le(ce.filter((function(t){return t.id!==e.id}))):le(ce.concat(e)))}(e)},disabled:ie,className:a},r.createElement(f.M,{data:e,coverUrl:x.j.createUrl(null===(t=e.cover)||void 0===t?void 0:t.url,{size:h.h2.Small}),isSelected:n,multiline:!0})))}))),r.createElement(k.X,{className:"mt-2"},r.createElement(d.x,{phrase:"addMoreLater"}))))}},92038:(e,t,n)=>{n.d(t,{Z:()=>r});const r={appLink:"fFjKN",name:"A_by9",selectedMask:"xSQtR",widgetItem:"Ys9W_",hasThemeColor:"DX2ua",text:"JfAoy",imagePanel:"aUNDc",partialLargeImage:"RuLxv",selected:"BViJb",image:"LkTep",dragHandle:"CJqvP",large:"R5clw",comingSoonPanel:"Wa2PG",newVideos:"s61h8",editSubjectsItem:"gGNFD",allSubjectsItem:"IHdlJ",logoContainer:"Nzaes",draggingItem:"zUOye",partialLargeFallback:"FmJP9",partialIcon:"sdZuo"}}}]);
3
+ //# sourceMappingURL=841-11af1334bf-lite.chunk.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scripts/841-11af1334bf-lite.chunk.js","mappings":"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","sources":["file:///app/packages/libs/shared/src/enums/BulkOnboardingPreferencesState.ts","file:///app/packages/libs/shared/src/apps/subjects/utils/OnboardingHelper.ts","file:///app/packages/libs/shared/src/components/widgets/items/subject-widget-item/CoverPill.tsx","file:///app/packages/projects/lite/src/apps/onboarding/components/left-panel-item/left-panel-item.scss","file:///app/packages/projects/lite/src/apps/onboarding/components/left-panel-item/LeftPanelItem.tsx","file:///app/packages/projects/lite/src/apps/onboarding/components/mock-views/discover/mock-discover.scss","file:///app/packages/projects/lite/src/apps/onboarding/components/mock-views/discover/MockDiscover.tsx","file:///app/packages/projects/lite/src/apps/onboarding/components/mock-views/layout/mock-layout.scss","file:///app/packages/projects/lite/src/apps/onboarding/components/mock-views/layout/MockLayout.tsx","file:///app/packages/projects/lite/src/apps/onboarding/views/subjects/subjects.scss","file:///app/packages/projects/lite/src/apps/onboarding/views/subjects/OnboardingSubjectsView.tsx","file:///app/packages/libs/shared/src/components/widgets/items/subject-widget-item/cover-pill.scss"],"sourcesContent":["export enum BulkOnboardingPreferencesState {\n None = 0,\n AllSubjects = 1,\n AllLevels = 2,\n AllSubjectsAndAllLevels = 3\n}","import { HashObject } from 'libs/common/react/interfaces';\n\nimport { BulkOnboardingPreferencesState } from 'libs/shared/enums/BulkOnboardingPreferencesState';\nimport { PresentationType } from 'libs/shared/enums/PresentationType';\nimport { Presentation } from 'libs/shared/interfaces';\n\n/**\n * These are all the valid preference steps in the onboarding worflow\n * Steps are displayed in full workflow order from left to right.\n * \n * Important: Not all customers/users will be required to compelete all steps.\n * \n * School-level = presentation selection for K12\n */\nexport type OnboardingStep = 'welcome' | 'school-level' | 'curriculum' | 'audiences' | 'topics' | 'summary' ;\n\nexport const OnboardingHelper = {\n hasManyPresentationTypes(presentations: Presentation[] = []): HashObject {\n let totalAvailableSubjectPresentations = 0;\n let totalAvailableCurriculumPresentations = 0;\n\n presentations?.forEach(p => {\n if (p.type === PresentationType.Subject)\n totalAvailableSubjectPresentations++;\n\n else if (p.type === PresentationType.Curriculum)\n totalAvailableCurriculumPresentations++;\n });\n\n /**\n * The checks for \"> 1\" are done because we _only_ want to display presentation selectors\n * if the user has more than 1 presentation to select from. If they only have 1 available,\n * then that will always be used by default and they don't have to make any decisions.\n */\n return {\n hasManySubjectPresentations: totalAvailableSubjectPresentations > 1,\n hasManyCurriculumPresentations: totalAvailableCurriculumPresentations > 1\n };\n },\n\n getBulkPreferencesState(state: BulkOnboardingPreferencesState): { [key in 'levels' | 'subjects']: boolean } {\n if (state === BulkOnboardingPreferencesState.AllSubjectsAndAllLevels)\n return {\n levels: true,\n subjects: true\n };\n\n return {\n levels: state === BulkOnboardingPreferencesState.AllLevels,\n subjects: state === BulkOnboardingPreferencesState.AllSubjects\n };\n },\n\n hasBulkSelectedLevels(bulkState: BulkOnboardingPreferencesState): boolean {\n return (\n bulkState === BulkOnboardingPreferencesState.AllLevels ||\n bulkState === BulkOnboardingPreferencesState.AllSubjectsAndAllLevels\n );\n },\n\n hasBulkSelectedTopics(bulkState: BulkOnboardingPreferencesState): boolean {\n return (\n bulkState === BulkOnboardingPreferencesState.AllSubjects ||\n bulkState === BulkOnboardingPreferencesState.AllSubjectsAndAllLevels\n );\n },\n\n getNextBulkState(current: BulkOnboardingPreferencesState, managing: 'topics' | 'audiences'): BulkOnboardingPreferencesState {\n const { None, AllSubjects, AllLevels, AllSubjectsAndAllLevels } = BulkOnboardingPreferencesState;\n\n const isManagingTopics = managing === 'topics';\n\n switch (current) {\n case None:\n default:\n return isManagingTopics ? AllSubjects : AllLevels;\n case AllSubjects:\n return isManagingTopics ? None : AllSubjectsAndAllLevels;\n case AllLevels:\n return isManagingTopics ? AllSubjectsAndAllLevels : None;\n case AllSubjectsAndAllLevels:\n return isManagingTopics ? AllLevels : AllSubjects;\n }\n }\n};\n","import * as React from 'react';\n\nimport { Core } from 'libs/common/core';\nimport { RandomHelper } from 'libs/common/react/utils/RandomHelper';\n\nimport { AnalyticsOptions, HashObject } from 'libs/analytics/interfaces';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { IconCircle } from 'libs/shared/components/icon-circle/IconCircle';\nimport { ImageFallback, ImageFallbackType } from 'libs/shared/components/image/ImageFallback';\nimport { SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { ImageSize } from 'libs/shared/enums/Images';\nimport { BaseObject, Classification, Presentation } from 'libs/shared/interfaces';\nimport { ImageHelper } from 'libs/shared/utils/ImageHelper';\nimport { MasterTypeHelper } from 'libs/shared/utils/MasterTypeHelper';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport styles from './cover-pill.scss';\n\nconst namespace = 'shared.subjectWidgetItem';\n\ninterface NamePanelProps {\n name: string;\n multiline?: boolean;\n subtitle?: string;\n noUnderLine?: boolean;\n newVideosCount?: number;\n}\n\nconst ComingSoonNamePanel = ({ name, multiline, noUnderLine }: NamePanelProps) => {\n let wrapperClassName = `${styles.comingSoonPanel} \n d-flex flex-column align-items-center justify-content-center px-3 text-center`;\n\n let textClassName = '';\n\n if (!multiline) {\n wrapperClassName += ' text-nowrap';\n textClassName += ' text-truncate';\n } else {\n textClassName += ` ${styles.clamped} clamp-2`;\n }\n\n return (\n <div className={wrapperClassName}>\n <small className='text-secondary'><Text namespace={namespace} phrase='comingSoon' /></small>\n <p className={`${noUnderLine ? '' : styles.name} h6`}><span className={textClassName}>{name}</span></p>\n </div>\n );\n};\n\nconst NormalNamePanel = ({ name, multiline, subtitle, noUnderLine, newVideosCount }: NamePanelProps) => {\n let wrapperClassName = 'px-3 d-flex flex-column justify-content-center';\n let textClassName = `${noUnderLine ? '' : styles.name} h6`;\n\n if (!multiline) {\n wrapperClassName += ' text-nowrap text-truncate';\n textClassName += ' text-truncate mb-0';\n } else {\n textClassName += ` ${newVideosCount ? 'clamp-2' : 'clamp-3'} text-start`;\n }\n\n return (\n <div className={wrapperClassName}>\n {subtitle && <div className={`text-secondary clamp-1 ${styles.text}`}>{subtitle}</div>}\n <div className={textClassName} title={name}>{name}</div>\n {!!newVideosCount && (\n <div className={`fw-semibold d-inline-block rounded-pill px-2 mt-1 bg-light-green w-fit h-fit text-green ${styles.newVideos}`}>\n <Text namespace={namespace} phrase='newVideos' options={{ smartCount: newVideosCount }} />\n </div>\n )}\n </div>\n );\n};\n\nexport interface CoverPillWidgetItemProps<T extends BaseObject> {\n data: T;\n getChildAppLink?: (data: T) => Core.AppLink;\n getChildAppLinkOptions?: () => Core.AppLinkOptions;\n isLarge?: boolean;\n analyticsData?: HashObject;\n analyticsOptions?: AnalyticsOptions;\n availablePresentations?: Presentation[];\n getSubtitle?: (data: T) => string;\n multiline?: boolean;\n // set to true it will highlight on hover and also remove the hover text underline\n highlightOnHover?: boolean;\n showNewVideosCount?: boolean;\n themeColor?: string;\n}\n\ninterface CoverPillWidgetContentProps<T> extends CoverPillWidgetItemProps<T> {\n coverUrl?: string;\n subtitle?: string;\n isComingSoon?: boolean;\n className?: string;\n imageClassName?: string;\n isSelected?: boolean;\n hideFallback?: boolean;\n hideCheckmark?: boolean;\n themeColor?: string;\n}\n\nexport function CoverPillWidgetContent(props: CoverPillWidgetContentProps<BaseObject>): JSX.Element {\n const coverUrl = ImageHelper.createUrl(props.coverUrl, { size: props.isLarge ? ImageSize.Medium : ImageSize.Small });\n\n let classification: Classification | undefined = undefined;\n if (MasterTypeHelper.isClassification(props.data)) {\n classification = props.data;\n }\n\n const childProps = {\n name: props.data.name,\n multiline: props.isLarge || props.multiline,\n subtitle: props.subtitle,\n noUnderLine: props.highlightOnHover,\n newVideosCount: props.showNewVideosCount ? classification?.externalMetadata?.childDashboardNewVideoCount : 0\n };\n\n return (\n <div\n className={`${props.themeColor ? styles.hasThemeColor : 'border'} d-flex position-relative ${props.className} ${styles.widgetItem} ${props.isSelected ? 'border-success border-2' : ''} ${props.highlightOnHover && !props.themeColor ? 'bg-light-blue-hover' : ''}`}\n style={props.themeColor ? { '--themeColor': props.themeColor } as unknown as React.CSSProperties : {}}\n id={`${props.data.id}-${RandomHelper.getRandomInt()}`}\n >\n {props.isSelected && (\n <div className={`${styles.selectedMask} border-2`} />\n )}\n\n <div className={`${styles.imagePanel} ${props.isLarge ? styles.large : ''}`}>\n {props.isSelected && !props.hideCheckmark && (\n <div className={styles.selected}>\n <IconCircle svgName={cvSvgLibrary.Check} svgSize={SvgContainerSize.Large} textVariant='white' variant='green' />\n </div>\n )}\n\n <div\n className={`${styles.image} ${props.imageClassName}`}\n style={props.coverUrl ? { backgroundImage: `url('${coverUrl}')` } : {}}\n />\n {!props.hideFallback && (\n <ImageFallback\n type={ImageFallbackType.Subject}\n extraClasses={props.isLarge ? styles.large : ''}\n />\n )}\n </div>\n\n {props.isComingSoon\n ? <ComingSoonNamePanel {...childProps} />\n : <NormalNamePanel {...childProps} />\n }\n </div>\n );\n}\n\nexport function CoverPillWidgetContentWrapper(props: CoverPillWidgetContentProps<BaseObject>) {\n const appLink = props.getChildAppLink ? props.getChildAppLink(props.data) : null;\n\n return (\n <>\n {appLink ? (\n <AppLink\n className={styles.appLink}\n appLink={appLink}\n analyticsData={props.analyticsData}\n analyticsOptions={props.analyticsOptions}\n appLinkOptions={props.getChildAppLinkOptions?.()}\n >\n <CoverPillWidgetContent {...props} />\n </AppLink>\n ) : (<CoverPillWidgetContent {...props} />)\n }\n </>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"annotation\":\"LkdHB\",\"above\":\"ROdbm\",\"below\":\"OzyHx\",\"left\":\"W9EBF\",\"right\":\"zhio2\",\"divider\":\"cdR_p\",\"imageContainer\":\"QZZMF\"};","import React from 'react';\n\nimport styles from './left-panel-item.scss';\n\ninterface LeftPanelItemProps {\n contentPosition?: 'center' | 'right';\n annotationUrl?: string;\n annotationPosition?: 'top-left' | 'top-right' | 'bottom-left' | 'bottom-right';\n annotationClassName?: string;\n}\n\nLeftPanelItem.defaultProps = {\n contentPosition: 'center'\n};\n\nexport function LeftPanelItem(props: React.PropsWithChildren<LeftPanelItemProps>): JSX.Element {\n function getAnnotationClassName(): string {\n let className = styles.annotation;\n\n switch (props.annotationPosition) {\n case 'top-left': {\n className += ` ${styles.above} ${styles.left}`;\n break;\n }\n\n case 'top-right': {\n className += ` ${styles.above} ${styles.right}`;\n break;\n }\n\n case 'bottom-left': {\n className += ` ${styles.below} ${styles.left}`;\n break;\n }\n\n case 'bottom-right': {\n className += ` ${styles.below} ${styles.right}`;\n break;\n }\n }\n\n if (props.annotationClassName)\n className += ` ${props.annotationClassName}`;\n\n return className;\n }\n\n function getContainerClassName(): string {\n let className = `d-flex align-items-center text-center position-relative w-100 ${styles.imageContainer}`;\n\n if (props.contentPosition === 'center')\n className += ' px-5 justify-content-center';\n\n if (props.contentPosition === 'right')\n className += ' me-n5 justify-content-end';\n\n return className;\n }\n\n return (\n <div className={getContainerClassName()}>\n {!!props.annotationUrl && (\n <div className={getAnnotationClassName()}>\n <img className={`img-fluid`} src={props.annotationUrl} />\n </div>\n )}\n\n {props.children}\n {props.contentPosition === 'right' && (\n <div className={styles.divider} />\n )}\n </div>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"magicTab\":\"H5jzm\",\"subjectPlaceholder\":\"r1L6T\",\"placeholderCover\":\"z9CFT\",\"promotedTopicPlaceholder\":\"PbYs6\",\"promotedTopicPlaceholderText\":\"hZ8Nf\"};","import React from 'react';\n\nimport { ImageSize } from 'libs/shared/enums/Images';\nimport { Classification, Presentation } from 'libs/shared/interfaces';\nimport { ImageHelper } from 'libs/shared/utils/ImageHelper';\n\nimport { MockLayout } from 'apps/onboarding/components/mock-views/layout/MockLayout';\n\nimport styles from './mock-discover.scss';\n\ninterface SubjectPlaceholderProps {\n coverUrl?: string;\n}\n\nfunction SubjectPlaceholder(props: SubjectPlaceholderProps): JSX.Element {\n return (\n <li className='col-4'>\n <div className={`d-flex border rounded-3 overflow-hidden ${styles.subjectPlaceholder}`}>\n {props.coverUrl ? (\n <div className={styles.placeholderCover}>\n <img className='img-fluid' src={ImageHelper.createUrl(props.coverUrl, { size: ImageSize.Small })} />\n </div>\n ) : (\n <div className={`${styles.placeholderCover} bg-light-blue`} />\n )}\n </div>\n </li>\n );\n}\n\nfunction PromotedTopicPlaceholder(): JSX.Element {\n return (\n <li className='col-4'>\n <div className={`bg-light-blue rounded-3 w-100 p-1 ${styles.promotedTopicPlaceholder}`} />\n </li>\n );\n}\n\ninterface MockDiscoverProps {\n subjects?: Classification[];\n presentation?: Presentation;\n curriculum?: Presentation;\n editingCurriculum?: boolean;\n}\n\nexport function MockDiscover(props: MockDiscoverProps): JSX.Element {\n const placeholderSubjects = Math.max(12 - (props.subjects?.length ?? 0), 0);\n\n return (\n <MockLayout\n presentation={props.presentation}\n curriculum={props.curriculum}\n editingCurriculum={props.editingCurriculum}\n >\n <div className='px-3 pt-3 w-100 d-flex flex-column align-items-center'>\n {/* Magic tabs */}\n <div className='rounded-3 border overflow-hidden d-flex mb-2'>\n <div className={`bg-light ${styles.magicTab}`} />\n <div className={`${styles.magicTab}`} />\n </div>\n\n {/* Subjects */}\n <ul className='list-unstyled mb-0 row w-100 g-xl-2 g-lg-1 mb-2'>\n {props.subjects?.map(subject => {\n return (\n <SubjectPlaceholder key={subject.id} coverUrl={subject.cover?.url} />\n );\n })}\n {new Array(placeholderSubjects).fill(0).map((_, index) => {\n return (\n <SubjectPlaceholder key={index} />\n );\n })}\n </ul>\n\n {/* Promoted topics */}\n <ul className='list-unstyled mb-0 row w-100 g-xl-2 g-lg-1'>\n <PromotedTopicPlaceholder />\n <PromotedTopicPlaceholder />\n <PromotedTopicPlaceholder />\n <PromotedTopicPlaceholder />\n <PromotedTopicPlaceholder />\n <PromotedTopicPlaceholder />\n <PromotedTopicPlaceholder />\n <PromotedTopicPlaceholder />\n <PromotedTopicPlaceholder />\n </ul>\n </div>\n </MockLayout>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"dot\":\"AlRQD\",\"logo\":\"L42gR\",\"blackBar\":\"ESCxm\",\"topNav\":\"a3G_4\",\"leftNav\":\"YxGVV\",\"belowHeader\":\"jc_cg\",\"leftNavIcon\":\"U6i6r\",\"leftNavText\":\"LnYlW\",\"presentationPlaceholderIcon\":\"Ljaju\",\"presentationIcon\":\"QdwPq\",\"presentationPlaceholderText\":\"af06V\",\"curriculumIcon\":\"N7T4T\",\"curriculumIconSmall\":\"_6xrUg\",\"curriculumContainer\":\"Z65qX\",\"iconPlaceholder\":\"CKOXL\",\"shadow\":\"zygeJ\",\"presentationName\":\"Oj7Dt\"};","import React from 'react';\n\nimport { IconCircle } from 'libs/shared/components/icon-circle/IconCircle';\nimport { SvgContainer, SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\nimport { ClickViewLogo, ClickViewPrimaryLogo } from 'libs/shared/components/svgs/clickview-logo/ClickViewLogo';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { PresentationLearningLevel } from 'libs/shared/enums/PresentationLearningLevel';\nimport { useBreakpoints } from 'libs/shared/hooks/useBreakpoints';\nimport { Presentation } from 'libs/shared/interfaces';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\nimport { TopicsHelper } from 'libs/shared/utils/topics-helper/TopicsHelper';\n\nimport styles from './mock-layout.scss';\n\nconst namespace = 'onboarding.mockLayout';\n\nfunction LeftNavItem(): JSX.Element {\n return (\n <div className='d-flex align-items-center justify-content-center mb-2 px-3'>\n <div className={`${styles.leftNavIcon} rounded-circle`} />\n <div className={`${styles.leftNavText} rounded-pill`} />\n </div>\n );\n}\n\ninterface MockLayoutProps {\n editingCurriculum?: boolean;\n curriculum?: Presentation;\n presentation?: Presentation;\n}\n\nexport function MockLayout(props: React.PropsWithChildren<MockLayoutProps>): JSX.Element {\n const breakpoints = useBreakpoints();\n \n function getPresentationClass(): string {\n if (!props.presentation)\n return styles.presentationPlaceholderIcon;\n\n switch (TopicsHelper.getMappedPresentationLevel(props.presentation.learningLevel)) {\n case PresentationLearningLevel.Level_1:\n return `bg-indigo ${styles.presentationIcon}`;\n\n case PresentationLearningLevel.Level_3:\n return `bg-blue ${styles.presentationIcon}`;\n\n default:\n case PresentationLearningLevel.Level_2:\n return `bg-green ${styles.presentationIcon}`;\n }\n }\n\n return (\n <div className={`border border-dark border-2 bg-white rounded-3 user-select-none overflow-hidden position-relative h-100 w-100`}>\n {!!props.editingCurriculum && (\n <div className={`w-100 h-100 position-absolute ${styles.shadow}`}>\n <div className={`d-flex align-items-center h-100 w-50 ${styles.curriculumContainer}`}>\n <div className='bg-white rounded-3 border p-3 w-100'>\n <h2 className='h6 text-start'><Text namespace={namespace} phrase='curriculum' /></h2>\n\n {props.curriculum ? (\n <div className='d-flex align-items-center'>\n <div className={`${styles.curriculumIcon} rounded-circle me-2 border`}>\n <IconCircle imageUrl={props.curriculum.cover?.url} />\n </div>\n <div className='text-start'>{props.curriculum.name}</div>\n </div>\n ) : (\n <div className='d-flex align-items-center text-secondary'>\n <div className={`me-2 rounded-circle p-1 ${styles.iconPlaceholder}`}>\n <IconCircle svgSize={SvgContainerSize.Large} textVariant='secondary' svgName={cvSvgLibrary.GraduationCap} />\n </div>\n <Text namespace={namespace} phrase='selectCurriculum' />\n </div>\n )}\n </div>\n </div>\n </div>\n )}\n\n {/* Black bar */}\n <div className={`bg-dark d-flex px-3 py-2 ${styles.blackBar}`}>\n <div className={`rounded-circle me-2 ${styles.dot}`} />\n <div className={`rounded-circle me-2 ${styles.dot}`} />\n <div className={`rounded-circle ${styles.dot}`} />\n </div>\n\n {/* Header */}\n <div className={`border-bottom px-3 py-2 d-flex align-items-center ${styles.topNav}`}>\n <div className={`${styles.logo} me-4`}>\n {breakpoints.xs ? (\n <ClickViewPrimaryLogo />\n ) : (\n <ClickViewLogo />\n )}\n </div>\n <div className='form-control w-75 d-flex justify-content-start'>\n <SvgContainer svgName={cvSvgLibrary.Search} />\n </div>\n {!!props.curriculum && (\n <div className={`${styles.curriculumIconSmall} rounded-circle ms-2 me-n1 border`}>\n <IconCircle imageUrl={props.curriculum.cover?.url} />\n </div>\n )}\n </div>\n\n <div className={`d-flex ${styles.belowHeader}`}>\n {/* Left nav */}\n <div className={`${styles.leftNav} border-end`}>\n <div className='d-flex flex-column pt-3 h-100'>\n <LeftNavItem />\n <LeftNavItem />\n <LeftNavItem />\n <LeftNavItem />\n <LeftNavItem />\n\n {/* Presentation */}\n <div className='d-flex align-items-end h-100 w-100'>\n <div className='border-top p-3 w-100'>\n <div className='d-flex align-items-center'>\n <div className={`${getPresentationClass()} text-white rounded`}>\n <SvgContainer svgName={cvSvgLibrary.School} size={SvgContainerSize.Large} />\n </div>\n\n {!props.presentation ? (\n <div className={`${styles.presentationPlaceholderText} fw-semibold`}>\n <Text namespace={namespace} phrase='schoolLevel' />\n </div>\n ) : (\n <span className={`fw-semibold text-truncate ${styles.presentationName}`}>{props.presentation.name}</span>\n )}\n </div>\n </div>\n </div>\n </div>\n </div>\n\n {/* Main content */}\n <div className={`w-100 h-100 overflow-hidden`}>\n {props.children}\n </div>\n </div>\n </div>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"selected\":\"igx0Y\",\"disabled\":\"nDUWB\",\"annotation\":\"IN0vA\"};","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Flight } from 'libs/common/react/index';\n\nimport { OnboardingDescriptor, UserAction } from 'libs/analytics/interfaces';\n\nimport { ClassificationVideosMap } from 'libs/shared/apps/onboarding/constants/ClassificationVideos';\nimport { OnboardingScreenConfigs } from 'libs/shared/apps/onboarding/constants/OnboardingScreenConfigs';\nimport { useOnboardingPathway } from 'libs/shared/apps/onboarding/hooks/useOnboardingPathway';\nimport { OnboardingHelper } from 'libs/shared/apps/subjects/utils/OnboardingHelper';\nimport { DivButton } from 'libs/shared/components/div-button/DivButton';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { CoverPillWidgetContent } from 'libs/shared/components/widgets/items/subject-widget-item/CoverPill';\nimport { ImageSize } from 'libs/shared/enums/Images';\nimport { SettingKind } from 'libs/shared/enums/SettingKind';\nimport { SettingName } from 'libs/shared/enums/SettingName';\nimport { PreferenceRequests } from 'libs/shared/flight-requests/PreferenceRequests';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { useIsKDM } from 'libs/shared/hooks/UseIsKdm';\nimport { useSettings } from 'libs/shared/hooks/useSettings';\nimport { Classification, CurrentUser } from 'libs/shared/interfaces';\nimport { ImageHelper } from 'libs/shared/utils/ImageHelper';\nimport { TopicsHelper } from 'libs/shared/utils/topics-helper/TopicsHelper';\n\nimport { ImageUrls } from 'shared/constants/ImageUrls';\nimport { useCurriculums } from 'shared/hooks/useCurriculums';\nimport { usePresentation } from 'shared/hooks/usePresentation';\n\nimport { OnboardingScreenHeading } from 'apps/onboarding/components/heading/OnboardingScreenHeading';\nimport { OnboardingScreenInfo } from 'apps/onboarding/components/info/OnboardingScreenInfo';\nimport { OnboardingLayout } from 'apps/onboarding/components/layout/OnboardingLayout';\nimport { LeftPanelItem } from 'apps/onboarding/components/left-panel-item/LeftPanelItem';\nimport { MockDiscover } from 'apps/onboarding/components/mock-views/discover/MockDiscover';\nimport { useOnboardingCallbacks } from 'apps/onboarding/hooks/useOnboardingCallbacks';\nimport { useOnboardingEventLogger } from 'apps/onboarding/hooks/useOnboardingEventLogger';\nimport { OnboardingViewProps } from 'apps/onboarding/interfaces/OnboardingViewProps';\nimport { getOnboardingAppLinks } from 'apps/onboarding/utils/OnboardingAppLinkHelper';\n\nimport styles from './subjects.scss';\n\nconst namespace = 'onboarding.subjects';\n\nexport function OnboardingSubjectsView(props: OnboardingViewProps): JSX.Element {\n const appLinks = getOnboardingAppLinks();\n const { getPathway } = useOnboardingPathway(appLinks);\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n const { preferredPresentation } = usePresentation();\n const fetchAsync = Flight.useGetFetchAsync();\n const {\n onClickBack,\n exitOnboarding,\n onSaveError,\n completeStepAsync\n } = useOnboardingCallbacks(props.redirectUrl);\n const { preferredCurriculum } = useCurriculums();\n const { logEvent } = useOnboardingEventLogger();\n\n const pathway = getPathway();\n const screenConfig = OnboardingScreenConfigs[pathway.currentScreen];\n\n const { updateSettingAsync, bulkOnboardingPreferencesState } = useSettings(screenConfig?.analyticsLocation);\n\n const subjects = Flight.useBasicFetch<Classification[]>(PreferenceRequests.allSubjectPreferences());\n const initialSelectedSubjects = Flight.useBasicFetch<Classification[]>(PreferenceRequests.mySubjectPreferences());\n const initialBulkState = OnboardingHelper.hasBulkSelectedTopics(bulkOnboardingPreferencesState);\n\n const [ selectedSubjects, setSelectedSubjects ] = React.useState<Classification[]>([]);\n const [ allSubjectsSelected, setAllSubjectsSelected ] = React.useState(initialBulkState);\n\n const isKDM = useIsKDM();\n\n const selectableSubjects = subjects.data?.filter(subject => {\n return !!ClassificationVideosMap[subject.presentationId]?.[subject.id];\n });\n\n React.useEffect(() => {\n if (!initialSelectedSubjects.hasCompleted || !initialSelectedSubjects.data?.length)\n return;\n\n if (allSubjectsSelected)\n return;\n\n setSelectedSubjects(initialSelectedSubjects.data);\n }, [initialSelectedSubjects.hasCompleted]);\n\n function onSelectSubject(subject: Classification): void {\n if (allSubjectsSelected)\n return;\n\n logEvent(UserAction.Select, OnboardingDescriptor.SelectSubject, {\n subjectId: subject.id,\n subjectName: subject.name,\n presentationId: preferredPresentation.id,\n presentationName: preferredPresentation.name,\n presentationDescription: preferredPresentation.description\n });\n\n if (selectedSubjects.find(s => s.id === subject.id)) {\n setSelectedSubjects(selectedSubjects.filter(s => s.id !== subject.id));\n return;\n }\n\n setSelectedSubjects(selectedSubjects.concat(subject));\n }\n\n function onClickAllSubjects(): void {\n logEvent(UserAction.Select, OnboardingDescriptor.SelectAllSubjects, {\n presentationId: preferredPresentation.id,\n presentationName: preferredPresentation.name,\n presentationDescription: preferredPresentation.description\n });\n\n if (!allSubjectsSelected)\n setSelectedSubjects([]);\n\n setAllSubjectsSelected(!allSubjectsSelected);\n }\n\n async function onClickNext(): Promise<void> {\n logEvent(UserAction.Click, OnboardingDescriptor.Next, {\n subjects: selectedSubjects.map(s => ({\n subjectId: s.id,\n subjectName: s.name\n })),\n allSubjectsSelected,\n presentationId: preferredPresentation.id,\n presentationName: preferredPresentation.name,\n presentationDescription: preferredPresentation.description\n });\n\n try {\n const requests: Promise<void>[] = [];\n\n if (allSubjectsSelected !== initialBulkState) {\n requests.push(\n updateSettingAsync(currentUser.data.id, {\n name: SettingName.BulkOnboardingPreferencesState,\n value: OnboardingHelper.getNextBulkState(bulkOnboardingPreferencesState, 'topics'),\n kind: SettingKind.Permanent\n })\n );\n }\n\n if (!allSubjectsSelected) {\n const addedSubjects = selectedSubjects.filter(selection => {\n return !initialSelectedSubjects.data.find(p => p.id === selection.id);\n });\n const removedSubjects = initialSelectedSubjects.data.filter(p => !selectedSubjects.find(s => s.id === p.id));\n \n if (addedSubjects?.length)\n requests.push(fetchAsync<void>(PreferenceRequests.followSubjects(addedSubjects.map(s => s.id))));\n \n if (removedSubjects?.length)\n requests.push(fetchAsync<void>(PreferenceRequests.unfollowSubjects(removedSubjects.map(s => s.id))));\n }\n\n await Promise.all(requests);\n await completeStepAsync();\n } catch {\n onSaveError();\n return Promise.reject();\n }\n }\n\n return (\n <OnboardingLayout namespace={namespace}>\n <OnboardingLayout.Left className='bg-dark-blue d-flex flex-column align-items-end justify-content-center'>\n <LeftPanelItem\n annotationUrl={ImageUrls.OnboardingV2.Subjects.ANNOTATION}\n annotationPosition='top-right'\n annotationClassName={`me-5 ${styles.annotation}`}\n >\n <MockDiscover\n presentation={preferredPresentation}\n subjects={allSubjectsSelected ? selectableSubjects : selectedSubjects}\n curriculum={preferredCurriculum}\n />\n </LeftPanelItem>\n </OnboardingLayout.Left>\n\n <OnboardingLayout.Right\n hasCustomButtons={false}\n onClickNext={onClickNext}\n onClickBack={onClickBack}\n onClickComeBackLater={exitOnboarding}\n disableNext={!selectedSubjects.length && !allSubjectsSelected}\n >\n <OnboardingScreenHeading>\n <Text phrase={isKDM ? 'headingKdm' : 'heading'} />\n </OnboardingScreenHeading>\n\n <OnboardingScreenInfo>\n <Text phrase='info' />\n </OnboardingScreenInfo>\n\n <DivButton onClick={onClickAllSubjects}>\n <CoverPillWidgetContent\n data={{ name: LanguageService.getPhrase(namespace, 'allSubjects') }}\n coverUrl={TopicsHelper.getPresentationLevelImage(preferredPresentation.learningLevel, 'cover')}\n isSelected={allSubjectsSelected}\n multiline\n />\n </DivButton>\n\n <div className='d-flex align-items-center justify-content-between py-3'>\n <hr className='m-0 flex-grow-1 border-dark' />\n\n <p className='mb-0 px-3'><Text phrase='orSelectSubjects' /></p>\n\n <hr className='m-0 flex-grow-1 border-dark' />\n </div>\n\n <ul className='list-unstyled row g-2 mb-0'>\n {selectableSubjects?.map(subject => {\n const isSelected = !!selectedSubjects.find(s => s.id === subject.id);\n\n let className = '';\n\n if (allSubjectsSelected)\n className += `cursor-default ${styles.disabled}`;\n else if (isSelected)\n className += styles.selected;\n \n return (\n <li key={subject.id} className='col-12 col-sm-6 col-md-6 col-lg-12 col-xl-6'>\n <DivButton\n onClick={() => onSelectSubject(subject)}\n disabled={allSubjectsSelected}\n className={className}\n >\n <CoverPillWidgetContent\n data={subject}\n coverUrl={ImageHelper.createUrl(subject.cover?.url, {\n size: ImageSize.Small\n })}\n isSelected={isSelected}\n multiline\n />\n </DivButton>\n </li>\n );\n })}\n </ul>\n\n <OnboardingScreenInfo className='mt-2'>\n <Text phrase='addMoreLater' />\n </OnboardingScreenInfo>\n </OnboardingLayout.Right>\n </OnboardingLayout>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"appLink\":\"fFjKN\",\"name\":\"A_by9\",\"selectedMask\":\"xSQtR\",\"widgetItem\":\"Ys9W_\",\"hasThemeColor\":\"DX2ua\",\"text\":\"JfAoy\",\"imagePanel\":\"aUNDc\",\"partialLargeImage\":\"RuLxv\",\"selected\":\"BViJb\",\"image\":\"LkTep\",\"dragHandle\":\"CJqvP\",\"large\":\"R5clw\",\"comingSoonPanel\":\"Wa2PG\",\"newVideos\":\"s61h8\",\"editSubjectsItem\":\"gGNFD\",\"allSubjectsItem\":\"IHdlJ\",\"logoContainer\":\"Nzaes\",\"draggingItem\":\"zUOye\",\"partialLargeFallback\":\"FmJP9\",\"partialIcon\":\"sdZuo\"};"],"names":["BulkOnboardingPreferencesState","OnboardingHelper","hasManyPresentationTypes","presentations","totalAvailableSubjectPresentations","totalAvailableCurriculumPresentations","forEach","p","type","PresentationType","hasManySubjectPresentations","hasManyCurriculumPresentations","getBulkPreferencesState","state","AllSubjectsAndAllLevels","levels","subjects","AllLevels","AllSubjects","hasBulkSelectedLevels","bulkState","hasBulkSelectedTopics","getNextBulkState","current","managing","None","isManagingTopics","namespace","ComingSoonNamePanel","name","multiline","noUnderLine","wrapperClassName","textClassName","className","phrase","NormalNamePanel","subtitle","newVideosCount","title","options","smartCount","CoverPillWidgetContent","props","coverUrl","size","isLarge","classification","undefined","data","childProps","highlightOnHover","showNewVideosCount","externalMetadata","childDashboardNewVideoCount","themeColor","isSelected","style","id","hideCheckmark","svgName","svgSize","S","textVariant","variant","imageClassName","backgroundImage","hideFallback","extraClasses","isComingSoon","CoverPillWidgetContentWrapper","appLink","getChildAppLink","analyticsData","analyticsOptions","appLinkOptions","getChildAppLinkOptions","LeftPanelItem","contentPosition","annotationUrl","annotationPosition","annotationClassName","getAnnotationClassName","src","children","defaultProps","SubjectPlaceholder","ImageHelper","PromotedTopicPlaceholder","MockDiscover","placeholderSubjects","Math","max","length","MockLayout","presentation","curriculum","editingCurriculum","map","subject","key","cover","url","Array","fill","_","index","LeftNavItem","breakpoints","useBreakpoints","Text","IconCircle","imageUrl","SvgContainer","xs","ClickViewLogo","TopicsHelper","learningLevel","PresentationLearningLevel","getPresentationClass","OnboardingSubjectsView","appLinks","getPathway","useOnboardingPathway","currentUser","UserRequests","preferredPresentation","usePresentation","fetchAsync","useOnboardingCallbacks","redirectUrl","onClickBack","exitOnboarding","onSaveError","completeStepAsync","preferredCurriculum","useCurriculums","logEvent","useOnboardingEventLogger","pathway","screenConfig","OnboardingScreenConfigs","currentScreen","useSettings","analyticsLocation","updateSettingAsync","bulkOnboardingPreferencesState","PreferenceRequests","initialSelectedSubjects","initialBulkState","selectedSubjects","setSelectedSubjects","allSubjectsSelected","setAllSubjectsSelected","isKDM","selectableSubjects","filter","ClassificationVideos","presentationId","hasCompleted","OnboardingLayout","ImageUrls","hasCustomButtons","onClickNext","s","subjectId","subjectName","presentationName","presentationDescription","description","requests","push","SettingName","value","kind","SettingKind","addedSubjects","selection","find","removedSubjects","Promise","all","reject","onClickComeBackLater","disableNext","OnboardingScreenHeading","OnboardingScreenInfo","DivButton","onClick","CoverPill","LanguageService","concat","onSelectSubject","disabled"],"sourceRoot":""}
@@ -1,2 +1,2 @@
1
1
  "use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[8522],{28694:(e,a,t)=>{t.r(a),t.d(a,{StudentManagerView:()=>G});var r=t(32735),s=t(70680),n=t(23481),c=t(20354),o=t(88822),u=t(46456),i=t(26055),l=t(43820),d=t(56138),p=t(39739),m=t(37395),y=t(99705),v=t(76881),g=t(39151),E=t(70145),h=t(44538),b=t(31949),f=t(69883),S=t(91286),T=t(79612),k=t(12778),A=t(99742),P=t(29613),N=t(48327),j=t(47288),R=t(51180),U=t(18087),w=t(23232),x=t(83345),C=t(35223),I=t(14070),M=t(97291),q="userManager.studentManagerEmptyState",B=v.Y.Learner;function L(){return r.createElement(x.D.Provider,{value:q},r.createElement(w.u,null,r.createElement(w.u.Image,{src:A.W.EmptyStates.UserManager.STUDENTS,size:"small"}),r.createElement(w.u.Heading,null,r.createElement(x.x,{phrase:"heading"})),r.createElement(w.u.Info,null,r.createElement(x.x,{phrase:"info"})),r.createElement("div",{className:"d-flex justify-content-center align-items-center"},r.createElement("div",{className:"px-1"},r.createElement(w.u.Cta,{text:n.T.getPhrase(q,"addNew"),icon:C.vn.Plus,appLink:{application:M.O.USER_MANAGER,action:I.e.UserManager.CREATE_USER,params:{userType:B}}})),r.createElement("div",{className:"px-1"},r.createElement(w.u.Cta,{text:n.T.getPhrase(q,"uploadAList"),icon:C.vn.Upload,appLink:{application:M.O.USER_MANAGER,action:I.e.UserManager.USER_UPLOAD_POPUP,params:{userType:B}}})))))}var _=n.T.encloseNamespace("userManager.studentManager"),F=v.Y.Learner;function G(e){var a,t,n,v,w,x,C,I,M;(0,T.M)({title:_("pageTitle")});var q=(0,U.Y)(F,e.queryParams),B=(0,s.I0)(),G=(0,f.Z)(),J=c.a.useBasicFetch(h.K.getRostering()),O=c.a.useBasicFetch(b.N.currentUser()),V=c.a.useBasicFetch(g.L.config()),Y=c.a.useBasicFetch(O.data&&j.N.yearGroups(O.data.customerId)),D=c.a.useBasicFetch(!!O.data&&P.q.getYearGroupRolloverStatus(O.data.customerId)),H=c.a.useBasicFetch(!!O.data&&j.N.getIdentityProviders(O.data.customerId)),W=c.a.useBasicFetch(E.h.userProducts()),K=(null===(a=J.data)||void 0===a?void 0:a.status)&&"None"!==J.data.status,z=(0,R.T)(O.data,e.queryParams,F),Q=z.data?"results"in z.data?z.data.results:z.data.data:null;c.a.useBasicFetch(j.N.authenticationMethods(null!==(n=null===(t=null==Q?void 0:Q.map((function(e){return e.id})))||void 0===t?void 0:t.sort())&&void 0!==n?n:[]));var Z=(0,d.x)({userType:F,queryParams:e.queryParams,getUserCountRequest:j.N.userCount});(0,S.v)(z);var X=p.P.showEmptyState(z,e.queryParams);return r.createElement(i.A.Provider,{value:l.a.Primary},r.createElement("div",{className:"px-3"},r.createElement(u.g,{userType:F,appLinks:q,users:Q,userCount:Z.data,hasRostering:K,hasSso:!!(null===(v=H.data)||void 0===v?void 0:v.length)}),X?r.createElement(L,null):r.createElement("main",{className:"py-3 clearfix"},r.createElement(o.G,{users:Q,userType:F,config:V.data,currentUser:O.data,appLinks:q,searchEmptyState:A.W.EmptyStates.UserManager.SEARCH,totalUsers:null===(w=Z.data)||void 0===w?void 0:w.count,queryParams:e.queryParams,yearGroups:Y.data,yearGroupRolloverStatus:D.data,fetchUserIds:function(a){c.a.fetch(B,j.N.getSearchUserIds(O.data.customerId,O.data.id,F,e.queryParams,a))},ssoHelpArticle:k.o.getLiteArticle(y.b.EditSsoAccounts),onClickSendVerificationEmail:function(e){c.a.fetch(B,j.N.resendVerificationEmail(e.id,O.data.customerId,(function(){G.success(_("resendVerificationEmailSuccess",{email:e.email,escapeText:!0}))}),(function(){G.error(_("resendVerificationEmailError",{email:e.email,escapeText:!0}))})))},onClickResendActivationEmail:function(e){c.a.fetch(B,j.N.resendActivationEmail(e.id,(function(){G.success(_("resendActivationEmailSuccess",{email:e.email,escapeText:!0}))}),(function(){G.error(_("resendActivationEmailError",{email:e.email,escapeText:!0}))})))},hasSso:!!(null===(x=H.data)||void 0===x?void 0:x.length),userRequest:b.N.getUserIdByQuery,selectWithSpreadsheetTemplate:N.d,hasRostering:K,products:null!==(C=W.data.map((function(e){return e.id})))&&void 0!==C?C:[]}),!!(null===(M=null===(I=z.data)||void 0===I?void 0:I.pagination)||void 0===M?void 0:M.cursors)&&r.createElement(m.t,{appLink:q.search,cursors:z.data.pagination.cursors,buttonVariant:"outline-dark",className:"py-2 float-end"}))))}},29613:(e,a,t)=>{t.d(a,{q:()=>c});var r=t(99940),s=t(97395),n=t(149),c={createJob:function(e,a,t){return{url:"{gateway}/v1/batch/jobs",key:"create:job",type:r.k.POST,data:e,success:a,error:t}},getJobs:function(e){var a={},t=[],r=[];return e.cursor&&(a.cursor=e.cursor),e.sort&&("oldest"===e.sort?a.order="ASC":a.order="DESC"),e.bulkActionType?(t=Array.isArray(e.bulkActionType)?e.bulkActionType:[e.bulkActionType],a.type=t):a.type=n.O,e.userType&&(r=Array.isArray(e.userType)?e.userType:[e.userType],a.dataType=r),{url:s._.urlBuilder("{gateway}/v1/batch/jobs",a),key:"batch:jobs:".concat(e.cursor,":").concat(e.sort,":").concat(t.sort().join(":"),":").concat(r.sort().join(":"))}},getJob:function(e){return{url:"{gateway}/v1/batch/jobs/".concat(e),key:"job:".concat(e)}},getJobProgress:function(e,a,t){return{url:"{gateway}/v1/batch/jobs/".concat(e,"/progress"),key:"job:".concat(e,":progress"),invalidationKeys:"job:".concat(e,":progress"),success:a,error:t}},getJobResults:function(e,a,t,r,n){var c={status:a};return t&&(c.cursor=t),{url:s._.urlBuilder("{gateway}/v1/batch/jobs/".concat(e,"/results"),c),key:"job:".concat(e,":results:").concat(a,":").concat(t),success:r,error:n}},getYearGroupRolloverStatus:function(e){return{url:"{gateway}/v1/batch/validations/customers/".concat(e,"/year-group-roll-over"),key:"year:group:rollover:status"}},sendJobReports:function(e){return{url:"{gateway}/v1/batch/results/export",key:"send:job:reports:".concat(e.sort().join(":")),type:r.k.POST,data:{jobIds:e}}},getJobSummary:function(e){return{url:"{gateway}/v1/batch/jobs/".concat(e,"/summary"),key:"job:summary:".concat(e)}}}}}]);
2
- //# sourceMappingURL=8522-b4b217640c-lite.chunk.js.map
2
+ //# sourceMappingURL=8522-8e9c576bf6-lite.chunk.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"scripts/8522-b4b217640c-lite.chunk.js","mappings":"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","sources":["file:///app/packages/projects/lite/src/apps/user-manager/views/student-manager/empty-state/LiteStudentManagerEmptyState.tsx","file:///app/packages/projects/lite/src/apps/user-manager/views/student-manager/LiteStudentManagerView.tsx","file:///app/packages/projects/lite/src/shared/flight-requests/JobRequests.ts"],"sourcesContent":["import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { EmptyState } from 'libs/shared/components/empty-states/EmptyState';\nimport { LanguageNamespaceContext, Text } from 'libs/shared/components/text/Text';\nimport { UserGroup } from 'libs/shared/enums/UserGroup';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport { ImageUrls } from 'shared/constants/ImageUrls';\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\n\nconst namespace = 'userManager.studentManagerEmptyState';\nconst userType = UserGroup.Learner;\n\nexport function StudentManagerEmptyState(): JSX.Element {\n return (\n <LanguageNamespaceContext.Provider value={namespace}>\n <EmptyState>\n <EmptyState.Image src={ImageUrls.EmptyStates.UserManager.STUDENTS} size='small' />\n\n <EmptyState.Heading><Text phrase='heading' /></EmptyState.Heading>\n\n <EmptyState.Info><Text phrase='info' /></EmptyState.Info>\n\n <div className='d-flex justify-content-center align-items-center'>\n <div className='px-1'>\n <EmptyState.Cta\n text={LanguageService.getPhrase(namespace, 'addNew')}\n icon={cvSvgLibrary.Plus}\n appLink={{\n application: AppChannels.USER_MANAGER,\n action: Actions.UserManager.CREATE_USER,\n params: { userType }\n }}\n />\n </div>\n\n <div className='px-1'>\n <EmptyState.Cta\n text={LanguageService.getPhrase(namespace, 'uploadAList')}\n icon={cvSvgLibrary.Upload}\n appLink={{\n application: AppChannels.USER_MANAGER,\n action: Actions.UserManager.USER_UPLOAD_POPUP,\n params: { userType }\n }}\n />\n </div>\n </div>\n </EmptyState>\n </LanguageNamespaceContext.Provider>\n );\n}\n","import * as React from 'react';\nimport { useDispatch } from 'react-redux';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Flight } from 'libs/common/flight';\n\nimport { ManageUsers } from 'libs/shared/apps/user-manager/components/manage-users/ManageUsers';\nimport { UserManagerHeader } from 'libs/shared/apps/user-manager/components/user-manager-header/UserManagerHeader';\nimport { UserManagerClientContext } from 'libs/shared/apps/user-manager/context/UserManagerClientContext';\nimport { UserManagerClient } from 'libs/shared/apps/user-manager/enums/UserManagerClient';\nimport { useFetchUserCount } from 'libs/shared/apps/user-manager/hooks/useFetchUserCount';\nimport { GetIdentityProvidersResponse } from 'libs/shared/apps/user-manager/interfaces/GetIdentityProvidersResponse';\nimport { UserManagerQueryParams } from 'libs/shared/apps/user-manager/interfaces/query-params/UserManagerQueryParams';\nimport { YearGroupRolloverStatus } from 'libs/shared/apps/user-manager/interfaces/YearGroupRolloverStatus';\nimport { UserManagerHelper } from 'libs/shared/apps/user-manager/utils/UserManagerHelper';\nimport { Pagination } from 'libs/shared/components/pagination/Pagination';\nimport { LiteSupportArticle } from 'libs/shared/enums/SupportArticle';\nimport { UserGroup } from 'libs/shared/enums/UserGroup';\nimport { ConfigRequests } from 'libs/shared/flight-requests/ConfigRequests';\nimport { ProductRequests } from 'libs/shared/flight-requests/ProductRequests';\nimport { RosteringRequests } from 'libs/shared/flight-requests/RosteringRequests';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { useAlerts } from 'libs/shared/hooks/UseAlerts';\nimport { useHandleObjectError } from 'libs/shared/hooks/UseHandleObjectError';\nimport { useSetPageMetadata } from 'libs/shared/hooks/useSetPageMetadata';\nimport { Config, CurrentUser, Product, RosteringResponse, User, YearGroup } from 'libs/shared/interfaces';\nimport { ArticleHelper } from 'libs/shared/utils/ArticleHelper';\n\nimport { ImageUrls } from 'shared/constants/ImageUrls';\nimport { JobRequests } from 'shared/flight-requests/JobRequests';\n\nimport { SelectWithSpreadsheetTemplates } from 'apps/user-manager/constants/SelectWithSpreadsheetTemplate';\nimport { UserManagerRequests } from 'apps/user-manager/flight-requests/UserManagerRequests';\nimport { useFetchUsers } from 'apps/user-manager/hooks/useFetchUsers';\nimport { getUserManagerAppLinks } from 'apps/user-manager/utils/LiteUserManagerAppLinks';\n\nimport { StudentManagerEmptyState } from './empty-state/LiteStudentManagerEmptyState';\n\nconst getPhrase = LanguageService.encloseNamespace('userManager.studentManager');\n\nconst userType = UserGroup.Learner;\n\ninterface StudentManagerViewProps {\n queryParams: UserManagerQueryParams;\n}\n\nexport function StudentManagerView(props: StudentManagerViewProps): JSX.Element {\n useSetPageMetadata({ title: getPhrase('pageTitle') });\n const appLinks = getUserManagerAppLinks(userType, props.queryParams);\n const dispatch = useDispatch();\n const alerts = useAlerts();\n\n const rostering = Flight.useBasicFetch<RosteringResponse>(RosteringRequests.getRostering());\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n const config = Flight.useBasicFetch<Config>(ConfigRequests.config());\n const yearGroups = Flight.useBasicFetch<YearGroup[]>(\n currentUser.data && UserManagerRequests.yearGroups(currentUser.data.customerId)\n );\n const yearGroupRolloverStatus = Flight.useBasicFetch<YearGroupRolloverStatus>(!!currentUser.data &&\n JobRequests.getYearGroupRolloverStatus(currentUser.data.customerId));\n const identityProviders = Flight.useBasicFetch<GetIdentityProvidersResponse>(!!currentUser.data &&\n UserManagerRequests.getIdentityProviders(currentUser.data.customerId));\n const products = Flight.useBasicFetch<Product[]>(ProductRequests.userProducts());\n\n const hasRostering = rostering.data?.status && rostering.data.status !== 'None';\n\n const studentResponse = useFetchUsers(\n currentUser.data,\n props.queryParams,\n userType\n );\n\n const students = studentResponse.data ? (('results' in studentResponse.data) ? studentResponse.data.results : studentResponse.data.data) : null;\n\n Flight.useBasicFetch(UserManagerRequests.authenticationMethods(students?.map(s => s.id)?.sort() ?? []));\n\n const userCount = useFetchUserCount({\n userType,\n queryParams: props.queryParams,\n getUserCountRequest: UserManagerRequests.userCount\n });\n\n useHandleObjectError(studentResponse);\n\n function fetchUserIds(success: (userIds: string[]) => void): void {\n Flight.fetch(dispatch, UserManagerRequests.getSearchUserIds(\n currentUser.data.customerId,\n currentUser.data.id,\n userType,\n props.queryParams,\n success\n ));\n }\n\n function onClickResendActivationEmail(user: User): void {\n Flight.fetch(dispatch, UserManagerRequests.resendActivationEmail(user.id, () => {\n alerts.success(getPhrase('resendActivationEmailSuccess', { email: user.email, escapeText: true }));\n }, () => {\n alerts.error(getPhrase('resendActivationEmailError', { email: user.email, escapeText: true }));\n }));\n }\n\n function onClickResendVerificationEmail(user: User): void {\n Flight.fetch(dispatch, UserManagerRequests.resendVerificationEmail(user.id, currentUser.data.customerId, () => {\n alerts.success(getPhrase('resendVerificationEmailSuccess', { email: user.email, escapeText: true }));\n }, () => {\n alerts.error(getPhrase('resendVerificationEmailError', { email: user.email, escapeText: true }));\n }));\n }\n\n const showEmptyState = UserManagerHelper.showEmptyState(studentResponse, props.queryParams);\n \n return (\n <UserManagerClientContext.Provider value={UserManagerClient.Primary}>\n <div className='px-3'>\n <UserManagerHeader\n userType={userType}\n appLinks={appLinks}\n users={students}\n userCount={userCount.data}\n hasRostering={hasRostering}\n hasSso={!!identityProviders.data?.length}\n />\n\n {!showEmptyState ? (\n <main className='py-3 clearfix'>\n <ManageUsers\n users={students}\n userType={userType}\n config={config.data}\n currentUser={currentUser.data}\n appLinks={appLinks}\n searchEmptyState={ImageUrls.EmptyStates.UserManager.SEARCH}\n totalUsers={userCount.data?.count}\n queryParams={props.queryParams}\n yearGroups={yearGroups.data}\n yearGroupRolloverStatus={yearGroupRolloverStatus.data}\n fetchUserIds={fetchUserIds}\n ssoHelpArticle={ArticleHelper.getLiteArticle(LiteSupportArticle.EditSsoAccounts)}\n onClickSendVerificationEmail={onClickResendVerificationEmail}\n onClickResendActivationEmail={onClickResendActivationEmail}\n hasSso={!!identityProviders.data?.length}\n userRequest={UserRequests.getUserIdByQuery}\n selectWithSpreadsheetTemplate={SelectWithSpreadsheetTemplates}\n hasRostering={hasRostering}\n products={products.data.map(p => p.id) ?? []}\n />\n {!!studentResponse.data?.pagination?.cursors && (\n <Pagination\n appLink={appLinks.search}\n cursors={studentResponse.data.pagination.cursors}\n buttonVariant='outline-dark'\n className='py-2 float-end'\n />\n )}\n </main>) :\n <StudentManagerEmptyState />\n }\n </div>\n </UserManagerClientContext.Provider>\n );\n}\n","import { HttpVerbs } from 'libs/common/backbone/enums/HttpVerbs';\nimport { Xhr } from 'libs/common/backbone/interfaces';\nimport { UrlHelper } from 'libs/common/backbone/utils/UrlHelper';\nimport { Flight } from 'libs/common/flight';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { UserAuditLogQueryParams } from 'libs/shared/apps/user-manager/components/audit-log/components/audit-log-filters/UserAuditLogFilters';\nimport { SUPPORTED_BATCH_JOB_TYPES } from 'libs/shared/apps/user-manager/utils/BulkUserActionsHelper';\nimport { BatchJobResultStatus } from 'libs/shared/enums/BatchJobResultStatus';\nimport { BatchJobType } from 'libs/shared/enums/BatchJobType';\nimport { UserGroup } from 'libs/shared/enums/UserGroup';\nimport { BaseObject, BatchJob, BatchJobProgress, BatchJobResultsResponse, CreateBatchJobRequest } from 'libs/shared/interfaces';\n\nexport const JobRequests = {\n createJob(\n data: CreateBatchJobRequest,\n success?: (job: BatchJob) => void,\n error?: () => void\n ): Flight.Request {\n return {\n url: '{gateway}/v1/batch/jobs',\n key: 'create:job',\n type: HttpVerbs.POST,\n data,\n success,\n error\n };\n },\n\n getJobs(queryParams: UserAuditLogQueryParams): Flight.Request {\n const params: HashObject = {};\n\n let bulkActionTypes: BatchJobType[] = [];\n let userTypes: UserGroup[] = [];\n\n if (queryParams.cursor)\n params.cursor = queryParams.cursor;\n\n if (queryParams.sort) {\n if (queryParams.sort === 'oldest')\n params.order = 'ASC';\n else\n params.order = 'DESC';\n }\n\n if (queryParams.bulkActionType) {\n bulkActionTypes = Array.isArray(queryParams.bulkActionType)\n ? queryParams.bulkActionType\n : [queryParams.bulkActionType];\n\n params.type = bulkActionTypes;\n } else {\n // only show supported type in the table by default\n params.type = SUPPORTED_BATCH_JOB_TYPES;\n }\n\n if (queryParams.userType) {\n userTypes = Array.isArray(queryParams.userType)\n ? queryParams.userType\n : [queryParams.userType];\n\n params.dataType = userTypes;\n }\n \n return {\n url: UrlHelper.urlBuilder('{gateway}/v1/batch/jobs', params),\n key: `batch:jobs:${queryParams.cursor}:${queryParams.sort}:${bulkActionTypes.sort().join(':')}:${userTypes.sort().join(':')}`\n };\n },\n\n getJob(id: string): Flight.Request {\n return {\n url: `{gateway}/v1/batch/jobs/${id}`,\n key: `job:${id}`\n };\n },\n\n getJobProgress(\n id: string,\n success?: (progress: BatchJobProgress) => void,\n error?: (xhr?: Xhr) => void\n ): Flight.Request {\n return {\n url: `{gateway}/v1/batch/jobs/${id}/progress`,\n key: `job:${id}:progress`,\n invalidationKeys: `job:${id}:progress`,\n success,\n error\n };\n },\n\n getJobResults<TObject extends BaseObject>(\n id: string,\n status: BatchJobResultStatus,\n cursor?: string,\n success?: (results: BatchJobResultsResponse<TObject>) => void,\n error?: (xhr?: Xhr) => void\n ): Flight.Request {\n const params: HashObject = {\n status\n };\n\n if (cursor)\n params.cursor = cursor;\n\n return {\n url: UrlHelper.urlBuilder(`{gateway}/v1/batch/jobs/${id}/results`, params),\n key: `job:${id}:results:${status}:${cursor}`,\n success,\n error\n };\n },\n\n getYearGroupRolloverStatus(customerId: string): Flight.Request {\n return {\n url: `{gateway}/v1/batch/validations/customers/${customerId}/year-group-roll-over`,\n key: 'year:group:rollover:status'\n };\n },\n\n sendJobReports(ids: string[]): Flight.Request {\n return {\n url: '{gateway}/v1/batch/results/export',\n key: `send:job:reports:${ids.sort().join(':')}`,\n type: HttpVerbs.POST,\n data: {\n jobIds: ids\n }\n };\n },\n\n getJobSummary(id: string): Flight.Request {\n return {\n url: `{gateway}/v1/batch/jobs/${id}/summary`,\n key: `job:summary:${id}`\n };\n }\n};"],"names":["namespace","userType","UserGroup","StudentManagerEmptyState","value","EmptyState","src","ImageUrls","size","Text","phrase","className","text","LanguageService","icon","appLink","application","action","params","getPhrase","StudentManagerView","props","useSetPageMetadata","title","appLinks","queryParams","dispatch","alerts","rostering","RosteringRequests","currentUser","UserRequests","config","ConfigRequests","yearGroups","data","UserManagerRequests","customerId","yearGroupRolloverStatus","JobRequests","identityProviders","products","ProductRequests","hasRostering","status","studentResponse","useFetchUsers","students","results","map","s","id","sort","userCount","useFetchUserCount","getUserCountRequest","showEmptyState","UserManagerHelper","UserManagerClientContext","UserManagerClient","UserManagerHeader","users","hasSso","length","ManageUsers","searchEmptyState","totalUsers","count","fetchUserIds","success","ssoHelpArticle","ArticleHelper","onClickSendVerificationEmail","user","email","escapeText","error","onClickResendActivationEmail","userRequest","selectWithSpreadsheetTemplate","SelectWithSpreadsheetTemplate","p","pagination","cursors","Pagination","search","buttonVariant","createJob","url","key","type","getJobs","bulkActionTypes","userTypes","cursor","order","bulkActionType","Array","isArray","dataType","join","getJob","getJobProgress","invalidationKeys","getJobResults","getYearGroupRolloverStatus","sendJobReports","ids","jobIds","getJobSummary"],"sourceRoot":""}
1
+ {"version":3,"file":"scripts/8522-8e9c576bf6-lite.chunk.js","mappings":"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","sources":["file:///app/packages/projects/lite/src/apps/user-manager/views/student-manager/empty-state/LiteStudentManagerEmptyState.tsx","file:///app/packages/projects/lite/src/apps/user-manager/views/student-manager/LiteStudentManagerView.tsx","file:///app/packages/projects/lite/src/shared/flight-requests/JobRequests.ts"],"sourcesContent":["import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { EmptyState } from 'libs/shared/components/empty-states/EmptyState';\nimport { LanguageNamespaceContext, Text } from 'libs/shared/components/text/Text';\nimport { UserGroup } from 'libs/shared/enums/UserGroup';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport { ImageUrls } from 'shared/constants/ImageUrls';\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\n\nconst namespace = 'userManager.studentManagerEmptyState';\nconst userType = UserGroup.Learner;\n\nexport function StudentManagerEmptyState(): JSX.Element {\n return (\n <LanguageNamespaceContext.Provider value={namespace}>\n <EmptyState>\n <EmptyState.Image src={ImageUrls.EmptyStates.UserManager.STUDENTS} size='small' />\n\n <EmptyState.Heading><Text phrase='heading' /></EmptyState.Heading>\n\n <EmptyState.Info><Text phrase='info' /></EmptyState.Info>\n\n <div className='d-flex justify-content-center align-items-center'>\n <div className='px-1'>\n <EmptyState.Cta\n text={LanguageService.getPhrase(namespace, 'addNew')}\n icon={cvSvgLibrary.Plus}\n appLink={{\n application: AppChannels.USER_MANAGER,\n action: Actions.UserManager.CREATE_USER,\n params: { userType }\n }}\n />\n </div>\n\n <div className='px-1'>\n <EmptyState.Cta\n text={LanguageService.getPhrase(namespace, 'uploadAList')}\n icon={cvSvgLibrary.Upload}\n appLink={{\n application: AppChannels.USER_MANAGER,\n action: Actions.UserManager.USER_UPLOAD_POPUP,\n params: { userType }\n }}\n />\n </div>\n </div>\n </EmptyState>\n </LanguageNamespaceContext.Provider>\n );\n}\n","import * as React from 'react';\nimport { useDispatch } from 'react-redux';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Flight } from 'libs/common/flight';\n\nimport { ManageUsers } from 'libs/shared/apps/user-manager/components/manage-users/ManageUsers';\nimport { UserManagerHeader } from 'libs/shared/apps/user-manager/components/user-manager-header/UserManagerHeader';\nimport { UserManagerClientContext } from 'libs/shared/apps/user-manager/context/UserManagerClientContext';\nimport { UserManagerClient } from 'libs/shared/apps/user-manager/enums/UserManagerClient';\nimport { useFetchUserCount } from 'libs/shared/apps/user-manager/hooks/useFetchUserCount';\nimport { GetIdentityProvidersResponse } from 'libs/shared/apps/user-manager/interfaces/GetIdentityProvidersResponse';\nimport { UserManagerQueryParams } from 'libs/shared/apps/user-manager/interfaces/query-params/UserManagerQueryParams';\nimport { YearGroupRolloverStatus } from 'libs/shared/apps/user-manager/interfaces/YearGroupRolloverStatus';\nimport { UserManagerHelper } from 'libs/shared/apps/user-manager/utils/UserManagerHelper';\nimport { Pagination } from 'libs/shared/components/pagination/Pagination';\nimport { LiteSupportArticle } from 'libs/shared/enums/SupportArticle';\nimport { UserGroup } from 'libs/shared/enums/UserGroup';\nimport { ConfigRequests } from 'libs/shared/flight-requests/ConfigRequests';\nimport { ProductRequests } from 'libs/shared/flight-requests/ProductRequests';\nimport { RosteringRequests } from 'libs/shared/flight-requests/RosteringRequests';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { useAlerts } from 'libs/shared/hooks/UseAlerts';\nimport { useHandleObjectError } from 'libs/shared/hooks/UseHandleObjectError';\nimport { useSetPageMetadata } from 'libs/shared/hooks/useSetPageMetadata';\nimport { Config, CurrentUser, Product, RosteringResponse, User, YearGroup } from 'libs/shared/interfaces';\nimport { ArticleHelper } from 'libs/shared/utils/ArticleHelper';\n\nimport { ImageUrls } from 'shared/constants/ImageUrls';\nimport { JobRequests } from 'shared/flight-requests/JobRequests';\n\nimport { SelectWithSpreadsheetTemplates } from 'apps/user-manager/constants/SelectWithSpreadsheetTemplate';\nimport { UserManagerRequests } from 'apps/user-manager/flight-requests/UserManagerRequests';\nimport { useFetchUsers } from 'apps/user-manager/hooks/useFetchUsers';\nimport { getUserManagerAppLinks } from 'apps/user-manager/utils/LiteUserManagerAppLinks';\n\nimport { StudentManagerEmptyState } from './empty-state/LiteStudentManagerEmptyState';\n\nconst getPhrase = LanguageService.encloseNamespace('userManager.studentManager');\n\nconst userType = UserGroup.Learner;\n\ninterface StudentManagerViewProps {\n queryParams: UserManagerQueryParams;\n}\n\nexport function StudentManagerView(props: StudentManagerViewProps): JSX.Element {\n useSetPageMetadata({ title: getPhrase('pageTitle') });\n const appLinks = getUserManagerAppLinks(userType, props.queryParams);\n const dispatch = useDispatch();\n const alerts = useAlerts();\n\n const rostering = Flight.useBasicFetch<RosteringResponse>(RosteringRequests.getRostering());\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n const config = Flight.useBasicFetch<Config>(ConfigRequests.config());\n const yearGroups = Flight.useBasicFetch<YearGroup[]>(\n currentUser.data && UserManagerRequests.yearGroups(currentUser.data.customerId)\n );\n const yearGroupRolloverStatus = Flight.useBasicFetch<YearGroupRolloverStatus>(!!currentUser.data &&\n JobRequests.getYearGroupRolloverStatus(currentUser.data.customerId));\n const identityProviders = Flight.useBasicFetch<GetIdentityProvidersResponse>(!!currentUser.data &&\n UserManagerRequests.getIdentityProviders(currentUser.data.customerId));\n const products = Flight.useBasicFetch<Product[]>(ProductRequests.userProducts());\n\n const hasRostering = rostering.data?.status && rostering.data.status !== 'None';\n\n const studentResponse = useFetchUsers(\n currentUser.data,\n props.queryParams,\n userType\n );\n\n const students = studentResponse.data ? (('results' in studentResponse.data) ? studentResponse.data.results : studentResponse.data.data) : null;\n\n Flight.useBasicFetch(UserManagerRequests.authenticationMethods(students?.map(s => s.id)?.sort() ?? []));\n\n const userCount = useFetchUserCount({\n userType,\n queryParams: props.queryParams,\n getUserCountRequest: UserManagerRequests.userCount\n });\n\n useHandleObjectError(studentResponse);\n\n function fetchUserIds(success: (userIds: string[]) => void): void {\n Flight.fetch(dispatch, UserManagerRequests.getSearchUserIds(\n currentUser.data.customerId,\n currentUser.data.id,\n userType,\n props.queryParams,\n success\n ));\n }\n\n function onClickResendActivationEmail(user: User): void {\n Flight.fetch(dispatch, UserManagerRequests.resendActivationEmail(user.id, () => {\n alerts.success(getPhrase('resendActivationEmailSuccess', { email: user.email, escapeText: true }));\n }, () => {\n alerts.error(getPhrase('resendActivationEmailError', { email: user.email, escapeText: true }));\n }));\n }\n\n function onClickResendVerificationEmail(user: User): void {\n Flight.fetch(dispatch, UserManagerRequests.resendVerificationEmail(user.id, currentUser.data.customerId, () => {\n alerts.success(getPhrase('resendVerificationEmailSuccess', { email: user.email, escapeText: true }));\n }, () => {\n alerts.error(getPhrase('resendVerificationEmailError', { email: user.email, escapeText: true }));\n }));\n }\n\n const showEmptyState = UserManagerHelper.showEmptyState(studentResponse, props.queryParams);\n \n return (\n <UserManagerClientContext.Provider value={UserManagerClient.Primary}>\n <div className='px-3'>\n <UserManagerHeader\n userType={userType}\n appLinks={appLinks}\n users={students}\n userCount={userCount.data}\n hasRostering={hasRostering}\n hasSso={!!identityProviders.data?.length}\n />\n\n {!showEmptyState ? (\n <main className='py-3 clearfix'>\n <ManageUsers\n users={students}\n userType={userType}\n config={config.data}\n currentUser={currentUser.data}\n appLinks={appLinks}\n searchEmptyState={ImageUrls.EmptyStates.UserManager.SEARCH}\n totalUsers={userCount.data?.count}\n queryParams={props.queryParams}\n yearGroups={yearGroups.data}\n yearGroupRolloverStatus={yearGroupRolloverStatus.data}\n fetchUserIds={fetchUserIds}\n ssoHelpArticle={ArticleHelper.getLiteArticle(LiteSupportArticle.EditSsoAccounts)}\n onClickSendVerificationEmail={onClickResendVerificationEmail}\n onClickResendActivationEmail={onClickResendActivationEmail}\n hasSso={!!identityProviders.data?.length}\n userRequest={UserRequests.getUserIdByQuery}\n selectWithSpreadsheetTemplate={SelectWithSpreadsheetTemplates}\n hasRostering={hasRostering}\n products={products.data.map(p => p.id) ?? []}\n />\n {!!studentResponse.data?.pagination?.cursors && (\n <Pagination\n appLink={appLinks.search}\n cursors={studentResponse.data.pagination.cursors}\n buttonVariant='outline-dark'\n className='py-2 float-end'\n />\n )}\n </main>) :\n <StudentManagerEmptyState />\n }\n </div>\n </UserManagerClientContext.Provider>\n );\n}\n","import { HttpVerbs } from 'libs/common/backbone/enums/HttpVerbs';\nimport { Xhr } from 'libs/common/backbone/interfaces';\nimport { UrlHelper } from 'libs/common/backbone/utils/UrlHelper';\nimport { Flight } from 'libs/common/flight';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { UserAuditLogQueryParams } from 'libs/shared/apps/user-manager/components/audit-log/components/audit-log-filters/UserAuditLogFilters';\nimport { SUPPORTED_BATCH_JOB_TYPES } from 'libs/shared/apps/user-manager/utils/BulkUserActionsHelper';\nimport { BatchJobResultStatus } from 'libs/shared/enums/BatchJobResultStatus';\nimport { BatchJobType } from 'libs/shared/enums/BatchJobType';\nimport { UserGroup } from 'libs/shared/enums/UserGroup';\nimport { BaseObject, BatchJob, BatchJobProgress, BatchJobResultsResponse, CreateBatchJobRequest } from 'libs/shared/interfaces';\n\nexport const JobRequests = {\n createJob(\n data: CreateBatchJobRequest,\n success?: (job: BatchJob) => void,\n error?: () => void\n ): Flight.Request {\n return {\n url: '{gateway}/v1/batch/jobs',\n key: 'create:job',\n type: HttpVerbs.POST,\n data,\n success,\n error\n };\n },\n\n getJobs(queryParams: UserAuditLogQueryParams): Flight.Request {\n const params: HashObject = {};\n\n let bulkActionTypes: BatchJobType[] = [];\n let userTypes: UserGroup[] = [];\n\n if (queryParams.cursor)\n params.cursor = queryParams.cursor;\n\n if (queryParams.sort) {\n if (queryParams.sort === 'oldest')\n params.order = 'ASC';\n else\n params.order = 'DESC';\n }\n\n if (queryParams.bulkActionType) {\n bulkActionTypes = Array.isArray(queryParams.bulkActionType)\n ? queryParams.bulkActionType\n : [queryParams.bulkActionType];\n\n params.type = bulkActionTypes;\n } else {\n // only show supported type in the table by default\n params.type = SUPPORTED_BATCH_JOB_TYPES;\n }\n\n if (queryParams.userType) {\n userTypes = Array.isArray(queryParams.userType)\n ? queryParams.userType\n : [queryParams.userType];\n\n params.dataType = userTypes;\n }\n \n return {\n url: UrlHelper.urlBuilder('{gateway}/v1/batch/jobs', params),\n key: `batch:jobs:${queryParams.cursor}:${queryParams.sort}:${bulkActionTypes.sort().join(':')}:${userTypes.sort().join(':')}`\n };\n },\n\n getJob(id: string): Flight.Request {\n return {\n url: `{gateway}/v1/batch/jobs/${id}`,\n key: `job:${id}`\n };\n },\n\n getJobProgress(\n id: string,\n success?: (progress: BatchJobProgress) => void,\n error?: (xhr?: Xhr) => void\n ): Flight.Request {\n return {\n url: `{gateway}/v1/batch/jobs/${id}/progress`,\n key: `job:${id}:progress`,\n invalidationKeys: `job:${id}:progress`,\n success,\n error\n };\n },\n\n getJobResults<TObject extends BaseObject>(\n id: string,\n status: BatchJobResultStatus,\n cursor?: string,\n success?: (results: BatchJobResultsResponse<TObject>) => void,\n error?: (xhr?: Xhr) => void\n ): Flight.Request {\n const params: HashObject = {\n status\n };\n\n if (cursor)\n params.cursor = cursor;\n\n return {\n url: UrlHelper.urlBuilder(`{gateway}/v1/batch/jobs/${id}/results`, params),\n key: `job:${id}:results:${status}:${cursor}`,\n success,\n error\n };\n },\n\n getYearGroupRolloverStatus(customerId: string): Flight.Request {\n return {\n url: `{gateway}/v1/batch/validations/customers/${customerId}/year-group-roll-over`,\n key: 'year:group:rollover:status'\n };\n },\n\n sendJobReports(ids: string[]): Flight.Request {\n return {\n url: '{gateway}/v1/batch/results/export',\n key: `send:job:reports:${ids.sort().join(':')}`,\n type: HttpVerbs.POST,\n data: {\n jobIds: ids\n }\n };\n },\n\n getJobSummary(id: string): Flight.Request {\n return {\n url: `{gateway}/v1/batch/jobs/${id}/summary`,\n key: `job:summary:${id}`\n };\n }\n};"],"names":["namespace","userType","UserGroup","StudentManagerEmptyState","value","EmptyState","src","ImageUrls","size","Text","phrase","className","text","LanguageService","icon","appLink","application","action","params","getPhrase","StudentManagerView","props","useSetPageMetadata","title","appLinks","queryParams","dispatch","alerts","rostering","RosteringRequests","currentUser","UserRequests","config","ConfigRequests","yearGroups","data","UserManagerRequests","customerId","yearGroupRolloverStatus","JobRequests","identityProviders","products","ProductRequests","hasRostering","status","studentResponse","useFetchUsers","students","results","map","s","id","sort","userCount","useFetchUserCount","getUserCountRequest","showEmptyState","UserManagerHelper","UserManagerClientContext","UserManagerClient","UserManagerHeader","users","hasSso","length","ManageUsers","searchEmptyState","totalUsers","count","fetchUserIds","success","ssoHelpArticle","ArticleHelper","onClickSendVerificationEmail","user","email","escapeText","error","onClickResendActivationEmail","userRequest","selectWithSpreadsheetTemplate","SelectWithSpreadsheetTemplate","p","pagination","cursors","Pagination","search","buttonVariant","createJob","url","key","type","getJobs","bulkActionTypes","userTypes","cursor","order","bulkActionType","Array","isArray","dataType","join","getJob","getJobProgress","invalidationKeys","getJobResults","getYearGroupRolloverStatus","sendJobReports","ids","jobIds","getJobSummary"],"sourceRoot":""}