@clickview/lite 0.57.2-rc.2 → 0.57.3-rc.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (90) hide show
  1. package/dist/bundles.json +1 -1
  2. package/dist/css/{3137-lite-7da84a8e68.chunk.css → 3137-lite-8afb370875.chunk.css} +1 -1
  3. package/dist/scripts/{1125-a24f83a3f3-lite.chunk.js → 1125-0e659106d9-lite.chunk.js} +2 -2
  4. package/dist/scripts/{1125-a24f83a3f3-lite.chunk.js.map → 1125-0e659106d9-lite.chunk.js.map} +1 -1
  5. package/dist/scripts/{1340-3f5e7d4623-lite.chunk.js → 1340-c78a7acd0d-lite.chunk.js} +2 -2
  6. package/dist/scripts/{1340-3f5e7d4623-lite.chunk.js.map → 1340-c78a7acd0d-lite.chunk.js.map} +1 -1
  7. package/dist/scripts/{154-81a4eabaae-lite.chunk.js → 154-fa5b45d1bf-lite.chunk.js} +2 -2
  8. package/dist/scripts/{154-81a4eabaae-lite.chunk.js.map → 154-fa5b45d1bf-lite.chunk.js.map} +1 -1
  9. package/dist/scripts/{1913-6a6bb3f16f-lite.chunk.js → 1913-6a7d99b96f-lite.chunk.js} +2 -2
  10. package/dist/scripts/{1913-6a6bb3f16f-lite.chunk.js.map → 1913-6a7d99b96f-lite.chunk.js.map} +1 -1
  11. package/dist/scripts/1958-cf5dd56576-lite.chunk.js +2 -0
  12. package/dist/scripts/{1958-31e6049ac7-lite.chunk.js.map → 1958-cf5dd56576-lite.chunk.js.map} +1 -1
  13. package/dist/scripts/{209-4a322eae44-lite.chunk.js → 209-396b9a7f13-lite.chunk.js} +2 -2
  14. package/dist/scripts/{209-4a322eae44-lite.chunk.js.map → 209-396b9a7f13-lite.chunk.js.map} +1 -1
  15. package/dist/scripts/2182-a5652609bb-lite.chunk.js +2 -0
  16. package/dist/scripts/2182-a5652609bb-lite.chunk.js.map +1 -0
  17. package/dist/scripts/{2208-a9d679d40c-lite.chunk.js → 2208-5fed507ca8-lite.chunk.js} +2 -2
  18. package/dist/scripts/{2208-a9d679d40c-lite.chunk.js.map → 2208-5fed507ca8-lite.chunk.js.map} +1 -1
  19. package/dist/scripts/{2402-2d435f7027-lite.chunk.js → 2402-300aa81eaf-lite.chunk.js} +2 -2
  20. package/dist/scripts/{2402-2d435f7027-lite.chunk.js.map → 2402-300aa81eaf-lite.chunk.js.map} +1 -1
  21. package/dist/scripts/{3137-51febcedd6-lite.chunk.js → 3137-00d0d09d82-lite.chunk.js} +2 -2
  22. package/dist/scripts/{3137-51febcedd6-lite.chunk.js.map → 3137-00d0d09d82-lite.chunk.js.map} +1 -1
  23. package/dist/scripts/338-5c6ffa41bb-lite.chunk.js +3 -0
  24. package/dist/scripts/338-5c6ffa41bb-lite.chunk.js.map +1 -0
  25. package/dist/scripts/{3962-6bfcebace6-lite.chunk.js → 3962-eaa18d5ab6-lite.chunk.js} +2 -2
  26. package/dist/scripts/{3962-6bfcebace6-lite.chunk.js.map → 3962-eaa18d5ab6-lite.chunk.js.map} +1 -1
  27. package/dist/scripts/{4395-389855e87f-lite.chunk.js → 4395-9d987fe2e6-lite.chunk.js} +2 -2
  28. package/dist/scripts/{4395-389855e87f-lite.chunk.js.map → 4395-9d987fe2e6-lite.chunk.js.map} +1 -1
  29. package/dist/scripts/{4591-1e137b9a3f-lite.chunk.js → 4591-19ee265d34-lite.chunk.js} +2 -2
  30. package/dist/scripts/4591-19ee265d34-lite.chunk.js.map +1 -0
  31. package/dist/scripts/{467-baec908c73-lite.chunk.js → 467-1550deaaa1-lite.chunk.js} +2 -2
  32. package/dist/scripts/{467-baec908c73-lite.chunk.js.map → 467-1550deaaa1-lite.chunk.js.map} +1 -1
  33. package/dist/scripts/5157-9396b0580d-lite.chunk.js +2 -0
  34. package/dist/scripts/{5157-b1d38e123c-lite.chunk.js.map → 5157-9396b0580d-lite.chunk.js.map} +1 -1
  35. package/dist/scripts/{528-0e18ce97a9-lite.chunk.js → 528-3120366abc-lite.chunk.js} +2 -2
  36. package/dist/scripts/{528-0e18ce97a9-lite.chunk.js.map → 528-3120366abc-lite.chunk.js.map} +1 -1
  37. package/dist/scripts/{5376-6e993d6097-lite.chunk.js → 5376-38456da0db-lite.chunk.js} +3 -3
  38. package/dist/scripts/{5376-6e993d6097-lite.chunk.js.map → 5376-38456da0db-lite.chunk.js.map} +1 -1
  39. package/dist/scripts/{6263-c6ce662fc3-lite.chunk.js → 6263-c665ac8df6-lite.chunk.js} +2 -2
  40. package/dist/scripts/{6263-c6ce662fc3-lite.chunk.js.map → 6263-c665ac8df6-lite.chunk.js.map} +1 -1
  41. package/dist/scripts/{6290-dd18f6a50a-lite.chunk.js → 6290-a295d749c3-lite.chunk.js} +2 -2
  42. package/dist/scripts/{6290-dd18f6a50a-lite.chunk.js.map → 6290-a295d749c3-lite.chunk.js.map} +1 -1
  43. package/dist/scripts/{6480-9f3dc79b38-lite.chunk.js → 6480-03513bbd54-lite.chunk.js} +2 -2
  44. package/dist/scripts/{6480-9f3dc79b38-lite.chunk.js.map → 6480-03513bbd54-lite.chunk.js.map} +1 -1
  45. package/dist/scripts/{7112-ea440dfba0-lite.chunk.js → 7112-2e77a3e7af-lite.chunk.js} +3 -3
  46. package/dist/scripts/{7112-ea440dfba0-lite.chunk.js.map → 7112-2e77a3e7af-lite.chunk.js.map} +1 -1
  47. package/dist/scripts/{7178-c592da7054-lite.chunk.js → 7178-f3794c1ee5-lite.chunk.js} +2 -2
  48. package/dist/scripts/{7178-c592da7054-lite.chunk.js.map → 7178-f3794c1ee5-lite.chunk.js.map} +1 -1
  49. package/dist/scripts/{775-b6cb8f1808-lite.chunk.js → 775-d6b0a7afbd-lite.chunk.js} +3 -3
  50. package/dist/scripts/{775-b6cb8f1808-lite.chunk.js.map → 775-d6b0a7afbd-lite.chunk.js.map} +1 -1
  51. package/dist/scripts/823-0a1356d38c-lite.chunk.js +2 -0
  52. package/dist/scripts/823-0a1356d38c-lite.chunk.js.map +1 -0
  53. package/dist/scripts/{8489-7779fd40b3-lite.chunk.js → 8489-88ab052e8c-lite.chunk.js} +3 -3
  54. package/dist/scripts/{8489-7779fd40b3-lite.chunk.js.map → 8489-88ab052e8c-lite.chunk.js.map} +1 -1
  55. package/dist/scripts/{8722-095bf62b96-lite.chunk.js → 8722-ed6103f3e4-lite.chunk.js} +2 -2
  56. package/dist/scripts/{8722-095bf62b96-lite.chunk.js.map → 8722-ed6103f3e4-lite.chunk.js.map} +1 -1
  57. package/dist/scripts/{8905-46d89811eb-lite.chunk.js → 8905-799dc47805-lite.chunk.js} +2 -2
  58. package/dist/scripts/{8905-46d89811eb-lite.chunk.js.map → 8905-799dc47805-lite.chunk.js.map} +1 -1
  59. package/dist/scripts/{8935-2bb61f918c-lite.chunk.js → 8935-38d780c423-lite.chunk.js} +3 -3
  60. package/dist/scripts/{8935-2bb61f918c-lite.chunk.js.map → 8935-38d780c423-lite.chunk.js.map} +1 -1
  61. package/dist/scripts/{9118-20d1a60a52-lite.chunk.js → 9118-c769eeb11a-lite.chunk.js} +2 -2
  62. package/dist/scripts/{9118-20d1a60a52-lite.chunk.js.map → 9118-c769eeb11a-lite.chunk.js.map} +1 -1
  63. package/dist/scripts/{9230-77ff8b16ac-lite.chunk.js → 9230-1ffbf1807e-lite.chunk.js} +3 -3
  64. package/dist/scripts/{9230-77ff8b16ac-lite.chunk.js.map → 9230-1ffbf1807e-lite.chunk.js.map} +1 -1
  65. package/dist/scripts/{9614-2bca60768e-lite.chunk.js → 9614-6e5babb89a-lite.chunk.js} +2 -2
  66. package/dist/scripts/{9614-2bca60768e-lite.chunk.js.map → 9614-6e5babb89a-lite.chunk.js.map} +1 -1
  67. package/dist/scripts/{9719-0e59bf30a5-lite.chunk.js → 9719-28c14a0783-lite.chunk.js} +3 -3
  68. package/dist/scripts/{9719-0e59bf30a5-lite.chunk.js.map → 9719-28c14a0783-lite.chunk.js.map} +1 -1
  69. package/dist/scripts/{bundle-fb8200eefd.min.js → bundle-b25c09d3e8.min.js} +3 -3
  70. package/dist/scripts/{bundle-fb8200eefd.min.js.map → bundle-b25c09d3e8.min.js.map} +1 -1
  71. package/package.json +1 -1
  72. package/dist/scripts/1958-31e6049ac7-lite.chunk.js +0 -2
  73. package/dist/scripts/2182-aa9aca3196-lite.chunk.js +0 -2
  74. package/dist/scripts/2182-aa9aca3196-lite.chunk.js.map +0 -1
  75. package/dist/scripts/338-8b4fba84c0-lite.chunk.js +0 -3
  76. package/dist/scripts/338-8b4fba84c0-lite.chunk.js.map +0 -1
  77. package/dist/scripts/4591-1e137b9a3f-lite.chunk.js.map +0 -1
  78. package/dist/scripts/5157-b1d38e123c-lite.chunk.js +0 -2
  79. package/dist/scripts/823-697bd66d4d-lite.chunk.js +0 -2
  80. package/dist/scripts/823-697bd66d4d-lite.chunk.js.map +0 -1
  81. /package/dist/scripts/{3137-51febcedd6-lite.chunk.js.LICENSE.txt → 3137-00d0d09d82-lite.chunk.js.LICENSE.txt} +0 -0
  82. /package/dist/scripts/{338-8b4fba84c0-lite.chunk.js.LICENSE.txt → 338-5c6ffa41bb-lite.chunk.js.LICENSE.txt} +0 -0
  83. /package/dist/scripts/{5376-6e993d6097-lite.chunk.js.LICENSE.txt → 5376-38456da0db-lite.chunk.js.LICENSE.txt} +0 -0
  84. /package/dist/scripts/{7112-ea440dfba0-lite.chunk.js.LICENSE.txt → 7112-2e77a3e7af-lite.chunk.js.LICENSE.txt} +0 -0
  85. /package/dist/scripts/{775-b6cb8f1808-lite.chunk.js.LICENSE.txt → 775-d6b0a7afbd-lite.chunk.js.LICENSE.txt} +0 -0
  86. /package/dist/scripts/{8489-7779fd40b3-lite.chunk.js.LICENSE.txt → 8489-88ab052e8c-lite.chunk.js.LICENSE.txt} +0 -0
  87. /package/dist/scripts/{8935-2bb61f918c-lite.chunk.js.LICENSE.txt → 8935-38d780c423-lite.chunk.js.LICENSE.txt} +0 -0
  88. /package/dist/scripts/{9230-77ff8b16ac-lite.chunk.js.LICENSE.txt → 9230-1ffbf1807e-lite.chunk.js.LICENSE.txt} +0 -0
  89. /package/dist/scripts/{9719-0e59bf30a5-lite.chunk.js.LICENSE.txt → 9719-28c14a0783-lite.chunk.js.LICENSE.txt} +0 -0
  90. /package/dist/scripts/{bundle-fb8200eefd.min.js.LICENSE.txt → bundle-b25c09d3e8.min.js.LICENSE.txt} +0 -0
@@ -1,3 +1,3 @@
1
- /*! For license information please see 5376-6e993d6097-lite.chunk.js.LICENSE.txt */
2
- "use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[5376],{49935:(e,r,t)=>{t.d(r,{Oo:()=>h,b2:()=>v});var n=t(32735),o=t(23481),i=t(36848),a=t(86764),s=t(3747),c=t(5859),u=t(35223),l=t(83914);function m(e,r){return function(e){if(Array.isArray(e))return e}(e)||function(e,r){var t=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=t){var n,o,i,a,s=[],c=!0,u=!1;try{if(i=(t=t.call(e)).next,0===r){if(Object(t)!==t)return;c=!1}else for(;!(c=(n=i.call(t)).done)&&(s.push(n.value),s.length!==r);c=!0);}catch(e){u=!0,o=e}finally{try{if(!c&&null!=t.return&&(a=t.return(),Object(a)!==a))return}finally{if(u)throw o}}return s}}(e,r)||function(e,r){if(e){if("string"==typeof e)return d(e,r);var t={}.toString.call(e).slice(8,-1);return"Object"===t&&e.constructor&&(t=e.constructor.name),"Map"===t||"Set"===t?Array.from(e):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?d(e,r):void 0}}(e,r)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function d(e,r){(null==r||r>e.length)&&(r=e.length);for(var t=0,n=Array(r);t<r;t++)n[t]=e[t];return n}var p=o.T.encloseNamespace("shared.breadcrumbComponent"),f=n.forwardRef((function(e,r){var t=e.breadcrumb,o=t.name,a=t.appLink,s=t.active,c=e.withBackIcon,m=o,d=null;return m.length>48&&(m=o.slice(0,48)+"...",d=o),n.createElement("li",{className:"breadcrumb-item".concat(s?" active":""),title:d},s?n.createElement("strong",null,m):n.createElement(i.F,{appLink:a,ref:r},c&&n.createElement(l.x,{svgName:u.vn.ChevronLeft,size:l.S.Small}),n.createElement("span",{className:c?"ms-2":""},m)))})),h=function(e){var r=e.breadcrumbs,t=(0,s.a)(a.r.XS),o=(null==r?void 0:r.length)||0,i=m(n.useState(!1),2),c=i[0],u=i[1],l=m(n.useState(!1),2),d=l[0],h=l[1],v=n.useRef();if(n.useEffect((function(){var e,t=null!==(e=null==r?void 0:r.reduce((function(e,r){return e+r.name.length}),0))&&void 0!==e?e:0;o>4&&t>64&&u(!0)}),[null==r?void 0:r.length]),n.useLayoutEffect((function(){var e;d&&(null===(e=v.current)||void 0===e||e.focus())}),[v.current,d]),!o||t&&o<2)return n.createElement(n.Fragment,null);if(t)return n.createElement("nav",{"aria-label":"breadcrumb"},n.createElement("ol",{className:"breadcrumb m-0 p-0"},n.createElement(f,{breadcrumb:r[o-2],withBackIcon:!0})));var y=n.createElement(f,{breadcrumb:r[0]}),g=o>2?n.createElement(f,{breadcrumb:r[1]}):n.createElement(n.Fragment,null),b=o>3?n.createElement(f,{breadcrumb:r[o-2]}):n.createElement(n.Fragment,null),E=o>1?n.createElement(f,{breadcrumb:r[o-1]}):n.createElement(n.Fragment,null),w=r.slice(2,o-2);return n.createElement("nav",{"aria-label":"breadcrumb"},n.createElement("ol",{className:"breadcrumb m-0 p-0"},y,g,c?n.createElement("li",{className:"breadcrumb-item"},n.createElement("button",{className:"btn-link",onClick:function(){u(!1),h(!0)},"aria-label":p("expand")},"...")):w.map((function(e,r){return n.createElement(f,{key:r,breadcrumb:e,ref:0===r?v:null})})),b,E))},v=n.memo((function(e){var r=e.numItems,t=void 0===r?3:r;return(0,s.a)(a.r.XS)?n.createElement("div",{className:"partial-loading-background",style:{height:"1.3125rem",width:"6rem"}}):n.createElement("nav",{"aria-label":"breadcrumb"},n.createElement("ol",{className:"breadcrumb m-0 p-0"},c.u.getPartialLoadingItems({numItems:t}).map((function(e,r){var t=e.width;return n.createElement("li",{key:r,className:"breadcrumb-item"},n.createElement("span",{className:"d-inline-block partial-loading-background",style:{width:t},dangerouslySetInnerHTML:{__html:"&nbsp"}}))}))))}))},99705:(e,r,t)=>{var n,o;t.d(r,{b:()=>o}),function(e){e.AddToPlaylist="115005679748",e.EditSsoAccounts="8202508040345",e.LibraryEditor="360001974533",e.VideoAccess="360000153947",e.AddFromOnline="360011718234",e.UploadToLibraryEditor="360012069334",e.PBTErrorCodes="360012421153",e.ManuelReview="360020004534",e.LibraryReview="360000163788"}(n||(n={})),function(e){e.Integrations="4407268725529",e.Classrooms="4405362551833",e.MakeInteractive="4405370510873",e.EditSsoAccounts="8202605666073",e.UploadToLibraryEditor="10672936659865",e.AddFromLite="10671345281561",e.ManageSsoYearGroups="14691130889241",e.ContentReview="18525199576601",e.ContentPermissions="14692125209497",e.AccessSettings="22110291468057",e.ContentGuidelines="24133696186009",e.FoxtelFaq="24133519542169",e.ViviIntegration="23826297956377",e.AppleTvIntegration="25832373739929",e.RssFeed="32567445635097",e.ManageGroupPermissions="35407217335705"}(o||(o={}))},94644:(e,r,t)=>{t.d(r,{r:()=>l});var n=t(50242),o=t(81886),i=t(67058),a=t(14553),s=t(49267),c=t(49075),u={notFound:i.d,forbidden:{rating:a.q,yearLevel:a.q,region:s.a,privacy:a.q},badRequest:c._};function l(e){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},t=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(e){var i;i="number"==typeof e?e:e.status;var a=Object.assign(Object.assign({},u),r);i&&o.Q.Ry.isStatusCodeError(i)&&(i!==n.o.NotFound?i!==n.o.Forbidden?t.badRequest||o.Q.Ry.throw(new a.badRequest):t.forbidden||o.Q.Ry.throw(new a.forbidden.privacy):t.notFound||o.Q.Ry.throw(new a.notFound))}}},91286:(e,r,t)=>{t.d(r,{v:()=>a});var n=t(32735),o=t(94644);function i(e){return e.map((function(e){return e.statusCode})).join(":")}function a(e,r,t){var a=Array.isArray(e)?e:[e];(0,n.useEffect)((function(){a.forEach((function(e){(0,o.r)(e.statusCode,r,t)}))}),[i(a),r,t])}},5859:(e,r,t)=>{function n(e,r){(null==r||r>e.length)&&(r=e.length);for(var t=0,n=Array(r);t<r;t++)n[t]=e[t];return n}t.d(r,{u:()=>i});var o={numItems:5,minWidth:50,maxWidth:100},i={getPartialLoadingItems:function(){var e,r=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=Object.assign(Object.assign({},o),r);return(e=Array(t.numItems),function(e){if(Array.isArray(e))return n(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,r){if(e){if("string"==typeof e)return n(e,r);var t={}.toString.call(e).slice(8,-1);return"Object"===t&&e.constructor&&(t=e.constructor.name),"Map"===t||"Set"===t?Array.from(e):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?n(e,r):void 0}}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()).map((function(){return{width:"".concat(Math.max(Math.floor(Math.random()*t.maxWidth),t.minWidth),"px")}}))}}},81803:(e,r,t)=>{t.d(r,{d:()=>f});var n=t(32735),o=t(81886),i=t(23481),a=t(49935),s=t(22902),c=t(14070),u=t(97291),l=t(96368);function m(e,r){(null==r||r>e.length)&&(r=e.length);for(var t=0,n=Array(r);t<r;t++)n[t]=e[t];return n}var d="settings.settingsLayout",p=function(e){var r=(0,s.T)().hasPermissions,t=(0,l.e)();if(e)return r(e);var n=o.Q.C$.getCurrentAppLink();return n.application!==u.O.SETTINGS||t.some((function(e){return e.modules.some((function(e){return"appLink"in e&&e.appLink.action===n.action}))}))};function f(e){var r,t=p(e.requiredPermissions);if(n.useEffect((function(){t||o.Q.C$.trigger({application:u.O.SETTINGS,action:c.e.Settings.HOME},{replace:!0})}),[t]),!t)return n.createElement(n.Fragment,null);var s,l=e.breadcrumbs.map((function(r,t){return{name:r,appLink:{application:u.O.SETTINGS,action:c.e.Settings.HOME},active:t===e.breadcrumbs.length-1}}));return n.createElement("div",{className:"px-3"},n.createElement("div",{className:"d-flex align-items-center justify-content-between"},n.createElement("h1",{className:"h2"},e.heading),null===(r=e.headingButton)||void 0===r?void 0:r.call(e)),n.createElement("div",{className:"pb-3"},n.createElement(a.Oo,{breadcrumbs:[{name:i.T.getPhrase(d,"settingsBreadcrumb"),appLink:{application:u.O.SETTINGS,action:c.e.Settings.HOME}}].concat((s=l,function(e){if(Array.isArray(e))return m(e)}(s)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(s)||function(e,r){if(e){if("string"==typeof e)return m(e,r);var t={}.toString.call(e).slice(8,-1);return"Object"===t&&e.constructor&&(t=e.constructor.name),"Map"===t||"Set"===t?Array.from(e):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?m(e,r):void 0}}(s)||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.description&&n.createElement(n.Fragment,null,n.createElement("p",null,e.description),n.createElement("hr",null)),e.children)}},15376:(e,r,t)=>{t.r(r),t.d(r,{ManageGroupPermissionsView:()=>ne,TABLE_THEME:()=>re});var n=t(32735),o=t(23481),i=t(83345),a=t(16714),s=t(99705),c=t(89476),u=t(12778),l=t(44230),m=t(81803),d=t(75896),p=t(89965),f=t(83914),h=t(35223);const v={container:"Vxu2N"};function y(e){return n.createElement("div",{className:"".concat(v.container," ").concat(e.className," ").concat(e.isDisabled?"pointer-events-none":"".concat(e.cascadeCheck||e.cascadeUncheck?"opacity-50":""," opacity-50-hover")),onMouseEnter:function(){return e.onHover(e.permission)},onMouseLeave:function(){return e.onHover()}},e.children)}var g,b,E=[a.C.ViewDiscover,a.C.ViewSearch,a.C.UploadVideo],w=[a.C.ViewMoviesTv,a.C.ViewLibraries],N=[].concat(E,w);!function(e){e.Default="Default",e.Allow="Allow",e.Deny="Deny"}(g||(g={})),function(e){e[e.YearGroup=0]="YearGroup"}(b||(b={}));const P={checkbox:"wLkeZ",checkedTransition:"wWiuo"};function A(e){var r,t,o,i,s,c=e.groupPermissions.groupId,u=e.isPermissionEnabled(c,e.permissionName),l=d.m.findWhere(e.groupPermissions.permissions,{permissionName:a.C.ViewRestrictedMode}),m=(null==l?void 0:l.access)===g.Allow,v=E.find((function(r){return r===e.permissionName})),b=m&&(null===(r=e.hoveredPermission)||void 0===r?void 0:r.permissionName)===a.C.ViewRestrictedMode&&(null===(t=e.hoveredPermission)||void 0===t?void 0:t.order)<=e.groupPermissions.order,w=!m&&(null===(o=e.hoveredPermission)||void 0===o?void 0:o.permissionName)===a.C.ViewRestrictedMode&&(null===(i=e.hoveredPermission)||void 0===i?void 0:i.order)>=e.groupPermissions.order;if(v){if(w||m&&!b)return n.createElement(f.x,{svgName:h.vn.Close});if(b||!m&&!w)return n.createElement(f.x,{svgName:h.vn.Tick})}var N=(null===(s=e.hoveredPermission)||void 0===s?void 0:s.permissionName)===e.permissionName,A=N&&e.hoveredPermission.order===e.groupPermissions.order,S=!u&&N&&e.groupPermissions.order>e.hoveredPermission.order,k=u&&N&&e.groupPermissions.order<e.hoveredPermission.order,C=(w||m)&&!b;return n.createElement(y,{permission:{permissionName:e.permissionName,order:e.groupPermissions.order},className:"".concat(P.checkbox," d-block overflow-hidden"),onHover:e.onPermissionHover,cascadeCheck:S,cascadeUncheck:k,isDisabled:C},n.createElement(p.X,{id:"".concat(c,"-").concat(e.permissionName),inputClassName:P.checkedTransition,ariaLabel:"".concat(e.groupPermissions.groupName," ").concat(e.permissionName),onChange:function(){return e.updateGroupPermission(c,e.permissionName,e.groupPermissions.order,u)},checked:(A||S||u)&&!w&&!C,disabled:C}))}var S=t(83523);function k(e){var r,t=e.groupPermissions.groupId,o=a.C.ViewRestrictedMode,i=e.isPermissionEnabled(t,o),s=(null===(r=e.hoveredPermission)||void 0===r?void 0:r.permissionName)===o,c=i&&s&&e.groupPermissions.order>e.hoveredPermission.order,u=!i&&s&&e.groupPermissions.order<e.hoveredPermission.order;return n.createElement(y,{permission:{permissionName:o,order:e.groupPermissions.order},className:"d-inline",onHover:e.onPermissionHover,cascadeCheck:c,cascadeUncheck:u},n.createElement(S.Z,{"aria-label":"".concat(e.groupPermissions.groupName," ").concat(o,"}"),onClick:function(){e.updateGroupPermission(e.groupPermissions.groupId,o,e.groupPermissions.order,i),e.onPermissionHover(null)},on:i,floatEnd:!1}))}var C=t(36532);function x(e){var r=e.heading,t=e.tooltip;return n.createElement(C.u,{title:t,spanHack:!0,spanHackClassName:"justify-content-start"},n.createElement("div",{className:"d-flex gap-1 align-items-center cursor-pointer"},n.createElement("span",null,r),n.createElement(f.x,{svgName:h.vn.Info,className:"svg-container flex-shrink-0"})))}var j=t(20354),I=t(1666),O=t(31949),L=t(69883),T=t(91286),M=t(99940),G={groupPermissions:function(){return{key:"group:permissions",url:"{gateway}/v1/customers/group-permissions",normalize:!1}},updateGroupPermissions:function(e){return{key:"update:group:permissions",url:"{gateway}/v1/customers/group-permissions",type:M.k.PUT,data:e,invalidationKeys:["group:permissions"],normalize:!1}}};function F(e){return function(e){if(Array.isArray(e))return V(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||R(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 R(e,r){if(e){if("string"==typeof e)return V(e,r);var t={}.toString.call(e).slice(8,-1);return"Object"===t&&e.constructor&&(t=e.constructor.name),"Map"===t||"Set"===t?Array.from(e):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?V(e,r):void 0}}function V(e,r){(null==r||r>e.length)&&(r=e.length);for(var t=0,n=Array(r);t<r;t++)n[t]=e[t];return n}function D(e){switch(e){case g.Allow:return g.Deny;case g.Deny:return g.Allow;default:return g.Deny}}function _(e,r,t){if(!d.m.findWhere(e.permissions,{permissionName:r}))return Object.assign(Object.assign({},e),{permissions:[].concat(F(e.permissions),[{permissionName:r,access:t||g.Deny}])});var n=e.permissions.map((function(e){return e.permissionName===r?{permissionName:e.permissionName,access:t||D(null==e?void 0:e.access)}:e}));return Object.assign(Object.assign({},e),{permissions:n})}function U(e,r){switch(r.type){case"toggle":return e.map((function(e){return function(e,r,t,n,o){return e.groupId===r?_(e,t):e.order<n&&o?_(e,t,g.Deny):e.order>n&&!o?_(e,t,g.Allow):e}(e,r.groupId,r.permissionName,r.order,r.allowed)}));case"restricted":return e.map((function(e){return function(e,r,t,n){if(e.groupId===r){var o=d.m.findWhere(e.permissions,{permissionName:a.C.ViewRestrictedMode})||{permissionName:a.C.ViewRestrictedMode,access:g.Deny},i=D(null==o?void 0:o.access);return Object.assign(Object.assign({},e),{permissions:[{permissionName:a.C.ViewRestrictedMode,access:i}].concat(F(i===g.Allow?N.map((function(e){return{permissionName:e,access:g.Deny}})):[].concat(F(E.map((function(e){return{permissionName:e,access:g.Allow}}))),F(w.map((function(e){return{permissionName:e,access:g.Deny}}))))))})}return e.order>t&&n?Object.assign(Object.assign({},e),{permissions:e.permissions.map((function(e){return e.permissionName===a.C.ViewRestrictedMode?Object.assign(Object.assign({},e),{access:g.Deny}):E.includes(e.permissionName)?Object.assign(Object.assign({},e),{access:g.Allow}):e}))}):e.order<t&&!n?Object.assign(Object.assign({},e),{permissions:[{permissionName:a.C.ViewRestrictedMode,access:g.Allow}].concat(F(N.map((function(e){return{permissionName:e,access:g.Deny}}))))}):e}(e,r.groupId,r.order,r.allowed)}));case"init":return t=r.groupPermissions,n=r.yearGroups,o=t.reduce((function(e,r){var t=r.groupId;return e[t]||(e[t]=[]),e[t].push({permissionName:r.permissionName,access:r.access}),e}),{}),n.map((function(e){return{groupId:e.id,groupName:e.name,groupType:b.YearGroup,order:e.value,permissions:o[e.id]||[]}}));default:return e}var t,n,o}function H(e){return H="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},H(e)}function W(){W=function(){return r};var e,r={},t=Object.prototype,n=t.hasOwnProperty,o=Object.defineProperty||function(e,r,t){e[r]=t.value},i="function"==typeof Symbol?Symbol:{},a=i.iterator||"@@iterator",s=i.asyncIterator||"@@asyncIterator",c=i.toStringTag||"@@toStringTag";function u(e,r,t){return Object.defineProperty(e,r,{value:t,enumerable:!0,configurable:!0,writable:!0}),e[r]}try{u({},"")}catch(e){u=function(e,r,t){return e[r]=t}}function l(e,r,t,n){var i=r&&r.prototype instanceof y?r:y,a=Object.create(i.prototype),s=new I(n||[]);return o(a,"_invoke",{value:k(e,t,s)}),a}function m(e,r,t){try{return{type:"normal",arg:e.call(r,t)}}catch(e){return{type:"throw",arg:e}}}r.wrap=l;var d="suspendedStart",p="suspendedYield",f="executing",h="completed",v={};function y(){}function g(){}function b(){}var E={};u(E,a,(function(){return this}));var w=Object.getPrototypeOf,N=w&&w(w(O([])));N&&N!==t&&n.call(N,a)&&(E=N);var P=b.prototype=y.prototype=Object.create(E);function A(e){["next","throw","return"].forEach((function(r){u(e,r,(function(e){return this._invoke(r,e)}))}))}function S(e,r){function t(o,i,a,s){var c=m(e[o],e,i);if("throw"!==c.type){var u=c.arg,l=u.value;return l&&"object"==H(l)&&n.call(l,"__await")?r.resolve(l.__await).then((function(e){t("next",e,a,s)}),(function(e){t("throw",e,a,s)})):r.resolve(l).then((function(e){u.value=e,a(u)}),(function(e){return t("throw",e,a,s)}))}s(c.arg)}var i;o(this,"_invoke",{value:function(e,n){function o(){return new r((function(r,o){t(e,n,r,o)}))}return i=i?i.then(o,o):o()}})}function k(r,t,n){var o=d;return function(i,a){if(o===f)throw Error("Generator is already running");if(o===h){if("throw"===i)throw a;return{value:e,done:!0}}for(n.method=i,n.arg=a;;){var s=n.delegate;if(s){var c=C(s,n);if(c){if(c===v)continue;return c}}if("next"===n.method)n.sent=n._sent=n.arg;else if("throw"===n.method){if(o===d)throw o=h,n.arg;n.dispatchException(n.arg)}else"return"===n.method&&n.abrupt("return",n.arg);o=f;var u=m(r,t,n);if("normal"===u.type){if(o=n.done?h:p,u.arg===v)continue;return{value:u.arg,done:n.done}}"throw"===u.type&&(o=h,n.method="throw",n.arg=u.arg)}}}function C(r,t){var n=t.method,o=r.iterator[n];if(o===e)return t.delegate=null,"throw"===n&&r.iterator.return&&(t.method="return",t.arg=e,C(r,t),"throw"===t.method)||"return"!==n&&(t.method="throw",t.arg=new TypeError("The iterator does not provide a '"+n+"' method")),v;var i=m(o,r.iterator,t.arg);if("throw"===i.type)return t.method="throw",t.arg=i.arg,t.delegate=null,v;var a=i.arg;return a?a.done?(t[r.resultName]=a.value,t.next=r.nextLoc,"return"!==t.method&&(t.method="next",t.arg=e),t.delegate=null,v):a:(t.method="throw",t.arg=new TypeError("iterator result is not an object"),t.delegate=null,v)}function x(e){var r={tryLoc:e[0]};1 in e&&(r.catchLoc=e[1]),2 in e&&(r.finallyLoc=e[2],r.afterLoc=e[3]),this.tryEntries.push(r)}function j(e){var r=e.completion||{};r.type="normal",delete r.arg,e.completion=r}function I(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(x,this),this.reset(!0)}function O(r){if(r||""===r){var t=r[a];if(t)return t.call(r);if("function"==typeof r.next)return r;if(!isNaN(r.length)){var o=-1,i=function t(){for(;++o<r.length;)if(n.call(r,o))return t.value=r[o],t.done=!1,t;return t.value=e,t.done=!0,t};return i.next=i}}throw new TypeError(H(r)+" is not iterable")}return g.prototype=b,o(P,"constructor",{value:b,configurable:!0}),o(b,"constructor",{value:g,configurable:!0}),g.displayName=u(b,c,"GeneratorFunction"),r.isGeneratorFunction=function(e){var r="function"==typeof e&&e.constructor;return!!r&&(r===g||"GeneratorFunction"===(r.displayName||r.name))},r.mark=function(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,b):(e.__proto__=b,u(e,c,"GeneratorFunction")),e.prototype=Object.create(P),e},r.awrap=function(e){return{__await:e}},A(S.prototype),u(S.prototype,s,(function(){return this})),r.AsyncIterator=S,r.async=function(e,t,n,o,i){void 0===i&&(i=Promise);var a=new S(l(e,t,n,o),i);return r.isGeneratorFunction(t)?a:a.next().then((function(e){return e.done?e.value:a.next()}))},A(P),u(P,c,"Generator"),u(P,a,(function(){return this})),u(P,"toString",(function(){return"[object Generator]"})),r.keys=function(e){var r=Object(e),t=[];for(var n in r)t.push(n);return t.reverse(),function e(){for(;t.length;){var n=t.pop();if(n in r)return e.value=n,e.done=!1,e}return e.done=!0,e}},r.values=O,I.prototype={constructor:I,reset:function(r){if(this.prev=0,this.next=0,this.sent=this._sent=e,this.done=!1,this.delegate=null,this.method="next",this.arg=e,this.tryEntries.forEach(j),!r)for(var t in this)"t"===t.charAt(0)&&n.call(this,t)&&!isNaN(+t.slice(1))&&(this[t]=e)},stop:function(){this.done=!0;var e=this.tryEntries[0].completion;if("throw"===e.type)throw e.arg;return this.rval},dispatchException:function(r){if(this.done)throw r;var t=this;function o(n,o){return s.type="throw",s.arg=r,t.next=n,o&&(t.method="next",t.arg=e),!!o}for(var i=this.tryEntries.length-1;i>=0;--i){var a=this.tryEntries[i],s=a.completion;if("root"===a.tryLoc)return o("end");if(a.tryLoc<=this.prev){var c=n.call(a,"catchLoc"),u=n.call(a,"finallyLoc");if(c&&u){if(this.prev<a.catchLoc)return o(a.catchLoc,!0);if(this.prev<a.finallyLoc)return o(a.finallyLoc)}else if(c){if(this.prev<a.catchLoc)return o(a.catchLoc,!0)}else{if(!u)throw Error("try statement without catch or finally");if(this.prev<a.finallyLoc)return o(a.finallyLoc)}}}},abrupt:function(e,r){for(var t=this.tryEntries.length-1;t>=0;--t){var o=this.tryEntries[t];if(o.tryLoc<=this.prev&&n.call(o,"finallyLoc")&&this.prev<o.finallyLoc){var i=o;break}}i&&("break"===e||"continue"===e)&&i.tryLoc<=r&&r<=i.finallyLoc&&(i=null);var a=i?i.completion:{};return a.type=e,a.arg=r,i?(this.method="next",this.next=i.finallyLoc,v):this.complete(a)},complete:function(e,r){if("throw"===e.type)throw e.arg;return"break"===e.type||"continue"===e.type?this.next=e.arg:"return"===e.type?(this.rval=this.arg=e.arg,this.method="return",this.next="end"):"normal"===e.type&&r&&(this.next=r),v},finish:function(e){for(var r=this.tryEntries.length-1;r>=0;--r){var t=this.tryEntries[r];if(t.finallyLoc===e)return this.complete(t.completion,t.afterLoc),j(t),v}},catch:function(e){for(var r=this.tryEntries.length-1;r>=0;--r){var t=this.tryEntries[r];if(t.tryLoc===e){var n=t.completion;if("throw"===n.type){var o=n.arg;j(t)}return o}}throw Error("illegal catch attempt")},delegateYield:function(r,t,n){return this.delegate={iterator:O(r),resultName:t,nextLoc:n},"next"===this.method&&(this.arg=e),v}},r}function q(e,r){(null==r||r>e.length)&&(r=e.length);for(var t=0,n=Array(r);t<r;t++)n[t]=e[t];return n}var B=function(e,r,t,n){return new(t||(t=Promise))((function(o,i){function a(e){try{c(n.next(e))}catch(e){i(e)}}function s(e){try{c(n.throw(e))}catch(e){i(e)}}function c(e){var r;e.done?o(e.value):(r=e.value,r instanceof t?r:new t((function(e){e(r)}))).then(a,s)}c((n=n.apply(e,r||[])).next())}))},$=o.T.encloseNamespace("settings.manageGroupPermissions");function Q(){var e=(0,L.Z)(),r=j.a.useGetFetchAsync(),t=j.a.useBasicFetch(O.N.currentUser()),o=j.a.useBasicFetch(t.data&&I.h.yearGroups(t.data.customerId)),i=j.a.useBasicFetch(G.groupPermissions());(0,T.v)([o,i]);var s,c,u,l={groupPermissionsTableData:(c=n.useReducer(U,null),u=2,s=function(e){if(Array.isArray(e))return e}(c)||function(e,r){var t=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=t){var n,o,i,a,s=[],c=!0,u=!1;try{if(i=(t=t.call(e)).next,0===r){if(Object(t)!==t)return;c=!1}else for(;!(c=(n=i.call(t)).done)&&(s.push(n.value),s.length!==r);c=!0);}catch(e){u=!0,o=e}finally{try{if(!c&&null!=t.return&&(a=t.return(),Object(a)!==a))return}finally{if(u)throw o}}return s}}(c,u)||R(c,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.")}())[0],dispatch:s[1]},m=l.groupPermissionsTableData,p=l.dispatch,f=function(e,r){return function(e){if(Array.isArray(e))return e}(e)||function(e,r){var t=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=t){var n,o,i,a,s=[],c=!0,u=!1;try{if(i=(t=t.call(e)).next,0===r){if(Object(t)!==t)return;c=!1}else for(;!(c=(n=i.call(t)).done)&&(s.push(n.value),s.length!==r);c=!0);}catch(e){u=!0,o=e}finally{try{if(!c&&null!=t.return&&(a=t.return(),Object(a)!==a))return}finally{if(u)throw o}}return s}}(e,r)||function(e,r){if(e){if("string"==typeof e)return q(e,r);var t={}.toString.call(e).slice(8,-1);return"Object"===t&&e.constructor&&(t=e.constructor.name),"Map"===t||"Set"===t?Array.from(e):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?q(e,r):void 0}}(e,r)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}(n.useState(!1),2),h=f[0],v=f[1];function y(){var e=[];return m.forEach((function(r){if(r.permissions){var t=r.permissions.map((function(e){return{groupId:r.groupId,groupType:r.groupType,permissionName:e.permissionName,access:e.access}}));e=e.concat(t)}})),e}return n.useEffect((function(){o.data&&i.data&&p({type:"init",groupPermissions:i.data,yearGroups:o.data})}),[o.hasCompleted,i.hasCompleted]),{updateGroupPermission:function(e,r,t,n){v(!0),r!==a.C.ViewRestrictedMode?p({type:"toggle",groupId:e,permissionName:r,order:t,allowed:n}):p({type:"restricted",groupId:e,order:t,allowed:n})},isPermissionEnabled:function(e,r){var t=d.m.findWhere(m,{groupId:e}),n=d.m.findWhere(t.permissions,{permissionName:r});return n?n.access===g.Allow||n.access===g.Default:r!==a.C.ViewRestrictedMode},groupPermissionsTableData:m,hasChanged:h,getGroupPermissionsRequestData:y,updateGroupPermissions:function(){return B(this,void 0,void 0,W().mark((function t(){var n;return W().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return n=y(),t.prev=1,t.next=4,r(G.updateGroupPermissions(n));case 4:v(!1),e.success($("success")),t.next=11;break;case 8:t.prev=8,t.t0=t.catch(1),e.error($("error"));case 11:case"end":return t.stop()}}),t,null,[[1,8]])})))},undoChanges:function(){v(!1),p({type:"init",groupPermissions:i.data,yearGroups:o.data})}}}function Y(e,r){(null==r||r>e.length)&&(r=e.length);for(var t=0,n=Array(r);t<r;t++)n[t]=e[t];return n}function z(){return n.createElement("div",{className:"w-100 rounded-3 border border-light"},n.createElement("ul",{className:"list-unstyled w-100"},n.createElement("li",{className:"py-2 px-3 w-100"}," "),(e=Array(13),function(e){if(Array.isArray(e))return Y(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,r){if(e){if("string"==typeof e)return Y(e,r);var t={}.toString.call(e).slice(8,-1);return"Object"===t&&e.constructor&&(t=e.constructor.name),"Map"===t||"Set"===t?Array.from(e):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?Y(e,r):void 0}}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()).map((function(e,r){return n.createElement("li",{key:"partial-".concat(r),className:"".concat(r%2==0?"partial-loading-background":""," w-100 p-3")}," ")}))));var e}const X="RiJHh";function Z(e,r){(null==r||r>e.length)&&(r=e.length);for(var t=0,n=Array(r);t<r;t++)n[t]=e[t];return n}var J="settings.manageGroupPermissions",K=o.T.encloseNamespace(J),ee="manage-group-permissions",re={table:"table table-borderless align-middle min-w-100 mb-0",header:"border-bottom",headerCell:"".concat(X," align-middle fw-semibold px-3 py-2"),body:"striped-list",cell:"".concat(X," bg-transparent p-3")},te=[{permissionName:a.C.ViewDiscover,heading:K("discover"),tooltip:K("discoverTooltip")},{permissionName:a.C.ViewSearch,heading:K("search"),tooltip:K("searchTooltip")},{permissionName:a.C.UploadVideo,heading:K("uploadVideos"),tooltip:K("uploadVideosTooltip")},{permissionName:a.C.ViewMoviesTv,heading:K("moviestv"),tooltip:K("moviestvTooltip")},{permissionName:a.C.ViewLibraries,heading:K("customLibraries"),tooltip:K("customLibrariesTooltip")}];function ne(){var e,r,t=u.o.getLiteArticle(s.b.ManageGroupPermissions),o=Q(),d=o.updateGroupPermission,p=o.isPermissionEnabled,f=o.groupPermissionsTableData,h=o.updateGroupPermissions,v=o.hasChanged,y=o.undoChanges,g=(e=n.useState(null),r=2,function(e){if(Array.isArray(e))return e}(e)||function(e,r){var t=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=t){var n,o,i,a,s=[],c=!0,u=!1;try{if(i=(t=t.call(e)).next,0===r){if(Object(t)!==t)return;c=!1}else for(;!(c=(n=i.call(t)).done)&&(s.push(n.value),s.length!==r);c=!0);}catch(e){u=!0,o=e}finally{try{if(!c&&null!=t.return&&(a=t.return(),Object(a)!==a))return}finally{if(u)throw o}}return s}}(e,r)||function(e,r){if(e){if("string"==typeof e)return Z(e,r);var t={}.toString.call(e).slice(8,-1);return"Object"===t&&e.constructor&&(t=e.constructor.name),"Map"===t||"Set"===t?Array.from(e):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?Z(e,r):void 0}}(e,r)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),b=g[0],E=g[1],w=(0,c.f)();n.useEffect((function(){if(v)return w.lock({id:ee,title:K("navLockTitle"),text:K("navLockBody")}),function(){w.unlock(ee)}}),[v]),n.useEffect((function(){return l.e.lockContentWidth(),function(){return l.e.unlockContentWidth()}}),[]);var P={isPermissionEnabled:p,updateGroupPermission:d,hoveredPermission:b,onPermissionHover:function(e){E(e)}};return n.createElement(m.d,{heading:K("heading"),breadcrumbs:[K("breadcrumb")],requiredPermissions:a.C.ManageCustomerSettings},n.createElement("p",{className:"mb-2"},n.createElement(i.x,{namespace:J,phrase:"description",options:{articleUrl:t}})),n.createElement("div",{className:"d-flex justify-content-between align-items-end mb-3"},n.createElement("p",{className:"me-2 mb-0"},n.createElement(i.x,{namespace:J,phrase:"selectFeatures"})),n.createElement("div",{className:"d-flex float-end gap-3"},n.createElement("button",{className:"btn btn-outline-dark text-nowrap",onClick:function(){return y()},disabled:!v},n.createElement(i.x,{namespace:J,phrase:"undo"})),n.createElement("button",{className:"btn btn-dark text-nowrap",onClick:h,disabled:!v},n.createElement(i.x,{namespace:J,phrase:"submit"})))),!f&&n.createElement(z,null),f&&n.createElement("div",{className:"rounded-3 border border-light overflow-hidden"},n.createElement("table",{className:re.table},n.createElement("thead",{className:re.header},n.createElement("tr",null,n.createElement("td",{className:re.headerCell},K("yearGroup")),n.createElement("td",{className:re.headerCell},n.createElement(x,{heading:K("restrictedMode"),tooltip:K("restrictedModeTooltip")})),te.map((function(e){return n.createElement("td",{key:"thead-".concat(e.permissionName),className:re.headerCell},n.createElement(x,{heading:e.heading,tooltip:e.tooltip}))})))),n.createElement("tbody",{className:re.body},f.map((function(e){var r=re.cell;return n.createElement("tr",{key:e.groupId},n.createElement("td",{className:r},e.groupName),n.createElement("td",{className:r},n.createElement(k,Object.assign({groupPermissions:e},P))),N.map((function(t){return n.createElement("td",{key:"tbody-".concat(t),className:r},n.createElement(A,Object.assign({permissionName:t,groupPermissions:e},P)))})))}))))))}}}]);
3
- //# sourceMappingURL=5376-6e993d6097-lite.chunk.js.map
1
+ /*! For license information please see 5376-38456da0db-lite.chunk.js.LICENSE.txt */
2
+ "use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[5376],{49935:(e,r,t)=>{t.d(r,{Oo:()=>h,b2:()=>v});var n=t(32735),o=t(23481),i=t(36848),a=t(86764),s=t(3747),c=t(5859),u=t(35223),l=t(83914);function m(e,r){return function(e){if(Array.isArray(e))return e}(e)||function(e,r){var t=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=t){var n,o,i,a,s=[],c=!0,u=!1;try{if(i=(t=t.call(e)).next,0===r){if(Object(t)!==t)return;c=!1}else for(;!(c=(n=i.call(t)).done)&&(s.push(n.value),s.length!==r);c=!0);}catch(e){u=!0,o=e}finally{try{if(!c&&null!=t.return&&(a=t.return(),Object(a)!==a))return}finally{if(u)throw o}}return s}}(e,r)||function(e,r){if(e){if("string"==typeof e)return d(e,r);var t={}.toString.call(e).slice(8,-1);return"Object"===t&&e.constructor&&(t=e.constructor.name),"Map"===t||"Set"===t?Array.from(e):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?d(e,r):void 0}}(e,r)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function d(e,r){(null==r||r>e.length)&&(r=e.length);for(var t=0,n=Array(r);t<r;t++)n[t]=e[t];return n}var p=o.T.encloseNamespace("shared.breadcrumbComponent"),f=n.forwardRef((function(e,r){var t=e.breadcrumb,o=t.name,a=t.appLink,s=t.active,c=e.withBackIcon,m=o,d=null;return m.length>48&&(m=o.slice(0,48)+"...",d=o),n.createElement("li",{className:"breadcrumb-item".concat(s?" active":""),title:d},s?n.createElement("strong",null,m):n.createElement(i.F,{appLink:a,ref:r},c&&n.createElement(l.x,{svgName:u.vn.ChevronLeft,size:l.S.Small}),n.createElement("span",{className:c?"ms-2":""},m)))})),h=function(e){var r=e.breadcrumbs,t=(0,s.a)(a.r.XS),o=(null==r?void 0:r.length)||0,i=m(n.useState(!1),2),c=i[0],u=i[1],l=m(n.useState(!1),2),d=l[0],h=l[1],v=n.useRef();if(n.useEffect((function(){var e,t=null!==(e=null==r?void 0:r.reduce((function(e,r){return e+r.name.length}),0))&&void 0!==e?e:0;o>4&&t>64&&u(!0)}),[null==r?void 0:r.length]),n.useLayoutEffect((function(){var e;d&&(null===(e=v.current)||void 0===e||e.focus())}),[v.current,d]),!o||t&&o<2)return n.createElement(n.Fragment,null);if(t)return n.createElement("nav",{"aria-label":"breadcrumb"},n.createElement("ol",{className:"breadcrumb m-0 p-0"},n.createElement(f,{breadcrumb:r[o-2],withBackIcon:!0})));var y=n.createElement(f,{breadcrumb:r[0]}),g=o>2?n.createElement(f,{breadcrumb:r[1]}):n.createElement(n.Fragment,null),b=o>3?n.createElement(f,{breadcrumb:r[o-2]}):n.createElement(n.Fragment,null),E=o>1?n.createElement(f,{breadcrumb:r[o-1]}):n.createElement(n.Fragment,null),w=r.slice(2,o-2);return n.createElement("nav",{"aria-label":"breadcrumb"},n.createElement("ol",{className:"breadcrumb m-0 p-0"},y,g,c?n.createElement("li",{className:"breadcrumb-item"},n.createElement("button",{className:"btn-link",onClick:function(){u(!1),h(!0)},"aria-label":p("expand")},"...")):w.map((function(e,r){return n.createElement(f,{key:r,breadcrumb:e,ref:0===r?v:null})})),b,E))},v=n.memo((function(e){var r=e.numItems,t=void 0===r?3:r;return(0,s.a)(a.r.XS)?n.createElement("div",{className:"partial-loading-background",style:{height:"1.3125rem",width:"6rem"}}):n.createElement("nav",{"aria-label":"breadcrumb"},n.createElement("ol",{className:"breadcrumb m-0 p-0"},c.u.getPartialLoadingItems({numItems:t}).map((function(e,r){var t=e.width;return n.createElement("li",{key:r,className:"breadcrumb-item"},n.createElement("span",{className:"d-inline-block partial-loading-background",style:{width:t},dangerouslySetInnerHTML:{__html:"&nbsp"}}))}))))}))},99705:(e,r,t)=>{var n,o;t.d(r,{b:()=>o}),function(e){e.AddToPlaylist="115005679748",e.EditSsoAccounts="8202508040345",e.LibraryEditor="360001974533",e.VideoAccess="360000153947",e.AddFromOnline="360011718234",e.UploadToLibraryEditor="360012069334",e.PBTErrorCodes="360012421153",e.ManuelReview="360020004534",e.LibraryReview="360000163788"}(n||(n={})),function(e){e.Integrations="4407268725529",e.Classrooms="4405362551833",e.MakeInteractive="4405370510873",e.EditSsoAccounts="8202605666073",e.UploadToLibraryEditor="10672936659865",e.AddFromLite="10671345281561",e.ManageSsoYearGroups="14691130889241",e.ContentReview="18525199576601",e.ContentPermissions="14692125209497",e.AccessSettings="27927466562201",e.ContentGuidelines="24133696186009",e.FoxtelFaq="24133519542169",e.ViviIntegration="23826297956377",e.AppleTvIntegration="25832373739929",e.RssFeed="32567445635097",e.ManageGroupPermissions="35407217335705"}(o||(o={}))},94644:(e,r,t)=>{t.d(r,{r:()=>l});var n=t(50242),o=t(81886),i=t(67058),a=t(14553),s=t(49267),c=t(49075),u={notFound:i.d,forbidden:{rating:a.q,yearLevel:a.q,region:s.a,privacy:a.q},badRequest:c._};function l(e){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},t=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(e){var i;i="number"==typeof e?e:e.status;var a=Object.assign(Object.assign({},u),r);i&&o.Q.Ry.isStatusCodeError(i)&&(i!==n.o.NotFound?i!==n.o.Forbidden?t.badRequest||o.Q.Ry.throw(new a.badRequest):t.forbidden||o.Q.Ry.throw(new a.forbidden.privacy):t.notFound||o.Q.Ry.throw(new a.notFound))}}},91286:(e,r,t)=>{t.d(r,{v:()=>a});var n=t(32735),o=t(94644);function i(e){return e.map((function(e){return e.statusCode})).join(":")}function a(e,r,t){var a=Array.isArray(e)?e:[e];(0,n.useEffect)((function(){a.forEach((function(e){(0,o.r)(e.statusCode,r,t)}))}),[i(a),r,t])}},5859:(e,r,t)=>{function n(e,r){(null==r||r>e.length)&&(r=e.length);for(var t=0,n=Array(r);t<r;t++)n[t]=e[t];return n}t.d(r,{u:()=>i});var o={numItems:5,minWidth:50,maxWidth:100},i={getPartialLoadingItems:function(){var e,r=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=Object.assign(Object.assign({},o),r);return(e=Array(t.numItems),function(e){if(Array.isArray(e))return n(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,r){if(e){if("string"==typeof e)return n(e,r);var t={}.toString.call(e).slice(8,-1);return"Object"===t&&e.constructor&&(t=e.constructor.name),"Map"===t||"Set"===t?Array.from(e):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?n(e,r):void 0}}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()).map((function(){return{width:"".concat(Math.max(Math.floor(Math.random()*t.maxWidth),t.minWidth),"px")}}))}}},81803:(e,r,t)=>{t.d(r,{d:()=>f});var n=t(32735),o=t(81886),i=t(23481),a=t(49935),s=t(22902),c=t(14070),u=t(97291),l=t(96368);function m(e,r){(null==r||r>e.length)&&(r=e.length);for(var t=0,n=Array(r);t<r;t++)n[t]=e[t];return n}var d="settings.settingsLayout",p=function(e){var r=(0,s.T)().hasPermissions,t=(0,l.e)();if(e)return r(e);var n=o.Q.C$.getCurrentAppLink();return n.application!==u.O.SETTINGS||t.some((function(e){return e.modules.some((function(e){return"appLink"in e&&e.appLink.action===n.action}))}))};function f(e){var r,t=p(e.requiredPermissions);if(n.useEffect((function(){t||o.Q.C$.trigger({application:u.O.SETTINGS,action:c.e.Settings.HOME},{replace:!0})}),[t]),!t)return n.createElement(n.Fragment,null);var s,l=e.breadcrumbs.map((function(r,t){return{name:r,appLink:{application:u.O.SETTINGS,action:c.e.Settings.HOME},active:t===e.breadcrumbs.length-1}}));return n.createElement("div",{className:"px-3"},n.createElement("div",{className:"d-flex align-items-center justify-content-between"},n.createElement("h1",{className:"h2"},e.heading),null===(r=e.headingButton)||void 0===r?void 0:r.call(e)),n.createElement("div",{className:"pb-3"},n.createElement(a.Oo,{breadcrumbs:[{name:i.T.getPhrase(d,"settingsBreadcrumb"),appLink:{application:u.O.SETTINGS,action:c.e.Settings.HOME}}].concat((s=l,function(e){if(Array.isArray(e))return m(e)}(s)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(s)||function(e,r){if(e){if("string"==typeof e)return m(e,r);var t={}.toString.call(e).slice(8,-1);return"Object"===t&&e.constructor&&(t=e.constructor.name),"Map"===t||"Set"===t?Array.from(e):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?m(e,r):void 0}}(s)||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.description&&n.createElement(n.Fragment,null,n.createElement("p",null,e.description),n.createElement("hr",null)),e.children)}},15376:(e,r,t)=>{t.r(r),t.d(r,{ManageGroupPermissionsView:()=>ne,TABLE_THEME:()=>re});var n=t(32735),o=t(23481),i=t(83345),a=t(16714),s=t(99705),c=t(89476),u=t(12778),l=t(44230),m=t(81803),d=t(75896),p=t(89965),f=t(83914),h=t(35223);const v={container:"Vxu2N"};function y(e){return n.createElement("div",{className:"".concat(v.container," ").concat(e.className," ").concat(e.isDisabled?"pointer-events-none":"".concat(e.cascadeCheck||e.cascadeUncheck?"opacity-50":""," opacity-50-hover")),onMouseEnter:function(){return e.onHover(e.permission)},onMouseLeave:function(){return e.onHover()}},e.children)}var g,b,E=[a.C.ViewDiscover,a.C.ViewSearch,a.C.UploadVideo],w=[a.C.ViewMoviesTv,a.C.ViewLibraries],N=[].concat(E,w);!function(e){e.Default="Default",e.Allow="Allow",e.Deny="Deny"}(g||(g={})),function(e){e[e.YearGroup=0]="YearGroup"}(b||(b={}));const P={checkbox:"wLkeZ",checkedTransition:"wWiuo"};function A(e){var r,t,o,i,s,c=e.groupPermissions.groupId,u=e.isPermissionEnabled(c,e.permissionName),l=d.m.findWhere(e.groupPermissions.permissions,{permissionName:a.C.ViewRestrictedMode}),m=(null==l?void 0:l.access)===g.Allow,v=E.find((function(r){return r===e.permissionName})),b=m&&(null===(r=e.hoveredPermission)||void 0===r?void 0:r.permissionName)===a.C.ViewRestrictedMode&&(null===(t=e.hoveredPermission)||void 0===t?void 0:t.order)<=e.groupPermissions.order,w=!m&&(null===(o=e.hoveredPermission)||void 0===o?void 0:o.permissionName)===a.C.ViewRestrictedMode&&(null===(i=e.hoveredPermission)||void 0===i?void 0:i.order)>=e.groupPermissions.order;if(v){if(w||m&&!b)return n.createElement(f.x,{svgName:h.vn.Close});if(b||!m&&!w)return n.createElement(f.x,{svgName:h.vn.Tick})}var N=(null===(s=e.hoveredPermission)||void 0===s?void 0:s.permissionName)===e.permissionName,A=N&&e.hoveredPermission.order===e.groupPermissions.order,S=!u&&N&&e.groupPermissions.order>e.hoveredPermission.order,k=u&&N&&e.groupPermissions.order<e.hoveredPermission.order,C=(w||m)&&!b;return n.createElement(y,{permission:{permissionName:e.permissionName,order:e.groupPermissions.order},className:"".concat(P.checkbox," d-block overflow-hidden"),onHover:e.onPermissionHover,cascadeCheck:S,cascadeUncheck:k,isDisabled:C},n.createElement(p.X,{id:"".concat(c,"-").concat(e.permissionName),inputClassName:P.checkedTransition,ariaLabel:"".concat(e.groupPermissions.groupName," ").concat(e.permissionName),onChange:function(){return e.updateGroupPermission(c,e.permissionName,e.groupPermissions.order,u)},checked:(A||S||u)&&!w&&!C,disabled:C}))}var S=t(83523);function k(e){var r,t=e.groupPermissions.groupId,o=a.C.ViewRestrictedMode,i=e.isPermissionEnabled(t,o),s=(null===(r=e.hoveredPermission)||void 0===r?void 0:r.permissionName)===o,c=i&&s&&e.groupPermissions.order>e.hoveredPermission.order,u=!i&&s&&e.groupPermissions.order<e.hoveredPermission.order;return n.createElement(y,{permission:{permissionName:o,order:e.groupPermissions.order},className:"d-inline",onHover:e.onPermissionHover,cascadeCheck:c,cascadeUncheck:u},n.createElement(S.Z,{"aria-label":"".concat(e.groupPermissions.groupName," ").concat(o,"}"),onClick:function(){e.updateGroupPermission(e.groupPermissions.groupId,o,e.groupPermissions.order,i),e.onPermissionHover(null)},on:i,floatEnd:!1}))}var C=t(36532);function x(e){var r=e.heading,t=e.tooltip;return n.createElement(C.u,{title:t,spanHack:!0,spanHackClassName:"justify-content-start"},n.createElement("div",{className:"d-flex gap-1 align-items-center cursor-pointer"},n.createElement("span",null,r),n.createElement(f.x,{svgName:h.vn.Info,className:"svg-container flex-shrink-0"})))}var j=t(20354),I=t(1666),O=t(31949),L=t(69883),T=t(91286),M=t(99940),G={groupPermissions:function(){return{key:"group:permissions",url:"{gateway}/v1/customers/group-permissions",normalize:!1}},updateGroupPermissions:function(e){return{key:"update:group:permissions",url:"{gateway}/v1/customers/group-permissions",type:M.k.PUT,data:e,invalidationKeys:["group:permissions"],normalize:!1}}};function F(e){return function(e){if(Array.isArray(e))return V(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||R(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 R(e,r){if(e){if("string"==typeof e)return V(e,r);var t={}.toString.call(e).slice(8,-1);return"Object"===t&&e.constructor&&(t=e.constructor.name),"Map"===t||"Set"===t?Array.from(e):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?V(e,r):void 0}}function V(e,r){(null==r||r>e.length)&&(r=e.length);for(var t=0,n=Array(r);t<r;t++)n[t]=e[t];return n}function D(e){switch(e){case g.Allow:return g.Deny;case g.Deny:return g.Allow;default:return g.Deny}}function _(e,r,t){if(!d.m.findWhere(e.permissions,{permissionName:r}))return Object.assign(Object.assign({},e),{permissions:[].concat(F(e.permissions),[{permissionName:r,access:t||g.Deny}])});var n=e.permissions.map((function(e){return e.permissionName===r?{permissionName:e.permissionName,access:t||D(null==e?void 0:e.access)}:e}));return Object.assign(Object.assign({},e),{permissions:n})}function U(e,r){switch(r.type){case"toggle":return e.map((function(e){return function(e,r,t,n,o){return e.groupId===r?_(e,t):e.order<n&&o?_(e,t,g.Deny):e.order>n&&!o?_(e,t,g.Allow):e}(e,r.groupId,r.permissionName,r.order,r.allowed)}));case"restricted":return e.map((function(e){return function(e,r,t,n){if(e.groupId===r){var o=d.m.findWhere(e.permissions,{permissionName:a.C.ViewRestrictedMode})||{permissionName:a.C.ViewRestrictedMode,access:g.Deny},i=D(null==o?void 0:o.access);return Object.assign(Object.assign({},e),{permissions:[{permissionName:a.C.ViewRestrictedMode,access:i}].concat(F(i===g.Allow?N.map((function(e){return{permissionName:e,access:g.Deny}})):[].concat(F(E.map((function(e){return{permissionName:e,access:g.Allow}}))),F(w.map((function(e){return{permissionName:e,access:g.Deny}}))))))})}return e.order>t&&n?Object.assign(Object.assign({},e),{permissions:e.permissions.map((function(e){return e.permissionName===a.C.ViewRestrictedMode?Object.assign(Object.assign({},e),{access:g.Deny}):E.includes(e.permissionName)?Object.assign(Object.assign({},e),{access:g.Allow}):e}))}):e.order<t&&!n?Object.assign(Object.assign({},e),{permissions:[{permissionName:a.C.ViewRestrictedMode,access:g.Allow}].concat(F(N.map((function(e){return{permissionName:e,access:g.Deny}}))))}):e}(e,r.groupId,r.order,r.allowed)}));case"init":return t=r.groupPermissions,n=r.yearGroups,o=t.reduce((function(e,r){var t=r.groupId;return e[t]||(e[t]=[]),e[t].push({permissionName:r.permissionName,access:r.access}),e}),{}),n.map((function(e){return{groupId:e.id,groupName:e.name,groupType:b.YearGroup,order:e.value,permissions:o[e.id]||[]}}));default:return e}var t,n,o}function H(e){return H="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},H(e)}function W(){W=function(){return r};var e,r={},t=Object.prototype,n=t.hasOwnProperty,o=Object.defineProperty||function(e,r,t){e[r]=t.value},i="function"==typeof Symbol?Symbol:{},a=i.iterator||"@@iterator",s=i.asyncIterator||"@@asyncIterator",c=i.toStringTag||"@@toStringTag";function u(e,r,t){return Object.defineProperty(e,r,{value:t,enumerable:!0,configurable:!0,writable:!0}),e[r]}try{u({},"")}catch(e){u=function(e,r,t){return e[r]=t}}function l(e,r,t,n){var i=r&&r.prototype instanceof y?r:y,a=Object.create(i.prototype),s=new I(n||[]);return o(a,"_invoke",{value:k(e,t,s)}),a}function m(e,r,t){try{return{type:"normal",arg:e.call(r,t)}}catch(e){return{type:"throw",arg:e}}}r.wrap=l;var d="suspendedStart",p="suspendedYield",f="executing",h="completed",v={};function y(){}function g(){}function b(){}var E={};u(E,a,(function(){return this}));var w=Object.getPrototypeOf,N=w&&w(w(O([])));N&&N!==t&&n.call(N,a)&&(E=N);var P=b.prototype=y.prototype=Object.create(E);function A(e){["next","throw","return"].forEach((function(r){u(e,r,(function(e){return this._invoke(r,e)}))}))}function S(e,r){function t(o,i,a,s){var c=m(e[o],e,i);if("throw"!==c.type){var u=c.arg,l=u.value;return l&&"object"==H(l)&&n.call(l,"__await")?r.resolve(l.__await).then((function(e){t("next",e,a,s)}),(function(e){t("throw",e,a,s)})):r.resolve(l).then((function(e){u.value=e,a(u)}),(function(e){return t("throw",e,a,s)}))}s(c.arg)}var i;o(this,"_invoke",{value:function(e,n){function o(){return new r((function(r,o){t(e,n,r,o)}))}return i=i?i.then(o,o):o()}})}function k(r,t,n){var o=d;return function(i,a){if(o===f)throw Error("Generator is already running");if(o===h){if("throw"===i)throw a;return{value:e,done:!0}}for(n.method=i,n.arg=a;;){var s=n.delegate;if(s){var c=C(s,n);if(c){if(c===v)continue;return c}}if("next"===n.method)n.sent=n._sent=n.arg;else if("throw"===n.method){if(o===d)throw o=h,n.arg;n.dispatchException(n.arg)}else"return"===n.method&&n.abrupt("return",n.arg);o=f;var u=m(r,t,n);if("normal"===u.type){if(o=n.done?h:p,u.arg===v)continue;return{value:u.arg,done:n.done}}"throw"===u.type&&(o=h,n.method="throw",n.arg=u.arg)}}}function C(r,t){var n=t.method,o=r.iterator[n];if(o===e)return t.delegate=null,"throw"===n&&r.iterator.return&&(t.method="return",t.arg=e,C(r,t),"throw"===t.method)||"return"!==n&&(t.method="throw",t.arg=new TypeError("The iterator does not provide a '"+n+"' method")),v;var i=m(o,r.iterator,t.arg);if("throw"===i.type)return t.method="throw",t.arg=i.arg,t.delegate=null,v;var a=i.arg;return a?a.done?(t[r.resultName]=a.value,t.next=r.nextLoc,"return"!==t.method&&(t.method="next",t.arg=e),t.delegate=null,v):a:(t.method="throw",t.arg=new TypeError("iterator result is not an object"),t.delegate=null,v)}function x(e){var r={tryLoc:e[0]};1 in e&&(r.catchLoc=e[1]),2 in e&&(r.finallyLoc=e[2],r.afterLoc=e[3]),this.tryEntries.push(r)}function j(e){var r=e.completion||{};r.type="normal",delete r.arg,e.completion=r}function I(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(x,this),this.reset(!0)}function O(r){if(r||""===r){var t=r[a];if(t)return t.call(r);if("function"==typeof r.next)return r;if(!isNaN(r.length)){var o=-1,i=function t(){for(;++o<r.length;)if(n.call(r,o))return t.value=r[o],t.done=!1,t;return t.value=e,t.done=!0,t};return i.next=i}}throw new TypeError(H(r)+" is not iterable")}return g.prototype=b,o(P,"constructor",{value:b,configurable:!0}),o(b,"constructor",{value:g,configurable:!0}),g.displayName=u(b,c,"GeneratorFunction"),r.isGeneratorFunction=function(e){var r="function"==typeof e&&e.constructor;return!!r&&(r===g||"GeneratorFunction"===(r.displayName||r.name))},r.mark=function(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,b):(e.__proto__=b,u(e,c,"GeneratorFunction")),e.prototype=Object.create(P),e},r.awrap=function(e){return{__await:e}},A(S.prototype),u(S.prototype,s,(function(){return this})),r.AsyncIterator=S,r.async=function(e,t,n,o,i){void 0===i&&(i=Promise);var a=new S(l(e,t,n,o),i);return r.isGeneratorFunction(t)?a:a.next().then((function(e){return e.done?e.value:a.next()}))},A(P),u(P,c,"Generator"),u(P,a,(function(){return this})),u(P,"toString",(function(){return"[object Generator]"})),r.keys=function(e){var r=Object(e),t=[];for(var n in r)t.push(n);return t.reverse(),function e(){for(;t.length;){var n=t.pop();if(n in r)return e.value=n,e.done=!1,e}return e.done=!0,e}},r.values=O,I.prototype={constructor:I,reset:function(r){if(this.prev=0,this.next=0,this.sent=this._sent=e,this.done=!1,this.delegate=null,this.method="next",this.arg=e,this.tryEntries.forEach(j),!r)for(var t in this)"t"===t.charAt(0)&&n.call(this,t)&&!isNaN(+t.slice(1))&&(this[t]=e)},stop:function(){this.done=!0;var e=this.tryEntries[0].completion;if("throw"===e.type)throw e.arg;return this.rval},dispatchException:function(r){if(this.done)throw r;var t=this;function o(n,o){return s.type="throw",s.arg=r,t.next=n,o&&(t.method="next",t.arg=e),!!o}for(var i=this.tryEntries.length-1;i>=0;--i){var a=this.tryEntries[i],s=a.completion;if("root"===a.tryLoc)return o("end");if(a.tryLoc<=this.prev){var c=n.call(a,"catchLoc"),u=n.call(a,"finallyLoc");if(c&&u){if(this.prev<a.catchLoc)return o(a.catchLoc,!0);if(this.prev<a.finallyLoc)return o(a.finallyLoc)}else if(c){if(this.prev<a.catchLoc)return o(a.catchLoc,!0)}else{if(!u)throw Error("try statement without catch or finally");if(this.prev<a.finallyLoc)return o(a.finallyLoc)}}}},abrupt:function(e,r){for(var t=this.tryEntries.length-1;t>=0;--t){var o=this.tryEntries[t];if(o.tryLoc<=this.prev&&n.call(o,"finallyLoc")&&this.prev<o.finallyLoc){var i=o;break}}i&&("break"===e||"continue"===e)&&i.tryLoc<=r&&r<=i.finallyLoc&&(i=null);var a=i?i.completion:{};return a.type=e,a.arg=r,i?(this.method="next",this.next=i.finallyLoc,v):this.complete(a)},complete:function(e,r){if("throw"===e.type)throw e.arg;return"break"===e.type||"continue"===e.type?this.next=e.arg:"return"===e.type?(this.rval=this.arg=e.arg,this.method="return",this.next="end"):"normal"===e.type&&r&&(this.next=r),v},finish:function(e){for(var r=this.tryEntries.length-1;r>=0;--r){var t=this.tryEntries[r];if(t.finallyLoc===e)return this.complete(t.completion,t.afterLoc),j(t),v}},catch:function(e){for(var r=this.tryEntries.length-1;r>=0;--r){var t=this.tryEntries[r];if(t.tryLoc===e){var n=t.completion;if("throw"===n.type){var o=n.arg;j(t)}return o}}throw Error("illegal catch attempt")},delegateYield:function(r,t,n){return this.delegate={iterator:O(r),resultName:t,nextLoc:n},"next"===this.method&&(this.arg=e),v}},r}function q(e,r){(null==r||r>e.length)&&(r=e.length);for(var t=0,n=Array(r);t<r;t++)n[t]=e[t];return n}var B=function(e,r,t,n){return new(t||(t=Promise))((function(o,i){function a(e){try{c(n.next(e))}catch(e){i(e)}}function s(e){try{c(n.throw(e))}catch(e){i(e)}}function c(e){var r;e.done?o(e.value):(r=e.value,r instanceof t?r:new t((function(e){e(r)}))).then(a,s)}c((n=n.apply(e,r||[])).next())}))},$=o.T.encloseNamespace("settings.manageGroupPermissions");function Q(){var e=(0,L.Z)(),r=j.a.useGetFetchAsync(),t=j.a.useBasicFetch(O.N.currentUser()),o=j.a.useBasicFetch(t.data&&I.h.yearGroups(t.data.customerId)),i=j.a.useBasicFetch(G.groupPermissions());(0,T.v)([o,i]);var s,c,u,l={groupPermissionsTableData:(c=n.useReducer(U,null),u=2,s=function(e){if(Array.isArray(e))return e}(c)||function(e,r){var t=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=t){var n,o,i,a,s=[],c=!0,u=!1;try{if(i=(t=t.call(e)).next,0===r){if(Object(t)!==t)return;c=!1}else for(;!(c=(n=i.call(t)).done)&&(s.push(n.value),s.length!==r);c=!0);}catch(e){u=!0,o=e}finally{try{if(!c&&null!=t.return&&(a=t.return(),Object(a)!==a))return}finally{if(u)throw o}}return s}}(c,u)||R(c,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.")}())[0],dispatch:s[1]},m=l.groupPermissionsTableData,p=l.dispatch,f=function(e,r){return function(e){if(Array.isArray(e))return e}(e)||function(e,r){var t=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=t){var n,o,i,a,s=[],c=!0,u=!1;try{if(i=(t=t.call(e)).next,0===r){if(Object(t)!==t)return;c=!1}else for(;!(c=(n=i.call(t)).done)&&(s.push(n.value),s.length!==r);c=!0);}catch(e){u=!0,o=e}finally{try{if(!c&&null!=t.return&&(a=t.return(),Object(a)!==a))return}finally{if(u)throw o}}return s}}(e,r)||function(e,r){if(e){if("string"==typeof e)return q(e,r);var t={}.toString.call(e).slice(8,-1);return"Object"===t&&e.constructor&&(t=e.constructor.name),"Map"===t||"Set"===t?Array.from(e):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?q(e,r):void 0}}(e,r)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}(n.useState(!1),2),h=f[0],v=f[1];function y(){var e=[];return m.forEach((function(r){if(r.permissions){var t=r.permissions.map((function(e){return{groupId:r.groupId,groupType:r.groupType,permissionName:e.permissionName,access:e.access}}));e=e.concat(t)}})),e}return n.useEffect((function(){o.data&&i.data&&p({type:"init",groupPermissions:i.data,yearGroups:o.data})}),[o.hasCompleted,i.hasCompleted]),{updateGroupPermission:function(e,r,t,n){v(!0),r!==a.C.ViewRestrictedMode?p({type:"toggle",groupId:e,permissionName:r,order:t,allowed:n}):p({type:"restricted",groupId:e,order:t,allowed:n})},isPermissionEnabled:function(e,r){var t=d.m.findWhere(m,{groupId:e}),n=d.m.findWhere(t.permissions,{permissionName:r});return n?n.access===g.Allow||n.access===g.Default:r!==a.C.ViewRestrictedMode},groupPermissionsTableData:m,hasChanged:h,getGroupPermissionsRequestData:y,updateGroupPermissions:function(){return B(this,void 0,void 0,W().mark((function t(){var n;return W().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return n=y(),t.prev=1,t.next=4,r(G.updateGroupPermissions(n));case 4:v(!1),e.success($("success")),t.next=11;break;case 8:t.prev=8,t.t0=t.catch(1),e.error($("error"));case 11:case"end":return t.stop()}}),t,null,[[1,8]])})))},undoChanges:function(){v(!1),p({type:"init",groupPermissions:i.data,yearGroups:o.data})}}}function Y(e,r){(null==r||r>e.length)&&(r=e.length);for(var t=0,n=Array(r);t<r;t++)n[t]=e[t];return n}function z(){return n.createElement("div",{className:"w-100 rounded-3 border border-light"},n.createElement("ul",{className:"list-unstyled w-100"},n.createElement("li",{className:"py-2 px-3 w-100"}," "),(e=Array(13),function(e){if(Array.isArray(e))return Y(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,r){if(e){if("string"==typeof e)return Y(e,r);var t={}.toString.call(e).slice(8,-1);return"Object"===t&&e.constructor&&(t=e.constructor.name),"Map"===t||"Set"===t?Array.from(e):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?Y(e,r):void 0}}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()).map((function(e,r){return n.createElement("li",{key:"partial-".concat(r),className:"".concat(r%2==0?"partial-loading-background":""," w-100 p-3")}," ")}))));var e}const X="RiJHh";function Z(e,r){(null==r||r>e.length)&&(r=e.length);for(var t=0,n=Array(r);t<r;t++)n[t]=e[t];return n}var J="settings.manageGroupPermissions",K=o.T.encloseNamespace(J),ee="manage-group-permissions",re={table:"table table-borderless align-middle min-w-100 mb-0",header:"border-bottom",headerCell:"".concat(X," align-middle fw-semibold px-3 py-2"),body:"striped-list",cell:"".concat(X," bg-transparent p-3")},te=[{permissionName:a.C.ViewDiscover,heading:K("discover"),tooltip:K("discoverTooltip")},{permissionName:a.C.ViewSearch,heading:K("search"),tooltip:K("searchTooltip")},{permissionName:a.C.UploadVideo,heading:K("uploadVideos"),tooltip:K("uploadVideosTooltip")},{permissionName:a.C.ViewMoviesTv,heading:K("moviestv"),tooltip:K("moviestvTooltip")},{permissionName:a.C.ViewLibraries,heading:K("customLibraries"),tooltip:K("customLibrariesTooltip")}];function ne(){var e,r,t=u.o.getLiteArticle(s.b.ManageGroupPermissions),o=Q(),d=o.updateGroupPermission,p=o.isPermissionEnabled,f=o.groupPermissionsTableData,h=o.updateGroupPermissions,v=o.hasChanged,y=o.undoChanges,g=(e=n.useState(null),r=2,function(e){if(Array.isArray(e))return e}(e)||function(e,r){var t=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=t){var n,o,i,a,s=[],c=!0,u=!1;try{if(i=(t=t.call(e)).next,0===r){if(Object(t)!==t)return;c=!1}else for(;!(c=(n=i.call(t)).done)&&(s.push(n.value),s.length!==r);c=!0);}catch(e){u=!0,o=e}finally{try{if(!c&&null!=t.return&&(a=t.return(),Object(a)!==a))return}finally{if(u)throw o}}return s}}(e,r)||function(e,r){if(e){if("string"==typeof e)return Z(e,r);var t={}.toString.call(e).slice(8,-1);return"Object"===t&&e.constructor&&(t=e.constructor.name),"Map"===t||"Set"===t?Array.from(e):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?Z(e,r):void 0}}(e,r)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),b=g[0],E=g[1],w=(0,c.f)();n.useEffect((function(){if(v)return w.lock({id:ee,title:K("navLockTitle"),text:K("navLockBody")}),function(){w.unlock(ee)}}),[v]),n.useEffect((function(){return l.e.lockContentWidth(),function(){return l.e.unlockContentWidth()}}),[]);var P={isPermissionEnabled:p,updateGroupPermission:d,hoveredPermission:b,onPermissionHover:function(e){E(e)}};return n.createElement(m.d,{heading:K("heading"),breadcrumbs:[K("breadcrumb")],requiredPermissions:a.C.ManageCustomerSettings},n.createElement("p",{className:"mb-2"},n.createElement(i.x,{namespace:J,phrase:"description",options:{articleUrl:t}})),n.createElement("div",{className:"d-flex justify-content-between align-items-end mb-3"},n.createElement("p",{className:"me-2 mb-0"},n.createElement(i.x,{namespace:J,phrase:"selectFeatures"})),n.createElement("div",{className:"d-flex float-end gap-3"},n.createElement("button",{className:"btn btn-outline-dark text-nowrap",onClick:function(){return y()},disabled:!v},n.createElement(i.x,{namespace:J,phrase:"undo"})),n.createElement("button",{className:"btn btn-dark text-nowrap",onClick:h,disabled:!v},n.createElement(i.x,{namespace:J,phrase:"submit"})))),!f&&n.createElement(z,null),f&&n.createElement("div",{className:"rounded-3 border border-light overflow-hidden"},n.createElement("table",{className:re.table},n.createElement("thead",{className:re.header},n.createElement("tr",null,n.createElement("td",{className:re.headerCell},K("yearGroup")),n.createElement("td",{className:re.headerCell},n.createElement(x,{heading:K("restrictedMode"),tooltip:K("restrictedModeTooltip")})),te.map((function(e){return n.createElement("td",{key:"thead-".concat(e.permissionName),className:re.headerCell},n.createElement(x,{heading:e.heading,tooltip:e.tooltip}))})))),n.createElement("tbody",{className:re.body},f.map((function(e){var r=re.cell;return n.createElement("tr",{key:e.groupId},n.createElement("td",{className:r},e.groupName),n.createElement("td",{className:r},n.createElement(k,Object.assign({groupPermissions:e},P))),N.map((function(t){return n.createElement("td",{key:"tbody-".concat(t),className:r},n.createElement(A,Object.assign({permissionName:t,groupPermissions:e},P)))})))}))))))}}}]);
3
+ //# sourceMappingURL=5376-38456da0db-lite.chunk.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"scripts/5376-6e993d6097-lite.chunk.js","mappings":"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","sources":["file:///app/packages/libs/shared/src/components/breadcrumbs/Breadcrumbs.tsx","file:///app/packages/libs/shared/src/enums/SupportArticle.ts","file:///app/packages/libs/shared/src/errors/handlers/HttpErrorHandlers.ts","file:///app/packages/libs/shared/src/hooks/UseHandleObjectError.ts","file:///app/packages/libs/shared/src/utils/PartialLoadingHelper.ts","file:///app/packages/projects/lite/src/apps/settings/components/settings-layout/SettingsLayout.tsx","file:///app/packages/projects/lite/src/apps/settings/views/manage-group-permissions/components/cascade-hover-container/cascade-hover-container.scss","file:///app/packages/projects/lite/src/apps/settings/views/manage-group-permissions/components/cascade-hover-container/CascadeHoverContainer.tsx","file:///app/packages/projects/lite/src/apps/settings/views/manage-group-permissions/constants/GroupPermissions.ts","file:///app/packages/projects/lite/src/apps/settings/views/manage-group-permissions/interfaces/GroupPermissions.ts","file:///app/packages/projects/lite/src/apps/settings/views/manage-group-permissions/components/permission-checkbox/permission-checkbox.scss","file:///app/packages/projects/lite/src/apps/settings/views/manage-group-permissions/components/permission-checkbox/PermissionCheckbox.tsx","file:///app/packages/projects/lite/src/apps/settings/views/manage-group-permissions/components/restricted-toggle/RestrictedToggle.tsx","file:///app/packages/projects/lite/src/apps/settings/views/manage-group-permissions/components/table-header/ManagePermissionsTableHeader.tsx","file:///app/packages/projects/lite/src/apps/settings/flight-requests/GroupPermissionsRequests.ts","file:///app/packages/projects/lite/src/apps/settings/views/manage-group-permissions/hooks/useGroupPermissionsReducer.ts","file:///app/packages/projects/lite/src/apps/settings/views/manage-group-permissions/hooks/useGroupPermissionsTableData.ts","file:///app/packages/projects/lite/src/apps/settings/views/manage-group-permissions/partial-loading/ManageGroupPermissionsPartial.tsx","file:///app/packages/projects/lite/src/apps/settings/views/manage-group-permissions/manage-group-permissions.scss","file:///app/packages/projects/lite/src/apps/settings/views/manage-group-permissions/ManageGroupPermissionsView.tsx"],"sourcesContent":["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 { MediaQueryStrings } from 'libs/shared/enums/MediaQueries';\nimport { useMediaQuery } from 'libs/shared/hooks/UseMediaQuery';\nimport { PartialLoadingHelper } from 'libs/shared/utils/PartialLoadingHelper';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport { SvgContainer, SvgContainerSize } from '../svg-container/SvgContainer';\n\nconst namespace = 'shared.breadcrumbComponent';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nconst COLLAPSE_CHARACTER_COUNT = 64;\nconst MAX_SEGMENT_LENGTH = 48;\n\nexport interface Breadcrumb {\n name: string;\n appLink?: Core.AppLink;\n active?: boolean;\n}\n\ninterface BreadcrumbItemProps {\n breadcrumb: Breadcrumb;\n withBackIcon?: boolean;\n}\n\nexport const BreadcrumbItem = React.forwardRef((\n props: BreadcrumbItemProps,\n ref: React.ForwardedRef<HTMLElement>\n) => {\n const { breadcrumb: { name, appLink, active }, withBackIcon } = props;\n\n let trimmedName = name;\n let title: string = null;\n\n if (trimmedName.length > MAX_SEGMENT_LENGTH) {\n trimmedName = name.slice(0, MAX_SEGMENT_LENGTH) + '...';\n\n // Only setting the title when we trim, because otherwise it's really not needed - Sha\n title = name;\n }\n\n return (\n <li\n className={`breadcrumb-item${active ? ' active' : ''}`}\n title={title}\n >\n {active\n ? <strong>{trimmedName}</strong>\n : <AppLink appLink={appLink} ref={ref}>\n {withBackIcon && <SvgContainer svgName={cvSvgLibrary.ChevronLeft} size={SvgContainerSize.Small} />}\n <span className={withBackIcon ? 'ms-2' : ''}>{trimmedName}</span>\n </AppLink>\n }\n </li>\n );\n});\n\ninterface BreadcrumbsProps {\n breadcrumbs: Breadcrumb[];\n}\n\nexport const Breadcrumbs = ({ breadcrumbs }: BreadcrumbsProps) => {\n const isMobile = useMediaQuery(MediaQueryStrings.XS);\n\n const length = breadcrumbs?.length || 0;\n \n const [ collapse, setCollapse ] = React.useState(false);\n const [ shouldFocus, setShouldFocus ] = React.useState(false);\n const expandRef = React.useRef<HTMLElement>();\n\n React.useEffect(() => {\n const characterLength = breadcrumbs?.reduce((prev, next) => prev + next.name.length, 0) ?? 0;\n\n if (length > 4 && characterLength > COLLAPSE_CHARACTER_COUNT)\n setCollapse(true);\n }, [breadcrumbs?.length]);\n\n /**\n * Focus our first expanded item the first time it appears.\n */\n React.useLayoutEffect(() => {\n if (shouldFocus)\n expandRef.current?.focus();\n }, [ expandRef.current, shouldFocus ]);\n\n function onClickExpand() {\n setCollapse(false);\n setShouldFocus(true);\n }\n\n if (!length || (isMobile && length < 2))\n return <></>;\n\n if (isMobile)\n return (\n <nav aria-label='breadcrumb'>\n <ol className='breadcrumb m-0 p-0'>\n <BreadcrumbItem breadcrumb={breadcrumbs[length - 2]} withBackIcon />\n </ol>\n </nav>\n );\n\n const first = <BreadcrumbItem breadcrumb={breadcrumbs[0]} />;\n const second = length > 2 ? <BreadcrumbItem breadcrumb={breadcrumbs[1]} /> : <></>;\n const secondLast = length > 3 ? <BreadcrumbItem breadcrumb={breadcrumbs[length - 2]} /> : <></>;\n const last = length > 1 ? <BreadcrumbItem breadcrumb={breadcrumbs[length - 1]} /> : <></>;\n const rest = breadcrumbs.slice(2, length - 2);\n\n return (\n <nav aria-label='breadcrumb'>\n <ol className='breadcrumb m-0 p-0'>\n {first}\n {second}\n {collapse ?\n <li className='breadcrumb-item'>\n <button\n className='btn-link'\n onClick={onClickExpand}\n aria-label={getPhrase('expand')}\n >\n ...\n </button>\n </li> :\n rest.map((breadcrumb, idx) => (\n <BreadcrumbItem\n key={idx}\n breadcrumb={breadcrumb}\n ref={idx === 0 ? expandRef : null}\n />\n ))\n }\n {secondLast}\n {last}\n </ol>\n </nav>\n );\n};\n\nexport const PartialBreadcrumbs = React.memo(function({ numItems = 3 }: { numItems?: number; }) {\n const isMobile = useMediaQuery(MediaQueryStrings.XS);\n\n if (isMobile) {\n return (\n <div className='partial-loading-background' style={{ height: '1.3125rem', width: '6rem' }} />\n );\n }\n\n return (\n <nav aria-label='breadcrumb'>\n <ol className='breadcrumb m-0 p-0'>\n {PartialLoadingHelper.getPartialLoadingItems({ numItems }).map(({ width }, idx) => (\n <li key={idx} className='breadcrumb-item'>\n <span className='d-inline-block partial-loading-background' style={{ width }} dangerouslySetInnerHTML={{ __html: '&nbsp' }} />\n </li>\n ))}\n </ol>\n </nav>\n );\n});","// Article name mapped to article ID on support site. Used by `ArticleHelper`\n\nexport enum OnlineSupportArticle {\n AddToPlaylist = '115005679748',\n EditSsoAccounts = '8202508040345',\n\n // LE\n LibraryEditor = '360001974533',\n VideoAccess = '360000153947',\n AddFromOnline = '360011718234',\n UploadToLibraryEditor = '360012069334',\n PBTErrorCodes = '360012421153',\n ManuelReview = '360020004534',\n LibraryReview = '360000163788',\n}\n\nexport enum LiteSupportArticle {\n Integrations = '4407268725529',\n Classrooms = '4405362551833',\n MakeInteractive = '4405370510873',\n EditSsoAccounts = '8202605666073',\n UploadToLibraryEditor = '10672936659865',\n AddFromLite = '10671345281561',\n ManageSsoYearGroups = '14691130889241',\n ContentReview = '18525199576601',\n ContentPermissions = '14692125209497',\n AccessSettings = '22110291468057',\n ContentGuidelines = '24133696186009',\n FoxtelFaq = '24133519542169',\n ViviIntegration = '23826297956377',\n AppleTvIntegration = '25832373739929',\n RssFeed = '32567445635097',\n ManageGroupPermissions = '35407217335705'\n}\n","import { BaseError } from 'libs/common/backbone/core/BaseError';\nimport { HttpStatus } from 'libs/common/backbone/enums/HttpStatus';\nimport { Xhr } from 'libs/common/backbone/interfaces';\nimport { Core } from 'libs/common/core';\n\nimport { NotFoundError } from 'libs/shared/errors/general/not-found/NotFoundError';\nimport { PrivateResourceError } from 'libs/shared/errors/general/private-resource/PrivateResourceError';\nimport { RegionLockedResourceError } from 'libs/shared/errors/general/region-locked-resource/RegionLockedResourceError';\nimport { UnspecifiedError } from 'libs/shared/errors/general/unspecified-error/UnspecifiedError';\nimport { VideoTypes } from 'libs/shared/interfaces';\n\nexport interface HttpErrorMap {\n notFound?: new () => BaseError;\n forbidden?: {\n rating?: new (description: string) => BaseError;\n yearLevel?: new (description: string) => BaseError;\n region?: new () => BaseError;\n privacy?: new (video?: VideoTypes) => BaseError;\n };\n badRequest?: new () => BaseError;\n}\n\nexport type IgnoreHttpErrorMap = {\n [key in keyof HttpErrorMap]: boolean;\n};\n\nconst defaultErrors: HttpErrorMap = {\n notFound: NotFoundError,\n forbidden: {\n rating: PrivateResourceError,\n yearLevel: PrivateResourceError,\n region: RegionLockedResourceError,\n privacy: PrivateResourceError\n },\n badRequest: UnspecifiedError\n};\n\nexport function handleHttpError(\n info: HttpStatus | Xhr,\n customErrorMap: HttpErrorMap = {},\n /**\n * Prevent certain errors in the errorMap from being thrown\n * so that you may implement your own handler\n */\n ignoreMap: IgnoreHttpErrorMap = {}\n): void {\n if (!info)\n return;\n\n let statusCode: HttpStatus;\n\n if (typeof(info) === 'number') {\n statusCode = info;\n } else {\n statusCode = info.status;\n }\n\n const errorMap = {\n ...defaultErrors,\n ...customErrorMap\n };\n\n if (!statusCode)\n return;\n\n if (!Core.ErrorHelper.isStatusCodeError(statusCode))\n return;\n\n if (statusCode === HttpStatus.NotFound) {\n if (!ignoreMap.notFound)\n Core.ErrorHelper.throw(new errorMap.notFound());\n return;\n }\n\n if (statusCode === HttpStatus.Forbidden) {\n /**\n * TODO: Work out how to go about handling all forbidden errors, such as region locking, year levels,\n * ratings, and privacy.\n */\n if (!ignoreMap.forbidden)\n Core.ErrorHelper.throw(new errorMap.forbidden.privacy());\n return;\n }\n\n if (!ignoreMap.badRequest)\n Core.ErrorHelper.throw(new errorMap.badRequest());\n}\n\nexport function handleXhrError(xhr: Xhr, customErrorMap?: HttpErrorMap): void {\n handleHttpError(xhr.status, customErrorMap);\n}","import { useEffect } from 'react';\n\nimport { Flight } from 'libs/common/flight';\n\nimport { handleHttpError, HttpErrorMap, IgnoreHttpErrorMap } from 'libs/shared/errors/handlers/HttpErrorHandlers';\n\nfunction generateCacheKey(flightObjs: Array<Flight.Response<any>>): string {\n return flightObjs.map(obj => obj.statusCode).join(':');\n}\n\n// TODO: Change this to just `useHandleHttpError` and only accept a status code.\nexport function useHandleObjectError(\n _flightObjs: Flight.Response<any> | Array<Flight.Response<any>>,\n customErrors?: HttpErrorMap,\n ignoreErrors?: IgnoreHttpErrorMap\n): void {\n const flightObjs = Array.isArray(_flightObjs) ? _flightObjs : [_flightObjs];\n\n useEffect(() => {\n flightObjs.forEach(obj => {\n handleHttpError(obj.statusCode, customErrors, ignoreErrors);\n });\n }, [ generateCacheKey(flightObjs), customErrors, ignoreErrors ]);\n}","const DEFAULT_PARTIAL_LOADING_OPTIONS: PartialLoadingOptions = {\n numItems: 5,\n minWidth: 50, // px\n maxWidth: 100 // px\n};\n\nexport interface PartialLoadingOptions {\n numItems?: number;\n minWidth?: number;\n maxWidth?: number;\n}\n\ninterface PartialLoadingItem {\n width: string;\n}\n\nexport const PartialLoadingHelper = {\n getPartialLoadingItems(options: PartialLoadingOptions = {}): PartialLoadingItem[] {\n const opts = {\n ...DEFAULT_PARTIAL_LOADING_OPTIONS,\n ...options\n };\n\n const getRandomFilterWidth = () => Math.max(Math.floor(Math.random() * opts.maxWidth), opts.minWidth);\n\n return [...Array(opts.numItems)].map(() => ({ width: `${getRandomFilterWidth()}px` }));\n }\n};","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { Breadcrumbs } from 'libs/shared/components/breadcrumbs/Breadcrumbs';\nimport { PermissionName } from 'libs/shared/enums/PermissionName';\nimport { usePermissions } from 'libs/shared/hooks/usePermissions';\n\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\n\nimport { useGetSettingsGroups } from 'apps/settings/hooks/useGetSettingsGroups';\n\nconst namespace = 'settings.settingsLayout';\n\n/**\n * Checks if the current user has permission to access the settings module\n */\nexport const useCanAccessSettings = (requiredPermissions: PermissionName | PermissionName[]): boolean => {\n const { hasPermissions } = usePermissions();\n const settingsGroups = useGetSettingsGroups();\n\n /**\n * TODO: Update all settings pages to pasas required permissions, because checking the \n * `useGetSettingsGroups()` values clearly doesnt work for settings pages with multiple\n * applinks inside of them. - Sha\n */\n if (requiredPermissions)\n return hasPermissions(requiredPermissions);\n\n const currentRoute = Core.AppLinkHelper.getCurrentAppLink();\n\n /**\n * Allows us to have popups sitting in other locations be used\n * by our settings pages. For example the manage video access popup\n * in the \"videos with restricted access\" page - Sha\n */\n if (currentRoute.application !== AppChannels.SETTINGS)\n return true;\n\n return settingsGroups.some(group => {\n return group.modules.some(settingsModule => {\n if ('appLink' in settingsModule) {\n return settingsModule.appLink.action === currentRoute.action;\n }\n\n return false;\n });\n });\n};\n\ninterface SettingsLayoutProps {\n heading: string;\n breadcrumbs: string[];\n description?: string;\n requiredPermissions?: PermissionName | PermissionName[];\n headingButton?: () => JSX.Element;\n}\n\nexport function SettingsLayout(props: React.PropsWithChildren<SettingsLayoutProps>): JSX.Element {\n const canAccess = useCanAccessSettings(props.requiredPermissions);\n\n React.useEffect(() => {\n if (!canAccess) {\n Core.AppLinkHelper.trigger({\n application: AppChannels.SETTINGS,\n action: Actions.Settings.HOME\n }, { replace: true });\n }\n }, [canAccess]);\n\n if (!canAccess)\n return <></>;\n\n const breadcrumbs = props.breadcrumbs.map((name, i) => ({\n name,\n appLink: {\n application: AppChannels.SETTINGS,\n action: Actions.Settings.HOME\n },\n active: i === props.breadcrumbs.length - 1\n }));\n\n return (\n <div className='px-3'>\n <div className='d-flex align-items-center justify-content-between'>\n <h1 className='h2'>{props.heading}</h1>\n {props.headingButton?.()}\n </div>\n <div className='pb-3'>\n <Breadcrumbs\n breadcrumbs={[\n {\n name: LanguageService.getPhrase(namespace, 'settingsBreadcrumb'),\n appLink: {\n application: AppChannels.SETTINGS,\n action: Actions.Settings.HOME\n }\n },\n ...breadcrumbs\n ]}\n />\n </div>\n {props.description &&\n <>\n <p>{props.description}</p>\n <hr />\n </>\n }\n\n {props.children}\n </div>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"container\":\"Vxu2N\"};","import React from 'react';\n\nimport { HoveredPermission } from 'apps/settings/views/manage-group-permissions/ManageGroupPermissionsView';\n\nimport styles from './cascade-hover-container.scss';\n\ninterface CascadeHoverContainerProps {\n className?: string;\n cascadeCheck?: boolean;\n cascadeUncheck?: boolean;\n permission: HoveredPermission;\n isDisabled?: boolean;\n onHover: (permission?: HoveredPermission) => void;\n}\n\nexport function CascadeHoverContainer(props: React.PropsWithChildren<CascadeHoverContainerProps>) {\n return (\n <div\n className={`${styles.container} ${props.className} ${!props.isDisabled ? `${props.cascadeCheck || props.cascadeUncheck ? `opacity-50` : ''} opacity-50-hover` : 'pointer-events-none'}`}\n onMouseEnter={() => props.onHover(props.permission)}\n onMouseLeave={() => props.onHover()}\n >\n {props.children}\n </div>\n );\n}","import { PermissionName } from 'libs/shared/enums/PermissionName';\n\nexport const RESTRICTED_MODE_PERMISSIONS = [\n PermissionName.ViewDiscover,\n PermissionName.ViewSearch,\n PermissionName.UploadVideo\n];\nexport const TOGGLEABLE_GROUP_PERMISSIONS = [ PermissionName.ViewMoviesTv, PermissionName.ViewLibraries ];\nexport const ALL_GROUP_PERMISSIONS = [ ...RESTRICTED_MODE_PERMISSIONS, ...TOGGLEABLE_GROUP_PERMISSIONS ];\n","import { PermissionName } from 'libs/shared/enums/PermissionName';\n\nexport enum GroupPermissionAccess {\n Default = 'Default',\n Allow = 'Allow',\n Deny = 'Deny'\n}\n\nexport enum GroupPermissionType {\n YearGroup\n}\n\nexport interface GroupPermission {\n groupId: string;\n groupType: GroupPermissionType;\n permissionName: PermissionName,\n access: GroupPermissionAccess;\n}","// extracted by mini-css-extract-plugin\nexport default {\"checkbox\":\"wLkeZ\",\"checkedTransition\":\"wWiuo\"};","import React from 'react';\n\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\n\nimport { Checkbox } from 'libs/shared/components/forms/form-checkbox/Checkbox';\nimport { SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\nimport { PermissionName } from 'libs/shared/enums/PermissionName';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport { CascadeHoverContainer } from 'apps/settings/views/manage-group-permissions/components/cascade-hover-container/CascadeHoverContainer';\nimport { RESTRICTED_MODE_PERMISSIONS } from 'apps/settings/views/manage-group-permissions/constants/GroupPermissions';\nimport { GroupPermissionAccess } from 'apps/settings/views/manage-group-permissions/interfaces/GroupPermissions';\nimport { GroupPermissionsTableData } from 'apps/settings/views/manage-group-permissions/interfaces/GroupPermissionsTableData';\nimport { HoveredPermission } from 'apps/settings/views/manage-group-permissions/ManageGroupPermissionsView';\n\nimport styles from './permission-checkbox.scss';\n\ninterface PermissionCheckboxProps {\n permissionName: PermissionName;\n groupPermissions: GroupPermissionsTableData;\n hoveredPermission: HoveredPermission;\n isPermissionEnabled: (groupId: string, permissionName: string) => boolean;\n updateGroupPermission: (groupId: string, permissionName: PermissionName, order: number, allowed: boolean) => void;\n onPermissionHover: (hoveredPermission?: HoveredPermission) => void\n}\n\nexport function PermissionCheckbox(props: PermissionCheckboxProps) {\n const groupId = props.groupPermissions.groupId;\n const permissionAllowed = props.isPermissionEnabled(groupId, props.permissionName);\n const restrictedMode = ArrayHelper.findWhere(\n props.groupPermissions.permissions,\n { permissionName: PermissionName.ViewRestrictedMode }\n );\n const isRestricted = restrictedMode?.access === GroupPermissionAccess.Allow;\n\n const isRestrictedOnlyPermission = RESTRICTED_MODE_PERMISSIONS.find(\n restrictedPermission => restrictedPermission === props.permissionName\n );\n \n const cascadeRestrictedCheck =\n isRestricted &&\n props.hoveredPermission?.permissionName === PermissionName.ViewRestrictedMode &&\n props.hoveredPermission?.order <= props.groupPermissions.order;\n const cascadeRestrictedUncheck =\n !isRestricted &&\n props.hoveredPermission?.permissionName === PermissionName.ViewRestrictedMode &&\n props.hoveredPermission?.order >= props.groupPermissions.order;\n\n if (isRestrictedOnlyPermission) {\n if (cascadeRestrictedUncheck || (isRestricted && !cascadeRestrictedCheck)) {\n return <SvgContainer svgName={cvSvgLibrary.Close} />;\n }\n\n if (cascadeRestrictedCheck || (!isRestricted && !cascadeRestrictedUncheck)) {\n return <SvgContainer svgName={cvSvgLibrary.Tick} />;\n }\n }\n\n const isPermissionHovered = props.hoveredPermission?.permissionName === props.permissionName;\n\n const isHovering =\n isPermissionHovered &&\n props.hoveredPermission.order === props.groupPermissions.order;\n\n const cascadeCheck =\n !permissionAllowed &&\n isPermissionHovered &&\n props.groupPermissions.order > props.hoveredPermission.order;\n\n const cascadeUncheck =\n permissionAllowed &&\n isPermissionHovered &&\n props.groupPermissions.order < props.hoveredPermission.order;\n\n const isDisabled = (cascadeRestrictedUncheck || isRestricted) && !cascadeRestrictedCheck;\n\n return (\n <CascadeHoverContainer\n permission={{ permissionName: props.permissionName, order: props.groupPermissions.order }}\n className={`${styles.checkbox} d-block overflow-hidden`}\n onHover={props.onPermissionHover}\n cascadeCheck={cascadeCheck}\n cascadeUncheck={cascadeUncheck}\n isDisabled={isDisabled}\n >\n <Checkbox\n id={`${groupId}-${props.permissionName}`}\n inputClassName={styles.checkedTransition}\n ariaLabel={`${props.groupPermissions.groupName} ${props.permissionName}`}\n onChange={() => props.updateGroupPermission(\n groupId,\n props.permissionName,\n props.groupPermissions.order,\n permissionAllowed\n )}\n checked={(isHovering || cascadeCheck || permissionAllowed) && !cascadeRestrictedUncheck && !isDisabled}\n disabled={isDisabled}\n />\n </CascadeHoverContainer>\n );\n}\n","import React from 'react';\n\nimport { ToggleSwitch } from 'libs/shared/components/toggle-switch/ToggleSwitch';\nimport { PermissionName } from 'libs/shared/enums/PermissionName';\n\nimport { CascadeHoverContainer } from 'apps/settings/views/manage-group-permissions/components/cascade-hover-container/CascadeHoverContainer';\nimport { GroupPermissionsTableData } from 'apps/settings/views/manage-group-permissions/interfaces/GroupPermissionsTableData';\nimport { HoveredPermission } from 'apps/settings/views/manage-group-permissions/ManageGroupPermissionsView';\n\ninterface RestrictedToggleProps {\n groupPermissions: GroupPermissionsTableData;\n hoveredPermission: HoveredPermission;\n isPermissionEnabled: (groupId: string, permissionName: string) => boolean;\n updateGroupPermission: (groupId: string, permissionName: PermissionName, order: number, allowed: boolean) => void;\n onPermissionHover: (hoveredPermission?: HoveredPermission) => void\n}\n\nexport function RestrictedToggle(props: RestrictedToggleProps) {\n const groupId = props.groupPermissions.groupId;\n const permissionName = PermissionName.ViewRestrictedMode;\n const permissionAllowed = props.isPermissionEnabled(groupId, permissionName);\n\n const isPermissionHovered = props.hoveredPermission?.permissionName === permissionName;\n\n const cascadeCheck =\n permissionAllowed &&\n isPermissionHovered &&\n props.groupPermissions.order > props.hoveredPermission.order;\n\n const cascadeUncheck =\n !permissionAllowed &&\n isPermissionHovered &&\n props.groupPermissions.order < props.hoveredPermission.order;\n\n return (\n <CascadeHoverContainer\n permission={{ permissionName, order: props.groupPermissions.order }}\n className='d-inline'\n onHover={props.onPermissionHover}\n cascadeCheck={cascadeCheck}\n cascadeUncheck={cascadeUncheck}\n >\n <ToggleSwitch\n aria-label={`${props.groupPermissions.groupName} ${permissionName}}`}\n onClick={() => {\n props.updateGroupPermission(\n props.groupPermissions.groupId,\n permissionName,\n props.groupPermissions.order,\n permissionAllowed\n );\n props.onPermissionHover(null);\n }}\n on={permissionAllowed}\n floatEnd={false}\n />\n </CascadeHoverContainer>\n );\n}","import React from 'react';\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\ninterface ManagePermissionsTableHeaderProps {\n heading: string;\n tooltip: string;\n}\n\nexport function ManagePermissionsTableHeader({ heading, tooltip }: ManagePermissionsTableHeaderProps) {\n return (\n <Tooltip title={tooltip} spanHack spanHackClassName='justify-content-start'>\n <div className='d-flex gap-1 align-items-center cursor-pointer'>\n <span>{heading}</span>\n <SvgContainer svgName={cvSvgLibrary.Info} className='svg-container flex-shrink-0' />\n </div>\n </Tooltip>\n );\n}","import { HttpVerbs } from 'libs/common/backbone/enums/HttpVerbs';\nimport { Flight } from 'libs/common/react/index';\n\nimport { GroupPermission } from 'apps/settings/views/manage-group-permissions/interfaces/GroupPermissions';\n\nexport const GroupPermissionsRequests = {\n groupPermissions(): Flight.Request {\n return {\n key: 'group:permissions',\n url: `{gateway}/v1/customers/group-permissions`,\n normalize: false\n };\n },\n\n updateGroupPermissions(data: GroupPermission[]): Flight.Request {\n return {\n key: 'update:group:permissions',\n url: `{gateway}/v1/customers/group-permissions`,\n type: HttpVerbs.PUT,\n data,\n invalidationKeys: ['group:permissions'],\n normalize: false\n };\n }\n};","import React from 'react';\n\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\n\nimport { PermissionName } from 'libs/shared/enums/PermissionName';\nimport { YearGroup } from 'libs/shared/interfaces';\n\nimport { ALL_GROUP_PERMISSIONS, RESTRICTED_MODE_PERMISSIONS, TOGGLEABLE_GROUP_PERMISSIONS } from 'apps/settings/views/manage-group-permissions/constants/GroupPermissions';\nimport { GroupPermission, GroupPermissionAccess, GroupPermissionType } from 'apps/settings/views/manage-group-permissions/interfaces/GroupPermissions';\nimport { GroupPermissionsTableData, PermissionData } from 'apps/settings/views/manage-group-permissions/interfaces/GroupPermissionsTableData';\n\ntype Action =\n { type: 'toggle', groupId: string, permissionName: PermissionName, order: number, allowed: boolean } |\n { type: 'restricted', groupId: string, order: number, allowed: boolean } |\n { type: 'undo', initialTableData: GroupPermissionsTableData[] } |\n { type: 'init', groupPermissions: GroupPermission[], yearGroups: YearGroup[] };\n\nfunction togglePermissionAccess(access: GroupPermissionAccess) {\n switch (access) {\n case GroupPermissionAccess.Allow: return GroupPermissionAccess.Deny;\n case GroupPermissionAccess.Deny: return GroupPermissionAccess.Allow;\n default: return GroupPermissionAccess.Deny;\n }\n}\n\nfunction updatePermission(\n group: GroupPermissionsTableData,\n permissionName: PermissionName,\n fixedAccess?: GroupPermissionAccess\n) {\n const permission = ArrayHelper.findWhere(group.permissions, { permissionName });\n \n if (!permission) {\n return {\n ...group,\n permissions: [\n ...group.permissions,\n { permissionName: permissionName, access: fixedAccess || GroupPermissionAccess.Deny }\n ]\n };\n }\n\n const updatedPermissions = group.permissions.map(permission => {\n if (permission.permissionName === permissionName) {\n return {\n permissionName: permission.permissionName,\n access: fixedAccess || togglePermissionAccess(permission?.access)\n };\n }\n return permission;\n });\n\n return { ...group, permissions: updatedPermissions };\n}\n\nfunction toggleRestrictedMode(group: GroupPermissionsTableData, groupId: string, order: number, allowed: boolean) {\n if (group.groupId === groupId) {\n const restrictedMode = ArrayHelper.findWhere(\n group.permissions,\n { permissionName: PermissionName.ViewRestrictedMode }\n ) || {\n permissionName: PermissionName.ViewRestrictedMode,\n access: GroupPermissionAccess.Deny\n };\n \n const toggledRestrictedModeAccess = togglePermissionAccess(restrictedMode?.access);\n\n const getRestrictedModeEnabledPermissions = () => ALL_GROUP_PERMISSIONS.map(permissionName => ({\n permissionName,\n access: GroupPermissionAccess.Deny\n }));\n\n const getRestrictedModeDisabledPermissions = () => [\n ...RESTRICTED_MODE_PERMISSIONS.map(permissionName => ({\n permissionName,\n access: GroupPermissionAccess.Allow\n })),\n ...TOGGLEABLE_GROUP_PERMISSIONS.map(permissionName => ({\n permissionName,\n access: GroupPermissionAccess.Deny\n }))\n ];\n\n return {\n ...group,\n permissions: [\n {\n permissionName: PermissionName.ViewRestrictedMode,\n access: toggledRestrictedModeAccess\n },\n ...(toggledRestrictedModeAccess === GroupPermissionAccess.Allow\n ? getRestrictedModeEnabledPermissions()\n : getRestrictedModeDisabledPermissions()\n )\n ]\n };\n }\n\n if (group.order > order && allowed) {\n return {\n ...group,\n permissions: group.permissions.map(permission => {\n if (permission.permissionName === PermissionName.ViewRestrictedMode) {\n return { ...permission, access: GroupPermissionAccess.Deny };\n }\n\n if (RESTRICTED_MODE_PERMISSIONS.includes(permission.permissionName))\n return { ...permission, access: GroupPermissionAccess.Allow };\n\n return permission;\n })\n };\n }\n\n if (group.order < order && !allowed) {\n return {\n ...group,\n permissions: [\n {\n permissionName: PermissionName.ViewRestrictedMode,\n access: GroupPermissionAccess.Allow\n },\n ...ALL_GROUP_PERMISSIONS.map(permissionName => ({\n permissionName,\n access: GroupPermissionAccess.Deny\n }))\n ]\n };\n }\n\n return group;\n}\n\nfunction toggleGroupPermission(\n group: GroupPermissionsTableData,\n groupId: string,\n permissionName: PermissionName,\n order: number,\n allowed: boolean\n) {\n if (group.groupId === groupId) {\n return updatePermission(group, permissionName);\n }\n \n if (group.order < order && allowed) {\n return updatePermission(group, permissionName, GroupPermissionAccess.Deny);\n }\n\n if (group.order > order && !allowed) {\n return updatePermission(group, permissionName, GroupPermissionAccess.Allow);\n }\n\n return group;\n}\n\nfunction initialiseGroupPermissionsTableData(\n groupPermissions: GroupPermission[],\n yearGroups: YearGroup[]\n): GroupPermissionsTableData[] {\n const groupedPermissions = groupPermissions.reduce((acc: { [groupId: string]: PermissionData[] }, permission) => {\n const groupKey = permission.groupId;\n\n if (!acc[groupKey]) {\n acc[groupKey] = [];\n }\n\n acc[groupKey].push({\n permissionName: permission.permissionName,\n access: permission.access\n });\n\n return acc;\n }, {});\n \n return yearGroups.map((yearGroup: YearGroup) => ({\n groupId: yearGroup.id,\n groupName: yearGroup.name,\n groupType: GroupPermissionType.YearGroup,\n order: yearGroup.value,\n permissions: groupedPermissions[yearGroup.id] || []\n }));\n}\n\nfunction reducer(state: GroupPermissionsTableData[], action: Action) {\n switch (action.type) {\n case 'toggle': {\n return state.map(group => toggleGroupPermission(\n group,\n action.groupId,\n action.permissionName,\n action.order,\n action.allowed\n ));\n }\n \n case 'restricted': {\n return state.map(group => toggleRestrictedMode(group, action.groupId, action.order, action.allowed));\n }\n \n case 'init': {\n return initialiseGroupPermissionsTableData(action.groupPermissions, action.yearGroups);\n }\n\n default: return state;\n }\n}\n\nexport function useGroupPermissionsReducer() {\n const [ groupPermissionsTableData, dispatch ] = React.useReducer(reducer, null);\n\n return {\n groupPermissionsTableData,\n dispatch\n };\n}","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Flight } from 'libs/common/react/index';\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\n\nimport { PermissionName } from 'libs/shared/enums/PermissionName';\nimport { CustomerRequests } from 'libs/shared/flight-requests/CustomerRequests';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { useAlerts } from 'libs/shared/hooks/UseAlerts';\nimport { useHandleObjectError } from 'libs/shared/hooks/UseHandleObjectError';\nimport { CurrentUser, YearGroup } from 'libs/shared/interfaces';\n\nimport { GroupPermissionsRequests } from 'apps/settings/flight-requests/GroupPermissionsRequests';\nimport { useGroupPermissionsReducer } from 'apps/settings/views/manage-group-permissions/hooks/useGroupPermissionsReducer';\nimport { GroupPermission, GroupPermissionAccess } from 'apps/settings/views/manage-group-permissions/interfaces/GroupPermissions';\n\n\nconst namespace = 'settings.manageGroupPermissions';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nexport function useGroupPermissionsTableData() {\n const alerts = useAlerts();\n const fetchAsync = Flight.useGetFetchAsync();\n\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n const yearGroups = Flight.useBasicFetch<YearGroup[]>(\n currentUser.data && CustomerRequests.yearGroups(currentUser.data.customerId)\n );\n const groupPermissions = Flight.useBasicFetch<GroupPermission[]>(\n GroupPermissionsRequests.groupPermissions()\n );\n\n useHandleObjectError([ yearGroups, groupPermissions ]);\n\n const { groupPermissionsTableData, dispatch } = useGroupPermissionsReducer();\n\n const [ hasChanged, setHasChanged ] = React.useState(false);\n\n React.useEffect(() => {\n if (!yearGroups.data || !groupPermissions.data) return;\n \n dispatch({ type: 'init', groupPermissions: groupPermissions.data, yearGroups: yearGroups.data });\n }, [ yearGroups.hasCompleted, groupPermissions.hasCompleted ]);\n\n function isPermissionEnabled(groupId: string, permissionName: PermissionName) {\n const groupPermissions = ArrayHelper.findWhere(groupPermissionsTableData, { groupId });\n const permission = ArrayHelper.findWhere(groupPermissions.permissions, { permissionName });\n\n if (!permission) {\n if (permissionName === PermissionName.ViewRestrictedMode) return false;\n \n return true;\n }\n\n return permission.access === GroupPermissionAccess.Allow || permission.access === GroupPermissionAccess.Default;\n }\n\n function updateGroupPermission(groupId: string, permissionName: PermissionName, order: number, allowed: boolean) {\n setHasChanged(true);\n\n if (permissionName === PermissionName.ViewRestrictedMode) {\n dispatch({ type: 'restricted', groupId, order, allowed });\n return;\n }\n \n dispatch({ type: 'toggle', groupId, permissionName, order, allowed });\n }\n\n function undoChanges() {\n setHasChanged(false);\n \n dispatch({ type: 'init', groupPermissions: groupPermissions.data, yearGroups: yearGroups.data });\n }\n\n function getGroupPermissionsRequestData() {\n let requestData: GroupPermission[] = [];\n\n groupPermissionsTableData.forEach(group => {\n if (!group.permissions) return;\n\n const permissions = group.permissions.map(permission => {\n return {\n groupId: group.groupId,\n groupType: group.groupType,\n permissionName: permission.permissionName,\n access: permission.access\n };\n });\n\n requestData = requestData.concat(permissions);\n });\n\n return requestData;\n }\n\n async function updateGroupPermissions() {\n const data = getGroupPermissionsRequestData();\n \n try {\n await fetchAsync(GroupPermissionsRequests.updateGroupPermissions(data));\n\n setHasChanged(false);\n\n alerts.success(getPhrase('success'));\n } catch {\n alerts.error(getPhrase('error'));\n }\n }\n\n return {\n updateGroupPermission,\n isPermissionEnabled,\n groupPermissionsTableData,\n hasChanged,\n getGroupPermissionsRequestData,\n updateGroupPermissions,\n undoChanges\n };\n}","import React from 'react';\n\nexport function ManageGroupPermissionsPartial() {\n return (\n <div className='w-100 rounded-3 border border-light'>\n <ul className='list-unstyled w-100'>\n <li className='py-2 px-3 w-100'>&nbsp;</li>\n {[...Array(13)].map((_, i) => <li key={`partial-${i}`} className={`${i % 2 === 0 ? 'partial-loading-background' : ''} w-100 p-3`}>&nbsp;</li>)}\n </ul>\n </div>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"cellBorder\":\"RiJHh\"};","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { TableTheme } from 'libs/shared/components/table/Table';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { PermissionName } from 'libs/shared/enums/PermissionName';\nimport { LiteSupportArticle } from 'libs/shared/enums/SupportArticle';\nimport { useNavLock } from 'libs/shared/hooks/useNavLock';\nimport { ArticleHelper } from 'libs/shared/utils/ArticleHelper';\n\nimport { LayoutHelper } from 'shared/utils/LayoutHelper';\n\nimport { SettingsLayout } from 'apps/settings/components/settings-layout/SettingsLayout';\nimport { PermissionCheckbox } from 'apps/settings/views/manage-group-permissions/components/permission-checkbox/PermissionCheckbox';\nimport { RestrictedToggle } from 'apps/settings/views/manage-group-permissions/components/restricted-toggle/RestrictedToggle';\nimport { ManagePermissionsTableHeader } from 'apps/settings/views/manage-group-permissions/components/table-header/ManagePermissionsTableHeader';\nimport { ALL_GROUP_PERMISSIONS } from 'apps/settings/views/manage-group-permissions/constants/GroupPermissions';\nimport { useGroupPermissionsTableData } from 'apps/settings/views/manage-group-permissions/hooks/useGroupPermissionsTableData';\nimport { ManageGroupPermissionsPartial } from 'apps/settings/views/manage-group-permissions/partial-loading/ManageGroupPermissionsPartial';\n\nimport styles from './manage-group-permissions.scss';\n\nconst namespace = 'settings.manageGroupPermissions';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nconst NAV_LOCK_ID = 'manage-group-permissions';\n\nexport const TABLE_THEME: TableTheme = {\n table: 'table table-borderless align-middle min-w-100 mb-0',\n header: 'border-bottom',\n headerCell: `${styles.cellBorder} align-middle fw-semibold px-3 py-2`,\n body: 'striped-list',\n cell: `${styles.cellBorder} bg-transparent p-3`\n};\n\nexport interface HoveredPermission {\n permissionName: PermissionName,\n order: number\n}\n\ninterface PermissionTableColumn {\n permissionName: PermissionName;\n heading: string;\n tooltip: string;\n}\n\nconst columnHeadings: PermissionTableColumn[] = [\n {\n permissionName: PermissionName.ViewDiscover,\n heading: getPhrase('discover'),\n tooltip: getPhrase('discoverTooltip')\n },\n {\n permissionName: PermissionName.ViewSearch,\n heading: getPhrase('search'),\n tooltip: getPhrase('searchTooltip')\n },\n {\n permissionName: PermissionName.UploadVideo,\n heading: getPhrase('uploadVideos'),\n tooltip: getPhrase('uploadVideosTooltip')\n },\n {\n permissionName: PermissionName.ViewMoviesTv,\n heading: getPhrase('moviestv'),\n tooltip: getPhrase('moviestvTooltip')\n },\n {\n permissionName: PermissionName.ViewLibraries,\n heading: getPhrase('customLibraries'),\n tooltip: getPhrase('customLibrariesTooltip')\n }\n];\n\nexport function ManageGroupPermissionsView() {\n const articleUrl = ArticleHelper.getLiteArticle(LiteSupportArticle.ManageGroupPermissions);\n\n const {\n updateGroupPermission,\n isPermissionEnabled,\n groupPermissionsTableData,\n updateGroupPermissions,\n hasChanged,\n undoChanges\n } = useGroupPermissionsTableData();\n\n const [ hoveredPermission, setHoveredPermission ] = React.useState<HoveredPermission>(null);\n \n const navLock = useNavLock();\n\n React.useEffect(() => {\n if (!hasChanged)\n return;\n\n navLock.lock({\n id: NAV_LOCK_ID,\n title: getPhrase('navLockTitle'),\n text: getPhrase('navLockBody')\n });\n\n return () => {\n navLock.unlock(NAV_LOCK_ID);\n };\n }, [hasChanged]);\n\n React.useEffect(() => {\n LayoutHelper.lockContentWidth();\n return () => LayoutHelper.unlockContentWidth();\n }, []);\n \n \n function onPermissionHover(hoveredPermission?: HoveredPermission) {\n setHoveredPermission(hoveredPermission);\n }\n\n const toggleProps = {\n isPermissionEnabled,\n updateGroupPermission,\n hoveredPermission,\n onPermissionHover\n };\n\n return (\n <SettingsLayout\n heading={getPhrase('heading')}\n breadcrumbs={[getPhrase('breadcrumb')]}\n requiredPermissions={PermissionName.ManageCustomerSettings}\n >\n <p className='mb-2'>\n <Text namespace={namespace} phrase='description' options={{ articleUrl }} />\n </p>\n <div className='d-flex justify-content-between align-items-end mb-3'>\n <p className='me-2 mb-0'>\n <Text namespace={namespace} phrase='selectFeatures' />\n </p>\n <div className='d-flex float-end gap-3'>\n <button className='btn btn-outline-dark text-nowrap' onClick={() => undoChanges()} disabled={!hasChanged}>\n <Text namespace={namespace} phrase='undo' />\n </button>\n <button className='btn btn-dark text-nowrap' onClick={updateGroupPermissions} disabled={!hasChanged}>\n <Text namespace={namespace} phrase='submit' />\n </button>\n </div>\n </div>\n\n {!groupPermissionsTableData && (\n <ManageGroupPermissionsPartial />\n )}\n\n {groupPermissionsTableData && (\n <div className='rounded-3 border border-light overflow-hidden'>\n <table className={TABLE_THEME.table}>\n <thead className={TABLE_THEME.header}>\n <tr>\n <td className={TABLE_THEME.headerCell}>{getPhrase('yearGroup')}</td>\n <td className={TABLE_THEME.headerCell}>\n <ManagePermissionsTableHeader heading={getPhrase('restrictedMode')} tooltip={getPhrase('restrictedModeTooltip')} />\n </td>\n {columnHeadings.map(column => (\n <td key={`thead-${column.permissionName}`} className={TABLE_THEME.headerCell}>\n <ManagePermissionsTableHeader heading={column.heading} tooltip={column.tooltip} />\n </td>\n ))}\n </tr>\n </thead>\n <tbody className={TABLE_THEME.body}>\n {groupPermissionsTableData.map(data => {\n const cellTheme = TABLE_THEME.cell as string;\n return (\n <tr key={data.groupId}>\n <td className={cellTheme}>{data.groupName}</td>\n <td className={cellTheme}>\n <RestrictedToggle\n groupPermissions={data}\n {...toggleProps}\n />\n </td>\n {ALL_GROUP_PERMISSIONS.map(permissionName => (\n <td key={`tbody-${permissionName}`} className={cellTheme}>\n <PermissionCheckbox\n permissionName={permissionName}\n groupPermissions={data}\n {...toggleProps}\n />\n </td>\n ))}\n </tr>\n );\n })}\n </tbody>\n </table>\n </div>\n )}\n </SettingsLayout>\n );\n}"],"names":["getPhrase","BreadcrumbItem","props","ref","breadcrumb","name","appLink","active","withBackIcon","trimmedName","title","length","slice","className","svgName","size","S","Breadcrumbs","breadcrumbs","isMobile","collapse","setCollapse","shouldFocus","setShouldFocus","expandRef","characterLength","reduce","prev","next","current","focus","first","second","secondLast","last","rest","onClick","map","idx","key","PartialBreadcrumbs","numItems","style","height","width","dangerouslySetInnerHTML","__html","OnlineSupportArticle","LiteSupportArticle","defaultErrors","notFound","forbidden","rating","yearLevel","region","privacy","badRequest","handleHttpError","info","customErrorMap","ignoreMap","statusCode","status","errorMap","generateCacheKey","flightObjs","obj","join","useHandleObjectError","_flightObjs","customErrors","ignoreErrors","Array","isArray","useEffect","forEach","DEFAULT_PARTIAL_LOADING_OPTIONS","minWidth","maxWidth","PartialLoadingHelper","getPartialLoadingItems","options","opts","Math","max","floor","random","namespace","useCanAccessSettings","requiredPermissions","hasPermissions","settingsGroups","currentRoute","application","some","group","modules","settingsModule","action","SettingsLayout","canAccess","replace","i","heading","headingButton","description","children","CascadeHoverContainer","isDisabled","cascadeCheck","cascadeUncheck","onMouseEnter","onHover","permission","onMouseLeave","GroupPermissionAccess","GroupPermissionType","RESTRICTED_MODE_PERMISSIONS","PermissionName","TOGGLEABLE_GROUP_PERMISSIONS","ALL_GROUP_PERMISSIONS","PermissionCheckbox","groupId","groupPermissions","permissionAllowed","isPermissionEnabled","permissionName","restrictedMode","ArrayHelper","permissions","isRestricted","access","Allow","isRestrictedOnlyPermission","find","restrictedPermission","cascadeRestrictedCheck","hoveredPermission","order","cascadeRestrictedUncheck","SvgContainer","isPermissionHovered","isHovering","onPermissionHover","Checkbox","id","inputClassName","ariaLabel","groupName","onChange","updateGroupPermission","checked","disabled","RestrictedToggle","ToggleSwitch","on","floatEnd","ManagePermissionsTableHeader","tooltip","Tooltip","spanHack","spanHackClassName","GroupPermissionsRequests","url","normalize","updateGroupPermissions","data","type","HttpVerbs","invalidationKeys","togglePermissionAccess","Deny","updatePermission","fixedAccess","updatedPermissions","reducer","state","allowed","toggleGroupPermission","toggledRestrictedModeAccess","includes","toggleRestrictedMode","yearGroups","groupedPermissions","acc","groupKey","push","yearGroup","groupType","YearGroup","value","LanguageService","useGroupPermissionsTableData","alerts","fetchAsync","currentUser","UserRequests","CustomerRequests","customerId","groupPermissionsTableData","dispatch","hasChanged","setHasChanged","getGroupPermissionsRequestData","requestData","concat","hasCompleted","Default","success","error","undoChanges","ManageGroupPermissionsPartial","_","NAV_LOCK_ID","TABLE_THEME","table","header","headerCell","body","cell","columnHeadings","ManageGroupPermissionsView","articleUrl","ArticleHelper","setHoveredPermission","navLock","useNavLock","lock","text","unlock","LayoutHelper","toggleProps","Text","phrase","column","cellTheme"],"sourceRoot":""}
1
+ {"version":3,"file":"scripts/5376-38456da0db-lite.chunk.js","mappings":"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","sources":["file:///app/packages/libs/shared/src/components/breadcrumbs/Breadcrumbs.tsx","file:///app/packages/libs/shared/src/enums/SupportArticle.ts","file:///app/packages/libs/shared/src/errors/handlers/HttpErrorHandlers.ts","file:///app/packages/libs/shared/src/hooks/UseHandleObjectError.ts","file:///app/packages/libs/shared/src/utils/PartialLoadingHelper.ts","file:///app/packages/projects/lite/src/apps/settings/components/settings-layout/SettingsLayout.tsx","file:///app/packages/projects/lite/src/apps/settings/views/manage-group-permissions/components/cascade-hover-container/cascade-hover-container.scss","file:///app/packages/projects/lite/src/apps/settings/views/manage-group-permissions/components/cascade-hover-container/CascadeHoverContainer.tsx","file:///app/packages/projects/lite/src/apps/settings/views/manage-group-permissions/constants/GroupPermissions.ts","file:///app/packages/projects/lite/src/apps/settings/views/manage-group-permissions/interfaces/GroupPermissions.ts","file:///app/packages/projects/lite/src/apps/settings/views/manage-group-permissions/components/permission-checkbox/permission-checkbox.scss","file:///app/packages/projects/lite/src/apps/settings/views/manage-group-permissions/components/permission-checkbox/PermissionCheckbox.tsx","file:///app/packages/projects/lite/src/apps/settings/views/manage-group-permissions/components/restricted-toggle/RestrictedToggle.tsx","file:///app/packages/projects/lite/src/apps/settings/views/manage-group-permissions/components/table-header/ManagePermissionsTableHeader.tsx","file:///app/packages/projects/lite/src/apps/settings/flight-requests/GroupPermissionsRequests.ts","file:///app/packages/projects/lite/src/apps/settings/views/manage-group-permissions/hooks/useGroupPermissionsReducer.ts","file:///app/packages/projects/lite/src/apps/settings/views/manage-group-permissions/hooks/useGroupPermissionsTableData.ts","file:///app/packages/projects/lite/src/apps/settings/views/manage-group-permissions/partial-loading/ManageGroupPermissionsPartial.tsx","file:///app/packages/projects/lite/src/apps/settings/views/manage-group-permissions/manage-group-permissions.scss","file:///app/packages/projects/lite/src/apps/settings/views/manage-group-permissions/ManageGroupPermissionsView.tsx"],"sourcesContent":["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 { MediaQueryStrings } from 'libs/shared/enums/MediaQueries';\nimport { useMediaQuery } from 'libs/shared/hooks/UseMediaQuery';\nimport { PartialLoadingHelper } from 'libs/shared/utils/PartialLoadingHelper';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport { SvgContainer, SvgContainerSize } from '../svg-container/SvgContainer';\n\nconst namespace = 'shared.breadcrumbComponent';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nconst COLLAPSE_CHARACTER_COUNT = 64;\nconst MAX_SEGMENT_LENGTH = 48;\n\nexport interface Breadcrumb {\n name: string;\n appLink?: Core.AppLink;\n active?: boolean;\n}\n\ninterface BreadcrumbItemProps {\n breadcrumb: Breadcrumb;\n withBackIcon?: boolean;\n}\n\nexport const BreadcrumbItem = React.forwardRef((\n props: BreadcrumbItemProps,\n ref: React.ForwardedRef<HTMLElement>\n) => {\n const { breadcrumb: { name, appLink, active }, withBackIcon } = props;\n\n let trimmedName = name;\n let title: string = null;\n\n if (trimmedName.length > MAX_SEGMENT_LENGTH) {\n trimmedName = name.slice(0, MAX_SEGMENT_LENGTH) + '...';\n\n // Only setting the title when we trim, because otherwise it's really not needed - Sha\n title = name;\n }\n\n return (\n <li\n className={`breadcrumb-item${active ? ' active' : ''}`}\n title={title}\n >\n {active\n ? <strong>{trimmedName}</strong>\n : <AppLink appLink={appLink} ref={ref}>\n {withBackIcon && <SvgContainer svgName={cvSvgLibrary.ChevronLeft} size={SvgContainerSize.Small} />}\n <span className={withBackIcon ? 'ms-2' : ''}>{trimmedName}</span>\n </AppLink>\n }\n </li>\n );\n});\n\ninterface BreadcrumbsProps {\n breadcrumbs: Breadcrumb[];\n}\n\nexport const Breadcrumbs = ({ breadcrumbs }: BreadcrumbsProps) => {\n const isMobile = useMediaQuery(MediaQueryStrings.XS);\n\n const length = breadcrumbs?.length || 0;\n \n const [ collapse, setCollapse ] = React.useState(false);\n const [ shouldFocus, setShouldFocus ] = React.useState(false);\n const expandRef = React.useRef<HTMLElement>();\n\n React.useEffect(() => {\n const characterLength = breadcrumbs?.reduce((prev, next) => prev + next.name.length, 0) ?? 0;\n\n if (length > 4 && characterLength > COLLAPSE_CHARACTER_COUNT)\n setCollapse(true);\n }, [breadcrumbs?.length]);\n\n /**\n * Focus our first expanded item the first time it appears.\n */\n React.useLayoutEffect(() => {\n if (shouldFocus)\n expandRef.current?.focus();\n }, [ expandRef.current, shouldFocus ]);\n\n function onClickExpand() {\n setCollapse(false);\n setShouldFocus(true);\n }\n\n if (!length || (isMobile && length < 2))\n return <></>;\n\n if (isMobile)\n return (\n <nav aria-label='breadcrumb'>\n <ol className='breadcrumb m-0 p-0'>\n <BreadcrumbItem breadcrumb={breadcrumbs[length - 2]} withBackIcon />\n </ol>\n </nav>\n );\n\n const first = <BreadcrumbItem breadcrumb={breadcrumbs[0]} />;\n const second = length > 2 ? <BreadcrumbItem breadcrumb={breadcrumbs[1]} /> : <></>;\n const secondLast = length > 3 ? <BreadcrumbItem breadcrumb={breadcrumbs[length - 2]} /> : <></>;\n const last = length > 1 ? <BreadcrumbItem breadcrumb={breadcrumbs[length - 1]} /> : <></>;\n const rest = breadcrumbs.slice(2, length - 2);\n\n return (\n <nav aria-label='breadcrumb'>\n <ol className='breadcrumb m-0 p-0'>\n {first}\n {second}\n {collapse ?\n <li className='breadcrumb-item'>\n <button\n className='btn-link'\n onClick={onClickExpand}\n aria-label={getPhrase('expand')}\n >\n ...\n </button>\n </li> :\n rest.map((breadcrumb, idx) => (\n <BreadcrumbItem\n key={idx}\n breadcrumb={breadcrumb}\n ref={idx === 0 ? expandRef : null}\n />\n ))\n }\n {secondLast}\n {last}\n </ol>\n </nav>\n );\n};\n\nexport const PartialBreadcrumbs = React.memo(function({ numItems = 3 }: { numItems?: number; }) {\n const isMobile = useMediaQuery(MediaQueryStrings.XS);\n\n if (isMobile) {\n return (\n <div className='partial-loading-background' style={{ height: '1.3125rem', width: '6rem' }} />\n );\n }\n\n return (\n <nav aria-label='breadcrumb'>\n <ol className='breadcrumb m-0 p-0'>\n {PartialLoadingHelper.getPartialLoadingItems({ numItems }).map(({ width }, idx) => (\n <li key={idx} className='breadcrumb-item'>\n <span className='d-inline-block partial-loading-background' style={{ width }} dangerouslySetInnerHTML={{ __html: '&nbsp' }} />\n </li>\n ))}\n </ol>\n </nav>\n );\n});","// Article name mapped to article ID on support site. Used by `ArticleHelper`\n\nexport enum OnlineSupportArticle {\n AddToPlaylist = '115005679748',\n EditSsoAccounts = '8202508040345',\n\n // LE\n LibraryEditor = '360001974533',\n VideoAccess = '360000153947',\n AddFromOnline = '360011718234',\n UploadToLibraryEditor = '360012069334',\n PBTErrorCodes = '360012421153',\n ManuelReview = '360020004534',\n LibraryReview = '360000163788',\n}\n\nexport enum LiteSupportArticle {\n Integrations = '4407268725529',\n Classrooms = '4405362551833',\n MakeInteractive = '4405370510873',\n EditSsoAccounts = '8202605666073',\n UploadToLibraryEditor = '10672936659865',\n AddFromLite = '10671345281561',\n ManageSsoYearGroups = '14691130889241',\n ContentReview = '18525199576601',\n ContentPermissions = '14692125209497',\n AccessSettings = '27927466562201',\n ContentGuidelines = '24133696186009',\n FoxtelFaq = '24133519542169',\n ViviIntegration = '23826297956377',\n AppleTvIntegration = '25832373739929',\n RssFeed = '32567445635097',\n ManageGroupPermissions = '35407217335705'\n}\n","import { BaseError } from 'libs/common/backbone/core/BaseError';\nimport { HttpStatus } from 'libs/common/backbone/enums/HttpStatus';\nimport { Xhr } from 'libs/common/backbone/interfaces';\nimport { Core } from 'libs/common/core';\n\nimport { NotFoundError } from 'libs/shared/errors/general/not-found/NotFoundError';\nimport { PrivateResourceError } from 'libs/shared/errors/general/private-resource/PrivateResourceError';\nimport { RegionLockedResourceError } from 'libs/shared/errors/general/region-locked-resource/RegionLockedResourceError';\nimport { UnspecifiedError } from 'libs/shared/errors/general/unspecified-error/UnspecifiedError';\nimport { VideoTypes } from 'libs/shared/interfaces';\n\nexport interface HttpErrorMap {\n notFound?: new () => BaseError;\n forbidden?: {\n rating?: new (description: string) => BaseError;\n yearLevel?: new (description: string) => BaseError;\n region?: new () => BaseError;\n privacy?: new (video?: VideoTypes) => BaseError;\n };\n badRequest?: new () => BaseError;\n}\n\nexport type IgnoreHttpErrorMap = {\n [key in keyof HttpErrorMap]: boolean;\n};\n\nconst defaultErrors: HttpErrorMap = {\n notFound: NotFoundError,\n forbidden: {\n rating: PrivateResourceError,\n yearLevel: PrivateResourceError,\n region: RegionLockedResourceError,\n privacy: PrivateResourceError\n },\n badRequest: UnspecifiedError\n};\n\nexport function handleHttpError(\n info: HttpStatus | Xhr,\n customErrorMap: HttpErrorMap = {},\n /**\n * Prevent certain errors in the errorMap from being thrown\n * so that you may implement your own handler\n */\n ignoreMap: IgnoreHttpErrorMap = {}\n): void {\n if (!info)\n return;\n\n let statusCode: HttpStatus;\n\n if (typeof(info) === 'number') {\n statusCode = info;\n } else {\n statusCode = info.status;\n }\n\n const errorMap = {\n ...defaultErrors,\n ...customErrorMap\n };\n\n if (!statusCode)\n return;\n\n if (!Core.ErrorHelper.isStatusCodeError(statusCode))\n return;\n\n if (statusCode === HttpStatus.NotFound) {\n if (!ignoreMap.notFound)\n Core.ErrorHelper.throw(new errorMap.notFound());\n return;\n }\n\n if (statusCode === HttpStatus.Forbidden) {\n /**\n * TODO: Work out how to go about handling all forbidden errors, such as region locking, year levels,\n * ratings, and privacy.\n */\n if (!ignoreMap.forbidden)\n Core.ErrorHelper.throw(new errorMap.forbidden.privacy());\n return;\n }\n\n if (!ignoreMap.badRequest)\n Core.ErrorHelper.throw(new errorMap.badRequest());\n}\n\nexport function handleXhrError(xhr: Xhr, customErrorMap?: HttpErrorMap): void {\n handleHttpError(xhr.status, customErrorMap);\n}","import { useEffect } from 'react';\n\nimport { Flight } from 'libs/common/flight';\n\nimport { handleHttpError, HttpErrorMap, IgnoreHttpErrorMap } from 'libs/shared/errors/handlers/HttpErrorHandlers';\n\nfunction generateCacheKey(flightObjs: Array<Flight.Response<any>>): string {\n return flightObjs.map(obj => obj.statusCode).join(':');\n}\n\n// TODO: Change this to just `useHandleHttpError` and only accept a status code.\nexport function useHandleObjectError(\n _flightObjs: Flight.Response<any> | Array<Flight.Response<any>>,\n customErrors?: HttpErrorMap,\n ignoreErrors?: IgnoreHttpErrorMap\n): void {\n const flightObjs = Array.isArray(_flightObjs) ? _flightObjs : [_flightObjs];\n\n useEffect(() => {\n flightObjs.forEach(obj => {\n handleHttpError(obj.statusCode, customErrors, ignoreErrors);\n });\n }, [ generateCacheKey(flightObjs), customErrors, ignoreErrors ]);\n}","const DEFAULT_PARTIAL_LOADING_OPTIONS: PartialLoadingOptions = {\n numItems: 5,\n minWidth: 50, // px\n maxWidth: 100 // px\n};\n\nexport interface PartialLoadingOptions {\n numItems?: number;\n minWidth?: number;\n maxWidth?: number;\n}\n\ninterface PartialLoadingItem {\n width: string;\n}\n\nexport const PartialLoadingHelper = {\n getPartialLoadingItems(options: PartialLoadingOptions = {}): PartialLoadingItem[] {\n const opts = {\n ...DEFAULT_PARTIAL_LOADING_OPTIONS,\n ...options\n };\n\n const getRandomFilterWidth = () => Math.max(Math.floor(Math.random() * opts.maxWidth), opts.minWidth);\n\n return [...Array(opts.numItems)].map(() => ({ width: `${getRandomFilterWidth()}px` }));\n }\n};","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { Breadcrumbs } from 'libs/shared/components/breadcrumbs/Breadcrumbs';\nimport { PermissionName } from 'libs/shared/enums/PermissionName';\nimport { usePermissions } from 'libs/shared/hooks/usePermissions';\n\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\n\nimport { useGetSettingsGroups } from 'apps/settings/hooks/useGetSettingsGroups';\n\nconst namespace = 'settings.settingsLayout';\n\n/**\n * Checks if the current user has permission to access the settings module\n */\nexport const useCanAccessSettings = (requiredPermissions: PermissionName | PermissionName[]): boolean => {\n const { hasPermissions } = usePermissions();\n const settingsGroups = useGetSettingsGroups();\n\n /**\n * TODO: Update all settings pages to pasas required permissions, because checking the \n * `useGetSettingsGroups()` values clearly doesnt work for settings pages with multiple\n * applinks inside of them. - Sha\n */\n if (requiredPermissions)\n return hasPermissions(requiredPermissions);\n\n const currentRoute = Core.AppLinkHelper.getCurrentAppLink();\n\n /**\n * Allows us to have popups sitting in other locations be used\n * by our settings pages. For example the manage video access popup\n * in the \"videos with restricted access\" page - Sha\n */\n if (currentRoute.application !== AppChannels.SETTINGS)\n return true;\n\n return settingsGroups.some(group => {\n return group.modules.some(settingsModule => {\n if ('appLink' in settingsModule) {\n return settingsModule.appLink.action === currentRoute.action;\n }\n\n return false;\n });\n });\n};\n\ninterface SettingsLayoutProps {\n heading: string;\n breadcrumbs: string[];\n description?: string;\n requiredPermissions?: PermissionName | PermissionName[];\n headingButton?: () => JSX.Element;\n}\n\nexport function SettingsLayout(props: React.PropsWithChildren<SettingsLayoutProps>): JSX.Element {\n const canAccess = useCanAccessSettings(props.requiredPermissions);\n\n React.useEffect(() => {\n if (!canAccess) {\n Core.AppLinkHelper.trigger({\n application: AppChannels.SETTINGS,\n action: Actions.Settings.HOME\n }, { replace: true });\n }\n }, [canAccess]);\n\n if (!canAccess)\n return <></>;\n\n const breadcrumbs = props.breadcrumbs.map((name, i) => ({\n name,\n appLink: {\n application: AppChannels.SETTINGS,\n action: Actions.Settings.HOME\n },\n active: i === props.breadcrumbs.length - 1\n }));\n\n return (\n <div className='px-3'>\n <div className='d-flex align-items-center justify-content-between'>\n <h1 className='h2'>{props.heading}</h1>\n {props.headingButton?.()}\n </div>\n <div className='pb-3'>\n <Breadcrumbs\n breadcrumbs={[\n {\n name: LanguageService.getPhrase(namespace, 'settingsBreadcrumb'),\n appLink: {\n application: AppChannels.SETTINGS,\n action: Actions.Settings.HOME\n }\n },\n ...breadcrumbs\n ]}\n />\n </div>\n {props.description &&\n <>\n <p>{props.description}</p>\n <hr />\n </>\n }\n\n {props.children}\n </div>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"container\":\"Vxu2N\"};","import React from 'react';\n\nimport { HoveredPermission } from 'apps/settings/views/manage-group-permissions/ManageGroupPermissionsView';\n\nimport styles from './cascade-hover-container.scss';\n\ninterface CascadeHoverContainerProps {\n className?: string;\n cascadeCheck?: boolean;\n cascadeUncheck?: boolean;\n permission: HoveredPermission;\n isDisabled?: boolean;\n onHover: (permission?: HoveredPermission) => void;\n}\n\nexport function CascadeHoverContainer(props: React.PropsWithChildren<CascadeHoverContainerProps>) {\n return (\n <div\n className={`${styles.container} ${props.className} ${!props.isDisabled ? `${props.cascadeCheck || props.cascadeUncheck ? `opacity-50` : ''} opacity-50-hover` : 'pointer-events-none'}`}\n onMouseEnter={() => props.onHover(props.permission)}\n onMouseLeave={() => props.onHover()}\n >\n {props.children}\n </div>\n );\n}","import { PermissionName } from 'libs/shared/enums/PermissionName';\n\nexport const RESTRICTED_MODE_PERMISSIONS = [\n PermissionName.ViewDiscover,\n PermissionName.ViewSearch,\n PermissionName.UploadVideo\n];\nexport const TOGGLEABLE_GROUP_PERMISSIONS = [ PermissionName.ViewMoviesTv, PermissionName.ViewLibraries ];\nexport const ALL_GROUP_PERMISSIONS = [ ...RESTRICTED_MODE_PERMISSIONS, ...TOGGLEABLE_GROUP_PERMISSIONS ];\n","import { PermissionName } from 'libs/shared/enums/PermissionName';\n\nexport enum GroupPermissionAccess {\n Default = 'Default',\n Allow = 'Allow',\n Deny = 'Deny'\n}\n\nexport enum GroupPermissionType {\n YearGroup\n}\n\nexport interface GroupPermission {\n groupId: string;\n groupType: GroupPermissionType;\n permissionName: PermissionName,\n access: GroupPermissionAccess;\n}","// extracted by mini-css-extract-plugin\nexport default {\"checkbox\":\"wLkeZ\",\"checkedTransition\":\"wWiuo\"};","import React from 'react';\n\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\n\nimport { Checkbox } from 'libs/shared/components/forms/form-checkbox/Checkbox';\nimport { SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\nimport { PermissionName } from 'libs/shared/enums/PermissionName';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport { CascadeHoverContainer } from 'apps/settings/views/manage-group-permissions/components/cascade-hover-container/CascadeHoverContainer';\nimport { RESTRICTED_MODE_PERMISSIONS } from 'apps/settings/views/manage-group-permissions/constants/GroupPermissions';\nimport { GroupPermissionAccess } from 'apps/settings/views/manage-group-permissions/interfaces/GroupPermissions';\nimport { GroupPermissionsTableData } from 'apps/settings/views/manage-group-permissions/interfaces/GroupPermissionsTableData';\nimport { HoveredPermission } from 'apps/settings/views/manage-group-permissions/ManageGroupPermissionsView';\n\nimport styles from './permission-checkbox.scss';\n\ninterface PermissionCheckboxProps {\n permissionName: PermissionName;\n groupPermissions: GroupPermissionsTableData;\n hoveredPermission: HoveredPermission;\n isPermissionEnabled: (groupId: string, permissionName: string) => boolean;\n updateGroupPermission: (groupId: string, permissionName: PermissionName, order: number, allowed: boolean) => void;\n onPermissionHover: (hoveredPermission?: HoveredPermission) => void\n}\n\nexport function PermissionCheckbox(props: PermissionCheckboxProps) {\n const groupId = props.groupPermissions.groupId;\n const permissionAllowed = props.isPermissionEnabled(groupId, props.permissionName);\n const restrictedMode = ArrayHelper.findWhere(\n props.groupPermissions.permissions,\n { permissionName: PermissionName.ViewRestrictedMode }\n );\n const isRestricted = restrictedMode?.access === GroupPermissionAccess.Allow;\n\n const isRestrictedOnlyPermission = RESTRICTED_MODE_PERMISSIONS.find(\n restrictedPermission => restrictedPermission === props.permissionName\n );\n \n const cascadeRestrictedCheck =\n isRestricted &&\n props.hoveredPermission?.permissionName === PermissionName.ViewRestrictedMode &&\n props.hoveredPermission?.order <= props.groupPermissions.order;\n const cascadeRestrictedUncheck =\n !isRestricted &&\n props.hoveredPermission?.permissionName === PermissionName.ViewRestrictedMode &&\n props.hoveredPermission?.order >= props.groupPermissions.order;\n\n if (isRestrictedOnlyPermission) {\n if (cascadeRestrictedUncheck || (isRestricted && !cascadeRestrictedCheck)) {\n return <SvgContainer svgName={cvSvgLibrary.Close} />;\n }\n\n if (cascadeRestrictedCheck || (!isRestricted && !cascadeRestrictedUncheck)) {\n return <SvgContainer svgName={cvSvgLibrary.Tick} />;\n }\n }\n\n const isPermissionHovered = props.hoveredPermission?.permissionName === props.permissionName;\n\n const isHovering =\n isPermissionHovered &&\n props.hoveredPermission.order === props.groupPermissions.order;\n\n const cascadeCheck =\n !permissionAllowed &&\n isPermissionHovered &&\n props.groupPermissions.order > props.hoveredPermission.order;\n\n const cascadeUncheck =\n permissionAllowed &&\n isPermissionHovered &&\n props.groupPermissions.order < props.hoveredPermission.order;\n\n const isDisabled = (cascadeRestrictedUncheck || isRestricted) && !cascadeRestrictedCheck;\n\n return (\n <CascadeHoverContainer\n permission={{ permissionName: props.permissionName, order: props.groupPermissions.order }}\n className={`${styles.checkbox} d-block overflow-hidden`}\n onHover={props.onPermissionHover}\n cascadeCheck={cascadeCheck}\n cascadeUncheck={cascadeUncheck}\n isDisabled={isDisabled}\n >\n <Checkbox\n id={`${groupId}-${props.permissionName}`}\n inputClassName={styles.checkedTransition}\n ariaLabel={`${props.groupPermissions.groupName} ${props.permissionName}`}\n onChange={() => props.updateGroupPermission(\n groupId,\n props.permissionName,\n props.groupPermissions.order,\n permissionAllowed\n )}\n checked={(isHovering || cascadeCheck || permissionAllowed) && !cascadeRestrictedUncheck && !isDisabled}\n disabled={isDisabled}\n />\n </CascadeHoverContainer>\n );\n}\n","import React from 'react';\n\nimport { ToggleSwitch } from 'libs/shared/components/toggle-switch/ToggleSwitch';\nimport { PermissionName } from 'libs/shared/enums/PermissionName';\n\nimport { CascadeHoverContainer } from 'apps/settings/views/manage-group-permissions/components/cascade-hover-container/CascadeHoverContainer';\nimport { GroupPermissionsTableData } from 'apps/settings/views/manage-group-permissions/interfaces/GroupPermissionsTableData';\nimport { HoveredPermission } from 'apps/settings/views/manage-group-permissions/ManageGroupPermissionsView';\n\ninterface RestrictedToggleProps {\n groupPermissions: GroupPermissionsTableData;\n hoveredPermission: HoveredPermission;\n isPermissionEnabled: (groupId: string, permissionName: string) => boolean;\n updateGroupPermission: (groupId: string, permissionName: PermissionName, order: number, allowed: boolean) => void;\n onPermissionHover: (hoveredPermission?: HoveredPermission) => void\n}\n\nexport function RestrictedToggle(props: RestrictedToggleProps) {\n const groupId = props.groupPermissions.groupId;\n const permissionName = PermissionName.ViewRestrictedMode;\n const permissionAllowed = props.isPermissionEnabled(groupId, permissionName);\n\n const isPermissionHovered = props.hoveredPermission?.permissionName === permissionName;\n\n const cascadeCheck =\n permissionAllowed &&\n isPermissionHovered &&\n props.groupPermissions.order > props.hoveredPermission.order;\n\n const cascadeUncheck =\n !permissionAllowed &&\n isPermissionHovered &&\n props.groupPermissions.order < props.hoveredPermission.order;\n\n return (\n <CascadeHoverContainer\n permission={{ permissionName, order: props.groupPermissions.order }}\n className='d-inline'\n onHover={props.onPermissionHover}\n cascadeCheck={cascadeCheck}\n cascadeUncheck={cascadeUncheck}\n >\n <ToggleSwitch\n aria-label={`${props.groupPermissions.groupName} ${permissionName}}`}\n onClick={() => {\n props.updateGroupPermission(\n props.groupPermissions.groupId,\n permissionName,\n props.groupPermissions.order,\n permissionAllowed\n );\n props.onPermissionHover(null);\n }}\n on={permissionAllowed}\n floatEnd={false}\n />\n </CascadeHoverContainer>\n );\n}","import React from 'react';\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\ninterface ManagePermissionsTableHeaderProps {\n heading: string;\n tooltip: string;\n}\n\nexport function ManagePermissionsTableHeader({ heading, tooltip }: ManagePermissionsTableHeaderProps) {\n return (\n <Tooltip title={tooltip} spanHack spanHackClassName='justify-content-start'>\n <div className='d-flex gap-1 align-items-center cursor-pointer'>\n <span>{heading}</span>\n <SvgContainer svgName={cvSvgLibrary.Info} className='svg-container flex-shrink-0' />\n </div>\n </Tooltip>\n );\n}","import { HttpVerbs } from 'libs/common/backbone/enums/HttpVerbs';\nimport { Flight } from 'libs/common/react/index';\n\nimport { GroupPermission } from 'apps/settings/views/manage-group-permissions/interfaces/GroupPermissions';\n\nexport const GroupPermissionsRequests = {\n groupPermissions(): Flight.Request {\n return {\n key: 'group:permissions',\n url: `{gateway}/v1/customers/group-permissions`,\n normalize: false\n };\n },\n\n updateGroupPermissions(data: GroupPermission[]): Flight.Request {\n return {\n key: 'update:group:permissions',\n url: `{gateway}/v1/customers/group-permissions`,\n type: HttpVerbs.PUT,\n data,\n invalidationKeys: ['group:permissions'],\n normalize: false\n };\n }\n};","import React from 'react';\n\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\n\nimport { PermissionName } from 'libs/shared/enums/PermissionName';\nimport { YearGroup } from 'libs/shared/interfaces';\n\nimport { ALL_GROUP_PERMISSIONS, RESTRICTED_MODE_PERMISSIONS, TOGGLEABLE_GROUP_PERMISSIONS } from 'apps/settings/views/manage-group-permissions/constants/GroupPermissions';\nimport { GroupPermission, GroupPermissionAccess, GroupPermissionType } from 'apps/settings/views/manage-group-permissions/interfaces/GroupPermissions';\nimport { GroupPermissionsTableData, PermissionData } from 'apps/settings/views/manage-group-permissions/interfaces/GroupPermissionsTableData';\n\ntype Action =\n { type: 'toggle', groupId: string, permissionName: PermissionName, order: number, allowed: boolean } |\n { type: 'restricted', groupId: string, order: number, allowed: boolean } |\n { type: 'undo', initialTableData: GroupPermissionsTableData[] } |\n { type: 'init', groupPermissions: GroupPermission[], yearGroups: YearGroup[] };\n\nfunction togglePermissionAccess(access: GroupPermissionAccess) {\n switch (access) {\n case GroupPermissionAccess.Allow: return GroupPermissionAccess.Deny;\n case GroupPermissionAccess.Deny: return GroupPermissionAccess.Allow;\n default: return GroupPermissionAccess.Deny;\n }\n}\n\nfunction updatePermission(\n group: GroupPermissionsTableData,\n permissionName: PermissionName,\n fixedAccess?: GroupPermissionAccess\n) {\n const permission = ArrayHelper.findWhere(group.permissions, { permissionName });\n \n if (!permission) {\n return {\n ...group,\n permissions: [\n ...group.permissions,\n { permissionName: permissionName, access: fixedAccess || GroupPermissionAccess.Deny }\n ]\n };\n }\n\n const updatedPermissions = group.permissions.map(permission => {\n if (permission.permissionName === permissionName) {\n return {\n permissionName: permission.permissionName,\n access: fixedAccess || togglePermissionAccess(permission?.access)\n };\n }\n return permission;\n });\n\n return { ...group, permissions: updatedPermissions };\n}\n\nfunction toggleRestrictedMode(group: GroupPermissionsTableData, groupId: string, order: number, allowed: boolean) {\n if (group.groupId === groupId) {\n const restrictedMode = ArrayHelper.findWhere(\n group.permissions,\n { permissionName: PermissionName.ViewRestrictedMode }\n ) || {\n permissionName: PermissionName.ViewRestrictedMode,\n access: GroupPermissionAccess.Deny\n };\n \n const toggledRestrictedModeAccess = togglePermissionAccess(restrictedMode?.access);\n\n const getRestrictedModeEnabledPermissions = () => ALL_GROUP_PERMISSIONS.map(permissionName => ({\n permissionName,\n access: GroupPermissionAccess.Deny\n }));\n\n const getRestrictedModeDisabledPermissions = () => [\n ...RESTRICTED_MODE_PERMISSIONS.map(permissionName => ({\n permissionName,\n access: GroupPermissionAccess.Allow\n })),\n ...TOGGLEABLE_GROUP_PERMISSIONS.map(permissionName => ({\n permissionName,\n access: GroupPermissionAccess.Deny\n }))\n ];\n\n return {\n ...group,\n permissions: [\n {\n permissionName: PermissionName.ViewRestrictedMode,\n access: toggledRestrictedModeAccess\n },\n ...(toggledRestrictedModeAccess === GroupPermissionAccess.Allow\n ? getRestrictedModeEnabledPermissions()\n : getRestrictedModeDisabledPermissions()\n )\n ]\n };\n }\n\n if (group.order > order && allowed) {\n return {\n ...group,\n permissions: group.permissions.map(permission => {\n if (permission.permissionName === PermissionName.ViewRestrictedMode) {\n return { ...permission, access: GroupPermissionAccess.Deny };\n }\n\n if (RESTRICTED_MODE_PERMISSIONS.includes(permission.permissionName))\n return { ...permission, access: GroupPermissionAccess.Allow };\n\n return permission;\n })\n };\n }\n\n if (group.order < order && !allowed) {\n return {\n ...group,\n permissions: [\n {\n permissionName: PermissionName.ViewRestrictedMode,\n access: GroupPermissionAccess.Allow\n },\n ...ALL_GROUP_PERMISSIONS.map(permissionName => ({\n permissionName,\n access: GroupPermissionAccess.Deny\n }))\n ]\n };\n }\n\n return group;\n}\n\nfunction toggleGroupPermission(\n group: GroupPermissionsTableData,\n groupId: string,\n permissionName: PermissionName,\n order: number,\n allowed: boolean\n) {\n if (group.groupId === groupId) {\n return updatePermission(group, permissionName);\n }\n \n if (group.order < order && allowed) {\n return updatePermission(group, permissionName, GroupPermissionAccess.Deny);\n }\n\n if (group.order > order && !allowed) {\n return updatePermission(group, permissionName, GroupPermissionAccess.Allow);\n }\n\n return group;\n}\n\nfunction initialiseGroupPermissionsTableData(\n groupPermissions: GroupPermission[],\n yearGroups: YearGroup[]\n): GroupPermissionsTableData[] {\n const groupedPermissions = groupPermissions.reduce((acc: { [groupId: string]: PermissionData[] }, permission) => {\n const groupKey = permission.groupId;\n\n if (!acc[groupKey]) {\n acc[groupKey] = [];\n }\n\n acc[groupKey].push({\n permissionName: permission.permissionName,\n access: permission.access\n });\n\n return acc;\n }, {});\n \n return yearGroups.map((yearGroup: YearGroup) => ({\n groupId: yearGroup.id,\n groupName: yearGroup.name,\n groupType: GroupPermissionType.YearGroup,\n order: yearGroup.value,\n permissions: groupedPermissions[yearGroup.id] || []\n }));\n}\n\nfunction reducer(state: GroupPermissionsTableData[], action: Action) {\n switch (action.type) {\n case 'toggle': {\n return state.map(group => toggleGroupPermission(\n group,\n action.groupId,\n action.permissionName,\n action.order,\n action.allowed\n ));\n }\n \n case 'restricted': {\n return state.map(group => toggleRestrictedMode(group, action.groupId, action.order, action.allowed));\n }\n \n case 'init': {\n return initialiseGroupPermissionsTableData(action.groupPermissions, action.yearGroups);\n }\n\n default: return state;\n }\n}\n\nexport function useGroupPermissionsReducer() {\n const [ groupPermissionsTableData, dispatch ] = React.useReducer(reducer, null);\n\n return {\n groupPermissionsTableData,\n dispatch\n };\n}","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Flight } from 'libs/common/react/index';\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\n\nimport { PermissionName } from 'libs/shared/enums/PermissionName';\nimport { CustomerRequests } from 'libs/shared/flight-requests/CustomerRequests';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { useAlerts } from 'libs/shared/hooks/UseAlerts';\nimport { useHandleObjectError } from 'libs/shared/hooks/UseHandleObjectError';\nimport { CurrentUser, YearGroup } from 'libs/shared/interfaces';\n\nimport { GroupPermissionsRequests } from 'apps/settings/flight-requests/GroupPermissionsRequests';\nimport { useGroupPermissionsReducer } from 'apps/settings/views/manage-group-permissions/hooks/useGroupPermissionsReducer';\nimport { GroupPermission, GroupPermissionAccess } from 'apps/settings/views/manage-group-permissions/interfaces/GroupPermissions';\n\n\nconst namespace = 'settings.manageGroupPermissions';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nexport function useGroupPermissionsTableData() {\n const alerts = useAlerts();\n const fetchAsync = Flight.useGetFetchAsync();\n\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n const yearGroups = Flight.useBasicFetch<YearGroup[]>(\n currentUser.data && CustomerRequests.yearGroups(currentUser.data.customerId)\n );\n const groupPermissions = Flight.useBasicFetch<GroupPermission[]>(\n GroupPermissionsRequests.groupPermissions()\n );\n\n useHandleObjectError([ yearGroups, groupPermissions ]);\n\n const { groupPermissionsTableData, dispatch } = useGroupPermissionsReducer();\n\n const [ hasChanged, setHasChanged ] = React.useState(false);\n\n React.useEffect(() => {\n if (!yearGroups.data || !groupPermissions.data) return;\n \n dispatch({ type: 'init', groupPermissions: groupPermissions.data, yearGroups: yearGroups.data });\n }, [ yearGroups.hasCompleted, groupPermissions.hasCompleted ]);\n\n function isPermissionEnabled(groupId: string, permissionName: PermissionName) {\n const groupPermissions = ArrayHelper.findWhere(groupPermissionsTableData, { groupId });\n const permission = ArrayHelper.findWhere(groupPermissions.permissions, { permissionName });\n\n if (!permission) {\n if (permissionName === PermissionName.ViewRestrictedMode) return false;\n \n return true;\n }\n\n return permission.access === GroupPermissionAccess.Allow || permission.access === GroupPermissionAccess.Default;\n }\n\n function updateGroupPermission(groupId: string, permissionName: PermissionName, order: number, allowed: boolean) {\n setHasChanged(true);\n\n if (permissionName === PermissionName.ViewRestrictedMode) {\n dispatch({ type: 'restricted', groupId, order, allowed });\n return;\n }\n \n dispatch({ type: 'toggle', groupId, permissionName, order, allowed });\n }\n\n function undoChanges() {\n setHasChanged(false);\n \n dispatch({ type: 'init', groupPermissions: groupPermissions.data, yearGroups: yearGroups.data });\n }\n\n function getGroupPermissionsRequestData() {\n let requestData: GroupPermission[] = [];\n\n groupPermissionsTableData.forEach(group => {\n if (!group.permissions) return;\n\n const permissions = group.permissions.map(permission => {\n return {\n groupId: group.groupId,\n groupType: group.groupType,\n permissionName: permission.permissionName,\n access: permission.access\n };\n });\n\n requestData = requestData.concat(permissions);\n });\n\n return requestData;\n }\n\n async function updateGroupPermissions() {\n const data = getGroupPermissionsRequestData();\n \n try {\n await fetchAsync(GroupPermissionsRequests.updateGroupPermissions(data));\n\n setHasChanged(false);\n\n alerts.success(getPhrase('success'));\n } catch {\n alerts.error(getPhrase('error'));\n }\n }\n\n return {\n updateGroupPermission,\n isPermissionEnabled,\n groupPermissionsTableData,\n hasChanged,\n getGroupPermissionsRequestData,\n updateGroupPermissions,\n undoChanges\n };\n}","import React from 'react';\n\nexport function ManageGroupPermissionsPartial() {\n return (\n <div className='w-100 rounded-3 border border-light'>\n <ul className='list-unstyled w-100'>\n <li className='py-2 px-3 w-100'>&nbsp;</li>\n {[...Array(13)].map((_, i) => <li key={`partial-${i}`} className={`${i % 2 === 0 ? 'partial-loading-background' : ''} w-100 p-3`}>&nbsp;</li>)}\n </ul>\n </div>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"cellBorder\":\"RiJHh\"};","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { TableTheme } from 'libs/shared/components/table/Table';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { PermissionName } from 'libs/shared/enums/PermissionName';\nimport { LiteSupportArticle } from 'libs/shared/enums/SupportArticle';\nimport { useNavLock } from 'libs/shared/hooks/useNavLock';\nimport { ArticleHelper } from 'libs/shared/utils/ArticleHelper';\n\nimport { LayoutHelper } from 'shared/utils/LayoutHelper';\n\nimport { SettingsLayout } from 'apps/settings/components/settings-layout/SettingsLayout';\nimport { PermissionCheckbox } from 'apps/settings/views/manage-group-permissions/components/permission-checkbox/PermissionCheckbox';\nimport { RestrictedToggle } from 'apps/settings/views/manage-group-permissions/components/restricted-toggle/RestrictedToggle';\nimport { ManagePermissionsTableHeader } from 'apps/settings/views/manage-group-permissions/components/table-header/ManagePermissionsTableHeader';\nimport { ALL_GROUP_PERMISSIONS } from 'apps/settings/views/manage-group-permissions/constants/GroupPermissions';\nimport { useGroupPermissionsTableData } from 'apps/settings/views/manage-group-permissions/hooks/useGroupPermissionsTableData';\nimport { ManageGroupPermissionsPartial } from 'apps/settings/views/manage-group-permissions/partial-loading/ManageGroupPermissionsPartial';\n\nimport styles from './manage-group-permissions.scss';\n\nconst namespace = 'settings.manageGroupPermissions';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nconst NAV_LOCK_ID = 'manage-group-permissions';\n\nexport const TABLE_THEME: TableTheme = {\n table: 'table table-borderless align-middle min-w-100 mb-0',\n header: 'border-bottom',\n headerCell: `${styles.cellBorder} align-middle fw-semibold px-3 py-2`,\n body: 'striped-list',\n cell: `${styles.cellBorder} bg-transparent p-3`\n};\n\nexport interface HoveredPermission {\n permissionName: PermissionName,\n order: number\n}\n\ninterface PermissionTableColumn {\n permissionName: PermissionName;\n heading: string;\n tooltip: string;\n}\n\nconst columnHeadings: PermissionTableColumn[] = [\n {\n permissionName: PermissionName.ViewDiscover,\n heading: getPhrase('discover'),\n tooltip: getPhrase('discoverTooltip')\n },\n {\n permissionName: PermissionName.ViewSearch,\n heading: getPhrase('search'),\n tooltip: getPhrase('searchTooltip')\n },\n {\n permissionName: PermissionName.UploadVideo,\n heading: getPhrase('uploadVideos'),\n tooltip: getPhrase('uploadVideosTooltip')\n },\n {\n permissionName: PermissionName.ViewMoviesTv,\n heading: getPhrase('moviestv'),\n tooltip: getPhrase('moviestvTooltip')\n },\n {\n permissionName: PermissionName.ViewLibraries,\n heading: getPhrase('customLibraries'),\n tooltip: getPhrase('customLibrariesTooltip')\n }\n];\n\nexport function ManageGroupPermissionsView() {\n const articleUrl = ArticleHelper.getLiteArticle(LiteSupportArticle.ManageGroupPermissions);\n\n const {\n updateGroupPermission,\n isPermissionEnabled,\n groupPermissionsTableData,\n updateGroupPermissions,\n hasChanged,\n undoChanges\n } = useGroupPermissionsTableData();\n\n const [ hoveredPermission, setHoveredPermission ] = React.useState<HoveredPermission>(null);\n \n const navLock = useNavLock();\n\n React.useEffect(() => {\n if (!hasChanged)\n return;\n\n navLock.lock({\n id: NAV_LOCK_ID,\n title: getPhrase('navLockTitle'),\n text: getPhrase('navLockBody')\n });\n\n return () => {\n navLock.unlock(NAV_LOCK_ID);\n };\n }, [hasChanged]);\n\n React.useEffect(() => {\n LayoutHelper.lockContentWidth();\n return () => LayoutHelper.unlockContentWidth();\n }, []);\n \n \n function onPermissionHover(hoveredPermission?: HoveredPermission) {\n setHoveredPermission(hoveredPermission);\n }\n\n const toggleProps = {\n isPermissionEnabled,\n updateGroupPermission,\n hoveredPermission,\n onPermissionHover\n };\n\n return (\n <SettingsLayout\n heading={getPhrase('heading')}\n breadcrumbs={[getPhrase('breadcrumb')]}\n requiredPermissions={PermissionName.ManageCustomerSettings}\n >\n <p className='mb-2'>\n <Text namespace={namespace} phrase='description' options={{ articleUrl }} />\n </p>\n <div className='d-flex justify-content-between align-items-end mb-3'>\n <p className='me-2 mb-0'>\n <Text namespace={namespace} phrase='selectFeatures' />\n </p>\n <div className='d-flex float-end gap-3'>\n <button className='btn btn-outline-dark text-nowrap' onClick={() => undoChanges()} disabled={!hasChanged}>\n <Text namespace={namespace} phrase='undo' />\n </button>\n <button className='btn btn-dark text-nowrap' onClick={updateGroupPermissions} disabled={!hasChanged}>\n <Text namespace={namespace} phrase='submit' />\n </button>\n </div>\n </div>\n\n {!groupPermissionsTableData && (\n <ManageGroupPermissionsPartial />\n )}\n\n {groupPermissionsTableData && (\n <div className='rounded-3 border border-light overflow-hidden'>\n <table className={TABLE_THEME.table}>\n <thead className={TABLE_THEME.header}>\n <tr>\n <td className={TABLE_THEME.headerCell}>{getPhrase('yearGroup')}</td>\n <td className={TABLE_THEME.headerCell}>\n <ManagePermissionsTableHeader heading={getPhrase('restrictedMode')} tooltip={getPhrase('restrictedModeTooltip')} />\n </td>\n {columnHeadings.map(column => (\n <td key={`thead-${column.permissionName}`} className={TABLE_THEME.headerCell}>\n <ManagePermissionsTableHeader heading={column.heading} tooltip={column.tooltip} />\n </td>\n ))}\n </tr>\n </thead>\n <tbody className={TABLE_THEME.body}>\n {groupPermissionsTableData.map(data => {\n const cellTheme = TABLE_THEME.cell as string;\n return (\n <tr key={data.groupId}>\n <td className={cellTheme}>{data.groupName}</td>\n <td className={cellTheme}>\n <RestrictedToggle\n groupPermissions={data}\n {...toggleProps}\n />\n </td>\n {ALL_GROUP_PERMISSIONS.map(permissionName => (\n <td key={`tbody-${permissionName}`} className={cellTheme}>\n <PermissionCheckbox\n permissionName={permissionName}\n groupPermissions={data}\n {...toggleProps}\n />\n </td>\n ))}\n </tr>\n );\n })}\n </tbody>\n </table>\n </div>\n )}\n </SettingsLayout>\n );\n}"],"names":["getPhrase","BreadcrumbItem","props","ref","breadcrumb","name","appLink","active","withBackIcon","trimmedName","title","length","slice","className","svgName","size","S","Breadcrumbs","breadcrumbs","isMobile","collapse","setCollapse","shouldFocus","setShouldFocus","expandRef","characterLength","reduce","prev","next","current","focus","first","second","secondLast","last","rest","onClick","map","idx","key","PartialBreadcrumbs","numItems","style","height","width","dangerouslySetInnerHTML","__html","OnlineSupportArticle","LiteSupportArticle","defaultErrors","notFound","forbidden","rating","yearLevel","region","privacy","badRequest","handleHttpError","info","customErrorMap","ignoreMap","statusCode","status","errorMap","generateCacheKey","flightObjs","obj","join","useHandleObjectError","_flightObjs","customErrors","ignoreErrors","Array","isArray","useEffect","forEach","DEFAULT_PARTIAL_LOADING_OPTIONS","minWidth","maxWidth","PartialLoadingHelper","getPartialLoadingItems","options","opts","Math","max","floor","random","namespace","useCanAccessSettings","requiredPermissions","hasPermissions","settingsGroups","currentRoute","application","some","group","modules","settingsModule","action","SettingsLayout","canAccess","replace","i","heading","headingButton","description","children","CascadeHoverContainer","isDisabled","cascadeCheck","cascadeUncheck","onMouseEnter","onHover","permission","onMouseLeave","GroupPermissionAccess","GroupPermissionType","RESTRICTED_MODE_PERMISSIONS","PermissionName","TOGGLEABLE_GROUP_PERMISSIONS","ALL_GROUP_PERMISSIONS","PermissionCheckbox","groupId","groupPermissions","permissionAllowed","isPermissionEnabled","permissionName","restrictedMode","ArrayHelper","permissions","isRestricted","access","Allow","isRestrictedOnlyPermission","find","restrictedPermission","cascadeRestrictedCheck","hoveredPermission","order","cascadeRestrictedUncheck","SvgContainer","isPermissionHovered","isHovering","onPermissionHover","Checkbox","id","inputClassName","ariaLabel","groupName","onChange","updateGroupPermission","checked","disabled","RestrictedToggle","ToggleSwitch","on","floatEnd","ManagePermissionsTableHeader","tooltip","Tooltip","spanHack","spanHackClassName","GroupPermissionsRequests","url","normalize","updateGroupPermissions","data","type","HttpVerbs","invalidationKeys","togglePermissionAccess","Deny","updatePermission","fixedAccess","updatedPermissions","reducer","state","allowed","toggleGroupPermission","toggledRestrictedModeAccess","includes","toggleRestrictedMode","yearGroups","groupedPermissions","acc","groupKey","push","yearGroup","groupType","YearGroup","value","LanguageService","useGroupPermissionsTableData","alerts","fetchAsync","currentUser","UserRequests","CustomerRequests","customerId","groupPermissionsTableData","dispatch","hasChanged","setHasChanged","getGroupPermissionsRequestData","requestData","concat","hasCompleted","Default","success","error","undoChanges","ManageGroupPermissionsPartial","_","NAV_LOCK_ID","TABLE_THEME","table","header","headerCell","body","cell","columnHeadings","ManageGroupPermissionsView","articleUrl","ArticleHelper","setHoveredPermission","navLock","useNavLock","lock","text","unlock","LayoutHelper","toggleProps","Text","phrase","column","cellTheme"],"sourceRoot":""}