@clickview/lite 0.65.1 → 0.65.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 (23) hide show
  1. package/dist/bundles.json +1 -1
  2. package/dist/languages/en.json +1 -1
  3. package/dist/scripts/3549-c61e7b47a9-lite.chunk.js +2 -0
  4. package/dist/scripts/3549-c61e7b47a9-lite.chunk.js.map +1 -0
  5. package/dist/scripts/{3717-8a97ddeb28-lite.chunk.js → 3717-ce609e100b-lite.chunk.js} +2 -2
  6. package/dist/scripts/3717-ce609e100b-lite.chunk.js.map +1 -0
  7. package/dist/scripts/6802-2f25f55146-lite.chunk.js +2 -0
  8. package/dist/scripts/{6802-3187f3ece9-lite.chunk.js.map → 6802-2f25f55146-lite.chunk.js.map} +1 -1
  9. package/dist/scripts/7033-6ab57dea83-lite.chunk.js +2 -0
  10. package/dist/scripts/7033-6ab57dea83-lite.chunk.js.map +1 -0
  11. package/dist/scripts/{7177-a1731c906a-lite.chunk.js → 7177-2844888842-lite.chunk.js} +2 -2
  12. package/dist/scripts/7177-2844888842-lite.chunk.js.map +1 -0
  13. package/dist/scripts/{bundle-4bdf2c81c7.min.js → bundle-ccf68491f0.min.js} +3 -3
  14. package/dist/scripts/{bundle-4bdf2c81c7.min.js.map → bundle-ccf68491f0.min.js.map} +1 -1
  15. package/package.json +1 -1
  16. package/dist/scripts/3549-e85af77dce-lite.chunk.js +0 -2
  17. package/dist/scripts/3549-e85af77dce-lite.chunk.js.map +0 -1
  18. package/dist/scripts/3717-8a97ddeb28-lite.chunk.js.map +0 -1
  19. package/dist/scripts/6802-3187f3ece9-lite.chunk.js +0 -2
  20. package/dist/scripts/7033-6333c374da-lite.chunk.js +0 -2
  21. package/dist/scripts/7033-6333c374da-lite.chunk.js.map +0 -1
  22. package/dist/scripts/7177-a1731c906a-lite.chunk.js.map +0 -1
  23. /package/dist/scripts/{bundle-4bdf2c81c7.min.js.LICENSE.txt → bundle-ccf68491f0.min.js.LICENSE.txt} +0 -0
@@ -0,0 +1,2 @@
1
+ "use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[3549],{74901:(e,a,t)=>{function n(e){return function(e){if(Array.isArray(e))return r(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,a){if(e){if("string"==typeof e)return r(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)?r(e,a):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 r(e,a){(null==a||a>e.length)&&(a=e.length);for(var t=0,n=Array(a);t<a;t++)n[t]=e[t];return n}t.d(a,{K:()=>i});var i=function(e){var a=[],t=[];return e.users&&a.push.apply(a,n(e.users)),e.classrooms&&t.push.apply(t,n(e.classrooms)),e.classroomGroups&&t.push.apply(t,n(e.classroomGroups)),{userId:a,groupId:t}}},94644:(e,a,t)=>{t.d(a,{r:()=>d});var n=t(50242),r=t(81886),i=t(67058),s=t(14553),l=t(49267),o=t(49075),c={notFound:i.d,forbidden:{rating:s.q,yearLevel:s.q,region:l.a,privacy:s.q},badRequest:o._,internalServerError:o._};function d(e){var a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},t=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(e){var i;i="number"==typeof e?e:e.status;var s=Object.assign(Object.assign({},c),a);i&&r.Q.Ry.isStatusCodeError(i)&&(i!==n.o.InternalServer?i!==n.o.NotFound?i!==n.o.Forbidden?t.badRequest||r.Q.Ry.throw(new s.badRequest):t.forbidden||r.Q.Ry.throw(new s.forbidden.privacy):t.notFound||r.Q.Ry.throw(new s.notFound):t.internalServerError||r.Q.Ry.throw(new o._))}}},17913:(e,a,t)=>{t.d(a,{u:()=>s});var n=t(97395),r=t(110),i=t(62875),s={individualEngagement:function(e,a,t,r){var s=Object.assign({objectId:e},a);return t&&(s.sharerId=t),r&&(s.includePublicViews=!0),{url:n._.urlBuilder("{gateway}/v1/analytics/heat-map",s),key:(0,i.H)("engagement:".concat(e),a,t),formatData:function(e){var a;return Object.assign(Object.assign({},e),{data:null===(a=e.data)||void 0===a?void 0:a.map((function(e){var a;return Object.assign(Object.assign({},e),{heatMap:null!==(a=e.heatMap)&&void 0!==a?a:[]})}))})},normalize:!1}},aggregateEngagement:function(e,a,t,r){var s=Object.assign({objectId:e},a);return t&&(s.sharerId=t),r&&(s.includePublicViews=!0),{url:n._.urlBuilder("{gateway}/v1/analytics/heat-map/aggregations",s),key:(0,i.H)("aggregate:engagement:".concat(e),a,t),formatData:function(e){var a;return Object.assign(Object.assign({},e),{heatMap:null!==(a=e.heatMap)&&void 0!==a?a:[]})},normalize:!1}},views:function(e,a,t,s){var l=Object.assign(Object.assign({},e),{timeOffset:r.O.getTimezoneOffset()});return a&&(l.objectId=a),t&&(l.sharerId=t),s&&(l.includePublicViews=!0),{url:n._.urlBuilder("{gateway}/v1/analytics/video-views",l),key:(0,i.H)("video:views:".concat(a),e,t),normalize:!1}}}},91286:(e,a,t)=>{t.d(a,{v:()=>s});var n=t(32735),r=t(94644);function i(e){return e.map((function(e){return e.statusCode})).join(":")}function s(e,a,t){var s=Array.isArray(e)?e:[e];(0,n.useEffect)((function(){s.forEach((function(e){(0,r.r)(e.statusCode,a,t)}))}),[i(s),a,t])}},62875:(e,a,t)=>{function n(e,a,t){var n="".concat(e,":").concat(a.start,":").concat(a.end),r=Array.isArray(a.userId)?a.userId.sort().join(":"):a.userId,i=Array.isArray(a.groupId)?a.groupId.sort().join(":"):a.groupId;return r&&(n+=":".concat(r)),i&&(n+=":".concat(i)),t&&(n+=":".concat(t)),n}t.d(a,{H:()=>n})},27513:(e,a,t)=>{t.d(a,{m:()=>u});var n=t(32735),r=t(20354),i=t(16714),s=t(39151),l=t(22902),o=t(37802),c=t(66),d=t(11293);function u(e){var a,t=(0,o.r)(null).hasClassrooms,u=(0,l.T)().hasPermissions,m=r.a.useBasicFetch(s.L.config());return n.createElement("div",null,n.createElement(d.p,{analyticsUrl:null===(a=m.data)||void 0===a?void 0:a.analyticsWebUrl,hasAnalytics:u(i.C.ViewCustomerAnalytics),video:e.video}),n.createElement(c.j,{video:e.video,tabs:e.tabs,dateRangeAppLinkParams:e.dateRangeAppLinkParams,hasClassrooms:t}))}},11293:(e,a,t)=>{t.d(a,{p:()=>g});var n=t(32735),r=t(57900),i=t(97395),s=t(2948),l=t(10874),o=t(83345),c=t(4594),d=t(35223),u=t(86702);function m(e,a){(null==a||a>e.length)&&(a=e.length);for(var t=0,n=Array(a);t<a;t++)n[t]=e[t];return n}var v="lite.insightsAdminAlert";function g(e){var a,t,g=(a=(0,s.D)(u.y.INSIGHTS_ADMIN_ALERT,!0,{storage:r.Z1.LocalStorage}),t=2,function(e){if(Array.isArray(e))return e}(a)||function(e,a){var t=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=t){var n,r,i,s,l=[],o=!0,c=!1;try{if(i=(t=t.call(e)).next,0===a){if(Object(t)!==t)return;o=!1}else for(;!(o=(n=i.call(t)).done)&&(l.push(n.value),l.length!==a);o=!0);}catch(e){c=!0,r=e}finally{try{if(!o&&null!=t.return&&(s=t.return(),Object(s)!==s))return}finally{if(c)throw r}}return l}}(a,t)||function(e,a){if(e){if("string"==typeof e)return m(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)?m(e,a):void 0}}(a,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.")}()),p=g[0],h=g[1];return e.hasAnalytics&&p?n.createElement("div",{role:"alert",className:"d-flex justify-content-between align-items-center bg-light-blue rounded p-2 mb-4"},n.createElement("div",null,n.createElement(o.x,{namespace:v,phrase:"adminAlert"}),n.createElement("a",{className:"text-info",href:function(){if(!e.video)return e.analyticsUrl;var a="";return e.video.typeId===c.E.Interactive&&(a="/interactives/".concat(e.video.id,"/views")),e.video.typeId===c.E.Video&&(a="/videos/".concat(e.video.id,"/views")),e.video.typeId===c.E.Clip&&(a="/clips/".concat(e.video.id,"/views")),i._.safeUrlConcat(e.analyticsUrl,a)}(),target:"_blank"},n.createElement(o.x,{namespace:v,phrase:"analytics"})),"."),n.createElement(l.h,{svgName:d.vn.Close,className:"text-blue",onClick:function(){h(!1)}})):n.createElement(n.Fragment,null)}},17934:(e,a,t)=>{t.d(a,{R:()=>I});var n=t(32735),r=t(82602),i=t(20354),s=t(74901),l=t(40003),o=t(30439),c=t(65853),d=t(64249),u=t(10874),m=t(83345),v=t(39151),g=t(1666),p=t(31949),h=t(17913),f=t(35223),y=t(86099),b=t(24758),E="insights.shareInfo";function I(e){var a,t,I,A,w=i.a.useBasicFetch(v.L.config()),N=Object.assign(Object.assign({},(0,l.wO)((0,l.Hb)(),e.dateRangeAppLinkParams)),(0,s.K)(e.audienceAppLinkParams)),k=i.a.useBasicFetch(p.N.currentUser()),j=i.a.useBasicFetch(e.video&&o.o.getShareLinkByObjectId(e.video.id)),S=i.a.useBasicFetch(e.video&&o.o.getSentDirectShareByObjectId(e.video.id)),O=i.a.useBasicFetch((null===(a=k.data)||void 0===a?void 0:a.customerId)&&d.I.getDirectShareRecipientsRequest(k.data.customerId,S.data)),C=i.a.useBasicFetch(k.data&&e.video&&h.u.views(N,e.video.id,k.data.id)),U=i.a.useBasicFetch(e.video&&o.o.getPrivacy(e.video.id)),L=i.a.useBasicFetch((null===(t=k.data)||void 0===t?void 0:t.isAuthenticated)&&g.h.yearGroups(k.data.customerId)),B=j.hasCompleted&&!j.data&&S.hasCompleted&&!S.data,F=j.hasCompleted&&j.data||S.hasCompleted&&S.data&&(!j.data||U.data)&&(!j.data||L.data)&&O.data&&C.data,R=j.data&&U.data&&L.data&&c.R.getIconAndText({entity:e.video,entityTypeId:e.video.typeId,hasStudentExp:!1,isPasswordProtected:j.data.isPasswordProtected,linkExpireDate:j.data.linkExpireDate,privacy:U.data,status:j.data.status,yearGroups:L.data}),x=n.useMemo((function(){var e;return null===(e=C.data)||void 0===e?void 0:e.data.reduce((function(e,a){return a.count+e}),0)}),[C.data]);return n.createElement("div",{className:"mb-4"},F&&n.createElement(n.Fragment,null,n.createElement("h2",{className:"h4"},n.createElement(m.x,{namespace:E,phrase:"shareInfo"})),n.createElement("div",{className:"d-flex border border-light p-3 rounded-3 align-items-center justify-content-between"},n.createElement("div",{className:"d-flex align-items-center gap-2"},n.createElement(b.A,{shareRecipients:O.data,imageCdnUrl:null===(I=w.data)||void 0===I?void 0:I.imageCdnUrl,hasShareLink:!!j.data,maxAvatars:4,shareLinkText:null==R?void 0:R.text}),"·",n.createElement("p",{className:"mb-0"},(0,r.WU)(null===(A=S.data)||void 0===A?void 0:A.dateCreated)),x&&n.createElement(n.Fragment,null,"·",n.createElement("p",{className:"mb-0"},n.createElement(m.x,{namespace:E,phrase:"views",options:{smartCount:x}})))),n.createElement(u.h,{appLink:(0,y.YK)(e.video),svgName:f.vn.Share,className:"btn btn-outline-dark"},n.createElement(m.x,{namespace:E,phrase:"share"})))),!B&&!F&&n.createElement(n.Fragment,null,n.createElement("div",{className:"h4 partial-loading-background w-25"}," "),n.createElement("div",{className:"p-3 rounded partial-loading-background"},n.createElement("p",{className:"mb-1"}," "))))}},71051:(e,a,t)=>{t.r(a),t.d(a,{VideoInsightsOverviewView:()=>z});var n=t(32735),r=t(23481),i=t(2948),s=t(20354),l=t(75896),o=t(42642),c=t(94652),d=t(25216),u=t(461),m=t(35223),v=r.T.encloseNamespace("shared.insightStudentsNotWatched");function g(e){var a,t=(null===(a=e.students)||void 0===a?void 0:a.filter((function(a){var t;return!(null===(t=e.watchedIds)||void 0===t?void 0:t.includes(a.id))})))||[];return n.createElement(d.L,{title:v("title"),svgName:m.vn.Puzzle,svgClassName:"bg-light-teal text-teal"},n.createElement(u.y,{students:t,imageCdnUrl:e.imageCdnUrl,imageUrl:e.imageUrl,description:v("studentsDisplay"),anonymiseUsers:e.anonymiseUsers}))}var p=r.T.encloseNamespace("shared.insightStudentsWatched");function h(e){return n.createElement(d.L,{title:p("title"),svgName:m.vn.Flag,svgClassName:"bg-light-indigo text-indigo",count:e.students.length},n.createElement(u.y,{students:e.students,imageCdnUrl:e.imageCdnUrl,imageUrl:e.imageUrl,description:p("studentsDisplay"),appLink:e.heatmapAppLink,appLinkText:p("viewAll"),anonymiseUsers:e.anonymiseUsers}))}var f=t(26025),y=t(74901),b=t(40003),E=t(30439),I=t(83345),A=t(38143),w=t(4594),N=t(39151),k=t(31949),j=t(17913),S=t(91286),O=t(93322),C=t(79612),U=t(37802),L=t(31908),B=t(99742),F=t(88630),R=t(49673),x=t(5672),P=t(27513),T=t(17934);const _={partialInsights:"ImBB3"};function D(){return n.createElement("div",null,n.createElement("h2",{className:"h4 w-25 partial-loading-background"}," "),n.createElement("div",{className:"row g-3 mb-5"},n.createElement("div",{className:"col-12"},n.createElement("div",{className:"".concat(_.partialInsights," rounded partial-loading-background")}))),n.createElement("h2",{className:"h4 w-25 partial-loading-background"}," "),n.createElement("div",{className:"row g-3 mb-5"},n.createElement("div",{className:"col-6"},n.createElement("div",{className:"".concat(_.partialInsights," rounded partial-loading-background")})),n.createElement("div",{className:"col-6"},n.createElement("div",{className:"".concat(_.partialInsights," rounded partial-loading-background")}))))}var M=t(14070),V=t(97291);function H(e,a){(null==a||a>e.length)&&(a=e.length);for(var t=0,n=Array(a);t<a;t++)n[t]=e[t];return n}var q="insights.videoInsightsOverview",G=r.T.encloseNamespace(q);function z(e){var a,t,r,d,u,m,v,p=(m=(0,i.D)(A.g.ANONYMISE_USERS),v=1,function(e){if(Array.isArray(e))return e}(m)||function(e,a){var t=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=t){var n,r,i,s,l=[],o=!0,c=!1;try{if(i=(t=t.call(e)).next,0===a){if(Object(t)!==t)return;o=!1}else for(;!(o=(n=i.call(t)).done)&&(l.push(n.value),l.length!==a);o=!0);}catch(e){c=!0,r=e}finally{try{if(!o&&null!=t.return&&(s=t.return(),Object(s)!==s))return}finally{if(c)throw r}}return l}}(m,v)||function(e,a){if(e){if("string"==typeof e)return H(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)?H(e,a):void 0}}(m,v)||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,O.F)();var _=(0,U.r)(null).hasClassrooms,z=s.a.useBasicFetch(k.N.currentUser()),W=s.a.useBasicFetch(N.L.config()),Q=L.M.getVideoRequest(e.videoId,e.typeId),$=s.a.useBasicFetch(Q),K=f.B.getAudienceAppLinkParams(),Y=f.B.getDateRangeAppLinkParams(),Z=Object.assign(Object.assign({},(0,b.wO)((0,b.Hb)(),Y)),(0,y.K)(K));(0,C.M)({title:$.data?G("pageTitle",{video:null===(a=$.data)||void 0===a?void 0:a.name}):null}),(0,S.v)($);var J=s.a.useBasicFetch(j.u.aggregateEngagement(e.videoId,Z,z.data.id)),X=1===(null===(t=K.classrooms)||void 0===t?void 0:t.length)&&!(null===(r=K.classroomGroups)||void 0===r?void 0:r.length),ee=s.a.useBasicFetch(X&&F.F.getClassroomStudents(l.m.first(K.classrooms))),ae=s.a.useBasicFetch((null===(d=J.data)||void 0===d?void 0:d.userIds)&&E.o.getRecipientsById(J.data.userIds,z.data.customerId)),te=s.a.useBasicFetch(z.data&&j.u.views(Z,e.videoId,z.data.id)),ne=s.a.useBasicFetch(E.o.getShareLinkByObjectId(e.videoId)),re=s.a.useBasicFetch(E.o.getSentDirectShareByObjectId(e.videoId)),ie=!(!ne.data&&!re.data);function se(){return ae.data?Object.values(ae.data):[]}var le=z.data&&W.data&&$.data&&J.data&&(!X||ee.data),oe=Object.assign(Object.assign({},K),Y),ce=function(e,a){return{heatmapAppLink:{application:V.O.INSIGHTS,action:M.e.Insights.VIDEO_HEATMAP,args:[e],params:a}}}(e.videoId,oe);return n.createElement("div",{className:"px-3"},n.createElement(P.m,{video:$.data,dateRangeAppLinkParams:Y,tabs:function(){var e,a,t;return(null===(e=$.data)||void 0===e?void 0:e.typeId)===w.E.Clip?(0,x.$o)(null===(a=$.data)||void 0===a?void 0:a.id,"insights",oe):(0,x.$6)(null===(t=$.data)||void 0===t?void 0:t.id,"insights",oe)}()}),n.createElement(T.R,{audienceAppLinkParams:K,dateRangeAppLinkParams:Y,video:$.data}),!le&&n.createElement(D,null),le&&n.createElement(R.u,{video:$.data,hasShared:ie},n.createElement("section",{className:"mb-5"},n.createElement("h2",{className:"h4"},n.createElement(I.x,{namespace:q,phrase:"studentViewing"}),n.createElement("span",null,": ",se().length,ee.data?"/".concat(ee.data.data.length):"")),n.createElement("div",{className:"row g-3"},X&&n.createElement("div",{className:"col-12 col-md"},n.createElement(g,{students:ee.data.data,watchedIds:J.data.userIds,imageCdnUrl:W.data.imageCdnUrl,heatmapAppLink:ce.heatmapAppLink,imageUrl:B.W.Insights.AVATAR,anonymiseUsers:p})),n.createElement("div",{className:"col-12 col-md"},n.createElement(h,{students:se(),imageCdnUrl:W.data.imageCdnUrl,heatmapAppLink:ce.heatmapAppLink,imageUrl:B.W.Insights.AVATAR,anonymiseUsers:p})))),n.createElement("section",{className:"mb-5"},n.createElement("h2",{className:"h4"},n.createElement(I.x,{namespace:q,phrase:_?"classEngagement":"engagement"})),n.createElement("div",{className:"row g-3"},n.createElement("div",{className:"col-12 col-md-6"},n.createElement(o.i,{osCount:null===(u=te.data)||void 0===u?void 0:u.osCount})),n.createElement("div",{className:"col-12 col-md-6"},n.createElement(c.b,{engagement:J.data,heatmapAppLink:ce.heatmapAppLink}))))))}}}]);
2
+ //# sourceMappingURL=3549-c61e7b47a9-lite.chunk.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scripts/3549-c61e7b47a9-lite.chunk.js","mappings":"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","sources":["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/insights/views/header/InsightsHeaderView.tsx","file:///app/packages/projects/lite/src/apps/insights/views/insights-admin-alert/InsightsAdminAlert.tsx","file:///app/packages/projects/lite/src/apps/insights/views/share-info/ShareInfoView.tsx","file:///app/packages/libs/shared/src/apps/analytics/components/insights/students-not-watched/InsightStudentsNotWatched.tsx","file:///app/packages/libs/shared/src/apps/analytics/components/insights/students-watched/InsightStudentsWatched.tsx","file:///app/packages/projects/lite/src/apps/insights/views/video/overview/partial-loading/partial-video-insights-overview.scss","file:///app/packages/projects/lite/src/apps/insights/views/video/overview/partial-loading/PartialVideoInsightsOverview.tsx","file:///app/packages/projects/lite/src/apps/insights/views/video/overview/VideoInsightsOverviewView.tsx","file:///app/packages/projects/lite/src/apps/insights/views/video/overview/VideoInsightsOverviewUtils.ts"],"sourcesContent":["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 includePublicViews?: boolean\n ): Flight.Request {\n const queryParams: HashObject = {\n objectId,\n ...filter\n };\n\n if (sharerId)\n queryParams.sharerId = sharerId;\n\n if (includePublicViews)\n queryParams.includePublicViews = true;\n\n return {\n url: UrlHelper.urlBuilder('{gateway}/v1/analytics/heat-map', queryParams),\n key: getAnalyticsRequestKey(`engagement:${objectId}`, 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 includePublicViews?: boolean\n ): Flight.Request {\n const queryParams: HashObject = {\n objectId,\n ...filter\n };\n\n if (sharerId)\n queryParams.sharerId = sharerId;\n \n if (includePublicViews)\n queryParams.includePublicViews = true;\n\n return {\n url: UrlHelper.urlBuilder('{gateway}/v1/analytics/heat-map/aggregations', queryParams),\n key: getAnalyticsRequestKey(`aggregate:engagement:${objectId}`, 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 includePublicViews?: 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 (includePublicViews)\n queryParams.includePublicViews = true;\n\n return {\n url: UrlHelper.urlBuilder('{gateway}/v1/analytics/video-views', queryParams),\n key: getAnalyticsRequestKey(`video:views:${objectId}`, 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 { Flight } from 'libs/common/react/index';\n\nimport { DateRangeQueryParams } from 'libs/shared/apps/analytics/interfaces/DateRangeQueryParams';\nimport { PillTab } from 'libs/shared/components/pill-tab-selector/PillTabSelector';\nimport { PermissionName } from 'libs/shared/enums/PermissionName';\nimport { ConfigRequests } from 'libs/shared/flight-requests/ConfigRequests';\nimport { usePermissions } from 'libs/shared/hooks/usePermissions';\nimport { useSettings } from 'libs/shared/hooks/useSettings';\nimport { Config, VideoTypes } from 'libs/shared/interfaces';\n\nimport { InsightsHeader } from 'apps/insights/components/insights-header/InsightsHeader';\nimport { InsightsAdminAlert } from 'apps/insights/views/insights-admin-alert/InsightsAdminAlert';\n\ninterface InsightsHeaderProps {\n dateRangeAppLinkParams: DateRangeQueryParams;\n video: VideoTypes;\n tabs: PillTab[];\n}\n\n// eslint-disable-next-line rulesdir/require-view-title\nexport function InsightsHeaderView(props: InsightsHeaderProps) {\n const { hasClassrooms } = useSettings(null);\n const { hasPermissions } = usePermissions();\n\n const config = Flight.useBasicFetch<Config>(ConfigRequests.config());\n\n return (\n <div>\n <InsightsAdminAlert\n analyticsUrl={config.data?.analyticsWebUrl}\n hasAnalytics={hasPermissions(PermissionName.ViewCustomerAnalytics)}\n video={props.video}\n />\n\n <InsightsHeader\n video={props.video}\n tabs={props.tabs}\n dateRangeAppLinkParams={props.dateRangeAppLinkParams}\n hasClassrooms={hasClassrooms}\n />\n </div>\n );\n}","import React from 'react';\n\nimport { StorageType } from 'libs/common/backbone/utils/LocalStorageHelper';\nimport { UrlHelper } from 'libs/common/backbone/utils/UrlHelper';\nimport { useViewModel } from 'libs/common/react/hooks/UseViewModel';\n\nimport { IconButton } from 'libs/shared/components/icon-button/IconButton';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { VideoTypes } from 'libs/shared/interfaces';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport { ViewModelKeys } from 'shared/constants/LiteViewModels';\n\nconst namespace = 'lite.insightsAdminAlert';\n\ninterface InsightsAdminAlertProps {\n hasAnalytics: boolean;\n analyticsUrl: string;\n video?: VideoTypes;\n}\n\n// eslint-disable-next-line rulesdir/require-view-title\nexport function InsightsAdminAlert(props: InsightsAdminAlertProps) {\n const [ show, setShow ] = useViewModel(\n ViewModelKeys.INSIGHTS_ADMIN_ALERT,\n true,\n { storage: StorageType.LocalStorage }\n );\n\n function onDismiss() {\n setShow(false);\n }\n\n function getAnalyticsUrl() {\n if (!props.video) return props.analyticsUrl;\n\n let videoRoute = '';\n\n if (props.video.typeId === MasterType.Interactive)\n videoRoute = `/interactives/${props.video.id}/views`;\n\n if (props.video.typeId === MasterType.Video)\n videoRoute = `/videos/${props.video.id}/views`;\n\n if (props.video.typeId === MasterType.Clip)\n videoRoute = `/clips/${props.video.id}/views`;\n\n return UrlHelper.safeUrlConcat(props.analyticsUrl, videoRoute);\n }\n\n if (!props.hasAnalytics || !show)\n return <></>;\n\n return (\n <div role='alert' className='d-flex justify-content-between align-items-center bg-light-blue rounded p-2 mb-4'>\n <div>\n <Text namespace={namespace} phrase='adminAlert' />\n <a className='text-info' href={getAnalyticsUrl()} target='_blank'>\n <Text namespace={namespace} phrase='analytics' />\n </a>.\n </div>\n <IconButton svgName={cvSvgLibrary.Close} className='text-blue' onClick={onDismiss} />\n </div>\n );\n}","import React from 'react';\nimport { format as formatDate } from 'timeago.js';\n\nimport { Flight } from 'libs/common/react/index';\n\nimport { AudienceQueryParams } from 'libs/shared/apps/analytics/interfaces/AudienceQueryParams';\nimport { BaseAnalyticsEventResponse } from 'libs/shared/apps/analytics/interfaces/BaseAnalyticsEvent';\nimport { DateRangeQueryParams } from 'libs/shared/apps/analytics/interfaces/DateRangeQueryParams';\nimport { getAudienceParams } from 'libs/shared/apps/analytics/utils/AudienceUtils';\nimport { getInsightsDateRangePresets, getStartEndParams } from 'libs/shared/apps/analytics/utils/DateRangeUtils';\nimport { ShareRequests } from 'libs/shared/apps/share/flight-requests/ShareRequests';\nimport { SharePrivacyResponse } from 'libs/shared/apps/share/interfaces/responses/SharePrivacyResponse';\nimport { ShareLinkHelper } from 'libs/shared/apps/share/utils/ShareLinkHelper';\nimport { SharableRecipient, ShareViewHelper } from 'libs/shared/apps/share/views/share/ShareViewHelper';\nimport { IconButton } from 'libs/shared/components/icon-button/IconButton';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { ConfigRequests } from 'libs/shared/flight-requests/ConfigRequests';\nimport { CustomerRequests } from 'libs/shared/flight-requests/CustomerRequests';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { VideoViewRequests } from 'libs/shared/flight-requests/VideoViewRequests';\nimport { Config, CurrentUser, DirectShare, ShareLink, VideoTypes, YearGroup } from 'libs/shared/interfaces';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport { getShareAppLink } from 'shared/utils/ObjectAppLinkHelper';\n\nimport { SharedToPill } from 'apps/my-shares/components/shared-to-pill/SharedToPill';\n\nconst namespace = 'insights.shareInfo';\n\ninterface ShareInfoViewProps {\n video: VideoTypes;\n audienceAppLinkParams: AudienceQueryParams;\n dateRangeAppLinkParams: DateRangeQueryParams;\n}\n\n// eslint-disable-next-line rulesdir/require-view-title\nexport function ShareInfoView(props: ShareInfoViewProps) {\n const config = Flight.useBasicFetch<Config>(ConfigRequests.config());\n\n const requestFilter = {\n ...getStartEndParams(getInsightsDateRangePresets(), props.dateRangeAppLinkParams),\n ...getAudienceParams(props.audienceAppLinkParams)\n };\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n const shareLink = Flight.useBasicFetch<ShareLink>(props.video &&\n ShareRequests.getShareLinkByObjectId(props.video.id));\n const sentDirectShare = Flight.useBasicFetch<DirectShare>(props.video &&\n ShareRequests.getSentDirectShareByObjectId(props.video.id));\n const recipients = Flight.useBasicFetch<SharableRecipient[]>(currentUser.data?.customerId &&\n ShareViewHelper.getDirectShareRecipientsRequest(currentUser.data.customerId, sentDirectShare.data));\n const videoViews = Flight.useBasicFetch<BaseAnalyticsEventResponse>(currentUser.data && props.video &&\n VideoViewRequests.views(requestFilter, props.video.id, currentUser.data.id));\n const privacy = Flight.useBasicFetch<SharePrivacyResponse>(props.video && ShareRequests.getPrivacy(props.video.id));\n const yearGroups = Flight.useBasicFetch<YearGroup[]>(\n currentUser.data?.isAuthenticated && CustomerRequests.yearGroups(currentUser.data.customerId)\n );\n\n const notShared =\n (shareLink.hasCompleted && !shareLink.data) &&\n (sentDirectShare.hasCompleted && !sentDirectShare.data);\n\n const hasShareData =\n (shareLink.hasCompleted && shareLink.data) ||\n (sentDirectShare.hasCompleted && sentDirectShare.data) &&\n (!shareLink.data || privacy.data) &&\n (!shareLink.data || yearGroups.data) &&\n recipients.data &&\n videoViews.data;\n\n const shareLinkText = shareLink.data && privacy.data && yearGroups.data &&\n ShareLinkHelper.getIconAndText({\n entity: props.video,\n entityTypeId: props.video.typeId,\n hasStudentExp: false,\n isPasswordProtected: shareLink.data.isPasswordProtected,\n linkExpireDate: shareLink.data.linkExpireDate,\n privacy: privacy.data,\n status: shareLink.data.status,\n yearGroups: yearGroups.data\n });\n\n const viewCount = React.useMemo(() => {\n return videoViews.data?.data.reduce((acc, view) => view.count + acc, 0);\n }, [videoViews.data]);\n\n return (\n <div className='mb-4'>\n {hasShareData &&\n <>\n <h2 className='h4'><Text namespace={namespace} phrase='shareInfo' /></h2>\n\n <div className='d-flex border border-light p-3 rounded-3 align-items-center justify-content-between'>\n <div className='d-flex align-items-center gap-2'>\n <SharedToPill\n shareRecipients={recipients.data}\n imageCdnUrl={config.data?.imageCdnUrl}\n hasShareLink={!!shareLink.data}\n maxAvatars={4}\n shareLinkText={shareLinkText?.text}\n />\n ·\n <p className='mb-0'>{formatDate(sentDirectShare.data?.dateCreated)}</p>\n {viewCount && (\n <>\n ·\n <p className='mb-0'><Text namespace={namespace} phrase='views' options={{ smartCount: viewCount }} /></p>\n </>\n )}\n </div>\n <IconButton\n appLink={getShareAppLink(props.video)}\n svgName={cvSvgLibrary.Share}\n className='btn btn-outline-dark'\n >\n <Text namespace={namespace} phrase='share' />\n </IconButton>\n </div>\n </>\n }\n\n {!notShared && !hasShareData &&\n <>\n <div className='h4 partial-loading-background w-25'>&nbsp;</div>\n <div className='p-3 rounded partial-loading-background'>\n <p className='mb-1'>&nbsp;</p>\n </div>\n </>\n }\n </div>\n );\n}","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { InsightCard } from 'libs/shared/apps/analytics/components/insight-card/InsightCard';\nimport { InsightStudentList } from 'libs/shared/apps/analytics/components/insight-student-list/InsightStudentList';\nimport { User } from 'libs/shared/interfaces';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nconst namespace = 'shared.insightStudentsNotWatched';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface InsightStudentsNotWatchedProps {\n students: User[];\n imageCdnUrl: string;\n imageUrl: string;\n heatmapAppLink: Core.AppLink;\n watchedIds: string[];\n anonymiseUsers: boolean;\n}\n\nexport function InsightStudentsNotWatched(props: InsightStudentsNotWatchedProps) {\n const studentsNotWatched = props.students?.filter(student => !props.watchedIds?.includes(student.id)) || [];\n\n return (\n <InsightCard\n title={getPhrase('title')}\n svgName={cvSvgLibrary.Puzzle}\n svgClassName='bg-light-teal text-teal'\n >\n <InsightStudentList\n students={studentsNotWatched}\n imageCdnUrl={props.imageCdnUrl}\n imageUrl={props.imageUrl}\n description={getPhrase('studentsDisplay')}\n anonymiseUsers={props.anonymiseUsers}\n />\n </InsightCard>\n );\n}","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { InsightCard } from 'libs/shared/apps/analytics/components/insight-card/InsightCard';\nimport { InsightStudentList } from 'libs/shared/apps/analytics/components/insight-student-list/InsightStudentList';\nimport { User } from 'libs/shared/interfaces';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nconst namespace = 'shared.insightStudentsWatched';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface InsightWatchedProps {\n students: User[];\n imageCdnUrl: string;\n heatmapAppLink: Core.AppLink;\n imageUrl: string;\n anonymiseUsers: boolean;\n}\n\nexport function InsightStudentsWatched(props: InsightWatchedProps) {\n return (\n <InsightCard\n title={getPhrase('title')}\n svgName={cvSvgLibrary.Flag}\n svgClassName='bg-light-indigo text-indigo'\n count={props.students.length}\n >\n <InsightStudentList\n students={props.students}\n imageCdnUrl={props.imageCdnUrl}\n imageUrl={props.imageUrl}\n description={getPhrase('studentsDisplay')}\n appLink={props.heatmapAppLink}\n appLinkText={getPhrase('viewAll')}\n anonymiseUsers={props.anonymiseUsers}\n />\n </InsightCard>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"partialInsights\":\"ImBB3\"};","import React from 'react';\n\nimport styles from './partial-video-insights-overview.scss';\n\nexport function PartialVideoInsightsOverview() {\n return (\n <div>\n <h2 className='h4 w-25 partial-loading-background'>&nbsp;</h2>\n <div className='row g-3 mb-5'>\n <div className='col-12'>\n <div className={`${styles.partialInsights} rounded partial-loading-background`}></div>\n </div>\n </div>\n\n <h2 className='h4 w-25 partial-loading-background'>&nbsp;</h2>\n <div className='row g-3 mb-5'>\n <div className='col-6'>\n <div className={`${styles.partialInsights} rounded partial-loading-background`}></div>\n </div>\n <div className='col-6'>\n <div className={`${styles.partialInsights} rounded partial-loading-background`}></div>\n </div>\n </div>\n </div>\n );\n}","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { useViewModel } from 'libs/common/react/hooks/UseViewModel';\nimport { Flight } from 'libs/common/react/index';\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\n\nimport { InsightDevices } from 'libs/shared/apps/analytics/components/insights/devices/InsightDevices';\nimport { InsightHeatmap } from 'libs/shared/apps/analytics/components/insights/heatmap/InsightHeatmap';\nimport { InsightStudentsNotWatched } from 'libs/shared/apps/analytics/components/insights/students-not-watched/InsightStudentsNotWatched';\nimport { InsightStudentsWatched } from 'libs/shared/apps/analytics/components/insights/students-watched/InsightStudentsWatched';\nimport { BaseAnalyticsEventResponse } from 'libs/shared/apps/analytics/interfaces/BaseAnalyticsEvent';\nimport { AnalyticsFilterHelper } from 'libs/shared/apps/analytics/utils/AnalyticsFilterUtils';\nimport { getAudienceParams } from 'libs/shared/apps/analytics/utils/AudienceUtils';\nimport { getInsightsDateRangePresets, getStartEndParams } from 'libs/shared/apps/analytics/utils/DateRangeUtils';\nimport { ShareRequests } from 'libs/shared/apps/share/flight-requests/ShareRequests';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { SharedViewModelKeys } from 'libs/shared/constants/SharedViewModelKeys';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { ConfigRequests } from 'libs/shared/flight-requests/ConfigRequests';\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 { useSetPageMetadata } from 'libs/shared/hooks/useSetPageMetadata';\nimport { useSettings } from 'libs/shared/hooks/useSettings';\nimport { BasePaginatedCollection, Config, CurrentUser, DirectShare, Engagement, ShareLink, User, VideoTypes } from 'libs/shared/interfaces';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\nimport { ImageUrls } from 'shared/constants/ImageUrls';\n\nimport { ClassroomRequests } from 'apps/classrooms/flight-requests/ClassroomRequests';\nimport { InsightsShareMask } from 'apps/insights/components/insights-mask/InsightsShareMask';\nimport { getInsightsClipTabs, getInsightsVideoTabs } from 'apps/insights/utils/InsightsAppLinkUtils';\nimport { InsightsHeaderView } from 'apps/insights/views/header/InsightsHeaderView';\nimport { ShareInfoView } from 'apps/insights/views/share-info/ShareInfoView';\nimport { PartialVideoInsightsOverview } from 'apps/insights/views/video/overview/partial-loading/PartialVideoInsightsOverview';\nimport { getVideoInsightsAppLinks } from 'apps/insights/views/video/overview/VideoInsightsOverviewUtils';\n\nconst namespace = 'insights.videoInsightsOverview';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface VideoInsightsViewProps {\n videoId: string;\n typeId: MasterType;\n}\n\nexport function VideoInsightsOverviewView(props: VideoInsightsViewProps) {\n const [anonymiseUsers] = useViewModel<boolean>(SharedViewModelKeys.ANONYMISE_USERS);\n\n useLockContentWidth();\n\n const { hasClassrooms } = useSettings(null);\n\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n const config = Flight.useBasicFetch<Config>(ConfigRequests.config());\n\n const videoRequest = VideoHelper.getVideoRequest(props.videoId, props.typeId);\n const video = Flight.useBasicFetch<VideoTypes>(videoRequest);\n\n const audienceAppLinkParams = AnalyticsFilterHelper.getAudienceAppLinkParams();\n const dateRangeAppLinkParams = AnalyticsFilterHelper.getDateRangeAppLinkParams();\n const requestFilter = {\n ...getStartEndParams(getInsightsDateRangePresets(), dateRangeAppLinkParams),\n ...getAudienceParams(audienceAppLinkParams)\n };\n\n useSetPageMetadata({ title: video.data ? getPhrase('pageTitle', { video: video.data?.name }) : null });\n useHandleObjectError(video);\n\n const aggregateEngagement = Flight.useBasicFetch<Engagement>(\n VideoViewRequests.aggregateEngagement(\n props.videoId,\n requestFilter,\n currentUser.data.id\n )\n );\n\n const classroomFilterOnly =\n audienceAppLinkParams.classrooms?.length === 1 && !audienceAppLinkParams.classroomGroups?.length;\n const classroomStudents = Flight.useBasicFetch<BasePaginatedCollection<User>>(classroomFilterOnly &&\n ClassroomRequests.getClassroomStudents(ArrayHelper.first(audienceAppLinkParams.classrooms)));\n\n const shareRecipients = Flight.useBasicFetch<User[]>(aggregateEngagement.data?.userIds &&\n ShareRequests.getRecipientsById(aggregateEngagement.data.userIds, currentUser.data.customerId));\n\n const videoViews = Flight.useBasicFetch<BaseAnalyticsEventResponse>(currentUser.data &&\n VideoViewRequests.views(requestFilter, props.videoId, currentUser.data.id));\n\n const shareLink = Flight.useBasicFetch<ShareLink>(ShareRequests.getShareLinkByObjectId(props.videoId));\n const sentDirectShare = Flight.useBasicFetch<DirectShare>(\n ShareRequests.getSentDirectShareByObjectId(props.videoId)\n );\n\n const hasShared = !!(shareLink.data || sentDirectShare.data);\n\n function getStudentsList() {\n if (!shareRecipients.data) return [];\n\n return Object.values(shareRecipients.data);\n }\n\n const hasDataLoaded =\n currentUser.data &&\n config.data &&\n video.data &&\n aggregateEngagement.data &&\n (!classroomFilterOnly || classroomStudents.data);\n\n const params = {\n ...audienceAppLinkParams,\n ...dateRangeAppLinkParams\n };\n\n const videoInsightsAppLinks = getVideoInsightsAppLinks(props.videoId, params);\n\n function getInsightsOverviewTabs() {\n if (video.data?.typeId === MasterType.Clip) {\n return getInsightsClipTabs(video.data?.id, 'insights', params);\n }\n\n return getInsightsVideoTabs(video.data?.id, 'insights', params);\n }\n\n return (\n <div className='px-3'>\n <InsightsHeaderView\n video={video.data}\n dateRangeAppLinkParams={dateRangeAppLinkParams}\n tabs={getInsightsOverviewTabs()}\n />\n\n <ShareInfoView\n audienceAppLinkParams={audienceAppLinkParams}\n dateRangeAppLinkParams={dateRangeAppLinkParams}\n video={video.data}\n />\n\n {!hasDataLoaded && <PartialVideoInsightsOverview />}\n\n {hasDataLoaded &&\n <InsightsShareMask video={video.data} hasShared={hasShared}>\n <section className='mb-5'>\n <h2 className='h4'>\n <Text namespace={namespace} phrase='studentViewing' />\n <span>: {getStudentsList().length}{classroomStudents.data ? `/${classroomStudents.data.data.length}` : ''}</span>\n </h2>\n <div className='row g-3'>\n {classroomFilterOnly && (\n <div className='col-12 col-md'>\n <InsightStudentsNotWatched\n students={classroomStudents.data.data}\n watchedIds={aggregateEngagement.data.userIds}\n imageCdnUrl={config.data.imageCdnUrl}\n heatmapAppLink={videoInsightsAppLinks.heatmapAppLink}\n imageUrl={ImageUrls.Insights.AVATAR}\n anonymiseUsers={anonymiseUsers}\n />\n </div>\n )}\n <div className='col-12 col-md'>\n <InsightStudentsWatched\n students={getStudentsList()}\n imageCdnUrl={config.data.imageCdnUrl}\n heatmapAppLink={videoInsightsAppLinks.heatmapAppLink}\n imageUrl={ImageUrls.Insights.AVATAR}\n anonymiseUsers={anonymiseUsers}\n />\n </div>\n </div>\n </section>\n <section className='mb-5'>\n <h2 className='h4'>\n <Text\n namespace={namespace}\n phrase={hasClassrooms ? 'classEngagement' : 'engagement'}\n />\n </h2>\n <div className='row g-3'>\n <div className='col-12 col-md-6'>\n <InsightDevices\n osCount={videoViews.data?.osCount}\n />\n </div>\n <div className='col-12 col-md-6'>\n <InsightHeatmap\n engagement={aggregateEngagement.data}\n heatmapAppLink={videoInsightsAppLinks.heatmapAppLink}\n />\n </div>\n </div>\n </section>\n </InsightsShareMask>\n }\n </div>\n );\n}","import { HashObject } from 'libs/common/react/interfaces';\n\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\n\nexport function getVideoInsightsAppLinks(id: string, params?: HashObject) {\n return {\n heatmapAppLink: {\n application: AppChannels.INSIGHTS,\n action: Actions.Insights.VIDEO_HEATMAP,\n args: [id],\n params\n }\n };\n}"],"names":["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","includePublicViews","url","key","formatData","data","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","InsightsHeaderView","props","hasClassrooms","hasPermissions","config","analyticsUrl","analyticsWebUrl","hasAnalytics","video","tabs","dateRangeAppLinkParams","namespace","InsightsAdminAlert","storage","show","setShow","role","className","phrase","href","videoRoute","typeId","id","getAnalyticsUrl","target","svgName","onClick","ShareInfoView","requestFilter","audienceAppLinkParams","currentUser","shareLink","sentDirectShare","recipients","customerId","videoViews","yearGroups","isAuthenticated","notShared","hasCompleted","hasShareData","shareLinkText","entity","entityTypeId","hasStudentExp","isPasswordProtected","linkExpireDate","viewCount","reduce","acc","view","count","shareRecipients","imageCdnUrl","hasShareLink","maxAvatars","text","dateCreated","options","smartCount","appLink","getPhrase","LanguageService","InsightStudentsNotWatched","studentsNotWatched","students","student","watchedIds","includes","InsightCard","title","svgClassName","InsightStudentList","imageUrl","description","anonymiseUsers","InsightStudentsWatched","length","heatmapAppLink","appLinkText","PartialVideoInsightsOverview","VideoInsightsOverviewView","SharedViewModelKeys","useLockContentWidth","useSettings","UserRequests","ConfigRequests","videoRequest","VideoHelper","videoId","useSetPageMetadata","name","classroomFilterOnly","classroomStudents","ClassroomRequests","ArrayHelper","userIds","ShareRequests","hasShared","getStudentsList","Object","values","hasDataLoaded","params","videoInsightsAppLinks","application","action","args","getVideoInsightsAppLinks","MasterType","getInsightsOverviewTabs","InsightsShareMask","Text","ImageUrls","InsightDevices","osCount","InsightHeatmap","engagement"],"sourceRoot":""}
@@ -1,2 +1,2 @@
1
- "use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[3717],{71553:(e,t,n)=>{n.d(t,{I:()=>l});var a=n(99940),r=n(62875);function i(e,t){return{currentUserId:e.id,currentCustomerId:e.customerId,dateRange:{start:t.start,end:t.end},userIds:t.userId,classroomsAndGroups:t.groupId}}var l={interactiveResultSet:function(e,t,n,l,s,c,o,u){return{url:s?"/api/domain/v3/analytics/interactives/".concat(e,"/metadata/").concat(t):"/api/domain/v2/analytics/interactives/".concat(e,"/metadata/").concat(t),key:(0,r.H)("interactive:result:set:".concat(e,":").concat(t),l),data:i(n,l),type:a.k.POST,normalize:!1,formatData:function(e){return Object.assign(Object.assign({},e),{students:e.students.map((function(e){return e.name&&e.profileId?Object.assign(Object.assign({},e),{publicUser:{profileId:e.profileId,name:e.name}}):e}))})},success:c,error:o,always:u}},mark:function(e,t,n,r,i,l,s){return{url:"/api/domain/v1/analytics/answers/".concat(n),key:"mark:answer:".concat(n,":").concat(r.resultId),type:a.k.PUT,data:r,normalize:!1,invalidationKeys:"interactive:result:set:".concat(e,":").concat(t),success:i,error:l,always:s}},pendingReviews:function(e){return{url:"/api/domain/v1/analytics/interactives/pending-reviews/summary",key:"interactives:pending:reviews",type:a.k.POST,data:e}},interactiveResultsReport:function(e){return{url:"{gateway}/v2/analytics/interactives/report",key:"interactive:results:report",data:e,type:a.k.POST,normalize:!1}}}},83657:(e,t,n)=>{n.d(t,{e:()=>o});var a=n(32735),r=n(91967),i=n(10874),l=n(36532),s=n(42735),c=n(86509);function o(e){var t=a.useMemo((function(){return e.actions.sort((function(e,t){return e.order-t.order}))}),[e.actions]),n=[],o=[];t.forEach((function(e){e.button?n.push(e):o.push(e)}));var u="d-flex";return e.className&&(u+=" ".concat(e.className)),n.length||o.length?a.createElement("div",{className:u},n.length?n.map((function(t,n){return a.createElement(a.Fragment,{key:n},function(){if(t.label){var n=r.q.isFunction(t.label)?t.label:function(){return a.createElement(a.Fragment,null,t.label)};return a.createElement(s.K,{appLink:t.appLink,href:t.href,onClick:t.onClick,svgName:t.svgName,svgSize:e.dropdownToggleSvgSize,className:t.className,tooltip:t.tooltip,showSpinner:t.showSpinner,analyticsData:t.analyticsData,analyticsOptions:t.analyticsOptions,openInNewTab:t.openInNewTab,disabled:t.disabled},n())}var c=a.createElement(i.h,{appLink:t.appLink,href:t.href,onClick:t.onClick,svgName:t.svgName,className:t.className,analyticsData:t.analyticsData,analyticsOptions:t.analyticsOptions,openInNewTab:t.openInNewTab,disabled:t.disabled,showBorder:t.showBorder,customSize:e.customSize,ariaLabel:t.tooltip});return t.tooltip?a.createElement(l.u,{title:t.tooltip,spanHack:!0},c):c}())})):a.createElement(a.Fragment,null),e.sortComponent&&e.sortComponent,o.length?a.createElement(c.m,{actions:o,dropdownToggleClassName:e.actionsDropdownClassName,dropdownToggleSvgSize:e.dropdownToggleSvgSize,fetchMore:e.fetchMore}):a.createElement(a.Fragment,null)):a.createElement(a.Fragment,null)}},54405:(e,t,n)=>{n.d(t,{X:()=>a});var a={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}}}},39902:(e,t,n)=>{n.d(t,{f:()=>c});var a=n(32735),r=n(70680),i=n(20354);function l(e,t){if(e){if("string"==typeof e)return s(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?s(e,t):void 0}}function s(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,a=Array(t);n<t;n++)a[n]=e[n];return a}function c(e,t){var n,c,o=(n=a.useState([]),c=2,function(e){if(Array.isArray(e))return e}(n)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var a,r,i,l,s=[],c=!0,o=!1;try{if(i=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;c=!1}else for(;!(c=(a=i.call(n)).done)&&(s.push(a.value),s.length!==t);c=!0);}catch(e){o=!0,r=e}finally{try{if(!c&&null!=n.return&&(l=n.return(),Object(l)!==l))return}finally{if(o)throw r}}return s}}(n,c)||l(n,c)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),u=o[0],m=o[1];a.useEffect((function(){if(null==e?void 0:e.length){var t=function(e){return function(e){if(Array.isArray(e))return s(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||l(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.")}()}(u);t.push([]),e.forEach((function(e){t.find((function(t){return t.find((function(t){return t===e}))}))||t[t.length-1].push(e)})),m(t.filter((function(e){return e.length})))}}),[e?e.join(","):null]);var d=(0,r.I0)(),p=(0,r.v9)((function(e){return e}));if(a.useEffect((function(){u.forEach((function(e){var n=t(e);i.a.getResponse(p,n.key).shouldFetch&&i.a.fetch(d,n)}))}),[null==u?void 0:u.length]),!(null==u?void 0:u.length))return{items:null,isFetching:!1};var f={},y={};return u.forEach((function(e,n){var a=t(e),r=i.a.getResponse(p,a.key);y[n]=r,r.data&&r.data.forEach((function(e){return f[e.id]=e}))})),{items:Object.keys(y).some((function(e){return!!y[e].data}))?f:null,isFetching:!!Object.keys(y).some((function(e){return y[e].isFetching}))}}},62875:(e,t,n)=>{function a(e,t,n){var a="".concat(e,":").concat(t.start,":").concat(t.end),r=Array.isArray(t.userId)?t.userId.sort().join(":"):t.userId,i=Array.isArray(t.groupId)?t.groupId.sort().join(":"):t.groupId;return r&&(a+=":".concat(r)),i&&(a+=":".concat(i)),n&&(a+=":".concat(n)),a}n.d(t,{H:()=>a})},8807:(e,t,n)=>{n.d(t,{c:()=>a,q:()=>r});var a="D8qRe7",r="GRWx6w"},11293:(e,t,n)=>{n.d(t,{p:()=>f});var a=n(32735),r=n(57900),i=n(97395),l=n(2948),s=n(10874),c=n(83345),o=n(4594),u=n(35223),m=n(86702);function d(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,a=Array(t);n<t;n++)a[n]=e[n];return a}var p="lite.insightsAdminAlert";function f(e){var t,n,f=(t=(0,l.D)(m.y.INSIGHTS_ADMIN_ALERT,!0,{storage:r.Z1.LocalStorage}),n=2,function(e){if(Array.isArray(e))return e}(t)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var a,r,i,l,s=[],c=!0,o=!1;try{if(i=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;c=!1}else for(;!(c=(a=i.call(n)).done)&&(s.push(a.value),s.length!==t);c=!0);}catch(e){o=!0,r=e}finally{try{if(!c&&null!=n.return&&(l=n.return(),Object(l)!==l))return}finally{if(o)throw r}}return s}}(t,n)||function(e,t){if(e){if("string"==typeof e)return d(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?d(e,t):void 0}}(t,n)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),y=f[0],v=f[1];return e.hasAnalytics&&y?a.createElement("div",{role:"alert",className:"d-flex justify-content-between align-items-center bg-light-blue rounded p-2 mb-4"},a.createElement("div",null,a.createElement(c.x,{namespace:p,phrase:"adminAlert"}),a.createElement("a",{className:"text-info",href:function(){if(!e.video)return e.analyticsUrl;var t="";return e.video.typeId===o.E.Interactive&&(t="/interactives/".concat(e.video.id,"/views")),e.video.typeId===o.E.Video&&(t="/videos/".concat(e.video.id,"/views")),e.video.typeId===o.E.Clip&&(t="/clips/".concat(e.video.id,"/views")),i._.safeUrlConcat(e.analyticsUrl,t)}(),target:"_blank"},a.createElement(c.x,{namespace:p,phrase:"analytics"})),"."),a.createElement(s.h,{svgName:u.vn.Close,className:"text-blue",onClick:function(){v(!1)}})):a.createElement(a.Fragment,null)}},9566:(e,t,n)=>{n.d(t,{G:()=>o,e:()=>m});var a=n(23481),r=n(85063),i=n(35223),l=n(14070),s=n(97291),c=a.T.encloseNamespace("myShares.demoInsights"),o={share:{objectTypeId:34,type:r.y.ShareLink},sharedObject:null,shareRecipients:null,dateShared:(new Date).toISOString(),viewCount:23},u={application:s.O.MY_SHARES,action:l.e.MyShares.INTERACTIVE_OVERVIEW_DEMO},m=[{svgName:i.vn.Analytics,label:c("demoInsights"),appLink:u,group:"insights",button:!0,className:"btn btn-outline-dark"}]},88099:(e,t,n)=>{n.r(t),n.d(t,{MySharesView:()=>Me});var a=n(32735),r=n(81886),i=n(23481),l=n(20354),s=n(26025),c=n(88180),o=n(71020),u=n(83345),m=n(16714),d=n(39151),p=n(1666),f=n(54405),y=n(31949),v=n(25882),g=n(79967),h=n(93322),b=n(22902),E=n(79612),S=n(37802),I=n(14070),k=n(97291),w=n(51855),j=n(64208),O=n(86099),N=n(34509),A=n(75896),C=n(36848),x=n(89965),T=n(4594);const L={noCaret:"TMpTN"};function M(e){return function(e){if(Array.isArray(e))return P(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||R(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){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var a,r,i,l,s=[],c=!0,o=!1;try{if(i=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;c=!1}else for(;!(c=(a=i.call(n)).done)&&(s.push(a.value),s.length!==t);c=!0);}catch(e){o=!0,r=e}finally{try{if(!c&&null!=n.return&&(l=n.return(),Object(l)!==l))return}finally{if(o)throw r}}return s}}(e,t)||R(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 R(e,t){if(e){if("string"==typeof e)return P(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?P(e,t):void 0}}function P(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,a=Array(t);n<t;n++)a[n]=e[n];return a}var U="insights.insightsTypeFilters",D=i.T.encloseNamespace(U);function V(e){var t=[{label:D("playlists"),filter:T.E.Playlist},{label:D("series"),filter:T.E.Series}],n=e.typeIdParams.filter((function(e){return t.some((function(t){return e===t.filter}))})),i=F(a.useState(!1),2),l=i[0],s=i[1],c=F(a.useState(n),2),o=c[0],m=c[1];function d(){var n=e.appLink.params;r.Q.C$.trigger(Object.assign(Object.assign({},e.appLink),{params:Object.assign(Object.assign({},n),{typeId:[].concat(M(e.typeIdParams.filter((function(e){return!t.find((function(t){return e===t.filter}))}))),M(o))})}))}return a.createElement("div",{className:"d-flex align-items-center fw-semibold"},a.createElement("p",{className:"h6 mb-0"},a.createElement(u.x,{namespace:U,phrase:"filters"})),a.createElement("div",{className:"d-flex border-start border-light ps-3 ms-3 gap-2"},a.createElement(B,{typeId:T.E.Interactive,typeFilters:e.typeIdParams,appLink:e.appLink}),a.createElement(B,{typeId:T.E.Video,typeFilters:e.typeIdParams,appLink:e.appLink}),a.createElement(B,{typeId:T.E.Clip,typeFilters:e.typeIdParams,appLink:e.appLink}),a.createElement(N.Z,{onToggle:function(e){s(e),e||d()},show:l},a.createElement(N.Z.Toggle,{className:L.noCaret,variant:n.length?"dark":"outline-dark"},a.createElement("span",{className:"fw-semibold mb-0"},a.createElement(u.x,{namespace:U,phrase:"moreFilters"}),n.length?" - ".concat(n.length):"")),a.createElement(N.Z.Menu,null,a.createElement("div",{className:"mx-1 px-2 py-1 mb-0"},a.createElement("h2",{className:"h6 mb-3"},a.createElement(u.x,{namespace:U,phrase:"types"})),a.createElement("ul",{className:"list-unstyled me-5"},t.map((function(e){return a.createElement("li",{key:"".concat(e.label,"-filter"),className:"my-1"},a.createElement(x.X,{id:"".concat(e.label,"-filter"),label:e.label,onChange:function(){return t=e.filter,void m(A.m.addOrRemoveImmutable(o,t));var t},checked:(t=e.filter,!!o.find((function(e){return e===t})))}));var t}))),a.createElement("button",{onClick:function(){return d(),void s(!1)},className:"btn btn-link text-info float-end p-0 mb-0"},a.createElement(u.x,{namespace:U,phrase:"apply"})))))),!!e.typeIdParams.length&&a.createElement("button",{onClick:function(){m([]);var t=e.appLink.params;r.Q.C$.trigger(Object.assign(Object.assign({},e.appLink),{params:Object.assign(Object.assign({},t),{typeId:[]})}))},className:"btn btn-link ms-1"},a.createElement(u.x,{namespace:U,phrase:"resetAll"})))}function B(e){var t=e.typeFilters.includes(e.typeId),n=e.appLink,r=n.params,i=A.m.addOrRemoveImmutable(e.typeFilters,e.typeId),l=Object.assign(Object.assign({},n),{params:Object.assign(Object.assign({},r),{typeId:i})});function s(){return e.typeId===T.E.Video?"videos":e.typeId===T.E.Clip?"clips":e.typeId===T.E.Interactive?"interactives":void 0}return a.createElement(C.F,{className:"btn ".concat(t?"btn-dark":"btn-outline-dark"," fw-semibold"),appLink:l,ariaLabel:"".concat(D("ariaFilterBy"),": ").concat(D(s()))},a.createElement(u.x,{namespace:U,phrase:s()}))}var H=n(11293),_=n(8807),z=n(82602),G=n(65858),q=n(29024),Y=n(65853),$=n(64249),Z=n(83657),W=n(60995),Q=n(11882),K=n(85063),X=n(31908),J=n(24758);const ee={mySharesTable:"hyaYe"};var te="myShares.tableRow";function ne(e){return a.createElement("div",{className:"".concat(ee.mySharesTable," gap-3 px-3")},a.createElement("p",{className:"fw-semibold mb-2 ms-n3"},e.heading),e.isFirst&&a.createElement(a.Fragment,null,a.createElement("div",null),a.createElement("p",{className:"fw-semibold mb-2"},a.createElement(u.x,{namespace:te,phrase:"sharedToHeading"})),a.createElement("p",{className:"fw-semibold mb-2"},a.createElement(u.x,{namespace:te,phrase:"dateSharedHeading"})),a.createElement("p",{className:"fw-semibold mb-2"},a.createElement(u.x,{namespace:te,phrase:"viewsHeading"}))))}function ae(e){var t,n=e.sharedObject;if(!n.name)return a.createElement(u.x,{namespace:te,phrase:"videoUnavailable"});if(X.M.isVideoType(n)&&!(null===(t=X.M.getCanBeConsumed(n))||void 0===t?void 0:t.canNavigate))return a.createElement("span",{className:"clamp-2"},n.name);var r=function(){switch(n.typeId){case T.E.Series:return"series";case T.E.Playlist:return"playlist"}}();return a.createElement("div",null,X.M.isVideoType(n)&&a.createElement(Q.$,{type:"series",video:n,appLink:"series"in n&&n.series?(0,O.Qh)(n.series):null,analyticsOptions:{location:G.LZ.Insights},className:"d-inline clamp-1"}),r&&a.createElement(W.m,null,a.createElement(u.x,{namespace:te,phrase:r})),a.createElement(C.F,{appLink:e.appLink,className:"clamp-1",analyticsData:{id:n.id,name:n.name},analyticsOptions:{entity:$.I.getAnalyticsEntity(n.type),actionType:G.Vw.Click,location:G.LZ.MyShares}},n.name),!!e.requireMarking&&a.createElement("div",{className:"font-size-sm d-flex align-items-center bg-light-ultramarine text-ultramarine rounded-pill w-fit mt-1 px-2"},a.createElement(u.x,{namespace:te,phrase:"requireMarking",options:{smartCount:e.requireMarking}})))}function re(e){var t=e.shareData,n=t.sharedObject,r=t.share.type===K.y.ShareLink&&Y.R.getIconAndText({entity:n,entityTypeId:n.typeId,hasStudentExp:!1,isPasswordProtected:t.share.isPasswordProtected,linkExpireDate:t.share.linkExpireDate,privacy:{privacy:t.privacy,overrideRestrictions:t.overrideRestrictions},status:t.share.status,yearGroups:e.yearGroups});return a.createElement("div",{key:t.share.id,className:"".concat(ee.mySharesTable," align-items-center p-3 gap-3 border-light")},a.createElement(q.k,{object:n,appLink:e.getObjectAppLink(n),showVideoMetadata:!0,locationContext:G.LZ.MyShares,showCollectionMask:!0,showVideoCount:!0}),a.createElement("div",null,a.createElement(ae,{sharedObject:t.sharedObject,requireMarking:t.pendingReview,appLink:e.getObjectAppLink(n)}),e.children),a.createElement(J.A,{shareLinkText:null==r?void 0:r.text,shareRecipients:t.shareRecipients,imageCdnUrl:e.imageCdnUrl}),a.createElement("p",{className:"mb-0"},(0,z.WU)(t.dateShared)),a.createElement("p",{className:"mb-0"},a.createElement(u.x,{namespace:te,phrase:"views",options:{count:t.viewCount}})),a.createElement(Z.e,{className:"justify-content-end gap-2",actions:e.getObjectActions(n)}))}var ie=n(9566),le="myShares.demoInsights",se=i.T.encloseNamespace(le);function ce(e){var t=e.primaryUrl.includes("staging");return a.createElement("div",null,a.createElement(ne,{heading:se("demoHeading"),isFirst:!0}),a.createElement("div",{className:"rounded-3 border border-light bg-light-orange mb-4"},a.createElement(re,{shareData:Object.assign(Object.assign({},ie.G),{sharedObject:Object.assign(Object.assign({},e.demoInteractive),{id:t?_.c:_.q})}),getObjectActions:function(){return ie.e},getObjectAppLink:function(){return null}},a.createElement("div",{className:"d-inline-block rounded-pill bg-light-blue text-info font-size-sm mt-1 px-2"},a.createElement(u.x,{namespace:le,phrase:"demoInsightPill"})))))}var oe=n(23232),ue=n(99742),me=i.T.encloseNamespace("myShares.mySharesTableEmptyState");function de(){return a.createElement(oe.u,null,a.createElement(oe.u.Image,{src:ue.W.EmptyStates.Share.SHARED_BY_ME,size:"small"}),a.createElement(oe.u.Heading,null,me("heading")),a.createElement(oe.u.Info,null,me("info")),a.createElement(oe.u.Cta,{appLink:{application:k.O.DASHBOARD,action:I.e.Dashboard.HOME},text:me("cta")}))}var pe=n(110),fe=n(31754);function ye(e){return ye="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},ye(e)}function ve(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,a=Array(t);n<t;n++)a[n]=e[n];return a}function ge(e,t,n){return(t=function(e){var t=function(e){if("object"!=ye(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!=ye(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==ye(t)?t:t+""}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var he=i.T.encloseNamespace("myShares.mySharesTable");function be(e){var t;if(e.type===K.y.ShareLink||!(null===(t=null==e?void 0:e.recipients)||void 0===t?void 0:t.length))return e.dateCreated;var n=e.recipients.map((function(e){return e.dateShared}));return n.sort((function(e,t){return pe.O.isSame(e,t)?0:pe.O.isAfter(e,t)?1:-2})),n.length?A.m.last(n):""}function Ee(e){var t,n,r,i,l,s,c,o=(t=e.sentShares,n=e.sharedObjects,r=e.shareRecipients,i=!!e.groupByDateShared,l=e.interactivesPendingReview,s=e.dependencies,a.useMemo((function(){var e=[],a=n.reduce((function(e,t){return Object.assign(ge({},t.id,t),e)}),{}),s=r.reduce((function(e,t){return Object.assign(ge({},t.id,t),e)}),{}),c=null==l?void 0:l.reduce((function(e,t){return Object.assign(ge({},t.interactiveId,t),e)}),{});return t.forEach((function(t){var n,r,i=a[t.objectId],l=null;if(t.type===K.y.DirectShare&&(l=[],null===(n=t.recipients)||void 0===n||n.forEach((function(e){var t=s[e.id];t&&l.push(t)}))),i){var o=i.typeId===T.E.Interactive&&(null==c?void 0:c[i.interactiveId]);e.push(Object.assign({share:t,sharedObject:i,shareRecipients:l,dateShared:be(t),viewCount:null!==(r=t.viewCount)&&void 0!==r?r:0,pendingReview:null==o?void 0:o.pendingReviewCount},t.type===K.y.ShareLink?{privacy:t.privacy,overrideRestrictions:t.overrideRestrictions}:{}))}})),i?fe.x.groupByDateShared(e):ge({},he("title"),e)}),function(e){if(Array.isArray(e))return ve(e)}(c=s)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(c)||function(e,t){if(e){if("string"==typeof e)return ve(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?ve(e,t):void 0}}(c)||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 a.createElement(a.Fragment,null,Object.keys(o).map((function(t,n){return a.createElement("div",{key:t},a.createElement(ne,{heading:t,isFirst:!e.hasDemoInsights&&0===n}),a.createElement("div",{className:"d-flex flex-column rounded-3 border border-light mb-4"},o[t].map((function(t){return a.createElement(re,{key:t.share.id,shareData:t,yearGroups:e.yearGroups,getObjectActions:e.getObjectActions,getObjectAppLink:e.getObjectAppLink,imageCdnUrl:e.imageCdnUrl})}))))})))}const Se={table:"elIjR",heading:"iWHol",image:"TMQxq",avatar:"_3GY1C",date:"nz3va",views:"FpDfX",actions:"pOtyK"};function Ie(){return a.createElement("div",{className:"".concat(Se.table," align-items-center striped-row rounded-3 gap-3 p-3")},a.createElement("div",{className:"partial-loading-background rounded ratio ratio-16x9 ".concat(Se.image)}),a.createElement("div",{className:"partial-loading-background w-75 ".concat(Se.name)}," "),a.createElement("div",{className:"partial-loading-background w-75 rounded-pill ".concat(Se.avatar)}),a.createElement("div",{className:"partial-loading-background ".concat(Se.date)}," "),a.createElement("div",{className:"partial-loading-background ".concat(Se.views)}," "),a.createElement("div",{className:"d-flex justify-content-end gap-2 p-3"},a.createElement("div",{className:"partial-loading-background rounded w-50 ".concat(Se.actions)}),a.createElement("div",{className:"partial-loading-background rounded w-33 ".concat(Se.actions)})))}function ke(){return a.createElement(a.Fragment,null,a.createElement("div",{className:"mb-3"},a.createElement("div",{className:"striped-list no-full-width"},a.createElement("div",{className:"".concat(Se.table," gap-3 px-3")},a.createElement("div",{className:"partial-loading-background mb-2 ms-n3 ".concat(Se.date)}," "),a.createElement("div",null),a.createElement("div",{className:"partial-loading-background mb-2 ".concat(Se.date)}," "),a.createElement("div",{className:"partial-loading-background mb-2 ".concat(Se.date)}," "),a.createElement("div",{className:"partial-loading-background mb-2 ".concat(Se.date)}," ")),a.createElement(Ie,null),a.createElement(Ie,null),a.createElement(Ie,null))),a.createElement("div",{className:"mb-3"},a.createElement("div",{className:"partial-loading-background mb-2 ".concat(Se.date)}," "),a.createElement("div",{className:"striped-list no-full-width"},a.createElement(Ie,null),a.createElement(Ie,null),a.createElement(Ie,null),a.createElement(Ie,null))),a.createElement("div",{className:"mb-3"},a.createElement("div",{className:"partial-loading-background mb-2 ".concat(Se.date)}," "),a.createElement("div",{className:"striped-list no-full-width"},a.createElement(Ie,null),a.createElement(Ie,null),a.createElement(Ie,null),a.createElement(Ie,null),a.createElement(Ie,null),a.createElement(Ie,null),a.createElement(Ie,null),a.createElement(Ie,null),a.createElement(Ie,null),a.createElement(Ie,null))))}var we="myShares.mySharesEmptyState",je=i.T.encloseNamespace(we);function Oe(){return a.createElement(oe.u,null,a.createElement(oe.u.Image,{src:ue.W.EmptyStates.MY_VIDEOS_PUBLIC,altText:je("heading")}),a.createElement(oe.u.Heading,null,a.createElement(u.x,{namespace:we,phrase:"heading"})),a.createElement(oe.u.Info,null,a.createElement(u.x,{namespace:we,phrase:"info"})),a.createElement(oe.u.Cta,{text:i.T.getPhrase(we,"cta"),appLink:{application:k.O.SIGN_UP,action:I.e.SignUp.SIGN_UP},analyticsData:{},analyticsOptions:{actionType:G.Vw.Click,location:G.LZ.MySharesLanding,entity:G.py.AppLink,workflowPhase:G.eu.Start,descriptor:G.Yu.SignUp}}))}var Ne=n(35223),Ae=i.T.encloseNamespace("myShares.myShares");function Ce(e){return function(e){if(Array.isArray(e))return xe(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 xe(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?xe(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 xe(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,a=Array(t);n<t;n++)a[n]=e[n];return a}var Te="myShares.myShares",Le=i.T.encloseNamespace(Te);function Me(e){var t,n,i,N,A=(0,b.T)(),C=A.hasPermissions,x=A.hasLocalPermissions,T=(0,S.r)(null).hasInsights,L=(0,w.G)().isPlugin;(0,h.F)();var M,F,R=(0,g.k)(),P=(F=null==(M=e.queryParams)?void 0:M.typeId)?"string"==typeof F?[+F]:(null==M?void 0:M.typeId.map((function(e){return+e})))||[]:[],U=s.B.getAudienceAppLinkParams(),D={application:k.O.MY_SHARES,action:I.e.MyShares.HOME,params:Object.assign(Object.assign({},U),{typeId:P})},B={recipientUserId:null==U?void 0:U.users,recipientGroupId:[].concat(Ce((null==U?void 0:U.classroomGroups)||[]),Ce((null==U?void 0:U.classrooms)||[])),objectTypeId:P.length?P:void 0},_=!x(m.E.ViewMySharesLanding)||C(m.C.ViewMyShares)&&T,z=(0,j.aH)(B,!0,_),q=z.sentShares,Y=z.sharedObjects,$=z.shareRecipients,Z=z.interactivesPendingReview,W=z.isFetching,Q=z.showPartialLoading,K=z.nextCursor,J=z.hasMore,ee=z.fetchNext,te=z.imageCdnUrl,ne=z.dependencies;(0,E.M)({title:Le("myShares")});var ae=(0,S.r)(null).hasClassrooms,re=l.a.useBasicFetch(d.L.config()),ie=l.a.useBasicFetch(y.N.currentUser()),le=l.a.useBasicFetch((null===(t=ie.data)||void 0===t?void 0:t.isAuthenticated)&&p.h.yearGroups(ie.data.customerId)),se=function(e,t,n){var r=JSON.stringify(e);return a.useCallback((function(a){return function(e,t,n,a){var r=[],i={button:!0,className:"btn btn-outline-dark"};if(X.M.isVideoType(e)){if(!X.M.getCanBeConsumed(e).canConsume)return[];if(a)return[Object.assign(Object.assign({label:Ae("embedVideo"),appLink:{application:k.O.DEFAULT,action:I.e.Default.PLUGIN_SHARE,args:[e.id],params:{entityType:e.type}}},i),{analyticsOptions:{actionType:G.Vw.Share,descriptor:G.YM.PluginEmbed,workflowPhase:G.eu.Start,eventVersion:G.eq.V5}})];n&&r.push(Object.assign({svgName:Ne.vn.Analytics,label:Ae("viewInsights"),appLink:Object.assign(Object.assign({},(0,O.Dw)(e)),{params:t}),group:"insights"},i))}return r.push(Object.assign({label:Ae("share"),svgName:Ne.vn.Share,appLink:(0,O.YK)(e),group:"share"},i)),r}(a,e,t,n)}),[r])}(U,T&&C(m.C.ViewInsights),L),oe=(0,v.v)().accessPolicy,ue=null===(n=null==oe?void 0:oe.metadata)||void 0===n?void 0:n.hasDemoInsights,me=l.a.useBasicFetch(ue&&f.X.interactiveMetadata());return a.useEffect((function(){C(m.C.ViewMyShares)&&T||r.Q.Ab.PageLoad("/")}),[_]),_?a.createElement("div",{className:"px-3"},a.createElement(H.p,{analyticsUrl:null===(i=re.data)||void 0===i?void 0:i.analyticsWebUrl,hasAnalytics:C(m.C.ViewCustomerAnalytics)}),a.createElement("div",{className:"d-flex justify-content-between border-bottom pb-3 mb-3"},a.createElement("h1",{className:"mb-1"},a.createElement(u.x,{namespace:Te,phrase:"myShares"})),a.createElement(c.B,{hasClassroomsFeature:ae})),a.createElement("div",{className:"mb-3"},a.createElement(V,{appLink:D,typeIdParams:P})),ue&&me.data&&a.createElement(ce,{demoInteractive:me.data,primaryUrl:null===(N=re.data)||void 0===N?void 0:N.primaryUrl}),Q?a.createElement(ke,null):q.length?a.createElement(a.Fragment,null,a.createElement(Ee,{sentShares:q,sharedObjects:Y,shareRecipients:$,interactivesPendingReview:Z,getObjectAppLink:O.Qh,getObjectActions:se,imageCdnUrl:te,groupByDateShared:!0,dependencies:ne,breakpoints:R,yearGroups:le.data,hasDemoInsights:ue}),(J||W)&&a.createElement(o._,{isFetching:W,fetchNext:ee,nextCursor:K})):a.createElement(de,null)):a.createElement(Oe,null)}},64208:(e,t,n)=>{n.d(t,{aH:()=>b});var a=n(32735),r=n(20354),i=n(75896),l=n(71553),s=n(30439),c=n(4594),o=n(39151),u=n(31949),m=n(39902),d=n(60115),p=n(85063),f={getDirectShares:function(e){var t;return null!==(t=null==e?void 0:e.filter((function(e){return e.type===p.y.DirectShare})))&&void 0!==t?t:[]},getRecipientIds:function(e){return i.m.uniq(i.m.flatten(f.getDirectShares(e).map((function(e){var t;return null!==(t=e.recipients)&&void 0!==t?t:[]}))),"id").map((function(e){return e.id}))}};function y(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var a,r,i,l,s=[],c=!0,o=!1;try{if(i=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;c=!1}else for(;!(c=(a=i.call(n)).done)&&(s.push(a.value),s.length!==t);c=!0);}catch(e){o=!0,r=e}finally{try{if(!c&&null!=n.return&&(l=n.return(),Object(l)!==l))return}finally{if(o)throw r}}return s}}(e,t)||v(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function v(e,t){if(e){if("string"==typeof e)return g(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?g(e,t):void 0}}function g(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,a=Array(t);n<t;n++)a[n]=e[n];return a}function h(e){return e.items?Object.values(e.items):[]}function b(e,t){var n,p,b=!(arguments.length>2&&void 0!==arguments[2])||arguments[2],E=r.a.useGetFetch(),S=r.a.useBasicFetch(u.N.currentUser()),I=function(t){return b&&s.o.sentShare(Object.assign({cursor:t},e))},k=function(e){return E(I(e))},w=(0,d.K)(I,k),j=w.items,O=w.hasMore,N=w.isFetching,A=w.nextCursor,C=i.m.uniq(null!==(n=null==j?void 0:j.map((function(e){return e.objectId})))&&void 0!==n?n:[]),x=(0,m.f)(C,(function(e){return s.o.sharedObjectsById(e)})),T=f.getRecipientIds(j),L=(0,m.f)(T,(function(e){return s.o.getRecipientsById(e,S.data.customerId)})),M=r.a.useBasicFetch(o.L.config()),F=function(e,t,n,r,i){var l=y(a.useState(t),2),s=l[0],c=l[1],o=y(a.useState(r),2),u=o[0],m=o[1];return a.useEffect((function(){t&&c(!0)}),[t]),a.useEffect((function(){r&&m(!0)}),[r]),!(e&&!e.length)&&(!e||!s||n.length&&!u||!i.data)}(j,!!x.items,T,!!L.items,M),R=JSON.stringify(e),P=N||x.isFetching||L.isFetching,U=h(x),D=h(L),V=t&&(null==U?void 0:U.length)&&U.reduce((function(e,t){if(t.typeId!==c.E.Interactive)return e;var n,a=t;return[].concat(function(e){if(Array.isArray(e))return g(e)}(n=e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(n)||v(n)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}(),[{metadataId:a.id,interactiveId:a.interactiveId}])}),[]),B=r.a.useBasicFetch(t&&!!x.items&&S.data&&l.I.pendingReviews({interactives:V,filters:{currentCustomerId:S.data.customerId,currentUserId:S.data.id}})),H=[P,R,B.isFetching];return{sentShares:j,sharedObjects:U,shareRecipients:D,interactivesPendingReview:B.data,isFetching:P,showPartialLoading:F,nextCursor:A,hasMore:O,fetchNext:k,imageCdnUrl:null===(p=M.data)||void 0===p?void 0:p.imageCdnUrl,dependencies:H}}}}]);
2
- //# sourceMappingURL=3717-8a97ddeb28-lite.chunk.js.map
1
+ "use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[3717],{71553:(e,t,n)=>{n.d(t,{I:()=>l});var a=n(99940),r=n(62875);function i(e,t){return{currentUserId:e.id,currentCustomerId:e.customerId,dateRange:{start:t.start,end:t.end},userIds:t.userId,classroomsAndGroups:t.groupId}}var l={interactiveResultSet:function(e,t,n,l,s,c,o,u){return{url:s?"/api/domain/v3/analytics/interactives/".concat(e,"/metadata/").concat(t):"/api/domain/v2/analytics/interactives/".concat(e,"/metadata/").concat(t),key:(0,r.H)("interactive:result:set:".concat(e,":").concat(t),l),data:i(n,l),type:a.k.POST,normalize:!1,formatData:function(e){return Object.assign(Object.assign({},e),{students:e.students.map((function(e){return e.name&&e.profileId?Object.assign(Object.assign({},e),{publicUser:{profileId:e.profileId,name:e.name}}):e}))})},success:c,error:o,always:u}},mark:function(e,t,n,r,i,l,s){return{url:"/api/domain/v1/analytics/answers/".concat(n),key:"mark:answer:".concat(n,":").concat(r.resultId),type:a.k.PUT,data:r,normalize:!1,invalidationKeys:"interactive:result:set:".concat(e,":").concat(t),success:i,error:l,always:s}},pendingReviews:function(e){return{url:"/api/domain/v1/analytics/interactives/pending-reviews/summary",key:"interactives:pending:reviews",type:a.k.POST,data:e}},interactiveResultsReport:function(e){return{url:"{gateway}/v2/analytics/interactives/report",key:"interactive:results:report",data:e,type:a.k.POST,normalize:!1}}}},83657:(e,t,n)=>{n.d(t,{e:()=>o});var a=n(32735),r=n(91967),i=n(10874),l=n(36532),s=n(42735),c=n(86509);function o(e){var t=a.useMemo((function(){return e.actions.sort((function(e,t){return e.order-t.order}))}),[e.actions]),n=[],o=[];t.forEach((function(e){e.button?n.push(e):o.push(e)}));var u="d-flex";return e.className&&(u+=" ".concat(e.className)),n.length||o.length?a.createElement("div",{className:u},n.length?n.map((function(t,n){return a.createElement(a.Fragment,{key:n},function(){if(t.label){var n=r.q.isFunction(t.label)?t.label:function(){return a.createElement(a.Fragment,null,t.label)};return a.createElement(s.K,{appLink:t.appLink,href:t.href,onClick:t.onClick,svgName:t.svgName,svgSize:e.dropdownToggleSvgSize,className:t.className,tooltip:t.tooltip,showSpinner:t.showSpinner,analyticsData:t.analyticsData,analyticsOptions:t.analyticsOptions,openInNewTab:t.openInNewTab,disabled:t.disabled},n())}var c=a.createElement(i.h,{appLink:t.appLink,href:t.href,onClick:t.onClick,svgName:t.svgName,className:t.className,analyticsData:t.analyticsData,analyticsOptions:t.analyticsOptions,openInNewTab:t.openInNewTab,disabled:t.disabled,showBorder:t.showBorder,customSize:e.customSize,ariaLabel:t.tooltip});return t.tooltip?a.createElement(l.u,{title:t.tooltip,spanHack:!0},c):c}())})):a.createElement(a.Fragment,null),e.sortComponent&&e.sortComponent,o.length?a.createElement(c.m,{actions:o,dropdownToggleClassName:e.actionsDropdownClassName,dropdownToggleSvgSize:e.dropdownToggleSvgSize,fetchMore:e.fetchMore}):a.createElement(a.Fragment,null)):a.createElement(a.Fragment,null)}},54405:(e,t,n)=>{n.d(t,{X:()=>a});var a={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}}}},39902:(e,t,n)=>{n.d(t,{f:()=>c});var a=n(32735),r=n(70680),i=n(20354);function l(e,t){if(e){if("string"==typeof e)return s(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?s(e,t):void 0}}function s(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,a=Array(t);n<t;n++)a[n]=e[n];return a}function c(e,t){var n,c,o=(n=a.useState([]),c=2,function(e){if(Array.isArray(e))return e}(n)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var a,r,i,l,s=[],c=!0,o=!1;try{if(i=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;c=!1}else for(;!(c=(a=i.call(n)).done)&&(s.push(a.value),s.length!==t);c=!0);}catch(e){o=!0,r=e}finally{try{if(!c&&null!=n.return&&(l=n.return(),Object(l)!==l))return}finally{if(o)throw r}}return s}}(n,c)||l(n,c)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),u=o[0],m=o[1];a.useEffect((function(){if(null==e?void 0:e.length){var t=function(e){return function(e){if(Array.isArray(e))return s(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||l(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.")}()}(u);t.push([]),e.forEach((function(e){t.find((function(t){return t.find((function(t){return t===e}))}))||t[t.length-1].push(e)})),m(t.filter((function(e){return e.length})))}}),[e?e.join(","):null]);var d=(0,r.I0)(),p=(0,r.v9)((function(e){return e}));if(a.useEffect((function(){u.forEach((function(e){var n=t(e);i.a.getResponse(p,n.key).shouldFetch&&i.a.fetch(d,n)}))}),[null==u?void 0:u.length]),!(null==u?void 0:u.length))return{items:null,isFetching:!1};var f={},y={};return u.forEach((function(e,n){var a=t(e),r=i.a.getResponse(p,a.key);y[n]=r,r.data&&r.data.forEach((function(e){return f[e.id]=e}))})),{items:Object.keys(y).some((function(e){return!!y[e].data}))?f:null,isFetching:!!Object.keys(y).some((function(e){return y[e].isFetching}))}}},62875:(e,t,n)=>{function a(e,t,n){var a="".concat(e,":").concat(t.start,":").concat(t.end),r=Array.isArray(t.userId)?t.userId.sort().join(":"):t.userId,i=Array.isArray(t.groupId)?t.groupId.sort().join(":"):t.groupId;return r&&(a+=":".concat(r)),i&&(a+=":".concat(i)),n&&(a+=":".concat(n)),a}n.d(t,{H:()=>a})},8807:(e,t,n)=>{n.d(t,{c:()=>a,q:()=>r});var a="D8qRe7",r="GRWx6w"},11293:(e,t,n)=>{n.d(t,{p:()=>f});var a=n(32735),r=n(57900),i=n(97395),l=n(2948),s=n(10874),c=n(83345),o=n(4594),u=n(35223),m=n(86702);function d(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,a=Array(t);n<t;n++)a[n]=e[n];return a}var p="lite.insightsAdminAlert";function f(e){var t,n,f=(t=(0,l.D)(m.y.INSIGHTS_ADMIN_ALERT,!0,{storage:r.Z1.LocalStorage}),n=2,function(e){if(Array.isArray(e))return e}(t)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var a,r,i,l,s=[],c=!0,o=!1;try{if(i=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;c=!1}else for(;!(c=(a=i.call(n)).done)&&(s.push(a.value),s.length!==t);c=!0);}catch(e){o=!0,r=e}finally{try{if(!c&&null!=n.return&&(l=n.return(),Object(l)!==l))return}finally{if(o)throw r}}return s}}(t,n)||function(e,t){if(e){if("string"==typeof e)return d(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?d(e,t):void 0}}(t,n)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),y=f[0],v=f[1];return e.hasAnalytics&&y?a.createElement("div",{role:"alert",className:"d-flex justify-content-between align-items-center bg-light-blue rounded p-2 mb-4"},a.createElement("div",null,a.createElement(c.x,{namespace:p,phrase:"adminAlert"}),a.createElement("a",{className:"text-info",href:function(){if(!e.video)return e.analyticsUrl;var t="";return e.video.typeId===o.E.Interactive&&(t="/interactives/".concat(e.video.id,"/views")),e.video.typeId===o.E.Video&&(t="/videos/".concat(e.video.id,"/views")),e.video.typeId===o.E.Clip&&(t="/clips/".concat(e.video.id,"/views")),i._.safeUrlConcat(e.analyticsUrl,t)}(),target:"_blank"},a.createElement(c.x,{namespace:p,phrase:"analytics"})),"."),a.createElement(s.h,{svgName:u.vn.Close,className:"text-blue",onClick:function(){v(!1)}})):a.createElement(a.Fragment,null)}},9566:(e,t,n)=>{n.d(t,{G:()=>o,e:()=>m});var a=n(23481),r=n(85063),i=n(35223),l=n(14070),s=n(97291),c=a.T.encloseNamespace("myShares.demoInsights"),o={share:{objectTypeId:34,type:r.y.ShareLink},sharedObject:null,shareRecipients:null,dateShared:(new Date).toISOString(),viewCount:23},u={application:s.O.MY_SHARES,action:l.e.MyShares.INTERACTIVE_OVERVIEW_DEMO},m=[{svgName:i.vn.Analytics,label:c("demoInsights"),appLink:u,group:"insights",button:!0,className:"btn btn-outline-dark"}]},88099:(e,t,n)=>{n.r(t),n.d(t,{MySharesView:()=>Me});var a=n(32735),r=n(81886),i=n(23481),l=n(20354),s=n(26025),c=n(88180),o=n(71020),u=n(83345),m=n(16714),d=n(39151),p=n(1666),f=n(54405),y=n(31949),v=n(25882),g=n(79967),h=n(93322),b=n(22902),E=n(79612),S=n(37802),I=n(14070),k=n(97291),w=n(51855),j=n(64208),O=n(86099),N=n(34509),A=n(75896),C=n(36848),x=n(89965),T=n(4594);const L={noCaret:"TMpTN"};function M(e){return function(e){if(Array.isArray(e))return P(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||R(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){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var a,r,i,l,s=[],c=!0,o=!1;try{if(i=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;c=!1}else for(;!(c=(a=i.call(n)).done)&&(s.push(a.value),s.length!==t);c=!0);}catch(e){o=!0,r=e}finally{try{if(!c&&null!=n.return&&(l=n.return(),Object(l)!==l))return}finally{if(o)throw r}}return s}}(e,t)||R(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 R(e,t){if(e){if("string"==typeof e)return P(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?P(e,t):void 0}}function P(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,a=Array(t);n<t;n++)a[n]=e[n];return a}var U="insights.insightsTypeFilters",D=i.T.encloseNamespace(U);function V(e){var t=[{label:D("playlists"),filter:T.E.Playlist},{label:D("series"),filter:T.E.Series}],n=e.typeIdParams.filter((function(e){return t.some((function(t){return e===t.filter}))})),i=F(a.useState(!1),2),l=i[0],s=i[1],c=F(a.useState(n),2),o=c[0],m=c[1];function d(){var n=e.appLink.params;r.Q.C$.trigger(Object.assign(Object.assign({},e.appLink),{params:Object.assign(Object.assign({},n),{typeId:[].concat(M(e.typeIdParams.filter((function(e){return!t.find((function(t){return e===t.filter}))}))),M(o))})}))}return a.createElement("div",{className:"d-flex align-items-center fw-semibold"},a.createElement("p",{className:"h6 mb-0"},a.createElement(u.x,{namespace:U,phrase:"filters"})),a.createElement("div",{className:"d-flex border-start border-light ps-3 ms-3 gap-2"},a.createElement(B,{typeId:T.E.Interactive,typeFilters:e.typeIdParams,appLink:e.appLink}),a.createElement(B,{typeId:T.E.Video,typeFilters:e.typeIdParams,appLink:e.appLink}),a.createElement(B,{typeId:T.E.Clip,typeFilters:e.typeIdParams,appLink:e.appLink}),a.createElement(N.Z,{onToggle:function(e){s(e),e||d()},show:l},a.createElement(N.Z.Toggle,{className:L.noCaret,variant:n.length?"dark":"outline-dark"},a.createElement("span",{className:"fw-semibold mb-0"},a.createElement(u.x,{namespace:U,phrase:"moreFilters"}),n.length?" - ".concat(n.length):"")),a.createElement(N.Z.Menu,null,a.createElement("div",{className:"mx-1 px-2 py-1 mb-0"},a.createElement("h2",{className:"h6 mb-3"},a.createElement(u.x,{namespace:U,phrase:"types"})),a.createElement("ul",{className:"list-unstyled me-5"},t.map((function(e){return a.createElement("li",{key:"".concat(e.label,"-filter"),className:"my-1"},a.createElement(x.X,{id:"".concat(e.label,"-filter"),label:e.label,onChange:function(){return t=e.filter,void m(A.m.addOrRemoveImmutable(o,t));var t},checked:(t=e.filter,!!o.find((function(e){return e===t})))}));var t}))),a.createElement("button",{onClick:function(){return d(),void s(!1)},className:"btn btn-link text-info float-end p-0 mb-0"},a.createElement(u.x,{namespace:U,phrase:"apply"})))))),!!e.typeIdParams.length&&a.createElement("button",{onClick:function(){m([]);var t=e.appLink.params;r.Q.C$.trigger(Object.assign(Object.assign({},e.appLink),{params:Object.assign(Object.assign({},t),{typeId:[]})}))},className:"btn btn-link ms-1"},a.createElement(u.x,{namespace:U,phrase:"resetAll"})))}function B(e){var t=e.typeFilters.includes(e.typeId),n=e.appLink,r=n.params,i=A.m.addOrRemoveImmutable(e.typeFilters,e.typeId),l=Object.assign(Object.assign({},n),{params:Object.assign(Object.assign({},r),{typeId:i})});function s(){return e.typeId===T.E.Video?"videos":e.typeId===T.E.Clip?"clips":e.typeId===T.E.Interactive?"interactives":void 0}return a.createElement(C.F,{className:"btn ".concat(t?"btn-dark":"btn-outline-dark"," fw-semibold"),appLink:l,ariaLabel:"".concat(D("ariaFilterBy"),": ").concat(D(s()))},a.createElement(u.x,{namespace:U,phrase:s()}))}var H=n(11293),_=n(8807),z=n(82602),G=n(65858),q=n(29024),Y=n(65853),$=n(64249),Z=n(83657),W=n(60995),Q=n(11882),K=n(85063),X=n(31908),J=n(24758);const ee={mySharesTable:"hyaYe"};var te="myShares.tableRow";function ne(e){return a.createElement("div",{className:"".concat(ee.mySharesTable," gap-3 px-3")},a.createElement("p",{className:"fw-semibold mb-2 ms-n3"},e.heading),e.isFirst&&a.createElement(a.Fragment,null,a.createElement("div",null),a.createElement("p",{className:"fw-semibold mb-2"},a.createElement(u.x,{namespace:te,phrase:"sharedToHeading"})),a.createElement("p",{className:"fw-semibold mb-2"},a.createElement(u.x,{namespace:te,phrase:"dateSharedHeading"})),a.createElement("p",{className:"fw-semibold mb-2"},a.createElement(u.x,{namespace:te,phrase:"viewsHeading"}))))}function ae(e){var t,n=e.sharedObject;if(!n.name)return a.createElement(u.x,{namespace:te,phrase:"videoUnavailable"});if(X.M.isVideoType(n)&&!(null===(t=X.M.getCanBeConsumed(n))||void 0===t?void 0:t.canNavigate))return a.createElement("span",{className:"clamp-2"},n.name);var r=function(){switch(n.typeId){case T.E.Series:return"series";case T.E.Playlist:return"playlist"}}();return a.createElement("div",null,X.M.isVideoType(n)&&a.createElement(Q.$,{type:"series",video:n,appLink:"series"in n&&n.series?(0,O.Qh)(n.series):null,analyticsOptions:{location:G.LZ.Insights},className:"d-inline clamp-1"}),r&&a.createElement(W.m,null,a.createElement(u.x,{namespace:te,phrase:r})),a.createElement(C.F,{appLink:e.appLink,className:"clamp-1",analyticsData:{id:n.id,name:n.name},analyticsOptions:{entity:$.I.getAnalyticsEntity(n.type),actionType:G.Vw.Click,location:G.LZ.MyShares}},n.name),!!e.requireMarking&&a.createElement("div",{className:"font-size-sm d-flex align-items-center bg-light-ultramarine text-ultramarine rounded-pill w-fit mt-1 px-2"},a.createElement(u.x,{namespace:te,phrase:"requireMarking",options:{smartCount:e.requireMarking}})))}function re(e){var t=e.shareData,n=t.sharedObject,r=t.share.type===K.y.ShareLink&&Y.R.getIconAndText({entity:n,entityTypeId:n.typeId,hasStudentExp:!1,isPasswordProtected:t.share.isPasswordProtected,linkExpireDate:t.share.linkExpireDate,privacy:{privacy:t.privacy,overrideRestrictions:t.overrideRestrictions},status:t.share.status,yearGroups:e.yearGroups});return a.createElement("div",{key:t.share.id,className:"".concat(ee.mySharesTable," align-items-center p-3 gap-3 border-light")},a.createElement(q.k,{object:n,appLink:e.getObjectAppLink(n),showVideoMetadata:!0,locationContext:G.LZ.MyShares,showCollectionMask:!0,showVideoCount:!0}),a.createElement("div",null,a.createElement(ae,{sharedObject:t.sharedObject,requireMarking:t.pendingReview,appLink:e.getObjectAppLink(n)}),e.children),a.createElement(J.A,{shareLinkText:null==r?void 0:r.text,shareRecipients:t.shareRecipients,imageCdnUrl:e.imageCdnUrl}),a.createElement("p",{className:"mb-0"},(0,z.WU)(t.dateShared)),a.createElement("p",{className:"mb-0"},a.createElement(u.x,{namespace:te,phrase:"views",options:{smartCount:t.viewCount}})),a.createElement(Z.e,{className:"justify-content-end gap-2",actions:e.getObjectActions(n)}))}var ie=n(9566),le="myShares.demoInsights",se=i.T.encloseNamespace(le);function ce(e){var t=e.primaryUrl.includes("staging");return a.createElement("div",null,a.createElement(ne,{heading:se("demoHeading"),isFirst:!0}),a.createElement("div",{className:"rounded-3 border border-light bg-light-orange mb-4"},a.createElement(re,{shareData:Object.assign(Object.assign({},ie.G),{sharedObject:Object.assign(Object.assign({},e.demoInteractive),{id:t?_.c:_.q})}),getObjectActions:function(){return ie.e},getObjectAppLink:function(){return null}},a.createElement("div",{className:"d-inline-block rounded-pill bg-light-blue text-info font-size-sm mt-1 px-2"},a.createElement(u.x,{namespace:le,phrase:"demoInsightPill"})))))}var oe=n(23232),ue=n(99742),me=i.T.encloseNamespace("myShares.mySharesTableEmptyState");function de(){return a.createElement(oe.u,null,a.createElement(oe.u.Image,{src:ue.W.EmptyStates.Share.SHARED_BY_ME,size:"small"}),a.createElement(oe.u.Heading,null,me("heading")),a.createElement(oe.u.Info,null,me("info")),a.createElement(oe.u.Cta,{appLink:{application:k.O.DASHBOARD,action:I.e.Dashboard.HOME},text:me("cta")}))}var pe=n(110),fe=n(31754);function ye(e){return ye="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},ye(e)}function ve(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,a=Array(t);n<t;n++)a[n]=e[n];return a}function ge(e,t,n){return(t=function(e){var t=function(e){if("object"!=ye(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!=ye(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==ye(t)?t:t+""}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var he=i.T.encloseNamespace("myShares.mySharesTable");function be(e){var t;if(e.type===K.y.ShareLink||!(null===(t=null==e?void 0:e.recipients)||void 0===t?void 0:t.length))return e.dateCreated;var n=e.recipients.map((function(e){return e.dateShared}));return n.sort((function(e,t){return pe.O.isSame(e,t)?0:pe.O.isAfter(e,t)?1:-2})),n.length?A.m.last(n):""}function Ee(e){var t,n,r,i,l,s,c,o=(t=e.sentShares,n=e.sharedObjects,r=e.shareRecipients,i=!!e.groupByDateShared,l=e.interactivesPendingReview,s=e.dependencies,a.useMemo((function(){var e=[],a=n.reduce((function(e,t){return Object.assign(ge({},t.id,t),e)}),{}),s=r.reduce((function(e,t){return Object.assign(ge({},t.id,t),e)}),{}),c=null==l?void 0:l.reduce((function(e,t){return Object.assign(ge({},t.interactiveId,t),e)}),{});return t.forEach((function(t){var n,r,i=a[t.objectId],l=null;if(t.type===K.y.DirectShare&&(l=[],null===(n=t.recipients)||void 0===n||n.forEach((function(e){var t=s[e.id];t&&l.push(t)}))),i){var o=i.typeId===T.E.Interactive&&(null==c?void 0:c[i.interactiveId]);e.push(Object.assign({share:t,sharedObject:i,shareRecipients:l,dateShared:be(t),viewCount:null!==(r=t.viewCount)&&void 0!==r?r:0,pendingReview:null==o?void 0:o.pendingReviewCount},t.type===K.y.ShareLink?{privacy:t.privacy,overrideRestrictions:t.overrideRestrictions}:{}))}})),i?fe.x.groupByDateShared(e):ge({},he("title"),e)}),function(e){if(Array.isArray(e))return ve(e)}(c=s)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(c)||function(e,t){if(e){if("string"==typeof e)return ve(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?ve(e,t):void 0}}(c)||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 a.createElement(a.Fragment,null,Object.keys(o).map((function(t,n){return a.createElement("div",{key:t},a.createElement(ne,{heading:t,isFirst:!e.hasDemoInsights&&0===n}),a.createElement("div",{className:"d-flex flex-column rounded-3 border border-light mb-4"},o[t].map((function(t){return a.createElement(re,{key:t.share.id,shareData:t,yearGroups:e.yearGroups,getObjectActions:e.getObjectActions,getObjectAppLink:e.getObjectAppLink,imageCdnUrl:e.imageCdnUrl})}))))})))}const Se={table:"elIjR",heading:"iWHol",image:"TMQxq",avatar:"_3GY1C",date:"nz3va",views:"FpDfX",actions:"pOtyK"};function Ie(){return a.createElement("div",{className:"".concat(Se.table," align-items-center striped-row rounded-3 gap-3 p-3")},a.createElement("div",{className:"partial-loading-background rounded ratio ratio-16x9 ".concat(Se.image)}),a.createElement("div",{className:"partial-loading-background w-75 ".concat(Se.name)}," "),a.createElement("div",{className:"partial-loading-background w-75 rounded-pill ".concat(Se.avatar)}),a.createElement("div",{className:"partial-loading-background ".concat(Se.date)}," "),a.createElement("div",{className:"partial-loading-background ".concat(Se.views)}," "),a.createElement("div",{className:"d-flex justify-content-end gap-2 p-3"},a.createElement("div",{className:"partial-loading-background rounded w-50 ".concat(Se.actions)}),a.createElement("div",{className:"partial-loading-background rounded w-33 ".concat(Se.actions)})))}function ke(){return a.createElement(a.Fragment,null,a.createElement("div",{className:"mb-3"},a.createElement("div",{className:"striped-list no-full-width"},a.createElement("div",{className:"".concat(Se.table," gap-3 px-3")},a.createElement("div",{className:"partial-loading-background mb-2 ms-n3 ".concat(Se.date)}," "),a.createElement("div",null),a.createElement("div",{className:"partial-loading-background mb-2 ".concat(Se.date)}," "),a.createElement("div",{className:"partial-loading-background mb-2 ".concat(Se.date)}," "),a.createElement("div",{className:"partial-loading-background mb-2 ".concat(Se.date)}," ")),a.createElement(Ie,null),a.createElement(Ie,null),a.createElement(Ie,null))),a.createElement("div",{className:"mb-3"},a.createElement("div",{className:"partial-loading-background mb-2 ".concat(Se.date)}," "),a.createElement("div",{className:"striped-list no-full-width"},a.createElement(Ie,null),a.createElement(Ie,null),a.createElement(Ie,null),a.createElement(Ie,null))),a.createElement("div",{className:"mb-3"},a.createElement("div",{className:"partial-loading-background mb-2 ".concat(Se.date)}," "),a.createElement("div",{className:"striped-list no-full-width"},a.createElement(Ie,null),a.createElement(Ie,null),a.createElement(Ie,null),a.createElement(Ie,null),a.createElement(Ie,null),a.createElement(Ie,null),a.createElement(Ie,null),a.createElement(Ie,null),a.createElement(Ie,null),a.createElement(Ie,null))))}var we="myShares.mySharesEmptyState",je=i.T.encloseNamespace(we);function Oe(){return a.createElement(oe.u,null,a.createElement(oe.u.Image,{src:ue.W.EmptyStates.MY_VIDEOS_PUBLIC,altText:je("heading")}),a.createElement(oe.u.Heading,null,a.createElement(u.x,{namespace:we,phrase:"heading"})),a.createElement(oe.u.Info,null,a.createElement(u.x,{namespace:we,phrase:"info"})),a.createElement(oe.u.Cta,{text:i.T.getPhrase(we,"cta"),appLink:{application:k.O.SIGN_UP,action:I.e.SignUp.SIGN_UP},analyticsData:{},analyticsOptions:{actionType:G.Vw.Click,location:G.LZ.MySharesLanding,entity:G.py.AppLink,workflowPhase:G.eu.Start,descriptor:G.Yu.SignUp}}))}var Ne=n(35223),Ae=i.T.encloseNamespace("myShares.myShares");function Ce(e){return function(e){if(Array.isArray(e))return xe(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 xe(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?xe(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 xe(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,a=Array(t);n<t;n++)a[n]=e[n];return a}var Te="myShares.myShares",Le=i.T.encloseNamespace(Te);function Me(e){var t,n,i,N,A=(0,b.T)(),C=A.hasPermissions,x=A.hasLocalPermissions,T=(0,S.r)(null).hasInsights,L=(0,w.G)().isPlugin;(0,h.F)();var M,F,R=(0,g.k)(),P=(F=null==(M=e.queryParams)?void 0:M.typeId)?"string"==typeof F?[+F]:(null==M?void 0:M.typeId.map((function(e){return+e})))||[]:[],U=s.B.getAudienceAppLinkParams(),D={application:k.O.MY_SHARES,action:I.e.MyShares.HOME,params:Object.assign(Object.assign({},U),{typeId:P})},B={recipientUserId:null==U?void 0:U.users,recipientGroupId:[].concat(Ce((null==U?void 0:U.classroomGroups)||[]),Ce((null==U?void 0:U.classrooms)||[])),objectTypeId:P.length?P:void 0},_=!x(m.E.ViewMySharesLanding)||C(m.C.ViewMyShares)&&T,z=(0,j.aH)(B,!0,_),q=z.sentShares,Y=z.sharedObjects,$=z.shareRecipients,Z=z.interactivesPendingReview,W=z.isFetching,Q=z.showPartialLoading,K=z.nextCursor,J=z.hasMore,ee=z.fetchNext,te=z.imageCdnUrl,ne=z.dependencies;(0,E.M)({title:Le("myShares")});var ae=(0,S.r)(null).hasClassrooms,re=l.a.useBasicFetch(d.L.config()),ie=l.a.useBasicFetch(y.N.currentUser()),le=l.a.useBasicFetch((null===(t=ie.data)||void 0===t?void 0:t.isAuthenticated)&&p.h.yearGroups(ie.data.customerId)),se=function(e,t,n){var r=JSON.stringify(e);return a.useCallback((function(a){return function(e,t,n,a){var r=[],i={button:!0,className:"btn btn-outline-dark"};if(X.M.isVideoType(e)){if(!X.M.getCanBeConsumed(e).canConsume)return[];if(a)return[Object.assign(Object.assign({label:Ae("embedVideo"),appLink:{application:k.O.DEFAULT,action:I.e.Default.PLUGIN_SHARE,args:[e.id],params:{entityType:e.type}}},i),{analyticsOptions:{actionType:G.Vw.Share,descriptor:G.YM.PluginEmbed,workflowPhase:G.eu.Start,eventVersion:G.eq.V5}})];n&&r.push(Object.assign({svgName:Ne.vn.Analytics,label:Ae("viewInsights"),appLink:Object.assign(Object.assign({},(0,O.Dw)(e)),{params:t}),group:"insights"},i))}return r.push(Object.assign({label:Ae("share"),svgName:Ne.vn.Share,appLink:(0,O.YK)(e),group:"share"},i)),r}(a,e,t,n)}),[r])}(U,T&&C(m.C.ViewInsights),L),oe=(0,v.v)().accessPolicy,ue=null===(n=null==oe?void 0:oe.metadata)||void 0===n?void 0:n.hasDemoInsights,me=l.a.useBasicFetch(ue&&f.X.interactiveMetadata());return a.useEffect((function(){C(m.C.ViewMyShares)&&T||r.Q.Ab.PageLoad("/")}),[_]),_?a.createElement("div",{className:"px-3"},a.createElement(H.p,{analyticsUrl:null===(i=re.data)||void 0===i?void 0:i.analyticsWebUrl,hasAnalytics:C(m.C.ViewCustomerAnalytics)}),a.createElement("div",{className:"d-flex justify-content-between border-bottom pb-3 mb-3"},a.createElement("h1",{className:"mb-1"},a.createElement(u.x,{namespace:Te,phrase:"myShares"})),a.createElement(c.B,{hasClassroomsFeature:ae})),a.createElement("div",{className:"mb-3"},a.createElement(V,{appLink:D,typeIdParams:P})),ue&&me.data&&a.createElement(ce,{demoInteractive:me.data,primaryUrl:null===(N=re.data)||void 0===N?void 0:N.primaryUrl}),Q?a.createElement(ke,null):q.length?a.createElement(a.Fragment,null,a.createElement(Ee,{sentShares:q,sharedObjects:Y,shareRecipients:$,interactivesPendingReview:Z,getObjectAppLink:O.Qh,getObjectActions:se,imageCdnUrl:te,groupByDateShared:!0,dependencies:ne,breakpoints:R,yearGroups:le.data,hasDemoInsights:ue}),(J||W)&&a.createElement(o._,{isFetching:W,fetchNext:ee,nextCursor:K})):a.createElement(de,null)):a.createElement(Oe,null)}},64208:(e,t,n)=>{n.d(t,{aH:()=>b});var a=n(32735),r=n(20354),i=n(75896),l=n(71553),s=n(30439),c=n(4594),o=n(39151),u=n(31949),m=n(39902),d=n(60115),p=n(85063),f={getDirectShares:function(e){var t;return null!==(t=null==e?void 0:e.filter((function(e){return e.type===p.y.DirectShare})))&&void 0!==t?t:[]},getRecipientIds:function(e){return i.m.uniq(i.m.flatten(f.getDirectShares(e).map((function(e){var t;return null!==(t=e.recipients)&&void 0!==t?t:[]}))),"id").map((function(e){return e.id}))}};function y(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var a,r,i,l,s=[],c=!0,o=!1;try{if(i=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;c=!1}else for(;!(c=(a=i.call(n)).done)&&(s.push(a.value),s.length!==t);c=!0);}catch(e){o=!0,r=e}finally{try{if(!c&&null!=n.return&&(l=n.return(),Object(l)!==l))return}finally{if(o)throw r}}return s}}(e,t)||v(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function v(e,t){if(e){if("string"==typeof e)return g(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?g(e,t):void 0}}function g(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,a=Array(t);n<t;n++)a[n]=e[n];return a}function h(e){return e.items?Object.values(e.items):[]}function b(e,t){var n,p,b=!(arguments.length>2&&void 0!==arguments[2])||arguments[2],E=r.a.useGetFetch(),S=r.a.useBasicFetch(u.N.currentUser()),I=function(t){return b&&s.o.sentShare(Object.assign({cursor:t},e))},k=function(e){return E(I(e))},w=(0,d.K)(I,k),j=w.items,O=w.hasMore,N=w.isFetching,A=w.nextCursor,C=i.m.uniq(null!==(n=null==j?void 0:j.map((function(e){return e.objectId})))&&void 0!==n?n:[]),x=(0,m.f)(C,(function(e){return s.o.sharedObjectsById(e)})),T=f.getRecipientIds(j),L=(0,m.f)(T,(function(e){return s.o.getRecipientsById(e,S.data.customerId)})),M=r.a.useBasicFetch(o.L.config()),F=function(e,t,n,r,i){var l=y(a.useState(t),2),s=l[0],c=l[1],o=y(a.useState(r),2),u=o[0],m=o[1];return a.useEffect((function(){t&&c(!0)}),[t]),a.useEffect((function(){r&&m(!0)}),[r]),!(e&&!e.length)&&(!e||!s||n.length&&!u||!i.data)}(j,!!x.items,T,!!L.items,M),R=JSON.stringify(e),P=N||x.isFetching||L.isFetching,U=h(x),D=h(L),V=t&&(null==U?void 0:U.length)&&U.reduce((function(e,t){if(t.typeId!==c.E.Interactive)return e;var n,a=t;return[].concat(function(e){if(Array.isArray(e))return g(e)}(n=e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(n)||v(n)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}(),[{metadataId:a.id,interactiveId:a.interactiveId}])}),[]),B=r.a.useBasicFetch(t&&!!x.items&&S.data&&l.I.pendingReviews({interactives:V,filters:{currentCustomerId:S.data.customerId,currentUserId:S.data.id}})),H=[P,R,B.isFetching];return{sentShares:j,sharedObjects:U,shareRecipients:D,interactivesPendingReview:B.data,isFetching:P,showPartialLoading:F,nextCursor:A,hasMore:O,fetchNext:k,imageCdnUrl:null===(p=M.data)||void 0===p?void 0:p.imageCdnUrl,dependencies:H}}}}]);
2
+ //# sourceMappingURL=3717-ce609e100b-lite.chunk.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scripts/3717-ce609e100b-lite.chunk.js","mappings":"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","sources":["file:///app/packages/libs/shared/src/apps/analytics/flight-requests/InteractiveResultsRequests.ts","file:///app/packages/libs/shared/src/components/actions/Actions.tsx","file:///app/packages/libs/shared/src/flight-requests/InsightsDemoRequests.ts","file:///app/packages/libs/shared/src/hooks/UseBatchFetch.ts","file:///app/packages/libs/shared/src/utils/AnalyticsRequestUtils.ts","file:///app/packages/projects/lite/src/apps/insights/constants/DemoInsights.ts","file:///app/packages/projects/lite/src/apps/insights/views/insights-admin-alert/InsightsAdminAlert.tsx","file:///app/packages/projects/lite/src/apps/my-shares/constants/MySharesDemoInsights.ts","file:///app/packages/projects/lite/src/apps/insights/components/insights-list/type-filter/insights-type-filters.scss","file:///app/packages/projects/lite/src/apps/insights/components/insights-list/type-filter/InsightsTypeFilters.tsx","file:///app/packages/projects/lite/src/apps/my-shares/components/my-shares-table-row/my-shares-table-row.scss","file:///app/packages/projects/lite/src/apps/my-shares/components/my-shares-table-row/MySharesTableRow.tsx","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/components/my-shares-table/empty-state/MySharesTableEmptyState.tsx","file:///app/packages/projects/lite/src/apps/my-shares/components/my-shares-table/MySharesTableUtils.tsx","file:///app/packages/projects/lite/src/apps/my-shares/components/my-shares-table/MySharesTable.tsx","file:///app/packages/projects/lite/src/apps/my-shares/components/my-shares-table/partial-loading/partial-my-shares-table.scss","file:///app/packages/projects/lite/src/apps/my-shares/components/my-shares-table/partial-loading/PartialMySharesTable.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/MySharesViewUtils.tsx","file:///app/packages/projects/lite/src/apps/my-shares/views/my-shares/MySharesView.tsx","file:///app/packages/libs/shared/src/utils/ShareHelper.ts","file:///app/packages/projects/lite/src/shared/hooks/useSharesTable.ts"],"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 formatData: (data: any) => {\n return {\n ...data,\n students: data.students.map((student: any) => {\n if (!student.name || !student.profileId)\n return student;\n\n return {\n ...student,\n publicUser: {\n profileId: student.profileId,\n name: student.name\n }\n };\n })\n };\n },\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 * as React from 'react';\n\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\nimport { Core } from 'libs/common/core';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { AnalyticsOptions } from 'libs/analytics/interfaces';\n\nimport { IconButton } from 'libs/shared/components/icon-button/IconButton';\nimport { SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\nimport { Tooltip } from 'libs/shared/components/tooltip/Tooltip';\nimport { BaseObject } from 'libs/shared/interfaces';\n\nimport { ActionButton } from './ActionButton';\nimport { ActionsDropdown } from './ActionsDropdown';\n\nexport interface ActionOptions {\n order?: number;\n label?: string | (() => JSX.Element);\n appLink?: Core.AppLink;\n href?: string;\n onClick?: () => void;\n svgName?: string;\n className?: string;\n button?: boolean; // If true, a button will be rendered. Otherwise the action will be rendered in the dropdown.\n tooltip?: string;\n showSpinner?: boolean;\n showBorder?: boolean; // only works for button without text label\n analyticsData?: HashObject;\n analyticsOptions?: AnalyticsOptions;\n disabled?: boolean;\n openInNewTab?: boolean; // Only used if appLink or href is provided\n group?: string;\n lazyPlaceholder?: boolean;\n}\n\nexport type ActionGenerator = (obj: BaseObject) => ActionOptions[];\n\ninterface ActionsProps {\n actions: ActionOptions[];\n className?: string;\n actionsDropdownClassName?: string;\n dropdownToggleSvgSize?: SvgContainerSize;\n sortComponent?: JSX.Element;\n customSize?: boolean;\n fetchMore?: () => void;\n}\n\nexport function Actions(props: ActionsProps): JSX.Element {\n const orderedActions = React.useMemo(() => props.actions.sort((a, b) => a.order - b.order), [props.actions]);\n\n const buttonActions: ActionOptions[] = [];\n const moreActions: ActionOptions[] = [];\n\n orderedActions.forEach(a => {\n if (a.button)\n buttonActions.push(a);\n else\n moreActions.push(a);\n });\n\n let className = 'd-flex';\n\n if (props.className)\n className += ` ${props.className}`;\n\n if (!buttonActions.length && !moreActions.length)\n return <></>;\n\n return (\n <div className={className}>\n {buttonActions.length ? buttonActions.map((a, idx) => (\n <React.Fragment key={idx}>\n {(() => {\n if (a.label) {\n const label = FunctionHelper.isFunction(a.label)\n ? a.label\n : () => <>{a.label}</>;\n\n return (\n <ActionButton\n appLink={a.appLink}\n href={a.href}\n onClick={a.onClick}\n svgName={a.svgName}\n svgSize={props.dropdownToggleSvgSize}\n className={a.className}\n tooltip={a.tooltip}\n showSpinner={a.showSpinner}\n analyticsData={a.analyticsData}\n analyticsOptions={a.analyticsOptions}\n openInNewTab={a.openInNewTab}\n disabled={a.disabled}\n >\n {label()}\n </ActionButton>\n );\n }\n\n const iconButton = (\n <IconButton\n appLink={a.appLink}\n href={a.href}\n onClick={a.onClick}\n svgName={a.svgName}\n className={a.className}\n analyticsData={a.analyticsData}\n analyticsOptions={a.analyticsOptions}\n openInNewTab={a.openInNewTab}\n disabled={a.disabled}\n showBorder={a.showBorder}\n customSize={props.customSize}\n ariaLabel={a.tooltip}\n />\n );\n\n return a.tooltip\n ? <Tooltip title={a.tooltip} spanHack>{iconButton}</Tooltip>\n : iconButton;\n })()}\n </React.Fragment>\n )) : <></>}\n {props.sortComponent && props.sortComponent}\n {moreActions.length ? (\n <ActionsDropdown\n actions={moreActions}\n dropdownToggleClassName={props.actionsDropdownClassName}\n dropdownToggleSvgSize={props.dropdownToggleSvgSize}\n fetchMore={props.fetchMore}\n />\n ) : <></>}\n </div>\n );\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 React from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\n\nimport { Flight } from 'libs/common/flight';\nimport { ApplicationState, HashObject } from 'libs/common/react/interfaces';\n\nimport { BaseObject } from 'libs/shared/interfaces';\n\nexport interface UseBatchFetchResult<T extends BaseObject> {\n items: { [key: string]: T} | null;\n isFetching: boolean;\n}\n\n/**\n * Used to fetch multiple items by id with Flight. Will fetch 25 items at a time firing off multiple\n * requests if there are more than 25 items.\n * This will return items as null until we have all our items. Items will be returned as an object with\n * their ids as they key for easy mapping\n * \n * @param itemIds \n * @param getRequest \n */\nexport function useBatchFetch<T extends BaseObject>(\n itemIds: string[],\n getRequest: (ids: string[]) => Flight.Request\n): UseBatchFetchResult<T> {\n const [ idBatches, setIdBatches ] = React.useState<string[][]>([]);\n\n React.useEffect(() => {\n if (!itemIds?.length)\n return;\n\n const newBatches = [...idBatches];\n newBatches.push([]);\n\n itemIds.forEach(id => {\n if (newBatches.find(batch => batch.find(_id => _id === id)))\n return;\n\n newBatches[newBatches.length - 1].push(id);\n });\n\n setIdBatches(newBatches.filter(batch => batch.length));\n }, [itemIds ? itemIds.join(',') : null]);\n\n const dispatch = useDispatch();\n\n const state = useSelector((state: ApplicationState) => state);\n\n React.useEffect(() => {\n idBatches.forEach(idBatch => {\n const request = getRequest(idBatch);\n const response = Flight.getResponse<T[]>(state, request.key);\n\n if (response.shouldFetch)\n Flight.fetch(dispatch, request);\n });\n }, [idBatches?.length]);\n\n if (!idBatches?.length)\n return { items: null, isFetching: false };\n \n const items: { [key: string]: T} = {};\n\n /* Used locally to only return our items if we've fetched all of them */\n const responses: HashObject<Flight.Response<T[]>> = {};\n \n idBatches.forEach((idBatch, i) => {\n const request = getRequest(idBatch);\n const response = Flight.getResponse<T[]>(state, request.key);\n responses[i] = response;\n\n if (response.data)\n response.data.forEach(v => items[v.id] = v);\n });\n\n return {\n items: Object.keys(responses).some(k => !!responses[k].data) ? items : null,\n isFetching: !!Object.keys(responses).some(k => responses[k].isFetching)\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}","export const DEMO_INTERACTIVE_STAGING_ID = 'D8qRe7';\nexport const DEMO_INTERACTIVE_PROD_ID = 'GRWx6w';","import React from 'react';\n\nimport { StorageType } from 'libs/common/backbone/utils/LocalStorageHelper';\nimport { UrlHelper } from 'libs/common/backbone/utils/UrlHelper';\nimport { useViewModel } from 'libs/common/react/hooks/UseViewModel';\n\nimport { IconButton } from 'libs/shared/components/icon-button/IconButton';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { VideoTypes } from 'libs/shared/interfaces';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport { ViewModelKeys } from 'shared/constants/LiteViewModels';\n\nconst namespace = 'lite.insightsAdminAlert';\n\ninterface InsightsAdminAlertProps {\n hasAnalytics: boolean;\n analyticsUrl: string;\n video?: VideoTypes;\n}\n\n// eslint-disable-next-line rulesdir/require-view-title\nexport function InsightsAdminAlert(props: InsightsAdminAlertProps) {\n const [ show, setShow ] = useViewModel(\n ViewModelKeys.INSIGHTS_ADMIN_ALERT,\n true,\n { storage: StorageType.LocalStorage }\n );\n\n function onDismiss() {\n setShow(false);\n }\n\n function getAnalyticsUrl() {\n if (!props.video) return props.analyticsUrl;\n\n let videoRoute = '';\n\n if (props.video.typeId === MasterType.Interactive)\n videoRoute = `/interactives/${props.video.id}/views`;\n\n if (props.video.typeId === MasterType.Video)\n videoRoute = `/videos/${props.video.id}/views`;\n\n if (props.video.typeId === MasterType.Clip)\n videoRoute = `/clips/${props.video.id}/views`;\n\n return UrlHelper.safeUrlConcat(props.analyticsUrl, videoRoute);\n }\n\n if (!props.hasAnalytics || !show)\n return <></>;\n\n return (\n <div role='alert' className='d-flex justify-content-between align-items-center bg-light-blue rounded p-2 mb-4'>\n <div>\n <Text namespace={namespace} phrase='adminAlert' />\n <a className='text-info' href={getAnalyticsUrl()} target='_blank'>\n <Text namespace={namespace} phrase='analytics' />\n </a>.\n </div>\n <IconButton svgName={cvSvgLibrary.Close} className='text-blue' onClick={onDismiss} />\n </div>\n );\n}","import { Core } from 'libs/common/backbone/index';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { ActionOptions } from 'libs/shared/components/actions/Actions';\nimport { ShareType } from 'libs/shared/enums/ShareType';\nimport { UnionShareObject } from 'libs/shared/interfaces';\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';\n\nconst namespace = 'myShares.demoInsights';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nexport const DEMO_INSIGHTS_SHARE: MySharesTableData = {\n share: {\n objectTypeId: 34,\n type: ShareType.ShareLink\n } as UnionShareObject,\n sharedObject: null,\n shareRecipients: null,\n dateShared: new Date().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_ACTIONS: ActionOptions[] = [\n {\n svgName: cvSvgLibrary.Analytics,\n label: getPhrase('demoInsights'),\n appLink: DEMO_INSIGHTS_APPLINK,\n group: 'insights',\n button: true,\n className: 'btn btn-outline-dark'\n }\n];","// extracted by mini-css-extract-plugin\nexport default {\"noCaret\":\"TMpTN\"};","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 { Text } from 'libs/shared/components/text/Text';\nimport { MasterType } from 'libs/shared/enums/MasterType';\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}\n\nexport function InsightsTypeFilters(props: InsightsTypeFilterProps) {\n const moreFilterOptions = [{\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: [\n ...props.typeIdParams.filter(filter => !moreFilterOptions.find(option => filter === option.filter)),\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 onSelectFilter(filter: MasterType) {\n setMoreFilters(ArrayHelper.addOrRemoveImmutable(moreFilters, filter));\n }\n\n function isFilterSelected(filter: MasterType) {\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='h6 mb-0'><Text namespace={namespace} phrase='filters' /></p>\n <div className='d-flex border-start border-light ps-3 ms-3 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 <Dropdown onToggle={onToggleDropdown} show={showDropdown}>\n <Dropdown.Toggle\n className={styles.noCaret}\n variant={moreFiltersSelected.length ? 'dark' : 'outline-dark'}\n >\n <span className='fw-semibold mb-0'>\n <Text namespace={namespace} phrase='moreFilters' />\n {moreFiltersSelected.length ? ` - ${moreFiltersSelected.length}` : ''}\n </span>\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 <button onClick={() => onClickApply()} className='btn btn-link text-info float-end p-0 mb-0'>\n <Text namespace={namespace} phrase='apply' />\n </button>\n </div>\n </Dropdown.Menu>\n </Dropdown>\n </div>\n {!!props.typeIdParams.length &&\n <button onClick={resetFilters} className='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 {\"mySharesTable\":\"hyaYe\"};","import React from 'react';\nimport { format as formatDate } from 'timeago.js';\n\nimport { Core } from 'libs/common/backbone/index';\n\nimport { LocationContext, UserAction } from 'libs/analytics/interfaces';\n\nimport { SharedObjectImage } from 'libs/shared/apps/share/components/shared-object-image/SharedObjectImage';\nimport { ShareLinkHelper } from 'libs/shared/apps/share/utils/ShareLinkHelper';\nimport { SharableEntity, ShareViewHelper } from 'libs/shared/apps/share/views/share/ShareViewHelper';\nimport { ActionOptions, Actions } from 'libs/shared/components/actions/Actions';\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { TitleSubText } from 'libs/shared/components/title-sub-text/TitleSubText';\nimport { VideoSubText } from 'libs/shared/components/video-sub-text/VideoSubText';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { ShareType } from 'libs/shared/enums/ShareType';\nimport { BaseObject, YearGroup } from 'libs/shared/interfaces';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\nimport { getObjectAppLink } from 'shared/utils/ObjectAppLinkHelper';\n\nimport { MySharesTableData } from 'apps/my-shares/components/my-shares-table/MySharesTableUtils';\nimport { SharedToPill } from 'apps/my-shares/components/shared-to-pill/SharedToPill';\n\nimport styles from './my-shares-table-row.scss';\n\nconst namespace = 'myShares.tableRow';\n\ninterface MySharesTableHeadingProps {\n heading: string;\n isFirst: boolean;\n}\n\nexport function MySharesTableHeading(props: MySharesTableHeadingProps) {\n return (\n <div className={`${styles.mySharesTable} gap-3 px-3`}>\n <p className='fw-semibold mb-2 ms-n3'>{props.heading}</p>\n\n {props.isFirst &&\n <>\n <div />\n <p className='fw-semibold mb-2'><Text namespace={namespace} phrase='sharedToHeading' /></p>\n <p className='fw-semibold mb-2'><Text namespace={namespace} phrase='dateSharedHeading' /></p>\n <p className='fw-semibold mb-2'><Text namespace={namespace} phrase='viewsHeading' /></p>\n </>\n }\n </div>\n );\n}\n\ninterface ShareObjectTitleProps {\n sharedObject: SharableEntity;\n requireMarking: number;\n appLink: Core.AppLink;\n}\n\nfunction ShareObjectTitle(props: ShareObjectTitleProps) {\n const { sharedObject } = props;\n\n if (!sharedObject.name) {\n return <Text namespace={namespace} phrase='videoUnavailable' />;\n }\n\n if (VideoHelper.isVideoType(sharedObject) &&\n !VideoHelper.getCanBeConsumed(sharedObject)?.canNavigate) {\n return (\n <span className='clamp-2'>\n {sharedObject.name}\n </span>\n );\n }\n\n function getSubTextPhrase(): string {\n switch (sharedObject.typeId) {\n case MasterType.Series: return 'series';\n case MasterType.Playlist: return 'playlist';\n }\n }\n\n const subTextPhrase = getSubTextPhrase();\n\n return (\n <div>\n {VideoHelper.isVideoType(sharedObject) && (\n <VideoSubText\n type='series'\n video={sharedObject}\n appLink={'series' in sharedObject && sharedObject.series ? getObjectAppLink(sharedObject.series) : null}\n analyticsOptions={{ location: LocationContext.Insights }}\n className='d-inline clamp-1'\n />\n )}\n\n {subTextPhrase &&\n <TitleSubText>\n <Text namespace={namespace} phrase={subTextPhrase} />\n </TitleSubText>\n }\n\n <AppLink\n appLink={props.appLink}\n className='clamp-1'\n analyticsData={{ id: sharedObject.id, name: sharedObject.name }}\n analyticsOptions={{\n entity: ShareViewHelper.getAnalyticsEntity(sharedObject.type),\n actionType: UserAction.Click,\n location: LocationContext.MyShares\n }}\n >\n {sharedObject.name}\n </AppLink>\n\n {!!props.requireMarking && (\n <div className={`font-size-sm d-flex align-items-center bg-light-ultramarine text-ultramarine rounded-pill w-fit mt-1 px-2`}>\n <Text namespace={namespace} phrase='requireMarking' options={{ smartCount: props.requireMarking }} />\n </div>\n )}\n </div>\n );\n}\n\ninterface MyShareRowProps extends React.PropsWithChildren {\n shareData: MySharesTableData;\n yearGroups?: YearGroup[];\n imageCdnUrl?: string;\n getObjectAppLink: (object: BaseObject) => Core.AppLink;\n getObjectActions: (object: BaseObject) => ActionOptions[];\n}\n\nexport function MySharesTableRow(props: MyShareRowProps) {\n const { shareData } = props;\n\n const sharedObject = shareData.sharedObject;\n\n const shareLinkText = shareData.share.type === ShareType.ShareLink &&\n ShareLinkHelper.getIconAndText({\n entity: sharedObject,\n entityTypeId: sharedObject.typeId,\n hasStudentExp: false,\n isPasswordProtected: shareData.share.isPasswordProtected,\n linkExpireDate: shareData.share.linkExpireDate,\n privacy: {\n privacy: shareData.privacy,\n overrideRestrictions: shareData.overrideRestrictions\n },\n status: shareData.share.status,\n yearGroups: props.yearGroups\n });\n\n return (\n <div key={shareData.share.id} className={`${styles.mySharesTable} align-items-center p-3 gap-3 border-light`}>\n <SharedObjectImage\n object={sharedObject}\n appLink={props.getObjectAppLink(sharedObject)}\n showVideoMetadata\n locationContext={LocationContext.MyShares}\n showCollectionMask\n showVideoCount\n />\n <div>\n <ShareObjectTitle\n sharedObject={shareData.sharedObject}\n requireMarking={shareData.pendingReview}\n appLink={props.getObjectAppLink(sharedObject)}\n />\n {props.children}\n </div>\n\n <SharedToPill\n shareLinkText={shareLinkText?.text}\n shareRecipients={shareData.shareRecipients}\n imageCdnUrl={props.imageCdnUrl}\n />\n\n <p className='mb-0'>{formatDate(shareData.dateShared)}</p>\n\n <p className='mb-0'><Text namespace={namespace} phrase='views' options={{ smartCount: shareData.viewCount }} /></p>\n\n <Actions className='justify-content-end gap-2' actions={props.getObjectActions(sharedObject)} />\n </div>\n );\n}","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { Text } from 'libs/shared/components/text/Text';\nimport { InteractiveMetadata } from 'libs/shared/interfaces';\n\nimport { DEMO_INTERACTIVE_PROD_ID, DEMO_INTERACTIVE_STAGING_ID } from 'apps/insights/constants/DemoInsights';\nimport { MySharesTableHeading, MySharesTableRow } from 'apps/my-shares/components/my-shares-table-row/MySharesTableRow';\nimport { DEMO_INSIGHTS_ACTIONS, DEMO_INSIGHTS_SHARE } from 'apps/my-shares/constants/MySharesDemoInsights';\n\nconst namespace = 'myShares.demoInsights';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface MySharesDemoInsightProps {\n demoInteractive: InteractiveMetadata;\n primaryUrl: string;\n}\n\nexport function MySharesDemoInsight(props: MySharesDemoInsightProps) {\n const isStaging = props.primaryUrl.includes('staging');\n\n function getDemoInteractive() {\n return {\n ...props.demoInteractive,\n id: isStaging ? DEMO_INTERACTIVE_STAGING_ID : DEMO_INTERACTIVE_PROD_ID\n };\n }\n\n return (\n <div>\n <MySharesTableHeading heading={getPhrase('demoHeading')} isFirst={true} />\n\n <div className='rounded-3 border border-light bg-light-orange mb-4'>\n <MySharesTableRow\n shareData={{ ...DEMO_INSIGHTS_SHARE, sharedObject: getDemoInteractive() }}\n getObjectActions={() => DEMO_INSIGHTS_ACTIONS}\n getObjectAppLink={() => null}\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 { EmptyState } from 'libs/shared/components/empty-states/EmptyState';\n\nimport { ImageUrls } from 'shared/constants/ImageUrls';\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\n\nconst namespace = 'myShares.mySharesTableEmptyState';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nexport function MySharesTableEmptyState(): JSX.Element {\n return (\n <EmptyState>\n <EmptyState.Image src={ImageUrls.EmptyStates.Share.SHARED_BY_ME} size='small' />\n <EmptyState.Heading>\n {getPhrase('heading')}\n </EmptyState.Heading>\n <EmptyState.Info>{getPhrase('info')}</EmptyState.Info>\n <EmptyState.Cta appLink={{ application: AppChannels.DASHBOARD, action: Actions.Dashboard.HOME }} text={getPhrase('cta')} />\n </EmptyState>\n );\n}","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\nimport { DateHelper } from 'libs/common/react/utils/DateHelper';\n\nimport { InteractivesPendingReviews } from 'libs/shared/apps/analytics/interfaces/response/InteractivesPendingReviewsResponse';\nimport { SharePrivacy } from 'libs/shared/apps/share/interfaces/SharePrivacy';\nimport { ShareHelper } from 'libs/shared/apps/share/utils/ShareHelper';\nimport { SharableEntity, SharableRecipient } from 'libs/shared/apps/share/views/share/ShareViewHelper';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { ShareType } from 'libs/shared/enums/ShareType';\nimport { InteractiveMetadata, UnionShareObject } from 'libs/shared/interfaces';\n\nconst namespace = 'myShares.mySharesTable';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nfunction getDateShared(share: UnionShareObject): string {\n if (share.type === ShareType.ShareLink || !share?.recipients?.length)\n return share.dateCreated;\n\n const datesShared = share.recipients.map(r => r.dateShared);\n\n datesShared.sort((date1, date2) => {\n if (DateHelper.isSame(date1, date2))\n return 0;\n\n return DateHelper.isAfter(date1, date2) ? 1 : -2;\n });\n\n\n if (!datesShared.length)\n return '';\n\n return ArrayHelper.last(datesShared);\n}\n\nexport interface MySharesTableData {\n share: UnionShareObject;\n sharedObject: SharableEntity;\n dateShared: string;\n shareRecipients?: SharableRecipient[];\n viewCount: number;\n pendingReview?: number;\n privacy?: SharePrivacy;\n overrideRestrictions?: boolean;\n}\n\ntype TableDataGroupings = { [date: string]: MySharesTableData[] };\n\nexport function useGetMySharesData(\n sentShares: UnionShareObject[],\n sharedObjects: SharableEntity[],\n shareRecipients: SharableRecipient[],\n groupByDate: boolean,\n interactivesPendingReviews: InteractivesPendingReviews[],\n dependencies: (string | boolean)[]\n): TableDataGroupings {\n return React.useMemo(() => {\n const tableData: MySharesTableData[] = [];\n\n const sharedObjectsMap = sharedObjects.reduce<Record<string, SharableEntity>>(\n (map, obj) => ({ [obj.id]: obj, ...map }),\n {}\n );\n const shareRecipientsMap = shareRecipients.reduce<Record<string, SharableRecipient>>(\n (map, obj) => ({ [obj.id]: obj, ...map }),\n {}\n );\n\n const interactivesPendingReviewsMap = interactivesPendingReviews?.reduce<\n Record<string, InteractivesPendingReviews>\n >(\n (map, obj) => ({ [obj.interactiveId]: obj, ...map }),\n {}\n );\n\n sentShares.forEach(s => {\n const sharedObject = sharedObjectsMap[s.objectId];\n\n let recipients: SharableRecipient[] | null = null;\n\n if (s.type === ShareType.DirectShare) {\n recipients = [];\n\n s.recipients?.forEach(r => {\n const recipient = shareRecipientsMap[r.id];\n\n if (recipient)\n recipients.push(recipient);\n });\n }\n\n // Skip if we don't have access to the shared object (e.g. if it's been deleted)\n if (sharedObject) {\n const pendingReview = sharedObject.typeId === MasterType.Interactive &&\n interactivesPendingReviewsMap?.[(sharedObject as InteractiveMetadata).interactiveId];\n\n tableData.push({\n share: s,\n sharedObject,\n shareRecipients: recipients,\n dateShared: getDateShared(s),\n viewCount: s.viewCount ?? 0,\n pendingReview: pendingReview?.pendingReviewCount,\n ...(s.type === ShareType.ShareLink ? {\n privacy: s.privacy,\n overrideRestrictions: s.overrideRestrictions\n } : {})\n });\n }\n });\n\n if (!groupByDate)\n return { [getPhrase('title')]: tableData };\n\n return ShareHelper.groupByDateShared(tableData);\n }, [...dependencies]);\n}","import React from 'react';\n\nimport { Core } from 'libs/common/core';\n\nimport { InteractivesPendingReviews } from 'libs/shared/apps/analytics/interfaces/response/InteractivesPendingReviewsResponse';\nimport { SharableEntity, SharableRecipient } from 'libs/shared/apps/share/views/share/ShareViewHelper';\nimport { ActionOptions } from 'libs/shared/components/actions/Actions';\nimport { Breakpoints } from 'libs/shared/hooks/useBreakpoints';\nimport { BaseObject, UnionShareObject, YearGroup } from 'libs/shared/interfaces';\n\nimport { useGetMySharesData } from 'apps/my-shares/components/my-shares-table/MySharesTableUtils';\nimport { MySharesTableHeading, MySharesTableRow } from 'apps/my-shares/components/my-shares-table-row/MySharesTableRow';\n\ninterface MySharesTableProps {\n sentShares: UnionShareObject[];\n sharedObjects: SharableEntity[];\n shareRecipients: SharableRecipient[];\n interactivesPendingReview: InteractivesPendingReviews[];\n getObjectAppLink: (object: BaseObject) => Core.AppLink;\n getObjectActions: (object: BaseObject) => ActionOptions[];\n imageCdnUrl: string;\n groupByDateShared?: boolean;\n showStatus?: boolean;\n showViewCount?: boolean;\n dependencies?: (string | boolean)[];\n breakpoints?: Breakpoints;\n yearGroups?: YearGroup[];\n hasDemoInsights?: boolean;\n}\n\nexport function MySharesTable(props: MySharesTableProps): JSX.Element {\n const data = useGetMySharesData(\n props.sentShares,\n props.sharedObjects,\n props.shareRecipients,\n !!props.groupByDateShared,\n props.interactivesPendingReview,\n props.dependencies\n );\n\n return (\n <>\n {Object.keys(data).map((heading, i) => (\n <div key={heading}>\n <MySharesTableHeading heading={heading} isFirst={!props.hasDemoInsights && i === 0} />\n\n <div className='d-flex flex-column rounded-3 border border-light mb-4'>\n {data[heading].map(shareData => (\n <MySharesTableRow\n key={shareData.share.id}\n shareData={shareData}\n yearGroups={props.yearGroups}\n getObjectActions={props.getObjectActions}\n getObjectAppLink={props.getObjectAppLink}\n imageCdnUrl={props.imageCdnUrl}\n />\n ))}\n </div>\n </div>\n ))}\n </>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"table\":\"elIjR\",\"heading\":\"iWHol\",\"image\":\"TMQxq\",\"avatar\":\"_3GY1C\",\"date\":\"nz3va\",\"views\":\"FpDfX\",\"actions\":\"pOtyK\"};","import React from 'react';\n\nimport styles from './partial-my-shares-table.scss';\n\nfunction PartialRow(): JSX.Element {\n return (\n <div className={`${styles.table} align-items-center striped-row rounded-3 gap-3 p-3`}>\n <div className={`partial-loading-background rounded ratio ratio-16x9 ${styles.image}`} />\n <div className={`partial-loading-background w-75 ${styles.name}`}>&nbsp;</div>\n <div className={`partial-loading-background w-75 rounded-pill ${styles.avatar}`} />\n <div className={`partial-loading-background ${styles.date}`}>&nbsp;</div>\n <div className={`partial-loading-background ${styles.views}`}>&nbsp;</div>\n <div className={`d-flex justify-content-end gap-2 p-3`}>\n <div className={`partial-loading-background rounded w-50 ${styles.actions}`} />\n <div className={`partial-loading-background rounded w-33 ${styles.actions}`} />\n </div>\n </div>\n );\n}\n\nexport function PartialMySharesTable(): JSX.Element {\n return (\n <>\n <div className='mb-3'>\n <div className='striped-list no-full-width'>\n <div className={`${styles.table} gap-3 px-3`}>\n <div className={`partial-loading-background mb-2 ms-n3 ${styles.date}`}>&nbsp;</div>\n <div />\n <div className={`partial-loading-background mb-2 ${styles.date}`}>&nbsp;</div>\n <div className={`partial-loading-background mb-2 ${styles.date}`}>&nbsp;</div>\n <div className={`partial-loading-background mb-2 ${styles.date}`}>&nbsp;</div>\n </div>\n\n <PartialRow />\n <PartialRow />\n <PartialRow />\n </div>\n </div>\n\n <div className='mb-3'>\n <div className={`partial-loading-background mb-2 ${styles.date}`}>&nbsp;</div>\n\n <div className='striped-list no-full-width'>\n <PartialRow />\n <PartialRow />\n <PartialRow />\n <PartialRow />\n </div>\n </div>\n\n <div className='mb-3'>\n <div className={`partial-loading-background mb-2 ${styles.date}`}>&nbsp;</div>\n\n <div className='striped-list no-full-width'>\n <PartialRow />\n <PartialRow />\n <PartialRow />\n <PartialRow />\n <PartialRow />\n <PartialRow />\n <PartialRow />\n <PartialRow />\n <PartialRow />\n <PartialRow />\n </div>\n </div>\n </>\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 { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { EventVersion, ShareDescriptors, UserAction, WorkflowPhase } from 'libs/analytics/interfaces';\n\nimport { AudienceQueryParams } from 'libs/shared/apps/analytics/interfaces/AudienceQueryParams';\nimport { ActionOptions } from 'libs/shared/components/actions/Actions';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { BaseObject } from 'libs/shared/interfaces';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\nimport { getInsightsAppLink, getShareAppLink } from 'shared/utils/ObjectAppLinkHelper';\n\nconst namespace = 'myShares.myShares';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nexport function getShareObjectActions(\n sharedObject: BaseObject,\n audienceParams?: AudienceQueryParams,\n hasInsights?: boolean,\n isPlugin?: boolean\n): ActionOptions[] {\n const insightObjectActions: ActionOptions[] = [];\n\n const buttonProps = {\n button: true,\n className: 'btn btn-outline-dark'\n };\n\n if (VideoHelper.isVideoType(sharedObject)) {\n const { canConsume } = VideoHelper.getCanBeConsumed(sharedObject);\n\n if (!canConsume)\n return [];\n\n if (isPlugin) {\n return [{\n label: getPhrase('embedVideo'),\n appLink: {\n application: AppChannels.DEFAULT,\n action: Actions.Default.PLUGIN_SHARE,\n args: [sharedObject.id],\n params: { entityType: sharedObject.type }\n },\n ...buttonProps,\n analyticsOptions: {\n actionType: UserAction.Share,\n descriptor: ShareDescriptors.PluginEmbed,\n workflowPhase: WorkflowPhase.Start,\n eventVersion: EventVersion.V5\n }\n }];\n }\n\n if (hasInsights)\n insightObjectActions.push({\n svgName: cvSvgLibrary.Analytics,\n label: getPhrase('viewInsights'),\n appLink: { ...getInsightsAppLink(sharedObject), params: audienceParams },\n group: 'insights',\n ...buttonProps\n });\n }\n\n insightObjectActions.push({\n label: getPhrase('share'),\n svgName: cvSvgLibrary.Share,\n appLink: getShareAppLink(sharedObject),\n group: 'share',\n ...buttonProps\n });\n\n return insightObjectActions;\n}\n\nexport function useGetShareObjectActions(\n audienceParams?: AudienceQueryParams,\n hasInsights?: boolean,\n isPlugin?: boolean\n): ((object: BaseObject) => ActionOptions[]) | null {\n const audienceParamsKey = JSON.stringify(audienceParams);\n\n return React.useCallback(\n (object: BaseObject) => getShareObjectActions(\n object,\n audienceParams,\n hasInsights,\n isPlugin\n ),\n [audienceParamsKey]\n );\n}\n\n\nexport function getTypeIdParams(params: HashObject): MasterType[] {\n const typeIdParams = params?.typeId;\n\n if (!typeIdParams) return [];\n\n if (typeof typeIdParams === 'string')\n return [+typeIdParams];\n\n return params?.typeId.map((typeId: MasterType) => +typeId) || [];\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';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { AnalyticsFilterHelper } from 'libs/shared/apps/analytics/utils/AnalyticsFilterUtils';\nimport { AudienceFilterView } from 'libs/shared/apps/analytics/views/audience-filter/AudienceFilterView';\nimport { GetSentItemsParams } from 'libs/shared/apps/share/interfaces/requests/GetSentItemsParams';\nimport { InfiniteScrollFooter } from 'libs/shared/components/infinite-scroll-footer/InfiniteScrollFooter';\nimport { Text } from 'libs/shared/components/text/Text';\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 { 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 { Config, CurrentUser, InteractiveMetadata, YearGroup } from 'libs/shared/interfaces';\n\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\nimport { usePluginHelper } from 'shared/hooks/use-plugin-helper/usePluginHelper';\nimport { useSharesTable } from 'shared/hooks/useSharesTable';\nimport { getObjectAppLink } from 'shared/utils/ObjectAppLinkHelper';\n\nimport { InsightsTypeFilters } from 'apps/insights/components/insights-list/type-filter/InsightsTypeFilters';\nimport { InsightsAdminAlert } from 'apps/insights/views/insights-admin-alert/InsightsAdminAlert';\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 { MySharesEmptyState } from 'apps/my-shares/views/my-shares/empty-state/MySharesEmptyState';\nimport { getTypeIdParams, useGetShareObjectActions } from 'apps/my-shares/views/my-shares/MySharesViewUtils';\n\nconst namespace = 'myShares.myShares';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface MySharesViewProps {\n queryParams: HashObject;\n}\n\nexport function MySharesView(props: MySharesViewProps) {\n const { hasPermissions, hasLocalPermissions } = usePermissions();\n const { hasInsights } = useSettings(null);\n\n const { isPlugin } = usePluginHelper();\n\n useLockContentWidth();\n\n const breakpoints = useBreakpoints();\n\n const typeIdAppLinkParams = getTypeIdParams(props.queryParams);\n const audienceAppLinkParams = AnalyticsFilterHelper.getAudienceAppLinkParams();\n const currentAppLink = getCurrentAppLink();\n const sentSharesParams = getSentSharesFilter();\n\n\n const shouldFetch = !hasLocalPermissions(LocalPermissionName.ViewMySharesLanding) ||\n hasPermissions(PermissionName.ViewMyShares) && hasInsights;\n\n const {\n sentShares,\n sharedObjects,\n shareRecipients,\n interactivesPendingReview,\n isFetching,\n showPartialLoading,\n nextCursor,\n hasMore,\n fetchNext,\n imageCdnUrl,\n dependencies\n } = useSharesTable(sentSharesParams, true, shouldFetch);\n\n useSetPageMetadata({ title: getPhrase('myShares') });\n const { hasClassrooms } = useSettings(null);\n\n const config = Flight.useBasicFetch<Config>(ConfigRequests.config());\n\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\n const hasInsightsPermission = hasInsights && hasPermissions(PermissionName.ViewInsights);\n\n const getSharedObjectActions = useGetShareObjectActions(audienceAppLinkParams, hasInsightsPermission, isPlugin);\n\n const { accessPolicy } = useAccessPolicy();\n\n const showDemoInsight = accessPolicy?.metadata?.hasDemoInsights;\n\n const demoInteractive = Flight.useBasicFetch<InteractiveMetadata>(showDemoInsight &&\n InsightsDemoRequests.interactiveMetadata());\n\n React.useEffect(() => {\n if (!(hasPermissions(PermissionName.ViewMyShares) && hasInsights))\n Core.LocationUtils.PageLoad('/');\n }, [shouldFetch]);\n\n function getSentSharesFilter(): GetSentItemsParams {\n return {\n recipientUserId: audienceAppLinkParams?.users,\n recipientGroupId: [ ...audienceAppLinkParams?.classroomGroups || [], ...audienceAppLinkParams?.classrooms || [] ],\n objectTypeId: typeIdAppLinkParams.length ? typeIdAppLinkParams : undefined\n };\n }\n\n function getCurrentAppLink(): Core.AppLink {\n return {\n application: AppChannels.MY_SHARES,\n action: Actions.MyShares.HOME,\n params: {\n ...audienceAppLinkParams,\n typeId: typeIdAppLinkParams\n }\n };\n }\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'><Text namespace={namespace} phrase='myShares' /></h1>\n\n <AudienceFilterView hasClassroomsFeature={hasClassrooms} />\n </div>\n\n <div className='mb-3'>\n <InsightsTypeFilters appLink={currentAppLink} typeIdParams={typeIdAppLinkParams} />\n </div>\n\n {showDemoInsight && demoInteractive.data &&\n <MySharesDemoInsight demoInteractive={demoInteractive.data} primaryUrl={config.data?.primaryUrl} />\n }\n\n {(() => {\n if (showPartialLoading)\n return <PartialMySharesTable />;\n\n if (!sentShares.length)\n return (\n <MySharesTableEmptyState />\n );\n\n return (\n <>\n <MySharesTable\n sentShares={sentShares}\n sharedObjects={sharedObjects}\n shareRecipients={shareRecipients}\n interactivesPendingReview={interactivesPendingReview}\n getObjectAppLink={getObjectAppLink}\n getObjectActions={getSharedObjectActions}\n imageCdnUrl={imageCdnUrl}\n groupByDateShared\n dependencies={dependencies}\n breakpoints={breakpoints}\n yearGroups={yearGroups.data}\n hasDemoInsights={showDemoInsight}\n />\n {(hasMore || isFetching) &&\n <InfiniteScrollFooter isFetching={isFetching} fetchNext={fetchNext} nextCursor={nextCursor} />\n }\n </>\n );\n })()}\n </div>\n );\n}","import { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\n\nimport { ShareType } from 'libs/shared/enums/ShareType';\nimport { DirectShare, UnionShareObject } from 'libs/shared/interfaces';\n\nexport const ShareHelper = {\n getDirectShares(sentShares: UnionShareObject[]): DirectShare[] {\n return sentShares?.filter(s => s.type === ShareType.DirectShare) as DirectShare[] ?? [];\n },\n \n getRecipientIds(sentShares: UnionShareObject[]): string[] {\n return ArrayHelper.uniq(ArrayHelper.flatten(ShareHelper.getDirectShares(sentShares).map(d => d.recipients ?? [])), 'id').map(r => r.id);\n }\n};","import React from 'react';\n\nimport { Flight } from 'libs/common/react/index';\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\n\nimport { InteractiveResultsRequests } from 'libs/shared/apps/analytics/flight-requests/InteractiveResultsRequests';\nimport { InteractivesPendingReviews } from 'libs/shared/apps/analytics/interfaces/response/InteractivesPendingReviewsResponse';\nimport { ShareRequests } from 'libs/shared/apps/share/flight-requests/ShareRequests';\nimport { GetSentItemsParams } from 'libs/shared/apps/share/interfaces/requests/GetSentItemsParams';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { ConfigRequests } from 'libs/shared/flight-requests/ConfigRequests';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { useBatchFetch, UseBatchFetchResult } from 'libs/shared/hooks/UseBatchFetch';\nimport { useInfiniteList } from 'libs/shared/hooks/UseInfiniteList';\nimport { BaseObject, Config, CurrentUser, InteractiveMetadata, UnionShareObject } from 'libs/shared/interfaces';\nimport { ShareHelper } from 'libs/shared/utils/ShareHelper';\n\n\nexport function getBatchFetchResultAsArray(result: UseBatchFetchResult<BaseObject>): BaseObject[] {\n return result.items ? Object.values(result.items) : [];\n}\n\n/**\n * As we are displaying data in an infinite list, we only want to show partial loading\n * on the initial fetch.\n * Whenever a new page is fetched, `sharedObjects.data` and `recipients.data` will be `undefined`,\n * as their key will change. So instead of using those values to determine whether or not to\n * show partial loading, we save the first time that they load in state and then use that.\n */\nexport function usePartialLoading(\n sentShare: UnionShareObject[],\n hasFetchedSharedObjects: boolean,\n recipientIds: string[],\n hasFetchedRecipients: boolean,\n config: Flight.Response<Config>\n): boolean {\n const [ initialSharedObjectsLoaded, setInitialSharedObjectsLoaded ] = React.useState(hasFetchedSharedObjects);\n const [ initialRecipientsLoaded, setInitialRecipientsLoaded ] = React.useState(hasFetchedRecipients);\n\n React.useEffect(() => {\n if (hasFetchedSharedObjects)\n setInitialSharedObjectsLoaded(true);\n }, [hasFetchedSharedObjects]);\n\n React.useEffect(() => {\n if (hasFetchedRecipients)\n setInitialRecipientsLoaded(true);\n }, [hasFetchedRecipients]);\n\n if (sentShare && !sentShare.length)\n return false;\n\n return !sentShare\n || !initialSharedObjectsLoaded\n || (recipientIds.length && !initialRecipientsLoaded)\n || !config.data;\n}\n\nexport function useSharesTable(\n params?: GetSentItemsParams,\n interactiveInsights?: boolean,\n shouldFetch: boolean = true\n) {\n const fetch = Flight.useGetFetch();\n\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n\n const getRequest = (cursor?: string) => shouldFetch && ShareRequests.sentShare({\n cursor,\n ...params\n });\n const fetchNext = (cursor?: string) => fetch(getRequest(cursor));\n\n const {\n items: sentShares,\n hasMore,\n isFetching: isFetchingSentShares,\n nextCursor\n } = useInfiniteList<UnionShareObject>(getRequest, fetchNext);\n\n const sharedObjectIds = ArrayHelper.uniq(sentShares?.map(s => s.objectId) ?? []);\n\n const sharedObjectsFetchResult = useBatchFetch(sharedObjectIds, (ids: string[]) => {\n return ShareRequests.sharedObjectsById(ids);\n });\n\n const recipientIds = ShareHelper.getRecipientIds(sentShares);\n\n const shareRecipientsFetchResult = useBatchFetch(recipientIds, (ids: string[]) => {\n return ShareRequests.getRecipientsById(ids, currentUser.data.customerId);\n });\n \n const config = Flight.useBasicFetch<Config>(ConfigRequests.config());\n\n const showPartialLoading = usePartialLoading(\n sentShares,\n !!sharedObjectsFetchResult.items,\n recipientIds,\n !!shareRecipientsFetchResult.items,\n config\n );\n\n const filterKey = JSON.stringify(params);\n\n // Wait until all data is fetched before telling the table to re-render\n const isFetching = isFetchingSentShares\n || sharedObjectsFetchResult.isFetching\n || shareRecipientsFetchResult.isFetching;\n\n const sharedObjects = getBatchFetchResultAsArray(sharedObjectsFetchResult);\n const shareRecipients = getBatchFetchResultAsArray(shareRecipientsFetchResult);\n \n const interactiveIds = getInteractiveIds();\n \n const interactivesPendingReview = Flight.useBasicFetch<InteractivesPendingReviews[]>(\n interactiveInsights && !!sharedObjectsFetchResult.items && currentUser.data &&\n InteractiveResultsRequests.pendingReviews({\n interactives: interactiveIds,\n filters: {\n currentCustomerId: currentUser.data.customerId,\n currentUserId: currentUser.data.id\n }\n })\n );\n \n const dependencies = [ isFetching, filterKey, interactivesPendingReview.isFetching ];\n \n function getInteractiveIds() {\n return interactiveInsights && sharedObjects?.length && sharedObjects.reduce(\n (acc, value) => {\n const isInteractive = value.typeId === MasterType.Interactive;\n\n if (!isInteractive) return acc;\n\n const interactive = value as InteractiveMetadata;\n return [ ...acc, { metadataId: interactive.id, interactiveId: interactive.interactiveId }];\n },\n []\n );\n }\n\n return {\n sentShares,\n sharedObjects,\n shareRecipients,\n interactivesPendingReview: interactivesPendingReview.data,\n isFetching,\n showPartialLoading,\n nextCursor,\n hasMore,\n fetchNext,\n imageCdnUrl: config.data?.imageCdnUrl,\n dependencies\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","formatData","students","map","student","name","profileId","publicUser","mark","answerId","resultId","invalidationKeys","pendingReviews","interactiveResultsReport","Actions","props","orderedActions","actions","sort","a","b","order","buttonActions","moreActions","forEach","button","push","className","length","idx","label","appLink","href","onClick","svgName","svgSize","dropdownToggleSvgSize","tooltip","showSpinner","analyticsData","analyticsOptions","openInNewTab","disabled","iconButton","showBorder","customSize","ariaLabel","title","spanHack","sortComponent","dropdownToggleClassName","actionsDropdownClassName","fetchMore","InsightsDemoRequests","interactive","interactiveMetadata","interactiveResults","videoViews","users","individualHeatmap","aggregateHeatmap","useBatchFetch","itemIds","getRequest","idBatches","setIdBatches","newBatches","find","batch","_id","join","dispatch","state","idBatch","request","shouldFetch","items","isFetching","responses","i","response","v","Object","keys","some","k","getAnalyticsRequestKey","baseKey","sharerId","userIdKey","Array","isArray","groupIdKey","DEMO_INTERACTIVE_STAGING_ID","DEMO_INTERACTIVE_PROD_ID","namespace","InsightsAdminAlert","storage","show","setShow","hasAnalytics","role","phrase","video","analyticsUrl","videoRoute","typeId","getAnalyticsUrl","target","getPhrase","DEMO_INSIGHTS_SHARE","share","objectTypeId","sharedObject","shareRecipients","dateShared","Date","toISOString","viewCount","DEMO_INSIGHTS_APPLINK","application","action","DEMO_INSIGHTS_ACTIONS","group","LanguageService","InsightsTypeFilters","moreFilterOptions","MasterType","moreFiltersSelected","typeIdParams","option","showDropdown","setShowDropdown","moreFilters","setMoreFilters","applyFilter","currentParams","params","Text","InsightTypeFilterButton","typeFilters","Dropdown","onToggle","isShowing","variant","Checkbox","onChange","ArrayHelper","checked","selectedFilter","selected","includes","currentAppLink","newType","newAppLink","getTypePhrase","AppLink","MySharesTableHeading","heading","isFirst","ShareObjectTitle","VideoHelper","canNavigate","subTextPhrase","getSubTextPhrase","VideoSubText","series","location","TitleSubText","entity","ShareViewHelper","actionType","requireMarking","options","smartCount","MySharesTableRow","shareData","shareLinkText","ShareType","ShareLinkHelper","entityTypeId","hasStudentExp","isPasswordProtected","linkExpireDate","privacy","overrideRestrictions","status","yearGroups","SharedObjectImage","object","getObjectAppLink","showVideoMetadata","locationContext","showCollectionMask","showVideoCount","pendingReview","children","SharedToPill","text","imageCdnUrl","getObjectActions","MySharesDemoInsight","isStaging","primaryUrl","demoInteractive","MySharesTableEmptyState","EmptyState","src","ImageUrls","size","getDateShared","recipients","dateCreated","datesShared","r","date1","date2","DateHelper","MySharesTable","sentShares","sharedObjects","groupByDate","interactivesPendingReviews","dependencies","groupByDateShared","interactivesPendingReview","tableData","sharedObjectsMap","reduce","obj","shareRecipientsMap","interactivesPendingReviewsMap","s","objectId","recipient","pendingReviewCount","ShareHelper","hasDemoInsights","PartialRow","PartialMySharesTable","MySharesEmptyState","altText","workflowPhase","descriptor","SignUp","MySharesView","usePermissions","hasPermissions","hasLocalPermissions","hasInsights","useSettings","isPlugin","usePluginHelper","useLockContentWidth","breakpoints","useBreakpoints","typeIdAppLinkParams","queryParams","audienceAppLinkParams","sentSharesParams","recipientUserId","recipientGroupId","classroomGroups","classrooms","undefined","PermissionName","useSharesTable","showPartialLoading","nextCursor","hasMore","fetchNext","useSetPageMetadata","hasClassrooms","config","ConfigRequests","UserRequests","isAuthenticated","CustomerRequests","getSharedObjectActions","audienceParams","audienceParamsKey","JSON","stringify","insightObjectActions","buttonProps","canConsume","args","entityType","eventVersion","getShareObjectActions","useGetShareObjectActions","accessPolicy","useAccessPolicy","showDemoInsight","metadata","analyticsWebUrl","AudienceFilterView","hasClassroomsFeature","InfiniteScrollFooter","getDirectShares","getRecipientIds","d","getBatchFetchResultAsArray","result","values","interactiveInsights","fetch","cursor","ShareRequests","isFetchingSentShares","sharedObjectIds","sharedObjectsFetchResult","ids","recipientIds","shareRecipientsFetchResult","sentShare","hasFetchedSharedObjects","hasFetchedRecipients","initialSharedObjectsLoaded","setInitialSharedObjectsLoaded","initialRecipientsLoaded","setInitialRecipientsLoaded","usePartialLoading","filterKey","interactiveIds","acc","value","metadataId","I","interactives","filters"],"sourceRoot":""}