@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.
@@ -1,2 +1,2 @@
1
- "use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[6965],{71553:(e,t,a)=>{a.d(t,{I:()=>c});var n=a(99940),r=a(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 c={interactiveResultSet:function(e,t,a,c,l,s,o,u){return{url:l?"/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),c),data:i(a,c),type:n.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:s,error:o,always:u}},mark:function(e,t,a,r,i,c,l){return{url:"/api/domain/v1/analytics/answers/".concat(a),key:"mark:answer:".concat(a,":").concat(r.resultId),type:n.k.PUT,data:r,normalize:!1,invalidationKeys:"interactive:result:set:".concat(e,":").concat(t),success:i,error:c,always:l}},pendingReviews:function(e){return{url:"/api/domain/v1/analytics/interactives/pending-reviews/summary",key:"interactives:pending:reviews",type:n.k.POST,data:e}},interactiveResultsReport:function(e){return{url:"{gateway}/v2/analytics/interactives/report",key:"interactive:results:report",data:e,type:n.k.POST,normalize:!1}}}},40391:(e,t,a)=>{a.d(t,{m9:()=>E,Ad:()=>b,Kh:()=>N});var n=a(32735),r=a(23481),i=a(75896),c=a(20789),l=a(18995),s=a(60376),o=a(83914),u=a(36532),m=a(4594),d=a(36511),p=a(35223),v=a(64818);const g={avatarContainer:"ByxQa",sm:"EgJ0v",sharedAvatar:"cW0NT"};var f=r.T.encloseNamespace("reportsShare.sharedToAvatarList");function h(e){var t=i.m.countBy(e,"typeId"),a=t[m.E.User],n=t[m.E.Classroom],r=t[m.E.ClassroomGroup];return a&&n&&r?f("classroomsGroupsAndUsers",{userCount:a,classroomCount:n,groupCount:r}):a&&n?f("classroomsAndUsers",{userCount:a,classroomCount:n}):a&&r?f("groupsAndUsers",{userCount:a,groupCount:r}):n&&r?f("classroomsAndGroups",{classroomCount:n,groupCount:r}):a?f("users",{userCount:a}):n?f("classrooms",{classroomCount:n}):r?f("groups",{groupCount:r}):void 0}function y(e){var t,a,r,i,l,f=(null===(t=e.item)||void 0===t?void 0:t.typeId)===m.E.User&&e.item,h=(null===(a=e.item)||void 0===a?void 0:a.typeId)===m.E.Classroom&&e.item,y=(null===(r=e.item)||void 0===r?void 0:r.typeId)===m.E.ClassroomGroup&&e.item,E="d-flex justify-content-center align-items-center text-white rounded-circle h-100 w-100";return n.createElement(n.Fragment,null,!!f&&n.createElement(u.u,{title:"".concat(f.name," ").concat(f.surname),spanHack:!0,spanHackClassName:"h-100 w-100"},n.createElement(c.q,{imageUrl:null===(i=f.avatar)||void 0===i?void 0:i.url,imageCdnUrl:e.imageCdnUrl,initials:v.l.getInitials(f.name,f.surname),extraClasses:g.sharedAvatar})),!!h&&n.createElement(u.u,{title:h.name,spanHack:!0,spanHackClassName:"h-100 w-100"},n.createElement("div",{className:E},n.createElement(s.f,{svgName:p.vn.Classrooms,svgSize:o.S.Large,variant:"teal"}))),!!y&&n.createElement(u.u,{title:y.name,spanHack:!0,spanHackClassName:"h-100 w-100"},n.createElement("div",{className:E},n.createElement(s.f,{svgName:p.vn.Group,variant:(0,d.I)(null===(l=y.metadata)||void 0===l?void 0:l.colour)}))))}function E(e){return n.createElement("div",{className:"".concat(g.avatarContainer," ").concat("sm"===e.avatarSize?g.sm:"")},n.createElement(u.u,{title:f("anonymous"),spanHack:!0,spanHackClassName:"bg-light text-dark d-flex justify-content-center align-items-center rounded-circle h-100 w-100"},n.createElement(o.x,{svgName:p.vn.Anonymous,size:"sm"===e.avatarSize?o.S.Small:null})))}function b(e){return n.createElement("div",{className:"".concat(g.avatarContainer," ").concat("sm"===e.avatarSize?g.sm:"")},n.createElement(u.u,{title:e.text||f("sharedLink"),spanHack:!0,spanHackClassName:"bg-light text-dark d-flex justify-content-center align-items-center rounded-circle h-100 w-100 ".concat(e.className||"")},n.createElement(o.x,{svgName:p.vn.Link,size:"sm"===e.avatarSize?o.S.Small:null})))}function N(e){return n.createElement(l.e,Object.assign({},e,{items:e.recipients,avatarItem:y,avatarContainerClassname:"".concat(g.avatarContainer," ").concat("sm"===e.avatarSize?g.sm:""),getHiddenTooltip:h,hasShareLink:e.hasShareLink,shareLinkText:e.shareLinkText}))}N.defaultProps={maxAvatars:5}},95834:(e,t,a)=>{a.d(t,{J:()=>n});var n={table:"striped-list no-full-width pb-3",header:"fw-semibold pb-1",headerCell:"py-2 ps-2 text-nowrap",row:"striped-row rounded",cell:"d-flex align-items-center p-2"}},83657:(e,t,a)=>{a.d(t,{e:()=>o});var n=a(32735),r=a(91967),i=a(10874),c=a(36532),l=a(42735),s=a(86509);function o(e){var t=n.useMemo((function(){return e.actions.sort((function(e,t){return e.order-t.order}))}),[e.actions]),a=[],o=[];t.forEach((function(e){e.button?a.push(e):o.push(e)}));var u="d-flex";return e.className&&(u+=" ".concat(e.className)),a.length||o.length?n.createElement("div",{className:u},a.length?a.map((function(t,a){return n.createElement(n.Fragment,{key:a},function(){if(t.label){var a=r.q.isFunction(t.label)?t.label:function(){return n.createElement(n.Fragment,null,t.label)};return n.createElement(l.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},a())}var s=n.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?n.createElement(c.u,{title:t.tooltip,spanHack:!0},s):s}())})):n.createElement(n.Fragment,null),e.sortComponent&&e.sortComponent,o.length?n.createElement(s.m,{actions:o,dropdownToggleClassName:e.actionsDropdownClassName,dropdownToggleSvgSize:e.dropdownToggleSvgSize,fetchMore:e.fetchMore}):n.createElement(n.Fragment,null)):n.createElement(n.Fragment,null)}},86509:(e,t,a)=>{a.d(t,{m:()=>f});var n=a(32735),r=a(91967),i=a(81886),c=a(45157),l=a(49985),s=a(36848),o=a(83914),u=a(36532),m=a(35223);const d={dropdownToggle:"UCAnJ"};function p(){return n.createElement(n.Fragment,null,n.createElement("div",{style:{padding:"0.53125rem 1rem"}},n.createElement("div",{className:"partial-loading-background",style:{height:"1.0625rem",width:"8rem"}})),n.createElement("div",{style:{padding:"0.53125rem 1rem"}},n.createElement("div",{className:"partial-loading-background",style:{height:"1.0625rem",width:"12rem"}})),n.createElement("div",{style:{padding:"0.53125rem 1rem"}},n.createElement("div",{className:"partial-loading-background",style:{height:"1.0625rem",width:"11rem"}})),n.createElement("div",{style:{padding:"0.53125rem 1rem"}},n.createElement("div",{className:"partial-loading-background",style:{height:"1.0625rem",width:"9rem"}})))}function v(e){var t="dropdown-item";return e&&(t+=" ".concat(e)),t}function g(e){var t=r.q.isFunction(e.action.label)?e.action.label:function(){return n.createElement(n.Fragment,null,e.action.label)};if(e.action.appLink)return n.createElement(s.F,{appLink:e.action.appLink,onClick:e.action.onClick,className:v(e.action.className),analyticsData:e.action.analyticsData,analyticsOptions:e.action.analyticsOptions,openInNewTab:e.action.openInNewTab,disabled:e.action.disabled},e.action.svgName&&n.createElement(o.x,{svgName:e.action.svgName,className:"d-inline-block svg-container me-2 align-middle"}),n.createElement("span",{className:"align-middle"},t()));function a(t){t.preventDefault(),e.action.analyticsData&&e.action.analyticsOptions&&l.k.logUserAction(e.action.analyticsData,e.action.analyticsOptions),r.q.isFunction(e.action.onClick)&&e.action.onClick(),e.action.href&&i.Q.Ab.PageLoad(e.action.href,e.action.openInNewTab)}return e.action.href?n.createElement("a",{className:v(e.action.className),onClick:a,href:e.action.href},e.action.svgName&&n.createElement(o.x,{svgName:e.action.svgName,className:"d-inline-block svg-container me-2 align-middle"}),n.createElement("span",{className:"align-middle"},t())):n.createElement("span",{className:"cursor-pointer ".concat(v(e.action.className)),onClick:a,role:"button",tabIndex:0,onKeyDown:function(e){return"Enter"===e.key&&a(e)}},e.action.svgName&&n.createElement(o.x,{svgName:e.action.svgName,className:"d-inline-block svg-container me-2"}),t())}function f(e){if(!e.actions||!e.actions.length)return n.createElement(n.Fragment,null);var t=e.actions.some((function(e){return e.lazyPlaceholder})),a="dropdown";e.className&&(a+=" ".concat(e.className));var r,i="actions-dropdown-".concat(c.Y.getRandomInt()),l="dropdown-toggle px-0 ".concat(d.dropdownToggle);return e.dropdownToggleClassName&&(l+=" ".concat(e.dropdownToggleClassName)),n.createElement("div",{className:a},n.createElement("button",{className:l,type:"button",id:i,"data-bs-toggle":"dropdown","data-toggle":"dropdown","aria-haspopup":"true","aria-expanded":"false","aria-label":"More actions dropdown",onClick:t?e.fetchMore:null},n.createElement(o.x,{svgName:m.vn.More,size:e.dropdownToggleSvgSize})),n.createElement("ul",{className:"dropdown-menu dropdown-menu-end dropdown-menu-right font-size-normal","aria-labelledby":i},t?n.createElement(p,null):e.actions.map((function(e,t){var a=void 0!==r&&r!==e.group;return r=e.group,e.tooltip?n.createElement("li",{key:t},a&&n.createElement("hr",{className:"dropdown-divider",role:"separator"}),n.createElement(u.u,{title:e.tooltip,spanHack:!0},n.createElement(g,{action:e}))):n.createElement("li",{key:t},a&&n.createElement("hr",{className:"dropdown-divider",role:"separator"}),n.createElement(g,{action:e}))}))))}f.defaultProps={dropdownToggleClassName:"btn btn-light",dropdownToggleSvgSize:o.S.Small}},18995:(e,t,a)=>{a.d(t,{e:()=>s});var n=a(32735),r=a(23481),i=a(40391),c=a(36532),l=r.T.encloseNamespace("shared.avatarList");function s(e){var t=e.items.length>e.maxAvatars?e.items.slice(0,e.maxAvatars-1):e.items,a=e.items.length>t.length?e.items.slice(e.maxAvatars-1):[],r=e.avatarItem,s=a.length,o="sm"===e.avatarSize?4:8;function u(t){return{transform:"translateX(".concat((e.hasShareLink?t+1:t)*-o,"px)"),zIndex:e.maxAvatars-t}}return 0===t.length&&0===a.length?n.createElement(n.Fragment,null):n.createElement("div",{className:"d-flex",style:{marginRight:"-".concat((t.length-1+(a.length?1:0)+(e.hasShareLink?1:0))*o,"px")}},e.hasShareLink&&n.createElement("div",{style:{zIndex:e.maxAvatars+1}},n.createElement(i.Ad,{text:e.shareLinkText,avatarSize:e.avatarSize,className:"bg-dark text-white"})),t.map((function(t,a){return n.createElement("div",{className:"".concat(e.avatarContainerClassname||""),key:t.id,style:u(a)},n.createElement(r,{item:t,imageCdnUrl:e.imageCdnUrl,index:a,maxAvatars:e.maxAvatars}))})),!!a.length&&n.createElement("div",{className:"".concat(e.avatarContainerClassname||""," bg-white rounded-circle"),style:{transform:"translateX(".concat(t.length*-o,"px)"),zIndex:e.maxAvatars-t.length}},n.createElement(c.u,{title:e.getHiddenTooltip?e.getHiddenTooltip(a):e.roleToDisplay?l("staff"===e.roleToDisplay?"staff":"student",{count:s,smartCount:s}):l("users",{count:s,smartCount:s}),spanHack:!0,spanHackClassName:"h-100 w-100"},n.createElement("div",{className:"d-flex justify-content-center align-items-center border border-dark rounded-circle h-100 w-100 ".concat(e.numberClassname||"")},"+".concat(a.length)))))}s.defaultProps={maxAvatars:5}},38502:(e,t,a)=>{a.d(t,{r:()=>m});var n=a(32735),r=a(49985),i=a(36848),c=a(18559),l=a(11607),s=a(83914),o=a(87432);function u(e){return n.createElement(n.Fragment,null,!!e.tab.svgName&&n.createElement("div",{className:e.tab.name?"pe-1":""},n.createElement(s.x,{svgName:e.tab.svgName})),e.tab.name,"number"==typeof e.tab.count&&n.createElement("div",{className:"ps-2"},n.createElement(c.C,{type:c.g.Count,data:e.tab.count})))}function m(e){var t;return n.createElement("nav",{className:null!==(t=e.className)&&void 0!==t?t:"",ref:e.containerRef},n.createElement("ul",{className:"\n list-unstyled d-inline-block m-0 ".concat(o.Z.pillTabSelector,"\n ").concat(e.borderRadius?o.Z.radiusSmall:"","\n ").concat(e.listClassName,"\n ")},e.tabs.map((function(e,t){return n.createElement("li",{className:"\n p-0 ".concat(o.Z.tab," ").concat(e.active?"btn btn-dark":"btn btn-outline-dark","\n ").concat(e.name?o.Z.minWidth:""," ").concat(e.className,"\n "),key:t},e.appLink?n.createElement(i.F,{appLink:e.appLink,analyticsData:e.analyticsData,analyticsOptions:e.analyticsOptions,className:"\n cursor-pointer d-flex align-items-center justify-content-center\n text-decoration-none text-reset px-2 text-nowrap ".concat(o.Z.tabLink,"\n ")},n.createElement(u,{tab:e})):n.createElement(l.L,{className:"\n cursor-pointer d-flex align-items-center justify-content-center\n text-decoration-none text-reset px-2 text-nowrap ".concat(o.Z.tabLink,"\n "),onClick:function(){return function(e){!e.active&&e.onSelect&&(e.onSelect(),e.analyticsData&&e.analyticsOptions&&r.k.logUserAction(e.analyticsData,e.analyticsOptions))}(e)}},n.createElement(u,{tab:e})))}))))}m.defaultProps={borderRadius:"lg"}},39902:(e,t,a)=>{a.d(t,{f:()=>c});var n=a(20354),r=a(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 c(e,t){var a=r.m.chunk(e,25).map((function(e){return t(r.m.uniq(e))})),c=n.a.useBasicFetchAll(a);return{items:c.data.length?r.m.flatten(c.data).reduce((function(e,t){return Object.assign(Object.assign({},e),(a={},n=t.id,r=t,(n=function(e){var t=function(e){if("object"!=i(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var a=t.call(e,"string");if("object"!=i(a))return a;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==i(t)?t:t+""}(n))in a?Object.defineProperty(a,n,{value:r,enumerable:!0,configurable:!0,writable:!0}):a[n]=r,a));var a,n,r}),{}):null,isFetching:c.isFetching}}},62875:(e,t,a)=>{function n(e,t,a){var n="".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&&(n+=":".concat(r)),i&&(n+=":".concat(i)),a&&(n+=":".concat(a)),n}a.d(t,{H:()=>n})},70227:(e,t,a)=>{a.d(t,{c:()=>i});var n=a(97395),r=a(4594),i={getObjectUrl:function(e,t){var a=e.analyticsWebUrl;if(a){var i="";switch(t.typeId){case r.E.Video:i="/videos/".concat(t.id,"/overview");break;case r.E.Clip:i="/clips/".concat(t.id,"/overview");break;case r.E.Interactive:i="/interactives/".concat(t.id,"/overview")}if(i)return n._.safeUrlConcat(a,i)}}}},36511:(e,t,a)=>{a.d(t,{I:()=>r});var n=a(40424);function r(e){switch(e){case n.R.Pink:return"pink";case n.R.Orange:return"orange";case n.R.Green:return"green";case n.R.Blue:return"blue";case n.R.Purple:return"purple";case n.R.Indigo:return"indigo";default:return"pink"}}},2523:(e,t,a)=>{a.d(t,{w:()=>p});var n=a(32735),r=a(23481),i=a(81886),c=a(38502),l=a(75795),s=a(14070),o=a(97291),u=r.T.encloseNamespace("share.sharesHeader"),m={application:o.O.MY_SHARES,action:s.e.MyShares.SHARED_BY_ME},d={application:o.O.MY_SHARES,action:s.e.MyShares.SHARED_WITH_ME};function p(){return n.createElement("div",{className:"pb-3"},n.createElement("h1",{className:"h2 mb-3"},u("shares")),n.createElement(c.r,{tabs:(t=null===(e=l.O.getCurrentRoute())||void 0===e?void 0:e.appLink,[{name:u("sharedByMe"),onSelect:function(){return i.Q.C$.trigger(m)},active:(null==t?void 0:t.action)===m.action},{name:u("sharedWithMe"),onSelect:function(){return i.Q.C$.trigger(d)},active:(null==t?void 0:t.action)===d.action}])}));var e,t}},76233:(e,t,a)=>{a.r(t),a.d(t,{SharedByMeView:()=>ue});var n=a(32735),r=a(81886),i=a(23481),c=a(23232),l=i.T.encloseNamespace("share.sharedByMeEmptyState");function s(e){return n.createElement(c.u,null,n.createElement(c.u.Image,{src:e.imageUrl,size:"small"}),n.createElement(c.u.Heading,null,l(e.useInteractiveCopy?"interactivesHeading":"genericHeading")),n.createElement(c.u.Info,null,l(e.useInteractiveCopy?"interactivesInfo":"genericInfo")),!!e.appLink&&n.createElement(c.u.Cta,{appLink:e.appLink,text:l("cta")}))}var o=a(95834),u=a(69674),m=a(82602),d=a(75896),p=a(110),v=a(65858),g=a(83914),f=a(36532),h=a(49080),y=a(85063),E=a(35223);var b=i.T.encloseNamespace("share.shareStatusIndicator");function N(e){if(e.type===y.y.DirectShare)return b("active");switch(e.status){case h.F.Active:return b("active");case h.F.Expired:return b("expired")}}function S(e){if(e.type===y.y.DirectShare)return"bg-success";switch(e.status){case h.F.Active:return"bg-success";case h.F.Expired:return"bg-gray-500"}}function w(e){var t;return e.share.type!==y.y.DirectShare||(null===(t=e.share.recipients)||void 0===t?void 0:t.length)?e.share.type===y.y.ShareLink&&e.share.isPasswordProtected?n.createElement(f.u,{title:b("passwordProtected"),spanHack:!0},n.createElement(g.x,{svgName:E.vn.Lock,size:g.S.Small})):n.createElement(f.u,{title:N(e.share),spanHack:!0,spanHackClassName:"T6YAv"},n.createElement("div",{className:"".concat("_MRHG"," ").concat(S(e.share))})):n.createElement(n.Fragment,null)}var k=a(29024),C=a(40391),x=a(31754),I=a(64249),A=a(83657),T=a(36848),O=a(83345),j=a(11882),M=a(31908);function H(e){return H="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},H(e)}function L(e,t){(null==t||t>e.length)&&(t=e.length);for(var a=0,n=Array(t);a<t;a++)n[a]=e[a];return n}var F="share.sharedByMeTable",D=i.T.encloseNamespace(F);function U(e){var t;if(e.type===y.y.ShareLink||!(null===(t=null==e?void 0:e.recipients)||void 0===t?void 0:t.length))return e.dateCreated;var a=e.recipients.map((function(e){return e.dateShared}));return a.sort((function(e,t){return p.O.isSame(e,t)?0:p.O.isAfter(e,t)?1:-2})),a.length?d.m.last(a):""}function R(e,t,a,r,i,c,l,s){var o=s&&(s.xs||s.sm),u=[{Header:c?"":t,accessor:"sharedObject",id:"image",Cell:function(e){var t=e.value;return n.createElement("div",{className:"w-100"},n.createElement(k.k,{object:t,appLink:a(t),showVideoMetadata:!0,locationContext:v.LZ.SharedByMe}))},minWidth:140,maxWidth:30},{accessor:"sharedObject",id:"name",Cell:function(e){var t,r=e.value;return r.name?M.M.isVideoType(r)&&!(null===(t=M.M.getCanBeConsumed(r))||void 0===t?void 0:t.canNavigate)?n.createElement("span",{className:"clamp-2"},r.name):n.createElement("div",{className:"clamp-2"},M.M.isVideoType(r)&&n.createElement(j.$,{type:"series",video:r,appLink:"series"in r&&r.series?a(r.series):null,analyticsOptions:{location:v.LZ.Insights}}),n.createElement(T.F,{appLink:a(r),analyticsData:{id:r.id,name:r.name},analyticsOptions:{entity:I.I.getAnalyticsEntity(r.type),actionType:v.Vw.Click,location:v.LZ.SharedByMe}},r.name)):n.createElement("span",null,n.createElement(O.x,{namespace:F,phrase:"videoUnavailable"}))},width:60},{Header:0===e?D("sharedTo"):"",accessor:"shareRecipients",Cell:function(e){var t=e.value;return t?t.length?n.createElement(C.Kh,{recipients:t,imageCdnUrl:i,maxAvatars:o?1:2}):n.createElement(C.m9,null):n.createElement(C.Ad,null)},width:40},!o&&{Header:0===e?D("shared"):"",id:"dateShared",accessor:function(e){return(0,m.WU)(e.dateShared)},width:40},{accessor:"sharedObject",id:"actions",Cell:function(e){var t=e.value;return n.createElement(A.e,{actions:r(t),className:"w-100 justify-content-end pe-2"})},width:20}],d={Header:t,accessor:"share",id:"status",Cell:function(e){var t=e.value;return n.createElement(w,{share:t})},width:5},p={Header:D("views"),accessor:"viewCount",width:30};return c&&u.splice(0,0,d),l&&u.splice(u.length-1,0,p),u.filter(Boolean)}var z=n.memo((function(e){var t,a,r,i,c,l,s=(t=e.sentShares,a=e.sharedObjects,r=e.shareRecipients,i=!!e.groupByDateShared,c=e.dependencies,n.useMemo((function(){var e,n,c,l=[];return t.forEach((function(e){var t,n,i=a.find((function(t){return t.id===e.objectId})),c=null;e.type===y.y.DirectShare&&(c=[],null===(t=e.recipients)||void 0===t||t.forEach((function(e){var t=r.find((function(t){return t.id===e.id}));t&&c.push(t)}))),i&&l.push({share:e,sharedObject:i,shareRecipients:c,dateShared:U(e),viewCount:null!==(n=e.viewCount)&&void 0!==n?n:0})})),i?x.x.groupByDateShared(l):(e={},n=D("title"),c=l,(n=function(e){var t=function(e){if("object"!=H(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var a=t.call(e,"string");if("object"!=H(a))return a;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==H(t)?t:t+""}(n))in e?Object.defineProperty(e,n,{value:c,enumerable:!0,configurable:!0,writable:!0}):e[n]=c,e)}),function(e){if(Array.isArray(e))return L(e)}(l=c)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(l)||function(e,t){if(e){if("string"==typeof e)return L(e,t);var a={}.toString.call(e).slice(8,-1);return"Object"===a&&e.constructor&&(a=e.constructor.name),"Map"===a||"Set"===a?Array.from(e):"Arguments"===a||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(a)?L(e,t):void 0}}(l)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()));return n.createElement(n.Fragment,null,Object.keys(s).map((function(t,a){return n.createElement(u.i,{key:a,columns:R(a,t,e.getObjectAppLink,e.getObjectActions,e.imageCdnUrl,e.showStatus,e.showViewCount,e.breakpoints),data:s[t],theme:o.J})})))})),B=a(71020),P=a(16714),_=a(79967),W=a(22902),Z=a(79612),V=a(37802),$=a(99742),G=a(14070),J=a(97291),K=a(64208),Y=a(86099),q=a(2523);const Q={imageColumn:"uIOaA",nameColumn:"Nta2B",sharedToColumn:"XTJBC",dateSharedColumn:"HdARK",actionsColumn:"DXyZw",heading:"XZ6o7",image:"MolfU",name:"MM43m",avatar:"EboYM",date:"by_XM",actions:"_S2M_"};function X(){return n.createElement("div",{className:"d-flex striped-row rounded"},n.createElement("div",{className:"d-flex align-items-center justify-content-center p-2 ".concat(Q.imageColumn)},n.createElement("div",{className:"partial-loading-background rounded w-100 ".concat(Q.image)})),n.createElement("div",{className:"d-flex align-items-center p-2 ".concat(Q.nameColumn)},n.createElement("div",{className:"partial-loading-background w-75 ".concat(Q.name)})),n.createElement("div",{className:"d-flex align-items-center p-2 ".concat(Q.sharedToColumn)},n.createElement("div",{className:"partial-loading-background ".concat(Q.avatar)})),n.createElement("div",{className:"d-none d-md-flex align-items-center p-2 ".concat(Q.dateSharedColumn)},n.createElement("div",{className:"partial-loading-background ".concat(Q.date)})),n.createElement("div",{className:"d-flex align-items-center justify-content-end p-2 ".concat(Q.actionsColumn)},n.createElement("div",{className:"partial-loading-background rounded me-2 ".concat(Q.actions)})))}function ee(e){return n.createElement("div",{className:"d-flex mb-1"},n.createElement("div",{className:"".concat(Q.imageColumn," p-2")},n.createElement("div",{className:"partial-loading-background ".concat(Q.heading)})),n.createElement("div",{className:"".concat(Q.nameColumn," p-2")}," "),n.createElement("div",{className:"".concat(Q.sharedToColumn," p-2")},e.fullHeader?n.createElement("div",{className:"partial-loading-background ".concat(Q.heading)}):n.createElement(n.Fragment,null," ")),n.createElement("div",{className:"".concat(Q.dateSharedColumn," p-2 d-none d-md-flex")},e.fullHeader?n.createElement("div",{className:"partial-loading-background ".concat(Q.heading)}):n.createElement(n.Fragment,null," ")),n.createElement("div",{className:"".concat(Q.actionsColumn," p-2")}," "))}function te(){return n.createElement(n.Fragment,null,n.createElement("div",{className:"mb-3"},n.createElement(ee,{fullHeader:!0}),n.createElement("div",{className:"striped-list no-full-width"},n.createElement(X,null),n.createElement(X,null),n.createElement(X,null))),n.createElement("div",{className:"mb-3"},n.createElement(ee,null),n.createElement("div",{className:"striped-list no-full-width"},n.createElement(X,null),n.createElement(X,null),n.createElement(X,null),n.createElement(X,null))),n.createElement("div",{className:"mb-3"},n.createElement(ee,null),n.createElement("div",{className:"striped-list no-full-width"},n.createElement(X,null),n.createElement(X,null),n.createElement(X,null),n.createElement(X,null),n.createElement(X,null),n.createElement(X,null),n.createElement(X,null),n.createElement(X,null),n.createElement(X,null),n.createElement(X,null))))}var ae=a(20354),ne=a(4594),re=a(39151),ie=a(70227),ce=i.T.encloseNamespace("liteShare.sharedByMe");function le(e,t){return{label:ce("editShareSettings"),appLink:{application:J.O.DEFAULT,action:G.e.Default.SHARE,args:[e.id],params:{entityType:t}}}}function se(e){return n.createElement(f.u,{title:e.label,spanHack:!0},n.createElement("a",{href:e.url,target:"_blank"},n.createElement(g.x,{svgName:E.vn.Analytics})))}var oe=i.T.encloseNamespace("liteShare.sharedByMe");function ue(){var e=(0,W.T)().hasPermissions,t=(0,V.r)(null).hasInsights,a=(0,_.k)(),i=(0,K.aH)(),c=i.sentShares,l=i.sharedObjects,o=i.shareRecipients,u=i.isFetching,m=i.showPartialLoading,d=i.nextCursor,p=i.hasMore,v=i.fetchNext,g=i.imageCdnUrl,f=e(P.C.ViewMyShares)&&t;n.useEffect((function(){f&&r.Q.C$.trigger({application:J.O.MY_SHARES,action:G.e.MyShares.HOME},{replace:!0})}),[f]),(0,Z.M)({title:oe("sharedByMe")});var h=function(e){var t=ae.a.useBasicFetch(re.L.config()),a=e.xs||e.sm;return n.useCallback((function(e){return function(e,t,a){var r,i="viewUsage";if(M.M.isVideo(e)&&(r="video"),M.M.isInteractive(e)&&(r="interactive",i="viewResults"),M.M.isClip(e)&&(r="clip"),e.typeId===ne.E.Series&&(r="series"),e.typeId===ne.E.Playlist&&(r="playlist"),M.M.isVideoType(e)&&!M.M.getCanBeConsumed(e).canConsume)return[];var c=[le(e,r)],l=ie.c.getObjectUrl(a,e);return l&&c.push({label:t?ce(i):function(){return n.createElement(se,{label:ce(i),url:l})},className:"btn btn-link",button:!t,href:ie.c.getObjectUrl(a,e),openInNewTab:!0}),c}(e,a,t.data)}),[a])}(a);return n.createElement("div",{className:"px-3"},!f&&n.createElement(q.w,null),m?n.createElement(te,null):c.length?n.createElement(n.Fragment,null,n.createElement(z,{sentShares:c,sharedObjects:l,shareRecipients:o,getObjectAppLink:Y.Qh,getObjectActions:h,imageCdnUrl:g,groupByDateShared:!0,dependencies:[u],breakpoints:a}),(p||u)&&n.createElement(B._,{isFetching:u,fetchNext:v,nextCursor:d})):n.createElement(s,{appLink:{application:J.O.DASHBOARD,action:G.e.Dashboard.HOME},imageUrl:$.W.EmptyStates.Share.SHARED_WITH_ME}))}},64208:(e,t,a)=>{a.d(t,{aH:()=>b});var n=a(32735),r=a(20354),i=a(1048),c=a(71553),l=a(30439),s=a(4594),o=a(39151),u=a(31949),m=a(39902),d=a(60115),p=a(75896),v=a(85063),g={getDirectShares:function(e){var t;return null!==(t=null==e?void 0:e.filter((function(e){return e.type===v.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 f(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var a=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=a){var n,r,i,c,l=[],s=!0,o=!1;try{if(i=(a=a.call(e)).next,0===t){if(Object(a)!==a)return;s=!1}else for(;!(s=(n=i.call(a)).done)&&(l.push(n.value),l.length!==t);s=!0);}catch(e){o=!0,r=e}finally{try{if(!s&&null!=a.return&&(c=a.return(),Object(c)!==c))return}finally{if(o)throw r}}return l}}(e,t)||h(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 h(e,t){if(e){if("string"==typeof e)return y(e,t);var a={}.toString.call(e).slice(8,-1);return"Object"===a&&e.constructor&&(a=e.constructor.name),"Map"===a||"Set"===a?Array.from(e):"Arguments"===a||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(a)?y(e,t):void 0}}function y(e,t){(null==t||t>e.length)&&(t=e.length);for(var a=0,n=Array(t);a<t;a++)n[a]=e[a];return n}function E(e){return e.items?Object.values(e.items):[]}function b(e,t){var a,p,v=!(arguments.length>2&&void 0!==arguments[2])||arguments[2],b=r.a.useGetFetch(),N=r.a.useBasicFetch(u.N.currentUser()),S=function(t){return v&&l.o.sentShare(Object.assign({cursor:t},e))},w=function(e){return b(S(e))},k=(0,d.K)(S,w),C=k.items,x=k.hasMore,I=k.isFetching,A=k.nextCursor,T=null!==(a=null==C?void 0:C.map((function(e){return e.objectId})))&&void 0!==a?a:[],O=(0,m.f)(T,(function(e){return l.o.sharedObjectsById(e)})),j=g.getRecipientIds(C),M=(0,m.f)(j,(function(e){return l.o.getRecipientsById(e,N.data.customerId)})),H=r.a.useBasicFetch(o.L.config()),L=JSON.stringify(e),F=function(e,t,a,r,i){var c=f(n.useState(!!t.items),2),l=c[0],s=c[1],o=f(n.useState(!!r.items),2),u=o[0],m=o[1];return n.useEffect((function(){s(!1),m(!1)}),[i]),n.useEffect((function(){!t.isFetching&&t.items&&s(!0)}),[t.isFetching,i]),n.useEffect((function(){!r.isFetching&&r.items&&m(!0)}),[r.isFetching,i]),!(e&&!e.length)&&(!e||!l||a.length&&!u)}(C,O,j,M,L),D=I||O.isFetching||M.isFetching,U=E(O),R=f(n.useState(E(M)),2),z=R[0],B=R[1];n.useEffect((function(){i.t.isEmpty(M.items)||B(E(M))}),[!!M.items,M.isFetching,L]);var P=t&&(null==U?void 0:U.length)&&U.reduce((function(e,t){if(t.typeId!==s.E.Interactive)return e;var a,n=t;return[].concat(function(e){if(Array.isArray(e))return y(e)}(a=e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(a)||h(a)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}(),[{metadataId:n.id,interactiveId:n.interactiveId}])}),[]),_=r.a.useBasicFetch(t&&!!O.items&&N.data&&c.I.pendingReviews({interactives:P,filters:{currentCustomerId:N.data.customerId,currentUserId:N.data.id}})),W=[D,L,_.isFetching,z.length];return{sentShares:C,sharedObjects:U,shareRecipients:z,interactivesPendingReview:_.data,isFetching:D,showPartialLoading:F,nextCursor:A,hasMore:x,fetchNext:w,imageCdnUrl:null===(p=H.data)||void 0===p?void 0:p.imageCdnUrl,dependencies:W}}},87432:(e,t,a)=>{a.d(t,{Z:()=>n});const n={pillTabSelector:"Hdi6o",tab:"RvNxr",minWidth:"GHSz9",radiusSmall:"VhJJa",tabLink:"WFyvo"}},82602:(e,t,a)=>{a.d(t,{WU:()=>o});var n=["second","minute","hour","day","week","month","year"],r=["秒","分钟","小时","天","周","个月","年"],i={},c=function(e,t){i[e]=t},l=[60,60,24,7,365/7/12,12];function s(e){return e instanceof Date?e:!isNaN(e)||/^\d+$/.test(e)?new Date(parseInt(e)):(e=(e||"").trim().replace(/\.\d+/,"").replace(/-/,"/").replace(/-/,"/").replace(/(\d)T(\d)/,"$1 $2").replace(/Z/," UTC").replace(/([+-]\d\d):?(\d\d)/," $1$2"),new Date(e))}var o=function(e,t,a){var n=function(e,t){return(+(t?s(t):new Date)-+s(e))/1e3}(e,a&&a.relativeDate);return function(e,t){for(var a=e<0?1:0,n=e=Math.abs(e),r=0;e>=l[r]&&r<l.length;r++)e/=l[r];return(e=Math.floor(e))>(0==(r*=2)?9:1)&&(r+=1),t(e,r,n)[a].replace("%s",e.toString())}(n,function(e){return i[e]||i.en_US}(t))};c("en_US",(function(e,t){if(0===t)return["just now","right now"];var a=n[Math.floor(t/2)];return e>1&&(a+="s"),[e+" "+a+" ago","in "+e+" "+a]})),c("zh_CN",(function(e,t){if(0===t)return["刚刚","片刻后"];var a=r[~~(t/2)];return[e+" "+a+"前",e+" "+a+"后"]}))}}]);
2
- //# sourceMappingURL=6965-46edd86c90-lite.chunk.js.map
1
+ "use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[6965],{71553:(e,t,a)=>{a.d(t,{I:()=>c});var n=a(99940),r=a(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 c={interactiveResultSet:function(e,t,a,c,l,s,o,u){return{url:l?"/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),c),data:i(a,c),type:n.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:s,error:o,always:u}},mark:function(e,t,a,r,i,c,l){return{url:"/api/domain/v1/analytics/answers/".concat(a),key:"mark:answer:".concat(a,":").concat(r.resultId),type:n.k.PUT,data:r,normalize:!1,invalidationKeys:"interactive:result:set:".concat(e,":").concat(t),success:i,error:c,always:l}},pendingReviews:function(e){return{url:"/api/domain/v1/analytics/interactives/pending-reviews/summary",key:"interactives:pending:reviews",type:n.k.POST,data:e}},interactiveResultsReport:function(e){return{url:"{gateway}/v2/analytics/interactives/report",key:"interactive:results:report",data:e,type:n.k.POST,normalize:!1}}}},40391:(e,t,a)=>{a.d(t,{m9:()=>E,Ad:()=>b,Kh:()=>N});var n=a(32735),r=a(23481),i=a(75896),c=a(20789),l=a(18995),s=a(60376),o=a(83914),u=a(36532),m=a(4594),d=a(36511),p=a(35223),v=a(64818);const g={avatarContainer:"ByxQa",sm:"EgJ0v",sharedAvatar:"cW0NT"};var f=r.T.encloseNamespace("reportsShare.sharedToAvatarList");function h(e){var t=i.m.countBy(e,"typeId"),a=t[m.E.User],n=t[m.E.Classroom],r=t[m.E.ClassroomGroup];return a&&n&&r?f("classroomsGroupsAndUsers",{userCount:a,classroomCount:n,groupCount:r}):a&&n?f("classroomsAndUsers",{userCount:a,classroomCount:n}):a&&r?f("groupsAndUsers",{userCount:a,groupCount:r}):n&&r?f("classroomsAndGroups",{classroomCount:n,groupCount:r}):a?f("users",{userCount:a}):n?f("classrooms",{classroomCount:n}):r?f("groups",{groupCount:r}):void 0}function y(e){var t,a,r,i,l,f=(null===(t=e.item)||void 0===t?void 0:t.typeId)===m.E.User&&e.item,h=(null===(a=e.item)||void 0===a?void 0:a.typeId)===m.E.Classroom&&e.item,y=(null===(r=e.item)||void 0===r?void 0:r.typeId)===m.E.ClassroomGroup&&e.item,E="d-flex justify-content-center align-items-center text-white rounded-circle h-100 w-100";return n.createElement(n.Fragment,null,!!f&&n.createElement(u.u,{title:"".concat(f.name," ").concat(f.surname),spanHack:!0,spanHackClassName:"h-100 w-100"},n.createElement(c.q,{imageUrl:null===(i=f.avatar)||void 0===i?void 0:i.url,imageCdnUrl:e.imageCdnUrl,initials:v.l.getInitials(f.name,f.surname),extraClasses:g.sharedAvatar})),!!h&&n.createElement(u.u,{title:h.name,spanHack:!0,spanHackClassName:"h-100 w-100"},n.createElement("div",{className:E},n.createElement(s.f,{svgName:p.vn.Classrooms,svgSize:o.S.Large,variant:"teal"}))),!!y&&n.createElement(u.u,{title:y.name,spanHack:!0,spanHackClassName:"h-100 w-100"},n.createElement("div",{className:E},n.createElement(s.f,{svgName:p.vn.Group,variant:(0,d.I)(null===(l=y.metadata)||void 0===l?void 0:l.colour)}))))}function E(e){return n.createElement("div",{className:"".concat(g.avatarContainer," ").concat("sm"===e.avatarSize?g.sm:"")},n.createElement(u.u,{title:f("anonymous"),spanHack:!0,spanHackClassName:"bg-light text-dark d-flex justify-content-center align-items-center rounded-circle h-100 w-100"},n.createElement(o.x,{svgName:p.vn.Anonymous,size:"sm"===e.avatarSize?o.S.Small:null})))}function b(e){return n.createElement("div",{className:"".concat(g.avatarContainer," ").concat("sm"===e.avatarSize?g.sm:"")},n.createElement(u.u,{title:e.text||f("sharedLink"),spanHack:!0,spanHackClassName:"bg-light text-dark d-flex justify-content-center align-items-center rounded-circle h-100 w-100 ".concat(e.className||"")},n.createElement(o.x,{svgName:p.vn.Link,size:"sm"===e.avatarSize?o.S.Small:null})))}function N(e){return n.createElement(l.e,Object.assign({},e,{items:e.recipients,avatarItem:y,avatarContainerClassname:"".concat(g.avatarContainer," ").concat("sm"===e.avatarSize?g.sm:""),getHiddenTooltip:h,hasShareLink:e.hasShareLink,shareLinkText:e.shareLinkText}))}N.defaultProps={maxAvatars:5}},95834:(e,t,a)=>{a.d(t,{J:()=>n});var n={table:"striped-list no-full-width pb-3",header:"fw-semibold pb-1",headerCell:"py-2 ps-2 text-nowrap",row:"striped-row rounded",cell:"d-flex align-items-center p-2"}},83657:(e,t,a)=>{a.d(t,{e:()=>o});var n=a(32735),r=a(91967),i=a(10874),c=a(36532),l=a(42735),s=a(86509);function o(e){var t=n.useMemo((function(){return e.actions.sort((function(e,t){return e.order-t.order}))}),[e.actions]),a=[],o=[];t.forEach((function(e){e.button?a.push(e):o.push(e)}));var u="d-flex";return e.className&&(u+=" ".concat(e.className)),a.length||o.length?n.createElement("div",{className:u},a.length?a.map((function(t,a){return n.createElement(n.Fragment,{key:a},function(){if(t.label){var a=r.q.isFunction(t.label)?t.label:function(){return n.createElement(n.Fragment,null,t.label)};return n.createElement(l.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},a())}var s=n.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?n.createElement(c.u,{title:t.tooltip,spanHack:!0},s):s}())})):n.createElement(n.Fragment,null),e.sortComponent&&e.sortComponent,o.length?n.createElement(s.m,{actions:o,dropdownToggleClassName:e.actionsDropdownClassName,dropdownToggleSvgSize:e.dropdownToggleSvgSize,fetchMore:e.fetchMore}):n.createElement(n.Fragment,null)):n.createElement(n.Fragment,null)}},86509:(e,t,a)=>{a.d(t,{m:()=>f});var n=a(32735),r=a(91967),i=a(81886),c=a(45157),l=a(49985),s=a(36848),o=a(83914),u=a(36532),m=a(35223);const d={dropdownToggle:"UCAnJ"};function p(){return n.createElement(n.Fragment,null,n.createElement("div",{style:{padding:"0.53125rem 1rem"}},n.createElement("div",{className:"partial-loading-background",style:{height:"1.0625rem",width:"8rem"}})),n.createElement("div",{style:{padding:"0.53125rem 1rem"}},n.createElement("div",{className:"partial-loading-background",style:{height:"1.0625rem",width:"12rem"}})),n.createElement("div",{style:{padding:"0.53125rem 1rem"}},n.createElement("div",{className:"partial-loading-background",style:{height:"1.0625rem",width:"11rem"}})),n.createElement("div",{style:{padding:"0.53125rem 1rem"}},n.createElement("div",{className:"partial-loading-background",style:{height:"1.0625rem",width:"9rem"}})))}function v(e){var t="dropdown-item";return e&&(t+=" ".concat(e)),t}function g(e){var t=r.q.isFunction(e.action.label)?e.action.label:function(){return n.createElement(n.Fragment,null,e.action.label)};if(e.action.appLink)return n.createElement(s.F,{appLink:e.action.appLink,onClick:e.action.onClick,className:v(e.action.className),analyticsData:e.action.analyticsData,analyticsOptions:e.action.analyticsOptions,openInNewTab:e.action.openInNewTab,disabled:e.action.disabled},e.action.svgName&&n.createElement(o.x,{svgName:e.action.svgName,className:"d-inline-block svg-container me-2 align-middle"}),n.createElement("span",{className:"align-middle"},t()));function a(t){t.preventDefault(),e.action.analyticsData&&e.action.analyticsOptions&&l.k.logUserAction(e.action.analyticsData,e.action.analyticsOptions),r.q.isFunction(e.action.onClick)&&e.action.onClick(),e.action.href&&i.Q.Ab.PageLoad(e.action.href,e.action.openInNewTab)}return e.action.href?n.createElement("a",{className:v(e.action.className),onClick:a,href:e.action.href},e.action.svgName&&n.createElement(o.x,{svgName:e.action.svgName,className:"d-inline-block svg-container me-2 align-middle"}),n.createElement("span",{className:"align-middle"},t())):n.createElement("span",{className:"cursor-pointer ".concat(v(e.action.className)),onClick:a,role:"button",tabIndex:0,onKeyDown:function(e){return"Enter"===e.key&&a(e)}},e.action.svgName&&n.createElement(o.x,{svgName:e.action.svgName,className:"d-inline-block svg-container me-2"}),t())}function f(e){if(!e.actions||!e.actions.length)return n.createElement(n.Fragment,null);var t=e.actions.some((function(e){return e.lazyPlaceholder})),a="dropdown";e.className&&(a+=" ".concat(e.className));var r,i="actions-dropdown-".concat(c.Y.getRandomInt()),l="dropdown-toggle px-0 ".concat(d.dropdownToggle);return e.dropdownToggleClassName&&(l+=" ".concat(e.dropdownToggleClassName)),n.createElement("div",{className:a},n.createElement("button",{className:l,type:"button",id:i,"data-bs-toggle":"dropdown","data-toggle":"dropdown","aria-haspopup":"true","aria-expanded":"false","aria-label":"More actions dropdown",onClick:t?e.fetchMore:null},n.createElement(o.x,{svgName:m.vn.More,size:e.dropdownToggleSvgSize})),n.createElement("ul",{className:"dropdown-menu dropdown-menu-end dropdown-menu-right font-size-normal","aria-labelledby":i},t?n.createElement(p,null):e.actions.map((function(e,t){var a=void 0!==r&&r!==e.group;return r=e.group,e.tooltip?n.createElement("li",{key:t},a&&n.createElement("hr",{className:"dropdown-divider",role:"separator"}),n.createElement(u.u,{title:e.tooltip,spanHack:!0},n.createElement(g,{action:e}))):n.createElement("li",{key:t},a&&n.createElement("hr",{className:"dropdown-divider",role:"separator"}),n.createElement(g,{action:e}))}))))}f.defaultProps={dropdownToggleClassName:"btn btn-light",dropdownToggleSvgSize:o.S.Small}},18995:(e,t,a)=>{a.d(t,{e:()=>s});var n=a(32735),r=a(23481),i=a(40391),c=a(36532),l=r.T.encloseNamespace("shared.avatarList");function s(e){var t=e.items.length>e.maxAvatars?e.items.slice(0,e.maxAvatars-1):e.items,a=e.items.length>t.length?e.items.slice(e.maxAvatars-1):[],r=e.avatarItem,s=a.length,o="sm"===e.avatarSize?4:8;function u(t){return{transform:"translateX(".concat((e.hasShareLink?t+1:t)*-o,"px)"),zIndex:e.maxAvatars-t}}return 0===t.length&&0===a.length?n.createElement(n.Fragment,null):n.createElement("div",{className:"d-flex",style:{marginRight:"-".concat((t.length-1+(a.length?1:0)+(e.hasShareLink?1:0))*o,"px")}},e.hasShareLink&&n.createElement("div",{style:{zIndex:e.maxAvatars+1}},n.createElement(i.Ad,{text:e.shareLinkText,avatarSize:e.avatarSize,className:"bg-dark text-white"})),t.map((function(t,a){return n.createElement("div",{className:"".concat(e.avatarContainerClassname||""),key:t.id,style:u(a)},n.createElement(r,{item:t,imageCdnUrl:e.imageCdnUrl,index:a,maxAvatars:e.maxAvatars}))})),!!a.length&&n.createElement("div",{className:"".concat(e.avatarContainerClassname||""," bg-white rounded-circle"),style:{transform:"translateX(".concat(t.length*-o,"px)"),zIndex:e.maxAvatars-t.length}},n.createElement(c.u,{title:e.getHiddenTooltip?e.getHiddenTooltip(a):e.roleToDisplay?l("staff"===e.roleToDisplay?"staff":"student",{count:s,smartCount:s}):l("users",{count:s,smartCount:s}),spanHack:!0,spanHackClassName:"h-100 w-100"},n.createElement("div",{className:"d-flex justify-content-center align-items-center border border-dark rounded-circle h-100 w-100 ".concat(e.numberClassname||"")},"+".concat(a.length)))))}s.defaultProps={maxAvatars:5}},38502:(e,t,a)=>{a.d(t,{r:()=>m});var n=a(32735),r=a(49985),i=a(36848),c=a(18559),l=a(11607),s=a(83914),o=a(87432);function u(e){return n.createElement(n.Fragment,null,!!e.tab.svgName&&n.createElement("div",{className:e.tab.name?"pe-1":""},n.createElement(s.x,{svgName:e.tab.svgName})),e.tab.name,"number"==typeof e.tab.count&&n.createElement("div",{className:"ps-2"},n.createElement(c.C,{type:c.g.Count,data:e.tab.count})))}function m(e){var t;return n.createElement("nav",{className:null!==(t=e.className)&&void 0!==t?t:"",ref:e.containerRef},n.createElement("ul",{className:"\n list-unstyled d-inline-block m-0 ".concat(o.Z.pillTabSelector,"\n ").concat(e.borderRadius?o.Z.radiusSmall:"","\n ").concat(e.listClassName,"\n ")},e.tabs.map((function(e,t){return n.createElement("li",{className:"\n p-0 ".concat(o.Z.tab," ").concat(e.active?"btn btn-dark":"btn btn-outline-dark","\n ").concat(e.name?o.Z.minWidth:""," ").concat(e.className,"\n "),key:t},e.appLink?n.createElement(i.F,{appLink:e.appLink,analyticsData:e.analyticsData,analyticsOptions:e.analyticsOptions,className:"\n cursor-pointer d-flex align-items-center justify-content-center\n text-decoration-none text-reset px-2 text-nowrap ".concat(o.Z.tabLink,"\n ")},n.createElement(u,{tab:e})):n.createElement(l.L,{className:"\n cursor-pointer d-flex align-items-center justify-content-center\n text-decoration-none text-reset px-2 text-nowrap ".concat(o.Z.tabLink,"\n "),onClick:function(){return function(e){!e.active&&e.onSelect&&(e.onSelect(),e.analyticsData&&e.analyticsOptions&&r.k.logUserAction(e.analyticsData,e.analyticsOptions))}(e)}},n.createElement(u,{tab:e})))}))))}m.defaultProps={borderRadius:"lg"}},39902:(e,t,a)=>{a.d(t,{f:()=>c});var n=a(20354),r=a(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 c(e,t){var a=r.m.chunk(e,25).map((function(e){return t(r.m.uniq(e))})),c=n.a.useBasicFetchAll(a);return{items:c.data.length?r.m.flatten(c.data).reduce((function(e,t){return Object.assign(Object.assign({},e),(a={},n=t.id,r=t,(n=function(e){var t=function(e){if("object"!=i(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var a=t.call(e,"string");if("object"!=i(a))return a;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==i(t)?t:t+""}(n))in a?Object.defineProperty(a,n,{value:r,enumerable:!0,configurable:!0,writable:!0}):a[n]=r,a));var a,n,r}),{}):null,isFetching:c.isFetching}}},62875:(e,t,a)=>{function n(e,t,a){var n="".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&&(n+=":".concat(r)),i&&(n+=":".concat(i)),a&&(n+=":".concat(a)),n}a.d(t,{H:()=>n})},70227:(e,t,a)=>{a.d(t,{c:()=>i});var n=a(97395),r=a(4594),i={getObjectUrl:function(e,t){var a=e.analyticsWebUrl;if(a){var i="";switch(t.typeId){case r.E.Video:i="/videos/".concat(t.id,"/overview");break;case r.E.Clip:i="/clips/".concat(t.id,"/overview");break;case r.E.Interactive:i="/interactives/".concat(t.id,"/overview")}if(i)return n._.safeUrlConcat(a,i)}}}},36511:(e,t,a)=>{a.d(t,{I:()=>r});var n=a(40424);function r(e){switch(e){case n.R.Pink:return"pink";case n.R.Orange:return"orange";case n.R.Green:return"green";case n.R.Blue:return"blue";case n.R.Purple:return"purple";case n.R.Indigo:return"indigo";default:return"pink"}}},2523:(e,t,a)=>{a.d(t,{w:()=>p});var n=a(32735),r=a(23481),i=a(81886),c=a(38502),l=a(75795),s=a(14070),o=a(97291),u=r.T.encloseNamespace("share.sharesHeader"),m={application:o.O.MY_SHARES,action:s.e.MyShares.SHARED_BY_ME},d={application:o.O.MY_SHARES,action:s.e.MyShares.SHARED_WITH_ME};function p(){return n.createElement("div",{className:"pb-3"},n.createElement("h1",{className:"h2 mb-3"},u("shares")),n.createElement(c.r,{tabs:(t=null===(e=l.O.getCurrentRoute())||void 0===e?void 0:e.appLink,[{name:u("sharedByMe"),onSelect:function(){return i.Q.C$.trigger(m)},active:(null==t?void 0:t.action)===m.action},{name:u("sharedWithMe"),onSelect:function(){return i.Q.C$.trigger(d)},active:(null==t?void 0:t.action)===d.action}])}));var e,t}},76233:(e,t,a)=>{a.r(t),a.d(t,{SharedByMeView:()=>ue});var n=a(32735),r=a(81886),i=a(23481),c=a(23232),l=i.T.encloseNamespace("share.sharedByMeEmptyState");function s(e){return n.createElement(c.u,null,n.createElement(c.u.Image,{src:e.imageUrl,size:"small"}),n.createElement(c.u.Heading,null,l(e.useInteractiveCopy?"interactivesHeading":"genericHeading")),n.createElement(c.u.Info,null,l(e.useInteractiveCopy?"interactivesInfo":"genericInfo")),!!e.appLink&&n.createElement(c.u.Cta,{appLink:e.appLink,text:l("cta")}))}var o=a(95834),u=a(69674),m=a(82602),d=a(75896),p=a(110),v=a(65858),g=a(83914),f=a(36532),h=a(49080),y=a(85063),E=a(35223);var b=i.T.encloseNamespace("share.shareStatusIndicator");function N(e){if(e.type===y.y.DirectShare)return b("active");switch(e.status){case h.F.Active:return b("active");case h.F.Expired:return b("expired")}}function S(e){if(e.type===y.y.DirectShare)return"bg-success";switch(e.status){case h.F.Active:return"bg-success";case h.F.Expired:return"bg-gray-500"}}function w(e){var t;return e.share.type!==y.y.DirectShare||(null===(t=e.share.recipients)||void 0===t?void 0:t.length)?e.share.type===y.y.ShareLink&&e.share.isPasswordProtected?n.createElement(f.u,{title:b("passwordProtected"),spanHack:!0},n.createElement(g.x,{svgName:E.vn.Lock,size:g.S.Small})):n.createElement(f.u,{title:N(e.share),spanHack:!0,spanHackClassName:"T6YAv"},n.createElement("div",{className:"".concat("_MRHG"," ").concat(S(e.share))})):n.createElement(n.Fragment,null)}var k=a(29024),C=a(40391),x=a(31754),I=a(64249),A=a(83657),T=a(36848),O=a(83345),j=a(11882),M=a(31908);function H(e){return H="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},H(e)}function L(e,t){(null==t||t>e.length)&&(t=e.length);for(var a=0,n=Array(t);a<t;a++)n[a]=e[a];return n}var F="share.sharedByMeTable",D=i.T.encloseNamespace(F);function U(e){var t;if(e.type===y.y.ShareLink||!(null===(t=null==e?void 0:e.recipients)||void 0===t?void 0:t.length))return e.dateCreated;var a=e.recipients.map((function(e){return e.dateShared}));return a.sort((function(e,t){return p.O.isSame(e,t)?0:p.O.isAfter(e,t)?1:-2})),a.length?d.m.last(a):""}function R(e,t,a,r,i,c,l,s){var o=s&&(s.xs||s.sm),u=[{Header:c?"":t,accessor:"sharedObject",id:"image",Cell:function(e){var t=e.value;return n.createElement("div",{className:"w-100"},n.createElement(k.k,{object:t,appLink:a(t),showVideoMetadata:!0,locationContext:v.LZ.SharedByMe}))},minWidth:140,maxWidth:30},{accessor:"sharedObject",id:"name",Cell:function(e){var t,r=e.value;return r.name?M.M.isVideoType(r)&&!(null===(t=M.M.getCanBeConsumed(r))||void 0===t?void 0:t.canNavigate)?n.createElement("span",{className:"clamp-2"},r.name):n.createElement("div",{className:"clamp-2"},M.M.isVideoType(r)&&n.createElement(j.$,{type:"series",video:r,appLink:"series"in r&&r.series?a(r.series):null,analyticsOptions:{location:v.LZ.Insights}}),n.createElement(T.F,{appLink:a(r),analyticsData:{id:r.id,name:r.name},analyticsOptions:{entity:I.I.getAnalyticsEntity(r.type),actionType:v.Vw.Click,location:v.LZ.SharedByMe}},r.name)):n.createElement("span",null,n.createElement(O.x,{namespace:F,phrase:"videoUnavailable"}))},width:60},{Header:0===e?D("sharedTo"):"",accessor:"shareRecipients",Cell:function(e){var t=e.value;return t?t.length?n.createElement(C.Kh,{recipients:t,imageCdnUrl:i,maxAvatars:o?1:2}):n.createElement(C.m9,null):n.createElement(C.Ad,null)},width:40},!o&&{Header:0===e?D("shared"):"",id:"dateShared",accessor:function(e){return(0,m.WU)(e.dateShared)},width:40},{accessor:"sharedObject",id:"actions",Cell:function(e){var t=e.value;return n.createElement(A.e,{actions:r(t),className:"w-100 justify-content-end pe-2"})},width:20}],d={Header:t,accessor:"share",id:"status",Cell:function(e){var t=e.value;return n.createElement(w,{share:t})},width:5},p={Header:D("views"),accessor:"viewCount",width:30};return c&&u.splice(0,0,d),l&&u.splice(u.length-1,0,p),u.filter(Boolean)}var z=n.memo((function(e){var t,a,r,i,c,l,s=(t=e.sentShares,a=e.sharedObjects,r=e.shareRecipients,i=!!e.groupByDateShared,c=e.dependencies,n.useMemo((function(){var e,n,c,l=[];return t.forEach((function(e){var t,n,i=a.find((function(t){return t.id===e.objectId})),c=null;e.type===y.y.DirectShare&&(c=[],null===(t=e.recipients)||void 0===t||t.forEach((function(e){var t=r.find((function(t){return t.id===e.id}));t&&c.push(t)}))),i&&l.push({share:e,sharedObject:i,shareRecipients:c,dateShared:U(e),viewCount:null!==(n=e.viewCount)&&void 0!==n?n:0})})),i?x.x.groupByDateShared(l):(e={},n=D("title"),c=l,(n=function(e){var t=function(e){if("object"!=H(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var a=t.call(e,"string");if("object"!=H(a))return a;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==H(t)?t:t+""}(n))in e?Object.defineProperty(e,n,{value:c,enumerable:!0,configurable:!0,writable:!0}):e[n]=c,e)}),function(e){if(Array.isArray(e))return L(e)}(l=c)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(l)||function(e,t){if(e){if("string"==typeof e)return L(e,t);var a={}.toString.call(e).slice(8,-1);return"Object"===a&&e.constructor&&(a=e.constructor.name),"Map"===a||"Set"===a?Array.from(e):"Arguments"===a||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(a)?L(e,t):void 0}}(l)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()));return n.createElement(n.Fragment,null,Object.keys(s).map((function(t,a){return n.createElement(u.i,{key:a,columns:R(a,t,e.getObjectAppLink,e.getObjectActions,e.imageCdnUrl,e.showStatus,e.showViewCount,e.breakpoints),data:s[t],theme:o.J})})))})),B=a(71020),P=a(16714),_=a(79967),W=a(22902),Z=a(79612),V=a(37802),$=a(99742),G=a(14070),J=a(97291),K=a(64208),Y=a(86099),q=a(2523);const Q={imageColumn:"uIOaA",nameColumn:"Nta2B",sharedToColumn:"XTJBC",dateSharedColumn:"HdARK",actionsColumn:"DXyZw",heading:"XZ6o7",image:"MolfU",name:"MM43m",avatar:"EboYM",date:"by_XM",actions:"_S2M_"};function X(){return n.createElement("div",{className:"d-flex striped-row rounded"},n.createElement("div",{className:"d-flex align-items-center justify-content-center p-2 ".concat(Q.imageColumn)},n.createElement("div",{className:"partial-loading-background rounded w-100 ".concat(Q.image)})),n.createElement("div",{className:"d-flex align-items-center p-2 ".concat(Q.nameColumn)},n.createElement("div",{className:"partial-loading-background w-75 ".concat(Q.name)})),n.createElement("div",{className:"d-flex align-items-center p-2 ".concat(Q.sharedToColumn)},n.createElement("div",{className:"partial-loading-background ".concat(Q.avatar)})),n.createElement("div",{className:"d-none d-md-flex align-items-center p-2 ".concat(Q.dateSharedColumn)},n.createElement("div",{className:"partial-loading-background ".concat(Q.date)})),n.createElement("div",{className:"d-flex align-items-center justify-content-end p-2 ".concat(Q.actionsColumn)},n.createElement("div",{className:"partial-loading-background rounded me-2 ".concat(Q.actions)})))}function ee(e){return n.createElement("div",{className:"d-flex mb-1"},n.createElement("div",{className:"".concat(Q.imageColumn," p-2")},n.createElement("div",{className:"partial-loading-background ".concat(Q.heading)})),n.createElement("div",{className:"".concat(Q.nameColumn," p-2")}," "),n.createElement("div",{className:"".concat(Q.sharedToColumn," p-2")},e.fullHeader?n.createElement("div",{className:"partial-loading-background ".concat(Q.heading)}):n.createElement(n.Fragment,null," ")),n.createElement("div",{className:"".concat(Q.dateSharedColumn," p-2 d-none d-md-flex")},e.fullHeader?n.createElement("div",{className:"partial-loading-background ".concat(Q.heading)}):n.createElement(n.Fragment,null," ")),n.createElement("div",{className:"".concat(Q.actionsColumn," p-2")}," "))}function te(){return n.createElement(n.Fragment,null,n.createElement("div",{className:"mb-3"},n.createElement(ee,{fullHeader:!0}),n.createElement("div",{className:"striped-list no-full-width"},n.createElement(X,null),n.createElement(X,null),n.createElement(X,null))),n.createElement("div",{className:"mb-3"},n.createElement(ee,null),n.createElement("div",{className:"striped-list no-full-width"},n.createElement(X,null),n.createElement(X,null),n.createElement(X,null),n.createElement(X,null))),n.createElement("div",{className:"mb-3"},n.createElement(ee,null),n.createElement("div",{className:"striped-list no-full-width"},n.createElement(X,null),n.createElement(X,null),n.createElement(X,null),n.createElement(X,null),n.createElement(X,null),n.createElement(X,null),n.createElement(X,null),n.createElement(X,null),n.createElement(X,null),n.createElement(X,null))))}var ae=a(20354),ne=a(4594),re=a(39151),ie=a(70227),ce=i.T.encloseNamespace("liteShare.sharedByMe");function le(e,t){return{label:ce("editShareSettings"),appLink:{application:J.O.DEFAULT,action:G.e.Default.SHARE,args:[e.id],params:{entityType:t}}}}function se(e){return n.createElement(f.u,{title:e.label,spanHack:!0},n.createElement("a",{href:e.url,target:"_blank"},n.createElement(g.x,{svgName:E.vn.Analytics})))}var oe=i.T.encloseNamespace("liteShare.sharedByMe");function ue(){var e=(0,W.T)().hasPermissions,t=(0,V.r)(null).hasInsights,a=(0,_.k)(),i=(0,K.aH)(),c=i.sentShares,l=i.sharedObjects,o=i.shareRecipients,u=i.isFetching,m=i.showPartialLoading,d=i.nextCursor,p=i.hasMore,v=i.fetchNext,g=i.imageCdnUrl,f=e(P.C.ViewMyShares)&&t;n.useEffect((function(){f&&r.Q.C$.trigger({application:J.O.MY_SHARES,action:G.e.MyShares.HOME},{replace:!0})}),[f]),(0,Z.M)({title:oe("sharedByMe")});var h=function(e){var t=ae.a.useBasicFetch(re.L.config()),a=e.xs||e.sm;return n.useCallback((function(e){return function(e,t,a){var r,i="viewUsage";if(M.M.isVideo(e)&&(r="video"),M.M.isInteractive(e)&&(r="interactive",i="viewResults"),M.M.isClip(e)&&(r="clip"),e.typeId===ne.E.Series&&(r="series"),e.typeId===ne.E.Playlist&&(r="playlist"),M.M.isVideoType(e)&&!M.M.getCanBeConsumed(e).canConsume)return[];var c=[le(e,r)],l=ie.c.getObjectUrl(a,e);return l&&c.push({label:t?ce(i):function(){return n.createElement(se,{label:ce(i),url:l})},className:"btn btn-link",button:!t,href:ie.c.getObjectUrl(a,e),openInNewTab:!0}),c}(e,a,t.data)}),[a])}(a);return n.createElement("div",{className:"px-3"},!f&&n.createElement(q.w,null),m?n.createElement(te,null):c.length?n.createElement(n.Fragment,null,n.createElement(z,{sentShares:c,sharedObjects:l,shareRecipients:o,getObjectAppLink:Y.Qh,getObjectActions:h,imageCdnUrl:g,groupByDateShared:!0,dependencies:[u],breakpoints:a}),(p||u)&&n.createElement(B._,{isFetching:u,fetchNext:v,nextCursor:d})):n.createElement(s,{appLink:{application:J.O.DASHBOARD,action:G.e.Dashboard.HOME},imageUrl:$.W.EmptyStates.Share.SHARED_WITH_ME}))}},64208:(e,t,a)=>{a.d(t,{aH:()=>b});var n=a(32735),r=a(20354),i=a(1048),c=a(71553),l=a(30439),s=a(4594),o=a(39151),u=a(31949),m=a(39902),d=a(60115),p=a(75896),v=a(85063),g={getDirectShares:function(e){var t;return null!==(t=null==e?void 0:e.filter((function(e){return e.type===v.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 f(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var a=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=a){var n,r,i,c,l=[],s=!0,o=!1;try{if(i=(a=a.call(e)).next,0===t){if(Object(a)!==a)return;s=!1}else for(;!(s=(n=i.call(a)).done)&&(l.push(n.value),l.length!==t);s=!0);}catch(e){o=!0,r=e}finally{try{if(!s&&null!=a.return&&(c=a.return(),Object(c)!==c))return}finally{if(o)throw r}}return l}}(e,t)||h(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 h(e,t){if(e){if("string"==typeof e)return y(e,t);var a={}.toString.call(e).slice(8,-1);return"Object"===a&&e.constructor&&(a=e.constructor.name),"Map"===a||"Set"===a?Array.from(e):"Arguments"===a||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(a)?y(e,t):void 0}}function y(e,t){(null==t||t>e.length)&&(t=e.length);for(var a=0,n=Array(t);a<t;a++)n[a]=e[a];return n}function E(e){return e.items?Object.values(e.items):[]}function b(e,t){var a,p,v=!(arguments.length>2&&void 0!==arguments[2])||arguments[2],b=r.a.useGetFetch(),N=r.a.useBasicFetch(u.N.currentUser()),S=function(t){return v&&l.o.sentShare(Object.assign({cursor:t},e))},w=function(e){return b(S(e))},k=(0,d.K)(S,w),C=k.items,x=k.hasMore,I=k.isFetching,A=k.nextCursor,T=null!==(a=null==C?void 0:C.map((function(e){return e.objectId})))&&void 0!==a?a:[],O=(0,m.f)(T,(function(e){return l.o.sharedObjectsById(e)})),j=g.getRecipientIds(C),M=(0,m.f)(j,(function(e){return l.o.getRecipientsById(e,N.data.customerId)})),H=r.a.useBasicFetch(o.L.config()),L=JSON.stringify(e),F=function(e,t,a,r,i){var c=f(n.useState(!!t.items),2),l=c[0],s=c[1],o=f(n.useState(!!r.items),2),u=o[0],m=o[1];return n.useEffect((function(){s(!1),m(!1)}),[i]),n.useEffect((function(){t.items&&s(!0)}),[!!t.items,i]),n.useEffect((function(){r.items&&m(!0)}),[!!t.items,i]),!(e&&!e.length)&&(!e||!l||a.length&&!u)}(C,O,j,M,L),D=I||O.isFetching||M.isFetching,U=E(O),R=f(n.useState(E(M)),2),z=R[0],B=R[1];n.useEffect((function(){i.t.isEmpty(M.items)||B(E(M))}),[!!M.items,M.isFetching,L]);var P=t&&(null==U?void 0:U.length)&&U.reduce((function(e,t){if(t.typeId!==s.E.Interactive)return e;var a,n=t;return[].concat(function(e){if(Array.isArray(e))return y(e)}(a=e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(a)||h(a)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}(),[{metadataId:n.id,interactiveId:n.interactiveId}])}),[]),_=r.a.useBasicFetch(t&&!!O.items&&N.data&&c.I.pendingReviews({interactives:P,filters:{currentCustomerId:N.data.customerId,currentUserId:N.data.id}})),W=[D,L,_.isFetching,z.length];return{sentShares:C,sharedObjects:U,shareRecipients:z,interactivesPendingReview:_.data,isFetching:D,showPartialLoading:F,nextCursor:A,hasMore:x,fetchNext:w,imageCdnUrl:null===(p=H.data)||void 0===p?void 0:p.imageCdnUrl,dependencies:W}}},87432:(e,t,a)=>{a.d(t,{Z:()=>n});const n={pillTabSelector:"Hdi6o",tab:"RvNxr",minWidth:"GHSz9",radiusSmall:"VhJJa",tabLink:"WFyvo"}},82602:(e,t,a)=>{a.d(t,{WU:()=>o});var n=["second","minute","hour","day","week","month","year"],r=["秒","分钟","小时","天","周","个月","年"],i={},c=function(e,t){i[e]=t},l=[60,60,24,7,365/7/12,12];function s(e){return e instanceof Date?e:!isNaN(e)||/^\d+$/.test(e)?new Date(parseInt(e)):(e=(e||"").trim().replace(/\.\d+/,"").replace(/-/,"/").replace(/-/,"/").replace(/(\d)T(\d)/,"$1 $2").replace(/Z/," UTC").replace(/([+-]\d\d):?(\d\d)/," $1$2"),new Date(e))}var o=function(e,t,a){var n=function(e,t){return(+(t?s(t):new Date)-+s(e))/1e3}(e,a&&a.relativeDate);return function(e,t){for(var a=e<0?1:0,n=e=Math.abs(e),r=0;e>=l[r]&&r<l.length;r++)e/=l[r];return(e=Math.floor(e))>(0==(r*=2)?9:1)&&(r+=1),t(e,r,n)[a].replace("%s",e.toString())}(n,function(e){return i[e]||i.en_US}(t))};c("en_US",(function(e,t){if(0===t)return["just now","right now"];var a=n[Math.floor(t/2)];return e>1&&(a+="s"),[e+" "+a+" ago","in "+e+" "+a]})),c("zh_CN",(function(e,t){if(0===t)return["刚刚","片刻后"];var a=r[~~(t/2)];return[e+" "+a+"前",e+" "+a+"后"]}))}}]);
2
+ //# sourceMappingURL=6965-da31a16bb2-lite.chunk.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scripts/6965-da31a16bb2-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/apps/share/components/shared-to-avatar-list/shared-to-avatar-list.scss","file:///app/packages/libs/shared/src/apps/share/components/shared-to-avatar-list/SharedToAvatarList.tsx","file:///app/packages/libs/shared/src/apps/share/constants/TableTheme.ts","file:///app/packages/libs/shared/src/components/actions/Actions.tsx","file:///app/packages/libs/shared/src/components/actions/actions.scss","file:///app/packages/libs/shared/src/components/actions/ActionsDropdown.tsx","file:///app/packages/libs/shared/src/components/avatar-list/AvatarList.tsx","file:///app/packages/libs/shared/src/components/pill-tab-selector/PillTabSelector.tsx","file:///app/packages/libs/shared/src/hooks/UseBatchFetch.ts","file:///app/packages/libs/shared/src/utils/AnalyticsRequestUtils.ts","file:///app/packages/libs/shared/src/utils/AnalyticsRouteHelper.ts","file:///app/packages/libs/shared/src/utils/GroupHelper.ts","file:///app/packages/projects/lite/src/apps/share/components/shares-header/SharesHeader.tsx","file:///app/packages/libs/shared/src/apps/share/components/shared-by-me/empty-state/SharedByMeEmptyState.tsx","file:///app/packages/libs/shared/src/apps/share/components/shared-by-me/share-status-indicator/ShareStatusIndicator.tsx","file:///app/packages/libs/shared/src/apps/share/components/shared-by-me/share-status-indicator/share-status-indicator.scss","file:///app/packages/libs/shared/src/apps/share/components/shared-by-me/table/SharedByMeTableUtils.tsx","file:///app/packages/libs/shared/src/apps/share/components/shared-by-me/table/SharedByMeTable.tsx","file:///app/packages/projects/lite/src/apps/share/views/shared-by-me/partial-loading/partial-shared-by-me-table.scss","file:///app/packages/projects/lite/src/apps/share/views/shared-by-me/partial-loading/PartialSharedByMeTable.tsx","file:///app/packages/projects/lite/src/apps/share/views/shared-by-me/SharedByMeViewUtils.tsx","file:///app/packages/projects/lite/src/apps/share/views/shared-by-me/SharedByMeView.tsx","file:///app/packages/libs/shared/src/utils/ShareHelper.ts","file:///app/packages/projects/lite/src/shared/hooks/useSharesTable.ts","file:///app/packages/libs/shared/src/components/pill-tab-selector/pill-tab-selector.scss","file:///app/node_modules/timeago.js/esm/lang/en_US.js","file:///app/node_modules/timeago.js/esm/lang/zh_CN.js","file:///app/node_modules/timeago.js/esm/register.js","file:///app/node_modules/timeago.js/esm/utils/date.js","file:///app/node_modules/timeago.js/esm/format.js","file:///app/node_modules/timeago.js/esm/index.js"],"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};","// extracted by mini-css-extract-plugin\nexport default {\"avatarContainer\":\"ByxQa\",\"sm\":\"EgJ0v\",\"sharedAvatar\":\"cW0NT\"};","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\n\nimport { Avatar } from 'libs/shared/components/avatar/Avatar';\nimport { AvatarItemProps, AvatarList } from 'libs/shared/components/avatar-list/AvatarList';\nimport { IconCircle } from 'libs/shared/components/icon-circle/IconCircle';\nimport { SvgContainer, SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\nimport { Tooltip } from 'libs/shared/components/tooltip/Tooltip';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { BaseObject, Classroom, ClassroomGroup, User } from 'libs/shared/interfaces';\nimport { mapColourToBsVariant } from 'libs/shared/utils/GroupHelper';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\nimport { UserHelper } from 'libs/shared/utils/UserHelper';\n\nimport styles from './shared-to-avatar-list.scss';\n\nconst namespace = 'reportsShare.sharedToAvatarList';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nfunction getHiddenRecipientText(hiddenRecipients: BaseObject[]): string {\n const counts = ArrayHelper.countBy(hiddenRecipients, 'typeId');\n const userCount = counts[MasterType.User];\n const classroomCount = counts[MasterType.Classroom];\n const groupCount = counts[MasterType.ClassroomGroup];\n\n if (userCount && classroomCount && groupCount)\n return getPhrase('classroomsGroupsAndUsers', { userCount, classroomCount, groupCount });\n\n if (userCount && classroomCount)\n return getPhrase('classroomsAndUsers', { userCount, classroomCount });\n\n if (userCount && groupCount)\n return getPhrase('groupsAndUsers', { userCount, groupCount });\n\n if (classroomCount && groupCount)\n return getPhrase('classroomsAndGroups', { classroomCount, groupCount });\n\n if (userCount)\n return getPhrase('users', { userCount });\n\n if (classroomCount)\n return getPhrase('classrooms', { classroomCount });\n\n if (groupCount)\n return getPhrase('groups', { groupCount });\n}\n\nfunction SharedToAvatar(props: AvatarItemProps): JSX.Element {\n const user: User = props.item?.typeId === MasterType.User && props.item as User;\n const classroom: Classroom = props.item?.typeId === MasterType.Classroom && props.item as Classroom;\n const classroomGroup: ClassroomGroup = props.item?.typeId === MasterType.ClassroomGroup\n && props.item as ClassroomGroup;\n\n const svgContainerClassName = 'd-flex justify-content-center align-items-center text-white rounded-circle h-100 w-100';\n\n return (\n <>\n {!!user &&\n <Tooltip title={`${user.name} ${user.surname}`} spanHack spanHackClassName='h-100 w-100'>\n <Avatar\n imageUrl={user.avatar?.url}\n imageCdnUrl={props.imageCdnUrl}\n initials={UserHelper.getInitials(user.name, user.surname)}\n extraClasses={styles.sharedAvatar}\n />\n </Tooltip>\n }\n {!!classroom &&\n <Tooltip title={classroom.name} spanHack spanHackClassName='h-100 w-100'>\n <div className={svgContainerClassName}>\n <IconCircle\n svgName={cvSvgLibrary.Classrooms}\n svgSize={SvgContainerSize.Large}\n variant='teal'\n />\n </div>\n </Tooltip>\n }\n {!!classroomGroup &&\n <Tooltip title={classroomGroup.name} spanHack spanHackClassName='h-100 w-100'>\n <div className={svgContainerClassName}>\n <IconCircle\n svgName={cvSvgLibrary.Group}\n variant={mapColourToBsVariant(classroomGroup.metadata?.colour)}\n />\n </div>\n </Tooltip>\n }\n </>\n );\n}\n\n\ninterface AnonymousSharedToAvatarProps {\n avatarSize?: 'md' | 'sm';\n}\n\nexport function AnonymousSharedToAvatar(props: AnonymousSharedToAvatarProps): JSX.Element {\n return (\n <div className={`${styles.avatarContainer} ${props.avatarSize === 'sm' ? styles.sm : ''}`}>\n <Tooltip\n title={getPhrase('anonymous')}\n spanHack\n spanHackClassName='bg-light text-dark d-flex justify-content-center align-items-center rounded-circle h-100 w-100'\n >\n <SvgContainer svgName={cvSvgLibrary.Anonymous} size={props.avatarSize === 'sm' ? SvgContainerSize.Small : null} />\n </Tooltip>\n </div>\n );\n}\n\ninterface SharedLinkAvatarProps {\n text?: string;\n avatarSize?: 'md' | 'sm';\n className?: string;\n}\n\nexport function SharedLinkAvatar(props: SharedLinkAvatarProps): JSX.Element {\n return (\n <div className={`${styles.avatarContainer} ${props.avatarSize === 'sm' ? styles.sm : ''}`}>\n <Tooltip\n title={props.text || getPhrase('sharedLink')}\n spanHack\n spanHackClassName={`bg-light text-dark d-flex justify-content-center align-items-center rounded-circle h-100 w-100 ${props.className || ''}`}\n >\n <SvgContainer svgName={cvSvgLibrary.Link} size={props.avatarSize === 'sm' ? SvgContainerSize.Small : null} />\n </Tooltip>\n </div>\n );\n}\n\ninterface SharedToAvatarListProps {\n recipients: BaseObject[];\n imageCdnUrl: string;\n maxAvatars?: number;\n hasShareLink?: boolean;\n avatarSize?: 'md' | 'sm';\n shareLinkText?: string;\n}\n\nSharedToAvatarList.defaultProps = {\n maxAvatars: 5\n};\n\nexport function SharedToAvatarList(props: SharedToAvatarListProps): JSX.Element {\n return (\n <AvatarList\n {...props}\n items={props.recipients}\n avatarItem={SharedToAvatar}\n avatarContainerClassname={`${styles.avatarContainer} ${props.avatarSize === 'sm' ? styles.sm : ''}`}\n getHiddenTooltip={getHiddenRecipientText}\n hasShareLink={props.hasShareLink}\n shareLinkText={props.shareLinkText}\n />\n );\n}","import { TableTheme } from 'libs/shared/components/table/Table';\n\nexport const SHARES_TABLE_THEME: TableTheme = {\n table: 'striped-list no-full-width pb-3',\n header: 'fw-semibold pb-1',\n headerCell: `py-2 ps-2 text-nowrap`,\n row: 'striped-row rounded',\n cell: 'd-flex align-items-center p-2'\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}","// extracted by mini-css-extract-plugin\nexport default {\"dropdownToggle\":\"UCAnJ\"};","import * as React from 'react';\n\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\nimport { Core } from 'libs/common/core';\nimport { RandomHelper } from 'libs/common/react/utils/RandomHelper';\n\nimport { AnalyticsHelper } from 'libs/analytics/AnalyticsHelper';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { SvgContainer, SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\nimport { Tooltip } from 'libs/shared/components/tooltip/Tooltip';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport { ActionOptions } from './Actions';\n\nimport styles from './actions.scss';\n\nfunction LazyDropdownItems(): JSX.Element {\n return (\n <>\n <div style={{ padding: '0.53125rem 1rem' }}>\n <div className='partial-loading-background' style={{ height: '1.0625rem', width: '8rem' }}></div>\n </div>\n <div style={{ padding: '0.53125rem 1rem' }}>\n <div className='partial-loading-background' style={{ height: '1.0625rem', width: '12rem' }}></div>\n </div>\n <div style={{ padding: '0.53125rem 1rem' }}>\n <div className='partial-loading-background' style={{ height: '1.0625rem', width: '11rem' }}></div>\n </div>\n <div style={{ padding: '0.53125rem 1rem' }}>\n <div className='partial-loading-background' style={{ height: '1.0625rem', width: '9rem' }}></div>\n </div>\n </>\n );\n}\n\nfunction getDropdownItemClassName(actionClassName?: string): string {\n let className = 'dropdown-item';\n\n if (actionClassName)\n className += ` ${actionClassName}`;\n\n return className;\n}\n\nexport type DropdownActionOptions = Omit<ActionOptions, 'button'>;\n\ninterface ActionsDropdownItemProps {\n action: DropdownActionOptions;\n}\n\nfunction ActionsDropdownItem(props: ActionsDropdownItemProps): React.ReactElement {\n const label = FunctionHelper.isFunction(props.action.label)\n ? props.action.label\n : () => <>{props.action.label}</>;\n\n if (props.action.appLink)\n return (\n <AppLink\n appLink={props.action.appLink}\n onClick={props.action.onClick}\n className={getDropdownItemClassName(props.action.className)}\n analyticsData={props.action.analyticsData}\n analyticsOptions={props.action.analyticsOptions}\n openInNewTab={props.action.openInNewTab}\n disabled={props.action.disabled}\n >\n {props.action.svgName && <SvgContainer svgName={props.action.svgName} className='d-inline-block svg-container me-2 align-middle' />}\n <span className='align-middle'>{label()}</span>\n </AppLink>\n );\n\n function onClick(e: React.MouseEvent | React.KeyboardEvent): void {\n e.preventDefault();\n\n if (props.action.analyticsData && props.action.analyticsOptions)\n AnalyticsHelper.logUserAction(props.action.analyticsData, props.action.analyticsOptions);\n\n if (FunctionHelper.isFunction(props.action.onClick))\n props.action.onClick();\n\n if (props.action.href)\n Core.LocationUtils.PageLoad(props.action.href, props.action.openInNewTab);\n }\n\n if (props.action.href) {\n return (\n <a\n className={getDropdownItemClassName(props.action.className)}\n onClick={onClick}\n href={props.action.href}\n >\n {props.action.svgName && <SvgContainer svgName={props.action.svgName} className='d-inline-block svg-container me-2 align-middle' />}\n <span className='align-middle'>{label()}</span>\n </a>\n );\n }\n\n return (\n <span\n className={`cursor-pointer ${getDropdownItemClassName(props.action.className)}`}\n onClick={onClick}\n role='button'\n tabIndex={0}\n onKeyDown={(e: React.KeyboardEvent) => e.key === 'Enter' && onClick(e)}\n >\n {props.action.svgName && <SvgContainer svgName={props.action.svgName} className='d-inline-block svg-container me-2' />}\n {label()}\n </span>\n );\n}\n\ninterface ActionsDropdownProps {\n actions: DropdownActionOptions[];\n className?: string;\n dropdownToggleClassName?: string;\n dropdownToggleSvgSize?: SvgContainerSize;\n fetchMore?: () => void;\n}\n\nActionsDropdown.defaultProps = {\n dropdownToggleClassName: 'btn btn-light',\n dropdownToggleSvgSize: SvgContainerSize.Small\n};\n\nexport function ActionsDropdown(props: ActionsDropdownProps): React.ReactElement {\n if (!props.actions || !props.actions.length)\n return <></>;\n\n const isLazy = props.actions.some(a => a.lazyPlaceholder);\n\n let className = 'dropdown';\n\n if (props.className)\n className += ` ${props.className}`;\n\n // Generate unique id to avoid collisions.\n const dropdownToggleId = `actions-dropdown-${RandomHelper.getRandomInt()}`;\n\n let dropdownToggleClassName = `dropdown-toggle px-0 ${styles.dropdownToggle}`;\n\n if (props.dropdownToggleClassName)\n dropdownToggleClassName += ` ${props.dropdownToggleClassName}`;\n\n let currentGroup: string;\n\n return (\n <div className={className}>\n <button\n className={dropdownToggleClassName}\n type='button'\n id={dropdownToggleId}\n data-bs-toggle='dropdown'\n data-toggle='dropdown'\n aria-haspopup='true'\n aria-expanded='false'\n aria-label={'More actions dropdown'}\n onClick={isLazy ? props.fetchMore : null}\n >\n <SvgContainer svgName={cvSvgLibrary.More} size={props.dropdownToggleSvgSize} />\n </button>\n <ul className='dropdown-menu dropdown-menu-end dropdown-menu-right font-size-normal' aria-labelledby={dropdownToggleId}>\n {isLazy ?\n <LazyDropdownItems /> :\n props.actions.map((a, idx) => {\n const showDivider = currentGroup !== undefined && currentGroup !== a.group;\n currentGroup = a.group;\n \n if (a.tooltip) {\n return (\n <li key={idx}>\n {showDivider && <hr className='dropdown-divider' role='separator'></hr>}\n <Tooltip title={a.tooltip} spanHack>\n <ActionsDropdownItem action={a} />\n </Tooltip>\n \n </li>\n );\n }\n \n return (\n <li key={idx}>\n {showDivider && <hr className='dropdown-divider' role='separator'></hr>}\n <ActionsDropdownItem action={a} />\n </li>\n );\n })\n }\n </ul>\n </div>\n );\n}","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { SharedLinkAvatar } from 'libs/shared/apps/share/components/shared-to-avatar-list/SharedToAvatarList';\nimport { Tooltip } from 'libs/shared/components/tooltip/Tooltip';\nimport { BaseObject } from 'libs/shared/interfaces';\n\nconst namespace = 'shared.avatarList';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nexport interface AvatarItemProps {\n imageCdnUrl: string;\n index: number;\n item?: BaseObject;\n hiddenItems?: BaseObject[];\n maxAvatars?: number;\n}\n\ninterface AvatarListProps {\n items: BaseObject[];\n imageCdnUrl: string;\n maxAvatars?: number;\n avatarItem?: (props: AvatarItemProps) => JSX.Element;\n getHiddenTooltip?: (hiddenItems: BaseObject[]) => string;\n numberClassname?: string;\n avatarContainerClassname?: string;\n roleToDisplay?: 'student' | 'staff';\n hasShareLink?: boolean;\n avatarSize?: 'md' | 'sm';\n shareLinkText?: string;\n}\n\nAvatarList.defaultProps = {\n maxAvatars: 5\n};\n\nexport function AvatarList(props: AvatarListProps): JSX.Element {\n const itemsToDisplay = props.items.length > props.maxAvatars\n ? props.items.slice(0, props.maxAvatars - 1)\n : props.items;\n\n const hiddenItems = props.items.length > itemsToDisplay.length\n ? props.items.slice(props.maxAvatars - 1)\n : [];\n\n const AvatarItem = props.avatarItem;\n const hiddenItemsCounts = hiddenItems.length;\n const translateX = props.avatarSize === 'sm' ? 4 : 8;\n\n function getTooltip() {\n if (props.getHiddenTooltip)\n return props.getHiddenTooltip(hiddenItems);\n\n if (props.roleToDisplay)\n return getPhrase(props.roleToDisplay === 'staff' ? 'staff' : 'student', { count: hiddenItemsCounts, smartCount: hiddenItemsCounts });\n\n return getPhrase('users', { count: hiddenItemsCounts, smartCount: hiddenItemsCounts });\n }\n\n function getContainerStyles() {\n return {\n marginRight: `-${((itemsToDisplay.length - 1) + (hiddenItems.length ? 1 : 0) + (props.hasShareLink ? 1 : 0)) * translateX}px`\n };\n }\n\n function getAvatarStyles(idx: number) {\n return {\n transform: `translateX(${(props.hasShareLink ? idx + 1 : idx) * -translateX}px)`,\n zIndex: props.maxAvatars - idx\n };\n }\n\n if (itemsToDisplay.length === 0 && hiddenItems.length === 0)\n return <></>;\n\n return (\n <div\n className='d-flex'\n style={getContainerStyles()}\n >\n {props.hasShareLink && (\n <div style={{ zIndex: props.maxAvatars + 1 }}>\n <SharedLinkAvatar text={props.shareLinkText} avatarSize={props.avatarSize} className='bg-dark text-white' />\n </div>\n )}\n {itemsToDisplay.map((item, idx) => (\n <div\n className={`${props.avatarContainerClassname || ''}`} key={item.id}\n style={getAvatarStyles(idx)}\n >\n <AvatarItem\n item={item}\n imageCdnUrl={props.imageCdnUrl}\n index={idx}\n maxAvatars={props.maxAvatars}\n />\n </div>\n ))}\n\n {!!hiddenItems.length && (\n <div\n className={`${props.avatarContainerClassname || ''} bg-white rounded-circle`}\n style={{ transform: `translateX(${itemsToDisplay.length * -translateX}px)`, zIndex: props.maxAvatars - itemsToDisplay.length }}\n >\n <Tooltip title={getTooltip()} spanHack spanHackClassName='h-100 w-100'>\n <div className={`d-flex justify-content-center align-items-center border border-dark rounded-circle h-100 w-100 ${props.numberClassname || ''}`}>\n {`+${hiddenItems.length}`}\n </div>\n </Tooltip>\n </div>\n )}\n </div>\n );\n}","import React from 'react';\n\nimport { Core } from 'libs/common/core';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { AnalyticsHelper } from 'libs/analytics/AnalyticsHelper';\nimport { AnalyticsOptions } from 'libs/analytics/interfaces';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { Badge, BadgeType } from 'libs/shared/components/badges/Badge';\nimport { DivButton } from 'libs/shared/components/div-button/DivButton';\n\nimport { SvgContainer } from '../svg-container/SvgContainer';\n\nimport styles from './pill-tab-selector.scss';\n\ninterface TabContentsProps {\n tab: PillTab;\n}\n\nfunction TabContents(props: TabContentsProps): JSX.Element {\n return (\n <>\n {!!props.tab.svgName && (\n <div className={props.tab.name ? 'pe-1' : ''}>\n <SvgContainer svgName={props.tab.svgName} />\n </div>\n )}\n\n {props.tab.name}\n\n {typeof (props.tab.count) === 'number' && (\n <div className='ps-2'>\n <Badge type={BadgeType.Count} data={props.tab.count} />\n </div>\n )}\n </>\n );\n}\n\nexport interface PillTab {\n name: string;\n active: boolean;\n svgName?: string;\n\n className?: string;\n\n appLink?: Core.AppLink;\n onSelect?: () => void;\n\n analyticsData?: HashObject;\n analyticsOptions?: AnalyticsOptions;\n\n count?: number;\n}\n\ninterface PillTabSelectorProps {\n tabs: PillTab[];\n containerRef?: (el: HTMLElement) => void;\n listClassName?: string;\n className?: string;\n borderRadius?: 'sm' | 'lg'\n}\n\nPillTabSelector.defaultProps = {\n borderRadius: 'lg'\n};\n\nexport function PillTabSelector(props: PillTabSelectorProps): JSX.Element {\n function onSelectTab(tab: PillTab): void {\n if (tab.active || !tab.onSelect)\n return;\n\n tab.onSelect();\n\n if (tab.analyticsData && tab.analyticsOptions)\n AnalyticsHelper.logUserAction(tab.analyticsData, tab.analyticsOptions);\n }\n\n return (\n <nav className={props.className ?? ''} ref={props.containerRef}>\n <ul className={`\n list-unstyled d-inline-block m-0 ${styles.pillTabSelector}\n ${props.borderRadius ? styles.radiusSmall : ''}\n ${props.listClassName}\n `}>\n {props.tabs.map((tab, index) => {\n return (\n <li\n className={`\n p-0 ${styles.tab} ${tab.active ? 'btn btn-dark' : 'btn btn-outline-dark'}\n ${tab.name ? styles.minWidth : ''} ${tab.className}\n `}\n key={index}\n >\n {tab.appLink ? (\n <AppLink\n appLink={tab.appLink}\n analyticsData={tab.analyticsData}\n analyticsOptions={tab.analyticsOptions}\n className={`\n cursor-pointer d-flex align-items-center justify-content-center\n text-decoration-none text-reset px-2 text-nowrap ${styles.tabLink}\n `}\n >\n <TabContents tab={tab} />\n </AppLink>\n ) : (\n <DivButton\n className={`\n cursor-pointer d-flex align-items-center justify-content-center\n text-decoration-none text-reset px-2 text-nowrap ${styles.tabLink}\n `}\n onClick={() => onSelectTab(tab)}\n >\n <TabContents tab={tab} />\n </DivButton>\n )}\n </li>\n );\n })}\n </ul>\n </nav>\n );\n}\n","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}","import { UrlHelper } from 'libs/common/backbone/utils/UrlHelper';\n\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { BaseObject, Config } from 'libs/shared/interfaces';\n\nexport const AnalyticsRouteHelper = {\n getObjectUrl(config: Config, object: BaseObject): string {\n const baseUrl = config.analyticsWebUrl;\n\n if (!baseUrl)\n return;\n\n let relativeUrl = '';\n\n switch (object.typeId) {\n case MasterType.Video:\n relativeUrl = `/videos/${object.id}/overview`;\n break;\n\n case MasterType.Clip:\n relativeUrl = `/clips/${object.id}/overview`;\n break;\n\n case MasterType.Interactive:\n relativeUrl = `/interactives/${object.id}/overview`;\n break;\n }\n\n if (!relativeUrl)\n return;\n\n return UrlHelper.safeUrlConcat(baseUrl, relativeUrl);\n }\n};","import { ButtonProps } from 'react-bootstrap';\n\nimport { ClassroomGroupColour } from 'libs/shared/interfaces';\n\nexport function mapColourToBsVariant(groupColour: ClassroomGroupColour): ButtonProps['variant'] {\n switch (groupColour) {\n case ClassroomGroupColour.Pink:\n return 'pink';\n case ClassroomGroupColour.Orange:\n return 'orange';\n case ClassroomGroupColour.Green:\n return 'green';\n case ClassroomGroupColour.Blue:\n return 'blue';\n case ClassroomGroupColour.Purple:\n return 'purple';\n case ClassroomGroupColour.Indigo:\n return 'indigo';\n default:\n return 'pink';\n }\n}\n","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Core } from 'libs/common/core';\n\nimport { PillTab, PillTabSelector } from 'libs/shared/components/pill-tab-selector/PillTabSelector';\nimport { ContextService } from 'libs/shared/services/ContextService';\n\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\n\nconst namespace = 'share.sharesHeader';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nconst SHARED_BY_ME_APP_LINK = { application: AppChannels.MY_SHARES, action: Actions.MyShares.SHARED_BY_ME };\nconst SHARED_WITH_ME_APP_LINK = { application: AppChannels.MY_SHARES, action: Actions.MyShares.SHARED_WITH_ME };\n\nfunction getPillTabs(): PillTab[] {\n const currentAppLink = ContextService.getCurrentRoute()?.appLink;\n\n return [\n {\n name: getPhrase('sharedByMe'),\n onSelect: () => Core.AppLinkHelper.trigger(SHARED_BY_ME_APP_LINK),\n active: currentAppLink?.action === SHARED_BY_ME_APP_LINK.action\n },\n {\n name: getPhrase('sharedWithMe'),\n onSelect: () => Core.AppLinkHelper.trigger(SHARED_WITH_ME_APP_LINK),\n active: currentAppLink?.action === SHARED_WITH_ME_APP_LINK.action\n }\n ];\n}\n\nexport function SharesHeader(): JSX.Element {\n return (\n <div className='pb-3'>\n <h1 className='h2 mb-3'>{getPhrase('shares')}</h1>\n <PillTabSelector tabs={getPillTabs()} />\n </div>\n );\n}","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Core } from 'libs/common/core';\n\nimport { EmptyState } from 'libs/shared/components/empty-states/EmptyState';\n\nconst namespace = 'share.sharedByMeEmptyState';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface SharedByMeEmptyStateProps {\n imageUrl: string;\n appLink?: Core.AppLink;\n useInteractiveCopy?: boolean;\n}\n\nexport function SharedByMeEmptyState(props: SharedByMeEmptyStateProps): JSX.Element {\n return (\n <EmptyState>\n <EmptyState.Image src={props.imageUrl} size='small'/>\n <EmptyState.Heading>\n {getPhrase(props.useInteractiveCopy ? 'interactivesHeading' : 'genericHeading')}\n </EmptyState.Heading>\n <EmptyState.Info>{getPhrase(props.useInteractiveCopy ? 'interactivesInfo' : 'genericInfo')}</EmptyState.Info>\n {!!props.appLink &&\n <EmptyState.Cta appLink={props.appLink} text={getPhrase('cta')} />\n }\n </EmptyState>\n );\n}","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { SvgContainer, SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\nimport { Tooltip } from 'libs/shared/components/tooltip/Tooltip';\nimport { ShareLinkStatus } from 'libs/shared/enums/ShareLinkStatus';\nimport { ShareType } from 'libs/shared/enums/ShareType';\nimport { UnionShareObject } from 'libs/shared/interfaces';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport styles from './share-status-indicator.scss';\n\nconst namespace = 'share.shareStatusIndicator';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nfunction getStatusPhrase(share: UnionShareObject): string {\n if (share.type === ShareType.DirectShare)\n return getPhrase('active');\n\n switch (share.status) {\n case ShareLinkStatus.Active:\n return getPhrase('active');\n\n case ShareLinkStatus.Expired:\n return getPhrase('expired');\n }\n}\n\nfunction getBgColourClassName(share: UnionShareObject): string {\n if (share.type === ShareType.DirectShare)\n return 'bg-success';\n \n switch (share.status) {\n case ShareLinkStatus.Active:\n return 'bg-success';\n\n case ShareLinkStatus.Expired:\n return 'bg-gray-500';\n }\n}\n\ninterface ShareStatusIndicatorProps {\n share: UnionShareObject;\n}\n\n/**\n * TODO: add support for deleted share links (currently the api doesn't return these.)\n */\nexport function ShareStatusIndicator(props: ShareStatusIndicatorProps): JSX.Element {\n if (props.share.type === ShareType.DirectShare && !props.share.recipients?.length)\n return <></>;\n\n if (props.share.type === ShareType.ShareLink && props.share.isPasswordProtected) {\n return (\n <Tooltip title={getPhrase('passwordProtected')} spanHack>\n <SvgContainer svgName={cvSvgLibrary.Lock} size={SvgContainerSize.Small} />\n </Tooltip>\n );\n }\n\n return (\n <Tooltip\n title={getStatusPhrase(props.share)}\n spanHack\n spanHackClassName={styles.indicatorContainer}\n >\n <div className={`${styles.indicator} ${getBgColourClassName(props.share)}`} />\n </Tooltip>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"indicatorContainer\":\"T6YAv\",\"indicator\":\"_MRHG\"};","import React from 'react';\nimport { Column } from 'react-table';\nimport { format as formatDate } from 'timeago.js';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Core } from 'libs/common/core';\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\nimport { DateHelper } from 'libs/common/react/utils/DateHelper';\n\nimport { LocationContext, UserAction } from 'libs/analytics/interfaces';\n\nimport {\n ShareStatusIndicator\n} from 'libs/shared/apps/share/components/shared-by-me/share-status-indicator/ShareStatusIndicator';\nimport { SharedObjectImage } from 'libs/shared/apps/share/components/shared-object-image/SharedObjectImage';\nimport {\n AnonymousSharedToAvatar,\n SharedLinkAvatar,\n SharedToAvatarList\n} from 'libs/shared/apps/share/components/shared-to-avatar-list/SharedToAvatarList';\nimport { ShareHelper } from 'libs/shared/apps/share/utils/ShareHelper';\nimport { SharableEntity, ShareViewHelper } from 'libs/shared/apps/share/views/share/ShareViewHelper';\nimport { ActionOptions, Actions } from 'libs/shared/components/actions/Actions';\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { VideoSubText } from 'libs/shared/components/video-sub-text/VideoSubText';\nimport { ShareType } from 'libs/shared/enums/ShareType';\nimport { Breakpoints } from 'libs/shared/hooks/useBreakpoints';\nimport { BaseObject, UnionShareObject } from 'libs/shared/interfaces';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\nconst namespace = 'share.sharedByMeTable';\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\ninterface SharedByMeTableData {\n share: UnionShareObject;\n sharedObject: SharableEntity;\n dateShared: string;\n shareRecipients?: BaseObject[];\n viewCount: number;\n}\n\ntype TableDataGroupings = { [date: string]: SharedByMeTableData[] };\n\nexport function getColumns(\n index: number,\n dateHeading: string,\n getObjectAppLink: (object: BaseObject) => Core.AppLink,\n getObjectActions: (object: BaseObject) => ActionOptions[],\n imageCdnUrl: string,\n showStatus?: boolean,\n showViewCount?: boolean,\n breakpoints?: Breakpoints\n): Column<SharedByMeTableData>[] {\n const isMobile = breakpoints && (breakpoints.xs || breakpoints.sm);\n\n const columns: Column<SharedByMeTableData>[] = [\n {\n Header: showStatus ? '' : dateHeading,\n accessor: 'sharedObject',\n id: 'image',\n Cell: ({ value }) => (\n <div className='w-100'>\n <SharedObjectImage\n object={value}\n appLink={getObjectAppLink(value)}\n showVideoMetadata\n locationContext={LocationContext.SharedByMe}\n />\n </div>\n ),\n minWidth: 140,\n maxWidth: 30\n },\n {\n accessor: 'sharedObject',\n id: 'name',\n Cell: ({ value }) => {\n if (value.name) {\n if (VideoHelper.isVideoType(value) && !VideoHelper.getCanBeConsumed(value)?.canNavigate) {\n return (\n <span className='clamp-2'>\n {value.name}\n </span>\n );\n }\n\n return (\n <div className='clamp-2'>\n {VideoHelper.isVideoType(value) && (\n <VideoSubText\n type='series'\n video={value}\n appLink={'series' in value && value.series ? getObjectAppLink(value.series) : null}\n analyticsOptions={{ location: LocationContext.Insights }}\n />\n )}\n <AppLink\n appLink={getObjectAppLink(value)}\n analyticsData={{ id: value.id, name: value.name }}\n analyticsOptions={{\n entity: ShareViewHelper.getAnalyticsEntity(value.type),\n actionType: UserAction.Click,\n location: LocationContext.SharedByMe\n }}\n >\n {value.name}\n </AppLink>\n </div>\n );\n }\n\n return <span><Text namespace={namespace} phrase='videoUnavailable' /></span>;\n },\n width: 60\n },\n {\n Header: index === 0 ? getPhrase('sharedTo') : '',\n accessor: 'shareRecipients',\n Cell: ({ value }) => {\n if (!value)\n return <SharedLinkAvatar />;\n\n if (!value.length)\n return <AnonymousSharedToAvatar />;\n\n return <SharedToAvatarList recipients={value} imageCdnUrl={imageCdnUrl} maxAvatars={isMobile ? 1 : 2} />;\n },\n width: 40\n },\n !isMobile && {\n Header: index === 0 ? getPhrase('shared') : '',\n id: 'dateShared',\n accessor: s => formatDate(s.dateShared),\n width: 40\n },\n {\n accessor: 'sharedObject',\n id: 'actions',\n Cell: ({ value }) => (\n <Actions\n actions={getObjectActions(value)}\n className='w-100 justify-content-end pe-2'\n />\n ),\n width: 20\n }\n ];\n\n const statusColumn: Column<SharedByMeTableData> = {\n Header: dateHeading,\n accessor: 'share',\n id: 'status',\n Cell: ({ value }) => (\n <ShareStatusIndicator share={value} />\n ),\n width: 5\n };\n\n const viewCountColumn: Column<SharedByMeTableData> = {\n Header: getPhrase('views'),\n accessor: 'viewCount',\n width: 30\n };\n\n if (showStatus)\n columns.splice(0, 0, statusColumn);\n\n if (showViewCount)\n columns.splice(columns.length - 1, 0, viewCountColumn);\n\n return columns.filter((Boolean));\n}\n\nexport function useGetData(\n sentShares: UnionShareObject[],\n sharedObjects: BaseObject[],\n shareRecipients: BaseObject[],\n groupByDate: boolean,\n dependencies: (string | boolean)[]\n): TableDataGroupings {\n return React.useMemo(() => {\n const tableData: SharedByMeTableData[] = [];\n\n sentShares.forEach(s => {\n const sharedObject = sharedObjects.find(o => o.id === s.objectId);\n\n let recipients: BaseObject[] | null = null;\n\n if (s.type === ShareType.DirectShare) {\n recipients = [];\n\n s.recipients?.forEach(r => {\n const recipient = shareRecipients.find(s => s.id === 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 tableData.push({\n share: s,\n sharedObject,\n shareRecipients: recipients,\n dateShared: getDateShared(s),\n viewCount: s.viewCount ?? 0\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 { SHARES_TABLE_THEME } from 'libs/shared/apps/share/constants/TableTheme';\nimport { ActionOptions } from 'libs/shared/components/actions/Actions';\nimport { Table } from 'libs/shared/components/table/Table';\nimport { Breakpoints } from 'libs/shared/hooks/useBreakpoints';\nimport { BaseObject, UnionShareObject } from 'libs/shared/interfaces';\n\nimport { getColumns, useGetData } from './SharedByMeTableUtils';\n\ninterface SharedByMeTableProps {\n sentShares: UnionShareObject[];\n sharedObjects: BaseObject[];\n shareRecipients: BaseObject[];\n getObjectAppLink: (object: BaseObject) => Core.AppLink;\n getObjectActions: (object: BaseObject) => ActionOptions[];\n imageCdnUrl: string;\n groupByDateShared?: boolean;\n showStatus?: boolean;\n showViewCount?: boolean;\n dependencies?: (string | boolean)[];\n breakpoints?: Breakpoints;\n}\n\nfunction SharedByMeTableMemo(props: SharedByMeTableProps): JSX.Element {\n const data = useGetData(\n props.sentShares,\n props.sharedObjects,\n props.shareRecipients,\n !!props.groupByDateShared,\n props.dependencies\n );\n\n return (\n <>\n {Object.keys(data).map((heading, index) => (\n <Table\n key={index}\n columns={getColumns(\n index,\n heading,\n props.getObjectAppLink,\n props.getObjectActions,\n props.imageCdnUrl,\n props.showStatus,\n props.showViewCount,\n props.breakpoints\n )}\n data={data[heading]}\n theme={SHARES_TABLE_THEME}\n />\n ))}\n </>\n );\n}\n\nexport const SharedByMeTable = React.memo(SharedByMeTableMemo);","// extracted by mini-css-extract-plugin\nexport default {\"imageColumn\":\"uIOaA\",\"nameColumn\":\"Nta2B\",\"sharedToColumn\":\"XTJBC\",\"dateSharedColumn\":\"HdARK\",\"actionsColumn\":\"DXyZw\",\"heading\":\"XZ6o7\",\"image\":\"MolfU\",\"name\":\"MM43m\",\"avatar\":\"EboYM\",\"date\":\"by_XM\",\"actions\":\"_S2M_\"};","import React from 'react';\n\nimport styles from './partial-shared-by-me-table.scss';\n\nfunction PartialRow(): JSX.Element {\n return (\n <div className={`d-flex striped-row rounded`}>\n <div className={`d-flex align-items-center justify-content-center p-2 ${styles.imageColumn}`}>\n <div className={`partial-loading-background rounded w-100 ${styles.image}`} />\n </div>\n <div className={`d-flex align-items-center p-2 ${styles.nameColumn}`}>\n <div className={`partial-loading-background w-75 ${styles.name}`} />\n </div>\n <div className={`d-flex align-items-center p-2 ${styles.sharedToColumn}`}>\n <div className={`partial-loading-background ${styles.avatar}`} />\n </div>\n <div className={`d-none d-md-flex align-items-center p-2 ${styles.dateSharedColumn}`}>\n <div className={`partial-loading-background ${styles.date}`} />\n </div>\n <div className={`d-flex align-items-center justify-content-end p-2 ${styles.actionsColumn}`}>\n <div className={`partial-loading-background rounded me-2 ${styles.actions}`} />\n </div>\n </div>\n );\n}\n\ninterface PartialHeaderProps {\n fullHeader?: boolean;\n}\n\nfunction PartialHeader(props: PartialHeaderProps): JSX.Element {\n return (\n <div className='d-flex mb-1'>\n <div className={`${styles.imageColumn} p-2`}>\n <div className={`partial-loading-background ${styles.heading}`} />\n </div>\n <div className={`${styles.nameColumn} p-2`}>\n &nbsp;\n </div>\n <div className={`${styles.sharedToColumn} p-2`}>\n {props.fullHeader\n ? <div className={`partial-loading-background ${styles.heading}`} />\n : <>&nbsp;</>\n }\n </div>\n <div className={`${styles.dateSharedColumn} p-2 d-none d-md-flex`}>\n {props.fullHeader\n ? <div className={`partial-loading-background ${styles.heading}`} />\n : <>&nbsp;</>\n }\n </div>\n <div className={`${styles.actionsColumn} p-2`}>\n &nbsp;\n </div>\n </div>\n );\n}\n\nexport function PartialSharedByMeTable(): JSX.Element {\n return (\n <>\n <div className='mb-3'>\n <PartialHeader fullHeader />\n\n <div className='striped-list no-full-width'>\n <PartialRow />\n <PartialRow />\n <PartialRow />\n </div>\n </div>\n\n <div className='mb-3'>\n <PartialHeader />\n\n <div className='striped-list no-full-width'>\n <PartialRow />\n <PartialRow />\n <PartialRow />\n <PartialRow />\n </div>\n </div>\n\n <div className='mb-3'>\n <PartialHeader />\n\n <div className='striped-list no-full-width'>\n <PartialRow />\n <PartialRow />\n <PartialRow />\n <PartialRow />\n <PartialRow />\n <PartialRow />\n <PartialRow />\n <PartialRow />\n <PartialRow />\n <PartialRow />\n </div>\n </div>\n </>\n );\n}","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Flight } from 'libs/common/react/index';\n\nimport { SharableEntityType } from 'libs/shared/apps/share/views/share/ShareViewHelper';\nimport { ActionOptions } from 'libs/shared/components/actions/Actions';\nimport { SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\nimport { Tooltip } from 'libs/shared/components/tooltip/Tooltip';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { ConfigRequests } from 'libs/shared/flight-requests/ConfigRequests';\nimport { Breakpoints } from 'libs/shared/hooks/useBreakpoints';\nimport { BaseObject, Config } from 'libs/shared/interfaces';\nimport { AnalyticsRouteHelper } from 'libs/shared/utils/AnalyticsRouteHelper';\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';\n\nconst namespace = 'liteShare.sharedByMe';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nfunction getShareActionOptions(sharedObject: BaseObject, entityType: SharableEntityType): ActionOptions {\n return {\n label: getPhrase('editShareSettings'),\n appLink: {\n application: AppChannels.DEFAULT,\n action: Actions.Default.SHARE,\n args: [sharedObject.id],\n params: { entityType }\n }\n };\n}\n\ninterface SeeUsageActionProps {\n label: string;\n url?: string;\n}\n\nfunction SeeUsageAction(props: SeeUsageActionProps): JSX.Element {\n return (\n <Tooltip title={props.label} spanHack>\n <a\n href={props.url}\n target='_blank'\n >\n <SvgContainer svgName={cvSvgLibrary.Analytics} />\n </a>\n </Tooltip>\n );\n}\n\nfunction getSharedObjectActions(\n sharedObject: BaseObject,\n isMobile: boolean,\n config: Config\n): ActionOptions[] {\n let entityType: SharableEntityType;\n let analyticsPhrase = 'viewUsage';\n\n if (VideoHelper.isVideo(sharedObject))\n entityType = 'video';\n\n if (VideoHelper.isInteractive(sharedObject)) {\n entityType = 'interactive';\n analyticsPhrase = 'viewResults';\n }\n\n if (VideoHelper.isClip(sharedObject))\n entityType = 'clip';\n\n if (sharedObject.typeId === MasterType.Series)\n entityType = 'series';\n\n if (sharedObject.typeId === MasterType.Playlist)\n entityType = 'playlist';\n\n if (VideoHelper.isVideoType(sharedObject)) {\n const { canConsume } = VideoHelper.getCanBeConsumed(sharedObject);\n\n if (!canConsume)\n return [];\n }\n\n const sharedObjectActions = [getShareActionOptions(sharedObject, entityType)];\n\n const objectUrl = AnalyticsRouteHelper.getObjectUrl(config, sharedObject);\n if (objectUrl) {\n sharedObjectActions.push({\n label: !isMobile\n ? () => <SeeUsageAction label={getPhrase(analyticsPhrase)} url={objectUrl} />\n : getPhrase(analyticsPhrase),\n\n className: 'btn btn-link',\n button: !isMobile,\n href: AnalyticsRouteHelper.getObjectUrl(config, sharedObject),\n openInNewTab: true\n });\n }\n\n return sharedObjectActions;\n}\n\nexport function useGetSharedObjectActions(breakpoints: Breakpoints): ((object: BaseObject) => ActionOptions[]) | null {\n const config = Flight.useBasicFetch<Config>(ConfigRequests.config());\n\n const isMobile = breakpoints.xs || breakpoints.sm;\n\n return React.useCallback((object: BaseObject) =>\n getSharedObjectActions(object, isMobile, config.data), [isMobile]);\n}","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { SharedByMeEmptyState } from 'libs/shared/apps/share/components/shared-by-me/empty-state/SharedByMeEmptyState';\nimport { SharedByMeTable } from 'libs/shared/apps/share/components/shared-by-me/table/SharedByMeTable';\nimport { InfiniteScrollFooter } from 'libs/shared/components/infinite-scroll-footer/InfiniteScrollFooter';\nimport { PermissionName } from 'libs/shared/enums/PermissionName';\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';\n\nimport { ImageUrls } from 'shared/constants/ImageUrls';\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\nimport { useSharesTable } from 'shared/hooks/useSharesTable';\nimport { getObjectAppLink } from 'shared/utils/ObjectAppLinkHelper';\n\nimport { SharesHeader } from 'apps/share/components/shares-header/SharesHeader';\n\nimport { PartialSharedByMeTable } from './partial-loading/PartialSharedByMeTable';\nimport {\n useGetSharedObjectActions\n} from './SharedByMeViewUtils';\n\nconst namespace = 'liteShare.sharedByMe';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nexport function SharedByMeView(): JSX.Element {\n const { hasPermissions } = usePermissions();\n const { hasInsights } = useSettings(null);\n\n const breakpoints = useBreakpoints();\n\n const {\n sentShares,\n sharedObjects,\n shareRecipients,\n isFetching,\n showPartialLoading,\n nextCursor,\n hasMore,\n fetchNext,\n imageCdnUrl\n } = useSharesTable();\n\n const hasMyShares = hasPermissions(PermissionName.ViewMyShares) && hasInsights;\n\n React.useEffect(() => {\n if (hasMyShares)\n Core.AppLinkHelper.trigger({\n application: AppChannels.MY_SHARES,\n action: Actions.MyShares.HOME\n }, { replace: true });\n }, [hasMyShares]);\n\n useSetPageMetadata({ title: getPhrase('sharedByMe') });\n\n const getSharedObjectActions = useGetSharedObjectActions(breakpoints);\n\n return (\n <div className='px-3'>\n {!hasMyShares && <SharesHeader />}\n\n {(() => {\n if (showPartialLoading)\n return <PartialSharedByMeTable />;\n\n if (!sentShares.length)\n return (\n <SharedByMeEmptyState\n appLink={{ application: AppChannels.DASHBOARD, action: Actions.Dashboard.HOME }}\n imageUrl={ImageUrls.EmptyStates.Share.SHARED_WITH_ME}\n />\n );\n\n return (\n <>\n <SharedByMeTable\n sentShares={sentShares}\n sharedObjects={sharedObjects}\n shareRecipients={shareRecipients}\n getObjectAppLink={getObjectAppLink}\n getObjectActions={getSharedObjectActions}\n imageCdnUrl={imageCdnUrl}\n groupByDateShared\n dependencies={[isFetching]}\n breakpoints={breakpoints}\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}","// extracted by mini-css-extract-plugin\nexport default {\"pillTabSelector\":\"Hdi6o\",\"tab\":\"RvNxr\",\"minWidth\":\"GHSz9\",\"radiusSmall\":\"VhJJa\",\"tabLink\":\"WFyvo\"};","var EN_US = ['second', 'minute', 'hour', 'day', 'week', 'month', 'year'];\nexport default function (diff, idx) {\n if (idx === 0)\n return ['just now', 'right now'];\n var unit = EN_US[Math.floor(idx / 2)];\n if (diff > 1)\n unit += 's';\n return [diff + \" \" + unit + \" ago\", \"in \" + diff + \" \" + unit];\n}\n//# sourceMappingURL=en_US.js.map","var ZH_CN = ['秒', '分钟', '小时', '天', '周', '个月', '年'];\nexport default function (diff, idx) {\n if (idx === 0)\n return ['刚刚', '片刻后'];\n var unit = ZH_CN[~~(idx / 2)];\n return [diff + \" \" + unit + \"\\u524D\", diff + \" \" + unit + \"\\u540E\"];\n}\n//# sourceMappingURL=zh_CN.js.map","/**\n * Created by hustcc on 18/5/20.\n * Contract: i@hust.cc\n */\n/**\n * All supported locales\n */\nvar Locales = {};\n/**\n * register a locale\n * @param locale\n * @param func\n */\nexport var register = function (locale, func) {\n Locales[locale] = func;\n};\n/**\n * get a locale, default is en_US\n * @param locale\n * @returns {*}\n */\nexport var getLocale = function (locale) {\n return Locales[locale] || Locales['en_US'];\n};\n//# sourceMappingURL=register.js.map","/**\n * Created by hustcc on 18/5/20.\n * Contract: i@hust.cc\n */\nvar SEC_ARRAY = [\n 60,\n 60,\n 24,\n 7,\n 365 / 7 / 12,\n 12,\n];\n/**\n * format Date / string / timestamp to timestamp\n * @param input\n * @returns {*}\n */\nexport function toDate(input) {\n if (input instanceof Date)\n return input;\n // @ts-ignore\n if (!isNaN(input) || /^\\d+$/.test(input))\n return new Date(parseInt(input));\n input = (input || '')\n // @ts-ignore\n .trim()\n .replace(/\\.\\d+/, '') // remove milliseconds\n .replace(/-/, '/')\n .replace(/-/, '/')\n .replace(/(\\d)T(\\d)/, '$1 $2')\n .replace(/Z/, ' UTC') // 2017-2-5T3:57:52Z -> 2017-2-5 3:57:52UTC\n .replace(/([+-]\\d\\d):?(\\d\\d)/, ' $1$2'); // -04:00 -> -0400\n return new Date(input);\n}\n/**\n * format the diff second to *** time ago, with setting locale\n * @param diff\n * @param localeFunc\n * @returns\n */\nexport function formatDiff(diff, localeFunc) {\n /**\n * if locale is not exist, use defaultLocale.\n * if defaultLocale is not exist, use build-in `en`.\n * be sure of no error when locale is not exist.\n *\n * If `time in`, then 1\n * If `time ago`, then 0\n */\n var agoIn = diff < 0 ? 1 : 0;\n /**\n * Get absolute value of number (|diff| is non-negative) value of x\n * |diff| = diff if diff is positive\n * |diff| = -diff if diff is negative\n * |0| = 0\n */\n diff = Math.abs(diff);\n /**\n * Time in seconds\n */\n var totalSec = diff;\n /**\n * Unit of time\n */\n var idx = 0;\n for (; diff >= SEC_ARRAY[idx] && idx < SEC_ARRAY.length; idx++) {\n diff /= SEC_ARRAY[idx];\n }\n /**\n * Math.floor() is alternative of ~~\n *\n * The differences and bugs:\n * Math.floor(3.7) -> 4 but ~~3.7 -> 3\n * Math.floor(1559125440000.6) -> 1559125440000 but ~~1559125440000.6 -> 52311552\n *\n * More information about the performance of algebraic:\n * https://www.youtube.com/watch?v=65-RbBwZQdU\n */\n diff = Math.floor(diff);\n idx *= 2;\n if (diff > (idx === 0 ? 9 : 1))\n idx += 1;\n return localeFunc(diff, idx, totalSec)[agoIn].replace('%s', diff.toString());\n}\n/**\n * calculate the diff second between date to be formatted an now date.\n * @param date\n * @param relativeDate\n * @returns {number}\n */\nexport function diffSec(date, relativeDate) {\n var relDate = relativeDate ? toDate(relativeDate) : new Date();\n return (+relDate - +toDate(date)) / 1000;\n}\n/**\n * nextInterval: calculate the next interval time.\n * - diff: the diff sec between now and date to be formatted.\n *\n * What's the meaning?\n * diff = 61 then return 59\n * diff = 3601 (an hour + 1 second), then return 3599\n * make the interval with high performance.\n **/\nexport function nextInterval(diff) {\n var rst = 1, i = 0, d = Math.abs(diff);\n for (; diff >= SEC_ARRAY[i] && i < SEC_ARRAY.length; i++) {\n diff /= SEC_ARRAY[i];\n rst *= SEC_ARRAY[i];\n }\n d = d % rst;\n d = d ? rst - d : rst;\n return Math.ceil(d);\n}\n//# sourceMappingURL=date.js.map","import { formatDiff, diffSec } from './utils/date';\nimport { getLocale } from './register';\n/**\n * format a TDate into string\n * @param date\n * @param locale\n * @param opts\n */\nexport var format = function (date, locale, opts) {\n // diff seconds\n var sec = diffSec(date, opts && opts.relativeDate);\n // format it with locale\n return formatDiff(sec, getLocale(locale));\n};\n//# sourceMappingURL=format.js.map","/**\n * Created by hustcc on 18/5/20.\n * Contract: i@hust.cc\n */\nimport en_US from './lang/en_US';\nimport zh_CN from './lang/zh_CN';\nimport { register } from './register';\nregister('en_US', en_US);\nregister('zh_CN', zh_CN);\nexport { format } from './format';\nexport { render, cancel } from './realtime';\nexport { register };\n//# sourceMappingURL=index.js.map"],"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","getPhrase","LanguageService","getHiddenRecipientText","hiddenRecipients","counts","ArrayHelper","userCount","MasterType","classroomCount","groupCount","SharedToAvatar","props","user","item","typeId","classroom","classroomGroup","svgContainerClassName","Tooltip","title","surname","spanHack","spanHackClassName","Avatar","imageUrl","avatar","imageCdnUrl","initials","UserHelper","extraClasses","className","IconCircle","svgName","svgSize","SvgContainer","S","variant","metadata","colour","AnonymousSharedToAvatar","avatarSize","size","SharedLinkAvatar","text","SharedToAvatarList","AvatarList","items","recipients","avatarItem","avatarContainerClassname","getHiddenTooltip","hasShareLink","shareLinkText","defaultProps","maxAvatars","SHARES_TABLE_THEME","table","header","headerCell","row","cell","Actions","orderedActions","actions","sort","a","b","order","buttonActions","moreActions","forEach","button","push","length","idx","label","appLink","href","onClick","dropdownToggleSvgSize","tooltip","showSpinner","analyticsData","analyticsOptions","openInNewTab","disabled","iconButton","showBorder","customSize","ariaLabel","sortComponent","dropdownToggleClassName","actionsDropdownClassName","fetchMore","LazyDropdownItems","style","padding","height","width","getDropdownItemClassName","actionClassName","ActionsDropdownItem","FunctionHelper","action","AppLink","e","preventDefault","AnalyticsHelper","role","tabIndex","onKeyDown","ActionsDropdown","isLazy","some","lazyPlaceholder","currentGroup","dropdownToggleId","RandomHelper","showDivider","undefined","group","itemsToDisplay","slice","hiddenItems","AvatarItem","hiddenItemsCounts","translateX","getAvatarStyles","transform","zIndex","marginRight","index","roleToDisplay","count","smartCount","numberClassname","TabContents","tab","PillTabSelector","ref","containerRef","borderRadius","listClassName","tabs","active","onSelect","onSelectTab","useBatchFetch","itemIds","getRequest","requests","chunk","responses","reduce","acc","isFetching","getAnalyticsRequestKey","baseKey","sharerId","userIdKey","Array","isArray","join","groupIdKey","AnalyticsRouteHelper","getObjectUrl","config","object","baseUrl","analyticsWebUrl","relativeUrl","mapColourToBsVariant","groupColour","SHARED_BY_ME_APP_LINK","application","SHARED_WITH_ME_APP_LINK","SharesHeader","currentAppLink","SharedByMeEmptyState","EmptyState","src","useInteractiveCopy","getStatusPhrase","share","ShareType","status","ShareLinkStatus","getBgColourClassName","ShareStatusIndicator","isPasswordProtected","getDateShared","dateCreated","datesShared","r","dateShared","date1","date2","DateHelper","getColumns","dateHeading","getObjectAppLink","getObjectActions","showStatus","showViewCount","breakpoints","isMobile","xs","sm","columns","Header","accessor","Cell","value","SharedObjectImage","showVideoMetadata","locationContext","minWidth","maxWidth","VideoHelper","canNavigate","VideoSubText","video","series","location","entity","ShareViewHelper","actionType","Text","namespace","phrase","s","statusColumn","viewCountColumn","splice","Boolean","SharedByMeTable","sentShares","sharedObjects","shareRecipients","groupByDate","dependencies","groupByDateShared","tableData","sharedObject","find","o","objectId","recipient","viewCount","ShareHelper","Object","keys","heading","Table","theme","PartialRow","PartialHeader","fullHeader","PartialSharedByMeTable","getShareActionOptions","entityType","args","params","SeeUsageAction","target","SharedByMeView","hasPermissions","usePermissions","hasInsights","useSettings","useBreakpoints","useSharesTable","showPartialLoading","nextCursor","hasMore","fetchNext","hasMyShares","PermissionName","replace","useSetPageMetadata","getSharedObjectActions","ConfigRequests","analyticsPhrase","canConsume","sharedObjectActions","objectUrl","useGetSharedObjectActions","InfiniteScrollFooter","ImageUrls","getDirectShares","getRecipientIds","d","getBatchFetchResultAsArray","result","values","interactiveInsights","shouldFetch","fetch","UserRequests","cursor","ShareRequests","isFetchingSentShares","sharedObjectIds","sharedObjectsFetchResult","ids","recipientIds","shareRecipientsFetchResult","filterKey","JSON","stringify","sentShare","recipientsFetchResult","initialSharedObjectsLoaded","setInitialSharedObjectsLoaded","initialRecipientsLoaded","setInitialRecipientsLoaded","usePartialLoading","setShareRecipients","ObjectHelper","interactiveIds","interactive","metadataId","interactivesPendingReview","I","interactives","filters","EN_US","ZH_CN","Locales","register","locale","func","SEC_ARRAY","toDate","input","Date","isNaN","test","parseInt","trim","format","date","opts","sec","relativeDate","diff","localeFunc","agoIn","totalSec","Math","abs","floor","toString","unit"],"sourceRoot":""}