@clickview/lite 0.75.0-rc.2 → 0.75.0-rc.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (160) hide show
  1. package/dist/bundles.json +1 -1
  2. package/dist/css/{119-lite-a1f592f602.chunk.css → 1243-lite-13eda8f6a0.chunk.css} +2 -4
  3. package/dist/css/{7230-lite-36ff6e6d53.chunk.css → 1867-lite-8baa8af02b.chunk.css} +3 -5
  4. package/dist/css/{5241-lite-baab687563.chunk.css → 4203-lite-9ffab89741.chunk.css} +3 -5
  5. package/dist/css/{8364-lite-99938dea56.chunk.css → 5193-lite-d434056013.chunk.css} +1 -0
  6. package/dist/css/{7339-lite-05c396fed3.chunk.css → 6756-lite-839687d3d7.chunk.css} +1 -0
  7. package/dist/css/{9527-lite-1d2221b6a8.chunk.css → 7103-lite-fef3024f61.chunk.css} +2 -4
  8. package/dist/css/{8856-lite-827b34aed7.chunk.css → 8856-lite-c114ab5c89.chunk.css} +1 -1
  9. package/dist/languages/en.json +1 -1
  10. package/dist/scripts/104-7abe2b09dd-lite.chunk.js +2 -0
  11. package/dist/scripts/104-7abe2b09dd-lite.chunk.js.map +1 -0
  12. package/dist/scripts/1074-2ab8b03e30-lite.chunk.js +2 -0
  13. package/dist/scripts/1074-2ab8b03e30-lite.chunk.js.map +1 -0
  14. package/dist/scripts/1087-861be5211f-lite.chunk.js +2 -0
  15. package/dist/scripts/1087-861be5211f-lite.chunk.js.map +1 -0
  16. package/dist/scripts/1199-6522b1d291-lite.chunk.js +2 -0
  17. package/dist/scripts/1199-6522b1d291-lite.chunk.js.map +1 -0
  18. package/dist/scripts/121-1b744469ee-lite.chunk.js +2 -0
  19. package/dist/scripts/121-1b744469ee-lite.chunk.js.map +1 -0
  20. package/dist/scripts/{1221-502395e693-lite.chunk.js → 1221-894d8474d5-lite.chunk.js} +3 -3
  21. package/dist/scripts/1221-894d8474d5-lite.chunk.js.map +1 -0
  22. package/dist/scripts/1243-ede924125c-lite.chunk.js +2 -0
  23. package/dist/scripts/1243-ede924125c-lite.chunk.js.map +1 -0
  24. package/dist/scripts/147-44ee7e9a78-lite.chunk.js +2 -0
  25. package/dist/scripts/147-44ee7e9a78-lite.chunk.js.map +1 -0
  26. package/dist/scripts/{1610-7f58bb25a9-lite.chunk.js → 1610-bf848cce4d-lite.chunk.js} +2 -2
  27. package/dist/scripts/{1610-7f58bb25a9-lite.chunk.js.map → 1610-bf848cce4d-lite.chunk.js.map} +1 -1
  28. package/dist/scripts/{7230-71f8d6d1bd-lite.chunk.js → 1867-3b447a1b85-lite.chunk.js} +2 -2
  29. package/dist/scripts/{7230-71f8d6d1bd-lite.chunk.js.map → 1867-3b447a1b85-lite.chunk.js.map} +1 -1
  30. package/dist/scripts/2258-ed7383502f-lite.chunk.js +3 -0
  31. package/dist/scripts/2258-ed7383502f-lite.chunk.js.map +1 -0
  32. package/dist/scripts/3268-2736356687-lite.chunk.js +2 -0
  33. package/dist/scripts/{3268-faca1bf46e-lite.chunk.js.map → 3268-2736356687-lite.chunk.js.map} +1 -1
  34. package/dist/scripts/3836-425334ab13-lite.chunk.js +2 -0
  35. package/dist/scripts/{3836-f2a0c9f713-lite.chunk.js.map → 3836-425334ab13-lite.chunk.js.map} +1 -1
  36. package/dist/scripts/3837-e4c5bb738b-lite.chunk.js +2 -0
  37. package/dist/scripts/3837-e4c5bb738b-lite.chunk.js.map +1 -0
  38. package/dist/scripts/4185-1f65c7adc9-lite.chunk.js +2 -0
  39. package/dist/scripts/4185-1f65c7adc9-lite.chunk.js.map +1 -0
  40. package/dist/scripts/4203-ee50e89841-lite.chunk.js +3 -0
  41. package/dist/scripts/4203-ee50e89841-lite.chunk.js.map +1 -0
  42. package/dist/scripts/4598-bcd3f6f8a7-lite.chunk.js +2 -0
  43. package/dist/scripts/{4598-2b1daca7ae-lite.chunk.js.map → 4598-bcd3f6f8a7-lite.chunk.js.map} +1 -1
  44. package/dist/scripts/4948-f21dad2ca1-lite.chunk.js +2 -0
  45. package/dist/scripts/4948-f21dad2ca1-lite.chunk.js.map +1 -0
  46. package/dist/scripts/{5153-079b4125ae-lite.chunk.js → 5153-acc6c13153-lite.chunk.js} +3 -3
  47. package/dist/scripts/5153-acc6c13153-lite.chunk.js.map +1 -0
  48. package/dist/scripts/6137-bc8b193237-lite.chunk.js +2 -0
  49. package/dist/scripts/6137-bc8b193237-lite.chunk.js.map +1 -0
  50. package/dist/scripts/6756-e90680dfcd-lite.chunk.js +3 -0
  51. package/dist/scripts/6756-e90680dfcd-lite.chunk.js.map +1 -0
  52. package/dist/scripts/6790-c8a9efba50-lite.chunk.js +2 -0
  53. package/dist/scripts/6790-c8a9efba50-lite.chunk.js.map +1 -0
  54. package/dist/scripts/705-10a85bae7a-lite.chunk.js +2 -0
  55. package/dist/scripts/705-10a85bae7a-lite.chunk.js.map +1 -0
  56. package/dist/scripts/7103-14bd3771d2-lite.chunk.js +2 -0
  57. package/dist/scripts/7103-14bd3771d2-lite.chunk.js.map +1 -0
  58. package/dist/scripts/7205-12a6b2ac55-lite.chunk.js +2 -0
  59. package/dist/scripts/7205-12a6b2ac55-lite.chunk.js.map +1 -0
  60. package/dist/scripts/7438-88d11bb89a-lite.chunk.js +2 -0
  61. package/dist/scripts/7438-88d11bb89a-lite.chunk.js.map +1 -0
  62. package/dist/scripts/7480-e0749592fc-lite.chunk.js +2 -0
  63. package/dist/scripts/7480-e0749592fc-lite.chunk.js.map +1 -0
  64. package/dist/scripts/8010-e9163f5bee-lite.chunk.js +2 -0
  65. package/dist/scripts/8010-e9163f5bee-lite.chunk.js.map +1 -0
  66. package/dist/scripts/8410-1f1fd5ccf0-lite.chunk.js +3 -0
  67. package/dist/scripts/8410-1f1fd5ccf0-lite.chunk.js.map +1 -0
  68. package/dist/scripts/8705-ecd20ef6cb-lite.chunk.js +2 -0
  69. package/dist/scripts/8705-ecd20ef6cb-lite.chunk.js.map +1 -0
  70. package/dist/scripts/8856-02dd2e486c-lite.chunk.js +2 -0
  71. package/dist/scripts/8856-02dd2e486c-lite.chunk.js.map +1 -0
  72. package/dist/scripts/9003-1db925f5ec-lite.chunk.js +2 -0
  73. package/dist/scripts/9003-1db925f5ec-lite.chunk.js.map +1 -0
  74. package/dist/scripts/9042-1a42fcbba2-lite.chunk.js +2 -0
  75. package/dist/scripts/9042-1a42fcbba2-lite.chunk.js.map +1 -0
  76. package/dist/scripts/9103-4eec16d73b-lite.chunk.js +2 -0
  77. package/dist/scripts/9103-4eec16d73b-lite.chunk.js.map +1 -0
  78. package/dist/scripts/9134-19912ca3ee-lite.chunk.js +2 -0
  79. package/dist/scripts/9134-19912ca3ee-lite.chunk.js.map +1 -0
  80. package/dist/scripts/9266-f0ad8d5cb3-lite.chunk.js +2 -0
  81. package/dist/scripts/9266-f0ad8d5cb3-lite.chunk.js.map +1 -0
  82. package/dist/scripts/9740-9d50d31b72-lite.chunk.js +2 -0
  83. package/dist/scripts/9740-9d50d31b72-lite.chunk.js.map +1 -0
  84. package/dist/scripts/{bundle-95a6fc2722.min.js → bundle-828ca65de8.min.js} +3 -3
  85. package/dist/scripts/{bundle-95a6fc2722.min.js.map → bundle-828ca65de8.min.js.map} +1 -1
  86. package/package.json +1 -1
  87. package/dist/scripts/104-b62a8447f0-lite.chunk.js +0 -2
  88. package/dist/scripts/104-b62a8447f0-lite.chunk.js.map +0 -1
  89. package/dist/scripts/107-989ac2dc47-lite.chunk.js +0 -2
  90. package/dist/scripts/107-989ac2dc47-lite.chunk.js.map +0 -1
  91. package/dist/scripts/119-e3a8bd94dd-lite.chunk.js +0 -2
  92. package/dist/scripts/119-e3a8bd94dd-lite.chunk.js.map +0 -1
  93. package/dist/scripts/1199-a2ac2338d0-lite.chunk.js +0 -2
  94. package/dist/scripts/1199-a2ac2338d0-lite.chunk.js.map +0 -1
  95. package/dist/scripts/121-bf7a153eb8-lite.chunk.js +0 -2
  96. package/dist/scripts/121-bf7a153eb8-lite.chunk.js.map +0 -1
  97. package/dist/scripts/1221-502395e693-lite.chunk.js.map +0 -1
  98. package/dist/scripts/2258-4d0639c9fe-lite.chunk.js +0 -3
  99. package/dist/scripts/2258-4d0639c9fe-lite.chunk.js.map +0 -1
  100. package/dist/scripts/3268-faca1bf46e-lite.chunk.js +0 -2
  101. package/dist/scripts/3836-f2a0c9f713-lite.chunk.js +0 -2
  102. package/dist/scripts/3837-fe321e8deb-lite.chunk.js +0 -2
  103. package/dist/scripts/3837-fe321e8deb-lite.chunk.js.map +0 -1
  104. package/dist/scripts/4025-306e0fbdd5-lite.chunk.js +0 -2
  105. package/dist/scripts/4025-306e0fbdd5-lite.chunk.js.map +0 -1
  106. package/dist/scripts/4164-5d3af57b67-lite.chunk.js +0 -2
  107. package/dist/scripts/4164-5d3af57b67-lite.chunk.js.map +0 -1
  108. package/dist/scripts/4185-e8e40dab72-lite.chunk.js +0 -2
  109. package/dist/scripts/4185-e8e40dab72-lite.chunk.js.map +0 -1
  110. package/dist/scripts/4562-545f04c53f-lite.chunk.js +0 -2
  111. package/dist/scripts/4562-545f04c53f-lite.chunk.js.map +0 -1
  112. package/dist/scripts/4598-2b1daca7ae-lite.chunk.js +0 -2
  113. package/dist/scripts/4948-66ba60c8e3-lite.chunk.js +0 -2
  114. package/dist/scripts/4948-66ba60c8e3-lite.chunk.js.map +0 -1
  115. package/dist/scripts/5153-079b4125ae-lite.chunk.js.map +0 -1
  116. package/dist/scripts/5241-163f5ac64c-lite.chunk.js +0 -3
  117. package/dist/scripts/5241-163f5ac64c-lite.chunk.js.map +0 -1
  118. package/dist/scripts/5349-bc0fcb4083-lite.chunk.js +0 -2
  119. package/dist/scripts/5349-bc0fcb4083-lite.chunk.js.map +0 -1
  120. package/dist/scripts/6135-a878a9cff0-lite.chunk.js +0 -3
  121. package/dist/scripts/6135-a878a9cff0-lite.chunk.js.map +0 -1
  122. package/dist/scripts/6509-23fdb20a4b-lite.chunk.js +0 -2
  123. package/dist/scripts/6509-23fdb20a4b-lite.chunk.js.map +0 -1
  124. package/dist/scripts/6790-5086b72662-lite.chunk.js +0 -2
  125. package/dist/scripts/6790-5086b72662-lite.chunk.js.map +0 -1
  126. package/dist/scripts/7205-2428f775a5-lite.chunk.js +0 -2
  127. package/dist/scripts/7205-2428f775a5-lite.chunk.js.map +0 -1
  128. package/dist/scripts/7339-5793c921bb-lite.chunk.js +0 -3
  129. package/dist/scripts/7339-5793c921bb-lite.chunk.js.map +0 -1
  130. package/dist/scripts/7438-a5f96e58fc-lite.chunk.js +0 -2
  131. package/dist/scripts/7438-a5f96e58fc-lite.chunk.js.map +0 -1
  132. package/dist/scripts/7926-6b040931aa-lite.chunk.js +0 -2
  133. package/dist/scripts/7926-6b040931aa-lite.chunk.js.map +0 -1
  134. package/dist/scripts/8536-f75009dd87-lite.chunk.js +0 -2
  135. package/dist/scripts/8536-f75009dd87-lite.chunk.js.map +0 -1
  136. package/dist/scripts/8856-df102acdff-lite.chunk.js +0 -2
  137. package/dist/scripts/8856-df102acdff-lite.chunk.js.map +0 -1
  138. package/dist/scripts/9134-42dc2390ce-lite.chunk.js +0 -2
  139. package/dist/scripts/9134-42dc2390ce-lite.chunk.js.map +0 -1
  140. package/dist/scripts/9266-c5d6705147-lite.chunk.js +0 -2
  141. package/dist/scripts/9266-c5d6705147-lite.chunk.js.map +0 -1
  142. package/dist/scripts/9284-402a14d41c-lite.chunk.js +0 -2
  143. package/dist/scripts/9284-402a14d41c-lite.chunk.js.map +0 -1
  144. package/dist/scripts/9470-11c8c2ca71-lite.chunk.js +0 -2
  145. package/dist/scripts/9470-11c8c2ca71-lite.chunk.js.map +0 -1
  146. package/dist/scripts/9527-111c8586a7-lite.chunk.js +0 -2
  147. package/dist/scripts/9527-111c8586a7-lite.chunk.js.map +0 -1
  148. package/dist/scripts/9591-230bcf0935-lite.chunk.js +0 -2
  149. package/dist/scripts/9591-230bcf0935-lite.chunk.js.map +0 -1
  150. /package/dist/css/{5349-lite-829df3b4e7.chunk.css → 6137-lite-829df3b4e7.chunk.css} +0 -0
  151. /package/dist/css/{9470-lite-edb2d29928.chunk.css → 8010-lite-edb2d29928.chunk.css} +0 -0
  152. /package/dist/css/{6135-lite-41bdd1c5a3.chunk.css → 8410-lite-41bdd1c5a3.chunk.css} +0 -0
  153. /package/dist/css/{121-lite-1337d9acf0.chunk.css → 9042-lite-1337d9acf0.chunk.css} +0 -0
  154. /package/dist/scripts/{1221-502395e693-lite.chunk.js.LICENSE.txt → 1221-894d8474d5-lite.chunk.js.LICENSE.txt} +0 -0
  155. /package/dist/scripts/{2258-4d0639c9fe-lite.chunk.js.LICENSE.txt → 2258-ed7383502f-lite.chunk.js.LICENSE.txt} +0 -0
  156. /package/dist/scripts/{5153-079b4125ae-lite.chunk.js.LICENSE.txt → 4203-ee50e89841-lite.chunk.js.LICENSE.txt} +0 -0
  157. /package/dist/scripts/{5241-163f5ac64c-lite.chunk.js.LICENSE.txt → 5153-acc6c13153-lite.chunk.js.LICENSE.txt} +0 -0
  158. /package/dist/scripts/{6135-a878a9cff0-lite.chunk.js.LICENSE.txt → 6756-e90680dfcd-lite.chunk.js.LICENSE.txt} +0 -0
  159. /package/dist/scripts/{7339-5793c921bb-lite.chunk.js.LICENSE.txt → 8410-1f1fd5ccf0-lite.chunk.js.LICENSE.txt} +0 -0
  160. /package/dist/scripts/{bundle-95a6fc2722.min.js.LICENSE.txt → bundle-828ca65de8.min.js.LICENSE.txt} +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scripts/9103-4eec16d73b-lite.chunk.js","mappings":"sWACA,SAAgB,qBAAuB,QAAQ,kBAAoB,QAAQ,iBAAmB,QAAQ,mBAAqB,QAAQ,aAAe,QAAQ,eAAiB,QAAQ,MAAQ,QAAQ,IAAM,QAAQ,EAAI,QAAQ,UAAY,QAAQ,EAAI,QAAQ,EAAI,SCuBjQ,IAAMA,EAAY,2BAEZC,EAAwB,0BAgD9B,SAASC,IACP,OACE,uBAAKC,UAAS,2HACZ,uBAAKA,UAAU,+EACf,uBAAKA,UAAU,yCACb,uBAAKA,UAAU,+BACb,uBAAKA,UAAS,UAAK,MAAU,YAAI,IAAQ,sBAE3C,uBAAKA,UAAU,+BACb,uBAAKA,UAAS,UAAK,MAAU,YAAI,IAAQ,sBAE3C,uBAAKA,UAAU,gCACb,uBAAKA,UAAS,UAAK,MAAU,YAAI,IAAQ,uBAKnD,CAkCM,SAAUC,EAAkBC,GAChC,IAAMC,EAAM,eAAkB,SAACC,GAjCjC,IAAuBC,EAkCdD,GAAOF,EAAMI,cAGlBF,EAAGG,MAAMC,MAAQ,GAAH,OAAMJ,EAAGK,cArCJJ,EAqCiCH,EAAMG,OApCxDK,EAAA,cAAwBL,GACnB,GAAK,EAEVA,EAAOM,SAAWC,EAAA,WACb,EAELP,EAAOM,SAAWC,EAAA,SACb,EAAI,QADb,GA8BmE,MACnE,GAAG,IAEGC,EAAoBH,EAAA,cAAwBR,EAAMG,QAExD,EApGF,SAAuBA,GACrB,IAAMS,EAAQC,EAAA,4BAAsCV,GAEpD,GAAIK,EAAA,cAAwBL,GAC1B,MAAO,CACLS,MAAAA,EACAE,UAAW,gBACXC,eAAgBnB,EAChBoB,uBAAwB,gBAACC,EAAA,GAAa,CAACC,KAAMD,EAAA,YAGjD,OAAQd,EAAOM,QACb,KAAKC,EAAA,SACH,MAAO,CACLE,MAAAA,EACAE,UAAW,iBACXC,eAAgBnB,EAChBoB,uBACE,gBAACC,EAAA,GAAa,CAACC,KAAMD,EAAA,UAA0BE,sBAAuB,uBAG5E,KAAKT,EAAA,WACH,MAAO,CACLE,MAAAA,EACAE,UAAW,YACXC,gBAAiBH,aAAK,EAALA,EAAOQ,KAEpBxB,EAFuB,UACpBA,EAAqB,aAAI,EAAAyB,EAAA,GAAgBlB,EAAOmB,KAAM,MAE7DN,uBACE,gBAACC,EAAA,GAAa,CACZC,KAAMD,EAAA,YACNE,uBAAuBP,aAAK,EAALA,EAAOQ,KAAM,mBAA0B,SAC9DG,eAAeX,aAAK,EAALA,EAAOQ,MAAO,oBAKzC,CAoEMI,CAAcxB,EAAMG,QAJtBS,EAAK,EAALA,MACAE,EAAS,EAATA,UACAC,EAAc,EAAdA,eACAC,EAAsB,EAAtBA,uBAGIS,EAAqBzB,EAAM0B,kBAM7B,CACFC,cAAe3B,EAAM2B,eAP8B,CACnDC,cAAc,EACdC,UAAU,EACVC,YAAY,EACZC,oBAAoB,EACpBJ,eAAe,GAKjB,OACE,uBAAK7B,UAAU,gEACb,uBAAKG,IAAKA,EAAKH,UAAWE,EAAMI,YAAc,QAAU,SACrDO,GACC,uBAAKb,UAAS,UAAK,qBAAyB,uBACzCE,EAAMgC,kBAAoB,gBAACnC,EAAY,MACxC,gBAACoC,EAAA,EAAO,CAACC,QAASlC,EAAMkC,SACtB,gBAACC,EAAA,EAAc,eACbC,MAAOpC,EAAMG,OACbkC,KAAMrC,EAAMsC,cACZC,aAAcvC,EAAMuC,aACpBC,aAAcC,EAAA,cACdvB,KAAK,WACLH,eAAgBf,EAAMe,gBAClBU,OAGLzB,EAAM0C,gBACP,uBAAK5C,UAAS,UAAKE,EAAMgC,kBAAoB,iBAAqB,8CAChE,uBAAKlC,UAAS,UAAK,QAAY,8GAC7B,gBAAC6C,EAAA,EAAI,CAAChD,UAAWA,EAAWiD,OAAO,iBAAiBC,QAAS,CAAEC,WAAY9C,EAAM0C,sBAMzF/B,GACA,gCACG,WAAaX,EAAMG,OAClB,gBAAC4C,EAAA,EAAmB,CAClBC,WAAYhD,EAAMG,OAClBoC,aAAcvC,EAAMuC,aACpBL,QAASlC,EAAMkC,QACfe,cAAe,CACbC,GAAIlD,EAAMG,OAAO+C,GACjB5B,KAAMtB,EAAMG,OAAOmB,MAErB6B,iBAAkB,CAChBC,OAAQC,EAAA,qBAAmCrD,EAAMG,OAAOe,MACxDoC,WAAY,WACZC,SAAUvD,EAAMwD,iBAElBC,SAAUzD,EAAM0D,mBAChBC,eAAgB3D,EAAM2D,eACtBC,UAAW5D,EAAM4D,YAGnB,gBAACC,EAAA,EAAS,CACRC,KAAMlD,aAAK,EAALA,EAAOQ,IACbN,UAAWA,EACXyB,aAAcvC,EAAMuC,aACpBL,QAASlC,EAAMkC,QACfpC,UAAWiB,EACXkC,cAAe,CACbC,GAAIlD,EAAMG,OAAO+C,GACjB5B,KAAMtB,EAAMG,OAAOmB,MAErB6B,iBAAkB,CAChBC,OAAQC,EAAA,qBAAmCrD,EAAMG,OAAOe,MACxDoC,WAAY,WACZC,SAAUvD,EAAMwD,kBAGjBxC,KAQjB,CAvHAjB,EAAkBgE,aAAe,CAC/BxB,aAAc,CAAEF,KAAM,Y,wECxGxB,SAAgB,QAAU,SCM1B,IACM2B,EAAYC,EAAA,mBADA,kBAclB,SAASC,EAAWlE,GAClB,IAAMmE,EAAUnE,EAAMoE,MAAQJ,EAAU,MAOxC,MALoC,CAClC,oBAAqB,IAAF,OAAMG,EAAO,KAChC,2BAA4BnE,EAAMqE,YAAc,OAAS,YAI7D,CAEM,SAAUC,EAAQtE,GACtB,OAAO,uBAAKF,WAAW,OAAW,6CAA8C,UAAgBE,EAAMF,WAAYO,MAAO6D,EAAWlE,IACtI,C,yGCjCA,SAAgB,eAAiB,SCWjC,SAASuE,EAA6BvE,GACpC,OACE,sBAAIwE,MAAOxE,EAAMwE,MAAO1E,UAAU,MAAME,EAAMwE,MAElD,CAMM,SAAUC,EAAyBzE,GACvC,OAAKA,EAAMkC,QAOT,gBAACD,EAAA,EAAO,CAACC,QAASlC,EAAMkC,QAASpC,UAAS,UAAK,mBAC7C,gBAACyE,EAA4B,iBAAKvE,KANlC,gBAACuE,EAA4B,iBAAKvE,GASxC,C,qECjCA,SAAgB,MAAQ,QAAQ,KAAO,QAAQ,mBAAqB,SCsBpE,IAAML,EAAY,6BAoBZ,SAAUoD,EAAoB/C,G,UAwCXgD,EAUjB0B,EAjDN,W,MACMC,EAAmC,QAAhB,EAAA3E,EAAMgD,kBAAU,eAAE4B,OAEzC,GAAKD,EAAL,CAGA,IAAKA,EAAiBE,OAAS7E,EAAMgD,WAAWvC,SAAWC,EAAA,WAAqB,CAC9E,IAAMoE,EAAW9E,EAAMgD,WAEnB8B,EAASC,MAAMF,QACjBF,EAAmBG,EAASC,OAE1BD,EAASE,aAAaH,QACxBF,EAAmBG,EAASE,aAC/B,CAED,OAAOC,EAAA,QAAkBN,EAAiBb,KAZlC,CAaV,CAgCmBoB,GACbC,EA/BN,W,QACMC,EAAa,EAMjB,GAJIpF,EAAMgD,WAAW4B,QAAU5E,EAAMgD,WAAW4B,OAAOC,QACrDO,GAAcpF,EAAMgD,WAAW4B,OAAOC,OAGpC7E,EAAMgD,WAAWvC,SAAWC,EAAA,WAAqB,CACnD,IAAMoE,EAAW9E,EAAMgD,YAEE,QAArB,EAAA8B,EAASE,oBAAY,eAAEH,SACzBO,GAAcN,EAASE,aAAaH,QAEpB,QAAd,EAAAC,EAASC,aAAK,eAAEF,SAClBO,GAAcN,EAASC,MAAMF,MAChC,CAED,OAAOO,CACT,CAamBC,GACbC,GAAuB,QAAX,EAAAtF,EAAMwE,aAAK,eAAEe,UAAuB,QAAb,EAAAvF,EAAMwF,eAAO,eAAED,QAElDtC,EAAgB,OAAH,QACjBC,GAAIlD,EAAMgD,WAAWE,GAAGuC,WACxBnE,KAAMtB,EAAMgD,WAAW1B,MAEpBtB,EAAMiD,eAGLE,EAAmB,OAAH,QACpBG,WAAY,WACZF,QAvBqBJ,EAuBChD,EAAMgD,WAtBxB0C,EAAA,SAAkC1C,EAAYtC,EAAA,YACzC,cAGLgF,EAAA,SAAgC1C,EAAYtC,EAAA,UACvC,iBADT,IAoBGV,EAAMmD,kBAGX,OACE,2BACE,uBAAKrD,UAAS,4BAAuB,qBAAyB,SAC5D,gBAACmC,EAAA,EAAO,CACNC,QAASlC,EAAMkC,QACfe,cAAeA,EACfE,iBAAkBA,EAClBwC,cAAY,GAEX3F,EAAMyD,UACL,uBAAK3D,UAAS,UAAK,OAAW,uGAC5B,uBAAKA,UAAS,UAAK,QAAY,+EAC7B,gBAAC8F,EAAA,EAAY,CAACC,QAAS,UAAmB/F,UAAU,6BACpD,qBAAGA,UAAU,uCACK,QAAf,EAAAE,EAAM8F,iBAAS,eAAEP,QAChB,4BAAOvF,EAAM8F,WACb,gBAACnD,EAAA,EAAI,CAAChD,UAAWA,EAAWiD,OAAO,eAO5C8B,GACC,gBAACvC,EAAA,EAAc,CACbC,MAAOsC,EACPnC,aAAcvC,EAAMuC,aACpBC,aAAcC,EAAA,cACdvB,KAAK,WACLW,UAAQ,EACRC,YAAU,EACVF,cAAY,EACZmE,oBAAkB,KAIpBrB,GACA,uBAAK5E,UAAU,uCACb,uBAAKA,UAAU,oDACb,gBAAC8F,EAAA,EAAY,CAACC,QAAS,UAAmB/F,UAAU,oCAKzDE,EAAM2D,gBACL,uBAAK7D,UAAS,UAAK,QAAY,kHAC7B,gBAAC8F,EAAA,EAAY,CAACC,QAAS,YAAqB/F,UAAU,kCACtD,qBAAGA,UAAU,wCACVE,EAAM4D,UACH,4BAAOuB,GACP,gBAACxC,EAAA,EAAI,CAAChD,UAAWA,EAAWiD,OAAO,SAASC,QAAS,CAAEgC,MAAOM,EAAYrC,WAAYqC,SASnGG,GACC,uBAAKxF,UAAU,2BACZE,EAAMwF,SACL,gBAACQ,EAAA,EAAY,CAACxB,MAAOxE,EAAMwF,QAAStD,QAASlC,EAAMiG,gBAChDjG,EAAMwF,SAGVxF,EAAMwE,OACL,gBAACC,EAAwB,CACvBD,MAAOxE,EAAMgD,WAAW1B,KACxBY,QAASlC,EAAMkG,gBAO7B,C,4DCjJM,SAAUC,EAIdtD,GAWA,SAASuD,EACPtC,EACAuC,GAEA,IAAMC,EAAgBzD,EAAQ0D,OAAOzC,EAAK5C,MAE1C,GAAKoF,aAAa,EAAbA,EAAeE,QAAQ1C,GAA5B,CAGA,IAAM2C,EAAa,OAAH,wBACX5D,EAAQ6D,UACR5C,GAaL,MAAO,CACLA,KAXoB,SAA+B2C,EAAY,CAAC,SAYhEtD,iBAVuB,iBACvBmD,EAAcnD,iBACd,CACEN,EAAQM,iBACRkD,IAbI,CAqBV,CAqBA,MAAO,CACLD,QAAAA,EACAO,IAjBF,SACE7C,EACAuC,GAEA,GAAKxD,EAAQ+D,UAAb,CAGA,IAAMC,EAAYT,EAAQtC,EAAMuC,GAE3BQ,GAGL,kBAA8BA,EAAU/C,KAAM+C,EAAU1D,iBAPhD,CAQV,EAMF,C,y8HC7GA,GAAgB,gBAAkB,SCYlC,IAAMxD,EAAY,yBASZ,SAAUmH,EAAgB9G,GAC9B,IAAM+G,EAAe,UAAwB,SAAAC,GAC3C,IAAIC,IAAUD,EAAKE,QAAUF,EAAKG,KAKlC,OAHInH,EAAMoH,gBAAkBJ,EAAKK,gBAAgB9B,SAC/C0B,EAAQD,EAAKK,gBAAgBC,SAAStH,EAAMoH,iBAEvCH,CACT,IAEA,OACE,uBAAKnH,UAAU,sBACb,gBAAC,KAAU,CAACyH,YAAU,EAACC,cAAexH,EAAMyH,WAAa,KACvD,uBAAK3H,UAAU,wBACb,uBAAKA,UAAU,iBACZiH,EAAaW,KAAI,SAACC,EAAaC,GAAK,OACnC,uBAAK9H,WAAW,OAAW,aAAcE,EAAM6H,eAAgBC,IAAKF,GAClE,qBACEG,KAAMJ,EAAYR,KAClBrH,UAAU,oGACVkI,OAAO,SACPC,IAAI,uBAEJ,wBACEnI,UAAS,kBAAa,mBACtBO,MAAO,CAAE6H,gBAAiB,OAAF,OAASP,EAAYT,KAAI,QAEnD,wBAAMpH,UAAU,2BAA2B6H,EAAYrG,OAErD,KAGNtB,EAAMmI,iBACN,uBAAKrI,UAAU,sBACb,gBAACsI,EAAA,EAAY,CAACL,KAAM/H,EAAMqI,mBAAoBvI,UAAU,6BAA6BwI,QAAM,GACzF,gBAAC3F,EAAA,EAAI,CAAChD,UAAWA,EAAWiD,OAAO,6BASrD,C,syBC5DO,IAAM2F,EAAe,CAC1BC,cAAa,SAACC,GACZ,OAAKA,EAASlD,OAGPkD,EAASf,KAAI,SAAAgB,GAAC,OAAIA,EAAExF,EAAE,IAFpB,EAGX,EAEAyF,qBAAoB,SAACC,GACnB,IAAMC,EAAWD,EAAOE,QAAe,SAACC,EAAMC,G,MAAS,kBAClDD,GAAI,EAAqB,QAAf,EAAAC,EAAKC,MAAMnF,YAAI,QAAI,I,GAC9B,IAEJ,OAAO,SAAiB+E,EAAU,KACpC,EAEAK,oBAAmB,SAAuBC,EAAuB/F,GAG/D,OAFiB+F,EAAiBC,MAAK,SAAAV,GAAI,QAAC,OAAI,QAAJ,EAAAA,EAAExF,UAAE,eAAEuC,eAAwB,QAAT,EAAArC,EAAOF,UAAE,eAAEuC,WAAU,IAG7E0D,EAAiBE,QAAO,SAAAX,GAAI,QAAC,OAAI,QAAJ,EAAAA,EAAExF,UAAE,eAAEuC,eAAwB,QAAT,EAAArC,EAAOF,UAAE,eAAEuC,WAAU,IAEzE,GAAP,SAAY0D,GAAgB,CAAE/F,GAChC,EAEAkG,qBAAoB,SAACC,EAAsBnC,GACzC,GAAKmC,GAAiBnC,EAAtB,CAGA,IAAIoC,EAAO,sBAMX,OAJIpC,IAAmB,SACrBoC,EAAO,gBAGF,kBAAwBD,EAAcC,EARrC,CASV,E,4DCjCF,SAASC,EAAa3F,GACpB,MAAM,UAAWA,KAGRA,EAAK4F,KAChB,CAIA,IAAMC,EAA+C,CAInD,4BAA6B,CAC3BnD,QAASiD,EACTtG,iBAAkB,CAChBG,WAAY,YACZF,OAAQ,YACRwG,cAAe,cACfC,WAAY,yBAGhB,wBAAyB,CACvBrD,QAASiD,EACTtG,iBAAkB,CAChBG,WAAY,YACZF,OAAQ,YACRwG,cAAe,cACfC,WAAY,qBAGhB,kBAAmB,CACjBrD,QAASiD,EACTtG,iBAAkB,CAChBG,WAAY,WACZF,OAAQ,YACRwG,cAAe,cACfC,WAAY,sBAGhB,iCAAkC,CAChCrD,QAAS,WAAF,OAAQ,CAAI,EACnBrD,iBAAkB,CAChBG,WAAY,WACZsG,cAAe,WACfC,WAAY,uBACZzG,OAAQ,cAGZ,6BAA8B,CAC5BoD,QAAS,WAAF,OAAQ,CAAI,EACnBrD,iBAAkB,CAChBG,WAAY,WACZsG,cAAe,WACfC,WAAY,mBACZzG,OAAQ,cAGZ,2BAA4B,CAC1BoD,QAASiD,EACTtG,iBAAkB,CAChBG,WAAY,WACZsG,cAAe,aACfxG,OAAQ,YACRyG,WAAY,8BAGhB,qBAAsB,CACpBrD,QAAS,WAAF,OAAQ,CAAI,EACnBrD,iBAAkB,CAChBG,WAAY,WACZsG,cAAe,aACfxG,OAAQ,YACRyG,WAAY,kBAGhB,uBAAwB,CACtBrD,QAAS,SAAA1C,GAAI,QAAMA,EAAKgG,SAAS,EACjC3G,iBAAkB,CAChBG,WAAY,YACZsG,cAAe,UACfC,WAAY,qBACZzG,OAAQ,cAGZ,0BAA2B,CACzBoD,QAAS,SAAA1C,GAAI,QAAMA,EAAKgG,SAAS,EACjC3G,iBAAkB,CAChBG,WAAY,WACZF,OAAQ,YACRwG,cAAe,UACfC,WAAY,uBAOhB,kBAAmB,CACjBrD,QAAS,WAAF,OAAQ,CAAI,EACnBrD,iBAAkB,CAChBG,WAAY,WACZsG,cAAe,cACfxG,OAAQ,YACRyG,WAAY,qBAGhB,kBAAmB,CACjBrD,QAASiD,EACTtG,iBAAkB,CAChBG,WAAY,WACZsG,cAAe,cACfxG,OAAQ,YACRyG,WAAY,gBAGhB,gBAAiB,CACfrD,QAAS,WAAF,OAAQ,CAAI,EACnBrD,iBAAkB,CAChBG,WAAY,WACZF,OAAQ,YACRwG,cAAe,cACfC,WAAY,mBAGhB,mBAAoB,CAClBrD,QAAS,WAAF,OAAQ,CAAI,EACnBrD,iBAAkB,CAChBG,WAAY,cACZF,OAAQ,YACRwG,cAAe,cACfC,WAAY,sBAGhB,sBAAuB,CACrBrD,QAAS,WAAF,OAAQ,CAAI,EACnBrD,iBAAkB,CAChBG,WAAY,WACZF,OAAQ,YACRwG,cAAe,cACfC,WAAY,mBAcZ,SAAUE,EAAqBlH,G,MACnC,GAAyB,OAAe,CACtCM,iBAAkBN,EAAQM,iBAC1BuD,SAAU7D,EAAQiB,KAClByC,OAAQoD,EACR/C,UAA4B,QAAjB,EAAA/D,EAAQ+D,iBAAS,WAJtBR,EAAO,EAAPA,QAOR,MAAO,CACLO,IARkB,EAAHA,IASfP,QAAAA,EAEJ,C,sPCrKMzG,EAAY,2BAQlB,SAASqK,EAAQhK,GACf,IAAMiK,EAASjK,EAAMkK,MAAQlK,EAAMiK,OAEnC,OACE,0BACEnK,WAAW,OACT,oDACAmK,EAAS,qBAAuB,YAElCE,QAAS,WAAF,OAAQnK,EAAMmK,QAAQnK,EAAMkK,IAAI,GAEtClK,EAAMoK,SAGb,CASM,SAAUC,EAAkBrK,GAChC,OACE,uBAAKF,UAAU,sDACb,gBAACkK,EAAO,eAACE,IAAI,cAAiBlK,GAC5B,gBAAC4F,EAAA,EAAY,CAACC,QAAS,YACvB,gBAAClD,EAAA,EAAI,CAAChD,UAAWA,EAAWiD,OAAO,eAErC,gBAACoH,EAAO,eAACE,IAAI,WAAclK,GACzB,gBAAC4F,EAAA,EAAY,CAACC,QAAS,cACvB,gBAAClD,EAAA,EAAI,CAAChD,UAAWA,EAAWiD,OAAO,YAErC,gBAACoH,EAAO,eAACE,IAAI,SAAYlK,GACvB,gBAAC4F,EAAA,EAAY,CAACC,QAAS,YACvB,gBAAClD,EAAA,EAAI,CAAChD,UAAWA,EAAWiD,OAAO,WAErC,gBAACoH,EAAO,eAACE,IAAI,gBAAmBlK,GAC9B,gBAACsK,EAAA,EAAsB,CAACjI,KAAK,KAAKkI,WAAS,IAC3C,gBAAC5H,EAAA,EAAI,CAAChD,UAAWA,EAAWiD,OAAO,kBAI3C,CChCA,SAAS4H,IACP,OACE,gBAACC,EAAA,EAAY,KACX,gBAACA,EAAA,OAAiB,CAACC,OAAQ,GACzB,gBAAC/H,EAAA,EAAI,CAACC,OAAO,WAEf,gBAAC6H,EAAA,OAAiB,CAACC,OAAQ,GACzB,gBAAC/H,EAAA,EAAI,CAACC,OAAO,aAIrB,CAEA,SAAS+H,IACP,OACE,gBAACF,EAAA,EAAY,KACX,gBAACA,EAAA,OAAiB,CAACC,OAAQ,GACzB,gBAAC/H,EAAA,EAAI,CAACC,OAAO,WAEf,gBAAC6H,EAAA,OAAiB,CAACC,OAAQ,GACzB,gBAAC/H,EAAA,EAAI,CAACC,OAAO,iBAEf,gBAAC6H,EAAA,OAAiB,CAACC,OAAQ,GACzB,gBAAC/H,EAAA,EAAI,CAACC,OAAO,aAIrB,C,eCnCA,SAAS,IACP,OACE,gBAAC6H,EAAA,EAAY,KACX,gBAACA,EAAA,OAAiB,CAACC,OAAQ,GACzB,gBAAC/H,EAAA,EAAI,CAACC,OAAO,mBAEf,gBAAC6H,EAAA,OAAiB,CAACC,OAAQ,GACzB,gBAAC/H,EAAA,EAAI,CAACC,OAAO,mBAEf,gBAAC6H,EAAA,OAAiB,CAACC,OAAQ,GACzB,gBAAC/H,EAAA,EAAI,CAACC,OAAO,WAIrB,CAEA,SAASgI,IACP,OACE,gBAACH,EAAA,EAAY,KACX,gBAACA,EAAA,OAAiB,CAACC,OAAQ,GACzB,gBAAC/H,EAAA,EAAI,CAACC,OAAO,iBAEf,gBAAC6H,EAAA,OAAiB,CAACC,OAAQ,GACzB,gBAAC/H,EAAA,EAAI,CAACC,OAAO,iBAEf,gBAAC6H,EAAA,OAAiB,CAACC,OAAQ,GACzB,gBAAC/H,EAAA,EAAI,CAACC,OAAO,iBAEf,gBAAC6H,EAAA,OAAiB,CAACC,OAAQ,GACzB,gBAAC/H,EAAA,EAAI,CAACC,OAAO,WAIrB,C,oCClCA,IAAM,EAAY,wBACZoB,EAAYC,EAAA,mBAAiC,GAOnD,SAAS4G,EAAgB7K,GACvB,OACE,0BACEF,WAAW,OACT,kEChCwC,SDmC1CqK,QAAS,WAAF,OAAQnK,EAAMmK,QAAQnK,EAAM8K,OAAO,GAE1C,uBAAKhL,UAAU,2EACZE,EAAMoK,UAIf,CAMA,SAASW,EAAoB/K,GAC3B,OACE,uBAAKF,WAAW,OAAW,mDClDgE,UDmDzF,0BACEO,MAAO,CAAE6H,gBAAiB,OAAF,OAAS8C,EAAA,sCAA6C,MAC9ElL,WAAW,OAAW,MCrDgF,WDuDxG,0BACEO,MAAO,CAAE6H,gBAAiB,OAAF,OAAS8C,EAAA,oCAA2C,MAC5ElL,WAAW,OAAW,wBCzDqG,UD2D3H,uBAAKA,WAAW,OAAW,oBC3DiH,UD4D1I,gBAACC,EAAA,EAAiB,CAChBI,OAAQH,EAAMoD,OACdI,gBAAiB,oBACjBlB,cAAc,SAM1B,C,eE3DM,EAAY,oBACZ,EAAY2B,EAAA,mBAAiC,GA+B7C,SAAUgH,EAAWjL,GACzB,OAAKkL,SAASC,kBAQZ,uBAAKrL,WAAW,OAAW,0BAA2BE,EAAMoL,cAAgB,UAAWnL,IAAKD,EAAMqL,aAChG,uBAAKvL,UAAU,+CACb,gBAACwL,EAAA,EAAM,CAACC,QAAQ,eAAezL,UAAU,yCAAyCqK,QAPxF,WACEe,SAASM,gBACX,GAMQ,gBAAC7I,EAAA,EAAI,CAAChD,UAAW,EAAWiD,OAAO,mBACnC,gBAACgD,EAAA,EAAY,CAACC,QAAS,eAG1B7F,EAAMoK,UAdF,gCAiBX,C,sGCnDM,SAAUqB,IACd,I,IAAMxL,EAAM,SAAgB,MAEmC,G,EAArB,YAAe,G,EAAM,E,o4BAAvDmL,EAAY,KAAEM,EAAe,KAE/BC,EAAcT,SAASC,kBA4B7B,OA1BA,aAAgB,W,MACd,GAAKlL,EAAI2L,QAAT,CAGA,IAAMC,EAAqB,YApB/B,SAAuD7D,EAAW0D,GAC5DR,SAASY,oBAAsB9D,EAKnC0D,GAAgB,GAJdA,GAAgB,EAKpB,CAcMK,CAAuB9L,EAAI2L,QAASF,EACtC,EAIA,OAFW,QAAX,EAAAzL,EAAI2L,eAAO,SAAEI,iBAAiB,mBAAoBH,GAE3C,WAAK,MAAC,OAAW,QAAX,EAAA5L,EAAI2L,eAAO,eAAEK,oBAAoB,mBAAoBJ,EAAmB,CAR7E,CASV,GAAG,CAAC5L,EAAI2L,UAeD,CACL3L,IAAAA,EACAmL,aAAAA,EACAO,YAAAA,EACAO,kBAjBF,WACOjM,EAAI2L,SAAYD,GAGrB1L,EAAI2L,QAAQO,mBAAqBlM,EAAI2L,QAAQO,mBAC/C,EAaEC,eAXF,WACElB,SAASM,iBAAgB,SAAS,WAChCE,GAAgB,EAClB,GACF,EASF,CDaAT,EAAWK,OA5CX,SAAkBtL,GAChB,IAAKkL,SAASC,kBACZ,OAAO,iCAET,IAAMkB,EAAarM,EAAMoE,MAAQ,EAAU,cAE3C,OACE,uBAAKtE,UAAU,qBACb,gBAACwL,EAAA,EAAM,CAACC,QAASvL,EAAMuL,SAAW,OAAQzL,UAAU,qDAAqDqK,QAASnK,EAAMmK,SACtH,4BAAOkC,IACLrM,EAAMsM,UACR,gBAAC1G,EAAA,EAAY,CAACC,QAAS,kBAK/B,E,oEEJM0G,EAAoD,CACxDC,GChC4B,QDiC5BC,GCjCkD,QDkClDC,GClCwE,SDqCpEC,EAA2C,CAC/CH,GAAI,IACJC,GAAI,IACJC,GAAI,IACJE,OAAQ,GAMJ,SAAUC,EAAO7M,GACrB,IAAM8M,EAAwB,WAAf9M,EAAMqC,KAAoBrC,EAAM+M,WAAaJ,EAAU3M,EAAMqC,MACtE2K,EAA6B,WAAfhN,EAAMqC,KAAoBrC,EAAMiN,mBAAqBV,EAAavM,EAAMqC,MAE5F,OACE,uBAAKvC,WAAW,OACd,iFACA,wCACAkN,IAEA,gBAAC,EAAAE,OAAM,CACLhK,GAAIlD,EAAMkD,IAAM,aAChBiK,MAAOnN,EAAMmN,MACbC,QAAQ,QACR/K,KAAMyK,EACNO,UE/D2B,qoCFgE3BC,iBAAiB,SACjBC,YAAa,EACbC,UAAW,CACT,CAAEC,MAAO,CAtBE,GAsBc,EAAG,EAAG,GAAKC,MAAO,CArBhC,EAqBgD,EAAG,EAAG,IACjE,CAAED,MAAO,CAAE,EAvBA,GAuBiB,EAAG,GAAKC,MAAO,CAAE,EAtBlC,EAsBmD,EAAG,IACjE,CAAED,MAAO,CAAE,EAAG,EAAG,EAxBN,IAwByBC,MAAO,CAAE,EAAG,EAAG,EAvBxC,KAyBbC,wBAAsB,EACtB1N,IAAKD,EAAM4N,QAInB,C,ggCG/CA,SAASC,EAAe7N,GACtB,IAAM8N,EAAc,WAYpB,OAXA,aAAgB,WACd,IAAMC,EAAUC,YAAW,W,MACN,QAAnB,EAAAF,EAAYlC,eAAO,SAAEqC,SAASjO,EAAM6C,QAAQ3B,KAAMlB,EAAM6C,QAAQvB,MACxC,mBAAjBtB,EAAMkO,QAAyBlO,EAAMkO,QAC9C,GAAG,KAEH,OAAO,WACLC,aAAaJ,EACf,CACF,GAAG,IAGD,uBAAKjO,UAAU,UACb,gBAAC+M,EAAM,CAACxK,KAAMrC,EAAM6C,QAAQR,KAAM8K,MAAOnN,EAAMmN,MAAOS,MAAOE,IAGnE,C,kDC5BA,IAAM,GAAY,oBACZ,GAAY7J,EAAA,mBAAiC,IAyE7C,SAAUmK,GAAiBpO,GAC/B,OACE,uBAAKF,UAAU,iBACb,gBAACuO,GAAA,EAAG,KACF,gBAACC,GAAA,EAAG,KACF,sBAAIxO,UAAU,eACZ,gBAAC6C,EAAA,EAAI,CAAChD,UAAW,GAAWiD,OAAO,kBAIzC,gBAACyL,GAAA,EAAG,CAACvO,UAAU,QACb,gBAACwO,GAAA,EAAG,CAACC,GAAI,GAAI/B,GAAI,EAAGC,GAAI,EAAGC,GAAI,EAAG5M,UAAU,WAC1C,gBAACC,EAAA,EAAiB,CAChBI,OAAQH,EAAMoD,OACdd,cAAc,KACdkB,gBAAiBxD,EAAMwD,gBACvB9B,mBAAiB,EACjBC,eAAa,MAIlB3B,EAAMoK,SAGb,CAEAgE,GAAiBI,UA7FjB,SAAyBxO,GACvB,IAAMyO,GAAc,EAAAC,GAAA,KAEdrM,EAA0BoM,EAAYjC,IAAMiC,EAAYF,GAAM,KAAO,KAE3E,OACE,gBAACF,GAAA,EAAG,KACF,gBAACC,GAAA,EAAG,CAACC,GAAI,GAAI9B,GAAI,GAAIC,GAAI,EAAGiC,GAAI,EAAG7O,UAAU,sEAC3C,uBAAKA,UAAU,oBACb,wBAAMA,UAAU,gBACd,gBAAC6C,EAAA,EAAI,CAAChD,UAAW,GAAWiD,OAAO,aAGvC,gBAACiK,EAAM,CAACxK,KAAMA,EAAM8K,MAAOnN,EAAMmN,SAIzC,EA6EAiB,GAAiBQ,SAtEjB,SAA+B5O,GAC7B,OACE,gBAACqO,GAAA,EAAG,KACF,gBAACC,GAAA,EAAG,CAACC,GAAI,GAAI9B,GAAI,EAAGC,GAAI,EAAG5M,UAAW,wCACpC,gBAAC2K,EAAA,EAAY,KACX,gBAACA,EAAA,OAAiB,CAACC,OAAQ,GACzB,gBAAC/H,EAAA,EAAI,CAAChD,UAAW,GAAWiD,OAAO,sBAErC,gBAAC6H,EAAA,UAAoB,CAAC0C,MAAOnN,EAAMmH,OACnC,gBAACsD,EAAA,OAAiB,CAACC,OAAQ,GACzB,gBAAC/H,EAAA,EAAI,CAAChD,UAAW,GAAWiD,OAAO,mBAErC,gBAAC6H,EAAA,UAAoB,CAAC0C,MAAOnN,EAAM6O,WACnC,gBAACpE,EAAA,OAAiB,CAACC,OAAQ,GACzB,gBAAC/H,EAAA,EAAI,CAAChD,UAAW,GAAWiD,OAAO,0BAM/C,EAmDAwL,GAAiBU,YA7CjB,SAA2B9O,GACzB,OACE,uBAAKF,UAAU,6BACb,uBAAKA,WAAW,OAAW,8CC9EG,UD+E5B,gBAAC2K,EAAA,EAAY,CAACsE,cAAc,QAC1B,gBAACtE,EAAA,UAAoB,CAACuE,MAAO,GAAU,YAAa7B,MAAOnN,EAAMmH,SAK3E,E,uGE9DA,IAAM,GAAY,sBACZ,GAAYlD,EAAA,mBAAiC,I,YCYnD,SAAS,GAAqBjE,GAC5B,OACE,gBAACyK,EAAA,EAAY,KACX,gBAACA,EAAA,OAAiB,CAACC,OAAQ,GACzB,gBAAC/H,EAAA,EAAI,CAACC,OAAO,WAEf,gBAAC6H,EAAA,UAAoB,CACnB0C,MAAOnN,EAAMmH,KACb8H,gBAAc,IAEhB,gBAACxE,EAAA,OAAiB,CAACC,OAAQ,GACzB,gBAAC/H,EAAA,EAAI,CAACC,OAAO,aAIrB,CAMA,SAAS,GAAmB5C,GAC1B,OACE,gBAACyK,EAAA,EAAY,KACX,gBAACA,EAAA,OAAiB,CAACC,OAAQ,GACzB,gBAAC/H,EAAA,EAAI,CAACC,OAAO,WAEf,gBAAC6H,EAAA,UAAoB,CACnB0C,MAAOnN,EAAMmH,KACb8H,gBAAc,IAEhB,gBAACxE,EAAA,OAAiB,CAACC,OAAQ,GACzB,gBAAC/H,EAAA,EAAI,CAACC,OAAO,iBAEf,gBAAC6H,EAAA,OAAiB,CAACC,OAAQ,GACzB,gBAAC/H,EAAA,EAAI,CAACC,OAAO,aAIrB,C,iuBC1DA,IACM,GAAYqB,EAAA,mBADA,wBA0BZiL,GAED,CACH,SAAY,CAAEC,UZ8BV,SAAyBnP,GAC7B,OACE,gBAAC,aAAiC,CAACmN,MAAO,GACxC,uBAAKrN,WAAW,OAAW,UC/EP,UDgFlB,uBAAKA,UAAU,gEAEb,gBAACiL,EAAmB,CAAC3H,OAAQpD,EAAMoD,SAEnC,sBAAItD,UAAU,+DACZ,gBAAC8F,EAAA,EAAY,CAACC,QAAS,WAAoB/F,WAAW,OAAW,wEACjE,gBAAC6C,EAAA,EAAI,CAACC,OAAO,WAEf,qBAAG9C,UAAU,OACX,gBAAC6C,EAAA,EAAI,CAACC,OAAO,kBAIjB,gBAAC0B,EAAA,EAAO,CAACF,KAAMJ,EAAU,eAAgBlE,UAAU,OAAOuE,aAAW,IAErE,uBAAKvE,UAAU,iDACb,gBAAC+K,EAAe,CAACC,OAAO,aAAaX,QAASnK,EAAMoP,YAClD,gBAACxJ,EAAA,EAAY,CAACC,QAAS,YACvB,gBAAClD,EAAA,EAAI,CAACC,OAAO,eAEf,gBAACiI,EAAe,CAACC,OAAO,UAAUX,QAASnK,EAAMoP,YAC/C,gBAACxJ,EAAA,EAAY,CAACC,QAAS,cACvB,gBAAClD,EAAA,EAAI,CAACC,OAAO,YAEf,gBAACiI,EAAe,CAACC,OAAO,QAAQX,QAASnK,EAAMoP,YAC7C,gBAACxJ,EAAA,EAAY,CAACC,QAAS,YACvB,gBAAClD,EAAA,EAAI,CAACC,OAAO,WAEf,gBAACiI,EAAe,CAACC,OAAO,eAAeX,QAASnK,EAAMoP,YACpD,wBAAMtP,WAAW,OAAW,mCC7G+B,UD8GzD,gBAACwK,EAAA,EAAsB,CAACjI,KAAK,KAAKkI,WAAS,KAE7C,gBAAC5H,EAAA,EAAI,CAACC,OAAO,oBAMzB,GYvEE,aAAc,CAAEuM,UD8BZ,SAA0BnP,GAC9B,IAAMqP,EAAa5D,IAEbtE,EAAOnH,EAAM6O,SACfS,GAAA,gBAAwBtP,EAAMuP,QAAS,QAAF,OAAUvP,EAAM6O,WACrD7O,EAAMwP,UAaV,OACE,gBAAC,aAAiC,CAACrC,MA5ErB,0BA6EZ,2BACE,gBAAC9C,EAAiB,CAACJ,OAAO,aAAaE,QAASnK,EAAMoP,aACtD,uBAAKtP,UAAS,+DEnGM,UFoGjBE,EAAM6O,SACH,gBAAC,GAAoB,CAAC1H,KAAMA,IAC5B,gBAAC,GAAkB,CAACA,KAAMA,IAE9B,gBAAC8D,EAAWK,OAAM,CAACnB,QApB3B,WACuB,mBAAdnK,EAAM2G,KACX3G,EAAM2G,IAAI,CACRzF,KAAM,sBACNkC,OAAQpD,EAAMoD,OACdqM,KAAMzP,EAAMyP,KACZvF,IAAK,eAETmF,EAAWnD,mBACb,EAWuDI,UAAQ,MAG3D,gBAACrB,EAAU,CAACG,aAAciE,EAAWjE,aAAcC,YAAagE,EAAWpP,KACzE,gBAACmO,GAAgB,CAAChL,OAAQpD,EAAMoD,OAAQI,gBAAiB,qBACvD,gBAAC4K,GAAiBU,YAAW,CAAC3H,KAAMA,MAK9C,GClEE,UAAW,CAAEgI,UFbT,SAAuBnP,GAC3B,IHaMC,EACqD,EAAnDyP,EAAYC,EAC6C,EAAzDC,EAAeC,EGfjBC,GHaA7P,EAAM,WACJyP,GAAmD,IAArB,YAAe,GAAM,IAAzC,GAAEC,EAAa,KACzBC,GAAyD,IAArB,YAAe,GAAM,IAA5C,GAAEC,EAAgB,KAwEhC,CAAE5P,IAAAA,EAAKyP,WAAAA,EAAYE,cAAAA,EAAe3B,SAnEzC,SAAkB,GAAoD,IAAlD3M,EAAI,EAAJA,KAAI,IAAEe,KAAAA,OAAI,IAAG,OAAI,MAAEnB,KAAAA,OAAI,IAAG,QAAK,EACjD,GAAKjB,EAAI2L,QAAT,CAGA,IAAMmE,EAAc7E,SAAS8E,eAAe,gBAEvCD,GACH,aAAuB,IAAIE,EAAA,EAAS,0CAEtC,IAAMC,GAAO,OAAWH,GAExBF,GAAiB,GAEjBK,EAAKC,OACH,gBAACtC,EAAc,CACbhL,QAAS,CAAEvB,KAAAA,EAAMe,KAAAA,EAAMnB,KAAAA,GACvBiM,MAAOlN,EAAI2L,QAAQ5L,MAAMmN,MACzBe,OAAQ,WACNgC,EAAKE,UACLP,GAAiB,EACnB,IAlBI,CAqBV,EA4CmDQ,MA1CnD,SAAe,GAA+C,IAA7CnN,EAAE,EAAFA,GAAI5B,EAAI,EAAJA,KAAI,IAAEe,KAAAA,OAAI,IAAG,OAAI,EAAE6L,EAAM,EAANA,OACtC,GAAKjO,EAAI2L,QAAT,CAGA,IAAMmE,EAAc7E,SAAS8E,eAAe,gBAEvCD,GACH,aAAuB,IAAIE,EAAA,EAAS,0CAEtC,IAAMC,GAAO,OAAWH,GAExBG,EAAKC,OACH,uBAAKrQ,UAAU,wBACb,uBAAKoD,GAAIA,EAAIpD,UAAU,gEACrB,gBAAC+M,EAAM,CAACxK,KAAMA,EAAM8K,MAAOlN,EAAI2L,QAAQ5L,MAAMmN,WAKnDwC,GAAc,GAEdW,OAAOtC,YAAW,WAChB,IAAQ,CACNuC,UAAWrN,EACXhC,KAAM,OACNsP,cAAelP,GAAQ,qBACvBmP,aAAc,CAAC,KACfC,WAAY,IACZrQ,MAAO,uCACPsQ,aAAc,WACM,mBAAXzC,GAAyBA,IAChCyB,GAAc,GACdO,EAAKE,SACP,EACAQ,QAAS,WACPjB,GAAc,GACdO,EAAKE,SACP,GAEJ,GAAG,IArCK,CAsCV,IGpFMf,EAAa5D,IACboF,EAAW,GAAU,WAAY,CAAEvP,KAAMtB,EAAMoD,OAAO9B,OA0DtDwP,EAvDA9Q,EAAM6O,SACD,CACL,EAAG,QACH,EAAG,kBAGA,CACL,EAAG,QACH,EAAG,cACH,EAAG,kBA+CDkC,EA1CA/Q,EAAM6O,SACD,GAAP,OAAU7O,EAAMwP,UAAS,qBAAaxP,EAAM6O,UAGvC7O,EAAMwP,UAwCf,OACE,gBAAC,aAAiC,CAACrC,MAAO,IACxC,2BACE,gBAAC9C,EAAiB,CAACJ,OAAO,UAAUE,QAASnK,EAAMoP,aACnD,uBAAKtP,UAAS,0BIvGM,UJwGlB,uBAAKA,UAAU,+CACb,uBAAKA,UAAU,YACb,uBAAKA,UAAU,6DACb,gBAAC2K,EAAA,EAAY,KACVuG,OAAOC,QAAQH,GAAOpJ,KAAI,gB,IAAA,G,EAAA,E,4CAAA,I,w1BAAGwJ,EAAI,KAAEtO,EAAM,YACxC,gBAAC6H,EAAA,OAAiB,CAACC,OAAQwG,EAAMpJ,IAAKoJ,GACpC,gBAACvO,EAAA,EAAI,CAACC,OAAQA,IACI,KAGxB,uBAAK9C,UAAU,6CACb,gBAACqR,EAAA,EAAa,CACZ5F,QAAQ,eACRzL,UAAU,QACVsR,YAAatB,EAAOJ,WACpB2B,YAAa,GAAU,YACvBlH,QAhDlB,WACEnK,EAAM2G,KAAO3G,EAAM2G,IAAI,CACrBzF,KAAM,gBACNkC,OAAQpD,EAAMoD,OACdqM,KAAMzP,EAAMyP,OAGd,IAAMnO,EAAOuP,EACbf,EAAOO,MAAM,CACXnN,GAAI5B,EACJA,KAAMA,GAEV,GAsCkB,gBAACqB,EAAA,EAAI,CAACC,OAAO,iBAEf,gBAACuO,EAAA,EAAa,CACZC,YAAatB,EAAOF,cACpBrE,QAAQ,eACRzL,UAAU,QACVqK,QAlElB,WACEnK,EAAM2G,KAAO3G,EAAM2G,IAAI,CACrBzF,KAAM,mBACNkC,OAAQpD,EAAMoD,OACdqM,KAAMzP,EAAMyP,OAGdK,EAAO7B,SAAS,CAAE3M,KAAMuP,GAC1B,EA2DkBQ,YAAa,GAAU,gBAEvB,gBAAC1O,EAAA,EAAI,CAACC,OAAO,qBAGjB,gBAACqI,EAAWK,OAAM,CAACnB,QAhDjC,WACEnK,EAAM2G,KAAO3G,EAAM2G,IAAI,CACrBzF,KAAM,sBACNkC,OAAQpD,EAAMoD,OACdqM,KAAMzP,EAAMyP,KACZvF,IAAK,YAEPmF,EAAWnD,mBACb,EAwC6DI,UAAQ,KAEzD,uBAAKxM,UAAU,mBACb,gBAAC+M,EAAM,CACLxK,KAAK,KACL8K,MAAO4D,EACPnD,MAAOkC,EAAO7P,WAO1B,gBAACgL,EAAU,CAACG,aAAciE,EAAWjE,aAAcC,YAAagE,EAAWpP,KACzE,gBAACmO,GAAgB,CAAChL,OAAQpD,EAAMoD,OAAQI,gBAAiB,qBACvD,gBAAC4K,GAAiBI,UAAS,CAACrB,MAAO4D,MAK7C,GEzGE,MAAS,CAAE5B,UdSP,SAAsBnP,GAS1B,OACE,gBAAC,aAAiC,CAACmN,MAtDrB,sBAuDZ,uBAAKrN,UAAU,SACb,gBAACuK,EAAiB,CAACJ,OAAO,QAAQE,QAASnK,EAAMoP,aACjD,uBAAKtP,UAAU,wDACb,uBAAKA,UAAU,YACb,uBAAKA,UAAU,6DACZE,EAAM6O,SACL,gBAACrE,EAAoB,MACrB,gBAACG,EAAiB,OAGtB,uBAAK7K,UAAU,oDACb,gBAACwR,EAAA,EAAa,CACZnO,iBAAkB,CAAC,EACnBoO,SAAUvR,EAAMuR,SAChBnO,OAAQpD,EAAMoD,OACdoO,SAAUxR,EAAMwR,SAChBC,WAAYzR,EAAMyR,WAClBlC,QAASvP,EAAMuP,QACfmC,QAAS1R,EAAM0R,QACfC,WAAS,EACTC,YAAU,EACVC,OA/Bd,SAAwBC,GACtB9R,EAAM2G,KAAO3G,EAAM2G,IAAI,CACrBzF,KAAM,kBACN4Q,aAAAA,EACArC,KAAMzP,EAAMyP,MAEhB,QAiCF,GchDE,aAAgB,CAAEN,UbMd,SAA6BnP,GACjC,OACE,gBAAC,aAAiC,CAACmN,MA/CrB,6BAgDZ,2BACE,gBAAC9C,EAAiB,CAACJ,OAAO,eAAeE,QAASnK,EAAMoP,aACxD,uBAAKtP,UAAU,+CACb,uBAAKA,UAAU,YACb,uBAAKA,UAAU,6DACXE,EAAM6O,SAEN,gBAACjE,EAAkB,MADnB,gBAAC,EAAoB,OAIzB,uBAAK9K,UAAU,mBACb,gBAACgH,EAAA,EAAe,CAACM,eAAgBpH,EAAMoH,eAAgBiB,mBAAoBrI,EAAMqI,yBAO/F,IaxBM0J,GAAgB,SACnBC,EAAA,OAAiB,kBACjBA,EAAA,YAAsB,sBAGnB,SAAUC,GAAcjS,G,YACuE,G,EAArE,WAAoD,QAAnB,EAAAA,EAAMkS,qBAAa,QAAI,c,EAAa,E,s4BAA3FpH,EAAM,KAAEqH,EAAS,KAEnBC,EAAkBpS,EAAMqS,WAAwB,aAAXvH,EAErChH,EAAoC,CACxCV,OAAQpD,EAAMoD,OACdgM,WAAY+C,EACZX,SAAUxR,EAAMwR,SAChBC,WAAYzR,EAAMyR,WAClBlC,QAASvP,EAAMuP,QACfnI,eAAgBpH,EAAMoH,eACtByH,SAA4B,QAAlB,EAAA7O,EAAMsS,oBAAY,eAAEC,KAC9Bb,QAAS1R,EAAM0J,MAAMgI,QACrBH,SAAUvR,EAAM0J,MAAMvC,KAAKqL,kBAC3BhD,UAAWxP,EAAM0J,MAAMvC,KAAKsL,aAC5BpK,mBAAoBrI,EAAMqI,mBAC1BoH,KAAMsC,GAAiB/R,EAAM0J,MAAMxI,MACnCyF,IAAK3G,EAAM2G,KAGP+L,EAAYxD,GAAoBpE,GAAQqE,UAExC3K,EAAQxE,EAAMwE,OAAS,GAAU,SAEvC,OACE,uBAAK1E,UAAU,4EACXsS,GACA,sBAAItS,UAAU,QAAO,4BAAO0E,IAG9B,gBAACkO,EAAS,iBAAK5O,IAGrB,C,mDGnEM,GAAYG,EAAA,mBADA,4BAWZ,SAAU0O,GACd3S,G,UAEA,GAAgD,EAAA4S,GAAA,GAAoB,CAClEnB,WAAYzR,EAAMyR,WAClBoB,SAAU7S,EAAM6S,WAFVtM,EAAM,EAANA,OAAQuM,EAAM,EAANA,OAAQ1P,EAAM,EAANA,OAAQ2P,EAAW,EAAXA,YAKxBpM,GAAQ,EAAAoD,GAAA,GAAqB,CACnCjG,KAAM,CACJV,OAAQ,CACNF,GAAIlD,EAAM6S,SACV3R,KAAMlB,EAAMyR,aAGhBtO,iBAAkB,CAChBC,OAAQ,YACRG,SAAU,cATNoD,IAaF+C,EAAQ,kBAA4BsJ,EAAA,WAAuBhT,EAAM0R,UAEjEuB,GAA6B,QAAV,EAAAvJ,EAAM5F,YAAI,eAAEoP,WAAYC,EAAA,UAC3CC,EAAU,kBACdH,GAAoBD,EAAA,sBAAkChT,EAAM0R,UA6BxDQ,EAAkClS,EAAMqT,sBAAwB,WAEhEhL,EAAqBE,GAAA,uBACd,QAAX,EAAAhC,EAAOzC,YAAI,eAAEwP,iBACG,QAAhB,EAAAP,EAAYjP,YAAI,eAAEsD,gBAGdmM,GACHT,GACD9S,EAAMwT,UACL9J,EAAM5F,MACNmP,IAAqBG,EAAQtP,KAGhC,OACE,gBAAC2P,EAAA,EAAK,CACJpR,KAAK,KACLkR,mBAAoBA,EACpBG,WAAY1T,EAAM0T,WAClBC,cAAc,2BACdC,UAAW5T,EAAM6T,QACjBxB,WAAS,GAET,gBAACJ,GAAa,CACZzN,MAAOxE,EAAM8T,aACbtC,SAAUxR,EAAM6S,SAChBpB,WAAYzR,EAAMyR,WAClB/H,MAAOA,EAAM5F,KACbwO,aAAcc,EAAQtP,KACtBV,OAAQA,EAAOU,KACfyL,QAAShJ,EAAOzC,KAAKyL,QACrBnI,eAAgB2L,EAAYjP,KAAKsD,eACjC8K,cAAelS,EAAMqT,sBAAwBnB,EAC7C7J,mBAAoBA,EACpB1B,IAAKA,IAEP,gBAACoN,GAAA,EAAY,CACXC,eAAgB,GAAU,kBAC1BC,eAAgB,GAAU,kBAC1BC,YAjEN,WACEvN,EAAI,CACFzF,KAAM,qBACNwI,MAAOA,EAAM5F,MACZ,CACD8F,cAAe,gBAGjB5J,EAAM0T,YACR,EAyDMS,YAvDN,WACE,IAAMjS,GAAU,QAA2BwH,EAAM5F,MAE5C5B,IAGLyE,EAAI,CACFzF,KAAM,kBACNwI,MAAOA,EAAM5F,OAGf,aAAsB5B,GACtBlC,EAAM0T,aACR,EA2CMU,2BAAyB,IAIjC,C,kHCtIA,SAAgB,0BAA4B,QAAQ,OAAS,QAAQ,KAAO,QAAQ,MAAQ,QAAQ,QAAU,S,ggCCmB9G,SAASC,EAAWrU,G,MAClB,OACE,uBAAKF,WAAW,OACd,UACA,qDACA,mGACAE,EAAMsU,KAAO,YAAc,cAEhB,QAAV,EAAAtU,EAAMoE,YAAI,QAAI,gBAACzB,EAAA,EAAI,CAAChD,UAfT,sBAe+BiD,OAAO,WAGxD,CAyHA,IAAM2R,EAA2D,CAC/DC,KAAM,OACN/H,GAAI,OACJD,GAAI,OACJE,GAAI,QAGA+H,EAAyD,CAC7DD,KAAM,GACNhI,GAAI,QACJC,GAAI,QACJC,GAAI,SAGA,SAAUjC,EAAazK,GAC3B,OACE,sBAAIF,WAAW,OACb,qBACAyU,EAAiBvU,EAAM+O,eAAiB,MACxC0F,EAAezU,EAAM0U,SAAW,MAChC,4BACA1U,EAAMF,YAELE,EAAMoK,SAGb,CAEAK,EAAakK,KA/Ib,SAAc3U,GACZ,OACE,sBAAIF,UAAU,6BACZ,uBAAKA,UAAU,oBACb,wBAAMA,UAAS,UAAK,WAAkBE,EAAM0K,SAE9C,uBAAK5K,UAAU,SACZE,EAAMoK,UAIf,EAqIAK,EAAamK,KA7Hb,SAAc5U,GACZ,IAAmD,IAArB,YAAe,GAAM,GAA3C6U,EAAM,KAAEC,EAAS,KAQzB,OACE,gBAAC,IAAe,CAACjD,OAPnB,WACEiD,GAAU,GAEV9G,YAAW,kBAAM8G,GAAU,EAAM,GAnDhB,IAoDnB,EAGmC1Q,KAAMpE,EAAMuS,MAC3C,uBAAKzS,WAAW,OAAW,sGAAD,OAC8E,QACvF,OAAfE,EAAMqC,MAAiB,QAAJ,OAAY,SAChB,OAAfrC,EAAMqC,MAAiB,OACvBrC,EAAMF,YAELE,EAAMuS,KACP,gBAAC3M,EAAA,EAAY,CACXC,QAAS,UACTxD,KAAMuD,EAAAmP,EAAA,MACNjV,UAAU,sDAEZ,gBAACuU,EAAU,CAACC,KAAMO,KAI1B,EAmGApK,EAAauK,QAxFb,SAAiBhV,GACf,IAA4D,IAA9B,YAAwB,GAAM,GAApD6U,EAAM,KAAEC,EAAS,KAEzB,SAASjD,IACF7R,EAAMiP,iBAGX6F,GAAU,GAEc,mBAAjB9U,EAAM6R,QAAyB7R,EAAM6R,SAE5C7D,YAAW,kBAAM8G,GAAU,EAAM,GA9FhB,KA+FnB,CAGA,OACE,gBAAC,IAAe,CAACjD,OAAQA,EAAQzN,KAAMpE,EAAMmN,OAC3C,2BACGnN,EAAMgP,OAAS,sBAAIlP,UAAU,oBAAoBE,EAAMgP,OACxD,uBAAKlP,WAAW,OACd,4EACA,qDACAE,EAAMiP,eAAiB,2BAA6B,cACpDjP,EAAMF,YAEN,uBAAKA,WAAW,OACdE,EAAMiP,eAAiB,SAAW,SAClC,kBAECjP,EAAMmN,OAERnN,EAAMiP,gBACL,uBAAKnP,UAAU,SACb,gBAAC8F,EAAA,EAAY,CACXC,QAAS,UACTxD,KAAMuD,EAAAmP,EAAA,SACNjV,UAAU,mCACVqK,QAAS0H,KAId7R,EAAMiP,gBACL,gBAACoF,EAAU,CAACC,KAAMO,MAM9B,C","sources":["file:///app/packages/libs/shared/src/apps/share/components/shared-object-image/shared-object-image.scss","file:///app/packages/libs/shared/src/apps/share/components/shared-object-image/SharedObjectImage.tsx","file:///app/packages/libs/shared/src/components/divider/divider.scss","file:///app/packages/libs/shared/src/components/divider/Divider.tsx","file:///app/packages/libs/shared/src/components/thumbnails/collection/title/collection-thumbnail-title.scss","file:///app/packages/libs/shared/src/components/thumbnails/collection/title/CollectionThumbnailTitle.tsx","file:///app/packages/libs/shared/src/components/thumbnails/collection/collection-thumbnail.scss","file:///app/packages/libs/shared/src/components/thumbnails/collection/CollectionThumbnail.tsx","file:///app/packages/libs/shared/src/utils/get-event-logger/getEventLogger.ts","file:///app/packages/projects/lite/src/apps/assign/components/assign-details/components/integration-list/integration-list.scss","file:///app/packages/projects/lite/src/apps/assign/components/assign-details/components/integration-list/IntegrationList.tsx","file:///app/packages/projects/lite/src/apps/assign/utils/AssignHelper.ts","file:///app/packages/projects/lite/src/apps/assign/utils/get-assign-event-logger/getAssignEventLogger.ts","file:///app/packages/projects/lite/src/apps/assign/components/assign-details/components/assign-details-tabs/AssignDetailsTabs.tsx","file:///app/packages/projects/lite/src/apps/assign/components/assign-details/components/assign-embed/AssignEmbed.tsx","file:///app/packages/projects/lite/src/apps/assign/components/assign-details/components/assign-integrations/AssignIntegrations.tsx","file:///app/packages/projects/lite/src/apps/assign/components/assign-details/components/assign-overview/AssignOverview.tsx","file:///app/packages/projects/lite/src/apps/assign/components/assign-details/components/assign-overview/assign-overview.scss","file:///app/packages/libs/shared/src/components/full-screen/FullScreen.tsx","file:///app/packages/libs/shared/src/components/full-screen/hooks/useFullScreenActions.ts","file:///app/packages/libs/shared/src/components/qr-code/QrCode.tsx","file:///app/packages/libs/shared/src/components/qr-code/qr-code.scss","file:///app/packages/libs/shared/src/components/qr-code/images/Base64ClickViewLogo.ts","file:///app/packages/libs/shared/src/components/qr-code/hooks/useQrCodeActions.tsx","file:///app/packages/projects/lite/src/apps/assign/components/assign-details/components/assign-full-screen/AssignFullScreen.tsx","file:///app/packages/projects/lite/src/apps/assign/components/assign-details/components/assign-full-screen/assign-full-screen.scss","file:///app/packages/projects/lite/src/apps/assign/components/assign-details/components/assign-qr-code/AssignQrCode.tsx","file:///app/packages/projects/lite/src/apps/assign/components/assign-details/components/assign-share-link/AssignShareLink.tsx","file:///app/packages/projects/lite/src/apps/assign/components/assign-details/AssignDetails.tsx","file:///app/packages/projects/lite/src/apps/assign/components/assign-details/components/assign-share-link/assign-share-link.scss","file:///app/packages/projects/lite/src/apps/assign/components/assign-details/components/assign-qr-code/assign-qr-code.scss","file:///app/packages/projects/lite/src/apps/assign/views/assign-details-view/AssignDetailsView.tsx","file:///app/packages/projects/lite/src/shared/components/instructions/instructions.scss","file:///app/packages/projects/lite/src/shared/components/instructions/Instructions.tsx"],"sourcesContent":["// extracted by mini-css-extract-plugin\nexport default {\"thumbnailFallbackSvg\":\"D4JFs\",\"posterFallbackSvg\":\"bjUWl\",\"coverFallbackSvg\":\"kdLpt\",\"thumbnailContainer\":\"d3CKN\",\"insightsMask\":\"KM76U\",\"requireMarking\":\"peLH7\",\"badge\":\"mVu0E\",\"bar\":\"zO3MS\",\"a\":\"K1jW5\",\"expandBar\":\"YITJl\",\"b\":\"tCpLF\",\"c\":\"lC0cq\"};","import React from 'react';\n\nimport { Core } from 'libs/common/core';\n\nimport { LocationContext, UserAction } from 'libs/analytics/interfaces';\n\nimport { ShareViewHelper } from 'libs/shared/apps/share/views/share/ShareViewHelper';\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { BaseImage } from 'libs/shared/components/image/BaseImage';\nimport { ImageFallback, ImageFallbackType } from 'libs/shared/components/image/ImageFallback';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { CollectionThumbnail } from 'libs/shared/components/thumbnails/collection/CollectionThumbnail';\nimport { VideoThumbnail } from 'libs/shared/components/thumbnails/video/VideoThumbnail';\nimport { BG_COLOUR_CLASS_NAMES } from 'libs/shared/constants/ColourClassNames';\nimport { ImageSize, ImageType } from 'libs/shared/enums/Images';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { ThumbnailTextPosition } from 'libs/shared/enums/ThumbnailTextPosition';\nimport { BaseObject, Image, Playlist, Series } from 'libs/shared/interfaces';\nimport { getBgColorClass } from 'libs/shared/utils/getBgColorClass';\nimport { ImageHelper, ImageOptions } from 'libs/shared/utils/ImageHelper';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\nimport styles from './shared-object-image.scss';\n\nconst namespace = 'shared.sharedObjectImage';\n\nconst BASE_IMAGE_CLASS_NAME = 'rounded overflow-hidden';\n\ninterface ImageProps {\n image: Image;\n imageType: ImageType;\n imageClassName?: string;\n imageFallbackComponent: JSX.Element;\n}\n\nfunction getImageProps(object: BaseObject): ImageProps {\n const image = ImageHelper.getDisplayImageFromObject(object);\n\n if (VideoHelper.isVideoType(object))\n return {\n image,\n imageType: ImageType.Thumbnails,\n imageClassName: BASE_IMAGE_CLASS_NAME,\n imageFallbackComponent: <ImageFallback type={ImageFallbackType.Video} />\n };\n\n switch (object.typeId) {\n case MasterType.Series:\n return {\n image,\n imageType: ImageType.TallPosters,\n imageClassName: BASE_IMAGE_CLASS_NAME,\n imageFallbackComponent:\n <ImageFallback type={ImageFallbackType.Series} svgContainerClassName={styles.posterFallbackSvg} />\n };\n\n case MasterType.Playlist:\n return {\n image,\n imageType: ImageType.Covers,\n imageClassName: !image?.url\n ? `${BASE_IMAGE_CLASS_NAME} ${getBgColorClass(object.name, BG_COLOUR_CLASS_NAMES)}`\n : BASE_IMAGE_CLASS_NAME,\n imageFallbackComponent: (\n <ImageFallback\n type={ImageFallbackType.Playlist}\n svgContainerClassName={image?.url ? styles.coverFallbackSvg : 'd-none'}\n extraClasses={!image?.url && 'bg-transparent'}\n />\n )\n };\n }\n}\n\nfunction InsightsMask() {\n return (\n <div className={`d-flex pointer-events-none position-absolute bottom-0 start-0 h-100 w-100 z-1 justify-content-center align-items-center`}>\n <div className='position-absolute bg-dark bg-gradient opacity-50 w-100 h-100 z-0 rounded-3'></div>\n <div className='d-flex align-items-end gap-2 h-50 z-1'>\n <div className='d-flex align-items-end h-50'>\n <div className={`${styles.bar} ${styles.a} rounded shadow`}></div>\n </div>\n <div className='d-flex align-items-end h-75'>\n <div className={`${styles.bar} ${styles.b} rounded shadow`}></div>\n </div>\n <div className='d-flex align-items-end h-100'>\n <div className={`${styles.bar} ${styles.c} rounded shadow`}></div>\n </div>\n </div>\n </div>\n );\n}\n\nfunction getImageRatio(object: BaseObject): ImageFallbackType {\n if (VideoHelper.isVideoType(object))\n return 16 / 9;\n\n if (object.typeId === MasterType.Playlist)\n return 1;\n\n if (object.typeId === MasterType.Series)\n return 9 / 16;\n}\n\nSharedObjectImage.defaultProps = {\n imageOptions: { size: ImageSize.Small }\n};\n\ninterface SharedObjectImageProps {\n object: BaseObject;\n locationContext: LocationContext;\n appLink?: Core.AppLink;\n showVideoMetadata?: boolean;\n fixedHeight?: boolean;\n requireMarking?: number;\n imageOptions?: ImageOptions;\n showInsightsMask?: boolean;\n showCollectionMask?: boolean;\n showVideoCount?: boolean;\n thumbnailSize?: 'sm' | 'md';\n imageClassName?: string;\n hideBottomBar?: boolean;\n onlyCount?: boolean;\n}\n\nexport function SharedObjectImage(props: SharedObjectImageProps): JSX.Element {\n const ref = React.useCallback((el: HTMLDivElement) => {\n if (!el || !props.fixedHeight)\n return;\n\n el.style.width = `${el.offsetHeight * getImageRatio(props.object)}px`;\n }, []);\n\n const useVideoThumbnail = VideoHelper.isVideoType(props.object);\n\n const {\n image,\n imageType,\n imageClassName,\n imageFallbackComponent\n } = getImageProps(props.object);\n\n const thumbnailMetadata = !props.showVideoMetadata ? {\n hideDuration: true,\n hideMask: true,\n hideRating: true,\n hideVideoBadgeType: true,\n hideBottomBar: true\n } : {\n hideBottomBar: props.hideBottomBar\n };\n\n return (\n <div className='d-flex align-items-center justify-content-center w-100 h-100'>\n <div ref={ref} className={props.fixedHeight ? 'h-100' : 'w-100'}>\n {useVideoThumbnail &&\n <div className={`${styles.thumbnailContainer} position-relative`}>\n {props.showInsightsMask && <InsightsMask />}\n <AppLink appLink={props.appLink}>\n <VideoThumbnail\n video={props.object}\n size={props.thumbnailSize}\n imageOptions={props.imageOptions}\n textPosition={ThumbnailTextPosition.Independent}\n type='cosmetic'\n imageClassName={props.imageClassName}\n {...thumbnailMetadata}\n />\n </AppLink>\n {!!props.requireMarking && (\n <div className={`${props.showInsightsMask && styles.requireMarking} position-absolute bottom-0 end-0 z-1 m-2`}>\n <div className={`${styles.badge} d-flex align-items-center bg-light-ultramarine text-ultramarine fw-semibold rounded-pill w-fit mt-1 px-2`}>\n <Text namespace={namespace} phrase='requireMarking' options={{ smartCount: props.requireMarking }} />\n </div>\n </div>\n )}\n </div>\n }\n {!useVideoThumbnail &&\n <>\n {'videos' in (props.object as Playlist | Series) ? (\n <CollectionThumbnail\n collection={props.object}\n imageOptions={props.imageOptions}\n appLink={props.appLink}\n analyticsData={{\n id: props.object.id,\n name: props.object.name\n }}\n analyticsOptions={{\n entity: ShareViewHelper.getAnalyticsEntity(props.object.type),\n actionType: UserAction.Click,\n location: props.locationContext\n }}\n showMask={props.showCollectionMask}\n showVideoCount={props.showVideoCount}\n onlyCount={props.onlyCount}\n />\n ) : (\n <BaseImage\n data={image?.url}\n imageType={imageType}\n imageOptions={props.imageOptions}\n appLink={props.appLink}\n className={imageClassName}\n analyticsData={{\n id: props.object.id,\n name: props.object.name\n }}\n analyticsOptions={{\n entity: ShareViewHelper.getAnalyticsEntity(props.object.type),\n actionType: UserAction.Click,\n location: props.locationContext\n }}\n >\n {imageFallbackComponent}\n </BaseImage>\n )}\n </>\n }\n </div>\n </div>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"divider\":\"rpkqv\"};","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { classNames } from 'libs/common/react/utils/ClassNameHelper';\n\nimport styles from './divider.scss';\n\nconst namespace = 'shared.divider';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface DividerProps {\n text?: string;\n noUpperCase?: boolean;\n className?: string;\n}\n\ninterface DividerCSSProperties extends React.CSSProperties {\n '--divider-content'?: string;\n '--divider-text-transform'?: React.CSSProperties['textTransform'];\n}\n\nfunction buildStyle(props: DividerProps) {\n const content = props.text || getPhrase('or');\n \n const style: DividerCSSProperties = {\n '--divider-content': `'${content}'`,\n '--divider-text-transform': props.noUpperCase ? 'none' : 'uppercase'\n };\n\n return style;\n}\n\nexport function Divider(props: DividerProps): JSX.Element {\n return <div className={classNames('my-2 w-100 border-bottom position-relative', styles.divider, props.className)} style={buildStyle(props)}></div>;\n}","// extracted by mini-css-extract-plugin\nexport default {\"thumbnailTitle\":\"OsWjL\"};","import React from 'react';\n\nimport { Core } from 'libs/common/core';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\n\nimport styles from './collection-thumbnail-title.scss';\n\ninterface BaseCollectionThumbnailTitleProps {\n title: string;\n}\n\nfunction BaseCollectionThumbnailTitle(props: BaseCollectionThumbnailTitleProps): JSX.Element {\n return (\n <h3 title={props.title} className='h6'>{props.title}</h3>\n );\n}\n\ninterface CollectionThumbnailTitleProps extends BaseCollectionThumbnailTitleProps {\n appLink: Core.AppLink;\n}\n\nexport function CollectionThumbnailTitle(props: CollectionThumbnailTitleProps) {\n if (!props.appLink) {\n return (\n <BaseCollectionThumbnailTitle {...props} />\n );\n }\n \n return (\n <AppLink appLink={props.appLink} className={`${styles.thumbnailTitle}`}>\n <BaseCollectionThumbnailTitle {...props} />\n </AppLink>\n );\n}\n","// extracted by mini-css-extract-plugin\nexport default {\"badge\":\"M4zat\",\"mask\":\"r0Ztg\",\"thumbnailContainer\":\"uD9dz\"};","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { HashObject } from 'libs/common/react/interfaces';\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\n\nimport { AnalyticsOptions, EntityType, UserAction } from 'libs/analytics/interfaces';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { CollectionThumbnailTitle } from 'libs/shared/components/thumbnails/collection/title/CollectionThumbnailTitle';\nimport { VideoThumbnail } from 'libs/shared/components/thumbnails/video/VideoThumbnail';\nimport { TitleSubText } from 'libs/shared/components/title-sub-text/TitleSubText';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { ThumbnailTextPosition } from 'libs/shared/enums/ThumbnailTextPosition';\nimport { Playlist, Series } from 'libs/shared/interfaces';\nimport { ImageOptions } from 'libs/shared/utils/ImageHelper';\nimport { MasterTypeHelper } from 'libs/shared/utils/MasterTypeHelper';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport styles from './collection-thumbnail.scss';\n\nconst namespace = 'shared.collectionThumbnail';\n\ntype SupportedContentType = Playlist | Series;\n\ninterface CollectionThumbnailProps {\n appLink?: Core.AppLink\n collection: SupportedContentType;\n imageOptions?: ImageOptions;\n analyticsData?: HashObject;\n analyticsOptions?: AnalyticsOptions;\n showMask?: boolean;\n showVideoCount?: boolean;\n onlyCount?: boolean;\n title?: string;\n titleAppLink?: Core.AppLink;\n subText?: string;\n subTextAppLink?: Core.AppLink;\n hoverText?: string;\n}\n\nexport function CollectionThumbnail(props: CollectionThumbnailProps) {\n function getFirstVideo() {\n let collectionVideos = props.collection?.videos;\n\n if (!collectionVideos)\n return;\n\n if (!collectionVideos.count && props.collection.typeId === MasterType.Playlist) {\n const playlist = props.collection as Playlist;\n\n if (playlist.clips.count)\n collectionVideos = playlist.clips;\n\n if (playlist.interactives.count)\n collectionVideos = playlist.interactives;\n }\n\n return ArrayHelper.first(collectionVideos.data);\n }\n\n function getVideoCount() {\n let totalCount = 0;\n\n if (props.collection.videos && props.collection.videos.count) {\n totalCount += props.collection.videos.count;\n }\n\n if (props.collection.typeId === MasterType.Playlist) {\n const playlist = props.collection as Playlist;\n\n if (playlist.interactives?.count)\n totalCount += playlist.interactives.count;\n\n if (playlist.clips?.count)\n totalCount += playlist.clips.count;\n }\n\n return totalCount;\n }\n\n function getEntityType(collection: SupportedContentType) {\n if (MasterTypeHelper.isType<Playlist>(collection, MasterType.Playlist)) {\n return EntityType.Playlist;\n }\n\n if (MasterTypeHelper.isType<Series>(collection, MasterType.Series)) {\n return EntityType.Series;\n }\n }\n\n const firstVideo = getFirstVideo();\n const videoCount = getVideoCount();\n const showTexts = props.title?.length || props.subText?.length;\n\n const analyticsData = {\n id: props.collection.id.toString(),\n name: props.collection.name,\n\n ...props.analyticsData\n };\n\n const analyticsOptions = {\n actionType: UserAction.Click,\n entity: getEntityType(props.collection),\n \n ...props.analyticsOptions\n };\n\n return (\n <div>\n <div className={`position-relative ${styles.thumbnailContainer} z-1`}>\n <AppLink\n appLink={props.appLink}\n analyticsData={analyticsData}\n analyticsOptions={analyticsOptions}\n preventFocus\n >\n {props.showMask &&\n <div className={`${styles.mask} position-absolute w-100 h-100 rounded-3 bg-dark bg-gradient z-1 bg-opacity-50 pointer-events-none`}>\n <div className={`${styles.badge} d-flex align-items-center w-fit flex-grow-0 bg-dark rounded-pill ps-1 m-2`}>\n <SvgContainer svgName={cvSvgLibrary.Play} className='svg-container text-white' />\n <p className='d-inline fw-medium text-white mb-0'>\n {props.hoverText?.length ?\n <span>{props.hoverText}</span> :\n <Text namespace={namespace} phrase='playAll' />\n }\n </p>\n </div>\n </div>\n }\n\n {firstVideo &&\n <VideoThumbnail\n video={firstVideo}\n imageOptions={props.imageOptions}\n textPosition={ThumbnailTextPosition.Independent}\n type='cosmetic'\n hideMask\n hideRating\n hideDuration\n hideVideoTypeBadge\n />\n }\n\n {!firstVideo &&\n <div className='ratio ratio-16x9 bg-light rounded-3'>\n <div className='d-flex justify-content-center align-items-center'>\n <SvgContainer svgName={cvSvgLibrary.Play} className='w-33 opacity-25 text-gray-400' />\n </div>\n </div>\n }\n\n {props.showVideoCount &&\n <div className={`${styles.badge} d-flex align-items-center w-fit bg-dark bg-opacity-75 rounded-pill position-absolute bottom-0 end-0 ps-1 m-2`}>\n <SvgContainer svgName={cvSvgLibrary.Series} className='svg-container text-white me-1' />\n <p className='d-inline fw-semibold text-white mb-0'>\n {props.onlyCount\n ? <span>{videoCount}</span>\n : <Text namespace={namespace} phrase='videos' options={{ count: videoCount, smartCount: videoCount }} />\n }\n </p>\n </div>\n }\n </AppLink>\n\n </div>\n \n {showTexts &&\n <div className='mt-2 d-flex flex-column'>\n {props.subText &&\n <TitleSubText title={props.subText} appLink={props.subTextAppLink}>\n {props.subText}\n </TitleSubText>\n }\n {props.title &&\n <CollectionThumbnailTitle\n title={props.collection.name}\n appLink={props.titleAppLink}\n />\n }\n </div>\n }\n </div>\n );\n}","import { ObjectHelper } from 'libs/common/react/utils/ObjectHelper';\n\nimport { AnalyticsHelper } from 'libs/analytics/AnalyticsHelper';\nimport { AnalyticsOptions, HashObject } from 'libs/analytics/interfaces';\n\n/**\n * Base type that every event needs to extend from\n */\nexport interface BaseEventLogData<T extends string = string> {\n type: T;\n}\n\n/**\n * Utility type to map event types to config types\n */\nexport type EventLogConfig<TEvents extends BaseEventLogData> = {\n [K in TEvents['type']]: BaseConfigData<Extract<TEvents, { type: K }>>;\n};\n\ninterface BaseConfigData<T extends BaseEventLogData> {\n isValid?: (data: T) => boolean;\n analyticsOptions: AnalyticsOptions;\n}\n\ninterface GetEventLoggerOptions<TData extends HashObject, TEvents extends BaseEventLogData> {\n baseData: TData;\n /**\n * Event type config map\n */\n config: EventLogConfig<TEvents>;\n /**\n * Base analytics options\n */\n analyticsOptions: AnalyticsOptions;\n\n shouldLog?: boolean;\n}\n\n/**\n * Method build and log events which are typed using map\n * passed in from config\n */\nexport function getEventLogger<\n TData extends HashObject = HashObject,\n TEvents extends BaseEventLogData = BaseEventLogData\n>(\n options: GetEventLoggerOptions<TData, TEvents>\n) {\n /**\n * Types to assist hinting in our log / getData methods\n */\n type EventType = TEvents['type']; // type of event\n type EventData = Extract<TEvents, { type: EventType }>; // restrict the data to the passed type\n \n /**\n * Get analytics data and options for a given event type\n */\n function getData(\n data: EventData,\n logAnalyticsOptions?: AnalyticsOptions\n ) {\n const logDataConfig = options.config[data.type];\n\n if (!logDataConfig?.isValid(data))\n return;\n\n const mergedData = {\n ...options.baseData,\n ...data\n };\n \n const sanitizedData = ObjectHelper.omit<typeof data>(mergedData, ['type']);\n\n const analyticsOptions = AnalyticsHelper.mergeOptions(\n logDataConfig.analyticsOptions,\n [\n options.analyticsOptions,\n logAnalyticsOptions\n ]\n );\n\n return {\n data: sanitizedData,\n analyticsOptions\n };\n }\n\n /**\n * Similar to `getData` except it logs the analytics event\n * for a given type if its valid\n */\n function log(\n data: EventData,\n logAnalyticsOptions?: AnalyticsOptions\n ) {\n if (!options.shouldLog)\n return;\n\n const analytics = getData(data, logAnalyticsOptions);\n\n if (!analytics)\n return;\n\n AnalyticsHelper.logUserAction(analytics.data, analytics.analyticsOptions);\n }\n\n return {\n getData,\n log\n };\n}","// extracted by mini-css-extract-plugin\nexport default {\"integrationIcon\":\"_cwyZ\"};","import React from 'react';\nimport { Scrollbars } from 'react-custom-scrollbars-2';\n\nimport { classNames } from 'libs/common/react/utils/ClassNameHelper';\n\nimport { ExternalLink } from 'libs/shared/components/external-link/ExternalLink';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { InstanceRegion } from 'libs/shared/enums/InstanceRegion';\n\nimport integrationsList from './integration-list.json';\n\nimport styles from './integration-list.scss';\n\nconst namespace = 'assign.integrationList';\ninterface IntegrationListProps {\n instanceRegion?: InstanceRegion;\n itemClassName?: string;\n maxHeight?: string | number;\n contactSupportLink: string;\n hideSupportLink?: boolean;\n}\n\nexport function IntegrationList(props: IntegrationListProps): JSX.Element {\n const integrations = integrationsList.filter(item => {\n let valid = !!item.icon && !!item.link;\n\n if (props.instanceRegion && item.instanceRegions.length)\n valid = item.instanceRegions.includes(props.instanceRegion);\n\n return valid;\n });\n \n return (\n <div className='bg-white rounded-3'>\n <Scrollbars autoHeight autoHeightMax={props.maxHeight || 308}>\n <div className='container-fluid py-3'>\n <div className='row mx-0 px-2'>\n {integrations.map((integration, index) => (\n <div className={classNames('col-6 mb-2', props.itemClassName)} key={index}>\n <a\n href={integration.link}\n className='d-flex align-items-center border rounded-1 p-2 text-decoration-none hover-bg-light-blue fw-medium'\n target='_blank'\n rel='noopener noreferrer'\n >\n <span\n className={`d-block ${styles.integrationIcon}`}\n style={{ backgroundImage: `url(${integration.icon})` }}\n />\n <span className='text-center flex-grow-1'>{integration.name}</span>\n </a>\n </div>\n ))}\n\n {!props.hideSupportLink &&\n <div className='col-12 text-center'>\n <ExternalLink href={props.contactSupportLink} className='btn btn-link text-info p-0' newTab>\n <Text namespace={namespace} phrase='cantFindIntegration' />\n </ExternalLink>\n </div>\n }\n </div>\n </div>\n </Scrollbars>\n </div>\n );\n}","import { UrlHelper } from 'libs/common/backbone/utils/UrlHelper';\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\n\nimport { InstanceRegion } from 'libs/shared/enums/InstanceRegion';\nimport { BaseObject, ClassroomGroup, User } from 'libs/shared/interfaces';\n\nexport const AssignHelper = {\n getRecipients(entities: ClassroomGroup[] | User[]): string[] {\n if (!entities.length)\n return [];\n \n return entities.map(e => e.id);\n },\n \n getLearnersForGroups(groups: ClassroomGroup[]): User[] {\n const learners = groups.reduce<User[]>((prev, curr) => ([\n ...prev, ...(curr.users.data ?? [])\n ]), []);\n\n return ArrayHelper.uniq(learners, 'id');\n },\n\n getSelectedEntities<T extends BaseObject>(selectedEntities: T[], entity: T): T[] {\n const selected = selectedEntities.find(e => e.id?.toString() === entity.id?.toString());\n\n if (selected)\n return selectedEntities.filter(e => e.id?.toString() !== entity.id?.toString());\n\n return [ ...selectedEntities, entity ];\n },\n\n getContactSupportUrl(marketingUrl: string, instanceRegion: InstanceRegion): string {\n if (!marketingUrl || !instanceRegion)\n return;\n \n let path = '/contact-us/support'; // new websites\n\n if (instanceRegion === InstanceRegion.NZ) {\n path = '/contact-us/';\n }\n \n return UrlHelper.safeUrlConcat(marketingUrl, path);\n }\n};","import { AnalyticsOptions, AssignDescriptors, EntityType, ShareDescriptors, UserAction, WorkflowPhase } from 'libs/analytics/interfaces';\n\nimport { EventLogConfig, getEventLogger } from 'libs/shared/utils/get-event-logger/getEventLogger';\n\nimport { AssignLogData, BaseAssignData } from './interfaces/GetAssignEventLogger';\n\nexport type AssignLogFn = ReturnType<typeof getAssignEventLogger>['log'];\n\n// #region Validation Methods\nfunction isValidShare(data: AssignLogData): boolean {\n if (!('share' in data))\n return false;\n\n return !!data.share;\n}\n// #endregion\n\n// #region Config \nconst LogDataConfig: EventLogConfig<AssignLogData> = {\n /**\n * Share - Assign\n */\n 'create-existing-classroom': {\n isValid: isValidShare,\n analyticsOptions: {\n actionType: UserAction.Create,\n entity: EntityType.Assign,\n workflowPhase: WorkflowPhase.Complete,\n descriptor: AssignDescriptors.ExistingClassroom\n }\n },\n 'create-open-classroom': {\n isValid: isValidShare,\n analyticsOptions: {\n actionType: UserAction.Create,\n entity: EntityType.Assign,\n workflowPhase: WorkflowPhase.Complete,\n descriptor: AssignDescriptors.OpenClassroom\n }\n },\n 'view-assignment': {\n isValid: isValidShare,\n analyticsOptions: {\n actionType: UserAction.Click,\n entity: EntityType.Assign,\n workflowPhase: WorkflowPhase.Complete,\n descriptor: AssignDescriptors.ViewAssignment\n }\n },\n 'select-existing-classroom-flow': {\n isValid: () => true,\n analyticsOptions: {\n actionType: UserAction.Click,\n workflowPhase: WorkflowPhase.Start,\n descriptor: AssignDescriptors.ExistingClassroom,\n entity: EntityType.Assign\n }\n },\n 'select-open-classroom-flow': {\n isValid: () => true,\n analyticsOptions: {\n actionType: UserAction.Click,\n workflowPhase: WorkflowPhase.Start,\n descriptor: AssignDescriptors.OpenClassroom,\n entity: EntityType.Assign\n }\n },\n 'view-previous-assignment': {\n isValid: isValidShare,\n analyticsOptions: {\n actionType: UserAction.Click,\n workflowPhase: WorkflowPhase.Discard,\n entity: EntityType.Assign,\n descriptor: AssignDescriptors.ViewPreviousAssignment\n }\n },\n 'close-assign-popup': {\n isValid: () => true,\n analyticsOptions: {\n actionType: UserAction.Click,\n workflowPhase: WorkflowPhase.Discard, // Usually discarded unless called form 'assign-details' step\n entity: EntityType.Assign,\n descriptor: AssignDescriptors.ClosePopup\n }\n },\n 'create-new-classroom': {\n isValid: data => !!data.classroom,\n analyticsOptions: {\n actionType: UserAction.Create,\n workflowPhase: WorkflowPhase.Next,\n descriptor: AssignDescriptors.CreateClassroom,\n entity: EntityType.Assign\n }\n },\n 'select-narrow-selection': {\n isValid: data => !!data.classroom,\n analyticsOptions: {\n actionType: UserAction.Click,\n entity: EntityType.Assign,\n workflowPhase: WorkflowPhase.Next,\n descriptor: AssignDescriptors.NarrowSelection\n }\n },\n\n /**\n * General\n */\n 'copy-embed-html': {\n isValid: () => true,\n analyticsOptions: {\n actionType: UserAction.Share,\n workflowPhase: WorkflowPhase.Complete,\n entity: EntityType.Assign, // default\n descriptor: ShareDescriptors.CopyEmbedHtml\n }\n },\n 'copy-share-link': {\n isValid: isValidShare,\n analyticsOptions: {\n actionType: UserAction.Share,\n workflowPhase: WorkflowPhase.Complete,\n entity: EntityType.Assign, // default\n descriptor: ShareDescriptors.CopyLink\n }\n },\n 'print-qr-code': {\n isValid: () => true,\n analyticsOptions: {\n actionType: UserAction.Print,\n entity: EntityType.Assign, // default\n workflowPhase: WorkflowPhase.Complete,\n descriptor: AssignDescriptors.PrintQrCode\n }\n },\n 'download-qr-code': {\n isValid: () => true,\n analyticsOptions: {\n actionType: UserAction.Download,\n entity: EntityType.Assign, // default\n workflowPhase: WorkflowPhase.Complete,\n descriptor: AssignDescriptors.DownloadQrCode\n }\n },\n 'request-full-screen': {\n isValid: () => true,\n analyticsOptions: {\n actionType: UserAction.Click,\n entity: EntityType.Assign, // default\n workflowPhase: WorkflowPhase.Complete,\n descriptor: AssignDescriptors.FullScreen\n }\n }\n};\n\n// #endregion\n\n// #region Implementation\ninterface AssignEventLoggerOptions {\n data: BaseAssignData;\n analyticsOptions: AnalyticsOptions;\n shouldLog?: boolean;\n}\n\nexport function getAssignEventLogger(options: AssignEventLoggerOptions) {\n const { getData, log } = getEventLogger({\n analyticsOptions: options.analyticsOptions,\n baseData: options.data,\n config: LogDataConfig,\n shouldLog: options.shouldLog ?? true\n });\n\n return {\n log,\n getData\n };\n}\n// #endregion","import React from 'react';\n\nimport { classNames } from 'libs/common/react/utils/ClassNameHelper';\n\nimport { ShareIntegrationsStack } from 'libs/shared/apps/share/views/share/components/share-integrations/ShareIntegrationsStack';\nimport { SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\n\nconst namespace = 'assign.assignDetailsTabs';\n\ninterface TabItemProps {\n tab: AssignDetailsTab;\n active: AssignDetailsTab;\n onClick: (tab: AssignDetailsTab) => void;\n}\n\nfunction TabItem(props: React.PropsWithChildren<TabItemProps>): JSX.Element {\n const active = props.tab === props.active;\n\n return (\n <button\n className={classNames(\n 'rounded-pill d-flex align-items-center gap-1 ps-1',\n active ? 'bg-dark text-white' : 'bg-light'\n )}\n onClick={() => props.onClick(props.tab)}\n >\n {props.children}\n </button>\n );\n}\n\nexport type AssignDetailsTab = 'overview' | 'share-link' | 'qr-code' | 'embed' | 'integrations';\n\ninterface AssingDetailsTabsProps {\n active: AssignDetailsTab;\n onClick: (screen: AssignDetailsTab) => void;\n}\n\nexport function AssingDetailsTabs(props: AssingDetailsTabsProps): JSX.Element {\n return (\n <div className='d-flex justify-content-center mb-3 gap-3 flex-wrap'>\n <TabItem tab='share-link' {...props}>\n <SvgContainer svgName={cvSvgLibrary.Link} />\n <Text namespace={namespace} phrase='shareLink' />\n </TabItem>\n <TabItem tab='qr-code' {...props}>\n <SvgContainer svgName={cvSvgLibrary.QrCode} />\n <Text namespace={namespace} phrase='qrCode' />\n </TabItem>\n <TabItem tab='embed' {...props}>\n <SvgContainer svgName={cvSvgLibrary.Code} />\n <Text namespace={namespace} phrase='embed' />\n </TabItem>\n <TabItem tab='integrations' {...props}>\n <ShareIntegrationsStack size='sm' noTooltip />\n <Text namespace={namespace} phrase='integrations' />\n </TabItem>\n </div>\n );\n}\n","import React from 'react';\n\nimport { EmbedDetails } from 'libs/shared/apps/share/components/copy-embed-html/CopyEmbedHtml';\nimport { CopyEmbedHtml } from 'libs/shared/apps/share-v2/components/copy-embed-html/CopyEmbedHtml';\nimport { SharableEntityType } from 'libs/shared/apps/share-v2/utils/ShareViewHelper';\nimport { LanguageNamespaceContext, Text } from 'libs/shared/components/text/Text';\nimport { BaseObject } from 'libs/shared/interfaces';\n\nimport { Instructions } from 'shared/components/instructions/Instructions';\n\nimport { AssignDetailsTab, AssingDetailsTabs } from 'apps/assign/components/assign-details/components/assign-details-tabs/AssignDetailsTabs';\nimport { AssignLogFn } from 'apps/assign/utils/get-assign-event-logger/getAssignEventLogger';\n\nimport { AssignDetailsFlow } from '../../AssignDetails';\n\nconst namespace = 'assign.assignEmbed';\n\nexport interface AssignEmbedProps {\n entity: BaseObject;\n entityId: string;\n entityType: SharableEntityType;\n embedUrl: string;\n liteUrl: string;\n shareId: string;\n joinCode?: string;\n onClickTab: (tab: AssignDetailsTab) => void;\n flow?: AssignDetailsFlow;\n log?: AssignLogFn;\n}\n\nfunction JoinCodeInstructions() {\n return (\n <Instructions>\n <Instructions.Step number={1}>\n <Text phrase='step1' />\n </Instructions.Step>\n <Instructions.Step number={2}>\n <Text phrase='endStep' />\n </Instructions.Step>\n </Instructions>\n );\n}\n\nfunction SignInInstruction() {\n return (\n <Instructions>\n <Instructions.Step number={1}>\n <Text phrase='step1' />\n </Instructions.Step>\n <Instructions.Step number={2}>\n <Text phrase='step2SignIn' />\n </Instructions.Step>\n <Instructions.Step number={3}>\n <Text phrase='endStep' />\n </Instructions.Step>\n </Instructions>\n );\n}\n\nexport function AssignEmbed(props: AssignEmbedProps): JSX.Element {\n function onCopyLogEvent(embedDetails: EmbedDetails) {\n props.log && props.log({\n type: 'copy-embed-html',\n embedDetails,\n flow: props.flow\n });\n }\n \n return (\n <LanguageNamespaceContext.Provider value={namespace}>\n <div className='w-100'>\n <AssingDetailsTabs active='embed' onClick={props.onClickTab} />\n <div className='container-fluid bg-light py-3 bg-light rounded-3 p-3'>\n <div className='row gy-4'>\n <div className='col-lg-5 col-12 d-flex flex-column justify-content-center'>\n {props.joinCode ?\n <JoinCodeInstructions /> :\n <SignInInstruction />\n }\n </div>\n <div className='col-lg-7 col-12 d-flex flex-column-reverse gap-3'>\n <CopyEmbedHtml\n analyticsOptions={{}}\n embedUrl={props.embedUrl}\n entity={props.entity}\n entityId={props.entityId}\n entityType={props.entityType}\n liteUrl={props.liteUrl}\n shareId={props.shareId}\n hideLabel\n hasInputBg\n onCopy={onCopyLogEvent}\n />\n </div>\n </div>\n </div>\n </div>\n </LanguageNamespaceContext.Provider>\n );\n}","import React from 'react';\n\nimport { LanguageNamespaceContext, Text } from 'libs/shared/components/text/Text';\nimport { InstanceRegion } from 'libs/shared/enums/InstanceRegion';\nimport { BaseObject } from 'libs/shared/interfaces';\n\nimport { Instructions } from 'shared/components/instructions/Instructions';\n\nimport { AssignDetailsTab, AssingDetailsTabs } from 'apps/assign/components/assign-details/components/assign-details-tabs/AssignDetailsTabs';\n\nimport { IntegrationList } from '../integration-list/IntegrationList';\n\nconst namespace = 'assign.assignIntegrations';\n\nexport interface AssignIntegrationsProps {\n entity: BaseObject;\n joinCode?: string;\n instanceRegion: InstanceRegion;\n contactSupportLink: string;\n onClickTab: (tab: AssignDetailsTab) => void;\n}\n\nfunction JoinCodeInstructions() {\n return (\n <Instructions>\n <Instructions.Step number={1}>\n <Text phrase='step1JoinCode' />\n </Instructions.Step>\n <Instructions.Step number={2}>\n <Text phrase='step2JoinCode' />\n </Instructions.Step>\n <Instructions.Step number={3}>\n <Text phrase='step4' />\n </Instructions.Step>\n </Instructions>\n );\n}\n\nfunction SignInInstructions() {\n return (\n <Instructions>\n <Instructions.Step number={1}>\n <Text phrase='step1SignIn' />\n </Instructions.Step>\n <Instructions.Step number={2}>\n <Text phrase='step2SignIn' />\n </Instructions.Step>\n <Instructions.Step number={3}>\n <Text phrase='step3SignIn' />\n </Instructions.Step>\n <Instructions.Step number={4}>\n <Text phrase='step4' />\n </Instructions.Step>\n </Instructions>\n );\n}\n\nexport function AssignIntegrations(props: AssignIntegrationsProps): JSX.Element {\n return (\n <LanguageNamespaceContext.Provider value={namespace}>\n <div>\n <AssingDetailsTabs active='integrations' onClick={props.onClickTab} />\n <div className='container-fluid py-3 bg-light rounded-3 p-3'>\n <div className='row gy-4'>\n <div className='col-12 col-lg-5 d-flex flex-column justify-content-center'>\n {!props.joinCode ?\n <JoinCodeInstructions /> :\n <SignInInstructions />\n }\n </div>\n <div className='col-12 col-lg-7'>\n <IntegrationList instanceRegion={props.instanceRegion} contactSupportLink={props.contactSupportLink} />\n </div>\n </div>\n </div>\n </div>\n </LanguageNamespaceContext.Provider>\n );\n}","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { classNames } from 'libs/common/react/utils/ClassNameHelper';\n\nimport { LocationContext } from 'libs/analytics/interfaces';\n\nimport { SharedObjectImage } from 'libs/shared/apps/share/components/shared-object-image/SharedObjectImage';\nimport { ShareIntegrationsStack } from 'libs/shared/apps/share/views/share/components/share-integrations/ShareIntegrationsStack';\nimport { SharableEntity } from 'libs/shared/apps/share-v2/utils/ShareViewHelper';\nimport { Divider } from 'libs/shared/components/divider/Divider';\nimport { SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\nimport { LanguageNamespaceContext, Text } from 'libs/shared/components/text/Text';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport { ImageUrls } from 'shared/constants/ImageUrls';\n\nimport { AssignDetailsTab } from '../assign-details-tabs/AssignDetailsTabs';\n\nimport styles from './assign-overview.scss';\n\nconst namespace = 'assign.assignOverview';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface ShareLinkOptionProps {\n screen: AssignDetailsTab;\n onClick: (screen: AssignDetailsTab) => void;\n}\n\nfunction ShareLinkOption(props: React.PropsWithChildren<ShareLinkOptionProps>): JSX.Element {\n return (\n <button\n className={classNames(\n 'rounded ratio ratio-1x1 border border-light hover-bg-light-blue',\n styles.shareButton\n )}\n onClick={() => props.onClick(props.screen)}\n >\n <div className='d-flex flex-column align-items-center justify-content-center gap-1 p-2 '>\n {props.children}\n </div>\n </button>\n );\n}\n\ninterface AssignOverviewImageProps {\n entity: SharableEntity;\n}\n\nfunction AssignOverviewImage(props: AssignOverviewImageProps): JSX.Element {\n return (\n <div className={classNames('d-flex align-items-center justify-content-center', styles.overviewImage)}>\n <figure\n style={{ backgroundImage: `url(${ImageUrls.Assign.ASSIGN_DETAILS.OVERVIEW_TEXT})` }}\n className={classNames('m-0', styles.text)}\n />\n <figure\n style={{ backgroundImage: `url(${ImageUrls.Assign.ASSIGN_DETAILS.OVERVIEW_BG})` }}\n className={classNames('position-relative m-0', styles.background)}\n >\n <div className={classNames('position-absolute', styles.entity)}>\n <SharedObjectImage\n object={props.entity}\n locationContext={LocationContext.AssignFlowView}\n thumbnailSize='md'\n />\n </div>\n </figure>\n </div>\n );\n}\n\nexport interface AssignOverviewProps {\n entity: SharableEntity;\n onClickTab: (screen: AssignDetailsTab) => void;\n}\n\nexport function AssignOverview(props: AssignOverviewProps): JSX.Element {\n return (\n <LanguageNamespaceContext.Provider value={namespace}>\n <div className={classNames('mx-auto', styles.wrapper)}>\n <div className='d-flex flex-column align-items-center text-center mb-4 gap-3'>\n\n <AssignOverviewImage entity={props.entity} />\n\n <h3 className='m-0 d-flex flex-column flex-md-row align-items-center gap-2'>\n <SvgContainer svgName={cvSvgLibrary.Check} className={classNames('d-inline-block svg-container md bg-green rounded-circle text-white')}/>\n <Text phrase='title' />\n </h3>\n <p className='m-0'>\n <Text phrase='description' />\n </p>\n </div>\n \n <Divider text={getPhrase('dividerText')} className='mb-4' noUpperCase />\n\n <div className='d-flex justify-content-center gap-3 flex-wrap'>\n <ShareLinkOption screen='share-link' onClick={props.onClickTab}>\n <SvgContainer svgName={cvSvgLibrary.Link} />\n <Text phrase='shareLink' />\n </ShareLinkOption>\n <ShareLinkOption screen='qr-code' onClick={props.onClickTab}>\n <SvgContainer svgName={cvSvgLibrary.QrCode} />\n <Text phrase='qrCode' />\n </ShareLinkOption>\n <ShareLinkOption screen='embed' onClick={props.onClickTab}>\n <SvgContainer svgName={cvSvgLibrary.Code} />\n <Text phrase='embed' />\n </ShareLinkOption>\n <ShareLinkOption screen='integrations' onClick={props.onClickTab}>\n <span className={classNames('d-inline-flex align-items-center', styles.integrations)}>\n <ShareIntegrationsStack size='sm' noTooltip />\n </span>\n <Text phrase='integrations' />\n </ShareLinkOption>\n </div>\n </div>\n </LanguageNamespaceContext.Provider>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"wrapper\":\"QB4Pm\",\"shareButton\":\"r9K_x\",\"integrations\":\"tTimT\",\"overviewImage\":\"McyhP\",\"text\":\"u6Z4r\",\"background\":\"RtZpT\",\"entity\":\"m6eZK\"};","import React from 'react';\nimport { Button, ButtonProps } from 'react-bootstrap';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { classNames } from 'libs/common/react/utils/ClassNameHelper';\n\nimport { SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport { Text } from '../text/Text';\n\nconst namespace = 'shared.fullScreen';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\ninterface FullScreenButtonProps {\n variant?: ButtonProps['variant'];\n text?: string;\n hideIcon?: boolean;\n onClick: () => void;\n}\n\nfunction FsButton(props: FullScreenButtonProps) {\n if (!document.fullscreenEnabled)\n return <></>;\n\n const buttonText = props.text || getPhrase('buttonText');\n \n return (\n <div className='w-100 text-center'>\n <Button variant={props.variant || 'link'} className='d-inline-flex justify-content-center text-info p-0' onClick={props.onClick}>\n <span>{buttonText}</span>\n {!props.hideIcon &&\n <SvgContainer svgName={cvSvgLibrary.NewWindow} />\n }\n </Button>\n </div>\n );\n}\n\ninterface FullScreenProps {\n isFullScreen: boolean;\n controlsRef: React.MutableRefObject<HTMLDivElement>;\n}\n\nexport function FullScreen(props: React.PropsWithChildren<FullScreenProps>) {\n if (!document.fullscreenEnabled)\n return <></>;\n \n function exitFullScreen() {\n document.exitFullscreen();\n }\n \n return (\n <div className={classNames('vw-100 vh-100 bg-white', !props.isFullScreen && 'd-none')} ref={props.controlsRef}>\n <div className='position-absolute top-0 end-0 pe-4 pt-4 z-1'>\n <Button variant='outline-dark' className='d-inline-flex align-items-center gap-1' onClick={exitFullScreen}>\n <Text namespace={namespace} phrase='exitFullScreen' />\n <SvgContainer svgName={cvSvgLibrary.Close} />\n </Button>\n </div>\n {props.children}\n </div>\n );\n}\n\nFullScreen.Button = FsButton;","import React from 'react';\n\nfunction handleFullScreenChange<T extends HTMLElement>(target: T, setIsFullScreen: (fullscreen: boolean) => void) {\n if (document.fullscreenElement === target) {\n setIsFullScreen(true);\n return;\n }\n\n setIsFullScreen(false);\n}\n\nexport function useFullScreenActions<T extends HTMLElement = HTMLDivElement>() {\n const ref = React.useRef<T>(null);\n \n const [ isFullScreen, setIsFullScreen ] = React.useState(false);\n\n const isSupported = document.fullscreenEnabled;\n\n React.useEffect(() => {\n if (!ref.current)\n return;\n\n const onFullScreenChange = () => {\n handleFullScreenChange(ref.current, setIsFullScreen);\n };\n\n ref.current?.addEventListener('fullscreenchange', onFullScreenChange);\n\n return () => ref.current?.removeEventListener('fullscreenchange', onFullScreenChange);\n }, [ref.current]);\n \n function requestFullScreen() {\n if (!ref.current || !isSupported)\n return;\n\n ref.current.requestFullscreen && ref.current.requestFullscreen();\n }\n\n function exitFullScreen() {\n document.exitFullscreen().finally(() => {\n setIsFullScreen(false);\n });\n }\n \n return {\n ref,\n isFullScreen,\n isSupported,\n requestFullScreen,\n exitFullScreen\n };\n}","import React from 'react';\nimport { QRCode } from 'react-qrcode-logo';\n\nimport { classNames } from 'libs/common/react/utils/ClassNameHelper';\n\nimport { Base64ClickViewLogo } from './images/Base64ClickViewLogo';\n\nimport styles from './qr-code.scss';\n\nexport type QrCodeSizePreset = 'sm' | 'md' | 'lg';\ntype QrCodeSizeCustom = 'custom';\ntype QrCodeSize = QrCodeSizePreset | QrCodeSizeCustom;\n\ninterface BaseQrCodeProps {\n id?: string;\n size: QrCodeSize;\n value: string;\n containerClassName?: string;\n qrRef?: React.MutableRefObject<QRCode>;\n}\n\ninterface DefaultQrCodeProps extends BaseQrCodeProps {\n size: QrCodeSizePreset;\n}\n\ninterface CustomQrCodeProps extends BaseQrCodeProps {\n size: QrCodeSizeCustom;\n customSize: number;\n}\n\ntype QrCodeProps = DefaultQrCodeProps | CustomQrCodeProps;\n\nconst sizeClassMap: {[key in QrCodeSizePreset]: string} = {\n sm: styles.containerSm,\n md: styles.containerMd,\n lg: styles.containerLg\n};\n\nconst qrSizeMap: {[key in QrCodeSize]: number} = {\n sm: 100, // px\n md: 200,\n lg: 400,\n custom: 0\n};\n\nconst OUTER_RADIUS = 10;\nconst INNER_RADIUS = 1;\n\nexport function QrCode(props: QrCodeProps): JSX.Element {\n const qrSize = props.size === 'custom' ? props.customSize : qrSizeMap[props.size];\n const qrSizeClass = props.size === 'custom' ? props.containerClassName : sizeClassMap[props.size];\n\n return (\n <div className={classNames(\n 'position-relative d-flex justify-content-center align-items-center flex-column',\n 'border border-dark rounded-3 bg-white',\n qrSizeClass\n )}>\n <QRCode\n id={props.id || 'cv-qr-code'}\n value={props.value}\n bgColor='white'\n size={qrSize}\n logoImage={Base64ClickViewLogo}\n logoPaddingStyle='circle'\n logoPadding={1}\n eyeRadius={[\n { outer: [ OUTER_RADIUS, 0, 0, 0 ], inner: [ INNER_RADIUS, 0, 0, 0 ]}, // top left\n { outer: [ 0, OUTER_RADIUS, 0, 0 ], inner: [ 0, INNER_RADIUS, 0, 0 ]}, // top right\n { outer: [ 0, 0, 0, OUTER_RADIUS ], inner: [ 0, 0, 0, INNER_RADIUS ]} // bottom left\n ]}\n removeQrCodeBehindLogo\n ref={props.qrRef}\n />\n </div>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"containerSm\":\"oAKIc\",\"containerMd\":\"Ml3L5\",\"containerLg\":\"cWnjp\"};","export const Base64ClickViewLogo = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAOEAAADhCAMAAAAJbSJIAAAAYFBMVEX////4mB34lhX5qEz4kQD4kwD4lAD+79/4lxf4jwD//vv938L5rFb96NP+9On4lQv6tWf+9/D5pUX8z6D6u3n4nzP82LP5pD/7xo/4nSr6s2X6vX77xpH5rVn5pED/+vVbzc80AAACrElEQVR4nO3di3LTMBSE4R7HDjEF3IaWlmvf/y0RlA4RjWNZHqHZo/97Au1k4m6OZPXqCgAAAAAAAAAAAAAAAAAAAAAAAP/BzW3tFZR2tDe1l1DYbhqua6+hrF1n48faiygqJLTxrvYqSvqV0IZ3b2uvo5zfCW26/1B7IcU8J7Ru/772Skr5k9AO/afaSynkJWF43jzWXksZfxNaf1N7MUWcJLT9w1Pt5RRwmtAmjxUuSmgHhxUuTmgOK9y/Cf1VuFcJ3VW41wm9VbgzCa2bPFW4cwntMDqqcGcTuqpwMwkdVbi5hLY/OpnCzSZ0U+HmE4bnjYsKdyFh+DJ6qHAXE1r/tfb6truc0Hr9CreQ0KbP6o/UpYTWDeIVbjGh/BRuOWH4MkpXuJSE1n+pvcwNkhJKT+HSElp3kK1wiQnD80a1wqUm1J3CpSdUncKtSCg6hVuTMFQ4wSncqoSSG6nrEipO4VYmFJzCrU4oN4Vbn1CtwmUkFKtwOQm1NlKzEoaWqlPh8hKG541MhctNaMNOpMJlJ5SpcPkJVTZSNyQUmcJtSahR4bYlVJjCbUwosJG6NaH1D7UjLOAzXPoEvX8PvT9L3f89dN9pVA74ZSeU2eHP/n0oc0qD3/jnA+6dz2ncz9rcz0vdz7zHb7WXvNLavSeJohZh/zCiMkCMsI9/YpQpahHO07yQ2lCLJCacpIpaJPFs4lGqqEXSzpeKFbUIZ4Qli1qEs/ru37fovysWtUjj7z0JTdTmtfz+oft3SAfhohZp9l1uuYnavDbvVBDZ+kzU4t0mDopapL07hlQnavMau+vLS1GLRHfu/XBS1CIt3ZuocEYtRzP3lypufSZq5B5hza3PRE3c5+2vqEX836vv/38j+P//FgAAAAAAAAAAAAAAAAAAAAAAALJ+AoAWHaLlWtXqAAAAAElFTkSuQmCC';\n","import React from 'react';\nimport { createRoot } from 'react-dom/client';\nimport { QRCode } from 'react-qrcode-logo';\nimport printJS from 'print-js';\n\nimport { DevError } from 'libs/common/backbone/errors/DevError';\nimport { Core } from 'libs/common/backbone/index';\n\nimport { QrCode, QrCodeSizePreset } from '../QrCode';\n\ninterface PrintOptions {\n id: string;\n name?: string;\n size?: QrCodeSizePreset;\n onDone?: () => void;\n}\n\ninterface DownloadOptions {\n type?: 'png' | 'jpg' | 'webp',\n name?: string;\n size?: QrCodeSizePreset;\n}\n\ninterface QrCodeDownloadProps {\n options: Required<DownloadOptions>;\n value: string;\n onDone?: () => void;\n}\n\nfunction QrCodeDownload(props: QrCodeDownloadProps): JSX.Element {\n const downloadRef = React.useRef<QRCode>();\n React.useEffect(() => {\n const timeout = setTimeout(() => {\n downloadRef.current?.download(props.options.type, props.options.name);\n typeof props.onDone === 'function' && props.onDone();\n }, 200); // Some delay is require for images to load\n\n return () => {\n clearTimeout(timeout);\n };\n }, []);\n \n return (\n <div className='d-none'>\n <QrCode size={props.options.size} value={props.value} qrRef={downloadRef} />\n </div>\n );\n}\n\nexport function useQrCodeActions() {\n const ref = React.useRef<QRCode>();\n const [ isPrinting, setIsPrinting ] = React.useState(false);\n const [ isDownloading, setIsDownloading ] = React.useState(false);\n\n /**\n * We render a different QR Code according to what we need\n */\n function download({ name, size = 'lg', type = 'png' }: DownloadOptions): void {\n if (!ref.current)\n return;\n \n const printRegion = document.getElementById('print-region');\n\n if (!printRegion)\n Core.ErrorHelper.throw(new DevError('Could not find print region in layout'));\n\n const root = createRoot(printRegion);\n\n setIsDownloading(true);\n \n root.render(\n <QrCodeDownload\n options={{ name, size, type }}\n value={ref.current.props.value}\n onDone={() => {\n root.unmount();\n setIsDownloading(false);\n }}\n />\n );\n }\n\n function print({ id, name, size = 'lg', onDone }: PrintOptions) {\n if (!ref.current)\n return;\n \n const printRegion = document.getElementById('print-region');\n\n if (!printRegion)\n Core.ErrorHelper.throw(new DevError('Could not find print region in layout'));\n\n const root = createRoot(printRegion);\n\n root.render(\n <div className='d-none vw-100 vh-100'>\n <div id={id} className='w-100 h-100 d-flex align-items-center justify-content-center'>\n <QrCode size={size} value={ref.current.props.value} />\n </div>\n </div>\n );\n\n setIsPrinting(true);\n\n window.setTimeout(() => {\n printJS({\n printable: id,\n type: 'html',\n documentTitle: name || 'ClickView - QRCode',\n targetStyles: ['*'],\n imageStyle: '*',\n style: '@page { size: A4; margin: 1.5cm 0; }',\n onLoadingEnd: () => {\n typeof onDone === 'function' && onDone();\n setIsPrinting(false);\n root.unmount();\n },\n onError: () => {\n setIsPrinting(false);\n root.unmount();\n }\n });\n }, 200); // Some delay is require for images to load\n }\n\n return { ref, isPrinting, isDownloading, download, print };\n}","import React from 'react';\nimport { Col, Row } from 'react-bootstrap';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { classNames } from 'libs/common/react/utils/ClassNameHelper';\n\nimport { LocationContext } from 'libs/analytics/interfaces';\n\nimport { SharedObjectImage } from 'libs/shared/apps/share/components/shared-object-image/SharedObjectImage';\nimport { SharableEntity } from 'libs/shared/apps/share-v2/utils/ShareViewHelper';\nimport { QrCode } from 'libs/shared/components/qr-code/QrCode';\nimport { QrCodeSizePreset } from 'libs/shared/components/qr-code/QrCode';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { useBreakpoints } from 'libs/shared/hooks/useBreakpoints';\n\nimport { Instructions } from 'shared/components/instructions/Instructions';\n\nimport styles from './assign-full-screen.scss';\n\nconst namespace = 'assign.fullScreen';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface AssignQrDetailsProps {\n value: string;\n}\n\nfunction AssignQrDetails(props: AssignQrDetailsProps): JSX.Element {\n const breakpoints = useBreakpoints();\n\n const size: QrCodeSizePreset = (breakpoints.sm || breakpoints.xs) ? 'md' : 'lg';\n\n return (\n <Row>\n <Col xs={12} md={10} lg={8} xl={6} className='bg-light p-4 rounded mx-auto d-flex flex-column align-items-center'>\n <div className='mb-3 text-center'>\n <span className='fs-3 fw-bold'>\n <Text namespace={namespace} phrase='scanQr' />\n </span>\n </div>\n <QrCode size={size} value={props.value} />\n </Col>\n </Row>\n );\n}\n\ninterface AssignJoinCodeDetailsProps {\n link: string;\n joinCode: string;\n}\n\nfunction AssignJoinCodeDetails(props: AssignJoinCodeDetailsProps): JSX.Element {\n return (\n <Row>\n <Col xs={12} md={8} lg={5} className={'bg-light p-4 d-block rounded mx-auto'}>\n <Instructions>\n <Instructions.Step number={1}>\n <Text namespace={namespace} phrase='studentsGoToLink' />\n </Instructions.Step>\n <Instructions.Textbox value={props.link}/>\n <Instructions.Step number={2}>\n <Text namespace={namespace} phrase='enterJoinCode' />\n </Instructions.Step>\n <Instructions.Textbox value={props.joinCode} />\n <Instructions.Step number={3}>\n <Text namespace={namespace} phrase='studentsWatchVideo' />\n </Instructions.Step>\n </Instructions>\n </Col>\n </Row>\n );\n}\n\ninterface AssignLinkDetailsProps {\n link: string;\n}\n\nfunction AssignLinkDetails(props: AssignLinkDetailsProps): JSX.Element {\n return (\n <div className='d-flex align-items-center'>\n <div className={classNames('bg-light p-4 d-block rounded mx-auto w-auto', styles.assignLinkDetails)}>\n <Instructions bottomSpacing='none'>\n <Instructions.Textbox label={getPhrase('goToLink')} value={props.link} />\n </Instructions>\n </div>\n </div>\n );\n}\n\ninterface AssignFullScreen {\n entity: SharableEntity;\n locationContext: LocationContext;\n}\n\nexport function AssignFullScreen(props: React.PropsWithChildren<AssignFullScreen>): JSX.Element {\n return (\n <div className='container p-4'>\n <Row>\n <Col>\n <h3 className='text-center'>\n <Text namespace={namespace} phrase='watchVideo' />\n </h3>\n </Col>\n </Row>\n <Row className='mb-4'>\n <Col xs={12} sm={8} md={6} lg={3} className='mx-auto'>\n <SharedObjectImage\n object={props.entity}\n thumbnailSize='md'\n locationContext={props.locationContext}\n showVideoMetadata\n hideBottomBar\n />\n </Col>\n </Row>\n {props.children}\n </div>\n );\n}\n\nAssignFullScreen.QrDetails = AssignQrDetails;\nAssignFullScreen.JoinCode = AssignJoinCodeDetails;\nAssignFullScreen.LinkDetails = AssignLinkDetails;","// extracted by mini-css-extract-plugin\nexport default {\"assignLinkDetails\":\"P4XQf\"};","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { LocationContext } from 'libs/analytics/interfaces';\n\nimport { SharableEntity } from 'libs/shared/apps/share-v2/utils/ShareViewHelper';\nimport { FullScreen } from 'libs/shared/components/full-screen/FullScreen';\nimport { useFullScreenActions } from 'libs/shared/components/full-screen/hooks/useFullScreenActions';\nimport { useQrCodeActions } from 'libs/shared/components/qr-code/hooks/useQrCodeActions';\nimport { QrCode } from 'libs/shared/components/qr-code/QrCode';\nimport { SpinnerButton } from 'libs/shared/components/spinner-button/SpinnerButton';\nimport { LanguageNamespaceContext, Text } from 'libs/shared/components/text/Text';\n\nimport { Instructions } from 'shared/components/instructions/Instructions';\n\nimport { AssignDetailsTab, AssingDetailsTabs } from 'apps/assign/components/assign-details/components/assign-details-tabs/AssignDetailsTabs';\nimport { AssignLogFn } from 'apps/assign/utils/get-assign-event-logger/getAssignEventLogger';\n\nimport { AssignDetailsFlow } from '../../AssignDetails';\nimport { AssignFullScreen } from '../assign-full-screen/AssignFullScreen';\n\nimport styles from './assign-qr-code.scss';\n\nconst namespace = 'assign.assignQrCode';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nexport interface AssignQrCodeProps {\n shareLink: string;\n entity: SharableEntity;\n joinCode?: string;\n onClickTab: (tab: AssignDetailsTab) => void;\n flow?: AssignDetailsFlow;\n log?: AssignLogFn;\n}\n\nexport function AssignQrCode(props: AssignQrCodeProps): JSX.Element {\n const qrCode = useQrCodeActions();\n const fullScreen = useFullScreenActions();\n const fileName = getPhrase('fileName', { name: props.entity.name });\n \n function getSteps() {\n if (props.joinCode)\n return {\n 1: 'step1',\n 2: 'stepWatchVideo'\n };\n\n return {\n 1: 'step1',\n 2: 'step2SignIn',\n 3: 'stepWatchVideo'\n };\n }\n\n function getQrCodeValue() {\n if (props.joinCode) {\n return `${props.shareLink}?joinCode=${props.joinCode}`;\n }\n\n return props.shareLink;\n }\n\n function onClickDownload() {\n props.log && props.log({\n type: 'download-qr-code',\n entity: props.entity,\n flow: props.flow\n });\n \n qrCode.download({ name: fileName });\n }\n\n function onClickPrint() {\n props.log && props.log({\n type: 'print-qr-code',\n entity: props.entity,\n flow: props.flow\n });\n\n const name = fileName;\n qrCode.print({\n id: name,\n name: name\n });\n }\n\n function onClickFullScreen() {\n props.log && props.log({\n type: 'request-full-screen',\n entity: props.entity,\n flow: props.flow,\n tab: 'qr-code'\n });\n fullScreen.requestFullScreen();\n }\n\n const steps = getSteps();\n const qrValue = getQrCodeValue();\n \n return (\n <LanguageNamespaceContext.Provider value={namespace}>\n <div>\n <AssingDetailsTabs active='qr-code' onClick={props.onClickTab} />\n <div className={`d-block mx-auto ${styles.container}`}>\n <div className='container-fluid py-3 bg-light rounded-3 p-3'>\n <div className='row gy-4'>\n <div className='col-lg-7 col-12 d-flex flex-column justify-content-center'>\n <Instructions>\n {Object.entries(steps).map(([ step, phrase ]) => (\n <Instructions.Step number={step} key={step}>\n <Text phrase={phrase} />\n </Instructions.Step>\n ))}\n </Instructions>\n <div className='d-flex flex-column flex-md-row gap-2 mb-2'>\n <SpinnerButton\n variant='outline-dark'\n className='w-100'\n showSpinner={qrCode.isPrinting}\n spinnerText={getPhrase('printing')}\n onClick={onClickPrint}\n >\n <Text phrase='printButton' />\n </SpinnerButton>\n <SpinnerButton\n showSpinner={qrCode.isDownloading}\n variant='outline-dark'\n className='w-100'\n onClick={onClickDownload}\n spinnerText={getPhrase('downloading')}\n >\n <Text phrase='downloadButton' />\n </SpinnerButton>\n </div>\n <FullScreen.Button onClick={onClickFullScreen} hideIcon />\n </div>\n <div className='col-lg-5 col-12'>\n <QrCode\n size='md'\n value={qrValue}\n qrRef={qrCode.ref}\n />\n </div>\n </div>\n </div>\n </div>\n </div>\n <FullScreen isFullScreen={fullScreen.isFullScreen} controlsRef={fullScreen.ref}>\n <AssignFullScreen entity={props.entity} locationContext={LocationContext.AssignFlowView}>\n <AssignFullScreen.QrDetails value={qrValue} />\n </AssignFullScreen>\n </FullScreen>\n </LanguageNamespaceContext.Provider>\n );\n}","import React from 'react';\n\nimport { UrlHelper } from 'libs/common/backbone/utils/UrlHelper';\n\nimport { LocationContext } from 'libs/analytics/interfaces';\n\nimport { FullScreen } from 'libs/shared/components/full-screen/FullScreen';\nimport { useFullScreenActions } from 'libs/shared/components/full-screen/hooks/useFullScreenActions';\nimport { LanguageNamespaceContext, Text } from 'libs/shared/components/text/Text';\nimport { BaseObject } from 'libs/shared/interfaces';\n\nimport { Instructions } from 'shared/components/instructions/Instructions';\n\nimport { AssignDetailsTab, AssingDetailsTabs } from 'apps/assign/components/assign-details/components/assign-details-tabs/AssignDetailsTabs';\nimport { AssignLogFn } from 'apps/assign/utils/get-assign-event-logger/getAssignEventLogger';\n\nimport { AssignDetailsFlow } from '../../AssignDetails';\nimport { AssignFullScreen } from '../assign-full-screen/AssignFullScreen';\n\nimport styles from './assign-share-link.scss';\n\nconst namespace = 'assign.assignShareLink';\n\nexport interface AssignShareLinkProps {\n entity: BaseObject;\n liteUrl: string;\n shareLink: string;\n onClickTab: (tab: AssignDetailsTab) => void;\n joinCode?: string;\n flow?: AssignDetailsFlow;\n log?: AssignLogFn;\n}\n\ninterface JoinCodeInstructionsProps {\n link: string;\n}\n\nfunction JoinCodeInstructions(props: JoinCodeInstructionsProps) {\n return (\n <Instructions>\n <Instructions.Step number={1}>\n <Text phrase='step1' />\n </Instructions.Step>\n <Instructions.Textbox\n value={props.link}\n showCopyButton\n />\n <Instructions.Step number={2}>\n <Text phrase='endStep' />\n </Instructions.Step>\n </Instructions>\n );\n}\n\ninterface SignInInstructionsProps {\n link: string;\n}\n\nfunction SignInInstructions(props: SignInInstructionsProps): JSX.Element {\n return (\n <Instructions>\n <Instructions.Step number={1}>\n <Text phrase='step1' />\n </Instructions.Step>\n <Instructions.Textbox\n value={props.link}\n showCopyButton\n />\n <Instructions.Step number={2}>\n <Text phrase='step2SignIn' />\n </Instructions.Step>\n <Instructions.Step number={3}>\n <Text phrase='endStep' />\n </Instructions.Step>\n </Instructions>\n );\n}\n\nexport function AssignShareLink(props: AssignShareLinkProps): JSX.Element {\n const fullScreen = useFullScreenActions();\n \n const link = props.joinCode\n ? UrlHelper.safeUrlConcat(props.liteUrl, `play/${props.joinCode}`)\n : props.shareLink;\n\n function onClickFullScreen() {\n typeof props.log === 'function' &&\n props.log({\n type: 'request-full-screen',\n entity: props.entity,\n flow: props.flow,\n tab: 'share-link'\n });\n fullScreen.requestFullScreen();\n }\n \n return (\n <LanguageNamespaceContext.Provider value={namespace}>\n <div>\n <AssingDetailsTabs active='share-link' onClick={props.onClickTab} />\n <div className={`bg-light rounded-3 mx-auto py-3 px-sm-5 px-3 d-block ${styles.container}`}>\n {props.joinCode\n ? <JoinCodeInstructions link={link} />\n : <SignInInstructions link={link} />\n }\n <FullScreen.Button onClick={onClickFullScreen} hideIcon />\n </div>\n </div>\n <FullScreen isFullScreen={fullScreen.isFullScreen} controlsRef={fullScreen.ref}>\n <AssignFullScreen entity={props.entity} locationContext={LocationContext.AssignFlowView}>\n <AssignFullScreen.LinkDetails link={link} />\n </AssignFullScreen>\n </FullScreen>\n </LanguageNamespaceContext.Provider>\n );\n}","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { ShareType } from 'libs/shared/apps/share-v2/enums/ShareType';\nimport { Share } from 'libs/shared/apps/share-v2/interfaces/Share';\nimport { SharePincode } from 'libs/shared/apps/share-v2/interfaces/SharePincode';\nimport { SharableEntity, SharableEntityType } from 'libs/shared/apps/share-v2/utils/ShareViewHelper';\nimport { InstanceRegion } from 'libs/shared/enums/InstanceRegion';\n\nimport { AssignDetailsTab } from 'apps/assign/components/assign-details/components/assign-details-tabs/AssignDetailsTabs';\nimport { AssignEmbed, AssignEmbedProps } from 'apps/assign/components/assign-details/components/assign-embed/AssignEmbed';\nimport { AssignIntegrations, AssignIntegrationsProps } from 'apps/assign/components/assign-details/components/assign-integrations/AssignIntegrations';\nimport { AssignOverview, AssignOverviewProps } from 'apps/assign/components/assign-details/components/assign-overview/AssignOverview';\nimport { AssignQrCode, AssignQrCodeProps } from 'apps/assign/components/assign-details/components/assign-qr-code/AssignQrCode';\nimport { AssignShareLink, AssignShareLinkProps } from 'apps/assign/components/assign-details/components/assign-share-link/AssignShareLink';\nimport { AssignLogFn } from 'apps/assign/utils/get-assign-event-logger/getAssignEventLogger';\n\nconst namespace = 'assign.assignDetails';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nexport type AssignDetailsFlow = 'existing-classroom' | 'open-classroom';\ninterface AssignDetailsProps {\n entityId: string;\n entity: SharableEntity;\n entityType: SharableEntityType;\n share: Share;\n liteUrl: string;\n instanceRegion: InstanceRegion;\n contactSupportLink: string;\n sharePincode?: SharePincode;\n initialScreen?: AssignDetailsTab;\n title?: string;\n hideTitle?: boolean;\n log?: AssignLogFn;\n}\n\ntype AllAssignDetailsScreenProps =\n & AssignOverviewProps\n & AssignShareLinkProps\n & AssignQrCodeProps\n & AssignEmbedProps\n & AssignIntegrationsProps;\n\nconst AssignDetailsConfig: {[key in AssignDetailsTab]: {\n component: (props: AllAssignDetailsScreenProps) => JSX.Element;\n}} = {\n 'overview': { component: AssignOverview },\n 'share-link': { component: AssignShareLink },\n 'qr-code': { component: AssignQrCode },\n 'embed': { component: AssignEmbed },\n 'integrations': { component: AssignIntegrations }\n};\n\nconst ShareTypeFlowMap: {[key in ShareType]?: 'existing-classroom' | 'open-classroom'} = {\n [ShareType.Open]: 'open-classroom',\n [ShareType.Classroom]: 'existing-classroom'\n};\n\nexport function AssignDetails(props: AssignDetailsProps): JSX.Element {\n const [ screen, setScreen ] = React.useState<AssignDetailsTab>(props.initialScreen ?? 'share-link');\n\n const shouldHideTitle = props.hideTitle || screen === 'overview';\n\n const data: AllAssignDetailsScreenProps = {\n entity: props.entity,\n onClickTab: setScreen,\n entityId: props.entityId,\n entityType: props.entityType,\n liteUrl: props.liteUrl,\n instanceRegion: props.instanceRegion,\n joinCode: props.sharePincode?.code,\n shareId: props.share.shareId,\n embedUrl: props.share.link.shortenedEmbedUrl,\n shareLink: props.share.link.shortenedUrl,\n contactSupportLink: props.contactSupportLink,\n flow: ShareTypeFlowMap[props.share.type],\n log: props.log\n };\n \n const Component = AssignDetailsConfig[screen].component;\n\n const title = props.title || getPhrase('title');\n \n return (\n <div className='d-flex flex-column align-items-center justify-content-center py-3 gap-4'>\n {!shouldHideTitle &&\n <h3 className='mb-0'><span>{title}</span></h3>\n }\n \n <Component {...data} />\n </div>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"container\":\"HrK3n\"};","// extracted by mini-css-extract-plugin\nexport default {\"container\":\"OCQzr\"};","import React from 'react';\n\nimport { AppLinkHelper } from 'libs/common/backbone/core';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Flight } from 'libs/common/react/index';\n\nimport { EntityType, LocationContext, WorkflowPhase } from 'libs/analytics/interfaces';\n\nimport { SharePrivacy } from 'libs/shared/apps/share-v2/enums/SharePrivacy';\nimport { ShareRequests } from 'libs/shared/apps/share-v2/flight-requests/ShareRequests';\nimport { Share } from 'libs/shared/apps/share-v2/interfaces/Share';\nimport { SharePincode } from 'libs/shared/apps/share-v2/interfaces/SharePincode';\nimport { SharableEntityType } from 'libs/shared/apps/share-v2/utils/ShareViewHelper';\nimport { MultiStepPopupViewProps } from 'libs/shared/components/multistep-popup/MultiStepPopup';\nimport { Popup } from 'libs/shared/components/popup/Popup';\n\nimport { getInsightsOverviewAppLink } from 'shared/utils/ObjectAppLinkHelper';\n\nimport { AssignDetails } from 'apps/assign/components/assign-details/AssignDetails';\nimport { AssignDetailsTab } from 'apps/assign/components/assign-details/components/assign-details-tabs/AssignDetailsTabs';\nimport { FlowControls } from 'apps/assign/components/flow-controls/FlowControls';\nimport { useAssignSharedData } from 'apps/assign/hooks/useAssignSharedData';\nimport { AssignHelper } from 'apps/assign/utils/AssignHelper';\nimport { getAssignEventLogger } from 'apps/assign/utils/get-assign-event-logger/getAssignEventLogger';\n\nconst namespace = 'assign.assignDetailsView';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nexport interface AssignDetailsViewProps extends MultiStepPopupViewProps {\n objectId: string;\n entityType: SharableEntityType;\n shareId: string;\n initialDetailsScreen?: AssignDetailsTab;\n detailsTitle?: string;\n}\n\nexport function AssignDetailsView(\n props: AssignDetailsViewProps\n) {\n const { config, loaded, entity, currentUser } = useAssignSharedData({\n entityType: props.entityType,\n objectId: props.objectId\n });\n\n const { log } = getAssignEventLogger({\n data: {\n entity: {\n id: props.objectId,\n type: props.entityType\n }\n },\n analyticsOptions: {\n entity: EntityType.Assign,\n location: LocationContext.Popup\n }\n });\n\n const share = Flight.useBasicFetch<Share>(ShareRequests.getShare(props.shareId));\n \n const isPincodePrivacy = share.data?.privacy === SharePrivacy.PinCode;\n const pincode = Flight.useBasicFetch<SharePincode>(\n isPincodePrivacy && ShareRequests.getPincodeByShareId(props.shareId)\n );\n\n function onClickBack() {\n log({\n type: 'close-assign-popup',\n share: share.data\n }, {\n workflowPhase: WorkflowPhase.Complete\n });\n \n props.closePopup();\n }\n \n function onClickNext() {\n const appLink = getInsightsOverviewAppLink(share.data);\n\n if (!appLink)\n return;\n\n log({\n type: 'view-assignment',\n share: share.data\n });\n\n AppLinkHelper.trigger(appLink);\n props.closePopup();\n }\n\n const initialScreen: AssignDetailsTab = props.initialDetailsScreen || 'overview';\n\n const contactSupportLink = AssignHelper.getContactSupportUrl(\n config.data?.marketingSiteUrl,\n currentUser.data?.instanceRegion\n );\n \n const showLoadingSpinner = (\n !loaded ||\n props.loading ||\n !share.data ||\n (isPincodePrivacy && !pincode.data)\n );\n\n return (\n <Popup\n size='lg'\n showLoadingSpinner={showLoadingSpinner}\n closePopup={props.closePopup}\n bodyClassName='d-flex flex-column gap-3'\n animation={props.animate}\n hideTitle\n >\n <AssignDetails\n title={props.detailsTitle}\n entityId={props.objectId}\n entityType={props.entityType}\n share={share.data}\n sharePincode={pincode.data}\n entity={entity.data}\n liteUrl={config.data.liteUrl}\n instanceRegion={currentUser.data.instanceRegion}\n initialScreen={props.initialDetailsScreen || initialScreen}\n contactSupportLink={contactSupportLink}\n log={log}\n />\n <FlowControls\n backButtonText={getPhrase('backButtonText')}\n nextButtonText={getPhrase('nextButtonText')}\n onClickBack={onClickBack}\n onClickNext={onClickNext}\n hideCreateClassroomButton\n />\n </Popup>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"orderedListWithBackground\":\"ezbBL\",\"number\":\"hs0Fv\",\"code\":\"h0c9p\",\"large\":\"_leUV\",\"success\":\"f_XNL\"};","import React from 'react';\nimport CopyToClipboard from 'react-copy-to-clipboard';\n\nimport { classNames } from 'libs/common/react/utils/ClassNameHelper';\n\nimport { SvgContainer, SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport styles from './instructions.scss';\n\nconst COPY_TIMEOUT = 2000;\n\nconst namespace = 'shared.instructions';\n\ninterface BoxOverlayProps {\n show: boolean;\n text?: string;\n}\n\nfunction BoxOverlay(props: BoxOverlayProps): JSX.Element {\n return (\n <div className={classNames(\n styles.success,\n 'col-12 position-absolute w-100 h-100 start-0 top-0',\n 'd-inline-flex align-items-center text-white justify-content-center text-truncate bg-success fs-3',\n props.show ? 'opacity-1' : 'opacity-0'\n )}>\n {props.text ?? <Text namespace={namespace} phrase='copied' />}\n </div>\n );\n}\n\ninterface StepProps {\n number: number | string;\n}\n\nfunction Step(props: React.PropsWithChildren<StepProps>): JSX.Element {\n return (\n <li className='d-flex align-items-center'>\n <div className='align-self-start'>\n <span className={`${styles.number}`}>{props.number}</span>\n </div>\n <div className='w-100'>\n {props.children}\n </div>\n </li>\n );\n}\n\ninterface CodeProps {\n code: string;\n className?: string;\n size: 'md' | 'lg';\n}\n\nfunction Code(props: CodeProps): JSX.Element {\n const [ copied, setCopied ] = React.useState(false);\n\n function onCopy(): void {\n setCopied(true);\n\n setTimeout(() => setCopied(false), COPY_TIMEOUT);\n }\n\n return (\n <CopyToClipboard onCopy={onCopy} text={props.code}>\n <div className={classNames(\n `position-relative bg-white border rounded-3 text-center overflow-hidden fw-semibold cursor-pointer ${styles.code}`,\n props.size === 'lg' && `py-3 ${styles.large}`,\n props.size === 'md' && 'py-2',\n props.className\n )}>\n {props.code}\n <SvgContainer\n svgName={cvSvgLibrary.Copy}\n size={SvgContainerSize.Large}\n className='ms-2 svg-container d-inline-block lg align-middle'\n />\n <BoxOverlay show={copied} />\n </div>\n </CopyToClipboard>\n );\n}\n\ninterface TextboxProps {\n value: string;\n label?: string;\n className?: string;\n showCopyButton?: boolean;\n copiedText?: string;\n onCopy?: () => void;\n}\n\nfunction Textbox(props: TextboxProps): JSX.Element {\n const [ copied, setCopied ] = React.useState<boolean>(false);\n \n function onCopy(): void {\n if (!props.showCopyButton)\n return;\n\n setCopied(true);\n\n typeof props.onCopy === 'function' && props.onCopy();\n\n setTimeout(() => setCopied(false), COPY_TIMEOUT);\n }\n \n\n return (\n <CopyToClipboard onCopy={onCopy} text={props.value}>\n <div>\n {props.label && <h3 className='mb-3 text-center'>{props.label}</h3>}\n <div className={classNames(\n 'bg-white border rounded-3 overflow-hidden px-4 py-3 text-truncate h5 mb-0',\n 'position-relative row align-items-center gx-2 gy-0',\n props.showCopyButton ? 'text-left cursor-pointer' : 'text-center',\n props.className\n )}>\n <div className={classNames(\n props.showCopyButton ? 'col-11' : 'col-12',\n 'text-truncate'\n )}>\n {props.value}\n </div>\n {props.showCopyButton &&\n <div className='col-1'>\n <SvgContainer\n svgName={cvSvgLibrary.Copy}\n size={SvgContainerSize.Standard}\n className='svg-container d-inline-block std'\n onClick={onCopy}\n />\n </div>\n }\n {props.showCopyButton &&\n <BoxOverlay show={copied} />\n }\n </div>\n </div>\n </CopyToClipboard>\n );\n}\n\ntype InstructionsSpacing = 'none' | 'sm' | 'md' | 'lg';\n\ninterface InstructionsProps {\n spacing?: InstructionsSpacing;\n bottomSpacing?: InstructionsSpacing;\n className?: string;\n}\n\nconst bottomSpacingMap: {[key in InstructionsSpacing]: string} = {\n none: 'mb-0',\n md: 'mb-3',\n sm: 'mb-2',\n lg: 'mb-4'\n};\n\nconst itemSpacingMap: {[key in InstructionsSpacing]: string} = {\n none: '',\n sm: 'gap-2',\n md: 'gap-3',\n lg: 'gap-4'\n};\n\nexport function Instructions(props: React.PropsWithChildren<InstructionsProps>): JSX.Element {\n return (\n <ol className={classNames(\n 'd-flex flex-column',\n bottomSpacingMap[props.bottomSpacing || 'md'],\n itemSpacingMap[props.spacing || 'md'],\n styles.orderedListWithBackground,\n props.className\n )}>\n {props.children}\n </ol>\n );\n}\n\nInstructions.Step = Step;\nInstructions.Code = Code;\nInstructions.Textbox = Textbox;"],"names":["namespace","BASE_IMAGE_CLASS_NAME","InsightsMask","className","SharedObjectImage","props","ref","el","object","fixedHeight","style","width","offsetHeight","VideoHelper","typeId","MasterType","useVideoThumbnail","image","ImageHelper","imageType","imageClassName","imageFallbackComponent","ImageFallback","type","svgContainerClassName","url","getBgColorClass","name","extraClasses","getImageProps","thumbnailMetadata","showVideoMetadata","hideBottomBar","hideDuration","hideMask","hideRating","hideVideoBadgeType","showInsightsMask","AppLink","appLink","VideoThumbnail","video","size","thumbnailSize","imageOptions","textPosition","ThumbnailTextPosition","requireMarking","Text","phrase","options","smartCount","CollectionThumbnail","collection","analyticsData","id","analyticsOptions","entity","ShareViewHelper","actionType","location","locationContext","showMask","showCollectionMask","showVideoCount","onlyCount","BaseImage","data","defaultProps","getPhrase","LanguageService","buildStyle","content","text","noUpperCase","Divider","BaseCollectionThumbnailTitle","title","CollectionThumbnailTitle","firstVideo","collectionVideos","videos","count","playlist","clips","interactives","ArrayHelper","getFirstVideo","videoCount","totalCount","getVideoCount","showTexts","length","subText","toString","MasterTypeHelper","preventFocus","SvgContainer","svgName","hoverText","hideVideoTypeBadge","TitleSubText","subTextAppLink","titleAppLink","getEventLogger","getData","logAnalyticsOptions","logDataConfig","config","isValid","mergedData","baseData","log","shouldLog","analytics","IntegrationList","integrations","item","valid","icon","link","instanceRegion","instanceRegions","includes","autoHeight","autoHeightMax","maxHeight","map","integration","index","itemClassName","key","href","target","rel","backgroundImage","hideSupportLink","ExternalLink","contactSupportLink","newTab","AssignHelper","getRecipients","entities","e","getLearnersForGroups","groups","learners","reduce","prev","curr","users","getSelectedEntities","selectedEntities","find","filter","getContactSupportUrl","marketingUrl","path","isValidShare","share","LogDataConfig","workflowPhase","descriptor","classroom","getAssignEventLogger","TabItem","active","tab","onClick","children","AssingDetailsTabs","ShareIntegrationsStack","noTooltip","JoinCodeInstructions","Instructions","number","SignInInstruction","SignInInstructions","ShareLinkOption","screen","AssignOverviewImage","ImageUrls","FullScreen","document","fullscreenEnabled","isFullScreen","controlsRef","Button","variant","exitFullscreen","useFullScreenActions","setIsFullScreen","isSupported","current","onFullScreenChange","fullscreenElement","handleFullScreenChange","addEventListener","removeEventListener","requestFullScreen","requestFullscreen","exitFullScreen","buttonText","hideIcon","sizeClassMap","sm","md","lg","qrSizeMap","custom","QrCode","qrSize","customSize","qrSizeClass","containerClassName","QRCode","value","bgColor","logoImage","logoPaddingStyle","logoPadding","eyeRadius","outer","inner","removeQrCodeBehindLogo","qrRef","QrCodeDownload","downloadRef","timeout","setTimeout","download","onDone","clearTimeout","AssignFullScreen","Row","Col","xs","QrDetails","breakpoints","useBreakpoints","xl","JoinCode","joinCode","LinkDetails","bottomSpacing","label","showCopyButton","AssignDetailsConfig","component","onClickTab","fullScreen","UrlHelper","liteUrl","shareLink","flow","isPrinting","setIsPrinting","isDownloading","setIsDownloading","qrCode","printRegion","getElementById","DevError","root","render","unmount","print","window","printable","documentTitle","targetStyles","imageStyle","onLoadingEnd","onError","fileName","steps","qrValue","Object","entries","step","SpinnerButton","showSpinner","spinnerText","CopyEmbedHtml","embedUrl","entityId","entityType","shareId","hideLabel","hasInputBg","onCopy","embedDetails","ShareTypeFlowMap","ShareType","AssignDetails","initialScreen","setScreen","shouldHideTitle","hideTitle","sharePincode","code","shortenedEmbedUrl","shortenedUrl","Component","AssignDetailsView","useAssignSharedData","objectId","loaded","currentUser","ShareRequests","isPincodePrivacy","privacy","SharePrivacy","pincode","initialDetailsScreen","marketingSiteUrl","showLoadingSpinner","loading","Popup","closePopup","bodyClassName","animation","animate","detailsTitle","FlowControls","backButtonText","nextButtonText","onClickBack","onClickNext","hideCreateClassroomButton","BoxOverlay","show","bottomSpacingMap","none","itemSpacingMap","spacing","Step","Code","copied","setCopied","S","Textbox"],"sourceRoot":""}
@@ -0,0 +1,2 @@
1
+ "use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[9134],{33518:(e,t,n)=>{var r;n.d(t,{e:()=>r}),function(e){e.Public="Public",e.PinCode="PinCode",e.PasswordProtected="PasswordProtected",e.ProtectedOverrideRestriction="ProtectedOverrideRestriction",e.JustMySchoolOverrideRestriction="JustMySchoolOverrideRestriction",e.Protected="Protected",e.JustMySchool="JustMySchool",e.Direct="Direct"}(r||(r={}))},18488:(e,t,n)=>{n.d(t,{o:()=>o});var r=n(99940),a=n(97395),i={namespace:"share-v2"},o={createShare:function(e){return{url:"{gateway}/v2/shares",key:"create:share-v2",type:r.k.POST,data:e,normalizeOptions:i,invalidationKeys:["sent:share-v2","get:share-v2:shares:object:".concat(e.objectId)]}},updateShare:function(e,t){return{url:"{gateway}/v2/shares/".concat(e),key:"update:share-v2",type:r.k.PUT,data:t,normalizeOptions:i,invalidationKeys:["share-v2:permanent-link:object","share-v2:".concat(e)]}},deleteShare:function(e){return{type:r.k.DELETE,url:"{gateway}/v2/shares/".concat(e),key:"delete:share-v2",normalizeOptions:i,invalidationKeys:["share-v2:permanent-link:object","sent:share-v2","share-v2:".concat(e)]}},getShare:function(e){return{url:"{gateway}/v2/shares/".concat(e),key:"share-v2:".concat(e),bootstrapName:"share-v2:".concat(e),type:r.k.GET,normalizeOptions:i}},getSentShares:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=Object.values(e).sort().join(":");return{url:a._.urlBuilder("{gateway}/v2/shares/sent",e),key:"sent:share-v2:".concat(t),type:r.k.GET,normalize:!1}},getShareLink:function(e){return{url:a._.urlBuilder("{gateway}/v2/shares/permanent-link",{objectId:e}),key:"share-v2:permanent-link:object:".concat(e),normalizeOptions:i}},createShareLink:function(e){return{type:r.k.POST,url:a._.urlBuilder("{gateway}/v2/shares/permanent-link",Object.assign({},e)),key:"create:share-v2:permanent-link:object:".concat(e.objectId),invalidationKeys:["share-v2:permanent-link:object:".concat(e.objectId),"sent:share-v2"],normalizeOptions:i}},getPrivacy:function(e){return{url:"{gateway}/v1/objects/".concat(e,"/access"),key:"privacy:".concat(e),normalize:!1}},getSharesByObjectId:function(e){return{url:"{gateway}/v2/shares/objects/".concat(e),key:"get:share-v2:shares:object:".concat(e),type:r.k.GET,normalizeOptions:i}},createSharePincode:function(e){return{url:"{gateway}/v2/shares/".concat(e,"/pincode"),key:"create:share-v2:".concat(e,":pincode"),type:r.k.POST}},getPincodeByShareId:function(e){return{url:"{gateway}/v2/shares/".concat(e,"/pincode"),key:"get:share-v2:".concat(e,":pincode")}},getPincodeByCode:function(e){return{url:"{gateway}/v2/shares/pincode?code=".concat(e),key:"get:share-v2:pincode:".concat(e)}}}},93563:(e,t,n)=>{n.d(t,{_:()=>c});var r=n(20354),a=n(33518),i=n(18488),o=n(8233);function c(e){var t=r.a.useGetFetchAsync(),n=r.a.useBasicFetch(i.o.getPrivacy(e.entityId));return{loaded:!!n.data,updateShareLink:function(e,n){return t(i.o.updateShare(e,n))},createShareLink:function(r){var c=null!=r?r:"protected"===o.R.getShareLinkAccessType(n.data)?a.e.Protected:a.e.JustMySchool;return t(i.o.createShareLink({objectId:e.entityId,privacy:c}))},deleteShareLink:function(e){return t(i.o.deleteShare(e))}}}},87265:(e,t,n)=>{n.d(t,{s:()=>s});var r=n(20354),a=n(18488),i=n(2267),o=n(39151),c=n(31949);function s(e){var t,n=r.a.useBasicFetch(c.N.currentUser()),s=i.I.getFetchFunctionByType(e.entityType)(e.entityId,null===(t=n.data)||void 0===t?void 0:t.id),u=r.a.useBasicFetch(a.o.getPrivacy(e.entityId)),l=r.a.useBasicFetch(a.o.getShareLink(e.entityId)),d=r.a.useBasicFetch(o.L.config());return{dataLoaded:!!(s.data&&n.data&&u.data&&l.data&&d.data),currentUser:n,entity:s,privacy:u,share:l,config:d}}},8233:(e,t,n)=>{n.d(t,{R:()=>v});var r=n(23481),a=n(110),i=n(33518),o=n(4594),c=n(49080),s=n(26361),u=n(35223),l=n(31908);function d(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}var y=r.T.encloseNamespace("sharev2.utils"),v={getPrivateIconAndText:function(e){var t=e.entityTypeId,n=e.privacy,r=e.hasStudentExp,a=e.entity,c=e.yearGroups;if(t===o.E.Topic||t===o.E.Series)return{icon:u.vn.VisibleOn,text:y(r?"justMySchoolTeachers":"justMySchoolDescription")};if(!Array.isArray(n))switch(n){case i.e.Public:return{icon:u.vn.VisibleOn,text:y("publicDescription")};case i.e.ProtectedOverrideRestriction:return{icon:u.vn.VisibleOn,text:y("clickViewOnly")};case i.e.Protected:return{icon:u.vn.Lock,text:v.getRespectRatingText(a,c,r)};case i.e.JustMySchoolOverrideRestriction:return{icon:u.vn.Lock,text:y(r?"justMySchoolTeachers":"justMySchoolDescription")};case i.e.JustMySchool:return{icon:u.vn.Lock,text:v.getRespectRatingText(a,c,r)};case i.e.PinCode:return{icon:u.vn.Lock,text:y("pinDescription")};case i.e.PasswordProtected:return{icon:u.vn.Lock,text:y("privateDescription")};default:return{}}},getIconAndText:function(e){var t=e.linkExpireDate,n=e.isPasswordProtected,r=e.status;if(!t&&!n)return v.getPrivateIconAndText(e);if(!t)return{icon:u.vn.Lock,text:y("password")};var i=a.O.isToday(t),o=a.O.diffBetween(t,new Date,"day");if(!n){var s=i?y("expiryToday"):y("expiry",{days:o});return r===c.F.Expired&&(s=y("expired")),{icon:u.vn.Timer,text:s}}var l=i?y("passwordExpiryToday"):y("passwordExpiry",{days:o});return r===c.F.Expired&&(l=y("passwordExpired")),{icon:u.vn.Lock,text:l}},getRespectRatingText:function(e,t,n){var r;if(!e||!t)return null;if(n)return y("justMySchoolTeachers");if(!l.M.isVideoType(e))return y("collectionRating");var a=s.l.getWeightedRestriction(null===(r=e._restrictions)||void 0===r?void 0:r.value);if(a&&!a.yearGroup)return y("onlyAdmins");var i,o,c,u=l.M.getRating(e),v=function(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!n){if(Array.isArray(e)||(n=function(e,t){if(e){if("string"==typeof e)return d(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?d(e,t):void 0}}(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var r=0,a=function(){};return{s:a,n:function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:a}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,o=!0,c=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return o=e.done,e},e:function(e){c=!0,i=e},f:function(){try{o||null==n.return||n.return()}finally{if(c)throw i}}}}(t);try{for(v.s();!(c=v.n()).done;){var p=c.value;(!i||p.value>i.value)&&(i=p),a&&p.value<=a.yearGroup||u&&p.rating.value<u.value||(!o||p.value<o.value)&&(o=p)}}catch(e){v.e(e)}finally{v.f()}return o?1===t.length?y("clickViewOnly"):o.value===i.value?y("maxYearGroup",{yearGroup:i.name}):y("yearGroupRange",{yearGroup:o.name}):y("onlyStaff")},getShareLinkAccessType:function(e){return e.isTvContent||e.isClickViewContent?"protected":e.canManageAccess?"owner":"private"}}},2267:(e,t,n)=>{n.d(t,{I:()=>i});var r=n(64249),a=n(40841),i={canEmbed:function(e){return["video","interactive","clip"].includes(e)},canAddPolicies:function(e){return["interactive"].includes(e)},getEnabledIntegrations:function(e,t){return a._.getShareIntegrations(e,t).filter((function(e){return e.enabled})).map((function(e){return e.id}))},getShareSettingsInitialValues:function(e,t){var n,r,a,i,o,c;return{preventScrubbing:null!==(a=null!==(r=null===(n=null==e?void 0:e.options)||void 0===n?void 0:n.preventScrubbing)&&void 0!==r?r:null==t?void 0:t.preventScrubbing)&&void 0!==a&&a,immediateFeedback:null!==(c=null!==(o=null===(i=null==e?void 0:e.options)||void 0===i?void 0:i.immediateFeedback)&&void 0!==o?o:null==t?void 0:t.immediateFeedback)&&void 0!==c&&c}},getEnabledSettingsField:function(e){return{showImmediateFeedbackField:"interactive"===e,showPreventScrubbingField:"interactive"===e}},getFetchFunctionByType:function(e){return r.I.getFetchFunctionByType(e)},getAnalyticsEntity:function(e){return r.I.getAnalyticsEntity(e)},getAnalyticsOptions:function(e){return r.I.getAnalyticsOptions(e)}}},31121:(e,t,n)=>{n.d(t,{j:()=>c});var r=n(65858),a=n(84850);function i(e){return"share"in e&&!!e.share}var o={"create-share-link":{isValid:i,analyticsOptions:{actionType:r.Vw.Create,workflowPhase:r.eu.Complete,entity:r.py.ShareLink}},"update-share-link":{isValid:i,analyticsOptions:{actionType:r.Vw.Edit,entity:r.py.ShareLink,workflowPhase:r.eu.Complete}},"delete-share-link":{isValid:i,analyticsOptions:{actionType:r.Vw.Delete,entity:r.py.ShareLink,workflowPhase:r.eu.Complete}},"plugin-share-embed":{isValid:i,analyticsOptions:{actionType:r.Vw.Share,descriptor:r.YM.PluginEmbed,workflowPhase:r.eu.Complete,entity:r.py.ShareLink}},"copy-embed-html":{isValid:function(){return!0},analyticsOptions:{actionType:r.Vw.Share,workflowPhase:r.eu.Complete,entity:r.py.ShareLink,descriptor:r.YM.CopyEmbedHtml}},"copy-share-link":{isValid:i,analyticsOptions:{actionType:r.Vw.Share,workflowPhase:r.eu.Complete,entity:r.py.ShareLink,descriptor:r.YM.CopyLink}}};function c(e){var t,n=(0,a.X)({analyticsOptions:e.analyticsOptions,baseData:e.data,config:o,shouldLog:null===(t=e.shouldLog)||void 0===t||t});return{log:n.log,getData:n.getData}}},84850:(e,t,n)=>{n.d(t,{X:()=>i});var r=n(1048),a=n(49985);function i(e){function t(t,n){var i=e.config[t.type];if(null==i?void 0:i.isValid(t)){var o=Object.assign(Object.assign({},e.baseData),t);return{data:r.t.omit(o,["type"]),analyticsOptions:a.k.mergeOptions(i.analyticsOptions,[e.analyticsOptions,n])}}}return{getData:t,log:function(n,r){if(e.shouldLog){var i=t(n,r);i&&a.k.logUserAction(i.data,i.analyticsOptions)}}}}}}]);
2
+ //# sourceMappingURL=9134-19912ca3ee-lite.chunk.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scripts/9134-19912ca3ee-lite.chunk.js","mappings":"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","sources":["file:///app/packages/libs/shared/src/apps/share-v2/enums/SharePrivacy.ts","file:///app/packages/libs/shared/src/apps/share-v2/flight-requests/ShareRequests.ts","file:///app/packages/libs/shared/src/apps/share-v2/hooks/useShareLinkActions.ts","file:///app/packages/libs/shared/src/apps/share-v2/hooks/useShareLinkData.ts","file:///app/packages/libs/shared/src/apps/share-v2/utils/ShareLinkHelper.ts","file:///app/packages/libs/shared/src/apps/share-v2/utils/ShareViewHelper.tsx","file:///app/packages/libs/shared/src/apps/share-v2/utils/get-share-event-logger/getShareEventLogger.ts","file:///app/packages/libs/shared/src/utils/get-event-logger/getEventLogger.ts"],"sourcesContent":["export enum SharePrivacy {\n Public = 'Public',\n PinCode = 'PinCode',\n PasswordProtected = 'PasswordProtected',\n ProtectedOverrideRestriction = 'ProtectedOverrideRestriction',\n JustMySchoolOverrideRestriction = 'JustMySchoolOverrideRestriction',\n Protected = 'Protected',\n JustMySchool = 'JustMySchool',\n Direct = 'Direct'\n}","import { HttpVerbs } from 'libs/common/backbone/enums/HttpVerbs';\nimport { UrlHelper } from 'libs/common/backbone/utils/UrlHelper';\nimport { Flight } from 'libs/common/flight';\n\nimport { ShareType } from 'libs/shared/apps/share-v2/enums/ShareType';\nimport { CreateShareLinkRequest } from 'libs/shared/apps/share-v2/interfaces/CreateShareLinkRequest';\nimport { CreateShareRequest } from 'libs/shared/apps/share-v2/interfaces/CreateShareRequest';\nimport { UpdateShareRequest } from 'libs/shared/apps/share-v2/interfaces/UpdateShareRequest';\n\nconst normalizeOptions: Flight.NormalizeOptions = {\n namespace: 'share-v2'\n};\n\nexport interface GetSentSharesParams {\n cursor?: string;\n scopeId?: string;\n objectTypeId?: number;\n type?: ShareType\n}\n\nexport const ShareRequests = {\n createShare(\n data: CreateShareRequest\n ): Flight.Request {\n return {\n url: '{gateway}/v2/shares',\n key: 'create:share-v2',\n type: HttpVerbs.POST,\n data,\n normalizeOptions,\n invalidationKeys: [ 'sent:share-v2', `get:share-v2:shares:object:${data.objectId}` ]\n };\n },\n\n updateShare(\n shareId: string,\n data: UpdateShareRequest\n ): Flight.Request {\n return {\n url: `{gateway}/v2/shares/${shareId}`,\n key: `update:share-v2`,\n type: HttpVerbs.PUT,\n data,\n normalizeOptions,\n invalidationKeys: [ 'share-v2:permanent-link:object', `share-v2:${shareId}` ]\n };\n },\n \n deleteShare(\n shareId: string\n ): Flight.Request {\n return {\n type: HttpVerbs.DELETE,\n url: `{gateway}/v2/shares/${shareId}`,\n key: `delete:share-v2`,\n normalizeOptions,\n invalidationKeys: [ 'share-v2:permanent-link:object', 'sent:share-v2', `share-v2:${shareId}` ]\n };\n },\n\n getShare(\n shareId: string\n ): Flight.Request {\n return {\n url: `{gateway}/v2/shares/${shareId}`,\n key: `share-v2:${shareId}`,\n bootstrapName: `share-v2:${shareId}`,\n type: HttpVerbs.GET,\n normalizeOptions\n };\n },\n\n getSentShares(\n params: GetSentSharesParams = {}\n ): Flight.Request {\n const key = Object.values(params).sort().join(':');\n\n return {\n url: UrlHelper.urlBuilder('{gateway}/v2/shares/sent', params),\n key: `sent:share-v2:${key}`,\n type: HttpVerbs.GET,\n normalize: false\n };\n },\n\n getShareLink(\n id: string\n ): Flight.Request {\n return {\n url: UrlHelper.urlBuilder('{gateway}/v2/shares/permanent-link', { objectId: id }),\n key: `share-v2:permanent-link:object:${id}`,\n normalizeOptions\n };\n },\n\n createShareLink(\n data: CreateShareLinkRequest\n ): Flight.Request {\n return {\n type: HttpVerbs.POST,\n url: UrlHelper.urlBuilder('{gateway}/v2/shares/permanent-link', { ...data }),\n key: `create:share-v2:permanent-link:object:${data.objectId}`,\n invalidationKeys: [ `share-v2:permanent-link:object:${data.objectId}`, 'sent:share-v2' ],\n normalizeOptions\n };\n },\n\n getPrivacy(id: string): Flight.Request {\n return {\n url: `{gateway}/v1/objects/${id}/access`,\n key: `privacy:${id}`,\n normalize: false\n };\n },\n \n getSharesByObjectId(\n objectId: string | number\n ): Flight.Request {\n return {\n url: `{gateway}/v2/shares/objects/${objectId}`,\n key: `get:share-v2:shares:object:${objectId}`,\n type: HttpVerbs.GET,\n normalizeOptions\n };\n },\n\n createSharePincode(shareId: string): Flight.Request {\n return {\n url: `{gateway}/v2/shares/${shareId}/pincode`,\n key: `create:share-v2:${shareId}:pincode`,\n type: HttpVerbs.POST\n };\n },\n\n getPincodeByShareId(shareId: string): Flight.Request {\n return {\n url: `{gateway}/v2/shares/${shareId}/pincode`,\n key: `get:share-v2:${shareId}:pincode`\n };\n },\n\n getPincodeByCode(code: string): Flight.Request {\n return {\n url: `{gateway}/v2/shares/pincode?code=${code}`,\n key: `get:share-v2:pincode:${code}`\n };\n }\n};\n","import { Flight } from 'libs/common/react/index';\n\nimport { SharePrivacy } from '../enums/SharePrivacy';\nimport { ShareRequests } from '../flight-requests/ShareRequests';\nimport { Share } from '../interfaces/Share';\nimport { SharePrivacyResponse } from '../interfaces/SharePrivacyResponse';\nimport { UpdateShareRequest } from '../interfaces/UpdateShareRequest';\nimport { ShareLinkHelper } from '../utils/ShareLinkHelper';\n\ninterface UseShareLinkActionsOptions {\n entityId: string;\n}\n\nexport function useShareLinkActions(options: UseShareLinkActionsOptions) {\n const fetchAsync = Flight.useGetFetchAsync();\n\n const entityPrivacy = Flight.useBasicFetch<SharePrivacyResponse>(ShareRequests.getPrivacy(options.entityId));\n\n function getCreateSharePrivacy() {\n const accessType = ShareLinkHelper.getShareLinkAccessType(entityPrivacy.data);\n\n return accessType === 'protected'\n ? SharePrivacy.Protected\n : SharePrivacy.JustMySchool;\n }\n\n function updateShareLink(shareId: string, data: UpdateShareRequest): Promise<Share> {\n return fetchAsync<Share>(ShareRequests.updateShare(shareId, data));\n }\n\n function createShareLink(privacy?: SharePrivacy): Promise<Share> {\n const requestPrivacy = privacy ?? getCreateSharePrivacy();\n return fetchAsync<Share>(ShareRequests.createShareLink({ objectId: options.entityId, privacy: requestPrivacy }));\n }\n\n function deleteShareLink(shareId: string): Promise<void> {\n return fetchAsync(ShareRequests.deleteShare(shareId));\n }\n\n return {\n loaded: !!entityPrivacy.data,\n updateShareLink,\n createShareLink,\n deleteShareLink\n };\n}","import { Flight } from 'libs/common/react/index';\n\nimport { ShareRequests } from 'libs/shared/apps/share-v2/flight-requests/ShareRequests';\nimport type { SharePrivacyResponse } from 'libs/shared/apps/share-v2/interfaces/SharePrivacyResponse';\nimport { SharableEntityType, ShareViewHelper } from 'libs/shared/apps/share-v2/utils/ShareViewHelper';\nimport { ConfigRequests } from 'libs/shared/flight-requests/ConfigRequests';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport type { Config, CurrentUser } from 'libs/shared/interfaces';\n\nimport { Share } from '../interfaces/Share';\n\ninterface UseShareLinkDataOptions {\n entityId: string;\n entityType: SharableEntityType;\n}\n\nexport function useShareLinkData(options: UseShareLinkDataOptions) {\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n const entity = ShareViewHelper.getFetchFunctionByType(options.entityType)(options.entityId, currentUser.data?.id);\n const privacy = Flight.useBasicFetch<SharePrivacyResponse>(ShareRequests.getPrivacy(options.entityId));\n const share = Flight.useBasicFetch<Share>(ShareRequests.getShareLink(options.entityId));\n const config = Flight.useBasicFetch<Config>(ConfigRequests.config());\n \n const dataLoaded = !!entity.data\n && !!currentUser.data\n && !!privacy.data\n && !!share.data\n && !!config.data;\n\n return {\n dataLoaded,\n currentUser: currentUser,\n entity: entity,\n privacy: privacy,\n share: share,\n config: config\n };\n}","import { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { DateHelper } from 'libs/common/react/utils/DateHelper';\n\nimport { SharePrivacy } from 'libs/shared/apps/share-v2/enums/SharePrivacy';\nimport type { SharePrivacyResponse } from 'libs/shared/apps/share-v2/interfaces/SharePrivacyResponse';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { ShareLinkStatus } from 'libs/shared/enums/ShareLinkStatus';\nimport type { BaseObject, YearGroup } from 'libs/shared/interfaces';\nimport { RestrictionHelper } from 'libs/shared/utils/RestrictionHelper';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\nconst namespace = 'sharev2.utils';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface GetIconAndTextOptions {\n linkExpireDate: string;\n isPasswordProtected: boolean;\n privacy: SharePrivacy;\n status: ShareLinkStatus;\n entityTypeId: MasterType;\n hasStudentExp: boolean;\n entity: BaseObject;\n yearGroups: YearGroup[];\n}\n\ninterface GetPrivateIconAndTextOptions {\n privacy: SharePrivacy;\n entityTypeId: MasterType;\n hasStudentExp: boolean;\n entity: BaseObject;\n yearGroups: YearGroup[];\n}\n\n\nexport const ShareLinkHelper = {\n getPrivateIconAndText: (options: GetPrivateIconAndTextOptions) => {\n const { entityTypeId, privacy, hasStudentExp, entity, yearGroups } = options;\n \n if (entityTypeId === MasterType.Topic || entityTypeId === MasterType.Series)\n return { icon: cvSvgLibrary.VisibleOn, text: getPhrase(hasStudentExp ? 'justMySchoolTeachers' : 'justMySchoolDescription') };\n \n /**\n * This is mainly for typescript, privacy will be an array for playlists\n * but that is handled above\n */\n if (Array.isArray(privacy))\n return;\n \n switch (privacy) {\n case SharePrivacy.Public:\n return { icon: cvSvgLibrary.VisibleOn, text: getPhrase('publicDescription') };\n case SharePrivacy.ProtectedOverrideRestriction:\n return { icon: cvSvgLibrary.VisibleOn, text: getPhrase('clickViewOnly') };\n case SharePrivacy.Protected:\n return {\n icon: cvSvgLibrary.Lock,\n text: ShareLinkHelper.getRespectRatingText(entity, yearGroups, hasStudentExp)\n };\n case SharePrivacy.JustMySchoolOverrideRestriction:\n return { icon: cvSvgLibrary.Lock, text: getPhrase(hasStudentExp ? 'justMySchoolTeachers' : 'justMySchoolDescription') };\n case SharePrivacy.JustMySchool:\n return {\n icon: cvSvgLibrary.Lock,\n text: ShareLinkHelper.getRespectRatingText(entity, yearGroups, hasStudentExp)\n };\n case SharePrivacy.PinCode:\n return { icon: cvSvgLibrary.Lock, text: getPhrase('pinDescription') };\n case SharePrivacy.PasswordProtected:\n return { icon: cvSvgLibrary.Lock, text: getPhrase('privateDescription') };\n default:\n return {};\n }\n },\n\n getIconAndText: (options: GetIconAndTextOptions) => {\n const { linkExpireDate, isPasswordProtected, status } = options;\n if (!linkExpireDate && !isPasswordProtected)\n return ShareLinkHelper.getPrivateIconAndText(options);\n \n if (!linkExpireDate)\n return { icon: cvSvgLibrary.Lock, text: getPhrase('password') };\n \n const isToday = DateHelper.isToday(linkExpireDate);\n const dayDifference = DateHelper.diffBetween(linkExpireDate, new Date(), 'day');\n \n if (!isPasswordProtected) {\n let text = isToday\n ? getPhrase('expiryToday')\n : getPhrase('expiry', { days: dayDifference });\n \n if (status === ShareLinkStatus.Expired)\n text = getPhrase('expired');\n \n return { icon: cvSvgLibrary.Timer, text };\n }\n \n let text = isToday\n ? getPhrase('passwordExpiryToday')\n : getPhrase('passwordExpiry', { days: dayDifference });\n \n if (status === ShareLinkStatus.Expired)\n text = getPhrase('passwordExpired');\n \n return { icon: cvSvgLibrary.Lock, text };\n },\n\n getRespectRatingText(video: BaseObject, yearGroups: YearGroup[], hasStudentExp: boolean) {\n if (!video || !yearGroups)\n return null;\n \n if (hasStudentExp)\n return getPhrase('justMySchoolTeachers');\n \n if (!VideoHelper.isVideoType(video))\n return getPhrase('collectionRating');\n \n const restriction = RestrictionHelper.getWeightedRestriction(video._restrictions?.value);\n \n /**\n * Restrictions without a year level are teacher restricitons, which means only admins can see it.\n */\n if (restriction && !restriction.yearGroup)\n return getPhrase('onlyAdmins');\n \n const rating = VideoHelper.getRating(video);\n \n let maxYearGroup: YearGroup;\n let minAllowedYearGroup: YearGroup;\n \n for (const yearGroup of yearGroups) {\n /**\n * If our year level is our new highest so far, save it\n */\n if (!maxYearGroup || yearGroup.value > maxYearGroup.value)\n maxYearGroup = yearGroup;\n \n /**\n * If the restriction is higher than this year level, skip it.\n */\n if (restriction && yearGroup.value <= restriction.yearGroup)\n continue;\n \n /**\n * If therating is higher than this year level's rating value, skip it.\n */\n if (rating && yearGroup.rating.value < rating.value)\n continue;\n \n /**\n * If our year level is the new lowest so far, save it\n */\n if (!minAllowedYearGroup || yearGroup.value < minAllowedYearGroup.value)\n minAllowedYearGroup = yearGroup;\n }\n \n /**\n * If no year levels are allowed, then it's staff only.\n */\n if (!minAllowedYearGroup)\n return getPhrase('onlyStaff');\n \n \n /**\n * If there's only one year level, and it's allowed, then we can just\n * say that everyone in your school can access it.\n */\n if (yearGroups.length === 1)\n return getPhrase('clickViewOnly');\n \n /**\n * We differentiate the copy if it's the highest year level or not. \n * Basically if we need to say \"X and above\" or not.\n */\n if (minAllowedYearGroup.value === maxYearGroup.value)\n return getPhrase('maxYearGroup', { yearGroup: maxYearGroup.name });\n \n return getPhrase('yearGroupRange', { yearGroup: minAllowedYearGroup.name });\n },\n\n getShareLinkAccessType(privacy: SharePrivacyResponse): 'private' | 'owner' | 'protected' {\n /**\n * If an entity is not a ClickView content and they cannot manage access\n * settings of the entity (which they can if its their private entity)\n * it means that its a TV content\n */\n if (privacy.isTvContent || privacy.isClickViewContent)\n return 'protected';\n\n if (privacy.canManageAccess)\n return 'owner';\n\n return 'private';\n }\n};","import { AnalyticsOptions, EntityType } from 'libs/analytics/interfaces';\n\nimport { ShareViewHelper as OldShareViewHelper } from 'libs/shared/apps/share/views/share/ShareViewHelper';\nimport type { Share } from 'libs/shared/apps/share-v2/interfaces/Share';\nimport { IntegrationId } from 'libs/shared/enums/IntegrationId';\nimport type { Clip, Interactive, InteractiveMetadata, Playlist, Series, Subject, Video } from 'libs/shared/interfaces';\nimport { IntegrationHelper } from 'libs/shared/utils/IntegrationHelper';\n\nexport type SharableEntityType = 'video' | 'playlist' | 'subject' | 'series' | 'interactive' | 'clip';\nexport type SharableEntity = Video | Playlist | Subject | Series | InteractiveMetadata | Clip;\nexport interface ShareSettingsFormFields {\n preventScrubbing: boolean;\n immediateFeedback: boolean;\n}\n\nexport const ShareViewHelper = {\n canEmbed(type: SharableEntityType): boolean {\n return [ 'video', 'interactive', 'clip' ].includes(type);\n },\n\n /**\n * Only interactive entities can update share settings currently\n */\n canAddPolicies(type: SharableEntityType): boolean {\n return ['interactive'].includes(type);\n },\n\n getEnabledIntegrations(googleClassroomSetting: boolean, msftTeamsSetting: boolean): IntegrationId[] {\n const integrations = IntegrationHelper.getShareIntegrations(googleClassroomSetting, msftTeamsSetting);\n return integrations.filter(i => i.enabled).map(i => i.id);\n },\n\n getShareSettingsInitialValues(share: Share, interactive: Interactive | null) {\n return {\n preventScrubbing: share?.options?.preventScrubbing ?? interactive?.preventScrubbing ?? false,\n immediateFeedback: share?.options?.immediateFeedback ?? interactive?.immediateFeedback ?? false\n };\n },\n \n getEnabledSettingsField(entityType: SharableEntityType): {[key in `show${Capitalize<keyof ShareSettingsFormFields>}Field`]: boolean} {\n return {\n showImmediateFeedbackField: entityType === 'interactive',\n showPreventScrubbingField: entityType === 'interactive'\n };\n },\n\n /**\n * Methods from old ShareViewHelper imported here for namespacing\n */\n getFetchFunctionByType: (type: SharableEntityType) => {\n return OldShareViewHelper.getFetchFunctionByType(type);\n },\n\n getAnalyticsEntity(entityType: string): EntityType {\n return OldShareViewHelper.getAnalyticsEntity(entityType);\n },\n\n getAnalyticsOptions(entityType: SharableEntityType): AnalyticsOptions {\n return OldShareViewHelper.getAnalyticsOptions(entityType);\n }\n};","import { AnalyticsOptions, EntityType, ShareDescriptors, UserAction, WorkflowPhase } from 'libs/analytics/interfaces';\n\nimport { EventLogConfig, getEventLogger } from 'libs/shared/utils/get-event-logger/getEventLogger';\n\nimport { BaseShareData, ShareLogData } from './interfaces/GetShareEventLogger';\n\ninterface ShareEventLoggerOptions {\n data: BaseShareData;\n analyticsOptions: AnalyticsOptions;\n shouldLog?: boolean;\n}\n\nexport type ShareLogFn = ReturnType<typeof getShareEventLogger>['log'];\n\nfunction isValidShare(data: ShareLogData): boolean {\n if (!('share' in data))\n return false;\n\n return !!data.share;\n}\n\nconst LogDataConfig: EventLogConfig<ShareLogData> = {\n /**\n * Share - Link\n */\n 'create-share-link': {\n isValid: isValidShare,\n analyticsOptions: {\n actionType: UserAction.Create,\n workflowPhase: WorkflowPhase.Complete,\n entity: EntityType.ShareLink\n }\n },\n 'update-share-link': {\n isValid: isValidShare,\n analyticsOptions: {\n actionType: UserAction.Edit,\n entity: EntityType.ShareLink,\n workflowPhase: WorkflowPhase.Complete\n }\n },\n 'delete-share-link': {\n isValid: isValidShare,\n analyticsOptions: {\n actionType: UserAction.Delete,\n entity: EntityType.ShareLink,\n workflowPhase: WorkflowPhase.Complete\n }\n },\n\n 'plugin-share-embed': {\n isValid: isValidShare,\n analyticsOptions: {\n actionType: UserAction.Share,\n descriptor: ShareDescriptors.PluginEmbed,\n workflowPhase: WorkflowPhase.Complete,\n entity: EntityType.ShareLink\n }\n },\n\n /**\n * General\n */\n 'copy-embed-html': {\n isValid: () => true,\n analyticsOptions: {\n actionType: UserAction.Share,\n workflowPhase: WorkflowPhase.Complete,\n entity: EntityType.ShareLink, // default\n descriptor: ShareDescriptors.CopyEmbedHtml\n }\n },\n 'copy-share-link': {\n isValid: isValidShare,\n analyticsOptions: {\n actionType: UserAction.Share,\n workflowPhase: WorkflowPhase.Complete,\n entity: EntityType.ShareLink, // default\n descriptor: ShareDescriptors.CopyLink\n }\n }\n};\n\nexport function getShareEventLogger(options: ShareEventLoggerOptions) {\n const { log, getData } = getEventLogger({\n analyticsOptions: options.analyticsOptions,\n baseData: options.data,\n config: LogDataConfig,\n shouldLog: options.shouldLog ?? true\n });\n\n return {\n log,\n getData\n };\n}","import { ObjectHelper } from 'libs/common/react/utils/ObjectHelper';\n\nimport { AnalyticsHelper } from 'libs/analytics/AnalyticsHelper';\nimport { AnalyticsOptions, HashObject } from 'libs/analytics/interfaces';\n\n/**\n * Base type that every event needs to extend from\n */\nexport interface BaseEventLogData<T extends string = string> {\n type: T;\n}\n\n/**\n * Utility type to map event types to config types\n */\nexport type EventLogConfig<TEvents extends BaseEventLogData> = {\n [K in TEvents['type']]: BaseConfigData<Extract<TEvents, { type: K }>>;\n};\n\ninterface BaseConfigData<T extends BaseEventLogData> {\n isValid?: (data: T) => boolean;\n analyticsOptions: AnalyticsOptions;\n}\n\ninterface GetEventLoggerOptions<TData extends HashObject, TEvents extends BaseEventLogData> {\n baseData: TData;\n /**\n * Event type config map\n */\n config: EventLogConfig<TEvents>;\n /**\n * Base analytics options\n */\n analyticsOptions: AnalyticsOptions;\n\n shouldLog?: boolean;\n}\n\n/**\n * Method build and log events which are typed using map\n * passed in from config\n */\nexport function getEventLogger<\n TData extends HashObject = HashObject,\n TEvents extends BaseEventLogData = BaseEventLogData\n>(\n options: GetEventLoggerOptions<TData, TEvents>\n) {\n /**\n * Types to assist hinting in our log / getData methods\n */\n type EventType = TEvents['type']; // type of event\n type EventData = Extract<TEvents, { type: EventType }>; // restrict the data to the passed type\n \n /**\n * Get analytics data and options for a given event type\n */\n function getData(\n data: EventData,\n logAnalyticsOptions?: AnalyticsOptions\n ) {\n const logDataConfig = options.config[data.type];\n\n if (!logDataConfig?.isValid(data))\n return;\n\n const mergedData = {\n ...options.baseData,\n ...data\n };\n \n const sanitizedData = ObjectHelper.omit<typeof data>(mergedData, ['type']);\n\n const analyticsOptions = AnalyticsHelper.mergeOptions(\n logDataConfig.analyticsOptions,\n [\n options.analyticsOptions,\n logAnalyticsOptions\n ]\n );\n\n return {\n data: sanitizedData,\n analyticsOptions\n };\n }\n\n /**\n * Similar to `getData` except it logs the analytics event\n * for a given type if its valid\n */\n function log(\n data: EventData,\n logAnalyticsOptions?: AnalyticsOptions\n ) {\n if (!options.shouldLog)\n return;\n\n const analytics = getData(data, logAnalyticsOptions);\n\n if (!analytics)\n return;\n\n AnalyticsHelper.logUserAction(analytics.data, analytics.analyticsOptions);\n }\n\n return {\n getData,\n log\n };\n}"],"names":["SharePrivacy","normalizeOptions","namespace","ShareRequests","createShare","data","url","key","type","invalidationKeys","objectId","updateShare","shareId","deleteShare","getShare","bootstrapName","getSentShares","params","Object","values","sort","join","normalize","getShareLink","id","createShareLink","getPrivacy","getSharesByObjectId","createSharePincode","getPincodeByShareId","getPincodeByCode","code","useShareLinkActions","options","fetchAsync","entityPrivacy","entityId","loaded","updateShareLink","privacy","requestPrivacy","deleteShareLink","useShareLinkData","currentUser","entity","entityType","share","config","dataLoaded","getPhrase","ShareLinkHelper","getPrivateIconAndText","entityTypeId","hasStudentExp","yearGroups","icon","text","Array","isArray","getRespectRatingText","getIconAndText","linkExpireDate","isPasswordProtected","status","isToday","dayDifference","Date","days","video","restriction","_restrictions","value","yearGroup","maxYearGroup","minAllowedYearGroup","rating","length","name","getShareLinkAccessType","isTvContent","isClickViewContent","canManageAccess","ShareViewHelper","canEmbed","includes","canAddPolicies","getEnabledIntegrations","googleClassroomSetting","msftTeamsSetting","filter","i","enabled","map","getShareSettingsInitialValues","interactive","preventScrubbing","immediateFeedback","getEnabledSettingsField","showImmediateFeedbackField","showPreventScrubbingField","getFetchFunctionByType","getAnalyticsEntity","getAnalyticsOptions","isValidShare","LogDataConfig","isValid","analyticsOptions","actionType","workflowPhase","descriptor","getShareEventLogger","baseData","shouldLog","log","getData","getEventLogger","logAnalyticsOptions","logDataConfig","mergedData","analytics"],"sourceRoot":""}
@@ -0,0 +1,2 @@
1
+ "use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[9266],{75097:(e,t,n)=>{n.d(t,{U:()=>o});var r=n(32735),a=n(13170);function o(e){var t=e.count,n=void 0===t?6:t;return r.createElement("div",{className:"d-flex"},r.createElement("div",{className:"d-flex ps-1"},Array(n).fill(null).map((function(e,t){return r.createElement("div",{key:t,className:"".concat(a.Z.partialButton," partial-loading-background mx-1")})}))))}},6748:(e,t,n)=>{n.d(t,{i:()=>w});var r=n(32735),a=n(42648),o=n(35509),l=n(91967),c=n(15611),i=n(17808),s=n(1287),u=n(83914),d=n(90281),m={opacity:"0.8",cursor:"grabbing"},f=n(35223);function p(e){return function(e){if(Array.isArray(e))return g(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||v(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function v(e,t){if(e){if("string"==typeof e)return g(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)?g(e,t):void 0}}function g(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}function b(e){var t,n,r,a;return{canScrollLeft:(null===(t=e.current)||void 0===t?void 0:t.scrollLeft)>0,canScrollRight:(null===(n=e.current)||void 0===n?void 0:n.scrollLeft)+1<(null===(r=e.current)||void 0===r?void 0:r.scrollWidth)-(null===(a=e.current)||void 0===a?void 0:a.clientWidth)}}const y={sortIndicator:"gFhu0",scrollContainer:"sWUp9",scrollbarTrack:"Vn2qM"};function h(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}var E=function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var a=0;for(r=Object.getOwnPropertySymbols(e);a<r.length;a++)t.indexOf(r[a])<0&&Object.prototype.propertyIsEnumerable.call(e,r[a])&&(n[r[a]]=e[r[a]])}return n};function S(e){var t,n;return e.column.canSort?r.createElement("span",{className:"".concat(y.sortIndicator,"\n ").concat(e.column.isSorted?"":"text-secondary","\n ").concat(null!==(n=null===(t=e.theme)||void 0===t?void 0:t.sortIndicator)&&void 0!==n?n:"")},r.createElement(u.x,{svgName:e.column.isSortedDesc||!e.column.isSorted?f.vn.ArrowRight:f.vn.ArrowLeft,size:u.S.Small})):r.createElement(r.Fragment,null)}function k(e){var t,n,a,u,d,f,v,g,b={columns:e.columns,data:e.data,disableSortBy:!e.enableSort,manualSortBy:e.manualSort,autoResetHiddenColumns:e.autoResetHiddenColumns,autoResetSortBy:e.autoResetSortBy,initialState:{sortBy:e.initialSortBy||[]}};e.initialSelectedRowIds&&(b.initialState={selectedRowIds:(v=e.initialSelectedRowIds,g={},v.forEach((function(e){return g[e]=!0})),g)}),e.getRowId&&(b.getRowId=e.getRowId);var y,E=o.useTable.apply(void 0,[b].concat((y=function(e){var t=[o.useSortBy,o.useRowSelect,"flex"===e.layout?o.useFlexLayout:o.useBlockLayout];return e.allowFiltering&&(t=[].concat(p(t),[o.useFilters])),e.allowGlobalFiltering&&(t=[].concat(p(t),[o.useGlobalFilter])),t}(Object.assign({},e)),function(e){if(Array.isArray(e))return h(e)}(y)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(y)||function(e,t){if(e){if("string"==typeof e)return h(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)?h(e,t):void 0}}(y)||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.")}()))),k=E.getTableProps,w=E.getTableBodyProps,C=E.headerGroups,N=E.rows,j=E.prepareRow,x=E.toggleAllRowsSelected,A=E.setGlobalFilter,T=E.setHiddenColumns,R=E.state.sortBy;function L(){return!N.length&&e.emptyState?e.emptyState:N.map((function(t){j(t);var n=function(t){var n,r,a,o,c,i=l.q.isFunction(null===(n=e.theme)||void 0===n?void 0:n.row)?e.theme.row(t):null!==(a=null===(r=e.theme)||void 0===r?void 0:r.row)&&void 0!==a?a:"";return t.isSelected&&(null===(o=e.theme)||void 0===o?void 0:o.selectedRow)&&(i+=" ".concat(null===(c=e.theme)||void 0===c?void 0:c.selectedRow)),e.onSelectRow&&(i+=" cursor-pointer"),e.enableSortableRows&&(i+=" cursor-grab"),i}(t),a=!!e.getRowAppLink&&e.getRowAppLink(t);function o(){e.onSelectRow&&(e.allowSelectMultipleRows||x(!1),e.onSelectRow(t),t.toggleRowSelected(!0))}function i(e,l){var i=function(e,t){return"dragAttributes"in e&&"dragListeners"in e?Object.assign(Object.assign(Object.assign({},e.dragAttributes),e.dragListeners),{"aria-roledescription":"Sortable row",ref:t}):{}}(e,l);return a?r.createElement("div",{role:"row",key:t.id},r.createElement(c.F,Object.assign({},e,i,{className:n,appLink:a}),O(t))):r.createElement("div",Object.assign({},e,i,{key:t.id,role:"row",className:n,onClick:o}),O(t))}var u=t.getRowProps();return e.enableSortableRows?r.createElement(s.W,{id:t.original.id,key:t.id,childProps:u,childComponent:r.forwardRef((function(e,t){return i(e,t)}))}):i(u)}))}function O(t){return t.cells.map((function(n){var a=function(t,n){var r,a,o="";return"function"==typeof(null===(r=e.theme)||void 0===r?void 0:r.cell)&&(o=e.theme.cell(t,n)),"string"==typeof(null===(a=e.theme)||void 0===a?void 0:a.cell)&&(o=e.theme.cell),e.onSelectCell&&(o+=" cursor-pointer"),o}(t,n);return r.createElement("div",Object.assign({key:n.column.id},n.getCellProps(),{className:a,onClick:function(){e.onSelectCell&&e.onSelectCell(n)}}),n.render("Cell"))}))}return r.useEffect((function(){e.onSort&&e.onSort(R)}),[R]),r.useEffect((function(){e.globalFilter&&A(e.globalFilter)}),[e.globalFilter]),r.useEffect((function(){e.hiddenColumns&&T(e.hiddenColumns)}),[e.hiddenColumns&&e.hiddenColumns.length]),r.createElement("div",Object.assign({},k(),{className:null!==(n=null===(t=e.theme)||void 0===t?void 0:t.table)&&void 0!==n?n:""}),r.createElement("div",{className:null!==(u=null===(a=e.theme)||void 0===a?void 0:a.header)&&void 0!==u?u:""},C.map((function(t){var n,a;return r.createElement("div",Object.assign({},t.getHeaderGroupProps(),{className:null!==(a=null===(n=e.theme)||void 0===n?void 0:n.headerRow)&&void 0!==a?a:""}),t.headers.map((function(t){var n,a;return r.createElement("div",Object.assign({},t.getHeaderProps(t.getSortByToggleProps()),{className:null!==(a=null===(n=e.theme)||void 0===n?void 0:n.headerCell)&&void 0!==a?a:""}),t.render("Header",{renderSortIndicator:function(){return r.createElement(S,{column:t,theme:e.theme})}}),!t.hideSortIndicator&&r.createElement(S,{column:t,theme:e.theme}))})))}))),r.createElement("div",Object.assign({},w(),{className:null!==(f=null===(d=e.theme)||void 0===d?void 0:d.body)&&void 0!==f?f:""}),e.enableSortableRows?r.createElement(i.Q,{ids:N.map((function(e){return e.original.id})),getDragOverlay:function(t){var n,a,o=N.findIndex((function(e){return e.original.id===t})),l=N[o];return r.createElement("div",Object.assign({},e,{className:(n=e.theme,a="g-0 ",n&&(a+=n.row),a),style:m}),O(l))},onSortEnd:e.onSortingRowsEnd},L()):L()))}function w(e){var t=e.enableSlider,n=e.scrollIncrement,o=e.scrollable,c=E(e,["enableSlider","scrollIncrement","scrollable"]),i=function(){var e,t,n=r.useRef(null),a=(e=r.useState(b(n)),t=2,function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,a,o,l,c=[],i=!0,s=!1;try{if(o=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;i=!1}else for(;!(i=(r=o.call(n)).done)&&(c.push(r.value),c.length!==t);i=!0);}catch(e){s=!0,a=e}finally{try{if(!i&&null!=n.return&&(l=n.return(),Object(l)!==l))return}finally{if(s)throw a}}return c}}(e,t)||v(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.")}()),o=a[0],c=a[1],i=l.q.throttle((function(){c(b(n))}),200),s=r.useCallback((function(e){var t;n.current&&(null===(t=n.current)||void 0===t||t.removeEventListener("scroll",i)),e&&(c(b(n)),e.addEventListener("scroll",i)),n.current=e}),[]);return r.useEffect((function(){(null==n?void 0:n.current)&&c(b(n))}),[n]),{ref:s,scrollState:o,scroll:function(e){var t;null===(t=n.current)||void 0===t||t.scrollBy({left:e,top:0,behavior:"smooth"})}}}(),s=i.ref,u=i.scrollState,m=i.scroll;if(o)return r.createElement(a.$B,{renderTrackHorizontal:function(){return r.createElement("div",{className:y.scrollbarTrack})},autoHeightMax:1e4,autoHeight:!0},r.createElement(k,Object.assign({},c)));if(!t)return r.createElement(k,Object.assign({},c));function f(e){m(n*("right"===e?1:-1))}return r.createElement("div",{className:"mx-n4 overflow-x-hidden overflow-y-hidden"},r.createElement("div",{className:"px-4"},r.createElement("div",{className:"position-relative"},r.createElement(d.W,{direction:d.f.Left,onClick:function(){return f("left")},hide:!u.canScrollLeft}),r.createElement("div",{className:"".concat(y.scrollContainer," ").concat(e.scrollContainerClassName),ref:s},r.createElement(k,Object.assign({},c))),r.createElement(d.W,{direction:d.f.Right,onClick:function(){return f("right")},hide:!u.canScrollRight}))))}w.defaultProps={scrollIncrement:250,scrollable:!1,layout:"flex"}},63112:(e,t,n)=>{n.d(t,{o:()=>o});var r=n(32735),a=n(14346),o=r.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(a.Z.partialTag);return r.createElement("div",{className:"mt-1"},r.createElement("span",{className:n}," "))}))},30699:(e,t,n)=>{n.d(t,{a:()=>o});var r=n(32735),a=n(16035);function o(e){var t=e.selectedItems.find((function(t){return t.id===e.data.id}))?"bg-gray-900 text-white":"bg-light";return r.createElement(a.z,{tag:e.data,appLink:e.appLink,tagClass:"no-decoration ".concat(t," lh-1"),onClick:function(){return e.onClick(e.data)}})}},91286:(e,t,n)=>{n.d(t,{v:()=>l});var r=n(32735),a=n(94644);function o(e){return e.map((function(e){return e.statusCode})).join(":")}function l(e,t,n){var l=Array.isArray(e)?e:[e];(0,r.useEffect)((function(){l.forEach((function(e){(0,a.r)(e.statusCode,t,n)}))}),[o(l),t,n])}},299:(e,t,n)=>{n.d(t,{X:()=>l});var r=n(32735),a=n(69217),o=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,c=t.persistNamespace,i=t.initialState?t.initialState:new Map,s=r.useRef(i),u=(0,a.N)(),d=(0,o.D)(e),m=(0,o.D)(c);function f(){s.current.clear(),u()}function p(e){return"number"==typeof e?e=e.toString():"string"!=typeof e&&(e=e[l].toString()),s.current.get(e)}function v(){return!!(null==e?void 0:e.length)&&e.every(p)}function g(e){e.forEach((function(e){s.current.set(e,!0)})),u()}return r.useEffect((function(){t.initialState||c&&m===c||(null==d?void 0:d.map((function(e){return e[l]})).join())!==(null==e?void 0:e.map((function(e){return e[l]})).join())&&f()}),[d,m,e,t.initialState]),r.useEffect((function(){var e;(null===(e=t.preselectedIds)||void 0===e?void 0:e.length)&&g(t.preselectedIds)}),[]),{onToggleBulk:function(){var t=!v();e.forEach((function(e){t?s.current.set(e[l].toString(),!0):s.current.delete(e[l].toString())})),u()},onToggleItem:function(e){var t=!s.current.get(e.toString());t?s.current.set(e.toString(),t):s.current.delete(e.toString()),u()},getSelected:function(){return Array.from(s.current.keys())},isChecked:p,bulkChecked:v(),deselectAll:function(){(null==e?void 0:e.length)&&(e.forEach((function(e){s.current.delete(e[l].toString())})),u())},hasSomeSelections:function(){return!!(null==e?void 0:e.length)&&!!e.find((function(e){return p(e)}))},setSelected:g,getSelectedCount:function(){return s.current.size},reset:f,getMap:function(){return s.current}}}},53088:(e,t,n)=>{n.r(t),n.d(t,{UserAuditLogView:()=>te});var r=n(32735),a=n(23481),o=n(57900),l=n(20354),c=n(75097),i=n(49935);const s={partialHeading:"rfiJl",partialJobCount:"h8k_u",partialCheckbox:"HkuOS",partialExportButton:"Iul7S",row:"mwigG",checkboxColumn:"Z5jLG",actionColumn:"rLxYh",usersColumn:"QZzab",dateColumn:"Wf_Jp",performedByColumn:"Ubtmj",seeMoreColumn:"XdP6u",heading:"kRMMH",action:"DvDvW",users:"goKpg",date:"ejYGb",performedBy:"NhjyL"};function u(){return r.createElement("div",{className:"d-flex striped-row rounded py-3 ".concat(s.row)},r.createElement("div",{className:"".concat(s.checkboxColumn," d-flex justify-content-center")},r.createElement("div",{className:"partial-loading-background ".concat(s.partialCheckbox," ms-0")})),r.createElement("div",{className:"".concat(s.actionColumn)},r.createElement("div",{className:"partial-loading-background ".concat(s.action)})),r.createElement("div",{className:"".concat(s.usersColumn)},r.createElement("div",{className:"partial-loading-background ".concat(s.users)})),r.createElement("div",{className:"".concat(s.dateColumn)},r.createElement("div",{className:"partial-loading-background ".concat(s.date)})),r.createElement("div",{className:"".concat(s.performedByColumn)},r.createElement("div",{className:"partial-loading-background ".concat(s.performedBy)})),r.createElement("div",{className:"".concat(s.seeMoreColumn)}," "))}function d(){return r.createElement("div",{className:"d-flex py-2 mb-1"},r.createElement("div",{className:"".concat(s.checkboxColumn)}," "),r.createElement("div",{className:"".concat(s.actionColumn)},r.createElement("div",{className:"partial-loading-background ".concat(s.heading)})),r.createElement("div",{className:"".concat(s.usersColumn)},r.createElement("div",{className:"partial-loading-background ".concat(s.heading)})),r.createElement("div",{className:"".concat(s.dateColumn)},r.createElement("div",{className:"partial-loading-background ".concat(s.heading)})),r.createElement("div",{className:"".concat(s.performedByColumn)},r.createElement("div",{className:"partial-loading-background ".concat(s.heading)})),r.createElement("div",{className:"".concat(s.seeMoreColumn)}," "))}function m(){return r.createElement(r.Fragment,null,r.createElement("div",{className:"mb-3 mt-n1"},r.createElement(d,null),r.createElement("div",{className:"striped-list no-full-width"},r.createElement(u,null),r.createElement(u,null),r.createElement(u,null),r.createElement(u,null),r.createElement(u,null),r.createElement(u,null),r.createElement(u,null),r.createElement(u,null),r.createElement(u,null),r.createElement(u,null),r.createElement(u,null),r.createElement(u,null))))}function f(){return r.createElement(r.Fragment,null,r.createElement("div",{className:"partial-loading-background mb-2 ".concat(s.partialHeading)}),r.createElement("div",{className:"pb-3"},r.createElement("div",{className:"d-flex justify-content-between"},r.createElement(i.b2,null),r.createElement("div",{className:"partial-loading-background ".concat(s.partialJobCount)}))),r.createElement("div",{className:"d-flex align-items-center pb-2"},r.createElement("div",{className:"partial-loading-background ".concat(s.partialCheckbox)}),r.createElement("div",{className:"ms-4 ps-3"},r.createElement(c.U,{count:3})),r.createElement("div",{className:"ms-auto partial-loading-background ".concat(s.partialExportButton)})),r.createElement(m,null))}var p=n(89422),v=n(89965),g=n(37395),b=n(2102),y=n(83345),h=n(76881),E=n(69883),S=n(299),k=n(75795),w=n(65858),C=n(10638),N=n(70848),j="userManager.userAuditLogFilters";function x(e){var t=[N.x$.SortBy([{id:"newest",name:a.T.getPhrase(j,"newest"),default:!0},{id:"oldest",name:a.T.getPhrase(j,"oldest")}]),N.x$.BulkActionType(),N.x$.UserType()];return r.createElement(C.J,{queryParams:e.queryParams,mainFilters:t,appLink:e.appLinks.auditLog,analyticsOptions:{entity:w.py.BatchJob,location:w.LZ.UserAuditLog},hideHeading:!0,hideDivider:!0,constantIndices:[]})}var A=n(6748),T=n(110),R=n(149),L=n(15611),O=n(97392),I=n(83914),B=n(86794);const M={seeMore:"uymuO"};function P(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}var F="userManager.userAuditLogTable",H=a.T.encloseNamespace(F),U={table:"striped-list no-full-width pb-3",header:"fw-semibold pb-1",headerCell:"px-2 py-1",row:"striped-row rounded audit-log-row",cell:"d-flex align-items-center py-3 px-2"};function J(e){var t,n,a,o,l=(t=e.jobs.data,n=e.isChecked,t.map((function(e){var t=T.O.format(e.dateCreated,"DD/MM/YYYY, hh:mmA");return{id:e.id,checked:n(e.id),actionType:R.b.mapJobTypeToName(e.type),userType:R.b.mapDataTypeToUserType(e.dataType),date:t,performedBy:{name:e.submitterName,submittedByClickView:e.submittedByClickView}}})));return r.createElement(A.i,{columns:(a=e.appLinks.bulkActionSummary,o=e.onToggleCheckbox,[{Header:"",id:"checkboxes",accessor:function(e){return{id:e.id,checked:e.checked}},Cell:function(e){return r.createElement("div",{className:"text-center mx-auto"},r.createElement(v.X,{id:e.value.id,checked:e.value.checked,onChange:function(){return o(e.value.id)}}))},width:10},{Header:H("action"),accessor:"actionType",id:"actionType",Cell:function(e){var t=e.value;return r.createElement("div",{className:"w-100"},t)},width:20},{Header:H("users"),accessor:"userType",id:"userType",Cell:function(e){var t=e.value;return r.createElement("div",{className:"w-100"},function(){switch(t){case h.Y.Learner:return H("students");case h.Y.Staff:return H("staff");case h.Y.Unknown:default:return H("unknown")}}())},width:10},{Header:H("date"),accessor:"date",id:"date",Cell:function(e){var t=e.value;return r.createElement("div",{className:"w-100"},t)},width:20},{Header:H("performedBy"),accessor:"performedBy",id:"performedBy",Cell:function(e){return r.createElement("div",{className:"w-100 d-flex align-items-center"},e.value.submittedByClickView&&r.createElement(B.b,{className:"me-1",size:I.S.Small},r.createElement(O.F,null)),e.value.name)},width:20},{Header:"",accessor:"id",id:"seeMore",Cell:function(e){var t,n,o=e.value;return r.createElement("div",{className:"w-100 d-flex justify-content-end"},r.createElement(L.F,{className:"info-link text-end me-3 ms-auto ".concat(M.seeMore),appLink:Object.assign(Object.assign({},a),{args:(null===(t=a.args)||void 0===t?void 0:t.length)?[].concat((n=a.args,function(e){if(Array.isArray(e))return P(e)}(n)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(n)||function(e,t){if(e){if("string"==typeof e)return P(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)?P(e,t):void 0}}(n)||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.")}()),[o]):[o]})},r.createElement(y.x,{namespace:F,phrase:"seeMore"})))},width:30}]),data:l,theme:U})}var G=n(97958),Y="userManager.auditLogEmptyState";function _(e){return r.createElement(G.u,null,r.createElement(G.u.Image,{src:e.imageUrl}),r.createElement(G.u.Heading,null,r.createElement(y.x,{namespace:Y,phrase:"heading"})),r.createElement(G.u.Info,null,r.createElement(y.x,{namespace:Y,phrase:"info"})))}const q={bulkCheckbox:"NMw5T"};function D(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}var W="userManager.auditLog",$=a.T.encloseNamespace(W);function V(e){var t,n,a,l,c=o.SG.get(p.K.AUDIT_LOG_REFERRER_KEY),s=(a=r.useState(!1),l=2,function(e){if(Array.isArray(e))return e}(a)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,a,o,l,c=[],i=!0,s=!1;try{if(o=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;i=!1}else for(;!(i=(r=o.call(n)).done)&&(c.push(r.value),c.length!==t);i=!0);}catch(e){s=!0,a=e}finally{try{if(!i&&null!=n.return&&(l=n.return(),Object(l)!==l))return}finally{if(s)throw a}}return c}}(a,l)||function(e,t){if(e){if("string"==typeof e)return D(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?D(e,t):void 0}}(a,l)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),u=s[0],d=s[1],m=(0,S.X)(e.jobs.data),f=(0,E.Z)();return r.createElement(r.Fragment,null,r.createElement("h1",{className:"h2"},r.createElement(y.x,{namespace:W,phrase:"heading"})),r.createElement("div",{className:"pb-3"},r.createElement("div",{className:"d-flex justify-content-between"},r.createElement(i.Oo,{breadcrumbs:[{name:$("settingsBreadcrumb"),appLink:e.appLinks.settings},{name:$(c===h.Y.Learner?"studentManager":"staffManager"),appLink:e.appLinks.userManager},{name:$("heading"),active:!0}]}),r.createElement("p",{className:"mb-0 fw-semibold"},r.createElement(y.x,{namespace:W,phrase:"totalJobs",options:{showing:e.jobs.data.length,smartCount:e.jobs.count}})))),r.createElement("div",{className:"d-flex align-items-center pb-2"},r.createElement(v.X,{className:q.bulkCheckbox,id:"bulk-audit-log-checkbox",checked:m.bulkChecked,onChange:m.onToggleBulk,indeterminate:m.hasSomeSelections()}),r.createElement("div",{className:"ms-4 ps-1"},r.createElement(x,{queryParams:e.queryParams,appLinks:e.appLinks})),r.createElement(b.m,{variant:"dark",className:"ms-auto",onClick:function(){if(!u){d(!0);var t=m.getSelected();e.onClickExport(t).then((function(){return f.success($("exportSuccess"))})).catch((function(){return f.error($("exportError"))})).finally((function(){return d(!1)}))}},disabled:!m.hasSomeSelections()||u,showSpinner:u},r.createElement(y.x,{namespace:W,phrase:"export"}))),(null===(t=e.jobs.data)||void 0===t?void 0:t.length)?r.createElement(J,{jobs:e.jobs,appLinks:e.appLinks,onToggleCheckbox:m.onToggleItem,isChecked:m.isChecked}):r.createElement(_,{imageUrl:e.emptyStateImageUrl}),!!(null===(n=e.jobs.pagination)||void 0===n?void 0:n.cursors)&&r.createElement(g.t,{className:"p-0 text-end pb-3",cursors:e.jobs.pagination.cursors,appLink:k.O.getCurrentRoute().appLink,buttonVariant:"outline-dark"}))}var z=n(91286),K=n(79612),Z=n(99742),X=n(29613),Q=n(18087),ee="userManager.userAuditLogView";function te(e){var t=o.SG.get(p.K.AUDIT_LOG_REFERRER_KEY),n=l.a.useBasicFetch(X.q.getJobs(e.queryParams));(0,z.v)(n),(0,K.M)({title:a.T.getPhrase(ee,"pageTitle")});var c=l.a.useGetFetchAsync(),i=(0,Q.Y)(t);return n.hasCompleted?r.createElement("div",{className:"px-3"},r.createElement(V,{jobs:n.data,appLinks:i,queryParams:e.queryParams,onClickExport:function(e){return c(X.q.sendJobReports(e))},emptyStateImageUrl:Z.W.EmptyStates.Search.RESULTS})):r.createElement("div",{className:"px-3"},r.createElement(f,null))}},29613:(e,t,n)=>{n.d(t,{q:()=>l});var r=n(99940),a=n(97395),o=n(149),l={createJob:function(e,t,n){return{url:"{gateway}/v1/batch/jobs",key:"create:job",type:r.k.POST,data:e,success:t,error:n}},getJobs:function(e){var t={},n=[],r=[];return e.cursor&&(t.cursor=e.cursor),e.sort&&("oldest"===e.sort?t.order="ASC":t.order="DESC"),e.bulkActionType?(n=Array.isArray(e.bulkActionType)?e.bulkActionType:[e.bulkActionType],t.type=n):t.type=o.O,e.userType&&(r=Array.isArray(e.userType)?e.userType:[e.userType],t.dataType=r),{url:a._.urlBuilder("{gateway}/v1/batch/jobs",t),key:"batch:jobs:".concat(e.cursor,":").concat(e.sort,":").concat(n.sort().join(":"),":").concat(r.sort().join(":"))}},getJob:function(e){return{url:"{gateway}/v1/batch/jobs/".concat(e),key:"job:".concat(e)}},getJobProgress:function(e,t,n){return{url:"{gateway}/v1/batch/jobs/".concat(e,"/progress"),key:"job:".concat(e,":progress"),invalidationKeys:"job:".concat(e,":progress"),success:t,error:n}},getJobResults:function(e,t,n,r,o){var l={status:t};return n&&(l.cursor=n),{url:a._.urlBuilder("{gateway}/v1/batch/jobs/".concat(e,"/results"),l),key:"job:".concat(e,":results:").concat(t,":").concat(n),success:r,error:o}},getYearGroupRolloverStatus:function(e){return{url:"{gateway}/v1/batch/validations/customers/".concat(e,"/year-group-roll-over"),key:"year:group:rollover:status"}},sendJobReports:function(e){return{url:"{gateway}/v1/batch/results/export",key:"send:job:reports:".concat(e.sort().join(":")),type:r.k.POST,data:{jobIds:e}}},getJobSummary:function(e){return{url:"{gateway}/v1/batch/jobs/".concat(e,"/summary"),key:"job:summary:".concat(e)}}}}}]);
2
+ //# sourceMappingURL=9266-f0ad8d5cb3-lite.chunk.js.map