@clickview/lite 0.55.3-rc.1 → 0.56.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (109) hide show
  1. package/dist/bundles.json +1 -1
  2. package/dist/css/{431-lite-c2c2516537.chunk.css → 2992-lite-3ecbb95727.chunk.css} +1 -0
  3. package/dist/css/{6054-lite-0b2c72f84f.chunk.css → 3490-lite-74b16654a2.chunk.css} +1 -0
  4. package/dist/css/{4690-lite-e90867b3fe.chunk.css → 4690-lite-656c11bf50.chunk.css} +1 -1
  5. package/dist/css/{729-lite-f72fc7b813.chunk.css → 4860-lite-bd73841f9b.chunk.css} +1 -1
  6. package/dist/css/{1019-lite-bbcf2bff27.chunk.css → 6341-lite-f146164a09.chunk.css} +3 -3
  7. package/dist/css/{4860-lite-f72fc7b813.chunk.css → 729-lite-bd73841f9b.chunk.css} +1 -1
  8. package/dist/css/{8046-lite-036035a6f0.chunk.css → 8046-lite-319bb5a9c1.chunk.css} +1 -1
  9. package/dist/css/{6596-lite-bb28584922.chunk.css → 8784-lite-caf4b7e145.chunk.css} +2 -2
  10. package/dist/css/{2548-lite-bbcf2bff27.chunk.css → 8945-lite-f146164a09.chunk.css} +3 -3
  11. package/dist/css/{9010-lite-bb28584922.chunk.css → 9355-lite-caf4b7e145.chunk.css} +2 -2
  12. package/dist/languages/en.json +1 -1
  13. package/dist/scripts/{1169-3298aa69ad-lite.chunk.js → 1169-e4773094dc-lite.chunk.js} +2 -2
  14. package/dist/scripts/{1169-3298aa69ad-lite.chunk.js.map → 1169-e4773094dc-lite.chunk.js.map} +1 -1
  15. package/dist/scripts/{1379-ca519ec56b-lite.chunk.js → 1379-172a429399-lite.chunk.js} +3 -3
  16. package/dist/scripts/{1379-ca519ec56b-lite.chunk.js.map → 1379-172a429399-lite.chunk.js.map} +1 -1
  17. package/dist/scripts/{184-37af6c4675-lite.chunk.js → 184-e1311aa677-lite.chunk.js} +2 -2
  18. package/dist/scripts/184-e1311aa677-lite.chunk.js.map +1 -0
  19. package/dist/scripts/2215-a511f6f54c-lite.chunk.js +2 -0
  20. package/dist/scripts/2215-a511f6f54c-lite.chunk.js.map +1 -0
  21. package/dist/scripts/2992-c5bec5b43f-lite.chunk.js +2 -0
  22. package/dist/scripts/2992-c5bec5b43f-lite.chunk.js.map +1 -0
  23. package/dist/scripts/3490-4f3b9b1d07-lite.chunk.js +2 -0
  24. package/dist/scripts/3490-4f3b9b1d07-lite.chunk.js.map +1 -0
  25. package/dist/scripts/4013-700c541143-lite.chunk.js +3 -0
  26. package/dist/scripts/4013-700c541143-lite.chunk.js.map +1 -0
  27. package/dist/scripts/{4554-2192c26ee9-lite.chunk.js → 4554-7367f19919-lite.chunk.js} +2 -2
  28. package/dist/scripts/4554-7367f19919-lite.chunk.js.map +1 -0
  29. package/dist/scripts/4690-4abacf2ea2-lite.chunk.js +2 -0
  30. package/dist/scripts/4690-4abacf2ea2-lite.chunk.js.map +1 -0
  31. package/dist/scripts/{5220-07af32c6ce-lite.chunk.js → 5220-04f2f3bb42-lite.chunk.js} +3 -3
  32. package/dist/scripts/5220-04f2f3bb42-lite.chunk.js.map +1 -0
  33. package/dist/scripts/5936-0d3b5a9a2f-lite.chunk.js +2 -0
  34. package/dist/scripts/5936-0d3b5a9a2f-lite.chunk.js.map +1 -0
  35. package/dist/scripts/{624-09b51a9d32-lite.chunk.js → 624-2c9ac733ba-lite.chunk.js} +3 -3
  36. package/dist/scripts/{624-09b51a9d32-lite.chunk.js.map → 624-2c9ac733ba-lite.chunk.js.map} +1 -1
  37. package/dist/scripts/6262-ce32d35813-lite.chunk.js +2 -0
  38. package/dist/scripts/{640-c3ae02d0a7-lite.chunk.js.map → 6262-ce32d35813-lite.chunk.js.map} +1 -1
  39. package/dist/scripts/{2548-c48b8d3e3c-lite.chunk.js → 6341-f07132fa7c-lite.chunk.js} +2 -2
  40. package/dist/scripts/{2548-c48b8d3e3c-lite.chunk.js.map → 6341-f07132fa7c-lite.chunk.js.map} +1 -1
  41. package/dist/scripts/7076-748eef1eba-lite.chunk.js +3 -0
  42. package/dist/scripts/7076-748eef1eba-lite.chunk.js.map +1 -0
  43. package/dist/scripts/{7288-c11287ecc7-lite.chunk.js → 7288-f9ef507dd3-lite.chunk.js} +2 -2
  44. package/dist/scripts/7288-f9ef507dd3-lite.chunk.js.map +1 -0
  45. package/dist/scripts/{729-594be12089-lite.chunk.js → 729-10f6b0cef3-lite.chunk.js} +2 -2
  46. package/dist/scripts/{729-594be12089-lite.chunk.js.map → 729-10f6b0cef3-lite.chunk.js.map} +1 -1
  47. package/dist/scripts/7895-6b9c09a1e1-lite.chunk.js +2 -0
  48. package/dist/scripts/7895-6b9c09a1e1-lite.chunk.js.map +1 -0
  49. package/dist/scripts/8046-485ecb0ed7-lite.chunk.js +2 -0
  50. package/dist/scripts/8046-485ecb0ed7-lite.chunk.js.map +1 -0
  51. package/dist/scripts/8252-146bee4416-lite.chunk.js +2 -0
  52. package/dist/scripts/8252-146bee4416-lite.chunk.js.map +1 -0
  53. package/dist/scripts/8784-d6862c97bc-lite.chunk.js +2 -0
  54. package/dist/scripts/{6596-aa83b99b19-lite.chunk.js.map → 8784-d6862c97bc-lite.chunk.js.map} +1 -1
  55. package/dist/scripts/{1019-8f977b5095-lite.chunk.js → 8945-3ea21e765e-lite.chunk.js} +2 -2
  56. package/dist/scripts/{1019-8f977b5095-lite.chunk.js.map → 8945-3ea21e765e-lite.chunk.js.map} +1 -1
  57. package/dist/scripts/9355-44d72e25e0-lite.chunk.js +2 -0
  58. package/dist/scripts/{9010-fe4907051e-lite.chunk.js.map → 9355-44d72e25e0-lite.chunk.js.map} +1 -1
  59. package/dist/scripts/{9395-e1a02b01ce-lite.chunk.js → 9395-e07cb08942-lite.chunk.js} +3 -3
  60. package/dist/scripts/{9395-e1a02b01ce-lite.chunk.js.map → 9395-e07cb08942-lite.chunk.js.map} +1 -1
  61. package/dist/scripts/{9478-13da35c4ee-lite.chunk.js → 9478-250b1e9dcf-lite.chunk.js} +3 -3
  62. package/dist/scripts/{9478-13da35c4ee-lite.chunk.js.map → 9478-250b1e9dcf-lite.chunk.js.map} +1 -1
  63. package/dist/scripts/{953-225db845ab-lite.chunk.js → 953-e3f732e20e-lite.chunk.js} +3 -3
  64. package/dist/scripts/{953-225db845ab-lite.chunk.js.map → 953-e3f732e20e-lite.chunk.js.map} +1 -1
  65. package/dist/scripts/9569-c6292540d7-lite.chunk.js +2 -0
  66. package/dist/scripts/9569-c6292540d7-lite.chunk.js.map +1 -0
  67. package/dist/scripts/{bundle-360989040d.min.js → bundle-f1c26ac44d.min.js} +3 -3
  68. package/dist/scripts/bundle-f1c26ac44d.min.js.map +1 -0
  69. package/package.json +1 -1
  70. package/dist/scripts/1753-6aa1c10a83-lite.chunk.js +0 -2
  71. package/dist/scripts/1753-6aa1c10a83-lite.chunk.js.map +0 -1
  72. package/dist/scripts/184-37af6c4675-lite.chunk.js.map +0 -1
  73. package/dist/scripts/2142-d6e297d5a7-lite.chunk.js +0 -2
  74. package/dist/scripts/2142-d6e297d5a7-lite.chunk.js.map +0 -1
  75. package/dist/scripts/4013-7b878e3212-lite.chunk.js +0 -3
  76. package/dist/scripts/4013-7b878e3212-lite.chunk.js.map +0 -1
  77. package/dist/scripts/431-0487ecd6e4-lite.chunk.js +0 -2
  78. package/dist/scripts/431-0487ecd6e4-lite.chunk.js.map +0 -1
  79. package/dist/scripts/4554-2192c26ee9-lite.chunk.js.map +0 -1
  80. package/dist/scripts/4690-ab20eb70b5-lite.chunk.js +0 -2
  81. package/dist/scripts/4690-ab20eb70b5-lite.chunk.js.map +0 -1
  82. package/dist/scripts/5220-07af32c6ce-lite.chunk.js.map +0 -1
  83. package/dist/scripts/5936-13efc0f166-lite.chunk.js +0 -2
  84. package/dist/scripts/5936-13efc0f166-lite.chunk.js.map +0 -1
  85. package/dist/scripts/6054-d3677cdee9-lite.chunk.js +0 -2
  86. package/dist/scripts/6054-d3677cdee9-lite.chunk.js.map +0 -1
  87. package/dist/scripts/640-c3ae02d0a7-lite.chunk.js +0 -2
  88. package/dist/scripts/6596-aa83b99b19-lite.chunk.js +0 -2
  89. package/dist/scripts/696-2d01721d18-lite.chunk.js +0 -2
  90. package/dist/scripts/696-2d01721d18-lite.chunk.js.map +0 -1
  91. package/dist/scripts/7076-ec18ce09c9-lite.chunk.js +0 -3
  92. package/dist/scripts/7076-ec18ce09c9-lite.chunk.js.map +0 -1
  93. package/dist/scripts/7288-c11287ecc7-lite.chunk.js.map +0 -1
  94. package/dist/scripts/7895-78f20c123f-lite.chunk.js +0 -2
  95. package/dist/scripts/7895-78f20c123f-lite.chunk.js.map +0 -1
  96. package/dist/scripts/8046-62f4cbb4d1-lite.chunk.js +0 -2
  97. package/dist/scripts/8046-62f4cbb4d1-lite.chunk.js.map +0 -1
  98. package/dist/scripts/9010-fe4907051e-lite.chunk.js +0 -2
  99. package/dist/scripts/bundle-360989040d.min.js.map +0 -1
  100. /package/dist/css/{640-lite-45164266aa.chunk.css → 6262-lite-45164266aa.chunk.css} +0 -0
  101. /package/dist/scripts/{1379-ca519ec56b-lite.chunk.js.LICENSE.txt → 1379-172a429399-lite.chunk.js.LICENSE.txt} +0 -0
  102. /package/dist/scripts/{4013-7b878e3212-lite.chunk.js.LICENSE.txt → 4013-700c541143-lite.chunk.js.LICENSE.txt} +0 -0
  103. /package/dist/scripts/{5220-07af32c6ce-lite.chunk.js.LICENSE.txt → 5220-04f2f3bb42-lite.chunk.js.LICENSE.txt} +0 -0
  104. /package/dist/scripts/{624-09b51a9d32-lite.chunk.js.LICENSE.txt → 624-2c9ac733ba-lite.chunk.js.LICENSE.txt} +0 -0
  105. /package/dist/scripts/{7076-ec18ce09c9-lite.chunk.js.LICENSE.txt → 7076-748eef1eba-lite.chunk.js.LICENSE.txt} +0 -0
  106. /package/dist/scripts/{9395-e1a02b01ce-lite.chunk.js.LICENSE.txt → 9395-e07cb08942-lite.chunk.js.LICENSE.txt} +0 -0
  107. /package/dist/scripts/{9478-13da35c4ee-lite.chunk.js.LICENSE.txt → 9478-250b1e9dcf-lite.chunk.js.LICENSE.txt} +0 -0
  108. /package/dist/scripts/{953-225db845ab-lite.chunk.js.LICENSE.txt → 953-e3f732e20e-lite.chunk.js.LICENSE.txt} +0 -0
  109. /package/dist/scripts/{bundle-360989040d.min.js.LICENSE.txt → bundle-f1c26ac44d.min.js.LICENSE.txt} +0 -0
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@clickview/lite",
3
- "version": "0.55.3-rc.1",
3
+ "version": "0.56.0",
4
4
  "description": "ClickView Lite",
5
5
  "main": "dist/scripts/bundle.js",
6
6
  "types": "dist/projects/lite/src/index.d.ts",
@@ -1,2 +0,0 @@
1
- "use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[1753],{10935:(e,t,r)=>{r.d(t,{n:()=>a});var n=r(99940),a={requestExport:function(e){return{url:"/api/domain/v2/export",key:"request:export",type:n.k.POST,data:e,normalize:!1}}}},21753:(e,t,r)=>{r.r(t),r.d(t,{ExportUserListView:()=>v});var n=r(32735),a=r(23481),u=r(20354),o=r(9111),l=r(13876),i=r(83345),c=r(76881),s=r(10935),p=r(31949),f=r(69883);function m(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 y="userManager.exportUserList",d=a.T.encloseNamespace(y);function h(e){return e===c.Y.Staff?d("staff"):d("student")}function v(e){var t,r,a=u.a.useGetFetchAsync(),c=u.a.useBasicFetch(p.N.currentUser()),v=(t=n.useState(!1),r=2,function(e){if(Array.isArray(e))return e}(t)||function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var n,a,u,o,l=[],i=!0,c=!1;try{if(u=(r=r.call(e)).next,0===t){if(Object(r)!==r)return;i=!1}else for(;!(i=(n=u.call(r)).done)&&(l.push(n.value),l.length!==t);i=!0);}catch(e){c=!0,a=e}finally{try{if(!i&&null!=r.return&&(o=r.return(),Object(o)!==o))return}finally{if(c)throw a}}return l}}(t,r)||function(e,t){if(e){if("string"==typeof e)return m(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)?m(e,t):void 0}}(t,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.")}()),b=v[0],k=v[1],E=(0,f.Z)();return n.useEffect((function(){if(c.data&&!b){var t=s.n.requestExport({key:"customer.users.report",data:{userId:c.data.id,customerId:c.data.customerId,userType:e.userType}});a(t).then((function(){return k(!0)})).catch((function(){E.error(d("error")),e.closePopup()}))}}),[c.data]),n.createElement(o.G,{title:d("title",{type:h(e.userType)}),closePopup:e.closePopup,showLoadingSpinner:!b},b&&n.createElement(n.Fragment,null,n.createElement("p",null,n.createElement(i.x,{namespace:y,phrase:"message",options:{email:c.data.email,type:h(e.userType)}})),n.createElement(l.u,null,n.createElement(l.u.Submit,{variant:"dark",text:"Okay",onClick:e.closePopup}))))}}}]);
2
- //# sourceMappingURL=1753-6aa1c10a83-lite.chunk.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"scripts/1753-6aa1c10a83-lite.chunk.js","mappings":"mJAMaA,EAAwB,CACnCC,cAAa,SAACC,GACZ,MAAO,CACLC,IAAK,wBACLC,IAAK,iBACLC,KAAM,SACNH,KAAAA,EACAI,WAAW,EAEf,E,kRCDF,IAAMC,EAAY,6BACZC,EAAY,qBAAiCD,GAEnD,SAASE,EAAQC,GACf,OAAIA,IAAa,UACRF,EAAU,SACZA,EAAU,UACnB,CAMM,SAAUG,EAAmBC,GACjC,I,IAAMC,EAAa,uBAEbC,EAAc,kBAAkC,mBAEC,G,EAArB,YAAe,G,EAAM,E,o4BAA/CC,EAAQ,KAAEC,EAAW,KAEvBC,GAAS,SAuBf,OArBA,aAAgB,WACd,GAAKH,EAAYZ,OAAQa,EAAzB,CAGA,IAAMG,EAAU,kBAAoC,CAClDd,IAAK,wBACLF,KAAM,CACJiB,OAAQL,EAAYZ,KAAKkB,GACzBC,WAAYP,EAAYZ,KAAKmB,WAC7BX,SAAUE,EAAMF,YAIpBG,EAAWK,GACRI,MAAK,kBAAMN,GAAY,EAAK,IAAC,OACvB,WACLC,EAAOM,MAAMf,EAAU,UACvBI,EAAMY,YACR,GAhBM,CAiBV,GAAG,CAACV,EAAYZ,OAGd,gBAAC,IAAK,CACJuB,MAAOjB,EAAU,QAAS,CAAEH,KAAMI,EAAQG,EAAMF,YAChDc,WAAYZ,EAAMY,WAClBE,oBAAqBX,GAEpBA,GACC,gCACE,yBACE,gBAAC,IAAI,CAACR,UAAWA,EAAWoB,OAAO,UAAUC,QAAS,CAAEC,MAAOf,EAAYZ,KAAK2B,MAAOxB,KAAMI,EAAQG,EAAMF,cAE7G,gBAAC,IAAY,KACX,gBAAC,WAAmB,CAACoB,QAAQ,OAAOC,KAAK,OAAOC,QAASpB,EAAMY,eAM3E,C","sources":["file:///app/packages/libs/shared/src/flight-requests/FileGeneratorRequests.ts","file:///app/packages/projects/lite/src/apps/user-manager/views/export-user-list/ExportUserListView.tsx"],"sourcesContent":["import { HttpVerbs } from 'libs/common/backbone/enums/HttpVerbs';\nimport { Flight } from 'libs/common/flight';\n\nimport { FileGeneratorRequest } from '../interfaces/requests/FileGeneratorRequest';\n\n\nexport const FileGeneratorRequests = {\n requestExport(data: FileGeneratorRequest): Flight.Request {\n return {\n url: '/api/domain/v2/export',\n key: 'request:export',\n type: HttpVerbs.POST,\n data,\n normalize: false\n };\n }\n};","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Flight } from 'libs/common/flight';\n\nimport { Popup } from 'libs/shared/components/popup/Popup';\nimport { PopupButtons } from 'libs/shared/components/popup/PopupButtons';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { UserGroup } from 'libs/shared/enums/UserGroup';\nimport { FileGeneratorRequests } from 'libs/shared/flight-requests/FileGeneratorRequests';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { useAlerts } from 'libs/shared/hooks/UseAlerts';\nimport { CurrentUser, PopupViewProps } from 'libs/shared/interfaces';\n\nconst namespace = 'userManager.exportUserList';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nfunction getType(userType: UserGroup): string {\n if (userType === UserGroup.Staff)\n return getPhrase('staff');\n return getPhrase('student');\n}\n\ninterface ExportUserListViewProps extends PopupViewProps {\n userType: UserGroup;\n}\n\nexport function ExportUserListView(props: ExportUserListViewProps): JSX.Element {\n const fetchAsync = Flight.useGetFetchAsync();\n \n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n\n const [ complete, setComplete ] = React.useState(false);\n\n const alerts = useAlerts();\n\n React.useEffect(() => {\n if (!currentUser.data || complete)\n return;\n\n const request = FileGeneratorRequests.requestExport({\n key: 'customer.users.report',\n data: {\n userId: currentUser.data.id,\n customerId: currentUser.data.customerId,\n userType: props.userType\n }\n });\n\n fetchAsync(request)\n .then(() => setComplete(true))\n .catch(() => {\n alerts.error(getPhrase('error'));\n props.closePopup();\n });\n }, [currentUser.data]);\n\n return (\n <Popup\n title={getPhrase('title', { type: getType(props.userType) })}\n closePopup={props.closePopup}\n showLoadingSpinner={!complete}\n >\n {complete &&\n <>\n <p>\n <Text namespace={namespace} phrase='message' options={{ email: currentUser.data.email, type: getType(props.userType) }} />\n </p>\n <PopupButtons>\n <PopupButtons.Submit variant='dark' text='Okay' onClick={props.closePopup} />\n </PopupButtons>\n </>\n }\n </Popup>\n );\n}"],"names":["FileGeneratorRequests","requestExport","data","url","key","type","normalize","namespace","getPhrase","getType","userType","ExportUserListView","props","fetchAsync","currentUser","complete","setComplete","alerts","request","userId","id","customerId","then","error","closePopup","title","showLoadingSpinner","phrase","options","email","variant","text","onClick"],"sourceRoot":""}
@@ -1 +0,0 @@
1
- {"version":3,"file":"scripts/184-37af6c4675-lite.chunk.js","mappings":"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","sources":["file:///app/node_modules/@microsoft/immersive-reader-sdk/lib/immersive-reader-sdk.js","file:///app/packages/libs/shared/src/components/video-at-a-glance/VideoAtAGlance.tsx","file:///app/packages/libs/shared/src/components/video-at-a-glance/VideoAtAGlanceUtils.ts","file:///app/packages/libs/shared/src/components/video-details/video-details.scss","file:///app/packages/libs/shared/src/components/video-details/VideoDetails.tsx","file:///app/packages/libs/shared/src/components/video-details/VideoDetailsPartial.tsx","file:///app/packages/libs/shared/src/components/video-owner-text/video-owner-text.scss","file:///app/packages/libs/shared/src/components/video-owner-text/VideoOwnerText.tsx","file:///app/packages/libs/shared/src/components/widgets/items/clip-widget-item/ClipWidgetItem.tsx","file:///app/packages/libs/shared/src/components/widgets/items/clip-widget-item/clip-widget-item.scss","file:///app/packages/libs/shared/src/components/widgets/items/interactive-widget-item/InteractiveWidgetItem.tsx","file:///app/packages/libs/shared/src/components/widgets/items/interactive-widget-item/interactive-widget-item.scss","file:///app/packages/libs/shared/src/components/widgets/items/resource-widget-item/resource-widget-item.scss","file:///app/packages/libs/shared/src/components/widgets/items/resource-widget-item/ResourceWidgetItem.tsx","file:///app/packages/libs/shared/src/flight-requests/ThemeRequests.ts","file:///app/packages/libs/shared/src/components/video-at-a-glance/video-at-a-glance.scss","file:///app/node_modules/react-bootstrap/esm/Row.js"],"sourcesContent":["!function(e,t){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define([],t):\"object\"==typeof exports?exports.ImmersiveReader=t():e.ImmersiveReader=t()}(window,(function(){return function(e){var t={};function r(n){if(t[n])return t[n].exports;var o=t[n]={i:n,l:!1,exports:{}};return e[n].call(o.exports,o,o.exports,r),o.l=!0,o.exports}return r.m=e,r.c=t,r.d=function(e,t,n){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},r.r=function(e){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(e,\"__esModule\",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&\"object\"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,\"default\",{enumerable:!0,value:e}),2&t&&\"string\"!=typeof e)for(var o in e)r.d(n,o,function(t){return e[t]}.bind(null,o));return n},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,\"a\",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p=\"\",r(r.s=1)}([function(e,t,r){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),function(e){e[e.Disable=0]=\"Disable\",e[e.Enable=1]=\"Enable\"}(t.CookiePolicy||(t.CookiePolicy={}))},function(e,t,r){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0});var n=r(2);t.renderButtons=n.renderButtons;var o=r(3);t.close=o.close,t.launchAsync=o.launchAsync;var i=r(0);t.CookiePolicy=i.CookiePolicy,window.addEventListener(\"load\",(function(){var e,t;window.hasOwnProperty(\"Promise\")||(e=\"https://contentstorage.onenote.office.net/onenoteltir/permanent-static-resources/promise-polyfill.min.js\",(t=document.createElement(\"script\")).src=e,document.head.appendChild(t)),n.renderButtons()}))},function(e,t,r){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0});var n={af:\"Indompelende leser\",am:\"በህያው ስሜት ፈጣሪ ዕይታ አንባቢ\",ar:\"القارئ الشامل\",as:\"ইমাৰচিভ ৰিডাৰ\",az:\"İmmersiv Oxuyucu\",be:\"Імерсіўны чытальнік\",bg:\"Концентриран четец\",bn:\"মনোগ্রাহী পাঠক\",\"bn-bd\":\"ইমার্সিভ পাঠক\",bs:\"Koncentrirani čitalac\",ca:\"Lector immersiu\",cs:\"Asistivní čtečka\",\"cy-gb\":\"Darllenydd Ymdrwythol\",da:\"Forenklet læser\",de:\"Plastischer Reader\",el:\"Προηγμένο πρόγραμμα ανάγνωσης\",en:\"Immersive Reader\",es:\"Lector inmersivo\",et:\"Süvaluger\",eu:\"Irakurgailu murgiltzailea\",fa:\"خواننده همه‌جانبه\",fi:\"Syventävä lukuohjelma\",fil:\"Immersive Reader\",fr:\"Lecteur immersif\",\"ga-ie\":\"Léitheoir tumthach\",gd:\"An leughadair ùr-nòsach\",gl:\"Lector avanzado\",gu:\"ઇમર્સિવ રીડર\",ha:\"Mai karatu Mai barbazawa\",he:\"תצוגת קריאה מודרנית\",hi:\"इमर्सिव रीडर\",hr:\"Stopljeni čitač\",hu:\"Modern olvasó\",hy:\"Խորասուզված ընթերցիչ\",id:\"Pembaca Imersif\",ig:\"Ọgụụ Kenzipụtara\",is:\"Aðgengilegt lestrarumhverfi\",it:\"Strumento di lettura immersiva\",ja:\"イマーシブ リーダー\",ka:\"იმერსიული წამკითხველი\",kk:\"Иммерсивті оқу құралы\",km:\"កម្មវិធីអានពណ៌រំលេចនៅលើអេក្រង់\",kn:\"ಇಮ್ಮರ್ಸಿವ್ ಓದುಗ\",ko:\"몰입형 리더\",kok:\"तंद्री लागिल्लो वाचक\",\"ku-arab\":\"خوێنەری پڕ\",ky:\"Курчаган Окугуч\",lb:\"Immersive Reader\",lo:\"ຕົວອ່ານອິມເມີສີບ\",lt:\"Įtraukianti skaitytuvė\",lv:\"Tīrskata lasītājs\",mi:\"Pūpānui Rumaki\",mk:\"Сеопфатен читач\",ml:\"ഇമ്മേഴ്‌സീവ് റീഡർ\",mn:\"Идэвхтэй уншигч\",mr:\"इमर्सिव्ह वाचक\",ms:\"Pembaca Imersif\",mt:\"Qarrej Immersiv\",ne:\"इमेर्सिभ रिडर\",nl:\"Insluitende lezer\",\"nn-no\":\"Engasjerande lesar\",no:\"Engasjerende leser\",nso:\"Go Bala ka Mongwalo o Mokoto\",or:\"ଇମରସିଭ୍ ରିଡର୍\",pa:\"ਇਮਰਸਿਵ ਰੀਡਰ\",\"pa-arab\":\"گھیرن آلا مطالعہ کار\",pl:\"Czytnik immersyjny\",prs:\"خواننده نمایش\",pt:\"Leitura Avançada\",quc:\"Nim ucholajil sik'inel uwach\",quz:\"Wankisqa Ñawiq\",ro:\"Immersive Reader\",ru:\"Иммерсивное средство чтения\",rw:\"Insakazasoma\",sd:\"امرسو ريڊر\",si:\"ගිලෙන සුළු කියවනය\",sk:\"Imerzná čítačka\",sl:\"Potopni bralnik\",sq:\"Lexuesi kredhës\",\"sr-cyrl-ba\":\"Концентрисани читалац\",\"sr-cyrl-rs\":\"Концентрисани читалац\",\"sr-latn-rs\":\"Koncentrisani čitalac\",sv:\"Avancerad läsare\",sw:\"Kisomaji cha Kuzamisha\",ta:\"அற்புதமான ரீடர்\",te:\"మంత్రముగ్ధులను చేసే పఠన సాధనం\",\"tg-cyrl-tj\":\"Хонандаи фарогир\",th:\"โปรแกรมช่วยอ่าน\",ti:\"ኣንባቢ ሕሉው ስምዒት ፈጣሪ\",tk:\"Giňişleýin okaýjy\",tn:\"Sebadi sa Imesife\",tr:\"Tam Ekran Okuyucu\",tt:\"Чолгап алучы уку чарасы\",\"ug-cn\":\"چۆكمە ئوقۇغۇچ\",uk:\"Занурення в текст\",ur:\"امرسیو مطالعہ کار\",uz:\"Immersiv mutolaa vositasi\",vi:\"Trình đọc Chân thực\",wo:\"Jàngukaay bu Rafet\",xh:\"Isifundi Esikhulu\",yo:\"Ìwò Alámùtán\",zh:\"沉浸式阅读器\",\"zh-hant\":\"沈浸式閱讀程式\",zu:\"Isifundi Sokuzizwisa\"};function o(e){var t=document.createElement(\"img\");t.src=\"https://contentstorage.onenote.office.net/onenoteltir/permanent-static-resources/immersive-reader-icon.svg\";var r=e.getAttribute(\"data-icon-px-size\")||\"20\";t.style.height=t.style.width=r+\"px\",t.style.verticalAlign=\"middle\",t.style.marginTop=\"-2px\";var n=e.getAttribute(\"data-locale\")||\"en\";t.alt=s(n),e.appendChild(t)}function i(e){var t=document.createElement(\"span\");t.style.marginLeft=\"8px\",e.appendChild(t)}function a(e){var t=document.createElement(\"span\"),r=e.getAttribute(\"data-locale\")||\"en\";t.textContent=s(r),e.appendChild(t)}function s(e){return e=e.toLowerCase(),n[e]?n[e]:\"zh-hk\"===e||\"zh-mo\"===e||\"zh-tw\"===e?n[\"zh-hant\"]:(e=e.substring(0,e.lastIndexOf(\"-\")),n[e]?n[e]:(e=e.substring(0,e.lastIndexOf(\"-\")),n[e]?n[e]:n.en))}t.renderButtons=function(e){var t=document.createElement(\"style\");t.innerHTML=\".immersive-reader-button{cursor:pointer;display:inline-block;padding:5px;} .immersive-reader-button:hover{background:rgba(0,0,0,.05);border-radius:2px\",document.head.appendChild(t);var r=[].slice.call(document.getElementsByClassName(\"immersive-reader-button\"));e&&e.elements&&(r=e.elements);for(var n=0,u=r;n<u.length;n++){var d=u[n];d.setAttribute(\"role\",\"button\");var l=d.getAttribute(\"data-locale\")||\"en\";switch(d.setAttribute(\"aria-label\",s(l)),d.getAttribute(\"data-button-style\")||\"icon\"){case\"icon\":o(d);break;case\"text\":a(d);break;case\"iconAndText\":o(d),i(d),a(d)}}}},function(e,t,r){\"use strict\";var n=this&&this.__assign||function(){return(n=Object.assign||function(e){for(var t,r=1,n=arguments.length;r<n;r++)for(var o in t=arguments[r])Object.prototype.hasOwnProperty.call(t,o)&&(e[o]=t[o]);return e}).apply(this,arguments)};Object.defineProperty(t,\"__esModule\",{value:!0});var o=r(0),i=r(4),a={};function s(e){if(!e)return!1;return new RegExp(\"^([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\\\\-]{0,61}[a-zA-Z0-9])$\").test(e)}a[i.ErrorCode.TokenExpired]=\"The access token supplied is expired.\",a[i.ErrorCode.Throttled]=\"You have exceeded your quota.\",a[i.ErrorCode.ServerError]=\"An error occurred when calling the server to process the text.\",a[i.ErrorCode.InvalidSubdomain]=\"The subdomain supplied is invalid.\",t.launchAsync=function(e,t,r,u){return new Promise((function(d,l){if(e)if(r)if(r.chunks)if(r.chunks.length)if(s(t)||u&&u.customDomain){var c=Date.now();(u=n({uiZIndex:1e3,timeout:15e3,useWebview:!1,allowFullscreen:!0,hideExitButton:!1,cookiePolicy:o.CookiePolicy.Disable},u)).uiZIndex&&\"number\"==typeof u.uiZIndex||(u.uiZIndex=1e3);var m=null,v=document.createElement(\"div\"),p=u.useWebview?document.createElement(\"webview\"):document.createElement(\"iframe\"),f=document.createElement(\"style\");f.innerHTML=\"body{height:100%;overflow:hidden;}\";var h=function(){m&&(window.clearTimeout(m),m=null)},b=function(){document.body.contains(v)&&document.body.removeChild(v),window.removeEventListener(\"message\",y),h(),f.parentNode&&f.parentNode.removeChild(f)},g=function(){b(),u.onExit&&u.onExit()};b();var y=function(n){if(n&&n.data)if(\"ImmersiveReader-ReadyForContent\"===n.data){h();var o={cogSvcsAccessToken:e,cogSvcsSubdomain:t,request:r,launchToPostMessageSentDurationInMs:Date.now()-c};p.contentWindow.postMessage(JSON.stringify({messageType:\"Content\",messageValue:o}),\"*\")}else if(\"ImmersiveReader-Exit\"===n.data)g();else if(n.data.startsWith(\"ImmersiveReader-LaunchResponse:\")){var s=null,u=null,m=null;try{m=JSON.parse(n.data.substring(\"ImmersiveReader-LaunchResponse:\".length))}catch(e){}m&&m.success?s={container:v,sessionId:m.sessionId}:u=m&&!m.success?{code:m.errorCode,message:a[m.errorCode],sessionId:m.sessionId}:{code:i.ErrorCode.ServerError,message:a[i.ErrorCode.ServerError]},s?(h(),d(s)):u&&(g(),l(u))}};window.addEventListener(\"message\",y),m=window.setTimeout((function(){b(),l({code:i.ErrorCode.Timeout,message:\"Page failed to load after timeout (\"+u.timeout+\" ms)\"})}),u.timeout),u.allowFullscreen&&p.setAttribute(\"allowfullscreen\",\"\"),p.style.cssText=\"position: static; width: 100vw; height: 100vh; left: 0; top: 0; border-width: 0\",u.useWebview&&p.addEventListener(\"loadstop\",(function(){p.contentWindow.postMessage(JSON.stringify({messageType:\"WebviewHost\"}),\"*\")}));var k=(u.customDomain?u.customDomain:\"https://\"+t+\".cognitiveservices.azure.com/immersivereader/webapp/v1.0/\")+\"reader?exitCallback=ImmersiveReader-Exit&sdkPlatform=js&sdkVersion=1.0.0\";k+=\"&cookiePolicy=\"+(u.cookiePolicy===o.CookiePolicy.Enable?\"enable\":\"disable\"),u.hideExitButton&&(k+=\"&hideExitButton=true\"),u.uiLang&&(k+=\"&omkt=\"+u.uiLang),p.src=k,v.style.cssText=\"position: fixed; width: 100vw; height: 100vh; left: 0; top: 0; border-width: 0; -webkit-perspective: 1px; z-index: \"+u.uiZIndex+\"; background: white; overflow: hidden\",v.appendChild(p),document.body.appendChild(v),document.head.appendChild(f)}else l({code:i.ErrorCode.InvalidSubdomain,message:a[i.ErrorCode.InvalidSubdomain]});else l({code:i.ErrorCode.BadArgument,message:\"Chunks must not be empty\"});else l({code:i.ErrorCode.BadArgument,message:\"Chunks must not be null\"});else l({code:i.ErrorCode.BadArgument,message:\"Content must not be null\"});else l({code:i.ErrorCode.BadArgument,message:\"Token must not be null\"})}))},t.close=function(){window.postMessage(\"ImmersiveReader-Exit\",\"*\")},t.isValidSubdomain=s},function(e,t,r){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),function(e){e.BadArgument=\"BadArgument\",e.Timeout=\"Timeout\",e.TokenExpired=\"TokenExpired\",e.Throttled=\"Throttled\",e.ServerError=\"ServerError\",e.InvalidSubdomain=\"InvalidSubdomain\"}(t.ErrorCode||(t.ErrorCode={}))}])}));","import * as React from 'react';\n\nimport { Core } from 'libs/common/core';\nimport { ObjectHelper } from 'libs/common/react/utils/ObjectHelper';\n\nimport { DivButton } from 'libs/shared/components/div-button/DivButton';\nimport { TagHelper } from 'libs/shared/components/tags/TagHelper';\nimport { TagList } from 'libs/shared/components/tags/TagList';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { ImageSize } from 'libs/shared/enums/Images';\nimport { PointOfInterest, Tag, Theme, ThemeColours, Video } from 'libs/shared/interfaces';\nimport { ImageHelper } from 'libs/shared/utils/ImageHelper';\n\nimport { hasGlanceData, onClickMarkDown, useGlanceMarkdown, useHighlightPointOfInterest } from './VideoAtAGlanceUtils';\n\nimport styles from './video-at-a-glance.scss';\n\nconst namespace = 'shared.videoAtAGlance';\n\nfunction getThemeColours(theme: Theme): ThemeColours {\n if (theme?.data?.colours?.primary && theme?.data?.colours?.secondary)\n return theme.data.colours;\n\n // On the off chance that a theme is in use that doesn't have any colours, safely fall back to these generic colours.\n return {\n primary: '#F5F4FF',\n secondary: '#9294FF'\n };\n}\n\ninterface VideoAtAGlanceProps {\n video: Video;\n theme: Theme;\n pointsOfInterest?: PointOfInterest[];\n suppressInteractivity?: boolean;\n onClickShowCurriculumLinks?: () => void;\n onClickShowDescription?: () => void;\n setStartTime?: (time: number) => void;\n getTagAppLink?: (tag: Tag) => Core.AppLink;\n}\n\nexport function VideoAtAGlance(props: VideoAtAGlanceProps): JSX.Element {\n const canViewGlance = hasGlanceData(props.video, props.theme);\n\n const markdownHTML = useGlanceMarkdown(\n props.video,\n props.pointsOfInterest,\n canViewGlance,\n props.suppressInteractivity\n );\n \n const glanceContentRef = useHighlightPointOfInterest(props.pointsOfInterest, canViewGlance);\n \n if (!canViewGlance)\n return <></>;\n\n const themeColours = getThemeColours(props.theme);\n\n const showDescriptionLink = typeof props.onClickShowDescription === 'function';\n const showCurriculumsLink = typeof props.onClickShowCurriculumLinks === 'function';\n\n return (\n <div\n className={`rounded border px-3 px-sm-5 py-3 mb-3 position-relative d-flex justify-content-center ${styles.container}`}\n style={{ backgroundColor: themeColours.primary }}\n >\n <div className={`${styles.content} d-flex align-items-center pt-4 pt-sm-0`}>\n <div>\n <h2 className='h4'><Text namespace={namespace} phrase='videoAtAGlance' /></h2>\n {showDescriptionLink && (\n <DivButton\n onClick={props.onClickShowDescription}\n className={`${styles.detailsBtn} position-absolute cursor-pointer me-4 fw-semibold text-info`}\n >\n <Text namespace={namespace} phrase='readFullDescription' />\n </DivButton>\n )}\n <div\n ref={glanceContentRef}\n onClick={(event: React.MouseEvent<HTMLDivElement, MouseEvent>) =>\n onClickMarkDown(event, props.pointsOfInterest, props.setStartTime)\n }\n dangerouslySetInnerHTML={{ __html: markdownHTML }}\n />\n\n {(() => {\n if (!props.video.tags?.data?.length)\n return <></>;\n\n return (\n <div className='py-1'>\n <TagList\n tags={props.video?.tags?.data}\n themeColours={themeColours}\n {...TagHelper.getTagActionProps(props.getTagAppLink, null, props.suppressInteractivity)}\n />\n </div>\n );\n })()}\n\n <div className='mt-2'>\n {showCurriculumsLink && (\n <DivButton\n onClick={props.onClickShowCurriculumLinks}\n className='cursor-pointer d-inline-block fw-semibold text-info'\n >\n <Text namespace={namespace} phrase='seeCurriculumLinks' />\n </DivButton>\n )}\n </div>\n </div>\n </div>\n\n {(() => {\n const themeImages = props.theme?.data?.images ?? {};\n\n const themeImageSegments = ObjectHelper\n .keys(themeImages)\n .filter((key: keyof typeof themeImages) => {\n return !ObjectHelper.isEmpty(themeImages[key]);\n });\n\n return themeImageSegments.map((segment: keyof typeof themeImages) => {\n const url = ImageHelper.createUrl(themeImages[segment]?.url, { size: ImageSize.Medium });\n\n return (\n <div\n key={themeImages[segment]?.fileId}\n className={`${styles[segment]} ${styles.background} d-none d-lg-block`}\n style={{\n backgroundImage: `url('${url}')`\n }}\n />\n );\n });\n })()}\n </div>\n );\n}","import { MutableRefObject, useEffect, useRef, useState } from 'react';\nimport * as marked from 'marked';\n\nimport { useEventsServiceSubscribe } from 'libs/common/react/hooks/UseEventsServiceSubscribe';\nimport { EventsService } from 'libs/common/react/services/EventsService';\n\nimport { Clip, Glance, PointOfInterest, Theme, Video } from 'libs/shared/interfaces';\nimport { DurationHelper } from 'libs/shared/utils/DurationHelper';\n\nimport styles from './video-at-a-glance.scss';\n\nconst POI_REGEX = /(\\[.*\\]\\(cv:\\/\\/poi\\?id=[0-9]+\\))/g;\nconst POI_ID_REGEX = /[0-9]+/;\nconst POI_TEXT_REGEX = /\\[.*\\]/;\nconst POI_TEXT_BRACES_REGEX = /[\\[\\]]/g;\n\nfunction injectPointOfInterestData(\n glance: Glance,\n pointsOfInterest: PointOfInterest[],\n suppressInteractivity?: boolean\n): string {\n if (!pointsOfInterest?.length)\n return glance.content;\n\n return glance.content.replace(POI_REGEX, (substr: string) => {\n const idMatch = substr.match(POI_ID_REGEX);\n \n if (!idMatch?.length)\n return substr;\n\n const poi = pointsOfInterest.find(p => p.id.toString() === idMatch[0]);\n const poiTextMatch = substr.match(POI_TEXT_REGEX);\n \n if (!poi || !poiTextMatch?.length)\n return substr;\n\n const timestamp = `<span class=\"me-2\">${DurationHelper.ToDisplayDuration(poi.startTime * 1000)}</span>`;\n\n let poiText = poiTextMatch[0];\n // strip []\n poiText = poiText.replace(POI_TEXT_BRACES_REGEX, '');\n // if no custom text, set POI description as text\n poiText = poiText || poi.description;\n // prepend timestamp to text and add []\n poiText = `${timestamp} ${poiText}`;\n\n // When we are rendering in a public context without the player we will show simple spans\n return !suppressInteractivity\n ? substr.replace(POI_TEXT_REGEX, `[${poiText}]`)\n : `<span class=\"d-flex\">${poiText}</span>`;\n });\n}\n\nfunction getGlanceContent(\n glance: Glance,\n pointsOfInterest: PointOfInterest[],\n suppressInteractivity?: boolean\n): string {\n const content = injectPointOfInterestData(glance, pointsOfInterest, suppressInteractivity);\n\n return marked(content)\n .split('a href=\"cv://poi')\n .join('a class=\"d-flex\" href=\"cv://poi');\n}\n\n/**\n * Because the markdown is injected as a HTML string, we cannot attach click event handlers directly onto\n * the links that we want to. Instead, we attach one click handler to the entire markdown container, meaning\n * click events bubble up, and we can use `event.target` to see which element was clicked.\n */\nexport function onClickMarkDown(\n event: React.MouseEvent<HTMLDivElement, MouseEvent>,\n pointsOfInterest?: PointOfInterest[],\n setStartTime?: (timeVideosStat: number) => void\n): void {\n event.preventDefault();\n\n const href = (event.target as HTMLDivElement).getAttribute('href');\n\n // Ignore click events that do not have a href\n if (!href?.includes('cv://poi') || !pointsOfInterest?.length)\n return;\n \n // When a timestamp is clicked, we update the player time\n const poiId = href.split('cv://poi?id=')[1];\n const poi = pointsOfInterest.find(p => p.id.toString() === poiId);\n setStartTime && poi && setStartTime(poi.startTime);\n}\n\nexport function useGlanceMarkdown(\n video: Video,\n pointsOfInterest?: PointOfInterest[],\n hasGlanceData?: boolean,\n suppressInteractivity?: boolean\n): string {\n const [ markdownHTML, setMarkdownHTML ] = useState('');\n\n useEffect(() => {\n if (!hasGlanceData)\n return;\n\n const content = getGlanceContent(video.glance, pointsOfInterest, suppressInteractivity);\n\n setMarkdownHTML(content);\n }, [ video.glance?.content, pointsOfInterest?.length, hasGlanceData ]);\n\n return markdownHTML;\n}\n\nexport function useHighlightPointOfInterest(\n pointsOfInterest: PointOfInterest[],\n shouldHighlight: boolean\n): MutableRefObject<HTMLDivElement> {\n const ref = useRef<HTMLDivElement>();\n\n useEventsServiceSubscribe('player:poi:mouseover', onPlayerPoiMouseOver, null, shouldHighlight);\n useEventsServiceSubscribe('player:poi:mouseleave', onPlayerPoiMouseLeave, null, shouldHighlight);\n\n useEffect(() => {\n if (!ref.current || !shouldHighlight)\n return;\n\n const poiEls = getAllPoiEls();\n\n poiEls.forEach(el => el.addEventListener('mouseover', onGlancePoiMouseOver));\n poiEls.forEach(el => el.addEventListener('mouseleave', onGlancePoiMouseLeave));\n\n return () => {\n poiEls.forEach(el => el.removeEventListener('mouseover', onGlancePoiMouseOver));\n poiEls.forEach(el => el.removeEventListener('mouseleave', onGlancePoiMouseLeave));\n };\n }, [ref.current]);\n\n function onPlayerPoiMouseOver(pointOfInterest: PointOfInterest): void {\n const poiId = pointOfInterest?.id;\n\n if (!poiId)\n return;\n\n getPoiEl(poiId)?.classList.add(styles.highlightPoi);\n }\n\n function onPlayerPoiMouseLeave(): void {\n getAllPoiEls()?.forEach(el => el.classList.remove(styles.highlightPoi));\n }\n\n /**\n * `this` will be the element to which the eventListener is bound.\n */\n function onGlancePoiMouseOver(): void {\n const href = this.getAttribute('href');\n\n if (!href?.includes('cv://poi') || !pointsOfInterest?.length)\n return;\n\n const id = href.split('cv://poi?id=')[1];\n\n if (!id)\n return;\n\n const poi = pointsOfInterest.find(p => p.id.toString() === id);\n\n if (poi)\n EventsService.trigger('glance:poi:mouseover', poi);\n }\n\n function onGlancePoiMouseLeave(): void {\n EventsService.trigger('glance:poi:mouseleave');\n }\n\n function getPoiEl(id: string): HTMLAnchorElement {\n return ref.current?.querySelector(`[href=\"cv://poi?id=${id}\"]`);\n }\n\n function getAllPoiEls(): NodeListOf<HTMLAnchorElement> {\n return ref.current?.querySelectorAll(`[href*=\"cv://poi\"]`);\n }\n\n return ref;\n}\n\nexport function hasGlanceData(video: Video | Clip, glanceTheme: Theme): boolean {\n return glanceTheme &&\n video.glance?.content &&\n video.glance?.format === 'text/markdown';\n}","// extracted by mini-css-extract-plugin\nexport default {\"closeButton\":\"ZwHXo\",\"descriptionBorder\":\"J_Z5i\"};","import * as React from 'react';\nimport { Scrollbars } from 'react-custom-scrollbars-2';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Core } from 'libs/common/core';\nimport { DateHelper } from 'libs/common/react/utils/DateHelper';\nimport { LinkifyHelper } from 'libs/common/react/utils/LinkifyHelper';\n\nimport { ClickDescriptor, EntityType, LocationContext, UserAction } from 'libs/analytics/interfaces';\n\nimport { DivButton } from 'libs/shared/components/div-button/DivButton';\nimport { ImmersiveReader } from 'libs/shared/components/immersive-reader/ImmersiveReader';\nimport { TagHelper } from 'libs/shared/components/tags/TagHelper';\nimport { TagList } from 'libs/shared/components/tags/TagList';\nimport { LanguageNamespaceContext, Text } from 'libs/shared/components/text/Text';\nimport { MINIMUM_GLANCE_HEIGHT } from 'libs/shared/constants/MinimumGlanceHeight';\nimport { BaseObject, BasePaginatedCollection, CurrentUser, Tag, VideoTypes } from 'libs/shared/interfaces';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\nimport { hasPPDD } from './VideoDetailsUtils';\n\nimport styles from './video-details.scss';\n\nconst namespace = 'shared.videoDetails';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface CommaListProps {\n label: string;\n items: BasePaginatedCollection<BaseObject>;\n className?: string;\n}\n\nfunction CommaList(props: CommaListProps): React.ReactElement {\n const { label, items, className } = props;\n\n const hasItems = items && items.data && items.data.length;\n\n if (!hasItems)\n return <></>;\n\n const commaSeperated = items.data.map(i => i.name).join(', ');\n\n return (\n <div className={className}>{label}: {commaSeperated}</div>\n );\n}\n\nfunction DetailsSection(props: VideoDetailsWithScrollbarProps): React.ReactElement {\n const { video } = props;\n\n if (!VideoHelper.isVideo(video) && !VideoHelper.isClip(video))\n return <></>;\n\n function showDateUploaded(): boolean {\n if (!props.currentUser?.isAuthenticated)\n return false;\n\n return !!video.dateCreated && !video._isClickViewCurated?.value;\n }\n\n const parentVideo = VideoHelper.getParentVideo(video);\n\n return (\n <div className={video.description ? 'col-md-5 ps-md-3 pt-3 pt-md-0' : 'col-12'}>\n <h2 className='h6 mb-1'><Text phrase='details' /></h2>\n {!!parentVideo.productionYear && (\n <div className='mb-1'>\n <Text phrase='productionYear' options={{ year: parentVideo.productionYear }} />\n </div>\n )}\n <CommaList\n label={getPhrase('productionCompanies', { smartCount: parentVideo.productionCompanies?.data?.length })}\n items={parentVideo.productionCompanies}\n className='mb-1'\n />\n <CommaList\n label={getPhrase('distributors', { smartCount: parentVideo.distributors?.data?.length })}\n items={parentVideo.distributors}\n className='mb-1'\n />\n <CommaList\n label={getPhrase('producers', { smartCount: parentVideo.producers?.data?.length })}\n items={parentVideo.producers}\n className='mb-1'\n />\n <CommaList\n label={getPhrase('directors', { smartCount: parentVideo.directors?.data?.length })}\n items={parentVideo.directors}\n className='mb-1'\n />\n {!!parentVideo.dateBroadcast && (\n <div className='mb-1'>\n <Text phrase='dateBroadcast' options={{ date: DateHelper.format(parentVideo.dateBroadcast, 'DD/MM/YYYY') }} />\n </div>\n )}\n {!!parentVideo.channel && (\n <div className='mb-1'>\n <Text phrase='channel' options={{ channel: parentVideo.channel.name }} />\n </div>\n )}\n {showDateUploaded() && (\n <div className='mb-1'>\n <Text phrase='dateUploaded' options={{ date: DateHelper.format(video.dateCreated, 'DD/MM/YYYY') }} />\n </div>\n )}\n </div>\n );\n}\n\ninterface VideoDetailsWithScrollbarProps {\n video: VideoTypes;\n currentUser?: CurrentUser;\n getTagAppLink?: (tag: Tag) => Core.AppLink;\n onLaunchImmersiveReader?: () => void;\n onExitImmersiveReader?: () => void;\n onClickClose?: () => void;\n onClickShowCurriculumLinks?: () => void;\n maxHeight?: number;\n suppressInteractivity?: boolean;\n hideTags?: boolean;\n}\n\nexport function VideoDetailsWithScrollbar(props: VideoDetailsWithScrollbarProps): React.ReactElement {\n const { video, maxHeight = MINIMUM_GLANCE_HEIGHT } = props;\n\n const parentVideo = VideoHelper.getParentVideo(video);\n\n const showDescription = !!props.video.description;\n\n const showDetails = (\n hasPPDD(props.video) ||\n !!parentVideo.productionYear ||\n !!parentVideo.dateBroadcast ||\n !!parentVideo.channel ||\n !!(video.dateCreated && !video._isClickViewCurated?.value)\n );\n\n const canClose = typeof props.onClickClose === 'function';\n const showCurriculumLinks = typeof props.onClickShowCurriculumLinks === 'function';\n\n function getTags(): Tag[] {\n if (props.hideTags || VideoHelper.isInteractive(props.video) || !props.video.tags?.data?.length)\n return null;\n\n return props.video.tags.data;\n }\n\n if (!showDescription && !showDetails)\n return <></>;\n\n return (\n <LanguageNamespaceContext.Provider value={namespace}>\n <div className='rounded border p-3 mb-3 position-relative'>\n <Scrollbars autoHeight autoHeightMax={maxHeight}>\n <div className='row g-0'>\n {showDescription && (\n <div className={showDetails ? `${styles.descriptionBorder} pe-3 col-md-7` : 'col-12'}>\n <div className='d-flex align-items-center'>\n <h2 className='h6 mb-1'>\n <Text phrase='description' />\n </h2>\n <ImmersiveReader\n text={video.description}\n title={video.name}\n className='ps-2'\n onLaunch={props.onLaunchImmersiveReader}\n onExit={props.onExitImmersiveReader}\n analyticsOptions={{\n location: LocationContext.PlayPage,\n entity: EntityType.Video,\n actionType: UserAction.Click,\n descriptor: ClickDescriptor.LaunchImmersiveReader\n }}\n analyticsData={{ id: video.id, type: 'description' }}\n />\n </div>\n <p className='mb-0' dangerouslySetInnerHTML={{ __html: LinkifyHelper.linkifyText(props.video.description, { nl2br: true }) }} />\n <TagList\n tags={getTags()}\n {...TagHelper.getTagActionProps(props.getTagAppLink, null, props.suppressInteractivity)}\n className='mt-1'\n />\n {showCurriculumLinks && (\n <DivButton\n onClick={props.onClickShowCurriculumLinks}\n className='cursor-pointer d-inline-block fw-semibold text-info mt-2 mb-1'\n >\n <Text namespace={namespace} phrase='seeCurriculumLinks' />\n </DivButton>\n )}\n </div>\n )}\n\n {showDetails && (\n <DetailsSection {...props} />\n )}\n </div>\n </Scrollbars>\n\n {canClose && (\n <button\n type='button'\n className={`btn-close ${styles.closeButton}`}\n aria-label='Close'\n onClick={props.onClickClose}\n />\n )}\n </div>\n </LanguageNamespaceContext.Provider>\n );\n}","import React from 'react';\n\nexport function VideoDetailsPartial(): JSX.Element {\n return (\n <div className='p-3 mb-3 border rounded'>\n <div className='row'>\n <div className='pe-3 col-md-7 border-right'>\n <div className='partial-loading-background mb-2' style={{ height: '1.5rem', width: '12rem' }}></div>\n <div className='partial-loading-background mb-2' style={{ height: '4.5rem' }}></div>\n <div className='partial-loading-background' style={{ height: '1.5rem', width: '15rem' }}></div>\n </div>\n <div className='col-md-5 ps-md-3 pt-3 pt-md-0'>\n <div className='partial-loading-background mb-2' style={{ height: '1.5rem', width: '7rem' }}></div>\n <div className='partial-loading-background mb-2' style={{ height: '1.5rem', width: '10rem' }}></div>\n <div className='partial-loading-background mb-2' style={{ height: '1.5rem', width: '12rem' }}></div>\n <div className='partial-loading-background mb-2 me-2 d-inline-block' style={{ height: '1.5rem', width: '3rem' }}></div>\n <div className='partial-loading-background mb-2 me-2 d-inline-block' style={{ height: '1.5rem', width: '4rem' }}></div>\n <div className='partial-loading-background mb-2 me-2 d-inline-block' style={{ height: '1.5rem', width: '3.5rem' }}></div>\n <div className='partial-loading-background mb-2 me-2 d-inline-block' style={{ height: '1.5rem', width: '4.5rem' }}></div>\n </div>\n </div>\n </div>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"avatarContainer\":\"kd18L\",\"cvIcon\":\"smUBc\"};","import React from 'react';\n\nimport { Avatar } from 'libs/shared/components/avatar/Avatar';\nimport { SvgContainer2 } from 'libs/shared/components/svg-container/SvgContainer2';\nimport { ClickViewPlayLogo } from 'libs/shared/components/svgs/clickview-logo/ClickViewLogo';\nimport { User } from 'libs/shared/interfaces';\nimport { UserHelper } from 'libs/shared/utils/UserHelper';\n\nimport styles from './video-owner-text.scss';\n\ninterface VideoOwnerTextProps {\n owner: User;\n isClickViewCurated: boolean;\n imageCdnUrl: string;\n}\n\nexport function VideoOwnerText(props: VideoOwnerTextProps): JSX.Element {\n if (!props.owner && !props.isClickViewCurated)\n return <></>;\n\n if (props.isClickViewCurated) {\n return (\n <div className='clamp-1 d-flex align-items-center'>\n <div className={`${styles.avatarContainer} me-1 border rounded-circle position-relative`}>\n <SvgContainer2 className={`me-1 ${styles.cvIcon}`}>\n <ClickViewPlayLogo />\n </SvgContainer2>\n </div>\n ClickView\n </div>\n );\n }\n\n const name = UserHelper.getCommunityName(props.owner);\n\n if (!name)\n return <></>;\n\n return (\n <div className='d-flex align-items-center'>\n <div className={`${styles.avatarContainer} me-1`}>\n <Avatar\n imageCdnUrl={props.imageCdnUrl}\n initials={UserHelper.getInitials(props.owner.name, props.owner.surname)}\n imageUrl={props.owner.avatar?.url}\n />\n </div>\n <div className='clamp-1'>\n {name}\n </div>\n </div>\n );\n}","import React from 'react';\n\nimport { LocationContext } from 'libs/analytics/interfaces';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { VideoThumbnail } from 'libs/shared/components/thumbnails/video/VideoThumbnail';\nimport { VideoOwnerText } from 'libs/shared/components/video-owner-text/VideoOwnerText';\nimport { FixedWidgetItemProps } from 'libs/shared/components/widgets/items/FixedWidgetItemProps';\nimport { ImageSize } from 'libs/shared/enums/Images';\nimport { ThumbnailTextPosition } from 'libs/shared/enums/ThumbnailTextPosition';\nimport { Clip, Video } from 'libs/shared/interfaces';\n\nimport styles from './clip-widget-item.scss';\n\nexport interface ClipWidgetItemProps extends FixedWidgetItemProps<Clip> {\n video: Video;\n imageCdnUrl: string;\n}\n\nexport const ClipWidgetItem = React.memo(function(props: ClipWidgetItemProps): JSX.Element {\n return (\n <div className={`flex-shrink-0 px-1 ${styles.item}`}>\n <div className='row m-0 border rounded p-2 h-100'>\n <div className='col-6 p-0'>\n <VideoThumbnail\n video={props.data}\n appLink={props.getAppLink(props.data)}\n type='cosmetic'\n imageOptions={{ size: ImageSize.Small }}\n textPosition={ThumbnailTextPosition.Independent}\n analyticsOptions={{ location: LocationContext.SlidingListItem }}\n preload\n />\n </div>\n\n <div className='col-6 p-0'>\n <div className='ps-2'>\n <AppLink appLink={props.getAppLink(props.data)}>\n <h3 className='h6 mb-1'><span className='clamp-2'>{props.data.name}</span></h3>\n </AppLink>\n\n <VideoOwnerText\n owner={props.data.owner}\n isClickViewCurated={props.data._isClickViewCurated?.value}\n imageCdnUrl={props.imageCdnUrl}\n />\n </div>\n </div>\n </div>\n </div>\n );\n});","// extracted by mini-css-extract-plugin\nexport default {\"item\":\"hzP5u\"};","import React from 'react';\n\nimport { Core } from 'libs/common/core';\n\nimport { LocationContext } from 'libs/analytics/interfaces';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { VideoThumbnail } from 'libs/shared/components/thumbnails/video/VideoThumbnail';\nimport { VideoOwnerText } from 'libs/shared/components/video-owner-text/VideoOwnerText';\nimport { FixedWidgetItemProps } from 'libs/shared/components/widgets/items/FixedWidgetItemProps';\nimport { ImageSize } from 'libs/shared/enums/Images';\nimport { ThumbnailTextPosition } from 'libs/shared/enums/ThumbnailTextPosition';\nimport { Clip, InteractiveMetadata, Video } from 'libs/shared/interfaces';\n\nimport styles from './interactive-widget-item.scss';\n\nconst namespace = 'shared.interactiveWidgetItem';\n\nexport interface InteractiveWidgetItemProps extends FixedWidgetItemProps<InteractiveMetadata> {\n video: Video | Clip;\n questionsAppLink: Core.AppLink;\n imageCdnUrl: string;\n}\n\nexport const InteractiveWidgetItem = React.memo(function(props: InteractiveWidgetItemProps): JSX.Element {\n const questionsAppLink: Core.AppLink = {\n ...props.questionsAppLink,\n args: [props.data.id]\n };\n\n return (\n <div className={`flex-shrink-0 px-1 ${styles.item}`}>\n <div className='row m-0 border rounded p-2 h-100'>\n <div className='col-6 p-0'>\n <VideoThumbnail\n video={props.data}\n appLink={props.getAppLink(props.data)}\n type='cosmetic'\n imageOptions={{ size: ImageSize.Small }}\n textPosition={ThumbnailTextPosition.Independent}\n preload\n analyticsOptions={{ location: LocationContext.SlidingListItem }}\n />\n </div>\n\n <div className='col-6 p-0'>\n <div className='ps-2'>\n <AppLink appLink={props.getAppLink(props.data)}>\n <h3 className='h6 mb-1'><span className='clamp-2'>{props.data.name}</span></h3>\n </AppLink>\n\n <VideoOwnerText\n owner={props.data.owner}\n isClickViewCurated={props.data._isClickViewCurated?.value}\n imageCdnUrl={props.imageCdnUrl}\n />\n\n <AppLink className='info-link' appLink={questionsAppLink}>\n <Text namespace={namespace} phrase='previewQuestions' />\n </AppLink>\n </div>\n </div>\n </div>\n </div>\n );\n});\n","// extracted by mini-css-extract-plugin\nexport default {\"item\":\"rXatl\"};","// extracted by mini-css-extract-plugin\nexport default {\"imageStyle\":\"I9E5O\",\"item\":\"tqUFn\",\"dashboard\":\"o7j7p\",\"playPage\":\"V2RwX\",\"aspectRatio\":\"OnJDH\",\"outerContainer\":\"CIFy7\",\"innerContainer\":\"oUZPD\",\"actions\":\"jzGAm\",\"titleBelow\":\"Cpjs3\",\"thumbnailContainer\":\"EDiGi\",\"titleAbove\":\"e9ejn\",\"teacherPack\":\"_tdVE\",\"text\":\"g5NWS\",\"hoverState\":\"xRYhX\",\"atomGuide\":\"X39wU\",\"studentActivity\":\"X9pMl\",\"additionalMaterials\":\"qRVUo\",\"userUploaded\":\"_18JaV\",\"imageTypeResource\":\"KYtZL\",\"download\":\"fbb_e\"};","import React from 'react';\n\nimport { AppLinkHelper } from 'libs/common/backbone/core';\n\nimport { AnalyticsHelper } from 'libs/analytics/AnalyticsHelper';\nimport { AnalyticsOptions, EntityType, UserAction } from 'libs/analytics/interfaces';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { DivButton } from 'libs/shared/components/div-button/DivButton';\nimport { ResourceThumbnail } from 'libs/shared/components/resource-thumbnail/ResourceThumbnail';\nimport { SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\nimport { TitleSubText } from 'libs/shared/components/title-sub-text/TitleSubText';\nimport { Tooltip } from 'libs/shared/components/tooltip/Tooltip';\nimport { TypeBadge } from 'libs/shared/components/type-badge/TypeBadge';\nimport { FixedWidgetItemProps } from 'libs/shared/components/widgets/items/FixedWidgetItemProps';\nimport { SeoConstants } from 'libs/shared/constants/SeoConstants';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { ResourceFileType } from 'libs/shared/enums/ResourceFileType';\nimport { useBreakpoints } from 'libs/shared/hooks/useBreakpoints';\nimport { Link, Resource, ResourceType } from 'libs/shared/interfaces';\nimport { MasterTypeHelper } from 'libs/shared/utils/MasterTypeHelper';\nimport { ResourceHelper } from 'libs/shared/utils/ResourceHelper';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport styles from './resource-widget-item.scss';\n\nfunction getColour(resourceType?: ResourceType): string {\n switch (resourceType) {\n case 'atom-guide':\n return styles.atomGuide;\n case 'student-activity':\n return styles.studentActivity;\n case 'teacher-pack':\n return styles.teacherPack;\n case 'additional-materials':\n return styles.additionalMaterials;\n default:\n return styles.userUploaded;\n }\n}\n\nfunction useCanPreview(data: Resource | Link, actionBehaviour: 'normal' | 'public'): boolean {\n const breakpoints = useBreakpoints();\n\n /**\n * When viewing publicly, the resource applink will\n * prompt the user to sign-up (not preview the underlying resource)\n */\n if (actionBehaviour === 'public')\n return true;\n\n if (breakpoints.xs || breakpoints.sm)\n return false;\n\n if (data.type !== 'resource')\n return false;\n \n // Require metadata\n if (!('metadata' in data))\n return false;\n\n // We can preview images\n if (data.metadata.type === ResourceFileType.Image)\n return true;\n\n // If we are a pdf and have a url\n if (data.metadata.type === ResourceFileType.Pdf)\n return !!data.url;\n\n // If we have a pdf assoc\n return !!data.pdf?.url;\n}\n\ninterface ResourceTheme {\n containerClass?: string;\n thumbnailContainerClass?: string;\n}\n\nexport interface ResourceTileProps {\n data: Resource | Link;\n imageCdnUrl: string;\n imageErrorFallbackUrl?: string;\n theme?: ResourceTheme;\n\n titlePosition: 'above' | 'below' | 'none';\n hideTypeBadge?: boolean;\n onClickDownload?: (e: React.MouseEvent<HTMLElement>, resource: Resource) => void;\n applyHoverState?: boolean;\n preloadImage: boolean;\n actionBehaviour?: 'normal' | 'public';\n}\n\nResourceTile.defaultProps = {\n preloadImage: true,\n actionBehaviour: 'normal'\n};\n\n/**\n * This component intentionally doesn't contain an appLink/download link\n * so that the resource download behaviour can be handled differently depending\n * on where this is rendered (e.g. primary play page vs embedded player)\n */\nexport function ResourceTile(props: ResourceTileProps): JSX.Element {\n let metadata = null;\n\n if ('metadata' in props.data) {\n metadata = props.data.metadata;\n }\n\n const isResource = MasterTypeHelper.isType<Resource>(props.data, MasterType.Resource);\n\n function getInnerContainerClass(resourceType: ResourceType): string {\n let baseClass = `\n d-flex flex-column align-items-center justify-content-end rounded-3 h-100\n position-relative ${getColour(resourceType)} ${styles.innerContainer}`;\n\n if (props.theme?.containerClass) {\n baseClass += ` ${props.theme.containerClass}`;\n } else {\n baseClass += ` pt-3 px-3`;\n }\n\n if (props.applyHoverState) {\n baseClass += ` ${styles.hoverState}`;\n }\n\n return baseClass;\n }\n\n return (\n <>\n <div className={styles.aspectRatio}>\n <div className={styles.outerContainer}>\n <div className={getInnerContainerClass(metadata?.resourceType)}>\n {props.titlePosition === 'above' && (\n <Tooltip title={props.data.name}>\n <h3 className={`text-center text-break h5 mb-3 ${styles.text}`}>\n <span className='clamp-1'>{props.data.name}</span>\n </h3>\n </Tooltip>\n )}\n\n <div className={`\n ${props.theme?.thumbnailContainerClass ?? ''} w-75 overflow-hidden \n ${styles.thumbnailContainer} ${props.titlePosition === 'above' ? styles.titleAbove : ''} \n ${styles.imageStyle}\n `}>\n <ResourceThumbnail\n resource={props.data}\n imageCdnUrl={props.imageCdnUrl}\n imageErrorFallbackUrl={props.imageErrorFallbackUrl}\n preloadImage={props.preloadImage}\n />\n </div>\n\n {isResource && props.onClickDownload && props.actionBehaviour === 'normal' && (\n <div className={styles.actions}>\n <DivButton\n onClick={e => props.onClickDownload(e, props.data as Resource)}\n className={`${styles.download} d-flex align-items-center justify-content-center`}\n >\n <SvgContainer svgName={cvSvgLibrary.Download} />\n </DivButton>\n </div>\n )}\n\n {!props.hideTypeBadge && isResource && (\n <TypeBadge typeId={MasterType.Resource} />\n )}\n </div>\n </div>\n </div>\n {props.titlePosition === 'below' && (\n <div className={`mt-1 ${styles.titleBelow}`}>\n {(\n MasterTypeHelper.isType<Resource>(props.data, MasterType.Resource) &&\n !!props.data?.metadata?.resourceType\n ) && (\n <TitleSubText>\n {ResourceHelper.getResourceTypeName(props.data.metadata.resourceType)}\n </TitleSubText>\n )}\n <h3 className='h6 clamp-2'>\n {props.data.name}\n </h3>\n </div>\n )}\n </>\n );\n}\n\nexport interface ResourceWidgetItemProps extends ResourceTileProps, FixedWidgetItemProps<Resource | Link> {\n location: 'play-page' | 'dashboard';\n}\n\nexport const ResourceWidgetItem = React.memo(function(props: ResourceWidgetItemProps): JSX.Element {\n // Mobile is not allowed to preview\n const canPreview = useCanPreview(props.data, props.actionBehaviour);\n\n function getLocationClass(): string {\n if (props.location === 'play-page')\n return styles.playPage;\n\n return styles.dashboard;\n }\n\n const analyticsData = { ...props.analyticsData, ...props.data };\n\n const analyticsOptions: AnalyticsOptions = {\n ...props.analyticsOptions,\n actionType: UserAction.Click,\n entity: props.data.typeId === MasterType.Resource ? EntityType.Resource : EntityType.Link\n };\n\n function logAction(): void {\n AnalyticsHelper.logUserAction(analyticsData, analyticsOptions);\n }\n\n const tileProps: ResourceTileProps = {\n ...props,\n // Apply the hover state if we have a url or the resource can be previewed\n applyHoverState: canPreview || !!props.data.url\n };\n\n return (\n <div className={`px-1 flex-shrink-0 ${styles.item} ${getLocationClass()} ${SeoConstants.RESOURCE_ITEM_SELECTOR}`}>\n {(() => {\n const className = `d-block no-decoration`;\n\n // Handle resource links\n if (props.data.type === 'link') {\n return (\n <a href={props.data.url} target='_blank' className={className} onClick={logAction}>\n <ResourceTile {...tileProps} />\n </a>\n );\n }\n\n if (canPreview) {\n /**\n * Previewing resources in a public context will always display the sign-up popup, so there \n * will never be a full URL. For SEO purposes, we deliberately use a span over an anchor\n * to ensure we're not creating self-referencing elements that will burn crawl budget.\n */\n if (props.actionBehaviour === 'public') {\n return (\n <div className={`${className} cursor-pointer d-inline`} onClick={() => {\n logAction();\n AppLinkHelper.trigger(props.getAppLink(props.data));\n }}>\n <ResourceTile {...tileProps} />\n </div>\n );\n }\n\n return (\n <AppLink\n appLink={props.getAppLink(props.data)}\n className={className}\n analyticsData={analyticsData}\n analyticsOptions={analyticsOptions}\n >\n <ResourceTile {...tileProps} />\n </AppLink>\n );\n }\n\n // URLs cannot be previewed\n if (props.data.url) {\n return (\n <a href={props.data.url} className={className} onClick={logAction}>\n <ResourceTile {...tileProps} />\n </a>\n );\n }\n\n // Theres no url, so don't render an <a>\n return (\n <div className={className}>\n <ResourceTile {...tileProps} />\n </div>\n );\n })()}\n </div>\n );\n});","import { HttpVerbs } from 'libs/common/backbone/enums/HttpVerbs';\nimport { Xhr } from 'libs/common/backbone/interfaces';\nimport { UrlHelper } from 'libs/common/backbone/utils/UrlHelper';\nimport { Flight } from 'libs/common/flight';\nimport { HashObject } from 'libs/common/react/interfaces/HashObject';\n\nimport { Theme } from 'libs/shared/interfaces';\n\nimport { ThemeType } from '../enums/ThemeType';\n\nexport const ThemeRequests = {\n theme(id: string): Flight.Request {\n return {\n url: `/api/domain/v1/themes/${id}`,\n key: `themes:${id}`\n };\n },\n\n themeImages(name: string, type: ThemeType): Flight.Request {\n return {\n url: UrlHelper.urlBuilder('/api/domain/v1/themes', { name, type }),\n key: `themes:${name}:${type}`\n };\n },\n\n themes(type?: string): Flight.Request {\n let url = '/api/domain/v1/themes';\n let key = 'themes';\n\n if (type) {\n url += `?type=${type}`;\n key += `:type:${type}`;\n }\n\n return {\n url,\n key,\n formatData: (themes: Theme[]) => {\n return themes.sort((a, b) => a.name.localeCompare(b.name));\n }\n };\n },\n\n createTheme(\n data: Theme,\n success?: (data: HashObject) => void,\n error?: (xhr: Xhr) => void,\n always?: () => void\n ): Flight.Request {\n return {\n url: '/api/domain/v1/themes',\n key: 'theme',\n data,\n type: HttpVerbs.POST,\n invalidationKeys: 'themes',\n success,\n error,\n always\n };\n },\n\n updateTheme(\n id: string,\n data: Theme,\n success?: (data: HashObject) => void,\n error?: (xhr: Xhr) => void,\n always?: () => void\n ): Flight.Request {\n return {\n url: `/api/domain/v1/themes/${id}`,\n key: `update:theme:${id}`,\n data,\n type: HttpVerbs.PUT,\n success,\n error,\n always\n };\n },\n\n deleteTheme(\n id: string,\n success?: (data: HashObject) => void,\n error?: (xhr: Xhr) => void,\n always?: () => void\n ): Flight.Request {\n return {\n url: `/api/domain/v1/themes/${id}`,\n key: `delete:theme:${id}`,\n type: HttpVerbs.DELETE,\n invalidationKeys: 'themes',\n success,\n error,\n always\n };\n }\n};","// extracted by mini-css-extract-plugin\nexport default {\"container\":\"BImYH\",\"background\":\"aAY0j\",\"topLeft\":\"azcIT\",\"bottomLeft\":\"mBkCx\",\"topRight\":\"tcN5n\",\"bottomRight\":\"sHsOr\",\"detailsBtn\":\"jyxT7\",\"content\":\"PeWbM\",\"highlightPoi\":\"un8Q0\"};","\"use client\";\n\nimport classNames from 'classnames';\nimport * as React from 'react';\nimport { useBootstrapPrefix, useBootstrapBreakpoints, useBootstrapMinBreakpoint } from './ThemeProvider';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst Row = /*#__PURE__*/React.forwardRef(({\n bsPrefix,\n className,\n // Need to define the default \"as\" during prop destructuring to be compatible with styled-components github.com/react-bootstrap/react-bootstrap/issues/3595\n as: Component = 'div',\n ...props\n}, ref) => {\n const decoratedBsPrefix = useBootstrapPrefix(bsPrefix, 'row');\n const breakpoints = useBootstrapBreakpoints();\n const minBreakpoint = useBootstrapMinBreakpoint();\n const sizePrefix = `${decoratedBsPrefix}-cols`;\n const classes = [];\n breakpoints.forEach(brkPoint => {\n const propValue = props[brkPoint];\n delete props[brkPoint];\n let cols;\n if (propValue != null && typeof propValue === 'object') {\n ({\n cols\n } = propValue);\n } else {\n cols = propValue;\n }\n const infix = brkPoint !== minBreakpoint ? `-${brkPoint}` : '';\n if (cols != null) classes.push(`${sizePrefix}${infix}-${cols}`);\n });\n return /*#__PURE__*/_jsx(Component, {\n ref: ref,\n ...props,\n className: classNames(className, decoratedBsPrefix, ...classes)\n });\n});\nRow.displayName = 'Row';\nexport default Row;"],"names":["window","module","exports","e","t","r","n","o","i","l","call","m","c","d","Object","defineProperty","enumerable","get","Symbol","toStringTag","value","__esModule","create","bind","default","prototype","hasOwnProperty","p","s","Disable","Enable","CookiePolicy","renderButtons","close","launchAsync","addEventListener","document","createElement","src","head","appendChild","af","am","ar","as","az","be","bg","bn","bs","ca","cs","da","de","el","en","es","et","eu","fa","fi","fil","fr","gd","gl","gu","ha","he","hi","hr","hu","hy","id","ig","is","it","ja","ka","kk","km","kn","ko","kok","ky","lb","lo","lt","lv","mi","mk","ml","mn","mr","ms","mt","ne","nl","no","nso","or","pa","pl","prs","pt","quc","quz","ro","ru","rw","sd","si","sk","sl","sq","sv","sw","ta","te","th","ti","tk","tn","tr","tt","uk","ur","uz","vi","wo","xh","yo","zh","zu","getAttribute","style","height","width","verticalAlign","marginTop","alt","marginLeft","a","textContent","toLowerCase","substring","lastIndexOf","innerHTML","slice","getElementsByClassName","elements","u","length","setAttribute","this","__assign","assign","arguments","apply","RegExp","test","ErrorCode","TokenExpired","Throttled","ServerError","InvalidSubdomain","Promise","chunks","customDomain","Date","now","uiZIndex","timeout","useWebview","allowFullscreen","hideExitButton","cookiePolicy","v","f","h","clearTimeout","b","body","contains","removeChild","removeEventListener","y","parentNode","g","onExit","data","cogSvcsAccessToken","cogSvcsSubdomain","request","launchToPostMessageSentDurationInMs","contentWindow","postMessage","JSON","stringify","messageType","messageValue","startsWith","parse","success","container","sessionId","code","errorCode","message","setTimeout","Timeout","cssText","k","uiLang","BadArgument","isValidSubdomain","namespace","VideoAtAGlance","props","canViewGlance","video","theme","markdownHTML","pointsOfInterest","suppressInteractivity","glanceContentRef","themeColours","colours","primary","secondary","showDescriptionLink","onClickShowDescription","showCurriculumsLink","onClickShowCurriculumLinks","className","backgroundColor","phrase","onClick","ref","event","setStartTime","dangerouslySetInnerHTML","__html","tags","getTagAppLink","themeImages","images","filter","key","map","segment","url","size","fileId","backgroundImage","POI_REGEX","POI_ID_REGEX","POI_TEXT_REGEX","POI_TEXT_BRACES_REGEX","onClickMarkDown","preventDefault","href","target","includes","poiId","split","poi","find","toString","startTime","useGlanceMarkdown","hasGlanceData","useState","setMarkdownHTML","useEffect","content","glance","replace","substr","idMatch","match","poiTextMatch","timestamp","poiText","description","injectPointOfInterestData","join","getGlanceContent","useHighlightPointOfInterest","shouldHighlight","useRef","onGlancePoiMouseOver","onGlancePoiMouseLeave","getAllPoiEls","current","querySelectorAll","pointOfInterest","querySelector","getPoiEl","classList","add","forEach","remove","poiEls","glanceTheme","format","getPhrase","LanguageService","CommaList","label","items","commaSeperated","name","DetailsSection","VideoHelper","parentVideo","Text","productionYear","options","year","smartCount","productionCompanies","distributors","producers","directors","dateBroadcast","date","DateHelper","channel","currentUser","isAuthenticated","dateCreated","_isClickViewCurated","showDateUploaded","VideoDetailsWithScrollbar","maxHeight","showDescription","showDetails","canClose","onClickClose","showCurriculumLinks","autoHeight","autoHeightMax","ImmersiveReader","text","title","onLaunch","onLaunchImmersiveReader","onExitImmersiveReader","analyticsOptions","location","entity","actionType","descriptor","analyticsData","type","LinkifyHelper","nl2br","TagList","hideTags","getTags","TagHelper","DivButton","VideoDetailsPartial","VideoOwnerText","owner","isClickViewCurated","SvgContainer2","UserHelper","Avatar","imageCdnUrl","initials","surname","imageUrl","avatar","ClipWidgetItem","VideoThumbnail","appLink","getAppLink","imageOptions","textPosition","ThumbnailTextPosition","preload","AppLink","InteractiveWidgetItem","questionsAppLink","args","ResourceTile","metadata","isResource","MasterTypeHelper","MasterType","resourceType","baseClass","getColour","containerClass","applyHoverState","getInnerContainerClass","titlePosition","Tooltip","thumbnailContainerClass","ResourceThumbnail","resource","imageErrorFallbackUrl","preloadImage","onClickDownload","actionBehaviour","SvgContainer","svgName","hideTypeBadge","TypeBadge","typeId","TitleSubText","ResourceHelper","defaultProps","ResourceWidgetItem","breakpoints","canPreview","useBreakpoints","xs","sm","ResourceFileType","pdf","logAction","AnalyticsHelper","tileProps","SeoConstants","ThemeRequests","themes","formatData","sort","localeCompare","createTheme","error","always","invalidationKeys","updateTheme","deleteTheme","Row","bsPrefix","Component","decoratedBsPrefix","minBreakpoint","sizePrefix","classes","brkPoint","propValue","cols","infix","push","displayName"],"sourceRoot":""}
@@ -1,2 +0,0 @@
1
- "use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[2142],{50690:(e,t,n)=>{n.d(t,{b:()=>r});var a=n(12788),r={renderInPortalIfExists:function(e,t){return t?(0,a.createPortal)(e,t):e}}},49935:(e,t,n)=>{n.d(t,{Oo:()=>f,b2:()=>g});var a=n(32735),r=n(23481),i=n(36848),o=n(86764),l=n(3747),c=n(5859),s=n(35223),u=n(83914);function d(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var a,r,i,o,l=[],c=!0,s=!1;try{if(i=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;c=!1}else for(;!(c=(a=i.call(n)).done)&&(l.push(a.value),l.length!==t);c=!0);}catch(e){s=!0,r=e}finally{try{if(!c&&null!=n.return&&(o=n.return(),Object(o)!==o))return}finally{if(s)throw r}}return l}}(e,t)||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)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function 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=r.T.encloseNamespace("shared.breadcrumbComponent"),v=a.forwardRef((function(e,t){var n=e.breadcrumb,r=n.name,o=n.appLink,l=n.active,c=e.withBackIcon;return a.createElement("li",{className:"breadcrumb-item".concat(l?" active":"")},l?a.createElement("strong",null,r):a.createElement(i.F,{appLink:o,ref:t},c&&a.createElement(u.x,{svgName:s.vn.ChevronLeft,size:u.S.Small}),a.createElement("span",{className:c?"ms-2":""},r)))})),f=function(e){var t=e.breadcrumbs,n=(0,l.a)(o.r.XS),r=(null==t?void 0:t.length)||0,i=d(a.useState(!1),2),c=i[0],s=i[1],u=d(a.useState(!1),2),m=u[0],f=u[1],g=a.useRef();if(a.useEffect((function(){var e,n=null!==(e=null==t?void 0:t.reduce((function(e,t){return e+t.name.length}),0))&&void 0!==e?e:0;r>4&&n>64&&s(!0)}),[null==t?void 0:t.length]),a.useLayoutEffect((function(){var e;m&&(null===(e=g.current)||void 0===e||e.focus())}),[g.current,m]),!r||n&&r<2)return a.createElement(a.Fragment,null);if(n)return a.createElement("nav",{"aria-label":"breadcrumb"},a.createElement("ol",{className:"breadcrumb m-0 p-0"},a.createElement(v,{breadcrumb:t[r-2],withBackIcon:!0})));var h=a.createElement(v,{breadcrumb:t[0]}),y=r>2?a.createElement(v,{breadcrumb:t[1]}):a.createElement(a.Fragment,null),b=r>3?a.createElement(v,{breadcrumb:t[r-2]}):a.createElement(a.Fragment,null),E=r>1?a.createElement(v,{breadcrumb:t[r-1]}):a.createElement(a.Fragment,null),I=t.slice(2,r-2);return a.createElement("nav",{"aria-label":"breadcrumb"},a.createElement("ol",{className:"breadcrumb m-0 p-0"},h,y,c?a.createElement("li",{className:"breadcrumb-item"},a.createElement("button",{className:"btn-link",onClick:function(){s(!1),f(!0)},"aria-label":p("expand")},"...")):I.map((function(e,t){return a.createElement(v,{key:t,breadcrumb:e,ref:0===t?g:null})})),b,E))},g=a.memo((function(e){var t=e.numItems,n=void 0===t?3:t;return(0,l.a)(o.r.XS)?a.createElement("div",{className:"partial-loading-background",style:{height:"1.3125rem",width:"6rem"}}):a.createElement("nav",{"aria-label":"breadcrumb"},a.createElement("ol",{className:"breadcrumb m-0 p-0"},c.u.getPartialLoadingItems({numItems:n}).map((function(e,t){var n=e.width;return a.createElement("li",{key:t,className:"breadcrumb-item"},a.createElement("span",{className:"d-inline-block partial-loading-background",style:{width:n},dangerouslySetInnerHTML:{__html:"&nbsp"}}))}))))}))},72553:(e,t,n)=>{n.d(t,{j:()=>d});var a=n(32735),r=n(42029),i=n(83345),o=n(49439);const l={copyrightDisclaimer:"z8YoI",overlayContainer:"eJDbJ"};function c(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,a=Array(t);n<t;n++)a[n]=e[n];return a}var s="shared.copyrightDisclaimer",u=150;function d(e){var t,n,d,m=(n=(0,o.L)({}),d=2,function(e){if(Array.isArray(e))return e}(n)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var a,r,i,o,l=[],c=!0,s=!1;try{if(i=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;c=!1}else for(;!(c=(a=i.call(n)).done)&&(l.push(a.value),l.length!==t);c=!0);}catch(e){s=!0,r=e}finally{try{if(!c&&null!=n.return&&(o=n.return(),Object(o)!==o))return}finally{if(s)throw r}}return l}}(n,d)||function(e,t){if(e){if("string"==typeof e)return c(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)?c(e,t):void 0}}(n,d)||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.")}()),p=m[0],v=m[1];return a.createElement("div",{ref:p,className:e.className},a.createElement("p",{className:"".concat(l.copyrightDisclaimer," ").concat(null!==(t=e.phraseClassName)&&void 0!==t?t:"mb-1")},a.createElement(i.x,{namespace:s,phrase:"copyrightDisclaimer"})),a.createElement(r.Z,{target:p.current,show:v,placement:e.overflowPlacement&&function(){var e;return document.documentElement.clientHeight-(null===(e=p.current)||void 0===e?void 0:e.getBoundingClientRect().bottom)<u}()?e.overflowPlacement:e.placement},a.createElement("div",{className:"".concat(l.overlayContainer," mw-100 bg-white border rounded-3 p-2")},a.createElement("p",null,a.createElement(i.x,{namespace:s,phrase:"warning"})),a.createElement("p",{className:"fw-semibold mb-0"},a.createElement(i.x,{namespace:s,phrase:"sharing"})))))}},5640:(e,t,n)=>{n.d(t,{O:()=>y});var a=n(32735),r=n(23481),i=n(28400),o=n(11518),l=n(58704),c=n(59598),s=n(31908),u=n(14070),d=n(97291),m=n(22843),p=n(84591),v=n(68626),f=n(80143),g=a.memo((function(e){var t,n=e.data,r=e.thumbnailSize,i=e.preloadImage,o=e.getAppLink,l=(0,f.n)(null===(t=n.subjectPresentationAudiences)||void 0===t?void 0:t.data,e.audiences);return a.createElement("div",{className:"flex-shrink-0 px-1 col-6 col-sm-4"},a.createElement(p.u,{type:"static",textPosition:v.z.Independent,video:n,appLink:o(n),imageOptions:{size:r},preload:i,analyticsData:e.analyticsData,analyticsOptions:e.analyticsOptions,setFavourite:e.setFavourite,canFavourite:e.canFavourite,imageCdnUrl:e.imageCdnUrl,audience:l,hideDuration:!1,isPlugin:e.isPlugin,showOwner:e.showOwner}),a.createElement("div",{className:"mt-2"},a.createElement(m.h,Object.assign({},e,{video:n,appLink:e.getAppLink(n)}))))})),h="shared.playPageClipsV2";function y(e){var t;if(!e.canViewClips||!(null===(t=e.clips)||void 0===t?void 0:t.length))return a.createElement(a.Fragment,null);var n=s.M.isVideo(e.video),m=r.T.getPhrase(h,n?"clips":"otherClips",{count:e.clips.length});return a.createElement("section",{className:"play-page-section",id:c.K.Clips,ref:function(t){var n;t&&(null===(n=e.headingRef)||void 0===n?void 0:n.current)&&e.headingRef.current.set(c.K.Clips,t)}},a.createElement(o.kM,{name:m,contents:l.z.ClipsV2,collection:e.clips,prefetched:!0,getChildAppLink:function(e){return{application:d.O.CLIPS,action:u.e.Clips.PLAY_CLIP,args:[e.id,i.m.slugify(e.name)]}},appLink:s.M.isVideo(e.video)?{action:u.e.Videos.VIDEO_CLIPS,application:d.O.VIDEOS,args:[e.video.id,i.m.slugify(e.video.name)]}:{action:u.e.Clips.CLIP_CLIPS,application:d.O.CLIPS,args:[e.video.id,i.m.slugify(e.video.name)]},childComponent:g,extraChildComponentProps:{yearGroups:e.yearGroups,audiences:e.audiences,imageCdnUrl:e.imageCdnUrl,setFavourite:e.setFavourite,canFavourite:e.canFavourite,isPlugin:e.isPlugin,showOwner:!0},analyticsData:e.analyticsData}))}},8887:(e,t,n)=>{n.d(t,{a:()=>A});var a=n(32735),r=n(42648),i=n(23481),o=n(110),l=n(65858),c=n(72553),s=n(25723),u=n(78259),d=n(11607),m=n(83345),p=n(35348);const v={container:"G5zMm",collapsed:"kkd1X",seeMore:"DS4QF"};function f(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 g="shared.videoDetailsV2";function h(e){var t,n,r=(t=a.useState(!1),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,l=[],c=!0,s=!1;try{if(i=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;c=!1}else for(;!(c=(a=i.call(n)).done)&&(l.push(a.value),l.length!==t);c=!0);}catch(e){s=!0,r=e}finally{try{if(!c&&null!=n.return&&(o=n.return(),Object(o)!==o))return}finally{if(s)throw r}}return l}}(t,n)||function(e,t){if(e){if("string"==typeof e)return f(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)?f(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.")}()),i=r[0],o=r[1],l=(0,p.x)(),c=l.containerRef,s=l.showButton;return a.createElement("div",{className:"".concat(v.container," ").concat(i?"":v.collapsed)},!i&&s&&a.createElement(d.L,{onClick:function(){return o(!0)},className:"ms-1 text-info hover-text-underline ".concat(v.seeMore)},a.createElement(m.x,{namespace:g,phrase:"seeMore"})),a.createElement("p",{ref:c,className:"mb-0 ".concat(i?"d-inline":""),dangerouslySetInnerHTML:{__html:u.O.linkifyText(e.video.description,{nl2br:!0})}}),i&&a.createElement(d.L,{onClick:function(){return o(!1)},className:"ms-1 hover-text-underline d-inline text-info"},a.createElement(m.x,{namespace:g,phrase:"seeLess"})))}var y=n(87311),b=n(91743),E=n(8730),I=n(40178),C=n(44829),w=n(59598),N=n(31908);const k={descriptionBorder:"YUC62"};var S="shared.videoDetailsV2",x=i.T.encloseNamespace(S);function O(e){var t=e.label,n=e.items,r=e.className;if(!(n&&n.data&&n.data.length))return a.createElement(a.Fragment,null);var i=n.data.map((function(e){return e.name})).join(", ");return a.createElement("div",{className:r},t,": ",i)}function T(e){var t,n,r,i,l,c,s,u,d=e.video;if(!N.M.isVideo(d)&&!N.M.isClip(d))return a.createElement(a.Fragment,null);var p=N.M.getParentVideo(d);return a.createElement("div",{className:d.description?"col-md-5 ps-md-3 pt-3 pt-md-0":"col-12"},a.createElement("h2",{className:"h6 mb-1"},a.createElement(m.x,{phrase:"details"})),!!p.productionYear&&a.createElement("div",{className:"mb-1"},a.createElement(m.x,{phrase:"productionYear",options:{year:p.productionYear}})),a.createElement(O,{label:x("productionCompanies",{smartCount:null===(n=null===(t=p.productionCompanies)||void 0===t?void 0:t.data)||void 0===n?void 0:n.length}),items:p.productionCompanies,className:"mb-1"}),a.createElement(O,{label:x("distributors",{smartCount:null===(i=null===(r=p.distributors)||void 0===r?void 0:r.data)||void 0===i?void 0:i.length}),items:p.distributors,className:"mb-1"}),a.createElement(O,{label:x("producers",{smartCount:null===(c=null===(l=p.producers)||void 0===l?void 0:l.data)||void 0===c?void 0:c.length}),items:p.producers,className:"mb-1"}),a.createElement(O,{label:x("directors",{smartCount:null===(u=null===(s=p.directors)||void 0===s?void 0:s.data)||void 0===u?void 0:u.length}),items:p.directors,className:"mb-1"}),!!p.dateBroadcast&&a.createElement("div",{className:"mb-1"},a.createElement(m.x,{phrase:"dateBroadcast",options:{date:o.O.format(p.dateBroadcast,"DD/MM/YYYY")}})),!!p.channel&&a.createElement("div",{className:"mb-1"},a.createElement(m.x,{phrase:"channel",options:{channel:p.channel.name}})),function(){var t,n;return!!(null===(t=e.currentUser)||void 0===t?void 0:t.isAuthenticated)&&!!d.dateCreated&&!(null===(n=d._isClickViewCurated)||void 0===n?void 0:n.value)}()&&a.createElement("div",{className:"mb-1"},a.createElement(m.x,{phrase:"dateUploaded",options:{date:o.O.format(d.dateCreated,"DD/MM/YYYY")}})))}function A(e){var t,n=e.video,i=e.maxHeight,o=void 0===i?I.x:i,u=N.M.getParentVideo(n),d=!!e.video.description,p=(0,E._)(e.video)||!!u.productionYear||!!u.dateBroadcast||!!u.channel||!(!n.dateCreated||(null===(t=n._isClickViewCurated)||void 0===t?void 0:t.value));if(!d&&!p)return a.createElement(a.Fragment,null);var v=function(){var t,n,a,r;return e.hideTags||N.M.isInteractive(e.video)||!(null===(n=null===(t=e.video.tags)||void 0===t?void 0:t.data)||void 0===n?void 0:n.length)?null:null===(r=null===(a=e.video.tags)||void 0===a?void 0:a.data)||void 0===r?void 0:r.filter((function(e){return e.tagType===C.Q.Normal}))}();return a.createElement(m.D.Provider,{value:S},a.createElement("section",{id:w.K.VideoDetails,ref:function(t){var n;t&&(null===(n=e.headingRef)||void 0===n?void 0:n.current)&&e.headingRef.current.set(w.K.VideoDetails,t)},className:"play-page-section"},e.showHeading&&a.createElement("h2",{className:"h4 curated-widget-header"},a.createElement(m.x,{phrase:"heading"})),a.createElement("div",{className:"rounded border p-3 position-relative"},a.createElement(r.$B,{autoHeight:!0,autoHeightMax:o,hideTracksWhenNotNeeded:!0},a.createElement("div",{className:"row g-0"},d&&a.createElement("div",{className:p?"".concat(k.descriptionBorder," pe-3 col-md-7"):"col-12"},a.createElement("div",{className:"d-flex align-items-center"},a.createElement("h2",{className:"h6 mb-1"},a.createElement(m.x,{phrase:"description"})),a.createElement(s.m,{text:n.description,title:n.name,className:"ps-2",onLaunch:e.onLaunchImmersiveReader,onExit:e.onExitImmersiveReader,analyticsOptions:{location:l.LZ.PlayPage,entity:l.py.Video,actionType:l.Vw.Click,descriptor:l._S.LaunchImmersiveReader},analyticsData:{id:n.id,type:"description"}})),a.createElement(h,{video:e.video})),p&&a.createElement(T,Object.assign({},e))),!!(null==v?void 0:v.length)&&a.createElement("div",{className:"mt-3"},a.createElement("h2",{className:"h6 mb-1"},a.createElement(m.x,{phrase:"normalTags"})),a.createElement(b.P,Object.assign({tags:v},y.G.getTagActionProps(e.getTagAppLink,null,e.suppressInteractivity),{className:"mt-1"}))),N.M.isBroadcast(e.video)&&a.createElement(c.j,{placement:"bottom-start",className:"d-flex justify-content-start mt-2",phraseClassName:"mb-0"})))))}},51184:(e,t,n)=>{n.d(t,{NE:()=>u,RH:()=>m,Wp:()=>d});var a=n(32735),r=n(16367),i=n(34468),o=n(73758),l=n(63847);function c(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,a=Array(t);n<t;n++)a[n]=e[n];return a}var s=/\[\]\(cv:\/\/poi\?id=\d+\)\n*/g;function u(e,t){var n,i,o,l=(i=(0,a.useState)(""),o=2,function(e){if(Array.isArray(e))return e}(i)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var a,r,i,o,l=[],c=!0,s=!1;try{if(i=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;c=!1}else for(;!(c=(a=i.call(n)).done)&&(l.push(a.value),l.length!==t);c=!0);}catch(e){s=!0,r=e}finally{try{if(!c&&null!=n.return&&(o=n.return(),Object(o)!==o))return}finally{if(s)throw r}}return l}}(i,o)||function(e,t){if(e){if("string"==typeof e)return c(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)?c(e,t):void 0}}(i,o)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),u=l[0],d=l[1];return(0,a.useEffect)((function(){if(t){var n=(a=e.glance,i=a.content.replace(s,""),r(i));d(n)}var a,i}),[null===(n=e.glance)||void 0===n?void 0:n.content,t]),u}function d(e){var t,n;return(null===(t=e.glance)||void 0===t?void 0:t.content)&&"text/markdown"===(null===(n=e.glance)||void 0===n?void 0:n.format)}function m(e,t){var n=(0,a.useRef)();function r(){e&&o.n.trigger("glance:poi:mouseover",e)}function c(){o.n.trigger("glance:poi:mouseleave")}return(0,i.R)("player:poi:mouseover",(function(t){var a,r,i;(null==t?void 0:t.id)&&(null===(a=null==e?void 0:e.id)||void 0===a?void 0:a.toString())===(null===(r=null==t?void 0:t.id)||void 0===r?void 0:r.toString())&&(null===(i=n.current)||void 0===i||i.classList.add(l.Z.highlightPoi))}),null,t),(0,i.R)("player:poi:mouseleave",(function(){var e;null===(e=n.current)||void 0===e||e.classList.remove(l.Z.highlightPoi)}),null,t),(0,a.useEffect)((function(){var e,a;if(n.current&&t)return null===(e=n.current)||void 0===e||e.addEventListener("mouseover",r),null===(a=n.current)||void 0===a||a.addEventListener("mouseleave",c),function(){var e,t;null===(e=n.current)||void 0===e||e.removeEventListener("mouseover",r),null===(t=n.current)||void 0===t||t.removeEventListener("mouseleave",c)}}),[n.current]),n}},64921:(e,t,n)=>{n.d(t,{j:()=>P});var a=n(32735),r=n(59087),i=n.n(r),o=n(42648),l=n(23481),c=n(49985),s=n(65858),u=n(11607),d=n(83345),m=n(93264),p=n(51184);const v={poiEntry:"vr6R9",poiText:"znHZF",public:"v0BZ9",poiTimeStamp:"AdKwe",wideBadge:"YR2Hh"};function f(e){var t=m.T.ToDisplayDuration(1e3*e.poi.startTime),n=(0,p.RH)(e.poi,!e.suppressInteractivity);return e.suppressInteractivity?a.createElement("div",{className:"d-flex ".concat(v.poiEntry," mb-2")},a.createElement("span",{className:"d-flex rounded-pill justify-content-center align-items-center fw-semibold text-info bg-light-blue ".concat(v.poiTimeStamp," ").concat(e.wideBadge?v.wideBadge:"")},t),a.createElement("div",{className:"".concat(v.public," ms-2")},e.poi.description)):a.createElement(u.L,{key:e.poi.startTime,className:"d-flex ".concat(v.poiEntry," mb-2 cursor-pointer"),onClick:function(){return e.onClickPoiItem(e.poi.startTime)},ref:n},a.createElement("div",{className:"d-flex rounded-pill justify-content-center align-items-center fw-semibold text-info bg-light-blue ".concat(v.poiTimeStamp," ").concat(e.wideBadge?v.wideBadge:"")},t),a.createElement("div",{className:"ms-2 ".concat(v.poiText)},e.poi.description))}var g="shared.pointsOfInterestList";function h(e){var t=e.pointsOfInterest.sort((function(e,t){return e.startTime-t.startTime})),n=t.some((function(e){return e.startTime>=3600}));return a.createElement("div",null,a.createElement("h2",{className:"h6 my-2"},a.createElement(d.x,{namespace:g,phrase:"heading"})),a.createElement("div",null,t.map((function(t){return a.createElement(f,{key:t.startTime,poi:t,suppressInteractivity:e.suppressInteractivity,onClickPoiItem:e.onClickPoiItem,wideBadge:n})}))))}var y=n(83914),b=n(87311),E=n(91743),I=n(76177),C=n(44829),w=n(35223),N=n(31908),k=n(63847);function S(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 x="shared.videoAtAGlanceV2",O=l.T.encloseNamespace(x),T=350;function A(e){return e.hideScrollbar?a.createElement(a.Fragment,null,e.children):a.createElement("div",{className:"rounded border mb-4 bg-white"},a.createElement(o.ZP,{autoHeight:!0,autoHeightMax:T},a.createElement("div",{className:"px-3 px-3 pt-3 pb-2"},e.children)))}function P(e){var t,n,r,o=(0,p.NE)(e.video,e.canViewGlance),l=(n=a.useState(""),r=2,function(e){if(Array.isArray(e))return e}(n)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var a,r,i,o,l=[],c=!0,s=!1;try{if(i=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;c=!1}else for(;!(c=(a=i.call(n)).done)&&(l.push(a.value),l.length!==t);c=!0);}catch(e){s=!0,r=e}finally{try{if(!c&&null!=n.return&&(o=n.return(),Object(o)!==o))return}finally{if(s)throw r}}return l}}(n,r)||function(e,t){if(e){if("string"==typeof e)return S(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)?S(e,t):void 0}}(n,r)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),u=l[0],m=l[1],v=function(){var t,n,a,r;return N.M.isInteractive(e.video)||!(null===(n=null===(t=e.video.tags)||void 0===t?void 0:t.data)||void 0===n?void 0:n.length)?null:null===(r=null===(a=e.video.tags)||void 0===a?void 0:a.data)||void 0===r?void 0:r.filter((function(e){return e.tagType===C.Q.Pedagogy||e.tagType===C.Q.Skill}))}(),f=a.useRef(null);return a.useEffect((function(){var e;(null===(e=f.current)||void 0===e?void 0:e.innerText)&&m(f.current.innerText)}),[null===(t=f.current)||void 0===t?void 0:t.innerText]),e.canViewGlance?a.createElement("section",{className:"play-page-section"},a.createElement(A,{hideScrollbar:e.hideScrollbar},a.createElement("h2",{className:"h6 mb-2"},a.createElement(d.x,{namespace:x,phrase:"learningIntention"})),a.createElement("div",{className:"mb-3 ".concat(k.Z.learningIntention)},a.createElement(I.u,{title:O("copy"),spanHack:!0,spanHackClassName:k.Z.icon},a.createElement(i(),{text:u},a.createElement(y.x,{className:"svg-container me-1 cursor-pointer",svgName:w.vn.Copy,size:y.S.Small,onClick:function(){var t={id:e.video.glance.id,name:e.video.glance.name,videoId:e.video.id,videoName:e.video.name,learningIntention:u},n={actionType:s.Vw.Copy,entity:s.py.Glance,location:s.LZ.PlayPage};c.k.logUserAction(t,n)}}))),a.createElement("div",{dangerouslySetInnerHTML:{__html:o},className:"d-inline",ref:f})),!!(null==v?void 0:v.length)&&a.createElement("div",{className:"mb-1"},a.createElement(E.P,Object.assign({tags:v},b.G.getTagActionProps(e.getTagAppLink,e.onClickTag,e.suppressInteractivity),{className:"mt-2"}))),!!e.pointsOfInterest.length&&a.createElement(h,{pointsOfInterest:e.pointsOfInterest,suppressInteractivity:e.suppressInteractivity,onClickPoiItem:function(t){e.setStartTime(t)}}))):a.createElement(a.Fragment,null)}},17997:(e,t,n)=>{n.d(t,{H:()=>m});var a=n(32735),r=n(23481),i=n(36848),o=n(83345),l=n(22843),c=n(84591),s=n(68626),u="shared.interactiveWidgetItemV2",d=r.T.encloseNamespace(u),m=a.memo((function(e){var t,n,r=e.data,m=e.thumbnailSize,p=e.preloadImage,v=Object.assign(Object.assign({},e.questionsAppLink),{args:[e.data.id]}),f=null===(n=null===(t=r._timepoints)||void 0===t?void 0:t.value)||void 0===n?void 0:n.length;return a.createElement("div",{className:"flex-shrink-0 px-1 col-6 col-sm-4"},a.createElement(c.u,{type:"static",textPosition:s.z.Independent,video:r,appLink:e.getAppLink(r),imageOptions:{size:m},preload:p,analyticsData:e.analyticsData,analyticsOptions:e.analyticsOptions,setFavourite:e.setFavourite,canFavourite:e.canFavourite,hideDuration:!1,imageCdnUrl:e.imageCdnUrl,isPlugin:e.isPlugin,showOwner:e.showOwner}),a.createElement("div",{className:"mt-2"},a.createElement(l.h,Object.assign({},e,{video:r,appLink:e.getAppLink(r)}))),a.createElement("div",{className:"mt-n1"},a.createElement(i.F,{appLink:v,className:"cursor-pointer",ariaLabel:"".concat(d("previewQuestions",{count:f,smartCount:f})," ").concat(d("ariaPreview",{name:r.name}))},a.createElement(o.x,{namespace:u,phrase:"previewQuestions",options:{count:f,smartCount:f}}))))}))},95812:(e,t,n)=>{n.d(t,{J:()=>v});var a=n(32735),r=n(23481),i=n(28400),o=n(11518),l=n(58704),c=n(59598),s=n(31908),u=n(14070),d=n(97291),m=n(17997),p="shared.playPageInteractivesV2";function v(e){var t;if(!e.canViewInteractives||!(null===(t=e.interactives)||void 0===t?void 0:t.length))return a.createElement(a.Fragment,null);var n=r.T.getPhrase(p,"interactives",{count:e.interactives.length});return a.createElement("section",{className:"play-page-section",id:c.K.Interactives,ref:function(t){var n;t&&(null===(n=e.headingRef)||void 0===n?void 0:n.current)&&e.headingRef.current.set(c.K.Interactives,t)}},a.createElement(o.kM,{name:n,contents:l.z.InteractivesV2,collection:e.interactives,prefetched:!0,getChildAppLink:function(e){return{application:d.O.INTERACTIVES,action:u.e.Interactives.VIEW_INTERACTIVE,args:[e.id,i.m.slugify(e.name)]}},appLink:s.M.isVideo(e.video)?{action:u.e.Videos.VIDEO_INTERACTIVES,application:d.O.VIDEOS,args:[e.video.id,i.m.slugify(e.video.name)]}:{action:u.e.Clips.CLIP_INTERACTIVES,application:d.O.CLIPS,args:[e.video.id,i.m.slugify(e.video.name)]},childComponent:m.H,extraChildComponentProps:{yearGroups:e.yearGroups,setFavourite:e.setFavourite,canFavourite:e.canFavourite,imageCdnUrl:e.imageCdnUrl,questionsAppLink:{application:d.O.INTERACTIVES,action:u.e.Interactives.PREVIEW_QUESTIONS},isPlugin:e.isPlugin,showOwner:!0},analyticsData:e.analyticsData}))}},53709:(e,t,n)=>{n.d(t,{M:()=>g});var a=n(32735),r=n(23481),i=n(65858),o=n(11518),l=n(16714),c=n(58704),s=n(22902),u=n(59598),d=n(74237),m=n(351);function p(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)||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}}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function v(e,t){(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 f="shared.playPageResources";function g(e){var t=(0,s.T)().hasPermissions,n=function(e,t){var n,a,r,i,o=null!==(a=null===(n=e.resources)||void 0===n?void 0:n.data)&&void 0!==a?a:[],l=null!==(i=null===(r=e.links)||void 0===r?void 0:r.data)&&void 0!==i?i:[];if(!t)return[].concat(p(o),p(l));var c=o.filter((function(e){var t;return["additional-materials","student-activity"].includes(null===(t=e.metadata)||void 0===t?void 0:t.resourceType)}));return[].concat(p(c),p(l))}(e.video,t(l.C.StudentExperience)),v=r.T.getPhrase(f,"resources",{count:n.length});return n.length?a.createElement("section",{id:u.K.Resources,className:"play-page-section",ref:function(t){var n;t&&(null===(n=e.headingRef)||void 0===n?void 0:n.current)&&e.headingRef.current.set(u.K.Resources,t)}},a.createElement(o.kM,{name:v,contents:c.z.PlayPageResourcesV2,collection:n,prefetched:!0,childComponent:m.oA,extraChildComponentProps:{imageCdnUrl:e.imageCdnUrl,imageErrorFallbackUrl:e.resourceThumbnailFallbackUrl,actionBehaviour:e.canViewResources?"normal":"public",location:"play-page",titlePosition:"below",onClickDownload:e.canViewResources?function(t){d.T.downloadResource(t,e.analyticsData,{location:i.LZ.PlayPage,actionType:i.Vw.Download,entity:i.py.Resource})}:null},getChildAppLink:e.getAppLink,analyticsOptions:e.canViewResources?{}:{workflowPhase:i.eu.Start,descriptor:i.Yu.SignUp},analyticsData:e.analyticsData})):a.createElement(a.Fragment,null)}},351:(e,t,n)=>{n.d(t,{$G:()=>w,oA:()=>N,ZS:()=>C});var a=n(32735),r=n(39202),i=n(49985),o=n(65858),l=n(36848),c=n(11607),s=n(75891),u=n(83914),d=n(60995),m=n(76177),p=n(61150),v=n(71063),f=n(4594),g=n(1164),h=n(79967),y=n(45778),b=n(54297),E=n(35223);const I={imageStyle:"bYRn8",item:"CjuxU",dashboard:"IuRN0",playPage:"VdJvp",aspectRatio:"QK8Jh",outerContainer:"eiC_H",innerContainer:"huIRg",actions:"FsIJm",titleBelow:"DpeSr",thumbnailContainer:"ZbalL",titleAbove:"PwOSX",teacherPack:"ZHAEj",text:"k3ei6",hoverState:"BLrWL",atomGuide:"Qz8JE",studentActivity:"qNspk",additionalMaterials:"R0huw",userUploaded:"H_zGf",imageTypeResource:"AgeLb",download:"DKneu"};function C(e,t){var n,a=(0,h.k)();return"public"===t||!a.xs&&!a.sm&&"resource"===e.type&&"metadata"in e&&(e.metadata.type===g.L.Image||(e.metadata.type===g.L.Pdf?!!e.url:!!(null===(n=e.pdf)||void 0===n?void 0:n.url)))}function w(e){var t,n,r,i,o=null;"metadata"in e.data&&(o=e.data.metadata);var l=y.G.isType(e.data,f.E.Resource);return a.createElement(a.Fragment,null,a.createElement("div",{className:I.aspectRatio},a.createElement("div",{className:I.outerContainer},a.createElement("div",{className:function(t){var n,a="\n d-flex flex-column align-items-center justify-content-end rounded-3 h-100\n position-relative ".concat(function(e){switch(e){case"atom-guide":return I.atomGuide;case"student-activity":return I.studentActivity;case"teacher-pack":return I.teacherPack;case"additional-materials":return I.additionalMaterials;default:return I.userUploaded}}(t)," ").concat(I.innerContainer);return(null===(n=e.theme)||void 0===n?void 0:n.containerClass)?a+=" ".concat(e.theme.containerClass):a+=" pt-3 px-3",e.applyHoverState&&(a+=" ".concat(I.hoverState)),a}(null==o?void 0:o.resourceType)},"above"===e.titlePosition&&a.createElement(m.u,{title:e.data.name},a.createElement("h3",{className:"text-center text-break h5 mb-3 ".concat(I.text)},a.createElement("span",{className:"clamp-1"},e.data.name))),a.createElement("div",{className:"\n ".concat(null!==(n=null===(t=e.theme)||void 0===t?void 0:t.thumbnailContainerClass)&&void 0!==n?n:""," w-75 overflow-hidden \n ").concat(I.thumbnailContainer," ").concat("above"===e.titlePosition?I.titleAbove:""," \n ").concat(I.imageStyle,"\n ")},a.createElement(s.C,{resource:e.data,imageCdnUrl:e.imageCdnUrl,imageErrorFallbackUrl:e.imageErrorFallbackUrl,preloadImage:e.preloadImage,dynamicRatioImageOptions:e.dynamicRatioImageOptions})),l&&e.onClickDownload&&"normal"===e.actionBehaviour&&a.createElement("div",{className:I.actions},a.createElement(c.L,{onClick:function(t){t.preventDefault(),t.stopPropagation(),y.G.isResource(e.data)&&"function"==typeof e.onClickDownload&&e.onClickDownload(e.data)},className:"".concat(I.download," d-flex align-items-center justify-content-center")},a.createElement(u.x,{svgName:E.vn.Download}))),!e.hideTypeBadge&&l&&a.createElement(p.y,{typeId:f.E.Resource})))),"below"===e.titlePosition&&a.createElement("div",{className:"mt-1 ".concat(I.titleBelow)},y.G.isType(e.data,f.E.Resource)&&!!(null===(i=null===(r=e.data)||void 0===r?void 0:r.metadata)||void 0===i?void 0:i.resourceType)&&a.createElement(d.m,null,b.C.getResourceTypeName(e.data.metadata.resourceType)),a.createElement("h3",{className:"h6 clamp-2"},e.data.name)))}w.defaultProps={preloadImage:!0,actionBehaviour:"normal"};var N=a.memo((function(e){var t=C(e.data,e.actionBehaviour),n=Object.assign(Object.assign({},e.analyticsData),{id:e.data.id,name:e.data.name}),c=Object.assign(Object.assign({},e.analyticsOptions),{actionType:o.Vw.Click,entity:e.data.typeId===f.E.Resource?o.py.Resource:o.py.Link});function s(){i.k.logUserAction(n,c)}var u,d=Object.assign(Object.assign({},e),{applyHoverState:t||!!e.data.url});return a.createElement("div",{className:"px-1 flex-shrink-0 ".concat(I.item," ").concat("play-page"===e.location?I.playPage:I.dashboard," ").concat(v.M.RESOURCE_ITEM_SELECTOR)},(u="d-block no-decoration","link"===e.data.type?a.createElement("a",{href:e.data.url,target:"_blank",className:u,onClick:s},a.createElement(w,Object.assign({},d))):t?"public"===e.actionBehaviour?a.createElement("div",{className:"".concat(u," cursor-pointer d-inline"),onClick:function(){s(),r.C$.trigger(e.getAppLink(e.data))}},a.createElement(w,Object.assign({},d))):a.createElement(l.F,{appLink:e.getAppLink(e.data),className:u,analyticsData:n,analyticsOptions:c},a.createElement(w,Object.assign({},d))):e.data.url?a.createElement("a",{href:e.data.url,className:u,onClick:s},a.createElement(w,Object.assign({},d))):a.createElement("div",{className:u},a.createElement(w,Object.assign({},d)))))}))},75838:(e,t,n)=>{n.d(t,{w:()=>s});var a=n(32735),r=n(92869),i=n(65858),o=n(36848),l=n(11607);const c={itemsWrapper:"m6mGm",anchorWrapper:"QptZj",default:"_AZa8",selectedItem:"Nuiel",disabled:"WIzWJ",floatIcon:"ARudn",arrowIcon:"tEF5Q",listIcon:"Ql2wi"};function s(e){var t={actionType:i.Vw.Click,entity:i.py.Widget,location:i.LZ.TableOfContents};function n(t){var n;r.t.preventScrollTop(),e.setControlledId(t.id),null===(n=e.onItemClick)||void 0===n||n.call(e,t),setTimeout((function(){var e;return null===(e=document.getElementById(t.id))||void 0===e?void 0:e.focus()}))}return a.createElement("div",{className:"".concat(c.itemsWrapper)},e.items.map((function(r,i){return e.localState?a.createElement(l.L,{key:r.id,className:"".concat(c.anchorWrapper," ").concat(e.activeId===r.id?c.selectedItem:""),onClick:function(){n(r)}},a.createElement("div",{className:"".concat(e.activeId||0!==i?"":c.default," ")},r.name)):a.createElement(o.F,{key:r.id,appLink:e.getAppLink(r),appLinkOptions:{replace:!0},className:"".concat(c.anchorWrapper," ").concat(e.activeId===r.id?c.selectedItem:""),onClick:function(){n(r)},analyticsData:Object.assign(Object.assign({},e.analyticsData),{id:r.id,name:r.name}),analyticsOptions:t},a.createElement("div",{className:"".concat(e.activeId||0!==i?"":c.default," ").concat(r.tocIndentation?"ms-3":"")},r.name))})))}},35348:(e,t,n)=>{n.d(t,{x:()=>o});var a=n(32735),r=n(10038);function i(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}function o(){var e,t,n=a.useRef(null),o=a.useRef(0);a.useEffect((function(){n.current.clientHeight&&(o.current=n.current.clientHeight)}),[]);var l,c,s=(l=a.useState((null===(e=n.current)||void 0===e?void 0:e.scrollHeight)>o.current),c=2,function(e){if(Array.isArray(e))return e}(l)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var a,r,i,o,l=[],c=!0,s=!1;try{if(i=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;c=!1}else for(;!(c=(a=i.call(n)).done)&&(l.push(a.value),l.length!==t);c=!0);}catch(e){s=!0,r=e}finally{try{if(!c&&null!=n.return&&(o=n.return(),Object(o)!==o))return}finally{if(s)throw r}}return l}}(l,c)||function(e,t){if(e){if("string"==typeof e)return i(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)?i(e,t):void 0}}(l,c)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),u=s[0],d=s[1];return(0,r.H)((function(){var e;n.current.clientHeight&&(o.current=n.current.clientHeight,d((null===(e=n.current)||void 0===e?void 0:e.scrollHeight)>o.current))})),a.useEffect((function(){var e,t;(null===(e=n.current)||void 0===e?void 0:e.scrollHeight)&&d((null===(t=n.current)||void 0===t?void 0:t.scrollHeight)>o.current)}),[null===(t=n.current)||void 0===t?void 0:t.scrollHeight,o.current]),{containerRef:n,showButton:u}}},65332:(e,t,n)=>{n.d(t,{D:()=>i});var a,r=n(32735),i=function(e){var t=e.setActiveId,n=e.headingElements,i=e.controlledId,o=e.setControlledId,l=r.useRef(0);r.useEffect((function(){var e=new IntersectionObserver((function(e){e.forEach((function(e){if(i)return t(i),void(a=window.setTimeout((function(){o("")}),800));if(e.isIntersecting)t(e.target.id),l.current=window.scrollY;else{var r=l.current-window.scrollY>0,c=n.findIndex((function(t){return t.id===e.target.id})),s=n[c-1];r&&(null==s?void 0:s.id)&&t(null==s?void 0:s.id)}}))}),{rootMargin:"-67px 0px -80% 0px"});return n.forEach((function(t){return e.observe(t)})),function(){a&&window.clearTimeout(a),e.disconnect()}}),[t,n.length,i])}},74237:(e,t,n)=>{n.d(t,{T:()=>l});var a=n(97395),r=n(49985),i=n(65858),o=null,l={getVideoDownloadUrl:function(e,t){return a._.safeUrlConcat(a._.makeHttps(e),"/download?token=".concat(t))},downloadResource:function(e,t,n){var a,l=o;o||(l=o=document.createElement("iframe"),document.body.appendChild(l),l.style.display="none"),l.src=e.url,r.k.logUserAction(Object.assign({id:null==e?void 0:e.id,name:null==e?void 0:e.name,resourceType:null===(a=null==e?void 0:e.metadata)||void 0===a?void 0:a.resourceType},t),Object.assign({actionType:i.Vw.Download,entity:i.py.Resource,workflowPhase:i.eu.Complete},n))}}},9465:(e,t,n)=>{n.d(t,{h:()=>h});var a=n(32735),r=n(50690),i=n(49985),o=n(65858),l=n(10874),c=n(75838),s=n(83345),u=n(75795),d=n(35223),m=n(53739);const p={container:"qA4yj",showInSide:"kd9hB",aside:"j28IY",collapse:"sFoPk",iconContainer:"PYyBV",arrowIcon:"MTodB",listIcon:"W76p8"};var v="shared.playPage";function f(e){function t(){var t;e.setIsExpanded(!e.isExpanded),t={actionType:e.isExpanded?o.Vw.Hide:o.Vw.Open,entity:o.py.TableOfContents,location:o.LZ.PlayPage},i.k.logUserAction(e.analyticsData,t)}return a.createElement("div",{className:"d-flex justify-content-end"},a.createElement("div",{className:p.container},a.createElement("div",{className:"".concat(p.iconContainer)},a.createElement(l.h,{className:"btn btn-outline-dark ".concat(p.listIcon),svgName:d.vn.TableOfContents,onClick:t}),a.createElement(l.h,{className:"btn btn-outline-dark ".concat(p.arrowIcon),svgName:e.isExpanded?d.vn.CollapseRight:d.vn.ExpandLeft,onClick:t}))))}function g(e){return a.createElement("div",{className:e.showInSide?"col col-2 ps-4":"d-inline-flex gap-1"},a.createElement("aside",{className:"".concat(p.aside," position-relative ").concat(e.showInSide?"pe-1 pt-1 ":"px-3 pt-3 pb-2 border border-dark rounded-1 bg-white")},a.createElement("div",{className:"".concat(p.container," ").concat(e.showInSide?p.showInSide:"")},e.showInSide&&a.createElement(l.h,{className:"btn position-absolute ".concat(p.collapse),svgName:d.vn.CollapseRight,onClick:function(){var t;e.setIsExpanded(!1),t={actionType:o.Vw.Hide,entity:o.py.TableOfContents,location:o.LZ.PlayPage},i.k.logUserAction(e.analyticsData,t)}}),a.createElement("h2",{className:"h5"},a.createElement(s.x,{namespace:v,phrase:"tocHeading"})),a.createElement(c.w,{items:e.items,activeId:e.activeId,getAppLink:function(e){var t=u.O.getCurrentRoute().appLink,n=t.params?Object.assign({},t.params):{};return n.tocId=e.id,Object.assign(Object.assign({},t),{params:n})},setControlledId:e.setControlledId,analyticsData:e.analyticsData,onItemClick:function(){e.showInSide||e.setIsExpanded(!1)}}))),!e.showInSide&&a.createElement(f,Object.assign({},e)))}function h(e){return a.createElement(a.Fragment,null,e.isExpanded&&e.showInSide&&a.createElement(g,Object.assign({},e)),r.b.renderInPortalIfExists(!e.isExpanded&&a.createElement(f,Object.assign({},e)),document.getElementById(m.M)),r.b.renderInPortalIfExists(!e.showInSide&&e.isExpanded&&a.createElement(g,Object.assign({},e)),document.getElementById(m.M)))}},53256:(e,t,n)=>{n.d(t,{d:()=>o});var a=n(23481),r=n(59598),i=a.T.encloseNamespace("shared.play"),o={getSectionHeading:function(e,t){switch(e){case r.K.Resources:return i("resourcesHeading",{count:t.resources.length});case r.K.Clips:return t.isPlayClipPage?i("otherClipsHeading",{count:t.clips.length-1}):i("clipsHeading",{count:t.clips.length});case r.K.Interactives:return i("interactivesHeading",{count:t.interactives.length});case r.K.Video:return i("videoHeading");case r.K.VideoDetails:return i("videoDetailsHeading");case r.K.RelatedVideos:return i("upNextHeading");case r.K.CurriculumLinks:return i("curriculumLinksHeading");case r.K.ClippedFrom:return i("clippedFromHeading");default:return""}}}},63010:(e,t,n)=>{n.d(t,{Q:()=>s});var a=n(32735),r=n(57900),i=n(81812);function o(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var a,r,i,o,l=[],c=!0,s=!1;try{if(i=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;c=!1}else for(;!(c=(a=i.call(n)).done)&&(l.push(a.value),l.length!==t);c=!0);}catch(e){s=!0,r=e}finally{try{if(!c&&null!=n.return&&(o=n.return(),Object(o)!==o))return}finally{if(s)throw r}}return l}}(e,t)||function(e,t){if(e){if("string"==typeof e)return l(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)?l(e,t):void 0}}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function l(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 c="play-page-toc-expanded";function s(e){var t=(0,i.a)(),n=!1!==r.SG.get(c),l=!!t&&n,s=o(a.useState(e||""),2),u=s[0],d=s[1],m=o(a.useState(""),2),p=m[0],v=m[1],f=o(a.useState(l),2),g=f[0],h=f[1];return a.useEffect((function(){h(!!t&&n)}),[t]),{controlledId:u,setControlledId:d,tableOfContentsExpanded:g,tableOfContentsActiveId:p,setTableOfContentsActiveId:v,onToggleTableOfContents:function(){h(!g),r.SG.set(c,!g)}}}},14476:(e,t,n)=>{n.d(t,{i:()=>l});var a=n(32735),r=n(59598),i=[r.K.Video,r.K.CurriculumLinks,r.K.Resources,r.K.Interactives,r.K.Clips,r.K.VideoDetails,r.K.ClippedFrom,r.K.RelatedVideos],o=[r.K.Video,r.K.VideoDetails,r.K.CurriculumLinks,r.K.Resources,r.K.Interactives,r.K.Clips,r.K.ClippedFrom,r.K.RelatedVideos];function l(e){var t=a.useRef(new Map),n=(e?i:o).map((function(e){return t.current.get(e)})).filter(Boolean);return{headingRef:t,headingElements:n}}},81812:(e,t,n)=>{n.d(t,{a:()=>r});var a=n(79967);function r(){var e=(0,a.k)();return e.lg||e.xl||e.xxl}},63847:(e,t,n)=>{n.d(t,{Z:()=>a});const a={learningIntention:"MHM6O",highlightPoi:"U7Q6x",icon:"H1xbT"}}}]);
2
- //# sourceMappingURL=2142-d6e297d5a7-lite.chunk.js.map