@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 9230-77ff8b16ac-lite.chunk.js.LICENSE.txt */
2
- "use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[9230],{83657:(e,t,n)=>{n.d(t,{e:()=>s});var r=n(32735),a=n(91967),o=n(10874),i=n(36532),c=n(42735),l=n(86509);function s(e){var t=r.useMemo((function(){return e.actions.sort((function(e,t){return e.order-t.order}))}),[e.actions]),n=[],s=[];t.forEach((function(e){e.button?n.push(e):s.push(e)}));var u="d-flex";return e.className&&(u+=" ".concat(e.className)),n.length||s.length?r.createElement("div",{className:u},n.length?n.map((function(t,n){return r.createElement(r.Fragment,{key:n},function(){if(t.label){var n=a.q.isFunction(t.label)?t.label:function(){return r.createElement(r.Fragment,null,t.label)};return r.createElement(c.K,{appLink:t.appLink,href:t.href,onClick:t.onClick,svgName:t.svgName,svgSize:e.dropdownToggleSvgSize,className:t.className,tooltip:t.tooltip,showSpinner:t.showSpinner,analyticsData:t.analyticsData,analyticsOptions:t.analyticsOptions,openInNewTab:t.openInNewTab,disabled:t.disabled},n())}var l=r.createElement(o.h,{appLink:t.appLink,href:t.href,onClick:t.onClick,svgName:t.svgName,className:t.className,analyticsData:t.analyticsData,analyticsOptions:t.analyticsOptions,openInNewTab:t.openInNewTab,disabled:t.disabled,showBorder:t.showBorder,customSize:e.customSize,ariaLabel:t.tooltip});return t.tooltip?r.createElement(i.u,{title:t.tooltip,spanHack:!0},l):l}())})):r.createElement(r.Fragment,null),e.sortComponent&&e.sortComponent,s.length?r.createElement(l.m,{actions:s,dropdownToggleClassName:e.actionsDropdownClassName,dropdownToggleSvgSize:e.dropdownToggleSvgSize,fetchMore:e.fetchMore}):r.createElement(r.Fragment,null)):r.createElement(r.Fragment,null)}},86509:(e,t,n)=>{n.d(t,{m:()=>h});var r=n(32735),a=n(91967),o=n(81886),i=n(45157),c=n(49985),l=n(36848),s=n(83914),u=n(36532),m=n(35223);const d={dropdownToggle:"UCAnJ"};function f(){return r.createElement(r.Fragment,null,r.createElement("div",{style:{padding:"0.53125rem 1rem"}},r.createElement("div",{className:"partial-loading-background",style:{height:"1.0625rem",width:"8rem"}})),r.createElement("div",{style:{padding:"0.53125rem 1rem"}},r.createElement("div",{className:"partial-loading-background",style:{height:"1.0625rem",width:"12rem"}})),r.createElement("div",{style:{padding:"0.53125rem 1rem"}},r.createElement("div",{className:"partial-loading-background",style:{height:"1.0625rem",width:"11rem"}})),r.createElement("div",{style:{padding:"0.53125rem 1rem"}},r.createElement("div",{className:"partial-loading-background",style:{height:"1.0625rem",width:"9rem"}})))}function p(e){var t="dropdown-item";return e&&(t+=" ".concat(e)),t}function v(e){var t=a.q.isFunction(e.action.label)?e.action.label:function(){return r.createElement(r.Fragment,null,e.action.label)};if(e.action.appLink)return r.createElement(l.F,{appLink:e.action.appLink,onClick:e.action.onClick,className:p(e.action.className),analyticsData:e.action.analyticsData,analyticsOptions:e.action.analyticsOptions,openInNewTab:e.action.openInNewTab,disabled:e.action.disabled},e.action.svgName&&r.createElement(s.x,{svgName:e.action.svgName,className:"d-inline-block svg-container me-2 align-middle"}),r.createElement("span",{className:"align-middle"},t()));function n(t){t.preventDefault(),e.action.analyticsData&&e.action.analyticsOptions&&c.k.logUserAction(e.action.analyticsData,e.action.analyticsOptions),a.q.isFunction(e.action.onClick)&&e.action.onClick(),e.action.href&&o.Q.Ab.PageLoad(e.action.href,e.action.openInNewTab)}return e.action.href?r.createElement("a",{className:p(e.action.className),onClick:n,href:e.action.href},e.action.svgName&&r.createElement(s.x,{svgName:e.action.svgName,className:"d-inline-block svg-container me-2 align-middle"}),r.createElement("span",{className:"align-middle"},t())):r.createElement("span",{className:"cursor-pointer ".concat(p(e.action.className)),onClick:n,role:"button",tabIndex:0,onKeyDown:function(e){return"Enter"===e.key&&n(e)}},e.action.svgName&&r.createElement(s.x,{svgName:e.action.svgName,className:"d-inline-block svg-container me-2"}),t())}function h(e){if(!e.actions||!e.actions.length)return r.createElement(r.Fragment,null);var t=e.actions.some((function(e){return e.lazyPlaceholder})),n="dropdown";e.className&&(n+=" ".concat(e.className));var a,o="actions-dropdown-".concat(i.Y.getRandomInt()),c="dropdown-toggle px-0 ".concat(d.dropdownToggle);return e.dropdownToggleClassName&&(c+=" ".concat(e.dropdownToggleClassName)),r.createElement("div",{className:n},r.createElement("button",{className:c,type:"button",id:o,"data-bs-toggle":"dropdown","data-toggle":"dropdown","aria-haspopup":"true","aria-expanded":"false","aria-label":"More actions dropdown",onClick:t?e.fetchMore:null},r.createElement(s.x,{svgName:m.vn.More,size:e.dropdownToggleSvgSize})),r.createElement("ul",{className:"dropdown-menu dropdown-menu-end dropdown-menu-right font-size-normal","aria-labelledby":o},t?r.createElement(f,null):e.actions.map((function(e,t){var n=void 0!==a&&a!==e.group;return a=e.group,e.tooltip?r.createElement("li",{key:t},n&&r.createElement("hr",{className:"dropdown-divider",role:"separator"}),r.createElement(u.u,{title:e.tooltip,spanHack:!0},r.createElement(v,{action:e}))):r.createElement("li",{key:t},n&&r.createElement("hr",{className:"dropdown-divider",role:"separator"}),r.createElement(v,{action:e}))}))))}h.defaultProps={dropdownToggleClassName:"btn btn-light",dropdownToggleSvgSize:s.S.Small}},49935:(e,t,n)=>{n.d(t,{Oo:()=>v,b2:()=>h});var r=n(32735),a=n(23481),o=n(36848),i=n(86764),c=n(3747),l=n(5859),s=n(35223),u=n(83914);function m(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,a,o,i,c=[],l=!0,s=!1;try{if(o=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;l=!1}else for(;!(l=(r=o.call(n)).done)&&(c.push(r.value),c.length!==t);l=!0);}catch(e){s=!0,a=e}finally{try{if(!l&&null!=n.return&&(i=n.return(),Object(i)!==i))return}finally{if(s)throw a}}return c}}(e,t)||function(e,t){if(e){if("string"==typeof e)return d(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?d(e,t):void 0}}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function d(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}var f=a.T.encloseNamespace("shared.breadcrumbComponent"),p=r.forwardRef((function(e,t){var n=e.breadcrumb,a=n.name,i=n.appLink,c=n.active,l=e.withBackIcon,m=a,d=null;return m.length>48&&(m=a.slice(0,48)+"...",d=a),r.createElement("li",{className:"breadcrumb-item".concat(c?" active":""),title:d},c?r.createElement("strong",null,m):r.createElement(o.F,{appLink:i,ref:t},l&&r.createElement(u.x,{svgName:s.vn.ChevronLeft,size:u.S.Small}),r.createElement("span",{className:l?"ms-2":""},m)))})),v=function(e){var t=e.breadcrumbs,n=(0,c.a)(i.r.XS),a=(null==t?void 0:t.length)||0,o=m(r.useState(!1),2),l=o[0],s=o[1],u=m(r.useState(!1),2),d=u[0],v=u[1],h=r.useRef();if(r.useEffect((function(){var e,n=null!==(e=null==t?void 0:t.reduce((function(e,t){return e+t.name.length}),0))&&void 0!==e?e:0;a>4&&n>64&&s(!0)}),[null==t?void 0:t.length]),r.useLayoutEffect((function(){var e;d&&(null===(e=h.current)||void 0===e||e.focus())}),[h.current,d]),!a||n&&a<2)return r.createElement(r.Fragment,null);if(n)return r.createElement("nav",{"aria-label":"breadcrumb"},r.createElement("ol",{className:"breadcrumb m-0 p-0"},r.createElement(p,{breadcrumb:t[a-2],withBackIcon:!0})));var g=r.createElement(p,{breadcrumb:t[0]}),b=a>2?r.createElement(p,{breadcrumb:t[1]}):r.createElement(r.Fragment,null),y=a>3?r.createElement(p,{breadcrumb:t[a-2]}):r.createElement(r.Fragment,null),E=a>1?r.createElement(p,{breadcrumb:t[a-1]}):r.createElement(r.Fragment,null),w=t.slice(2,a-2);return r.createElement("nav",{"aria-label":"breadcrumb"},r.createElement("ol",{className:"breadcrumb m-0 p-0"},g,b,l?r.createElement("li",{className:"breadcrumb-item"},r.createElement("button",{className:"btn-link",onClick:function(){s(!1),v(!0)},"aria-label":f("expand")},"...")):w.map((function(e,t){return r.createElement(p,{key:t,breadcrumb:e,ref:0===t?h:null})})),y,E))},h=r.memo((function(e){var t=e.numItems,n=void 0===t?3:t;return(0,c.a)(i.r.XS)?r.createElement("div",{className:"partial-loading-background",style:{height:"1.3125rem",width:"6rem"}}):r.createElement("nav",{"aria-label":"breadcrumb"},r.createElement("ol",{className:"breadcrumb m-0 p-0"},l.u.getPartialLoadingItems({numItems:n}).map((function(e,t){var n=e.width;return r.createElement("li",{key:t,className:"breadcrumb-item"},r.createElement("span",{className:"d-inline-block partial-loading-background",style:{width:n},dangerouslySetInnerHTML:{__html:"&nbsp"}}))}))))}))},61254:(e,t,n)=>{n.d(t,{s:()=>c});var r=n(32735),a=n(42648);function o(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,a,o,i,c=[],l=!0,s=!1;try{if(o=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;l=!1}else for(;!(l=(r=o.call(n)).done)&&(c.push(r.value),c.length!==t);l=!0);}catch(e){s=!0,a=e}finally{try{if(!l&&null!=n.return&&(i=n.return(),Object(i)!==i))return}finally{if(s)throw a}}return c}}(e,t)||function(e,t){if(e){if("string"==typeof e)return i(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?i(e,t):void 0}}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function i(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}var c=r.forwardRef((function(e,t){var n=o(r.useState(e.containerHeight||0),2),i=n[0],c=n[1],l=o(r.useState(0),2),s=l[0],u=l[1],m=r.useRef(null);r.useEffect((function(){var t,n;e.containerHeight||c(null!==(n=null===(t=m.current)||void 0===t?void 0:t.clientHeight)&&void 0!==n?n:0)}),[m.current]);var d,f,p,v=e.items.length,h=Math.ceil(i/e.rowHeight),g=e.rowHeight*v,b=Math.max(0,Math.floor(s/e.rowHeight)-h),y=Math.min(v,b+3*h);return r.createElement("div",{style:(p=null!==(f=null===(d=m.current)||void 0===d?void 0:d.getBoundingClientRect().top)&&void 0!==f?f:0,{height:e.containerHeight||"calc(100vh - ".concat(window.pageYOffset+p+30,"px)"),minHeight:"".concat(5*e.rowHeight,"px"),overflow:"auto"}),ref:m},r.createElement(a.$B,{onScroll:function(e){u(e.currentTarget.scrollTop)},autoHeightMin:g,autoHeightMax:g,ref:t},r.createElement("div",{style:{height:g,paddingTop:b*e.rowHeight}},r.createElement("ul",{className:"w-100 position-relative d-table striped-list list-unstyled no-full-width"},!!e.staticComponentAboveRows&&e.staticComponentAboveRows,function(){for(var t=[],n=b;n<y;){var r=e.items[n];r&&t.push(e.getComponent(r,n)),n++}return t}(),!!e.staticComponentBelowRows&&e.staticComponentBelowRows))))}))},99705:(e,t,n)=>{var r,a;n.d(t,{b:()=>a}),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"}(r||(r={})),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"}(a||(a={}))},5859:(e,t,n)=>{function r(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}n.d(t,{u:()=>o});var a={numItems:5,minWidth:50,maxWidth:100},o={getPartialLoadingItems:function(){var e,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=Object.assign(Object.assign({},a),t);return(e=Array(n.numItems),function(e){if(Array.isArray(e))return r(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,t){if(e){if("string"==typeof e)return r(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?r(e,t):void 0}}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()).map((function(){return{width:"".concat(Math.max(Math.floor(Math.random()*n.maxWidth),n.minWidth),"px")}}))}}},81803:(e,t,n)=>{n.d(t,{d:()=>p});var r=n(32735),a=n(81886),o=n(23481),i=n(49935),c=n(22902),l=n(14070),s=n(97291),u=n(96368);function m(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}var d="settings.settingsLayout",f=function(e){var t=(0,c.T)().hasPermissions,n=(0,u.e)();if(e)return t(e);var r=a.Q.C$.getCurrentAppLink();return r.application!==s.O.SETTINGS||n.some((function(e){return e.modules.some((function(e){return"appLink"in e&&e.appLink.action===r.action}))}))};function p(e){var t,n=f(e.requiredPermissions);if(r.useEffect((function(){n||a.Q.C$.trigger({application:s.O.SETTINGS,action:l.e.Settings.HOME},{replace:!0})}),[n]),!n)return r.createElement(r.Fragment,null);var c,u=e.breadcrumbs.map((function(t,n){return{name:t,appLink:{application:s.O.SETTINGS,action:l.e.Settings.HOME},active:n===e.breadcrumbs.length-1}}));return r.createElement("div",{className:"px-3"},r.createElement("div",{className:"d-flex align-items-center justify-content-between"},r.createElement("h1",{className:"h2"},e.heading),null===(t=e.headingButton)||void 0===t?void 0:t.call(e)),r.createElement("div",{className:"pb-3"},r.createElement(i.Oo,{breadcrumbs:[{name:o.T.getPhrase(d,"settingsBreadcrumb"),appLink:{application:s.O.SETTINGS,action:l.e.Settings.HOME}}].concat((c=u,function(e){if(Array.isArray(e))return m(e)}(c)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(c)||function(e,t){if(e){if("string"==typeof e)return m(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?m(e,t):void 0}}(c)||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&&r.createElement(r.Fragment,null,r.createElement("p",null,e.description),r.createElement("hr",null)),e.children)}},28611:(e,t,n)=>{n.d(t,{i:()=>o});var r=n(32735);const a={numberContainer:"JBRDi"};function o(e){var t=e.number,n=e.children,o=e.className,i=void 0===o?"":o;return r.createElement("div",{className:"d-flex align-items-center mb-3 ".concat(i)},r.createElement("div",{className:"d-flex align-items-center justify-content-center bg-dark rounded-circle ".concat(a.numberContainer)},r.createElement("span",{className:"text-light"},t)),r.createElement("div",{className:"ms-2"},n))}},65271:(e,t,n)=>{n.r(t),n.d(t,{AppleTvSettingsView:()=>ne});var r=n(32735),a=n(23481),o=n(61254),i=n(16714),c=n(69883),l=n(83657),s=n(86509),u=n(83914),m=n(35223),d=n(12399);const f={indicator:"xidrU"};function p(e){return p="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},p(e)}function v(e,t,n){return(t=function(e){var t=function(e,t){if("object"!=p(e)||!e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var r=n.call(e,"string");if("object"!=p(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==p(t)?t:t+""}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var h=a.T.encloseNamespace("settings.deviceListItem");function g(e){var t=e.status,n=e.name,a=e.onUnpair,o=e.onRename;return r.createElement("li",{className:"d-flex align-items-center p-2 justify-content-between"},r.createElement("div",{className:"d-flex align-items-center"},r.createElement(u.x,{svgName:m.vn.AppleTv,className:"svg-container me-2"}),r.createElement("div",null,n)),r.createElement("div",{className:"d-flex align-items-center"},r.createElement(E,{status:t}),o&&r.createElement(l.e,{actions:[{svgName:m.vn.Edit,className:"btn btn-link svg-container",onClick:o,button:!0,disabled:t!==d.L.Available}]}),r.createElement(s.m,{actions:[{label:h("unpairActionButton"),onClick:a}],dropdownToggleClassName:"btn ms-3"})))}var b=v(v(v({},d.L.Available,"bg-success"),d.L.Busy,"bg-warning"),d.L.Offline,"bg-gray-500"),y=v(v(v({},d.L.Available,h("availableStatusLabel")),d.L.Busy,h("busyStatusLabel")),d.L.Offline,h("offlineStatusLabel"));function E(e){var t,n,a=null!==(t=b[e.status])&&void 0!==t?t:"",o=null!==(n=y[e.status])&&void 0!==n?n:"";return r.createElement("div",{className:"d-flex align-items-center me-4"},r.createElement("div",{className:"".concat(f.indicator," ").concat(a," me-2")}),r.createElement("span",null,o))}var w=n(81803),N=n(20354),S=n(1666),x=n(2744),k=n(31949),A=n(86086);function T(e,t){if(e){if("string"==typeof e)return L(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?L(e,t):void 0}}function L(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}var C=n(89725),I=n(11607),O=n(86794),j=n(83345),F=n(99705),P=n(12778),M=n(99742),_=n(28611);const B={deviceInput:"hkziS",pinInput:"_oWnE",image:"s5WWG",inputWrapper:"BTvzv"};var D="settings.appleTv.pairDeviceView",H=a.T.encloseNamespace(D);function R(e){var t=e.deviceName,n=e.pin,a=e.onDeviceNameChange,o=e.onPinChange,i=e.onActivate;return r.createElement("div",{className:"rounded-3 px-4 py-3 mt-3 bg-light-blue d-flex flex-row justify-content-between"},r.createElement("div",null,r.createElement("h3",{className:"h6 mb-3"},r.createElement(j.x,{namespace:D,phrase:"instructionsHeading"})),r.createElement(_.i,{number:1},r.createElement("div",{className:"d-flex align-items-center flex-wrap"},r.createElement(j.x,{namespace:D,phrase:"instructionsStep1Fragment1"}),r.createElement(O.b,{className:"mx-1",size:u.S.Small},r.createElement(C.F,null)),r.createElement(j.x,{namespace:D,phrase:"instructionsStep1Fragment2"}),r.createElement(u.x,{svgName:m.vn.AppleTv,size:u.S.Small}),r.createElement(j.x,{namespace:D,phrase:"instructionsStep1Fragment3"}))),r.createElement(_.i,{number:2},r.createElement(j.x,{namespace:D,phrase:"instructionsStep2"})),r.createElement("div",{className:"".concat(B.inputWrapper," d-flex align-items-end form-group flex-wrap")},r.createElement("div",{className:"d-flex flex-column me-2 mb-3"},r.createElement("label",{className:"fw-bold mb-1",htmlFor:"create"},r.createElement(j.x,{namespace:D,phrase:"deviceNameInputLabel"})),r.createElement("input",{id:"device",className:"form-control form-control-md ".concat(B.deviceInput),value:t,onChange:function(e){return a(e.target.value)},autoComplete:"off",placeholder:H("deviceNameInputPlaceholder")})),r.createElement("div",{className:"d-flex flex-column me-2 mb-3"},r.createElement("label",{className:"fw-bold mb-1",htmlFor:"create"},r.createElement(j.x,{namespace:D,phrase:"pinInputLabel"})),r.createElement("input",{id:"pin",className:"form-control form-control-md ".concat(B.pinInput),value:n,onChange:function(e){return o(e.target.value)},autoComplete:"off",placeholder:"1234"})),r.createElement(I.L,{onClick:i,className:"btn btn-dark mb-3"},r.createElement(j.x,{namespace:D,phrase:"activateButton"}))),r.createElement(_.i,{number:3},r.createElement(j.x,{namespace:D,phrase:"instructionsStep3Fragment1"}),r.createElement(u.x,{svgName:m.vn.Cast,size:u.S.Small}),r.createElement(j.x,{namespace:D,phrase:"instructionsStep3Fragment2"})),r.createElement("a",{href:P.o.getLiteArticle(F.b.AppleTvIntegration),target:"_blank",className:"text-info mt-2"},r.createElement(j.x,{namespace:D,phrase:"learnMore"}))),r.createElement("div",{className:"ms-2 d-flex align-items-center"},r.createElement("img",{className:B.image,role:"presentation",src:M.W.Devices.APPLE_TV})))}var G=n(9111),U=n(13876);function z(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}var W="settings.appleTvSettings.renameDevicePopup",$=a.T.encloseNamespace(W);function q(e){var t,n,a=(t=r.useState(e.name),n=2,function(e){if(Array.isArray(e))return e}(t)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,a,o,i,c=[],l=!0,s=!1;try{if(o=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;l=!1}else for(;!(l=(r=o.call(n)).done)&&(c.push(r.value),c.length!==t);l=!0);}catch(e){s=!0,a=e}finally{try{if(!l&&null!=n.return&&(i=n.return(),Object(i)!==i))return}finally{if(s)throw a}}return c}}(t,n)||function(e,t){if(e){if("string"==typeof e)return z(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?z(e,t):void 0}}(t,n)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),o=a[0],i=a[1],c=o.trim();return r.createElement(G.G,{title:$("title"),closePopup:e.closePopup},r.createElement("div",{className:"form-group"},r.createElement("label",{className:"fw-bold mb-2",htmlFor:"edit"},r.createElement(j.x,{namespace:W,phrase:"inputLabel"})),r.createElement("input",{value:o,onChange:function(e){return i(e.target.value)},className:"form-control form-control-md mb-4",autoFocus:!0,placeholder:$("inputPlaceholder")})),r.createElement(U.u,null,r.createElement(U.u.Cancel,{onClick:e.closePopup}),r.createElement(U.u.Submit,{disabled:!c,variant:"dark",text:$("saveButton"),onClick:function(){return e.onRename(c)},showSpinner:e.showSpinner})))}var V="settings.appleTvSettings.unpairDevicePopup",Y=a.T.encloseNamespace(V);function Q(e){var t=e.closePopup,n=e.showSpinner,a=e.deviceName,o=e.onUnpair;return r.createElement(G.G,{title:Y("title"),closePopup:t},r.createElement("p",null,r.createElement(j.x,{namespace:V,phrase:"warning",options:{name:a}})),r.createElement("p",null,r.createElement(j.x,{namespace:V,phrase:"subWarning"})),r.createElement(U.u,null,r.createElement(U.u.Cancel,{onClick:t}),r.createElement(U.u.Submit,{variant:"danger",text:Y("unpairButton"),onClick:o,showSpinner:n})))}function J(e){return J="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},J(e)}function K(){K=function(){return t};var e,t={},n=Object.prototype,r=n.hasOwnProperty,a=Object.defineProperty||function(e,t,n){e[t]=n.value},o="function"==typeof Symbol?Symbol:{},i=o.iterator||"@@iterator",c=o.asyncIterator||"@@asyncIterator",l=o.toStringTag||"@@toStringTag";function s(e,t,n){return Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}),e[t]}try{s({},"")}catch(e){s=function(e,t,n){return e[t]=n}}function u(e,t,n,r){var o=t&&t.prototype instanceof g?t:g,i=Object.create(o.prototype),c=new I(r||[]);return a(i,"_invoke",{value:A(e,n,c)}),i}function m(e,t,n){try{return{type:"normal",arg:e.call(t,n)}}catch(e){return{type:"throw",arg:e}}}t.wrap=u;var d="suspendedStart",f="suspendedYield",p="executing",v="completed",h={};function g(){}function b(){}function y(){}var E={};s(E,i,(function(){return this}));var w=Object.getPrototypeOf,N=w&&w(w(O([])));N&&N!==n&&r.call(N,i)&&(E=N);var S=y.prototype=g.prototype=Object.create(E);function x(e){["next","throw","return"].forEach((function(t){s(e,t,(function(e){return this._invoke(t,e)}))}))}function k(e,t){function n(a,o,i,c){var l=m(e[a],e,o);if("throw"!==l.type){var s=l.arg,u=s.value;return u&&"object"==J(u)&&r.call(u,"__await")?t.resolve(u.__await).then((function(e){n("next",e,i,c)}),(function(e){n("throw",e,i,c)})):t.resolve(u).then((function(e){s.value=e,i(s)}),(function(e){return n("throw",e,i,c)}))}c(l.arg)}var o;a(this,"_invoke",{value:function(e,r){function a(){return new t((function(t,a){n(e,r,t,a)}))}return o=o?o.then(a,a):a()}})}function A(t,n,r){var a=d;return function(o,i){if(a===p)throw Error("Generator is already running");if(a===v){if("throw"===o)throw i;return{value:e,done:!0}}for(r.method=o,r.arg=i;;){var c=r.delegate;if(c){var l=T(c,r);if(l){if(l===h)continue;return l}}if("next"===r.method)r.sent=r._sent=r.arg;else if("throw"===r.method){if(a===d)throw a=v,r.arg;r.dispatchException(r.arg)}else"return"===r.method&&r.abrupt("return",r.arg);a=p;var s=m(t,n,r);if("normal"===s.type){if(a=r.done?v:f,s.arg===h)continue;return{value:s.arg,done:r.done}}"throw"===s.type&&(a=v,r.method="throw",r.arg=s.arg)}}}function T(t,n){var r=n.method,a=t.iterator[r];if(a===e)return n.delegate=null,"throw"===r&&t.iterator.return&&(n.method="return",n.arg=e,T(t,n),"throw"===n.method)||"return"!==r&&(n.method="throw",n.arg=new TypeError("The iterator does not provide a '"+r+"' method")),h;var o=m(a,t.iterator,n.arg);if("throw"===o.type)return n.method="throw",n.arg=o.arg,n.delegate=null,h;var i=o.arg;return i?i.done?(n[t.resultName]=i.value,n.next=t.nextLoc,"return"!==n.method&&(n.method="next",n.arg=e),n.delegate=null,h):i:(n.method="throw",n.arg=new TypeError("iterator result is not an object"),n.delegate=null,h)}function L(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function C(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function I(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(L,this),this.reset(!0)}function O(t){if(t||""===t){var n=t[i];if(n)return n.call(t);if("function"==typeof t.next)return t;if(!isNaN(t.length)){var a=-1,o=function n(){for(;++a<t.length;)if(r.call(t,a))return n.value=t[a],n.done=!1,n;return n.value=e,n.done=!0,n};return o.next=o}}throw new TypeError(J(t)+" is not iterable")}return b.prototype=y,a(S,"constructor",{value:y,configurable:!0}),a(y,"constructor",{value:b,configurable:!0}),b.displayName=s(y,l,"GeneratorFunction"),t.isGeneratorFunction=function(e){var t="function"==typeof e&&e.constructor;return!!t&&(t===b||"GeneratorFunction"===(t.displayName||t.name))},t.mark=function(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,y):(e.__proto__=y,s(e,l,"GeneratorFunction")),e.prototype=Object.create(S),e},t.awrap=function(e){return{__await:e}},x(k.prototype),s(k.prototype,c,(function(){return this})),t.AsyncIterator=k,t.async=function(e,n,r,a,o){void 0===o&&(o=Promise);var i=new k(u(e,n,r,a),o);return t.isGeneratorFunction(n)?i:i.next().then((function(e){return e.done?e.value:i.next()}))},x(S),s(S,l,"Generator"),s(S,i,(function(){return this})),s(S,"toString",(function(){return"[object Generator]"})),t.keys=function(e){var t=Object(e),n=[];for(var r in t)n.push(r);return n.reverse(),function e(){for(;n.length;){var r=n.pop();if(r in t)return e.value=r,e.done=!1,e}return e.done=!0,e}},t.values=O,I.prototype={constructor:I,reset:function(t){if(this.prev=0,this.next=0,this.sent=this._sent=e,this.done=!1,this.delegate=null,this.method="next",this.arg=e,this.tryEntries.forEach(C),!t)for(var n in this)"t"===n.charAt(0)&&r.call(this,n)&&!isNaN(+n.slice(1))&&(this[n]=e)},stop:function(){this.done=!0;var e=this.tryEntries[0].completion;if("throw"===e.type)throw e.arg;return this.rval},dispatchException:function(t){if(this.done)throw t;var n=this;function a(r,a){return c.type="throw",c.arg=t,n.next=r,a&&(n.method="next",n.arg=e),!!a}for(var o=this.tryEntries.length-1;o>=0;--o){var i=this.tryEntries[o],c=i.completion;if("root"===i.tryLoc)return a("end");if(i.tryLoc<=this.prev){var l=r.call(i,"catchLoc"),s=r.call(i,"finallyLoc");if(l&&s){if(this.prev<i.catchLoc)return a(i.catchLoc,!0);if(this.prev<i.finallyLoc)return a(i.finallyLoc)}else if(l){if(this.prev<i.catchLoc)return a(i.catchLoc,!0)}else{if(!s)throw Error("try statement without catch or finally");if(this.prev<i.finallyLoc)return a(i.finallyLoc)}}}},abrupt:function(e,t){for(var n=this.tryEntries.length-1;n>=0;--n){var a=this.tryEntries[n];if(a.tryLoc<=this.prev&&r.call(a,"finallyLoc")&&this.prev<a.finallyLoc){var o=a;break}}o&&("break"===e||"continue"===e)&&o.tryLoc<=t&&t<=o.finallyLoc&&(o=null);var i=o?o.completion:{};return i.type=e,i.arg=t,o?(this.method="next",this.next=o.finallyLoc,h):this.complete(i)},complete:function(e,t){if("throw"===e.type)throw e.arg;return"break"===e.type||"continue"===e.type?this.next=e.arg:"return"===e.type?(this.rval=this.arg=e.arg,this.method="return",this.next="end"):"normal"===e.type&&t&&(this.next=t),h},finish:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.finallyLoc===e)return this.complete(n.completion,n.afterLoc),C(n),h}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.tryLoc===e){var r=n.completion;if("throw"===r.type){var a=r.arg;C(n)}return a}}throw Error("illegal catch attempt")},delegateYield:function(t,n,r){return this.delegate={iterator:O(t),resultName:n,nextLoc:r},"next"===this.method&&(this.arg=e),h}},t}function X(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,a,o,i,c=[],l=!0,s=!1;try{if(o=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;l=!1}else for(;!(l=(r=o.call(n)).done)&&(c.push(r.value),c.length!==t);l=!0);}catch(e){s=!0,a=e}finally{try{if(!l&&null!=n.return&&(i=n.return(),Object(i)!==i))return}finally{if(s)throw a}}return c}}(e,t)||function(e,t){if(e){if("string"==typeof e)return Z(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?Z(e,t):void 0}}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function Z(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}var ee=function(e,t,n,r){return new(n||(n=Promise))((function(a,o){function i(e){try{l(r.next(e))}catch(e){o(e)}}function c(e){try{l(r.throw(e))}catch(e){o(e)}}function l(e){var t;e.done?a(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(i,c)}l((r=r.apply(e,t||[])).next())}))},te=a.T.encloseNamespace("settings.appleTv");function ne(){var e=function(){var e,t,n,a,o=(n=r.useState([]),a=2,function(e){if(Array.isArray(e))return e}(n)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,a,o,i,c=[],l=!0,s=!1;try{if(o=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;l=!1}else for(;!(l=(r=o.call(n)).done)&&(c.push(r.value),c.length!==t);l=!0);}catch(e){s=!0,a=e}finally{try{if(!l&&null!=n.return&&(i=n.return(),Object(i)!==i))return}finally{if(s)throw a}}return c}}(n,a)||T(n,a)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),i=o[0],c=o[1],l=r.useRef(),s=N.a.useGetFetchAsync(),u=N.a.useBasicFetch(k.N.currentUser()),m=N.a.useBasicFetch((null===(e=u.data)||void 0===e?void 0:e.isAuthenticated)&&S.h.customer(u.data.customerId));return r.useEffect((function(){var e,t,n;if((null===(e=u.data)||void 0===e?void 0:e.isAuthenticated)&&m.hasCompleted)return l.current=new A.w({fetchAccessToken:function(){return s(x.z.getAppleTvAccessToken())},userId:parseInt(null===(t=u.data)||void 0===t?void 0:t.id)}),null===(n=l.current)||void 0===n||n.on("deviceschange",(function(){var e;c(function(e){return function(e){if(Array.isArray(e))return L(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||T(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.")}()}(null===(e=l.current)||void 0===e?void 0:e.getDevices()))})),function(){var e;return null===(e=l.current)||void 0===e?void 0:e.dispose()}}),[null===(t=u.data)||void 0===t?void 0:t.isAuthenticated,m.hasCompleted]),{devices:i,pair:function(e){var t,n;return null===(t=l.current)||void 0===t?void 0:t.pair(Object.assign(Object.assign({},e),{crmId:parseInt(null===(n=m.data)||void 0===n?void 0:n.crmId)}))},unpair:function(e){var t;return null===(t=l.current)||void 0===t?void 0:t.unpair(e)},rename:function(e){return null==l?void 0:l.current.renameDevice(e)}}}(),t=e.devices,n=e.pair,a=e.unpair,l=e.rename,s=X(r.useState(""),2),u=s[0],m=s[1],d=X(r.useState(""),2),f=d[0],p=d[1],v=X(r.useState(),2),h=v[0],b=v[1],y=X(r.useState(),2),E=y[0],C=y[1],I=X(r.useState(!1),2),O=I[0],j=I[1],F=(0,c.Z)();return r.createElement(w.d,{heading:te("heading"),breadcrumbs:[te("heading")],requiredPermissions:i.C.ManageIntegrations},h&&r.createElement(q,{name:h.name,showSpinner:O,onRename:function(e){return function(e,t){return ee(this,void 0,void 0,K().mark((function n(){return K().wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.prev=0,j(!0),n.next=4,l({deviceId:e,deviceName:t});case 4:b(void 0),F.success(te("deviceRenamingSuccessMessage")),n.next=12;break;case 8:n.prev=8,n.t0=n.catch(0),console.error(n.t0),F.error(te("deviceRenamingErrorMessage"));case 12:return n.prev=12,j(!1),n.finish(12);case 15:case"end":return n.stop()}}),n,null,[[0,8,12,15]])})))}(h.id,e)},closePopup:function(){return b(void 0)}}),E&&r.createElement(Q,{showSpinner:O,deviceName:E.name,onUnpair:function(){return function(e){return ee(this,void 0,void 0,K().mark((function t(){return K().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.prev=0,j(!0),t.next=4,a(e);case 4:C(void 0),F.success(te("deviceUnpairingSuccessMessage")),t.next=12;break;case 8:t.prev=8,t.t0=t.catch(0),console.error(t.t0),F.error(te("deviceUnpairingErrorMessage"));case 12:return t.prev=12,j(!1),t.finish(12);case 15:case"end":return t.stop()}}),t,null,[[0,8,12,15]])})))}(E.id)},closePopup:function(){return C(void 0)}}),r.createElement(R,{deviceName:u,pin:f,onDeviceNameChange:m,onPinChange:p,onActivate:function(){return ee(this,void 0,void 0,K().mark((function e(){var t,r;return K().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(e.prev=0,t=u.trim(),r=f.trim(),t){e.next=5;break}return e.abrupt("return");case 5:if(r){e.next=7;break}return e.abrupt("return");case 7:return e.next=9,n({deviceName:t,pin:r});case 9:m(""),p(""),F.success(te("devicePairingSuccessMessage")),e.next=18;break;case 14:e.prev=14,e.t0=e.catch(0),console.error(e.t0),F.error(te("devicePairingErrorMessage"));case 18:case"end":return e.stop()}}),e,null,[[0,14]])})))}}),t.length?r.createElement("h2",{className:"h5 mt-4"},te("activatedListHeading")):null,r.createElement(o.s,{items:t,rowHeight:55,getComponent:function(e){return r.createElement(g,{key:e.id,name:e.name,status:e.status,onUnpair:function(){return C(e)}})}}))}},95569:(e,t,n)=>{n.d(t,{Ds:()=>a,P2:()=>r});var r=function(e,t){var n=window.performance.now();return function(){var r=window.performance.now();r-n>=t&&(e.apply(void 0,arguments),n=r)}},a=function(e,t,n){var r,a=this,o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:window,i=function(){for(var i=arguments.length,c=new Array(i),l=0;l<i;l++)c[l]=arguments[l];var s=!1,u=function(){r=null,u=null,e.apply(this,c)};return!r&&n&&(e.apply(a,c),s=!0),o.clearTimeout(r),r=o.setTimeout(u,t),s};return i.cancel=function(){o.clearTimeout(r),r=null},i}}}]);
3
- //# sourceMappingURL=9230-77ff8b16ac-lite.chunk.js.map
1
+ /*! For license information please see 9230-1ffbf1807e-lite.chunk.js.LICENSE.txt */
2
+ "use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[9230],{83657:(e,t,n)=>{n.d(t,{e:()=>s});var r=n(32735),a=n(91967),o=n(10874),i=n(36532),c=n(42735),l=n(86509);function s(e){var t=r.useMemo((function(){return e.actions.sort((function(e,t){return e.order-t.order}))}),[e.actions]),n=[],s=[];t.forEach((function(e){e.button?n.push(e):s.push(e)}));var u="d-flex";return e.className&&(u+=" ".concat(e.className)),n.length||s.length?r.createElement("div",{className:u},n.length?n.map((function(t,n){return r.createElement(r.Fragment,{key:n},function(){if(t.label){var n=a.q.isFunction(t.label)?t.label:function(){return r.createElement(r.Fragment,null,t.label)};return r.createElement(c.K,{appLink:t.appLink,href:t.href,onClick:t.onClick,svgName:t.svgName,svgSize:e.dropdownToggleSvgSize,className:t.className,tooltip:t.tooltip,showSpinner:t.showSpinner,analyticsData:t.analyticsData,analyticsOptions:t.analyticsOptions,openInNewTab:t.openInNewTab,disabled:t.disabled},n())}var l=r.createElement(o.h,{appLink:t.appLink,href:t.href,onClick:t.onClick,svgName:t.svgName,className:t.className,analyticsData:t.analyticsData,analyticsOptions:t.analyticsOptions,openInNewTab:t.openInNewTab,disabled:t.disabled,showBorder:t.showBorder,customSize:e.customSize,ariaLabel:t.tooltip});return t.tooltip?r.createElement(i.u,{title:t.tooltip,spanHack:!0},l):l}())})):r.createElement(r.Fragment,null),e.sortComponent&&e.sortComponent,s.length?r.createElement(l.m,{actions:s,dropdownToggleClassName:e.actionsDropdownClassName,dropdownToggleSvgSize:e.dropdownToggleSvgSize,fetchMore:e.fetchMore}):r.createElement(r.Fragment,null)):r.createElement(r.Fragment,null)}},86509:(e,t,n)=>{n.d(t,{m:()=>h});var r=n(32735),a=n(91967),o=n(81886),i=n(45157),c=n(49985),l=n(36848),s=n(83914),u=n(36532),m=n(35223);const d={dropdownToggle:"UCAnJ"};function f(){return r.createElement(r.Fragment,null,r.createElement("div",{style:{padding:"0.53125rem 1rem"}},r.createElement("div",{className:"partial-loading-background",style:{height:"1.0625rem",width:"8rem"}})),r.createElement("div",{style:{padding:"0.53125rem 1rem"}},r.createElement("div",{className:"partial-loading-background",style:{height:"1.0625rem",width:"12rem"}})),r.createElement("div",{style:{padding:"0.53125rem 1rem"}},r.createElement("div",{className:"partial-loading-background",style:{height:"1.0625rem",width:"11rem"}})),r.createElement("div",{style:{padding:"0.53125rem 1rem"}},r.createElement("div",{className:"partial-loading-background",style:{height:"1.0625rem",width:"9rem"}})))}function p(e){var t="dropdown-item";return e&&(t+=" ".concat(e)),t}function v(e){var t=a.q.isFunction(e.action.label)?e.action.label:function(){return r.createElement(r.Fragment,null,e.action.label)};if(e.action.appLink)return r.createElement(l.F,{appLink:e.action.appLink,onClick:e.action.onClick,className:p(e.action.className),analyticsData:e.action.analyticsData,analyticsOptions:e.action.analyticsOptions,openInNewTab:e.action.openInNewTab,disabled:e.action.disabled},e.action.svgName&&r.createElement(s.x,{svgName:e.action.svgName,className:"d-inline-block svg-container me-2 align-middle"}),r.createElement("span",{className:"align-middle"},t()));function n(t){t.preventDefault(),e.action.analyticsData&&e.action.analyticsOptions&&c.k.logUserAction(e.action.analyticsData,e.action.analyticsOptions),a.q.isFunction(e.action.onClick)&&e.action.onClick(),e.action.href&&o.Q.Ab.PageLoad(e.action.href,e.action.openInNewTab)}return e.action.href?r.createElement("a",{className:p(e.action.className),onClick:n,href:e.action.href},e.action.svgName&&r.createElement(s.x,{svgName:e.action.svgName,className:"d-inline-block svg-container me-2 align-middle"}),r.createElement("span",{className:"align-middle"},t())):r.createElement("span",{className:"cursor-pointer ".concat(p(e.action.className)),onClick:n,role:"button",tabIndex:0,onKeyDown:function(e){return"Enter"===e.key&&n(e)}},e.action.svgName&&r.createElement(s.x,{svgName:e.action.svgName,className:"d-inline-block svg-container me-2"}),t())}function h(e){if(!e.actions||!e.actions.length)return r.createElement(r.Fragment,null);var t=e.actions.some((function(e){return e.lazyPlaceholder})),n="dropdown";e.className&&(n+=" ".concat(e.className));var a,o="actions-dropdown-".concat(i.Y.getRandomInt()),c="dropdown-toggle px-0 ".concat(d.dropdownToggle);return e.dropdownToggleClassName&&(c+=" ".concat(e.dropdownToggleClassName)),r.createElement("div",{className:n},r.createElement("button",{className:c,type:"button",id:o,"data-bs-toggle":"dropdown","data-toggle":"dropdown","aria-haspopup":"true","aria-expanded":"false","aria-label":"More actions dropdown",onClick:t?e.fetchMore:null},r.createElement(s.x,{svgName:m.vn.More,size:e.dropdownToggleSvgSize})),r.createElement("ul",{className:"dropdown-menu dropdown-menu-end dropdown-menu-right font-size-normal","aria-labelledby":o},t?r.createElement(f,null):e.actions.map((function(e,t){var n=void 0!==a&&a!==e.group;return a=e.group,e.tooltip?r.createElement("li",{key:t},n&&r.createElement("hr",{className:"dropdown-divider",role:"separator"}),r.createElement(u.u,{title:e.tooltip,spanHack:!0},r.createElement(v,{action:e}))):r.createElement("li",{key:t},n&&r.createElement("hr",{className:"dropdown-divider",role:"separator"}),r.createElement(v,{action:e}))}))))}h.defaultProps={dropdownToggleClassName:"btn btn-light",dropdownToggleSvgSize:s.S.Small}},49935:(e,t,n)=>{n.d(t,{Oo:()=>v,b2:()=>h});var r=n(32735),a=n(23481),o=n(36848),i=n(86764),c=n(3747),l=n(5859),s=n(35223),u=n(83914);function m(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,a,o,i,c=[],l=!0,s=!1;try{if(o=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;l=!1}else for(;!(l=(r=o.call(n)).done)&&(c.push(r.value),c.length!==t);l=!0);}catch(e){s=!0,a=e}finally{try{if(!l&&null!=n.return&&(i=n.return(),Object(i)!==i))return}finally{if(s)throw a}}return c}}(e,t)||function(e,t){if(e){if("string"==typeof e)return d(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?d(e,t):void 0}}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function d(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}var f=a.T.encloseNamespace("shared.breadcrumbComponent"),p=r.forwardRef((function(e,t){var n=e.breadcrumb,a=n.name,i=n.appLink,c=n.active,l=e.withBackIcon,m=a,d=null;return m.length>48&&(m=a.slice(0,48)+"...",d=a),r.createElement("li",{className:"breadcrumb-item".concat(c?" active":""),title:d},c?r.createElement("strong",null,m):r.createElement(o.F,{appLink:i,ref:t},l&&r.createElement(u.x,{svgName:s.vn.ChevronLeft,size:u.S.Small}),r.createElement("span",{className:l?"ms-2":""},m)))})),v=function(e){var t=e.breadcrumbs,n=(0,c.a)(i.r.XS),a=(null==t?void 0:t.length)||0,o=m(r.useState(!1),2),l=o[0],s=o[1],u=m(r.useState(!1),2),d=u[0],v=u[1],h=r.useRef();if(r.useEffect((function(){var e,n=null!==(e=null==t?void 0:t.reduce((function(e,t){return e+t.name.length}),0))&&void 0!==e?e:0;a>4&&n>64&&s(!0)}),[null==t?void 0:t.length]),r.useLayoutEffect((function(){var e;d&&(null===(e=h.current)||void 0===e||e.focus())}),[h.current,d]),!a||n&&a<2)return r.createElement(r.Fragment,null);if(n)return r.createElement("nav",{"aria-label":"breadcrumb"},r.createElement("ol",{className:"breadcrumb m-0 p-0"},r.createElement(p,{breadcrumb:t[a-2],withBackIcon:!0})));var g=r.createElement(p,{breadcrumb:t[0]}),b=a>2?r.createElement(p,{breadcrumb:t[1]}):r.createElement(r.Fragment,null),y=a>3?r.createElement(p,{breadcrumb:t[a-2]}):r.createElement(r.Fragment,null),E=a>1?r.createElement(p,{breadcrumb:t[a-1]}):r.createElement(r.Fragment,null),w=t.slice(2,a-2);return r.createElement("nav",{"aria-label":"breadcrumb"},r.createElement("ol",{className:"breadcrumb m-0 p-0"},g,b,l?r.createElement("li",{className:"breadcrumb-item"},r.createElement("button",{className:"btn-link",onClick:function(){s(!1),v(!0)},"aria-label":f("expand")},"...")):w.map((function(e,t){return r.createElement(p,{key:t,breadcrumb:e,ref:0===t?h:null})})),y,E))},h=r.memo((function(e){var t=e.numItems,n=void 0===t?3:t;return(0,c.a)(i.r.XS)?r.createElement("div",{className:"partial-loading-background",style:{height:"1.3125rem",width:"6rem"}}):r.createElement("nav",{"aria-label":"breadcrumb"},r.createElement("ol",{className:"breadcrumb m-0 p-0"},l.u.getPartialLoadingItems({numItems:n}).map((function(e,t){var n=e.width;return r.createElement("li",{key:t,className:"breadcrumb-item"},r.createElement("span",{className:"d-inline-block partial-loading-background",style:{width:n},dangerouslySetInnerHTML:{__html:"&nbsp"}}))}))))}))},61254:(e,t,n)=>{n.d(t,{s:()=>c});var r=n(32735),a=n(42648);function o(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,a,o,i,c=[],l=!0,s=!1;try{if(o=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;l=!1}else for(;!(l=(r=o.call(n)).done)&&(c.push(r.value),c.length!==t);l=!0);}catch(e){s=!0,a=e}finally{try{if(!l&&null!=n.return&&(i=n.return(),Object(i)!==i))return}finally{if(s)throw a}}return c}}(e,t)||function(e,t){if(e){if("string"==typeof e)return i(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?i(e,t):void 0}}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function i(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}var c=r.forwardRef((function(e,t){var n=o(r.useState(e.containerHeight||0),2),i=n[0],c=n[1],l=o(r.useState(0),2),s=l[0],u=l[1],m=r.useRef(null);r.useEffect((function(){var t,n;e.containerHeight||c(null!==(n=null===(t=m.current)||void 0===t?void 0:t.clientHeight)&&void 0!==n?n:0)}),[m.current]);var d,f,p,v=e.items.length,h=Math.ceil(i/e.rowHeight),g=e.rowHeight*v,b=Math.max(0,Math.floor(s/e.rowHeight)-h),y=Math.min(v,b+3*h);return r.createElement("div",{style:(p=null!==(f=null===(d=m.current)||void 0===d?void 0:d.getBoundingClientRect().top)&&void 0!==f?f:0,{height:e.containerHeight||"calc(100vh - ".concat(window.pageYOffset+p+30,"px)"),minHeight:"".concat(5*e.rowHeight,"px"),overflow:"auto"}),ref:m},r.createElement(a.$B,{onScroll:function(e){u(e.currentTarget.scrollTop)},autoHeightMin:g,autoHeightMax:g,ref:t},r.createElement("div",{style:{height:g,paddingTop:b*e.rowHeight}},r.createElement("ul",{className:"w-100 position-relative d-table striped-list list-unstyled no-full-width"},!!e.staticComponentAboveRows&&e.staticComponentAboveRows,function(){for(var t=[],n=b;n<y;){var r=e.items[n];r&&t.push(e.getComponent(r,n)),n++}return t}(),!!e.staticComponentBelowRows&&e.staticComponentBelowRows))))}))},99705:(e,t,n)=>{var r,a;n.d(t,{b:()=>a}),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"}(r||(r={})),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"}(a||(a={}))},5859:(e,t,n)=>{function r(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}n.d(t,{u:()=>o});var a={numItems:5,minWidth:50,maxWidth:100},o={getPartialLoadingItems:function(){var e,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=Object.assign(Object.assign({},a),t);return(e=Array(n.numItems),function(e){if(Array.isArray(e))return r(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,t){if(e){if("string"==typeof e)return r(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?r(e,t):void 0}}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()).map((function(){return{width:"".concat(Math.max(Math.floor(Math.random()*n.maxWidth),n.minWidth),"px")}}))}}},81803:(e,t,n)=>{n.d(t,{d:()=>p});var r=n(32735),a=n(81886),o=n(23481),i=n(49935),c=n(22902),l=n(14070),s=n(97291),u=n(96368);function m(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}var d="settings.settingsLayout",f=function(e){var t=(0,c.T)().hasPermissions,n=(0,u.e)();if(e)return t(e);var r=a.Q.C$.getCurrentAppLink();return r.application!==s.O.SETTINGS||n.some((function(e){return e.modules.some((function(e){return"appLink"in e&&e.appLink.action===r.action}))}))};function p(e){var t,n=f(e.requiredPermissions);if(r.useEffect((function(){n||a.Q.C$.trigger({application:s.O.SETTINGS,action:l.e.Settings.HOME},{replace:!0})}),[n]),!n)return r.createElement(r.Fragment,null);var c,u=e.breadcrumbs.map((function(t,n){return{name:t,appLink:{application:s.O.SETTINGS,action:l.e.Settings.HOME},active:n===e.breadcrumbs.length-1}}));return r.createElement("div",{className:"px-3"},r.createElement("div",{className:"d-flex align-items-center justify-content-between"},r.createElement("h1",{className:"h2"},e.heading),null===(t=e.headingButton)||void 0===t?void 0:t.call(e)),r.createElement("div",{className:"pb-3"},r.createElement(i.Oo,{breadcrumbs:[{name:o.T.getPhrase(d,"settingsBreadcrumb"),appLink:{application:s.O.SETTINGS,action:l.e.Settings.HOME}}].concat((c=u,function(e){if(Array.isArray(e))return m(e)}(c)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(c)||function(e,t){if(e){if("string"==typeof e)return m(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?m(e,t):void 0}}(c)||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&&r.createElement(r.Fragment,null,r.createElement("p",null,e.description),r.createElement("hr",null)),e.children)}},28611:(e,t,n)=>{n.d(t,{i:()=>o});var r=n(32735);const a={numberContainer:"JBRDi"};function o(e){var t=e.number,n=e.children,o=e.className,i=void 0===o?"":o;return r.createElement("div",{className:"d-flex align-items-center mb-3 ".concat(i)},r.createElement("div",{className:"d-flex align-items-center justify-content-center bg-dark rounded-circle ".concat(a.numberContainer)},r.createElement("span",{className:"text-light"},t)),r.createElement("div",{className:"ms-2"},n))}},65271:(e,t,n)=>{n.r(t),n.d(t,{AppleTvSettingsView:()=>ne});var r=n(32735),a=n(23481),o=n(61254),i=n(16714),c=n(69883),l=n(83657),s=n(86509),u=n(83914),m=n(35223),d=n(12399);const f={indicator:"xidrU"};function p(e){return p="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},p(e)}function v(e,t,n){return(t=function(e){var t=function(e,t){if("object"!=p(e)||!e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var r=n.call(e,"string");if("object"!=p(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==p(t)?t:t+""}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var h=a.T.encloseNamespace("settings.deviceListItem");function g(e){var t=e.status,n=e.name,a=e.onUnpair,o=e.onRename;return r.createElement("li",{className:"d-flex align-items-center p-2 justify-content-between"},r.createElement("div",{className:"d-flex align-items-center"},r.createElement(u.x,{svgName:m.vn.AppleTv,className:"svg-container me-2"}),r.createElement("div",null,n)),r.createElement("div",{className:"d-flex align-items-center"},r.createElement(E,{status:t}),o&&r.createElement(l.e,{actions:[{svgName:m.vn.Edit,className:"btn btn-link svg-container",onClick:o,button:!0,disabled:t!==d.L.Available}]}),r.createElement(s.m,{actions:[{label:h("unpairActionButton"),onClick:a}],dropdownToggleClassName:"btn ms-3"})))}var b=v(v(v({},d.L.Available,"bg-success"),d.L.Busy,"bg-warning"),d.L.Offline,"bg-gray-500"),y=v(v(v({},d.L.Available,h("availableStatusLabel")),d.L.Busy,h("busyStatusLabel")),d.L.Offline,h("offlineStatusLabel"));function E(e){var t,n,a=null!==(t=b[e.status])&&void 0!==t?t:"",o=null!==(n=y[e.status])&&void 0!==n?n:"";return r.createElement("div",{className:"d-flex align-items-center me-4"},r.createElement("div",{className:"".concat(f.indicator," ").concat(a," me-2")}),r.createElement("span",null,o))}var w=n(81803),N=n(20354),S=n(1666),x=n(2744),k=n(31949),A=n(86086);function T(e,t){if(e){if("string"==typeof e)return L(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?L(e,t):void 0}}function L(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}var C=n(89725),I=n(11607),O=n(86794),j=n(83345),F=n(99705),P=n(12778),M=n(99742),_=n(28611);const B={deviceInput:"hkziS",pinInput:"_oWnE",image:"s5WWG",inputWrapper:"BTvzv"};var D="settings.appleTv.pairDeviceView",H=a.T.encloseNamespace(D);function R(e){var t=e.deviceName,n=e.pin,a=e.onDeviceNameChange,o=e.onPinChange,i=e.onActivate;return r.createElement("div",{className:"rounded-3 px-4 py-3 mt-3 bg-light-blue d-flex flex-row justify-content-between"},r.createElement("div",null,r.createElement("h3",{className:"h6 mb-3"},r.createElement(j.x,{namespace:D,phrase:"instructionsHeading"})),r.createElement(_.i,{number:1},r.createElement("div",{className:"d-flex align-items-center flex-wrap"},r.createElement(j.x,{namespace:D,phrase:"instructionsStep1Fragment1"}),r.createElement(O.b,{className:"mx-1",size:u.S.Small},r.createElement(C.F,null)),r.createElement(j.x,{namespace:D,phrase:"instructionsStep1Fragment2"}),r.createElement(u.x,{svgName:m.vn.AppleTv,size:u.S.Small}),r.createElement(j.x,{namespace:D,phrase:"instructionsStep1Fragment3"}))),r.createElement(_.i,{number:2},r.createElement(j.x,{namespace:D,phrase:"instructionsStep2"})),r.createElement("div",{className:"".concat(B.inputWrapper," d-flex align-items-end form-group flex-wrap")},r.createElement("div",{className:"d-flex flex-column me-2 mb-3"},r.createElement("label",{className:"fw-bold mb-1",htmlFor:"create"},r.createElement(j.x,{namespace:D,phrase:"deviceNameInputLabel"})),r.createElement("input",{id:"device",className:"form-control form-control-md ".concat(B.deviceInput),value:t,onChange:function(e){return a(e.target.value)},autoComplete:"off",placeholder:H("deviceNameInputPlaceholder")})),r.createElement("div",{className:"d-flex flex-column me-2 mb-3"},r.createElement("label",{className:"fw-bold mb-1",htmlFor:"create"},r.createElement(j.x,{namespace:D,phrase:"pinInputLabel"})),r.createElement("input",{id:"pin",className:"form-control form-control-md ".concat(B.pinInput),value:n,onChange:function(e){return o(e.target.value)},autoComplete:"off",placeholder:"1234"})),r.createElement(I.L,{onClick:i,className:"btn btn-dark mb-3"},r.createElement(j.x,{namespace:D,phrase:"activateButton"}))),r.createElement(_.i,{number:3},r.createElement(j.x,{namespace:D,phrase:"instructionsStep3Fragment1"}),r.createElement(u.x,{svgName:m.vn.Cast,size:u.S.Small}),r.createElement(j.x,{namespace:D,phrase:"instructionsStep3Fragment2"})),r.createElement("a",{href:P.o.getLiteArticle(F.b.AppleTvIntegration),target:"_blank",className:"text-info mt-2"},r.createElement(j.x,{namespace:D,phrase:"learnMore"}))),r.createElement("div",{className:"ms-2 d-flex align-items-center"},r.createElement("img",{className:B.image,role:"presentation",src:M.W.Devices.APPLE_TV})))}var G=n(9111),U=n(13876);function z(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}var W="settings.appleTvSettings.renameDevicePopup",$=a.T.encloseNamespace(W);function q(e){var t,n,a=(t=r.useState(e.name),n=2,function(e){if(Array.isArray(e))return e}(t)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,a,o,i,c=[],l=!0,s=!1;try{if(o=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;l=!1}else for(;!(l=(r=o.call(n)).done)&&(c.push(r.value),c.length!==t);l=!0);}catch(e){s=!0,a=e}finally{try{if(!l&&null!=n.return&&(i=n.return(),Object(i)!==i))return}finally{if(s)throw a}}return c}}(t,n)||function(e,t){if(e){if("string"==typeof e)return z(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?z(e,t):void 0}}(t,n)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),o=a[0],i=a[1],c=o.trim();return r.createElement(G.G,{title:$("title"),closePopup:e.closePopup},r.createElement("div",{className:"form-group"},r.createElement("label",{className:"fw-bold mb-2",htmlFor:"edit"},r.createElement(j.x,{namespace:W,phrase:"inputLabel"})),r.createElement("input",{value:o,onChange:function(e){return i(e.target.value)},className:"form-control form-control-md mb-4",autoFocus:!0,placeholder:$("inputPlaceholder")})),r.createElement(U.u,null,r.createElement(U.u.Cancel,{onClick:e.closePopup}),r.createElement(U.u.Submit,{disabled:!c,variant:"dark",text:$("saveButton"),onClick:function(){return e.onRename(c)},showSpinner:e.showSpinner})))}var V="settings.appleTvSettings.unpairDevicePopup",Y=a.T.encloseNamespace(V);function Q(e){var t=e.closePopup,n=e.showSpinner,a=e.deviceName,o=e.onUnpair;return r.createElement(G.G,{title:Y("title"),closePopup:t},r.createElement("p",null,r.createElement(j.x,{namespace:V,phrase:"warning",options:{name:a}})),r.createElement("p",null,r.createElement(j.x,{namespace:V,phrase:"subWarning"})),r.createElement(U.u,null,r.createElement(U.u.Cancel,{onClick:t}),r.createElement(U.u.Submit,{variant:"danger",text:Y("unpairButton"),onClick:o,showSpinner:n})))}function J(e){return J="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},J(e)}function K(){K=function(){return t};var e,t={},n=Object.prototype,r=n.hasOwnProperty,a=Object.defineProperty||function(e,t,n){e[t]=n.value},o="function"==typeof Symbol?Symbol:{},i=o.iterator||"@@iterator",c=o.asyncIterator||"@@asyncIterator",l=o.toStringTag||"@@toStringTag";function s(e,t,n){return Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}),e[t]}try{s({},"")}catch(e){s=function(e,t,n){return e[t]=n}}function u(e,t,n,r){var o=t&&t.prototype instanceof g?t:g,i=Object.create(o.prototype),c=new I(r||[]);return a(i,"_invoke",{value:A(e,n,c)}),i}function m(e,t,n){try{return{type:"normal",arg:e.call(t,n)}}catch(e){return{type:"throw",arg:e}}}t.wrap=u;var d="suspendedStart",f="suspendedYield",p="executing",v="completed",h={};function g(){}function b(){}function y(){}var E={};s(E,i,(function(){return this}));var w=Object.getPrototypeOf,N=w&&w(w(O([])));N&&N!==n&&r.call(N,i)&&(E=N);var S=y.prototype=g.prototype=Object.create(E);function x(e){["next","throw","return"].forEach((function(t){s(e,t,(function(e){return this._invoke(t,e)}))}))}function k(e,t){function n(a,o,i,c){var l=m(e[a],e,o);if("throw"!==l.type){var s=l.arg,u=s.value;return u&&"object"==J(u)&&r.call(u,"__await")?t.resolve(u.__await).then((function(e){n("next",e,i,c)}),(function(e){n("throw",e,i,c)})):t.resolve(u).then((function(e){s.value=e,i(s)}),(function(e){return n("throw",e,i,c)}))}c(l.arg)}var o;a(this,"_invoke",{value:function(e,r){function a(){return new t((function(t,a){n(e,r,t,a)}))}return o=o?o.then(a,a):a()}})}function A(t,n,r){var a=d;return function(o,i){if(a===p)throw Error("Generator is already running");if(a===v){if("throw"===o)throw i;return{value:e,done:!0}}for(r.method=o,r.arg=i;;){var c=r.delegate;if(c){var l=T(c,r);if(l){if(l===h)continue;return l}}if("next"===r.method)r.sent=r._sent=r.arg;else if("throw"===r.method){if(a===d)throw a=v,r.arg;r.dispatchException(r.arg)}else"return"===r.method&&r.abrupt("return",r.arg);a=p;var s=m(t,n,r);if("normal"===s.type){if(a=r.done?v:f,s.arg===h)continue;return{value:s.arg,done:r.done}}"throw"===s.type&&(a=v,r.method="throw",r.arg=s.arg)}}}function T(t,n){var r=n.method,a=t.iterator[r];if(a===e)return n.delegate=null,"throw"===r&&t.iterator.return&&(n.method="return",n.arg=e,T(t,n),"throw"===n.method)||"return"!==r&&(n.method="throw",n.arg=new TypeError("The iterator does not provide a '"+r+"' method")),h;var o=m(a,t.iterator,n.arg);if("throw"===o.type)return n.method="throw",n.arg=o.arg,n.delegate=null,h;var i=o.arg;return i?i.done?(n[t.resultName]=i.value,n.next=t.nextLoc,"return"!==n.method&&(n.method="next",n.arg=e),n.delegate=null,h):i:(n.method="throw",n.arg=new TypeError("iterator result is not an object"),n.delegate=null,h)}function L(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function C(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function I(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(L,this),this.reset(!0)}function O(t){if(t||""===t){var n=t[i];if(n)return n.call(t);if("function"==typeof t.next)return t;if(!isNaN(t.length)){var a=-1,o=function n(){for(;++a<t.length;)if(r.call(t,a))return n.value=t[a],n.done=!1,n;return n.value=e,n.done=!0,n};return o.next=o}}throw new TypeError(J(t)+" is not iterable")}return b.prototype=y,a(S,"constructor",{value:y,configurable:!0}),a(y,"constructor",{value:b,configurable:!0}),b.displayName=s(y,l,"GeneratorFunction"),t.isGeneratorFunction=function(e){var t="function"==typeof e&&e.constructor;return!!t&&(t===b||"GeneratorFunction"===(t.displayName||t.name))},t.mark=function(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,y):(e.__proto__=y,s(e,l,"GeneratorFunction")),e.prototype=Object.create(S),e},t.awrap=function(e){return{__await:e}},x(k.prototype),s(k.prototype,c,(function(){return this})),t.AsyncIterator=k,t.async=function(e,n,r,a,o){void 0===o&&(o=Promise);var i=new k(u(e,n,r,a),o);return t.isGeneratorFunction(n)?i:i.next().then((function(e){return e.done?e.value:i.next()}))},x(S),s(S,l,"Generator"),s(S,i,(function(){return this})),s(S,"toString",(function(){return"[object Generator]"})),t.keys=function(e){var t=Object(e),n=[];for(var r in t)n.push(r);return n.reverse(),function e(){for(;n.length;){var r=n.pop();if(r in t)return e.value=r,e.done=!1,e}return e.done=!0,e}},t.values=O,I.prototype={constructor:I,reset:function(t){if(this.prev=0,this.next=0,this.sent=this._sent=e,this.done=!1,this.delegate=null,this.method="next",this.arg=e,this.tryEntries.forEach(C),!t)for(var n in this)"t"===n.charAt(0)&&r.call(this,n)&&!isNaN(+n.slice(1))&&(this[n]=e)},stop:function(){this.done=!0;var e=this.tryEntries[0].completion;if("throw"===e.type)throw e.arg;return this.rval},dispatchException:function(t){if(this.done)throw t;var n=this;function a(r,a){return c.type="throw",c.arg=t,n.next=r,a&&(n.method="next",n.arg=e),!!a}for(var o=this.tryEntries.length-1;o>=0;--o){var i=this.tryEntries[o],c=i.completion;if("root"===i.tryLoc)return a("end");if(i.tryLoc<=this.prev){var l=r.call(i,"catchLoc"),s=r.call(i,"finallyLoc");if(l&&s){if(this.prev<i.catchLoc)return a(i.catchLoc,!0);if(this.prev<i.finallyLoc)return a(i.finallyLoc)}else if(l){if(this.prev<i.catchLoc)return a(i.catchLoc,!0)}else{if(!s)throw Error("try statement without catch or finally");if(this.prev<i.finallyLoc)return a(i.finallyLoc)}}}},abrupt:function(e,t){for(var n=this.tryEntries.length-1;n>=0;--n){var a=this.tryEntries[n];if(a.tryLoc<=this.prev&&r.call(a,"finallyLoc")&&this.prev<a.finallyLoc){var o=a;break}}o&&("break"===e||"continue"===e)&&o.tryLoc<=t&&t<=o.finallyLoc&&(o=null);var i=o?o.completion:{};return i.type=e,i.arg=t,o?(this.method="next",this.next=o.finallyLoc,h):this.complete(i)},complete:function(e,t){if("throw"===e.type)throw e.arg;return"break"===e.type||"continue"===e.type?this.next=e.arg:"return"===e.type?(this.rval=this.arg=e.arg,this.method="return",this.next="end"):"normal"===e.type&&t&&(this.next=t),h},finish:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.finallyLoc===e)return this.complete(n.completion,n.afterLoc),C(n),h}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.tryLoc===e){var r=n.completion;if("throw"===r.type){var a=r.arg;C(n)}return a}}throw Error("illegal catch attempt")},delegateYield:function(t,n,r){return this.delegate={iterator:O(t),resultName:n,nextLoc:r},"next"===this.method&&(this.arg=e),h}},t}function X(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,a,o,i,c=[],l=!0,s=!1;try{if(o=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;l=!1}else for(;!(l=(r=o.call(n)).done)&&(c.push(r.value),c.length!==t);l=!0);}catch(e){s=!0,a=e}finally{try{if(!l&&null!=n.return&&(i=n.return(),Object(i)!==i))return}finally{if(s)throw a}}return c}}(e,t)||function(e,t){if(e){if("string"==typeof e)return Z(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?Z(e,t):void 0}}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function Z(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}var ee=function(e,t,n,r){return new(n||(n=Promise))((function(a,o){function i(e){try{l(r.next(e))}catch(e){o(e)}}function c(e){try{l(r.throw(e))}catch(e){o(e)}}function l(e){var t;e.done?a(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(i,c)}l((r=r.apply(e,t||[])).next())}))},te=a.T.encloseNamespace("settings.appleTv");function ne(){var e=function(){var e,t,n,a,o=(n=r.useState([]),a=2,function(e){if(Array.isArray(e))return e}(n)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,a,o,i,c=[],l=!0,s=!1;try{if(o=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;l=!1}else for(;!(l=(r=o.call(n)).done)&&(c.push(r.value),c.length!==t);l=!0);}catch(e){s=!0,a=e}finally{try{if(!l&&null!=n.return&&(i=n.return(),Object(i)!==i))return}finally{if(s)throw a}}return c}}(n,a)||T(n,a)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),i=o[0],c=o[1],l=r.useRef(),s=N.a.useGetFetchAsync(),u=N.a.useBasicFetch(k.N.currentUser()),m=N.a.useBasicFetch((null===(e=u.data)||void 0===e?void 0:e.isAuthenticated)&&S.h.customer(u.data.customerId));return r.useEffect((function(){var e,t,n;if((null===(e=u.data)||void 0===e?void 0:e.isAuthenticated)&&m.hasCompleted)return l.current=new A.w({fetchAccessToken:function(){return s(x.z.getAppleTvAccessToken())},userId:parseInt(null===(t=u.data)||void 0===t?void 0:t.id)}),null===(n=l.current)||void 0===n||n.on("deviceschange",(function(){var e;c(function(e){return function(e){if(Array.isArray(e))return L(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||T(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.")}()}(null===(e=l.current)||void 0===e?void 0:e.getDevices()))})),function(){var e;return null===(e=l.current)||void 0===e?void 0:e.dispose()}}),[null===(t=u.data)||void 0===t?void 0:t.isAuthenticated,m.hasCompleted]),{devices:i,pair:function(e){var t,n;return null===(t=l.current)||void 0===t?void 0:t.pair(Object.assign(Object.assign({},e),{crmId:parseInt(null===(n=m.data)||void 0===n?void 0:n.crmId)}))},unpair:function(e){var t;return null===(t=l.current)||void 0===t?void 0:t.unpair(e)},rename:function(e){return null==l?void 0:l.current.renameDevice(e)}}}(),t=e.devices,n=e.pair,a=e.unpair,l=e.rename,s=X(r.useState(""),2),u=s[0],m=s[1],d=X(r.useState(""),2),f=d[0],p=d[1],v=X(r.useState(),2),h=v[0],b=v[1],y=X(r.useState(),2),E=y[0],C=y[1],I=X(r.useState(!1),2),O=I[0],j=I[1],F=(0,c.Z)();return r.createElement(w.d,{heading:te("heading"),breadcrumbs:[te("heading")],requiredPermissions:i.C.ManageIntegrations},h&&r.createElement(q,{name:h.name,showSpinner:O,onRename:function(e){return function(e,t){return ee(this,void 0,void 0,K().mark((function n(){return K().wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.prev=0,j(!0),n.next=4,l({deviceId:e,deviceName:t});case 4:b(void 0),F.success(te("deviceRenamingSuccessMessage")),n.next=12;break;case 8:n.prev=8,n.t0=n.catch(0),console.error(n.t0),F.error(te("deviceRenamingErrorMessage"));case 12:return n.prev=12,j(!1),n.finish(12);case 15:case"end":return n.stop()}}),n,null,[[0,8,12,15]])})))}(h.id,e)},closePopup:function(){return b(void 0)}}),E&&r.createElement(Q,{showSpinner:O,deviceName:E.name,onUnpair:function(){return function(e){return ee(this,void 0,void 0,K().mark((function t(){return K().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.prev=0,j(!0),t.next=4,a(e);case 4:C(void 0),F.success(te("deviceUnpairingSuccessMessage")),t.next=12;break;case 8:t.prev=8,t.t0=t.catch(0),console.error(t.t0),F.error(te("deviceUnpairingErrorMessage"));case 12:return t.prev=12,j(!1),t.finish(12);case 15:case"end":return t.stop()}}),t,null,[[0,8,12,15]])})))}(E.id)},closePopup:function(){return C(void 0)}}),r.createElement(R,{deviceName:u,pin:f,onDeviceNameChange:m,onPinChange:p,onActivate:function(){return ee(this,void 0,void 0,K().mark((function e(){var t,r;return K().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(e.prev=0,t=u.trim(),r=f.trim(),t){e.next=5;break}return e.abrupt("return");case 5:if(r){e.next=7;break}return e.abrupt("return");case 7:return e.next=9,n({deviceName:t,pin:r});case 9:m(""),p(""),F.success(te("devicePairingSuccessMessage")),e.next=18;break;case 14:e.prev=14,e.t0=e.catch(0),console.error(e.t0),F.error(te("devicePairingErrorMessage"));case 18:case"end":return e.stop()}}),e,null,[[0,14]])})))}}),t.length?r.createElement("h2",{className:"h5 mt-4"},te("activatedListHeading")):null,r.createElement(o.s,{items:t,rowHeight:55,getComponent:function(e){return r.createElement(g,{key:e.id,name:e.name,status:e.status,onUnpair:function(){return C(e)}})}}))}},95569:(e,t,n)=>{n.d(t,{Ds:()=>a,P2:()=>r});var r=function(e,t){var n=window.performance.now();return function(){var r=window.performance.now();r-n>=t&&(e.apply(void 0,arguments),n=r)}},a=function(e,t,n){var r,a=this,o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:window,i=function(){for(var i=arguments.length,c=new Array(i),l=0;l<i;l++)c[l]=arguments[l];var s=!1,u=function(){r=null,u=null,e.apply(this,c)};return!r&&n&&(e.apply(a,c),s=!0),o.clearTimeout(r),r=o.setTimeout(u,t),s};return i.cancel=function(){o.clearTimeout(r),r=null},i}}}]);
3
+ //# sourceMappingURL=9230-1ffbf1807e-lite.chunk.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"scripts/9230-77ff8b16ac-lite.chunk.js","mappings":"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","sources":["file:///app/packages/libs/shared/src/components/actions/Actions.tsx","file:///app/packages/libs/shared/src/components/actions/actions.scss","file:///app/packages/libs/shared/src/components/actions/ActionsDropdown.tsx","file:///app/packages/libs/shared/src/components/breadcrumbs/Breadcrumbs.tsx","file:///app/packages/libs/shared/src/components/windowed-list/WindowedList.tsx","file:///app/packages/libs/shared/src/enums/SupportArticle.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/components/settings-ordered-list-item/settings-ordered-list-item.scss","file:///app/packages/projects/lite/src/apps/settings/components/settings-ordered-list-item/SettingsOrderedListItem.tsx","file:///app/packages/projects/lite/src/apps/settings/components/device-list-item/device-list-item.scss","file:///app/packages/projects/lite/src/apps/settings/components/device-list-item/DeviceListItem.tsx","file:///app/packages/projects/lite/src/apps/settings/views/integration-settings/apple-tv-settings/pair-device-view/pair-device-view.scss","file:///app/packages/projects/lite/src/apps/settings/views/integration-settings/apple-tv-settings/pair-device-view/PairDeviceView.tsx","file:///app/packages/projects/lite/src/apps/settings/views/integration-settings/apple-tv-settings/rename-device-popup/RenameDevicePopup.tsx","file:///app/packages/projects/lite/src/apps/settings/views/integration-settings/apple-tv-settings/unpair-device-popup/UnpairDevicePopup.tsx","file:///app/packages/projects/lite/src/apps/settings/views/integration-settings/apple-tv-settings/AppleTvSettingsView.tsx","file:///app/packages/projects/lite/src/apps/settings/hooks/useAppleTvClient.ts","file:///app/packages/projects/player/src/utils/fn.ts"],"sourcesContent":["import * as React from 'react';\n\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\nimport { Core } from 'libs/common/core';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { AnalyticsOptions } from 'libs/analytics/interfaces';\n\nimport { IconButton } from 'libs/shared/components/icon-button/IconButton';\nimport { SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\nimport { Tooltip } from 'libs/shared/components/tooltip/Tooltip';\nimport { BaseObject } from 'libs/shared/interfaces';\n\nimport { ActionButton } from './ActionButton';\nimport { ActionsDropdown } from './ActionsDropdown';\n\nexport interface ActionOptions {\n order?: number;\n label?: string | (() => JSX.Element);\n appLink?: Core.AppLink;\n href?: string;\n onClick?: () => void;\n svgName?: string;\n className?: string;\n button?: boolean; // If true, a button will be rendered. Otherwise the action will be rendered in the dropdown.\n tooltip?: string;\n showSpinner?: boolean;\n showBorder?: boolean; // only works for button without text label\n analyticsData?: HashObject;\n analyticsOptions?: AnalyticsOptions;\n disabled?: boolean;\n openInNewTab?: boolean; // Only used if appLink or href is provided\n group?: string;\n lazyPlaceholder?: boolean;\n}\n\nexport type ActionGenerator = (obj: BaseObject) => ActionOptions[];\n\ninterface ActionsProps {\n actions: ActionOptions[];\n className?: string;\n actionsDropdownClassName?: string;\n dropdownToggleSvgSize?: SvgContainerSize;\n sortComponent?: JSX.Element;\n customSize?: boolean;\n fetchMore?: () => void;\n}\n\nexport function Actions(props: ActionsProps): JSX.Element {\n const orderedActions = React.useMemo(() => props.actions.sort((a, b) => a.order - b.order), [props.actions]);\n\n const buttonActions: ActionOptions[] = [];\n const moreActions: ActionOptions[] = [];\n\n orderedActions.forEach(a => {\n if (a.button)\n buttonActions.push(a);\n else\n moreActions.push(a);\n });\n\n let className = 'd-flex';\n\n if (props.className)\n className += ` ${props.className}`;\n\n if (!buttonActions.length && !moreActions.length)\n return <></>;\n\n return (\n <div className={className}>\n {buttonActions.length ? buttonActions.map((a, idx) => (\n <React.Fragment key={idx}>\n {(() => {\n if (a.label) {\n const label = FunctionHelper.isFunction(a.label)\n ? a.label\n : () => <>{a.label}</>;\n\n return (\n <ActionButton\n appLink={a.appLink}\n href={a.href}\n onClick={a.onClick}\n svgName={a.svgName}\n svgSize={props.dropdownToggleSvgSize}\n className={a.className}\n tooltip={a.tooltip}\n showSpinner={a.showSpinner}\n analyticsData={a.analyticsData}\n analyticsOptions={a.analyticsOptions}\n openInNewTab={a.openInNewTab}\n disabled={a.disabled}\n >\n {label()}\n </ActionButton>\n );\n }\n\n const iconButton = (\n <IconButton\n appLink={a.appLink}\n href={a.href}\n onClick={a.onClick}\n svgName={a.svgName}\n className={a.className}\n analyticsData={a.analyticsData}\n analyticsOptions={a.analyticsOptions}\n openInNewTab={a.openInNewTab}\n disabled={a.disabled}\n showBorder={a.showBorder}\n customSize={props.customSize}\n ariaLabel={a.tooltip}\n />\n );\n\n return a.tooltip\n ? <Tooltip title={a.tooltip} spanHack>{iconButton}</Tooltip>\n : iconButton;\n })()}\n </React.Fragment>\n )) : <></>}\n {props.sortComponent && props.sortComponent}\n {moreActions.length ? (\n <ActionsDropdown\n actions={moreActions}\n dropdownToggleClassName={props.actionsDropdownClassName}\n dropdownToggleSvgSize={props.dropdownToggleSvgSize}\n fetchMore={props.fetchMore}\n />\n ) : <></>}\n </div>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"dropdownToggle\":\"UCAnJ\"};","import * as React from 'react';\n\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\nimport { Core } from 'libs/common/core';\nimport { RandomHelper } from 'libs/common/react/utils/RandomHelper';\n\nimport { AnalyticsHelper } from 'libs/analytics/AnalyticsHelper';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { SvgContainer, SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\nimport { Tooltip } from 'libs/shared/components/tooltip/Tooltip';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport { ActionOptions } from './Actions';\n\nimport styles from './actions.scss';\n\nfunction LazyDropdownItems(): JSX.Element {\n return (\n <>\n <div style={{ padding: '0.53125rem 1rem' }}>\n <div className='partial-loading-background' style={{ height: '1.0625rem', width: '8rem' }}></div>\n </div>\n <div style={{ padding: '0.53125rem 1rem' }}>\n <div className='partial-loading-background' style={{ height: '1.0625rem', width: '12rem' }}></div>\n </div>\n <div style={{ padding: '0.53125rem 1rem' }}>\n <div className='partial-loading-background' style={{ height: '1.0625rem', width: '11rem' }}></div>\n </div>\n <div style={{ padding: '0.53125rem 1rem' }}>\n <div className='partial-loading-background' style={{ height: '1.0625rem', width: '9rem' }}></div>\n </div>\n </>\n );\n}\n\nfunction getDropdownItemClassName(actionClassName?: string): string {\n let className = 'dropdown-item';\n\n if (actionClassName)\n className += ` ${actionClassName}`;\n\n return className;\n}\n\nexport type DropdownActionOptions = Omit<ActionOptions, 'button'>;\n\ninterface ActionsDropdownItemProps {\n action: DropdownActionOptions;\n}\n\nfunction ActionsDropdownItem(props: ActionsDropdownItemProps): React.ReactElement {\n const label = FunctionHelper.isFunction(props.action.label)\n ? props.action.label\n : () => <>{props.action.label}</>;\n\n if (props.action.appLink)\n return (\n <AppLink\n appLink={props.action.appLink}\n onClick={props.action.onClick}\n className={getDropdownItemClassName(props.action.className)}\n analyticsData={props.action.analyticsData}\n analyticsOptions={props.action.analyticsOptions}\n openInNewTab={props.action.openInNewTab}\n disabled={props.action.disabled}\n >\n {props.action.svgName && <SvgContainer svgName={props.action.svgName} className='d-inline-block svg-container me-2 align-middle' />}\n <span className='align-middle'>{label()}</span>\n </AppLink>\n );\n\n function onClick(e: React.MouseEvent | React.KeyboardEvent): void {\n e.preventDefault();\n\n if (props.action.analyticsData && props.action.analyticsOptions)\n AnalyticsHelper.logUserAction(props.action.analyticsData, props.action.analyticsOptions);\n\n if (FunctionHelper.isFunction(props.action.onClick))\n props.action.onClick();\n\n if (props.action.href)\n Core.LocationUtils.PageLoad(props.action.href, props.action.openInNewTab);\n }\n\n if (props.action.href) {\n return (\n <a\n className={getDropdownItemClassName(props.action.className)}\n onClick={onClick}\n href={props.action.href}\n >\n {props.action.svgName && <SvgContainer svgName={props.action.svgName} className='d-inline-block svg-container me-2 align-middle' />}\n <span className='align-middle'>{label()}</span>\n </a>\n );\n }\n\n return (\n <span\n className={`cursor-pointer ${getDropdownItemClassName(props.action.className)}`}\n onClick={onClick}\n role='button'\n tabIndex={0}\n onKeyDown={(e: React.KeyboardEvent) => e.key === 'Enter' && onClick(e)}\n >\n {props.action.svgName && <SvgContainer svgName={props.action.svgName} className='d-inline-block svg-container me-2' />}\n {label()}\n </span>\n );\n}\n\ninterface ActionsDropdownProps {\n actions: DropdownActionOptions[];\n className?: string;\n dropdownToggleClassName?: string;\n dropdownToggleSvgSize?: SvgContainerSize;\n fetchMore?: () => void;\n}\n\nActionsDropdown.defaultProps = {\n dropdownToggleClassName: 'btn btn-light',\n dropdownToggleSvgSize: SvgContainerSize.Small\n};\n\nexport function ActionsDropdown(props: ActionsDropdownProps): React.ReactElement {\n if (!props.actions || !props.actions.length)\n return <></>;\n\n const isLazy = props.actions.some(a => a.lazyPlaceholder);\n\n let className = 'dropdown';\n\n if (props.className)\n className += ` ${props.className}`;\n\n // Generate unique id to avoid collisions.\n const dropdownToggleId = `actions-dropdown-${RandomHelper.getRandomInt()}`;\n\n let dropdownToggleClassName = `dropdown-toggle px-0 ${styles.dropdownToggle}`;\n\n if (props.dropdownToggleClassName)\n dropdownToggleClassName += ` ${props.dropdownToggleClassName}`;\n\n let currentGroup: string;\n\n return (\n <div className={className}>\n <button\n className={dropdownToggleClassName}\n type='button'\n id={dropdownToggleId}\n data-bs-toggle='dropdown'\n data-toggle='dropdown'\n aria-haspopup='true'\n aria-expanded='false'\n aria-label={'More actions dropdown'}\n onClick={isLazy ? props.fetchMore : null}\n >\n <SvgContainer svgName={cvSvgLibrary.More} size={props.dropdownToggleSvgSize} />\n </button>\n <ul className='dropdown-menu dropdown-menu-end dropdown-menu-right font-size-normal' aria-labelledby={dropdownToggleId}>\n {isLazy ?\n <LazyDropdownItems /> :\n props.actions.map((a, idx) => {\n const showDivider = currentGroup !== undefined && currentGroup !== a.group;\n currentGroup = a.group;\n \n if (a.tooltip) {\n return (\n <li key={idx}>\n {showDivider && <hr className='dropdown-divider' role='separator'></hr>}\n <Tooltip title={a.tooltip} spanHack>\n <ActionsDropdownItem action={a} />\n </Tooltip>\n \n </li>\n );\n }\n \n return (\n <li key={idx}>\n {showDivider && <hr className='dropdown-divider' role='separator'></hr>}\n <ActionsDropdownItem action={a} />\n </li>\n );\n })\n }\n </ul>\n </div>\n );\n}","import * as React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Core } from 'libs/common/core';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { 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});","import React from 'react';\nimport { Scrollbars } from 'react-custom-scrollbars-2';\n\ninterface WindowedListProps<TObject> {\n items: TObject[];\n getComponent: (item: TObject, index: number) => JSX.Element;\n rowHeight: number;\n containerHeight?: number;\n\n staticComponentAboveRows?: JSX.Element;\n staticComponentBelowRows?: JSX.Element;\n}\n\nexport const WindowedList = React.forwardRef((\n props: WindowedListProps<any>,\n ref: React.Ref<Scrollbars>\n) => {\n const [ availableHeight, setAvailableHeight ] = React.useState<number>(props.containerHeight || 0);\n const [ scrollTop, setScrollTop ] = React.useState<number>(0);\n\n const tableRef = React.useRef<HTMLDivElement>(null);\n\n React.useEffect(() => {\n if (props.containerHeight)\n return;\n\n setAvailableHeight(tableRef.current?.clientHeight ?? 0);\n }, [tableRef.current]);\n\n const numRows = props.items.length;\n const totalRowsVisible = Math.ceil(availableHeight / props.rowHeight);\n const totalHeight = props.rowHeight * numRows;\n\n const startIndex = Math.max(\n 0,\n Math.floor(scrollTop / props.rowHeight) - totalRowsVisible\n );\n\n const endIndex = Math.min(\n numRows,\n startIndex + (totalRowsVisible * 3)\n );\n\n function onScrollTable(e: React.UIEvent<HTMLDivElement>): void {\n setScrollTop(e.currentTarget.scrollTop);\n }\n\n function getTableStyles(): React.CSSProperties {\n const tablePosFromTop = tableRef.current?.getBoundingClientRect().top ?? 0;\n\n const height = props.containerHeight || `calc(100vh - ${window.pageYOffset + tablePosFromTop + 30}px)`;\n \n return {\n height,\n minHeight: `${props.rowHeight * 5}px`,\n overflow: 'auto'\n };\n }\n\n function getRows(): JSX.Element[] {\n const items = [];\n \n let index = startIndex;\n while (index < endIndex) {\n const item = props.items[index];\n\n if (item)\n items.push(props.getComponent(item, index));\n \n index++;\n }\n\n return items;\n }\n\n return (\n <div style={getTableStyles()} ref={tableRef}>\n <Scrollbars\n onScroll={onScrollTable}\n autoHeightMin={totalHeight}\n autoHeightMax={totalHeight}\n ref={ref}\n >\n <div style={{ height: totalHeight, paddingTop: startIndex * props.rowHeight }}>\n <ul className='w-100 position-relative d-table striped-list list-unstyled no-full-width'>\n {!!props.staticComponentAboveRows && props.staticComponentAboveRows}\n {getRows()}\n {!!props.staticComponentBelowRows && props.staticComponentBelowRows}\n </ul>\n </div>\n </Scrollbars>\n </div>\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","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 {\"numberContainer\":\"JBRDi\"};","import React from 'react';\n\nimport styles from './settings-ordered-list-item.scss';\n\ninterface SettingsOrderedListItemProps {\n number: number;\n children: React.ReactNode;\n className?: string;\n}\n\nexport function SettingsOrderedListItem({ number, children, className = '' }: SettingsOrderedListItemProps): JSX.Element {\n return (\n <div className={`d-flex align-items-center mb-3 ${className}`}>\n <div className={`d-flex align-items-center justify-content-center bg-dark rounded-circle ${styles.numberContainer}`}>\n <span className='text-light'>{number}</span>\n </div>\n <div className='ms-2'>\n {children}\n </div>\n </div>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"indicator\":\"xidrU\"};","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { Actions as ActionsButton } from 'libs/shared/components/actions/Actions';\nimport { ActionsDropdown } from 'libs/shared/components/actions/ActionsDropdown';\nimport { SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport { DeviceStatus } from 'projects/player/plugins/devices-plugin/clients/client-interfaces';\n\nimport styles from './device-list-item.scss';\n\nconst namespace = 'settings.deviceListItem';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface DeviceListItemProps {\n name: string;\n status: DeviceStatus;\n onUnpair: () => void;\n onRename?: () => void;\n}\n\nexport function DeviceListItem(props: DeviceListItemProps): React.ReactElement {\n const { status, name, onUnpair, onRename } = props;\n\n return (\n <li className='d-flex align-items-center p-2 justify-content-between'>\n <div className='d-flex align-items-center'>\n <SvgContainer svgName={cvSvgLibrary.AppleTv} className='svg-container me-2'/>\n <div>{name}</div>\n </div>\n\n <div className='d-flex align-items-center'>\n <DeviceStatusIndicator status={status}/>\n { onRename && <ActionsButton\n actions={[{\n svgName: cvSvgLibrary.Edit,\n className: 'btn btn-link svg-container',\n onClick: onRename,\n button: true,\n disabled: status !== DeviceStatus.Available\n }]}/>\n }\n <ActionsDropdown\n actions={[{ label: getPhrase('unpairActionButton'), onClick: onUnpair }]}\n dropdownToggleClassName='btn ms-3'\n />\n </div>\n </li>\n );\n}\n\nconst statusIndicatorColors = {\n [DeviceStatus.Available]: 'bg-success',\n [DeviceStatus.Busy]: 'bg-warning',\n [DeviceStatus.Offline]: 'bg-gray-500'\n};\n\nconst statusIndicatorLabels = {\n [DeviceStatus.Available]: getPhrase('availableStatusLabel'),\n [DeviceStatus.Busy]: getPhrase('busyStatusLabel'),\n [DeviceStatus.Offline]: getPhrase('offlineStatusLabel')\n};\n\nfunction DeviceStatusIndicator(props: Pick<DeviceListItemProps, 'status'>) {\n const color = statusIndicatorColors[props.status] ?? '';\n const label = statusIndicatorLabels[props.status] ?? '';\n\n return (\n <div className='d-flex align-items-center me-4'>\n <div className={`${styles.indicator} ${color} me-2`} />\n <span>{label}</span>\n </div>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"deviceInput\":\"hkziS\",\"pinInput\":\"_oWnE\",\"image\":\"s5WWG\",\"inputWrapper\":\"BTvzv\"};","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { ClickViewAvatar } from 'libs/shared/components/clickview-avatar/ClickViewAvatar';\nimport { DivButton } from 'libs/shared/components/div-button/DivButton';\nimport { SvgContainer, SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\nimport { SvgContainer2 } from 'libs/shared/components/svg-container/SvgContainer2';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { LiteSupportArticle } from 'libs/shared/enums/SupportArticle';\nimport { ArticleHelper } from 'libs/shared/utils/ArticleHelper';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport { ImageUrls } from 'shared/constants/ImageUrls';\n\nimport { SettingsOrderedListItem } from 'apps/settings/components/settings-ordered-list-item/SettingsOrderedListItem';\n\nimport styles from './pair-device-view.scss';\n\nconst namespace = 'settings.appleTv.pairDeviceView';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface PairDeviceViewProps {\n deviceName: string;\n pin: string;\n onDeviceNameChange: (deviceName: string) => void;\n onPinChange: (pin: string) => void;\n onActivate: () => void;\n}\n\nexport function PairDeviceView(props: PairDeviceViewProps): JSX.Element {\n const { deviceName, pin, onDeviceNameChange, onPinChange, onActivate } = props;\n \n return (\n <div className='rounded-3 px-4 py-3 mt-3 bg-light-blue d-flex flex-row justify-content-between'>\n <div>\n <h3 className='h6 mb-3'>\n <Text namespace={namespace} phrase='instructionsHeading' />\n </h3>\n\n <SettingsOrderedListItem number={1}>\n <div className='d-flex align-items-center flex-wrap'>\n <Text namespace={namespace} phrase='instructionsStep1Fragment1' />\n <SvgContainer2 className='mx-1' size={SvgContainerSize.Small}>\n <ClickViewAvatar />\n </SvgContainer2>\n <Text namespace={namespace} phrase='instructionsStep1Fragment2' />\n <SvgContainer svgName={cvSvgLibrary.AppleTv} size={SvgContainerSize.Small} />\n <Text namespace={namespace} phrase='instructionsStep1Fragment3' />\n </div>\n </SettingsOrderedListItem>\n\n <SettingsOrderedListItem number={2}>\n <Text namespace={namespace} phrase='instructionsStep2' />\n </SettingsOrderedListItem>\n\n <div className={`${styles.inputWrapper} d-flex align-items-end form-group flex-wrap`}>\n <div className='d-flex flex-column me-2 mb-3'>\n <label className='fw-bold mb-1' htmlFor='create'>\n <Text namespace={namespace} phrase='deviceNameInputLabel'/>\n </label>\n <input\n id='device'\n className={`form-control form-control-md ${styles.deviceInput}`}\n value={deviceName}\n onChange={e => onDeviceNameChange(e.target.value)}\n autoComplete='off'\n placeholder={getPhrase('deviceNameInputPlaceholder')}\n />\n </div>\n\n <div className='d-flex flex-column me-2 mb-3'>\n <label className='fw-bold mb-1' htmlFor='create'>\n <Text namespace={namespace} phrase='pinInputLabel'/>\n </label>\n <input\n id='pin'\n className={`form-control form-control-md ${styles.pinInput}`}\n value={pin}\n onChange={e => onPinChange(e.target.value)}\n autoComplete='off'\n placeholder='1234'\n />\n </div>\n\n <DivButton onClick={onActivate} className='btn btn-dark mb-3'>\n <Text namespace={namespace} phrase='activateButton' />\n </DivButton>\n </div>\n\n <SettingsOrderedListItem number={3}>\n <Text namespace={namespace} phrase='instructionsStep3Fragment1' />\n <SvgContainer svgName={cvSvgLibrary.Cast} size={SvgContainerSize.Small} />\n <Text namespace={namespace} phrase='instructionsStep3Fragment2' />\n </SettingsOrderedListItem>\n\n <a\n href={ArticleHelper.getLiteArticle(LiteSupportArticle.AppleTvIntegration)}\n target='_blank'\n className='text-info mt-2'\n >\n <Text namespace={namespace} phrase='learnMore' />\n </a>\n\n </div>\n\n <div className='ms-2 d-flex align-items-center'>\n <img className={styles.image} role='presentation' src={ImageUrls.Devices.APPLE_TV} />\n </div>\n </div>\n );\n}","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { Popup } from 'libs/shared/components/popup/Popup';\nimport { PopupButtons } from 'libs/shared/components/popup/PopupButtons';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { PopupViewProps } from 'libs/shared/interfaces';\n\nconst namespace = 'settings.appleTvSettings.renameDevicePopup';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nexport interface RenameDevicePopupProps extends PopupViewProps {\n name: string;\n showSpinner: boolean;\n onRename: (newName: string) => void;\n}\n\nexport function RenameDevicePopup(props: RenameDevicePopupProps): JSX.Element {\n const [ name, setName ] = React.useState(props.name);\n const trimmedName = name.trim();\n\n return (\n <Popup title={getPhrase('title')} closePopup={props.closePopup}>\n <div className='form-group'>\n <label className='fw-bold mb-2' htmlFor='edit'>\n <Text namespace={namespace} phrase='inputLabel' />\n </label>\n <input\n value={name}\n onChange={e => setName(e.target.value)}\n className='form-control form-control-md mb-4'\n autoFocus\n placeholder={getPhrase('inputPlaceholder')}\n />\n </div>\n <PopupButtons>\n <PopupButtons.Cancel onClick={props.closePopup} />\n <PopupButtons.Submit\n disabled={!trimmedName}\n variant='dark'\n text={getPhrase('saveButton')}\n onClick={() => props.onRename(trimmedName)}\n showSpinner={props.showSpinner}\n />\n </PopupButtons>\n </Popup>\n );\n}","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { Popup } from 'libs/shared/components/popup/Popup';\nimport { PopupButtons } from 'libs/shared/components/popup/PopupButtons';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { PopupViewProps } from 'libs/shared/interfaces';\n\nconst namespace = 'settings.appleTvSettings.unpairDevicePopup';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface UnpairDevicePopupProps extends PopupViewProps {\n showSpinner: boolean;\n deviceName: string;\n onUnpair: () => void;\n}\n\nexport function UnpairDevicePopup(props: UnpairDevicePopupProps): JSX.Element {\n const { closePopup, showSpinner, deviceName, onUnpair } = props;\n \n return (\n <Popup title={getPhrase('title')} closePopup={closePopup}>\n <p>\n <Text namespace={namespace} phrase='warning' options={{ name: deviceName }} />\n </p>\n\n <p>\n <Text namespace={namespace} phrase='subWarning' />\n </p>\n\n <PopupButtons>\n <PopupButtons.Cancel onClick={closePopup} />\n <PopupButtons.Submit\n variant='danger'\n text={getPhrase('unpairButton')}\n onClick={onUnpair}\n showSpinner={showSpinner}\n />\n </PopupButtons>\n </Popup>\n );\n}","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { WindowedList } from 'libs/shared/components/windowed-list/WindowedList';\nimport { PermissionName } from 'libs/shared/enums/PermissionName';\nimport { useAlerts } from 'libs/shared/hooks/UseAlerts';\n\nimport { Device } from 'projects/player/plugins/devices-plugin/clients/client-interfaces';\n\nimport { DeviceListItem } from 'apps/settings/components/device-list-item/DeviceListItem';\nimport { SettingsLayout } from 'apps/settings/components/settings-layout/SettingsLayout';\nimport { useAppleTvClient } from 'apps/settings/hooks/useAppleTvClient';\n\nimport { PairDeviceView } from './pair-device-view/PairDeviceView';\nimport { RenameDevicePopup } from './rename-device-popup/RenameDevicePopup';\nimport { UnpairDevicePopup } from './unpair-device-popup/UnpairDevicePopup';\n\nconst namespace = 'settings.appleTv';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nexport function AppleTvSettingsView(): JSX.Element {\n const { devices, pair, unpair, rename } = useAppleTvClient();\n const [ deviceName, setDeviceName ] = React.useState('');\n const [ pin, setPin ] = React.useState('');\n const [ deviceToRename, setDeviceToRename ] = React.useState<Device>();\n const [ deviceToUnpair, setDeviceToUnpair ] = React.useState<Device>();\n const [ showSpinner, setShowSpinner ] = React.useState(false);\n\n const alerts = useAlerts();\n \n async function onPairDevice() {\n try {\n const trimmedDeviceName = deviceName.trim();\n const trimmedPin = pin.trim();\n\n if (!trimmedDeviceName) return;\n if (!trimmedPin) return;\n\n await pair({ deviceName: trimmedDeviceName, pin: trimmedPin });\n setDeviceName('');\n setPin('');\n \n alerts.success(getPhrase('devicePairingSuccessMessage'));\n } catch (e) {\n console.error(e);\n alerts.error(getPhrase('devicePairingErrorMessage'));\n }\n }\n\n async function onUnpairDevice(deviceId: string) {\n try {\n setShowSpinner(true);\n await unpair(deviceId);\n setDeviceToUnpair(undefined);\n \n alerts.success(getPhrase('deviceUnpairingSuccessMessage'));\n } catch (e) {\n console.error(e);\n alerts.error(getPhrase('deviceUnpairingErrorMessage'));\n } finally {\n setShowSpinner(false);\n }\n }\n\n async function onRenameDevice(deviceId: string, deviceName: string) {\n try {\n setShowSpinner(true);\n await rename({ deviceId, deviceName });\n setDeviceToRename(undefined);\n \n alerts.success(getPhrase('deviceRenamingSuccessMessage'));\n } catch (e) {\n console.error(e);\n alerts.error(getPhrase('deviceRenamingErrorMessage'));\n } finally {\n setShowSpinner(false);\n }\n }\n\n return (\n <SettingsLayout\n heading={getPhrase('heading')}\n breadcrumbs={[getPhrase('heading')]}\n requiredPermissions={PermissionName.ManageIntegrations}\n >\n { deviceToRename && (\n <RenameDevicePopup\n name={deviceToRename.name}\n showSpinner={showSpinner}\n onRename={newName => onRenameDevice(deviceToRename.id, newName)}\n closePopup={() => setDeviceToRename(undefined)}\n />\n )}\n\n { deviceToUnpair && (\n <UnpairDevicePopup\n showSpinner={showSpinner}\n deviceName={deviceToUnpair.name}\n onUnpair={() => onUnpairDevice(deviceToUnpair.id)}\n closePopup={() => setDeviceToUnpair(undefined)}\n />\n )}\n\n <PairDeviceView\n deviceName={deviceName}\n pin={pin}\n onDeviceNameChange={setDeviceName}\n onPinChange={setPin}\n onActivate={onPairDevice}\n />\n\n {devices.length ? <h2 className='h5 mt-4'>{getPhrase('activatedListHeading')}</h2> : null }\n\n <WindowedList\n items={devices}\n rowHeight={55}\n getComponent={(device: Device) => {\n return (\n <DeviceListItem\n key={device.id}\n name={device.name}\n status={device.status}\n onUnpair={() => setDeviceToUnpair(device)}\n // The rename function is a bit janky at the moment, so we'll disable it for now\n // Note: re-pairing the device with a different name works fine..\n // onRename={() => setDeviceToRename(device)}\n />\n );\n }}\n />\n </SettingsLayout>\n );\n}","import React from 'react';\n\nimport { Flight } from 'libs/common/flight';\n\nimport { CustomerRequests } from 'libs/shared/flight-requests/CustomerRequests';\nimport { PlayerIntegrationsRequests } from 'libs/shared/flight-requests/PlayerIntegrationsRequests';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { CurrentUser, Customer } from 'libs/shared/interfaces';\n\nimport { AppleTvClient } from 'projects/player/plugins/devices-plugin/clients/apple-tv/apple-tv-client';\nimport { AppleTvPairRequest, AppleTvRenameRequest, OnlineApiDevice } from 'projects/player/plugins/devices-plugin/clients/apple-tv/apple-tv-interfaces';\nimport { Device } from 'projects/player/plugins/devices-plugin/clients/client-interfaces';\n\ninterface AppleTvClientApi {\n devices: Device[];\n pair: (pairRequest: Omit<AppleTvPairRequest, 'crmId'>) => Promise<OnlineApiDevice>;\n unpair: (id: string) => Promise<void>;\n rename: (renameRequest: AppleTvRenameRequest) => Promise<void>;\n}\n\nexport function useAppleTvClient(): AppleTvClientApi {\n const [ devices, setDevices ] = React.useState<Device[]>([]);\n const client = React.useRef<AppleTvClient>();\n const fetchAsync = Flight.useGetFetchAsync();\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n const customer = Flight.useBasicFetch<Customer>(\n currentUser.data?.isAuthenticated &&\n CustomerRequests.customer(currentUser.data.customerId)\n );\n\n React.useEffect(() => {\n if (!currentUser.data?.isAuthenticated) return;\n if (!customer.hasCompleted) return;\n\n client.current = new AppleTvClient({\n fetchAccessToken: () => fetchAsync(PlayerIntegrationsRequests.getAppleTvAccessToken()),\n userId: parseInt(currentUser.data?.id)\n });\n\n client.current?.on('deviceschange', () => {\n setDevices([...client.current?.getDevices()]);\n });\n\n return () => client.current?.dispose();\n }, [ currentUser.data?.isAuthenticated, customer.hasCompleted ]);\n\n function pair(pairRequest: Omit<AppleTvPairRequest, 'crmId'>) {\n return client.current?.pair({ ...pairRequest, crmId: parseInt(customer.data?.crmId) });\n }\n\n function unpair(id: string) {\n return client.current?.unpair(id);\n }\n\n function rename(renameRequest: AppleTvRenameRequest) {\n return client?.current.renameDevice(renameRequest);\n }\n\n return {\n devices,\n pair,\n unpair,\n rename\n };\n}","/**\n * Wraps the given function, `fn`, with a new function that only invokes `fn`\n * at most once per every `wait` milliseconds.\n *\n * @function\n * @param {Function} fn\n * The function to be throttled.\n *\n * @param {number} wait\n * The number of milliseconds by which to throttle.\n *\n * @return {Function}\n */\nexport const throttle = function(fn: any, wait: any): any {\n let last = window.performance.now();\n\n const throttled = function(...args: any[]): any {\n const now = window.performance.now();\n\n if (now - last >= wait) {\n fn(...args);\n last = now;\n }\n };\n\n return throttled;\n};\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked.\n *\n * Inspired by lodash and underscore implementations.\n *\n * @function\n * @param {Function} func\n * The function to wrap with debounce behavior.\n *\n * @param {number} wait\n * The number of milliseconds to wait after the last invocation.\n *\n * @param {boolean} [leading]\n * When true will also invoke the function immediately upon creation.\n *\n * @param {Object} [context=window]\n * The \"context\" in which the debounced function should debounce. For\n * example, if this function should be tied to a Video.js player,\n * the player can be passed here. Alternatively, defaults to the\n * global `window` object.\n *\n * @return {Function}\n * A debounced function that returns true if the wrapped function was executed immediately.\n */\nexport const debounce = function(\n func: any,\n wait: any,\n leading: any,\n context: any = window\n): (...args: any[]) => boolean {\n let timeout: any;\n\n const cancel = () => {\n context.clearTimeout(timeout);\n timeout = null;\n };\n\n /* eslint-disable consistent-this */\n const debounced = (...args: any[]) => {\n let executed = false;\n\n let later = function() {\n timeout = null;\n later = null;\n func.apply(this, args);\n };\n\n if (!timeout && leading) {\n func.apply(this, args);\n executed = true;\n }\n\n context.clearTimeout(timeout);\n timeout = context.setTimeout(later, wait);\n\n return executed;\n };\n /* eslint-enable consistent-this */\n\n debounced.cancel = cancel;\n\n return debounced;\n};\n\n/**\n * A function that returns undefined.\n *\n * Inspired by lodash implementations.\n */\nexport const noop = function(): undefined {\n return undefined;\n};\n"],"names":["Actions","props","orderedActions","actions","sort","a","b","order","buttonActions","moreActions","forEach","button","push","className","length","map","idx","key","label","appLink","href","onClick","svgName","svgSize","dropdownToggleSvgSize","tooltip","showSpinner","analyticsData","analyticsOptions","openInNewTab","disabled","iconButton","showBorder","customSize","ariaLabel","title","spanHack","sortComponent","dropdownToggleClassName","actionsDropdownClassName","fetchMore","LazyDropdownItems","style","padding","height","width","getDropdownItemClassName","actionClassName","ActionsDropdownItem","FunctionHelper","action","AppLink","SvgContainer","e","preventDefault","AnalyticsHelper","role","tabIndex","onKeyDown","ActionsDropdown","isLazy","some","lazyPlaceholder","currentGroup","dropdownToggleId","RandomHelper","type","id","size","showDivider","undefined","group","Tooltip","defaultProps","S","getPhrase","BreadcrumbItem","ref","breadcrumb","name","active","withBackIcon","trimmedName","slice","Breadcrumbs","breadcrumbs","isMobile","collapse","setCollapse","shouldFocus","setShouldFocus","expandRef","characterLength","reduce","prev","next","current","focus","first","second","secondLast","last","rest","PartialBreadcrumbs","numItems","dangerouslySetInnerHTML","__html","WindowedList","containerHeight","availableHeight","setAvailableHeight","scrollTop","setScrollTop","tableRef","clientHeight","tablePosFromTop","numRows","items","totalRowsVisible","Math","ceil","rowHeight","totalHeight","startIndex","max","floor","endIndex","min","getBoundingClientRect","top","window","pageYOffset","minHeight","overflow","onScroll","currentTarget","autoHeightMin","autoHeightMax","paddingTop","staticComponentAboveRows","index","item","getComponent","getRows","staticComponentBelowRows","OnlineSupportArticle","LiteSupportArticle","DEFAULT_PARTIAL_LOADING_OPTIONS","minWidth","maxWidth","PartialLoadingHelper","getPartialLoadingItems","options","opts","Array","random","namespace","useCanAccessSettings","requiredPermissions","hasPermissions","settingsGroups","currentRoute","application","modules","settingsModule","SettingsLayout","canAccess","replace","i","heading","headingButton","description","children","SettingsOrderedListItem","number","LanguageService","DeviceListItem","status","onUnpair","onRename","DeviceStatusIndicator","statusIndicatorColors","statusIndicatorLabels","color","PairDeviceView","deviceName","pin","onDeviceNameChange","onPinChange","onActivate","Text","phrase","SvgContainer2","ClickViewAvatar","htmlFor","value","onChange","target","autoComplete","placeholder","DivButton","ArticleHelper","src","ImageUrls","RenameDevicePopup","setName","trim","Popup","closePopup","autoFocus","PopupButtons","variant","text","UnpairDevicePopup","AppleTvSettingsView","devices","setDevices","client","fetchAsync","currentUser","UserRequests","customer","data","isAuthenticated","CustomerRequests","customerId","hasCompleted","fetchAccessToken","PlayerIntegrationsRequests","userId","parseInt","on","getDevices","dispose","pair","pairRequest","crmId","unpair","rename","renameRequest","renameDevice","useAppleTvClient","setDeviceName","setPin","deviceToRename","setDeviceToRename","deviceToUnpair","setDeviceToUnpair","setShowSpinner","alerts","PermissionName","newName","deviceId","success","console","error","onRenameDevice","onUnpairDevice","trimmedDeviceName","trimmedPin","device","throttle","fn","wait","performance","now","debounce","func","leading","timeout","context","debounced","args","executed","apply","this","clearTimeout","setTimeout","cancel"],"sourceRoot":""}
1
+ {"version":3,"file":"scripts/9230-1ffbf1807e-lite.chunk.js","mappings":"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","sources":["file:///app/packages/libs/shared/src/components/actions/Actions.tsx","file:///app/packages/libs/shared/src/components/actions/actions.scss","file:///app/packages/libs/shared/src/components/actions/ActionsDropdown.tsx","file:///app/packages/libs/shared/src/components/breadcrumbs/Breadcrumbs.tsx","file:///app/packages/libs/shared/src/components/windowed-list/WindowedList.tsx","file:///app/packages/libs/shared/src/enums/SupportArticle.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/components/settings-ordered-list-item/settings-ordered-list-item.scss","file:///app/packages/projects/lite/src/apps/settings/components/settings-ordered-list-item/SettingsOrderedListItem.tsx","file:///app/packages/projects/lite/src/apps/settings/components/device-list-item/device-list-item.scss","file:///app/packages/projects/lite/src/apps/settings/components/device-list-item/DeviceListItem.tsx","file:///app/packages/projects/lite/src/apps/settings/views/integration-settings/apple-tv-settings/pair-device-view/pair-device-view.scss","file:///app/packages/projects/lite/src/apps/settings/views/integration-settings/apple-tv-settings/pair-device-view/PairDeviceView.tsx","file:///app/packages/projects/lite/src/apps/settings/views/integration-settings/apple-tv-settings/rename-device-popup/RenameDevicePopup.tsx","file:///app/packages/projects/lite/src/apps/settings/views/integration-settings/apple-tv-settings/unpair-device-popup/UnpairDevicePopup.tsx","file:///app/packages/projects/lite/src/apps/settings/views/integration-settings/apple-tv-settings/AppleTvSettingsView.tsx","file:///app/packages/projects/lite/src/apps/settings/hooks/useAppleTvClient.ts","file:///app/packages/projects/player/src/utils/fn.ts"],"sourcesContent":["import * as React from 'react';\n\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\nimport { Core } from 'libs/common/core';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { AnalyticsOptions } from 'libs/analytics/interfaces';\n\nimport { IconButton } from 'libs/shared/components/icon-button/IconButton';\nimport { SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\nimport { Tooltip } from 'libs/shared/components/tooltip/Tooltip';\nimport { BaseObject } from 'libs/shared/interfaces';\n\nimport { ActionButton } from './ActionButton';\nimport { ActionsDropdown } from './ActionsDropdown';\n\nexport interface ActionOptions {\n order?: number;\n label?: string | (() => JSX.Element);\n appLink?: Core.AppLink;\n href?: string;\n onClick?: () => void;\n svgName?: string;\n className?: string;\n button?: boolean; // If true, a button will be rendered. Otherwise the action will be rendered in the dropdown.\n tooltip?: string;\n showSpinner?: boolean;\n showBorder?: boolean; // only works for button without text label\n analyticsData?: HashObject;\n analyticsOptions?: AnalyticsOptions;\n disabled?: boolean;\n openInNewTab?: boolean; // Only used if appLink or href is provided\n group?: string;\n lazyPlaceholder?: boolean;\n}\n\nexport type ActionGenerator = (obj: BaseObject) => ActionOptions[];\n\ninterface ActionsProps {\n actions: ActionOptions[];\n className?: string;\n actionsDropdownClassName?: string;\n dropdownToggleSvgSize?: SvgContainerSize;\n sortComponent?: JSX.Element;\n customSize?: boolean;\n fetchMore?: () => void;\n}\n\nexport function Actions(props: ActionsProps): JSX.Element {\n const orderedActions = React.useMemo(() => props.actions.sort((a, b) => a.order - b.order), [props.actions]);\n\n const buttonActions: ActionOptions[] = [];\n const moreActions: ActionOptions[] = [];\n\n orderedActions.forEach(a => {\n if (a.button)\n buttonActions.push(a);\n else\n moreActions.push(a);\n });\n\n let className = 'd-flex';\n\n if (props.className)\n className += ` ${props.className}`;\n\n if (!buttonActions.length && !moreActions.length)\n return <></>;\n\n return (\n <div className={className}>\n {buttonActions.length ? buttonActions.map((a, idx) => (\n <React.Fragment key={idx}>\n {(() => {\n if (a.label) {\n const label = FunctionHelper.isFunction(a.label)\n ? a.label\n : () => <>{a.label}</>;\n\n return (\n <ActionButton\n appLink={a.appLink}\n href={a.href}\n onClick={a.onClick}\n svgName={a.svgName}\n svgSize={props.dropdownToggleSvgSize}\n className={a.className}\n tooltip={a.tooltip}\n showSpinner={a.showSpinner}\n analyticsData={a.analyticsData}\n analyticsOptions={a.analyticsOptions}\n openInNewTab={a.openInNewTab}\n disabled={a.disabled}\n >\n {label()}\n </ActionButton>\n );\n }\n\n const iconButton = (\n <IconButton\n appLink={a.appLink}\n href={a.href}\n onClick={a.onClick}\n svgName={a.svgName}\n className={a.className}\n analyticsData={a.analyticsData}\n analyticsOptions={a.analyticsOptions}\n openInNewTab={a.openInNewTab}\n disabled={a.disabled}\n showBorder={a.showBorder}\n customSize={props.customSize}\n ariaLabel={a.tooltip}\n />\n );\n\n return a.tooltip\n ? <Tooltip title={a.tooltip} spanHack>{iconButton}</Tooltip>\n : iconButton;\n })()}\n </React.Fragment>\n )) : <></>}\n {props.sortComponent && props.sortComponent}\n {moreActions.length ? (\n <ActionsDropdown\n actions={moreActions}\n dropdownToggleClassName={props.actionsDropdownClassName}\n dropdownToggleSvgSize={props.dropdownToggleSvgSize}\n fetchMore={props.fetchMore}\n />\n ) : <></>}\n </div>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"dropdownToggle\":\"UCAnJ\"};","import * as React from 'react';\n\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\nimport { Core } from 'libs/common/core';\nimport { RandomHelper } from 'libs/common/react/utils/RandomHelper';\n\nimport { AnalyticsHelper } from 'libs/analytics/AnalyticsHelper';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { SvgContainer, SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\nimport { Tooltip } from 'libs/shared/components/tooltip/Tooltip';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport { ActionOptions } from './Actions';\n\nimport styles from './actions.scss';\n\nfunction LazyDropdownItems(): JSX.Element {\n return (\n <>\n <div style={{ padding: '0.53125rem 1rem' }}>\n <div className='partial-loading-background' style={{ height: '1.0625rem', width: '8rem' }}></div>\n </div>\n <div style={{ padding: '0.53125rem 1rem' }}>\n <div className='partial-loading-background' style={{ height: '1.0625rem', width: '12rem' }}></div>\n </div>\n <div style={{ padding: '0.53125rem 1rem' }}>\n <div className='partial-loading-background' style={{ height: '1.0625rem', width: '11rem' }}></div>\n </div>\n <div style={{ padding: '0.53125rem 1rem' }}>\n <div className='partial-loading-background' style={{ height: '1.0625rem', width: '9rem' }}></div>\n </div>\n </>\n );\n}\n\nfunction getDropdownItemClassName(actionClassName?: string): string {\n let className = 'dropdown-item';\n\n if (actionClassName)\n className += ` ${actionClassName}`;\n\n return className;\n}\n\nexport type DropdownActionOptions = Omit<ActionOptions, 'button'>;\n\ninterface ActionsDropdownItemProps {\n action: DropdownActionOptions;\n}\n\nfunction ActionsDropdownItem(props: ActionsDropdownItemProps): React.ReactElement {\n const label = FunctionHelper.isFunction(props.action.label)\n ? props.action.label\n : () => <>{props.action.label}</>;\n\n if (props.action.appLink)\n return (\n <AppLink\n appLink={props.action.appLink}\n onClick={props.action.onClick}\n className={getDropdownItemClassName(props.action.className)}\n analyticsData={props.action.analyticsData}\n analyticsOptions={props.action.analyticsOptions}\n openInNewTab={props.action.openInNewTab}\n disabled={props.action.disabled}\n >\n {props.action.svgName && <SvgContainer svgName={props.action.svgName} className='d-inline-block svg-container me-2 align-middle' />}\n <span className='align-middle'>{label()}</span>\n </AppLink>\n );\n\n function onClick(e: React.MouseEvent | React.KeyboardEvent): void {\n e.preventDefault();\n\n if (props.action.analyticsData && props.action.analyticsOptions)\n AnalyticsHelper.logUserAction(props.action.analyticsData, props.action.analyticsOptions);\n\n if (FunctionHelper.isFunction(props.action.onClick))\n props.action.onClick();\n\n if (props.action.href)\n Core.LocationUtils.PageLoad(props.action.href, props.action.openInNewTab);\n }\n\n if (props.action.href) {\n return (\n <a\n className={getDropdownItemClassName(props.action.className)}\n onClick={onClick}\n href={props.action.href}\n >\n {props.action.svgName && <SvgContainer svgName={props.action.svgName} className='d-inline-block svg-container me-2 align-middle' />}\n <span className='align-middle'>{label()}</span>\n </a>\n );\n }\n\n return (\n <span\n className={`cursor-pointer ${getDropdownItemClassName(props.action.className)}`}\n onClick={onClick}\n role='button'\n tabIndex={0}\n onKeyDown={(e: React.KeyboardEvent) => e.key === 'Enter' && onClick(e)}\n >\n {props.action.svgName && <SvgContainer svgName={props.action.svgName} className='d-inline-block svg-container me-2' />}\n {label()}\n </span>\n );\n}\n\ninterface ActionsDropdownProps {\n actions: DropdownActionOptions[];\n className?: string;\n dropdownToggleClassName?: string;\n dropdownToggleSvgSize?: SvgContainerSize;\n fetchMore?: () => void;\n}\n\nActionsDropdown.defaultProps = {\n dropdownToggleClassName: 'btn btn-light',\n dropdownToggleSvgSize: SvgContainerSize.Small\n};\n\nexport function ActionsDropdown(props: ActionsDropdownProps): React.ReactElement {\n if (!props.actions || !props.actions.length)\n return <></>;\n\n const isLazy = props.actions.some(a => a.lazyPlaceholder);\n\n let className = 'dropdown';\n\n if (props.className)\n className += ` ${props.className}`;\n\n // Generate unique id to avoid collisions.\n const dropdownToggleId = `actions-dropdown-${RandomHelper.getRandomInt()}`;\n\n let dropdownToggleClassName = `dropdown-toggle px-0 ${styles.dropdownToggle}`;\n\n if (props.dropdownToggleClassName)\n dropdownToggleClassName += ` ${props.dropdownToggleClassName}`;\n\n let currentGroup: string;\n\n return (\n <div className={className}>\n <button\n className={dropdownToggleClassName}\n type='button'\n id={dropdownToggleId}\n data-bs-toggle='dropdown'\n data-toggle='dropdown'\n aria-haspopup='true'\n aria-expanded='false'\n aria-label={'More actions dropdown'}\n onClick={isLazy ? props.fetchMore : null}\n >\n <SvgContainer svgName={cvSvgLibrary.More} size={props.dropdownToggleSvgSize} />\n </button>\n <ul className='dropdown-menu dropdown-menu-end dropdown-menu-right font-size-normal' aria-labelledby={dropdownToggleId}>\n {isLazy ?\n <LazyDropdownItems /> :\n props.actions.map((a, idx) => {\n const showDivider = currentGroup !== undefined && currentGroup !== a.group;\n currentGroup = a.group;\n \n if (a.tooltip) {\n return (\n <li key={idx}>\n {showDivider && <hr className='dropdown-divider' role='separator'></hr>}\n <Tooltip title={a.tooltip} spanHack>\n <ActionsDropdownItem action={a} />\n </Tooltip>\n \n </li>\n );\n }\n \n return (\n <li key={idx}>\n {showDivider && <hr className='dropdown-divider' role='separator'></hr>}\n <ActionsDropdownItem action={a} />\n </li>\n );\n })\n }\n </ul>\n </div>\n );\n}","import * as React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Core } from 'libs/common/core';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { 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});","import React from 'react';\nimport { Scrollbars } from 'react-custom-scrollbars-2';\n\ninterface WindowedListProps<TObject> {\n items: TObject[];\n getComponent: (item: TObject, index: number) => JSX.Element;\n rowHeight: number;\n containerHeight?: number;\n\n staticComponentAboveRows?: JSX.Element;\n staticComponentBelowRows?: JSX.Element;\n}\n\nexport const WindowedList = React.forwardRef((\n props: WindowedListProps<any>,\n ref: React.Ref<Scrollbars>\n) => {\n const [ availableHeight, setAvailableHeight ] = React.useState<number>(props.containerHeight || 0);\n const [ scrollTop, setScrollTop ] = React.useState<number>(0);\n\n const tableRef = React.useRef<HTMLDivElement>(null);\n\n React.useEffect(() => {\n if (props.containerHeight)\n return;\n\n setAvailableHeight(tableRef.current?.clientHeight ?? 0);\n }, [tableRef.current]);\n\n const numRows = props.items.length;\n const totalRowsVisible = Math.ceil(availableHeight / props.rowHeight);\n const totalHeight = props.rowHeight * numRows;\n\n const startIndex = Math.max(\n 0,\n Math.floor(scrollTop / props.rowHeight) - totalRowsVisible\n );\n\n const endIndex = Math.min(\n numRows,\n startIndex + (totalRowsVisible * 3)\n );\n\n function onScrollTable(e: React.UIEvent<HTMLDivElement>): void {\n setScrollTop(e.currentTarget.scrollTop);\n }\n\n function getTableStyles(): React.CSSProperties {\n const tablePosFromTop = tableRef.current?.getBoundingClientRect().top ?? 0;\n\n const height = props.containerHeight || `calc(100vh - ${window.pageYOffset + tablePosFromTop + 30}px)`;\n \n return {\n height,\n minHeight: `${props.rowHeight * 5}px`,\n overflow: 'auto'\n };\n }\n\n function getRows(): JSX.Element[] {\n const items = [];\n \n let index = startIndex;\n while (index < endIndex) {\n const item = props.items[index];\n\n if (item)\n items.push(props.getComponent(item, index));\n \n index++;\n }\n\n return items;\n }\n\n return (\n <div style={getTableStyles()} ref={tableRef}>\n <Scrollbars\n onScroll={onScrollTable}\n autoHeightMin={totalHeight}\n autoHeightMax={totalHeight}\n ref={ref}\n >\n <div style={{ height: totalHeight, paddingTop: startIndex * props.rowHeight }}>\n <ul className='w-100 position-relative d-table striped-list list-unstyled no-full-width'>\n {!!props.staticComponentAboveRows && props.staticComponentAboveRows}\n {getRows()}\n {!!props.staticComponentBelowRows && props.staticComponentBelowRows}\n </ul>\n </div>\n </Scrollbars>\n </div>\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","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 {\"numberContainer\":\"JBRDi\"};","import React from 'react';\n\nimport styles from './settings-ordered-list-item.scss';\n\ninterface SettingsOrderedListItemProps {\n number: number;\n children: React.ReactNode;\n className?: string;\n}\n\nexport function SettingsOrderedListItem({ number, children, className = '' }: SettingsOrderedListItemProps): JSX.Element {\n return (\n <div className={`d-flex align-items-center mb-3 ${className}`}>\n <div className={`d-flex align-items-center justify-content-center bg-dark rounded-circle ${styles.numberContainer}`}>\n <span className='text-light'>{number}</span>\n </div>\n <div className='ms-2'>\n {children}\n </div>\n </div>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"indicator\":\"xidrU\"};","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { Actions as ActionsButton } from 'libs/shared/components/actions/Actions';\nimport { ActionsDropdown } from 'libs/shared/components/actions/ActionsDropdown';\nimport { SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport { DeviceStatus } from 'projects/player/plugins/devices-plugin/clients/client-interfaces';\n\nimport styles from './device-list-item.scss';\n\nconst namespace = 'settings.deviceListItem';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface DeviceListItemProps {\n name: string;\n status: DeviceStatus;\n onUnpair: () => void;\n onRename?: () => void;\n}\n\nexport function DeviceListItem(props: DeviceListItemProps): React.ReactElement {\n const { status, name, onUnpair, onRename } = props;\n\n return (\n <li className='d-flex align-items-center p-2 justify-content-between'>\n <div className='d-flex align-items-center'>\n <SvgContainer svgName={cvSvgLibrary.AppleTv} className='svg-container me-2'/>\n <div>{name}</div>\n </div>\n\n <div className='d-flex align-items-center'>\n <DeviceStatusIndicator status={status}/>\n { onRename && <ActionsButton\n actions={[{\n svgName: cvSvgLibrary.Edit,\n className: 'btn btn-link svg-container',\n onClick: onRename,\n button: true,\n disabled: status !== DeviceStatus.Available\n }]}/>\n }\n <ActionsDropdown\n actions={[{ label: getPhrase('unpairActionButton'), onClick: onUnpair }]}\n dropdownToggleClassName='btn ms-3'\n />\n </div>\n </li>\n );\n}\n\nconst statusIndicatorColors = {\n [DeviceStatus.Available]: 'bg-success',\n [DeviceStatus.Busy]: 'bg-warning',\n [DeviceStatus.Offline]: 'bg-gray-500'\n};\n\nconst statusIndicatorLabels = {\n [DeviceStatus.Available]: getPhrase('availableStatusLabel'),\n [DeviceStatus.Busy]: getPhrase('busyStatusLabel'),\n [DeviceStatus.Offline]: getPhrase('offlineStatusLabel')\n};\n\nfunction DeviceStatusIndicator(props: Pick<DeviceListItemProps, 'status'>) {\n const color = statusIndicatorColors[props.status] ?? '';\n const label = statusIndicatorLabels[props.status] ?? '';\n\n return (\n <div className='d-flex align-items-center me-4'>\n <div className={`${styles.indicator} ${color} me-2`} />\n <span>{label}</span>\n </div>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"deviceInput\":\"hkziS\",\"pinInput\":\"_oWnE\",\"image\":\"s5WWG\",\"inputWrapper\":\"BTvzv\"};","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { ClickViewAvatar } from 'libs/shared/components/clickview-avatar/ClickViewAvatar';\nimport { DivButton } from 'libs/shared/components/div-button/DivButton';\nimport { SvgContainer, SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\nimport { SvgContainer2 } from 'libs/shared/components/svg-container/SvgContainer2';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { LiteSupportArticle } from 'libs/shared/enums/SupportArticle';\nimport { ArticleHelper } from 'libs/shared/utils/ArticleHelper';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport { ImageUrls } from 'shared/constants/ImageUrls';\n\nimport { SettingsOrderedListItem } from 'apps/settings/components/settings-ordered-list-item/SettingsOrderedListItem';\n\nimport styles from './pair-device-view.scss';\n\nconst namespace = 'settings.appleTv.pairDeviceView';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface PairDeviceViewProps {\n deviceName: string;\n pin: string;\n onDeviceNameChange: (deviceName: string) => void;\n onPinChange: (pin: string) => void;\n onActivate: () => void;\n}\n\nexport function PairDeviceView(props: PairDeviceViewProps): JSX.Element {\n const { deviceName, pin, onDeviceNameChange, onPinChange, onActivate } = props;\n \n return (\n <div className='rounded-3 px-4 py-3 mt-3 bg-light-blue d-flex flex-row justify-content-between'>\n <div>\n <h3 className='h6 mb-3'>\n <Text namespace={namespace} phrase='instructionsHeading' />\n </h3>\n\n <SettingsOrderedListItem number={1}>\n <div className='d-flex align-items-center flex-wrap'>\n <Text namespace={namespace} phrase='instructionsStep1Fragment1' />\n <SvgContainer2 className='mx-1' size={SvgContainerSize.Small}>\n <ClickViewAvatar />\n </SvgContainer2>\n <Text namespace={namespace} phrase='instructionsStep1Fragment2' />\n <SvgContainer svgName={cvSvgLibrary.AppleTv} size={SvgContainerSize.Small} />\n <Text namespace={namespace} phrase='instructionsStep1Fragment3' />\n </div>\n </SettingsOrderedListItem>\n\n <SettingsOrderedListItem number={2}>\n <Text namespace={namespace} phrase='instructionsStep2' />\n </SettingsOrderedListItem>\n\n <div className={`${styles.inputWrapper} d-flex align-items-end form-group flex-wrap`}>\n <div className='d-flex flex-column me-2 mb-3'>\n <label className='fw-bold mb-1' htmlFor='create'>\n <Text namespace={namespace} phrase='deviceNameInputLabel'/>\n </label>\n <input\n id='device'\n className={`form-control form-control-md ${styles.deviceInput}`}\n value={deviceName}\n onChange={e => onDeviceNameChange(e.target.value)}\n autoComplete='off'\n placeholder={getPhrase('deviceNameInputPlaceholder')}\n />\n </div>\n\n <div className='d-flex flex-column me-2 mb-3'>\n <label className='fw-bold mb-1' htmlFor='create'>\n <Text namespace={namespace} phrase='pinInputLabel'/>\n </label>\n <input\n id='pin'\n className={`form-control form-control-md ${styles.pinInput}`}\n value={pin}\n onChange={e => onPinChange(e.target.value)}\n autoComplete='off'\n placeholder='1234'\n />\n </div>\n\n <DivButton onClick={onActivate} className='btn btn-dark mb-3'>\n <Text namespace={namespace} phrase='activateButton' />\n </DivButton>\n </div>\n\n <SettingsOrderedListItem number={3}>\n <Text namespace={namespace} phrase='instructionsStep3Fragment1' />\n <SvgContainer svgName={cvSvgLibrary.Cast} size={SvgContainerSize.Small} />\n <Text namespace={namespace} phrase='instructionsStep3Fragment2' />\n </SettingsOrderedListItem>\n\n <a\n href={ArticleHelper.getLiteArticle(LiteSupportArticle.AppleTvIntegration)}\n target='_blank'\n className='text-info mt-2'\n >\n <Text namespace={namespace} phrase='learnMore' />\n </a>\n\n </div>\n\n <div className='ms-2 d-flex align-items-center'>\n <img className={styles.image} role='presentation' src={ImageUrls.Devices.APPLE_TV} />\n </div>\n </div>\n );\n}","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { Popup } from 'libs/shared/components/popup/Popup';\nimport { PopupButtons } from 'libs/shared/components/popup/PopupButtons';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { PopupViewProps } from 'libs/shared/interfaces';\n\nconst namespace = 'settings.appleTvSettings.renameDevicePopup';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nexport interface RenameDevicePopupProps extends PopupViewProps {\n name: string;\n showSpinner: boolean;\n onRename: (newName: string) => void;\n}\n\nexport function RenameDevicePopup(props: RenameDevicePopupProps): JSX.Element {\n const [ name, setName ] = React.useState(props.name);\n const trimmedName = name.trim();\n\n return (\n <Popup title={getPhrase('title')} closePopup={props.closePopup}>\n <div className='form-group'>\n <label className='fw-bold mb-2' htmlFor='edit'>\n <Text namespace={namespace} phrase='inputLabel' />\n </label>\n <input\n value={name}\n onChange={e => setName(e.target.value)}\n className='form-control form-control-md mb-4'\n autoFocus\n placeholder={getPhrase('inputPlaceholder')}\n />\n </div>\n <PopupButtons>\n <PopupButtons.Cancel onClick={props.closePopup} />\n <PopupButtons.Submit\n disabled={!trimmedName}\n variant='dark'\n text={getPhrase('saveButton')}\n onClick={() => props.onRename(trimmedName)}\n showSpinner={props.showSpinner}\n />\n </PopupButtons>\n </Popup>\n );\n}","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { Popup } from 'libs/shared/components/popup/Popup';\nimport { PopupButtons } from 'libs/shared/components/popup/PopupButtons';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { PopupViewProps } from 'libs/shared/interfaces';\n\nconst namespace = 'settings.appleTvSettings.unpairDevicePopup';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface UnpairDevicePopupProps extends PopupViewProps {\n showSpinner: boolean;\n deviceName: string;\n onUnpair: () => void;\n}\n\nexport function UnpairDevicePopup(props: UnpairDevicePopupProps): JSX.Element {\n const { closePopup, showSpinner, deviceName, onUnpair } = props;\n \n return (\n <Popup title={getPhrase('title')} closePopup={closePopup}>\n <p>\n <Text namespace={namespace} phrase='warning' options={{ name: deviceName }} />\n </p>\n\n <p>\n <Text namespace={namespace} phrase='subWarning' />\n </p>\n\n <PopupButtons>\n <PopupButtons.Cancel onClick={closePopup} />\n <PopupButtons.Submit\n variant='danger'\n text={getPhrase('unpairButton')}\n onClick={onUnpair}\n showSpinner={showSpinner}\n />\n </PopupButtons>\n </Popup>\n );\n}","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { WindowedList } from 'libs/shared/components/windowed-list/WindowedList';\nimport { PermissionName } from 'libs/shared/enums/PermissionName';\nimport { useAlerts } from 'libs/shared/hooks/UseAlerts';\n\nimport { Device } from 'projects/player/plugins/devices-plugin/clients/client-interfaces';\n\nimport { DeviceListItem } from 'apps/settings/components/device-list-item/DeviceListItem';\nimport { SettingsLayout } from 'apps/settings/components/settings-layout/SettingsLayout';\nimport { useAppleTvClient } from 'apps/settings/hooks/useAppleTvClient';\n\nimport { PairDeviceView } from './pair-device-view/PairDeviceView';\nimport { RenameDevicePopup } from './rename-device-popup/RenameDevicePopup';\nimport { UnpairDevicePopup } from './unpair-device-popup/UnpairDevicePopup';\n\nconst namespace = 'settings.appleTv';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nexport function AppleTvSettingsView(): JSX.Element {\n const { devices, pair, unpair, rename } = useAppleTvClient();\n const [ deviceName, setDeviceName ] = React.useState('');\n const [ pin, setPin ] = React.useState('');\n const [ deviceToRename, setDeviceToRename ] = React.useState<Device>();\n const [ deviceToUnpair, setDeviceToUnpair ] = React.useState<Device>();\n const [ showSpinner, setShowSpinner ] = React.useState(false);\n\n const alerts = useAlerts();\n \n async function onPairDevice() {\n try {\n const trimmedDeviceName = deviceName.trim();\n const trimmedPin = pin.trim();\n\n if (!trimmedDeviceName) return;\n if (!trimmedPin) return;\n\n await pair({ deviceName: trimmedDeviceName, pin: trimmedPin });\n setDeviceName('');\n setPin('');\n \n alerts.success(getPhrase('devicePairingSuccessMessage'));\n } catch (e) {\n console.error(e);\n alerts.error(getPhrase('devicePairingErrorMessage'));\n }\n }\n\n async function onUnpairDevice(deviceId: string) {\n try {\n setShowSpinner(true);\n await unpair(deviceId);\n setDeviceToUnpair(undefined);\n \n alerts.success(getPhrase('deviceUnpairingSuccessMessage'));\n } catch (e) {\n console.error(e);\n alerts.error(getPhrase('deviceUnpairingErrorMessage'));\n } finally {\n setShowSpinner(false);\n }\n }\n\n async function onRenameDevice(deviceId: string, deviceName: string) {\n try {\n setShowSpinner(true);\n await rename({ deviceId, deviceName });\n setDeviceToRename(undefined);\n \n alerts.success(getPhrase('deviceRenamingSuccessMessage'));\n } catch (e) {\n console.error(e);\n alerts.error(getPhrase('deviceRenamingErrorMessage'));\n } finally {\n setShowSpinner(false);\n }\n }\n\n return (\n <SettingsLayout\n heading={getPhrase('heading')}\n breadcrumbs={[getPhrase('heading')]}\n requiredPermissions={PermissionName.ManageIntegrations}\n >\n { deviceToRename && (\n <RenameDevicePopup\n name={deviceToRename.name}\n showSpinner={showSpinner}\n onRename={newName => onRenameDevice(deviceToRename.id, newName)}\n closePopup={() => setDeviceToRename(undefined)}\n />\n )}\n\n { deviceToUnpair && (\n <UnpairDevicePopup\n showSpinner={showSpinner}\n deviceName={deviceToUnpair.name}\n onUnpair={() => onUnpairDevice(deviceToUnpair.id)}\n closePopup={() => setDeviceToUnpair(undefined)}\n />\n )}\n\n <PairDeviceView\n deviceName={deviceName}\n pin={pin}\n onDeviceNameChange={setDeviceName}\n onPinChange={setPin}\n onActivate={onPairDevice}\n />\n\n {devices.length ? <h2 className='h5 mt-4'>{getPhrase('activatedListHeading')}</h2> : null }\n\n <WindowedList\n items={devices}\n rowHeight={55}\n getComponent={(device: Device) => {\n return (\n <DeviceListItem\n key={device.id}\n name={device.name}\n status={device.status}\n onUnpair={() => setDeviceToUnpair(device)}\n // The rename function is a bit janky at the moment, so we'll disable it for now\n // Note: re-pairing the device with a different name works fine..\n // onRename={() => setDeviceToRename(device)}\n />\n );\n }}\n />\n </SettingsLayout>\n );\n}","import React from 'react';\n\nimport { Flight } from 'libs/common/flight';\n\nimport { CustomerRequests } from 'libs/shared/flight-requests/CustomerRequests';\nimport { PlayerIntegrationsRequests } from 'libs/shared/flight-requests/PlayerIntegrationsRequests';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { CurrentUser, Customer } from 'libs/shared/interfaces';\n\nimport { AppleTvClient } from 'projects/player/plugins/devices-plugin/clients/apple-tv/apple-tv-client';\nimport { AppleTvPairRequest, AppleTvRenameRequest, OnlineApiDevice } from 'projects/player/plugins/devices-plugin/clients/apple-tv/apple-tv-interfaces';\nimport { Device } from 'projects/player/plugins/devices-plugin/clients/client-interfaces';\n\ninterface AppleTvClientApi {\n devices: Device[];\n pair: (pairRequest: Omit<AppleTvPairRequest, 'crmId'>) => Promise<OnlineApiDevice>;\n unpair: (id: string) => Promise<void>;\n rename: (renameRequest: AppleTvRenameRequest) => Promise<void>;\n}\n\nexport function useAppleTvClient(): AppleTvClientApi {\n const [ devices, setDevices ] = React.useState<Device[]>([]);\n const client = React.useRef<AppleTvClient>();\n const fetchAsync = Flight.useGetFetchAsync();\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n const customer = Flight.useBasicFetch<Customer>(\n currentUser.data?.isAuthenticated &&\n CustomerRequests.customer(currentUser.data.customerId)\n );\n\n React.useEffect(() => {\n if (!currentUser.data?.isAuthenticated) return;\n if (!customer.hasCompleted) return;\n\n client.current = new AppleTvClient({\n fetchAccessToken: () => fetchAsync(PlayerIntegrationsRequests.getAppleTvAccessToken()),\n userId: parseInt(currentUser.data?.id)\n });\n\n client.current?.on('deviceschange', () => {\n setDevices([...client.current?.getDevices()]);\n });\n\n return () => client.current?.dispose();\n }, [ currentUser.data?.isAuthenticated, customer.hasCompleted ]);\n\n function pair(pairRequest: Omit<AppleTvPairRequest, 'crmId'>) {\n return client.current?.pair({ ...pairRequest, crmId: parseInt(customer.data?.crmId) });\n }\n\n function unpair(id: string) {\n return client.current?.unpair(id);\n }\n\n function rename(renameRequest: AppleTvRenameRequest) {\n return client?.current.renameDevice(renameRequest);\n }\n\n return {\n devices,\n pair,\n unpair,\n rename\n };\n}","/**\n * Wraps the given function, `fn`, with a new function that only invokes `fn`\n * at most once per every `wait` milliseconds.\n *\n * @function\n * @param {Function} fn\n * The function to be throttled.\n *\n * @param {number} wait\n * The number of milliseconds by which to throttle.\n *\n * @return {Function}\n */\nexport const throttle = function(fn: any, wait: any): any {\n let last = window.performance.now();\n\n const throttled = function(...args: any[]): any {\n const now = window.performance.now();\n\n if (now - last >= wait) {\n fn(...args);\n last = now;\n }\n };\n\n return throttled;\n};\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked.\n *\n * Inspired by lodash and underscore implementations.\n *\n * @function\n * @param {Function} func\n * The function to wrap with debounce behavior.\n *\n * @param {number} wait\n * The number of milliseconds to wait after the last invocation.\n *\n * @param {boolean} [leading]\n * When true will also invoke the function immediately upon creation.\n *\n * @param {Object} [context=window]\n * The \"context\" in which the debounced function should debounce. For\n * example, if this function should be tied to a Video.js player,\n * the player can be passed here. Alternatively, defaults to the\n * global `window` object.\n *\n * @return {Function}\n * A debounced function that returns true if the wrapped function was executed immediately.\n */\nexport const debounce = function(\n func: any,\n wait: any,\n leading: any,\n context: any = window\n): (...args: any[]) => boolean {\n let timeout: any;\n\n const cancel = () => {\n context.clearTimeout(timeout);\n timeout = null;\n };\n\n /* eslint-disable consistent-this */\n const debounced = (...args: any[]) => {\n let executed = false;\n\n let later = function() {\n timeout = null;\n later = null;\n func.apply(this, args);\n };\n\n if (!timeout && leading) {\n func.apply(this, args);\n executed = true;\n }\n\n context.clearTimeout(timeout);\n timeout = context.setTimeout(later, wait);\n\n return executed;\n };\n /* eslint-enable consistent-this */\n\n debounced.cancel = cancel;\n\n return debounced;\n};\n\n/**\n * A function that returns undefined.\n *\n * Inspired by lodash implementations.\n */\nexport const noop = function(): undefined {\n return undefined;\n};\n"],"names":["Actions","props","orderedActions","actions","sort","a","b","order","buttonActions","moreActions","forEach","button","push","className","length","map","idx","key","label","appLink","href","onClick","svgName","svgSize","dropdownToggleSvgSize","tooltip","showSpinner","analyticsData","analyticsOptions","openInNewTab","disabled","iconButton","showBorder","customSize","ariaLabel","title","spanHack","sortComponent","dropdownToggleClassName","actionsDropdownClassName","fetchMore","LazyDropdownItems","style","padding","height","width","getDropdownItemClassName","actionClassName","ActionsDropdownItem","FunctionHelper","action","AppLink","SvgContainer","e","preventDefault","AnalyticsHelper","role","tabIndex","onKeyDown","ActionsDropdown","isLazy","some","lazyPlaceholder","currentGroup","dropdownToggleId","RandomHelper","type","id","size","showDivider","undefined","group","Tooltip","defaultProps","S","getPhrase","BreadcrumbItem","ref","breadcrumb","name","active","withBackIcon","trimmedName","slice","Breadcrumbs","breadcrumbs","isMobile","collapse","setCollapse","shouldFocus","setShouldFocus","expandRef","characterLength","reduce","prev","next","current","focus","first","second","secondLast","last","rest","PartialBreadcrumbs","numItems","dangerouslySetInnerHTML","__html","WindowedList","containerHeight","availableHeight","setAvailableHeight","scrollTop","setScrollTop","tableRef","clientHeight","tablePosFromTop","numRows","items","totalRowsVisible","Math","ceil","rowHeight","totalHeight","startIndex","max","floor","endIndex","min","getBoundingClientRect","top","window","pageYOffset","minHeight","overflow","onScroll","currentTarget","autoHeightMin","autoHeightMax","paddingTop","staticComponentAboveRows","index","item","getComponent","getRows","staticComponentBelowRows","OnlineSupportArticle","LiteSupportArticle","DEFAULT_PARTIAL_LOADING_OPTIONS","minWidth","maxWidth","PartialLoadingHelper","getPartialLoadingItems","options","opts","Array","random","namespace","useCanAccessSettings","requiredPermissions","hasPermissions","settingsGroups","currentRoute","application","modules","settingsModule","SettingsLayout","canAccess","replace","i","heading","headingButton","description","children","SettingsOrderedListItem","number","LanguageService","DeviceListItem","status","onUnpair","onRename","DeviceStatusIndicator","statusIndicatorColors","statusIndicatorLabels","color","PairDeviceView","deviceName","pin","onDeviceNameChange","onPinChange","onActivate","Text","phrase","SvgContainer2","ClickViewAvatar","htmlFor","value","onChange","target","autoComplete","placeholder","DivButton","ArticleHelper","src","ImageUrls","RenameDevicePopup","setName","trim","Popup","closePopup","autoFocus","PopupButtons","variant","text","UnpairDevicePopup","AppleTvSettingsView","devices","setDevices","client","fetchAsync","currentUser","UserRequests","customer","data","isAuthenticated","CustomerRequests","customerId","hasCompleted","fetchAccessToken","PlayerIntegrationsRequests","userId","parseInt","on","getDevices","dispose","pair","pairRequest","crmId","unpair","rename","renameRequest","renameDevice","useAppleTvClient","setDeviceName","setPin","deviceToRename","setDeviceToRename","deviceToUnpair","setDeviceToUnpair","setShowSpinner","alerts","PermissionName","newName","deviceId","success","console","error","onRenameDevice","onUnpairDevice","trimmedDeviceName","trimmedPin","device","throttle","fn","wait","performance","now","debounce","func","leading","timeout","context","debounced","args","executed","apply","this","clearTimeout","setTimeout","cancel"],"sourceRoot":""}