@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([[2355],{40955:(e,t,a)=>{a.d(t,{P:()=>i});var n=a(32735);function i(e){return e.audience?n.createElement("div",{className:"audience-label border rounded-pill d-inline-block px-2 text-nowrap \n ".concat("border-"+e.border," ").concat(e.className?e.className:"")},e.audience.name):n.createElement(n.Fragment,null)}},17464:(e,t,a)=>{a.d(t,{c:()=>r});var n=a(32735),i=a(7121);function r(e){var t="d-flex align-items-center badge-list ".concat(i.Z.minHeight);return e.className&&(t+=" ".concat(e.className)),n.createElement("div",{className:t},e.children)}},89682:(e,t,a)=>{a.d(t,{I:()=>d,h:()=>u});var n=a(32735),i=a(91967),r=a(83914),c=a(35223),o=a(11607);const l={unchecked:"bup9I",outline:"ealw_",checked:"A1Ov0",checkMark:"c14lI"};function s(e,t){(null==t||t>e.length)&&(t=e.length);for(var a=0,n=new Array(t);a<t;a++)n[a]=e[a];return n}var u;function d(e){var t,a,d=(t=n.useState(e.status===u.Complete),a=2,function(e){if(Array.isArray(e))return e}(t)||function(e,t){var a=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=a){var n,i,r,c,o=[],l=!0,s=!1;try{if(r=(a=a.call(e)).next,0===t){if(Object(a)!==a)return;l=!1}else for(;!(l=(n=r.call(a)).done)&&(o.push(n.value),o.length!==t);l=!0);}catch(e){s=!0,i=e}finally{try{if(!l&&null!=a.return&&(c=a.return(),Object(c)!==c))return}finally{if(s)throw i}}return o}}(t,a)||function(e,t){if(e){if("string"==typeof e)return s(e,t);var a=Object.prototype.toString.call(e).slice(8,-1);return"Object"===a&&e.constructor&&(a=e.constructor.name),"Map"===a||"Set"===a?Array.from(e):"Arguments"===a||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(a)?s(e,t):void 0}}(t,a)||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.")}()),m=d[0],v=d[1];n.useEffect((function(){v(e.status===u.Complete)}),[e.status]);var p="cursor-pointer rounded-circle ".concat(m?l.checked:l.unchecked);return e.className&&(p+=" ".concat(e.className)),"outline"===e.style&&(p+=" ".concat(l.outline)),e.status&&e.status!==u.None&&i.q.isFunction(e.setStatus)?n.createElement(o.L,{className:p,onClick:function(){var t=!m;v(t);var a=t?u.Complete:u.Incomplete;e.setStatus(a).catch((function(){v(!t)}))},disabled:e.disabled},n.createElement(r.x,{svgName:c.vn.Check,className:"svg-container ".concat(l.checkMark)})):n.createElement(n.Fragment,null)}!function(e){e.None="None",e.Complete="Complete",e.Incomplete="Incomplete"}(u||(u={})),d.defaultProps={style:"filled"}},24900:(e,t,a)=>{a.d(t,{z:()=>l,O:()=>o});var n=a(32735),i=a(83914),r=a(35223);const c={mask:"qpc7L",small:"L8Oxs",video:"b8kJW",playlist:"eo2p2",maskContainer:"lpwag"};var o;function l(e){var t=e.type,a=e.size,l=function(e){return e===o.Video?c.video:e===o.Playlist?c.playlist:""}(t),s=function(e){return e===o.Video?r.vn.PlayCircle:""}(t);return n.createElement("div",{className:"".concat(c.maskContainer," ").concat("sm"===a?c.small:"")},n.createElement("div",{className:c.mask}),n.createElement(i.x,{svgName:s,className:l}))}!function(e){e[e.Video=0]="Video",e[e.Playlist=1]="Playlist",e[e.Series=2]="Series"}(o||(o={})),l.defaults={size:"md"}},22843:(e,t,a)=>{a.d(t,{h:()=>u});var n=a(32735),i=a(65858),r=a(36848),c=a(38647),o=a(11882),l=a(31908);const s={container:"r70GR",titleContainer:"rULXI",seriesTitleBox:"h9k1p",badgeContainer:"QaDDX",audienceBadge:"hvsne"};function u(e){var t=e.video,a=e.appLink,u=e.subTextAppLink,d=l.M.getCanBeConsumed(t).canNavigate;return n.createElement("div",{className:"mt-2 ".concat(s.container)},n.createElement("div",{className:"d-flex flex-column ".concat(s.titleContainer)},l.M.isVideo(t)&&n.createElement(o.$,{type:e.subTextType,className:"text-truncate ".concat(s.seriesTitleBox),video:t,appLink:u,analyticsOptions:{location:i.LZ.VideoThumbnail}}),n.createElement(r.F,{className:"h6 text-reset clamp-2 align-middle",appLink:d?a:null},t.name,n.createElement(c.m,{video:e.video,yearGroups:e.yearGroups,size:"sm"}))))}},72355:(e,t,a)=>{a.d(t,{u:()=>ue});var n=a(32735),i=a(1048),r=a(65858),c=a(18559),o=a(17464),l=a(23481),s=a(91967),u=a(11607),d=a(83914),m=a(69883),v=a(1643),p=a(35223),g=a(31908);const y={favourited:"t0svX",favouriteButton:"CFRo3",heart:"ZMMQu",heartOutline:"truFo"};function f(e,t){(null==t||t>e.length)&&(t=e.length);for(var a=0,n=new Array(t);a<t;a++)n[a]=e[a];return n}var E=l.T.encloseNamespace("shared.favouriteButton");function h(e){var t,a,i=(0,m.Z)(),r=v.h.isFavouritedByCurrentUser(e.video),c=(t=n.useState(r),a=2,function(e){if(Array.isArray(e))return e}(t)||function(e,t){var a=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=a){var n,i,r,c,o=[],l=!0,s=!1;try{if(r=(a=a.call(e)).next,0===t){if(Object(a)!==a)return;l=!1}else for(;!(l=(n=r.call(a)).done)&&(o.push(n.value),o.length!==t);l=!0);}catch(e){s=!0,i=e}finally{try{if(!l&&null!=a.return&&(c=a.return(),Object(c)!==c))return}finally{if(s)throw i}}return o}}(t,a)||function(e,t){if(e){if("string"==typeof e)return f(e,t);var a=Object.prototype.toString.call(e).slice(8,-1);return"Object"===a&&e.constructor&&(a=e.constructor.name),"Map"===a||"Set"===a?Array.from(e):"Arguments"===a||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(a)?f(e,t):void 0}}(t,a)||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.")}()),o=c[0],l=c[1];n.useEffect((function(){l(r)}),[r]);var h="".concat("d-flex align-items-center justify-content-center"," cursor-pointer ").concat(y.favouriteButton," ").concat(o?y.favourited:"");return e.className&&(h+=" ".concat(e.className)),s.q.isFunction(e.setFavourite)&&s.q.isFunction(e.canFavourite)&&e.canFavourite(e.video)?n.createElement(u.L,{className:h,onClick:function(){var t=!o;l(t),e.setFavourite(e.video,t,null,(function(){i.error(E(g.M.isClip(e.video)?t?"favouriteClipError":"unfavouriteClipError":g.M.isInteractive(e.video)?t?"favouriteInteractiveError":"unfavouriteInteractiveError":t?"favouriteVideoError":"unfavouriteVideoError")),l(!t)}),e.analyticsData,e.analyticsOptions)}},n.createElement(d.x,{svgName:p.vn.Heart,className:"svg-container ".concat(y.heart)}),n.createElement(d.x,{svgName:p.vn.HeartOutline,className:"svg-container ".concat(y.heartOutline)})):n.createElement(n.Fragment,null)}var b=a(75163),O=a(5465);function k(e){var t=g.M.getVideoProgress(e.video),a=t&&e.video.duration&&t/e.video.duration*1e5;return a?n.createElement("div",{className:"bg-primary h-100",style:{width:"".concat(a,"%")}}):n.createElement(n.Fragment,null)}const N={bottomBar:"YnXtZ"};function C(e){return g.M.isVideo(e.video)?n.createElement("div",{className:N.bottomBar},n.createElement(k,{video:e.video})):n.createElement(n.Fragment,null)}const x={padlock:"w4cg8",sm:"JpIYd"};function w(e){var t="sm"===e.size?d.S.Small:d.S.Standard;return n.createElement("div",{className:"".concat(x.padlock," ").concat("sm"===e.size?x.sm:""," bg-white cursor-default d-flex align-items-center justify-content-center")},n.createElement(d.x,{svgName:p.vn.Lock,size:t}))}var j=a(76177);const F={topLeftContainer:"ia0ry",logo:"OA9ft",sm:"fyo2J"};function I(e){var t,a,i,r;if(!g.M.isVideo(e.video)||!e.companyLogoFallbackUrl)return n.createElement(n.Fragment,null);var c=null===(a=null===(t=e.video.productionCompanies)||void 0===t?void 0:t.data)||void 0===a?void 0:a[0],o=null!==(r=null===(i=null==c?void 0:c.logo)||void 0===i?void 0:i.url)&&void 0!==r?r:e.companyLogoFallbackUrl;return o?n.createElement("div",{className:F.topLeftContainer},n.createElement(j.u,{title:null==c?void 0:c.name,spanHack:!0},n.createElement("div",{className:"".concat(F.logo," ").concat("sm"===e.size?F.sm:""),style:{backgroundImage:"url(".concat(o,")")}}))):n.createElement(n.Fragment,null)}I.defaultProps={size:"md"};var T=a(11882),S=a(4594),M=a(61150);function L(e){return g.M.isClip(e.video)?n.createElement(M.y,{typeId:S.E.Clip,size:e.size}):g.M.isInteractive(e.video)?n.createElement(M.y,{typeId:S.E.Interactive,status:e.video.status,size:e.size}):n.createElement(n.Fragment,null)}L.default={size:"md"};var z=a(10439),A=a(54610),D=a(49439);const P={overlayContainer:"qu3A3",topRightContainer:"XAfZW",overlay:"NTrtm",downScale:"puKcM",title:"_6FukN",gradient:"rXzR8",playIcon:"dndOA",videoProgress:"yhWf4",badgeContainer:"AtgmC",clipProgress:"E2egN",interactiveProgress:"WycwR"};function R(e,t){(null==t||t>e.length)&&(t=e.length);for(var a=0,n=new Array(t);a<t;a++)n[a]=e[a];return n}function B(e){var t="mb-1";return e&&(t+=P.downScale),t}function V(e){var t,a,l,s=e.video,u=e.appLink,m=e.imageOptions,y=e.setFavourite,f=e.canFavourite,E=e.preload,k=e.hovering,N=e.hoverToPlay,x=e.companyLogoFallbackUrl,F=g.M.getCanBeConsumed(e.video),S=F.canNavigate,M=F.canConsume,V=i.t.isObject(null==u?void 0:u.params)?null==u?void 0:u.params:{},H=Object.assign(Object.assign({},e.analyticsOptions),{entity:g.M.getAnalyticsEntity(s)}),_=v.h.showFavouriteButton(e.video,k),U=g.M.isVideo(s),Z=g.M.getRating(e.video),G=(a=(0,D.L)({delay:100}),l=2,function(e){if(Array.isArray(e))return e}(a)||function(e,t){var a=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=a){var n,i,r,c,o=[],l=!0,s=!1;try{if(r=(a=a.call(e)).next,0===t){if(Object(a)!==a)return;l=!1}else for(;!(l=(n=r.call(a)).done)&&(o.push(n.value),o.length!==t);l=!0);}catch(e){s=!0,i=e}finally{try{if(!l&&null!=a.return&&(c=a.return(),Object(c)!==c))return}finally{if(s)throw i}}return o}}(a,l)||function(e,t){if(e){if("string"==typeof e)return R(e,t);var a=Object.prototype.toString.call(e).slice(8,-1);return"Object"===a&&e.constructor&&(a=e.constructor.name),"Map"===a||"Set"===a?Array.from(e):"Arguments"===a||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(a)?R(e,t):void 0}}(a,l)||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.")}()),W=G[0],X=G[1]&&M&&N;return n.createElement(j.u,{title:g.M.getPrivacyReasoning(e.video),spanHack:!0,spanHackClassName:""},n.createElement("div",{className:"position-relative rounded-3 overflow-hidden",ref:W},_&&n.createElement("div",{className:P.topRightContainer},n.createElement(h,{setFavourite:y,canFavourite:f,video:s,analyticsData:e.analyticsData,analyticsOptions:H})),!S&&n.createElement("div",{className:P.topRightContainer},n.createElement(w,null)),n.createElement(L,{video:s}),n.createElement(I,{video:s,companyLogoFallbackUrl:x}),n.createElement(b.Z,{data:g.M.getThumbnail(s),appLink:S?u:null,imageType:A.__.Thumbnails,imageOptions:m,preload:E,className:P.gradient,alt:("series"in s&&(null===(t=s.series)||void 0===t?void 0:t.name)?"".concat(s.series.name,": "):"")+s.name,analyticsData:Object.assign(Object.assign({},e.analyticsData),{id:s.id,name:s.name}),analyticsOptions:Object.assign(Object.assign({},H),{actionType:r.Vw.Click,descriptor:r._S.Thumbnail})},!(!k||!S)&&n.createElement(d.x,{className:P.playIcon,svgName:p.vn.PlayCircle}),n.createElement(O.oy,{type:O.mS.Video}),n.createElement("div",{className:P.overlayContainer},n.createElement("div",{className:P.overlay},n.createElement("div",{className:"".concat(B(k)," ").concat(P.title)},U&&n.createElement(T.$,{type:e.subTextType,className:"text-shadow clamp-1",video:s,appLink:null,analyticsOptions:null}),n.createElement("span",{className:"h6 text-reset text-shadow clamp-1"},g.M.getTitle(s))),n.createElement(C,{video:s}),k&&n.createElement(o.c,{className:"mt-1"},g.M.isVideo(s)&&n.createElement(n.Fragment,null,n.createElement(c.C,{type:c.g.Rating,data:Z}),s.hasSubtitle&&n.createElement("span",{className:"badge p-0"},n.createElement(d.x,{svgName:p.vn.CloseCaptionBadge})),n.createElement(c.C,{type:c.g.Interactive,data:s.hasInteractives}),n.createElement(c.C,{type:c.g.DurationExact,data:g.M.getDuration(e.video)})))))),X&&n.createElement(z.r,{key:e.video.id,objectId:e.video.id,objectTypeId:e.video.typeId,mode:"hover",context:V.context,contextId:V.contextId,moviesAndTv:V.mtv})))}var H=a(64446),_=a(40955);const U={badgeContainer:"fy9Un",sm:"Rb0TL"};function Z(e){var t=g.M.getRating(e.video),a=!!e.audience&&"sm"!==e.size,i=!a&&!e.hideRating&&!!t&&"sm"!==e.size;return!e.hideDuration||a||i?n.createElement(o.c,{className:"".concat(U.badgeContainer," ").concat("sm"===e.size?U.sm:"")},a&&n.createElement(_.P,{audience:e.audience,className:"bg-white text-dark",border:"dark"}),i&&n.createElement(c.C,{type:c.g.Rating,data:t}),!e.hideDuration&&n.createElement(c.C,{type:e.newDurationStyle?c.g.DurationApproximate:c.g.DurationExact,data:e.duration||g.M.getDuration(e.video)})):n.createElement(n.Fragment,null)}Z.defaultProps={newDurationStyle:!0,size:"md"};var G=a(22843),W=a(66190),X=a(77590),Q=a(59598);const q={preview:"whbhf",details:"vMaXP",isHovering:"tR1jA",videoGuidanceTags:"KJrT1",dropdown:"oZXV7",show:"EiQ04",topRightContainer:"FAuzc"};var K=function(e){var t,a=e.video,c=e.appLink,o=e.imageOptions,l=e.preload,s=e.setFavourite,u=e.canFavourite,d=e.isHovering,m=e.hoverToPlay,p=e.companyLogoFallbackUrl,y=i.t.isObject(null==c?void 0:c.params)?null==c?void 0:c.params:{},f=g.M.getCanBeConsumed(a),E=f.canNavigate,k=f.canConsume;function N(e){return Object.assign(Object.assign({},c),{params:Object.assign(Object.assign({},y),{scrollTo:e})})}n.useEffect((function(){return function(){var t;null===(t=e.cleanPortalNode)||void 0===t||t.call(e)}}),[]);var x="position-relative bg-white";e.extraClasses&&(x+=" ".concat(e.extraClasses)),d&&(x+=" rounded-3 shadow-lg");var F=Object.assign(Object.assign({},e.analyticsOptions),{entity:g.M.getAnalyticsEntity(a)}),T=e.isHovering&&k&&m,S=v.h.showFavouriteButton(e.video,d);return n.createElement("div",{className:x},S&&n.createElement("div",{className:q.topRightContainer},n.createElement(h,{setFavourite:s,canFavourite:u,video:a,analyticsData:e.analyticsData,analyticsOptions:F})),!E&&n.createElement("div",{className:q.topRightContainer},n.createElement(j.u,{title:g.M.getPrivacyReasoning(e.video),spanHack:!0,spanHackClassName:""},n.createElement(w,null))),n.createElement("div",{className:"position-relative"},n.createElement(b.Z,{onClick:function(){var t;return null===(t=e.cleanPortalNode)||void 0===t?void 0:t.call(e)},data:g.M.getThumbnail(a),appLink:E?c:null,imageType:A.__.Thumbnails,imageOptions:o,preload:l,className:"overflow-hidden ".concat(d?q.preview:"rounded-3 ".concat(q.original)),alt:("series"in a&&(null===(t=a.series)||void 0===t?void 0:t.name)?"".concat(a.series.name,": "):"")+a.name,analyticsData:Object.assign(Object.assign({},e.analyticsData),{id:a.id,name:a.name}),analyticsOptions:Object.assign(Object.assign({},F),{actionType:r.Vw.Click,descriptor:r._S.Thumbnail})},n.createElement(O.oy,{type:O.mS.Video}),n.createElement(C,{video:a}),n.createElement("div",{className:"p-absolute w-100 h-100 text-white"},n.createElement(L,{video:a}),n.createElement(I,{video:a,companyLogoFallbackUrl:p}),n.createElement(Z,{video:e.video,audience:e.audience,hideRating:e.hideRating,hideDuration:e.hideDuration}))),T&&n.createElement(z.r,{key:e.video.id,objectId:e.video.id,objectTypeId:e.video.typeId,mode:"hover",context:y.context,contextId:y.contextId,moviesAndTv:y.mtv,location:"popout-video"})),!d&&!e.hideTitle&&n.createElement(G.h,Object.assign({},e)),n.createElement("div",{className:"".concat(q.details," ").concat(d?"".concat(q.isHovering," box-shadow"):"")},d&&n.createElement(n.Fragment,null,n.createElement("div",{className:"".concat(d?q.videoGuidanceTags:"")},n.createElement(G.h,Object.assign({},e)),e.showVideoGuidance&&d&&n.createElement("div",{className:"d-flex justify-content-start align-items-center pt-2"},n.createElement(W.Y,{video:e.video,appLink:N(Q.K.Interactives),analyticsData:e.analyticsData,analyticsOptions:e.analyticsOptions}),n.createElement(X.x,{video:e.video,appLink:N(Q.K.Resources),analyticsData:e.analyticsData,analyticsOptions:e.analyticsOptions}))))))};function $(e){return n.createElement(n.Fragment,null,n.createElement(H.K,{hoverableComponent:K,componentProps:e,fixedHoverWidth:400,minHoverWidth:400,analyticsData:Object.assign(Object.assign({},e.analyticsData),{id:e.video.id,name:e.video.name}),analyticsOptions:Object.assign(Object.assign({},e.analyticsOptions),{entity:g.M.getAnalyticsEntity(e.video)})}))}var J=a(36848),Y=a(24900),ee=a(89682);const te={container:"efxnE",cvIcon:"OJ_ZQ",action:"vWvGn"};function ae(e){return g.M.getCanBeConsumed(e.video).canNavigate?function(e){var t;return!(null===(t=g.M.getCanBeConsumed(e.video))||void 0===t?void 0:t.canConsume)||!(!s.q.isFunction(e.setFavourite)||!s.q.isFunction(e.canFavourite))||!!s.q.isFunction(e.setCheckMarkStatus)}(e)?n.createElement("div",{className:"".concat(te.container," d-flex align-items-center")},n.createElement(h,{setFavourite:e.setFavourite,canFavourite:e.canFavourite,video:e.video,className:te.action,analyticsData:e.analyticsData,analyticsOptions:e.analyticsOptions}),n.createElement(ee.I,{status:e.checkMarkStatus,setStatus:e.setCheckMarkStatus,className:te.action})):n.createElement(n.Fragment,null):n.createElement("div",{className:te.container},n.createElement(w,{size:e.size}))}var ne=a(68626);const ie={titleOverlay:"krg9f",clip:"MPRU6",large:"g5_ww",interactive:"Zzo3e",titleBelow:"tZjPt",overlayContainer:"EElm1",gradient:"LS_EH"};function re(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var a=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=a){var n,i,r,c,o=[],l=!0,s=!1;try{if(r=(a=a.call(e)).next,0===t){if(Object(a)!==a)return;l=!1}else for(;!(l=(n=r.call(a)).done)&&(o.push(n.value),o.length!==t);l=!0);}catch(e){s=!0,i=e}finally{try{if(!l&&null!=a.return&&(c=a.return(),Object(c)!==c))return}finally{if(s)throw i}}return o}}(e,t)||function(e,t){if(e){if("string"==typeof e)return ce(e,t);var a=Object.prototype.toString.call(e).slice(8,-1);return"Object"===a&&e.constructor&&(a=e.constructor.name),"Map"===a||"Set"===a?Array.from(e):"Arguments"===a||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(a)?ce(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 ce(e,t){(null==t||t>e.length)&&(t=e.length);for(var a=0,n=new Array(t);a<t;a++)n[a]=e[a];return n}var oe="shared.staticVideoThumbnail";function le(e){var t,a=e.video,i=e.subTextAppLink,c=e.textPosition,o=e.appLink,s=c===ne.z.Overlay,u=g.M.getCanBeConsumed(e.video).canNavigate,d="";return s?(d=ie.titleOverlay,u&&(g.M.isClip(a)&&(d+=" "+ie.clip),g.M.isInteractive(a)&&(d+=" "+ie.interactive))):d=ie.titleBelow,n.createElement("div",{className:d},g.M.isVideo(a)&&n.createElement(T.$,{type:e.subTextType,className:s?"text-shadow clamp-1":"clamp-2",video:a,appLink:s?null:i,analyticsOptions:{location:r.LZ.VideoThumbnail}}),s||!u?n.createElement("span",{className:"h6 text-reset text-shadow clamp-1"},null!==(t=a.name)&&void 0!==t?t:l.T.getPhrase(oe,"videoUnavailable")):n.createElement(J.F,{className:"h6 text-reset clamp-2",appLink:o},a.name))}function se(e){var t,a,c=e.video,o=e.appLink,l=e.textPosition,s=e.imageOptions,u=e.setFavourite,d=e.preload,m=e.hoverToPlay,p=i.t.isObject(null==o?void 0:o.params)?null==o?void 0:o.params:{},y=re((0,D.X)(),2),f=y[0],E=y[1],h=re((0,D.L)({delay:100}),2),k=h[0],N=h[1],x=g.M.getCanBeConsumed(c),w=x.canNavigate,F=x.canConsume,T=N&&F&&m,S=Object.assign(Object.assign({},e.analyticsOptions),{entity:g.M.getAnalyticsEntity(c)}),M=!!o&&!e.hideMask&&w,P=g.M.getPrivacyReasoning(e.video,e.showSignIn);return n.createElement(j.u,{title:P,spanHack:!0,spanHackClassName:""},n.createElement("div",{className:(a="position-relative",a+=o&&w?" cursor-pointer":"",e.extraClasses&&(a+=" ".concat(e.extraClasses)),l===ne.z.Overlay&&(a+=" rounded overflow-hidden"),a),ref:function(e){f.current=e,k.current=e}},n.createElement(ae,{video:c,checkMarkStatus:e.checkMarkStatus,setCheckMarkStatus:e.setCheckMarkStatus,setFavourite:u,canFavourite:function(){var t;return(null===(t=e.canFavourite)||void 0===t?void 0:t.call(e,e.video))&&v.h.showFavouriteButton(c,E)},analyticsData:e.analyticsData,analyticsOptions:S,size:e.size}),n.createElement(b.Z,{data:g.M.getThumbnail(c),appLink:w?o:null,imageType:A.__.Thumbnails,imageOptions:s,preload:d,className:function(){var t="overflow-hidden ".concat("sm"===e.size?"rounded":"rounded-3");return e.imageClassName&&(t+=" ".concat(e.imageClassName)),l===ne.z.Overlay&&(t+=" ".concat(ie.gradient)),t}(),alt:("series"in c&&(null===(t=c.series)||void 0===t?void 0:t.name)?"".concat(c.series.name,": "):"")+c.name,analyticsData:Object.assign(Object.assign({},e.analyticsData),{id:c.id,name:c.name}),analyticsOptions:Object.assign(Object.assign({},S),{actionType:r.Vw.Click,descriptor:r._S.Thumbnail})},M&&n.createElement(Y.z,{type:Y.O.Video,size:e.size}),n.createElement(O.oy,{type:O.mS.Video}),n.createElement("div",{className:ie.overlayContainer},l===ne.z.Overlay&&n.createElement(le,Object.assign({},e)),n.createElement(C,{video:c}),n.createElement(L,{video:c,size:e.size}),n.createElement(I,{video:c,companyLogoFallbackUrl:e.companyLogoFallbackUrl,size:e.size}),n.createElement(Z,{video:e.video,audience:e.audience,hideRating:e.hideRating,hideDuration:e.hideDuration,newDurationStyle:e.newDurationStyle,size:e.size}))),T&&n.createElement(z.r,{key:e.video.id,objectId:e.video.id,objectTypeId:e.video.typeId,mode:"hover",context:p.context,contextId:p.contextId,moviesAndTv:p.mtv}),l===ne.z.Below&&n.createElement(le,Object.assign({},e))))}function ue(e){switch(e.type){case"static":return n.createElement(se,Object.assign({},e));case"cosmetic":return n.createElement(se,Object.assign({},e,{hoverToPlay:!1}));case"expandable":return n.createElement(V,Object.assign({},e));case"popout":return n.createElement($,Object.assign({},e));default:return}}ue.defaultProps={hideRating:!0,size:"md",hoverToPlay:!0}},61150:(e,t,a)=>{a.d(t,{y:()=>v});var n=a(32735),i=a(23481),r=a(83914),c=a(5960),o=a(4594),l=a(35223);const s={topLeftContainer:"iwBld",draft:"QBpxh",badge:"KcvGx",svg:"gW733",text:"QiH5Q",sm:"tn2BH"};var u=i.T.encloseNamespace("shared.typeBadge");function d(e){switch(e){case o.E.Clip:return l.vn.Clip;case o.E.Interactive:return l.vn.Interactive;case o.E.Resource:return l.vn.Resources;default:return""}}function m(e,t){switch(e){case o.E.Clip:return"bg-dark-blue";case o.E.Interactive:return t===c.X.Draft?s.draft:"bg-green";case o.E.Resource:return"bg-indigo";default:return""}}function v(e){var t="".concat(s.badge," rounded-pill text-white ps-0 ").concat("sm"===e.size?s.sm:"");return n.createElement("div",{className:s.topLeftContainer},n.createElement("div",{className:"".concat(t," ").concat(m(e.typeId,e.status))},n.createElement(r.x,{className:"svg-container d-block ".concat(s.svg),size:"sm"===e.size?r.S.Small:r.S.Standard,svgName:d(e.typeId)}),n.createElement("span",{className:s.text},function(e){switch(e){case o.E.Clip:return u("clip");case o.E.Interactive:return u("interactive");case o.E.Resource:return u("resource");default:return""}}(e.typeId))))}v.default={size:"md"}},66190:(e,t,a)=>{a.d(t,{Y:()=>u});var n=a(32735),i=a(23481),r=a(65858),c=a(65720),o=a(35223),l=a(31908),s="shared.interactivesTag";function u(e){var t,a;if(!e.video||l.M.isInteractive(e.video))return n.createElement(n.Fragment,null);var u=(null===(a=null===(t=e.video.interactives)||void 0===t?void 0:t.data)||void 0===a?void 0:a.length)||0;return u?n.createElement(c.m,{svgName:o.vn.Interactive,iconVariant:"green",text:i.T.getPhrase(s,"interactives",{smartCount:u}),appLink:e.appLink,appLinkAnalyticsData:Object.assign({videoGuidanceType:"interactive",videoGuidanceTotalItems:u},e.analyticsData),appLinkAnalyticsOptions:Object.assign({actionType:r.Vw.Click,entity:l.M.getAnalyticsEntity(e.video)},e.analyticsOptions)}):n.createElement(n.Fragment,null)}},77590:(e,t,a)=>{a.d(t,{x:()=>u});var n=a(32735),i=a(23481),r=a(65858),c=a(65720),o=a(35223),l=a(31908),s="shared.resourcesTag";function u(e){var t,a;if(!e.video||l.M.isInteractive(e.video))return n.createElement(n.Fragment,null);var u=(null===(a=null===(t=e.video.resources)||void 0===t?void 0:t.data)||void 0===a?void 0:a.length)||0;return u?n.createElement(c.m,{svgName:o.vn.Resources,iconVariant:"indigo",text:i.T.getPhrase(s,"resources",{smartCount:u}),appLink:e.appLink,appLinkAnalyticsData:Object.assign({videoGuidanceType:"resource",videoGuidanceTotalItems:u},e.analyticsData),appLinkAnalyticsOptions:Object.assign({actionType:r.Vw.Click,entity:l.M.getAnalyticsEntity(e.video)},e.analyticsOptions)}):n.createElement(n.Fragment,null)}},65720:(e,t,a)=>{a.d(t,{m:()=>o});var n=a(32735),i=a(83914),r=a(36848);const c={tag:"OjHQZ",icon:"SS2zL",active:"kD1xM"};function o(e){return e.appLink?n.createElement(r.F,{appLink:e.appLink,analyticsData:e.appLinkAnalyticsData,analyticsOptions:e.appLinkAnalyticsOptions},n.createElement(l,Object.assign({},e))):n.createElement(l,Object.assign({},e))}function l(e){return n.createElement("div",{className:"p-1 pe-2 rounded-pill d-inline-flex align-items-center cursor-pointer ".concat(c.tag," ").concat(e.active?c.active:"")},n.createElement(i.x,{className:"".concat(c.icon," rounded-circle bg-").concat(e.iconVariant," text-white"),svgName:e.svgName}),n.createElement("span",{className:"ps-1 text-nowrap user-select-none"},e.text))}},38647:(e,t,a)=>{a.d(t,{m:()=>s});var n=a(32735),i=a(83914),r=a(76177),c=a(26361),o=a(35223),l=a(31908);function s(e){if(!e.yearGroups)return n.createElement(n.Fragment,null);var t=c.l.mapRestrictionToText(e.video._restrictions,e.yearGroups);return l.M.getCanBeConsumed(e.video).canConsume&&t?n.createElement(r.u,{spanHack:!0,spanHackClassName:e.className||"d-inline-block ps-1",title:t,placement:e.tooltipPlacement||"top"},n.createElement(i.x,{svgName:o.vn.Lock,size:"sm"===e.size?i.S.Small:i.S.Standard})):n.createElement(n.Fragment,null)}},10439:(e,t,a)=>{a.d(t,{r:()=>o});var n=a(32735),i=a(17082),r=a(35429);const c={hoverContainer:"TzWQw",hovering:"gdTcW"};function o(e){var t,a=(0,r.g)();if(null===(t=a.useInitialize)||void 0===t||t.call(a,e),!a.hasProvider)return n.createElement(n.Fragment,null);if("picture-in-picture"===a.mode)return n.createElement(n.Fragment,null);if("hover"===e.mode&&a.isOnPlayPage)return n.createElement(n.Fragment,null);if("default"===a.mode||"play-page"===e.location)return n.createElement(i.t0,{node:a.portalNode});var o=a.started,l="rounded-3";"popout-video"===e.location&&(l="rounded-top-3");var s="".concat(c.hoverContainer," ").concat(o?c.hovering:""," ").concat(l," overflow-hidden");return n.createElement("div",{className:s},n.createElement(i.t0,{node:a.portalNode}))}},68626:(e,t,a)=>{var n;a.d(t,{z:()=>n}),function(e){e[e.Below=1]="Below",e[e.Overlay=2]="Overlay",e[e.Independent=3]="Independent"}(n||(n={}))},59598:(e,t,a)=>{var n;a.d(t,{K:()=>n}),function(e){e.Resources="resources",e.Interactives="interactives"}(n||(n={}))}}]);
|
|
2
|
-
//# sourceMappingURL=2355-
|
|
2
|
+
//# sourceMappingURL=2355-c588dc3ce2-lite.chunk.js.map
|
package/dist/scripts/{2355-6cd89fa80d-lite.chunk.js.map → 2355-c588dc3ce2-lite.chunk.js.map}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scripts/2355-6cd89fa80d-lite.chunk.js","mappings":"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","sources":["file:///app/packages/libs/shared/src/components/audience-label/AudienceLabel.tsx","file:///app/packages/libs/shared/src/components/badges/BadgeListContainer.tsx","file:///app/packages/libs/shared/src/components/check-mark-button/check-mark-button.scss","file:///app/packages/libs/shared/src/components/check-mark-button/CheckMarkButton.tsx","file:///app/packages/libs/shared/src/components/mask/mask.scss","file:///app/packages/libs/shared/src/components/mask/Mask.tsx","file:///app/packages/libs/shared/src/components/thumbnails/thumbnail-text/thumbnail-text.scss","file:///app/packages/libs/shared/src/components/thumbnails/thumbnail-text/ThumbnailText.tsx","file:///app/packages/libs/shared/src/components/favourite-button/favourite-button.scss","file:///app/packages/libs/shared/src/components/favourite-button/FavouriteButton.tsx","file:///app/packages/libs/shared/src/components/thumbnails/bottom-bar/videos/VideoWatchProgressBar.tsx","file:///app/packages/libs/shared/src/components/thumbnails/bottom-bar/video-thumbnail-bottom-bar.scss","file:///app/packages/libs/shared/src/components/thumbnails/bottom-bar/VideoThumbnailBottomBar.tsx","file:///app/packages/libs/shared/src/components/thumbnails/thumbnail-actions/padlock/thumbnail-padlock.scss","file:///app/packages/libs/shared/src/components/thumbnails/thumbnail-actions/padlock/ThumbnailPadlock.tsx","file:///app/packages/libs/shared/src/components/thumbnails/thumbnail-company/thumbnail-company-logo.scss","file:///app/packages/libs/shared/src/components/thumbnails/thumbnail-company/ThumbnailCompanyLogo.tsx","file:///app/packages/libs/shared/src/components/video-type-badge/VideoTypeBadge.tsx","file:///app/packages/libs/shared/src/components/thumbnails/video/expandable/expandable-video-thumbnail.scss","file:///app/packages/libs/shared/src/components/thumbnails/video/expandable/ExpandableVideoThumbnail.tsx","file:///app/packages/libs/shared/src/components/thumbnails/thumbnail-badges/video-thumbnail-badges.scss","file:///app/packages/libs/shared/src/components/thumbnails/thumbnail-badges/VideoThumbnailBadges.tsx","file:///app/packages/libs/shared/src/components/thumbnails/video/popout/popout-video-thumbnail.scss","file:///app/packages/libs/shared/src/components/thumbnails/video/popout/PopoutVideoThumbnail.tsx","file:///app/packages/libs/shared/src/components/thumbnails/thumbnail-actions/video-thumbnail-actions.scss","file:///app/packages/libs/shared/src/components/thumbnails/thumbnail-actions/VideoThumbnailActions.tsx","file:///app/packages/libs/shared/src/components/thumbnails/video/static/static-video-thumbnail.scss","file:///app/packages/libs/shared/src/components/thumbnails/video/static/StaticVideoThumbnail.tsx","file:///app/packages/libs/shared/src/components/thumbnails/video/VideoThumbnail.tsx","file:///app/packages/libs/shared/src/components/type-badge/type-badge.scss","file:///app/packages/libs/shared/src/components/type-badge/TypeBadge.tsx","file:///app/packages/libs/shared/src/components/video-guidance/interactives/InteractivesTag.tsx","file:///app/packages/libs/shared/src/components/video-guidance/resources/ResourcesTag.tsx","file:///app/packages/libs/shared/src/components/video-guidance/tag/video-guidance-tag.scss","file:///app/packages/libs/shared/src/components/video-guidance/tag/VideoGuidanceTag.tsx","file:///app/packages/libs/shared/src/components/video-list/components/restriction-padlock/RestrictionPadlock.tsx","file:///app/packages/libs/shared/src/context/player-context/components/global-player-consumer.scss","file:///app/packages/libs/shared/src/context/player-context/components/GlobalPlayerConsumer.tsx","file:///app/packages/libs/shared/src/enums/ThumbnailTextPosition.ts","file:///app/packages/libs/shared/src/interfaces/PlayPageAnchor.ts"],"sourcesContent":["import * as React from 'react';\n\nimport { Audience } from 'libs/shared/interfaces';\n\nimport styles from './audience-label.scss';\n\ntype AudienceBorderColour = 'dark' | 'white';\n\ninterface AudienceLabelProps {\n audience: Audience;\n border: AudienceBorderColour;\n className?: string;\n}\n\nexport function AudienceLabel(props: AudienceLabelProps): JSX.Element {\n if (!props.audience)\n return <></>;\n\n // Note: the audience-label class is applied so that parent components can override styling, and Online can style this component\n return (\n <div\n className={`audience-label border rounded-pill d-inline-block px-2 text-nowrap \n ${'border-' + props.border} ${props.className ? props.className : ''}`}\n >\n {props.audience.name}\n </div>\n );\n}\n\ninterface AudienceLabelListProps {\n audiences: Audience[];\n border: AudienceBorderColour;\n}\n\nexport function AudienceLabelList(props: AudienceLabelListProps): JSX.Element {\n if (!props.audiences || !props.audiences.length)\n return <></>;\n\n return (\n <>\n {props.audiences.map((a, idx) => (\n <span key={idx} className={styles.audienceLabelListItem}>\n <AudienceLabel audience={a} border={props.border} />\n </span>\n ))}\n </>\n );\n}","import * as React from 'react';\n\nimport styles from './badge.scss';\n\ninterface BadgeListContainerProps {\n className?: string;\n}\n\nexport function BadgeListContainer(props: React.PropsWithChildren<BadgeListContainerProps>): JSX.Element {\n let className = `d-flex align-items-center badge-list ${styles.minHeight}`;\n\n if (props.className)\n className += ` ${props.className}`;\n\n return (\n <div className={className}>\n {props.children}\n </div>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"unchecked\":\"bup9I\",\"outline\":\"ealw_\",\"checked\":\"A1Ov0\",\"checkMark\":\"c14lI\"};","import React from 'react';\n\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\n\nimport { SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport { DivButton } from '../div-button/DivButton';\n\nimport styles from './check-mark-button.scss';\n\nexport enum CheckMarkStatus {\n None = 'None',\n Complete = 'Complete',\n Incomplete = 'Incomplete'\n}\n\nexport type SetCheckMarkStatusFunc = (status: CheckMarkStatus) => Promise<void>;\n\ninterface CheckMarkButtonProps {\n setStatus: SetCheckMarkStatusFunc;\n status: CheckMarkStatus;\n style?: 'outline' | 'filled';\n className?: string;\n disabled?: boolean;\n}\n\nCheckMarkButton.defaultProps = {\n style: 'filled'\n};\n\nexport function CheckMarkButton(props: CheckMarkButtonProps): JSX.Element {\n // Use local state so that changes are reflected immediately.\n const [ isComplete, setIsComplete ] = React.useState(props.status === CheckMarkStatus.Complete);\n\n React.useEffect(() => {\n setIsComplete(props.status === CheckMarkStatus.Complete);\n }, [props.status]);\n\n let className = `cursor-pointer rounded-circle ${isComplete ? styles.checked : styles.unchecked}`;\n\n if (props.className)\n className += ` ${props.className}`;\n\n if (props.style === 'outline')\n className += ` ${styles.outline}`;\n\n function shouldRender(): boolean {\n return (\n !!props.status &&\n props.status !== CheckMarkStatus.None &&\n FunctionHelper.isFunction(props.setStatus)\n );\n }\n\n function onClick(): void {\n const shouldComplete = !isComplete;\n\n setIsComplete(shouldComplete);\n\n const newStatus = shouldComplete ? CheckMarkStatus.Complete : CheckMarkStatus.Incomplete;\n\n props.setStatus(newStatus).catch(() => {\n setIsComplete(!shouldComplete);\n });\n }\n\n if (!shouldRender())\n return <></>;\n\n return (\n <DivButton className={className} onClick={onClick} disabled={props.disabled}>\n <SvgContainer\n svgName={cvSvgLibrary.Check}\n className={`svg-container ${styles.checkMark}`}\n />\n </DivButton>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"mask\":\"qpc7L\",\"small\":\"L8Oxs\",\"video\":\"b8kJW\",\"playlist\":\"eo2p2\",\"maskContainer\":\"lpwag\"};","import * as React from 'react';\n\nimport { SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport styles from './mask.scss';\n\nexport enum MaskType {\n Video,\n Playlist,\n Series\n}\n\nfunction getClassByType(type: MaskType): string {\n if (type === MaskType.Video)\n return styles.video;\n\n if (type === MaskType.Playlist)\n return styles.playlist;\n\n return '';\n}\n\nfunction getSvgType(type: MaskType): string {\n if (type === MaskType.Video)\n return cvSvgLibrary.PlayCircle;\n\n return '';\n}\n\ntype MaskSize = 'sm' | 'md';\n\ninterface MaskProps {\n type: MaskType;\n size?: MaskSize;\n}\n\nMask.defaults = {\n size: 'md'\n};\n\nexport function Mask(props: MaskProps): JSX.Element {\n const { type, size } = props;\n\n const typeClass = getClassByType(type);\n const svgType = getSvgType(type);\n\n return (\n <div className={`${styles.maskContainer} ${size === 'sm' ? styles.small : ''}`}>\n <div className={ styles.mask }></div>\n <SvgContainer svgName={svgType} className={ typeClass } />\n </div>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"container\":\"r70GR\",\"titleContainer\":\"rULXI\",\"seriesTitleBox\":\"h9k1p\",\"badgeContainer\":\"QaDDX\",\"audienceBadge\":\"hvsne\"};","import React from 'react';\n\nimport { LocationContext } from 'libs/analytics/interfaces';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { PopoutVideoThumbnailProps } from 'libs/shared/components/thumbnails/video/VideoThumbnail';\nimport { RestrictionPadlock } from 'libs/shared/components/video-list/components/restriction-padlock/RestrictionPadlock';\nimport { VideoSubText } from 'libs/shared/components/video-sub-text/VideoSubText';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\nimport styles from './thumbnail-text.scss';\n\ntype VideoThumbnailTextProps = Pick<PopoutVideoThumbnailProps, 'video'|'appLink'|'subTextAppLink'|'yearGroups'|'subTextType'>\n\nexport function ThumbnailText(props: VideoThumbnailTextProps): JSX.Element {\n const { video, appLink, subTextAppLink } = props;\n const { canNavigate } = VideoHelper.getCanBeConsumed(video);\n\n return (\n <div className={`mt-2 ${styles.container}`}>\n <div className={`d-flex flex-column ${styles.titleContainer}`}>\n {VideoHelper.isVideo(video) && (\n <VideoSubText\n type={props.subTextType}\n className={`text-truncate ${styles.seriesTitleBox}`}\n video={video}\n appLink={subTextAppLink}\n analyticsOptions={{ location: LocationContext.VideoThumbnail }}\n />\n )}\n \n <AppLink className='h6 text-reset clamp-2 align-middle' appLink={canNavigate ? appLink : null}>\n {video.name}\n <RestrictionPadlock\n video={props.video}\n yearGroups={props.yearGroups}\n size='sm'\n />\n </AppLink>\n </div>\n </div>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"favourited\":\"t0svX\",\"favouriteButton\":\"CFRo3\",\"heart\":\"ZMMQu\",\"heartOutline\":\"truFo\"};","import * as React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\nimport { HashObject } from 'libs/common/react/interfaces/HashObject';\n\nimport { AnalyticsOptions } from 'libs/analytics/interfaces/AnalyticsTypes';\n\nimport { DivButton } from 'libs/shared/components/div-button/DivButton';\nimport { SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\nimport { useAlerts } from 'libs/shared/hooks/UseAlerts';\nimport { CanFavouriteFunc, FavouriteFunc, VideoTypes } from 'libs/shared/interfaces';\nimport { FavouriteHelper } from 'libs/shared/utils/FavouriteHelpers';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\nimport styles from './favourite-button.scss';\n\nconst namespace = 'shared.favouriteButton';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface FavouriteButtonProps {\n video: VideoTypes;\n setFavourite: FavouriteFunc;\n canFavourite: CanFavouriteFunc;\n className?: string;\n analyticsData?: HashObject,\n analyticsOptions?: AnalyticsOptions\n}\n\nexport function FavouriteButton(props: FavouriteButtonProps): JSX.Element {\n const alerts = useAlerts();\n\n const initialState = FavouriteHelper.isFavouritedByCurrentUser(props.video);\n\n // Use local state so that changes are reflected immediately.\n const [ isFavourite, setIsFavourite ] = React.useState(initialState);\n\n React.useEffect(() => {\n setIsFavourite(initialState);\n }, [initialState]);\n\n const flexClasses = 'd-flex align-items-center justify-content-center';\n let className = `${flexClasses} cursor-pointer ${styles.favouriteButton} ${isFavourite ? styles.favourited : ''}`;\n\n if (props.className)\n className += ` ${props.className}`;\n\n function onClick(): void {\n const shouldFavourite = !isFavourite;\n\n function onError(): void {\n function getErrorPhraseKey(): string {\n if (VideoHelper.isClip(props.video))\n return shouldFavourite ? 'favouriteClipError' : 'unfavouriteClipError';\n\n if (VideoHelper.isInteractive(props.video))\n return shouldFavourite ? 'favouriteInteractiveError' : 'unfavouriteInteractiveError';\n\n return shouldFavourite ? 'favouriteVideoError' : 'unfavouriteVideoError';\n }\n\n alerts.error(getPhrase(getErrorPhraseKey()));\n setIsFavourite(!shouldFavourite);\n }\n\n setIsFavourite(shouldFavourite);\n props.setFavourite(props.video, shouldFavourite, null, onError, props.analyticsData, props.analyticsOptions);\n }\n\n if (!FunctionHelper.isFunction(props.setFavourite) || !FunctionHelper.isFunction(props.canFavourite))\n return <></>;\n\n // Don't render until we know the state of isFavourite\n if (!props.canFavourite(props.video))\n return <></>;\n\n return (\n <DivButton className={className} onClick={onClick}>\n {/* We have the two svgs because they get swapped out on hover by the styles */}\n <SvgContainer\n svgName={cvSvgLibrary.Heart}\n className={`svg-container ${styles.heart}`}\n />\n <SvgContainer\n svgName={cvSvgLibrary.HeartOutline}\n className={`svg-container ${styles.heartOutline}`}\n />\n </DivButton>\n );\n}","import * as React from 'react';\n\nimport { Video } from 'libs/shared/interfaces';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\ninterface VideoWatchProgressBarProps {\n video: Video;\n}\n\nexport function VideoWatchProgressBar(props: VideoWatchProgressBarProps): JSX.Element {\n const progress = VideoHelper.getVideoProgress(props.video);\n\n const watchPercentage = progress && props.video.duration\n && progress / props.video.duration * 100000;\n\n if (!watchPercentage)\n return <></>;\n\n return <div className='bg-primary h-100' style={{ width: `${watchPercentage}%` }} />;\n}","// extracted by mini-css-extract-plugin\nexport default {\"bottomBar\":\"YnXtZ\"};","import React from 'react';\n\nimport { VideoTypes } from 'libs/shared/interfaces';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\nimport { VideoWatchProgressBar } from './videos/VideoWatchProgressBar';\n\nimport styles from './video-thumbnail-bottom-bar.scss';\n\ninterface VideoThumbnailBottomBarProps {\n video: VideoTypes;\n}\n\nexport function VideoThumbnailBottomBar(props: VideoThumbnailBottomBarProps): JSX.Element {\n if (!VideoHelper.isVideo(props.video)) {\n return <></>;\n }\n\n return (\n <div className={styles.bottomBar}>\n <VideoWatchProgressBar video={props.video} />\n </div>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"padlock\":\"w4cg8\",\"sm\":\"JpIYd\"};","import React from 'react';\n\nimport { SvgContainer, SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\nimport { VideoItemSize } from 'libs/shared/components/video-list/BaseVideoItemProps';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport styles from './thumbnail-padlock.scss';\n\ninterface ThumbnailPadlockProps {\n size?: VideoItemSize;\n}\n\nexport function ThumbnailPadlock(props: ThumbnailPadlockProps): JSX.Element {\n const svgSize = props.size === 'sm' ? SvgContainerSize.Small : SvgContainerSize.Standard;\n\n return (\n <div className={`${styles.padlock} ${props.size === 'sm' ? styles.sm : ''} bg-white cursor-default d-flex align-items-center justify-content-center`}>\n <SvgContainer svgName={cvSvgLibrary.Lock} size={svgSize} />\n </div>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"topLeftContainer\":\"ia0ry\",\"logo\":\"OA9ft\",\"sm\":\"fyo2J\"};","import React from 'react';\n\nimport { VideoItemSize } from 'libs/shared/components/video-list/BaseVideoItemProps';\nimport { VideoTypes } from 'libs/shared/interfaces';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\nimport { Tooltip } from '../../tooltip/Tooltip';\n\nimport styles from './thumbnail-company-logo.scss';\n\ninterface ThumbnailCompanyLogoProps {\n companyLogoFallbackUrl: string;\n video: VideoTypes;\n size?: VideoItemSize;\n}\n\nThumbnailCompanyLogo.defaultProps = {\n size: 'md'\n};\n\nexport function ThumbnailCompanyLogo(props: ThumbnailCompanyLogoProps): JSX.Element {\n if (!VideoHelper.isVideo(props.video) || !props.companyLogoFallbackUrl)\n return <></>;\n\n const company = props.video.productionCompanies?.data?.[0];\n const url = company?.logo?.url ?? props.companyLogoFallbackUrl;\n\n if (!url)\n return <></>;\n\n return (\n <div className={styles.topLeftContainer}>\n <Tooltip\n title={company?.name}\n spanHack\n >\n <div\n className={`${styles.logo} ${props.size === 'sm' ? styles.sm : ''}`}\n style={{\n backgroundImage: `url(${url})`\n }}\n />\n </Tooltip>\n </div>\n );\n}","import React from 'react';\n\nimport { VideoItemSize } from 'libs/shared/components/video-list/BaseVideoItemProps';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { VideoTypes } from 'libs/shared/interfaces/VideoTypes';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\nimport { TypeBadge } from '../type-badge/TypeBadge';\n\ninterface VideoTypeBadgeProps {\n video: VideoTypes;\n size?: VideoItemSize;\n}\n\nVideoTypeBadge.default = {\n size: 'md'\n};\n\nexport function VideoTypeBadge(props: VideoTypeBadgeProps): JSX.Element {\n if (VideoHelper.isClip(props.video))\n return <TypeBadge typeId={MasterType.Clip} size={props.size} />;\n\n if (VideoHelper.isInteractive(props.video))\n return <TypeBadge typeId={MasterType.Interactive} status={props.video.status} size={props.size} />;\n\n return <></>;\n}","// extracted by mini-css-extract-plugin\nexport default {\"overlayContainer\":\"qu3A3\",\"topRightContainer\":\"XAfZW\",\"overlay\":\"NTrtm\",\"downScale\":\"puKcM\",\"title\":\"_6FukN\",\"gradient\":\"rXzR8\",\"playIcon\":\"dndOA\",\"videoProgress\":\"yhWf4\",\"badgeContainer\":\"AtgmC\",\"clipProgress\":\"E2egN\",\"interactiveProgress\":\"WycwR\"};","import React from 'react';\n\nimport { HashObject } from 'libs/common/react/interfaces';\nimport { ObjectHelper } from 'libs/common/react/utils/ObjectHelper';\n\nimport { ClickDescriptor, UserAction } from 'libs/analytics/interfaces';\n\nimport { Badge, BadgeType } from 'libs/shared/components/badges/Badge';\nimport { BadgeListContainer } from 'libs/shared/components/badges/BadgeListContainer';\nimport { FavouriteButton } from 'libs/shared/components/favourite-button/FavouriteButton';\nimport { BaseImage } from 'libs/shared/components/image/BaseImage';\nimport { ImageFallback, ImageFallbackType } from 'libs/shared/components/image/ImageFallback';\nimport { SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\nimport { VideoThumbnailBottomBar } from 'libs/shared/components/thumbnails/bottom-bar/VideoThumbnailBottomBar';\nimport { ThumbnailPadlock } from 'libs/shared/components/thumbnails/thumbnail-actions/padlock/ThumbnailPadlock';\nimport { ThumbnailCompanyLogo } from 'libs/shared/components/thumbnails/thumbnail-company/ThumbnailCompanyLogo';\nimport { ExpandableVideoThumbnailProps } from 'libs/shared/components/thumbnails/video/VideoThumbnail';\nimport { Tooltip } from 'libs/shared/components/tooltip/Tooltip';\nimport { VideoSubText } from 'libs/shared/components/video-sub-text/VideoSubText';\nimport { VideoTypeBadge } from 'libs/shared/components/video-type-badge/VideoTypeBadge';\nimport { GlobalPlayerConsumer } from 'libs/shared/context/player-context/components/GlobalPlayerConsumer';\nimport { ImageType } from 'libs/shared/enums/Images';\nimport { useHoverIntent } from 'libs/shared/hooks/UseHover';\nimport { FavouriteHelper } from 'libs/shared/utils/FavouriteHelpers';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\nimport styles from './expandable-video-thumbnail.scss';\n\nfunction getTitleClass(hovering: boolean): string {\n let className = 'mb-1';\n\n if (hovering) {\n className += styles.downScale;\n }\n \n return className;\n}\n\nexport function ExpandableVideoThumbnail(props: ExpandableVideoThumbnailProps): JSX.Element {\n const {\n video, appLink, imageOptions, setFavourite, canFavourite,\n preload, hovering, hoverToPlay, companyLogoFallbackUrl\n } = props;\n const { canNavigate, canConsume } = VideoHelper.getCanBeConsumed(props.video);\n\n const appLinkParams = ObjectHelper.isObject(appLink?.params) ? appLink?.params as HashObject : {};\n\n const eventAnalyticsOptions = {\n ...props.analyticsOptions,\n entity: VideoHelper.getAnalyticsEntity(video)\n };\n\n const showFavouriteButton = FavouriteHelper.showFavouriteButton(props.video, hovering);\n const isVideo = VideoHelper.isVideo(video);\n\n const rating = VideoHelper.getRating(props.video);\n\n const [ thumbnailHoverRef, isThumbnailHovering ] = useHoverIntent<HTMLDivElement>({ delay: 100 });\n\n const showThumbnailPreviewVideo = isThumbnailHovering && canConsume && hoverToPlay;\n\n return (\n <Tooltip title={VideoHelper.getPrivacyReasoning(props.video)} spanHack spanHackClassName=''>\n <div className='position-relative rounded-3 overflow-hidden' ref={thumbnailHoverRef}>\n {showFavouriteButton &&\n <div className={styles.topRightContainer}>\n <FavouriteButton\n setFavourite={setFavourite}\n canFavourite={canFavourite}\n video={video}\n analyticsData={props.analyticsData}\n analyticsOptions={eventAnalyticsOptions}\n />\n </div>\n }\n\n {!canNavigate && (\n <div className={styles.topRightContainer}>\n <ThumbnailPadlock />\n </div>\n )}\n \n <VideoTypeBadge video={video} />\n <ThumbnailCompanyLogo video={video} companyLogoFallbackUrl={companyLogoFallbackUrl} />\n\n <BaseImage\n data={VideoHelper.getThumbnail(video)}\n appLink={canNavigate ? appLink : null}\n imageType={ImageType.Thumbnails}\n imageOptions={imageOptions}\n preload={preload}\n className={styles.gradient}\n alt={('series' in video && video.series?.name ? `${video.series.name}: ` : '') + video.name}\n analyticsData={{\n ...props.analyticsData,\n id: video.id,\n name: video.name\n }}\n analyticsOptions={{\n ...eventAnalyticsOptions,\n actionType: UserAction.Click,\n descriptor: ClickDescriptor.Thumbnail\n }}\n >\n {!!(hovering && canNavigate) && (\n <SvgContainer className={styles.playIcon} svgName={cvSvgLibrary.PlayCircle} />\n )}\n\n <ImageFallback type={ImageFallbackType.Video} />\n <div className={styles.overlayContainer}>\n <div className={styles.overlay}>\n <div className={`${getTitleClass(hovering)} ${styles.title}`}>\n {isVideo && (\n <VideoSubText\n type={props.subTextType}\n className='text-shadow clamp-1'\n video={video}\n appLink={null}\n analyticsOptions={null}\n />\n )}\n\n <span className='h6 text-reset text-shadow clamp-1'>\n {VideoHelper.getTitle(video)}\n </span>\n </div>\n\n <VideoThumbnailBottomBar video={video} />\n\n {hovering && (\n <BadgeListContainer className='mt-1'>\n {VideoHelper.isVideo(video) && (\n <>\n <Badge\n type={BadgeType.Rating}\n data={rating}\n />\n {video.hasSubtitle && (\n <span className='badge p-0'>\n <SvgContainer svgName={cvSvgLibrary.CloseCaptionBadge} />\n </span>\n )}\n <Badge\n type={BadgeType.Interactive}\n data={video.hasInteractives}\n />\n <Badge\n type={BadgeType.DurationExact}\n data={VideoHelper.getDuration(props.video)}\n />\n </>\n )}\n </BadgeListContainer>\n )}\n </div>\n </div>\n </BaseImage>\n {showThumbnailPreviewVideo &&\n <GlobalPlayerConsumer\n key={props.video.id}\n objectId={props.video.id}\n objectTypeId={props.video.typeId}\n mode='hover'\n context={appLinkParams.context}\n contextId={appLinkParams.contextId}\n moviesAndTv={appLinkParams.mtv}\n />\n }\n </div>\n </Tooltip>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"badgeContainer\":\"fy9Un\",\"sm\":\"Rb0TL\"};","import React from 'react';\n\nimport { AudienceLabel } from 'libs/shared/components/audience-label/AudienceLabel';\nimport { Badge, BadgeType } from 'libs/shared/components/badges/Badge';\nimport { BadgeListContainer } from 'libs/shared/components/badges/BadgeListContainer';\nimport { VideoItemSize } from 'libs/shared/components/video-list/BaseVideoItemProps';\nimport { Audience, Video } from 'libs/shared/interfaces';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\nimport styles from './video-thumbnail-badges.scss';\n\ninterface VideoThumbnailBadgesProps {\n video?: Video;\n audience?: Audience;\n hideRating?: boolean;\n hideDuration?: boolean;\n newDurationStyle?: boolean;\n size?: VideoItemSize;\n duration?: number;\n}\n\nVideoThumbnailBadges.defaultProps = {\n newDurationStyle: true,\n size: 'md'\n};\n\nexport function VideoThumbnailBadges(props: VideoThumbnailBadgesProps): JSX.Element {\n const rating = VideoHelper.getRating(props.video);\n\n const showAudience = !!props.audience && props.size !== 'sm';\n const showRating = !showAudience && !props.hideRating && !!rating && props.size !== 'sm';\n\n if (props.hideDuration && !showAudience && !showRating)\n return <></>;\n\n return (\n <BadgeListContainer className={`${styles.badgeContainer} ${props.size === 'sm' ? styles.sm : ''}`}>\n {showAudience && (\n <AudienceLabel\n audience={props.audience}\n className='bg-white text-dark'\n border='dark'\n />\n )}\n {showRating && (\n <Badge\n type={BadgeType.Rating}\n data={rating}\n />\n )}\n {!props.hideDuration && (\n <Badge\n type={props.newDurationStyle ? BadgeType.DurationApproximate : BadgeType.DurationExact}\n data={props.duration || VideoHelper.getDuration(props.video)}\n />\n )}\n </BadgeListContainer>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"preview\":\"whbhf\",\"details\":\"vMaXP\",\"isHovering\":\"tR1jA\",\"videoGuidanceTags\":\"KJrT1\",\"dropdown\":\"oZXV7\",\"show\":\"EiQ04\",\"topRightContainer\":\"FAuzc\"};","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { HashObject } from 'libs/common/react/interfaces';\nimport { ObjectHelper } from 'libs/common/react/utils/ObjectHelper';\n\nimport { ClickDescriptor, UserAction } from 'libs/analytics/interfaces';\n\nimport { FavouriteButton } from 'libs/shared/components/favourite-button/FavouriteButton';\nimport { HoverableProps, HoverToPortalContainer } from 'libs/shared/components/hover-to-portal-container/HoverToPortalContainer';\nimport { BaseImage } from 'libs/shared/components/image/BaseImage';\nimport { ImageFallback, ImageFallbackType } from 'libs/shared/components/image/ImageFallback';\nimport { VideoThumbnailBottomBar } from 'libs/shared/components/thumbnails/bottom-bar/VideoThumbnailBottomBar';\nimport { ThumbnailPadlock } from 'libs/shared/components/thumbnails/thumbnail-actions/padlock/ThumbnailPadlock';\nimport { VideoThumbnailBadges } from 'libs/shared/components/thumbnails/thumbnail-badges/VideoThumbnailBadges';\nimport { ThumbnailText } from 'libs/shared/components/thumbnails/thumbnail-text/ThumbnailText';\nimport { PopoutVideoThumbnailProps } from 'libs/shared/components/thumbnails/video/VideoThumbnail';\nimport { Tooltip } from 'libs/shared/components/tooltip/Tooltip';\nimport { InteractivesTag } from 'libs/shared/components/video-guidance/interactives/InteractivesTag';\nimport { ResourcesTag } from 'libs/shared/components/video-guidance/resources/ResourcesTag';\nimport { VideoTypeBadge } from 'libs/shared/components/video-type-badge/VideoTypeBadge';\nimport { GlobalPlayerConsumer } from 'libs/shared/context/player-context/components/GlobalPlayerConsumer';\nimport { ImageType } from 'libs/shared/enums/Images';\nimport { PlayPageAnchor } from 'libs/shared/interfaces/PlayPageAnchor';\nimport { FavouriteHelper } from 'libs/shared/utils/FavouriteHelpers';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\nimport { ThumbnailCompanyLogo } from '../../thumbnail-company/ThumbnailCompanyLogo';\n\nimport styles from './popout-video-thumbnail.scss';\n\ntype PopoutVideoProps = HoverableProps & PopoutVideoThumbnailProps;\n\nconst PopoutVideo = (props: PopoutVideoProps): JSX.Element => {\n const {\n video, appLink, imageOptions, preload, setFavourite, canFavourite,\n isHovering, hoverToPlay, companyLogoFallbackUrl\n } = props;\n const appLinkParams = ObjectHelper.isObject(appLink?.params) ? appLink?.params as HashObject : {};\n const { canNavigate, canConsume } = VideoHelper.getCanBeConsumed(video);\n\n React.useEffect(() => {\n return () => {\n props.cleanPortalNode?.();\n };\n }, []);\n\n function getGuidanceAppLink(scrollToPosition: PlayPageAnchor): Core.AppLink {\n return {\n ...appLink,\n params: {\n ...appLinkParams,\n scrollTo: scrollToPosition\n }\n };\n }\n\n let className = 'position-relative bg-white';\n\n if (props.extraClasses)\n className += ` ${props.extraClasses}`;\n if (isHovering)\n className += ` rounded-3 shadow-lg`;\n \n const eventAnalyticsOptions = {\n ...props.analyticsOptions,\n entity: VideoHelper.getAnalyticsEntity(video)\n };\n\n const showThumbnailPreviewVideo = props.isHovering && canConsume && hoverToPlay;\n const showFavouriteButton = FavouriteHelper.showFavouriteButton(props.video, isHovering);\n\n return (\n <div className={className}>\n {showFavouriteButton && (\n <div className={styles.topRightContainer}>\n <FavouriteButton\n setFavourite={setFavourite}\n canFavourite={canFavourite}\n video={video}\n analyticsData={props.analyticsData}\n analyticsOptions={eventAnalyticsOptions}\n />\n </div>\n )}\n\n {!canNavigate && (\n <div className={styles.topRightContainer}>\n <Tooltip title={VideoHelper.getPrivacyReasoning(props.video)} spanHack spanHackClassName=''>\n <ThumbnailPadlock />\n </Tooltip>\n </div>\n )}\n\n <div className='position-relative'>\n <BaseImage\n onClick={() => props.cleanPortalNode?.()}\n data={VideoHelper.getThumbnail(video)}\n appLink={canNavigate ? appLink : null}\n imageType={ImageType.Thumbnails}\n imageOptions={imageOptions}\n preload={preload}\n className={`overflow-hidden ${isHovering ? styles.preview : `rounded-3 ${styles.original}`}`}\n alt={('series' in video && video.series?.name ? `${video.series.name}: ` : '') + video.name}\n analyticsData={{\n ...props.analyticsData,\n id: video.id,\n name: video.name\n }}\n analyticsOptions={{\n ...eventAnalyticsOptions,\n actionType: UserAction.Click,\n descriptor: ClickDescriptor.Thumbnail\n }}\n >\n <ImageFallback type={ImageFallbackType.Video} />\n\n <VideoThumbnailBottomBar video={video} />\n \n <div className='p-absolute w-100 h-100 text-white'>\n <VideoTypeBadge video={video} />\n <ThumbnailCompanyLogo video={video} companyLogoFallbackUrl={companyLogoFallbackUrl} />\n\n <VideoThumbnailBadges\n video={props.video}\n audience={props.audience}\n hideRating={props.hideRating}\n hideDuration={props.hideDuration}\n />\n </div>\n </BaseImage>\n {showThumbnailPreviewVideo &&\n <GlobalPlayerConsumer\n key={props.video.id}\n objectId={props.video.id}\n objectTypeId={props.video.typeId}\n mode='hover'\n context={appLinkParams.context}\n contextId={appLinkParams.contextId}\n moviesAndTv={appLinkParams.mtv}\n location='popout-video'\n />\n }\n </div>\n\n {!isHovering && !props.hideTitle && (\n <ThumbnailText {...props}/>\n )}\n \n <div className={`${styles.details} ${isHovering ? `${styles.isHovering} box-shadow` : ''}`}>\n {isHovering && (\n <>\n <div className={`${isHovering ? styles.videoGuidanceTags : ''}`}>\n <ThumbnailText {...props}/>\n\n {(props.showVideoGuidance && isHovering) && (\n <div className={`d-flex justify-content-start align-items-center pt-2`}>\n <InteractivesTag\n video={props.video}\n appLink={getGuidanceAppLink(PlayPageAnchor.Interactives)}\n analyticsData={props.analyticsData}\n analyticsOptions={props.analyticsOptions}\n />\n <ResourcesTag\n video={props.video}\n appLink={getGuidanceAppLink(PlayPageAnchor.Resources)}\n analyticsData={props.analyticsData}\n analyticsOptions={props.analyticsOptions}\n />\n </div>\n )}\n </div>\n </>\n )}\n </div>\n </div>\n );\n};\n\n\nexport function PopoutVideoThumbnail(props: PopoutVideoThumbnailProps): JSX.Element {\n return (\n <>\n <HoverToPortalContainer<PopoutVideoThumbnailProps>\n hoverableComponent={PopoutVideo}\n componentProps={props}\n fixedHoverWidth={400}\n minHoverWidth={400}\n analyticsData={{\n ...props.analyticsData,\n id: props.video.id,\n name: props.video.name\n }}\n analyticsOptions={{\n ...props.analyticsOptions,\n entity: VideoHelper.getAnalyticsEntity(props.video)\n }}\n />\n </>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"container\":\"efxnE\",\"cvIcon\":\"OJ_ZQ\",\"action\":\"vWvGn\"};","import React from 'react';\n\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { AnalyticsOptions } from 'libs/analytics/interfaces/AnalyticsTypes';\n\nimport { CheckMarkButton, CheckMarkStatus, SetCheckMarkStatusFunc } from 'libs/shared/components/check-mark-button/CheckMarkButton';\nimport { FavouriteButton } from 'libs/shared/components/favourite-button/FavouriteButton';\nimport { VideoItemSize } from 'libs/shared/components/video-list/BaseVideoItemProps';\nimport { CanFavouriteFunc, FavouriteFunc, VideoTypes } from 'libs/shared/interfaces';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\nimport { ThumbnailPadlock } from './padlock/ThumbnailPadlock';\n\nimport styles from './video-thumbnail-actions.scss';\n\nfunction hasActions(props: VideoThumbnailActionsProps): boolean {\n if (!VideoHelper.getCanBeConsumed(props.video)?.canConsume)\n return true;\n\n if (FunctionHelper.isFunction(props.setFavourite) && FunctionHelper.isFunction(props.canFavourite))\n return true;\n\n if (FunctionHelper.isFunction(props.setCheckMarkStatus))\n return true;\n\n return false;\n}\n\ninterface VideoThumbnailActionsProps {\n video: VideoTypes;\n setFavourite?: FavouriteFunc;\n canFavourite?: CanFavouriteFunc;\n checkMarkStatus?: CheckMarkStatus;\n setCheckMarkStatus?: SetCheckMarkStatusFunc;\n analyticsData?: HashObject;\n analyticsOptions?: AnalyticsOptions;\n size?: VideoItemSize;\n}\n\nexport function VideoThumbnailActions(props: VideoThumbnailActionsProps): JSX.Element {\n const { canNavigate } = VideoHelper.getCanBeConsumed(props.video);\n\n if (!canNavigate) {\n return (\n <div className={styles.container}>\n <ThumbnailPadlock size={props.size} />\n </div>\n );\n }\n \n if (!hasActions(props))\n return <></>;\n\n return (\n <div className={`${styles.container} d-flex align-items-center`}>\n <FavouriteButton\n setFavourite={props.setFavourite}\n canFavourite={props.canFavourite}\n video={props.video}\n className={styles.action}\n analyticsData={props.analyticsData}\n analyticsOptions={props.analyticsOptions}\n />\n\n <CheckMarkButton\n status={props.checkMarkStatus}\n setStatus={props.setCheckMarkStatus}\n className={styles.action}\n />\n </div>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"titleOverlay\":\"krg9f\",\"clip\":\"MPRU6\",\"large\":\"g5_ww\",\"interactive\":\"Zzo3e\",\"titleBelow\":\"tZjPt\",\"overlayContainer\":\"EElm1\",\"gradient\":\"LS_EH\"};","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { HashObject } from 'libs/common/react/interfaces';\nimport { ObjectHelper } from 'libs/common/react/utils/ObjectHelper';\n\nimport { ClickDescriptor, LocationContext, UserAction } from 'libs/analytics/interfaces';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { BaseImage } from 'libs/shared/components/image/BaseImage';\nimport { ImageFallback, ImageFallbackType } from 'libs/shared/components/image/ImageFallback';\nimport { Mask, MaskType } from 'libs/shared/components/mask/Mask';\nimport { VideoThumbnailBottomBar } from 'libs/shared/components/thumbnails/bottom-bar/VideoThumbnailBottomBar';\nimport { VideoThumbnailActions } from 'libs/shared/components/thumbnails/thumbnail-actions/VideoThumbnailActions';\nimport { VideoThumbnailBadges } from 'libs/shared/components/thumbnails/thumbnail-badges/VideoThumbnailBadges';\nimport { ThumbnailCompanyLogo } from 'libs/shared/components/thumbnails/thumbnail-company/ThumbnailCompanyLogo';\nimport { StaticVideoThumbnailProps } from 'libs/shared/components/thumbnails/video/VideoThumbnail';\nimport { Tooltip } from 'libs/shared/components/tooltip/Tooltip';\nimport { VideoSubText } from 'libs/shared/components/video-sub-text/VideoSubText';\nimport { VideoTypeBadge } from 'libs/shared/components/video-type-badge/VideoTypeBadge';\nimport { GlobalPlayerConsumer } from 'libs/shared/context/player-context/components/GlobalPlayerConsumer';\nimport { ImageType } from 'libs/shared/enums/Images';\nimport { ThumbnailTextPosition } from 'libs/shared/enums/ThumbnailTextPosition';\nimport { useHover, useHoverIntent } from 'libs/shared/hooks/UseHover';\nimport { FavouriteHelper } from 'libs/shared/utils/FavouriteHelpers';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\nimport styles from './static-video-thumbnail.scss';\n\nconst namespace = 'shared.staticVideoThumbnail';\n\nfunction ThumbnailText(props: StaticVideoThumbnailProps): JSX.Element {\n const { video, subTextAppLink, textPosition, appLink } = props;\n\n const textIsOverlayed = textPosition === ThumbnailTextPosition.Overlay;\n const { canNavigate } = VideoHelper.getCanBeConsumed(props.video);\n\n let className = '';\n\n if (textIsOverlayed) {\n className = styles.titleOverlay;\n\n if (canNavigate) {\n if (VideoHelper.isClip(video))\n className += ' ' + styles.clip;\n if (VideoHelper.isInteractive(video))\n className += ' ' + styles.interactive;\n }\n } else {\n className = styles.titleBelow;\n }\n\n return (\n <div className={className}>\n {VideoHelper.isVideo(video) &&\n <VideoSubText\n type={props.subTextType}\n className={textIsOverlayed ? 'text-shadow clamp-1' : 'clamp-2'}\n video={video}\n appLink={!textIsOverlayed ? subTextAppLink : null}\n analyticsOptions={{ location: LocationContext.VideoThumbnail }}\n />\n }\n\n {(textIsOverlayed || !canNavigate)\n ? (\n <span className={`h6 text-reset text-shadow clamp-1`}>\n {video.name ?? LanguageService.getPhrase(namespace, 'videoUnavailable')}\n </span>\n ) : (\n <AppLink className='h6 text-reset clamp-2' appLink={appLink}>\n {video.name}\n </AppLink>\n )\n }\n </div>\n );\n}\n\nexport function StaticVideoThumbnail(props: StaticVideoThumbnailProps): JSX.Element {\n const { video, appLink, textPosition, imageOptions, setFavourite, preload, hoverToPlay } = props;\n\n const appLinkParams = ObjectHelper.isObject(appLink?.params) ? appLink?.params as HashObject : {};\n\n const [ hoverRef, isHovering ] = useHover<HTMLDivElement>();\n const [ hoverIntentRef, isHoveringIntentionally ] = useHoverIntent<HTMLDivElement>({ delay: 100 });\n const { canNavigate, canConsume } = VideoHelper.getCanBeConsumed(video);\n\n function setHoverRefs(r: HTMLDivElement) {\n hoverRef.current = r;\n hoverIntentRef.current = r;\n }\n\n const showThumbnailPreviewVideo = isHoveringIntentionally && canConsume && hoverToPlay;\n\n function canFavourite(): boolean {\n return props.canFavourite?.(props.video) && FavouriteHelper.showFavouriteButton(video, isHovering);\n }\n\n function getContainerClass(): string {\n let className = 'position-relative';\n\n className += (appLink && canNavigate) ? ' cursor-pointer' : '';\n\n if (props.extraClasses)\n className += ` ${props.extraClasses}`;\n\n if (textPosition === ThumbnailTextPosition.Overlay)\n className += ` rounded overflow-hidden`;\n\n return className;\n }\n\n function getThumbnailClass(): string {\n let className = `overflow-hidden ${props.size === 'sm' ? 'rounded' : 'rounded-3'}`;\n\n if (props.imageClassName)\n className += ` ${props.imageClassName}`;\n\n if (textPosition === ThumbnailTextPosition.Overlay)\n className += ` ${styles.gradient}`;\n \n return className;\n }\n\n const eventAnalyticsOptions = {\n ...props.analyticsOptions,\n entity: VideoHelper.getAnalyticsEntity(video)\n };\n\n const showMask = !!appLink && !props.hideMask && canNavigate;\n const tooltip = VideoHelper.getPrivacyReasoning(props.video, props.showSignIn);\n\n\n return (\n <Tooltip title={tooltip} spanHack spanHackClassName=''>\n <div className={getContainerClass()} ref={setHoverRefs}>\n <VideoThumbnailActions\n video={video}\n checkMarkStatus={props.checkMarkStatus}\n setCheckMarkStatus={props.setCheckMarkStatus}\n setFavourite={setFavourite}\n canFavourite={canFavourite}\n analyticsData={props.analyticsData}\n analyticsOptions={eventAnalyticsOptions}\n size={props.size}\n />\n\n <BaseImage\n data={VideoHelper.getThumbnail(video)}\n appLink={canNavigate ? appLink : null}\n imageType={ImageType.Thumbnails}\n imageOptions={imageOptions}\n preload={preload}\n className={getThumbnailClass()}\n alt={('series' in video && video.series?.name ? `${video.series.name}: ` : '') + video.name}\n analyticsData={{\n ...props.analyticsData,\n id: video.id,\n name: video.name\n }}\n analyticsOptions={{\n ...eventAnalyticsOptions,\n actionType: UserAction.Click,\n descriptor: ClickDescriptor.Thumbnail\n }}\n >\n {showMask && (\n <Mask type={MaskType.Video} size={props.size} />\n )}\n <ImageFallback type={ImageFallbackType.Video} />\n <div className={styles.overlayContainer}>\n {textPosition === ThumbnailTextPosition.Overlay && <ThumbnailText {...props} />}\n\n <VideoThumbnailBottomBar video={video} />\n\n <VideoTypeBadge video={video} size={props.size} />\n <ThumbnailCompanyLogo\n video={video}\n companyLogoFallbackUrl={props.companyLogoFallbackUrl}\n size={props.size}\n />\n\n <VideoThumbnailBadges\n video={props.video}\n audience={props.audience}\n hideRating={props.hideRating}\n hideDuration={props.hideDuration}\n newDurationStyle={props.newDurationStyle}\n size={props.size}\n />\n </div>\n </BaseImage>\n {showThumbnailPreviewVideo &&\n <GlobalPlayerConsumer\n key={props.video.id}\n objectId={props.video.id}\n objectTypeId={props.video.typeId}\n mode='hover'\n context={appLinkParams.context}\n contextId={appLinkParams.contextId}\n moviesAndTv={appLinkParams.mtv}\n />\n }\n\n {textPosition === ThumbnailTextPosition.Below && <ThumbnailText {...props} />}\n </div>\n </Tooltip>\n );\n}\n","import * as React from 'react';\n\nimport { Core } from 'libs/common/core';\n\nimport { AnalyticsOptions, HashObject } from 'libs/analytics/interfaces';\n\nimport { CheckMarkStatus, SetCheckMarkStatusFunc } from 'libs/shared/components/check-mark-button/CheckMarkButton';\nimport { VideoSubTextType } from 'libs/shared/components/video-sub-text/VideoSubText';\nimport { ThumbnailTextPosition } from 'libs/shared/enums/ThumbnailTextPosition';\nimport { Audience, CanFavouriteFunc, FavouriteFunc, VideoTypes, YearGroup } from 'libs/shared/interfaces';\nimport { ImageOptions } from 'libs/shared/utils/ImageHelper';\n\nimport { ExpandableVideoThumbnail } from './expandable/ExpandableVideoThumbnail';\nimport { PopoutVideoThumbnail } from './popout/PopoutVideoThumbnail';\nimport { StaticVideoThumbnail } from './static/StaticVideoThumbnail';\n\ninterface BaseVideoThumbnailProps {\n video: VideoTypes;\n imageOptions: ImageOptions;\n appLink: Core.AppLink;\n setFavourite: FavouriteFunc;\n canFavourite: CanFavouriteFunc;\n preload?: boolean;\n analyticsData?: HashObject;\n analyticsOptions: AnalyticsOptions; // Location context required\n hoverToPlay?: boolean;\n companyLogoFallbackUrl?: string;\n \n /**\n * TODO: Fix whatever this used to do in playlists\n */\n canRemovePrivateVideos?: boolean;\n subTextType?: VideoSubTextType;\n subTextAppLink?: Core.AppLink;\n}\n\nexport interface ExpandableVideoThumbnailProps extends BaseVideoThumbnailProps {\n type: 'expandable';\n newDurationStyle?: boolean;\n hovering: boolean;\n}\n\nexport interface PopoutVideoThumbnailProps extends BaseVideoThumbnailProps {\n type: 'popout';\n hideDuration: boolean;\n extraClasses?: string;\n audience: Audience;\n imageCdnUrl: string;\n hideRating?: boolean;\n yearGroups: YearGroup[];\n hideTitle?: boolean;\n showVideoGuidance: boolean;\n}\n\ninterface BaseStaticVideoThumbnailProps extends BaseVideoThumbnailProps {\n textPosition: ThumbnailTextPosition;\n extraClasses?: string;\n imageClassName?: string;\n size: 'sm' | 'md';\n hideMask?: boolean;\n showSignIn?: boolean;\n setCheckMarkStatus?: SetCheckMarkStatusFunc;\n checkMarkStatus?: CheckMarkStatus;\n videoTypeBadgeSize?: 'sm' | 'std';\n hideDuration?: boolean;\n audience?: Audience;\n newDurationStyle?: boolean;\n hideRating?: boolean;\n}\n\ninterface PureStaticVideoThumbnailProps extends BaseStaticVideoThumbnailProps {\n type: 'static';\n}\n\n/**\n * Allows us to have loose types when we only want to display a thumbnail\n * without any of the functionality - Sha\n */\ninterface CosmeticVideoThumbnailProps extends Partial<BaseStaticVideoThumbnailProps> {\n type: 'cosmetic';\n}\n\nexport type StaticVideoThumbnailProps = PureStaticVideoThumbnailProps | CosmeticVideoThumbnailProps;\n\nexport type VideoThumbnailProps = ExpandableVideoThumbnailProps |\n StaticVideoThumbnailProps |\n PopoutVideoThumbnailProps |\n CosmeticVideoThumbnailProps;\n\nVideoThumbnail.defaultProps = {\n hideRating: true,\n size: 'md',\n hoverToPlay: true\n};\n\nexport function VideoThumbnail(props: VideoThumbnailProps): JSX.Element {\n switch (props.type) {\n case 'static':\n return <StaticVideoThumbnail {...props} />;\n case 'cosmetic':\n // No hover to play for cosmetic use of VideoThumbnail\n return <StaticVideoThumbnail {...props} hoverToPlay={false} />;\n case 'expandable':\n // Expandable thumbnails show metadata on hover. Static display the duration and don't expand on hover\n return <ExpandableVideoThumbnail {...props} />;\n case 'popout':\n return <PopoutVideoThumbnail {...props} />;\n default:\n return;\n }\n}\n","// extracted by mini-css-extract-plugin\nexport default {\"topLeftContainer\":\"iwBld\",\"draft\":\"QBpxh\",\"badge\":\"KcvGx\",\"svg\":\"gW733\",\"text\":\"QiH5Q\",\"sm\":\"tn2BH\"};","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 { CurationStatus } from 'libs/shared/enums/CurationStatus';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport styles from './type-badge.scss';\n\nconst namespace = 'shared.typeBadge';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nfunction getText(typeId: MasterType): string {\n switch (typeId) {\n case MasterType.Clip:\n return getPhrase('clip');\n case MasterType.Interactive:\n return getPhrase('interactive');\n case MasterType.Resource:\n return getPhrase('resource');\n default:\n return '';\n }\n}\n\nfunction getIcon(typeId: MasterType): string {\n switch (typeId) {\n case MasterType.Clip:\n return cvSvgLibrary.Clip;\n case MasterType.Interactive:\n return cvSvgLibrary.Interactive;\n case MasterType.Resource:\n return cvSvgLibrary.Resources;\n default:\n return '';\n }\n}\n\nfunction getColourClass(typeId: MasterType, status: CurationStatus): string {\n switch (typeId) {\n case MasterType.Clip:\n return 'bg-dark-blue';\n case MasterType.Interactive:\n return status === CurationStatus.Draft ? styles.draft : 'bg-green';\n case MasterType.Resource:\n return 'bg-indigo';\n default:\n return '';\n }\n}\n\ninterface TypeBadgeProps {\n typeId: MasterType;\n status?: CurationStatus;\n size?: 'sm' | 'md';\n}\n\nTypeBadge.default = {\n size: 'md'\n};\n\nexport function TypeBadge(props: TypeBadgeProps): JSX.Element {\n const baseClasses = `${styles.badge} rounded-pill text-white ps-0 ${props.size === 'sm' ? styles.sm : ''}`;\n\n return (\n <div className={styles.topLeftContainer}>\n <div className={`${baseClasses} ${getColourClass(props.typeId, props.status)}`}>\n <SvgContainer\n className={`svg-container d-block ${styles.svg}`}\n size={props.size === 'sm' ? SvgContainerSize.Small : SvgContainerSize.Standard}\n svgName={getIcon(props.typeId)}\n />\n <span className={styles.text}>\n {getText(props.typeId)}\n </span>\n </div>\n </div>\n );\n}","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { AnalyticsOptions, UserAction } from 'libs/analytics/interfaces';\n\nimport { VideoGuidanceTag } from 'libs/shared/components/video-guidance/tag/VideoGuidanceTag';\nimport { VideoTypes } from 'libs/shared/interfaces';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\nconst namespace = 'shared.interactivesTag';\n\ninterface InteractivesTagProps {\n video: VideoTypes;\n appLink: Core.AppLink;\n analyticsData: HashObject;\n analyticsOptions: AnalyticsOptions;\n}\n\nexport function InteractivesTag(props: InteractivesTagProps): JSX.Element {\n if (!props.video || VideoHelper.isInteractive(props.video))\n return <></>;\n\n const interactiveCount = props.video.interactives?.data?.length || 0;\n\n if (!interactiveCount)\n return <></>;\n\n return (\n <VideoGuidanceTag\n svgName={cvSvgLibrary.Interactive}\n iconVariant='green'\n text={LanguageService.getPhrase(namespace, 'interactives', { smartCount: interactiveCount })}\n appLink={props.appLink}\n appLinkAnalyticsData={{\n videoGuidanceType: 'interactive',\n videoGuidanceTotalItems: interactiveCount,\n ...props.analyticsData\n }}\n appLinkAnalyticsOptions={{\n actionType: UserAction.Click,\n entity: VideoHelper.getAnalyticsEntity(props.video),\n ...props.analyticsOptions\n }}\n />\n );\n}","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { AnalyticsOptions, UserAction } from 'libs/analytics/interfaces';\n\nimport { VideoGuidanceTag } from 'libs/shared/components/video-guidance/tag/VideoGuidanceTag';\nimport { VideoTypes } from 'libs/shared/interfaces';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\nconst namespace = 'shared.resourcesTag';\n\ninterface ResourcesTagProps {\n video: VideoTypes;\n appLink: Core.AppLink;\n analyticsData: HashObject;\n analyticsOptions: AnalyticsOptions;\n}\n\nexport function ResourcesTag(props: ResourcesTagProps): JSX.Element {\n if (!props.video || VideoHelper.isInteractive(props.video))\n return <></>;\n\n const resourceCount = props.video.resources?.data?.length || 0;\n\n if (!resourceCount)\n return <></>;\n\n return (\n <VideoGuidanceTag\n svgName={cvSvgLibrary.Resources}\n iconVariant='indigo'\n text={LanguageService.getPhrase(namespace, 'resources', { smartCount: resourceCount })}\n appLink={props.appLink}\n appLinkAnalyticsData={{\n videoGuidanceType: 'resource',\n videoGuidanceTotalItems: resourceCount,\n ...props.analyticsData\n }}\n appLinkAnalyticsOptions={{\n actionType: UserAction.Click,\n entity: VideoHelper.getAnalyticsEntity(props.video),\n ...props.analyticsOptions\n }}\n />\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"tag\":\"OjHQZ\",\"icon\":\"SS2zL\",\"active\":\"kD1xM\"};","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { AnalyticsOptions } from 'libs/analytics/interfaces';\n\nimport { SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\n\nimport { AppLink } from '../../app-link/AppLink';\n\nimport styles from './video-guidance-tag.scss';\n\ninterface VideoGuidanceTagProps {\n text: string;\n svgName: string;\n iconVariant: string;\n active?: boolean;\n appLink?: Core.AppLink;\n appLinkAnalyticsData?: HashObject;\n appLinkAnalyticsOptions?: AnalyticsOptions;\n}\n\nfunction ContainerWrapper(props: VideoGuidanceTagProps): JSX.Element {\n if (props.appLink) {\n return (\n <AppLink\n appLink={props.appLink}\n analyticsData={props.appLinkAnalyticsData}\n analyticsOptions={props.appLinkAnalyticsOptions}\n >\n <VideoGuidanceTag {...props} />\n </AppLink>\n );\n }\n\n return <VideoGuidanceTag {...props} />;\n}\n\nfunction VideoGuidanceTag(props: VideoGuidanceTagProps): JSX.Element {\n return (\n <div className={`p-1 pe-2 rounded-pill d-inline-flex align-items-center cursor-pointer ${styles.tag} ${props.active ? styles.active : ''}`}>\n <SvgContainer\n className={`${styles.icon} rounded-circle bg-${props.iconVariant} text-white`}\n svgName={props.svgName}\n />\n\n <span className='ps-1 text-nowrap user-select-none'>\n {props.text}\n </span>\n </div>\n );\n}\n\nexport { ContainerWrapper as VideoGuidanceTag };","import React from 'react';\nimport { Placement } from 'react-bootstrap/esm/types';\n\nimport { SvgContainer, SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\nimport { Tooltip } from 'libs/shared/components/tooltip/Tooltip';\nimport { VideoItemSize } from 'libs/shared/components/video-list/BaseVideoItemProps';\nimport { VideoTypes, YearGroup } from 'libs/shared/interfaces';\nimport { RestrictionHelper } from 'libs/shared/utils/RestrictionHelper';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\ninterface RestrictionPadlockProps {\n tooltip?: string;\n className?: string;\n tooltipPlacement?: Placement\n size?: VideoItemSize;\n video: VideoTypes;\n yearGroups: YearGroup[];\n}\n\nexport function RestrictionPadlock(props: RestrictionPadlockProps): JSX.Element {\n if (!props.yearGroups)\n return <></>;\n\n const title = RestrictionHelper.mapRestrictionToText(props.video._restrictions, props.yearGroups);\n const { canConsume } = VideoHelper.getCanBeConsumed(props.video);\n\n if (!canConsume || !title)\n return <></>;\n\n return (\n <Tooltip\n spanHack\n spanHackClassName={props.className || 'd-inline-block ps-1'}\n title={title}\n placement={props.tooltipPlacement || 'top'}\n >\n <SvgContainer\n svgName={cvSvgLibrary.Lock}\n size={props.size === 'sm' ? SvgContainerSize.Small : SvgContainerSize.Standard}\n />\n </Tooltip>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"hoverContainer\":\"TzWQw\",\"hovering\":\"gdTcW\"};","import React from 'react';\nimport { OutPortal } from 'react-reverse-portal';\n\nimport { PlayerInitializationData } from 'libs/shared/context/player-context/interfaces/PlayerContextAction';\nimport { usePlayerContext } from 'libs/shared/context/player-context/PlayerContext';\n\nimport styles from './global-player-consumer.scss';\n\ninterface GlobalPlayerConsumerOptions extends PlayerInitializationData {\n location?: 'popout-video' | 'play-page';\n}\n\nexport function GlobalPlayerConsumer(props: GlobalPlayerConsumerOptions): JSX.Element {\n const playerContext = usePlayerContext();\n\n playerContext.useInitialize?.(props);\n\n if (!playerContext.hasProvider)\n return <></>;\n\n if (playerContext.mode === 'picture-in-picture')\n return <></>;\n\n if (props.mode === 'hover' && playerContext.isOnPlayPage)\n return <></>;\n\n if (playerContext.mode === 'default' || props.location === 'play-page')\n return <OutPortal node={playerContext.portalNode} />;\n\n /**\n * When hovering, we don't want to show the player until the video has started playing.\n */\n const shouldShow = playerContext.started;\n\n let rounding = 'rounded-3';\n if (props.location === 'popout-video')\n rounding = 'rounded-top-3';\n\n const className = `${styles.hoverContainer} ${shouldShow ? styles.hovering : ''} ${rounding} overflow-hidden`;\n\n return (\n <div className={className}>\n <OutPortal node={playerContext.portalNode} />\n </div>\n );\n}","export enum ThumbnailTextPosition {\n Below = 1,\n Overlay = 2,\n Independent = 3\n}","export enum PlayPageAnchor {\n Resources = 'resources',\n Interactives = 'interactives'\n}"],"names":["AudienceLabel","props","audience","className","border","name","BadgeListContainer","children","CheckMarkStatus","CheckMarkButton","status","Complete","isComplete","setIsComplete","style","None","FunctionHelper","setStatus","DivButton","onClick","shouldComplete","newStatus","Incomplete","disabled","SvgContainer","svgName","defaultProps","MaskType","Mask","type","size","typeClass","Video","Playlist","getClassByType","svgType","getSvgType","defaults","ThumbnailText","video","appLink","subTextAppLink","canNavigate","VideoHelper","VideoSubText","subTextType","analyticsOptions","location","AppLink","RestrictionPadlock","yearGroups","getPhrase","LanguageService","FavouriteButton","alerts","initialState","isFavourite","setIsFavourite","setFavourite","canFavourite","shouldFavourite","error","analyticsData","VideoWatchProgressBar","progress","watchPercentage","duration","width","VideoThumbnailBottomBar","ThumbnailPadlock","svgSize","S","ThumbnailCompanyLogo","companyLogoFallbackUrl","company","productionCompanies","data","url","logo","Tooltip","title","spanHack","backgroundImage","VideoTypeBadge","TypeBadge","typeId","MasterType","getTitleClass","hovering","ExpandableVideoThumbnail","imageOptions","preload","hoverToPlay","canConsume","appLinkParams","ObjectHelper","params","eventAnalyticsOptions","entity","showFavouriteButton","isVideo","rating","delay","thumbnailHoverRef","showThumbnailPreviewVideo","spanHackClassName","ref","BaseImage","imageType","alt","series","id","actionType","descriptor","ImageFallback","Badge","hasSubtitle","hasInteractives","GlobalPlayerConsumer","key","objectId","objectTypeId","mode","context","contextId","moviesAndTv","mtv","VideoThumbnailBadges","showAudience","showRating","hideRating","hideDuration","newDurationStyle","PopoutVideo","isHovering","getGuidanceAppLink","scrollToPosition","scrollTo","cleanPortalNode","extraClasses","hideTitle","showVideoGuidance","InteractivesTag","PlayPageAnchor","ResourcesTag","PopoutVideoThumbnail","HoverToPortalContainer","hoverableComponent","componentProps","fixedHoverWidth","minHoverWidth","VideoThumbnailActions","setCheckMarkStatus","hasActions","checkMarkStatus","textPosition","textIsOverlayed","ThumbnailTextPosition","StaticVideoThumbnail","hoverRef","hoverIntentRef","isHoveringIntentionally","showMask","hideMask","tooltip","showSignIn","r","current","imageClassName","getThumbnailClass","VideoThumbnail","getIcon","getColourClass","CurationStatus","baseClasses","getText","namespace","interactiveCount","interactives","length","iconVariant","text","smartCount","appLinkAnalyticsData","videoGuidanceType","videoGuidanceTotalItems","appLinkAnalyticsOptions","resourceCount","resources","ContainerWrapper","VideoGuidanceTag","active","_restrictions","placement","tooltipPlacement","playerContext","useInitialize","hasProvider","isOnPlayPage","node","portalNode","shouldShow","started","rounding"],"sourceRoot":""}
|
|
1
|
+
{"version":3,"file":"scripts/2355-c588dc3ce2-lite.chunk.js","mappings":"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","sources":["file:///app/packages/libs/shared/src/components/audience-label/AudienceLabel.tsx","file:///app/packages/libs/shared/src/components/badges/BadgeListContainer.tsx","file:///app/packages/libs/shared/src/components/check-mark-button/check-mark-button.scss","file:///app/packages/libs/shared/src/components/check-mark-button/CheckMarkButton.tsx","file:///app/packages/libs/shared/src/components/mask/mask.scss","file:///app/packages/libs/shared/src/components/mask/Mask.tsx","file:///app/packages/libs/shared/src/components/thumbnails/thumbnail-text/thumbnail-text.scss","file:///app/packages/libs/shared/src/components/thumbnails/thumbnail-text/ThumbnailText.tsx","file:///app/packages/libs/shared/src/components/favourite-button/favourite-button.scss","file:///app/packages/libs/shared/src/components/favourite-button/FavouriteButton.tsx","file:///app/packages/libs/shared/src/components/thumbnails/bottom-bar/videos/VideoWatchProgressBar.tsx","file:///app/packages/libs/shared/src/components/thumbnails/bottom-bar/video-thumbnail-bottom-bar.scss","file:///app/packages/libs/shared/src/components/thumbnails/bottom-bar/VideoThumbnailBottomBar.tsx","file:///app/packages/libs/shared/src/components/thumbnails/thumbnail-actions/padlock/thumbnail-padlock.scss","file:///app/packages/libs/shared/src/components/thumbnails/thumbnail-actions/padlock/ThumbnailPadlock.tsx","file:///app/packages/libs/shared/src/components/thumbnails/thumbnail-company/thumbnail-company-logo.scss","file:///app/packages/libs/shared/src/components/thumbnails/thumbnail-company/ThumbnailCompanyLogo.tsx","file:///app/packages/libs/shared/src/components/video-type-badge/VideoTypeBadge.tsx","file:///app/packages/libs/shared/src/components/thumbnails/video/expandable/expandable-video-thumbnail.scss","file:///app/packages/libs/shared/src/components/thumbnails/video/expandable/ExpandableVideoThumbnail.tsx","file:///app/packages/libs/shared/src/components/thumbnails/thumbnail-badges/video-thumbnail-badges.scss","file:///app/packages/libs/shared/src/components/thumbnails/thumbnail-badges/VideoThumbnailBadges.tsx","file:///app/packages/libs/shared/src/components/thumbnails/video/popout/popout-video-thumbnail.scss","file:///app/packages/libs/shared/src/components/thumbnails/video/popout/PopoutVideoThumbnail.tsx","file:///app/packages/libs/shared/src/components/thumbnails/thumbnail-actions/video-thumbnail-actions.scss","file:///app/packages/libs/shared/src/components/thumbnails/thumbnail-actions/VideoThumbnailActions.tsx","file:///app/packages/libs/shared/src/components/thumbnails/video/static/static-video-thumbnail.scss","file:///app/packages/libs/shared/src/components/thumbnails/video/static/StaticVideoThumbnail.tsx","file:///app/packages/libs/shared/src/components/thumbnails/video/VideoThumbnail.tsx","file:///app/packages/libs/shared/src/components/type-badge/type-badge.scss","file:///app/packages/libs/shared/src/components/type-badge/TypeBadge.tsx","file:///app/packages/libs/shared/src/components/video-guidance/interactives/InteractivesTag.tsx","file:///app/packages/libs/shared/src/components/video-guidance/resources/ResourcesTag.tsx","file:///app/packages/libs/shared/src/components/video-guidance/tag/video-guidance-tag.scss","file:///app/packages/libs/shared/src/components/video-guidance/tag/VideoGuidanceTag.tsx","file:///app/packages/libs/shared/src/components/video-list/components/restriction-padlock/RestrictionPadlock.tsx","file:///app/packages/libs/shared/src/context/player-context/components/global-player-consumer.scss","file:///app/packages/libs/shared/src/context/player-context/components/GlobalPlayerConsumer.tsx","file:///app/packages/libs/shared/src/enums/ThumbnailTextPosition.ts","file:///app/packages/libs/shared/src/interfaces/PlayPageAnchor.ts"],"sourcesContent":["import * as React from 'react';\n\nimport { Audience } from 'libs/shared/interfaces';\n\nimport styles from './audience-label.scss';\n\ntype AudienceBorderColour = 'dark' | 'white';\n\ninterface AudienceLabelProps {\n audience: Audience;\n border: AudienceBorderColour;\n className?: string;\n}\n\nexport function AudienceLabel(props: AudienceLabelProps): JSX.Element {\n if (!props.audience)\n return <></>;\n\n // Note: the audience-label class is applied so that parent components can override styling, and Online can style this component\n return (\n <div\n className={`audience-label border rounded-pill d-inline-block px-2 text-nowrap \n ${'border-' + props.border} ${props.className ? props.className : ''}`}\n >\n {props.audience.name}\n </div>\n );\n}\n\ninterface AudienceLabelListProps {\n audiences: Audience[];\n border: AudienceBorderColour;\n}\n\nexport function AudienceLabelList(props: AudienceLabelListProps): JSX.Element {\n if (!props.audiences || !props.audiences.length)\n return <></>;\n\n return (\n <>\n {props.audiences.map((a, idx) => (\n <span key={idx} className={styles.audienceLabelListItem}>\n <AudienceLabel audience={a} border={props.border} />\n </span>\n ))}\n </>\n );\n}","import * as React from 'react';\n\nimport styles from './badge.scss';\n\ninterface BadgeListContainerProps {\n className?: string;\n}\n\nexport function BadgeListContainer(props: React.PropsWithChildren<BadgeListContainerProps>): JSX.Element {\n let className = `d-flex align-items-center badge-list ${styles.minHeight}`;\n\n if (props.className)\n className += ` ${props.className}`;\n\n return (\n <div className={className}>\n {props.children}\n </div>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"unchecked\":\"bup9I\",\"outline\":\"ealw_\",\"checked\":\"A1Ov0\",\"checkMark\":\"c14lI\"};","import React from 'react';\n\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\n\nimport { SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport { DivButton } from '../div-button/DivButton';\n\nimport styles from './check-mark-button.scss';\n\nexport enum CheckMarkStatus {\n None = 'None',\n Complete = 'Complete',\n Incomplete = 'Incomplete'\n}\n\nexport type SetCheckMarkStatusFunc = (status: CheckMarkStatus) => Promise<void>;\n\ninterface CheckMarkButtonProps {\n setStatus: SetCheckMarkStatusFunc;\n status: CheckMarkStatus;\n style?: 'outline' | 'filled';\n className?: string;\n disabled?: boolean;\n}\n\nCheckMarkButton.defaultProps = {\n style: 'filled'\n};\n\nexport function CheckMarkButton(props: CheckMarkButtonProps): JSX.Element {\n // Use local state so that changes are reflected immediately.\n const [ isComplete, setIsComplete ] = React.useState(props.status === CheckMarkStatus.Complete);\n\n React.useEffect(() => {\n setIsComplete(props.status === CheckMarkStatus.Complete);\n }, [props.status]);\n\n let className = `cursor-pointer rounded-circle ${isComplete ? styles.checked : styles.unchecked}`;\n\n if (props.className)\n className += ` ${props.className}`;\n\n if (props.style === 'outline')\n className += ` ${styles.outline}`;\n\n function shouldRender(): boolean {\n return (\n !!props.status &&\n props.status !== CheckMarkStatus.None &&\n FunctionHelper.isFunction(props.setStatus)\n );\n }\n\n function onClick(): void {\n const shouldComplete = !isComplete;\n\n setIsComplete(shouldComplete);\n\n const newStatus = shouldComplete ? CheckMarkStatus.Complete : CheckMarkStatus.Incomplete;\n\n props.setStatus(newStatus).catch(() => {\n setIsComplete(!shouldComplete);\n });\n }\n\n if (!shouldRender())\n return <></>;\n\n return (\n <DivButton className={className} onClick={onClick} disabled={props.disabled}>\n <SvgContainer\n svgName={cvSvgLibrary.Check}\n className={`svg-container ${styles.checkMark}`}\n />\n </DivButton>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"mask\":\"qpc7L\",\"small\":\"L8Oxs\",\"video\":\"b8kJW\",\"playlist\":\"eo2p2\",\"maskContainer\":\"lpwag\"};","import * as React from 'react';\n\nimport { SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport styles from './mask.scss';\n\nexport enum MaskType {\n Video,\n Playlist,\n Series\n}\n\nfunction getClassByType(type: MaskType): string {\n if (type === MaskType.Video)\n return styles.video;\n\n if (type === MaskType.Playlist)\n return styles.playlist;\n\n return '';\n}\n\nfunction getSvgType(type: MaskType): string {\n if (type === MaskType.Video)\n return cvSvgLibrary.PlayCircle;\n\n return '';\n}\n\ntype MaskSize = 'sm' | 'md';\n\ninterface MaskProps {\n type: MaskType;\n size?: MaskSize;\n}\n\nMask.defaults = {\n size: 'md'\n};\n\nexport function Mask(props: MaskProps): JSX.Element {\n const { type, size } = props;\n\n const typeClass = getClassByType(type);\n const svgType = getSvgType(type);\n\n return (\n <div className={`${styles.maskContainer} ${size === 'sm' ? styles.small : ''}`}>\n <div className={ styles.mask }></div>\n <SvgContainer svgName={svgType} className={ typeClass } />\n </div>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"container\":\"r70GR\",\"titleContainer\":\"rULXI\",\"seriesTitleBox\":\"h9k1p\",\"badgeContainer\":\"QaDDX\",\"audienceBadge\":\"hvsne\"};","import React from 'react';\n\nimport { LocationContext } from 'libs/analytics/interfaces';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { PopoutVideoThumbnailProps } from 'libs/shared/components/thumbnails/video/VideoThumbnail';\nimport { RestrictionPadlock } from 'libs/shared/components/video-list/components/restriction-padlock/RestrictionPadlock';\nimport { VideoSubText } from 'libs/shared/components/video-sub-text/VideoSubText';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\nimport styles from './thumbnail-text.scss';\n\ntype VideoThumbnailTextProps = Pick<PopoutVideoThumbnailProps, 'video'|'appLink'|'subTextAppLink'|'yearGroups'|'subTextType'>\n\nexport function ThumbnailText(props: VideoThumbnailTextProps): JSX.Element {\n const { video, appLink, subTextAppLink } = props;\n const { canNavigate } = VideoHelper.getCanBeConsumed(video);\n\n return (\n <div className={`mt-2 ${styles.container}`}>\n <div className={`d-flex flex-column ${styles.titleContainer}`}>\n {VideoHelper.isVideo(video) && (\n <VideoSubText\n type={props.subTextType}\n className={`text-truncate ${styles.seriesTitleBox}`}\n video={video}\n appLink={subTextAppLink}\n analyticsOptions={{ location: LocationContext.VideoThumbnail }}\n />\n )}\n \n <AppLink className='h6 text-reset clamp-2 align-middle' appLink={canNavigate ? appLink : null}>\n {video.name}\n <RestrictionPadlock\n video={props.video}\n yearGroups={props.yearGroups}\n size='sm'\n />\n </AppLink>\n </div>\n </div>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"favourited\":\"t0svX\",\"favouriteButton\":\"CFRo3\",\"heart\":\"ZMMQu\",\"heartOutline\":\"truFo\"};","import * as React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\nimport { HashObject } from 'libs/common/react/interfaces/HashObject';\n\nimport { AnalyticsOptions } from 'libs/analytics/interfaces/AnalyticsTypes';\n\nimport { DivButton } from 'libs/shared/components/div-button/DivButton';\nimport { SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\nimport { useAlerts } from 'libs/shared/hooks/UseAlerts';\nimport { CanFavouriteFunc, FavouriteFunc, VideoTypes } from 'libs/shared/interfaces';\nimport { FavouriteHelper } from 'libs/shared/utils/FavouriteHelpers';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\nimport styles from './favourite-button.scss';\n\nconst namespace = 'shared.favouriteButton';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface FavouriteButtonProps {\n video: VideoTypes;\n setFavourite: FavouriteFunc;\n canFavourite: CanFavouriteFunc;\n className?: string;\n analyticsData?: HashObject,\n analyticsOptions?: AnalyticsOptions\n}\n\nexport function FavouriteButton(props: FavouriteButtonProps): JSX.Element {\n const alerts = useAlerts();\n\n const initialState = FavouriteHelper.isFavouritedByCurrentUser(props.video);\n\n // Use local state so that changes are reflected immediately.\n const [ isFavourite, setIsFavourite ] = React.useState(initialState);\n\n React.useEffect(() => {\n setIsFavourite(initialState);\n }, [initialState]);\n\n const flexClasses = 'd-flex align-items-center justify-content-center';\n let className = `${flexClasses} cursor-pointer ${styles.favouriteButton} ${isFavourite ? styles.favourited : ''}`;\n\n if (props.className)\n className += ` ${props.className}`;\n\n function onClick(): void {\n const shouldFavourite = !isFavourite;\n\n function onError(): void {\n function getErrorPhraseKey(): string {\n if (VideoHelper.isClip(props.video))\n return shouldFavourite ? 'favouriteClipError' : 'unfavouriteClipError';\n\n if (VideoHelper.isInteractive(props.video))\n return shouldFavourite ? 'favouriteInteractiveError' : 'unfavouriteInteractiveError';\n\n return shouldFavourite ? 'favouriteVideoError' : 'unfavouriteVideoError';\n }\n\n alerts.error(getPhrase(getErrorPhraseKey()));\n setIsFavourite(!shouldFavourite);\n }\n\n setIsFavourite(shouldFavourite);\n props.setFavourite(props.video, shouldFavourite, null, onError, props.analyticsData, props.analyticsOptions);\n }\n\n if (!FunctionHelper.isFunction(props.setFavourite) || !FunctionHelper.isFunction(props.canFavourite))\n return <></>;\n\n // Don't render until we know the state of isFavourite\n if (!props.canFavourite(props.video))\n return <></>;\n\n return (\n <DivButton className={className} onClick={onClick}>\n {/* We have the two svgs because they get swapped out on hover by the styles */}\n <SvgContainer\n svgName={cvSvgLibrary.Heart}\n className={`svg-container ${styles.heart}`}\n />\n <SvgContainer\n svgName={cvSvgLibrary.HeartOutline}\n className={`svg-container ${styles.heartOutline}`}\n />\n </DivButton>\n );\n}","import * as React from 'react';\n\nimport { Video } from 'libs/shared/interfaces';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\ninterface VideoWatchProgressBarProps {\n video: Video;\n}\n\nexport function VideoWatchProgressBar(props: VideoWatchProgressBarProps): JSX.Element {\n const progress = VideoHelper.getVideoProgress(props.video);\n\n const watchPercentage = progress && props.video.duration\n && progress / props.video.duration * 100000;\n\n if (!watchPercentage)\n return <></>;\n\n return <div className='bg-primary h-100' style={{ width: `${watchPercentage}%` }} />;\n}","// extracted by mini-css-extract-plugin\nexport default {\"bottomBar\":\"YnXtZ\"};","import React from 'react';\n\nimport { VideoTypes } from 'libs/shared/interfaces';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\nimport { VideoWatchProgressBar } from './videos/VideoWatchProgressBar';\n\nimport styles from './video-thumbnail-bottom-bar.scss';\n\ninterface VideoThumbnailBottomBarProps {\n video: VideoTypes;\n}\n\nexport function VideoThumbnailBottomBar(props: VideoThumbnailBottomBarProps): JSX.Element {\n if (!VideoHelper.isVideo(props.video)) {\n return <></>;\n }\n\n return (\n <div className={styles.bottomBar}>\n <VideoWatchProgressBar video={props.video} />\n </div>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"padlock\":\"w4cg8\",\"sm\":\"JpIYd\"};","import React from 'react';\n\nimport { SvgContainer, SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\nimport { VideoItemSize } from 'libs/shared/components/video-list/BaseVideoItemProps';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport styles from './thumbnail-padlock.scss';\n\ninterface ThumbnailPadlockProps {\n size?: VideoItemSize;\n}\n\nexport function ThumbnailPadlock(props: ThumbnailPadlockProps): JSX.Element {\n const svgSize = props.size === 'sm' ? SvgContainerSize.Small : SvgContainerSize.Standard;\n\n return (\n <div className={`${styles.padlock} ${props.size === 'sm' ? styles.sm : ''} bg-white cursor-default d-flex align-items-center justify-content-center`}>\n <SvgContainer svgName={cvSvgLibrary.Lock} size={svgSize} />\n </div>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"topLeftContainer\":\"ia0ry\",\"logo\":\"OA9ft\",\"sm\":\"fyo2J\"};","import React from 'react';\n\nimport { VideoItemSize } from 'libs/shared/components/video-list/BaseVideoItemProps';\nimport { VideoTypes } from 'libs/shared/interfaces';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\nimport { Tooltip } from '../../tooltip/Tooltip';\n\nimport styles from './thumbnail-company-logo.scss';\n\ninterface ThumbnailCompanyLogoProps {\n companyLogoFallbackUrl: string;\n video: VideoTypes;\n size?: VideoItemSize;\n}\n\nThumbnailCompanyLogo.defaultProps = {\n size: 'md'\n};\n\nexport function ThumbnailCompanyLogo(props: ThumbnailCompanyLogoProps): JSX.Element {\n if (!VideoHelper.isVideo(props.video) || !props.companyLogoFallbackUrl)\n return <></>;\n\n const company = props.video.productionCompanies?.data?.[0];\n const url = company?.logo?.url ?? props.companyLogoFallbackUrl;\n\n if (!url)\n return <></>;\n\n return (\n <div className={styles.topLeftContainer}>\n <Tooltip\n title={company?.name}\n spanHack\n >\n <div\n className={`${styles.logo} ${props.size === 'sm' ? styles.sm : ''}`}\n style={{\n backgroundImage: `url(${url})`\n }}\n />\n </Tooltip>\n </div>\n );\n}","import React from 'react';\n\nimport { VideoItemSize } from 'libs/shared/components/video-list/BaseVideoItemProps';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { VideoTypes } from 'libs/shared/interfaces/VideoTypes';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\nimport { TypeBadge } from '../type-badge/TypeBadge';\n\ninterface VideoTypeBadgeProps {\n video: VideoTypes;\n size?: VideoItemSize;\n}\n\nVideoTypeBadge.default = {\n size: 'md'\n};\n\nexport function VideoTypeBadge(props: VideoTypeBadgeProps): JSX.Element {\n if (VideoHelper.isClip(props.video))\n return <TypeBadge typeId={MasterType.Clip} size={props.size} />;\n\n if (VideoHelper.isInteractive(props.video))\n return <TypeBadge typeId={MasterType.Interactive} status={props.video.status} size={props.size} />;\n\n return <></>;\n}","// extracted by mini-css-extract-plugin\nexport default {\"overlayContainer\":\"qu3A3\",\"topRightContainer\":\"XAfZW\",\"overlay\":\"NTrtm\",\"downScale\":\"puKcM\",\"title\":\"_6FukN\",\"gradient\":\"rXzR8\",\"playIcon\":\"dndOA\",\"videoProgress\":\"yhWf4\",\"badgeContainer\":\"AtgmC\",\"clipProgress\":\"E2egN\",\"interactiveProgress\":\"WycwR\"};","import React from 'react';\n\nimport { HashObject } from 'libs/common/react/interfaces';\nimport { ObjectHelper } from 'libs/common/react/utils/ObjectHelper';\n\nimport { ClickDescriptor, UserAction } from 'libs/analytics/interfaces';\n\nimport { Badge, BadgeType } from 'libs/shared/components/badges/Badge';\nimport { BadgeListContainer } from 'libs/shared/components/badges/BadgeListContainer';\nimport { FavouriteButton } from 'libs/shared/components/favourite-button/FavouriteButton';\nimport { BaseImage } from 'libs/shared/components/image/BaseImage';\nimport { ImageFallback, ImageFallbackType } from 'libs/shared/components/image/ImageFallback';\nimport { SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\nimport { VideoThumbnailBottomBar } from 'libs/shared/components/thumbnails/bottom-bar/VideoThumbnailBottomBar';\nimport { ThumbnailPadlock } from 'libs/shared/components/thumbnails/thumbnail-actions/padlock/ThumbnailPadlock';\nimport { ThumbnailCompanyLogo } from 'libs/shared/components/thumbnails/thumbnail-company/ThumbnailCompanyLogo';\nimport { ExpandableVideoThumbnailProps } from 'libs/shared/components/thumbnails/video/VideoThumbnail';\nimport { Tooltip } from 'libs/shared/components/tooltip/Tooltip';\nimport { VideoSubText } from 'libs/shared/components/video-sub-text/VideoSubText';\nimport { VideoTypeBadge } from 'libs/shared/components/video-type-badge/VideoTypeBadge';\nimport { GlobalPlayerConsumer } from 'libs/shared/context/player-context/components/GlobalPlayerConsumer';\nimport { ImageType } from 'libs/shared/enums/Images';\nimport { useHoverIntent } from 'libs/shared/hooks/UseHover';\nimport { FavouriteHelper } from 'libs/shared/utils/FavouriteHelpers';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\nimport styles from './expandable-video-thumbnail.scss';\n\nfunction getTitleClass(hovering: boolean): string {\n let className = 'mb-1';\n\n if (hovering) {\n className += styles.downScale;\n }\n \n return className;\n}\n\nexport function ExpandableVideoThumbnail(props: ExpandableVideoThumbnailProps): JSX.Element {\n const {\n video, appLink, imageOptions, setFavourite, canFavourite,\n preload, hovering, hoverToPlay, companyLogoFallbackUrl\n } = props;\n const { canNavigate, canConsume } = VideoHelper.getCanBeConsumed(props.video);\n\n const appLinkParams = ObjectHelper.isObject(appLink?.params) ? appLink?.params as HashObject : {};\n\n const eventAnalyticsOptions = {\n ...props.analyticsOptions,\n entity: VideoHelper.getAnalyticsEntity(video)\n };\n\n const showFavouriteButton = FavouriteHelper.showFavouriteButton(props.video, hovering);\n const isVideo = VideoHelper.isVideo(video);\n\n const rating = VideoHelper.getRating(props.video);\n\n const [ thumbnailHoverRef, isThumbnailHovering ] = useHoverIntent<HTMLDivElement>({ delay: 100 });\n\n const showThumbnailPreviewVideo = isThumbnailHovering && canConsume && hoverToPlay;\n\n return (\n <Tooltip title={VideoHelper.getPrivacyReasoning(props.video)} spanHack spanHackClassName=''>\n <div className='position-relative rounded-3 overflow-hidden' ref={thumbnailHoverRef}>\n {showFavouriteButton &&\n <div className={styles.topRightContainer}>\n <FavouriteButton\n setFavourite={setFavourite}\n canFavourite={canFavourite}\n video={video}\n analyticsData={props.analyticsData}\n analyticsOptions={eventAnalyticsOptions}\n />\n </div>\n }\n\n {!canNavigate && (\n <div className={styles.topRightContainer}>\n <ThumbnailPadlock />\n </div>\n )}\n \n <VideoTypeBadge video={video} />\n <ThumbnailCompanyLogo video={video} companyLogoFallbackUrl={companyLogoFallbackUrl} />\n\n <BaseImage\n data={VideoHelper.getThumbnail(video)}\n appLink={canNavigate ? appLink : null}\n imageType={ImageType.Thumbnails}\n imageOptions={imageOptions}\n preload={preload}\n className={styles.gradient}\n alt={('series' in video && video.series?.name ? `${video.series.name}: ` : '') + video.name}\n analyticsData={{\n ...props.analyticsData,\n id: video.id,\n name: video.name\n }}\n analyticsOptions={{\n ...eventAnalyticsOptions,\n actionType: UserAction.Click,\n descriptor: ClickDescriptor.Thumbnail\n }}\n >\n {!!(hovering && canNavigate) && (\n <SvgContainer className={styles.playIcon} svgName={cvSvgLibrary.PlayCircle} />\n )}\n\n <ImageFallback type={ImageFallbackType.Video} />\n <div className={styles.overlayContainer}>\n <div className={styles.overlay}>\n <div className={`${getTitleClass(hovering)} ${styles.title}`}>\n {isVideo && (\n <VideoSubText\n type={props.subTextType}\n className='text-shadow clamp-1'\n video={video}\n appLink={null}\n analyticsOptions={null}\n />\n )}\n\n <span className='h6 text-reset text-shadow clamp-1'>\n {VideoHelper.getTitle(video)}\n </span>\n </div>\n\n <VideoThumbnailBottomBar video={video} />\n\n {hovering && (\n <BadgeListContainer className='mt-1'>\n {VideoHelper.isVideo(video) && (\n <>\n <Badge\n type={BadgeType.Rating}\n data={rating}\n />\n {video.hasSubtitle && (\n <span className='badge p-0'>\n <SvgContainer svgName={cvSvgLibrary.CloseCaptionBadge} />\n </span>\n )}\n <Badge\n type={BadgeType.Interactive}\n data={video.hasInteractives}\n />\n <Badge\n type={BadgeType.DurationExact}\n data={VideoHelper.getDuration(props.video)}\n />\n </>\n )}\n </BadgeListContainer>\n )}\n </div>\n </div>\n </BaseImage>\n {showThumbnailPreviewVideo &&\n <GlobalPlayerConsumer\n key={props.video.id}\n objectId={props.video.id}\n objectTypeId={props.video.typeId}\n mode='hover'\n context={appLinkParams.context}\n contextId={appLinkParams.contextId}\n moviesAndTv={appLinkParams.mtv}\n />\n }\n </div>\n </Tooltip>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"badgeContainer\":\"fy9Un\",\"sm\":\"Rb0TL\"};","import React from 'react';\n\nimport { AudienceLabel } from 'libs/shared/components/audience-label/AudienceLabel';\nimport { Badge, BadgeType } from 'libs/shared/components/badges/Badge';\nimport { BadgeListContainer } from 'libs/shared/components/badges/BadgeListContainer';\nimport { VideoItemSize } from 'libs/shared/components/video-list/BaseVideoItemProps';\nimport { Audience, Video } from 'libs/shared/interfaces';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\nimport styles from './video-thumbnail-badges.scss';\n\ninterface VideoThumbnailBadgesProps {\n video?: Video;\n audience?: Audience;\n hideRating?: boolean;\n hideDuration?: boolean;\n newDurationStyle?: boolean;\n size?: VideoItemSize;\n duration?: number;\n}\n\nVideoThumbnailBadges.defaultProps = {\n newDurationStyle: true,\n size: 'md'\n};\n\nexport function VideoThumbnailBadges(props: VideoThumbnailBadgesProps): JSX.Element {\n const rating = VideoHelper.getRating(props.video);\n\n const showAudience = !!props.audience && props.size !== 'sm';\n const showRating = !showAudience && !props.hideRating && !!rating && props.size !== 'sm';\n\n if (props.hideDuration && !showAudience && !showRating)\n return <></>;\n\n return (\n <BadgeListContainer className={`${styles.badgeContainer} ${props.size === 'sm' ? styles.sm : ''}`}>\n {showAudience && (\n <AudienceLabel\n audience={props.audience}\n className='bg-white text-dark'\n border='dark'\n />\n )}\n {showRating && (\n <Badge\n type={BadgeType.Rating}\n data={rating}\n />\n )}\n {!props.hideDuration && (\n <Badge\n type={props.newDurationStyle ? BadgeType.DurationApproximate : BadgeType.DurationExact}\n data={props.duration || VideoHelper.getDuration(props.video)}\n />\n )}\n </BadgeListContainer>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"preview\":\"whbhf\",\"details\":\"vMaXP\",\"isHovering\":\"tR1jA\",\"videoGuidanceTags\":\"KJrT1\",\"dropdown\":\"oZXV7\",\"show\":\"EiQ04\",\"topRightContainer\":\"FAuzc\"};","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { HashObject } from 'libs/common/react/interfaces';\nimport { ObjectHelper } from 'libs/common/react/utils/ObjectHelper';\n\nimport { ClickDescriptor, UserAction } from 'libs/analytics/interfaces';\n\nimport { FavouriteButton } from 'libs/shared/components/favourite-button/FavouriteButton';\nimport { HoverableProps, HoverToPortalContainer } from 'libs/shared/components/hover-to-portal-container/HoverToPortalContainer';\nimport { BaseImage } from 'libs/shared/components/image/BaseImage';\nimport { ImageFallback, ImageFallbackType } from 'libs/shared/components/image/ImageFallback';\nimport { VideoThumbnailBottomBar } from 'libs/shared/components/thumbnails/bottom-bar/VideoThumbnailBottomBar';\nimport { ThumbnailPadlock } from 'libs/shared/components/thumbnails/thumbnail-actions/padlock/ThumbnailPadlock';\nimport { VideoThumbnailBadges } from 'libs/shared/components/thumbnails/thumbnail-badges/VideoThumbnailBadges';\nimport { ThumbnailText } from 'libs/shared/components/thumbnails/thumbnail-text/ThumbnailText';\nimport { PopoutVideoThumbnailProps } from 'libs/shared/components/thumbnails/video/VideoThumbnail';\nimport { Tooltip } from 'libs/shared/components/tooltip/Tooltip';\nimport { InteractivesTag } from 'libs/shared/components/video-guidance/interactives/InteractivesTag';\nimport { ResourcesTag } from 'libs/shared/components/video-guidance/resources/ResourcesTag';\nimport { VideoTypeBadge } from 'libs/shared/components/video-type-badge/VideoTypeBadge';\nimport { GlobalPlayerConsumer } from 'libs/shared/context/player-context/components/GlobalPlayerConsumer';\nimport { ImageType } from 'libs/shared/enums/Images';\nimport { PlayPageAnchor } from 'libs/shared/interfaces/PlayPageAnchor';\nimport { FavouriteHelper } from 'libs/shared/utils/FavouriteHelpers';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\nimport { ThumbnailCompanyLogo } from '../../thumbnail-company/ThumbnailCompanyLogo';\n\nimport styles from './popout-video-thumbnail.scss';\n\ntype PopoutVideoProps = HoverableProps & PopoutVideoThumbnailProps;\n\nconst PopoutVideo = (props: PopoutVideoProps): JSX.Element => {\n const {\n video, appLink, imageOptions, preload, setFavourite, canFavourite,\n isHovering, hoverToPlay, companyLogoFallbackUrl\n } = props;\n const appLinkParams = ObjectHelper.isObject(appLink?.params) ? appLink?.params as HashObject : {};\n const { canNavigate, canConsume } = VideoHelper.getCanBeConsumed(video);\n\n React.useEffect(() => {\n return () => {\n props.cleanPortalNode?.();\n };\n }, []);\n\n function getGuidanceAppLink(scrollToPosition: PlayPageAnchor): Core.AppLink {\n return {\n ...appLink,\n params: {\n ...appLinkParams,\n scrollTo: scrollToPosition\n }\n };\n }\n\n let className = 'position-relative bg-white';\n\n if (props.extraClasses)\n className += ` ${props.extraClasses}`;\n if (isHovering)\n className += ` rounded-3 shadow-lg`;\n \n const eventAnalyticsOptions = {\n ...props.analyticsOptions,\n entity: VideoHelper.getAnalyticsEntity(video)\n };\n\n const showThumbnailPreviewVideo = props.isHovering && canConsume && hoverToPlay;\n const showFavouriteButton = FavouriteHelper.showFavouriteButton(props.video, isHovering);\n\n return (\n <div className={className}>\n {showFavouriteButton && (\n <div className={styles.topRightContainer}>\n <FavouriteButton\n setFavourite={setFavourite}\n canFavourite={canFavourite}\n video={video}\n analyticsData={props.analyticsData}\n analyticsOptions={eventAnalyticsOptions}\n />\n </div>\n )}\n\n {!canNavigate && (\n <div className={styles.topRightContainer}>\n <Tooltip title={VideoHelper.getPrivacyReasoning(props.video)} spanHack spanHackClassName=''>\n <ThumbnailPadlock />\n </Tooltip>\n </div>\n )}\n\n <div className='position-relative'>\n <BaseImage\n onClick={() => props.cleanPortalNode?.()}\n data={VideoHelper.getThumbnail(video)}\n appLink={canNavigate ? appLink : null}\n imageType={ImageType.Thumbnails}\n imageOptions={imageOptions}\n preload={preload}\n className={`overflow-hidden ${isHovering ? styles.preview : `rounded-3 ${styles.original}`}`}\n alt={('series' in video && video.series?.name ? `${video.series.name}: ` : '') + video.name}\n analyticsData={{\n ...props.analyticsData,\n id: video.id,\n name: video.name\n }}\n analyticsOptions={{\n ...eventAnalyticsOptions,\n actionType: UserAction.Click,\n descriptor: ClickDescriptor.Thumbnail\n }}\n >\n <ImageFallback type={ImageFallbackType.Video} />\n\n <VideoThumbnailBottomBar video={video} />\n \n <div className='p-absolute w-100 h-100 text-white'>\n <VideoTypeBadge video={video} />\n <ThumbnailCompanyLogo video={video} companyLogoFallbackUrl={companyLogoFallbackUrl} />\n\n <VideoThumbnailBadges\n video={props.video}\n audience={props.audience}\n hideRating={props.hideRating}\n hideDuration={props.hideDuration}\n />\n </div>\n </BaseImage>\n {showThumbnailPreviewVideo &&\n <GlobalPlayerConsumer\n key={props.video.id}\n objectId={props.video.id}\n objectTypeId={props.video.typeId}\n mode='hover'\n context={appLinkParams.context}\n contextId={appLinkParams.contextId}\n moviesAndTv={appLinkParams.mtv}\n location='popout-video'\n />\n }\n </div>\n\n {!isHovering && !props.hideTitle && (\n <ThumbnailText {...props}/>\n )}\n \n <div className={`${styles.details} ${isHovering ? `${styles.isHovering} box-shadow` : ''}`}>\n {isHovering && (\n <>\n <div className={`${isHovering ? styles.videoGuidanceTags : ''}`}>\n <ThumbnailText {...props}/>\n\n {(props.showVideoGuidance && isHovering) && (\n <div className={`d-flex justify-content-start align-items-center pt-2`}>\n <InteractivesTag\n video={props.video}\n appLink={getGuidanceAppLink(PlayPageAnchor.Interactives)}\n analyticsData={props.analyticsData}\n analyticsOptions={props.analyticsOptions}\n />\n <ResourcesTag\n video={props.video}\n appLink={getGuidanceAppLink(PlayPageAnchor.Resources)}\n analyticsData={props.analyticsData}\n analyticsOptions={props.analyticsOptions}\n />\n </div>\n )}\n </div>\n </>\n )}\n </div>\n </div>\n );\n};\n\n\nexport function PopoutVideoThumbnail(props: PopoutVideoThumbnailProps): JSX.Element {\n return (\n <>\n <HoverToPortalContainer<PopoutVideoThumbnailProps>\n hoverableComponent={PopoutVideo}\n componentProps={props}\n fixedHoverWidth={400}\n minHoverWidth={400}\n analyticsData={{\n ...props.analyticsData,\n id: props.video.id,\n name: props.video.name\n }}\n analyticsOptions={{\n ...props.analyticsOptions,\n entity: VideoHelper.getAnalyticsEntity(props.video)\n }}\n />\n </>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"container\":\"efxnE\",\"cvIcon\":\"OJ_ZQ\",\"action\":\"vWvGn\"};","import React from 'react';\n\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { AnalyticsOptions } from 'libs/analytics/interfaces/AnalyticsTypes';\n\nimport { CheckMarkButton, CheckMarkStatus, SetCheckMarkStatusFunc } from 'libs/shared/components/check-mark-button/CheckMarkButton';\nimport { FavouriteButton } from 'libs/shared/components/favourite-button/FavouriteButton';\nimport { VideoItemSize } from 'libs/shared/components/video-list/BaseVideoItemProps';\nimport { CanFavouriteFunc, FavouriteFunc, VideoTypes } from 'libs/shared/interfaces';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\nimport { ThumbnailPadlock } from './padlock/ThumbnailPadlock';\n\nimport styles from './video-thumbnail-actions.scss';\n\nfunction hasActions(props: VideoThumbnailActionsProps): boolean {\n if (!VideoHelper.getCanBeConsumed(props.video)?.canConsume)\n return true;\n\n if (FunctionHelper.isFunction(props.setFavourite) && FunctionHelper.isFunction(props.canFavourite))\n return true;\n\n if (FunctionHelper.isFunction(props.setCheckMarkStatus))\n return true;\n\n return false;\n}\n\ninterface VideoThumbnailActionsProps {\n video: VideoTypes;\n setFavourite?: FavouriteFunc;\n canFavourite?: CanFavouriteFunc;\n checkMarkStatus?: CheckMarkStatus;\n setCheckMarkStatus?: SetCheckMarkStatusFunc;\n analyticsData?: HashObject;\n analyticsOptions?: AnalyticsOptions;\n size?: VideoItemSize;\n}\n\nexport function VideoThumbnailActions(props: VideoThumbnailActionsProps): JSX.Element {\n const { canNavigate } = VideoHelper.getCanBeConsumed(props.video);\n\n if (!canNavigate) {\n return (\n <div className={styles.container}>\n <ThumbnailPadlock size={props.size} />\n </div>\n );\n }\n \n if (!hasActions(props))\n return <></>;\n\n return (\n <div className={`${styles.container} d-flex align-items-center`}>\n <FavouriteButton\n setFavourite={props.setFavourite}\n canFavourite={props.canFavourite}\n video={props.video}\n className={styles.action}\n analyticsData={props.analyticsData}\n analyticsOptions={props.analyticsOptions}\n />\n\n <CheckMarkButton\n status={props.checkMarkStatus}\n setStatus={props.setCheckMarkStatus}\n className={styles.action}\n />\n </div>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"titleOverlay\":\"krg9f\",\"clip\":\"MPRU6\",\"large\":\"g5_ww\",\"interactive\":\"Zzo3e\",\"titleBelow\":\"tZjPt\",\"overlayContainer\":\"EElm1\",\"gradient\":\"LS_EH\"};","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { HashObject } from 'libs/common/react/interfaces';\nimport { ObjectHelper } from 'libs/common/react/utils/ObjectHelper';\n\nimport { ClickDescriptor, LocationContext, UserAction } from 'libs/analytics/interfaces';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { BaseImage } from 'libs/shared/components/image/BaseImage';\nimport { ImageFallback, ImageFallbackType } from 'libs/shared/components/image/ImageFallback';\nimport { Mask, MaskType } from 'libs/shared/components/mask/Mask';\nimport { VideoThumbnailBottomBar } from 'libs/shared/components/thumbnails/bottom-bar/VideoThumbnailBottomBar';\nimport { VideoThumbnailActions } from 'libs/shared/components/thumbnails/thumbnail-actions/VideoThumbnailActions';\nimport { VideoThumbnailBadges } from 'libs/shared/components/thumbnails/thumbnail-badges/VideoThumbnailBadges';\nimport { ThumbnailCompanyLogo } from 'libs/shared/components/thumbnails/thumbnail-company/ThumbnailCompanyLogo';\nimport { StaticVideoThumbnailProps } from 'libs/shared/components/thumbnails/video/VideoThumbnail';\nimport { Tooltip } from 'libs/shared/components/tooltip/Tooltip';\nimport { VideoSubText } from 'libs/shared/components/video-sub-text/VideoSubText';\nimport { VideoTypeBadge } from 'libs/shared/components/video-type-badge/VideoTypeBadge';\nimport { GlobalPlayerConsumer } from 'libs/shared/context/player-context/components/GlobalPlayerConsumer';\nimport { ImageType } from 'libs/shared/enums/Images';\nimport { ThumbnailTextPosition } from 'libs/shared/enums/ThumbnailTextPosition';\nimport { useHover, useHoverIntent } from 'libs/shared/hooks/UseHover';\nimport { FavouriteHelper } from 'libs/shared/utils/FavouriteHelpers';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\nimport styles from './static-video-thumbnail.scss';\n\nconst namespace = 'shared.staticVideoThumbnail';\n\nfunction ThumbnailText(props: StaticVideoThumbnailProps): JSX.Element {\n const { video, subTextAppLink, textPosition, appLink } = props;\n\n const textIsOverlayed = textPosition === ThumbnailTextPosition.Overlay;\n const { canNavigate } = VideoHelper.getCanBeConsumed(props.video);\n\n let className = '';\n\n if (textIsOverlayed) {\n className = styles.titleOverlay;\n\n if (canNavigate) {\n if (VideoHelper.isClip(video))\n className += ' ' + styles.clip;\n if (VideoHelper.isInteractive(video))\n className += ' ' + styles.interactive;\n }\n } else {\n className = styles.titleBelow;\n }\n\n return (\n <div className={className}>\n {VideoHelper.isVideo(video) &&\n <VideoSubText\n type={props.subTextType}\n className={textIsOverlayed ? 'text-shadow clamp-1' : 'clamp-2'}\n video={video}\n appLink={!textIsOverlayed ? subTextAppLink : null}\n analyticsOptions={{ location: LocationContext.VideoThumbnail }}\n />\n }\n\n {(textIsOverlayed || !canNavigate)\n ? (\n <span className={`h6 text-reset text-shadow clamp-1`}>\n {video.name ?? LanguageService.getPhrase(namespace, 'videoUnavailable')}\n </span>\n ) : (\n <AppLink className='h6 text-reset clamp-2' appLink={appLink}>\n {video.name}\n </AppLink>\n )\n }\n </div>\n );\n}\n\nexport function StaticVideoThumbnail(props: StaticVideoThumbnailProps): JSX.Element {\n const { video, appLink, textPosition, imageOptions, setFavourite, preload, hoverToPlay } = props;\n\n const appLinkParams = ObjectHelper.isObject(appLink?.params) ? appLink?.params as HashObject : {};\n\n const [ hoverRef, isHovering ] = useHover<HTMLDivElement>();\n const [ hoverIntentRef, isHoveringIntentionally ] = useHoverIntent<HTMLDivElement>({ delay: 100 });\n const { canNavigate, canConsume } = VideoHelper.getCanBeConsumed(video);\n\n function setHoverRefs(r: HTMLDivElement) {\n hoverRef.current = r;\n hoverIntentRef.current = r;\n }\n\n const showThumbnailPreviewVideo = isHoveringIntentionally && canConsume && hoverToPlay;\n\n function canFavourite(): boolean {\n return props.canFavourite?.(props.video) && FavouriteHelper.showFavouriteButton(video, isHovering);\n }\n\n function getContainerClass(): string {\n let className = 'position-relative';\n\n className += (appLink && canNavigate) ? ' cursor-pointer' : '';\n\n if (props.extraClasses)\n className += ` ${props.extraClasses}`;\n\n if (textPosition === ThumbnailTextPosition.Overlay)\n className += ` rounded overflow-hidden`;\n\n return className;\n }\n\n function getThumbnailClass(): string {\n let className = `overflow-hidden ${props.size === 'sm' ? 'rounded' : 'rounded-3'}`;\n\n if (props.imageClassName)\n className += ` ${props.imageClassName}`;\n\n if (textPosition === ThumbnailTextPosition.Overlay)\n className += ` ${styles.gradient}`;\n \n return className;\n }\n\n const eventAnalyticsOptions = {\n ...props.analyticsOptions,\n entity: VideoHelper.getAnalyticsEntity(video)\n };\n\n const showMask = !!appLink && !props.hideMask && canNavigate;\n const tooltip = VideoHelper.getPrivacyReasoning(props.video, props.showSignIn);\n\n\n return (\n <Tooltip title={tooltip} spanHack spanHackClassName=''>\n <div className={getContainerClass()} ref={setHoverRefs}>\n <VideoThumbnailActions\n video={video}\n checkMarkStatus={props.checkMarkStatus}\n setCheckMarkStatus={props.setCheckMarkStatus}\n setFavourite={setFavourite}\n canFavourite={canFavourite}\n analyticsData={props.analyticsData}\n analyticsOptions={eventAnalyticsOptions}\n size={props.size}\n />\n\n <BaseImage\n data={VideoHelper.getThumbnail(video)}\n appLink={canNavigate ? appLink : null}\n imageType={ImageType.Thumbnails}\n imageOptions={imageOptions}\n preload={preload}\n className={getThumbnailClass()}\n alt={('series' in video && video.series?.name ? `${video.series.name}: ` : '') + video.name}\n analyticsData={{\n ...props.analyticsData,\n id: video.id,\n name: video.name\n }}\n analyticsOptions={{\n ...eventAnalyticsOptions,\n actionType: UserAction.Click,\n descriptor: ClickDescriptor.Thumbnail\n }}\n >\n {showMask && (\n <Mask type={MaskType.Video} size={props.size} />\n )}\n <ImageFallback type={ImageFallbackType.Video} />\n <div className={styles.overlayContainer}>\n {textPosition === ThumbnailTextPosition.Overlay && <ThumbnailText {...props} />}\n\n <VideoThumbnailBottomBar video={video} />\n\n <VideoTypeBadge video={video} size={props.size} />\n <ThumbnailCompanyLogo\n video={video}\n companyLogoFallbackUrl={props.companyLogoFallbackUrl}\n size={props.size}\n />\n\n <VideoThumbnailBadges\n video={props.video}\n audience={props.audience}\n hideRating={props.hideRating}\n hideDuration={props.hideDuration}\n newDurationStyle={props.newDurationStyle}\n size={props.size}\n />\n </div>\n </BaseImage>\n {showThumbnailPreviewVideo &&\n <GlobalPlayerConsumer\n key={props.video.id}\n objectId={props.video.id}\n objectTypeId={props.video.typeId}\n mode='hover'\n context={appLinkParams.context}\n contextId={appLinkParams.contextId}\n moviesAndTv={appLinkParams.mtv}\n />\n }\n\n {textPosition === ThumbnailTextPosition.Below && <ThumbnailText {...props} />}\n </div>\n </Tooltip>\n );\n}\n","import * as React from 'react';\n\nimport { Core } from 'libs/common/core';\n\nimport { AnalyticsOptions, HashObject } from 'libs/analytics/interfaces';\n\nimport { CheckMarkStatus, SetCheckMarkStatusFunc } from 'libs/shared/components/check-mark-button/CheckMarkButton';\nimport { VideoSubTextType } from 'libs/shared/components/video-sub-text/VideoSubText';\nimport { ThumbnailTextPosition } from 'libs/shared/enums/ThumbnailTextPosition';\nimport { Audience, CanFavouriteFunc, FavouriteFunc, VideoTypes, YearGroup } from 'libs/shared/interfaces';\nimport { ImageOptions } from 'libs/shared/utils/ImageHelper';\n\nimport { ExpandableVideoThumbnail } from './expandable/ExpandableVideoThumbnail';\nimport { PopoutVideoThumbnail } from './popout/PopoutVideoThumbnail';\nimport { StaticVideoThumbnail } from './static/StaticVideoThumbnail';\n\ninterface BaseVideoThumbnailProps {\n video: VideoTypes;\n imageOptions: ImageOptions;\n appLink: Core.AppLink;\n setFavourite: FavouriteFunc;\n canFavourite: CanFavouriteFunc;\n preload?: boolean;\n analyticsData?: HashObject;\n analyticsOptions: AnalyticsOptions; // Location context required\n hoverToPlay?: boolean;\n companyLogoFallbackUrl?: string;\n \n /**\n * TODO: Fix whatever this used to do in playlists\n */\n canRemovePrivateVideos?: boolean;\n subTextType?: VideoSubTextType;\n subTextAppLink?: Core.AppLink;\n}\n\nexport interface ExpandableVideoThumbnailProps extends BaseVideoThumbnailProps {\n type: 'expandable';\n newDurationStyle?: boolean;\n hovering: boolean;\n}\n\nexport interface PopoutVideoThumbnailProps extends BaseVideoThumbnailProps {\n type: 'popout';\n hideDuration: boolean;\n extraClasses?: string;\n audience: Audience;\n imageCdnUrl: string;\n hideRating?: boolean;\n yearGroups: YearGroup[];\n hideTitle?: boolean;\n showVideoGuidance: boolean;\n}\n\ninterface BaseStaticVideoThumbnailProps extends BaseVideoThumbnailProps {\n textPosition: ThumbnailTextPosition;\n extraClasses?: string;\n imageClassName?: string;\n size: 'sm' | 'md';\n hideMask?: boolean;\n showSignIn?: boolean;\n setCheckMarkStatus?: SetCheckMarkStatusFunc;\n checkMarkStatus?: CheckMarkStatus;\n videoTypeBadgeSize?: 'sm' | 'std';\n hideDuration?: boolean;\n audience?: Audience;\n newDurationStyle?: boolean;\n hideRating?: boolean;\n}\n\ninterface PureStaticVideoThumbnailProps extends BaseStaticVideoThumbnailProps {\n type: 'static';\n}\n\n/**\n * Allows us to have loose types when we only want to display a thumbnail\n * without any of the functionality - Sha\n */\ninterface CosmeticVideoThumbnailProps extends Partial<BaseStaticVideoThumbnailProps> {\n type: 'cosmetic';\n}\n\nexport type StaticVideoThumbnailProps = PureStaticVideoThumbnailProps | CosmeticVideoThumbnailProps;\n\nexport type VideoThumbnailProps = ExpandableVideoThumbnailProps |\n StaticVideoThumbnailProps |\n PopoutVideoThumbnailProps |\n CosmeticVideoThumbnailProps;\n\nVideoThumbnail.defaultProps = {\n hideRating: true,\n size: 'md',\n hoverToPlay: true\n};\n\nexport function VideoThumbnail(props: VideoThumbnailProps): JSX.Element {\n switch (props.type) {\n case 'static':\n return <StaticVideoThumbnail {...props} />;\n case 'cosmetic':\n // No hover to play for cosmetic use of VideoThumbnail\n return <StaticVideoThumbnail {...props} hoverToPlay={false} />;\n case 'expandable':\n // Expandable thumbnails show metadata on hover. Static display the duration and don't expand on hover\n return <ExpandableVideoThumbnail {...props} />;\n case 'popout':\n return <PopoutVideoThumbnail {...props} />;\n default:\n return;\n }\n}\n","// extracted by mini-css-extract-plugin\nexport default {\"topLeftContainer\":\"iwBld\",\"draft\":\"QBpxh\",\"badge\":\"KcvGx\",\"svg\":\"gW733\",\"text\":\"QiH5Q\",\"sm\":\"tn2BH\"};","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 { CurationStatus } from 'libs/shared/enums/CurationStatus';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport styles from './type-badge.scss';\n\nconst namespace = 'shared.typeBadge';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nfunction getText(typeId: MasterType): string {\n switch (typeId) {\n case MasterType.Clip:\n return getPhrase('clip');\n case MasterType.Interactive:\n return getPhrase('interactive');\n case MasterType.Resource:\n return getPhrase('resource');\n default:\n return '';\n }\n}\n\nfunction getIcon(typeId: MasterType): string {\n switch (typeId) {\n case MasterType.Clip:\n return cvSvgLibrary.Clip;\n case MasterType.Interactive:\n return cvSvgLibrary.Interactive;\n case MasterType.Resource:\n return cvSvgLibrary.Resources;\n default:\n return '';\n }\n}\n\nfunction getColourClass(typeId: MasterType, status: CurationStatus): string {\n switch (typeId) {\n case MasterType.Clip:\n return 'bg-dark-blue';\n case MasterType.Interactive:\n return status === CurationStatus.Draft ? styles.draft : 'bg-green';\n case MasterType.Resource:\n return 'bg-indigo';\n default:\n return '';\n }\n}\n\ninterface TypeBadgeProps {\n typeId: MasterType;\n status?: CurationStatus;\n size?: 'sm' | 'md';\n}\n\nTypeBadge.default = {\n size: 'md'\n};\n\nexport function TypeBadge(props: TypeBadgeProps): JSX.Element {\n const baseClasses = `${styles.badge} rounded-pill text-white ps-0 ${props.size === 'sm' ? styles.sm : ''}`;\n\n return (\n <div className={styles.topLeftContainer}>\n <div className={`${baseClasses} ${getColourClass(props.typeId, props.status)}`}>\n <SvgContainer\n className={`svg-container d-block ${styles.svg}`}\n size={props.size === 'sm' ? SvgContainerSize.Small : SvgContainerSize.Standard}\n svgName={getIcon(props.typeId)}\n />\n <span className={styles.text}>\n {getText(props.typeId)}\n </span>\n </div>\n </div>\n );\n}","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { AnalyticsOptions, UserAction } from 'libs/analytics/interfaces';\n\nimport { VideoGuidanceTag } from 'libs/shared/components/video-guidance/tag/VideoGuidanceTag';\nimport { VideoTypes } from 'libs/shared/interfaces';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\nconst namespace = 'shared.interactivesTag';\n\ninterface InteractivesTagProps {\n video: VideoTypes;\n appLink: Core.AppLink;\n analyticsData: HashObject;\n analyticsOptions: AnalyticsOptions;\n}\n\nexport function InteractivesTag(props: InteractivesTagProps): JSX.Element {\n if (!props.video || VideoHelper.isInteractive(props.video))\n return <></>;\n\n const interactiveCount = props.video.interactives?.data?.length || 0;\n\n if (!interactiveCount)\n return <></>;\n\n return (\n <VideoGuidanceTag\n svgName={cvSvgLibrary.Interactive}\n iconVariant='green'\n text={LanguageService.getPhrase(namespace, 'interactives', { smartCount: interactiveCount })}\n appLink={props.appLink}\n appLinkAnalyticsData={{\n videoGuidanceType: 'interactive',\n videoGuidanceTotalItems: interactiveCount,\n ...props.analyticsData\n }}\n appLinkAnalyticsOptions={{\n actionType: UserAction.Click,\n entity: VideoHelper.getAnalyticsEntity(props.video),\n ...props.analyticsOptions\n }}\n />\n );\n}","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { AnalyticsOptions, UserAction } from 'libs/analytics/interfaces';\n\nimport { VideoGuidanceTag } from 'libs/shared/components/video-guidance/tag/VideoGuidanceTag';\nimport { VideoTypes } from 'libs/shared/interfaces';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\nconst namespace = 'shared.resourcesTag';\n\ninterface ResourcesTagProps {\n video: VideoTypes;\n appLink: Core.AppLink;\n analyticsData: HashObject;\n analyticsOptions: AnalyticsOptions;\n}\n\nexport function ResourcesTag(props: ResourcesTagProps): JSX.Element {\n if (!props.video || VideoHelper.isInteractive(props.video))\n return <></>;\n\n const resourceCount = props.video.resources?.data?.length || 0;\n\n if (!resourceCount)\n return <></>;\n\n return (\n <VideoGuidanceTag\n svgName={cvSvgLibrary.Resources}\n iconVariant='indigo'\n text={LanguageService.getPhrase(namespace, 'resources', { smartCount: resourceCount })}\n appLink={props.appLink}\n appLinkAnalyticsData={{\n videoGuidanceType: 'resource',\n videoGuidanceTotalItems: resourceCount,\n ...props.analyticsData\n }}\n appLinkAnalyticsOptions={{\n actionType: UserAction.Click,\n entity: VideoHelper.getAnalyticsEntity(props.video),\n ...props.analyticsOptions\n }}\n />\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"tag\":\"OjHQZ\",\"icon\":\"SS2zL\",\"active\":\"kD1xM\"};","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { AnalyticsOptions } from 'libs/analytics/interfaces';\n\nimport { SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\n\nimport { AppLink } from '../../app-link/AppLink';\n\nimport styles from './video-guidance-tag.scss';\n\ninterface VideoGuidanceTagProps {\n text: string;\n svgName: string;\n iconVariant: string;\n active?: boolean;\n appLink?: Core.AppLink;\n appLinkAnalyticsData?: HashObject;\n appLinkAnalyticsOptions?: AnalyticsOptions;\n}\n\nfunction ContainerWrapper(props: VideoGuidanceTagProps): JSX.Element {\n if (props.appLink) {\n return (\n <AppLink\n appLink={props.appLink}\n analyticsData={props.appLinkAnalyticsData}\n analyticsOptions={props.appLinkAnalyticsOptions}\n >\n <VideoGuidanceTag {...props} />\n </AppLink>\n );\n }\n\n return <VideoGuidanceTag {...props} />;\n}\n\nfunction VideoGuidanceTag(props: VideoGuidanceTagProps): JSX.Element {\n return (\n <div className={`p-1 pe-2 rounded-pill d-inline-flex align-items-center cursor-pointer ${styles.tag} ${props.active ? styles.active : ''}`}>\n <SvgContainer\n className={`${styles.icon} rounded-circle bg-${props.iconVariant} text-white`}\n svgName={props.svgName}\n />\n\n <span className='ps-1 text-nowrap user-select-none'>\n {props.text}\n </span>\n </div>\n );\n}\n\nexport { ContainerWrapper as VideoGuidanceTag };","import React from 'react';\nimport { Placement } from 'react-bootstrap/esm/types';\n\nimport { SvgContainer, SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\nimport { Tooltip } from 'libs/shared/components/tooltip/Tooltip';\nimport { VideoItemSize } from 'libs/shared/components/video-list/BaseVideoItemProps';\nimport { VideoTypes, YearGroup } from 'libs/shared/interfaces';\nimport { RestrictionHelper } from 'libs/shared/utils/RestrictionHelper';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\ninterface RestrictionPadlockProps {\n tooltip?: string;\n className?: string;\n tooltipPlacement?: Placement\n size?: VideoItemSize;\n video: VideoTypes;\n yearGroups: YearGroup[];\n}\n\nexport function RestrictionPadlock(props: RestrictionPadlockProps): JSX.Element {\n if (!props.yearGroups)\n return <></>;\n\n const title = RestrictionHelper.mapRestrictionToText(props.video._restrictions, props.yearGroups);\n const { canConsume } = VideoHelper.getCanBeConsumed(props.video);\n\n if (!canConsume || !title)\n return <></>;\n\n return (\n <Tooltip\n spanHack\n spanHackClassName={props.className || 'd-inline-block ps-1'}\n title={title}\n placement={props.tooltipPlacement || 'top'}\n >\n <SvgContainer\n svgName={cvSvgLibrary.Lock}\n size={props.size === 'sm' ? SvgContainerSize.Small : SvgContainerSize.Standard}\n />\n </Tooltip>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"hoverContainer\":\"TzWQw\",\"hovering\":\"gdTcW\"};","import React from 'react';\nimport { OutPortal } from 'react-reverse-portal';\n\nimport { PlayerInitializationData } from 'libs/shared/context/player-context/interfaces/PlayerContextAction';\nimport { usePlayerContext } from 'libs/shared/context/player-context/PlayerContext';\n\nimport styles from './global-player-consumer.scss';\n\ninterface GlobalPlayerConsumerOptions extends PlayerInitializationData {\n location?: 'popout-video' | 'play-page';\n}\n\nexport function GlobalPlayerConsumer(props: GlobalPlayerConsumerOptions): JSX.Element {\n const playerContext = usePlayerContext();\n\n playerContext.useInitialize?.(props);\n\n if (!playerContext.hasProvider)\n return <></>;\n\n if (playerContext.mode === 'picture-in-picture')\n return <></>;\n\n if (props.mode === 'hover' && playerContext.isOnPlayPage)\n return <></>;\n\n if (playerContext.mode === 'default' || props.location === 'play-page')\n return <OutPortal node={playerContext.portalNode} />;\n\n /**\n * When hovering, we don't want to show the player until the video has started playing.\n */\n const shouldShow = playerContext.started;\n\n let rounding = 'rounded-3';\n if (props.location === 'popout-video')\n rounding = 'rounded-top-3';\n\n const className = `${styles.hoverContainer} ${shouldShow ? styles.hovering : ''} ${rounding} overflow-hidden`;\n\n return (\n <div className={className}>\n <OutPortal node={playerContext.portalNode} />\n </div>\n );\n}","export enum ThumbnailTextPosition {\n Below = 1,\n Overlay = 2,\n Independent = 3\n}","export enum PlayPageAnchor {\n Resources = 'resources',\n Interactives = 'interactives'\n}"],"names":["AudienceLabel","props","audience","className","border","name","BadgeListContainer","children","CheckMarkStatus","CheckMarkButton","status","Complete","isComplete","setIsComplete","style","None","FunctionHelper","setStatus","DivButton","onClick","shouldComplete","newStatus","Incomplete","disabled","SvgContainer","svgName","defaultProps","MaskType","Mask","type","size","typeClass","Video","Playlist","getClassByType","svgType","getSvgType","defaults","ThumbnailText","video","appLink","subTextAppLink","canNavigate","VideoHelper","VideoSubText","subTextType","analyticsOptions","location","AppLink","RestrictionPadlock","yearGroups","getPhrase","LanguageService","FavouriteButton","alerts","initialState","isFavourite","setIsFavourite","setFavourite","canFavourite","shouldFavourite","error","analyticsData","VideoWatchProgressBar","progress","watchPercentage","duration","width","VideoThumbnailBottomBar","ThumbnailPadlock","svgSize","S","ThumbnailCompanyLogo","companyLogoFallbackUrl","company","productionCompanies","data","url","logo","Tooltip","title","spanHack","backgroundImage","VideoTypeBadge","TypeBadge","typeId","MasterType","getTitleClass","hovering","ExpandableVideoThumbnail","imageOptions","preload","hoverToPlay","canConsume","appLinkParams","ObjectHelper","params","eventAnalyticsOptions","entity","showFavouriteButton","isVideo","rating","delay","thumbnailHoverRef","showThumbnailPreviewVideo","spanHackClassName","ref","BaseImage","imageType","alt","series","id","actionType","descriptor","ImageFallback","Badge","hasSubtitle","hasInteractives","GlobalPlayerConsumer","key","objectId","objectTypeId","mode","context","contextId","moviesAndTv","mtv","VideoThumbnailBadges","showAudience","showRating","hideRating","hideDuration","newDurationStyle","PopoutVideo","isHovering","getGuidanceAppLink","scrollToPosition","scrollTo","cleanPortalNode","extraClasses","hideTitle","showVideoGuidance","InteractivesTag","PlayPageAnchor","ResourcesTag","PopoutVideoThumbnail","HoverToPortalContainer","hoverableComponent","componentProps","fixedHoverWidth","minHoverWidth","VideoThumbnailActions","setCheckMarkStatus","hasActions","checkMarkStatus","textPosition","textIsOverlayed","ThumbnailTextPosition","StaticVideoThumbnail","hoverRef","hoverIntentRef","isHoveringIntentionally","showMask","hideMask","tooltip","showSignIn","r","current","imageClassName","getThumbnailClass","VideoThumbnail","getIcon","getColourClass","CurationStatus","baseClasses","getText","namespace","interactiveCount","interactives","length","iconVariant","text","smartCount","appLinkAnalyticsData","videoGuidanceType","videoGuidanceTotalItems","appLinkAnalyticsOptions","resourceCount","resources","ContainerWrapper","VideoGuidanceTag","active","_restrictions","placement","tooltipPlacement","playerContext","useInitialize","hasProvider","isOnPlayPage","node","portalNode","shouldShow","started","rounding"],"sourceRoot":""}
|