@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([[823],{53364:(e,t,n)=>{n.d(t,{b:()=>m});var r=n(32735),a=n(72688),i=n(99504),o=n(86664);const l={idpButton:"FDoJA",idpImage:"bjN_j",divider:"FfyN0"};var c=[{name:"ClassLink",logoUrl:"https://img.clickviewapp.com/v2/logos/ZA2ew5",url:"/login?idp=classlink"},{name:"Clever",logoUrl:"https://img.clickviewapp.com/v2/logos/LqlKgd",url:"/login?idp=clever"}],s=[{name:"Google",logoUrl:"https://img.clickviewapp.com/v2/logos/l5x0jL",url:"/login?idp=google"},{name:"Microsoft",logoUrl:"https://img.clickviewapp.com/v2/logos/xAxGPP",url:"/login?idp=microsoft"}];function u(e){var t=e.idp,n=e.last;return r.createElement("button",{className:"btn btn-lg btn-outline-dark w-100 ".concat(n?"":"mb-3"," ").concat(l.idpButton),onClick:function(){if(e.onClick)e.onClick(t);else{var n=window.location.pathname+window.location.search,r=JSON.stringify(function(){var e={},t=a.N.getEncodedAttributionData();t&&(e.r=t);var n=i.F.getUtmParameters();return n&&(e.utms=n),e}());window.location.href=t.url+"&redirectUrl="+encodeURIComponent(n)+"&attribution="+encodeURIComponent(r)}}},t.logoUrl&&r.createElement("img",{src:t.logoUrl,className:l.idpImage}),"Continue with ",t.name)}function m(e){var t,n,a="idps"in e?e.idps:null;return!(null==a?void 0:a.length)&&"geoLocation"in e&&(a=[].concat(s),o.I.isCountryCodeUS(null===(t=e.geoLocation)||void 0===t?void 0:t.countryCode)&&(n=a).unshift.apply(n,c)),r.createElement("div",{className:"".concat(e.className?e.className:"")},r.createElement("div",{className:"my-3 border-bottom position-relative ".concat(l.divider)}),a.map((function(t,n){return r.createElement(u,{idp:t,key:n,onClick:"onClick"in e?e.onClick:null})})))}},19623:(e,t,n)=>{n.d(t,{P:()=>p});var r=n(32735),a=n(81886),i=n(23481),o=n(53364),l=n(36848),c=n(83345),s=n(14070),u=n(97291),m="launchpad.signInButtons",d=i.T.encloseNamespace(m);function p(e){r.useEffect((function(){e.skipPrompt&&a.Q.Ab.PageLoad(a.Q.C$.getHref(t))}),[]);var t=function(){var t=a.Q.Ab.GetQuery(),n={};if(e.customerId&&(n.customerId=e.customerId,delete t.customerId),e.skipPrompt&&delete t.skipPrompt,e.redirectUrl)n.redirectUrl=e.redirectUrl;else{var r=a.Q.Ab.SerializeQueryParams(t);n.redirectUrl=a.Q.Ab.GetCurrentPath()+(r?"?"+r:"")}return e.showSignUp&&(n.showSignUp=!0),{application:u.O.DEFAULT,action:s.e.Default.LOG_IN,params:n}}();return r.createElement(r.Fragment,null,r.createElement(l.F,{className:"btn btn-lg btn-dark w-100 mt-4",appLink:t},r.createElement(c.x,{namespace:m,phrase:e.pageAppLinkString?"signInToWatch":"signIn"})),e.showJoinCode?r.createElement(l.F,{className:"btn btn-link info-link btn-lg w-100 mt-2",appLink:{application:u.O.LAUNCHPAD,action:s.e.Launchpad.JOIN_CLASSROOM_PROMPT}},d("enterCode")):r.createElement(r.Fragment,null,r.createElement(l.F,{className:"btn btn-lg btn-outline-dark w-100 mt-3",appLink:{application:u.O.LAUNCHPAD,action:s.e.SignUp.SIGN_UP,params:{pageAppLinkString:e.pageAppLinkString}}},d("signUp")),r.createElement(o.b,{geoLocation:e.geoLocation})))}},30823:(e,t,n)=>{n.r(t),n.d(t,{LoginLandingView:()=>E});var r=n(32735),a=n(23481),i=n(20354),o=n(65858),l=n(2786),c=n(11882),s=n(4594),u=n(43012),m=n(20768),d=n(1575),p=n(31908),g=n(83421),f=n(7179),v=n(19623),b=n(17762),h=n(408);const y={logo:"Je2Pi",formContainer:"MfLVl"};var k=a.T.encloseNamespace("classrooms.loginLanding");function E(e){var t,n,a,E,C,w,L=(0,b.M)(),U=(0,f.P)({id:e.objectId,app:(0,f.e)(e.objectType)},o.LZ.Launchpad),A=U.deepLink,N=U.showDeepLink,I=U.onClickDeepLink,S=(0,h.B)().trialAppLinkString,P=(C=e.objectId,w=e.objectType,i.a.useBasicFetch(function(){switch(w){case s.E.Video:return d.R.publicVideo(C);case s.E.Interactive:return m.b.publicInteractiveMetadata(C);case s.E.Clip:return u.e.publicClip(C);default:return null}}()));return e.skipPrompt||P.isFetching?r.createElement(r.Fragment,null):r.createElement(g.Z,{title:null===(t=P.data)||void 0===t?void 0:t.name,imageUrl:null===(n=p.M.getThumbnail(P.data))||void 0===n?void 0:n.url,objectType:e.objectType,links:[{text:k("openInApp"),url:A,hide:!N,onClick:I}]},r.createElement("div",{className:"".concat(y.formContainer," m-auto")},r.createElement("div",{className:"".concat(y.logo," mb-4 mx-auto")},r.createElement(l.$S,null)),!!(null===(a=P.data)||void 0===a?void 0:a.name)&&r.createElement("h1",{className:"h3"},p.M.isVideo(P.data)&&r.createElement(c.$,{type:"series",video:P.data,analyticsOptions:{},size:"sm"}),P.data.name),(null===(E=P.data)||void 0===E?void 0:E.description)&&r.createElement("p",{className:"mb-0 clamp-3"},P.data.description),r.createElement(v.P,{geoLocation:L,customerId:e.customerId,skipPrompt:e.skipPrompt,showJoinCode:e.showJoinCode,redirectUrl:null,pageAppLinkString:S,showSignUp:e.showSignUp})))}},17762:(e,t,n)=>{n.d(t,{M:()=>l});var r=n(39202),a=n(20354),i=n(39151),o={countryCode:"us",isFallback:!0};function l(){var e,t,n=a.a.useBasicFetch(i.L.geoLocation()),l=null===(t=null===(e=r.Ab.GetQuery())||void 0===e?void 0:e.countryCode)||void 0===t?void 0:t.toLowerCase();return l?{countryCode:l}:n.hasCompleted&&!n.data?o:n.data}},408:(e,t,n)=>{n.d(t,{B:()=>o});var r=n(2948),a=n(86702);function i(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function o(){var e,t,n=(e=(0,r.D)(a.y.OPEN_IN_APP_DATA),t=1,function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,a,i,o,l=[],c=!0,s=!1;try{if(i=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;c=!1}else for(;!(c=(r=i.call(n)).done)&&(l.push(r.value),l.length!==t);c=!0);}catch(e){s=!0,a=e}finally{try{if(!c&&null!=n.return&&(o=n.return(),Object(o)!==o))return}finally{if(s)throw a}}return l}}(e,t)||function(e,t){if(e){if("string"==typeof e)return i(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)?i(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.")}())[0];return{trialAppLinkString:function(){if(n&&["videos","clips","series","playlists","topics","interactives"].includes(n.app)){var e=n.id;switch(n.app){case"videos":return"video:".concat(e);case"playlists":return"playlist:".concat(e);case"series":return"series:".concat(e);case"topics":return"topic:".concat(e);case"interactives":return"interactive:".concat(e);case"clips":return"clip:".concat(e)}}}()}}},83421:(e,t,n)=>{n.d(t,{Z:()=>p});var r=n(32735),a=n(54610),i=n(4594),o=n(67453),l=n(99742);const c={left:"vIypY",leftTextImage:"YViNj",right:"MkD4u",blur:"X6mCh",imageContainer:"bc7kz",imagePosition:"JOhEj",image:"Ef2QR",thumbnail:"Gdurb",tallposter:"fjVNK",cover:"o3j31",linksContainer:"AT9Dk"};function s(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,a,i,o,l=[],c=!0,s=!1;try{if(i=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;c=!1}else for(;!(c=(r=i.call(n)).done)&&(l.push(r.value),l.length!==t);c=!0);}catch(e){s=!0,a=e}finally{try{if(!c&&null!=n.return&&(o=n.return(),Object(o)!==o))return}finally{if(s)throw a}}return l}}(e,t)||function(e,t){if(e){if("string"==typeof e)return u(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)?u(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 u(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}var m=[{bgUrl:l.W.LaunchPad.BG_1},{bgUrl:l.W.LaunchPad.BG_2},{bgUrl:l.W.LaunchPad.BG_3},{bgUrl:l.W.LaunchPad.BG_4},{bgUrl:l.W.LaunchPad.BG_5}];function d(e){switch(e){case i.E.Video:case i.E.Interactive:case i.E.Clip:return c.thumbnail;case i.E.Subject:case i.E.Playlist:return c.cover;case i.E.Series:return c.tallposter;default:return""}}function p(e){var t,n=s(r.useState(!1),2),i=n[0],l=n[1],u=s(r.useState(""),2),p=u[0],g=u[1],f=s(r.useState(""),2),v=f[0],b=f[1],h=o.j.createUrl(e.imageUrl,{size:a.h2.Large}),y=m;return r.useEffect((function(){if(!h&&y&&0!==y.length){var e,t=(e=y)[Math.floor(Math.random()*e.length)];t.bgUrl&&g(t.bgUrl),t.textUrl&&b(t.textUrl)}}),[]),r.useEffect((function(){if(h){var e=new Image;return e.onload=function(){return l(!0)},e.src=h,function(){return e.onload=null}}}),[]),r.createElement("div",{className:"d-flex"},e.leftComponent?e.leftComponent():r.createElement("div",{className:"".concat(c.left," bg-light"),style:{backgroundImage:"url('".concat(p,"')")}},v&&r.createElement("div",{className:c.leftTextImage,style:{backgroundImage:"url('".concat(v,"')")}}),i&&r.createElement(r.Fragment,null,r.createElement("div",{className:c.blur,style:{backgroundImage:"url('".concat(h,"')")}}),r.createElement("div",{className:"".concat(c.imageContainer," ").concat(d(e.objectType))},r.createElement("div",{className:c.imagePosition},r.createElement("img",{className:c.image,src:h,alt:e.title}))))),r.createElement("div",{className:"".concat(c.right," bg-white d-flex flex-column")},r.createElement("div",{className:"position-absolute d-flex align-items-center ".concat(c.linksContainer)},null===(t=e.links)||void 0===t?void 0:t.map((function(e,t){return e.hide?r.createElement(r.Fragment,{key:t}):r.createElement("a",{key:t,href:e.url,className:"info-link fw-semibold",onClick:e.onClick},e.text)}))),e.children))}}}]);
2
- //# sourceMappingURL=823-58d27c255b-lite.chunk.js.map
2
+ //# sourceMappingURL=823-33c5207c68-lite.chunk.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"scripts/823-58d27c255b-lite.chunk.js","mappings":"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","sources":["file:///app/packages/libs/shared/src/apps/sign-up/components/general/global-idps/global-idps.scss","file:///app/packages/libs/shared/src/apps/sign-up/components/general/global-idps/GlobalIdps.tsx","file:///app/packages/projects/lite/src/apps/launchpad/components/sign-in-buttons/SignInButtons.tsx","file:///app/packages/projects/lite/src/apps/launchpad/views/login-landing/login-landing.scss","file:///app/packages/projects/lite/src/apps/launchpad/views/login-landing/LoginLandingView.tsx","file:///app/packages/projects/lite/src/apps/sign-up/hooks/useGeoLocation.ts","file:///app/packages/projects/lite/src/apps/sign-up/hooks/useTrialAppLink.tsx","file:///app/packages/projects/lite/src/shared/components/launchpad/launchpad.scss","file:///app/packages/projects/lite/src/shared/components/launchpad/Launchpad.tsx"],"sourcesContent":["// extracted by mini-css-extract-plugin\nexport default {\"idpButton\":\"FDoJA\",\"idpImage\":\"bjN_j\",\"divider\":\"FfyN0\"};","import React from 'react';\n\nimport { HashObject } from 'libs/analytics/interfaces';\nimport { AttributionHelper } from 'libs/analytics/utils/AttributionHelper';\nimport { UtmHelper } from 'libs/analytics/utils/UtmHelper';\n\nimport { LocalityHelper } from 'libs/shared/apps/sign-up/helpers/LocalityHelper';\nimport { IdentityProvider } from 'libs/shared/apps/sign-up/interfaces/IdentityProvider';\nimport { GeoLocation } from 'libs/shared/interfaces/responses/GeoLocation';\n\nimport styles from './global-idps.scss';\n\nconst US_ONLY_IDPS: IdentityProvider[] = [\n {\n name: 'ClassLink',\n logoUrl: 'https://img.clickviewapp.com/v2/logos/ZA2ew5',\n url: '/login?idp=classlink'\n },\n {\n name: 'Clever',\n logoUrl: 'https://img.clickviewapp.com/v2/logos/LqlKgd',\n url: '/login?idp=clever'\n }\n];\n\nconst GLOBAL_IDPS: IdentityProvider[] = [\n {\n name: 'Google',\n logoUrl: 'https://img.clickviewapp.com/v2/logos/l5x0jL',\n url: '/login?idp=google'\n },\n {\n name: 'Microsoft',\n logoUrl: 'https://img.clickviewapp.com/v2/logos/xAxGPP',\n url: '/login?idp=microsoft'\n }\n];\n\ninterface GlobalIdpButtonProps {\n idp: IdentityProvider;\n /**\n * Because rendering globalIdps is conditional. We have a \"Don't have an account\" link at the bottom\n * which uses margin top. So the last item in this view must not have a margin bottom. - Sha\n */\n last?: boolean;\n onClick?: (idp: IdentityProvider) => void;\n}\n\nfunction getAttributionParams() {\n const params: HashObject = {};\n \n const encodedReferrer = AttributionHelper.getEncodedAttributionData();\n if (encodedReferrer)\n params.r = encodedReferrer;\n\n const utms = UtmHelper.getUtmParameters();\n if (utms)\n params.utms = utms;\n\n return params;\n}\n\nexport function GlobalIdpButton(props: GlobalIdpButtonProps): React.ReactElement {\n const {\n idp,\n last\n } = props;\n\n function onClick(): void {\n if (props.onClick) {\n props.onClick(idp);\n return;\n }\n\n const currentPathAndQuery = window.location.pathname + window.location.search;\n const attributionData = JSON.stringify(getAttributionParams());\n\n /**\n * Intentionally not using LocationUtils as to not bring a large number of dependencies into Auth - Sha\n */\n window.location.href = idp.url\n + '&redirectUrl=' + encodeURIComponent(currentPathAndQuery)\n + '&attribution=' + encodeURIComponent(attributionData);\n }\n\n return (\n <button\n className={`btn btn-lg btn-outline-dark w-100 ${last ? '' : 'mb-3'} ${styles.idpButton}`}\n onClick={onClick}\n >\n {idp.logoUrl && <img src={idp.logoUrl} className={styles.idpImage} />}\n Continue with {idp.name}\n </button>\n );\n}\n\ninterface AuthIdpProps {\n idps: IdentityProvider[];\n onClick: (idp: IdentityProvider) => void;\n className?: string;\n}\n\ninterface LiteIdpProps {\n geoLocation: GeoLocation;\n className?: string;\n}\n\ntype GlobalIdpsProps = AuthIdpProps | LiteIdpProps\n\nexport function GlobalIdps(props: GlobalIdpsProps): JSX.Element {\n let idps = 'idps' in props ? props.idps : null;\n\n if (!idps?.length && 'geoLocation' in props) {\n idps = [...GLOBAL_IDPS];\n\n if (LocalityHelper.isCountryCodeUS(props.geoLocation?.countryCode))\n idps.unshift(...US_ONLY_IDPS);\n }\n\n return (\n <div className={`${props.className ? props.className : ''}`}>\n <div className={`my-3 border-bottom position-relative ${styles.divider}`}></div>\n {idps.map((p, i) => (\n <GlobalIdpButton idp={p} key={i} onClick={'onClick' in props ? props.onClick : null} />\n ))}\n </div>\n );\n}","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { HashObject } from 'libs/analytics/interfaces';\n\nimport { GlobalIdps } from 'libs/shared/apps/sign-up/components/general/global-idps/GlobalIdps';\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { GeoLocation } from 'libs/shared/interfaces/responses/GeoLocation';\n\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\n\nconst namespace = 'launchpad.signInButtons';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface SignInButtonsProps {\n geoLocation: GeoLocation;\n customerId: string;\n skipPrompt: boolean;\n showJoinCode: boolean;\n redirectUrl: string;\n pageAppLinkString: string;\n showSignUp: boolean;\n}\n\nexport function SignInButtons(props: SignInButtonsProps): JSX.Element {\n React.useEffect(() => {\n if (!props.skipPrompt)\n return;\n\n Core.LocationUtils.PageLoad(Core.AppLinkHelper.getHref(appLink));\n }, []);\n\n function getAppLink(): Core.AppLink {\n const currentQuery = Core.LocationUtils.GetQuery();\n const params: HashObject = {};\n\n /**\n * Add customerId to the login url and remove it from the redirect url\n */\n if (props.customerId) {\n params.customerId = props.customerId;\n delete currentQuery.customerId;\n }\n\n /**\n * Remove skip prompt from the return url\n */\n if (props.skipPrompt)\n delete currentQuery.skipPrompt;\n\n if (props.redirectUrl) {\n params.redirectUrl = props.redirectUrl;\n } else {\n const serializedQuery = Core.LocationUtils.SerializeQueryParams(currentQuery);\n params.redirectUrl = Core.LocationUtils.GetCurrentPath() + (serializedQuery ? ('?' + serializedQuery) : '');\n }\n\n if (props.showSignUp)\n params.showSignUp = true;\n\n return {\n application: AppChannels.DEFAULT,\n action: Actions.Default.LOG_IN,\n params\n };\n }\n\n const appLink = getAppLink();\n\n return (\n <>\n <AppLink\n className='btn btn-lg btn-dark w-100 mt-4'\n appLink={appLink}\n >\n <Text namespace={namespace} phrase={props.pageAppLinkString ? 'signInToWatch' : 'signIn'} />\n </AppLink>\n {props.showJoinCode ?\n <AppLink\n className='btn btn-link info-link btn-lg w-100 mt-2'\n appLink={{\n application: AppChannels.LAUNCHPAD,\n action: Actions.Launchpad.JOIN_CLASSROOM_PROMPT\n }}\n >\n {getPhrase('enterCode')}\n </AppLink> :\n <>\n <AppLink\n className='btn btn-lg btn-outline-dark w-100 mt-3'\n appLink={{\n application: AppChannels.LAUNCHPAD,\n action: Actions.SignUp.SIGN_UP,\n params: { pageAppLinkString: props.pageAppLinkString }\n }}\n >\n {getPhrase('signUp')}\n </AppLink>\n <GlobalIdps geoLocation={props.geoLocation} />\n </>\n }\n </>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"logo\":\"Je2Pi\",\"formContainer\":\"MfLVl\"};","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Flight } from 'libs/common/flight';\n\nimport { LocationContext } from 'libs/analytics/interfaces';\n\nimport { ClickViewLogo } from 'libs/shared/components/svgs/clickview-logo/ClickViewLogo';\nimport { VideoSubText } from 'libs/shared/components/video-sub-text/VideoSubText';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { ClipRequests } from 'libs/shared/flight-requests/ClipRequests';\nimport { InteractiveRequests } from 'libs/shared/flight-requests/InteractiveRequests';\nimport { VideoRequests } from 'libs/shared/flight-requests/VideoRequests';\nimport { VideoTypes } from 'libs/shared/interfaces';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\nimport { Launchpad } from 'shared/components/launchpad/Launchpad';\nimport { DeepLinkViewModel, mapMasterTypeToDeepLinkApp, useDeepLinks } from 'shared/hooks/useDeepLinks';\n\nimport { SignInButtons } from 'apps/launchpad/components/sign-in-buttons/SignInButtons';\nimport { useGeoLocation } from 'apps/sign-up/hooks/useGeoLocation';\nimport { useTrialAppLink } from 'apps/sign-up/hooks/useTrialAppLink';\n\nimport styles from './login-landing.scss';\n\nconst namespace = 'classrooms.loginLanding';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nfunction useFetchObject(objectId: string, objectType: MasterType): Flight.Response<VideoTypes> {\n function getRequest(): Flight.Request {\n switch (objectType) {\n case MasterType.Video:\n return VideoRequests.publicVideo(objectId);\n case MasterType.Interactive:\n return InteractiveRequests.publicInteractiveMetadata(objectId);\n case MasterType.Clip:\n return ClipRequests.publicClip(objectId);\n default:\n return null;\n }\n }\n\n return Flight.useBasicFetch(getRequest());\n}\n\ninterface LoginLandingProps {\n skipPrompt: boolean;\n showJoinCode: boolean;\n customerId: string;\n showSignUp: boolean;\n\n objectType?: MasterType;\n objectId?: string;\n}\n\nexport function LoginLandingView(props: LoginLandingProps): React.ReactElement {\n function getInitialDeepLink(): DeepLinkViewModel {\n return {\n id: props.objectId,\n app: mapMasterTypeToDeepLinkApp(props.objectType)\n };\n }\n\n const geoLocation = useGeoLocation();\n\n const {\n deepLink,\n showDeepLink,\n onClickDeepLink\n } = useDeepLinks(getInitialDeepLink(), LocationContext.Launchpad);\n\n const { trialAppLinkString } = useTrialAppLink();\n\n const obj = useFetchObject(props.objectId, props.objectType);\n\n if (props.skipPrompt || obj.isFetching)\n return <></>;\n\n return (\n <Launchpad\n title={obj.data?.name}\n imageUrl={VideoHelper.getThumbnail(obj.data)?.url}\n objectType={props.objectType}\n links={[{\n text: getPhrase('openInApp'),\n url: deepLink,\n hide: !showDeepLink,\n onClick: onClickDeepLink\n }]}\n >\n <div className={`${styles.formContainer} m-auto`}>\n <div className={`${styles.logo} mb-4 mx-auto`}>\n <ClickViewLogo />\n </div>\n {!!obj.data?.name &&\n <h1 className='h3'>\n {VideoHelper.isVideo(obj.data) &&\n <VideoSubText type='series' video={obj.data} analyticsOptions={{}} size='sm' />}\n {obj.data.name}\n </h1>\n }\n {obj.data?.description &&\n <p className='mb-0 clamp-3'>{obj.data.description}</p>\n }\n\n <SignInButtons\n geoLocation={geoLocation}\n customerId={props.customerId}\n skipPrompt={props.skipPrompt}\n showJoinCode={props.showJoinCode}\n redirectUrl={null}\n pageAppLinkString={trialAppLinkString}\n showSignUp={props.showSignUp}\n />\n </div>\n </Launchpad>\n );\n}","import { LocationUtils } from 'libs/common/backbone/core';\nimport { Flight } from 'libs/common/flight';\n\nimport { ConfigRequests } from 'libs/shared/flight-requests/ConfigRequests';\nimport { GeoLocation } from 'libs/shared/interfaces/responses/GeoLocation';\n\nconst FALLBACK_COUNTRY: GeoLocation = {\n countryCode: 'us',\n isFallback: true\n};\n\nexport function useGeoLocation(): GeoLocation {\n const geoLocation = Flight.useBasicFetch<GeoLocation>(ConfigRequests.geoLocation());\n\n const countryCode = LocationUtils.GetQuery()?.countryCode?.toLowerCase();\n if (countryCode)\n return { countryCode };\n\n if (geoLocation.hasCompleted && !geoLocation.data)\n return FALLBACK_COUNTRY;\n\n return geoLocation.data;\n}","import { useViewModel } from 'libs/common/react/hooks/UseViewModel';\n\nimport { ViewModelKeys } from 'shared/constants/LiteViewModels';\nimport { DeepLinkViewModel } from 'shared/hooks/useDeepLinks';\n\nexport function useTrialAppLink() {\n const [viewModel] = useViewModel<DeepLinkViewModel>(ViewModelKeys.OPEN_IN_APP_DATA);\n\n function getTrialAppLinkString() {\n if (!viewModel) {\n return;\n }\n const validApps = [ 'videos', 'clips', 'series', 'playlists', 'topics', 'interactives' ];\n if (!validApps.includes(viewModel.app)) {\n return;\n }\n\n const id = viewModel.id;\n switch (viewModel.app) {\n case 'videos':\n return `video:${id}`;\n case 'playlists':\n return `playlist:${id}`;\n case 'series':\n return `series:${id}`;\n case 'topics':\n return `topic:${id}`;\n case 'interactives':\n return `interactive:${id}`;\n case 'clips':\n return `clip:${id}`;\n }\n }\n\n return {\n trialAppLinkString: getTrialAppLinkString()\n };\n}","// extracted by mini-css-extract-plugin\nexport default {\"left\":\"vIypY\",\"leftTextImage\":\"YViNj\",\"right\":\"MkD4u\",\"blur\":\"X6mCh\",\"imageContainer\":\"bc7kz\",\"imagePosition\":\"JOhEj\",\"image\":\"Ef2QR\",\"thumbnail\":\"Gdurb\",\"tallposter\":\"fjVNK\",\"cover\":\"o3j31\",\"linksContainer\":\"AT9Dk\"};","import React from 'react';\n\nimport { ImageSize } from 'libs/shared/enums/Images';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { ImageHelper } from 'libs/shared/utils/ImageHelper';\n\nimport { ImageUrls } from 'shared/constants/ImageUrls';\n\nimport styles from './launchpad.scss';\n\nconst FALLBACK_IMAGES = [\n {\n bgUrl: ImageUrls.LaunchPad.BG_1\n },\n {\n bgUrl: ImageUrls.LaunchPad.BG_2\n },\n {\n bgUrl: ImageUrls.LaunchPad.BG_3\n },\n {\n bgUrl: ImageUrls.LaunchPad.BG_4\n },\n {\n bgUrl: ImageUrls.LaunchPad.BG_5\n }\n];\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nconst XMAS_URLS: LaunchImage[] = [\n {\n bgUrl: '/images/launchpad/xmas/2024-promo1-bg.png'\n },\n {\n bgUrl: '/images/launchpad/xmas/2024-promo2-bg.png'\n },\n {\n bgUrl: '/images/launchpad/xmas/2024-promo3-bg.png'\n },\n {\n bgUrl: '/images/launchpad/xmas/2024-promo4-bg.png'\n },\n {\n bgUrl: '/images/launchpad/xmas/2024-promo5-bg.png'\n }\n];\n\nfunction mapObjectTypeToImageClass(objectType: MasterType): string {\n switch (objectType) {\n case MasterType.Video:\n case MasterType.Interactive:\n case MasterType.Clip:\n return styles.thumbnail;\n\n case MasterType.Subject:\n case MasterType.Playlist:\n return styles.cover;\n\n case MasterType.Series:\n return styles.tallposter;\n\n default:\n return '';\n }\n}\n\ninterface LaunchpadLink {\n url: string;\n text: string;\n onClick?: () => void;\n hide?: boolean;\n}\n\ninterface LaunchpadProps {\n objectType?: MasterType;\n title?: string;\n imageUrl?: string;\n links?: LaunchpadLink[];\n leftComponent?: () => JSX.Element;\n}\n\ninterface LaunchImage {\n bgUrl: string;\n textUrl?: string;\n}\n\nfunction getRandomImage(urlLists: LaunchImage[]): LaunchImage {\n return urlLists[Math.floor(Math.random() * urlLists.length)];\n}\n\nexport function Launchpad(props: React.PropsWithChildren<LaunchpadProps>): JSX.Element {\n const [ showImage, setShowImage ] = React.useState(false);\n const [ image, setImage ] = React.useState<string>('');\n const [ textImage, setTextImage ] = React.useState<string>('');\n\n const imageUrl = ImageHelper.createUrl(props.imageUrl, { size: ImageSize.Large });\n const IMAGE_URLS = FALLBACK_IMAGES;\n\n React.useEffect(() => {\n if (imageUrl || !IMAGE_URLS || IMAGE_URLS.length === 0)\n return;\n\n const image = getRandomImage(IMAGE_URLS);\n\n if (image.bgUrl) {\n setImage(image.bgUrl);\n }\n\n if (image.textUrl) {\n setTextImage(image.textUrl);\n }\n }, []);\n\n React.useEffect(() => {\n if (!imageUrl)\n return;\n\n const img = new Image();\n img.onload = () => setShowImage(true);\n img.src = imageUrl;\n return () => img.onload = null;\n }, []);\n\n return (\n <div className='d-flex'>\n { props.leftComponent ?\n props.leftComponent()\n :\n <div className={`${styles.left} bg-light`} style={{ backgroundImage: `url('${image}')` }}>\n { textImage && (\n <div className={styles.leftTextImage} style={{ backgroundImage: `url('${textImage}')` }} />\n )}\n \n {showImage &&\n <>\n <div className={styles.blur} style={{ backgroundImage: `url('${imageUrl}')` }} />\n <div className={`${styles.imageContainer} ${mapObjectTypeToImageClass(props.objectType)}`}>\n <div className={styles.imagePosition}>\n <img className={styles.image} src={imageUrl} alt={props.title} />\n </div>\n </div>\n </>\n }\n </div>\n }\n <div className={`${styles.right} bg-white d-flex flex-column`}>\n <div className={`position-absolute d-flex align-items-center ${styles.linksContainer}`}>\n {props.links?.map((link, key) => {\n if (link.hide)\n return <React.Fragment key={key}></React.Fragment>;\n\n return (\n <a key={key} href={link.url} className='info-link fw-semibold' onClick={link.onClick}>\n {link.text}\n </a>\n );\n })}\n </div>\n\n {props.children}\n </div>\n </div>\n );\n}"],"names":["US_ONLY_IDPS","name","logoUrl","url","GLOBAL_IDPS","GlobalIdpButton","props","idp","last","className","onClick","currentPathAndQuery","window","location","pathname","search","attributionData","JSON","stringify","params","encodedReferrer","AttributionHelper","r","utms","UtmHelper","getAttributionParams","href","encodeURIComponent","src","GlobalIdps","idps","length","LocalityHelper","geoLocation","countryCode","unshift","map","p","i","key","namespace","getPhrase","SignInButtons","skipPrompt","appLink","currentQuery","customerId","redirectUrl","serializedQuery","showSignUp","application","action","getAppLink","phrase","pageAppLinkString","showJoinCode","LanguageService","LoginLandingView","objectId","objectType","useGeoLocation","useDeepLinks","id","app","deepLink","showDeepLink","onClickDeepLink","trialAppLinkString","useTrialAppLink","obj","MasterType","VideoRequests","InteractiveRequests","ClipRequests","getRequest","isFetching","Launchpad","title","data","imageUrl","VideoHelper","links","text","hide","ClickViewLogo","VideoSubText","type","video","analyticsOptions","size","description","FALLBACK_COUNTRY","isFallback","toLowerCase","hasCompleted","viewModel","includes","getTrialAppLinkString","FALLBACK_IMAGES","bgUrl","ImageUrls","mapObjectTypeToImageClass","showImage","setShowImage","image","setImage","textImage","setTextImage","ImageHelper","IMAGE_URLS","urlLists","Math","floor","random","textUrl","img","Image","onload","leftComponent","style","backgroundImage","alt","link","children"],"sourceRoot":""}
1
+ {"version":3,"file":"scripts/823-33c5207c68-lite.chunk.js","mappings":"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","sources":["file:///app/packages/libs/shared/src/apps/sign-up/components/general/global-idps/global-idps.scss","file:///app/packages/libs/shared/src/apps/sign-up/components/general/global-idps/GlobalIdps.tsx","file:///app/packages/projects/lite/src/apps/launchpad/components/sign-in-buttons/SignInButtons.tsx","file:///app/packages/projects/lite/src/apps/launchpad/views/login-landing/login-landing.scss","file:///app/packages/projects/lite/src/apps/launchpad/views/login-landing/LoginLandingView.tsx","file:///app/packages/projects/lite/src/apps/sign-up/hooks/useGeoLocation.ts","file:///app/packages/projects/lite/src/apps/sign-up/hooks/useTrialAppLink.tsx","file:///app/packages/projects/lite/src/shared/components/launchpad/launchpad.scss","file:///app/packages/projects/lite/src/shared/components/launchpad/Launchpad.tsx"],"sourcesContent":["// extracted by mini-css-extract-plugin\nexport default {\"idpButton\":\"FDoJA\",\"idpImage\":\"bjN_j\",\"divider\":\"FfyN0\"};","import React from 'react';\n\nimport { HashObject } from 'libs/analytics/interfaces';\nimport { AttributionHelper } from 'libs/analytics/utils/AttributionHelper';\nimport { UtmHelper } from 'libs/analytics/utils/UtmHelper';\n\nimport { LocalityHelper } from 'libs/shared/apps/sign-up/helpers/LocalityHelper';\nimport { IdentityProvider } from 'libs/shared/apps/sign-up/interfaces/IdentityProvider';\nimport { GeoLocation } from 'libs/shared/interfaces/responses/GeoLocation';\n\nimport styles from './global-idps.scss';\n\nconst US_ONLY_IDPS: IdentityProvider[] = [\n {\n name: 'ClassLink',\n logoUrl: 'https://img.clickviewapp.com/v2/logos/ZA2ew5',\n url: '/login?idp=classlink'\n },\n {\n name: 'Clever',\n logoUrl: 'https://img.clickviewapp.com/v2/logos/LqlKgd',\n url: '/login?idp=clever'\n }\n];\n\nconst GLOBAL_IDPS: IdentityProvider[] = [\n {\n name: 'Google',\n logoUrl: 'https://img.clickviewapp.com/v2/logos/l5x0jL',\n url: '/login?idp=google'\n },\n {\n name: 'Microsoft',\n logoUrl: 'https://img.clickviewapp.com/v2/logos/xAxGPP',\n url: '/login?idp=microsoft'\n }\n];\n\ninterface GlobalIdpButtonProps {\n idp: IdentityProvider;\n /**\n * Because rendering globalIdps is conditional. We have a \"Don't have an account\" link at the bottom\n * which uses margin top. So the last item in this view must not have a margin bottom. - Sha\n */\n last?: boolean;\n onClick?: (idp: IdentityProvider) => void;\n}\n\nfunction getAttributionParams() {\n const params: HashObject = {};\n \n const encodedReferrer = AttributionHelper.getEncodedAttributionData();\n if (encodedReferrer)\n params.r = encodedReferrer;\n\n const utms = UtmHelper.getUtmParameters();\n if (utms)\n params.utms = utms;\n\n return params;\n}\n\nexport function GlobalIdpButton(props: GlobalIdpButtonProps): React.ReactElement {\n const {\n idp,\n last\n } = props;\n\n function onClick(): void {\n if (props.onClick) {\n props.onClick(idp);\n return;\n }\n\n const currentPathAndQuery = window.location.pathname + window.location.search;\n const attributionData = JSON.stringify(getAttributionParams());\n\n /**\n * Intentionally not using LocationUtils as to not bring a large number of dependencies into Auth - Sha\n */\n window.location.href = idp.url\n + '&redirectUrl=' + encodeURIComponent(currentPathAndQuery)\n + '&attribution=' + encodeURIComponent(attributionData);\n }\n\n return (\n <button\n className={`btn btn-lg btn-outline-dark w-100 ${last ? '' : 'mb-3'} ${styles.idpButton}`}\n onClick={onClick}\n >\n {idp.logoUrl && <img src={idp.logoUrl} className={styles.idpImage} />}\n Continue with {idp.name}\n </button>\n );\n}\n\ninterface AuthIdpProps {\n idps: IdentityProvider[];\n onClick: (idp: IdentityProvider) => void;\n className?: string;\n}\n\ninterface LiteIdpProps {\n geoLocation: GeoLocation;\n className?: string;\n}\n\ntype GlobalIdpsProps = AuthIdpProps | LiteIdpProps\n\nexport function GlobalIdps(props: GlobalIdpsProps): JSX.Element {\n let idps = 'idps' in props ? props.idps : null;\n\n if (!idps?.length && 'geoLocation' in props) {\n idps = [...GLOBAL_IDPS];\n\n if (LocalityHelper.isCountryCodeUS(props.geoLocation?.countryCode))\n idps.unshift(...US_ONLY_IDPS);\n }\n\n return (\n <div className={`${props.className ? props.className : ''}`}>\n <div className={`my-3 border-bottom position-relative ${styles.divider}`}></div>\n {idps.map((p, i) => (\n <GlobalIdpButton idp={p} key={i} onClick={'onClick' in props ? props.onClick : null} />\n ))}\n </div>\n );\n}","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { HashObject } from 'libs/analytics/interfaces';\n\nimport { GlobalIdps } from 'libs/shared/apps/sign-up/components/general/global-idps/GlobalIdps';\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { GeoLocation } from 'libs/shared/interfaces/responses/GeoLocation';\n\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\n\nconst namespace = 'launchpad.signInButtons';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface SignInButtonsProps {\n geoLocation: GeoLocation;\n customerId: string;\n skipPrompt: boolean;\n showJoinCode: boolean;\n redirectUrl: string;\n pageAppLinkString: string;\n showSignUp: boolean;\n}\n\nexport function SignInButtons(props: SignInButtonsProps): JSX.Element {\n React.useEffect(() => {\n if (!props.skipPrompt)\n return;\n\n Core.LocationUtils.PageLoad(Core.AppLinkHelper.getHref(appLink));\n }, []);\n\n function getAppLink(): Core.AppLink {\n const currentQuery = Core.LocationUtils.GetQuery();\n const params: HashObject = {};\n\n /**\n * Add customerId to the login url and remove it from the redirect url\n */\n if (props.customerId) {\n params.customerId = props.customerId;\n delete currentQuery.customerId;\n }\n\n /**\n * Remove skip prompt from the return url\n */\n if (props.skipPrompt)\n delete currentQuery.skipPrompt;\n\n if (props.redirectUrl) {\n params.redirectUrl = props.redirectUrl;\n } else {\n const serializedQuery = Core.LocationUtils.SerializeQueryParams(currentQuery);\n params.redirectUrl = Core.LocationUtils.GetCurrentPath() + (serializedQuery ? ('?' + serializedQuery) : '');\n }\n\n if (props.showSignUp)\n params.showSignUp = true;\n\n return {\n application: AppChannels.DEFAULT,\n action: Actions.Default.LOG_IN,\n params\n };\n }\n\n const appLink = getAppLink();\n\n return (\n <>\n <AppLink\n className='btn btn-lg btn-dark w-100 mt-4'\n appLink={appLink}\n >\n <Text namespace={namespace} phrase={props.pageAppLinkString ? 'signInToWatch' : 'signIn'} />\n </AppLink>\n {props.showJoinCode ?\n <AppLink\n className='btn btn-link info-link btn-lg w-100 mt-2'\n appLink={{\n application: AppChannels.LAUNCHPAD,\n action: Actions.Launchpad.JOIN_CLASSROOM_PROMPT\n }}\n >\n {getPhrase('enterCode')}\n </AppLink> :\n <>\n <AppLink\n className='btn btn-lg btn-outline-dark w-100 mt-3'\n appLink={{\n application: AppChannels.LAUNCHPAD,\n action: Actions.SignUp.SIGN_UP,\n params: { pageAppLinkString: props.pageAppLinkString }\n }}\n >\n {getPhrase('signUp')}\n </AppLink>\n <GlobalIdps geoLocation={props.geoLocation} />\n </>\n }\n </>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"logo\":\"Je2Pi\",\"formContainer\":\"MfLVl\"};","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Flight } from 'libs/common/flight';\n\nimport { LocationContext } from 'libs/analytics/interfaces';\n\nimport { ClickViewLogo } from 'libs/shared/components/svgs/clickview-logo/ClickViewLogo';\nimport { VideoSubText } from 'libs/shared/components/video-sub-text/VideoSubText';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { ClipRequests } from 'libs/shared/flight-requests/ClipRequests';\nimport { InteractiveRequests } from 'libs/shared/flight-requests/InteractiveRequests';\nimport { VideoRequests } from 'libs/shared/flight-requests/VideoRequests';\nimport { VideoTypes } from 'libs/shared/interfaces';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\nimport { Launchpad } from 'shared/components/launchpad/Launchpad';\nimport { DeepLinkViewModel, mapMasterTypeToDeepLinkApp, useDeepLinks } from 'shared/hooks/useDeepLinks';\n\nimport { SignInButtons } from 'apps/launchpad/components/sign-in-buttons/SignInButtons';\nimport { useGeoLocation } from 'apps/sign-up/hooks/useGeoLocation';\nimport { useTrialAppLink } from 'apps/sign-up/hooks/useTrialAppLink';\n\nimport styles from './login-landing.scss';\n\nconst namespace = 'classrooms.loginLanding';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nfunction useFetchObject(objectId: string, objectType: MasterType): Flight.Response<VideoTypes> {\n function getRequest(): Flight.Request {\n switch (objectType) {\n case MasterType.Video:\n return VideoRequests.publicVideo(objectId);\n case MasterType.Interactive:\n return InteractiveRequests.publicInteractiveMetadata(objectId);\n case MasterType.Clip:\n return ClipRequests.publicClip(objectId);\n default:\n return null;\n }\n }\n\n return Flight.useBasicFetch(getRequest());\n}\n\ninterface LoginLandingProps {\n skipPrompt: boolean;\n showJoinCode: boolean;\n customerId: string;\n showSignUp: boolean;\n\n objectType?: MasterType;\n objectId?: string;\n}\n\nexport function LoginLandingView(props: LoginLandingProps): React.ReactElement {\n function getInitialDeepLink(): DeepLinkViewModel {\n return {\n id: props.objectId,\n app: mapMasterTypeToDeepLinkApp(props.objectType)\n };\n }\n\n const geoLocation = useGeoLocation();\n\n const {\n deepLink,\n showDeepLink,\n onClickDeepLink\n } = useDeepLinks(getInitialDeepLink(), LocationContext.Launchpad);\n\n const { trialAppLinkString } = useTrialAppLink();\n\n const obj = useFetchObject(props.objectId, props.objectType);\n\n if (props.skipPrompt || obj.isFetching)\n return <></>;\n\n return (\n <Launchpad\n title={obj.data?.name}\n imageUrl={VideoHelper.getThumbnail(obj.data)?.url}\n objectType={props.objectType}\n links={[{\n text: getPhrase('openInApp'),\n url: deepLink,\n hide: !showDeepLink,\n onClick: onClickDeepLink\n }]}\n >\n <div className={`${styles.formContainer} m-auto`}>\n <div className={`${styles.logo} mb-4 mx-auto`}>\n <ClickViewLogo />\n </div>\n {!!obj.data?.name &&\n <h1 className='h3'>\n {VideoHelper.isVideo(obj.data) &&\n <VideoSubText type='series' video={obj.data} analyticsOptions={{}} size='sm' />}\n {obj.data.name}\n </h1>\n }\n {obj.data?.description &&\n <p className='mb-0 clamp-3'>{obj.data.description}</p>\n }\n\n <SignInButtons\n geoLocation={geoLocation}\n customerId={props.customerId}\n skipPrompt={props.skipPrompt}\n showJoinCode={props.showJoinCode}\n redirectUrl={null}\n pageAppLinkString={trialAppLinkString}\n showSignUp={props.showSignUp}\n />\n </div>\n </Launchpad>\n );\n}","import { LocationUtils } from 'libs/common/backbone/core';\nimport { Flight } from 'libs/common/flight';\n\nimport { ConfigRequests } from 'libs/shared/flight-requests/ConfigRequests';\nimport { GeoLocation } from 'libs/shared/interfaces/responses/GeoLocation';\n\nconst FALLBACK_COUNTRY: GeoLocation = {\n countryCode: 'us',\n isFallback: true\n};\n\nexport function useGeoLocation(): GeoLocation {\n const geoLocation = Flight.useBasicFetch<GeoLocation>(ConfigRequests.geoLocation());\n\n const countryCode = LocationUtils.GetQuery()?.countryCode?.toLowerCase();\n if (countryCode)\n return { countryCode };\n\n if (geoLocation.hasCompleted && !geoLocation.data)\n return FALLBACK_COUNTRY;\n\n return geoLocation.data;\n}","import { useViewModel } from 'libs/common/react/hooks/UseViewModel';\n\nimport { ViewModelKeys } from 'shared/constants/LiteViewModels';\nimport { DeepLinkViewModel } from 'shared/hooks/useDeepLinks';\n\nexport function useTrialAppLink() {\n const [viewModel] = useViewModel<DeepLinkViewModel>(ViewModelKeys.OPEN_IN_APP_DATA);\n\n function getTrialAppLinkString() {\n if (!viewModel) {\n return;\n }\n const validApps = [ 'videos', 'clips', 'series', 'playlists', 'topics', 'interactives' ];\n if (!validApps.includes(viewModel.app)) {\n return;\n }\n\n const id = viewModel.id;\n switch (viewModel.app) {\n case 'videos':\n return `video:${id}`;\n case 'playlists':\n return `playlist:${id}`;\n case 'series':\n return `series:${id}`;\n case 'topics':\n return `topic:${id}`;\n case 'interactives':\n return `interactive:${id}`;\n case 'clips':\n return `clip:${id}`;\n }\n }\n\n return {\n trialAppLinkString: getTrialAppLinkString()\n };\n}","// extracted by mini-css-extract-plugin\nexport default {\"left\":\"vIypY\",\"leftTextImage\":\"YViNj\",\"right\":\"MkD4u\",\"blur\":\"X6mCh\",\"imageContainer\":\"bc7kz\",\"imagePosition\":\"JOhEj\",\"image\":\"Ef2QR\",\"thumbnail\":\"Gdurb\",\"tallposter\":\"fjVNK\",\"cover\":\"o3j31\",\"linksContainer\":\"AT9Dk\"};","import React from 'react';\n\nimport { ImageSize } from 'libs/shared/enums/Images';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { ImageHelper } from 'libs/shared/utils/ImageHelper';\n\nimport { ImageUrls } from 'shared/constants/ImageUrls';\n\nimport styles from './launchpad.scss';\n\nconst FALLBACK_IMAGES = [\n {\n bgUrl: ImageUrls.LaunchPad.BG_1\n },\n {\n bgUrl: ImageUrls.LaunchPad.BG_2\n },\n {\n bgUrl: ImageUrls.LaunchPad.BG_3\n },\n {\n bgUrl: ImageUrls.LaunchPad.BG_4\n },\n {\n bgUrl: ImageUrls.LaunchPad.BG_5\n }\n];\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nconst XMAS_URLS: LaunchImage[] = [\n {\n bgUrl: '/images/launchpad/xmas/2024-promo1-bg.png'\n },\n {\n bgUrl: '/images/launchpad/xmas/2024-promo2-bg.png'\n },\n {\n bgUrl: '/images/launchpad/xmas/2024-promo3-bg.png'\n },\n {\n bgUrl: '/images/launchpad/xmas/2024-promo4-bg.png'\n },\n {\n bgUrl: '/images/launchpad/xmas/2024-promo5-bg.png'\n }\n];\n\nfunction mapObjectTypeToImageClass(objectType: MasterType): string {\n switch (objectType) {\n case MasterType.Video:\n case MasterType.Interactive:\n case MasterType.Clip:\n return styles.thumbnail;\n\n case MasterType.Subject:\n case MasterType.Playlist:\n return styles.cover;\n\n case MasterType.Series:\n return styles.tallposter;\n\n default:\n return '';\n }\n}\n\ninterface LaunchpadLink {\n url: string;\n text: string;\n onClick?: () => void;\n hide?: boolean;\n}\n\ninterface LaunchpadProps {\n objectType?: MasterType;\n title?: string;\n imageUrl?: string;\n links?: LaunchpadLink[];\n leftComponent?: () => JSX.Element;\n}\n\ninterface LaunchImage {\n bgUrl: string;\n textUrl?: string;\n}\n\nfunction getRandomImage(urlLists: LaunchImage[]): LaunchImage {\n return urlLists[Math.floor(Math.random() * urlLists.length)];\n}\n\nexport function Launchpad(props: React.PropsWithChildren<LaunchpadProps>): JSX.Element {\n const [ showImage, setShowImage ] = React.useState(false);\n const [ image, setImage ] = React.useState<string>('');\n const [ textImage, setTextImage ] = React.useState<string>('');\n\n const imageUrl = ImageHelper.createUrl(props.imageUrl, { size: ImageSize.Large });\n const IMAGE_URLS = FALLBACK_IMAGES;\n\n React.useEffect(() => {\n if (imageUrl || !IMAGE_URLS || IMAGE_URLS.length === 0)\n return;\n\n const image = getRandomImage(IMAGE_URLS);\n\n if (image.bgUrl) {\n setImage(image.bgUrl);\n }\n\n if (image.textUrl) {\n setTextImage(image.textUrl);\n }\n }, []);\n\n React.useEffect(() => {\n if (!imageUrl)\n return;\n\n const img = new Image();\n img.onload = () => setShowImage(true);\n img.src = imageUrl;\n return () => img.onload = null;\n }, []);\n\n return (\n <div className='d-flex'>\n { props.leftComponent ?\n props.leftComponent()\n :\n <div className={`${styles.left} bg-light`} style={{ backgroundImage: `url('${image}')` }}>\n { textImage && (\n <div className={styles.leftTextImage} style={{ backgroundImage: `url('${textImage}')` }} />\n )}\n \n {showImage &&\n <>\n <div className={styles.blur} style={{ backgroundImage: `url('${imageUrl}')` }} />\n <div className={`${styles.imageContainer} ${mapObjectTypeToImageClass(props.objectType)}`}>\n <div className={styles.imagePosition}>\n <img className={styles.image} src={imageUrl} alt={props.title} />\n </div>\n </div>\n </>\n }\n </div>\n }\n <div className={`${styles.right} bg-white d-flex flex-column`}>\n <div className={`position-absolute d-flex align-items-center ${styles.linksContainer}`}>\n {props.links?.map((link, key) => {\n if (link.hide)\n return <React.Fragment key={key}></React.Fragment>;\n\n return (\n <a key={key} href={link.url} className='info-link fw-semibold' onClick={link.onClick}>\n {link.text}\n </a>\n );\n })}\n </div>\n\n {props.children}\n </div>\n </div>\n );\n}"],"names":["US_ONLY_IDPS","name","logoUrl","url","GLOBAL_IDPS","GlobalIdpButton","props","idp","last","className","onClick","currentPathAndQuery","window","location","pathname","search","attributionData","JSON","stringify","params","encodedReferrer","AttributionHelper","r","utms","UtmHelper","getAttributionParams","href","encodeURIComponent","src","GlobalIdps","idps","length","LocalityHelper","geoLocation","countryCode","unshift","map","p","i","key","namespace","getPhrase","SignInButtons","skipPrompt","appLink","currentQuery","customerId","redirectUrl","serializedQuery","showSignUp","application","action","getAppLink","phrase","pageAppLinkString","showJoinCode","LanguageService","LoginLandingView","objectId","objectType","useGeoLocation","useDeepLinks","id","app","deepLink","showDeepLink","onClickDeepLink","trialAppLinkString","useTrialAppLink","obj","MasterType","VideoRequests","InteractiveRequests","ClipRequests","getRequest","isFetching","Launchpad","title","data","imageUrl","VideoHelper","links","text","hide","ClickViewLogo","VideoSubText","type","video","analyticsOptions","size","description","FALLBACK_COUNTRY","isFallback","toLowerCase","hasCompleted","viewModel","includes","getTrialAppLinkString","FALLBACK_IMAGES","bgUrl","ImageUrls","mapObjectTypeToImageClass","showImage","setShowImage","image","setImage","textImage","setTextImage","ImageHelper","IMAGE_URLS","urlLists","Math","floor","random","textUrl","img","Image","onload","leftComponent","style","backgroundImage","alt","link","children"],"sourceRoot":""}
@@ -0,0 +1,2 @@
1
+ "use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[8261],{11921:(e,t,a)=>{a.d(t,{F:()=>o});var r=a(32735),n=a(35223),l=a(83914);var i=function(e){switch(e){case"up":return"JAT0R";case"down":return"ld41u";case"right":return"HHkPe";case"left":return"jZTRR"}};function o(e){return r.createElement(l.x,{svgName:n.vn.Caret,className:"".concat(i(e.direction)," svg-container d-inline-block ").concat(e.className)})}o.defaultProps={direction:"right"}},83834:(e,t,a)=>{a.d(t,{$:()=>k});var r=a(32735),n=a(57900),l=a(11921),i=a(11607),o=a(97395),c=a(83657),s=a(36848),d=a(88711),u=a(75163),m=a(5465),p=a(54610);const f={actions:"cN3nB",actionsContainer:"xM37V",dropStyle:"kvCLS",dragStyle:"md9Na"};function h(e){var t,a=e.folder.thumbnail?o._.urlBuilder(e.folder.thumbnail.url,{size:p.h2.Small}):null,n=null===(t=e.getFolderActions)||void 0===t?void 0:t.call(e,e.folder);return r.createElement(d.j,{draggable:e.drag&&{id:e.folder.id,data:e.folder},droppable:e.drop&&{id:e.folder.id,data:e.folder},dropStye:f.dropStyle,dragStyle:f.dragStyle},r.createElement("div",{className:"position-relative"},r.createElement(s.F,{className:"rounded-3 d-block text-decoration-none",appLink:e.getAppLink(e.folder),title:e.folder.name},r.createElement(u.Z,{data:a,imageType:p.__.Thumbnails,imageClassName:"rounded-top-lg"},r.createElement(m.oy,{name:e.folder.name,type:m.mS.Folder,extraClasses:"rounded-top-lg"})),r.createElement("h3",{className:"bg-white border-start border-end border-bottom rounded-bottom-lg font-size-normal fw-semibold mb-0 p-2"},r.createElement("span",{className:"text-truncate d-block"},e.folder.name))),(null==n?void 0:n.length)&&r.createElement(c.e,{actions:n,className:f.actionsContainer,actionsDropdownClassName:f.actions,dropdownToggleSvgSize:null})))}var v=a(83345),g=a(79967);function b(e,t){(null==t||t>e.length)&&(t=e.length);for(var a=0,r=new Array(t);a<t;a++)r[a]=e[a];return r}var y="libraries.folderList",E="has:expanded:library:folders";function k(e){var t,a,o,c=(a=r.useState(n.SG.get(E)||!1),o=2,function(e){if(Array.isArray(e))return e}(a)||function(e,t){var a=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=a){var r,n,l,i,o=[],c=!0,s=!1;try{if(l=(a=a.call(e)).next,0===t){if(Object(a)!==a)return;c=!1}else for(;!(c=(r=l.call(a)).done)&&(o.push(r.value),o.length!==t);c=!0);}catch(e){s=!0,n=e}finally{try{if(!c&&null!=a.return&&(i=a.return(),Object(i)!==i))return}finally{if(s)throw n}}return o}}(a,o)||function(e,t){if(e){if("string"==typeof e)return b(e,t);var a=Object.prototype.toString.call(e).slice(8,-1);return"Object"===a&&e.constructor&&(a=e.constructor.name),"Map"===a||"Set"===a?Array.from(e):"Arguments"===a||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(a)?b(e,t):void 0}}(a,o)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),s=c[0],d=c[1],u=e.expandFolders||s,m=(t=(0,g.k)()).xxl||t.xl||t.lg?6:t.md?4:3;function p(){d(!u),n.SG.set(E,!u)}var f=u?e.folders:e.folders.slice(0,m),k=e.folders.length>m&&!e.expandFolders;return r.createElement(r.Fragment,null,r.createElement("div",{className:"d-flex justify-content-between align-items-center"},e.showHeading&&r.createElement(i.L,{className:"d-inline-flex align-items-center mb-2 px-2 ".concat(k?"":"cursor-default"),onClick:p},k&&r.createElement(l.F,{direction:u?"down":"right"}),r.createElement("h2",{className:"h4 mb-0"},r.createElement(v.x,{namespace:y,phrase:"folders",options:{count:e.folders.length}}))),!(u||!k)&&r.createElement("div",{className:"d-flex justify-content-end justify-self-end px-2"},r.createElement(i.L,{onClick:p,className:"text-dark hover-text-underline d-inline-block"},r.createElement(v.x,{namespace:y,phrase:"seeAll",options:{count:e.folders.length}}))),!(!u||!k)&&r.createElement("div",{className:"d-flex justify-content-end justify-self-end px-2"},r.createElement(i.L,{onClick:p,className:"text-dark hover-text-underline d-inline-block"},r.createElement(v.x,{namespace:y,phrase:"seeLess"}))),e.extraButtons?e.extraButtons:r.createElement(r.Fragment,null)),r.createElement("div",{className:"row mx-1"},f.map((function(t){return r.createElement("div",{key:t.id,className:"col-4 col-md-3 col-lg-2 px-1 pb-3"},r.createElement(h,{folder:t,getAppLink:e.getAppLink,getFolderActions:e.getFolderActions,drag:e.drag,drop:e.drop}))}))))}k.defaultProps={showHeading:!0}},65403:(e,t,a)=>{a.d(t,{i:()=>i});var r=a(32735);const n={partialFolderHeading:"dhbsL",partialFolderThumbnail:"CI9vk",partialFolderName:"l0Nll"};var l=function(){return r.createElement("div",{className:"col-4 col-md-3 col-lg-2 px-1 pb-3"},r.createElement("div",{className:"".concat(n.partialFolderThumbnail," partial-loading-background rounded-top-lg")}),r.createElement("div",{className:"".concat(n.partialFolderName," partial-loading-background border-bottom rounded-bottom-lg font-size-normal mb-0 p-2")}," "))};function i(e){var t=e.count,a=void 0===t?3:t;return r.createElement(r.Fragment,null,r.createElement("div",{className:"".concat(n.partialFolderHeading," h4 mb-2 partial-loading-background")}," "),r.createElement("div",{className:"row mx-n1"},Array(a).fill(null).map((function(e,t){return r.createElement(l,{key:t})}))))}},17087:(e,t,a)=>{a.d(t,{T:()=>o});var r=a(20354),n=a(98064);function l(e){return function(e){if(Array.isArray(e))return i(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,t){if(e){if("string"==typeof e)return i(e,t);var a=Object.prototype.toString.call(e).slice(8,-1);return"Object"===a&&e.constructor&&(a=e.constructor.name),"Map"===a||"Set"===a?Array.from(e):"Arguments"===a||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(a)?i(e,t):void 0}}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function i(e,t){(null==t||t>e.length)&&(t=e.length);for(var a=0,r=new Array(t);a<t;a++)r[a]=e[a];return r}function o(e){var t,a,i=e.folderId,o=e.firstItem,c=e.lastItem,s=e.getAppLink,d=r.a.useBasicFetch(n.D.folderParentTree(i));if(!(null===(a=null===(t=d.data)||void 0===t?void 0:t.children)||void 0===a?void 0:a.length))return[];for(var u=d.data.children.map((function(e){return{node:e,path:[e]}})),m=[],p=function(){var e=u.pop(),t=e.node,a=e.path;t.data.id.toString()===i.toString()&&(m=a.map((function(e){return{name:e.data.name,appLink:s(e)}}))),t.children&&u.push.apply(u,l(t.children.map((function(e){return{node:e,path:[].concat(l(a),[e])}}))))};u.length;)p();return o&&m.unshift(o),c&&m.push(c),m[m.length-1].active=!0,m}},98860:(e,t,a)=>{a.d(t,{P:()=>o});var r=a(20354),n=a(98064),l=a(3010),i=a(45719);function o(e){var t=r.a.useGetFetch();function a(t){return n.D.childFolders(e,t)}return(0,l.i)(!!e&&a,!!e&&function(e){t(a(e))}),(0,i.P)(!!e&&function(e){return a(e).key})}},21325:(e,t,a)=>{a.d(t,{o:()=>o});var r=a(32735),n=a(81886),l=a(96560),i=a(67058);function o(e){r.useEffect((function(){e.hasCompleted&&!e.hasError&&e.data.type!==l.r.CustomLibrary&&n.Q.Ry.throw(new i.d)}),[e.hasCompleted])}},3435:(e,t,a)=>{a.r(t),a.d(t,{LibraryFolderView:()=>ae});var r=a(32735),n=a(70680),l=a(23481),i=a(20354),o=a(65858),c=a(43500),s=a(89043),d=a(49935),u=a(83834),m=a(10874),p=a(4201),f=a(83345),h=a(79718),v=a(51365),g=a(94644),b=a(39151),y=a(1666),E=a(98064),k=a(31949),S=a(1575),x=a(69883),F=a(91286),L=a(60115),N=a(79612),A=a(35223),w=a(68140),C=a(14070),I=a(97291),O=a(10671),T=a(27638),B=a(44110),j=a(97816),R=a(71020),V=a(13231),P=a(22902),H=a(10741),D=a(22490),M=a(23232),Z=a(99742),_="libraries.libraryFolderEmptyState";function G(){return r.createElement(f.D.Provider,{value:_},r.createElement(M.u,null,r.createElement(M.u.Image,{src:Z.W.EmptyStates.Libraries.FOLDER}),r.createElement(M.u.Heading,null,r.createElement(f.x,{phrase:"heading"})),r.createElement(M.u.Info,null,r.createElement(f.x,{phrase:"info"}))))}var U=a(82431),z="libraries.libraryFolderVideos";function W(e){var t,a=(0,p.of)().focusSearchBar,n=(0,P.T)().hasPermissions;return e.videos.length||e.hasSubFolders?e.videos.length?r.createElement("div",null,e.hasSubFolders&&r.createElement("div",{className:"d-flex justify-content-between align-items-center"},r.createElement("h2",{className:"h4 mb-0"},r.createElement(f.x,{namespace:z,phrase:"videos"})),r.createElement("div",{className:"d-flex"},r.createElement(m.h,{svgName:A.vn.Search,appLink:{application:I.O.SEARCH,action:C.e.Search.HOME,params:{source:c.fi.School}},className:"btn btn-outline-dark d-none d-sm-inline-block",onClick:a,analyticsData:{},analyticsOptions:{entity:o.py.SearchResults,location:o.LZ.Libraries,actionType:o.Vw.Click,descriptor:o.Bk.School}},r.createElement(f.x,{namespace:z,phrase:"searchLibrary",options:{smartCount:null===(t=e.libraries)||void 0===t?void 0:t.length}})),r.createElement(h.p,{variant:"outline-dark",type:e.sort,getSortAppLink:e.getSortAppLink,analyticsOptions:{location:o.LZ.VideoListHeader,entity:o.py.Video,actionType:o.Vw.Sort,workflowPhase:o.eu.Complete}}))),r.createElement(V.E4,{videos:e.videos,yearGroups:e.yearGroups,getVideoAppLink:D.W.getAppLink,getSubTextAppLink:function(e){return U.j.getSeriesAppLink(e.series)},setFavourite:e.setFavourite,canFavourite:e.canFavourite,presentationAudiences:e.audiences,hasPermissions:n,getPreviewQuestionsAppLink:function(e){return H.j.getPreviewQuestionsAppLink(e)}}),(e.hasMore||e.isFetching)&&r.createElement(R._,{isFetching:e.isFetching,fetchNext:e.fetchNext,nextCursor:e.nextCursor})):r.createElement(r.Fragment,null):r.createElement(G,null)}var $=a(98860),Q=a(21325),J=a(65403),K=a(74696);const Y={subheading:"IJZtA"};function q(){return r.createElement(r.Fragment,null,r.createElement("div",{className:"m-3"},r.createElement(J.i,null)),r.createElement("div",{className:"mx-3 mb-3"},r.createElement("div",{className:"".concat(Y.subheading," partial-loading-background mb-2")}),r.createElement(K.S,null)))}var X=a(8406),ee="libraries.libraryFolder",te=l.T.encloseNamespace(ee);function ae(e){var t,a,l,R,V,P,H,D,M=(0,n.I0)(),Z=(0,x.Z)(),_=(0,p.of)().focusSearchBar,G=i.a.useBasicFetch(E.D.domainLibraries(["customLibrary","sharedLibrary"])),U=i.a.useBasicFetch(E.D.library(e.libraryId)),z=i.a.useBasicFetch(E.D.folder(e.folderId)),J=(0,$.P)(e.folderId),K=i.a.useBasicFetch(k.N.currentUser()),Y=i.a.useBasicFetch(b.L.config()),ae=i.a.useBasicFetch((null===(t=K.data)||void 0===t?void 0:t.isAuthenticated)&&y.h.yearGroups(K.data.customerId)),re=(0,O._)({location:O.i.VideoItem}),ne=(0,T.u)(o.LZ.VideoThumbnail),le=ne.setFavourite,ie=ne.canFavourite,oe=(0,X.Bf)(e.folderId,U.data,e.sort),ce=(0,B.i)();(0,N.M)({title:null===(a=z.data)||void 0===a?void 0:a.name}),(0,F.v)([U,z]),(0,Q.o)(U);var se=!!K.data&&w.d.getOrSetSortType(K.data.id,e.sort),de=(0,L.K)(he,ve,(function(e,t){if(1===e)return(0,g.r)(t);Z.error(te("error"))})),ue=de.items,me=de.hasMore,pe=de.isFetching,fe=de.nextCursor;function he(t){return S.R.collectionVideos(e.folderId,se,t)}function ve(e){return i.a.getFetch(M)(he(e))}(0,j.V)(ue);var ge=!(!J.hasCompleted||(null===(l=J.items)||void 0===l?void 0:l.length));return r.createElement(v.M.Provider,{value:re},U.data&&z.data&&Y.data?r.createElement(s.p,{heading:z.data.name,banner:z.data.banner,imageCdnUrl:Y.data.imageCdnUrl,blockColourClass:(0,X.WO)(z.data),logo:null===(R=U.data.owner)||void 0===R?void 0:R.logo}):r.createElement(s.v,null),r.createElement("div",{className:"d-flex justify-content-between align-items-center py-3 mx-3 ".concat(ge?"":"border-bottom")},U.data&&z.data?r.createElement(d.Oo,{breadcrumbs:oe}):r.createElement(d.b2,null),r.createElement("div",{className:"d-flex"},(ge||!(null==ue?void 0:ue.length))&&r.createElement(m.h,{svgName:A.vn.Search,appLink:{application:I.O.SEARCH,action:C.e.Search.HOME,params:{source:c.fi.School}},className:"btn btn-outline-dark d-none d-sm-inline-block",onClick:_,analyticsData:{},analyticsOptions:{entity:o.py.SearchResults,location:o.LZ.Libraries,actionType:o.Vw.Click,descriptor:o.Bk.School}},r.createElement(f.x,{namespace:ee,phrase:"searchLibrary",options:{smartCount:null!==(P=null===(V=G.data)||void 0===V?void 0:V.length)&&void 0!==P?P:1}})),ge&&z.data&&r.createElement(h.p,{variant:"outline-dark",type:se,getSortAppLink:function(t){return(0,X.a5)(e.libraryId,z.data,t)},analyticsOptions:{location:o.LZ.VideoListHeader,entity:o.py.Video,actionType:o.Vw.Sort,workflowPhase:o.eu.Complete}}))),ue&&J?r.createElement(r.Fragment,null,!!(null===(H=J.items)||void 0===H?void 0:H.length)&&r.createElement("div",{className:"px-2 py-3"},r.createElement(u.$,{folders:J.items,getAppLink:function(t){return(0,X.a5)(e.libraryId,t,se)},expandFolders:!ue.length})),r.createElement("div",{className:"px-3 pb-3"},r.createElement(W,{videos:ue,yearGroups:ae.data,hasSubFolders:!!(null===(D=J.items)||void 0===D?void 0:D.length),setFavourite:le,canFavourite:ie,hasMore:me,isFetching:pe,fetchNext:ve,nextCursor:fe,sort:se,getSortAppLink:function(t){return(0,X.a5)(e.libraryId,z.data,t)},audiences:ce.data,libraries:G.data}))):r.createElement(q,null))}},8406:(e,t,a)=>{a.d(t,{Bf:()=>d,WO:()=>s,a5:()=>c});var r=a(28400),n=a(7733),l=a(17087),i=a(14070),o=a(97291);function c(e,t,a){return e&&t?{application:o.O.LIBRARIES,action:i.e.Libraries.FOLDER,args:[e,t.id,r.m.slugify(t.name)],params:{sort:a}}:null}function s(e){for(var t,a,r=0,l=0;null!==(a=l<(null===(t=e.name)||void 0===t?void 0:t.length))&&void 0!==a&&a;l++)r+=e.name.charCodeAt(l);return n.o[r%n.o.length]}function d(e,t,a){return(0,l.T)({folderId:t&&e,getAppLink:function(e){return c(t.id,e.data,a)},firstItem:{name:null==t?void 0:t.name,appLink:{application:o.O.LIBRARIES,action:i.e.Libraries.LIBRARY,args:[null==t?void 0:t.id,r.m.slugify(null==t?void 0:t.name)]}}})}}}]);
2
+ //# sourceMappingURL=8261-69854ff4d5-lite.chunk.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scripts/8261-69854ff4d5-lite.chunk.js","mappings":"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","sources":["file:///app/packages/libs/shared/src/components/caret/Caret.tsx","file:///app/packages/libs/shared/src/components/caret/caret.scss","file:///app/packages/libs/shared/src/components/library-folder/library-folder.scss","file:///app/packages/libs/shared/src/components/library-folder/LibraryFolder.tsx","file:///app/packages/libs/shared/src/components/folder-list/FolderList.tsx","file:///app/packages/libs/shared/src/components/folder-list/partial-loading/partial-folder-list.scss","file:///app/packages/libs/shared/src/components/folder-list/partial-loading/PartialFolderList.tsx","file:///app/packages/libs/shared/src/hooks/useBuildBreadcrumbs.ts","file:///app/packages/projects/lite/src/apps/libraries/hooks/UseFetchAllChildFolders.ts","file:///app/packages/projects/lite/src/apps/libraries/hooks/UseHandleLibraryType.ts","file:///app/packages/projects/lite/src/apps/libraries/views/library-folder/empty-state/LibraryFolderEmptyState.tsx","file:///app/packages/projects/lite/src/apps/libraries/components/library-folder-videos/LibraryFolderVideos.tsx","file:///app/packages/projects/lite/src/apps/libraries/views/library-folder/partial-loading/library-folder-partial-loading.scss","file:///app/packages/projects/lite/src/apps/libraries/views/library-folder/partial-loading/LibraryFolderPartialLoading.tsx","file:///app/packages/projects/lite/src/apps/libraries/views/library-folder/LibraryFolderView.tsx","file:///app/packages/projects/lite/src/apps/libraries/views/library-folder/LibraryFolderViewUtils.ts"],"sourcesContent":["import React from 'react';\n\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport { SvgContainer } from '../svg-container/SvgContainer';\n\nimport styles from './caret.scss';\n\ntype CaretDirection = 'left' | 'right' | 'up' | 'down';\n\n\nconst getDirectionClass = (direction: CaretDirection) => {\n switch (direction) {\n case 'up':\n return styles.up;\n case 'down':\n return styles.down;\n case 'right':\n return styles.right;\n case 'left':\n return styles.left;\n }\n};\n\ninterface CaretProps {\n direction?: CaretDirection;\n className?: string;\n}\n\nCaret.defaultProps = {\n direction: 'right'\n};\n\nexport function Caret(props: CaretProps): JSX.Element {\n return (\n <SvgContainer\n svgName={cvSvgLibrary.Caret}\n className={`${getDirectionClass(props.direction)} svg-container d-inline-block ${props.className}`}\n />\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"up\":\"JAT0R\",\"down\":\"ld41u\",\"left\":\"jZTRR\",\"right\":\"HHkPe\"};","// extracted by mini-css-extract-plugin\nexport default {\"actions\":\"cN3nB\",\"actionsContainer\":\"xM37V\",\"dropStyle\":\"kvCLS\",\"dragStyle\":\"md9Na\"};","import React from 'react';\n\nimport { UrlHelper } from 'libs/common/backbone/utils/UrlHelper';\nimport { Core } from 'libs/common/core';\n\nimport { ActionOptions, Actions } from 'libs/shared/components/actions/Actions';\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { DragDropMoveWrapper } from 'libs/shared/components/drag-drop-move/DragDropMoveWrapper';\nimport { BaseImage } from 'libs/shared/components/image/BaseImage';\nimport { ImageFallback, ImageFallbackType } from 'libs/shared/components/image/ImageFallback';\nimport { ImageSize, ImageType } from 'libs/shared/enums/Images';\nimport { Folder } from 'libs/shared/interfaces';\n\nimport styles from './library-folder.scss';\n\ninterface LibraryFolderProps {\n folder: Folder;\n drag?: boolean;\n drop?: boolean;\n getAppLink: (f: Folder) => Core.AppLink;\n getFolderActions?: (f: Folder) => ActionOptions[];\n}\n\nexport function LibraryFolder(props: LibraryFolderProps): JSX.Element {\n const thumbnailUrl = props.folder.thumbnail\n ? UrlHelper.urlBuilder(props.folder.thumbnail.url, { size: ImageSize.Small })\n : null;\n\n const actions = props.getFolderActions?.(props.folder);\n\n return (\n <DragDropMoveWrapper\n draggable={props.drag && { id: props.folder.id, data: props.folder }}\n droppable={props.drop && { id: props.folder.id, data: props.folder }}\n dropStye={styles.dropStyle}\n dragStyle={styles.dragStyle}\n >\n <div className='position-relative'>\n <AppLink\n className='rounded-3 d-block text-decoration-none'\n appLink={props.getAppLink(props.folder)}\n title={props.folder.name}\n >\n <BaseImage\n data={thumbnailUrl}\n imageType={ImageType.Thumbnails}\n imageClassName='rounded-top-lg'\n >\n <ImageFallback\n name={props.folder.name}\n type={ImageFallbackType.Folder}\n extraClasses='rounded-top-lg'\n />\n </BaseImage>\n <h3 className='bg-white border-start border-end border-bottom rounded-bottom-lg font-size-normal fw-semibold mb-0 p-2'>\n <span className='text-truncate d-block'>{props.folder.name}</span>\n </h3>\n </AppLink>\n {actions?.length &&\n <Actions\n actions={actions}\n className={styles.actionsContainer}\n actionsDropdownClassName={styles.actions}\n // Intentionally setting to the default SVG size\n dropdownToggleSvgSize={null}\n />\n }\n </div>\n </DragDropMoveWrapper>\n );\n}","import React from 'react';\n\nimport { LocalStorageHelper } from 'libs/common/backbone/utils/LocalStorageHelper';\nimport { Core } from 'libs/common/core';\n\nimport { ActionOptions } from 'libs/shared/components/actions/Actions';\nimport { Caret } from 'libs/shared/components/caret/Caret';\nimport { DivButton } from 'libs/shared/components/div-button/DivButton';\nimport { LibraryFolder } from 'libs/shared/components/library-folder/LibraryFolder';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { useBreakpoints } from 'libs/shared/hooks/useBreakpoints';\nimport { Folder } from 'libs/shared/interfaces';\n\nconst namespace = 'libraries.folderList';\n\nconst EXPANDED_FOLDERS_KEY = 'has:expanded:library:folders';\n\nfunction useGetFolderLimit(): number {\n const breakpoints = useBreakpoints();\n\n if (breakpoints.xxl || breakpoints.xl || breakpoints.lg)\n return 6;\n\n if (breakpoints.md)\n return 4;\n\n return 3;\n}\n\ninterface FolderListProps {\n folders: Folder[];\n getAppLink: (folder: Folder) => Core.AppLink;\n expandFolders?: boolean;\n showHeading?: boolean;\n getFolderActions?: (f: Folder) => ActionOptions[];\n drag?: boolean;\n drop?: boolean;\n extraButtons?: JSX.Element;\n}\n\nFolderList.defaultProps = {\n showHeading: true\n};\n\nexport function FolderList(props: FolderListProps): JSX.Element {\n const [ _hasExpandedFolders, setHasExpandedFolders ] = React.useState(\n LocalStorageHelper.get(EXPANDED_FOLDERS_KEY) || false\n );\n\n const hasExpandedFolders = props.expandFolders || _hasExpandedFolders;\n\n const folderLimit = useGetFolderLimit();\n\n function onToggleFolderView(): void {\n setHasExpandedFolders(!hasExpandedFolders);\n LocalStorageHelper.set(EXPANDED_FOLDERS_KEY, !hasExpandedFolders);\n }\n\n const displayableFolders = hasExpandedFolders ? props.folders : props.folders.slice(0, folderLimit);\n\n const canToggleCollapsedView = props.folders.length > folderLimit && !props.expandFolders;\n\n return (\n <>\n <div className='d-flex justify-content-between align-items-center'>\n {props.showHeading &&\n <DivButton\n className={`d-inline-flex align-items-center mb-2 px-2 ${!canToggleCollapsedView ? 'cursor-default' : ''}`}\n onClick={onToggleFolderView}\n >\n {canToggleCollapsedView && (\n <Caret direction={hasExpandedFolders ? 'down' : 'right'} />\n )}\n <h2 className='h4 mb-0'>\n <Text namespace={namespace} phrase='folders' options={{ count: props.folders.length }} />\n </h2>\n </DivButton>\n }\n\n {!!(!hasExpandedFolders && canToggleCollapsedView) && (\n <div className='d-flex justify-content-end justify-self-end px-2'>\n <DivButton onClick={onToggleFolderView} className='text-dark hover-text-underline d-inline-block'>\n <Text namespace={namespace} phrase='seeAll' options={{ count: props.folders.length }} />\n </DivButton>\n </div>\n )}\n {!!(hasExpandedFolders && canToggleCollapsedView) && (\n <div className='d-flex justify-content-end justify-self-end px-2'>\n <DivButton onClick={onToggleFolderView} className='text-dark hover-text-underline d-inline-block'>\n <Text namespace={namespace} phrase='seeLess' />\n </DivButton>\n </div>\n )}\n\n {props.extraButtons ? props.extraButtons : <></>}\n </div>\n\n <div className='row mx-1'>\n {displayableFolders.map(f => (\n <div key={f.id} className='col-4 col-md-3 col-lg-2 px-1 pb-3'>\n <LibraryFolder\n folder={f}\n getAppLink={props.getAppLink}\n getFolderActions={props.getFolderActions}\n drag={props.drag}\n drop={props.drop}\n />\n </div>\n ))}\n </div>\n </>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"partialFolderHeading\":\"dhbsL\",\"partialFolderThumbnail\":\"CI9vk\",\"partialFolderName\":\"l0Nll\"};","import React from 'react';\n\nimport styles from './partial-folder-list.scss';\n\nconst PartialFolder = () => (\n <div className='col-4 col-md-3 col-lg-2 px-1 pb-3'>\n <div className={`${styles.partialFolderThumbnail} partial-loading-background rounded-top-lg`} />\n <div className={`${styles.partialFolderName} partial-loading-background border-bottom rounded-bottom-lg font-size-normal mb-0 p-2`}>\n &nbsp;\n </div>\n </div>\n);\n\nexport function PartialFolderList({ count = 3 }: { count?: number; }): JSX.Element {\n return (\n <>\n <div className={`${styles.partialFolderHeading} h4 mb-2 partial-loading-background`}>&nbsp;</div>\n <div className='row mx-n1'>\n {Array(count).fill(null).map((_, i) => <PartialFolder key={i} />)}\n </div>\n </>\n );\n}","import { Core } from 'libs/common/core';\nimport { Flight } from 'libs/common/flight';\n\nimport { Breadcrumb } from 'libs/shared/components/breadcrumbs/Breadcrumbs';\nimport { LibraryRequests } from 'libs/shared/flight-requests/LibraryRequests';\nimport { Folder, MasterNestedObject } from 'libs/shared/interfaces';\n\ninterface BuildOptions {\n folderId: string;\n firstItem?: Breadcrumb;\n lastItem?: Breadcrumb;\n getAppLink: (folder: MasterNestedObject<Folder>) => Core.AppLink;\n}\n\nexport function useBuildBreadcrumbs(options: BuildOptions): Breadcrumb[] {\n const { folderId, firstItem, lastItem, getAppLink } = options;\n\n const parentTree = Flight.useBasicFetch<MasterNestedObject<Folder>>(LibraryRequests.folderParentTree(folderId));\n\n if (!parentTree.data?.children?.length)\n return [];\n\n const searchStack: {\n node: MasterNestedObject<Folder>,\n path: MasterNestedObject<Folder>[]\n }[] = parentTree.data.children.map(c => ({ node: c, path: [c]}));\n\n let breadcrumbs: Breadcrumb[] = [];\n\n while (searchStack.length) {\n const { node, path } = searchStack.pop();\n \n if (node.data.id.toString() === folderId.toString())\n breadcrumbs = path.map(object => ({\n name: object.data.name,\n appLink: getAppLink(object)\n }));\n\n if (node.children)\n searchStack.push(...node.children.map(c => ({ node: c, path: [ ...path, c ]})));\n }\n\n if (firstItem) breadcrumbs.unshift(firstItem);\n if (lastItem) breadcrumbs.push(lastItem);\n\n breadcrumbs[breadcrumbs.length - 1].active = true;\n\n return breadcrumbs;\n}\n ","import { Flight } from 'libs/common/flight';\n\nimport { LibraryRequests } from 'libs/shared/flight-requests/LibraryRequests';\nimport { useFetchAll } from 'libs/shared/hooks/UseFetchAll';\nimport { SelectAllPagesResult, useSelectAllPages } from 'libs/shared/hooks/UseSelectAllPages';\nimport { Folder } from 'libs/shared/interfaces';\n\nexport function useFetchAllChildFolders(parentId?: string): SelectAllPagesResult<Folder> {\n const fetch = Flight.useGetFetch();\n\n function getRequest(cursor?: string): Flight.Request {\n return LibraryRequests.childFolders(parentId, cursor);\n }\n \n function fetchNext(cursor?: string): void {\n fetch(getRequest(cursor));\n }\n\n useFetchAll(!!parentId && getRequest, !!parentId && fetchNext);\n\n return (useSelectAllPages<Folder>(!!parentId && ((cursor?: string) => getRequest(cursor).key)));\n}","import React from 'react';\n\nimport { Core } from 'libs/common/core';\nimport { Flight } from 'libs/common/flight';\n\nimport { MasterObjectTypes } from 'libs/shared/enums/MasterObjectTypes';\nimport { NotFoundError } from 'libs/shared/errors/general/not-found/NotFoundError';\nimport { Library } from 'libs/shared/interfaces';\n\n/**\n * This hook prevents the libraries UI to be used for anything \n * other than customer libraries i.e Hosted, Exchange, Workspace etc\n */\nexport function useHandleLibraryType(request: Flight.Response<Library>): void {\n React.useEffect(() => {\n if (!request.hasCompleted || request.hasError)\n return;\n\n if (request.data.type !== MasterObjectTypes.CustomLibrary)\n Core.ErrorHelper.throw(new NotFoundError());\n }, [request.hasCompleted]);\n}","import React from 'react';\n\nimport { EmptyState } from 'libs/shared/components/empty-states/EmptyState';\nimport { LanguageNamespaceContext, Text } from 'libs/shared/components/text/Text';\n\nimport { ImageUrls } from 'shared/constants/ImageUrls';\n\nconst namespace = 'libraries.libraryFolderEmptyState';\n\nexport function LibraryFolderEmptyState(): JSX.Element {\n return (\n <LanguageNamespaceContext.Provider value={namespace}>\n <EmptyState>\n <EmptyState.Image src={ImageUrls.EmptyStates.Libraries.FOLDER} />\n\n <EmptyState.Heading><Text phrase='heading' /></EmptyState.Heading>\n\n <EmptyState.Info><Text phrase='info' /></EmptyState.Info>\n </EmptyState>\n </LanguageNamespaceContext.Provider>\n );\n}","import React from 'react';\n\nimport { Core } from 'libs/common/core';\n\nimport { EntityType, LocationContext, SearchSourceDescriptor, UserAction, WorkflowPhase } from 'libs/analytics/interfaces';\n\nimport { SourceFilterOptions } from 'libs/shared/apps/search/interfaces';\nimport { IconButton } from 'libs/shared/components/icon-button/IconButton';\nimport { InfiniteScrollFooter } from 'libs/shared/components/infinite-scroll-footer/InfiniteScrollFooter';\nimport { useFocusSearchBar } from 'libs/shared/components/search-bar/SearchUtils';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { VideoList } from 'libs/shared/components/video-list/VideoList';\nimport { VideoSortSelect } from 'libs/shared/components/video-sort-select/VideoSortSelect';\nimport { VideoSortType } from 'libs/shared/enums/VideoSortType';\nimport { usePermissions } from 'libs/shared/hooks/usePermissions';\nimport { CanFavouriteFunc, FavouriteFunc, Library, PresentationAudience, VideoTypes, YearGroup } from 'libs/shared/interfaces';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\nimport { InteractiveHelpers } from 'shared/utils/InteractiveHelper';\nimport { VideoAppLinkHelper } from 'shared/utils/VideoAppLinkHelper';\n\nimport { LibraryFolderEmptyState } from 'apps/libraries/views/library-folder/empty-state/LibraryFolderEmptyState';\nimport { SeriesAppLinkHelper } from 'apps/series/SeriesAppLinkHelper';\n\nconst namespace = 'libraries.libraryFolderVideos';\n\ninterface LibraryFolderVideosProps {\n videos: VideoTypes[];\n yearGroups: YearGroup[];\n hasSubFolders: boolean;\n setFavourite: FavouriteFunc;\n canFavourite: CanFavouriteFunc;\n audiences: PresentationAudience[];\n libraries: Library[];\n\n getSortAppLink: (sort: VideoSortType) => Core.AppLink;\n sort: VideoSortType;\n\n isFetching: boolean;\n hasMore: boolean;\n fetchNext: (cursor: string) => void;\n nextCursor?: string;\n}\n\nexport function LibraryFolderVideos(props: LibraryFolderVideosProps): JSX.Element {\n const { focusSearchBar } = useFocusSearchBar();\n const { hasPermissions } = usePermissions();\n\n if (!props.videos.length && !props.hasSubFolders)\n return <LibraryFolderEmptyState />;\n\n if (!props.videos.length)\n return <></>;\n\n return (\n <div>\n {/* With no subfolders, we don't show this subheading, and the sort is moved up to the parent component */}\n {props.hasSubFolders && (\n <div className='d-flex justify-content-between align-items-center'>\n <h2 className='h4 mb-0'>\n <Text namespace={namespace} phrase='videos' />\n </h2>\n\n <div className='d-flex'>\n <IconButton\n svgName={cvSvgLibrary.Search}\n appLink={{\n application: AppChannels.SEARCH,\n action: Actions.Search.HOME,\n params: {\n source: SourceFilterOptions.School\n }\n }}\n className='btn btn-outline-dark d-none d-sm-inline-block'\n onClick={focusSearchBar}\n analyticsData={{}}\n analyticsOptions={{\n entity: EntityType.SearchResults,\n location: LocationContext.Libraries,\n actionType: UserAction.Click,\n descriptor: SearchSourceDescriptor.School\n }}\n >\n <Text namespace={namespace} phrase='searchLibrary' options={{ smartCount: props.libraries?.length }} />\n </IconButton>\n <VideoSortSelect\n variant='outline-dark'\n type={props.sort}\n getSortAppLink={props.getSortAppLink}\n analyticsOptions={{\n location: LocationContext.VideoListHeader,\n entity: EntityType.Video,\n actionType: UserAction.Sort,\n workflowPhase: WorkflowPhase.Complete\n }}\n />\n </div>\n </div>\n )}\n\n <VideoList\n videos={props.videos}\n yearGroups={props.yearGroups}\n getVideoAppLink={VideoAppLinkHelper.getAppLink}\n getSubTextAppLink={video => SeriesAppLinkHelper.getSeriesAppLink(video.series)}\n setFavourite={props.setFavourite}\n canFavourite={props.canFavourite}\n presentationAudiences={props.audiences}\n hasPermissions={hasPermissions}\n getPreviewQuestionsAppLink={interactive => InteractiveHelpers.getPreviewQuestionsAppLink(interactive)}\n />\n\n {(props.hasMore || props.isFetching) && (\n <InfiniteScrollFooter\n isFetching={props.isFetching}\n fetchNext={props.fetchNext}\n nextCursor={props.nextCursor}\n />\n )}\n </div>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"subheading\":\"IJZtA\"};","import React from 'react';\n\nimport { PartialFolderList } from 'libs/shared/components/folder-list/partial-loading/PartialFolderList';\nimport { PartialVideoList } from 'libs/shared/components/video-list/partial-loading/PartialVideoList';\n\nimport styles from './library-folder-partial-loading.scss';\n\nexport function LibraryFolderPartialLoading(): JSX.Element {\n return (\n <>\n <div className='m-3'>\n <PartialFolderList />\n </div>\n\n <div className='mx-3 mb-3'>\n <div className={`${styles.subheading} partial-loading-background mb-2`} />\n <PartialVideoList />\n </div>\n </>\n );\n}","import React from 'react';\nimport { useDispatch } from 'react-redux';\n\nimport { HttpStatus } from 'libs/common/backbone/enums/HttpStatus';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Flight } from 'libs/common/flight';\n\nimport { EntityType, LocationContext, SearchSourceDescriptor, UserAction, WorkflowPhase } from 'libs/analytics/interfaces';\n\nimport { SourceFilterOptions } from 'libs/shared/apps/search/interfaces';\nimport { BannerHeader, PartialBannerHeader } from 'libs/shared/components/banner-header/BannerHeader';\nimport { Breadcrumbs, PartialBreadcrumbs } from 'libs/shared/components/breadcrumbs/Breadcrumbs';\nimport { FolderList } from 'libs/shared/components/folder-list/FolderList';\nimport { IconButton } from 'libs/shared/components/icon-button/IconButton';\nimport { useFocusSearchBar } from 'libs/shared/components/search-bar/SearchUtils';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { VideoSortSelect } from 'libs/shared/components/video-sort-select/VideoSortSelect';\nimport { VideoActionsContext } from 'libs/shared/context/VideoActionsContext';\nimport { VideoSortType } from 'libs/shared/enums/VideoSortType';\nimport { handleHttpError } from 'libs/shared/errors/handlers/HttpErrorHandlers';\nimport { ConfigRequests } from 'libs/shared/flight-requests/ConfigRequests';\nimport { CustomerRequests } from 'libs/shared/flight-requests/CustomerRequests';\nimport { LibraryRequests } from 'libs/shared/flight-requests/LibraryRequests';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { VideoRequests } from 'libs/shared/flight-requests/VideoRequests';\nimport { useAlerts } from 'libs/shared/hooks/UseAlerts';\nimport { useHandleObjectError } from 'libs/shared/hooks/UseHandleObjectError';\nimport { useInfiniteList } from 'libs/shared/hooks/UseInfiniteList';\nimport { useSetPageMetadata } from 'libs/shared/hooks/useSetPageMetadata';\nimport { Config, CurrentUser, Folder, Library, VideoTypes, YearGroup } from 'libs/shared/interfaces';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\nimport { VideoSortHelper } from 'libs/shared/utils/VideoSortHelper';\n\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\nimport { useVideoActions, VideoActionsLocation } from 'shared/hooks/use-video-actions/useVideoActions';\nimport { useLiteFavourites } from 'shared/hooks/useLiteFavourites';\nimport { usePresentationAudiences } from 'shared/hooks/usePresentationAudiences';\nimport { useVideoMixin } from 'shared/hooks/useVideoMixin';\n\nimport { LibraryFolderVideos } from 'apps/libraries/components/library-folder-videos/LibraryFolderVideos';\nimport { useFetchAllChildFolders } from 'apps/libraries/hooks/UseFetchAllChildFolders';\nimport { useHandleLibraryType } from 'apps/libraries/hooks/UseHandleLibraryType';\n\nimport { LibraryFolderPartialLoading } from './partial-loading/LibraryFolderPartialLoading';\nimport { getFolderAppLink, getFolderBgColourClass, useGetFolderBreadcrumbs } from './LibraryFolderViewUtils';\n\nconst namespace = 'libraries.libraryFolder';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface LibraryFolderViewProps {\n libraryId: string;\n folderId: string;\n sort?: VideoSortType;\n}\n\nexport function LibraryFolderView(props: LibraryFolderViewProps): JSX.Element {\n const dispatch = useDispatch();\n const alerts = useAlerts();\n const { focusSearchBar } = useFocusSearchBar();\n\n const libraries = Flight.useBasicFetch<Library[]>(LibraryRequests.domainLibraries([ 'customLibrary', 'sharedLibrary' ]));\n const library = Flight.useBasicFetch<Library>(LibraryRequests.library(props.libraryId));\n const folder = Flight.useBasicFetch<Folder>(LibraryRequests.folder(props.folderId));\n const subfolders = useFetchAllChildFolders(props.folderId);\n\n const user = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n const config = Flight.useBasicFetch<Config>(ConfigRequests.config());\n const yearGroups = Flight.useBasicFetch<YearGroup[]>(\n user.data?.isAuthenticated && CustomerRequests.yearGroups(user.data.customerId)\n );\n\n const videoActions = useVideoActions({ location: VideoActionsLocation.VideoItem });\n const { setFavourite, canFavourite } = useLiteFavourites(LocationContext.VideoThumbnail);\n const breadcrumbs = useGetFolderBreadcrumbs(props.folderId, library.data, props.sort);\n const audiences = usePresentationAudiences();\n\n useSetPageMetadata({ title: folder.data?.name });\n\n useHandleObjectError([ library, folder ]);\n useHandleLibraryType(library);\n\n const sort = !!user.data && VideoSortHelper.getOrSetSortType(user.data.id, props.sort);\n\n const {\n items: videos,\n hasMore,\n isFetching,\n nextCursor\n } = useInfiniteList<VideoTypes>(getVideosRequest, fetchNext, onError);\n\n useVideoMixin(videos);\n\n function getVideosRequest(cursor?: string): Flight.Request {\n return VideoRequests.collectionVideos(props.folderId, sort, cursor);\n }\n\n function fetchNext(cursor?: string): void {\n return Flight.getFetch(dispatch)(getVideosRequest(cursor));\n }\n\n function onError(pageNumber: number, httpStatus: HttpStatus): void {\n if (pageNumber === 1)\n return handleHttpError(httpStatus);\n\n alerts.error(getPhrase('error'));\n }\n\n const hasNoSubfolders = !!(subfolders.hasCompleted && !subfolders.items?.length);\n\n return (\n <VideoActionsContext.Provider value={videoActions}>\n {(library.data && folder.data && config.data)\n ? (\n <BannerHeader\n heading={folder.data.name}\n banner={folder.data.banner}\n imageCdnUrl={config.data.imageCdnUrl}\n blockColourClass={getFolderBgColourClass(folder.data)}\n logo={library.data.owner?.logo}\n />\n ) : <PartialBannerHeader />\n }\n\n <div className={`d-flex justify-content-between align-items-center py-3 mx-3 ${hasNoSubfolders ? '' : 'border-bottom'}`}>\n {(library.data && folder.data)\n ? <Breadcrumbs breadcrumbs={breadcrumbs} />\n : <PartialBreadcrumbs />\n }\n \n <div className='d-flex'>\n {(hasNoSubfolders || !videos?.length) &&\n <IconButton\n svgName={cvSvgLibrary.Search}\n appLink={{\n application: AppChannels.SEARCH,\n action: Actions.Search.HOME,\n params: {\n source: SourceFilterOptions.School\n }\n }}\n className='btn btn-outline-dark d-none d-sm-inline-block'\n onClick={focusSearchBar}\n analyticsData={{}}\n analyticsOptions={{\n entity: EntityType.SearchResults,\n location: LocationContext.Libraries,\n actionType: UserAction.Click,\n descriptor: SearchSourceDescriptor.School\n }}\n >\n <Text namespace={namespace} phrase='searchLibrary' options={{ smartCount: libraries.data?.length ?? 1 }} />\n </IconButton>\n }\n {(hasNoSubfolders && folder.data) && (\n <VideoSortSelect\n variant='outline-dark'\n type={sort}\n getSortAppLink={sort => getFolderAppLink(props.libraryId, folder.data, sort)}\n analyticsOptions={{\n location: LocationContext.VideoListHeader,\n entity: EntityType.Video,\n actionType: UserAction.Sort,\n workflowPhase: WorkflowPhase.Complete\n }}\n />\n )}\n </div>\n </div>\n\n {(videos && subfolders) ? (\n <>\n {!!subfolders.items?.length && (\n <div className='px-2 py-3'>\n <FolderList\n folders={subfolders.items}\n getAppLink={(f: Folder) => getFolderAppLink(props.libraryId, f, sort)}\n expandFolders={!videos.length}\n />\n </div>\n )}\n\n <div className='px-3 pb-3'>\n <LibraryFolderVideos\n videos={videos}\n yearGroups={yearGroups.data}\n hasSubFolders={!!subfolders.items?.length}\n setFavourite={setFavourite}\n canFavourite={canFavourite}\n hasMore={hasMore}\n isFetching={isFetching}\n fetchNext={fetchNext}\n nextCursor={nextCursor}\n sort={sort}\n getSortAppLink={sort => getFolderAppLink(props.libraryId, folder.data, sort)}\n audiences={audiences.data}\n libraries={libraries.data}\n />\n </div>\n </>\n ) : <LibraryFolderPartialLoading />}\n </VideoActionsContext.Provider>\n );\n}","import { Core } from 'libs/common/core';\nimport { TextHelper } from 'libs/common/react/utils/TextHelper';\n\nimport { Breadcrumb } from 'libs/shared/components/breadcrumbs/Breadcrumbs';\nimport { BG_COLOUR_CLASS_NAMES } from 'libs/shared/constants/ColourClassNames';\nimport { VideoSortType } from 'libs/shared/enums/VideoSortType';\nimport { useBuildBreadcrumbs } from 'libs/shared/hooks/useBuildBreadcrumbs';\nimport { Folder, Library } from 'libs/shared/interfaces';\n\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\n\nexport function getFolderAppLink(libraryId: string, folder: Folder, sort: string): Core.AppLink {\n if (!libraryId || !folder)\n return null;\n\n return {\n application: AppChannels.LIBRARIES,\n action: Actions.Libraries.FOLDER,\n args: [ libraryId, folder.id, TextHelper.slugify(folder.name) ],\n params: {\n sort\n }\n };\n}\n\nexport function getFolderBgColourClass(folder: Folder | Library): string {\n let charCode = 0;\n\n for (let i = 0; i < folder.name?.length ?? 0; i++) {\n charCode += folder.name.charCodeAt(i);\n }\n\n return BG_COLOUR_CLASS_NAMES[charCode % BG_COLOUR_CLASS_NAMES.length];\n}\n\nexport function useGetFolderBreadcrumbs(folderId: string, library: Library, sort: VideoSortType): Breadcrumb[] {\n return useBuildBreadcrumbs({\n folderId: library && folderId,\n getAppLink: object => getFolderAppLink(library.id, object.data, sort),\n firstItem: {\n name: library?.name,\n appLink: {\n application: AppChannels.LIBRARIES,\n action: Actions.Libraries.LIBRARY,\n args: [ library?.id, TextHelper.slugify(library?.name) ]\n }\n }\n });\n}"],"names":["getDirectionClass","direction","Caret","props","SvgContainer","svgName","className","defaultProps","LibraryFolder","thumbnailUrl","folder","thumbnail","UrlHelper","url","size","actions","getFolderActions","DragDropMoveWrapper","draggable","drag","id","data","droppable","drop","dropStye","dragStyle","AppLink","appLink","getAppLink","title","name","BaseImage","imageType","imageClassName","ImageFallback","type","extraClasses","length","Actions","actionsDropdownClassName","dropdownToggleSvgSize","namespace","EXPANDED_FOLDERS_KEY","FolderList","breakpoints","LocalStorageHelper","_hasExpandedFolders","setHasExpandedFolders","hasExpandedFolders","expandFolders","folderLimit","useBreakpoints","xxl","xl","lg","md","onToggleFolderView","displayableFolders","folders","slice","canToggleCollapsedView","showHeading","DivButton","onClick","Text","phrase","options","count","extraButtons","map","f","key","PartialFolder","PartialFolderList","Array","fill","_","i","useBuildBreadcrumbs","folderId","firstItem","lastItem","parentTree","children","searchStack","c","node","path","breadcrumbs","pop","toString","object","push","unshift","active","useFetchAllChildFolders","parentId","fetch","getRequest","cursor","useHandleLibraryType","request","hasCompleted","hasError","LibraryFolderEmptyState","value","EmptyState","src","ImageUrls","LibraryFolderVideos","focusSearchBar","hasPermissions","usePermissions","videos","hasSubFolders","IconButton","application","action","params","source","analyticsData","analyticsOptions","entity","location","actionType","descriptor","smartCount","libraries","VideoSortSelect","variant","sort","getSortAppLink","workflowPhase","VideoList","yearGroups","getVideoAppLink","VideoAppLinkHelper","getSubTextAppLink","video","SeriesAppLinkHelper","series","setFavourite","canFavourite","presentationAudiences","audiences","getPreviewQuestionsAppLink","interactive","InteractiveHelper","hasMore","isFetching","InfiniteScrollFooter","fetchNext","nextCursor","LibraryFolderPartialLoading","PartialVideoList","getPhrase","LanguageService","LibraryFolderView","dispatch","alerts","LibraryRequests","library","libraryId","subfolders","user","UserRequests","config","ConfigRequests","isAuthenticated","CustomerRequests","customerId","videoActions","useVideoActions","useLiteFavourites","u","usePresentationAudiences","useSetPageMetadata","VideoSortHelper","getVideosRequest","pageNumber","httpStatus","error","items","VideoRequests","useVideoMixin","hasNoSubfolders","VideoActionsContext","BannerHeader","heading","banner","imageCdnUrl","blockColourClass","logo","owner","Breadcrumbs","getFolderAppLink","args","getFolderBgColourClass","charCode","charCodeAt","useGetFolderBreadcrumbs"],"sourceRoot":""}
@@ -1,2 +1,2 @@
1
1
  "use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[8466],{14177:(e,t,r)=>{r.d(t,{$:()=>T});var a=r(32735),n=r(70680),o=r(81886),s=r(20354),c=r(79447),l=r(83914),i=r(83345),u=r(4594),m=r(76881),p=r(35223),d="userManager.wizardInProgress";function b(e){var t=Math.floor(e.totalItemsComplete/e.totalItems*100)||0;return a.createElement("div",null,a.createElement("div",{className:"d-flex align-items-center mb-2"},a.createElement("h2",{className:"h5 mb-0"},a.createElement(i.x,{namespace:d,phrase:"heading",options:{percentage:t,actionName:e.actionName}})),a.createElement(l.x,{svgName:p.vn.CircleCheck})),a.createElement("p",null,a.createElement(i.x,{namespace:d,phrase:"info".concat(e.actionVerb)})),a.createElement("p",{className:"mb-1"},a.createElement("span",{className:"text-info"},e.progressVerbPhrase?a.createElement("span",null,e.progressVerbPhrase):a.createElement(i.x,{namespace:d,phrase:"progressVerb".concat(e.actionVerb)}))," ",e.objectType===u.E.User&&e.userType?a.createElement(i.x,{namespace:d,phrase:e.userType===m.Y.Learner?"progressStudents":"progressStaff",options:{totalComplete:e.totalItemsComplete,total:e.totalItems,smartCount:e.totalItems}}):e.objectType===u.E.Video?a.createElement(i.x,{namespace:d,phrase:"progressVideos",options:{totalComplete:e.totalItemsComplete,total:e.totalItems,smartCount:e.totalItems}}):a.createElement(i.x,{namespace:d,phrase:"progressItems",options:{totalComplete:e.totalItemsComplete,total:e.totalItems,smartCount:e.totalItems}})),a.createElement(c.Z,{variant:"info",now:t}))}var y="userManager.wizardSubmitted";function f(e){return a.createElement("div",null,a.createElement("div",{className:"d-flex align-items-center mb-2"},a.createElement("h2",{className:"h5 mb-0"},e.actionName?a.createElement(i.x,{namespace:y,phrase:"heading",options:{actionName:e.actionName}}):a.createElement(i.x,{namespace:y,phrase:"headingGeneric"})),a.createElement(l.x,{svgName:p.vn.CircleCheck})),a.createElement("p",null,a.createElement(i.x,{namespace:y,phrase:"info".concat(e.actionVerb)})),a.createElement("p",{className:"mb-1 text-info"},a.createElement(i.x,{namespace:y,phrase:"preparing"})),a.createElement(c.Z,{variant:"info",now:0}))}var v=r(58739),g=r(94644),h=r(89476);function w(e,t){return function(e){if(Array.isArray(e))return e}(e)||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=[],l=!0,i=!1;try{if(o=(r=r.call(e)).next,0===t){if(Object(r)!==r)return;l=!1}else for(;!(l=(a=o.call(r)).done)&&(c.push(a.value),c.length!==t);l=!0);}catch(e){i=!0,n=e}finally{try{if(!l&&null!=r.return&&(s=r.return(),Object(s)!==s))return}finally{if(i)throw n}}return c}}(e,t)||function(e,t){if(e){if("string"==typeof e)return j(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)?j(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 j(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 E=2e3,I=3;function T(e){var t=w(a.useState(null),2),r=t[0],c=t[1],l=w(a.useState(0),2),i=l[0],u=l[1],m=a.useRef(),p=(0,h.f)(),d=(0,n.I0)();function y(){e.pollJob(j,T)}function j(t){c(t),t.status===v.K.Completed||t.status===v.K.CompletedWithError||t.status===v.K.Failed?window.setTimeout((function(){!function(){var t;e.navLockId&&p.unlock(e.navLockId);var r={jobId:e.jobId};e.userType&&(r.userType=e.userType,d({type:s.a.Actions.INVALIDATE,keys:["school:users","user:count","search:aggregation","search:users"],request:null})),e.statusCompleteAppLink?o.Q.C$.trigger(Object.assign(Object.assign({},e.statusCompleteAppLink),{params:r})):null===(t=e.onStatusCompleted)||void 0===t||t.call(e)}()}),2e3):m.current=window.setTimeout(y,E)}function T(t){i===I&&(window.clearTimeout(m.current),e.navLockId&&p.unlock(e.navLockId),(0,g.r)(t)),u((function(e){return e+1})),m.current=window.setTimeout(y,E)}return a.useEffect((function(){return y(),function(){m.current&&window.clearTimeout(m.current)}}),[]),r&&r.status!==v.K.Submitted&&r.status!==v.K.Queued&&r.status!==v.K.Pending&&0!==r.totalItems?a.createElement(b,{totalItems:r.totalItems,totalItemsComplete:r.processedItems,userType:e.userType,objectType:e.objectType,actionName:e.actionName,actionVerb:e.actionVerb,progressVerbPhrase:e.progressVerbPhrase}):a.createElement(f,{actionName:e.actionName,actionVerb:e.actionVerb})}},94644:(e,t,r)=>{r.d(t,{r:()=>u});var a=r(50242),n=r(81886),o=r(67058),s=r(14553),c=r(49267),l=r(49075),i={notFound:o.d,forbidden:{rating:s.q,yearLevel:s.q,region:c.a,privacy:s.q},badRequest:l._};function u(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({},i),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))}}},13918:(e,t,r)=>{r.r(t),r.d(t,{BulkUserActionsStatusPollingView:()=>f});var a=r(32735),n=r(70680),o=r(20354),s=r(2948),c=r(58703),l=r(149),i=r(14177),u=r(4594),m=r(86702),p=r(29613),d=r(88323),b=r(18087);function y(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 f(e){var t,r,f=(0,d.h)(e.userType),v=f.users,g=f.count,h=(t=(0,s.D)(m.y.BULK_USER_ACTIONS),r=1,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=[],l=!0,i=!1;try{if(o=(r=r.call(e)).next,0===t){if(Object(r)!==r)return;l=!1}else for(;!(l=(a=o.call(r)).done)&&(c.push(a.value),c.length!==t);l=!0);}catch(e){i=!0,n=e}finally{try{if(!l&&null!=r.return&&(s=r.return(),Object(s)!==s))return}finally{if(i)throw n}}return c}}(t,r)||function(e,t){if(e){if("string"==typeof e)return y(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)?y(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.")}())[0],w=(0,n.I0)(),j=(0,b.Y)(e.userType);return a.createElement(c.d,{appLinks:j,userType:e.userType,users:v,currentStep:"status",userCount:g,disableAppLinks:!0,loaded:!0},a.createElement(i.$,{jobId:e.jobId,pollJob:function(t,r){o.a.fetch(w,p.q.getJobProgress(e.jobId,t,r))},objectType:u.E.User,userType:e.userType,statusCompleteAppLink:j.bulkActionsStatus.complete,actionName:l.b.mapSubActionToDisplayName(null==h?void 0:h.subAction),navLockId:c.N,actionVerb:l.b.mapSubActionToVerb(null==h?void 0:h.subAction)}))}},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)}}}},79447:(e,t,r)=>{r.d(t,{Z:()=>d});var a=r(95685),n=r.n(a),o=r(32735),s=r(46304),c=r(58661),l=r(74512);const i=1e3;function u(e,t,r){const a=(e-t)/(r-t)*100;return Math.round(a*i)/i}function m({min:e,now:t,max:r,label:a,visuallyHidden:o,striped:s,animated:c,className:i,style:m,variant:p,bsPrefix:d,...b},y){return(0,l.jsx)("div",{ref:y,...b,role:"progressbar",className:n()(i,`${d}-bar`,{[`bg-${p}`]:p,[`${d}-bar-animated`]:c,[`${d}-bar-striped`]:c||s}),style:{width:`${u(t,e,r)}%`,...m},"aria-valuenow":t,"aria-valuemin":e,"aria-valuemax":r,children:o?(0,l.jsx)("span",{className:"visually-hidden",children:a}):a})}const p=o.forwardRef((({isChild:e=!1,...t},r)=>{const a={min:0,max:100,animated:!1,visuallyHidden:!1,striped:!1,...t};if(a.bsPrefix=(0,s.vE)(a.bsPrefix,"progress"),e)return m(a,r);const{min:i,now:u,max:p,label:d,visuallyHidden:b,striped:y,animated:f,bsPrefix:v,variant:g,className:h,children:w,...j}=a;return(0,l.jsx)("div",{ref:r,...j,className:n()(h,v),children:w?(0,c.UI)(w,(e=>(0,o.cloneElement)(e,{isChild:!0}))):m({min:i,now:u,max:p,label:d,visuallyHidden:b,striped:y,animated:f,bsPrefix:v,variant:g},r)})}));p.displayName="ProgressBar";const d=p}}]);
2
- //# sourceMappingURL=8466-ee9d40ee97-lite.chunk.js.map
2
+ //# sourceMappingURL=8466-cea62163e8-lite.chunk.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"scripts/8466-ee9d40ee97-lite.chunk.js","mappings":"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","sources":["file:///app/packages/libs/shared/src/components/wizard/status/statuses/in-progress/WizardInProgress.tsx","file:///app/packages/libs/shared/src/components/wizard/status/statuses/submitted/WizardSubmitted.tsx","file:///app/packages/libs/shared/src/components/wizard/status/polling/WizardPolling.tsx","file:///app/packages/libs/shared/src/errors/handlers/HttpErrorHandlers.ts","file:///app/packages/projects/lite/src/apps/user-manager/views/wizard/status/polling/BulkUserActionsStatusPollingView.tsx","file:///app/packages/projects/lite/src/shared/flight-requests/JobRequests.ts","file:///app/node_modules/react-bootstrap/esm/ProgressBar.js"],"sourcesContent":["import React from 'react';\nimport { ProgressBar } from 'react-bootstrap';\n\nimport { SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { UserGroup } from 'libs/shared/enums/UserGroup';\nimport { WizardActionVerb } from 'libs/shared/interfaces';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nconst namespace = 'userManager.wizardInProgress';\n\ninterface WizardInProgressProps {\n userType?: UserGroup;\n totalItems: number;\n totalItemsComplete: number;\n actionName: string;\n actionVerb: WizardActionVerb;\n objectType: MasterType;\n progressVerbPhrase?: string;\n}\n\nexport function WizardInProgress(props: WizardInProgressProps): JSX.Element {\n const percentage = Math.floor(props.totalItemsComplete / props.totalItems * 100) || 0;\n\n function renderProgressText() {\n if (props.objectType === MasterType.User && props.userType) {\n return (\n <Text\n namespace={namespace}\n phrase={props.userType === UserGroup.Learner ? 'progressStudents' : 'progressStaff'}\n options={{ totalComplete: props.totalItemsComplete, total: props.totalItems, smartCount: props.totalItems }}\n />\n );\n }\n\n if (props.objectType === MasterType.Video) {\n return (\n <Text\n namespace={namespace}\n phrase='progressVideos'\n options={{ totalComplete: props.totalItemsComplete, total: props.totalItems, smartCount: props.totalItems }}\n />\n );\n }\n\n return (\n <Text\n namespace={namespace}\n phrase='progressItems'\n options={{ totalComplete: props.totalItemsComplete, total: props.totalItems, smartCount: props.totalItems }}\n />\n );\n }\n\n return (\n <div>\n <div className='d-flex align-items-center mb-2'>\n <h2 className='h5 mb-0'>\n <Text namespace={namespace} phrase='heading' options={{ percentage, actionName: props.actionName }} />\n </h2>\n <SvgContainer svgName={cvSvgLibrary.CircleCheck} />\n </div>\n\n <p>\n <Text namespace={namespace} phrase={`info${props.actionVerb}`} />\n </p>\n\n <p className='mb-1'>\n <span className='text-info'>\n {props.progressVerbPhrase ? (\n <span>{props.progressVerbPhrase}</span>\n ) : (\n <Text namespace={namespace} phrase={`progressVerb${props.actionVerb}`} />\n )}\n </span>\n &nbsp;\n {renderProgressText()}\n </p>\n <ProgressBar variant='info' now={percentage} />\n </div>\n );\n}","import React from 'react';\nimport { ProgressBar } from 'react-bootstrap';\n\nimport { SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { WizardActionVerb } from 'libs/shared/interfaces';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nconst namespace = 'userManager.wizardSubmitted';\n\ninterface WizardSubmittedProps {\n actionName?: string;\n actionVerb: WizardActionVerb;\n}\n\nexport function WizardSubmitted(props: WizardSubmittedProps): JSX.Element {\n return (\n <div>\n <div className='d-flex align-items-center mb-2'>\n <h2 className='h5 mb-0'>\n {props.actionName\n ? <Text namespace={namespace} phrase='heading' options={{ actionName: props.actionName }} />\n : <Text namespace={namespace} phrase='headingGeneric' />\n }\n </h2>\n <SvgContainer svgName={cvSvgLibrary.CircleCheck} />\n </div>\n\n <p>\n <Text namespace={namespace} phrase={`info${props.actionVerb}`} />\n </p>\n\n <p className='mb-1 text-info'>\n <Text namespace={namespace} phrase='preparing' />\n </p>\n <ProgressBar variant='info' now={0} />\n </div>\n );\n}","import React from 'react';\nimport { useDispatch } from 'react-redux';\n\nimport { Xhr } from 'libs/common/backbone/interfaces';\nimport { Core } from 'libs/common/core';\nimport { Flight } from 'libs/common/flight';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { WizardInProgress } from 'libs/shared/components/wizard/status/statuses/in-progress/WizardInProgress';\nimport { WizardSubmitted } from 'libs/shared/components/wizard/status/statuses/submitted/WizardSubmitted';\nimport { BatchJobStatus } from 'libs/shared/enums/BatchJobStatus';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { UserGroup } from 'libs/shared/enums/UserGroup';\nimport { handleHttpError } from 'libs/shared/errors/handlers/HttpErrorHandlers';\nimport { useNavLock } from 'libs/shared/hooks/useNavLock';\nimport { BatchJobProgress, WizardActionVerb } from 'libs/shared/interfaces';\n\nconst POLLING_INTERVAL = 2000;\nconst MAX_CONSECUTIVE_ERROR_COUNT = 3; // If the polling endpoint errors 3 times in a row, we will cancel\n\nexport type WizardPollJobFn = (onSuccess: (progress: BatchJobProgress) => void, onError: (xhr: Xhr) => void) => void;\n\ninterface WizardPollingProps {\n jobId: string;\n userType?: UserGroup;\n statusCompleteAppLink?: Core.AppLink;\n onStatusCompleted?: () => void;\n pollJob: WizardPollJobFn;\n actionName: string;\n navLockId?: string;\n actionVerb: WizardActionVerb;\n objectType?: MasterType;\n progressVerbPhrase?: string;\n}\n\nexport function WizardPolling(props: WizardPollingProps): JSX.Element {\n const [ progress, setProgress ] = React.useState<BatchJobProgress>(null);\n const [ consecutiveErrorCount, setConsecutiveErrorCount ] = React.useState(0);\n\n const timeoutIdRef = React.useRef<number>();\n\n const navLock = useNavLock();\n const dispatch = useDispatch();\n\n // Kick off polling for the running batch job. Polling will be stopped if user navigates away.\n React.useEffect(() => {\n pollJob();\n\n return () => {\n if (!timeoutIdRef.current)\n return;\n\n window.clearTimeout(timeoutIdRef.current);\n };\n }, []);\n\n function pollJob(): void {\n props.pollJob(onPollSuccess, onPollError);\n }\n\n function onPollSuccess(currentProgress: BatchJobProgress): void {\n setProgress(currentProgress);\n\n // Job is considered completed if status matches any of the following values\n const jobHasCompleted = (\n currentProgress.status === BatchJobStatus.Completed ||\n currentProgress.status === BatchJobStatus.CompletedWithError ||\n currentProgress.status === BatchJobStatus.Failed\n );\n\n if (!jobHasCompleted) {\n timeoutIdRef.current = window.setTimeout(pollJob, POLLING_INTERVAL);\n return;\n }\n\n /**\n * When the job progress is 100%, we want to provide 2 seconds for the\n * progress bar animation to complete before navigating to the \"complete\"\n * view. Otherwise it's a little bit jarring.\n */\n window.setTimeout(() => {\n onCompleteJob();\n }, 2000);\n }\n\n function onPollError(xhr: Xhr): void {\n if (consecutiveErrorCount === MAX_CONSECUTIVE_ERROR_COUNT) {\n window.clearTimeout(timeoutIdRef.current);\n if (props.navLockId)\n navLock.unlock(props.navLockId);\n handleHttpError(xhr);\n }\n\n setConsecutiveErrorCount(currentVal => currentVal + 1);\n timeoutIdRef.current = window.setTimeout(pollJob, POLLING_INTERVAL);\n }\n\n function onCompleteJob(): void {\n if (props.navLockId)\n navLock.unlock(props.navLockId);\n\n const params: HashObject = { jobId: props.jobId };\n\n if (props.userType) {\n params.userType = props.userType;\n\n // Clear all user's in flight cache. This way any users updated in bulk actions will have up to date data.\n dispatch({\n type: Flight.Actions.INVALIDATE,\n keys: [ 'school:users', 'user:count', 'search:aggregation', 'search:users' ],\n request: null\n });\n }\n if (props.statusCompleteAppLink) {\n Core.AppLinkHelper.trigger({\n ...props.statusCompleteAppLink,\n params: params\n });\n return;\n }\n\n props.onStatusCompleted?.();\n }\n\n const hasNotStarted = !!(\n !progress ||\n progress.status === BatchJobStatus.Submitted ||\n progress.status === BatchJobStatus.Queued ||\n progress.status === BatchJobStatus.Pending\n );\n\n if (hasNotStarted || progress.totalItems === 0)\n return <WizardSubmitted actionName={props.actionName} actionVerb={props.actionVerb} />;\n\n return (\n <WizardInProgress\n totalItems={progress.totalItems}\n totalItemsComplete={progress.processedItems}\n userType={props.userType}\n objectType={props.objectType}\n actionName={props.actionName}\n actionVerb={props.actionVerb}\n progressVerbPhrase={props.progressVerbPhrase}\n />\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 React from 'react';\nimport { useDispatch } from 'react-redux';\n\nimport { Xhr } from 'libs/common/backbone/interfaces';\nimport { Flight } from 'libs/common/flight';\nimport { useViewModel } from 'libs/common/react/hooks/UseViewModel';\n\nimport { BULK_USER_ACTIONS_NAV_LOCK_ID, BulkUserActionsWizardLayout } 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 { BulkUserActionsHelper } from 'libs/shared/apps/user-manager/utils/BulkUserActionsHelper';\nimport { WizardPolling } from 'libs/shared/components/wizard/status/polling/WizardPolling';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { BatchJobProgress } from 'libs/shared/interfaces';\n\nimport { ViewModelKeys } from 'shared/constants/LiteViewModels';\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\nexport function BulkUserActionsStatusPollingView(props: UserWizardStatusParams): JSX.Element {\n const { users, count } = useBulkActionsUsersWrapper(props.userType);\n const [viewModel] = useViewModel<BulkUserActionsViewModel>(ViewModelKeys.BULK_USER_ACTIONS);\n\n const dispatch = useDispatch();\n const appLinks = getUserManagerAppLinks(props.userType);\n\n function pollJob(onSuccess: (progress: BatchJobProgress) => void, onError: (xhr: Xhr) => void): void {\n Flight.fetch(dispatch, JobRequests.getJobProgress(props.jobId, onSuccess, onError));\n }\n\n return (\n <BulkUserActionsWizardLayout\n appLinks={appLinks}\n userType={props.userType}\n users={users}\n currentStep='status'\n userCount={count}\n disableAppLinks\n loaded\n >\n <WizardPolling\n jobId={props.jobId}\n pollJob={pollJob}\n objectType={MasterType.User}\n userType={props.userType}\n statusCompleteAppLink={appLinks.bulkActionsStatus.complete}\n actionName={BulkUserActionsHelper.mapSubActionToDisplayName(viewModel?.subAction)}\n navLockId={BULK_USER_ACTIONS_NAV_LOCK_ID}\n actionVerb={BulkUserActionsHelper.mapSubActionToVerb(viewModel?.subAction)}\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};","\"use client\";\n\nimport classNames from 'classnames';\nimport * as React from 'react';\nimport { cloneElement } from 'react';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport { map } from './ElementChildren';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst ROUND_PRECISION = 1000;\n\n/**\n * Validate that children, if any, are instances of `ProgressBar`.\n */\nfunction onlyProgressBar(props, propName, componentName) {\n const children = props[propName];\n if (!children) {\n return null;\n }\n let error = null;\n React.Children.forEach(children, child => {\n if (error) {\n return;\n }\n\n /**\n * Compare types in a way that works with libraries that patch and proxy\n * components like react-hot-loader.\n *\n * see https://github.com/gaearon/react-hot-loader#checking-element-types\n */\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n const element = /*#__PURE__*/_jsx(ProgressBar, {});\n if (child.type === element.type) return;\n const childType = child.type;\n const childIdentifier = /*#__PURE__*/React.isValidElement(child) ? childType.displayName || childType.name || childType : child;\n error = new Error(`Children of ${componentName} can contain only ProgressBar ` + `components. Found ${childIdentifier}.`);\n });\n return error;\n}\nfunction getPercentage(now, min, max) {\n const percentage = (now - min) / (max - min) * 100;\n return Math.round(percentage * ROUND_PRECISION) / ROUND_PRECISION;\n}\nfunction renderProgressBar({\n min,\n now,\n max,\n label,\n visuallyHidden,\n striped,\n animated,\n className,\n style,\n variant,\n bsPrefix,\n ...props\n}, ref) {\n return /*#__PURE__*/_jsx(\"div\", {\n ref: ref,\n ...props,\n role: \"progressbar\",\n className: classNames(className, `${bsPrefix}-bar`, {\n [`bg-${variant}`]: variant,\n [`${bsPrefix}-bar-animated`]: animated,\n [`${bsPrefix}-bar-striped`]: animated || striped\n }),\n style: {\n width: `${getPercentage(now, min, max)}%`,\n ...style\n },\n \"aria-valuenow\": now,\n \"aria-valuemin\": min,\n \"aria-valuemax\": max,\n children: visuallyHidden ? /*#__PURE__*/_jsx(\"span\", {\n className: \"visually-hidden\",\n children: label\n }) : label\n });\n}\nconst ProgressBar = /*#__PURE__*/React.forwardRef(({\n isChild = false,\n ...rest\n}, ref) => {\n const props = {\n min: 0,\n max: 100,\n animated: false,\n visuallyHidden: false,\n striped: false,\n ...rest\n };\n props.bsPrefix = useBootstrapPrefix(props.bsPrefix, 'progress');\n if (isChild) {\n return renderProgressBar(props, ref);\n }\n const {\n min,\n now,\n max,\n label,\n visuallyHidden,\n striped,\n animated,\n bsPrefix,\n variant,\n className,\n children,\n ...wrapperProps\n } = props;\n return /*#__PURE__*/_jsx(\"div\", {\n ref: ref,\n ...wrapperProps,\n className: classNames(className, bsPrefix),\n children: children ? map(children, child => /*#__PURE__*/cloneElement(child, {\n isChild: true\n })) : renderProgressBar({\n min,\n now,\n max,\n label,\n visuallyHidden,\n striped,\n animated,\n bsPrefix,\n variant\n }, ref)\n });\n});\nProgressBar.displayName = 'ProgressBar';\nexport default ProgressBar;"],"names":["namespace","WizardInProgress","props","percentage","Math","floor","totalItemsComplete","totalItems","className","Text","phrase","options","actionName","SvgContainer","svgName","actionVerb","progressVerbPhrase","objectType","MasterType","userType","UserGroup","totalComplete","total","smartCount","ProgressBar","variant","now","WizardSubmitted","POLLING_INTERVAL","MAX_CONSECUTIVE_ERROR_COUNT","WizardPolling","progress","setProgress","consecutiveErrorCount","setConsecutiveErrorCount","timeoutIdRef","navLock","useNavLock","dispatch","pollJob","onPollSuccess","onPollError","currentProgress","status","BatchJobStatus","window","setTimeout","navLockId","unlock","params","jobId","type","keys","request","statusCompleteAppLink","onStatusCompleted","onCompleteJob","current","xhr","clearTimeout","currentVal","processedItems","defaultErrors","notFound","forbidden","rating","yearLevel","region","privacy","badRequest","handleHttpError","info","customErrorMap","ignoreMap","statusCode","errorMap","BulkUserActionsStatusPollingView","users","count","viewModel","appLinks","currentStep","userCount","disableAppLinks","loaded","onSuccess","onError","bulkActionsStatus","complete","subAction","JobRequests","createJob","data","success","error","url","key","getJobs","queryParams","bulkActionTypes","userTypes","cursor","sort","order","bulkActionType","Array","isArray","dataType","join","getJob","id","getJobProgress","invalidationKeys","getJobResults","getYearGroupRolloverStatus","customerId","sendJobReports","ids","jobIds","getJobSummary","ROUND_PRECISION","getPercentage","min","max","round","renderProgressBar","label","visuallyHidden","striped","animated","style","bsPrefix","ref","role","width","children","isChild","rest","wrapperProps","child","cloneElement","displayName"],"sourceRoot":""}
1
+ {"version":3,"file":"scripts/8466-cea62163e8-lite.chunk.js","mappings":"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","sources":["file:///app/packages/libs/shared/src/components/wizard/status/statuses/in-progress/WizardInProgress.tsx","file:///app/packages/libs/shared/src/components/wizard/status/statuses/submitted/WizardSubmitted.tsx","file:///app/packages/libs/shared/src/components/wizard/status/polling/WizardPolling.tsx","file:///app/packages/libs/shared/src/errors/handlers/HttpErrorHandlers.ts","file:///app/packages/projects/lite/src/apps/user-manager/views/wizard/status/polling/BulkUserActionsStatusPollingView.tsx","file:///app/packages/projects/lite/src/shared/flight-requests/JobRequests.ts","file:///app/node_modules/react-bootstrap/esm/ProgressBar.js"],"sourcesContent":["import React from 'react';\nimport { ProgressBar } from 'react-bootstrap';\n\nimport { SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { UserGroup } from 'libs/shared/enums/UserGroup';\nimport { WizardActionVerb } from 'libs/shared/interfaces';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nconst namespace = 'userManager.wizardInProgress';\n\ninterface WizardInProgressProps {\n userType?: UserGroup;\n totalItems: number;\n totalItemsComplete: number;\n actionName: string;\n actionVerb: WizardActionVerb;\n objectType: MasterType;\n progressVerbPhrase?: string;\n}\n\nexport function WizardInProgress(props: WizardInProgressProps): JSX.Element {\n const percentage = Math.floor(props.totalItemsComplete / props.totalItems * 100) || 0;\n\n function renderProgressText() {\n if (props.objectType === MasterType.User && props.userType) {\n return (\n <Text\n namespace={namespace}\n phrase={props.userType === UserGroup.Learner ? 'progressStudents' : 'progressStaff'}\n options={{ totalComplete: props.totalItemsComplete, total: props.totalItems, smartCount: props.totalItems }}\n />\n );\n }\n\n if (props.objectType === MasterType.Video) {\n return (\n <Text\n namespace={namespace}\n phrase='progressVideos'\n options={{ totalComplete: props.totalItemsComplete, total: props.totalItems, smartCount: props.totalItems }}\n />\n );\n }\n\n return (\n <Text\n namespace={namespace}\n phrase='progressItems'\n options={{ totalComplete: props.totalItemsComplete, total: props.totalItems, smartCount: props.totalItems }}\n />\n );\n }\n\n return (\n <div>\n <div className='d-flex align-items-center mb-2'>\n <h2 className='h5 mb-0'>\n <Text namespace={namespace} phrase='heading' options={{ percentage, actionName: props.actionName }} />\n </h2>\n <SvgContainer svgName={cvSvgLibrary.CircleCheck} />\n </div>\n\n <p>\n <Text namespace={namespace} phrase={`info${props.actionVerb}`} />\n </p>\n\n <p className='mb-1'>\n <span className='text-info'>\n {props.progressVerbPhrase ? (\n <span>{props.progressVerbPhrase}</span>\n ) : (\n <Text namespace={namespace} phrase={`progressVerb${props.actionVerb}`} />\n )}\n </span>\n &nbsp;\n {renderProgressText()}\n </p>\n <ProgressBar variant='info' now={percentage} />\n </div>\n );\n}","import React from 'react';\nimport { ProgressBar } from 'react-bootstrap';\n\nimport { SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { WizardActionVerb } from 'libs/shared/interfaces';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nconst namespace = 'userManager.wizardSubmitted';\n\ninterface WizardSubmittedProps {\n actionName?: string;\n actionVerb: WizardActionVerb;\n}\n\nexport function WizardSubmitted(props: WizardSubmittedProps): JSX.Element {\n return (\n <div>\n <div className='d-flex align-items-center mb-2'>\n <h2 className='h5 mb-0'>\n {props.actionName\n ? <Text namespace={namespace} phrase='heading' options={{ actionName: props.actionName }} />\n : <Text namespace={namespace} phrase='headingGeneric' />\n }\n </h2>\n <SvgContainer svgName={cvSvgLibrary.CircleCheck} />\n </div>\n\n <p>\n <Text namespace={namespace} phrase={`info${props.actionVerb}`} />\n </p>\n\n <p className='mb-1 text-info'>\n <Text namespace={namespace} phrase='preparing' />\n </p>\n <ProgressBar variant='info' now={0} />\n </div>\n );\n}","import React from 'react';\nimport { useDispatch } from 'react-redux';\n\nimport { Xhr } from 'libs/common/backbone/interfaces';\nimport { Core } from 'libs/common/core';\nimport { Flight } from 'libs/common/flight';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { WizardInProgress } from 'libs/shared/components/wizard/status/statuses/in-progress/WizardInProgress';\nimport { WizardSubmitted } from 'libs/shared/components/wizard/status/statuses/submitted/WizardSubmitted';\nimport { BatchJobStatus } from 'libs/shared/enums/BatchJobStatus';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { UserGroup } from 'libs/shared/enums/UserGroup';\nimport { handleHttpError } from 'libs/shared/errors/handlers/HttpErrorHandlers';\nimport { useNavLock } from 'libs/shared/hooks/useNavLock';\nimport { BatchJobProgress, WizardActionVerb } from 'libs/shared/interfaces';\n\nconst POLLING_INTERVAL = 2000;\nconst MAX_CONSECUTIVE_ERROR_COUNT = 3; // If the polling endpoint errors 3 times in a row, we will cancel\n\nexport type WizardPollJobFn = (onSuccess: (progress: BatchJobProgress) => void, onError: (xhr: Xhr) => void) => void;\n\ninterface WizardPollingProps {\n jobId: string;\n userType?: UserGroup;\n statusCompleteAppLink?: Core.AppLink;\n onStatusCompleted?: () => void;\n pollJob: WizardPollJobFn;\n actionName: string;\n navLockId?: string;\n actionVerb: WizardActionVerb;\n objectType?: MasterType;\n progressVerbPhrase?: string;\n}\n\nexport function WizardPolling(props: WizardPollingProps): JSX.Element {\n const [ progress, setProgress ] = React.useState<BatchJobProgress>(null);\n const [ consecutiveErrorCount, setConsecutiveErrorCount ] = React.useState(0);\n\n const timeoutIdRef = React.useRef<number>();\n\n const navLock = useNavLock();\n const dispatch = useDispatch();\n\n // Kick off polling for the running batch job. Polling will be stopped if user navigates away.\n React.useEffect(() => {\n pollJob();\n\n return () => {\n if (!timeoutIdRef.current)\n return;\n\n window.clearTimeout(timeoutIdRef.current);\n };\n }, []);\n\n function pollJob(): void {\n props.pollJob(onPollSuccess, onPollError);\n }\n\n function onPollSuccess(currentProgress: BatchJobProgress): void {\n setProgress(currentProgress);\n\n // Job is considered completed if status matches any of the following values\n const jobHasCompleted = (\n currentProgress.status === BatchJobStatus.Completed ||\n currentProgress.status === BatchJobStatus.CompletedWithError ||\n currentProgress.status === BatchJobStatus.Failed\n );\n\n if (!jobHasCompleted) {\n timeoutIdRef.current = window.setTimeout(pollJob, POLLING_INTERVAL);\n return;\n }\n\n /**\n * When the job progress is 100%, we want to provide 2 seconds for the\n * progress bar animation to complete before navigating to the \"complete\"\n * view. Otherwise it's a little bit jarring.\n */\n window.setTimeout(() => {\n onCompleteJob();\n }, 2000);\n }\n\n function onPollError(xhr: Xhr): void {\n if (consecutiveErrorCount === MAX_CONSECUTIVE_ERROR_COUNT) {\n window.clearTimeout(timeoutIdRef.current);\n if (props.navLockId)\n navLock.unlock(props.navLockId);\n handleHttpError(xhr);\n }\n\n setConsecutiveErrorCount(currentVal => currentVal + 1);\n timeoutIdRef.current = window.setTimeout(pollJob, POLLING_INTERVAL);\n }\n\n function onCompleteJob(): void {\n if (props.navLockId)\n navLock.unlock(props.navLockId);\n\n const params: HashObject = { jobId: props.jobId };\n\n if (props.userType) {\n params.userType = props.userType;\n\n // Clear all user's in flight cache. This way any users updated in bulk actions will have up to date data.\n dispatch({\n type: Flight.Actions.INVALIDATE,\n keys: [ 'school:users', 'user:count', 'search:aggregation', 'search:users' ],\n request: null\n });\n }\n if (props.statusCompleteAppLink) {\n Core.AppLinkHelper.trigger({\n ...props.statusCompleteAppLink,\n params: params\n });\n return;\n }\n\n props.onStatusCompleted?.();\n }\n\n const hasNotStarted = !!(\n !progress ||\n progress.status === BatchJobStatus.Submitted ||\n progress.status === BatchJobStatus.Queued ||\n progress.status === BatchJobStatus.Pending\n );\n\n if (hasNotStarted || progress.totalItems === 0)\n return <WizardSubmitted actionName={props.actionName} actionVerb={props.actionVerb} />;\n\n return (\n <WizardInProgress\n totalItems={progress.totalItems}\n totalItemsComplete={progress.processedItems}\n userType={props.userType}\n objectType={props.objectType}\n actionName={props.actionName}\n actionVerb={props.actionVerb}\n progressVerbPhrase={props.progressVerbPhrase}\n />\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 React from 'react';\nimport { useDispatch } from 'react-redux';\n\nimport { Xhr } from 'libs/common/backbone/interfaces';\nimport { Flight } from 'libs/common/flight';\nimport { useViewModel } from 'libs/common/react/hooks/UseViewModel';\n\nimport { BULK_USER_ACTIONS_NAV_LOCK_ID, BulkUserActionsWizardLayout } 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 { BulkUserActionsHelper } from 'libs/shared/apps/user-manager/utils/BulkUserActionsHelper';\nimport { WizardPolling } from 'libs/shared/components/wizard/status/polling/WizardPolling';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { BatchJobProgress } from 'libs/shared/interfaces';\n\nimport { ViewModelKeys } from 'shared/constants/LiteViewModels';\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\nexport function BulkUserActionsStatusPollingView(props: UserWizardStatusParams): JSX.Element {\n const { users, count } = useBulkActionsUsersWrapper(props.userType);\n const [viewModel] = useViewModel<BulkUserActionsViewModel>(ViewModelKeys.BULK_USER_ACTIONS);\n\n const dispatch = useDispatch();\n const appLinks = getUserManagerAppLinks(props.userType);\n\n function pollJob(onSuccess: (progress: BatchJobProgress) => void, onError: (xhr: Xhr) => void): void {\n Flight.fetch(dispatch, JobRequests.getJobProgress(props.jobId, onSuccess, onError));\n }\n\n return (\n <BulkUserActionsWizardLayout\n appLinks={appLinks}\n userType={props.userType}\n users={users}\n currentStep='status'\n userCount={count}\n disableAppLinks\n loaded\n >\n <WizardPolling\n jobId={props.jobId}\n pollJob={pollJob}\n objectType={MasterType.User}\n userType={props.userType}\n statusCompleteAppLink={appLinks.bulkActionsStatus.complete}\n actionName={BulkUserActionsHelper.mapSubActionToDisplayName(viewModel?.subAction)}\n navLockId={BULK_USER_ACTIONS_NAV_LOCK_ID}\n actionVerb={BulkUserActionsHelper.mapSubActionToVerb(viewModel?.subAction)}\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};","\"use client\";\n\nimport classNames from 'classnames';\nimport * as React from 'react';\nimport { cloneElement } from 'react';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport { map } from './ElementChildren';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst ROUND_PRECISION = 1000;\n\n/**\n * Validate that children, if any, are instances of `ProgressBar`.\n */\nfunction onlyProgressBar(props, propName, componentName) {\n const children = props[propName];\n if (!children) {\n return null;\n }\n let error = null;\n React.Children.forEach(children, child => {\n if (error) {\n return;\n }\n\n /**\n * Compare types in a way that works with libraries that patch and proxy\n * components like react-hot-loader.\n *\n * see https://github.com/gaearon/react-hot-loader#checking-element-types\n */\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n const element = /*#__PURE__*/_jsx(ProgressBar, {});\n if (child.type === element.type) return;\n const childType = child.type;\n const childIdentifier = /*#__PURE__*/React.isValidElement(child) ? childType.displayName || childType.name || childType : child;\n error = new Error(`Children of ${componentName} can contain only ProgressBar ` + `components. Found ${childIdentifier}.`);\n });\n return error;\n}\nfunction getPercentage(now, min, max) {\n const percentage = (now - min) / (max - min) * 100;\n return Math.round(percentage * ROUND_PRECISION) / ROUND_PRECISION;\n}\nfunction renderProgressBar({\n min,\n now,\n max,\n label,\n visuallyHidden,\n striped,\n animated,\n className,\n style,\n variant,\n bsPrefix,\n ...props\n}, ref) {\n return /*#__PURE__*/_jsx(\"div\", {\n ref: ref,\n ...props,\n role: \"progressbar\",\n className: classNames(className, `${bsPrefix}-bar`, {\n [`bg-${variant}`]: variant,\n [`${bsPrefix}-bar-animated`]: animated,\n [`${bsPrefix}-bar-striped`]: animated || striped\n }),\n style: {\n width: `${getPercentage(now, min, max)}%`,\n ...style\n },\n \"aria-valuenow\": now,\n \"aria-valuemin\": min,\n \"aria-valuemax\": max,\n children: visuallyHidden ? /*#__PURE__*/_jsx(\"span\", {\n className: \"visually-hidden\",\n children: label\n }) : label\n });\n}\nconst ProgressBar = /*#__PURE__*/React.forwardRef(({\n isChild = false,\n ...rest\n}, ref) => {\n const props = {\n min: 0,\n max: 100,\n animated: false,\n visuallyHidden: false,\n striped: false,\n ...rest\n };\n props.bsPrefix = useBootstrapPrefix(props.bsPrefix, 'progress');\n if (isChild) {\n return renderProgressBar(props, ref);\n }\n const {\n min,\n now,\n max,\n label,\n visuallyHidden,\n striped,\n animated,\n bsPrefix,\n variant,\n className,\n children,\n ...wrapperProps\n } = props;\n return /*#__PURE__*/_jsx(\"div\", {\n ref: ref,\n ...wrapperProps,\n className: classNames(className, bsPrefix),\n children: children ? map(children, child => /*#__PURE__*/cloneElement(child, {\n isChild: true\n })) : renderProgressBar({\n min,\n now,\n max,\n label,\n visuallyHidden,\n striped,\n animated,\n bsPrefix,\n variant\n }, ref)\n });\n});\nProgressBar.displayName = 'ProgressBar';\nexport default ProgressBar;"],"names":["namespace","WizardInProgress","props","percentage","Math","floor","totalItemsComplete","totalItems","className","Text","phrase","options","actionName","SvgContainer","svgName","actionVerb","progressVerbPhrase","objectType","MasterType","userType","UserGroup","totalComplete","total","smartCount","ProgressBar","variant","now","WizardSubmitted","POLLING_INTERVAL","MAX_CONSECUTIVE_ERROR_COUNT","WizardPolling","progress","setProgress","consecutiveErrorCount","setConsecutiveErrorCount","timeoutIdRef","navLock","useNavLock","dispatch","pollJob","onPollSuccess","onPollError","currentProgress","status","BatchJobStatus","window","setTimeout","navLockId","unlock","params","jobId","type","keys","request","statusCompleteAppLink","onStatusCompleted","onCompleteJob","current","xhr","clearTimeout","currentVal","processedItems","defaultErrors","notFound","forbidden","rating","yearLevel","region","privacy","badRequest","handleHttpError","info","customErrorMap","ignoreMap","statusCode","errorMap","BulkUserActionsStatusPollingView","users","count","viewModel","appLinks","currentStep","userCount","disableAppLinks","loaded","onSuccess","onError","bulkActionsStatus","complete","subAction","JobRequests","createJob","data","success","error","url","key","getJobs","queryParams","bulkActionTypes","userTypes","cursor","sort","order","bulkActionType","Array","isArray","dataType","join","getJob","id","getJobProgress","invalidationKeys","getJobResults","getYearGroupRolloverStatus","customerId","sendJobReports","ids","jobIds","getJobSummary","ROUND_PRECISION","getPercentage","min","max","round","renderProgressBar","label","visuallyHidden","striped","animated","style","bsPrefix","ref","role","width","children","isChild","rest","wrapperProps","child","cloneElement","displayName"],"sourceRoot":""}
@@ -1,3 +1,3 @@
1
- /*! For license information please see 8681-41edd08b98-lite.chunk.js.LICENSE.txt */
1
+ /*! For license information please see 8681-49db3daae6-lite.chunk.js.LICENSE.txt */
2
2
  "use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[8681],{17464:(e,t,r)=>{r.d(t,{c:()=>o});var n=r(32735),a=r(7121);function o(e){var t="d-flex align-items-center badge-list ".concat(a.Z.minHeight);return e.className&&(t+=" ".concat(e.className)),n.createElement("div",{className:t},e.children)}},84678:(e,t,r)=>{r.d(t,{L:()=>o});var n=r(32735),a=r(18559);function o(e){return n.createElement(a.C,{type:a.g.Restriction,data:{restrictions:e.restrictions,yearGroups:e.yearGroups},inline:!0})}},21491:(e,t,r)=>{r.d(t,{I:()=>i});var n=r(99940),a=r(97395),o=r(62803),i={getRestrictions:function(e){return{key:"restrictions:".concat(e),url:a._.urlBuilder("{gateway}/v1/objects/restrictions",{id:e})}},addRestriction:function(e){return{type:n.k.POST,key:"restrictions:".concat(e.objectTypeId,":").concat(e.objectId,":add"),url:"{gateway}/v1/restrictions",data:[e],invalidationKeys:["restrictions"]}},deleteRestrictions:function(e){return{url:a._.urlBuilder("{gateway}/v1/restrictions",{objectId:e}),key:"restrictions:delete",type:n.k.DELETE,invalidationKeys:["restrictions"]}},getRestrictedObjects:function(e,t){var r={type:e,"query.video":o.v.VIDEO_COLLECTION,"query.interactive":o.v.INTERACTIVE_COLLECTION,"query.clip":o.v.CLIP_COLLECTION};return t&&(r.cursor=t),{url:a._.urlBuilder("{gateway}/v1/restrictions/objects",r),key:"restrictions:objects:".concat(e.sort().join(","),":").concat(t)}},approveAll:function(){return{url:"{gateway}/v1/library-reviews/restrictions",key:"restrictions:approve:all",type:n.k.DELETE}}}},48681:(e,t,r)=>{r.r(t),r.d(t,{ManageAccessPopupView:()=>q});var n=r(32735),a=r(60139),o=r(23481),i=r(20354),c=r(36848),u=r(17464),l=r(11607),s=r(9111),f=r(13876),p=r(83345),d=r(84678),v=r(4594),h=r(5345),y=r(1666),m=r(31949),g=r(69883),b=r(31908),E=r(28329),w=r(35223),S=r(83914),x=r(76177),I=r(49439),N=r(18559);const k={firstItem:"RcBIB",lastItem:"_YfTU",opacity100:"QV8wx",opacity50:"WoP6Y",yearGroupButton:"DOT14"};var L="shared.verticalYearGroupSelector";function O(e){return e.isDisabled?n.createElement("div",{className:"text-secondary"},n.createElement(p.x,{namespace:L,phrase:"isDisabled"})," ",n.createElement("div",{className:"d-inline ".concat(k.opacity50)},n.createElement(N.C,{data:e.contentRating,type:N.g.Rating,inline:!0}))," ",n.createElement(p.x,{namespace:L,phrase:"ratingRestricted"})):e.isSelected?n.createElement(p.x,{namespace:L,phrase:"isSelected"}):n.createElement(p.x,{namespace:L,phrase:"canAccess"})}function j(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r<t;r++)n[r]=e[r];return n}var A=o.T.encloseNamespace("shared.verticalYearGroupSelector");function G(e){var t,r,a=(t=(0,I.X)({delay:1}),r=2,function(e){if(Array.isArray(e))return e}(t)||function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var n,a,o,i,c=[],u=!0,l=!1;try{if(o=(r=r.call(e)).next,0===t){if(Object(r)!==r)return;u=!1}else for(;!(u=(n=o.call(r)).done)&&(c.push(n.value),c.length!==t);u=!0);}catch(e){l=!0,a=e}finally{try{if(!u&&null!=r.return&&(i=r.return(),Object(i)!==i))return}finally{if(l)throw a}}return c}}(t,r)||function(e,t){if(e){if("string"==typeof e)return j(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)?j(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.")}()),o=a[0],i=a[1];return n.useEffect((function(){e.isDisabled||e.onHover(i)}),[i]),n.createElement("div",{className:"row align-items-center mx-auto"},n.createElement("div",{className:"col-auto g-0"},n.createElement(x.u,{title:e.isDisabled?A("tooltip"):"",placement:"left",spanHack:!0},n.createElement(l.L,{ref:o,onClick:e.onClick,className:"btn px-2 py-1 border ".concat(k.yearGroupButton," ").concat(e.getButtonClass())},n.createElement(S.x,{size:S.S.Standard,svgName:e.getButtonSvg()})))),n.createElement("div",{className:"col-3"},e.item.name),n.createElement("div",{className:"col"},n.createElement(O,{contentRating:e.contentRating,isDisabled:e.isDisabled,isSelected:e.isSelected})))}function T(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r<t;r++)n[r]=e[r];return n}var C=o.T.encloseNamespace("shared.verticalYearGroupSelector");function _(e){var t,r,a=(t=n.useState(),r=2,function(e){if(Array.isArray(e))return e}(t)||function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var n,a,o,i,c=[],u=!0,l=!1;try{if(o=(r=r.call(e)).next,0===t){if(Object(r)!==r)return;u=!1}else for(;!(u=(n=o.call(r)).done)&&(c.push(n.value),c.length!==t);u=!0);}catch(e){l=!0,a=e}finally{try{if(!u&&null!=r.return&&(i=r.return(),Object(i)!==i))return}finally{if(l)throw a}}return c}}(t,r)||function(e,t){if(e){if("string"==typeof e)return T(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)?T(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.")}()),o=a[0],i=a[1],c=(0,E.N)(o,20),u={name:C("staff"),value:Number.MAX_SAFE_INTEGER};function l(e,t){i(t?e:void 0)}function s(e){return!!c&&e<=c}function f(t){return!!e.selection&&t.value<=e.selection.value}function p(t){var r,n,a=null!==(r=e.yearGroups[t])&&void 0!==r?r:u;(null===(n=e.selection)||void 0===n?void 0:n.value)===a.value&&(a=t?e.yearGroups[t-1]:void 0),a&&d(a)&&(a=void 0),e.onSelect(a)}function d(t){return"rating"in t&&t.rating.value<e.contentRating.value}function v(t,r){var n=s(t),a=f(r),o=d(r),i=0===t,c=t===e.yearGroups.length,u="rounded-0 border-bottom-0";return!n||o||a||(u+=" hovering"),i&&(u="rounded-top border-bottom-0 ".concat(k.firstItem)),c&&(u="rounded-bottom ".concat(k.lastItem)),"".concat(u,a||o?" btn-dark":" btn-outline-dark")}function h(e,t){var r=s(e),n=f(t),a=d(t);return r||n||a?w.vn.Lock:w.vn.VisibleOn}return n.createElement("div",{className:"pb-2"},e.yearGroups.map((function(t,r){return n.createElement(G,{key:t.id,item:t,contentRating:e.contentRating,isActive:s(r),isSelected:f(t),onClick:function(){return p(r)},onHover:function(e){return l(r,e)},getButtonClass:function(){return v(r,t)},getButtonSvg:function(){return h(r,t)},isDisabled:d(t)})})),n.createElement(G,{item:u,contentRating:e.contentRating,isActive:s(e.yearGroups.length),isSelected:f(u),onClick:function(){return p(e.yearGroups.length)},onHover:function(t){return l(e.yearGroups.length,t)},getButtonClass:function(){return v(e.yearGroups.length,u)},getButtonSvg:function(){return h(e.yearGroups.length,u)},isDisabled:!1}))}var R=r(14070),P=r(97291),B=r(21491);function F(e){return F="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},F(e)}function D(){D=function(){return t};var e,t={},r=Object.prototype,n=r.hasOwnProperty,a=Object.defineProperty||function(e,t,r){e[t]=r.value},o="function"==typeof Symbol?Symbol:{},i=o.iterator||"@@iterator",c=o.asyncIterator||"@@asyncIterator",u=o.toStringTag||"@@toStringTag";function l(e,t,r){return Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}),e[t]}try{l({},"")}catch(e){l=function(e,t,r){return e[t]=r}}function s(e,t,r,n){var o=t&&t.prototype instanceof m?t:m,i=Object.create(o.prototype),c=new A(n||[]);return a(i,"_invoke",{value:k(e,r,c)}),i}function f(e,t,r){try{return{type:"normal",arg:e.call(t,r)}}catch(e){return{type:"throw",arg:e}}}t.wrap=s;var p="suspendedStart",d="suspendedYield",v="executing",h="completed",y={};function m(){}function g(){}function b(){}var E={};l(E,i,(function(){return this}));var w=Object.getPrototypeOf,S=w&&w(w(G([])));S&&S!==r&&n.call(S,i)&&(E=S);var x=b.prototype=m.prototype=Object.create(E);function I(e){["next","throw","return"].forEach((function(t){l(e,t,(function(e){return this._invoke(t,e)}))}))}function N(e,t){function r(a,o,i,c){var u=f(e[a],e,o);if("throw"!==u.type){var l=u.arg,s=l.value;return s&&"object"==F(s)&&n.call(s,"__await")?t.resolve(s.__await).then((function(e){r("next",e,i,c)}),(function(e){r("throw",e,i,c)})):t.resolve(s).then((function(e){l.value=e,i(l)}),(function(e){return r("throw",e,i,c)}))}c(u.arg)}var o;a(this,"_invoke",{value:function(e,n){function a(){return new t((function(t,a){r(e,n,t,a)}))}return o=o?o.then(a,a):a()}})}function k(t,r,n){var a=p;return function(o,i){if(a===v)throw Error("Generator is already running");if(a===h){if("throw"===o)throw i;return{value:e,done:!0}}for(n.method=o,n.arg=i;;){var c=n.delegate;if(c){var u=L(c,n);if(u){if(u===y)continue;return u}}if("next"===n.method)n.sent=n._sent=n.arg;else if("throw"===n.method){if(a===p)throw a=h,n.arg;n.dispatchException(n.arg)}else"return"===n.method&&n.abrupt("return",n.arg);a=v;var l=f(t,r,n);if("normal"===l.type){if(a=n.done?h:d,l.arg===y)continue;return{value:l.arg,done:n.done}}"throw"===l.type&&(a=h,n.method="throw",n.arg=l.arg)}}}function L(t,r){var n=r.method,a=t.iterator[n];if(a===e)return r.delegate=null,"throw"===n&&t.iterator.return&&(r.method="return",r.arg=e,L(t,r),"throw"===r.method)||"return"!==n&&(r.method="throw",r.arg=new TypeError("The iterator does not provide a '"+n+"' method")),y;var o=f(a,t.iterator,r.arg);if("throw"===o.type)return r.method="throw",r.arg=o.arg,r.delegate=null,y;var i=o.arg;return i?i.done?(r[t.resultName]=i.value,r.next=t.nextLoc,"return"!==r.method&&(r.method="next",r.arg=e),r.delegate=null,y):i:(r.method="throw",r.arg=new TypeError("iterator result is not an object"),r.delegate=null,y)}function O(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function j(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function A(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(O,this),this.reset(!0)}function G(t){if(t||""===t){var r=t[i];if(r)return r.call(t);if("function"==typeof t.next)return t;if(!isNaN(t.length)){var a=-1,o=function r(){for(;++a<t.length;)if(n.call(t,a))return r.value=t[a],r.done=!1,r;return r.value=e,r.done=!0,r};return o.next=o}}throw new TypeError(F(t)+" is not iterable")}return g.prototype=b,a(x,"constructor",{value:b,configurable:!0}),a(b,"constructor",{value:g,configurable:!0}),g.displayName=l(b,u,"GeneratorFunction"),t.isGeneratorFunction=function(e){var t="function"==typeof e&&e.constructor;return!!t&&(t===g||"GeneratorFunction"===(t.displayName||t.name))},t.mark=function(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,b):(e.__proto__=b,l(e,u,"GeneratorFunction")),e.prototype=Object.create(x),e},t.awrap=function(e){return{__await:e}},I(N.prototype),l(N.prototype,c,(function(){return this})),t.AsyncIterator=N,t.async=function(e,r,n,a,o){void 0===o&&(o=Promise);var i=new N(s(e,r,n,a),o);return t.isGeneratorFunction(r)?i:i.next().then((function(e){return e.done?e.value:i.next()}))},I(x),l(x,u,"Generator"),l(x,i,(function(){return this})),l(x,"toString",(function(){return"[object Generator]"})),t.keys=function(e){var t=Object(e),r=[];for(var n in t)r.push(n);return r.reverse(),function e(){for(;r.length;){var n=r.pop();if(n in t)return e.value=n,e.done=!1,e}return e.done=!0,e}},t.values=G,A.prototype={constructor:A,reset:function(t){if(this.prev=0,this.next=0,this.sent=this._sent=e,this.done=!1,this.delegate=null,this.method="next",this.arg=e,this.tryEntries.forEach(j),!t)for(var r in this)"t"===r.charAt(0)&&n.call(this,r)&&!isNaN(+r.slice(1))&&(this[r]=e)},stop:function(){this.done=!0;var e=this.tryEntries[0].completion;if("throw"===e.type)throw e.arg;return this.rval},dispatchException:function(t){if(this.done)throw t;var r=this;function a(n,a){return c.type="throw",c.arg=t,r.next=n,a&&(r.method="next",r.arg=e),!!a}for(var o=this.tryEntries.length-1;o>=0;--o){var i=this.tryEntries[o],c=i.completion;if("root"===i.tryLoc)return a("end");if(i.tryLoc<=this.prev){var u=n.call(i,"catchLoc"),l=n.call(i,"finallyLoc");if(u&&l){if(this.prev<i.catchLoc)return a(i.catchLoc,!0);if(this.prev<i.finallyLoc)return a(i.finallyLoc)}else if(u){if(this.prev<i.catchLoc)return a(i.catchLoc,!0)}else{if(!l)throw Error("try statement without catch or finally");if(this.prev<i.finallyLoc)return a(i.finallyLoc)}}}},abrupt:function(e,t){for(var r=this.tryEntries.length-1;r>=0;--r){var a=this.tryEntries[r];if(a.tryLoc<=this.prev&&n.call(a,"finallyLoc")&&this.prev<a.finallyLoc){var o=a;break}}o&&("break"===e||"continue"===e)&&o.tryLoc<=t&&t<=o.finallyLoc&&(o=null);var i=o?o.completion:{};return i.type=e,i.arg=t,o?(this.method="next",this.next=o.finallyLoc,y):this.complete(i)},complete:function(e,t){if("throw"===e.type)throw e.arg;return"break"===e.type||"continue"===e.type?this.next=e.arg:"return"===e.type?(this.rval=this.arg=e.arg,this.method="return",this.next="end"):"normal"===e.type&&t&&(this.next=t),y},finish:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var r=this.tryEntries[t];if(r.finallyLoc===e)return this.complete(r.completion,r.afterLoc),j(r),y}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var r=this.tryEntries[t];if(r.tryLoc===e){var n=r.completion;if("throw"===n.type){var a=n.arg;j(r)}return a}}throw Error("illegal catch attempt")},delegateYield:function(t,r,n){return this.delegate={iterator:G(t),resultName:r,nextLoc:n},"next"===this.method&&(this.arg=e),y}},t}function M(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var n,a,o,i,c=[],u=!0,l=!1;try{if(o=(r=r.call(e)).next,0===t){if(Object(r)!==r)return;u=!1}else for(;!(u=(n=o.call(r)).done)&&(c.push(n.value),c.length!==t);u=!0);}catch(e){l=!0,a=e}finally{try{if(!u&&null!=r.return&&(i=r.return(),Object(i)!==i))return}finally{if(l)throw a}}return c}}(e,t)||function(e,t){if(e){if("string"==typeof e)return U(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)?U(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 U(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r<t;r++)n[r]=e[r];return n}var V=function(e,t,r,n){return new(r||(r=Promise))((function(a,o){function i(e){try{u(n.next(e))}catch(e){o(e)}}function c(e){try{u(n.throw(e))}catch(e){o(e)}}function u(e){var t;e.done?a(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(i,c)}u((n=n.apply(e,t||[])).next())}))},Y="shared.manageAccessPopup",H=o.T.encloseNamespace(Y),X={application:P.O.SETTINGS,action:R.e.Settings.CONTENT_PERMISSIONS};function q(e){var t,r,o=i.a.useGetFetchAsync(),E=M(n.useState(),2),w=E[0],S=E[1],x=M(n.useState(),2),I=x[0],N=x[1],k=M(n.useState(!1),2),L=k[0],O=k[1],j=(0,g.Z)(),A=i.a.useBasicFetch(m.N.currentUser()),G=i.a.useBasicFetch((null===(t=A.data)||void 0===t?void 0:t.isAuthenticated)&&y.h.yearGroups(A.data.customerId)),T=b.M.getVideoRequest(e.objectId,e.objectTypeId),C=i.a.useBasicFetch(T),F=i.a.useBasicFetch(B.I.getRestrictions(e.objectId));n.useEffect((function(){var e;if(F.hasCompleted&&G.hasCompleted&&C.hasCompleted){var t=null===(e=F.data)||void 0===e?void 0:e.find((function(e){return e.type===h.c.User}));if(t){if(null===t.yearGroup){var r={name:null,value:Number.MAX_SAFE_INTEGER};return N(r),void S(r)}var n=G.data.find((function(e){return e.value===t.yearGroup}));n&&(N(n),S(n))}}}),[F.data,G.data,C.data]);var U=F.hasCompleted&&C.hasCompleted&&(!(null===(r=A.data)||void 0===r?void 0:r.isAuthenticated)||G.hasCompleted),q=U&&b.M.getRating(C.data),K=U&&G.data.filter((function(e){return e.rating.value<=q.value})),$=U&&G.data.filter((function(e){return!K.includes(e)&&e.value<=(null==I?void 0:I.value)}));return n.createElement(s.G,{title:H("title"),closePopup:e.closePopup,showLoadingSpinner:!U},U&&n.createElement(n.Fragment,null,n.createElement("div",{className:"mb-3"},n.createElement("p",null,n.createElement(c.F,{appLink:X,className:"info-link",onClick:e.closePopup},n.createElement(p.x,{namespace:Y,phrase:"infoStart"})),n.createElement(p.x,{namespace:Y,phrase:"infoEnd"})),n.createElement("p",null,n.createElement(p.x,{namespace:Y,phrase:"prompt"})),n.createElement(_,{selection:I,yearGroups:G.data,contentRating:q,onSelect:function(e){N(e)}}),I&&n.createElement(u.c,{className:"pt-1 mb-2"},n.createElement(d.L,{restrictions:{value:[{type:h.c.User,yearGroup:I.value===Number.MAX_SAFE_INTEGER?null:I.value}]},yearGroups:G.data})),!!I&&n.createElement(l.L,{onClick:function(){N(void 0)},className:"d-inline info-link"},n.createElement(p.x,{namespace:Y,phrase:"clear",options:{smartCount:null==$?void 0:$.length}}))),n.createElement(f.u,null,n.createElement(f.u.Cancel,{text:H("cancel"),onClick:e.closePopup}),n.createElement(f.u.Submit,{text:H("update"),onClick:function(){I?function(){V(this,void 0,void 0,D().mark((function t(){var r,n;return D().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return O(!0),(r=I.value)===Number.MAX_SAFE_INTEGER&&(r=null),n={targetId:A.data.customerId,targetTypeId:v.E.Customer,objectId:C.data.id,objectTypeId:C.data.typeId,ownerId:A.data.id,type:h.c.User,yearGroup:r},t.prev=4,t.next=7,o(B.I.addRestriction(n));case 7:return t.next=9,o(T);case 9:j.success({heading:a.R6.Success,type:a.NK.Success,message:H("success",{name:C.data.name}),appLink:{application:P.O.SETTINGS,action:R.e.Settings.VIDEO_RESTRICTIONS},appLinkText:H("successAppLink"),appLinkClassName:"info-link"}),e.closePopup(),t.next=16;break;case 13:t.prev=13,t.t0=t.catch(4),j.error(H("error"));case 16:O(!1);case 17:case"end":return t.stop()}}),t,null,[[4,13]])})))}():function(){V(this,void 0,void 0,D().mark((function t(){return D().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return O(!0),t.prev=1,t.next=4,o(B.I.deleteRestrictions(C.data.id));case 4:return t.next=6,o(T);case 6:j.success(H("removedSuccess")),e.closePopup(),t.next=13;break;case 10:t.prev=10,t.t0=t.catch(1),j.error(H("error"));case 13:O(!0);case 14:case"end":return t.stop()}}),t,null,[[1,10]])})))}()},variant:"dark",showSpinner:L,disabled:(null==w?void 0:w.value)===(null==I?void 0:I.value)}))))}}}]);
3
- //# sourceMappingURL=8681-41edd08b98-lite.chunk.js.map
3
+ //# sourceMappingURL=8681-49db3daae6-lite.chunk.js.map