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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (160) hide show
  1. package/dist/bundles.json +1 -1
  2. package/dist/css/{119-lite-a1f592f602.chunk.css → 1243-lite-13eda8f6a0.chunk.css} +2 -4
  3. package/dist/css/{7230-lite-36ff6e6d53.chunk.css → 1867-lite-8baa8af02b.chunk.css} +3 -5
  4. package/dist/css/{5241-lite-baab687563.chunk.css → 4203-lite-9ffab89741.chunk.css} +3 -5
  5. package/dist/css/{8364-lite-99938dea56.chunk.css → 5193-lite-d434056013.chunk.css} +1 -0
  6. package/dist/css/{7339-lite-05c396fed3.chunk.css → 6756-lite-839687d3d7.chunk.css} +1 -0
  7. package/dist/css/{9527-lite-1d2221b6a8.chunk.css → 7103-lite-fef3024f61.chunk.css} +2 -4
  8. package/dist/css/{8856-lite-827b34aed7.chunk.css → 8856-lite-c114ab5c89.chunk.css} +1 -1
  9. package/dist/languages/en.json +1 -1
  10. package/dist/scripts/104-7abe2b09dd-lite.chunk.js +2 -0
  11. package/dist/scripts/104-7abe2b09dd-lite.chunk.js.map +1 -0
  12. package/dist/scripts/1074-2ab8b03e30-lite.chunk.js +2 -0
  13. package/dist/scripts/1074-2ab8b03e30-lite.chunk.js.map +1 -0
  14. package/dist/scripts/1087-861be5211f-lite.chunk.js +2 -0
  15. package/dist/scripts/1087-861be5211f-lite.chunk.js.map +1 -0
  16. package/dist/scripts/1199-6522b1d291-lite.chunk.js +2 -0
  17. package/dist/scripts/1199-6522b1d291-lite.chunk.js.map +1 -0
  18. package/dist/scripts/121-1b744469ee-lite.chunk.js +2 -0
  19. package/dist/scripts/121-1b744469ee-lite.chunk.js.map +1 -0
  20. package/dist/scripts/{1221-502395e693-lite.chunk.js → 1221-894d8474d5-lite.chunk.js} +3 -3
  21. package/dist/scripts/1221-894d8474d5-lite.chunk.js.map +1 -0
  22. package/dist/scripts/1243-ede924125c-lite.chunk.js +2 -0
  23. package/dist/scripts/1243-ede924125c-lite.chunk.js.map +1 -0
  24. package/dist/scripts/147-44ee7e9a78-lite.chunk.js +2 -0
  25. package/dist/scripts/147-44ee7e9a78-lite.chunk.js.map +1 -0
  26. package/dist/scripts/{1610-7f58bb25a9-lite.chunk.js → 1610-bf848cce4d-lite.chunk.js} +2 -2
  27. package/dist/scripts/{1610-7f58bb25a9-lite.chunk.js.map → 1610-bf848cce4d-lite.chunk.js.map} +1 -1
  28. package/dist/scripts/{7230-71f8d6d1bd-lite.chunk.js → 1867-3b447a1b85-lite.chunk.js} +2 -2
  29. package/dist/scripts/{7230-71f8d6d1bd-lite.chunk.js.map → 1867-3b447a1b85-lite.chunk.js.map} +1 -1
  30. package/dist/scripts/2258-ed7383502f-lite.chunk.js +3 -0
  31. package/dist/scripts/2258-ed7383502f-lite.chunk.js.map +1 -0
  32. package/dist/scripts/3268-2736356687-lite.chunk.js +2 -0
  33. package/dist/scripts/{3268-faca1bf46e-lite.chunk.js.map → 3268-2736356687-lite.chunk.js.map} +1 -1
  34. package/dist/scripts/3836-425334ab13-lite.chunk.js +2 -0
  35. package/dist/scripts/{3836-f2a0c9f713-lite.chunk.js.map → 3836-425334ab13-lite.chunk.js.map} +1 -1
  36. package/dist/scripts/3837-e4c5bb738b-lite.chunk.js +2 -0
  37. package/dist/scripts/3837-e4c5bb738b-lite.chunk.js.map +1 -0
  38. package/dist/scripts/4185-1f65c7adc9-lite.chunk.js +2 -0
  39. package/dist/scripts/4185-1f65c7adc9-lite.chunk.js.map +1 -0
  40. package/dist/scripts/4203-ee50e89841-lite.chunk.js +3 -0
  41. package/dist/scripts/4203-ee50e89841-lite.chunk.js.map +1 -0
  42. package/dist/scripts/4598-bcd3f6f8a7-lite.chunk.js +2 -0
  43. package/dist/scripts/{4598-2b1daca7ae-lite.chunk.js.map → 4598-bcd3f6f8a7-lite.chunk.js.map} +1 -1
  44. package/dist/scripts/4948-f21dad2ca1-lite.chunk.js +2 -0
  45. package/dist/scripts/4948-f21dad2ca1-lite.chunk.js.map +1 -0
  46. package/dist/scripts/{5153-079b4125ae-lite.chunk.js → 5153-acc6c13153-lite.chunk.js} +3 -3
  47. package/dist/scripts/5153-acc6c13153-lite.chunk.js.map +1 -0
  48. package/dist/scripts/6137-bc8b193237-lite.chunk.js +2 -0
  49. package/dist/scripts/6137-bc8b193237-lite.chunk.js.map +1 -0
  50. package/dist/scripts/6756-e90680dfcd-lite.chunk.js +3 -0
  51. package/dist/scripts/6756-e90680dfcd-lite.chunk.js.map +1 -0
  52. package/dist/scripts/6790-c8a9efba50-lite.chunk.js +2 -0
  53. package/dist/scripts/6790-c8a9efba50-lite.chunk.js.map +1 -0
  54. package/dist/scripts/705-10a85bae7a-lite.chunk.js +2 -0
  55. package/dist/scripts/705-10a85bae7a-lite.chunk.js.map +1 -0
  56. package/dist/scripts/7103-14bd3771d2-lite.chunk.js +2 -0
  57. package/dist/scripts/7103-14bd3771d2-lite.chunk.js.map +1 -0
  58. package/dist/scripts/7205-12a6b2ac55-lite.chunk.js +2 -0
  59. package/dist/scripts/7205-12a6b2ac55-lite.chunk.js.map +1 -0
  60. package/dist/scripts/7438-88d11bb89a-lite.chunk.js +2 -0
  61. package/dist/scripts/7438-88d11bb89a-lite.chunk.js.map +1 -0
  62. package/dist/scripts/7480-e0749592fc-lite.chunk.js +2 -0
  63. package/dist/scripts/7480-e0749592fc-lite.chunk.js.map +1 -0
  64. package/dist/scripts/8010-e9163f5bee-lite.chunk.js +2 -0
  65. package/dist/scripts/8010-e9163f5bee-lite.chunk.js.map +1 -0
  66. package/dist/scripts/8410-1f1fd5ccf0-lite.chunk.js +3 -0
  67. package/dist/scripts/8410-1f1fd5ccf0-lite.chunk.js.map +1 -0
  68. package/dist/scripts/8705-ecd20ef6cb-lite.chunk.js +2 -0
  69. package/dist/scripts/8705-ecd20ef6cb-lite.chunk.js.map +1 -0
  70. package/dist/scripts/8856-02dd2e486c-lite.chunk.js +2 -0
  71. package/dist/scripts/8856-02dd2e486c-lite.chunk.js.map +1 -0
  72. package/dist/scripts/9003-1db925f5ec-lite.chunk.js +2 -0
  73. package/dist/scripts/9003-1db925f5ec-lite.chunk.js.map +1 -0
  74. package/dist/scripts/9042-1a42fcbba2-lite.chunk.js +2 -0
  75. package/dist/scripts/9042-1a42fcbba2-lite.chunk.js.map +1 -0
  76. package/dist/scripts/9103-4eec16d73b-lite.chunk.js +2 -0
  77. package/dist/scripts/9103-4eec16d73b-lite.chunk.js.map +1 -0
  78. package/dist/scripts/9134-19912ca3ee-lite.chunk.js +2 -0
  79. package/dist/scripts/9134-19912ca3ee-lite.chunk.js.map +1 -0
  80. package/dist/scripts/9266-f0ad8d5cb3-lite.chunk.js +2 -0
  81. package/dist/scripts/9266-f0ad8d5cb3-lite.chunk.js.map +1 -0
  82. package/dist/scripts/9740-9d50d31b72-lite.chunk.js +2 -0
  83. package/dist/scripts/9740-9d50d31b72-lite.chunk.js.map +1 -0
  84. package/dist/scripts/{bundle-95a6fc2722.min.js → bundle-828ca65de8.min.js} +3 -3
  85. package/dist/scripts/{bundle-95a6fc2722.min.js.map → bundle-828ca65de8.min.js.map} +1 -1
  86. package/package.json +1 -1
  87. package/dist/scripts/104-b62a8447f0-lite.chunk.js +0 -2
  88. package/dist/scripts/104-b62a8447f0-lite.chunk.js.map +0 -1
  89. package/dist/scripts/107-989ac2dc47-lite.chunk.js +0 -2
  90. package/dist/scripts/107-989ac2dc47-lite.chunk.js.map +0 -1
  91. package/dist/scripts/119-e3a8bd94dd-lite.chunk.js +0 -2
  92. package/dist/scripts/119-e3a8bd94dd-lite.chunk.js.map +0 -1
  93. package/dist/scripts/1199-a2ac2338d0-lite.chunk.js +0 -2
  94. package/dist/scripts/1199-a2ac2338d0-lite.chunk.js.map +0 -1
  95. package/dist/scripts/121-bf7a153eb8-lite.chunk.js +0 -2
  96. package/dist/scripts/121-bf7a153eb8-lite.chunk.js.map +0 -1
  97. package/dist/scripts/1221-502395e693-lite.chunk.js.map +0 -1
  98. package/dist/scripts/2258-4d0639c9fe-lite.chunk.js +0 -3
  99. package/dist/scripts/2258-4d0639c9fe-lite.chunk.js.map +0 -1
  100. package/dist/scripts/3268-faca1bf46e-lite.chunk.js +0 -2
  101. package/dist/scripts/3836-f2a0c9f713-lite.chunk.js +0 -2
  102. package/dist/scripts/3837-fe321e8deb-lite.chunk.js +0 -2
  103. package/dist/scripts/3837-fe321e8deb-lite.chunk.js.map +0 -1
  104. package/dist/scripts/4025-306e0fbdd5-lite.chunk.js +0 -2
  105. package/dist/scripts/4025-306e0fbdd5-lite.chunk.js.map +0 -1
  106. package/dist/scripts/4164-5d3af57b67-lite.chunk.js +0 -2
  107. package/dist/scripts/4164-5d3af57b67-lite.chunk.js.map +0 -1
  108. package/dist/scripts/4185-e8e40dab72-lite.chunk.js +0 -2
  109. package/dist/scripts/4185-e8e40dab72-lite.chunk.js.map +0 -1
  110. package/dist/scripts/4562-545f04c53f-lite.chunk.js +0 -2
  111. package/dist/scripts/4562-545f04c53f-lite.chunk.js.map +0 -1
  112. package/dist/scripts/4598-2b1daca7ae-lite.chunk.js +0 -2
  113. package/dist/scripts/4948-66ba60c8e3-lite.chunk.js +0 -2
  114. package/dist/scripts/4948-66ba60c8e3-lite.chunk.js.map +0 -1
  115. package/dist/scripts/5153-079b4125ae-lite.chunk.js.map +0 -1
  116. package/dist/scripts/5241-163f5ac64c-lite.chunk.js +0 -3
  117. package/dist/scripts/5241-163f5ac64c-lite.chunk.js.map +0 -1
  118. package/dist/scripts/5349-bc0fcb4083-lite.chunk.js +0 -2
  119. package/dist/scripts/5349-bc0fcb4083-lite.chunk.js.map +0 -1
  120. package/dist/scripts/6135-a878a9cff0-lite.chunk.js +0 -3
  121. package/dist/scripts/6135-a878a9cff0-lite.chunk.js.map +0 -1
  122. package/dist/scripts/6509-23fdb20a4b-lite.chunk.js +0 -2
  123. package/dist/scripts/6509-23fdb20a4b-lite.chunk.js.map +0 -1
  124. package/dist/scripts/6790-5086b72662-lite.chunk.js +0 -2
  125. package/dist/scripts/6790-5086b72662-lite.chunk.js.map +0 -1
  126. package/dist/scripts/7205-2428f775a5-lite.chunk.js +0 -2
  127. package/dist/scripts/7205-2428f775a5-lite.chunk.js.map +0 -1
  128. package/dist/scripts/7339-5793c921bb-lite.chunk.js +0 -3
  129. package/dist/scripts/7339-5793c921bb-lite.chunk.js.map +0 -1
  130. package/dist/scripts/7438-a5f96e58fc-lite.chunk.js +0 -2
  131. package/dist/scripts/7438-a5f96e58fc-lite.chunk.js.map +0 -1
  132. package/dist/scripts/7926-6b040931aa-lite.chunk.js +0 -2
  133. package/dist/scripts/7926-6b040931aa-lite.chunk.js.map +0 -1
  134. package/dist/scripts/8536-f75009dd87-lite.chunk.js +0 -2
  135. package/dist/scripts/8536-f75009dd87-lite.chunk.js.map +0 -1
  136. package/dist/scripts/8856-df102acdff-lite.chunk.js +0 -2
  137. package/dist/scripts/8856-df102acdff-lite.chunk.js.map +0 -1
  138. package/dist/scripts/9134-42dc2390ce-lite.chunk.js +0 -2
  139. package/dist/scripts/9134-42dc2390ce-lite.chunk.js.map +0 -1
  140. package/dist/scripts/9266-c5d6705147-lite.chunk.js +0 -2
  141. package/dist/scripts/9266-c5d6705147-lite.chunk.js.map +0 -1
  142. package/dist/scripts/9284-402a14d41c-lite.chunk.js +0 -2
  143. package/dist/scripts/9284-402a14d41c-lite.chunk.js.map +0 -1
  144. package/dist/scripts/9470-11c8c2ca71-lite.chunk.js +0 -2
  145. package/dist/scripts/9470-11c8c2ca71-lite.chunk.js.map +0 -1
  146. package/dist/scripts/9527-111c8586a7-lite.chunk.js +0 -2
  147. package/dist/scripts/9527-111c8586a7-lite.chunk.js.map +0 -1
  148. package/dist/scripts/9591-230bcf0935-lite.chunk.js +0 -2
  149. package/dist/scripts/9591-230bcf0935-lite.chunk.js.map +0 -1
  150. /package/dist/css/{5349-lite-829df3b4e7.chunk.css → 6137-lite-829df3b4e7.chunk.css} +0 -0
  151. /package/dist/css/{9470-lite-edb2d29928.chunk.css → 8010-lite-edb2d29928.chunk.css} +0 -0
  152. /package/dist/css/{6135-lite-41bdd1c5a3.chunk.css → 8410-lite-41bdd1c5a3.chunk.css} +0 -0
  153. /package/dist/css/{121-lite-1337d9acf0.chunk.css → 9042-lite-1337d9acf0.chunk.css} +0 -0
  154. /package/dist/scripts/{1221-502395e693-lite.chunk.js.LICENSE.txt → 1221-894d8474d5-lite.chunk.js.LICENSE.txt} +0 -0
  155. /package/dist/scripts/{2258-4d0639c9fe-lite.chunk.js.LICENSE.txt → 2258-ed7383502f-lite.chunk.js.LICENSE.txt} +0 -0
  156. /package/dist/scripts/{5153-079b4125ae-lite.chunk.js.LICENSE.txt → 4203-ee50e89841-lite.chunk.js.LICENSE.txt} +0 -0
  157. /package/dist/scripts/{5241-163f5ac64c-lite.chunk.js.LICENSE.txt → 5153-acc6c13153-lite.chunk.js.LICENSE.txt} +0 -0
  158. /package/dist/scripts/{6135-a878a9cff0-lite.chunk.js.LICENSE.txt → 6756-e90680dfcd-lite.chunk.js.LICENSE.txt} +0 -0
  159. /package/dist/scripts/{7339-5793c921bb-lite.chunk.js.LICENSE.txt → 8410-1f1fd5ccf0-lite.chunk.js.LICENSE.txt} +0 -0
  160. /package/dist/scripts/{bundle-95a6fc2722.min.js.LICENSE.txt → bundle-828ca65de8.min.js.LICENSE.txt} +0 -0
@@ -1,2 +0,0 @@
1
- "use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[9591],{26136:(e,t,n)=>{n.d(t,{B:()=>c});var a=n(76198),r=n(23481),i=n(64818),o=r.T.encloseNamespace("shared.analyticsUtils");function c(e,t){return e?t?(0,a._8)((n=e.id,r=e.sessionId,c=+"".concat(n||function(e){if(!e)return 0;for(var t=0,n=0;n<e.length;n++)t=(t<<5)-t+e.charCodeAt(n),t|=0;return Math.abs(t)}(r)).concat(Math.floor((new Date).getMinutes()/5)),{dictionaries:[a.O9,a.yd],separator:" ",length:2,style:"capital",seed:c})):i.l.getFullName(e)||o("anonUser"):o("anonUser");var n,r,c}},1619:(e,t,n)=>{n.d(t,{e:()=>f});var a=n(32735),r=n(23481),i=n(12528),o=n(83914),c=n(35223),l=n(33518),s=n(2510);function u(e){return u="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},u(e)}function m(e,t,n){return(t=function(e){var t=function(e){if("object"!=u(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!=u(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==u(t)?t:t+""}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var p=r.T.encloseNamespace("sharev2.shareAvatar"),d=m(m(m(m({},s.y.Open,c.vn.Classrooms),s.y.Link,c.vn.Link),s.y.Classroom,c.vn.Classrooms),s.y.Live,c.vn.Play),v=m(m(m(m({},s.y.Open,"blue"),s.y.Link,"black"),s.y.Classroom,"teal"),s.y.Live,"purple"),y=m(m(m(m({},s.y.Open,"openShareType"),s.y.Link,"linkShareType"),s.y.Classroom,"classroomShareType"),s.y.Live,"liveShareType");function f(e){var t,n,r,c,u;return a.createElement("div",{className:"d-flex align-items-center gap-2"},a.createElement("div",null,a.createElement(i.f,{svgName:d[e.type],variant:v[e.type],textVariant:"white",svgWrapperClassName:"p-1",svgSize:null!==(t=e.svgSize)&&void 0!==t?t:o.S.Standard})),a.createElement("div",{className:"d-flex flex-column"},a.createElement("p",{className:"m-0"},(c=(r=e).type,u=r.classroomName,c===s.y.Classroom&&u?u:p(y[c]))),!e.hideSubtitle&&a.createElement("span",{className:"text-secondary"},null!==(n=e.subtitleText)&&void 0!==n?n:function(e){var t=e.type,n=e.privacy,a=e.studentCount,r=void 0===a?0:a,i=e.classroomGroupCount,o=void 0===i?0:i;switch(t){case s.y.Classroom:return function(e,t){return e&&t?"".concat(p("classroomGroupCount",{smartCount:e}),", ").concat(p("studentSubTitle",{smartCount:t})):e?p("groupSubTitle",{smartCount:e}):t?p("studentSubTitle",{smartCount:t}):p("allStudentsSubTitle")}(o,r);case s.y.Open:return p("openShareTypeSubTitle");case s.y.Link:return function(e){return[l.e.JustMySchool,l.e.Protected].includes(e)?p("respectRatingsSubTitle"):e===l.e.JustMySchoolOverrideRestriction?p("anyoneInSchoolSubTitle"):e===l.e.ProtectedOverrideRestriction?p("anyoneSignedInSubTitle"):e===l.e.Public?p("anyoneWithLinkSubTitle"):e===l.e.PinCode?p("anyoneWithPinSubTitle"):void 0}(n);case s.y.Live:return p("liveShareTypeSubTitle");default:return p("publicShareTypeSubTitle")}}(e))))}},33518:(e,t,n)=>{var a;n.d(t,{e:()=>a}),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"}(a||(a={}))},8233:(e,t,n)=>{n.d(t,{R:()=>d});var a=n(23481),r=n(110),i=n(33518),o=n(4594),c=n(49080),l=n(26361),s=n(35223),u=n(31908);function m(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,a=Array(t);n<t;n++)a[n]=e[n];return a}var p=a.T.encloseNamespace("sharev2.utils"),d={getPrivateIconAndText:function(e){var t=e.entityTypeId,n=e.privacy,a=e.hasStudentExp,r=e.entity,c=e.yearGroups;if(t===o.E.Topic||t===o.E.Series)return{icon:s.vn.VisibleOn,text:p(a?"justMySchoolTeachers":"justMySchoolDescription")};if(!Array.isArray(n))switch(n){case i.e.Public:return{icon:s.vn.VisibleOn,text:p("publicDescription")};case i.e.ProtectedOverrideRestriction:return{icon:s.vn.VisibleOn,text:p("clickViewOnly")};case i.e.Protected:return{icon:s.vn.Lock,text:d.getRespectRatingText(r,c,a)};case i.e.JustMySchoolOverrideRestriction:return{icon:s.vn.Lock,text:p(a?"justMySchoolTeachers":"justMySchoolDescription")};case i.e.JustMySchool:return{icon:s.vn.Lock,text:d.getRespectRatingText(r,c,a)};case i.e.PinCode:return{icon:s.vn.Lock,text:p("pinDescription")};case i.e.PasswordProtected:return{icon:s.vn.Lock,text:p("privateDescription")};default:return{}}},getIconAndText:function(e){var t=e.linkExpireDate,n=e.isPasswordProtected,a=e.status;if(!t&&!n)return d.getPrivateIconAndText(e);if(!t)return{icon:s.vn.Lock,text:p("password")};var i=r.O.isToday(t),o=r.O.diffBetween(t,new Date,"day");if(!n){var l=i?p("expiryToday"):p("expiry",{days:o});return a===c.F.Expired&&(l=p("expired")),{icon:s.vn.Timer,text:l}}var u=i?p("passwordExpiryToday"):p("passwordExpiry",{days:o});return a===c.F.Expired&&(u=p("passwordExpired")),{icon:s.vn.Lock,text:u}},getRespectRatingText:function(e,t,n){var a;if(!e||!t)return null;if(n)return p("justMySchoolTeachers");if(!u.M.isVideoType(e))return p("collectionRating");var r=l.l.getWeightedRestriction(null===(a=e._restrictions)||void 0===a?void 0:a.value);if(r&&!r.yearGroup)return p("onlyAdmins");var i,o,c,s=u.M.getRating(e),d=function(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!n){if(Array.isArray(e)||(n=function(e,t){if(e){if("string"==typeof e)return m(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?m(e,t):void 0}}(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var a=0,r=function(){};return{s:r,n:function(){return a>=e.length?{done:!0}:{done:!1,value:e[a++]}},e:function(e){throw e},f:r}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,o=!0,c=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return o=e.done,e},e:function(e){c=!0,i=e},f:function(){try{o||null==n.return||n.return()}finally{if(c)throw i}}}}(t);try{for(d.s();!(c=d.n()).done;){var v=c.value;(!i||v.value>i.value)&&(i=v),r&&v.value<=r.yearGroup||s&&v.rating.value<s.value||(!o||v.value<o.value)&&(o=v)}}catch(e){d.e(e)}finally{d.f()}return o?1===t.length?p("clickViewOnly"):o.value===i.value?p("maxYearGroup",{yearGroup:i.name}):p("yearGroupRange",{yearGroup:o.name}):p("onlyStaff")},getShareLinkAccessType:function(e){return e.isTvContent?"tv":e.isClickViewContent?"clickview":"private"}}},40782:(e,t,n)=>{n.d(t,{I:()=>a,O:()=>l});var a,r=n(32735),i=n(2606),o=n(362);function c(e){var t=r.useCallback((function(t){if(t){var n=t.r.baseVal.value,a=2*Math.PI*n,r=a-e.percentage*a;t.style.strokeDasharray="".concat(a," ").concat(a),t.style.strokeDashoffset=r.toString()}}),[e.percentage]);return r.createElement("svg",null,r.createElement("circle",{r:(0,i.pu)(e.size),className:o.Z.backgroundCircle}),!(0,i.zR)(e.percentage)&&r.createElement("circle",{ref:t,r:(0,i.pu)(e.size),className:(0,i.V4)(e.percentage,e.scoreThresholds)}))}function l(e){var t,n=(0,i.Ki)(e.percentage),l=e.size||(e.layout===a.LabelInside?i.Mk.Large:i.Mk.Small),s=e.customLabel||(0,i.DV)(n);return e.layout===a.LabelOnly?r.createElement("span",{className:(0,i.IA)(n)},s):r.createElement("div",{className:"d-flex align-items-center justify-content-between ".concat(null!==(t=e.className)&&void 0!==t?t:"")},e.layout===a.LabelBefore&&r.createElement("span",{className:"me-2"},s),r.createElement("div",{className:(0,i.tw)(l,n)},r.createElement(c,{percentage:n,size:l,scoreThresholds:e.scoreThresholds}),e.layout===a.LabelInside&&r.createElement("span",{className:o.Z.centredPercentageText},s)))}!function(e){e.CircleOnly="circle_only",e.LabelOnly="label_only",e.LabelBefore="label_before",e.LabelInside="label_inside"}(a||(a={})),l.defaultProps={layout:a.CircleOnly}},2606:(e,t,n)=>{n.d(t,{DV:()=>f,IA:()=>d,Ki:()=>y,Mk:()=>c,V4:()=>p,pu:()=>m,tw:()=>v,zR:()=>b});var a=n(94892),r=n(362);function i(e){return i="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},i(e)}function o(e,t,n){return(t=function(e){var t=function(e){if("object"!=i(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!=i(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==i(t)?t:t+""}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var c,l=.2,s=.36;!function(e){e.Small="small",e.Large="large",e.ExtraSmall="extraSmall"}(c||(c={}));var u=o(o(o({},c.ExtraSmall,{size:2}),c.Small,{size:2}),c.Large,{size:5.8});function m(e){var t=u[e].size,n=e===c.Large?s:l;return"".concat(t/2-2*n,"rem")}function p(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:a.i;return e>=t.HIGH?r.Z.circleSuccess:e>=t.MODERATE?r.Z.circleWarning:r.Z.circleDanger}function d(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:a.i;return e>=t.HIGH?"text-success":e>=t.MODERATE?"text-warning":"text-danger"}function v(e,t){var n="d-inline-block ".concat(r.Z.circleContainer);return e===c.Large&&(n+=" ".concat(r.Z.lgCircleContainer)),e===c.ExtraSmall&&(n+=" ".concat(r.Z.xsCircleContainer)),b(t)&&(n+=" ".concat(r.Z.pendingCircle)),n}function y(e){if(!b(e))return+e.toFixed(2)}function f(e){return b(e)?"--%":"".concat(Math.round(100*e),"%")}function b(e){return"number"!=typeof e}},38502:(e,t,n)=>{n.d(t,{r:()=>m});var a=n(32735),r=n(49985),i=n(15611),o=n(18559),c=n(11607),l=n(83914),s=n(22771);function u(e){return a.createElement(a.Fragment,null,!!e.tab.svgName&&a.createElement("div",{className:e.tab.name?"pe-1":""},a.createElement(l.x,{svgName:e.tab.svgName})),e.tab.name,"number"==typeof e.tab.count&&a.createElement("div",{className:"ps-2"},a.createElement(o.C,{type:o.g.Count,data:e.tab.count})))}function m(e){var t;return a.createElement("nav",{className:null!==(t=e.className)&&void 0!==t?t:"",ref:e.containerRef},a.createElement("ul",{className:"\n list-unstyled d-inline-block m-0 ".concat(s.Z.pillTabSelector,"\n ").concat(e.borderRadius?s.Z.radiusSmall:"","\n ").concat(e.listClassName,"\n ")},e.tabs.map((function(e,t){return a.createElement("li",{className:"\n p-0 ".concat(s.Z.tab," ").concat(e.active?"btn btn-dark":"btn btn-outline-dark","\n ").concat(e.name?s.Z.minWidth:""," ").concat(e.className,"\n "),key:t},e.appLink?a.createElement(i.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(s.Z.tabLink,"\n ")},a.createElement(u,{tab:e})):a.createElement(c.L,{className:"\n cursor-pointer d-flex align-items-center justify-content-center\n text-decoration-none text-reset px-2 text-nowrap ".concat(s.Z.tabLink,"\n "),onClick:function(){return function(e){!e.active&&e.onSelect&&(e.onSelect(),e.analyticsData&&e.analyticsOptions&&r.k.logUserAction(e.analyticsData,e.analyticsOptions))}(e)}},a.createElement(u,{tab:e})))}))))}m.defaultProps={borderRadius:"lg"}},94892:(e,t,n)=>{n.d(t,{T:()=>r,i:()=>a});var a={HIGH:.75,MODERATE:.5},r={HIGH:.7,MODERATE:.7}},93322:(e,t,n)=>{n.d(t,{F:()=>i});var a=n(32735),r=n(13126);function i(){a.useEffect((function(){return r.e.lockContentWidth(),function(){return r.e.unlockContentWidth()}}),[])}},99746:(e,t,n)=>{n.d(t,{p:()=>v});var a=n(32735),r=n(57900),i=n(97395),o=n(2948),c=n(91693),l=n(83345),s=n(4594),u=n(35223),m=n(86702);function p(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,a=Array(t);n<t;n++)a[n]=e[n];return a}var d="lite.insightsAdminAlert";function v(e){var t,n,v=(t=(0,o.D)(m.y.INSIGHTS_ADMIN_ALERT,!0,{storage:r.Z1.LocalStorage}),n=2,function(e){if(Array.isArray(e))return e}(t)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var a,r,i,o,c=[],l=!0,s=!1;try{if(i=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;l=!1}else for(;!(l=(a=i.call(n)).done)&&(c.push(a.value),c.length!==t);l=!0);}catch(e){s=!0,r=e}finally{try{if(!l&&null!=n.return&&(o=n.return(),Object(o)!==o))return}finally{if(s)throw r}}return c}}(t,n)||function(e,t){if(e){if("string"==typeof e)return p(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?p(e,t):void 0}}(t,n)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),y=v[0],f=v[1];return e.hasAnalytics&&y?a.createElement("div",{role:"alert",className:"d-flex justify-content-between align-items-center bg-light-blue rounded p-2 mb-4"},a.createElement("div",null,a.createElement(l.x,{namespace:d,phrase:"adminAlert"}),a.createElement("a",{className:"text-info",href:function(){if(!e.video)return e.analyticsUrl;var t="";return e.video.typeId===s.E.Interactive&&(t="/interactives/".concat(e.video.id,"/views")),e.video.typeId===s.E.Video&&(t="/videos/".concat(e.video.id,"/views")),e.video.typeId===s.E.Clip&&(t="/clips/".concat(e.video.id,"/views")),i._.safeUrlConcat(e.analyticsUrl,t)}(),target:"_blank"},a.createElement(l.x,{namespace:d,phrase:"analytics"})),"."),a.createElement(c.h,{svgName:u.vn.Close,className:"text-blue",onClick:function(){f(!1)}})):a.createElement(a.Fragment,null)}},40913:(e,t,n)=>{n.d(t,{j:()=>z});var a=n(32735),r=n(23481),i=n(57900),o=n(2948),c=n(2510),l=n(76306),s=n(49935),u=n(91693),m=n(38502),p=n(83914),d=n(83345),v=n(83523),y=n(36532),f=n(38143),b=n(4594),h=n(35223),g=n(14070),E=n(97291),S=n(46390),x=n(86099),N=n(22490),T=n(99746),k=n(65858),O=n(9806),C=n(65359),A=n(1619),L=n(21789),w=n(8233),I=n(54610);const M={thumbnailContainer:"HeRac"};var R=r.T.encloseNamespace("insights.shareInfo");function P(e){var t,n,r,i,o,c,l;return e.sharedObject?a.createElement("div",{className:"d-flex gap-3 ".concat(null!==(t=e.className)&&void 0!==t?t:"")},a.createElement("div",{className:"col-auto ".concat(M.thumbnailContainer)},a.createElement(O.k,{object:e.sharedObject,appLink:(0,x.Qh)(e.sharedObject),locationContext:k.LZ.MyShares,imageOptions:{size:I.h2.Medium},showVideoMetadata:!0,showCollectionMask:!1,showVideoCount:!0})),a.createElement("div",{className:"d-flex gap-1 flex-column col align-items-start"},a.createElement(C.F,{sharedObject:e.sharedObject,getObjectAppLink:x.Qh,titleClassName:"h6",subTextClassName:"d-none"}),a.createElement(A.e,{privacy:e.share.privacy,type:e.share.type,svgSize:p.S.Small,hideSubtitle:!0}),(n=!!e.share.expireDate,r=L.x.hasShareExpired(e.share),i=L.x.calculateDaysToExpiry(e.share),c=(o=w.R.getPrivateIconAndText({privacy:e.share.privacy,entityTypeId:e.sharedObject.typeId,hasStudentExp:!1,entity:e.entity,yearGroups:e.yearGroups})).icon,l=o.text,n?a.createElement("div",{className:"d-flex align-items-center"},a.createElement(p.x,{svgName:r?h.vn.VisibleOff:h.vn.VisibleOn,size:p.S.Medium,className:"me-2 svg-container"}),r?a.createElement("p",{className:"mb-0"},R("expired")):a.createElement("p",{className:"mb-0"},R("expiryHint",{smartCount:i}))):a.createElement("div",{className:"d-flex align-items-center"},a.createElement(p.x,{svgName:c,size:p.S.Medium,className:"me-2 svg-container"}),a.createElement("p",{className:"mb-0"},l))))):a.createElement(a.Fragment,null)}var D=n(69003);function j(e){return function(e){if(Array.isArray(e))return V(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||_(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 _(e,t){if(e){if("string"==typeof e)return V(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?V(e,t):void 0}}function V(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,a=Array(t);n<t;n++)a[n]=e[n];return a}var H="insights.header",Z=r.T.encloseNamespace(H);function G(e){return a.createElement(y.u,{id:"audienceFilter",title:Z("demoOnly"),spanHack:e.isDemo},a.createElement("div",{className:e.isDemo?"pointer-events-none":""},e.children))}function z(e){var t,n,r,k,O=(r=(0,o.D)(f.g.ANONYMISE_USERS,!1,{storage:i.Z1.LocalStorage}),k=2,function(e){if(Array.isArray(e))return e}(r)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var a,r,i,o,c=[],l=!0,s=!1;try{if(i=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;l=!1}else for(;!(l=(a=i.call(n)).done)&&(c.push(a.value),c.length!==t);l=!0);}catch(e){s=!0,r=e}finally{try{if(!l&&null!=n.return&&(o=n.return(),Object(o)!==o))return}finally{if(s)throw r}}return c}}(r,k)||_(r,k)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),C=O[0],A=O[1],L=(0,S.G)().isPlugin,w=(0,x.Zm)(e.share);return a.createElement("div",null,a.createElement(T.p,{analyticsUrl:e.analyticsWebUrl,hasAnalytics:e.hasAnalytics,video:e.video}),a.createElement("section",{className:"mb-4"},a.createElement("div",{className:"mb-3"},a.createElement("div",{className:"d-flex justify-content-between mb-3"},a.createElement("div",{className:"me-2"},e.video&&a.createElement(a.Fragment,null,a.createElement("h1",{className:"mb-0 d-inline me-2"},e.video.name),!e.isDemo&&a.createElement(y.u,{title:Z(e.video.typeId===b.E.Interactive?"viewInteractive":e.video.typeId===b.E.Clip?"viewClip":"viewVideo"),type:"text",spanHack:!0,spanHackClassName:"d-inline-block align-text-bottom"},a.createElement(u.h,{svgName:h.vn.NewWindow,appLink:N.W.getAppLink(e.video),svgSize:p.S.Large,className:"d-inline-block",customSize:!0}))),!e.video&&a.createElement("h1",{className:"partial-loading-background",style:{width:"20rem"}}," ")),a.createElement("div",{className:"d-flex gap-2"},!L&&a.createElement(G,{isDemo:e.isDemo},a.createElement(u.h,{svgName:h.vn.Share,className:"btn btn-outline-dark",appLink:w},a.createElement(d.x,{namespace:H,phrase:"shareOptions"}))),a.createElement(G,{isDemo:e.isDemo},a.createElement(l.m,{dropdownToggleClassName:"btn btn-outline-dark",actions:(n=[],(null===(t=e.video)||void 0===t?void 0:t.typeId)===b.E.Interactive&&n.push({label:Z("generateReport"),svgName:h.vn.Print,appLink:{application:E.O.MY_SHARES,action:g.e.MyShares.INTERACTIVE_GENERATE_REPORT,args:[e.video.id]}}),[].concat(n,j((0,D.sD)({share:e.share,sharedObject:e.video,isPlugin:L,hideShareOptionsActions:!0}))))})))),a.createElement("div",{className:"d-flex justify-content-between mb-3"},e.video?a.createElement(s.Oo,{breadcrumbs:function(){if(!e.video)return[];if(!e.share)return[];var t={name:Z("shares"),appLink:{application:E.O.MY_SHARES,action:g.e.MyShares.HOME}};return e.share.type===c.y.Classroom&&(t={name:Z("classrooms"),appLink:{application:E.O.CLASSROOMS,action:g.e.Classrooms.HOME}}),e.share.type===c.y.Open&&(t={name:Z("openClassrooms"),appLink:{application:E.O.CLASSROOMS,action:g.e.Classrooms.OPEN_CLASSROOMS}}),[t,{name:e.video.name,active:!0}]}()}):a.createElement(s.b2,null),a.createElement("div",{className:"d-flex gap-3"},a.createElement("label",{htmlFor:"anonymiseNames",className:"mb-0"},a.createElement(d.x,{namespace:H,phrase:"anonymiseNames"})),a.createElement(v.Z,{id:"anonymiseNames",on:C,onClick:function(){return A(!C)}})))),a.createElement(P,{className:"mb-3",sharedObject:e.video,share:e.share,entity:e.video,yearGroups:e.yearGroups}),a.createElement("div",{className:"d-flex align-items-center mb-4"},a.createElement(m.r,{tabs:e.tabs}))))}},10447:(e,t,n)=>{n.d(t,{$6:()=>l,aq:()=>u,kj:()=>s});var a=n(23481),r=n(14070),i=n(97291),o=n(86099),c=a.T.encloseNamespace("shared.insightsUtils");function l(e,t,n){return[{name:c("insights"),active:"insights"===t,appLink:(0,o.pY)(e,n)},{name:c("heatmap"),active:"heatmap"===t,appLink:(0,o.Rv)(e,n)}]}function s(e,t){return[{name:c("insights"),active:"insights"===t,appLink:(0,o.pY)(e)},{name:c("results"),active:"results"===t,appLink:(0,o.rq)(e)},{name:c("questions"),active:"questions"===t,appLink:(0,o.Sj)(e)},{name:c("heatmap"),active:"heatmap"===t,appLink:(0,o.Rv)(e)}]}function u(e,t,n){return[{name:c("insights"),active:"insights"===t,appLink:{application:i.O.MY_SHARES,action:r.e.MyShares.INTERACTIVE_OVERVIEW_DEMO,args:[e],params:n}},{name:c("results"),active:"results"===t,appLink:{application:i.O.MY_SHARES,action:r.e.MyShares.INTERACTIVE_STUDENTS_DEMO,args:[e],params:n}},{name:c("questions"),active:"questions"===t,appLink:{application:i.O.MY_SHARES,action:r.e.MyShares.INTERACTIVE_QUESTIONS_DEMO,args:[e],params:n}},{name:c("heatmap"),active:"heatmap"===t,appLink:{application:i.O.MY_SHARES,action:r.e.MyShares.INTERACTIVE_HEATMAP_DEMO,args:[e],params:n}}]}},362:(e,t,n)=>{n.d(t,{Z:()=>a});const a={circleContainer:"p8Vgz",backgroundCircle:"asGGE",circleSuccess:"PXLNj",circleWarning:"ZckRN",circleDanger:"slBRg",lgCircleContainer:"N8KCI",xsCircleContainer:"RPqZ2",pendingCircle:"DKrcq",centredPercentageText:"tpmLR"}},22771:(e,t,n)=>{n.d(t,{Z:()=>a});const a={pillTabSelector:"Hdi6o",tab:"RvNxr",minWidth:"GHSz9",radiusSmall:"VhJJa",tabLink:"WFyvo"}}}]);
2
- //# sourceMappingURL=9591-230bcf0935-lite.chunk.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"scripts/9591-230bcf0935-lite.chunk.js","mappings":"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","sources":["file:///app/packages/libs/shared/src/apps/analytics/utils/AnonymiseUserUtils.ts","file:///app/packages/libs/shared/src/apps/share-v2/components/share-avatar/ShareAvatar.tsx","file:///app/packages/libs/shared/src/apps/share-v2/enums/SharePrivacy.ts","file:///app/packages/libs/shared/src/apps/share-v2/utils/ShareLinkHelper.ts","file:///app/packages/libs/shared/src/components/percentage-indicator/PercentageIndicator.tsx","file:///app/packages/libs/shared/src/components/percentage-indicator/PercentageIndicatorUtils.ts","file:///app/packages/libs/shared/src/components/pill-tab-selector/PillTabSelector.tsx","file:///app/packages/libs/shared/src/constants/ScoreThresholds.ts","file:///app/packages/libs/shared/src/hooks/useLockContentWidth.ts","file:///app/packages/projects/lite/src/apps/my-shares/components/insights-admin-alert/InsightsAdminAlert.tsx","file:///app/packages/projects/lite/src/apps/my-shares/components/share-info/share-info.scss","file:///app/packages/projects/lite/src/apps/my-shares/components/share-info/ShareInfo.tsx","file:///app/packages/projects/lite/src/apps/my-shares/components/insights-header/InsightsHeader.tsx","file:///app/packages/projects/lite/src/apps/my-shares/utils/InsightsAppLinkUtils.ts","file:///app/packages/libs/shared/src/components/percentage-indicator/percentage-indicator.scss","file:///app/packages/libs/shared/src/components/pill-tab-selector/pill-tab-selector.scss"],"sourcesContent":["import { animals, colors, Config as UniqueNamesConfig, uniqueNamesGenerator } from 'unique-names-generator';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { AnonUser } from 'libs/shared/interfaces/models/interactive-results/AnonUser';\nimport { UserHelper } from 'libs/shared/utils/UserHelper';\n\nconst namespace = 'shared.analyticsUtils';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nfunction guidToSeed(guid: string): number {\n if (!guid)\n return 0;\n\n // Simple hash function (DJB2-like) for browsers\n let hash = 0;\n for (let i = 0; i < guid.length; i++) {\n const char = guid.charCodeAt(i);\n hash = ((hash << 5) - hash) + char;\n hash |= 0; // Convert to 32bit integer\n }\n return Math.abs(hash);\n}\n\nfunction getUniqueNamesConfig(userId: string, sessionId: 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 = +`${userId || guidToSeed(sessionId)}${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: AnonUser, shouldAnonymise: boolean): string {\n if (!user) {\n return getPhrase('anonUser');\n }\n\n if (!shouldAnonymise)\n return UserHelper.getFullName(user) || getPhrase('anonUser');\n\n return uniqueNamesGenerator(getUniqueNamesConfig(user.id, user.sessionId));\n}\n","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { IconCircle } from 'libs/shared/components/icon-circle/IconCircle';\nimport { SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport { SharePrivacy } from '../../enums/SharePrivacy';\nimport { ShareType } from '../../enums/ShareType';\n\nconst namespace = 'sharev2.shareAvatar';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nconst icons = {\n [ShareType.Open]: cvSvgLibrary.Classrooms,\n [ShareType.Link]: cvSvgLibrary.Link,\n [ShareType.Classroom]: cvSvgLibrary.Classrooms,\n [ShareType.Live]: cvSvgLibrary.Play\n};\n\nconst iconColours = {\n [ShareType.Open]: 'blue',\n [ShareType.Link]: 'black',\n [ShareType.Classroom]: 'teal',\n [ShareType.Live]: 'purple'\n};\n\nconst shareTypeTitlePhraseMap = {\n [ShareType.Open]: 'openShareType',\n [ShareType.Link]: 'linkShareType',\n [ShareType.Classroom]: 'classroomShareType',\n [ShareType.Live]: 'liveShareType'\n};\n\nfunction getTitle({ type, classroomName }: ShareAvatarProps) {\n if (type === ShareType.Classroom && classroomName)\n return classroomName;\n\n return getPhrase(shareTypeTitlePhraseMap[type]);\n}\n\nfunction getClassroomSubtitle(classroomGroupCount: number, studentCount: number): string {\n if (classroomGroupCount && studentCount)\n return `${getPhrase('classroomGroupCount', { smartCount: classroomGroupCount })}, ${getPhrase('studentSubTitle', { smartCount: studentCount })}`;\n\n if (classroomGroupCount)\n return getPhrase('groupSubTitle', { smartCount: classroomGroupCount });\n\n if (studentCount)\n return getPhrase('studentSubTitle', { smartCount: studentCount });\n\n return getPhrase('allStudentsSubTitle');\n}\n\nfunction getLinkSubtitle(privacy: SharePrivacy) {\n if ([ SharePrivacy.JustMySchool, SharePrivacy.Protected ].includes(privacy))\n return getPhrase('respectRatingsSubTitle');\n\n if (privacy === SharePrivacy.JustMySchoolOverrideRestriction)\n return getPhrase('anyoneInSchoolSubTitle');\n\n if (privacy === SharePrivacy.ProtectedOverrideRestriction)\n return getPhrase('anyoneSignedInSubTitle');\n\n if (privacy === SharePrivacy.Public)\n return getPhrase('anyoneWithLinkSubTitle');\n\n if (privacy === SharePrivacy.PinCode)\n return getPhrase('anyoneWithPinSubTitle');\n}\n\nfunction getSubtitle({ type, privacy, studentCount = 0, classroomGroupCount = 0 }: ShareAvatarProps) {\n switch (type) {\n case ShareType.Classroom:\n return getClassroomSubtitle(classroomGroupCount, studentCount);\n\n case ShareType.Open:\n return getPhrase('openShareTypeSubTitle');\n\n case ShareType.Link:\n return getLinkSubtitle(privacy);\n \n case ShareType.Live:\n return getPhrase('liveShareTypeSubTitle');\n\n default:\n return getPhrase('publicShareTypeSubTitle');\n }\n}\n\ninterface ShareAvatarProps {\n type: ShareType;\n privacy: SharePrivacy;\n studentCount?: number;\n classroomGroupCount?: number;\n classroomName?: string;\n hideSubtitle?: boolean;\n subtitleText?: string;\n svgSize?: SvgContainerSize;\n}\n\nexport function ShareAvatar(props: ShareAvatarProps): JSX.Element {\n return (\n <div className='d-flex align-items-center gap-2'>\n <div>\n <IconCircle\n svgName={icons[props.type]}\n variant={iconColours[props.type]}\n textVariant='white'\n svgWrapperClassName='p-1'\n svgSize={props.svgSize ?? SvgContainerSize.Standard}\n />\n </div>\n <div className='d-flex flex-column'>\n <p className='m-0'>{getTitle(props)}</p>\n {!props.hideSubtitle && <span className='text-secondary'>{props.subtitleText ?? getSubtitle(props)}</span>}\n </div>\n </div>\n );\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}","import { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { DateHelper } from 'libs/common/react/utils/DateHelper';\n\nimport { SharePrivacy } from 'libs/shared/apps/share-v2/enums/SharePrivacy';\nimport type { SharePrivacyResponse } from 'libs/shared/apps/share-v2/interfaces/SharePrivacyResponse';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { ShareLinkStatus } from 'libs/shared/enums/ShareLinkStatus';\nimport type { BaseObject, YearGroup } from 'libs/shared/interfaces';\nimport { RestrictionHelper } from 'libs/shared/utils/RestrictionHelper';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\nconst namespace = 'sharev2.utils';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface GetIconAndTextOptions {\n linkExpireDate: string;\n isPasswordProtected: boolean;\n privacy: SharePrivacy;\n status: ShareLinkStatus;\n entityTypeId: MasterType;\n hasStudentExp: boolean;\n entity: BaseObject;\n yearGroups: YearGroup[];\n}\n\ninterface GetPrivateIconAndTextOptions {\n privacy: SharePrivacy;\n entityTypeId: MasterType;\n hasStudentExp: boolean;\n entity: BaseObject;\n yearGroups: YearGroup[];\n}\n\n\nexport const ShareLinkHelper = {\n getPrivateIconAndText: (options: GetPrivateIconAndTextOptions) => {\n const { entityTypeId, privacy, hasStudentExp, entity, yearGroups } = options;\n \n if (entityTypeId === MasterType.Topic || entityTypeId === MasterType.Series)\n return { icon: cvSvgLibrary.VisibleOn, text: getPhrase(hasStudentExp ? 'justMySchoolTeachers' : 'justMySchoolDescription') };\n \n /**\n * This is mainly for typescript, privacy will be an array for playlists\n * but that is handled above\n */\n if (Array.isArray(privacy))\n return;\n \n switch (privacy) {\n case SharePrivacy.Public:\n return { icon: cvSvgLibrary.VisibleOn, text: getPhrase('publicDescription') };\n case SharePrivacy.ProtectedOverrideRestriction:\n return { icon: cvSvgLibrary.VisibleOn, text: getPhrase('clickViewOnly') };\n case SharePrivacy.Protected:\n return {\n icon: cvSvgLibrary.Lock,\n text: ShareLinkHelper.getRespectRatingText(entity, yearGroups, hasStudentExp)\n };\n case SharePrivacy.JustMySchoolOverrideRestriction:\n return { icon: cvSvgLibrary.Lock, text: getPhrase(hasStudentExp ? 'justMySchoolTeachers' : 'justMySchoolDescription') };\n case SharePrivacy.JustMySchool:\n return {\n icon: cvSvgLibrary.Lock,\n text: ShareLinkHelper.getRespectRatingText(entity, yearGroups, hasStudentExp)\n };\n case SharePrivacy.PinCode:\n return { icon: cvSvgLibrary.Lock, text: getPhrase('pinDescription') };\n case SharePrivacy.PasswordProtected:\n return { icon: cvSvgLibrary.Lock, text: getPhrase('privateDescription') };\n default:\n return {};\n }\n },\n\n getIconAndText: (options: GetIconAndTextOptions) => {\n const { linkExpireDate, isPasswordProtected, status } = options;\n if (!linkExpireDate && !isPasswordProtected)\n return ShareLinkHelper.getPrivateIconAndText(options);\n \n if (!linkExpireDate)\n return { icon: cvSvgLibrary.Lock, text: getPhrase('password') };\n \n const isToday = DateHelper.isToday(linkExpireDate);\n const dayDifference = DateHelper.diffBetween(linkExpireDate, new Date(), 'day');\n \n if (!isPasswordProtected) {\n let text = isToday\n ? getPhrase('expiryToday')\n : getPhrase('expiry', { days: dayDifference });\n \n if (status === ShareLinkStatus.Expired)\n text = getPhrase('expired');\n \n return { icon: cvSvgLibrary.Timer, text };\n }\n \n let text = isToday\n ? getPhrase('passwordExpiryToday')\n : getPhrase('passwordExpiry', { days: dayDifference });\n \n if (status === ShareLinkStatus.Expired)\n text = getPhrase('passwordExpired');\n \n return { icon: cvSvgLibrary.Lock, text };\n },\n\n getRespectRatingText(video: BaseObject, yearGroups: YearGroup[], hasStudentExp: boolean) {\n if (!video || !yearGroups)\n return null;\n \n if (hasStudentExp)\n return getPhrase('justMySchoolTeachers');\n \n if (!VideoHelper.isVideoType(video))\n return getPhrase('collectionRating');\n \n const restriction = RestrictionHelper.getWeightedRestriction(video._restrictions?.value);\n \n /**\n * Restrictions without a year level are teacher restricitons, which means only admins can see it.\n */\n if (restriction && !restriction.yearGroup)\n return getPhrase('onlyAdmins');\n \n const rating = VideoHelper.getRating(video);\n \n let maxYearGroup: YearGroup;\n let minAllowedYearGroup: YearGroup;\n \n for (const yearGroup of yearGroups) {\n /**\n * If our year level is our new highest so far, save it\n */\n if (!maxYearGroup || yearGroup.value > maxYearGroup.value)\n maxYearGroup = yearGroup;\n \n /**\n * If the restriction is higher than this year level, skip it.\n */\n if (restriction && yearGroup.value <= restriction.yearGroup)\n continue;\n \n /**\n * If therating is higher than this year level's rating value, skip it.\n */\n if (rating && yearGroup.rating.value < rating.value)\n continue;\n \n /**\n * If our year level is the new lowest so far, save it\n */\n if (!minAllowedYearGroup || yearGroup.value < minAllowedYearGroup.value)\n minAllowedYearGroup = yearGroup;\n }\n \n /**\n * If no year levels are allowed, then it's staff only.\n */\n if (!minAllowedYearGroup)\n return getPhrase('onlyStaff');\n \n \n /**\n * If there's only one year level, and it's allowed, then we can just\n * say that everyone in your school can access it.\n */\n if (yearGroups.length === 1)\n return getPhrase('clickViewOnly');\n \n /**\n * We differentiate the copy if it's the highest year level or not. \n * Basically if we need to say \"X and above\" or not.\n */\n if (minAllowedYearGroup.value === maxYearGroup.value)\n return getPhrase('maxYearGroup', { yearGroup: maxYearGroup.name });\n \n return getPhrase('yearGroupRange', { yearGroup: minAllowedYearGroup.name });\n },\n\n getShareLinkAccessType(privacy: SharePrivacyResponse): 'private' | 'clickview' | 'tv' {\n /**\n * If an entity is not a ClickView content and they cannot manage access\n * settings of the entity (which they can if its their private entity)\n * it means that its a TV content\n */\n if (privacy.isTvContent)\n return 'tv';\n \n if (privacy.isClickViewContent)\n return 'clickview';\n\n return 'private';\n }\n};","import React from 'react';\n\nimport { ScoreThresholds } from 'libs/shared/constants/ScoreThresholds';\n\nimport {\n getCircleClassName,\n getCircleContainerClassName,\n getCircleRadius,\n getColouredLabelClassName,\n getFormattedPercentage,\n getPercentageToFixed,\n isPending,\n ProgressCircleSize\n} from './PercentageIndicatorUtils';\n\nimport styles from './percentage-indicator.scss';\n\ninterface ProgressCircleProps {\n size: ProgressCircleSize;\n scoreThresholds?: ScoreThresholds;\n percentage?: number;\n}\n\nfunction ProgressCircle(props: ProgressCircleProps): JSX.Element {\n const ref = React.useCallback((circle: SVGCircleElement) => {\n if (!circle)\n return;\n\n const radius = circle.r.baseVal.value;\n const circumference = 2 * Math.PI * radius;\n const offset = circumference - props.percentage * circumference;\n\n circle.style.strokeDasharray = `${circumference} ${circumference}`;\n circle.style.strokeDashoffset = offset.toString();\n }, [props.percentage]);\n\n return (\n <svg>\n <circle r={getCircleRadius(props.size)} className={styles.backgroundCircle} />\n {!isPending(props.percentage) &&\n <circle\n ref={ref}\n r={getCircleRadius(props.size)}\n className={getCircleClassName(props.percentage, props.scoreThresholds)}\n />\n }\n </svg>\n );\n}\n\nexport enum PercentageIndicatorLayout {\n CircleOnly = 'circle_only',\n LabelOnly = 'label_only',\n LabelBefore = 'label_before',\n LabelInside = 'label_inside'\n}\n\ninterface PercentageIndicatorProps {\n layout: PercentageIndicatorLayout;\n percentage?: number; // Between 0 and 1 or undefined for pending\n className?: string;\n customLabel?: string;\n scoreThresholds?: ScoreThresholds;\n size?: ProgressCircleSize;\n}\n\nPercentageIndicator.defaultProps = {\n layout: PercentageIndicatorLayout.CircleOnly\n};\n\nexport function PercentageIndicator(props: PercentageIndicatorProps): JSX.Element {\n const percentageToFixed = getPercentageToFixed(props.percentage);\n\n const size = props.size ||\n (props.layout === PercentageIndicatorLayout.LabelInside\n ? ProgressCircleSize.Large\n : ProgressCircleSize.Small\n );\n\n const label = props.customLabel || getFormattedPercentage(percentageToFixed);\n\n if (props.layout === PercentageIndicatorLayout.LabelOnly)\n return (\n <span className={getColouredLabelClassName(percentageToFixed)}>\n {label}\n </span>\n );\n\n return (\n <div className={`d-flex align-items-center justify-content-between ${props.className ?? ''}`}>\n {props.layout === PercentageIndicatorLayout.LabelBefore &&\n <span className='me-2'>\n {label}\n </span>\n }\n <div className={getCircleContainerClassName(size, percentageToFixed)}>\n <ProgressCircle percentage={percentageToFixed} size={size} scoreThresholds={props.scoreThresholds} />\n {props.layout === PercentageIndicatorLayout.LabelInside &&\n <span className={styles.centredPercentageText}>\n {label}\n </span>\n }\n </div>\n </div>\n );\n}","import { ScoreThresholdDefaults, ScoreThresholds } from 'libs/shared/constants/ScoreThresholds';\n\nimport styles from './percentage-indicator.scss';\n\n/**\n * Values for width and strokeWidth are taken from progress-circle.scss.\n * If either are changed, they must be updated in both places.\n */\nconst CIRCLE_WIDTH = 2; // rem\nconst CIRCLE_WIDTH_LG = 5.8; // rem\nconst CIRCLE_STROKE_WIDTH = 0.2; // rem\nconst CIRCLE_STROKE_WIDTH_LG = 0.36; // rem\n \nexport enum ProgressCircleSize {\n Small = 'small',\n Large = 'large',\n ExtraSmall = 'extraSmall'\n}\n\nconst ProgressCircleSizeMap = {\n [ProgressCircleSize.ExtraSmall]: {\n size: CIRCLE_WIDTH\n },\n [ProgressCircleSize.Small]: {\n size: CIRCLE_WIDTH\n },\n [ProgressCircleSize.Large]: {\n size: CIRCLE_WIDTH_LG\n }\n};\n\n/**\n * radius = width / 2 - strokeWidth * 2\n */\nexport function getCircleRadius(size: ProgressCircleSize): string {\n const width = ProgressCircleSizeMap[size].size;\n const strokeWidth = size === ProgressCircleSize.Large ? CIRCLE_STROKE_WIDTH_LG : CIRCLE_STROKE_WIDTH;\n return `${width / 2 - strokeWidth * 2}rem`;\n}\n \nexport function getCircleClassName(\n percentage: number,\n scoreThresholds: ScoreThresholds = ScoreThresholdDefaults\n): string {\n if (percentage >= scoreThresholds.HIGH)\n return styles.circleSuccess;\n \n if (percentage >= scoreThresholds.MODERATE)\n return styles.circleWarning;\n \n return styles.circleDanger;\n}\n \nexport function getColouredLabelClassName(\n percentage: number,\n scoreThresholds: ScoreThresholds = ScoreThresholdDefaults\n): string {\n if (percentage >= scoreThresholds.HIGH)\n return 'text-success';\n \n if (percentage >= scoreThresholds.MODERATE)\n return 'text-warning';\n \n return 'text-danger';\n}\n \nexport function getCircleContainerClassName(size: ProgressCircleSize, percentage?: number): string {\n let className = `d-inline-block ${styles.circleContainer}`;\n \n if (size === ProgressCircleSize.Large)\n className += ` ${styles.lgCircleContainer}`;\n\n if (size === ProgressCircleSize.ExtraSmall)\n className += ` ${styles.xsCircleContainer}`;\n\n if (isPending(percentage))\n className += ` ${styles.pendingCircle}`;\n \n return className;\n}\n\nexport function getPercentageToFixed(percentage?: number): number | undefined {\n if (isPending(percentage))\n return;\n \n return +percentage.toFixed(2);\n}\n \nexport function getFormattedPercentage(percentage?: number): string {\n if (isPending(percentage))\n return `--%`;\n\n return `${Math.round(percentage * 100)}%`;\n}\n\nexport function isPending(percentage?: number): boolean {\n return typeof percentage !== 'number';\n}","import React from 'react';\n\nimport { Core } from 'libs/common/core';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { AnalyticsHelper } from 'libs/analytics/AnalyticsHelper';\nimport { AnalyticsOptions } from 'libs/analytics/interfaces';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { Badge, BadgeType } from 'libs/shared/components/badges/Badge';\nimport { DivButton } from 'libs/shared/components/div-button/DivButton';\n\nimport { SvgContainer } from '../svg-container/SvgContainer';\n\nimport styles from './pill-tab-selector.scss';\n\ninterface TabContentsProps {\n tab: PillTab;\n}\n\nfunction TabContents(props: TabContentsProps): JSX.Element {\n return (\n <>\n {!!props.tab.svgName && (\n <div className={props.tab.name ? 'pe-1' : ''}>\n <SvgContainer svgName={props.tab.svgName} />\n </div>\n )}\n\n {props.tab.name}\n\n {typeof (props.tab.count) === 'number' && (\n <div className='ps-2'>\n <Badge type={BadgeType.Count} data={props.tab.count} />\n </div>\n )}\n </>\n );\n}\n\nexport interface PillTab {\n name: string;\n active: boolean;\n svgName?: string;\n\n className?: string;\n\n appLink?: Core.AppLink;\n onSelect?: () => void;\n\n analyticsData?: HashObject;\n analyticsOptions?: AnalyticsOptions;\n\n count?: number;\n}\n\ninterface PillTabSelectorProps {\n tabs: PillTab[];\n containerRef?: (el: HTMLElement) => void;\n listClassName?: string;\n className?: string;\n borderRadius?: 'sm' | 'lg'\n}\n\nPillTabSelector.defaultProps = {\n borderRadius: 'lg'\n};\n\nexport function PillTabSelector(props: PillTabSelectorProps): JSX.Element {\n function onSelectTab(tab: PillTab): void {\n if (tab.active || !tab.onSelect)\n return;\n\n tab.onSelect();\n\n if (tab.analyticsData && tab.analyticsOptions)\n AnalyticsHelper.logUserAction(tab.analyticsData, tab.analyticsOptions);\n }\n\n return (\n <nav className={props.className ?? ''} ref={props.containerRef}>\n <ul className={`\n list-unstyled d-inline-block m-0 ${styles.pillTabSelector}\n ${props.borderRadius ? styles.radiusSmall : ''}\n ${props.listClassName}\n `}>\n {props.tabs.map((tab, index) => {\n return (\n <li\n className={`\n p-0 ${styles.tab} ${tab.active ? 'btn btn-dark' : 'btn btn-outline-dark'}\n ${tab.name ? styles.minWidth : ''} ${tab.className}\n `}\n key={index}\n >\n {tab.appLink ? (\n <AppLink\n appLink={tab.appLink}\n analyticsData={tab.analyticsData}\n analyticsOptions={tab.analyticsOptions}\n className={`\n cursor-pointer d-flex align-items-center justify-content-center\n text-decoration-none text-reset px-2 text-nowrap ${styles.tabLink}\n `}\n >\n <TabContents tab={tab} />\n </AppLink>\n ) : (\n <DivButton\n className={`\n cursor-pointer d-flex align-items-center justify-content-center\n text-decoration-none text-reset px-2 text-nowrap ${styles.tabLink}\n `}\n onClick={() => onSelectTab(tab)}\n >\n <TabContents tab={tab} />\n </DivButton>\n )}\n </li>\n );\n })}\n </ul>\n </nav>\n );\n}\n","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 React from 'react';\n\nimport { LayoutHelper } from 'libs/shared/utils/LayoutHelper';\n\nexport function useLockContentWidth(): void {\n React.useEffect(() => {\n LayoutHelper.lockContentWidth();\n return () => LayoutHelper.unlockContentWidth();\n }, []);\n}","import React from 'react';\n\nimport { StorageType } from 'libs/common/backbone/utils/LocalStorageHelper';\nimport { UrlHelper } from 'libs/common/backbone/utils/UrlHelper';\nimport { useViewModel } from 'libs/common/react/hooks/UseViewModel';\n\nimport { IconButton } from 'libs/shared/components/icon-button/IconButton';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { VideoTypes } from 'libs/shared/interfaces';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport { ViewModelKeys } from 'shared/constants/LiteViewModels';\n\nconst namespace = 'lite.insightsAdminAlert';\n\ninterface InsightsAdminAlertProps {\n hasAnalytics: boolean;\n analyticsUrl: string;\n video?: VideoTypes;\n}\n\n// eslint-disable-next-line rulesdir/require-view-title\nexport function InsightsAdminAlert(props: InsightsAdminAlertProps) {\n const [ show, setShow ] = useViewModel(\n ViewModelKeys.INSIGHTS_ADMIN_ALERT,\n true,\n { storage: StorageType.LocalStorage }\n );\n\n function onDismiss() {\n setShow(false);\n }\n\n function getAnalyticsUrl() {\n if (!props.video) return props.analyticsUrl;\n\n let videoRoute = '';\n\n if (props.video.typeId === MasterType.Interactive)\n videoRoute = `/interactives/${props.video.id}/views`;\n\n if (props.video.typeId === MasterType.Video)\n videoRoute = `/videos/${props.video.id}/views`;\n\n if (props.video.typeId === MasterType.Clip)\n videoRoute = `/clips/${props.video.id}/views`;\n\n return UrlHelper.safeUrlConcat(props.analyticsUrl, videoRoute);\n }\n\n if (!props.hasAnalytics || !show)\n return <></>;\n\n return (\n <div role='alert' className='d-flex justify-content-between align-items-center bg-light-blue rounded p-2 mb-4'>\n <div>\n <Text namespace={namespace} phrase='adminAlert' />\n <a className='text-info' href={getAnalyticsUrl()} target='_blank'>\n <Text namespace={namespace} phrase='analytics' />\n </a>.\n </div>\n <IconButton svgName={cvSvgLibrary.Close} className='text-blue' onClick={onDismiss} />\n </div>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"thumbnailContainer\":\"HeRac\"};","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { LocationContext } from 'libs/analytics/interfaces';\n\nimport { SharedObjectImage } from 'libs/shared/apps/share/components/shared-object-image/SharedObjectImage';\nimport { SharedObjectTitle } from 'libs/shared/apps/share/components/shared-object-title/SharedObjectTitle';\nimport { ShareAvatar } from 'libs/shared/apps/share-v2/components/share-avatar/ShareAvatar';\nimport { Share } from 'libs/shared/apps/share-v2/interfaces/Share';\nimport { ShareHelper } from 'libs/shared/apps/share-v2/utils/ShareHelper';\nimport { ShareLinkHelper } from 'libs/shared/apps/share-v2/utils/ShareLinkHelper';\nimport { SharableEntity } from 'libs/shared/apps/share-v2/utils/ShareViewHelper';\nimport { SvgContainer, SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\nimport { ImageSize } from 'libs/shared/enums/Images';\nimport { BaseObject, YearGroup } from 'libs/shared/interfaces';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport { getObjectAppLink } from 'shared/utils/ObjectAppLinkHelper';\n\nimport styles from './share-info.scss';\n\nconst namespace = 'insights.shareInfo';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface ShareInfoProps {\n sharedObject: SharableEntity;\n share: Share;\n entity: BaseObject;\n yearGroups: YearGroup[];\n className?: string;\n}\n\nexport function ShareInfo(props: ShareInfoProps): JSX.Element {\n if (!props.sharedObject)\n return <></>;\n\n function renderExpiryHint() {\n const hasExpiry = !!props.share.expireDate;\n const hasExpired = ShareHelper.hasShareExpired(props.share);\n const daysToExpiry = ShareHelper.calculateDaysToExpiry(props.share);\n\n const { icon, text } = ShareLinkHelper.getPrivateIconAndText({\n privacy: props.share.privacy,\n entityTypeId: props.sharedObject.typeId,\n hasStudentExp: false,\n entity: props.entity,\n yearGroups: props.yearGroups\n });\n \n if (!hasExpiry) {\n return (\n <div className='d-flex align-items-center'>\n <SvgContainer\n svgName={icon}\n size={SvgContainerSize.Medium}\n className='me-2 svg-container'\n />\n <p className='mb-0'>{text}</p>\n </div>\n );\n }\n\n return (\n <div className='d-flex align-items-center'>\n <SvgContainer\n svgName={hasExpired ? cvSvgLibrary.VisibleOff : cvSvgLibrary.VisibleOn}\n size={SvgContainerSize.Medium}\n className='me-2 svg-container'\n />\n {hasExpired\n ? <p className='mb-0'>{getPhrase('expired')}</p>\n : <p className='mb-0'>{getPhrase('expiryHint', { smartCount: daysToExpiry })}</p>}\n </div>\n );\n }\n\n return (\n <div className={`d-flex gap-3 ${props.className ?? ''}`}>\n <div className={`col-auto ${styles.thumbnailContainer}`}>\n <SharedObjectImage\n object={props.sharedObject}\n appLink={getObjectAppLink(props.sharedObject)}\n locationContext={LocationContext.MyShares}\n imageOptions={{ size: ImageSize.Medium }}\n showVideoMetadata\n showCollectionMask={false}\n showVideoCount\n />\n </div>\n <div className='d-flex gap-1 flex-column col align-items-start'>\n <SharedObjectTitle\n sharedObject={props.sharedObject}\n getObjectAppLink={getObjectAppLink}\n titleClassName='h6'\n subTextClassName='d-none'\n />\n <ShareAvatar\n privacy={props.share.privacy}\n type={props.share.type}\n svgSize={SvgContainerSize.Small}\n hideSubtitle\n />\n {renderExpiryHint()}\n </div>\n </div>\n );\n}","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { StorageType } from 'libs/common/backbone/utils/LocalStorageHelper';\nimport { useViewModel } from 'libs/common/react/hooks/UseViewModel';\n\nimport { DateRangeQueryParams } from 'libs/shared/apps/analytics/interfaces/DateRangeQueryParams';\nimport { ShareType } from 'libs/shared/apps/share-v2/enums/ShareType';\nimport { Share } from 'libs/shared/apps/share-v2/interfaces/Share';\nimport { ActionOptions } from 'libs/shared/components/actions/Actions';\nimport { ActionsDropdown } from 'libs/shared/components/actions/ActionsDropdown';\nimport { Breadcrumb, Breadcrumbs, PartialBreadcrumbs } from 'libs/shared/components/breadcrumbs/Breadcrumbs';\nimport { IconButton } from 'libs/shared/components/icon-button/IconButton';\nimport { PillTab, PillTabSelector } from 'libs/shared/components/pill-tab-selector/PillTabSelector';\nimport { SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { ToggleSwitch } from 'libs/shared/components/toggle-switch/ToggleSwitch';\nimport { Tooltip } from 'libs/shared/components/tooltip/Tooltip';\nimport { SharedViewModelKeys } from 'libs/shared/constants/SharedViewModelKeys';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { VideoTypes, YearGroup } from 'libs/shared/interfaces';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\nimport { usePluginHelper } from 'shared/hooks/use-plugin-helper/usePluginHelper';\nimport { getShareOptionsAppLink } from 'shared/utils/ObjectAppLinkHelper';\nimport { VideoAppLinkHelper } from 'shared/utils/VideoAppLinkHelper';\n\nimport { InsightsAdminAlert } from 'apps/my-shares/components/insights-admin-alert/InsightsAdminAlert';\nimport { ShareInfo } from 'apps/my-shares/components/share-info/ShareInfo';\nimport { getShareObjectActions } from 'apps/my-shares/views/my-shares/MySharesViewUtils';\n\nconst namespace = 'insights.header';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface DemoTooltipProps extends React.PropsWithChildren {\n isDemo: boolean;\n}\n\nfunction DemoTooltip(props: DemoTooltipProps) {\n return (\n <Tooltip\n id='audienceFilter'\n title={getPhrase('demoOnly')}\n spanHack={props.isDemo}\n >\n <div className={props.isDemo ? 'pointer-events-none' : ''}>\n {props.children}\n </div>\n </Tooltip>\n );\n}\n\ninterface InsightsHeaderProps {\n video: VideoTypes;\n hasClassrooms?: boolean;\n dateRangeAppLinkParams?: DateRangeQueryParams;\n tabs: PillTab[]\n isDemo?: boolean;\n analyticsWebUrl?: string;\n hasAnalytics?: boolean;\n share: Share;\n yearGroups: YearGroup[];\n}\n\nexport function InsightsHeader(props: InsightsHeaderProps) {\n const [ anonymiseUsers, setAnonymiseUsers ] = useViewModel<boolean>(\n SharedViewModelKeys.ANONYMISE_USERS,\n false,\n { storage: StorageType.LocalStorage }\n );\n\n const { isPlugin } = usePluginHelper();\n\n const shareOptionsAppLink = getShareOptionsAppLink(props.share);\n\n function getBreadcrumbs(): Breadcrumb[] {\n if (!props.video) return [];\n if (!props.share) return [];\n\n let rootBreadcrumb: Breadcrumb = {\n name: getPhrase('shares'),\n appLink: {\n application: AppChannels.MY_SHARES,\n action: Actions.MyShares.HOME\n }\n };\n\n if (props.share.type === ShareType.Classroom) {\n rootBreadcrumb = {\n name: getPhrase('classrooms'),\n appLink: {\n application: AppChannels.CLASSROOMS,\n action: Actions.Classrooms.HOME\n }\n };\n }\n\n if (props.share.type === ShareType.Open) {\n rootBreadcrumb = {\n name: getPhrase('openClassrooms'),\n appLink: {\n application: AppChannels.CLASSROOMS,\n action: Actions.Classrooms.OPEN_CLASSROOMS\n }\n };\n }\n\n return [\n rootBreadcrumb,\n {\n name: props.video.name,\n active: true\n }\n ];\n }\n\n function getActions() {\n const actions: ActionOptions[] = [];\n\n if (props.video?.typeId === MasterType.Interactive) {\n actions.push({\n label: getPhrase('generateReport'),\n svgName: cvSvgLibrary.Print,\n appLink: {\n application: AppChannels.MY_SHARES,\n action: Actions.MyShares.INTERACTIVE_GENERATE_REPORT,\n args: [props.video.id]\n }\n });\n }\n\n return [ ...actions, ...getShareObjectActions({\n share: props.share,\n sharedObject: props.video,\n isPlugin,\n hideShareOptionsActions: true\n }) ];\n }\n\n function getVideoEntityPhrase() {\n if (props.video.typeId === MasterType.Interactive) return 'viewInteractive';\n if (props.video.typeId === MasterType.Clip) return 'viewClip';\n\n return 'viewVideo';\n }\n\n return (\n <div>\n <InsightsAdminAlert\n analyticsUrl={props.analyticsWebUrl}\n hasAnalytics={props.hasAnalytics}\n video={props.video}\n />\n <section className='mb-4'>\n <div className='mb-3'>\n <div className='d-flex justify-content-between mb-3'>\n <div className='me-2'>\n {props.video && (\n <>\n <h1 className='mb-0 d-inline me-2'>{props.video.name}</h1>\n {!props.isDemo &&\n <Tooltip title={getPhrase(getVideoEntityPhrase())} type='text' spanHack spanHackClassName='d-inline-block align-text-bottom'>\n <IconButton\n svgName={cvSvgLibrary.NewWindow}\n appLink={VideoAppLinkHelper.getAppLink(props.video)}\n svgSize={SvgContainerSize.Large}\n className='d-inline-block'\n customSize\n />\n </Tooltip>\n }\n </>\n )}\n {!props.video && <h1 className='partial-loading-background' style={{ width: '20rem' }}>&nbsp;</h1>}\n </div>\n <div className='d-flex gap-2'>\n {!isPlugin &&\n <DemoTooltip isDemo={props.isDemo}>\n <IconButton svgName={cvSvgLibrary.Share} className='btn btn-outline-dark' appLink={shareOptionsAppLink}>\n <Text namespace={namespace} phrase='shareOptions' />\n </IconButton>\n </DemoTooltip>\n }\n <DemoTooltip isDemo={props.isDemo}>\n <ActionsDropdown\n dropdownToggleClassName='btn btn-outline-dark'\n actions={getActions()}\n />\n </DemoTooltip>\n </div>\n </div>\n <div className='d-flex justify-content-between mb-3'>\n {props.video\n ? <Breadcrumbs breadcrumbs={getBreadcrumbs()} />\n : <PartialBreadcrumbs />\n }\n <div className='d-flex gap-3'>\n <label htmlFor='anonymiseNames' className='mb-0'><Text namespace={namespace} phrase='anonymiseNames' /></label>\n <ToggleSwitch id='anonymiseNames' on={anonymiseUsers} onClick={() => setAnonymiseUsers(!anonymiseUsers)} />\n </div>\n </div>\n </div>\n <ShareInfo\n className='mb-3'\n sharedObject={props.video}\n share={props.share}\n entity={props.video}\n yearGroups={props.yearGroups}\n />\n <div className='d-flex align-items-center mb-4'>\n <PillTabSelector tabs={props.tabs} />\n </div>\n </section>\n </div>\n );\n}","import { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { Share } from 'libs/shared/apps/share-v2/interfaces/Share';\n\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\nimport { getInsightsHeatmapAppLink, getInsightsOverviewAppLink, getInsightsQuestionsAppLink, getInsightsStudentsAppLink } from 'shared/utils/ObjectAppLinkHelper';\n\nconst namespace = 'shared.insightsUtils';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nexport type InsightsTabs = 'insights' | 'heatmap' | 'results' | 'questions';\n\nexport function getInsightsVideoTabs(share: Share, active: InsightsTabs, params?: HashObject) {\n return [\n {\n name: getPhrase('insights'),\n active: active === 'insights',\n appLink: getInsightsOverviewAppLink(share, params)\n },\n {\n name: getPhrase('heatmap'),\n active: active === 'heatmap',\n appLink: getInsightsHeatmapAppLink(share, params)\n }\n ];\n}\n\nexport function getInsightsInteractiveTabs(share: Share, active: InsightsTabs) {\n return [\n {\n name: getPhrase('insights'),\n active: active === 'insights',\n appLink: getInsightsOverviewAppLink(share)\n },\n {\n name: getPhrase('results'),\n active: active === 'results',\n appLink: getInsightsStudentsAppLink(share)\n },\n {\n name: getPhrase('questions'),\n active: active === 'questions',\n appLink: getInsightsQuestionsAppLink(share)\n },\n {\n name: getPhrase('heatmap'),\n active: active === 'heatmap',\n appLink: getInsightsHeatmapAppLink(share)\n }\n ];\n}\n\nexport function getInsightsDemoInteractiveTabs(id: string, active: InsightsTabs, params: HashObject) {\n return [\n {\n name: getPhrase('insights'),\n active: active === 'insights',\n appLink: {\n application: AppChannels.MY_SHARES,\n action: Actions.MyShares.INTERACTIVE_OVERVIEW_DEMO,\n args: [id],\n params\n }\n },\n {\n name: getPhrase('results'),\n active: active === 'results',\n appLink: {\n application: AppChannels.MY_SHARES,\n action: Actions.MyShares.INTERACTIVE_STUDENTS_DEMO,\n args: [id],\n params\n }\n },\n {\n name: getPhrase('questions'),\n active: active === 'questions',\n appLink: {\n application: AppChannels.MY_SHARES,\n action: Actions.MyShares.INTERACTIVE_QUESTIONS_DEMO,\n args: [id],\n params\n }\n },\n {\n name: getPhrase('heatmap'),\n active: active === 'heatmap',\n appLink: {\n application: AppChannels.MY_SHARES,\n action: Actions.MyShares.INTERACTIVE_HEATMAP_DEMO,\n args: [id],\n params\n }\n }\n ];\n}","// extracted by mini-css-extract-plugin\nexport default {\"circleContainer\":\"p8Vgz\",\"backgroundCircle\":\"asGGE\",\"circleSuccess\":\"PXLNj\",\"circleWarning\":\"ZckRN\",\"circleDanger\":\"slBRg\",\"lgCircleContainer\":\"N8KCI\",\"xsCircleContainer\":\"RPqZ2\",\"pendingCircle\":\"DKrcq\",\"centredPercentageText\":\"tpmLR\"};","// extracted by mini-css-extract-plugin\nexport default {\"pillTabSelector\":\"Hdi6o\",\"tab\":\"RvNxr\",\"minWidth\":\"GHSz9\",\"radiusSmall\":\"VhJJa\",\"tabLink\":\"WFyvo\"};"],"names":["getPhrase","anonymiseUserName","user","shouldAnonymise","userId","id","sessionId","seed","guid","hash","i","length","charCodeAt","Math","abs","guidToSeed","floor","Date","getMinutes","dictionaries","separator","style","icons","iconColours","shareTypeTitlePhraseMap","ShareAvatar","props","type","classroomName","className","svgName","variant","textVariant","svgWrapperClassName","svgSize","S","hideSubtitle","subtitleText","privacy","studentCount","classroomGroupCount","smartCount","getClassroomSubtitle","includes","getLinkSubtitle","getSubtitle","SharePrivacy","ShareLinkHelper","getPrivateIconAndText","options","entityTypeId","hasStudentExp","entity","yearGroups","icon","text","Array","isArray","getRespectRatingText","getIconAndText","linkExpireDate","isPasswordProtected","status","isToday","dayDifference","days","video","restriction","_restrictions","value","yearGroup","maxYearGroup","minAllowedYearGroup","rating","name","getShareLinkAccessType","isTvContent","isClickViewContent","PercentageIndicatorLayout","ProgressCircle","ref","circle","radius","r","baseVal","circumference","PI","offset","percentage","strokeDasharray","strokeDashoffset","toString","size","scoreThresholds","PercentageIndicator","percentageToFixed","layout","LabelInside","label","customLabel","LabelOnly","LabelBefore","defaultProps","CircleOnly","ProgressCircleSize","CIRCLE_STROKE_WIDTH","CIRCLE_STROKE_WIDTH_LG","ProgressCircleSizeMap","ExtraSmall","Small","Large","getCircleRadius","width","strokeWidth","getCircleClassName","HIGH","MODERATE","getColouredLabelClassName","getCircleContainerClassName","isPending","getPercentageToFixed","toFixed","getFormattedPercentage","round","TabContents","tab","count","data","PillTabSelector","containerRef","borderRadius","listClassName","tabs","map","index","active","key","appLink","analyticsData","analyticsOptions","onClick","onSelect","onSelectTab","ScoreThresholdDefaults","ScoreThresholdInsights","useLockContentWidth","namespace","InsightsAdminAlert","storage","show","setShow","hasAnalytics","role","phrase","href","analyticsUrl","videoRoute","typeId","getAnalyticsUrl","target","LanguageService","ShareInfo","hasExpiry","hasExpired","daysToExpiry","sharedObject","SharedObjectImage","object","locationContext","imageOptions","showVideoMetadata","showCollectionMask","showVideoCount","SharedObjectTitle","getObjectAppLink","titleClassName","subTextClassName","share","SvgContainer","expireDate","ShareHelper","DemoTooltip","Tooltip","title","spanHack","isDemo","children","InsightsHeader","actions","SharedViewModelKeys","anonymiseUsers","setAnonymiseUsers","isPlugin","usePluginHelper","shareOptionsAppLink","analyticsWebUrl","MasterType","spanHackClassName","IconButton","VideoAppLinkHelper","customSize","Text","ActionsDropdown","dropdownToggleClassName","push","application","action","args","hideShareOptionsActions","Breadcrumbs","breadcrumbs","rootBreadcrumb","ShareType","getBreadcrumbs","htmlFor","ToggleSwitch","on","getInsightsVideoTabs","params","getInsightsInteractiveTabs","getInsightsDemoInteractiveTabs"],"sourceRoot":""}