@clickview/lite 0.66.0-rc.2 → 0.66.0-rc.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/bundles.json +1 -1
- package/dist/scripts/{4359-e928b3edc9-lite.chunk.js → 4359-b3c4a66f9c-lite.chunk.js} +2 -2
- package/dist/scripts/4359-b3c4a66f9c-lite.chunk.js.map +1 -0
- package/dist/scripts/{6965-46edd86c90-lite.chunk.js → 6965-da31a16bb2-lite.chunk.js} +2 -2
- package/dist/scripts/6965-da31a16bb2-lite.chunk.js.map +1 -0
- package/dist/scripts/{bundle-f772739f5d.min.js → bundle-017257413b.min.js} +3 -3
- package/dist/scripts/{bundle-f772739f5d.min.js.map → bundle-017257413b.min.js.map} +1 -1
- package/package.json +1 -1
- package/dist/scripts/4359-e928b3edc9-lite.chunk.js.map +0 -1
- package/dist/scripts/6965-46edd86c90-lite.chunk.js.map +0 -1
- /package/dist/scripts/{bundle-f772739f5d.min.js.LICENSE.txt → bundle-017257413b.min.js.LICENSE.txt} +0 -0
package/dist/bundles.json
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[4359],{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,m){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:m}},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 m="d-flex";return e.className&&(m+=" ".concat(e.className)),n.length||o.length?a.createElement("div",{className:m},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:()=>l});var a=n(20354),r=n(75896);function i(e){return i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},i(e)}function l(e,t){var n=r.m.chunk(e,25).map((function(e){return t(r.m.uniq(e))})),l=a.a.useBasicFetchAll(n);return{items:l.data.length?r.m.flatten(l.data).reduce((function(e,t){return Object.assign(Object.assign({},e),(n={},a=t.id,r=t,(a=function(e){var t=function(e){if("object"!=i(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!=i(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==i(t)?t:t+""}(a))in n?Object.defineProperty(n,a,{value:r,enumerable:!0,configurable:!0,writable:!0}):n[a]=r,n));var n,a,r}),{}):null,isFetching:l.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),m=n(35223),u=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)(u.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.")}()),g=f[0],v=f[1];return e.hasAnalytics&&g?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:m.vn.Close,className:"text-blue",onClick:function(){v(!1)}})):a.createElement(a.Fragment,null)}},9566:(e,t,n)=>{n.d(t,{G:()=>o,e:()=>u});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},m={application:s.O.MY_SHARES,action:l.e.MyShares.INTERACTIVE_OVERVIEW_DEMO},u=[{svgName:i.vn.Analytics,label:c("demoInsights"),appLink:m,group:"insights",button:!0,className:"btn btn-outline-dark"}]},88099:(e,t,n)=>{n.r(t),n.d(t,{MySharesView:()=>Re});var a=n(32735),r=n(81886),i=n(23481),l=n(20354),s=n(26025),c=n(88180),o=n(71020),m=n(83345),u=n(16714),d=n(39151),p=n(1666),f=n(54405),g=n(31949),v=n(25882),y=n(79967),b=n(22902),h=n(79612),E=n(37802),S=n(14070),x=n(97291),k=n(51855),I=n(64208),N=n(86099),w=n(34509),j=n(75896),O=n(36848),A=n(89965),C=n(83914),T=n(4594),L=n(35223);const F={noCaret:"TMpTN"};function M(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 P(e){return function(e){if(Array.isArray(e))return D(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 R(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}}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 U="insights.insightsTypeFilters",B=i.T.encloseNamespace(U);function H(e){var t=e.breakpoints.xs||e.breakpoints.sm,n=[].concat(P(t?[{label:B("interactives"),filter:T.E.Interactive},{label:B("videos"),filter:T.E.Video},{label:B("clips"),filter:T.E.Clip}]:[]),[{label:B("playlists"),filter:T.E.Playlist},{label:B("series"),filter:T.E.Series}]),i=e.typeIdParams.filter((function(e){return n.some((function(t){return e===t.filter}))})),l=M(a.useState(!1),2),s=l[0],c=l[1],o=M(a.useState(i),2),u=o[0],d=o[1];function p(){var t=e.appLink.params;r.Q.C$.trigger(Object.assign(Object.assign({},e.appLink),{params:Object.assign(Object.assign({},t),{typeId:j.m.uniq([].concat(P(e.typeIdParams),P(u)))})}))}function f(){d([]);var t=e.appLink.params;r.Q.C$.trigger(Object.assign(Object.assign({},e.appLink),{params:Object.assign(Object.assign({},t),{typeId:[]})}))}return a.createElement("div",{className:"d-flex align-items-center fw-semibold"},a.createElement("p",{className:"d-none d-md-inline h6 mb-0"},a.createElement(m.x,{namespace:U,phrase:"filters"})),a.createElement("div",{className:"d-flex flex-grow-1 flex-md-grow-0 border-md-start border-light ps-0 ps-md-3 ms-0 ms-md-3 gap-2"},a.createElement("div",{className:"d-none d-md-flex gap-2"},a.createElement(V,{typeId:T.E.Interactive,typeFilters:e.typeIdParams,appLink:e.appLink}),a.createElement(V,{typeId:T.E.Video,typeFilters:e.typeIdParams,appLink:e.appLink}),a.createElement(V,{typeId:T.E.Clip,typeFilters:e.typeIdParams,appLink:e.appLink})),a.createElement(w.Z,{onToggle:function(e){c(e),e||p()},show:s,className:"col"},a.createElement(w.Z.Toggle,{className:"".concat(F.noCaret," col-12 col-md-auto"),variant:i.length?"dark":"outline-dark"},a.createElement("div",{className:"d-flex align-items-center justify-content-center gap-2 fw-semibold mb-0"},a.createElement(C.x,{svgName:L.vn.Filter,className:"svg-container d-inline-block d-md-none"}),a.createElement(m.x,{namespace:U,phrase:t?"filters":"moreFilters"}),i.length?" - ".concat(i.length):"")),a.createElement(w.Z.Menu,null,a.createElement("div",{className:"mx-1 px-2 py-1 mb-0"},a.createElement("h2",{className:"h6 mb-3"},a.createElement(m.x,{namespace:U,phrase:"types"})),a.createElement("ul",{className:"list-unstyled me-5"},n.map((function(n){return a.createElement("li",{key:"".concat(n.label,"-filter"),className:"my-1"},a.createElement(A.X,{id:"".concat(n.label,"-filter"),label:n.label,onChange:function(){return e=n.filter,void d(j.m.addOrRemoveImmutable(u,e));var e},checked:(r=n.filter,t?!!u.find((function(e){return e===r}))||!!e.typeIdParams.find((function(e){return e===r})):!!u.find((function(e){return e===r})))}));var r}))),a.createElement("div",{className:"d-flex justify-content-between"},a.createElement("button",{onClick:function(){f(),c(!1)},className:"btn btn-link text-secondary p-0 mb-0"},a.createElement(m.x,{namespace:U,phrase:"resetAll"})),a.createElement("button",{onClick:function(){p(),c(!1)},className:"btn btn-link text-info p-0 mb-0"},a.createElement(m.x,{namespace:U,phrase:"apply"}))))))),!!e.typeIdParams.length&&a.createElement("button",{onClick:f,className:"d-none d-md-block btn btn-link ms-1"},a.createElement(m.x,{namespace:U,phrase:"resetAll"})))}function V(e){var t=e.typeFilters.includes(e.typeId),n=e.appLink,r=n.params,i=j.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(O.F,{className:"btn ".concat(t?"btn-dark":"btn-outline-dark"," fw-semibold"),appLink:l,ariaLabel:"".concat(B("ariaFilterBy"),": ").concat(B(s()))},a.createElement(m.x,{namespace:U,phrase:s()}))}var z=n(11293),_=n(8807),G=n(82602),q=n(65858),W=n(29024),Y=n(65853),$=n(64249),Z=n(83657),K=n(60995),Q=n(11882),X=n(54610),J=n(85063),ee=n(31908),te=n(24758);const ne={mySharesTable:"hyaYe",mySharesHeader:"WjfsD",tableBorder:"tHBWr"};var ae="myShares.tableRow";function re(e){return a.createElement("div",{className:"".concat(ne.mySharesHeader," d-block d-lg-grid 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",{className:"d-none d-xl-inline"}),a.createElement("p",{className:"d-none d-xl-inline fw-semibold mb-2"},a.createElement(m.x,{namespace:ae,phrase:"sharedToHeading"})),a.createElement("p",{className:"d-none d-xl-inline fw-semibold mb-2"},a.createElement(m.x,{namespace:ae,phrase:"dateSharedHeading"})),a.createElement("p",{className:"d-none d-xl-inline fw-semibold mb-2"},a.createElement(m.x,{namespace:ae,phrase:"viewsHeading"}))))}function ie(e){var t,n=e.sharedObject;if(!n.name)return a.createElement(m.x,{namespace:ae,phrase:"videoUnavailable"});if(ee.M.isVideoType(n)&&!(null===(t=ee.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,ee.M.isVideoType(n)&&a.createElement(Q.$,{type:"series",video:n,appLink:"series"in n&&n.series?(0,N.Qh)(n.series):null,analyticsOptions:{location:q.LZ.Insights},className:"d-inline clamp-1"}),r&&a.createElement(K.m,null,a.createElement(m.x,{namespace:ae,phrase:r})),a.createElement(O.F,{appLink:e.appLink,className:"clamp-1",analyticsData:{id:n.id,name:n.name},analyticsOptions:{entity:$.I.getAnalyticsEntity(n.type),actionType:q.Vw.Click,location:q.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(m.x,{namespace:ae,phrase:"requireMarking",options:{smartCount:e.requireMarking}})))}function le(e){var t=e.shareData,n=t.sharedObject,r=t.share.type===J.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}),i=e.breakpoints.xs||e.breakpoints.sm,l=e.breakpoints.xl||e.breakpoints.xxl,s=n.typeId===T.E.Playlist||n.typeId===T.E.Series;return a.createElement("div",{key:t.share.id,className:"".concat(ne.mySharesTable," ").concat(ne.tableBorder," position-relative d-flex d-xl-grid flex-column flex-md-row align-items-md-center p-0 p-md-3 gap-3")},a.createElement("div",{className:"col-12 col-md-3 col-xl-auto"},a.createElement(W.k,{object:n,appLink:e.getObjectAppLink(n),showVideoMetadata:!0,locationContext:q.LZ.MyShares,imageOptions:{size:X.h2.Medium},requireMarking:i&&t.pendingReview,showCollectionMask:!0,showVideoCount:!0})),a.createElement("div",{className:"d-flex flex-column align-items-xl-center flex-xl-row gap-1 gap-xl-3"},a.createElement("div",{className:"col-xl-4"},a.createElement(ie,{sharedObject:t.sharedObject,appLink:e.getObjectAppLink(n),requireMarking:l&&t.pendingReview})),e.children,a.createElement("div",{className:"d-flex align-items-center gap-2 gap-xl-0 pe-4 pe-md-0 col-xl-8"},a.createElement("div",{className:"col-xl-5"},a.createElement(te.A,{shareLinkText:null==r?void 0:r.text,shareRecipients:t.shareRecipients,imageCdnUrl:e.imageCdnUrl})),a.createElement("span",{className:"d-inline d-xl-none"},"·"),a.createElement("p",{className:"mb-0 col-xl-4"},(0,G.WU)(t.dateShared)),s?a.createElement("p",{className:"mb-0 d-none d-xl-block"},"-"):a.createElement(a.Fragment,null,a.createElement("span",{className:"d-inline d-xl-none"},"·"),a.createElement("p",{className:"mb-0 col-xl-3"},a.createElement(m.x,{namespace:ae,phrase:"views",options:{smartCount:t.viewCount}})))),!l&&!i&&!!t.pendingReview&&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(m.x,{namespace:ae,phrase:"requireMarking",options:{smartCount:t.pendingReview}}))),a.createElement(Z.e,{className:"position-absolute bottom-0 end-0 position-md-static justify-content-end gap-2 ms-auto",actionsDropdownClassName:"btn-outline-dark rounded py-2",dropdownToggleSvgSize:C.S.Standard,actions:e.getObjectActions(n)}))}var se=n(9566),ce="myShares.demoInsights",oe=i.T.encloseNamespace(ce);function me(e){var t=e.liteUrl.includes("staging");return a.createElement("div",null,a.createElement(re,{heading:oe("demoHeading"),isFirst:!0}),a.createElement("div",{className:"rounded-3 border border-light bg-light-orange mb-4"},a.createElement(le,{shareData:Object.assign(Object.assign({},se.G),{sharedObject:Object.assign(Object.assign({},e.demoInteractive),{id:t?_.c:_.q})}),getObjectActions:function(){return se.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(m.x,{namespace:ce,phrase:"demoInsightPill"})))))}var ue=n(23232),de=n(99742),pe=i.T.encloseNamespace("myShares.mySharesTableEmptyState");function fe(){return a.createElement(ue.u,null,a.createElement(ue.u.Image,{src:de.W.EmptyStates.Share.SHARED_BY_ME,size:"small"}),a.createElement(ue.u.Heading,null,pe("heading")),a.createElement(ue.u.Info,null,pe("info")),a.createElement(ue.u.Cta,{appLink:{application:x.O.DASHBOARD,action:S.e.Dashboard.HOME},text:pe("cta")}))}var ge=n(110),ve=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 be(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 he(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 Ee=i.T.encloseNamespace("myShares.mySharesTable");function Se(e){var t;if(e.type===J.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 ge.O.isSame(e,t)?0:ge.O.isAfter(e,t)?1:-2})),n.length?j.m.last(n):""}function xe(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(he({},t.id,t),e)}),{}),s=r.reduce((function(e,t){return Object.assign(he({},t.id,t),e)}),{}),c=null==l?void 0:l.reduce((function(e,t){return Object.assign(he({},t.interactiveId,t),e)}),{});return t.forEach((function(t){var n,r,i=a[t.objectId],l=null;if(t.type===J.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:Se(t),viewCount:null!==(r=t.viewCount)&&void 0!==r?r:0,pendingReview:null==o?void 0:o.pendingReviewCount},t.type===J.y.ShareLink?{privacy:t.privacy,overrideRestrictions:t.overrideRestrictions}:{}))}})),i?ve.x.groupByDateShared(e):he({},Ee("title"),e)}),function(e){if(Array.isArray(e))return be(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 be(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)?be(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(re,{heading:t,isFirst:!e.hasDemoInsights&&0===n}),a.createElement("div",{className:"d-flex flex-column rounded-3 mb-4 gap-4 gap-md-0 border-md border-light"},o[t].map((function(t){return a.createElement(le,{key:t.share.id,shareData:t,yearGroups:e.yearGroups,getObjectActions:e.getObjectActions,getObjectAppLink:e.getObjectAppLink,imageCdnUrl:e.imageCdnUrl,breakpoints:e.breakpoints})}))))})))}const ke={table:"elIjR",tableHeader:"xJKgP",heading:"iWHol",image:"TMQxq",avatar:"_3GY1C",date:"nz3va",views:"FpDfX",actions:"pOtyK"};function Ie(){return a.createElement("div",{className:"".concat(ke.table," position-relative d-flex d-xl-grid flex-column flex-md-row align-items-md-center p-0 p-md-3 gap-3")},a.createElement("div",{className:"col-12 col-md-3 col-xl-auto"},a.createElement("div",{className:"partial-loading-background rounded ratio ratio-16x9 "})),a.createElement("div",{className:"d-flex flex-column align-items-xl-center flex-xl-row gap-1 gap-xl-3"},a.createElement("div",{className:"partial-loading-background col-8 col-xl-4"}," "),a.createElement("div",{className:"d-flex align-items-center gap-2 gap-xl-0 pe-4 pe-md-0 col-xl-8"},a.createElement("div",{className:"col-xl-5"},a.createElement("div",{className:"".concat(ke.avatar," partial-loading-background rounded-pill col-xl-8")})),a.createElement("div",{className:"col-xl-4"},a.createElement("div",{className:"".concat(ke.date," partial-loading-background")}," ")),a.createElement("div",{className:"col-xl-3"},a.createElement("div",{className:"".concat(ke.views," partial-loading-background")}," ")))),a.createElement("div",{className:"position-absolute bottom-0 end-0 position-md-static d-flex justify-content-end gap-2 ms-auto col col-xl-12"},a.createElement("div",{className:"".concat(ke.actions," partial-loading-background rounded d-none d-md-block px-3 p-lg-0 col-lg-6")}),a.createElement("div",{className:"".concat(ke.actions," partial-loading-background rounded px-3 p-lg-0 col-lg-4")})))}function Ne(){return a.createElement(a.Fragment,null,a.createElement("div",{className:"mb-3"},a.createElement("div",{className:"no-full-width"},a.createElement("div",{className:"".concat(ke.table," d-block d-xl-grid gap-3 px-3")},a.createElement("div",{className:"partial-loading-background mb-2 ms-n3 ".concat(ke.date)}," "),a.createElement("div",{className:"d-flex flex-column align-items-xl-center flex-xl-row gap-1 gap-xl-3"},a.createElement("div",{className:"col-xl-4"}),a.createElement("div",{className:"d-flex align-items-center gap-2 gap-xl-0 pe-4 pe-md-0 col-xl-8"},a.createElement("div",{className:"col-xl-5"},a.createElement("div",{className:"d-none d-xl-inline-block partial-loading-background mb-2 ".concat(ke.date)}," ")),a.createElement("div",{className:"col-xl-4"},a.createElement("div",{className:"d-none d-xl-inline-block partial-loading-background mb-2 ".concat(ke.date)}," ")),a.createElement("div",{className:"col-xl-3"},a.createElement("div",{className:"d-none d-xl-inline-block partial-loading-background mb-2 ".concat(ke.date)}," "))))),a.createElement("div",{className:"d-flex flex-column rounded-3 mb-4 gap-4 gap-md-0 border-md border-light"},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(ke.date)}," "),a.createElement("div",{className:"d-flex flex-column rounded-3 mb-4 gap-4 gap-md-0 border-md border-light"},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(ke.date)}," "),a.createElement("div",{className:"d-flex flex-column rounded-3 mb-4 gap-4 gap-md-0 border-md border-light"},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(ue.u,null,a.createElement(ue.u.Image,{src:de.W.EmptyStates.MY_VIDEOS_PUBLIC,altText:je("heading")}),a.createElement(ue.u.Heading,null,a.createElement(m.x,{namespace:we,phrase:"heading"})),a.createElement(ue.u.Info,null,a.createElement(m.x,{namespace:we,phrase:"info"})),a.createElement(ue.u.Cta,{text:i.T.getPhrase(we,"cta"),appLink:{application:x.O.SIGN_UP,action:S.e.SignUp.SIGN_UP},analyticsData:{},analyticsOptions:{actionType:q.Vw.Click,location:q.LZ.MySharesLanding,entity:q.py.AppLink,workflowPhase:q.eu.Start,descriptor:q.Yu.SignUp}}))}function Ae(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 Ce=i.T.encloseNamespace("myShares.myShares");function Te(e,t,n,r){var i,l=JSON.stringify(e);return a.useCallback((function(a){return function(e,t,n,a,r){var i=[],l={button:!(r.xs||r.sm),className:"btn btn-outline-dark"};if(ee.M.isVideoType(e)){if(!ee.M.getCanBeConsumed(e).canConsume)return[];if(a)return[Object.assign(Object.assign({label:Ce("embedVideo"),appLink:{application:x.O.DEFAULT,action:S.e.Default.PLUGIN_SHARE,args:[e.id],params:{entityType:e.type}}},l),{analyticsOptions:{actionType:q.Vw.Share,descriptor:q.YM.PluginEmbed,workflowPhase:q.eu.Start,eventVersion:q.eq.V5}})];n&&i.push(Object.assign({svgName:L.vn.Analytics,label:!r.md&&Ce("viewInsights"),tooltip:r.md&&Ce("viewInsights"),appLink:Object.assign(Object.assign({},(0,N.Dw)(e)),{params:t}),group:"insights"},l))}return i.push(Object.assign({label:!r.md&&Ce("share"),tooltip:r.md&&Ce("share"),svgName:L.vn.Share,appLink:(0,N.YK)(e),group:"share"},l)),i}(a,e,t,n,r)}),[l].concat(function(e){if(Array.isArray(e))return Ae(e)}(i=Object.values(r||{}))||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(i)||function(e,t){if(e){if("string"==typeof e)return Ae(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)?Ae(e,t):void 0}}(i)||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 Le(e){return function(e){if(Array.isArray(e))return Fe(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 Fe(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)?Fe(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 Fe(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 Me="myShares.myShares",Pe=i.T.encloseNamespace(Me);function Re(e){var t,n,i,w,j,O,A=(0,b.T)(),C=A.hasPermissions,T=A.hasLocalPermissions,L=(0,E.r)(null).hasInsights,F=(0,k.G)().isPlugin,M=(0,y.k)(),P=(O=null==(j=e.queryParams)?void 0:j.typeId)?"string"==typeof O?[+O]:(null==j?void 0:j.typeId.map((function(e){return+e})))||[]:[],R=s.B.getAudienceAppLinkParams(),D={application:x.O.MY_SHARES,action:S.e.MyShares.HOME,params:Object.assign(Object.assign({},R),{typeId:P})},U={recipientUserId:null==R?void 0:R.users,recipientGroupId:[].concat(Le((null==R?void 0:R.classroomGroups)||[]),Le((null==R?void 0:R.classrooms)||[])),objectTypeId:P.length?P:void 0},B=!T(u.E.ViewMySharesLanding)||C(u.C.ViewMyShares)&&L,V=(0,I.aH)(U,!0,B),_=V.sentShares,G=V.sharedObjects,q=V.shareRecipients,W=V.interactivesPendingReview,Y=V.isFetching,$=V.showPartialLoading,Z=V.nextCursor,K=V.hasMore,Q=V.fetchNext,X=V.imageCdnUrl,J=V.dependencies;(0,h.M)({title:Pe("myShares")});var ee=(0,E.r)(null).hasClassrooms,te=l.a.useBasicFetch(d.L.config()),ne=l.a.useBasicFetch(g.N.currentUser()),ae=l.a.useBasicFetch((null===(t=ne.data)||void 0===t?void 0:t.isAuthenticated)&&p.h.yearGroups(ne.data.customerId)),re=Te(R,L&&C(u.C.ViewInsights),F,M),ie=(0,v.v)().accessPolicy,le=null===(n=null==ie?void 0:ie.metadata)||void 0===n?void 0:n.hasDemoInsights,se=l.a.useBasicFetch(le&&f.X.interactiveMetadata());return a.useEffect((function(){C(u.C.ViewMyShares)&&L||r.Q.Ab.PageLoad("/")}),[B]),B?a.createElement("div",{className:"px-3"},a.createElement(z.p,{analyticsUrl:null===(i=te.data)||void 0===i?void 0:i.analyticsWebUrl,hasAnalytics:C(u.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(m.x,{namespace:Me,phrase:"myShares"})),a.createElement(c.B,{hasClassroomsFeature:ee})),a.createElement("div",{className:"mb-3"},a.createElement(H,{appLink:D,typeIdParams:P,breakpoints:M})),le&&se.data&&a.createElement(me,{demoInteractive:se.data,liteUrl:null===(w=te.data)||void 0===w?void 0:w.liteUrl}),$?a.createElement(Ne,null):_.length?a.createElement(a.Fragment,null,a.createElement(xe,{sentShares:_,sharedObjects:G,shareRecipients:q,interactivesPendingReview:W,getObjectAppLink:N.Qh,getObjectActions:re,imageCdnUrl:X,groupByDateShared:!0,dependencies:J,breakpoints:M,yearGroups:ae.data,hasDemoInsights:le}),(K||Y)&&a.createElement(o._,{isFetching:Y,fetchNext:Q,nextCursor:Z})):a.createElement(fe,null)):a.createElement(Oe,null)}},64208:(e,t,n)=>{n.d(t,{aH:()=>E});var a=n(32735),r=n(20354),i=n(1048),l=n(71553),s=n(30439),c=n(4594),o=n(39151),m=n(31949),u=n(39902),d=n(60115),p=n(75896),f=n(85063),g={getDirectShares:function(e){var t;return null!==(t=null==e?void 0:e.filter((function(e){return e.type===f.y.DirectShare})))&&void 0!==t?t:[]},getRecipientIds:function(e){return p.m.uniq(p.m.flatten(g.getDirectShares(e).map((function(e){var t;return null!==(t=e.recipients)&&void 0!==t?t:[]}))),"id").map((function(e){return e.id}))}};function v(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)||y(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 y(e,t){if(e){if("string"==typeof e)return b(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)?b(e,t):void 0}}function b(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 E(e,t){var n,p,f=!(arguments.length>2&&void 0!==arguments[2])||arguments[2],E=r.a.useGetFetch(),S=r.a.useBasicFetch(m.N.currentUser()),x=function(t){return f&&s.o.sentShare(Object.assign({cursor:t},e))},k=function(e){return E(x(e))},I=(0,d.K)(x,k),N=I.items,w=I.hasMore,j=I.isFetching,O=I.nextCursor,A=null!==(n=null==N?void 0:N.map((function(e){return e.objectId})))&&void 0!==n?n:[],C=(0,u.f)(A,(function(e){return s.o.sharedObjectsById(e)})),T=g.getRecipientIds(N),L=(0,u.f)(T,(function(e){return s.o.getRecipientsById(e,S.data.customerId)})),F=r.a.useBasicFetch(o.L.config()),M=JSON.stringify(e),P=function(e,t,n,r,i){var l=v(a.useState(!!t.items),2),s=l[0],c=l[1],o=v(a.useState(!!r.items),2),m=o[0],u=o[1];return a.useEffect((function(){c(!1),u(!1)}),[i]),a.useEffect((function(){!t.isFetching&&t.items&&c(!0)}),[t.isFetching,i]),a.useEffect((function(){!r.isFetching&&r.items&&u(!0)}),[r.isFetching,i]),!(e&&!e.length)&&(!e||!s||n.length&&!m)}(N,C,T,L,M),R=j||C.isFetching||L.isFetching,D=h(C),U=v(a.useState(h(L)),2),B=U[0],H=U[1];a.useEffect((function(){i.t.isEmpty(L.items)||H(h(L))}),[!!L.items,L.isFetching,M]);var V=t&&(null==D?void 0:D.length)&&D.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 b(e)}(n=e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(n)||y(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}])}),[]),z=r.a.useBasicFetch(t&&!!C.items&&S.data&&l.I.pendingReviews({interactives:V,filters:{currentCustomerId:S.data.customerId,currentUserId:S.data.id}})),_=[R,M,z.isFetching,B.length];return{sentShares:N,sharedObjects:D,shareRecipients:B,interactivesPendingReview:z.data,isFetching:R,showPartialLoading:P,nextCursor:O,hasMore:w,fetchNext:k,imageCdnUrl:null===(p=F.data)||void 0===p?void 0:p.imageCdnUrl,dependencies:_}}}}]);
|
|
2
|
-
//# sourceMappingURL=4359-
|
|
1
|
+
"use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[4359],{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,m){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:m}},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 m="d-flex";return e.className&&(m+=" ".concat(e.className)),n.length||o.length?a.createElement("div",{className:m},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:()=>l});var a=n(20354),r=n(75896);function i(e){return i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},i(e)}function l(e,t){var n=r.m.chunk(e,25).map((function(e){return t(r.m.uniq(e))})),l=a.a.useBasicFetchAll(n);return{items:l.data.length?r.m.flatten(l.data).reduce((function(e,t){return Object.assign(Object.assign({},e),(n={},a=t.id,r=t,(a=function(e){var t=function(e){if("object"!=i(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!=i(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==i(t)?t:t+""}(a))in n?Object.defineProperty(n,a,{value:r,enumerable:!0,configurable:!0,writable:!0}):n[a]=r,n));var n,a,r}),{}):null,isFetching:l.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),m=n(35223),u=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)(u.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.")}()),g=f[0],v=f[1];return e.hasAnalytics&&g?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:m.vn.Close,className:"text-blue",onClick:function(){v(!1)}})):a.createElement(a.Fragment,null)}},9566:(e,t,n)=>{n.d(t,{G:()=>o,e:()=>u});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},m={application:s.O.MY_SHARES,action:l.e.MyShares.INTERACTIVE_OVERVIEW_DEMO},u=[{svgName:i.vn.Analytics,label:c("demoInsights"),appLink:m,group:"insights",button:!0,className:"btn btn-outline-dark"}]},88099:(e,t,n)=>{n.r(t),n.d(t,{MySharesView:()=>Re});var a=n(32735),r=n(81886),i=n(23481),l=n(20354),s=n(26025),c=n(88180),o=n(71020),m=n(83345),u=n(16714),d=n(39151),p=n(1666),f=n(54405),g=n(31949),v=n(25882),y=n(79967),b=n(22902),h=n(79612),E=n(37802),S=n(14070),x=n(97291),k=n(51855),I=n(64208),N=n(86099),w=n(34509),j=n(75896),O=n(36848),A=n(89965),C=n(83914),T=n(4594),L=n(35223);const M={noCaret:"TMpTN"};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 P(e){return function(e){if(Array.isArray(e))return D(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 R(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}}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 U="insights.insightsTypeFilters",B=i.T.encloseNamespace(U);function H(e){var t=e.breakpoints.xs||e.breakpoints.sm,n=[].concat(P(t?[{label:B("interactives"),filter:T.E.Interactive},{label:B("videos"),filter:T.E.Video},{label:B("clips"),filter:T.E.Clip}]:[]),[{label:B("playlists"),filter:T.E.Playlist},{label:B("series"),filter:T.E.Series}]),i=e.typeIdParams.filter((function(e){return n.some((function(t){return e===t.filter}))})),l=F(a.useState(!1),2),s=l[0],c=l[1],o=F(a.useState(i),2),u=o[0],d=o[1];function p(){var t=e.appLink.params;r.Q.C$.trigger(Object.assign(Object.assign({},e.appLink),{params:Object.assign(Object.assign({},t),{typeId:j.m.uniq([].concat(P(e.typeIdParams),P(u)))})}))}function f(){d([]);var t=e.appLink.params;r.Q.C$.trigger(Object.assign(Object.assign({},e.appLink),{params:Object.assign(Object.assign({},t),{typeId:[]})}))}return a.createElement("div",{className:"d-flex align-items-center fw-semibold"},a.createElement("p",{className:"d-none d-md-inline h6 mb-0"},a.createElement(m.x,{namespace:U,phrase:"filters"})),a.createElement("div",{className:"d-flex flex-grow-1 flex-md-grow-0 border-md-start border-light ps-0 ps-md-3 ms-0 ms-md-3 gap-2"},a.createElement("div",{className:"d-none d-md-flex gap-2"},a.createElement(V,{typeId:T.E.Interactive,typeFilters:e.typeIdParams,appLink:e.appLink}),a.createElement(V,{typeId:T.E.Video,typeFilters:e.typeIdParams,appLink:e.appLink}),a.createElement(V,{typeId:T.E.Clip,typeFilters:e.typeIdParams,appLink:e.appLink})),a.createElement(w.Z,{onToggle:function(e){c(e),e||p()},show:s,className:"col"},a.createElement(w.Z.Toggle,{className:"".concat(M.noCaret," col-12 col-md-auto"),variant:i.length?"dark":"outline-dark"},a.createElement("div",{className:"d-flex align-items-center justify-content-center gap-2 fw-semibold mb-0"},a.createElement(C.x,{svgName:L.vn.Filter,className:"svg-container d-inline-block d-md-none"}),a.createElement(m.x,{namespace:U,phrase:t?"filters":"moreFilters"}),i.length?" - ".concat(i.length):"")),a.createElement(w.Z.Menu,null,a.createElement("div",{className:"mx-1 px-2 py-1 mb-0"},a.createElement("h2",{className:"h6 mb-3"},a.createElement(m.x,{namespace:U,phrase:"types"})),a.createElement("ul",{className:"list-unstyled me-5"},n.map((function(n){return a.createElement("li",{key:"".concat(n.label,"-filter"),className:"my-1"},a.createElement(A.X,{id:"".concat(n.label,"-filter"),label:n.label,onChange:function(){return e=n.filter,void d(j.m.addOrRemoveImmutable(u,e));var e},checked:(r=n.filter,t?!!u.find((function(e){return e===r}))||!!e.typeIdParams.find((function(e){return e===r})):!!u.find((function(e){return e===r})))}));var r}))),a.createElement("div",{className:"d-flex justify-content-between"},a.createElement("button",{onClick:function(){f(),c(!1)},className:"btn btn-link text-secondary p-0 mb-0"},a.createElement(m.x,{namespace:U,phrase:"resetAll"})),a.createElement("button",{onClick:function(){p(),c(!1)},className:"btn btn-link text-info p-0 mb-0"},a.createElement(m.x,{namespace:U,phrase:"apply"}))))))),!!e.typeIdParams.length&&a.createElement("button",{onClick:f,className:"d-none d-md-block btn btn-link ms-1"},a.createElement(m.x,{namespace:U,phrase:"resetAll"})))}function V(e){var t=e.typeFilters.includes(e.typeId),n=e.appLink,r=n.params,i=j.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(O.F,{className:"btn ".concat(t?"btn-dark":"btn-outline-dark"," fw-semibold"),appLink:l,ariaLabel:"".concat(B("ariaFilterBy"),": ").concat(B(s()))},a.createElement(m.x,{namespace:U,phrase:s()}))}var z=n(11293),_=n(8807),G=n(82602),q=n(65858),W=n(29024),Y=n(65853),$=n(64249),Z=n(83657),K=n(60995),Q=n(11882),X=n(54610),J=n(85063),ee=n(31908),te=n(24758);const ne={mySharesTable:"hyaYe",mySharesHeader:"WjfsD",tableBorder:"tHBWr"};var ae="myShares.tableRow";function re(e){return a.createElement("div",{className:"".concat(ne.mySharesHeader," d-block d-lg-grid 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",{className:"d-none d-xl-inline"}),a.createElement("p",{className:"d-none d-xl-inline fw-semibold mb-2"},a.createElement(m.x,{namespace:ae,phrase:"sharedToHeading"})),a.createElement("p",{className:"d-none d-xl-inline fw-semibold mb-2"},a.createElement(m.x,{namespace:ae,phrase:"dateSharedHeading"})),a.createElement("p",{className:"d-none d-xl-inline fw-semibold mb-2"},a.createElement(m.x,{namespace:ae,phrase:"viewsHeading"}))))}function ie(e){var t,n=e.sharedObject;if(!n.name)return a.createElement(m.x,{namespace:ae,phrase:"videoUnavailable"});if(ee.M.isVideoType(n)&&!(null===(t=ee.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,ee.M.isVideoType(n)&&a.createElement(Q.$,{type:"series",video:n,appLink:"series"in n&&n.series?(0,N.Qh)(n.series):null,analyticsOptions:{location:q.LZ.Insights},className:"d-inline clamp-1"}),r&&a.createElement(K.m,null,a.createElement(m.x,{namespace:ae,phrase:r})),a.createElement(O.F,{appLink:e.appLink,className:"clamp-1",analyticsData:{id:n.id,name:n.name},analyticsOptions:{entity:$.I.getAnalyticsEntity(n.type),actionType:q.Vw.Click,location:q.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(m.x,{namespace:ae,phrase:"requireMarking",options:{smartCount:e.requireMarking}})))}function le(e){var t=e.shareData,n=t.sharedObject,r=t.share.type===J.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}),i=e.breakpoints.xs||e.breakpoints.sm,l=e.breakpoints.xl||e.breakpoints.xxl,s=n.typeId===T.E.Playlist||n.typeId===T.E.Series;return a.createElement("div",{key:t.share.id,className:"".concat(ne.mySharesTable," ").concat(ne.tableBorder," position-relative d-flex d-xl-grid flex-column flex-md-row align-items-md-center p-0 p-md-3 gap-3")},a.createElement("div",{className:"col-12 col-md-3 col-xl-auto"},a.createElement(W.k,{object:n,appLink:e.getObjectAppLink(n),showVideoMetadata:!0,locationContext:q.LZ.MyShares,imageOptions:{size:X.h2.Medium},requireMarking:i&&t.pendingReview,showCollectionMask:!0,showVideoCount:!0})),a.createElement("div",{className:"d-flex flex-column align-items-xl-center flex-xl-row gap-1 gap-xl-3"},a.createElement("div",{className:"col-xl-4"},a.createElement(ie,{sharedObject:t.sharedObject,appLink:e.getObjectAppLink(n),requireMarking:l&&t.pendingReview})),e.children,a.createElement("div",{className:"d-flex align-items-center gap-2 gap-xl-0 pe-4 pe-md-0 col-xl-8"},a.createElement("div",{className:"col-xl-5"},a.createElement(te.A,{shareLinkText:null==r?void 0:r.text,shareRecipients:t.shareRecipients,imageCdnUrl:e.imageCdnUrl})),a.createElement("span",{className:"d-inline d-xl-none"},"·"),a.createElement("p",{className:"mb-0 col-xl-4"},(0,G.WU)(t.dateShared)),s?a.createElement("p",{className:"mb-0 d-none d-xl-block"},"-"):a.createElement(a.Fragment,null,a.createElement("span",{className:"d-inline d-xl-none"},"·"),a.createElement("p",{className:"mb-0 col-xl-3"},a.createElement(m.x,{namespace:ae,phrase:"views",options:{smartCount:t.viewCount}})))),!l&&!i&&!!t.pendingReview&&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(m.x,{namespace:ae,phrase:"requireMarking",options:{smartCount:t.pendingReview}}))),a.createElement(Z.e,{className:"position-absolute bottom-0 end-0 position-md-static justify-content-end gap-2 ms-auto",actionsDropdownClassName:"btn-outline-dark rounded py-2",dropdownToggleSvgSize:C.S.Standard,actions:e.getObjectActions(n)}))}var se=n(9566),ce="myShares.demoInsights",oe=i.T.encloseNamespace(ce);function me(e){var t=e.liteUrl.includes("staging");return a.createElement("div",null,a.createElement(re,{heading:oe("demoHeading"),isFirst:!0}),a.createElement("div",{className:"rounded-3 border border-light bg-light-orange mb-4"},a.createElement(le,{shareData:Object.assign(Object.assign({},se.G),{sharedObject:Object.assign(Object.assign({},e.demoInteractive),{id:t?_.c:_.q})}),getObjectActions:function(){return se.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(m.x,{namespace:ce,phrase:"demoInsightPill"})))))}var ue=n(23232),de=n(99742),pe=i.T.encloseNamespace("myShares.mySharesTableEmptyState");function fe(){return a.createElement(ue.u,null,a.createElement(ue.u.Image,{src:de.W.EmptyStates.Share.SHARED_BY_ME,size:"small"}),a.createElement(ue.u.Heading,null,pe("heading")),a.createElement(ue.u.Info,null,pe("info")),a.createElement(ue.u.Cta,{appLink:{application:x.O.DASHBOARD,action:S.e.Dashboard.HOME},text:pe("cta")}))}var ge=n(110),ve=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 be(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 he(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 Ee=i.T.encloseNamespace("myShares.mySharesTable");function Se(e){var t;if(e.type===J.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 ge.O.isSame(e,t)?0:ge.O.isAfter(e,t)?1:-2})),n.length?j.m.last(n):""}function xe(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(he({},t.id,t),e)}),{}),s=r.reduce((function(e,t){return Object.assign(he({},t.id,t),e)}),{}),c=null==l?void 0:l.reduce((function(e,t){return Object.assign(he({},t.interactiveId,t),e)}),{});return t.forEach((function(t){var n,r,i=a[t.objectId],l=null;if(t.type===J.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:Se(t),viewCount:null!==(r=t.viewCount)&&void 0!==r?r:0,pendingReview:null==o?void 0:o.pendingReviewCount},t.type===J.y.ShareLink?{privacy:t.privacy,overrideRestrictions:t.overrideRestrictions}:{}))}})),i?ve.x.groupByDateShared(e):he({},Ee("title"),e)}),function(e){if(Array.isArray(e))return be(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 be(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)?be(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(re,{heading:t,isFirst:!e.hasDemoInsights&&0===n}),a.createElement("div",{className:"d-flex flex-column rounded-3 mb-4 gap-4 gap-md-0 border-md border-light"},o[t].map((function(t){return a.createElement(le,{key:t.share.id,shareData:t,yearGroups:e.yearGroups,getObjectActions:e.getObjectActions,getObjectAppLink:e.getObjectAppLink,imageCdnUrl:e.imageCdnUrl,breakpoints:e.breakpoints})}))))})))}const ke={table:"elIjR",tableHeader:"xJKgP",heading:"iWHol",image:"TMQxq",avatar:"_3GY1C",date:"nz3va",views:"FpDfX",actions:"pOtyK"};function Ie(){return a.createElement("div",{className:"".concat(ke.table," position-relative d-flex d-xl-grid flex-column flex-md-row align-items-md-center p-0 p-md-3 gap-3")},a.createElement("div",{className:"col-12 col-md-3 col-xl-auto"},a.createElement("div",{className:"partial-loading-background rounded ratio ratio-16x9 "})),a.createElement("div",{className:"d-flex flex-column align-items-xl-center flex-xl-row gap-1 gap-xl-3"},a.createElement("div",{className:"partial-loading-background col-8 col-xl-4"}," "),a.createElement("div",{className:"d-flex align-items-center gap-2 gap-xl-0 pe-4 pe-md-0 col-xl-8"},a.createElement("div",{className:"col-xl-5"},a.createElement("div",{className:"".concat(ke.avatar," partial-loading-background rounded-pill col-xl-8")})),a.createElement("div",{className:"col-xl-4"},a.createElement("div",{className:"".concat(ke.date," partial-loading-background")}," ")),a.createElement("div",{className:"col-xl-3"},a.createElement("div",{className:"".concat(ke.views," partial-loading-background")}," ")))),a.createElement("div",{className:"position-absolute bottom-0 end-0 position-md-static d-flex justify-content-end gap-2 ms-auto col col-xl-12"},a.createElement("div",{className:"".concat(ke.actions," partial-loading-background rounded d-none d-md-block px-3 p-lg-0 col-lg-6")}),a.createElement("div",{className:"".concat(ke.actions," partial-loading-background rounded px-3 p-lg-0 col-lg-4")})))}function Ne(){return a.createElement(a.Fragment,null,a.createElement("div",{className:"mb-3"},a.createElement("div",{className:"no-full-width"},a.createElement("div",{className:"".concat(ke.table," d-block d-xl-grid gap-3 px-3")},a.createElement("div",{className:"partial-loading-background mb-2 ms-n3 ".concat(ke.date)}," "),a.createElement("div",{className:"d-flex flex-column align-items-xl-center flex-xl-row gap-1 gap-xl-3"},a.createElement("div",{className:"col-xl-4"}),a.createElement("div",{className:"d-flex align-items-center gap-2 gap-xl-0 pe-4 pe-md-0 col-xl-8"},a.createElement("div",{className:"col-xl-5"},a.createElement("div",{className:"d-none d-xl-inline-block partial-loading-background mb-2 ".concat(ke.date)}," ")),a.createElement("div",{className:"col-xl-4"},a.createElement("div",{className:"d-none d-xl-inline-block partial-loading-background mb-2 ".concat(ke.date)}," ")),a.createElement("div",{className:"col-xl-3"},a.createElement("div",{className:"d-none d-xl-inline-block partial-loading-background mb-2 ".concat(ke.date)}," "))))),a.createElement("div",{className:"d-flex flex-column rounded-3 mb-4 gap-4 gap-md-0 border-md border-light"},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(ke.date)}," "),a.createElement("div",{className:"d-flex flex-column rounded-3 mb-4 gap-4 gap-md-0 border-md border-light"},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(ke.date)}," "),a.createElement("div",{className:"d-flex flex-column rounded-3 mb-4 gap-4 gap-md-0 border-md border-light"},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(ue.u,null,a.createElement(ue.u.Image,{src:de.W.EmptyStates.MY_VIDEOS_PUBLIC,altText:je("heading")}),a.createElement(ue.u.Heading,null,a.createElement(m.x,{namespace:we,phrase:"heading"})),a.createElement(ue.u.Info,null,a.createElement(m.x,{namespace:we,phrase:"info"})),a.createElement(ue.u.Cta,{text:i.T.getPhrase(we,"cta"),appLink:{application:x.O.SIGN_UP,action:S.e.SignUp.SIGN_UP},analyticsData:{},analyticsOptions:{actionType:q.Vw.Click,location:q.LZ.MySharesLanding,entity:q.py.AppLink,workflowPhase:q.eu.Start,descriptor:q.Yu.SignUp}}))}function Ae(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 Ce=i.T.encloseNamespace("myShares.myShares");function Te(e,t,n,r){var i,l=JSON.stringify(e);return a.useCallback((function(a){return function(e,t,n,a,r){var i=[],l={button:!(r.xs||r.sm),className:"btn btn-outline-dark"};if(ee.M.isVideoType(e)){if(!ee.M.getCanBeConsumed(e).canConsume)return[];if(a)return[Object.assign(Object.assign({label:Ce("embedVideo"),appLink:{application:x.O.DEFAULT,action:S.e.Default.PLUGIN_SHARE,args:[e.id],params:{entityType:e.type}}},l),{analyticsOptions:{actionType:q.Vw.Share,descriptor:q.YM.PluginEmbed,workflowPhase:q.eu.Start,eventVersion:q.eq.V5}})];n&&i.push(Object.assign({svgName:L.vn.Analytics,label:!r.md&&Ce("viewInsights"),tooltip:r.md&&Ce("viewInsights"),appLink:Object.assign(Object.assign({},(0,N.Dw)(e)),{params:t}),group:"insights"},l))}return i.push(Object.assign({label:!r.md&&Ce("share"),tooltip:r.md&&Ce("share"),svgName:L.vn.Share,appLink:(0,N.YK)(e),group:"share"},l)),i}(a,e,t,n,r)}),[l].concat(function(e){if(Array.isArray(e))return Ae(e)}(i=Object.values(r||{}))||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(i)||function(e,t){if(e){if("string"==typeof e)return Ae(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)?Ae(e,t):void 0}}(i)||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 Le(e){return function(e){if(Array.isArray(e))return Me(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 Me(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)?Me(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 Me(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 Fe="myShares.myShares",Pe=i.T.encloseNamespace(Fe);function Re(e){var t,n,i,w,j,O,A=(0,b.T)(),C=A.hasPermissions,T=A.hasLocalPermissions,L=(0,E.r)(null).hasInsights,M=(0,k.G)().isPlugin,F=(0,y.k)(),P=(O=null==(j=e.queryParams)?void 0:j.typeId)?"string"==typeof O?[+O]:(null==j?void 0:j.typeId.map((function(e){return+e})))||[]:[],R=s.B.getAudienceAppLinkParams(),D={application:x.O.MY_SHARES,action:S.e.MyShares.HOME,params:Object.assign(Object.assign({},R),{typeId:P})},U={recipientUserId:null==R?void 0:R.users,recipientGroupId:[].concat(Le((null==R?void 0:R.classroomGroups)||[]),Le((null==R?void 0:R.classrooms)||[])),objectTypeId:P.length?P:void 0},B=!T(u.E.ViewMySharesLanding)||C(u.C.ViewMyShares)&&L,V=(0,I.aH)(U,!0,B),_=V.sentShares,G=V.sharedObjects,q=V.shareRecipients,W=V.interactivesPendingReview,Y=V.isFetching,$=V.showPartialLoading,Z=V.nextCursor,K=V.hasMore,Q=V.fetchNext,X=V.imageCdnUrl,J=V.dependencies;(0,h.M)({title:Pe("myShares")});var ee=(0,E.r)(null).hasClassrooms,te=l.a.useBasicFetch(d.L.config()),ne=l.a.useBasicFetch(g.N.currentUser()),ae=l.a.useBasicFetch((null===(t=ne.data)||void 0===t?void 0:t.isAuthenticated)&&p.h.yearGroups(ne.data.customerId)),re=Te(R,L&&C(u.C.ViewInsights),M,F),ie=(0,v.v)().accessPolicy,le=null===(n=null==ie?void 0:ie.metadata)||void 0===n?void 0:n.hasDemoInsights,se=l.a.useBasicFetch(le&&f.X.interactiveMetadata());return a.useEffect((function(){C(u.C.ViewMyShares)&&L||r.Q.Ab.PageLoad("/")}),[B]),B?a.createElement("div",{className:"px-3"},a.createElement(z.p,{analyticsUrl:null===(i=te.data)||void 0===i?void 0:i.analyticsWebUrl,hasAnalytics:C(u.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(m.x,{namespace:Fe,phrase:"myShares"})),a.createElement(c.B,{hasClassroomsFeature:ee})),a.createElement("div",{className:"mb-3"},a.createElement(H,{appLink:D,typeIdParams:P,breakpoints:F})),le&&se.data&&a.createElement(me,{demoInteractive:se.data,liteUrl:null===(w=te.data)||void 0===w?void 0:w.liteUrl}),$?a.createElement(Ne,null):_.length?a.createElement(a.Fragment,null,a.createElement(xe,{sentShares:_,sharedObjects:G,shareRecipients:q,interactivesPendingReview:W,getObjectAppLink:N.Qh,getObjectActions:re,imageCdnUrl:X,groupByDateShared:!0,dependencies:J,breakpoints:F,yearGroups:ae.data,hasDemoInsights:le}),(K||Y)&&a.createElement(o._,{isFetching:Y,fetchNext:Q,nextCursor:Z})):a.createElement(fe,null)):a.createElement(Oe,null)}},64208:(e,t,n)=>{n.d(t,{aH:()=>E});var a=n(32735),r=n(20354),i=n(1048),l=n(71553),s=n(30439),c=n(4594),o=n(39151),m=n(31949),u=n(39902),d=n(60115),p=n(75896),f=n(85063),g={getDirectShares:function(e){var t;return null!==(t=null==e?void 0:e.filter((function(e){return e.type===f.y.DirectShare})))&&void 0!==t?t:[]},getRecipientIds:function(e){return p.m.uniq(p.m.flatten(g.getDirectShares(e).map((function(e){var t;return null!==(t=e.recipients)&&void 0!==t?t:[]}))),"id").map((function(e){return e.id}))}};function v(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)||y(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 y(e,t){if(e){if("string"==typeof e)return b(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)?b(e,t):void 0}}function b(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 E(e,t){var n,p,f=!(arguments.length>2&&void 0!==arguments[2])||arguments[2],E=r.a.useGetFetch(),S=r.a.useBasicFetch(m.N.currentUser()),x=function(t){return f&&s.o.sentShare(Object.assign({cursor:t},e))},k=function(e){return E(x(e))},I=(0,d.K)(x,k),N=I.items,w=I.hasMore,j=I.isFetching,O=I.nextCursor,A=null!==(n=null==N?void 0:N.map((function(e){return e.objectId})))&&void 0!==n?n:[],C=(0,u.f)(A,(function(e){return s.o.sharedObjectsById(e)})),T=g.getRecipientIds(N),L=(0,u.f)(T,(function(e){return s.o.getRecipientsById(e,S.data.customerId)})),M=r.a.useBasicFetch(o.L.config()),F=JSON.stringify(e),P=function(e,t,n,r,i){var l=v(a.useState(!!t.items),2),s=l[0],c=l[1],o=v(a.useState(!!r.items),2),m=o[0],u=o[1];return a.useEffect((function(){c(!1),u(!1)}),[i]),a.useEffect((function(){t.items&&c(!0)}),[!!t.items,i]),a.useEffect((function(){r.items&&u(!0)}),[!!t.items,i]),!(e&&!e.length)&&(!e||!s||n.length&&!m)}(N,C,T,L,F),R=j||C.isFetching||L.isFetching,D=h(C),U=v(a.useState(h(L)),2),B=U[0],H=U[1];a.useEffect((function(){i.t.isEmpty(L.items)||H(h(L))}),[!!L.items,L.isFetching,F]);var V=t&&(null==D?void 0:D.length)&&D.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 b(e)}(n=e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(n)||y(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}])}),[]),z=r.a.useBasicFetch(t&&!!C.items&&S.data&&l.I.pendingReviews({interactives:V,filters:{currentCustomerId:S.data.customerId,currentUserId:S.data.id}})),_=[R,F,z.isFetching,B.length];return{sentShares:N,sharedObjects:D,shareRecipients:B,interactivesPendingReview:z.data,isFetching:R,showPartialLoading:P,nextCursor:O,hasMore:w,fetchNext:k,imageCdnUrl:null===(p=M.data)||void 0===p?void 0:p.imageCdnUrl,dependencies:_}}}}]);
|
|
2
|
+
//# sourceMappingURL=4359-b3c4a66f9c-lite.chunk.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scripts/4359-b3c4a66f9c-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 { Flight } from 'libs/common/flight';\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\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 chunks = ArrayHelper.chunk<string>(itemIds, 25);\n\n const requests = chunks.map(chunk => getRequest(ArrayHelper.uniq(chunk)));\n\n const responses = Flight.useBasicFetchAll<T[]>(requests);\n\n const items = responses.data.length\n ? ArrayHelper.flatten(responses.data).reduce((acc, item) => ({ ...acc, [item.id]: item }), {})\n : null;\n\n return {\n items,\n isFetching: responses.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 { SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { Breakpoints } from 'libs/shared/hooks/useBreakpoints';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport styles from './insights-type-filters.scss';\n\nconst namespace = 'insights.insightsTypeFilters';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface InsightsTypeFilterProps {\n appLink: Core.AppLink;\n typeIdParams: MasterType[];\n breakpoints: Breakpoints;\n}\n\nexport function InsightsTypeFilters(props: InsightsTypeFilterProps) {\n const isMobile = props.breakpoints.xs || props.breakpoints.sm;\n\n const moreFilterOptions = [\n ...(isMobile ? [{\n label: getPhrase('interactives'),\n filter: MasterType.Interactive\n }, {\n label: getPhrase('videos'),\n filter: MasterType.Video\n }, {\n label: getPhrase('clips'),\n filter: MasterType.Clip\n }] : []),\n {\n label: getPhrase('playlists'),\n filter: MasterType.Playlist\n }, {\n label: getPhrase('series'),\n filter: MasterType.Series\n }];\n\n const moreFiltersSelected = getMoreFiltersSelected();\n\n const [ showDropdown, setShowDropdown ] = React.useState(false);\n const [ moreFilters, setMoreFilters ] = React.useState(moreFiltersSelected);\n\n function applyFilter() {\n const currentParams = props.appLink.params as HashObject;\n\n Core.AppLinkHelper.trigger({\n ...props.appLink,\n params: {\n ...currentParams,\n typeId: ArrayHelper.uniq([\n ...props.typeIdParams,\n ...moreFilters\n ])\n }\n });\n }\n\n function resetFilters() {\n setMoreFilters([]);\n\n const currentParams = props.appLink.params as HashObject;\n\n Core.AppLinkHelper.trigger({\n ...props.appLink,\n params: {\n ...currentParams,\n typeId: []\n }\n });\n }\n\n function onToggleDropdown(isShowing: boolean): void {\n setShowDropdown(isShowing);\n\n if (isShowing)\n return;\n\n applyFilter();\n }\n\n function onClickApply() {\n applyFilter();\n setShowDropdown(false);\n }\n\n function onClickReset() {\n resetFilters();\n setShowDropdown(false);\n }\n\n function onSelectFilter(filter: MasterType) {\n setMoreFilters(ArrayHelper.addOrRemoveImmutable(moreFilters, filter));\n }\n\n function isFilterSelected(filter: MasterType) {\n if (isMobile) {\n return !!moreFilters.find(selectedFilter => selectedFilter === filter) ||\n !!props.typeIdParams.find(selectedFilter => selectedFilter === filter);\n }\n\n return !!moreFilters.find(selectedFilter => selectedFilter === filter);\n }\n\n function getMoreFiltersSelected() {\n return props.typeIdParams.filter(typeId =>\n moreFilterOptions.some(option => typeId === option.filter));\n }\n\n return (\n <div className='d-flex align-items-center fw-semibold'>\n <p className='d-none d-md-inline h6 mb-0'><Text namespace={namespace} phrase='filters' /></p>\n <div className='d-flex flex-grow-1 flex-md-grow-0 border-md-start border-light ps-0 ps-md-3 ms-0 ms-md-3 gap-2'>\n <div className='d-none d-md-flex gap-2'>\n <InsightTypeFilterButton\n typeId={MasterType.Interactive}\n typeFilters={props.typeIdParams}\n appLink={props.appLink}\n />\n <InsightTypeFilterButton typeId={MasterType.Video} typeFilters={props.typeIdParams} appLink={props.appLink} />\n <InsightTypeFilterButton typeId={MasterType.Clip} typeFilters={props.typeIdParams} appLink={props.appLink} />\n </div>\n <Dropdown onToggle={onToggleDropdown} show={showDropdown} className='col'>\n <Dropdown.Toggle\n className={`${styles.noCaret} col-12 col-md-auto`}\n variant={moreFiltersSelected.length ? 'dark' : 'outline-dark'}\n >\n <div className='d-flex align-items-center justify-content-center gap-2 fw-semibold mb-0'>\n <SvgContainer svgName={cvSvgLibrary.Filter} className='svg-container d-inline-block d-md-none' />\n <Text namespace={namespace} phrase={isMobile ? 'filters' : 'moreFilters'} />\n {moreFiltersSelected.length ? ` - ${moreFiltersSelected.length}` : ''}\n </div>\n </Dropdown.Toggle>\n\n <Dropdown.Menu>\n <div className='mx-1 px-2 py-1 mb-0'>\n <h2 className='h6 mb-3'><Text namespace={namespace} phrase='types' /></h2>\n <ul className='list-unstyled me-5'>\n {moreFilterOptions.map(option => (\n <li key={`${option.label}-filter`} className='my-1'>\n <Checkbox\n id={`${option.label}-filter`}\n label={option.label}\n onChange={() => onSelectFilter(option.filter)}\n checked={isFilterSelected(option.filter)}\n />\n </li>\n ))}\n </ul>\n <div className='d-flex justify-content-between'>\n <button onClick={onClickReset} className='btn btn-link text-secondary p-0 mb-0'>\n <Text namespace={namespace} phrase='resetAll' />\n </button>\n <button onClick={onClickApply} className='btn btn-link text-info p-0 mb-0'>\n <Text namespace={namespace} phrase='apply' />\n </button>\n </div>\n </div>\n </Dropdown.Menu>\n </Dropdown>\n </div>\n {!!props.typeIdParams.length &&\n <button onClick={resetFilters} className='d-none d-md-block btn btn-link ms-1'>\n <Text namespace={namespace} phrase='resetAll' />\n </button>\n }\n </div>\n );\n}\n\ninterface InsightTypeFilterButtonProps {\n typeId: MasterType;\n typeFilters: MasterType[];\n appLink: Core.AppLink;\n}\n\nfunction InsightTypeFilterButton(props: InsightTypeFilterButtonProps) {\n const selected = props.typeFilters.includes(props.typeId);\n\n const currentAppLink = props.appLink;\n const currentParams = currentAppLink.params as HashObject;\n\n const newType: MasterType[] = ArrayHelper.addOrRemoveImmutable(props.typeFilters, props.typeId);\n\n const newAppLink = {\n ...currentAppLink,\n params: {\n ...currentParams,\n typeId: newType\n }\n };\n\n function getTypePhrase(): string {\n if (props.typeId === MasterType.Video) return 'videos';\n if (props.typeId === MasterType.Clip) return 'clips';\n if (props.typeId === MasterType.Interactive) return 'interactives';\n }\n\n return (\n <AppLink\n className={`btn ${selected ? 'btn-dark' : 'btn-outline-dark'} fw-semibold`}\n appLink={newAppLink}\n ariaLabel={`${getPhrase('ariaFilterBy')}: ${getPhrase(getTypePhrase())}`}\n >\n <Text namespace={namespace} phrase={getTypePhrase()} />\n </AppLink>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"mySharesTable\":\"hyaYe\",\"mySharesHeader\":\"WjfsD\",\"tableBorder\":\"tHBWr\"};","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 { SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\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 { ImageSize } from 'libs/shared/enums/Images';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { ShareType } from 'libs/shared/enums/ShareType';\nimport { Breakpoints } from 'libs/shared/hooks/useBreakpoints';\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.mySharesHeader} d-block d-lg-grid gap-3 px-3`}>\n <p className='fw-semibold mb-2 ms-n3'>{props.heading}</p>\n\n {props.isFirst &&\n <>\n <div className='d-none d-xl-inline' />\n <p className='d-none d-xl-inline fw-semibold mb-2'><Text namespace={namespace} phrase='sharedToHeading' /></p>\n <p className='d-none d-xl-inline fw-semibold mb-2'><Text namespace={namespace} phrase='dateSharedHeading' /></p>\n <p className='d-none d-xl-inline 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 breakpoints?: Breakpoints;\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 const isMobile = props.breakpoints.xs || props.breakpoints.sm;\n const isDesktop = props.breakpoints.xl || props.breakpoints.xxl;\n const isCollection = sharedObject.typeId === MasterType.Playlist || sharedObject.typeId === MasterType.Series;\n\n return (\n <div key={shareData.share.id} className={`${styles.mySharesTable} ${styles.tableBorder} position-relative d-flex d-xl-grid flex-column flex-md-row align-items-md-center p-0 p-md-3 gap-3`}>\n <div className='col-12 col-md-3 col-xl-auto'>\n <SharedObjectImage\n object={sharedObject}\n appLink={props.getObjectAppLink(sharedObject)}\n showVideoMetadata\n locationContext={LocationContext.MyShares}\n imageOptions={{ size: ImageSize.Medium }}\n requireMarking={isMobile && shareData.pendingReview}\n showCollectionMask\n showVideoCount\n />\n </div>\n <div className='d-flex flex-column align-items-xl-center flex-xl-row gap-1 gap-xl-3'>\n <div className='col-xl-4'>\n <ShareObjectTitle\n sharedObject={shareData.sharedObject}\n appLink={props.getObjectAppLink(sharedObject)}\n requireMarking={isDesktop && shareData.pendingReview}\n />\n </div>\n {props.children}\n\n <div className='d-flex align-items-center gap-2 gap-xl-0 pe-4 pe-md-0 col-xl-8'>\n <div className='col-xl-5'>\n <SharedToPill\n shareLinkText={shareLinkText?.text}\n shareRecipients={shareData.shareRecipients}\n imageCdnUrl={props.imageCdnUrl}\n />\n </div>\n <span className='d-inline d-xl-none'>·</span>\n <p className='mb-0 col-xl-4'>{formatDate(shareData.dateShared)}</p>\n {!isCollection ? (\n <>\n <span className='d-inline d-xl-none'>·</span>\n <p className='mb-0 col-xl-3'><Text namespace={namespace} phrase='views' options={{ smartCount: shareData.viewCount }} /></p>\n </>\n ) : (\n <p className='mb-0 d-none d-xl-block'>-</p>\n )}\n </div>\n\n {!isDesktop && !isMobile && !!shareData.pendingReview && (\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: shareData.pendingReview }} />\n </div>\n )}\n </div>\n\n <Actions\n className={`position-absolute bottom-0 end-0 position-md-static justify-content-end gap-2 ms-auto`}\n actionsDropdownClassName='btn-outline-dark rounded py-2'\n dropdownToggleSvgSize={SvgContainerSize.Standard}\n actions={props.getObjectActions(sharedObject)}\n />\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 liteUrl: string;\n}\n\nexport function MySharesDemoInsight(props: MySharesDemoInsightProps) {\n const isStaging = props.liteUrl.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?: any[];\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 mb-4 gap-4 gap-md-0 border-md border-light'>\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 breakpoints={props.breakpoints}\n />\n ))}\n </div>\n </div>\n ))}\n </>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"table\":\"elIjR\",\"tableHeader\":\"xJKgP\",\"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} position-relative d-flex d-xl-grid flex-column flex-md-row align-items-md-center p-0 p-md-3 gap-3`}>\n <div className='col-12 col-md-3 col-xl-auto'>\n <div className={`partial-loading-background rounded ratio ratio-16x9 `} />\n </div>\n <div className='d-flex flex-column align-items-xl-center flex-xl-row gap-1 gap-xl-3'>\n <div className={`partial-loading-background col-8 col-xl-4`}> </div>\n <div className='d-flex align-items-center gap-2 gap-xl-0 pe-4 pe-md-0 col-xl-8'>\n <div className='col-xl-5'>\n <div className={`${styles.avatar} partial-loading-background rounded-pill col-xl-8`} />\n </div>\n <div className='col-xl-4'>\n <div className={`${styles.date} partial-loading-background`}> </div>\n </div>\n <div className='col-xl-3'>\n <div className={`${styles.views} partial-loading-background`}> </div>\n </div>\n </div>\n </div>\n <div className={`position-absolute bottom-0 end-0 position-md-static d-flex justify-content-end gap-2 ms-auto col col-xl-12`}>\n <div className={`${styles.actions} partial-loading-background rounded d-none d-md-block px-3 p-lg-0 col-lg-6`} />\n <div className={`${styles.actions} partial-loading-background rounded px-3 p-lg-0 col-lg-4`} />\n </div>\n </div>\n );\n}\n\nexport function PartialMySharesTable(): JSX.Element {\n return (\n <>\n <div className='mb-3'>\n <div className='no-full-width'>\n <div className={`${styles.table} d-block d-xl-grid gap-3 px-3`}>\n <div className={`partial-loading-background mb-2 ms-n3 ${styles.date}`}> </div>\n <div className='d-flex flex-column align-items-xl-center flex-xl-row gap-1 gap-xl-3'>\n <div className='col-xl-4' />\n <div className='d-flex align-items-center gap-2 gap-xl-0 pe-4 pe-md-0 col-xl-8'>\n <div className='col-xl-5'>\n <div className={`d-none d-xl-inline-block partial-loading-background mb-2 ${styles.date}`}> </div>\n </div>\n <div className='col-xl-4'>\n <div className={`d-none d-xl-inline-block partial-loading-background mb-2 ${styles.date}`}> </div>\n </div>\n <div className='col-xl-3'>\n <div className={`d-none d-xl-inline-block partial-loading-background mb-2 ${styles.date}`}> </div>\n </div>\n </div>\n </div>\n </div>\n\n <div className='d-flex flex-column rounded-3 mb-4 gap-4 gap-md-0 border-md border-light'>\n <PartialRow />\n <PartialRow />\n <PartialRow />\n </div>\n </div>\n </div>\n\n <div className='mb-3'>\n <div className={`partial-loading-background mb-2 ${styles.date}`}> </div>\n\n <div className='d-flex flex-column rounded-3 mb-4 gap-4 gap-md-0 border-md border-light'>\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}`}> </div>\n\n <div className='d-flex flex-column rounded-3 mb-4 gap-4 gap-md-0 border-md border-light'>\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 { Breakpoints } from 'libs/shared/hooks/useBreakpoints';\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 breakpoints?: Breakpoints\n): ActionOptions[] {\n const insightObjectActions: ActionOptions[] = [];\n\n const isMobile = breakpoints.xs || breakpoints.sm;\n\n const buttonProps = {\n button: !isMobile,\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: !breakpoints.md && getPhrase('viewInsights'),\n tooltip: breakpoints.md && getPhrase('viewInsights'),\n appLink: { ...getInsightsAppLink(sharedObject), params: audienceParams },\n group: 'insights',\n ...buttonProps\n });\n }\n\n insightObjectActions.push({\n label: !breakpoints.md && getPhrase('share'),\n tooltip: breakpoints.md && 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 breakpoints?: Breakpoints\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 breakpoints\n ),\n [ audienceParamsKey, ...Object.values(breakpoints || {}) ]\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 { 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 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(\n audienceAppLinkParams,\n hasInsightsPermission,\n isPlugin,\n breakpoints\n );\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} breakpoints={breakpoints} />\n </div>\n\n {showDemoInsight && demoInteractive.data &&\n <MySharesDemoInsight demoInteractive={demoInteractive.data} liteUrl={config.data?.liteUrl} />\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 { ObjectHelper } from 'libs/common/react/utils/ObjectHelper';\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 sharedObjectsFetchResult: UseBatchFetchResult<BaseObject>,\n recipientIds: string[],\n recipientsFetchResult: UseBatchFetchResult<BaseObject>,\n filterKey: string\n): boolean {\n const [ initialSharedObjectsLoaded, setInitialSharedObjectsLoaded ] = React.useState(\n !!sharedObjectsFetchResult.items\n );\n const [ initialRecipientsLoaded, setInitialRecipientsLoaded ] = React.useState(\n !!recipientsFetchResult.items\n );\n\n React.useEffect(() => {\n setInitialSharedObjectsLoaded(false);\n setInitialRecipientsLoaded(false);\n }, [filterKey]);\n\n React.useEffect(() => {\n if (sharedObjectsFetchResult.items)\n setInitialSharedObjectsLoaded(true);\n }, [ !!sharedObjectsFetchResult.items, filterKey ]);\n\n React.useEffect(() => {\n if (recipientsFetchResult.items)\n setInitialRecipientsLoaded(true);\n }, [ !!sharedObjectsFetchResult.items, filterKey ]);\n\n if (sentShare && !sentShare.length)\n return false;\n\n return !sentShare\n || !initialSharedObjectsLoaded\n || (recipientIds.length && !initialRecipientsLoaded);\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 = 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 filterKey = JSON.stringify(params);\n\n const showPartialLoading = usePartialLoading(\n sentShares,\n sharedObjectsFetchResult,\n recipientIds,\n shareRecipientsFetchResult,\n filterKey\n );\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\n const [ shareRecipients, setShareRecipients ] = React.useState<BaseObject[]>(\n getBatchFetchResultAsArray(shareRecipientsFetchResult)\n );\n\n React.useEffect(() => {\n if (ObjectHelper.isEmpty(shareRecipientsFetchResult.items)) return;\n\n setShareRecipients(getBatchFetchResultAsArray(shareRecipientsFetchResult));\n }, [ !!shareRecipientsFetchResult.items, shareRecipientsFetchResult.isFetching, filterKey ]);\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, shareRecipients.length ];\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","requests","chunk","responses","items","reduce","acc","item","isFetching","getAnalyticsRequestKey","baseKey","sharerId","userIdKey","Array","isArray","join","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","isMobile","breakpoints","xs","sm","moreFilterOptions","MasterType","moreFiltersSelected","typeIdParams","some","option","showDropdown","setShowDropdown","moreFilters","setMoreFilters","applyFilter","currentParams","params","ArrayHelper","resetFilters","Text","InsightTypeFilterButton","typeFilters","Dropdown","onToggle","isShowing","variant","SvgContainer","Checkbox","onChange","checked","find","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","isDesktop","xl","xxl","isCollection","SharedObjectImage","object","getObjectAppLink","showVideoMetadata","locationContext","imageOptions","size","pendingReview","showCollectionMask","showVideoCount","children","SharedToPill","text","imageCdnUrl","S","getObjectActions","MySharesDemoInsight","isStaging","liteUrl","demoInteractive","MySharesTableEmptyState","EmptyState","src","ImageUrls","getDateShared","recipients","dateCreated","datesShared","r","date1","date2","DateHelper","MySharesTable","sentShares","sharedObjects","groupByDate","interactivesPendingReviews","dependencies","groupByDateShared","interactivesPendingReview","tableData","sharedObjectsMap","obj","shareRecipientsMap","interactivesPendingReviewsMap","s","objectId","recipient","pendingReviewCount","ShareHelper","Object","keys","i","hasDemoInsights","PartialRow","PartialMySharesTable","MySharesEmptyState","altText","workflowPhase","descriptor","SignUp","useGetShareObjectActions","audienceParams","hasInsights","isPlugin","audienceParamsKey","JSON","stringify","insightObjectActions","buttonProps","canConsume","args","entityType","eventVersion","md","getShareObjectActions","values","MySharesView","usePermissions","hasPermissions","hasLocalPermissions","useSettings","usePluginHelper","useBreakpoints","typeIdAppLinkParams","queryParams","audienceAppLinkParams","sentSharesParams","recipientUserId","recipientGroupId","classroomGroups","classrooms","undefined","shouldFetch","PermissionName","useSharesTable","showPartialLoading","nextCursor","hasMore","fetchNext","useSetPageMetadata","hasClassrooms","config","ConfigRequests","UserRequests","isAuthenticated","CustomerRequests","getSharedObjectActions","accessPolicy","useAccessPolicy","showDemoInsight","metadata","analyticsWebUrl","AudienceFilterView","hasClassroomsFeature","InfiniteScrollFooter","getDirectShares","getRecipientIds","d","getBatchFetchResultAsArray","result","interactiveInsights","fetch","cursor","ShareRequests","isFetchingSentShares","sharedObjectIds","sharedObjectsFetchResult","ids","recipientIds","shareRecipientsFetchResult","filterKey","sentShare","recipientsFetchResult","initialSharedObjectsLoaded","setInitialSharedObjectsLoaded","initialRecipientsLoaded","setInitialRecipientsLoaded","usePartialLoading","setShareRecipients","ObjectHelper","interactiveIds","value","metadataId","I","interactives","filters"],"sourceRoot":""}
|