@clickview/lite 0.48.0-rc.7 → 0.48.1

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 (135) hide show
  1. package/dist/bundles.json +1 -1
  2. package/dist/scripts/{1285-c322e093f9-lite.chunk.js → 1285-c3795fed18-lite.chunk.js} +2 -2
  3. package/dist/scripts/1285-c3795fed18-lite.chunk.js.map +1 -0
  4. package/dist/scripts/{170-1f815b85a1-lite.chunk.js → 170-2d124965b7-lite.chunk.js} +2 -2
  5. package/dist/scripts/{170-1f815b85a1-lite.chunk.js.map → 170-2d124965b7-lite.chunk.js.map} +1 -1
  6. package/dist/scripts/{1818-b9f9297d6d-lite.chunk.js → 1818-72409e60a9-lite.chunk.js} +1 -1
  7. package/dist/scripts/{1818-b9f9297d6d-lite.chunk.js.map → 1818-72409e60a9-lite.chunk.js.map} +1 -1
  8. package/dist/scripts/{1863-cf9df40052-lite.chunk.js → 1863-e7c4a6f342-lite.chunk.js} +1 -1
  9. package/dist/scripts/{1863-cf9df40052-lite.chunk.js.map → 1863-e7c4a6f342-lite.chunk.js.map} +1 -1
  10. package/dist/scripts/{1958-9889c1ad24-lite.chunk.js → 1958-5336189397-lite.chunk.js} +1 -1
  11. package/dist/scripts/{1958-9889c1ad24-lite.chunk.js.map → 1958-5336189397-lite.chunk.js.map} +1 -1
  12. package/dist/scripts/{2086-a247f6e201-lite.chunk.js → 2086-f7082703d0-lite.chunk.js} +1 -1
  13. package/dist/scripts/{2086-a247f6e201-lite.chunk.js.map → 2086-f7082703d0-lite.chunk.js.map} +1 -1
  14. package/dist/scripts/{2118-462a279c5a-lite.chunk.js → 2118-ec2a5f1e9b-lite.chunk.js} +2 -2
  15. package/dist/scripts/{2118-462a279c5a-lite.chunk.js.map → 2118-ec2a5f1e9b-lite.chunk.js.map} +1 -1
  16. package/dist/scripts/{2182-5c9db07f5b-lite.chunk.js → 2182-8e4d603a1b-lite.chunk.js} +1 -1
  17. package/dist/scripts/{2182-5c9db07f5b-lite.chunk.js.map → 2182-8e4d603a1b-lite.chunk.js.map} +1 -1
  18. package/dist/scripts/{2279-5e92c84310-lite.chunk.js → 2279-252e92e1d8-lite.chunk.js} +1 -1
  19. package/dist/scripts/{2279-5e92c84310-lite.chunk.js.map → 2279-252e92e1d8-lite.chunk.js.map} +1 -1
  20. package/dist/scripts/{2355-6cd89fa80d-lite.chunk.js → 2355-c588dc3ce2-lite.chunk.js} +1 -1
  21. package/dist/scripts/{2355-6cd89fa80d-lite.chunk.js.map → 2355-c588dc3ce2-lite.chunk.js.map} +1 -1
  22. package/dist/scripts/{2469-aa5bbbb17f-lite.chunk.js → 2469-46411b862e-lite.chunk.js} +1 -1
  23. package/dist/scripts/{2469-aa5bbbb17f-lite.chunk.js.map → 2469-46411b862e-lite.chunk.js.map} +1 -1
  24. package/dist/scripts/{2672-0fc559f1d1-lite.chunk.js → 2672-b01985cee8-lite.chunk.js} +1 -1
  25. package/dist/scripts/{2672-0fc559f1d1-lite.chunk.js.map → 2672-b01985cee8-lite.chunk.js.map} +1 -1
  26. package/dist/scripts/{2734-6c6d57d0f3-lite.chunk.js → 2734-6a7beb2ce2-lite.chunk.js} +1 -1
  27. package/dist/scripts/{2734-6c6d57d0f3-lite.chunk.js.map → 2734-6a7beb2ce2-lite.chunk.js.map} +1 -1
  28. package/dist/scripts/{287-ba98be7f21-lite.chunk.js → 287-3cbed16363-lite.chunk.js} +1 -1
  29. package/dist/scripts/{287-ba98be7f21-lite.chunk.js.map → 287-3cbed16363-lite.chunk.js.map} +1 -1
  30. package/dist/scripts/{2875-0e5f209e47-lite.chunk.js → 2875-aefd69a61f-lite.chunk.js} +1 -1
  31. package/dist/scripts/{2875-0e5f209e47-lite.chunk.js.map → 2875-aefd69a61f-lite.chunk.js.map} +1 -1
  32. package/dist/scripts/{3012-b5208d6981-lite.chunk.js → 3012-fd3eb34a14-lite.chunk.js} +2 -2
  33. package/dist/scripts/3012-fd3eb34a14-lite.chunk.js.map +1 -0
  34. package/dist/scripts/{3042-6650521d8b-lite.chunk.js → 3042-7c1b5e4ff7-lite.chunk.js} +1 -1
  35. package/dist/scripts/{3042-6650521d8b-lite.chunk.js.map → 3042-7c1b5e4ff7-lite.chunk.js.map} +1 -1
  36. package/dist/scripts/{3158-31baada6cc-lite.chunk.js → 3158-2147de456d-lite.chunk.js} +1 -1
  37. package/dist/scripts/{3158-31baada6cc-lite.chunk.js.map → 3158-2147de456d-lite.chunk.js.map} +1 -1
  38. package/dist/scripts/{3296-6d80e4dd56-lite.chunk.js → 3296-f3732c93d9-lite.chunk.js} +1 -1
  39. package/dist/scripts/{3296-6d80e4dd56-lite.chunk.js.map → 3296-f3732c93d9-lite.chunk.js.map} +1 -1
  40. package/dist/scripts/{3541-7ebd9db295-lite.chunk.js → 3541-15581012d3-lite.chunk.js} +1 -1
  41. package/dist/scripts/{3541-7ebd9db295-lite.chunk.js.map → 3541-15581012d3-lite.chunk.js.map} +1 -1
  42. package/dist/scripts/{3841-95df66e647-lite.chunk.js → 3841-bfae79638b-lite.chunk.js} +2 -2
  43. package/dist/scripts/{3841-95df66e647-lite.chunk.js.map → 3841-bfae79638b-lite.chunk.js.map} +1 -1
  44. package/dist/scripts/{3888-0bee9a9309-lite.chunk.js → 3888-87c1075a1b-lite.chunk.js} +1 -1
  45. package/dist/scripts/{3888-0bee9a9309-lite.chunk.js.map → 3888-87c1075a1b-lite.chunk.js.map} +1 -1
  46. package/dist/scripts/{4138-75a2bb69ab-lite.chunk.js → 4138-b9b03c9900-lite.chunk.js} +1 -1
  47. package/dist/scripts/{4138-75a2bb69ab-lite.chunk.js.map → 4138-b9b03c9900-lite.chunk.js.map} +1 -1
  48. package/dist/scripts/{4778-ebe369973c-lite.chunk.js → 4778-3c9f2b7f76-lite.chunk.js} +2 -2
  49. package/dist/scripts/{4778-ebe369973c-lite.chunk.js.map → 4778-3c9f2b7f76-lite.chunk.js.map} +1 -1
  50. package/dist/scripts/{4942-a27a31e79e-lite.chunk.js → 4942-acce40b333-lite.chunk.js} +2 -2
  51. package/dist/scripts/{4942-a27a31e79e-lite.chunk.js.map → 4942-acce40b333-lite.chunk.js.map} +1 -1
  52. package/dist/scripts/{5075-f8719465be-lite.chunk.js → 5075-53172298fe-lite.chunk.js} +1 -1
  53. package/dist/scripts/{5075-f8719465be-lite.chunk.js.map → 5075-53172298fe-lite.chunk.js.map} +1 -1
  54. package/dist/scripts/{5157-cd12e2e443-lite.chunk.js → 5157-47a0f5c088-lite.chunk.js} +1 -1
  55. package/dist/scripts/{5157-cd12e2e443-lite.chunk.js.map → 5157-47a0f5c088-lite.chunk.js.map} +1 -1
  56. package/dist/scripts/{5268-f4db3933ff-lite.chunk.js → 5268-9b7560f3b1-lite.chunk.js} +2 -2
  57. package/dist/scripts/{5268-f4db3933ff-lite.chunk.js.map → 5268-9b7560f3b1-lite.chunk.js.map} +1 -1
  58. package/dist/scripts/{5442-01ffd95162-lite.chunk.js → 5442-5ddfa2d951-lite.chunk.js} +1 -1
  59. package/dist/scripts/{5442-01ffd95162-lite.chunk.js.map → 5442-5ddfa2d951-lite.chunk.js.map} +1 -1
  60. package/dist/scripts/{5591-98cfe6c6e5-lite.chunk.js → 5591-119d72ede5-lite.chunk.js} +1 -1
  61. package/dist/scripts/{5591-98cfe6c6e5-lite.chunk.js.map → 5591-119d72ede5-lite.chunk.js.map} +1 -1
  62. package/dist/scripts/{5595-3763b14d77-lite.chunk.js → 5595-628d4f252c-lite.chunk.js} +2 -2
  63. package/dist/scripts/5595-628d4f252c-lite.chunk.js.map +1 -0
  64. package/dist/scripts/{6102-4d948a5e48-lite.chunk.js → 6102-6e5494bf09-lite.chunk.js} +3 -3
  65. package/dist/scripts/{6102-4d948a5e48-lite.chunk.js.map → 6102-6e5494bf09-lite.chunk.js.map} +1 -1
  66. package/dist/scripts/{6158-0c5e44f800-lite.chunk.js → 6158-d123add596-lite.chunk.js} +1 -1
  67. package/dist/scripts/{6158-0c5e44f800-lite.chunk.js.map → 6158-d123add596-lite.chunk.js.map} +1 -1
  68. package/dist/scripts/{6263-8957d50afe-lite.chunk.js → 6263-24e67b7df2-lite.chunk.js} +1 -1
  69. package/dist/scripts/{6263-8957d50afe-lite.chunk.js.map → 6263-24e67b7df2-lite.chunk.js.map} +1 -1
  70. package/dist/scripts/{6330-c66465bd6d-lite.chunk.js → 6330-9a2a5fc07e-lite.chunk.js} +1 -1
  71. package/dist/scripts/{6330-c66465bd6d-lite.chunk.js.map → 6330-9a2a5fc07e-lite.chunk.js.map} +1 -1
  72. package/dist/scripts/{671-003843ca84-lite.chunk.js → 671-5571f33165-lite.chunk.js} +1 -1
  73. package/dist/scripts/{671-003843ca84-lite.chunk.js.map → 671-5571f33165-lite.chunk.js.map} +1 -1
  74. package/dist/scripts/{7167-efe85af16e-lite.chunk.js → 7167-dc4c954c2b-lite.chunk.js} +1 -1
  75. package/dist/scripts/{7167-efe85af16e-lite.chunk.js.map → 7167-dc4c954c2b-lite.chunk.js.map} +1 -1
  76. package/dist/scripts/7293-58f4a7cf47-lite.chunk.js +2 -0
  77. package/dist/scripts/{7293-afd3349468-lite.chunk.js.map → 7293-58f4a7cf47-lite.chunk.js.map} +1 -1
  78. package/dist/scripts/{7301-f20e4bdb8f-lite.chunk.js → 7301-7c9342ef0c-lite.chunk.js} +1 -1
  79. package/dist/scripts/{7301-f20e4bdb8f-lite.chunk.js.map → 7301-7c9342ef0c-lite.chunk.js.map} +1 -1
  80. package/dist/scripts/{7708-ece31b78a9-lite.chunk.js → 7708-e91903481a-lite.chunk.js} +1 -1
  81. package/dist/scripts/{7708-ece31b78a9-lite.chunk.js.map → 7708-e91903481a-lite.chunk.js.map} +1 -1
  82. package/dist/scripts/{771-eb60e33941-lite.chunk.js → 771-5612b4ffc2-lite.chunk.js} +2 -2
  83. package/dist/scripts/{771-eb60e33941-lite.chunk.js.map → 771-5612b4ffc2-lite.chunk.js.map} +1 -1
  84. package/dist/scripts/{7855-37bcdd134e-lite.chunk.js → 7855-4b69540a71-lite.chunk.js} +1 -1
  85. package/dist/scripts/{7855-37bcdd134e-lite.chunk.js.map → 7855-4b69540a71-lite.chunk.js.map} +1 -1
  86. package/dist/scripts/{8024-66413cc05b-lite.chunk.js → 8024-765a4170c7-lite.chunk.js} +2 -2
  87. package/dist/scripts/{8024-66413cc05b-lite.chunk.js.map → 8024-765a4170c7-lite.chunk.js.map} +1 -1
  88. package/dist/scripts/{823-58d27c255b-lite.chunk.js → 823-33c5207c68-lite.chunk.js} +1 -1
  89. package/dist/scripts/{823-58d27c255b-lite.chunk.js.map → 823-33c5207c68-lite.chunk.js.map} +1 -1
  90. package/dist/scripts/8261-69854ff4d5-lite.chunk.js +2 -0
  91. package/dist/scripts/8261-69854ff4d5-lite.chunk.js.map +1 -0
  92. package/dist/scripts/{8466-ee9d40ee97-lite.chunk.js → 8466-cea62163e8-lite.chunk.js} +1 -1
  93. package/dist/scripts/{8466-ee9d40ee97-lite.chunk.js.map → 8466-cea62163e8-lite.chunk.js.map} +1 -1
  94. package/dist/scripts/{8681-41edd08b98-lite.chunk.js → 8681-49db3daae6-lite.chunk.js} +2 -2
  95. package/dist/scripts/{8681-41edd08b98-lite.chunk.js.map → 8681-49db3daae6-lite.chunk.js.map} +1 -1
  96. package/dist/scripts/{8772-9ae4d77363-lite.chunk.js → 8772-6c11095cea-lite.chunk.js} +1 -1
  97. package/dist/scripts/{8772-9ae4d77363-lite.chunk.js.map → 8772-6c11095cea-lite.chunk.js.map} +1 -1
  98. package/dist/scripts/{8906-b75b51bd0f-lite.chunk.js → 8906-2f6b5e4c5c-lite.chunk.js} +2 -2
  99. package/dist/scripts/{8906-b75b51bd0f-lite.chunk.js.map → 8906-2f6b5e4c5c-lite.chunk.js.map} +1 -1
  100. package/dist/scripts/{920-4de8efbcf1-lite.chunk.js → 920-acc6596891-lite.chunk.js} +1 -1
  101. package/dist/scripts/{920-4de8efbcf1-lite.chunk.js.map → 920-acc6596891-lite.chunk.js.map} +1 -1
  102. package/dist/scripts/{9212-8f95fbd9b9-lite.chunk.js → 9212-cc987a13bf-lite.chunk.js} +1 -1
  103. package/dist/scripts/{9212-8f95fbd9b9-lite.chunk.js.map → 9212-cc987a13bf-lite.chunk.js.map} +1 -1
  104. package/dist/scripts/{9242-2e533bdc0d-lite.chunk.js → 9242-144e7728ad-lite.chunk.js} +1 -1
  105. package/dist/scripts/{9242-2e533bdc0d-lite.chunk.js.map → 9242-144e7728ad-lite.chunk.js.map} +1 -1
  106. package/dist/scripts/{9264-d2285d4310-lite.chunk.js → 9264-518952f13f-lite.chunk.js} +1 -1
  107. package/dist/scripts/{9264-d2285d4310-lite.chunk.js.map → 9264-518952f13f-lite.chunk.js.map} +1 -1
  108. package/dist/scripts/{9478-8eacf2fe47-lite.chunk.js → 9478-4b3c088537-lite.chunk.js} +2 -2
  109. package/dist/scripts/{9478-8eacf2fe47-lite.chunk.js.map → 9478-4b3c088537-lite.chunk.js.map} +1 -1
  110. package/dist/scripts/{9484-be04a34bbf-lite.chunk.js → 9484-b85011dbea-lite.chunk.js} +2 -2
  111. package/dist/scripts/{9484-be04a34bbf-lite.chunk.js.map → 9484-b85011dbea-lite.chunk.js.map} +1 -1
  112. package/dist/scripts/bundle-11bfce2e8c.min.js +3 -0
  113. package/dist/scripts/{bundle-8f540a1154.min.js.map → bundle-11bfce2e8c.min.js.map} +1 -1
  114. package/package.json +1 -1
  115. package/dist/scripts/1285-c322e093f9-lite.chunk.js.map +0 -1
  116. package/dist/scripts/3012-b5208d6981-lite.chunk.js.map +0 -1
  117. package/dist/scripts/5595-3763b14d77-lite.chunk.js.map +0 -1
  118. package/dist/scripts/7293-afd3349468-lite.chunk.js +0 -2
  119. package/dist/scripts/8261-72453f1978-lite.chunk.js +0 -2
  120. package/dist/scripts/8261-72453f1978-lite.chunk.js.map +0 -1
  121. package/dist/scripts/bundle-8f540a1154.min.js +0 -3
  122. /package/dist/scripts/{170-1f815b85a1-lite.chunk.js.LICENSE.txt → 170-2d124965b7-lite.chunk.js.LICENSE.txt} +0 -0
  123. /package/dist/scripts/{2118-462a279c5a-lite.chunk.js.LICENSE.txt → 2118-ec2a5f1e9b-lite.chunk.js.LICENSE.txt} +0 -0
  124. /package/dist/scripts/{3841-95df66e647-lite.chunk.js.LICENSE.txt → 3841-bfae79638b-lite.chunk.js.LICENSE.txt} +0 -0
  125. /package/dist/scripts/{4778-ebe369973c-lite.chunk.js.LICENSE.txt → 4778-3c9f2b7f76-lite.chunk.js.LICENSE.txt} +0 -0
  126. /package/dist/scripts/{4942-a27a31e79e-lite.chunk.js.LICENSE.txt → 4942-acce40b333-lite.chunk.js.LICENSE.txt} +0 -0
  127. /package/dist/scripts/{5268-f4db3933ff-lite.chunk.js.LICENSE.txt → 5268-9b7560f3b1-lite.chunk.js.LICENSE.txt} +0 -0
  128. /package/dist/scripts/{6102-4d948a5e48-lite.chunk.js.LICENSE.txt → 6102-6e5494bf09-lite.chunk.js.LICENSE.txt} +0 -0
  129. /package/dist/scripts/{771-eb60e33941-lite.chunk.js.LICENSE.txt → 771-5612b4ffc2-lite.chunk.js.LICENSE.txt} +0 -0
  130. /package/dist/scripts/{8024-66413cc05b-lite.chunk.js.LICENSE.txt → 8024-765a4170c7-lite.chunk.js.LICENSE.txt} +0 -0
  131. /package/dist/scripts/{8681-41edd08b98-lite.chunk.js.LICENSE.txt → 8681-49db3daae6-lite.chunk.js.LICENSE.txt} +0 -0
  132. /package/dist/scripts/{8906-b75b51bd0f-lite.chunk.js.LICENSE.txt → 8906-2f6b5e4c5c-lite.chunk.js.LICENSE.txt} +0 -0
  133. /package/dist/scripts/{9478-8eacf2fe47-lite.chunk.js.LICENSE.txt → 9478-4b3c088537-lite.chunk.js.LICENSE.txt} +0 -0
  134. /package/dist/scripts/{9484-be04a34bbf-lite.chunk.js.LICENSE.txt → 9484-b85011dbea-lite.chunk.js.LICENSE.txt} +0 -0
  135. /package/dist/scripts/{bundle-8f540a1154.min.js.LICENSE.txt → bundle-11bfce2e8c.min.js.LICENSE.txt} +0 -0
@@ -1,2 +1,2 @@
1
1
  "use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[1818],{14875:(e,a,t)=>{t.d(a,{a:()=>f});var n=t(32735),r=t(23481),o=t(75902),i=t(35223);function s(e){return s="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},s(e)}function c(e,a,t){var n;return n=function(e,a){if("object"!=s(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!=s(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(a),(a="symbol"==s(n)?n:n+"")in e?Object.defineProperty(e,a,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[a]=t,e}var l=c(c(c({},o.GL.Archived,{svgName:i.vn.Archive,svgColorClassName:"text-secondary",actionName:"Archive",statusName:"Archived"}),o.GL.Draft,{svgName:i.vn.Edit,svgColorClassName:"",actionName:"Draft",statusName:"Draft"}),o.GL.Published,{svgName:i.vn.VisibleOn,svgColorClassName:"text-success",actionName:"Publish",statusName:"Published"}),d=t(83914),m=t(96787);const u={badge:"ciO47",draftLight:"A6Yi7",draftDark:"fkXBX",published:"Ovzwy",archived:"r_dco"};function p(e){var a="rounded-pill d-flex align-items-center ps-2 py-1 fw-semibold ms-2 ".concat(u.badge);switch(e.status){case m.GL.Published:a+=" ".concat(u.published);break;case m.GL.Archived:a+=" ".concat(u.archived);break;case m.GL.Draft:a+=" ".concat(e.darkMode?u.draftDark:u.draftLight)}return e.wrapperClassName&&(a+=" ".concat(e.wrapperClassName)),a}function v(e){var a=l[e.status],t=a.statusName,r=a.svgName;return n.createElement("div",{className:p(e)},n.createElement(d.x,{svgName:r}),n.createElement("div",null,t))}var g=t(98364);const b={stickyWrapper:"zhw6K",badgeWrapper:"NOvn1",badge:"pxQSR"};var h=r.T.encloseNamespace("shared.classificationPreviewBanner");function f(e){return n.createElement("div",{className:"".concat(b.stickyWrapper," py-2 d-flex justify-content-space-between bg-dark text-white mx-2 rounded")},n.createElement("div",{className:"position-absolute d-flex ".concat(b.badgeWrapper)},n.createElement(v,{status:e.status,wrapperClassName:"".concat(b.badge),darkMode:!0})),n.createElement("div",{className:"flex-grow-1"},n.createElement("h1",{className:"text-center my-3 h5"},n.createElement(g.V,{emoji:"👀"}),h("topic"===e.type?"topicTitle":"companyTitle"))))}},89043:(e,a,t)=>{t.d(a,{p:()=>T,v:()=>x});var n=t(32735),r=t(110),o=t(12788),i={renderInPortalIfExists:function(e,a){return a?(0,o.createPortal)(e,a):e}},s=t(84963),c=t(73679),l=t(83657),d=t(23481),m=t(36848),u=t(83914),p=t(35223),v="shared.backButton";function g(e){var a=Object.assign({textShadow:!0},e),t=a.backToName,r=a.appLink,o=a.color,i=a.extraClasses,s=a.textShadow,c=t?d.T.getPhrase(v,"backTo",{backToName:t}):d.T.getPhrase(v,"back"),l="black"===o?"":"text-white",g=s?"text-shadow":"";return n.createElement(m.F,{appLink:r,className:"d-inline-flex align-items-center h5 mb-0 ".concat(i," ").concat(l," ").concat(g)},n.createElement(u.x,{svgName:p.vn.ChevronLeft,size:u.S.Medium}),n.createElement("span",{className:"ms-1"},c))}g.defaultProps={color:"black",extraClasses:""};var b=t(36518),h=t(83345),f=t(10587),y=t(94232),E=t(54610),C=t(79967),k=t(67453);const N={bannerContent:"sSCTB",actionsContainer:"Z5WI2",bannerContentWithLogo:"rgs7Q",container:"M51HJ",logoContainer:"vkeJk",logoContainerLeft:"M3U9B",logoHeading:"EtRwC",specialEventContainer:"rOxDc",headingLarge:"_8pnV",heading:"JXVBH"};var L="".concat(f.y[E.__.Banners].width,":").concat(f.y[E.__.Banners].height);function w(e){return e.length<160?"h1":N.headingLarge}var T=n.memo((function(e){var a,t,o,d,m=e.heading,u=e.banner,p=e.imageCdnUrl,v=e.actions,f=e.sortComponent,T=e.blockColourClass,x=e.specialEvent,S=n.useContext(y.n),I=(0,C.k)().xxl?1920:1200,D=n.useMemo((function(){if(!x||e.showComingSoon)return!1;var a=r.O.format(new Date,"YYYY-MM-DD");return x.endDate?x.startDate<=a&&x.endDate>=a:x.startDate===a}),[x]),P=e.imageOptions||{width:I,ratio:L,resizeType:E.Nq.Cover},A=!!u&&!!p&&k.j.createBannerUrl(u,{fallbackBaseUrl:p,fallbackCategoryName:m,type:E.__.Banners},P),B={className:"banner banner-header ".concat(e.bannerClassName),style:A?{backgroundImage:"url('".concat(A,"')")}:{}};!u&&T&&(delete B.style,B.className+=" ".concat(T));var U=e.detailsComponent;return i.renderInPortalIfExists(n.createElement("header",Object.assign({},B),n.createElement("div",{className:"container ".concat(N.container," position-relative inner-banner")},e.backButtonAppLink&&n.createElement("div",{className:"pt-3"},n.createElement(g,{appLink:e.backButtonAppLink,backToName:e.backButtonText,extraClasses:e.backButtonClasses,color:"white"})),n.createElement("div",{className:"".concat(e.alignLogoLeft?"position-absolute top-50 start-0 translate-middle-y w-100 ps-4":"".concat(N.bannerContent," ").concat((null===(a=e.logo)||void 0===a?void 0:a.url)?N.bannerContentWithLogo:""))},!!x&&n.createElement("div",{className:"position-relative ".concat(N.specialEventContainer)},n.createElement(c.s,{body:{type:x.endDate?"range":"day",text:x.endDate?"".concat(r.O.format(x.startDate,"DD"),"-").concat(r.O.format(x.endDate,"DD")):r.O.format(x.startDate,"DD")},month:r.O.format(x.startDate,"MMMM"),theme:e.calendarTheme})),n.createElement("div",null,D&&n.createElement("div",{className:"rounded-pill py-1 px-2 my-1 me-1 fw-semibold bg-light-blue lh-1 d-inline-block"},n.createElement(h.x,{namespace:"shared.bannerHeader",phrase:"onToday"})),e.showComingSoon&&n.createElement(s.r,{className:"pe-2 fw-semibold mb-1 rounded-pill justify-content-start text-nowrap"}),n.createElement("div",{className:"d-flex align-items-center"},e.alignLogoLeft&&n.createElement("div",{className:"".concat(N.logoContainerLeft," d-none d-md-block partial-loading-background rounded-circle overflow-hidden me-3")},(null===(t=e.logo)||void 0===t?void 0:t.url)&&n.createElement(b.w,{src:k.j.createUrl(null===(o=e.logo)||void 0===o?void 0:o.url,{size:E.h2.Small})})),n.createElement("h1",{className:"text-white text-shadow pe-3 ".concat(N.heading," ").concat(w(m)," ").concat(e.alignLogoLeft?"w-50":"")},m,U&&n.createElement(U,null)))),!!v&&n.createElement("div",{className:N.actionsContainer},n.createElement(l.e,{actions:v,sortComponent:f,actionsDropdownClassName:e.actionsDropdownClassName}))),!e.alignLogoLeft&&!!(null===(d=e.logo)||void 0===d?void 0:d.url)&&n.createElement("div",{className:N.logoContainer},n.createElement("img",{src:k.j.createUrl(e.logo.url,{size:E.h2.Small}),className:"rounded-circle"})))),null==S?void 0:S.container)}),(function(e,a){var t,n;return e.actions===a.actions&&e.heading===a.heading&&(null===(t=e.logo)||void 0===t?void 0:t.url)===(null===(n=a.logo)||void 0===n?void 0:n.url)}));function x(){var e=n.useContext(y.n);return i.renderInPortalIfExists(n.createElement("div",{className:"partial-banner partial-loading-background ".concat(N.banner)}),null==e?void 0:e.container)}},49935:(e,a,t)=>{t.d(a,{Oo:()=>m,b2:()=>u});var n=t(32735),r=t(36848),o=t(86764),i=t(3747),s=t(5859),c=t(35223),l=t(83914),d=function(e){var a=e.breadcrumb,t=a.name,o=a.appLink,i=a.active,s=e.withBackIcon;return n.createElement("li",{className:"breadcrumb-item".concat(i?" active":"")},i?n.createElement("strong",null,t):n.createElement(r.F,{appLink:o},s&&n.createElement(l.x,{svgName:c.vn.ChevronLeft,size:l.S.Small}),n.createElement("span",{className:s?"ms-2":""},t)))},m=function(e){var a=e.breadcrumbs,t=(0,i.a)(o.r.XS),r=null==a?void 0:a.length;return!r||t&&r<2?n.createElement(n.Fragment,null):t?n.createElement("nav",{"aria-label":"breadcrumb"},n.createElement("ol",{className:"breadcrumb m-0 p-0"},n.createElement(d,{breadcrumb:a[r-2],withBackIcon:!0}))):n.createElement("nav",{"aria-label":"breadcrumb"},n.createElement("ol",{className:"breadcrumb m-0 p-0"},a.map((function(e,a){return n.createElement(d,{key:a,breadcrumb:e})}))))},u=n.memo((function(e){var a=e.numItems,t=void 0===a?3:a;return(0,i.a)(o.r.XS)?n.createElement("div",{className:"partial-loading-background",style:{height:"1.3125rem",width:"6rem"}}):n.createElement("nav",{"aria-label":"breadcrumb"},n.createElement("ol",{className:"breadcrumb m-0 p-0"},s.u.getPartialLoadingItems({numItems:t}).map((function(e,a){var t=e.width;return n.createElement("li",{key:a,className:"breadcrumb-item"},n.createElement("span",{className:"d-inline-block partial-loading-background",style:{width:t},dangerouslySetInnerHTML:{__html:"&nbsp"}}))}))))}))},56520:(e,a,t)=>{t.d(a,{R0:()=>p,_N:()=>m,eR:()=>u});var n=t(23481),r=t(97395),o=t(20354),i=t(42617),s=t(4594),c=t(39151),l=t(31949),d=n.T.encloseNamespace("shared.hooks");function m(e,a,t,n){var o=r._.safeUrlConcat(e,"manage"),i=r._.safeUrlConcat(e,"exchange"),c=function(e,a,t){return r._.safeUrlConcat(e,"".concat(a,"/").concat(t))};switch(a){case s.E.Subject:return r._.safeUrlConcat(o,"subjects/presentations/".concat(n,"/classifications/").concat(t,"/edit"));case s.E.Video:return c(o,"videos",t);case s.E.Playlist:return c(o,"playlists",t);case s.E.Series:return c(o,"series",t);case s.E.Company:return c(o,"companies",t);case s.E.Interactive:return c(o,"interactives",t);case s.E.Clip:return c(o,"clips",t);case s.E.Category:return c(i,"categories",t)}}function u(){return d("openInCurationStudio")}function p(){var e,a,t=o.a.useBasicFetch(l.N.currentUser()),n=o.a.useBasicFetch((null===(e=t.data)||void 0===e?void 0:e.id)&&l.N.groups(null===(a=t.data)||void 0===a?void 0:a.id)).data,r=o.a.useBasicFetch(c.L.config()),s=[i.j.Curator,i.j.Content,i.j.Developer];return{openInCurationStudioLabel:u(),isUserCurator:s.some((function(e){return null==n?void 0:n.data.find((function(a){return a.name===e}))})),getOpenInCurationStudioLink:function(e,a,t){var n;return m(null===(n=r.data)||void 0===n?void 0:n.curatorUrl,e,a,t)}}}},41818:(e,a,t)=>{t.r(a),t.d(a,{CompanyDashboardView:()=>Q});var n=t(32735),r=t(23481),o=t(81886),i=t(20354),s=t(28400),c=t(65858),l=t(75896),d=t(23232),m=t(83345),u=t(76177),p=t(96787),v=t(35223),g="moviesAndTv.companyDashboardEmptyState",b=r.T.encloseNamespace(g);function h(e){var a,t,o=(null===(a=e.dashboard)||void 0===a?void 0:a.status)===p.GL.Archived;return n.createElement(d.u,null,n.createElement(d.u.Image,{src:e.imageUrl,altText:b("info")}),n.createElement(d.u.Heading,null,n.createElement(m.x,{namespace:g,phrase:"heading"})),n.createElement(d.u.Info,null,n.createElement(m.x,{namespace:g,phrase:"info"})),n.createElement(u.u,{title:o?r.T.getPhrase(g,"archivedCtaTooltip"):"",spanHack:!0},n.createElement(d.u.Cta,{text:r.T.getPhrase(g,"add"),appLink:null===(t=e.addWidgetApplink)||void 0===t?void 0:t.call(e),className:"btn btn-dark",icon:v.vn.Plus,disabled:o})))}var f=t(89043),y=t(49935),E=t(86718),C=t(7733),k=t(21366),N=t(9085);function L(e){var a,t,r,o=l.m.sortBy(null===(a=e.dashboard)||void 0===a?void 0:a.widgets,"index");function i(a,t,n){var r=k.S.getWidgetParams(t,n,k.S.getDashboardTargetType(e.dashboard));return e.getWidgetContentRequest(a,r,n)}var s=e.isReadonly&&!(null==o?void 0:o.length);return n.createElement(n.Fragment,null,!!o.length&&n.createElement(n.Fragment,null,e.company?n.createElement(f.p,{heading:e.company.name,banner:e.company.banner,imageCdnUrl:e.imageCdnUrl,blockColourClass:(0,N.x)(e.company.name,C.o),actions:null===(t=e.getBannerActions)||void 0===t?void 0:t.call(e),actionsDropdownClassName:"btn btn-outline-dark"}):n.createElement(f.v,null),n.createElement("div",{className:"py-3 mb-3 border-bottom"},n.createElement(y.Oo,{breadcrumbs:null===(r=e.getBreadcrumbs)||void 0===r?void 0:r.call(e)})),n.createElement("div",{className:"mt-3"},o.map((function(a){return n.createElement(E.L,{key:a.id,id:a.id,imageCdnUrl:e.imageCdnUrl,getContentRequest:i,audiences:e.audiences,name:a.name,description:a.description,templateId:a.templateId,metadata:a.metadata,presentation:e.presentation,setFavourite:e.setFavourite,canFavourite:e.canFavourite,appLinks:e.widgetAppLinks,isScrollToTargetWidget:(null==e?void 0:e.scrollToWidgetId)===a.id,widgetTypeId:a.widgetId,yearGroups:e.yearGroups,hasPermissions:e.hasPermissions,hasLocalPermissions:e.hasLocalPermissions,isPreviewing:e.isReadonly,companyLogoFallbackUrl:e.companyLogoFallbackUrl,subTextType:e.subTextType,resourceThumbnailFallbackImageUrl:e.resourceThumbnailFallbackImageUrl,preferences:a.preferences})})))),s&&n.createElement(h,{dashboard:e.dashboard,isReadonly:e.isReadonly,imageUrl:e.emptyImageUrl,addWidgetApplink:e.widgetAppLinks.widgetWizard}))}var w=t(14875),T=t(183),x=t(67058),S=t(39151),I=t(80889),D=t(56520),P=t(22902),A=t(79612),B=t(37802),U=t(76753),O=t(99742),_=t(14070),F=t(97291),j=t(97395),M={company:function(e){var a={query:"banner"};return{url:j._.urlBuilder("{gateway}/v1/objects/".concat(e),a),publicUrl:j._.urlBuilder("/api/objects/".concat(e),a),key:"company:".concat(e)}}},W=t(7179),R=t(27638),H=t(23737),G=t(33192),V=t(22490),z=t(82431),q=r.T.encloseNamespace("moviesAndTv.companyDashboard"),Y={videoType:function(e,a){return V.W.getAppLink(e,Object.assign(Object.assign({},a),{moviesAndTv:!0,context:T.Q.Widget}))},series:z.j.getSeriesAppLink,subText:function(e){return z.j.getSeriesAppLink(e.series)},playlist:function(e){return{application:F.O.PLAYLISTS,action:_.e.Playlists.PLAYLIST,args:[e.id,s.m.slugify(e.name)]}}};function Q(e){var a,t,r=i.a.useBasicFetch(S.L.config()),s=i.a.useBasicFetch(M.company(e.companyId)),l=(0,D.R0)(),d=l.openInCurationStudioLabel,m=l.isUserCurator,u=l.getOpenInCurationStudioLink,v=(0,B.r)(null),g=v.hasNewMoviesAndTv,b=v.isLoadingSettings,h=(0,R.u)(c.LZ.ExpandableVideoThumbnail),f=h.setFavourite,y=h.canFavourite,E=(0,P.T)(),C=E.hasPermissions,k=E.hasLocalPermissions,N=(0,H.y)({targetType:p.ku.Company,queryParams:e.queryParams,presentationSlug:e.presentationSlug,companyId:e.companyId}),T=N.dashboard,j=N.presentation,V=N.isPreviewing;return(0,A.M)(U.CG.getDefaultMetadata({title:null===(a=s.data)||void 0===a?void 0:a.name,phraseContext:{phraseHandler:q,titlePhrase:"pageTitle",descriptionPhrase:"pageDescription"},canonicalLink:G.f.getCanonicalLink({stripPresentationSlug:!0}),allowIndexing:!1})),(0,W.P)({id:e.companyId,app:"studios"}),n.useEffect((function(){!b&&T.hasCompleted&&(g&&T.data||o.Q.C$.trigger({application:F.O.DASHBOARD,action:_.e.Dashboard.HOME},{replace:!0}))}),[g,b,T.data,T.hasCompleted]),n.useEffect((function(){T.hasCompleted&&!T.data&&o.Q.Ry.throw(new x.d)}),[T.data,T.hasCompleted]),n.createElement("div",{className:"position-relative px-4"},!(!V||!T.data)&&n.createElement(w.a,{status:T.data.status,type:"company"}),n.createElement(L,{company:s.data,dashboard:T.data,getWidgetContentRequest:I._.dashboardWidgetContent,getBannerActions:function(){var e,a;return m?[{label:d,href:u(null===(e=s.data)||void 0===e?void 0:e.typeId,null===(a=s.data)||void 0===a?void 0:a.id),openInNewTab:!0}]:[]},imageCdnUrl:null===(t=r.data)||void 0===t?void 0:t.imageCdnUrl,resourceThumbnailFallbackImageUrl:O.W.Fallbacks.RESOURCE_THUMBNAIL,presentation:j,widgetAppLinks:Y,setFavourite:f,canFavourite:y,getBreadcrumbs:function(){return s.hasCompleted?[{name:q("moviesAndTv"),appLink:{application:F.O.MOVIES_AND_TV,action:_.e.MoviesAndTv.HOME}},{name:s.data.name,active:!0}]:[]},hasPermissions:C,hasLocalPermissions:k}))}}}]);
2
- //# sourceMappingURL=1818-b9f9297d6d-lite.chunk.js.map
2
+ //# sourceMappingURL=1818-72409e60a9-lite.chunk.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"scripts/1818-b9f9297d6d-lite.chunk.js","mappings":"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","sources":["file:///app/packages/libs/shared/src/apps/subjects/constants/DashboardStatusConfig.ts","file:///app/packages/libs/shared/src/apps/subjects/components/classification-dashboard/dashboard-status-badge/dashboard-status-badge.scss","file:///app/packages/libs/shared/src/apps/subjects/components/classification-dashboard/dashboard-status-badge/DashboardStatusBadge.tsx","file:///app/packages/libs/shared/src/apps/subjects/components/preview-banner/preview-banner.scss","file:///app/packages/libs/shared/src/apps/subjects/components/preview-banner/PreviewBanner.tsx","file:///app/packages/libs/common/src/react/utils/PortalHelper.ts","file:///app/packages/libs/shared/src/components/back-button/BackButton.tsx","file:///app/packages/libs/shared/src/components/banner-header/banner-header.scss","file:///app/packages/libs/shared/src/components/banner-header/BannerHeader.tsx","file:///app/packages/libs/shared/src/components/breadcrumbs/Breadcrumbs.tsx","file:///app/packages/libs/shared/src/hooks/useCurationStudio.ts","file:///app/packages/libs/shared/src/apps/movies-and-tv/components/company-dashboard/empty-state/CompanyDashboardEmptyState.tsx","file:///app/packages/libs/shared/src/apps/movies-and-tv/components/company-dashboard/CompanyDashboard.tsx","file:///app/packages/projects/lite/src/shared/flight-requests/CompanyRequests.ts","file:///app/packages/projects/lite/src/apps/movies-and-tv/views/company-dashboard/CompanyDashboardView.tsx"],"sourcesContent":["import { localSvgs } from 'libs/shared/images/svg';\nimport { DashboardStatus } from 'libs/shared/interfaces/models/Dashboard';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\ninterface DashboardStatusConfigType {\n statusName: string;\n actionName: string;\n svgName: localSvgs;\n svgColorClassName: string;\n}\n\nexport const DashboardStatusConfig: Record<DashboardStatus, DashboardStatusConfigType> = {\n [DashboardStatus.Archived]: {\n svgName: cvSvgLibrary.Archive,\n svgColorClassName: 'text-secondary',\n actionName: 'Archive',\n statusName: 'Archived'\n },\n [DashboardStatus.Draft]: {\n svgName: cvSvgLibrary.Edit,\n svgColorClassName: '',\n actionName: 'Draft',\n statusName: 'Draft'\n },\n [DashboardStatus.Published]: {\n svgName: cvSvgLibrary.VisibleOn,\n svgColorClassName: 'text-success',\n actionName: 'Publish',\n statusName: 'Published'\n }\n};","// extracted by mini-css-extract-plugin\nexport default {\"badge\":\"ciO47\",\"draftLight\":\"A6Yi7\",\"draftDark\":\"fkXBX\",\"published\":\"Ovzwy\",\"archived\":\"r_dco\"};","import React from 'react';\n\nimport { DashboardStatusConfig } from 'libs/shared/apps/subjects/constants/DashboardStatusConfig';\nimport { SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\nimport { DashboardStatus } from 'libs/shared/interfaces';\n\nimport styles from './dashboard-status-badge.scss';\n\nfunction getClassName(props: DashboardStatusBadgeProps): string {\n let className = `rounded-pill d-flex align-items-center ps-2 py-1 fw-semibold ms-2 ${styles.badge}`;\n\n switch (props.status) {\n case DashboardStatus.Published:\n className += ` ${styles.published}`;\n break;\n case DashboardStatus.Archived:\n className += ` ${styles.archived}`;\n break;\n case DashboardStatus.Draft:\n className += ` ${props.darkMode ? styles.draftDark : styles.draftLight}`;\n break;\n }\n\n if (props.wrapperClassName)\n className += ` ${props.wrapperClassName}`;\n\n return className;\n}\n\ninterface DashboardStatusBadgeProps {\n status: DashboardStatus;\n darkMode?: boolean;\n wrapperClassName?: string;\n}\n\nexport function DashboardStatusBadge(props: DashboardStatusBadgeProps): JSX.Element {\n const { statusName, svgName } = DashboardStatusConfig[props.status];\n\n return (\n <div className={getClassName(props)}>\n <SvgContainer svgName={svgName} />\n <div>{statusName}</div>\n </div>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"stickyWrapper\":\"zhw6K\",\"badgeWrapper\":\"NOvn1\",\"badge\":\"pxQSR\"};","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { DashboardStatusBadge } from 'libs/shared/apps/subjects/components/classification-dashboard/dashboard-status-badge/DashboardStatusBadge';\nimport { EmojiText } from 'libs/shared/components/emoji-text/EmojiText';\nimport { DashboardStatus } from 'libs/shared/interfaces';\n\nimport styles from './preview-banner.scss';\n\nconst namespace = 'shared.classificationPreviewBanner';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface PreviewBannerProps {\n status: DashboardStatus;\n type: 'company' | 'topic';\n}\n\nexport function PreviewBanner(props: PreviewBannerProps): JSX.Element {\n return (\n <div className={`${styles.stickyWrapper} py-2 d-flex justify-content-space-between bg-dark text-white mx-2 rounded`}>\n <div className={`position-absolute d-flex ${styles.badgeWrapper}`}>\n <DashboardStatusBadge status={props.status} wrapperClassName={`${styles.badge}`} darkMode />\n </div>\n <div className='flex-grow-1'>\n <h1 className='text-center my-3 h5'>\n <EmojiText emoji='👀' />\n {getPhrase(props.type === 'topic' ? 'topicTitle' : 'companyTitle')}\n </h1>\n </div>\n </div>\n );\n}\n","import React from 'react';\nimport { createPortal } from 'react-dom';\n\nexport const PortalHelper = {\n renderInPortalIfExists(component: React.ReactElement, portalContainer: Element | null): React.ReactElement {\n if (portalContainer)\n return createPortal(component, portalContainer);\n\n return component;\n }\n};","import * as React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Core } from 'libs/common/core';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { SvgContainer, SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nconst namespace = 'shared.backButton';\n\ninterface BackButtonProps {\n appLink: Core.AppLink;\n backToName?: string;\n color?: 'black' | 'white';\n extraClasses?: string;\n /**\n * Whether or not the button text has a text shadow. Defaults to true\n */\n textShadow?: boolean;\n}\n\nBackButton.defaultProps = {\n color: 'black',\n extraClasses: ''\n};\n\nexport function BackButton(props: BackButtonProps): React.ReactElement {\n const { backToName, appLink, color, extraClasses, textShadow } = {\n textShadow: true,\n ...props\n };\n\n const backPhrase = backToName\n ? LanguageService.getPhrase(namespace, 'backTo', { backToName })\n : LanguageService.getPhrase(namespace, 'back');\n\n const colorClass = color === 'black' ? '' : 'text-white';\n const textShadowClass = textShadow ? 'text-shadow' : '';\n\n return (\n <AppLink\n appLink={appLink}\n className={`d-inline-flex align-items-center h5 mb-0 ${extraClasses} ${colorClass} ${textShadowClass}`}\n >\n <SvgContainer svgName={cvSvgLibrary.ChevronLeft} size={SvgContainerSize.Medium} />\n <span className='ms-1'>{backPhrase}</span>\n </AppLink>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"bannerContent\":\"sSCTB\",\"actionsContainer\":\"Z5WI2\",\"bannerContentWithLogo\":\"rgs7Q\",\"container\":\"M51HJ\",\"logoContainer\":\"vkeJk\",\"logoContainerLeft\":\"M3U9B\",\"logoHeading\":\"EtRwC\",\"specialEventContainer\":\"rOxDc\",\"headingLarge\":\"_8pnV\",\"heading\":\"JXVBH\"};","import * as React from 'react';\n\nimport { Core } from 'libs/common/core';\nimport { DateHelper } from 'libs/common/react/utils/DateHelper';\nimport { PortalHelper } from 'libs/common/react/utils/PortalHelper';\n\nimport { ComingSoonTag } from 'libs/shared/apps/calendar/components/coming-soon-tag/ComingSoonTag';\nimport { GenericCalendarDate } from 'libs/shared/apps/calendar/components/generic-calendar-date/GenericCalendarDate';\nimport { CalendarTheme } from 'libs/shared/apps/calendar/interfaces/CalendarTheme';\nimport { ActionOptions, Actions } from 'libs/shared/components/actions/Actions';\nimport { BackButton } from 'libs/shared/components/back-button/BackButton';\nimport { LazyImage } from 'libs/shared/components/lazy-image/LazyImage';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { ImageMinDimensions } from 'libs/shared/constants/ImageSizes';\nimport { BannerPortalContext } from 'libs/shared/context/BannerPortalContext';\nimport { ImageSize, ImageType, ResizeType } from 'libs/shared/enums/Images';\nimport { useBreakpoints } from 'libs/shared/hooks/useBreakpoints';\nimport { Banner, CalendarEvent, Logo } from 'libs/shared/interfaces';\nimport { ImageHelper, ImageOptions } from 'libs/shared/utils/ImageHelper';\n\nimport styles from './banner-header.scss';\n\nconst RATIO = `${ImageMinDimensions[ImageType.Banners].width}:${ImageMinDimensions[ImageType.Banners].height}`;\nconst DEFAULT_WIDTH = 1200; // This is ImageSize.Large for a Banner.\nconst LARGE_SCREEN_WIDTH = 1920;\n\nfunction useGetImageWidth(): number {\n const breakpoints = useBreakpoints();\n\n if (breakpoints.xxl)\n return LARGE_SCREEN_WIDTH;\n\n return DEFAULT_WIDTH;\n}\n\nfunction getSizeClass(heading: string): string {\n if (heading.length < 160)\n return 'h1';\n\n return styles.headingLarge;\n}\n\ninterface BannerHeaderProps {\n heading: string;\n banner?: Banner;\n bannerClassName?: string;\n imageCdnUrl?: string;\n logo?: Logo;\n actions?: ActionOptions[];\n specialEvent?: CalendarEvent;\n backButtonAppLink?: Core.AppLink;\n backButtonText?: string;\n backButtonClasses?: string;\n sortComponent?: JSX.Element;\n blockColourClass?: string;\n actionsDropdownClassName?: string;\n detailsComponent?: () => React.ReactElement;\n imageOptions?: ImageOptions;\n showComingSoon?: boolean;\n alignLogoLeft?: boolean;\n calendarTheme?: CalendarTheme;\n}\n\nconst namespace = 'shared.bannerHeader';\n\nexport const BannerHeader = React.memo(function(props: React.PropsWithChildren<BannerHeaderProps>): React.ReactElement {\n const { heading, banner, imageCdnUrl, actions, sortComponent, blockColourClass, specialEvent } = props;\n\n const portalContainerContext = React.useContext(BannerPortalContext);\n\n const imageWidth = useGetImageWidth();\n\n const specialEventIsToday = React.useMemo(() => {\n if (!specialEvent || props.showComingSoon)\n return false;\n\n const today = DateHelper.format(new Date(), 'YYYY-MM-DD');\n\n if (!specialEvent.endDate)\n return specialEvent.startDate === today;\n\n return specialEvent.startDate <= today && specialEvent.endDate >= today;\n }, [specialEvent]);\n\n const imageOptions = props.imageOptions || {\n width: imageWidth,\n ratio: RATIO,\n resizeType: ResizeType.Cover\n };\n\n const url = !!banner && !!imageCdnUrl && ImageHelper.createBannerUrl(banner, {\n fallbackBaseUrl: imageCdnUrl,\n fallbackCategoryName: heading,\n type: ImageType.Banners\n }, imageOptions);\n\n const containerProps: React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement> = {\n className: `banner banner-header ${props.bannerClassName}`,\n style: url ? { backgroundImage: `url('${url}')` } : {}\n };\n\n if (!banner && blockColourClass) {\n delete containerProps.style;\n containerProps.className += ` ${blockColourClass}`;\n }\n\n const DetailsComponent = props.detailsComponent;\n\n return PortalHelper.renderInPortalIfExists(\n // \"banner\" is used in playlists in Online. banner-header is used by all other projects\n <header {...containerProps}>\n <div className={`container ${styles.container} position-relative inner-banner`}>\n {props.backButtonAppLink && (\n <div className='pt-3'>\n <BackButton\n appLink={props.backButtonAppLink}\n backToName={props.backButtonText}\n extraClasses={props.backButtonClasses}\n color='white'\n />\n </div>\n )}\n \n <div className={`${props.alignLogoLeft ? 'position-absolute top-50 start-0 translate-middle-y w-100 ps-4' : `${styles.bannerContent} ${props.logo?.url ? styles.bannerContentWithLogo : ''}`}`}>\n {!!specialEvent && (\n <div className={`position-relative ${styles.specialEventContainer}`}>\n <GenericCalendarDate\n body={{\n type: specialEvent.endDate ? 'range' : 'day',\n text: specialEvent.endDate\n ? `${DateHelper.format(specialEvent.startDate, 'DD')}-${DateHelper.format(specialEvent.endDate, 'DD')}`\n : DateHelper.format(specialEvent.startDate, 'DD')\n }}\n month={DateHelper.format(specialEvent.startDate, 'MMMM')}\n theme={props.calendarTheme}\n />\n </div>\n )}\n <div>\n {specialEventIsToday && (\n <div className='rounded-pill py-1 px-2 my-1 me-1 fw-semibold bg-light-blue lh-1 d-inline-block'>\n <Text namespace={namespace} phrase='onToday' />\n </div>\n )}\n {props.showComingSoon && (\n <ComingSoonTag className='pe-2 fw-semibold mb-1 rounded-pill justify-content-start text-nowrap' />\n )}\n <div className='d-flex align-items-center'>\n {props.alignLogoLeft &&\n <div className={`${styles.logoContainerLeft} d-none d-md-block partial-loading-background rounded-circle overflow-hidden me-3`}>\n {props.logo?.url &&\n <LazyImage src={ImageHelper.createUrl(props.logo?.url, { size: ImageSize.Small })} />}\n </div>\n }\n <h1 className={`text-white text-shadow pe-3 ${styles.heading} ${getSizeClass(heading)} ${props.alignLogoLeft ? 'w-50' : ''}`}>\n {heading}\n {DetailsComponent && <DetailsComponent />}\n </h1>\n </div>\n </div>\n {!!actions && (\n <div className={styles.actionsContainer}>\n <Actions\n actions={actions}\n sortComponent={sortComponent}\n actionsDropdownClassName={props.actionsDropdownClassName}\n />\n </div>\n )}\n </div>\n {!props.alignLogoLeft && !!props.logo?.url &&\n <div className={styles.logoContainer}>\n <img\n src={ImageHelper.createUrl(props.logo.url, { size: ImageSize.Small })}\n className='rounded-circle'\n />\n </div>\n }\n </div>\n </header>,\n portalContainerContext?.container\n );\n}, (prevProps, nextProps): boolean => (\n prevProps.actions === nextProps.actions\n && prevProps.heading === nextProps.heading\n && prevProps.logo?.url === nextProps.logo?.url\n));\n\nexport function PartialBannerHeader(): JSX.Element {\n const portalContainerContext = React.useContext(BannerPortalContext);\n\n return PortalHelper.renderInPortalIfExists(\n <div className={`partial-banner partial-loading-background ${styles.banner}`} />,\n portalContainerContext?.container\n );\n}","import * as React from 'react';\n\nimport { Core } from 'libs/common/core';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { MediaQueryStrings } from 'libs/shared/enums/MediaQueries';\nimport { useMediaQuery } from 'libs/shared/hooks/UseMediaQuery';\nimport { PartialLoadingHelper } from 'libs/shared/utils/PartialLoadingHelper';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport { SvgContainer, SvgContainerSize } from '../svg-container/SvgContainer';\n\nexport interface Breadcrumb {\n name: string;\n appLink?: Core.AppLink;\n active?: boolean;\n}\n\ninterface BreadcrumbItemProps {\n breadcrumb: Breadcrumb;\n withBackIcon?: boolean;\n}\n\nexport const BreadcrumbItem = ({ breadcrumb: { name, appLink, active }, withBackIcon }: BreadcrumbItemProps) => (\n <li className={`breadcrumb-item${active ? ' active' : ''}`}>\n {active\n ? <strong>{name}</strong>\n : <AppLink appLink={appLink}>\n {withBackIcon && <SvgContainer svgName={cvSvgLibrary.ChevronLeft} size={SvgContainerSize.Small} />}\n <span className={withBackIcon ? 'ms-2' : ''}>{name}</span>\n </AppLink>\n }\n </li>\n);\n\ninterface BreadcrumbsProps {\n breadcrumbs: Breadcrumb[];\n}\n\nexport const Breadcrumbs = ({ breadcrumbs }: BreadcrumbsProps) => {\n const isMobile = useMediaQuery(MediaQueryStrings.XS);\n\n const length = breadcrumbs?.length;\n\n if (!length || (isMobile && length < 2))\n return <></>;\n\n if (isMobile)\n return (\n <nav aria-label='breadcrumb'>\n <ol className='breadcrumb m-0 p-0'>\n <BreadcrumbItem breadcrumb={breadcrumbs[length - 2]} withBackIcon />\n </ol>\n </nav>\n );\n\n return (\n <nav aria-label='breadcrumb'>\n <ol className='breadcrumb m-0 p-0'>\n {breadcrumbs.map((b, idx) => <BreadcrumbItem key={idx} breadcrumb={b} />)}\n </ol>\n </nav>\n );\n};\n\nexport const PartialBreadcrumbs = React.memo(function({ numItems = 3 }: { numItems?: number; }) {\n const isMobile = useMediaQuery(MediaQueryStrings.XS);\n\n if (isMobile) {\n return (\n <div className='partial-loading-background' style={{ height: '1.3125rem', width: '6rem' }} />\n );\n }\n\n return (\n <nav aria-label='breadcrumb'>\n <ol className='breadcrumb m-0 p-0'>\n {PartialLoadingHelper.getPartialLoadingItems({ numItems }).map(({ width }, idx) => (\n <li key={idx} className='breadcrumb-item'>\n <span className='d-inline-block partial-loading-background' style={{ width }} dangerouslySetInnerHTML={{ __html: '&nbsp' }} />\n </li>\n ))}\n </ol>\n </nav>\n );\n});","import { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { UrlHelper } from 'libs/common/backbone/utils/UrlHelper';\nimport { Flight } from 'libs/common/react/index';\n\nimport { CuratorGroup } from 'libs/shared/enums/CuratorGroup';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { ConfigRequests } from 'libs/shared/flight-requests/ConfigRequests';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { Config, CuratorUserGroupCollection, CurrentUser } from 'libs/shared/interfaces';\n\nconst namespace = 'shared.hooks';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nexport function getOpenInCurationStudioLink(\n baseUrl: string,\n objectType: MasterType | string,\n id: string,\n presentationId?: string\n) {\n const baseManageUrl = UrlHelper.safeUrlConcat(baseUrl, 'manage');\n const baseExchangeUrl = UrlHelper.safeUrlConcat(baseUrl, 'exchange');\n const href = (baseUrl: string, objectType: string, id: string) => UrlHelper.safeUrlConcat(baseUrl, `${objectType}/${id}`);\n\n switch (objectType) {\n case MasterType.Subject:\n return UrlHelper.safeUrlConcat(baseManageUrl, `subjects/presentations/${presentationId}/classifications/${id}/edit`);\n case MasterType.Video:\n return href(baseManageUrl, 'videos', id);\n case MasterType.Playlist:\n return href(baseManageUrl, 'playlists', id);\n case MasterType.Series:\n return href(baseManageUrl, 'series', id);\n case MasterType.Company:\n return href(baseManageUrl, 'companies', id);\n case MasterType.Interactive:\n return href(baseManageUrl, 'interactives', id);\n case MasterType.Clip:\n return href(baseManageUrl, 'clips', id);\n case MasterType.Category:\n return href(baseExchangeUrl, 'categories', id);\n }\n}\n\nexport function getOpenInCurationStudioLabel(): string {\n return getPhrase('openInCurationStudio');\n}\n\nexport function useCurationStudio() {\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n const { data: userGroups } = Flight.useBasicFetch<CuratorUserGroupCollection>(\n (currentUser.data?.id) && UserRequests.groups(currentUser.data?.id)\n );\n const config = Flight.useBasicFetch<Config>(ConfigRequests.config());\n \n const curatorGroups = [ CuratorGroup.Curator, CuratorGroup.Content, CuratorGroup.Developer ];\n\n function isUserCurator(): boolean {\n return curatorGroups.some(group => userGroups?.data.find(userGroup => userGroup.name === group));\n }\n\n return {\n openInCurationStudioLabel: getOpenInCurationStudioLabel(),\n isUserCurator: isUserCurator(),\n getOpenInCurationStudioLink: (objectType: MasterType | string, id: string, presentationId?: string) =>\n getOpenInCurationStudioLink(config.data?.curatorUrl, objectType, id, presentationId)\n };\n}\n","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { EmptyState } from 'libs/shared/components/empty-states/EmptyState';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { Tooltip } from 'libs/shared/components/tooltip/Tooltip';\nimport { CuratedDashboard, DashboardStatus } from 'libs/shared/interfaces';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nconst namespace = 'moviesAndTv.companyDashboardEmptyState';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface CompanyDashboardEmptyStateProps {\n dashboard: CuratedDashboard;\n imageUrl: string;\n isReadonly: boolean;\n addWidgetApplink?: () => Core.AppLink;\n}\n\nexport function CompanyDashboardEmptyState(props: CompanyDashboardEmptyStateProps): JSX.Element {\n const isArchived = props.dashboard?.status === DashboardStatus.Archived;\n\n return (\n <EmptyState>\n <EmptyState.Image src={props.imageUrl} altText={getPhrase('info')} />\n <EmptyState.Heading>\n <Text namespace={namespace} phrase='heading' />\n </EmptyState.Heading>\n <EmptyState.Info>\n <Text namespace={namespace} phrase='info' />\n </EmptyState.Info>\n <Tooltip title={isArchived ? LanguageService.getPhrase(namespace, 'archivedCtaTooltip') : ''} spanHack>\n <EmptyState.Cta\n text={LanguageService.getPhrase(namespace, 'add')}\n appLink={props.addWidgetApplink?.()}\n className='btn btn-dark'\n icon={cvSvgLibrary.Plus}\n disabled={isArchived}\n />\n </Tooltip>\n </EmptyState>\n );\n}","import React from 'react';\n\nimport { Flight } from 'libs/common/flight';\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\n\nimport { CompanyDashboardEmptyState } from 'libs/shared/apps/movies-and-tv/components/company-dashboard/empty-state/CompanyDashboardEmptyState';\nimport { ActionOptions } from 'libs/shared/components/actions/Actions';\nimport { BannerHeader, PartialBannerHeader } from 'libs/shared/components/banner-header/BannerHeader';\nimport { Breadcrumb, Breadcrumbs } from 'libs/shared/components/breadcrumbs/Breadcrumbs';\nimport { VideoSubTextType } from 'libs/shared/components/video-sub-text/VideoSubText';\nimport { WidgetContainerView } from 'libs/shared/components/widgets/curated-widgets/WidgetContainerView';\nimport { WidgetAppLinks } from 'libs/shared/components/widgets/curated-widgets/WidgetProps';\nimport { BG_COLOUR_CLASS_NAMES } from 'libs/shared/constants/ColourClassNames';\nimport { WidgetTemplate } from 'libs/shared/enums/WidgetTemplate';\nimport { WidgetTypeId } from 'libs/shared/enums/WidgetTypeId';\nimport { HasLocalPermissionsFunc, HasPermissionsFunc } from 'libs/shared/hooks/usePermissions';\nimport { CanFavouriteFunc, Company, CuratedDashboard, CuratedWidgetQueryParams, FavouriteFunc, Presentation, PresentationAudience, YearGroup } from 'libs/shared/interfaces';\nimport { CuratedDashboardHelper } from 'libs/shared/utils/DashboardHelper';\nimport { getBgColorClass } from 'libs/shared/utils/getBgColorClass';\n\ninterface CompanyDashboardProps {\n dashboard: CuratedDashboard;\n company: Company;\n getWidgetContentRequest: (\n id: string,\n params: CuratedWidgetQueryParams,\n widgetTemplate: WidgetTemplate\n ) => Flight.Request;\n imageCdnUrl: string;\n hasPermissions: HasPermissionsFunc;\n hasLocalPermissions: HasLocalPermissionsFunc;\n resourceThumbnailFallbackImageUrl: string;\n audiences?: PresentationAudience[];\n emptyImageUrl?: string;\n presentation: Presentation;\n setFavourite?: FavouriteFunc;\n canFavourite?: CanFavouriteFunc;\n widgetAppLinks?: WidgetAppLinks;\n scrollToWidgetId?: string;\n isReadonly?: boolean;\n yearGroups?: YearGroup[];\n getBreadcrumbs?: () => Breadcrumb[];\n getBannerActions?: () => ActionOptions[];\n companyLogoFallbackUrl?: string;\n subTextType?: VideoSubTextType;\n}\n\nexport function CompanyDashboard(props: CompanyDashboardProps): JSX.Element {\n const widgets = ArrayHelper.sortBy(props.dashboard?.widgets, 'index');\n\n function getWidgetContentRequest(id: string, widgetTypeId: WidgetTypeId, template: WidgetTemplate): Flight.Request {\n const params = CuratedDashboardHelper.getWidgetParams(\n widgetTypeId,\n template,\n CuratedDashboardHelper.getDashboardTargetType(props.dashboard)\n );\n\n return props.getWidgetContentRequest(id, params, template);\n }\n\n const showEmptyState = props.isReadonly && !widgets?.length;\n\n return (\n <>\n {!!widgets.length &&\n <>\n {props.company\n ? (\n <BannerHeader\n heading={props.company.name}\n banner={props.company.banner}\n imageCdnUrl={props.imageCdnUrl}\n blockColourClass={getBgColorClass(props.company.name, BG_COLOUR_CLASS_NAMES)}\n actions={props.getBannerActions?.()}\n actionsDropdownClassName='btn btn-outline-dark'\n />\n ) : <PartialBannerHeader />\n }\n\n <div className='py-3 mb-3 border-bottom'>\n <Breadcrumbs breadcrumbs={props.getBreadcrumbs?.()} />\n </div>\n\n <div className='mt-3'>\n {widgets.map(widget => {\n return (\n <WidgetContainerView\n key={widget.id}\n id={widget.id}\n imageCdnUrl={props.imageCdnUrl}\n getContentRequest={getWidgetContentRequest}\n audiences={props.audiences}\n name={widget.name}\n description={widget.description}\n templateId={widget.templateId}\n metadata={widget.metadata}\n presentation={props.presentation}\n setFavourite={props.setFavourite}\n canFavourite={props.canFavourite}\n appLinks={props.widgetAppLinks}\n isScrollToTargetWidget={props?.scrollToWidgetId === widget.id}\n widgetTypeId={widget.widgetId}\n yearGroups={props.yearGroups}\n hasPermissions={props.hasPermissions}\n hasLocalPermissions={props.hasLocalPermissions}\n isPreviewing={props.isReadonly}\n companyLogoFallbackUrl={props.companyLogoFallbackUrl}\n subTextType={props.subTextType}\n resourceThumbnailFallbackImageUrl={props.resourceThumbnailFallbackImageUrl}\n preferences={widget.preferences}\n />\n );\n })}\n </div>\n </>\n }\n\n {showEmptyState && (\n <CompanyDashboardEmptyState\n dashboard={props.dashboard}\n isReadonly={props.isReadonly}\n imageUrl={props.emptyImageUrl}\n addWidgetApplink={props.widgetAppLinks.widgetWizard}\n />\n )}\n </>\n );\n}","import { UrlHelper } from 'libs/common/backbone/utils/UrlHelper';\nimport { Flight } from 'libs/common/flight';\n\nexport const CompanyRequests = {\n company(id: string): Flight.PublicRequest {\n const params = { query: 'banner' };\n\n return {\n url: UrlHelper.urlBuilder(`{gateway}/v1/objects/${id}`, params),\n publicUrl: UrlHelper.urlBuilder(`/api/objects/${id}`, params),\n key: `company:${id}`\n };\n }\n};","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Core } from 'libs/common/core';\nimport { Flight } from 'libs/common/flight';\nimport { TextHelper } from 'libs/common/react/utils/TextHelper';\n\nimport { LocationContext } from 'libs/analytics/interfaces';\n\nimport { CompanyDashboard } from 'libs/shared/apps/movies-and-tv/components/company-dashboard/CompanyDashboard';\nimport { PreviewBanner } from 'libs/shared/apps/subjects/components/preview-banner/PreviewBanner';\nimport { ActionOptions } from 'libs/shared/components/actions/Actions';\nimport { Breadcrumb } from 'libs/shared/components/breadcrumbs/Breadcrumbs';\nimport { WidgetAppLinks } from 'libs/shared/components/widgets/curated-widgets/WidgetProps';\nimport { RelatedVideosContext } from 'libs/shared/enums/RelatedVideosContext';\nimport { NotFoundError } from 'libs/shared/errors/general/not-found/NotFoundError';\nimport { ConfigRequests } from 'libs/shared/flight-requests/ConfigRequests';\nimport { DashboardRequests } from 'libs/shared/flight-requests/DashboardRequests';\nimport { useCurationStudio } from 'libs/shared/hooks/useCurationStudio';\nimport { usePermissions } from 'libs/shared/hooks/usePermissions';\nimport { useSetPageMetadata } from 'libs/shared/hooks/useSetPageMetadata';\nimport { useSettings } from 'libs/shared/hooks/useSettings';\nimport { Company, Config, DashboardTargetType, Playlist, Video, VideoTypes } from 'libs/shared/interfaces';\nimport { GetVideoAppLinkOptions } from 'libs/shared/interfaces/VideoAppLinkOptions';\nimport { PageMetadataHelper } from 'libs/shared/utils/PageMetadataHelper';\n\nimport { ImageUrls } from 'shared/constants/ImageUrls';\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\nimport { CompanyRequests } from 'shared/flight-requests/CompanyRequests';\nimport { useDeepLinks } from 'shared/hooks/useDeepLinks';\nimport { useLiteFavourites } from 'shared/hooks/useLiteFavourites';\nimport { DashboardViewQueryParams } from 'shared/interfaces/query-params/DashboardViewQueryParams';\nimport { useFetchCuratedDashboard } from 'shared/utils/DashboardHelper';\nimport { SeoHelper } from 'shared/utils/SeoHelper';\nimport { VideoAppLinkHelper } from 'shared/utils/VideoAppLinkHelper';\n\nimport { SeriesAppLinkHelper } from 'apps/series/SeriesAppLinkHelper';\n\nconst namespace = 'moviesAndTv.companyDashboard';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nconst companyAppLinks: WidgetAppLinks = {\n videoType: (video: VideoTypes, opts: GetVideoAppLinkOptions) => (\n VideoAppLinkHelper.getAppLink(video, {\n ...opts,\n moviesAndTv: true,\n context: RelatedVideosContext.Widget\n })\n ),\n\n series: SeriesAppLinkHelper.getSeriesAppLink,\n\n subText: (video: Video) => SeriesAppLinkHelper.getSeriesAppLink(video.series),\n\n playlist: (playlist: Playlist) => ({\n application: AppChannels.PLAYLISTS,\n action: Actions.Playlists.PLAYLIST,\n args: [ playlist.id, TextHelper.slugify(playlist.name) ]\n })\n};\n\ninterface CompanyDashboardViewProps {\n presentationSlug: string;\n companyId: string;\n queryParams?: DashboardViewQueryParams;\n}\n\nexport function CompanyDashboardView(props: CompanyDashboardViewProps): JSX.Element {\n const config = Flight.useBasicFetch<Config>(ConfigRequests.config());\n const company = Flight.useBasicFetch<Company>(CompanyRequests.company(props.companyId));\n const { openInCurationStudioLabel, isUserCurator, getOpenInCurationStudioLink } = useCurationStudio();\n const { hasNewMoviesAndTv, isLoadingSettings } = useSettings(null);\n\n const { setFavourite, canFavourite } = useLiteFavourites(LocationContext.ExpandableVideoThumbnail);\n const { hasPermissions, hasLocalPermissions } = usePermissions();\n\n const {\n dashboard,\n presentation,\n isPreviewing\n } = useFetchCuratedDashboard({\n targetType: DashboardTargetType.Company,\n queryParams: props.queryParams,\n presentationSlug: props.presentationSlug,\n companyId: props.companyId\n });\n\n useSetPageMetadata(PageMetadataHelper.getDefaultMetadata({\n title: company.data?.name,\n phraseContext: {\n phraseHandler: getPhrase,\n titlePhrase: 'pageTitle',\n descriptionPhrase: 'pageDescription'\n },\n canonicalLink: SeoHelper.getCanonicalLink({ stripPresentationSlug: true }),\n allowIndexing: false\n }));\n\n useDeepLinks({ id: props.companyId, app: 'studios' });\n\n React.useEffect(() => {\n if (isLoadingSettings || !dashboard.hasCompleted)\n return;\n\n if (hasNewMoviesAndTv && dashboard.data)\n return;\n\n Core.AppLinkHelper.trigger(\n { application: AppChannels.DASHBOARD, action: Actions.Dashboard.HOME },\n { replace: true }\n );\n }, [ hasNewMoviesAndTv, isLoadingSettings, dashboard.data, dashboard.hasCompleted ]);\n\n function getBreadcrumbs(): Breadcrumb[] {\n if (!company.hasCompleted)\n return [];\n\n return [{\n name: getPhrase('moviesAndTv'),\n appLink: {\n application: AppChannels.MOVIES_AND_TV,\n action: Actions.MoviesAndTv.HOME\n }\n }, {\n name: company.data.name,\n active: true\n }];\n }\n\n function getBannerActions(): ActionOptions[] {\n if (!isUserCurator)\n return [];\n\n return [{\n label: openInCurationStudioLabel,\n href: getOpenInCurationStudioLink(company.data?.typeId, company.data?.id),\n openInNewTab: true\n }];\n }\n\n React.useEffect(() => {\n if (!dashboard.hasCompleted || dashboard.data)\n return;\n\n Core.ErrorHelper.throw(new NotFoundError());\n }, [ dashboard.data, dashboard.hasCompleted ]);\n\n return (\n <div className='position-relative px-4'>\n {!!(isPreviewing && dashboard.data) && <PreviewBanner status={dashboard.data.status} type='company' />}\n <CompanyDashboard\n company={company.data}\n dashboard={dashboard.data}\n getWidgetContentRequest={DashboardRequests.dashboardWidgetContent}\n getBannerActions={getBannerActions}\n imageCdnUrl={config.data?.imageCdnUrl}\n resourceThumbnailFallbackImageUrl={ImageUrls.Fallbacks.RESOURCE_THUMBNAIL}\n presentation={presentation}\n widgetAppLinks={companyAppLinks}\n setFavourite={setFavourite}\n canFavourite={canFavourite}\n getBreadcrumbs={getBreadcrumbs}\n hasPermissions={hasPermissions}\n hasLocalPermissions={hasLocalPermissions}\n />\n </div>\n );\n}"],"names":["DashboardStatusConfig","Dashboard","svgName","svgColorClassName","actionName","statusName","getClassName","props","className","status","darkMode","wrapperClassName","DashboardStatusBadge","SvgContainer","getPhrase","LanguageService","PreviewBanner","EmojiText","emoji","type","PortalHelper","renderInPortalIfExists","component","portalContainer","createPortal","namespace","BackButton","textShadow","backToName","appLink","color","extraClasses","backPhrase","colorClass","textShadowClass","AppLink","size","S","defaultProps","RATIO","width","height","getSizeClass","heading","length","BannerHeader","banner","imageCdnUrl","actions","sortComponent","blockColourClass","specialEvent","portalContainerContext","BannerPortalContext","imageWidth","useBreakpoints","xxl","specialEventIsToday","showComingSoon","today","DateHelper","Date","endDate","startDate","imageOptions","ratio","resizeType","url","ImageHelper","fallbackBaseUrl","fallbackCategoryName","containerProps","bannerClassName","style","backgroundImage","DetailsComponent","detailsComponent","backButtonAppLink","backButtonText","backButtonClasses","alignLogoLeft","logo","GenericCalendarDate","body","text","month","theme","calendarTheme","Text","phrase","ComingSoonTag","LazyImage","src","Actions","actionsDropdownClassName","container","prevProps","nextProps","PartialBannerHeader","BreadcrumbItem","breadcrumb","name","active","withBackIcon","Breadcrumbs","breadcrumbs","isMobile","map","b","idx","key","PartialBreadcrumbs","numItems","dangerouslySetInnerHTML","__html","baseUrl","objectType","id","presentationId","baseManageUrl","baseExchangeUrl","href","getOpenInCurationStudioLabel","useCurationStudio","currentUser","userGroups","data","config","curatorGroups","Curator","openInCurationStudioLabel","isUserCurator","some","group","find","userGroup","getOpenInCurationStudioLink","curatorUrl","CompanyDashboardEmptyState","isArchived","dashboard","EmptyState","imageUrl","altText","Tooltip","title","spanHack","addWidgetApplink","icon","disabled","CompanyDashboard","widgets","ArrayHelper","getWidgetContentRequest","widgetTypeId","template","params","showEmptyState","isReadonly","company","getBgColorClass","getBannerActions","getBreadcrumbs","widget","WidgetContainerView","getContentRequest","audiences","description","templateId","metadata","presentation","setFavourite","canFavourite","appLinks","widgetAppLinks","isScrollToTargetWidget","scrollToWidgetId","widgetId","yearGroups","hasPermissions","hasLocalPermissions","isPreviewing","companyLogoFallbackUrl","subTextType","resourceThumbnailFallbackImageUrl","preferences","emptyImageUrl","widgetWizard","CompanyRequests","query","UrlHelper","publicUrl","companyAppLinks","videoType","video","opts","VideoAppLinkHelper","moviesAndTv","context","RelatedVideosContext","series","SeriesAppLinkHelper","subText","playlist","application","action","args","TextHelper","CompanyDashboardView","ConfigRequests","companyId","useSettings","hasNewMoviesAndTv","isLoadingSettings","useLiteFavourites","u","usePermissions","targetType","queryParams","presentationSlug","useSetPageMetadata","PageMetadataHelper","phraseContext","phraseHandler","titlePhrase","descriptionPhrase","canonicalLink","SeoHelper","stripPresentationSlug","allowIndexing","useDeepLinks","app","hasCompleted","replace","NotFoundError","DashboardRequests","label","typeId","openInNewTab","ImageUrls"],"sourceRoot":""}
1
+ {"version":3,"file":"scripts/1818-72409e60a9-lite.chunk.js","mappings":"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","sources":["file:///app/packages/libs/shared/src/apps/subjects/constants/DashboardStatusConfig.ts","file:///app/packages/libs/shared/src/apps/subjects/components/classification-dashboard/dashboard-status-badge/dashboard-status-badge.scss","file:///app/packages/libs/shared/src/apps/subjects/components/classification-dashboard/dashboard-status-badge/DashboardStatusBadge.tsx","file:///app/packages/libs/shared/src/apps/subjects/components/preview-banner/preview-banner.scss","file:///app/packages/libs/shared/src/apps/subjects/components/preview-banner/PreviewBanner.tsx","file:///app/packages/libs/common/src/react/utils/PortalHelper.ts","file:///app/packages/libs/shared/src/components/back-button/BackButton.tsx","file:///app/packages/libs/shared/src/components/banner-header/banner-header.scss","file:///app/packages/libs/shared/src/components/banner-header/BannerHeader.tsx","file:///app/packages/libs/shared/src/components/breadcrumbs/Breadcrumbs.tsx","file:///app/packages/libs/shared/src/hooks/useCurationStudio.ts","file:///app/packages/libs/shared/src/apps/movies-and-tv/components/company-dashboard/empty-state/CompanyDashboardEmptyState.tsx","file:///app/packages/libs/shared/src/apps/movies-and-tv/components/company-dashboard/CompanyDashboard.tsx","file:///app/packages/projects/lite/src/shared/flight-requests/CompanyRequests.ts","file:///app/packages/projects/lite/src/apps/movies-and-tv/views/company-dashboard/CompanyDashboardView.tsx"],"sourcesContent":["import { localSvgs } from 'libs/shared/images/svg';\nimport { DashboardStatus } from 'libs/shared/interfaces/models/Dashboard';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\ninterface DashboardStatusConfigType {\n statusName: string;\n actionName: string;\n svgName: localSvgs;\n svgColorClassName: string;\n}\n\nexport const DashboardStatusConfig: Record<DashboardStatus, DashboardStatusConfigType> = {\n [DashboardStatus.Archived]: {\n svgName: cvSvgLibrary.Archive,\n svgColorClassName: 'text-secondary',\n actionName: 'Archive',\n statusName: 'Archived'\n },\n [DashboardStatus.Draft]: {\n svgName: cvSvgLibrary.Edit,\n svgColorClassName: '',\n actionName: 'Draft',\n statusName: 'Draft'\n },\n [DashboardStatus.Published]: {\n svgName: cvSvgLibrary.VisibleOn,\n svgColorClassName: 'text-success',\n actionName: 'Publish',\n statusName: 'Published'\n }\n};","// extracted by mini-css-extract-plugin\nexport default {\"badge\":\"ciO47\",\"draftLight\":\"A6Yi7\",\"draftDark\":\"fkXBX\",\"published\":\"Ovzwy\",\"archived\":\"r_dco\"};","import React from 'react';\n\nimport { DashboardStatusConfig } from 'libs/shared/apps/subjects/constants/DashboardStatusConfig';\nimport { SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\nimport { DashboardStatus } from 'libs/shared/interfaces';\n\nimport styles from './dashboard-status-badge.scss';\n\nfunction getClassName(props: DashboardStatusBadgeProps): string {\n let className = `rounded-pill d-flex align-items-center ps-2 py-1 fw-semibold ms-2 ${styles.badge}`;\n\n switch (props.status) {\n case DashboardStatus.Published:\n className += ` ${styles.published}`;\n break;\n case DashboardStatus.Archived:\n className += ` ${styles.archived}`;\n break;\n case DashboardStatus.Draft:\n className += ` ${props.darkMode ? styles.draftDark : styles.draftLight}`;\n break;\n }\n\n if (props.wrapperClassName)\n className += ` ${props.wrapperClassName}`;\n\n return className;\n}\n\ninterface DashboardStatusBadgeProps {\n status: DashboardStatus;\n darkMode?: boolean;\n wrapperClassName?: string;\n}\n\nexport function DashboardStatusBadge(props: DashboardStatusBadgeProps): JSX.Element {\n const { statusName, svgName } = DashboardStatusConfig[props.status];\n\n return (\n <div className={getClassName(props)}>\n <SvgContainer svgName={svgName} />\n <div>{statusName}</div>\n </div>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"stickyWrapper\":\"zhw6K\",\"badgeWrapper\":\"NOvn1\",\"badge\":\"pxQSR\"};","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { DashboardStatusBadge } from 'libs/shared/apps/subjects/components/classification-dashboard/dashboard-status-badge/DashboardStatusBadge';\nimport { EmojiText } from 'libs/shared/components/emoji-text/EmojiText';\nimport { DashboardStatus } from 'libs/shared/interfaces';\n\nimport styles from './preview-banner.scss';\n\nconst namespace = 'shared.classificationPreviewBanner';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface PreviewBannerProps {\n status: DashboardStatus;\n type: 'company' | 'topic';\n}\n\nexport function PreviewBanner(props: PreviewBannerProps): JSX.Element {\n return (\n <div className={`${styles.stickyWrapper} py-2 d-flex justify-content-space-between bg-dark text-white mx-2 rounded`}>\n <div className={`position-absolute d-flex ${styles.badgeWrapper}`}>\n <DashboardStatusBadge status={props.status} wrapperClassName={`${styles.badge}`} darkMode />\n </div>\n <div className='flex-grow-1'>\n <h1 className='text-center my-3 h5'>\n <EmojiText emoji='👀' />\n {getPhrase(props.type === 'topic' ? 'topicTitle' : 'companyTitle')}\n </h1>\n </div>\n </div>\n );\n}\n","import React from 'react';\nimport { createPortal } from 'react-dom';\n\nexport const PortalHelper = {\n renderInPortalIfExists(component: React.ReactElement, portalContainer: Element | null): React.ReactElement {\n if (portalContainer)\n return createPortal(component, portalContainer);\n\n return component;\n }\n};","import * as React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Core } from 'libs/common/core';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { SvgContainer, SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nconst namespace = 'shared.backButton';\n\ninterface BackButtonProps {\n appLink: Core.AppLink;\n backToName?: string;\n color?: 'black' | 'white';\n extraClasses?: string;\n /**\n * Whether or not the button text has a text shadow. Defaults to true\n */\n textShadow?: boolean;\n}\n\nBackButton.defaultProps = {\n color: 'black',\n extraClasses: ''\n};\n\nexport function BackButton(props: BackButtonProps): React.ReactElement {\n const { backToName, appLink, color, extraClasses, textShadow } = {\n textShadow: true,\n ...props\n };\n\n const backPhrase = backToName\n ? LanguageService.getPhrase(namespace, 'backTo', { backToName })\n : LanguageService.getPhrase(namespace, 'back');\n\n const colorClass = color === 'black' ? '' : 'text-white';\n const textShadowClass = textShadow ? 'text-shadow' : '';\n\n return (\n <AppLink\n appLink={appLink}\n className={`d-inline-flex align-items-center h5 mb-0 ${extraClasses} ${colorClass} ${textShadowClass}`}\n >\n <SvgContainer svgName={cvSvgLibrary.ChevronLeft} size={SvgContainerSize.Medium} />\n <span className='ms-1'>{backPhrase}</span>\n </AppLink>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"bannerContent\":\"sSCTB\",\"actionsContainer\":\"Z5WI2\",\"bannerContentWithLogo\":\"rgs7Q\",\"container\":\"M51HJ\",\"logoContainer\":\"vkeJk\",\"logoContainerLeft\":\"M3U9B\",\"logoHeading\":\"EtRwC\",\"specialEventContainer\":\"rOxDc\",\"headingLarge\":\"_8pnV\",\"heading\":\"JXVBH\"};","import * as React from 'react';\n\nimport { Core } from 'libs/common/core';\nimport { DateHelper } from 'libs/common/react/utils/DateHelper';\nimport { PortalHelper } from 'libs/common/react/utils/PortalHelper';\n\nimport { ComingSoonTag } from 'libs/shared/apps/calendar/components/coming-soon-tag/ComingSoonTag';\nimport { GenericCalendarDate } from 'libs/shared/apps/calendar/components/generic-calendar-date/GenericCalendarDate';\nimport { CalendarTheme } from 'libs/shared/apps/calendar/interfaces/CalendarTheme';\nimport { ActionOptions, Actions } from 'libs/shared/components/actions/Actions';\nimport { BackButton } from 'libs/shared/components/back-button/BackButton';\nimport { LazyImage } from 'libs/shared/components/lazy-image/LazyImage';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { ImageMinDimensions } from 'libs/shared/constants/ImageSizes';\nimport { BannerPortalContext } from 'libs/shared/context/BannerPortalContext';\nimport { ImageSize, ImageType, ResizeType } from 'libs/shared/enums/Images';\nimport { useBreakpoints } from 'libs/shared/hooks/useBreakpoints';\nimport { Banner, CalendarEvent, Logo } from 'libs/shared/interfaces';\nimport { ImageHelper, ImageOptions } from 'libs/shared/utils/ImageHelper';\n\nimport styles from './banner-header.scss';\n\nconst RATIO = `${ImageMinDimensions[ImageType.Banners].width}:${ImageMinDimensions[ImageType.Banners].height}`;\nconst DEFAULT_WIDTH = 1200; // This is ImageSize.Large for a Banner.\nconst LARGE_SCREEN_WIDTH = 1920;\n\nfunction useGetImageWidth(): number {\n const breakpoints = useBreakpoints();\n\n if (breakpoints.xxl)\n return LARGE_SCREEN_WIDTH;\n\n return DEFAULT_WIDTH;\n}\n\nfunction getSizeClass(heading: string): string {\n if (heading.length < 160)\n return 'h1';\n\n return styles.headingLarge;\n}\n\ninterface BannerHeaderProps {\n heading: string;\n banner?: Banner;\n bannerClassName?: string;\n imageCdnUrl?: string;\n logo?: Logo;\n actions?: ActionOptions[];\n specialEvent?: CalendarEvent;\n backButtonAppLink?: Core.AppLink;\n backButtonText?: string;\n backButtonClasses?: string;\n sortComponent?: JSX.Element;\n blockColourClass?: string;\n actionsDropdownClassName?: string;\n detailsComponent?: () => React.ReactElement;\n imageOptions?: ImageOptions;\n showComingSoon?: boolean;\n alignLogoLeft?: boolean;\n calendarTheme?: CalendarTheme;\n}\n\nconst namespace = 'shared.bannerHeader';\n\nexport const BannerHeader = React.memo(function(props: React.PropsWithChildren<BannerHeaderProps>): React.ReactElement {\n const { heading, banner, imageCdnUrl, actions, sortComponent, blockColourClass, specialEvent } = props;\n\n const portalContainerContext = React.useContext(BannerPortalContext);\n\n const imageWidth = useGetImageWidth();\n\n const specialEventIsToday = React.useMemo(() => {\n if (!specialEvent || props.showComingSoon)\n return false;\n\n const today = DateHelper.format(new Date(), 'YYYY-MM-DD');\n\n if (!specialEvent.endDate)\n return specialEvent.startDate === today;\n\n return specialEvent.startDate <= today && specialEvent.endDate >= today;\n }, [specialEvent]);\n\n const imageOptions = props.imageOptions || {\n width: imageWidth,\n ratio: RATIO,\n resizeType: ResizeType.Cover\n };\n\n const url = !!banner && !!imageCdnUrl && ImageHelper.createBannerUrl(banner, {\n fallbackBaseUrl: imageCdnUrl,\n fallbackCategoryName: heading,\n type: ImageType.Banners\n }, imageOptions);\n\n const containerProps: React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement> = {\n className: `banner banner-header ${props.bannerClassName}`,\n style: url ? { backgroundImage: `url('${url}')` } : {}\n };\n\n if (!banner && blockColourClass) {\n delete containerProps.style;\n containerProps.className += ` ${blockColourClass}`;\n }\n\n const DetailsComponent = props.detailsComponent;\n\n return PortalHelper.renderInPortalIfExists(\n // \"banner\" is used in playlists in Online. banner-header is used by all other projects\n <header {...containerProps}>\n <div className={`container ${styles.container} position-relative inner-banner`}>\n {props.backButtonAppLink && (\n <div className='pt-3'>\n <BackButton\n appLink={props.backButtonAppLink}\n backToName={props.backButtonText}\n extraClasses={props.backButtonClasses}\n color='white'\n />\n </div>\n )}\n \n <div className={`${props.alignLogoLeft ? 'position-absolute top-50 start-0 translate-middle-y w-100 ps-4' : `${styles.bannerContent} ${props.logo?.url ? styles.bannerContentWithLogo : ''}`}`}>\n {!!specialEvent && (\n <div className={`position-relative ${styles.specialEventContainer}`}>\n <GenericCalendarDate\n body={{\n type: specialEvent.endDate ? 'range' : 'day',\n text: specialEvent.endDate\n ? `${DateHelper.format(specialEvent.startDate, 'DD')}-${DateHelper.format(specialEvent.endDate, 'DD')}`\n : DateHelper.format(specialEvent.startDate, 'DD')\n }}\n month={DateHelper.format(specialEvent.startDate, 'MMMM')}\n theme={props.calendarTheme}\n />\n </div>\n )}\n <div>\n {specialEventIsToday && (\n <div className='rounded-pill py-1 px-2 my-1 me-1 fw-semibold bg-light-blue lh-1 d-inline-block'>\n <Text namespace={namespace} phrase='onToday' />\n </div>\n )}\n {props.showComingSoon && (\n <ComingSoonTag className='pe-2 fw-semibold mb-1 rounded-pill justify-content-start text-nowrap' />\n )}\n <div className='d-flex align-items-center'>\n {props.alignLogoLeft &&\n <div className={`${styles.logoContainerLeft} d-none d-md-block partial-loading-background rounded-circle overflow-hidden me-3`}>\n {props.logo?.url &&\n <LazyImage src={ImageHelper.createUrl(props.logo?.url, { size: ImageSize.Small })} />}\n </div>\n }\n <h1 className={`text-white text-shadow pe-3 ${styles.heading} ${getSizeClass(heading)} ${props.alignLogoLeft ? 'w-50' : ''}`}>\n {heading}\n {DetailsComponent && <DetailsComponent />}\n </h1>\n </div>\n </div>\n {!!actions && (\n <div className={styles.actionsContainer}>\n <Actions\n actions={actions}\n sortComponent={sortComponent}\n actionsDropdownClassName={props.actionsDropdownClassName}\n />\n </div>\n )}\n </div>\n {!props.alignLogoLeft && !!props.logo?.url &&\n <div className={styles.logoContainer}>\n <img\n src={ImageHelper.createUrl(props.logo.url, { size: ImageSize.Small })}\n className='rounded-circle'\n />\n </div>\n }\n </div>\n </header>,\n portalContainerContext?.container\n );\n}, (prevProps, nextProps): boolean => (\n prevProps.actions === nextProps.actions\n && prevProps.heading === nextProps.heading\n && prevProps.logo?.url === nextProps.logo?.url\n));\n\nexport function PartialBannerHeader(): JSX.Element {\n const portalContainerContext = React.useContext(BannerPortalContext);\n\n return PortalHelper.renderInPortalIfExists(\n <div className={`partial-banner partial-loading-background ${styles.banner}`} />,\n portalContainerContext?.container\n );\n}","import * as React from 'react';\n\nimport { Core } from 'libs/common/core';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { MediaQueryStrings } from 'libs/shared/enums/MediaQueries';\nimport { useMediaQuery } from 'libs/shared/hooks/UseMediaQuery';\nimport { PartialLoadingHelper } from 'libs/shared/utils/PartialLoadingHelper';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport { SvgContainer, SvgContainerSize } from '../svg-container/SvgContainer';\n\nexport interface Breadcrumb {\n name: string;\n appLink?: Core.AppLink;\n active?: boolean;\n}\n\ninterface BreadcrumbItemProps {\n breadcrumb: Breadcrumb;\n withBackIcon?: boolean;\n}\n\nexport const BreadcrumbItem = ({ breadcrumb: { name, appLink, active }, withBackIcon }: BreadcrumbItemProps) => (\n <li className={`breadcrumb-item${active ? ' active' : ''}`}>\n {active\n ? <strong>{name}</strong>\n : <AppLink appLink={appLink}>\n {withBackIcon && <SvgContainer svgName={cvSvgLibrary.ChevronLeft} size={SvgContainerSize.Small} />}\n <span className={withBackIcon ? 'ms-2' : ''}>{name}</span>\n </AppLink>\n }\n </li>\n);\n\ninterface BreadcrumbsProps {\n breadcrumbs: Breadcrumb[];\n}\n\nexport const Breadcrumbs = ({ breadcrumbs }: BreadcrumbsProps) => {\n const isMobile = useMediaQuery(MediaQueryStrings.XS);\n\n const length = breadcrumbs?.length;\n\n if (!length || (isMobile && length < 2))\n return <></>;\n\n if (isMobile)\n return (\n <nav aria-label='breadcrumb'>\n <ol className='breadcrumb m-0 p-0'>\n <BreadcrumbItem breadcrumb={breadcrumbs[length - 2]} withBackIcon />\n </ol>\n </nav>\n );\n\n return (\n <nav aria-label='breadcrumb'>\n <ol className='breadcrumb m-0 p-0'>\n {breadcrumbs.map((b, idx) => <BreadcrumbItem key={idx} breadcrumb={b} />)}\n </ol>\n </nav>\n );\n};\n\nexport const PartialBreadcrumbs = React.memo(function({ numItems = 3 }: { numItems?: number; }) {\n const isMobile = useMediaQuery(MediaQueryStrings.XS);\n\n if (isMobile) {\n return (\n <div className='partial-loading-background' style={{ height: '1.3125rem', width: '6rem' }} />\n );\n }\n\n return (\n <nav aria-label='breadcrumb'>\n <ol className='breadcrumb m-0 p-0'>\n {PartialLoadingHelper.getPartialLoadingItems({ numItems }).map(({ width }, idx) => (\n <li key={idx} className='breadcrumb-item'>\n <span className='d-inline-block partial-loading-background' style={{ width }} dangerouslySetInnerHTML={{ __html: '&nbsp' }} />\n </li>\n ))}\n </ol>\n </nav>\n );\n});","import { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { UrlHelper } from 'libs/common/backbone/utils/UrlHelper';\nimport { Flight } from 'libs/common/react/index';\n\nimport { CuratorGroup } from 'libs/shared/enums/CuratorGroup';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { ConfigRequests } from 'libs/shared/flight-requests/ConfigRequests';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { Config, CuratorUserGroupCollection, CurrentUser } from 'libs/shared/interfaces';\n\nconst namespace = 'shared.hooks';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nexport function getOpenInCurationStudioLink(\n baseUrl: string,\n objectType: MasterType | string,\n id: string,\n presentationId?: string\n) {\n const baseManageUrl = UrlHelper.safeUrlConcat(baseUrl, 'manage');\n const baseExchangeUrl = UrlHelper.safeUrlConcat(baseUrl, 'exchange');\n const href = (baseUrl: string, objectType: string, id: string) => UrlHelper.safeUrlConcat(baseUrl, `${objectType}/${id}`);\n\n switch (objectType) {\n case MasterType.Subject:\n return UrlHelper.safeUrlConcat(baseManageUrl, `subjects/presentations/${presentationId}/classifications/${id}/edit`);\n case MasterType.Video:\n return href(baseManageUrl, 'videos', id);\n case MasterType.Playlist:\n return href(baseManageUrl, 'playlists', id);\n case MasterType.Series:\n return href(baseManageUrl, 'series', id);\n case MasterType.Company:\n return href(baseManageUrl, 'companies', id);\n case MasterType.Interactive:\n return href(baseManageUrl, 'interactives', id);\n case MasterType.Clip:\n return href(baseManageUrl, 'clips', id);\n case MasterType.Category:\n return href(baseExchangeUrl, 'categories', id);\n }\n}\n\nexport function getOpenInCurationStudioLabel(): string {\n return getPhrase('openInCurationStudio');\n}\n\nexport function useCurationStudio() {\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n const { data: userGroups } = Flight.useBasicFetch<CuratorUserGroupCollection>(\n (currentUser.data?.id) && UserRequests.groups(currentUser.data?.id)\n );\n const config = Flight.useBasicFetch<Config>(ConfigRequests.config());\n \n const curatorGroups = [ CuratorGroup.Curator, CuratorGroup.Content, CuratorGroup.Developer ];\n\n function isUserCurator(): boolean {\n return curatorGroups.some(group => userGroups?.data.find(userGroup => userGroup.name === group));\n }\n\n return {\n openInCurationStudioLabel: getOpenInCurationStudioLabel(),\n isUserCurator: isUserCurator(),\n getOpenInCurationStudioLink: (objectType: MasterType | string, id: string, presentationId?: string) =>\n getOpenInCurationStudioLink(config.data?.curatorUrl, objectType, id, presentationId)\n };\n}\n","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { EmptyState } from 'libs/shared/components/empty-states/EmptyState';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { Tooltip } from 'libs/shared/components/tooltip/Tooltip';\nimport { CuratedDashboard, DashboardStatus } from 'libs/shared/interfaces';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nconst namespace = 'moviesAndTv.companyDashboardEmptyState';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface CompanyDashboardEmptyStateProps {\n dashboard: CuratedDashboard;\n imageUrl: string;\n isReadonly: boolean;\n addWidgetApplink?: () => Core.AppLink;\n}\n\nexport function CompanyDashboardEmptyState(props: CompanyDashboardEmptyStateProps): JSX.Element {\n const isArchived = props.dashboard?.status === DashboardStatus.Archived;\n\n return (\n <EmptyState>\n <EmptyState.Image src={props.imageUrl} altText={getPhrase('info')} />\n <EmptyState.Heading>\n <Text namespace={namespace} phrase='heading' />\n </EmptyState.Heading>\n <EmptyState.Info>\n <Text namespace={namespace} phrase='info' />\n </EmptyState.Info>\n <Tooltip title={isArchived ? LanguageService.getPhrase(namespace, 'archivedCtaTooltip') : ''} spanHack>\n <EmptyState.Cta\n text={LanguageService.getPhrase(namespace, 'add')}\n appLink={props.addWidgetApplink?.()}\n className='btn btn-dark'\n icon={cvSvgLibrary.Plus}\n disabled={isArchived}\n />\n </Tooltip>\n </EmptyState>\n );\n}","import React from 'react';\n\nimport { Flight } from 'libs/common/flight';\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\n\nimport { CompanyDashboardEmptyState } from 'libs/shared/apps/movies-and-tv/components/company-dashboard/empty-state/CompanyDashboardEmptyState';\nimport { ActionOptions } from 'libs/shared/components/actions/Actions';\nimport { BannerHeader, PartialBannerHeader } from 'libs/shared/components/banner-header/BannerHeader';\nimport { Breadcrumb, Breadcrumbs } from 'libs/shared/components/breadcrumbs/Breadcrumbs';\nimport { VideoSubTextType } from 'libs/shared/components/video-sub-text/VideoSubText';\nimport { WidgetContainerView } from 'libs/shared/components/widgets/curated-widgets/WidgetContainerView';\nimport { WidgetAppLinks } from 'libs/shared/components/widgets/curated-widgets/WidgetProps';\nimport { BG_COLOUR_CLASS_NAMES } from 'libs/shared/constants/ColourClassNames';\nimport { WidgetTemplate } from 'libs/shared/enums/WidgetTemplate';\nimport { WidgetTypeId } from 'libs/shared/enums/WidgetTypeId';\nimport { HasLocalPermissionsFunc, HasPermissionsFunc } from 'libs/shared/hooks/usePermissions';\nimport { CanFavouriteFunc, Company, CuratedDashboard, CuratedWidgetQueryParams, FavouriteFunc, Presentation, PresentationAudience, YearGroup } from 'libs/shared/interfaces';\nimport { CuratedDashboardHelper } from 'libs/shared/utils/DashboardHelper';\nimport { getBgColorClass } from 'libs/shared/utils/getBgColorClass';\n\ninterface CompanyDashboardProps {\n dashboard: CuratedDashboard;\n company: Company;\n getWidgetContentRequest: (\n id: string,\n params: CuratedWidgetQueryParams,\n widgetTemplate: WidgetTemplate\n ) => Flight.Request;\n imageCdnUrl: string;\n hasPermissions: HasPermissionsFunc;\n hasLocalPermissions: HasLocalPermissionsFunc;\n resourceThumbnailFallbackImageUrl: string;\n audiences?: PresentationAudience[];\n emptyImageUrl?: string;\n presentation: Presentation;\n setFavourite?: FavouriteFunc;\n canFavourite?: CanFavouriteFunc;\n widgetAppLinks?: WidgetAppLinks;\n scrollToWidgetId?: string;\n isReadonly?: boolean;\n yearGroups?: YearGroup[];\n getBreadcrumbs?: () => Breadcrumb[];\n getBannerActions?: () => ActionOptions[];\n companyLogoFallbackUrl?: string;\n subTextType?: VideoSubTextType;\n}\n\nexport function CompanyDashboard(props: CompanyDashboardProps): JSX.Element {\n const widgets = ArrayHelper.sortBy(props.dashboard?.widgets, 'index');\n\n function getWidgetContentRequest(id: string, widgetTypeId: WidgetTypeId, template: WidgetTemplate): Flight.Request {\n const params = CuratedDashboardHelper.getWidgetParams(\n widgetTypeId,\n template,\n CuratedDashboardHelper.getDashboardTargetType(props.dashboard)\n );\n\n return props.getWidgetContentRequest(id, params, template);\n }\n\n const showEmptyState = props.isReadonly && !widgets?.length;\n\n return (\n <>\n {!!widgets.length &&\n <>\n {props.company\n ? (\n <BannerHeader\n heading={props.company.name}\n banner={props.company.banner}\n imageCdnUrl={props.imageCdnUrl}\n blockColourClass={getBgColorClass(props.company.name, BG_COLOUR_CLASS_NAMES)}\n actions={props.getBannerActions?.()}\n actionsDropdownClassName='btn btn-outline-dark'\n />\n ) : <PartialBannerHeader />\n }\n\n <div className='py-3 mb-3 border-bottom'>\n <Breadcrumbs breadcrumbs={props.getBreadcrumbs?.()} />\n </div>\n\n <div className='mt-3'>\n {widgets.map(widget => {\n return (\n <WidgetContainerView\n key={widget.id}\n id={widget.id}\n imageCdnUrl={props.imageCdnUrl}\n getContentRequest={getWidgetContentRequest}\n audiences={props.audiences}\n name={widget.name}\n description={widget.description}\n templateId={widget.templateId}\n metadata={widget.metadata}\n presentation={props.presentation}\n setFavourite={props.setFavourite}\n canFavourite={props.canFavourite}\n appLinks={props.widgetAppLinks}\n isScrollToTargetWidget={props?.scrollToWidgetId === widget.id}\n widgetTypeId={widget.widgetId}\n yearGroups={props.yearGroups}\n hasPermissions={props.hasPermissions}\n hasLocalPermissions={props.hasLocalPermissions}\n isPreviewing={props.isReadonly}\n companyLogoFallbackUrl={props.companyLogoFallbackUrl}\n subTextType={props.subTextType}\n resourceThumbnailFallbackImageUrl={props.resourceThumbnailFallbackImageUrl}\n preferences={widget.preferences}\n />\n );\n })}\n </div>\n </>\n }\n\n {showEmptyState && (\n <CompanyDashboardEmptyState\n dashboard={props.dashboard}\n isReadonly={props.isReadonly}\n imageUrl={props.emptyImageUrl}\n addWidgetApplink={props.widgetAppLinks.widgetWizard}\n />\n )}\n </>\n );\n}","import { UrlHelper } from 'libs/common/backbone/utils/UrlHelper';\nimport { Flight } from 'libs/common/flight';\n\nexport const CompanyRequests = {\n company(id: string): Flight.PublicRequest {\n const params = { query: 'banner' };\n\n return {\n url: UrlHelper.urlBuilder(`{gateway}/v1/objects/${id}`, params),\n publicUrl: UrlHelper.urlBuilder(`/api/objects/${id}`, params),\n key: `company:${id}`\n };\n }\n};","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Core } from 'libs/common/core';\nimport { Flight } from 'libs/common/flight';\nimport { TextHelper } from 'libs/common/react/utils/TextHelper';\n\nimport { LocationContext } from 'libs/analytics/interfaces';\n\nimport { CompanyDashboard } from 'libs/shared/apps/movies-and-tv/components/company-dashboard/CompanyDashboard';\nimport { PreviewBanner } from 'libs/shared/apps/subjects/components/preview-banner/PreviewBanner';\nimport { ActionOptions } from 'libs/shared/components/actions/Actions';\nimport { Breadcrumb } from 'libs/shared/components/breadcrumbs/Breadcrumbs';\nimport { WidgetAppLinks } from 'libs/shared/components/widgets/curated-widgets/WidgetProps';\nimport { RelatedVideosContext } from 'libs/shared/enums/RelatedVideosContext';\nimport { NotFoundError } from 'libs/shared/errors/general/not-found/NotFoundError';\nimport { ConfigRequests } from 'libs/shared/flight-requests/ConfigRequests';\nimport { DashboardRequests } from 'libs/shared/flight-requests/DashboardRequests';\nimport { useCurationStudio } from 'libs/shared/hooks/useCurationStudio';\nimport { usePermissions } from 'libs/shared/hooks/usePermissions';\nimport { useSetPageMetadata } from 'libs/shared/hooks/useSetPageMetadata';\nimport { useSettings } from 'libs/shared/hooks/useSettings';\nimport { Company, Config, DashboardTargetType, Playlist, Video, VideoTypes } from 'libs/shared/interfaces';\nimport { GetVideoAppLinkOptions } from 'libs/shared/interfaces/VideoAppLinkOptions';\nimport { PageMetadataHelper } from 'libs/shared/utils/PageMetadataHelper';\n\nimport { ImageUrls } from 'shared/constants/ImageUrls';\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\nimport { CompanyRequests } from 'shared/flight-requests/CompanyRequests';\nimport { useDeepLinks } from 'shared/hooks/useDeepLinks';\nimport { useLiteFavourites } from 'shared/hooks/useLiteFavourites';\nimport { DashboardViewQueryParams } from 'shared/interfaces/query-params/DashboardViewQueryParams';\nimport { useFetchCuratedDashboard } from 'shared/utils/DashboardHelper';\nimport { SeoHelper } from 'shared/utils/SeoHelper';\nimport { VideoAppLinkHelper } from 'shared/utils/VideoAppLinkHelper';\n\nimport { SeriesAppLinkHelper } from 'apps/series/SeriesAppLinkHelper';\n\nconst namespace = 'moviesAndTv.companyDashboard';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nconst companyAppLinks: WidgetAppLinks = {\n videoType: (video: VideoTypes, opts: GetVideoAppLinkOptions) => (\n VideoAppLinkHelper.getAppLink(video, {\n ...opts,\n moviesAndTv: true,\n context: RelatedVideosContext.Widget\n })\n ),\n\n series: SeriesAppLinkHelper.getSeriesAppLink,\n\n subText: (video: Video) => SeriesAppLinkHelper.getSeriesAppLink(video.series),\n\n playlist: (playlist: Playlist) => ({\n application: AppChannels.PLAYLISTS,\n action: Actions.Playlists.PLAYLIST,\n args: [ playlist.id, TextHelper.slugify(playlist.name) ]\n })\n};\n\ninterface CompanyDashboardViewProps {\n presentationSlug: string;\n companyId: string;\n queryParams?: DashboardViewQueryParams;\n}\n\nexport function CompanyDashboardView(props: CompanyDashboardViewProps): JSX.Element {\n const config = Flight.useBasicFetch<Config>(ConfigRequests.config());\n const company = Flight.useBasicFetch<Company>(CompanyRequests.company(props.companyId));\n const { openInCurationStudioLabel, isUserCurator, getOpenInCurationStudioLink } = useCurationStudio();\n const { hasNewMoviesAndTv, isLoadingSettings } = useSettings(null);\n\n const { setFavourite, canFavourite } = useLiteFavourites(LocationContext.ExpandableVideoThumbnail);\n const { hasPermissions, hasLocalPermissions } = usePermissions();\n\n const {\n dashboard,\n presentation,\n isPreviewing\n } = useFetchCuratedDashboard({\n targetType: DashboardTargetType.Company,\n queryParams: props.queryParams,\n presentationSlug: props.presentationSlug,\n companyId: props.companyId\n });\n\n useSetPageMetadata(PageMetadataHelper.getDefaultMetadata({\n title: company.data?.name,\n phraseContext: {\n phraseHandler: getPhrase,\n titlePhrase: 'pageTitle',\n descriptionPhrase: 'pageDescription'\n },\n canonicalLink: SeoHelper.getCanonicalLink({ stripPresentationSlug: true }),\n allowIndexing: false\n }));\n\n useDeepLinks({ id: props.companyId, app: 'studios' });\n\n React.useEffect(() => {\n if (isLoadingSettings || !dashboard.hasCompleted)\n return;\n\n if (hasNewMoviesAndTv && dashboard.data)\n return;\n\n Core.AppLinkHelper.trigger(\n { application: AppChannels.DASHBOARD, action: Actions.Dashboard.HOME },\n { replace: true }\n );\n }, [ hasNewMoviesAndTv, isLoadingSettings, dashboard.data, dashboard.hasCompleted ]);\n\n function getBreadcrumbs(): Breadcrumb[] {\n if (!company.hasCompleted)\n return [];\n\n return [{\n name: getPhrase('moviesAndTv'),\n appLink: {\n application: AppChannels.MOVIES_AND_TV,\n action: Actions.MoviesAndTv.HOME\n }\n }, {\n name: company.data.name,\n active: true\n }];\n }\n\n function getBannerActions(): ActionOptions[] {\n if (!isUserCurator)\n return [];\n\n return [{\n label: openInCurationStudioLabel,\n href: getOpenInCurationStudioLink(company.data?.typeId, company.data?.id),\n openInNewTab: true\n }];\n }\n\n React.useEffect(() => {\n if (!dashboard.hasCompleted || dashboard.data)\n return;\n\n Core.ErrorHelper.throw(new NotFoundError());\n }, [ dashboard.data, dashboard.hasCompleted ]);\n\n return (\n <div className='position-relative px-4'>\n {!!(isPreviewing && dashboard.data) && <PreviewBanner status={dashboard.data.status} type='company' />}\n <CompanyDashboard\n company={company.data}\n dashboard={dashboard.data}\n getWidgetContentRequest={DashboardRequests.dashboardWidgetContent}\n getBannerActions={getBannerActions}\n imageCdnUrl={config.data?.imageCdnUrl}\n resourceThumbnailFallbackImageUrl={ImageUrls.Fallbacks.RESOURCE_THUMBNAIL}\n presentation={presentation}\n widgetAppLinks={companyAppLinks}\n setFavourite={setFavourite}\n canFavourite={canFavourite}\n getBreadcrumbs={getBreadcrumbs}\n hasPermissions={hasPermissions}\n hasLocalPermissions={hasLocalPermissions}\n />\n </div>\n );\n}"],"names":["DashboardStatusConfig","Dashboard","svgName","svgColorClassName","actionName","statusName","getClassName","props","className","status","darkMode","wrapperClassName","DashboardStatusBadge","SvgContainer","getPhrase","LanguageService","PreviewBanner","EmojiText","emoji","type","PortalHelper","renderInPortalIfExists","component","portalContainer","createPortal","namespace","BackButton","textShadow","backToName","appLink","color","extraClasses","backPhrase","colorClass","textShadowClass","AppLink","size","S","defaultProps","RATIO","width","height","getSizeClass","heading","length","BannerHeader","banner","imageCdnUrl","actions","sortComponent","blockColourClass","specialEvent","portalContainerContext","BannerPortalContext","imageWidth","useBreakpoints","xxl","specialEventIsToday","showComingSoon","today","DateHelper","Date","endDate","startDate","imageOptions","ratio","resizeType","url","ImageHelper","fallbackBaseUrl","fallbackCategoryName","containerProps","bannerClassName","style","backgroundImage","DetailsComponent","detailsComponent","backButtonAppLink","backButtonText","backButtonClasses","alignLogoLeft","logo","GenericCalendarDate","body","text","month","theme","calendarTheme","Text","phrase","ComingSoonTag","LazyImage","src","Actions","actionsDropdownClassName","container","prevProps","nextProps","PartialBannerHeader","BreadcrumbItem","breadcrumb","name","active","withBackIcon","Breadcrumbs","breadcrumbs","isMobile","map","b","idx","key","PartialBreadcrumbs","numItems","dangerouslySetInnerHTML","__html","baseUrl","objectType","id","presentationId","baseManageUrl","baseExchangeUrl","href","getOpenInCurationStudioLabel","useCurationStudio","currentUser","userGroups","data","config","curatorGroups","Curator","openInCurationStudioLabel","isUserCurator","some","group","find","userGroup","getOpenInCurationStudioLink","curatorUrl","CompanyDashboardEmptyState","isArchived","dashboard","EmptyState","imageUrl","altText","Tooltip","title","spanHack","addWidgetApplink","icon","disabled","CompanyDashboard","widgets","ArrayHelper","getWidgetContentRequest","widgetTypeId","template","params","showEmptyState","isReadonly","company","getBgColorClass","getBannerActions","getBreadcrumbs","widget","WidgetContainerView","getContentRequest","audiences","description","templateId","metadata","presentation","setFavourite","canFavourite","appLinks","widgetAppLinks","isScrollToTargetWidget","scrollToWidgetId","widgetId","yearGroups","hasPermissions","hasLocalPermissions","isPreviewing","companyLogoFallbackUrl","subTextType","resourceThumbnailFallbackImageUrl","preferences","emptyImageUrl","widgetWizard","CompanyRequests","query","UrlHelper","publicUrl","companyAppLinks","videoType","video","opts","VideoAppLinkHelper","moviesAndTv","context","RelatedVideosContext","series","SeriesAppLinkHelper","subText","playlist","application","action","args","TextHelper","CompanyDashboardView","ConfigRequests","companyId","useSettings","hasNewMoviesAndTv","isLoadingSettings","useLiteFavourites","u","usePermissions","targetType","queryParams","presentationSlug","useSetPageMetadata","PageMetadataHelper","phraseContext","phraseHandler","titlePhrase","descriptionPhrase","canonicalLink","SeoHelper","stripPresentationSlug","allowIndexing","useDeepLinks","app","hasCompleted","replace","NotFoundError","DashboardRequests","label","typeId","openInNewTab","ImageUrls"],"sourceRoot":""}
@@ -1,2 +1,2 @@
1
1
  "use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[1863],{82872:(e,t,n)=>{n.d(t,{t:()=>w});var r=n(32735),a=n(91967),o=n(11607),i=n(83914),c=n(4594),l=n(76881),s=n(36511),u=n(45778),m=n(35223),d=n(64818),p=n(80247),f=n(23481);const v={avatar:"srrS3"};function g(e){var t=e.imageUrl,n=e.initials,a={};return t&&(a.backgroundImage="url('".concat(t,"')")),r.createElement("div",{className:v.avatar,style:a},t?r.createElement(r.Fragment,null," "):n)}var y=n(76177);const b={svgContainer:"laVU4",selection:"vEOCt",expander:"d1NHd",iconContainer:"rFH4W",icon:"BarYz",bubble:"HF0E8",spinnerContainer:"iKeXW",remove:"pyzCM",removeBubble:"mgt6Y"};var h=f.T.encloseNamespace("shared.inputSelection");function E(e){var t,n="".concat(b.svgContainer," ").concat(b.icon);return e.typeId===c.E.Classroom?n+=" text-teal":n+=" text-".concat((0,s.I)(null===(t=e.metadata)||void 0===t?void 0:t.colour)),n}function C(e){var t,n=function(e){var t;switch(e.typeId){case c.E.Classroom:return"text-teal-hover";case c.E.ClassroomGroup:return"text-".concat((0,s.I)(null===(t=e.metadata)||void 0===t?void 0:t.colour),"-hover")}}(e.selection),a=e.selection.typeId===c.E.Classroom;if(!e.canExpand){if(!e.selection.typeId||e.selection.typeId===c.E.User){var l=e.selection;return r.createElement("div",{className:b.svgContainer},r.createElement(g,{imageUrl:null===(t=l.avatar)||void 0===t?void 0:t.url,initials:d.l.getInitials(e.selection.name,e.selection.surname)}))}return r.createElement(y.u,{title:h(a?"emptyClassroom":"emptyGroup")},r.createElement("div",{className:"align-items-center border border-white bg-white ".concat(b.iconContainer)},r.createElement(i.x,{className:E(e.selection),svgName:a?m.vn.Classrooms:m.vn.Group})))}return e.hasExpanded?r.createElement("div",{className:"d-flex align-items-center text-white ".concat(b.spinnerContainer," ").concat(b.svgContainer)},r.createElement(p.Z,{as:"div",size:"sm",animation:"border",role:"status"})):r.createElement(r.Fragment,null,r.createElement(o.L,{className:"align-items-center cursor-pointer text-white border border-white rounded-circle ".concat(b.expander," ").concat(n),onClick:e.onClickExpand},r.createElement(i.x,{svgName:m.vn.Plus,className:"d-flex align-items-center ".concat(b.svgContainer)})),r.createElement("div",{className:"align-items-center border border-white bg-white ".concat(b.iconContainer)},r.createElement(i.x,{className:E(e.selection),svgName:a?m.vn.Classrooms:m.vn.Group})))}function x(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,o,i,c=[],l=!0,s=!1;try{if(o=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;l=!1}else for(;!(l=(r=o.call(n)).done)&&(c.push(r.value),c.length!==t);l=!0);}catch(e){s=!0,a=e}finally{try{if(!l&&null!=n.return&&(i=n.return(),Object(i)!==i))return}finally{if(s)throw a}}return c}}(e,t)||function(e,t){if(e){if("string"==typeof e)return k(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)?k(e,t):void 0}}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function k(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 N(e){var t;if(!e.typeId)return"dark-blue";switch(e.typeId){case c.E.User:return"number"==typeof e.userType?2===e.userType?"dark-blue":"indigo":e.userType===l.Y.Learner?"dark-blue":"indigo";case c.E.Classroom:return"teal";case c.E.ClassroomGroup:return(0,s.I)(null===(t=e.metadata)||void 0===t?void 0:t.colour)}}function w(e){var t,n,a,l=u.G.isType(e.selection,c.E.Classroom),s=u.G.isType(e.selection,c.E.ClassroomGroup),d=e.onClickExpand&&(l||s),p=!!(null===(t=e.selection.users)||void 0===t?void 0:t.count),f=!!(null===(a=null===(n=e.selection.users)||void 0===n?void 0:n.data)||void 0===a?void 0:a.length),v=x(r.useState(!1),2),g=v[0],y=v[1],h=x(r.useState(d&&p),2),E=h[0],C=h[1];if(r.useEffect((function(){C(d&&p)}),[d,p]),f){var k=e.selection,w=N(e.selection);return r.createElement("div",{className:"d-flex align-items-center flex-wrap me-1 mt-1 pb-1 ps-1 pe-4 position-relative border-".concat(w," text-").concat(w," ").concat(b.bubble)},k.users.data.map((function(t){return r.createElement(S,{key:"".concat(t.id,":").concat(e.selection.id),selection:t,colourVariant:w,hasStudentExperience:e.hasStudentExperience})})),r.createElement(o.L,{className:"cursor-pointer position-absolute text-".concat(w," ").concat(b.removeBubble),onClick:function(){return e.onClickRemove(e.selection)}},r.createElement(i.x,{svgName:m.vn.Close,className:"d-flex align-items-center ".concat(b.svgContainer)})))}return r.createElement(S,{selection:e.selection,canExpand:E,hasExpanded:g,onClickExpand:function(){y(!0),e.onClickExpand(e.selection.id)},onClickRemove:e.onClickRemove,colourVariant:N(e.selection),hasStudentExperience:e.hasStudentExperience})}function S(e){var t=e.colourVariant||N(e.selection),n=e.selection.name;return e.selection.typeId===c.E.User&&(n=e.hasStudentExperience?d.l.getDisplayName(e.selection):d.l.getFullName(e.selection)),r.createElement("div",{className:"".concat(b.selection," bg-").concat(t," rounded-pill text-").concat(t," d-flex align-items-center me-1 mt-1 overflow-hidden")},!e.hideExpander&&r.createElement(C,{canExpand:e.canExpand,hasExpanded:e.hasExpanded,onClickExpand:e.onClickExpand,selection:e.selection}),r.createElement("span",{className:"mx-1 text-white text-truncate"},n),a.q.isFunction(e.onClickRemove)&&r.createElement(o.L,{className:"d-flex align-items-center cursor-pointer align-self-stretch text-white ".concat(b.remove),onClick:function(){return e.onClickRemove(e.selection)}},r.createElement(i.x,{svgName:m.vn.Close,className:"d-flex align-items-center ".concat(b.svgContainer)})))}},36511:(e,t,n)=>{n.d(t,{I:()=>a});var r=n(96787);function a(e){switch(e){case r.R.Pink:return"pink";case r.R.Orange:return"orange";case r.R.Green:return"green";case r.R.Blue:return"blue";case r.R.Purple:return"purple";case r.R.Indigo:return"indigo";default:return"pink"}}},45398:(e,t,n)=>{n.r(t),n.d(t,{BulkUserActionsAddToClassroomConfirmationView:()=>N});var r=n(32735),a=n(70680),o=n(81886),i=n(20354),c=n(2948),l=n(82872),s=n(149),u=n(83345),m=n(36033),d=n(38143),p=n(3044);function f(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 v="userManager.bulkUserActionsAddToClassroomConfirmation";function g(e){var t,n,a=(t=(0,c.D)(d.g.BULK_USER_ACTIONS),n=1,function(e){if(Array.isArray(e))return e}(t)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,a,o,i,c=[],l=!0,s=!1;try{if(o=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;l=!1}else for(;!(l=(r=o.call(n)).done)&&(c.push(r.value),c.length!==t);l=!0);}catch(e){s=!0,a=e}finally{try{if(!l&&null!=n.return&&(i=n.return(),Object(i)!==i))return}finally{if(s)throw a}}return c}}(t,n)||function(e,t){if(e){if("string"==typeof e)return f(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)?f(e,t):void 0}}(t,n)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}())[0];return s.b.useSetWizardConfirmationCallback(e.onClickConfirm),r.createElement(u.D.Provider,{value:v},r.createElement(m.s,null,r.createElement("p",{className:"fw-semibold"},r.createElement(u.x,{namespace:v,phrase:"heading",options:{smartCount:e.userCount}})),a.classroom&&r.createElement("div",{className:"rounded rounded-3 pb-2"},r.createElement("div",{className:"d-flex"},r.createElement(l.t,{selection:a.classroom})))),r.createElement(p.Q,{users:e.users,imageCdnUrl:e.imageCdnUrl,hasMore:e.hasMoreUsers,isFetching:e.isFetchingUsers,fetchNext:e.fetchNextUserPage,userType:e.userType,userCount:e.userCount}))}var y=n(58703),b=n(39151),h=n(31949),E=n(29613),C=n(88323),x=n(18087);function k(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 N(e){var t,n,l,u=(0,C.h)(e.userType),m=u.users,p=u.count,f=u.isFetching,v=u.hasMore,N=u.fetchNext,w=(n=(0,c.D)(d.g.BULK_USER_ACTIONS),l=1,function(e){if(Array.isArray(e))return e}(n)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,a,o,i,c=[],l=!0,s=!1;try{if(o=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;l=!1}else for(;!(l=(r=o.call(n)).done)&&(c.push(r.value),c.length!==t);l=!0);}catch(e){s=!0,a=e}finally{try{if(!l&&null!=n.return&&(i=n.return(),Object(i)!==i))return}finally{if(s)throw a}}return c}}(n,l)||function(e,t){if(e){if("string"==typeof e)return k(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)?k(e,t):void 0}}(n,l)||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],S=i.a.useBasicFetch(h.N.currentUser()),I=i.a.useBasicFetch(b.L.config()),A=(0,a.I0)(),U=(0,x.Y)(e.userType),T=s.b.useCreateJobErrorAlert();function j(t){o.Q.C$.trigger(Object.assign(Object.assign({},U.bulkActionsStatus.polling),{params:{userType:e.userType,jobId:t.id}}))}return r.createElement(y.d,{appLinks:U,userType:e.userType,users:m,currentStep:"confirmation",userCount:p,loaded:!0},r.createElement(g,{users:m,imageCdnUrl:null===(t=I.data)||void 0===t?void 0:t.imageCdnUrl,hasMoreUsers:v,isFetchingUsers:f,fetchNextUserPage:N,userType:e.userType,onClickConfirm:function(){if(w){var t=s.b.getCreateJobRequestData(w,S.data.customerId,e.userType);i.a.fetch(A,E.q.createJob(t,j,T))}},userCount:p}))}}}]);
2
- //# sourceMappingURL=1863-cf9df40052-lite.chunk.js.map
2
+ //# sourceMappingURL=1863-e7c4a6f342-lite.chunk.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"scripts/1863-cf9df40052-lite.chunk.js","mappings":"2QACA,SAAgB,OAAS,SCQnB,SAAUA,EAAYC,GAC1B,IAAQC,EAAuBD,EAAvBC,SAAUC,EAAaF,EAAbE,SAEZC,EAA6B,CAAC,EAKpC,OAHIF,IACFE,EAAMC,gBAAkB,QAAH,OAAWH,EAAQ,OAGxC,uBAAKI,UAAW,SAAeF,MAAOA,GACnCF,EAAW,qCAAcC,EAGhC,C,eCrBA,SAAgB,aAAe,QAAQ,UAAY,QAAQ,SAAW,QAAQ,cAAgB,QAAQ,KAAO,QAAQ,OAAS,QAAQ,iBAAmB,QAAQ,OAAS,QAAQ,aAAe,SCgBjM,IAAMI,EAAYC,EAAA,mBAAiC,yBAcnD,SAASC,EAAqBC,G,MACxBC,EAAY,GAAH,OAAM,eAAmB,YAAI,QAO1C,OALID,EAAUE,SAAWC,EAAA,YACvBF,GAAa,aAEbA,GAAa,SAAJ,QAAa,OAA2D,QAArC,EAAAD,EAA6BI,gBAAQ,eAAEC,SAE9EJ,CACT,CASM,SAAUK,EAAuBf,G,MAC/BgB,EA/BR,SAAwCC,G,MACtC,OAAQA,EAAON,QACb,KAAKC,EAAA,YACH,MAAO,kBAGT,KAAKA,EAAA,iBACH,MAAO,QAAP,QAAe,OAAwD,QAAlC,EAAAK,EAA0BJ,gBAAQ,eAAEC,QAAO,UAGtF,CAqBsBI,CAA+BlB,EAAMS,WAEnDU,EAAcnB,EAAMS,UAAUE,SAAWC,EAAA,YAE/C,IAAKZ,EAAMoB,UAAW,CACpB,IAAKpB,EAAMS,UAAUE,QAAUX,EAAMS,UAAUE,SAAWC,EAAA,OAAiB,CACzE,IAAMS,EAAOrB,EAAMS,UAEnB,OACE,uBAAKJ,UAAW,gBACd,gBAACN,EAAW,CACVE,SAAqB,QAAX,EAAAoB,EAAKC,cAAM,eAAEC,IACvBrB,SAAUsB,EAAA,cAAuBxB,EAAMS,UAAUgB,KAAOzB,EAAMS,UAAmBiB,WAIxF,CAED,OACE,gBAACC,EAAA,EAAO,CAACC,MAAOtB,EAAUa,EAAc,iBAAmB,eACzD,uBAAKd,UAAS,0DAAqD,kBACjE,gBAACwB,EAAA,EAAY,CACXxB,UAAWG,EAAqBR,EAAMS,WACtCqB,QAASX,EAAc,gBAA0B,cAK1D,CAED,OAAKnB,EAAM+B,YAuBT,uBAAK1B,UAAS,+CAA0C,mBAAuB,YAAI,iBACjF,gBAAC2B,EAAA,EAAO,CAACC,GAAG,MAAMC,KAAK,KAAKC,UAAU,SAASC,KAAK,YAtBpD,gCAEE,gBAACC,EAAA,EAAS,CACRhC,UAAS,0FAAqF,WAAe,YAAIW,GACjHsB,QAAStC,EAAMuC,eAEf,gBAACV,EAAA,EAAY,CAACC,QAAS,UAAmBzB,UAAS,oCAA+B,mBAIpF,uBAAKA,UAAS,0DAAqD,kBACjE,gBAACwB,EAAA,EAAY,CACXxB,UAAWG,EAAqBR,EAAMS,WACtCqB,QAASX,EAAc,gBAA0B,cAY7D,C,khCC1EA,SAASqB,EAAyBvB,G,MAChC,IAAKA,EAAON,OACV,MAAO,YAET,OAAQM,EAAON,QACb,KAAKC,EAAA,OAEH,MAAwC,iBAA7BK,EAAgBwB,SACqB,IAArCxB,EAAgBwB,SAAyB,YAAc,SAE7DxB,EAAgBwB,WAAaC,EAAA,UACzB,YAEF,SAGT,KAAK9B,EAAA,YACH,MAAO,OAGT,KAAKA,EAAA,iBACH,OAAO,OAAwD,QAAlC,EAAAK,EAA0BJ,gBAAQ,eAAEC,QAGvE,CASM,SAAU6B,EAAe3C,G,UACvBmB,EAAcyB,EAAA,SAAwB5C,EAAMS,UAAWG,EAAA,aACvDiC,EAAmBD,EAAA,SAAwB5C,EAAMS,UAAWG,EAAA,kBAC5DkC,EAAe9C,EAAMuC,gBAAkBpB,GAAe0B,GAMtDE,KAAoE,QAApD,EAAA/C,EAAMS,UAAyCuC,aAAK,eAAEC,OACtEC,KAAiF,QAA1D,EAAoD,QAArD,EAAClD,EAAMS,UAAyCuC,aAAK,eAAEG,YAAI,eAAEC,QAE5B,IAArB,YAAe,GAAM,GAArDrB,EAAW,KAAEsB,EAAc,KAC2C,IAA1C,WAAeP,GAAgBC,GAAW,GAAtE3B,EAAS,KAAEkC,EAAY,KAW/B,GATA,aAAgB,WACdA,EAAaR,GAAgBC,EAC/B,GAAG,CAAED,EAAcC,IAOfG,EAAmB,CACrB,IAAMzC,EAAwCT,EAAMS,UAE9C8C,EAAgBf,EAAyBxC,EAAMS,WAErD,OACE,uBAAKJ,UAAS,gGAA2FkD,EAAa,iBAASA,EAAa,YAAI,WAC7I9C,EAAUuC,MAAMG,KAAKK,KAAI,SAAAnC,GAAI,OAC5B,gBAACoC,EAAU,CACTC,IAAG,UAAKrC,EAAKsC,GAAE,YAAI3D,EAAMS,UAAUkD,IACnClD,UAAWY,EACXkC,cAAeA,EACfK,qBAAsB5D,EAAM4D,sBAC5B,IAGJ,gBAACvB,EAAA,EAAS,CACRhC,UAAS,gDAA2CkD,EAAa,YAAI,gBACrEjB,QAAS,kBAAMtC,EAAM6D,cAAc7D,EAAMS,UAAU,GAEnD,gBAACoB,EAAA,EAAY,CAACC,QAAS,WAAoBzB,UAAS,oCAA+B,mBAI1F,CAED,OACE,gBAACoD,EAAU,CACThD,UAAWT,EAAMS,UACjBW,UAAWA,EACXW,YAAaA,EACbQ,cApCJ,WACEc,GAAe,GACfrD,EAAMuC,cAAcvC,EAAMS,UAAUkD,GACtC,EAkCIE,cAAe7D,EAAM6D,cACrBN,cAAef,EAAyBxC,EAAMS,WAC9CmD,qBAAsB5D,EAAM4D,sBAGlC,CAaM,SAAUH,EAA0CzD,GACxD,IAAMuD,EAAgBvD,EAAMuD,eAAiBf,EAAyBxC,EAAMS,WAExEqD,EAAgB9D,EAAMS,UAAUgB,KAQpC,OANIzB,EAAMS,UAAUE,SAAWC,EAAA,SAC7BkD,EAAgB9D,EAAM4D,qBAClBpC,EAAA,iBAA0BxB,EAAMS,WAChCe,EAAA,cAAuBxB,EAAMS,YAIjC,uBAAKJ,UAAS,UAAK,YAAgB,eAAOkD,EAAa,8BAAsBA,EAAa,0DACtFvD,EAAM+D,cACN,gBAAChD,EAAsB,CACrBK,UAAWpB,EAAMoB,UACjBW,YAAa/B,EAAM+B,YACnBQ,cAAevC,EAAMuC,cACrB9B,UAAWT,EAAMS,YAIrB,wBAAMJ,UAAU,iCAAiCyD,GAEhDE,EAAA,aAA0BhE,EAAM6D,gBAC/B,gBAACxB,EAAA,EAAS,CACRhC,UAAS,iFAA4E,UACrFiC,QAAS,kBAAMtC,EAAM6D,cAAc7D,EAAMS,UAAU,GAEnD,gBAACoB,EAAA,EAAY,CAACC,QAAS,WAAoBzB,UAAS,oCAA+B,mBAK7F,C,kDC1KM,SAAU4D,EAAqBC,GACnC,OAAQA,GACN,KAAK,SACH,MAAO,OACT,KAAK,WACH,MAAO,SACT,KAAK,UACH,MAAO,QACT,KAAK,SACH,MAAO,OACT,KAAK,WACH,MAAO,SACT,KAAK,WACH,MAAO,SACT,QACE,MAAO,OAEb,C,yTCLA,IAAMC,EAAY,wDAaZ,SAAUC,EACdpE,GAEA,I,IAAOqE,G,GAAa,OAClBC,EAAA,qB,EACD,E,k5BAFe,GAMhB,OAFAC,EAAA,mCAAuDvE,EAAMwE,gBAG3D,gBAAC,aAAiC,CAACC,MAAON,GACxC,gBAACO,EAAA,EAAwB,KACvB,qBAAGrE,UAAU,eACX,gBAACsE,EAAA,EAAI,CACHR,UAAWA,EACXS,OAAO,UACPC,QAAS,CACPC,WAAY9E,EAAM+E,cASvBV,EAAUW,WACT,uBAAK3E,UAAS,0BACZ,uBAAKA,UAAU,UACb,gBAACsC,EAAA,EAAc,CAAClC,UAAW4D,EAAUW,eAM7C,gBAACC,EAAA,EAAmC,CAClCjC,MAAOhD,EAAMgD,MACbkC,YAAalF,EAAMkF,YACnBC,QAASnF,EAAMoF,aACfC,WAAYrF,EAAMsF,gBAClBC,UAAWvF,EAAMwF,kBACjB/C,SAAUzC,EAAMyC,SAChBsC,UAAW/E,EAAM+E,YAIzB,C,gLCrDM,SAAUU,EAA8CzF,G,UAC5D,GAMI,EAAA0F,EAAA,GAA2B1F,EAAMyC,UALnCO,EAAK,EAALA,MACAC,EAAK,EAALA,MACAoC,EAAU,EAAVA,WACAF,EAAO,EAAPA,QACAI,EAAS,EAATA,UAGKlB,G,GAAa,OAClBC,EAAA,qB,EACD,E,k5BAFe,GAIVqB,EAAc,kBAAkCC,EAAA,iBAChDC,EAAS,kBAA6BC,EAAA,YAEtCC,GAAW,UAEXC,GAAW,OAAuBhG,EAAMyC,UAExCwD,EAAmB1B,EAAA,2BAczB,SAAS2B,EAAYC,GACnB,eAA2B,OAAD,wBACrBH,EAASI,kBAAkBC,SAAO,CACrCC,OAAQ,CACN7D,SAAUzC,EAAMyC,SAChB8D,MAAOJ,EAAIxC,MAGjB,CAEA,OACE,gBAAC6C,EAAA,EAA2B,CAC1BR,SAAUA,EACVvD,SAAUzC,EAAMyC,SAChBO,MAAOA,EACPyD,YAAY,eACZ1B,UAAW9B,EACXyD,QAAM,GAEN,gBAACtC,EAAyC,CACxCpB,MAAOA,EACPkC,YAAwB,QAAX,EAAAW,EAAO1C,YAAI,eAAE+B,YAC1BE,aAAcD,EACdG,gBAAiBD,EACjBG,kBAAmBD,EACnB9C,SAAUzC,EAAMyC,SAChB+B,eAvCN,WACE,GAAKH,EAAL,CAGA,IAAMlB,EAAOoB,EAAA,0BACXF,EACAsB,EAAYxC,KAAKwD,WACjB3G,EAAMyC,UAGR,UAAasD,EAAUa,EAAA,YAAsBzD,EAAM+C,EAAaD,GARxD,CASV,EA6BMlB,UAAW9B,IAInB,C","sources":["file:///app/packages/libs/shared/src/apps/share/components/white-avatar/white-avatar.scss","file:///app/packages/libs/shared/src/apps/share/components/white-avatar/WhiteAvatar.tsx","file:///app/packages/libs/shared/src/apps/share/components/tokenized-typeahead/input-selection.scss","file:///app/packages/libs/shared/src/apps/share/components/tokenized-typeahead/InputSelectionExpander.tsx","file:///app/packages/libs/shared/src/apps/share/components/tokenized-typeahead/InputSelection.tsx","file:///app/packages/libs/shared/src/utils/GroupHelper.ts","file:///app/packages/libs/shared/src/apps/user-manager/components/bulk-actions-wizard/confirmation/add-to-classroom/BulkUserActionsAddToClassroomConfirmation.tsx","file:///app/packages/projects/lite/src/apps/user-manager/views/wizard/confirmation/add-to-classroom/BulkUserActionsAddToClassroomConfirmationView.tsx"],"sourcesContent":["// extracted by mini-css-extract-plugin\nexport default {\"avatar\":\"srrS3\"};","import React from 'react';\n\nimport styles from './white-avatar.scss';\n\ninterface WhiteAvatarProps {\n initials: string;\n imageUrl?: string;\n}\n\nexport function WhiteAvatar(props: WhiteAvatarProps): React.ReactElement {\n const { imageUrl, initials } = props;\n\n const style: React.CSSProperties = {};\n\n if (imageUrl)\n style.backgroundImage = `url('${imageUrl}')`;\n\n return (\n <div className={styles.avatar} style={style}>\n {imageUrl ? <>&nbsp;</> : initials}\n </div>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"svgContainer\":\"laVU4\",\"selection\":\"vEOCt\",\"expander\":\"d1NHd\",\"iconContainer\":\"rFH4W\",\"icon\":\"BarYz\",\"bubble\":\"HF0E8\",\"spinnerContainer\":\"iKeXW\",\"remove\":\"pyzCM\",\"removeBubble\":\"mgt6Y\"};","import React from 'react';\nimport { Spinner } from 'react-bootstrap';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { WhiteAvatar } from 'libs/shared/apps/share/components/white-avatar/WhiteAvatar';\nimport { DivButton } from 'libs/shared/components/div-button/DivButton';\nimport { SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\nimport { Tooltip } from 'libs/shared/components/tooltip/Tooltip';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { BaseObject, Classroom, ClassroomGroup, User } from 'libs/shared/interfaces';\nimport { mapColourToBsVariant } from 'libs/shared/utils/GroupHelper';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\nimport { UserHelper } from 'libs/shared/utils/UserHelper';\n\nimport styles from './input-selection.scss';\n\nconst getPhrase = LanguageService.encloseNamespace('shared.inputSelection');\n\nfunction mapEntityTypeToForegroundColor(entity: BaseObject): string {\n switch (entity.typeId) {\n case MasterType.Classroom: {\n return 'text-teal-hover';\n }\n\n case MasterType.ClassroomGroup: {\n return `text-${mapColourToBsVariant((entity as ClassroomGroup).metadata?.colour)}-hover`;\n }\n }\n}\n\nfunction getColouredIconClass(selection: Classroom | ClassroomGroup): string {\n let iconClass = `${styles.svgContainer} ${styles.icon}`;\n\n if (selection.typeId === MasterType.Classroom)\n iconClass += ' text-teal';\n else\n iconClass += ` text-${mapColourToBsVariant((selection as ClassroomGroup).metadata?.colour)}`;\n\n return iconClass;\n}\n\ninterface InputSelectionExpanderProps {\n canExpand: boolean;\n hasExpanded: boolean;\n selection: BaseObject;\n onClickExpand?: () => void;\n}\n\nexport function InputSelectionExpander(props: InputSelectionExpanderProps): JSX.Element {\n const colourClass = mapEntityTypeToForegroundColor(props.selection);\n\n const isClassroom = props.selection.typeId === MasterType.Classroom;\n\n if (!props.canExpand) {\n if (!props.selection.typeId || props.selection.typeId === MasterType.User) {\n const user = props.selection as User;\n\n return (\n <div className={styles.svgContainer}>\n <WhiteAvatar\n imageUrl={user.avatar?.url}\n initials={UserHelper.getInitials(props.selection.name, (props.selection as User).surname)}\n />\n </div>\n );\n }\n\n return (\n <Tooltip title={getPhrase(isClassroom ? 'emptyClassroom' : 'emptyGroup')}>\n <div className={`align-items-center border border-white bg-white ${styles.iconContainer}`}>\n <SvgContainer\n className={getColouredIconClass(props.selection)}\n svgName={isClassroom ? cvSvgLibrary.Classrooms : cvSvgLibrary.Group}\n />\n </div>\n </Tooltip>\n );\n }\n\n if (!props.hasExpanded) {\n return (\n <>\n {/* Visible on hover */}\n <DivButton\n className={`align-items-center cursor-pointer text-white border border-white rounded-circle ${styles.expander} ${colourClass}`}\n onClick={props.onClickExpand}\n >\n <SvgContainer svgName={cvSvgLibrary.Plus} className={`d-flex align-items-center ${styles.svgContainer}`} />\n </DivButton>\n\n {/* Visible when not hovering */}\n <div className={`align-items-center border border-white bg-white ${styles.iconContainer}`}>\n <SvgContainer\n className={getColouredIconClass(props.selection)}\n svgName={isClassroom ? cvSvgLibrary.Classrooms : cvSvgLibrary.Group}\n />\n </div>\n </>\n );\n }\n\n return (\n <div className={`d-flex align-items-center text-white ${styles.spinnerContainer} ${styles.svgContainer}`}>\n <Spinner as='div' size='sm' animation='border' role='status' />\n </div>\n );\n}","import React from 'react';\nimport { ButtonProps } from 'react-bootstrap';\n\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { DivButton } from 'libs/shared/components/div-button/DivButton';\nimport { SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { UserGroup } from 'libs/shared/enums/UserGroup';\nimport { Classroom, ClassroomGroup, User } from 'libs/shared/interfaces';\nimport { mapColourToBsVariant } from 'libs/shared/utils/GroupHelper';\nimport { MasterTypeHelper } from 'libs/shared/utils/MasterTypeHelper';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\nimport { UserHelper } from 'libs/shared/utils/UserHelper';\n\nimport { InputSelectionExpander } from './InputSelectionExpander';\n\nimport styles from './input-selection.scss';\n\n/**\n * TODO: This entire file needs to be refactored to work\n * better with non standard entities. ATM it's also being used\n * in the invite a colleague UI for trials. - Sha\n */\ninterface OtherEntity {\n id: never;\n typeId: never;\n name: string;\n}\n\ntype Entity = Classroom | ClassroomGroup | User | OtherEntity;\n\nfunction mapEntityTypeToBsVariant(entity: Entity): ButtonProps['variant'] {\n if (!entity.typeId)\n return 'dark-blue';\n\n switch (entity.typeId) {\n case MasterType.User: {\n // TODO: Delete this once https://clickview.atlassian.net/browse/INBOX-2151 is addressed\n if (typeof(entity as User).userType === 'number')\n return ((entity as User).userType as any) === 2 ? 'dark-blue' : 'indigo';\n\n if ((entity as User).userType === UserGroup.Learner)\n return 'dark-blue';\n\n return 'indigo';\n }\n\n case MasterType.Classroom: {\n return 'teal';\n }\n\n case MasterType.ClassroomGroup: {\n return mapColourToBsVariant((entity as ClassroomGroup).metadata?.colour);\n }\n }\n}\n\ninterface InputSelectionProps {\n selection: Entity;\n onClickRemove?: (selection: Entity) => void;\n onClickExpand?: (id: string) => void;\n hasStudentExperience?: boolean;\n}\n\nexport function InputSelection(props: InputSelectionProps): JSX.Element {\n const isClassroom = MasterTypeHelper.isType(props.selection, MasterType.Classroom);\n const isClassroomGroup = MasterTypeHelper.isType(props.selection, MasterType.ClassroomGroup);\n const isExpandable = props.onClickExpand && (isClassroom || isClassroomGroup);\n\n /**\n * We only know that there are no members if props.selections.users.count exists\n * and is 0 as it is set to 0 in <MainShare /> after fetching the users.\n */\n const hasMembers = !!(props.selection as Classroom | ClassroomGroup).users?.count;\n const hasFetchedMembers = !!(props.selection as Classroom | ClassroomGroup).users?.data?.length;\n\n const [ hasExpanded, setHasExpanded ] = React.useState(false);\n const [ canExpand, setCanExpand ] = React.useState(isExpandable && hasMembers);\n\n React.useEffect(() => {\n setCanExpand(isExpandable && hasMembers);\n }, [ isExpandable, hasMembers ]);\n\n function onClickExpand(): void {\n setHasExpanded(true);\n props.onClickExpand(props.selection.id);\n }\n\n if (hasFetchedMembers) {\n const selection: Classroom | ClassroomGroup = props.selection as Classroom | ClassroomGroup;\n\n const colourVariant = mapEntityTypeToBsVariant(props.selection);\n\n return (\n <div className={`d-flex align-items-center flex-wrap me-1 mt-1 pb-1 ps-1 pe-4 position-relative border-${colourVariant} text-${colourVariant} ${styles.bubble}`}>\n {selection.users.data.map(user => (\n <InputToken\n key={`${user.id}:${props.selection.id}`}\n selection={user}\n colourVariant={colourVariant}\n hasStudentExperience={props.hasStudentExperience}\n />\n ))}\n\n <DivButton\n className={`cursor-pointer position-absolute text-${colourVariant} ${styles.removeBubble}`}\n onClick={() => props.onClickRemove(props.selection)}\n >\n <SvgContainer svgName={cvSvgLibrary.Close} className={`d-flex align-items-center ${styles.svgContainer}`} />\n </DivButton>\n </div>\n );\n }\n\n return (\n <InputToken\n selection={props.selection}\n canExpand={canExpand}\n hasExpanded={hasExpanded}\n onClickExpand={onClickExpand}\n onClickRemove={props.onClickRemove}\n colourVariant={mapEntityTypeToBsVariant(props.selection)}\n hasStudentExperience={props.hasStudentExperience}\n />\n );\n}\n\ninterface InputTokenProps<T extends HashObject> {\n selection: T | Entity;\n colourVariant: string;\n canExpand?: boolean;\n hasExpanded?: boolean;\n onClickExpand?: () => void;\n onClickRemove?: (selection: Entity) => void;\n hasStudentExperience?: boolean;\n hideExpander?: boolean;\n}\n\nexport function InputToken<T extends HashObject = Entity>(props: InputTokenProps<T>): JSX.Element {\n const colourVariant = props.colourVariant || mapEntityTypeToBsVariant(props.selection);\n\n let selectionName = props.selection.name;\n\n if (props.selection.typeId === MasterType.User) {\n selectionName = props.hasStudentExperience\n ? UserHelper.getDisplayName(props.selection as User)\n : UserHelper.getFullName(props.selection as User);\n }\n\n return (\n <div className={`${styles.selection} bg-${colourVariant} rounded-pill text-${colourVariant} d-flex align-items-center me-1 mt-1 overflow-hidden`}>\n {!props.hideExpander && (\n <InputSelectionExpander\n canExpand={props.canExpand}\n hasExpanded={props.hasExpanded}\n onClickExpand={props.onClickExpand}\n selection={props.selection}\n />\n )}\n\n <span className='mx-1 text-white text-truncate'>{selectionName}</span>\n\n {FunctionHelper.isFunction(props.onClickRemove) && (\n <DivButton\n className={`d-flex align-items-center cursor-pointer align-self-stretch text-white ${styles.remove}`}\n onClick={() => props.onClickRemove(props.selection)}\n >\n <SvgContainer svgName={cvSvgLibrary.Close} className={`d-flex align-items-center ${styles.svgContainer}`} />\n </DivButton>\n )}\n </div>\n );\n}","import { ButtonProps } from 'react-bootstrap';\n\nimport { ClassroomGroupColour } from 'libs/shared/interfaces';\n\nexport function mapColourToBsVariant(groupColour: ClassroomGroupColour): ButtonProps['variant'] {\n switch (groupColour) {\n case ClassroomGroupColour.Pink:\n return 'pink';\n case ClassroomGroupColour.Orange:\n return 'orange';\n case ClassroomGroupColour.Green:\n return 'green';\n case ClassroomGroupColour.Blue:\n return 'blue';\n case ClassroomGroupColour.Purple:\n return 'purple';\n case ClassroomGroupColour.Indigo:\n return 'indigo';\n default:\n return 'pink';\n }\n}\n","import React from 'react';\n\nimport { useViewModel } from 'libs/common/react/hooks/UseViewModel';\n\nimport { UserGroup } from 'libs/analytics/interfaces';\n\nimport { InputSelection } from 'libs/shared/apps/share/components/tokenized-typeahead/InputSelection';\nimport { BulkUserActionsAddToClassroomViewModel } from 'libs/shared/apps/user-manager/interfaces/viewmodels/BulkUserActionsViewModel';\nimport { BulkUserActionsHelper } from 'libs/shared/apps/user-manager/utils/BulkUserActionsHelper';\nimport { LanguageNamespaceContext, Text } from 'libs/shared/components/text/Text';\nimport { WizardConfirmationHeader } from 'libs/shared/components/wizard/confirmation-header/WizardConfirmationHeader';\nimport { SharedViewModelKeys } from 'libs/shared/constants/SharedViewModelKeys';\nimport { User } from 'libs/shared/interfaces';\n\nimport { BulkUserActionsConfirmationUserList } from '../user-list/BulkUserActionsConfirmationUserList';\n\nconst namespace = 'userManager.bulkUserActionsAddToClassroomConfirmation';\n\ninterface BulkUserActionsAddToClassroomConfirmationProps {\n users: User[];\n imageCdnUrl: string;\n userType: UserGroup;\n hasMoreUsers: boolean;\n isFetchingUsers: boolean;\n userCount: number;\n fetchNextUserPage: () => void;\n onClickConfirm: () => void;\n}\n\nexport function BulkUserActionsAddToClassroomConfirmation(\n props: BulkUserActionsAddToClassroomConfirmationProps\n): JSX.Element {\n const [viewModel] = useViewModel<BulkUserActionsAddToClassroomViewModel>(\n SharedViewModelKeys.BULK_USER_ACTIONS\n );\n\n BulkUserActionsHelper.useSetWizardConfirmationCallback(props.onClickConfirm);\n\n return (\n <LanguageNamespaceContext.Provider value={namespace}>\n <WizardConfirmationHeader>\n <p className='fw-semibold'>\n <Text\n namespace={namespace}\n phrase='heading'\n options={{\n smartCount: props.userCount\n }}\n />\n </p>\n\n {/*\n * The viewModel gets cleared out when exiting the wizard, however this component requires a selection.\n * So we don't render our input selection if classroom is not set\n */}\n {viewModel.classroom &&\n <div className={`rounded rounded-3 pb-2`}>\n <div className='d-flex'>\n <InputSelection selection={viewModel.classroom} />\n </div>\n </div>\n }\n </WizardConfirmationHeader>\n\n <BulkUserActionsConfirmationUserList\n users={props.users}\n imageCdnUrl={props.imageCdnUrl}\n hasMore={props.hasMoreUsers}\n isFetching={props.isFetchingUsers}\n fetchNext={props.fetchNextUserPage}\n userType={props.userType}\n userCount={props.userCount}\n />\n </LanguageNamespaceContext.Provider>\n );\n}","import React from 'react';\nimport { useDispatch } from 'react-redux';\n\nimport { Core } from 'libs/common/core';\nimport { Flight } from 'libs/common/flight';\nimport { useViewModel } from 'libs/common/react/hooks/UseViewModel';\n\nimport { BulkUserActionsAddToClassroomConfirmation } from 'libs/shared/apps/user-manager/components/bulk-actions-wizard/confirmation/add-to-classroom/BulkUserActionsAddToClassroomConfirmation';\nimport { BulkUserActionsWizardLayout } from 'libs/shared/apps/user-manager/components/bulk-actions-wizard/layout/BulkUserActionsWizardLayout';\nimport { UserWizardParams } 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 { SharedViewModelKeys } from 'libs/shared/constants/SharedViewModelKeys';\nimport { ConfigRequests } from 'libs/shared/flight-requests/ConfigRequests';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { BatchJob, Config, CurrentUser } from 'libs/shared/interfaces';\n\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 BulkUserActionsAddToClassroomConfirmationView(props: UserWizardParams): JSX.Element {\n const {\n users,\n count,\n isFetching,\n hasMore,\n fetchNext\n } = useBulkActionsUsersWrapper(props.userType);\n\n const [viewModel] = useViewModel<BulkUserActionsViewModel>(\n SharedViewModelKeys.BULK_USER_ACTIONS\n );\n\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n const config = Flight.useBasicFetch<Config>(ConfigRequests.config());\n\n const dispatch = useDispatch();\n\n const appLinks = getUserManagerAppLinks(props.userType);\n\n const onCreateJobError = BulkUserActionsHelper.useCreateJobErrorAlert();\n function startBulkAction(): void {\n if (!viewModel)\n return;\n\n const data = BulkUserActionsHelper.getCreateJobRequestData(\n viewModel,\n currentUser.data.customerId,\n props.userType\n );\n\n Flight.fetch(dispatch, JobRequests.createJob(data, onCreateJob, onCreateJobError));\n }\n\n function onCreateJob(job: BatchJob): void {\n Core.AppLinkHelper.trigger({\n ...appLinks.bulkActionsStatus.polling,\n params: {\n userType: props.userType,\n jobId: job.id\n }\n });\n }\n\n return (\n <BulkUserActionsWizardLayout\n appLinks={appLinks}\n userType={props.userType}\n users={users}\n currentStep='confirmation'\n userCount={count}\n loaded\n >\n <BulkUserActionsAddToClassroomConfirmation\n users={users}\n imageCdnUrl={config.data?.imageCdnUrl}\n hasMoreUsers={hasMore}\n isFetchingUsers={isFetching}\n fetchNextUserPage={fetchNext}\n userType={props.userType}\n onClickConfirm={startBulkAction}\n userCount={count}\n />\n </BulkUserActionsWizardLayout>\n );\n}"],"names":["WhiteAvatar","props","imageUrl","initials","style","backgroundImage","className","getPhrase","LanguageService","getColouredIconClass","selection","iconClass","typeId","MasterType","metadata","colour","InputSelectionExpander","colourClass","entity","mapEntityTypeToForegroundColor","isClassroom","canExpand","user","avatar","url","UserHelper","name","surname","Tooltip","title","SvgContainer","svgName","hasExpanded","Spinner","as","size","animation","role","DivButton","onClick","onClickExpand","mapEntityTypeToBsVariant","userType","UserGroup","InputSelection","MasterTypeHelper","isClassroomGroup","isExpandable","hasMembers","users","count","hasFetchedMembers","data","length","setHasExpanded","setCanExpand","colourVariant","map","InputToken","key","id","hasStudentExperience","onClickRemove","selectionName","hideExpander","FunctionHelper","mapColourToBsVariant","groupColour","namespace","BulkUserActionsAddToClassroomConfirmation","viewModel","SharedViewModelKeys","BulkUserActionsHelper","onClickConfirm","value","WizardConfirmationHeader","Text","phrase","options","smartCount","userCount","classroom","BulkUserActionsConfirmationUserList","imageCdnUrl","hasMore","hasMoreUsers","isFetching","isFetchingUsers","fetchNext","fetchNextUserPage","BulkUserActionsAddToClassroomConfirmationView","useBulkActionsUsersWrapper","currentUser","UserRequests","config","ConfigRequests","dispatch","appLinks","onCreateJobError","onCreateJob","job","bulkActionsStatus","polling","params","jobId","BulkUserActionsWizardLayout","currentStep","loaded","customerId","JobRequests"],"sourceRoot":""}
1
+ {"version":3,"file":"scripts/1863-e7c4a6f342-lite.chunk.js","mappings":"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","sources":["file:///app/packages/libs/shared/src/apps/share/components/white-avatar/white-avatar.scss","file:///app/packages/libs/shared/src/apps/share/components/white-avatar/WhiteAvatar.tsx","file:///app/packages/libs/shared/src/apps/share/components/tokenized-typeahead/input-selection.scss","file:///app/packages/libs/shared/src/apps/share/components/tokenized-typeahead/InputSelectionExpander.tsx","file:///app/packages/libs/shared/src/apps/share/components/tokenized-typeahead/InputSelection.tsx","file:///app/packages/libs/shared/src/utils/GroupHelper.ts","file:///app/packages/libs/shared/src/apps/user-manager/components/bulk-actions-wizard/confirmation/add-to-classroom/BulkUserActionsAddToClassroomConfirmation.tsx","file:///app/packages/projects/lite/src/apps/user-manager/views/wizard/confirmation/add-to-classroom/BulkUserActionsAddToClassroomConfirmationView.tsx"],"sourcesContent":["// extracted by mini-css-extract-plugin\nexport default {\"avatar\":\"srrS3\"};","import React from 'react';\n\nimport styles from './white-avatar.scss';\n\ninterface WhiteAvatarProps {\n initials: string;\n imageUrl?: string;\n}\n\nexport function WhiteAvatar(props: WhiteAvatarProps): React.ReactElement {\n const { imageUrl, initials } = props;\n\n const style: React.CSSProperties = {};\n\n if (imageUrl)\n style.backgroundImage = `url('${imageUrl}')`;\n\n return (\n <div className={styles.avatar} style={style}>\n {imageUrl ? <>&nbsp;</> : initials}\n </div>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"svgContainer\":\"laVU4\",\"selection\":\"vEOCt\",\"expander\":\"d1NHd\",\"iconContainer\":\"rFH4W\",\"icon\":\"BarYz\",\"bubble\":\"HF0E8\",\"spinnerContainer\":\"iKeXW\",\"remove\":\"pyzCM\",\"removeBubble\":\"mgt6Y\"};","import React from 'react';\nimport { Spinner } from 'react-bootstrap';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { WhiteAvatar } from 'libs/shared/apps/share/components/white-avatar/WhiteAvatar';\nimport { DivButton } from 'libs/shared/components/div-button/DivButton';\nimport { SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\nimport { Tooltip } from 'libs/shared/components/tooltip/Tooltip';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { BaseObject, Classroom, ClassroomGroup, User } from 'libs/shared/interfaces';\nimport { mapColourToBsVariant } from 'libs/shared/utils/GroupHelper';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\nimport { UserHelper } from 'libs/shared/utils/UserHelper';\n\nimport styles from './input-selection.scss';\n\nconst getPhrase = LanguageService.encloseNamespace('shared.inputSelection');\n\nfunction mapEntityTypeToForegroundColor(entity: BaseObject): string {\n switch (entity.typeId) {\n case MasterType.Classroom: {\n return 'text-teal-hover';\n }\n\n case MasterType.ClassroomGroup: {\n return `text-${mapColourToBsVariant((entity as ClassroomGroup).metadata?.colour)}-hover`;\n }\n }\n}\n\nfunction getColouredIconClass(selection: Classroom | ClassroomGroup): string {\n let iconClass = `${styles.svgContainer} ${styles.icon}`;\n\n if (selection.typeId === MasterType.Classroom)\n iconClass += ' text-teal';\n else\n iconClass += ` text-${mapColourToBsVariant((selection as ClassroomGroup).metadata?.colour)}`;\n\n return iconClass;\n}\n\ninterface InputSelectionExpanderProps {\n canExpand: boolean;\n hasExpanded: boolean;\n selection: BaseObject;\n onClickExpand?: () => void;\n}\n\nexport function InputSelectionExpander(props: InputSelectionExpanderProps): JSX.Element {\n const colourClass = mapEntityTypeToForegroundColor(props.selection);\n\n const isClassroom = props.selection.typeId === MasterType.Classroom;\n\n if (!props.canExpand) {\n if (!props.selection.typeId || props.selection.typeId === MasterType.User) {\n const user = props.selection as User;\n\n return (\n <div className={styles.svgContainer}>\n <WhiteAvatar\n imageUrl={user.avatar?.url}\n initials={UserHelper.getInitials(props.selection.name, (props.selection as User).surname)}\n />\n </div>\n );\n }\n\n return (\n <Tooltip title={getPhrase(isClassroom ? 'emptyClassroom' : 'emptyGroup')}>\n <div className={`align-items-center border border-white bg-white ${styles.iconContainer}`}>\n <SvgContainer\n className={getColouredIconClass(props.selection)}\n svgName={isClassroom ? cvSvgLibrary.Classrooms : cvSvgLibrary.Group}\n />\n </div>\n </Tooltip>\n );\n }\n\n if (!props.hasExpanded) {\n return (\n <>\n {/* Visible on hover */}\n <DivButton\n className={`align-items-center cursor-pointer text-white border border-white rounded-circle ${styles.expander} ${colourClass}`}\n onClick={props.onClickExpand}\n >\n <SvgContainer svgName={cvSvgLibrary.Plus} className={`d-flex align-items-center ${styles.svgContainer}`} />\n </DivButton>\n\n {/* Visible when not hovering */}\n <div className={`align-items-center border border-white bg-white ${styles.iconContainer}`}>\n <SvgContainer\n className={getColouredIconClass(props.selection)}\n svgName={isClassroom ? cvSvgLibrary.Classrooms : cvSvgLibrary.Group}\n />\n </div>\n </>\n );\n }\n\n return (\n <div className={`d-flex align-items-center text-white ${styles.spinnerContainer} ${styles.svgContainer}`}>\n <Spinner as='div' size='sm' animation='border' role='status' />\n </div>\n );\n}","import React from 'react';\nimport { ButtonProps } from 'react-bootstrap';\n\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { DivButton } from 'libs/shared/components/div-button/DivButton';\nimport { SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { UserGroup } from 'libs/shared/enums/UserGroup';\nimport { Classroom, ClassroomGroup, User } from 'libs/shared/interfaces';\nimport { mapColourToBsVariant } from 'libs/shared/utils/GroupHelper';\nimport { MasterTypeHelper } from 'libs/shared/utils/MasterTypeHelper';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\nimport { UserHelper } from 'libs/shared/utils/UserHelper';\n\nimport { InputSelectionExpander } from './InputSelectionExpander';\n\nimport styles from './input-selection.scss';\n\n/**\n * TODO: This entire file needs to be refactored to work\n * better with non standard entities. ATM it's also being used\n * in the invite a colleague UI for trials. - Sha\n */\ninterface OtherEntity {\n id: never;\n typeId: never;\n name: string;\n}\n\ntype Entity = Classroom | ClassroomGroup | User | OtherEntity;\n\nfunction mapEntityTypeToBsVariant(entity: Entity): ButtonProps['variant'] {\n if (!entity.typeId)\n return 'dark-blue';\n\n switch (entity.typeId) {\n case MasterType.User: {\n // TODO: Delete this once https://clickview.atlassian.net/browse/INBOX-2151 is addressed\n if (typeof(entity as User).userType === 'number')\n return ((entity as User).userType as any) === 2 ? 'dark-blue' : 'indigo';\n\n if ((entity as User).userType === UserGroup.Learner)\n return 'dark-blue';\n\n return 'indigo';\n }\n\n case MasterType.Classroom: {\n return 'teal';\n }\n\n case MasterType.ClassroomGroup: {\n return mapColourToBsVariant((entity as ClassroomGroup).metadata?.colour);\n }\n }\n}\n\ninterface InputSelectionProps {\n selection: Entity;\n onClickRemove?: (selection: Entity) => void;\n onClickExpand?: (id: string) => void;\n hasStudentExperience?: boolean;\n}\n\nexport function InputSelection(props: InputSelectionProps): JSX.Element {\n const isClassroom = MasterTypeHelper.isType(props.selection, MasterType.Classroom);\n const isClassroomGroup = MasterTypeHelper.isType(props.selection, MasterType.ClassroomGroup);\n const isExpandable = props.onClickExpand && (isClassroom || isClassroomGroup);\n\n /**\n * We only know that there are no members if props.selections.users.count exists\n * and is 0 as it is set to 0 in <MainShare /> after fetching the users.\n */\n const hasMembers = !!(props.selection as Classroom | ClassroomGroup).users?.count;\n const hasFetchedMembers = !!(props.selection as Classroom | ClassroomGroup).users?.data?.length;\n\n const [ hasExpanded, setHasExpanded ] = React.useState(false);\n const [ canExpand, setCanExpand ] = React.useState(isExpandable && hasMembers);\n\n React.useEffect(() => {\n setCanExpand(isExpandable && hasMembers);\n }, [ isExpandable, hasMembers ]);\n\n function onClickExpand(): void {\n setHasExpanded(true);\n props.onClickExpand(props.selection.id);\n }\n\n if (hasFetchedMembers) {\n const selection: Classroom | ClassroomGroup = props.selection as Classroom | ClassroomGroup;\n\n const colourVariant = mapEntityTypeToBsVariant(props.selection);\n\n return (\n <div className={`d-flex align-items-center flex-wrap me-1 mt-1 pb-1 ps-1 pe-4 position-relative border-${colourVariant} text-${colourVariant} ${styles.bubble}`}>\n {selection.users.data.map(user => (\n <InputToken\n key={`${user.id}:${props.selection.id}`}\n selection={user}\n colourVariant={colourVariant}\n hasStudentExperience={props.hasStudentExperience}\n />\n ))}\n\n <DivButton\n className={`cursor-pointer position-absolute text-${colourVariant} ${styles.removeBubble}`}\n onClick={() => props.onClickRemove(props.selection)}\n >\n <SvgContainer svgName={cvSvgLibrary.Close} className={`d-flex align-items-center ${styles.svgContainer}`} />\n </DivButton>\n </div>\n );\n }\n\n return (\n <InputToken\n selection={props.selection}\n canExpand={canExpand}\n hasExpanded={hasExpanded}\n onClickExpand={onClickExpand}\n onClickRemove={props.onClickRemove}\n colourVariant={mapEntityTypeToBsVariant(props.selection)}\n hasStudentExperience={props.hasStudentExperience}\n />\n );\n}\n\ninterface InputTokenProps<T extends HashObject> {\n selection: T | Entity;\n colourVariant: string;\n canExpand?: boolean;\n hasExpanded?: boolean;\n onClickExpand?: () => void;\n onClickRemove?: (selection: Entity) => void;\n hasStudentExperience?: boolean;\n hideExpander?: boolean;\n}\n\nexport function InputToken<T extends HashObject = Entity>(props: InputTokenProps<T>): JSX.Element {\n const colourVariant = props.colourVariant || mapEntityTypeToBsVariant(props.selection);\n\n let selectionName = props.selection.name;\n\n if (props.selection.typeId === MasterType.User) {\n selectionName = props.hasStudentExperience\n ? UserHelper.getDisplayName(props.selection as User)\n : UserHelper.getFullName(props.selection as User);\n }\n\n return (\n <div className={`${styles.selection} bg-${colourVariant} rounded-pill text-${colourVariant} d-flex align-items-center me-1 mt-1 overflow-hidden`}>\n {!props.hideExpander && (\n <InputSelectionExpander\n canExpand={props.canExpand}\n hasExpanded={props.hasExpanded}\n onClickExpand={props.onClickExpand}\n selection={props.selection}\n />\n )}\n\n <span className='mx-1 text-white text-truncate'>{selectionName}</span>\n\n {FunctionHelper.isFunction(props.onClickRemove) && (\n <DivButton\n className={`d-flex align-items-center cursor-pointer align-self-stretch text-white ${styles.remove}`}\n onClick={() => props.onClickRemove(props.selection)}\n >\n <SvgContainer svgName={cvSvgLibrary.Close} className={`d-flex align-items-center ${styles.svgContainer}`} />\n </DivButton>\n )}\n </div>\n );\n}","import { ButtonProps } from 'react-bootstrap';\n\nimport { ClassroomGroupColour } from 'libs/shared/interfaces';\n\nexport function mapColourToBsVariant(groupColour: ClassroomGroupColour): ButtonProps['variant'] {\n switch (groupColour) {\n case ClassroomGroupColour.Pink:\n return 'pink';\n case ClassroomGroupColour.Orange:\n return 'orange';\n case ClassroomGroupColour.Green:\n return 'green';\n case ClassroomGroupColour.Blue:\n return 'blue';\n case ClassroomGroupColour.Purple:\n return 'purple';\n case ClassroomGroupColour.Indigo:\n return 'indigo';\n default:\n return 'pink';\n }\n}\n","import React from 'react';\n\nimport { useViewModel } from 'libs/common/react/hooks/UseViewModel';\n\nimport { UserGroup } from 'libs/analytics/interfaces';\n\nimport { InputSelection } from 'libs/shared/apps/share/components/tokenized-typeahead/InputSelection';\nimport { BulkUserActionsAddToClassroomViewModel } from 'libs/shared/apps/user-manager/interfaces/viewmodels/BulkUserActionsViewModel';\nimport { BulkUserActionsHelper } from 'libs/shared/apps/user-manager/utils/BulkUserActionsHelper';\nimport { LanguageNamespaceContext, Text } from 'libs/shared/components/text/Text';\nimport { WizardConfirmationHeader } from 'libs/shared/components/wizard/confirmation-header/WizardConfirmationHeader';\nimport { SharedViewModelKeys } from 'libs/shared/constants/SharedViewModelKeys';\nimport { User } from 'libs/shared/interfaces';\n\nimport { BulkUserActionsConfirmationUserList } from '../user-list/BulkUserActionsConfirmationUserList';\n\nconst namespace = 'userManager.bulkUserActionsAddToClassroomConfirmation';\n\ninterface BulkUserActionsAddToClassroomConfirmationProps {\n users: User[];\n imageCdnUrl: string;\n userType: UserGroup;\n hasMoreUsers: boolean;\n isFetchingUsers: boolean;\n userCount: number;\n fetchNextUserPage: () => void;\n onClickConfirm: () => void;\n}\n\nexport function BulkUserActionsAddToClassroomConfirmation(\n props: BulkUserActionsAddToClassroomConfirmationProps\n): JSX.Element {\n const [viewModel] = useViewModel<BulkUserActionsAddToClassroomViewModel>(\n SharedViewModelKeys.BULK_USER_ACTIONS\n );\n\n BulkUserActionsHelper.useSetWizardConfirmationCallback(props.onClickConfirm);\n\n return (\n <LanguageNamespaceContext.Provider value={namespace}>\n <WizardConfirmationHeader>\n <p className='fw-semibold'>\n <Text\n namespace={namespace}\n phrase='heading'\n options={{\n smartCount: props.userCount\n }}\n />\n </p>\n\n {/*\n * The viewModel gets cleared out when exiting the wizard, however this component requires a selection.\n * So we don't render our input selection if classroom is not set\n */}\n {viewModel.classroom &&\n <div className={`rounded rounded-3 pb-2`}>\n <div className='d-flex'>\n <InputSelection selection={viewModel.classroom} />\n </div>\n </div>\n }\n </WizardConfirmationHeader>\n\n <BulkUserActionsConfirmationUserList\n users={props.users}\n imageCdnUrl={props.imageCdnUrl}\n hasMore={props.hasMoreUsers}\n isFetching={props.isFetchingUsers}\n fetchNext={props.fetchNextUserPage}\n userType={props.userType}\n userCount={props.userCount}\n />\n </LanguageNamespaceContext.Provider>\n );\n}","import React from 'react';\nimport { useDispatch } from 'react-redux';\n\nimport { Core } from 'libs/common/core';\nimport { Flight } from 'libs/common/flight';\nimport { useViewModel } from 'libs/common/react/hooks/UseViewModel';\n\nimport { BulkUserActionsAddToClassroomConfirmation } from 'libs/shared/apps/user-manager/components/bulk-actions-wizard/confirmation/add-to-classroom/BulkUserActionsAddToClassroomConfirmation';\nimport { BulkUserActionsWizardLayout } from 'libs/shared/apps/user-manager/components/bulk-actions-wizard/layout/BulkUserActionsWizardLayout';\nimport { UserWizardParams } 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 { SharedViewModelKeys } from 'libs/shared/constants/SharedViewModelKeys';\nimport { ConfigRequests } from 'libs/shared/flight-requests/ConfigRequests';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { BatchJob, Config, CurrentUser } from 'libs/shared/interfaces';\n\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 BulkUserActionsAddToClassroomConfirmationView(props: UserWizardParams): JSX.Element {\n const {\n users,\n count,\n isFetching,\n hasMore,\n fetchNext\n } = useBulkActionsUsersWrapper(props.userType);\n\n const [viewModel] = useViewModel<BulkUserActionsViewModel>(\n SharedViewModelKeys.BULK_USER_ACTIONS\n );\n\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n const config = Flight.useBasicFetch<Config>(ConfigRequests.config());\n\n const dispatch = useDispatch();\n\n const appLinks = getUserManagerAppLinks(props.userType);\n\n const onCreateJobError = BulkUserActionsHelper.useCreateJobErrorAlert();\n function startBulkAction(): void {\n if (!viewModel)\n return;\n\n const data = BulkUserActionsHelper.getCreateJobRequestData(\n viewModel,\n currentUser.data.customerId,\n props.userType\n );\n\n Flight.fetch(dispatch, JobRequests.createJob(data, onCreateJob, onCreateJobError));\n }\n\n function onCreateJob(job: BatchJob): void {\n Core.AppLinkHelper.trigger({\n ...appLinks.bulkActionsStatus.polling,\n params: {\n userType: props.userType,\n jobId: job.id\n }\n });\n }\n\n return (\n <BulkUserActionsWizardLayout\n appLinks={appLinks}\n userType={props.userType}\n users={users}\n currentStep='confirmation'\n userCount={count}\n loaded\n >\n <BulkUserActionsAddToClassroomConfirmation\n users={users}\n imageCdnUrl={config.data?.imageCdnUrl}\n hasMoreUsers={hasMore}\n isFetchingUsers={isFetching}\n fetchNextUserPage={fetchNext}\n userType={props.userType}\n onClickConfirm={startBulkAction}\n userCount={count}\n />\n </BulkUserActionsWizardLayout>\n );\n}"],"names":["WhiteAvatar","props","imageUrl","initials","style","backgroundImage","className","getPhrase","LanguageService","getColouredIconClass","selection","iconClass","typeId","MasterType","metadata","colour","InputSelectionExpander","colourClass","entity","mapEntityTypeToForegroundColor","isClassroom","canExpand","user","avatar","url","UserHelper","name","surname","Tooltip","title","SvgContainer","svgName","hasExpanded","Spinner","as","size","animation","role","DivButton","onClick","onClickExpand","mapEntityTypeToBsVariant","userType","UserGroup","InputSelection","MasterTypeHelper","isClassroomGroup","isExpandable","hasMembers","users","count","hasFetchedMembers","data","length","setHasExpanded","setCanExpand","colourVariant","map","InputToken","key","id","hasStudentExperience","onClickRemove","selectionName","hideExpander","FunctionHelper","mapColourToBsVariant","groupColour","namespace","BulkUserActionsAddToClassroomConfirmation","viewModel","SharedViewModelKeys","BulkUserActionsHelper","onClickConfirm","value","WizardConfirmationHeader","Text","phrase","options","smartCount","userCount","classroom","BulkUserActionsConfirmationUserList","imageCdnUrl","hasMore","hasMoreUsers","isFetching","isFetchingUsers","fetchNext","fetchNextUserPage","BulkUserActionsAddToClassroomConfirmationView","useBulkActionsUsersWrapper","currentUser","UserRequests","config","ConfigRequests","dispatch","appLinks","onCreateJobError","onCreateJob","job","bulkActionsStatus","polling","params","jobId","BulkUserActionsWizardLayout","currentStep","loaded","customerId","JobRequests"],"sourceRoot":""}
@@ -1,2 +1,2 @@
1
1
  "use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[1958],{71958:(e,t,r)=>{r.r(t),r.d(t,{JoinClassroomView:()=>j});var n=r(32735),a=r(80247),l=r(70680),o=r(39202),c=r(50242),i=r(23481),s=r(81886),u=r(20354),m=r(36848),f=r(2786),d=r(31949),b=r(83421),g=r(14070),h=r(97291),v=r(99742);function y(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,l,o,c=[],i=!0,s=!1;try{if(l=(r=r.call(e)).next,0===t){if(Object(r)!==r)return;i=!1}else for(;!(i=(n=l.call(r)).done)&&(c.push(n.value),c.length!==t);i=!0);}catch(e){s=!0,a=e}finally{try{if(!i&&null!=r.return&&(o=r.return(),Object(o)!==o))return}finally{if(s)throw a}}return c}}(e,t)||function(e,t){if(e){if("string"==typeof e)return E(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)?E(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 E(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 p=i.T.encloseNamespace("classrooms.joinClassroomResponseDetails");function k(e){var t=y(n.useState(""),2),r=t[0],a=t[1],l=y(n.useState(""),2),o=l[0],c=l[1];return n.useEffect((function(){switch(e.error){case"invalid":a(p("invalidError")),c(p("invalidMessage"));break;case"wrong-school":a(p("wrongSchoolError")),c(p("wrongSchoolMessage"));break;case"not-a-learner":a(p("notALearnerError")),c(p("notALearnerMessage"));break;default:a(p("unknownError")),c(p("unknownMessage"))}}),[e.error]),e.error?n.createElement("div",null,n.createElement("img",{src:v.W.AddStudents.JoinClassroomResponse.ERROR,className:"w-50 mb-3 d-block mx-auto"}),n.createElement("div",{className:"text-center h6"},n.createElement("strong",null,r)),n.createElement("div",{className:"text-center mb-3"},o)):n.createElement("div",null,n.createElement("img",{src:v.W.AddStudents.JoinClassroomResponse.SUCCESS,className:"w-50 mb-3 d-block mx-auto"}),n.createElement("div",{className:"text-center h6"},n.createElement("strong",null,p("success"))),n.createElement("div",{className:"text-center mb-3"},p("join"),n.createElement("strong",null,e.classroomName)))}var S=r(88630);const w={logo:"d_Zk6",formContainer:"RrOGB"};function A(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,l,o,c=[],i=!0,s=!1;try{if(l=(r=r.call(e)).next,0===t){if(Object(r)!==r)return;i=!1}else for(;!(i=(n=l.call(r)).done)&&(c.push(n.value),c.length!==t);i=!0);}catch(e){s=!0,a=e}finally{try{if(!i&&null!=r.return&&(o=r.return(),Object(o)!==o))return}finally{if(s)throw a}}return c}}(e,t)||function(e,t){if(e){if("string"==typeof e)return C(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)?C(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 C(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 N=i.T.encloseNamespace("classrooms.joinClassroom");function j(e){var t,r,i=(0,l.I0)(),v=u.a.useBasicFetch(d.N.currentUser()),y=A(n.useState(!1),2),E=y[0],p=y[1],C=A(n.useState(null),2),j=C[0],I=C[1],x=A(n.useState(""),2),O=x[0],U=x[1];function L(e){U(e.classroomName),p(!0)}function M(e){switch(e.status){case c.o.NotFound:I("invalid");break;case c.o.Forbidden:I("wrong-school");break;case c.o.BadRequest:I("not-a-learner");break;default:I("unknown")}p(!0)}return n.useEffect((function(){v.data&&u.a.fetch(i,S.F.checkJoinCode(e.joinCode,(function(t){v.data.isAuthenticated?u.a.fetch(i,S.F.joinClassroom(e.joinCode,L,M)):s.Q.C$.trigger({application:h.O.DEFAULT,action:g.e.Default.LOG_IN,params:{redirectUrl:o.Ab.GetCurrentPath()+o.Ab.GetCurrentQueryString(),skipPrompt:!0,customerId:t.customerId}})}),M))}),[null===(t=v.data)||void 0===t?void 0:t.isAuthenticated]),n.createElement(b.Z,null,n.createElement("div",{className:"".concat(w.formContainer," m-auto")},n.createElement("div",{className:"".concat(w.logo," mb-4 mx-auto")},n.createElement(f.$S,null)),!E&&n.createElement("div",{className:"text-center p-5"},n.createElement(a.Z,{as:"div",animation:"border",role:"status"})),E&&!j&&n.createElement(k,{classroomName:O}),E&&j&&n.createElement(k,{error:j}),(null===(r=v.data)||void 0===r?void 0:r.isAuthenticated)&&n.createElement(m.F,{className:"btn btn-dark w-100 mt-2 btn-lg",appLink:{application:h.O.DASHBOARD,action:g.e.Dashboard.HOME}},N("enter"))))}},83421:(e,t,r)=>{r.d(t,{Z:()=>d});var n=r(32735),a=r(54610),l=r(4594),o=r(67453),c=r(99742);const i={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 r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var n,a,l,o,c=[],i=!0,s=!1;try{if(l=(r=r.call(e)).next,0===t){if(Object(r)!==r)return;i=!1}else for(;!(i=(n=l.call(r)).done)&&(c.push(n.value),c.length!==t);i=!0);}catch(e){s=!0,a=e}finally{try{if(!i&&null!=r.return&&(o=r.return(),Object(o)!==o))return}finally{if(s)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 m=[{bgUrl:c.W.LaunchPad.BG_1},{bgUrl:c.W.LaunchPad.BG_2},{bgUrl:c.W.LaunchPad.BG_3},{bgUrl:c.W.LaunchPad.BG_4},{bgUrl:c.W.LaunchPad.BG_5}];function f(e){switch(e){case l.E.Video:case l.E.Interactive:case l.E.Clip:return i.thumbnail;case l.E.Subject:case l.E.Playlist:return i.cover;case l.E.Series:return i.tallposter;default:return""}}function d(e){var t,r=s(n.useState(!1),2),l=r[0],c=r[1],u=s(n.useState(""),2),d=u[0],b=u[1],g=s(n.useState(""),2),h=g[0],v=g[1],y=o.j.createUrl(e.imageUrl,{size:a.h2.Large}),E=m;return n.useEffect((function(){if(!y&&E&&0!==E.length){var e,t=(e=E)[Math.floor(Math.random()*e.length)];t.bgUrl&&b(t.bgUrl),t.textUrl&&v(t.textUrl)}}),[]),n.useEffect((function(){if(y){var e=new Image;return e.onload=function(){return c(!0)},e.src=y,function(){return e.onload=null}}}),[]),n.createElement("div",{className:"d-flex"},e.leftComponent?e.leftComponent():n.createElement("div",{className:"".concat(i.left," bg-light"),style:{backgroundImage:"url('".concat(d,"')")}},h&&n.createElement("div",{className:i.leftTextImage,style:{backgroundImage:"url('".concat(h,"')")}}),l&&n.createElement(n.Fragment,null,n.createElement("div",{className:i.blur,style:{backgroundImage:"url('".concat(y,"')")}}),n.createElement("div",{className:"".concat(i.imageContainer," ").concat(f(e.objectType))},n.createElement("div",{className:i.imagePosition},n.createElement("img",{className:i.image,src:y,alt:e.title}))))),n.createElement("div",{className:"".concat(i.right," bg-white d-flex flex-column")},n.createElement("div",{className:"position-absolute d-flex align-items-center ".concat(i.linksContainer)},null===(t=e.links)||void 0===t?void 0:t.map((function(e,t){return e.hide?n.createElement(n.Fragment,{key:t}):n.createElement("a",{key:t,href:e.url,className:"info-link fw-semibold",onClick:e.onClick},e.text)}))),e.children))}}}]);
2
- //# sourceMappingURL=1958-9889c1ad24-lite.chunk.js.map
2
+ //# sourceMappingURL=1958-5336189397-lite.chunk.js.map