@clickview/lite 0.48.0-rc.7 → 0.48.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/bundles.json +1 -1
- package/dist/scripts/{170-1f815b85a1-lite.chunk.js → 170-2d124965b7-lite.chunk.js} +2 -2
- package/dist/scripts/{170-1f815b85a1-lite.chunk.js.map → 170-2d124965b7-lite.chunk.js.map} +1 -1
- package/dist/scripts/{1818-b9f9297d6d-lite.chunk.js → 1818-72409e60a9-lite.chunk.js} +1 -1
- package/dist/scripts/{1818-b9f9297d6d-lite.chunk.js.map → 1818-72409e60a9-lite.chunk.js.map} +1 -1
- package/dist/scripts/{1863-cf9df40052-lite.chunk.js → 1863-e7c4a6f342-lite.chunk.js} +1 -1
- package/dist/scripts/{1863-cf9df40052-lite.chunk.js.map → 1863-e7c4a6f342-lite.chunk.js.map} +1 -1
- package/dist/scripts/{1958-9889c1ad24-lite.chunk.js → 1958-5336189397-lite.chunk.js} +1 -1
- package/dist/scripts/{1958-9889c1ad24-lite.chunk.js.map → 1958-5336189397-lite.chunk.js.map} +1 -1
- package/dist/scripts/{2086-a247f6e201-lite.chunk.js → 2086-f7082703d0-lite.chunk.js} +1 -1
- package/dist/scripts/{2086-a247f6e201-lite.chunk.js.map → 2086-f7082703d0-lite.chunk.js.map} +1 -1
- package/dist/scripts/{2118-462a279c5a-lite.chunk.js → 2118-ec2a5f1e9b-lite.chunk.js} +2 -2
- package/dist/scripts/{2118-462a279c5a-lite.chunk.js.map → 2118-ec2a5f1e9b-lite.chunk.js.map} +1 -1
- package/dist/scripts/{2182-5c9db07f5b-lite.chunk.js → 2182-8e4d603a1b-lite.chunk.js} +1 -1
- package/dist/scripts/{2182-5c9db07f5b-lite.chunk.js.map → 2182-8e4d603a1b-lite.chunk.js.map} +1 -1
- package/dist/scripts/{2279-5e92c84310-lite.chunk.js → 2279-252e92e1d8-lite.chunk.js} +1 -1
- package/dist/scripts/{2279-5e92c84310-lite.chunk.js.map → 2279-252e92e1d8-lite.chunk.js.map} +1 -1
- package/dist/scripts/{2355-6cd89fa80d-lite.chunk.js → 2355-c588dc3ce2-lite.chunk.js} +1 -1
- package/dist/scripts/{2355-6cd89fa80d-lite.chunk.js.map → 2355-c588dc3ce2-lite.chunk.js.map} +1 -1
- package/dist/scripts/{2469-aa5bbbb17f-lite.chunk.js → 2469-46411b862e-lite.chunk.js} +1 -1
- package/dist/scripts/{2469-aa5bbbb17f-lite.chunk.js.map → 2469-46411b862e-lite.chunk.js.map} +1 -1
- package/dist/scripts/{2672-0fc559f1d1-lite.chunk.js → 2672-b01985cee8-lite.chunk.js} +1 -1
- package/dist/scripts/{2672-0fc559f1d1-lite.chunk.js.map → 2672-b01985cee8-lite.chunk.js.map} +1 -1
- package/dist/scripts/{2734-6c6d57d0f3-lite.chunk.js → 2734-6a7beb2ce2-lite.chunk.js} +1 -1
- package/dist/scripts/{2734-6c6d57d0f3-lite.chunk.js.map → 2734-6a7beb2ce2-lite.chunk.js.map} +1 -1
- package/dist/scripts/{287-ba98be7f21-lite.chunk.js → 287-3cbed16363-lite.chunk.js} +1 -1
- package/dist/scripts/{287-ba98be7f21-lite.chunk.js.map → 287-3cbed16363-lite.chunk.js.map} +1 -1
- package/dist/scripts/{2875-0e5f209e47-lite.chunk.js → 2875-aefd69a61f-lite.chunk.js} +1 -1
- package/dist/scripts/{2875-0e5f209e47-lite.chunk.js.map → 2875-aefd69a61f-lite.chunk.js.map} +1 -1
- package/dist/scripts/{3042-6650521d8b-lite.chunk.js → 3042-7c1b5e4ff7-lite.chunk.js} +1 -1
- package/dist/scripts/{3042-6650521d8b-lite.chunk.js.map → 3042-7c1b5e4ff7-lite.chunk.js.map} +1 -1
- package/dist/scripts/{3158-31baada6cc-lite.chunk.js → 3158-2147de456d-lite.chunk.js} +1 -1
- package/dist/scripts/{3158-31baada6cc-lite.chunk.js.map → 3158-2147de456d-lite.chunk.js.map} +1 -1
- package/dist/scripts/{3296-6d80e4dd56-lite.chunk.js → 3296-f3732c93d9-lite.chunk.js} +1 -1
- package/dist/scripts/{3296-6d80e4dd56-lite.chunk.js.map → 3296-f3732c93d9-lite.chunk.js.map} +1 -1
- package/dist/scripts/{3541-7ebd9db295-lite.chunk.js → 3541-15581012d3-lite.chunk.js} +1 -1
- package/dist/scripts/{3541-7ebd9db295-lite.chunk.js.map → 3541-15581012d3-lite.chunk.js.map} +1 -1
- package/dist/scripts/{3841-95df66e647-lite.chunk.js → 3841-bfae79638b-lite.chunk.js} +2 -2
- package/dist/scripts/{3841-95df66e647-lite.chunk.js.map → 3841-bfae79638b-lite.chunk.js.map} +1 -1
- package/dist/scripts/{3888-0bee9a9309-lite.chunk.js → 3888-87c1075a1b-lite.chunk.js} +1 -1
- package/dist/scripts/{3888-0bee9a9309-lite.chunk.js.map → 3888-87c1075a1b-lite.chunk.js.map} +1 -1
- package/dist/scripts/{4138-75a2bb69ab-lite.chunk.js → 4138-b9b03c9900-lite.chunk.js} +1 -1
- package/dist/scripts/{4138-75a2bb69ab-lite.chunk.js.map → 4138-b9b03c9900-lite.chunk.js.map} +1 -1
- package/dist/scripts/{4778-ebe369973c-lite.chunk.js → 4778-3c9f2b7f76-lite.chunk.js} +2 -2
- package/dist/scripts/{4778-ebe369973c-lite.chunk.js.map → 4778-3c9f2b7f76-lite.chunk.js.map} +1 -1
- package/dist/scripts/{4942-a27a31e79e-lite.chunk.js → 4942-acce40b333-lite.chunk.js} +2 -2
- package/dist/scripts/{4942-a27a31e79e-lite.chunk.js.map → 4942-acce40b333-lite.chunk.js.map} +1 -1
- package/dist/scripts/{5075-f8719465be-lite.chunk.js → 5075-53172298fe-lite.chunk.js} +1 -1
- package/dist/scripts/{5075-f8719465be-lite.chunk.js.map → 5075-53172298fe-lite.chunk.js.map} +1 -1
- package/dist/scripts/{5157-cd12e2e443-lite.chunk.js → 5157-47a0f5c088-lite.chunk.js} +1 -1
- package/dist/scripts/{5157-cd12e2e443-lite.chunk.js.map → 5157-47a0f5c088-lite.chunk.js.map} +1 -1
- package/dist/scripts/{5268-f4db3933ff-lite.chunk.js → 5268-9b7560f3b1-lite.chunk.js} +2 -2
- package/dist/scripts/{5268-f4db3933ff-lite.chunk.js.map → 5268-9b7560f3b1-lite.chunk.js.map} +1 -1
- package/dist/scripts/{5442-01ffd95162-lite.chunk.js → 5442-5ddfa2d951-lite.chunk.js} +1 -1
- package/dist/scripts/{5442-01ffd95162-lite.chunk.js.map → 5442-5ddfa2d951-lite.chunk.js.map} +1 -1
- package/dist/scripts/{5591-98cfe6c6e5-lite.chunk.js → 5591-119d72ede5-lite.chunk.js} +1 -1
- package/dist/scripts/{5591-98cfe6c6e5-lite.chunk.js.map → 5591-119d72ede5-lite.chunk.js.map} +1 -1
- package/dist/scripts/{5595-3763b14d77-lite.chunk.js → 5595-628d4f252c-lite.chunk.js} +2 -2
- package/dist/scripts/5595-628d4f252c-lite.chunk.js.map +1 -0
- package/dist/scripts/{6102-4d948a5e48-lite.chunk.js → 6102-751dbbbf33-lite.chunk.js} +3 -3
- package/dist/scripts/{6102-4d948a5e48-lite.chunk.js.map → 6102-751dbbbf33-lite.chunk.js.map} +1 -1
- package/dist/scripts/{6158-0c5e44f800-lite.chunk.js → 6158-d123add596-lite.chunk.js} +1 -1
- package/dist/scripts/{6158-0c5e44f800-lite.chunk.js.map → 6158-d123add596-lite.chunk.js.map} +1 -1
- package/dist/scripts/{6263-8957d50afe-lite.chunk.js → 6263-24e67b7df2-lite.chunk.js} +1 -1
- package/dist/scripts/{6263-8957d50afe-lite.chunk.js.map → 6263-24e67b7df2-lite.chunk.js.map} +1 -1
- package/dist/scripts/{6330-c66465bd6d-lite.chunk.js → 6330-9a2a5fc07e-lite.chunk.js} +1 -1
- package/dist/scripts/{6330-c66465bd6d-lite.chunk.js.map → 6330-9a2a5fc07e-lite.chunk.js.map} +1 -1
- package/dist/scripts/{671-003843ca84-lite.chunk.js → 671-5571f33165-lite.chunk.js} +1 -1
- package/dist/scripts/{671-003843ca84-lite.chunk.js.map → 671-5571f33165-lite.chunk.js.map} +1 -1
- package/dist/scripts/{7167-efe85af16e-lite.chunk.js → 7167-dc4c954c2b-lite.chunk.js} +1 -1
- package/dist/scripts/{7167-efe85af16e-lite.chunk.js.map → 7167-dc4c954c2b-lite.chunk.js.map} +1 -1
- package/dist/scripts/7293-58f4a7cf47-lite.chunk.js +2 -0
- package/dist/scripts/{7293-afd3349468-lite.chunk.js.map → 7293-58f4a7cf47-lite.chunk.js.map} +1 -1
- package/dist/scripts/{7301-f20e4bdb8f-lite.chunk.js → 7301-7c9342ef0c-lite.chunk.js} +1 -1
- package/dist/scripts/{7301-f20e4bdb8f-lite.chunk.js.map → 7301-7c9342ef0c-lite.chunk.js.map} +1 -1
- package/dist/scripts/{7708-ece31b78a9-lite.chunk.js → 7708-e91903481a-lite.chunk.js} +1 -1
- package/dist/scripts/{7708-ece31b78a9-lite.chunk.js.map → 7708-e91903481a-lite.chunk.js.map} +1 -1
- package/dist/scripts/{771-eb60e33941-lite.chunk.js → 771-5612b4ffc2-lite.chunk.js} +2 -2
- package/dist/scripts/{771-eb60e33941-lite.chunk.js.map → 771-5612b4ffc2-lite.chunk.js.map} +1 -1
- package/dist/scripts/{7855-37bcdd134e-lite.chunk.js → 7855-4b69540a71-lite.chunk.js} +1 -1
- package/dist/scripts/{7855-37bcdd134e-lite.chunk.js.map → 7855-4b69540a71-lite.chunk.js.map} +1 -1
- package/dist/scripts/{8024-66413cc05b-lite.chunk.js → 8024-765a4170c7-lite.chunk.js} +2 -2
- package/dist/scripts/{8024-66413cc05b-lite.chunk.js.map → 8024-765a4170c7-lite.chunk.js.map} +1 -1
- package/dist/scripts/{823-58d27c255b-lite.chunk.js → 823-33c5207c68-lite.chunk.js} +1 -1
- package/dist/scripts/{823-58d27c255b-lite.chunk.js.map → 823-33c5207c68-lite.chunk.js.map} +1 -1
- package/dist/scripts/8261-69854ff4d5-lite.chunk.js +2 -0
- package/dist/scripts/8261-69854ff4d5-lite.chunk.js.map +1 -0
- package/dist/scripts/{8466-ee9d40ee97-lite.chunk.js → 8466-cea62163e8-lite.chunk.js} +1 -1
- package/dist/scripts/{8466-ee9d40ee97-lite.chunk.js.map → 8466-cea62163e8-lite.chunk.js.map} +1 -1
- package/dist/scripts/{8681-41edd08b98-lite.chunk.js → 8681-49db3daae6-lite.chunk.js} +2 -2
- package/dist/scripts/{8681-41edd08b98-lite.chunk.js.map → 8681-49db3daae6-lite.chunk.js.map} +1 -1
- package/dist/scripts/{8772-9ae4d77363-lite.chunk.js → 8772-6c11095cea-lite.chunk.js} +1 -1
- package/dist/scripts/{8772-9ae4d77363-lite.chunk.js.map → 8772-6c11095cea-lite.chunk.js.map} +1 -1
- package/dist/scripts/{8906-b75b51bd0f-lite.chunk.js → 8906-2f6b5e4c5c-lite.chunk.js} +2 -2
- package/dist/scripts/{8906-b75b51bd0f-lite.chunk.js.map → 8906-2f6b5e4c5c-lite.chunk.js.map} +1 -1
- package/dist/scripts/{920-4de8efbcf1-lite.chunk.js → 920-acc6596891-lite.chunk.js} +1 -1
- package/dist/scripts/{920-4de8efbcf1-lite.chunk.js.map → 920-acc6596891-lite.chunk.js.map} +1 -1
- package/dist/scripts/{9212-8f95fbd9b9-lite.chunk.js → 9212-cc987a13bf-lite.chunk.js} +1 -1
- package/dist/scripts/{9212-8f95fbd9b9-lite.chunk.js.map → 9212-cc987a13bf-lite.chunk.js.map} +1 -1
- package/dist/scripts/{9242-2e533bdc0d-lite.chunk.js → 9242-144e7728ad-lite.chunk.js} +1 -1
- package/dist/scripts/{9242-2e533bdc0d-lite.chunk.js.map → 9242-144e7728ad-lite.chunk.js.map} +1 -1
- package/dist/scripts/{9264-d2285d4310-lite.chunk.js → 9264-518952f13f-lite.chunk.js} +1 -1
- package/dist/scripts/{9264-d2285d4310-lite.chunk.js.map → 9264-518952f13f-lite.chunk.js.map} +1 -1
- package/dist/scripts/{9478-8eacf2fe47-lite.chunk.js → 9478-4b3c088537-lite.chunk.js} +2 -2
- package/dist/scripts/{9478-8eacf2fe47-lite.chunk.js.map → 9478-4b3c088537-lite.chunk.js.map} +1 -1
- package/dist/scripts/{9484-be04a34bbf-lite.chunk.js → 9484-b85011dbea-lite.chunk.js} +2 -2
- package/dist/scripts/{9484-be04a34bbf-lite.chunk.js.map → 9484-b85011dbea-lite.chunk.js.map} +1 -1
- package/dist/scripts/{bundle-8f540a1154.min.js → bundle-c158cdd3a9.min.js} +3 -3
- package/dist/scripts/{bundle-8f540a1154.min.js.map → bundle-c158cdd3a9.min.js.map} +1 -1
- package/package.json +1 -1
- package/dist/scripts/5595-3763b14d77-lite.chunk.js.map +0 -1
- package/dist/scripts/7293-afd3349468-lite.chunk.js +0 -2
- package/dist/scripts/8261-72453f1978-lite.chunk.js +0 -2
- package/dist/scripts/8261-72453f1978-lite.chunk.js.map +0 -1
- /package/dist/scripts/{170-1f815b85a1-lite.chunk.js.LICENSE.txt → 170-2d124965b7-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{2118-462a279c5a-lite.chunk.js.LICENSE.txt → 2118-ec2a5f1e9b-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{3841-95df66e647-lite.chunk.js.LICENSE.txt → 3841-bfae79638b-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{4778-ebe369973c-lite.chunk.js.LICENSE.txt → 4778-3c9f2b7f76-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{4942-a27a31e79e-lite.chunk.js.LICENSE.txt → 4942-acce40b333-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{5268-f4db3933ff-lite.chunk.js.LICENSE.txt → 5268-9b7560f3b1-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{6102-4d948a5e48-lite.chunk.js.LICENSE.txt → 6102-751dbbbf33-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{771-eb60e33941-lite.chunk.js.LICENSE.txt → 771-5612b4ffc2-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{8024-66413cc05b-lite.chunk.js.LICENSE.txt → 8024-765a4170c7-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{8681-41edd08b98-lite.chunk.js.LICENSE.txt → 8681-49db3daae6-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{8906-b75b51bd0f-lite.chunk.js.LICENSE.txt → 8906-2f6b5e4c5c-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{9478-8eacf2fe47-lite.chunk.js.LICENSE.txt → 9478-4b3c088537-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{9484-be04a34bbf-lite.chunk.js.LICENSE.txt → 9484-b85011dbea-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{bundle-8f540a1154.min.js.LICENSE.txt → bundle-c158cdd3a9.min.js.LICENSE.txt} +0 -0
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
"use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[5075],{29024:(e,t,n)=>{n.d(t,{k:()=>h});var a=n(32735),r=n(75163),i=n(5465),l=n(72355),c=n(7733),o=n(54610),s=n(4594),u=n(68626),m=n(9085),d=n(67453),p=n(31908);const f={thumbnailFallbackSvg:"D4JFs",posterFallbackSvg:"bjUWl",coverFallbackSvg:"kdLpt"};var v="rounded overflow-hidden";function h(e){var t=a.useCallback((function(t){var n;t&&e.fixedHeight&&(t.style.width="".concat(t.offsetHeight*(n=e.object,p.M.isVideoType(n)?16/9:n.typeId===s.E.Playlist?1:n.typeId===s.E.Series?9/16:void 0),"px"))}),[]),n={size:o.h2.Small},h=function(e){var t=d.j.getDisplayImageFromObject(e);if(p.M.isVideoType(e))return{image:t,imageType:o.__.Thumbnails,imageClassName:v,imageFallbackComponent:a.createElement(i.oy,{type:i.mS.Video})};switch(e.typeId){case s.E.Series:return{image:t,imageType:o.__.TallPosters,imageClassName:v,imageFallbackComponent:a.createElement(i.oy,{type:i.mS.Series,svgContainerClassName:f.posterFallbackSvg})};case s.E.Playlist:return{image:t,imageType:o.__.Covers,imageClassName:(null==t?void 0:t.url)?v:"".concat(v," ").concat((0,m.x)(e.name,c.o)),imageFallbackComponent:a.createElement(i.oy,{type:i.mS.Playlist,svgContainerClassName:(null==t?void 0:t.url)?f.coverFallbackSvg:"d-none",extraClasses:!(null==t?void 0:t.url)&&"bg-transparent"})}}}(e.object),g=h.image,y=h.imageType,E=h.imageClassName,b=h.imageFallbackComponent,C=p.M.isVideoType(e.object)&&!!e.showVideoMetadata;return a.createElement("div",{className:"d-flex align-items-center justify-content-center w-100 h-100"},a.createElement("div",{ref:t,className:e.fixedHeight?"h-100":"w-100"},C&&a.createElement(l.u,{video:e.object,imageOptions:n,textPosition:u.z.Independent,type:"cosmetic",appLink:e.appLink,analyticsOptions:{location:e.locationContext},hideDuration:!0,hideMask:!0,size:"sm"}),!C&&a.createElement(r.Z,{data:null==g?void 0:g.url,imageType:y,imageOptions:n,appLink:e.appLink,className:E},b)))}},95834:(e,t,n)=>{n.d(t,{J:()=>a});var a={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"}},31754:(e,t,n)=>{n.d(t,{x:()=>c});var a=n(82602),r=n(75896),i=n(89682),l=n(11576),c={groupByDateShared:function(e){var t=r.m.groupBy(e,"dateShared");return Object.keys(t).sort().reverse().reduce((function(e,n){var r=(0,a.WU)(n);return e[r]||(e[r]=[]),e[r]=e[r].concat(t[n]),e}),{})},mapActivityStatusToCheckMarkStatus:function(e){switch(e){case l.T.Complete:return i.h.Complete;case l.T.Incomplete:return i.h.Incomplete;case l.T.None:return i.h.None}},mapCheckMarkStatusToActivityStatus:function(e){switch(e){case i.h.Complete:return l.T.Complete;case i.h.Incomplete:return l.T.Incomplete;case i.h.None:return l.T.None}}}},38502:(e,t,n)=>{n.d(t,{r:()=>s});var a=n(32735),r=n(49985),i=n(36848),l=n(18559),c=n(11607),o=n(87432);function s(e){var t;return a.createElement("nav",{className:null!==(t=e.className)&&void 0!==t?t:""},a.createElement("ul",{className:"list-unstyled d-inline-block m-0 ".concat(o.Z.pillTabSelector)},e.tabs.map((function(e){return a.createElement("li",{className:"p-0 ".concat(e.active?"btn btn-dark":"btn btn-outline-dark"),key:e.name},e.appLink?a.createElement(i.F,{appLink:e.appLink,analyticsData:e.analyticsData,analyticsOptions:e.analyticsOptions,className:"cursor-pointer d-flex justify-content-center text-decoration-none text-reset px-2 ".concat(o.Z.pillItem)},e.name,"number"==typeof e.count&&a.createElement("div",{className:"ps-2"},a.createElement(l.C,{type:l.g.Count,data:e.count}))):a.createElement(c.L,{className:"".concat(o.Z.pillItem," d-flex justify-content-center p-2"),onClick:function(){return function(e){!e.active&&e.onSelect&&(e.onSelect(),e.analyticsData&&e.analyticsOptions&&r.k.logUserAction(e.analyticsData,e.analyticsOptions))}(e)}},e.name,"number"==typeof e.count&&a.createElement("div",{className:"ps-2"},a.createElement(l.C,{type:l.g.Count,data:e.count}))))}))))}},39902:(e,t,n)=>{n.d(t,{f:()=>o});var a=n(32735),r=n(70680),i=n(20354);function l(e,t){if(e){if("string"==typeof e)return c(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?c(e,t):void 0}}function c(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,a=new Array(t);n<t;n++)a[n]=e[n];return a}function o(e,t){var n,o,s=(n=a.useState([]),o=2,function(e){if(Array.isArray(e))return e}(n)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var a,r,i,l,c=[],o=!0,s=!1;try{if(i=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;o=!1}else for(;!(o=(a=i.call(n)).done)&&(c.push(a.value),c.length!==t);o=!0);}catch(e){s=!0,r=e}finally{try{if(!o&&null!=n.return&&(l=n.return(),Object(l)!==l))return}finally{if(s)throw r}}return c}}(n,o)||l(n,o)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),u=s[0],m=s[1];a.useEffect((function(){if(null==e?void 0:e.length){var t=function(e){return function(e){if(Array.isArray(e))return c(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||l(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}(u);t.push([]),e.forEach((function(e){t.find((function(t){return t.find((function(t){return t===e}))}))||t[t.length-1].push(e)})),m(t.filter((function(e){return e.length})))}}),[e?e.join(","):null]);var d=(0,r.I0)(),p=(0,r.v9)((function(e){return e}));if(a.useEffect((function(){u.forEach((function(e){var n=t(e);i.a.getResponse(p,n.key).shouldFetch&&i.a.fetch(d,n)}))}),[null==u?void 0:u.length]),!(null==u?void 0:u.length))return{items:null,isFetching:!1};var f={},v={};return u.forEach((function(e,n){var a=t(e),r=i.a.getResponse(p,a.key);v[n]=r,r.data&&r.data.forEach((function(e){return f[e.id]=e}))})),{items:Object.keys(v).some((function(e){return!!v[e].data}))?f:null,isFetching:!!Object.keys(v).some((function(e){return v[e].isFetching}))}}},70227:(e,t,n)=>{n.d(t,{c:()=>i});var a=n(97395),r=n(4594),i={getObjectUrl:function(e,t){var n=e.analyticsWebUrl;if(n){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 a._.safeUrlConcat(n,i)}}}},36511:(e,t,n)=>{n.d(t,{I:()=>r});var a=n(96787);function r(e){switch(e){case a.R.Pink:return"pink";case a.R.Orange:return"orange";case a.R.Green:return"green";case a.R.Blue:return"blue";case a.R.Purple:return"purple";case a.R.Indigo:return"indigo";default:return"pink"}}},2523:(e,t,n)=>{n.d(t,{w:()=>p});var a=n(32735),r=n(23481),i=n(81886),l=n(38502),c=n(75795),o=n(14070),s=n(97291),u=r.T.encloseNamespace("share.sharesHeader"),m={application:s.O.MY_SHARES,action:o.e.MyShares.SHARED_BY_ME},d={application:s.O.MY_SHARES,action:o.e.MyShares.SHARED_WITH_ME};function p(){return a.createElement("div",{className:"pb-3"},a.createElement("h1",{className:"h2 mb-3"},u("shares")),a.createElement(l.r,{tabs:(t=null===(e=c.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}},25458:(e,t,n)=>{n.r(t),n.d(t,{SharedByMeView:()=>Ne});var a=n(32735),r=n(70680),i=n(23481),l=n(20354),c=n(75896),o=n(23232),s=i.T.encloseNamespace("share.sharedByMeEmptyState");function u(e){return a.createElement(o.u,null,a.createElement(o.u.Image,{src:e.imageUrl,size:"small"}),a.createElement(o.u.Heading,null,s(e.useInteractiveCopy?"interactivesHeading":"genericHeading")),a.createElement(o.u.Info,null,s(e.useInteractiveCopy?"interactivesInfo":"genericInfo")),!!e.appLink&&a.createElement(o.u.Cta,{appLink:e.appLink,text:s("cta")}))}var m=n(95834),d=n(69674),p=n(82602),f=n(110),v=n(65858),h=n(83914),g=n(76177),y=n(49080),E=n(85063),b=n(35223);const C={indicatorContainer:"T6YAv",indicator:"_MRHG"};var S=i.T.encloseNamespace("share.shareStatusIndicator");function k(e){if(e.type===E.y.DirectShare)return S("active");switch(e.status){case y.F.Active:return S("active");case y.F.Expired:return S("expired")}}function N(e){if(e.type===E.y.DirectShare)return"bg-success";switch(e.status){case y.F.Active:return"bg-success";case y.F.Expired:return"bg-secondary"}}function w(e){var t;return e.share.type!==E.y.DirectShare||(null===(t=e.share.recipients)||void 0===t?void 0:t.length)?e.share.type===E.y.ShareLink&&e.share.isPasswordProtected?a.createElement(g.u,{title:S("passwordProtected"),spanHack:!0},a.createElement(h.x,{svgName:b.vn.Lock,size:h.S.Small})):a.createElement(g.u,{title:k(e.share),spanHack:!0,spanHackClassName:C.indicatorContainer},a.createElement("div",{className:"".concat(C.indicator," ").concat(N(e.share))})):a.createElement(a.Fragment,null)}var I=n(29024),x=n(20789),T=n(18995),j=n(60376),A=n(4594),M=n(36511),O=n(64818);const H={avatarContainer:"ByxQa"};var L=i.T.encloseNamespace("reportsShare.sharedToAvatarList");function F(e){var t=c.m.countBy(e,"typeId"),n=t[A.E.User],a=t[A.E.Classroom],r=t[A.E.ClassroomGroup];return n&&a&&r?L("classroomsGroupsAndUsers",{userCount:n,classroomCount:a,groupCount:r}):n&&a?L("classroomsAndUsers",{userCount:n,classroomCount:a}):n&&r?L("groupsAndUsers",{userCount:n,groupCount:r}):a&&r?L("classroomsAndGroups",{classroomCount:a,groupCount:r}):n?L("users",{userCount:n}):a?L("classrooms",{classroomCount:a}):r?L("groups",{groupCount:r}):void 0}function U(e){var t,n,r,i,l,c=(null===(t=e.item)||void 0===t?void 0:t.typeId)===A.E.User&&e.item,o=(null===(n=e.item)||void 0===n?void 0:n.typeId)===A.E.Classroom&&e.item,s=(null===(r=e.item)||void 0===r?void 0:r.typeId)===A.E.ClassroomGroup&&e.item,u="d-flex justify-content-center align-items-center text-white rounded-circle h-100 w-100";return a.createElement("div",{className:"".concat(H.avatarContainer," position-relative d-inline-block")},a.createElement("div",{className:"".concat(H.avatarWrapper," position-absolute w-100 h-100 bg-white rounded-circle"),style:{left:"".concat(-15*e.index,"%"),zIndex:e.maxAvatars-e.index}},!!c&&a.createElement(g.u,{title:"".concat(c.name," ").concat(c.surname),spanHack:!0,spanHackClassName:"h-100 w-100"},a.createElement(x.q,{imageUrl:null===(i=c.avatar)||void 0===i?void 0:i.url,imageCdnUrl:e.imageCdnUrl,initials:O.l.getInitials(c.name,c.surname)})),!!o&&a.createElement(g.u,{title:o.name,spanHack:!0,spanHackClassName:"h-100 w-100"},a.createElement("div",{className:u},a.createElement(j.f,{svgName:b.vn.Classrooms,svgSize:h.S.Large,variant:"teal"}))),!!s&&a.createElement(g.u,{title:s.name,spanHack:!0,spanHackClassName:"h-100 w-100"},a.createElement("div",{className:u},a.createElement(j.f,{svgName:b.vn.Group,variant:(0,M.I)(null===(l=s.metadata)||void 0===l?void 0:l.colour)})))))}function D(){return a.createElement("div",{className:H.avatarContainer},a.createElement(g.u,{title:L("anonymous"),spanHack:!0,spanHackClassName:"bg-light text-dark d-flex justify-content-center align-items-center rounded-circle h-100 w-100"},a.createElement(h.x,{svgName:b.vn.Anonymous})))}function _(){return a.createElement("div",{className:H.avatarContainer},a.createElement(g.u,{title:L("sharedLink"),spanHack:!0,spanHackClassName:"bg-light text-dark d-flex justify-content-center align-items-center rounded-circle h-100 w-100"},a.createElement(h.x,{svgName:b.vn.Link})))}function B(e){return a.createElement("div",null,a.createElement(T.e,Object.assign({},e,{items:e.recipients,avatarItem:U,avatarContainerClassname:H.avatarContainer,getHiddenTooltip:F})))}B.defaultProps={maxAvatars:5};var R=n(31754),P=n(83657),V=n(36848),W=n(83345),Y=n(31908);function Z(e){return Z="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},Z(e)}var $="share.sharedByMeTable",z=i.T.encloseNamespace($);function G(e){var t;if(e.type===E.y.ShareLink||!(null===(t=null==e?void 0:e.recipients)||void 0===t?void 0:t.length))return e.dateCreated;var n=e.recipients.map((function(e){return e.dateShared}));return n.sort((function(e,t){return f.O.isSame(e,t)?0:f.O.isAfter(e,t)?1:-2})),n.length?c.m.last(n):""}function J(e,t,n,r,i,l,c,o){var s=o&&(o.xs||o.sm),u=[{Header:l?"":t,accessor:"sharedObject",id:"image",Cell:function(e){var t=e.value;return a.createElement("div",{className:"w-100"},a.createElement(I.k,{object:t,appLink:n(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?Y.M.isVideoType(r)&&!(null===(t=Y.M.getCanBeConsumed(r))||void 0===t?void 0:t.canNavigate)?a.createElement("span",{className:"clamp-2"},r.name):a.createElement(V.F,{appLink:n(r),className:"clamp-2"},r.name):a.createElement("span",null,a.createElement(W.x,{namespace:$,phrase:"videoUnavailable"}))},width:60},{Header:0===e?z("sharedTo"):"",accessor:"shareRecipients",Cell:function(e){var t=e.value;return t?t.length?a.createElement(B,{recipients:t,imageCdnUrl:i,maxAvatars:s?1:2}):a.createElement(D,null):a.createElement(_,null)},width:40},!s&&{Header:0===e?z("shared"):"",id:"dateShared",accessor:function(e){return(0,p.WU)(e.dateShared)},width:40},{accessor:"sharedObject",id:"actions",Cell:function(e){var t=e.value;return a.createElement(P.e,{actions:r(t),className:"w-100 justify-content-end pe-2"})},width:20}],m={Header:t,accessor:"share",id:"status",Cell:function(e){var t=e.value;return a.createElement(w,{share:t})},width:5},d={Header:z("views"),accessor:"viewCount",width:30};return l&&u.splice(0,0,m),c&&u.splice(u.length-1,0,d),u.filter(Boolean)}var X=a.memo((function(e){var t,n,r,i,l,c=(t=e.sentShares,n=e.sharedObjects,r=e.shareRecipients,i=!!e.groupByDateShared,l=!!e.refreshTable,a.useMemo((function(){var e,a,l,c,o=[];return t.forEach((function(e){var t,a,i=n.find((function(t){return t.id===e.objectId})),l=null;e.type===E.y.DirectShare&&(l=[],null===(t=e.recipients)||void 0===t||t.forEach((function(e){var t=r.find((function(t){return t.id===e.id}));t&&l.push(t)}))),i&&o.push({share:e,sharedObject:i,shareRecipients:l,dateShared:G(e),viewCount:null!==(a=e.viewCount)&&void 0!==a?a:0})})),i?R.x.groupByDateShared(o):(e={},a=z("title"),l=o,c=function(e,t){if("object"!=Z(e)||!e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var a=n.call(e,"string");if("object"!=Z(a))return a;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(a),(a="symbol"==Z(c)?c:c+"")in e?Object.defineProperty(e,a,{value:l,enumerable:!0,configurable:!0,writable:!0}):e[a]=l,e)}),[l]));return a.createElement(a.Fragment,null,Object.keys(c).map((function(t,n){return a.createElement(d.i,{key:n,columns:J(n,t,e.getObjectAppLink,e.getObjectActions,e.imageCdnUrl,e.showStatus,e.showViewCount,e.breakpoints),data:c[t],theme:m.J})})))})),q=n(30439),Q=n(71020),K=n(39151),ee=n(31949),te=n(39902),ne=n(79967),ae=n(60115),re=n(79612),ie=n(99742),le=n(14070),ce=n(97291),oe=n(2523);const se={imageColumn:"uIOaA",nameColumn:"Nta2B",sharedToColumn:"XTJBC",dateSharedColumn:"HdARK",actionsColumn:"DXyZw",heading:"XZ6o7",image:"MolfU",name:"MM43m",avatar:"EboYM",date:"by_XM",actions:"_S2M_"};function ue(){return a.createElement("div",{className:"d-flex striped-row rounded"},a.createElement("div",{className:"d-flex align-items-center justify-content-center p-2 ".concat(se.imageColumn)},a.createElement("div",{className:"partial-loading-background rounded w-100 ".concat(se.image)})),a.createElement("div",{className:"d-flex align-items-center p-2 ".concat(se.nameColumn)},a.createElement("div",{className:"partial-loading-background w-75 ".concat(se.name)})),a.createElement("div",{className:"d-flex align-items-center p-2 ".concat(se.sharedToColumn)},a.createElement("div",{className:"partial-loading-background ".concat(se.avatar)})),a.createElement("div",{className:"d-none d-md-flex align-items-center p-2 ".concat(se.dateSharedColumn)},a.createElement("div",{className:"partial-loading-background ".concat(se.date)})),a.createElement("div",{className:"d-flex align-items-center justify-content-end p-2 ".concat(se.actionsColumn)},a.createElement("div",{className:"partial-loading-background rounded me-2 ".concat(se.actions)})))}function me(e){return a.createElement("div",{className:"d-flex mb-1"},a.createElement("div",{className:"".concat(se.imageColumn," p-2")},a.createElement("div",{className:"partial-loading-background ".concat(se.heading)})),a.createElement("div",{className:"".concat(se.nameColumn," p-2")}," "),a.createElement("div",{className:"".concat(se.sharedToColumn," p-2")},e.fullHeader?a.createElement("div",{className:"partial-loading-background ".concat(se.heading)}):a.createElement(a.Fragment,null," ")),a.createElement("div",{className:"".concat(se.dateSharedColumn," p-2 d-none d-md-flex")},e.fullHeader?a.createElement("div",{className:"partial-loading-background ".concat(se.heading)}):a.createElement(a.Fragment,null," ")),a.createElement("div",{className:"".concat(se.actionsColumn," p-2")}," "))}function de(){return a.createElement(a.Fragment,null,a.createElement("div",{className:"mb-3"},a.createElement(me,{fullHeader:!0}),a.createElement("div",{className:"striped-list no-full-width"},a.createElement(ue,null),a.createElement(ue,null),a.createElement(ue,null))),a.createElement("div",{className:"mb-3"},a.createElement(me,null),a.createElement("div",{className:"striped-list no-full-width"},a.createElement(ue,null),a.createElement(ue,null),a.createElement(ue,null),a.createElement(ue,null))),a.createElement("div",{className:"mb-3"},a.createElement(me,null),a.createElement("div",{className:"striped-list no-full-width"},a.createElement(ue,null),a.createElement(ue,null),a.createElement(ue,null),a.createElement(ue,null),a.createElement(ue,null),a.createElement(ue,null),a.createElement(ue,null),a.createElement(ue,null),a.createElement(ue,null),a.createElement(ue,null))))}var pe=n(28400),fe=n(70227),ve=n(82431);function he(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var a,r,i,l,c=[],o=!0,s=!1;try{if(i=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;o=!1}else for(;!(o=(a=i.call(n)).done)&&(c.push(a.value),c.length!==t);o=!0);}catch(e){s=!0,r=e}finally{try{if(!o&&null!=n.return&&(l=n.return(),Object(l)!==l))return}finally{if(s)throw r}}return c}}(e,t)||function(e,t){if(e){if("string"==typeof e)return ge(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?ge(e,t):void 0}}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function ge(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,a=new Array(t);n<t;n++)a[n]=e[n];return a}var ye=i.T.encloseNamespace("liteShare.sharedByMe");function Ee(e){return e.items?Object.values(e.items):[]}function be(e){return Y.M.isInteractive(e)?{application:ce.O.INTERACTIVES,action:le.e.Interactives.VIEW_INTERACTIVE,args:[e.id,pe.m.slugify(e.name)]}:Y.M.isClip(e)?{application:ce.O.CLIPS,action:le.e.Clips.PLAY_CLIP,args:[e.id,pe.m.slugify(e.name)]}:Y.M.isVideo(e)?{application:ce.O.VIDEOS,action:le.e.Videos.PLAY_VIDEO,args:[e.id,pe.m.slugify(e.name)]}:e.typeId===A.E.Playlist?{application:ce.O.PLAYLISTS,action:le.e.Playlists.PLAYLIST,args:[e.id,pe.m.slugify(e.name)]}:e.typeId===A.E.Series?ve.j.getSeriesAppLink(e):void 0}function Ce(e,t){return{label:ye("editShareSettings"),appLink:{application:ce.O.DEFAULT,action:le.e.Default.SHARE,args:[e.id],params:{entityType:t}}}}function Se(e){return a.createElement(g.u,{title:e.label,spanHack:!0},a.createElement("a",{href:e.url,target:"_blank"},a.createElement(h.x,{svgName:b.vn.Chart})))}var ke=i.T.encloseNamespace("liteShare.sharedByMe");function Ne(){var e,t=(0,r.I0)(),n=(0,ne.k)(),i=l.a.useBasicFetch(ee.N.currentUser()),o=function(e){return q.o.sentShare({cursor:e})},s=function(e){return l.a.getFetch(t)(o(e))},m=(0,ae.K)(o,s),d=m.items,p=m.hasMore,f=m.isFetching,v=m.nextCursor,h=c.m.uniq(null!==(e=null==d?void 0:d.map((function(e){return e.objectId})))&&void 0!==e?e:[]),g=(0,te.f)(h,(function(e){return q.o.sharedObjectsById(e)})),y=function(e){return c.m.uniq(c.m.flatten(function(e){var t;return null!==(t=null==e?void 0:e.filter((function(e){return e.type===E.y.DirectShare})))&&void 0!==t?t:[]}(e).map((function(e){var t;return null!==(t=e.recipients)&&void 0!==t?t:[]}))),"id").map((function(e){return e.id}))}(d),b=(0,te.f)(y,(function(e){return q.o.getRecipientsById(e,i.data.customerId)})),C=l.a.useBasicFetch(K.L.config());(0,re.M)({title:ke("sharedByMe")});var S=function(e){var t=l.a.useBasicFetch(K.L.config()),n=e.xs||e.sm;return a.useCallback((function(e){return function(e,t,n){var r,i="viewUsage";if(Y.M.isVideo(e)&&(r="video"),Y.M.isInteractive(e)&&(r="interactive",i="viewResults"),Y.M.isClip(e)&&(r="clip"),e.typeId===A.E.Series&&(r="series"),e.typeId===A.E.Playlist&&(r="playlist"),Y.M.isVideoType(e)&&!Y.M.getCanBeConsumed(e).canConsume)return[];var l=[Ce(e,r)],c=fe.c.getObjectUrl(t,e);return c&&l.push({label:n?ye(i):function(){return a.createElement(Se,{label:ye(i),url:c})},className:"btn btn-link",button:!n,href:c,openInNewTab:!0}),l}(e,t.data,n)}),[n])}(n),k=function(e,t,n,r,i){var l=he(a.useState(t),2),c=l[0],o=l[1],s=he(a.useState(r),2),u=s[0],m=s[1];return a.useEffect((function(){t&&o(!0)}),[t]),a.useEffect((function(){r&&m(!0)}),[r]),!(e&&!e.length)&&(!e||!c||n.length&&!u||!i.data)}(d,!!g.items,y,!!b.items,C),N=f||g.isFetching||b.isFetching,w=a.useMemo((function(){return d}),[!!d,N]),I=a.useMemo((function(){return Ee(g)}),[!!g.items,N]),x=a.useMemo((function(){return Ee(b)}),[!!b.items,N]);return a.createElement("div",{className:"px-3"},a.createElement(oe.w,null),k?a.createElement(de,null):d.length?a.createElement(a.Fragment,null,a.createElement(X,{sentShares:w,sharedObjects:I,shareRecipients:x,getObjectAppLink:be,getObjectActions:S,imageCdnUrl:C.data.imageCdnUrl,groupByDateShared:!0,refreshTable:N,breakpoints:n}),(p||N)&&a.createElement(Q._,{isFetching:N,fetchNext:s,nextCursor:v})):a.createElement(u,{appLink:{application:ce.O.DASHBOARD,action:le.e.Dashboard.HOME},imageUrl:ie.W.EmptyStates.Share.SHARED_WITH_ME}))}},87432:(e,t,n)=>{n.d(t,{Z:()=>a});const a={pillTabSelector:"Hdi6o",pillItem:"hUJx1"}},82602:(e,t,n)=>{n.d(t,{WU:()=>s});var a=["second","minute","hour","day","week","month","year"],r=["秒","分钟","小时","天","周","个月","年"],i={},l=function(e,t){i[e]=t},c=[60,60,24,7,365/7/12,12];function o(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 s=function(e,t,n){var a=function(e,t){return(+(t?o(t):new Date)-+o(e))/1e3}(e,n&&n.relativeDate);return function(e,t){for(var n=e<0?1:0,a=e=Math.abs(e),r=0;e>=c[r]&&r<c.length;r++)e/=c[r];return(e=Math.floor(e))>(0==(r*=2)?9:1)&&(r+=1),t(e,r,a)[n].replace("%s",e.toString())}(a,function(e){return i[e]||i.en_US}(t))};l("en_US",(function(e,t){if(0===t)return["just now","right now"];var n=a[Math.floor(t/2)];return e>1&&(n+="s"),[e+" "+n+" ago","in "+e+" "+n]})),l("zh_CN",(function(e,t){if(0===t)return["刚刚","片刻后"];var n=r[~~(t/2)];return[e+" "+n+"前",e+" "+n+"后"]}))}}]);
|
|
2
|
-
//# sourceMappingURL=5075-
|
|
2
|
+
//# sourceMappingURL=5075-53172298fe-lite.chunk.js.map
|
package/dist/scripts/{5075-f8719465be-lite.chunk.js.map → 5075-53172298fe-lite.chunk.js.map}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scripts/5075-f8719465be-lite.chunk.js","mappings":"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","sources":["file:///app/packages/libs/shared/src/apps/share/components/shared-object-image/shared-object-image.scss","file:///app/packages/libs/shared/src/apps/share/components/shared-object-image/SharedObjectImage.tsx","file:///app/packages/libs/shared/src/apps/share/constants/TableTheme.ts","file:///app/packages/libs/shared/src/apps/share/utils/ShareHelper.ts","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/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/share-status-indicator.scss","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-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/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/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":["// extracted by mini-css-extract-plugin\nexport default {\"thumbnailFallbackSvg\":\"D4JFs\",\"posterFallbackSvg\":\"bjUWl\",\"coverFallbackSvg\":\"kdLpt\"};","import React from 'react';\n\nimport { Core } from 'libs/common/core';\n\nimport { LocationContext } from 'libs/analytics/interfaces';\n\nimport { BaseImage } from 'libs/shared/components/image/BaseImage';\nimport { ImageFallback, ImageFallbackType } from 'libs/shared/components/image/ImageFallback';\nimport { VideoThumbnail } from 'libs/shared/components/thumbnails/video/VideoThumbnail';\nimport { BG_COLOUR_CLASS_NAMES } from 'libs/shared/constants/ColourClassNames';\nimport { ImageSize, ImageType } from 'libs/shared/enums/Images';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { ThumbnailTextPosition } from 'libs/shared/enums/ThumbnailTextPosition';\nimport { BaseObject, Image } from 'libs/shared/interfaces';\nimport { getBgColorClass } from 'libs/shared/utils/getBgColorClass';\nimport { ImageHelper, ImageOptions } from 'libs/shared/utils/ImageHelper';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\nimport styles from './shared-object-image.scss';\n\nconst BASE_IMAGE_CLASS_NAME = 'rounded overflow-hidden';\n\ninterface ImageProps {\n image: Image;\n imageType: ImageType;\n imageClassName?: string;\n imageFallbackComponent: JSX.Element;\n}\n\nfunction getImageProps(object: BaseObject): ImageProps {\n const image = ImageHelper.getDisplayImageFromObject(object);\n\n if (VideoHelper.isVideoType(object))\n return {\n image,\n imageType: ImageType.Thumbnails,\n imageClassName: BASE_IMAGE_CLASS_NAME,\n imageFallbackComponent: <ImageFallback type={ImageFallbackType.Video} />\n };\n\n switch (object.typeId) {\n case MasterType.Series:\n return {\n image,\n imageType: ImageType.TallPosters,\n imageClassName: BASE_IMAGE_CLASS_NAME,\n imageFallbackComponent:\n <ImageFallback type={ImageFallbackType.Series} svgContainerClassName={styles.posterFallbackSvg} />\n };\n\n case MasterType.Playlist:\n return {\n image,\n imageType: ImageType.Covers,\n imageClassName: !image?.url\n ? `${BASE_IMAGE_CLASS_NAME} ${getBgColorClass(object.name, BG_COLOUR_CLASS_NAMES)}`\n : BASE_IMAGE_CLASS_NAME,\n imageFallbackComponent: (\n <ImageFallback\n type={ImageFallbackType.Playlist}\n svgContainerClassName={image?.url ? styles.coverFallbackSvg : 'd-none'}\n extraClasses={!image?.url && 'bg-transparent'}\n />\n )\n };\n }\n}\n\nfunction getImageRatio(object: BaseObject): ImageFallbackType {\n if (VideoHelper.isVideoType(object))\n return 16 / 9;\n\n if (object.typeId === MasterType.Playlist)\n return 1;\n\n if (object.typeId === MasterType.Series)\n return 9 / 16;\n}\n\ninterface SharedObjectImageProps {\n object: BaseObject;\n locationContext: LocationContext;\n appLink?: Core.AppLink;\n showVideoMetadata?: boolean;\n fixedHeight?: boolean;\n}\n\nexport function SharedObjectImage(props: SharedObjectImageProps): JSX.Element {\n const ref = React.useCallback((el: HTMLDivElement) => {\n if (!el || !props.fixedHeight)\n return;\n\n el.style.width = `${el.offsetHeight * getImageRatio(props.object)}px`;\n }, []);\n\n const imageOptions: ImageOptions = { size: ImageSize.Small };\n\n const {\n image,\n imageType,\n imageClassName,\n imageFallbackComponent\n } = getImageProps(props.object);\n\n const useVideoThumbnail = VideoHelper.isVideoType(props.object) && !!props.showVideoMetadata;\n\n return (\n <div className='d-flex align-items-center justify-content-center w-100 h-100'>\n <div ref={ref} className={props.fixedHeight ? 'h-100' : 'w-100'}>\n {useVideoThumbnail &&\n <VideoThumbnail\n video={props.object}\n imageOptions={imageOptions}\n textPosition={ThumbnailTextPosition.Independent}\n type='cosmetic'\n appLink={props.appLink}\n analyticsOptions={{ location: props.locationContext }}\n hideDuration\n hideMask\n size='sm'\n />\n }\n {!useVideoThumbnail &&\n <BaseImage\n data={image?.url}\n imageType={imageType}\n imageOptions={imageOptions}\n appLink={props.appLink}\n className={imageClassName}\n >\n {imageFallbackComponent}\n </BaseImage>\n }\n </div>\n </div>\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 { format } from 'timeago.js';\n\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\n\nimport { CheckMarkStatus } from 'libs/shared/components/check-mark-button/CheckMarkButton';\nimport { ShareActivityStatus } from 'libs/shared/enums/ShareActivityStatus';\n\ninterface ObjectWithDateShared {\n dateShared: string;\n}\n\ntype GroupedByDate<T extends ObjectWithDateShared> = { [date: string]: T[] };\n\nexport const ShareHelper = {\n groupByDateShared<T extends ObjectWithDateShared>(data: T[]): GroupedByDate<T> {\n const dateToObjectMapping: GroupedByDate<T> = ArrayHelper.groupBy(data, 'dateShared');\n\n const sortedDates = Object.keys(dateToObjectMapping).sort().reverse();\n\n // Create a sorted mapping between dates and the \"ObjectWithDateShared\" objects\n return sortedDates.reduce((acc: GroupedByDate<T>, date) => {\n const heading = format(date);\n\n if (!acc[heading])\n acc[heading] = [];\n\n acc[heading] = acc[heading].concat(dateToObjectMapping[date]);\n return acc;\n }, {});\n },\n\n mapActivityStatusToCheckMarkStatus(activityStatus: ShareActivityStatus): CheckMarkStatus {\n switch (activityStatus) {\n case ShareActivityStatus.Complete:\n return CheckMarkStatus.Complete;\n case ShareActivityStatus.Incomplete:\n return CheckMarkStatus.Incomplete;\n case ShareActivityStatus.None:\n return CheckMarkStatus.None;\n }\n },\n\n mapCheckMarkStatusToActivityStatus(checkMarkStatus: CheckMarkStatus): ShareActivityStatus {\n switch (checkMarkStatus) {\n case CheckMarkStatus.Complete:\n return ShareActivityStatus.Complete;\n case CheckMarkStatus.Incomplete:\n return ShareActivityStatus.Incomplete;\n case CheckMarkStatus.None:\n return ShareActivityStatus.None;\n }\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 styles from './pill-tab-selector.scss';\n\nexport interface PillTab {\n name: string;\n active: boolean;\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 className?: string;\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 ?? ''}>\n <ul className={`list-unstyled d-inline-block m-0 ${styles.pillTabSelector}`}>\n {props.tabs.map(tab => {\n return (\n <li className={`p-0 ${tab.active ? 'btn btn-dark' : 'btn btn-outline-dark'}`} key={tab.name}>\n {tab.appLink ? (\n <AppLink\n appLink={tab.appLink}\n analyticsData={tab.analyticsData}\n analyticsOptions={tab.analyticsOptions}\n className={`cursor-pointer d-flex justify-content-center text-decoration-none text-reset px-2 ${styles.pillItem}`}\n >\n {tab.name}\n\n {typeof (tab.count) === 'number' && (\n <div className='ps-2'>\n <Badge type={BadgeType.Count} data={tab.count} />\n </div>\n )}\n </AppLink>\n ) : (\n <DivButton className={`${styles.pillItem} d-flex justify-content-center p-2`} onClick={() => onSelectTab(tab)}>\n {tab.name}\n\n {typeof (tab.count) === 'number' && (\n <div className='ps-2'>\n <Badge type={BadgeType.Count} data={tab.count} />\n </div>\n )}\n </DivButton>\n )}\n </li>\n );\n })}\n </ul>\n </nav>\n );\n}\n","import React from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\n\nimport { Flight } from 'libs/common/flight';\nimport { ApplicationState, HashObject } from 'libs/common/react/interfaces';\n\nimport { BaseObject } from 'libs/shared/interfaces';\n\nexport interface UseBatchFetchResult<T extends BaseObject> {\n items: { [key: string]: T} | null;\n isFetching: boolean;\n}\n\n/**\n * Used to fetch multiple items by id with Flight. Will fetch 25 items at a time firing off multiple\n * requests if there are more than 25 items.\n * This will return items as null until we have all our items. Items will be returned as an object with\n * their ids as they key for easy mapping\n * \n * @param itemIds \n * @param getRequest \n */\nexport function useBatchFetch<T extends BaseObject>(\n itemIds: string[],\n getRequest: (ids: string[]) => Flight.Request\n): UseBatchFetchResult<T> {\n const [ idBatches, setIdBatches ] = React.useState<string[][]>([]);\n\n React.useEffect(() => {\n if (!itemIds?.length)\n return;\n\n const newBatches = [...idBatches];\n newBatches.push([]);\n\n itemIds.forEach(id => {\n if (newBatches.find(batch => batch.find(_id => _id === id)))\n return;\n\n newBatches[newBatches.length - 1].push(id);\n });\n\n setIdBatches(newBatches.filter(batch => batch.length));\n }, [itemIds ? itemIds.join(',') : null]);\n\n const dispatch = useDispatch();\n\n const state = useSelector((state: ApplicationState) => state);\n\n React.useEffect(() => {\n idBatches.forEach(idBatch => {\n const request = getRequest(idBatch);\n const response = Flight.getResponse<T[]>(state, request.key);\n\n if (response.shouldFetch)\n Flight.fetch(dispatch, request);\n });\n }, [idBatches?.length]);\n\n if (!idBatches?.length)\n return { items: null, isFetching: false };\n \n const items: { [key: string]: T} = {};\n\n /* Used locally to only return our items if we've fetched all of them */\n const responses: HashObject<Flight.Response<T[]>> = {};\n \n idBatches.forEach((idBatch, i) => {\n const request = getRequest(idBatch);\n const response = Flight.getResponse<T[]>(state, request.key);\n responses[i] = response;\n\n if (response.data)\n response.data.forEach(v => items[v.id] = v);\n });\n\n return {\n items: Object.keys(responses).some(k => !!responses[k].data) ? items : null,\n isFetching: !!Object.keys(responses).some(k => responses[k].isFetching)\n };\n}","import { 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}","// extracted by mini-css-extract-plugin\nexport default {\"indicatorContainer\":\"T6YAv\",\"indicator\":\"_MRHG\"};","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-secondary';\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 {\"avatarContainer\":\"ByxQa\"};","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 <div className={`${styles.avatarContainer} position-relative d-inline-block`}>\n <div\n className={`${styles.avatarWrapper} position-absolute w-100 h-100 bg-white rounded-circle`}\n style={{ left: `${props.index * -15}%`, zIndex: props.maxAvatars - props.index }}\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 />\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 </div>\n </div>\n );\n}\n\nexport function AnonymousSharedToAvatar(): JSX.Element {\n return (\n <div className={styles.avatarContainer}>\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} />\n </Tooltip>\n </div>\n );\n}\n\nexport function SharedLinkAvatar(): JSX.Element {\n return (\n <div className={styles.avatarContainer}>\n <Tooltip\n title={getPhrase('sharedLink')}\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.Link} />\n </Tooltip>\n </div>\n );\n}\n\ninterface SharedToAvatarListProps {\n recipients: BaseObject[];\n imageCdnUrl: string;\n maxAvatars?: number;\n}\n\nSharedToAvatarList.defaultProps = {\n maxAvatars: 5\n};\n\nexport function SharedToAvatarList(props: SharedToAvatarListProps): JSX.Element {\n return (\n <div>\n <AvatarList\n {...props}\n items={props.recipients}\n avatarItem={SharedToAvatar}\n avatarContainerClassname={styles.avatarContainer}\n getHiddenTooltip={getHiddenRecipientText}\n />\n </div>\n );\n}","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 } 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 } 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 { 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 <AppLink appLink={getObjectAppLink(value)} className='clamp-2'>\n {value.name}\n </AppLink>\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 refreshTable: 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 }, [refreshTable]);\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 refreshTable?: 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.refreshTable\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 \n </div>\n <div className={`${styles.sharedToColumn} p-2`}>\n {props.fullHeader\n ? <div className={`partial-loading-background ${styles.heading}`} />\n : <> </>\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 : <> </>\n }\n </div>\n <div className={`${styles.actionsColumn} p-2`}>\n \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 { Core } from 'libs/common/core';\nimport { Flight } from 'libs/common/flight';\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\nimport { TextHelper } from 'libs/common/react/utils/TextHelper';\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 { ShareType } from 'libs/shared/enums/ShareType';\nimport { ConfigRequests } from 'libs/shared/flight-requests/ConfigRequests';\nimport { UseBatchFetchResult } from 'libs/shared/hooks/UseBatchFetch';\nimport { Breakpoints } from 'libs/shared/hooks/useBreakpoints';\nimport { BaseObject, Config, DirectShare, Series, UnionShareObject } 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\nimport { SeriesAppLinkHelper } from 'apps/series/SeriesAppLinkHelper';\n\nconst namespace = 'liteShare.sharedByMe';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nfunction getDirectShares(sentShares: UnionShareObject[]): DirectShare[] {\n return sentShares?.filter(s => s.type === ShareType.DirectShare) as DirectShare[] ?? [];\n}\n\nexport function getRecipientIds(sentShares: UnionShareObject[]): string[] {\n return ArrayHelper.uniq(ArrayHelper.flatten(getDirectShares(sentShares).map(d => d.recipients ?? [])), 'id').map(r => r.id);\n}\n\nexport function getBatchFetchResultAsArray(result: UseBatchFetchResult<BaseObject>): BaseObject[] {\n return result.items ? Object.values(result.items) : [];\n}\n\nexport function getObjectAppLink(object: BaseObject): Core.AppLink {\n if (VideoHelper.isInteractive(object)) {\n return {\n application: AppChannels.INTERACTIVES,\n action: Actions.Interactives.VIEW_INTERACTIVE,\n args: [ object.id, TextHelper.slugify(object.name) ]\n };\n }\n\n if (VideoHelper.isClip(object)) {\n return {\n application: AppChannels.CLIPS,\n action: Actions.Clips.PLAY_CLIP,\n args: [ object.id, TextHelper.slugify(object.name) ]\n };\n }\n\n if (VideoHelper.isVideo(object)) {\n return {\n application: AppChannels.VIDEOS,\n action: Actions.Videos.PLAY_VIDEO,\n args: [ object.id, TextHelper.slugify(object.name) ]\n };\n }\n\n if (object.typeId === MasterType.Playlist) {\n return {\n application: AppChannels.PLAYLISTS,\n action: Actions.Playlists.PLAYLIST,\n args: [ object.id, TextHelper.slugify(object.name) ]\n };\n }\n\n if (object.typeId === MasterType.Series) {\n return SeriesAppLinkHelper.getSeriesAppLink(object as Series);\n }\n}\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.Chart} />\n </a>\n </Tooltip>\n );\n}\n\nfunction getSharedObjectActions(sharedObject: BaseObject, config: Config, isMobile: boolean): ActionOptions[] {\n let entityType: SharableEntityType;\n let seeUsagePhrase = 'viewUsage';\n\n if (VideoHelper.isVideo(sharedObject))\n entityType = 'video';\n\n if (VideoHelper.isInteractive(sharedObject)) {\n entityType = 'interactive';\n seeUsagePhrase = '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(seeUsagePhrase)} url={objectUrl} />\n : getPhrase(seeUsagePhrase),\n className: 'btn btn-link',\n button: !isMobile,\n href: objectUrl,\n openInNewTab: true\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 const isMobile = breakpoints.xs || breakpoints.sm;\n\n return React.useCallback((object: BaseObject) => getSharedObjectActions(object, config.data, isMobile), [isMobile]);\n}\n\n/**\n * As we are displaying data in an infinite list, we only want to show partial loading\n * on the initial fetch.\n * Whenever a new page is fetched, `sharedObjects.data` and `recipients.data` will be `undefined`,\n * as their key will change. So instead of using those values to determine whether or not to\n * show partial loading, we save the first time that they load in state and then use that.\n */\nexport function usePartialLoading(\n sentShare: UnionShareObject[],\n hasFetchedSharedObjects: boolean,\n recipientIds: string[],\n hasFetchedRecipients: boolean,\n config: Flight.Response<Config>\n): boolean {\n const [ initialSharedObjectsLoaded, setInitialSharedObjectsLoaded ] = React.useState(hasFetchedSharedObjects);\n const [ initialRecipientsLoaded, setInitialRecipientsLoaded ] = React.useState(hasFetchedRecipients);\n\n React.useEffect(() => {\n if (hasFetchedSharedObjects)\n setInitialSharedObjectsLoaded(true);\n }, [hasFetchedSharedObjects]);\n\n React.useEffect(() => {\n if (hasFetchedRecipients)\n setInitialRecipientsLoaded(true);\n }, [hasFetchedRecipients]);\n\n if (sentShare && !sentShare.length)\n return false;\n\n return !sentShare\n || !initialSharedObjectsLoaded\n || (recipientIds.length && !initialRecipientsLoaded)\n || !config.data;\n}","import React from 'react';\nimport { useDispatch } from 'react-redux';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Flight } from 'libs/common/flight';\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\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 { ShareRequests } from 'libs/shared/apps/share/flight-requests/ShareRequests';\nimport { InfiniteScrollFooter } from 'libs/shared/components/infinite-scroll-footer/InfiniteScrollFooter';\nimport { ConfigRequests } from 'libs/shared/flight-requests/ConfigRequests';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { useBatchFetch } from 'libs/shared/hooks/UseBatchFetch';\nimport { useBreakpoints } from 'libs/shared/hooks/useBreakpoints';\nimport { useInfiniteList } from 'libs/shared/hooks/UseInfiniteList';\nimport { useSetPageMetadata } from 'libs/shared/hooks/useSetPageMetadata';\nimport { Config, CurrentUser, UnionShareObject } from 'libs/shared/interfaces';\n\nimport { ImageUrls } from 'shared/constants/ImageUrls';\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\n\nimport { SharesHeader } from 'apps/share/components/shares-header/SharesHeader';\n\nimport { PartialSharedByMeTable } from './partial-loading/PartialSharedByMeTable';\nimport {\n getBatchFetchResultAsArray,\n getObjectAppLink,\n getRecipientIds,\n useGetSharedObjectActions,\n usePartialLoading\n} from './SharedByMeViewUtils';\n\nconst namespace = 'liteShare.sharedByMe';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nexport function SharedByMeView(): JSX.Element {\n const dispatch = useDispatch();\n const breakpoints = useBreakpoints();\n\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n\n const getRequest = (cursor?: string) => ShareRequests.sentShare({ cursor });\n const fetchNext = (cursor?: string) => Flight.getFetch(dispatch)(getRequest(cursor));\n\n const {\n items: sentShares,\n hasMore,\n isFetching: isFetchingSentShares,\n nextCursor\n } = useInfiniteList<UnionShareObject>(getRequest, fetchNext);\n\n const sharedObjectIds = ArrayHelper.uniq(sentShares?.map(s => s.objectId) ?? []);\n\n const sharedObjectsFetchResult = useBatchFetch(sharedObjectIds, (ids: string[]) => {\n return ShareRequests.sharedObjectsById(ids);\n });\n\n const recipientIds = 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 useSetPageMetadata({ title: getPhrase('sharedByMe') });\n\n const getSharedObjectActions = useGetSharedObjectActions(breakpoints);\n\n const showPartialLoading = usePartialLoading(\n sentShares,\n !!sharedObjectsFetchResult.items,\n recipientIds,\n !!shareRecipientsFetchResult.items,\n config\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 sentSharesMemo = React.useMemo(() => sentShares, [ !!sentShares, isFetching ]);\n const sharedObjects = React.useMemo(() =>\n getBatchFetchResultAsArray(sharedObjectsFetchResult), [ !!sharedObjectsFetchResult.items, isFetching ]);\n const shareRecipients = React.useMemo(() =>\n getBatchFetchResultAsArray(shareRecipientsFetchResult), [ !!shareRecipientsFetchResult.items, isFetching ]);\n\n return (\n <div className='px-3'>\n <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={sentSharesMemo}\n sharedObjects={sharedObjects}\n shareRecipients={shareRecipients}\n getObjectAppLink={getObjectAppLink}\n getObjectActions={getSharedObjectActions}\n imageCdnUrl={config.data.imageCdnUrl}\n groupByDateShared\n refreshTable={isFetching}\n breakpoints={breakpoints}\n />\n {(hasMore || isFetching) &&\n <InfiniteScrollFooter isFetching={isFetching} fetchNext={fetchNext} nextCursor={nextCursor} />\n }\n </>\n );\n })()}\n </div>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"pillTabSelector\":\"Hdi6o\",\"pillItem\":\"hUJx1\"};","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":["BASE_IMAGE_CLASS_NAME","SharedObjectImage","props","ref","el","object","fixedHeight","style","width","offsetHeight","VideoHelper","typeId","MasterType","imageOptions","size","image","ImageHelper","imageType","imageClassName","imageFallbackComponent","ImageFallback","type","svgContainerClassName","url","getBgColorClass","name","extraClasses","getImageProps","useVideoThumbnail","showVideoMetadata","className","VideoThumbnail","video","textPosition","ThumbnailTextPosition","appLink","analyticsOptions","location","locationContext","hideDuration","hideMask","BaseImage","data","SHARES_TABLE_THEME","table","header","headerCell","row","cell","ShareHelper","groupByDateShared","dateToObjectMapping","Object","keys","sort","reverse","reduce","acc","date","heading","concat","mapActivityStatusToCheckMarkStatus","activityStatus","mapCheckMarkStatusToActivityStatus","checkMarkStatus","PillTabSelector","tabs","map","tab","active","key","analyticsData","count","onClick","onSelect","onSelectTab","useBatchFetch","itemIds","getRequest","idBatches","setIdBatches","length","newBatches","push","forEach","id","find","batch","_id","filter","join","dispatch","state","idBatch","request","shouldFetch","items","isFetching","responses","i","response","v","some","k","AnalyticsRouteHelper","getObjectUrl","config","baseUrl","analyticsWebUrl","relativeUrl","mapColourToBsVariant","groupColour","getPhrase","SHARED_BY_ME_APP_LINK","application","action","SHARED_WITH_ME_APP_LINK","SharesHeader","currentAppLink","LanguageService","SharedByMeEmptyState","EmptyState","src","imageUrl","useInteractiveCopy","text","getStatusPhrase","share","ShareType","status","ShareLinkStatus","getBgColourClassName","ShareStatusIndicator","recipients","isPasswordProtected","Tooltip","title","spanHack","SvgContainer","svgName","S","spanHackClassName","getHiddenRecipientText","hiddenRecipients","counts","ArrayHelper","userCount","classroomCount","groupCount","SharedToAvatar","user","item","classroom","classroomGroup","left","index","zIndex","maxAvatars","surname","Avatar","avatar","imageCdnUrl","initials","UserHelper","IconCircle","svgSize","variant","metadata","colour","AnonymousSharedToAvatar","SharedLinkAvatar","SharedToAvatarList","AvatarList","avatarItem","avatarContainerClassname","getHiddenTooltip","defaultProps","getDateShared","dateCreated","datesShared","r","dateShared","date1","date2","DateHelper","getColumns","dateHeading","getObjectAppLink","getObjectActions","showStatus","showViewCount","breakpoints","isMobile","xs","sm","columns","Header","accessor","Cell","value","minWidth","maxWidth","canNavigate","AppLink","Text","namespace","phrase","s","Actions","actions","statusColumn","viewCountColumn","splice","Boolean","SharedByMeTable","sentShares","sharedObjects","shareRecipients","groupByDate","refreshTable","tableData","sharedObject","o","objectId","recipient","viewCount","Table","theme","PartialRow","PartialHeader","fullHeader","PartialSharedByMeTable","getBatchFetchResultAsArray","result","values","args","TextHelper","SeriesAppLinkHelper","getShareActionOptions","entityType","label","params","SeeUsageAction","href","target","SharedByMeView","useBreakpoints","currentUser","UserRequests","cursor","ShareRequests","fetchNext","hasMore","isFetchingSentShares","nextCursor","sharedObjectIds","sharedObjectsFetchResult","ids","recipientIds","getDirectShares","d","getRecipientIds","shareRecipientsFetchResult","customerId","ConfigRequests","useSetPageMetadata","getSharedObjectActions","seeUsagePhrase","canConsume","sharedObjectActions","objectUrl","button","openInNewTab","useGetSharedObjectActions","showPartialLoading","sentShare","hasFetchedSharedObjects","hasFetchedRecipients","initialSharedObjectsLoaded","setInitialSharedObjectsLoaded","initialRecipientsLoaded","setInitialRecipientsLoaded","usePartialLoading","sentSharesMemo","InfiniteScrollFooter","ImageUrls","EN_US","ZH_CN","Locales","register","locale","func","SEC_ARRAY","toDate","input","Date","isNaN","test","parseInt","trim","replace","format","opts","sec","relativeDate","diff","localeFunc","agoIn","totalSec","Math","abs","idx","floor","toString","unit"],"sourceRoot":""}
|
|
1
|
+
{"version":3,"file":"scripts/5075-53172298fe-lite.chunk.js","mappings":"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","sources":["file:///app/packages/libs/shared/src/apps/share/components/shared-object-image/shared-object-image.scss","file:///app/packages/libs/shared/src/apps/share/components/shared-object-image/SharedObjectImage.tsx","file:///app/packages/libs/shared/src/apps/share/constants/TableTheme.ts","file:///app/packages/libs/shared/src/apps/share/utils/ShareHelper.ts","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/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/share-status-indicator.scss","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-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/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/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":["// extracted by mini-css-extract-plugin\nexport default {\"thumbnailFallbackSvg\":\"D4JFs\",\"posterFallbackSvg\":\"bjUWl\",\"coverFallbackSvg\":\"kdLpt\"};","import React from 'react';\n\nimport { Core } from 'libs/common/core';\n\nimport { LocationContext } from 'libs/analytics/interfaces';\n\nimport { BaseImage } from 'libs/shared/components/image/BaseImage';\nimport { ImageFallback, ImageFallbackType } from 'libs/shared/components/image/ImageFallback';\nimport { VideoThumbnail } from 'libs/shared/components/thumbnails/video/VideoThumbnail';\nimport { BG_COLOUR_CLASS_NAMES } from 'libs/shared/constants/ColourClassNames';\nimport { ImageSize, ImageType } from 'libs/shared/enums/Images';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { ThumbnailTextPosition } from 'libs/shared/enums/ThumbnailTextPosition';\nimport { BaseObject, Image } from 'libs/shared/interfaces';\nimport { getBgColorClass } from 'libs/shared/utils/getBgColorClass';\nimport { ImageHelper, ImageOptions } from 'libs/shared/utils/ImageHelper';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\nimport styles from './shared-object-image.scss';\n\nconst BASE_IMAGE_CLASS_NAME = 'rounded overflow-hidden';\n\ninterface ImageProps {\n image: Image;\n imageType: ImageType;\n imageClassName?: string;\n imageFallbackComponent: JSX.Element;\n}\n\nfunction getImageProps(object: BaseObject): ImageProps {\n const image = ImageHelper.getDisplayImageFromObject(object);\n\n if (VideoHelper.isVideoType(object))\n return {\n image,\n imageType: ImageType.Thumbnails,\n imageClassName: BASE_IMAGE_CLASS_NAME,\n imageFallbackComponent: <ImageFallback type={ImageFallbackType.Video} />\n };\n\n switch (object.typeId) {\n case MasterType.Series:\n return {\n image,\n imageType: ImageType.TallPosters,\n imageClassName: BASE_IMAGE_CLASS_NAME,\n imageFallbackComponent:\n <ImageFallback type={ImageFallbackType.Series} svgContainerClassName={styles.posterFallbackSvg} />\n };\n\n case MasterType.Playlist:\n return {\n image,\n imageType: ImageType.Covers,\n imageClassName: !image?.url\n ? `${BASE_IMAGE_CLASS_NAME} ${getBgColorClass(object.name, BG_COLOUR_CLASS_NAMES)}`\n : BASE_IMAGE_CLASS_NAME,\n imageFallbackComponent: (\n <ImageFallback\n type={ImageFallbackType.Playlist}\n svgContainerClassName={image?.url ? styles.coverFallbackSvg : 'd-none'}\n extraClasses={!image?.url && 'bg-transparent'}\n />\n )\n };\n }\n}\n\nfunction getImageRatio(object: BaseObject): ImageFallbackType {\n if (VideoHelper.isVideoType(object))\n return 16 / 9;\n\n if (object.typeId === MasterType.Playlist)\n return 1;\n\n if (object.typeId === MasterType.Series)\n return 9 / 16;\n}\n\ninterface SharedObjectImageProps {\n object: BaseObject;\n locationContext: LocationContext;\n appLink?: Core.AppLink;\n showVideoMetadata?: boolean;\n fixedHeight?: boolean;\n}\n\nexport function SharedObjectImage(props: SharedObjectImageProps): JSX.Element {\n const ref = React.useCallback((el: HTMLDivElement) => {\n if (!el || !props.fixedHeight)\n return;\n\n el.style.width = `${el.offsetHeight * getImageRatio(props.object)}px`;\n }, []);\n\n const imageOptions: ImageOptions = { size: ImageSize.Small };\n\n const {\n image,\n imageType,\n imageClassName,\n imageFallbackComponent\n } = getImageProps(props.object);\n\n const useVideoThumbnail = VideoHelper.isVideoType(props.object) && !!props.showVideoMetadata;\n\n return (\n <div className='d-flex align-items-center justify-content-center w-100 h-100'>\n <div ref={ref} className={props.fixedHeight ? 'h-100' : 'w-100'}>\n {useVideoThumbnail &&\n <VideoThumbnail\n video={props.object}\n imageOptions={imageOptions}\n textPosition={ThumbnailTextPosition.Independent}\n type='cosmetic'\n appLink={props.appLink}\n analyticsOptions={{ location: props.locationContext }}\n hideDuration\n hideMask\n size='sm'\n />\n }\n {!useVideoThumbnail &&\n <BaseImage\n data={image?.url}\n imageType={imageType}\n imageOptions={imageOptions}\n appLink={props.appLink}\n className={imageClassName}\n >\n {imageFallbackComponent}\n </BaseImage>\n }\n </div>\n </div>\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 { format } from 'timeago.js';\n\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\n\nimport { CheckMarkStatus } from 'libs/shared/components/check-mark-button/CheckMarkButton';\nimport { ShareActivityStatus } from 'libs/shared/enums/ShareActivityStatus';\n\ninterface ObjectWithDateShared {\n dateShared: string;\n}\n\ntype GroupedByDate<T extends ObjectWithDateShared> = { [date: string]: T[] };\n\nexport const ShareHelper = {\n groupByDateShared<T extends ObjectWithDateShared>(data: T[]): GroupedByDate<T> {\n const dateToObjectMapping: GroupedByDate<T> = ArrayHelper.groupBy(data, 'dateShared');\n\n const sortedDates = Object.keys(dateToObjectMapping).sort().reverse();\n\n // Create a sorted mapping between dates and the \"ObjectWithDateShared\" objects\n return sortedDates.reduce((acc: GroupedByDate<T>, date) => {\n const heading = format(date);\n\n if (!acc[heading])\n acc[heading] = [];\n\n acc[heading] = acc[heading].concat(dateToObjectMapping[date]);\n return acc;\n }, {});\n },\n\n mapActivityStatusToCheckMarkStatus(activityStatus: ShareActivityStatus): CheckMarkStatus {\n switch (activityStatus) {\n case ShareActivityStatus.Complete:\n return CheckMarkStatus.Complete;\n case ShareActivityStatus.Incomplete:\n return CheckMarkStatus.Incomplete;\n case ShareActivityStatus.None:\n return CheckMarkStatus.None;\n }\n },\n\n mapCheckMarkStatusToActivityStatus(checkMarkStatus: CheckMarkStatus): ShareActivityStatus {\n switch (checkMarkStatus) {\n case CheckMarkStatus.Complete:\n return ShareActivityStatus.Complete;\n case CheckMarkStatus.Incomplete:\n return ShareActivityStatus.Incomplete;\n case CheckMarkStatus.None:\n return ShareActivityStatus.None;\n }\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 styles from './pill-tab-selector.scss';\n\nexport interface PillTab {\n name: string;\n active: boolean;\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 className?: string;\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 ?? ''}>\n <ul className={`list-unstyled d-inline-block m-0 ${styles.pillTabSelector}`}>\n {props.tabs.map(tab => {\n return (\n <li className={`p-0 ${tab.active ? 'btn btn-dark' : 'btn btn-outline-dark'}`} key={tab.name}>\n {tab.appLink ? (\n <AppLink\n appLink={tab.appLink}\n analyticsData={tab.analyticsData}\n analyticsOptions={tab.analyticsOptions}\n className={`cursor-pointer d-flex justify-content-center text-decoration-none text-reset px-2 ${styles.pillItem}`}\n >\n {tab.name}\n\n {typeof (tab.count) === 'number' && (\n <div className='ps-2'>\n <Badge type={BadgeType.Count} data={tab.count} />\n </div>\n )}\n </AppLink>\n ) : (\n <DivButton className={`${styles.pillItem} d-flex justify-content-center p-2`} onClick={() => onSelectTab(tab)}>\n {tab.name}\n\n {typeof (tab.count) === 'number' && (\n <div className='ps-2'>\n <Badge type={BadgeType.Count} data={tab.count} />\n </div>\n )}\n </DivButton>\n )}\n </li>\n );\n })}\n </ul>\n </nav>\n );\n}\n","import React from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\n\nimport { Flight } from 'libs/common/flight';\nimport { ApplicationState, HashObject } from 'libs/common/react/interfaces';\n\nimport { BaseObject } from 'libs/shared/interfaces';\n\nexport interface UseBatchFetchResult<T extends BaseObject> {\n items: { [key: string]: T} | null;\n isFetching: boolean;\n}\n\n/**\n * Used to fetch multiple items by id with Flight. Will fetch 25 items at a time firing off multiple\n * requests if there are more than 25 items.\n * This will return items as null until we have all our items. Items will be returned as an object with\n * their ids as they key for easy mapping\n * \n * @param itemIds \n * @param getRequest \n */\nexport function useBatchFetch<T extends BaseObject>(\n itemIds: string[],\n getRequest: (ids: string[]) => Flight.Request\n): UseBatchFetchResult<T> {\n const [ idBatches, setIdBatches ] = React.useState<string[][]>([]);\n\n React.useEffect(() => {\n if (!itemIds?.length)\n return;\n\n const newBatches = [...idBatches];\n newBatches.push([]);\n\n itemIds.forEach(id => {\n if (newBatches.find(batch => batch.find(_id => _id === id)))\n return;\n\n newBatches[newBatches.length - 1].push(id);\n });\n\n setIdBatches(newBatches.filter(batch => batch.length));\n }, [itemIds ? itemIds.join(',') : null]);\n\n const dispatch = useDispatch();\n\n const state = useSelector((state: ApplicationState) => state);\n\n React.useEffect(() => {\n idBatches.forEach(idBatch => {\n const request = getRequest(idBatch);\n const response = Flight.getResponse<T[]>(state, request.key);\n\n if (response.shouldFetch)\n Flight.fetch(dispatch, request);\n });\n }, [idBatches?.length]);\n\n if (!idBatches?.length)\n return { items: null, isFetching: false };\n \n const items: { [key: string]: T} = {};\n\n /* Used locally to only return our items if we've fetched all of them */\n const responses: HashObject<Flight.Response<T[]>> = {};\n \n idBatches.forEach((idBatch, i) => {\n const request = getRequest(idBatch);\n const response = Flight.getResponse<T[]>(state, request.key);\n responses[i] = response;\n\n if (response.data)\n response.data.forEach(v => items[v.id] = v);\n });\n\n return {\n items: Object.keys(responses).some(k => !!responses[k].data) ? items : null,\n isFetching: !!Object.keys(responses).some(k => responses[k].isFetching)\n };\n}","import { 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}","// extracted by mini-css-extract-plugin\nexport default {\"indicatorContainer\":\"T6YAv\",\"indicator\":\"_MRHG\"};","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-secondary';\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 {\"avatarContainer\":\"ByxQa\"};","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 <div className={`${styles.avatarContainer} position-relative d-inline-block`}>\n <div\n className={`${styles.avatarWrapper} position-absolute w-100 h-100 bg-white rounded-circle`}\n style={{ left: `${props.index * -15}%`, zIndex: props.maxAvatars - props.index }}\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 />\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 </div>\n </div>\n );\n}\n\nexport function AnonymousSharedToAvatar(): JSX.Element {\n return (\n <div className={styles.avatarContainer}>\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} />\n </Tooltip>\n </div>\n );\n}\n\nexport function SharedLinkAvatar(): JSX.Element {\n return (\n <div className={styles.avatarContainer}>\n <Tooltip\n title={getPhrase('sharedLink')}\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.Link} />\n </Tooltip>\n </div>\n );\n}\n\ninterface SharedToAvatarListProps {\n recipients: BaseObject[];\n imageCdnUrl: string;\n maxAvatars?: number;\n}\n\nSharedToAvatarList.defaultProps = {\n maxAvatars: 5\n};\n\nexport function SharedToAvatarList(props: SharedToAvatarListProps): JSX.Element {\n return (\n <div>\n <AvatarList\n {...props}\n items={props.recipients}\n avatarItem={SharedToAvatar}\n avatarContainerClassname={styles.avatarContainer}\n getHiddenTooltip={getHiddenRecipientText}\n />\n </div>\n );\n}","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 } 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 } 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 { 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 <AppLink appLink={getObjectAppLink(value)} className='clamp-2'>\n {value.name}\n </AppLink>\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 refreshTable: 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 }, [refreshTable]);\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 refreshTable?: 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.refreshTable\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 \n </div>\n <div className={`${styles.sharedToColumn} p-2`}>\n {props.fullHeader\n ? <div className={`partial-loading-background ${styles.heading}`} />\n : <> </>\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 : <> </>\n }\n </div>\n <div className={`${styles.actionsColumn} p-2`}>\n \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 { Core } from 'libs/common/core';\nimport { Flight } from 'libs/common/flight';\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\nimport { TextHelper } from 'libs/common/react/utils/TextHelper';\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 { ShareType } from 'libs/shared/enums/ShareType';\nimport { ConfigRequests } from 'libs/shared/flight-requests/ConfigRequests';\nimport { UseBatchFetchResult } from 'libs/shared/hooks/UseBatchFetch';\nimport { Breakpoints } from 'libs/shared/hooks/useBreakpoints';\nimport { BaseObject, Config, DirectShare, Series, UnionShareObject } 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\nimport { SeriesAppLinkHelper } from 'apps/series/SeriesAppLinkHelper';\n\nconst namespace = 'liteShare.sharedByMe';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nfunction getDirectShares(sentShares: UnionShareObject[]): DirectShare[] {\n return sentShares?.filter(s => s.type === ShareType.DirectShare) as DirectShare[] ?? [];\n}\n\nexport function getRecipientIds(sentShares: UnionShareObject[]): string[] {\n return ArrayHelper.uniq(ArrayHelper.flatten(getDirectShares(sentShares).map(d => d.recipients ?? [])), 'id').map(r => r.id);\n}\n\nexport function getBatchFetchResultAsArray(result: UseBatchFetchResult<BaseObject>): BaseObject[] {\n return result.items ? Object.values(result.items) : [];\n}\n\nexport function getObjectAppLink(object: BaseObject): Core.AppLink {\n if (VideoHelper.isInteractive(object)) {\n return {\n application: AppChannels.INTERACTIVES,\n action: Actions.Interactives.VIEW_INTERACTIVE,\n args: [ object.id, TextHelper.slugify(object.name) ]\n };\n }\n\n if (VideoHelper.isClip(object)) {\n return {\n application: AppChannels.CLIPS,\n action: Actions.Clips.PLAY_CLIP,\n args: [ object.id, TextHelper.slugify(object.name) ]\n };\n }\n\n if (VideoHelper.isVideo(object)) {\n return {\n application: AppChannels.VIDEOS,\n action: Actions.Videos.PLAY_VIDEO,\n args: [ object.id, TextHelper.slugify(object.name) ]\n };\n }\n\n if (object.typeId === MasterType.Playlist) {\n return {\n application: AppChannels.PLAYLISTS,\n action: Actions.Playlists.PLAYLIST,\n args: [ object.id, TextHelper.slugify(object.name) ]\n };\n }\n\n if (object.typeId === MasterType.Series) {\n return SeriesAppLinkHelper.getSeriesAppLink(object as Series);\n }\n}\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.Chart} />\n </a>\n </Tooltip>\n );\n}\n\nfunction getSharedObjectActions(sharedObject: BaseObject, config: Config, isMobile: boolean): ActionOptions[] {\n let entityType: SharableEntityType;\n let seeUsagePhrase = 'viewUsage';\n\n if (VideoHelper.isVideo(sharedObject))\n entityType = 'video';\n\n if (VideoHelper.isInteractive(sharedObject)) {\n entityType = 'interactive';\n seeUsagePhrase = '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(seeUsagePhrase)} url={objectUrl} />\n : getPhrase(seeUsagePhrase),\n className: 'btn btn-link',\n button: !isMobile,\n href: objectUrl,\n openInNewTab: true\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 const isMobile = breakpoints.xs || breakpoints.sm;\n\n return React.useCallback((object: BaseObject) => getSharedObjectActions(object, config.data, isMobile), [isMobile]);\n}\n\n/**\n * As we are displaying data in an infinite list, we only want to show partial loading\n * on the initial fetch.\n * Whenever a new page is fetched, `sharedObjects.data` and `recipients.data` will be `undefined`,\n * as their key will change. So instead of using those values to determine whether or not to\n * show partial loading, we save the first time that they load in state and then use that.\n */\nexport function usePartialLoading(\n sentShare: UnionShareObject[],\n hasFetchedSharedObjects: boolean,\n recipientIds: string[],\n hasFetchedRecipients: boolean,\n config: Flight.Response<Config>\n): boolean {\n const [ initialSharedObjectsLoaded, setInitialSharedObjectsLoaded ] = React.useState(hasFetchedSharedObjects);\n const [ initialRecipientsLoaded, setInitialRecipientsLoaded ] = React.useState(hasFetchedRecipients);\n\n React.useEffect(() => {\n if (hasFetchedSharedObjects)\n setInitialSharedObjectsLoaded(true);\n }, [hasFetchedSharedObjects]);\n\n React.useEffect(() => {\n if (hasFetchedRecipients)\n setInitialRecipientsLoaded(true);\n }, [hasFetchedRecipients]);\n\n if (sentShare && !sentShare.length)\n return false;\n\n return !sentShare\n || !initialSharedObjectsLoaded\n || (recipientIds.length && !initialRecipientsLoaded)\n || !config.data;\n}","import React from 'react';\nimport { useDispatch } from 'react-redux';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Flight } from 'libs/common/flight';\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\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 { ShareRequests } from 'libs/shared/apps/share/flight-requests/ShareRequests';\nimport { InfiniteScrollFooter } from 'libs/shared/components/infinite-scroll-footer/InfiniteScrollFooter';\nimport { ConfigRequests } from 'libs/shared/flight-requests/ConfigRequests';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { useBatchFetch } from 'libs/shared/hooks/UseBatchFetch';\nimport { useBreakpoints } from 'libs/shared/hooks/useBreakpoints';\nimport { useInfiniteList } from 'libs/shared/hooks/UseInfiniteList';\nimport { useSetPageMetadata } from 'libs/shared/hooks/useSetPageMetadata';\nimport { Config, CurrentUser, UnionShareObject } from 'libs/shared/interfaces';\n\nimport { ImageUrls } from 'shared/constants/ImageUrls';\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\n\nimport { SharesHeader } from 'apps/share/components/shares-header/SharesHeader';\n\nimport { PartialSharedByMeTable } from './partial-loading/PartialSharedByMeTable';\nimport {\n getBatchFetchResultAsArray,\n getObjectAppLink,\n getRecipientIds,\n useGetSharedObjectActions,\n usePartialLoading\n} from './SharedByMeViewUtils';\n\nconst namespace = 'liteShare.sharedByMe';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nexport function SharedByMeView(): JSX.Element {\n const dispatch = useDispatch();\n const breakpoints = useBreakpoints();\n\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n\n const getRequest = (cursor?: string) => ShareRequests.sentShare({ cursor });\n const fetchNext = (cursor?: string) => Flight.getFetch(dispatch)(getRequest(cursor));\n\n const {\n items: sentShares,\n hasMore,\n isFetching: isFetchingSentShares,\n nextCursor\n } = useInfiniteList<UnionShareObject>(getRequest, fetchNext);\n\n const sharedObjectIds = ArrayHelper.uniq(sentShares?.map(s => s.objectId) ?? []);\n\n const sharedObjectsFetchResult = useBatchFetch(sharedObjectIds, (ids: string[]) => {\n return ShareRequests.sharedObjectsById(ids);\n });\n\n const recipientIds = 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 useSetPageMetadata({ title: getPhrase('sharedByMe') });\n\n const getSharedObjectActions = useGetSharedObjectActions(breakpoints);\n\n const showPartialLoading = usePartialLoading(\n sentShares,\n !!sharedObjectsFetchResult.items,\n recipientIds,\n !!shareRecipientsFetchResult.items,\n config\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 sentSharesMemo = React.useMemo(() => sentShares, [ !!sentShares, isFetching ]);\n const sharedObjects = React.useMemo(() =>\n getBatchFetchResultAsArray(sharedObjectsFetchResult), [ !!sharedObjectsFetchResult.items, isFetching ]);\n const shareRecipients = React.useMemo(() =>\n getBatchFetchResultAsArray(shareRecipientsFetchResult), [ !!shareRecipientsFetchResult.items, isFetching ]);\n\n return (\n <div className='px-3'>\n <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={sentSharesMemo}\n sharedObjects={sharedObjects}\n shareRecipients={shareRecipients}\n getObjectAppLink={getObjectAppLink}\n getObjectActions={getSharedObjectActions}\n imageCdnUrl={config.data.imageCdnUrl}\n groupByDateShared\n refreshTable={isFetching}\n breakpoints={breakpoints}\n />\n {(hasMore || isFetching) &&\n <InfiniteScrollFooter isFetching={isFetching} fetchNext={fetchNext} nextCursor={nextCursor} />\n }\n </>\n );\n })()}\n </div>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"pillTabSelector\":\"Hdi6o\",\"pillItem\":\"hUJx1\"};","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":["BASE_IMAGE_CLASS_NAME","SharedObjectImage","props","ref","el","object","fixedHeight","style","width","offsetHeight","VideoHelper","typeId","MasterType","imageOptions","size","image","ImageHelper","imageType","imageClassName","imageFallbackComponent","ImageFallback","type","svgContainerClassName","url","getBgColorClass","name","extraClasses","getImageProps","useVideoThumbnail","showVideoMetadata","className","VideoThumbnail","video","textPosition","ThumbnailTextPosition","appLink","analyticsOptions","location","locationContext","hideDuration","hideMask","BaseImage","data","SHARES_TABLE_THEME","table","header","headerCell","row","cell","ShareHelper","groupByDateShared","dateToObjectMapping","Object","keys","sort","reverse","reduce","acc","date","heading","concat","mapActivityStatusToCheckMarkStatus","activityStatus","mapCheckMarkStatusToActivityStatus","checkMarkStatus","PillTabSelector","tabs","map","tab","active","key","analyticsData","count","onClick","onSelect","onSelectTab","useBatchFetch","itemIds","getRequest","idBatches","setIdBatches","length","newBatches","push","forEach","id","find","batch","_id","filter","join","dispatch","state","idBatch","request","shouldFetch","items","isFetching","responses","i","response","v","some","k","AnalyticsRouteHelper","getObjectUrl","config","baseUrl","analyticsWebUrl","relativeUrl","mapColourToBsVariant","groupColour","getPhrase","SHARED_BY_ME_APP_LINK","application","action","SHARED_WITH_ME_APP_LINK","SharesHeader","currentAppLink","LanguageService","SharedByMeEmptyState","EmptyState","src","imageUrl","useInteractiveCopy","text","getStatusPhrase","share","ShareType","status","ShareLinkStatus","getBgColourClassName","ShareStatusIndicator","recipients","isPasswordProtected","Tooltip","title","spanHack","SvgContainer","svgName","S","spanHackClassName","getHiddenRecipientText","hiddenRecipients","counts","ArrayHelper","userCount","classroomCount","groupCount","SharedToAvatar","user","item","classroom","classroomGroup","left","index","zIndex","maxAvatars","surname","Avatar","avatar","imageCdnUrl","initials","UserHelper","IconCircle","svgSize","variant","metadata","colour","AnonymousSharedToAvatar","SharedLinkAvatar","SharedToAvatarList","AvatarList","avatarItem","avatarContainerClassname","getHiddenTooltip","defaultProps","getDateShared","dateCreated","datesShared","r","dateShared","date1","date2","DateHelper","getColumns","dateHeading","getObjectAppLink","getObjectActions","showStatus","showViewCount","breakpoints","isMobile","xs","sm","columns","Header","accessor","Cell","value","minWidth","maxWidth","canNavigate","AppLink","Text","namespace","phrase","s","Actions","actions","statusColumn","viewCountColumn","splice","Boolean","SharedByMeTable","sentShares","sharedObjects","shareRecipients","groupByDate","refreshTable","tableData","sharedObject","o","objectId","recipient","viewCount","Table","theme","PartialRow","PartialHeader","fullHeader","PartialSharedByMeTable","getBatchFetchResultAsArray","result","values","args","TextHelper","SeriesAppLinkHelper","getShareActionOptions","entityType","label","params","SeeUsageAction","href","target","SharedByMeView","useBreakpoints","currentUser","UserRequests","cursor","ShareRequests","fetchNext","hasMore","isFetchingSentShares","nextCursor","sharedObjectIds","sharedObjectsFetchResult","ids","recipientIds","getDirectShares","d","getRecipientIds","shareRecipientsFetchResult","customerId","ConfigRequests","useSetPageMetadata","getSharedObjectActions","seeUsagePhrase","canConsume","sharedObjectActions","objectUrl","button","openInNewTab","useGetSharedObjectActions","showPartialLoading","sentShare","hasFetchedSharedObjects","hasFetchedRecipients","initialSharedObjectsLoaded","setInitialSharedObjectsLoaded","initialRecipientsLoaded","setInitialRecipientsLoaded","usePartialLoading","sentSharesMemo","InfiniteScrollFooter","ImageUrls","EN_US","ZH_CN","Locales","register","locale","func","SEC_ARRAY","toDate","input","Date","isNaN","test","parseInt","trim","replace","format","opts","sec","relativeDate","diff","localeFunc","agoIn","totalSec","Math","abs","idx","floor","toString","unit"],"sourceRoot":""}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
"use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[5157],{97535:(e,t,n)=>{n.r(t),n.d(t,{SignUpView:()=>C});var r=n(32735),a=n(81886),l=n(20354),i=n(65858),c=n(92173),o=n(83529),u=n(84789),s=n(39151),m=n(31949),f=n(83421),g=n(14070),d=n(97291);const h={left:"CJBwn",imageContainer:"r6On_",imagePosition:"ebaoC",image:"XQMl0"};function p(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function b(e){var t,n,a=(t=r.useState(!1),n=2,function(e){if(Array.isArray(e))return e}(t)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,a,l,i,c=[],o=!0,u=!1;try{if(l=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;o=!1}else for(;!(o=(r=l.call(n)).done)&&(c.push(r.value),c.length!==t);o=!0);}catch(e){u=!0,a=e}finally{try{if(!o&&null!=n.return&&(i=n.return(),Object(i)!==i))return}finally{if(u)throw a}}return c}}(t,n)||function(e,t){if(e){if("string"==typeof e)return p(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?p(e,t):void 0}}(t,n)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),l=a[0],i=a[1];return r.useEffect((function(){if(e.imageUrl){var t=new Image;return t.onload=function(){return i(!0)},t.src=e.imageUrl,function(){return t.onload=null}}}),[]),r.createElement("div",{className:h.left},l&&r.createElement(r.Fragment,null,r.createElement("div",{className:h.imageContainer},r.createElement("div",{className:h.imagePosition},r.createElement("img",{className:h.image,src:e.imageUrl,alt:e.title})))))}var v=n(48456),y=n(17762),E=n(63643);function C(e){var t,n=l.a.useBasicFetch(m.N.currentUser()),h=l.a.useBasicFetch(s.L.config()),p=l.a.useBasicFetch(s.L.version()),C=(0,y.M)(),U=(0,E.c)();return r.useEffect((function(){n.hasCompleted&&n.data.isAuthenticated&&a.Q.C$.trigger({action:g.e.Dashboard.HOME,application:d.O.DASHBOARD})}),[n]),n.hasCompleted&&!(null===(t=n.data)||void 0===t?void 0:t.isAuthenticated)&&h.hasCompleted&&C&&U&&p.hasCompleted?r.createElement(f.Z,{leftComponent:function(){return r.createElement(b,{title:"Sign Up",imageUrl:"/images/sign-up/fullscreen-dashboard.png"})}},r.createElement(c.h,{type:o.c.FullPage,initialValues:{email:e.email},location:i.LZ.SignUpPage,googleMapsApiKey:h.data.googleMapsApiKey,geoLocation:C,imageUrls:v.v,ajaxUrls:U,brazeConfig:h.data.braze,version:p.data,productName:u.X.Lite,pageAppLinkString:e.pageAppLinkString})):r.createElement(r.Fragment,null)}},83421:(e,t,n)=>{n.d(t,{Z:()=>g});var r=n(32735),a=n(54610),l=n(4594),i=n(67453),c=n(99742);const o={left:"vIypY",leftTextImage:"YViNj",right:"MkD4u",blur:"X6mCh",imageContainer:"bc7kz",imagePosition:"JOhEj",image:"Ef2QR",thumbnail:"Gdurb",tallposter:"fjVNK",cover:"o3j31",linksContainer:"AT9Dk"};function u(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,a,l,i,c=[],o=!0,u=!1;try{if(l=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;o=!1}else for(;!(o=(r=l.call(n)).done)&&(c.push(r.value),c.length!==t);o=!0);}catch(e){u=!0,a=e}finally{try{if(!o&&null!=n.return&&(i=n.return(),Object(i)!==i))return}finally{if(u)throw a}}return c}}(e,t)||function(e,t){if(e){if("string"==typeof e)return s(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?s(e,t):void 0}}(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 s(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}var m=[{bgUrl:c.W.LaunchPad.BG_1},{bgUrl:c.W.LaunchPad.BG_2},{bgUrl:c.W.LaunchPad.BG_3},{bgUrl:c.W.LaunchPad.BG_4},{bgUrl:c.W.LaunchPad.BG_5}];function f(e){switch(e){case l.E.Video:case l.E.Interactive:case l.E.Clip:return o.thumbnail;case l.E.Subject:case l.E.Playlist:return o.cover;case l.E.Series:return o.tallposter;default:return""}}function g(e){var t,n=u(r.useState(!1),2),l=n[0],c=n[1],s=u(r.useState(""),2),g=s[0],d=s[1],h=u(r.useState(""),2),p=h[0],b=h[1],v=i.j.createUrl(e.imageUrl,{size:a.h2.Large}),y=m;return r.useEffect((function(){if(!v&&y&&0!==y.length){var e,t=(e=y)[Math.floor(Math.random()*e.length)];t.bgUrl&&d(t.bgUrl),t.textUrl&&b(t.textUrl)}}),[]),r.useEffect((function(){if(v){var e=new Image;return e.onload=function(){return c(!0)},e.src=v,function(){return e.onload=null}}}),[]),r.createElement("div",{className:"d-flex"},e.leftComponent?e.leftComponent():r.createElement("div",{className:"".concat(o.left," bg-light"),style:{backgroundImage:"url('".concat(g,"')")}},p&&r.createElement("div",{className:o.leftTextImage,style:{backgroundImage:"url('".concat(p,"')")}}),l&&r.createElement(r.Fragment,null,r.createElement("div",{className:o.blur,style:{backgroundImage:"url('".concat(v,"')")}}),r.createElement("div",{className:"".concat(o.imageContainer," ").concat(f(e.objectType))},r.createElement("div",{className:o.imagePosition},r.createElement("img",{className:o.image,src:v,alt:e.title}))))),r.createElement("div",{className:"".concat(o.right," bg-white d-flex flex-column")},r.createElement("div",{className:"position-absolute d-flex align-items-center ".concat(o.linksContainer)},null===(t=e.links)||void 0===t?void 0:t.map((function(e,t){return e.hide?r.createElement(r.Fragment,{key:t}):r.createElement("a",{key:t,href:e.url,className:"info-link fw-semibold",onClick:e.onClick},e.text)}))),e.children))}}}]);
|
|
2
|
-
//# sourceMappingURL=5157-
|
|
2
|
+
//# sourceMappingURL=5157-47a0f5c088-lite.chunk.js.map
|
package/dist/scripts/{5157-cd12e2e443-lite.chunk.js.map → 5157-47a0f5c088-lite.chunk.js.map}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scripts/5157-cd12e2e443-lite.chunk.js","mappings":"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","sources":["file:///app/packages/projects/lite/src/apps/launchpad/views/sign-up/sign-up.scss","file:///app/packages/projects/lite/src/apps/launchpad/views/sign-up/SignUpLeftSide.tsx","file:///app/packages/projects/lite/src/apps/launchpad/views/sign-up/SignUpView.tsx","file:///app/packages/projects/lite/src/shared/components/launchpad/launchpad.scss","file:///app/packages/projects/lite/src/shared/components/launchpad/Launchpad.tsx"],"sourcesContent":["// extracted by mini-css-extract-plugin\nexport default {\"left\":\"CJBwn\",\"imageContainer\":\"r6On_\",\"imagePosition\":\"ebaoC\",\"image\":\"XQMl0\"};","import React from 'react';\n\nimport styles from 'apps/launchpad/views/sign-up/sign-up.scss';\n\ninterface SignUpLeftSideProps {\n title: string;\n imageUrl: string;\n}\n\nexport function SignUpLeftSide(props: SignUpLeftSideProps): JSX.Element {\n const [ showImage, setShowImage ] = React.useState(false);\n\n React.useEffect(() => {\n if (!props.imageUrl)\n return;\n\n const img = new Image();\n img.onload = () => setShowImage(true);\n img.src = props.imageUrl;\n return () => img.onload = null;\n }, []);\n \n return (\n <div className={styles.left}>\n {showImage &&\n <>\n <div className={styles.imageContainer}>\n <div className={styles.imagePosition}>\n <img className={styles.image} src={props.imageUrl} alt={props.title} />\n </div>\n </div>\n </>\n }\n </div>\n );\n}","import React from 'react';\n\nimport { Core } from 'libs/common/core';\nimport { Flight } from 'libs/common/flight';\n\nimport { LocationContext } from 'libs/analytics/interfaces';\n\nimport { MultiStepForm } from 'libs/shared/apps/sign-up/components/multi-step-form/MultiStepForm';\nimport { MultiStepFormTypes } from 'libs/shared/apps/sign-up/enums/MultiStepFormTypes';\nimport { SignUpProduct } from 'libs/shared/apps/sign-up/enums/SignUpProduct';\nimport { ConfigRequests } from 'libs/shared/flight-requests/ConfigRequests';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { Config, CurrentUser } from 'libs/shared/interfaces';\n\nimport { Launchpad } from 'shared/components/launchpad/Launchpad';\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\n\nimport { SignUpLeftSide } from 'apps/launchpad/views/sign-up/SignUpLeftSide';\nimport { SignUpImages } from 'apps/sign-up/helpers/SignUpImages';\nimport { useGeoLocation } from 'apps/sign-up/hooks/useGeoLocation';\nimport { useGetSignUpAjaxUrls } from 'apps/sign-up/hooks/useGetSignUpAjaxUrls';\n\nexport interface SignUpViewProps {\n email?: string;\n pageAppLinkString?: string;\n}\n\nexport function SignUpView(props: SignUpViewProps): JSX.Element {\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n const config = Flight.useBasicFetch<Config>(ConfigRequests.config());\n const version = Flight.useBasicFetch<string>(ConfigRequests.version());\n \n const geoLocation = useGeoLocation();\n const ajaxUrls = useGetSignUpAjaxUrls();\n\n React.useEffect(() => {\n if (!currentUser.hasCompleted)\n return;\n\n if (currentUser.data.isAuthenticated) {\n Core.AppLinkHelper.trigger({\n action: Actions.Dashboard.HOME,\n application: AppChannels.DASHBOARD\n });\n return;\n }\n }, [currentUser]);\n\n const hasLoaded = (\n currentUser.hasCompleted &&\n !currentUser.data?.isAuthenticated &&\n config.hasCompleted &&\n geoLocation &&\n ajaxUrls &&\n version.hasCompleted\n );\n\n if (!hasLoaded)\n return <></>;\n \n return (\n <Launchpad\n leftComponent={() => (\n <SignUpLeftSide\n title='Sign Up'\n imageUrl='/images/sign-up/fullscreen-dashboard.png'\n />\n )}\n >\n <MultiStepForm\n type={MultiStepFormTypes.FullPage}\n initialValues={{ email: props.email }}\n location={LocationContext.SignUpPage}\n googleMapsApiKey={config.data.googleMapsApiKey}\n geoLocation={geoLocation}\n imageUrls={SignUpImages}\n ajaxUrls={ajaxUrls}\n brazeConfig={config.data.braze}\n version={version.data}\n productName={SignUpProduct.Lite}\n pageAppLinkString={props.pageAppLinkString}\n />\n </Launchpad>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"left\":\"vIypY\",\"leftTextImage\":\"YViNj\",\"right\":\"MkD4u\",\"blur\":\"X6mCh\",\"imageContainer\":\"bc7kz\",\"imagePosition\":\"JOhEj\",\"image\":\"Ef2QR\",\"thumbnail\":\"Gdurb\",\"tallposter\":\"fjVNK\",\"cover\":\"o3j31\",\"linksContainer\":\"AT9Dk\"};","import React from 'react';\n\nimport { ImageSize } from 'libs/shared/enums/Images';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { ImageHelper } from 'libs/shared/utils/ImageHelper';\n\nimport { ImageUrls } from 'shared/constants/ImageUrls';\n\nimport styles from './launchpad.scss';\n\nconst FALLBACK_IMAGES = [\n {\n bgUrl: ImageUrls.LaunchPad.BG_1\n },\n {\n bgUrl: ImageUrls.LaunchPad.BG_2\n },\n {\n bgUrl: ImageUrls.LaunchPad.BG_3\n },\n {\n bgUrl: ImageUrls.LaunchPad.BG_4\n },\n {\n bgUrl: ImageUrls.LaunchPad.BG_5\n }\n];\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nconst XMAS_URLS: LaunchImage[] = [\n {\n bgUrl: '/images/launchpad/xmas/2024-promo1-bg.png'\n },\n {\n bgUrl: '/images/launchpad/xmas/2024-promo2-bg.png'\n },\n {\n bgUrl: '/images/launchpad/xmas/2024-promo3-bg.png'\n },\n {\n bgUrl: '/images/launchpad/xmas/2024-promo4-bg.png'\n },\n {\n bgUrl: '/images/launchpad/xmas/2024-promo5-bg.png'\n }\n];\n\nfunction mapObjectTypeToImageClass(objectType: MasterType): string {\n switch (objectType) {\n case MasterType.Video:\n case MasterType.Interactive:\n case MasterType.Clip:\n return styles.thumbnail;\n\n case MasterType.Subject:\n case MasterType.Playlist:\n return styles.cover;\n\n case MasterType.Series:\n return styles.tallposter;\n\n default:\n return '';\n }\n}\n\ninterface LaunchpadLink {\n url: string;\n text: string;\n onClick?: () => void;\n hide?: boolean;\n}\n\ninterface LaunchpadProps {\n objectType?: MasterType;\n title?: string;\n imageUrl?: string;\n links?: LaunchpadLink[];\n leftComponent?: () => JSX.Element;\n}\n\ninterface LaunchImage {\n bgUrl: string;\n textUrl?: string;\n}\n\nfunction getRandomImage(urlLists: LaunchImage[]): LaunchImage {\n return urlLists[Math.floor(Math.random() * urlLists.length)];\n}\n\nexport function Launchpad(props: React.PropsWithChildren<LaunchpadProps>): JSX.Element {\n const [ showImage, setShowImage ] = React.useState(false);\n const [ image, setImage ] = React.useState<string>('');\n const [ textImage, setTextImage ] = React.useState<string>('');\n\n const imageUrl = ImageHelper.createUrl(props.imageUrl, { size: ImageSize.Large });\n const IMAGE_URLS = FALLBACK_IMAGES;\n\n React.useEffect(() => {\n if (imageUrl || !IMAGE_URLS || IMAGE_URLS.length === 0)\n return;\n\n const image = getRandomImage(IMAGE_URLS);\n\n if (image.bgUrl) {\n setImage(image.bgUrl);\n }\n\n if (image.textUrl) {\n setTextImage(image.textUrl);\n }\n }, []);\n\n React.useEffect(() => {\n if (!imageUrl)\n return;\n\n const img = new Image();\n img.onload = () => setShowImage(true);\n img.src = imageUrl;\n return () => img.onload = null;\n }, []);\n\n return (\n <div className='d-flex'>\n { props.leftComponent ?\n props.leftComponent()\n :\n <div className={`${styles.left} bg-light`} style={{ backgroundImage: `url('${image}')` }}>\n { textImage && (\n <div className={styles.leftTextImage} style={{ backgroundImage: `url('${textImage}')` }} />\n )}\n \n {showImage &&\n <>\n <div className={styles.blur} style={{ backgroundImage: `url('${imageUrl}')` }} />\n <div className={`${styles.imageContainer} ${mapObjectTypeToImageClass(props.objectType)}`}>\n <div className={styles.imagePosition}>\n <img className={styles.image} src={imageUrl} alt={props.title} />\n </div>\n </div>\n </>\n }\n </div>\n }\n <div className={`${styles.right} bg-white d-flex flex-column`}>\n <div className={`position-absolute d-flex align-items-center ${styles.linksContainer}`}>\n {props.links?.map((link, key) => {\n if (link.hide)\n return <React.Fragment key={key}></React.Fragment>;\n\n return (\n <a key={key} href={link.url} className='info-link fw-semibold' onClick={link.onClick}>\n {link.text}\n </a>\n );\n })}\n </div>\n\n {props.children}\n </div>\n </div>\n );\n}"],"names":["SignUpLeftSide","props","showImage","setShowImage","imageUrl","img","Image","onload","src","className","alt","title","SignUpView","currentUser","UserRequests","config","ConfigRequests","version","geoLocation","useGeoLocation","ajaxUrls","useGetSignUpAjaxUrls","hasCompleted","data","isAuthenticated","action","application","Launchpad","leftComponent","MultiStepForm","type","MultiStepFormTypes","initialValues","email","location","googleMapsApiKey","imageUrls","SignUpImages","brazeConfig","braze","productName","SignUpProduct","pageAppLinkString","FALLBACK_IMAGES","bgUrl","ImageUrls","mapObjectTypeToImageClass","objectType","MasterType","image","setImage","textImage","setTextImage","ImageHelper","size","IMAGE_URLS","length","urlLists","Math","floor","random","textUrl","style","backgroundImage","links","map","link","key","hide","href","url","onClick","text","children"],"sourceRoot":""}
|
|
1
|
+
{"version":3,"file":"scripts/5157-47a0f5c088-lite.chunk.js","mappings":"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","sources":["file:///app/packages/projects/lite/src/apps/launchpad/views/sign-up/sign-up.scss","file:///app/packages/projects/lite/src/apps/launchpad/views/sign-up/SignUpLeftSide.tsx","file:///app/packages/projects/lite/src/apps/launchpad/views/sign-up/SignUpView.tsx","file:///app/packages/projects/lite/src/shared/components/launchpad/launchpad.scss","file:///app/packages/projects/lite/src/shared/components/launchpad/Launchpad.tsx"],"sourcesContent":["// extracted by mini-css-extract-plugin\nexport default {\"left\":\"CJBwn\",\"imageContainer\":\"r6On_\",\"imagePosition\":\"ebaoC\",\"image\":\"XQMl0\"};","import React from 'react';\n\nimport styles from 'apps/launchpad/views/sign-up/sign-up.scss';\n\ninterface SignUpLeftSideProps {\n title: string;\n imageUrl: string;\n}\n\nexport function SignUpLeftSide(props: SignUpLeftSideProps): JSX.Element {\n const [ showImage, setShowImage ] = React.useState(false);\n\n React.useEffect(() => {\n if (!props.imageUrl)\n return;\n\n const img = new Image();\n img.onload = () => setShowImage(true);\n img.src = props.imageUrl;\n return () => img.onload = null;\n }, []);\n \n return (\n <div className={styles.left}>\n {showImage &&\n <>\n <div className={styles.imageContainer}>\n <div className={styles.imagePosition}>\n <img className={styles.image} src={props.imageUrl} alt={props.title} />\n </div>\n </div>\n </>\n }\n </div>\n );\n}","import React from 'react';\n\nimport { Core } from 'libs/common/core';\nimport { Flight } from 'libs/common/flight';\n\nimport { LocationContext } from 'libs/analytics/interfaces';\n\nimport { MultiStepForm } from 'libs/shared/apps/sign-up/components/multi-step-form/MultiStepForm';\nimport { MultiStepFormTypes } from 'libs/shared/apps/sign-up/enums/MultiStepFormTypes';\nimport { SignUpProduct } from 'libs/shared/apps/sign-up/enums/SignUpProduct';\nimport { ConfigRequests } from 'libs/shared/flight-requests/ConfigRequests';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { Config, CurrentUser } from 'libs/shared/interfaces';\n\nimport { Launchpad } from 'shared/components/launchpad/Launchpad';\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\n\nimport { SignUpLeftSide } from 'apps/launchpad/views/sign-up/SignUpLeftSide';\nimport { SignUpImages } from 'apps/sign-up/helpers/SignUpImages';\nimport { useGeoLocation } from 'apps/sign-up/hooks/useGeoLocation';\nimport { useGetSignUpAjaxUrls } from 'apps/sign-up/hooks/useGetSignUpAjaxUrls';\n\nexport interface SignUpViewProps {\n email?: string;\n pageAppLinkString?: string;\n}\n\nexport function SignUpView(props: SignUpViewProps): JSX.Element {\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n const config = Flight.useBasicFetch<Config>(ConfigRequests.config());\n const version = Flight.useBasicFetch<string>(ConfigRequests.version());\n \n const geoLocation = useGeoLocation();\n const ajaxUrls = useGetSignUpAjaxUrls();\n\n React.useEffect(() => {\n if (!currentUser.hasCompleted)\n return;\n\n if (currentUser.data.isAuthenticated) {\n Core.AppLinkHelper.trigger({\n action: Actions.Dashboard.HOME,\n application: AppChannels.DASHBOARD\n });\n return;\n }\n }, [currentUser]);\n\n const hasLoaded = (\n currentUser.hasCompleted &&\n !currentUser.data?.isAuthenticated &&\n config.hasCompleted &&\n geoLocation &&\n ajaxUrls &&\n version.hasCompleted\n );\n\n if (!hasLoaded)\n return <></>;\n \n return (\n <Launchpad\n leftComponent={() => (\n <SignUpLeftSide\n title='Sign Up'\n imageUrl='/images/sign-up/fullscreen-dashboard.png'\n />\n )}\n >\n <MultiStepForm\n type={MultiStepFormTypes.FullPage}\n initialValues={{ email: props.email }}\n location={LocationContext.SignUpPage}\n googleMapsApiKey={config.data.googleMapsApiKey}\n geoLocation={geoLocation}\n imageUrls={SignUpImages}\n ajaxUrls={ajaxUrls}\n brazeConfig={config.data.braze}\n version={version.data}\n productName={SignUpProduct.Lite}\n pageAppLinkString={props.pageAppLinkString}\n />\n </Launchpad>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"left\":\"vIypY\",\"leftTextImage\":\"YViNj\",\"right\":\"MkD4u\",\"blur\":\"X6mCh\",\"imageContainer\":\"bc7kz\",\"imagePosition\":\"JOhEj\",\"image\":\"Ef2QR\",\"thumbnail\":\"Gdurb\",\"tallposter\":\"fjVNK\",\"cover\":\"o3j31\",\"linksContainer\":\"AT9Dk\"};","import React from 'react';\n\nimport { ImageSize } from 'libs/shared/enums/Images';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { ImageHelper } from 'libs/shared/utils/ImageHelper';\n\nimport { ImageUrls } from 'shared/constants/ImageUrls';\n\nimport styles from './launchpad.scss';\n\nconst FALLBACK_IMAGES = [\n {\n bgUrl: ImageUrls.LaunchPad.BG_1\n },\n {\n bgUrl: ImageUrls.LaunchPad.BG_2\n },\n {\n bgUrl: ImageUrls.LaunchPad.BG_3\n },\n {\n bgUrl: ImageUrls.LaunchPad.BG_4\n },\n {\n bgUrl: ImageUrls.LaunchPad.BG_5\n }\n];\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nconst XMAS_URLS: LaunchImage[] = [\n {\n bgUrl: '/images/launchpad/xmas/2024-promo1-bg.png'\n },\n {\n bgUrl: '/images/launchpad/xmas/2024-promo2-bg.png'\n },\n {\n bgUrl: '/images/launchpad/xmas/2024-promo3-bg.png'\n },\n {\n bgUrl: '/images/launchpad/xmas/2024-promo4-bg.png'\n },\n {\n bgUrl: '/images/launchpad/xmas/2024-promo5-bg.png'\n }\n];\n\nfunction mapObjectTypeToImageClass(objectType: MasterType): string {\n switch (objectType) {\n case MasterType.Video:\n case MasterType.Interactive:\n case MasterType.Clip:\n return styles.thumbnail;\n\n case MasterType.Subject:\n case MasterType.Playlist:\n return styles.cover;\n\n case MasterType.Series:\n return styles.tallposter;\n\n default:\n return '';\n }\n}\n\ninterface LaunchpadLink {\n url: string;\n text: string;\n onClick?: () => void;\n hide?: boolean;\n}\n\ninterface LaunchpadProps {\n objectType?: MasterType;\n title?: string;\n imageUrl?: string;\n links?: LaunchpadLink[];\n leftComponent?: () => JSX.Element;\n}\n\ninterface LaunchImage {\n bgUrl: string;\n textUrl?: string;\n}\n\nfunction getRandomImage(urlLists: LaunchImage[]): LaunchImage {\n return urlLists[Math.floor(Math.random() * urlLists.length)];\n}\n\nexport function Launchpad(props: React.PropsWithChildren<LaunchpadProps>): JSX.Element {\n const [ showImage, setShowImage ] = React.useState(false);\n const [ image, setImage ] = React.useState<string>('');\n const [ textImage, setTextImage ] = React.useState<string>('');\n\n const imageUrl = ImageHelper.createUrl(props.imageUrl, { size: ImageSize.Large });\n const IMAGE_URLS = FALLBACK_IMAGES;\n\n React.useEffect(() => {\n if (imageUrl || !IMAGE_URLS || IMAGE_URLS.length === 0)\n return;\n\n const image = getRandomImage(IMAGE_URLS);\n\n if (image.bgUrl) {\n setImage(image.bgUrl);\n }\n\n if (image.textUrl) {\n setTextImage(image.textUrl);\n }\n }, []);\n\n React.useEffect(() => {\n if (!imageUrl)\n return;\n\n const img = new Image();\n img.onload = () => setShowImage(true);\n img.src = imageUrl;\n return () => img.onload = null;\n }, []);\n\n return (\n <div className='d-flex'>\n { props.leftComponent ?\n props.leftComponent()\n :\n <div className={`${styles.left} bg-light`} style={{ backgroundImage: `url('${image}')` }}>\n { textImage && (\n <div className={styles.leftTextImage} style={{ backgroundImage: `url('${textImage}')` }} />\n )}\n \n {showImage &&\n <>\n <div className={styles.blur} style={{ backgroundImage: `url('${imageUrl}')` }} />\n <div className={`${styles.imageContainer} ${mapObjectTypeToImageClass(props.objectType)}`}>\n <div className={styles.imagePosition}>\n <img className={styles.image} src={imageUrl} alt={props.title} />\n </div>\n </div>\n </>\n }\n </div>\n }\n <div className={`${styles.right} bg-white d-flex flex-column`}>\n <div className={`position-absolute d-flex align-items-center ${styles.linksContainer}`}>\n {props.links?.map((link, key) => {\n if (link.hide)\n return <React.Fragment key={key}></React.Fragment>;\n\n return (\n <a key={key} href={link.url} className='info-link fw-semibold' onClick={link.onClick}>\n {link.text}\n </a>\n );\n })}\n </div>\n\n {props.children}\n </div>\n </div>\n );\n}"],"names":["SignUpLeftSide","props","showImage","setShowImage","imageUrl","img","Image","onload","src","className","alt","title","SignUpView","currentUser","UserRequests","config","ConfigRequests","version","geoLocation","useGeoLocation","ajaxUrls","useGetSignUpAjaxUrls","hasCompleted","data","isAuthenticated","action","application","Launchpad","leftComponent","MultiStepForm","type","MultiStepFormTypes","initialValues","email","location","googleMapsApiKey","imageUrls","SignUpImages","brazeConfig","braze","productName","SignUpProduct","pageAppLinkString","FALLBACK_IMAGES","bgUrl","ImageUrls","mapObjectTypeToImageClass","objectType","MasterType","image","setImage","textImage","setTextImage","ImageHelper","size","IMAGE_URLS","length","urlLists","Math","floor","random","textUrl","style","backgroundImage","links","map","link","key","hide","href","url","onClick","text","children"],"sourceRoot":""}
|