@clickview/exchange 0.63.0 → 0.64.0-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 (164) hide show
  1. package/dist/.vite/manifest.json +662 -633
  2. package/dist/bundles.json +1 -1
  3. package/dist/css/DuPOYFVx.chunk.css +1 -0
  4. package/dist/en.json +1 -1
  5. package/dist/scripts/0WVIsJXw.chunk.js +2 -0
  6. package/dist/scripts/0WVIsJXw.chunk.js.map +1 -0
  7. package/dist/scripts/{CoK2sqzN2.chunk.js → B0BkP9zj2.chunk.js} +2 -2
  8. package/dist/scripts/{CoK2sqzN2.chunk.js.map → B0BkP9zj2.chunk.js.map} +1 -1
  9. package/dist/scripts/{dkfSCDWH2.chunk.js → B0CItJhp2.chunk.js} +2 -2
  10. package/dist/scripts/{dkfSCDWH2.chunk.js.map → B0CItJhp2.chunk.js.map} +1 -1
  11. package/dist/scripts/B0NqlFZf.chunk.js +2 -0
  12. package/dist/scripts/B0NqlFZf.chunk.js.map +1 -0
  13. package/dist/scripts/B1i9atik.chunk.js.map +1 -1
  14. package/dist/scripts/{CYFRcx63.chunk.js → B3S7B746.chunk.js} +2 -2
  15. package/dist/scripts/{CYFRcx63.chunk.js.map → B3S7B746.chunk.js.map} +1 -1
  16. package/dist/scripts/{BnbM9YhY.chunk.js → B5B9BCxo.chunk.js} +2 -2
  17. package/dist/scripts/{BnbM9YhY.chunk.js.map → B5B9BCxo.chunk.js.map} +1 -1
  18. package/dist/scripts/{C3K3VtRR2.chunk.js → BKYpYiMb2.chunk.js} +2 -2
  19. package/dist/scripts/{C3K3VtRR2.chunk.js.map → BKYpYiMb2.chunk.js.map} +1 -1
  20. package/dist/scripts/{D3Jgk2dT.chunk.js → BLXI9pzb.chunk.js} +3 -3
  21. package/dist/scripts/{D3Jgk2dT.chunk.js.map → BLXI9pzb.chunk.js.map} +1 -1
  22. package/dist/scripts/{CDXcKno52.chunk.js → BLrooXWI2.chunk.js} +2 -2
  23. package/dist/scripts/{CDXcKno52.chunk.js.map → BLrooXWI2.chunk.js.map} +1 -1
  24. package/dist/scripts/{-x9MMtVv.chunk.js → BQVqfJL8.chunk.js} +2 -2
  25. package/dist/scripts/{-x9MMtVv.chunk.js.map → BQVqfJL8.chunk.js.map} +1 -1
  26. package/dist/scripts/{jErHNuXU2.chunk.js → BU2ULxCS2.chunk.js} +2 -2
  27. package/dist/scripts/{jErHNuXU2.chunk.js.map → BU2ULxCS2.chunk.js.map} +1 -1
  28. package/dist/scripts/{B6EmIhMh.chunk.js → BU_B6gyd.chunk.js} +2 -2
  29. package/dist/scripts/{B6EmIhMh.chunk.js.map → BU_B6gyd.chunk.js.map} +1 -1
  30. package/dist/scripts/{DHV6S1fA2.chunk.js → BbaX1lfI2.chunk.js} +2 -2
  31. package/dist/scripts/{DHV6S1fA2.chunk.js.map → BbaX1lfI2.chunk.js.map} +1 -1
  32. package/dist/scripts/{D6EZoO4S2.chunk.js → Bbaycd7V.chunk.js} +2 -2
  33. package/dist/scripts/Bbaycd7V.chunk.js.map +1 -0
  34. package/dist/scripts/{CeeAb-HT2.chunk.js → BgLWPZ7H2.chunk.js} +2 -2
  35. package/dist/scripts/{CeeAb-HT2.chunk.js.map → BgLWPZ7H2.chunk.js.map} +1 -1
  36. package/dist/scripts/{CjNkj1Q92.chunk.js → Bj6lJgAv2.chunk.js} +1 -1
  37. package/dist/scripts/{CjNkj1Q92.chunk.js.map → Bj6lJgAv2.chunk.js.map} +1 -1
  38. package/dist/scripts/{Da2KHzN02.chunk.js → BoWMmXN02.chunk.js} +2 -2
  39. package/dist/scripts/{Da2KHzN02.chunk.js.map → BoWMmXN02.chunk.js.map} +1 -1
  40. package/dist/scripts/{mkasrghR2.chunk.js → BpzuiXcd2.chunk.js} +2 -2
  41. package/dist/scripts/{mkasrghR2.chunk.js.map → BpzuiXcd2.chunk.js.map} +1 -1
  42. package/dist/scripts/{BEyI0jsC2.chunk.js → Bswd1QrZ2.chunk.js} +2 -2
  43. package/dist/scripts/{BEyI0jsC2.chunk.js.map → Bswd1QrZ2.chunk.js.map} +1 -1
  44. package/dist/scripts/{BaXT2aKo2.chunk.js → ByC5ZDQ-2.chunk.js} +2 -2
  45. package/dist/scripts/{BaXT2aKo2.chunk.js.map → ByC5ZDQ-2.chunk.js.map} +1 -1
  46. package/dist/scripts/{D-ivDlyL.chunk.js → C-jHArp-.chunk.js} +2 -2
  47. package/dist/scripts/{D-ivDlyL.chunk.js.map → C-jHArp-.chunk.js.map} +1 -1
  48. package/dist/scripts/{BrEvIvRP.chunk.js → C3cl5FmM.chunk.js} +2 -2
  49. package/dist/scripts/{BrEvIvRP.chunk.js.map → C3cl5FmM.chunk.js.map} +1 -1
  50. package/dist/scripts/{c2oA1XgG.chunk.js → C4hd6q9D.chunk.js} +2 -2
  51. package/dist/scripts/{c2oA1XgG.chunk.js.map → C4hd6q9D.chunk.js.map} +1 -1
  52. package/dist/scripts/{DsolW3Wd2.chunk.js → C8dtRvC52.chunk.js} +2 -2
  53. package/dist/scripts/{DsolW3Wd2.chunk.js.map → C8dtRvC52.chunk.js.map} +1 -1
  54. package/dist/scripts/{BmEexpMP2.chunk.js → C8lms6Rf2.chunk.js} +1 -1
  55. package/dist/scripts/{BmEexpMP2.chunk.js.map → C8lms6Rf2.chunk.js.map} +1 -1
  56. package/dist/scripts/{s776Po8a2.chunk.js → C9AjegY32.chunk.js} +2 -2
  57. package/dist/scripts/{s776Po8a2.chunk.js.map → C9AjegY32.chunk.js.map} +1 -1
  58. package/dist/scripts/{DgSFdSfV.chunk.js → CBwR65WF.chunk.js} +2 -2
  59. package/dist/scripts/{DgSFdSfV.chunk.js.map → CBwR65WF.chunk.js.map} +1 -1
  60. package/dist/scripts/{D36Shrdb2.chunk.js → CEOaf0tK2.chunk.js} +2 -2
  61. package/dist/scripts/{D36Shrdb2.chunk.js.map → CEOaf0tK2.chunk.js.map} +1 -1
  62. package/dist/scripts/CFdu6aud.chunk.js +2 -0
  63. package/dist/scripts/CFdu6aud.chunk.js.map +1 -0
  64. package/dist/scripts/{CYfnBEtT2.chunk.js → CHojcsxD2.chunk.js} +1 -1
  65. package/dist/scripts/{CYfnBEtT2.chunk.js.map → CHojcsxD2.chunk.js.map} +1 -1
  66. package/dist/scripts/{BibFbDqs.chunk.js → CIxLO-TM.chunk.js} +2 -2
  67. package/dist/scripts/{BibFbDqs.chunk.js.map → CIxLO-TM.chunk.js.map} +1 -1
  68. package/dist/scripts/{CAQAUQMB.chunk.js → CLTKXoqB.chunk.js} +2 -2
  69. package/dist/scripts/{CAQAUQMB.chunk.js.map → CLTKXoqB.chunk.js.map} +1 -1
  70. package/dist/scripts/{DGy73Ett2.chunk.js → CNuGo1LQ2.chunk.js} +2 -2
  71. package/dist/scripts/{DGy73Ett2.chunk.js.map → CNuGo1LQ2.chunk.js.map} +1 -1
  72. package/dist/scripts/{DsA2RTbF.chunk.js → CQKpvTZY.chunk.js} +2 -2
  73. package/dist/scripts/{DsA2RTbF.chunk.js.map → CQKpvTZY.chunk.js.map} +1 -1
  74. package/dist/scripts/{CL9-CkqC2.chunk.js → CRAcJqQV2.chunk.js} +2 -2
  75. package/dist/scripts/{CL9-CkqC2.chunk.js.map → CRAcJqQV2.chunk.js.map} +1 -1
  76. package/dist/scripts/{C1guWVFU2.chunk.js → CSB18s8X2.chunk.js} +2 -2
  77. package/dist/scripts/{C1guWVFU2.chunk.js.map → CSB18s8X2.chunk.js.map} +1 -1
  78. package/dist/scripts/CWZvMFYz.chunk.js +2 -0
  79. package/dist/scripts/CWZvMFYz.chunk.js.map +1 -0
  80. package/dist/scripts/{4oWF2EyV2.chunk.js → CZrMa6z92.chunk.js} +2 -2
  81. package/dist/scripts/{4oWF2EyV2.chunk.js.map → CZrMa6z92.chunk.js.map} +1 -1
  82. package/dist/scripts/{CAJOpkKZ.chunk.js → CfCxi56P.chunk.js} +2 -2
  83. package/dist/scripts/{CAJOpkKZ.chunk.js.map → CfCxi56P.chunk.js.map} +1 -1
  84. package/dist/scripts/{B0jhFNam2.chunk.js → Chib9pDe2.chunk.js} +3 -3
  85. package/dist/scripts/{B0jhFNam2.chunk.js.map → Chib9pDe2.chunk.js.map} +1 -1
  86. package/dist/scripts/{DUCTNoXj.chunk.js → CiEI8sTG.chunk.js} +2 -2
  87. package/dist/scripts/{DUCTNoXj.chunk.js.map → CiEI8sTG.chunk.js.map} +1 -1
  88. package/dist/scripts/{CAoPaL8M.chunk.js → CmIbuK_d.chunk.js} +2 -2
  89. package/dist/scripts/{CAoPaL8M.chunk.js.map → CmIbuK_d.chunk.js.map} +1 -1
  90. package/dist/scripts/{BTsePUCN2.chunk.js → CsQ6WMM92.chunk.js} +2 -2
  91. package/dist/scripts/{BTsePUCN2.chunk.js.map → CsQ6WMM92.chunk.js.map} +1 -1
  92. package/dist/scripts/{BHzUOyzG.chunk.js → Cxq38DxA.chunk.js} +2 -2
  93. package/dist/scripts/{BHzUOyzG.chunk.js.map → Cxq38DxA.chunk.js.map} +1 -1
  94. package/dist/scripts/{Cllrumah2.chunk.js → D0TX42le2.chunk.js} +2 -2
  95. package/dist/scripts/{Cllrumah2.chunk.js.map → D0TX42le2.chunk.js.map} +1 -1
  96. package/dist/scripts/{B7sWLg9v2.chunk.js → D8x02prV2.chunk.js} +2 -2
  97. package/dist/scripts/{B7sWLg9v2.chunk.js.map → D8x02prV2.chunk.js.map} +1 -1
  98. package/dist/scripts/{CCvXN2-C.chunk.js → DAQxdC_x.chunk.js} +2 -2
  99. package/dist/scripts/{CCvXN2-C.chunk.js.map → DAQxdC_x.chunk.js.map} +1 -1
  100. package/dist/scripts/{DOuiFwIH2.chunk.js → DGBrggmU2.chunk.js} +2 -2
  101. package/dist/scripts/{DOuiFwIH2.chunk.js.map → DGBrggmU2.chunk.js.map} +1 -1
  102. package/dist/scripts/{CSbvS-Cl.chunk.js → DI6eYZuV.chunk.js} +2 -2
  103. package/dist/scripts/{CSbvS-Cl.chunk.js.map → DI6eYZuV.chunk.js.map} +1 -1
  104. package/dist/scripts/DIsOuUSO2.chunk.js +2 -0
  105. package/dist/scripts/DIsOuUSO2.chunk.js.map +1 -0
  106. package/dist/scripts/{B3tq0EFi2.chunk.js → DN_CuUia2.chunk.js} +2 -2
  107. package/dist/scripts/{B3tq0EFi2.chunk.js.map → DN_CuUia2.chunk.js.map} +1 -1
  108. package/dist/scripts/{DRZvc_n5.chunk.js → DT626M1P.chunk.js} +3 -3
  109. package/dist/scripts/{DRZvc_n5.chunk.js.map → DT626M1P.chunk.js.map} +1 -1
  110. package/dist/scripts/DWVn5hOy2.chunk.js +2 -0
  111. package/dist/scripts/DWVn5hOy2.chunk.js.map +1 -0
  112. package/dist/scripts/DZ85IleM.chunk.js +2 -0
  113. package/dist/scripts/DZ85IleM.chunk.js.map +1 -0
  114. package/dist/scripts/{CsrTrVKj.chunk.js → DarQpJDR.chunk.js} +2 -2
  115. package/dist/scripts/{CsrTrVKj.chunk.js.map → DarQpJDR.chunk.js.map} +1 -1
  116. package/dist/scripts/{CGLWqKaa.chunk.js → DfWNECxe.chunk.js} +2 -2
  117. package/dist/scripts/{CGLWqKaa.chunk.js.map → DfWNECxe.chunk.js.map} +1 -1
  118. package/dist/scripts/{BEgLlK2Z2.chunk.js → Dfi_iXFg2.chunk.js} +2 -2
  119. package/dist/scripts/{BEgLlK2Z2.chunk.js.map → Dfi_iXFg2.chunk.js.map} +1 -1
  120. package/dist/scripts/{8vJGuJF-2.chunk.js → DjMOZfNJ2.chunk.js} +2 -2
  121. package/dist/scripts/{8vJGuJF-2.chunk.js.map → DjMOZfNJ2.chunk.js.map} +1 -1
  122. package/dist/scripts/{DGRBUJ6T2.chunk.js → DjUmgrOk2.chunk.js} +2 -2
  123. package/dist/scripts/{DGRBUJ6T2.chunk.js.map → DjUmgrOk2.chunk.js.map} +1 -1
  124. package/dist/scripts/DjdW7gMz.chunk.js +2 -0
  125. package/dist/scripts/DjdW7gMz.chunk.js.map +1 -0
  126. package/dist/scripts/{CAOBwDbU.chunk.js → DksIM59B.chunk.js} +2 -2
  127. package/dist/scripts/{CAOBwDbU.chunk.js.map → DksIM59B.chunk.js.map} +1 -1
  128. package/dist/scripts/{aXgcldgY.chunk.js → DpARg1IG.chunk.js} +2 -2
  129. package/dist/scripts/{aXgcldgY.chunk.js.map → DpARg1IG.chunk.js.map} +1 -1
  130. package/dist/scripts/{DM0JzOpR2.chunk.js → ErGRzsV12.chunk.js} +2 -2
  131. package/dist/scripts/{DM0JzOpR2.chunk.js.map → ErGRzsV12.chunk.js.map} +1 -1
  132. package/dist/scripts/{UK8sD-oL.chunk.js → GSm09vBX.chunk.js} +2 -2
  133. package/dist/scripts/{UK8sD-oL.chunk.js.map → GSm09vBX.chunk.js.map} +1 -1
  134. package/dist/scripts/{DDO16-at.chunk.js → HkF7AIye.chunk.js} +2 -2
  135. package/dist/scripts/{DDO16-at.chunk.js.map → HkF7AIye.chunk.js.map} +1 -1
  136. package/dist/scripts/{BI2S4EFA.chunk.js → I1XD6JKC.chunk.js} +2 -2
  137. package/dist/scripts/{BI2S4EFA.chunk.js.map → I1XD6JKC.chunk.js.map} +1 -1
  138. package/dist/scripts/MGxL1vUn.chunk.js +2 -0
  139. package/dist/scripts/MGxL1vUn.chunk.js.map +1 -0
  140. package/dist/scripts/{CBQgY9MD2.chunk.js → Tj-NqZ4q2.chunk.js} +1 -1
  141. package/dist/scripts/{CBQgY9MD2.chunk.js.map → Tj-NqZ4q2.chunk.js.map} +1 -1
  142. package/dist/scripts/{app-lnmpv5W4.js → app-fNhmX-xT.js} +4 -4
  143. package/dist/scripts/app-fNhmX-xT.js.map +1 -0
  144. package/dist/scripts/{Bu37Hprb2.chunk.js → fyOxYVvI2.chunk.js} +1 -1
  145. package/dist/scripts/{Bu37Hprb2.chunk.js.map → fyOxYVvI2.chunk.js.map} +1 -1
  146. package/dist/scripts/{Dsmr6Wly.chunk.js → gsffdqjU.chunk.js} +2 -2
  147. package/dist/scripts/{Dsmr6Wly.chunk.js.map → gsffdqjU.chunk.js.map} +1 -1
  148. package/package.json +1 -1
  149. package/dist/scripts/5Z0rGCy2.chunk.js +0 -2
  150. package/dist/scripts/5Z0rGCy2.chunk.js.map +0 -1
  151. package/dist/scripts/BjzONPz9.chunk.js +0 -2
  152. package/dist/scripts/BjzONPz9.chunk.js.map +0 -1
  153. package/dist/scripts/BuSq2beZ2.chunk.js +0 -2
  154. package/dist/scripts/BuSq2beZ2.chunk.js.map +0 -1
  155. package/dist/scripts/CHQN7xOX.chunk.js +0 -2
  156. package/dist/scripts/CHQN7xOX.chunk.js.map +0 -1
  157. package/dist/scripts/CuE3TVwa.chunk.js +0 -2
  158. package/dist/scripts/CuE3TVwa.chunk.js.map +0 -1
  159. package/dist/scripts/D6EZoO4S2.chunk.js.map +0 -1
  160. package/dist/scripts/D_PyfoSL.chunk.js +0 -2
  161. package/dist/scripts/D_PyfoSL.chunk.js.map +0 -1
  162. package/dist/scripts/DklryBsJ.chunk.js +0 -2
  163. package/dist/scripts/DklryBsJ.chunk.js.map +0 -1
  164. package/dist/scripts/app-lnmpv5W4.js.map +0 -1
@@ -1,2 +1,2 @@
1
- import{C as e,D as t,fn as n,vt as r}from"./B1i9atik.chunk.js";import{n as i,t as a,v as o}from"./NpQVkKE2.chunk.js";import{C as s,M as c,T as l,w as u}from"./gJSjbaVK.chunk.js";import{t as d}from"./BwpDSW6-.chunk.js";import{n as f}from"./B6rKNJWQ.chunk.js";import{t as p}from"./Y2Q2F5X6.chunk.js";import{T as m}from"./app-lnmpv5W4.js";import{t as h}from"./B7KaaLVd.chunk.js";import{r as g}from"./DyUX82Kv.chunk.js";import{t as _}from"./CnBbU5eq.chunk.js";import{t as v}from"./Dlvd6RQv.chunk.js";var y=n(c()),b=n(t()),x=e(),S=b.forwardRef(({bsPrefix:e,className:t,as:n=`div`,...r},i)=>{let a=l(e,`row`),o=s(),c=u(),d=`${a}-cols`,f=[];return o.forEach(e=>{let t=r[e];delete r[e];let n;typeof t==`object`&&t?{cols:n}=t:n=t;let i=e===c?``:`-${e}`;n!=null&&f.push(`${d}${i}-${n}`)}),(0,x.jsx)(n,{ref:i,...r,className:(0,y.default)(t,a,...f)})});S.displayName=`Row`;var C=400;function w(e){let t=()=>{if(!e.isFetching){if(e.scrollContainer){let{scrollContainer:t}=e;if(t.getBoundingClientRect().height+t.scrollTop<t.scrollHeight-C)return}else if(window.innerHeight+document.documentElement.scrollTop<document.documentElement.scrollHeight-C)return;e.fetchNextPage()}};(0,b.useEffect)(()=>{let n=o.throttle(t,200),r=e.scrollContainer||window;return e.hasMore&&r.addEventListener(`scroll`,n),()=>r.removeEventListener(`scroll`,n)},[e.hasMore,e.fetchNextPage,e.scrollContainer])}function T(e,t,n,i,a,s){let[c,l]=(0,b.useState)(0),u=t;function d(t){if(!e)return null;let n=e(t);return n?n.key:null}let f=_(d,i,a);function p(){if(!(!t||!e||!f))return l(e=>e+1),u(f.nextCursor)}return w({fetchNextPage:p,hasMore:!!f?.nextCursor,isFetching:f?.isFetching,scrollContainer:s}),(0,b.useEffect)(()=>{f&&f.shouldInitialFetch&&t&&(u(),l(e=>e+1))},[f?.shouldInitialFetch,t]),(0,b.useEffect)(()=>{if(!f?.statusCode||!o.isFunction(n))return;let e=+f.statusCode?.toString()?.substr(0,1);e!==r.ClientError&&e!==r.ServerError||n(c,f.statusCode)},[f?.statusCode]),{items:f?.items,hasMore:!!f?.nextCursor,nextCursor:f?.nextCursor,isFetching:f?.isFetching,totalItems:f?.totalItems,hasFirstPageCompleted:f?.hasFirstPageCompleted}}var E={container:`_container_1kfhe_1`,spinner:`_spinner_1kfhe_4`};D.defaultProps={fetchOnScroll:!1};function D(e){let[t,n]=g();return b.useEffect(()=>{e.fetchOnScroll&&(!n||e.isFetching||e.fetchNext?.(e.nextCursor))},[n,e.isFetching]),(0,x.jsx)(`div`,{className:`p-3 text-center ${E.container}`,children:e.isFetching?(0,x.jsx)(f,{as:`span`,animation:`border`,role:`status`,className:E.spinner}):(0,x.jsx)(`div`,{ref:t,children:(0,x.jsx)(a,{svg:v,className:`svg-container cursor-pointer`,size:i.Large,onClick:()=>e.fetchNext?.(e.nextCursor)})})})}var O={getThumbnailColumns(){return{xs:12,sm:5,lg:3}},getDetailsColumns(){return{xs:12,sm:7,lg:9}},getSize(e,t){return e.sm?`sm`:t||`md`},getThumbnailColSize(e){return e?10:12}},k={partialOptions:`_partialOptions_157xw_1`,partialName:`_partialName_157xw_4`,partialDescription:`_partialDescription_157xw_8`,partialThumbnail:`_partialThumbnail_157xw_12`,partialDragHandle:`_partialDragHandle_157xw_15`};A.defaultProps={numVideos:15};function A(e){return(0,x.jsx)(x.Fragment,{children:Array(e.numVideos).fill(null).map((t,n)=>(0,x.jsxs)(`div`,{className:`d-flex`,children:[e.allowBulkActions&&(0,x.jsx)(`div`,{className:`form-check pe-3 pe-sm-2 mx-0 mx-md-2`}),(0,x.jsx)(j,{...e})]},n))})}function j(e){let t=m(),n=O.getSize(t,`md`)===`sm`,r=e.withReordering&&!t.xs;return(0,x.jsxs)(S,{className:`${n?``:`py-2`} flex-grow-1`,children:[(0,x.jsx)(d,{...O.getThumbnailColumns(),className:`flex-column align-items-flex-start ${n?`pb-2 pe-1`:`mb-1 pe-3 pe-md-2`}`,children:(0,x.jsxs)(S,{children:[!!r&&(0,x.jsx)(`div`,{className:`d-flex align-items-center justify-content-center col-2`,children:(0,x.jsx)(`div`,{className:`partial-loading-background ${k.partialDragHandle}`})}),(0,x.jsx)(d,{xs:O.getThumbnailColSize(r),children:(0,x.jsx)(`div`,{className:`partial-loading-background ${n?`rounded`:`rounded-3`} ${k.partialThumbnail}`})})]})}),(0,x.jsxs)(d,{...O.getDetailsColumns(),className:n?`pb-2`:`px-2`,children:[(0,x.jsx)(`div`,{className:`partial-loading-background mb-1 ${k.partialName}`}),(0,x.jsx)(`div`,{className:`partial-loading-background ${k.partialDescription}`})]})]})}M.defaultProps={checked:!1,label:``,className:``};function M(e){let{isLabelEllipsis:t}=e,n=b.useRef(null);return b.useEffect(()=>{if(n.current){if(e.checked){n.current.indeterminate&&(n.current.indeterminate=!1);return}if(e.indeterminate&&!n.current.indeterminate){n.current.indeterminate=!0;return}!e.indeterminate&&n.current.indeterminate&&(n.current.indeterminate=!1)}},[n.current,e.indeterminate,e.checked]),(0,x.jsxs)(`div`,{className:`form-check pe-2 ${e.className}`,children:[(0,x.jsx)(`input`,{ref:n,type:`checkbox`,className:`${e.inputClassName} form-check-input`,id:e.id,name:e.name,checked:e.checked,onChange:e.onChange,disabled:e.disabled,"aria-checked":e.checked,"aria-label":e.ariaLabel}),e.label&&(0,x.jsx)(`label`,{className:`form-check-label cursor-pointer align-top`,htmlFor:e.id,children:(0,x.jsx)(`span`,{className:`${t?`clamp-1`:``}`,children:e.label})})]})}function N(e){return(0,x.jsx)(`svg`,{...e,children:(0,x.jsx)(`path`,{fill:`currentColor`,d:`M16.863 20c-.662 0-1.21-.567-1.21-1.252s.548-1.252 1.21-1.252c.663 0 1.21.567 1.21 1.252S17.527 20 16.864 20m0-1.441a.183.183 0 0 0-.182.189c0 .118.068.189.182.189.115 0 .183-.071.183-.19a.183.183 0 0 0-.183-.188m0-.118a.516.516 0 0 1-.502-.52v-6.19L11.75 9.158a.53.53 0 0 1-.205-.71c.137-.26.456-.354.685-.212l4.886 2.717a.57.57 0 0 1 .274.473v6.496a.52.52 0 0 1-.526.52m-4.908-4.205a.8.8 0 0 1-.229-.048L2.296 9.51A.55.55 0 0 1 2 9.014c0-.212.114-.401.297-.472l9.52-4.489a.47.47 0 0 1 .434 0l9.452 4.489a.55.55 0 0 1 .297.472.49.49 0 0 1-.297.473l-9.52 4.701a.8.8 0 0 1-.228.048m-8.22-5.198 8.22 4.087 8.288-4.087-8.22-3.898zm8.151 8.41c-4.749 0-6.644-2.905-6.712-3.047a.7.7 0 0 1-.092-.284V10.81c0-.283.229-.52.503-.52s.502.237.502.52v3.142c.388.496 2.077 2.434 5.776 2.434 3.653 0 5.548-1.938 6.005-2.457v-2.93c0-.284.228-.52.502-.52s.502.236.502.52v3.118a.6.6 0 0 1-.091.307c-.046.142-2.192 3.024-6.895 3.024`})})}function P(){let e=p(h.XS),t=p(h.SM),n=p(h.MD),r=p(h.LG),i=p(h.XL),a=p(h.XXL),o=h.LG;return e&&(o=h.XS),t&&(o=h.SM),n&&(o=h.MD),r&&(o=h.LG),i&&(o=h.XL),a&&(o=h.XXL),o}export{O as a,S as c,A as i,N as n,D as o,M as r,T as s,P as t};
2
- //# sourceMappingURL=CYFRcx63.chunk.js.map
1
+ import{C as e,D as t,fn as n,vt as r}from"./B1i9atik.chunk.js";import{n as i,t as a,v as o}from"./NpQVkKE2.chunk.js";import{C as s,M as c,T as l,w as u}from"./gJSjbaVK.chunk.js";import{t as d}from"./BwpDSW6-.chunk.js";import{n as f}from"./B6rKNJWQ.chunk.js";import{t as p}from"./Y2Q2F5X6.chunk.js";import{T as m}from"./app-fNhmX-xT.js";import{t as h}from"./B7KaaLVd.chunk.js";import{r as g}from"./DyUX82Kv.chunk.js";import{t as _}from"./CnBbU5eq.chunk.js";import{t as v}from"./Dlvd6RQv.chunk.js";var y=n(c()),b=n(t()),x=e(),S=b.forwardRef(({bsPrefix:e,className:t,as:n=`div`,...r},i)=>{let a=l(e,`row`),o=s(),c=u(),d=`${a}-cols`,f=[];return o.forEach(e=>{let t=r[e];delete r[e];let n;typeof t==`object`&&t?{cols:n}=t:n=t;let i=e===c?``:`-${e}`;n!=null&&f.push(`${d}${i}-${n}`)}),(0,x.jsx)(n,{ref:i,...r,className:(0,y.default)(t,a,...f)})});S.displayName=`Row`;var C=400;function w(e){let t=()=>{if(!e.isFetching){if(e.scrollContainer){let{scrollContainer:t}=e;if(t.getBoundingClientRect().height+t.scrollTop<t.scrollHeight-C)return}else if(window.innerHeight+document.documentElement.scrollTop<document.documentElement.scrollHeight-C)return;e.fetchNextPage()}};(0,b.useEffect)(()=>{let n=o.throttle(t,200),r=e.scrollContainer||window;return e.hasMore&&r.addEventListener(`scroll`,n),()=>r.removeEventListener(`scroll`,n)},[e.hasMore,e.fetchNextPage,e.scrollContainer])}function T(e,t,n,i,a,s){let[c,l]=(0,b.useState)(0),u=t;function d(t){if(!e)return null;let n=e(t);return n?n.key:null}let f=_(d,i,a);function p(){if(!(!t||!e||!f))return l(e=>e+1),u(f.nextCursor)}return w({fetchNextPage:p,hasMore:!!f?.nextCursor,isFetching:f?.isFetching,scrollContainer:s}),(0,b.useEffect)(()=>{f&&f.shouldInitialFetch&&t&&(u(),l(e=>e+1))},[f?.shouldInitialFetch,t]),(0,b.useEffect)(()=>{if(!f?.statusCode||!o.isFunction(n))return;let e=+f.statusCode?.toString()?.substr(0,1);e!==r.ClientError&&e!==r.ServerError||n(c,f.statusCode)},[f?.statusCode]),{items:f?.items,hasMore:!!f?.nextCursor,nextCursor:f?.nextCursor,isFetching:f?.isFetching,totalItems:f?.totalItems,hasFirstPageCompleted:f?.hasFirstPageCompleted}}var E={container:`_container_1kfhe_1`,spinner:`_spinner_1kfhe_4`};D.defaultProps={fetchOnScroll:!1};function D(e){let[t,n]=g();return b.useEffect(()=>{e.fetchOnScroll&&(!n||e.isFetching||e.fetchNext?.(e.nextCursor))},[n,e.isFetching]),(0,x.jsx)(`div`,{className:`p-3 text-center ${E.container}`,children:e.isFetching?(0,x.jsx)(f,{as:`span`,animation:`border`,role:`status`,className:E.spinner}):(0,x.jsx)(`div`,{ref:t,children:(0,x.jsx)(a,{svg:v,className:`svg-container cursor-pointer`,size:i.Large,onClick:()=>e.fetchNext?.(e.nextCursor)})})})}var O={getThumbnailColumns(){return{xs:12,sm:5,lg:3}},getDetailsColumns(){return{xs:12,sm:7,lg:9}},getSize(e,t){return e.sm?`sm`:t||`md`},getThumbnailColSize(e){return e?10:12}},k={partialOptions:`_partialOptions_157xw_1`,partialName:`_partialName_157xw_4`,partialDescription:`_partialDescription_157xw_8`,partialThumbnail:`_partialThumbnail_157xw_12`,partialDragHandle:`_partialDragHandle_157xw_15`};A.defaultProps={numVideos:15};function A(e){return(0,x.jsx)(x.Fragment,{children:Array(e.numVideos).fill(null).map((t,n)=>(0,x.jsxs)(`div`,{className:`d-flex`,children:[e.allowBulkActions&&(0,x.jsx)(`div`,{className:`form-check pe-3 pe-sm-2 mx-0 mx-md-2`}),(0,x.jsx)(j,{...e})]},n))})}function j(e){let t=m(),n=O.getSize(t,`md`)===`sm`,r=e.withReordering&&!t.xs;return(0,x.jsxs)(S,{className:`${n?``:`py-2`} flex-grow-1`,children:[(0,x.jsx)(d,{...O.getThumbnailColumns(),className:`flex-column align-items-flex-start ${n?`pb-2 pe-1`:`mb-1 pe-3 pe-md-2`}`,children:(0,x.jsxs)(S,{children:[!!r&&(0,x.jsx)(`div`,{className:`d-flex align-items-center justify-content-center col-2`,children:(0,x.jsx)(`div`,{className:`partial-loading-background ${k.partialDragHandle}`})}),(0,x.jsx)(d,{xs:O.getThumbnailColSize(r),children:(0,x.jsx)(`div`,{className:`partial-loading-background ${n?`rounded`:`rounded-3`} ${k.partialThumbnail}`})})]})}),(0,x.jsxs)(d,{...O.getDetailsColumns(),className:n?`pb-2`:`px-2`,children:[(0,x.jsx)(`div`,{className:`partial-loading-background mb-1 ${k.partialName}`}),(0,x.jsx)(`div`,{className:`partial-loading-background ${k.partialDescription}`})]})]})}M.defaultProps={checked:!1,label:``,className:``};function M(e){let{isLabelEllipsis:t}=e,n=b.useRef(null);return b.useEffect(()=>{if(n.current){if(e.checked){n.current.indeterminate&&(n.current.indeterminate=!1);return}if(e.indeterminate&&!n.current.indeterminate){n.current.indeterminate=!0;return}!e.indeterminate&&n.current.indeterminate&&(n.current.indeterminate=!1)}},[n.current,e.indeterminate,e.checked]),(0,x.jsxs)(`div`,{className:`form-check pe-2 ${e.className}`,children:[(0,x.jsx)(`input`,{ref:n,type:`checkbox`,className:`${e.inputClassName} form-check-input`,id:e.id,name:e.name,checked:e.checked,onChange:e.onChange,disabled:e.disabled,"aria-checked":e.checked,"aria-label":e.ariaLabel}),e.label&&(0,x.jsx)(`label`,{className:`form-check-label cursor-pointer align-top`,htmlFor:e.id,children:(0,x.jsx)(`span`,{className:`${t?`clamp-1`:``}`,children:e.label})})]})}function N(e){return(0,x.jsx)(`svg`,{...e,children:(0,x.jsx)(`path`,{fill:`currentColor`,d:`M16.863 20c-.662 0-1.21-.567-1.21-1.252s.548-1.252 1.21-1.252c.663 0 1.21.567 1.21 1.252S17.527 20 16.864 20m0-1.441a.183.183 0 0 0-.182.189c0 .118.068.189.182.189.115 0 .183-.071.183-.19a.183.183 0 0 0-.183-.188m0-.118a.516.516 0 0 1-.502-.52v-6.19L11.75 9.158a.53.53 0 0 1-.205-.71c.137-.26.456-.354.685-.212l4.886 2.717a.57.57 0 0 1 .274.473v6.496a.52.52 0 0 1-.526.52m-4.908-4.205a.8.8 0 0 1-.229-.048L2.296 9.51A.55.55 0 0 1 2 9.014c0-.212.114-.401.297-.472l9.52-4.489a.47.47 0 0 1 .434 0l9.452 4.489a.55.55 0 0 1 .297.472.49.49 0 0 1-.297.473l-9.52 4.701a.8.8 0 0 1-.228.048m-8.22-5.198 8.22 4.087 8.288-4.087-8.22-3.898zm8.151 8.41c-4.749 0-6.644-2.905-6.712-3.047a.7.7 0 0 1-.092-.284V10.81c0-.283.229-.52.503-.52s.502.237.502.52v3.142c.388.496 2.077 2.434 5.776 2.434 3.653 0 5.548-1.938 6.005-2.457v-2.93c0-.284.228-.52.502-.52s.502.236.502.52v3.118a.6.6 0 0 1-.091.307c-.046.142-2.192 3.024-6.895 3.024`})})}function P(){let e=p(h.XS),t=p(h.SM),n=p(h.MD),r=p(h.LG),i=p(h.XL),a=p(h.XXL),o=h.LG;return e&&(o=h.XS),t&&(o=h.SM),n&&(o=h.MD),r&&(o=h.LG),i&&(o=h.XL),a&&(o=h.XXL),o}export{O as a,S as c,A as i,N as n,D as o,M as r,T as s,P as t};
2
+ //# sourceMappingURL=B3S7B746.chunk.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"CYFRcx63.chunk.js","names":[],"sources":["../../../../../node_modules/react-bootstrap/esm/Row.js","../../../../libs/shared/src/hooks/UseInfiniteScroll.ts","../../../../libs/shared/src/hooks/UseInfiniteList.ts","../../../../libs/shared/src/components/infinite-scroll-footer/infinite-scroll-footer.module.scss","../../../../libs/shared/src/components/infinite-scroll-footer/InfiniteScrollFooter.tsx","../../../../libs/shared/src/components/video-list/VideoListHelper.tsx","../../../../libs/shared/src/components/video-list/partial-loading/partial-video-list.module.scss","../../../../libs/shared/src/components/video-list/partial-loading/PartialVideoList.tsx","../../../../libs/shared/src/components/forms/form-checkbox/Checkbox.tsx","../../../../libs/shared/src/images/svg/objects/GraduationCapSvg.tsx","../../../../libs/shared/src/hooks/UseGetMediaQueryString.ts"],"sourcesContent":["\"use client\";\n\nimport classNames from 'classnames';\nimport * as React from 'react';\nimport { useBootstrapPrefix, useBootstrapBreakpoints, useBootstrapMinBreakpoint } from './ThemeProvider';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst Row = /*#__PURE__*/React.forwardRef(({\n bsPrefix,\n className,\n // Need to define the default \"as\" during prop destructuring to be compatible with styled-components github.com/react-bootstrap/react-bootstrap/issues/3595\n as: Component = 'div',\n ...props\n}, ref) => {\n const decoratedBsPrefix = useBootstrapPrefix(bsPrefix, 'row');\n const breakpoints = useBootstrapBreakpoints();\n const minBreakpoint = useBootstrapMinBreakpoint();\n const sizePrefix = `${decoratedBsPrefix}-cols`;\n const classes = [];\n breakpoints.forEach(brkPoint => {\n const propValue = props[brkPoint];\n delete props[brkPoint];\n let cols;\n if (propValue != null && typeof propValue === 'object') {\n ({\n cols\n } = propValue);\n } else {\n cols = propValue;\n }\n const infix = brkPoint !== minBreakpoint ? `-${brkPoint}` : '';\n if (cols != null) classes.push(`${sizePrefix}${infix}-${cols}`);\n });\n return /*#__PURE__*/_jsx(Component, {\n ref: ref,\n ...props,\n className: classNames(className, decoratedBsPrefix, ...classes)\n });\n});\nRow.displayName = 'Row';\nexport default Row;","import { useEffect } from 'react';\n\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\n\nconst SCROLL_TOLERANCE = 400; // value in px\n\ninterface UseInfiniteScrollOptions {\n fetchNextPage: () => void;\n hasMore: boolean;\n isFetching: boolean;\n scrollContainer?: HTMLElement;\n}\n\nexport function useInfiniteScroll(options: UseInfiniteScrollOptions): void {\n const handleScroll = (): void => {\n if (options.isFetching)\n return;\n\n if (!options.scrollContainer) {\n const currentScrollHeight = window.innerHeight + document.documentElement.scrollTop;\n \n const totalHeight = document.documentElement.scrollHeight - SCROLL_TOLERANCE;\n \n if (currentScrollHeight < totalHeight)\n return;\n } else {\n const { scrollContainer } = options;\n const currentScrollHeight = scrollContainer.getBoundingClientRect().height + scrollContainer.scrollTop;\n \n const totalHeight = scrollContainer.scrollHeight - SCROLL_TOLERANCE;\n \n if (currentScrollHeight < totalHeight)\n return;\n }\n\n options.fetchNextPage();\n };\n\n useEffect(() => {\n const onScroll = FunctionHelper.throttle(handleScroll, 200);\n\n const scrollContainer = options.scrollContainer || window;\n\n if (options.hasMore)\n scrollContainer.addEventListener('scroll', onScroll);\n\n return () => scrollContainer.removeEventListener('scroll', onScroll);\n }, [ options.hasMore, options.fetchNextPage, options.scrollContainer ]);\n}\n","import { useEffect, useState } from 'react';\n\nimport { HttpStatus, HttpStatusClass } from 'libs/common/backbone/enums/HttpStatus';\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\nimport { Flight } from 'libs/common/flight';\n\nimport { BaseObject, BasePaginatedCollection } from 'libs/shared/interfaces';\n\nimport { useInfiniteScroll } from './UseInfiniteScroll';\nimport { useSelectAllPages } from './UseSelectAllPages';\n\nexport interface UseInfiniteListResult<T extends BaseObject> {\n items: T[];\n hasMore: boolean;\n isFetching: boolean;\n nextCursor: string;\n totalItems?: number;\n hasFirstPageCompleted: boolean;\n}\n\n/**\n * Hook to extract an infinite list from the application state,\n * save it locally in state and only update when new data\n * is fetched.\n * \n * @param getRequest - callback function to get the request for each page.\n * Can be false if the request requires data that hasn't yet been fetched - e.g. user id.\n * \n * @param fetchNext - callback function to fetch a page.\n * Can be false if the request requires data that hasn't yet been fetched - e.g. user id.\n */\nexport function useInfiniteList<TObject = BaseObject, TResponse = BasePaginatedCollection<TObject>>(\n getRequest: ((cursor?: string) => Flight.Request) | false,\n fetchNext: ((cursor?: string) => void) | false,\n onError?: (pageNumber: number, statusCode: HttpStatus) => void,\n getItems?: (responseData: TResponse) => TObject[],\n getCursor?: (responseData: TResponse) => string,\n scrollContainer?: HTMLElement\n): UseInfiniteListResult<TObject> {\n const [ pagesFetched, setPagesFetched ] = useState(0);\n\n const fetchNextFn = fetchNext as (cursor?: string) => void;\n\n function getKey(cursor?: string): string {\n if (!getRequest)\n return null;\n\n const request = getRequest(cursor);\n\n if (!request)\n return null;\n\n return request.key;\n }\n\n const response = useSelectAllPages<TObject, TResponse>(\n getKey,\n getItems,\n getCursor\n );\n\n function fetchNextPage(): void {\n if (!fetchNext || !getRequest || !response)\n return;\n\n setPagesFetched(currentVal => currentVal + 1);\n return fetchNextFn(response.nextCursor);\n }\n\n useInfiniteScroll({\n fetchNextPage,\n hasMore: !!response?.nextCursor,\n isFetching: response?.isFetching,\n scrollContainer\n });\n\n useEffect(() => {\n if (!response)\n return;\n\n if (response.shouldInitialFetch && fetchNext) {\n fetchNextFn();\n setPagesFetched(currentVal => currentVal + 1);\n }\n }, [ response?.shouldInitialFetch, fetchNext ]);\n\n useEffect(() => {\n if (!response?.statusCode || !FunctionHelper.isFunction(onError))\n return;\n\n const httpStatusClass: HttpStatusClass = +(response.statusCode?.toString()?.substr(0, 1));\n\n if (httpStatusClass !== HttpStatusClass.ClientError && httpStatusClass !== HttpStatusClass.ServerError)\n return;\n\n onError(pagesFetched, response.statusCode);\n }, [response?.statusCode]);\n\n return {\n items: response?.items,\n hasMore: !!response?.nextCursor,\n nextCursor: response?.nextCursor,\n isFetching: response?.isFetching,\n totalItems: response?.totalItems,\n hasFirstPageCompleted: response?.hasFirstPageCompleted\n };\n}\n",":local {\n .container {\n color: $gray-900;\n }\n\n .spinner {\n width: $cv-svg-size-md;\n height: $cv-svg-size-md;\n }\n}","import * as React from 'react';\nimport { Spinner } from 'react-bootstrap';\nimport { useInView } from 'react-intersection-observer';\n\nimport { SvgContainer, SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\nimport { ChevronDownSvg } from 'libs/shared/images/svg/arrows/ChevronDownSvg';\n\nimport styles from './infinite-scroll-footer.module.scss';\n\ninterface InfiniteScrollFooterProps {\n isFetching: boolean;\n fetchNext?: (nextCursor: string) => void;\n nextCursor?: string;\n fetchOnScroll?: boolean;\n}\n\nInfiniteScrollFooter.defaultProps = {\n fetchOnScroll: false\n};\n\nexport function InfiniteScrollFooter(props: InfiniteScrollFooterProps): React.ReactElement {\n const [ ref, inView ] = useInView();\n\n React.useEffect(() => {\n if (!props.fetchOnScroll)\n return;\n\n if (!inView || props.isFetching)\n return;\n\n props.fetchNext?.(props.nextCursor);\n }, [ inView, props.isFetching ]);\n\n return (\n <div className={`p-3 text-center ${styles.container}`}>\n {props.isFetching ?\n <Spinner as='span' animation='border' role='status' className={styles.spinner} /> :\n (\n <div ref={ref}>\n <SvgContainer\n svg={ChevronDownSvg}\n className='svg-container cursor-pointer'\n size={SvgContainerSize.Large}\n onClick={() => props.fetchNext?.(props.nextCursor)}\n />\n </div>\n )\n }\n </div>\n );\n}\n","import { ColProps } from 'react-bootstrap';\n\nimport { VideoItemSize } from 'libs/shared/components/video-list/BaseVideoItemProps';\nimport { Breakpoints } from 'libs/shared/hooks/useBreakpoints';\n\nexport const VideoListHelper = {\n getThumbnailColumns(): ColProps {\n return {\n xs: 12,\n sm: 5,\n lg: 3\n };\n },\n\n getDetailsColumns(): ColProps {\n return {\n xs: 12,\n sm: 7,\n lg: 9\n };\n },\n\n getSize(breakpoints: Breakpoints, size: VideoItemSize): VideoItemSize {\n if (breakpoints.sm)\n return 'sm';\n \n return size || 'md';\n },\n\n getThumbnailColSize(hasDragHandle: boolean): number {\n return hasDragHandle ? 10 : 12;\n }\n};\n",":local {\n .partialOptions {\n width: 5.375rem;\n }\n\n .partialName {\n width: 18.75rem;\n height: 1.3125rem;\n }\n\n .partialDescription {\n width: 12.5rem;\n height: 1.3125rem;\n }\n\n .partialThumbnail {\n padding-bottom: 56.25%;\n }\n\n .partialDragHandle {\n width: 1.25rem;\n height: 1.25rem;\n }\n}","import React from 'react';\nimport { Col, Row } from 'react-bootstrap';\n\nimport { VideoListHelper } from 'libs/shared/components/video-list/VideoListHelper';\nimport { useBreakpoints } from 'libs/shared/hooks/useBreakpoints';\n\nimport styles from './partial-video-list.module.scss';\n\ninterface PartialVideoListProps {\n withReordering?: boolean;\n numVideos?: number;\n allowBulkActions?: boolean;\n}\n\nPartialVideoList.defaultProps = {\n numVideos: 15\n};\n\nexport function PartialVideoList(props: PartialVideoListProps): JSX.Element {\n return (\n <>\n {Array(props.numVideos).fill(null).map((_, i) => (\n <div className='d-flex' key={i}>\n {props.allowBulkActions && <div className='form-check pe-3 pe-sm-2 mx-0 mx-md-2' />}\n <PartialVideoItem {...props} />\n </div>\n ))}\n </>\n );\n}\n\nexport function PartialVideoItem(props: PartialVideoListProps): JSX.Element {\n const breakpoints = useBreakpoints();\n\n const size = VideoListHelper.getSize(breakpoints, 'md');\n const isSmall = size === 'sm';\n\n const withDragHandle = props.withReordering && !breakpoints.xs;\n\n return (\n <Row className={`${isSmall ? '' : 'py-2'} flex-grow-1`}>\n <Col {...VideoListHelper.getThumbnailColumns()} className={`flex-column align-items-flex-start ${isSmall ? `pb-2 pe-1` : 'mb-1 pe-3 pe-md-2'}`}>\n <Row>\n {!!withDragHandle && (\n <div className='d-flex align-items-center justify-content-center col-2'>\n <div className={`partial-loading-background ${styles.partialDragHandle}`} />\n </div>\n )}\n <Col xs={VideoListHelper.getThumbnailColSize(withDragHandle)}>\n <div className={`partial-loading-background ${isSmall ? 'rounded' : 'rounded-3'} ${styles.partialThumbnail}`} />\n </Col>\n </Row>\n </Col>\n <Col {...VideoListHelper.getDetailsColumns()} className={isSmall ? 'pb-2' : 'px-2'}>\n <div className={`partial-loading-background mb-1 ${styles.partialName}`} />\n <div className={`partial-loading-background ${styles.partialDescription}`} />\n </Col>\n </Row>\n );\n}\n\n","import * as React from 'react';\n\ninterface CheckboxProps {\n id: string;\n checked: boolean;\n onChange: (event: React.ChangeEvent<HTMLInputElement>) => void;\n label?: string;\n ariaLabel?: string;\n name?: string;\n className?: string;\n inputClassName?: string;\n disabled?: boolean;\n indeterminate?: boolean;\n isLabelEllipsis?: boolean;\n}\n\nCheckbox.defaultProps = {\n checked: false,\n label: '',\n className: ''\n};\n\n/**\n * Use this checkbox outside of Formik contexts\n */\nexport function Checkbox(props: CheckboxProps): JSX.Element {\n const { isLabelEllipsis } = props;\n const ref = React.useRef<HTMLInputElement>(null);\n\n React.useEffect(() => {\n if (!ref.current)\n return;\n\n if (props.checked) {\n if (ref.current.indeterminate)\n ref.current.indeterminate = false;\n\n return;\n }\n\n if (props.indeterminate && !ref.current.indeterminate) {\n ref.current.indeterminate = true;\n return;\n }\n\n if (!props.indeterminate && ref.current.indeterminate)\n ref.current.indeterminate = false;\n }, [ ref.current, props.indeterminate, props.checked ]);\n\n return (\n <div className={`form-check pe-2 ${props.className}`}>\n <input\n ref={ref}\n type='checkbox'\n className={`${props.inputClassName} form-check-input`}\n id={props.id}\n name={props.name}\n checked={props.checked}\n onChange={props.onChange}\n disabled={props.disabled}\n aria-checked={props.checked}\n aria-label={props.ariaLabel}\n />\n {props.label && (\n <label className='form-check-label cursor-pointer align-top' htmlFor={props.id}>\n <span className={`${isLabelEllipsis ? 'clamp-1' : ''}`}>{props.label}</span>\n </label>\n )}\n </div>\n );\n}\n","import React from 'react';\n\nexport function GraduationCapSvg(props: React.SVGProps<SVGSVGElement>) {\n return (\n <svg {...props}>\n <path\n fill='currentColor'\n d='M16.863 20c-.662 0-1.21-.567-1.21-1.252s.548-1.252 1.21-1.252c.663 0 1.21.567 1.21 1.252S17.527 20 16.864 20m0-1.441a.183.183 0 0 0-.182.189c0 .118.068.189.182.189.115 0 .183-.071.183-.19a.183.183 0 0 0-.183-.188m0-.118a.516.516 0 0 1-.502-.52v-6.19L11.75 9.158a.53.53 0 0 1-.205-.71c.137-.26.456-.354.685-.212l4.886 2.717a.57.57 0 0 1 .274.473v6.496a.52.52 0 0 1-.526.52m-4.908-4.205a.8.8 0 0 1-.229-.048L2.296 9.51A.55.55 0 0 1 2 9.014c0-.212.114-.401.297-.472l9.52-4.489a.47.47 0 0 1 .434 0l9.452 4.489a.55.55 0 0 1 .297.472.49.49 0 0 1-.297.473l-9.52 4.701a.8.8 0 0 1-.228.048m-8.22-5.198 8.22 4.087 8.288-4.087-8.22-3.898zm8.151 8.41c-4.749 0-6.644-2.905-6.712-3.047a.7.7 0 0 1-.092-.284V10.81c0-.283.229-.52.503-.52s.502.237.502.52v3.142c.388.496 2.077 2.434 5.776 2.434 3.653 0 5.548-1.938 6.005-2.457v-2.93c0-.284.228-.52.502-.52s.502.236.502.52v3.118a.6.6 0 0 1-.091.307c-.046.142-2.192 3.024-6.895 3.024'\n />\n </svg>\n );\n}\n","import { MediaQueryStrings } from 'libs/shared/enums/MediaQueries';\n\nimport { useMediaQuery } from './UseMediaQuery';\n\n/**\n * @deprecated Please use useBreakpoints() instead\n */\nexport function useGetMediaQueryString(): MediaQueryStrings {\n const isXS = useMediaQuery(MediaQueryStrings.XS);\n const isSM = useMediaQuery(MediaQueryStrings.SM);\n const isMD = useMediaQuery(MediaQueryStrings.MD);\n const isLG = useMediaQuery(MediaQueryStrings.LG);\n const isXL = useMediaQuery(MediaQueryStrings.XL);\n const isXXL = useMediaQuery(MediaQueryStrings.XXL);\n\n let currentString = MediaQueryStrings.LG; // default\n if (isXS) currentString = MediaQueryStrings.XS;\n if (isSM) currentString = MediaQueryStrings.SM;\n if (isMD) currentString = MediaQueryStrings.MD;\n if (isLG) currentString = MediaQueryStrings.LG;\n if (isXL) currentString = MediaQueryStrings.XL;\n if (isXXL) currentString = MediaQueryStrings.XXL;\n\n return currentString;\n}\n"],"x_google_ignoreList":[0],"mappings":"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"}
1
+ {"version":3,"file":"B3S7B746.chunk.js","names":[],"sources":["../../../../../node_modules/react-bootstrap/esm/Row.js","../../../../libs/shared/src/hooks/UseInfiniteScroll.ts","../../../../libs/shared/src/hooks/UseInfiniteList.ts","../../../../libs/shared/src/components/infinite-scroll-footer/infinite-scroll-footer.module.scss","../../../../libs/shared/src/components/infinite-scroll-footer/InfiniteScrollFooter.tsx","../../../../libs/shared/src/components/video-list/VideoListHelper.tsx","../../../../libs/shared/src/components/video-list/partial-loading/partial-video-list.module.scss","../../../../libs/shared/src/components/video-list/partial-loading/PartialVideoList.tsx","../../../../libs/shared/src/components/forms/form-checkbox/Checkbox.tsx","../../../../libs/shared/src/images/svg/objects/GraduationCapSvg.tsx","../../../../libs/shared/src/hooks/UseGetMediaQueryString.ts"],"sourcesContent":["\"use client\";\n\nimport classNames from 'classnames';\nimport * as React from 'react';\nimport { useBootstrapPrefix, useBootstrapBreakpoints, useBootstrapMinBreakpoint } from './ThemeProvider';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst Row = /*#__PURE__*/React.forwardRef(({\n bsPrefix,\n className,\n // Need to define the default \"as\" during prop destructuring to be compatible with styled-components github.com/react-bootstrap/react-bootstrap/issues/3595\n as: Component = 'div',\n ...props\n}, ref) => {\n const decoratedBsPrefix = useBootstrapPrefix(bsPrefix, 'row');\n const breakpoints = useBootstrapBreakpoints();\n const minBreakpoint = useBootstrapMinBreakpoint();\n const sizePrefix = `${decoratedBsPrefix}-cols`;\n const classes = [];\n breakpoints.forEach(brkPoint => {\n const propValue = props[brkPoint];\n delete props[brkPoint];\n let cols;\n if (propValue != null && typeof propValue === 'object') {\n ({\n cols\n } = propValue);\n } else {\n cols = propValue;\n }\n const infix = brkPoint !== minBreakpoint ? `-${brkPoint}` : '';\n if (cols != null) classes.push(`${sizePrefix}${infix}-${cols}`);\n });\n return /*#__PURE__*/_jsx(Component, {\n ref: ref,\n ...props,\n className: classNames(className, decoratedBsPrefix, ...classes)\n });\n});\nRow.displayName = 'Row';\nexport default Row;","import { useEffect } from 'react';\n\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\n\nconst SCROLL_TOLERANCE = 400; // value in px\n\ninterface UseInfiniteScrollOptions {\n fetchNextPage: () => void;\n hasMore: boolean;\n isFetching: boolean;\n scrollContainer?: HTMLElement;\n}\n\nexport function useInfiniteScroll(options: UseInfiniteScrollOptions): void {\n const handleScroll = (): void => {\n if (options.isFetching)\n return;\n\n if (!options.scrollContainer) {\n const currentScrollHeight = window.innerHeight + document.documentElement.scrollTop;\n \n const totalHeight = document.documentElement.scrollHeight - SCROLL_TOLERANCE;\n \n if (currentScrollHeight < totalHeight)\n return;\n } else {\n const { scrollContainer } = options;\n const currentScrollHeight = scrollContainer.getBoundingClientRect().height + scrollContainer.scrollTop;\n \n const totalHeight = scrollContainer.scrollHeight - SCROLL_TOLERANCE;\n \n if (currentScrollHeight < totalHeight)\n return;\n }\n\n options.fetchNextPage();\n };\n\n useEffect(() => {\n const onScroll = FunctionHelper.throttle(handleScroll, 200);\n\n const scrollContainer = options.scrollContainer || window;\n\n if (options.hasMore)\n scrollContainer.addEventListener('scroll', onScroll);\n\n return () => scrollContainer.removeEventListener('scroll', onScroll);\n }, [ options.hasMore, options.fetchNextPage, options.scrollContainer ]);\n}\n","import { useEffect, useState } from 'react';\n\nimport { HttpStatus, HttpStatusClass } from 'libs/common/backbone/enums/HttpStatus';\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\nimport { Flight } from 'libs/common/flight';\n\nimport { BaseObject, BasePaginatedCollection } from 'libs/shared/interfaces';\n\nimport { useInfiniteScroll } from './UseInfiniteScroll';\nimport { useSelectAllPages } from './UseSelectAllPages';\n\nexport interface UseInfiniteListResult<T extends BaseObject> {\n items: T[];\n hasMore: boolean;\n isFetching: boolean;\n nextCursor: string;\n totalItems?: number;\n hasFirstPageCompleted: boolean;\n}\n\n/**\n * Hook to extract an infinite list from the application state,\n * save it locally in state and only update when new data\n * is fetched.\n * \n * @param getRequest - callback function to get the request for each page.\n * Can be false if the request requires data that hasn't yet been fetched - e.g. user id.\n * \n * @param fetchNext - callback function to fetch a page.\n * Can be false if the request requires data that hasn't yet been fetched - e.g. user id.\n */\nexport function useInfiniteList<TObject = BaseObject, TResponse = BasePaginatedCollection<TObject>>(\n getRequest: ((cursor?: string) => Flight.Request) | false,\n fetchNext: ((cursor?: string) => void) | false,\n onError?: (pageNumber: number, statusCode: HttpStatus) => void,\n getItems?: (responseData: TResponse) => TObject[],\n getCursor?: (responseData: TResponse) => string,\n scrollContainer?: HTMLElement\n): UseInfiniteListResult<TObject> {\n const [ pagesFetched, setPagesFetched ] = useState(0);\n\n const fetchNextFn = fetchNext as (cursor?: string) => void;\n\n function getKey(cursor?: string): string {\n if (!getRequest)\n return null;\n\n const request = getRequest(cursor);\n\n if (!request)\n return null;\n\n return request.key;\n }\n\n const response = useSelectAllPages<TObject, TResponse>(\n getKey,\n getItems,\n getCursor\n );\n\n function fetchNextPage(): void {\n if (!fetchNext || !getRequest || !response)\n return;\n\n setPagesFetched(currentVal => currentVal + 1);\n return fetchNextFn(response.nextCursor);\n }\n\n useInfiniteScroll({\n fetchNextPage,\n hasMore: !!response?.nextCursor,\n isFetching: response?.isFetching,\n scrollContainer\n });\n\n useEffect(() => {\n if (!response)\n return;\n\n if (response.shouldInitialFetch && fetchNext) {\n fetchNextFn();\n setPagesFetched(currentVal => currentVal + 1);\n }\n }, [ response?.shouldInitialFetch, fetchNext ]);\n\n useEffect(() => {\n if (!response?.statusCode || !FunctionHelper.isFunction(onError))\n return;\n\n const httpStatusClass: HttpStatusClass = +(response.statusCode?.toString()?.substr(0, 1));\n\n if (httpStatusClass !== HttpStatusClass.ClientError && httpStatusClass !== HttpStatusClass.ServerError)\n return;\n\n onError(pagesFetched, response.statusCode);\n }, [response?.statusCode]);\n\n return {\n items: response?.items,\n hasMore: !!response?.nextCursor,\n nextCursor: response?.nextCursor,\n isFetching: response?.isFetching,\n totalItems: response?.totalItems,\n hasFirstPageCompleted: response?.hasFirstPageCompleted\n };\n}\n",":local {\n .container {\n color: $gray-900;\n }\n\n .spinner {\n width: $cv-svg-size-md;\n height: $cv-svg-size-md;\n }\n}","import * as React from 'react';\nimport { Spinner } from 'react-bootstrap';\nimport { useInView } from 'react-intersection-observer';\n\nimport { SvgContainer, SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\nimport { ChevronDownSvg } from 'libs/shared/images/svg/arrows/ChevronDownSvg';\n\nimport styles from './infinite-scroll-footer.module.scss';\n\ninterface InfiniteScrollFooterProps {\n isFetching: boolean;\n fetchNext?: (nextCursor: string) => void;\n nextCursor?: string;\n fetchOnScroll?: boolean;\n}\n\nInfiniteScrollFooter.defaultProps = {\n fetchOnScroll: false\n};\n\nexport function InfiniteScrollFooter(props: InfiniteScrollFooterProps): React.ReactElement {\n const [ ref, inView ] = useInView();\n\n React.useEffect(() => {\n if (!props.fetchOnScroll)\n return;\n\n if (!inView || props.isFetching)\n return;\n\n props.fetchNext?.(props.nextCursor);\n }, [ inView, props.isFetching ]);\n\n return (\n <div className={`p-3 text-center ${styles.container}`}>\n {props.isFetching ?\n <Spinner as='span' animation='border' role='status' className={styles.spinner} /> :\n (\n <div ref={ref}>\n <SvgContainer\n svg={ChevronDownSvg}\n className='svg-container cursor-pointer'\n size={SvgContainerSize.Large}\n onClick={() => props.fetchNext?.(props.nextCursor)}\n />\n </div>\n )\n }\n </div>\n );\n}\n","import { ColProps } from 'react-bootstrap';\n\nimport { VideoItemSize } from 'libs/shared/components/video-list/BaseVideoItemProps';\nimport { Breakpoints } from 'libs/shared/hooks/useBreakpoints';\n\nexport const VideoListHelper = {\n getThumbnailColumns(): ColProps {\n return {\n xs: 12,\n sm: 5,\n lg: 3\n };\n },\n\n getDetailsColumns(): ColProps {\n return {\n xs: 12,\n sm: 7,\n lg: 9\n };\n },\n\n getSize(breakpoints: Breakpoints, size: VideoItemSize): VideoItemSize {\n if (breakpoints.sm)\n return 'sm';\n \n return size || 'md';\n },\n\n getThumbnailColSize(hasDragHandle: boolean): number {\n return hasDragHandle ? 10 : 12;\n }\n};\n",":local {\n .partialOptions {\n width: 5.375rem;\n }\n\n .partialName {\n width: 18.75rem;\n height: 1.3125rem;\n }\n\n .partialDescription {\n width: 12.5rem;\n height: 1.3125rem;\n }\n\n .partialThumbnail {\n padding-bottom: 56.25%;\n }\n\n .partialDragHandle {\n width: 1.25rem;\n height: 1.25rem;\n }\n}","import React from 'react';\nimport { Col, Row } from 'react-bootstrap';\n\nimport { VideoListHelper } from 'libs/shared/components/video-list/VideoListHelper';\nimport { useBreakpoints } from 'libs/shared/hooks/useBreakpoints';\n\nimport styles from './partial-video-list.module.scss';\n\ninterface PartialVideoListProps {\n withReordering?: boolean;\n numVideos?: number;\n allowBulkActions?: boolean;\n}\n\nPartialVideoList.defaultProps = {\n numVideos: 15\n};\n\nexport function PartialVideoList(props: PartialVideoListProps): JSX.Element {\n return (\n <>\n {Array(props.numVideos).fill(null).map((_, i) => (\n <div className='d-flex' key={i}>\n {props.allowBulkActions && <div className='form-check pe-3 pe-sm-2 mx-0 mx-md-2' />}\n <PartialVideoItem {...props} />\n </div>\n ))}\n </>\n );\n}\n\nexport function PartialVideoItem(props: PartialVideoListProps): JSX.Element {\n const breakpoints = useBreakpoints();\n\n const size = VideoListHelper.getSize(breakpoints, 'md');\n const isSmall = size === 'sm';\n\n const withDragHandle = props.withReordering && !breakpoints.xs;\n\n return (\n <Row className={`${isSmall ? '' : 'py-2'} flex-grow-1`}>\n <Col {...VideoListHelper.getThumbnailColumns()} className={`flex-column align-items-flex-start ${isSmall ? `pb-2 pe-1` : 'mb-1 pe-3 pe-md-2'}`}>\n <Row>\n {!!withDragHandle && (\n <div className='d-flex align-items-center justify-content-center col-2'>\n <div className={`partial-loading-background ${styles.partialDragHandle}`} />\n </div>\n )}\n <Col xs={VideoListHelper.getThumbnailColSize(withDragHandle)}>\n <div className={`partial-loading-background ${isSmall ? 'rounded' : 'rounded-3'} ${styles.partialThumbnail}`} />\n </Col>\n </Row>\n </Col>\n <Col {...VideoListHelper.getDetailsColumns()} className={isSmall ? 'pb-2' : 'px-2'}>\n <div className={`partial-loading-background mb-1 ${styles.partialName}`} />\n <div className={`partial-loading-background ${styles.partialDescription}`} />\n </Col>\n </Row>\n );\n}\n\n","import * as React from 'react';\n\ninterface CheckboxProps {\n id: string;\n checked: boolean;\n onChange: (event: React.ChangeEvent<HTMLInputElement>) => void;\n label?: string;\n ariaLabel?: string;\n name?: string;\n className?: string;\n inputClassName?: string;\n disabled?: boolean;\n indeterminate?: boolean;\n isLabelEllipsis?: boolean;\n}\n\nCheckbox.defaultProps = {\n checked: false,\n label: '',\n className: ''\n};\n\n/**\n * Use this checkbox outside of Formik contexts\n */\nexport function Checkbox(props: CheckboxProps): JSX.Element {\n const { isLabelEllipsis } = props;\n const ref = React.useRef<HTMLInputElement>(null);\n\n React.useEffect(() => {\n if (!ref.current)\n return;\n\n if (props.checked) {\n if (ref.current.indeterminate)\n ref.current.indeterminate = false;\n\n return;\n }\n\n if (props.indeterminate && !ref.current.indeterminate) {\n ref.current.indeterminate = true;\n return;\n }\n\n if (!props.indeterminate && ref.current.indeterminate)\n ref.current.indeterminate = false;\n }, [ ref.current, props.indeterminate, props.checked ]);\n\n return (\n <div className={`form-check pe-2 ${props.className}`}>\n <input\n ref={ref}\n type='checkbox'\n className={`${props.inputClassName} form-check-input`}\n id={props.id}\n name={props.name}\n checked={props.checked}\n onChange={props.onChange}\n disabled={props.disabled}\n aria-checked={props.checked}\n aria-label={props.ariaLabel}\n />\n {props.label && (\n <label className='form-check-label cursor-pointer align-top' htmlFor={props.id}>\n <span className={`${isLabelEllipsis ? 'clamp-1' : ''}`}>{props.label}</span>\n </label>\n )}\n </div>\n );\n}\n","import React from 'react';\n\nexport function GraduationCapSvg(props: React.SVGProps<SVGSVGElement>) {\n return (\n <svg {...props}>\n <path\n fill='currentColor'\n d='M16.863 20c-.662 0-1.21-.567-1.21-1.252s.548-1.252 1.21-1.252c.663 0 1.21.567 1.21 1.252S17.527 20 16.864 20m0-1.441a.183.183 0 0 0-.182.189c0 .118.068.189.182.189.115 0 .183-.071.183-.19a.183.183 0 0 0-.183-.188m0-.118a.516.516 0 0 1-.502-.52v-6.19L11.75 9.158a.53.53 0 0 1-.205-.71c.137-.26.456-.354.685-.212l4.886 2.717a.57.57 0 0 1 .274.473v6.496a.52.52 0 0 1-.526.52m-4.908-4.205a.8.8 0 0 1-.229-.048L2.296 9.51A.55.55 0 0 1 2 9.014c0-.212.114-.401.297-.472l9.52-4.489a.47.47 0 0 1 .434 0l9.452 4.489a.55.55 0 0 1 .297.472.49.49 0 0 1-.297.473l-9.52 4.701a.8.8 0 0 1-.228.048m-8.22-5.198 8.22 4.087 8.288-4.087-8.22-3.898zm8.151 8.41c-4.749 0-6.644-2.905-6.712-3.047a.7.7 0 0 1-.092-.284V10.81c0-.283.229-.52.503-.52s.502.237.502.52v3.142c.388.496 2.077 2.434 5.776 2.434 3.653 0 5.548-1.938 6.005-2.457v-2.93c0-.284.228-.52.502-.52s.502.236.502.52v3.118a.6.6 0 0 1-.091.307c-.046.142-2.192 3.024-6.895 3.024'\n />\n </svg>\n );\n}\n","import { MediaQueryStrings } from 'libs/shared/enums/MediaQueries';\n\nimport { useMediaQuery } from './UseMediaQuery';\n\n/**\n * @deprecated Please use useBreakpoints() instead\n */\nexport function useGetMediaQueryString(): MediaQueryStrings {\n const isXS = useMediaQuery(MediaQueryStrings.XS);\n const isSM = useMediaQuery(MediaQueryStrings.SM);\n const isMD = useMediaQuery(MediaQueryStrings.MD);\n const isLG = useMediaQuery(MediaQueryStrings.LG);\n const isXL = useMediaQuery(MediaQueryStrings.XL);\n const isXXL = useMediaQuery(MediaQueryStrings.XXL);\n\n let currentString = MediaQueryStrings.LG; // default\n if (isXS) currentString = MediaQueryStrings.XS;\n if (isSM) currentString = MediaQueryStrings.SM;\n if (isMD) currentString = MediaQueryStrings.MD;\n if (isLG) currentString = MediaQueryStrings.LG;\n if (isXL) currentString = MediaQueryStrings.XL;\n if (isXXL) currentString = MediaQueryStrings.XXL;\n\n return currentString;\n}\n"],"x_google_ignoreList":[0],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import{C as e,D as t}from"./B1i9atik.chunk.js";import{nt as n}from"./app-lnmpv5W4.js";t();var r=e();function i({error:e}){return(0,r.jsx)(n,{error:e})}export{i as NotFoundView};
2
- //# sourceMappingURL=BnbM9YhY.chunk.js.map
1
+ import{C as e,D as t}from"./B1i9atik.chunk.js";import{nt as n}from"./app-fNhmX-xT.js";t();var r=e();function i({error:e}){return(0,r.jsx)(n,{error:e})}export{i as NotFoundView};
2
+ //# sourceMappingURL=B5B9BCxo.chunk.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"BnbM9YhY.chunk.js","names":[],"sources":["../../src/apps/default/views/not-found/ExchangeNotFoundView.tsx"],"sourcesContent":["import React from 'react';\n\nimport { ErrorPageError } from 'libs/shared/errors/primitives/ErrorPageError';\n\nimport { ErrorView } from 'apps/default/views/error/ExchangeErrorView';\n\ninterface NotFoundViewProps {\n error: ErrorPageError;\n}\n\n// eslint-disable-next-line rulesdir/require-view-title\nexport function NotFoundView({ error }: NotFoundViewProps): React.ReactElement {\n return <ErrorView error={error} />;\n}\n"],"mappings":"oGAWA,SAAgB,EAAa,CAAE,SAAgD,CAC7E,OAAO,EAAA,EAAA,KAAC,EAAD,CAAkB,QAAS,CAAA"}
1
+ {"version":3,"file":"B5B9BCxo.chunk.js","names":[],"sources":["../../src/apps/default/views/not-found/ExchangeNotFoundView.tsx"],"sourcesContent":["import React from 'react';\n\nimport { ErrorPageError } from 'libs/shared/errors/primitives/ErrorPageError';\n\nimport { ErrorView } from 'apps/default/views/error/ExchangeErrorView';\n\ninterface NotFoundViewProps {\n error: ErrorPageError;\n}\n\n// eslint-disable-next-line rulesdir/require-view-title\nexport function NotFoundView({ error }: NotFoundViewProps): React.ReactElement {\n return <ErrorView error={error} />;\n}\n"],"mappings":"oGAWA,SAAgB,EAAa,CAAE,SAAgD,CAC7E,OAAO,EAAA,EAAA,KAAC,EAAD,CAAkB,QAAS,CAAA"}
@@ -1,2 +1,2 @@
1
- import{C as e,D as t,_t as n,fn as r}from"./B1i9atik.chunk.js";import{g as i}from"./NpQVkKE2.chunk.js";import{l as a}from"./TJBzqR6k.chunk.js";import{n as o,t as s}from"./Dn3hwC-o.chunk.js";import{t as c}from"./DgSFdSfV.chunk.js";import{t as l}from"./YhCzLJGK.chunk.js";import{D as u,Z as d}from"./app-lnmpv5W4.js";import{t as f}from"./DyUX82Kv.chunk.js";import{t as p}from"./D-ivDlyL.chunk.js";import{t as m}from"./CAJOpkKZ.chunk.js";import{t as h}from"./Da2KHzN02.chunk.js";import{t as g}from"./BmEexpMP2.chunk.js";import{t as _}from"./B7sWLg9v2.chunk.js";import{t as v}from"./BuSq2beZ2.chunk.js";import{t as y}from"./DGRBUJ6T2.chunk.js";import{n as b,r as x,t as S}from"./CYfnBEtT2.chunk.js";import{n as C,t as w}from"./CDXcKno52.chunk.js";import{n as T,t as E}from"./CjNkj1Q92.chunk.js";import{t as D}from"./DsolW3Wd2.chunk.js";var O=r(t()),k={itemContainer:`_itemContainer_84hxn_1`,badgeWrapper:`_badgeWrapper_84hxn_7`,thumbnail:`_thumbnail_84hxn_12`},A=e();function j(e){function t(e,t){switch(e.programType){case S.Video:return{application:o.TV,action:s.Tv.PREVIEW,args:[t,e.id]};case S.Audio:return{application:o.TV,action:s.Tv.RADIO_DOWNLOAD,args:[t,e.id]}}}function n(t){let n=t.globalId.split(`-`).join(``);return`${e.previewUrl}/thumbnail/${n}.jpg`}return(0,A.jsx)(`div`,{className:`${k.itemContainer} rounded mx-4 px-2`,children:(0,A.jsxs)(i,{appLink:t(e.program,e.region),className:`d-flex align-items-center justify-content-between py-2 px-3 text-decoration-none`,children:[(0,A.jsxs)(`div`,{className:`w-50 d-flex align-items-center`,children:[(0,A.jsx)(`div`,{className:`${k.thumbnail} flex-shrink-0 me-3 partial-loading-background rounded`,children:(0,A.jsx)(f,{src:n(e.program),alt:e.program.title,extraClasses:`w-100 rounded`})}),(0,A.jsxs)(`div`,{className:`d-flex align-items-center`,children:[(0,A.jsx)(`span`,{className:`me-1`,children:e.name}),e.program.hasAdsFree&&(0,A.jsx)(h,{small:!0})]})]}),(0,A.jsx)(_,{program:e.program,className:`pointer-events-none`,showEndTime:!0})]},e.program.id)})}function M(e){let{channel:t}=e;return(0,A.jsxs)(`div`,{className:`d-flex mb-3`,children:[(0,A.jsx)(`div`,{className:`d-flex align-items-center me-3`,style:{maxWidth:`7.5rem`},children:(0,A.jsx)(`img`,{className:`w-100`,src:t.logoUrl})}),(0,A.jsxs)(`div`,{children:[(0,A.jsx)(`h1`,{className:`h3`,children:t.displayName}),(0,A.jsx)(`p`,{className:`mb-0`,children:t.description})]})]})}function N(){return(0,A.jsxs)(`div`,{className:`d-flex mb-3`,children:[(0,A.jsx)(`div`,{className:`partial-loading-background d-flex align-items-center me-3`,children:(0,A.jsx)(`div`,{style:{width:`7.5rem`}})}),(0,A.jsxs)(`div`,{className:`w-100`,children:[(0,A.jsx)(`div`,{className:`partial-loading-background w-25 h3`,children:`\xA0`}),(0,A.jsx)(`p`,{className:`partial-loading-background w-100 mb-0`,children:`\xA0`})]})]})}function P(e){let t=a(d.config()),r=a(v.region(e.region)),i=a(v.regions()),f=a(v.dateRange(e.region)),h=a(r.data&&v.channels(r.data.code)),_=O.useMemo(()=>h.data?.find(t=>t.id.toString()===e.channelId.toString()),[h.data]),{setRegion:S}=D(),{liteUpgradeTypeCustomer:k}=u(null),P=a(r.data&&_&&v.programsByChannel(r.data.code,_.name,_.startTime,_.stopTime)),F=O.useMemo(()=>P.data?[...P.data].sort((e,t)=>t.startTime.localeCompare(e.startTime)):[],[P.data]),I=O.useMemo(()=>{if(!P.data?.length)return[];let e={};return F.forEach(t=>{let n=l.format(g(t.startTime,t.timeZone),`dddd Do MMMM`);e[n]||(e[n]=[]),e[n].push(t)}),Object.entries(e).map(([e,t])=>[e,t.reverse()])},[P]);h.hasCompleted&&!_&&p(n.BadRequest),y(r),m([i,h,P]),c({title:_?.displayName});let L=r.hasCompleted&&i.hasCompleted&&h.hasCompleted&&_&&P.hasCompleted;function R(){return e.selectedRegion?i.data?.find(t=>t.code===e.selectedRegion):r.data}let z=R();return(0,A.jsxs)(A.Fragment,{children:[(0,A.jsx)(E,{region:z}),(0,A.jsxs)(`div`,{className:`d-flex justify-content-between`,children:[(0,A.jsx)(w,{active:`channels`,currentRegion:z,showTvGuide:!!k,config:t.data}),(0,A.jsx)(T,{currentRegion:z,regions:i.data,appLink:{application:o.TV,action:s.Tv.CHANNELS},onClick:S})]}),(0,A.jsx)(C,{dateRange:f.data,region:r.data}),_?(0,A.jsx)(M,{channel:_}):(0,A.jsx)(N,{}),L?(0,A.jsx)(A.Fragment,{children:(0,A.jsx)(x,{children:I.map(([e,n],i)=>(0,A.jsx)(x.Header,{title:e,children:(0,A.jsx)(`div`,{className:`mt-2 pb-2`,children:n&&n.map(e=>(0,A.jsx)(j,{name:e.title,program:e,region:r.data.code,previewUrl:t.data?.tvPreviewUrls[r.data?.code]},e.id))})},i))})}):(0,A.jsx)(b,{})]})}export{P as TvChannelView};
2
- //# sourceMappingURL=C3K3VtRR2.chunk.js.map
1
+ import{C as e,D as t,_t as n,fn as r}from"./B1i9atik.chunk.js";import{g as i}from"./NpQVkKE2.chunk.js";import{l as a}from"./TJBzqR6k.chunk.js";import{n as o,t as s}from"./Dn3hwC-o.chunk.js";import{t as c}from"./CBwR65WF.chunk.js";import{t as l}from"./YhCzLJGK.chunk.js";import{D as u,Z as d}from"./app-fNhmX-xT.js";import{t as f}from"./DyUX82Kv.chunk.js";import{t as p}from"./C-jHArp-.chunk.js";import{t as m}from"./CfCxi56P.chunk.js";import{t as h}from"./BoWMmXN02.chunk.js";import{t as g}from"./C8lms6Rf2.chunk.js";import{t as _}from"./D8x02prV2.chunk.js";import{t as v}from"./DWVn5hOy2.chunk.js";import{t as y}from"./DjUmgrOk2.chunk.js";import{n as b,r as x,t as S}from"./CHojcsxD2.chunk.js";import{n as C,t as w}from"./BLrooXWI2.chunk.js";import{n as T,t as E}from"./Bj6lJgAv2.chunk.js";import{t as D}from"./C8dtRvC52.chunk.js";var O=r(t()),k={itemContainer:`_itemContainer_84hxn_1`,badgeWrapper:`_badgeWrapper_84hxn_7`,thumbnail:`_thumbnail_84hxn_12`},A=e();function j(e){function t(e,t){switch(e.programType){case S.Video:return{application:o.TV,action:s.Tv.PREVIEW,args:[t,e.id]};case S.Audio:return{application:o.TV,action:s.Tv.RADIO_DOWNLOAD,args:[t,e.id]}}}function n(t){let n=t.globalId.split(`-`).join(``);return`${e.previewUrl}/thumbnail/${n}.jpg`}return(0,A.jsx)(`div`,{className:`${k.itemContainer} rounded mx-4 px-2`,children:(0,A.jsxs)(i,{appLink:t(e.program,e.region),className:`d-flex align-items-center justify-content-between py-2 px-3 text-decoration-none`,children:[(0,A.jsxs)(`div`,{className:`w-50 d-flex align-items-center`,children:[(0,A.jsx)(`div`,{className:`${k.thumbnail} flex-shrink-0 me-3 partial-loading-background rounded`,children:(0,A.jsx)(f,{src:n(e.program),alt:e.program.title,extraClasses:`w-100 rounded`})}),(0,A.jsxs)(`div`,{className:`d-flex align-items-center`,children:[(0,A.jsx)(`span`,{className:`me-1`,children:e.name}),e.program.hasAdsFree&&(0,A.jsx)(h,{small:!0})]})]}),(0,A.jsx)(_,{program:e.program,className:`pointer-events-none`,showEndTime:!0})]},e.program.id)})}function M(e){let{channel:t}=e;return(0,A.jsxs)(`div`,{className:`d-flex mb-3`,children:[(0,A.jsx)(`div`,{className:`d-flex align-items-center me-3`,style:{maxWidth:`7.5rem`},children:(0,A.jsx)(`img`,{className:`w-100`,src:t.logoUrl})}),(0,A.jsxs)(`div`,{children:[(0,A.jsx)(`h1`,{className:`h3`,children:t.displayName}),(0,A.jsx)(`p`,{className:`mb-0`,children:t.description})]})]})}function N(){return(0,A.jsxs)(`div`,{className:`d-flex mb-3`,children:[(0,A.jsx)(`div`,{className:`partial-loading-background d-flex align-items-center me-3`,children:(0,A.jsx)(`div`,{style:{width:`7.5rem`}})}),(0,A.jsxs)(`div`,{className:`w-100`,children:[(0,A.jsx)(`div`,{className:`partial-loading-background w-25 h3`,children:`\xA0`}),(0,A.jsx)(`p`,{className:`partial-loading-background w-100 mb-0`,children:`\xA0`})]})]})}function P(e){let t=a(d.config()),r=a(v.region(e.region)),i=a(v.regions()),f=a(v.dateRange(e.region)),h=a(r.data&&v.channels(r.data.code)),_=O.useMemo(()=>h.data?.find(t=>t.id.toString()===e.channelId.toString()),[h.data]),{setRegion:S}=D(),{liteUpgradeTypeCustomer:k}=u(null),P=a(r.data&&_&&v.programsByChannel(r.data.code,_.name,_.startTime,_.stopTime)),F=O.useMemo(()=>P.data?[...P.data].sort((e,t)=>t.startTime.localeCompare(e.startTime)):[],[P.data]),I=O.useMemo(()=>{if(!P.data?.length)return[];let e={};return F.forEach(t=>{let n=l.format(g(t.startTime,t.timeZone),`dddd Do MMMM`);e[n]||(e[n]=[]),e[n].push(t)}),Object.entries(e).map(([e,t])=>[e,t.reverse()])},[P]);h.hasCompleted&&!_&&p(n.BadRequest),y(r),m([i,h,P]),c({title:_?.displayName});let L=r.hasCompleted&&i.hasCompleted&&h.hasCompleted&&_&&P.hasCompleted;function R(){return e.selectedRegion?i.data?.find(t=>t.code===e.selectedRegion):r.data}let z=R();return(0,A.jsxs)(A.Fragment,{children:[(0,A.jsx)(E,{region:z}),(0,A.jsxs)(`div`,{className:`d-flex justify-content-between`,children:[(0,A.jsx)(w,{active:`channels`,currentRegion:z,showTvGuide:!!k,config:t.data}),(0,A.jsx)(T,{currentRegion:z,regions:i.data,appLink:{application:o.TV,action:s.Tv.CHANNELS},onClick:S})]}),(0,A.jsx)(C,{dateRange:f.data,region:r.data}),_?(0,A.jsx)(M,{channel:_}):(0,A.jsx)(N,{}),L?(0,A.jsx)(A.Fragment,{children:(0,A.jsx)(x,{children:I.map(([e,n],i)=>(0,A.jsx)(x.Header,{title:e,children:(0,A.jsx)(`div`,{className:`mt-2 pb-2`,children:n&&n.map(e=>(0,A.jsx)(j,{name:e.title,program:e,region:r.data.code,previewUrl:t.data?.tvPreviewUrls[r.data?.code]},e.id))})},i))})}):(0,A.jsx)(b,{})]})}export{P as TvChannelView};
2
+ //# sourceMappingURL=BKYpYiMb2.chunk.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"C3K3VtRR2.chunk.js","names":[],"sources":["../../src/apps/tv/components/tv-accordion-list-item/tv-accordion-list-item.module.scss","../../src/apps/tv/components/tv-accordion-list-item/TvAccordionListItem.tsx","../../src/apps/tv/views/tv-channel/components/tv-channel-header/TvChannelHeader.tsx","../../src/apps/tv/views/tv-channel/partial-loading/PartialTvChannelPrograms.tsx","../../src/apps/tv/views/tv-channel/TvChannelView.tsx"],"sourcesContent":[":local {\n .itemContainer {\n transition: background-color 0.25s ease-in-out;\n &:hover {\n background-color: $light-blue;\n }\n }\n\n .badgeWrapper {\n position: absolute;\n right: -3.5rem;\n top: 0;\n }\n\n .thumbnail {\n height: 2rem;\n aspect-ratio: 16 / 9;\n }\n}","import React from 'react';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { LazyImage } from 'libs/shared/components/lazy-image/LazyImage';\n\nimport { Actions } from 'shared/constants/ExchangeActions';\nimport { AppChannels } from 'shared/constants/ExchangeRadioChannels';\n\nimport { TvAdFreeBadge } from 'apps/tv/components/tv-ad-free-badge/TvAdFreeBadge';\nimport { TvProgramTimeBadge } from 'apps/tv/components/tv-program-time-badge/TvProgramTimeBadge';\nimport { ProgramType } from 'apps/tv/interfaces/enums/ProgramType';\nimport { TvProgram } from 'apps/tv/interfaces/models/TvProgram';\n\nimport styles from './tv-accordion-list-item.module.scss';\n\ninterface TvAccordionListItemProps {\n name: string;\n program: TvProgram;\n region: string;\n showDate?: boolean;\n previewUrl: string;\n}\n\nexport function TvAccordionListItem(props: TvAccordionListItemProps) {\n function getProgramAppLink(program: TvProgram, region: string) {\n switch (program.programType) {\n case ProgramType.Video:\n return {\n application: AppChannels.TV,\n action: Actions.Tv.PREVIEW,\n args: [ region, program.id ]\n };\n case ProgramType.Audio:\n return {\n application: AppChannels.TV,\n action: Actions.Tv.RADIO_DOWNLOAD,\n args: [ region, program.id ]\n };\n }\n }\n \n function getThumbnailUrl(program: TvProgram) {\n const globalId = program.globalId.split('-').join('');\n return `${props.previewUrl}/thumbnail/${globalId}.jpg`;\n }\n\n return (\n <div className={`${styles.itemContainer} rounded mx-4 px-2`}>\n <AppLink\n key={props.program.id}\n appLink={getProgramAppLink(props.program, props.region)}\n className='d-flex align-items-center justify-content-between py-2 px-3 text-decoration-none'\n >\n <div className='w-50 d-flex align-items-center'>\n <div className={`${styles.thumbnail} flex-shrink-0 me-3 partial-loading-background rounded`}>\n <LazyImage\n src={getThumbnailUrl(props.program)}\n alt={props.program.title}\n extraClasses='w-100 rounded'\n />\n </div>\n <div className='d-flex align-items-center'>\n <span className='me-1'>{props.name}</span>\n {props.program.hasAdsFree && <TvAdFreeBadge small />}\n </div>\n </div>\n <TvProgramTimeBadge program={props.program} className='pointer-events-none' showEndTime />\n </AppLink>\n </div>\n );\n}\n","import React from 'react';\n\nimport { TvChannel } from 'apps/tv/interfaces/models/TvChannel';\n\ninterface TvChannelHeaderProps {\n channel: TvChannel;\n}\n\nexport function TvChannelHeader(props: TvChannelHeaderProps): JSX.Element {\n const { channel } = props;\n\n return (\n <div className='d-flex mb-3'>\n <div\n className='d-flex align-items-center me-3'\n style={{ maxWidth: '7.5rem' }}>\n <img\n className='w-100'\n src={channel.logoUrl}\n />\n </div>\n <div>\n <h1 className='h3'>{channel.displayName}</h1>\n <p className='mb-0'>{channel.description}</p>\n </div>\n </div>\n );\n}\n","import React from 'react';\n\nexport function PartialTvChannel() {\n return (\n <div className='d-flex mb-3'>\n <div className='partial-loading-background d-flex align-items-center me-3'>\n <div style={{ width: '7.5rem' }}/>\n </div>\n <div className='w-100'>\n <div className='partial-loading-background w-25 h3'>&nbsp;</div>\n <p className='partial-loading-background w-100 mb-0'>&nbsp;</p>\n </div>\n </div>\n );\n}\n","import React from 'react';\n\nimport { HttpStatus } from 'libs/common/backbone/enums/HttpStatus';\nimport { Flight } from 'libs/common/flight';\nimport { HashObject } from 'libs/common/react/interfaces';\nimport { DateHelper } from 'libs/common/react/utils/DateHelper';\n\nimport { handleHttpError } from 'libs/shared/errors/handlers/HttpErrorHandlers';\nimport { ConfigRequests } from 'libs/shared/flight-requests/ConfigRequests';\nimport { useHandleObjectError } from 'libs/shared/hooks/UseHandleObjectError';\nimport { useSetPageMetadata } from 'libs/shared/hooks/useSetPageMetadata';\nimport { useSettings } from 'libs/shared/hooks/useSettings';\nimport { Config } from 'libs/shared/interfaces';\n\nimport { AccordionList } from 'shared/components/accordion-list/AccordionList';\nimport { PartialAccordionList } from 'shared/components/accordion-list/partial-loading/PartialAccordionList';\nimport { Actions } from 'shared/constants/ExchangeActions';\nimport { AppChannels } from 'shared/constants/ExchangeRadioChannels';\n\nimport { TvAccordionListItem } from 'apps/tv/components/tv-accordion-list-item/TvAccordionListItem';\nimport { TvInfoAlert } from 'apps/tv/components/tv-info-alert/TvInfoAlert';\nimport { TvRegionSelect } from 'apps/tv/components/tv-region-select/TvRegionSelect';\nimport { TvSearchBar } from 'apps/tv/components/tv-search-bar/TvSearchBar';\nimport { TvTabs } from 'apps/tv/components/tv-tabs/TvTabs';\nimport { TvRequests } from 'apps/tv/flight-requests/TvRequests';\nimport { useHandleRegionError } from 'apps/tv/hooks/useHandleRegionError';\nimport { useSelectedRegion } from 'apps/tv/hooks/useSelectedRegion';\nimport { TvChannel } from 'apps/tv/interfaces/models/TvChannel';\nimport { TvProgram } from 'apps/tv/interfaces/models/TvProgram';\nimport { TvDateRange, TvRegion } from 'apps/tv/interfaces/models/TvRegion';\nimport { toLocalTime } from 'apps/tv/utils/toLocalTime';\n\nimport { TvChannelHeader } from './components/tv-channel-header/TvChannelHeader';\nimport { PartialTvChannel } from './partial-loading/PartialTvChannelPrograms';\n\ninterface TvChannelViewProps {\n region: string;\n channelId: string;\n selectedRegion?: string;\n}\n\nexport function TvChannelView(props: TvChannelViewProps): JSX.Element {\n const config = Flight.useBasicFetch<Config>(ConfigRequests.config());\n const region = Flight.useBasicFetch<TvRegion>(TvRequests.region(props.region));\n const regions = Flight.useBasicFetch<TvRegion[]>(TvRequests.regions());\n const dateRange = Flight.useBasicFetch<TvDateRange>(TvRequests.dateRange(props.region));\n const channels = Flight.useBasicFetch<TvChannel[]>(\n region.data && TvRequests.channels(region.data.code)\n );\n const channel = React.useMemo(() => {\n return channels.data?.find(c => c.id.toString() === props.channelId.toString());\n }, [channels.data]);\n\n const { setRegion } = useSelectedRegion();\n const { liteUpgradeTypeCustomer } = useSettings(null);\n\n const programs = Flight.useBasicFetch<TvProgram[]>(\n region.data &&\n channel &&\n TvRequests.programsByChannel(\n region.data.code,\n channel.name,\n channel.startTime,\n channel.stopTime\n )\n );\n\n const sortedPrograms = React.useMemo(() => {\n if (!programs.data) return [];\n return [...programs.data].sort((a, b) => b.startTime.localeCompare(a.startTime));\n }, [programs.data]);\n\n const grouped = React.useMemo(() => {\n if (!programs.data?.length)\n return [];\n\n const groups: HashObject<TvProgram[]> = {};\n\n sortedPrograms.forEach(program => {\n const startTime = DateHelper.format(toLocalTime(program.startTime, program.timeZone), 'dddd Do MMMM');\n\n if (!groups[startTime])\n groups[startTime] = [];\n\n groups[startTime].push(program);\n });\n const grouped = Object.entries(groups);\n return grouped.map(([ date, program ]) => [ date, program.reverse() ]);\n }, [programs]);\n\n if ((channels.hasCompleted && !channel)) {\n handleHttpError(HttpStatus.BadRequest);\n }\n\n useHandleRegionError(region);\n useHandleObjectError([ regions, channels, programs ]);\n\n useSetPageMetadata({ title: channel?.displayName });\n\n const dataLoaded =\n region.hasCompleted && regions.hasCompleted && channels.hasCompleted && channel && programs.hasCompleted;\n\n function getCurrentRegion(): TvRegion {\n if (!props.selectedRegion) return region.data;\n\n return regions.data?.find(region => region.code === props.selectedRegion);\n }\n\n const currentRegion = getCurrentRegion();\n\n return (\n <>\n <TvSearchBar region={currentRegion} />\n\n <div className='d-flex justify-content-between'>\n <TvTabs\n active='channels'\n currentRegion={currentRegion}\n showTvGuide={!!liteUpgradeTypeCustomer}\n config={config.data}\n />\n <TvRegionSelect\n currentRegion={currentRegion}\n regions={regions.data}\n appLink={{\n application: AppChannels.TV,\n action: Actions.Tv.CHANNELS\n }}\n onClick={setRegion}\n />\n </div>\n \n <TvInfoAlert dateRange={dateRange.data} region={region.data} />\n\n {channel ? <TvChannelHeader channel={channel} /> : <PartialTvChannel />}\n\n {dataLoaded ? (\n <>\n <AccordionList>\n {grouped.map(([ date, programs ]: [string, TvProgram[]], index) => (\n <AccordionList.Header\n key={index}\n title={date}\n >\n <div className='mt-2 pb-2'>\n {programs && programs.map(program => (\n <TvAccordionListItem\n key={program.id}\n name={program.title}\n program={program}\n region={region.data.code}\n previewUrl={config.data?.tvPreviewUrls[region.data?.code]}\n />\n ))}\n </div>\n </AccordionList.Header>\n ))}\n </AccordionList>\n </>\n ) : (\n <PartialAccordionList />\n )}\n </>\n );\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"BKYpYiMb2.chunk.js","names":[],"sources":["../../src/apps/tv/components/tv-accordion-list-item/tv-accordion-list-item.module.scss","../../src/apps/tv/components/tv-accordion-list-item/TvAccordionListItem.tsx","../../src/apps/tv/views/tv-channel/components/tv-channel-header/TvChannelHeader.tsx","../../src/apps/tv/views/tv-channel/partial-loading/PartialTvChannelPrograms.tsx","../../src/apps/tv/views/tv-channel/TvChannelView.tsx"],"sourcesContent":[":local {\n .itemContainer {\n transition: background-color 0.25s ease-in-out;\n &:hover {\n background-color: $light-blue;\n }\n }\n\n .badgeWrapper {\n position: absolute;\n right: -3.5rem;\n top: 0;\n }\n\n .thumbnail {\n height: 2rem;\n aspect-ratio: 16 / 9;\n }\n}","import React from 'react';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { LazyImage } from 'libs/shared/components/lazy-image/LazyImage';\n\nimport { Actions } from 'shared/constants/ExchangeActions';\nimport { AppChannels } from 'shared/constants/ExchangeRadioChannels';\n\nimport { TvAdFreeBadge } from 'apps/tv/components/tv-ad-free-badge/TvAdFreeBadge';\nimport { TvProgramTimeBadge } from 'apps/tv/components/tv-program-time-badge/TvProgramTimeBadge';\nimport { ProgramType } from 'apps/tv/interfaces/enums/ProgramType';\nimport { TvProgram } from 'apps/tv/interfaces/models/TvProgram';\n\nimport styles from './tv-accordion-list-item.module.scss';\n\ninterface TvAccordionListItemProps {\n name: string;\n program: TvProgram;\n region: string;\n showDate?: boolean;\n previewUrl: string;\n}\n\nexport function TvAccordionListItem(props: TvAccordionListItemProps) {\n function getProgramAppLink(program: TvProgram, region: string) {\n switch (program.programType) {\n case ProgramType.Video:\n return {\n application: AppChannels.TV,\n action: Actions.Tv.PREVIEW,\n args: [ region, program.id ]\n };\n case ProgramType.Audio:\n return {\n application: AppChannels.TV,\n action: Actions.Tv.RADIO_DOWNLOAD,\n args: [ region, program.id ]\n };\n }\n }\n \n function getThumbnailUrl(program: TvProgram) {\n const globalId = program.globalId.split('-').join('');\n return `${props.previewUrl}/thumbnail/${globalId}.jpg`;\n }\n\n return (\n <div className={`${styles.itemContainer} rounded mx-4 px-2`}>\n <AppLink\n key={props.program.id}\n appLink={getProgramAppLink(props.program, props.region)}\n className='d-flex align-items-center justify-content-between py-2 px-3 text-decoration-none'\n >\n <div className='w-50 d-flex align-items-center'>\n <div className={`${styles.thumbnail} flex-shrink-0 me-3 partial-loading-background rounded`}>\n <LazyImage\n src={getThumbnailUrl(props.program)}\n alt={props.program.title}\n extraClasses='w-100 rounded'\n />\n </div>\n <div className='d-flex align-items-center'>\n <span className='me-1'>{props.name}</span>\n {props.program.hasAdsFree && <TvAdFreeBadge small />}\n </div>\n </div>\n <TvProgramTimeBadge program={props.program} className='pointer-events-none' showEndTime />\n </AppLink>\n </div>\n );\n}\n","import React from 'react';\n\nimport { TvChannel } from 'apps/tv/interfaces/models/TvChannel';\n\ninterface TvChannelHeaderProps {\n channel: TvChannel;\n}\n\nexport function TvChannelHeader(props: TvChannelHeaderProps): JSX.Element {\n const { channel } = props;\n\n return (\n <div className='d-flex mb-3'>\n <div\n className='d-flex align-items-center me-3'\n style={{ maxWidth: '7.5rem' }}>\n <img\n className='w-100'\n src={channel.logoUrl}\n />\n </div>\n <div>\n <h1 className='h3'>{channel.displayName}</h1>\n <p className='mb-0'>{channel.description}</p>\n </div>\n </div>\n );\n}\n","import React from 'react';\n\nexport function PartialTvChannel() {\n return (\n <div className='d-flex mb-3'>\n <div className='partial-loading-background d-flex align-items-center me-3'>\n <div style={{ width: '7.5rem' }}/>\n </div>\n <div className='w-100'>\n <div className='partial-loading-background w-25 h3'>&nbsp;</div>\n <p className='partial-loading-background w-100 mb-0'>&nbsp;</p>\n </div>\n </div>\n );\n}\n","import React from 'react';\n\nimport { HttpStatus } from 'libs/common/backbone/enums/HttpStatus';\nimport { Flight } from 'libs/common/flight';\nimport { HashObject } from 'libs/common/react/interfaces';\nimport { DateHelper } from 'libs/common/react/utils/DateHelper';\n\nimport { handleHttpError } from 'libs/shared/errors/handlers/HttpErrorHandlers';\nimport { ConfigRequests } from 'libs/shared/flight-requests/ConfigRequests';\nimport { useHandleObjectError } from 'libs/shared/hooks/UseHandleObjectError';\nimport { useSetPageMetadata } from 'libs/shared/hooks/useSetPageMetadata';\nimport { useSettings } from 'libs/shared/hooks/useSettings';\nimport { Config } from 'libs/shared/interfaces';\n\nimport { AccordionList } from 'shared/components/accordion-list/AccordionList';\nimport { PartialAccordionList } from 'shared/components/accordion-list/partial-loading/PartialAccordionList';\nimport { Actions } from 'shared/constants/ExchangeActions';\nimport { AppChannels } from 'shared/constants/ExchangeRadioChannels';\n\nimport { TvAccordionListItem } from 'apps/tv/components/tv-accordion-list-item/TvAccordionListItem';\nimport { TvInfoAlert } from 'apps/tv/components/tv-info-alert/TvInfoAlert';\nimport { TvRegionSelect } from 'apps/tv/components/tv-region-select/TvRegionSelect';\nimport { TvSearchBar } from 'apps/tv/components/tv-search-bar/TvSearchBar';\nimport { TvTabs } from 'apps/tv/components/tv-tabs/TvTabs';\nimport { TvRequests } from 'apps/tv/flight-requests/TvRequests';\nimport { useHandleRegionError } from 'apps/tv/hooks/useHandleRegionError';\nimport { useSelectedRegion } from 'apps/tv/hooks/useSelectedRegion';\nimport { TvChannel } from 'apps/tv/interfaces/models/TvChannel';\nimport { TvProgram } from 'apps/tv/interfaces/models/TvProgram';\nimport { TvDateRange, TvRegion } from 'apps/tv/interfaces/models/TvRegion';\nimport { toLocalTime } from 'apps/tv/utils/toLocalTime';\n\nimport { TvChannelHeader } from './components/tv-channel-header/TvChannelHeader';\nimport { PartialTvChannel } from './partial-loading/PartialTvChannelPrograms';\n\ninterface TvChannelViewProps {\n region: string;\n channelId: string;\n selectedRegion?: string;\n}\n\nexport function TvChannelView(props: TvChannelViewProps): JSX.Element {\n const config = Flight.useBasicFetch<Config>(ConfigRequests.config());\n const region = Flight.useBasicFetch<TvRegion>(TvRequests.region(props.region));\n const regions = Flight.useBasicFetch<TvRegion[]>(TvRequests.regions());\n const dateRange = Flight.useBasicFetch<TvDateRange>(TvRequests.dateRange(props.region));\n const channels = Flight.useBasicFetch<TvChannel[]>(\n region.data && TvRequests.channels(region.data.code)\n );\n const channel = React.useMemo(() => {\n return channels.data?.find(c => c.id.toString() === props.channelId.toString());\n }, [channels.data]);\n\n const { setRegion } = useSelectedRegion();\n const { liteUpgradeTypeCustomer } = useSettings(null);\n\n const programs = Flight.useBasicFetch<TvProgram[]>(\n region.data &&\n channel &&\n TvRequests.programsByChannel(\n region.data.code,\n channel.name,\n channel.startTime,\n channel.stopTime\n )\n );\n\n const sortedPrograms = React.useMemo(() => {\n if (!programs.data) return [];\n return [...programs.data].sort((a, b) => b.startTime.localeCompare(a.startTime));\n }, [programs.data]);\n\n const grouped = React.useMemo(() => {\n if (!programs.data?.length)\n return [];\n\n const groups: HashObject<TvProgram[]> = {};\n\n sortedPrograms.forEach(program => {\n const startTime = DateHelper.format(toLocalTime(program.startTime, program.timeZone), 'dddd Do MMMM');\n\n if (!groups[startTime])\n groups[startTime] = [];\n\n groups[startTime].push(program);\n });\n const grouped = Object.entries(groups);\n return grouped.map(([ date, program ]) => [ date, program.reverse() ]);\n }, [programs]);\n\n if ((channels.hasCompleted && !channel)) {\n handleHttpError(HttpStatus.BadRequest);\n }\n\n useHandleRegionError(region);\n useHandleObjectError([ regions, channels, programs ]);\n\n useSetPageMetadata({ title: channel?.displayName });\n\n const dataLoaded =\n region.hasCompleted && regions.hasCompleted && channels.hasCompleted && channel && programs.hasCompleted;\n\n function getCurrentRegion(): TvRegion {\n if (!props.selectedRegion) return region.data;\n\n return regions.data?.find(region => region.code === props.selectedRegion);\n }\n\n const currentRegion = getCurrentRegion();\n\n return (\n <>\n <TvSearchBar region={currentRegion} />\n\n <div className='d-flex justify-content-between'>\n <TvTabs\n active='channels'\n currentRegion={currentRegion}\n showTvGuide={!!liteUpgradeTypeCustomer}\n config={config.data}\n />\n <TvRegionSelect\n currentRegion={currentRegion}\n regions={regions.data}\n appLink={{\n application: AppChannels.TV,\n action: Actions.Tv.CHANNELS\n }}\n onClick={setRegion}\n />\n </div>\n \n <TvInfoAlert dateRange={dateRange.data} region={region.data} />\n\n {channel ? <TvChannelHeader channel={channel} /> : <PartialTvChannel />}\n\n {dataLoaded ? (\n <>\n <AccordionList>\n {grouped.map(([ date, programs ]: [string, TvProgram[]], index) => (\n <AccordionList.Header\n key={index}\n title={date}\n >\n <div className='mt-2 pb-2'>\n {programs && programs.map(program => (\n <TvAccordionListItem\n key={program.id}\n name={program.title}\n program={program}\n region={region.data.code}\n previewUrl={config.data?.tvPreviewUrls[region.data?.code]}\n />\n ))}\n </div>\n </AccordionList.Header>\n ))}\n </AccordionList>\n </>\n ) : (\n <PartialAccordionList />\n )}\n </>\n );\n}\n"],"mappings":"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"}