@clickview/lite 0.70.1-dev.5 → 0.70.1-dev.6

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 (136) hide show
  1. package/dist/bundles.json +1 -1
  2. package/dist/css/{9583-lite-9eda71423d.chunk.css → 3878-lite-877e596a24.chunk.css} +3 -0
  3. package/dist/css/{5797-lite-1dfd2c337d.chunk.css → 5099-lite-7d7c063e62.chunk.css} +3 -0
  4. package/dist/css/{8191-lite-ee877f2ecd.chunk.css → 6984-lite-53c3fa4d18.chunk.css} +3 -0
  5. package/dist/css/{8723-lite-676baa8218.chunk.css → 7103-lite-ee0c975440.chunk.css} +3 -0
  6. package/dist/css/{7783-lite-1dfd2c337d.chunk.css → 7394-lite-7d7c063e62.chunk.css} +3 -0
  7. package/dist/css/7502-lite-9b2ed5bd56.chunk.css +4 -0
  8. package/dist/css/{5721-lite-9eda71423d.chunk.css → 7548-lite-877e596a24.chunk.css} +3 -0
  9. package/dist/css/{549-lite-b49bde8e4d.chunk.css → 7657-lite-ad909396f3.chunk.css} +3 -1
  10. package/dist/css/{6783-lite-e85973335b.chunk.css → 829-lite-27b58d07b3.chunk.css} +3 -0
  11. package/dist/css/{5635-lite-ee877f2ecd.chunk.css → 9673-lite-53c3fa4d18.chunk.css} +3 -0
  12. package/dist/scripts/1107-0fb4769540-lite.chunk.js +2 -0
  13. package/dist/scripts/1107-0fb4769540-lite.chunk.js.map +1 -0
  14. package/dist/scripts/1437-658ad1fe2b-lite.chunk.js +2 -0
  15. package/dist/scripts/1437-658ad1fe2b-lite.chunk.js.map +1 -0
  16. package/dist/scripts/1710-ef798f1e0d-lite.chunk.js +2 -0
  17. package/dist/scripts/1710-ef798f1e0d-lite.chunk.js.map +1 -0
  18. package/dist/scripts/2024-4fec8f175b-lite.chunk.js +2 -0
  19. package/dist/scripts/2024-4fec8f175b-lite.chunk.js.map +1 -0
  20. package/dist/scripts/2435-a846651e83-lite.chunk.js +2 -0
  21. package/dist/scripts/2435-a846651e83-lite.chunk.js.map +1 -0
  22. package/dist/scripts/2809-84ce060e14-lite.chunk.js +2 -0
  23. package/dist/scripts/2809-84ce060e14-lite.chunk.js.map +1 -0
  24. package/dist/scripts/3878-45fd0861cc-lite.chunk.js +2 -0
  25. package/dist/scripts/3878-45fd0861cc-lite.chunk.js.map +1 -0
  26. package/dist/scripts/4096-c834372efb-lite.chunk.js +2 -0
  27. package/dist/scripts/4096-c834372efb-lite.chunk.js.map +1 -0
  28. package/dist/scripts/4456-ada4977b41-lite.chunk.js +2 -0
  29. package/dist/scripts/4456-ada4977b41-lite.chunk.js.map +1 -0
  30. package/dist/scripts/4806-a05a2a3012-lite.chunk.js +2 -0
  31. package/dist/scripts/4806-a05a2a3012-lite.chunk.js.map +1 -0
  32. package/dist/scripts/5099-297f8cd028-lite.chunk.js +2 -0
  33. package/dist/scripts/5099-297f8cd028-lite.chunk.js.map +1 -0
  34. package/dist/scripts/5829-903613bbf0-lite.chunk.js +3 -0
  35. package/dist/scripts/5829-903613bbf0-lite.chunk.js.map +1 -0
  36. package/dist/scripts/5925-937fec8a93-lite.chunk.js +2 -0
  37. package/dist/scripts/5925-937fec8a93-lite.chunk.js.map +1 -0
  38. package/dist/scripts/6459-ac139cb154-lite.chunk.js +2 -0
  39. package/dist/scripts/6459-ac139cb154-lite.chunk.js.map +1 -0
  40. package/dist/scripts/6629-4edaed39c8-lite.chunk.js +3 -0
  41. package/dist/scripts/6629-4edaed39c8-lite.chunk.js.map +1 -0
  42. package/dist/scripts/6984-9d8b378bcc-lite.chunk.js +2 -0
  43. package/dist/scripts/6984-9d8b378bcc-lite.chunk.js.map +1 -0
  44. package/dist/scripts/7103-ef79582538-lite.chunk.js +2 -0
  45. package/dist/scripts/7103-ef79582538-lite.chunk.js.map +1 -0
  46. package/dist/scripts/7394-5448807e14-lite.chunk.js +2 -0
  47. package/dist/scripts/7394-5448807e14-lite.chunk.js.map +1 -0
  48. package/dist/scripts/7502-78b085caad-lite.chunk.js +2 -0
  49. package/dist/scripts/7502-78b085caad-lite.chunk.js.map +1 -0
  50. package/dist/scripts/7548-5eb0d3b7a0-lite.chunk.js +2 -0
  51. package/dist/scripts/7548-5eb0d3b7a0-lite.chunk.js.map +1 -0
  52. package/dist/scripts/7593-cc4e09c847-lite.chunk.js +2 -0
  53. package/dist/scripts/7593-cc4e09c847-lite.chunk.js.map +1 -0
  54. package/dist/scripts/7657-e302fda4f2-lite.chunk.js +2 -0
  55. package/dist/scripts/7657-e302fda4f2-lite.chunk.js.map +1 -0
  56. package/dist/scripts/8057-431c6be34c-lite.chunk.js +2 -0
  57. package/dist/scripts/8057-431c6be34c-lite.chunk.js.map +1 -0
  58. package/dist/scripts/8224-b9b5d3b1a5-lite.chunk.js +2 -0
  59. package/dist/scripts/8224-b9b5d3b1a5-lite.chunk.js.map +1 -0
  60. package/dist/scripts/829-aff9937989-lite.chunk.js +3 -0
  61. package/dist/scripts/829-aff9937989-lite.chunk.js.map +1 -0
  62. package/dist/scripts/{9250-ec244ab17a-lite.chunk.js → 8723-708f2373d6-lite.chunk.js} +3 -3
  63. package/dist/scripts/{9250-ec244ab17a-lite.chunk.js.map → 8723-708f2373d6-lite.chunk.js.map} +1 -1
  64. package/dist/scripts/8960-c159492ba3-lite.chunk.js +2 -0
  65. package/dist/scripts/8960-c159492ba3-lite.chunk.js.map +1 -0
  66. package/dist/scripts/9673-8a2740611a-lite.chunk.js +2 -0
  67. package/dist/scripts/9673-8a2740611a-lite.chunk.js.map +1 -0
  68. package/dist/scripts/9882-f1a9cc55ec-lite.chunk.js +2 -0
  69. package/dist/scripts/9882-f1a9cc55ec-lite.chunk.js.map +1 -0
  70. package/dist/scripts/{bundle-d2cf17c78d.min.js → bundle-5a89651ec2.min.js} +3 -3
  71. package/dist/scripts/{bundle-d2cf17c78d.min.js.map → bundle-5a89651ec2.min.js.map} +1 -1
  72. package/package.json +1 -1
  73. package/dist/css/7428-lite-e2d7497beb.chunk.css +0 -8
  74. package/dist/scripts/1565-ba78a2a25c-lite.chunk.js +0 -2
  75. package/dist/scripts/1565-ba78a2a25c-lite.chunk.js.map +0 -1
  76. package/dist/scripts/2024-abf6cf1842-lite.chunk.js +0 -2
  77. package/dist/scripts/2024-abf6cf1842-lite.chunk.js.map +0 -1
  78. package/dist/scripts/2072-50b656cb3b-lite.chunk.js +0 -2
  79. package/dist/scripts/2072-50b656cb3b-lite.chunk.js.map +0 -1
  80. package/dist/scripts/2574-02faf4a2d2-lite.chunk.js +0 -2
  81. package/dist/scripts/2574-02faf4a2d2-lite.chunk.js.map +0 -1
  82. package/dist/scripts/396-2ffc09cc70-lite.chunk.js +0 -2
  83. package/dist/scripts/396-2ffc09cc70-lite.chunk.js.map +0 -1
  84. package/dist/scripts/4377-001a8ee263-lite.chunk.js +0 -2
  85. package/dist/scripts/4377-001a8ee263-lite.chunk.js.map +0 -1
  86. package/dist/scripts/4806-c2dce3650d-lite.chunk.js +0 -2
  87. package/dist/scripts/4806-c2dce3650d-lite.chunk.js.map +0 -1
  88. package/dist/scripts/4948-30af9a446d-lite.chunk.js +0 -2
  89. package/dist/scripts/4948-30af9a446d-lite.chunk.js.map +0 -1
  90. package/dist/scripts/549-2d591052e3-lite.chunk.js +0 -2
  91. package/dist/scripts/549-2d591052e3-lite.chunk.js.map +0 -1
  92. package/dist/scripts/5635-6e2559f04d-lite.chunk.js +0 -2
  93. package/dist/scripts/5635-6e2559f04d-lite.chunk.js.map +0 -1
  94. package/dist/scripts/5679-80c1d8434e-lite.chunk.js +0 -2
  95. package/dist/scripts/5679-80c1d8434e-lite.chunk.js.map +0 -1
  96. package/dist/scripts/5721-2141ed4fb6-lite.chunk.js +0 -2
  97. package/dist/scripts/5721-2141ed4fb6-lite.chunk.js.map +0 -1
  98. package/dist/scripts/5797-f84ce545b9-lite.chunk.js +0 -2
  99. package/dist/scripts/5797-f84ce545b9-lite.chunk.js.map +0 -1
  100. package/dist/scripts/581-fe733617bd-lite.chunk.js +0 -2
  101. package/dist/scripts/581-fe733617bd-lite.chunk.js.map +0 -1
  102. package/dist/scripts/5829-689f5be5d1-lite.chunk.js +0 -3
  103. package/dist/scripts/5829-689f5be5d1-lite.chunk.js.map +0 -1
  104. package/dist/scripts/6046-5652117548-lite.chunk.js +0 -2
  105. package/dist/scripts/6046-5652117548-lite.chunk.js.map +0 -1
  106. package/dist/scripts/6629-910e316a83-lite.chunk.js +0 -3
  107. package/dist/scripts/6629-910e316a83-lite.chunk.js.map +0 -1
  108. package/dist/scripts/6783-7efd15103a-lite.chunk.js +0 -3
  109. package/dist/scripts/6783-7efd15103a-lite.chunk.js.map +0 -1
  110. package/dist/scripts/7064-f5e8bc71bc-lite.chunk.js +0 -2
  111. package/dist/scripts/7064-f5e8bc71bc-lite.chunk.js.map +0 -1
  112. package/dist/scripts/7428-546d62999f-lite.chunk.js +0 -2
  113. package/dist/scripts/7428-546d62999f-lite.chunk.js.map +0 -1
  114. package/dist/scripts/7482-9016f79093-lite.chunk.js +0 -2
  115. package/dist/scripts/7482-9016f79093-lite.chunk.js.map +0 -1
  116. package/dist/scripts/7757-9b72774917-lite.chunk.js +0 -2
  117. package/dist/scripts/7757-9b72774917-lite.chunk.js.map +0 -1
  118. package/dist/scripts/7783-18da4064c0-lite.chunk.js +0 -2
  119. package/dist/scripts/7783-18da4064c0-lite.chunk.js.map +0 -1
  120. package/dist/scripts/8191-ff27deee6c-lite.chunk.js +0 -2
  121. package/dist/scripts/8191-ff27deee6c-lite.chunk.js.map +0 -1
  122. package/dist/scripts/8672-094d54cbbd-lite.chunk.js +0 -2
  123. package/dist/scripts/8672-094d54cbbd-lite.chunk.js.map +0 -1
  124. package/dist/scripts/8723-c3aaa1643a-lite.chunk.js +0 -2
  125. package/dist/scripts/8723-c3aaa1643a-lite.chunk.js.map +0 -1
  126. package/dist/scripts/9583-3b2623e754-lite.chunk.js +0 -2
  127. package/dist/scripts/9583-3b2623e754-lite.chunk.js.map +0 -1
  128. /package/dist/css/{4377-lite-856c02f000.chunk.css → 1107-lite-856c02f000.chunk.css} +0 -0
  129. /package/dist/css/{581-lite-a1cdc302ab.chunk.css → 1437-lite-a1cdc302ab.chunk.css} +0 -0
  130. /package/dist/css/{7757-lite-856c02f000.chunk.css → 4456-lite-856c02f000.chunk.css} +0 -0
  131. /package/dist/css/{9250-lite-37216d4207.chunk.css → 8723-lite-37216d4207.chunk.css} +0 -0
  132. /package/dist/scripts/{5829-689f5be5d1-lite.chunk.js.LICENSE.txt → 5829-903613bbf0-lite.chunk.js.LICENSE.txt} +0 -0
  133. /package/dist/scripts/{6629-910e316a83-lite.chunk.js.LICENSE.txt → 6629-4edaed39c8-lite.chunk.js.LICENSE.txt} +0 -0
  134. /package/dist/scripts/{6783-7efd15103a-lite.chunk.js.LICENSE.txt → 829-aff9937989-lite.chunk.js.LICENSE.txt} +0 -0
  135. /package/dist/scripts/{9250-ec244ab17a-lite.chunk.js.LICENSE.txt → 8723-708f2373d6-lite.chunk.js.LICENSE.txt} +0 -0
  136. /package/dist/scripts/{bundle-d2cf17c78d.min.js.LICENSE.txt → bundle-5a89651ec2.min.js.LICENSE.txt} +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scripts/7394-5448807e14-lite.chunk.js","mappings":"8JAiBA,SAASA,EACPC,EACAC,GAEA,MAAO,CACLC,cAAeF,EAAYG,GAC3BC,kBAAmBJ,EAAYK,WAC/BC,UAAW,CAAEC,MAAON,EAAOM,MAAOC,IAAKP,EAAOO,KAC9CC,QAASR,EAAOS,OAChBC,oBAAqBV,EAAOW,QAEhC,CAEO,IAAMC,EAA6B,CAMxCC,qBAAoB,SAClBC,EACAC,EACAhB,EACAC,EACAgB,EACAC,EACAC,EACAC,GAEA,MAAO,CACLC,IAAKJ,EAAoB,gDACkBF,EAAa,qBAAaC,GAAqB,gDAC/CD,EAAa,qBAAaC,GACrEM,KAAK,OAAuB,0BAAD,OAA2BP,EAAa,YAAIC,GAAyBf,GAChGsB,KAAMxB,EAA4BC,EAAaC,GAC/CuB,KAAM,SACNC,WAAW,EACXP,QAAAA,EACAC,MAAAA,EACAC,OAAAA,EAEJ,EAMAM,KAAI,SACFX,EACAC,EACAW,EACAJ,EACAL,EACAC,EACAC,GAEA,MAAO,CACLC,IAAK,oCAAF,OAAsCM,GACzCL,IAAK,eAAF,OAAiBK,EAAQ,YAAIJ,EAAKK,UACrCJ,KAAM,QACND,KAAAA,EACAE,WAAW,EACXI,iBAAkB,0BAAF,OAA4Bd,EAAa,YAAIC,GAC7DE,QAAAA,EACAC,MAAAA,EACAC,OAAAA,EAEJ,EAEAU,eAAc,SAACP,GACb,MAAO,CACLF,IAAK,gEACLC,IAAK,+BACLE,KAAM,SACND,KAAAA,EAEJ,EAEAQ,yBAAwB,SAACR,GACvB,MAAO,CACLF,IAAK,6CACLC,IAAK,6BACLC,KAAAA,EACAC,KAAM,SACNC,WAAW,EAEf,E,2FC7FIO,EAAY,qBADA,yBAuBZ,SAAUC,EAAkBC,EAAyBC,GACzD,OAAKD,EAGAC,GAGE,SA3BqBhC,EA2BqB,cAAe+B,EAAOA,EAAKE,YAAcF,EAAK/B,GAlBzFkC,GAAQ,GAAD,OAAIlC,GAAE,OAAGmC,KAAKC,OAAO,IAAIC,MAAQC,aAAe,IAEtD,CACLC,aAAc,CAAE,KAAQ,MACxBC,UAAW,IACXC,OAAQ,EACRC,MAAO,UACPR,KAAAA,KASO,cAAeH,EAAOA,EAAKE,YAAc,gBAAuBF,GAHhE,GAtBX,IAA8B/B,EAStBkC,CAmBR,CAEM,SAAUS,EAAeC,EAAmBC,GAChD,IAAMC,EAAW,CACfF,UAAWA,EACXX,YAAaJ,EAAU,kBAGzB,OAAKe,GAAcC,GAGCA,EAAaD,IAFxBE,CAQX,CAEM,SAAUC,EAAqBC,EAAwBH,GAC3D,OAAIG,EAAOjB,KACFiB,EAAOjB,KAETY,EAAeK,EAAOJ,UAAWC,EAC1C,C,sJC3CM,SAAUI,EACdC,EACAC,EACAC,GAEA,IAAMC,EAAwB,CAC5BC,gBAAiB,GACjBC,SAAU,GACVC,UAAW,GACXC,UAAW,GACXC,aAAc,IAKVC,GAFe,OAAgBT,GAEAT,OAErCU,EAAQS,SAASC,SAAQ,SAAAC,GACvB,IAAMC,EAAc,OAAH,wBACZD,GAAC,CACJE,QAASC,EAAyBf,EAAaY,KAG7CC,EAAYC,QAAQE,gBACtBb,EAAOC,gBAAgBa,KAAKJ,GAI1B,SAAiBD,EAAEX,SAASiB,SAAS3B,SAAWkB,GAClDN,EAAOI,UAAUU,KAAKJ,GAMpBA,EAAYC,QAAQK,kBAAmBjB,aAAc,EAAdA,EAAgBkB,OAAQ,WACjEjB,EAAOG,UAAUW,KAAKJ,GAEpBA,EAAYC,QAAQK,iBAAkBjB,aAAc,EAAdA,EAAgBmB,WAAY,eACpElB,EAAOE,SAASY,KAAKJ,IARrBV,EAAOK,aAAaS,KAAKJ,EAS7B,IAEA,IAAMS,EAAiB,WAAmBnB,EAAOE,UAAU,SAAAO,GAAC,OAAIA,EAAEE,QAAQK,cAAc,IAClFI,EAAkB,WAAmBpB,EAAOG,WAAW,SAAAM,GAAC,OAAKA,EAAEE,QAAQK,cAAc,IAE3F,OAAO,OAAP,wBACKhB,GAAM,CACTE,SAAUiB,EACVhB,UAAWiB,GAEf,CAEM,SAAUC,EAAmBxB,EAA0ByB,GAE3D,OAD8B,QAAoBzB,GACrB0B,MAAK,SAAAC,GAAC,OAAIA,EAAE7E,GAAG8E,aAAeH,EAAcG,UAAU,GACrF,CAOM,SAAUC,EAAkBC,GAChC,MAAO,GAAP,OAAUA,EAAOC,WAAU,YAAID,EAAOvD,SACxC,CAEM,SAAUyD,EACdP,EACAQ,EACAC,GAEA,IAAMpC,GAAS,QAAiBmC,GAC1BE,GAAkB,QAAkBV,EAAe3B,GAMzD,OAJwBqC,aAAe,EAAfA,EAAiBC,QAAQC,OAAM,SAAAC,G,MACrD,OAA0C,QAAnC,EAAAJ,EAAcL,EAAkBS,WAAG,eAAEC,UAAW,WACzD,KAGS,aAEiBJ,aAAe,EAAfA,EAAiBC,QAAQC,OAAM,SAAAC,G,MACvD,OAA0C,QAAnC,EAAAJ,EAAcL,EAAkBS,WAAG,eAAEC,UAAW,aACzD,KAGS,mBADT,CAEF,CAEM,SAAUC,EACdC,EACAxC,GAEA,IAAMyC,EAAczC,EAAQS,SAASnB,OACjCoD,EAAa,EACbC,EAAW,EACXC,EAAa,EACb7B,EAAkB,EAClBE,EAAW,EA8Bf,OA5BAjB,EAAQS,SAASC,SAAQ,SAAAC,GACvB,IAAMd,GAAS,QAAiBc,GAEhC,GAAKd,EAAL,CAGAoB,GAAsBN,EAAEX,QAAQV,OAEhC,IAAMuD,EAAc,yBAAkDL,EAAa3C,GAE/EgD,IAAgB,aAClBH,IAEEG,IAAgB,gBAClBD,IAEEC,IAAgB,qBAClB9B,IAEE8B,IAAgB,gBAClBF,GAhBM,CAiBV,IAOO,CACLzB,eALqBuB,EAAc,EACjCC,EAAaD,EACb,EAIFK,QAASJ,EACTC,SAAAA,EACAC,WAAAA,EACA7B,gBAAAA,EACAE,SAAAA,EAEJ,CAEM,SAAUH,EAAyBf,EAA0BiC,GACjE,IAAMnC,GAAS,QAAiBmC,GAE1Be,GAAe,OAAgBhD,GAE/BS,EAAkBuC,EAAazD,OAEjCoD,EAAa,EACb3B,EAAkB,EAEtBgC,EAAarC,SAAQ,SAAAgB,GACnB,IAAMmB,EAAc,yBAAkDnB,EAAG7B,GAErEgD,IAAgB,aAClBH,IAEEG,IAAgB,qBAClB9B,GACJ,IAEA,IAAMG,EAAiBV,EAAkB,EAAIkC,EAAalC,EAAkB,EAQtEwC,EAAiB,IAAIC,IAAIF,EAAaG,KAAI,SAAAxB,GAAC,OAAIA,EAAE7E,EAAE,KACnDsG,EAAuBtD,EAAOoB,SAAStE,QAAO,SAAA0F,GAAI,MAAC,QAAEW,EAAeI,IAAiB,QAAb,EAAAf,aAAC,EAADA,EAAGF,QAAQ,UAAE,eAAEL,WAAW,IAAExC,OAE1G,MAAO,CACLqD,SAAU9C,EAAOoB,SAAS3B,OAC1B2B,SAAUe,EAAehC,QAAQV,OACjCsD,WAAYpC,EAAkB2C,EAC9BjC,eAAAA,EACA4B,QAASJ,EACT3B,gBAAAA,EAEJ,C,2CCjMO,IAAMsC,EAA0C,CACrDlC,KAAM,IACNC,SAAU,IAGCkC,EAA0C,CACrDnC,KAAM,GACNC,SAAU,G,mCCVL,IAAMmC,EAAuB,CAClCxD,YAAW,WACT,MAAO,CACLhC,IAAK,mCACLC,IAAK,mBACLG,WAAW,EAEf,EAEAqF,oBAAmB,WACjB,MAAO,CACLzF,IAAK,4CACLC,IAAK,4BACLG,WAAW,EAEf,EAEAsF,mBAAkB,WAChB,MAAO,CACL1F,IAAK,2CACLC,IAAK,2BACLG,WAAW,EAEf,EAEAuF,WAAU,WACR,MAAO,CACL3F,IAAK,mCACLC,IAAK,mBACLG,WAAW,EAEf,EAEAwF,MAAK,WACH,MAAO,CACL5F,IAAK,6BACLC,IAAK,aACLG,WAAW,EAEf,EAEAyF,kBAAiB,WACf,MAAO,CACL7F,IAAK,0CACLC,IAAK,0BACLG,WAAW,EAEf,EAEA0F,iBAAgB,WACd,MAAO,CACL9F,IAAK,yCACLC,IAAK,yBACLG,WAAW,EAEf,E,kBCvDI,SAAU2F,EAAuBC,EAAiBpH,EAAgCqH,GACtF,IAAIhG,EAAM,GAAH,OAAM+F,EAAO,YAAIpH,EAAOM,MAAK,YAAIN,EAAOO,KAEzC+G,EAAYC,MAAMC,QAAQxH,EAAOS,QAAUT,EAAOS,OAAOgH,OAAOC,KAAK,KAAO1H,EAAOS,OACnFkH,EAAaJ,MAAMC,QAAQxH,EAAOW,SAAWX,EAAOW,QAAQ8G,OAAOC,KAAK,KAAO1H,EAAOW,QAW5F,OATI2G,IACFjG,GAAO,IAAJ,OAAQiG,IAETK,IACFtG,GAAO,IAAJ,OAAQsG,IAETN,IACFhG,GAAO,IAAJ,OAAQgG,IAENhG,CACT,C,uFCPauG,EAAiB,CAO5BC,aAAY,SAACC,EAAoBC,GAC/B,IAAQC,EAAY,sBAAZA,QAEJC,EAA2C,iBAApBD,EAAQF,OAC/B,8BAA0CE,EAAQF,QAClDE,EAAQF,OAERC,EAAQG,eACVD,EAAgB,SAAkBA,EAAeF,EAAQG,eAE3D,IAAMC,GAAgBJ,aAAO,EAAPA,EAASK,OAC5B,+BAAMH,GAAkBH,GACvBA,EAEEO,EAAiB,OAAH,wBACfL,GAAO,CACVF,OAAQK,IAMN,YAAqBH,EAASK,IAGlC,eAA2BA,EAAgB,SAAkBN,EAAS,CAAE,QAAS,iBACnF,E,qUCzBF,IACMhG,EAAY,qBADA,2CAQZ,SAAUuG,EAAqCC,G,YAC5CC,G,GAAkB,OAAsB,qB,EAAoC,E,o4BAA9D,IAErB,SAEA,IAAMC,EAAS,kBAA6B,cAEtC5B,EAAsB,kBAC1B,2BAGIzD,EAAc,kBAAkC,mBAEhDsF,EAAwB,+BACxBC,EAAyB,gCAEzBtF,EAAU,kBAA2C,2BAE3D,OAAmB,CAAEuF,MAAO/B,EAAoBvF,KAAOS,EAAU,YAAa,CAAE8G,MAA+B,QAAxB,EAAAhC,EAAoBvF,YAAI,eAAEwH,OAAU,OAE3H,IAAMC,EAAgB3F,EAAY9B,MAAQuF,EAAoBvF,QAAU+B,EAAQ/B,KAE1EwG,EAAS,OAAH,wBACPY,GACAC,GAGL,OACE,uBAAKK,UAAU,QACb,gBAAC,IAAc,CACbC,MAAM,QAAuD,QAAxB,EAAApC,EAAoBvF,YAAI,eAAEpB,GAAI,YAAa4H,GAChFe,MAAOhC,EAAoBvF,KAC3BqH,uBAAwBA,EACxBO,QAAM,IAGR,gBAAC,IAA4B,CAC3B9F,YAAaA,EAAY9B,KACzBuF,oBAAqBA,EAAoBvF,KACzCuD,cAAe0D,EAAM1D,cACrB4D,OAAQA,EAAOnH,KACf6H,OAAQZ,EAAMY,OACdC,WAAY/F,EAAQ+F,YAAchG,EAAYgG,WAC9CZ,eAAgBA,EAChBnF,QAASA,EAAQ/B,KACjByH,cAAeA,EACfG,QAAM,IAId,C","sources":["file:///app/packages/libs/shared/src/apps/analytics/flight-requests/InteractiveResultsRequests.ts","file:///app/packages/libs/shared/src/apps/analytics/utils/AnonymiseUserUtils.ts","file:///app/packages/libs/shared/src/apps/analytics/utils/InteractiveUtils.ts","file:///app/packages/libs/shared/src/constants/ScoreThresholds.ts","file:///app/packages/libs/shared/src/flight-requests/InsightsDemoRequests.ts","file:///app/packages/libs/shared/src/utils/AnalyticsRequestUtils.ts","file:///app/packages/libs/shared/src/utils/AppRouteHelper.ts","file:///app/packages/projects/lite/src/apps/my-shares/views/demo/questions/InteractiveInsightsQuestionsDemoView.tsx"],"sourcesContent":["import { HttpVerbs } from 'libs/common/backbone/enums/HttpVerbs';\nimport { Flight } from 'libs/common/react/index';\n\nimport { MarkInteractiveAnswer } from 'libs/shared/apps/analytics/interfaces/MarkInteractiveAnswer';\nimport { InteractiveResultsReport } from 'libs/shared/apps/analytics/interfaces/requests/InteractiveResultsReport';\nimport { InteractivesPendingReviewsRequest } from 'libs/shared/apps/analytics/interfaces/requests/InteractivesPendingReviewsRequest';\nimport { AnalyticsRequestFilter, CurrentUser, InteractiveResultSet } from 'libs/shared/interfaces';\nimport { getAnalyticsRequestKey } from 'libs/shared/utils/AnalyticsRequestUtils';\n\ninterface InteractiveResultFilters {\n currentUserId: string;\n currentCustomerId: string;\n dateRange?: { start: string, end: string }\n userIds?: string | string[];\n classroomsAndGroups?: string | string[];\n}\n\nfunction getInteractiveResultFilters(\n currentUser: CurrentUser,\n filter: AnalyticsRequestFilter\n): InteractiveResultFilters {\n return {\n currentUserId: currentUser.id,\n currentCustomerId: currentUser.customerId,\n dateRange: { start: filter.start, end: filter.end },\n userIds: filter.userId,\n classroomsAndGroups: filter.groupId\n };\n}\n\nexport const InteractiveResultsRequests = {\n /** \n * This endpoint returns data with a lot of duplicated ids,\n * e.g. student answers to the same question will have the same id.\n * Because of that, we don't normalize.\n */\n interactiveResultSet(\n interactiveId: string,\n interactiveMetadataId: string,\n currentUser: CurrentUser,\n filter: AnalyticsRequestFilter,\n includePublicResults: boolean,\n success?: (data: InteractiveResultSet) => void,\n error?: (data: any) => void,\n always?: () => void\n ): Flight.Request {\n return {\n url: includePublicResults ?\n `/api/domain/v3/analytics/interactives/${interactiveId}/metadata/${interactiveMetadataId}` :\n `/api/domain/v2/analytics/interactives/${interactiveId}/metadata/${interactiveMetadataId}`,\n key: getAnalyticsRequestKey(`interactive:result:set:${interactiveId}:${interactiveMetadataId}`, filter),\n data: getInteractiveResultFilters(currentUser, filter),\n type: HttpVerbs.POST,\n normalize: false,\n success,\n error,\n always\n };\n },\n \n /**\n * As the response from `interactiveResultSet` isn't normalised, we need to invalidate the cache\n * to update the results data.\n */\n mark(\n interactiveId: string,\n interactiveMetadataId: string,\n answerId: string,\n data: MarkInteractiveAnswer,\n success?: () => void,\n error?: (data: any) => void,\n always?: () => void\n ): Flight.Request {\n return {\n url: `/api/domain/v1/analytics/answers/${answerId}`,\n key: `mark:answer:${answerId}:${data.resultId}`,\n type: HttpVerbs.PUT,\n data,\n normalize: false,\n invalidationKeys: `interactive:result:set:${interactiveId}:${interactiveMetadataId}`,\n success,\n error,\n always\n };\n },\n\n pendingReviews(data: InteractivesPendingReviewsRequest): Flight.Request {\n return {\n url: `/api/domain/v1/analytics/interactives/pending-reviews/summary`,\n key: `interactives:pending:reviews`,\n type: HttpVerbs.POST,\n data\n };\n },\n\n interactiveResultsReport(data: InteractiveResultsReport): Flight.Request {\n return {\n url: '{gateway}/v2/analytics/interactives/report',\n key: 'interactive:results:report',\n data,\n type: HttpVerbs.POST,\n normalize: false\n };\n }\n};","import { animals, colors, Config as UniqueNamesConfig, uniqueNamesGenerator } from 'unique-names-generator';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { AnonSession, AnonSessions } from 'libs/shared/apps/analytics/hooks/UseAnonSessions';\nimport { UserOrAnonSession } from 'libs/shared/apps/analytics/interfaces/UserOrAnonSession';\nimport { StudentResults } from 'libs/shared/interfaces';\nimport { UserHelper } from 'libs/shared/utils/UserHelper';\n\nconst namespace = 'shared.analyticsUtils';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nfunction getUniqueNamesConfig(id: string): UniqueNamesConfig {\n /**\n * Generate a seed that is unique to each user but changes every 5 minutes.\n * \n * We use a seed so that if the same user's name is anonymised multiple times\n * in quick succession (e.g. multiple renders), the same name will be returned each time.\n * \n * We change the seed every 5 minutes so that students don't always have the same name.\n */\n const seed = +`${id}${Math.floor((new Date()).getMinutes() / 5)}`;\n\n return {\n dictionaries: [ colors, animals ],\n separator: ' ',\n length: 2,\n style: 'capital',\n seed\n };\n}\n\nexport function anonymiseUserName(user: UserOrAnonSession, shouldAnonymise: boolean): string {\n if (!user)\n return '';\n\n if (!shouldAnonymise)\n return 'sessionId' in user ? user.sessionName : UserHelper.getFullName(user);\n\n return uniqueNamesGenerator(getUniqueNamesConfig('sessionId' in user ? user.sessionName : user.id));\n}\n\nexport function getAnonSession(sessionId: string, anonSessions: AnonSessions): AnonSession {\n const fallback = {\n sessionId: sessionId,\n sessionName: getPhrase('anonymousUser')\n };\n\n if (!sessionId || !anonSessions)\n return fallback;\n\n const anonSession = anonSessions[sessionId];\n\n if (anonSession)\n return anonSession;\n\n return fallback;\n}\n\nexport function getUserOrAnonSession(result: StudentResults, anonSessions: AnonSessions): UserOrAnonSession {\n if (result.user)\n return result.user;\n\n return getAnonSession(result.sessionId, anonSessions);\n}\n","import { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\n\nimport { MarkedAnswerHash } from 'libs/shared/apps/analytics/hooks/UseMarkAnswers';\nimport { ResultsSummary } from 'libs/shared/apps/analytics/interfaces/ResultsSummary';\nimport { StudentResultsWithSummary } from 'libs/shared/apps/analytics/interfaces/StudentResultsWithSummary';\nimport { ScoreThresholdDefaults, ScoreThresholds } from 'libs/shared/constants/ScoreThresholds';\nimport { InteractionCorrectness } from 'libs/shared/enums/InteractionCorrectness';\nimport { InteractiveAnswerStatus } from 'libs/shared/enums/InteractiveAnswerStatus';\nimport { Interaction, StudentAnswer, StudentResults } from 'libs/shared/interfaces';\nimport { Interactive, InteractiveResultSet } from 'libs/shared/interfaces';\nimport { InteractiveCorrectnessHelper } from 'libs/shared/utils/InteractiveCorrectnessHelper';\nimport { flattenInteractions, getInteractions, getStudentAttempt, getStudentResult } from 'libs/shared/utils/InteractiveHelper';\n\ninterface StudentGroups {\n markingRequired: StudentResultsWithSummary[];\n lowScore: StudentResultsWithSummary[];\n highScore: StudentResultsWithSummary[];\n completed: StudentResultsWithSummary[];\n notCompleted: StudentResultsWithSummary[];\n}\n\nexport function groupStudents(\n interactive: Interactive,\n results: InteractiveResultSet,\n scoreThreshold?: ScoreThresholds\n): StudentGroups {\n const groups: StudentGroups = {\n markingRequired: [],\n lowScore: [],\n highScore: [],\n completed: [],\n notCompleted: []\n };\n\n const interactions = getInteractions(interactive);\n\n const numInteractions = interactions.length;\n \n results.students.forEach(s => {\n const withSummary = {\n ...s,\n summary: getStudentResultsSummary(interactive, s)\n };\n \n if (withSummary.summary.awaitingMarking) {\n groups.markingRequired.push(withSummary);\n return;\n }\n\n if (ArrayHelper.last(s.results).attempts.length === numInteractions) {\n groups.completed.push(withSummary);\n } else {\n groups.notCompleted.push(withSummary);\n return;\n }\n \n if (withSummary.summary.percentCorrect >= (scoreThreshold?.HIGH || ScoreThresholdDefaults.HIGH))\n groups.highScore.push(withSummary);\n \n if (withSummary.summary.percentCorrect < (scoreThreshold?.MODERATE || ScoreThresholdDefaults.MODERATE))\n groups.lowScore.push(withSummary);\n });\n \n const sortedLowScore = ArrayHelper.sortBy(groups.lowScore, s => s.summary.percentCorrect);\n const sortedHighScore = ArrayHelper.sortBy(groups.highScore, s => -s.summary.percentCorrect);\n \n return {\n ...groups,\n lowScore: sortedLowScore,\n highScore: sortedHighScore\n };\n}\n\nexport function getInteractionById(interactive: Interactive, interactionId: string): Interaction {\n const flattenedInteractions = flattenInteractions(interactive);\n return flattenedInteractions.find(i => i.id.toString() === interactionId.toString());\n}\n\n/**\n * We need to use the question and result ids as a list of one student's responses\n * to multiple questions will all have the same result id and a list of multiple\n * students responses to one question will all have the same questionId.\n */\nexport function getMarkedAnswerId(answer: StudentAnswer): string {\n return `${answer.questionId}:${answer.resultId}`;\n}\n\nexport function getMarkedStatus(\n interactionId: string,\n studentResults: StudentResults,\n markedAnswers: MarkedAnswerHash\n): InteractiveAnswerStatus {\n const result = getStudentResult(studentResults);\n const studentResponse = getStudentAttempt(interactionId, result);\n\n const isMarkedCorrect = studentResponse?.answers.every(a => {\n return markedAnswers[getMarkedAnswerId(a)]?.status === InteractiveAnswerStatus.Correct;\n });\n\n if (isMarkedCorrect)\n return InteractiveAnswerStatus.Correct;\n\n const isMarkedIncorrect = studentResponse?.answers.every(a => {\n return markedAnswers[getMarkedAnswerId(a)]?.status === InteractiveAnswerStatus.Incorrect;\n });\n\n if (isMarkedIncorrect)\n return InteractiveAnswerStatus.Incorrect;\n}\n\nexport function getInteractionResultsSummary(\n interaction: Interaction,\n results: InteractiveResultSet\n): ResultsSummary {\n const numStudents = results.students.length;\n let numCorrect = 0;\n let answered = 0;\n let unanswered = 0;\n let awaitingMarking = 0;\n let attempts = 0;\n\n results.students.forEach(s => {\n const result = getStudentResult(s);\n\n if (!result)\n return;\n\n attempts = attempts + s.results.length;\n\n const correctness = InteractiveCorrectnessHelper.isInteractionCorrect(interaction, result);\n\n if (correctness === InteractionCorrectness.Correct)\n numCorrect++;\n\n if (correctness === InteractionCorrectness.UnAnswered)\n unanswered++;\n\n if (correctness === InteractionCorrectness.AwaitingMarking)\n awaitingMarking++;\n\n if (correctness !== InteractionCorrectness.UnAnswered)\n answered++;\n });\n\n\n const percentCorrect = numStudents > 0\n ? numCorrect / numStudents\n : 0;\n\n return {\n percentCorrect,\n correct: numCorrect,\n answered,\n unanswered,\n awaitingMarking,\n attempts\n };\n}\n\nexport function getStudentResultsSummary(interactive: Interactive, studentResults: StudentResults): ResultsSummary {\n const result = getStudentResult(studentResults);\n\n const interactions = getInteractions(interactive);\n\n const numInteractions = interactions.length;\n\n let numCorrect = 0;\n let awaitingMarking = 0;\n\n interactions.forEach(i => {\n const correctness = InteractiveCorrectnessHelper.isInteractionCorrect(i, result);\n\n if (correctness === InteractionCorrectness.Correct)\n numCorrect++;\n\n if (correctness === InteractionCorrectness.AwaitingMarking)\n awaitingMarking++;\n });\n\n const percentCorrect = numInteractions > 0 ? numCorrect / numInteractions : 0;\n\n /**\n * Our interactions list has images and annotations filtered out.\n * We built a map of valid questions, so that we can calculate the unswered accurately.\n * We're doing this because of a bug that caused annotations and images to record answers in the player.\n * - Sha\n */\n const interactionIds = new Set(interactions.map(i => i.id));\n const answeredInteractions = result.attempts.filter(a => !!interactionIds.has(a?.answers[0]?.questionId)).length;\n\n return {\n answered: result.attempts.length,\n attempts: studentResults.results.length,\n unanswered: numInteractions - answeredInteractions,\n percentCorrect,\n correct: numCorrect,\n awaitingMarking\n };\n}","export interface ScoreThresholds {\n HIGH: number;\n MODERATE: number;\n}\n\nexport const ScoreThresholdDefaults: ScoreThresholds = {\n HIGH: 0.75,\n MODERATE: 0.5\n};\n\nexport const ScoreThresholdInsights: ScoreThresholds = {\n HIGH: 0.7,\n MODERATE: 0.7\n};","import { Flight } from 'libs/common/react/index';\n\nexport const InsightsDemoRequests = {\n interactive(): Flight.Request {\n return {\n url: `/mocks/insights/interactive.json`,\n key: `demo:interactive`,\n normalize: false\n };\n },\n\n interactiveMetadata(): Flight.Request {\n return {\n url: `/mocks/insights/interactive-metadata.json`,\n key: `demo:interactive:metadata`,\n normalize: false\n };\n },\n\n interactiveResults(): Flight.Request {\n return {\n url: `/mocks/insights/interactive-results.json`,\n key: `demo:interactive:results`,\n normalize: false\n };\n },\n\n videoViews(): Flight.Request {\n return {\n url: `/mocks/insights/video-views.json`,\n key: `demo:video:views`,\n normalize: false\n };\n },\n\n users(): Flight.Request {\n return {\n url: `/mocks/insights/users.json`,\n key: `demo:users`,\n normalize: false\n };\n },\n\n individualHeatmap(): Flight.Request {\n return {\n url: `/mocks/insights/individual-heatmap.json`,\n key: `demo:individual:heatmap`,\n normalize: false\n };\n },\n\n aggregateHeatmap(): Flight.Request {\n return {\n url: `/mocks/insights/aggregate-heatmap.json`,\n key: `demo:aggregate:heatmap`,\n normalize: false\n };\n }\n};","import { AnalyticsRequestFilter } from 'libs/shared/interfaces';\n\nexport function getAnalyticsRequestKey(baseKey: string, filter: AnalyticsRequestFilter, sharerId?: string): string {\n let key = `${baseKey}:${filter.start}:${filter.end}`;\n\n const userIdKey = Array.isArray(filter.userId) ? filter.userId.sort().join(':') : filter.userId;\n const groupIdKey = Array.isArray(filter.groupId) ? filter.groupId.sort().join(':') : filter.groupId;\n\n if (userIdKey)\n key += `:${userIdKey}`;\n\n if (groupIdKey)\n key += `:${groupIdKey}`;\n\n if (sharerId)\n key += `:${sharerId}`;\n\n return key;\n}","import { Core } from 'libs/common/core';\nimport { HashObject } from 'libs/common/react/interfaces';\nimport { ObjectHelper } from 'libs/common/react/utils/ObjectHelper';\n\nimport { ContextService } from 'libs/shared/services/ContextService';\n\ninterface UpdateParamsOptions extends Core.AppLinkOptions {\n merge?: boolean;\n keysToRemove?: string[]\n}\n\nexport const AppRouteHelper = {\n /**\n * Utility to update the params on the current appRoute.\n * \n * This is built on top of ContextService rather than build into AppLink\n * as we will generally only want to update params on appRoutes, not appLinks.\n */\n updateParams(params: HashObject, options?: UpdateParamsOptions): void {\n const { appLink } = ContextService.getCurrentRoute();\n\n let currentParams = typeof(appLink.params) === 'string'\n ? Core.LocationUtils.DeserializeQueryParams(appLink.params)\n : appLink.params as HashObject;\n\n if (options.keysToRemove)\n currentParams = ObjectHelper.omit(currentParams, options.keysToRemove);\n\n const updatedParams = options?.merge\n ? { ...currentParams, ...params }\n : params;\n\n const updatedAppLink = {\n ...appLink,\n params: updatedParams\n };\n\n /**\n * This prevents us pointlessly re-triggering if we're already on the right applink.\n */\n if (ObjectHelper.isEqual(appLink, updatedAppLink))\n return;\n \n Core.AppLinkHelper.trigger(updatedAppLink, ObjectHelper.omit(options, [ 'merge', 'keysToRemove' ]));\n }\n};","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { useViewModel } from 'libs/common/react/hooks/UseViewModel';\nimport { Flight } from 'libs/common/react/index';\n\nimport { AnalyticsFilterHelper } from 'libs/shared/apps/analytics/utils/AnalyticsFilterUtils';\nimport { SortStudentsBy } from 'libs/shared/apps/analytics/utils/StudentTableUtils';\nimport { SharedViewModelKeys } from 'libs/shared/constants/SharedViewModelKeys';\nimport { ConfigRequests } from 'libs/shared/flight-requests/ConfigRequests';\nimport { InsightsDemoRequests } from 'libs/shared/flight-requests/InsightsDemoRequests';\nimport { useLockContentWidth } from 'libs/shared/hooks/useLockContentWidth';\nimport { useSetPageMetadata } from 'libs/shared/hooks/useSetPageMetadata';\nimport { Config, Interactive, InteractiveMetadata, InteractiveResultSet } from 'libs/shared/interfaces';\n\nimport { InsightsHeader } from 'apps/my-shares/components/insights-header/InsightsHeader';\nimport { InteractiveInsightsQuestions } from 'apps/my-shares/components/interactive-insights-questions/InteractiveInsightsQuestions';\nimport { getInsightsDemoInteractiveTabs } from 'apps/my-shares/utils/InsightsAppLinkUtils';\n\nconst namespace = 'shared.interactiveInsightsQuestionsView';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface InteractiveInsightsQuestionsViewProps {\n interactionId: string;\n sortBy: SortStudentsBy;\n}\n\nexport function InteractiveInsightsQuestionsDemoView(props: InteractiveInsightsQuestionsViewProps) {\n const [anonymiseUsers] = useViewModel<boolean>(SharedViewModelKeys.ANONYMISE_USERS);\n\n useLockContentWidth();\n\n const config = Flight.useBasicFetch<Config>(ConfigRequests.config());\n\n const interactiveMetadata = Flight.useBasicFetch<InteractiveMetadata>(\n InsightsDemoRequests.interactiveMetadata()\n );\n\n const interactive = Flight.useBasicFetch<Interactive>(InsightsDemoRequests.interactive());\n\n const audienceAppLinkParams = AnalyticsFilterHelper.getAudienceAppLinkParams();\n const dateRangeAppLinkParams = AnalyticsFilterHelper.getDateRangeAppLinkParams();\n\n const results = Flight.useBasicFetch<InteractiveResultSet>(InsightsDemoRequests.interactiveResults());\n\n useSetPageMetadata({ title: interactiveMetadata.data ? getPhrase('pageTitle', { video: interactiveMetadata.data?.name }) : null });\n\n const hasDataLoaded = interactive.data && interactiveMetadata.data && !!results.data;\n\n const params = {\n ...audienceAppLinkParams,\n ...dateRangeAppLinkParams\n };\n\n return (\n <div className='px-3'>\n <InsightsHeader\n tabs={getInsightsDemoInteractiveTabs(interactiveMetadata.data?.id, 'questions', params)}\n video={interactiveMetadata.data}\n dateRangeAppLinkParams={dateRangeAppLinkParams}\n isDemo\n />\n\n <InteractiveInsightsQuestions\n interactive={interactive.data}\n interactiveMetadata={interactiveMetadata.data}\n interactionId={props.interactionId}\n config={config.data}\n sortBy={props.sortBy}\n isFetching={results.isFetching || interactive.isFetching}\n anonymiseUsers={anonymiseUsers}\n results={results.data}\n hasDataLoaded={hasDataLoaded}\n isDemo\n />\n </div>\n );\n}"],"names":["getInteractiveResultFilters","currentUser","filter","currentUserId","id","currentCustomerId","customerId","dateRange","start","end","userIds","userId","classroomsAndGroups","groupId","InteractiveResultsRequests","interactiveResultSet","interactiveId","interactiveMetadataId","includePublicResults","success","error","always","url","key","data","type","normalize","mark","answerId","resultId","invalidationKeys","pendingReviews","interactiveResultsReport","getPhrase","anonymiseUserName","user","shouldAnonymise","sessionName","seed","Math","floor","Date","getMinutes","dictionaries","separator","length","style","getAnonSession","sessionId","anonSessions","fallback","getUserOrAnonSession","result","groupStudents","interactive","results","scoreThreshold","groups","markingRequired","lowScore","highScore","completed","notCompleted","numInteractions","students","forEach","s","withSummary","summary","getStudentResultsSummary","awaitingMarking","push","attempts","percentCorrect","HIGH","MODERATE","sortedLowScore","sortedHighScore","getInteractionById","interactionId","find","i","toString","getMarkedAnswerId","answer","questionId","getMarkedStatus","studentResults","markedAnswers","studentResponse","answers","every","a","status","getInteractionResultsSummary","interaction","numStudents","numCorrect","answered","unanswered","correctness","correct","interactions","interactionIds","Set","map","answeredInteractions","has","ScoreThresholdDefaults","ScoreThresholdInsights","InsightsDemoRequests","interactiveMetadata","interactiveResults","videoViews","users","individualHeatmap","aggregateHeatmap","getAnalyticsRequestKey","baseKey","sharerId","userIdKey","Array","isArray","sort","join","groupIdKey","AppRouteHelper","updateParams","params","options","appLink","currentParams","keysToRemove","updatedParams","merge","updatedAppLink","InteractiveInsightsQuestionsDemoView","props","anonymiseUsers","config","audienceAppLinkParams","dateRangeAppLinkParams","title","video","name","hasDataLoaded","className","tabs","isDemo","sortBy","isFetching"],"sourceRoot":""}
@@ -0,0 +1,2 @@
1
+ (self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[7502],{4606:(e,t,r)=>{"use strict";r.d(t,{U:()=>i});var n=r(20354),a=r(75896),o=r(31949);function i(e){var t=a.m.chunk(null!=e?e:[],25),r=n.a.useBasicFetchAll(t.map((function(e){return o.N.getById(e)})));return{users:a.m.flatten(r.data),isLoading:!r.hasCompleted,usersResponse:r}}},26025:(e,t,r)=>{"use strict";r.d(t,{B:()=>o});var n=r(1048),a=r(75795),o={getAudienceAppLinkParams:function(){var e=a.O.getCurrentRoute().appLink,t=n.t.isObject(e.params)?e.params:{},r=t.users,o=t.classrooms,i=t.classroomGroups,s=function(e){var r=t[e];if(r)return Array.isArray(r)?r:[r]},c={};return r&&(c.users=s("users")),o&&(c.classrooms=s("classrooms")),i&&(c.classroomGroups=s("classroomGroups")),c},getDateRangeAppLinkParams:function(){var e=a.O.getCurrentRoute().appLink,t=n.t.isObject(e.params)?e.params:{},r=t.from,o=t.to,i=t.rangeName,s={};return r&&(s.from=r),o&&(s.to=o),i&&(s.rangeName=i),s}}},40003:(e,t,r)=>{"use strict";r.d(t,{Hb:()=>s,wO:()=>l});var n=r(23481),a=r(110),o=(r(57266),n.T.encloseNamespace("shared.analyticsUtils"));function i(e){var t=a.O.convertDateToUTC(e);return a.O.format(t,"YYYY-MM-DDTHH:mm:ss")}function s(){var e=new Date(2021,0,1),t=(new Date).getFullYear(),r=t===e.getFullYear();return[{name:o("today"),startDate:new Date,endDate:new Date},{name:o("thisMonth"),startDate:new Date(t,(new Date).getMonth(),1),endDate:new Date},{name:o("lastThreeMonths"),startDate:new Date(t,(new Date).getMonth()-2,1),endDate:new Date},{name:o("lastSixMonths"),startDate:new Date(t,(new Date).getMonth()-5,1),endDate:new Date},{name:o("thisYear"),startDate:new Date(t,0,1),endDate:new Date},{name:o("lastYear"),startDate:new Date(t-1,0,1),endDate:new Date(t,0,0),disabled:r,tooltip:r?o("lastYearDisabled"):""},{name:o("allTime"),startDate:a.O.subtract(new Date,5,"years"),endDate:new Date,default:!0}]}function c(e){return a.O.format(e,"YYYY-MM-DD")}function l(e,t){var r=function(e){return i(a.O.startOf(e,"day"))},n=function(e){return i(a.O.endOf(e,"day"))},o=function(e,t){if(t)return e.find((function(e){return e.name===t}))}(e,t.rangeName);if(o)return{start:r(c(o.startDate)),end:n(c(o.endDate))};if(t.from&&t.to)return{start:r(t.from),end:n(t.to)};var s=e.find((function(e){return!!e.default}));return{start:r(c(s.startDate)),end:n(c(s.endDate))}}},62875:(e,t,r)=>{"use strict";function n(e,t,r){var n="".concat(e,":").concat(t.start,":").concat(t.end),a=Array.isArray(t.userId)?t.userId.sort().join(":"):t.userId,o=Array.isArray(t.groupId)?t.groupId.sort().join(":"):t.groupId;return a&&(n+=":".concat(a)),o&&(n+=":".concat(o)),r&&(n+=":".concat(r)),n}r.d(t,{H:()=>n})},57266:(e,t,r)=>{"use strict";r.d(t,{e:()=>i});var n=r(81886),a=r(1048),o=r(75795),i={updateParams:function(e,t){var r=o.O.getCurrentRoute().appLink,i="string"==typeof r.params?n.Q.Ab.DeserializeQueryParams(r.params):r.params;t.keysToRemove&&(i=a.t.omit(i,t.keysToRemove));var s=(null==t?void 0:t.merge)?Object.assign(Object.assign({},i),e):e,c=Object.assign(Object.assign({},r),{params:s});a.t.isEqual(r,c)||n.Q.C$.trigger(c,a.t.omit(t,["merge","keysToRemove"]))}}},17370:(e,t,r)=>{"use strict";r.r(t),r.d(t,{ShareOptionsView:()=>q});var n=r(32735),a=r(39202),o=r(70376),i=r(2948),s=r(20354),c=r(50938),l=r(5255),u=r(4606),d=r(26025),p=r(74901),m=r(40003),f=r(49475),v=r(42735),y=r(49935),h=r(91693),g=r(4594),b=r(39151),E=r(5112),w=r(60011),O=r(31949),S=r(17913),k=r(3010),x=r(91286),C=r(93322),I=r(79612),D=r(37802),j=r(35223),N=r(31908),P=r(14070),T=r(97291),R=r(86702),A=r(86099),L=r(88630),M=r(59087),F=r(99742),_=r(93975);function V(e){var t,r,a,o,i,s,c=null!==(a=null===(r=null===(t=e.shareLink)||void 0===t?void 0:t.link)||void 0===r?void 0:r.shortenedUrl)&&void 0!==a?a:"";return e.shareLink?(null===(o=e.shareLink)||void 0===o?void 0:o.type)===_.y.Open?n.createElement("div",{className:"d-flex gap-3"},n.createElement(B,{title:"Step 1: Send students a link"},n.createElement(U,{shareLink:e.shareLink,qrCodeValue:c}),n.createElement("div",{className:"d-flex gap-2 align-items-center mt-3 mb-3"},n.createElement("div",{className:"border-top col"}),n.createElement("p",{className:"p-0 m-0"},"OR"),n.createElement("div",{className:"border-top col"})),n.createElement("p",{className:"m-0 p-0"},"Students go to:"),n.createElement("input",{className:"form-control",value:"staging.clickview.net/pin",readOnly:!0})),n.createElement(B,{title:"Step 2: Students enter a join code"},n.createElement("div",{className:"d-flex flex-column m-4 border rounded-3 flex-grow-1 justify-content-center"},n.createElement("div",{className:"d-flex justify-content-center"},n.createElement("h1",{style:{fontSize:64},className:"m-0 p-0"},null===(i=e.pinCode)||void 0===i?void 0:i.code),n.createElement(M.CopyToClipboard,{text:null===(s=e.pinCode)||void 0===s?void 0:s.code},n.createElement(h.h,{svgName:j.vn.Copy,className:"btn"})))))):n.createElement("div",{className:"d-flex gap-3"},n.createElement("div",{style:{backgroundColor:"#EFF9F3"},className:"d-flex rounded-3 col border"},n.createElement("div",{className:"p-3"},n.createElement("h5",null,"Video has been assigned to your classroom!"),n.createElement("p",null,"Students have been notified through email and the video has been added to their home page on ClickView.")),n.createElement("div",{className:"d-flex flex-column me-3"},n.createElement("div",{className:"flex-grow-1"}),n.createElement("img",{style:{maxHeight:150},className:"mt-3",src:F.W.Share.STUDENT_FEED_TEMPLATE}))),n.createElement(B,{title:"Other ways to share"},n.createElement(U,{shareLink:e.shareLink,qrCodeValue:c}))):n.createElement(n.Fragment,null)}function B(e){return n.createElement("div",{style:{overflow:"hidden"},className:"d-flex flex-column rounded-3 border col"},n.createElement("div",{style:{backgroundColor:"#F8F8F8"},className:"p-3 border-bottom"},n.createElement("h5",{className:"m-0 p-0"},e.title)),n.createElement("div",{className:"d-flex flex-column p-3 flex-grow-1"},e.children))}function U(e){var t,r,a,o,i,s;return n.createElement("div",{className:"d-flex flex-column"},n.createElement("p",{className:"m-0 p-0"},"Share link to students:"),n.createElement("div",{className:"d-flex gap-2"},n.createElement("input",{className:"form-control",value:null!==(a=null===(r=null===(t=e.shareLink)||void 0===t?void 0:t.link)||void 0===r?void 0:r.shortenedUrl)&&void 0!==a?a:"",readOnly:!0}),n.createElement(M.CopyToClipboard,{text:null!==(s=null===(i=null===(o=e.shareLink)||void 0===o?void 0:o.link)||void 0===i?void 0:i.shortenedUrl)&&void 0!==s?s:""},n.createElement(h.h,{svgName:j.vn.Copy,className:"btn btn-outline-dark"},"Copy link"))),n.createElement("div",{className:"d-flex gap-2 mt-3 justify-content-between align-items-center"},n.createElement(h.h,{svgName:j.vn.Print,className:"btn btn-outline-dark",appLink:{application:T.O.INSIGHTS,action:P.e.Insights.QR_CODE,params:{value:e.qrCodeValue}}},"QR code"),n.createElement("img",{style:{maxHeight:40},src:F.W.Share.INTEGRATIONS,className:"cursor-pointer"})))}var G=r(91574),Y=r(81969);function H(e){return H="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},H(e)}function W(e){return function(e){if(Array.isArray(e))return Q(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||J(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 z(e,t,r){return(t=function(e){var t=function(e){if("object"!=H(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var r=t.call(e,"string");if("object"!=H(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==H(t)?t:t+""}(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function J(e,t){if(e){if("string"==typeof e)return Q(e,t);var r={}.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?Q(e,t):void 0}}function Q(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r<t;r++)n[r]=e[r];return n}function q(e){var t,r,M,F,B,U,H,Q,q,$,K,X,Z,ee,te,re,ne,ae=(re=(0,i.D)(R.y.ANONYMISE_USERS),ne=1,function(e){if(Array.isArray(e))return e}(re)||function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var n,a,o,i,s=[],c=!0,l=!1;try{if(o=(r=r.call(e)).next,0===t){if(Object(r)!==r)return;c=!1}else for(;!(c=(n=o.call(r)).done)&&(s.push(n.value),s.length!==t);c=!0);}catch(e){l=!0,a=e}finally{try{if(!c&&null!=r.return&&(i=r.return(),Object(i)!==i))return}finally{if(l)throw a}}return s}}(re,ne)||J(re,ne)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}())[0],oe=s.a.useGetFetch(),ie=s.a.useBasicFetch(b.L.config()),se=s.a.useBasicFetch(e.shareId&&G.o.getShareLink(e.shareId)),ce=s.a.useBasicFetch(e.shareId&&G.o.getPincodeByShareId(e.shareId)),le=Y.R.getClassroomId(se.data),ue=s.a.useBasicFetch(le&&L.F.getClassroom(le)),de=(0,D.r)(null).publicInteractiveAttempts,pe=[g.E.Video,g.E.Clip,g.E.Interactive].includes(e.typeId)&&N.M.getVideoRequest(e.objectId,e.typeId),me=s.a.useBasicFetch(pe),fe=s.a.useBasicFetch(O.N.currentUser()),ve=e.typeId===g.E.Series&&w.J.series(e.objectId),ye=s.a.useBasicFetch(ve),he=e.typeId===g.E.Playlist&&E.C.getPlaylist(e.objectId),ge=s.a.useBasicFetch(he),be=d.B.getAudienceAppLinkParams(),Ee=d.B.getDateRangeAppLinkParams(),we=Object.assign(Object.assign({},(0,m.wO)((0,m.Hb)(),Ee)),(0,p.K)(be)),Oe=fe.data&&S.u.individualEngagement(e.objectId,we,null===(t=fe.data)||void 0===t?void 0:t.id,de),Se=s.a.useBasicFetch(Oe);(0,o.W)((function(){return oe(Oe)}),5e3);var ke=(null===(M=null===(r=Se.data)||void 0===r?void 0:r.data)||void 0===M?void 0:M.map((function(e){return e.userId})).filter(Boolean))||[],xe=(0,u.U)(ke),Ce=xe.users,Ie=xe.isLoading,De=(0,l.Y)(e.shareId),je=function(e,t,r){var n,a,o,i,c,l,u=s.a.useGetFetch(),d=(null===(a=null===(n=null==t?void 0:t.recipients)||void 0===n?void 0:n[0])||void 0===a?void 0:a.recipientTypeId)===g.E.Classroom&&t.recipients[0].recipientId,p=function(e){return d&&L.F.getClassroomStudents(d,e)},m=(0,k.i)(p,(function(e){return u(p(e))})),f=null!==(i=null===(o=null==r?void 0:r.data)||void 0===o?void 0:o.reduce((function(e,t){return Object.assign(Object.assign({},e),z({},t.userId,t))}),{}))&&void 0!==i?i:{},v=(null===(c=m.items)||void 0===c?void 0:c.length)?m.items.map((function(t){return f[t.id]?null:{customerId:null==e?void 0:e.customerId,engagementRate:0,heatMap:[],userId:t.id,videoDuration:500,viewCount:0,videoId:null,userIds:[],sessionId:null,sessionIds:[],user:t}})).filter((function(e){return!!e})):[];return[].concat(W(null!==(l=null==r?void 0:r.data)&&void 0!==l?l:[]),W(v))}(fe.data,se.data,Se.data);(0,C.F)(),(0,I.M)({title:null!==(H=null!==(B=null===(F=me.data)||void 0===F?void 0:F.name)&&void 0!==B?B:null===(U=ye.data)||void 0===U?void 0:U.name)&&void 0!==H?H:null===(Q=ge.data)||void 0===Q?void 0:Q.name}),(0,x.v)([me,ye,ge]);var Ne=!(!Se.data||ke.length&&Ie),Pe=!je.length,Te=!Ne||Pe;function Re(){var t=z(z(z({},g.E.Video,P.e.Insights.VIDEO_OVERVIEW),g.E.Clip,P.e.Insights.CLIP_OVERVIEW),g.E.Interactive,P.e.Insights.INTERACTIVE_OVERVIEW);return{application:T.O.INSIGHTS,action:t[e.typeId],args:[e.objectId],params:{shareId:e.shareId}}}return console.log({individualEngagementLength:null===(q=Se.data)||void 0===q?void 0:q.data.length,userIdsLength:ke.length,anonSessionsLength:Object.keys(De).length,fakeEngagementLength:je.length}),n.createElement("div",{className:"px-3"},n.createElement("div",{className:"d-flex justify-content-between align-items-center mb-3"},function(){if(!me.data)return n.createElement(y.b2,null);var e=[{name:"Reports",appLink:{application:T.O.MY_SHARES,action:P.e.MyShares.HOME}},{name:me.data.name,active:!1},{name:"Share information",active:!0}];return n.createElement(y.Oo,{breadcrumbs:e})}(),n.createElement("div",{className:"d-flex align-items-center gap-2"},n.createElement(v.K,{appLink:me.data?(0,A.Qh)(me.data):void 0,className:"btn btn-outline-dark ms-auto"},"Go to video"),n.createElement(h.h,{svgName:j.vn.File,appLink:Re(),className:"btn btn-dark ms-auto"},"View full report"))),(null===($=se.data)||void 0===$?void 0:$.type)===_.y.Open&&n.createElement("h1",{className:"mb-4"},"Share your open classroom:"),n.createElement(V,{sharedObject:null!==(X=null!==(K=me.data)&&void 0!==K?K:ye.data)&&void 0!==X?X:ge.data,shareLink:se.data,pinCode:ce.data,classroom:ue.data}),n.createElement("div",{className:"d-flex align-items-center mt-5"},n.createElement("h3",{className:"p-0 m-0"},(null===(Z=se.data)||void 0===Z?void 0:Z.type)===_.y.Classroom?"Students who have viewed: 0/30":"Students who have viewed this video"),(null===(ee=se.data)||void 0===ee?void 0:ee.type)===_.y.Classroom&&n.createElement(h.h,{svgName:j.vn.Edit,onClick:function(){return console.log("Add new student..")},className:"btn btn-outline-dark ms-auto"},"Edit recipients")),n.createElement("div",{className:"col-12 mt-2 mb-5"},n.createElement(c.z,{key:(0,f.u)(Object.assign(Object.assign({},be),Ee)),engagement:je,users:null!=Ce?Ce:[],imageCdnUrl:null===(te=ie.data)||void 0===te?void 0:te.imageCdnUrl,anonymiseUsers:ae,border:!0,anonSessions:De,hideWhenEmpty:!1,theme:{header:Te?"border-0":"border-bottom",table:Te?"bg-white rounded px-0 rounded-bottom-0":"bg-white rounded px-0"}}),Te&&function(){var e;if(!se.data)return n.createElement("div",{style:{minHeight:300},className:"border border-top-0 rounded-1 rounded-top-0 pt-5 pb-5 text-center"});if((null===(e=se.data)||void 0===e?void 0:e.type)===_.y.Open){var t=Re(),r=a.C$.getHref(t);return n.createElement("div",{style:{minHeight:300},className:"d-flex flex-column align-items-center border border-top-0 rounded-1 rounded-top-0 pt-4 pb-4 text-center"},n.createElement("h4",{className:"mt-4"},"Share open session to start collecting views..."),n.createElement("a",{href:r,className:"text-info"},"View full report"))}return n.createElement("div",{style:{minHeight:300},className:"border border-top-0 rounded-1 rounded-top-0 pt-4 pb-4 text-center"},n.createElement("h4",null,"Waiting for students to view..."))}()))}},42272:(e,t,r)=>{"use strict";var n;r.d(t,{e:()=>n}),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"}(n||(n={}))},93975:(e,t,r)=>{"use strict";var n;r.d(t,{y:()=>n}),function(e){e.Link="Link",e.Classroom="Classroom",e.Open="Open",e.Live="Live"}(n||(n={}))},91574:(e,t,r)=>{"use strict";r.d(t,{o:()=>i});var n=r(99940),a=r(97395),o={namespace:"share-v2"},i={createShareLink:function(e,t,r,a){return{url:"/api/share/v2/shares",key:"create:share-v2:link",type:n.k.POST,data:e,normalizeOptions:o,invalidationKeys:["share:link:object:".concat(e.objectId),"privacy:".concat(e.objectId),"sent:shares","get:share-v2:shares:object"],success:t,error:r,always:a}},getShareLink:function(e,t,r,a){return{url:"/api/share/v2/shares/".concat(e),key:"get:share-v2:link:".concat(e),type:n.k.GET,normalizeOptions:o,success:t,error:r,always:a}},getSharesByObjectId:function(e,t,r,a){return{url:"/api/share/v2/shares/objects/".concat(e),key:"get:share-v2:shares:object:".concat(e),type:n.k.GET,normalizeOptions:o,success:t,error:r,always:a}},getSentShares:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=arguments.length>1?arguments[1]:void 0,r=arguments.length>2?arguments[2]:void 0,o=arguments.length>3?arguments[3]:void 0,i={scopeId:e.scopeId,limit:e.limit||25,offset:parseInt(e.cursor)||0},s=Object.values(i).join(":");return{url:a._.urlBuilder("/api/share/v2/shares/sent",i),key:"sent:shares-v2:".concat(s),formatData:function(e){return{data:e,count:e.length,pagination:{cursors:{next:i.offset+e.length}}}},type:n.k.GET,normalize:!1,success:t,error:r,always:o}},createPincode:function(e){return{url:"/api/share/v2/shares/".concat(e,"/pincode"),key:"create:share-v2:pincode",type:n.k.POST}},getPincode:function(e){return{url:"/api/share/v2/shares/pincode?code=".concat(e),key:"get:share-v2:pincode:".concat(e)}},getPincodeByShareId:function(e){return{url:"/api/share/v2/shares/".concat(e,"/pincode"),key:"get:share-v2:".concat(e,":pincode")}}}},81969:(e,t,r)=>{"use strict";r.d(t,{R:()=>f});var n=r(23481),a=r(110),o=r(4594),i=r(49080),s=r(26361),c=r(35223),l=r(31908),u=r(42272),d=r(93975);function p(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r<t;r++)n[r]=e[r];return n}var m=n.T.encloseNamespace("share.shareLinkInfo"),f={getPrivateIconAndText:function(e){var t=e.entityTypeId,r=e.privacy,n=e.hasStudentExp,a=e.entity,i=e.yearGroups;if(t===o.E.Topic||t===o.E.Series)return{icon:c.vn.VisibleOn,text:m(n?"justMySchoolTeachers":"justMySchoolDescription")};if(!Array.isArray(r))switch(r){case u.e.Public:return{icon:c.vn.VisibleOn,text:m("publicDescription")};case u.e.ProtectedOverrideRestriction:return{icon:c.vn.VisibleOn,text:m("clickViewOnly")};case u.e.Protected:return{icon:c.vn.Lock,text:f.getRespectRatingText(a,i,n)};case u.e.JustMySchoolOverrideRestriction:return{icon:c.vn.Lock,text:m(n?"justMySchoolTeachers":"justMySchoolDescription")};case u.e.JustMySchool:return{icon:c.vn.Lock,text:f.getRespectRatingText(a,i,n)};case u.e.PinCode:case u.e.PasswordProtected:return{icon:c.vn.Lock,text:m("privateDescription")};default:return{}}},getIconAndText:function(e){var t=e.linkExpireDate,r=e.isPasswordProtected,n=e.status;if(!t&&!r)return f.getPrivateIconAndText(e);if(!t)return{icon:c.vn.Lock,text:m("password")};var o=a.O.isToday(t),s=a.O.diffBetween(t,new Date,"day");if(!r){var l=o?m("expiryToday"):m("expiry",{days:s});return n===i.F.Expired&&(l=m("expired")),{icon:c.vn.Timer,text:l}}var u=o?m("passwordExpiryToday"):m("passwordExpiry",{days:s});return n===i.F.Expired&&(u=m("passwordExpired")),{icon:c.vn.Lock,text:u}},getRespectRatingText:function(e,t,r){var n;if(!e||!t)return null;if(r)return m("justMySchoolTeachers");if(!l.M.isVideoType(e))return m("collectionRating");var a=s.l.getWeightedRestriction(null===(n=e._restrictions)||void 0===n?void 0:n.value);if(a&&!a.yearGroup)return m("onlyAdmins");var o,i,c,u=l.M.getRating(e),d=function(e,t){var r="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!r){if(Array.isArray(e)||(r=function(e,t){if(e){if("string"==typeof e)return p(e,t);var r={}.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?p(e,t):void 0}}(e))||t&&e&&"number"==typeof e.length){r&&(e=r);var n=0,a=function(){};return{s:a,n:function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}},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 o,i=!0,s=!1;return{s:function(){r=r.call(e)},n:function(){var e=r.next();return i=e.done,e},e:function(e){s=!0,o=e},f:function(){try{i||null==r.return||r.return()}finally{if(s)throw o}}}}(t);try{for(d.s();!(c=d.n()).done;){var f=c.value;(!o||f.value>o.value)&&(o=f),a&&f.value<=a.yearGroup||u&&f.rating.value<u.value||(!i||f.value<i.value)&&(i=f)}}catch(e){d.e(e)}finally{d.f()}return i?1===t.length?m("clickViewOnly"):i.value===o.value?m("maxYearGroup",{yearGroup:o.name}):m("yearGroupRange",{yearGroup:i.name}):m("onlyStaff")},getClassroomId:function(e){var t,r;if(!e)return"";if(e.type!==d.y.Classroom)return"";var n=null===(t=e.recipients)||void 0===t?void 0:t.find((function(e){return e.recipientTypeId===o.E.Classroom}));if(n)return n.recipientId.toString();var a=null===(r=e.recipients)||void 0===r?void 0:r.find((function(e){return e.scopeId}));return(null==a?void 0:a.scopeId.toString())||""}}},91969:(e,t,r)=>{"use strict";var n=r(47033),a={"text/plain":"Text","text/html":"Url",default:"Text"};e.exports=function(e,t){var r,o,i,s,c,l,u=!1;t||(t={}),r=t.debug||!1;try{if(i=n(),s=document.createRange(),c=document.getSelection(),(l=document.createElement("span")).textContent=e,l.ariaHidden="true",l.style.all="unset",l.style.position="fixed",l.style.top=0,l.style.clip="rect(0, 0, 0, 0)",l.style.whiteSpace="pre",l.style.webkitUserSelect="text",l.style.MozUserSelect="text",l.style.msUserSelect="text",l.style.userSelect="text",l.addEventListener("copy",(function(n){if(n.stopPropagation(),t.format)if(n.preventDefault(),void 0===n.clipboardData){r&&console.warn("unable to use e.clipboardData"),r&&console.warn("trying IE specific stuff"),window.clipboardData.clearData();var o=a[t.format]||a.default;window.clipboardData.setData(o,e)}else n.clipboardData.clearData(),n.clipboardData.setData(t.format,e);t.onCopy&&(n.preventDefault(),t.onCopy(n.clipboardData))})),document.body.appendChild(l),s.selectNodeContents(l),c.addRange(s),!document.execCommand("copy"))throw new Error("copy command was unsuccessful");u=!0}catch(n){r&&console.error("unable to copy using execCommand: ",n),r&&console.warn("trying IE specific stuff");try{window.clipboardData.setData(t.format||"text",e),t.onCopy&&t.onCopy(window.clipboardData),u=!0}catch(n){r&&console.error("unable to copy using clipboardData: ",n),r&&console.error("falling back to prompt"),o=function(e){var t=(/mac os x/i.test(navigator.userAgent)?"⌘":"Ctrl")+"+C";return e.replace(/#{\s*key\s*}/g,t)}("message"in t?t.message:"Copy to clipboard: #{key}, Enter"),window.prompt(o,e)}}finally{c&&("function"==typeof c.removeRange?c.removeRange(s):c.removeAllRanges()),l&&document.body.removeChild(l),i()}return u}},44818:(e,t,r)=>{"use strict";function n(e){return n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},n(e)}Object.defineProperty(t,"__esModule",{value:!0}),t.CopyToClipboard=void 0;var a=s(r(32735)),o=s(r(91969)),i=["text","onCopy","options","children"];function s(e){return e&&e.__esModule?e:{default:e}}function c(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function l(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?c(Object(r),!0).forEach((function(t){f(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):c(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function u(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}function d(e,t){return d=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e},d(e,t)}function p(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function m(e){return m=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)},m(e)}function f(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}var v=function(e){!function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&d(e,t)}(y,e);var t,r,s,c,v=(s=y,c=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,t=m(s);if(c){var r=m(this).constructor;e=Reflect.construct(t,arguments,r)}else e=t.apply(this,arguments);return function(e,t){if(t&&("object"===n(t)||"function"==typeof t))return t;if(void 0!==t)throw new TypeError("Derived constructors may only return object or undefined");return p(e)}(this,e)});function y(){var e;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,y);for(var t=arguments.length,r=new Array(t),n=0;n<t;n++)r[n]=arguments[n];return f(p(e=v.call.apply(v,[this].concat(r))),"onClick",(function(t){var r=e.props,n=r.text,i=r.onCopy,s=r.children,c=r.options,l=a.default.Children.only(s),u=(0,o.default)(n,c);i&&i(n,u),l&&l.props&&"function"==typeof l.props.onClick&&l.props.onClick(t)})),e}return t=y,(r=[{key:"render",value:function(){var e=this.props,t=(e.text,e.onCopy,e.options,e.children),r=function(e,t){if(null==e)return{};var r,n,a=function(e,t){if(null==e)return{};var r,n,a={},o=Object.keys(e);for(n=0;n<o.length;n++)r=o[n],t.indexOf(r)>=0||(a[r]=e[r]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(n=0;n<o.length;n++)r=o[n],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r])}return a}(e,i),n=a.default.Children.only(t);return a.default.cloneElement(n,l(l({},r),{},{onClick:this.onClick}))}}])&&u(t.prototype,r),Object.defineProperty(t,"prototype",{writable:!1}),y}(a.default.PureComponent);t.CopyToClipboard=v,f(v,"defaultProps",{onCopy:void 0,options:void 0})},59087:(e,t,r)=>{"use strict";var n=r(44818).CopyToClipboard;n.CopyToClipboard=n,e.exports=n},47033:e=>{e.exports=function(){var e=document.getSelection();if(!e.rangeCount)return function(){};for(var t=document.activeElement,r=[],n=0;n<e.rangeCount;n++)r.push(e.getRangeAt(n));switch(t.tagName.toUpperCase()){case"INPUT":case"TEXTAREA":t.blur();break;default:t=null}return e.removeAllRanges(),function(){"Caret"===e.type&&e.removeAllRanges(),e.rangeCount||r.forEach((function(t){e.addRange(t)})),t&&t.focus()}}}}]);
2
+ //# sourceMappingURL=7502-78b085caad-lite.chunk.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scripts/7502-78b085caad-lite.chunk.js","mappings":"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","sources":["file:///app/packages/libs/shared/src/apps/analytics/hooks/UseEngagementUsers.ts","file:///app/packages/libs/shared/src/apps/analytics/utils/AnalyticsFilterUtils.ts","file:///app/packages/libs/shared/src/apps/analytics/utils/DateRangeUtils.ts","file:///app/packages/libs/shared/src/utils/AnalyticsRequestUtils.ts","file:///app/packages/libs/shared/src/utils/AppRouteHelper.ts","file:///app/packages/projects/lite/src/apps/insights/components/share-options-v2/ShareOptions.tsx","file:///app/packages/projects/lite/src/apps/insights/views/share-options-v2/ShareOptionsView.tsx","file:///app/packages/projects/lite/src/apps/share-v2/enums/SharePrivacy.ts","file:///app/packages/projects/lite/src/apps/share-v2/enums/ShareType.ts","file:///app/packages/projects/lite/src/apps/share-v2/flight-requests/ShareRequests.ts","file:///app/packages/projects/lite/src/apps/share-v2/utils/ShareLinkHelper.ts","file:///app/node_modules/copy-to-clipboard/index.js","file:///app/node_modules/react-copy-to-clipboard/lib/Component.js","file:///app/node_modules/react-copy-to-clipboard/lib/index.js","file:///app/node_modules/toggle-selection/index.js"],"sourcesContent":["import { Flight } from 'libs/common/react/index';\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\n\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { User } from 'libs/shared/interfaces';\n\nexport function useChunkedUsersResponse(usersIds: string[]) {\n const userIdChunks = ArrayHelper.chunk<string>(usersIds ?? [], 25);\n const usersResponse = Flight.useBasicFetchAll<User[]>(userIdChunks.map(chunk => UserRequests.getById(chunk)));\n const users = ArrayHelper.flatten<User>(usersResponse.data);\n return { users, isLoading: !usersResponse.hasCompleted, usersResponse };\n}","import { HashObject } from 'libs/common/react/interfaces';\nimport { ObjectHelper } from 'libs/common/react/utils/ObjectHelper';\n\nimport { AudienceQueryParams } from 'libs/shared/apps/analytics/interfaces/AudienceQueryParams';\nimport { DateRangeQueryParams } from 'libs/shared/apps/analytics/interfaces/DateRangeQueryParams';\nimport { ContextService } from 'libs/shared/services/ContextService';\n\nexport const AnalyticsFilterHelper = {\n getAudienceAppLinkParams: () => {\n const { appLink } = ContextService.getCurrentRoute();\n const params = ObjectHelper.isObject(appLink.params) ? appLink.params as HashObject : {};\n const { users, classrooms, classroomGroups } = params;\n\n const getParam = (key: keyof AudienceQueryParams) => {\n const param = params[key];\n\n if (!param)\n return;\n\n return Array.isArray(param) ? param : [param];\n };\n\n const audienceFilters: AudienceQueryParams = {};\n\n if (users)\n audienceFilters.users = getParam('users');\n\n if (classrooms)\n audienceFilters.classrooms = getParam('classrooms');\n\n if (classroomGroups)\n audienceFilters.classroomGroups = getParam('classroomGroups');\n\n return audienceFilters;\n },\n getDateRangeAppLinkParams: () => {\n const { appLink } = ContextService.getCurrentRoute();\n const params = ObjectHelper.isObject(appLink.params) ? appLink.params as HashObject : {};\n const { from, to, rangeName } = params;\n\n const dateRangeFilters: DateRangeQueryParams = {};\n\n if (from)\n dateRangeFilters.from = from;\n\n if (to)\n dateRangeFilters.to = to;\n\n if (rangeName)\n dateRangeFilters.rangeName = rangeName;\n\n return dateRangeFilters;\n }\n};","import { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { DateHelper } from 'libs/common/react/utils/DateHelper';\n\nimport { DateRangeQueryParams } from 'libs/shared/apps/analytics/interfaces/DateRangeQueryParams';\nimport { FilterQueryParams } from 'libs/shared/apps/analytics/interfaces/FilterQueryParams';\nimport { DateRange } from 'libs/shared/interfaces';\nimport { AppRouteHelper } from 'libs/shared/utils/AppRouteHelper';\n\nconst namespace = 'shared.analyticsUtils';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nexport function convertDateToUtcDateTimeString(date: Date): string {\n const utc = DateHelper.convertDateToUTC(date);\n return DateHelper.format(utc, 'YYYY-MM-DDTHH:mm:ss');\n}\n\nexport function getMinDate(): Date {\n return new Date(2021, 0, 1);\n}\n\nexport function getMaxDate(): Date {\n return new Date();\n}\n\nexport function getDefaultDateRange(dateRangePresets: DateRange[]): DateRange {\n return dateRangePresets.find(range => !!range.default);\n}\n\nexport function getPresetRangeByName(dateRangePresetss: DateRange[], rangeName: string): DateRange | undefined {\n if (!rangeName)\n return;\n\n const presets = dateRangePresetss;\n \n return presets.find(p => p.name === rangeName);\n}\n\nexport function getGenericDateRangePresets(): DateRange[] {\n const minDate = getMinDate();\n const currentYear = (new Date()).getFullYear();\n\n const isMinDateThisYear = currentYear === minDate.getFullYear();\n\n return [\n {\n name: getPhrase('today'),\n startDate: new Date(),\n endDate: new Date()\n },\n {\n name: getPhrase('thisMonth'),\n startDate: new Date(currentYear, new Date().getMonth(), 1),\n endDate: new Date()\n },\n {\n name: getPhrase('lastThreeMonths'),\n startDate: new Date(currentYear, new Date().getMonth() - 2, 1),\n endDate: new Date()\n },\n {\n name: getPhrase('lastSixMonths'),\n startDate: new Date(currentYear, new Date().getMonth() - 5, 1),\n endDate: new Date()\n },\n {\n name: getPhrase('lastTwelveMonths'),\n startDate: new Date(currentYear, new Date().getMonth() - 11, 1),\n endDate: new Date(),\n default: true\n },\n {\n name: getPhrase('thisYear'),\n startDate: new Date(currentYear, 0, 1),\n endDate: new Date()\n },\n {\n name: getPhrase('lastYear'),\n startDate: new Date(currentYear - 1, 0, 1),\n endDate: new Date(currentYear, 0, 0),\n disabled: isMinDateThisYear,\n tooltip: isMinDateThisYear ? getPhrase('lastYearDisabled') : ''\n }\n ];\n}\n\nexport function getInsightsDateRangePresets(): DateRange[] {\n const minDate = getMinDate();\n const currentYear = (new Date()).getFullYear();\n\n const isMinDateThisYear = currentYear === minDate.getFullYear();\n\n return [\n {\n name: getPhrase('today'),\n startDate: new Date(),\n endDate: new Date()\n },\n {\n name: getPhrase('thisMonth'),\n startDate: new Date(currentYear, new Date().getMonth(), 1),\n endDate: new Date()\n },\n {\n name: getPhrase('lastThreeMonths'),\n startDate: new Date(currentYear, new Date().getMonth() - 2, 1),\n endDate: new Date()\n },\n {\n name: getPhrase('lastSixMonths'),\n startDate: new Date(currentYear, new Date().getMonth() - 5, 1),\n endDate: new Date()\n },\n {\n name: getPhrase('thisYear'),\n startDate: new Date(currentYear, 0, 1),\n endDate: new Date()\n },\n {\n name: getPhrase('lastYear'),\n startDate: new Date(currentYear - 1, 0, 1),\n endDate: new Date(currentYear, 0, 0),\n disabled: isMinDateThisYear,\n tooltip: isMinDateThisYear ? getPhrase('lastYearDisabled') : ''\n },\n {\n name: getPhrase('allTime'),\n startDate: DateHelper.subtract(new Date(), 5, 'years'),\n endDate: new Date(),\n default: true\n }\n ];\n}\n\nexport function formatDateQueryParam(date: Date): string {\n return DateHelper.format(date, 'YYYY-MM-DD');\n}\n\nexport function getRouteQueryParams(dateRange: DateRange): DateRangeQueryParams {\n if (dateRange.name)\n return { rangeName: dateRange.name };\n\n return {\n from: formatDateQueryParam(dateRange.startDate),\n to: formatDateQueryParam(dateRange.endDate)\n };\n}\n\nexport function useGetDateRangeFromQueryParams(\n dateRangePresets: DateRange[],\n dateRangeQueryParams: DateRangeQueryParams\n): DateRange | null {\n const { to, from, rangeName } = dateRangeQueryParams;\n \n const presetRange = getPresetRangeByName(dateRangePresets, rangeName);\n\n if (presetRange) {\n if (!from && !to)\n return presetRange;\n\n /**\n * If a rangeName has been set, we don't use to and from so we remove them from the url params.\n */\n AppRouteHelper.updateParams(\n getRouteQueryParams(presetRange),\n { replace: true, merge: true, keysToRemove: [ 'from', 'to' ]}\n );\n return;\n }\n\n const defaultDateRange = getDefaultDateRange(dateRangePresets);\n\n /**\n * If a param is missing, or one of them isn't a valid date, short-circuit the logic below.\n */\n if (!from || !to || !DateHelper.isValid(from) || !DateHelper.isValid(to)) {\n AppRouteHelper.updateParams(\n getRouteQueryParams(defaultDateRange),\n { replace: true, merge: true, keysToRemove: ['rangeName']}\n );\n return;\n }\n\n let initialDateRangeValid = true;\n\n let startDate = DateHelper.convertDateToUTC(new Date(from));\n let endDate = DateHelper.convertDateToUTC(new Date(to));\n\n if (DateHelper.isBefore(startDate, getMinDate(), 'day')) {\n startDate = getMinDate();\n initialDateRangeValid = false;\n }\n\n if (DateHelper.isAfter(endDate, getMaxDate(), 'day')) {\n endDate = getMaxDate();\n initialDateRangeValid = false;\n }\n\n if (DateHelper.isAfter(startDate, endDate)) {\n startDate = defaultDateRange.startDate;\n endDate = defaultDateRange.endDate;\n initialDateRangeValid = false;\n }\n\n const dateRange: DateRange = {\n startDate,\n endDate,\n name: initialDateRangeValid\n ? rangeName || 'custom'\n : ''\n };\n\n if (initialDateRangeValid)\n return dateRange;\n\n /**\n * If one or both of the date params were invalid, we trigger a route update.\n */\n AppRouteHelper.updateParams(getRouteQueryParams(dateRange), { replace: true, merge: true, keysToRemove: ['rangeName']});\n}\n\nexport function getStartEndParams(\n dateRangePresetss: DateRange[],\n filterParams: FilterQueryParams\n): { start: string; end: string } {\n const getStartDate = (date: string) => convertDateToUtcDateTimeString(DateHelper.startOf(date, 'day'));\n const getEndDate = (date: string) => convertDateToUtcDateTimeString(DateHelper.endOf(date, 'day'));\n\n const presetRange = getPresetRangeByName(dateRangePresetss, filterParams.rangeName);\n\n /**\n * If the user has chosen a preset range, lookup the start and end dates as they won't be\n * in the query params.\n */\n if (presetRange)\n return {\n start: getStartDate(formatDateQueryParam(presetRange.startDate)),\n end: getEndDate(formatDateQueryParam(presetRange.endDate))\n };\n\n /**\n * If they have chosen a custom date range, use their chosen start and end dates.\n */\n if (filterParams.from && filterParams.to)\n return {\n start: getStartDate(filterParams.from),\n end: getEndDate(filterParams.to)\n };\n\n /**\n * The below should never be hit\n */\n const defaultRange = getDefaultDateRange(dateRangePresetss);\n\n return {\n start: getStartDate(formatDateQueryParam(defaultRange.startDate)),\n end: getEndDate(formatDateQueryParam(defaultRange.endDate))\n };\n}","import { AnalyticsRequestFilter } from 'libs/shared/interfaces';\n\nexport function getAnalyticsRequestKey(baseKey: string, filter: AnalyticsRequestFilter, sharerId?: string): string {\n let key = `${baseKey}:${filter.start}:${filter.end}`;\n\n const userIdKey = Array.isArray(filter.userId) ? filter.userId.sort().join(':') : filter.userId;\n const groupIdKey = Array.isArray(filter.groupId) ? filter.groupId.sort().join(':') : filter.groupId;\n\n if (userIdKey)\n key += `:${userIdKey}`;\n\n if (groupIdKey)\n key += `:${groupIdKey}`;\n\n if (sharerId)\n key += `:${sharerId}`;\n\n return key;\n}","import { Core } from 'libs/common/core';\nimport { HashObject } from 'libs/common/react/interfaces';\nimport { ObjectHelper } from 'libs/common/react/utils/ObjectHelper';\n\nimport { ContextService } from 'libs/shared/services/ContextService';\n\ninterface UpdateParamsOptions extends Core.AppLinkOptions {\n merge?: boolean;\n keysToRemove?: string[]\n}\n\nexport const AppRouteHelper = {\n /**\n * Utility to update the params on the current appRoute.\n * \n * This is built on top of ContextService rather than build into AppLink\n * as we will generally only want to update params on appRoutes, not appLinks.\n */\n updateParams(params: HashObject, options?: UpdateParamsOptions): void {\n const { appLink } = ContextService.getCurrentRoute();\n\n let currentParams = typeof(appLink.params) === 'string'\n ? Core.LocationUtils.DeserializeQueryParams(appLink.params)\n : appLink.params as HashObject;\n\n if (options.keysToRemove)\n currentParams = ObjectHelper.omit(currentParams, options.keysToRemove);\n\n const updatedParams = options?.merge\n ? { ...currentParams, ...params }\n : params;\n\n const updatedAppLink = {\n ...appLink,\n params: updatedParams\n };\n\n /**\n * This prevents us pointlessly re-triggering if we're already on the right applink.\n */\n if (ObjectHelper.isEqual(appLink, updatedAppLink))\n return;\n \n Core.AppLinkHelper.trigger(updatedAppLink, ObjectHelper.omit(options, [ 'merge', 'keysToRemove' ]));\n }\n};","import React from 'react';\nimport { CopyToClipboard } from 'react-copy-to-clipboard';\n\nimport { IconButton } from 'libs/shared/components/icon-button/IconButton';\nimport { BaseObject, Classroom } from 'libs/shared/interfaces';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport { ImageUrls } from 'shared/constants/ImageUrls';\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\n\nimport { ShareType } from 'apps/share-v2/enums/ShareType';\nimport { Pincode } from 'apps/share-v2/interfaces/Pincode';\nimport { ShareLink } from 'apps/share-v2/interfaces/ShareLink';\n\ninterface ShareOptionsProps {\n sharedObject?: BaseObject;\n shareLink?: ShareLink;\n pinCode?: Pincode;\n classroom?: Classroom;\n}\n\nexport function ShareOptions(props: ShareOptionsProps) {\n const qrCodeValue = props.shareLink?.link?.shortenedUrl ?? '';\n\n if (!props.shareLink) return <></>;\n\n if (props.shareLink?.type === ShareType.Open) {\n return (\n <div className='d-flex gap-3'>\n <Card title='Step 1: Send students a link'>\n <ShareLinkCardContent shareLink={props.shareLink} qrCodeValue={qrCodeValue} />\n <div className='d-flex gap-2 align-items-center mt-3 mb-3'>\n <div className='border-top col'></div>\n <p className='p-0 m-0'>OR</p>\n <div className='border-top col'></div>\n </div>\n <p className='m-0 p-0'>Students go to:</p>\n <input className='form-control' value={'staging.clickview.net/pin'} readOnly />\n </Card>\n <Card title='Step 2: Students enter a join code'>\n <div className='d-flex flex-column m-4 border rounded-3 flex-grow-1 justify-content-center'>\n <div className='d-flex justify-content-center'>\n <h1 style={{ fontSize: 64 }} className='m-0 p-0'>{props.pinCode?.code}</h1>\n <CopyToClipboard text={props.pinCode?.code}>\n <IconButton\n svgName={cvSvgLibrary.Copy}\n className='btn'\n />\n </CopyToClipboard>\n </div>\n </div>\n </Card>\n </div>\n );\n }\n \n return (\n <div className='d-flex gap-3'>\n <div style={{ backgroundColor: '#EFF9F3' }} className='d-flex rounded-3 col border'>\n <div className='p-3'>\n <h5>Video has been assigned to your classroom!</h5>\n <p>\n Students have been notified through email and the video has been added to their home page on ClickView.\n </p>\n </div>\n <div className='d-flex flex-column me-3'>\n <div className='flex-grow-1' />\n <img style={{ maxHeight: 150 }} className='mt-3' src={ImageUrls.Share.STUDENT_FEED_TEMPLATE} />\n </div>\n </div>\n <Card title='Other ways to share'>\n <ShareLinkCardContent shareLink={props.shareLink} qrCodeValue={qrCodeValue} />\n </Card>\n </div>\n );\n}\n\ninterface CardProps {\n title: string;\n children: React.ReactNode;\n}\n\nfunction Card(props: CardProps): JSX.Element {\n return (\n <div style={{ overflow: 'hidden' }} className={`d-flex flex-column rounded-3 border col`}>\n <div style={{ backgroundColor: '#F8F8F8' }} className='p-3 border-bottom'>\n <h5 className='m-0 p-0'>{props.title}</h5>\n </div>\n <div className='d-flex flex-column p-3 flex-grow-1'>{props.children}</div>\n </div>\n );\n}\n\ninterface ShareLinkCardContentProps {\n shareLink?: ShareLink;\n qrCodeValue?: string;\n}\n\nfunction ShareLinkCardContent(props: ShareLinkCardContentProps): JSX.Element {\n return (\n <div className='d-flex flex-column'>\n <p className='m-0 p-0'>Share link to students:</p>\n <div className='d-flex gap-2'>\n <input className='form-control' value={props.shareLink?.link?.shortenedUrl ?? ''} readOnly />\n <CopyToClipboard text={props.shareLink?.link?.shortenedUrl ?? ''}>\n <IconButton\n svgName={cvSvgLibrary.Copy}\n className='btn btn-outline-dark'\n >\n Copy link\n </IconButton>\n </CopyToClipboard>\n </div>\n <div className='d-flex gap-2 mt-3 justify-content-between align-items-center'>\n <IconButton\n svgName={cvSvgLibrary.Print}\n className='btn btn-outline-dark'\n appLink={{\n application: AppChannels.INSIGHTS,\n action: Actions.Insights.QR_CODE,\n params: {\n value: props.qrCodeValue\n }\n }}\n >\n QR code\n </IconButton>\n <img style={{ maxHeight: 40 }} src={ImageUrls.Share.INTEGRATIONS} className='cursor-pointer' />\n </div>\n </div>\n );\n}","import React from 'react';\n\nimport { AppLinkHelper } from 'libs/common/backbone/core';\nimport { usePolling } from 'libs/common/react/hooks/UsePolling';\nimport { useViewModel } from 'libs/common/react/hooks/UseViewModel';\nimport { Flight } from 'libs/common/react/index';\n\nimport { EngagementTable } from 'libs/shared/apps/analytics/components/engagement-table/EngagementTable';\nimport { useAnonSessions } from 'libs/shared/apps/analytics/hooks/UseAnonSessions';\nimport { useChunkedUsersResponse } from 'libs/shared/apps/analytics/hooks/UseEngagementUsers';\nimport { AnalyticsFilterHelper } from 'libs/shared/apps/analytics/utils/AnalyticsFilterUtils';\nimport { getAudienceParams } from 'libs/shared/apps/analytics/utils/AudienceUtils';\nimport { getInsightsDateRangePresets, getStartEndParams } from 'libs/shared/apps/analytics/utils/DateRangeUtils';\nimport { getFilterParamsKey } from 'libs/shared/apps/analytics/utils/FilterParamUtils';\nimport { ActionButton } from 'libs/shared/components/actions/ActionButton';\nimport { Breadcrumbs, PartialBreadcrumbs } from 'libs/shared/components/breadcrumbs/Breadcrumbs';\nimport { IconButton } from 'libs/shared/components/icon-button/IconButton';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { ConfigRequests } from 'libs/shared/flight-requests/ConfigRequests';\nimport { PlaylistRequests } from 'libs/shared/flight-requests/PlaylistRequests';\nimport { SeriesRequests } from 'libs/shared/flight-requests/SeriesRequests';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { VideoViewRequests } from 'libs/shared/flight-requests/VideoViewRequests';\nimport { useFetchAll } from 'libs/shared/hooks/UseFetchAll';\nimport { useHandleObjectError } from 'libs/shared/hooks/UseHandleObjectError';\nimport { useLockContentWidth } from 'libs/shared/hooks/useLockContentWidth';\nimport { useSetPageMetadata } from 'libs/shared/hooks/useSetPageMetadata';\nimport { useSettings } from 'libs/shared/hooks/useSettings';\nimport { AnalyticsRequestFilter, Classroom, Config, CurrentUser, Engagement, IndividualEngagementResponse, Playlist, Series, User, VideoTypes } from 'libs/shared/interfaces';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\nimport { ViewModelKeys } from 'shared/constants/LiteViewModels';\nimport { getObjectAppLink } from 'shared/utils/ObjectAppLinkHelper';\n\nimport { ClassroomRequests } from 'apps/classrooms/flight-requests/ClassroomRequests';\nimport { ShareOptions } from 'apps/insights/components/share-options-v2/ShareOptions';\nimport { ShareType } from 'apps/share-v2/enums/ShareType';\nimport { ShareRequests } from 'apps/share-v2/flight-requests/ShareRequests';\nimport { Pincode } from 'apps/share-v2/interfaces/Pincode';\nimport { ShareLink } from 'apps/share-v2/interfaces/ShareLink';\nimport { ShareLinkHelper } from 'apps/share-v2/utils/ShareLinkHelper';\n\ninterface ShareOptionsViewProps {\n objectId: string;\n typeId: MasterType;\n shareId?: string;\n}\n\nexport function ShareOptionsView(props: ShareOptionsViewProps) {\n const [anonymiseUsers] = useViewModel<boolean>(ViewModelKeys.ANONYMISE_USERS);\n\n const fetch = Flight.useGetFetch();\n\n const config = Flight.useBasicFetch<Config>(ConfigRequests.config());\n const shareLink = Flight.useBasicFetch<ShareLink>(props.shareId && ShareRequests.getShareLink(props.shareId));\n const pinCode = Flight.useBasicFetch<Pincode>(props.shareId && ShareRequests.getPincodeByShareId(props.shareId));\n const classRoomId = ShareLinkHelper.getClassroomId(shareLink.data);\n const classroom = Flight.useBasicFetch<Classroom>(classRoomId && ClassroomRequests.getClassroom(classRoomId));\n\n const { publicInteractiveAttempts } = useSettings(null);\n\n const isVideo = () => [ MasterType.Video, MasterType.Clip, MasterType.Interactive ].includes(props.typeId);\n const isSeries = () => props.typeId === MasterType.Series;\n const isPlaylist = () => props.typeId === MasterType.Playlist;\n\n const videoRequest = isVideo() && VideoHelper.getVideoRequest(props.objectId, props.typeId);\n const video = Flight.useBasicFetch<VideoTypes>(videoRequest);\n\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n const seriesRequest = isSeries() && SeriesRequests.series(props.objectId);\n const series = Flight.useBasicFetch<Series>(seriesRequest);\n\n const playlistRequest = isPlaylist() && PlaylistRequests.getPlaylist(props.objectId);\n const playlist = Flight.useBasicFetch<Playlist>(playlistRequest);\n\n const audienceAppLinkParams = AnalyticsFilterHelper.getAudienceAppLinkParams();\n const dateRangeAppLinkParams = AnalyticsFilterHelper.getDateRangeAppLinkParams();\n\n const requestFilter: AnalyticsRequestFilter = {\n ...getStartEndParams(getInsightsDateRangePresets(), dateRangeAppLinkParams),\n ...getAudienceParams(audienceAppLinkParams)\n };\n\n const engagementRequest = currentUser.data &&\n VideoViewRequests.individualEngagement(\n props.objectId,\n requestFilter,\n currentUser.data?.id,\n publicInteractiveAttempts\n );\n const individualEngagement = Flight.useBasicFetch<IndividualEngagementResponse>(engagementRequest);\n usePolling(() => fetch(engagementRequest), 5000);\n\n const userIds = individualEngagement.data?.data?.map(d => d.userId).filter(Boolean) || [];\n \n const { users, isLoading } = useChunkedUsersResponse(userIds);\n const anonSessions = useAnonSessions(props.shareId);\n\n const fakeEngagement = useGetFakeEngagement(currentUser.data, shareLink.data, individualEngagement.data);\n\n useLockContentWidth();\n useSetPageMetadata({ title: video.data?.name ?? series.data?.name ?? playlist.data?.name });\n useHandleObjectError([ video, series, playlist ]);\n\n const tableDataLoaded = !!individualEngagement.data && (!userIds.length || !isLoading);\n const tableRowsWillBeEmpty = !fakeEngagement.length;\n const showTableEmptyState = !tableDataLoaded || tableRowsWillBeEmpty;\n\n console.log({\n individualEngagementLength: individualEngagement.data?.data.length,\n userIdsLength: userIds.length,\n anonSessionsLength: Object.keys(anonSessions).length,\n fakeEngagementLength: fakeEngagement.length\n });\n\n function renderEmptyState() {\n if (!shareLink.data) {\n return (\n <div style={{ minHeight: 300 }} className='border border-top-0 rounded-1 rounded-top-0 pt-5 pb-5 text-center'>\n </div>\n );\n }\n\n if (shareLink.data?.type === ShareType.Open) {\n const appLink = getViewReportAppLink();\n const url = AppLinkHelper.getHref(appLink);\n\n return (\n <div style={{ minHeight: 300 }} className='d-flex flex-column align-items-center border border-top-0 rounded-1 rounded-top-0 pt-4 pb-4 text-center'>\n <h4 className='mt-4'>Share open session to start collecting views...</h4>\n <a href={url} className='text-info'>View full report</a>\n </div>\n );\n }\n\n return (\n <div style={{ minHeight: 300 }} className='border border-top-0 rounded-1 rounded-top-0 pt-4 pb-4 text-center'>\n <h4>Waiting for students to view...</h4>\n </div>\n );\n }\n\n function getViewReportAppLink() {\n const actions: Partial<Record<MasterType, string>> = {\n [MasterType.Video]: Actions.Insights.VIDEO_OVERVIEW,\n [MasterType.Clip]: Actions.Insights.CLIP_OVERVIEW,\n [MasterType.Interactive]: Actions.Insights.INTERACTIVE_OVERVIEW\n };\n \n return {\n application: AppChannels.INSIGHTS,\n action: actions[props.typeId],\n args: [props.objectId],\n params: {\n shareId: props.shareId\n }\n };\n }\n\n function renderBreadCrumbs() {\n if (!video.data) return <PartialBreadcrumbs />;\n\n const breadcrumbs = [{\n name: 'Reports',\n appLink: {\n application: AppChannels.MY_SHARES,\n action: Actions.MyShares.HOME\n }\n },\n {\n name: video.data.name,\n active: false\n },\n {\n name: 'Share information',\n active: true\n }];\n\n return <Breadcrumbs breadcrumbs={breadcrumbs} />;\n }\n\n return (\n <div className='px-3'>\n <div className='d-flex justify-content-between align-items-center mb-3'>\n {renderBreadCrumbs()}\n <div className='d-flex align-items-center gap-2'>\n <ActionButton\n appLink={video.data ? getObjectAppLink(video.data) : undefined}\n className='btn btn-outline-dark ms-auto'\n >\n Go to video\n </ActionButton>\n <IconButton\n svgName={cvSvgLibrary.File}\n appLink={getViewReportAppLink()}\n className='btn btn-dark ms-auto'\n >\n View full report\n </IconButton>\n </div>\n </div>\n\n {shareLink.data?.type === ShareType.Open && <h1 className='mb-4'>Share your open classroom:</h1>}\n\n <ShareOptions\n sharedObject={video.data ?? series.data ?? playlist.data}\n shareLink={shareLink.data}\n pinCode={pinCode.data}\n classroom={classroom.data}\n />\n \n <div className='d-flex align-items-center mt-5'>\n <h3 className='p-0 m-0'>{shareLink.data?.type === ShareType.Classroom ? 'Students who have viewed: 0/30' : 'Students who have viewed this video'}</h3>\n {shareLink.data?.type === ShareType.Classroom && (\n <IconButton\n svgName={cvSvgLibrary.Edit}\n onClick={() => console.log('Add new student..')}\n className='btn btn-outline-dark ms-auto'\n >\n Edit recipients\n </IconButton>\n )}\n </div>\n \n <div className='col-12 mt-2 mb-5'>\n <EngagementTable\n key={getFilterParamsKey({ ...audienceAppLinkParams, ...dateRangeAppLinkParams })}\n engagement={fakeEngagement}\n users={users ?? []}\n imageCdnUrl={config.data?.imageCdnUrl}\n anonymiseUsers={anonymiseUsers}\n border\n anonSessions={anonSessions}\n hideWhenEmpty={false}\n theme={{\n header: showTableEmptyState ? 'border-0' : 'border-bottom',\n table: showTableEmptyState ? 'bg-white rounded px-0 rounded-bottom-0' : 'bg-white rounded px-0'\n }}\n />\n {showTableEmptyState && renderEmptyState()}\n </div>\n </div>\n );\n}\n\nfunction useGetFakeEngagement(\n currentUser: CurrentUser,\n shareLink: ShareLink,\n individualEngagement: IndividualEngagementResponse\n) {\n const fetch = Flight.useGetFetch();\n\n const classroomId = shareLink?.recipients?.[0]?.recipientTypeId === MasterType.Classroom &&\n shareLink.recipients[0].recipientId;\n\n const getClassroomRequest = (cursor: string) => classroomId\n && ClassroomRequests.getClassroomStudents(classroomId, cursor);\n const clasroomStudents = useFetchAll<User>(\n getClassroomRequest,\n cursor => fetch(getClassroomRequest(cursor))\n );\n\n const engagementMap = individualEngagement?.data?.reduce<Record<string, Engagement>>((prev, next) =>\n ({ ...prev, [next.userId]: next }), {}) ?? {};\n \n const fakeEngagement = clasroomStudents.items?.length ?\n clasroomStudents.items.map<Engagement>(user => {\n const engagement = engagementMap[user.id];\n\n if (engagement)\n return null;\n\n return {\n customerId: currentUser?.customerId,\n engagementRate: 0,\n heatMap: [],\n userId: user.id,\n videoDuration: 500,\n viewCount: 0,\n videoId: null,\n userIds: [],\n sessionId: null,\n sessionIds: [],\n user\n };\n }).filter(e => !!e)\n : [];\n\n return [ ...individualEngagement?.data ?? [], ...fakeEngagement ];\n}","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}","export enum ShareType {\n Link = 'Link',\n Classroom = 'Classroom',\n Open = 'Open',\n Live = 'Live'\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 { MasterType } from 'libs/shared/enums/MasterType';\nimport { BasePaginatedCollection } from 'libs/shared/interfaces';\n\nimport { CreateShareLinkRequest } from 'apps/share-v2/interfaces/CreateShareLinkRequest';\nimport { ShareLink } from 'apps/share-v2/interfaces/ShareLink';\n\nconst normalizeOptions: Flight.NormalizeOptions = {\n namespace: 'share-v2'\n};\n\nexport interface GetSentSharesParams {\n cursor?: string;\n limit?: number;\n objectTypeId?: MasterType | MasterType[];\n recipientUserId?: string | string[];\n recipientGroupId?: string | string[];\n start?: string;\n end?: string;\n scopeId?: string;\n}\n\nexport const ShareRequests = {\n createShareLink(\n data: CreateShareLinkRequest,\n success?: (shareLink: ShareLink) => void,\n error?: () => void,\n always?: () => void\n ): Flight.Request {\n return {\n url: '/api/share/v2/shares',\n key: 'create:share-v2:link',\n type: HttpVerbs.POST,\n data,\n normalizeOptions,\n invalidationKeys: [\n `share:link:object:${data.objectId}`,\n `privacy:${data.objectId}`,\n 'sent:shares',\n 'get:share-v2:shares:object'\n ],\n success,\n error,\n always\n };\n },\n\n getShareLink(\n shareId: string,\n success?: (shareLink: ShareLink) => void,\n error?: () => void,\n always?: () => void\n ): Flight.Request {\n return {\n url: `/api/share/v2/shares/${shareId}`,\n key: `get:share-v2:link:${shareId}`,\n type: HttpVerbs.GET,\n normalizeOptions,\n success,\n error,\n always\n };\n },\n\n getSharesByObjectId(\n objectId: string | number,\n success?: (shares: ShareLink[]) => void,\n error?: () => void,\n always?: () => void\n ): Flight.Request {\n return {\n url: `/api/share/v2/shares/objects/${objectId}`,\n key: `get:share-v2:shares:object:${objectId}`,\n type: HttpVerbs.GET,\n normalizeOptions,\n success,\n error,\n always\n };\n },\n\n getSentShares(\n params: GetSentSharesParams = {},\n success?: (response: BasePaginatedCollection<ShareLink>[]) => void,\n error?: () => void,\n always?: () => void\n ): Flight.Request {\n const adaptedParams = {\n scopeId: params.scopeId,\n limit: params.limit || 25,\n offset: parseInt(params.cursor) || 0\n };\n\n const key = Object.values(adaptedParams).join(':');\n\n return {\n url: UrlHelper.urlBuilder('/api/share/v2/shares/sent', adaptedParams),\n key: `sent:shares-v2:${key}`,\n formatData: (response: ShareLink[]) => {\n return {\n data: response,\n count: response.length,\n pagination: {\n cursors: {\n next: adaptedParams.offset + response.length\n }\n }\n };\n },\n type: HttpVerbs.GET,\n normalize: false,\n success,\n error,\n always\n };\n },\n\n createPincode(shareId: string): Flight.Request {\n return {\n url: `/api/share/v2/shares/${shareId}/pincode`,\n key: 'create:share-v2:pincode',\n type: HttpVerbs.POST\n };\n },\n\n getPincode(code: string): Flight.Request {\n return {\n url: `/api/share/v2/shares/pincode?code=${code}`,\n key: `get:share-v2:pincode:${code}`\n };\n },\n\n getPincodeByShareId(shareId: string): Flight.Request {\n return {\n url: `/api/share/v2/shares/${shareId}/pincode`,\n key: `get:share-v2:${shareId}:pincode`\n };\n }\n};","import { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { DateHelper } from 'libs/common/react/utils/DateHelper';\n\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { ShareLinkStatus } from 'libs/shared/enums/ShareLinkStatus';\nimport { 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\nimport { SharePrivacy } from '../enums/SharePrivacy';\nimport { ShareType } from '../enums/ShareType';\nimport { ShareLink } from '../interfaces/ShareLink';\n\nconst namespace = 'share.shareLinkInfo';\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\n\nexport const ShareLinkHelper = {\n getPrivateIconAndText: (options: GetIconAndTextOptions) => {\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 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 getClassroomId(shareLink: ShareLink | undefined): string {\n if (!shareLink)\n return '';\n\n if (shareLink.type !== ShareType.Classroom)\n return '';\n\n const classroom = shareLink.recipients?.find(r => r.recipientTypeId === MasterType.Classroom);\n\n if (classroom)\n return classroom.recipientId.toString();\n\n const recipientWithScope = shareLink.recipients?.find(r => r.scopeId);\n\n return recipientWithScope?.scopeId.toString() || '';\n }\n};","\"use strict\";\n\nvar deselectCurrent = require(\"toggle-selection\");\n\nvar clipboardToIE11Formatting = {\n \"text/plain\": \"Text\",\n \"text/html\": \"Url\",\n \"default\": \"Text\"\n}\n\nvar defaultMessage = \"Copy to clipboard: #{key}, Enter\";\n\nfunction format(message) {\n var copyKey = (/mac os x/i.test(navigator.userAgent) ? \"⌘\" : \"Ctrl\") + \"+C\";\n return message.replace(/#{\\s*key\\s*}/g, copyKey);\n}\n\nfunction copy(text, options) {\n var debug,\n message,\n reselectPrevious,\n range,\n selection,\n mark,\n success = false;\n if (!options) {\n options = {};\n }\n debug = options.debug || false;\n try {\n reselectPrevious = deselectCurrent();\n\n range = document.createRange();\n selection = document.getSelection();\n\n mark = document.createElement(\"span\");\n mark.textContent = text;\n // avoid screen readers from reading out loud the text\n mark.ariaHidden = \"true\"\n // reset user styles for span element\n mark.style.all = \"unset\";\n // prevents scrolling to the end of the page\n mark.style.position = \"fixed\";\n mark.style.top = 0;\n mark.style.clip = \"rect(0, 0, 0, 0)\";\n // used to preserve spaces and line breaks\n mark.style.whiteSpace = \"pre\";\n // do not inherit user-select (it may be `none`)\n mark.style.webkitUserSelect = \"text\";\n mark.style.MozUserSelect = \"text\";\n mark.style.msUserSelect = \"text\";\n mark.style.userSelect = \"text\";\n mark.addEventListener(\"copy\", function(e) {\n e.stopPropagation();\n if (options.format) {\n e.preventDefault();\n if (typeof e.clipboardData === \"undefined\") { // IE 11\n debug && console.warn(\"unable to use e.clipboardData\");\n debug && console.warn(\"trying IE specific stuff\");\n window.clipboardData.clearData();\n var format = clipboardToIE11Formatting[options.format] || clipboardToIE11Formatting[\"default\"]\n window.clipboardData.setData(format, text);\n } else { // all other browsers\n e.clipboardData.clearData();\n e.clipboardData.setData(options.format, text);\n }\n }\n if (options.onCopy) {\n e.preventDefault();\n options.onCopy(e.clipboardData);\n }\n });\n\n document.body.appendChild(mark);\n\n range.selectNodeContents(mark);\n selection.addRange(range);\n\n var successful = document.execCommand(\"copy\");\n if (!successful) {\n throw new Error(\"copy command was unsuccessful\");\n }\n success = true;\n } catch (err) {\n debug && console.error(\"unable to copy using execCommand: \", err);\n debug && console.warn(\"trying IE specific stuff\");\n try {\n window.clipboardData.setData(options.format || \"text\", text);\n options.onCopy && options.onCopy(window.clipboardData);\n success = true;\n } catch (err) {\n debug && console.error(\"unable to copy using clipboardData: \", err);\n debug && console.error(\"falling back to prompt\");\n message = format(\"message\" in options ? options.message : defaultMessage);\n window.prompt(message, text);\n }\n } finally {\n if (selection) {\n if (typeof selection.removeRange == \"function\") {\n selection.removeRange(range);\n } else {\n selection.removeAllRanges();\n }\n }\n\n if (mark) {\n document.body.removeChild(mark);\n }\n reselectPrevious();\n }\n\n return success;\n}\n\nmodule.exports = copy;\n","\"use strict\";\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.CopyToClipboard = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _copyToClipboard = _interopRequireDefault(require(\"copy-to-clipboard\"));\n\nvar _excluded = [\"text\", \"onCopy\", \"options\", \"children\"];\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar CopyToClipboard = /*#__PURE__*/function (_React$PureComponent) {\n _inherits(CopyToClipboard, _React$PureComponent);\n\n var _super = _createSuper(CopyToClipboard);\n\n function CopyToClipboard() {\n var _this;\n\n _classCallCheck(this, CopyToClipboard);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _super.call.apply(_super, [this].concat(args));\n\n _defineProperty(_assertThisInitialized(_this), \"onClick\", function (event) {\n var _this$props = _this.props,\n text = _this$props.text,\n onCopy = _this$props.onCopy,\n children = _this$props.children,\n options = _this$props.options;\n\n var elem = _react[\"default\"].Children.only(children);\n\n var result = (0, _copyToClipboard[\"default\"])(text, options);\n\n if (onCopy) {\n onCopy(text, result);\n } // Bypass onClick if it was present\n\n\n if (elem && elem.props && typeof elem.props.onClick === 'function') {\n elem.props.onClick(event);\n }\n });\n\n return _this;\n }\n\n _createClass(CopyToClipboard, [{\n key: \"render\",\n value: function render() {\n var _this$props2 = this.props,\n _text = _this$props2.text,\n _onCopy = _this$props2.onCopy,\n _options = _this$props2.options,\n children = _this$props2.children,\n props = _objectWithoutProperties(_this$props2, _excluded);\n\n var elem = _react[\"default\"].Children.only(children);\n\n return /*#__PURE__*/_react[\"default\"].cloneElement(elem, _objectSpread(_objectSpread({}, props), {}, {\n onClick: this.onClick\n }));\n }\n }]);\n\n return CopyToClipboard;\n}(_react[\"default\"].PureComponent);\n\nexports.CopyToClipboard = CopyToClipboard;\n\n_defineProperty(CopyToClipboard, \"defaultProps\", {\n onCopy: undefined,\n options: undefined\n});","\"use strict\";\n\nvar _require = require('./Component'),\n CopyToClipboard = _require.CopyToClipboard;\n\nCopyToClipboard.CopyToClipboard = CopyToClipboard;\nmodule.exports = CopyToClipboard;","\nmodule.exports = function () {\n var selection = document.getSelection();\n if (!selection.rangeCount) {\n return function () {};\n }\n var active = document.activeElement;\n\n var ranges = [];\n for (var i = 0; i < selection.rangeCount; i++) {\n ranges.push(selection.getRangeAt(i));\n }\n\n switch (active.tagName.toUpperCase()) { // .toUpperCase handles XHTML\n case 'INPUT':\n case 'TEXTAREA':\n active.blur();\n break;\n\n default:\n active = null;\n break;\n }\n\n selection.removeAllRanges();\n return function () {\n selection.type === 'Caret' &&\n selection.removeAllRanges();\n\n if (!selection.rangeCount) {\n ranges.forEach(function(range) {\n selection.addRange(range);\n });\n }\n\n active &&\n active.focus();\n };\n};\n"],"names":["useChunkedUsersResponse","usersIds","userIdChunks","usersResponse","map","chunk","users","data","isLoading","hasCompleted","AnalyticsFilterHelper","getAudienceAppLinkParams","appLink","params","classrooms","classroomGroups","getParam","key","param","Array","isArray","audienceFilters","getDateRangeAppLinkParams","from","to","rangeName","dateRangeFilters","getPhrase","convertDateToUtcDateTimeString","date","utc","getInsightsDateRangePresets","minDate","Date","currentYear","getFullYear","isMinDateThisYear","name","startDate","endDate","getMonth","disabled","tooltip","default","formatDateQueryParam","getStartEndParams","dateRangePresetss","filterParams","getStartDate","getEndDate","presetRange","find","p","getPresetRangeByName","start","end","defaultRange","range","getAnalyticsRequestKey","baseKey","filter","sharerId","userIdKey","userId","sort","join","groupIdKey","groupId","AppRouteHelper","updateParams","options","currentParams","keysToRemove","updatedParams","merge","updatedAppLink","ShareOptions","props","qrCodeValue","shareLink","link","shortenedUrl","type","ShareType","className","Card","title","ShareLinkCardContent","value","readOnly","style","fontSize","pinCode","code","CopyToClipboard","text","IconButton","svgName","backgroundColor","maxHeight","src","ImageUrls","overflow","children","application","action","ShareOptionsView","anonymiseUsers","fetch","config","ConfigRequests","shareId","ShareRequests","classRoomId","ShareLinkHelper","classroom","ClassroomRequests","publicInteractiveAttempts","useSettings","videoRequest","MasterType","includes","typeId","VideoHelper","objectId","video","currentUser","UserRequests","seriesRequest","SeriesRequests","series","playlistRequest","PlaylistRequests","playlist","audienceAppLinkParams","dateRangeAppLinkParams","requestFilter","engagementRequest","VideoViewRequests","id","individualEngagement","userIds","d","Boolean","anonSessions","fakeEngagement","classroomId","recipients","recipientTypeId","recipientId","getClassroomRequest","cursor","clasroomStudents","engagementMap","reduce","prev","next","items","length","user","customerId","engagementRate","heatMap","videoDuration","viewCount","videoId","sessionId","sessionIds","e","useGetFakeEngagement","useLockContentWidth","useSetPageMetadata","tableDataLoaded","tableRowsWillBeEmpty","showTableEmptyState","getViewReportAppLink","actions","args","console","log","individualEngagementLength","userIdsLength","anonSessionsLength","Object","keys","fakeEngagementLength","breadcrumbs","active","Breadcrumbs","renderBreadCrumbs","ActionButton","undefined","sharedObject","onClick","EngagementTable","engagement","imageCdnUrl","border","hideWhenEmpty","theme","header","table","minHeight","url","href","renderEmptyState","SharePrivacy","normalizeOptions","namespace","createShareLink","success","error","always","invalidationKeys","getShareLink","getSharesByObjectId","getSentShares","adaptedParams","scopeId","limit","offset","parseInt","values","formatData","response","count","pagination","cursors","normalize","createPincode","getPincode","getPincodeByShareId","getPrivateIconAndText","entityTypeId","privacy","hasStudentExp","entity","yearGroups","icon","getRespectRatingText","getIconAndText","linkExpireDate","isPasswordProtected","status","isToday","dayDifference","days","restriction","_restrictions","yearGroup","maxYearGroup","minAllowedYearGroup","rating","getClassroomId","r","toString","recipientWithScope","deselectCurrent","clipboardToIE11Formatting","module","exports","debug","message","reselectPrevious","selection","mark","document","createRange","getSelection","createElement","textContent","ariaHidden","all","position","top","clip","whiteSpace","webkitUserSelect","MozUserSelect","msUserSelect","userSelect","addEventListener","stopPropagation","format","preventDefault","clipboardData","warn","window","clearData","setData","onCopy","body","appendChild","selectNodeContents","addRange","execCommand","Error","err","copyKey","test","navigator","userAgent","replace","prompt","removeRange","removeAllRanges","removeChild","_typeof","obj","Symbol","iterator","constructor","prototype","defineProperty","_react","_interopRequireDefault","_copyToClipboard","_excluded","__esModule","ownKeys","object","enumerableOnly","getOwnPropertySymbols","symbols","sym","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","target","i","arguments","source","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","_defineProperties","descriptor","configurable","writable","_setPrototypeOf","o","setPrototypeOf","__proto__","_assertThisInitialized","self","ReferenceError","_getPrototypeOf","getPrototypeOf","_React$PureComponent","subClass","superClass","TypeError","create","_inherits","Constructor","protoProps","Derived","hasNativeReflectConstruct","_super","Reflect","construct","sham","Proxy","valueOf","call","_isNativeReflectConstruct","result","Super","NewTarget","this","_possibleConstructorReturn","_this","instance","_classCallCheck","_len","_key","concat","event","_this$props","elem","Children","only","_this$props2","excluded","sourceKeys","indexOf","_objectWithoutPropertiesLoose","sourceSymbolKeys","propertyIsEnumerable","_objectWithoutProperties","cloneElement","PureComponent","rangeCount","activeElement","ranges","getRangeAt","tagName","toUpperCase","blur","focus"],"sourceRoot":""}
@@ -0,0 +1,2 @@
1
+ "use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[7548],{98692:(e,a,t)=>{t.r(a),t.d(a,{InteractiveInsightsOverviewView:()=>W});var i=t(32735),n=t(23481),s=t(2948),r=t(20354),d=t(75896),c=t(5255),l=t(41196),o=t(26025),u=t(74901),m=t(40003),v=t(38143),p=t(16714),h=t(39151),g=t(20768),I=t(31949),b=t(17913),E=t(91286),f=t(93322),y=t(22902),A=t(79612),S=t(37802),k=t(88630),N=t(53936),w=t(54948),F=t(10447),O=t(14070),T=t(97291),B=t(82602),C=t(30439),L=t(65853),j=t(64249),x=t(91693),P=t(83345),R=t(1666),U=t(35223),V=t(86099),D=t(24758),_="insights.shareInfo";function M(e){var a,t,n,s,d,c=r.a.useBasicFetch(h.L.config()),l=(0,S.r)(null).publicInteractiveAttempts,o=Object.assign(Object.assign({},(0,m.wO)((0,m.Hb)(),e.dateRangeAppLinkParams)),(0,u.K)(e.audienceAppLinkParams)),v=r.a.useBasicFetch(I.N.currentUser()),p=r.a.useBasicFetch(e.video&&C.o.getShareLinkByObjectId(e.video.id)),g=r.a.useBasicFetch(e.video&&C.o.getSentDirectShareByObjectId(e.video.id)),E=r.a.useBasicFetch((null===(a=v.data)||void 0===a?void 0:a.customerId)&&j.I.getDirectShareRecipientsRequest(v.data.customerId,g.data)),f=r.a.useBasicFetch(v.data&&e.video&&b.u.views(o,e.video.id,v.data.id,l)),y=r.a.useBasicFetch(e.video&&C.o.getPrivacy(e.video.id)),A=r.a.useBasicFetch((null===(t=v.data)||void 0===t?void 0:t.isAuthenticated)&&R.h.yearGroups(v.data.customerId)),k=p.hasCompleted&&!p.data&&g.hasCompleted&&!g.data,N=p.hasCompleted&&p.data||g.hasCompleted&&g.data&&(!p.data||y.data)&&(!p.data||A.data)&&E.data&&f.data,w=p.data&&y.data&&A.data&&L.R.getIconAndText({entity:e.video,entityTypeId:e.video.typeId,hasStudentExp:!1,isPasswordProtected:p.data.isPasswordProtected,linkExpireDate:p.data.linkExpireDate,privacy:y.data,status:p.data.status,yearGroups:A.data}),F=i.useMemo((function(){var e;return null===(e=f.data)||void 0===e?void 0:e.data.reduce((function(e,a){return a.count+e}),0)}),[f.data]),O=(null===(n=g.data)||void 0===n?void 0:n.dateCreated)||(null===(s=p.data)||void 0===s?void 0:s.dateCreated);return i.createElement("div",{className:"mb-4"},N&&i.createElement(i.Fragment,null,i.createElement("h2",{className:"h4"},i.createElement(P.x,{namespace:_,phrase:"shareInfo"})),i.createElement("div",{className:"d-flex border p-3 rounded-3 align-items-center justify-content-between"},i.createElement("div",{className:"d-flex align-items-center gap-2"},i.createElement(D.A,{shareRecipients:E.data,imageCdnUrl:null===(d=c.data)||void 0===d?void 0:d.imageCdnUrl,hasShareLink:!!p.data,maxAvatars:4,shareLinkText:null==w?void 0:w.text}),"·",i.createElement("p",{className:"mb-0"},(0,B.WU)(O)),!!F&&i.createElement(i.Fragment,null,"·",i.createElement("p",{className:"mb-0"},i.createElement(P.x,{namespace:_,phrase:"views",options:{smartCount:F}})))),i.createElement(x.h,{appLink:(0,V.YK)(e.video),svgName:U.vn.Share,className:"btn btn-outline-dark"},i.createElement(P.x,{namespace:_,phrase:"share"})))),!k&&!N&&i.createElement(i.Fragment,null,i.createElement("div",{className:"h4 partial-loading-background w-25"}," "),i.createElement("div",{className:"p-3 rounded partial-loading-background"},i.createElement("p",{className:"mb-1"}," "))))}function G(e,a){(null==a||a>e.length)&&(a=e.length);for(var t=0,i=Array(a);t<a;t++)i[t]=e[t];return i}var H=n.T.encloseNamespace("insights.interactiveInsightsOverviewView");function W(e){var a,t,n,B,C,L,j,x,P,R=(x=(0,s.D)(v.g.ANONYMISE_USERS),P=1,function(e){if(Array.isArray(e))return e}(x)||function(e,a){var t=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=t){var i,n,s,r,d=[],c=!0,l=!1;try{if(s=(t=t.call(e)).next,0===a){if(Object(t)!==t)return;c=!1}else for(;!(c=(i=s.call(t)).done)&&(d.push(i.value),d.length!==a);c=!0);}catch(e){l=!0,n=e}finally{try{if(!c&&null!=t.return&&(r=t.return(),Object(r)!==r))return}finally{if(l)throw n}}return d}}(x,P)||function(e,a){if(e){if("string"==typeof e)return G(e,a);var t={}.toString.call(e).slice(8,-1);return"Object"===t&&e.constructor&&(t=e.constructor.name),"Map"===t||"Set"===t?Array.from(e):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?G(e,a):void 0}}(x,P)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}())[0];(0,f.F)();var U=(0,S.r)(null).hasShareFlowV2,V=(0,y.T)().hasPermissions,D=(0,S.r)(null).publicInteractiveAttempts,_=r.a.useBasicFetch(I.N.currentUser()),W=r.a.useBasicFetch(h.L.config()),K=r.a.useBasicFetch(g.b.interactiveMetadata(e.interactiveId)),Y=r.a.useBasicFetch((null===(a=K.data)||void 0===a?void 0:a.interactiveId)&&g.b.interactive(K.data.interactiveId)),q=o.B.getAudienceAppLinkParams(),Q=o.B.getDateRangeAppLinkParams(),$=Object.assign(Object.assign({},(0,m.wO)((0,m.Hb)(),Q)),(0,u.K)(q)),z=(0,l.W)(e.interactiveId,$,!0),J=1===(null===(t=q.classrooms)||void 0===t?void 0:t.length)&&!(null===(n=q.classroomGroups)||void 0===n?void 0:n.length),X=r.a.useBasicFetch(J&&k.F.getClassroomStudents(d.m.first(q.classrooms))),Z=r.a.useBasicFetch(z.data&&b.u.aggregateEngagement(e.interactiveId,$,_.data.id,D)),ee=r.a.useBasicFetch(_.data&&z.data&&b.u.views($,e.interactiveId,_.data.id,D)),ae=(0,c.Y)(e.shareId),te=!!e.shareId;(0,A.M)({title:K.data?H("pageTitle",{video:null===(B=K.data)||void 0===B?void 0:B.name}):null}),(0,E.v)([Y,K,z]);var ie=_.data&&W.data&&K.data&&Y.data&&z.data&&(!J||X.data)&&Z.data&&!!ee.data,ne=Object.assign(Object.assign(Object.assign({},q),Q),{shareId:e.shareId}),se=function(e,a){return{resultsAppLink:{application:T.O.INSIGHTS,action:O.e.Insights.INTERACTIVE_STUDENTS,args:[e],params:a},questionsAppLink:{application:T.O.INSIGHTS,action:O.e.Insights.INTERACTIVE_QUESTIONS,args:[e],params:a},heatmapAppLink:{application:T.O.INSIGHTS,action:O.e.Insights.INTERACTIVE_HEATMAP,args:[e],params:a}}}(null===(C=K.data)||void 0===C?void 0:C.id,ne);return i.createElement("div",{className:"px-3"},i.createElement(N.j,{video:K.data,dateRangeAppLinkParams:Q,tabs:(0,F.kj)(null===(L=K.data)||void 0===L?void 0:L.id,"insights",ne),hasAnalytics:V(p.C.ViewCustomerAnalytics),analyticsWebUrl:null===(j=W.data)||void 0===j?void 0:j.analyticsWebUrl,hasShareFlowV2:U,shareId:e.shareId}),i.createElement(M,{audienceAppLinkParams:q,dateRangeAppLinkParams:Q,video:K.data}),i.createElement(w.m,{aggregateEngagement:Z.data,interactive:Y.data,interactiveMetadata:K.data,interactiveInsightsAppLinks:se,classroomStudents:X.data,results:z.data,videoViews:ee.data,config:W.data,classroomFilterOnly:J,anonymiseUsers:R,params:ne,hasDataLoaded:ie,hasShared:te,shareId:e.shareId,anonSessions:ae}))}}}]);
2
+ //# sourceMappingURL=7548-5eb0d3b7a0-lite.chunk.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scripts/7548-5eb0d3b7a0-lite.chunk.js","mappings":"ikBA4BMA,EAAY,qBASZ,SAAUC,EAAcC,G,cACtBC,EAAS,kBAA6BC,EAAA,YAEpCC,GAA8B,EAAAC,EAAA,GAAY,MAA1CD,0BAEFE,EAAgB,OAAH,yBACd,SAAkB,UAA+BL,EAAMM,0BACvD,OAAkBN,EAAMO,wBAEvBC,EAAc,kBAAkCC,EAAA,iBAChDC,EAAY,kBAAgCV,EAAMW,OACtDC,EAAA,yBAAqCZ,EAAMW,MAAME,KAC7CC,EAAkB,kBAAkCd,EAAMW,OAC9DC,EAAA,+BAA2CZ,EAAMW,MAAME,KACnDE,EAAa,mBAA0D,QAAhB,EAAAP,EAAYQ,YAAI,eAAEC,aAC7EC,EAAA,kCAAgDV,EAAYQ,KAAKC,WAAYH,EAAgBE,OACzFG,EAAa,kBAAiDX,EAAYQ,MAAQhB,EAAMW,OAC5FS,EAAA,QAAwBf,EAAeL,EAAMW,MAAME,GAAIL,EAAYQ,KAAKH,GAAIV,IACxEkB,EAAU,kBAA2CrB,EAAMW,OAASC,EAAA,aAAyBZ,EAAMW,MAAME,KACzGS,EAAa,mBACD,QAAhB,EAAAd,EAAYQ,YAAI,eAAEO,kBAAmBC,EAAA,aAA4BhB,EAAYQ,KAAKC,aAG9EQ,EACHf,EAAUgB,eAAiBhB,EAAUM,MACrCF,EAAgBY,eAAiBZ,EAAgBE,KAE9CW,EACHjB,EAAUgB,cAAgBhB,EAAUM,MACpCF,EAAgBY,cAAgBZ,EAAgBE,QAC/CN,EAAUM,MAAQK,EAAQL,SAC1BN,EAAUM,MAAQM,EAAWN,OAC/BD,EAAWC,MACXG,EAAWH,KAEPY,EAAgBlB,EAAUM,MAAQK,EAAQL,MAAQM,EAAWN,MACjEa,EAAA,iBAA+B,CAC7BC,OAAQ9B,EAAMW,MACdoB,aAAc/B,EAAMW,MAAMqB,OAC1BC,eAAe,EACfC,oBAAqBxB,EAAUM,KAAKkB,oBACpCC,eAAgBzB,EAAUM,KAAKmB,eAC/Bd,QAASA,EAAQL,KACjBoB,OAAQ1B,EAAUM,KAAKoB,OACvBd,WAAYA,EAAWN,OAGrBqB,EAAY,WAAc,W,MAC9B,OAAsB,QAAf,EAAAlB,EAAWH,YAAI,eAAEA,KAAKsB,QAAO,SAACC,EAAKC,GAAI,OAAKA,EAAKC,MAAQF,CAAG,GAAE,EACvE,GAAG,CAACpB,EAAWH,OACT0B,GAAiC,QAApB,EAAA5B,EAAgBE,YAAI,eAAE2B,eAA6B,QAAd,EAAAjC,EAAUM,YAAI,eAAE2B,aAExE,OACE,uBAAKC,UAAU,QACZjB,GACC,gCACE,sBAAIiB,UAAU,MAAK,gBAACC,EAAA,EAAI,CAAC/C,UAAWA,EAAWgD,OAAO,eAEtD,uBAAKF,UAAU,0EACb,uBAAKA,UAAU,mCACb,gBAACG,EAAA,EAAY,CACXC,gBAAiBjC,EAAWC,KAC5BiC,YAAwB,QAAX,EAAAhD,EAAOe,YAAI,eAAEiC,YAC1BC,eAAgBxC,EAAUM,KAC1BmC,WAAY,EACZvB,cAAeA,aAAa,EAAbA,EAAewB,OAC9B,IAEF,qBAAGR,UAAU,SAAQ,QAAWF,MAC7BL,GACD,oCAEE,qBAAGO,UAAU,QAAO,gBAACC,EAAA,EAAI,CAAC/C,UAAWA,EAAWgD,OAAO,QAAQO,QAAS,CAAEC,WAAYjB,QAI5F,gBAACkB,EAAA,EAAU,CACTC,SAAS,QAAgBxD,EAAMW,OAC/B8C,QAAS,WACTb,UAAU,wBAEV,gBAACC,EAAA,EAAI,CAAC/C,UAAWA,EAAWgD,OAAO,cAMzCrB,IAAcE,GACd,gCACE,uBAAKiB,UAAU,sCAAoC,KACnD,uBAAKA,UAAU,0CACb,qBAAGA,UAAU,QAAM,OAM/B,C,sGCrGA,IACMc,EAAYC,EAAA,mBADA,4CAQZ,SAAUC,EAAgC5D,G,sBACvC6D,G,GAAkB,OAAsBC,EAAA,mB,EAAoC,E,o4BAA9D,IAErB,EAAAC,EAAA,KAEA,IAAQC,GAAmB,EAAA5D,EAAA,GAAY,MAA/B4D,eAEAC,GAAmB,EAAAC,EAAA,KAAnBD,eAEA9D,GAA8B,EAAAC,EAAA,GAAY,MAA1CD,0BAEFK,EAAc,kBAAkCC,EAAA,iBAChDR,EAAS,kBAA6BC,EAAA,YAEtCiE,EAAsB,kBAC1BC,EAAA,sBAAwCpE,EAAMqE,gBAG1CC,EAAc,mBAA0D,QAAxB,EAAAH,EAAoBnD,YAAI,eAAEqD,gBAC9ED,EAAA,cAAgCD,EAAoBnD,KAAKqD,gBAErD9D,EAAwB,+BACxBD,EAAyB,gCACzBD,EAAgB,OAAH,yBACd,SAAkB,UAA+BC,KACjD,OAAkBC,IAGjBgE,GAAU,OAA2BvE,EAAMqE,cAAehE,GAAe,GAEzEmE,EACyC,KAAb,QAAhC,EAAAjE,EAAsBkE,kBAAU,eAAEC,WAAsD,QAArC,EAAAnE,EAAsBoE,uBAAe,eAAED,QACtFE,EAAoB,kBAAoDJ,GAC5EK,EAAA,uBAAuCC,EAAA,QAAkBvE,EAAsBkE,cAE3EM,EAAsB,kBAC1BR,EAAQvD,MAAQI,EAAA,sBACdpB,EAAMqE,cACNhE,EACAG,EAAYQ,KAAKH,GACjBV,IAIEgB,GAAa,kBACjBX,EAAYQ,MACZuD,EAAQvD,MACRI,EAAA,QAAwBf,EAAeL,EAAMqE,cAAe7D,EAAYQ,KAAKH,GAAIV,IAG7E6E,IAAe,OAAgBhF,EAAMiF,SAErCC,KAAclF,EAAMiF,SAE1B,EAAAE,EAAA,GAAmB,CAAEC,MAAOjB,EAAoBnD,KAAO0C,EAAU,YAAa,CAAE/C,MAA+B,QAAxB,EAAAwD,EAAoBnD,YAAI,eAAEqE,OAAU,QAE3H,OAAqB,CAAEf,EAAaH,EAAqBI,IAEzD,IAAMe,GACJ9E,EAAYQ,MACZf,EAAOe,MACPmD,EAAoBnD,MACpBsD,EAAYtD,MACZuD,EAAQvD,QACNwD,GAAuBI,EAAkB5D,OAC3C+D,EAAoB/D,QAClBG,GAAWH,KAETuE,GAAS,OAAH,sCACPhF,GACAD,GAAsB,CACzB2E,QAASjF,EAAMiF,UAGXO,GC9GF,SAAyC3E,EAAY0E,GACzD,MAAO,CACLE,eAAgB,CACdC,YAAa,aACbC,OAAQ,kCACRC,KAAM,CAAC/E,GACP0E,OAAAA,GAEFM,iBAAkB,CAChBH,YAAa,aACbC,OAAQ,mCACRC,KAAM,CAAC/E,GACP0E,OAAAA,GAEFO,eAAgB,CACdJ,YAAa,aACbC,OAAQ,iCACRC,KAAM,CAAC/E,GACP0E,OAAAA,GAGN,CDyFsCQ,CACV,QAAxB,EAAA5B,EAAoBnD,YAAI,eAAEH,GAC1B0E,IAGF,OACE,uBAAK3C,UAAU,QACb,gBAACoD,EAAA,EAAc,CACbrF,MAAOwD,EAAoBnD,KAC3BV,uBAAwBA,EACxB2F,MAAM,QAAmD,QAAxB,EAAA9B,EAAoBnD,YAAI,eAAEH,GAAI,WAAY0E,IAC3EW,aAAcjC,EAAekC,EAAA,yBAC7BC,gBAA4B,QAAX,EAAAnG,EAAOe,YAAI,eAAEoF,gBAC9BpC,eAAgBA,EAChBiB,QAASjF,EAAMiF,UAGjB,gBAAClF,EAAa,CACZQ,sBAAuBA,EACvBD,uBAAwBA,EACxBK,MAAOwD,EAAoBnD,OAG7B,gBAACqF,EAAA,EAA2B,CAC1BtB,oBAAqBA,EAAoB/D,KACzCsD,YAAaA,EAAYtD,KACzBmD,oBAAqBA,EAAoBnD,KACzCwE,4BAA6BA,GAC7BZ,kBAAmBA,EAAkB5D,KACrCuD,QAASA,EAAQvD,KACjBG,WAAYA,GAAWH,KACvBf,OAAQA,EAAOe,KACfwD,oBAAqBA,EACrBX,eAAgBA,EAChB0B,OAAQA,GACRD,cAAeA,GACfJ,UAAWA,GACXD,QAASjF,EAAMiF,QACfD,aAAcA,KAItB,C","sources":["file:///app/packages/projects/lite/src/apps/my-shares/views/share-info/ShareInfoView.tsx","file:///app/packages/projects/lite/src/apps/my-shares/views/interactive/overview/InteractiveInsightsOverviewView.tsx","file:///app/packages/projects/lite/src/apps/my-shares/views/interactive/overview/InteractiveInsightsOverviewUtils.ts"],"sourcesContent":["import React from 'react';\nimport { format as formatDate } from 'timeago.js';\n\nimport { Flight } from 'libs/common/react/index';\n\nimport { AudienceQueryParams } from 'libs/shared/apps/analytics/interfaces/AudienceQueryParams';\nimport { BaseAnalyticsEventResponse } from 'libs/shared/apps/analytics/interfaces/BaseAnalyticsEvent';\nimport { DateRangeQueryParams } from 'libs/shared/apps/analytics/interfaces/DateRangeQueryParams';\nimport { getAudienceParams } from 'libs/shared/apps/analytics/utils/AudienceUtils';\nimport { getInsightsDateRangePresets, getStartEndParams } from 'libs/shared/apps/analytics/utils/DateRangeUtils';\nimport { ShareRequests } from 'libs/shared/apps/share/flight-requests/ShareRequests';\nimport { SharePrivacyResponse } from 'libs/shared/apps/share/interfaces/responses/SharePrivacyResponse';\nimport { ShareLinkHelper } from 'libs/shared/apps/share/utils/ShareLinkHelper';\nimport { SharableRecipient, ShareViewHelper } from 'libs/shared/apps/share/views/share/ShareViewHelper';\nimport { IconButton } from 'libs/shared/components/icon-button/IconButton';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { ConfigRequests } from 'libs/shared/flight-requests/ConfigRequests';\nimport { CustomerRequests } from 'libs/shared/flight-requests/CustomerRequests';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { VideoViewRequests } from 'libs/shared/flight-requests/VideoViewRequests';\nimport { useSettings } from 'libs/shared/hooks/useSettings';\nimport { Config, CurrentUser, DirectShare, ShareLink, VideoTypes, YearGroup } from 'libs/shared/interfaces';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport { getShareAppLink } from 'shared/utils/ObjectAppLinkHelper';\n\nimport { SharedToPill } from 'apps/my-shares/components/shared-to-pill/SharedToPill';\n\nconst namespace = 'insights.shareInfo';\n\ninterface ShareInfoViewProps {\n video: VideoTypes;\n audienceAppLinkParams: AudienceQueryParams;\n dateRangeAppLinkParams: DateRangeQueryParams;\n}\n\n// eslint-disable-next-line rulesdir/require-view-title\nexport function ShareInfoView(props: ShareInfoViewProps) {\n const config = Flight.useBasicFetch<Config>(ConfigRequests.config());\n\n const { publicInteractiveAttempts } = useSettings(null);\n\n const requestFilter = {\n ...getStartEndParams(getInsightsDateRangePresets(), props.dateRangeAppLinkParams),\n ...getAudienceParams(props.audienceAppLinkParams)\n };\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n const shareLink = Flight.useBasicFetch<ShareLink>(props.video &&\n ShareRequests.getShareLinkByObjectId(props.video.id));\n const sentDirectShare = Flight.useBasicFetch<DirectShare>(props.video &&\n ShareRequests.getSentDirectShareByObjectId(props.video.id));\n const recipients = Flight.useBasicFetch<SharableRecipient[]>(currentUser.data?.customerId &&\n ShareViewHelper.getDirectShareRecipientsRequest(currentUser.data.customerId, sentDirectShare.data));\n const videoViews = Flight.useBasicFetch<BaseAnalyticsEventResponse>(currentUser.data && props.video &&\n VideoViewRequests.views(requestFilter, props.video.id, currentUser.data.id, publicInteractiveAttempts));\n const privacy = Flight.useBasicFetch<SharePrivacyResponse>(props.video && ShareRequests.getPrivacy(props.video.id));\n const yearGroups = Flight.useBasicFetch<YearGroup[]>(\n currentUser.data?.isAuthenticated && CustomerRequests.yearGroups(currentUser.data.customerId)\n );\n\n const notShared =\n (shareLink.hasCompleted && !shareLink.data) &&\n (sentDirectShare.hasCompleted && !sentDirectShare.data);\n\n const hasShareData =\n (shareLink.hasCompleted && shareLink.data) ||\n (sentDirectShare.hasCompleted && sentDirectShare.data) &&\n (!shareLink.data || privacy.data) &&\n (!shareLink.data || yearGroups.data) &&\n recipients.data &&\n videoViews.data;\n\n const shareLinkText = shareLink.data && privacy.data && yearGroups.data &&\n ShareLinkHelper.getIconAndText({\n entity: props.video,\n entityTypeId: props.video.typeId,\n hasStudentExp: false,\n isPasswordProtected: shareLink.data.isPasswordProtected,\n linkExpireDate: shareLink.data.linkExpireDate,\n privacy: privacy.data,\n status: shareLink.data.status,\n yearGroups: yearGroups.data\n });\n\n const viewCount = React.useMemo(() => {\n return videoViews.data?.data.reduce((acc, view) => view.count + acc, 0);\n }, [videoViews.data]);\n const dateShared = sentDirectShare.data?.dateCreated || shareLink.data?.dateCreated;\n\n return (\n <div className='mb-4'>\n {hasShareData &&\n <>\n <h2 className='h4'><Text namespace={namespace} phrase='shareInfo' /></h2>\n\n <div className='d-flex border p-3 rounded-3 align-items-center justify-content-between'>\n <div className='d-flex align-items-center gap-2'>\n <SharedToPill\n shareRecipients={recipients.data}\n imageCdnUrl={config.data?.imageCdnUrl}\n hasShareLink={!!shareLink.data}\n maxAvatars={4}\n shareLinkText={shareLinkText?.text}\n />\n ·\n <p className='mb-0'>{formatDate(dateShared)}</p>\n {!!viewCount && (\n <>\n ·\n <p className='mb-0'><Text namespace={namespace} phrase='views' options={{ smartCount: viewCount }} /></p>\n </>\n )}\n </div>\n <IconButton\n appLink={getShareAppLink(props.video)}\n svgName={cvSvgLibrary.Share}\n className='btn btn-outline-dark'\n >\n <Text namespace={namespace} phrase='share' />\n </IconButton>\n </div>\n </>\n }\n\n {!notShared && !hasShareData &&\n <>\n <div className='h4 partial-loading-background w-25'>&nbsp;</div>\n <div className='p-3 rounded partial-loading-background'>\n <p className='mb-1'>&nbsp;</p>\n </div>\n </>\n }\n </div>\n );\n}","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { useViewModel } from 'libs/common/react/hooks/UseViewModel';\nimport { Flight } from 'libs/common/react/index';\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\n\nimport { useAnonSessions } from 'libs/shared/apps/analytics/hooks/UseAnonSessions';\nimport { useFetchInteractiveResults } from 'libs/shared/apps/analytics/hooks/UseFetchInteractiveResults';\nimport { BaseAnalyticsEventResponse } from 'libs/shared/apps/analytics/interfaces/BaseAnalyticsEvent';\nimport { AnalyticsFilterHelper } from 'libs/shared/apps/analytics/utils/AnalyticsFilterUtils';\nimport { getAudienceParams } from 'libs/shared/apps/analytics/utils/AudienceUtils';\nimport { getInsightsDateRangePresets, getStartEndParams } from 'libs/shared/apps/analytics/utils/DateRangeUtils';\nimport { SharedViewModelKeys } from 'libs/shared/constants/SharedViewModelKeys';\nimport { PermissionName } from 'libs/shared/enums/PermissionName';\nimport { ConfigRequests } from 'libs/shared/flight-requests/ConfigRequests';\nimport { InteractiveRequests } from 'libs/shared/flight-requests/InteractiveRequests';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { VideoViewRequests } from 'libs/shared/flight-requests/VideoViewRequests';\nimport { useHandleObjectError } from 'libs/shared/hooks/UseHandleObjectError';\nimport { useLockContentWidth } from 'libs/shared/hooks/useLockContentWidth';\nimport { usePermissions } from 'libs/shared/hooks/usePermissions';\nimport { useSetPageMetadata } from 'libs/shared/hooks/useSetPageMetadata';\nimport { useSettings } from 'libs/shared/hooks/useSettings';\nimport { BasePaginatedCollection, Config, CurrentUser, Engagement, Interactive, InteractiveMetadata, User } from 'libs/shared/interfaces';\n\nimport { ClassroomRequests } from 'apps/classrooms/flight-requests/ClassroomRequests';\nimport { InsightsHeader } from 'apps/my-shares/components/insights-header/InsightsHeader';\nimport { InteractiveInsightsOverview } from 'apps/my-shares/components/interactive-insights-overview/InteractiveInsightsOverview';\nimport { getInsightsInteractiveTabs } from 'apps/my-shares/utils/InsightsAppLinkUtils';\nimport { getInteractiveInsightsAppLinks } from 'apps/my-shares/views/interactive/overview/InteractiveInsightsOverviewUtils';\nimport { ShareInfoView } from 'apps/my-shares/views/share-info/ShareInfoView';\n\nconst namespace = 'insights.interactiveInsightsOverviewView';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface InteractiveInsightsViewProps {\n interactiveId: string;\n shareId?: string;\n}\n\nexport function InteractiveInsightsOverviewView(props: InteractiveInsightsViewProps) {\n const [anonymiseUsers] = useViewModel<boolean>(SharedViewModelKeys.ANONYMISE_USERS);\n\n useLockContentWidth();\n\n const { hasShareFlowV2 } = useSettings(null);\n\n const { hasPermissions } = usePermissions();\n\n const { publicInteractiveAttempts } = useSettings(null);\n\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n const config = Flight.useBasicFetch<Config>(ConfigRequests.config());\n\n const interactiveMetadata = Flight.useBasicFetch<InteractiveMetadata>(\n InteractiveRequests.interactiveMetadata(props.interactiveId)\n );\n\n const interactive = Flight.useBasicFetch<Interactive>(interactiveMetadata.data?.interactiveId &&\n InteractiveRequests.interactive(interactiveMetadata.data.interactiveId));\n\n const audienceAppLinkParams = AnalyticsFilterHelper.getAudienceAppLinkParams();\n const dateRangeAppLinkParams = AnalyticsFilterHelper.getDateRangeAppLinkParams();\n const requestFilter = {\n ...getStartEndParams(getInsightsDateRangePresets(), dateRangeAppLinkParams),\n ...getAudienceParams(audienceAppLinkParams)\n };\n\n const results = useFetchInteractiveResults(props.interactiveId, requestFilter, true);\n\n const classroomFilterOnly =\n audienceAppLinkParams.classrooms?.length === 1 && !audienceAppLinkParams.classroomGroups?.length;\n const classroomStudents = Flight.useBasicFetch<BasePaginatedCollection<User>>(classroomFilterOnly &&\n ClassroomRequests.getClassroomStudents(ArrayHelper.first(audienceAppLinkParams.classrooms)));\n\n const aggregateEngagement = Flight.useBasicFetch<Engagement>(\n results.data && VideoViewRequests.aggregateEngagement(\n props.interactiveId,\n requestFilter,\n currentUser.data.id,\n publicInteractiveAttempts\n )\n );\n\n const videoViews = Flight.useBasicFetch<BaseAnalyticsEventResponse>(\n currentUser.data &&\n results.data &&\n VideoViewRequests.views(requestFilter, props.interactiveId, currentUser.data.id, publicInteractiveAttempts)\n );\n\n const anonSessions = useAnonSessions(props.shareId);\n\n const hasShared = !!props.shareId;\n\n useSetPageMetadata({ title: interactiveMetadata.data ? getPhrase('pageTitle', { video: interactiveMetadata.data?.name }) : null });\n\n useHandleObjectError([ interactive, interactiveMetadata, results ]);\n\n const hasDataLoaded =\n currentUser.data &&\n config.data &&\n interactiveMetadata.data &&\n interactive.data &&\n results.data &&\n (!classroomFilterOnly || classroomStudents.data) &&\n aggregateEngagement.data &&\n !!videoViews.data;\n\n const params = {\n ...audienceAppLinkParams,\n ...dateRangeAppLinkParams,\n shareId: props.shareId\n };\n\n const interactiveInsightsAppLinks = getInteractiveInsightsAppLinks(\n interactiveMetadata.data?.id,\n params\n );\n\n return (\n <div className='px-3'>\n <InsightsHeader\n video={interactiveMetadata.data}\n dateRangeAppLinkParams={dateRangeAppLinkParams}\n tabs={getInsightsInteractiveTabs(interactiveMetadata.data?.id, 'insights', params)}\n hasAnalytics={hasPermissions(PermissionName.ViewCustomerAnalytics)}\n analyticsWebUrl={config.data?.analyticsWebUrl}\n hasShareFlowV2={hasShareFlowV2}\n shareId={props.shareId}\n />\n\n <ShareInfoView\n audienceAppLinkParams={audienceAppLinkParams}\n dateRangeAppLinkParams={dateRangeAppLinkParams}\n video={interactiveMetadata.data}\n />\n\n <InteractiveInsightsOverview\n aggregateEngagement={aggregateEngagement.data}\n interactive={interactive.data}\n interactiveMetadata={interactiveMetadata.data}\n interactiveInsightsAppLinks={interactiveInsightsAppLinks}\n classroomStudents={classroomStudents.data}\n results={results.data}\n videoViews={videoViews.data}\n config={config.data}\n classroomFilterOnly={classroomFilterOnly}\n anonymiseUsers={anonymiseUsers}\n params={params}\n hasDataLoaded={hasDataLoaded}\n hasShared={hasShared}\n shareId={props.shareId}\n anonSessions={anonSessions}\n />\n </div>\n );\n}","import { HashObject } from 'libs/common/react/interfaces';\n\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\n\nexport function getInteractiveInsightsAppLinks(id: string, params?: HashObject) {\n return {\n resultsAppLink: {\n application: AppChannels.INSIGHTS,\n action: Actions.Insights.INTERACTIVE_STUDENTS,\n args: [id],\n params\n },\n questionsAppLink: {\n application: AppChannels.INSIGHTS,\n action: Actions.Insights.INTERACTIVE_QUESTIONS,\n args: [id],\n params\n },\n heatmapAppLink: {\n application: AppChannels.INSIGHTS,\n action: Actions.Insights.INTERACTIVE_HEATMAP,\n args: [id],\n params\n }\n };\n}"],"names":["namespace","ShareInfoView","props","config","ConfigRequests","publicInteractiveAttempts","useSettings","requestFilter","dateRangeAppLinkParams","audienceAppLinkParams","currentUser","UserRequests","shareLink","video","ShareRequests","id","sentDirectShare","recipients","data","customerId","ShareViewHelper","videoViews","VideoViewRequests","privacy","yearGroups","isAuthenticated","CustomerRequests","notShared","hasCompleted","hasShareData","shareLinkText","ShareLinkHelper","entity","entityTypeId","typeId","hasStudentExp","isPasswordProtected","linkExpireDate","status","viewCount","reduce","acc","view","count","dateShared","dateCreated","className","Text","phrase","SharedToPill","shareRecipients","imageCdnUrl","hasShareLink","maxAvatars","text","options","smartCount","IconButton","appLink","svgName","getPhrase","LanguageService","InteractiveInsightsOverviewView","anonymiseUsers","SharedViewModelKeys","useLockContentWidth","hasShareFlowV2","hasPermissions","usePermissions","interactiveMetadata","InteractiveRequests","interactiveId","interactive","results","classroomFilterOnly","classrooms","length","classroomGroups","classroomStudents","ClassroomRequests","ArrayHelper","aggregateEngagement","anonSessions","shareId","hasShared","useSetPageMetadata","title","name","hasDataLoaded","params","interactiveInsightsAppLinks","resultsAppLink","application","action","args","questionsAppLink","heatmapAppLink","getInteractiveInsightsAppLinks","InsightsHeader","tabs","hasAnalytics","PermissionName","analyticsWebUrl","InteractiveInsightsOverview"],"sourceRoot":""}
@@ -0,0 +1,2 @@
1
+ "use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[7593],{26025:(e,t,a)=>{a.d(t,{B:()=>r});var n=a(1048),i=a(75795),r={getAudienceAppLinkParams:function(){var e=i.O.getCurrentRoute().appLink,t=n.t.isObject(e.params)?e.params:{},a=t.users,r=t.classrooms,o=t.classroomGroups,s=function(e){var a=t[e];if(a)return Array.isArray(a)?a:[a]},c={};return a&&(c.users=s("users")),r&&(c.classrooms=s("classrooms")),o&&(c.classroomGroups=s("classroomGroups")),c},getDateRangeAppLinkParams:function(){var e=i.O.getCurrentRoute().appLink,t=n.t.isObject(e.params)?e.params:{},a=t.from,r=t.to,o=t.rangeName,s={};return a&&(s.from=a),r&&(s.to=r),o&&(s.rangeName=o),s}}},9806:(e,t,a)=>{a.d(t,{k:()=>k});var n=a(32735),i=a(65858),r=a(64249),o=a(15611),s=a(7432),c=a(11834),l=a(83345),m=a(56754),u=a(86348),p=a(7733),d=a(54610),v=a(4594),y=a(68626),g=a(9085),h=a(67453),f=a(31908);const E={thumbnailFallbackSvg:"D4JFs",posterFallbackSvg:"bjUWl",coverFallbackSvg:"kdLpt",thumbnailContainer:"d3CKN",insightsMask:"KM76U",requireMarking:"peLH7",badge:"mVu0E",bar:"zO3MS",a:"K1jW5",expandBar:"YITJl",b:"tCpLF",c:"lC0cq"};var b="shared.sharedObjectImage",S="rounded overflow-hidden";function I(){return n.createElement("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.createElement("div",{className:"position-absolute bg-dark bg-gradient opacity-50 w-100 h-100 z-0 rounded-3"}),n.createElement("div",{className:"d-flex align-items-end gap-2 h-50 z-1"},n.createElement("div",{className:"d-flex align-items-end h-50"},n.createElement("div",{className:"".concat(E.bar," ").concat(E.a," rounded shadow")})),n.createElement("div",{className:"d-flex align-items-end h-75"},n.createElement("div",{className:"".concat(E.bar," ").concat(E.b," rounded shadow")})),n.createElement("div",{className:"d-flex align-items-end h-100"},n.createElement("div",{className:"".concat(E.bar," ").concat(E.c," rounded shadow")}))))}function k(e){var t=n.useCallback((function(t){var a;t&&e.fixedHeight&&(t.style.width="".concat(t.offsetHeight*(a=e.object,f.M.isVideoType(a)?16/9:a.typeId===v.E.Playlist?1:a.typeId===v.E.Series?9/16:void 0),"px"))}),[]),a=f.M.isVideoType(e.object),k=function(e){var t=h.j.getDisplayImageFromObject(e);if(f.M.isVideoType(e))return{image:t,imageType:d.__.Thumbnails,imageClassName:S,imageFallbackComponent:n.createElement(c.oy,{type:c.mS.Video})};switch(e.typeId){case v.E.Series:return{image:t,imageType:d.__.TallPosters,imageClassName:S,imageFallbackComponent:n.createElement(c.oy,{type:c.mS.Series,svgContainerClassName:E.posterFallbackSvg})};case v.E.Playlist:return{image:t,imageType:d.__.Covers,imageClassName:(null==t?void 0:t.url)?S:"".concat(S," ").concat((0,g.x)(e.name,p.o)),imageFallbackComponent:n.createElement(c.oy,{type:c.mS.Playlist,svgContainerClassName:(null==t?void 0:t.url)?E.coverFallbackSvg:"d-none",extraClasses:!(null==t?void 0:t.url)&&"bg-transparent"})}}}(e.object),N=k.image,T=k.imageType,O=k.imageClassName,x=k.imageFallbackComponent,w=e.showVideoMetadata?{}:{hideDuration:!0,hideMask:!0,hideRating:!0,hideVideoTypeBadge:!0};return n.createElement("div",{className:"d-flex align-items-center justify-content-center w-100 h-100"},n.createElement("div",{ref:t,className:e.fixedHeight?"h-100":"w-100"},a&&n.createElement("div",{className:"".concat(E.thumbnailContainer," position-relative")},e.showInsightsMask&&n.createElement(I,null),n.createElement(o.F,{appLink:e.appLink},n.createElement(u.u,Object.assign({video:e.object,size:e.thumbnailSize,imageOptions:e.imageOptions,textPosition:y.z.Independent,type:"cosmetic"},w))),!!e.requireMarking&&n.createElement("div",{className:"".concat(e.showInsightsMask&&E.requireMarking," position-absolute bottom-0 end-0 z-1 m-2")},n.createElement("div",{className:"".concat(E.badge," d-flex align-items-center bg-light-ultramarine text-ultramarine fw-semibold rounded-pill w-fit mt-1 px-2")},n.createElement(l.x,{namespace:b,phrase:"requireMarking",options:{smartCount:e.requireMarking}})))),!a&&n.createElement(n.Fragment,null,"videos"in e.object?n.createElement(m.I,{collection:e.object,imageOptions:e.imageOptions,appLink:e.appLink,analyticsData:{id:e.object.id,name:e.object.name},analyticsOptions:{entity:r.I.getAnalyticsEntity(e.object.type),actionType:i.Vw.Click,location:e.locationContext},showMask:e.showCollectionMask,showVideoCount:e.showVideoCount}):n.createElement(s.Z,{data:null==N?void 0:N.url,imageType:T,imageOptions:e.imageOptions,appLink:e.appLink,className:O,analyticsData:{id:e.object.id,name:e.object.name},analyticsOptions:{entity:r.I.getAnalyticsEntity(e.object.type),actionType:i.Vw.Click,location:e.locationContext}},x))))}k.defaultProps={imageOptions:{size:d.h2.Small}}},38502:(e,t,a)=>{a.d(t,{r:()=>u});var n=a(32735),i=a(49985),r=a(15611),o=a(18559),s=a(11607),c=a(83914),l=a(22771);function m(e){return n.createElement(n.Fragment,null,!!e.tab.svgName&&n.createElement("div",{className:e.tab.name?"pe-1":""},n.createElement(c.x,{svgName:e.tab.svgName})),e.tab.name,"number"==typeof e.tab.count&&n.createElement("div",{className:"ps-2"},n.createElement(o.C,{type:o.g.Count,data:e.tab.count})))}function u(e){var t;return n.createElement("nav",{className:null!==(t=e.className)&&void 0!==t?t:"",ref:e.containerRef},n.createElement("ul",{className:"\n list-unstyled d-inline-block m-0 ".concat(l.Z.pillTabSelector,"\n ").concat(e.borderRadius?l.Z.radiusSmall:"","\n ").concat(e.listClassName,"\n ")},e.tabs.map((function(e,t){return n.createElement("li",{className:"\n p-0 ".concat(l.Z.tab," ").concat(e.active?"btn btn-dark":"btn btn-outline-dark","\n ").concat(e.name?l.Z.minWidth:""," ").concat(e.className,"\n "),key:t},e.appLink?n.createElement(r.F,{appLink:e.appLink,analyticsData:e.analyticsData,analyticsOptions:e.analyticsOptions,className:"\n cursor-pointer d-flex align-items-center justify-content-center\n text-decoration-none text-reset px-2 text-nowrap ".concat(l.Z.tabLink,"\n ")},n.createElement(m,{tab:e})):n.createElement(s.L,{className:"\n cursor-pointer d-flex align-items-center justify-content-center\n text-decoration-none text-reset px-2 text-nowrap ".concat(l.Z.tabLink,"\n "),onClick:function(){return function(e){!e.active&&e.onSelect&&(e.onSelect(),e.analyticsData&&e.analyticsOptions&&i.k.logUserAction(e.analyticsData,e.analyticsOptions))}(e)}},n.createElement(m,{tab:e})))}))))}u.defaultProps={borderRadius:"lg"}},56754:(e,t,a)=>{a.d(t,{I:()=>b});var n=a(32735),i=a(75896),r=a(65858),o=a(15611),s=a(83914),c=a(83345);const l={thumbnailTitle:"OsWjL"};function m(e){return n.createElement("h3",{title:e.title,className:"h6"},e.title)}function u(e){return e.appLink?n.createElement(o.F,{appLink:e.appLink,className:"".concat(l.thumbnailTitle)},n.createElement(m,Object.assign({},e))):n.createElement(m,Object.assign({},e))}var p=a(86348),d=a(62335),v=a(4594),y=a(68626),g=a(45778),h=a(35223);const f={badge:"M4zat",mask:"r0Ztg",thumbnailContainer:"uD9dz"};var E="shared.collectionThumbnail";function b(e){var t,a,l,m,b=function(){var t,a=null===(t=e.collection)||void 0===t?void 0:t.videos;if(a){if(!a.count&&e.collection.typeId===v.E.Playlist){var n=e.collection;n.clips.count&&(a=n.clips),n.interactives.count&&(a=n.interactives)}return i.m.first(a.data)}}(),S=function(){var t,a,n=0;if(e.collection.videos&&e.collection.videos.count&&(n+=e.collection.videos.count),e.collection.typeId===v.E.Playlist){var i=e.collection;(null===(t=i.interactives)||void 0===t?void 0:t.count)&&(n+=i.interactives.count),(null===(a=i.clips)||void 0===a?void 0:a.count)&&(n+=i.clips.count)}return n}(),I=(null===(t=e.title)||void 0===t?void 0:t.length)||(null===(a=e.subText)||void 0===a?void 0:a.length),k=Object.assign({id:e.collection.id.toString(),name:e.collection.name},e.analyticsData),N=Object.assign({actionType:r.Vw.Click,entity:(m=e.collection,g.G.isType(m,v.E.Playlist)?r.py.Playlist:g.G.isType(m,v.E.Series)?r.py.Series:void 0)},e.analyticsOptions);return n.createElement("div",null,n.createElement("div",{className:"position-relative ".concat(f.thumbnailContainer," z-1")},n.createElement(o.F,{appLink:e.appLink,analyticsData:k,analyticsOptions:N,preventFocus:!0},e.showMask&&n.createElement("div",{className:"".concat(f.mask," position-absolute w-100 h-100 rounded-3 bg-dark bg-gradient z-1 bg-opacity-50 pointer-events-none")},n.createElement("div",{className:"".concat(f.badge," d-flex align-items-center w-fit flex-grow-0 bg-dark rounded-pill ps-1 m-2")},n.createElement(s.x,{svgName:h.vn.Play,className:"svg-container text-white"}),n.createElement("p",{className:"d-inline fw-medium text-white mb-0"},(null===(l=e.hoverText)||void 0===l?void 0:l.length)?n.createElement("span",null,e.hoverText):n.createElement(c.x,{namespace:E,phrase:"playAll"})))),b&&n.createElement(p.u,{video:b,imageOptions:e.imageOptions,textPosition:y.z.Independent,type:"cosmetic",hideMask:!0,hideRating:!0,hideDuration:!0,hideVideoTypeBadge:!0}),!b&&n.createElement("div",{className:"ratio ratio-16x9 bg-light rounded-3"},n.createElement("div",{className:"d-flex justify-content-center align-items-center"},n.createElement(s.x,{svgName:h.vn.Play,className:"w-33 opacity-25 text-gray-400"}))),e.showVideoCount&&n.createElement("div",{className:"".concat(f.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.createElement(s.x,{svgName:h.vn.Series,className:"svg-container text-white me-1"}),n.createElement("p",{className:"d-inline fw-semibold text-white mb-0"},n.createElement(c.x,{namespace:E,phrase:"videos",options:{count:S,smartCount:S}}))))),I&&n.createElement("div",{className:"mt-2 d-flex flex-column"},e.subText&&n.createElement(d.m,{title:e.subText,appLink:e.subTextAppLink},e.subText),e.title&&n.createElement(u,{title:e.collection.name,appLink:e.titleAppLink})))}},53936:(e,t,a)=>{a.d(t,{j:()=>j});var n=a(32735),i=a(39202),r=a(23481),o=a(57900),s=a(2948),c=a(20354),l=a(65858),m=a(9806),u=a(76306),p=a(49935),d=a(91693),v=a(38502),y=a(83914),g=a(83345),h=a(83523),f=a(38143),E=a(54610),b=a(4594),S=a(35223),I=a(14070),k=a(97291),N=a(86099),T=a(88630),O=a(4315),x=a(91574),w=a(81969);function L(e){return L="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},L(e)}function C(e,t,a){return(t=function(e){var t=function(e){if("object"!=L(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var a=t.call(e,"string");if("object"!=L(a))return a;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==L(t)?t:t+""}(t))in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function P(e,t){(null==t||t>e.length)&&(t=e.length);for(var a=0,n=Array(t);a<t;a++)n[a]=e[a];return n}var R="insights.header",A=r.T.encloseNamespace(R);function j(e){var t,a,r,L=c.a.useBasicFetch(e.shareId&&x.o.getShareLink(e.shareId)),j=w.R.getClassroomId(L.data),M=c.a.useBasicFetch(j&&T.F.getClassroom(j)),V=(a=(0,s.D)(f.g.ANONYMISE_USERS,!1,{storage:o.Z1.LocalStorage}),r=2,function(e){if(Array.isArray(e))return e}(a)||function(e,t){var a=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=a){var n,i,r,o,s=[],c=!0,l=!1;try{if(r=(a=a.call(e)).next,0===t){if(Object(a)!==a)return;c=!1}else for(;!(c=(n=r.call(a)).done)&&(s.push(n.value),s.length!==t);c=!0);}catch(e){l=!0,i=e}finally{try{if(!c&&null!=a.return&&(o=a.return(),Object(o)!==o))return}finally{if(l)throw i}}return s}}(a,r)||function(e,t){if(e){if("string"==typeof e)return P(e,t);var a={}.toString.call(e).slice(8,-1);return"Object"===a&&e.constructor&&(a=e.constructor.name),"Map"===a||"Set"===a?Array.from(e):"Arguments"===a||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(a)?P(e,t):void 0}}(a,r)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),_=V[0],H=V[1];return n.createElement("div",null,n.createElement("section",{className:"mb-4"},n.createElement("div",{className:"mb-3"},n.createElement("div",{className:"d-flex justify-content-between align-items-center mb-3"},e.video?n.createElement(p.Oo,{breadcrumbs:[{name:"Reports",appLink:{application:k.O.MY_SHARES,action:I.e.MyShares.HOME}},{name:e.video.name,active:!0}]}):n.createElement(p.b2,null),n.createElement(d.h,{svgName:S.vn.Info,appLink:function(){var t,a,n=C(C(C({},b.E.Video,I.e.Insights.VIDEO_SHARE_OPTIONS),b.E.Clip,I.e.Insights.CLIP_SHARE_OPTIONS),b.E.Interactive,I.e.Insights.INTERACTIVE_SHARE_OPTIONS);return{application:k.O.INSIGHTS,action:n[null===(t=e.video)||void 0===t?void 0:t.typeId],args:[null===(a=e.video)||void 0===a?void 0:a.id],params:{shareId:e.shareId}}}(),className:"btn btn-outline-dark ms-auto me-2"},"Share information"),n.createElement(u.m,{dropdownToggleClassName:"btn btn-outline-dark",actions:function(){var t,a,n,i,r=[{label:"Edit time range",appLink:{application:k.O.INSIGHTS,action:I.e.Insights.INTERACTIVE_GENERATE_REPORT,args:[null===(t=e.video)||void 0===t?void 0:t.id]}},{label:"Edit audience",appLink:{application:k.O.INSIGHTS,action:I.e.Insights.INTERACTIVE_GENERATE_REPORT,args:[null===(a=e.video)||void 0===a?void 0:a.id]}}];return(null===(n=e.video)||void 0===n?void 0:n.typeId)===b.E.Interactive&&r.push({label:A("generateReport"),appLink:{application:k.O.INSIGHTS,action:I.e.Insights.INTERACTIVE_GENERATE_REPORT,args:[null===(i=e.video)||void 0===i?void 0:i.id]}}),r}()}))),e.video&&n.createElement("div",{className:"d-flex gap-3 mb-3"},n.createElement("div",{style:{minWidth:140},className:"d-flex flex-column"},n.createElement(m.k,{object:e.video,showVideoMetadata:!0,locationContext:l.LZ.Insights,imageOptions:{size:E.h2.Medium},showCollectionMask:!0,showVideoCount:!0,appLink:(0,N.Qh)(e.video)})),n.createElement("div",{className:"d-flex flex-column pb-1"},n.createElement("div",{className:"d-flex align-items-center"},n.createElement("a",{href:i.C$.getHref((0,N.Qh)(e.video)),className:"cursor-pointer h4 mb-0 d-inline me-2"},e.video.name),n.createElement(d.h,{svgName:S.vn.NewWindow,appLink:(0,N.Qh)(e.video),svgSize:y.S.Small,className:"d-inline-block",customSize:!0})),n.createElement("div",{className:"flex-grow-1"}),L.data&&n.createElement(O.e,{shareLink:null==L?void 0:L.data,classroomName:null===(t=M.data)||void 0===t?void 0:t.name}))),n.createElement("div",{className:"d-flex align-items-center mb-4"},n.createElement(v.r,{tabs:e.tabs}),n.createElement("div",{className:"flex-grow-1"}),n.createElement("div",{className:"d-flex gap-3"},n.createElement("label",{htmlFor:"anonymiseNames",className:"mb-0"},n.createElement(g.x,{namespace:R,phrase:"anonymiseNames"})),n.createElement(h.Z,{id:"anonymiseNames",on:_,onClick:function(){return H(!_)}})))))}},10447:(e,t,a)=>{a.d(t,{$6:()=>s,$o:()=>c,W_:()=>p,aq:()=>m,kj:()=>l,lo:()=>u});var n=a(23481),i=a(14070),r=a(97291),o=n.T.encloseNamespace("shared.insightsUtils");function s(e,t,a){var n=!(arguments.length>3&&void 0!==arguments[3])||arguments[3],s=[{name:o("insights"),active:"insights"===t,appLink:{application:r.O.INSIGHTS,action:i.e.Insights.VIDEO_OVERVIEW,args:[e],params:a}},{name:o("heatmap"),active:"heatmap"===t,appLink:{application:r.O.INSIGHTS,action:i.e.Insights.VIDEO_HEATMAP,args:[e],params:a}}];return n?[].concat(s):s}function c(e,t,a){var n=!(arguments.length>3&&void 0!==arguments[3])||arguments[3],s=[{name:o("insights"),active:"insights"===t,appLink:{application:r.O.INSIGHTS,action:i.e.Insights.CLIP_OVERVIEW,args:[e],params:a}},{name:o("heatmap"),active:"heatmap"===t,appLink:{application:r.O.INSIGHTS,action:i.e.Insights.CLIP_HEATMAP,args:[e],params:a}}];return n?[].concat(s):s}function l(e,t,a){var n=!(arguments.length>3&&void 0!==arguments[3])||arguments[3],s=[{name:o("insights"),active:"insights"===t,appLink:{application:r.O.INSIGHTS,action:i.e.Insights.INTERACTIVE_OVERVIEW,args:[e],params:a}},{name:o("results"),active:"results"===t,appLink:{application:r.O.INSIGHTS,action:i.e.Insights.INTERACTIVE_STUDENTS,args:[e],params:a}},{name:o("questions"),active:"questions"===t,appLink:{application:r.O.INSIGHTS,action:i.e.Insights.INTERACTIVE_QUESTIONS,args:[e],params:a}},{name:o("heatmap"),active:"heatmap"===t,appLink:{application:r.O.INSIGHTS,action:i.e.Insights.INTERACTIVE_HEATMAP,args:[e],params:a}}];return n?[].concat(s):s}function m(e,t,a){return[{name:o("insights"),active:"insights"===t,appLink:{application:r.O.MY_SHARES,action:i.e.MyShares.INTERACTIVE_OVERVIEW_DEMO,args:[e],params:a}},{name:o("results"),active:"results"===t,appLink:{application:r.O.MY_SHARES,action:i.e.MyShares.INTERACTIVE_STUDENTS_DEMO,args:[e],params:a}},{name:o("questions"),active:"questions"===t,appLink:{application:r.O.MY_SHARES,action:i.e.MyShares.INTERACTIVE_QUESTIONS_DEMO,args:[e],params:a}},{name:o("heatmap"),active:"heatmap"===t,appLink:{application:r.O.MY_SHARES,action:i.e.MyShares.INTERACTIVE_HEATMAP_DEMO,args:[e],params:a}}]}function u(e,t,a){return[{name:"Report",active:"shareOptions"===t,appLink:{application:r.O.INSIGHTS,action:i.e.Insights.SERIES_SHARE_OPTIONS,args:[e],params:a}},{name:"Videos",active:"videos"===t,appLink:{application:r.O.INSIGHTS,action:i.e.Insights.SERIES_VIDEOS,args:[e],params:a}}]}function p(e,t,a){return[{name:"Report",active:"shareOptions"===t,appLink:{application:r.O.INSIGHTS,action:i.e.Insights.PLAYLIST_SHARE_OPTIONS,args:[e],params:a}},{name:"Videos",active:"videos"===t,appLink:{application:r.O.INSIGHTS,action:i.e.Insights.PLAYLIST_VIDEOS,args:[e],params:a}}]}},4315:(e,t,a)=>{a.d(t,{e:()=>p});var n=a(32735),i=a(12528),r=a(83914),o=a(4594),s=a(35223),c=a(42272),l=a(93975);function m(e){return m="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},m(e)}function u(e,t,a){return(t=function(e){var t=function(e){if("object"!=m(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var a=t.call(e,"string");if("object"!=m(a))return a;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==m(t)?t:t+""}(t))in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function p(e){var t,a,s,m,u;return n.createElement("div",{className:"d-flex align-items-center"},n.createElement("div",{className:"d-flex align-items-center justify-content-center"},n.createElement("div",null,n.createElement(i.f,{svgName:d[e.shareLink.type],variant:v[e.shareLink.type],textVariant:"white",svgWrapperClassName:null!==(t=e.svgWrapperClassName)&&void 0!==t?t:"p-1",svgSize:null!==(a=e.svgSize)&&void 0!==a?a:r.S.Standard})),n.createElement("div",{className:"d-flex flex-column ms-2"},n.createElement("label",{className:"m-0"},(m=(s=e).shareLink,u=s.classroomName,m.type===l.y.Classroom&&u?u:y[m.type])),!e.hideSubtitle&&n.createElement("span",{className:"text-secondary"},function(e){var t,a,n,i,r=e.shareLink;if(r.type===l.y.Classroom){var s=null!==(a=null===(t=r.recipients)||void 0===t?void 0:t.filter((function(e){return e.recipientTypeId===o.E.ClassroomGroup})).length)&&void 0!==a?a:0,m=null!==(i=null===(n=r.recipients)||void 0===n?void 0:n.filter((function(e){return e.recipientTypeId===o.E.User})).length)&&void 0!==i?i:0;return s&&m?"".concat(s," ").concat(g(s,"group","groups"),", ").concat(m," ").concat(g(m,"student","students")," can view"):s?"".concat(s," ").concat(g(s,"group","groups")," can view"):m?"".concat(m," ").concat(g(m,"student","students")," can view"):"All students in classroom can view"}if(r.type===l.y.Open)return"Students watch using a PIN code";if(r.type===l.y.Link){if([c.e.JustMySchool,c.e.Protected].includes(r.privacy))return"Respect ratings and restrictions";if(r.privacy===c.e.JustMySchoolOverrideRestriction)return"Anyone in your school can view";if(r.privacy===c.e.ProtectedOverrideRestriction)return"Anyone signed into ClickView can view";if(r.privacy===c.e.Public)return"Anyone with a link can view";if(r.privacy===c.e.PinCode)return"Anyone with a PIN code can view"}return r.type===l.y.Live?"Live now":"Anyone signed into ClickView can view"}(e)))))}var d=u(u(u(u({},l.y.Open,s.vn.School),l.y.Link,s.vn.Link),l.y.Classroom,s.vn.Classrooms),l.y.Live,s.vn.Play),v=u(u(u(u({},l.y.Open,"blue"),l.y.Link,"black"),l.y.Classroom,"teal"),l.y.Live,"purple"),y=u(u(u(u({},l.y.Open,"Open classroom"),l.y.Link,"Link"),l.y.Classroom,"Classroom"),l.y.Live,"Live");function g(e,t,a){return 1===e?t:a}},42272:(e,t,a)=>{var n;a.d(t,{e:()=>n}),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"}(n||(n={}))},93975:(e,t,a)=>{var n;a.d(t,{y:()=>n}),function(e){e.Link="Link",e.Classroom="Classroom",e.Open="Open",e.Live="Live"}(n||(n={}))},91574:(e,t,a)=>{a.d(t,{o:()=>o});var n=a(99940),i=a(97395),r={namespace:"share-v2"},o={createShareLink:function(e,t,a,i){return{url:"/api/share/v2/shares",key:"create:share-v2:link",type:n.k.POST,data:e,normalizeOptions:r,invalidationKeys:["share:link:object:".concat(e.objectId),"privacy:".concat(e.objectId),"sent:shares","get:share-v2:shares:object"],success:t,error:a,always:i}},getShareLink:function(e,t,a,i){return{url:"/api/share/v2/shares/".concat(e),key:"get:share-v2:link:".concat(e),type:n.k.GET,normalizeOptions:r,success:t,error:a,always:i}},getSharesByObjectId:function(e,t,a,i){return{url:"/api/share/v2/shares/objects/".concat(e),key:"get:share-v2:shares:object:".concat(e),type:n.k.GET,normalizeOptions:r,success:t,error:a,always:i}},getSentShares:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=arguments.length>1?arguments[1]:void 0,a=arguments.length>2?arguments[2]:void 0,r=arguments.length>3?arguments[3]:void 0,o={scopeId:e.scopeId,limit:e.limit||25,offset:parseInt(e.cursor)||0},s=Object.values(o).join(":");return{url:i._.urlBuilder("/api/share/v2/shares/sent",o),key:"sent:shares-v2:".concat(s),formatData:function(e){return{data:e,count:e.length,pagination:{cursors:{next:o.offset+e.length}}}},type:n.k.GET,normalize:!1,success:t,error:a,always:r}},createPincode:function(e){return{url:"/api/share/v2/shares/".concat(e,"/pincode"),key:"create:share-v2:pincode",type:n.k.POST}},getPincode:function(e){return{url:"/api/share/v2/shares/pincode?code=".concat(e),key:"get:share-v2:pincode:".concat(e)}},getPincodeByShareId:function(e){return{url:"/api/share/v2/shares/".concat(e,"/pincode"),key:"get:share-v2:".concat(e,":pincode")}}}},81969:(e,t,a)=>{a.d(t,{R:()=>v});var n=a(23481),i=a(110),r=a(4594),o=a(49080),s=a(26361),c=a(35223),l=a(31908),m=a(42272),u=a(93975);function p(e,t){(null==t||t>e.length)&&(t=e.length);for(var a=0,n=Array(t);a<t;a++)n[a]=e[a];return n}var d=n.T.encloseNamespace("share.shareLinkInfo"),v={getPrivateIconAndText:function(e){var t=e.entityTypeId,a=e.privacy,n=e.hasStudentExp,i=e.entity,o=e.yearGroups;if(t===r.E.Topic||t===r.E.Series)return{icon:c.vn.VisibleOn,text:d(n?"justMySchoolTeachers":"justMySchoolDescription")};if(!Array.isArray(a))switch(a){case m.e.Public:return{icon:c.vn.VisibleOn,text:d("publicDescription")};case m.e.ProtectedOverrideRestriction:return{icon:c.vn.VisibleOn,text:d("clickViewOnly")};case m.e.Protected:return{icon:c.vn.Lock,text:v.getRespectRatingText(i,o,n)};case m.e.JustMySchoolOverrideRestriction:return{icon:c.vn.Lock,text:d(n?"justMySchoolTeachers":"justMySchoolDescription")};case m.e.JustMySchool:return{icon:c.vn.Lock,text:v.getRespectRatingText(i,o,n)};case m.e.PinCode:case m.e.PasswordProtected:return{icon:c.vn.Lock,text:d("privateDescription")};default:return{}}},getIconAndText:function(e){var t=e.linkExpireDate,a=e.isPasswordProtected,n=e.status;if(!t&&!a)return v.getPrivateIconAndText(e);if(!t)return{icon:c.vn.Lock,text:d("password")};var r=i.O.isToday(t),s=i.O.diffBetween(t,new Date,"day");if(!a){var l=r?d("expiryToday"):d("expiry",{days:s});return n===o.F.Expired&&(l=d("expired")),{icon:c.vn.Timer,text:l}}var m=r?d("passwordExpiryToday"):d("passwordExpiry",{days:s});return n===o.F.Expired&&(m=d("passwordExpired")),{icon:c.vn.Lock,text:m}},getRespectRatingText:function(e,t,a){var n;if(!e||!t)return null;if(a)return d("justMySchoolTeachers");if(!l.M.isVideoType(e))return d("collectionRating");var i=s.l.getWeightedRestriction(null===(n=e._restrictions)||void 0===n?void 0:n.value);if(i&&!i.yearGroup)return d("onlyAdmins");var r,o,c,m=l.M.getRating(e),u=function(e,t){var a="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!a){if(Array.isArray(e)||(a=function(e,t){if(e){if("string"==typeof e)return p(e,t);var a={}.toString.call(e).slice(8,-1);return"Object"===a&&e.constructor&&(a=e.constructor.name),"Map"===a||"Set"===a?Array.from(e):"Arguments"===a||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(a)?p(e,t):void 0}}(e))||t&&e&&"number"==typeof e.length){a&&(e=a);var n=0,i=function(){};return{s:i,n:function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:i}}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 r,o=!0,s=!1;return{s:function(){a=a.call(e)},n:function(){var e=a.next();return o=e.done,e},e:function(e){s=!0,r=e},f:function(){try{o||null==a.return||a.return()}finally{if(s)throw r}}}}(t);try{for(u.s();!(c=u.n()).done;){var v=c.value;(!r||v.value>r.value)&&(r=v),i&&v.value<=i.yearGroup||m&&v.rating.value<m.value||(!o||v.value<o.value)&&(o=v)}}catch(e){u.e(e)}finally{u.f()}return o?1===t.length?d("clickViewOnly"):o.value===r.value?d("maxYearGroup",{yearGroup:r.name}):d("yearGroupRange",{yearGroup:o.name}):d("onlyStaff")},getClassroomId:function(e){var t,a;if(!e)return"";if(e.type!==u.y.Classroom)return"";var n=null===(t=e.recipients)||void 0===t?void 0:t.find((function(e){return e.recipientTypeId===r.E.Classroom}));if(n)return n.recipientId.toString();var i=null===(a=e.recipients)||void 0===a?void 0:a.find((function(e){return e.scopeId}));return(null==i?void 0:i.scopeId.toString())||""}}},22771:(e,t,a)=>{a.d(t,{Z:()=>n});const n={pillTabSelector:"Hdi6o",tab:"RvNxr",minWidth:"GHSz9",radiusSmall:"VhJJa",tabLink:"WFyvo"}}}]);
2
+ //# sourceMappingURL=7593-cc4e09c847-lite.chunk.js.map