@clickview/lite 0.69.1-dev.0 → 0.69.1-dev.2

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 (99) hide show
  1. package/dist/bundles.json +1 -1
  2. package/dist/css/{9985-lite-3c49d1b796.chunk.css → 3902-lite-5eaa7e7ae0.chunk.css} +1 -2
  3. package/dist/css/{555-lite-1b5aa9652d.chunk.css → 4356-lite-b05b606d3d.chunk.css} +1 -2
  4. package/dist/css/{2636-lite-f995954232.chunk.css → 4527-lite-4d1b877b3f.chunk.css} +4 -0
  5. package/dist/css/{1239-lite-8152f713c8.chunk.css → 7210-lite-a568e8ec1e.chunk.css} +1 -0
  6. package/dist/languages/en.json +1 -1
  7. package/dist/scripts/1210-7afb28caac-lite.chunk.js +2 -0
  8. package/dist/scripts/1210-7afb28caac-lite.chunk.js.map +1 -0
  9. package/dist/scripts/1386-332e63f68c-lite.chunk.js +2 -0
  10. package/dist/scripts/1386-332e63f68c-lite.chunk.js.map +1 -0
  11. package/dist/scripts/232-1522c00252-lite.chunk.js +3 -0
  12. package/dist/scripts/232-1522c00252-lite.chunk.js.map +1 -0
  13. package/dist/scripts/2392-19e4bb187b-lite.chunk.js +3 -0
  14. package/dist/scripts/2392-19e4bb187b-lite.chunk.js.map +1 -0
  15. package/dist/scripts/{2640-536c550749-lite.chunk.js → 2640-052f4606f6-lite.chunk.js} +2 -2
  16. package/dist/scripts/2640-052f4606f6-lite.chunk.js.map +1 -0
  17. package/dist/scripts/300-3d9f3cd4e3-lite.chunk.js +2 -0
  18. package/dist/scripts/300-3d9f3cd4e3-lite.chunk.js.map +1 -0
  19. package/dist/scripts/3079-0a333d6805-lite.chunk.js +2 -0
  20. package/dist/scripts/3079-0a333d6805-lite.chunk.js.map +1 -0
  21. package/dist/scripts/3110-eee18143c6-lite.chunk.js +2 -0
  22. package/dist/scripts/3110-eee18143c6-lite.chunk.js.map +1 -0
  23. package/dist/scripts/312-693aa30814-lite.chunk.js +2 -0
  24. package/dist/scripts/312-693aa30814-lite.chunk.js.map +1 -0
  25. package/dist/scripts/3902-39aaff7ce9-lite.chunk.js +2 -0
  26. package/dist/scripts/3902-39aaff7ce9-lite.chunk.js.map +1 -0
  27. package/dist/scripts/4229-477b1858dc-lite.chunk.js +2 -0
  28. package/dist/scripts/4229-477b1858dc-lite.chunk.js.map +1 -0
  29. package/dist/scripts/4356-36ce3ceec1-lite.chunk.js +2 -0
  30. package/dist/scripts/4356-36ce3ceec1-lite.chunk.js.map +1 -0
  31. package/dist/scripts/4527-42075d96f4-lite.chunk.js +2 -0
  32. package/dist/scripts/4527-42075d96f4-lite.chunk.js.map +1 -0
  33. package/dist/scripts/{4845-f3646fb657-lite.chunk.js → 4845-9b4657e696-lite.chunk.js} +2 -2
  34. package/dist/scripts/4845-9b4657e696-lite.chunk.js.map +1 -0
  35. package/dist/scripts/5679-444d9a7f76-lite.chunk.js +2 -0
  36. package/dist/scripts/5679-444d9a7f76-lite.chunk.js.map +1 -0
  37. package/dist/scripts/6046-104677f08c-lite.chunk.js +2 -0
  38. package/dist/scripts/6046-104677f08c-lite.chunk.js.map +1 -0
  39. package/dist/scripts/{6188-e108abca25-lite.chunk.js → 6188-77fc2f3ec5-lite.chunk.js} +2 -2
  40. package/dist/scripts/6188-77fc2f3ec5-lite.chunk.js.map +1 -0
  41. package/dist/scripts/6351-dff9edbb16-lite.chunk.js +3 -0
  42. package/dist/scripts/6351-dff9edbb16-lite.chunk.js.map +1 -0
  43. package/dist/scripts/6973-c4cb114bd7-lite.chunk.js +2 -0
  44. package/dist/scripts/6973-c4cb114bd7-lite.chunk.js.map +1 -0
  45. package/dist/scripts/7210-2e4563178c-lite.chunk.js +3 -0
  46. package/dist/scripts/7210-2e4563178c-lite.chunk.js.map +1 -0
  47. package/dist/scripts/7480-3564c0c2da-lite.chunk.js +2 -0
  48. package/dist/scripts/7480-3564c0c2da-lite.chunk.js.map +1 -0
  49. package/dist/scripts/7482-13e6f78c32-lite.chunk.js +2 -0
  50. package/dist/scripts/7482-13e6f78c32-lite.chunk.js.map +1 -0
  51. package/dist/scripts/9040-be65e4eb1e-lite.chunk.js +2 -0
  52. package/dist/scripts/9040-be65e4eb1e-lite.chunk.js.map +1 -0
  53. package/dist/scripts/{bundle-90d3c7fd15.min.js → bundle-32e967af87.min.js} +3 -3
  54. package/dist/scripts/{bundle-90d3c7fd15.min.js.map → bundle-32e967af87.min.js.map} +1 -1
  55. package/package.json +1 -1
  56. package/dist/scripts/1210-3cbdc62b0a-lite.chunk.js +0 -2
  57. package/dist/scripts/1210-3cbdc62b0a-lite.chunk.js.map +0 -1
  58. package/dist/scripts/1239-ed9b8aadb4-lite.chunk.js +0 -3
  59. package/dist/scripts/1239-ed9b8aadb4-lite.chunk.js.map +0 -1
  60. package/dist/scripts/1386-d93ee75e0c-lite.chunk.js +0 -2
  61. package/dist/scripts/1386-d93ee75e0c-lite.chunk.js.map +0 -1
  62. package/dist/scripts/2392-acfd69dfa3-lite.chunk.js +0 -3
  63. package/dist/scripts/2392-acfd69dfa3-lite.chunk.js.map +0 -1
  64. package/dist/scripts/2636-63e5f2c9e6-lite.chunk.js +0 -2
  65. package/dist/scripts/2636-63e5f2c9e6-lite.chunk.js.map +0 -1
  66. package/dist/scripts/2640-536c550749-lite.chunk.js.map +0 -1
  67. package/dist/scripts/3036-d18c598435-lite.chunk.js +0 -2
  68. package/dist/scripts/3036-d18c598435-lite.chunk.js.map +0 -1
  69. package/dist/scripts/4229-75ba28a266-lite.chunk.js +0 -2
  70. package/dist/scripts/4229-75ba28a266-lite.chunk.js.map +0 -1
  71. package/dist/scripts/4266-e856b96643-lite.chunk.js +0 -3
  72. package/dist/scripts/4266-e856b96643-lite.chunk.js.map +0 -1
  73. package/dist/scripts/4598-f326dc1aec-lite.chunk.js +0 -2
  74. package/dist/scripts/4598-f326dc1aec-lite.chunk.js.map +0 -1
  75. package/dist/scripts/4845-f3646fb657-lite.chunk.js.map +0 -1
  76. package/dist/scripts/555-d811b49435-lite.chunk.js +0 -2
  77. package/dist/scripts/555-d811b49435-lite.chunk.js.map +0 -1
  78. package/dist/scripts/6046-44c115a89c-lite.chunk.js +0 -2
  79. package/dist/scripts/6046-44c115a89c-lite.chunk.js.map +0 -1
  80. package/dist/scripts/6188-e108abca25-lite.chunk.js.map +0 -1
  81. package/dist/scripts/6317-49be898c73-lite.chunk.js +0 -2
  82. package/dist/scripts/6317-49be898c73-lite.chunk.js.map +0 -1
  83. package/dist/scripts/6973-ede6601614-lite.chunk.js +0 -2
  84. package/dist/scripts/6973-ede6601614-lite.chunk.js.map +0 -1
  85. package/dist/scripts/7075-9a76ce47c9-lite.chunk.js +0 -3
  86. package/dist/scripts/7075-9a76ce47c9-lite.chunk.js.map +0 -1
  87. package/dist/scripts/7480-02bc4e08a3-lite.chunk.js +0 -2
  88. package/dist/scripts/7480-02bc4e08a3-lite.chunk.js.map +0 -1
  89. package/dist/scripts/9040-9393c59004-lite.chunk.js +0 -2
  90. package/dist/scripts/9040-9393c59004-lite.chunk.js.map +0 -1
  91. package/dist/scripts/9985-c488ab5f65-lite.chunk.js +0 -2
  92. package/dist/scripts/9985-c488ab5f65-lite.chunk.js.map +0 -1
  93. /package/dist/css/{3036-lite-1b3e9aa905.chunk.css → 3079-lite-1b3e9aa905.chunk.css} +0 -0
  94. /package/dist/css/{7075-lite-a377febbb0.chunk.css → 6351-lite-a377febbb0.chunk.css} +0 -0
  95. /package/dist/scripts/{4266-e856b96643-lite.chunk.js.LICENSE.txt → 232-1522c00252-lite.chunk.js.LICENSE.txt} +0 -0
  96. /package/dist/scripts/{1239-ed9b8aadb4-lite.chunk.js.LICENSE.txt → 2392-19e4bb187b-lite.chunk.js.LICENSE.txt} +0 -0
  97. /package/dist/scripts/{2392-acfd69dfa3-lite.chunk.js.LICENSE.txt → 6351-dff9edbb16-lite.chunk.js.LICENSE.txt} +0 -0
  98. /package/dist/scripts/{7075-9a76ce47c9-lite.chunk.js.LICENSE.txt → 7210-2e4563178c-lite.chunk.js.LICENSE.txt} +0 -0
  99. /package/dist/scripts/{bundle-90d3c7fd15.min.js.LICENSE.txt → bundle-32e967af87.min.js.LICENSE.txt} +0 -0
@@ -1,2 +0,0 @@
1
- "use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[4598],{54405:(e,a,t)=>{t.d(a,{X:()=>i});var i={interactive:function(){return{url:"/mocks/insights/interactive.json",key:"demo:interactive",normalize:!1}},interactiveMetadata:function(){return{url:"/mocks/insights/interactive-metadata.json",key:"demo:interactive:metadata",normalize:!1}},interactiveResults:function(){return{url:"/mocks/insights/interactive-results.json",key:"demo:interactive:results",normalize:!1}},videoViews:function(){return{url:"/mocks/insights/video-views.json",key:"demo:video:views",normalize:!1}},users:function(){return{url:"/mocks/insights/users.json",key:"demo:users",normalize:!1}},individualHeatmap:function(){return{url:"/mocks/insights/individual-heatmap.json",key:"demo:individual:heatmap",normalize:!1}},aggregateHeatmap:function(){return{url:"/mocks/insights/aggregate-heatmap.json",key:"demo:aggregate:heatmap",normalize:!1}}}},18006:(e,a,t)=>{t.d(a,{c:()=>i,q:()=>n});var i="D8qRe7",n="GRWx6w"},44183:(e,a,t)=>{t.r(a),t.d(a,{InsightsHeatmapDemoView:()=>j});var i=t(32735),n=t(23481),r=t(2948),s=t(20354),o=t(26025),c=t(60051),u=t(39151),l=t(54405),d=t(47812),m=t(31949),v=t(93322),g=t(79612),h=t(86702),f=t(26203),p=t(64176),y=t(18006),k=t(10447);function w(e,a){(null==a||a>e.length)&&(a=e.length);for(var t=0,i=Array(a);t<a;t++)i[t]=e[t];return i}var b=n.T.encloseNamespace("shared.insightsHeatmap");function j(){var e,a,t,n,j=(t=(0,r.D)(h.y.ANONYMISE_USERS),n=1,function(e){if(Array.isArray(e))return e}(t)||function(e,a){var t=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=t){var i,n,r,s,o=[],c=!0,u=!1;try{if(r=(t=t.call(e)).next,0===a){if(Object(t)!==t)return;c=!1}else for(;!(c=(i=r.call(t)).done)&&(o.push(i.value),o.length!==a);c=!0);}catch(e){u=!0,n=e}finally{try{if(!c&&null!=t.return&&(s=t.return(),Object(s)!==s))return}finally{if(u)throw n}}return o}}(t,n)||function(e,a){if(e){if("string"==typeof e)return w(e,a);var t={}.toString.call(e).slice(8,-1);return"Object"===t&&e.constructor&&(t=e.constructor.name),"Map"===t||"Set"===t?Array.from(e):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?w(e,a):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.")}())[0];(0,v.F)();var A=s.a.useBasicFetch(m.N.currentUser()),B=s.a.useBasicFetch(l.X.interactiveMetadata()),F=s.a.useBasicFetch(u.L.config()),S=o.B.getAudienceAppLinkParams(),E=o.B.getDateRangeAppLinkParams(),L=s.a.useBasicFetch(l.X.aggregateHeatmap()),z=s.a.useBasicFetch(l.X.individualHeatmap()),D=s.a.useBasicFetch(l.X.users()),R=s.a.useBasicFetch(l.X.videoViews()),H=s.a.useBasicFetch(B.data&&d.k.createViewKey(function(){var e;return(null===(e=F.data)||void 0===e?void 0:e.liteUrl.includes("staging"))?y.c:y.q}(),c.f.Share));(0,g.M)({title:B.data?b("pageTitle",{video:null===(e=B.data)||void 0===e?void 0:e.name}):null});var O=A.data&&R.data&&B.data&&L.data&&H.data,X=!!z.data,I=Object.assign(Object.assign({},S),E);return i.createElement("div",{className:"px-3"},i.createElement(f.j,{video:B.data,tabs:(0,k.aq)(null===(a=B.data)||void 0===a?void 0:a.id,"heatmap",I),dateRangeAppLinkParams:E,isDemo:!0}),i.createElement(p.w,{aggregateEngagement:L.data,individualEngagement:z.data,videoViews:R.data,config:F.data,users:D.data,viewKey:H.data,hasDataLoaded:!!O,tableDataLoaded:X,anonymiseUsers:j,audienceAppLinkParams:S,dateRangeAppLinkParams:E}))}}}]);
2
- //# sourceMappingURL=4598-f326dc1aec-lite.chunk.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"scripts/4598-f326dc1aec-lite.chunk.js","mappings":"oIAEO,IAAMA,EAAuB,CAClCC,YAAW,WACT,MAAO,CACLC,IAAK,mCACLC,IAAK,mBACLC,WAAW,EAEf,EAEAC,oBAAmB,WACjB,MAAO,CACLH,IAAK,4CACLC,IAAK,4BACLC,WAAW,EAEf,EAEAE,mBAAkB,WAChB,MAAO,CACLJ,IAAK,2CACLC,IAAK,2BACLC,WAAW,EAEf,EAEAG,WAAU,WACR,MAAO,CACLL,IAAK,mCACLC,IAAK,mBACLC,WAAW,EAEf,EAEAI,MAAK,WACH,MAAO,CACLN,IAAK,6BACLC,IAAK,aACLC,WAAW,EAEf,EAEAK,kBAAiB,WACf,MAAO,CACLP,IAAK,0CACLC,IAAK,0BACLC,WAAW,EAEf,EAEAM,iBAAgB,WACd,MAAO,CACLR,IAAK,yCACLC,IAAK,yBACLC,WAAW,EAEf,E,2CCzDK,IAAMO,EAA8B,SAC9BC,EAA2B,Q,oWCuBxC,IACMC,EAAY,qBADA,0BAGZ,SAAUC,I,YACPC,G,GAAkB,OAAsB,qB,EAA8B,E,o4BAAxD,IAErB,SAEA,IAAMC,EAAc,kBAAkC,mBAChDC,EAAQ,kBACZ,2BAEIC,EAAS,kBAA6B,cAEtCC,EAAwB,+BACxBC,EAAyB,gCAEzBC,EAAsB,kBAC1B,wBAGIC,EAAuB,kBAC3B,yBAGId,EAAQ,kBAA6B,aAErCD,EAAa,kBAA6C,kBAE1DgB,EAAU,kBAAoCN,EAAMO,MACxD,kBAkBF,W,MACE,OAAe,QAAX,EAAAN,EAAOM,YAAI,eAAEC,QAAQC,SAAS,YAAmB,IAE9C,GACT,CAtB+BC,GAAwB,aAEvD,OAAmB,CAAEC,MAAOX,EAAMO,KAAOX,EAAU,YAAa,CAAEI,MAAiB,QAAV,EAAAA,EAAMO,YAAI,eAAEK,OAAU,OAE/F,IAAMC,EACJd,EAAYQ,MACZjB,EAAWiB,MACXP,EAAMO,MACNH,EAAoBG,MACpBD,EAAQC,KAEJO,IAAoBT,EAAqBE,KAEzCQ,EAAS,OAAH,wBACPb,GACAC,GASL,OACE,uBAAKa,UAAU,QACb,gBAAC,IAAc,CACbhB,MAAOA,EAAMO,KACbU,MAAM,QAAyC,QAAV,EAAAjB,EAAMO,YAAI,eAAEW,GAAI,UAAWH,GAChEZ,uBAAwBA,EACxBgB,QAAM,IAGR,gBAAC,IAAe,CACdf,oBAAqBA,EAAoBG,KACzCF,qBAAsBA,EAAqBE,KAC3CjB,WAAYA,EAAWiB,KACvBN,OAAQA,EAAOM,KACfhB,MAAOA,EAAMgB,KACbD,QAASA,EAAQC,KACjBM,gBAAiBA,EACjBC,gBAAiBA,EACjBhB,eAAgBA,EAChBI,sBAAuBA,EACvBC,uBAAwBA,IAIhC,C","sources":["file:///app/packages/libs/shared/src/flight-requests/InsightsDemoRequests.ts","file:///app/packages/projects/lite/src/apps/my-shares/constants/DemoInsights.ts","file:///app/packages/projects/lite/src/apps/my-shares/views/demo/heatmap/InsightsHeatmapDemoView.tsx"],"sourcesContent":["import { Flight } from 'libs/common/react/index';\n\nexport const InsightsDemoRequests = {\n interactive(): Flight.Request {\n return {\n url: `/mocks/insights/interactive.json`,\n key: `demo:interactive`,\n normalize: false\n };\n },\n\n interactiveMetadata(): Flight.Request {\n return {\n url: `/mocks/insights/interactive-metadata.json`,\n key: `demo:interactive:metadata`,\n normalize: false\n };\n },\n\n interactiveResults(): Flight.Request {\n return {\n url: `/mocks/insights/interactive-results.json`,\n key: `demo:interactive:results`,\n normalize: false\n };\n },\n\n videoViews(): Flight.Request {\n return {\n url: `/mocks/insights/video-views.json`,\n key: `demo:video:views`,\n normalize: false\n };\n },\n\n users(): Flight.Request {\n return {\n url: `/mocks/insights/users.json`,\n key: `demo:users`,\n normalize: false\n };\n },\n\n individualHeatmap(): Flight.Request {\n return {\n url: `/mocks/insights/individual-heatmap.json`,\n key: `demo:individual:heatmap`,\n normalize: false\n };\n },\n\n aggregateHeatmap(): Flight.Request {\n return {\n url: `/mocks/insights/aggregate-heatmap.json`,\n key: `demo:aggregate:heatmap`,\n normalize: false\n };\n }\n};","export const DEMO_INTERACTIVE_STAGING_ID = 'D8qRe7';\nexport const DEMO_INTERACTIVE_PROD_ID = 'GRWx6w';","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { useViewModel } from 'libs/common/react/hooks/UseViewModel';\nimport { Flight } from 'libs/common/react/index';\n\nimport { VideoViewEventResponse } from 'libs/shared/apps/analytics/interfaces/VideoViewEvent';\nimport { AnalyticsFilterHelper } from 'libs/shared/apps/analytics/utils/AnalyticsFilterUtils';\nimport { MediaIdType } from 'libs/shared/enums/MediaIdType';\nimport { ConfigRequests } from 'libs/shared/flight-requests/ConfigRequests';\nimport { InsightsDemoRequests } from 'libs/shared/flight-requests/InsightsDemoRequests';\nimport { PlayerRequests } from 'libs/shared/flight-requests/PlayerRequests';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { useLockContentWidth } from 'libs/shared/hooks/useLockContentWidth';\nimport { useSetPageMetadata } from 'libs/shared/hooks/useSetPageMetadata';\nimport { Config, CurrentUser, Engagement, IndividualEngagementResponse, InteractiveMetadata, PlayerViewKey, User } from 'libs/shared/interfaces';\n\nimport { ViewModelKeys } from 'shared/constants/LiteViewModels';\n\nimport { InsightsHeader } from 'apps/my-shares/components/insights-header/InsightsHeader';\nimport { InsightsHeatmap } from 'apps/my-shares/components/insights-heatmap/InsightsHeatmap';\nimport { DEMO_INTERACTIVE_PROD_ID, DEMO_INTERACTIVE_STAGING_ID } from 'apps/my-shares/constants/DemoInsights';\nimport { getInsightsDemoInteractiveTabs } from 'apps/my-shares/utils/InsightsAppLinkUtils';\n\nconst namespace = 'shared.insightsHeatmap';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nexport function InsightsHeatmapDemoView() {\n const [anonymiseUsers] = useViewModel<boolean>(ViewModelKeys.ANONYMISE_USERS);\n\n useLockContentWidth();\n\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n const video = Flight.useBasicFetch<InteractiveMetadata>(\n InsightsDemoRequests.interactiveMetadata()\n );\n const config = Flight.useBasicFetch<Config>(ConfigRequests.config());\n\n const audienceAppLinkParams = AnalyticsFilterHelper.getAudienceAppLinkParams();\n const dateRangeAppLinkParams = AnalyticsFilterHelper.getDateRangeAppLinkParams();\n\n const aggregateEngagement = Flight.useBasicFetch<Engagement>(\n InsightsDemoRequests.aggregateHeatmap()\n );\n\n const individualEngagement = Flight.useBasicFetch<IndividualEngagementResponse>(\n InsightsDemoRequests.individualHeatmap()\n );\n\n const users = Flight.useBasicFetch<User[]>(InsightsDemoRequests.users());\n\n const videoViews = Flight.useBasicFetch<VideoViewEventResponse>(InsightsDemoRequests.videoViews());\n\n const viewKey = Flight.useBasicFetch<PlayerViewKey>(video.data &&\n PlayerRequests.createViewKey(getDemoInteractiveId(), MediaIdType.Share));\n\n useSetPageMetadata({ title: video.data ? getPhrase('pageTitle', { video: video.data?.name }) : null });\n\n const hasDataLoaded =\n currentUser.data &&\n videoViews.data &&\n video.data &&\n aggregateEngagement.data &&\n viewKey.data;\n\n const tableDataLoaded = !!individualEngagement.data;\n\n const params = {\n ...audienceAppLinkParams,\n ...dateRangeAppLinkParams\n };\n\n function getDemoInteractiveId() {\n if (config.data?.liteUrl.includes('staging')) return DEMO_INTERACTIVE_STAGING_ID;\n\n return DEMO_INTERACTIVE_PROD_ID;\n }\n\n return (\n <div className='px-3'>\n <InsightsHeader\n video={video.data}\n tabs={getInsightsDemoInteractiveTabs(video.data?.id, 'heatmap', params)}\n dateRangeAppLinkParams={dateRangeAppLinkParams}\n isDemo\n />\n\n <InsightsHeatmap\n aggregateEngagement={aggregateEngagement.data}\n individualEngagement={individualEngagement.data}\n videoViews={videoViews.data}\n config={config.data}\n users={users.data}\n viewKey={viewKey.data}\n hasDataLoaded={!!hasDataLoaded}\n tableDataLoaded={tableDataLoaded}\n anonymiseUsers={anonymiseUsers}\n audienceAppLinkParams={audienceAppLinkParams}\n dateRangeAppLinkParams={dateRangeAppLinkParams}\n />\n </div>\n );\n}"],"names":["InsightsDemoRequests","interactive","url","key","normalize","interactiveMetadata","interactiveResults","videoViews","users","individualHeatmap","aggregateHeatmap","DEMO_INTERACTIVE_STAGING_ID","DEMO_INTERACTIVE_PROD_ID","getPhrase","InsightsHeatmapDemoView","anonymiseUsers","currentUser","video","config","audienceAppLinkParams","dateRangeAppLinkParams","aggregateEngagement","individualEngagement","viewKey","data","liteUrl","includes","getDemoInteractiveId","title","name","hasDataLoaded","tableDataLoaded","params","className","tabs","id","isDemo"],"sourceRoot":""}
@@ -1 +0,0 @@
1
- {"version":3,"file":"scripts/4845-f3646fb657-lite.chunk.js","mappings":"8JAiBA,SAASA,EACPC,EACAC,GAEA,MAAO,CACLC,cAAeF,EAAYG,GAC3BC,kBAAmBJ,EAAYK,WAC/BC,UAAW,CAAEC,MAAON,EAAOM,MAAOC,IAAKP,EAAOO,KAC9CC,QAASR,EAAOS,OAChBC,oBAAqBV,EAAOW,QAEhC,CAEO,IAAMC,EAA6B,CAMxCC,qBAAoB,SAClBC,EACAC,EACAhB,EACAC,EACAgB,EACAC,EACAC,EACAC,GAEA,MAAO,CACLC,IAAKJ,EAAoB,gDACkBF,EAAa,qBAAaC,GAAqB,gDAC/CD,EAAa,qBAAaC,GACrEM,KAAK,OAAuB,0BAAD,OAA2BP,EAAa,YAAIC,GAAyBf,GAChGsB,KAAMxB,EAA4BC,EAAaC,GAC/CuB,KAAM,SACNC,WAAW,EACXP,QAAAA,EACAC,MAAAA,EACAC,OAAAA,EAEJ,EAMAM,KAAI,SACFX,EACAC,EACAW,EACAJ,EACAL,EACAC,EACAC,GAEA,MAAO,CACLC,IAAK,oCAAF,OAAsCM,GACzCL,IAAK,eAAF,OAAiBK,EAAQ,YAAIJ,EAAKK,UACrCJ,KAAM,QACND,KAAAA,EACAE,WAAW,EACXI,iBAAkB,0BAAF,OAA4Bd,EAAa,YAAIC,GAC7DE,QAAAA,EACAC,MAAAA,EACAC,OAAAA,EAEJ,EAEAU,eAAc,SAACP,GACb,MAAO,CACLF,IAAK,gEACLC,IAAK,+BACLE,KAAM,SACND,KAAAA,EAEJ,EAEAQ,yBAAwB,SAACR,GACvB,MAAO,CACLF,IAAK,6CACLC,IAAK,6BACLC,KAAAA,EACAC,KAAM,SACNC,WAAW,EAEf,E,kSC5FI,SAAUO,EAAgBC,G,MACxBC,EAAe,kBAAoCD,GAAW,oBAA8BA,IAElG,OAAsB,QAAjB,EAAAC,EAAaX,YAAI,eAAEY,QAGjBD,EAAaX,KAAKa,QAAO,SAACC,EAAMC,GAAO,OAAK,+BAAMD,I,EAAI,G,EAAGC,EAAQC,U,EAAYD,G,+XAAO,GAAK,CAAC,GAFxF,CAAC,CAGZ,C,mFCXM,SAAUE,EACdxB,EACAyB,EACAxB,G,MAEMjB,EAAc,kBAAkC,mBAEhD0C,EAAsB,oBAA4C1B,GACtE,wBAAwCA,IAEpC2B,EAAc,qBAA4D,QAAxB,EAAAD,EAAoBnB,YAAI,eAAER,gBAChF,gBAAgC2B,EAAoBnB,KAAKR,gBAErD6B,IAAuB5C,EAAYuB,QAAUoB,EAAYpB,QAAWkB,EAE1E,OAAO,kBAA2CG,GAChD,EAAAC,EAAA,qBACEH,EAAoBnB,KAAKR,cACzB2B,EAAoBnB,KAAKpB,GACzBH,EAAYuB,KACZkB,EACAxB,GAEN,C,iwBC5BO,IAAM6B,EAAoB,SAACC,GAChC,IAAMrC,EAAmB,GACnBE,EAAoB,GAU1B,OARImC,EAAYC,OACdtC,EAAOuC,KAAI,MAAXvC,EAAM,EAASqC,EAAYC,QAEzBD,EAAYG,YACdtC,EAAQqC,KAAI,MAAZrC,EAAO,EAASmC,EAAYG,aAE1BH,EAAYI,iBACdvC,EAAQqC,KAAI,MAAZrC,EAAO,EAASmC,EAAYI,kBACvB,CACLzC,OAAAA,EACAE,QAAAA,EAEJ,C,kBChBM,SAAUwC,EAAuBC,EAAiBpD,EAAgCqD,GACtF,IAAIhC,EAAM,GAAH,OAAM+B,EAAO,YAAIpD,EAAOM,MAAK,YAAIN,EAAOO,KAEzC+C,EAAYC,MAAMC,QAAQxD,EAAOS,QAAUT,EAAOS,OAAOgD,OAAOC,KAAK,KAAO1D,EAAOS,OACnFkD,EAAaJ,MAAMC,QAAQxD,EAAOW,SAAWX,EAAOW,QAAQ8C,OAAOC,KAAK,KAAO1D,EAAOW,QAW5F,OATI2C,IACFjC,GAAO,IAAJ,OAAQiC,IAETK,IACFtC,GAAO,IAAJ,OAAQsC,IAETN,IACFhC,GAAO,IAAJ,OAAQgC,IAENhC,CACT,C,6bCaA,IACMuC,EAAY,qBADA,wCASZ,SAAUC,EAAgCC,G,gBACvCC,G,GAAkB,OAAsB,qB,EAAoC,E,o4BAA9D,GAEbC,GAAmB,OAAY,MAA/BA,eAEAC,GAAmB,SAAnBA,eAEFC,EAAS,kBAA6B,cAEtCzB,EAAsB,kBAC1B,wBAAwCqB,EAAMhD,gBAG1C4B,EAAc,mBAA0D,QAAxB,EAAAD,EAAoBnB,YAAI,eAAER,gBAC9E,gBAAgC2B,EAAoBnB,KAAKR,gBAErDqD,EAAY,kBAAgC,2BAAqCL,EAAMhD,gBACvFmB,GAAe,OAA8B,QAAd,EAAAkC,EAAU7C,YAAI,eAAEpB,IAE/CkE,EAAwB,+BACxBC,EAAyB,gCAEzBC,GAAU,OAA2BR,EAAMhD,cAAe,OAAF,yBACzD,SAAkB,UAA+BuD,KACjD,OAAkBD,KACpB,GAEGG,EAAgB7B,EAAYpB,MAAQmB,EAAoBnB,QAAUgD,EAAQhD,MAEhF,OAAmB,CAAEkD,MAAO/B,EAAoBnB,KAAOsC,EAAU,YAAa,CAAEa,MAA+B,QAAxB,EAAAhC,EAAoBnB,YAAI,eAAEoD,OAAU,OAmB3H,IAAMC,EAAS,OAAH,wBACPP,GACAC,GAGL,OACE,uBAAKO,UAAU,QACb,gBAAC,IAAc,CACbP,uBAAwBA,EACxBQ,MAAM,QAA2Bf,EAAMhD,cAAe,UAAW6D,GACjEF,MAAOhC,EAAoBnB,KAC3BwD,aAAcb,EAAe,2BAC7Bc,gBAA4B,QAAX,EAAAb,EAAO5C,YAAI,eAAEyD,gBAC9Bf,eAAgBA,IAGlB,gBAAC,IAA2B,CAC1BvB,oBAAqBA,EAAoBnB,KACzC0D,mBAnCN,SACEC,EACAlE,EACAmE,GAEA,eAA2B,CACzBC,YAAa,aACbC,OAAQ,yCACRT,OAAQ,CACNU,UAAW,OAAQJ,EAAOA,EAAK/E,QAAKoF,EACpCvE,sBAAAA,EACAmE,cAAAA,EACA5C,UAAW,cAAe2C,EAAOA,EAAK3C,eAAYgD,IAGxD,EAqBM5C,YAAaA,EAAYpB,KACzBgD,QAASA,EAAQhD,KACjBiE,SAAUzB,EAAMyB,SAChBC,OAAQ1B,EAAM0B,OACdC,WAAYnB,EAAQmB,WACpB1B,eAAgBA,EAChBQ,cAAeA,EACftC,aAAcA,IAItB,C","sources":["file:///app/packages/libs/shared/src/apps/analytics/flight-requests/InteractiveResultsRequests.ts","file:///app/packages/libs/shared/src/apps/analytics/hooks/UseAnonSessions.ts","file:///app/packages/libs/shared/src/apps/analytics/hooks/UseFetchInteractiveResults.ts","file:///app/packages/libs/shared/src/apps/analytics/utils/AudienceUtils.ts","file:///app/packages/libs/shared/src/utils/AnalyticsRequestUtils.ts","file:///app/packages/projects/lite/src/apps/my-shares/views/interactive/students/InteractiveInsightsStudentsView.tsx"],"sourcesContent":["import { HttpVerbs } from 'libs/common/backbone/enums/HttpVerbs';\nimport { Flight } from 'libs/common/react/index';\n\nimport { MarkInteractiveAnswer } from 'libs/shared/apps/analytics/interfaces/MarkInteractiveAnswer';\nimport { InteractiveResultsReport } from 'libs/shared/apps/analytics/interfaces/requests/InteractiveResultsReport';\nimport { InteractivesPendingReviewsRequest } from 'libs/shared/apps/analytics/interfaces/requests/InteractivesPendingReviewsRequest';\nimport { AnalyticsRequestFilter, CurrentUser, InteractiveResultSet } from 'libs/shared/interfaces';\nimport { getAnalyticsRequestKey } from 'libs/shared/utils/AnalyticsRequestUtils';\n\ninterface InteractiveResultFilters {\n currentUserId: string;\n currentCustomerId: string;\n dateRange?: { start: string, end: string }\n userIds?: string | string[];\n classroomsAndGroups?: string | string[];\n}\n\nfunction getInteractiveResultFilters(\n currentUser: CurrentUser,\n filter: AnalyticsRequestFilter\n): InteractiveResultFilters {\n return {\n currentUserId: currentUser.id,\n currentCustomerId: currentUser.customerId,\n dateRange: { start: filter.start, end: filter.end },\n userIds: filter.userId,\n classroomsAndGroups: filter.groupId\n };\n}\n\nexport const InteractiveResultsRequests = {\n /** \n * This endpoint returns data with a lot of duplicated ids,\n * e.g. student answers to the same question will have the same id.\n * Because of that, we don't normalize.\n */\n interactiveResultSet(\n interactiveId: string,\n interactiveMetadataId: string,\n currentUser: CurrentUser,\n filter: AnalyticsRequestFilter,\n includePublicResults: boolean,\n success?: (data: InteractiveResultSet) => void,\n error?: (data: any) => void,\n always?: () => void\n ): Flight.Request {\n return {\n url: includePublicResults ?\n `/api/domain/v3/analytics/interactives/${interactiveId}/metadata/${interactiveMetadataId}` :\n `/api/domain/v2/analytics/interactives/${interactiveId}/metadata/${interactiveMetadataId}`,\n key: getAnalyticsRequestKey(`interactive:result:set:${interactiveId}:${interactiveMetadataId}`, filter),\n data: getInteractiveResultFilters(currentUser, filter),\n type: HttpVerbs.POST,\n normalize: false,\n success,\n error,\n always\n };\n },\n \n /**\n * As the response from `interactiveResultSet` isn't normalised, we need to invalidate the cache\n * to update the results data.\n */\n mark(\n interactiveId: string,\n interactiveMetadataId: string,\n answerId: string,\n data: MarkInteractiveAnswer,\n success?: () => void,\n error?: (data: any) => void,\n always?: () => void\n ): Flight.Request {\n return {\n url: `/api/domain/v1/analytics/answers/${answerId}`,\n key: `mark:answer:${answerId}:${data.resultId}`,\n type: HttpVerbs.PUT,\n data,\n normalize: false,\n invalidationKeys: `interactive:result:set:${interactiveId}:${interactiveMetadataId}`,\n success,\n error,\n always\n };\n },\n\n pendingReviews(data: InteractivesPendingReviewsRequest): Flight.Request {\n return {\n url: `/api/domain/v1/analytics/interactives/pending-reviews/summary`,\n key: `interactives:pending:reviews`,\n type: HttpVerbs.POST,\n data\n };\n },\n\n interactiveResultsReport(data: InteractiveResultsReport): Flight.Request {\n return {\n url: '{gateway}/v2/analytics/interactives/report',\n key: 'interactive:results:report',\n data,\n type: HttpVerbs.POST,\n normalize: false\n };\n }\n};","import { Flight } from 'libs/common/react/index';\n\nimport { ShareRequests } from 'libs/shared/apps/share/flight-requests/ShareRequests';\n\nexport interface AnonSession {\n sessionId: string;\n sessionName: string;\n}\n\nexport interface AnonSessions extends Record<string, AnonSession> {}\n\nexport function useAnonSessions(shareId: string): AnonSessions {\n const anonSessions = Flight.useBasicFetch<AnonSession[]>(shareId && ShareRequests.getAnonSessions(shareId));\n\n if (!anonSessions.data?.length)\n return {};\n\n return anonSessions.data.reduce((prev, current) => ({ ...prev, [current.sessionId]: current }), {});\n}","import { Flight } from 'libs/common/flight';\n\nimport { InteractiveResultsRequests } from 'libs/shared/apps/analytics/flight-requests/InteractiveResultsRequests';\nimport { InteractiveRequests } from 'libs/shared/flight-requests/InteractiveRequests';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { AnalyticsRequestFilter, CurrentUser, Interactive, InteractiveMetadata, InteractiveResultSet } from 'libs/shared/interfaces';\n\nexport function useFetchInteractiveResults(\n interactiveMetadataId: string,\n requestFilter: AnalyticsRequestFilter,\n includePublicResults?: boolean\n): Flight.Response<InteractiveResultSet> {\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n\n const interactiveMetadata = Flight.useBasicFetch<InteractiveMetadata>(!!interactiveMetadataId &&\n InteractiveRequests.interactiveMetadata(interactiveMetadataId));\n\n const interactive = Flight.useBasicFetch<Interactive>(!!interactiveMetadata.data?.interactiveId &&\n InteractiveRequests.interactive(interactiveMetadata.data.interactiveId));\n\n const shouldFetchResults = !!currentUser.data && !!interactive.data && (!!requestFilter);\n\n return Flight.useBasicFetch<InteractiveResultSet>(shouldFetchResults &&\n InteractiveResultsRequests.interactiveResultSet(\n interactiveMetadata.data.interactiveId,\n interactiveMetadata.data.id,\n currentUser.data,\n requestFilter,\n includePublicResults\n ));\n}","import { AudienceQueryParams } from 'libs/shared/apps/analytics/interfaces/AudienceQueryParams';\n\nexport const getAudienceParams = (queryParams: AudienceQueryParams) => {\n const userId: string[] = [];\n const groupId: string[] = [];\n\n if (queryParams.users)\n userId.push(...queryParams.users);\n\n if (queryParams.classrooms)\n groupId.push(...queryParams.classrooms);\n\n if (queryParams.classroomGroups)\n groupId.push(...queryParams.classroomGroups);\n return {\n userId,\n groupId\n };\n};","import { AnalyticsRequestFilter } from 'libs/shared/interfaces';\n\nexport function getAnalyticsRequestKey(baseKey: string, filter: AnalyticsRequestFilter, sharerId?: string): string {\n let key = `${baseKey}:${filter.start}:${filter.end}`;\n\n const userIdKey = Array.isArray(filter.userId) ? filter.userId.sort().join(':') : filter.userId;\n const groupIdKey = Array.isArray(filter.groupId) ? filter.groupId.sort().join(':') : filter.groupId;\n\n if (userIdKey)\n key += `:${userIdKey}`;\n\n if (groupIdKey)\n key += `:${groupIdKey}`;\n\n if (sharerId)\n key += `:${sharerId}`;\n\n return key;\n}","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { useViewModel } from 'libs/common/react/hooks/UseViewModel';\nimport { Flight } from 'libs/common/react/index';\n\nimport { useAnonSessions } from 'libs/shared/apps/analytics/hooks/UseAnonSessions';\nimport { useFetchInteractiveResults } from 'libs/shared/apps/analytics/hooks/UseFetchInteractiveResults';\nimport { UserOrAnonSession } from 'libs/shared/apps/analytics/interfaces/UserOrAnonSession';\nimport { AnalyticsFilterHelper } from 'libs/shared/apps/analytics/utils/AnalyticsFilterUtils';\nimport { getAudienceParams } from 'libs/shared/apps/analytics/utils/AudienceUtils';\nimport { getInsightsDateRangePresets, getStartEndParams } from 'libs/shared/apps/analytics/utils/DateRangeUtils';\nimport { FilterStudentsBy, SortStudentsBy } from 'libs/shared/apps/analytics/utils/StudentTableUtils';\nimport { ShareRequests } from 'libs/shared/apps/share/flight-requests/ShareRequests';\nimport { SharedViewModelKeys } from 'libs/shared/constants/SharedViewModelKeys';\nimport { PermissionName } from 'libs/shared/enums/PermissionName';\nimport { ConfigRequests } from 'libs/shared/flight-requests/ConfigRequests';\nimport { InteractiveRequests } from 'libs/shared/flight-requests/InteractiveRequests';\nimport { usePermissions } from 'libs/shared/hooks/usePermissions';\nimport { useSetPageMetadata } from 'libs/shared/hooks/useSetPageMetadata';\nimport { useSettings } from 'libs/shared/hooks/useSettings';\nimport { Config, Interactive, InteractiveMetadata, ShareLink } from 'libs/shared/interfaces';\n\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\n\nimport { InsightsHeader } from 'apps/my-shares/components/insights-header/InsightsHeader';\nimport { InteractiveInsightsStudents } from 'apps/my-shares/components/interactive-insights-students/InteractiveInsightsStudents';\nimport { getInsightsInteractiveTabs } from 'apps/my-shares/utils/InsightsAppLinkUtils';\n\nconst namespace = 'insights.interactiveInsightsStudents';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface InteractiveInsightsStudentsViewProps {\n interactiveId: string;\n sortBy: SortStudentsBy;\n filterBy: FilterStudentsBy;\n}\n\nexport function InteractiveInsightsStudentsView(props: InteractiveInsightsStudentsViewProps) {\n const [anonymiseUsers] = useViewModel<boolean>(SharedViewModelKeys.ANONYMISE_USERS);\n\n const { hasShareFlowV2 } = useSettings(null);\n\n const { hasPermissions } = usePermissions();\n\n const config = Flight.useBasicFetch<Config>(ConfigRequests.config());\n\n const interactiveMetadata = Flight.useBasicFetch<InteractiveMetadata>(\n InteractiveRequests.interactiveMetadata(props.interactiveId)\n );\n\n const interactive = Flight.useBasicFetch<Interactive>(interactiveMetadata.data?.interactiveId &&\n InteractiveRequests.interactive(interactiveMetadata.data.interactiveId));\n\n const shareLink = Flight.useBasicFetch<ShareLink>(ShareRequests.getShareLinkByObjectId(props.interactiveId));\n const anonSessions = useAnonSessions(shareLink.data?.id);\n\n const audienceAppLinkParams = AnalyticsFilterHelper.getAudienceAppLinkParams();\n const dateRangeAppLinkParams = AnalyticsFilterHelper.getDateRangeAppLinkParams();\n\n const results = useFetchInteractiveResults(props.interactiveId, {\n ...getStartEndParams(getInsightsDateRangePresets(), dateRangeAppLinkParams),\n ...getAudienceParams(audienceAppLinkParams)\n }, true);\n\n const hasDataLoaded = interactive.data && interactiveMetadata.data && !!results.data;\n\n useSetPageMetadata({ title: interactiveMetadata.data ? getPhrase('pageTitle', { video: interactiveMetadata.data?.name }) : null });\n\n function viewStudentResults(\n user: UserOrAnonSession,\n interactiveMetadataId: string,\n interactionId?: string\n ) {\n Core.AppLinkHelper.trigger({\n application: AppChannels.INSIGHTS,\n action: Actions.Insights.INTERACTIVE_STUDENT_RESULTS,\n params: {\n studentId: 'id' in user ? user.id : undefined,\n interactiveMetadataId,\n interactionId,\n sessionId: 'sessionId' in user ? user.sessionId : undefined\n }\n });\n }\n\n const params = {\n ...audienceAppLinkParams,\n ...dateRangeAppLinkParams\n };\n\n return (\n <div className='px-3'>\n <InsightsHeader\n dateRangeAppLinkParams={dateRangeAppLinkParams}\n tabs={getInsightsInteractiveTabs(props.interactiveId, 'results', params)}\n video={interactiveMetadata.data}\n hasAnalytics={hasPermissions(PermissionName.ViewCustomerAnalytics)}\n analyticsWebUrl={config.data?.analyticsWebUrl}\n hasShareFlowV2={hasShareFlowV2}\n />\n\n <InteractiveInsightsStudents\n interactiveMetadata={interactiveMetadata.data}\n viewStudentResults={viewStudentResults}\n interactive={interactive.data}\n results={results.data}\n filterBy={props.filterBy}\n sortBy={props.sortBy}\n isFetching={results.isFetching}\n anonymiseUsers={anonymiseUsers}\n hasDataLoaded={hasDataLoaded}\n anonSessions={anonSessions}\n />\n </div>\n );\n}"],"names":["getInteractiveResultFilters","currentUser","filter","currentUserId","id","currentCustomerId","customerId","dateRange","start","end","userIds","userId","classroomsAndGroups","groupId","InteractiveResultsRequests","interactiveResultSet","interactiveId","interactiveMetadataId","includePublicResults","success","error","always","url","key","data","type","normalize","mark","answerId","resultId","invalidationKeys","pendingReviews","interactiveResultsReport","useAnonSessions","shareId","anonSessions","length","reduce","prev","current","sessionId","useFetchInteractiveResults","requestFilter","interactiveMetadata","interactive","shouldFetchResults","I","getAudienceParams","queryParams","users","push","classrooms","classroomGroups","getAnalyticsRequestKey","baseKey","sharerId","userIdKey","Array","isArray","sort","join","groupIdKey","getPhrase","InteractiveInsightsStudentsView","props","anonymiseUsers","hasShareFlowV2","hasPermissions","config","shareLink","audienceAppLinkParams","dateRangeAppLinkParams","results","hasDataLoaded","title","video","name","params","className","tabs","hasAnalytics","analyticsWebUrl","viewStudentResults","user","interactionId","application","action","studentId","undefined","filterBy","sortBy","isFetching"],"sourceRoot":""}
@@ -1,2 +0,0 @@
1
- "use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[555],{54405:(e,t,a)=>{a.d(t,{X:()=>n});var n={interactive:function(){return{url:"/mocks/insights/interactive.json",key:"demo:interactive",normalize:!1}},interactiveMetadata:function(){return{url:"/mocks/insights/interactive-metadata.json",key:"demo:interactive:metadata",normalize:!1}},interactiveResults:function(){return{url:"/mocks/insights/interactive-results.json",key:"demo:interactive:results",normalize:!1}},videoViews:function(){return{url:"/mocks/insights/video-views.json",key:"demo:video:views",normalize:!1}},users:function(){return{url:"/mocks/insights/users.json",key:"demo:users",normalize:!1}},individualHeatmap:function(){return{url:"/mocks/insights/individual-heatmap.json",key:"demo:individual:heatmap",normalize:!1}},aggregateHeatmap:function(){return{url:"/mocks/insights/aggregate-heatmap.json",key:"demo:aggregate:heatmap",normalize:!1}}}},18006:(e,t,a)=>{a.d(t,{c:()=>n,q:()=>r});var n="D8qRe7",r="GRWx6w"},9566:(e,t,a)=>{a.d(t,{G:()=>m,V:()=>u});var n=a(23481),r=a(110),i=a(35223),s=a(14070),l=a(97291),c=a(93975),o=n.T.encloseNamespace("myShares.demoInsights"),m={share:{shareId:"demo-insights",type:c.y.Link},sharedObject:null,shareRecipients:null,dateShared:r.O.subtract(new Date,7,"days").toISOString(),viewCount:23},d={application:l.O.MY_SHARES,action:s.e.MyShares.INTERACTIVE_OVERVIEW_DEMO},u={svgName:i.vn.Analytics,label:o("demoInsights"),appLink:d,group:"insights",className:"btn btn-outline-dark"}},85988:(e,t,a)=>{a.r(t),a.d(t,{MySharesView:()=>se});var n=a(32735),r=a(81886),i=a(23481),s=a(20354),l=a(74917),c=a(87801),o=a(16714),m=a(39151),d=a(1666),u=a(54405),p=a(31949),g=a(25882),h=a(79967),b=a(22902),y=a(79612),f=a(37802),v=a(46390),E=a(86099),k=a(99746),I=a(8935),S=a(75896),j=a(15611),O=a(89965),N=a(83914),w=a(83345),x=a(4594),C=a(35223);const L={noCaret:"_F6P_",filterContainer:"ZBgdA"};function A(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var a=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=a){var n,r,i,s,l=[],c=!0,o=!1;try{if(i=(a=a.call(e)).next,0===t){if(Object(a)!==a)return;c=!1}else for(;!(c=(n=i.call(a)).done)&&(l.push(n.value),l.length!==t);c=!0);}catch(e){o=!0,r=e}finally{try{if(!c&&null!=a.return&&(s=a.return(),Object(s)!==s))return}finally{if(o)throw r}}return l}}(e,t)||F(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 P(e){return function(e){if(Array.isArray(e))return U(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||F(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 F(e,t){if(e){if("string"==typeof e)return U(e,t);var a={}.toString.call(e).slice(8,-1);return"Object"===a&&e.constructor&&(a=e.constructor.name),"Map"===a||"Set"===a?Array.from(e):"Arguments"===a||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(a)?U(e,t):void 0}}function U(e,t){(null==t||t>e.length)&&(t=e.length);for(var a=0,n=Array(t);a<t;a++)n[a]=e[a];return n}var V="insights.insightsTypeFilters",T=i.T.encloseNamespace(V);function M(e){var t=e.breakpoints.xs||e.breakpoints.sm,a=[].concat(P(t?[{label:T("interactives"),filter:x.E.Interactive},{label:T("videos"),filter:x.E.Video},{label:T("clips"),filter:x.E.Clip}]:[]),[{label:T("playlists"),filter:x.E.Playlist},{label:T("series"),filter:x.E.Series}]),i=e.typeIdParams.filter((function(e){return a.some((function(t){return e===t.filter}))})),s=A(n.useState(!1),2),l=s[0],c=s[1],o=A(n.useState(i),2),m=o[0],d=o[1];function u(){var t=e.appLink.params;r.Q.C$.trigger(Object.assign(Object.assign({},e.appLink),{params:Object.assign(Object.assign({},t),{typeId:S.m.uniq([].concat(P(e.typeIdParams),P(m)))})}))}function p(){d([]);var t=e.appLink.params;r.Q.C$.trigger(Object.assign(Object.assign({},e.appLink),{params:Object.assign(Object.assign({},t),{typeId:[]})}))}return n.createElement("div",{className:"d-flex align-items-center fw-semibold"},n.createElement("p",{className:"d-none d-md-inline h6 mb-0"},n.createElement(w.x,{namespace:V,phrase:"filters"})),n.createElement("div",{className:"".concat(L.filterContainer," d-flex flex-grow-1 flex-md-grow-0 border-start ps-0 ps-md-3 ms-0 ms-md-3 gap-2")},n.createElement("div",{className:"d-none d-md-flex gap-2"},n.createElement(R,{typeId:x.E.Interactive,typeFilters:e.typeIdParams,appLink:e.appLink}),n.createElement(R,{typeId:x.E.Video,typeFilters:e.typeIdParams,appLink:e.appLink}),n.createElement(R,{typeId:x.E.Clip,typeFilters:e.typeIdParams,appLink:e.appLink})),n.createElement(I.Z,{onToggle:function(e){c(e),e||u()},show:l,className:"col"},n.createElement(I.Z.Toggle,{className:"".concat(L.noCaret," col-12 col-md-auto"),variant:i.length?"dark":"outline-dark"},n.createElement("div",{className:"d-flex align-items-center justify-content-center gap-2 fw-semibold mb-0"},n.createElement(N.x,{svgName:C.vn.Filter,className:"svg-container d-inline-block d-md-none"}),n.createElement(w.x,{namespace:V,phrase:t?"filters":"moreFilters"}),i.length?" - ".concat(i.length):"")),n.createElement(I.Z.Menu,null,n.createElement("div",{className:"mx-1 px-2 py-1 mb-0"},n.createElement("h2",{className:"h6 mb-3"},n.createElement(w.x,{namespace:V,phrase:"types"})),n.createElement("ul",{className:"list-unstyled me-5"},a.map((function(a){return n.createElement("li",{key:"".concat(a.label,"-filter"),className:"my-1"},n.createElement(O.X,{id:"".concat(a.label,"-filter"),label:a.label,onChange:function(){return e=a.filter,void d(S.m.addOrRemoveImmutable(m,e));var e},checked:(r=a.filter,t?!!m.find((function(e){return e===r}))||!!e.typeIdParams.find((function(e){return e===r})):!!m.find((function(e){return e===r})))}));var r}))),n.createElement("div",{className:"d-flex justify-content-between"},n.createElement("button",{onClick:function(){p(),c(!1)},className:"btn btn-link text-secondary p-0 mb-0"},n.createElement(w.x,{namespace:V,phrase:"resetAll"})),n.createElement("button",{onClick:function(){u(),c(!1)},className:"btn btn-link text-info p-0 mb-0"},n.createElement(w.x,{namespace:V,phrase:"apply"}))))))),!!e.typeIdParams.length&&n.createElement("button",{onClick:p,className:"d-none d-md-block btn btn-link ms-1"},n.createElement(w.x,{namespace:V,phrase:"resetAll"})))}function R(e){var t=e.typeFilters.includes(e.typeId),a=e.appLink,r=a.params,i=S.m.addOrRemoveImmutable(e.typeFilters,e.typeId),s=Object.assign(Object.assign({},a),{params:Object.assign(Object.assign({},r),{typeId:i})});function l(){return e.typeId===x.E.Video?"videos":e.typeId===x.E.Clip?"clips":e.typeId===x.E.Interactive?"interactives":void 0}return n.createElement(j.F,{className:"btn ".concat(t?"btn-dark":"btn-outline-dark"," fw-semibold"),appLink:s,ariaLabel:"".concat(T("ariaFilterBy"),": ").concat(T(l()))},n.createElement(w.x,{namespace:V,phrase:l()}))}var _=a(51922),G=a(18006),D=a(9566);const B={background:"HAuP3"};var z="myShares.demoInsights",H=i.T.encloseNamespace(z);function Z(e){var t=e.liteUrl.includes("staging"),a=e.breakpoints.xs||e.breakpoints.sm;return n.createElement("div",null,n.createElement(_.g,{heading:H("demoHeading"),isFirst:!0}),n.createElement("div",{className:"".concat(B.background," rounded-3 border-md bg-light-orange mb-4")},n.createElement(_.F,{shareData:Object.assign(Object.assign({},D.G),{sharedObject:Object.assign(Object.assign({},e.demoInteractive),{id:t?G.c:G.q})}),getObjectActions:function(){return[Object.assign(Object.assign({},D.V),{button:!a})]},getObjectAppLink:function(){return null},imageCdnUrl:e.imageCdnUrl,yearGroups:e.yearGroups,breakpoints:e.breakpoints},n.createElement("div",{className:"d-inline-block rounded-pill bg-light-blue text-info font-size-sm mt-1 px-2"},n.createElement(w.x,{namespace:z,phrase:"demoInsightPill"})))))}var q=a(67467),Q=a(5056),W=a(28001),X=a(45231),Y=a(65858),$=a(97958),J=a(99742),K=a(14070),ee=a(97291),te="myShares.mySharesEmptyState",ae=i.T.encloseNamespace(te);function ne(){return n.createElement($.u,null,n.createElement($.u.Image,{src:J.W.EmptyStates.MY_VIDEOS_PUBLIC,altText:ae("heading")}),n.createElement($.u.Heading,null,n.createElement(w.x,{namespace:te,phrase:"heading"})),n.createElement($.u.Info,null,n.createElement(w.x,{namespace:te,phrase:"info"})),n.createElement($.u.Cta,{text:i.T.getPhrase(te,"cta"),appLink:{application:ee.O.SIGN_UP,action:K.e.SignUp.SIGN_UP},analyticsData:{},analyticsOptions:{actionType:Y.Vw.Click,location:Y.LZ.MySharesLanding,entity:Y.py.AppLink,workflowPhase:Y.eu.Start,descriptor:Y.Yu.SignUp}}))}var re=a(69003),ie=i.T.encloseNamespace("myShares.myShares");function se(e){var t,a,i,I;(0,y.M)({title:ie("myShares")});var S=(0,b.T)(),j=S.hasPermissions,O=S.hasLocalPermissions,N=(0,f.r)(null),w=N.hasShareFlowV2,x=N.hasClassrooms,C=(0,v.G)().isPlugin,L=(0,h.k)(),A=(0,g.v)().accessPolicy,P=(0,re.cl)(e.typeId),F=!O(o.E.ViewMySharesLanding)||j(o.C.ViewMyShares)&&w,U=w&&j(o.C.ViewInsights),V=null===(t=null==A?void 0:A.metadata)||void 0===t?void 0:t.hasDemoInsights,T=s.a.useBasicFetch(m.L.config()),R=s.a.useBasicFetch(p.N.currentUser()),_=s.a.useBasicFetch((null===(a=R.data)||void 0===a?void 0:a.isAuthenticated)&&d.h.yearGroups(R.data.customerId)),G=s.a.useBasicFetch(V&&u.X.interactiveMetadata()),D=(0,X.a)(P.sentSharesParams,!0,F);return n.useEffect((function(){j(o.C.ViewMyShares)&&w||r.Q.Ab.PageLoad("/")}),[F]),F?n.createElement("div",{className:"px-3"},n.createElement(k.p,{analyticsUrl:null===(i=T.data)||void 0===i?void 0:i.analyticsWebUrl,hasAnalytics:j(o.C.ViewCustomerAnalytics)}),n.createElement("div",{className:"d-flex justify-content-between border-bottom pb-3 mb-3"},n.createElement("h1",{className:"mb-1"},"Reports"),n.createElement(l.B,{hasClassroomsFeature:x})),n.createElement("div",{className:"mb-3"},n.createElement(M,{appLink:P.currentAppLink,typeIdParams:P.typeIdAppLinkParams,breakpoints:L})),V&&G.data&&n.createElement(Z,{demoInteractive:G.data,liteUrl:null===(I=T.data)||void 0===I?void 0:I.liteUrl,breakpoints:L,imageCdnUrl:D.imageCdnUrl,yearGroups:_.data}),function(){var e;return D.showPartialLoading?n.createElement(W.L,null):D.sentShares.length?n.createElement(n.Fragment,null,n.createElement(Q.R,{sentShares:D.sentShares,sharedObjects:D.sharedObjects.items,shareRecipients:D.shareRecipients.items,interactivesPendingReview:D.interactivesPendingReview.itemsArr,getObjectAppLink:E.Qh,getObjectActions:function(e,t){return(0,re.sD)(e,t,P.audienceAppLinkParams,U,C,L)},groupByDateShared:!0,breakpoints:L,hasDemoInsights:V,imageCdnUrl:null===(e=T.data)||void 0===e?void 0:e.imageCdnUrl,yearGroups:_.data}),(D.hasMore||D.isFetching)&&n.createElement(c._,{isFetching:D.isFetching,fetchNext:D.fetchNext,nextCursor:D.nextCursor})):n.createElement(q.o,null)}()):n.createElement(ne,null)}}}]);
2
- //# sourceMappingURL=555-d811b49435-lite.chunk.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"scripts/555-d811b49435-lite.chunk.js","mappings":"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","sources":["file:///app/packages/libs/shared/src/flight-requests/InsightsDemoRequests.ts","file:///app/packages/projects/lite/src/apps/my-shares/constants/DemoInsights.ts","file:///app/packages/projects/lite/src/apps/my-shares/constants/MySharesDemoInsights.ts","file:///app/packages/projects/lite/src/apps/my-shares/components/insights-list/type-filter/insights-type-filters.scss","file:///app/packages/projects/lite/src/apps/my-shares/components/insights-list/type-filter/InsightsTypeFilters.tsx","file:///app/packages/projects/lite/src/apps/my-shares/components/my-shares-demo-insight/my-shares-demo-insights.scss","file:///app/packages/projects/lite/src/apps/my-shares/components/my-shares-demo-insight/MySharesDemoInsight.tsx","file:///app/packages/projects/lite/src/apps/my-shares/views/my-shares/empty-state/MySharesEmptyState.tsx","file:///app/packages/projects/lite/src/apps/my-shares/views/my-shares/MySharesView.tsx"],"sourcesContent":["import { Flight } from 'libs/common/react/index';\n\nexport const InsightsDemoRequests = {\n interactive(): Flight.Request {\n return {\n url: `/mocks/insights/interactive.json`,\n key: `demo:interactive`,\n normalize: false\n };\n },\n\n interactiveMetadata(): Flight.Request {\n return {\n url: `/mocks/insights/interactive-metadata.json`,\n key: `demo:interactive:metadata`,\n normalize: false\n };\n },\n\n interactiveResults(): Flight.Request {\n return {\n url: `/mocks/insights/interactive-results.json`,\n key: `demo:interactive:results`,\n normalize: false\n };\n },\n\n videoViews(): Flight.Request {\n return {\n url: `/mocks/insights/video-views.json`,\n key: `demo:video:views`,\n normalize: false\n };\n },\n\n users(): Flight.Request {\n return {\n url: `/mocks/insights/users.json`,\n key: `demo:users`,\n normalize: false\n };\n },\n\n individualHeatmap(): Flight.Request {\n return {\n url: `/mocks/insights/individual-heatmap.json`,\n key: `demo:individual:heatmap`,\n normalize: false\n };\n },\n\n aggregateHeatmap(): Flight.Request {\n return {\n url: `/mocks/insights/aggregate-heatmap.json`,\n key: `demo:aggregate:heatmap`,\n normalize: false\n };\n }\n};","export const DEMO_INTERACTIVE_STAGING_ID = 'D8qRe7';\nexport const DEMO_INTERACTIVE_PROD_ID = 'GRWx6w';","import { Core } from 'libs/common/backbone/index';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { DateHelper } from 'libs/common/react/utils/DateHelper';\n\nimport { ActionOptions } from 'libs/shared/components/actions/Actions';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\n\nimport { MySharesTableData } from 'apps/my-shares/components/my-shares-table/MySharesTableUtils';\nimport { ShareType } from 'apps/share-v2/enums/ShareType';\nimport { ShareLink } from 'apps/share-v2/interfaces/ShareLink';\n\nconst namespace = 'myShares.demoInsights';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nconst DEMO_INSIGHT_DAYS_AGO = 7;\n\nexport const DEMO_INSIGHTS_SHARE: MySharesTableData = {\n share: {\n shareId: 'demo-insights',\n type: ShareType.Link\n } as ShareLink,\n sharedObject: null,\n shareRecipients: null,\n dateShared: DateHelper.subtract(new Date(), DEMO_INSIGHT_DAYS_AGO, 'days').toISOString(),\n viewCount: 23\n};\n\nconst DEMO_INSIGHTS_APPLINK: Core.AppLink = {\n application: AppChannels.MY_SHARES,\n action: Actions.MyShares.INTERACTIVE_OVERVIEW_DEMO\n};\n\nexport const DEMO_INSIGHTS_ACTION: ActionOptions = {\n svgName: cvSvgLibrary.Analytics,\n label: getPhrase('demoInsights'),\n appLink: DEMO_INSIGHTS_APPLINK,\n group: 'insights',\n className: 'btn btn-outline-dark'\n};\n","// extracted by mini-css-extract-plugin\nexport default {\"noCaret\":\"_F6P_\",\"filterContainer\":\"ZBgdA\"};","import React from 'react';\nimport { Dropdown } from 'react-bootstrap';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { HashObject } from 'libs/common/react/interfaces';\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { Checkbox } from 'libs/shared/components/forms/form-checkbox/Checkbox';\nimport { SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { Breakpoints } from 'libs/shared/hooks/useBreakpoints';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport styles from './insights-type-filters.scss';\n\nconst namespace = 'insights.insightsTypeFilters';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface InsightsTypeFilterProps {\n appLink: Core.AppLink;\n typeIdParams: MasterType[];\n breakpoints: Breakpoints;\n}\n\nexport function InsightsTypeFilters(props: InsightsTypeFilterProps) {\n const isMobile = props.breakpoints.xs || props.breakpoints.sm;\n\n const moreFilterOptions = [\n ...(isMobile ? [{\n label: getPhrase('interactives'),\n filter: MasterType.Interactive\n }, {\n label: getPhrase('videos'),\n filter: MasterType.Video\n }, {\n label: getPhrase('clips'),\n filter: MasterType.Clip\n }] : []),\n {\n label: getPhrase('playlists'),\n filter: MasterType.Playlist\n }, {\n label: getPhrase('series'),\n filter: MasterType.Series\n }];\n\n const moreFiltersSelected = getMoreFiltersSelected();\n\n const [ showDropdown, setShowDropdown ] = React.useState(false);\n const [ moreFilters, setMoreFilters ] = React.useState(moreFiltersSelected);\n\n function applyFilter() {\n const currentParams = props.appLink.params as HashObject;\n\n Core.AppLinkHelper.trigger({\n ...props.appLink,\n params: {\n ...currentParams,\n typeId: ArrayHelper.uniq([\n ...props.typeIdParams,\n ...moreFilters\n ])\n }\n });\n }\n\n function resetFilters() {\n setMoreFilters([]);\n\n const currentParams = props.appLink.params as HashObject;\n\n Core.AppLinkHelper.trigger({\n ...props.appLink,\n params: {\n ...currentParams,\n typeId: []\n }\n });\n }\n\n function onToggleDropdown(isShowing: boolean): void {\n setShowDropdown(isShowing);\n\n if (isShowing)\n return;\n\n applyFilter();\n }\n\n function onClickApply() {\n applyFilter();\n setShowDropdown(false);\n }\n\n function onClickReset() {\n resetFilters();\n setShowDropdown(false);\n }\n\n function onSelectFilter(filter: MasterType) {\n setMoreFilters(ArrayHelper.addOrRemoveImmutable(moreFilters, filter));\n }\n\n function isFilterSelected(filter: MasterType) {\n if (isMobile) {\n return !!moreFilters.find(selectedFilter => selectedFilter === filter) ||\n !!props.typeIdParams.find(selectedFilter => selectedFilter === filter);\n }\n\n return !!moreFilters.find(selectedFilter => selectedFilter === filter);\n }\n\n function getMoreFiltersSelected() {\n return props.typeIdParams.filter(typeId =>\n moreFilterOptions.some(option => typeId === option.filter));\n }\n\n return (\n <div className='d-flex align-items-center fw-semibold'>\n <p className='d-none d-md-inline h6 mb-0'><Text namespace={namespace} phrase='filters' /></p>\n <div className={`${styles.filterContainer} d-flex flex-grow-1 flex-md-grow-0 border-start ps-0 ps-md-3 ms-0 ms-md-3 gap-2`}>\n <div className='d-none d-md-flex gap-2'>\n <InsightTypeFilterButton\n typeId={MasterType.Interactive}\n typeFilters={props.typeIdParams}\n appLink={props.appLink}\n />\n <InsightTypeFilterButton typeId={MasterType.Video} typeFilters={props.typeIdParams} appLink={props.appLink} />\n <InsightTypeFilterButton typeId={MasterType.Clip} typeFilters={props.typeIdParams} appLink={props.appLink} />\n </div>\n <Dropdown onToggle={onToggleDropdown} show={showDropdown} className='col'>\n <Dropdown.Toggle\n className={`${styles.noCaret} col-12 col-md-auto`}\n variant={moreFiltersSelected.length ? 'dark' : 'outline-dark'}\n >\n <div className='d-flex align-items-center justify-content-center gap-2 fw-semibold mb-0'>\n <SvgContainer svgName={cvSvgLibrary.Filter} className='svg-container d-inline-block d-md-none' />\n <Text namespace={namespace} phrase={isMobile ? 'filters' : 'moreFilters'} />\n {moreFiltersSelected.length ? ` - ${moreFiltersSelected.length}` : ''}\n </div>\n </Dropdown.Toggle>\n\n <Dropdown.Menu>\n <div className='mx-1 px-2 py-1 mb-0'>\n <h2 className='h6 mb-3'><Text namespace={namespace} phrase='types' /></h2>\n <ul className='list-unstyled me-5'>\n {moreFilterOptions.map(option => (\n <li key={`${option.label}-filter`} className='my-1'>\n <Checkbox\n id={`${option.label}-filter`}\n label={option.label}\n onChange={() => onSelectFilter(option.filter)}\n checked={isFilterSelected(option.filter)}\n />\n </li>\n ))}\n </ul>\n <div className='d-flex justify-content-between'>\n <button onClick={onClickReset} className='btn btn-link text-secondary p-0 mb-0'>\n <Text namespace={namespace} phrase='resetAll' />\n </button>\n <button onClick={onClickApply} className='btn btn-link text-info p-0 mb-0'>\n <Text namespace={namespace} phrase='apply' />\n </button>\n </div>\n </div>\n </Dropdown.Menu>\n </Dropdown>\n </div>\n {!!props.typeIdParams.length &&\n <button onClick={resetFilters} className='d-none d-md-block btn btn-link ms-1'>\n <Text namespace={namespace} phrase='resetAll' />\n </button>\n }\n </div>\n );\n}\n\ninterface InsightTypeFilterButtonProps {\n typeId: MasterType;\n typeFilters: MasterType[];\n appLink: Core.AppLink;\n}\n\nfunction InsightTypeFilterButton(props: InsightTypeFilterButtonProps) {\n const selected = props.typeFilters.includes(props.typeId);\n\n const currentAppLink = props.appLink;\n const currentParams = currentAppLink.params as HashObject;\n\n const newType: MasterType[] = ArrayHelper.addOrRemoveImmutable(props.typeFilters, props.typeId);\n\n const newAppLink = {\n ...currentAppLink,\n params: {\n ...currentParams,\n typeId: newType\n }\n };\n\n function getTypePhrase(): string {\n if (props.typeId === MasterType.Video) return 'videos';\n if (props.typeId === MasterType.Clip) return 'clips';\n if (props.typeId === MasterType.Interactive) return 'interactives';\n }\n\n return (\n <AppLink\n className={`btn ${selected ? 'btn-dark' : 'btn-outline-dark'} fw-semibold`}\n appLink={newAppLink}\n ariaLabel={`${getPhrase('ariaFilterBy')}: ${getPhrase(getTypePhrase())}`}\n >\n <Text namespace={namespace} phrase={getTypePhrase()} />\n </AppLink>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"background\":\"HAuP3\"};","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { Text } from 'libs/shared/components/text/Text';\nimport { Breakpoints } from 'libs/shared/hooks/useBreakpoints';\nimport { InteractiveMetadata, YearGroup } from 'libs/shared/interfaces';\n\nimport { MySharesTableHeading, MySharesTableRow } from 'apps/my-shares/components/my-shares-table-row/MySharesTableRow';\nimport { DEMO_INTERACTIVE_PROD_ID, DEMO_INTERACTIVE_STAGING_ID } from 'apps/my-shares/constants/DemoInsights';\nimport { DEMO_INSIGHTS_ACTION, DEMO_INSIGHTS_SHARE } from 'apps/my-shares/constants/MySharesDemoInsights';\n\nimport styles from './my-shares-demo-insights.scss';\n\nconst namespace = 'myShares.demoInsights';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface MySharesDemoInsightProps {\n demoInteractive: InteractiveMetadata;\n liteUrl: string;\n imageCdnUrl: string;\n yearGroups: YearGroup[];\n breakpoints: Breakpoints;\n}\n\nexport function MySharesDemoInsight(props: MySharesDemoInsightProps) {\n const isStaging = props.liteUrl.includes('staging');\n\n const isMobile = props.breakpoints.xs || props.breakpoints.sm;\n\n function getDemoInteractive() {\n return {\n ...props.demoInteractive,\n id: isStaging ? DEMO_INTERACTIVE_STAGING_ID : DEMO_INTERACTIVE_PROD_ID\n };\n }\n\n function getObjectActions() {\n return [\n {\n ...DEMO_INSIGHTS_ACTION,\n button: !isMobile\n }\n ];\n }\n\n return (\n <div>\n <MySharesTableHeading heading={getPhrase('demoHeading')} isFirst={true} />\n\n <div className={`${styles.background} rounded-3 border-md bg-light-orange mb-4`}>\n <MySharesTableRow\n shareData={{ ...DEMO_INSIGHTS_SHARE, sharedObject: getDemoInteractive() }}\n getObjectActions={getObjectActions}\n getObjectAppLink={() => null}\n imageCdnUrl={props.imageCdnUrl}\n yearGroups={props.yearGroups}\n breakpoints={props.breakpoints}\n >\n <div className='d-inline-block rounded-pill bg-light-blue text-info font-size-sm mt-1 px-2'>\n <Text namespace={namespace} phrase='demoInsightPill' />\n </div>\n </MySharesTableRow>\n </div>\n </div>\n );\n}","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { EntityType, LocationContext, SignUpDescriptors, UserAction, WorkflowPhase } from 'libs/analytics/interfaces';\n\nimport { EmptyState } from 'libs/shared/components/empty-states/EmptyState';\nimport { Text } from 'libs/shared/components/text/Text';\n\nimport { ImageUrls } from 'shared/constants/ImageUrls';\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\n\nconst namespace = 'myShares.mySharesEmptyState';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nexport function MySharesEmptyState() {\n return (\n <EmptyState>\n <EmptyState.Image src={ImageUrls.EmptyStates.MY_VIDEOS_PUBLIC} altText={getPhrase('heading')} />\n <EmptyState.Heading><Text namespace={namespace} phrase='heading' /></EmptyState.Heading>\n <EmptyState.Info><Text namespace={namespace} phrase='info' /></EmptyState.Info>\n <EmptyState.Cta\n text={LanguageService.getPhrase(namespace, 'cta')}\n appLink={{\n application: AppChannels.SIGN_UP,\n action: Actions.SignUp.SIGN_UP\n }}\n analyticsData={{}}\n analyticsOptions={{\n actionType: UserAction.Click,\n location: LocationContext.MySharesLanding,\n entity: EntityType.AppLink,\n workflowPhase: WorkflowPhase.Start,\n descriptor: SignUpDescriptors.SignUp\n }}\n />\n </EmptyState>\n );\n}","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Flight } from 'libs/common/react/index';\n\nimport { AudienceFilterView } from 'libs/shared/apps/analytics/views/audience-filter/AudienceFilterView';\nimport { InfiniteScrollFooter } from 'libs/shared/components/infinite-scroll-footer/InfiniteScrollFooter';\nimport { LocalPermissionName, PermissionName } from 'libs/shared/enums/PermissionName';\nimport { ConfigRequests } from 'libs/shared/flight-requests/ConfigRequests';\nimport { CustomerRequests } from 'libs/shared/flight-requests/CustomerRequests';\nimport { InsightsDemoRequests } from 'libs/shared/flight-requests/InsightsDemoRequests';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { useAccessPolicy } from 'libs/shared/hooks/useAccessPolicy';\nimport { useBreakpoints } from 'libs/shared/hooks/useBreakpoints';\nimport { usePermissions } from 'libs/shared/hooks/usePermissions';\nimport { useSetPageMetadata } from 'libs/shared/hooks/useSetPageMetadata';\nimport { useSettings } from 'libs/shared/hooks/useSettings';\nimport { Config, CurrentUser, InteractiveMetadata, YearGroup } from 'libs/shared/interfaces';\n\nimport { usePluginHelper } from 'shared/hooks/use-plugin-helper/usePluginHelper';\nimport { getObjectAppLink } from 'shared/utils/ObjectAppLinkHelper';\n\nimport { InsightsAdminAlert } from 'apps/my-shares/components/insights-admin-alert/InsightsAdminAlert';\nimport { InsightsTypeFilters } from 'apps/my-shares/components/insights-list/type-filter/InsightsTypeFilters';\nimport { MySharesDemoInsight } from 'apps/my-shares/components/my-shares-demo-insight/MySharesDemoInsight';\nimport { MySharesTableEmptyState } from 'apps/my-shares/components/my-shares-table/empty-state/MySharesTableEmptyState';\nimport { MySharesTable } from 'apps/my-shares/components/my-shares-table/MySharesTable';\nimport { PartialMySharesTable } from 'apps/my-shares/components/my-shares-table/partial-loading/PartialMySharesTable';\nimport { useMySharesTable } from 'apps/my-shares/hooks/useMySharesTable';\nimport { MySharesEmptyState } from 'apps/my-shares/views/my-shares/empty-state/MySharesEmptyState';\nimport { getShareObjectActions, getSharesParams } from 'apps/my-shares/views/my-shares/MySharesViewUtils';\n\nconst namespace = 'myShares.myShares';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface MySharesViewProps {\n typeId: string | string[];\n}\n\nexport function MySharesView(props: MySharesViewProps) {\n // Shared hooks\n useSetPageMetadata({ title: getPhrase('myShares') });\n const { hasPermissions, hasLocalPermissions } = usePermissions();\n const { hasShareFlowV2, hasClassrooms } = useSettings(null);\n const { isPlugin } = usePluginHelper();\n const breakpoints = useBreakpoints();\n const { accessPolicy } = useAccessPolicy();\n\n const sharesParams = getSharesParams(props.typeId);\n\n // Local variables\n const shouldFetch = !hasLocalPermissions(LocalPermissionName.ViewMySharesLanding) ||\n hasPermissions(PermissionName.ViewMyShares) && hasShareFlowV2;\n const hasInsightsPermission = hasShareFlowV2 && hasPermissions(PermissionName.ViewInsights);\n const showDemoInsight = accessPolicy?.metadata?.hasDemoInsights;\n\n // Flight fetching\n const config = Flight.useBasicFetch<Config>(ConfigRequests.config());\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n const yearGroups = Flight.useBasicFetch<YearGroup[]>(\n currentUser.data?.isAuthenticated && CustomerRequests.yearGroups(currentUser.data.customerId)\n );\n const demoInteractive = Flight.useBasicFetch<InteractiveMetadata>(showDemoInsight &&\n InsightsDemoRequests.interactiveMetadata());\n\n const shareData = useMySharesTable(sharesParams.sentSharesParams, true, shouldFetch);\n\n React.useEffect(() => {\n if (!(hasPermissions(PermissionName.ViewMyShares) && hasShareFlowV2))\n Core.LocationUtils.PageLoad('/');\n }, [shouldFetch]);\n\n if (!shouldFetch)\n return <MySharesEmptyState />;\n\n return (\n <div className='px-3'>\n <InsightsAdminAlert\n analyticsUrl={config.data?.analyticsWebUrl}\n hasAnalytics={hasPermissions(PermissionName.ViewCustomerAnalytics)}\n />\n\n <div className='d-flex justify-content-between border-bottom pb-3 mb-3'>\n <h1 className='mb-1'>Reports</h1>\n\n <AudienceFilterView hasClassroomsFeature={hasClassrooms} />\n </div>\n\n <div className='mb-3'>\n <InsightsTypeFilters\n appLink={sharesParams.currentAppLink}\n typeIdParams={sharesParams.typeIdAppLinkParams}\n breakpoints={breakpoints}\n />\n </div>\n\n {showDemoInsight && demoInteractive.data &&\n <MySharesDemoInsight\n demoInteractive={demoInteractive.data}\n liteUrl={config.data?.liteUrl}\n breakpoints={breakpoints}\n imageCdnUrl={shareData.imageCdnUrl}\n yearGroups={yearGroups.data}\n />\n }\n\n {(() => {\n if (shareData.showPartialLoading)\n return <PartialMySharesTable />;\n\n if (!shareData.sentShares.length)\n return (\n <MySharesTableEmptyState />\n );\n\n return (\n <>\n <MySharesTable\n sentShares={shareData.sentShares}\n sharedObjects={shareData.sharedObjects.items}\n shareRecipients={shareData.shareRecipients.items}\n interactivesPendingReview={shareData.interactivesPendingReview.itemsArr}\n getObjectAppLink={getObjectAppLink}\n getObjectActions={(obj, shareId) => getShareObjectActions(\n obj,\n shareId,\n sharesParams.audienceAppLinkParams,\n hasInsightsPermission,\n isPlugin,\n breakpoints\n )}\n groupByDateShared\n breakpoints={breakpoints}\n hasDemoInsights={showDemoInsight}\n imageCdnUrl={config.data?.imageCdnUrl}\n yearGroups={yearGroups.data}\n />\n {(shareData.hasMore || shareData.isFetching) &&\n <InfiniteScrollFooter\n isFetching={shareData.isFetching}\n fetchNext={shareData.fetchNext}\n nextCursor={shareData.nextCursor}\n />\n }\n </>\n );\n })()}\n </div>\n );\n}\n"],"names":["InsightsDemoRequests","interactive","url","key","normalize","interactiveMetadata","interactiveResults","videoViews","users","individualHeatmap","aggregateHeatmap","DEMO_INTERACTIVE_STAGING_ID","DEMO_INTERACTIVE_PROD_ID","getPhrase","DEMO_INSIGHTS_SHARE","share","shareId","type","sharedObject","shareRecipients","dateShared","Date","toISOString","viewCount","DEMO_INSIGHTS_APPLINK","application","action","DEMO_INSIGHTS_ACTION","svgName","label","appLink","group","className","namespace","LanguageService","InsightsTypeFilters","props","isMobile","breakpoints","xs","sm","moreFilterOptions","filter","MasterType","moreFiltersSelected","typeIdParams","typeId","some","option","showDropdown","setShowDropdown","moreFilters","setMoreFilters","applyFilter","currentParams","params","ArrayHelper","resetFilters","Text","phrase","InsightTypeFilterButton","typeFilters","Dropdown","onToggle","isShowing","show","variant","length","SvgContainer","map","Checkbox","id","onChange","checked","find","selectedFilter","onClick","selected","includes","currentAppLink","newType","newAppLink","getTypePhrase","AppLink","ariaLabel","MySharesDemoInsight","isStaging","liteUrl","heading","isFirst","MySharesTableRow","shareData","demoInteractive","getObjectActions","button","getObjectAppLink","imageCdnUrl","yearGroups","MySharesEmptyState","EmptyState","src","ImageUrls","altText","text","analyticsData","analyticsOptions","actionType","location","entity","workflowPhase","descriptor","SignUp","MySharesView","useSetPageMetadata","title","usePermissions","hasPermissions","hasLocalPermissions","useSettings","hasShareFlowV2","hasClassrooms","isPlugin","usePluginHelper","useBreakpoints","accessPolicy","useAccessPolicy","sharesParams","shouldFetch","PermissionName","hasInsightsPermission","showDemoInsight","metadata","hasDemoInsights","config","ConfigRequests","currentUser","UserRequests","data","isAuthenticated","CustomerRequests","customerId","useMySharesTable","sentSharesParams","InsightsAdminAlert","analyticsUrl","analyticsWebUrl","hasAnalytics","AudienceFilterView","hasClassroomsFeature","typeIdAppLinkParams","showPartialLoading","PartialMySharesTable","sentShares","MySharesTable","sharedObjects","items","interactivesPendingReview","itemsArr","obj","audienceAppLinkParams","groupByDateShared","hasMore","isFetching","InfiniteScrollFooter","fetchNext","nextCursor","MySharesTableEmptyState"],"sourceRoot":""}
@@ -1,2 +0,0 @@
1
- "use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[6046],{5255:(e,t,a)=>{a.d(t,{Y:()=>o});var r=a(20354),n=a(30439);function i(e){return i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},i(e)}function o(e){var t,a=r.a.useBasicFetch(e&&n.o.getAnonSessions(e));return(null===(t=a.data)||void 0===t?void 0:t.length)?a.data.reduce((function(e,t){return Object.assign(Object.assign({},e),(a={},r=t.sessionId,n=t,(r=function(e){var t=function(e){if("object"!=i(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var a=t.call(e,"string");if("object"!=i(a))return a;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==i(t)?t:t+""}(r))in a?Object.defineProperty(a,r,{value:n,enumerable:!0,configurable:!0,writable:!0}):a[r]=n,a));var a,r,n}),{}):{}}},74901:(e,t,a)=>{function r(e){return function(e){if(Array.isArray(e))return n(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 n(e,t);var a={}.toString.call(e).slice(8,-1);return"Object"===a&&e.constructor&&(a=e.constructor.name),"Map"===a||"Set"===a?Array.from(e):"Arguments"===a||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(a)?n(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 n(e,t){(null==t||t>e.length)&&(t=e.length);for(var a=0,r=Array(t);a<t;a++)r[a]=e[a];return r}a.d(t,{K:()=>i});var i=function(e){var t=[],a=[];return e.users&&t.push.apply(t,r(e.users)),e.classrooms&&a.push.apply(a,r(e.classrooms)),e.classroomGroups&&a.push.apply(a,r(e.classroomGroups)),{userId:t,groupId:a}}},94644:(e,t,a)=>{a.d(t,{r:()=>d});var r=a(50242),n=a(81886),i=a(67058),o=a(14553),s=a(49267),u=a(49075),c={notFound:i.d,forbidden:{rating:o.q,yearLevel:o.q,region:s.a,privacy:o.q},badRequest:u._,internalServerError:u._};function d(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},a=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(e){var i;i="number"==typeof e?e:e.status;var o=Object.assign(Object.assign({},c),t);i&&n.Q.Ry.isStatusCodeError(i)&&(i!==r.o.InternalServer?i!==r.o.NotFound?i!==r.o.Forbidden?a.badRequest||n.Q.Ry.throw(new o.badRequest):a.forbidden||n.Q.Ry.throw(new o.forbidden.privacy):a.notFound||n.Q.Ry.throw(new o.notFound):a.internalServerError||n.Q.Ry.throw(new u._))}}},17913:(e,t,a)=>{a.d(t,{u:()=>o});var r=a(97395),n=a(110),i=a(62875),o={individualEngagement:function(e,t,a,n){var o=Object.assign({objectId:e},t);return a&&(o.sharerId=a),n&&(o.includeAnonViews=!0),{url:r._.urlBuilder("{gateway}/v1/analytics/heat-map",o),key:(0,i.H)("engagement:".concat(e,":").concat(n),t,a),formatData:function(e){var t;return Object.assign(Object.assign({},e),{data:null===(t=e.data)||void 0===t?void 0:t.map((function(e){var t;return Object.assign(Object.assign({},e),{heatMap:null!==(t=e.heatMap)&&void 0!==t?t:[]})}))})},normalize:!1}},aggregateEngagement:function(e,t,a,n){var o=Object.assign({objectId:e},t);return a&&(o.sharerId=a),n&&(o.includeAnonViews=!0),{url:r._.urlBuilder("{gateway}/v1/analytics/heat-map/aggregations",o),key:(0,i.H)("aggregate:engagement:".concat(e,":").concat(n),t,a),formatData:function(e){var t;return Object.assign(Object.assign({},e),{heatMap:null!==(t=e.heatMap)&&void 0!==t?t:[]})},normalize:!1}},views:function(e,t,a,o){var s=Object.assign(Object.assign({},e),{timeOffset:n.O.getTimezoneOffset()});return t&&(s.objectId=t),a&&(s.sharerId=a),o&&(s.includeAnonViews=!0),{url:r._.urlBuilder("{gateway}/v1/analytics/video-views",s),key:(0,i.H)("video:views:".concat(t,":").concat(o),e,a),normalize:!1}}}},91286:(e,t,a)=>{a.d(t,{v:()=>o});var r=a(32735),n=a(94644);function i(e){return e.map((function(e){return e.statusCode})).join(":")}function o(e,t,a){var o=Array.isArray(e)?e:[e];(0,r.useEffect)((function(){o.forEach((function(e){(0,n.r)(e.statusCode,t,a)}))}),[i(o),t,a])}},62875:(e,t,a)=>{function r(e,t,a){var r="".concat(e,":").concat(t.start,":").concat(t.end),n=Array.isArray(t.userId)?t.userId.sort().join(":"):t.userId,i=Array.isArray(t.groupId)?t.groupId.sort().join(":"):t.groupId;return n&&(r+=":".concat(n)),i&&(r+=":".concat(i)),a&&(r+=":".concat(a)),r}a.d(t,{H:()=>r})},56046:(e,t,a)=>{a.r(t),a.d(t,{InsightsHeatmapView:()=>_});var r=a(32735),n=a(23481),i=a(2948),o=a(20354),s=a(5255),u=a(4606),c=a(26025),d=a(74901),l=a(40003),v=a(30439),f=a(4594),g=a(60051),y=a(16714),m=a(39151),p=a(47812),b=a(31949),h=a(17913),I=a(91286),w=a(93322),j=a(22902),A=a(79612),O=a(37802),S=a(31908),E=a(86702),k=a(26203),F=a(64176),B=a(10447);function R(e,t){(null==t||t>e.length)&&(t=e.length);for(var a=0,r=Array(t);a<t;a++)r[a]=e[a];return r}var L=n.T.encloseNamespace("shared.insightsHeatmap");function _(e){var t,a,n,_,C,M,V,P,U,q=(P=(0,i.D)(E.y.ANONYMISE_USERS),U=1,function(e){if(Array.isArray(e))return e}(P)||function(e,t){var a=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=a){var r,n,i,o,s=[],u=!0,c=!1;try{if(i=(a=a.call(e)).next,0===t){if(Object(a)!==a)return;u=!1}else for(;!(u=(r=i.call(a)).done)&&(s.push(r.value),s.length!==t);u=!0);}catch(e){c=!0,n=e}finally{try{if(!u&&null!=a.return&&(o=a.return(),Object(o)!==o))return}finally{if(c)throw n}}return s}}(P,U)||function(e,t){if(e){if("string"==typeof e)return R(e,t);var a={}.toString.call(e).slice(8,-1);return"Object"===a&&e.constructor&&(a=e.constructor.name),"Map"===a||"Set"===a?Array.from(e):"Arguments"===a||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(a)?R(e,t):void 0}}(P,U)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}())[0];(0,w.F)();var H=(0,O.r)(null).hasShareFlowV2,T=(0,j.T)().hasPermissions,D=(0,O.r)(null).publicInteractiveAttempts,N=o.a.useBasicFetch(b.N.currentUser()),Q=S.M.getVideoRequest(e.videoId,e.typeId),z=o.a.useBasicFetch(Q),K=o.a.useBasicFetch(m.L.config()),$=o.a.useBasicFetch(v.o.getShareLinkByObjectId(e.videoId)),Y=(0,s.Y)(null===(t=$.data)||void 0===t?void 0:t.id),x=c.B.getAudienceAppLinkParams(),G=c.B.getDateRangeAppLinkParams(),W=Object.assign(Object.assign({},(0,l.wO)((0,l.Hb)(),G)),(0,d.K)(x)),J=o.a.useBasicFetch(N.data&&h.u.aggregateEngagement(e.videoId,W,N.data.id,D)),X=o.a.useBasicFetch(N.data&&h.u.individualEngagement(e.videoId,W,null===(a=N.data)||void 0===a?void 0:a.id,D)),Z=(null===(_=null===(n=X.data)||void 0===n?void 0:n.data)||void 0===_?void 0:_.map((function(e){return e.userId})).filter(Boolean))||[],ee=(0,u.U)(Z),te=ee.users,ae=ee.isLoading,re=o.a.useBasicFetch(N.data&&h.u.views(W,e.videoId,null===(C=N.data)||void 0===C?void 0:C.id,D)),ne=o.a.useBasicFetch(p.k.createViewKey(e.videoId,g.f.MasterObject));(0,A.M)({title:z.data?L("pageTitle",{video:null===(M=z.data)||void 0===M?void 0:M.name}):null}),(0,I.v)(z);var ie=N.data&&re.data&&z.data&&J.data&&ne.data,oe=!(!X.data||Z.length&&ae),se=Object.assign(Object.assign({},x),G);return r.createElement("div",{className:"px-3"},r.createElement(k.j,{video:z.data,dateRangeAppLinkParams:G,tabs:e.typeId===f.E.Interactive?(0,B.kj)(e.videoId,"heatmap",se):e.typeId===f.E.Clip?(0,B.$o)(e.videoId,"heatmap",se):(0,B.$6)(e.videoId,"heatmap",se),hasAnalytics:T(y.C.ViewCustomerAnalytics),analyticsWebUrl:null===(V=K.data)||void 0===V?void 0:V.analyticsWebUrl,hasShareFlowV2:H}),r.createElement(F.w,{aggregateEngagement:J.data,individualEngagement:X.data,videoViews:re.data,config:K.data,users:te,viewKey:ne.data,hasDataLoaded:!!ie,tableDataLoaded:oe,anonymiseUsers:q,audienceAppLinkParams:x,dateRangeAppLinkParams:G,anonSessions:Y}))}}}]);
2
- //# sourceMappingURL=6046-44c115a89c-lite.chunk.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"scripts/6046-44c115a89c-lite.chunk.js","mappings":"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","sources":["file:///app/packages/libs/shared/src/apps/analytics/hooks/UseAnonSessions.ts","file:///app/packages/libs/shared/src/apps/analytics/utils/AudienceUtils.ts","file:///app/packages/libs/shared/src/errors/handlers/HttpErrorHandlers.ts","file:///app/packages/libs/shared/src/flight-requests/VideoViewRequests.ts","file:///app/packages/libs/shared/src/hooks/UseHandleObjectError.ts","file:///app/packages/libs/shared/src/utils/AnalyticsRequestUtils.ts","file:///app/packages/projects/lite/src/apps/my-shares/views/heatmap/InsightsHeatmapView.tsx"],"sourcesContent":["import { Flight } from 'libs/common/react/index';\n\nimport { ShareRequests } from 'libs/shared/apps/share/flight-requests/ShareRequests';\n\nexport interface AnonSession {\n sessionId: string;\n sessionName: string;\n}\n\nexport interface AnonSessions extends Record<string, AnonSession> {}\n\nexport function useAnonSessions(shareId: string): AnonSessions {\n const anonSessions = Flight.useBasicFetch<AnonSession[]>(shareId && ShareRequests.getAnonSessions(shareId));\n\n if (!anonSessions.data?.length)\n return {};\n\n return anonSessions.data.reduce((prev, current) => ({ ...prev, [current.sessionId]: current }), {});\n}","import { AudienceQueryParams } from 'libs/shared/apps/analytics/interfaces/AudienceQueryParams';\n\nexport const getAudienceParams = (queryParams: AudienceQueryParams) => {\n const userId: string[] = [];\n const groupId: string[] = [];\n\n if (queryParams.users)\n userId.push(...queryParams.users);\n\n if (queryParams.classrooms)\n groupId.push(...queryParams.classrooms);\n\n if (queryParams.classroomGroups)\n groupId.push(...queryParams.classroomGroups);\n return {\n userId,\n groupId\n };\n};","import { BaseError } from 'libs/common/backbone/core/BaseError';\nimport { HttpStatus } from 'libs/common/backbone/enums/HttpStatus';\nimport { Xhr } from 'libs/common/backbone/interfaces';\nimport { Core } from 'libs/common/core';\n\nimport { NotFoundError } from 'libs/shared/errors/general/not-found/NotFoundError';\nimport { PrivateResourceError } from 'libs/shared/errors/general/private-resource/PrivateResourceError';\nimport { RegionLockedResourceError } from 'libs/shared/errors/general/region-locked-resource/RegionLockedResourceError';\nimport { UnspecifiedError } from 'libs/shared/errors/general/unspecified-error/UnspecifiedError';\nimport { VideoTypes } from 'libs/shared/interfaces';\n\nexport interface HttpErrorMap {\n notFound?: new () => BaseError;\n forbidden?: {\n rating?: new (description: string) => BaseError;\n yearLevel?: new (description: string) => BaseError;\n region?: new () => BaseError;\n privacy?: new (video?: VideoTypes) => BaseError;\n };\n badRequest?: new () => BaseError;\n internalServerError?: new () => BaseError;\n}\n\nexport type IgnoreHttpErrorMap = {\n [key in keyof HttpErrorMap]: boolean;\n};\n\nconst defaultErrors: HttpErrorMap = {\n notFound: NotFoundError,\n forbidden: {\n rating: PrivateResourceError,\n yearLevel: PrivateResourceError,\n region: RegionLockedResourceError,\n privacy: PrivateResourceError\n },\n badRequest: UnspecifiedError,\n internalServerError: UnspecifiedError\n};\n\nexport function handleHttpError(\n info: HttpStatus | Xhr,\n customErrorMap: HttpErrorMap = {},\n /**\n * Prevent certain errors in the errorMap from being thrown\n * so that you may implement your own handler\n */\n ignoreMap: IgnoreHttpErrorMap = {}\n): void {\n if (!info)\n return;\n\n let statusCode: HttpStatus;\n\n if (typeof(info) === 'number') {\n statusCode = info;\n } else {\n statusCode = info.status;\n }\n\n const errorMap = {\n ...defaultErrors,\n ...customErrorMap\n };\n\n if (!statusCode)\n return;\n\n if (!Core.ErrorHelper.isStatusCodeError(statusCode))\n return;\n\n if (statusCode === HttpStatus.InternalServer) {\n if (!ignoreMap.internalServerError)\n Core.ErrorHelper.throw(new UnspecifiedError());\n return;\n }\n\n if (statusCode === HttpStatus.NotFound) {\n if (!ignoreMap.notFound)\n Core.ErrorHelper.throw(new errorMap.notFound());\n return;\n }\n\n if (statusCode === HttpStatus.Forbidden) {\n /**\n * TODO: Work out how to go about handling all forbidden errors, such as region locking, year levels,\n * ratings, and privacy.\n */\n if (!ignoreMap.forbidden)\n Core.ErrorHelper.throw(new errorMap.forbidden.privacy());\n return;\n }\n\n if (!ignoreMap.badRequest)\n Core.ErrorHelper.throw(new errorMap.badRequest());\n}\n\nexport function handleXhrError(xhr: Xhr, customErrorMap?: HttpErrorMap): void {\n handleHttpError(xhr.status, customErrorMap);\n}","import { UrlHelper } from 'libs/common/backbone/utils/UrlHelper';\nimport { Flight } from 'libs/common/flight';\nimport { HashObject } from 'libs/common/react/interfaces';\nimport { DateHelper } from 'libs/common/react/utils/DateHelper';\n\nimport { AnalyticsRequestFilter, Engagement } from 'libs/shared/interfaces';\nimport { getAnalyticsRequestKey } from 'libs/shared/utils/AnalyticsRequestUtils';\n\nexport const VideoViewRequests = {\n individualEngagement(\n objectId: string,\n filter: AnalyticsRequestFilter,\n sharerId?: string,\n includeAnonViews?: boolean\n ): Flight.Request {\n const queryParams: HashObject = {\n objectId,\n ...filter\n };\n\n if (sharerId)\n queryParams.sharerId = sharerId;\n\n if (includeAnonViews)\n queryParams.includeAnonViews = true;\n\n return {\n url: UrlHelper.urlBuilder('{gateway}/v1/analytics/heat-map', queryParams),\n key: getAnalyticsRequestKey(`engagement:${objectId}:${includeAnonViews}`, filter, sharerId),\n formatData: (data: any) => {\n return {\n ...data,\n data: data.data?.map((d: any) => ({\n ...d,\n heatMap: d.heatMap ?? []\n }))\n };\n },\n normalize: false\n };\n },\n \n aggregateEngagement(\n objectId: string,\n filter: AnalyticsRequestFilter,\n sharerId?: string,\n includeAnonViews?: boolean\n ): Flight.Request {\n const queryParams: HashObject = {\n objectId,\n ...filter\n };\n\n if (sharerId)\n queryParams.sharerId = sharerId;\n \n if (includeAnonViews)\n queryParams.includeAnonViews = true;\n\n return {\n url: UrlHelper.urlBuilder('{gateway}/v1/analytics/heat-map/aggregations', queryParams),\n key: getAnalyticsRequestKey(`aggregate:engagement:${objectId}:${includeAnonViews}`, filter, sharerId),\n formatData: (data: Engagement) => {\n return {\n ...data,\n heatMap: data.heatMap ?? []\n };\n },\n normalize: false\n };\n },\n \n views(\n filter: AnalyticsRequestFilter,\n objectId?: string,\n sharerId?: string,\n includeAnonViews?: boolean\n ): Flight.Request {\n const queryParams: HashObject = {\n ...filter,\n timeOffset: DateHelper.getTimezoneOffset()\n };\n\n if (objectId)\n queryParams.objectId = objectId;\n\n if (sharerId)\n queryParams.sharerId = sharerId;\n \n if (includeAnonViews)\n queryParams.includeAnonViews = true;\n\n return {\n url: UrlHelper.urlBuilder('{gateway}/v1/analytics/video-views', queryParams),\n key: getAnalyticsRequestKey(`video:views:${objectId}:${includeAnonViews}`, filter, sharerId),\n normalize: false\n };\n }\n};","import { useEffect } from 'react';\n\nimport { Flight } from 'libs/common/flight';\n\nimport { handleHttpError, HttpErrorMap, IgnoreHttpErrorMap } from 'libs/shared/errors/handlers/HttpErrorHandlers';\n\nfunction generateCacheKey(flightObjs: Array<Flight.Response<any>>): string {\n return flightObjs.map(obj => obj.statusCode).join(':');\n}\n\n// TODO: Change this to just `useHandleHttpError` and only accept a status code.\nexport function useHandleObjectError(\n _flightObjs: Flight.Response<any> | Array<Flight.Response<any>>,\n customErrors?: HttpErrorMap,\n ignoreErrors?: IgnoreHttpErrorMap\n): void {\n const flightObjs = Array.isArray(_flightObjs) ? _flightObjs : [_flightObjs];\n\n useEffect(() => {\n flightObjs.forEach(obj => {\n handleHttpError(obj.statusCode, customErrors, ignoreErrors);\n });\n }, [ generateCacheKey(flightObjs), customErrors, ignoreErrors ]);\n}","import { AnalyticsRequestFilter } from 'libs/shared/interfaces';\n\nexport function getAnalyticsRequestKey(baseKey: string, filter: AnalyticsRequestFilter, sharerId?: string): string {\n let key = `${baseKey}:${filter.start}:${filter.end}`;\n\n const userIdKey = Array.isArray(filter.userId) ? filter.userId.sort().join(':') : filter.userId;\n const groupIdKey = Array.isArray(filter.groupId) ? filter.groupId.sort().join(':') : filter.groupId;\n\n if (userIdKey)\n key += `:${userIdKey}`;\n\n if (groupIdKey)\n key += `:${groupIdKey}`;\n\n if (sharerId)\n key += `:${sharerId}`;\n\n return key;\n}","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { useViewModel } from 'libs/common/react/hooks/UseViewModel';\nimport { Flight } from 'libs/common/react/index';\n\nimport { useAnonSessions } from 'libs/shared/apps/analytics/hooks/UseAnonSessions';\nimport { useChunkedUsersResponse } from 'libs/shared/apps/analytics/hooks/UseEngagementUsers';\nimport { VideoViewEventResponse } from 'libs/shared/apps/analytics/interfaces/VideoViewEvent';\nimport { AnalyticsFilterHelper } from 'libs/shared/apps/analytics/utils/AnalyticsFilterUtils';\nimport { getAudienceParams } from 'libs/shared/apps/analytics/utils/AudienceUtils';\nimport { getInsightsDateRangePresets, getStartEndParams } from 'libs/shared/apps/analytics/utils/DateRangeUtils';\nimport { ShareRequests } from 'libs/shared/apps/share/flight-requests/ShareRequests';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { MediaIdType } from 'libs/shared/enums/MediaIdType';\nimport { PermissionName } from 'libs/shared/enums/PermissionName';\nimport { ConfigRequests } from 'libs/shared/flight-requests/ConfigRequests';\nimport { PlayerRequests } from 'libs/shared/flight-requests/PlayerRequests';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { VideoViewRequests } from 'libs/shared/flight-requests/VideoViewRequests';\nimport { useHandleObjectError } from 'libs/shared/hooks/UseHandleObjectError';\nimport { useLockContentWidth } from 'libs/shared/hooks/useLockContentWidth';\nimport { usePermissions } from 'libs/shared/hooks/usePermissions';\nimport { useSetPageMetadata } from 'libs/shared/hooks/useSetPageMetadata';\nimport { useSettings } from 'libs/shared/hooks/useSettings';\nimport { AnalyticsRequestFilter, Config, CurrentUser, Engagement, IndividualEngagementResponse, PlayerViewKey, ShareLink, VideoTypes } from 'libs/shared/interfaces';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\nimport { ViewModelKeys } from 'shared/constants/LiteViewModels';\n\nimport { InsightsHeader } from 'apps/my-shares/components/insights-header/InsightsHeader';\nimport { InsightsHeatmap } from 'apps/my-shares/components/insights-heatmap/InsightsHeatmap';\nimport { getInsightsClipTabs, getInsightsInteractiveTabs, getInsightsVideoTabs } from 'apps/my-shares/utils/InsightsAppLinkUtils';\n\nconst namespace = 'shared.insightsHeatmap';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface InsightsHeatmapViewProps {\n videoId: string;\n typeId: MasterType;\n}\n\nexport function InsightsHeatmapView(props: InsightsHeatmapViewProps) {\n const [anonymiseUsers] = useViewModel<boolean>(ViewModelKeys.ANONYMISE_USERS);\n\n useLockContentWidth();\n\n const { hasShareFlowV2 } = useSettings(null);\n\n const { hasPermissions } = usePermissions();\n\n const { publicInteractiveAttempts } = useSettings(null);\n\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n const videoRequest = VideoHelper.getVideoRequest(props.videoId, props.typeId);\n const video = Flight.useBasicFetch<VideoTypes>(videoRequest);\n const config = Flight.useBasicFetch<Config>(ConfigRequests.config());\n\n const shareLink = Flight.useBasicFetch<ShareLink>(ShareRequests.getShareLinkByObjectId(props.videoId));\n\n const anonSessions = useAnonSessions(shareLink.data?.id);\n\n const audienceAppLinkParams = AnalyticsFilterHelper.getAudienceAppLinkParams();\n const dateRangeAppLinkParams = AnalyticsFilterHelper.getDateRangeAppLinkParams();\n\n const requestFilter: AnalyticsRequestFilter = {\n ...getStartEndParams(getInsightsDateRangePresets(), dateRangeAppLinkParams),\n ...getAudienceParams(audienceAppLinkParams)\n };\n\n const aggregateEngagement = Flight.useBasicFetch<Engagement>(\n currentUser.data && VideoViewRequests.aggregateEngagement(\n props.videoId,\n requestFilter,\n currentUser.data.id,\n publicInteractiveAttempts\n )\n );\n\n const individualEngagement = Flight.useBasicFetch<IndividualEngagementResponse>(currentUser.data &&\n VideoViewRequests.individualEngagement(\n props.videoId,\n requestFilter,\n currentUser.data?.id,\n publicInteractiveAttempts\n ));\n\n const userIds = individualEngagement.data?.data?.map(d => d.userId).filter(Boolean) || [];\n const { users, isLoading } = useChunkedUsersResponse(userIds);\n\n const videoViews = Flight.useBasicFetch<VideoViewEventResponse>(currentUser.data &&\n VideoViewRequests.views(requestFilter, props.videoId, currentUser.data?.id, publicInteractiveAttempts));\n\n const viewKey = Flight.useBasicFetch<PlayerViewKey>(\n PlayerRequests.createViewKey(props.videoId, MediaIdType.MasterObject)\n );\n\n useSetPageMetadata({ title: video.data ? getPhrase('pageTitle', { video: video.data?.name }) : null });\n useHandleObjectError(video);\n\n const hasDataLoaded =\n currentUser.data &&\n videoViews.data &&\n video.data &&\n aggregateEngagement.data &&\n viewKey.data;\n\n const tableDataLoaded = !!individualEngagement.data && (!userIds.length || !isLoading);\n\n const params = {\n ...audienceAppLinkParams,\n ...dateRangeAppLinkParams\n };\n\n function getInsightsTabs() {\n if (props.typeId === MasterType.Interactive)\n return getInsightsInteractiveTabs(props.videoId, 'heatmap', params);\n\n if (props.typeId === MasterType.Clip)\n return getInsightsClipTabs(props.videoId, 'heatmap', params);\n\n return getInsightsVideoTabs(props.videoId, 'heatmap', params);\n }\n\n return (\n <div className='px-3'>\n <InsightsHeader\n video={video.data}\n dateRangeAppLinkParams={dateRangeAppLinkParams}\n tabs={getInsightsTabs()}\n hasAnalytics={hasPermissions(PermissionName.ViewCustomerAnalytics)}\n analyticsWebUrl={config.data?.analyticsWebUrl}\n hasShareFlowV2={hasShareFlowV2}\n />\n <InsightsHeatmap\n aggregateEngagement={aggregateEngagement.data}\n individualEngagement={individualEngagement.data}\n videoViews={videoViews.data}\n config={config.data}\n users={users}\n viewKey={viewKey.data}\n hasDataLoaded={!!hasDataLoaded}\n tableDataLoaded={tableDataLoaded}\n anonymiseUsers={anonymiseUsers}\n audienceAppLinkParams={audienceAppLinkParams}\n dateRangeAppLinkParams={dateRangeAppLinkParams}\n anonSessions={anonSessions}\n />\n </div>\n );\n}"],"names":["useAnonSessions","shareId","anonSessions","data","length","reduce","prev","current","sessionId","getAudienceParams","queryParams","userId","groupId","users","push","classrooms","classroomGroups","defaultErrors","notFound","forbidden","rating","yearLevel","region","privacy","badRequest","internalServerError","handleHttpError","info","customErrorMap","ignoreMap","statusCode","status","errorMap","VideoViewRequests","individualEngagement","objectId","filter","sharerId","includeAnonViews","url","key","formatData","map","d","heatMap","normalize","aggregateEngagement","views","timeOffset","generateCacheKey","flightObjs","obj","join","useHandleObjectError","_flightObjs","customErrors","ignoreErrors","Array","isArray","useEffect","forEach","getAnalyticsRequestKey","baseKey","start","end","userIdKey","sort","groupIdKey","getPhrase","InsightsHeatmapView","props","anonymiseUsers","hasShareFlowV2","hasPermissions","publicInteractiveAttempts","currentUser","videoRequest","videoId","typeId","video","config","shareLink","id","audienceAppLinkParams","dateRangeAppLinkParams","requestFilter","userIds","Boolean","isLoading","videoViews","viewKey","title","name","hasDataLoaded","tableDataLoaded","params","className","tabs","hasAnalytics","analyticsWebUrl"],"sourceRoot":""}
@@ -1 +0,0 @@
1
- {"version":3,"file":"scripts/6188-e108abca25-lite.chunk.js","mappings":"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","sources":["file:///app/packages/libs/shared/src/apps/analytics/hooks/UseAnonSessions.ts","file:///app/packages/libs/shared/src/apps/student-response-list/StudentResponseListFooter.tsx","file:///app/packages/libs/shared/src/apps/student-response-list/StudentResponseListHeader.tsx","file:///app/packages/libs/shared/src/apps/student-response-list/student-response-list.scss","file:///app/packages/libs/shared/src/apps/student-response-list/StudentResponseList.tsx","file:///app/packages/libs/shared/src/errors/handlers/HttpErrorHandlers.ts","file:///app/packages/libs/shared/src/flight-requests/InsightsDemoRequests.ts","file:///app/packages/libs/shared/src/hooks/UseHandleObjectError.ts","file:///app/packages/projects/lite/src/apps/my-shares/views/demo/interactive-student-results/InteractiveStudentResultsDemoView.tsx"],"sourcesContent":["import { Flight } from 'libs/common/react/index';\n\nimport { ShareRequests } from 'libs/shared/apps/share/flight-requests/ShareRequests';\n\nexport interface AnonSession {\n sessionId: string;\n sessionName: string;\n}\n\nexport interface AnonSessions extends Record<string, AnonSession> {}\n\nexport function useAnonSessions(shareId: string): AnonSessions {\n const anonSessions = Flight.useBasicFetch<AnonSession[]>(shareId && ShareRequests.getAnonSessions(shareId));\n\n if (!anonSessions.data?.length)\n return {};\n\n return anonSessions.data.reduce((prev, current) => ({ ...prev, [current.sessionId]: current }), {});\n}","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { MarkedAnswerHash } from 'libs/shared/apps/analytics/hooks/UseMarkAnswers';\nimport { SpinnerButton } from 'libs/shared/components/spinner-button/SpinnerButton';\nimport { Tooltip } from 'libs/shared/components/tooltip/Tooltip';\nimport { Interaction } from 'libs/shared/interfaces';\n\nconst namespace = 'interactives.studentResponseList';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface StudentResponseListFooterProps {\n interactionsToMark: Interaction[];\n markedAnswers: MarkedAnswerHash;\n onClickSubmit: () => void;\n onClickClose: () => void;\n showSubmitButtonSpinner: boolean;\n isDemo?: boolean;\n}\n\nexport function StudentResponseListFooter(props: StudentResponseListFooterProps): JSX.Element {\n const numMarkedAnswers = Object.keys(props.markedAnswers).length;\n\n return (\n <div className='d-flex justify-content-end pt-3'>\n <div>\n {!props.showSubmitButtonSpinner &&\n <button className='btn btn-link' onClick={props.onClickClose}>\n {getPhrase('close')}\n </button>\n }\n {!!props.interactionsToMark.length && (\n <>\n {props.isDemo ? (\n <Tooltip\n id='submitAnswers'\n title={getPhrase('demoOnly')}\n spanHack\n spanHackClassName='d-inline-flex'\n >\n <button\n className='btn btn-outline-dark pointer-events-none'\n disabled={!numMarkedAnswers}\n >\n {getPhrase('submitAnswers')}\n </button>\n </Tooltip>\n ) : (\n <SpinnerButton\n variant='outline-dark'\n onClick={props.onClickSubmit}\n disabled={!numMarkedAnswers}\n showSpinner={props.showSubmitButtonSpinner}\n >\n {getPhrase('submitAnswers')}\n </SpinnerButton>\n )}\n </>\n )}\n </div>\n </div>\n );\n}","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { MarkedAnswerHash } from 'libs/shared/apps/analytics/hooks/UseMarkAnswers';\nimport { ResultsSummary } from 'libs/shared/apps/analytics/interfaces/ResultsSummary';\nimport { SpinnerButton } from 'libs/shared/components/spinner-button/SpinnerButton';\nimport { Tooltip } from 'libs/shared/components/tooltip/Tooltip';\nimport { Interaction } from 'libs/shared/interfaces';\n\nconst namespace = 'interactives.studentResponseList';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface StudentResponseListHeaderProps {\n summary: ResultsSummary;\n interactionsToMark: Interaction[];\n markedAnswers: MarkedAnswerHash;\n onClickSubmit: () => void;\n showSubmitButtonSpinner: boolean;\n isDemo?: boolean;\n}\n\nexport function StudentResponseListHeader(props: StudentResponseListHeaderProps): JSX.Element {\n const numMarkedAnswers = Object.keys(props.markedAnswers).length;\n\n return (\n <div className='d-flex justify-content-between pb-3'>\n <div className='d-flex'>\n {!!props.summary.unanswered &&\n <div className='bg-light rounded p-2 me-2'>\n <strong className='me-2'>{getPhrase('unanswered')}</strong>\n {props.summary.unanswered}\n </div>\n }\n <div className='bg-light rounded p-2 me-2'>\n <strong className='me-2'>{getPhrase('score')}</strong>\n {props.summary.awaitingMarking\n ? <em>{getPhrase('pending')}</em>\n : `${Math.round(props.summary.percentCorrect * 100)}%`\n }\n </div>\n </div>\n {!!props.interactionsToMark.length && (\n <>\n {props.isDemo ? (\n <Tooltip id='submitAnswers' title={getPhrase('demoOnly')} spanHack>\n <button\n className='btn btn-outline-dark pointer-events-none'\n disabled={!numMarkedAnswers}\n >\n {getPhrase('submitAnswers')}\n </button>\n </Tooltip>\n ) : (\n <SpinnerButton\n variant='outline-dark'\n onClick={props.onClickSubmit}\n disabled={!numMarkedAnswers}\n showSpinner={props.showSubmitButtonSpinner}\n >\n {getPhrase('submitAnswers')}\n </SpinnerButton>\n )}\n </>\n )}\n </div>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"awaitingMarking\":\"MvGb5\"};","import React from 'react';\n\nimport { InteractionResponseItem } from 'libs/shared/apps/analytics/components/questions-list/interaction-response-item/InteractionResponseItem';\nimport { AnonSessions } from 'libs/shared/apps/analytics/hooks/UseAnonSessions';\nimport { MarkedAnswerHash } from 'libs/shared/apps/analytics/hooks/UseMarkAnswers';\nimport { anonymiseUserName, getUserOrAnonSession } from 'libs/shared/apps/analytics/utils/AnonymiseUserUtils';\nimport { getMarkedStatus, getStudentResultsSummary } from 'libs/shared/apps/analytics/utils/InteractiveUtils';\nimport { InteractionResponse } from 'libs/shared/components/interaction-response/InteractionResponse';\nimport { InteractionLabel } from 'libs/shared/components/interactive-questions/InteractionLabel';\nimport { InteractionCorrectness } from 'libs/shared/enums/InteractionCorrectness';\nimport { InteractiveAnswerStatus } from 'libs/shared/enums/InteractiveAnswerStatus';\nimport { Interaction, Interactive, StudentAnswer, StudentResults } from 'libs/shared/interfaces';\nimport { InteractiveCorrectnessHelper } from 'libs/shared/utils/InteractiveCorrectnessHelper';\nimport { getInteractions, getStudentResult } from 'libs/shared/utils/InteractiveHelper';\n\nimport { StudentResponseListFooter } from './StudentResponseListFooter';\nimport { StudentResponseListHeader } from './StudentResponseListHeader';\n\nimport styles from './student-response-list.scss';\n\nfunction getInteractionsToMark(\n interactions: Interaction[],\n studentResults: StudentResults\n): Interaction[] {\n return interactions.filter(i => {\n return InteractiveCorrectnessHelper.isInteractionCorrect(\n i,\n getStudentResult(studentResults)\n ) === InteractionCorrectness.AwaitingMarking;\n });\n}\n\n// eslint-disable-next-line rulesdir/require-view-title\nfunction useScrollSelectedInteractionIntoView(): React.MutableRefObject<HTMLLIElement> {\n const ref = React.useRef<HTMLLIElement>(null);\n const [ scrolled, setScrolled ] = React.useState(false);\n\n // Only scroll once\n React.useEffect(() => {\n if (!ref.current || scrolled)\n return;\n\n setScrolled(true);\n requestAnimationFrame(() => ref.current.scrollIntoView({ behavior: 'smooth', block: 'center' }));\n }, [ ref.current, scrolled ]);\n\n return ref;\n}\n\ninterface StudentResponseListProps {\n interactive: Interactive;\n markedAnswers: MarkedAnswerHash;\n studentResults: StudentResults;\n addMarkedAnswers: (answer: StudentAnswer[], status: InteractiveAnswerStatus) => void;\n submitMarkedAnswers: () => void;\n onClickClose: () => void;\n imageCdnUrl: string;\n selectedInteractionId?: string;\n anonymiseUsers: boolean;\n reportsStyling?: boolean;\n isDemo?: boolean;\n anonSessions?: AnonSessions;\n}\n\nexport function StudentResponseList(props: StudentResponseListProps): JSX.Element {\n const [ showSpinner, setShowSpinner ] = React.useState(false);\n const selectedInteractionRef = useScrollSelectedInteractionIntoView();\n\n const summary = getStudentResultsSummary(props.interactive, props.studentResults);\n const interactions = getInteractions(props.interactive);\n const questionsToMark = getInteractionsToMark(interactions, props.studentResults);\n\n function onClickSubmit(): void {\n setShowSpinner(true);\n props.submitMarkedAnswers();\n }\n\n return (\n <>\n <StudentResponseListHeader\n summary={summary}\n interactionsToMark={questionsToMark}\n markedAnswers={props.markedAnswers}\n onClickSubmit={onClickSubmit}\n showSubmitButtonSpinner={showSpinner}\n isDemo={props.isDemo}\n />\n <ul className='list-unstyled'>\n {interactions.map((interaction, idx) => {\n const isSelected = interaction.id.toString() === props.selectedInteractionId?.toString();\n const markingRequired = questionsToMark.some(q => q.id === interaction.id);\n const anonymisedUserName = anonymiseUserName(\n getUserOrAnonSession(props.studentResults, props.anonSessions),\n props.anonymiseUsers\n );\n\n let className = 'p-2 mb-3 rounded';\n\n if (isSelected)\n className += ' border-2 border-info shadow';\n\n if (markingRequired)\n className += ` ${styles.awaitingMarking}`;\n else\n className += ' border';\n\n return (\n <li key={idx} className={className} ref={isSelected ? selectedInteractionRef : null}>\n <div className='d-flex mb-2'>\n <InteractionLabel\n interaction={interaction}\n iconClassName='flex-shrink-0'\n />\n </div>\n {props.reportsStyling ? (\n <InteractionResponse\n interaction={interaction}\n studentResults={props.studentResults}\n markedStatus={getMarkedStatus(interaction.id, props.studentResults, props.markedAnswers)}\n markInteraction={props.addMarkedAnswers}\n imageCdnUrl={props.imageCdnUrl}\n anonymisedUserName={anonymisedUserName}\n className='bg-light ps-2'\n showFeedback\n reportsStyling\n responseComponentClass='mx-n2'\n />\n ) : (\n <InteractionResponseItem\n interaction={interaction}\n studentResults={props.studentResults}\n markedStatus={getMarkedStatus(interaction.id, props.studentResults, props.markedAnswers)}\n markInteraction={props.addMarkedAnswers}\n imageCdnUrl={props.imageCdnUrl}\n anonymisedUserName={anonymisedUserName}\n showFeedback\n />\n )}\n </li>\n );\n })}\n </ul>\n <StudentResponseListFooter\n interactionsToMark={questionsToMark}\n markedAnswers={props.markedAnswers}\n onClickSubmit={onClickSubmit}\n onClickClose={props.onClickClose}\n showSubmitButtonSpinner={showSpinner}\n isDemo={props.isDemo}\n />\n </>\n );\n}","import { BaseError } from 'libs/common/backbone/core/BaseError';\nimport { HttpStatus } from 'libs/common/backbone/enums/HttpStatus';\nimport { Xhr } from 'libs/common/backbone/interfaces';\nimport { Core } from 'libs/common/core';\n\nimport { NotFoundError } from 'libs/shared/errors/general/not-found/NotFoundError';\nimport { PrivateResourceError } from 'libs/shared/errors/general/private-resource/PrivateResourceError';\nimport { RegionLockedResourceError } from 'libs/shared/errors/general/region-locked-resource/RegionLockedResourceError';\nimport { UnspecifiedError } from 'libs/shared/errors/general/unspecified-error/UnspecifiedError';\nimport { VideoTypes } from 'libs/shared/interfaces';\n\nexport interface HttpErrorMap {\n notFound?: new () => BaseError;\n forbidden?: {\n rating?: new (description: string) => BaseError;\n yearLevel?: new (description: string) => BaseError;\n region?: new () => BaseError;\n privacy?: new (video?: VideoTypes) => BaseError;\n };\n badRequest?: new () => BaseError;\n internalServerError?: new () => BaseError;\n}\n\nexport type IgnoreHttpErrorMap = {\n [key in keyof HttpErrorMap]: boolean;\n};\n\nconst defaultErrors: HttpErrorMap = {\n notFound: NotFoundError,\n forbidden: {\n rating: PrivateResourceError,\n yearLevel: PrivateResourceError,\n region: RegionLockedResourceError,\n privacy: PrivateResourceError\n },\n badRequest: UnspecifiedError,\n internalServerError: UnspecifiedError\n};\n\nexport function handleHttpError(\n info: HttpStatus | Xhr,\n customErrorMap: HttpErrorMap = {},\n /**\n * Prevent certain errors in the errorMap from being thrown\n * so that you may implement your own handler\n */\n ignoreMap: IgnoreHttpErrorMap = {}\n): void {\n if (!info)\n return;\n\n let statusCode: HttpStatus;\n\n if (typeof(info) === 'number') {\n statusCode = info;\n } else {\n statusCode = info.status;\n }\n\n const errorMap = {\n ...defaultErrors,\n ...customErrorMap\n };\n\n if (!statusCode)\n return;\n\n if (!Core.ErrorHelper.isStatusCodeError(statusCode))\n return;\n\n if (statusCode === HttpStatus.InternalServer) {\n if (!ignoreMap.internalServerError)\n Core.ErrorHelper.throw(new UnspecifiedError());\n return;\n }\n\n if (statusCode === HttpStatus.NotFound) {\n if (!ignoreMap.notFound)\n Core.ErrorHelper.throw(new errorMap.notFound());\n return;\n }\n\n if (statusCode === HttpStatus.Forbidden) {\n /**\n * TODO: Work out how to go about handling all forbidden errors, such as region locking, year levels,\n * ratings, and privacy.\n */\n if (!ignoreMap.forbidden)\n Core.ErrorHelper.throw(new errorMap.forbidden.privacy());\n return;\n }\n\n if (!ignoreMap.badRequest)\n Core.ErrorHelper.throw(new errorMap.badRequest());\n}\n\nexport function handleXhrError(xhr: Xhr, customErrorMap?: HttpErrorMap): void {\n handleHttpError(xhr.status, customErrorMap);\n}","import { Flight } from 'libs/common/react/index';\n\nexport const InsightsDemoRequests = {\n interactive(): Flight.Request {\n return {\n url: `/mocks/insights/interactive.json`,\n key: `demo:interactive`,\n normalize: false\n };\n },\n\n interactiveMetadata(): Flight.Request {\n return {\n url: `/mocks/insights/interactive-metadata.json`,\n key: `demo:interactive:metadata`,\n normalize: false\n };\n },\n\n interactiveResults(): Flight.Request {\n return {\n url: `/mocks/insights/interactive-results.json`,\n key: `demo:interactive:results`,\n normalize: false\n };\n },\n\n videoViews(): Flight.Request {\n return {\n url: `/mocks/insights/video-views.json`,\n key: `demo:video:views`,\n normalize: false\n };\n },\n\n users(): Flight.Request {\n return {\n url: `/mocks/insights/users.json`,\n key: `demo:users`,\n normalize: false\n };\n },\n\n individualHeatmap(): Flight.Request {\n return {\n url: `/mocks/insights/individual-heatmap.json`,\n key: `demo:individual:heatmap`,\n normalize: false\n };\n },\n\n aggregateHeatmap(): Flight.Request {\n return {\n url: `/mocks/insights/aggregate-heatmap.json`,\n key: `demo:aggregate:heatmap`,\n normalize: false\n };\n }\n};","import { useEffect } from 'react';\n\nimport { Flight } from 'libs/common/flight';\n\nimport { handleHttpError, HttpErrorMap, IgnoreHttpErrorMap } from 'libs/shared/errors/handlers/HttpErrorHandlers';\n\nfunction generateCacheKey(flightObjs: Array<Flight.Response<any>>): string {\n return flightObjs.map(obj => obj.statusCode).join(':');\n}\n\n// TODO: Change this to just `useHandleHttpError` and only accept a status code.\nexport function useHandleObjectError(\n _flightObjs: Flight.Response<any> | Array<Flight.Response<any>>,\n customErrors?: HttpErrorMap,\n ignoreErrors?: IgnoreHttpErrorMap\n): void {\n const flightObjs = Array.isArray(_flightObjs) ? _flightObjs : [_flightObjs];\n\n useEffect(() => {\n flightObjs.forEach(obj => {\n handleHttpError(obj.statusCode, customErrors, ignoreErrors);\n });\n }, [ generateCacheKey(flightObjs), customErrors, ignoreErrors ]);\n}","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Flight } from 'libs/common/flight';\nimport { useViewModel } from 'libs/common/react/hooks/UseViewModel';\n\nimport { useAnonSessions } from 'libs/shared/apps/analytics/hooks/UseAnonSessions';\nimport { useMarkAnswers } from 'libs/shared/apps/analytics/hooks/UseMarkAnswers';\nimport { anonymiseUserName, getUserOrAnonSession } from 'libs/shared/apps/analytics/utils/AnonymiseUserUtils';\nimport { ShareRequests } from 'libs/shared/apps/share/flight-requests/ShareRequests';\nimport { StudentResponseList } from 'libs/shared/apps/student-response-list/StudentResponseList';\nimport { Popup } from 'libs/shared/components/popup/Popup';\nimport { SharedViewModelKeys } from 'libs/shared/constants/SharedViewModelKeys';\nimport { ConfigRequests } from 'libs/shared/flight-requests/ConfigRequests';\nimport { InsightsDemoRequests } from 'libs/shared/flight-requests/InsightsDemoRequests';\nimport { useCannotConsumeError } from 'libs/shared/hooks/useCannotConsumeError';\nimport { useHandleObjectError } from 'libs/shared/hooks/UseHandleObjectError';\nimport { useLockContentWidth } from 'libs/shared/hooks/useLockContentWidth';\nimport { Config, Interactive, InteractiveMetadata, InteractiveResultSet, ShareLink } from 'libs/shared/interfaces';\nimport { PopupViewProps } from 'libs/shared/interfaces';\n\nconst namespace = 'shared.interactiveStudentResults';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface InteractiveStudentResultsViewProps extends PopupViewProps {\n userId: string;\n interactiveId: string;\n interactionId?: string;\n reportsStyling?: boolean;\n sessionId?: string;\n}\n\nexport function InteractiveStudentResultsDemoView(props: InteractiveStudentResultsViewProps): JSX.Element {\n const [anonymiseUsers] = useViewModel<boolean>(SharedViewModelKeys.ANONYMISE_USERS);\n\n useLockContentWidth();\n\n const interactiveMetadata = Flight.useBasicFetch<InteractiveMetadata>(\n InsightsDemoRequests.interactiveMetadata()\n );\n const interactive = Flight.useBasicFetch<Interactive>(InsightsDemoRequests.interactive());\n\n const results = Flight.useBasicFetch<InteractiveResultSet>(InsightsDemoRequests.interactiveResults());\n const config = Flight.useBasicFetch<Config>(ConfigRequests.config());\n\n const shareLink = Flight.useBasicFetch<ShareLink>(ShareRequests.getShareLinkByObjectId(props.interactiveId));\n\n const anonSessions = useAnonSessions(shareLink.data?.id);\n\n useHandleObjectError([ interactiveMetadata, results ]);\n useCannotConsumeError(interactiveMetadata);\n\n const { markedAnswers, addMarkedAnswers, submitMarkedAnswers } = useMarkAnswers(\n interactive.data?.id,\n interactiveMetadata.data?.id,\n props.closePopup\n );\n\n const studentResults = results.data?.students.find(s => {\n if (props.userId)\n return s.user?.id?.toString() === props.userId?.toString();\n\n if (props.sessionId)\n return s.sessionId?.toString() === props.sessionId?.toString();\n\n return false;\n });\n\n const popupTitle = studentResults\n ? getPhrase('heading', { studentName: anonymiseUserName(getUserOrAnonSession(studentResults, anonSessions), anonymiseUsers) })\n : '';\n const dataLoaded = !!interactive.data && !!results.data && !!config.data;\n\n return (\n <Popup\n title={popupTitle}\n showLoadingSpinner={!dataLoaded}\n closePopup={props.closePopup}\n size='lg'\n >\n {dataLoaded &&\n <StudentResponseList\n interactive={interactive.data}\n studentResults={studentResults}\n markedAnswers={markedAnswers}\n addMarkedAnswers={addMarkedAnswers}\n submitMarkedAnswers={submitMarkedAnswers}\n imageCdnUrl={config.data.imageCdnUrl}\n selectedInteractionId={props.interactionId}\n onClickClose={props.closePopup}\n anonymiseUsers={anonymiseUsers}\n reportsStyling={props.reportsStyling}\n isDemo\n />\n }\n </Popup>\n );\n}"],"names":["useAnonSessions","shareId","anonSessions","data","length","reduce","prev","current","sessionId","getPhrase","LanguageService","StudentResponseListFooter","props","numMarkedAnswers","Object","keys","markedAnswers","className","showSubmitButtonSpinner","onClick","onClickClose","interactionsToMark","isDemo","Tooltip","id","title","spanHack","spanHackClassName","disabled","SpinnerButton","variant","onClickSubmit","showSpinner","StudentResponseListHeader","summary","unanswered","awaitingMarking","Math","round","percentCorrect","StudentResponseList","ref","scrolled","setScrolled","setShowSpinner","selectedInteractionRef","requestAnimationFrame","scrollIntoView","behavior","block","interactive","studentResults","interactions","questionsToMark","filter","i","InteractiveCorrectnessHelper","InteractionCorrectness","getInteractionsToMark","submitMarkedAnswers","map","interaction","idx","isSelected","toString","selectedInteractionId","markingRequired","some","q","anonymisedUserName","anonymiseUsers","key","InteractionLabel","iconClassName","reportsStyling","InteractionResponse","markedStatus","markInteraction","addMarkedAnswers","imageCdnUrl","showFeedback","responseComponentClass","InteractionResponseItem","defaultErrors","notFound","forbidden","rating","yearLevel","region","privacy","badRequest","internalServerError","handleHttpError","info","customErrorMap","ignoreMap","statusCode","status","errorMap","InsightsDemoRequests","url","normalize","interactiveMetadata","interactiveResults","videoViews","users","individualHeatmap","aggregateHeatmap","generateCacheKey","flightObjs","obj","join","useHandleObjectError","_flightObjs","customErrors","ignoreErrors","Array","isArray","useEffect","forEach","InteractiveStudentResultsDemoView","results","config","shareLink","interactiveId","closePopup","students","find","s","userId","user","popupTitle","studentName","dataLoaded","showLoadingSpinner","size","interactionId"],"sourceRoot":""}
@@ -1,2 +0,0 @@
1
- "use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[6317],{38307:(e,t,a)=>{a.d(t,{c:()=>h,l:()=>g});var n=a(32735),r=a(232),s=a.n(r),i=a(8604),c=a(83345);const l={heatMap:"epapa",legend:"uhH4p"};function o(e,t){(null==t||t>e.length)&&(t=e.length);for(var a=0,n=Array(t);a<t;a++)n[a]=e[a];return n}var m="shared.engagementHeatMap",u="#f1f1f1",d=s().scale(["#daf07d","#08bd1a"]),v=[0,.01,.25,.5,.75,1];function p(e,t){return e?d(e/t).hex():u}function f(e,t){for(var a=[],n=0;n<e.length;n++){var r=n>0&&e[n-1],s=e[n],i=n<e.length-1&&e[n+1];s===r&&s===i||a.push("".concat(p(s,t)," ").concat(100/e.length*n,"%"))}return"linear-gradient(to right, ".concat(a.join(","),")")}function g(){var e=Math.max.apply(Math,v),t=100/v.length;return n.createElement("div",{className:"d-flex justify-content-between w-100"},n.createElement(c.x,{namespace:m,phrase:"less"}),n.createElement("div",{className:"d-flex mx-1 flex-grow-1 ".concat(l.legend)},v.map((function(a,r){return n.createElement("div",{key:r,style:{width:"".concat(t,"%"),backgroundColor:p(a,e)}})}))),n.createElement(c.x,{namespace:m,phrase:"more"}))}function h(e){var t,a,r,s=(0,i.O)(e.engagement),c=null!==(t=e.max)&&void 0!==t?t:Math.max.apply(Math,function(e){if(Array.isArray(e))return o(e)}(r=s)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(r)||function(e,t){if(e){if("string"==typeof e)return o(e,t);var a={}.toString.call(e).slice(8,-1);return"Object"===a&&e.constructor&&(a=e.constructor.name),"Map"===a||"Set"===a?Array.from(e):"Arguments"===a||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(a)?o(e,t):void 0}}(r)||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.")}());return n.createElement("div",{className:"border rounded ".concat(l.heatMap," ").concat(null!==(a=e.className)&&void 0!==a?a:""),style:{background:f(s,c)}})}},84621:(e,t,a)=>{a.d(t,{L:()=>i});var n=a(32735),r=a(83914);const s={icon:"sAmpy",count:"faDs4"};function i(e){return n.createElement("section",{className:"d-flex flex-column border rounded p-3 h-100"},n.createElement("div",{className:"d-flex ".concat(e.subtitle?"align-items-top":"align-items-center"," mb-2")},n.createElement("div",{className:"".concat(s.icon," ").concat(e.svgClassName," rounded-circle d-flex justify-content-center align-items-center")},n.createElement(r.x,{svgName:e.svgName,size:r.S.Small})),n.createElement("div",{className:"d-flex flex-column ms-2"},n.createElement("h2",{className:"h6 mb-0"},e.title)),"number"==typeof e.count&&n.createElement("div",{className:"".concat(s.count," d-flex justify-content-center align-items-center bg-light rounded-circle ms-auto")},e.count)),e.children)}},21976:(e,t,a)=>{a.d(t,{x:()=>u});var n=a(32735),r=a(72306),s=a.n(r),i=a(70312),c=a.n(i),l=a(75896),o=a(70072),m=function(e){return{title:{text:null},credits:{enabled:!1},yAxis:{title:{text:null},labels:{enabled:!1},gridLineWidth:0,tickPixelInterval:1,startOnTick:!1,endOnTick:!1,min:-.2},xAxis:{title:{text:e,margin:8,style:o.d},labels:{style:o.d},lineWidth:0},legend:{enabled:!1},chart:{type:"column",backgroundColor:"transparent",height:"160px",spacingTop:20},plotOptions:{column:{dataLabels:{enabled:!1},enableMouseTracking:!1,minPointLength:8}}}};function u(e){return n.createElement(c(),{highcharts:s(),options:(a=e.chartData,r=m(e.label),i=null===(t=l.m.first(a.series))||void 0===t?void 0:t.data.some((function(e){return e.y>0})),Object.assign(Object.assign({},r),{yAxis:Object.assign(Object.assign({},r.yAxis),i?{min:-.2}:{min:0,max:1}),xAxis:Object.assign(Object.assign(Object.assign({},r.xAxis),e.xAxis),{categories:a.categories}),series:a.series}))});var t,a,r,i}},98551:(e,t,a)=>{a.d(t,{y:()=>m});var n=a(32735),r=a(77640),s=a(15611),i=a(40782),c=a(2606);const l={avatar:"uMuZt",image:"WdKiU"};var o=3;function m(e){return n.createElement(n.Fragment,null,e.students.length?n.createElement("ul",{className:"list-unstyled mb-2"},e.students.slice(0,o).map((function(t,a){return n.createElement("li",{key:a,className:"d-flex align-items-center mb-2"},n.createElement(r.t,{user:t,imageCdnUrl:e.imageCdnUrl,avatarClassName:l.avatar,detailsClassName:"ms-2",showDisplayName:!0,showSubText:!1,anonymiseUsers:e.anonymiseUsers}),n.createElement("div",{className:"d-flex align-items-center ms-auto"},n.createElement("span",{className:"me-2"},void 0===t.percentage?"- ":Math.round(100*t.percentage),"%"),n.createElement(i.O,{percentage:t.percentage,size:c.Mk.ExtraSmall})))}))):n.createElement("div",{className:"text-center"},n.createElement("img",{className:"".concat(l.image," mb-2"),src:e.imageUrl}),n.createElement("p",{className:"text-secondary mb-0",dangerouslySetInnerHTML:{__html:e.description}})),!!e.students.length&&e.appLink&&n.createElement(s.F,{appLink:e.appLink,className:"text-info mt-auto"},e.appLinkText))}},51870:(e,t,a)=>{a.d(t,{i:()=>p});var n=a(32735),r=a(23481),s=a(84621),i=a(21976),c=a(70072),l=a(83345),o=a(35223);const m={purpleChart:"OPcvi",grayChart:"HlWj7"};function u(e,t){(null==t||t>e.length)&&(t=e.length);for(var a=0,n=Array(t);a<t;a++)n[a]=e[a];return n}var d="shared.insightDevices",v=r.T.encloseNamespace(d);function p(e){var t,a,r=function(){var t,a={Phone:0,Computer:0};return(null===(t=e.osCount)||void 0===t?void 0:t.length)?e.osCount.reduce((function(e,t){if(!t.name)return e;var a=function(e){switch(e){case"Android":case"Windows Phone":case"iOS":case"BlackBerry":return"Phone";case"Linux":case"Unix":case"Macintosh":case"Windows":return"Computer"}}(t.name);return a?(e[a]=e[a]+t.count,e):e}),a):a}(),p=Math.max.apply(Math,function(e){if(Array.isArray(e))return u(e)}(a=Object.keys(r).map((function(e){return r[e]})))||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(a)||function(e,t){if(e){if("string"==typeof e)return u(e,t);var a={}.toString.call(e).slice(8,-1);return"Object"===a&&e.constructor&&(a=e.constructor.name),"Map"===a||"Set"===a?Array.from(e):"Arguments"===a||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(a)?u(e,t):void 0}}(a)||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.")}()),f=Object.keys(r).filter((function(e){return r[e]===p})),g={categories:Object.keys(r),series:[{type:"column",borderRadius:4,dataLabels:{enabled:!0,style:c.d,inside:!1,overflow:"allow",crop:!1},data:Object.keys(r).map((function(e){var t=0!==p&&r[e]===p;return{className:"".concat(0===r[e]?m.grayChart:m.purpleChart," ").concat(t?"":"opacity-25"),borderWidth:t?2:0,borderColor:t?"black":"",y:r[e]}}))}]};return n.createElement(s.L,{title:v("title"),svgClassName:"bg-light-ultramarine text-ultramarine",svgName:o.vn.Monitor},n.createElement("p",{className:"mb-0"},(null===(t=e.osCount)||void 0===t?void 0:t.filter((function(e){return e.name})).length)?n.createElement(l.x,{namespace:d,phrase:"description",options:{smartCount:f.length,device:1===f.length?f[0].toLowerCase():null}}):n.createElement(l.x,{namespace:d,phrase:"notViewed"})),n.createElement("div",{className:"position-relative mt-auto"},n.createElement(i.x,{label:v("device"),chartData:g,xAxis:{labels:{useHTML:!0,formatter:function(){return'\n <div class="d-flex flex-column align-items-center">\n <span class="'.concat(m.font,' font-size-sm text-dark mb-1">').concat(this.value,"</span>\n ").concat(function(e){var t="";switch(e){case"Computer":t=o.vn.Monitor;break;case"Phone":t=o.vn.Mobile;break;case"Tablet":t=o.vn.Tablet;break;default:return}return o.Nj.getSvg(t).replace(/<svg[^>]*>/g,'<svg class="svg-container">')}(this.value),"\n </div>\n ")}}}})))}},50916:(e,t,a)=>{a.d(t,{b:()=>v});var n=a(32735),r=a(23481),s=a(38307),i=a(84621),c=a(15611),l=a(83345),o=a(35223);const m={heatMap:"Rfr9N",heatMapTimepointIndicator:"s6JbA",heatMapTimepointIndicatorVisible:"mgjWX"};var u="shared.insightHeatmap",d=r.T.encloseNamespace(u);function v(e){var t=e.engagement.engagementRate>0?Math.round(100*e.engagement.engagementRate):null;return n.createElement(i.L,{title:d("title"),svgName:o.vn.Timer,svgClassName:"bg-light-green text-green"},n.createElement("div",{className:"mb-2"},n.createElement("p",{className:"mb-0"},t?n.createElement(l.x,{namespace:u,phrase:"everyoneWatched",options:{engagementRate:t}}):n.createElement(l.x,{namespace:u,phrase:"notWatched"})),!!t&&n.createElement(c.F,{appLink:e.heatmapAppLink,className:"text-info"},n.createElement(l.x,{namespace:u,phrase:"viewHeatmap"}))),n.createElement("div",{className:"mb-2"},n.createElement(s.c,{engagement:e.engagement,className:m.heatMap})),n.createElement("p",{className:"h3 text-center mb-2"},t||"--","%"),n.createElement("p",{className:"text-center mb-0 font-size-sm"},n.createElement(l.x,{namespace:u,phrase:"amountWatched"})))}},70072:(e,t,a)=>{a.d(t,{d:()=>n});var n={fontSize:"12px",fontFamily:'"Inter",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans","Liberation Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji"',fontWeight:"400",color:"#313543"}},26136:(e,t,a)=>{a.d(t,{B2:()=>c,DV:()=>o,jP:()=>l});var n=a(76198),r=a(23481),s=a(64818),i=r.T.encloseNamespace("shared.analyticsUtils");function c(e,t){return e?t?(0,n._8)((a="sessionId"in e?e.sessionName:e.id,r=+"".concat(a).concat(Math.floor((new Date).getMinutes()/5)),{dictionaries:[n.O9,n.yd],separator:" ",length:2,style:"capital",seed:r})):"sessionId"in e?e.sessionName:s.l.getFullName(e):"";var a,r}function l(e,t){var a={sessionId:e,sessionName:i("anonymousUser")};return e&&t&&t[e]||a}function o(e,t){return e.user?e.user:l(e.sessionId,t)}},8604:(e,t,a)=>{function n(e){return new Array(Math.ceil(e.videoDuration)).fill(null).map((function(t,a){return e.heatMap[a]||0}))}a.d(t,{O:()=>n})},77640:(e,t,a)=>{a.d(t,{t:()=>v});var n=a(32735),r=a(23481),s=a(26136),i=a(97408),c=a(83914),l=a(76881),o=a(86613),m=a(64818),u=a(26521),d=r.T.encloseNamespace("shared.userRecipientItemMetadata");function v(e){var t,a,r,v,p,f=(r=(t=e).user,v=t.anonymiseUsers,p=t.showDisplayName,"sessionId"in r?{name:(0,s.B2)(r,v),surname:"",avatarUrl:null}:{name:v?(0,s.B2)(r,!0):p?m.l.getDisplayName(r):m.l.getFullName(r),surname:r.surname,avatarUrl:null===(a=r.avatar)||void 0===a?void 0:a.url}),g=f.name,h=f.surname,y=f.avatarUrl;return n.createElement(n.Fragment,null,n.createElement("div",{className:"".concat(u.Z.avatarContainer," ").concat(e.avatarClassName," d-inline-block")},n.createElement(i.q,{imageUrl:y,imageCdnUrl:e.imageCdnUrl,initials:m.l.getInitials(g,h),showAnonymousUser:"sessionId"in e.user,anonymiseUsers:e.anonymiseUsers,anonymousSvgSize:c.S.Small})),n.createElement("div",{className:e.detailsClassName},n.createElement("h4",{className:"font-size-normal fw-normal m-0"},g),e.showSubText&&"id"in e.user&&n.createElement("p",{className:"text-secondary m-0"},e.getSubText?e.getSubText(e.user):function(e){var t=m.l.getUserType(e),a=m.l.getUserRole(e);if(t===l.Y.Staff)return a===o.i.Admin?d("admin"):d("staff");var n=m.l.getYearGroup(e);return(null==n?void 0:n.name)&&"Learners"!==n.name?n.name:d("student")}(e.user))))}v.defaults={showSubText:!0}},49863:(e,t,a)=>{a.d(t,{m9:()=>b,Ad:()=>x,Kh:()=>E});var n=a(32735),r=a(23481),s=a(75896),i=a(97408),c=a(18995),l=a(12528),o=a(83914),m=a(36532),u=a(4594),d=a(36511),v=a(35223),p=a(64818);const f={avatarContainer:"ByxQa",sm:"EgJ0v",sharedAvatar:"cW0NT"};var g=r.T.encloseNamespace("reportsShare.sharedToAvatarList");function h(e){var t=s.m.countBy(e,"typeId"),a=t[u.E.User],n=t[u.E.Classroom],r=t[u.E.ClassroomGroup];return a&&n&&r?g("classroomsGroupsAndUsers",{userCount:a,classroomCount:n,groupCount:r}):a&&n?g("classroomsAndUsers",{userCount:a,classroomCount:n}):a&&r?g("groupsAndUsers",{userCount:a,groupCount:r}):n&&r?g("classroomsAndGroups",{classroomCount:n,groupCount:r}):a?g("users",{userCount:a}):n?g("classrooms",{classroomCount:n}):r?g("groups",{groupCount:r}):void 0}function y(e){var t,a,r,s,c,g=(null===(t=e.item)||void 0===t?void 0:t.typeId)===u.E.User&&e.item,h=(null===(a=e.item)||void 0===a?void 0:a.typeId)===u.E.Classroom&&e.item,y=(null===(r=e.item)||void 0===r?void 0:r.typeId)===u.E.ClassroomGroup&&e.item,b="d-flex justify-content-center align-items-center text-white rounded-circle h-100 w-100";return n.createElement(n.Fragment,null,!!g&&n.createElement(m.u,{title:"".concat(g.name," ").concat(g.surname),spanHack:!0,spanHackClassName:"h-100 w-100"},n.createElement(i.q,{imageUrl:null===(s=g.avatar)||void 0===s?void 0:s.url,imageCdnUrl:e.imageCdnUrl,initials:p.l.getInitials(g.name,g.surname),extraClasses:f.sharedAvatar})),!!h&&n.createElement(m.u,{title:h.name,spanHack:!0,spanHackClassName:"h-100 w-100"},n.createElement("div",{className:b},n.createElement(l.f,{svgName:v.vn.Classrooms,svgSize:o.S.Large,variant:"teal"}))),!!y&&n.createElement(m.u,{title:y.name,spanHack:!0,spanHackClassName:"h-100 w-100"},n.createElement("div",{className:b},n.createElement(l.f,{svgName:v.vn.Group,variant:(0,d.I)(null===(c=y.metadata)||void 0===c?void 0:c.colour)}))))}function b(e){return n.createElement("div",{className:"".concat(f.avatarContainer," ").concat("sm"===e.avatarSize?f.sm:"")},n.createElement(m.u,{title:g("anonymous"),spanHack:!0,spanHackClassName:"bg-light text-dark d-flex justify-content-center align-items-center rounded-circle h-100 w-100"},n.createElement(o.x,{svgName:v.vn.Anonymous,size:"sm"===e.avatarSize?o.S.Small:null})))}function x(e){return n.createElement("div",{className:"".concat(f.avatarContainer," ").concat("sm"===e.avatarSize?f.sm:"")},n.createElement(m.u,{title:e.text||g("sharedLink"),spanHack:!0,spanHackClassName:"bg-light text-dark d-flex justify-content-center align-items-center rounded-circle h-100 w-100 ".concat(e.className||"")},n.createElement(o.x,{svgName:v.vn.Link,size:"sm"===e.avatarSize?o.S.Small:null})))}function E(e){return n.createElement(c.e,Object.assign({},e,{items:e.recipients,avatarItem:y,avatarContainerClassname:"".concat(f.avatarContainer," ").concat("sm"===e.avatarSize?f.sm:""),getHiddenTooltip:h,hasShareLink:e.hasShareLink,shareLinkText:e.shareLinkText}))}E.defaultProps={maxAvatars:5}},65853:(e,t,a)=>{a.d(t,{R:()=>d});var n=a(23481),r=a(110),s=a(4594),i=a(49080),c=a(26361),l=a(35223),o=a(31908);function m(e,t){(null==t||t>e.length)&&(t=e.length);for(var a=0,n=Array(t);a<t;a++)n[a]=e[a];return n}var u=n.T.encloseNamespace("share.shareLinkInfo"),d={getPrivateIconAndText:function(e){var t=e.entityTypeId,a=e.privacy,n=e.hasStudentExp,r=e.entity,i=e.yearGroups;if(t===s.E.Topic||t===s.E.Series)return{icon:l.vn.VisibleOn,text:u(n?"justMySchoolTeachers":"justMySchoolDescription")};if(!Array.isArray(a))switch(a.privacy){case"public":return{icon:l.vn.VisibleOn,text:u("publicDescription")};case"protected":return a.overrideRestrictions?{icon:l.vn.VisibleOn,text:u("clickViewOnly")}:{icon:l.vn.Lock,text:d.getRespectRatingText(r,i,n)};case"just_my_customer":return a.overrideRestrictions?{icon:l.vn.Lock,text:u(n?"justMySchoolTeachers":"justMySchoolDescription")}:{icon:l.vn.Lock,text:d.getRespectRatingText(r,i,n)};case"restricted":case"private":return{icon:l.vn.Lock,text:u("privateDescription")};default:return{}}},getIconAndText:function(e){var t=e.linkExpireDate,a=e.isPasswordProtected,n=e.status;if(!t&&!a)return d.getPrivateIconAndText(e);if(!t)return{icon:l.vn.Lock,text:u("password")};var s=r.O.isToday(t),c=r.O.diffBetween(t,new Date,"day");if(!a){var o=s?u("expiryToday"):u("expiry",{days:c});return n===i.F.Expired&&(o=u("expired")),{icon:l.vn.Timer,text:o}}var m=s?u("passwordExpiryToday"):u("passwordExpiry",{days:c});return n===i.F.Expired&&(m=u("passwordExpired")),{icon:l.vn.Lock,text:m}},getRespectRatingText:function(e,t,a){var n;if(!e||!t)return null;if(a)return u("justMySchoolTeachers");if(!o.M.isVideoType(e))return u("collectionRating");var r=c.l.getWeightedRestriction(null===(n=e._restrictions)||void 0===n?void 0:n.value);if(r&&!r.yearGroup)return u("onlyAdmins");var s,i,l,d=o.M.getRating(e),v=function(e,t){var a="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!a){if(Array.isArray(e)||(a=function(e,t){if(e){if("string"==typeof e)return m(e,t);var a={}.toString.call(e).slice(8,-1);return"Object"===a&&e.constructor&&(a=e.constructor.name),"Map"===a||"Set"===a?Array.from(e):"Arguments"===a||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(a)?m(e,t):void 0}}(e))||t&&e&&"number"==typeof e.length){a&&(e=a);var n=0,r=function(){};return{s:r,n:function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:r}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var s,i=!0,c=!1;return{s:function(){a=a.call(e)},n:function(){var e=a.next();return i=e.done,e},e:function(e){c=!0,s=e},f:function(){try{i||null==a.return||a.return()}finally{if(c)throw s}}}}(t);try{for(v.s();!(l=v.n()).done;){var p=l.value;(!s||p.value>s.value)&&(s=p),r&&p.value<=r.yearGroup||d&&p.rating.value<d.value||(!i||p.value<i.value)&&(i=p)}}catch(e){v.e(e)}finally{v.f()}return i?1===t.length?u("clickViewOnly"):i.value===s.value?u("maxYearGroup",{yearGroup:s.name}):u("yearGroupRange",{yearGroup:i.name}):u("onlyStaff")}}},18995:(e,t,a)=>{a.d(t,{e:()=>l});var n=a(32735),r=a(23481),s=a(49863),i=a(36532),c=r.T.encloseNamespace("shared.avatarList");function l(e){var t=e.items.length>e.maxAvatars?e.items.slice(0,e.maxAvatars-1):e.items,a=e.items.length>t.length?e.items.slice(e.maxAvatars-1):[],r=e.avatarItem,l=a.length,o="sm"===e.avatarSize?4:8;function m(t){return{transform:"translateX(".concat((e.hasShareLink?t+1:t)*-o,"px)"),zIndex:e.maxAvatars-t}}return 0===t.length&&0===a.length?n.createElement(n.Fragment,null):n.createElement("div",{className:"d-flex",style:{marginRight:"-".concat((t.length-1+(a.length?1:0)+(e.hasShareLink?1:0))*o,"px")}},e.hasShareLink&&n.createElement("div",{style:{zIndex:e.maxAvatars+1}},n.createElement(s.Ad,{text:e.shareLinkText,avatarSize:e.avatarSize,className:"bg-dark text-white"})),t.map((function(t,a){return n.createElement("div",{className:"".concat(e.avatarContainerClassname||""),key:t.id,style:m(a)},n.createElement(r,{item:t,imageCdnUrl:e.imageCdnUrl,index:a,maxAvatars:e.maxAvatars}))})),!!a.length&&n.createElement("div",{className:"".concat(e.avatarContainerClassname||""," bg-white rounded-circle"),style:{transform:"translateX(".concat(t.length*-o,"px)"),zIndex:e.maxAvatars-t.length}},n.createElement(i.u,{title:e.getHiddenTooltip?e.getHiddenTooltip(a):e.roleToDisplay?c("staff"===e.roleToDisplay?"staff":"student",{count:l,smartCount:l}):c("users",{count:l,smartCount:l}),spanHack:!0,spanHackClassName:"h-100 w-100"},n.createElement("div",{className:"d-flex justify-content-center align-items-center border border-dark rounded-circle h-100 w-100 ".concat(e.numberClassname||"")},"+".concat(a.length)))))}l.defaultProps={maxAvatars:5}},40782:(e,t,a)=>{a.d(t,{I:()=>n,O:()=>l});var n,r=a(32735),s=a(2606),i=a(362);function c(e){var t=r.useCallback((function(t){if(t){var a=t.r.baseVal.value,n=2*Math.PI*a,r=n-e.percentage*n;t.style.strokeDasharray="".concat(n," ").concat(n),t.style.strokeDashoffset=r.toString()}}),[e.percentage]);return r.createElement("svg",null,r.createElement("circle",{r:(0,s.pu)(e.size),className:i.Z.backgroundCircle}),!(0,s.zR)(e.percentage)&&r.createElement("circle",{ref:t,r:(0,s.pu)(e.size),className:(0,s.V4)(e.percentage,e.scoreThresholds)}))}function l(e){var t,a=(0,s.Ki)(e.percentage),l=e.size||(e.layout===n.LabelInside?s.Mk.Large:s.Mk.Small),o=e.customLabel||(0,s.DV)(a);return e.layout===n.LabelOnly?r.createElement("span",{className:(0,s.IA)(a)},o):r.createElement("div",{className:"d-flex align-items-center justify-content-between ".concat(null!==(t=e.className)&&void 0!==t?t:"")},e.layout===n.LabelBefore&&r.createElement("span",{className:"me-2"},o),r.createElement("div",{className:(0,s.tw)(l,a)},r.createElement(c,{percentage:a,size:l,scoreThresholds:e.scoreThresholds}),e.layout===n.LabelInside&&r.createElement("span",{className:i.Z.centredPercentageText},o)))}!function(e){e.CircleOnly="circle_only",e.LabelOnly="label_only",e.LabelBefore="label_before",e.LabelInside="label_inside"}(n||(n={})),l.defaultProps={layout:n.CircleOnly}},2606:(e,t,a)=>{a.d(t,{DV:()=>g,IA:()=>v,Ki:()=>f,Mk:()=>c,V4:()=>d,pu:()=>u,tw:()=>p,zR:()=>h});var n=a(94892),r=a(362);function s(e){return s="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},s(e)}function i(e,t,a){return(t=function(e){var t=function(e){if("object"!=s(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var a=t.call(e,"string");if("object"!=s(a))return a;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==s(t)?t:t+""}(t))in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}var c,l=.2,o=.36;!function(e){e.Small="small",e.Large="large",e.ExtraSmall="extraSmall"}(c||(c={}));var m=i(i(i({},c.ExtraSmall,{size:2}),c.Small,{size:2}),c.Large,{size:5.8});function u(e){var t=m[e].size,a=e===c.Large?o:l;return"".concat(t/2-2*a,"rem")}function d(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:n.i;return e>=t.HIGH?r.Z.circleSuccess:e>=t.MODERATE?r.Z.circleWarning:r.Z.circleDanger}function v(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:n.i;return e>=t.HIGH?"text-success":e>=t.MODERATE?"text-warning":"text-danger"}function p(e,t){var a="d-inline-block ".concat(r.Z.circleContainer);return e===c.Large&&(a+=" ".concat(r.Z.lgCircleContainer)),e===c.ExtraSmall&&(a+=" ".concat(r.Z.xsCircleContainer)),h(t)&&(a+=" ".concat(r.Z.pendingCircle)),a}function f(e){if(!h(e))return+e.toFixed(2)}function g(e){return h(e)?"--%":"".concat(Math.round(100*e),"%")}function h(e){return"number"!=typeof e}},94892:(e,t,a)=>{a.d(t,{T:()=>r,i:()=>n});var n={HIGH:.75,MODERATE:.5},r={HIGH:.7,MODERATE:.7}},93322:(e,t,a)=>{a.d(t,{F:()=>s});var n=a(32735),r=a(13126);function s(){n.useEffect((function(){return r.e.lockContentWidth(),function(){return r.e.unlockContentWidth()}}),[])}},53214:(e,t,a)=>{a.d(t,{u:()=>g});var n=a(32735),r=a(91693),s=a(83345),i=a(4594),c=a(35223),l=a(99742),o=a(14070),m=a(97291),u=a(86099),d=a(38279);function v(e){return v="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},v(e)}function p(e,t,a){return(t=function(e){var t=function(e){if("object"!=v(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var a=t.call(e,"string");if("object"!=v(a))return a;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==v(t)?t:t+""}(t))in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}var f="lite.insightsMask";function g(e){return n.createElement("div",{className:"".concat(!e.hasShared&&d.Z.mask," position-relative")},n.createElement("div",{className:e.hasShared?"":"position-absolute"},e.children),n.createElement("div",{className:e.hasShared?"":"".concat(d.Z.backdrop," d-flex flex-column align-items-center justify-content-start py-5")},!e.hasShared&&n.createElement("div",{className:"text-center p-5 m-5 w-50"},n.createElement("img",{className:"mb-3",src:l.W.Insights.SEND_PAPER_PLANE,width:288}),n.createElement("h2",{className:"h3 mb-3"},n.createElement(s.x,{namespace:f,phrase:"shareHeading"})),n.createElement("p",{className:"mb-3"},n.createElement(s.x,{namespace:f,phrase:"shareDescription"})),n.createElement(r.h,{svgName:c.vn.Share,className:"btn btn-dark",appLink:function(){var t;if(e.hasShareFlowV2){var a=p(p(p({},i.E.Video,o.e.Insights.VIDEO_SHARE_OPTIONS),i.E.Clip,o.e.Insights.CLIP_SHARE_OPTIONS),i.E.Interactive,o.e.Insights.INTERACTIVE_SHARE_OPTIONS);return{application:m.O.INSIGHTS,action:a[e.video.typeId],args:[null===(t=e.video)||void 0===t?void 0:t.id],params:{shareId:e.shareId}}}return(0,u.YK)(e.video)}()},n.createElement(s.x,{namespace:f,phrase:"share"})))))}},24758:(e,t,a)=>{a.d(t,{A:()=>c});var n=a(32735),r=a(49863),s=a(83345),i="myShares.sharedToPill";function c(e){var t=e.shareRecipients;return n.createElement("div",{className:"d-flex align-items-center bg-gray-100 rounded-pill w-fit gap-2 p-2"},n.createElement("span",{className:"text-nowrap"},n.createElement(s.x,{namespace:i,phrase:t?"sharedTo":"sharedVia"})),!t&&n.createElement(r.Ad,{text:e.shareLinkText,avatarSize:"sm",className:"bg-dark text-white"}),t&&!(null==t?void 0:t.length)&&n.createElement(r.m9,{avatarSize:"sm"}),t&&n.createElement(r.Kh,{recipients:t,imageCdnUrl:e.imageCdnUrl,maxAvatars:e.maxAvatars,avatarSize:"sm",hasShareLink:e.hasShareLink,shareLinkText:e.shareLinkText}))}c.defaultProps={maxAvatars:3}},26521:(e,t,a)=>{a.d(t,{Z:()=>n});const n={removeRecipient:"mCbMC",recipientItem:"kdcb0",showSpinner:"xH6Mu",avatarContainer:"Zcpg3",recipientDetails:"v5EmV",recipientDetailsWithRemoveButton:"_V928"}},362:(e,t,a)=>{a.d(t,{Z:()=>n});const n={circleContainer:"p8Vgz",backgroundCircle:"asGGE",circleSuccess:"PXLNj",circleWarning:"ZckRN",circleDanger:"slBRg",lgCircleContainer:"N8KCI",xsCircleContainer:"RPqZ2",pendingCircle:"DKrcq",centredPercentageText:"tpmLR"}},38279:(e,t,a)=>{a.d(t,{Z:()=>n});const n={mask:"VRTes",backdrop:"XzVXl"}},82602:(e,t,a)=>{a.d(t,{WU:()=>o});var n=["second","minute","hour","day","week","month","year"],r=["秒","分钟","小时","天","周","个月","年"],s={},i=function(e,t){s[e]=t},c=[60,60,24,7,365/7/12,12];function l(e){return e instanceof Date?e:!isNaN(e)||/^\d+$/.test(e)?new Date(parseInt(e)):(e=(e||"").trim().replace(/\.\d+/,"").replace(/-/,"/").replace(/-/,"/").replace(/(\d)T(\d)/,"$1 $2").replace(/Z/," UTC").replace(/([+-]\d\d):?(\d\d)/," $1$2"),new Date(e))}var o=function(e,t,a){var n=function(e,t){return(+(t?l(t):new Date)-+l(e))/1e3}(e,a&&a.relativeDate);return function(e,t){for(var a=e<0?1:0,n=e=Math.abs(e),r=0;e>=c[r]&&r<c.length;r++)e/=c[r];return(e=Math.floor(e))>(0==(r*=2)?9:1)&&(r+=1),t(e,r,n)[a].replace("%s",e.toString())}(n,function(e){return s[e]||s.en_US}(t))};i("en_US",(function(e,t){if(0===t)return["just now","right now"];var a=n[Math.floor(t/2)];return e>1&&(a+="s"),[e+" "+a+" ago","in "+e+" "+a]})),i("zh_CN",(function(e,t){if(0===t)return["刚刚","片刻后"];var a=r[~~(t/2)];return[e+" "+a+"前",e+" "+a+"后"]}))}}]);
2
- //# sourceMappingURL=6317-49be898c73-lite.chunk.js.map