@clickview/lite 0.73.1 → 0.74.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/bundles.json +2 -2
  2. package/dist/css/{7122-lite-a094f8fe17.chunk.css → 7122-lite-e0652641e4.chunk.css} +1 -1
  3. package/dist/css/{4499-lite-c43d17524f.chunk.css → 7150-lite-60d455ba66.chunk.css} +1 -1
  4. package/dist/css/{lite-app-10d57977f3.css → lite-app-98b3200025.css} +1 -1
  5. package/dist/languages/en.json +1 -1
  6. package/dist/scripts/{1362-061cd588c0-lite.chunk.js → 1362-56810ef4c8-lite.chunk.js} +3 -3
  7. package/dist/scripts/1362-56810ef4c8-lite.chunk.js.map +1 -0
  8. package/dist/scripts/{1367-12750422b0-lite.chunk.js → 1367-e0481edee3-lite.chunk.js} +2 -2
  9. package/dist/scripts/1367-e0481edee3-lite.chunk.js.map +1 -0
  10. package/dist/scripts/{1735-c0f3f1238a-lite.chunk.js → 1735-e4cdbc46ed-lite.chunk.js} +3 -3
  11. package/dist/scripts/1735-e4cdbc46ed-lite.chunk.js.map +1 -0
  12. package/dist/scripts/{324-6d6ee95d5d-lite.chunk.js → 324-e7a99b7d52-lite.chunk.js} +2 -2
  13. package/dist/scripts/{324-6d6ee95d5d-lite.chunk.js.map → 324-e7a99b7d52-lite.chunk.js.map} +1 -1
  14. package/dist/scripts/{3252-22fac3da15-lite.chunk.js → 3252-50b5c19f19-lite.chunk.js} +1 -1
  15. package/dist/scripts/{3252-22fac3da15-lite.chunk.js.map → 3252-50b5c19f19-lite.chunk.js.map} +1 -1
  16. package/dist/scripts/3677-4904f30c6a-lite.chunk.js +2 -0
  17. package/dist/scripts/3677-4904f30c6a-lite.chunk.js.map +1 -0
  18. package/dist/scripts/{3781-7a9ddc7736-lite.chunk.js → 3781-e092f92668-lite.chunk.js} +2 -2
  19. package/dist/scripts/{3781-7a9ddc7736-lite.chunk.js.map → 3781-e092f92668-lite.chunk.js.map} +1 -1
  20. package/dist/scripts/{3823-e38a508a3c-lite.chunk.js → 3823-0dc1972eb2-lite.chunk.js} +2 -2
  21. package/dist/scripts/3823-0dc1972eb2-lite.chunk.js.map +1 -0
  22. package/dist/scripts/3915-abd9a65a08-lite.chunk.js +2 -0
  23. package/dist/scripts/3915-abd9a65a08-lite.chunk.js.map +1 -0
  24. package/dist/scripts/{3978-09fb1f250e-lite.chunk.js → 3978-a551dd2648-lite.chunk.js} +2 -2
  25. package/dist/scripts/3978-a551dd2648-lite.chunk.js.map +1 -0
  26. package/dist/scripts/{4013-d31272b42a-lite.chunk.js → 4013-6f68d7031e-lite.chunk.js} +1 -1
  27. package/dist/scripts/{4013-d31272b42a-lite.chunk.js.map → 4013-6f68d7031e-lite.chunk.js.map} +1 -1
  28. package/dist/scripts/{4014-4225ce1eb6-lite.chunk.js → 4014-3eccce2f89-lite.chunk.js} +3 -3
  29. package/dist/scripts/4014-3eccce2f89-lite.chunk.js.map +1 -0
  30. package/dist/scripts/{4050-cf35c4ec45-lite.chunk.js → 4050-ffe5b6ae6d-lite.chunk.js} +2 -2
  31. package/dist/scripts/{4050-cf35c4ec45-lite.chunk.js.map → 4050-ffe5b6ae6d-lite.chunk.js.map} +1 -1
  32. package/dist/scripts/{4061-525ef00f69-lite.chunk.js → 4061-100002abf6-lite.chunk.js} +2 -2
  33. package/dist/scripts/4061-100002abf6-lite.chunk.js.map +1 -0
  34. package/dist/scripts/4191-9a08c4b205-lite.chunk.js +2 -0
  35. package/dist/scripts/4191-9a08c4b205-lite.chunk.js.map +1 -0
  36. package/dist/scripts/{4358-b21c24f96a-lite.chunk.js → 4358-a1bbca8249-lite.chunk.js} +1 -1
  37. package/dist/scripts/{4358-b21c24f96a-lite.chunk.js.map → 4358-a1bbca8249-lite.chunk.js.map} +1 -1
  38. package/dist/scripts/{4400-8c36fb4ab5-lite.chunk.js → 4400-755a158a52-lite.chunk.js} +2 -2
  39. package/dist/scripts/4400-755a158a52-lite.chunk.js.map +1 -0
  40. package/dist/scripts/4806-13c9302b2c-lite.chunk.js +2 -0
  41. package/dist/scripts/4806-13c9302b2c-lite.chunk.js.map +1 -0
  42. package/dist/scripts/{5135-864055ab0b-lite.chunk.js → 5135-166ec46620-lite.chunk.js} +2 -2
  43. package/dist/scripts/5135-166ec46620-lite.chunk.js.map +1 -0
  44. package/dist/scripts/{5143-286c66de2b-lite.chunk.js → 5143-d6c4a357ea-lite.chunk.js} +2 -2
  45. package/dist/scripts/5143-d6c4a357ea-lite.chunk.js.map +1 -0
  46. package/dist/scripts/{5743-a764171a6d-lite.chunk.js → 5743-14700e4f76-lite.chunk.js} +2 -2
  47. package/dist/scripts/5743-14700e4f76-lite.chunk.js.map +1 -0
  48. package/dist/scripts/{6030-5db8cc1bc4-lite.chunk.js → 6030-c2e07df714-lite.chunk.js} +2 -2
  49. package/dist/scripts/6030-c2e07df714-lite.chunk.js.map +1 -0
  50. package/dist/scripts/{618-4334f9451b-lite.chunk.js → 618-996d8b560b-lite.chunk.js} +2 -2
  51. package/dist/scripts/618-996d8b560b-lite.chunk.js.map +1 -0
  52. package/dist/scripts/{6207-f444184025-lite.chunk.js → 6207-be843186e0-lite.chunk.js} +1 -1
  53. package/dist/scripts/{6207-f444184025-lite.chunk.js.map → 6207-be843186e0-lite.chunk.js.map} +1 -1
  54. package/dist/scripts/{6413-c4333e80d4-lite.chunk.js → 6413-caaae6a383-lite.chunk.js} +3 -3
  55. package/dist/scripts/{6413-c4333e80d4-lite.chunk.js.map → 6413-caaae6a383-lite.chunk.js.map} +1 -1
  56. package/dist/scripts/{6646-24a34f7d99-lite.chunk.js → 6646-c5775f6553-lite.chunk.js} +3 -3
  57. package/dist/scripts/6646-c5775f6553-lite.chunk.js.map +1 -0
  58. package/dist/scripts/{6909-8a45942b63-lite.chunk.js → 6909-6805b6a0d9-lite.chunk.js} +2 -2
  59. package/dist/scripts/6909-6805b6a0d9-lite.chunk.js.map +1 -0
  60. package/dist/scripts/7064-b3bafc599f-lite.chunk.js +2 -0
  61. package/dist/scripts/7064-b3bafc599f-lite.chunk.js.map +1 -0
  62. package/dist/scripts/7122-dbf374af58-lite.chunk.js +2 -0
  63. package/dist/scripts/7122-dbf374af58-lite.chunk.js.map +1 -0
  64. package/dist/scripts/7150-93a205975c-lite.chunk.js +2 -0
  65. package/dist/scripts/7150-93a205975c-lite.chunk.js.map +1 -0
  66. package/dist/scripts/{7234-85d4acaa33-lite.chunk.js → 7234-bcddfe2112-lite.chunk.js} +2 -2
  67. package/dist/scripts/7234-bcddfe2112-lite.chunk.js.map +1 -0
  68. package/dist/scripts/{7383-690bc234f1-lite.chunk.js → 7383-02d4956304-lite.chunk.js} +2 -2
  69. package/dist/scripts/7383-02d4956304-lite.chunk.js.map +1 -0
  70. package/dist/scripts/{7873-2e64f4eb37-lite.chunk.js → 7873-0ce0523a28-lite.chunk.js} +2 -2
  71. package/dist/scripts/{7873-2e64f4eb37-lite.chunk.js.map → 7873-0ce0523a28-lite.chunk.js.map} +1 -1
  72. package/dist/scripts/{8248-050265ed2d-lite.chunk.js → 8248-41dad9bf71-lite.chunk.js} +3 -3
  73. package/dist/scripts/8248-41dad9bf71-lite.chunk.js.map +1 -0
  74. package/dist/scripts/8385-6ef08fa319-lite.chunk.js +2 -0
  75. package/dist/scripts/8385-6ef08fa319-lite.chunk.js.map +1 -0
  76. package/dist/scripts/{8451-1cb649a3f3-lite.chunk.js → 8451-0103210a8f-lite.chunk.js} +2 -2
  77. package/dist/scripts/8451-0103210a8f-lite.chunk.js.map +1 -0
  78. package/dist/scripts/8630-80f676dcda-lite.chunk.js +2 -0
  79. package/dist/scripts/8630-80f676dcda-lite.chunk.js.map +1 -0
  80. package/dist/scripts/8891-5118c47b59-lite.chunk.js +2 -0
  81. package/dist/scripts/8891-5118c47b59-lite.chunk.js.map +1 -0
  82. package/dist/scripts/8982-b9e53e43ec-lite.chunk.js +2 -0
  83. package/dist/scripts/8982-b9e53e43ec-lite.chunk.js.map +1 -0
  84. package/dist/scripts/{9186-daf77d7174-lite.chunk.js → 9186-c1d2615458-lite.chunk.js} +2 -2
  85. package/dist/scripts/9186-c1d2615458-lite.chunk.js.map +1 -0
  86. package/dist/scripts/{9241-dbac9cb9f9-lite.chunk.js → 9241-2386134dd3-lite.chunk.js} +2 -2
  87. package/dist/scripts/9241-2386134dd3-lite.chunk.js.map +1 -0
  88. package/dist/scripts/{9345-30ccf524c5-lite.chunk.js → 9345-0a7f58bb53-lite.chunk.js} +3 -3
  89. package/dist/scripts/9345-0a7f58bb53-lite.chunk.js.map +1 -0
  90. package/dist/scripts/9352-d4b2dc16a8-lite.chunk.js +2 -0
  91. package/dist/scripts/9352-d4b2dc16a8-lite.chunk.js.map +1 -0
  92. package/dist/scripts/{9503-275c13891d-lite.chunk.js → 9503-715c46ecc1-lite.chunk.js} +2 -2
  93. package/dist/scripts/9503-715c46ecc1-lite.chunk.js.map +1 -0
  94. package/dist/scripts/9630-ca2a850260-lite.chunk.js +2 -0
  95. package/dist/scripts/9630-ca2a850260-lite.chunk.js.map +1 -0
  96. package/dist/scripts/{9767-d69fdc31b0-lite.chunk.js → 9767-1b583ceb6c-lite.chunk.js} +2 -2
  97. package/dist/scripts/9767-1b583ceb6c-lite.chunk.js.map +1 -0
  98. package/dist/scripts/9894-7c119a8fe3-lite.chunk.js +2 -0
  99. package/dist/scripts/9894-7c119a8fe3-lite.chunk.js.map +1 -0
  100. package/dist/scripts/bundle-5b65703152.min.js +3 -0
  101. package/dist/scripts/{bundle-0075afb6af.min.js.map → bundle-5b65703152.min.js.map} +1 -1
  102. package/package.json +1 -1
  103. package/dist/scripts/1362-061cd588c0-lite.chunk.js.map +0 -1
  104. package/dist/scripts/1367-12750422b0-lite.chunk.js.map +0 -1
  105. package/dist/scripts/1735-c0f3f1238a-lite.chunk.js.map +0 -1
  106. package/dist/scripts/3677-20958f59d3-lite.chunk.js +0 -2
  107. package/dist/scripts/3677-20958f59d3-lite.chunk.js.map +0 -1
  108. package/dist/scripts/3823-e38a508a3c-lite.chunk.js.map +0 -1
  109. package/dist/scripts/3915-a1f15d687a-lite.chunk.js +0 -2
  110. package/dist/scripts/3915-a1f15d687a-lite.chunk.js.map +0 -1
  111. package/dist/scripts/3978-09fb1f250e-lite.chunk.js.map +0 -1
  112. package/dist/scripts/4014-4225ce1eb6-lite.chunk.js.map +0 -1
  113. package/dist/scripts/4061-525ef00f69-lite.chunk.js.map +0 -1
  114. package/dist/scripts/4191-7612e1713c-lite.chunk.js +0 -2
  115. package/dist/scripts/4191-7612e1713c-lite.chunk.js.map +0 -1
  116. package/dist/scripts/4400-8c36fb4ab5-lite.chunk.js.map +0 -1
  117. package/dist/scripts/4499-1365934bf2-lite.chunk.js +0 -2
  118. package/dist/scripts/4499-1365934bf2-lite.chunk.js.map +0 -1
  119. package/dist/scripts/4806-384760d9c9-lite.chunk.js +0 -2
  120. package/dist/scripts/4806-384760d9c9-lite.chunk.js.map +0 -1
  121. package/dist/scripts/5135-864055ab0b-lite.chunk.js.map +0 -1
  122. package/dist/scripts/5143-286c66de2b-lite.chunk.js.map +0 -1
  123. package/dist/scripts/5743-a764171a6d-lite.chunk.js.map +0 -1
  124. package/dist/scripts/6030-5db8cc1bc4-lite.chunk.js.map +0 -1
  125. package/dist/scripts/618-4334f9451b-lite.chunk.js.map +0 -1
  126. package/dist/scripts/6646-24a34f7d99-lite.chunk.js.map +0 -1
  127. package/dist/scripts/6909-8a45942b63-lite.chunk.js.map +0 -1
  128. package/dist/scripts/7064-3ccf1b82d1-lite.chunk.js +0 -2
  129. package/dist/scripts/7064-3ccf1b82d1-lite.chunk.js.map +0 -1
  130. package/dist/scripts/7122-352fdd3516-lite.chunk.js +0 -2
  131. package/dist/scripts/7122-352fdd3516-lite.chunk.js.map +0 -1
  132. package/dist/scripts/7234-85d4acaa33-lite.chunk.js.map +0 -1
  133. package/dist/scripts/7383-690bc234f1-lite.chunk.js.map +0 -1
  134. package/dist/scripts/8248-050265ed2d-lite.chunk.js.map +0 -1
  135. package/dist/scripts/8385-083e882d77-lite.chunk.js +0 -2
  136. package/dist/scripts/8385-083e882d77-lite.chunk.js.map +0 -1
  137. package/dist/scripts/8451-1cb649a3f3-lite.chunk.js.map +0 -1
  138. package/dist/scripts/8630-0945271ea2-lite.chunk.js +0 -2
  139. package/dist/scripts/8630-0945271ea2-lite.chunk.js.map +0 -1
  140. package/dist/scripts/8891-393bb5bdaf-lite.chunk.js +0 -2
  141. package/dist/scripts/8891-393bb5bdaf-lite.chunk.js.map +0 -1
  142. package/dist/scripts/8982-8c21fab48a-lite.chunk.js +0 -2
  143. package/dist/scripts/8982-8c21fab48a-lite.chunk.js.map +0 -1
  144. package/dist/scripts/9186-daf77d7174-lite.chunk.js.map +0 -1
  145. package/dist/scripts/9241-dbac9cb9f9-lite.chunk.js.map +0 -1
  146. package/dist/scripts/9345-30ccf524c5-lite.chunk.js.map +0 -1
  147. package/dist/scripts/9352-04db4c533d-lite.chunk.js +0 -2
  148. package/dist/scripts/9352-04db4c533d-lite.chunk.js.map +0 -1
  149. package/dist/scripts/9503-275c13891d-lite.chunk.js.map +0 -1
  150. package/dist/scripts/9630-285237c980-lite.chunk.js +0 -2
  151. package/dist/scripts/9630-285237c980-lite.chunk.js.map +0 -1
  152. package/dist/scripts/9767-d69fdc31b0-lite.chunk.js.map +0 -1
  153. package/dist/scripts/9894-10943e41f7-lite.chunk.js +0 -2
  154. package/dist/scripts/9894-10943e41f7-lite.chunk.js.map +0 -1
  155. package/dist/scripts/bundle-0075afb6af.min.js +0 -3
  156. /package/dist/scripts/{1362-061cd588c0-lite.chunk.js.LICENSE.txt → 1362-56810ef4c8-lite.chunk.js.LICENSE.txt} +0 -0
  157. /package/dist/scripts/{1735-c0f3f1238a-lite.chunk.js.LICENSE.txt → 1735-e4cdbc46ed-lite.chunk.js.LICENSE.txt} +0 -0
  158. /package/dist/scripts/{4014-4225ce1eb6-lite.chunk.js.LICENSE.txt → 4014-3eccce2f89-lite.chunk.js.LICENSE.txt} +0 -0
  159. /package/dist/scripts/{4050-cf35c4ec45-lite.chunk.js.LICENSE.txt → 4050-ffe5b6ae6d-lite.chunk.js.LICENSE.txt} +0 -0
  160. /package/dist/scripts/{6413-c4333e80d4-lite.chunk.js.LICENSE.txt → 6413-caaae6a383-lite.chunk.js.LICENSE.txt} +0 -0
  161. /package/dist/scripts/{6646-24a34f7d99-lite.chunk.js.LICENSE.txt → 6646-c5775f6553-lite.chunk.js.LICENSE.txt} +0 -0
  162. /package/dist/scripts/{8248-050265ed2d-lite.chunk.js.LICENSE.txt → 8248-41dad9bf71-lite.chunk.js.LICENSE.txt} +0 -0
  163. /package/dist/scripts/{9345-30ccf524c5-lite.chunk.js.LICENSE.txt → 9345-0a7f58bb53-lite.chunk.js.LICENSE.txt} +0 -0
  164. /package/dist/scripts/{bundle-0075afb6af.min.js.LICENSE.txt → bundle-5b65703152.min.js.LICENSE.txt} +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scripts/7122-dbf374af58-lite.chunk.js","mappings":"8LAWMA,EAAY,qBAUZ,SAAUC,EAAuCC,GACrD,IAAMC,GAAc,UAEdC,GAAY,OAAiBD,GAEnC,OACE,gBAAC,IAAa,CACZE,QAASH,EAAMG,SAAW,UAC1BC,KAAK,SACLC,UAAWH,EACXI,KAAMN,EAAMM,KACZC,UAAWP,EAAMO,UAAYP,EAAMO,UAAY,GAC/CC,YAAaP,EAAYQ,cAExBT,EAAMU,WACH,gCAAGV,EAAMU,YACT,gBAAC,IAAI,CAACZ,UAAWA,EAAWa,OAAQX,EAAMY,MAAQ,SAAW,SAGvE,C,ucC7BM,SAAUC,EAAab,GAC3B,IAAQc,EAAqFd,EAArFc,MAAOC,EAA8Ef,EAA9Ee,uBAAwBC,EAAsDhB,EAAtDgB,wBAAyBT,EAA6BP,EAA7BO,UAAcU,EAAU,EAAKjB,EAAvF,0EAEN,OACE,gBAACkB,EAAA,QAAU,CAACX,UAAU,cACpB,uBAAKA,UAAS,qBAAgBA,GAAa,KACzC,gBAACY,EAAY,eAACZ,UAAU,oBAAuBU,IAC/C,gBAACC,EAAA,QAAU,CACTX,UAAS,0CAAiE,WAA5BS,EAAuC,YAAc,GAAE,wBACnGD,GACFK,QAASH,EAAWI,IAEnBP,GAEFd,EAAMsB,iBAAmBtB,EAAMuB,qBAC9B,gCACE,iCACA,gBAACC,EAAA,EAAO,CAACC,QAASzB,EAAMsB,gBAAiBf,UAAU,aAChDP,EAAMuB,uBAOrB,C,gDCzBM,SAAUG,EAA4C1B,GAC1D,IAAQ2B,GAAW,UAAXA,OAEFC,EAAQC,EAAA,MAAiBF,EAAQ3B,EAAM8B,WAE7C,MAAqB,iBAAVF,EACF,iCAGP,uBAAKrB,UAAU,sCACZqB,EAAMG,OAAM,IAAG/B,EAAMgC,MAAK,cAGjC,CCvBA,SAAgB,eAAiB,QAAQ,cAAgB,QAAQ,kBAAoB,QAAQ,0BAA4B,QAAQ,YAAc,QAAQ,QAAU,S,sbCmB3JlC,EAAY,mBAkCZ,SAAUqB,EACdnB,GAEA,I,IAAQiC,EAAgDjC,EAAhDiC,SAAUC,EAAsClC,EAAtCkC,mBAAuBjB,EAAU,EAAKjB,EAAlD,mCAE8C,G,EAA1B,WAAeA,EAAMI,M,EAAK,E,o4BAA5CA,EAAI,KAAE+B,EAAO,KASfC,EAAmBC,EAAA,aAA0BJ,GAC/C,SAACK,GAAa,OAAKL,EAASK,EAAE,EAC9B,iBAAqBL,GAAYA,EAAW,KAEhD,GAAwB,aAApBhB,EAAWb,KACb,OAAI8B,EAEA,uBAAK3B,UAAU,qBACb,gBAAC,KAAK,iBAAMsB,EAAA,OAAkBZ,EAAY,CAAC,cACxCmB,GAGH,uBAAK7B,UAAW,WACd,gBAACgC,EAAA,EAAO,CAACC,UAAU,SAASlC,KAAK,SAOvC,gBAAC,KAAK,iBAAMuB,EAAA,OAAkBZ,EAAY,CAAC,cACxCmB,GAKP,IAAIK,EAAqB,qBAAH,OAAwB,qBAY9C,OAVIxB,EAAWV,YACbkC,GAAsB,IAAJ,OAAQxB,EAAWV,YAEnCU,EAAWZ,WACboC,GAAsB,IAAJ,OAAQ,8BAO1B,uBAAKlC,UAAWkC,GACd,gBAAC,KAAK,iBACCZ,EAAA,OAAkBZ,EAAY,CAAE,WAAY,OAAQ,cAAe,CACxEb,KAAMA,EACNG,UAAS,UAAK,gBAAoB,gDAEjC6B,GAEkB,aAApBnB,EAAWb,MACV,gBAACsC,EAAA,EAAY,CACXC,QAAkB,aAATvC,EAAsB,eAAyB,gBACxDG,UAAS,uCAAkC,kBAC3CqC,QA1DR,WAEIT,EADW,aAAT/B,EACM,OAEA,WACZ,IA0DF,CAOM,SAAUyC,EAAqC7C,GACnD,IACEc,EAWEd,EAXFc,MACAP,EAUEP,EAVFO,UACAuC,EASE9C,EATF8C,qBACAC,EAQE/C,EARF+C,iBACAC,EAOEhD,EAPFgD,YACAC,EAMEjD,EANFiD,qBACAC,EAKElD,EALFkD,SACAC,EAIEnD,EAJFmD,SACAC,EAGEpD,EAHFoD,kBACAC,EAEErD,EAFFqD,mBACGpC,EAAU,EACXjB,EAZE,qKAcN,GAA4B,UAApBsD,EAAM,EAANA,OAAQC,EAAO,EAAPA,QAIVC,EAAmB,WAAO,EAEhC,GAAwB,aAApBvC,EAAWb,KAAqB,CAClC,IAAMqD,EAAS5B,EAAA,OAAkB7B,EAAO,CAAE,WAAY,yBAKtD,OAHIA,EAAMK,WACRoD,EAAOC,SAAWF,GAEb,gBAAC3C,EAAY,iBAAK4C,GAC1B,CAED,IAAME,EAAoB,OAAH,wBAClB1C,GAAU,CACbV,UAAWqD,EAAA,gCACTN,EACAC,EACAtC,EAAW4C,KACXV,EACA5C,EACoB,iBAAbP,EAAM8D,GAAkB9D,EAAM8D,GAAK,QAO9C,OAHI9D,EAAMK,WACRsD,EAAkBD,SAAWF,GAG7B,gBAACtC,EAAA,QAAU,CAACX,UAAS,qBAAgB8C,MAChCvC,GACD,gBAACI,EAAA,QAAU,CAACE,QAASH,EAAWI,GAAId,UAAU,6BAC3CO,EACAiC,GAAoB,wBAAMxC,UAAU,eAAa,KACjDyC,GACC,gBAACN,EAAA,EAAY,CACXnC,UAAS,uCAAkC,eAC3CoC,QAAS,UACToB,MAAOf,EACPgB,iBAAkBf,EAClBgB,iBAAe,IAGlBb,GAAqB,wBAAM7C,UAAU,kBAAgB,IAAO,gBAAC2D,EAAA,EAAI,CAACpE,UAAWA,EAAWa,OAAO,gBAE7FmC,KAA2B7B,EAAiDkD,WAC7E,uBAAK5D,UAAU,WACb,gBAACmB,EAAgB,CACfI,UAAYb,EAAW4C,KACvB7B,MAAQf,EAAiDkD,cAOnE,gBAAChD,EAAY,iBAAKwC,EAAiB,+BAAwB1C,EAAW4C,KAAI,cAEvEX,GACD,gBAAChC,EAAA,OAAS,CAACX,UAAU,kBAClB2C,GAIL,gBAAC,KAAY,CAACW,KAAM5C,EAAW4C,OAC5B,SAACO,GAAoB,OAAK,gBAAClD,EAAA,mBAAqB,CAACG,GAAE,UAAKJ,EAAW4C,KAAI,SAASzD,KAAK,UAAUiE,KAAK,UAAUD,EAAqC,IAI5J,CAvKAjD,EAAamD,aAAe,CAC1BC,aAAc,OA2EhB1B,EAAUyB,aAAe,CACvBC,aAAc,MACdtB,qBAAsB,M,ghBCtElB,SAAUuB,EAIdxE,GACA,IAAQyE,EAAmFzE,EAAnFyE,kBAAmBC,EAAgE1E,EAAhE0E,mBAAoBC,EAA4C3E,EAA5C2E,cAAeC,EAA6B5E,EAA7B4E,SAAa3E,EAAW,EAAKD,EAArF,uEAMA6E,EAAqCJ,GAAqBzE,EAAM8E,iBAClE9E,EAAM8E,iBAAiBC,KA3D7B,SAA4DJ,GAC1D,IAAKA,EACH,MAAO,CAAC,EAEV,IAAMhD,EAAS,cAAuBgD,GAetC,OAbA,SAASK,EAAgBC,GACvBC,OAAOC,KAAKxD,GAAQyD,SAAQ,SAACC,GACtB1D,EAAO2D,eAAeD,KAGvB,aAAsBJ,EAAMI,IAC9BL,EAAgBC,EAAMI,IACC,OAAhB1D,EAAO0D,WACP1D,EAAO0D,GAClB,GACF,CAEAL,CAAgBrD,GACTA,CACT,CAuCkC4D,CAAsBZ,IAClDA,EA4BEa,EAA+B,CACnCC,mBAAoBzF,EAAMyF,oBAG5B,OACE,gBAAC,KAAM,eACLC,oBAAkB,GACbzF,EAA6D,CAClE0E,cAAeE,EACfD,SAnCoB,SACtBjD,EAAkB,GAEhB,IADAgE,EAAa,EAAbA,cAAeC,EAAS,EAATA,UAAWC,EAAa,EAAbA,cAOtBC,EAAgBpB,GAAsB1E,EAAM8E,iBAC9C9E,EAAM8E,iBAAiBC,KAAKpD,GAC5BA,EAEJiD,EAASkB,GAAe,WAAoD,I,IAAnDC,EAAA,uDAA6C,CAAC,EAGrE,GAFAA,EAAQC,OAASJ,IAEbG,EAAQzC,OACV,IAAK,IAAL,MAA6B4B,OAAOe,QAAQF,EAAQzC,QAAO,eAAE,CAAxD,O,EAAA,K,EAAA,E,o4BAAQ+B,EAAG,KAAEa,EAAK,KACrBL,EAAcR,EAAKa,EACpB,CAGHP,GAAc,EAChB,GACF,EAYIH,cAAeA,IAEd,eAA0BxF,EAAMiC,UAC7B,SAACK,GAA0B,OAAMtC,EAAMiC,SAA6DK,EAAE,EACtG,iBAAqBtC,EAAMiC,UAAYjC,EAAMiC,SAAW,KAIlE,CAEM,SAAUkE,IACd,OAAO,SACT,CApEA3B,EAAYF,aAAe,CACzBG,mBAAmB,EACnBC,oBAAoB,E,oHCnCtB,SAAS0B,EAAYpG,GACnB,OACE,kCACKA,EAAMqG,IAAI1D,SACX,uBAAKpC,UAAWP,EAAMqG,IAAIxC,KAAO,OAAS,IACxC,gBAAC,IAAY,CAAClB,QAAS3C,EAAMqG,IAAI1D,WAIpC3C,EAAMqG,IAAIxC,KAEmB,iBAArB7D,EAAMqG,IAAIC,OACjB,uBAAK/F,UAAU,QACb,gBAAC,IAAK,CAACH,KAAM,UAAiBmG,KAAMvG,EAAMqG,IAAIC,SAKxD,CA8BM,SAAUE,EAAgBxG,G,MAW9B,OACE,uBAAKO,UAA0B,QAAf,EAAAP,EAAMO,iBAAS,QAAI,GAAIkG,IAAKzG,EAAM0G,cAChD,sBAAInG,UAAS,qDACwB,oBAAsB,qBACvDP,EAAM2G,aAAe,gBAAqB,GAAE,qBAC5C3G,EAAM4G,cAAa,aAEpB5G,EAAM6G,KAAKC,KAAI,SAACT,EAAKU,GACpB,OACE,sBACExG,UAAS,gCACD,QAAU,YAAI8F,EAAIW,OAAS,eAAiB,uBAAsB,6BACtEX,EAAIxC,KAAO,aAAkB,GAAE,YAAIwC,EAAI9F,UAAS,oBAEpD8E,IAAK0B,GAEJV,EAAI5E,QACH,gBAAC,IAAO,CACNA,QAAS4E,EAAI5E,QACbwF,cAAeZ,EAAIY,cACnBC,iBAAkBb,EAAIa,iBACtB3G,UAAS,sKAE4C,YAAc,yBAGnE,gBAAC6F,EAAW,CAACC,IAAKA,KAGpB,gBAAC,IAAS,CACR9F,UAAS,sKAE4C,YAAc,wBAEnEqC,QAAS,WAAF,OA5CvB,SAAqByD,IACfA,EAAIW,QAAWX,EAAIc,WAGvBd,EAAIc,WAEAd,EAAIY,eAAiBZ,EAAIa,kBAC3B,kBAA8Bb,EAAIY,cAAeZ,EAAIa,kBACzD,CAoC+BE,CAAYf,EAAI,GAE/B,gBAACD,EAAW,CAACC,IAAKA,KAK5B,KAIR,CA5DAG,EAAgBlC,aAAe,CAC7BqC,aAAc,K,wEC1DV7G,EAAY,0BAaZ,SAAUuH,EAAuBrH,G,QAC/B6G,EAAO,CAAC,CACZhD,KAAM,cAA0B/D,EAAW,YAC3C2B,QAAuB,QAAd,EAAAzB,EAAMsH,gBAAQ,eAAEC,SACzBP,OAAyB,aAAjBhH,EAAMgH,QAEb,CACDnD,KAAM,cAA0B/D,EAAW,YAC3C2B,QAAuB,QAAd,EAAAzB,EAAMsH,gBAAQ,eAAEE,SACzBR,OAAyB,aAAjBhH,EAAMgH,SAIhB,OACE,uBAAKzG,UAAWP,EAAMO,WACpB,gBAAC,IAAe,CAACsG,KAAMA,IAG7B,C,wECrCA,SAAgB,YAAc,SCO9B,IACMY,EAAYC,EAAA,mBADA,mCAQZ,SAAUC,EAAsB3H,GACpC,OACE,uBAAKO,UAAU,iBAAiB8D,KAAK,SACnC,gBAACuD,EAAA,EAAO,CAAC7D,MAAO0D,EAAU,kBAAmBI,UAAQ,EAACC,UAAU,OAAOC,kBAAmB,gBACxF,0BAAQ3H,KAAK,SAASG,UAAS,+BAA0B,cAAqBqC,QAAS5C,aAAK,EAALA,EAAOgI,WAAYP,EAAU,aAY5H,C,2DC3BMQ,EAAM,IAAIC,KAEHC,EAAkB,CAC7BC,gBAAe,SAAC,GASf,IAPGC,EAAO,EAAPA,QACAC,EAAW,EAAXA,YAAW,IACXC,UAAAA,OAAS,IAAG,IAAC,EAOTC,EAAQF,EAAYxB,KAAI,SAAA2B,GAAO,OAAI,0BAAiCA,EAASJ,EAASE,EAAU,IAEhGG,EAAgBF,EAAM1B,KAAI,SAAA6B,GAAC,OAAIA,EAAEC,QAAQ,IAE/C,MAAO,CAAEC,MADS,WAAkB,UAAkBL,GAAQ,MACnCM,WAAYJ,EAAeK,OAAQR,EAChE,EAGAS,yBAAwB,SAAEC,G,MACxB,IAAKA,IAAYA,EAAQC,mBAAqBD,EAAQC,iBAAiBC,QACrE,OAAO,KAET,IAAMC,EAAWjB,EAAgBC,gBAAgB,CAC/CC,QAASY,EAAQC,iBAAiBL,KAClCP,YAAaW,EAAQC,iBAAiBJ,WACtCP,UAAWU,EAAQC,iBAAiBH,SAEhCM,EAAgB,IAAInB,KACpBoB,EAAiBrB,EAAIW,SAErBW,EAAmBH,EAASN,WAAWU,MAAK,SAACC,EAAGC,GAAC,OAAKD,EAAIC,CAAC,IAC3DC,EAAiBP,EAASN,WAAWc,SAASN,GAC9CT,EAAOO,EAASP,KAChBE,EAAyB,QAAhB,EAAAK,aAAQ,EAARA,EAAUL,cAAM,QAAI,EAEnC,GAAIY,IACFN,EAAcQ,SAAShB,EAAME,EAAQ,EAAG,GACpCd,EAAMoB,GACR,OAAOA,EAIX,IAAMS,EAAoB,IAAI5B,KAC1B6B,EAAuBR,EAAiBS,MAAK,SAAAC,GAAC,OAAIA,EAAIX,CAAc,IACnES,IAEHA,EAAuBR,EAAiB,IAG1C,IAAMW,EAAMC,KAAKC,IAAIL,EAAuBT,GAG5C,OAFAQ,EAAkBO,QAAQpC,EAAIqC,UAAYJ,GAC1CJ,EAAkBD,SAAShB,EAAM,EAAG,EAAG,GAChCiB,CACT,E,mFCnDWS,EAAoB,CAC/BC,aAAY,WACV,MAAO,CACLC,IAAK,kCACLpF,IAAK,YAET,EAEAqF,YAAW,SAACC,GACV,IAAMC,EAAqB,CAAC,EAW5B,GAVID,EAAYE,SACdD,EAAOC,OAASF,EAAYE,QAE1BF,EAAYnB,OACW,WAArBmB,EAAYnB,KACdoB,EAAOE,MAAQ,MAEfF,EAAOE,MAAQ,QAGfH,EAAYI,UAAW,CACzB,IAAMC,EAAW,GACbL,EAAYI,UAAUnB,SAAS,cACjCoB,EAASC,KAAI,MAAbD,EAAiB,CAAE,cAA0B,yBAE3CL,EAAYI,UAAUnB,SAAS,WACjCoB,EAASC,KAAK,YAEZN,EAAYI,UAAUnB,SAAS,eACjCoB,EAASC,KAAI,MAAbD,EAAiB,CACf,cACA,WACA,YACA,iBAEJJ,EAAOM,OAASF,CACjB,CAID,OAFAJ,EAAOxK,KAAO,cAEP,CACLqK,IAAK,eAAqB,0BAA2BG,GACrDvF,IAAK,kBAAF,OAAoBsF,EAAYE,OAAM,YAAIF,EAAYnB,KAAI,YAAImB,EAAYI,WAEjF,EAEAI,UAAS,SACP5E,EACA6E,EACAC,GAEA,MAAO,CACLZ,IAAK,0BACLpF,IAAK,iBACLjF,KAAM,SACNkL,iBAAkB,CAAC,kBACnB/E,KAAAA,EACA6E,QAAAA,EACAC,MAAAA,EAEJ,EAEAE,cAAa,SAAClK,GACZ,MAAO,CACLoJ,IAAK,2BAAF,OAA6BpJ,EAAE,YAClCgE,IAAK,eAAF,OAAiBhE,GAExB,EAEAmK,wBAAuB,SAACC,GACtB,MAAO,CACLhB,IAAK,0BAAF,OAA4BgB,EAAa,aAC5CpG,IAAK,iBAAF,OAAmBoG,GAE1B,EAEAC,sBAAqB,SACnBnF,EACAkF,EACAL,EACAC,EACAM,GAEA,MAAO,CACLvL,KAAM,QACNqK,IAAK,0BAAF,OAA4BgB,EAAa,aAC5CpG,IAAK,wBAAF,OAA0BkB,EAAKqF,WAAU,YAAIH,GAChDH,iBAAkB,CAAC,iBAAD,OAAkBG,IACpClF,KAAAA,EACA6E,QAAAA,EACAC,MAAAA,EACAM,OAAAA,EAEJ,E,kDChFW/H,EAAa,CACxBiI,8BAA6B,SAC3BvI,EACAC,EACAuI,EACAxL,EACAyL,EACA3L,GAEA,IAAIG,EAAY,GAWhB,OATAA,EA/BJ,SAAqBH,EAAcE,GACjC,IAAIC,EAAY,GAgBhB,OAZIA,EADG,WADCH,EAEQ,cAGA,eAGH,OAATE,IACFC,GAAa,IAAJ,OAAQA,EAAS,QAEf,OAATD,IACFC,GAAa,IAAJ,OAAQA,EAAS,QAErBA,CACT,CAagByL,CAAY5L,EAAME,IAG1B,QAAMiD,EAASuI,KAAc,QAAMxI,EAAQwI,KAC7CvL,GAAa,eAEXwL,IACFxL,GAAa,IAAJ,OAAQwL,IAEZxL,CACT,E,qOC/BF,IAAMT,EAAY,0BAKLmM,EAAuB,SAACC,GACnC,IAAQC,GAAmB,SAAnBA,eACFC,GAAiB,SAOvB,GAAIF,EACF,OAAOC,EAAeD,GAExB,IAAMG,EAAe,2BAOrB,OAAIA,EAAaC,cAAgB,cAG1BF,EAAeG,MAAK,SAAAC,GACzB,OAAOA,EAAMC,QAAQF,MAAK,SAAAG,GACxB,MAAI,YAAaA,GACRA,EAAejL,QAAQkL,SAAWN,EAAaM,MAI1D,GACF,GACF,EAUM,SAAUC,EAAe5M,G,MACvB6M,EAAYZ,EAAqBjM,EAAMkM,qBAW7C,GATA,aAAgB,WACTW,GACH,eAA2B,CACzBP,YAAa,aACbK,OAAQ,mBACP,CAAEG,SAAS,GAElB,GAAG,CAACD,KAECA,EACH,OAAO,iCAET,I,EAAME,EAAc/M,EAAM+M,YAAYjG,KAAI,SAACjD,EAAMmJ,GAAC,MAAM,CACtDnJ,KAAAA,EACApC,QAAS,CACP6K,YAAa,aACbK,OAAQ,mBAEV3F,OAAQgG,IAAMhN,EAAM+M,YAAYhL,OAAS,EAC1C,IAED,OACE,uBAAKxB,UAAU,QACb,uBAAKA,UAAU,qDACb,sBAAIA,UAAU,MAAMP,EAAMiN,SACN,QAAnB,EAAAjN,EAAMkN,qBAAa,wBAEtB,uBAAK3M,UAAU,QACb,gBAAC,KAAW,CACVwM,YAAW,CACT,CACElJ,KAAM,cAA0B/D,EAAW,sBAC3C2B,QAAS,CACP6K,YAAa,aACbK,OAAQ,qBAEX,Q,EACEI,E,wmBAIR/M,EAAMmN,aACL,gCACE,yBAAInN,EAAMmN,aACV,4BAIHnN,EAAMiC,SAGb,C,yGCzGMnC,EAAY,0BAEZ,SAAUsN,IACd,OACE,gBAAC,IAAU,KACT,gBAAC,UAAgB,CAACC,IAAK,4CACvB,gBAAC,YAAkB,KAAC,gBAAC,IAAI,CAACvN,UAAWA,EAAWa,OAAO,kBACvD,gBAAC,SAAe,CAACJ,UAAU,aAAY,gBAAC,IAAI,CAACT,UAAWA,EAAWa,OAAO,eAS1E,gBAAC,IAAY,CACXJ,UAAU,eACV+M,KAAM,2BACNC,QAAM,GAEN,gBAAC,IAAI,CAACzN,UAAWA,EAAWa,OAAO,YAK3C,C,6NClCA,SAAgB,OAAS,QAAQ,YAAc,QAAQ,OAAS,QAAQ,YAAc,QAAQ,QAAU,QAAQ,eAAiB,S,sGCajI,IAAMb,EAAY,8BACZ2H,EAAYC,EAAA,mBAAiC5H,GAG7C0N,EAAQ,IAAIC,MAAM,IAAIC,KAAK,GAAG5G,KAAI,SAAC6G,EAAGX,GAAC,OAAKA,CAAC,IAC7CY,EAAU,CAAE,QAAS,UACrBC,EAAY,CAAE,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAChCC,EAAO,IAAI5F,KACX6F,GAAc,IAAI7F,MAAO8F,oBAAsB,GAErD,SAASC,EAAYC,GACnB,GAAe,IAAXA,EACF,MAAO,WAET,IACMC,EAAkB,KAAXD,EAAgB,GAAKA,EAAS,GAE3C,OAHaA,EAAS,GAAK,EAIlBC,EAAO,GAAK,IAAH,OAAOA,EAAI,oBAAcA,EAAI,UAGxCA,EAAO,GAAK,IAAH,OAAOA,EAAI,oBAAcA,EAAI,SAC/C,CAEA,SAASC,EAAmBzF,GAC1B,OAAO0F,EAAA,SAAkBA,EAAA,UAAmBP,EAAMnF,GAAI,MACxD,CA0BM,SAAU2F,I,MACRrO,GAAc,UAyBpB,OACE,gBAAC,KAAI,KACH,2BACE,yBAAG,gBAACiE,EAAA,EAAI,CAACpE,UAAWA,EAAWa,OAAO,UAEtC,uBAAKJ,UAAU,QAWf,uBAAKA,UAAU,0BACb,qBAAGA,UAAU,aAAakH,EAAU,UACpC,uBAAKlH,UAAU,OACb,uBAAKA,UAAU,sCACb,gBAACsC,EAAA,EAAS,CACRtC,UAAS,UAAK,SAAa,SAC3Bc,GAAG,QACHwC,KAAK,UACLC,GAAG,SACHoC,MAAiC,QAA1B,EAAAjG,EAAY0B,OAAO4M,eAAO,QAAI,GAEpCf,EAAM1G,KAAI,SAAAkG,GAAC,OAAI,0BAAQzM,UAAU,YAAY2F,MAAO8G,EAAG3H,IAAK2H,GAAIiB,EAAWjB,GAAY,KAG1F,8CAAee,GAAW,KAAMS,KAAKC,iBAAiBC,kBAAkBC,SAAS7B,QAAQ,IAAK,WAMpG,uBAAKvM,UAAU,0BACb,qBAAGA,UAAU,aAAakH,EAAU,WACpC,uBAAKlH,UAAS,cAAS,UAAc,uBACnC,gBAACsC,EAAA,EAAS,CACRtC,UAAS,UAAK,SAAa,mBAC3Bc,GAAG,SACHwC,KAAK,SACLC,GAAG,SACHoC,MAAOjG,EAAY0B,OAAOiN,QAEzBhB,EAAQ9G,KAAI,SAAAkG,GAAC,OAAI,0BAAQzM,UAAU,YAAY2F,MAAO8G,EAAG3H,IAAK2H,GAAI6B,EAAA,cAAuB7B,GAAY,KAGzE,WAA9B/M,EAAY0B,OAAOiN,QAClB,uBAAKrO,UAAS,sDAAiD,mBAC7D,wBAAMA,UAAU,aAAakH,EAAU,OACvC,uBAAKlH,UAAU,kBACZsN,EAAU/G,KAAI,SAAAgI,GACb,OACE,0BACEzJ,IAAKyJ,EACLvO,WAhFMwO,EAgFwBD,EA/E9CvO,EAAY,aAEZN,EAAY0B,OAAOmH,WAAWc,SAASmF,GACzCxO,GAAa,YAEbA,GAAa,oBAERA,GAyEaqC,QAAS,SAAAoM,IAtE/B,SAAiBA,EAAqBD,GACpCC,EAAEC,iBAEF,I,EAAMC,EAAYjP,EAAY0B,OAAOmH,WAAWc,SAASmF,GACrD9O,EAAY0B,OAAOmH,WAAWqG,QAAO,SAAAC,GAAC,OAAIA,IAAML,CAAG,IAAC,U,+CAC/C9O,EAAY0B,OAAOmH,a,kjBAAU,CAAEiG,IAEf,IAArBG,EAAUnN,QAEd9B,EAAYoP,cAAc,aAAcH,EAC1C,CA6DwB,CAAQF,EAAGF,EACb,EACA1O,KAAK,UAEJgO,EAAmBU,GAAQQ,OAAO,IAtFzD,IAA4BP,EACtBxO,CAwFU,SAOZ,uBAAKA,UAAU,wDA3HrB,SAAyBoB,GACvB,OAAQA,EAAOiN,QACb,IAAK,QACH,OAAOnH,EAAU,UAAW,CAAE0G,KAAMF,EAAWtM,EAAO4M,SAAUK,OAAQjN,EAAOiN,SACjF,IAAK,SACH,IAEIW,EAFEC,EAAiB3B,EAAUsB,QAAO,SAAAC,GAAC,OAAIzN,EAAOmH,WAAWc,SAASwF,EAAE,IAAEtI,KAAI,SAAA6B,GAAC,OAAIyF,EAAmBzF,EAAE,IAW1G,OALE4G,EAHEC,EAAezN,QAAU,EACTyN,EAAeC,MAAM,EAAGD,EAAezN,OAAS,GAAG2N,KAAK,MAEpEC,SADoBH,EAAeA,EAAezN,OAAS,GAG3DyN,EAAeE,KAAK,MAGrBjI,EAAU,gBAAiB,CAChCmI,SAAUL,EACVpB,KAAMF,EAAWtM,EAAO4M,SACxBK,OAAQjN,EAAOiN,SAGvB,CAsGSiB,CAAgB5P,EAAY0B,SAG/B,gBAAC5B,EAAA,EAAW,CACVa,OAAO,EACPT,QAAQ,iBAKhB,C,eCpKM,EAAY,8BAOZ2P,EAAiB,OAAaC,MAAwB,CAC1DjH,WAAY,OAAoBkH,IAAI,GACpCzB,QAAS,OAAayB,IAAI,GAAGC,IAAI,IAAIC,WACrCtB,OAAQ,OAAgCuB,MAAM,CAAE,QAAS,WAAW,QAAS,WAuDzE,SAAUC,EAAgBpQ,GAI9B,OACE,uBAAKO,UAAU,4BACb,sBAAIA,UAAU,MAAK,gBAAC2D,EAAA,EAAI,CAACpE,UAAW,EAAWa,OAAO,aAEtD,gBAAC6D,EAAA,EAAW,CACVG,eApCkByE,EAoCcpJ,EAAMwH,SAAS0B,iBAnCrD,EAA6Bf,EAAA,kBAAgC,CAC3DE,QAASe,EAASP,KAClBP,YAAac,EAASN,WACtBP,UAAWa,EAASL,SAGf,CACLwF,QAPU,EAAJ1F,KAQNC,WARsB,EAAVA,WASZ8F,OAAuC,IAA/BxF,EAASN,WAAW/G,OAAe,QAAU,WA2BjD6C,SATN,SAAgByL,EAAuBC,GACrCtQ,EAAMuQ,OAfV,SAA4BF,EAAuBjH,GACjD,IAAMoH,EAlCR,SAAyB,GASxB,IAPG3H,EAAI,EAAJA,KAEAE,EAAM,EAANA,OAOIyH,EARI,EAARZ,SAQmB9I,KAAI,SAAA2B,GAAO,OAAI4F,EAAA,eAAwB5F,EAASI,EAAME,EAAO,IAKlF,MAAO,CAAEF,MAJOwF,EAAA,SAAkBoC,EAAA,QAAkBD,GAAM,MAIjC1H,WAHN0H,EAAI1J,KAAI,SAAA6B,GAAC,OAAIA,EAAEC,QAAQ,IAGOG,QAF/BsF,EAAA,SAAkBoC,EAAA,QAAkBD,GAAM,MAG9D,CAiBcE,CAAgB,CAAE7H,KAAMwH,EAAI9B,QAASqB,SAAUS,EAAIvH,WAAYC,OAAQ,IAEnF,MAAO,CACLG,iBAAkB,CAChBJ,WAA2B,UAAfuH,EAAIzB,OAAqB,CAAE,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAM4B,EAAI1H,WACnED,KAAM2H,EAAI3H,KACVE,OAAQyH,EAAIzH,OACZI,QAASC,EAASD,SAGxB,CAIiBwH,CAAmBN,EAAKrQ,EAAMwH,SAAS0B,kBAAmBoH,EACzE,EAQMxL,iBAAkBgL,GAElB,gBAACxB,EAAY,QAxCrB,IAA0BlF,EACxB,CA2CF,C,6HC7FA,SAAgB,SAAW,QAAQ,QAAU,SCwB7C,IACM,EAAY1B,EAAA,mBADA,mCAGZ,SAAUkJ,I,UACRC,EAAc,kBAAkCC,EAAA,iBAChDC,EAAY,kBAAwCxG,EAAA,kBACpD/C,EAAW,mBAA4D,QAAd,EAAAuJ,EAAUxK,YAAI,eAAElF,KAC7EkJ,EAAA,0BAA0CwG,EAAUxK,KAAKlF,KAErD2P,EAAQ,kBACRC,GAAS,UAEf,EAAAC,EAAA,GAAmB,CAAEnN,MAAO,EAAU,eAgBtC,OAA8B,EAAAoN,EAAA,GAAiBN,EAAYtK,MAAnD6K,EAAO,EAAPA,QAASC,EAAQ,EAARA,SAQjB,OACE,gBAACzE,EAAA,EAAc,CACbK,QAAS,EAAU,WACnBF,YAAa,CAAC,EAAU,eACxBG,cAVJ,W,MACE,MAA+B,YAAb,QAAd,EAAA6D,EAAUxK,YAAI,eAAE2E,QACX,iCACF,gBAACvD,EAAA,EAAqB,CAACK,UAAWoJ,EAASE,WAAYD,GAChE,EAOInF,oBAAqBqF,EAAA,aAGO,YAAb,QAAd,EAAAR,EAAUxK,YAAI,eAAE2E,SACf,gBAAC7D,EAAA,EAAsB,CACrBL,OAAO,WACPM,SAAU,CACRC,SAAU,CAAE+E,YAAa,aAAsBK,OAAQ,wBACvDnF,SAAU,CAAE8E,YAAa,aAAsBK,OAAQ,oCAIjC,YAAb,QAAd,EAAAoE,EAAUxK,YAAI,eAAE2E,QACf,gBAACkC,EAAA,EAAuB,MAExB,uBAAK7M,UAAS,uEAAkE,aAC7EiH,EAASjB,KACR,gCACE,gBAAC6J,EAAe,CAACG,OA7C7B,SAAgBF,EAA0DC,GACxE,IAAMkB,EAAU,OAAH,wBAAQnB,GAAG,CAAEoB,OAAQZ,EAAYtK,KAAKlF,GAAIuK,WAAYiF,EAAYtK,KAAKqF,aAEpFoF,EACEzG,EAAA,wBACEiH,EACAT,EAAUxK,KAAKlF,IACf,kBAAM4P,EAAO7F,QAAQ,EAAU,WAAW,IAC1C,kBAAM6F,EAAO5F,MAAM,EAAU,SAAS,IACtC,kBAAMiF,aAAM,EAANA,GAAU,IAGtB,EAiC6C9I,SAAUA,EAASjB,QAQtD,uBAAKhG,UAAW,WACd,gBAACgC,EAAA,EAAO,CAACuB,GAAG,MAAMtB,UAAU,SAAS6B,KAAK,aASxD,C,yICzFMoD,EAAY,qBADA,uBAGL0J,EAAmB,SAACN,GAC/B,IAAMa,EAAa,uBAEbT,GAAS,SAEf,OAAKJ,EAqCE,CAAEQ,SAHT,WACE,EAEiBD,QAjCnB,WACE,IAAMO,EAAmB,CACvBvR,KAAM,aACN6M,QAASxF,EAAU,yBACnBmK,QAASnK,EAAU,sBACnBoK,YAAapK,EAAU,6BACvBqK,iBAAkB,aAGdvL,EAAO,CACX1C,KAAM,cACNzD,KAAM,cACN2R,SAAU,CACRC,eAAgBnB,EAAYjF,WAC5BqG,iBAAkB,cAEpBrG,WAAYiF,EAAYjF,WACxBsG,SAAU,EAAAC,EAAA,SAEZT,EAAW,cACTnL,GACA,WACE0K,EAAO7F,QAAQuG,EACjB,IACA,WACEV,EAAO5F,MAAM5D,EAAU,SACzB,IAEJ,GA/BS,CAAE2J,QAAS,WAAO,EAAGC,SAAU,WAAO,EAqCjD,C,mCCzDA,SAAgB,gBAAkB,QAAQ,IAAM,QAAQ,SAAW,QAAQ,YAAc,QAAQ,QAAU,Q","sources":["file:///app/packages/libs/shared/src/components/forms/form-buttons/FormButtons.tsx","file:///app/packages/libs/shared/src/components/forms/form-checkbox/FormCheckbox.tsx","file:///app/packages/libs/shared/src/components/forms/form-field/CharacterCounter.tsx","file:///app/packages/libs/shared/src/components/forms/form-field/form-field.scss","file:///app/packages/libs/shared/src/components/forms/form-field/FormField.tsx","file:///app/packages/libs/shared/src/components/forms/form-wrapper/FormWrapper.tsx","file:///app/packages/libs/shared/src/components/pill-tab-selector/PillTabSelector.tsx","file:///app/packages/libs/shared/src/components/rostering/rostering-header/RosteringSettingHeader.tsx","file:///app/packages/libs/shared/src/components/rostering/sync-action-button-group/sync-action-button-group.scss","file:///app/packages/libs/shared/src/components/rostering/sync-action-button-group/SyncActionButtonGroup.tsx","file:///app/packages/libs/shared/src/components/rostering/utils/RosteringHelper.ts","file:///app/packages/libs/shared/src/flight-requests/RosteringRequests.ts","file:///app/packages/libs/shared/src/utils/FormHelper.ts","file:///app/packages/projects/lite/src/apps/settings/components/settings-layout/SettingsLayout.tsx","file:///app/packages/projects/lite/src/apps/settings/views/rostering/rostering-sync-list/requires-set-up-empty-state/RequiresSetUpEmptyState.tsx","file:///app/packages/libs/shared/src/components/rostering/settings/schedule-setting/schedule-setting.scss","file:///app/packages/libs/shared/src/components/rostering/settings/schedule-setting/ScheduleForm.tsx","file:///app/packages/libs/shared/src/components/rostering/settings/schedule-setting/ScheduleSetting.tsx","file:///app/packages/projects/lite/src/apps/settings/views/rostering/rostering-sync-settings/rostering-sync-settings.scss","file:///app/packages/projects/lite/src/apps/settings/views/rostering/rostering-sync-settings/RosteringSyncSettingsView.tsx","file:///app/packages/projects/lite/src/apps/settings/views/rostering/utils/useSyncRostering.ts","file:///app/packages/libs/shared/src/components/pill-tab-selector/pill-tab-selector.scss"],"sourcesContent":["import * as React from 'react';\nimport { ButtonProps } from 'react-bootstrap';\nimport { useFormikContext } from 'formik';\n\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { FormSize } from 'libs/shared/components/forms/form-field/FormField';\nimport { SpinnerButton } from 'libs/shared/components/spinner-button/SpinnerButton';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { useCanSubmitForm } from 'libs/shared/hooks/UseCanSubmitForm';\n\nconst namespace = 'shared.formButtons';\n\ninterface FormButtonsProps {\n isNew?: boolean;\n submitText?: string;\n variant?: ButtonProps['variant'];\n size?: FormSize;\n className?: string;\n}\n\nexport function FormButtons<Values extends HashObject>(props: FormButtonsProps): JSX.Element {\n const formikProps = useFormikContext<Values>();\n\n const canSubmit = useCanSubmitForm(formikProps);\n\n return (\n <SpinnerButton\n variant={props.variant || 'primary'}\n type='submit'\n disabled={!canSubmit}\n size={props.size}\n className={props.className ? props.className : ''}\n showSpinner={formikProps.isSubmitting}\n >\n {props.submitText\n ? <>{props.submitText}</>\n : <Text namespace={namespace} phrase={props.isNew ? 'create' : 'save'} />}\n </SpinnerButton>\n );\n}\n","import * as React from 'react';\nimport { Form } from 'react-bootstrap';\nimport { FieldAttributes } from 'formik';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\n\nimport { FieldWrapper, FormFieldProps } from '../form-field/FormField';\n\n/**\n * Use this checkbox within Formik contexts\n */\nexport function FormCheckbox(props: FieldAttributes<FormFieldProps>): JSX.Element {\n const { label, checkboxLabelClassName, checkboxLabelFontWeight, className, ...fieldProps } = props;\n\n return (\n <Form.Group className='form-group'>\n <div className={`form-check ${className || ''}`}>\n <FieldWrapper className='form-check-input' {...fieldProps} />\n <Form.Label\n className={`form-check-label cursor-pointer ${checkboxLabelFontWeight === 'normal' ? 'fw-normal' : ''} \n ${checkboxLabelClassName}`}\n htmlFor={fieldProps.id}\n >\n {label}\n </Form.Label>\n {props.checkboxAppLink && props.checkboxAppLinkText && (\n <>\n <span>&nbsp;</span>\n <AppLink appLink={props.checkboxAppLink} className='info-link'>\n {props.checkboxAppLinkText}\n </AppLink>\n </>\n )}\n </div>\n </Form.Group>\n );\n}\n\n","import * as React from 'react';\nimport { useFormikContext } from 'formik';\n\nimport { HashObject } from 'libs/common/react/interfaces';\nimport { ObjectHelper } from 'libs/common/react/utils/ObjectHelper';\n\ninterface CharacterCounterProps<Values extends HashObject> {\n fieldName: keyof Values;\n limit: number;\n}\n\nexport function CharacterCounter<Values extends HashObject>(props: CharacterCounterProps<Values>): JSX.Element {\n const { values } = useFormikContext<Values>();\n\n const field = ObjectHelper.get(values, props.fieldName as string);\n\n if (typeof field !== 'string')\n return <></>;\n\n return (\n <div className='float-end text-secondary fw-normal'>\n {field.length}/{props.limit} characters\n </div>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"revealPassword\":\"jCfI0\",\"passwordInput\":\"RBJnf\",\"passwordContainer\":\"d78lK\",\"passwordContainerDisabled\":\"asbVo\",\"infoTooltip\":\"wzyOG\",\"spinner\":\"CycFx\"};","import * as React from 'react';\nimport { Form, Spinner } from 'react-bootstrap';\nimport { Placement } from 'react-bootstrap/esm/types';\nimport { ErrorMessage, Field, FieldAttributes, FieldProps, useFormikContext } from 'formik';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\nimport { HashObject } from 'libs/common/react/interfaces';\nimport { ObjectHelper } from 'libs/common/react/utils/ObjectHelper';\n\nimport { FormCheckbox } from 'libs/shared/components/forms/form-checkbox/FormCheckbox';\nimport { SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { FormHelper } from 'libs/shared/utils/FormHelper';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport { CharacterCounter } from './CharacterCounter';\n\nimport styles from './form-field.scss';\n\nconst namespace = 'shared.formField';\n\nexport type FormSize = 'lg' | 'sm';\n\n// If checkboxLabelFontWeight is not specified, it will be bold by default\nexport type CheckboxLabelFontWeight = 'normal' | 'bold'\n\nexport interface FormFieldProps {\n /**\n * The name prop MUST be the same as the attribute\n * name of the value that the field is bound to.\n */\n name: string;\n label?: string;\n children?: any;\n showCharacterCounter?: boolean;\n showRequiredStar?: boolean;\n checkboxAppLink?: Core.AppLink;\n checkboxAppLinkText?: string;\n checkboxLabelClassName?: string;\n checkboxLabelFontWeight?: CheckboxLabelFontWeight\n infoTooltip?: string;\n infoTooltipPlacement?: Placement;\n infoText?: string;\n formSize?: FormSize;\n showOptionalLabel?: boolean;\n showLoadingSpinner?: boolean;\n formGroupClassname?: string;\n}\n\nFieldWrapper.defaultProps = {\n autoComplete: 'off'\n};\n\nexport function FieldWrapper(\n props: FieldAttributes<FormFieldProps> & { className: string }\n): React.ReactElement {\n const { children, showLoadingSpinner, ...fieldProps } = props;\n\n const [ type, setType ] = React.useState(props.type);\n\n function onClickTogglePassword(): void {\n if (type === 'password')\n setType('text');\n else\n setType('password');\n }\n\n const resolvedChildren = FunctionHelper.isFunction(children)\n ? (f: FieldProps) => children(f)\n : React.Children.count(children) ? children : null;\n\n if (fieldProps.type !== 'password') {\n if (showLoadingSpinner) {\n return (\n <div className='position-relative'>\n <Field {...(ObjectHelper.omit(fieldProps, ['formSize']))}>\n {resolvedChildren}\n </Field>\n\n <div className={styles.spinner}>\n <Spinner animation='border' size='sm' />\n </div>\n </div>\n );\n }\n\n return (\n <Field {...(ObjectHelper.omit(fieldProps, ['formSize']))}>\n {resolvedChildren}\n </Field>\n );\n }\n\n let containerClassName = `position-relative ${styles.passwordContainer}`;\n\n if (fieldProps.className)\n containerClassName += ` ${fieldProps.className}`;\n\n if (fieldProps.disabled)\n containerClassName += ` ${styles.passwordContainerDisabled}`;\n\n /**\n * We need to wrap out input with a relatively positioned element in order to absolutely\n * position our visibility icon to reveal the password - Sha\n */\n return (\n <div className={containerClassName}>\n <Field\n {...(ObjectHelper.omit(fieldProps, [ 'formSize', 'type', 'className' ]))}\n type={type}\n className={`${styles.passwordInput} border-0 w-100 h-100 outline-none rounded`}\n >\n {resolvedChildren}\n </Field>\n {fieldProps.type === 'password' &&\n <SvgContainer\n svgName={type === 'password' ? cvSvgLibrary.VisibleOn : cvSvgLibrary.VisibleOff}\n className={`svg-container cursor-pointer ${styles.revealPassword}`}\n onClick={onClickTogglePassword}\n />\n }\n </div>\n );\n}\n\nFormField.defaultProps = {\n autoComplete: 'off',\n infoTooltipPlacement: 'top'\n};\n\nexport function FormField<Values extends HashObject>(props: FieldAttributes<FormFieldProps>): React.ReactElement {\n const {\n label,\n className,\n showCharacterCounter,\n showRequiredStar,\n infoTooltip,\n infoTooltipPlacement,\n infoText,\n formSize,\n showOptionalLabel,\n formGroupClassname,\n ...fieldProps\n } = props;\n\n const { errors, touched } = useFormikContext<Values>();\n\n // This function overwrites the default `onChange` function whenever `props.disabled` is set.\n // This prevents users from \"undisabling\" form fields via inspect element, then editing the field.\n const disabledOnChange = () => {};\n\n if (fieldProps.type === 'checkbox') {\n const _props = ObjectHelper.omit(props, [ 'formSize', 'infoTooltipPlacement' ]);\n\n if (props.disabled)\n _props.onChange = disabledOnChange;\n\n return <FormCheckbox {..._props} />;\n }\n\n const fieldWrapperProps = {\n ...fieldProps,\n className: FormHelper.getCustomFormControlClassName(\n errors,\n touched,\n fieldProps.name,\n formSize,\n className,\n typeof props.as === 'string' ? props.as : null\n )\n };\n\n if (props.disabled)\n fieldWrapperProps.onChange = disabledOnChange;\n\n return (\n <Form.Group className={`form-group ${formGroupClassname}`}>\n {!!label && (\n <Form.Label htmlFor={fieldProps.id} className='d-flex align-items-center'>\n {label}\n {showRequiredStar && <span className='text-danger'>*</span>}\n {infoTooltip && (\n <SvgContainer\n className={`svg-container text-secondary ${styles.infoTooltip}`}\n svgName={cvSvgLibrary.Info}\n title={infoTooltip}\n tooltipPlacement={infoTooltipPlacement}\n tooltipSpanHack\n />\n )}\n {showOptionalLabel && <span className='text-secondary'>&nbsp;<Text namespace={namespace} phrase='optional' /></span>}\n \n {!!showCharacterCounter && !!(fieldProps as React.HTMLProps<HTMLInputElement>).maxLength &&\n <div className='ms-auto'>\n <CharacterCounter\n fieldName={(fieldProps.name as keyof Values)}\n limit={(fieldProps as React.HTMLProps<HTMLInputElement>).maxLength}\n />\n </div>\n }\n </Form.Label>\n )}\n\n <FieldWrapper {...fieldWrapperProps} aria-errormessage={`${fieldProps.name}Error`} />\n\n {!!infoText &&\n <Form.Text className='text-secondary'>\n {infoText}\n </Form.Text>\n }\n\n <ErrorMessage name={fieldProps.name}>\n {(errorMessage: string) => <Form.Control.Feedback id={`${fieldProps.name}Error`} type='invalid' role='status'>{errorMessage}</Form.Control.Feedback>}\n </ErrorMessage>\n </Form.Group>\n );\n}","import * as React from 'react';\nimport { Formik, FormikConfig, FormikContextType, FormikErrors, FormikHelpers, FormikProps, FormikValues, useFormikContext } from 'formik';\n\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\nimport { HashObject } from 'libs/common/react/interfaces';\nimport { ObjectHelper } from 'libs/common/react/utils/ObjectHelper';\n\n/**\n * Note: This currently doesn't support arrays, but the need for arrays as initial\n * form data has not yet come up\n */\nfunction omitNullInitialValues<Values extends FormikValues>(initialValues: Values): Values {\n if (!initialValues)\n return {} as Values;\n\n const values = ObjectHelper.deepClone(initialValues);\n\n function omitChildValues(child: Values): void {\n Object.keys(values).forEach((key: keyof Values) => {\n if (!values.hasOwnProperty(key))\n return;\n \n if (ObjectHelper.isObject(child[key]))\n omitChildValues(child[key]);\n else if (values[key] === null)\n delete values[key];\n });\n }\n\n omitChildValues(values);\n return values;\n}\n\n// Omit attributes from FormikConfig that are defined in FormWrapperProps.\ntype ModifiedFormikConfig<Values extends FormikValues> = Omit<FormikConfig<Values>, 'initialValues' | 'onSubmit'>;\n\ninterface InitialStatus {\n allowInitialSubmit: boolean;\n}\n\nexport type FormSubmissionOptions<FormValues = FormikValues> = {\n reset?: boolean;\n errors?: FormikErrors<FormValues>;\n};\n\ninterface FormWrapperProps<FormValues extends FormikValues, ApiValues extends FormikValues> {\n initialValues: Partial<FormValues | ApiValues>;\n onSubmit: (data: FormValues, onDone: (options?: FormSubmissionOptions<FormValues>) => void) => void;\n castInitialValues?: boolean; // cast to validationSchema\n castValuesOnSubmit?: boolean; // cast to validationSchema\n allowInitialSubmit?: boolean; // if true, useCanSubmitForm will allow submit without any user changes.\n}\n\nFormWrapper.defaultProps = {\n castInitialValues: true,\n castValuesOnSubmit: true\n};\n\nexport function FormWrapper<\n FormValues extends FormikValues = FormikValues,\n ApiValues extends FormikValues = FormValues,\n ExtraProps = HashObject\n>(props: ModifiedFormikConfig<FormValues> & ExtraProps & FormWrapperProps<FormValues, ApiValues>): JSX.Element {\n const { castInitialValues, castValuesOnSubmit, initialValues, onSubmit, ...formikProps } = props;\n\n /**\n * If castInitialValues is true, cast initialValues to the validationSchema.\n * This will ensure that any data fetched from the api conforms to the expected form data shape.\n */\n const formattedInitialValues: FormValues = castInitialValues && props.validationSchema\n ? props.validationSchema.cast(omitNullInitialValues(initialValues))\n : initialValues;\n\n const onSubmitHandler = (\n values: FormValues,\n { setSubmitting, resetForm, setFieldError }: FormikHelpers<FormValues>\n ) => {\n /**\n * validationSchema.cast will coerce the values to the types defined in validationSchema.\n * This is useful for trimming inputs:\n * e.g. if a value field has type Yup.string().trim(), it will be automatically trimmed.\n */\n const formattedData = castValuesOnSubmit && props.validationSchema\n ? props.validationSchema.cast(values)\n : values;\n\n onSubmit(formattedData, (options: FormSubmissionOptions<FormValues> = {}) => {\n options.reset && resetForm();\n\n if (options.errors) {\n for (const [ key, value ] of Object.entries(options.errors)) {\n setFieldError(key, value);\n }\n }\n\n setSubmitting(false);\n });\n };\n\n const initialStatus: InitialStatus = {\n allowInitialSubmit: props.allowInitialSubmit\n };\n\n return (\n <Formik<FormValues, ExtraProps>\n enableReinitialize\n {...(formikProps as ModifiedFormikConfig<FormValues> & ExtraProps)}\n initialValues={formattedInitialValues}\n onSubmit={onSubmitHandler}\n initialStatus={initialStatus}\n >\n {FunctionHelper.isFunction(props.children)\n ? (f: FormikProps<FormValues>) => (props.children as (f: FormikProps<FormValues>) => React.ReactNode)(f)\n : React.Children.count(props.children) ? props.children : null\n }\n </Formik>\n );\n}\n\nexport function useFormikContextWrapper<T>(): FormikContextType<T> {\n return useFormikContext<T>();\n}","import React from 'react';\n\nimport { Core } from 'libs/common/core';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { AnalyticsHelper } from 'libs/analytics/AnalyticsHelper';\nimport { AnalyticsOptions } from 'libs/analytics/interfaces';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { Badge, BadgeType } from 'libs/shared/components/badges/Badge';\nimport { DivButton } from 'libs/shared/components/div-button/DivButton';\n\nimport { SvgContainer } from '../svg-container/SvgContainer';\n\nimport styles from './pill-tab-selector.scss';\n\ninterface TabContentsProps {\n tab: PillTab;\n}\n\nfunction TabContents(props: TabContentsProps): JSX.Element {\n return (\n <>\n {!!props.tab.svgName && (\n <div className={props.tab.name ? 'pe-1' : ''}>\n <SvgContainer svgName={props.tab.svgName} />\n </div>\n )}\n\n {props.tab.name}\n\n {typeof (props.tab.count) === 'number' && (\n <div className='ps-2'>\n <Badge type={BadgeType.Count} data={props.tab.count} />\n </div>\n )}\n </>\n );\n}\n\nexport interface PillTab {\n name: string;\n active: boolean;\n svgName?: string;\n\n className?: string;\n\n appLink?: Core.AppLink;\n onSelect?: () => void;\n\n analyticsData?: HashObject;\n analyticsOptions?: AnalyticsOptions;\n\n count?: number;\n}\n\ninterface PillTabSelectorProps {\n tabs: PillTab[];\n containerRef?: (el: HTMLElement) => void;\n listClassName?: string;\n className?: string;\n borderRadius?: 'sm' | 'lg'\n}\n\nPillTabSelector.defaultProps = {\n borderRadius: 'lg'\n};\n\nexport function PillTabSelector(props: PillTabSelectorProps): JSX.Element {\n function onSelectTab(tab: PillTab): void {\n if (tab.active || !tab.onSelect)\n return;\n\n tab.onSelect();\n\n if (tab.analyticsData && tab.analyticsOptions)\n AnalyticsHelper.logUserAction(tab.analyticsData, tab.analyticsOptions);\n }\n\n return (\n <nav className={props.className ?? ''} ref={props.containerRef}>\n <ul className={`\n list-unstyled d-inline-block m-0 ${styles.pillTabSelector}\n ${props.borderRadius ? styles.radiusSmall : ''}\n ${props.listClassName}\n `}>\n {props.tabs.map((tab, index) => {\n return (\n <li\n className={`\n p-0 ${styles.tab} ${tab.active ? 'btn btn-dark' : 'btn btn-outline-dark'}\n ${tab.name ? styles.minWidth : ''} ${tab.className}\n `}\n key={index}\n >\n {tab.appLink ? (\n <AppLink\n appLink={tab.appLink}\n analyticsData={tab.analyticsData}\n analyticsOptions={tab.analyticsOptions}\n className={`\n cursor-pointer d-flex align-items-center justify-content-center\n text-decoration-none text-reset px-2 text-nowrap ${styles.tabLink}\n `}\n >\n <TabContents tab={tab} />\n </AppLink>\n ) : (\n <DivButton\n className={`\n cursor-pointer d-flex align-items-center justify-content-center\n text-decoration-none text-reset px-2 text-nowrap ${styles.tabLink}\n `}\n onClick={() => onSelectTab(tab)}\n >\n <TabContents tab={tab} />\n </DivButton>\n )}\n </li>\n );\n })}\n </ul>\n </nav>\n );\n}\n","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { PillTabSelector } from 'libs/shared/components/pill-tab-selector/PillTabSelector';\n\nconst namespace = 'rostering.settingHeader';\n\nexport interface RosteringSettingHeaderAppLinks {\n syncJobs: Core.AppLink;\n settings: Core.AppLink;\n}\n\ninterface RosteringSettingHeaderProps {\n appLinks?: RosteringSettingHeaderAppLinks;\n active: keyof RosteringSettingHeaderAppLinks;\n className?: string;\n}\n\nexport function RosteringSettingHeader(props: RosteringSettingHeaderProps): JSX.Element {\n const tabs = [{\n name: LanguageService.getPhrase(namespace, 'syncJobs'),\n appLink: props.appLinks?.syncJobs,\n active: props.active === 'syncJobs'\n \n }, {\n name: LanguageService.getPhrase(namespace, 'settings'),\n appLink: props.appLinks?.settings,\n active: props.active === 'settings'\n \n }];\n\n return (\n <div className={props.className}>\n <PillTabSelector tabs={tabs} />\n </div>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"rightButton\":\"GcqRT\"};","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { Tooltip } from 'libs/shared/components/tooltip/Tooltip';\n\nimport styles from './sync-action-button-group.scss';\n\nconst namespace = 'rostering.syncActionButtonGroup';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface SyncActionButtonGroupProps {\n onSyncNow?: () => void;\n onFullSync?: () => void;\n}\n\nexport function SyncActionButtonGroup(props: SyncActionButtonGroupProps): JSX.Element {\n return (\n <div className='btn-group px-2' role='group'>\n <Tooltip title={getPhrase('syncNowTooltip')} spanHack placement='left' spanHackClassName={styles.buttonBorder}>\n <button type='button' className={`btn btn-outline-dark ${styles.leftButton}`} onClick={props?.onSyncNow}>{getPhrase('syncNow')}</button>\n </Tooltip>\n {/* todo hide the dropdown for v1 */}\n {/* <button type='button' className={`btn dropdown-toggle btn-outline-dark ${styles.rightButton}`} data-bs-toggle='dropdown'>\n </button>\n <div className='dropdown-menu'>\n <Tooltip title={getPhrase('fullSyncTooltip')} spanHack placement='left' >\n <div className='dropdown-item cursor-pointer' onClick={props?.onFullSync}>{getPhrase('fullSync')}</div>\n </Tooltip>\n </div> */}\n </div>\n );\n}","import { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\nimport { DateHelper } from 'libs/common/react/utils/DateHelper';\n\nimport { ScheduleSettingResponse } from 'libs/shared/interfaces';\n\nconst now = new Date();\n\nexport const RosteringHelper = {\n parseUTCToLocal(\n {\n utcHour,\n utcWeekdays,\n utcMinute = 0\n }: {\n utcHour: number,\n utcWeekdays: number[],\n utcMinute: number\n }\n ) {\n const local = utcWeekdays.map(weekday => DateHelper.buildLocalDateFromUTC(weekday, utcHour, utcMinute));\n\n const localWeekdays = local.map(w => w.getDay());\n const localHour = DateHelper.format(ArrayHelper.first(local), 'HH');\n return { hour: +localHour, daysOfWeek: localWeekdays, minute: utcMinute };\n },\n\n // calculating next scheduled job by schedule setting\n getScheduledJobBySetting (setting: ScheduleSettingResponse): Date | null {\n if (!setting || !setting.fullSyncSchedule || !setting.fullSyncSchedule.enabled)\n return null;\n\n const schedule = RosteringHelper.parseUTCToLocal({\n utcHour: setting.fullSyncSchedule.hour,\n utcWeekdays: setting.fullSyncSchedule.daysOfWeek,\n utcMinute: setting.fullSyncSchedule.minute\n });\n const scheduledDate = new Date();\n const weekdayOfToday = now.getDay();\n\n const scheduledWeekday = schedule.daysOfWeek.sort((a, b) => a - b);\n const scheduledToday = schedule.daysOfWeek.includes(weekdayOfToday);\n const hour = schedule.hour;\n const minute = schedule?.minute ?? 0;\n\n if (scheduledToday) {\n scheduledDate.setHours(hour, minute, 0, 0);\n if (now < scheduledDate) {\n return scheduledDate;\n }\n }\n\n const nextScheduledDate = new Date();\n let nextScheduledWeekday = scheduledWeekday.find(d => d > weekdayOfToday);\n if (!nextScheduledWeekday) {\n // cannot find next scheduled date in the current week, must be next week\n nextScheduledWeekday = scheduledWeekday[0];\n }\n // use absolute value of gap to make sure next scheduled date is in the futrue\n const gap = Math.abs(nextScheduledWeekday - weekdayOfToday);\n nextScheduledDate.setDate(now.getDate() + gap);\n nextScheduledDate.setHours(hour, 0, 0, 0);\n return nextScheduledDate;\n }\n};","import { HttpVerbs } from 'libs/common/backbone/enums/HttpVerbs';\nimport { UrlHelper } from 'libs/common/backbone/utils/UrlHelper';\nimport { Flight } from 'libs/common/flight';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { BulkJobsQueryParams } from 'libs/shared/components/bulk-jobs-filters/BulkJobsFilters';\nimport { BatchJobStatus } from 'libs/shared/enums/BatchJobStatus';\nimport { BatchJobType } from 'libs/shared/enums/BatchJobType';\nimport { BatchJob, ScheduleSettingRequest } from 'libs/shared/interfaces';\nimport { CreateBatchJobRequest } from 'libs/shared/interfaces';\n\nexport const RosteringRequests = {\n getRostering(): Flight.Request {\n return {\n url: `{gateway}/v1/users/me/rostering`,\n key: `rostering`\n };\n },\n\n getSyncList(queryParams: BulkJobsQueryParams): Flight.Request {\n const params: HashObject = {};\n if (queryParams.cursor)\n params.cursor = queryParams.cursor;\n\n if (queryParams.sort) {\n if (queryParams.sort === 'oldest')\n params.order = 'ASC';\n else\n params.order = 'DESC';\n }\n\n if (queryParams.jobStatus) {\n const statuses = [];\n if (queryParams.jobStatus.includes('completed')) {\n statuses.push(...[ BatchJobStatus.Completed, BatchJobStatus.CompletedWithError ]);\n }\n if (queryParams.jobStatus.includes('failed')) {\n statuses.push(BatchJobStatus.Failed);\n }\n if (queryParams.jobStatus.includes('inProgress')) {\n statuses.push(...[\n BatchJobStatus.Submitted,\n BatchJobStatus.Queued,\n BatchJobStatus.Pending,\n BatchJobStatus.InProgress ]);\n }\n params.status = statuses;\n }\n\n params.type = BatchJobType.Rostering;\n\n return {\n url: UrlHelper.urlBuilder('{gateway}/v1/batch/jobs', params),\n key: `rostering:sync:${queryParams.cursor}:${queryParams.sort}:${queryParams.jobStatus}`\n };\n },\n\n createJob(\n data: CreateBatchJobRequest,\n success?: (job: BatchJob) => void,\n error?: () => void\n ): Flight.Request {\n return {\n url: '{gateway}/v1/batch/jobs',\n key: 'rostering:sync',\n type: HttpVerbs.POST,\n invalidationKeys: ['rostering:sync'],\n data,\n success,\n error\n };\n },\n\n getJobSummary(id: string): Flight.Request {\n return {\n url: `{gateway}/v1/batch/jobs/${id}/summary`,\n key: `job:summary:${id}`\n };\n },\n\n getSyncScheduleSettings(integrationId: string): Flight.SimulatedRequest {\n return {\n url: `{gateway}/v1/rostering/${integrationId}/schedule`,\n key: `sync-settings:${integrationId}`\n };\n },\n\n updateScheduleSetting(\n data: ScheduleSettingRequest,\n integrationId: string,\n success?: () => void,\n error?: () => void,\n always?: () => void\n ): Flight.Request {\n return {\n type: HttpVerbs.PUT,\n url: `{gateway}/v1/rostering/${integrationId}/schedule`,\n key: `update:sync-settings:${data.customerId}:${integrationId}`,\n invalidationKeys: [`sync-settings:${integrationId}`],\n data,\n success,\n error,\n always\n };\n }\n};","import { FormikErrors, FormikTouched, getIn } from 'formik';\n\nimport { FormSize } from 'libs/shared/components/forms/form-field/FormField';\n\nfunction getTypeSize(type: string, size: FormSize) {\n let className = '';\n\n switch (type) {\n case 'select':\n className = 'form-select';\n break;\n default:\n className = 'form-control';\n }\n\n if (size === 'sm')\n className += ` ${className}-sm`;\n\n if (size === 'lg')\n className += ` ${className}-lg`;\n\n return className;\n}\n\nexport const FormHelper = {\n getCustomFormControlClassName<T>(\n errors: FormikErrors<T>,\n touched: FormikTouched<T>,\n attribute: string,\n size?: FormSize,\n additionalClassName?: string,\n type?: string\n ): string {\n let className = '';\n\n className = getTypeSize(type, size);\n\n // Using getIn as it supports dot notation\n if (getIn(touched, attribute) && getIn(errors, attribute))\n className += ' is-invalid';\n\n if (additionalClassName)\n className += ` ${additionalClassName}`;\n\n return className;\n }\n};","import 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}","import React from 'react';\n\nimport { EmptyState } from 'libs/shared/components/empty-states/EmptyState';\nimport { ExternalLink } from 'libs/shared/components/external-link/ExternalLink';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { ArticleHelper } from 'libs/shared/utils/ArticleHelper';\n\nimport { ImageUrls } from 'shared/constants/ImageUrls';\n\nconst namespace = 'rostering.requiresSetUp';\n\nexport function RequiresSetUpEmptyState(): JSX.Element {\n return (\n <EmptyState>\n <EmptyState.Image src={ImageUrls.EmptyStates.Rostering.REQUIRES_SET_UP} />\n <EmptyState.Heading><Text namespace={namespace} phrase='emptyHeading' /></EmptyState.Heading>\n <EmptyState.Info className='w-50 mb-3'><Text namespace={namespace} phrase='emptyInfo' /></EmptyState.Info>\n \n {/* <EmptyState.Cta\n href={href}\n text={getPhrase('emptyCta')}\n className='btn btn-link info-link'\n openInNewTab\n /> */}\n \n <ExternalLink\n className='btn btn-dark'\n href={ArticleHelper.getSupportRequestUrl()}\n newTab\n >\n <Text namespace={namespace} phrase='button'/>\n </ExternalLink>\n \n </EmptyState>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"select\":\"eHERO\",\"sourceLabel\":\"P7yI8\",\"source\":\"dsINO\",\"logoWrapper\":\"kPI9A\",\"wrapper\":\"PYTsc\",\"weekdaysPicker\":\"W8qyy\"};","import React from 'react';\nimport { Form, useFormikContext } from 'formik';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { DateHelper } from 'libs/common/react/utils/DateHelper';\nimport { TextHelper } from 'libs/common/react/utils/TextHelper';\n\nimport { FormButtons } from 'libs/shared/components/forms/form-buttons/FormButtons';\nimport { FormField } from 'libs/shared/components/forms/form-field/FormField';\nimport { IScheduleSetting } from 'libs/shared/components/rostering/settings/schedule-setting/ScheduleSetting';\nimport { Text } from 'libs/shared/components/text/Text';\n\nimport styles from './schedule-setting.scss';\n\nconst namespace = 'rostering.settings.schedule';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\n// constant to build dropdown\nconst TIMES = new Array(24).fill(0).map((_, i) => i);\nconst REPEATS = [ 'daily', 'weekly' ];\nconst WEEK_DAYS = [ 1, 2, 3, 4, 5, 6, 0 ];\nconst date = new Date();\nconst offsetHours = new Date().getTimezoneOffset() / 60;\n\nfunction formatTime (number: number) {\n if (number === 0)\n return '12:00 AM';\n\n const isAm = number / 12 < 1;\n const time = number === 12 ? 12 : number % 12;\n\n if (isAm)\n return time < 10 ? `0${time}:00 AM` : `${time}:00 AM`;\n \n\n return time < 10 ? `0${time}:00 PM` : `${time}:00 PM`;\n}\n\nfunction parseWeekdayNumber(w: number): string {\n return DateHelper.format(DateHelper.weekday(date, w), 'ddd');\n}\n\nfunction getAlertContent(values: IScheduleSetting): string {\n switch (values.repeat) {\n case 'daily':\n return getPhrase('summary', { time: formatTime(values.startAt), repeat: values.repeat });\n case 'weekly':\n const sortedWeekDays = WEEK_DAYS.filter(v => values.daysOfWeek.includes(v)).map(w => parseWeekdayNumber(w));\n\n let str = '';\n if (sortedWeekDays.length >= 2) {\n const firstPart = sortedWeekDays.slice(0, sortedWeekDays.length - 1).join(', ');\n const lastPart = 'and ' + sortedWeekDays[sortedWeekDays.length - 1];\n str = firstPart + ', ' + lastPart;\n } else {\n str = sortedWeekDays.join(', ');\n }\n\n return getPhrase('weeklySummary', {\n weekdays: str,\n time: formatTime(values.startAt),\n repeat: values.repeat\n });\n }\n}\n\nexport function ScheduleForm(): JSX.Element {\n const formikProps = useFormikContext<IScheduleSetting>();\n\n function getButtonClassName(day: number): string {\n let className = 'btn border';\n\n if (formikProps.values.daysOfWeek.includes(day))\n className += ' btn-dark';\n else\n className += ' btn-outline-dark';\n\n return className;\n }\n\n function onClick(e: React.MouseEvent, day: number): void {\n e.preventDefault();\n\n const nextValue = formikProps.values.daysOfWeek.includes(day)\n ? formikProps.values.daysOfWeek.filter(v => v !== day)\n : [ ...formikProps.values.daysOfWeek, day ];\n // don't allow an empty array, user have to select at least one weekday\n if (nextValue.length === 0) return;\n\n formikProps.setFieldValue('daysOfWeek', nextValue);\n }\n\n return (\n <Form>\n <div>\n <p><Text namespace={namespace} phrase='info' /></p>\n\n <div className='row'>\n {/* todo waiting for decision if we going to keep it since we only support single source */}\n {/* <p className={`col col-3 ${styles.sourceLabel}`}>{getPhrase('from')}</p>\n <div className={`col d-flex align-items-center ${styles.source}`}>\n <div className={`${styles.logoWrapper} bg-white rounded-circle border d-flex align-items-center justify-content-center me-2`}>\n <img src='https://img.clickviewapp.com/v2/logos/LqlKgd'/>\n </div> \n <p className='fw-semibold mb-0'>Clever</p>\n </div>*/}\n </div>\n\n <div className='row align-items-center'>\n <p className='col col-3'>{getPhrase('start')}</p>\n <div className='col'>\n <div className='d-flex align-items-center flex-gap'>\n <FormField\n className={`${styles.select} me-2`}\n id='start'\n name='startAt'\n as='select'\n value={formikProps.values.startAt ?? 2}\n >\n {TIMES.map(i => <option className='text-dark' value={i} key={i}>{formatTime(i)}</option>)}\n </FormField>\n {/* display current timezone based on browser */}\n <p>(EST UTC{`${offsetHours}`}) {Intl.DateTimeFormat().resolvedOptions().timeZone.replace('/', ' - ')}</p>\n </div>\n </div>\n \n </div>\n\n <div className='row align-items-center'>\n <p className='col col-3'>{getPhrase('repeat')}</p>\n <div className={`col ${styles.wrapper} position-relative`}>\n <FormField\n className={`${styles.select} d-inline-block`}\n id='repeat'\n name='repeat'\n as='select'\n value={formikProps.values.repeat}\n >\n {REPEATS.map(i => <option className='text-dark' value={i} key={i}>{TextHelper.toTitleCase(i)}</option>)}\n </FormField>\n\n {formikProps.values.repeat === 'weekly' && (\n <div className={`d-flex align-items-center position-absolute ${styles.weekdaysPicker}`}>\n <span className='ms-2 me-3'>{getPhrase('on')}</span>\n <div className='btn-group mb-1'>\n {WEEK_DAYS.map(option => {\n return (\n <button\n key={option}\n className={getButtonClassName(option)}\n onClick={e => {\n onClick(e, option);\n }}\n type='button'\n >\n {parseWeekdayNumber(option).charAt(0)}\n </button>\n );\n })}\n </div>\n </div>)}\n </div>\n </div>\n </div>\n\n <div className='rounded p-2 bg-light-blue text-info fw-semibold mb-3'>\n {getAlertContent(formikProps.values)}\n </div>\n\n <FormButtons<IScheduleSetting>\n isNew={false}\n variant='outline-dark'\n />\n </Form>\n\n );\n}","import React from 'react';\nimport * as Yup from 'yup';\n\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\nimport { DateHelper } from 'libs/common/react/utils/DateHelper';\n\nimport { FormWrapper } from 'libs/shared/components/forms/form-wrapper/FormWrapper';\nimport { ScheduleForm } from 'libs/shared/components/rostering/settings/schedule-setting/ScheduleForm';\nimport { RosteringHelper } from 'libs/shared/components/rostering/utils/RosteringHelper';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { FullRosterSyncSchedule, ScheduleSettingRequest, ScheduleSettingResponse } from 'libs/shared/interfaces';\n\nconst namespace = 'rostering.settings.schedule';\n\ninterface ScheduleSettingProps {\n onSave: (val: Partial<ScheduleSettingRequest>, onDone?: () => void) => any;\n settings: ScheduleSettingResponse;\n}\n\nconst ScheduleSchema = Yup.object().shape<IScheduleSetting>({\n daysOfWeek: Yup.array<number>().min(1),\n startAt: Yup.number().min(0).max(23).required(),\n repeat: Yup.mixed<'daily' | 'weekly'>().oneOf([ 'daily', 'weekly' ]).default('daily')\n});\n\nexport interface IScheduleSetting {\n startAt: number;\n repeat: 'daily' | 'weekly';\n daysOfWeek: number[];\n}\n\nfunction parseLocalToUTC(\n {\n hour,\n weekdays,\n minute\n }: {\n hour: number,\n weekdays: number[],\n minute: number\n}\n): Omit<FullRosterSyncSchedule, 'enabled'> {\n const utc = weekdays.map(weekday => DateHelper.buildUTCDate(weekday, hour, minute));\n const utcHour = DateHelper.format(ArrayHelper.first(utc), 'HH');\n const utcWeekday = utc.map(w => w.getDay());\n const utcMinute = DateHelper.format(ArrayHelper.first(utc), 'mm');\n\n return { hour: +utcHour, daysOfWeek: utcWeekday, minute: +utcMinute };\n}\n\nfunction parseValueToForm(schedule: FullRosterSyncSchedule): IScheduleSetting {\n const { hour, daysOfWeek } = RosteringHelper.parseUTCToLocal({\n utcHour: schedule.hour,\n utcWeekdays: schedule.daysOfWeek,\n utcMinute: schedule.minute\n });\n\n return {\n startAt: hour,\n daysOfWeek: daysOfWeek,\n repeat: schedule.daysOfWeek.length === 7 ? 'daily' : 'weekly'\n };\n}\n\nfunction parseFormToPayload(val: IScheduleSetting, schedule: FullRosterSyncSchedule): Omit<ScheduleSettingRequest, 'userId'|'customerId'> {\n const utc = parseLocalToUTC({ hour: val.startAt, weekdays: val.daysOfWeek, minute: 0 });\n\n return {\n fullSyncSchedule: {\n daysOfWeek: val.repeat === 'daily' ? [ 0, 1, 2, 3, 4, 5, 6 ] : utc.daysOfWeek,\n hour: utc.hour,\n minute: utc.minute,\n enabled: schedule.enabled\n }\n };\n}\n\nexport function ScheduleSetting(props: ScheduleSettingProps): JSX.Element {\n function onSave(val: IScheduleSetting, onDone: () => void) {\n props.onSave(parseFormToPayload(val, props.settings.fullSyncSchedule), onDone);\n }\n return (\n <div className='py-3 border-bottom w-100'>\n <h2 className='h4'><Text namespace={namespace} phrase='heading' /></h2>\n\n <FormWrapper<IScheduleSetting>\n initialValues={parseValueToForm(props.settings.fullSyncSchedule)}\n onSubmit={onSave}\n validationSchema={ScheduleSchema}\n >\n <ScheduleForm />\n </FormWrapper>\n </div>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"settings\":\"K6Qs1\",\"spinner\":\"PDZWp\"};","import React from 'react';\nimport { Spinner } from 'react-bootstrap';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Flight } from 'libs/common/react/index';\n\nimport { RosteringSettingHeader } from 'libs/shared/components/rostering/rostering-header/RosteringSettingHeader';\nimport { ScheduleSetting } from 'libs/shared/components/rostering/settings/schedule-setting/ScheduleSetting';\nimport { SyncActionButtonGroup } from 'libs/shared/components/rostering/sync-action-button-group/SyncActionButtonGroup';\nimport { PermissionName } from 'libs/shared/enums/PermissionName';\nimport { RosteringRequests } from 'libs/shared/flight-requests/RosteringRequests';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { useAlerts } from 'libs/shared/hooks/UseAlerts';\nimport { useSetPageMetadata } from 'libs/shared/hooks/useSetPageMetadata';\nimport { CurrentUser, RosteringResponse, ScheduleSettingRequest, ScheduleSettingResponse } from 'libs/shared/interfaces';\n\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\n\nimport { SettingsLayout } from 'apps/settings/components/settings-layout/SettingsLayout';\nimport { RequiresSetUpEmptyState } from 'apps/settings/views/rostering/rostering-sync-list/requires-set-up-empty-state/RequiresSetUpEmptyState';\nimport { useSyncRostering } from 'apps/settings/views/rostering/utils/useSyncRostering';\n\nimport styles from './rostering-sync-settings.scss';\n\nconst namespace = 'rostering.rosteringSyncSettings';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nexport function RosteringSyncSettingsView(): JSX.Element {\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n const rostering = Flight.useBasicFetch<RosteringResponse>(RosteringRequests.getRostering());\n const settings = Flight.useBasicFetch<ScheduleSettingResponse>(rostering.data?.id &&\n RosteringRequests.getSyncScheduleSettings(rostering.data.id));\n\n const fetch = Flight.useGetFetch();\n const alerts = useAlerts();\n\n useSetPageMetadata({ title: getPhrase('pageTitle') });\n\n function onSave(val: Omit<ScheduleSettingRequest, 'userId'|'customerId'>, onDone?: () => void) {\n const payload = { ...val, userId: currentUser.data.id, customerId: currentUser.data.customerId };\n\n fetch(\n RosteringRequests.updateScheduleSetting(\n payload,\n rostering.data.id,\n () => alerts.success(getPhrase('success')),\n () => alerts.error(getPhrase('error')),\n () => onDone?.()\n )\n );\n }\n\n const { syncNow, fullSync } = useSyncRostering(currentUser.data);\n\n function renderButton() {\n if (rostering.data?.status !== 'Active')\n return <></>;\n return <SyncActionButtonGroup onSyncNow={syncNow} onFullSync={fullSync}/>;\n }\n\n return (\n <SettingsLayout\n heading={getPhrase('heading')}\n breadcrumbs={[getPhrase('breadcrumb')]}\n headingButton={renderButton}\n requiredPermissions={PermissionName.Rostering}\n >\n \n {rostering.data?.status === 'Active' && (\n <RosteringSettingHeader\n active='settings'\n appLinks={{\n syncJobs: { application: AppChannels.SETTINGS, action: Actions.Settings.ROSTERING },\n settings: { application: AppChannels.SETTINGS, action: Actions.Settings.ROSTERING_SETTINGS }\n }}\n />\n )}\n {rostering.data?.status !== 'Active' ? (\n <RequiresSetUpEmptyState />\n ) : (\n <div className={`d-flex flex-column align-items-center justify-content-center ${styles.settings}`}>\n {settings.data ? (\n <>\n <ScheduleSetting onSave={onSave} settings={settings.data}/>\n \n {/* todo uncomment these form when backend supports */}\n {/* <CheckUpdatesSetting onSave={onSave}/>\n <ClassroomCreationSetting onSave={onSave}/>\n <EmailNotificationSetting onSave={onSave}/> */}\n </>\n ) : (\n <div className={styles.spinner}>\n <Spinner as='div' animation='border' role='status' />\n </div>\n )}\n </div>\n )}\n \n\n </SettingsLayout>\n );\n}","import { AlertType, BaseAlert } from 'libs/common/backbone/services/BaseAlertService';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Flight } from 'libs/common/react/index';\n\nimport { BatchDataType } from 'libs/shared/enums/BatchDataType';\nimport { BatchJobName } from 'libs/shared/enums/BatchJobName';\nimport { BatchJobType } from 'libs/shared/enums/BatchJobType';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { RosteringRequests } from 'libs/shared/flight-requests/RosteringRequests';\nimport { useAlerts } from 'libs/shared/hooks/UseAlerts';\nimport { CurrentUser } from 'libs/shared/interfaces';\n\nconst namespace = 'rostering.syncUtils';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nexport const useSyncRostering = (currentUser: CurrentUser) => {\n const fetchAsync = Flight.useGetFetchAsync();\n\n const alerts = useAlerts();\n\n if (!currentUser) {\n return { syncNow: () => {}, fullSync: () => {} };\n }\n\n function syncNow() {\n const alert: BaseAlert = {\n type: AlertType.Success,\n heading: getPhrase('startSyncAlertHeading'),\n message: getPhrase('startSyncAlertBody'),\n appLinkText: getPhrase('startSyncAlertAppLinkText'),\n appLinkClassName: 'info-link'\n };\n\n const data = {\n name: BatchJobName.Rostering,\n type: BatchJobType.Rostering,\n metadata: {\n targetMasterId: currentUser.customerId,\n targetMasterType: MasterType.Customer\n },\n customerId: currentUser.customerId,\n dataType: BatchDataType.Learner\n };\n fetchAsync(RosteringRequests.createJob(\n data,\n () => {\n alerts.success(alert);\n },\n () => {\n alerts.error(getPhrase('error'));\n }\n ));\n }\n\n function fullSync() {\n // todo\n }\n return { fullSync, syncNow };\n};","// extracted by mini-css-extract-plugin\nexport default {\"pillTabSelector\":\"Hdi6o\",\"tab\":\"RvNxr\",\"minWidth\":\"GHSz9\",\"radiusSmall\":\"VhJJa\",\"tabLink\":\"WFyvo\"};"],"names":["namespace","FormButtons","props","formikProps","canSubmit","variant","type","disabled","size","className","showSpinner","isSubmitting","submitText","phrase","isNew","FormCheckbox","label","checkboxLabelClassName","checkboxLabelFontWeight","fieldProps","Form","FieldWrapper","htmlFor","id","checkboxAppLink","checkboxAppLinkText","AppLink","appLink","CharacterCounter","values","field","ObjectHelper","fieldName","length","limit","children","showLoadingSpinner","setType","resolvedChildren","FunctionHelper","f","Spinner","animation","containerClassName","SvgContainer","svgName","onClick","FormField","showCharacterCounter","showRequiredStar","infoTooltip","infoTooltipPlacement","infoText","formSize","showOptionalLabel","formGroupClassname","errors","touched","disabledOnChange","_props","onChange","fieldWrapperProps","FormHelper","name","as","title","tooltipPlacement","tooltipSpanHack","Text","maxLength","errorMessage","role","defaultProps","autoComplete","FormWrapper","castInitialValues","castValuesOnSubmit","initialValues","onSubmit","formattedInitialValues","validationSchema","cast","omitChildValues","child","Object","keys","forEach","key","hasOwnProperty","omitNullInitialValues","initialStatus","allowInitialSubmit","enableReinitialize","setSubmitting","resetForm","setFieldError","formattedData","options","reset","entries","value","useFormikContextWrapper","TabContents","tab","count","data","PillTabSelector","ref","containerRef","borderRadius","listClassName","tabs","map","index","active","analyticsData","analyticsOptions","onSelect","onSelectTab","RosteringSettingHeader","appLinks","syncJobs","settings","getPhrase","LanguageService","SyncActionButtonGroup","Tooltip","spanHack","placement","spanHackClassName","onSyncNow","now","Date","RosteringHelper","parseUTCToLocal","utcHour","utcWeekdays","utcMinute","local","weekday","localWeekdays","w","getDay","hour","daysOfWeek","minute","getScheduledJobBySetting","setting","fullSyncSchedule","enabled","schedule","scheduledDate","weekdayOfToday","scheduledWeekday","sort","a","b","scheduledToday","includes","setHours","nextScheduledDate","nextScheduledWeekday","find","d","gap","Math","abs","setDate","getDate","RosteringRequests","getRostering","url","getSyncList","queryParams","params","cursor","order","jobStatus","statuses","push","status","createJob","success","error","invalidationKeys","getJobSummary","getSyncScheduleSettings","integrationId","updateScheduleSetting","always","customerId","getCustomFormControlClassName","attribute","additionalClassName","getTypeSize","useCanAccessSettings","requiredPermissions","hasPermissions","settingsGroups","currentRoute","application","some","group","modules","settingsModule","action","SettingsLayout","canAccess","replace","breadcrumbs","i","heading","headingButton","description","RequiresSetUpEmptyState","src","href","newTab","TIMES","Array","fill","_","REPEATS","WEEK_DAYS","date","offsetHours","getTimezoneOffset","formatTime","number","time","parseWeekdayNumber","DateHelper","ScheduleForm","startAt","Intl","DateTimeFormat","resolvedOptions","timeZone","repeat","TextHelper","option","day","e","preventDefault","nextValue","filter","v","setFieldValue","charAt","str","sortedWeekDays","slice","join","firstPart","weekdays","getAlertContent","ScheduleSchema","shape","min","max","required","oneOf","ScheduleSetting","val","onDone","onSave","utc","ArrayHelper","parseLocalToUTC","parseFormToPayload","RosteringSyncSettingsView","currentUser","UserRequests","rostering","fetch","alerts","useSetPageMetadata","useSyncRostering","syncNow","fullSync","onFullSync","PermissionName","payload","userId","fetchAsync","alert","message","appLinkText","appLinkClassName","metadata","targetMasterId","targetMasterType","dataType","B"],"sourceRoot":""}
@@ -0,0 +1,2 @@
1
+ "use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[7150],{75097:(e,t,n)=>{n.d(t,{U:()=>c});var a=n(32735),r=n(13170);function c(e){var t=e.count,n=void 0===t?6:t;return a.createElement("div",{className:"d-flex"},a.createElement("div",{className:"d-flex ps-1"},Array(n).fill(null).map((function(e,t){return a.createElement("div",{key:t,className:"".concat(r.Z.partialButton," partial-loading-background mx-1")})}))))}},38502:(e,t,n)=>{n.d(t,{r:()=>m});var a=n(32735),r=n(49985),c=n(15611),l=n(18559),o=n(11607),s=n(83914),i=n(22771);function u(e){return a.createElement(a.Fragment,null,!!e.tab.svgName&&a.createElement("div",{className:e.tab.name?"pe-1":""},a.createElement(s.x,{svgName:e.tab.svgName})),e.tab.name,"number"==typeof e.tab.count&&a.createElement("div",{className:"ps-2"},a.createElement(l.C,{type:l.g.Count,data:e.tab.count})))}function m(e){var t;return a.createElement("nav",{className:null!==(t=e.className)&&void 0!==t?t:"",ref:e.containerRef},a.createElement("ul",{className:"\n list-unstyled d-inline-block m-0 ".concat(i.Z.pillTabSelector,"\n ").concat(e.borderRadius?i.Z.radiusSmall:"","\n ").concat(e.listClassName,"\n ")},e.tabs.map((function(e,t){return a.createElement("li",{className:"\n p-0 ".concat(i.Z.tab," ").concat(e.active?"btn btn-dark":"btn btn-outline-dark","\n ").concat(e.name?i.Z.minWidth:""," ").concat(e.className,"\n "),key:t},e.appLink?a.createElement(c.F,{appLink:e.appLink,analyticsData:e.analyticsData,analyticsOptions:e.analyticsOptions,className:"\n cursor-pointer d-flex align-items-center justify-content-center\n text-decoration-none text-reset px-2 text-nowrap ".concat(i.Z.tabLink,"\n ")},a.createElement(u,{tab:e})):a.createElement(o.L,{className:"\n cursor-pointer d-flex align-items-center justify-content-center\n text-decoration-none text-reset px-2 text-nowrap ".concat(i.Z.tabLink,"\n "),onClick:function(){return function(e){!e.active&&e.onSelect&&(e.onSelect(),e.analyticsData&&e.analyticsOptions&&r.k.logUserAction(e.analyticsData,e.analyticsOptions))}(e)}},a.createElement(u,{tab:e})))}))))}m.defaultProps={borderRadius:"lg"}},31647:(e,t,n)=>{n.d(t,{E:()=>o});var a=n(32735),r=n(23481),c=n(38502),l="rostering.settingHeader";function o(e){var t,n,o=[{name:r.T.getPhrase(l,"syncJobs"),appLink:null===(t=e.appLinks)||void 0===t?void 0:t.syncJobs,active:"syncJobs"===e.active},{name:r.T.getPhrase(l,"settings"),appLink:null===(n=e.appLinks)||void 0===n?void 0:n.settings,active:"settings"===e.active}];return a.createElement("div",{className:e.className},a.createElement(c.r,{tabs:o}))}},18549:(e,t,n)=>{n.d(t,{G:()=>s});var a=n(32735),r=n(23481),c=n(36532);const l={rightButton:"GcqRT"};var o=r.T.encloseNamespace("rostering.syncActionButtonGroup");function s(e){return a.createElement("div",{className:"btn-group px-2",role:"group"},a.createElement(c.u,{title:o("syncNowTooltip"),spanHack:!0,placement:"left",spanHackClassName:l.buttonBorder},a.createElement("button",{type:"button",className:"btn btn-outline-dark ".concat(l.leftButton),onClick:null==e?void 0:e.onSyncNow},o("syncNow"))))}},62394:(e,t,n)=>{n.d(t,{y:()=>l});var a=n(75896),r=n(110),c=new Date,l={parseUTCToLocal:function(e){var t=e.utcHour,n=e.utcWeekdays,c=e.utcMinute,l=void 0===c?0:c,o=n.map((function(e){return r.O.buildLocalDateFromUTC(e,t,l)})),s=o.map((function(e){return e.getDay()}));return{hour:+r.O.format(a.m.first(o),"HH"),daysOfWeek:s,minute:l}},getScheduledJobBySetting:function(e){var t;if(!e||!e.fullSyncSchedule||!e.fullSyncSchedule.enabled)return null;var n=l.parseUTCToLocal({utcHour:e.fullSyncSchedule.hour,utcWeekdays:e.fullSyncSchedule.daysOfWeek,utcMinute:e.fullSyncSchedule.minute}),a=new Date,r=c.getDay(),o=n.daysOfWeek.sort((function(e,t){return e-t})),s=n.daysOfWeek.includes(r),i=n.hour,u=null!==(t=null==n?void 0:n.minute)&&void 0!==t?t:0;if(s&&(a.setHours(i,u,0,0),c<a))return a;var m=new Date,d=o.find((function(e){return e>r}));d||(d=o[0]);var p=Math.abs(d-r);return m.setDate(c.getDate()+p),m.setHours(i,0,0,0),m}}},63112:(e,t,n)=>{n.d(t,{o:()=>c});var a=n(32735),r=n(14346),c=a.memo((function(e){var t=e.tagClass,n="partial-loading-background d-inline-block rounded-pill py-1 px-2 mb-1 me-1 text-nowrap ".concat(void 0===t?"":t," ").concat(r.Z.partialTag);return a.createElement("div",{className:"mt-1"},a.createElement("span",{className:n}," "))}))},30699:(e,t,n)=>{n.d(t,{a:()=>c});var a=n(32735),r=n(16035);function c(e){var t=e.selectedItems.find((function(t){return t.id===e.data.id}))?"bg-gray-900 text-white":"bg-light";return a.createElement(r.z,{tag:e.data,appLink:e.appLink,tagClass:"no-decoration ".concat(t," lh-1"),onClick:function(){return e.onClick(e.data)}})}},14177:(e,t,n)=>{n.d(t,{$:()=>x});var a=n(32735),r=n(70680),c=n(81886),l=n(20354),o=n(79447),s=n(83914),i=n(83345),u=n(4594),m=n(76881),d=n(35223),p="userManager.wizardInProgress";function f(e){var t=Math.floor(e.totalItemsComplete/e.totalItems*100)||0;return a.createElement("div",null,a.createElement("div",{className:"d-flex align-items-center mb-2"},a.createElement("h2",{className:"h5 mb-0"},a.createElement(i.x,{namespace:p,phrase:"heading",options:{percentage:t,actionName:e.actionName}})),a.createElement(s.x,{svgName:d.vn.CheckCircle})),a.createElement("p",null,a.createElement(i.x,{namespace:p,phrase:"info".concat(e.actionVerb)})),a.createElement("p",{className:"mb-1"},a.createElement("span",{className:"text-info"},e.progressVerbPhrase?a.createElement("span",null,e.progressVerbPhrase):a.createElement(i.x,{namespace:p,phrase:"progressVerb".concat(e.actionVerb)}))," ",e.objectType===u.E.User&&e.userType?a.createElement(i.x,{namespace:p,phrase:e.userType===m.Y.Learner?"progressStudents":"progressStaff",options:{totalComplete:e.totalItemsComplete,total:e.totalItems,smartCount:e.totalItems}}):e.objectType===u.E.Video?a.createElement(i.x,{namespace:p,phrase:"progressVideos",options:{totalComplete:e.totalItemsComplete,total:e.totalItems,smartCount:e.totalItems}}):a.createElement(i.x,{namespace:p,phrase:"progressItems",options:{totalComplete:e.totalItemsComplete,total:e.totalItems,smartCount:e.totalItems}})),a.createElement(o.Z,{variant:"info",now:t}))}var g="userManager.wizardSubmitted";function b(e){return a.createElement("div",null,a.createElement("div",{className:"d-flex align-items-center mb-2"},a.createElement("h2",{className:"h5 mb-0"},e.actionName?a.createElement(i.x,{namespace:g,phrase:"heading",options:{actionName:e.actionName}}):a.createElement(i.x,{namespace:g,phrase:"headingGeneric"})),a.createElement(s.x,{svgName:d.vn.CheckCircle})),a.createElement("p",null,a.createElement(i.x,{namespace:g,phrase:"info".concat(e.actionVerb)})),a.createElement("p",{className:"mb-1 text-info"},a.createElement(i.x,{namespace:g,phrase:"preparing"})),a.createElement(o.Z,{variant:"info",now:0}))}var v=n(58739),y=n(94644),E=n(89476);function h(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 a,r,c,l,o=[],s=!0,i=!1;try{if(c=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;s=!1}else for(;!(s=(a=c.call(n)).done)&&(o.push(a.value),o.length!==t);s=!0);}catch(e){i=!0,r=e}finally{try{if(!s&&null!=n.return&&(l=n.return(),Object(l)!==l))return}finally{if(i)throw r}}return o}}(e,t)||function(e,t){if(e){if("string"==typeof e)return N(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)?N(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 N(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,a=Array(t);n<t;n++)a[n]=e[n];return a}var S=2e3,C=3;function x(e){var t=h(a.useState(null),2),n=t[0],o=t[1],s=h(a.useState(0),2),i=s[0],u=s[1],m=a.useRef(null),d=(0,E.f)(),p=(0,r.I0)();function g(){e.pollJob(N,x)}function N(t){o(t),t.status===v.K.Completed||t.status===v.K.CompletedWithError||t.status===v.K.Failed?window.setTimeout((function(){!function(){var t;e.navLockId&&d.unlock(e.navLockId);var n={jobId:e.jobId};e.userType&&(n.userType=e.userType,p({type:l.a.Actions.INVALIDATE,keys:["school:users","user:count","search:aggregation","search:users"],request:null})),e.statusCompleteAppLink?c.Q.C$.trigger(Object.assign(Object.assign({},e.statusCompleteAppLink),{params:n})):null===(t=e.onStatusCompleted)||void 0===t||t.call(e)}()}),2e3):m.current=window.setTimeout(g,S)}function x(t){i===C&&(window.clearTimeout(m.current),e.navLockId&&d.unlock(e.navLockId),(0,y.r)(t)),u((function(e){return e+1})),m.current=window.setTimeout(g,S)}return a.useEffect((function(){return g(),function(){m.current&&window.clearTimeout(m.current)}}),[]),n&&n.status!==v.K.Submitted&&n.status!==v.K.Queued&&n.status!==v.K.Pending&&0!==n.totalItems?a.createElement(f,{totalItems:n.totalItems,totalItemsComplete:n.processedItems,userType:e.userType,objectType:e.objectType,actionName:e.actionName,actionVerb:e.actionVerb,progressVerbPhrase:e.progressVerbPhrase}):a.createElement(b,{actionName:e.actionName,actionVerb:e.actionVerb})}},44538:(e,t,n)=>{n.d(t,{K:()=>o});var a=n(99940),r=n(97395),c=n(58739),l=n(38389),o={getRostering:function(){return{url:"{gateway}/v1/users/me/rostering",key:"rostering"}},getSyncList:function(e){var t={};if(e.cursor&&(t.cursor=e.cursor),e.sort&&("oldest"===e.sort?t.order="ASC":t.order="DESC"),e.jobStatus){var n=[];e.jobStatus.includes("completed")&&n.push.apply(n,[c.K.Completed,c.K.CompletedWithError]),e.jobStatus.includes("failed")&&n.push(c.K.Failed),e.jobStatus.includes("inProgress")&&n.push.apply(n,[c.K.Submitted,c.K.Queued,c.K.Pending,c.K.InProgress]),t.status=n}return t.type=l.m.Rostering,{url:r._.urlBuilder("{gateway}/v1/batch/jobs",t),key:"rostering:sync:".concat(e.cursor,":").concat(e.sort,":").concat(e.jobStatus)}},createJob:function(e,t,n){return{url:"{gateway}/v1/batch/jobs",key:"rostering:sync",type:a.k.POST,invalidationKeys:["rostering:sync"],data:e,success:t,error:n}},getJobSummary:function(e){return{url:"{gateway}/v1/batch/jobs/".concat(e,"/summary"),key:"job:summary:".concat(e)}},getSyncScheduleSettings:function(e){return{url:"{gateway}/v1/rostering/".concat(e,"/schedule"),key:"sync-settings:".concat(e)}},updateScheduleSetting:function(e,t,n,r,c){return{type:a.k.PUT,url:"{gateway}/v1/rostering/".concat(t,"/schedule"),key:"update:sync-settings:".concat(e.customerId,":").concat(t),invalidationKeys:["sync-settings:".concat(t)],data:e,success:n,error:r,always:c}}}},299:(e,t,n)=>{n.d(t,{X:()=>l});var a=n(32735),r=n(69217),c=n(94631),l=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=t.idField,l=void 0===n?"id":n,o=t.persistNamespace,s=t.initialState?t.initialState:new Map,i=a.useRef(s),u=(0,r.N)(),m=(0,c.D)(e),d=(0,c.D)(o);function p(){i.current.clear(),u()}function f(e){return"number"==typeof e?e=e.toString():"string"!=typeof e&&(e=e[l].toString()),i.current.get(e)}function g(){return!!(null==e?void 0:e.length)&&e.every(f)}function b(e){e.forEach((function(e){i.current.set(e,!0)})),u()}return a.useEffect((function(){t.initialState||o&&d===o||(null==m?void 0:m.map((function(e){return e[l]})).join())!==(null==e?void 0:e.map((function(e){return e[l]})).join())&&p()}),[m,d,e,t.initialState]),a.useEffect((function(){var e;(null===(e=t.preselectedIds)||void 0===e?void 0:e.length)&&b(t.preselectedIds)}),[]),{onToggleBulk:function(){var t=!g();e.forEach((function(e){t?i.current.set(e[l].toString(),!0):i.current.delete(e[l].toString())})),u()},onToggleItem:function(e){var t=!i.current.get(e.toString());t?i.current.set(e.toString(),t):i.current.delete(e.toString()),u()},getSelected:function(){return Array.from(i.current.keys())},isChecked:f,bulkChecked:g(),deselectAll:function(){(null==e?void 0:e.length)&&(e.forEach((function(e){i.current.delete(e[l].toString())})),u())},hasSomeSelections:function(){return!!(null==e?void 0:e.length)&&!!e.find((function(e){return f(e)}))},setSelected:b,getSelectedCount:function(){return i.current.size},reset:p,getMap:function(){return i.current}}}},93322:(e,t,n)=>{n.d(t,{F:()=>c});var a=n(32735),r=n(13126);function c(){a.useEffect((function(){return r.e.lockContentWidth(),function(){return r.e.unlockContentWidth()}}),[])}},81803:(e,t,n)=>{n.d(t,{d:()=>f});var a=n(32735),r=n(81886),c=n(23481),l=n(49935),o=n(22902),s=n(14070),i=n(97291),u=n(96368);function m(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,a=Array(t);n<t;n++)a[n]=e[n];return a}var d="settings.settingsLayout",p=function(e){var t=(0,o.T)().hasPermissions,n=(0,u.e)();if(e)return t(e);var a=r.Q.C$.getCurrentAppLink();return a.application!==i.O.SETTINGS||n.some((function(e){return e.modules.some((function(e){return"appLink"in e&&e.appLink.action===a.action}))}))};function f(e){var t,n=p(e.requiredPermissions);if(a.useEffect((function(){n||r.Q.C$.trigger({application:i.O.SETTINGS,action:s.e.Settings.HOME},{replace:!0})}),[n]),!n)return a.createElement(a.Fragment,null);var o,u=e.breadcrumbs.map((function(t,n){return{name:t,appLink:{application:i.O.SETTINGS,action:s.e.Settings.HOME},active:n===e.breadcrumbs.length-1}}));return a.createElement("div",{className:"px-3"},a.createElement("div",{className:"d-flex align-items-center justify-content-between"},a.createElement("h1",{className:"h2"},e.heading),null===(t=e.headingButton)||void 0===t?void 0:t.call(e)),a.createElement("div",{className:"pb-3"},a.createElement(l.Oo,{breadcrumbs:[{name:c.T.getPhrase(d,"settingsBreadcrumb"),appLink:{application:i.O.SETTINGS,action:s.e.Settings.HOME}}].concat((o=u,function(e){if(Array.isArray(e))return m(e)}(o)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(o)||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}}(o)||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&&a.createElement(a.Fragment,null,a.createElement("p",null,e.description),a.createElement("hr",null)),e.children)}},61816:(e,t,n)=>{n.r(t),n.d(t,{RosteringSyncListView:()=>Fe});var a=n(32735),r=n(70680),c=n(23481),l=n(20354),o=n(97958),s=n(83345),i="rostering.noResults";function u(e){return a.createElement(o.u,null,a.createElement(o.u.Image,{src:e.imageCdnUrl}),a.createElement(o.u.Heading,null,a.createElement(s.x,{namespace:i,phrase:"emptyHeading"})),a.createElement(o.u.Info,{className:"w-50 mb-1"},a.createElement(s.x,{namespace:i,phrase:"emptyInfo"})))}var m=n(75097),d=n(49935);const p={partialHeading:"MwUCZ",partialJobCount:"MUELm",partialCheckbox:"dShe9",partialExportButton:"VL4Tq",row:"z_hGc",checkboxColumn:"IacDe",actionColumn:"_JoZe",usersColumn:"BtHPO",dateColumn:"jpr0N",performedByColumn:"XP4Lf",seeMoreColumn:"A8_Nf",heading:"uThGf",action:"PFOGb",users:"pXZx8",date:"VWS_a",performedBy:"vZeC9"};function f(){return a.createElement("div",{className:"d-flex striped-row rounded py-3 ".concat(p.row)},a.createElement("div",{className:"".concat(p.checkboxColumn," d-flex justify-content-center")},a.createElement("div",{className:"partial-loading-background ".concat(p.partialCheckbox," ms-0")})),a.createElement("div",{className:"".concat(p.actionColumn)},a.createElement("div",{className:"partial-loading-background ".concat(p.action)})),a.createElement("div",{className:"".concat(p.usersColumn)},a.createElement("div",{className:"partial-loading-background ".concat(p.users)})),a.createElement("div",{className:"".concat(p.dateColumn)},a.createElement("div",{className:"partial-loading-background ".concat(p.date)})),a.createElement("div",{className:"".concat(p.performedByColumn)},a.createElement("div",{className:"partial-loading-background ".concat(p.performedBy)})),a.createElement("div",{className:"".concat(p.seeMoreColumn)}," "))}function g(){return a.createElement("div",{className:"d-flex py-2 mb-1"},a.createElement("div",{className:"".concat(p.checkboxColumn)}," "),a.createElement("div",{className:"".concat(p.actionColumn)},a.createElement("div",{className:"partial-loading-background ".concat(p.heading)})),a.createElement("div",{className:"".concat(p.usersColumn)},a.createElement("div",{className:"partial-loading-background ".concat(p.heading)})),a.createElement("div",{className:"".concat(p.dateColumn)},a.createElement("div",{className:"partial-loading-background ".concat(p.heading)})),a.createElement("div",{className:"".concat(p.performedByColumn)},a.createElement("div",{className:"partial-loading-background ".concat(p.heading)})),a.createElement("div",{className:"".concat(p.seeMoreColumn)}," "))}function b(){return a.createElement(a.Fragment,null,a.createElement("div",{className:"mb-3 mt-n1"},a.createElement(g,null),a.createElement("div",{className:"striped-list no-full-width"},a.createElement(f,null),a.createElement(f,null),a.createElement(f,null),a.createElement(f,null),a.createElement(f,null),a.createElement(f,null),a.createElement(f,null),a.createElement(f,null),a.createElement(f,null),a.createElement(f,null),a.createElement(f,null),a.createElement(f,null))))}function v(){return a.createElement(a.Fragment,null,a.createElement("div",{className:"partial-loading-background mb-2 ".concat(p.partialHeading)}),a.createElement("div",{className:"pb-3"},a.createElement("div",{className:"d-flex justify-content-between"},a.createElement(d.b2,null),a.createElement("div",{className:"partial-loading-background ".concat(p.partialJobCount)}))),a.createElement("div",{className:"d-flex align-items-center pb-2"},a.createElement("div",{className:"partial-loading-background ".concat(p.partialCheckbox)}),a.createElement("div",{className:"ms-4 ps-3"},a.createElement(m.U,{count:3})),a.createElement("div",{className:"ms-auto partial-loading-background ".concat(p.partialExportButton)})),a.createElement(b,null))}var y=n(31647),E=n(110),h={getCellStyle:function(e){return{width:e,flex:"".concat(e," 0 auto")}},getColumnCellWidth:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"std";switch(e){case"checkboxes":return 60;case"status":default:return"std"===t?200:100;case"id":return"std"===t?120:85;case"dateCreated":return"std"===t?220:180;case"submitterName":return"std"===t?200:180;case"actions":return"std"===t?200:80}},getColumnCellStyle:function(e,t){return h.getCellStyle(h.getColumnCellWidth(e,t))}},N=n(58739);const S={complete:"nAOdH",failed:"xkFpC",inProgress:"BjR3y",scheduled:"Ux2b9"};var C=c.T.encloseNamespace("rostering.syncJobsStatusBadge");function x(e){return a.createElement("div",{className:function(){var t="rounded-pill px-2 d-inline-flex align-items-center fw-semibold";switch(e.status){case N.K.Completed:case N.K.CompletedWithError:return"".concat(t," ").concat(S.complete);case N.K.Failed:return"".concat(t," ").concat(S.failed);case N.K.InProgress:case N.K.Pending:case N.K.Queued:case N.K.Submitted:return"".concat(t," ").concat(S.inProgress);case"scheduled":return"".concat(t," ").concat(S.scheduled)}}()},function(){switch(e.status){case N.K.Completed:case N.K.CompletedWithError:return C("complete");case N.K.Failed:return C("failed");case N.K.InProgress:case N.K.Pending:case N.K.Queued:case N.K.Submitted:return C("inProgress");case"scheduled":return C("scheduled")}}())}var k=n(83914),w=n(35223);const I={colored:"MLlUi",avatar:"Z1jn_",logoWrapper:"OAeff",cog:"I7V_R"};var T=c.T.encloseNamespace("rostering.scheduledSyncJobItem");function j(e){var t=e.size||"std";return a.createElement("div",{className:I.colored},a.createElement("div",{className:"px-4 py-3 d-flex align-items-center"},a.createElement("div",{style:h.getColumnCellStyle("checkboxes",t)}),a.createElement("div",{className:"px-2",style:h.getColumnCellStyle("id",t)}),a.createElement("div",{className:"px-2",style:h.getColumnCellStyle("dateCreated",t)},E.O.format(e.scheduledDate,"DD/MM/YYYY, hh:mmA")),a.createElement("div",{className:"px-2",style:h.getColumnCellStyle("status",t)},a.createElement(x,{status:"scheduled"})),a.createElement("div",{className:"px-2 d-flex align-items-center",style:h.getColumnCellStyle("submitterName",t)},a.createElement("div",{className:"".concat(I.cog," me-2 rounded-circle text-white bg-dark d-flex align-items-center justify-content-center")},a.createElement(k.x,{svgName:w.vn.Cog,className:"svg-container"})),T("performedBy")),a.createElement("div",{className:"cursor-pointer d-flex justify-content-end",style:h.getColumnCellStyle("actions",t)})))}var P=n(18549),A=n(56050),O=n(70848),L=n(97408),K=n(89965);const J={colored:"aU1VO",seeMore:"Nfc8Q"};function B(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,a=Array(t);n<t;n++)a[n]=e[n];return a}var R=c.T.encloseNamespace("shared.bulkJobsAccordionItem");function F(e){var t,n,r=(t=a.useState(!!e.forceExpand&&e.forceExpand(e.job)),n=2,function(e){if(Array.isArray(e))return e}(t)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var a,r,c,l,o=[],s=!0,i=!1;try{if(c=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;s=!1}else for(;!(s=(a=c.call(n)).done)&&(o.push(a.value),o.length!==t);s=!0);}catch(e){i=!0,r=e}finally{try{if(!s&&null!=n.return&&(l=n.return(),Object(l)!==l))return}finally{if(i)throw r}}return o}}(t,n)||function(e,t){if(e){if("string"==typeof e)return B(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)?B(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.")}()),c=r[0],l=r[1],o=!!e.disableExpand&&e.disableExpand(e.job);return a.createElement("div",{className:"".concat(J.colored," ").concat(o?"":"cursor-pointer"),onClick:function(){o||l((function(e){return!e}))}},a.createElement("div",{className:"p-4 d-flex align-items-center"},a.createElement("div",{style:h.getCellStyle(60),onClick:function(e){return e.stopPropagation()}},a.createElement(K.X,{id:e.job.id,checked:e.isChecked(e.job.id),onChange:function(){return e.onToggleCheckbox(e.job.id)}})),e.columns.map((function(t){var n=t.render,r=t.renderClassName,c=t.width,l=t.id;return a.createElement("div",{className:"".concat(null!=r?r:""),key:l,style:h.getCellStyle(c)},n(e.job))})),a.createElement("div",{className:"d-flex justify-content-end ".concat(o?"":"cursor-pointer"),style:h.getColumnCellStyle("actions",e.tableSize)},!o&&a.createElement("div",{className:"".concat(J.seeMore," text-info")},R(c?"seeLess":"seeMore")))),c&&a.createElement("div",{className:"bg-white border-bottom cursor-default",onClick:function(e){return e.stopPropagation()}},e.jobDetailsComponent(e.job)))}var U=n(10638);function H(e){return a.createElement(U.J,{queryParams:e.queryParams,mainFilters:e.filters,appLink:e.appLink,analyticsOptions:e.analyticsOptions,hideHeading:!0,hideDivider:!0,constantIndices:[]})}var M=n(37395),D=n(2102),W=n(69883),V=n(299),G=n(75795);const Z={bulkCheckbox:"XeoQi"};function q(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,a=Array(t);n<t;n++)a[n]=e[n];return a}var _="shared.bulkJobsAccordions",z=c.T.encloseNamespace(_);function $(e){var t,n,r,c=(n=a.useState(!1),r=2,function(e){if(Array.isArray(e))return e}(n)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var a,r,c,l,o=[],s=!0,i=!1;try{if(c=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;s=!1}else for(;!(s=(a=c.call(n)).done)&&(o.push(a.value),o.length!==t);s=!0);}catch(e){i=!0,r=e}finally{try{if(!s&&null!=n.return&&(l=n.return(),Object(l)!==l))return}finally{if(i)throw r}}return o}}(n,r)||function(e,t){if(e){if("string"==typeof e)return q(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)?q(e,t):void 0}}(n,r)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),l=c[0],o=c[1],i=(0,V.X)(e.jobs.data),u=(0,W.Z)();return a.createElement("div",{className:"".concat(e.containerClassName," pe-3")},a.createElement("div",{className:"d-flex align-items-center pb-2 mt-3"},a.createElement(K.X,{className:Z.bulkCheckbox,id:"bulk-audit-log-checkbox",checked:i.bulkChecked,onChange:i.onToggleBulk,indeterminate:i.hasSomeSelections()}),a.createElement("div",{className:"ms-4"},a.createElement(H,{queryParams:e.queryParams,appLink:e.appLink,filters:e.filters})),a.createElement(D.m,{variant:"dark",className:"ms-auto",onClick:function(){if(!l){o(!0);var t=i.getSelected();e.onClickExport(t).then((function(){return u.success(z("exportSuccess"))})).catch((function(){return u.error(z("exportError"))})).finally((function(){return o(!1)}))}},disabled:!i.hasSomeSelections()||l,showSpinner:l},a.createElement(s.x,{namespace:_,phrase:"export"}))),a.createElement("div",{className:"d-flex no-wrap mb-2 fw-semibold px-4 py-2"},a.createElement("div",{style:h.getCellStyle(60)}),e.columns.map((function(e){var t=e.id,n=e.header,r=e.headerClassName,c=e.width;return a.createElement("div",{key:t,className:r,style:h.getCellStyle(c)},n)})),a.createElement("div",{style:h.getColumnCellStyle("actions",e.tableSize)})),!!e.pinnedComponent&&e.pinnedComponent(),!!e.jobs.data.length&&e.jobs.data.map((function(t){return a.createElement(F,{key:t.id,job:t,onToggleCheckbox:i.onToggleItem,isChecked:i.isChecked,jobDetailsComponent:e.jobDetailsComponent,onClickExport:e.onClickExport,imageCdnUrl:e.imageCdnUrl,onPollJob:e.onPollJob,columns:e.columns,forceExpand:e.forceExpand,disableExpand:e.disableExpand,tableSize:e.tableSize})})),!!(null===(t=e.jobs.pagination)||void 0===t?void 0:t.cursors)&&a.createElement(M.t,{className:"p-0 text-end pb-3 mt-3",cursors:e.jobs.pagination.cursors,appLink:G.O.getCurrentRoute().appLink,buttonVariant:"outline-dark"}))}var Q=n(97392),Y=n(91693),X=n(80247),ee=n(14177);function te(e){return e.jobId?a.createElement("div",null,a.createElement("div",{className:"mb-4"},a.createElement(ee.$,{jobId:e.jobId,pollJob:e.onPollJob(e.jobId),onStatusCompleted:e.onCompleted,actionName:"Sync",actionVerb:"Update",progressVerbPhrase:c.T.getPhrase("rostering.syncJobPolling","progressVerb")}))):a.createElement("div",{className:"text-center"},a.createElement(X.Z,{as:"div",animation:"border",role:"status"}))}const ne={failed:"BSIaY",tag:"NOJhh"};function ae(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 a,r,c,l,o=[],s=!0,i=!1;try{if(c=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;s=!1}else for(;!(s=(a=c.call(n)).done)&&(o.push(a.value),o.length!==t);s=!0);}catch(e){i=!0,r=e}finally{try{if(!s&&null!=n.return&&(l=n.return(),Object(l)!==l))return}finally{if(i)throw r}}return o}}(e,t)||function(e,t){if(e){if("string"==typeof e)return re(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)?re(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 re(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,a=Array(t);n<t;n++)a[n]=e[n];return a}var ce="rostering.syncJobSummary";function le(e){var t=ae(a.useState(null),2),n=t[0],r=t[1],c=ae(a.useState(!1),2),l=c[0],o=c[1];function i(e){var t="",r="";switch(e){case"staff":t="bg-navy",r=w.vn.Staff;break;case"learners":t="bg-blue",r=w.vn.GraduationCap;break;case"classrooms":t="bg-teal",r=w.vn.Classrooms}var c=Object.keys(n[e]).filter((function(e){return"totalProcessed"!==e&&"totalSucceeded"!==e}));return a.createElement("div",{className:"col"},a.createElement("div",{className:"py-3 ps-2 pe-3 rounded border"},a.createElement("div",{className:"d-flex align-items-center px-2 mb-2"},a.createElement("div",{className:"".concat(t," ").concat(ne.badge," d-flex align-items-center rounded-circle text-white ps-0 me-2")},a.createElement(k.x,{className:"svg-container ".concat(ne.svg),size:k.S.Standard,svgName:r})),a.createElement(s.x,{namespace:ce,phrase:e})),a.createElement("ul",{className:"mb-0"},null==c?void 0:c.map((function(t){return a.createElement("li",{className:"mb-2",key:t},a.createElement("div",{className:"d-flex"},a.createElement("div",{className:"rounded-pill me-2 px-2 d-inline-flex align-items-center fw-semibold ".concat("errored"===t?ne.failed:ne.tag)},n[e][t]),a.createElement(s.x,{namespace:ce,phrase:t})))})))))}return a.useEffect((function(){n||(o(!0),e.getJobSummary(e.job.id).then((function(e){r(e)})).finally((function(){o(!1)})))}),[e.job.id]),a.createElement(a.Fragment,null,l&&!n&&a.createElement("div",{className:"text-center py-3"},a.createElement(X.Z,{as:"div",animation:"border",role:"status"})),!!n&&a.createElement("div",{className:"row gx-3 mt-2"},i("staff"),i("learners"),i("classrooms")))}var oe=c.T.encloseNamespace("rostering.syncJobDetails");function se(e){var t=e.job.status===N.K.Completed||e.job.status===N.K.CompletedWithError,n=(0,W.Z)();return a.createElement("div",{className:"py-3 px-4"},a.createElement("div",{className:"d-flex justify-content-between"},e.job.status!==N.K.InProgress&&a.createElement("h1",{className:"h4"},oe("heading")),t&&a.createElement(Y.h,{className:"btn btn-outline-dark fw-semibold",svgName:w.vn.Download,onClick:function(){e.onClickExport([e.job.id]).then((function(){n.success(oe("exportSuccess"))})).catch((function(){n.error(oe("exportError"))}))}},oe("export"))),function(){switch(e.job.status){case N.K.InProgress:case N.K.Pending:case N.K.Queued:case N.K.Submitted:return a.createElement(te,{jobId:e.job.id,onCompleted:e.onCompleted,onPollJob:e.onPollJob});case N.K.Failed:return a.createElement(a.Fragment,null);case N.K.Completed:case N.K.CompletedWithError:return a.createElement(le,{job:e.job,getJobSummary:e.getJobSummary});default:return a.createElement(a.Fragment,null)}}())}var ie=n(86794),ue=n(36532),me=n(55171),de=n(64818);const pe={avatar:"B8miR",logoWrapper:"higtD",cog:"bNPxa"};var fe="rostering.syncJobsAccordion",ge=c.T.encloseNamespace(fe),be=[N.K.InProgress,N.K.Pending,N.K.Queued,N.K.Submitted];function ve(e){var t=[O.x$.SortBy([{id:"newest",name:c.T.getPhrase(fe,"newest"),default:!0},{id:"oldest",name:c.T.getPhrase(fe,"oldest")}]),O.x$.JobStatus()],n=[{id:"id",header:ge("syncFrom"),headerClassName:"px-2 py-1",renderClassName:"px-2",render:function(e){var t,n=null===(t=e.metadata)||void 0===t?void 0:t.source;if(!n)return a.createElement(a.Fragment,null);var r=me.e.Rostering.sources[n];if(!r)throw new A.H("Unsupported rostering sync source, please add it to HardCoded rostering source");return a.createElement("div",{className:"bg-white rounded-circle border ".concat(pe.logoWrapper," d-flex align-items-center justify-content-center")},a.createElement(ue.u,{spanHack:!0,title:r.name},a.createElement("img",{src:r.iconUrl,alt:r.name})))},width:h.getColumnCellWidth("id",e.tableSize)},{id:"dateCreated",header:ge("date"),headerClassName:"px-2 py-1",renderClassName:"px-2",render:function(e){return E.O.format(e.dateCreated,"DD/MM/YYYY, hh:mmA")},width:h.getColumnCellWidth("dateCreated",e.tableSize)},{id:"status",header:ge("status"),headerClassName:"px-2 py-1",renderClassName:"px-2",render:function(e){return a.createElement(x,{status:e.status})},width:h.getColumnCellWidth("status",e.tableSize)},{id:"submitterName",header:ge("performedBy"),headerClassName:"px-2",renderClassName:"px-2",render:function(t){return function(e,t){return e.submittedByClickView?a.createElement("div",{className:"d-flex align-items-center"},a.createElement(ie.b,{className:"me-2 rounded-circle border",size:k.S.Large},a.createElement(Q.F,null)),e.submitterName):e.submitterName?a.createElement("div",{className:"d-flex align-items-center"},a.createElement("div",{className:"me-2 flex-shrink-0 ".concat(pe.avatar)},a.createElement(L.q,{imageCdnUrl:t.imageCdnUrl,initials:de.l.getInitials(e.submitterName.split(" ")[0],e.submitterName.split(" ")[1])})),e.submitterName):a.createElement("div",{className:"me-2 d-flex align-items-center"},a.createElement("div",{className:"".concat(pe.cog," me-2 rounded-circle text-white bg-dark d-flex align-items-center justify-content-center")},a.createElement(k.x,{svgName:w.vn.Cog,className:"svg-container"})),ge("scheduledSubmitter"))}(t,e)},width:h.getColumnCellWidth("submitterName",e.tableSize)}];return a.createElement($,Object.assign({},e,{filters:t,jobDetailsComponent:function(t){return a.createElement(se,{job:t,getJobSummary:e.getJobSummary,onPollJob:e.onPollJob,onClickExport:e.onClickExport,onCompleted:e.onCompleted})},columns:n,forceExpand:function(e){return be.includes(e.status)},disableExpand:function(e){return e.status===N.K.Failed}}))}var ye=n(62394),Ee=n(16714),he=n(39151),Ne=n(44538),Se=n(31949),Ce=n(93322),xe=n(79612),ke=n(99742),we=n(14070),Ie=n(97291),Te=n(29613),je=n(81803),Pe="rostering.districtRosterEmptyState";function Ae(){return a.createElement(o.u,null,a.createElement(o.u.Image,{src:ke.W.EmptyStates.Rostering.DISTRICT_ROSTERING}),a.createElement(o.u.Heading,null,a.createElement(s.x,{namespace:Pe,phrase:"emptyHeading"})),a.createElement(o.u.Info,{className:"w-50 mb-2"},a.createElement(s.x,{namespace:Pe,phrase:"emptyInfo"})),a.createElement(o.u.Info,{className:"w-50 mb-1 fw-semibold"},a.createElement(s.x,{namespace:Pe,phrase:"strongInfo"})))}var Oe="rostering.noSyncJobs",Le=c.T.encloseNamespace(Oe);function Ke(e){return a.createElement(o.u,null,a.createElement(o.u.Image,{src:ke.W.EmptyStates.Rostering.NO_SYNC_JOBS}),a.createElement(o.u.Heading,null,a.createElement(s.x,{namespace:Oe,phrase:"emptyHeading"})),a.createElement(o.u.Info,{className:"w-50 mb-3"},a.createElement(s.x,{namespace:Oe,phrase:"emptyInfo"})),a.createElement(o.u.Cta,{className:"btn btn-dark",onClick:e.onStartFullSync,text:Le("emptyCta")}))}var Je=n(52834),Be=n(56736),Re=c.T.encloseNamespace("rostering.syncList");function Fe(e){var t,n=l.a.useBasicFetch(Ne.K.getSyncList(e.queryParams)),c=l.a.useBasicFetch(he.L.config()),o=l.a.useBasicFetch(Se.N.currentUser()),s=l.a.useBasicFetch(Ne.K.getRostering()),i=l.a.useBasicFetch(o.data&&s.data&&Ne.K.getSyncScheduleSettings(s.data.id)),m=n.hasCompleted&&c.hasCompleted&&i.hasCompleted&&s.hasCompleted;(0,Ce.F)();var d=l.a.useGetFetchAsync(),p=(0,r.I0)();function f(e){return d(Ne.K.getJobSummary(e))}function g(e){return function(t,n){return d(Te.q.getJobProgress(e,t,n))}}function b(){p({type:l.a.Actions.INVALIDATE,keys:["rostering:sync"],request:null})}function E(e){return d(Te.q.sendJobReports(e))}(0,xe.M)({title:Re("pageTitle")});var h=m&&"Active"===(null===(t=s.data)||void 0===t?void 0:t.status),N=(0,Be.B)(o.data),S=N.syncNow,C=N.fullSync;return a.createElement(je.d,{heading:Re("heading"),breadcrumbs:[Re("breadcrumb")],headingButton:function(){return h?a.createElement(P.G,{onSyncNow:S,onFullSync:C}):a.createElement(a.Fragment,null)},requiredPermissions:Ee.C.Rostering},h&&a.createElement(y.E,{active:"syncJobs",appLinks:{syncJobs:{application:Ie.O.SETTINGS,action:we.e.Settings.ROSTERING},settings:{application:Ie.O.SETTINGS,action:we.e.Settings.ROSTERING_SETTINGS}}}),function(){var t,r;if("Managed"===(null===(t=s.data)||void 0===t?void 0:t.status))return a.createElement(Ae,null);if("None"===(null===(r=s.data)||void 0===r?void 0:r.status))return a.createElement(Je.y,null);if(!m)return a.createElement(v,null);if(!n.data.data.length&&!e.queryParams)return a.createElement(Ke,{onStartFullSync:S});var l=ye.y.getScheduledJobBySetting(i.data);return a.createElement(a.Fragment,null,a.createElement(ve,{jobs:n.data,queryParams:e.queryParams,appLink:{application:Ie.O.SETTINGS,action:we.e.Settings.ROSTERING},onClickExport:E,getJobSummary:f,imageCdnUrl:c.data.imageCdnUrl,onPollJob:g,onCompleted:b,pinnedComponent:l?function(){return a.createElement(j,{scheduledDate:l})}:null}),!n.data.data.length&&e.queryParams&&a.createElement(u,{imageCdnUrl:ke.W.EmptyStates.Rostering.EMPTY_RESULTS}))}())}},52834:(e,t,n)=>{n.d(t,{y:()=>u});var a=n(32735),r=n(97958),c=n(98461),l=n(83345),o=n(12778),s=n(99742),i="rostering.requiresSetUp";function u(){return a.createElement(r.u,null,a.createElement(r.u.Image,{src:s.W.EmptyStates.Rostering.REQUIRES_SET_UP}),a.createElement(r.u.Heading,null,a.createElement(l.x,{namespace:i,phrase:"emptyHeading"})),a.createElement(r.u.Info,{className:"w-50 mb-3"},a.createElement(l.x,{namespace:i,phrase:"emptyInfo"})),a.createElement(c.d,{className:"btn btn-dark",href:o.o.getSupportRequestUrl(),newTab:!0},a.createElement(l.x,{namespace:i,phrase:"button"})))}},56736:(e,t,n)=>{n.d(t,{B:()=>p});var a=n(60139),r=n(23481),c=n(20354),l=n(67651),o=n(72081),s=n(38389),i=n(4594),u=n(44538),m=n(69883),d=r.T.encloseNamespace("rostering.syncUtils"),p=function(e){var t=c.a.useGetFetchAsync(),n=(0,m.Z)();return e?{fullSync:function(){},syncNow:function(){var r={type:a.NK.Success,heading:d("startSyncAlertHeading"),message:d("startSyncAlertBody"),appLinkText:d("startSyncAlertAppLinkText"),appLinkClassName:"info-link"},c={name:o.g.Rostering,type:s.m.Rostering,metadata:{targetMasterId:e.customerId,targetMasterType:i.E.Customer},customerId:e.customerId,dataType:l.B.Learner};t(u.K.createJob(c,(function(){n.success(r)}),(function(){n.error(d("error"))})))}}:{syncNow:function(){},fullSync:function(){}}}},22771:(e,t,n)=>{n.d(t,{Z:()=>a});const a={pillTabSelector:"Hdi6o",tab:"RvNxr",minWidth:"GHSz9",radiusSmall:"VhJJa",tabLink:"WFyvo"}},79447:(e,t,n)=>{n.d(t,{Z:()=>d});var a=n(95685),r=n.n(a),c=n(32735),l=n(46304),o=n(58661),s=n(74512);function i(e,t,n){const a=(e-t)/(n-t)*100;return Math.round(1e3*a)/1e3}function u({min:e,now:t,max:n,label:a,visuallyHidden:c,striped:l,animated:o,className:u,style:m,variant:d,bsPrefix:p,...f},g){return(0,s.jsx)("div",{ref:g,...f,role:"progressbar",className:r()(u,`${p}-bar`,{[`bg-${d}`]:d,[`${p}-bar-animated`]:o,[`${p}-bar-striped`]:o||l}),style:{width:`${i(t,e,n)}%`,...m},"aria-valuenow":t,"aria-valuemin":e,"aria-valuemax":n,children:c?(0,s.jsx)("span",{className:"visually-hidden",children:a}):a})}const m=c.forwardRef((({isChild:e=!1,...t},n)=>{const a={min:0,max:100,animated:!1,visuallyHidden:!1,striped:!1,...t};if(a.bsPrefix=(0,l.vE)(a.bsPrefix,"progress"),e)return u(a,n);const{min:i,now:m,max:d,label:p,visuallyHidden:f,striped:g,animated:b,bsPrefix:v,variant:y,className:E,children:h,...N}=a;return(0,s.jsx)("div",{ref:n,...N,className:r()(E,v),children:h?(0,o.UI)(h,(e=>(0,c.cloneElement)(e,{isChild:!0}))):u({min:i,now:m,max:d,label:p,visuallyHidden:f,striped:g,animated:b,bsPrefix:v,variant:y},n)})}));m.displayName="ProgressBar";const d=m}}]);
2
+ //# sourceMappingURL=7150-93a205975c-lite.chunk.js.map