@clickview/lite 0.48.0-rc.1 → 0.48.0-rc.3

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 (95) hide show
  1. package/dist/bundles.json +1 -1
  2. package/dist/languages/en.json +1 -1
  3. package/dist/scripts/{1197-52bedf8583-lite.chunk.js → 1197-bc02ba8644-lite.chunk.js} +2 -2
  4. package/dist/scripts/1197-bc02ba8644-lite.chunk.js.map +1 -0
  5. package/dist/scripts/{1285-e93a3f21ba-lite.chunk.js → 1285-746158eef6-lite.chunk.js} +2 -2
  6. package/dist/scripts/{1285-e93a3f21ba-lite.chunk.js.map → 1285-746158eef6-lite.chunk.js.map} +1 -1
  7. package/dist/scripts/1628-3104bf944c-lite.chunk.js +2 -0
  8. package/dist/scripts/1628-3104bf944c-lite.chunk.js.map +1 -0
  9. package/dist/scripts/{170-f48bfc1128-lite.chunk.js → 170-bf0dd6b8ae-lite.chunk.js} +3 -3
  10. package/dist/scripts/170-bf0dd6b8ae-lite.chunk.js.map +1 -0
  11. package/dist/scripts/2182-f4e560b5f9-lite.chunk.js +2 -0
  12. package/dist/scripts/2182-f4e560b5f9-lite.chunk.js.map +1 -0
  13. package/dist/scripts/227-c82ab0d861-lite.chunk.js +2 -0
  14. package/dist/scripts/227-c82ab0d861-lite.chunk.js.map +1 -0
  15. package/dist/scripts/{2469-c504f7a87d-lite.chunk.js → 2469-34d8afaeb3-lite.chunk.js} +2 -2
  16. package/dist/scripts/{2469-c504f7a87d-lite.chunk.js.map → 2469-34d8afaeb3-lite.chunk.js.map} +1 -1
  17. package/dist/scripts/{2679-6c0646cc30-lite.chunk.js → 2679-269830f57c-lite.chunk.js} +2 -2
  18. package/dist/scripts/2679-269830f57c-lite.chunk.js.map +1 -0
  19. package/dist/scripts/{2734-a792d5393b-lite.chunk.js → 2734-9533718178-lite.chunk.js} +2 -2
  20. package/dist/scripts/2734-9533718178-lite.chunk.js.map +1 -0
  21. package/dist/scripts/{2851-e79b075ea9-lite.chunk.js → 2851-c0655d1a1d-lite.chunk.js} +2 -2
  22. package/dist/scripts/2851-c0655d1a1d-lite.chunk.js.map +1 -0
  23. package/dist/scripts/{3157-327cefda57-lite.chunk.js → 3157-730ff8b0ce-lite.chunk.js} +2 -2
  24. package/dist/scripts/3157-730ff8b0ce-lite.chunk.js.map +1 -0
  25. package/dist/scripts/{3158-7cff145fc4-lite.chunk.js → 3158-fbc814c471-lite.chunk.js} +2 -2
  26. package/dist/scripts/3158-fbc814c471-lite.chunk.js.map +1 -0
  27. package/dist/scripts/4626-e91b79757e-lite.chunk.js +3 -0
  28. package/dist/scripts/4626-e91b79757e-lite.chunk.js.map +1 -0
  29. package/dist/scripts/{5442-eecab1d715-lite.chunk.js → 5442-2326dc9418-lite.chunk.js} +2 -2
  30. package/dist/scripts/{5442-eecab1d715-lite.chunk.js.map → 5442-2326dc9418-lite.chunk.js.map} +1 -1
  31. package/dist/scripts/{5591-a4850980ea-lite.chunk.js → 5591-90c4fa0949-lite.chunk.js} +2 -2
  32. package/dist/scripts/5591-90c4fa0949-lite.chunk.js.map +1 -0
  33. package/dist/scripts/{5940-3ddc297b7a-lite.chunk.js → 5940-634de60f9b-lite.chunk.js} +2 -2
  34. package/dist/scripts/5940-634de60f9b-lite.chunk.js.map +1 -0
  35. package/dist/scripts/{6102-b712858bd1-lite.chunk.js → 6102-83f8006aec-lite.chunk.js} +3 -3
  36. package/dist/scripts/{6102-b712858bd1-lite.chunk.js.map → 6102-83f8006aec-lite.chunk.js.map} +1 -1
  37. package/dist/scripts/{6274-7d4c6ba241-lite.chunk.js → 6274-473fcd2e63-lite.chunk.js} +2 -2
  38. package/dist/scripts/{6274-7d4c6ba241-lite.chunk.js.map → 6274-473fcd2e63-lite.chunk.js.map} +1 -1
  39. package/dist/scripts/{7172-2d87ce76a3-lite.chunk.js → 7172-960e49b199-lite.chunk.js} +2 -2
  40. package/dist/scripts/7172-960e49b199-lite.chunk.js.map +1 -0
  41. package/dist/scripts/7180-79ada17b34-lite.chunk.js +2 -0
  42. package/dist/scripts/7180-79ada17b34-lite.chunk.js.map +1 -0
  43. package/dist/scripts/{7301-44362a7b42-lite.chunk.js → 7301-50cf0faef7-lite.chunk.js} +2 -2
  44. package/dist/scripts/{7301-44362a7b42-lite.chunk.js.map → 7301-50cf0faef7-lite.chunk.js.map} +1 -1
  45. package/dist/scripts/{7915-afd2304b08-lite.chunk.js → 7915-44db39c137-lite.chunk.js} +2 -2
  46. package/dist/scripts/7915-44db39c137-lite.chunk.js.map +1 -0
  47. package/dist/scripts/{8025-d7a573aca0-lite.chunk.js → 8025-24e45dc3b7-lite.chunk.js} +2 -2
  48. package/dist/scripts/8025-24e45dc3b7-lite.chunk.js.map +1 -0
  49. package/dist/scripts/823-ad4345f865-lite.chunk.js +2 -0
  50. package/dist/scripts/823-ad4345f865-lite.chunk.js.map +1 -0
  51. package/dist/scripts/{8258-6c86ad1fa4-lite.chunk.js → 8258-02d619de75-lite.chunk.js} +2 -2
  52. package/dist/scripts/{8258-6c86ad1fa4-lite.chunk.js.map → 8258-02d619de75-lite.chunk.js.map} +1 -1
  53. package/dist/scripts/8906-0821b0babe-lite.chunk.js +3 -0
  54. package/dist/scripts/8906-0821b0babe-lite.chunk.js.map +1 -0
  55. package/dist/scripts/{9212-d73ddd1ae6-lite.chunk.js → 9212-445b6499cb-lite.chunk.js} +2 -2
  56. package/dist/scripts/9212-445b6499cb-lite.chunk.js.map +1 -0
  57. package/dist/scripts/{9557-580fd7d743-lite.chunk.js → 9557-1ba0323e44-lite.chunk.js} +2 -2
  58. package/dist/scripts/{9557-580fd7d743-lite.chunk.js.map → 9557-1ba0323e44-lite.chunk.js.map} +1 -1
  59. package/dist/scripts/bundle-058c7cee3f.min.js +3 -0
  60. package/dist/scripts/bundle-058c7cee3f.min.js.map +1 -0
  61. package/package.json +1 -1
  62. package/dist/scripts/1197-52bedf8583-lite.chunk.js.map +0 -1
  63. package/dist/scripts/1628-58b55d05b5-lite.chunk.js +0 -2
  64. package/dist/scripts/1628-58b55d05b5-lite.chunk.js.map +0 -1
  65. package/dist/scripts/170-f48bfc1128-lite.chunk.js.map +0 -1
  66. package/dist/scripts/2182-da88a5c69c-lite.chunk.js +0 -2
  67. package/dist/scripts/2182-da88a5c69c-lite.chunk.js.map +0 -1
  68. package/dist/scripts/227-fb7b36b41a-lite.chunk.js +0 -2
  69. package/dist/scripts/227-fb7b36b41a-lite.chunk.js.map +0 -1
  70. package/dist/scripts/2679-6c0646cc30-lite.chunk.js.map +0 -1
  71. package/dist/scripts/2734-a792d5393b-lite.chunk.js.map +0 -1
  72. package/dist/scripts/2851-e79b075ea9-lite.chunk.js.map +0 -1
  73. package/dist/scripts/3157-327cefda57-lite.chunk.js.map +0 -1
  74. package/dist/scripts/3158-7cff145fc4-lite.chunk.js.map +0 -1
  75. package/dist/scripts/4626-cfc65aede5-lite.chunk.js +0 -3
  76. package/dist/scripts/4626-cfc65aede5-lite.chunk.js.map +0 -1
  77. package/dist/scripts/5591-a4850980ea-lite.chunk.js.map +0 -1
  78. package/dist/scripts/5940-3ddc297b7a-lite.chunk.js.map +0 -1
  79. package/dist/scripts/7172-2d87ce76a3-lite.chunk.js.map +0 -1
  80. package/dist/scripts/7180-b29d70e9d8-lite.chunk.js +0 -2
  81. package/dist/scripts/7180-b29d70e9d8-lite.chunk.js.map +0 -1
  82. package/dist/scripts/7915-afd2304b08-lite.chunk.js.map +0 -1
  83. package/dist/scripts/8025-d7a573aca0-lite.chunk.js.map +0 -1
  84. package/dist/scripts/823-7735476581-lite.chunk.js +0 -2
  85. package/dist/scripts/823-7735476581-lite.chunk.js.map +0 -1
  86. package/dist/scripts/8906-49532e8ec3-lite.chunk.js +0 -3
  87. package/dist/scripts/8906-49532e8ec3-lite.chunk.js.map +0 -1
  88. package/dist/scripts/9212-d73ddd1ae6-lite.chunk.js.map +0 -1
  89. package/dist/scripts/bundle-d3c605e0ba.min.js +0 -3
  90. package/dist/scripts/bundle-d3c605e0ba.min.js.map +0 -1
  91. /package/dist/scripts/{170-f48bfc1128-lite.chunk.js.LICENSE.txt → 170-bf0dd6b8ae-lite.chunk.js.LICENSE.txt} +0 -0
  92. /package/dist/scripts/{4626-cfc65aede5-lite.chunk.js.LICENSE.txt → 4626-e91b79757e-lite.chunk.js.LICENSE.txt} +0 -0
  93. /package/dist/scripts/{6102-b712858bd1-lite.chunk.js.LICENSE.txt → 6102-83f8006aec-lite.chunk.js.LICENSE.txt} +0 -0
  94. /package/dist/scripts/{8906-49532e8ec3-lite.chunk.js.LICENSE.txt → 8906-0821b0babe-lite.chunk.js.LICENSE.txt} +0 -0
  95. /package/dist/scripts/{bundle-d3c605e0ba.min.js.LICENSE.txt → bundle-058c7cee3f.min.js.LICENSE.txt} +0 -0
@@ -1,2 +1,2 @@
1
- "use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[7915],{84963:(e,t,n)=>{n.d(t,{r:()=>u});var a=n(32735),r=n(23481),o=n(83914),i=n(76177),l=n(35223);const c={tag:"XRj8d",tooltip:"X6mLk"};var s="specialEventCalendar.comingSoonTag";function u(e){return a.createElement(i.u,{title:r.T.getPhrase(s,"tooltip"),spanHackClassName:"d-block ".concat(c.tooltip),spanHack:!0},a.createElement("div",{className:"d-flex text-dark align-items-center ".concat(c.tag," ").concat(e.className)},a.createElement(o.x,{svgName:l.vn.Timer}),!e.onlyIcon&&r.T.getPhrase(s,"comingSoon")))}},73679:(e,t,n)=>{n.d(t,{s:()=>i});var a=n(32735),r=n(36848);const o={dateItem:"I3SBm",label:"PRORs",body:"RfiM_",bodyDay:"ZOVny",bodyRange:"vYhXN",bodyMonth:"mYslO",month:"EPkkQ"};function i(e){var t,n,i;return a.createElement(r.F,{appLink:null===(t=e.getAppLink)||void 0===t?void 0:t.call(e),className:"text-decoration-none text-center bg-white text-dark border border-3 ".concat(null===(n=e.theme)||void 0===n?void 0:n.border," rounded-3 d-block fw-semibold ").concat(e.className),analyticsData:e.analyticsData,analyticsOptions:e.analyticsOptions},a.createElement("div",{className:"position-relative ".concat(o.dateItem)},a.createElement("div",{className:"".concat(null===(i=e.theme)||void 0===i?void 0:i.background," py-1 ").concat(o.label," d-flex align-items-center justify-content-center")},e.label?e.label:a.createElement(a.Fragment,null," ")),a.createElement("div",{className:"".concat(function(){switch(e.body.type){case"range":return o.bodyRange;case"day":return o.bodyDay;case"month":return o.bodyMonth}}()," ").concat(o.body," my-2")},e.body.text),a.createElement("div",{className:"mb-0 ".concat(o.month)},e.month)))}},89043:(e,t,n)=>{n.d(t,{p:()=>S,v:()=>A});var a=n(32735),r=n(110),o=n(12788),i={renderInPortalIfExists:function(e,t){return t?(0,o.createPortal)(e,t):e}},l=n(84963),c=n(73679),s=n(83657),u=n(23481),d=n(36848),m=n(83914),v=n(35223),f="shared.backButton";function p(e){var t=Object.assign({textShadow:!0},e),n=t.backToName,r=t.appLink,o=t.color,i=t.extraClasses,l=t.textShadow,c=n?u.T.getPhrase(f,"backTo",{backToName:n}):u.T.getPhrase(f,"back"),s="black"===o?"":"text-white",p=l?"text-shadow":"";return a.createElement(d.F,{appLink:r,className:"d-inline-flex align-items-center h5 mb-0 ".concat(i," ").concat(s," ").concat(p)},a.createElement(m.x,{svgName:v.vn.ChevronLeft,size:m.S.Medium}),a.createElement("span",{className:"ms-1"},c))}p.defaultProps={color:"black",extraClasses:""};var g=n(36518),h=n(83345),b=n(10587),y=n(94232),E=n(54610),C=n(79967),N=n(67453);const x={bannerContent:"sSCTB",actionsContainer:"Z5WI2",bannerContentWithLogo:"rgs7Q",container:"M51HJ",logoContainer:"vkeJk",logoContainerLeft:"M3U9B",logoHeading:"EtRwC",specialEventContainer:"rOxDc",headingLarge:"_8pnV",heading:"JXVBH"};var w="".concat(b.y[E.__.Banners].width,":").concat(b.y[E.__.Banners].height);function k(e){return e.length<160?"h1":x.headingLarge}var S=a.memo((function(e){var t,n,o,u,d=e.heading,m=e.banner,v=e.imageCdnUrl,f=e.actions,b=e.sortComponent,S=e.blockColourClass,A=e.specialEvent,F=a.useContext(y.n),O=(0,C.k)().xxl?1920:1200,L=a.useMemo((function(){if(!A||e.showComingSoon)return!1;var t=r.O.format(new Date,"YYYY-MM-DD");return A.endDate?A.startDate<=t&&A.endDate>=t:A.startDate===t}),[A]),I=e.imageOptions||{width:O,ratio:w,resizeType:E.Nq.Cover},P=!!m&&!!v&&N.j.createBannerUrl(m,{fallbackBaseUrl:v,fallbackCategoryName:d,type:E.__.Banners},I),T={className:"banner banner-header ".concat(e.bannerClassName),style:P?{backgroundImage:"url('".concat(P,"')")}:{}};!m&&S&&(delete T.style,T.className+=" ".concat(S));var D=e.detailsComponent;return i.renderInPortalIfExists(a.createElement("header",Object.assign({},T),a.createElement("div",{className:"container ".concat(x.container," position-relative inner-banner")},e.backButtonAppLink&&a.createElement("div",{className:"pt-3"},a.createElement(p,{appLink:e.backButtonAppLink,backToName:e.backButtonText,extraClasses:e.backButtonClasses,color:"white"})),a.createElement("div",{className:"".concat(e.alignLogoLeft?"position-absolute top-50 start-0 translate-middle-y w-100 ps-4":"".concat(x.bannerContent," ").concat((null===(t=e.logo)||void 0===t?void 0:t.url)?x.bannerContentWithLogo:""))},!!A&&a.createElement("div",{className:"position-relative ".concat(x.specialEventContainer)},a.createElement(c.s,{body:{type:A.endDate?"range":"day",text:A.endDate?"".concat(r.O.format(A.startDate,"DD"),"-").concat(r.O.format(A.endDate,"DD")):r.O.format(A.startDate,"DD")},month:r.O.format(A.startDate,"MMMM"),theme:e.calendarTheme})),a.createElement("div",null,L&&a.createElement("div",{className:"rounded-pill py-1 px-2 my-1 me-1 fw-semibold bg-light-blue lh-1 d-inline-block"},a.createElement(h.x,{namespace:"shared.bannerHeader",phrase:"onToday"})),e.showComingSoon&&a.createElement(l.r,{className:"pe-2 fw-semibold mb-1 rounded-pill justify-content-start text-nowrap"}),a.createElement("div",{className:"d-flex align-items-center"},e.alignLogoLeft&&a.createElement("div",{className:"".concat(x.logoContainerLeft," d-none d-md-block partial-loading-background rounded-circle overflow-hidden me-3")},(null===(n=e.logo)||void 0===n?void 0:n.url)&&a.createElement(g.w,{src:N.j.createUrl(null===(o=e.logo)||void 0===o?void 0:o.url,{size:E.h2.Small})})),a.createElement("h1",{className:"text-white text-shadow pe-3 ".concat(x.heading," ").concat(k(d)," ").concat(e.alignLogoLeft?"w-50":"")},d,D&&a.createElement(D,null)))),!!f&&a.createElement("div",{className:x.actionsContainer},a.createElement(s.e,{actions:f,sortComponent:b,actionsDropdownClassName:e.actionsDropdownClassName}))),!e.alignLogoLeft&&!!(null===(u=e.logo)||void 0===u?void 0:u.url)&&a.createElement("div",{className:x.logoContainer},a.createElement("img",{src:N.j.createUrl(e.logo.url,{size:E.h2.Small}),className:"rounded-circle"})))),null==F?void 0:F.container)}),(function(e,t){var n,a;return e.actions===t.actions&&e.heading===t.heading&&(null===(n=e.logo)||void 0===n?void 0:n.url)===(null===(a=t.logo)||void 0===a?void 0:a.url)}));function A(){var e=a.useContext(y.n);return i.renderInPortalIfExists(a.createElement("div",{className:"partial-banner partial-loading-background ".concat(x.banner)}),null==e?void 0:e.container)}},71020:(e,t,n)=>{n.d(t,{_:()=>u});var a=n(32735),r=n(80247),o=n(34152),i=n(83914),l=n(35223);const c={container:"VwD1b",spinner:"eJ85e"};function s(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,a=new Array(t);n<t;n++)a[n]=e[n];return a}function u(e){var t,n,u=(t=(0,o.YD)(),n=2,function(e){if(Array.isArray(e))return e}(t)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var a,r,o,i,l=[],c=!0,s=!1;try{if(o=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;c=!1}else for(;!(c=(a=o.call(n)).done)&&(l.push(a.value),l.length!==t);c=!0);}catch(e){s=!0,r=e}finally{try{if(!c&&null!=n.return&&(i=n.return(),Object(i)!==i))return}finally{if(s)throw r}}return l}}(t,n)||function(e,t){if(e){if("string"==typeof e)return s(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?s(e,t):void 0}}(t,n)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),d=u[0],m=u[1];return a.useEffect((function(){var t;e.fetchOnScroll&&m&&!e.isFetching&&(null===(t=e.fetchNext)||void 0===t||t.call(e,e.nextCursor))}),[m,e.isFetching]),a.createElement("div",{className:"p-3 text-center ".concat(c.container),ref:d},e.isFetching?a.createElement(r.Z,{as:"span",animation:"border",role:"status",className:c.spinner}):a.createElement(i.x,{svgName:l.vn.ChevronDown,className:"svg-container cursor-pointer",size:i.S.Large,onClick:function(){var t;return null===(t=e.fetchNext)||void 0===t?void 0:t.call(e,e.nextCursor)}}))}u.defaultProps={fetchOnScroll:!1}},74696:(e,t,n)=>{n.d(t,{S:()=>s});var a=n(32735),r=n(68050),o=n(69111),i=n(9977),l=n(79967);const c={partialOptions:"Gufgq",partialName:"SicQQ",partialDescription:"dPGMq",partialThumbnail:"vZrnb",partialDragHandle:"iq73R"};function s(e){return a.createElement("div",{className:"mx-2"},Array(e.numVideos).fill(null).map((function(t,n){return a.createElement("div",{className:"d-flex",key:n},e.allowBulkActions&&a.createElement("div",{className:"form-check pe-3 pe-sm-2 mx-0 mx-md-2"}),a.createElement(u,Object.assign({},e)))})))}function u(e){var t=(0,l.k)(),n="sm"===i.O.getSize(t,"md"),s=e.withReordering&&!t.xs;return a.createElement(r.Z,{className:"".concat(n?"":"py-2"," flex-grow-1")},a.createElement(o.Z,Object.assign({},i.O.getThumbnailColumns(),{className:"flex-column align-items-flex-start ".concat(n?"pb-2 pe-1":"mb-1 pe-3 pe-md-2")}),a.createElement(r.Z,null,!!s&&a.createElement("div",{className:"d-flex align-items-center justify-content-center col-2"},a.createElement("div",{className:"partial-loading-background ".concat(c.partialDragHandle)})),a.createElement(o.Z,{xs:i.O.getThumbnailColSize(s)},a.createElement("div",{className:"partial-loading-background ".concat(n?"rounded":"rounded-3"," ").concat(c.partialThumbnail)})))),a.createElement(o.Z,Object.assign({},i.O.getDetailsColumns(),{className:n?"pb-2":"px-2"}),a.createElement("div",{className:"partial-loading-background mb-1 ".concat(c.partialName)}),a.createElement("div",{className:"partial-loading-background ".concat(c.partialDescription)})))}s.defaultProps={numVideos:15}},94644:(e,t,n)=>{n.d(t,{r:()=>u});var a=n(50242),r=n(81886),o=n(67058),i=n(14553),l=n(49267),c=n(49075),s={notFound:o.d,forbidden:{rating:i.q,yearLevel:i.q,region:l.a,privacy:i.q},badRequest:c._};function u(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(e){var o;o="number"==typeof e?e:e.status;var i=Object.assign(Object.assign({},s),t);o&&r.Q.Ry.isStatusCodeError(o)&&(o!==a.o.NotFound?o!==a.o.Forbidden?n.badRequest||r.Q.Ry.throw(new i.badRequest):n.forbidden||r.Q.Ry.throw(new i.forbidden.privacy):n.notFound||r.Q.Ry.throw(new i.notFound))}}},60115:(e,t,n)=>{n.d(t,{K:()=>s});var a=n(32735),r=n(50242),o=n(91967),i=400,l=n(45719);function c(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,a=new Array(t);n<t;n++)a[n]=e[n];return a}function s(e,t,n,s,u,d){var m,v,f,p,g=(m=(0,a.useState)(0),v=2,function(e){if(Array.isArray(e))return e}(m)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var a,r,o,i,l=[],c=!0,s=!1;try{if(o=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;c=!1}else for(;!(c=(a=o.call(n)).done)&&(l.push(a.value),l.length!==t);c=!0);}catch(e){s=!0,r=e}finally{try{if(!c&&null!=n.return&&(i=n.return(),Object(i)!==i))return}finally{if(s)throw r}}return l}}(m,v)||function(e,t){if(e){if("string"==typeof e)return c(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?c(e,t):void 0}}(m,v)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),h=g[0],b=g[1],y=t,E=(0,l.P)((function(t){if(!e)return null;var n=e(t);return n?n.key:null}),s,u);return f={fetchNextPage:function(){if(t&&e&&E)return b((function(e){return e+1})),y(E.nextCursor)},hasMore:!!(null==E?void 0:E.nextCursor),isFetching:null==E?void 0:E.isFetching,scrollContainer:d},p=function(){if(!f.isFetching){if(f.scrollContainer){var e=f.scrollContainer;if(e.getBoundingClientRect().height+e.scrollTop<e.scrollHeight-i)return}else if(window.innerHeight+document.documentElement.scrollTop<document.documentElement.scrollHeight-i)return;f.fetchNextPage()}},(0,a.useEffect)((function(){var e=o.q.throttle(p,200),t=f.scrollContainer||window;return f.hasMore&&t.addEventListener("scroll",e),function(){return t.removeEventListener("scroll",e)}}),[f.hasMore,f.fetchNextPage,f.scrollContainer]),(0,a.useEffect)((function(){E&&E.shouldInitialFetch&&t&&(y(),b((function(e){return e+1})))}),[null==E?void 0:E.shouldInitialFetch,t]),(0,a.useEffect)((function(){var e,t;if((null==E?void 0:E.statusCode)&&o.q.isFunction(n)){var a=+(null===(t=null===(e=E.statusCode)||void 0===e?void 0:e.toString())||void 0===t?void 0:t.substr(0,1));a!==r.k.ClientError&&a!==r.k.ServerError||n(h,E.statusCode)}}),[null==E?void 0:E.statusCode]),{items:null==E?void 0:E.items,hasMore:!!(null==E?void 0:E.nextCursor),nextCursor:null==E?void 0:E.nextCursor,isFetching:null==E?void 0:E.isFetching,totalItems:null==E?void 0:E.totalItems,hasFirstPageCompleted:null==E?void 0:E.hasFirstPageCompleted}}},44110:(e,t,n)=>{n.d(t,{i:()=>i});var a=n(20354),r=n(89454),o=n(86698),i=function(){var e=(0,o.y)({redirectOnError:!0}).activePresentation;return a.a.useBasicFetch(!!e&&r.O.presentationAudiences(e.id))}},97816:(e,t,n)=>{n.d(t,{V:()=>u});var a=n(32735),r=n(20354),o=n(21750),i=n(31949),l=n(1575);function c(e,t){if(e){if("string"==typeof e)return s(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?s(e,t):void 0}}function s(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,a=new Array(t);n<t;n++)a[n]=e[n];return a}function u(e){var t,n,u,d=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},m=r.a.useBasicFetch(i.N.currentUser()),v=a.useRef(new Set),f=e&&(Array.isArray(e)?e.filter(Boolean).map((function(e){return e.id})):e.data.filter(Boolean).map((function(e){return e.id}))),p=(n=a.useState([]),u=2,function(e){if(Array.isArray(e))return e}(n)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var a,r,o,i,l=[],c=!0,s=!1;try{if(o=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;c=!1}else for(;!(c=(a=o.call(n)).done)&&(l.push(a.value),l.length!==t);c=!0);}catch(e){s=!0,r=e}finally{try{if(!c&&null!=n.return&&(i=n.return(),Object(i)!==i))return}finally{if(s)throw r}}return l}}(n,u)||c(n,u)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),g=p[0],h=p[1];a.useEffect((function(){var e;if((null==f?void 0:f.length)&&(null===(e=m.data)||void 0===e?void 0:e.isAuthenticated)){var t=[];f.forEach((function(e){v.current.has(e)||(t.push(e),v.current.add(e))})),t.length&&h((function(e){return[].concat(function(e){return function(e){if(Array.isArray(e))return s(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||c(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}(e),[o.x.hasCurriculumLinks(t,null,d.flightNamespace),l.R.videoMixinAssocs(t,d.flightNamespace)])}))}}),[null==f?void 0:f.length,null===(t=m.data)||void 0===t?void 0:t.isAuthenticated]),r.a.useBasicFetchAll(g)}},19530:(e,t,n)=>{n.r(t),n.d(t,{FavouritesView:()=>Q});var a=n(32735),r=n(70680),o=n(23481),i=n(20354),l=n(65858),c=n(89043),s=n(71020),u=n(83345),d=n(74696),m=n(13231),v=n(51365),f=n(16714),p=n(94644),g=n(39151),h=n(1666),b=n(63419),y=n(31949),E=n(69883),C=n(60115),N=n(22902),x=n(79612),w=n(31908),k=n(99742),S=n(27638),A=n(44110),F=n(97816),O=n(10741),L=n(22490),I=n(82431),P=n(23232),T=n(83914),D=n(35223),j=n(14070),B=n(97291),M="shared.favouritesEmptyState",R=o.T.encloseNamespace(M);function V(){return a.createElement(u.D.Provider,{value:M},a.createElement(P.u,null,a.createElement(P.u.Image,{src:k.W.EmptyStates.FAVOURITED_VIDEOS,altText:R("info")}),a.createElement("div",{className:"d-flex mb-2"},a.createElement(P.u.Heading,{className:"h3 mb-0"},a.createElement(u.x,{phrase:"emptyStateHeading1"})),a.createElement("div",{className:"box-shadow rounded-circle p-1 bg-white mx-1"},a.createElement(T.x,{svgName:D.vn.HeartOutline,size:T.S.Small})),a.createElement(P.u.Heading,{className:"h3 mb-0"},a.createElement(u.x,{phrase:"emptyStateHeading2"}))),a.createElement(P.u.Info,null,a.createElement(u.x,{phrase:"info"})),a.createElement(P.u.Cta,{text:o.T.getPhrase(M,"cta"),appLink:{application:B.O.DASHBOARD,action:j.e.Dashboard.HOME}})))}function _(){return a.createElement(u.D.Provider,{value:M},a.createElement(P.u,null,a.createElement(P.u.Image,{src:k.W.EmptyStates.FAVOURITED_VIDEOS_PUBLIC,altText:R("publicInfo")}),a.createElement(P.u.Heading,null,a.createElement(u.x,{phrase:"publicHeading"})),a.createElement(P.u.Info,null,a.createElement(u.x,{phrase:"publicInfo"})),a.createElement(P.u.Cta,{text:o.T.getPhrase(M,"publicCta"),appLink:{application:B.O.SIGN_UP,action:j.e.SignUp.SIGN_UP},analyticsData:{},analyticsOptions:{actionType:l.Vw.Click,location:l.LZ.MyFavouritesLanding,entity:l.py.AppLink,workflowPhase:l.eu.Start,descriptor:l.Yu.SignUp}})))}var U=n(26323),H=n(10671),Z="shared.favourites";const q={banner:"FEWd3"};var z="shared.favourites";function Q(){var e,t,n,P,T=(0,r.I0)(),j=(0,E.Z)(),B=(0,S.u)(l.LZ.VideoThumbnail),M=B.setFavourite,R=B.canFavourite,Q=function(){var e=(0,H._)({location:H.i.VideoItem}),t=(0,S.u)(l.LZ.VideoThumbnail).setFavourite;return Object.assign(Object.assign({},e),{getVideoActions:function(n){return w.M.getCanBeConsumed(n).canConsume?e.getVideoActions(n):[{label:o.T.getPhrase(Z,"removeFromFavourites"),svgName:D.vn.Delete,button:!1,className:"btn btn-link text-danger",onClick:function(){return t(n,!1)}}]}})}();(0,x.M)({title:o.T.getPhrase(z,"pageTitle")});var Y=(0,N.T)(),$=Y.hasLocalPermissions,W=Y.hasPermissions,G=i.a.useBasicFetch(y.N.currentUser()),J=i.a.useBasicFetch((null===(e=G.data)||void 0===e?void 0:e.isAuthenticated)&&h.h.yearGroups(G.data.customerId)),X=i.a.useBasicFetch(g.L.config()),K=function(e){return b.P.getFavourites(G.data.id,e)},ee=function(e){return i.a.getFetch(T)(K(e))},te=!$(f.E.ViewMyFavouritesLanding)&&G.hasCompleted,ne=(0,C.K)(!!te&&K,ee,(function(e,t){if(1===e)return(0,p.r)(t);j.error(o.T.getPhrase(z,"error"))})),ae=ne.items,re=ne.hasMore,oe=ne.isFetching;(0,F.V)(null!==(t=null==ae?void 0:ae.filter(w.M.isVideo))&&void 0!==t?t:[]);var ie=(0,A.i)(),le=(0,U.B)(null===(n=G.data)||void 0===n?void 0:n.id),ce=le.count;return le.isLoading?a.createElement(a.Fragment,null):$(f.E.ViewMyFavouritesLanding)?a.createElement(_,null):a.createElement(v.M.Provider,{value:Q},a.createElement("div",{className:"p-3"},a.createElement(c.p,{heading:o.T.getPhrase(z,"header"),banner:{url:k.W.FAVOURITES_PLAYLIST.FAV_PLAYLIST_BANNER},bannerClassName:"".concat(q.banner," bg-pink"),imageCdnUrl:null===(P=X.data)||void 0===P?void 0:P.imageCdnUrl,detailsComponent:function(){return a.createElement("div",{className:"mb-n1 font-size-normal fw-normal mt-1"},a.createElement(u.x,{namespace:z,phrase:"videos",options:{smartCount:ce}}))}}),ae?ae.length?a.createElement(a.Fragment,null,a.createElement(m.E4,{videos:ae,yearGroups:J.data,getVideoAppLink:L.W.getAppLink,hasPermissions:W,getSubTextAppLink:function(e){return I.j.getSeriesAppLink(e.series)},setFavourite:M,canFavourite:R,presentationAudiences:ie.data,getPreviewQuestionsAppLink:function(e){return O.j.getPreviewQuestionsAppLink(e)}}),(re||oe)&&a.createElement(s._,{isFetching:oe,fetchNext:ee})):a.createElement(V,null):a.createElement(d.S,null)))}},26323:(e,t,n)=>{n.d(t,{B:()=>l});var a=n(20354),r=n(63419);function o(e){return function(e){if(Array.isArray(e))return i(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,t){if(e){if("string"==typeof e)return i(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?i(e,t):void 0}}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function i(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,a=new Array(t);n<t;n++)a[n]=e[n];return a}function l(e){var t,n,i,l,c,s,u,d,m,v=a.a.useBasicFetch(e&&r.P.getFavouritesVideosCount(e)),f=a.a.useBasicFetch(e&&r.P.getFavouritesClipsCount(e)),p=a.a.useBasicFetch(e&&r.P.getFavouritesInteractivesCount(e));return{count:(null===(t=v.data)||void 0===t?void 0:t.count)+(null===(n=p.data)||void 0===n?void 0:n.count)+(null===(i=f.data)||void 0===i?void 0:i.count),favourites:[].concat(o((null===(l=v.data)||void 0===l?void 0:l.data)||[]),o((null===(c=f.data)||void 0===c?void 0:c.data)||[]),o((null===(s=p.data)||void 0===s?void 0:s.data)||[])),isLoading:!(null===(u=v.data)||void 0===u?void 0:u.data)||!(null===(d=f.data)||void 0===d?void 0:d.data)||!(null===(m=p.data)||void 0===m?void 0:m.data)}}},68050:(e,t,n)=>{n.d(t,{Z:()=>s});var a=n(95685),r=n.n(a),o=n(32735),i=n(46304),l=n(74512);const c=o.forwardRef((({bsPrefix:e,className:t,as:n="div",...a},o)=>{const c=(0,i.vE)(e,"row"),s=(0,i.pi)(),u=(0,i.zG)(),d=`${c}-cols`,m=[];return s.forEach((e=>{const t=a[e];let n;delete a[e],null!=t&&"object"==typeof t?({cols:n}=t):n=t;const r=e!==u?`-${e}`:"";null!=n&&m.push(`${d}${r}-${n}`)})),(0,l.jsx)(n,{ref:o,...a,className:r()(t,c,...m)})}));c.displayName="Row";const s=c}}]);
2
- //# sourceMappingURL=7915-afd2304b08-lite.chunk.js.map
1
+ "use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[7915],{84963:(e,t,n)=>{n.d(t,{r:()=>u});var a=n(32735),r=n(23481),o=n(83914),i=n(76177),l=n(35223);const c={tag:"XRj8d",tooltip:"X6mLk"};var s="specialEventCalendar.comingSoonTag";function u(e){return a.createElement(i.u,{title:r.T.getPhrase(s,"tooltip"),spanHackClassName:"d-block ".concat(c.tooltip),spanHack:!0},a.createElement("div",{className:"d-flex text-dark align-items-center ".concat(c.tag," ").concat(e.className)},a.createElement(o.x,{svgName:l.vn.Timer}),!e.onlyIcon&&r.T.getPhrase(s,"comingSoon")))}},73679:(e,t,n)=>{n.d(t,{s:()=>i});var a=n(32735),r=n(36848);const o={dateItem:"I3SBm",label:"PRORs",body:"RfiM_",bodyDay:"ZOVny",bodyRange:"vYhXN",bodyMonth:"mYslO",month:"EPkkQ"};function i(e){var t,n,i;return a.createElement(r.F,{appLink:null===(t=e.getAppLink)||void 0===t?void 0:t.call(e),className:"text-decoration-none text-center bg-white text-dark border border-3 ".concat(null===(n=e.theme)||void 0===n?void 0:n.border," rounded-3 d-block fw-semibold ").concat(e.className),analyticsData:e.analyticsData,analyticsOptions:e.analyticsOptions},a.createElement("div",{className:"position-relative ".concat(o.dateItem)},a.createElement("div",{className:"".concat(null===(i=e.theme)||void 0===i?void 0:i.background," py-1 ").concat(o.label," d-flex align-items-center justify-content-center")},e.label?e.label:a.createElement(a.Fragment,null," ")),a.createElement("div",{className:"".concat(function(){switch(e.body.type){case"range":return o.bodyRange;case"day":return o.bodyDay;case"month":return o.bodyMonth}}()," ").concat(o.body," my-2")},e.body.text),a.createElement("div",{className:"mb-0 ".concat(o.month)},e.month)))}},89043:(e,t,n)=>{n.d(t,{p:()=>S,v:()=>A});var a=n(32735),r=n(110),o=n(12788),i={renderInPortalIfExists:function(e,t){return t?(0,o.createPortal)(e,t):e}},l=n(84963),c=n(73679),s=n(83657),u=n(23481),d=n(36848),m=n(83914),v=n(35223),f="shared.backButton";function p(e){var t=Object.assign({textShadow:!0},e),n=t.backToName,r=t.appLink,o=t.color,i=t.extraClasses,l=t.textShadow,c=n?u.T.getPhrase(f,"backTo",{backToName:n}):u.T.getPhrase(f,"back"),s="black"===o?"":"text-white",p=l?"text-shadow":"";return a.createElement(d.F,{appLink:r,className:"d-inline-flex align-items-center h5 mb-0 ".concat(i," ").concat(s," ").concat(p)},a.createElement(m.x,{svgName:v.vn.ChevronLeft,size:m.S.Medium}),a.createElement("span",{className:"ms-1"},c))}p.defaultProps={color:"black",extraClasses:""};var g=n(36518),h=n(83345),b=n(10587),y=n(94232),E=n(54610),C=n(79967),N=n(67453);const x={bannerContent:"sSCTB",actionsContainer:"Z5WI2",bannerContentWithLogo:"rgs7Q",container:"M51HJ",logoContainer:"vkeJk",logoContainerLeft:"M3U9B",logoHeading:"EtRwC",specialEventContainer:"rOxDc",headingLarge:"_8pnV",heading:"JXVBH"};var w="".concat(b.y[E.__.Banners].width,":").concat(b.y[E.__.Banners].height);function k(e){return e.length<160?"h1":x.headingLarge}var S=a.memo((function(e){var t,n,o,u,d=e.heading,m=e.banner,v=e.imageCdnUrl,f=e.actions,b=e.sortComponent,S=e.blockColourClass,A=e.specialEvent,F=a.useContext(y.n),O=(0,C.k)().xxl?1920:1200,L=a.useMemo((function(){if(!A||e.showComingSoon)return!1;var t=r.O.format(new Date,"YYYY-MM-DD");return A.endDate?A.startDate<=t&&A.endDate>=t:A.startDate===t}),[A]),I=e.imageOptions||{width:O,ratio:w,resizeType:E.Nq.Cover},P=!!m&&!!v&&N.j.createBannerUrl(m,{fallbackBaseUrl:v,fallbackCategoryName:d,type:E.__.Banners},I),T={className:"banner banner-header ".concat(e.bannerClassName),style:P?{backgroundImage:"url('".concat(P,"')")}:{}};!m&&S&&(delete T.style,T.className+=" ".concat(S));var D=e.detailsComponent;return i.renderInPortalIfExists(a.createElement("header",Object.assign({},T),a.createElement("div",{className:"container ".concat(x.container," position-relative inner-banner")},e.backButtonAppLink&&a.createElement("div",{className:"pt-3"},a.createElement(p,{appLink:e.backButtonAppLink,backToName:e.backButtonText,extraClasses:e.backButtonClasses,color:"white"})),a.createElement("div",{className:"".concat(e.alignLogoLeft?"position-absolute top-50 start-0 translate-middle-y w-100 ps-4":"".concat(x.bannerContent," ").concat((null===(t=e.logo)||void 0===t?void 0:t.url)?x.bannerContentWithLogo:""))},!!A&&a.createElement("div",{className:"position-relative ".concat(x.specialEventContainer)},a.createElement(c.s,{body:{type:A.endDate?"range":"day",text:A.endDate?"".concat(r.O.format(A.startDate,"DD"),"-").concat(r.O.format(A.endDate,"DD")):r.O.format(A.startDate,"DD")},month:r.O.format(A.startDate,"MMMM"),theme:e.calendarTheme})),a.createElement("div",null,L&&a.createElement("div",{className:"rounded-pill py-1 px-2 my-1 me-1 fw-semibold bg-light-blue lh-1 d-inline-block"},a.createElement(h.x,{namespace:"shared.bannerHeader",phrase:"onToday"})),e.showComingSoon&&a.createElement(l.r,{className:"pe-2 fw-semibold mb-1 rounded-pill justify-content-start text-nowrap"}),a.createElement("div",{className:"d-flex align-items-center"},e.alignLogoLeft&&a.createElement("div",{className:"".concat(x.logoContainerLeft," d-none d-md-block partial-loading-background rounded-circle overflow-hidden me-3")},(null===(n=e.logo)||void 0===n?void 0:n.url)&&a.createElement(g.w,{src:N.j.createUrl(null===(o=e.logo)||void 0===o?void 0:o.url,{size:E.h2.Small})})),a.createElement("h1",{className:"text-white text-shadow pe-3 ".concat(x.heading," ").concat(k(d)," ").concat(e.alignLogoLeft?"w-50":"")},d,D&&a.createElement(D,null)))),!!f&&a.createElement("div",{className:x.actionsContainer},a.createElement(s.e,{actions:f,sortComponent:b,actionsDropdownClassName:e.actionsDropdownClassName}))),!e.alignLogoLeft&&!!(null===(u=e.logo)||void 0===u?void 0:u.url)&&a.createElement("div",{className:x.logoContainer},a.createElement("img",{src:N.j.createUrl(e.logo.url,{size:E.h2.Small}),className:"rounded-circle"})))),null==F?void 0:F.container)}),(function(e,t){var n,a;return e.actions===t.actions&&e.heading===t.heading&&(null===(n=e.logo)||void 0===n?void 0:n.url)===(null===(a=t.logo)||void 0===a?void 0:a.url)}));function A(){var e=a.useContext(y.n);return i.renderInPortalIfExists(a.createElement("div",{className:"partial-banner partial-loading-background ".concat(x.banner)}),null==e?void 0:e.container)}},71020:(e,t,n)=>{n.d(t,{_:()=>u});var a=n(32735),r=n(80247),o=n(34152),i=n(83914),l=n(35223);const c={container:"VwD1b",spinner:"eJ85e"};function s(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,a=new Array(t);n<t;n++)a[n]=e[n];return a}function u(e){var t,n,u=(t=(0,o.YD)(),n=2,function(e){if(Array.isArray(e))return e}(t)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var a,r,o,i,l=[],c=!0,s=!1;try{if(o=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;c=!1}else for(;!(c=(a=o.call(n)).done)&&(l.push(a.value),l.length!==t);c=!0);}catch(e){s=!0,r=e}finally{try{if(!c&&null!=n.return&&(i=n.return(),Object(i)!==i))return}finally{if(s)throw r}}return l}}(t,n)||function(e,t){if(e){if("string"==typeof e)return s(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?s(e,t):void 0}}(t,n)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),d=u[0],m=u[1];return a.useEffect((function(){var t;e.fetchOnScroll&&m&&!e.isFetching&&(null===(t=e.fetchNext)||void 0===t||t.call(e,e.nextCursor))}),[m,e.isFetching]),a.createElement("div",{className:"p-3 text-center ".concat(c.container),ref:d},e.isFetching?a.createElement(r.Z,{as:"span",animation:"border",role:"status",className:c.spinner}):a.createElement(i.x,{svgName:l.vn.ChevronDown,className:"svg-container cursor-pointer",size:i.S.Large,onClick:function(){var t;return null===(t=e.fetchNext)||void 0===t?void 0:t.call(e,e.nextCursor)}}))}u.defaultProps={fetchOnScroll:!1}},74696:(e,t,n)=>{n.d(t,{S:()=>s});var a=n(32735),r=n(68050),o=n(69111),i=n(9977),l=n(79967);const c={partialOptions:"Gufgq",partialName:"SicQQ",partialDescription:"dPGMq",partialThumbnail:"vZrnb",partialDragHandle:"iq73R"};function s(e){return a.createElement("div",{className:"mx-2"},Array(e.numVideos).fill(null).map((function(t,n){return a.createElement("div",{className:"d-flex",key:n},e.allowBulkActions&&a.createElement("div",{className:"form-check pe-3 pe-sm-2 mx-0 mx-md-2"}),a.createElement(u,Object.assign({},e)))})))}function u(e){var t=(0,l.k)(),n="sm"===i.O.getSize(t,"md"),s=e.withReordering&&!t.xs;return a.createElement(r.Z,{className:"".concat(n?"":"py-2"," flex-grow-1")},a.createElement(o.Z,Object.assign({},i.O.getThumbnailColumns(),{className:"flex-column align-items-flex-start ".concat(n?"pb-2 pe-1":"mb-1 pe-3 pe-md-2")}),a.createElement(r.Z,null,!!s&&a.createElement("div",{className:"d-flex align-items-center justify-content-center col-2"},a.createElement("div",{className:"partial-loading-background ".concat(c.partialDragHandle)})),a.createElement(o.Z,{xs:i.O.getThumbnailColSize(s)},a.createElement("div",{className:"partial-loading-background ".concat(n?"rounded":"rounded-3"," ").concat(c.partialThumbnail)})))),a.createElement(o.Z,Object.assign({},i.O.getDetailsColumns(),{className:n?"pb-2":"px-2"}),a.createElement("div",{className:"partial-loading-background mb-1 ".concat(c.partialName)}),a.createElement("div",{className:"partial-loading-background ".concat(c.partialDescription)})))}s.defaultProps={numVideos:15}},94644:(e,t,n)=>{n.d(t,{r:()=>u});var a=n(50242),r=n(81886),o=n(67058),i=n(14553),l=n(49267),c=n(49075),s={notFound:o.d,forbidden:{rating:i.q,yearLevel:i.q,region:l.a,privacy:i.q},badRequest:c._};function u(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(e){var o;o="number"==typeof e?e:e.status;var i=Object.assign(Object.assign({},s),t);o&&r.Q.Ry.isStatusCodeError(o)&&(o!==a.o.NotFound?o!==a.o.Forbidden?n.badRequest||r.Q.Ry.throw(new i.badRequest):n.forbidden||r.Q.Ry.throw(new i.forbidden.privacy):n.notFound||r.Q.Ry.throw(new i.notFound))}}},60115:(e,t,n)=>{n.d(t,{K:()=>s});var a=n(32735),r=n(50242),o=n(91967),i=400,l=n(45719);function c(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,a=new Array(t);n<t;n++)a[n]=e[n];return a}function s(e,t,n,s,u,d){var m,v,f,p,g=(m=(0,a.useState)(0),v=2,function(e){if(Array.isArray(e))return e}(m)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var a,r,o,i,l=[],c=!0,s=!1;try{if(o=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;c=!1}else for(;!(c=(a=o.call(n)).done)&&(l.push(a.value),l.length!==t);c=!0);}catch(e){s=!0,r=e}finally{try{if(!c&&null!=n.return&&(i=n.return(),Object(i)!==i))return}finally{if(s)throw r}}return l}}(m,v)||function(e,t){if(e){if("string"==typeof e)return c(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?c(e,t):void 0}}(m,v)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),h=g[0],b=g[1],y=t,E=(0,l.P)((function(t){if(!e)return null;var n=e(t);return n?n.key:null}),s,u);return f={fetchNextPage:function(){if(t&&e&&E)return b((function(e){return e+1})),y(E.nextCursor)},hasMore:!!(null==E?void 0:E.nextCursor),isFetching:null==E?void 0:E.isFetching,scrollContainer:d},p=function(){if(!f.isFetching){if(f.scrollContainer){var e=f.scrollContainer;if(e.getBoundingClientRect().height+e.scrollTop<e.scrollHeight-i)return}else if(window.innerHeight+document.documentElement.scrollTop<document.documentElement.scrollHeight-i)return;f.fetchNextPage()}},(0,a.useEffect)((function(){var e=o.q.throttle(p,200),t=f.scrollContainer||window;return f.hasMore&&t.addEventListener("scroll",e),function(){return t.removeEventListener("scroll",e)}}),[f.hasMore,f.fetchNextPage,f.scrollContainer]),(0,a.useEffect)((function(){E&&E.shouldInitialFetch&&t&&(y(),b((function(e){return e+1})))}),[null==E?void 0:E.shouldInitialFetch,t]),(0,a.useEffect)((function(){var e,t;if((null==E?void 0:E.statusCode)&&o.q.isFunction(n)){var a=+(null===(t=null===(e=E.statusCode)||void 0===e?void 0:e.toString())||void 0===t?void 0:t.substr(0,1));a!==r.k.ClientError&&a!==r.k.ServerError||n(h,E.statusCode)}}),[null==E?void 0:E.statusCode]),{items:null==E?void 0:E.items,hasMore:!!(null==E?void 0:E.nextCursor),nextCursor:null==E?void 0:E.nextCursor,isFetching:null==E?void 0:E.isFetching,totalItems:null==E?void 0:E.totalItems,hasFirstPageCompleted:null==E?void 0:E.hasFirstPageCompleted}}},44110:(e,t,n)=>{n.d(t,{i:()=>i});var a=n(20354),r=n(89454),o=n(86698),i=function(){var e=(0,o.y)({redirectOnError:!0}),t=e.activePresentation,n=e.getFallbackPresentation,i=t||n();return a.a.useBasicFetch(!!i&&r.O.presentationAudiences(i.id))}},97816:(e,t,n)=>{n.d(t,{V:()=>u});var a=n(32735),r=n(20354),o=n(21750),i=n(31949),l=n(1575);function c(e,t){if(e){if("string"==typeof e)return s(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?s(e,t):void 0}}function s(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,a=new Array(t);n<t;n++)a[n]=e[n];return a}function u(e){var t,n,u,d=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},m=r.a.useBasicFetch(i.N.currentUser()),v=a.useRef(new Set),f=e&&(Array.isArray(e)?e.filter(Boolean).map((function(e){return e.id})):e.data.filter(Boolean).map((function(e){return e.id}))),p=(n=a.useState([]),u=2,function(e){if(Array.isArray(e))return e}(n)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var a,r,o,i,l=[],c=!0,s=!1;try{if(o=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;c=!1}else for(;!(c=(a=o.call(n)).done)&&(l.push(a.value),l.length!==t);c=!0);}catch(e){s=!0,r=e}finally{try{if(!c&&null!=n.return&&(i=n.return(),Object(i)!==i))return}finally{if(s)throw r}}return l}}(n,u)||c(n,u)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),g=p[0],h=p[1];a.useEffect((function(){var e;if((null==f?void 0:f.length)&&(null===(e=m.data)||void 0===e?void 0:e.isAuthenticated)){var t=[];f.forEach((function(e){v.current.has(e)||(t.push(e),v.current.add(e))})),t.length&&h((function(e){return[].concat(function(e){return function(e){if(Array.isArray(e))return s(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||c(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}(e),[o.x.hasCurriculumLinks(t,null,d.flightNamespace),l.R.videoMixinAssocs(t,d.flightNamespace)])}))}}),[null==f?void 0:f.length,null===(t=m.data)||void 0===t?void 0:t.isAuthenticated]),r.a.useBasicFetchAll(g)}},19530:(e,t,n)=>{n.r(t),n.d(t,{FavouritesView:()=>Q});var a=n(32735),r=n(70680),o=n(23481),i=n(20354),l=n(65858),c=n(89043),s=n(71020),u=n(83345),d=n(74696),m=n(13231),v=n(51365),f=n(16714),p=n(94644),g=n(39151),h=n(1666),b=n(63419),y=n(31949),E=n(69883),C=n(60115),N=n(22902),x=n(79612),w=n(31908),k=n(99742),S=n(27638),A=n(44110),F=n(97816),O=n(10741),L=n(22490),I=n(82431),P=n(23232),T=n(83914),D=n(35223),j=n(14070),B=n(97291),M="shared.favouritesEmptyState",R=o.T.encloseNamespace(M);function V(){return a.createElement(u.D.Provider,{value:M},a.createElement(P.u,null,a.createElement(P.u.Image,{src:k.W.EmptyStates.FAVOURITED_VIDEOS,altText:R("info")}),a.createElement("div",{className:"d-flex mb-2"},a.createElement(P.u.Heading,{className:"h3 mb-0"},a.createElement(u.x,{phrase:"emptyStateHeading1"})),a.createElement("div",{className:"box-shadow rounded-circle p-1 bg-white mx-1"},a.createElement(T.x,{svgName:D.vn.HeartOutline,size:T.S.Small})),a.createElement(P.u.Heading,{className:"h3 mb-0"},a.createElement(u.x,{phrase:"emptyStateHeading2"}))),a.createElement(P.u.Info,null,a.createElement(u.x,{phrase:"info"})),a.createElement(P.u.Cta,{text:o.T.getPhrase(M,"cta"),appLink:{application:B.O.DASHBOARD,action:j.e.Dashboard.HOME}})))}function _(){return a.createElement(u.D.Provider,{value:M},a.createElement(P.u,null,a.createElement(P.u.Image,{src:k.W.EmptyStates.FAVOURITED_VIDEOS_PUBLIC,altText:R("publicInfo")}),a.createElement(P.u.Heading,null,a.createElement(u.x,{phrase:"publicHeading"})),a.createElement(P.u.Info,null,a.createElement(u.x,{phrase:"publicInfo"})),a.createElement(P.u.Cta,{text:o.T.getPhrase(M,"publicCta"),appLink:{application:B.O.SIGN_UP,action:j.e.SignUp.SIGN_UP},analyticsData:{},analyticsOptions:{actionType:l.Vw.Click,location:l.LZ.MyFavouritesLanding,entity:l.py.AppLink,workflowPhase:l.eu.Start,descriptor:l.Yu.SignUp}})))}var U=n(26323),H=n(10671),Z="shared.favourites";const q={banner:"FEWd3"};var z="shared.favourites";function Q(){var e,t,n,P,T=(0,r.I0)(),j=(0,E.Z)(),B=(0,S.u)(l.LZ.VideoThumbnail),M=B.setFavourite,R=B.canFavourite,Q=function(){var e=(0,H._)({location:H.i.VideoItem}),t=(0,S.u)(l.LZ.VideoThumbnail).setFavourite;return Object.assign(Object.assign({},e),{getVideoActions:function(n){return w.M.getCanBeConsumed(n).canConsume?e.getVideoActions(n):[{label:o.T.getPhrase(Z,"removeFromFavourites"),svgName:D.vn.Delete,button:!1,className:"btn btn-link text-danger",onClick:function(){return t(n,!1)}}]}})}();(0,x.M)({title:o.T.getPhrase(z,"pageTitle")});var Y=(0,N.T)(),$=Y.hasLocalPermissions,W=Y.hasPermissions,G=i.a.useBasicFetch(y.N.currentUser()),J=i.a.useBasicFetch((null===(e=G.data)||void 0===e?void 0:e.isAuthenticated)&&h.h.yearGroups(G.data.customerId)),X=i.a.useBasicFetch(g.L.config()),K=function(e){return b.P.getFavourites(G.data.id,e)},ee=function(e){return i.a.getFetch(T)(K(e))},te=!$(f.E.ViewMyFavouritesLanding)&&G.hasCompleted,ne=(0,C.K)(!!te&&K,ee,(function(e,t){if(1===e)return(0,p.r)(t);j.error(o.T.getPhrase(z,"error"))})),ae=ne.items,re=ne.hasMore,oe=ne.isFetching;(0,F.V)(null!==(t=null==ae?void 0:ae.filter(w.M.isVideo))&&void 0!==t?t:[]);var ie=(0,A.i)(),le=(0,U.B)(null===(n=G.data)||void 0===n?void 0:n.id),ce=le.count;return le.isLoading?a.createElement(a.Fragment,null):$(f.E.ViewMyFavouritesLanding)?a.createElement(_,null):a.createElement(v.M.Provider,{value:Q},a.createElement("div",{className:"p-3"},a.createElement(c.p,{heading:o.T.getPhrase(z,"header"),banner:{url:k.W.FAVOURITES_PLAYLIST.FAV_PLAYLIST_BANNER},bannerClassName:"".concat(q.banner," bg-pink"),imageCdnUrl:null===(P=X.data)||void 0===P?void 0:P.imageCdnUrl,detailsComponent:function(){return a.createElement("div",{className:"mb-n1 font-size-normal fw-normal mt-1"},a.createElement(u.x,{namespace:z,phrase:"videos",options:{smartCount:ce}}))}}),ae?ae.length?a.createElement(a.Fragment,null,a.createElement(m.E4,{videos:ae,yearGroups:J.data,getVideoAppLink:L.W.getAppLink,hasPermissions:W,getSubTextAppLink:function(e){return I.j.getSeriesAppLink(e.series)},setFavourite:M,canFavourite:R,presentationAudiences:ie.data,getPreviewQuestionsAppLink:function(e){return O.j.getPreviewQuestionsAppLink(e)}}),(re||oe)&&a.createElement(s._,{isFetching:oe,fetchNext:ee})):a.createElement(V,null):a.createElement(d.S,null)))}},26323:(e,t,n)=>{n.d(t,{B:()=>l});var a=n(20354),r=n(63419);function o(e){return function(e){if(Array.isArray(e))return i(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,t){if(e){if("string"==typeof e)return i(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?i(e,t):void 0}}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function i(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,a=new Array(t);n<t;n++)a[n]=e[n];return a}function l(e){var t,n,i,l,c,s,u,d,m,v=a.a.useBasicFetch(e&&r.P.getFavouritesVideosCount(e)),f=a.a.useBasicFetch(e&&r.P.getFavouritesClipsCount(e)),p=a.a.useBasicFetch(e&&r.P.getFavouritesInteractivesCount(e));return{count:(null===(t=v.data)||void 0===t?void 0:t.count)+(null===(n=p.data)||void 0===n?void 0:n.count)+(null===(i=f.data)||void 0===i?void 0:i.count),favourites:[].concat(o((null===(l=v.data)||void 0===l?void 0:l.data)||[]),o((null===(c=f.data)||void 0===c?void 0:c.data)||[]),o((null===(s=p.data)||void 0===s?void 0:s.data)||[])),isLoading:!(null===(u=v.data)||void 0===u?void 0:u.data)||!(null===(d=f.data)||void 0===d?void 0:d.data)||!(null===(m=p.data)||void 0===m?void 0:m.data)}}},68050:(e,t,n)=>{n.d(t,{Z:()=>s});var a=n(95685),r=n.n(a),o=n(32735),i=n(46304),l=n(74512);const c=o.forwardRef((({bsPrefix:e,className:t,as:n="div",...a},o)=>{const c=(0,i.vE)(e,"row"),s=(0,i.pi)(),u=(0,i.zG)(),d=`${c}-cols`,m=[];return s.forEach((e=>{const t=a[e];let n;delete a[e],null!=t&&"object"==typeof t?({cols:n}=t):n=t;const r=e!==u?`-${e}`:"";null!=n&&m.push(`${d}${r}-${n}`)})),(0,l.jsx)(n,{ref:o,...a,className:r()(t,c,...m)})}));c.displayName="Row";const s=c}}]);
2
+ //# sourceMappingURL=7915-44db39c137-lite.chunk.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scripts/7915-44db39c137-lite.chunk.js","mappings":"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","sources":["file:///app/packages/libs/shared/src/apps/calendar/components/coming-soon-tag/coming-soon-tag.scss","file:///app/packages/libs/shared/src/apps/calendar/components/coming-soon-tag/ComingSoonTag.tsx","file:///app/packages/libs/shared/src/apps/calendar/components/generic-calendar-date/generic-calendar-date.scss","file:///app/packages/libs/shared/src/apps/calendar/components/generic-calendar-date/GenericCalendarDate.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/infinite-scroll-footer/infinite-scroll-footer.scss","file:///app/packages/libs/shared/src/components/infinite-scroll-footer/InfiniteScrollFooter.tsx","file:///app/packages/libs/shared/src/components/video-list/partial-loading/partial-video-list.scss","file:///app/packages/libs/shared/src/components/video-list/partial-loading/PartialVideoList.tsx","file:///app/packages/libs/shared/src/errors/handlers/HttpErrorHandlers.ts","file:///app/packages/libs/shared/src/hooks/UseInfiniteScroll.ts","file:///app/packages/libs/shared/src/hooks/UseInfiniteList.ts","file:///app/packages/projects/lite/src/shared/hooks/usePresentationAudiences.ts","file:///app/packages/projects/lite/src/shared/hooks/useVideoMixin.ts","file:///app/packages/projects/lite/src/shared/views/favourites/empty-state/FavouritesEmptyState.tsx","file:///app/packages/projects/lite/src/shared/views/favourites/FavouritesViewUtils.ts","file:///app/packages/projects/lite/src/shared/views/favourites/favourites-view.scss","file:///app/packages/projects/lite/src/shared/views/favourites/FavouritesView.tsx","file:///app/packages/projects/lite/src/shared/views/favourites/hooks/useFavouritesCount.ts","file:///app/node_modules/react-bootstrap/esm/Row.js"],"sourcesContent":["// extracted by mini-css-extract-plugin\nexport default {\"tag\":\"XRj8d\",\"tooltip\":\"X6mLk\"};","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\nimport { Tooltip } from 'libs/shared/components/tooltip/Tooltip';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport styles from './coming-soon-tag.scss';\n\nconst namespace = 'specialEventCalendar.comingSoonTag';\n\ninterface ComingSoonProps {\n className?: string;\n onlyIcon?: boolean;\n}\n\nexport function ComingSoonTag(props: ComingSoonProps): JSX.Element {\n return (\n <Tooltip title={LanguageService.getPhrase(namespace, 'tooltip')} spanHackClassName={`d-block ${styles.tooltip}`} spanHack>\n <div className={`d-flex text-dark align-items-center ${styles.tag} ${props.className}`}>\n <SvgContainer svgName={cvSvgLibrary.Timer} />\n {!props.onlyIcon && LanguageService.getPhrase(namespace, 'comingSoon')}\n </div>\n </Tooltip>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"dateItem\":\"I3SBm\",\"label\":\"PRORs\",\"body\":\"RfiM_\",\"bodyDay\":\"ZOVny\",\"bodyRange\":\"vYhXN\",\"bodyMonth\":\"mYslO\",\"month\":\"EPkkQ\"};","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { AnalyticsOptions } from 'libs/analytics/interfaces';\n\nimport { CalendarTheme } from 'libs/shared/apps/calendar/interfaces/CalendarTheme';\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\n\nimport styles from './generic-calendar-date.scss';\n\nexport interface GenericCalendarDateProps {\n label?: string;\n body: {\n type: 'month' | 'range' | 'day';\n text: string;\n };\n month?: string;\n getAppLink?: () => Core.AppLink;\n analyticsData?: HashObject;\n analyticsOptions?: AnalyticsOptions;\n className?: string;\n theme?: CalendarTheme;\n}\n\nexport function GenericCalendarDate(props: GenericCalendarDateProps): JSX.Element {\n function getBodyClass(): string {\n switch (props.body.type) {\n case 'range':\n return styles.bodyRange;\n case 'day':\n return styles.bodyDay;\n case 'month':\n return styles.bodyMonth;\n }\n }\n\n return (\n <AppLink\n appLink={props.getAppLink?.()}\n className={`text-decoration-none text-center bg-white text-dark border border-3 ${props.theme?.border} rounded-3 d-block fw-semibold ${props.className}`}\n analyticsData={props.analyticsData}\n analyticsOptions={props.analyticsOptions}\n >\n <div className={`position-relative ${styles.dateItem}`}>\n <div className={`${props.theme?.background} py-1 ${styles.label} d-flex align-items-center justify-content-center`}>\n {props.label ? props.label : <>&nbsp;</>}\n </div>\n <div className={`${getBodyClass()} ${styles.body} my-2`}>\n {props.body.text}\n </div>\n <div className={`mb-0 ${styles.month}`}>\n {props.month}\n </div>\n </div>\n </AppLink>\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}","// extracted by mini-css-extract-plugin\nexport default {\"container\":\"VwD1b\",\"spinner\":\"eJ85e\"};","import * as React from 'react';\nimport { Spinner } from 'react-bootstrap';\nimport { useInView } from 'react-intersection-observer';\n\nimport { SvgContainer, SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport styles from './infinite-scroll-footer.scss';\n\ninterface InfiniteScrollFooterProps {\n isFetching: boolean;\n fetchNext?: (nextCursor: string) => void;\n nextCursor?: string;\n fetchOnScroll?: boolean;\n}\n\nInfiniteScrollFooter.defaultProps = {\n fetchOnScroll: false\n};\n\nexport function InfiniteScrollFooter(props: InfiniteScrollFooterProps): React.ReactElement {\n const [ ref, inView ] = useInView();\n\n React.useEffect(() => {\n if (!props.fetchOnScroll)\n return;\n\n if (!inView || props.isFetching)\n return;\n\n props.fetchNext?.(props.nextCursor);\n }, [ inView, props.isFetching ]);\n\n return (\n <div className={`p-3 text-center ${styles.container}`} ref={ref}>\n {props.isFetching\n ? <Spinner as='span' animation='border' role='status' className={styles.spinner} />\n : (\n <SvgContainer\n svgName={cvSvgLibrary.ChevronDown}\n className='svg-container cursor-pointer'\n size={SvgContainerSize.Large}\n onClick={() => props.fetchNext?.(props.nextCursor)}\n />\n )\n }\n </div>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"partialOptions\":\"Gufgq\",\"partialName\":\"SicQQ\",\"partialDescription\":\"dPGMq\",\"partialThumbnail\":\"vZrnb\",\"partialDragHandle\":\"iq73R\"};","import React from 'react';\nimport { Col, Row } from 'react-bootstrap';\n\nimport { VideoListHelper } from 'libs/shared/components/video-list/VideoListHelper';\nimport { useBreakpoints } from 'libs/shared/hooks/useBreakpoints';\n\nimport styles from './partial-video-list.scss';\n\ninterface PartialVideoListProps {\n withReordering?: boolean;\n numVideos?: number;\n allowBulkActions?: boolean;\n}\n\nPartialVideoList.defaultProps = {\n numVideos: 15\n};\n\nexport function PartialVideoList(props: PartialVideoListProps): JSX.Element {\n return (\n <div className='mx-2'>\n {Array(props.numVideos).fill(null).map((_, i) => (\n <div className='d-flex' key={i}>\n {props.allowBulkActions && <div className='form-check pe-3 pe-sm-2 mx-0 mx-md-2' />}\n <PartialVideoItem {...props} />\n </div>\n ))}\n </div>\n );\n}\n\nexport function PartialVideoItem(props: PartialVideoListProps): JSX.Element {\n const breakpoints = useBreakpoints();\n\n const size = VideoListHelper.getSize(breakpoints, 'md');\n const isSmall = size === 'sm';\n\n const withDragHandle = props.withReordering && !breakpoints.xs;\n\n return (\n <Row className={`${isSmall ? '' : 'py-2'} flex-grow-1`}>\n <Col {...VideoListHelper.getThumbnailColumns()} className={`flex-column align-items-flex-start ${isSmall ? `pb-2 pe-1` : 'mb-1 pe-3 pe-md-2'}`}>\n <Row>\n {!!withDragHandle && (\n <div className='d-flex align-items-center justify-content-center col-2'>\n <div className={`partial-loading-background ${styles.partialDragHandle}`} />\n </div>\n )}\n <Col xs={VideoListHelper.getThumbnailColSize(withDragHandle)}>\n <div className={`partial-loading-background ${isSmall ? 'rounded' : 'rounded-3'} ${styles.partialThumbnail}`} />\n </Col>\n </Row>\n </Col>\n <Col {...VideoListHelper.getDetailsColumns()} className={isSmall ? 'pb-2' : 'px-2'}>\n <div className={`partial-loading-background mb-1 ${styles.partialName}`} />\n <div className={`partial-loading-background ${styles.partialDescription}`} />\n </Col>\n </Row>\n );\n}\n\n","import { BaseError } from 'libs/common/backbone/core/BaseError';\nimport { HttpStatus } from 'libs/common/backbone/enums/HttpStatus';\nimport { Xhr } from 'libs/common/backbone/interfaces';\nimport { Core } from 'libs/common/core';\n\nimport { NotFoundError } from 'libs/shared/errors/general/not-found/NotFoundError';\nimport { PrivateResourceError } from 'libs/shared/errors/general/private-resource/PrivateResourceError';\nimport { RegionLockedResourceError } from 'libs/shared/errors/general/region-locked-resource/RegionLockedResourceError';\nimport { UnspecifiedError } from 'libs/shared/errors/general/unspecified-error/UnspecifiedError';\nimport { VideoTypes } from 'libs/shared/interfaces';\n\nexport interface HttpErrorMap {\n notFound?: new () => BaseError;\n forbidden?: {\n rating?: new (description: string) => BaseError;\n yearLevel?: new (description: string) => BaseError;\n region?: new () => BaseError;\n privacy?: new (video?: VideoTypes) => BaseError;\n };\n badRequest?: new () => BaseError;\n}\n\nexport type IgnoreHttpErrorMap = {\n [key in keyof HttpErrorMap]: boolean;\n};\n\nconst defaultErrors: HttpErrorMap = {\n notFound: NotFoundError,\n forbidden: {\n rating: PrivateResourceError,\n yearLevel: PrivateResourceError,\n region: RegionLockedResourceError,\n privacy: PrivateResourceError\n },\n badRequest: UnspecifiedError\n};\n\nexport function handleHttpError(\n info: HttpStatus | Xhr,\n customErrorMap: HttpErrorMap = {},\n /**\n * Prevent certain errors in the errorMap from being thrown\n * so that you may implement your own handler\n */\n ignoreMap: IgnoreHttpErrorMap = {}\n): void {\n if (!info)\n return;\n\n let statusCode: HttpStatus;\n\n if (typeof(info) === 'number') {\n statusCode = info;\n } else {\n statusCode = info.status;\n }\n\n const errorMap = {\n ...defaultErrors,\n ...customErrorMap\n };\n\n if (!statusCode)\n return;\n\n if (!Core.ErrorHelper.isStatusCodeError(statusCode))\n return;\n\n if (statusCode === HttpStatus.NotFound) {\n if (!ignoreMap.notFound)\n Core.ErrorHelper.throw(new errorMap.notFound());\n return;\n }\n\n if (statusCode === HttpStatus.Forbidden) {\n /**\n * TODO: Work out how to go about handling all forbidden errors, such as region locking, year levels,\n * ratings, and privacy.\n */\n if (!ignoreMap.forbidden)\n Core.ErrorHelper.throw(new errorMap.forbidden.privacy());\n return;\n }\n\n if (!ignoreMap.badRequest)\n Core.ErrorHelper.throw(new errorMap.badRequest());\n}\n\nexport function handleXhrError(xhr: Xhr, customErrorMap?: HttpErrorMap): void {\n handleHttpError(xhr.status, customErrorMap);\n}","import { useEffect } from 'react';\n\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\n\nconst SCROLL_TOLERANCE = 400; // value in px\n\ninterface UseInfiniteScrollOptions {\n fetchNextPage: () => void;\n hasMore: boolean;\n isFetching: boolean;\n scrollContainer?: HTMLElement;\n}\n\nexport function useInfiniteScroll(options: UseInfiniteScrollOptions): void {\n const handleScroll = (): void => {\n if (options.isFetching)\n return;\n\n if (!options.scrollContainer) {\n const currentScrollHeight = window.innerHeight + document.documentElement.scrollTop;\n \n const totalHeight = document.documentElement.scrollHeight - SCROLL_TOLERANCE;\n \n if (currentScrollHeight < totalHeight)\n return;\n } else {\n const { scrollContainer } = options;\n const currentScrollHeight = scrollContainer.getBoundingClientRect().height + scrollContainer.scrollTop;\n \n const totalHeight = scrollContainer.scrollHeight - SCROLL_TOLERANCE;\n \n if (currentScrollHeight < totalHeight)\n return;\n }\n\n options.fetchNextPage();\n };\n\n useEffect(() => {\n const onScroll = FunctionHelper.throttle(handleScroll, 200);\n\n const scrollContainer = options.scrollContainer || window;\n\n if (options.hasMore)\n scrollContainer.addEventListener('scroll', onScroll);\n\n return () => scrollContainer.removeEventListener('scroll', onScroll);\n }, [ options.hasMore, options.fetchNextPage, options.scrollContainer ]);\n}","import { useEffect, useState } from 'react';\n\nimport { HttpStatus, HttpStatusClass } from 'libs/common/backbone/enums/HttpStatus';\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\nimport { Flight } from 'libs/common/flight';\n\nimport { BaseObject, BasePaginatedCollection } from 'libs/shared/interfaces';\n\nimport { useInfiniteScroll } from './UseInfiniteScroll';\nimport { useSelectAllPages } from './UseSelectAllPages';\n\nexport interface UseInfiniteListResult<T extends BaseObject> {\n items: T[];\n hasMore: boolean;\n isFetching: boolean;\n nextCursor: string;\n totalItems?: number;\n hasFirstPageCompleted: boolean;\n}\n\n/**\n * Hook to extract an infinite list from the application state,\n * save it locally in state and only update when new data\n * is fetched.\n * \n * @param getRequest - callback function to get the request for each page.\n * Can be false if the request requires data that hasn't yet been fetched - e.g. user id.\n * \n * @param fetchNext - callback function to fetch a page.\n * Can be false if the request requires data that hasn't yet been fetched - e.g. user id.\n */\nexport function useInfiniteList<TObject = BaseObject, TResponse = BasePaginatedCollection<TObject>>(\n getRequest: ((cursor?: string) => Flight.Request) | false,\n fetchNext: ((cursor?: string) => void) | false,\n onError?: (pageNumber: number, statusCode: HttpStatus) => void,\n getItems?: (responseData: TResponse) => TObject[],\n getCursor?: (responseData: TResponse) => string,\n scrollContainer?: HTMLElement\n): UseInfiniteListResult<TObject> {\n const [ pagesFetched, setPagesFetched ] = useState(0);\n\n const fetchNextFn = fetchNext as (cursor?: string) => void;\n\n function getKey(cursor?: string): string {\n if (!getRequest)\n return null;\n\n const request = getRequest(cursor);\n\n if (!request)\n return null;\n\n return request.key;\n }\n\n const response = useSelectAllPages<TObject, TResponse>(\n getKey,\n getItems,\n getCursor\n );\n\n function fetchNextPage(): void {\n if (!fetchNext || !getRequest || !response)\n return;\n\n setPagesFetched(currentVal => currentVal + 1);\n return fetchNextFn(response.nextCursor);\n }\n\n useInfiniteScroll({\n fetchNextPage,\n hasMore: !!response?.nextCursor,\n isFetching: response?.isFetching,\n scrollContainer\n });\n\n useEffect(() => {\n if (!response)\n return;\n\n if (response.shouldInitialFetch && fetchNext) {\n fetchNextFn();\n setPagesFetched(currentVal => currentVal + 1);\n }\n }, [ response?.shouldInitialFetch, fetchNext ]);\n\n useEffect(() => {\n if (!response?.statusCode || !FunctionHelper.isFunction(onError))\n return;\n\n const httpStatusClass: HttpStatusClass = +(response.statusCode?.toString()?.substr(0, 1));\n\n if (httpStatusClass !== HttpStatusClass.ClientError && httpStatusClass !== HttpStatusClass.ServerError)\n return;\n\n onError(pagesFetched, response.statusCode);\n }, [response?.statusCode]);\n\n return {\n items: response?.items,\n hasMore: !!response?.nextCursor,\n nextCursor: response?.nextCursor,\n isFetching: response?.isFetching,\n totalItems: response?.totalItems,\n hasFirstPageCompleted: response?.hasFirstPageCompleted\n };\n}","import { Flight } from 'libs/common/react/index';\n\nimport { AudienceRequests } from 'libs/shared/flight-requests/AudienceRequests';\nimport { PresentationAudience } from 'libs/shared/interfaces';\n\nimport { usePresentation } from 'shared/hooks/usePresentation';\n\nexport const usePresentationAudiences = () => {\n const { activePresentation, getFallbackPresentation } = usePresentation({ redirectOnError: true });\n\n const presentation = activePresentation || getFallbackPresentation();\n\n const audiences = Flight.useBasicFetch<PresentationAudience[]>(\n !!presentation &&\n AudienceRequests.presentationAudiences(presentation.id)\n );\n\n return audiences;\n};","import React from 'react';\n\nimport { Flight } from 'libs/common/flight';\n\nimport { ClassificationRequests } from 'libs/shared/flight-requests/ClassificationRequests';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { VideoRequests } from 'libs/shared/flight-requests/VideoRequests';\nimport { CurrentUser, Video, VideoCollection } from 'libs/shared/interfaces';\n\ninterface VideoMixinOptions {\n /**\n * If the videos that are having new data mixed into are sitting on an explicit Flight namespace,\n * providing that namespace here is required\n */\n flightNamespace?: string;\n}\n\nexport function useVideoMixin(videos: VideoCollection | Video[], options: VideoMixinOptions = {}): void {\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n\n const hydratedVideos = React.useRef<Set<string>>(new Set<string>());\n\n const videoIds = videos && (Array.isArray(videos)\n ? videos.filter(Boolean).map(v => v.id)\n : videos.data.filter(Boolean).map(v => v.id));\n\n const [ request, setRequest ] = React.useState<Flight.Request[]>([]);\n\n React.useEffect(() => {\n if (!videoIds?.length || !currentUser.data?.isAuthenticated)\n return;\n\n const unhydratedVideos: string[] = [];\n\n videoIds.forEach(id => {\n if (!hydratedVideos.current.has(id)) {\n unhydratedVideos.push(id);\n hydratedVideos.current.add(id);\n }\n });\n \n if (!unhydratedVideos.length)\n return;\n\n setRequest(r => [\n ...r,\n ClassificationRequests.hasCurriculumLinks(unhydratedVideos, null, options.flightNamespace),\n VideoRequests.videoMixinAssocs(unhydratedVideos, options.flightNamespace)\n ]);\n }, [ videoIds?.length, currentUser.data?.isAuthenticated ]);\n\n Flight.useBasicFetchAll(request);\n}","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { EntityType, LocationContext, SignUpDescriptors, UserAction, WorkflowPhase } from 'libs/analytics/interfaces';\n\nimport { EmptyState } from 'libs/shared/components/empty-states/EmptyState';\nimport { SvgContainer, SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\nimport { LanguageNamespaceContext, Text } from 'libs/shared/components/text/Text';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport { ImageUrls } from 'shared/constants/ImageUrls';\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\n\nconst namespace = 'shared.favouritesEmptyState';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nexport function FavouritesEmptyState(): JSX.Element {\n return (\n <LanguageNamespaceContext.Provider value={namespace}>\n <EmptyState>\n <EmptyState.Image src={ImageUrls.EmptyStates.FAVOURITED_VIDEOS} altText={getPhrase('info')} />\n\n <div className='d-flex mb-2'>\n <EmptyState.Heading className='h3 mb-0'>\n <Text phrase='emptyStateHeading1' />\n </EmptyState.Heading>\n \n <div className='box-shadow rounded-circle p-1 bg-white mx-1'>\n <SvgContainer\n svgName={cvSvgLibrary.HeartOutline}\n size={SvgContainerSize.Small}\n />\n </div>\n\n <EmptyState.Heading className='h3 mb-0'>\n <Text phrase='emptyStateHeading2' />\n </EmptyState.Heading>\n </div>\n\n <EmptyState.Info><Text phrase='info' /></EmptyState.Info>\n\n <EmptyState.Cta\n text={LanguageService.getPhrase(namespace, 'cta')}\n appLink={{\n application: AppChannels.DASHBOARD,\n action: Actions.Dashboard.HOME\n }}\n />\n </EmptyState>\n </LanguageNamespaceContext.Provider>\n );\n}\n\nexport function FavouritesPublicEmptyState(): JSX.Element {\n return (\n <LanguageNamespaceContext.Provider value={namespace}>\n <EmptyState>\n <EmptyState.Image src={ImageUrls.EmptyStates.FAVOURITED_VIDEOS_PUBLIC} altText={getPhrase('publicInfo')} />\n <EmptyState.Heading><Text phrase='publicHeading' /></EmptyState.Heading>\n <EmptyState.Info><Text phrase='publicInfo' /></EmptyState.Info>\n <EmptyState.Cta\n text={LanguageService.getPhrase(namespace, 'publicCta')}\n appLink={{\n application: AppChannels.SIGN_UP,\n action: Actions.SignUp.SIGN_UP\n }}\n analyticsData={{}}\n analyticsOptions={{\n actionType: UserAction.Click,\n location: LocationContext.MyFavouritesLanding,\n entity: EntityType.AppLink,\n workflowPhase: WorkflowPhase.Start,\n descriptor: SignUpDescriptors.SignUp\n }}\n />\n </EmptyState>\n </LanguageNamespaceContext.Provider>\n );\n}","import { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { LocationContext } from 'libs/analytics/interfaces';\n\nimport { VideoTypes } from 'libs/shared/interfaces';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\nimport { useVideoActions, VideoActionsLocation } from 'shared/hooks/use-video-actions/useVideoActions';\nimport { useLiteFavourites } from 'shared/hooks/useLiteFavourites';\n\nconst namespace = 'shared.favourites';\n\nexport function useFavouritesVideoActions() {\n const videoActions = useVideoActions({ location: VideoActionsLocation.VideoItem });\n const { setFavourite } = useLiteFavourites(LocationContext.VideoThumbnail);\n\n const getVideoActions = (video: VideoTypes) => {\n const { canConsume } = VideoHelper.getCanBeConsumed(video);\n\n if (!canConsume) {\n return [{\n label: LanguageService.getPhrase(namespace, 'removeFromFavourites'),\n svgName: cvSvgLibrary.Delete,\n button: false,\n className: 'btn btn-link text-danger',\n onClick: () => setFavourite(video, false)\n }];\n }\n\n return videoActions.getVideoActions(video);\n };\n\n return {\n ...videoActions,\n getVideoActions\n };\n}","// extracted by mini-css-extract-plugin\nexport default {\"banner\":\"FEWd3\"};","import * as React from 'react';\nimport { useDispatch } from 'react-redux';\n\nimport { HttpStatus } from 'libs/common/backbone/enums/HttpStatus';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Flight } from 'libs/common/flight';\n\nimport { LocationContext } from 'libs/analytics/interfaces';\n\nimport { BannerHeader } from 'libs/shared/components/banner-header/BannerHeader';\nimport { InfiniteScrollFooter } from 'libs/shared/components/infinite-scroll-footer/InfiniteScrollFooter';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { PartialVideoList } from 'libs/shared/components/video-list/partial-loading/PartialVideoList';\nimport { VideoList } from 'libs/shared/components/video-list/VideoList';\nimport { VideoActionsContext } from 'libs/shared/context/VideoActionsContext';\nimport { LocalPermissionName } from 'libs/shared/enums/PermissionName';\nimport { handleHttpError } from 'libs/shared/errors/handlers/HttpErrorHandlers';\nimport { ConfigRequests } from 'libs/shared/flight-requests/ConfigRequests';\nimport { CustomerRequests } from 'libs/shared/flight-requests/CustomerRequests';\nimport { FavouriteRequests } from 'libs/shared/flight-requests/FavouriteRequests';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { useAlerts } from 'libs/shared/hooks/UseAlerts';\nimport { useInfiniteList } from 'libs/shared/hooks/UseInfiniteList';\nimport { usePermissions } from 'libs/shared/hooks/usePermissions';\nimport { useSetPageMetadata } from 'libs/shared/hooks/useSetPageMetadata';\nimport { Config, CurrentUser, VideoTypes, YearGroup } from 'libs/shared/interfaces';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\nimport { ImageUrls } from 'shared/constants/ImageUrls';\nimport { useLiteFavourites } from 'shared/hooks/useLiteFavourites';\nimport { usePresentationAudiences } from 'shared/hooks/usePresentationAudiences';\nimport { useVideoMixin } from 'shared/hooks/useVideoMixin';\nimport { InteractiveHelpers } from 'shared/utils/InteractiveHelper';\nimport { VideoAppLinkHelper } from 'shared/utils/VideoAppLinkHelper';\n\nimport { SeriesAppLinkHelper } from 'apps/series/SeriesAppLinkHelper';\n\nimport { FavouritesEmptyState, FavouritesPublicEmptyState } from './empty-state/FavouritesEmptyState';\nimport { useFavouritesCount } from './hooks/useFavouritesCount';\nimport { useFavouritesVideoActions } from './FavouritesViewUtils';\n\nimport styles from './favourites-view.scss';\n\nconst namespace = 'shared.favourites';\n\nexport function FavouritesView(): JSX.Element {\n const dispatch = useDispatch();\n const alerts = useAlerts();\n const { setFavourite, canFavourite } = useLiteFavourites(LocationContext.VideoThumbnail);\n const videoActions = useFavouritesVideoActions();\n\n useSetPageMetadata({ title: LanguageService.getPhrase(namespace, 'pageTitle') });\n const { hasLocalPermissions, hasPermissions } = usePermissions();\n\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n const yearGroups = Flight.useBasicFetch<YearGroup[]>(\n currentUser.data?.isAuthenticated && CustomerRequests.yearGroups(currentUser.data.customerId)\n );\n const config = Flight.useBasicFetch<Config>(ConfigRequests.config());\n\n const getRequest = (cursor?: string) => {\n return FavouriteRequests.getFavourites(currentUser.data.id, cursor);\n };\n\n const fetchNext = (cursor?: string) => {\n return Flight.getFetch(dispatch)(getRequest(cursor));\n };\n\n const shouldFetch = !hasLocalPermissions(LocalPermissionName.ViewMyFavouritesLanding) && currentUser.hasCompleted;\n\n const {\n items,\n hasMore,\n isFetching\n } = useInfiniteList<VideoTypes>(shouldFetch ? getRequest : false, fetchNext, onError);\n\n useVideoMixin(items?.filter(VideoHelper.isVideo) ?? []);\n \n const audiences = usePresentationAudiences();\n\n function onError(pageNumber: number, httpStatus: HttpStatus): void {\n if (pageNumber === 1)\n return handleHttpError(httpStatus);\n\n alerts.error(LanguageService.getPhrase(namespace, 'error'));\n }\n\n const { count, isLoading } = useFavouritesCount(currentUser.data?.id);\n if (isLoading)\n return <></>;\n\n if (hasLocalPermissions(LocalPermissionName.ViewMyFavouritesLanding))\n return <FavouritesPublicEmptyState />;\n\n return (\n <VideoActionsContext.Provider value={videoActions}>\n <div className='p-3'>\n <BannerHeader\n heading={LanguageService.getPhrase(namespace, 'header')}\n banner={{ url: ImageUrls.FAVOURITES_PLAYLIST.FAV_PLAYLIST_BANNER }}\n bannerClassName={`${styles.banner} bg-pink`}\n imageCdnUrl={config.data?.imageCdnUrl}\n detailsComponent={() => (\n <div className='mb-n1 font-size-normal fw-normal mt-1'>\n <Text namespace={namespace} phrase='videos' options={{ smartCount: count }} />\n </div>\n )}\n />\n \n {(() => {\n if (!items)\n return <PartialVideoList />;\n\n if (!items.length)\n return <FavouritesEmptyState />;\n\n return (\n <>\n <VideoList\n videos={items}\n yearGroups={yearGroups.data}\n getVideoAppLink={VideoAppLinkHelper.getAppLink}\n hasPermissions={hasPermissions}\n getSubTextAppLink={video => SeriesAppLinkHelper.getSeriesAppLink(video.series)}\n setFavourite={setFavourite}\n canFavourite={canFavourite}\n presentationAudiences={audiences.data}\n getPreviewQuestionsAppLink={interactive => InteractiveHelpers.getPreviewQuestionsAppLink(interactive)}\n />\n {(hasMore || isFetching) && <InfiniteScrollFooter isFetching={isFetching} fetchNext={fetchNext} />}\n </>\n );\n })()}\n </div>\n </VideoActionsContext.Provider>\n );\n}","\nimport { Flight } from 'libs/common/flight';\n\nimport { FavouriteRequests } from 'libs/shared/flight-requests/FavouriteRequests';\nimport { FavouritesCountResponse } from 'libs/shared/interfaces';\n\nexport function useFavouritesCount(userId?: string) {\n// todo there is a beckend bug that we cannot group fetch these three number\n const favouriteVideosCount = Flight.useBasicFetch<FavouritesCountResponse>(userId &&\n FavouriteRequests.getFavouritesVideosCount(userId));\n const favouriteClipsCount = Flight.useBasicFetch<FavouritesCountResponse>(userId &&\n FavouriteRequests.getFavouritesClipsCount(userId));\n const favouriteInteractivesCount = Flight.useBasicFetch<FavouritesCountResponse>(userId &&\n FavouriteRequests.getFavouritesInteractivesCount(userId));\n \n const totalCount = favouriteVideosCount.data?.count\n + favouriteInteractivesCount.data?.count\n + favouriteClipsCount.data?.count;\n\n const favourites = [\n ...(favouriteVideosCount.data?.data || []),\n ...(favouriteClipsCount.data?.data || []),\n ...(favouriteInteractivesCount.data?.data || [])\n ];\n\n return {\n count: totalCount,\n favourites,\n isLoading: !favouriteVideosCount.data?.data\n || !favouriteClipsCount.data?.data\n || !favouriteInteractivesCount.data?.data\n };\n}","\"use client\";\n\nimport classNames from 'classnames';\nimport * as React from 'react';\nimport { useBootstrapPrefix, useBootstrapBreakpoints, useBootstrapMinBreakpoint } from './ThemeProvider';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst Row = /*#__PURE__*/React.forwardRef(({\n bsPrefix,\n className,\n // Need to define the default \"as\" during prop destructuring to be compatible with styled-components github.com/react-bootstrap/react-bootstrap/issues/3595\n as: Component = 'div',\n ...props\n}, ref) => {\n const decoratedBsPrefix = useBootstrapPrefix(bsPrefix, 'row');\n const breakpoints = useBootstrapBreakpoints();\n const minBreakpoint = useBootstrapMinBreakpoint();\n const sizePrefix = `${decoratedBsPrefix}-cols`;\n const classes = [];\n breakpoints.forEach(brkPoint => {\n const propValue = props[brkPoint];\n delete props[brkPoint];\n let cols;\n if (propValue != null && typeof propValue === 'object') {\n ({\n cols\n } = propValue);\n } else {\n cols = propValue;\n }\n const infix = brkPoint !== minBreakpoint ? `-${brkPoint}` : '';\n if (cols != null) classes.push(`${sizePrefix}${infix}-${cols}`);\n });\n return /*#__PURE__*/_jsx(Component, {\n ref: ref,\n ...props,\n className: classNames(className, decoratedBsPrefix, ...classes)\n });\n});\nRow.displayName = 'Row';\nexport default Row;"],"names":["namespace","ComingSoonTag","props","Tooltip","title","LanguageService","spanHackClassName","spanHack","className","SvgContainer","svgName","onlyIcon","GenericCalendarDate","AppLink","appLink","getAppLink","theme","border","analyticsData","analyticsOptions","background","label","body","type","getBodyClass","text","month","PortalHelper","renderInPortalIfExists","component","portalContainer","createPortal","BackButton","textShadow","backToName","color","extraClasses","backPhrase","colorClass","textShadowClass","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","calendarTheme","Text","phrase","LazyImage","src","Actions","actionsDropdownClassName","container","prevProps","nextProps","PartialBannerHeader","InfiniteScrollFooter","ref","inView","fetchOnScroll","isFetching","fetchNext","nextCursor","Spinner","as","animation","role","onClick","PartialVideoList","Array","numVideos","fill","map","_","i","key","allowBulkActions","PartialVideoItem","breakpoints","isSmall","VideoListHelper","withDragHandle","withReordering","xs","Row","Col","defaultErrors","notFound","forbidden","rating","yearLevel","region","privacy","badRequest","handleHttpError","info","customErrorMap","ignoreMap","statusCode","status","errorMap","SCROLL_TOLERANCE","useInfiniteList","getRequest","onError","getItems","getCursor","scrollContainer","options","handleScroll","useState","pagesFetched","setPagesFetched","fetchNextFn","response","cursor","request","fetchNextPage","currentVal","hasMore","getBoundingClientRect","scrollTop","scrollHeight","window","innerHeight","document","documentElement","useEffect","onScroll","FunctionHelper","addEventListener","removeEventListener","shouldInitialFetch","httpStatusClass","toString","substr","HttpStatus","items","totalItems","hasFirstPageCompleted","usePresentationAudiences","redirectOnError","activePresentation","getFallbackPresentation","presentation","id","useVideoMixin","videos","currentUser","hydratedVideos","Set","videoIds","isArray","filter","Boolean","v","data","setRequest","isAuthenticated","unhydratedVideos","forEach","current","has","push","add","r","flightNamespace","getPhrase","FavouritesEmptyState","value","EmptyState","ImageUrls","altText","application","action","FavouritesPublicEmptyState","actionType","location","entity","workflowPhase","descriptor","SignUp","FavouritesView","dispatch","alerts","useLiteFavourites","u","setFavourite","canFavourite","videoActions","useVideoActions","getVideoActions","video","VideoHelper","canConsume","button","useFavouritesVideoActions","useSetPageMetadata","usePermissions","hasLocalPermissions","hasPermissions","UserRequests","yearGroups","CustomerRequests","customerId","config","ConfigRequests","FavouriteRequests","shouldFetch","hasCompleted","pageNumber","httpStatus","error","audiences","useFavouritesCount","count","isLoading","VideoActionsContext","smartCount","VideoList","getVideoAppLink","VideoAppLinkHelper","getSubTextAppLink","SeriesAppLinkHelper","series","presentationAudiences","getPreviewQuestionsAppLink","interactive","InteractiveHelper","userId","favouriteVideosCount","favouriteClipsCount","favouriteInteractivesCount","favourites","bsPrefix","Component","decoratedBsPrefix","minBreakpoint","sizePrefix","classes","brkPoint","propValue","cols","infix","displayName"],"sourceRoot":""}
@@ -1,2 +1,2 @@
1
- "use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[8025],{2381:(e,t,n)=>{n.d(t,{q:()=>o});var a=n(5173),r=n(23481),l="playlists.validation",o=a.Ry().shape({name:a.Z_().max(250,(function(){return r.T.getPhrase(l,"nameExceeds")})).required((function(){return r.T.getPhrase(l,"nameRequired")})),description:a.Z_().max(16e3,(function(){return r.T.getPhrase(l,"descriptionExceeds")})).nullable()})},38365:(e,t,n)=>{n.d(t,{n:()=>O,W:()=>E});var a=n(32735),r=n(80247),l=n(80130),o=n(92802),i=n(91967),c=n(1048),s=n(36848),u=function(e,t){var n={};for(var a in e)Object.prototype.hasOwnProperty.call(e,a)&&t.indexOf(a)<0&&(n[a]=e[a]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var r=0;for(a=Object.getOwnPropertySymbols(e);r<a.length;r++)t.indexOf(a[r])<0&&Object.prototype.propertyIsEnumerable.call(e,a[r])&&(n[a[r]]=e[a[r]])}return n};function m(e){var t=e.label,n=e.checkboxLabelClassName,r=e.checkboxLabelFontWeight,o=e.className,i=u(e,["label","checkboxLabelClassName","checkboxLabelFontWeight","className"]);return a.createElement(l.Z.Group,{className:"form-group"},a.createElement("div",{className:"form-check ".concat(o||"")},a.createElement(O,Object.assign({className:"form-check-input"},i)),a.createElement(l.Z.Label,{className:"form-check-label cursor-pointer ".concat("normal"===r?"fw-normal":""," \n ").concat(n),htmlFor:i.id},t),e.checkboxAppLink&&e.checkboxAppLinkText&&a.createElement(a.Fragment,null,a.createElement("span",null," "),a.createElement(s.F,{appLink:e.checkboxAppLink,className:"info-link"},e.checkboxAppLinkText))))}var p=n(83914),f=n(83345),d=n(73814),b=n(35223);function y(e){var t=(0,o.u6)().values[e.fieldName];return"string"!=typeof t?a.createElement(a.Fragment,null):a.createElement("div",{className:"float-end text-secondary fw-normal"},t.length,"/",e.limit," characters")}const h={revealPassword:"jCfI0",passwordInput:"RBJnf",passwordContainer:"d78lK",passwordContainerDisabled:"asbVo",infoTooltip:"wzyOG",spinner:"CycFx"};function v(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,a=new Array(t);n<t;n++)a[n]=e[n];return a}var g=function(e,t){var n={};for(var a in e)Object.prototype.hasOwnProperty.call(e,a)&&t.indexOf(a)<0&&(n[a]=e[a]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var r=0;for(a=Object.getOwnPropertySymbols(e);r<a.length;r++)t.indexOf(a[r])<0&&Object.prototype.propertyIsEnumerable.call(e,a[r])&&(n[a[r]]=e[a[r]])}return n},w="shared.formField";function O(e){var t,n,l=e.children,s=e.showLoadingSpinner,u=g(e,["children","showLoadingSpinner"]),m=(t=a.useState(e.type),n=2,function(e){if(Array.isArray(e))return e}(t)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var a,r,l,o,i=[],c=!0,s=!1;try{if(l=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;c=!1}else for(;!(c=(a=l.call(n)).done)&&(i.push(a.value),i.length!==t);c=!0);}catch(e){s=!0,r=e}finally{try{if(!c&&null!=n.return&&(o=n.return(),Object(o)!==o))return}finally{if(s)throw r}}return i}}(t,n)||function(e,t){if(e){if("string"==typeof e)return v(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)?v(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.")}()),f=m[0],d=m[1],y=i.q.isFunction(l)?function(e){return l(e)}:a.Children.count(l)?l:null;if("password"!==u.type)return s?a.createElement("div",{className:"position-relative"},a.createElement(o.gN,Object.assign({},c.t.omit(u,["formSize"])),y),a.createElement("div",{className:h.spinner},a.createElement(r.Z,{animation:"border",size:"sm"}))):a.createElement(o.gN,Object.assign({},c.t.omit(u,["formSize"])),y);var w="position-relative ".concat(h.passwordContainer);return u.className&&(w+=" ".concat(u.className)),u.disabled&&(w+=" ".concat(h.passwordContainerDisabled)),a.createElement("div",{className:w},a.createElement(o.gN,Object.assign({},c.t.omit(u,["formSize","type","className"]),{type:f,className:"".concat(h.passwordInput," border-0 w-100 h-100 outline-none rounded")}),y),"password"===u.type&&a.createElement(p.x,{svgName:"password"===f?b.vn.VisibleOn:b.vn.VisibleOff,className:"svg-container cursor-pointer ".concat(h.revealPassword),onClick:function(){d("password"===f?"text":"password")}}))}function E(e){var t=e.label,n=e.className,r=e.showCharacterCounter,i=e.showRequiredStar,s=e.infoTooltip,u=e.infoTooltipPlacement,v=e.infoText,E=e.formSize,C=e.showOptionalLabel,S=g(e,["label","className","showCharacterCounter","showRequiredStar","infoTooltip","infoTooltipPlacement","infoText","formSize","showOptionalLabel"]),x=(0,o.u6)(),N=x.errors,P=x.touched,k=function(){};if("checkbox"===S.type){var j=c.t.omit(e,["formSize","infoTooltipPlacement"]);return e.disabled&&(j.onChange=k),a.createElement(m,Object.assign({},j))}var T=Object.assign(Object.assign({},S),{className:d.w.getCustomFormControlClassName(N,P,S.name,E,n,"string"==typeof e.as?e.as:null)});return e.disabled&&(T.onChange=k),a.createElement(l.Z.Group,{className:"form-group"},!!t&&a.createElement(l.Z.Label,{htmlFor:S.id,className:"d-flex align-items-center"},t,i&&a.createElement("span",{className:"text-danger"},"*"),s&&a.createElement(p.x,{className:"svg-container text-secondary ".concat(h.infoTooltip),svgName:b.vn.Info,title:s,tooltipPlacement:u,tooltipSpanHack:!0}),C&&a.createElement("span",{className:"text-secondary"}," ",a.createElement(f.x,{namespace:w,phrase:"optional"})),!!r&&!!S.maxLength&&a.createElement("div",{className:"ms-auto"},a.createElement(y,{fieldName:S.name,limit:S.maxLength}))),a.createElement(O,Object.assign({},T)),!!v&&a.createElement(l.Z.Text,{className:"text-secondary"},v),a.createElement(o.Bc,{name:S.name},(function(e){return a.createElement(l.Z.Control.Feedback,{type:"invalid"},e)})))}O.defaultProps={autoComplete:"off"},E.defaultProps={autoComplete:"off",infoTooltipPlacement:"top"}},82644:(e,t,n)=>{n.d(t,{b:()=>u,n:()=>s});var a=n(32735),r=n(92802),l=n(91967),o=n(1048);function i(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,a=new Array(t);n<t;n++)a[n]=e[n];return a}var c=function(e,t){var n={};for(var a in e)Object.prototype.hasOwnProperty.call(e,a)&&t.indexOf(a)<0&&(n[a]=e[a]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var r=0;for(a=Object.getOwnPropertySymbols(e);r<a.length;r++)t.indexOf(a[r])<0&&Object.prototype.propertyIsEnumerable.call(e,a[r])&&(n[a[r]]=e[a[r]])}return n};function s(e){var t=e.castInitialValues,n=e.castValuesOnSubmit,s=e.initialValues,u=e.onSubmit,m=c(e,["castInitialValues","castValuesOnSubmit","initialValues","onSubmit"]),p=t&&e.validationSchema?e.validationSchema.cast(function(e){if(!e)return{};var t=o.t.deepClone(e);return function e(n){Object.keys(t).forEach((function(a){t.hasOwnProperty(a)&&(o.t.isObject(n[a])?e(n[a]):null===t[a]&&delete t[a])}))}(t),t}(s)):s,f={allowInitialSubmit:e.allowInitialSubmit};return a.createElement(r.J9,Object.assign({enableReinitialize:!0},m,{initialValues:p,onSubmit:function(t,a){var r=a.setSubmitting,l=a.resetForm,o=a.setFieldError,c=n&&e.validationSchema?e.validationSchema.cast(t):t;u(c,(function(){var e,t,n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(n.reset&&l(),n.errors)for(var a=0,c=Object.entries(n.errors);a<c.length;a++){var s=(e=c[a],t=2,function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var a,r,l,o,i=[],c=!0,s=!1;try{if(l=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;c=!1}else for(;!(c=(a=l.call(n)).done)&&(i.push(a.value),i.length!==t);c=!0);}catch(e){s=!0,r=e}finally{try{if(!c&&null!=n.return&&(o=n.return(),Object(o)!==o))return}finally{if(s)throw r}}return i}}(e,t)||function(e,t){if(e){if("string"==typeof e)return i(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?i(e,t):void 0}}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),u=s[0],m=s[1];o(u,m)}r(!1)}))},initialStatus:f}),l.q.isFunction(e.children)?function(t){return e.children(t)}:a.Children.count(e.children)?e.children:null)}function u(){return(0,r.u6)()}s.defaultProps={castInitialValues:!0,castValuesOnSubmit:!0}},73814:(e,t,n)=>{n.d(t,{w:()=>r});var a=n(92802),r={getCustomFormControlClassName:function(e,t,n,r,l,o){var i="";return i=function(e,t){var n="";return n="select"===e?"form-select":"form-control","sm"===t&&(n+=" ".concat(n,"-sm")),"lg"===t&&(n+=" ".concat(n,"-lg")),n}(o,r),(0,a.u9)(t,n)&&(0,a.u9)(e,n)&&(i+=" is-invalid"),l&&(i+=" ".concat(l)),i}}},86644:(e,t,n)=>{n.d(t,{e:()=>p});var a=n(32735),r=n(92802),l=n(23481),o=n(2381),i=n(38365),c=n(82644),s=n(13876),u=l.T.encloseNamespace("playlists.playlistDetails");function m(e){var t=(0,c.b)();return a.createElement(r.l0,null,a.createElement(i.W,{label:u("nameLabel"),type:"text",name:"name",id:"name",placeholder:u("namePlaceholder"),autoFocus:!0,value:t.values.name,showRequiredStar:!0}),a.createElement(i.W,{label:u("descriptionLabel"),component:"textarea",name:"description",id:"description",placeholder:u("descriptionPlaceholder"),value:t.values.description}),a.createElement(s.u,null,a.createElement(s.u.Cancel,{onClick:e.onClickCancel}),a.createElement(s.u.Submit,{variant:"dark",isNew:e.isNew,text:e.submitText})))}function p(e){var t=e.playlist,n=void 0===t?{}:t,r=n.name,l=void 0===r?"":r,i=n.description,s=void 0===i?"":i,u=n.id,p=void 0===u?null:u,f=e.savePlaylist,d=e.onClickCancel,b=e.cancelButtonClass;return a.createElement(c.n,{initialValues:{name:l,description:s},validationSchema:o.q,onSubmit:f},a.createElement(m,{isNew:!p,onClickCancel:d,cancelButtonClass:b,submitText:e.submitText}))}},8025:(e,t,n)=>{n.r(t),n.d(t,{NewPlaylistView:()=>g});var a=n(32735),r=n(70680),l=n(23481),o=n(81886),i=n(20354),c=n(28400),s=n(49985),u=n(65858),m=n(9111),p=n(5112),f=n(31949),d=n(69883),b=n(79612),y=n(14070),h=n(86644),v=l.T.encloseNamespace("playlists.newPlaylist");function g(e){var t=(0,r.I0)(),n=(0,d.Z)();(0,b.M)({title:v("title")});var l=i.a.useBasicFetch(f.N.currentUser());return a.createElement(m.G,{title:v("title"),closePopup:e.closePopup,showLoadingSpinner:!l.data},!!l.data&&a.createElement(h.e,{savePlaylist:function(a){i.a.fetch(t,p.C.createPlaylist(l.data.id,a,(function(t){n.success(v("success",{name:a.name,escapeText:!0})),s.k.logUserAction({id:t.id},s.k.mergeOptions(e.analyticsOptions,{actionType:u.Vw.Create,entity:u.py.Playlist,workflowPhase:u.eu.Complete})),e.closePopup(),o.Q.C$.trigger({application:e.application,action:y.e.Playlists.PLAYLIST,args:[t.id,c.m.slugify(t.name)]})}),(function(){n.error(v("error")),e.closePopup()})))},onClickCancel:e.closePopup,cancelButtonClass:"link",submitText:v("submit")}))}}}]);
2
- //# sourceMappingURL=8025-d7a573aca0-lite.chunk.js.map
1
+ "use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[8025],{2381:(e,t,n)=>{n.d(t,{q:()=>o});var a=n(5173),r=n(23481),l="playlists.validation",o=a.Ry().shape({name:a.Z_().max(250,(function(){return r.T.getPhrase(l,"nameExceeds")})).required((function(){return r.T.getPhrase(l,"nameRequired")})),description:a.Z_().max(16e3,(function(){return r.T.getPhrase(l,"descriptionExceeds")})).nullable()})},38365:(e,t,n)=>{n.d(t,{n:()=>O,W:()=>E});var a=n(32735),r=n(80247),l=n(80130),o=n(92802),i=n(91967),c=n(1048),s=n(36848),u=function(e,t){var n={};for(var a in e)Object.prototype.hasOwnProperty.call(e,a)&&t.indexOf(a)<0&&(n[a]=e[a]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var r=0;for(a=Object.getOwnPropertySymbols(e);r<a.length;r++)t.indexOf(a[r])<0&&Object.prototype.propertyIsEnumerable.call(e,a[r])&&(n[a[r]]=e[a[r]])}return n};function m(e){var t=e.label,n=e.checkboxLabelClassName,r=e.checkboxLabelFontWeight,o=e.className,i=u(e,["label","checkboxLabelClassName","checkboxLabelFontWeight","className"]);return a.createElement(l.Z.Group,{className:"form-group"},a.createElement("div",{className:"form-check ".concat(o||"")},a.createElement(O,Object.assign({className:"form-check-input"},i)),a.createElement(l.Z.Label,{className:"form-check-label cursor-pointer ".concat("normal"===r?"fw-normal":""," \n ").concat(n),htmlFor:i.id},t),e.checkboxAppLink&&e.checkboxAppLinkText&&a.createElement(a.Fragment,null,a.createElement("span",null," "),a.createElement(s.F,{appLink:e.checkboxAppLink,className:"info-link"},e.checkboxAppLinkText))))}var p=n(83914),f=n(83345),d=n(73814),b=n(35223);function y(e){var t=(0,o.u6)().values[e.fieldName];return"string"!=typeof t?a.createElement(a.Fragment,null):a.createElement("div",{className:"float-end text-secondary fw-normal"},t.length,"/",e.limit," characters")}const h={revealPassword:"jCfI0",passwordInput:"RBJnf",passwordContainer:"d78lK",passwordContainerDisabled:"asbVo",infoTooltip:"wzyOG",spinner:"CycFx"};function v(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,a=new Array(t);n<t;n++)a[n]=e[n];return a}var g=function(e,t){var n={};for(var a in e)Object.prototype.hasOwnProperty.call(e,a)&&t.indexOf(a)<0&&(n[a]=e[a]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var r=0;for(a=Object.getOwnPropertySymbols(e);r<a.length;r++)t.indexOf(a[r])<0&&Object.prototype.propertyIsEnumerable.call(e,a[r])&&(n[a[r]]=e[a[r]])}return n},w="shared.formField";function O(e){var t,n,l=e.children,s=e.showLoadingSpinner,u=g(e,["children","showLoadingSpinner"]),m=(t=a.useState(e.type),n=2,function(e){if(Array.isArray(e))return e}(t)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var a,r,l,o,i=[],c=!0,s=!1;try{if(l=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;c=!1}else for(;!(c=(a=l.call(n)).done)&&(i.push(a.value),i.length!==t);c=!0);}catch(e){s=!0,r=e}finally{try{if(!c&&null!=n.return&&(o=n.return(),Object(o)!==o))return}finally{if(s)throw r}}return i}}(t,n)||function(e,t){if(e){if("string"==typeof e)return v(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)?v(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.")}()),f=m[0],d=m[1],y=i.q.isFunction(l)?function(e){return l(e)}:a.Children.count(l)?l:null;if("password"!==u.type)return s?a.createElement("div",{className:"position-relative"},a.createElement(o.gN,Object.assign({},c.t.omit(u,["formSize"])),y),a.createElement("div",{className:h.spinner},a.createElement(r.Z,{animation:"border",size:"sm"}))):a.createElement(o.gN,Object.assign({},c.t.omit(u,["formSize"])),y);var w="position-relative ".concat(h.passwordContainer);return u.className&&(w+=" ".concat(u.className)),u.disabled&&(w+=" ".concat(h.passwordContainerDisabled)),a.createElement("div",{className:w},a.createElement(o.gN,Object.assign({},c.t.omit(u,["formSize","type","className"]),{type:f,className:"".concat(h.passwordInput," border-0 w-100 h-100 outline-none rounded")}),y),"password"===u.type&&a.createElement(p.x,{svgName:"password"===f?b.vn.VisibleOn:b.vn.VisibleOff,className:"svg-container cursor-pointer ".concat(h.revealPassword),onClick:function(){d("password"===f?"text":"password")}}))}function E(e){var t=e.label,n=e.className,r=e.showCharacterCounter,i=e.showRequiredStar,s=e.infoTooltip,u=e.infoTooltipPlacement,v=e.infoText,E=e.formSize,C=e.showOptionalLabel,S=g(e,["label","className","showCharacterCounter","showRequiredStar","infoTooltip","infoTooltipPlacement","infoText","formSize","showOptionalLabel"]),x=(0,o.u6)(),N=x.errors,P=x.touched,k=function(){};if("checkbox"===S.type){var j=c.t.omit(e,["formSize","infoTooltipPlacement"]);return e.disabled&&(j.onChange=k),a.createElement(m,Object.assign({},j))}var T=Object.assign(Object.assign({},S),{className:d.w.getCustomFormControlClassName(N,P,S.name,E,n,"string"==typeof e.as?e.as:null)});return e.disabled&&(T.onChange=k),a.createElement(l.Z.Group,{className:"form-group"},!!t&&a.createElement(l.Z.Label,{htmlFor:S.id,className:"d-flex align-items-center"},t,i&&a.createElement("span",{className:"text-danger"},"*"),s&&a.createElement(p.x,{className:"svg-container text-secondary ".concat(h.infoTooltip),svgName:b.vn.Info,title:s,tooltipPlacement:u,tooltipSpanHack:!0}),C&&a.createElement("span",{className:"text-secondary"}," ",a.createElement(f.x,{namespace:w,phrase:"optional"})),!!r&&!!S.maxLength&&a.createElement("div",{className:"ms-auto"},a.createElement(y,{fieldName:S.name,limit:S.maxLength}))),a.createElement(O,Object.assign({},T)),!!v&&a.createElement(l.Z.Text,{className:"text-secondary"},v),a.createElement(o.Bc,{name:S.name},(function(e){return a.createElement(l.Z.Control.Feedback,{type:"invalid"},e)})))}O.defaultProps={autoComplete:"off"},E.defaultProps={autoComplete:"off",infoTooltipPlacement:"top"}},82644:(e,t,n)=>{n.d(t,{b:()=>u,n:()=>s});var a=n(32735),r=n(92802),l=n(91967),o=n(1048);function i(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,a=new Array(t);n<t;n++)a[n]=e[n];return a}var c=function(e,t){var n={};for(var a in e)Object.prototype.hasOwnProperty.call(e,a)&&t.indexOf(a)<0&&(n[a]=e[a]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var r=0;for(a=Object.getOwnPropertySymbols(e);r<a.length;r++)t.indexOf(a[r])<0&&Object.prototype.propertyIsEnumerable.call(e,a[r])&&(n[a[r]]=e[a[r]])}return n};function s(e){var t=e.castInitialValues,n=e.castValuesOnSubmit,s=e.initialValues,u=e.onSubmit,m=c(e,["castInitialValues","castValuesOnSubmit","initialValues","onSubmit"]),p=t&&e.validationSchema?e.validationSchema.cast(function(e){if(!e)return{};var t=o.t.deepClone(e);return function e(n){Object.keys(t).forEach((function(a){t.hasOwnProperty(a)&&(o.t.isObject(n[a])?e(n[a]):null===t[a]&&delete t[a])}))}(t),t}(s)):s,f={allowInitialSubmit:e.allowInitialSubmit};return a.createElement(r.J9,Object.assign({enableReinitialize:!0},m,{initialValues:p,onSubmit:function(t,a){var r=a.setSubmitting,l=a.resetForm,o=a.setFieldError,c=n&&e.validationSchema?e.validationSchema.cast(t):t;u(c,(function(){var e,t,n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(n.reset&&l(),n.errors)for(var a=0,c=Object.entries(n.errors);a<c.length;a++){var s=(e=c[a],t=2,function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var a,r,l,o,i=[],c=!0,s=!1;try{if(l=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;c=!1}else for(;!(c=(a=l.call(n)).done)&&(i.push(a.value),i.length!==t);c=!0);}catch(e){s=!0,r=e}finally{try{if(!c&&null!=n.return&&(o=n.return(),Object(o)!==o))return}finally{if(s)throw r}}return i}}(e,t)||function(e,t){if(e){if("string"==typeof e)return i(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?i(e,t):void 0}}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),u=s[0],m=s[1];o(u,m)}r(!1)}))},initialStatus:f}),l.q.isFunction(e.children)?function(t){return e.children(t)}:a.Children.count(e.children)?e.children:null)}function u(){return(0,r.u6)()}s.defaultProps={castInitialValues:!0,castValuesOnSubmit:!0}},73814:(e,t,n)=>{n.d(t,{w:()=>r});var a=n(92802),r={getCustomFormControlClassName:function(e,t,n,r,l,o){var i="";return i=function(e,t){var n="";return n="select"===e?"form-select":"form-control","sm"===t&&(n+=" ".concat(n,"-sm")),"lg"===t&&(n+=" ".concat(n,"-lg")),n}(o,r),(0,a.u9)(t,n)&&(0,a.u9)(e,n)&&(i+=" is-invalid"),l&&(i+=" ".concat(l)),i}}},86644:(e,t,n)=>{n.d(t,{e:()=>p});var a=n(32735),r=n(92802),l=n(23481),o=n(2381),i=n(38365),c=n(82644),s=n(13876),u=l.T.encloseNamespace("playlists.playlistDetails");function m(e){var t=(0,c.b)();return a.createElement(r.l0,null,a.createElement(i.W,{label:u("nameLabel"),type:"text",name:"name",id:"name",placeholder:u("namePlaceholder"),autoFocus:!0,value:t.values.name,showRequiredStar:!0}),a.createElement(i.W,{label:u("descriptionLabel"),component:"textarea",name:"description",id:"description",placeholder:u("descriptionPlaceholder"),value:t.values.description}),a.createElement(s.u,null,a.createElement(s.u.Cancel,{onClick:e.onClickCancel}),a.createElement(s.u.Submit,{variant:"dark",isNew:e.isNew,text:e.submitText})))}function p(e){var t=e.playlist,n=void 0===t?{}:t,r=n.name,l=void 0===r?"":r,i=n.description,s=void 0===i?"":i,u=n.id,p=void 0===u?null:u,f=e.savePlaylist,d=e.onClickCancel,b=e.cancelButtonClass;return a.createElement(c.n,{initialValues:{name:l,description:s},validationSchema:o.q,onSubmit:f},a.createElement(m,{isNew:!p,onClickCancel:d,cancelButtonClass:b,submitText:e.submitText}))}},8025:(e,t,n)=>{n.r(t),n.d(t,{NewPlaylistView:()=>v});var a=n(32735),r=n(70680),l=n(23481),o=n(81886),i=n(20354),c=n(28400),s=n(49985),u=n(65858),m=n(9111),p=n(5112),f=n(31949),d=n(69883),b=n(14070),y=n(86644),h=l.T.encloseNamespace("playlists.newPlaylist");function v(e){var t=(0,r.I0)(),n=(0,d.Z)(),l=i.a.useBasicFetch(f.N.currentUser());return a.createElement(m.G,{title:h("title"),closePopup:e.closePopup,showLoadingSpinner:!l.data},!!l.data&&a.createElement(y.e,{savePlaylist:function(a){i.a.fetch(t,p.C.createPlaylist(l.data.id,a,(function(t){n.success(h("success",{name:a.name,escapeText:!0})),s.k.logUserAction({id:t.id},s.k.mergeOptions(e.analyticsOptions,{actionType:u.Vw.Create,entity:u.py.Playlist,workflowPhase:u.eu.Complete})),e.closePopup(),o.Q.C$.trigger({application:e.application,action:b.e.Playlists.PLAYLIST,args:[t.id,c.m.slugify(t.name)]})}),(function(){n.error(h("error")),e.closePopup()})))},onClickCancel:e.closePopup,cancelButtonClass:"link",submitText:h("submit")}))}}}]);
2
+ //# sourceMappingURL=8025-24e45dc3b7-lite.chunk.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scripts/8025-24e45dc3b7-lite.chunk.js","mappings":"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","sources":["file:///app/packages/libs/shared/src/apps/playlists/validation/PlaylistValidationSchema.ts","file:///app/packages/libs/shared/src/components/forms/form-checkbox/FormCheckbox.tsx","file:///app/packages/libs/shared/src/components/forms/form-field/CharacterCounter.tsx","file:///app/packages/libs/shared/src/components/forms/form-field/form-field.scss","file:///app/packages/libs/shared/src/components/forms/form-field/FormField.tsx","file:///app/packages/libs/shared/src/components/forms/form-wrapper/FormWrapper.tsx","file:///app/packages/libs/shared/src/utils/FormHelper.ts","file:///app/packages/projects/lite/src/apps/playlists/components/playlist-details/PlaylistDetails.tsx","file:///app/packages/projects/lite/src/apps/playlists/views/new-playlist/NewPlaylistView.tsx"],"sourcesContent":["import * as Yup from 'yup';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nconst namespace = 'playlists.validation';\n\nexport const PlaylistValidationSchema = Yup.object().shape({\n name: Yup.string()\n .max(250, () => LanguageService.getPhrase(namespace, 'nameExceeds'))\n .required(() => LanguageService.getPhrase(namespace, 'nameRequired')),\n description: Yup.string()\n .max(16000, () => LanguageService.getPhrase(namespace, 'descriptionExceeds'))\n .nullable()\n});","import * as React from 'react';\nimport { Form } from 'react-bootstrap';\nimport { FieldAttributes } from 'formik';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\n\nimport { FieldWrapper, FormFieldProps } from '../form-field/FormField';\n\n/**\n * Use this checkbox within Formik contexts\n */\nexport function FormCheckbox(props: FieldAttributes<FormFieldProps>): JSX.Element {\n const { label, checkboxLabelClassName, checkboxLabelFontWeight, className, ...fieldProps } = props;\n\n return (\n <Form.Group className='form-group'>\n <div className={`form-check ${className || ''}`}>\n <FieldWrapper className='form-check-input' {...fieldProps} />\n <Form.Label\n className={`form-check-label cursor-pointer ${checkboxLabelFontWeight === 'normal' ? 'fw-normal' : ''} \n ${checkboxLabelClassName}`}\n htmlFor={fieldProps.id}\n >\n {label}\n </Form.Label>\n {props.checkboxAppLink && props.checkboxAppLinkText && (\n <>\n <span>&nbsp;</span>\n <AppLink appLink={props.checkboxAppLink} className='info-link'>\n {props.checkboxAppLinkText}\n </AppLink>\n </>\n )}\n </div>\n </Form.Group>\n );\n}\n\n","import * as React from 'react';\nimport { useFormikContext } from 'formik';\n\nimport { HashObject } from 'libs/common/react/interfaces';\n\ninterface CharacterCounterProps<Values extends HashObject> {\n fieldName: keyof Values;\n limit: number;\n}\n\nexport function CharacterCounter<Values extends HashObject>(props: CharacterCounterProps<Values>): JSX.Element {\n const { values } = useFormikContext<Values>();\n\n const field = values[props.fieldName];\n\n if (typeof field !== 'string')\n return <></>;\n\n return (\n <div className='float-end text-secondary fw-normal'>\n {field.length}/{props.limit} characters\n </div>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"revealPassword\":\"jCfI0\",\"passwordInput\":\"RBJnf\",\"passwordContainer\":\"d78lK\",\"passwordContainerDisabled\":\"asbVo\",\"infoTooltip\":\"wzyOG\",\"spinner\":\"CycFx\"};","import * as React from 'react';\nimport { Form, Spinner } from 'react-bootstrap';\nimport { Placement } from 'react-bootstrap/esm/types';\nimport { ErrorMessage, Field, FieldAttributes, FieldProps, useFormikContext } from 'formik';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\nimport { HashObject } from 'libs/common/react/interfaces';\nimport { ObjectHelper } from 'libs/common/react/utils/ObjectHelper';\n\nimport { FormCheckbox } from 'libs/shared/components/forms/form-checkbox/FormCheckbox';\nimport { SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { FormHelper } from 'libs/shared/utils/FormHelper';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport { CharacterCounter } from './CharacterCounter';\n\nimport styles from './form-field.scss';\n\nconst namespace = 'shared.formField';\n\nexport type FormSize = 'lg' | 'sm';\n\n// If checkboxLabelFontWeight is not specified, it will be bold by default\nexport type CheckboxLabelFontWeight = 'normal' | 'bold'\n\nexport interface FormFieldProps {\n /**\n * The name prop MUST be the same as the attribute\n * name of the value that the field is bound to.\n */\n name: string;\n label?: string;\n children?: any;\n showCharacterCounter?: boolean;\n showRequiredStar?: boolean;\n checkboxAppLink?: Core.AppLink;\n checkboxAppLinkText?: string;\n checkboxLabelClassName?: string;\n checkboxLabelFontWeight?: CheckboxLabelFontWeight\n infoTooltip?: string;\n infoTooltipPlacement?: Placement;\n infoText?: string;\n formSize?: FormSize;\n showOptionalLabel?: boolean;\n showLoadingSpinner?: boolean;\n}\n\nFieldWrapper.defaultProps = {\n autoComplete: 'off'\n};\n\nexport function FieldWrapper(\n props: FieldAttributes<FormFieldProps> & { className: string }\n): React.ReactElement {\n const { children, showLoadingSpinner, ...fieldProps } = props;\n\n const [ type, setType ] = React.useState(props.type);\n\n function onClickTogglePassword(): void {\n if (type === 'password')\n setType('text');\n else\n setType('password');\n }\n\n const resolvedChildren = FunctionHelper.isFunction(children)\n ? (f: FieldProps) => children(f)\n : React.Children.count(children) ? children : null;\n\n if (fieldProps.type !== 'password') {\n if (showLoadingSpinner) {\n return (\n <div className='position-relative'>\n <Field {...(ObjectHelper.omit(fieldProps, ['formSize']))}>\n {resolvedChildren}\n </Field>\n\n <div className={styles.spinner}>\n <Spinner animation='border' size='sm' />\n </div>\n </div>\n );\n }\n\n return (\n <Field {...(ObjectHelper.omit(fieldProps, ['formSize']))}>\n {resolvedChildren}\n </Field>\n );\n }\n\n let containerClassName = `position-relative ${styles.passwordContainer}`;\n\n if (fieldProps.className)\n containerClassName += ` ${fieldProps.className}`;\n\n if (fieldProps.disabled)\n containerClassName += ` ${styles.passwordContainerDisabled}`;\n\n /**\n * We need to wrap out input with a relatively positioned element in order to absolutely\n * position our visibility icon to reveal the password - Sha\n */\n return (\n <div className={containerClassName}>\n <Field\n {...(ObjectHelper.omit(fieldProps, [ 'formSize', 'type', 'className' ]))}\n type={type}\n className={`${styles.passwordInput} border-0 w-100 h-100 outline-none rounded`}\n >\n {resolvedChildren}\n </Field>\n {fieldProps.type === 'password' &&\n <SvgContainer\n svgName={type === 'password' ? cvSvgLibrary.VisibleOn : cvSvgLibrary.VisibleOff}\n className={`svg-container cursor-pointer ${styles.revealPassword}`}\n onClick={onClickTogglePassword}\n />\n }\n </div>\n );\n}\n\nFormField.defaultProps = {\n autoComplete: 'off',\n infoTooltipPlacement: 'top'\n};\n\nexport function FormField<Values extends HashObject>(props: FieldAttributes<FormFieldProps>): React.ReactElement {\n const {\n label,\n className,\n showCharacterCounter,\n showRequiredStar,\n infoTooltip,\n infoTooltipPlacement,\n infoText,\n formSize,\n showOptionalLabel,\n ...fieldProps\n } = props;\n\n const { errors, touched } = useFormikContext<Values>();\n\n // This function overwrites the default `onChange` function whenever `props.disabled` is set.\n // This prevents users from \"undisabling\" form fields via inspect element, then editing the field.\n const disabledOnChange = () => {};\n\n if (fieldProps.type === 'checkbox') {\n const _props = ObjectHelper.omit(props, [ 'formSize', 'infoTooltipPlacement' ]);\n\n if (props.disabled)\n _props.onChange = disabledOnChange;\n\n return <FormCheckbox {..._props} />;\n }\n\n const fieldWrapperProps = {\n ...fieldProps,\n className: FormHelper.getCustomFormControlClassName(\n errors,\n touched,\n fieldProps.name,\n formSize,\n className,\n typeof props.as === 'string' ? props.as : null\n )\n };\n\n if (props.disabled)\n fieldWrapperProps.onChange = disabledOnChange;\n\n return (\n <Form.Group className='form-group'>\n {!!label && (\n <Form.Label htmlFor={fieldProps.id} className='d-flex align-items-center'>\n {label}\n {showRequiredStar && <span className='text-danger'>*</span>}\n {infoTooltip && (\n <SvgContainer\n className={`svg-container text-secondary ${styles.infoTooltip}`}\n svgName={cvSvgLibrary.Info}\n title={infoTooltip}\n tooltipPlacement={infoTooltipPlacement}\n tooltipSpanHack\n />\n )}\n {showOptionalLabel && <span className='text-secondary'>&nbsp;<Text namespace={namespace} phrase='optional' /></span>}\n \n {!!showCharacterCounter && !!(fieldProps as React.HTMLProps<HTMLInputElement>).maxLength &&\n <div className='ms-auto'>\n <CharacterCounter\n fieldName={(fieldProps.name as keyof Values)}\n limit={(fieldProps as React.HTMLProps<HTMLInputElement>).maxLength}\n />\n </div>\n }\n </Form.Label>\n )}\n\n <FieldWrapper {...fieldWrapperProps} />\n\n {!!infoText &&\n <Form.Text className='text-secondary'>\n {infoText}\n </Form.Text>\n }\n\n <ErrorMessage name={fieldProps.name}>\n {(errorMessage: string) => <Form.Control.Feedback type='invalid'>{errorMessage}</Form.Control.Feedback>}\n </ErrorMessage>\n </Form.Group>\n );\n}","import * as React from 'react';\nimport { Formik, FormikConfig, FormikContextType, FormikErrors, FormikHelpers, FormikProps, FormikValues, useFormikContext } from 'formik';\n\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\nimport { HashObject } from 'libs/common/react/interfaces';\nimport { ObjectHelper } from 'libs/common/react/utils/ObjectHelper';\n\n/**\n * Note: This currently doesn't support arrays, but the need for arrays as initial\n * form data has not yet come up\n */\nfunction omitNullInitialValues<Values extends FormikValues>(initialValues: Values): Values {\n if (!initialValues)\n return {} as Values;\n\n const values = ObjectHelper.deepClone(initialValues);\n\n function omitChildValues(child: Values): void {\n Object.keys(values).forEach((key: keyof Values) => {\n if (!values.hasOwnProperty(key))\n return;\n \n if (ObjectHelper.isObject(child[key]))\n omitChildValues(child[key]);\n else if (values[key] === null)\n delete values[key];\n });\n }\n\n omitChildValues(values);\n return values;\n}\n\n// Omit attributes from FormikConfig that are defined in FormWrapperProps.\ntype ModifiedFormikConfig<Values extends FormikValues> = Omit<FormikConfig<Values>, 'initialValues' | 'onSubmit'>;\n\ninterface InitialStatus {\n allowInitialSubmit: boolean;\n}\n\nexport type FormSubmissionOptions<FormValues = FormikValues> = {\n reset?: boolean;\n errors?: FormikErrors<FormValues>;\n};\n\ninterface FormWrapperProps<FormValues extends FormikValues, ApiValues extends FormikValues> {\n initialValues: Partial<FormValues | ApiValues>;\n onSubmit: (data: FormValues, onDone: (options?: FormSubmissionOptions<FormValues>) => void) => void;\n castInitialValues?: boolean; // cast to validationSchema\n castValuesOnSubmit?: boolean; // cast to validationSchema\n allowInitialSubmit?: boolean; // if true, useCanSubmitForm will allow submit without any user changes.\n}\n\nFormWrapper.defaultProps = {\n castInitialValues: true,\n castValuesOnSubmit: true\n};\n\nexport function FormWrapper<\n FormValues extends FormikValues = FormikValues,\n ApiValues extends FormikValues = FormValues,\n ExtraProps = HashObject\n>(props: ModifiedFormikConfig<FormValues> & ExtraProps & FormWrapperProps<FormValues, ApiValues>): JSX.Element {\n const { castInitialValues, castValuesOnSubmit, initialValues, onSubmit, ...formikProps } = props;\n\n /**\n * If castInitialValues is true, cast initialValues to the validationSchema.\n * This will ensure that any data fetched from the api conforms to the expected form data shape.\n */\n const formattedInitialValues: FormValues = castInitialValues && props.validationSchema\n ? props.validationSchema.cast(omitNullInitialValues(initialValues))\n : initialValues;\n\n const onSubmitHandler = (\n values: FormValues,\n { setSubmitting, resetForm, setFieldError }: FormikHelpers<FormValues>\n ) => {\n /**\n * validationSchema.cast will coerce the values to the types defined in validationSchema.\n * This is useful for trimming inputs:\n * e.g. if a value field has type Yup.string().trim(), it will be automatically trimmed.\n */\n const formattedData = castValuesOnSubmit && props.validationSchema\n ? props.validationSchema.cast(values)\n : values;\n\n onSubmit(formattedData, (options: FormSubmissionOptions<FormValues> = {}) => {\n options.reset && resetForm();\n\n if (options.errors) {\n for (const [ key, value ] of Object.entries(options.errors)) {\n setFieldError(key, value);\n }\n }\n\n setSubmitting(false);\n });\n };\n\n const initialStatus: InitialStatus = {\n allowInitialSubmit: props.allowInitialSubmit\n };\n\n return (\n <Formik<FormValues, ExtraProps>\n enableReinitialize\n {...(formikProps as ModifiedFormikConfig<FormValues> & ExtraProps)}\n initialValues={formattedInitialValues}\n onSubmit={onSubmitHandler}\n initialStatus={initialStatus}\n >\n {FunctionHelper.isFunction(props.children)\n ? (f: FormikProps<FormValues>) => (props.children as (f: FormikProps<FormValues>) => React.ReactNode)(f)\n : React.Children.count(props.children) ? props.children : null\n }\n </Formik>\n );\n}\n\nexport function useFormikContextWrapper<T>(): FormikContextType<T> {\n return useFormikContext<T>();\n}","import { FormikErrors, FormikTouched, getIn } from 'formik';\n\nimport { FormSize } from 'libs/shared/components/forms/form-field/FormField';\n\nfunction getTypeSize(type: string, size: FormSize) {\n let className = '';\n\n switch (type) {\n case 'select':\n className = 'form-select';\n break;\n default:\n className = 'form-control';\n }\n\n if (size === 'sm')\n className += ` ${className}-sm`;\n\n if (size === 'lg')\n className += ` ${className}-lg`;\n\n return className;\n}\n\nexport const FormHelper = {\n getCustomFormControlClassName<T>(\n errors: FormikErrors<T>,\n touched: FormikTouched<T>,\n attribute: string,\n size?: FormSize,\n additionalClassName?: string,\n type?: string\n ): string {\n let className = '';\n\n className = getTypeSize(type, size);\n\n // Using getIn as it supports dot notation\n if (getIn(touched, attribute) && getIn(errors, attribute))\n className += ' is-invalid';\n\n if (additionalClassName)\n className += ` ${additionalClassName}`;\n\n return className;\n }\n};","import * as React from 'react';\nimport { Form } from 'formik';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { CreateOrUpdatePlaylistRequest } from 'libs/shared/apps/playlists/interfaces';\nimport { PlaylistValidationSchema } from 'libs/shared/apps/playlists/validation/PlaylistValidationSchema';\nimport { FormField } from 'libs/shared/components/forms/form-field/FormField';\nimport { FormWrapper, useFormikContextWrapper } from 'libs/shared/components/forms/form-wrapper/FormWrapper';\nimport { PopupButtons } from 'libs/shared/components/popup/PopupButtons';\nimport { Playlist } from 'libs/shared/interfaces';\n\nconst namespace = 'playlists.playlistDetails';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface PlaylistDetailsFormComponentProps {\n isNew?: boolean;\n onClickCancel: () => void;\n cancelButtonClass: 'outline-dark' | 'link';\n submitText?: string;\n}\n\nfunction PlaylistDetailsFormComponent(props: PlaylistDetailsFormComponentProps): React.ReactElement {\n const formikProps = useFormikContextWrapper<CreateOrUpdatePlaylistRequest>();\n\n return (\n <Form>\n <FormField\n label={getPhrase('nameLabel')}\n type='text'\n name='name'\n id ='name'\n placeholder={getPhrase('namePlaceholder')}\n autoFocus\n value={formikProps.values.name}\n showRequiredStar\n />\n <FormField\n label={getPhrase('descriptionLabel')}\n component='textarea'\n name='description'\n id ='description'\n placeholder={getPhrase('descriptionPlaceholder')}\n value={formikProps.values.description}\n />\n\n <PopupButtons>\n <PopupButtons.Cancel onClick={props.onClickCancel} />\n <PopupButtons.Submit variant='dark' isNew={props.isNew} text={props.submitText} />\n </PopupButtons>\n </Form>\n );\n}\n\ninterface PlaylistDetailsComponentProps {\n playlist?: Playlist;\n savePlaylist: (data: CreateOrUpdatePlaylistRequest) => void;\n onClickCancel: () => void;\n cancelButtonClass: 'outline-dark' | 'link';\n submitText?: string;\n}\n\nexport function PlaylistDetails(props: PlaylistDetailsComponentProps): React.ReactElement {\n const { playlist: { name = '', description = '', id = null } = {}, savePlaylist, onClickCancel, cancelButtonClass } = props;\n\n return (\n <FormWrapper<CreateOrUpdatePlaylistRequest>\n initialValues={{ name, description }}\n validationSchema={PlaylistValidationSchema}\n onSubmit={savePlaylist}\n >\n <PlaylistDetailsFormComponent\n isNew={!id}\n onClickCancel={onClickCancel}\n cancelButtonClass={cancelButtonClass}\n submitText={props.submitText}\n />\n </FormWrapper>\n );\n}\n","import * as React from 'react';\nimport { useDispatch } from 'react-redux';\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 { AnalyticsHelper } from 'libs/analytics/AnalyticsHelper';\nimport { EntityType, UserAction, WorkflowPhase } from 'libs/analytics/interfaces';\n\nimport { CreateOrUpdatePlaylistRequest } from 'libs/shared/apps/playlists/interfaces';\nimport { Popup } from 'libs/shared/components/popup/Popup';\nimport { PlaylistRequests } from 'libs/shared/flight-requests/PlaylistRequests';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { useAlerts } from 'libs/shared/hooks/UseAlerts';\nimport { CurrentUser, Playlist, PropsWithAnalyticsOptions, PropsWithPopupViewProps } from 'libs/shared/interfaces';\n\nimport { Actions } from 'shared/constants/LiteActions';\n\nimport { PlaylistDetails } from 'apps/playlists/components/playlist-details/PlaylistDetails';\n\nconst getPhrase = LanguageService.encloseNamespace('playlists.newPlaylist');\n\ninterface NewPlaylistViewProps {\n application: string;\n}\n\ntype PropTypes = PropsWithAnalyticsOptions<PropsWithPopupViewProps<NewPlaylistViewProps>>;\n\nexport function NewPlaylistView(props: PropTypes): React.ReactElement {\n const dispatch = useDispatch();\n const alerts = useAlerts();\n\n const user = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n\n const savePlaylist = (data: CreateOrUpdatePlaylistRequest): void => {\n const onSuccess = (newPlaylist: Playlist) => {\n alerts.success(getPhrase('success', { name: data.name, escapeText: true }));\n\n AnalyticsHelper.logUserAction({ id: newPlaylist.id }, AnalyticsHelper.mergeOptions(props.analyticsOptions, {\n actionType: UserAction.Create,\n entity: EntityType.Playlist,\n workflowPhase: WorkflowPhase.Complete\n }));\n\n props.closePopup();\n\n Core.AppLinkHelper.trigger({\n application: props.application,\n action: Actions.Playlists.PLAYLIST,\n args: [ newPlaylist.id, TextHelper.slugify(newPlaylist.name) ]\n });\n };\n\n const onError = () => {\n alerts.error(getPhrase('error'));\n props.closePopup();\n };\n\n Flight.fetch(dispatch, PlaylistRequests.createPlaylist(user.data.id, data, onSuccess, onError));\n };\n\n return (\n <Popup title={getPhrase('title')} closePopup={props.closePopup} showLoadingSpinner={!user.data}>\n {!!user.data && (\n <PlaylistDetails\n savePlaylist={savePlaylist}\n onClickCancel={props.closePopup}\n cancelButtonClass='link'\n submitText={getPhrase('submit')}\n />\n )}\n </Popup>\n );\n}"],"names":["namespace","PlaylistValidationSchema","shape","name","max","required","description","nullable","FormCheckbox","props","label","checkboxLabelClassName","checkboxLabelFontWeight","className","fieldProps","Form","FieldWrapper","htmlFor","id","checkboxAppLink","checkboxAppLinkText","AppLink","appLink","CharacterCounter","field","values","fieldName","length","limit","children","showLoadingSpinner","type","setType","resolvedChildren","FunctionHelper","f","ObjectHelper","Spinner","animation","size","containerClassName","disabled","SvgContainer","svgName","onClick","FormField","showCharacterCounter","showRequiredStar","infoTooltip","infoTooltipPlacement","infoText","formSize","showOptionalLabel","errors","touched","disabledOnChange","_props","onChange","fieldWrapperProps","FormHelper","as","title","tooltipPlacement","tooltipSpanHack","Text","phrase","maxLength","errorMessage","defaultProps","autoComplete","FormWrapper","castInitialValues","castValuesOnSubmit","initialValues","onSubmit","formikProps","formattedInitialValues","validationSchema","cast","omitChildValues","child","Object","keys","forEach","key","hasOwnProperty","omitNullInitialValues","initialStatus","allowInitialSubmit","enableReinitialize","setSubmitting","resetForm","setFieldError","formattedData","options","reset","entries","value","useFormikContextWrapper","getCustomFormControlClassName","attribute","additionalClassName","getTypeSize","getPhrase","PlaylistDetailsFormComponent","placeholder","autoFocus","component","onClickCancel","variant","isNew","text","submitText","PlaylistDetails","playlist","savePlaylist","cancelButtonClass","NewPlaylistView","dispatch","alerts","user","closePopup","data","newPlaylist","success","escapeText","analyticsOptions","actionType","entity","workflowPhase","application","action","args","error"],"sourceRoot":""}
@@ -0,0 +1,2 @@
1
+ "use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[823],{53364:(e,t,n)=>{n.d(t,{b:()=>m});var r=n(32735),a=n(72688),i=n(99504),o=n(86664);const l={idpButton:"FDoJA",idpImage:"bjN_j",divider:"FfyN0"};var c=[{name:"ClassLink",logoUrl:"https://img.clickviewapp.com/v2/logos/ZA2ew5",url:"/login?idp=classlink"},{name:"Clever",logoUrl:"https://img.clickviewapp.com/v2/logos/LqlKgd",url:"/login?idp=clever"}],s=[{name:"Google",logoUrl:"https://img.clickviewapp.com/v2/logos/l5x0jL",url:"/login?idp=google"},{name:"Microsoft",logoUrl:"https://img.clickviewapp.com/v2/logos/xAxGPP",url:"/login?idp=microsoft"}];function u(e){var t=e.idp,n=e.last;return r.createElement("button",{className:"btn btn-lg btn-outline-dark w-100 ".concat(n?"":"mb-3"," ").concat(l.idpButton),onClick:function(){if(e.onClick)e.onClick(t);else{var n=window.location.pathname+window.location.search,r=JSON.stringify(function(){var e={},t=a.N.getEncodedAttributionData();t&&(e.r=t);var n=i.F.getUtmParameters();return n&&(e.utms=n),e}());window.location.href=t.url+"&redirectUrl="+encodeURIComponent(n)+"&attribution="+encodeURIComponent(r)}}},t.logoUrl&&r.createElement("img",{src:t.logoUrl,className:l.idpImage}),"Continue with ",t.name)}function m(e){var t,n,a="idps"in e?e.idps:null;return!(null==a?void 0:a.length)&&"geoLocation"in e&&(a=[].concat(s),o.I.isCountryCodeUS(null===(t=e.geoLocation)||void 0===t?void 0:t.countryCode)&&(n=a).unshift.apply(n,c)),r.createElement("div",{className:"".concat(e.className?e.className:"")},r.createElement("div",{className:"my-3 border-bottom position-relative ".concat(l.divider)}),a.map((function(t,n){return r.createElement(u,{idp:t,key:n,onClick:"onClick"in e?e.onClick:null})})))}},19623:(e,t,n)=>{n.d(t,{P:()=>p});var r=n(32735),a=n(81886),i=n(23481),o=n(53364),l=n(36848),c=n(83345),s=n(14070),u=n(97291),m="launchpad.signInButtons",d=i.T.encloseNamespace(m);function p(e){r.useEffect((function(){e.skipPrompt&&a.Q.Ab.PageLoad(a.Q.C$.getHref(t))}),[]);var t=function(){var t=a.Q.Ab.GetQuery(),n={};if(e.customerId&&(n.customerId=e.customerId,delete t.customerId),e.skipPrompt&&delete t.skipPrompt,e.redirectUrl)n.redirectUrl=e.redirectUrl;else{var r=a.Q.Ab.SerializeQueryParams(t);n.redirectUrl=a.Q.Ab.GetCurrentPath()+(r?"?"+r:"")}return e.showSignUp&&(n.showSignUp=!0),{application:u.O.DEFAULT,action:s.e.Default.LOG_IN,params:n}}();return r.createElement(r.Fragment,null,r.createElement(l.F,{className:"btn btn-lg btn-dark w-100 mt-4",appLink:t},r.createElement(c.x,{namespace:m,phrase:e.pageAppLinkString?"signInToWatch":"signIn"})),e.showJoinCode?r.createElement(l.F,{className:"btn btn-link info-link btn-lg w-100 mt-2",appLink:{application:u.O.LAUNCHPAD,action:s.e.Launchpad.JOIN_CLASSROOM_PROMPT}},d("enterCode")):r.createElement(r.Fragment,null,r.createElement(l.F,{className:"btn btn-lg btn-outline-dark w-100 mt-3",appLink:{application:u.O.LAUNCHPAD,action:s.e.SignUp.SIGN_UP,params:{pageAppLinkString:e.pageAppLinkString}}},d("signUp")),r.createElement(o.b,{geoLocation:e.geoLocation})))}},30823:(e,t,n)=>{n.r(t),n.d(t,{LoginLandingView:()=>E});var r=n(32735),a=n(23481),i=n(20354),o=n(65858),l=n(2786),c=n(11882),s=n(4594),u=n(43012),m=n(20768),d=n(1575),p=n(31908),g=n(83421),f=n(7179),v=n(19623),b=n(17762),h=n(408);const y={logo:"Je2Pi",formContainer:"MfLVl"};var k=a.T.encloseNamespace("classrooms.loginLanding");function E(e){var t,n,a,E,C,w,L=(0,b.M)(),U=(0,f.P)({id:e.objectId,app:(0,f.e)(e.objectType)},o.LZ.Launchpad),A=U.deepLink,N=U.showDeepLink,I=U.onClickDeepLink,S=(0,h.B)().trialAppLinkString,P=(C=e.objectId,w=e.objectType,i.a.useBasicFetch(function(){switch(w){case s.E.Video:return d.R.publicVideo(C);case s.E.Interactive:return m.b.publicInteractiveMetadata(C);case s.E.Clip:return u.e.publicClip(C);default:return null}}()));return e.skipPrompt||P.isFetching?r.createElement(r.Fragment,null):r.createElement(g.Z,{title:null===(t=P.data)||void 0===t?void 0:t.name,imageUrl:null===(n=p.M.getThumbnail(P.data))||void 0===n?void 0:n.url,objectType:e.objectType,links:[{text:k("openInApp"),url:A,hide:!N,onClick:I}]},r.createElement("div",{className:"".concat(y.formContainer," m-auto")},r.createElement("div",{className:"".concat(y.logo," mb-4 mx-auto")},r.createElement(l.$S,null)),!!(null===(a=P.data)||void 0===a?void 0:a.name)&&r.createElement("h1",{className:"h3"},p.M.isVideo(P.data)&&r.createElement(c.$,{type:"series",video:P.data,analyticsOptions:{},size:"sm"}),P.data.name),(null===(E=P.data)||void 0===E?void 0:E.description)&&r.createElement("p",{className:"mb-0 clamp-3"},P.data.description),r.createElement(v.P,{geoLocation:L,customerId:e.customerId,skipPrompt:e.skipPrompt,showJoinCode:e.showJoinCode,redirectUrl:null,pageAppLinkString:S,showSignUp:e.showSignUp})))}},17762:(e,t,n)=>{n.d(t,{M:()=>l});var r=n(39202),a=n(20354),i=n(39151),o={countryCode:"us",isFallback:!0};function l(){var e,t,n=a.a.useBasicFetch(i.L.geoLocation()),l=null===(t=null===(e=r.Ab.GetQuery())||void 0===e?void 0:e.countryCode)||void 0===t?void 0:t.toLowerCase();return l?{countryCode:l}:n.hasCompleted&&!n.data?o:n.data}},408:(e,t,n)=>{n.d(t,{B:()=>o});var r=n(2948),a=n(86702);function i(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function o(){var e,t,n=(e=(0,r.D)(a.y.OPEN_IN_APP_DATA),t=1,function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,a,i,o,l=[],c=!0,s=!1;try{if(i=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;c=!1}else for(;!(c=(r=i.call(n)).done)&&(l.push(r.value),l.length!==t);c=!0);}catch(e){s=!0,a=e}finally{try{if(!c&&null!=n.return&&(o=n.return(),Object(o)!==o))return}finally{if(s)throw a}}return l}}(e,t)||function(e,t){if(e){if("string"==typeof e)return i(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?i(e,t):void 0}}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}())[0];return{trialAppLinkString:function(){if(n&&["videos","clips","series","playlists","topics","interactives"].includes(n.app)){var e=n.id;switch(n.app){case"videos":return"video:".concat(e);case"playlists":return"playlist:".concat(e);case"series":return"series:".concat(e);case"topics":return"topic:".concat(e);case"interactives":return"interactive:".concat(e);case"clips":return"clip:".concat(e)}}}()}}},83421:(e,t,n)=>{n.d(t,{Z:()=>p});var r=n(32735),a=n(54610),i=n(4594),o=n(67453),l=n(99742);const c={left:"vIypY",leftTextImage:"YViNj",right:"MkD4u",blur:"X6mCh",imageContainer:"bc7kz",imagePosition:"JOhEj",image:"Ef2QR",thumbnail:"Gdurb",tallposter:"fjVNK",cover:"o3j31",linksContainer:"AT9Dk"};function s(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,a,i,o,l=[],c=!0,s=!1;try{if(i=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;c=!1}else for(;!(c=(r=i.call(n)).done)&&(l.push(r.value),l.length!==t);c=!0);}catch(e){s=!0,a=e}finally{try{if(!c&&null!=n.return&&(o=n.return(),Object(o)!==o))return}finally{if(s)throw a}}return l}}(e,t)||function(e,t){if(e){if("string"==typeof e)return u(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?u(e,t):void 0}}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function u(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}var m=[{bgUrl:l.W.LaunchPad.BG_1},{bgUrl:l.W.LaunchPad.BG_2},{bgUrl:l.W.LaunchPad.BG_3},{bgUrl:l.W.LaunchPad.BG_4},{bgUrl:l.W.LaunchPad.BG_5}];function d(e){switch(e){case i.E.Video:case i.E.Interactive:case i.E.Clip:return c.thumbnail;case i.E.Subject:case i.E.Playlist:return c.cover;case i.E.Series:return c.tallposter;default:return""}}function p(e){var t,n=s(r.useState(!1),2),i=n[0],l=n[1],u=s(r.useState(""),2),p=u[0],g=u[1],f=s(r.useState(""),2),v=f[0],b=f[1],h=o.j.createUrl(e.imageUrl,{size:a.h2.Large}),y=m;return r.useEffect((function(){if(!h&&y&&0!==y.length){var e,t=(e=y)[Math.floor(Math.random()*e.length)];t.bgUrl&&g(t.bgUrl),t.textUrl&&b(t.textUrl)}}),[]),r.useEffect((function(){if(h){var e=new Image;return e.onload=function(){return l(!0)},e.src=h,function(){return e.onload=null}}}),[]),r.createElement("div",{className:"d-flex"},e.leftComponent?e.leftComponent():r.createElement("div",{className:"".concat(c.left," bg-light"),style:{backgroundImage:"url('".concat(p,"')")}},v&&r.createElement("div",{className:c.leftTextImage,style:{backgroundImage:"url('".concat(v,"')")}}),i&&r.createElement(r.Fragment,null,r.createElement("div",{className:c.blur,style:{backgroundImage:"url('".concat(h,"')")}}),r.createElement("div",{className:"".concat(c.imageContainer," ").concat(d(e.objectType))},r.createElement("div",{className:c.imagePosition},r.createElement("img",{className:c.image,src:h,alt:e.title}))))),r.createElement("div",{className:"".concat(c.right," bg-white d-flex flex-column")},r.createElement("div",{className:"position-absolute d-flex align-items-center ".concat(c.linksContainer)},null===(t=e.links)||void 0===t?void 0:t.map((function(e,t){return e.hide?r.createElement(r.Fragment,{key:t}):r.createElement("a",{key:t,href:e.url,className:"info-link fw-semibold",onClick:e.onClick},e.text)}))),e.children))}}}]);
2
+ //# sourceMappingURL=823-ad4345f865-lite.chunk.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scripts/823-ad4345f865-lite.chunk.js","mappings":"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","sources":["file:///app/packages/libs/shared/src/apps/sign-up/components/general/global-idps/global-idps.scss","file:///app/packages/libs/shared/src/apps/sign-up/components/general/global-idps/GlobalIdps.tsx","file:///app/packages/projects/lite/src/apps/launchpad/components/sign-in-buttons/SignInButtons.tsx","file:///app/packages/projects/lite/src/apps/launchpad/views/login-landing/login-landing.scss","file:///app/packages/projects/lite/src/apps/launchpad/views/login-landing/LoginLandingView.tsx","file:///app/packages/projects/lite/src/apps/sign-up/hooks/useGeoLocation.ts","file:///app/packages/projects/lite/src/apps/sign-up/hooks/useTrialAppLink.tsx","file:///app/packages/projects/lite/src/shared/components/launchpad/launchpad.scss","file:///app/packages/projects/lite/src/shared/components/launchpad/Launchpad.tsx"],"sourcesContent":["// extracted by mini-css-extract-plugin\nexport default {\"idpButton\":\"FDoJA\",\"idpImage\":\"bjN_j\",\"divider\":\"FfyN0\"};","import React from 'react';\n\nimport { HashObject } from 'libs/analytics/interfaces';\nimport { AttributionHelper } from 'libs/analytics/utils/AttributionHelper';\nimport { UtmHelper } from 'libs/analytics/utils/UtmHelper';\n\nimport { LocalityHelper } from 'libs/shared/apps/sign-up/helpers/LocalityHelper';\nimport { IdentityProvider } from 'libs/shared/apps/sign-up/interfaces/IdentityProvider';\nimport { GeoLocation } from 'libs/shared/interfaces/responses/GeoLocation';\n\nimport styles from './global-idps.scss';\n\nconst US_ONLY_IDPS: IdentityProvider[] = [\n {\n name: 'ClassLink',\n logoUrl: 'https://img.clickviewapp.com/v2/logos/ZA2ew5',\n url: '/login?idp=classlink'\n },\n {\n name: 'Clever',\n logoUrl: 'https://img.clickviewapp.com/v2/logos/LqlKgd',\n url: '/login?idp=clever'\n }\n];\n\nconst GLOBAL_IDPS: IdentityProvider[] = [\n {\n name: 'Google',\n logoUrl: 'https://img.clickviewapp.com/v2/logos/l5x0jL',\n url: '/login?idp=google'\n },\n {\n name: 'Microsoft',\n logoUrl: 'https://img.clickviewapp.com/v2/logos/xAxGPP',\n url: '/login?idp=microsoft'\n }\n];\n\ninterface GlobalIdpButtonProps {\n idp: IdentityProvider;\n /**\n * Because rendering globalIdps is conditional. We have a \"Don't have an account\" link at the bottom\n * which uses margin top. So the last item in this view must not have a margin bottom. - Sha\n */\n last?: boolean;\n onClick?: (idp: IdentityProvider) => void;\n}\n\nfunction getAttributionParams() {\n const params: HashObject = {};\n \n const encodedReferrer = AttributionHelper.getEncodedAttributionData();\n if (encodedReferrer)\n params.r = encodedReferrer;\n\n const utms = UtmHelper.getUtmParameters();\n if (utms)\n params.utms = utms;\n\n return params;\n}\n\nexport function GlobalIdpButton(props: GlobalIdpButtonProps): React.ReactElement {\n const {\n idp,\n last\n } = props;\n\n function onClick(): void {\n if (props.onClick) {\n props.onClick(idp);\n return;\n }\n\n const currentPathAndQuery = window.location.pathname + window.location.search;\n const attributionData = JSON.stringify(getAttributionParams());\n\n /**\n * Intentionally not using LocationUtils as to not bring a large number of dependencies into Auth - Sha\n */\n window.location.href = idp.url\n + '&redirectUrl=' + encodeURIComponent(currentPathAndQuery)\n + '&attribution=' + encodeURIComponent(attributionData);\n }\n\n return (\n <button\n className={`btn btn-lg btn-outline-dark w-100 ${last ? '' : 'mb-3'} ${styles.idpButton}`}\n onClick={onClick}\n >\n {idp.logoUrl && <img src={idp.logoUrl} className={styles.idpImage} />}\n Continue with {idp.name}\n </button>\n );\n}\n\ninterface AuthIdpProps {\n idps: IdentityProvider[];\n onClick: (idp: IdentityProvider) => void;\n className?: string;\n}\n\ninterface LiteIdpProps {\n geoLocation: GeoLocation;\n className?: string;\n}\n\ntype GlobalIdpsProps = AuthIdpProps | LiteIdpProps\n\nexport function GlobalIdps(props: GlobalIdpsProps): JSX.Element {\n let idps = 'idps' in props ? props.idps : null;\n\n if (!idps?.length && 'geoLocation' in props) {\n idps = [...GLOBAL_IDPS];\n\n if (LocalityHelper.isCountryCodeUS(props.geoLocation?.countryCode))\n idps.unshift(...US_ONLY_IDPS);\n }\n\n return (\n <div className={`${props.className ? props.className : ''}`}>\n <div className={`my-3 border-bottom position-relative ${styles.divider}`}></div>\n {idps.map((p, i) => (\n <GlobalIdpButton idp={p} key={i} onClick={'onClick' in props ? props.onClick : null} />\n ))}\n </div>\n );\n}","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { HashObject } from 'libs/analytics/interfaces';\n\nimport { GlobalIdps } from 'libs/shared/apps/sign-up/components/general/global-idps/GlobalIdps';\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { GeoLocation } from 'libs/shared/interfaces/responses/GeoLocation';\n\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\n\nconst namespace = 'launchpad.signInButtons';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface SignInButtonsProps {\n geoLocation: GeoLocation;\n customerId: string;\n skipPrompt: boolean;\n showJoinCode: boolean;\n redirectUrl: string;\n pageAppLinkString: string;\n showSignUp: boolean;\n}\n\nexport function SignInButtons(props: SignInButtonsProps): JSX.Element {\n React.useEffect(() => {\n if (!props.skipPrompt)\n return;\n\n Core.LocationUtils.PageLoad(Core.AppLinkHelper.getHref(appLink));\n }, []);\n\n function getAppLink(): Core.AppLink {\n const currentQuery = Core.LocationUtils.GetQuery();\n const params: HashObject = {};\n\n /**\n * Add customerId to the login url and remove it from the redirect url\n */\n if (props.customerId) {\n params.customerId = props.customerId;\n delete currentQuery.customerId;\n }\n\n /**\n * Remove skip prompt from the return url\n */\n if (props.skipPrompt)\n delete currentQuery.skipPrompt;\n\n if (props.redirectUrl) {\n params.redirectUrl = props.redirectUrl;\n } else {\n const serializedQuery = Core.LocationUtils.SerializeQueryParams(currentQuery);\n params.redirectUrl = Core.LocationUtils.GetCurrentPath() + (serializedQuery ? ('?' + serializedQuery) : '');\n }\n\n if (props.showSignUp)\n params.showSignUp = true;\n\n return {\n application: AppChannels.DEFAULT,\n action: Actions.Default.LOG_IN,\n params\n };\n }\n\n const appLink = getAppLink();\n\n return (\n <>\n <AppLink\n className='btn btn-lg btn-dark w-100 mt-4'\n appLink={appLink}\n >\n <Text namespace={namespace} phrase={props.pageAppLinkString ? 'signInToWatch' : 'signIn'} />\n </AppLink>\n {props.showJoinCode ?\n <AppLink\n className='btn btn-link info-link btn-lg w-100 mt-2'\n appLink={{\n application: AppChannels.LAUNCHPAD,\n action: Actions.Launchpad.JOIN_CLASSROOM_PROMPT\n }}\n >\n {getPhrase('enterCode')}\n </AppLink> :\n <>\n <AppLink\n className='btn btn-lg btn-outline-dark w-100 mt-3'\n appLink={{\n application: AppChannels.LAUNCHPAD,\n action: Actions.SignUp.SIGN_UP,\n params: { pageAppLinkString: props.pageAppLinkString }\n }}\n >\n {getPhrase('signUp')}\n </AppLink>\n <GlobalIdps geoLocation={props.geoLocation} />\n </>\n }\n </>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"logo\":\"Je2Pi\",\"formContainer\":\"MfLVl\"};","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Flight } from 'libs/common/flight';\n\nimport { LocationContext } from 'libs/analytics/interfaces';\n\nimport { ClickViewLogo } from 'libs/shared/components/svgs/clickview-logo/ClickViewLogo';\nimport { VideoSubText } from 'libs/shared/components/video-sub-text/VideoSubText';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { ClipRequests } from 'libs/shared/flight-requests/ClipRequests';\nimport { InteractiveRequests } from 'libs/shared/flight-requests/InteractiveRequests';\nimport { VideoRequests } from 'libs/shared/flight-requests/VideoRequests';\nimport { VideoTypes } from 'libs/shared/interfaces';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\nimport { Launchpad } from 'shared/components/launchpad/Launchpad';\nimport { DeepLinkViewModel, mapMasterTypeToDeepLinkApp, useDeepLinks } from 'shared/hooks/useDeepLinks';\n\nimport { SignInButtons } from 'apps/launchpad/components/sign-in-buttons/SignInButtons';\nimport { useGeoLocation } from 'apps/sign-up/hooks/useGeoLocation';\nimport { useTrialAppLink } from 'apps/sign-up/hooks/useTrialAppLink';\n\nimport styles from './login-landing.scss';\n\nconst namespace = 'classrooms.loginLanding';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nfunction useFetchObject(objectId: string, objectType: MasterType): Flight.Response<VideoTypes> {\n function getRequest(): Flight.Request {\n switch (objectType) {\n case MasterType.Video:\n return VideoRequests.publicVideo(objectId);\n case MasterType.Interactive:\n return InteractiveRequests.publicInteractiveMetadata(objectId);\n case MasterType.Clip:\n return ClipRequests.publicClip(objectId);\n default:\n return null;\n }\n }\n\n return Flight.useBasicFetch(getRequest());\n}\n\ninterface LoginLandingProps {\n skipPrompt: boolean;\n showJoinCode: boolean;\n customerId: string;\n showSignUp: boolean;\n\n objectType?: MasterType;\n objectId?: string;\n}\n\nexport function LoginLandingView(props: LoginLandingProps): React.ReactElement {\n function getInitialDeepLink(): DeepLinkViewModel {\n return {\n id: props.objectId,\n app: mapMasterTypeToDeepLinkApp(props.objectType)\n };\n }\n\n const geoLocation = useGeoLocation();\n\n const {\n deepLink,\n showDeepLink,\n onClickDeepLink\n } = useDeepLinks(getInitialDeepLink(), LocationContext.Launchpad);\n\n const { trialAppLinkString } = useTrialAppLink();\n\n const obj = useFetchObject(props.objectId, props.objectType);\n\n if (props.skipPrompt || obj.isFetching)\n return <></>;\n\n return (\n <Launchpad\n title={obj.data?.name}\n imageUrl={VideoHelper.getThumbnail(obj.data)?.url}\n objectType={props.objectType}\n links={[{\n text: getPhrase('openInApp'),\n url: deepLink,\n hide: !showDeepLink,\n onClick: onClickDeepLink\n }]}\n >\n <div className={`${styles.formContainer} m-auto`}>\n <div className={`${styles.logo} mb-4 mx-auto`}>\n <ClickViewLogo />\n </div>\n {!!obj.data?.name &&\n <h1 className='h3'>\n {VideoHelper.isVideo(obj.data) &&\n <VideoSubText type='series' video={obj.data} analyticsOptions={{}} size='sm' />}\n {obj.data.name}\n </h1>\n }\n {obj.data?.description &&\n <p className='mb-0 clamp-3'>{obj.data.description}</p>\n }\n\n <SignInButtons\n geoLocation={geoLocation}\n customerId={props.customerId}\n skipPrompt={props.skipPrompt}\n showJoinCode={props.showJoinCode}\n redirectUrl={null}\n pageAppLinkString={trialAppLinkString}\n showSignUp={props.showSignUp}\n />\n </div>\n </Launchpad>\n );\n}","import { LocationUtils } from 'libs/common/backbone/core';\nimport { Flight } from 'libs/common/flight';\n\nimport { ConfigRequests } from 'libs/shared/flight-requests/ConfigRequests';\nimport { GeoLocation } from 'libs/shared/interfaces/responses/GeoLocation';\n\nconst FALLBACK_COUNTRY: GeoLocation = {\n countryCode: 'us',\n isFallback: true\n};\n\nexport function useGeoLocation(): GeoLocation {\n const geoLocation = Flight.useBasicFetch<GeoLocation>(ConfigRequests.geoLocation());\n\n const countryCode = LocationUtils.GetQuery()?.countryCode?.toLowerCase();\n if (countryCode)\n return { countryCode };\n\n if (geoLocation.hasCompleted && !geoLocation.data)\n return FALLBACK_COUNTRY;\n\n return geoLocation.data;\n}","import { useViewModel } from 'libs/common/react/hooks/UseViewModel';\n\nimport { ViewModelKeys } from 'shared/constants/LiteViewModels';\nimport { DeepLinkViewModel } from 'shared/hooks/useDeepLinks';\n\nexport function useTrialAppLink() {\n const [viewModel] = useViewModel<DeepLinkViewModel>(ViewModelKeys.OPEN_IN_APP_DATA);\n\n function getTrialAppLinkString() {\n if (!viewModel) {\n return;\n }\n const validApps = [ 'videos', 'clips', 'series', 'playlists', 'topics', 'interactives' ];\n if (!validApps.includes(viewModel.app)) {\n return;\n }\n\n const id = viewModel.id;\n switch (viewModel.app) {\n case 'videos':\n return `video:${id}`;\n case 'playlists':\n return `playlist:${id}`;\n case 'series':\n return `series:${id}`;\n case 'topics':\n return `topic:${id}`;\n case 'interactives':\n return `interactive:${id}`;\n case 'clips':\n return `clip:${id}`;\n }\n }\n\n return {\n trialAppLinkString: getTrialAppLinkString()\n };\n}","// extracted by mini-css-extract-plugin\nexport default {\"left\":\"vIypY\",\"leftTextImage\":\"YViNj\",\"right\":\"MkD4u\",\"blur\":\"X6mCh\",\"imageContainer\":\"bc7kz\",\"imagePosition\":\"JOhEj\",\"image\":\"Ef2QR\",\"thumbnail\":\"Gdurb\",\"tallposter\":\"fjVNK\",\"cover\":\"o3j31\",\"linksContainer\":\"AT9Dk\"};","import React from 'react';\n\nimport { ImageSize } from 'libs/shared/enums/Images';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { ImageHelper } from 'libs/shared/utils/ImageHelper';\n\nimport { ImageUrls } from 'shared/constants/ImageUrls';\n\nimport styles from './launchpad.scss';\n\nconst FALLBACK_IMAGES = [\n {\n bgUrl: ImageUrls.LaunchPad.BG_1\n },\n {\n bgUrl: ImageUrls.LaunchPad.BG_2\n },\n {\n bgUrl: ImageUrls.LaunchPad.BG_3\n },\n {\n bgUrl: ImageUrls.LaunchPad.BG_4\n },\n {\n bgUrl: ImageUrls.LaunchPad.BG_5\n }\n];\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nconst XMAS_URLS: LaunchImage[] = [\n {\n bgUrl: '/images/launchpad/xmas/2024-promo1-bg.png'\n },\n {\n bgUrl: '/images/launchpad/xmas/2024-promo2-bg.png'\n },\n {\n bgUrl: '/images/launchpad/xmas/2024-promo3-bg.png'\n },\n {\n bgUrl: '/images/launchpad/xmas/2024-promo4-bg.png'\n },\n {\n bgUrl: '/images/launchpad/xmas/2024-promo5-bg.png'\n }\n];\n\nfunction mapObjectTypeToImageClass(objectType: MasterType): string {\n switch (objectType) {\n case MasterType.Video:\n case MasterType.Interactive:\n case MasterType.Clip:\n return styles.thumbnail;\n\n case MasterType.Subject:\n case MasterType.Playlist:\n return styles.cover;\n\n case MasterType.Series:\n return styles.tallposter;\n\n default:\n return '';\n }\n}\n\ninterface LaunchpadLink {\n url: string;\n text: string;\n onClick?: () => void;\n hide?: boolean;\n}\n\ninterface LaunchpadProps {\n objectType?: MasterType;\n title?: string;\n imageUrl?: string;\n links?: LaunchpadLink[];\n leftComponent?: () => JSX.Element;\n}\n\ninterface LaunchImage {\n bgUrl: string;\n textUrl?: string;\n}\n\nfunction getRandomImage(urlLists: LaunchImage[]): LaunchImage {\n return urlLists[Math.floor(Math.random() * urlLists.length)];\n}\n\nexport function Launchpad(props: React.PropsWithChildren<LaunchpadProps>): JSX.Element {\n const [ showImage, setShowImage ] = React.useState(false);\n const [ image, setImage ] = React.useState<string>('');\n const [ textImage, setTextImage ] = React.useState<string>('');\n\n const imageUrl = ImageHelper.createUrl(props.imageUrl, { size: ImageSize.Large });\n const IMAGE_URLS = FALLBACK_IMAGES;\n\n React.useEffect(() => {\n if (imageUrl || !IMAGE_URLS || IMAGE_URLS.length === 0)\n return;\n\n const image = getRandomImage(IMAGE_URLS);\n\n if (image.bgUrl) {\n setImage(image.bgUrl);\n }\n\n if (image.textUrl) {\n setTextImage(image.textUrl);\n }\n }, []);\n\n React.useEffect(() => {\n if (!imageUrl)\n return;\n\n const img = new Image();\n img.onload = () => setShowImage(true);\n img.src = imageUrl;\n return () => img.onload = null;\n }, []);\n\n return (\n <div className='d-flex'>\n { props.leftComponent ?\n props.leftComponent()\n :\n <div className={`${styles.left} bg-light`} style={{ backgroundImage: `url('${image}')` }}>\n { textImage && (\n <div className={styles.leftTextImage} style={{ backgroundImage: `url('${textImage}')` }} />\n )}\n \n {showImage &&\n <>\n <div className={styles.blur} style={{ backgroundImage: `url('${imageUrl}')` }} />\n <div className={`${styles.imageContainer} ${mapObjectTypeToImageClass(props.objectType)}`}>\n <div className={styles.imagePosition}>\n <img className={styles.image} src={imageUrl} alt={props.title} />\n </div>\n </div>\n </>\n }\n </div>\n }\n <div className={`${styles.right} bg-white d-flex flex-column`}>\n <div className={`position-absolute d-flex align-items-center ${styles.linksContainer}`}>\n {props.links?.map((link, key) => {\n if (link.hide)\n return <React.Fragment key={key}></React.Fragment>;\n\n return (\n <a key={key} href={link.url} className='info-link fw-semibold' onClick={link.onClick}>\n {link.text}\n </a>\n );\n })}\n </div>\n\n {props.children}\n </div>\n </div>\n );\n}"],"names":["US_ONLY_IDPS","name","logoUrl","url","GLOBAL_IDPS","GlobalIdpButton","props","idp","last","className","onClick","currentPathAndQuery","window","location","pathname","search","attributionData","JSON","stringify","params","encodedReferrer","AttributionHelper","r","utms","UtmHelper","getAttributionParams","href","encodeURIComponent","src","GlobalIdps","idps","length","LocalityHelper","geoLocation","countryCode","unshift","map","p","i","key","namespace","getPhrase","SignInButtons","skipPrompt","appLink","currentQuery","customerId","redirectUrl","serializedQuery","showSignUp","application","action","getAppLink","phrase","pageAppLinkString","showJoinCode","LanguageService","LoginLandingView","objectId","objectType","useGeoLocation","useDeepLinks","id","app","deepLink","showDeepLink","onClickDeepLink","trialAppLinkString","useTrialAppLink","obj","MasterType","VideoRequests","InteractiveRequests","ClipRequests","getRequest","isFetching","Launchpad","title","data","imageUrl","VideoHelper","links","text","hide","ClickViewLogo","VideoSubText","type","video","analyticsOptions","size","description","FALLBACK_COUNTRY","isFallback","toLowerCase","hasCompleted","viewModel","includes","getTrialAppLinkString","FALLBACK_IMAGES","bgUrl","ImageUrls","mapObjectTypeToImageClass","showImage","setShowImage","image","setImage","textImage","setTextImage","ImageHelper","IMAGE_URLS","urlLists","Math","floor","random","textUrl","img","Image","onload","leftComponent","style","backgroundImage","alt","link","children"],"sourceRoot":""}