@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([[2672],{73758:(e,t,a)=>{function n(e){return n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},n(e)}function r(e,t){for(var a=0;a<t.length;a++){var n=t[a];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,i(n.key),n)}}function i(e){var t=function(e,t){if("object"!=n(e)||!e)return e;var a=e[Symbol.toPrimitive];if(void 0!==a){var r=a.call(e,"string");if("object"!=n(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==n(t)?t:t+""}a.d(t,{n:()=>o});var o=new(function(){return e=function e(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.listeners={}},t=[{key:"subscribe",value:function(e,t){this.registerListener(e,t)}},{key:"subscribeOnce",value:function(e,t){this.registerListener(e,t,1)}},{key:"unsubscribe",value:function(e,t){this.deregisterListener(e,t)}},{key:"trigger",value:function(e){for(var t=arguments.length,a=new Array(t>1?t-1:0),n=1;n<t;n++)a[n-1]=arguments[n];this.triggerCallbacks(e,a)}},{key:"registerListener",value:function(e,t,a){var n;if("string"!=typeof e)throw new Error("Event name must be a string");if("function"!=typeof t)throw new Error("Event callback must be a function");if(a&&"number"!=typeof a)throw new Error("Execution limit must be a number or undefined");this.listeners[e]=null!==(n=this.listeners[e])&&void 0!==n?n:[],this.listeners[e].push({callback:t,executionLimit:a})}},{key:"deregisterListener",value:function(e,t){var a;if("string"!=typeof e)throw new Error("Event name must be a string");if(t&&"function"!=typeof t)throw new Error("Event callback must be a function");if(t){var n=null===(a=this.listeners[e])||void 0===a?void 0:a.findIndex((function(e){return e.callback===t}));"number"==typeof n&&-1!==n&&(this.listeners[e].splice(n,1),0===this.listeners[e].length&&delete this.listeners[e])}else this.listeners[e]=[]}},{key:"triggerCallbacks",value:function(e){for(var t=this,a=arguments.length,n=new Array(a>1?a-1:0),r=1;r<a;r++)n[r-1]=arguments[r];if(this.listeners[e]){var i=[];this.listeners[e].forEach((function(e){var t,a;"number"==typeof e.executionLimit&&(e.executionCount=null!==(a=e.executionCount)&&void 0!==a?a:0,e.executionCount++,e.executionCount===e.executionLimit&&i.push(e.callback)),(t=e.callback).apply.apply(t,[null].concat(n))})),i.length&&i.forEach((function(a){return t.deregisterListener(e,a)}))}}}],t&&r(e.prototype,t),Object.defineProperty(e,"prototype",{writable:!1}),e;var e,t}())},19670:(e,t,a)=>{a.d(t,{o:()=>p});var n=a(32735),r=a(1048),i=a(11607),o=a(87311),l=a(91743),c=a(83345),s=a(54610),u=a(67453),d=a(32614),m=a(93563),v="shared.videoAtAGlance";function p(e){var t=(0,d.Wp)(e.video,e.theme),a=(0,d.md)(e.video,e.pointsOfInterest,t,e.suppressInteractivity),p=(0,d.RH)(e.pointsOfInterest,t);if(!t)return n.createElement(n.Fragment,null);var f,g,h,y,b,E=(null===(h=null===(g=null==(f=e.theme)?void 0:f.data)||void 0===g?void 0:g.colours)||void 0===h?void 0:h.primary)&&(null===(b=null===(y=null==f?void 0:f.data)||void 0===y?void 0:y.colours)||void 0===b?void 0:b.secondary)?f.data.colours:{primary:"#F5F4FF",secondary:"#9294FF"},k="function"==typeof e.onClickShowDescription,w="function"==typeof e.onClickShowCurriculumLinks;return n.createElement("div",{className:"rounded border px-3 px-sm-5 py-3 mb-3 position-relative d-flex justify-content-center ".concat(m.Z.container),style:{backgroundColor:E.primary}},n.createElement("div",{className:"".concat(m.Z.content," d-flex align-items-center pt-4 pt-sm-0")},n.createElement("div",null,n.createElement("h2",{className:"h4"},n.createElement(c.x,{namespace:v,phrase:"videoAtAGlance"})),k&&n.createElement(i.L,{onClick:e.onClickShowDescription,className:"".concat(m.Z.detailsBtn," position-absolute cursor-pointer me-4 fw-semibold text-info")},n.createElement(c.x,{namespace:v,phrase:"readFullDescription"})),n.createElement("div",{ref:p,onClick:function(t){return(0,d.$H)(t,e.pointsOfInterest,e.setStartTime)},dangerouslySetInnerHTML:{__html:a}}),function(){var t,a,r,i;return(null===(a=null===(t=e.video.tags)||void 0===t?void 0:t.data)||void 0===a?void 0:a.length)?n.createElement("div",{className:"py-1"},n.createElement(l.P,Object.assign({tags:null===(i=null===(r=e.video)||void 0===r?void 0:r.tags)||void 0===i?void 0:i.data,themeColours:E},o.G.getTagActionProps(e.getTagAppLink,e.suppressInteractivity)))):n.createElement(n.Fragment,null)}(),n.createElement("div",{className:"mt-2"},w&&n.createElement(i.L,{onClick:e.onClickShowCurriculumLinks,className:"cursor-pointer d-inline-block fw-semibold text-info"},n.createElement(c.x,{namespace:v,phrase:"seeCurriculumLinks"}))))),function(){var t,a,i,o=null!==(i=null===(a=null===(t=e.theme)||void 0===t?void 0:t.data)||void 0===a?void 0:a.images)&&void 0!==i?i:{};return r.t.keys(o).filter((function(e){return!r.t.isEmpty(o[e])})).map((function(e){var t,a,r=u.j.createUrl(null===(t=o[e])||void 0===t?void 0:t.url,{size:s.h2.Medium});return n.createElement("div",{key:null===(a=o[e])||void 0===a?void 0:a.fileId,className:"".concat(m.Z[e]," ").concat(m.Z.background," d-none d-lg-block"),style:{backgroundImage:"url('".concat(r,"')")}})}))}())}},32614:(e,t,a)=>{a.d(t,{Wp:()=>h,$H:()=>p,md:()=>f,RH:()=>g});var n=a(32735),r=a(16367),i=a(73758);function o(e,t,a,r){var o=function(){i.n.unsubscribe(e,t)};return(0,n.useEffect)((function(){if(r)return a?i.n.subscribeOnce(e,t):i.n.subscribe(e,t),function(){o()}}),[]),o}var l=a(93264),c=a(93563);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=/(\[.*\]\(cv:\/\/poi\?id=[0-9]+\))/g,d=/[0-9]+/,m=/\[.*\]/,v=/[\[\]]/g;function p(e,t,a){e.preventDefault();var n=e.target.getAttribute("href");if((null==n?void 0:n.includes("cv://poi"))&&(null==t?void 0:t.length)){var r=n.split("cv://poi?id=")[1],i=t.find((function(e){return e.id.toString()===r}));a&&i&&a(i.startTime)}}function f(e,t,a,i){var o,c,p,f=(c=(0,n.useState)(""),p=2,function(e){if(Array.isArray(e))return e}(c)||function(e,t){var a=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=a){var n,r,i,o,l=[],c=!0,s=!1;try{if(i=(a=a.call(e)).next,0===t){if(Object(a)!==a)return;c=!1}else for(;!(c=(n=i.call(a)).done)&&(l.push(n.value),l.length!==t);c=!0);}catch(e){s=!0,r=e}finally{try{if(!c&&null!=a.return&&(o=a.return(),Object(o)!==o))return}finally{if(s)throw r}}return l}}(c,p)||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}}(c,p)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),g=f[0],h=f[1];return(0,n.useEffect)((function(){if(a){var n=function(e,t,a){var n=function(e,t,a){return(null==t?void 0:t.length)?e.content.replace(u,(function(e){var n=e.match(d);if(!(null==n?void 0:n.length))return e;var r=t.find((function(e){return e.id.toString()===n[0]})),i=e.match(m);if(!r||!(null==i?void 0:i.length))return e;var o='<span class="me-2">'.concat(l.T.ToDisplayDuration(1e3*r.startTime),"</span>"),c=i[0];return c=(c=c.replace(v,""))||r.description,c="".concat(o," ").concat(c),a?'<span class="d-flex">'.concat(c,"</span>"):e.replace(m,"[".concat(c,"]"))})):e.content}(e,t,a);return r(n).split('a href="cv://poi').join('a class="d-flex" href="cv://poi')}(e.glance,t,i);h(n)}}),[null===(o=e.glance)||void 0===o?void 0:o.content,null==t?void 0:t.length,a]),g}function g(e,t){var a=(0,n.useRef)();function r(){var t=this.getAttribute("href");if((null==t?void 0:t.includes("cv://poi"))&&(null==e?void 0:e.length)){var a=t.split("cv://poi?id=")[1];if(a){var n=e.find((function(e){return e.id.toString()===a}));n&&i.n.trigger("glance:poi:mouseover",n)}}}function l(){i.n.trigger("glance:poi:mouseleave")}function s(){var e;return null===(e=a.current)||void 0===e?void 0:e.querySelectorAll('[href*="cv://poi"]')}return o("player:poi:mouseover",(function(e){var t,n=null==e?void 0:e.id;n&&(null===(t=function(e){var t;return null===(t=a.current)||void 0===t?void 0:t.querySelector('[href="cv://poi?id='.concat(e,'"]'))}(n))||void 0===t||t.classList.add(c.Z.highlightPoi))}),null,t),o("player:poi:mouseleave",(function(){var e;null===(e=s())||void 0===e||e.forEach((function(e){return e.classList.remove(c.Z.highlightPoi)}))}),null,t),(0,n.useEffect)((function(){if(a.current&&t){var e=s();return e.forEach((function(e){return e.addEventListener("mouseover",r)})),e.forEach((function(e){return e.addEventListener("mouseleave",l)})),function(){e.forEach((function(e){return e.removeEventListener("mouseover",r)})),e.forEach((function(e){return e.removeEventListener("mouseleave",l)}))}}}),[a.current]),a}function h(e,t){var a,n;return t&&(null===(a=e.glance)||void 0===a?void 0:a.content)&&"text/markdown"===(null===(n=e.glance)||void 0===n?void 0:n.format)}},15446:(e,t,a)=>{a.d(t,{C:()=>u});var n=a(32735),r=a(65858),i=a(36848),o=a(72355),l=a(3133),c=a(54610),s=a(68626);var u=n.memo((function(e){var t;return n.createElement("div",{className:"flex-shrink-0 px-1 ".concat("hzP5u")},n.createElement("div",{className:"row m-0 border rounded p-2 h-100"},n.createElement("div",{className:"col-6 p-0"},n.createElement(o.u,{video:e.data,appLink:e.getAppLink(e.data),type:"cosmetic",imageOptions:{size:c.h2.Small},textPosition:s.z.Independent,analyticsOptions:{location:r.LZ.SlidingListItem},preload:!0})),n.createElement("div",{className:"col-6 p-0"},n.createElement("div",{className:"ps-2"},n.createElement(i.F,{appLink:e.getAppLink(e.data)},n.createElement("h3",{className:"h6 mb-1"},n.createElement("span",{className:"clamp-2"},e.data.name))),n.createElement(l.R,{owner:e.data.owner,isClickViewCurated:null===(t=e.data._isClickViewCurated)||void 0===t?void 0:t.value,imageCdnUrl:e.imageCdnUrl})))))}))},9098:(e,t,a)=>{a.d(t,{s:()=>x,R:()=>A});var n=a(32735),r=a(39202),i=a(49985),o=a(65858),l=a(36848),c=a(11607),s=a(86073),u=a(54610),d=a(1164),m=a(67453),v=a(45778),p=a(75163);const f={imageStyle:"FFgf3",imageTypeResource:"z4O5p"};var g={width:200,resizeType:u.Nq.Cover};function h(e){var t;return v.G.isResource(e)?e.metadata.type===d.L.Pdf||(null===(t=e.pdf)||void 0===t?void 0:t.url)?u.__.Pdf:u.__.Thumbnails:u.__.Link}function y(e){var t,a,r,i=null,o=0;v.G.isResource(e.resource)&&(i=e.resource.metadata,o=null!==(r=null===(a=null===(t=e.resource.thumbnail)||void 0===t?void 0:t.metadata)||void 0===a?void 0:a.rotation)&&void 0!==r?r:0);var l=function(e,t){var a,n,r,i=h(t);if("thumbnail"in t&&(null===(a=t.thumbnail)||void 0===a?void 0:a.url))return m.j.createUrl(null===(n=t.thumbnail)||void 0===n?void 0:n.url,Object.assign({},g));var o=s._.safeUrlConcat(e,"/v1/previews");return v.G.isResource(t)?i===u.__.Pdf?t.metadata.type===d.L.Pdf?m.j.createResourceImage(o,t.url,Object.assign({},g)):m.j.createResourceImage(o,null===(r=t.pdf)||void 0===r?void 0:r.url,Object.assign({},g)):t.metadata.type!==d.L.Zip?m.j.createUrl(t.url,{size:u.h2.Medium,resizeType:u.Nq.Cover}):"/images/zip-resource.png":m.j.createResourceImage(o,t.url,Object.assign({},g))}(e.imageCdnUrl,e.resource);return n.createElement(p.Z,{data:l,imageType:h(e.resource),imageStyle:{transform:"rotate(".concat(o,"deg)")},alt:e.resource.name,errorFallbackImageSrc:e.imageErrorFallbackUrl,imageClassName:(null==i?void 0:i.type)===d.L.Image?"".concat(f.imageTypeResource," ").concat(f.imageStyle):"",preload:e.preloadImage,preventLoad:!e.preloadImage}," ")}var b=a(83914),E=a(60995),k=a(76177),w=a(61150),C=a(71063),N=a(4594),L=a(79967),P={getResourceTypeName:function(e){switch(e){case"additional-materials":return"Additional Materials";case"atom-guide":return"ATOM Guide";case"teacher-pack":return"Teacher Pack";case"student-activity":return"Student Activity";default:return"N/A"}}},S=a(35223);const j={imageStyle:"I9E5O",item:"tqUFn",dashboard:"o7j7p",playPage:"V2RwX",aspectRatio:"OnJDH",outerContainer:"CIFy7",innerContainer:"oUZPD",actions:"jzGAm",titleBelow:"Cpjs3",thumbnailContainer:"EDiGi",titleAbove:"e9ejn",teacherPack:"_tdVE",text:"g5NWS",hoverState:"xRYhX",atomGuide:"X39wU",studentActivity:"X9pMl",additionalMaterials:"qRVUo",userUploaded:"_18JaV",imageTypeResource:"KYtZL",download:"fbb_e"};function x(e){var t,a,r,i,o=null;"metadata"in e.data&&(o=e.data.metadata);var l=v.G.isType(e.data,N.E.Resource);return n.createElement(n.Fragment,null,n.createElement("div",{className:j.aspectRatio},n.createElement("div",{className:j.outerContainer},n.createElement("div",{className:function(t){var a,n="\n d-flex flex-column align-items-center justify-content-end rounded-3 h-100\n position-relative ".concat(function(e){switch(e){case"atom-guide":return j.atomGuide;case"student-activity":return j.studentActivity;case"teacher-pack":return j.teacherPack;case"additional-materials":return j.additionalMaterials;default:return j.userUploaded}}(t)," ").concat(j.innerContainer);return(null===(a=e.theme)||void 0===a?void 0:a.containerClass)?n+=" ".concat(e.theme.containerClass):n+=" pt-3 px-3",e.applyHoverState&&(n+=" ".concat(j.hoverState)),n}(null==o?void 0:o.resourceType)},"above"===e.titlePosition&&n.createElement(k.u,{title:e.data.name},n.createElement("h3",{className:"text-center text-break h5 mb-3 ".concat(j.text)},n.createElement("span",{className:"clamp-1"},e.data.name))),n.createElement("div",{className:"\n ".concat(null!==(a=null===(t=e.theme)||void 0===t?void 0:t.thumbnailContainerClass)&&void 0!==a?a:""," w-75 overflow-hidden \n ").concat(j.thumbnailContainer," ").concat("above"===e.titlePosition?j.titleAbove:""," \n ").concat(j.imageStyle,"\n ")},n.createElement(y,{resource:e.data,imageCdnUrl:e.imageCdnUrl,imageErrorFallbackUrl:e.imageErrorFallbackUrl,preloadImage:e.preloadImage})),l&&e.onClickDownload&&"normal"===e.actionBehaviour&&n.createElement("div",{className:j.actions},n.createElement(c.L,{onClick:function(t){return e.onClickDownload(t,e.data)},className:"".concat(j.download," d-flex align-items-center justify-content-center")},n.createElement(b.x,{svgName:S.vn.Download}))),!e.hideTypeBadge&&l&&n.createElement(w.y,{typeId:N.E.Resource})))),"below"===e.titlePosition&&v.G.isType(e.data,N.E.Resource)&&n.createElement("div",{className:"mt-1 ".concat(j.titleBelow)},!!(null===(i=null===(r=e.data)||void 0===r?void 0:r.metadata)||void 0===i?void 0:i.resourceType)&&n.createElement(E.m,null,P.getResourceTypeName(e.data.metadata.resourceType)),n.createElement("h3",{className:"h6 clamp-2"},e.data.name)))}x.defaultProps={preloadImage:!0,actionBehaviour:"normal"};var A=n.memo((function(e){var t,a,c,s,u=(t=e.data,a=e.actionBehaviour,s=(0,L.k)(),"public"===a||!s.xs&&!s.sm&&"resource"===t.type&&"metadata"in t&&(t.metadata.type===d.L.Image||(t.metadata.type===d.L.Pdf?!!t.url:!!(null===(c=t.pdf)||void 0===c?void 0:c.url)))),m=Object.assign(Object.assign({},e.analyticsData),e.data),v=Object.assign(Object.assign({},e.analyticsOptions),{actionType:o.Vw.Click,entity:e.data.typeId===N.E.Resource?o.py.Resource:o.py.Link});function p(){i.k.logUserAction(m,v)}var f,g=Object.assign(Object.assign({},e),{applyHoverState:u||!!e.data.url});return n.createElement("div",{className:"px-1 flex-shrink-0 ".concat(j.item," ").concat("play-page"===e.location?j.playPage:j.dashboard," ").concat(C.M.RESOURCE_ITEM_SELECTOR)},(f="d-block ".concat("above"===e.titlePosition?"no-decoration":""),"link"===e.data.type?n.createElement("a",{href:e.data.url,target:"_blank",className:f,onClick:p},n.createElement(x,Object.assign({},g))):u?"public"===e.actionBehaviour?n.createElement("div",{className:"".concat(f," cursor-pointer d-inline"),onClick:function(){p(),r.C$.trigger(e.getAppLink(e.data))}},n.createElement(x,Object.assign({},g))):n.createElement(l.F,{appLink:e.getAppLink(e.data),className:f,analyticsData:m,analyticsOptions:v},n.createElement(x,Object.assign({},g))):e.data.url?n.createElement("a",{href:e.data.url,className:f,onClick:p},n.createElement(x,Object.assign({},g))):n.createElement("div",{className:f},n.createElement(x,Object.assign({},g)))))}))},28907:(e,t,a)=>{a.d(t,{r:()=>i});var n=a(99940),r=a(97395),i={theme:function(e){return{url:"/api/domain/v1/themes/".concat(e),key:"themes:".concat(e)}},themeImages:function(e,t){return{url:r._.urlBuilder("/api/domain/v1/themes",{name:e,type:t}),key:"themes:".concat(e,":").concat(t)}},themes:function(e){var t="/api/domain/v1/themes",a="themes";return e&&(t+="?type=".concat(e),a+=":type:".concat(e)),{url:t,key:a,formatData:function(e){return e.sort((function(e,t){return e.name.localeCompare(t.name)}))}}},createTheme:function(e,t,a,r){return{url:"/api/domain/v1/themes",key:"theme",data:e,type:n.k.POST,invalidationKeys:"themes",success:t,error:a,always:r}},updateTheme:function(e,t,a,r,i){return{url:"/api/domain/v1/themes/".concat(e),key:"update:theme:".concat(e),data:t,type:n.k.PUT,success:a,error:r,always:i}},deleteTheme:function(e,t,a,r){return{url:"/api/domain/v1/themes/".concat(e),key:"delete:theme:".concat(e),type:n.k.DELETE,invalidationKeys:"themes",success:t,error:a,always:r}}}},94631:(e,t,a)=>{a.d(t,{D:()=>r});var n=a(32735);function r(e){var t=n.useRef();return n.useEffect((function(){t.current=e})),t.current}},9907:(e,t,a)=>{a.d(t,{P:()=>o});var n=a(32735),r=a(94631);function i(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 o=function(e,t){var a,o,l=(a=n.useState(!1),o=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,r,i,o,l=[],c=!0,s=!1;try{if(i=(a=a.call(e)).next,0===t){if(Object(a)!==a)return;c=!1}else for(;!(c=(n=i.call(a)).done)&&(l.push(n.value),l.length!==t);c=!0);}catch(e){s=!0,r=e}finally{try{if(!c&&null!=a.return&&(o=a.return(),Object(o)!==o))return}finally{if(s)throw r}}return l}}(a,o)||function(e,t){if(e){if("string"==typeof e)return i(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)?i(e,t):void 0}}(a,o)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),c=l[0],s=l[1],u=(0,r.D)(t),d=t;n.useLayoutEffect((function(){if(!c||u!==d){var t=e.find((function(e){return e&&(null==e?void 0:e.id)===d}));if(t){var a=t.getBoundingClientRect();window.scrollBy({top:a.top-80,behavior:"smooth"}),c||s(!0)}}}),[e,u,d,c])}},57654:(e,t,a)=>{a.d(t,{v:()=>b});var n=a(32735),r=a(65858),i=a(83657),o=a(36848),l=a(40955),c=a(18559),s=a(17464),u=a(83345),d=a(38647),m=a(11882),v=a(80143),p=a(31908),f=a(99092),g=a(10671);const h={series:"_4XDZ",badgeListContainer:"d42pt"};var y="shared.playPage";function b(e){var t,a,b,E=(0,v.n)(null===(t=e.media.subjectPresentationAudiences)||void 0===t?void 0:t.data,e.audiences),k=n.useRef(null),w=n.useRef(null),C=(0,f.A1)(e.media).hasBadges,N=(0,g._)({location:g.i.PlayPage,shareId:e.shareId}),L=!!e.originalVideoAppLink&&p.M.isClip(e.media)&&p.M.canViewOriginalVideo(e.media);return n.createElement("section",{className:"mb-3 position-relative",ref:k},n.createElement("div",{className:"d-inline-block w-100",ref:w},e.featureAccess.canNavigate&&n.createElement("div",{className:"ms-2 float-end"},n.createElement(i.e,{actions:N.getVideoActions(e.media),actionsDropdownClassName:"btn btn-outline-dark",fetchMore:function(){return N.fetchMoreActions(e.media)}})),!!p.M.isVideo(e.media)&&n.createElement(m.$,{type:"series",video:e.media,appLink:null===(a=e.getSeriesAppLink)||void 0===a?void 0:a.call(e,e.media.series),className:"".concat(h.series," text-truncate mw-100"),analyticsOptions:{location:r.LZ.PlayPage}}),n.createElement("h1",{className:"h4 mb-2 mw-100"},n.createElement("span",{className:"align-self-center"},e.media.name),n.createElement(d.m,{tooltipPlacement:"right",className:"d-inline-block ps-1",video:e.media,yearGroups:e.yearGroups})),C&&n.createElement(s.c,{className:h.badgeListContainer},n.createElement(l.P,{audience:E,className:"bg-white text-dark",border:"dark"}),p.M.isVideo(e.media)&&n.createElement(c.C,{type:c.g.Rating,data:e.media.rating}),p.M.isVideo(e.media)&&n.createElement(c.C,{type:c.g.ProductionYear,data:e.media.productionYear}))),p.M.isClip(e.media)&&L&&n.createElement("p",{className:"clamp-1"},n.createElement(u.x,{namespace:y,phrase:"viewOriginal"})," ",n.createElement(o.F,{className:"info-link",appLink:e.originalVideoAppLink},null===(b=e.media._parentVideo)||void 0===b?void 0:b.name)))}},81024:(e,t,a)=>{a.d(t,{S:()=>f});var n=a(32735),r=a(23481),i=a(65858),o=a(36848),l=a(83914),c=a(54610),s=a(67453),u=a(35223),d=a(31908);const m="LL7My",v="QoLgZ";var p=r.T.encloseNamespace("shared.playerPlaceholder");function f(e){switch(e.type){case"pip":return n.createElement(g,Object.assign({},e));case"public":return n.createElement(h,Object.assign({},e));default:return n.createElement(n.Fragment,null)}}var g=function(e){var t,a;return n.createElement("div",{className:"position-relative responsive-img ".concat(v),style:{backgroundImage:"url('".concat(null!==(a=null===(t=d.M.getThumbnail(e.video))||void 0===t?void 0:t.url)&&void 0!==a?a:"","')")}},n.createElement("p",{className:"m-0 text-white h3 ".concat("BcnSH")},p("playingPiP")),n.createElement("div",{className:m}))},h=function(e){var t,a,r=s.j.createUrl(null!==(a=null===(t=d.M.getThumbnail(e.video))||void 0===t?void 0:t.url)&&void 0!==a?a:"",{size:c.h2.Large});return n.createElement("div",{className:"position-relative responsive-img ".concat(v),style:{backgroundImage:"url('".concat(r,"')")}},n.createElement(o.F,{appLink:e.appLink,analyticsOptions:{actionType:i.Vw.Click,location:i.LZ.PlayPage,entity:i.py.AppLink,workflowPhase:i.eu.Start,descriptor:i.Yu.SignUp},analyticsData:{}},n.createElement(l.x,{svgName:u.vn.PlayCircle,className:"x_1f6"}),n.createElement("div",{className:m})))}},42571:(e,t,a)=>{a.d(t,{H:()=>r});var n=a(32735);function r(){return n.createElement("div",{className:"p-3 mb-3 border rounded"},n.createElement("div",{className:"row"},n.createElement("div",{className:"pe-3 col-md-7 border-right"},n.createElement("div",{className:"partial-loading-background mb-2",style:{height:"1.5rem",width:"12rem"}}),n.createElement("div",{className:"partial-loading-background mb-2",style:{height:"4.5rem"}}),n.createElement("div",{className:"partial-loading-background",style:{height:"1.5rem",width:"15rem"}})),n.createElement("div",{className:"col-md-5 ps-md-3 pt-3 pt-md-0"},n.createElement("div",{className:"partial-loading-background mb-2",style:{height:"1.5rem",width:"7rem"}}),n.createElement("div",{className:"partial-loading-background mb-2",style:{height:"1.5rem",width:"10rem"}}),n.createElement("div",{className:"partial-loading-background mb-2",style:{height:"1.5rem",width:"12rem"}}),n.createElement("div",{className:"partial-loading-background mb-2 me-2 d-inline-block",style:{height:"1.5rem",width:"3rem"}}),n.createElement("div",{className:"partial-loading-background mb-2 me-2 d-inline-block",style:{height:"1.5rem",width:"4rem"}}),n.createElement("div",{className:"partial-loading-background mb-2 me-2 d-inline-block",style:{height:"1.5rem",width:"3.5rem"}}),n.createElement("div",{className:"partial-loading-background mb-2 me-2 d-inline-block",style:{height:"1.5rem",width:"4.5rem"}}))))}},35014:(e,t,a)=>{a.d(t,{I:()=>u});var n=a(20354),r=a(16714),i=a(12754),o=a(39151),l=a(22902),c=a(15311),s=a(11387);function u(){var e=(0,l.T)(),t=e.hasPermissions,a=e.hasLocalPermissions,u=(0,c.r)().hasProduct,d=n.a.useBasicFetch(o.L.config()),m=u(i.x.Primary);return{canWatchPublicly:function(e){var t,a;return!!e&&!!(null===(a=null===(t=d.data)||void 0===t?void 0:t.allowedPublicVideos)||void 0===a?void 0:a[e])},canViewGlance:t(r.C.ViewVideoGlance),canViewResources:!0,canViewInteractives:m&&t(r.C.ViewVideoInteractives),canViewClips:m&&t(r.C.ViewVideoClips),canViewCurriculumLinks:t(r.C.ViewCurriculums),canUseActions:a(r.E.UseVideoActions),canViewPublicLayout:!a(r.E.WatchVideos)&&s.C.hasRegionPrefix(),canViewResourceItems:a(r.E.ViewVideoResourceItems),canNavigate:m}}},93563:(e,t,a)=>{a.d(t,{Z:()=>n});const n={container:"BImYH",background:"aAY0j",topLeft:"azcIT",bottomLeft:"mBkCx",topRight:"tcN5n",bottomRight:"sHsOr",detailsBtn:"jyxT7",content:"PeWbM",highlightPoi:"un8Q0"}}}]);
|
|
2
|
-
//# sourceMappingURL=2672-
|
|
2
|
+
//# sourceMappingURL=2672-b01985cee8-lite.chunk.js.map
|
package/dist/scripts/{2672-0fc559f1d1-lite.chunk.js.map → 2672-b01985cee8-lite.chunk.js.map}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scripts/2672-0fc559f1d1-lite.chunk.js","mappings":"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","sources":["file:///app/packages/libs/common/src/react/services/EventsService.ts","file:///app/packages/libs/shared/src/components/video-at-a-glance/VideoAtAGlance.tsx","file:///app/packages/libs/common/src/react/hooks/UseEventsServiceSubscribe.ts","file:///app/packages/libs/shared/src/components/video-at-a-glance/VideoAtAGlanceUtils.ts","file:///app/packages/libs/shared/src/components/widgets/items/clip-widget-item/ClipWidgetItem.tsx","file:///app/packages/libs/shared/src/components/widgets/items/clip-widget-item/clip-widget-item.scss","file:///app/packages/libs/shared/src/components/resource-thumbnail/resource-thumbnail.scss","file:///app/packages/libs/shared/src/components/resource-thumbnail/ResourceThumbnail.tsx","file:///app/packages/libs/shared/src/utils/ResourceHelper.ts","file:///app/packages/libs/shared/src/components/widgets/items/resource-widget-item/resource-widget-item.scss","file:///app/packages/libs/shared/src/components/widgets/items/resource-widget-item/ResourceWidgetItem.tsx","file:///app/packages/libs/shared/src/flight-requests/ThemeRequests.ts","file:///app/packages/libs/shared/src/hooks/usePrevious.ts","file:///app/packages/libs/shared/src/hooks/useTableOfContentsScroll.tsx","file:///app/packages/projects/lite/src/shared/components/play-page/components/title-and-actions.scss","file:///app/packages/projects/lite/src/shared/components/play-page/components/PlayPageTitleAndActions.tsx","file:///app/packages/projects/lite/src/shared/components/player-placeholder/player-placeholder.scss","file:///app/packages/projects/lite/src/shared/components/player-placeholder/PlayerPlaceholder.tsx","file:///app/packages/projects/lite/src/shared/components/video-details/VideoDetailsPartial.tsx","file:///app/packages/projects/lite/src/shared/hooks/useVideoFeatureAccess.ts","file:///app/packages/libs/shared/src/components/video-at-a-glance/video-at-a-glance.scss"],"sourcesContent":["type EventCallback = (...args: any[]) => void;\n\ninterface EventListener {\n callback: EventCallback,\n executionLimit?: number;\n executionCount?: number;\n}\n\ninterface EventsListenerHash {\n [event: string]: EventListener[];\n}\n\nexport class StaticEventsService {\n public subscribe(event: string, callback: EventCallback): void {\n this.registerListener(event, callback);\n }\n\n public subscribeOnce(event: string, callback: EventCallback): void {\n this.registerListener(event, callback, 1);\n }\n\n public unsubscribe(event: string, callback?: EventCallback): void {\n this.deregisterListener(event, callback);\n }\n\n public trigger(event: string, ...args: any[]): void {\n this.triggerCallbacks(event, args);\n }\n\n /**\n * Private functions/members below\n */\n\n private listeners: EventsListenerHash = {};\n\n private registerListener(event: string, callback: EventCallback, executionLimit?: number) {\n if (typeof event !== 'string')\n throw new Error('Event name must be a string');\n\n if (typeof callback !== 'function')\n throw new Error('Event callback must be a function');\n\n if (!!executionLimit && typeof executionLimit !== 'number')\n throw new Error('Execution limit must be a number or undefined');\n\n this.listeners[event] = this.listeners[event] ?? [];\n this.listeners[event].push({ callback, executionLimit });\n }\n\n private deregisterListener(event: string, callback?: EventCallback): void {\n if (typeof event !== 'string')\n throw new Error('Event name must be a string');\n\n if (!!callback && typeof callback !== 'function')\n throw new Error('Event callback must be a function');\n \n if (!callback) {\n this.listeners[event] = [];\n return;\n }\n\n const idxToRemove = this.listeners[event]?.findIndex(e => e.callback === callback);\n\n if (typeof idxToRemove !== 'number' || idxToRemove === -1)\n return;\n\n this.listeners[event].splice(idxToRemove, 1);\n\n if (this.listeners[event].length === 0)\n delete this.listeners[event];\n }\n\n private triggerCallbacks(event: string, ...args: any[]): void {\n if (!this.listeners[event])\n return;\n\n const callbacksToRemove: EventCallback[] = [];\n\n this.listeners[event].forEach(listener => {\n if (typeof listener.executionLimit === 'number') {\n listener.executionCount = listener.executionCount ?? 0;\n listener.executionCount++;\n\n if (listener.executionCount === listener.executionLimit)\n callbacksToRemove.push(listener.callback);\n }\n\n listener.callback.apply(null, ...args);\n });\n\n if (!callbacksToRemove.length)\n return;\n\n callbacksToRemove.forEach(callback => this.deregisterListener(event, callback));\n }\n}\n\nexport const EventsService = new StaticEventsService();","import * as React from 'react';\n\nimport { Core } from 'libs/common/core';\nimport { ObjectHelper } from 'libs/common/react/utils/ObjectHelper';\n\nimport { DivButton } from 'libs/shared/components/div-button/DivButton';\nimport { TagHelper } from 'libs/shared/components/tags/TagHelper';\nimport { TagList } from 'libs/shared/components/tags/TagList';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { ImageSize } from 'libs/shared/enums/Images';\nimport { PointOfInterest, Tag, Theme, ThemeColours, Video } from 'libs/shared/interfaces';\nimport { ImageHelper } from 'libs/shared/utils/ImageHelper';\n\nimport { hasGlanceData, onClickMarkDown, useGlanceMarkdown, useHighlightPointOfInterest } from './VideoAtAGlanceUtils';\n\nimport styles from './video-at-a-glance.scss';\n\nconst namespace = 'shared.videoAtAGlance';\n\nfunction getThemeColours(theme: Theme): ThemeColours {\n if (theme?.data?.colours?.primary && theme?.data?.colours?.secondary)\n return theme.data.colours;\n\n // On the off chance that a theme is in use that doesn't have any colours, safely fall back to these generic colours.\n return {\n primary: '#F5F4FF',\n secondary: '#9294FF'\n };\n}\n\ninterface VideoAtAGlanceProps {\n video: Video;\n theme: Theme;\n pointsOfInterest?: PointOfInterest[];\n suppressInteractivity?: boolean;\n onClickShowCurriculumLinks?: () => void;\n onClickShowDescription?: () => void;\n setStartTime?: (time: number) => void;\n getTagAppLink?: (tag: Tag) => Core.AppLink;\n}\n\nexport function VideoAtAGlance(props: VideoAtAGlanceProps): JSX.Element {\n const canViewGlance = hasGlanceData(props.video, props.theme);\n\n const markdownHTML = useGlanceMarkdown(\n props.video,\n props.pointsOfInterest,\n canViewGlance,\n props.suppressInteractivity\n );\n \n const glanceContentRef = useHighlightPointOfInterest(props.pointsOfInterest, canViewGlance);\n \n if (!canViewGlance)\n return <></>;\n\n const themeColours = getThemeColours(props.theme);\n\n const showDescriptionLink = typeof props.onClickShowDescription === 'function';\n const showCurriculumsLink = typeof props.onClickShowCurriculumLinks === 'function';\n\n return (\n <div\n className={`rounded border px-3 px-sm-5 py-3 mb-3 position-relative d-flex justify-content-center ${styles.container}`}\n style={{ backgroundColor: themeColours.primary }}\n >\n <div className={`${styles.content} d-flex align-items-center pt-4 pt-sm-0`}>\n <div>\n <h2 className='h4'><Text namespace={namespace} phrase='videoAtAGlance' /></h2>\n {showDescriptionLink && (\n <DivButton\n onClick={props.onClickShowDescription}\n className={`${styles.detailsBtn} position-absolute cursor-pointer me-4 fw-semibold text-info`}\n >\n <Text namespace={namespace} phrase='readFullDescription' />\n </DivButton>\n )}\n <div\n ref={glanceContentRef}\n onClick={(event: React.MouseEvent<HTMLDivElement, MouseEvent>) =>\n onClickMarkDown(event, props.pointsOfInterest, props.setStartTime)\n }\n dangerouslySetInnerHTML={{ __html: markdownHTML }}\n />\n\n {(() => {\n if (!props.video.tags?.data?.length)\n return <></>;\n\n return (\n <div className='py-1'>\n <TagList\n tags={props.video?.tags?.data}\n themeColours={themeColours}\n {...TagHelper.getTagActionProps(props.getTagAppLink, props.suppressInteractivity)}\n />\n </div>\n );\n })()}\n\n <div className='mt-2'>\n {showCurriculumsLink && (\n <DivButton\n onClick={props.onClickShowCurriculumLinks}\n className='cursor-pointer d-inline-block fw-semibold text-info'\n >\n <Text namespace={namespace} phrase='seeCurriculumLinks' />\n </DivButton>\n )}\n </div>\n </div>\n </div>\n\n {(() => {\n const themeImages = props.theme?.data?.images ?? {};\n\n const themeImageSegments = ObjectHelper\n .keys(themeImages)\n .filter((key: keyof typeof themeImages) => {\n return !ObjectHelper.isEmpty(themeImages[key]);\n });\n\n return themeImageSegments.map((segment: keyof typeof themeImages) => {\n const url = ImageHelper.createUrl(themeImages[segment]?.url, { size: ImageSize.Medium });\n\n return (\n <div\n key={themeImages[segment]?.fileId}\n className={`${styles[segment]} ${styles.background} d-none d-lg-block`}\n style={{\n backgroundImage: `url('${url}')`\n }}\n />\n );\n });\n })()}\n </div>\n );\n}","import { useEffect } from 'react';\n\nimport { EventsService } from 'libs/common/react/services/EventsService';\n\n/**\n * \n * @param event the event to subscribe to\n * @param callback the callback function\n * @param once whether to subscribe once\n * @param shouldSubscribe conditionally determine whether to subscribe to events\n * @returns unsubscribe function\n */\nexport function useEventsServiceSubscribe(\n event: string,\n callback: (...args: any[]) => void,\n once?: boolean,\n shouldSubscribe?: boolean\n): () => void {\n const unsubscribe = () => {\n EventsService.unsubscribe(event, callback);\n };\n\n useEffect(() => {\n if (!shouldSubscribe)\n return;\n\n once ? EventsService.subscribeOnce(event, callback) : EventsService.subscribe(event, callback);\n\n return () => {\n unsubscribe();\n };\n }, []);\n\n return unsubscribe;\n}","import { MutableRefObject, useEffect, useRef, useState } from 'react';\nimport * as marked from 'marked';\n\nimport { useEventsServiceSubscribe } from 'libs/common/react/hooks/UseEventsServiceSubscribe';\nimport { EventsService } from 'libs/common/react/services/EventsService';\n\nimport { Clip, Glance, PointOfInterest, Theme, Video } from 'libs/shared/interfaces';\nimport { DurationHelper } from 'libs/shared/utils/DurationHelper';\n\nimport styles from './video-at-a-glance.scss';\n\nconst POI_REGEX = /(\\[.*\\]\\(cv:\\/\\/poi\\?id=[0-9]+\\))/g;\nconst POI_ID_REGEX = /[0-9]+/;\nconst POI_TEXT_REGEX = /\\[.*\\]/;\nconst POI_TEXT_BRACES_REGEX = /[\\[\\]]/g;\n\nfunction injectPointOfInterestData(\n glance: Glance,\n pointsOfInterest: PointOfInterest[],\n suppressInteractivity?: boolean\n): string {\n if (!pointsOfInterest?.length)\n return glance.content;\n\n return glance.content.replace(POI_REGEX, (substr: string) => {\n const idMatch = substr.match(POI_ID_REGEX);\n \n if (!idMatch?.length)\n return substr;\n\n const poi = pointsOfInterest.find(p => p.id.toString() === idMatch[0]);\n const poiTextMatch = substr.match(POI_TEXT_REGEX);\n \n if (!poi || !poiTextMatch?.length)\n return substr;\n\n const timestamp = `<span class=\"me-2\">${DurationHelper.ToDisplayDuration(poi.startTime * 1000)}</span>`;\n\n let poiText = poiTextMatch[0];\n // strip []\n poiText = poiText.replace(POI_TEXT_BRACES_REGEX, '');\n // if no custom text, set POI description as text\n poiText = poiText || poi.description;\n // prepend timestamp to text and add []\n poiText = `${timestamp} ${poiText}`;\n\n // When we are rendering in a public context without the player we will show simple spans\n return !suppressInteractivity\n ? substr.replace(POI_TEXT_REGEX, `[${poiText}]`)\n : `<span class=\"d-flex\">${poiText}</span>`;\n });\n}\n\nfunction getGlanceContent(\n glance: Glance,\n pointsOfInterest: PointOfInterest[],\n suppressInteractivity?: boolean\n): string {\n const content = injectPointOfInterestData(glance, pointsOfInterest, suppressInteractivity);\n\n return marked(content)\n .split('a href=\"cv://poi')\n .join('a class=\"d-flex\" href=\"cv://poi');\n}\n\n/**\n * Because the markdown is injected as a HTML string, we cannot attach click event handlers directly onto\n * the links that we want to. Instead, we attach one click handler to the entire markdown container, meaning\n * click events bubble up, and we can use `event.target` to see which element was clicked.\n */\nexport function onClickMarkDown(\n event: React.MouseEvent<HTMLDivElement, MouseEvent>,\n pointsOfInterest?: PointOfInterest[],\n setStartTime?: (timeVideosStat: number) => void\n): void {\n event.preventDefault();\n\n const href = (event.target as HTMLDivElement).getAttribute('href');\n\n // Ignore click events that do not have a href\n if (!href?.includes('cv://poi') || !pointsOfInterest?.length)\n return;\n \n // When a timestamp is clicked, we update the player time\n const poiId = href.split('cv://poi?id=')[1];\n const poi = pointsOfInterest.find(p => p.id.toString() === poiId);\n setStartTime && poi && setStartTime(poi.startTime);\n}\n\nexport function useGlanceMarkdown(\n video: Video,\n pointsOfInterest?: PointOfInterest[],\n hasGlanceData?: boolean,\n suppressInteractivity?: boolean\n): string {\n const [ markdownHTML, setMarkdownHTML ] = useState('');\n\n useEffect(() => {\n if (!hasGlanceData)\n return;\n\n const content = getGlanceContent(video.glance, pointsOfInterest, suppressInteractivity);\n\n setMarkdownHTML(content);\n }, [ video.glance?.content, pointsOfInterest?.length, hasGlanceData ]);\n\n return markdownHTML;\n}\n\nexport function useHighlightPointOfInterest(\n pointsOfInterest: PointOfInterest[],\n shouldHighlight: boolean\n): MutableRefObject<HTMLDivElement> {\n const ref = useRef<HTMLDivElement>();\n\n useEventsServiceSubscribe('player:poi:mouseover', onPlayerPoiMouseOver, null, shouldHighlight);\n useEventsServiceSubscribe('player:poi:mouseleave', onPlayerPoiMouseLeave, null, shouldHighlight);\n\n useEffect(() => {\n if (!ref.current || !shouldHighlight)\n return;\n\n const poiEls = getAllPoiEls();\n\n poiEls.forEach(el => el.addEventListener('mouseover', onGlancePoiMouseOver));\n poiEls.forEach(el => el.addEventListener('mouseleave', onGlancePoiMouseLeave));\n\n return () => {\n poiEls.forEach(el => el.removeEventListener('mouseover', onGlancePoiMouseOver));\n poiEls.forEach(el => el.removeEventListener('mouseleave', onGlancePoiMouseLeave));\n };\n }, [ref.current]);\n\n function onPlayerPoiMouseOver(pointOfInterest: PointOfInterest): void {\n const poiId = pointOfInterest?.id;\n\n if (!poiId)\n return;\n\n getPoiEl(poiId)?.classList.add(styles.highlightPoi);\n }\n\n function onPlayerPoiMouseLeave(): void {\n getAllPoiEls()?.forEach(el => el.classList.remove(styles.highlightPoi));\n }\n\n /**\n * `this` will be the element to which the eventListener is bound.\n */\n function onGlancePoiMouseOver(): void {\n const href = this.getAttribute('href');\n\n if (!href?.includes('cv://poi') || !pointsOfInterest?.length)\n return;\n\n const id = href.split('cv://poi?id=')[1];\n\n if (!id)\n return;\n\n const poi = pointsOfInterest.find(p => p.id.toString() === id);\n\n if (poi)\n EventsService.trigger('glance:poi:mouseover', poi);\n }\n\n function onGlancePoiMouseLeave(): void {\n EventsService.trigger('glance:poi:mouseleave');\n }\n\n function getPoiEl(id: string): HTMLAnchorElement {\n return ref.current?.querySelector(`[href=\"cv://poi?id=${id}\"]`);\n }\n\n function getAllPoiEls(): NodeListOf<HTMLAnchorElement> {\n return ref.current?.querySelectorAll(`[href*=\"cv://poi\"]`);\n }\n\n return ref;\n}\n\nexport function hasGlanceData(video: Video | Clip, glanceTheme: Theme): boolean {\n return glanceTheme &&\n video.glance?.content &&\n video.glance?.format === 'text/markdown';\n}","import React from 'react';\n\nimport { LocationContext } from 'libs/analytics/interfaces';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { VideoThumbnail } from 'libs/shared/components/thumbnails/video/VideoThumbnail';\nimport { VideoOwnerText } from 'libs/shared/components/video-owner-text/VideoOwnerText';\nimport { FixedWidgetItemProps } from 'libs/shared/components/widgets/items/FixedWidgetItemProps';\nimport { ImageSize } from 'libs/shared/enums/Images';\nimport { ThumbnailTextPosition } from 'libs/shared/enums/ThumbnailTextPosition';\nimport { Clip, Video } from 'libs/shared/interfaces';\n\nimport styles from './clip-widget-item.scss';\n\nexport interface ClipWidgetItemProps extends FixedWidgetItemProps<Clip> {\n video: Video;\n imageCdnUrl: string;\n}\n\nexport const ClipWidgetItem = React.memo(function(props: ClipWidgetItemProps): JSX.Element {\n return (\n <div className={`flex-shrink-0 px-1 ${styles.item}`}>\n <div className='row m-0 border rounded p-2 h-100'>\n <div className='col-6 p-0'>\n <VideoThumbnail\n video={props.data}\n appLink={props.getAppLink(props.data)}\n type='cosmetic'\n imageOptions={{ size: ImageSize.Small }}\n textPosition={ThumbnailTextPosition.Independent}\n analyticsOptions={{ location: LocationContext.SlidingListItem }}\n preload\n />\n </div>\n\n <div className='col-6 p-0'>\n <div className='ps-2'>\n <AppLink appLink={props.getAppLink(props.data)}>\n <h3 className='h6 mb-1'><span className='clamp-2'>{props.data.name}</span></h3>\n </AppLink>\n\n <VideoOwnerText\n owner={props.data.owner}\n isClickViewCurated={props.data._isClickViewCurated?.value}\n imageCdnUrl={props.imageCdnUrl}\n />\n </div>\n </div>\n </div>\n </div>\n );\n});","// extracted by mini-css-extract-plugin\nexport default {\"item\":\"hzP5u\",\"thumbnail\":\"z2JjL\",\"smallItemIconWidth\":\"PfCrs\",\"smallItemInfoWidth\":\"AHFZu\",\"smallProgressBarContainer\":\"WfOtB\",\"smallItemNameWidth\":\"Rq6Cd\"};","// extracted by mini-css-extract-plugin\nexport default {\"imageStyle\":\"FFgf3\",\"imageTypeResource\":\"z4O5p\"};","import React from 'react';\n\nimport { UrlHelper } from 'libs/analytics/utils/UrlHelper';\n\nimport { ImageSize, ImageType, ResizeType } from 'libs/shared/enums/Images';\nimport { ResourceFileType } from 'libs/shared/enums/ResourceFileType';\nimport { Link, Resource } from 'libs/shared/interfaces';\nimport { ImageHelper, ImageOptions } from 'libs/shared/utils/ImageHelper';\nimport { MasterTypeHelper } from 'libs/shared/utils/MasterTypeHelper';\n\nimport { BaseImage } from '../image/BaseImage';\n\nimport styles from './resource-thumbnail.scss';\n\n// Used for both PDFs and Links where we don't know the image ratio\nconst DYNAMIC_RATIO_IMAGE_OPTIONS: ImageOptions = {\n width: 200,\n resizeType: ResizeType.Cover\n};\n\nfunction getThumbnailUrl(imageCdnUrl: string, resource: Resource | Link): string {\n const imageType = getImageType(resource);\n\n // Use the thumbnail if defined\n if ('thumbnail' in resource && resource.thumbnail?.url)\n return ImageHelper.createUrl(resource.thumbnail?.url, { ...DYNAMIC_RATIO_IMAGE_OPTIONS });\n \n const previewUrl = UrlHelper.safeUrlConcat(imageCdnUrl, '/v1/previews');\n\n if (!MasterTypeHelper.isResource(resource))\n return ImageHelper.createResourceImage(previewUrl, resource.url, { ...DYNAMIC_RATIO_IMAGE_OPTIONS });\n\n if (imageType === ImageType.Pdf) {\n return resource.metadata.type === ResourceFileType.Pdf\n ? ImageHelper.createResourceImage(previewUrl, resource.url, { ...DYNAMIC_RATIO_IMAGE_OPTIONS })\n : ImageHelper.createResourceImage(previewUrl, resource.pdf?.url, { ...DYNAMIC_RATIO_IMAGE_OPTIONS });\n }\n\n if (resource.metadata.type !== ResourceFileType.Zip)\n return ImageHelper.createUrl(resource.url, { size: ImageSize.Medium, resizeType: ResizeType.Cover });\n\n return '/images/zip-resource.png';\n}\n\nfunction getImageType(resource: Resource | Link): ImageType {\n if (!MasterTypeHelper.isResource(resource))\n return ImageType.Link;\n\n if (resource.metadata.type === ResourceFileType.Pdf || resource.pdf?.url)\n return ImageType.Pdf;\n\n return ImageType.Thumbnails;\n}\n\ninterface ResourceThumbnailProps {\n imageCdnUrl: string;\n resource: Resource | Link;\n imageErrorFallbackUrl: string;\n preloadImage: boolean;\n}\n\nexport function ResourceThumbnail(props: ResourceThumbnailProps): JSX.Element {\n let metadata = null;\n let rotation = 0;\n\n if (MasterTypeHelper.isResource(props.resource)) {\n metadata = props.resource.metadata;\n rotation = props.resource.thumbnail?.metadata?.rotation ?? 0;\n }\n\n const thumbnailUrl = getThumbnailUrl(props.imageCdnUrl, props.resource);\n\n return (\n <BaseImage\n data={thumbnailUrl}\n imageType={getImageType(props.resource)}\n imageStyle={{ transform: `rotate(${rotation}deg)` }}\n alt={props.resource.name}\n errorFallbackImageSrc={props.imageErrorFallbackUrl}\n imageClassName={metadata?.type === ResourceFileType.Image ? `${styles.imageTypeResource} ${styles.imageStyle}` : ''}\n preload={props.preloadImage}\n preventLoad={!props.preloadImage}\n >\n \n </BaseImage>\n );\n}","import { ResourceType } from 'libs/shared/interfaces';\n\nexport const ResourceHelper = {\n getResourceTypeName(resourceType: ResourceType): string {\n switch (resourceType) {\n case 'additional-materials':\n return 'Additional Materials';\n\n case 'atom-guide':\n return 'ATOM Guide';\n\n case 'teacher-pack':\n return 'Teacher Pack';\n\n case 'student-activity':\n return 'Student Activity';\n\n default:\n return 'N/A';\n }\n }\n};","// extracted by mini-css-extract-plugin\nexport default {\"imageStyle\":\"I9E5O\",\"item\":\"tqUFn\",\"dashboard\":\"o7j7p\",\"playPage\":\"V2RwX\",\"aspectRatio\":\"OnJDH\",\"outerContainer\":\"CIFy7\",\"innerContainer\":\"oUZPD\",\"actions\":\"jzGAm\",\"titleBelow\":\"Cpjs3\",\"thumbnailContainer\":\"EDiGi\",\"titleAbove\":\"e9ejn\",\"teacherPack\":\"_tdVE\",\"text\":\"g5NWS\",\"hoverState\":\"xRYhX\",\"atomGuide\":\"X39wU\",\"studentActivity\":\"X9pMl\",\"additionalMaterials\":\"qRVUo\",\"userUploaded\":\"_18JaV\",\"imageTypeResource\":\"KYtZL\",\"download\":\"fbb_e\"};","import React from 'react';\n\nimport { AppLinkHelper } from 'libs/common/backbone/core';\n\nimport { AnalyticsHelper } from 'libs/analytics/AnalyticsHelper';\nimport { AnalyticsOptions, EntityType, UserAction } from 'libs/analytics/interfaces';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { DivButton } from 'libs/shared/components/div-button/DivButton';\nimport { ResourceThumbnail } from 'libs/shared/components/resource-thumbnail/ResourceThumbnail';\nimport { SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\nimport { TitleSubText } from 'libs/shared/components/title-sub-text/TitleSubText';\nimport { Tooltip } from 'libs/shared/components/tooltip/Tooltip';\nimport { TypeBadge } from 'libs/shared/components/type-badge/TypeBadge';\nimport { FixedWidgetItemProps } from 'libs/shared/components/widgets/items/FixedWidgetItemProps';\nimport { SeoConstants } from 'libs/shared/constants/SeoConstants';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { ResourceFileType } from 'libs/shared/enums/ResourceFileType';\nimport { useBreakpoints } from 'libs/shared/hooks/useBreakpoints';\nimport { Link, Resource, ResourceType } from 'libs/shared/interfaces';\nimport { MasterTypeHelper } from 'libs/shared/utils/MasterTypeHelper';\nimport { ResourceHelper } from 'libs/shared/utils/ResourceHelper';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport styles from './resource-widget-item.scss';\n\nfunction getColour(resourceType?: ResourceType): string {\n switch (resourceType) {\n case 'atom-guide':\n return styles.atomGuide;\n case 'student-activity':\n return styles.studentActivity;\n case 'teacher-pack':\n return styles.teacherPack;\n case 'additional-materials':\n return styles.additionalMaterials;\n default:\n return styles.userUploaded;\n }\n}\n\nfunction useCanPreview(data: Resource | Link, actionBehaviour: 'normal' | 'public'): boolean {\n const breakpoints = useBreakpoints();\n\n /**\n * When viewing publicly, the resource applink will\n * prompt the user to sign-up (not preview the underlying resource)\n */\n if (actionBehaviour === 'public')\n return true;\n\n if (breakpoints.xs || breakpoints.sm)\n return false;\n\n if (data.type !== 'resource')\n return false;\n \n // Require metadata\n if (!('metadata' in data))\n return false;\n\n // We can preview images\n if (data.metadata.type === ResourceFileType.Image)\n return true;\n\n // If we are a pdf and have a url\n if (data.metadata.type === ResourceFileType.Pdf)\n return !!data.url;\n\n // If we have a pdf assoc\n return !!data.pdf?.url;\n}\n\ninterface ResourceTheme {\n containerClass?: string;\n thumbnailContainerClass?: string;\n}\n\nexport interface ResourceTileProps {\n data: Resource | Link;\n imageCdnUrl: string;\n imageErrorFallbackUrl?: string;\n theme?: ResourceTheme;\n\n titlePosition: 'above' | 'below' | 'none';\n hideTypeBadge?: boolean;\n onClickDownload?: (e: React.MouseEvent<HTMLElement>, resource: Resource) => void;\n applyHoverState?: boolean;\n preloadImage: boolean;\n actionBehaviour?: 'normal' | 'public';\n}\n\nResourceTile.defaultProps = {\n preloadImage: true,\n actionBehaviour: 'normal'\n};\n\n/**\n * This component intentionally doesn't contain an appLink/download link\n * so that the resource download behaviour can be handled differently depending\n * on where this is rendered (e.g. primary play page vs embedded player)\n */\nexport function ResourceTile(props: ResourceTileProps): JSX.Element {\n let metadata = null;\n\n if ('metadata' in props.data) {\n metadata = props.data.metadata;\n }\n\n const isResource = MasterTypeHelper.isType<Resource>(props.data, MasterType.Resource);\n\n function getInnerContainerClass(resourceType: ResourceType): string {\n let baseClass = `\n d-flex flex-column align-items-center justify-content-end rounded-3 h-100\n position-relative ${getColour(resourceType)} ${styles.innerContainer}`;\n\n if (props.theme?.containerClass) {\n baseClass += ` ${props.theme.containerClass}`;\n } else {\n baseClass += ` pt-3 px-3`;\n }\n\n if (props.applyHoverState) {\n baseClass += ` ${styles.hoverState}`;\n }\n\n return baseClass;\n }\n\n return (\n <>\n <div className={styles.aspectRatio}>\n <div className={styles.outerContainer}>\n <div className={getInnerContainerClass(metadata?.resourceType)}>\n {props.titlePosition === 'above' && (\n <Tooltip title={props.data.name}>\n <h3 className={`text-center text-break h5 mb-3 ${styles.text}`}>\n <span className='clamp-1'>{props.data.name}</span>\n </h3>\n </Tooltip>\n )}\n\n <div className={`\n ${props.theme?.thumbnailContainerClass ?? ''} w-75 overflow-hidden \n ${styles.thumbnailContainer} ${props.titlePosition === 'above' ? styles.titleAbove : ''} \n ${styles.imageStyle}\n `}>\n <ResourceThumbnail\n resource={props.data}\n imageCdnUrl={props.imageCdnUrl}\n imageErrorFallbackUrl={props.imageErrorFallbackUrl}\n preloadImage={props.preloadImage}\n />\n </div>\n\n {isResource && props.onClickDownload && props.actionBehaviour === 'normal' && (\n <div className={styles.actions}>\n <DivButton\n onClick={e => props.onClickDownload(e, props.data as Resource)}\n className={`${styles.download} d-flex align-items-center justify-content-center`}\n >\n <SvgContainer svgName={cvSvgLibrary.Download} />\n </DivButton>\n </div>\n )}\n\n {!props.hideTypeBadge && isResource && (\n <TypeBadge typeId={MasterType.Resource} />\n )}\n </div>\n </div>\n </div>\n {props.titlePosition === 'below' && MasterTypeHelper.isType<Resource>(props.data, MasterType.Resource) && (\n <div className={`mt-1 ${styles.titleBelow}`}>\n {!!props.data?.metadata?.resourceType && (\n <TitleSubText>\n {ResourceHelper.getResourceTypeName(props.data.metadata.resourceType)}\n </TitleSubText>\n )}\n <h3 className='h6 clamp-2'>\n {props.data.name}\n </h3>\n </div>\n )}\n </>\n );\n}\n\nexport interface ResourceWidgetItemProps extends ResourceTileProps, FixedWidgetItemProps<Resource | Link> {\n location: 'play-page' | 'dashboard';\n}\n\nexport const ResourceWidgetItem = React.memo(function(props: ResourceWidgetItemProps): JSX.Element {\n // Mobile is not allowed to preview\n const canPreview = useCanPreview(props.data, props.actionBehaviour);\n\n function getLocationClass(): string {\n if (props.location === 'play-page')\n return styles.playPage;\n\n return styles.dashboard;\n }\n\n const analyticsData = { ...props.analyticsData, ...props.data };\n\n const analyticsOptions: AnalyticsOptions = {\n ...props.analyticsOptions,\n actionType: UserAction.Click,\n entity: props.data.typeId === MasterType.Resource ? EntityType.Resource : EntityType.Link\n };\n\n function logAction(): void {\n AnalyticsHelper.logUserAction(analyticsData, analyticsOptions);\n }\n\n const tileProps: ResourceTileProps = {\n ...props,\n // Apply the hover state if we have a url or the resource can be previewed\n applyHoverState: canPreview || !!props.data.url\n };\n\n return (\n <div className={`px-1 flex-shrink-0 ${styles.item} ${getLocationClass()} ${SeoConstants.RESOURCE_ITEM_SELECTOR}`}>\n {(() => {\n const className = `d-block ${props.titlePosition === 'above' ? 'no-decoration' : ''}`;\n\n // Handle resource links\n if (props.data.type === 'link') {\n return (\n <a href={props.data.url} target='_blank' className={className} onClick={logAction}>\n <ResourceTile {...tileProps} />\n </a>\n );\n }\n\n if (canPreview) {\n /**\n * Previewing resources in a public context will always display the sign-up popup, so there \n * will never be a full URL. For SEO purposes, we deliberately use a span over an anchor\n * to ensure we're not creating self-referencing elements that will burn crawl budget.\n */\n if (props.actionBehaviour === 'public') {\n return (\n <div className={`${className} cursor-pointer d-inline`} onClick={() => {\n logAction();\n AppLinkHelper.trigger(props.getAppLink(props.data));\n }}>\n <ResourceTile {...tileProps} />\n </div>\n );\n }\n\n return (\n <AppLink\n appLink={props.getAppLink(props.data)}\n className={className}\n analyticsData={analyticsData}\n analyticsOptions={analyticsOptions}\n >\n <ResourceTile {...tileProps} />\n </AppLink>\n );\n }\n\n // URLs cannot be previewed\n if (props.data.url) {\n return (\n <a href={props.data.url} className={className} onClick={logAction}>\n <ResourceTile {...tileProps} />\n </a>\n );\n }\n\n // Theres no url, so don't render an <a>\n return (\n <div className={className}>\n <ResourceTile {...tileProps} />\n </div>\n );\n })()}\n </div>\n );\n});","import { HttpVerbs } from 'libs/common/backbone/enums/HttpVerbs';\nimport { Xhr } from 'libs/common/backbone/interfaces';\nimport { UrlHelper } from 'libs/common/backbone/utils/UrlHelper';\nimport { Flight } from 'libs/common/flight';\nimport { HashObject } from 'libs/common/react/interfaces/HashObject';\n\nimport { Theme } from 'libs/shared/interfaces';\n\nimport { ThemeType } from '../enums/ThemeType';\n\nexport const ThemeRequests = {\n theme(id: string): Flight.Request {\n return {\n url: `/api/domain/v1/themes/${id}`,\n key: `themes:${id}`\n };\n },\n\n themeImages(name: string, type: ThemeType): Flight.Request {\n return {\n url: UrlHelper.urlBuilder('/api/domain/v1/themes', { name, type }),\n key: `themes:${name}:${type}`\n };\n },\n\n themes(type?: string): Flight.Request {\n let url = '/api/domain/v1/themes';\n let key = 'themes';\n\n if (type) {\n url += `?type=${type}`;\n key += `:type:${type}`;\n }\n\n return {\n url,\n key,\n formatData: (themes: Theme[]) => {\n return themes.sort((a, b) => a.name.localeCompare(b.name));\n }\n };\n },\n\n createTheme(\n data: Theme,\n success?: (data: HashObject) => void,\n error?: (xhr: Xhr) => void,\n always?: () => void\n ): Flight.Request {\n return {\n url: '/api/domain/v1/themes',\n key: 'theme',\n data,\n type: HttpVerbs.POST,\n invalidationKeys: 'themes',\n success,\n error,\n always\n };\n },\n\n updateTheme(\n id: string,\n data: Theme,\n success?: (data: HashObject) => void,\n error?: (xhr: Xhr) => void,\n always?: () => void\n ): Flight.Request {\n return {\n url: `/api/domain/v1/themes/${id}`,\n key: `update:theme:${id}`,\n data,\n type: HttpVerbs.PUT,\n success,\n error,\n always\n };\n },\n\n deleteTheme(\n id: string,\n success?: (data: HashObject) => void,\n error?: (xhr: Xhr) => void,\n always?: () => void\n ): Flight.Request {\n return {\n url: `/api/domain/v1/themes/${id}`,\n key: `delete:theme:${id}`,\n type: HttpVerbs.DELETE,\n invalidationKeys: 'themes',\n success,\n error,\n always\n };\n }\n};","import React from 'react';\n\n// https://reactjs.org/docs/hooks-faq.html#how-to-get-the-previous-props-or-state\nexport function usePrevious<T>(value: T): T {\n const ref = React.useRef<T>();\n React.useEffect(() => {\n ref.current = value;\n });\n return ref.current;\n}","import React from 'react';\n\nimport { usePrevious } from './usePrevious';\n\nconst HEADER_OFFSET = 80; // Size of header + some extra spacing\n\nexport const useTableOfContentsScroll = (elements: Element[], activeId: string) => {\n const [ hasDoneInitialScroll, setHasDoneInitialScroll ] = React.useState(false);\n\n const previousId = usePrevious(activeId);\n const currentId = activeId;\n\n React.useLayoutEffect(() => {\n if (!hasDoneInitialScroll || previousId !== currentId) {\n const target = elements.find(heading => heading && (heading?.id === currentId));\n\n if (target) {\n const rec = target.getBoundingClientRect();\n\n window.scrollBy({\n top: rec.top - HEADER_OFFSET,\n behavior: 'smooth'\n });\n \n if (!hasDoneInitialScroll)\n setHasDoneInitialScroll(true);\n }\n }\n }, [ elements, previousId, currentId, hasDoneInitialScroll ]);\n};","// extracted by mini-css-extract-plugin\nexport default {\"series\":\"_4XDZ\",\"badgeListContainer\":\"d42pt\"};","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\n\nimport { LocationContext } from 'libs/analytics/interfaces';\n\nimport { Actions } from 'libs/shared/components/actions/Actions';\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\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 { Text } from 'libs/shared/components/text/Text';\nimport { RestrictionPadlock } from 'libs/shared/components/video-list/components/restriction-padlock/RestrictionPadlock';\nimport { VideoSubText } from 'libs/shared/components/video-sub-text/VideoSubText';\nimport { useMergeAudiences } from 'libs/shared/hooks/UseMergeAudiences';\nimport { Clip, PresentationAudience, Series, Video, YearGroup } from 'libs/shared/interfaces';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\nimport { computeVideoMetadata } from 'shared/components/play-page/PlayPageUtils';\nimport { useVideoActions, VideoActionsLocation } from 'shared/hooks/use-video-actions/useVideoActions';\nimport { VideoFeaturesHash } from 'shared/hooks/useVideoFeatureAccess';\n\nimport styles from './title-and-actions.scss';\n\nconst namespace = 'shared.playPage';\n\ninterface PlayPageTitleAndActionsProps {\n media: Clip | Video;\n yearGroups: YearGroup[];\n audiences: PresentationAudience[];\n featureAccess: VideoFeaturesHash;\n getSeriesAppLink?: (series: Series) => Core.AppLink;\n originalVideoAppLink?: Core.AppLink;\n shareId: string;\n}\n\nexport function PlayPageTitleAndActions(props: PlayPageTitleAndActionsProps): JSX.Element {\n const mergedAudience = useMergeAudiences(props.media.subjectPresentationAudiences?.data, props.audiences);\n\n const containerRef = React.useRef<HTMLDivElement>(null);\n const titleContainerRef = React.useRef<HTMLDivElement>(null);\n\n const { hasBadges } = computeVideoMetadata(props.media);\n\n const videoActions = useVideoActions({\n location: VideoActionsLocation.PlayPage,\n shareId: props.shareId\n });\n\n const canViewOriginal = !!props.originalVideoAppLink &&\n VideoHelper.isClip(props.media) &&\n VideoHelper.canViewOriginalVideo(props.media);\n\n return (\n <section className='mb-3 position-relative' ref={containerRef}>\n <div className='d-inline-block w-100' ref={titleContainerRef}>\n {props.featureAccess.canNavigate &&\n <div className='ms-2 float-end'>\n <Actions\n actions={videoActions.getVideoActions(props.media)}\n actionsDropdownClassName='btn btn-outline-dark'\n fetchMore={() => videoActions.fetchMoreActions(props.media)}\n />\n </div>\n }\n\n {!!VideoHelper.isVideo(props.media) && (\n <VideoSubText\n type='series'\n video={props.media}\n appLink={props.getSeriesAppLink?.(props.media.series)}\n className={`${styles.series} text-truncate mw-100`}\n analyticsOptions={{ location: LocationContext.PlayPage }}\n />\n )}\n <h1 className='h4 mb-2 mw-100'>\n <span className='align-self-center'>{props.media.name}</span>\n <RestrictionPadlock\n tooltipPlacement='right'\n className='d-inline-block ps-1'\n video={props.media}\n yearGroups={props.yearGroups}\n />\n </h1>\n\n {hasBadges && (\n <BadgeListContainer className={styles.badgeListContainer}>\n <AudienceLabel\n audience={mergedAudience}\n className='bg-white text-dark'\n border='dark'\n />\n {VideoHelper.isVideo(props.media) && (\n <Badge type={BadgeType.Rating} data={props.media.rating} />\n )}\n {VideoHelper.isVideo(props.media) && (\n <Badge type={BadgeType.ProductionYear} data={props.media.productionYear} />\n )}\n </BadgeListContainer>\n )}\n </div>\n\n {VideoHelper.isClip(props.media) && canViewOriginal && (\n <p className='clamp-1'>\n <Text namespace={namespace} phrase='viewOriginal' />\n \n <AppLink className='info-link' appLink={props.originalVideoAppLink}>\n {props.media._parentVideo?.name}\n </AppLink>\n </p>\n )}\n </section>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"mask\":\"LL7My\",\"centeredIcon\":\"x_1f6\",\"bgImage\":\"QoLgZ\",\"centeredOverlay\":\"BcnSH\"};","import * as React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Core } from 'libs/common/core';\n\nimport { EntityType, LocationContext, SignUpDescriptors, UserAction, WorkflowPhase } from 'libs/analytics/interfaces';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\nimport { ImageSize } from 'libs/shared/enums/Images';\nimport { VideoTypes } from 'libs/shared/interfaces';\nimport { ImageHelper } from 'libs/shared/utils/ImageHelper';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\nimport styles from './player-placeholder.scss';\n\nconst namespace = 'shared.playerPlaceholder';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface PlayerPlaceholderProps {\n video: VideoTypes;\n type: 'pip' | 'public';\n appLink?: Core.AppLink;\n}\n\nexport function PlayerPlaceholder(props: PlayerPlaceholderProps): JSX.Element {\n switch (props.type) {\n case 'pip':\n return <PipPlaceholder {...props} />;\n case 'public':\n return <PublicPlaceholder {...props} />;\n default:\n return <></>;\n }\n}\n\nconst PipPlaceholder = (props: PlayerPlaceholderProps) => (\n <div\n className={`position-relative responsive-img ${styles.bgImage}`}\n style={{ backgroundImage: `url('${VideoHelper.getThumbnail(props.video)?.url ?? ''}')` }}\n >\n <p className={`m-0 text-white h3 ${styles.centeredOverlay}`}>{getPhrase('playingPiP')}</p>\n <div className={styles.mask} />\n </div>\n);\n\nconst PublicPlaceholder = (props: PlayerPlaceholderProps) => {\n const thumbnailUrl = ImageHelper.createUrl(VideoHelper.getThumbnail(props.video)?.url ?? '', {\n size: ImageSize.Large\n });\n\n return (\n <div\n className={`position-relative responsive-img ${styles.bgImage}`}\n style={{ backgroundImage: `url('${thumbnailUrl}')` }}\n >\n <AppLink\n appLink={props.appLink}\n analyticsOptions={{\n actionType: UserAction.Click,\n location: LocationContext.PlayPage,\n entity: EntityType.AppLink,\n workflowPhase: WorkflowPhase.Start,\n descriptor: SignUpDescriptors.SignUp\n }}\n analyticsData={{}}\n >\n <SvgContainer\n svgName={cvSvgLibrary.PlayCircle}\n className={styles.centeredIcon}\n />\n <div className={styles.mask} />\n </AppLink>\n </div>\n );\n};","import React from 'react';\n\nexport function VideoDetailsPartial(): JSX.Element {\n return (\n <div className='p-3 mb-3 border rounded'>\n <div className='row'>\n <div className='pe-3 col-md-7 border-right'>\n <div className='partial-loading-background mb-2' style={{ height: '1.5rem', width: '12rem' }}></div>\n <div className='partial-loading-background mb-2' style={{ height: '4.5rem' }}></div>\n <div className='partial-loading-background' style={{ height: '1.5rem', width: '15rem' }}></div>\n </div>\n <div className='col-md-5 ps-md-3 pt-3 pt-md-0'>\n <div className='partial-loading-background mb-2' style={{ height: '1.5rem', width: '7rem' }}></div>\n <div className='partial-loading-background mb-2' style={{ height: '1.5rem', width: '10rem' }}></div>\n <div className='partial-loading-background mb-2' style={{ height: '1.5rem', width: '12rem' }}></div>\n <div className='partial-loading-background mb-2 me-2 d-inline-block' style={{ height: '1.5rem', width: '3rem' }}></div>\n <div className='partial-loading-background mb-2 me-2 d-inline-block' style={{ height: '1.5rem', width: '4rem' }}></div>\n <div className='partial-loading-background mb-2 me-2 d-inline-block' style={{ height: '1.5rem', width: '3.5rem' }}></div>\n <div className='partial-loading-background mb-2 me-2 d-inline-block' style={{ height: '1.5rem', width: '4.5rem' }}></div>\n </div>\n </div>\n </div>\n );\n}","import { Flight } from 'libs/common/react/index';\n\nimport { LocalPermissionName, PermissionName } from 'libs/shared/enums/PermissionName';\nimport { ProductId } from 'libs/shared/enums/ProductId';\nimport { ConfigRequests } from 'libs/shared/flight-requests/ConfigRequests';\nimport { usePermissions } from 'libs/shared/hooks/usePermissions';\nimport { useProducts } from 'libs/shared/hooks/UseProducts';\nimport { Config } from 'libs/shared/interfaces/models/Config';\n\nimport { LiteRouteHelper } from 'shared/utils/LiteRouteHelper';\n\nexport interface VideoFeaturesHash {\n canViewGlance: boolean;\n canViewResources: boolean;\n canViewInteractives: boolean;\n canViewClips: boolean;\n canUseActions: boolean;\n canViewPublicLayout: boolean;\n canNavigate: boolean;\n canViewCurriculumLinks: boolean;\n canViewResourceItems: boolean;\n canWatchPublicly: (videoId: string) => boolean;\n}\n\nexport function useVideoFeatureAccess() {\n const { hasPermissions, hasLocalPermissions } = usePermissions();\n const { hasProduct } = useProducts();\n const config = Flight.useBasicFetch<Config>(ConfigRequests.config());\n\n const hasNP = hasProduct(ProductId.Primary);\n\n function showPublicLayout(): boolean {\n /**\n * Authenticated users should never see the placeholder\n */\n if (hasLocalPermissions(LocalPermissionName.WatchVideos))\n return false;\n\n /**\n * Accessing a play page unathenticated will have different contextual behabviours:\n * - For a share page, the user should see the video and never the placeholder\n * - For a public browsing page (ie. using a route-prefix) they should see the placeholder\n */\n return LiteRouteHelper.hasRegionPrefix();\n }\n\n /**\n * Publicly available video ids are maintained on the backend config. \n */\n function canWatchPublicly(videoId: string): boolean {\n if (!videoId)\n return false;\n\n return !!config.data?.allowedPublicVideos?.[videoId];\n }\n\n return {\n canWatchPublicly,\n canViewGlance: hasPermissions(PermissionName.ViewVideoGlance),\n canViewResources: true,\n canViewInteractives: hasNP && hasPermissions(PermissionName.ViewVideoInteractives),\n canViewClips: hasNP && hasPermissions(PermissionName.ViewVideoClips),\n canViewCurriculumLinks: hasPermissions(PermissionName.ViewCurriculums),\n canUseActions: hasLocalPermissions(LocalPermissionName.UseVideoActions),\n canViewPublicLayout: showPublicLayout(),\n canViewResourceItems: hasLocalPermissions(LocalPermissionName.ViewVideoResourceItems),\n canNavigate: hasNP\n };\n}","// extracted by mini-css-extract-plugin\nexport default {\"container\":\"BImYH\",\"background\":\"aAY0j\",\"topLeft\":\"azcIT\",\"bottomLeft\":\"mBkCx\",\"topRight\":\"tcN5n\",\"bottomRight\":\"sHsOr\",\"detailsBtn\":\"jyxT7\",\"content\":\"PeWbM\",\"highlightPoi\":\"un8Q0\"};"],"names":["EventsService","listeners","event","callback","this","registerListener","deregisterListener","args","triggerCallbacks","executionLimit","Error","push","idxToRemove","findIndex","e","splice","length","callbacksToRemove","forEach","listener","executionCount","apply","namespace","VideoAtAGlance","props","canViewGlance","video","theme","markdownHTML","pointsOfInterest","suppressInteractivity","glanceContentRef","themeColours","data","colours","primary","secondary","showDescriptionLink","onClickShowDescription","showCurriculumsLink","onClickShowCurriculumLinks","className","style","backgroundColor","phrase","onClick","ref","setStartTime","dangerouslySetInnerHTML","__html","tags","getTagAppLink","themeImages","images","filter","key","map","segment","url","size","fileId","backgroundImage","useEventsServiceSubscribe","once","shouldSubscribe","unsubscribe","useEffect","POI_REGEX","POI_ID_REGEX","POI_TEXT_REGEX","POI_TEXT_BRACES_REGEX","onClickMarkDown","preventDefault","href","target","getAttribute","includes","poiId","split","poi","find","p","id","toString","startTime","useGlanceMarkdown","hasGlanceData","useState","setMarkdownHTML","content","glance","replace","substr","idMatch","match","poiTextMatch","timestamp","DurationHelper","poiText","description","injectPointOfInterestData","marked","join","getGlanceContent","useHighlightPointOfInterest","shouldHighlight","useRef","onGlancePoiMouseOver","onGlancePoiMouseLeave","getAllPoiEls","current","querySelectorAll","pointOfInterest","querySelector","getPoiEl","classList","add","el","remove","poiEls","addEventListener","removeEventListener","glanceTheme","format","ClipWidgetItem","VideoThumbnail","appLink","getAppLink","type","imageOptions","textPosition","ThumbnailTextPosition","analyticsOptions","location","preload","AppLink","name","VideoOwnerText","owner","isClickViewCurated","_isClickViewCurated","value","imageCdnUrl","DYNAMIC_RATIO_IMAGE_OPTIONS","width","resizeType","getImageType","resource","MasterTypeHelper","metadata","ResourceFileType","pdf","ResourceThumbnail","rotation","thumbnail","thumbnailUrl","imageType","ImageHelper","previewUrl","UrlHelper","getThumbnailUrl","BaseImage","imageStyle","transform","alt","errorFallbackImageSrc","imageErrorFallbackUrl","imageClassName","preloadImage","preventLoad","ResourceHelper","getResourceTypeName","resourceType","ResourceTile","isResource","MasterType","baseClass","getColour","containerClass","applyHoverState","getInnerContainerClass","titlePosition","Tooltip","title","thumbnailContainerClass","onClickDownload","actionBehaviour","DivButton","SvgContainer","svgName","hideTypeBadge","TypeBadge","typeId","TitleSubText","defaultProps","ResourceWidgetItem","breakpoints","canPreview","useBreakpoints","xs","sm","analyticsData","actionType","entity","logAction","AnalyticsHelper","tileProps","SeoConstants","ThemeRequests","themes","formatData","sort","a","b","localeCompare","createTheme","success","error","always","invalidationKeys","updateTheme","deleteTheme","usePrevious","useTableOfContentsScroll","elements","activeId","hasDoneInitialScroll","setHasDoneInitialScroll","previousId","currentId","heading","rec","getBoundingClientRect","window","scrollBy","top","behavior","PlayPageTitleAndActions","mergedAudience","media","subjectPresentationAudiences","audiences","containerRef","titleContainerRef","hasBadges","videoActions","useVideoActions","shareId","canViewOriginal","originalVideoAppLink","VideoHelper","featureAccess","canNavigate","Actions","actions","getVideoActions","actionsDropdownClassName","fetchMore","fetchMoreActions","VideoSubText","getSeriesAppLink","series","RestrictionPadlock","tooltipPlacement","yearGroups","BadgeListContainer","AudienceLabel","audience","border","Badge","rating","productionYear","Text","_parentVideo","getPhrase","LanguageService","PlayerPlaceholder","PipPlaceholder","PublicPlaceholder","workflowPhase","descriptor","SignUp","VideoDetailsPartial","height","useVideoFeatureAccess","hasPermissions","hasLocalPermissions","hasProduct","config","hasNP","canWatchPublicly","videoId","allowedPublicVideos","canViewResources","canViewInteractives","canViewClips","canViewCurriculumLinks","canUseActions","canViewPublicLayout","canViewResourceItems"],"sourceRoot":""}
|
|
1
|
+
{"version":3,"file":"scripts/2672-b01985cee8-lite.chunk.js","mappings":"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","sources":["file:///app/packages/libs/common/src/react/services/EventsService.ts","file:///app/packages/libs/shared/src/components/video-at-a-glance/VideoAtAGlance.tsx","file:///app/packages/libs/common/src/react/hooks/UseEventsServiceSubscribe.ts","file:///app/packages/libs/shared/src/components/video-at-a-glance/VideoAtAGlanceUtils.ts","file:///app/packages/libs/shared/src/components/widgets/items/clip-widget-item/ClipWidgetItem.tsx","file:///app/packages/libs/shared/src/components/widgets/items/clip-widget-item/clip-widget-item.scss","file:///app/packages/libs/shared/src/components/resource-thumbnail/resource-thumbnail.scss","file:///app/packages/libs/shared/src/components/resource-thumbnail/ResourceThumbnail.tsx","file:///app/packages/libs/shared/src/utils/ResourceHelper.ts","file:///app/packages/libs/shared/src/components/widgets/items/resource-widget-item/resource-widget-item.scss","file:///app/packages/libs/shared/src/components/widgets/items/resource-widget-item/ResourceWidgetItem.tsx","file:///app/packages/libs/shared/src/flight-requests/ThemeRequests.ts","file:///app/packages/libs/shared/src/hooks/usePrevious.ts","file:///app/packages/libs/shared/src/hooks/useTableOfContentsScroll.tsx","file:///app/packages/projects/lite/src/shared/components/play-page/components/title-and-actions.scss","file:///app/packages/projects/lite/src/shared/components/play-page/components/PlayPageTitleAndActions.tsx","file:///app/packages/projects/lite/src/shared/components/player-placeholder/player-placeholder.scss","file:///app/packages/projects/lite/src/shared/components/player-placeholder/PlayerPlaceholder.tsx","file:///app/packages/projects/lite/src/shared/components/video-details/VideoDetailsPartial.tsx","file:///app/packages/projects/lite/src/shared/hooks/useVideoFeatureAccess.ts","file:///app/packages/libs/shared/src/components/video-at-a-glance/video-at-a-glance.scss"],"sourcesContent":["type EventCallback = (...args: any[]) => void;\n\ninterface EventListener {\n callback: EventCallback,\n executionLimit?: number;\n executionCount?: number;\n}\n\ninterface EventsListenerHash {\n [event: string]: EventListener[];\n}\n\nexport class StaticEventsService {\n public subscribe(event: string, callback: EventCallback): void {\n this.registerListener(event, callback);\n }\n\n public subscribeOnce(event: string, callback: EventCallback): void {\n this.registerListener(event, callback, 1);\n }\n\n public unsubscribe(event: string, callback?: EventCallback): void {\n this.deregisterListener(event, callback);\n }\n\n public trigger(event: string, ...args: any[]): void {\n this.triggerCallbacks(event, args);\n }\n\n /**\n * Private functions/members below\n */\n\n private listeners: EventsListenerHash = {};\n\n private registerListener(event: string, callback: EventCallback, executionLimit?: number) {\n if (typeof event !== 'string')\n throw new Error('Event name must be a string');\n\n if (typeof callback !== 'function')\n throw new Error('Event callback must be a function');\n\n if (!!executionLimit && typeof executionLimit !== 'number')\n throw new Error('Execution limit must be a number or undefined');\n\n this.listeners[event] = this.listeners[event] ?? [];\n this.listeners[event].push({ callback, executionLimit });\n }\n\n private deregisterListener(event: string, callback?: EventCallback): void {\n if (typeof event !== 'string')\n throw new Error('Event name must be a string');\n\n if (!!callback && typeof callback !== 'function')\n throw new Error('Event callback must be a function');\n \n if (!callback) {\n this.listeners[event] = [];\n return;\n }\n\n const idxToRemove = this.listeners[event]?.findIndex(e => e.callback === callback);\n\n if (typeof idxToRemove !== 'number' || idxToRemove === -1)\n return;\n\n this.listeners[event].splice(idxToRemove, 1);\n\n if (this.listeners[event].length === 0)\n delete this.listeners[event];\n }\n\n private triggerCallbacks(event: string, ...args: any[]): void {\n if (!this.listeners[event])\n return;\n\n const callbacksToRemove: EventCallback[] = [];\n\n this.listeners[event].forEach(listener => {\n if (typeof listener.executionLimit === 'number') {\n listener.executionCount = listener.executionCount ?? 0;\n listener.executionCount++;\n\n if (listener.executionCount === listener.executionLimit)\n callbacksToRemove.push(listener.callback);\n }\n\n listener.callback.apply(null, ...args);\n });\n\n if (!callbacksToRemove.length)\n return;\n\n callbacksToRemove.forEach(callback => this.deregisterListener(event, callback));\n }\n}\n\nexport const EventsService = new StaticEventsService();","import * as React from 'react';\n\nimport { Core } from 'libs/common/core';\nimport { ObjectHelper } from 'libs/common/react/utils/ObjectHelper';\n\nimport { DivButton } from 'libs/shared/components/div-button/DivButton';\nimport { TagHelper } from 'libs/shared/components/tags/TagHelper';\nimport { TagList } from 'libs/shared/components/tags/TagList';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { ImageSize } from 'libs/shared/enums/Images';\nimport { PointOfInterest, Tag, Theme, ThemeColours, Video } from 'libs/shared/interfaces';\nimport { ImageHelper } from 'libs/shared/utils/ImageHelper';\n\nimport { hasGlanceData, onClickMarkDown, useGlanceMarkdown, useHighlightPointOfInterest } from './VideoAtAGlanceUtils';\n\nimport styles from './video-at-a-glance.scss';\n\nconst namespace = 'shared.videoAtAGlance';\n\nfunction getThemeColours(theme: Theme): ThemeColours {\n if (theme?.data?.colours?.primary && theme?.data?.colours?.secondary)\n return theme.data.colours;\n\n // On the off chance that a theme is in use that doesn't have any colours, safely fall back to these generic colours.\n return {\n primary: '#F5F4FF',\n secondary: '#9294FF'\n };\n}\n\ninterface VideoAtAGlanceProps {\n video: Video;\n theme: Theme;\n pointsOfInterest?: PointOfInterest[];\n suppressInteractivity?: boolean;\n onClickShowCurriculumLinks?: () => void;\n onClickShowDescription?: () => void;\n setStartTime?: (time: number) => void;\n getTagAppLink?: (tag: Tag) => Core.AppLink;\n}\n\nexport function VideoAtAGlance(props: VideoAtAGlanceProps): JSX.Element {\n const canViewGlance = hasGlanceData(props.video, props.theme);\n\n const markdownHTML = useGlanceMarkdown(\n props.video,\n props.pointsOfInterest,\n canViewGlance,\n props.suppressInteractivity\n );\n \n const glanceContentRef = useHighlightPointOfInterest(props.pointsOfInterest, canViewGlance);\n \n if (!canViewGlance)\n return <></>;\n\n const themeColours = getThemeColours(props.theme);\n\n const showDescriptionLink = typeof props.onClickShowDescription === 'function';\n const showCurriculumsLink = typeof props.onClickShowCurriculumLinks === 'function';\n\n return (\n <div\n className={`rounded border px-3 px-sm-5 py-3 mb-3 position-relative d-flex justify-content-center ${styles.container}`}\n style={{ backgroundColor: themeColours.primary }}\n >\n <div className={`${styles.content} d-flex align-items-center pt-4 pt-sm-0`}>\n <div>\n <h2 className='h4'><Text namespace={namespace} phrase='videoAtAGlance' /></h2>\n {showDescriptionLink && (\n <DivButton\n onClick={props.onClickShowDescription}\n className={`${styles.detailsBtn} position-absolute cursor-pointer me-4 fw-semibold text-info`}\n >\n <Text namespace={namespace} phrase='readFullDescription' />\n </DivButton>\n )}\n <div\n ref={glanceContentRef}\n onClick={(event: React.MouseEvent<HTMLDivElement, MouseEvent>) =>\n onClickMarkDown(event, props.pointsOfInterest, props.setStartTime)\n }\n dangerouslySetInnerHTML={{ __html: markdownHTML }}\n />\n\n {(() => {\n if (!props.video.tags?.data?.length)\n return <></>;\n\n return (\n <div className='py-1'>\n <TagList\n tags={props.video?.tags?.data}\n themeColours={themeColours}\n {...TagHelper.getTagActionProps(props.getTagAppLink, props.suppressInteractivity)}\n />\n </div>\n );\n })()}\n\n <div className='mt-2'>\n {showCurriculumsLink && (\n <DivButton\n onClick={props.onClickShowCurriculumLinks}\n className='cursor-pointer d-inline-block fw-semibold text-info'\n >\n <Text namespace={namespace} phrase='seeCurriculumLinks' />\n </DivButton>\n )}\n </div>\n </div>\n </div>\n\n {(() => {\n const themeImages = props.theme?.data?.images ?? {};\n\n const themeImageSegments = ObjectHelper\n .keys(themeImages)\n .filter((key: keyof typeof themeImages) => {\n return !ObjectHelper.isEmpty(themeImages[key]);\n });\n\n return themeImageSegments.map((segment: keyof typeof themeImages) => {\n const url = ImageHelper.createUrl(themeImages[segment]?.url, { size: ImageSize.Medium });\n\n return (\n <div\n key={themeImages[segment]?.fileId}\n className={`${styles[segment]} ${styles.background} d-none d-lg-block`}\n style={{\n backgroundImage: `url('${url}')`\n }}\n />\n );\n });\n })()}\n </div>\n );\n}","import { useEffect } from 'react';\n\nimport { EventsService } from 'libs/common/react/services/EventsService';\n\n/**\n * \n * @param event the event to subscribe to\n * @param callback the callback function\n * @param once whether to subscribe once\n * @param shouldSubscribe conditionally determine whether to subscribe to events\n * @returns unsubscribe function\n */\nexport function useEventsServiceSubscribe(\n event: string,\n callback: (...args: any[]) => void,\n once?: boolean,\n shouldSubscribe?: boolean\n): () => void {\n const unsubscribe = () => {\n EventsService.unsubscribe(event, callback);\n };\n\n useEffect(() => {\n if (!shouldSubscribe)\n return;\n\n once ? EventsService.subscribeOnce(event, callback) : EventsService.subscribe(event, callback);\n\n return () => {\n unsubscribe();\n };\n }, []);\n\n return unsubscribe;\n}","import { MutableRefObject, useEffect, useRef, useState } from 'react';\nimport * as marked from 'marked';\n\nimport { useEventsServiceSubscribe } from 'libs/common/react/hooks/UseEventsServiceSubscribe';\nimport { EventsService } from 'libs/common/react/services/EventsService';\n\nimport { Clip, Glance, PointOfInterest, Theme, Video } from 'libs/shared/interfaces';\nimport { DurationHelper } from 'libs/shared/utils/DurationHelper';\n\nimport styles from './video-at-a-glance.scss';\n\nconst POI_REGEX = /(\\[.*\\]\\(cv:\\/\\/poi\\?id=[0-9]+\\))/g;\nconst POI_ID_REGEX = /[0-9]+/;\nconst POI_TEXT_REGEX = /\\[.*\\]/;\nconst POI_TEXT_BRACES_REGEX = /[\\[\\]]/g;\n\nfunction injectPointOfInterestData(\n glance: Glance,\n pointsOfInterest: PointOfInterest[],\n suppressInteractivity?: boolean\n): string {\n if (!pointsOfInterest?.length)\n return glance.content;\n\n return glance.content.replace(POI_REGEX, (substr: string) => {\n const idMatch = substr.match(POI_ID_REGEX);\n \n if (!idMatch?.length)\n return substr;\n\n const poi = pointsOfInterest.find(p => p.id.toString() === idMatch[0]);\n const poiTextMatch = substr.match(POI_TEXT_REGEX);\n \n if (!poi || !poiTextMatch?.length)\n return substr;\n\n const timestamp = `<span class=\"me-2\">${DurationHelper.ToDisplayDuration(poi.startTime * 1000)}</span>`;\n\n let poiText = poiTextMatch[0];\n // strip []\n poiText = poiText.replace(POI_TEXT_BRACES_REGEX, '');\n // if no custom text, set POI description as text\n poiText = poiText || poi.description;\n // prepend timestamp to text and add []\n poiText = `${timestamp} ${poiText}`;\n\n // When we are rendering in a public context without the player we will show simple spans\n return !suppressInteractivity\n ? substr.replace(POI_TEXT_REGEX, `[${poiText}]`)\n : `<span class=\"d-flex\">${poiText}</span>`;\n });\n}\n\nfunction getGlanceContent(\n glance: Glance,\n pointsOfInterest: PointOfInterest[],\n suppressInteractivity?: boolean\n): string {\n const content = injectPointOfInterestData(glance, pointsOfInterest, suppressInteractivity);\n\n return marked(content)\n .split('a href=\"cv://poi')\n .join('a class=\"d-flex\" href=\"cv://poi');\n}\n\n/**\n * Because the markdown is injected as a HTML string, we cannot attach click event handlers directly onto\n * the links that we want to. Instead, we attach one click handler to the entire markdown container, meaning\n * click events bubble up, and we can use `event.target` to see which element was clicked.\n */\nexport function onClickMarkDown(\n event: React.MouseEvent<HTMLDivElement, MouseEvent>,\n pointsOfInterest?: PointOfInterest[],\n setStartTime?: (timeVideosStat: number) => void\n): void {\n event.preventDefault();\n\n const href = (event.target as HTMLDivElement).getAttribute('href');\n\n // Ignore click events that do not have a href\n if (!href?.includes('cv://poi') || !pointsOfInterest?.length)\n return;\n \n // When a timestamp is clicked, we update the player time\n const poiId = href.split('cv://poi?id=')[1];\n const poi = pointsOfInterest.find(p => p.id.toString() === poiId);\n setStartTime && poi && setStartTime(poi.startTime);\n}\n\nexport function useGlanceMarkdown(\n video: Video,\n pointsOfInterest?: PointOfInterest[],\n hasGlanceData?: boolean,\n suppressInteractivity?: boolean\n): string {\n const [ markdownHTML, setMarkdownHTML ] = useState('');\n\n useEffect(() => {\n if (!hasGlanceData)\n return;\n\n const content = getGlanceContent(video.glance, pointsOfInterest, suppressInteractivity);\n\n setMarkdownHTML(content);\n }, [ video.glance?.content, pointsOfInterest?.length, hasGlanceData ]);\n\n return markdownHTML;\n}\n\nexport function useHighlightPointOfInterest(\n pointsOfInterest: PointOfInterest[],\n shouldHighlight: boolean\n): MutableRefObject<HTMLDivElement> {\n const ref = useRef<HTMLDivElement>();\n\n useEventsServiceSubscribe('player:poi:mouseover', onPlayerPoiMouseOver, null, shouldHighlight);\n useEventsServiceSubscribe('player:poi:mouseleave', onPlayerPoiMouseLeave, null, shouldHighlight);\n\n useEffect(() => {\n if (!ref.current || !shouldHighlight)\n return;\n\n const poiEls = getAllPoiEls();\n\n poiEls.forEach(el => el.addEventListener('mouseover', onGlancePoiMouseOver));\n poiEls.forEach(el => el.addEventListener('mouseleave', onGlancePoiMouseLeave));\n\n return () => {\n poiEls.forEach(el => el.removeEventListener('mouseover', onGlancePoiMouseOver));\n poiEls.forEach(el => el.removeEventListener('mouseleave', onGlancePoiMouseLeave));\n };\n }, [ref.current]);\n\n function onPlayerPoiMouseOver(pointOfInterest: PointOfInterest): void {\n const poiId = pointOfInterest?.id;\n\n if (!poiId)\n return;\n\n getPoiEl(poiId)?.classList.add(styles.highlightPoi);\n }\n\n function onPlayerPoiMouseLeave(): void {\n getAllPoiEls()?.forEach(el => el.classList.remove(styles.highlightPoi));\n }\n\n /**\n * `this` will be the element to which the eventListener is bound.\n */\n function onGlancePoiMouseOver(): void {\n const href = this.getAttribute('href');\n\n if (!href?.includes('cv://poi') || !pointsOfInterest?.length)\n return;\n\n const id = href.split('cv://poi?id=')[1];\n\n if (!id)\n return;\n\n const poi = pointsOfInterest.find(p => p.id.toString() === id);\n\n if (poi)\n EventsService.trigger('glance:poi:mouseover', poi);\n }\n\n function onGlancePoiMouseLeave(): void {\n EventsService.trigger('glance:poi:mouseleave');\n }\n\n function getPoiEl(id: string): HTMLAnchorElement {\n return ref.current?.querySelector(`[href=\"cv://poi?id=${id}\"]`);\n }\n\n function getAllPoiEls(): NodeListOf<HTMLAnchorElement> {\n return ref.current?.querySelectorAll(`[href*=\"cv://poi\"]`);\n }\n\n return ref;\n}\n\nexport function hasGlanceData(video: Video | Clip, glanceTheme: Theme): boolean {\n return glanceTheme &&\n video.glance?.content &&\n video.glance?.format === 'text/markdown';\n}","import React from 'react';\n\nimport { LocationContext } from 'libs/analytics/interfaces';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { VideoThumbnail } from 'libs/shared/components/thumbnails/video/VideoThumbnail';\nimport { VideoOwnerText } from 'libs/shared/components/video-owner-text/VideoOwnerText';\nimport { FixedWidgetItemProps } from 'libs/shared/components/widgets/items/FixedWidgetItemProps';\nimport { ImageSize } from 'libs/shared/enums/Images';\nimport { ThumbnailTextPosition } from 'libs/shared/enums/ThumbnailTextPosition';\nimport { Clip, Video } from 'libs/shared/interfaces';\n\nimport styles from './clip-widget-item.scss';\n\nexport interface ClipWidgetItemProps extends FixedWidgetItemProps<Clip> {\n video: Video;\n imageCdnUrl: string;\n}\n\nexport const ClipWidgetItem = React.memo(function(props: ClipWidgetItemProps): JSX.Element {\n return (\n <div className={`flex-shrink-0 px-1 ${styles.item}`}>\n <div className='row m-0 border rounded p-2 h-100'>\n <div className='col-6 p-0'>\n <VideoThumbnail\n video={props.data}\n appLink={props.getAppLink(props.data)}\n type='cosmetic'\n imageOptions={{ size: ImageSize.Small }}\n textPosition={ThumbnailTextPosition.Independent}\n analyticsOptions={{ location: LocationContext.SlidingListItem }}\n preload\n />\n </div>\n\n <div className='col-6 p-0'>\n <div className='ps-2'>\n <AppLink appLink={props.getAppLink(props.data)}>\n <h3 className='h6 mb-1'><span className='clamp-2'>{props.data.name}</span></h3>\n </AppLink>\n\n <VideoOwnerText\n owner={props.data.owner}\n isClickViewCurated={props.data._isClickViewCurated?.value}\n imageCdnUrl={props.imageCdnUrl}\n />\n </div>\n </div>\n </div>\n </div>\n );\n});","// extracted by mini-css-extract-plugin\nexport default {\"item\":\"hzP5u\",\"thumbnail\":\"z2JjL\",\"smallItemIconWidth\":\"PfCrs\",\"smallItemInfoWidth\":\"AHFZu\",\"smallProgressBarContainer\":\"WfOtB\",\"smallItemNameWidth\":\"Rq6Cd\"};","// extracted by mini-css-extract-plugin\nexport default {\"imageStyle\":\"FFgf3\",\"imageTypeResource\":\"z4O5p\"};","import React from 'react';\n\nimport { UrlHelper } from 'libs/analytics/utils/UrlHelper';\n\nimport { ImageSize, ImageType, ResizeType } from 'libs/shared/enums/Images';\nimport { ResourceFileType } from 'libs/shared/enums/ResourceFileType';\nimport { Link, Resource } from 'libs/shared/interfaces';\nimport { ImageHelper, ImageOptions } from 'libs/shared/utils/ImageHelper';\nimport { MasterTypeHelper } from 'libs/shared/utils/MasterTypeHelper';\n\nimport { BaseImage } from '../image/BaseImage';\n\nimport styles from './resource-thumbnail.scss';\n\n// Used for both PDFs and Links where we don't know the image ratio\nconst DYNAMIC_RATIO_IMAGE_OPTIONS: ImageOptions = {\n width: 200,\n resizeType: ResizeType.Cover\n};\n\nfunction getThumbnailUrl(imageCdnUrl: string, resource: Resource | Link): string {\n const imageType = getImageType(resource);\n\n // Use the thumbnail if defined\n if ('thumbnail' in resource && resource.thumbnail?.url)\n return ImageHelper.createUrl(resource.thumbnail?.url, { ...DYNAMIC_RATIO_IMAGE_OPTIONS });\n \n const previewUrl = UrlHelper.safeUrlConcat(imageCdnUrl, '/v1/previews');\n\n if (!MasterTypeHelper.isResource(resource))\n return ImageHelper.createResourceImage(previewUrl, resource.url, { ...DYNAMIC_RATIO_IMAGE_OPTIONS });\n\n if (imageType === ImageType.Pdf) {\n return resource.metadata.type === ResourceFileType.Pdf\n ? ImageHelper.createResourceImage(previewUrl, resource.url, { ...DYNAMIC_RATIO_IMAGE_OPTIONS })\n : ImageHelper.createResourceImage(previewUrl, resource.pdf?.url, { ...DYNAMIC_RATIO_IMAGE_OPTIONS });\n }\n\n if (resource.metadata.type !== ResourceFileType.Zip)\n return ImageHelper.createUrl(resource.url, { size: ImageSize.Medium, resizeType: ResizeType.Cover });\n\n return '/images/zip-resource.png';\n}\n\nfunction getImageType(resource: Resource | Link): ImageType {\n if (!MasterTypeHelper.isResource(resource))\n return ImageType.Link;\n\n if (resource.metadata.type === ResourceFileType.Pdf || resource.pdf?.url)\n return ImageType.Pdf;\n\n return ImageType.Thumbnails;\n}\n\ninterface ResourceThumbnailProps {\n imageCdnUrl: string;\n resource: Resource | Link;\n imageErrorFallbackUrl: string;\n preloadImage: boolean;\n}\n\nexport function ResourceThumbnail(props: ResourceThumbnailProps): JSX.Element {\n let metadata = null;\n let rotation = 0;\n\n if (MasterTypeHelper.isResource(props.resource)) {\n metadata = props.resource.metadata;\n rotation = props.resource.thumbnail?.metadata?.rotation ?? 0;\n }\n\n const thumbnailUrl = getThumbnailUrl(props.imageCdnUrl, props.resource);\n\n return (\n <BaseImage\n data={thumbnailUrl}\n imageType={getImageType(props.resource)}\n imageStyle={{ transform: `rotate(${rotation}deg)` }}\n alt={props.resource.name}\n errorFallbackImageSrc={props.imageErrorFallbackUrl}\n imageClassName={metadata?.type === ResourceFileType.Image ? `${styles.imageTypeResource} ${styles.imageStyle}` : ''}\n preload={props.preloadImage}\n preventLoad={!props.preloadImage}\n >\n \n </BaseImage>\n );\n}","import { ResourceType } from 'libs/shared/interfaces';\n\nexport const ResourceHelper = {\n getResourceTypeName(resourceType: ResourceType): string {\n switch (resourceType) {\n case 'additional-materials':\n return 'Additional Materials';\n\n case 'atom-guide':\n return 'ATOM Guide';\n\n case 'teacher-pack':\n return 'Teacher Pack';\n\n case 'student-activity':\n return 'Student Activity';\n\n default:\n return 'N/A';\n }\n }\n};","// extracted by mini-css-extract-plugin\nexport default {\"imageStyle\":\"I9E5O\",\"item\":\"tqUFn\",\"dashboard\":\"o7j7p\",\"playPage\":\"V2RwX\",\"aspectRatio\":\"OnJDH\",\"outerContainer\":\"CIFy7\",\"innerContainer\":\"oUZPD\",\"actions\":\"jzGAm\",\"titleBelow\":\"Cpjs3\",\"thumbnailContainer\":\"EDiGi\",\"titleAbove\":\"e9ejn\",\"teacherPack\":\"_tdVE\",\"text\":\"g5NWS\",\"hoverState\":\"xRYhX\",\"atomGuide\":\"X39wU\",\"studentActivity\":\"X9pMl\",\"additionalMaterials\":\"qRVUo\",\"userUploaded\":\"_18JaV\",\"imageTypeResource\":\"KYtZL\",\"download\":\"fbb_e\"};","import React from 'react';\n\nimport { AppLinkHelper } from 'libs/common/backbone/core';\n\nimport { AnalyticsHelper } from 'libs/analytics/AnalyticsHelper';\nimport { AnalyticsOptions, EntityType, UserAction } from 'libs/analytics/interfaces';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { DivButton } from 'libs/shared/components/div-button/DivButton';\nimport { ResourceThumbnail } from 'libs/shared/components/resource-thumbnail/ResourceThumbnail';\nimport { SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\nimport { TitleSubText } from 'libs/shared/components/title-sub-text/TitleSubText';\nimport { Tooltip } from 'libs/shared/components/tooltip/Tooltip';\nimport { TypeBadge } from 'libs/shared/components/type-badge/TypeBadge';\nimport { FixedWidgetItemProps } from 'libs/shared/components/widgets/items/FixedWidgetItemProps';\nimport { SeoConstants } from 'libs/shared/constants/SeoConstants';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { ResourceFileType } from 'libs/shared/enums/ResourceFileType';\nimport { useBreakpoints } from 'libs/shared/hooks/useBreakpoints';\nimport { Link, Resource, ResourceType } from 'libs/shared/interfaces';\nimport { MasterTypeHelper } from 'libs/shared/utils/MasterTypeHelper';\nimport { ResourceHelper } from 'libs/shared/utils/ResourceHelper';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport styles from './resource-widget-item.scss';\n\nfunction getColour(resourceType?: ResourceType): string {\n switch (resourceType) {\n case 'atom-guide':\n return styles.atomGuide;\n case 'student-activity':\n return styles.studentActivity;\n case 'teacher-pack':\n return styles.teacherPack;\n case 'additional-materials':\n return styles.additionalMaterials;\n default:\n return styles.userUploaded;\n }\n}\n\nfunction useCanPreview(data: Resource | Link, actionBehaviour: 'normal' | 'public'): boolean {\n const breakpoints = useBreakpoints();\n\n /**\n * When viewing publicly, the resource applink will\n * prompt the user to sign-up (not preview the underlying resource)\n */\n if (actionBehaviour === 'public')\n return true;\n\n if (breakpoints.xs || breakpoints.sm)\n return false;\n\n if (data.type !== 'resource')\n return false;\n \n // Require metadata\n if (!('metadata' in data))\n return false;\n\n // We can preview images\n if (data.metadata.type === ResourceFileType.Image)\n return true;\n\n // If we are a pdf and have a url\n if (data.metadata.type === ResourceFileType.Pdf)\n return !!data.url;\n\n // If we have a pdf assoc\n return !!data.pdf?.url;\n}\n\ninterface ResourceTheme {\n containerClass?: string;\n thumbnailContainerClass?: string;\n}\n\nexport interface ResourceTileProps {\n data: Resource | Link;\n imageCdnUrl: string;\n imageErrorFallbackUrl?: string;\n theme?: ResourceTheme;\n\n titlePosition: 'above' | 'below' | 'none';\n hideTypeBadge?: boolean;\n onClickDownload?: (e: React.MouseEvent<HTMLElement>, resource: Resource) => void;\n applyHoverState?: boolean;\n preloadImage: boolean;\n actionBehaviour?: 'normal' | 'public';\n}\n\nResourceTile.defaultProps = {\n preloadImage: true,\n actionBehaviour: 'normal'\n};\n\n/**\n * This component intentionally doesn't contain an appLink/download link\n * so that the resource download behaviour can be handled differently depending\n * on where this is rendered (e.g. primary play page vs embedded player)\n */\nexport function ResourceTile(props: ResourceTileProps): JSX.Element {\n let metadata = null;\n\n if ('metadata' in props.data) {\n metadata = props.data.metadata;\n }\n\n const isResource = MasterTypeHelper.isType<Resource>(props.data, MasterType.Resource);\n\n function getInnerContainerClass(resourceType: ResourceType): string {\n let baseClass = `\n d-flex flex-column align-items-center justify-content-end rounded-3 h-100\n position-relative ${getColour(resourceType)} ${styles.innerContainer}`;\n\n if (props.theme?.containerClass) {\n baseClass += ` ${props.theme.containerClass}`;\n } else {\n baseClass += ` pt-3 px-3`;\n }\n\n if (props.applyHoverState) {\n baseClass += ` ${styles.hoverState}`;\n }\n\n return baseClass;\n }\n\n return (\n <>\n <div className={styles.aspectRatio}>\n <div className={styles.outerContainer}>\n <div className={getInnerContainerClass(metadata?.resourceType)}>\n {props.titlePosition === 'above' && (\n <Tooltip title={props.data.name}>\n <h3 className={`text-center text-break h5 mb-3 ${styles.text}`}>\n <span className='clamp-1'>{props.data.name}</span>\n </h3>\n </Tooltip>\n )}\n\n <div className={`\n ${props.theme?.thumbnailContainerClass ?? ''} w-75 overflow-hidden \n ${styles.thumbnailContainer} ${props.titlePosition === 'above' ? styles.titleAbove : ''} \n ${styles.imageStyle}\n `}>\n <ResourceThumbnail\n resource={props.data}\n imageCdnUrl={props.imageCdnUrl}\n imageErrorFallbackUrl={props.imageErrorFallbackUrl}\n preloadImage={props.preloadImage}\n />\n </div>\n\n {isResource && props.onClickDownload && props.actionBehaviour === 'normal' && (\n <div className={styles.actions}>\n <DivButton\n onClick={e => props.onClickDownload(e, props.data as Resource)}\n className={`${styles.download} d-flex align-items-center justify-content-center`}\n >\n <SvgContainer svgName={cvSvgLibrary.Download} />\n </DivButton>\n </div>\n )}\n\n {!props.hideTypeBadge && isResource && (\n <TypeBadge typeId={MasterType.Resource} />\n )}\n </div>\n </div>\n </div>\n {props.titlePosition === 'below' && MasterTypeHelper.isType<Resource>(props.data, MasterType.Resource) && (\n <div className={`mt-1 ${styles.titleBelow}`}>\n {!!props.data?.metadata?.resourceType && (\n <TitleSubText>\n {ResourceHelper.getResourceTypeName(props.data.metadata.resourceType)}\n </TitleSubText>\n )}\n <h3 className='h6 clamp-2'>\n {props.data.name}\n </h3>\n </div>\n )}\n </>\n );\n}\n\nexport interface ResourceWidgetItemProps extends ResourceTileProps, FixedWidgetItemProps<Resource | Link> {\n location: 'play-page' | 'dashboard';\n}\n\nexport const ResourceWidgetItem = React.memo(function(props: ResourceWidgetItemProps): JSX.Element {\n // Mobile is not allowed to preview\n const canPreview = useCanPreview(props.data, props.actionBehaviour);\n\n function getLocationClass(): string {\n if (props.location === 'play-page')\n return styles.playPage;\n\n return styles.dashboard;\n }\n\n const analyticsData = { ...props.analyticsData, ...props.data };\n\n const analyticsOptions: AnalyticsOptions = {\n ...props.analyticsOptions,\n actionType: UserAction.Click,\n entity: props.data.typeId === MasterType.Resource ? EntityType.Resource : EntityType.Link\n };\n\n function logAction(): void {\n AnalyticsHelper.logUserAction(analyticsData, analyticsOptions);\n }\n\n const tileProps: ResourceTileProps = {\n ...props,\n // Apply the hover state if we have a url or the resource can be previewed\n applyHoverState: canPreview || !!props.data.url\n };\n\n return (\n <div className={`px-1 flex-shrink-0 ${styles.item} ${getLocationClass()} ${SeoConstants.RESOURCE_ITEM_SELECTOR}`}>\n {(() => {\n const className = `d-block ${props.titlePosition === 'above' ? 'no-decoration' : ''}`;\n\n // Handle resource links\n if (props.data.type === 'link') {\n return (\n <a href={props.data.url} target='_blank' className={className} onClick={logAction}>\n <ResourceTile {...tileProps} />\n </a>\n );\n }\n\n if (canPreview) {\n /**\n * Previewing resources in a public context will always display the sign-up popup, so there \n * will never be a full URL. For SEO purposes, we deliberately use a span over an anchor\n * to ensure we're not creating self-referencing elements that will burn crawl budget.\n */\n if (props.actionBehaviour === 'public') {\n return (\n <div className={`${className} cursor-pointer d-inline`} onClick={() => {\n logAction();\n AppLinkHelper.trigger(props.getAppLink(props.data));\n }}>\n <ResourceTile {...tileProps} />\n </div>\n );\n }\n\n return (\n <AppLink\n appLink={props.getAppLink(props.data)}\n className={className}\n analyticsData={analyticsData}\n analyticsOptions={analyticsOptions}\n >\n <ResourceTile {...tileProps} />\n </AppLink>\n );\n }\n\n // URLs cannot be previewed\n if (props.data.url) {\n return (\n <a href={props.data.url} className={className} onClick={logAction}>\n <ResourceTile {...tileProps} />\n </a>\n );\n }\n\n // Theres no url, so don't render an <a>\n return (\n <div className={className}>\n <ResourceTile {...tileProps} />\n </div>\n );\n })()}\n </div>\n );\n});","import { HttpVerbs } from 'libs/common/backbone/enums/HttpVerbs';\nimport { Xhr } from 'libs/common/backbone/interfaces';\nimport { UrlHelper } from 'libs/common/backbone/utils/UrlHelper';\nimport { Flight } from 'libs/common/flight';\nimport { HashObject } from 'libs/common/react/interfaces/HashObject';\n\nimport { Theme } from 'libs/shared/interfaces';\n\nimport { ThemeType } from '../enums/ThemeType';\n\nexport const ThemeRequests = {\n theme(id: string): Flight.Request {\n return {\n url: `/api/domain/v1/themes/${id}`,\n key: `themes:${id}`\n };\n },\n\n themeImages(name: string, type: ThemeType): Flight.Request {\n return {\n url: UrlHelper.urlBuilder('/api/domain/v1/themes', { name, type }),\n key: `themes:${name}:${type}`\n };\n },\n\n themes(type?: string): Flight.Request {\n let url = '/api/domain/v1/themes';\n let key = 'themes';\n\n if (type) {\n url += `?type=${type}`;\n key += `:type:${type}`;\n }\n\n return {\n url,\n key,\n formatData: (themes: Theme[]) => {\n return themes.sort((a, b) => a.name.localeCompare(b.name));\n }\n };\n },\n\n createTheme(\n data: Theme,\n success?: (data: HashObject) => void,\n error?: (xhr: Xhr) => void,\n always?: () => void\n ): Flight.Request {\n return {\n url: '/api/domain/v1/themes',\n key: 'theme',\n data,\n type: HttpVerbs.POST,\n invalidationKeys: 'themes',\n success,\n error,\n always\n };\n },\n\n updateTheme(\n id: string,\n data: Theme,\n success?: (data: HashObject) => void,\n error?: (xhr: Xhr) => void,\n always?: () => void\n ): Flight.Request {\n return {\n url: `/api/domain/v1/themes/${id}`,\n key: `update:theme:${id}`,\n data,\n type: HttpVerbs.PUT,\n success,\n error,\n always\n };\n },\n\n deleteTheme(\n id: string,\n success?: (data: HashObject) => void,\n error?: (xhr: Xhr) => void,\n always?: () => void\n ): Flight.Request {\n return {\n url: `/api/domain/v1/themes/${id}`,\n key: `delete:theme:${id}`,\n type: HttpVerbs.DELETE,\n invalidationKeys: 'themes',\n success,\n error,\n always\n };\n }\n};","import React from 'react';\n\n// https://reactjs.org/docs/hooks-faq.html#how-to-get-the-previous-props-or-state\nexport function usePrevious<T>(value: T): T {\n const ref = React.useRef<T>();\n React.useEffect(() => {\n ref.current = value;\n });\n return ref.current;\n}","import React from 'react';\n\nimport { usePrevious } from './usePrevious';\n\nconst HEADER_OFFSET = 80; // Size of header + some extra spacing\n\nexport const useTableOfContentsScroll = (elements: Element[], activeId: string) => {\n const [ hasDoneInitialScroll, setHasDoneInitialScroll ] = React.useState(false);\n\n const previousId = usePrevious(activeId);\n const currentId = activeId;\n\n React.useLayoutEffect(() => {\n if (!hasDoneInitialScroll || previousId !== currentId) {\n const target = elements.find(heading => heading && (heading?.id === currentId));\n\n if (target) {\n const rec = target.getBoundingClientRect();\n\n window.scrollBy({\n top: rec.top - HEADER_OFFSET,\n behavior: 'smooth'\n });\n \n if (!hasDoneInitialScroll)\n setHasDoneInitialScroll(true);\n }\n }\n }, [ elements, previousId, currentId, hasDoneInitialScroll ]);\n};","// extracted by mini-css-extract-plugin\nexport default {\"series\":\"_4XDZ\",\"badgeListContainer\":\"d42pt\"};","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\n\nimport { LocationContext } from 'libs/analytics/interfaces';\n\nimport { Actions } from 'libs/shared/components/actions/Actions';\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\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 { Text } from 'libs/shared/components/text/Text';\nimport { RestrictionPadlock } from 'libs/shared/components/video-list/components/restriction-padlock/RestrictionPadlock';\nimport { VideoSubText } from 'libs/shared/components/video-sub-text/VideoSubText';\nimport { useMergeAudiences } from 'libs/shared/hooks/UseMergeAudiences';\nimport { Clip, PresentationAudience, Series, Video, YearGroup } from 'libs/shared/interfaces';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\nimport { computeVideoMetadata } from 'shared/components/play-page/PlayPageUtils';\nimport { useVideoActions, VideoActionsLocation } from 'shared/hooks/use-video-actions/useVideoActions';\nimport { VideoFeaturesHash } from 'shared/hooks/useVideoFeatureAccess';\n\nimport styles from './title-and-actions.scss';\n\nconst namespace = 'shared.playPage';\n\ninterface PlayPageTitleAndActionsProps {\n media: Clip | Video;\n yearGroups: YearGroup[];\n audiences: PresentationAudience[];\n featureAccess: VideoFeaturesHash;\n getSeriesAppLink?: (series: Series) => Core.AppLink;\n originalVideoAppLink?: Core.AppLink;\n shareId: string;\n}\n\nexport function PlayPageTitleAndActions(props: PlayPageTitleAndActionsProps): JSX.Element {\n const mergedAudience = useMergeAudiences(props.media.subjectPresentationAudiences?.data, props.audiences);\n\n const containerRef = React.useRef<HTMLDivElement>(null);\n const titleContainerRef = React.useRef<HTMLDivElement>(null);\n\n const { hasBadges } = computeVideoMetadata(props.media);\n\n const videoActions = useVideoActions({\n location: VideoActionsLocation.PlayPage,\n shareId: props.shareId\n });\n\n const canViewOriginal = !!props.originalVideoAppLink &&\n VideoHelper.isClip(props.media) &&\n VideoHelper.canViewOriginalVideo(props.media);\n\n return (\n <section className='mb-3 position-relative' ref={containerRef}>\n <div className='d-inline-block w-100' ref={titleContainerRef}>\n {props.featureAccess.canNavigate &&\n <div className='ms-2 float-end'>\n <Actions\n actions={videoActions.getVideoActions(props.media)}\n actionsDropdownClassName='btn btn-outline-dark'\n fetchMore={() => videoActions.fetchMoreActions(props.media)}\n />\n </div>\n }\n\n {!!VideoHelper.isVideo(props.media) && (\n <VideoSubText\n type='series'\n video={props.media}\n appLink={props.getSeriesAppLink?.(props.media.series)}\n className={`${styles.series} text-truncate mw-100`}\n analyticsOptions={{ location: LocationContext.PlayPage }}\n />\n )}\n <h1 className='h4 mb-2 mw-100'>\n <span className='align-self-center'>{props.media.name}</span>\n <RestrictionPadlock\n tooltipPlacement='right'\n className='d-inline-block ps-1'\n video={props.media}\n yearGroups={props.yearGroups}\n />\n </h1>\n\n {hasBadges && (\n <BadgeListContainer className={styles.badgeListContainer}>\n <AudienceLabel\n audience={mergedAudience}\n className='bg-white text-dark'\n border='dark'\n />\n {VideoHelper.isVideo(props.media) && (\n <Badge type={BadgeType.Rating} data={props.media.rating} />\n )}\n {VideoHelper.isVideo(props.media) && (\n <Badge type={BadgeType.ProductionYear} data={props.media.productionYear} />\n )}\n </BadgeListContainer>\n )}\n </div>\n\n {VideoHelper.isClip(props.media) && canViewOriginal && (\n <p className='clamp-1'>\n <Text namespace={namespace} phrase='viewOriginal' />\n \n <AppLink className='info-link' appLink={props.originalVideoAppLink}>\n {props.media._parentVideo?.name}\n </AppLink>\n </p>\n )}\n </section>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"mask\":\"LL7My\",\"centeredIcon\":\"x_1f6\",\"bgImage\":\"QoLgZ\",\"centeredOverlay\":\"BcnSH\"};","import * as React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Core } from 'libs/common/core';\n\nimport { EntityType, LocationContext, SignUpDescriptors, UserAction, WorkflowPhase } from 'libs/analytics/interfaces';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\nimport { ImageSize } from 'libs/shared/enums/Images';\nimport { VideoTypes } from 'libs/shared/interfaces';\nimport { ImageHelper } from 'libs/shared/utils/ImageHelper';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\nimport styles from './player-placeholder.scss';\n\nconst namespace = 'shared.playerPlaceholder';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface PlayerPlaceholderProps {\n video: VideoTypes;\n type: 'pip' | 'public';\n appLink?: Core.AppLink;\n}\n\nexport function PlayerPlaceholder(props: PlayerPlaceholderProps): JSX.Element {\n switch (props.type) {\n case 'pip':\n return <PipPlaceholder {...props} />;\n case 'public':\n return <PublicPlaceholder {...props} />;\n default:\n return <></>;\n }\n}\n\nconst PipPlaceholder = (props: PlayerPlaceholderProps) => (\n <div\n className={`position-relative responsive-img ${styles.bgImage}`}\n style={{ backgroundImage: `url('${VideoHelper.getThumbnail(props.video)?.url ?? ''}')` }}\n >\n <p className={`m-0 text-white h3 ${styles.centeredOverlay}`}>{getPhrase('playingPiP')}</p>\n <div className={styles.mask} />\n </div>\n);\n\nconst PublicPlaceholder = (props: PlayerPlaceholderProps) => {\n const thumbnailUrl = ImageHelper.createUrl(VideoHelper.getThumbnail(props.video)?.url ?? '', {\n size: ImageSize.Large\n });\n\n return (\n <div\n className={`position-relative responsive-img ${styles.bgImage}`}\n style={{ backgroundImage: `url('${thumbnailUrl}')` }}\n >\n <AppLink\n appLink={props.appLink}\n analyticsOptions={{\n actionType: UserAction.Click,\n location: LocationContext.PlayPage,\n entity: EntityType.AppLink,\n workflowPhase: WorkflowPhase.Start,\n descriptor: SignUpDescriptors.SignUp\n }}\n analyticsData={{}}\n >\n <SvgContainer\n svgName={cvSvgLibrary.PlayCircle}\n className={styles.centeredIcon}\n />\n <div className={styles.mask} />\n </AppLink>\n </div>\n );\n};","import React from 'react';\n\nexport function VideoDetailsPartial(): JSX.Element {\n return (\n <div className='p-3 mb-3 border rounded'>\n <div className='row'>\n <div className='pe-3 col-md-7 border-right'>\n <div className='partial-loading-background mb-2' style={{ height: '1.5rem', width: '12rem' }}></div>\n <div className='partial-loading-background mb-2' style={{ height: '4.5rem' }}></div>\n <div className='partial-loading-background' style={{ height: '1.5rem', width: '15rem' }}></div>\n </div>\n <div className='col-md-5 ps-md-3 pt-3 pt-md-0'>\n <div className='partial-loading-background mb-2' style={{ height: '1.5rem', width: '7rem' }}></div>\n <div className='partial-loading-background mb-2' style={{ height: '1.5rem', width: '10rem' }}></div>\n <div className='partial-loading-background mb-2' style={{ height: '1.5rem', width: '12rem' }}></div>\n <div className='partial-loading-background mb-2 me-2 d-inline-block' style={{ height: '1.5rem', width: '3rem' }}></div>\n <div className='partial-loading-background mb-2 me-2 d-inline-block' style={{ height: '1.5rem', width: '4rem' }}></div>\n <div className='partial-loading-background mb-2 me-2 d-inline-block' style={{ height: '1.5rem', width: '3.5rem' }}></div>\n <div className='partial-loading-background mb-2 me-2 d-inline-block' style={{ height: '1.5rem', width: '4.5rem' }}></div>\n </div>\n </div>\n </div>\n );\n}","import { Flight } from 'libs/common/react/index';\n\nimport { LocalPermissionName, PermissionName } from 'libs/shared/enums/PermissionName';\nimport { ProductId } from 'libs/shared/enums/ProductId';\nimport { ConfigRequests } from 'libs/shared/flight-requests/ConfigRequests';\nimport { usePermissions } from 'libs/shared/hooks/usePermissions';\nimport { useProducts } from 'libs/shared/hooks/UseProducts';\nimport { Config } from 'libs/shared/interfaces/models/Config';\n\nimport { LiteRouteHelper } from 'shared/utils/LiteRouteHelper';\n\nexport interface VideoFeaturesHash {\n canViewGlance: boolean;\n canViewResources: boolean;\n canViewInteractives: boolean;\n canViewClips: boolean;\n canUseActions: boolean;\n canViewPublicLayout: boolean;\n canNavigate: boolean;\n canViewCurriculumLinks: boolean;\n canViewResourceItems: boolean;\n canWatchPublicly: (videoId: string) => boolean;\n}\n\nexport function useVideoFeatureAccess() {\n const { hasPermissions, hasLocalPermissions } = usePermissions();\n const { hasProduct } = useProducts();\n const config = Flight.useBasicFetch<Config>(ConfigRequests.config());\n\n const hasNP = hasProduct(ProductId.Primary);\n\n function showPublicLayout(): boolean {\n /**\n * Authenticated users should never see the placeholder\n */\n if (hasLocalPermissions(LocalPermissionName.WatchVideos))\n return false;\n\n /**\n * Accessing a play page unathenticated will have different contextual behabviours:\n * - For a share page, the user should see the video and never the placeholder\n * - For a public browsing page (ie. using a route-prefix) they should see the placeholder\n */\n return LiteRouteHelper.hasRegionPrefix();\n }\n\n /**\n * Publicly available video ids are maintained on the backend config. \n */\n function canWatchPublicly(videoId: string): boolean {\n if (!videoId)\n return false;\n\n return !!config.data?.allowedPublicVideos?.[videoId];\n }\n\n return {\n canWatchPublicly,\n canViewGlance: hasPermissions(PermissionName.ViewVideoGlance),\n canViewResources: true,\n canViewInteractives: hasNP && hasPermissions(PermissionName.ViewVideoInteractives),\n canViewClips: hasNP && hasPermissions(PermissionName.ViewVideoClips),\n canViewCurriculumLinks: hasPermissions(PermissionName.ViewCurriculums),\n canUseActions: hasLocalPermissions(LocalPermissionName.UseVideoActions),\n canViewPublicLayout: showPublicLayout(),\n canViewResourceItems: hasLocalPermissions(LocalPermissionName.ViewVideoResourceItems),\n canNavigate: hasNP\n };\n}","// extracted by mini-css-extract-plugin\nexport default {\"container\":\"BImYH\",\"background\":\"aAY0j\",\"topLeft\":\"azcIT\",\"bottomLeft\":\"mBkCx\",\"topRight\":\"tcN5n\",\"bottomRight\":\"sHsOr\",\"detailsBtn\":\"jyxT7\",\"content\":\"PeWbM\",\"highlightPoi\":\"un8Q0\"};"],"names":["EventsService","listeners","event","callback","this","registerListener","deregisterListener","args","triggerCallbacks","executionLimit","Error","push","idxToRemove","findIndex","e","splice","length","callbacksToRemove","forEach","listener","executionCount","apply","namespace","VideoAtAGlance","props","canViewGlance","video","theme","markdownHTML","pointsOfInterest","suppressInteractivity","glanceContentRef","themeColours","data","colours","primary","secondary","showDescriptionLink","onClickShowDescription","showCurriculumsLink","onClickShowCurriculumLinks","className","style","backgroundColor","phrase","onClick","ref","setStartTime","dangerouslySetInnerHTML","__html","tags","getTagAppLink","themeImages","images","filter","key","map","segment","url","size","fileId","backgroundImage","useEventsServiceSubscribe","once","shouldSubscribe","unsubscribe","useEffect","POI_REGEX","POI_ID_REGEX","POI_TEXT_REGEX","POI_TEXT_BRACES_REGEX","onClickMarkDown","preventDefault","href","target","getAttribute","includes","poiId","split","poi","find","p","id","toString","startTime","useGlanceMarkdown","hasGlanceData","useState","setMarkdownHTML","content","glance","replace","substr","idMatch","match","poiTextMatch","timestamp","DurationHelper","poiText","description","injectPointOfInterestData","marked","join","getGlanceContent","useHighlightPointOfInterest","shouldHighlight","useRef","onGlancePoiMouseOver","onGlancePoiMouseLeave","getAllPoiEls","current","querySelectorAll","pointOfInterest","querySelector","getPoiEl","classList","add","el","remove","poiEls","addEventListener","removeEventListener","glanceTheme","format","ClipWidgetItem","VideoThumbnail","appLink","getAppLink","type","imageOptions","textPosition","ThumbnailTextPosition","analyticsOptions","location","preload","AppLink","name","VideoOwnerText","owner","isClickViewCurated","_isClickViewCurated","value","imageCdnUrl","DYNAMIC_RATIO_IMAGE_OPTIONS","width","resizeType","getImageType","resource","MasterTypeHelper","metadata","ResourceFileType","pdf","ResourceThumbnail","rotation","thumbnail","thumbnailUrl","imageType","ImageHelper","previewUrl","UrlHelper","getThumbnailUrl","BaseImage","imageStyle","transform","alt","errorFallbackImageSrc","imageErrorFallbackUrl","imageClassName","preloadImage","preventLoad","ResourceHelper","getResourceTypeName","resourceType","ResourceTile","isResource","MasterType","baseClass","getColour","containerClass","applyHoverState","getInnerContainerClass","titlePosition","Tooltip","title","thumbnailContainerClass","onClickDownload","actionBehaviour","DivButton","SvgContainer","svgName","hideTypeBadge","TypeBadge","typeId","TitleSubText","defaultProps","ResourceWidgetItem","breakpoints","canPreview","useBreakpoints","xs","sm","analyticsData","actionType","entity","logAction","AnalyticsHelper","tileProps","SeoConstants","ThemeRequests","themes","formatData","sort","a","b","localeCompare","createTheme","success","error","always","invalidationKeys","updateTheme","deleteTheme","usePrevious","useTableOfContentsScroll","elements","activeId","hasDoneInitialScroll","setHasDoneInitialScroll","previousId","currentId","heading","rec","getBoundingClientRect","window","scrollBy","top","behavior","PlayPageTitleAndActions","mergedAudience","media","subjectPresentationAudiences","audiences","containerRef","titleContainerRef","hasBadges","videoActions","useVideoActions","shareId","canViewOriginal","originalVideoAppLink","VideoHelper","featureAccess","canNavigate","Actions","actions","getVideoActions","actionsDropdownClassName","fetchMore","fetchMoreActions","VideoSubText","getSeriesAppLink","series","RestrictionPadlock","tooltipPlacement","yearGroups","BadgeListContainer","AudienceLabel","audience","border","Badge","rating","productionYear","Text","_parentVideo","getPhrase","LanguageService","PlayerPlaceholder","PipPlaceholder","PublicPlaceholder","workflowPhase","descriptor","SignUp","VideoDetailsPartial","height","useVideoFeatureAccess","hasPermissions","hasLocalPermissions","hasProduct","config","hasNP","canWatchPublicly","videoId","allowedPublicVideos","canViewResources","canViewInteractives","canViewClips","canViewCurriculumLinks","canUseActions","canViewPublicLayout","canViewResourceItems"],"sourceRoot":""}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
"use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[2734],{71020:(e,t,n)=>{n.d(t,{_:()=>u});var a=n(32735),r=n(80247),i=n(34152),o=n(83914),s=n(35223);const l={container:"VwD1b",spinner:"eJ85e"};function c(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,a=new Array(t);n<t;n++)a[n]=e[n];return a}function u(e){var t,n,u=(t=(0,i.YD)(),n=2,function(e){if(Array.isArray(e))return e}(t)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var a,r,i,o,s=[],l=!0,c=!1;try{if(i=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;l=!1}else for(;!(l=(a=i.call(n)).done)&&(s.push(a.value),s.length!==t);l=!0);}catch(e){c=!0,r=e}finally{try{if(!l&&null!=n.return&&(o=n.return(),Object(o)!==o))return}finally{if(c)throw r}}return s}}(t,n)||function(e,t){if(e){if("string"==typeof e)return c(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?c(e,t):void 0}}(t,n)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),d=u[0],p=u[1];return a.useEffect((function(){var t;e.fetchOnScroll&&p&&!e.isFetching&&(null===(t=e.fetchNext)||void 0===t||t.call(e,e.nextCursor))}),[p,e.isFetching]),a.createElement("div",{className:"p-3 text-center ".concat(l.container),ref:d},e.isFetching?a.createElement(r.Z,{as:"span",animation:"border",role:"status",className:l.spinner}):a.createElement(o.x,{svgName:s.vn.ChevronDown,className:"svg-container cursor-pointer",size:o.S.Large,onClick:function(){var t;return null===(t=e.fetchNext)||void 0===t?void 0:t.call(e,e.nextCursor)}}))}u.defaultProps={fetchOnScroll:!1}},16930:(e,t,n)=>{n.d(t,{W:()=>c,f:()=>l});var a=n(32735),r=n(83914),i=n(35223);const o="VSAPU",s="kgeXh";var l;!function(e){e[e.Left=0]="Left",e[e.Right=1]="Right"}(l||(l={}));var c=a.memo((function(e){var t,n,c,u=e.direction===l.Left,d=u?i.vn.ChevronLeft:i.vn.ChevronRight;return e.hide?a.createElement(a.Fragment,null):a.createElement("div",{className:"_ejId",style:"videos"===(null===(n=e.state)||void 0===n?void 0:n.contents)?{paddingBottom:56.25/(null===(c=e.state)||void 0===c?void 0:c.viewableItems)+"%"}:{height:"100%"}},e.useGradientBackdrop&&a.createElement("div",{className:u?"".concat("Pt3nx"," ").concat(e.leftGradientClassName):"".concat("ZuAif"," ").concat(e.rightGradientClassName)}),!e.hideExtendedClickableArea&&a.createElement("div",{role:"button",onClick:e.onClick,className:"".concat("AtsWP"," ").concat(u?o:s)}),a.createElement("div",{role:"button",className:"".concat((t="BVcIS",t+=u?" ".concat(o," ").concat(e.leftButtonClassName):" ".concat(s," ").concat(e.rightButtonClassName))," ").concat("gAsE9"," ").concat(e.className||""),onClick:e.onClick},e.hoverText&&a.createElement("span",{className:"ps-3 pe-2 ".concat("APA36")},e.hoverText),a.createElement(r.x,{svgName:d,size:r.S.Medium,className:"svg-container d-inline-block ".concat("Ev4hr")})))}))},60115:(e,t,n)=>{n.d(t,{K:()=>c});var a=n(32735),r=n(50242),i=n(91967),o=400,s=n(45719);function l(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,a=new Array(t);n<t;n++)a[n]=e[n];return a}function c(e,t,n,c,u,d){var p,m,v,y,g=(p=(0,a.useState)(0),m=2,function(e){if(Array.isArray(e))return e}(p)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var a,r,i,o,s=[],l=!0,c=!1;try{if(i=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;l=!1}else for(;!(l=(a=i.call(n)).done)&&(s.push(a.value),s.length!==t);l=!0);}catch(e){c=!0,r=e}finally{try{if(!l&&null!=n.return&&(o=n.return(),Object(o)!==o))return}finally{if(c)throw r}}return s}}(p,m)||function(e,t){if(e){if("string"==typeof e)return l(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?l(e,t):void 0}}(p,m)||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.")}()),f=g[0],h=g[1],b=t,A=(0,s.P)((function(t){if(!e)return null;var n=e(t);return n?n.key:null}),c,u);return v={fetchNextPage:function(){if(t&&e&&A)return h((function(e){return e+1})),b(A.nextCursor)},hasMore:!!(null==A?void 0:A.nextCursor),isFetching:null==A?void 0:A.isFetching,scrollContainer:d},y=function(){if(!v.isFetching){if(v.scrollContainer){var e=v.scrollContainer;if(e.getBoundingClientRect().height+e.scrollTop<e.scrollHeight-o)return}else if(window.innerHeight+document.documentElement.scrollTop<document.documentElement.scrollHeight-o)return;v.fetchNextPage()}},(0,a.useEffect)((function(){var e=i.q.throttle(y,200),t=v.scrollContainer||window;return v.hasMore&&t.addEventListener("scroll",e),function(){return t.removeEventListener("scroll",e)}}),[v.hasMore,v.fetchNextPage,v.scrollContainer]),(0,a.useEffect)((function(){A&&A.shouldInitialFetch&&t&&(b(),h((function(e){return e+1})))}),[null==A?void 0:A.shouldInitialFetch,t]),(0,a.useEffect)((function(){var e,t;if((null==A?void 0:A.statusCode)&&i.q.isFunction(n)){var a=+(null===(t=null===(e=A.statusCode)||void 0===e?void 0:e.toString())||void 0===t?void 0:t.substr(0,1));a!==r.k.ClientError&&a!==r.k.ServerError||n(f,A.statusCode)}}),[null==A?void 0:A.statusCode]),{items:null==A?void 0:A.items,hasMore:!!(null==A?void 0:A.nextCursor),nextCursor:null==A?void 0:A.nextCursor,isFetching:null==A?void 0:A.isFetching,totalItems:null==A?void 0:A.totalItems,hasFirstPageCompleted:null==A?void 0:A.hasFirstPageCompleted}}},55493:(e,t,n)=>{n.r(t),n.d(t,{SearchResultsView:()=>Ot,namespace:()=>St});var a=n(32735),r=n(23481),i=n(65858),o=n(68050),s=n(79967),l=n(31908),c=n(69111),u=n(2192);function d(e){var t,n,r,o=Object.assign(Object.assign({},e.analyticsData),{id:null===(t=e.data)||void 0===t?void 0:t.id,name:null===(n=e.data)||void 0===n?void 0:n.name}),s=Object.assign(Object.assign({location:i.LZ.ClassificationListItem},e.analyticsOptions),{actionType:i.Vw.Click,entity:i.py.Company,descriptor:i._S.Cover});return a.createElement(u.Q,Object.assign({},e,{analyticsData:o,analyticsOptions:s,coverUrl:null===(r=e.data.logo)||void 0===r?void 0:r.url}))}function p(e){return a.createElement(c.Z,{sm:6,md:e.useLargeStyle?6:4,lg:e.useLargeStyle?4:3},a.createElement("div",{className:"position-relative px-1 mb-2"},a.createElement(d,{data:e.item,getChildAppLink:e.appLinks.getCompanyAppLink,getChildAppLinkOptions:function(){var t,n;return null===(n=(t=e.appLinks).getCompanyAppLinkOptions)||void 0===n?void 0:n.call(t,e.item)},analyticsData:{itemIndex:e.itemIndex,search:{query:e.queryParams.query,score:e.item._score,maxScore:e.item._maxScore,featured:e.item._featured},pagePositionIndex:0},isLarge:e.useLargeStyle})))}var m=n(81886),v=n(43500),y=n(36848),g=n(83345),f=n(55577);const h="ZhLPS";function b(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,a=new Array(t);n<t;n++)a[n]=e[n];return a}var A="search.exchangeVideoGroup";function x(e){var t,n,r=e.item.showCount>=3?3:e.item.showCount,o=m.Q.C$.getCurrentAppLink(),s=null!==(t=o.params)&&void 0!==t?t:{},l=null!==(n=null==s?void 0:s.source)&&void 0!==n?n:[];l&&!Array.isArray(l)&&(l=[l]);var c,u=Object.assign(Object.assign({},o),{params:Object.assign(Object.assign({},s),{source:[].concat((c=l,function(e){if(Array.isArray(e))return b(e)}(c)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(c)||function(e,t){if(e){if("string"==typeof e)return b(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?b(e,t):void 0}}(c)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),[v.fi.ExchangeArchive])})}),d={query:e.queryParams.query,itemIndex:e.itemIndex,pagePositionIndex:e.pagePositionIndex},p={entity:i.py.SearchResults,location:i.LZ.ExchangeSearchGroupItem,actionType:i.Vw.Click,descriptor:i.Bk.ExchangeArchive};return a.createElement("div",{className:0===e.pagePositionIndex?"border-bottom pb-1 mb-3":"border-top border-bottom pt-3 mt-2 pb-1 mb-3"},a.createElement(y.F,{appLink:u,analyticsData:d,analyticsOptions:p},a.createElement("h2",{className:"h4"},a.createElement(g.x,{namespace:A,phrase:"heading"}))),a.createElement("p",null,a.createElement(g.x,{namespace:A,phrase:"message"})," ",a.createElement(y.F,{appLink:e.appLinks.searchSettings,className:"text-info",analyticsData:d,analyticsOptions:Object.assign(Object.assign({},p),{descriptor:i._S.Settings})},a.createElement(g.x,{namespace:A,phrase:"searchSettings"})),"."),a.createElement("div",{className:"position-relative ".concat(h)},e.item.videos.slice(0,r).map((function(t,n){return a.createElement(f.m,{key:n,video:t,yearGroups:e.yearGroups,getVideoAppLink:e.appLinks.getVideoAppLink,getSubTextAppLink:e.appLinks.getSubTextAppLink,presentationAudiences:e.audiences,setFavourite:e.setFavourite,canFavourite:e.canFavourite,analyticsData:{search:{query:e.queryParams.query,score:t._score,maxScore:t._maxScore,featured:t._featured},pagePositionIndex:e.pagePositionIndex},companyLogoFallbackUrl:e.companyLogoFallbackUrl,subTextType:e.subTextType,hasPermissions:e.hasPermissions})}))),a.createElement("div",{className:"text-center py-2"},a.createElement(y.F,{className:"text-secondary",appLink:u,analyticsData:d,analyticsOptions:p},a.createElement(g.x,{namespace:A,phrase:"seeMore"}))))}var L=n(3626);function E(e){return a.createElement("div",{className:"pb-3"},a.createElement(L.J,{video:e.item,presentationAudiences:e.audiences,getVideoAppLink:function(t,n){return e.appLinks.getVideoAppLink(t,n)},subTextAppLink:e.appLinks.getSubTextAppLink(e.item),setFavourite:e.setFavourite,canFavourite:e.canFavourite,analyticsData:{search:{query:e.queryParams.query,score:e.item._score,maxScore:e.item._maxScore,featured:e.item._featured},pagePositionIndex:e.pagePositionIndex},hideInteractiveBadge:!0,yearGroups:e.yearGroups,companyLogoFallbackUrl:e.companyLogoFallbackUrl,subTextType:e.subTextType,showVideoGuidance:l.M.showVideoGuidance(e.hasPermissions)}))}var S=n(98981),k=n(7733);const O={videoList:"eEZEe"};var P="search.playlistWithVideos";function j(e){var t,n=(t=(0,s.k)()).xl||t.xxl?3:2,r=e.playlist.videos.data.slice(0,n),l={actionType:i.Vw.Click,entity:i.py.Playlist,location:i.LZ.PlaylistWithVideos},u=Object.assign(Object.assign({},e.analyticsData),{id:e.playlist.id,name:e.playlist.name});return a.createElement("div",{className:"ps-2 py-2"},a.createElement(o.Z,{className:"g-0 border border-light rounded-3"},a.createElement(c.Z,{xs:4,lg:3,className:"pe-3"},a.createElement(S.tN,{appLink:e.playlistAppLink,analyticsData:e.analyticsData,analyticsOptions:Object.assign(Object.assign({},l),{descriptor:i._S.Cover}),data:e.playlist,presentationAudiences:e.presentationAudiences,bgColourClassNames:k.o,itemStyle:"round-left",imageCdnUrl:e.imageCdnUrl,currentUser:e.currentUser,showCount:!1,showOwner:!0})),a.createElement(c.Z,{xs:8,lg:9},a.createElement("div",{className:"d-flex justify-content-between"},a.createElement("div",{className:"pt-3 ".concat(O.videoList)},null==r?void 0:r.map((function(t){var n=Object.assign(Object.assign({},u),{videoId:t.id,videoName:t.name});return a.createElement(f.m,{key:t.id,video:t,getSubTextAppLink:e.getSubTextAppLink,canFavourite:function(){return!1},setFavourite:null,getVideoAppLink:e.getVideoAppLink,analyticsData:n,analyticsOptions:{entity:i.py.Video,location:i.LZ.PlaylistWithVideos},size:"sm",yearGroups:e.yearGroups,companyLogoFallbackUrl:e.companyLogoFallbackUrl,subTextType:e.subTextType,hasPermissions:e.hasPermissions})}))),a.createElement("div",{className:"text-end pt-3 pe-3"},a.createElement(y.F,{className:"info-link fw-semibold",appLink:e.playlistAppLink,analyticsData:u,analyticsOptions:Object.assign(Object.assign({},l),{descriptor:i._S.Link})},a.createElement(g.x,{namespace:P,phrase:"seeAllVideos"})))))))}function C(e){return a.createElement("div",{className:"mx-n2"},a.createElement(j,{playlist:e.item,yearGroups:e.yearGroups,playlistAppLink:e.appLinks.getPlaylistAppLink(e.item),presentationAudiences:e.audiences,analyticsData:{search:{query:e.queryParams.query,score:e.item._score,maxScore:e.item._maxScore,featured:e.item._featured},pagePositionIndex:e.pagePositionIndex},imageCdnUrl:e.imageCdnUrl,currentUser:e.currentUser,preloadImage:!0,getSubTextAppLink:e.appLinks.getSubTextAppLink,getVideoAppLink:e.appLinks.getVideoAppLink,companyLogoFallbackUrl:e.companyLogoFallbackUrl,subTextType:e.subTextType,hasPermissions:e.hasPermissions}))}var I=n(34004);const w={videoList:"UT8bc"};var F="search.seriesWithVideos";function T(e){var t,n=(t=(0,s.k)()).xl||t.xxl?5:t.lg||t.md?4:3,r=e.series.videos.data.slice(0,n),l={actionType:i.Vw.Click,entity:i.py.Series,location:i.LZ.SeriesWithVideos},u=Object.assign(Object.assign({},e.analyticsData),{id:e.series.id,name:e.series.name});return a.createElement("div",{className:"ps-2 py-2"},a.createElement(o.Z,{className:"g-0 border border-light rounded-3"},a.createElement(c.Z,{xs:4,lg:3,className:"pe-3"},a.createElement(y.F,{appLink:e.seriesAppLink,className:"position-relative",analyticsData:u,analyticsOptions:Object.assign(Object.assign({},l),{descriptor:i._S.TallPoster})},a.createElement(I.r,{series:e.series,presentationAudiences:e.presentationAudiences,preloadImage:e.preloadImage,imageClass:"rounded-start-lg"}))),a.createElement(c.Z,{xs:8,lg:9},a.createElement("div",{className:"d-flex justify-content-between"},a.createElement("div",{className:"pt-3 ".concat(w.videoList)},null==r?void 0:r.map((function(t){var n=Object.assign(Object.assign({},u),{videoId:t.id,videoName:t.name});return t=Object.assign(Object.assign({},t),{series:e.series}),a.createElement(f.m,{key:t.id,video:t,getSubTextAppLink:e.subTextAppLink,canFavourite:function(){return!1},setFavourite:null,getVideoAppLink:e.getVideoAppLink,analyticsData:n,analyticsOptions:{entity:i.py.Video,location:i.LZ.SeriesWithVideos},size:"sm",yearGroups:e.yearGroups,companyLogoFallbackUrl:e.companyLogoFallbackUrl,subTextType:e.subTextType,hasPermissions:e.hasPermissions})}))),a.createElement("div",{className:"text-end pt-3 pe-3"},a.createElement(y.F,{className:"info-link fw-semibold",appLink:e.seriesAppLink,analyticsData:u,analyticsOptions:Object.assign(Object.assign({},l),{descriptor:i._S.Link})},a.createElement(g.x,{namespace:F,phrase:"seeAllVideos"})))))))}function N(e){return a.createElement("div",{className:"mx-n2"},a.createElement(T,{yearGroups:e.yearGroups,presentationAudiences:e.audiences,series:e.item,seriesAppLink:e.appLinks.getSeriesAppLink(e.item),subTextAppLink:e.appLinks.getSubTextAppLink,getVideoAppLink:e.appLinks.getVideoAppLink,analyticsData:{search:{query:e.queryParams.query,score:e.item._score,maxScore:e.item._maxScore,featured:e.item._featured},pagePositionIndex:e.pagePositionIndex},preloadImage:!0,companyLogoFallbackUrl:e.companyLogoFallbackUrl,subTextType:e.subTextType,hasPermissions:e.hasPermissions}))}var _=n(5465),V=n(24900),q=n(11882),U="search.collectionVideoList";function R(e){var t,n=(t=(0,s.k)()).xs?2:t.sm?1:3,r={analyticsData:e.analyticsData,analyticsOptions:e.analyticsOptions};return a.createElement(a.Fragment,null,a.createElement("ul",{className:"list-unstyled my-1"},e.videos.slice(0,n).map((function(t){var n,i=!!t.episodeNumber&&!!(null===(n=t.season)||void 0===n?void 0:n.id);return a.createElement("li",{key:"".concat(e.collectionId,":").concat(t.id),className:"d-flex align-items-center"},a.createElement(y.F,Object.assign({},r,{className:"clamp-1",appLink:e.getVideoAppLink(t)}),i&&a.createElement(a.Fragment,null,a.createElement(q.Q,{video:t})," "),t.name))}))),a.createElement(y.F,Object.assign({},r,{className:"info-link",appLink:e.appLink}),a.createElement(g.x,{namespace:U,phrase:"seeAll"})))}var D=n(83657),M=n(18559),B=n(17464),G=n(75163),Z=n(9977),$=n(54610);const Q={overlayContainer:"MnBcv",overlay:"AZSmh"};var W="search.collectionThumbnail";function H(e){var t,n,r,o,l=(0,s.k)(),u="sm"===Z.O.getSize(l,"md"),d=!!(null===(n=null===(t=e.collection.videos)||void 0===t?void 0:t.data)||void 0===n?void 0:n.length),p=d&&e.collection.videos.data.find((function(e){var t;return!!(null===(t=e.thumbnail)||void 0===t?void 0:t.url)})),m=(o=Object.assign(Object.assign({},e.analyticsData),{id:e.collection.id,name:e.collection.name}),p&&(o.videoId=p.id,o.videoName=p.name),o),v="series"===e.collectionType;return a.createElement("div",{className:"row g-0 ".concat(u?"":"py-2")},a.createElement(c.Z,Object.assign({},Z.O.getThumbnailColumns(),{className:"flex-column align-items-flex-start ".concat(u?"pb-2 pe-2":"mb-1 px-2")}),a.createElement("div",{className:"position-relative overflow-hidden ".concat(u?"rounded":"rounded-3")},a.createElement(G.Z,{data:null==p?void 0:p.thumbnail,appLink:e.appLink,imageType:$.__.Thumbnails,analyticsData:m,analyticsOptions:Object.assign(Object.assign({},e.analyticsOptions),{descriptor:i._S.Thumbnail})},a.createElement(V.z,{type:e.maskType}),a.createElement(_.oy,{type:e.imageFallbackType}),a.createElement("div",{className:"d-flex flex-column align-items-center justify-content-center text-white h-100 ".concat(Q.overlay)},a.createElement(g.x,{namespace:W,phrase:"seeAll"}))))),a.createElement(c.Z,Object.assign({},Z.O.getDetailsColumns(),{className:u?"pb-2":"px-2"}),!e.isPlugin&&a.createElement(D.e,{actions:e.getCollectionActions(e.collection,e.showActions,e.collectionType,e.analyticsOptions),className:"float-end mt-n1",actionsDropdownClassName:"btn btn-link ms-1"}),a.createElement(y.F,{appLink:e.appLink,analyticsData:m,analyticsOptions:Object.assign(Object.assign({},e.analyticsOptions),{descriptor:i._S.Title})},a.createElement("h5",{className:"m-0 mb-1"},a.createElement("span",{className:"clamp-1"},e.collection.name))),v&&!e.hideBadges&&a.createElement(B.c,null,a.createElement(M.C,{type:M.g.Rating,data:e.collection.rating}),a.createElement(M.C,{type:M.g.ProductionYear,data:null===(r=e.collection.metadata)||void 0===r?void 0:r.year})),d&&a.createElement(R,{collectionId:e.collection.id,videos:e.collection.videos.data,appLink:e.appLink,analyticsData:m,analyticsOptions:Object.assign(Object.assign({},e.analyticsOptions),{descriptor:i._S.Link}),getVideoAppLink:e.getVideoAppLink})))}function z(e){return a.createElement("div",{className:"position-relative ".concat(h)},a.createElement(H,{analyticsData:{search:{query:e.queryParams.query,score:e.item._score,maxScore:e.item._maxScore,featured:e.item._featured},pagePositionIndex:e.pagePositionIndex},analyticsOptions:{entity:i.py.Playlist,actionType:i.Vw.Click,location:i.LZ.PlaylistListItem},appLink:e.appLinks.getPlaylistAppLink(e.item),showActions:e.showActions,collection:e.item,collectionType:"playlist",maskType:V.O.Playlist,imageFallbackType:_.mS.PlaylistThumbnail,isPlugin:e.isPlugin,getVideoAppLink:e.appLinks.getVideoAppLink,getCollectionActions:e.appLinks.getCollectionActions}))}function J(e){return a.createElement("div",{className:"position-relative ".concat(h)},a.createElement(H,{analyticsData:{search:{query:e.queryParams.query,score:e.item._score,maxScore:e.item._maxScore,featured:e.item._featured},pagePositionIndex:e.pagePositionIndex},analyticsOptions:{entity:i.py.Series,actionType:i.Vw.Click,location:i.LZ.SeriesListItem},appLink:e.appLinks.getSeriesAppLink(e.item),collectionType:"series",collection:e.item,showActions:e.showActions,maskType:V.O.Series,imageFallbackType:_.mS.SeriesThumbnail,hideBadges:!0,isPlugin:e.isPlugin,getVideoAppLink:e.appLinks.getVideoAppLink,getCollectionActions:e.appLinks.getCollectionActions}))}var X=n(9513);function K(e){return a.createElement(c.Z,{sm:6,md:e.useLargeStyle?6:4,lg:e.useLargeStyle?4:3},a.createElement("div",{className:"position-relative px-1 mb-2"},a.createElement(X.Vz,{data:e.item,getChildAppLink:e.appLinks.getClassificationAppLink,getChildAppLinkOptions:function(){var t,n;return null===(n=(t=e.appLinks).getClassificationAppLinkOptions)||void 0===n?void 0:n.call(t,e.item)},availablePresentations:e.availablePresentations,analyticsData:{itemIndex:e.itemIndex,search:{query:e.queryParams.query,score:e.item._score,maxScore:e.item._maxScore,featured:e.item._featured},pagePositionIndex:0},isLarge:e.useLargeStyle})))}var Y=n(50333),ee=n(17585);function te(e){var t,n=(t=e.item,l.M.isClip(t)?Y.I:l.M.isInteractive(t)?ee.H:f.m);return a.createElement("div",{className:"position-relative ".concat(h)},a.createElement(n,{video:e.item,yearGroups:e.yearGroups,getVideoAppLink:e.appLinks.getVideoAppLink,getSubTextAppLink:e.appLinks.getSubTextAppLink,getPreviewQuestionsAppLink:e.appLinks.getPreviewQuestionsAppLink,presentationAudiences:e.audiences,setFavourite:e.setFavourite,canFavourite:e.canFavourite,analyticsData:{search:{query:e.queryParams.query,score:e.item._score,maxScore:e.item._maxScore,featured:e.item._featured},pagePositionIndex:e.pagePositionIndex},companyLogoFallbackUrl:e.companyLogoFallbackUrl,subTextType:e.subTextType,hasPermissions:e.hasPermissions}))}function ne(e){return function(e){if(Array.isArray(e))return ae(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,t){if(e){if("string"==typeof e)return ae(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?ae(e,t):void 0}}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function ae(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,a=new Array(t);n<t;n++)a[n]=e[n];return a}var re=a.memo((function(e){var t,n,r,i,c,u,d,m,v=(0,s.k)(),y=v.xs||v.sm;if(!(null===(t=e.results)||void 0===t?void 0:t.length)&&!(null===(n=e.topics)||void 0===n?void 0:n.totalResults)&&!(null===(r=e.companies)||void 0===r?void 0:r.totalResults))return a.createElement(a.Fragment,null);var g=[].concat(ne(null!==(c=null===(i=e.companies)||void 0===i?void 0:i.results)&&void 0!==c?c:[]),ne(null!==(d=null===(u=e.topics)||void 0===u?void 0:u.results)&&void 0!==d?d:[])),f=Object.assign({useLargeStyle:g.length<4},e);return a.createElement("div",{className:"position-relative"},!!g.length&&a.createElement(o.Z,{className:"g-0 pb-3 mx-n1"},g.slice(0,8).map((function(e,t){switch(e.type.toLowerCase()){case"company":return a.createElement(p,Object.assign({key:t,item:e,itemIndex:t},f));case"subject":return a.createElement(K,Object.assign({key:t,item:e,itemIndex:t},f))}}))),null===(m=e.results)||void 0===m?void 0:m.map((function(e,t){var n,r,i=g.length?t+1:t;if("isExchangeVideoGroup"in e&&e.isExchangeVideoGroup)return a.createElement(x,Object.assign({key:t,item:e,pagePositionIndex:i},f));switch(null===(n=e.type)||void 0===n?void 0:n.toLowerCase()){case"interactive":case"clip":case"video":return 0===t&&e._featured&&l.M.isVideo(e)?a.createElement(E,Object.assign({key:t,item:e,pagePositionIndex:i},f)):a.createElement(te,Object.assign({key:t,item:e,pagePositionIndex:i},f));case"playlist":return y?a.createElement(z,Object.assign({key:t,item:e,pagePositionIndex:i},f)):a.createElement(C,Object.assign({key:t,item:e,pagePositionIndex:i},f));case"series":return y||!(null===(r=e.tallPoster)||void 0===r?void 0:r.id)?a.createElement(J,Object.assign({key:t,item:e,pagePositionIndex:i},f)):a.createElement(N,Object.assign({key:t,item:e,pagePositionIndex:i},f))}})))})),ie=n(83818),oe="search.searchSubstitute";function se(e){return e.substitute?a.createElement("p",{className:"mb-3"},a.createElement(g.x,{namespace:oe,phrase:"showingFor"})," ",a.createElement(y.F,{className:"info-link",appLink:e.getAppLink(e.substitute,e.queryParams),appLinkOptions:{replace:!0}},e.substitute)):a.createElement(a.Fragment,null)}var le="search.searchSuggestions";function ce(e){var t;return(null===(t=e.suggestions)||void 0===t?void 0:t.length)?a.createElement("div",{className:"d-flex align-items-center mb-3"},a.createElement(g.x,{namespace:le,phrase:"didYouMean"})," ",e.suggestions.map((function(t,n){return a.createElement(a.Fragment,{key:"".concat(t,":").concat(n)},0!==n&&a.createElement("span",{className:"mx-1"},"•"),a.createElement(y.F,{className:"info-link",appLink:e.getAppLink(t,e.queryParams),appLinkOptions:{replace:!0}},t))}))):a.createElement(a.Fragment,null)}ce.defaultProps={suggestions:[],queryParams:{}};var ue=n(71020),de=n(51365),pe=n(79612),me=n(76753),ve=n(14070),ye=n(97291),ge=n(62756),fe=n(10671),he=n(27638),be=n(20354),Ae=n(96560),xe=n(16714),Le=n(72639),Ee=n(12754),Se=n(21750),ke=n(39151),Oe=n(1666),Pe=n(98064),je=n(31949),Ce=n(22902),Ie=n(15311),we=n(37802),Fe=n(96787),Te=n(10144),Ne=n(24965),_e=n(82817),Ve=n(86698),qe=n(44110),Ue=n(23737),Re=n(1211),De=n(99940),Me=n(97395),Be=n(2997),Ge=n(27898);function Ze(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,a=new Array(t);n<t;n++)a[n]=e[n];return a}function $e(e){return $e="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},$e(e)}function Qe(e){var t,n,a,r=e.totalResults,i=null!==(n=null===(t=null==e?void 0:e.results)||void 0===t?void 0:t.filter((function(e){var t,n,a,i,o,s,l,c;if("series"!==e._index&&"playlist"!==e._index)return!0;if("playlist"===e._index){var u=e;return!!((null===(n=null===(t=u.clips)||void 0===t?void 0:t.data)||void 0===n?void 0:n.length)||(null===(i=null===(a=u.interactives)||void 0===a?void 0:a.data)||void 0===i?void 0:i.length)||(null===(s=null===(o=u.videos)||void 0===o?void 0:o.data)||void 0===s?void 0:s.length))||(r--,!1)}return 0!==(null===(c=null===(l=e.videos)||void 0===l?void 0:l.data)||void 0===c?void 0:c.length)||(r--,!1)})))&&void 0!==n?n:[];e.results=i,e.totalResults=r;var o=null===(a=i[0])||void 0===a?void 0:a._score;return Object.assign(Object.assign({},e),{results:Ge.Q.mapMaxScoreToSearchResults(i,o)})}var We={searchV4:function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},a=arguments.length>3?arguments[3]:void 0,r=arguments.length>4?arguments[4]:void 0,i="search:v4:".concat(e,":").concat(t,":").concat(a);i+=Object.keys(n).map((function(e){var t=n[e];return Array.isArray(t)?t.join(";"):t})).join(";");var o=n,s="".concat(Be.w.FILTER_PARAM_PREFIX,"excludeLibraryExclusive"),l=o[s],c=o.isLearner,u=function(e,t){var n={};for(var a in e)Object.prototype.hasOwnProperty.call(e,a)&&t.indexOf(a)<0&&(n[a]=e[a]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var r=0;for(a=Object.getOwnPropertySymbols(e);r<a.length;r++)t.indexOf(a[r])<0&&Object.prototype.propertyIsEnumerable.call(e,a[r])&&(n[a[r]]=e[a[r]])}return n}(o,["symbol"===$e(s)?s:s+"","isLearner"]),d={searchType:"content",indices:t.map((function(e){return"video"===e&&l?{index:e,filters:{excludeLibraryExclusive:l}}:{index:e}})),filters:Object.entries(u).reduce((function(e,t){var n,a,r=(a=2,function(e){if(Array.isArray(e))return e}(n=t)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var a,r,i,o,s=[],l=!0,c=!1;try{if(i=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;l=!1}else for(;!(l=(a=i.call(n)).done)&&(s.push(a.value),s.length!==t);l=!0);}catch(e){c=!0,r=e}finally{try{if(!l&&null!=n.return&&(o=n.return(),Object(o)!==o))return}finally{if(c)throw r}}return s}}(n,a)||function(e,t){if(e){if("string"==typeof e)return Ze(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?Ze(e,t):void 0}}(n,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.")}()),i=r[0],o=r[1];return Object.assign(Object.assign({},e),function(e,t,n){var a;return a=function(e,t){if("object"!=$e(e)||!e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var a=n.call(e,"string");if("object"!=$e(a))return a;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(t),(t="symbol"==$e(a)?a:a+"")in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}({},i.replace("filters.",""),o))}),{}),query:e,allowSubstitute:!0,cursor:null!=a?a:void 0,isLearner:!!c,limit:r};return{url:"{gateway}/v4/search",publicUrl:"/api/search/v4",type:De.k.POST,data:d,key:i,formatData:Qe}},search:function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},a=arguments.length>3?arguments[3]:void 0,r=arguments.length>4?arguments[4]:void 0,i=arguments.length>5?arguments[5]:void 0,o="search:".concat(e,":").concat(t,":").concat(a);o+=Object.keys(n).map((function(e){var t=n[e];return Array.isArray(t)?t.join(";"):t})).join(";");var s=Object.assign({},Object.assign({index:t,cursor:null!=a?a:void 0,query:e,allowSubstitute:!0},n));return{url:Me._.urlBuilder("{gateway}/v3/search",s),publicUrl:Me._.urlBuilder("/api/search",s),key:o,formatData:Qe,success:r,error:i}},tagsAndClassifications:function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},a=arguments.length>3?arguments[3]:void 0,r=arguments.length>4?arguments[4]:void 0,i=arguments.length>5?arguments[5]:void 0,o=Object.assign({},Object.assign({index:t,cursor:a,query:e},n));return{url:Me._.urlBuilder("{gateway}/v3/search/tags-and-classifications",o),publicUrl:Me._.urlBuilder("/api/search/tags-and-classifications",o),key:"filter:options:".concat(e,":").concat(t.join(":"),":").concat(a),success:r,error:i,normalize:!1}}},He=n(97514),ze=n(4499);function Je(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,a=new Array(t);n<t;n++)a[n]=e[n];return a}var Xe=n(1048),Ke=n(2284),Ye=n(85594),et=n(24598);function tt(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,a=new Array(t);n<t;n++)a[n]=e[n];return a}var nt=["filters.classification","filters.presentation"],at=["filters.classification","filters.presentation","isLearner"];function rt(e){return function(e){if(Array.isArray(e))return it(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,t){if(e){if("string"==typeof e)return it(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?it(e,t):void 0}}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function it(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,a=new Array(t);n<t;n++)a[n]=e[n];return a}function ot(e){var t,n,a,r,i,o,s=be.a.useBasicFetch(je.N.currentUser()),l=be.a.useBasicFetch((null===(t=s.data)||void 0===t?void 0:t.id)&&je.N.user(s.data.id)),c=be.a.useBasicFetch(ke.L.config()),u=be.a.useBasicFetch((null===(n=s.data)||void 0===n?void 0:n.isAuthenticated)&&Oe.h.yearGroups(s.data.customerId)),d=(0,Ie.r)(),p=(0,we.r)(null),m=function(){var e,t,n,a,r,i=be.a.useBasicFetch(je.N.currentUser()),o=(0,Ie.r)(),s=(0,we.r)(null),l=be.a.useBasicFetch(Pe.D.streamableLearning()),c=null===(e=l.data)||void 0===e?void 0:e.objectId,u=o.hasProduct(Ee.x.Exchange)&&s.showExchangeSearchResults,d=be.a.useBasicFetch((null===(t=i.data)||void 0===t?void 0:t.isAuthenticated)&&Pe.D.domainLibraries(["sharedLibrary","customLibrary","workspace","hostedLibrary","exchange"])),p=null!==(n=d.data)&&void 0!==n?n:[],m=null==p?void 0:p.findIndex((function(e){return e.type===Ae.r.Exchange})),v=null===(a=p[m])||void 0===a?void 0:a.id;if(u||(p=[].concat(rt(p.slice(0,m)),rt(p.slice(m+1)))),c){var y=null==p?void 0:p.findIndex((function(e){return e.id.toString()===c.toString()}));p=[].concat(rt(p.slice(0,y)),rt(p.slice(y+1)))}return{hasLibrariesCompleted:l.hasCompleted&&(!(null===(r=i.data)||void 0===r?void 0:r.isAuthenticated)||d.hasCompleted),libraries:p,exchangeLibraryId:v,streamableLibraryId:c,showExchangeSearchResults:u}}(),v=m.hasLibrariesCompleted,y=m.libraries,g=m.exchangeLibraryId,f=m.streamableLibraryId,h=m.showExchangeSearchResults,b=(0,Ve.y)(),A=b.activePresentation,x=b.availablePresentations,L=b.getFallbackPresentation,E=b.hasPresentationsLoaded,S=A||L(),k=null==S?void 0:S.id,O=(0,_e.M)(),P=(0,qe.i)(),j=function(e){var t=(0,(0,Ce.T)().hasPermissions)(xe.C.StudentExperience),n=(0,Ve.y)(),a=n.availablePresentations,r=n.hasPresentationsLoaded,i=t?e?[null==e?void 0:e.id]:null:null==a?void 0:a.map((function(e){return e.id}));return be.a.useBasicFetch(r&&i&&Re.J.schoolLevels(i))}(S),C=null===(r=null===(a=j.data)||void 0===a?void 0:a.schoolLevels)||void 0===r?void 0:r.map((function(e){return e.id})),I=be.a.useBasicFetch((null==j?void 0:j.data)&&Se.x.topicsFromAllAvailablePresentations(C)),w=function(){var e,t,n=be.a.useBasicFetch(je.N.currentUser()),a=be.a.useBasicFetch(Ne.Z.ratings(null===(e=n.data)||void 0===e?void 0:e.countryCode)),r=(0,Ve.y)(),i=r.activePresentation,o=r.availablePresentations,s=r.getFallbackPresentation,l=r.hasPresentationsLoaded,c=i||s();return l?(null==o?void 0:o.length)>1||!c||Te.i.getMappedPresentationLevel(c.learningLevel)!==Le.p.Level_1?a:Object.assign(Object.assign({},a),{data:null===(t=a.data)||void 0===t?void 0:t.filter((function(e){return e.code&&e.value<64}))}):a}(),F=(0,Ce.T)(),T=F.hasPermissions,N=F.hasLocalPermissions,_=T(xe.C.StudentExperience),V=T(xe.C.ViewCurriculums),q=N(xe.E.UseSeriesActions),U=function(e){var t,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],a=arguments.length>2?arguments[2]:void 0,r=arguments.length>3?arguments[3]:void 0,i=arguments.length>4?arguments[4]:void 0,o=(null==n?void 0:n.length)&&He.qr.buildBackendFilterParams(e,n,[a],i,[]),s=Xe.t.pick(o,i?at:nt);s["filters.classificationType"]=Ye.A.Subject,s["filters.status"]=Ke.W.Published,(null==e?void 0:e.moviesAndTv)&&(s["filters.curationTag"]=et.b.MOVIES_AND_TV),r.length&&(s["filters.presentation"]=r.map((function(e){return e.id})));var l=null!==(t=null==r?void 0:r.reduce((function(e,t){return e[t.id]=t,e}),{}))&&void 0!==t?t:{},c=!He.qr.getAppliedIndices(e).includes("classification"),u=We.search(ze.y.getQuery(e),["classification"],s),d=!c,p=be.a.useBasicFetch(d&&u);if(!d)return null;if(!p.data)return p;if(!r||(null==r?void 0:r.length)<2)return p;var m,v=(m=p.data.results,function(e){if(Array.isArray(e))return tt(e)}(m)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(m)||function(e,t){if(e){if("string"==typeof e)return tt(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?tt(e,t):void 0}}(m)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()).sort((function(e,t){if(e._score!==t._score)return 0;var n=l[e.presentationId],a=l[t.presentationId];return n?a?n.value-a.value:-1:1}));return Object.assign(Object.assign({},p),{data:Object.assign(Object.assign({},p.data),{results:v})})}(e,w.data,k,x,_),R=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],n=arguments.length>3?arguments[3]:void 0,a=(arguments.length>2?arguments[2]:void 0).map((function(e){return e.id})),r=(null==t?void 0:t.length)&&He.qr.buildBackendFilterParams(e,t,a,!1,[])||{};(null==a?void 0:a.length)&&(r["filters.presentation"]=a);var i,o=!He.qr.getAppliedIndices(e).includes("company"),s=We.search(ze.y.getQuery(e),["company"],r),l=!o&&n,c=be.a.useBasicFetch(l&&s);return l?c.data?Object.assign(Object.assign({},c),{data:Object.assign(Object.assign({},c.data),{results:(i=c.data.results,function(e){if(Array.isArray(e))return Je(e)}(i)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(i)||function(e,t){if(e){if("string"==typeof e)return Je(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?Je(e,t):void 0}}(i)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}())})}):c:null}(e,w.data,x,p.hasNewMoviesAndTv);return{queryParams:e,currentUser:s,userDetails:l,config:c,yearGroups:u,products:d,settings:p,curriculums:O,audiences:P,schoolLevels:j,currentPresentation:S,availablePresentations:x,availableTopics:I,ratings:w,topics:U,companies:R,moviesAndTvDashboard:(0,Ue.y)({targetType:Fe.ku.MoviesAndTv,queryParams:e}).dashboard,currentPresentationId:k,isLearner:_,canViewCurriculums:V,canUseSeriesActions:q,libraries:y,hasDataLoaded:P.hasCompleted&&E&&s.hasCompleted&&(!(null===(i=s.data)||void 0===i?void 0:i.isAuthenticated)||l.hasCompleted)&&w.hasCompleted&&c.hasCompleted&&x&&(!(null===(o=s.data)||void 0===o?void 0:o.isAuthenticated)||!d.isLoadingProducts)&&!p.isLoadingSettings&&v,exchangeLibraryId:g,streamableLibraryId:f,showExchangeSearchResults:h,hasPermissions:T}}var st=n(94644),lt=n(69883),ct=n(60115),ut=n(97816),dt=n(4594);function pt(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,a=new Array(t);n<t;n++)a[n]=e[n];return a}function mt(e){return mt="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},mt(e)}function vt(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,a=new Array(t);n<t;n++)a[n]=e[n];return a}var yt="search.utils";function gt(e){var t,n,i,o,s,c,u=e.queryParams,d=e.appliedIndices,p=e.backendFilters,m=(0,lt.Z)(),v=be.a.useGetFetch(),y=be.a.useGetResponse(null===(t=b())||void 0===t?void 0:t.key),g=function(t){var n,a,r;return!!t&&(null===(r=null===(a=null===(n=e.backendFilters)||void 0===n?void 0:n["".concat(Be.w.FILTER_PARAM_PREFIX,"library")])||void 0===a?void 0:a.some)||void 0===r?void 0:r.call(a,(function(e){return e.toString()===t})))}(null===(n=e.exchangeLibraryId)||void 0===n?void 0:n.toString()),f=e.hasDataLoaded&&(null==d?void 0:d.length)&&e.showExchangeSearchResults&&!g,h=be.a.useBasicFetch(f&&We.searchV4(u.query,d,p,null,10));function b(t){if(e.hasDataLoaded&&(null==d?void 0:d.length)){var n=Object.assign({},e.backendFilters);if(e.showExchangeSearchResults&&!g){var a="".concat(Be.w.FILTER_PARAM_PREFIX,"excludeLibraryExclusive");n=Object.assign(Object.assign({},n),(r={},i=a,o=[].concat(function(e){if(Array.isArray(e))return vt(e)}(l=n[a])||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(l)||function(e,t){if(e){if("string"==typeof e)return vt(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?vt(e,t):void 0}}(l)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}(),[e.exchangeLibraryId]),s=function(e,t){if("object"!=mt(e)||!e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var a=n.call(e,"string");if("object"!=mt(a))return a;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(i),(i="symbol"==mt(s)?s:s+"")in r?Object.defineProperty(r,i,{value:o,enumerable:!0,configurable:!0,writable:!0}):r[i]=o,r))}return We.searchV4(u.query,d,n,t)}var r,i,o,s,l}function A(e){v(b(e))}var x=(0,ct.K)(b,A,(function(e,t){if(1===e)return(0,st.r)(t);m.error(r.T.getPhrase(yt,"error"))}),(function(e){return e.results})),L=null===(i=x.items)||void 0===i?void 0:i.filter((function(e){return"video"===e._index||"clip"===e._index}));(0,ut.V)(L);var E=function(e){var t,n;return a.useMemo((function(){var t,n;if(!(null===(t=e.searchResults)||void 0===t?void 0:t.length)||!(null===(n=e.mixedExchangeSearchResults)||void 0===n?void 0:n.length)||"untouched"===e.groupingType)return e.searchResults;var a,r,i,o=function(e){if(Array.isArray(e))return pt(e)}(i=e.searchResults)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(i)||function(e,t){if(e){if("string"==typeof e)return pt(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?pt(e,t):void 0}}(i)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}(),s=[],c=!1;e.mixedExchangeSearchResults.forEach((function(e,t){var n,i,o;if(3!==s.length){if(l.M.isVideo(e)&&1===(null===(n=e.libraries.data)||void 0===n?void 0:n.length)&&(null===(o=null===(i=e.libraries.data)||void 0===i?void 0:i[0])||void 0===o?void 0:o.typeId)===dt.E.ExchangeCollection)return void 0===a&&(a=t,r=0,c=!0),c&&r++,void s.push(e);c=!1}}));var u={id:null,type:null,name:null,videos:s,showCount:0===a?1:r,isExchangeVideoGroup:!0,_index:null};return"group"===e.groupingType&&s.length&&o.splice(a,0,u),o}),[e.searchResultsResponse,null===(t=e.searchResults)||void 0===t?void 0:t.length,null===(n=e.mixedExchangeSearchResults)||void 0===n?void 0:n.length,e.groupingType])}({searchResults:x.items,mixedExchangeSearchResults:null===(o=h.data)||void 0===o?void 0:o.results,searchResultsResponse:y.data,groupingType:e.showExchangeSearchResults?g?"untouched":"group":"omit"});return Object.assign(Object.assign({},x),{hasFirstPageCompleted:x.hasFirstPageCompleted||!e.hasDataLoaded||!(null==d?void 0:d.length),items:E,fetchNext:A,substituteQuery:null===(s=y.data)||void 0===s?void 0:s.substituteQuery,suggestions:null===(c=y.data)||void 0===c?void 0:c.suggestions})}var ft=n(2948),ht=n(86702);function bt(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,a=new Array(t);n<t;n++)a[n]=e[n];return a}var At=n(23232),xt=n(99742),Lt="search.searchResultsEmptyState";function Et(e){var t,n,r=e.scotland&&"nessie"===(null===(n=null===(t=e.query)||void 0===t?void 0:t.trim())||void 0===n?void 0:n.toLowerCase())?xt.W.EmptyStates.Search.RESULTS_SCOTLAND:xt.W.EmptyStates.Search.RESULTS;return a.createElement(g.D.Provider,{value:Lt},a.createElement(At.u,null,a.createElement(At.u.Image,{src:r}),a.createElement(At.u.Heading,null,e.query?a.createElement(g.x,{phrase:"headingWithQuery",options:{query:e.query}}):a.createElement(g.x,{phrase:"headingWithoutQuery"})),a.createElement(At.u.Info,null,a.createElement(g.x,{phrase:"info"}),a.createElement(y.F,{className:"info-link",appLink:{application:ye.O.SUBJECT,action:ve.e.Subjects.CLASSIFICATION_ALL}},a.createElement(g.x,{phrase:"topicsAppLink"})))))}var St="search.searchResults",kt=r.T.encloseNamespace(St);function Ot(e){var t,n,r,o,s,l,c,u,d,p,m,v,y=e.queryParams,g=void 0===y?{}:y,f=(0,fe._)({location:fe.i.VideoItem}),h=(0,he.u)(i.LZ.VideoThumbnail),b=h.setFavourite,A=h.canFavourite,x=(0,ge.G)().isPlugin,L=ot(g),E=ze.y.getBackendFilters(L),S=!!(null==E?void 0:E.appliedIndices.length),k=(v=S&&E,be.a.useBasicFetch(v&&We.tagsAndClassifications(v.queryParams.query,v.appliedIndices,v.backendFilters))),O=gt(Object.assign(Object.assign({},E),L)),P=ze.y.getFilters(L,null==E?void 0:E.inaccessibleIndices,S&&k);(0,pe.M)(me.CG.getDefaultMetadata({title:null!==(t=g.query)&&void 0!==t?t:"",phraseContext:{phraseHandler:kt,titlePhrase:"pageTitle",descriptionPhrase:"pageDescription"},allowIndexing:!1}));var j,C,I,w,F,T,N=L.hasDataLoaded&&P,_=O.hasFirstPageCompleted&&(!L.topics||L.topics.hasCompleted)&&(!L.companies||L.companies.hasCompleted)&&(!S||k.hasCompleted)&&!!P,V=(null===(n=O.items)||void 0===n?void 0:n.length)||(null===(o=null===(r=L.topics)||void 0===r?void 0:r.data)||void 0===o?void 0:o.totalResults)||(null===(l=null===(s=L.companies)||void 0===s?void 0:s.data)||void 0===l?void 0:l.totalResults);return j=_,F=(0,ft.D)(ht.y.SHOW_SEARCH_MASK,!0),T=2,C=function(e){if(Array.isArray(e))return e}(F)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var a,r,i,o,s=[],l=!0,c=!1;try{if(i=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;l=!1}else for(;!(l=(a=i.call(n)).done)&&(s.push(a.value),s.length!==t);l=!0);}catch(e){c=!0,r=e}finally{try{if(!l&&null!=n.return&&(o=n.return(),Object(o)!==o))return}finally{if(c)throw r}}return s}}(F,T)||function(e,t){if(e){if("string"==typeof e)return bt(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?bt(e,t):void 0}}(F,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.")}(),I=C[0],w=C[1],a.useEffect((function(){I&&j&&w(!1)}),[j]),N?a.createElement("div",{className:"px-4"},a.createElement(se,{substitute:O.substituteQuery,queryParams:g,getAppLink:ze.y.getSearchAppLink}),!O.substituteQuery&&a.createElement(ce,{suggestions:O.suggestions,queryParams:g,getAppLink:ze.y.getSearchAppLink}),!!L.audiences.data&&!!L.ratings.data&&!!L.availableTopics.data&&a.createElement(ie.J,{queryParams:g,mainFilters:null==P?void 0:P.mainFilters,moreFilters:null==P?void 0:P.moreFilters,analyticsOptions:{entity:i.py.SearchResults,location:i.LZ.SearchFilters},appLink:{application:ye.O.SEARCH,action:ve.e.Search.HOME},isFetchingOptions:k.isFetching}),_&&a.createElement("section",null,V?a.createElement(de.M.Provider,{value:f},a.createElement(re,{queryParams:g,results:O.items,topics:null===(c=L.topics)||void 0===c?void 0:c.data,companies:null===(u=L.companies)||void 0===u?void 0:u.data,setFavourite:b,canFavourite:A,audiences:!g.moviesAndTv&&L.audiences.data,currentUser:L.currentUser.data,imageCdnUrl:L.config.data.imageCdnUrl,availablePresentations:L.availablePresentations,showActions:!L.isLearner&&L.canUseSeriesActions,hasPermissions:L.hasPermissions,yearGroups:L.yearGroups.data,isPlugin:x,appLinks:ze.y.getAppLinks(L.currentPresentation,L.availablePresentations,g.moviesAndTv),subTextType:"series"})):a.createElement(Et,{query:g.query,scotland:null!==(m=!!(null===(p=null===(d=L.currentPresentation)||void 0===d?void 0:d.description)||void 0===p?void 0:p.toLowerCase().includes("scotland")))&&void 0!==m&&m}),(O.hasMore||O.isFetching)&&a.createElement(ue._,{isFetching:O.isFetching,fetchNext:O.fetchNext,nextCursor:O.nextCursor,fetchOnScroll:!0}))):a.createElement(a.Fragment,null)}},24965:(e,t,n)=>{n.d(t,{Z:()=>r});var a=n(97395),r={ratings:function(e){return{url:"/api/domain/v2/me/ratings",publicUrl:a._.urlBuilder("/api/domain/v2/me/ratings",{countryCode:e}),key:"ratings",formatData:function(e){return e.sort((function(e,t){return e.value-t.value}))}}}}},44110:(e,t,n)=>{n.d(t,{i:()=>o});var a=n(20354),r=n(89454),i=n(86698),o=function(){var e=(0,i.y)({redirectOnError:!0}),t=e.activePresentation,n=e.getFallbackPresentation,o=t||n();return a.a.useBasicFetch(!!o&&r.O.presentationAudiences(o.id))}},97816:(e,t,n)=>{n.d(t,{V:()=>u});var a=n(32735),r=n(20354),i=n(21750),o=n(31949),s=n(1575);function l(e,t){if(e){if("string"==typeof e)return c(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?c(e,t):void 0}}function c(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,a=new Array(t);n<t;n++)a[n]=e[n];return a}function u(e){var t,n,u,d=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},p=r.a.useBasicFetch(o.N.currentUser()),m=a.useRef(new Set),v=e&&(Array.isArray(e)?e.filter(Boolean).map((function(e){return e.id})):e.data.filter(Boolean).map((function(e){return e.id}))),y=(n=a.useState([]),u=2,function(e){if(Array.isArray(e))return e}(n)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var a,r,i,o,s=[],l=!0,c=!1;try{if(i=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;l=!1}else for(;!(l=(a=i.call(n)).done)&&(s.push(a.value),s.length!==t);l=!0);}catch(e){c=!0,r=e}finally{try{if(!l&&null!=n.return&&(o=n.return(),Object(o)!==o))return}finally{if(c)throw r}}return s}}(n,u)||l(n,u)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),g=y[0],f=y[1];a.useEffect((function(){var e;if((null==v?void 0:v.length)&&(null===(e=p.data)||void 0===e?void 0:e.isAuthenticated)){var t=[];v.forEach((function(e){m.current.has(e)||(t.push(e),m.current.add(e))})),t.length&&f((function(e){return[].concat(function(e){return function(e){if(Array.isArray(e))return c(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||l(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}(e),[i.x.hasCurriculumLinks(t,null,d.flightNamespace),s.R.videoMixinAssocs(t,d.flightNamespace)])}))}}),[null==v?void 0:v.length,null===(t=p.data)||void 0===t?void 0:t.isAuthenticated]),r.a.useBasicFetchAll(g)}},68050:(e,t,n)=>{n.d(t,{Z:()=>c});var a=n(95685),r=n.n(a),i=n(32735),o=n(46304),s=n(74512);const l=i.forwardRef((({bsPrefix:e,className:t,as:n="div",...a},i)=>{const l=(0,o.vE)(e,"row"),c=(0,o.pi)(),u=(0,o.zG)(),d=`${l}-cols`,p=[];return c.forEach((e=>{const t=a[e];let n;delete a[e],null!=t&&"object"==typeof t?({cols:n}=t):n=t;const r=e!==u?`-${e}`:"";null!=n&&p.push(`${d}${r}-${n}`)})),(0,s.jsx)(n,{ref:i,...a,className:r()(t,l,...p)})}));l.displayName="Row";const c=l}}]);
|
|
2
|
-
//# sourceMappingURL=2734-
|
|
2
|
+
//# sourceMappingURL=2734-6a7beb2ce2-lite.chunk.js.map
|