@clickview/lite 0.48.0-rc.7 → 0.48.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 (128) hide show
  1. package/dist/bundles.json +1 -1
  2. package/dist/scripts/{170-1f815b85a1-lite.chunk.js → 170-2d124965b7-lite.chunk.js} +2 -2
  3. package/dist/scripts/{170-1f815b85a1-lite.chunk.js.map → 170-2d124965b7-lite.chunk.js.map} +1 -1
  4. package/dist/scripts/{1818-b9f9297d6d-lite.chunk.js → 1818-72409e60a9-lite.chunk.js} +1 -1
  5. package/dist/scripts/{1818-b9f9297d6d-lite.chunk.js.map → 1818-72409e60a9-lite.chunk.js.map} +1 -1
  6. package/dist/scripts/{1863-cf9df40052-lite.chunk.js → 1863-e7c4a6f342-lite.chunk.js} +1 -1
  7. package/dist/scripts/{1863-cf9df40052-lite.chunk.js.map → 1863-e7c4a6f342-lite.chunk.js.map} +1 -1
  8. package/dist/scripts/{1958-9889c1ad24-lite.chunk.js → 1958-5336189397-lite.chunk.js} +1 -1
  9. package/dist/scripts/{1958-9889c1ad24-lite.chunk.js.map → 1958-5336189397-lite.chunk.js.map} +1 -1
  10. package/dist/scripts/{2086-a247f6e201-lite.chunk.js → 2086-f7082703d0-lite.chunk.js} +1 -1
  11. package/dist/scripts/{2086-a247f6e201-lite.chunk.js.map → 2086-f7082703d0-lite.chunk.js.map} +1 -1
  12. package/dist/scripts/{2118-462a279c5a-lite.chunk.js → 2118-ec2a5f1e9b-lite.chunk.js} +2 -2
  13. package/dist/scripts/{2118-462a279c5a-lite.chunk.js.map → 2118-ec2a5f1e9b-lite.chunk.js.map} +1 -1
  14. package/dist/scripts/{2182-5c9db07f5b-lite.chunk.js → 2182-8e4d603a1b-lite.chunk.js} +1 -1
  15. package/dist/scripts/{2182-5c9db07f5b-lite.chunk.js.map → 2182-8e4d603a1b-lite.chunk.js.map} +1 -1
  16. package/dist/scripts/{2279-5e92c84310-lite.chunk.js → 2279-252e92e1d8-lite.chunk.js} +1 -1
  17. package/dist/scripts/{2279-5e92c84310-lite.chunk.js.map → 2279-252e92e1d8-lite.chunk.js.map} +1 -1
  18. package/dist/scripts/{2355-6cd89fa80d-lite.chunk.js → 2355-c588dc3ce2-lite.chunk.js} +1 -1
  19. package/dist/scripts/{2355-6cd89fa80d-lite.chunk.js.map → 2355-c588dc3ce2-lite.chunk.js.map} +1 -1
  20. package/dist/scripts/{2469-aa5bbbb17f-lite.chunk.js → 2469-46411b862e-lite.chunk.js} +1 -1
  21. package/dist/scripts/{2469-aa5bbbb17f-lite.chunk.js.map → 2469-46411b862e-lite.chunk.js.map} +1 -1
  22. package/dist/scripts/{2672-0fc559f1d1-lite.chunk.js → 2672-b01985cee8-lite.chunk.js} +1 -1
  23. package/dist/scripts/{2672-0fc559f1d1-lite.chunk.js.map → 2672-b01985cee8-lite.chunk.js.map} +1 -1
  24. package/dist/scripts/{2734-6c6d57d0f3-lite.chunk.js → 2734-6a7beb2ce2-lite.chunk.js} +1 -1
  25. package/dist/scripts/{2734-6c6d57d0f3-lite.chunk.js.map → 2734-6a7beb2ce2-lite.chunk.js.map} +1 -1
  26. package/dist/scripts/{287-ba98be7f21-lite.chunk.js → 287-3cbed16363-lite.chunk.js} +1 -1
  27. package/dist/scripts/{287-ba98be7f21-lite.chunk.js.map → 287-3cbed16363-lite.chunk.js.map} +1 -1
  28. package/dist/scripts/{2875-0e5f209e47-lite.chunk.js → 2875-aefd69a61f-lite.chunk.js} +1 -1
  29. package/dist/scripts/{2875-0e5f209e47-lite.chunk.js.map → 2875-aefd69a61f-lite.chunk.js.map} +1 -1
  30. package/dist/scripts/{3042-6650521d8b-lite.chunk.js → 3042-7c1b5e4ff7-lite.chunk.js} +1 -1
  31. package/dist/scripts/{3042-6650521d8b-lite.chunk.js.map → 3042-7c1b5e4ff7-lite.chunk.js.map} +1 -1
  32. package/dist/scripts/{3158-31baada6cc-lite.chunk.js → 3158-2147de456d-lite.chunk.js} +1 -1
  33. package/dist/scripts/{3158-31baada6cc-lite.chunk.js.map → 3158-2147de456d-lite.chunk.js.map} +1 -1
  34. package/dist/scripts/{3296-6d80e4dd56-lite.chunk.js → 3296-f3732c93d9-lite.chunk.js} +1 -1
  35. package/dist/scripts/{3296-6d80e4dd56-lite.chunk.js.map → 3296-f3732c93d9-lite.chunk.js.map} +1 -1
  36. package/dist/scripts/{3541-7ebd9db295-lite.chunk.js → 3541-15581012d3-lite.chunk.js} +1 -1
  37. package/dist/scripts/{3541-7ebd9db295-lite.chunk.js.map → 3541-15581012d3-lite.chunk.js.map} +1 -1
  38. package/dist/scripts/{3841-95df66e647-lite.chunk.js → 3841-bfae79638b-lite.chunk.js} +2 -2
  39. package/dist/scripts/{3841-95df66e647-lite.chunk.js.map → 3841-bfae79638b-lite.chunk.js.map} +1 -1
  40. package/dist/scripts/{3888-0bee9a9309-lite.chunk.js → 3888-87c1075a1b-lite.chunk.js} +1 -1
  41. package/dist/scripts/{3888-0bee9a9309-lite.chunk.js.map → 3888-87c1075a1b-lite.chunk.js.map} +1 -1
  42. package/dist/scripts/{4138-75a2bb69ab-lite.chunk.js → 4138-b9b03c9900-lite.chunk.js} +1 -1
  43. package/dist/scripts/{4138-75a2bb69ab-lite.chunk.js.map → 4138-b9b03c9900-lite.chunk.js.map} +1 -1
  44. package/dist/scripts/{4778-ebe369973c-lite.chunk.js → 4778-3c9f2b7f76-lite.chunk.js} +2 -2
  45. package/dist/scripts/{4778-ebe369973c-lite.chunk.js.map → 4778-3c9f2b7f76-lite.chunk.js.map} +1 -1
  46. package/dist/scripts/{4942-a27a31e79e-lite.chunk.js → 4942-acce40b333-lite.chunk.js} +2 -2
  47. package/dist/scripts/{4942-a27a31e79e-lite.chunk.js.map → 4942-acce40b333-lite.chunk.js.map} +1 -1
  48. package/dist/scripts/{5075-f8719465be-lite.chunk.js → 5075-53172298fe-lite.chunk.js} +1 -1
  49. package/dist/scripts/{5075-f8719465be-lite.chunk.js.map → 5075-53172298fe-lite.chunk.js.map} +1 -1
  50. package/dist/scripts/{5157-cd12e2e443-lite.chunk.js → 5157-47a0f5c088-lite.chunk.js} +1 -1
  51. package/dist/scripts/{5157-cd12e2e443-lite.chunk.js.map → 5157-47a0f5c088-lite.chunk.js.map} +1 -1
  52. package/dist/scripts/{5268-f4db3933ff-lite.chunk.js → 5268-9b7560f3b1-lite.chunk.js} +2 -2
  53. package/dist/scripts/{5268-f4db3933ff-lite.chunk.js.map → 5268-9b7560f3b1-lite.chunk.js.map} +1 -1
  54. package/dist/scripts/{5442-01ffd95162-lite.chunk.js → 5442-5ddfa2d951-lite.chunk.js} +1 -1
  55. package/dist/scripts/{5442-01ffd95162-lite.chunk.js.map → 5442-5ddfa2d951-lite.chunk.js.map} +1 -1
  56. package/dist/scripts/{5591-98cfe6c6e5-lite.chunk.js → 5591-119d72ede5-lite.chunk.js} +1 -1
  57. package/dist/scripts/{5591-98cfe6c6e5-lite.chunk.js.map → 5591-119d72ede5-lite.chunk.js.map} +1 -1
  58. package/dist/scripts/{5595-3763b14d77-lite.chunk.js → 5595-628d4f252c-lite.chunk.js} +2 -2
  59. package/dist/scripts/5595-628d4f252c-lite.chunk.js.map +1 -0
  60. package/dist/scripts/{6102-4d948a5e48-lite.chunk.js → 6102-751dbbbf33-lite.chunk.js} +3 -3
  61. package/dist/scripts/{6102-4d948a5e48-lite.chunk.js.map → 6102-751dbbbf33-lite.chunk.js.map} +1 -1
  62. package/dist/scripts/{6158-0c5e44f800-lite.chunk.js → 6158-d123add596-lite.chunk.js} +1 -1
  63. package/dist/scripts/{6158-0c5e44f800-lite.chunk.js.map → 6158-d123add596-lite.chunk.js.map} +1 -1
  64. package/dist/scripts/{6263-8957d50afe-lite.chunk.js → 6263-24e67b7df2-lite.chunk.js} +1 -1
  65. package/dist/scripts/{6263-8957d50afe-lite.chunk.js.map → 6263-24e67b7df2-lite.chunk.js.map} +1 -1
  66. package/dist/scripts/{6330-c66465bd6d-lite.chunk.js → 6330-9a2a5fc07e-lite.chunk.js} +1 -1
  67. package/dist/scripts/{6330-c66465bd6d-lite.chunk.js.map → 6330-9a2a5fc07e-lite.chunk.js.map} +1 -1
  68. package/dist/scripts/{671-003843ca84-lite.chunk.js → 671-5571f33165-lite.chunk.js} +1 -1
  69. package/dist/scripts/{671-003843ca84-lite.chunk.js.map → 671-5571f33165-lite.chunk.js.map} +1 -1
  70. package/dist/scripts/{7167-efe85af16e-lite.chunk.js → 7167-dc4c954c2b-lite.chunk.js} +1 -1
  71. package/dist/scripts/{7167-efe85af16e-lite.chunk.js.map → 7167-dc4c954c2b-lite.chunk.js.map} +1 -1
  72. package/dist/scripts/7293-58f4a7cf47-lite.chunk.js +2 -0
  73. package/dist/scripts/{7293-afd3349468-lite.chunk.js.map → 7293-58f4a7cf47-lite.chunk.js.map} +1 -1
  74. package/dist/scripts/{7301-f20e4bdb8f-lite.chunk.js → 7301-7c9342ef0c-lite.chunk.js} +1 -1
  75. package/dist/scripts/{7301-f20e4bdb8f-lite.chunk.js.map → 7301-7c9342ef0c-lite.chunk.js.map} +1 -1
  76. package/dist/scripts/{7708-ece31b78a9-lite.chunk.js → 7708-e91903481a-lite.chunk.js} +1 -1
  77. package/dist/scripts/{7708-ece31b78a9-lite.chunk.js.map → 7708-e91903481a-lite.chunk.js.map} +1 -1
  78. package/dist/scripts/{771-eb60e33941-lite.chunk.js → 771-5612b4ffc2-lite.chunk.js} +2 -2
  79. package/dist/scripts/{771-eb60e33941-lite.chunk.js.map → 771-5612b4ffc2-lite.chunk.js.map} +1 -1
  80. package/dist/scripts/{7855-37bcdd134e-lite.chunk.js → 7855-4b69540a71-lite.chunk.js} +1 -1
  81. package/dist/scripts/{7855-37bcdd134e-lite.chunk.js.map → 7855-4b69540a71-lite.chunk.js.map} +1 -1
  82. package/dist/scripts/{8024-66413cc05b-lite.chunk.js → 8024-765a4170c7-lite.chunk.js} +2 -2
  83. package/dist/scripts/{8024-66413cc05b-lite.chunk.js.map → 8024-765a4170c7-lite.chunk.js.map} +1 -1
  84. package/dist/scripts/{823-58d27c255b-lite.chunk.js → 823-33c5207c68-lite.chunk.js} +1 -1
  85. package/dist/scripts/{823-58d27c255b-lite.chunk.js.map → 823-33c5207c68-lite.chunk.js.map} +1 -1
  86. package/dist/scripts/8261-69854ff4d5-lite.chunk.js +2 -0
  87. package/dist/scripts/8261-69854ff4d5-lite.chunk.js.map +1 -0
  88. package/dist/scripts/{8466-ee9d40ee97-lite.chunk.js → 8466-cea62163e8-lite.chunk.js} +1 -1
  89. package/dist/scripts/{8466-ee9d40ee97-lite.chunk.js.map → 8466-cea62163e8-lite.chunk.js.map} +1 -1
  90. package/dist/scripts/{8681-41edd08b98-lite.chunk.js → 8681-49db3daae6-lite.chunk.js} +2 -2
  91. package/dist/scripts/{8681-41edd08b98-lite.chunk.js.map → 8681-49db3daae6-lite.chunk.js.map} +1 -1
  92. package/dist/scripts/{8772-9ae4d77363-lite.chunk.js → 8772-6c11095cea-lite.chunk.js} +1 -1
  93. package/dist/scripts/{8772-9ae4d77363-lite.chunk.js.map → 8772-6c11095cea-lite.chunk.js.map} +1 -1
  94. package/dist/scripts/{8906-b75b51bd0f-lite.chunk.js → 8906-2f6b5e4c5c-lite.chunk.js} +2 -2
  95. package/dist/scripts/{8906-b75b51bd0f-lite.chunk.js.map → 8906-2f6b5e4c5c-lite.chunk.js.map} +1 -1
  96. package/dist/scripts/{920-4de8efbcf1-lite.chunk.js → 920-acc6596891-lite.chunk.js} +1 -1
  97. package/dist/scripts/{920-4de8efbcf1-lite.chunk.js.map → 920-acc6596891-lite.chunk.js.map} +1 -1
  98. package/dist/scripts/{9212-8f95fbd9b9-lite.chunk.js → 9212-cc987a13bf-lite.chunk.js} +1 -1
  99. package/dist/scripts/{9212-8f95fbd9b9-lite.chunk.js.map → 9212-cc987a13bf-lite.chunk.js.map} +1 -1
  100. package/dist/scripts/{9242-2e533bdc0d-lite.chunk.js → 9242-144e7728ad-lite.chunk.js} +1 -1
  101. package/dist/scripts/{9242-2e533bdc0d-lite.chunk.js.map → 9242-144e7728ad-lite.chunk.js.map} +1 -1
  102. package/dist/scripts/{9264-d2285d4310-lite.chunk.js → 9264-518952f13f-lite.chunk.js} +1 -1
  103. package/dist/scripts/{9264-d2285d4310-lite.chunk.js.map → 9264-518952f13f-lite.chunk.js.map} +1 -1
  104. package/dist/scripts/{9478-8eacf2fe47-lite.chunk.js → 9478-4b3c088537-lite.chunk.js} +2 -2
  105. package/dist/scripts/{9478-8eacf2fe47-lite.chunk.js.map → 9478-4b3c088537-lite.chunk.js.map} +1 -1
  106. package/dist/scripts/{9484-be04a34bbf-lite.chunk.js → 9484-b85011dbea-lite.chunk.js} +2 -2
  107. package/dist/scripts/{9484-be04a34bbf-lite.chunk.js.map → 9484-b85011dbea-lite.chunk.js.map} +1 -1
  108. package/dist/scripts/{bundle-8f540a1154.min.js → bundle-c158cdd3a9.min.js} +3 -3
  109. package/dist/scripts/{bundle-8f540a1154.min.js.map → bundle-c158cdd3a9.min.js.map} +1 -1
  110. package/package.json +1 -1
  111. package/dist/scripts/5595-3763b14d77-lite.chunk.js.map +0 -1
  112. package/dist/scripts/7293-afd3349468-lite.chunk.js +0 -2
  113. package/dist/scripts/8261-72453f1978-lite.chunk.js +0 -2
  114. package/dist/scripts/8261-72453f1978-lite.chunk.js.map +0 -1
  115. /package/dist/scripts/{170-1f815b85a1-lite.chunk.js.LICENSE.txt → 170-2d124965b7-lite.chunk.js.LICENSE.txt} +0 -0
  116. /package/dist/scripts/{2118-462a279c5a-lite.chunk.js.LICENSE.txt → 2118-ec2a5f1e9b-lite.chunk.js.LICENSE.txt} +0 -0
  117. /package/dist/scripts/{3841-95df66e647-lite.chunk.js.LICENSE.txt → 3841-bfae79638b-lite.chunk.js.LICENSE.txt} +0 -0
  118. /package/dist/scripts/{4778-ebe369973c-lite.chunk.js.LICENSE.txt → 4778-3c9f2b7f76-lite.chunk.js.LICENSE.txt} +0 -0
  119. /package/dist/scripts/{4942-a27a31e79e-lite.chunk.js.LICENSE.txt → 4942-acce40b333-lite.chunk.js.LICENSE.txt} +0 -0
  120. /package/dist/scripts/{5268-f4db3933ff-lite.chunk.js.LICENSE.txt → 5268-9b7560f3b1-lite.chunk.js.LICENSE.txt} +0 -0
  121. /package/dist/scripts/{6102-4d948a5e48-lite.chunk.js.LICENSE.txt → 6102-751dbbbf33-lite.chunk.js.LICENSE.txt} +0 -0
  122. /package/dist/scripts/{771-eb60e33941-lite.chunk.js.LICENSE.txt → 771-5612b4ffc2-lite.chunk.js.LICENSE.txt} +0 -0
  123. /package/dist/scripts/{8024-66413cc05b-lite.chunk.js.LICENSE.txt → 8024-765a4170c7-lite.chunk.js.LICENSE.txt} +0 -0
  124. /package/dist/scripts/{8681-41edd08b98-lite.chunk.js.LICENSE.txt → 8681-49db3daae6-lite.chunk.js.LICENSE.txt} +0 -0
  125. /package/dist/scripts/{8906-b75b51bd0f-lite.chunk.js.LICENSE.txt → 8906-2f6b5e4c5c-lite.chunk.js.LICENSE.txt} +0 -0
  126. /package/dist/scripts/{9478-8eacf2fe47-lite.chunk.js.LICENSE.txt → 9478-4b3c088537-lite.chunk.js.LICENSE.txt} +0 -0
  127. /package/dist/scripts/{9484-be04a34bbf-lite.chunk.js.LICENSE.txt → 9484-b85011dbea-lite.chunk.js.LICENSE.txt} +0 -0
  128. /package/dist/scripts/{bundle-8f540a1154.min.js.LICENSE.txt → bundle-c158cdd3a9.min.js.LICENSE.txt} +0 -0
@@ -1,2 +1,2 @@
1
1
  "use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[6158],{88319:(e,t,r)=>{r.d(t,{q:()=>R});var a=r(32735),n=r(70680),o=r(20354),s=r(49985),c=r(65858),i=r(12458),u=r(11607),l=r(83345);function m(e){var t=e.childComponent;return a.createElement("ul",{className:"m-0 list-unstyled striped-list"},e.objects.map((function(r){return a.createElement(t,{key:r.id,object:r,objectType:e.objectType})})))}var d=r(4594),p=r(76881),b="userManager.wizardCompletedWithError";function f(e){var t;return(null===(t=e.erroredObjects)||void 0===t?void 0:t.length)?a.createElement(l.D.Provider,{value:b},a.createElement("div",{className:"pb-3"},a.createElement("div",{className:"d-flex justify-content-between"},a.createElement("div",null,a.createElement("h2",{className:"h4 mb-3"},a.createElement(l.x,{phrase:"Create"===e.actionVerb?"headingCreate":"headingAction"})),a.createElement("p",null,a.createElement(l.x,{phrase:e.objectType===d.E.User?"Create"===e.actionVerb?e.userType===p.Y.Learner?"totalCreatedStudents":"totalCreatedStaff":e.userType===p.Y.Learner?"totalActionedStudents":"totalActionedStaff":e.objectType===d.E.Video?"totalActionedVideos":"totalActionedItems",options:{totalUpdated:e.totalObjects-e.totalErroredResults,totalObjects:e.totalObjects}})))),a.createElement("div",{className:"d-flex align-items-cetner justify-content-between mb-2"},a.createElement("p",{className:"fw-semibold mb-0"},a.createElement(l.x,{phrase:"Create"===e.actionVerb?"unsuccessfulCreations":"unsuccessfulActions",options:{smartCount:e.totalErroredResults}})),!!e.actionButton&&a.createElement(u.L,{className:"info-link",onClick:function(){return e.actionButton.onClick(e.erroredObjects)}},e.actionButton.text)),a.createElement(m,{objects:e.erroredObjects,objectType:e.objectType,childComponent:function(t){return e.getErrorListItem(t.object)}}))):a.createElement(a.Fragment,null)}var y=r(98269),g=r(12778);const v={imageWidth:"Gjry1"};var h="userManager.wizardFailed";function j(e){var t=g.o.getSupportRequestUrl();return a.createElement("div",{className:"d-flex flex-column align-items-center"},a.createElement("div",{className:"".concat(v.imageWidth," text-center py-4")},a.createElement("img",{className:"img-fluid",src:e.failedImageUrl})),a.createElement("h2",{className:"h3"},a.createElement(l.x,{namespace:h,phrase:"heading"})),a.createElement("p",{className:"mb-0"},a.createElement(l.x,{namespace:h,phrase:"Create"===e.actionVerb?"failedCreate":"failedAction"})),!!t&&a.createElement("p",null,a.createElement(l.x,{namespace:h,phrase:"contactSupport",options:{href:t,linkClass:"info-link"}})),e.onClickTryAgain&&a.createElement(y.Z,{variant:"outline-dark",className:t?"":"mt-3",onClick:e.onClickTryAgain},a.createElement(l.x,{namespace:h,phrase:"tryAgain"})))}var E=r(36848);const C={imageWidth:"picjj"};var S="userManager.wizardSucceeded";function A(e){return a.createElement("div",{className:"d-flex flex-column align-items-center"},a.createElement("div",{className:"".concat(C.imageWidth," text-center pt-4 pb-2")},a.createElement("img",{className:"img-fluid",src:e.successImageUrl})),a.createElement("h2",{className:"h3"},a.createElement(l.x,{namespace:S,phrase:"success"})),a.createElement("p",{className:"text-center",dangerouslySetInnerHTML:{__html:e.message}}),e.finishAppLink&&a.createElement(E.F,{className:"btn btn-dark",appLink:e.finishAppLink,onClick:e.onFinish},a.createElement(l.x,{namespace:S,phrase:"finish"})))}var k,w=r(96728),T=r(58739),I=r(38389);!function(e){e[e.All=0]="All",e[e.NoAction=1]="NoAction",e[e.Succeed=2]="Succeed",e[e.Failed=3]="Failed"}(k||(k={}));var U=r(60115),O=r(64818),N=r(89476);function L(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,a=new Array(t);r<t;r++)a[r]=e[r];return a}function R(e){var t,r,u=(0,n.I0)(),l=function(e,t){var r,a=(0,n.I0)(),s=function(r){return t(e,k.Failed,r)},c=(0,U.K)(s,(function(e){return o.a.getFetch(a)(s(e))})),i=c.items,u=c.isFetching,l=null!==(r=null==i?void 0:i.map((function(e){return!e.objectData&&e.metadata&&"firstname"in e.metadata?{name:e.metadata.firstname,surname:e.metadata.surname,userType:O.l.getUserType(e.metadata),username:e.metadata.username,errorCode:e.status}:Object.assign(Object.assign({},e.objectData),{errorCode:e.status})})))&&void 0!==r?r:[];return{isFetching:u,objects:l,count:l.length}}(e.job.id,e.getResultsRequest),m=(0,N.f)(),d=a.useContext(w.e),p=d.setShowButtons,b=d.showButtons,y=(t=a.useState(!1),r=2,function(e){if(Array.isArray(e))return e}(t)||function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var a,n,o,s,c=[],i=!0,u=!1;try{if(o=(r=r.call(e)).next,0===t){if(Object(r)!==r)return;i=!1}else for(;!(i=(a=o.call(r)).done)&&(c.push(a.value),c.length!==t);i=!0);}catch(e){u=!0,n=e}finally{try{if(!i&&null!=r.return&&(s=r.return(),Object(s)!==s))return}finally{if(u)throw n}}return c}}(t,r)||function(e,t){if(e){if("string"==typeof e)return L(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?L(e,t):void 0}}(t,r)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),g=y[0],v=y[1];return a.useEffect((function(){e.job.type===I.m.RolloverYearGroup&&u({type:o.a.Actions.INVALIDATE,keys:["year:group:rollover:status"],request:null})}),[e.job.type]),a.useEffect((function(){var t;if(!e.preventLoggingAnalytics&&!g){v(!0);var r=Object.assign(Object.assign({},null!==(t=e.analyticsData)&&void 0!==t?t:{}),{id:e.job.id,userCount:e.summary.totalProcessed,totalSucceeded:e.summary.totalSucceeded,totalErrored:e.summary.totalErrored,totalNoAction:e.summary.totalNoAction}),a=i.I.getJobStatus(e.job.status);a&&(r.status=a);var n={workflowPhase:c.eu.Complete};e.analyticsOptions&&(n=s.k.mergeOptions(e.analyticsOptions,n)),s.k.logUserAction(r,n)}}),[e.preventLoggingAnalytics,g]),a.useEffect((function(){e.navLockId&&m.unlock(e.navLockId)}),[]),a.useEffect((function(){switch(e.job.status){case T.K.Completed:case T.K.Failed:b&&p(!1);break;case T.K.CompletedWithError:b||p(!0)}}),[e.job.status]),e.job.status===T.K.Completed?a.createElement(A,{message:e.actionSucceededMessage,successImageUrl:e.successImageUrl,actionVerb:e.actionVerb,finishAppLink:e.finishAppLink,onFinish:e.onFinish}):e.job.status===T.K.CompletedWithError?a.createElement(f,{erroredObjects:l.objects,totalObjects:e.objectCount,totalErroredResults:l.count,userType:null==e?void 0:e.userType,currentUser:e.currentUser,imageCdnUrl:e.imageCdnUrl,actionVerb:e.actionVerb,objectType:e.objectType,getErrorListItem:e.getErrorListItem,actionButton:e.errorActionButton}):a.createElement(j,{onClickTryAgain:e.onClickTryAgain,failedImageUrl:e.failedImageUrl,actionVerb:e.actionVerb})}},94644:(e,t,r)=>{r.d(t,{r:()=>l});var a=r(50242),n=r(81886),o=r(67058),s=r(14553),c=r(49267),i=r(49075),u={notFound:o.d,forbidden:{rating:s.q,yearLevel:s.q,region:c.a,privacy:s.q},badRequest:i._};function l(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(e){var o;o="number"==typeof e?e:e.status;var s=Object.assign(Object.assign({},u),t);o&&n.Q.Ry.isStatusCodeError(o)&&(o!==a.o.NotFound?o!==a.o.Forbidden?r.badRequest||n.Q.Ry.throw(new s.badRequest):r.forbidden||n.Q.Ry.throw(new s.forbidden.privacy):r.notFound||n.Q.Ry.throw(new s.notFound))}}},91286:(e,t,r)=>{r.d(t,{v:()=>s});var a=r(32735),n=r(94644);function o(e){return e.map((function(e){return e.statusCode})).join(":")}function s(e,t,r){var s=Array.isArray(e)?e:[e];(0,a.useEffect)((function(){s.forEach((function(e){(0,n.r)(e.statusCode,t,r)}))}),[o(s),t,r])}},44963:(e,t,r)=>{r.r(t),r.d(t,{BulkUserActionsStatusCompleteView:()=>I});var a=r(32735),n=r(70680),o=r(56050),s=r(23481),c=r(81886),i=r(20354),u=r(2948),l=r(65858),m=r(58703),d=r(12458),p=r(149),b=r(88319),f=r(38143),y=r(4594),g=r(76881),v=r(39151),h=r(31949),j=r(91286),E=r(99742),C=r(29613),S=r(88323),A=r(18087);function k(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,a=new Array(t);r<t;r++)a[r]=e[r];return a}var w=s.T.encloseNamespace("userManager.bulkUserActionsStatusCompleteView");function T(e,t,r){if(!e)return"";if(t===g.Y.Learner)switch(e){case"delete":return w("deleteStudentsSuccess",{smartCount:r});case"removeFromSchool":return w("removeFromSchoolStudentSuccess",{smartCount:r});case"deactivate":return w("deactivateStudentsSuccess",{smartCount:r});case"reactivate":return w("reactivateStudentsSuccess",{smartCount:r});case"changeYearGroup":return w("changeYearGroupSuccess",{smartCount:r});case"yearGroupRollover":return w("yearGroupRolloverSuccess");case"addToClassroom":return w("addToClassroomSuccess",{smartCount:r});case"resetPassword":return w("resetPasswordSuccess",{smartCount:r});case"activationEmail":return w("activationEmailSuccess",{smartCount:r});default:return c.Q.Ry.throw(new o.H("Missing switch statement case for ".concat(e," in BulkUserActionsStatusCompleteView.tsx"))),""}switch(e){case"delete":return w("deleteStaffSuccess",{smartCount:r});case"deactivate":return w("deactivateStaffSuccess",{smartCount:r});case"reactivate":return w("reactivateStaffSuccess",{smartCount:r});case"resetEmail":return w("resetEmailSuccess",{smartCount:r});case"removeFromSchool":return w("removeFromSchoolStaffSuccess",{smartCount:r});default:return c.Q.Ry.throw(new o.H("Missing switch statement case for ".concat(e," in BulkUserActionsStatusCompleteView.tsx"))),""}}function I(e){var t,r,o=(0,S.h)(e.userType),s=o.users,g=o.count,w=(t=(0,u.D)(f.g.BULK_USER_ACTIONS),r=2,function(e){if(Array.isArray(e))return e}(t)||function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var a,n,o,s,c=[],i=!0,u=!1;try{if(o=(r=r.call(e)).next,0===t){if(Object(r)!==r)return;i=!1}else for(;!(i=(a=o.call(r)).done)&&(c.push(a.value),c.length!==t);i=!0);}catch(e){u=!0,n=e}finally{try{if(!i&&null!=r.return&&(s=r.return(),Object(s)!==s))return}finally{if(u)throw n}}return c}}(t,r)||function(e,t){if(e){if("string"==typeof e)return k(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?k(e,t):void 0}}(t,r)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),I=w[0],U=w[1],O=(0,A.Y)(e.userType),N=i.a.useBasicFetch(h.N.currentUser()),L=i.a.useBasicFetch(v.L.config()),R=i.a.useBasicFetch(C.q.getJob(e.jobId)),F=i.a.useBasicFetch(C.q.getJobSummary(e.jobId));(0,j.v)(R);var x=(0,n.I0)(),V=p.b.useCreateJobErrorAlert();function B(t){c.Q.C$.trigger(Object.assign(Object.assign({},O.bulkActionsStatus.polling),{params:{userType:e.userType,jobId:t.id}}))}var q=!!(R.data&&L.data&&N.data&&F.data);return a.createElement(m.d,{appLinks:O,userType:e.userType,users:s,currentStep:"status",userCount:g,preventNavLock:!0,disableAppLinks:!0,loaded:q},q&&a.createElement(b.q,{job:R.data,summary:F.data,objectCount:g,objectType:y.E.User,userType:e.userType,finishAppLink:O.userManager,imageCdnUrl:L.data.imageCdnUrl,successImageUrl:E.W.SUCCESS,failedImageUrl:E.W.WIZARD_ERROR,currentUser:N.data,onClickTryAgain:function(){var t=p.b.getCreateJobRequestData(I,N.data.customerId,e.userType);i.a.fetch(x,C.q.createJob(t,B,V))},getResultsRequest:C.q.getJobResults,actionSucceededMessage:T(null==I?void 0:I.subAction,e.userType,F.data.totalSucceeded),navLockId:m.N,actionVerb:p.b.mapSubActionToVerb(null==I?void 0:I.subAction),onFinish:function(){return U({})},preventLoggingAnalytics:!I,analyticsData:{action:d.I.getAnalyticsActionName(I)},analyticsOptions:{location:l.LZ.BulkUserActionsWizard,entity:l.py.User,actionType:l.Vw.BulkAction},getErrorListItem:function(e){return p.b.getErrorListItem(e,L.data.imageCdnUrl,N.data)}}))}},29613:(e,t,r)=>{r.d(t,{q:()=>s});var a=r(99940),n=r(97395),o=r(149),s={createJob:function(e,t,r){return{url:"{gateway}/v1/batch/jobs",key:"create:job",type:a.k.POST,data:e,success:t,error:r}},getJobs:function(e){var t={},r=[],a=[];return e.cursor&&(t.cursor=e.cursor),e.sort&&("oldest"===e.sort?t.order="ASC":t.order="DESC"),e.bulkActionType?(r=Array.isArray(e.bulkActionType)?e.bulkActionType:[e.bulkActionType],t.type=r):t.type=o.O,e.userType&&(a=Array.isArray(e.userType)?e.userType:[e.userType],t.dataType=a),{url:n._.urlBuilder("{gateway}/v1/batch/jobs",t),key:"batch:jobs:".concat(e.cursor,":").concat(e.sort,":").concat(r.sort().join(":"),":").concat(a.sort().join(":"))}},getJob:function(e){return{url:"{gateway}/v1/batch/jobs/".concat(e),key:"job:".concat(e)}},getJobProgress:function(e,t,r){return{url:"{gateway}/v1/batch/jobs/".concat(e,"/progress"),key:"job:".concat(e,":progress"),invalidationKeys:"job:".concat(e,":progress"),success:t,error:r}},getJobResults:function(e,t,r,a,o){var s={status:t};return r&&(s.cursor=r),{url:n._.urlBuilder("{gateway}/v1/batch/jobs/".concat(e,"/results"),s),key:"job:".concat(e,":results:").concat(t,":").concat(r),success:a,error:o}},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:a.k.POST,data:{jobIds:e}}},getJobSummary:function(e){return{url:"{gateway}/v1/batch/jobs/".concat(e,"/summary"),key:"job:summary:".concat(e)}}}}}]);
2
- //# sourceMappingURL=6158-0c5e44f800-lite.chunk.js.map
2
+ //# sourceMappingURL=6158-d123add596-lite.chunk.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"scripts/6158-0c5e44f800-lite.chunk.js","mappings":"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","sources":["file:///app/packages/libs/shared/src/components/wizard/object-list/ObjectList.tsx","file:///app/packages/libs/shared/src/components/wizard/status/statuses/completed-with-error/WizardCompletedWithError.tsx","file:///app/packages/libs/shared/src/components/wizard/status/statuses/failed/wizard-failed.scss","file:///app/packages/libs/shared/src/components/wizard/status/statuses/failed/WizardFailed.tsx","file:///app/packages/libs/shared/src/components/wizard/status/statuses/succeeded/wizard-succeeded.scss","file:///app/packages/libs/shared/src/components/wizard/status/statuses/succeeded/WizardSucceeded.tsx","file:///app/packages/libs/shared/src/enums/BatchJobResultStatus.ts","file:///app/packages/libs/shared/src/components/wizard/status/completed/WizardCompleted.tsx","file:///app/packages/libs/shared/src/hooks/useErroredBulkActions.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/user-manager/views/wizard/status/complete/BulkUserActionsStatusCompleteView.tsx","file:///app/packages/projects/lite/src/shared/flight-requests/JobRequests.ts"],"sourcesContent":["import React from 'react';\n\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { BaseObject } from 'libs/shared/interfaces';\n\ninterface ObjectListProps<T extends BaseObject = BaseObject> {\n objects: T[];\n objectType: MasterType;\n childComponent: (props: BaseObjectItemProps<T>) => JSX.Element;\n}\n\nexport interface BaseObjectItemProps<T extends BaseObject = BaseObject> {\n object: T;\n objectType: MasterType;\n}\n\nexport function ObjectList<T extends BaseObject = BaseObject>(props: ObjectListProps<T>): JSX.Element {\n const ChildComponent = props.childComponent;\n\n return (\n <ul className='m-0 list-unstyled striped-list'>\n {props.objects.map(object => {\n return (\n <ChildComponent\n key={object.id}\n object={object}\n objectType={props.objectType}\n />\n );\n })}\n </ul>\n );\n}","import React from 'react';\n\nimport { DivButton } from 'libs/shared/components/div-button/DivButton';\nimport { LanguageNamespaceContext, Text } from 'libs/shared/components/text/Text';\nimport { ObjectList } from 'libs/shared/components/wizard/object-list/ObjectList';\nimport { BatchJobResultErrorCode } from 'libs/shared/enums/BatchJobResultErrorCode';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { UserGroup } from 'libs/shared/enums/UserGroup';\nimport { BaseObject, CurrentUser, WizardActionVerb } from 'libs/shared/interfaces';\n\nexport type ObjectWithErrorCode<TObject extends BaseObject> = TObject & {\n errorCode: BatchJobResultErrorCode;\n}\n\nexport interface WizardErrorActionButton<TObject = BaseObject> {\n onClick: (erroredObject: ObjectWithErrorCode<TObject>[]) => void;\n text: string;\n}\n\nconst namespace = 'userManager.wizardCompletedWithError';\n\ninterface WizardCompletedWithErrorProps<TObject> {\n erroredObjects: ObjectWithErrorCode<TObject>[];\n totalObjects: number;\n objectType?: MasterType;\n totalErroredResults: number;\n userType?: UserGroup;\n imageCdnUrl: string;\n actionVerb: WizardActionVerb;\n currentUser?: CurrentUser;\n getErrorListItem?: (erroredObjects: ObjectWithErrorCode<TObject>) => JSX.Element;\n actionButton?: WizardErrorActionButton;\n}\n\nexport function WizardCompletedWithError<\n TObject extends BaseObject = BaseObject\n>(\n props: WizardCompletedWithErrorProps<TObject>\n): JSX.Element {\n if (!props.erroredObjects?.length)\n return <></>;\n\n const getTotalUpdatedPhrase = () => {\n if (props.objectType === MasterType.User) {\n if (props.actionVerb === 'Create')\n return props.userType === UserGroup.Learner ? 'totalCreatedStudents' : 'totalCreatedStaff';\n \n return props.userType === UserGroup.Learner ? 'totalActionedStudents' : 'totalActionedStaff';\n }\n if (props.objectType === MasterType.Video) {\n return 'totalActionedVideos';\n }\n return 'totalActionedItems';\n };\n\n return (\n <LanguageNamespaceContext.Provider value={namespace}>\n <div className='pb-3'>\n <div className='d-flex justify-content-between'>\n <div>\n <h2 className='h4 mb-3'>\n <Text phrase={props.actionVerb === 'Create' ? 'headingCreate' : 'headingAction'} />\n </h2>\n\n <p>\n <Text\n phrase={getTotalUpdatedPhrase()}\n options={{\n totalUpdated: props.totalObjects - props.totalErroredResults,\n totalObjects: props.totalObjects\n }}\n />\n </p>\n </div>\n </div>\n\n <div className='d-flex align-items-cetner justify-content-between mb-2'>\n <p className='fw-semibold mb-0'>\n <Text\n phrase={props.actionVerb === 'Create' ? 'unsuccessfulCreations' : 'unsuccessfulActions'}\n options={{ smartCount: props.totalErroredResults }}\n />\n </p>\n\n {!!props.actionButton && (\n <DivButton\n className='info-link'\n onClick={() => props.actionButton.onClick(props.erroredObjects)}\n >\n {props.actionButton.text}\n </DivButton>\n )}\n </div>\n\n <ObjectList<ObjectWithErrorCode<TObject>>\n objects={props.erroredObjects}\n objectType={props.objectType}\n childComponent={childProps => props.getErrorListItem(childProps.object)}\n />\n </div>\n </LanguageNamespaceContext.Provider>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"imageWidth\":\"Gjry1\"};","import React from 'react';\nimport { Button } from 'react-bootstrap';\n\nimport { Text } from 'libs/shared/components/text/Text';\nimport { WizardActionVerb } from 'libs/shared/interfaces';\nimport { ArticleHelper } from 'libs/shared/utils/ArticleHelper';\n\nimport styles from './wizard-failed.scss';\n\nconst namespace = 'userManager.wizardFailed';\n\ninterface WizardFailedProps {\n onClickTryAgain?: () => void;\n failedImageUrl: string;\n actionVerb: WizardActionVerb;\n}\n\ntype Props = React.PropsWithChildren<WizardFailedProps>;\n\nexport function WizardFailed(props: Props): JSX.Element {\n const supportUrl = ArticleHelper.getSupportRequestUrl();\n\n return (\n <div className='d-flex flex-column align-items-center'>\n <div className={`${styles.imageWidth} text-center py-4`}>\n <img\n className='img-fluid'\n src={props.failedImageUrl}\n />\n </div>\n <h2 className='h3'>\n <Text namespace={namespace} phrase='heading' />\n </h2>\n\n <p className='mb-0'>\n <Text namespace={namespace} phrase={props.actionVerb === 'Create' ? 'failedCreate' : 'failedAction'} />\n </p>\n\n {!!supportUrl && (\n <p>\n <Text\n namespace={namespace}\n phrase='contactSupport'\n options={{ href: supportUrl, linkClass: 'info-link' }}\n />\n </p>\n )}\n\n {props.onClickTryAgain && (\n <Button variant='outline-dark' className={!supportUrl ? 'mt-3' : ''} onClick={props.onClickTryAgain}>\n <Text namespace={namespace} phrase='tryAgain' />\n </Button>\n )}\n </div>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"imageWidth\":\"picjj\"};","import React from 'react';\n\nimport { AppLink } from 'libs/common/backbone/core';\n\nimport { AppLink as AppLinkComponent } from 'libs/shared/components/app-link/AppLink';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { WizardActionVerb } from 'libs/shared/interfaces';\n\nimport styles from './wizard-succeeded.scss';\n\nconst namespace = 'userManager.wizardSucceeded';\n\ninterface WizardSucceededProps {\n finishAppLink?: AppLink;\n message: string;\n successImageUrl: string;\n actionVerb?: WizardActionVerb;\n onFinish?: () => void;\n}\n\ntype Props = React.PropsWithChildren<WizardSucceededProps>;\n\nexport function WizardSucceeded(props: Props): JSX.Element {\n return (\n <div className='d-flex flex-column align-items-center'>\n <div className={`${styles.imageWidth} text-center pt-4 pb-2`}>\n <img\n className='img-fluid'\n src={props.successImageUrl}\n />\n </div>\n <h2 className='h3'>\n <Text namespace={namespace} phrase='success' />\n </h2>\n <p className='text-center' dangerouslySetInnerHTML={{ __html: props.message }} />\n {props.finishAppLink && (\n <AppLinkComponent className='btn btn-dark' appLink={props.finishAppLink} onClick={props.onFinish}>\n <Text namespace={namespace} phrase='finish' />\n </AppLinkComponent>\n )}\n </div>\n );\n}","export enum BatchJobResultStatus {\n All = 0,\n NoAction = 1,\n Succeed = 2,\n Failed = 3\n}","import React from 'react';\nimport { useDispatch } from 'react-redux';\n\nimport { AppLink } from 'libs/common/backbone/core';\nimport { Flight } from 'libs/common/flight';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { AnalyticsHelper } from 'libs/analytics/AnalyticsHelper';\nimport { AnalyticsOptions, WorkflowPhase } from 'libs/analytics/interfaces';\n\nimport { BulkUserActionsAnalyticsHelper } from 'libs/shared/apps/user-manager/utils/BulkUserActionsAnalyticsHelper';\nimport { ObjectWithErrorCode, WizardCompletedWithError, WizardErrorActionButton } from 'libs/shared/components/wizard/status/statuses/completed-with-error/WizardCompletedWithError';\nimport { WizardFailed } from 'libs/shared/components/wizard/status/statuses/failed/WizardFailed';\nimport { WizardSucceeded } from 'libs/shared/components/wizard/status/statuses/succeeded/WizardSucceeded';\nimport { WizardLayoutContext } from 'libs/shared/context/WizardLayoutContext';\nimport { BatchJobStatus } from 'libs/shared/enums/BatchJobStatus';\nimport { BatchJobType } from 'libs/shared/enums/BatchJobType';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { UserGroup } from 'libs/shared/enums/UserGroup';\nimport { GetResultsRequest, useErroredBulkActions } from 'libs/shared/hooks/useErroredBulkActions';\nimport { useNavLock } from 'libs/shared/hooks/useNavLock';\nimport { BaseObject, BatchJob, BatchJobSummary, CurrentUser, WizardActionVerb } from 'libs/shared/interfaces';\n\ninterface WizardCompletedProps<TObject> {\n job: BatchJob;\n summary: BatchJobSummary;\n userType?: UserGroup;\n objectCount: number;\n objectType: MasterType;\n getResultsRequest: GetResultsRequest;\n onClickTryAgain?: () => void;\n actionSucceededMessage: string;\n actionVerb: WizardActionVerb;\n navLockId?: string;\n onFinish?: () => void;\n\n analyticsOptions?: AnalyticsOptions;\n analyticsData?: HashObject;\n preventLoggingAnalytics: boolean;\n\n imageCdnUrl: string;\n failedImageUrl: string;\n successImageUrl: string;\n \n currentUser?: CurrentUser;\n\n finishAppLink?: AppLink;\n \n getErrorListItem?: (erroredObjects: ObjectWithErrorCode<TObject>) => JSX.Element;\n errorActionButton?: WizardErrorActionButton;\n}\n\nexport function WizardCompleted<\n TObject extends BaseObject = BaseObject\n>(\n props: WizardCompletedProps<TObject>\n): JSX.Element {\n const dispatch = useDispatch();\n const erroredObjects = useErroredBulkActions<TObject>(props.job.id, props.getResultsRequest);\n const navLock = useNavLock();\n const { setShowButtons, showButtons } = React.useContext(WizardLayoutContext);\n\n const [ hasLoggedEvent, setHasLoggedEvent ] = React.useState(false);\n\n React.useEffect(() => {\n if (props.job.type === BatchJobType.RolloverYearGroup) {\n // Clear year group rollover status\n dispatch({\n type: Flight.Actions.INVALIDATE,\n keys: ['year:group:rollover:status'],\n request: null\n });\n }\n }, [props.job.type]);\n\n React.useEffect(() => {\n if (props.preventLoggingAnalytics || hasLoggedEvent)\n return;\n\n setHasLoggedEvent(true);\n\n const analyticsData: HashObject = {\n ...(props.analyticsData ?? {}),\n id: props.job.id,\n userCount: props.summary.totalProcessed,\n totalSucceeded: props.summary.totalSucceeded,\n totalErrored: props.summary.totalErrored,\n totalNoAction: props.summary.totalNoAction\n };\n\n const status = BulkUserActionsAnalyticsHelper.getJobStatus(props.job.status);\n\n if (status)\n analyticsData.status = status;\n \n let analyticsOptionsData: AnalyticsOptions = { workflowPhase: WorkflowPhase.Complete };\n\n if (props.analyticsOptions) {\n analyticsOptionsData = AnalyticsHelper.mergeOptions(props.analyticsOptions, analyticsOptionsData);\n }\n\n AnalyticsHelper.logUserAction(analyticsData, analyticsOptionsData);\n }, [ props.preventLoggingAnalytics, hasLoggedEvent ]);\n\n React.useEffect(() => {\n if (props.navLockId)\n navLock.unlock(props.navLockId);\n }, []);\n\n React.useEffect(() => {\n switch (props.job.status) {\n case BatchJobStatus.Completed:\n case BatchJobStatus.Failed:\n if (showButtons) {\n setShowButtons(false);\n }\n break;\n\n case BatchJobStatus.CompletedWithError:\n if (!showButtons) {\n setShowButtons(true);\n }\n break;\n\n default:\n break;\n }\n }, [props.job.status]);\n\n if (props.job.status === BatchJobStatus.Completed) {\n return (\n <WizardSucceeded\n message={props.actionSucceededMessage}\n successImageUrl={props.successImageUrl}\n actionVerb={props.actionVerb}\n finishAppLink={props.finishAppLink}\n onFinish={props.onFinish}\n />\n );\n }\n\n if (props.job.status === BatchJobStatus.CompletedWithError) {\n return (\n <WizardCompletedWithError<TObject>\n erroredObjects={erroredObjects.objects}\n totalObjects={props.objectCount}\n totalErroredResults={erroredObjects.count}\n userType={props?.userType}\n currentUser={props.currentUser}\n imageCdnUrl={props.imageCdnUrl}\n actionVerb={props.actionVerb}\n objectType={props.objectType}\n getErrorListItem={props.getErrorListItem}\n actionButton={props.errorActionButton}\n />\n );\n }\n\n return (\n <WizardFailed\n onClickTryAgain={props.onClickTryAgain}\n failedImageUrl={props.failedImageUrl}\n actionVerb={props.actionVerb}\n />\n );\n}","import { useDispatch } from 'react-redux';\n\nimport { Flight } from 'libs/common/flight';\n\nimport { ObjectWithErrorCode } from 'libs/shared/components/wizard/status/statuses/completed-with-error/WizardCompletedWithError';\nimport { BatchJobResultStatus } from 'libs/shared/enums/BatchJobResultStatus';\nimport { useInfiniteList } from 'libs/shared/hooks/UseInfiniteList';\nimport { BaseObject, BatchJobResult } from 'libs/shared/interfaces';\nimport { UserHelper } from 'libs/shared/utils/UserHelper';\n\n\ninterface GetErroredObjects<TObject> {\n objects: ObjectWithErrorCode<TObject>[];\n isFetching: boolean;\n count: number;\n}\n\nexport type GetResultsRequest = (jobId: string, status: BatchJobResultStatus, cursor?: string) => Flight.Request;\n\nexport function useErroredBulkActions<TObject extends BaseObject>(\n jobId: string,\n getResultsRequest: GetResultsRequest\n): GetErroredObjects<TObject> {\n const dispatch = useDispatch();\n\n const getResultsPage = (cursor?: string) => {\n return getResultsRequest(\n jobId,\n BatchJobResultStatus.Failed,\n cursor\n );\n };\n\n const fetchNext = (cursor?: string) => {\n return Flight.getFetch(dispatch)(getResultsPage(cursor));\n };\n\n const {\n items: erroredResults,\n isFetching: isFetchingErroredResults\n } = useInfiniteList<BatchJobResult<TObject>>(getResultsPage, fetchNext);\n\n const objects: ObjectWithErrorCode<TObject>[] = erroredResults?.map(result => {\n if (!result.objectData && result.metadata && 'firstname' in result.metadata) {\n return {\n name: result.metadata.firstname,\n surname: result.metadata.surname,\n userType: UserHelper.getUserType(result.metadata as any),\n username: result.metadata.username,\n errorCode: result.status\n } as unknown as ObjectWithErrorCode<TObject>;\n }\n\n return {\n ...result.objectData,\n errorCode: result.status\n };\n }) ?? [];\n\n return {\n isFetching: isFetchingErroredResults,\n objects: objects,\n count: objects.length // TODO: Get a proper count from the backend\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}","import React from 'react';\nimport { useDispatch } from 'react-redux';\n\nimport { DevError } from 'libs/common/backbone/errors/DevError';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Core } from 'libs/common/core';\nimport { Flight } from 'libs/common/flight';\nimport { useViewModel } from 'libs/common/react/hooks/UseViewModel';\n\nimport { EntityType, LocationContext, UserAction } from 'libs/analytics/interfaces';\n\nimport { BULK_USER_ACTIONS_NAV_LOCK_ID, BulkUserActionsWizardLayout, BulkUserSubAction } from 'libs/shared/apps/user-manager/components/bulk-actions-wizard/layout/BulkUserActionsWizardLayout';\nimport { UserWizardStatusParams } from 'libs/shared/apps/user-manager/interfaces/query-params/UserWizardParams';\nimport { BulkUserActionsViewModel } from 'libs/shared/apps/user-manager/interfaces/viewmodels/BulkUserActionsViewModel';\nimport { BulkUserActionsAnalyticsHelper } from 'libs/shared/apps/user-manager/utils/BulkUserActionsAnalyticsHelper';\nimport { BulkUserActionsHelper } from 'libs/shared/apps/user-manager/utils/BulkUserActionsHelper';\nimport { WizardCompleted } from 'libs/shared/components/wizard/status/completed/WizardCompleted';\nimport { ObjectWithErrorCode } from 'libs/shared/components/wizard/status/statuses/completed-with-error/WizardCompletedWithError';\nimport { SharedViewModelKeys } from 'libs/shared/constants/SharedViewModelKeys';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { UserGroup } from 'libs/shared/enums/UserGroup';\nimport { ConfigRequests } from 'libs/shared/flight-requests/ConfigRequests';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { useHandleObjectError } from 'libs/shared/hooks/UseHandleObjectError';\nimport { BatchJob, BatchJobSummary, Config, CurrentUser, User } from 'libs/shared/interfaces';\n\nimport { ImageUrls } from 'shared/constants/ImageUrls';\nimport { JobRequests } from 'shared/flight-requests/JobRequests';\n\nimport { useBulkActionsUsersWrapper } from 'apps/user-manager/hooks/useBulkActionsUsersWrapper';\nimport { getUserManagerAppLinks } from 'apps/user-manager/utils/LiteUserManagerAppLinks';\n\nconst namespace = 'userManager.bulkUserActionsStatusCompleteView';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nfunction getSuccessMessage(action: BulkUserSubAction, userType: UserGroup, count: number): string {\n /**\n * We've unsetting our viewModel as we exit the bulk wizard after an action completes.\n * This function will run one more time but without an action.\n */\n if (!action)\n return '';\n\n if (userType === UserGroup.Learner) {\n switch (action) {\n case 'delete':\n return getPhrase('deleteStudentsSuccess', { smartCount: count });\n case 'removeFromSchool':\n return getPhrase('removeFromSchoolStudentSuccess', { smartCount: count });\n case 'deactivate':\n return getPhrase('deactivateStudentsSuccess', { smartCount: count });\n case 'reactivate':\n return getPhrase('reactivateStudentsSuccess', { smartCount: count });\n case 'changeYearGroup':\n return getPhrase('changeYearGroupSuccess', { smartCount: count });\n case 'yearGroupRollover':\n return getPhrase('yearGroupRolloverSuccess');\n case 'addToClassroom':\n return getPhrase('addToClassroomSuccess', { smartCount: count });\n case 'resetPassword':\n return getPhrase('resetPasswordSuccess', { smartCount: count });\n case 'activationEmail':\n return getPhrase('activationEmailSuccess', { smartCount: count });\n default: {\n Core.ErrorHelper.throw(new DevError(`Missing switch statement case for ${action} in BulkUserActionsStatusCompleteView.tsx`));\n return '';\n }\n }\n }\n\n switch (action) {\n case 'delete':\n return getPhrase('deleteStaffSuccess', { smartCount: count });\n case 'deactivate':\n return getPhrase('deactivateStaffSuccess', { smartCount: count });\n case 'reactivate':\n return getPhrase('reactivateStaffSuccess', { smartCount: count });\n case 'resetEmail':\n return getPhrase('resetEmailSuccess', { smartCount: count });\n case 'removeFromSchool':\n return getPhrase('removeFromSchoolStaffSuccess', { smartCount: count });\n default: {\n Core.ErrorHelper.throw(new DevError(`Missing switch statement case for ${action} in BulkUserActionsStatusCompleteView.tsx`));\n return '';\n }\n }\n}\n\nexport function BulkUserActionsStatusCompleteView(props: UserWizardStatusParams): JSX.Element {\n const { users, count } = useBulkActionsUsersWrapper(props.userType);\n const [ viewModel, setViewModel ] = useViewModel<BulkUserActionsViewModel>(SharedViewModelKeys.BULK_USER_ACTIONS);\n\n const appLinks = getUserManagerAppLinks(props.userType);\n\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n const config = Flight.useBasicFetch<Config>(ConfigRequests.config());\n const job = Flight.useBasicFetch<BatchJob>(JobRequests.getJob(props.jobId));\n const summary = Flight.useBasicFetch<BatchJobSummary>(JobRequests.getJobSummary(props.jobId));\n\n useHandleObjectError(job);\n\n const dispatch = useDispatch();\n\n const onCreateJobError = BulkUserActionsHelper.useCreateJobErrorAlert();\n function onClickTryAgain(): void {\n const data = BulkUserActionsHelper.getCreateJobRequestData(\n viewModel,\n currentUser.data.customerId,\n props.userType\n );\n\n Flight.fetch(dispatch, JobRequests.createJob(data, onCreateJob, onCreateJobError));\n }\n\n function onCreateJob(job: BatchJob): void {\n Core.AppLinkHelper.trigger({\n ...appLinks.bulkActionsStatus.polling,\n params: {\n userType: props.userType,\n jobId: job.id\n }\n });\n }\n\n const loaded = !!job.data && !!config.data && !!currentUser.data && !!summary.data;\n\n return (\n <BulkUserActionsWizardLayout\n appLinks={appLinks}\n userType={props.userType}\n users={users}\n currentStep='status'\n userCount={count}\n preventNavLock\n disableAppLinks\n loaded={loaded}\n >\n {loaded &&\n <WizardCompleted\n job={job.data}\n summary={summary.data}\n objectCount={count}\n objectType={MasterType.User}\n userType={props.userType}\n finishAppLink={appLinks.userManager}\n imageCdnUrl={config.data.imageCdnUrl}\n successImageUrl={ImageUrls.SUCCESS}\n failedImageUrl={ImageUrls.WIZARD_ERROR}\n currentUser={currentUser.data}\n onClickTryAgain={onClickTryAgain}\n getResultsRequest={JobRequests.getJobResults}\n actionSucceededMessage={getSuccessMessage(viewModel?.subAction, props.userType, summary.data.totalSucceeded)}\n navLockId={BULK_USER_ACTIONS_NAV_LOCK_ID}\n actionVerb={BulkUserActionsHelper.mapSubActionToVerb(viewModel?.subAction)}\n onFinish={() => setViewModel({})}\n preventLoggingAnalytics={!viewModel}\n analyticsData={{\n action: BulkUserActionsAnalyticsHelper.getAnalyticsActionName(viewModel)\n }}\n analyticsOptions={{\n location: LocationContext.BulkUserActionsWizard,\n entity: EntityType.User,\n actionType: UserAction.BulkAction\n }}\n getErrorListItem={(object: ObjectWithErrorCode<User>) =>\n BulkUserActionsHelper.getErrorListItem(object, config.data.imageCdnUrl, currentUser.data)\n }\n />\n }\n </BulkUserActionsWizardLayout>\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":["ObjectList","props","ChildComponent","childComponent","className","objects","map","object","key","id","objectType","namespace","WizardCompletedWithError","erroredObjects","length","value","Text","phrase","actionVerb","MasterType","userType","UserGroup","options","totalUpdated","totalObjects","totalErroredResults","smartCount","actionButton","DivButton","onClick","text","childProps","getErrorListItem","WizardFailed","supportUrl","ArticleHelper","src","failedImageUrl","href","linkClass","onClickTryAgain","Button","variant","WizardSucceeded","successImageUrl","dangerouslySetInnerHTML","__html","message","finishAppLink","AppLink","appLink","onFinish","BatchJobResultStatus","WizardCompleted","dispatch","jobId","getResultsRequest","getResultsPage","cursor","Failed","erroredResults","items","isFetchingErroredResults","isFetching","result","objectData","metadata","name","firstname","surname","UserHelper","username","errorCode","status","count","useErroredBulkActions","job","navLock","useNavLock","WizardLayoutContext","setShowButtons","showButtons","hasLoggedEvent","setHasLoggedEvent","type","BatchJobType","keys","request","preventLoggingAnalytics","analyticsData","userCount","summary","totalProcessed","totalSucceeded","totalErrored","totalNoAction","BulkUserActionsAnalyticsHelper","analyticsOptionsData","workflowPhase","analyticsOptions","AnalyticsHelper","navLockId","unlock","BatchJobStatus","actionSucceededMessage","objectCount","currentUser","imageCdnUrl","errorActionButton","defaultErrors","notFound","forbidden","rating","yearLevel","region","privacy","badRequest","handleHttpError","info","customErrorMap","ignoreMap","statusCode","errorMap","generateCacheKey","flightObjs","obj","join","useHandleObjectError","_flightObjs","customErrors","ignoreErrors","Array","isArray","useEffect","forEach","getPhrase","getSuccessMessage","action","BulkUserActionsStatusCompleteView","users","viewModel","setViewModel","appLinks","config","onCreateJobError","onCreateJob","bulkActionsStatus","polling","params","loaded","data","currentStep","preventNavLock","disableAppLinks","userManager","customerId","subAction","location","entity","actionType","JobRequests","createJob","success","error","url","getJobs","queryParams","bulkActionTypes","userTypes","sort","order","bulkActionType","dataType","getJob","getJobProgress","invalidationKeys","getJobResults","getYearGroupRolloverStatus","sendJobReports","ids","jobIds","getJobSummary"],"sourceRoot":""}
1
+ {"version":3,"file":"scripts/6158-d123add596-lite.chunk.js","mappings":"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","sources":["file:///app/packages/libs/shared/src/components/wizard/object-list/ObjectList.tsx","file:///app/packages/libs/shared/src/components/wizard/status/statuses/completed-with-error/WizardCompletedWithError.tsx","file:///app/packages/libs/shared/src/components/wizard/status/statuses/failed/wizard-failed.scss","file:///app/packages/libs/shared/src/components/wizard/status/statuses/failed/WizardFailed.tsx","file:///app/packages/libs/shared/src/components/wizard/status/statuses/succeeded/wizard-succeeded.scss","file:///app/packages/libs/shared/src/components/wizard/status/statuses/succeeded/WizardSucceeded.tsx","file:///app/packages/libs/shared/src/enums/BatchJobResultStatus.ts","file:///app/packages/libs/shared/src/components/wizard/status/completed/WizardCompleted.tsx","file:///app/packages/libs/shared/src/hooks/useErroredBulkActions.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/user-manager/views/wizard/status/complete/BulkUserActionsStatusCompleteView.tsx","file:///app/packages/projects/lite/src/shared/flight-requests/JobRequests.ts"],"sourcesContent":["import React from 'react';\n\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { BaseObject } from 'libs/shared/interfaces';\n\ninterface ObjectListProps<T extends BaseObject = BaseObject> {\n objects: T[];\n objectType: MasterType;\n childComponent: (props: BaseObjectItemProps<T>) => JSX.Element;\n}\n\nexport interface BaseObjectItemProps<T extends BaseObject = BaseObject> {\n object: T;\n objectType: MasterType;\n}\n\nexport function ObjectList<T extends BaseObject = BaseObject>(props: ObjectListProps<T>): JSX.Element {\n const ChildComponent = props.childComponent;\n\n return (\n <ul className='m-0 list-unstyled striped-list'>\n {props.objects.map(object => {\n return (\n <ChildComponent\n key={object.id}\n object={object}\n objectType={props.objectType}\n />\n );\n })}\n </ul>\n );\n}","import React from 'react';\n\nimport { DivButton } from 'libs/shared/components/div-button/DivButton';\nimport { LanguageNamespaceContext, Text } from 'libs/shared/components/text/Text';\nimport { ObjectList } from 'libs/shared/components/wizard/object-list/ObjectList';\nimport { BatchJobResultErrorCode } from 'libs/shared/enums/BatchJobResultErrorCode';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { UserGroup } from 'libs/shared/enums/UserGroup';\nimport { BaseObject, CurrentUser, WizardActionVerb } from 'libs/shared/interfaces';\n\nexport type ObjectWithErrorCode<TObject extends BaseObject> = TObject & {\n errorCode: BatchJobResultErrorCode;\n}\n\nexport interface WizardErrorActionButton<TObject = BaseObject> {\n onClick: (erroredObject: ObjectWithErrorCode<TObject>[]) => void;\n text: string;\n}\n\nconst namespace = 'userManager.wizardCompletedWithError';\n\ninterface WizardCompletedWithErrorProps<TObject> {\n erroredObjects: ObjectWithErrorCode<TObject>[];\n totalObjects: number;\n objectType?: MasterType;\n totalErroredResults: number;\n userType?: UserGroup;\n imageCdnUrl: string;\n actionVerb: WizardActionVerb;\n currentUser?: CurrentUser;\n getErrorListItem?: (erroredObjects: ObjectWithErrorCode<TObject>) => JSX.Element;\n actionButton?: WizardErrorActionButton;\n}\n\nexport function WizardCompletedWithError<\n TObject extends BaseObject = BaseObject\n>(\n props: WizardCompletedWithErrorProps<TObject>\n): JSX.Element {\n if (!props.erroredObjects?.length)\n return <></>;\n\n const getTotalUpdatedPhrase = () => {\n if (props.objectType === MasterType.User) {\n if (props.actionVerb === 'Create')\n return props.userType === UserGroup.Learner ? 'totalCreatedStudents' : 'totalCreatedStaff';\n \n return props.userType === UserGroup.Learner ? 'totalActionedStudents' : 'totalActionedStaff';\n }\n if (props.objectType === MasterType.Video) {\n return 'totalActionedVideos';\n }\n return 'totalActionedItems';\n };\n\n return (\n <LanguageNamespaceContext.Provider value={namespace}>\n <div className='pb-3'>\n <div className='d-flex justify-content-between'>\n <div>\n <h2 className='h4 mb-3'>\n <Text phrase={props.actionVerb === 'Create' ? 'headingCreate' : 'headingAction'} />\n </h2>\n\n <p>\n <Text\n phrase={getTotalUpdatedPhrase()}\n options={{\n totalUpdated: props.totalObjects - props.totalErroredResults,\n totalObjects: props.totalObjects\n }}\n />\n </p>\n </div>\n </div>\n\n <div className='d-flex align-items-cetner justify-content-between mb-2'>\n <p className='fw-semibold mb-0'>\n <Text\n phrase={props.actionVerb === 'Create' ? 'unsuccessfulCreations' : 'unsuccessfulActions'}\n options={{ smartCount: props.totalErroredResults }}\n />\n </p>\n\n {!!props.actionButton && (\n <DivButton\n className='info-link'\n onClick={() => props.actionButton.onClick(props.erroredObjects)}\n >\n {props.actionButton.text}\n </DivButton>\n )}\n </div>\n\n <ObjectList<ObjectWithErrorCode<TObject>>\n objects={props.erroredObjects}\n objectType={props.objectType}\n childComponent={childProps => props.getErrorListItem(childProps.object)}\n />\n </div>\n </LanguageNamespaceContext.Provider>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"imageWidth\":\"Gjry1\"};","import React from 'react';\nimport { Button } from 'react-bootstrap';\n\nimport { Text } from 'libs/shared/components/text/Text';\nimport { WizardActionVerb } from 'libs/shared/interfaces';\nimport { ArticleHelper } from 'libs/shared/utils/ArticleHelper';\n\nimport styles from './wizard-failed.scss';\n\nconst namespace = 'userManager.wizardFailed';\n\ninterface WizardFailedProps {\n onClickTryAgain?: () => void;\n failedImageUrl: string;\n actionVerb: WizardActionVerb;\n}\n\ntype Props = React.PropsWithChildren<WizardFailedProps>;\n\nexport function WizardFailed(props: Props): JSX.Element {\n const supportUrl = ArticleHelper.getSupportRequestUrl();\n\n return (\n <div className='d-flex flex-column align-items-center'>\n <div className={`${styles.imageWidth} text-center py-4`}>\n <img\n className='img-fluid'\n src={props.failedImageUrl}\n />\n </div>\n <h2 className='h3'>\n <Text namespace={namespace} phrase='heading' />\n </h2>\n\n <p className='mb-0'>\n <Text namespace={namespace} phrase={props.actionVerb === 'Create' ? 'failedCreate' : 'failedAction'} />\n </p>\n\n {!!supportUrl && (\n <p>\n <Text\n namespace={namespace}\n phrase='contactSupport'\n options={{ href: supportUrl, linkClass: 'info-link' }}\n />\n </p>\n )}\n\n {props.onClickTryAgain && (\n <Button variant='outline-dark' className={!supportUrl ? 'mt-3' : ''} onClick={props.onClickTryAgain}>\n <Text namespace={namespace} phrase='tryAgain' />\n </Button>\n )}\n </div>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"imageWidth\":\"picjj\"};","import React from 'react';\n\nimport { AppLink } from 'libs/common/backbone/core';\n\nimport { AppLink as AppLinkComponent } from 'libs/shared/components/app-link/AppLink';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { WizardActionVerb } from 'libs/shared/interfaces';\n\nimport styles from './wizard-succeeded.scss';\n\nconst namespace = 'userManager.wizardSucceeded';\n\ninterface WizardSucceededProps {\n finishAppLink?: AppLink;\n message: string;\n successImageUrl: string;\n actionVerb?: WizardActionVerb;\n onFinish?: () => void;\n}\n\ntype Props = React.PropsWithChildren<WizardSucceededProps>;\n\nexport function WizardSucceeded(props: Props): JSX.Element {\n return (\n <div className='d-flex flex-column align-items-center'>\n <div className={`${styles.imageWidth} text-center pt-4 pb-2`}>\n <img\n className='img-fluid'\n src={props.successImageUrl}\n />\n </div>\n <h2 className='h3'>\n <Text namespace={namespace} phrase='success' />\n </h2>\n <p className='text-center' dangerouslySetInnerHTML={{ __html: props.message }} />\n {props.finishAppLink && (\n <AppLinkComponent className='btn btn-dark' appLink={props.finishAppLink} onClick={props.onFinish}>\n <Text namespace={namespace} phrase='finish' />\n </AppLinkComponent>\n )}\n </div>\n );\n}","export enum BatchJobResultStatus {\n All = 0,\n NoAction = 1,\n Succeed = 2,\n Failed = 3\n}","import React from 'react';\nimport { useDispatch } from 'react-redux';\n\nimport { AppLink } from 'libs/common/backbone/core';\nimport { Flight } from 'libs/common/flight';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { AnalyticsHelper } from 'libs/analytics/AnalyticsHelper';\nimport { AnalyticsOptions, WorkflowPhase } from 'libs/analytics/interfaces';\n\nimport { BulkUserActionsAnalyticsHelper } from 'libs/shared/apps/user-manager/utils/BulkUserActionsAnalyticsHelper';\nimport { ObjectWithErrorCode, WizardCompletedWithError, WizardErrorActionButton } from 'libs/shared/components/wizard/status/statuses/completed-with-error/WizardCompletedWithError';\nimport { WizardFailed } from 'libs/shared/components/wizard/status/statuses/failed/WizardFailed';\nimport { WizardSucceeded } from 'libs/shared/components/wizard/status/statuses/succeeded/WizardSucceeded';\nimport { WizardLayoutContext } from 'libs/shared/context/WizardLayoutContext';\nimport { BatchJobStatus } from 'libs/shared/enums/BatchJobStatus';\nimport { BatchJobType } from 'libs/shared/enums/BatchJobType';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { UserGroup } from 'libs/shared/enums/UserGroup';\nimport { GetResultsRequest, useErroredBulkActions } from 'libs/shared/hooks/useErroredBulkActions';\nimport { useNavLock } from 'libs/shared/hooks/useNavLock';\nimport { BaseObject, BatchJob, BatchJobSummary, CurrentUser, WizardActionVerb } from 'libs/shared/interfaces';\n\ninterface WizardCompletedProps<TObject> {\n job: BatchJob;\n summary: BatchJobSummary;\n userType?: UserGroup;\n objectCount: number;\n objectType: MasterType;\n getResultsRequest: GetResultsRequest;\n onClickTryAgain?: () => void;\n actionSucceededMessage: string;\n actionVerb: WizardActionVerb;\n navLockId?: string;\n onFinish?: () => void;\n\n analyticsOptions?: AnalyticsOptions;\n analyticsData?: HashObject;\n preventLoggingAnalytics: boolean;\n\n imageCdnUrl: string;\n failedImageUrl: string;\n successImageUrl: string;\n \n currentUser?: CurrentUser;\n\n finishAppLink?: AppLink;\n \n getErrorListItem?: (erroredObjects: ObjectWithErrorCode<TObject>) => JSX.Element;\n errorActionButton?: WizardErrorActionButton;\n}\n\nexport function WizardCompleted<\n TObject extends BaseObject = BaseObject\n>(\n props: WizardCompletedProps<TObject>\n): JSX.Element {\n const dispatch = useDispatch();\n const erroredObjects = useErroredBulkActions<TObject>(props.job.id, props.getResultsRequest);\n const navLock = useNavLock();\n const { setShowButtons, showButtons } = React.useContext(WizardLayoutContext);\n\n const [ hasLoggedEvent, setHasLoggedEvent ] = React.useState(false);\n\n React.useEffect(() => {\n if (props.job.type === BatchJobType.RolloverYearGroup) {\n // Clear year group rollover status\n dispatch({\n type: Flight.Actions.INVALIDATE,\n keys: ['year:group:rollover:status'],\n request: null\n });\n }\n }, [props.job.type]);\n\n React.useEffect(() => {\n if (props.preventLoggingAnalytics || hasLoggedEvent)\n return;\n\n setHasLoggedEvent(true);\n\n const analyticsData: HashObject = {\n ...(props.analyticsData ?? {}),\n id: props.job.id,\n userCount: props.summary.totalProcessed,\n totalSucceeded: props.summary.totalSucceeded,\n totalErrored: props.summary.totalErrored,\n totalNoAction: props.summary.totalNoAction\n };\n\n const status = BulkUserActionsAnalyticsHelper.getJobStatus(props.job.status);\n\n if (status)\n analyticsData.status = status;\n \n let analyticsOptionsData: AnalyticsOptions = { workflowPhase: WorkflowPhase.Complete };\n\n if (props.analyticsOptions) {\n analyticsOptionsData = AnalyticsHelper.mergeOptions(props.analyticsOptions, analyticsOptionsData);\n }\n\n AnalyticsHelper.logUserAction(analyticsData, analyticsOptionsData);\n }, [ props.preventLoggingAnalytics, hasLoggedEvent ]);\n\n React.useEffect(() => {\n if (props.navLockId)\n navLock.unlock(props.navLockId);\n }, []);\n\n React.useEffect(() => {\n switch (props.job.status) {\n case BatchJobStatus.Completed:\n case BatchJobStatus.Failed:\n if (showButtons) {\n setShowButtons(false);\n }\n break;\n\n case BatchJobStatus.CompletedWithError:\n if (!showButtons) {\n setShowButtons(true);\n }\n break;\n\n default:\n break;\n }\n }, [props.job.status]);\n\n if (props.job.status === BatchJobStatus.Completed) {\n return (\n <WizardSucceeded\n message={props.actionSucceededMessage}\n successImageUrl={props.successImageUrl}\n actionVerb={props.actionVerb}\n finishAppLink={props.finishAppLink}\n onFinish={props.onFinish}\n />\n );\n }\n\n if (props.job.status === BatchJobStatus.CompletedWithError) {\n return (\n <WizardCompletedWithError<TObject>\n erroredObjects={erroredObjects.objects}\n totalObjects={props.objectCount}\n totalErroredResults={erroredObjects.count}\n userType={props?.userType}\n currentUser={props.currentUser}\n imageCdnUrl={props.imageCdnUrl}\n actionVerb={props.actionVerb}\n objectType={props.objectType}\n getErrorListItem={props.getErrorListItem}\n actionButton={props.errorActionButton}\n />\n );\n }\n\n return (\n <WizardFailed\n onClickTryAgain={props.onClickTryAgain}\n failedImageUrl={props.failedImageUrl}\n actionVerb={props.actionVerb}\n />\n );\n}","import { useDispatch } from 'react-redux';\n\nimport { Flight } from 'libs/common/flight';\n\nimport { ObjectWithErrorCode } from 'libs/shared/components/wizard/status/statuses/completed-with-error/WizardCompletedWithError';\nimport { BatchJobResultStatus } from 'libs/shared/enums/BatchJobResultStatus';\nimport { useInfiniteList } from 'libs/shared/hooks/UseInfiniteList';\nimport { BaseObject, BatchJobResult } from 'libs/shared/interfaces';\nimport { UserHelper } from 'libs/shared/utils/UserHelper';\n\n\ninterface GetErroredObjects<TObject> {\n objects: ObjectWithErrorCode<TObject>[];\n isFetching: boolean;\n count: number;\n}\n\nexport type GetResultsRequest = (jobId: string, status: BatchJobResultStatus, cursor?: string) => Flight.Request;\n\nexport function useErroredBulkActions<TObject extends BaseObject>(\n jobId: string,\n getResultsRequest: GetResultsRequest\n): GetErroredObjects<TObject> {\n const dispatch = useDispatch();\n\n const getResultsPage = (cursor?: string) => {\n return getResultsRequest(\n jobId,\n BatchJobResultStatus.Failed,\n cursor\n );\n };\n\n const fetchNext = (cursor?: string) => {\n return Flight.getFetch(dispatch)(getResultsPage(cursor));\n };\n\n const {\n items: erroredResults,\n isFetching: isFetchingErroredResults\n } = useInfiniteList<BatchJobResult<TObject>>(getResultsPage, fetchNext);\n\n const objects: ObjectWithErrorCode<TObject>[] = erroredResults?.map(result => {\n if (!result.objectData && result.metadata && 'firstname' in result.metadata) {\n return {\n name: result.metadata.firstname,\n surname: result.metadata.surname,\n userType: UserHelper.getUserType(result.metadata as any),\n username: result.metadata.username,\n errorCode: result.status\n } as unknown as ObjectWithErrorCode<TObject>;\n }\n\n return {\n ...result.objectData,\n errorCode: result.status\n };\n }) ?? [];\n\n return {\n isFetching: isFetchingErroredResults,\n objects: objects,\n count: objects.length // TODO: Get a proper count from the backend\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}","import React from 'react';\nimport { useDispatch } from 'react-redux';\n\nimport { DevError } from 'libs/common/backbone/errors/DevError';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Core } from 'libs/common/core';\nimport { Flight } from 'libs/common/flight';\nimport { useViewModel } from 'libs/common/react/hooks/UseViewModel';\n\nimport { EntityType, LocationContext, UserAction } from 'libs/analytics/interfaces';\n\nimport { BULK_USER_ACTIONS_NAV_LOCK_ID, BulkUserActionsWizardLayout, BulkUserSubAction } from 'libs/shared/apps/user-manager/components/bulk-actions-wizard/layout/BulkUserActionsWizardLayout';\nimport { UserWizardStatusParams } from 'libs/shared/apps/user-manager/interfaces/query-params/UserWizardParams';\nimport { BulkUserActionsViewModel } from 'libs/shared/apps/user-manager/interfaces/viewmodels/BulkUserActionsViewModel';\nimport { BulkUserActionsAnalyticsHelper } from 'libs/shared/apps/user-manager/utils/BulkUserActionsAnalyticsHelper';\nimport { BulkUserActionsHelper } from 'libs/shared/apps/user-manager/utils/BulkUserActionsHelper';\nimport { WizardCompleted } from 'libs/shared/components/wizard/status/completed/WizardCompleted';\nimport { ObjectWithErrorCode } from 'libs/shared/components/wizard/status/statuses/completed-with-error/WizardCompletedWithError';\nimport { SharedViewModelKeys } from 'libs/shared/constants/SharedViewModelKeys';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { UserGroup } from 'libs/shared/enums/UserGroup';\nimport { ConfigRequests } from 'libs/shared/flight-requests/ConfigRequests';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { useHandleObjectError } from 'libs/shared/hooks/UseHandleObjectError';\nimport { BatchJob, BatchJobSummary, Config, CurrentUser, User } from 'libs/shared/interfaces';\n\nimport { ImageUrls } from 'shared/constants/ImageUrls';\nimport { JobRequests } from 'shared/flight-requests/JobRequests';\n\nimport { useBulkActionsUsersWrapper } from 'apps/user-manager/hooks/useBulkActionsUsersWrapper';\nimport { getUserManagerAppLinks } from 'apps/user-manager/utils/LiteUserManagerAppLinks';\n\nconst namespace = 'userManager.bulkUserActionsStatusCompleteView';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nfunction getSuccessMessage(action: BulkUserSubAction, userType: UserGroup, count: number): string {\n /**\n * We've unsetting our viewModel as we exit the bulk wizard after an action completes.\n * This function will run one more time but without an action.\n */\n if (!action)\n return '';\n\n if (userType === UserGroup.Learner) {\n switch (action) {\n case 'delete':\n return getPhrase('deleteStudentsSuccess', { smartCount: count });\n case 'removeFromSchool':\n return getPhrase('removeFromSchoolStudentSuccess', { smartCount: count });\n case 'deactivate':\n return getPhrase('deactivateStudentsSuccess', { smartCount: count });\n case 'reactivate':\n return getPhrase('reactivateStudentsSuccess', { smartCount: count });\n case 'changeYearGroup':\n return getPhrase('changeYearGroupSuccess', { smartCount: count });\n case 'yearGroupRollover':\n return getPhrase('yearGroupRolloverSuccess');\n case 'addToClassroom':\n return getPhrase('addToClassroomSuccess', { smartCount: count });\n case 'resetPassword':\n return getPhrase('resetPasswordSuccess', { smartCount: count });\n case 'activationEmail':\n return getPhrase('activationEmailSuccess', { smartCount: count });\n default: {\n Core.ErrorHelper.throw(new DevError(`Missing switch statement case for ${action} in BulkUserActionsStatusCompleteView.tsx`));\n return '';\n }\n }\n }\n\n switch (action) {\n case 'delete':\n return getPhrase('deleteStaffSuccess', { smartCount: count });\n case 'deactivate':\n return getPhrase('deactivateStaffSuccess', { smartCount: count });\n case 'reactivate':\n return getPhrase('reactivateStaffSuccess', { smartCount: count });\n case 'resetEmail':\n return getPhrase('resetEmailSuccess', { smartCount: count });\n case 'removeFromSchool':\n return getPhrase('removeFromSchoolStaffSuccess', { smartCount: count });\n default: {\n Core.ErrorHelper.throw(new DevError(`Missing switch statement case for ${action} in BulkUserActionsStatusCompleteView.tsx`));\n return '';\n }\n }\n}\n\nexport function BulkUserActionsStatusCompleteView(props: UserWizardStatusParams): JSX.Element {\n const { users, count } = useBulkActionsUsersWrapper(props.userType);\n const [ viewModel, setViewModel ] = useViewModel<BulkUserActionsViewModel>(SharedViewModelKeys.BULK_USER_ACTIONS);\n\n const appLinks = getUserManagerAppLinks(props.userType);\n\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n const config = Flight.useBasicFetch<Config>(ConfigRequests.config());\n const job = Flight.useBasicFetch<BatchJob>(JobRequests.getJob(props.jobId));\n const summary = Flight.useBasicFetch<BatchJobSummary>(JobRequests.getJobSummary(props.jobId));\n\n useHandleObjectError(job);\n\n const dispatch = useDispatch();\n\n const onCreateJobError = BulkUserActionsHelper.useCreateJobErrorAlert();\n function onClickTryAgain(): void {\n const data = BulkUserActionsHelper.getCreateJobRequestData(\n viewModel,\n currentUser.data.customerId,\n props.userType\n );\n\n Flight.fetch(dispatch, JobRequests.createJob(data, onCreateJob, onCreateJobError));\n }\n\n function onCreateJob(job: BatchJob): void {\n Core.AppLinkHelper.trigger({\n ...appLinks.bulkActionsStatus.polling,\n params: {\n userType: props.userType,\n jobId: job.id\n }\n });\n }\n\n const loaded = !!job.data && !!config.data && !!currentUser.data && !!summary.data;\n\n return (\n <BulkUserActionsWizardLayout\n appLinks={appLinks}\n userType={props.userType}\n users={users}\n currentStep='status'\n userCount={count}\n preventNavLock\n disableAppLinks\n loaded={loaded}\n >\n {loaded &&\n <WizardCompleted\n job={job.data}\n summary={summary.data}\n objectCount={count}\n objectType={MasterType.User}\n userType={props.userType}\n finishAppLink={appLinks.userManager}\n imageCdnUrl={config.data.imageCdnUrl}\n successImageUrl={ImageUrls.SUCCESS}\n failedImageUrl={ImageUrls.WIZARD_ERROR}\n currentUser={currentUser.data}\n onClickTryAgain={onClickTryAgain}\n getResultsRequest={JobRequests.getJobResults}\n actionSucceededMessage={getSuccessMessage(viewModel?.subAction, props.userType, summary.data.totalSucceeded)}\n navLockId={BULK_USER_ACTIONS_NAV_LOCK_ID}\n actionVerb={BulkUserActionsHelper.mapSubActionToVerb(viewModel?.subAction)}\n onFinish={() => setViewModel({})}\n preventLoggingAnalytics={!viewModel}\n analyticsData={{\n action: BulkUserActionsAnalyticsHelper.getAnalyticsActionName(viewModel)\n }}\n analyticsOptions={{\n location: LocationContext.BulkUserActionsWizard,\n entity: EntityType.User,\n actionType: UserAction.BulkAction\n }}\n getErrorListItem={(object: ObjectWithErrorCode<User>) =>\n BulkUserActionsHelper.getErrorListItem(object, config.data.imageCdnUrl, currentUser.data)\n }\n />\n }\n </BulkUserActionsWizardLayout>\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":["ObjectList","props","ChildComponent","childComponent","className","objects","map","object","key","id","objectType","namespace","WizardCompletedWithError","erroredObjects","length","value","Text","phrase","actionVerb","MasterType","userType","UserGroup","options","totalUpdated","totalObjects","totalErroredResults","smartCount","actionButton","DivButton","onClick","text","childProps","getErrorListItem","WizardFailed","supportUrl","ArticleHelper","src","failedImageUrl","href","linkClass","onClickTryAgain","Button","variant","WizardSucceeded","successImageUrl","dangerouslySetInnerHTML","__html","message","finishAppLink","AppLink","appLink","onFinish","BatchJobResultStatus","WizardCompleted","dispatch","jobId","getResultsRequest","getResultsPage","cursor","Failed","erroredResults","items","isFetchingErroredResults","isFetching","result","objectData","metadata","name","firstname","surname","UserHelper","username","errorCode","status","count","useErroredBulkActions","job","navLock","useNavLock","WizardLayoutContext","setShowButtons","showButtons","hasLoggedEvent","setHasLoggedEvent","type","BatchJobType","keys","request","preventLoggingAnalytics","analyticsData","userCount","summary","totalProcessed","totalSucceeded","totalErrored","totalNoAction","BulkUserActionsAnalyticsHelper","analyticsOptionsData","workflowPhase","analyticsOptions","AnalyticsHelper","navLockId","unlock","BatchJobStatus","actionSucceededMessage","objectCount","currentUser","imageCdnUrl","errorActionButton","defaultErrors","notFound","forbidden","rating","yearLevel","region","privacy","badRequest","handleHttpError","info","customErrorMap","ignoreMap","statusCode","errorMap","generateCacheKey","flightObjs","obj","join","useHandleObjectError","_flightObjs","customErrors","ignoreErrors","Array","isArray","useEffect","forEach","getPhrase","getSuccessMessage","action","BulkUserActionsStatusCompleteView","users","viewModel","setViewModel","appLinks","config","onCreateJobError","onCreateJob","bulkActionsStatus","polling","params","loaded","data","currentStep","preventNavLock","disableAppLinks","userManager","customerId","subAction","location","entity","actionType","JobRequests","createJob","success","error","url","getJobs","queryParams","bulkActionTypes","userTypes","sort","order","bulkActionType","dataType","getJob","getJobProgress","invalidationKeys","getJobResults","getYearGroupRolloverStatus","sendJobReports","ids","jobIds","getJobSummary"],"sourceRoot":""}
@@ -1,2 +1,2 @@
1
1
  "use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[6263],{84963:(e,t,n)=>{n.d(t,{r:()=>u});var a=n(32735),r=n(23481),i=n(83914),o=n(76177),l=n(35223);const s={tag:"XRj8d",tooltip:"X6mLk"};var c="specialEventCalendar.comingSoonTag";function u(e){return a.createElement(o.u,{title:r.T.getPhrase(c,"tooltip"),spanHackClassName:"d-block ".concat(s.tooltip),spanHack:!0},a.createElement("div",{className:"d-flex text-dark align-items-center ".concat(s.tag," ").concat(e.className)},a.createElement(i.x,{svgName:l.vn.Timer}),!e.onlyIcon&&r.T.getPhrase(c,"comingSoon")))}},73679:(e,t,n)=>{n.d(t,{s:()=>o});var a=n(32735),r=n(36848);const i={dateItem:"I3SBm",label:"PRORs",body:"RfiM_",bodyDay:"ZOVny",bodyRange:"vYhXN",bodyMonth:"mYslO",month:"EPkkQ"};function o(e){var t,n,o;return a.createElement(r.F,{appLink:null===(t=e.getAppLink)||void 0===t?void 0:t.call(e),className:"text-decoration-none text-center bg-white text-dark border border-3 ".concat(null===(n=e.theme)||void 0===n?void 0:n.border," rounded-3 d-block fw-semibold ").concat(e.className),analyticsData:e.analyticsData,analyticsOptions:e.analyticsOptions},a.createElement("div",{className:"position-relative ".concat(i.dateItem)},a.createElement("div",{className:"".concat(null===(o=e.theme)||void 0===o?void 0:o.background," py-1 ").concat(i.label," d-flex align-items-center justify-content-center")},e.label?e.label:a.createElement(a.Fragment,null," ")),a.createElement("div",{className:"".concat(function(){switch(e.body.type){case"range":return i.bodyRange;case"day":return i.bodyDay;case"month":return i.bodyMonth}}()," ").concat(i.body," my-2")},e.body.text),a.createElement("div",{className:"mb-0 ".concat(i.month)},e.month)))}},89043:(e,t,n)=>{n.d(t,{p:()=>O,v:()=>N});var a=n(32735),r=n(110),i=n(12788),o={renderInPortalIfExists:function(e,t){return t?(0,i.createPortal)(e,t):e}},l=n(84963),s=n(73679),c=n(83657),u=n(23481),d=n(36848),m=n(83914),p=n(35223),f="shared.backButton";function v(e){var t=Object.assign({textShadow:!0},e),n=t.backToName,r=t.appLink,i=t.color,o=t.extraClasses,l=t.textShadow,s=n?u.T.getPhrase(f,"backTo",{backToName:n}):u.T.getPhrase(f,"back"),c="black"===i?"":"text-white",v=l?"text-shadow":"";return a.createElement(d.F,{appLink:r,className:"d-inline-flex align-items-center h5 mb-0 ".concat(o," ").concat(c," ").concat(v)},a.createElement(m.x,{svgName:p.vn.ChevronLeft,size:m.S.Medium}),a.createElement("span",{className:"ms-1"},s))}v.defaultProps={color:"black",extraClasses:""};var y=n(36518),g=n(83345),h=n(10587),b=n(94232),E=n(54610),w=n(79967),C=n(67453);const S={bannerContent:"sSCTB",actionsContainer:"Z5WI2",bannerContentWithLogo:"rgs7Q",container:"M51HJ",logoContainer:"vkeJk",logoContainerLeft:"M3U9B",logoHeading:"EtRwC",specialEventContainer:"rOxDc",headingLarge:"_8pnV",heading:"JXVBH"};var I="".concat(h.y[E.__.Banners].width,":").concat(h.y[E.__.Banners].height);function A(e){return e.length<160?"h1":S.headingLarge}var O=a.memo((function(e){var t,n,i,u,d=e.heading,m=e.banner,p=e.imageCdnUrl,f=e.actions,h=e.sortComponent,O=e.blockColourClass,N=e.specialEvent,k=a.useContext(b.n),L=(0,w.k)().xxl?1920:1200,x=a.useMemo((function(){if(!N||e.showComingSoon)return!1;var t=r.O.format(new Date,"YYYY-MM-DD");return N.endDate?N.startDate<=t&&N.endDate>=t:N.startDate===t}),[N]),P=e.imageOptions||{width:L,ratio:I,resizeType:E.Nq.Cover},j=!!m&&!!p&&C.j.createBannerUrl(m,{fallbackBaseUrl:p,fallbackCategoryName:d,type:E.__.Banners},P),T={className:"banner banner-header ".concat(e.bannerClassName),style:j?{backgroundImage:"url('".concat(j,"')")}:{}};!m&&O&&(delete T.style,T.className+=" ".concat(O));var F=e.detailsComponent;return o.renderInPortalIfExists(a.createElement("header",Object.assign({},T),a.createElement("div",{className:"container ".concat(S.container," position-relative inner-banner")},e.backButtonAppLink&&a.createElement("div",{className:"pt-3"},a.createElement(v,{appLink:e.backButtonAppLink,backToName:e.backButtonText,extraClasses:e.backButtonClasses,color:"white"})),a.createElement("div",{className:"".concat(e.alignLogoLeft?"position-absolute top-50 start-0 translate-middle-y w-100 ps-4":"".concat(S.bannerContent," ").concat((null===(t=e.logo)||void 0===t?void 0:t.url)?S.bannerContentWithLogo:""))},!!N&&a.createElement("div",{className:"position-relative ".concat(S.specialEventContainer)},a.createElement(s.s,{body:{type:N.endDate?"range":"day",text:N.endDate?"".concat(r.O.format(N.startDate,"DD"),"-").concat(r.O.format(N.endDate,"DD")):r.O.format(N.startDate,"DD")},month:r.O.format(N.startDate,"MMMM"),theme:e.calendarTheme})),a.createElement("div",null,x&&a.createElement("div",{className:"rounded-pill py-1 px-2 my-1 me-1 fw-semibold bg-light-blue lh-1 d-inline-block"},a.createElement(g.x,{namespace:"shared.bannerHeader",phrase:"onToday"})),e.showComingSoon&&a.createElement(l.r,{className:"pe-2 fw-semibold mb-1 rounded-pill justify-content-start text-nowrap"}),a.createElement("div",{className:"d-flex align-items-center"},e.alignLogoLeft&&a.createElement("div",{className:"".concat(S.logoContainerLeft," d-none d-md-block partial-loading-background rounded-circle overflow-hidden me-3")},(null===(n=e.logo)||void 0===n?void 0:n.url)&&a.createElement(y.w,{src:C.j.createUrl(null===(i=e.logo)||void 0===i?void 0:i.url,{size:E.h2.Small})})),a.createElement("h1",{className:"text-white text-shadow pe-3 ".concat(S.heading," ").concat(A(d)," ").concat(e.alignLogoLeft?"w-50":"")},d,F&&a.createElement(F,null)))),!!f&&a.createElement("div",{className:S.actionsContainer},a.createElement(c.e,{actions:f,sortComponent:h,actionsDropdownClassName:e.actionsDropdownClassName}))),!e.alignLogoLeft&&!!(null===(u=e.logo)||void 0===u?void 0:u.url)&&a.createElement("div",{className:S.logoContainer},a.createElement("img",{src:C.j.createUrl(e.logo.url,{size:E.h2.Small}),className:"rounded-circle"})))),null==k?void 0:k.container)}),(function(e,t){var n,a;return e.actions===t.actions&&e.heading===t.heading&&(null===(n=e.logo)||void 0===n?void 0:n.url)===(null===(a=t.logo)||void 0===a?void 0:a.url)}));function N(){var e=a.useContext(b.n);return o.renderInPortalIfExists(a.createElement("div",{className:"partial-banner partial-loading-background ".concat(S.banner)}),null==e?void 0:e.container)}},49935:(e,t,n)=>{n.d(t,{Oo:()=>d,b2:()=>m});var a=n(32735),r=n(36848),i=n(86764),o=n(3747),l=n(5859),s=n(35223),c=n(83914),u=function(e){var t=e.breadcrumb,n=t.name,i=t.appLink,o=t.active,l=e.withBackIcon;return a.createElement("li",{className:"breadcrumb-item".concat(o?" active":"")},o?a.createElement("strong",null,n):a.createElement(r.F,{appLink:i},l&&a.createElement(c.x,{svgName:s.vn.ChevronLeft,size:c.S.Small}),a.createElement("span",{className:l?"ms-2":""},n)))},d=function(e){var t=e.breadcrumbs,n=(0,o.a)(i.r.XS),r=null==t?void 0:t.length;return!r||n&&r<2?a.createElement(a.Fragment,null):n?a.createElement("nav",{"aria-label":"breadcrumb"},a.createElement("ol",{className:"breadcrumb m-0 p-0"},a.createElement(u,{breadcrumb:t[r-2],withBackIcon:!0}))):a.createElement("nav",{"aria-label":"breadcrumb"},a.createElement("ol",{className:"breadcrumb m-0 p-0"},t.map((function(e,t){return a.createElement(u,{key:t,breadcrumb:e})}))))},m=a.memo((function(e){var t=e.numItems,n=void 0===t?3:t;return(0,o.a)(i.r.XS)?a.createElement("div",{className:"partial-loading-background",style:{height:"1.3125rem",width:"6rem"}}):a.createElement("nav",{"aria-label":"breadcrumb"},a.createElement("ol",{className:"breadcrumb m-0 p-0"},l.u.getPartialLoadingItems({numItems:n}).map((function(e,t){var n=e.width;return a.createElement("li",{key:t,className:"breadcrumb-item"},a.createElement("span",{className:"d-inline-block partial-loading-background",style:{width:n},dangerouslySetInnerHTML:{__html:"&nbsp"}}))}))))}))},71020:(e,t,n)=>{n.d(t,{_:()=>u});var a=n(32735),r=n(80247),i=n(34152),o=n(83914),l=n(35223);const s={container:"VwD1b",spinner:"eJ85e"};function c(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,a=new Array(t);n<t;n++)a[n]=e[n];return a}function u(e){var t,n,u=(t=(0,i.YD)(),n=2,function(e){if(Array.isArray(e))return e}(t)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var a,r,i,o,l=[],s=!0,c=!1;try{if(i=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;s=!1}else for(;!(s=(a=i.call(n)).done)&&(l.push(a.value),l.length!==t);s=!0);}catch(e){c=!0,r=e}finally{try{if(!s&&null!=n.return&&(o=n.return(),Object(o)!==o))return}finally{if(c)throw r}}return l}}(t,n)||function(e,t){if(e){if("string"==typeof e)return c(e,t);var n=Object.prototype.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)?c(e,t):void 0}}(t,n)||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.")}()),d=u[0],m=u[1];return a.useEffect((function(){var t;e.fetchOnScroll&&m&&!e.isFetching&&(null===(t=e.fetchNext)||void 0===t||t.call(e,e.nextCursor))}),[m,e.isFetching]),a.createElement("div",{className:"p-3 text-center ".concat(s.container),ref:d},e.isFetching?a.createElement(r.Z,{as:"span",animation:"border",role:"status",className:s.spinner}):a.createElement(o.x,{svgName:l.vn.ChevronDown,className:"svg-container cursor-pointer",size:o.S.Large,onClick:function(){var t;return null===(t=e.fetchNext)||void 0===t?void 0:t.call(e,e.nextCursor)}}))}u.defaultProps={fetchOnScroll:!1}},74696:(e,t,n)=>{n.d(t,{S:()=>c});var a=n(32735),r=n(68050),i=n(69111),o=n(9977),l=n(79967);const s={partialOptions:"Gufgq",partialName:"SicQQ",partialDescription:"dPGMq",partialThumbnail:"vZrnb",partialDragHandle:"iq73R"};function c(e){return a.createElement("div",{className:"mx-2"},Array(e.numVideos).fill(null).map((function(t,n){return a.createElement("div",{className:"d-flex",key:n},e.allowBulkActions&&a.createElement("div",{className:"form-check pe-3 pe-sm-2 mx-0 mx-md-2"}),a.createElement(u,Object.assign({},e)))})))}function u(e){var t=(0,l.k)(),n="sm"===o.O.getSize(t,"md"),c=e.withReordering&&!t.xs;return a.createElement(r.Z,{className:"".concat(n?"":"py-2"," flex-grow-1")},a.createElement(i.Z,Object.assign({},o.O.getThumbnailColumns(),{className:"flex-column align-items-flex-start ".concat(n?"pb-2 pe-1":"mb-1 pe-3 pe-md-2")}),a.createElement(r.Z,null,!!c&&a.createElement("div",{className:"d-flex align-items-center justify-content-center col-2"},a.createElement("div",{className:"partial-loading-background ".concat(s.partialDragHandle)})),a.createElement(i.Z,{xs:o.O.getThumbnailColSize(c)},a.createElement("div",{className:"partial-loading-background ".concat(n?"rounded":"rounded-3"," ").concat(s.partialThumbnail)})))),a.createElement(i.Z,Object.assign({},o.O.getDetailsColumns(),{className:n?"pb-2":"px-2"}),a.createElement("div",{className:"partial-loading-background mb-1 ".concat(s.partialName)}),a.createElement("div",{className:"partial-loading-background ".concat(s.partialDescription)})))}c.defaultProps={numVideos:15}},94644:(e,t,n)=>{n.d(t,{r:()=>u});var a=n(50242),r=n(81886),i=n(67058),o=n(14553),l=n(49267),s=n(49075),c={notFound:i.d,forbidden:{rating:o.q,yearLevel:o.q,region:l.a,privacy:o.q},badRequest:s._};function u(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(e){var i;i="number"==typeof e?e:e.status;var o=Object.assign(Object.assign({},c),t);i&&r.Q.Ry.isStatusCodeError(i)&&(i!==a.o.NotFound?i!==a.o.Forbidden?n.badRequest||r.Q.Ry.throw(new o.badRequest):n.forbidden||r.Q.Ry.throw(new o.forbidden.privacy):n.notFound||r.Q.Ry.throw(new o.notFound))}}},91286:(e,t,n)=>{n.d(t,{v:()=>o});var a=n(32735),r=n(94644);function i(e){return e.map((function(e){return e.statusCode})).join(":")}function o(e,t,n){var o=Array.isArray(e)?e:[e];(0,a.useEffect)((function(){o.forEach((function(e){(0,r.r)(e.statusCode,t,n)}))}),[i(o),t,n])}},60115:(e,t,n)=>{n.d(t,{K:()=>c});var a=n(32735),r=n(50242),i=n(91967),o=400,l=n(45719);function s(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,a=new Array(t);n<t;n++)a[n]=e[n];return a}function c(e,t,n,c,u,d){var m,p,f,v,y=(m=(0,a.useState)(0),p=2,function(e){if(Array.isArray(e))return e}(m)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var a,r,i,o,l=[],s=!0,c=!1;try{if(i=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;s=!1}else for(;!(s=(a=i.call(n)).done)&&(l.push(a.value),l.length!==t);s=!0);}catch(e){c=!0,r=e}finally{try{if(!s&&null!=n.return&&(o=n.return(),Object(o)!==o))return}finally{if(c)throw r}}return l}}(m,p)||function(e,t){if(e){if("string"==typeof e)return s(e,t);var n=Object.prototype.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)?s(e,t):void 0}}(m,p)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),g=y[0],h=y[1],b=t,E=(0,l.P)((function(t){if(!e)return null;var n=e(t);return n?n.key:null}),c,u);return f={fetchNextPage:function(){if(t&&e&&E)return h((function(e){return e+1})),b(E.nextCursor)},hasMore:!!(null==E?void 0:E.nextCursor),isFetching:null==E?void 0:E.isFetching,scrollContainer:d},v=function(){if(!f.isFetching){if(f.scrollContainer){var e=f.scrollContainer;if(e.getBoundingClientRect().height+e.scrollTop<e.scrollHeight-o)return}else if(window.innerHeight+document.documentElement.scrollTop<document.documentElement.scrollHeight-o)return;f.fetchNextPage()}},(0,a.useEffect)((function(){var e=i.q.throttle(v,200),t=f.scrollContainer||window;return f.hasMore&&t.addEventListener("scroll",e),function(){return t.removeEventListener("scroll",e)}}),[f.hasMore,f.fetchNextPage,f.scrollContainer]),(0,a.useEffect)((function(){E&&E.shouldInitialFetch&&t&&(b(),h((function(e){return e+1})))}),[null==E?void 0:E.shouldInitialFetch,t]),(0,a.useEffect)((function(){var e,t;if((null==E?void 0:E.statusCode)&&i.q.isFunction(n)){var a=+(null===(t=null===(e=E.statusCode)||void 0===e?void 0:e.toString())||void 0===t?void 0:t.substr(0,1));a!==r.k.ClientError&&a!==r.k.ServerError||n(g,E.statusCode)}}),[null==E?void 0:E.statusCode]),{items:null==E?void 0:E.items,hasMore:!!(null==E?void 0:E.nextCursor),nextCursor:null==E?void 0:E.nextCursor,isFetching:null==E?void 0:E.isFetching,totalItems:null==E?void 0:E.totalItems,hasFirstPageCompleted:null==E?void 0:E.hasFirstPageCompleted}}},5859:(e,t,n)=>{function a(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,a=new Array(t);n<t;n++)a[n]=e[n];return a}n.d(t,{u:()=>i});var r={numItems:5,minWidth:50,maxWidth:100},i={getPartialLoadingItems:function(){var e,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=Object.assign(Object.assign({},r),t);return(e=Array(n.numItems),function(e){if(Array.isArray(e))return a(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,t){if(e){if("string"==typeof e)return a(e,t);var n=Object.prototype.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)?a(e,t):void 0}}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()).map((function(){return{width:"".concat(Math.max(Math.floor(Math.random()*n.maxWidth),n.minWidth),"px")}}))}}},6263:(e,t,n)=>{n.r(t),n.d(t,{PlaylistView:()=>Fe});var a=n(32735),r=n(70680),i=n(23481),o=n(81886),l=n(20354),s=n(65858),c=n(1048),u=n(4594),d={isPlaylist:function(e){return(null==e?void 0:e.typeId)===u.E.Playlist},isOwner:function(e,t){var n;return!(!t||!e||c.t.isEmpty(e._liteOwner))&&e._liteOwner.id.toString()===(null===(n=t.id)||void 0===n?void 0:n.toString())},getVideoCount:function(e){var t,n,a;if(e){var r=0;return(null===(t=e.videos)||void 0===t?void 0:t.count)&&(r+=e.videos.count),(null===(n=e.clips)||void 0===n?void 0:n.count)&&(r+=e.clips.count),(null===(a=e.interactives)||void 0===a?void 0:a.count)&&(r+=e.interactives.count),r}}},m=n(71020),p=n(51365),f=n(183),v=n(89454),y=n(21750),g=n(39151),h=n(1666),b=n(5112),E=n(31949),w=n(69883),C=n(56520),S=n(91286),I=n(60115),A=n(22902);function O(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,a=new Array(t);n<t;n++)a[n]=e[n];return a}var N=n(79612),k=n(76753),L=n(54569),x=n(31908),P=n(14070),j=n(97291),T=n(7179),F=n(27638),D=n(86698),V=n(97816),M=n(10741),B=n(33192),U=n(22490),_=n(110),R=n(28400),H=n(89725),Y=n(83345),q="playlists.playlistHeaderDetails",Z=function(e){var t=e.className;return a.createElement("span",{className:t},"•")};function $(e){var t=e._liteOwner;if(t)return t.name&&t.surname?R.m.toTitleCase(t.name+" "+t.surname.substring(0,1)):t.name?t.name.split(" ")[0]:void 0}function Q(e){var t,n,r=d.isOwner(e.playlist,e.currentUser),i=null===(t=e.playlist.followers)||void 0===t?void 0:t.count,o=function(e){if(!e.contentModifiedDate)return"";var t=new Date,n=_.O.convertUTCToLocal(e.contentModifiedDate);return _.O.isBefore(n,_.O.subtract(t,1,"month"))?"":_.O.fromNow(n)}(e.playlist);return a.createElement("div",{className:e.detailsClassName},!e.hideOwnerName&&!r&&a.createElement(a.Fragment,null,(null===(n=e.playlist._isClickViewCurated)||void 0===n?void 0:n.value)?a.createElement(a.Fragment,null,a.createElement("div",{className:e.clickViewAvatarClassName},a.createElement(H.F,null)),a.createElement("span",null,"ClickView")):a.createElement(Y.x,{namespace:q,phrase:"createdBy",options:{user:$(e.playlist)}}),a.createElement(Z,{className:e.separatorClassName})),"number"==typeof e.totalVideos&&a.createElement(Y.x,{namespace:q,phrase:"videos",options:{smartCount:e.totalVideos}}),i>0&&a.createElement(a.Fragment,null,a.createElement(Z,{className:e.separatorClassName}),a.createElement(Y.x,{namespace:q,phrase:"followers",options:{smartCount:i}})),!!o&&a.createElement(a.Fragment,null,a.createElement(Z,{className:e.separatorClassName}),a.createElement(Y.x,{namespace:q,phrase:"lastUpdated",options:{timeAgo:o}})))}var z=n(89043),X=n(49935),W=n(7733),G=n(86764),J=n(3747),K=n(9085),ee=n(62756);const te={partialDescription:"vDX0m"};function ne(){return a.createElement(a.Fragment,null,a.createElement(z.v,null),a.createElement("div",{className:"mb-2"},a.createElement("div",{className:"partial-loading-background my-2 border-bottom ".concat(te.partialDescription)})))}var ae=n(49985),re=n(35223),ie=i.T.encloseNamespace("playlists.playlistHeader"),oe={getPlaylistActions:function(e,t){var n,a,r,i,o,l,c=t.isAuthenticated,u=t.isPlugin,m=t.isMobile,p=t.setIsFollowing,f=t.isFollowing,v=t.setShowFollowSpinner,y=t.showFollowSpinner,g=t.isUserCurator,h=t.openInCuratorLink,b={id:e.playlist.id,name:e.playlist.name,followerCount:null===(n=e.playlist.followers)||void 0===n?void 0:n.count,videoCount:null===(a=e.playlist.videos)||void 0===a?void 0:a.count,interactiveCount:null===(r=e.playlist.interactives)||void 0===r?void 0:r.count,clipCount:null===(i=e.playlist.clips)||void 0===i?void 0:i.count,isClickViewPlaylist:null===(o=e.playlist._isClickViewCurated)||void 0===o?void 0:o.value},E={location:s.LZ.Banner,entity:s.py.Playlist,workflowPhase:s.eu.Start},w=[];if(!c)return w;var S=d.isOwner(e.playlist,e.currentUser);return u||(e.playAllAppLink&&w.push({label:ie("playAll"),appLink:e.playAllAppLink,svgName:re.vn.Play,className:m?"":"btn btn-outline-dark me-2",button:!m,analyticsData:b,analyticsOptions:Object.assign(Object.assign({},E),{actionType:s.Vw.Play})}),g&&w.push({label:(0,C.eR)(),href:h,openInNewTab:!0}),w.push({label:ie("share"),appLink:{application:j.O.DEFAULT,action:P.e.Default.SHARE,args:[e.playlist.id],params:{entityType:"playlist"}},svgName:re.vn.Share2,className:m?"":"btn btn-outline-dark me-2",button:!m,analyticsData:b,analyticsOptions:Object.assign(Object.assign({},E),{actionType:s.Vw.Share,eventVersion:s.eq.V3})})),S||w.push({label:ie(f?"unfollow":"follow"),onClick:function(){p(!f),v(!0),e.follow(!f,(function(){v(!1),ae.k.logUserAction(b,Object.assign(Object.assign({},E),{actionType:s.Vw.Follow,descriptor:f?s.DL.Off:s.DL.On,workflowPhase:s.eu.Complete}))}),(function(){v(!1),p(f)}))},svgName:f?re.vn.Check:re.vn.Bell,className:m?"":"btn follow-btn btn-".concat(f?"outline-dark":"dark"," me-2"),button:!m,showSpinner:y}),S&&(w.push({label:ie("edit"),appLink:{application:j.O.PLAYLISTS,action:P.e.Playlists.EDIT_PLAYLIST,args:[e.playlist.id]},svgName:re.vn.Edit,button:!1,analyticsData:b,analyticsOptions:Object.assign(Object.assign({},E),{actionType:s.Vw.Edit})}),w.push({label:ie("delete"),appLink:{application:j.O.PLAYLISTS,action:P.e.Playlists.DELETE_PLAYLIST,args:[e.playlist.id]},svgName:re.vn.Delete,className:"text-danger",button:!1,analyticsData:b,analyticsOptions:Object.assign(Object.assign({},E),{actionType:s.Vw.Delete})})),(null===(l=e.playlist._isClickViewCurated)||void 0===l?void 0:l.value)&&w.push({label:ie("copy"),appLink:{application:j.O.PLAYLISTS,action:P.e.Playlists.COPY_PLAYLIST,args:[e.playlist.id]},button:!1,analyticsData:b,analyticsOptions:Object.assign(Object.assign({},E),{actionType:s.Vw.Copy})}),w}};const le={clickViewAvatar:"PHe9c"};function se(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var a,r,i,o,l=[],s=!0,c=!1;try{if(i=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;s=!1}else for(;!(s=(a=i.call(n)).done)&&(l.push(a.value),l.length!==t);s=!0);}catch(e){c=!0,r=e}finally{try{if(!s&&null!=n.return&&(o=n.return(),Object(o)!==o))return}finally{if(c)throw r}}return l}}(e,t)||function(e,t){if(e){if("string"==typeof e)return ce(e,t);var n=Object.prototype.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)?ce(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 ce(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,a=new Array(t);n<t;n++)a[n]=e[n];return a}function ue(e){var t,n=(0,ee.G)().isPlugin,r=se(a.useState(e.isFollowing),2),i=r[0],o=r[1],l=se(a.useState(!1),2),s=l[0],c=l[1];a.useEffect((function(){return o(e.isFollowing)}),[e.isFollowing]);var u=(0,J.a)(G.r.XS);if(e.showPartialLoading)return a.createElement(ne,null);var d=e.playlist.description,m=oe.getPlaylistActions(e,{isAuthenticated:e.currentUser.isAuthenticated,isPlugin:n,isMobile:u,setIsFollowing:o,isFollowing:i,setShowFollowSpinner:c,showFollowSpinner:s,isUserCurator:e.isUserCurator,openInCuratorLink:e.openInCuratorLink});return a.createElement(a.Fragment,null,a.createElement(z.p,{heading:e.playlist.name,banner:e.playlist.banner,imageCdnUrl:e.imageCdnUrl,actions:m.length&&m,actionsDropdownClassName:"btn btn-outline-dark",blockColourClass:(0,K.x)(e.playlist.name,W.o),detailsComponent:function(){return a.createElement(Q,{playlist:e.playlist,currentUser:e.currentUser,detailsClassName:"mb-n1 font-size-normal fw-normal mt-1",clickViewAvatarClassName:le.clickViewAvatar,separatorClassName:"mx-1",totalVideos:e.totalVideos})}}),(!!d||!!(null===(t=e.topicPath)||void 0===t?void 0:t.length)||!!e.moviesAndTv)&&a.createElement("div",{className:"border-bottom py-3"},e.classificationId||e.moviesAndTv?!e.playlist||e.classificationId&&!e.topicPath?a.createElement(X.b2,null):a.createElement("div",{className:"pb-2"},a.createElement(X.Oo,{breadcrumbs:e.getBreadcrumbs()})):a.createElement(a.Fragment,null),!!d&&a.createElement("p",{className:"mb-0"},d)))}var de=n(56050),me=n(91967),pe=n(83914),fe=n(74696),ve=n(13231);function ye(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,a=new Array(t);n<t;n++)a[n]=e[n];return a}var ge=function(e,t){var n={};for(var a in e)Object.prototype.hasOwnProperty.call(e,a)&&t.indexOf(a)<0&&(n[a]=e[a]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var r=0;for(a=Object.getOwnPropertySymbols(e);r<a.length;r++)t.indexOf(a[r])<0&&Object.prototype.propertyIsEnumerable.call(e,a[r])&&(n[a[r]]=e[a[r]])}return n};function he(e){var t,n,r=e.onSortComplete,i=e.onSortStart,l=e.showPartialLoading,s=ge(e,["onSortComplete","onSortStart","showPartialLoading"]),c=(t=a.useState(),n=2,function(e){if(Array.isArray(e))return e}(t)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var a,r,i,o,l=[],s=!0,c=!1;try{if(i=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;s=!1}else for(;!(s=(a=i.call(n)).done)&&(l.push(a.value),l.length!==t);s=!0);}catch(e){c=!0,r=e}finally{try{if(!s&&null!=n.return&&(o=n.return(),Object(o)!==o))return}finally{if(c)throw r}}return l}}(t,n)||function(e,t){if(e){if("string"==typeof e)return ye(e,t);var n=Object.prototype.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)?ye(e,t):void 0}}(t,n)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),u=c[0],d=c[1];return l?a.createElement(fe.S,{withReordering:e.canEdit||e.showIndexes}):e.canEdit?a.createElement(ve.NB,Object.assign({},s,{currentSortingIndex:u,onSortStart:function(t){var n=e.videos.findIndex((function(e){return e.id.toString()===t.active.id.toString()}));d(n),me.q.isFunction(i)&&i(n)},onSortEnd:function(t){d(null);var n=t.active,a=t.over,i=e.videos.findIndex((function(e){return e.id.toString()===n.id.toString()})),l=e.videos.findIndex((function(e){return e.id.toString()===a.id.toString()}));me.q.isFunction(r)?r(i,l):o.Q.Ry.throw(new de.H("An onSortComplete callback function must be passed to SortableVideoListComponent"))},dragHandleIcon:re.vn.Hamburger,dragHandleIconSize:pe.S.XXL,presentationAudiences:e.presentationAudiences})):a.createElement(ve.E4,Object.assign({},s))}var be=n(23232),Ee=n(99742),we="playlists.playlistEmptyState";function Ce(){return a.createElement(Y.D.Provider,{value:we},a.createElement(be.u,null,a.createElement(be.u.Image,{src:Ee.W.EmptyStates.Playlists.PLAYLIST_VIDEOS}),a.createElement(be.u.Heading,null,a.createElement(Y.x,{phrase:"heading"})),a.createElement(be.u.Info,null,a.createElement(Y.x,{phrase:"info"}))))}n(75896);var Se=n(10144),Ie=n(81493),Ae=n(9680),Oe=n(10671);function Ne(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,a=new Array(t);n<t;n++)a[n]=e[n];return a}var ke=i.T.encloseNamespace("playlists.playlist"),Le=function(e,t){return{application:j.O.SUBJECT,action:P.e.Subjects.CLASSIFICATION,args:[e.id,R.m.slugify(e.name)],params:{mtv:!!t||void 0}}};function xe(e,t,n){ae.k.logUserAction({id:t,playlistId:e},{location:s.LZ.VideoList,entity:s.py.Video,actionType:s.Vw.Move,workflowPhase:n})}var Pe={notFound:Ie.N,forbidden:{privacy:Ae.J}};function je(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,a=new Array(t);n<t;n++)a[n]=e[n];return a}var Te=i.T.encloseNamespace("playlists.playlist");function Fe(e){var t,n,i,c,u,_,R,H,Y,q,Z,$,Q,z=(0,r.I0)(),X=(0,w.Z)(),W=l.a.useBasicFetch(g.L.config()),G=l.a.useBasicFetch(E.N.currentUser()),J=(0,C.R0)(),K=J.isUserCurator,ee=J.getOpenInCurationStudioLink,te=(0,A.T)().hasPermissions,ne=l.a.useBasicFetch((null===(t=G.data)||void 0===t?void 0:t.isAuthenticated)&&h.h.yearGroups(G.data.customerId)),ae=l.a.useBasicFetch(e.classificationId&&y.x.path(e.classificationId)),ie=l.a.useBasicFetch(e.classificationId&&y.x.classification(e.classificationId,null===(n=G.data)||void 0===n?void 0:n.id)),oe=l.a.useBasicFetch(ie.hasCompleted&&y.x.presentationById(null===(i=ie.data)||void 0===i?void 0:i.presentationId)),le=l.a.useBasicFetch((!e.classificationId||oe.hasCompleted)&&v.O.presentationAudiences(null===(c=oe.data)||void 0===c?void 0:c.id)),se=(0,D.y)(),ce=se.activePresentation,de=se.availablePresentations,me=(0,F.u)(s.LZ.VideoThumbnail),pe=me.setFavourite,fe=me.canFavourite,ve=e.shareId?b.C.getSharedPlaylist(e.playlistId,e.shareId):b.C.getPlaylist(e.playlistId),ye=e.shareId?b.C.getSharedPlaylistVideosCount(e.playlistId,e.shareId):b.C.getPlaylistVideosCount(e.playlistId),ge=l.a.useBasicFetch(ve),be=l.a.useBasicFetch(ye),Ee=function(e,t,n){var a=(0,Oe._)({location:Oe.i.VideoItem,shareId:n});return d.isOwner(e,t)?Object.assign(Object.assign({},a),{getVideoActions:function(t,n){var r,i=x.M.getCanBeConsumed(t).canConsume,o={label:ke("removeFromPlaylist"),button:!1,svgName:re.vn.Delete,appLink:{application:j.O.PLAYLISTS,action:P.e.Playlists.REMOVE_VIDEO_FROM_PLAYLIST,args:[t.id,e.id],params:{typeId:t.typeId}},className:"text-danger",analyticsOptions:{entity:s.py.Video,actionType:s.Vw.Dissociate,location:s.LZ.VideoListItem,workflowPhase:s.eu.Start,descriptor:s.iF.Playlist},analyticsData:{id:t.id,playlistId:e.id},group:"delete"};return i?[].concat(function(e){if(Array.isArray(e))return Ne(e)}(r=a.getVideoActions(t,n))||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(r)||function(e,t){if(e){if("string"==typeof e)return Ne(e,t);var n=Object.prototype.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)?Ne(e,t):void 0}}(r)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}(),[o]):[o]}}):a}(ge.data,G.data,e.shareId);(0,S.v)(ge,Pe);var we=function(t){return e.shareId?b.C.getSharedPlaylistVideos(e.playlistId,e.shareId,t):b.C.getPlaylistVideos(e.playlistId,t)},Ie=l.a.useBasicFetch((null===(u=G.data)||void 0===u?void 0:u.id)&&b.C.getIsFollowingPlaylist(e.playlistId,null===(_=G.data)||void 0===_?void 0:_.id)),Ae=function(e){l.a.getFetch(z)(we(e))},Fe=(0,I.K)(we,Ae),De=Fe.items,Ve=Fe.hasMore,Me=Fe.isFetching;(0,V.V)(null!==(R=null==De?void 0:De.filter(x.M.isVideo))&&void 0!==R?R:[]);var Be,Ue,_e,Re,He,Ye,qe=function(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var a,r,i,o,l=[],s=!0,c=!1;try{if(i=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;s=!1}else for(;!(s=(a=i.call(n)).done)&&(l.push(a.value),l.length!==t);s=!0);}catch(e){c=!0,r=e}finally{try{if(!s&&null!=n.return&&(o=n.return(),Object(o)!==o))return}finally{if(c)throw r}}return l}}(e,t)||function(e,t){if(e){if("string"==typeof e)return je(e,t);var n=Object.prototype.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)?je(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.")}()}((Be=De,He=(0,a.useState)(),Ye=2,Ue=function(e){if(Array.isArray(e))return e}(He)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var a,r,i,o,l=[],s=!0,c=!1;try{if(i=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;s=!1}else for(;!(s=(a=i.call(n)).done)&&(l.push(a.value),l.length!==t);s=!0);}catch(e){c=!0,r=e}finally{try{if(!s&&null!=n.return&&(o=n.return(),Object(o)!==o))return}finally{if(c)throw r}}return l}}(He,Ye)||function(e,t){if(e){if("string"==typeof e)return O(e,t);var n=Object.prototype.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)?O(e,t):void 0}}(He,Ye)||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.")}(),_e=Ue[0],Re=Ue[1],(0,a.useEffect)((function(){_e&&(Be.length!==_e.length||function(e,t){var n=!0;if(e.length!==t.length)return!1;for(var a=0;a<e.length;a++)if(e[a].id!==t[a].id){n=!1;break}return n}(Be,_e))&&Re(null)}),[Be]),[_e,Re]),2),Ze=qe[0],$e=qe[1];(0,T.P)({id:e.playlistId,app:"playlists",shareId:e.shareId}),(0,N.M)(k.CG.getPlaylistMetadata({content:ge.data,phraseContext:{phraseHandler:Te,titlePhrase:"pageTitle",descriptionPhrase:"pageDescription"},canonicalLink:B.f.getCanonicalLink({stripPresentationSlug:!0}),allowIndexing:!1}));var Qe=!!De&&0===De.length,ze=function(t,n){var a=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return U.W.getAppLink(t,Object.assign(Object.assign({},a),{contextId:e.playlistId,context:f.Q.Playlist,shareId:e.shareId,moviesAndTv:e.moviesAndTv,playNext:n}))},Xe=!(null===(H=G.data)||void 0===H?void 0:H.isAuthenticated)||!!Ie.hasCompleted,We=null==De?void 0:De.find((function(e){var t;return null===(t=x.M.getCanBeConsumed(e))||void 0===t?void 0:t.canConsume})),Ge=d.isOwner(ge.data,G.data),Je=De&&G.data&&W.data;return a.createElement(p.M.Provider,{value:(null===(Y=G.data)||void 0===Y?void 0:Y.isAuthenticated)&&Ee},a.createElement("div",{className:"bg-white px-3"},a.createElement(ue,{playlist:ge.data,currentUser:G.data,isFollowing:null===(q=Ie.data)||void 0===q?void 0:q.isFollowing,follow:function(t,n,a){var r,i=t?b.C.followPlaylist:b.C.unfollowPlaylist;l.a.fetch(z,i(e.playlistId,null===(r=G.data)||void 0===r?void 0:r.id,n,(function(){a(),X.error(Te(t?"followError":"unfollowError"))})))},playAllAppLink:We&&ze(We,!0),showPartialLoading:!ge.data||!Je||!Xe,imageCdnUrl:!!W.data&&W.data.imageCdnUrl,getBreadcrumbs:function(){return function(e){var t=e.topicPath,n=e.presentation,a=e.availablePresentations,r=e.playlist;if(e.moviesAndTv){var i=[{name:ke("moviesAndTv"),appLink:{application:j.O.MOVIES_AND_TV,action:P.e.MoviesAndTv.HOME}}];return null==t||t.slice(1,t.length).forEach((function(e){i.push({name:e.name,appLink:Le(e,!0)})})),i.push({name:r.name,active:!0}),i}var o=[{name:ke("discover"),appLink:{application:j.O.DASHBOARD,action:P.e.Dashboard.HOME}}];return t&&(o.push({name:Se.i.getExploreAllTopicsTitle(null==n?void 0:n.name,null==a?void 0:a.length),appLink:{application:j.O.SUBJECT,action:P.e.Subjects.CLASSIFICATION_ALL,params:{presentationId:null==n?void 0:n.id}}}),t.slice(1,t.length).forEach((function(e){o.push({name:e.name,appLink:Le(e)})}))),o.push({name:r.name,active:!0}),o}({availablePresentations:de,moviesAndTv:e.moviesAndTv,playlist:ge.data,presentation:ce,topicPath:ae.data})},topicPath:ae.data,moviesAndTv:e.moviesAndTv,classificationId:e.classificationId,isUserCurator:K,openInCuratorLink:ee(null===(Z=ge.data)||void 0===Z?void 0:Z.typeId,null===($=ge.data)||void 0===$?void 0:$.id),totalVideos:d.getVideoCount(be.data)}),a.createElement("div",{className:"mt-2"},Qe?a.createElement(Ce,null):a.createElement(he,{videos:Ze||De,yearGroups:ne.data,playlistId:!!ge.data&&ge.data.id,onSortStart:function(t){var n=De[t];n&&xe(e.playlistId,n.id,s.eu.Start)},onSortComplete:function(t,n){if(t!==n){var a=De[t];if(a){var r=L.l.reorder(De,t,n),i=r.reorderedItems,o=r.reorderRequest;$e(i),xe(e.playlistId,a.id,s.eu.Complete),l.a.fetch(z,b.C.reorderVideos(e.playlistId,o,null,(function(){$e(null)})))}}},canEdit:Ge,showPartialLoading:!Je,getVideoAppLink:function(e,t){return ze(e,!1,t)},getSubTextAppLink:function(t){return e.getSeriesAppLink(t.series)},setFavourite:pe,canFavourite:fe,showSignIn:!(null===(Q=G.data)||void 0===Q?void 0:Q.isAuthenticated),getSignInAppLink:function(e){var t=o.Q.C$.getHref(e),n="/"!==t?{redirectUrl:t}:{};return{application:j.O.DEFAULT,action:P.e.Default.LOG_IN,params:n}},canRemovePrivateVideos:Ge,presentationAudiences:e.moviesAndTv?null:le.data,showIndexes:!0,hasPermissions:te,getPreviewQuestionsAppLink:function(e){return M.j.getPreviewQuestionsAppLink(e)}})),(Ve||Me)&&a.createElement(m._,{isFetching:Me,fetchNext:Ae})))}},97816:(e,t,n)=>{n.d(t,{V:()=>u});var a=n(32735),r=n(20354),i=n(21750),o=n(31949),l=n(1575);function s(e,t){if(e){if("string"==typeof e)return c(e,t);var n=Object.prototype.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)?c(e,t):void 0}}function c(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,a=new Array(t);n<t;n++)a[n]=e[n];return a}function u(e){var t,n,u,d=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},m=r.a.useBasicFetch(o.N.currentUser()),p=a.useRef(new Set),f=e&&(Array.isArray(e)?e.filter(Boolean).map((function(e){return e.id})):e.data.filter(Boolean).map((function(e){return e.id}))),v=(n=a.useState([]),u=2,function(e){if(Array.isArray(e))return e}(n)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var a,r,i,o,l=[],s=!0,c=!1;try{if(i=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;s=!1}else for(;!(s=(a=i.call(n)).done)&&(l.push(a.value),l.length!==t);s=!0);}catch(e){c=!0,r=e}finally{try{if(!s&&null!=n.return&&(o=n.return(),Object(o)!==o))return}finally{if(c)throw r}}return l}}(n,u)||s(n,u)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),y=v[0],g=v[1];a.useEffect((function(){var e;if((null==f?void 0:f.length)&&(null===(e=m.data)||void 0===e?void 0:e.isAuthenticated)){var t=[];f.forEach((function(e){p.current.has(e)||(t.push(e),p.current.add(e))})),t.length&&g((function(e){return[].concat(function(e){return function(e){if(Array.isArray(e))return c(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||s(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}(e),[i.x.hasCurriculumLinks(t,null,d.flightNamespace),l.R.videoMixinAssocs(t,d.flightNamespace)])}))}}),[null==f?void 0:f.length,null===(t=m.data)||void 0===t?void 0:t.isAuthenticated]),r.a.useBasicFetchAll(y)}},68050:(e,t,n)=>{n.d(t,{Z:()=>c});var a=n(95685),r=n.n(a),i=n(32735),o=n(46304),l=n(74512);const s=i.forwardRef((({bsPrefix:e,className:t,as:n="div",...a},i)=>{const s=(0,o.vE)(e,"row"),c=(0,o.pi)(),u=(0,o.zG)(),d=`${s}-cols`,m=[];return c.forEach((e=>{const t=a[e];let n;delete a[e],null!=t&&"object"==typeof t?({cols:n}=t):n=t;const r=e!==u?`-${e}`:"";null!=n&&m.push(`${d}${r}-${n}`)})),(0,l.jsx)(n,{ref:i,...a,className:r()(t,s,...m)})}));s.displayName="Row";const c=s}}]);
2
- //# sourceMappingURL=6263-8957d50afe-lite.chunk.js.map
2
+ //# sourceMappingURL=6263-24e67b7df2-lite.chunk.js.map