@clickview/lite 0.48.0-rc.2 → 0.48.0-rc.4

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.
Files changed (86) hide show
  1. package/dist/bundles.json +1 -1
  2. package/dist/languages/en.json +1 -1
  3. package/dist/scripts/{1197-52bedf8583-lite.chunk.js → 1197-bc02ba8644-lite.chunk.js} +2 -2
  4. package/dist/scripts/1197-bc02ba8644-lite.chunk.js.map +1 -0
  5. package/dist/scripts/{1285-e93a3f21ba-lite.chunk.js → 1285-746158eef6-lite.chunk.js} +2 -2
  6. package/dist/scripts/{1285-e93a3f21ba-lite.chunk.js.map → 1285-746158eef6-lite.chunk.js.map} +1 -1
  7. package/dist/scripts/1628-3104bf944c-lite.chunk.js +2 -0
  8. package/dist/scripts/1628-3104bf944c-lite.chunk.js.map +1 -0
  9. package/dist/scripts/{170-f48bfc1128-lite.chunk.js → 170-bf0dd6b8ae-lite.chunk.js} +3 -3
  10. package/dist/scripts/170-bf0dd6b8ae-lite.chunk.js.map +1 -0
  11. package/dist/scripts/227-c82ab0d861-lite.chunk.js +2 -0
  12. package/dist/scripts/227-c82ab0d861-lite.chunk.js.map +1 -0
  13. package/dist/scripts/{2469-c504f7a87d-lite.chunk.js → 2469-34d8afaeb3-lite.chunk.js} +2 -2
  14. package/dist/scripts/{2469-c504f7a87d-lite.chunk.js.map → 2469-34d8afaeb3-lite.chunk.js.map} +1 -1
  15. package/dist/scripts/{2679-6c0646cc30-lite.chunk.js → 2679-269830f57c-lite.chunk.js} +2 -2
  16. package/dist/scripts/2679-269830f57c-lite.chunk.js.map +1 -0
  17. package/dist/scripts/{2734-a792d5393b-lite.chunk.js → 2734-9533718178-lite.chunk.js} +2 -2
  18. package/dist/scripts/2734-9533718178-lite.chunk.js.map +1 -0
  19. package/dist/scripts/{2851-e79b075ea9-lite.chunk.js → 2851-c0655d1a1d-lite.chunk.js} +2 -2
  20. package/dist/scripts/2851-c0655d1a1d-lite.chunk.js.map +1 -0
  21. package/dist/scripts/{3157-327cefda57-lite.chunk.js → 3157-730ff8b0ce-lite.chunk.js} +2 -2
  22. package/dist/scripts/3157-730ff8b0ce-lite.chunk.js.map +1 -0
  23. package/dist/scripts/{3158-7cff145fc4-lite.chunk.js → 3158-fbc814c471-lite.chunk.js} +2 -2
  24. package/dist/scripts/3158-fbc814c471-lite.chunk.js.map +1 -0
  25. package/dist/scripts/{3966-371341416b-lite.chunk.js → 3966-edfda9ea35-lite.chunk.js} +2 -2
  26. package/dist/scripts/3966-edfda9ea35-lite.chunk.js.map +1 -0
  27. package/dist/scripts/4626-4e99512e98-lite.chunk.js +3 -0
  28. package/dist/scripts/{4626-e91b79757e-lite.chunk.js.map → 4626-4e99512e98-lite.chunk.js.map} +1 -1
  29. package/dist/scripts/{5442-eecab1d715-lite.chunk.js → 5442-2326dc9418-lite.chunk.js} +2 -2
  30. package/dist/scripts/{5442-eecab1d715-lite.chunk.js.map → 5442-2326dc9418-lite.chunk.js.map} +1 -1
  31. package/dist/scripts/{5591-a4850980ea-lite.chunk.js → 5591-90c4fa0949-lite.chunk.js} +2 -2
  32. package/dist/scripts/5591-90c4fa0949-lite.chunk.js.map +1 -0
  33. package/dist/scripts/{5940-3ddc297b7a-lite.chunk.js → 5940-634de60f9b-lite.chunk.js} +2 -2
  34. package/dist/scripts/5940-634de60f9b-lite.chunk.js.map +1 -0
  35. package/dist/scripts/{6274-7d4c6ba241-lite.chunk.js → 6274-473fcd2e63-lite.chunk.js} +2 -2
  36. package/dist/scripts/{6274-7d4c6ba241-lite.chunk.js.map → 6274-473fcd2e63-lite.chunk.js.map} +1 -1
  37. package/dist/scripts/{7172-2d87ce76a3-lite.chunk.js → 7172-960e49b199-lite.chunk.js} +2 -2
  38. package/dist/scripts/7172-960e49b199-lite.chunk.js.map +1 -0
  39. package/dist/scripts/7180-79ada17b34-lite.chunk.js +2 -0
  40. package/dist/scripts/7180-79ada17b34-lite.chunk.js.map +1 -0
  41. package/dist/scripts/{7301-44362a7b42-lite.chunk.js → 7301-50cf0faef7-lite.chunk.js} +2 -2
  42. package/dist/scripts/{7301-44362a7b42-lite.chunk.js.map → 7301-50cf0faef7-lite.chunk.js.map} +1 -1
  43. package/dist/scripts/{7915-afd2304b08-lite.chunk.js → 7915-44db39c137-lite.chunk.js} +2 -2
  44. package/dist/scripts/7915-44db39c137-lite.chunk.js.map +1 -0
  45. package/dist/scripts/{8025-d7a573aca0-lite.chunk.js → 8025-24e45dc3b7-lite.chunk.js} +2 -2
  46. package/dist/scripts/8025-24e45dc3b7-lite.chunk.js.map +1 -0
  47. package/dist/scripts/{8258-6c86ad1fa4-lite.chunk.js → 8258-02d619de75-lite.chunk.js} +2 -2
  48. package/dist/scripts/{8258-6c86ad1fa4-lite.chunk.js.map → 8258-02d619de75-lite.chunk.js.map} +1 -1
  49. package/dist/scripts/8906-0821b0babe-lite.chunk.js +3 -0
  50. package/dist/scripts/8906-0821b0babe-lite.chunk.js.map +1 -0
  51. package/dist/scripts/{9212-d73ddd1ae6-lite.chunk.js → 9212-445b6499cb-lite.chunk.js} +2 -2
  52. package/dist/scripts/9212-445b6499cb-lite.chunk.js.map +1 -0
  53. package/dist/scripts/{9557-580fd7d743-lite.chunk.js → 9557-1ba0323e44-lite.chunk.js} +2 -2
  54. package/dist/scripts/{9557-580fd7d743-lite.chunk.js.map → 9557-1ba0323e44-lite.chunk.js.map} +1 -1
  55. package/dist/scripts/bundle-29a3b523cf.min.js +3 -0
  56. package/dist/scripts/bundle-29a3b523cf.min.js.map +1 -0
  57. package/package.json +1 -1
  58. package/dist/scripts/1197-52bedf8583-lite.chunk.js.map +0 -1
  59. package/dist/scripts/1628-58b55d05b5-lite.chunk.js +0 -2
  60. package/dist/scripts/1628-58b55d05b5-lite.chunk.js.map +0 -1
  61. package/dist/scripts/170-f48bfc1128-lite.chunk.js.map +0 -1
  62. package/dist/scripts/227-fb7b36b41a-lite.chunk.js +0 -2
  63. package/dist/scripts/227-fb7b36b41a-lite.chunk.js.map +0 -1
  64. package/dist/scripts/2679-6c0646cc30-lite.chunk.js.map +0 -1
  65. package/dist/scripts/2734-a792d5393b-lite.chunk.js.map +0 -1
  66. package/dist/scripts/2851-e79b075ea9-lite.chunk.js.map +0 -1
  67. package/dist/scripts/3157-327cefda57-lite.chunk.js.map +0 -1
  68. package/dist/scripts/3158-7cff145fc4-lite.chunk.js.map +0 -1
  69. package/dist/scripts/3966-371341416b-lite.chunk.js.map +0 -1
  70. package/dist/scripts/4626-e91b79757e-lite.chunk.js +0 -3
  71. package/dist/scripts/5591-a4850980ea-lite.chunk.js.map +0 -1
  72. package/dist/scripts/5940-3ddc297b7a-lite.chunk.js.map +0 -1
  73. package/dist/scripts/7172-2d87ce76a3-lite.chunk.js.map +0 -1
  74. package/dist/scripts/7180-b29d70e9d8-lite.chunk.js +0 -2
  75. package/dist/scripts/7180-b29d70e9d8-lite.chunk.js.map +0 -1
  76. package/dist/scripts/7915-afd2304b08-lite.chunk.js.map +0 -1
  77. package/dist/scripts/8025-d7a573aca0-lite.chunk.js.map +0 -1
  78. package/dist/scripts/8906-49532e8ec3-lite.chunk.js +0 -3
  79. package/dist/scripts/8906-49532e8ec3-lite.chunk.js.map +0 -1
  80. package/dist/scripts/9212-d73ddd1ae6-lite.chunk.js.map +0 -1
  81. package/dist/scripts/bundle-0fbdccea0d.min.js +0 -3
  82. package/dist/scripts/bundle-0fbdccea0d.min.js.map +0 -1
  83. /package/dist/scripts/{170-f48bfc1128-lite.chunk.js.LICENSE.txt → 170-bf0dd6b8ae-lite.chunk.js.LICENSE.txt} +0 -0
  84. /package/dist/scripts/{4626-e91b79757e-lite.chunk.js.LICENSE.txt → 4626-4e99512e98-lite.chunk.js.LICENSE.txt} +0 -0
  85. /package/dist/scripts/{8906-49532e8ec3-lite.chunk.js.LICENSE.txt → 8906-0821b0babe-lite.chunk.js.LICENSE.txt} +0 -0
  86. /package/dist/scripts/{bundle-0fbdccea0d.min.js.LICENSE.txt → bundle-29a3b523cf.min.js.LICENSE.txt} +0 -0
@@ -1,2 +1,2 @@
1
- "use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[5442],{30357:(e,t,n)=>{n.d(t,{V:()=>s});var r=n(32735),a=n(77123),i=n(89965),o=n(83345),l="share.embedSize";function s(e){var t=e.autoplay,n=e.setAutoplay,s=e.videoSize,c=e.setVideoSize,u=e.videoSizes;return r.createElement("div",{className:"d-flex align-items-center"},!!u.length&&r.createElement(r.Fragment,null,r.createElement("div",{className:"me-1"},r.createElement(o.x,{namespace:l,phrase:"videoSize"})),r.createElement("div",{className:"pe-3"},r.createElement(a.Z,null,r.createElement(a.Z.Toggle,{id:"embed-resolution",variant:"outline-dark"},s.label),r.createElement(a.Z.Menu,null,u.map((function(e){return r.createElement(a.Z.Item,{key:"".concat(e.width,"x").concat(e.height),onClick:function(){return c(e)}},e.label)})))))),r.createElement("div",{className:"me-2"},r.createElement(o.x,{namespace:l,phrase:"autoplay"})),r.createElement(i.X,{id:"autoplay-checkbox",checked:t,onChange:function(){return n(!t)}}))}},62124:(e,t,n)=>{n.d(t,{a:()=>m});var r=n(32735),a=n(92802),i=n(23481),o=n(9673),l=n(83345),s=n(83523),c=n(76177),u="shared.linkExpiry",d=i.T.encloseNamespace(u);function m(e){var t=(0,a.u6)();return r.createElement("div",{className:"d-flex justify-content-between align-items-center pb-3"},r.createElement("div",null,r.createElement("label",{className:"m-0",htmlFor:""},r.createElement(l.x,{namespace:u,phrase:"linkExpirationHeading"})),r.createElement("p",{className:"m-0"},r.createElement(l.x,{namespace:u,phrase:"linkExpirationInfo"}))),r.createElement(c.u,{title:d("passwordProtected"),disable:!e.passwordProtectLink,spanHack:!0,trigger:"hover"},r.createElement(s.Z,{onClick:function(){e.passwordProtectLink||t.setFieldValue("linkExpireDate",(0,o.o)(!t.values.linkExpireDate))},on:!!t.values.linkExpireDate,disabled:e.passwordProtectLink,showStateWhenDisabled:!0})))}},20847:(e,t,n)=>{n.d(t,{z:()=>g});var r=n(32735),a=n(92802),i=n(80130),o=n(23481),l=n(11607),s=n(83914),c=n(35223);const u={passwordButton:"W9Jl8"};function d(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}var m=o.T.encloseNamespace("share.setPasswordInput");function p(e){var t,n,o,p=(n=r.useState(!1),o=2,function(e){if(Array.isArray(e))return e}(n)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,a,i,o,l=[],s=!0,c=!1;try{if(i=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;s=!1}else for(;!(s=(r=i.call(n)).done)&&(l.push(r.value),l.length!==t);s=!0);}catch(e){c=!0,a=e}finally{try{if(!s&&null!=n.return&&(o=n.return(),Object(o)!==o))return}finally{if(c)throw a}}return l}}(n,o)||function(e,t){if(e){if("string"==typeof e)return d(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)?d(e,t):void 0}}(n,o)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),f=p[0],y=p[1],v=null===(t=(0,a.u6)().errors)||void 0===t?void 0:t.password;return r.createElement(r.Fragment,null,r.createElement("input",{className:"form-control ".concat(v?"is-invalid":""),value:e.value,onChange:function(t){e.canEdit&&e.onChange(t.target.value)},type:f?"text":"password",placeholder:e.placeholder||m("passwordPlaceholder"),readOnly:!e.canEdit}),!!v&&r.createElement(i.Z.Control.Feedback,{type:"invalid"},v),!!e.canEdit&&r.createElement(l.L,{className:u.passwordButton,onClick:function(){return y(!f)}},r.createElement(s.x,{svgName:f?c.vn.VisibleOn:c.vn.VisibleOff,title:m(f?"hidePassword":"revealPassword"),tooltipPlacement:"top"})),!e.canEdit&&!!e.canReset&&!!e.onReset&&r.createElement(l.L,{className:u.passwordButton,onClick:e.onReset},r.createElement(s.x,{svgName:c.vn.Close,title:m("resetPassword"),tooltipPlacement:"top"})))}var f=n(9673),y=n(83345),v=n(83523);function h(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}var b="shared.linkPassword",E="********";function g(e){var t,n,i,o=e.passwordProtectLink,l=e.setPasswordProtectLink,s=(0,a.u6)(),c=(n=r.useState(!!(null===(t=e.shareLink)||void 0===t?void 0:t.isPasswordProtected)),i=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 r,a,i,o,l=[],s=!0,c=!1;try{if(i=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;s=!1}else for(;!(s=(r=i.call(n)).done)&&(l.push(r.value),l.length!==t);s=!0);}catch(e){c=!0,a=e}finally{try{if(!s&&null!=n.return&&(o=n.return(),Object(o)!==o))return}finally{if(c)throw a}}return l}}(n,i)||function(e,t){if(e){if("string"==typeof e)return h(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)?h(e,t):void 0}}(n,i)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),u=c[0],d=c[1];return r.createElement("div",{className:"pb-3"},r.createElement("div",{className:"d-flex justify-content-between align-items-center"},r.createElement("div",null,r.createElement("label",{className:"m-0",htmlFor:""},r.createElement(y.x,{namespace:b,phrase:"passwordProtectHeading"})),r.createElement("p",{className:"m-0"},r.createElement(y.x,{namespace:b,phrase:"passwordProtectInfo"}))),r.createElement(v.Z,{onClick:function(){var t;(null===(t=e.shareLink)||void 0===t?void 0:t.isPasswordProtected)&&s.setFieldValue("removePassword",o),s.setFieldValue("password",""),l(!o),s.setFieldValue("linkExpireDate",(0,f.o)(!o))},on:o})),o&&r.createElement("div",{className:"position-relative mt-2"},r.createElement(p,{value:u?E:s.values.password,onChange:function(e){s.setFieldValue("password",e)},onReset:function(){s.setFieldValue("password",""),s.setFieldValue("removePassword",!0),d(!1)},canEdit:!u,canReset:!0})))}},9673:(e,t,n)=>{n.d(t,{o:()=>a});var r=30;function a(e){if(!e)return null;var t=new Date;return t.setDate(t.getDate()+r),t.toISOString()}},61193:(e,t,n)=>{n.d(t,{d:()=>i});var r=n(5173),a=n(23481),i=(0,r.Ry)().shape({removePassword:(0,r.O7)(),resourceId:(0,r.Z_)(),linkExpireDate:(0,r.Z_)().nullable(),password:(0,r.Z_)().test({name:"password-length",exclusive:!1,params:{},message:a.T.getPhrase("share.validation","minPassword"),test:function(e){return!((null==e?void 0:e.length)&&e.length<3)}}).default("")})},82644:(e,t,n)=>{n.d(t,{b:()=>u,n:()=>c});var r=n(32735),a=n(92802),i=n(91967),o=n(1048);function l(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}var s=function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var a=0;for(r=Object.getOwnPropertySymbols(e);a<r.length;a++)t.indexOf(r[a])<0&&Object.prototype.propertyIsEnumerable.call(e,r[a])&&(n[r[a]]=e[r[a]])}return n};function c(e){var t=e.castInitialValues,n=e.castValuesOnSubmit,c=e.initialValues,u=e.onSubmit,d=s(e,["castInitialValues","castValuesOnSubmit","initialValues","onSubmit"]),m=t&&e.validationSchema?e.validationSchema.cast(function(e){if(!e)return{};var t=o.t.deepClone(e);return function e(n){Object.keys(t).forEach((function(r){t.hasOwnProperty(r)&&(o.t.isObject(n[r])?e(n[r]):null===t[r]&&delete t[r])}))}(t),t}(c)):c,p={allowInitialSubmit:e.allowInitialSubmit};return r.createElement(a.J9,Object.assign({enableReinitialize:!0},d,{initialValues:m,onSubmit:function(t,r){var a=r.setSubmitting,i=r.resetForm,o=r.setFieldError,s=n&&e.validationSchema?e.validationSchema.cast(t):t;u(s,(function(){var e,t,n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(n.reset&&i(),n.errors)for(var r=0,s=Object.entries(n.errors);r<s.length;r++){var c=(e=s[r],t=2,function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,a,i,o,l=[],s=!0,c=!1;try{if(i=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;s=!1}else for(;!(s=(r=i.call(n)).done)&&(l.push(r.value),l.length!==t);s=!0);}catch(e){c=!0,a=e}finally{try{if(!s&&null!=n.return&&(o=n.return(),Object(o)!==o))return}finally{if(c)throw a}}return l}}(e,t)||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}}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),u=c[0],d=c[1];o(u,d)}a(!1)}))},initialStatus:p}),i.q.isFunction(e.children)?function(t){return e.children(t)}:r.Children.count(e.children)?e.children:null)}function u(){return(0,a.u6)()}c.defaultProps={castInitialValues:!0,castValuesOnSubmit:!0}},70872:(e,t,n)=>{n.d(t,{u:()=>s});var r=n(32735),a=n(65858),i=n(36848),o=n(38647),l=n(31908);function s(e){var t,n,s,c=l.M.getCanBeConsumed(e.video).canNavigate,u=l.M.getTitle(e.video),d=Object.assign(Object.assign({},e.analyticsData),{id:null===(t=e.video)||void 0===t?void 0:t.id,name:null===(n=e.video)||void 0===n?void 0:n.name}),m=Object.assign(Object.assign({},e.analyticsOptions),{actionType:a.Vw.Click,descriptor:a._S.Title}),p=e.textClassName||"m-0 clamp-1 mb-n1 pb-1 align-middle ".concat("md"===e.size?"h4":"h5");return r.createElement(i.F,{className:e.linkClassName,appLink:c?e.appLink:null,analyticsOptions:m,analyticsData:d},r.createElement("h5",{className:p,title:null!==(s=e.video.name)&&void 0!==s?s:""},u,r.createElement(o.m,{size:e.size,video:e.video,yearGroups:e.yearGroups})))}},43472:(e,t,n)=>{n.r(t),n.d(t,{PluginShareView:()=>ye});var r=n(32735),a=n(70680),i=n(23481),o=n(81886),l=n(20354),s=n(28400),c=n(49985),u=n(65858),d=n(30439),m=n(64249),p=n(9111),f=n(5960),y=n(4594),v=n(16714),h=n(39151),b=n(1666),E=n(31949),g=n(69883),S=n(22902),w=n(37802),k=n(26450),O=n(45778),P=n(14070),x=n(97291),j=n(62756),C=n(47663);function I(e){return I="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},I(e)}function T(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,A(r.key),r)}}function A(e){var t=function(e,t){if("object"!=I(e)||!e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var r=n.call(e,"string");if("object"!=I(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==I(t)?t:t+""}function N(e,t,n){return t=V(t),function(e,t){if(t&&("object"===I(t)||"function"==typeof t))return t;if(void 0!==t)throw new TypeError("Derived constructors may only return object or undefined");return function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(e)}(e,L()?Reflect.construct(t,n||[],V(e).constructor):t.apply(e,n))}function L(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(e){}return(L=function(){return!!e})()}function V(e){return V=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)},V(e)}function z(e,t){return z=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},z(e,t)}var F="share.embedUnpublishedInteractiveError",R=function(e){function t(e){var n;return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t),(n=N(this,t,["Embed unpublished interactive error"])).externalLink=e,n}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&z(e,t)}(t,e),n=t,(r=[{key:"name",get:function(){return"EmbedUnpublishedInteractiveError"}},{key:"dialogOptions",get:function(){return{title:i.T.getPhrase(F,"title"),text:i.T.getPhrase(F,"body",{externalLink:this.externalLink}),buttons:[{text:i.T.getPhrase(F,"close"),className:"btn btn-dark",success:!0}]}}}])&&T(n.prototype,r),Object.defineProperty(n,"prototype",{writable:!1}),n;var n,r}(C.S),D=n(13876),_=n(83345),Z=n(72355),B=n(70872),G=n(11882),M=n(54610),U=n(68626),$="share.smartEmbedConfirmation",H=i.T.encloseNamespace($);function W(e){return r.createElement(r.Fragment,null,r.createElement("div",{className:"row mb-3"},r.createElement("div",{className:"col-4"},r.createElement(Z.u,{video:e.entity,type:"cosmetic",imageOptions:{size:M.h2.Small},textPosition:U.z.Independent,preload:!0})),r.createElement("div",{className:"col-8"},r.createElement(G.$,{type:"series",analyticsOptions:{},video:e.entity}),r.createElement(B.u,{video:e.entity,analyticsOptions:{},appLink:null,yearGroups:null}))),r.createElement("p",null,r.createElement(_.x,{namespace:$,phrase:"prompt"})),r.createElement(D.u,null,r.createElement(D.u.Cancel,{onClick:e.closePopup}),r.createElement(D.u.Submit,{text:H("embed"),onClick:e.embed,variant:"dark"})))}var q=n(98269),J=n(80247),Q=n(92802),X=n(30357),Y=n(62124),K=n(20847),ee=n(61193),te=n(82644);function ne(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,a,i,o,l=[],s=!0,c=!1;try{if(i=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;s=!1}else for(;!(s=(r=i.call(n)).done)&&(l.push(r.value),l.length!==t);s=!0);}catch(e){c=!0,a=e}finally{try{if(!s&&null!=n.return&&(o=n.return(),Object(o)!==o))return}finally{if(c)throw a}}return l}}(e,t)||function(e,t){if(e){if("string"==typeof e)return re(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)?re(e,t):void 0}}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function re(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}var ae="share.pluginShareSettings";function ie(e){var t,n,a,i,o=(0,Q.u6)(),l=(0,S.T)().hasPermissions,s=(0,j.G)().sizeSelector,c=!!(null===(t=e.shareLink)||void 0===t?void 0:t.isPasswordProtected)||!!(null===(n=e.shareLink)||void 0===n?void 0:n.linkExpireDate),u=ne(r.useState(c),2),d=u[0],m=u[1],p=ne(r.useState(!(null===(i=null===(a=e.shareLink)||void 0===a?void 0:a.isPasswordProtected)||void 0===i||!i)),2),f=p[0],y=p[1];return r.createElement(Q.l0,null,r.createElement("div",{className:"mb-4"},r.createElement("h2",{className:"h6"},r.createElement(_.x,{namespace:ae,phrase:"title"})),r.createElement(X.V,{autoplay:e.autoplay,setAutoplay:e.setAutoplay,videoSize:e.videoSize,setVideoSize:e.setVideoSize,videoSizes:s?e.videoSizes:[]})),d&&r.createElement("div",{className:"mt-2"},r.createElement("h2",{className:"h6"},r.createElement(_.x,{namespace:ae,phrase:"accessTitle"})),r.createElement(Y.a,{passwordProtectLink:f}),e.shareOverrideRestrictions&&r.createElement(K.z,{shareLink:e.shareLink,passwordProtectLink:f,setPasswordProtectLink:y})),r.createElement("div",{className:"d-flex justify-content-between"},r.createElement("div",null,!d&&l(v.C.ManageShareLinkSettings)&&r.createElement(q.Z,{type:"button",variant:"link",className:"text-info ps-0",onClick:function(){return m(!0)}},r.createElement(_.x,{namespace:ae,phrase:"showAdvanced"}))),r.createElement("div",null,r.createElement(q.Z,{className:"me-2",variant:"link",onClick:e.onClickCancel},"Cancel"),r.createElement(q.Z,{variant:"outline-dark",type:"submit"},o.isSubmitting?r.createElement(J.Z,{as:"span",animation:"border",role:"status",size:"sm"}):r.createElement(_.x,{namespace:ae,phrase:"embed"})))))}function oe(e){var t,n,a={password:"",removePassword:!1,linkExpireDate:null===(t=e.shareLink)||void 0===t?void 0:t.linkExpireDate,overrideRestrictions:null===(n=e.shareLink)||void 0===n?void 0:n.overrideRestrictions};return r.createElement(te.n,{initialValues:a,onSubmit:e.onClickEmbed,castInitialValues:!1,validationSchema:ee.d},r.createElement(ie,{shareLink:e.shareLink,onClickCancel:e.onClickCancel,autoplay:e.autoplay,setAutoplay:e.setAutoplay,videoSize:e.videoSize,setVideoSize:e.setVideoSize,videoSizes:e.videoSizes,privacy:e.privacy,entityType:e.entityType,hasStudentExp:e.hasStudentExp,entity:e.entity,yearGroups:e.yearGroups,shareOverrideRestrictions:e.shareOverrideRestrictions}))}var le=n(50023),se=n(99742),ce="share.postMessageSuccess",ue=i.T.encloseNamespace(ce);function de(e){return(0,j.G)().singleSelectMode?r.createElement("div",null,r.createElement("img",{className:"img-fluid mx-auto d-block",alt:"Success",src:se.W.SUCCESS,style:{maxWidth:"14rem"}}),r.createElement("p",{className:"text-center"},r.createElement("strong",null,r.createElement(_.x,{namespace:ce,phrase:"success"}))),r.createElement(D.u,null,r.createElement(D.u.Submit,{onClick:e.closePopup,text:ue("close"),variant:"outline-dark"}))):r.createElement(le.E,null)}function me(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,a,i,o,l=[],s=!0,c=!1;try{if(i=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;s=!1}else for(;!(s=(r=i.call(n)).done)&&(l.push(r.value),l.length!==t);s=!0);}catch(e){c=!0,a=e}finally{try{if(!s&&null!=n.return&&(o=n.return(),Object(o)!==o))return}finally{if(c)throw a}}return l}}(e,t)||function(e,t){if(e){if("string"==typeof e)return pe(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)?pe(e,t):void 0}}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function pe(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}var fe=i.T.encloseNamespace("share.pluginShare");function ye(e){var t,n,i=(0,a.I0)(),C=(0,g.Z)(),I=(0,S.T)().hasPermissions,T=(0,w.r)(null),A=T.shareOverrideRestrictions,N=T.isLoadingSettings,L=(0,j.G)(),V=L.embed,z=L.smartEmbed,F=(0,L.isConsumer)(j.A.SmartEmbed),D=l.a.useBasicFetch(h.L.config()),_=l.a.useBasicFetch(E.N.currentUser()),Z=m.I.getFetchFunctionByType(e.entityType)(e.entityId,null===(t=_.data)||void 0===t?void 0:t.id),B=l.a.useBasicFetch(d.o.getShareLinkByObjectId(e.entityId)),G=l.a.useBasicFetch(d.o.getPrivacy(e.entityId)),M=l.a.useBasicFetch((null===(n=_.data)||void 0===n?void 0:n.isAuthenticated)&&b.h.yearGroups(_.data.customerId)),U=k.i.getEmbedResolutions(!1),$=me(r.useState(U[0]),2),H=$[0],q=$[1],J=me(r.useState(!1),2),Q=J[0],X=J[1],Y=me(r.useState(F?"smart-embed-main":"main"),2),K=Y[0],ee=Y[1];function te(t){V({entity:Z.data,entityType:e.entityType,shareLink:t,videoSize:H,autoplay:Q,primaryUrl:D.data.primaryUrl}),c.k.logUserAction(Object.assign(Object.assign({},Z.data),{shareLink:t}),c.k.mergeOptions(m.I.getAnalyticsOptions(e.entityType),{actionType:u.Vw.Share,descriptor:u.YM.PluginEmbed,eventVersion:u.eq.V4})),ee("post-message-sent")}function ne(t){B.data?m.I.updateLink(i,Z.data,e.entityType,B.data,t,C,(function(){return te(B.data)})):m.I.createLink({dispatch:i,entity:Z.data,entityType:e.entityType,alerts:C,password:t.password,linkExpireDate:t.linkExpireDate,success:te})}function re(){z(Z.data),ee("post-message-sent")}r.useEffect((function(){if(Z.hasCompleted&&O.G.isType(Z.data,y.E.Interactive)&&Z.data.status!==f.X.Published){var e=o.Q.C$.getHref({application:x.O.INTERACTIVES,action:P.e.Interactives.EDIT_INTERACTIVE,args:[Z.data.id,s.m.slugify(Z.data.name)]});o.Q.Ry.throw(new R(e))}}),[Z.hasCompleted]);var ae=D.data&&_.data&&Z.data&&B.hasCompleted&&G.data&&M.hasCompleted&&!N;return r.createElement(p.G,{title:fe("title"),closePopup:e.closePopup,showLoadingSpinner:!ae||null===K},function(){if(!ae)return r.createElement(r.Fragment,null);switch(K){case"post-message-sent":return r.createElement(de,{closePopup:e.closePopup});case"main":return r.createElement(oe,{shareLink:B.data,analyticsOptions:m.I.getAnalyticsOptions(e.entityType),onClickCancel:e.closePopup,onClickEmbed:ne,videoSize:H,setVideoSize:q,videoSizes:U,autoplay:Q,setAutoplay:X,privacy:G.data,entityType:e.entityType,hasStudentExp:I(v.C.StudentExperience),entity:Z.data,yearGroups:M.data,shareOverrideRestrictions:A});case"smart-embed-main":return r.createElement(W,{entity:Z.data,closePopup:e.closePopup,embed:re})}}())}}}]);
2
- //# sourceMappingURL=5442-eecab1d715-lite.chunk.js.map
1
+ "use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[5442],{30357:(e,t,n)=>{n.d(t,{V:()=>s});var r=n(32735),a=n(34509),i=n(89965),o=n(83345),l="share.embedSize";function s(e){var t=e.autoplay,n=e.setAutoplay,s=e.videoSize,c=e.setVideoSize,u=e.videoSizes;return r.createElement("div",{className:"d-flex align-items-center"},!!u.length&&r.createElement(r.Fragment,null,r.createElement("div",{className:"me-1"},r.createElement(o.x,{namespace:l,phrase:"videoSize"})),r.createElement("div",{className:"pe-3"},r.createElement(a.Z,null,r.createElement(a.Z.Toggle,{id:"embed-resolution",variant:"outline-dark"},s.label),r.createElement(a.Z.Menu,null,u.map((function(e){return r.createElement(a.Z.Item,{key:"".concat(e.width,"x").concat(e.height),onClick:function(){return c(e)}},e.label)})))))),r.createElement("div",{className:"me-2"},r.createElement(o.x,{namespace:l,phrase:"autoplay"})),r.createElement(i.X,{id:"autoplay-checkbox",checked:t,onChange:function(){return n(!t)}}))}},62124:(e,t,n)=>{n.d(t,{a:()=>m});var r=n(32735),a=n(92802),i=n(23481),o=n(9673),l=n(83345),s=n(83523),c=n(76177),u="shared.linkExpiry",d=i.T.encloseNamespace(u);function m(e){var t=(0,a.u6)();return r.createElement("div",{className:"d-flex justify-content-between align-items-center pb-3"},r.createElement("div",null,r.createElement("label",{className:"m-0",htmlFor:""},r.createElement(l.x,{namespace:u,phrase:"linkExpirationHeading"})),r.createElement("p",{className:"m-0"},r.createElement(l.x,{namespace:u,phrase:"linkExpirationInfo"}))),r.createElement(c.u,{title:d("passwordProtected"),disable:!e.passwordProtectLink,spanHack:!0,trigger:"hover"},r.createElement(s.Z,{onClick:function(){e.passwordProtectLink||t.setFieldValue("linkExpireDate",(0,o.o)(!t.values.linkExpireDate))},on:!!t.values.linkExpireDate,disabled:e.passwordProtectLink,showStateWhenDisabled:!0})))}},20847:(e,t,n)=>{n.d(t,{z:()=>g});var r=n(32735),a=n(92802),i=n(80130),o=n(23481),l=n(11607),s=n(83914),c=n(35223);const u={passwordButton:"W9Jl8"};function d(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}var m=o.T.encloseNamespace("share.setPasswordInput");function p(e){var t,n,o,p=(n=r.useState(!1),o=2,function(e){if(Array.isArray(e))return e}(n)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,a,i,o,l=[],s=!0,c=!1;try{if(i=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;s=!1}else for(;!(s=(r=i.call(n)).done)&&(l.push(r.value),l.length!==t);s=!0);}catch(e){c=!0,a=e}finally{try{if(!s&&null!=n.return&&(o=n.return(),Object(o)!==o))return}finally{if(c)throw a}}return l}}(n,o)||function(e,t){if(e){if("string"==typeof e)return d(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)?d(e,t):void 0}}(n,o)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),f=p[0],y=p[1],v=null===(t=(0,a.u6)().errors)||void 0===t?void 0:t.password;return r.createElement(r.Fragment,null,r.createElement("input",{className:"form-control ".concat(v?"is-invalid":""),value:e.value,onChange:function(t){e.canEdit&&e.onChange(t.target.value)},type:f?"text":"password",placeholder:e.placeholder||m("passwordPlaceholder"),readOnly:!e.canEdit}),!!v&&r.createElement(i.Z.Control.Feedback,{type:"invalid"},v),!!e.canEdit&&r.createElement(l.L,{className:u.passwordButton,onClick:function(){return y(!f)}},r.createElement(s.x,{svgName:f?c.vn.VisibleOn:c.vn.VisibleOff,title:m(f?"hidePassword":"revealPassword"),tooltipPlacement:"top"})),!e.canEdit&&!!e.canReset&&!!e.onReset&&r.createElement(l.L,{className:u.passwordButton,onClick:e.onReset},r.createElement(s.x,{svgName:c.vn.Close,title:m("resetPassword"),tooltipPlacement:"top"})))}var f=n(9673),y=n(83345),v=n(83523);function h(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}var b="shared.linkPassword",E="********";function g(e){var t,n,i,o=e.passwordProtectLink,l=e.setPasswordProtectLink,s=(0,a.u6)(),c=(n=r.useState(!!(null===(t=e.shareLink)||void 0===t?void 0:t.isPasswordProtected)),i=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 r,a,i,o,l=[],s=!0,c=!1;try{if(i=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;s=!1}else for(;!(s=(r=i.call(n)).done)&&(l.push(r.value),l.length!==t);s=!0);}catch(e){c=!0,a=e}finally{try{if(!s&&null!=n.return&&(o=n.return(),Object(o)!==o))return}finally{if(c)throw a}}return l}}(n,i)||function(e,t){if(e){if("string"==typeof e)return h(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)?h(e,t):void 0}}(n,i)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),u=c[0],d=c[1];return r.createElement("div",{className:"pb-3"},r.createElement("div",{className:"d-flex justify-content-between align-items-center"},r.createElement("div",null,r.createElement("label",{className:"m-0",htmlFor:""},r.createElement(y.x,{namespace:b,phrase:"passwordProtectHeading"})),r.createElement("p",{className:"m-0"},r.createElement(y.x,{namespace:b,phrase:"passwordProtectInfo"}))),r.createElement(v.Z,{onClick:function(){var t;(null===(t=e.shareLink)||void 0===t?void 0:t.isPasswordProtected)&&s.setFieldValue("removePassword",o),s.setFieldValue("password",""),l(!o),s.setFieldValue("linkExpireDate",(0,f.o)(!o))},on:o})),o&&r.createElement("div",{className:"position-relative mt-2"},r.createElement(p,{value:u?E:s.values.password,onChange:function(e){s.setFieldValue("password",e)},onReset:function(){s.setFieldValue("password",""),s.setFieldValue("removePassword",!0),d(!1)},canEdit:!u,canReset:!0})))}},9673:(e,t,n)=>{n.d(t,{o:()=>a});var r=30;function a(e){if(!e)return null;var t=new Date;return t.setDate(t.getDate()+r),t.toISOString()}},61193:(e,t,n)=>{n.d(t,{d:()=>i});var r=n(5173),a=n(23481),i=(0,r.Ry)().shape({removePassword:(0,r.O7)(),resourceId:(0,r.Z_)(),linkExpireDate:(0,r.Z_)().nullable(),password:(0,r.Z_)().test({name:"password-length",exclusive:!1,params:{},message:a.T.getPhrase("share.validation","minPassword"),test:function(e){return!((null==e?void 0:e.length)&&e.length<3)}}).default("")})},82644:(e,t,n)=>{n.d(t,{b:()=>u,n:()=>c});var r=n(32735),a=n(92802),i=n(91967),o=n(1048);function l(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}var s=function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var a=0;for(r=Object.getOwnPropertySymbols(e);a<r.length;a++)t.indexOf(r[a])<0&&Object.prototype.propertyIsEnumerable.call(e,r[a])&&(n[r[a]]=e[r[a]])}return n};function c(e){var t=e.castInitialValues,n=e.castValuesOnSubmit,c=e.initialValues,u=e.onSubmit,d=s(e,["castInitialValues","castValuesOnSubmit","initialValues","onSubmit"]),m=t&&e.validationSchema?e.validationSchema.cast(function(e){if(!e)return{};var t=o.t.deepClone(e);return function e(n){Object.keys(t).forEach((function(r){t.hasOwnProperty(r)&&(o.t.isObject(n[r])?e(n[r]):null===t[r]&&delete t[r])}))}(t),t}(c)):c,p={allowInitialSubmit:e.allowInitialSubmit};return r.createElement(a.J9,Object.assign({enableReinitialize:!0},d,{initialValues:m,onSubmit:function(t,r){var a=r.setSubmitting,i=r.resetForm,o=r.setFieldError,s=n&&e.validationSchema?e.validationSchema.cast(t):t;u(s,(function(){var e,t,n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(n.reset&&i(),n.errors)for(var r=0,s=Object.entries(n.errors);r<s.length;r++){var c=(e=s[r],t=2,function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,a,i,o,l=[],s=!0,c=!1;try{if(i=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;s=!1}else for(;!(s=(r=i.call(n)).done)&&(l.push(r.value),l.length!==t);s=!0);}catch(e){c=!0,a=e}finally{try{if(!s&&null!=n.return&&(o=n.return(),Object(o)!==o))return}finally{if(c)throw a}}return l}}(e,t)||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}}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),u=c[0],d=c[1];o(u,d)}a(!1)}))},initialStatus:p}),i.q.isFunction(e.children)?function(t){return e.children(t)}:r.Children.count(e.children)?e.children:null)}function u(){return(0,a.u6)()}c.defaultProps={castInitialValues:!0,castValuesOnSubmit:!0}},70872:(e,t,n)=>{n.d(t,{u:()=>s});var r=n(32735),a=n(65858),i=n(36848),o=n(38647),l=n(31908);function s(e){var t,n,s,c=l.M.getCanBeConsumed(e.video).canNavigate,u=l.M.getTitle(e.video),d=Object.assign(Object.assign({},e.analyticsData),{id:null===(t=e.video)||void 0===t?void 0:t.id,name:null===(n=e.video)||void 0===n?void 0:n.name}),m=Object.assign(Object.assign({},e.analyticsOptions),{actionType:a.Vw.Click,descriptor:a._S.Title}),p=e.textClassName||"m-0 clamp-1 mb-n1 pb-1 align-middle ".concat("md"===e.size?"h4":"h5");return r.createElement(i.F,{className:e.linkClassName,appLink:c?e.appLink:null,analyticsOptions:m,analyticsData:d},r.createElement("h5",{className:p,title:null!==(s=e.video.name)&&void 0!==s?s:""},u,r.createElement(o.m,{size:e.size,video:e.video,yearGroups:e.yearGroups})))}},43472:(e,t,n)=>{n.r(t),n.d(t,{PluginShareView:()=>ye});var r=n(32735),a=n(70680),i=n(23481),o=n(81886),l=n(20354),s=n(28400),c=n(49985),u=n(65858),d=n(30439),m=n(64249),p=n(9111),f=n(5960),y=n(4594),v=n(16714),h=n(39151),b=n(1666),E=n(31949),g=n(69883),S=n(22902),w=n(37802),k=n(26450),O=n(45778),P=n(14070),x=n(97291),j=n(62756),C=n(47663);function I(e){return I="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},I(e)}function T(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,A(r.key),r)}}function A(e){var t=function(e,t){if("object"!=I(e)||!e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var r=n.call(e,"string");if("object"!=I(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==I(t)?t:t+""}function N(e,t,n){return t=V(t),function(e,t){if(t&&("object"===I(t)||"function"==typeof t))return t;if(void 0!==t)throw new TypeError("Derived constructors may only return object or undefined");return function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(e)}(e,L()?Reflect.construct(t,n||[],V(e).constructor):t.apply(e,n))}function L(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(e){}return(L=function(){return!!e})()}function V(e){return V=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)},V(e)}function z(e,t){return z=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},z(e,t)}var F="share.embedUnpublishedInteractiveError",R=function(e){function t(e){var n;return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t),(n=N(this,t,["Embed unpublished interactive error"])).externalLink=e,n}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&z(e,t)}(t,e),n=t,(r=[{key:"name",get:function(){return"EmbedUnpublishedInteractiveError"}},{key:"dialogOptions",get:function(){return{title:i.T.getPhrase(F,"title"),text:i.T.getPhrase(F,"body",{externalLink:this.externalLink}),buttons:[{text:i.T.getPhrase(F,"close"),className:"btn btn-dark",success:!0}]}}}])&&T(n.prototype,r),Object.defineProperty(n,"prototype",{writable:!1}),n;var n,r}(C.S),D=n(13876),_=n(83345),Z=n(72355),B=n(70872),G=n(11882),M=n(54610),U=n(68626),$="share.smartEmbedConfirmation",H=i.T.encloseNamespace($);function W(e){return r.createElement(r.Fragment,null,r.createElement("div",{className:"row mb-3"},r.createElement("div",{className:"col-4"},r.createElement(Z.u,{video:e.entity,type:"cosmetic",imageOptions:{size:M.h2.Small},textPosition:U.z.Independent,preload:!0})),r.createElement("div",{className:"col-8"},r.createElement(G.$,{type:"series",analyticsOptions:{},video:e.entity}),r.createElement(B.u,{video:e.entity,analyticsOptions:{},appLink:null,yearGroups:null}))),r.createElement("p",null,r.createElement(_.x,{namespace:$,phrase:"prompt"})),r.createElement(D.u,null,r.createElement(D.u.Cancel,{onClick:e.closePopup}),r.createElement(D.u.Submit,{text:H("embed"),onClick:e.embed,variant:"dark"})))}var q=n(98269),J=n(80247),Q=n(92802),X=n(30357),Y=n(62124),K=n(20847),ee=n(61193),te=n(82644);function ne(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,a,i,o,l=[],s=!0,c=!1;try{if(i=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;s=!1}else for(;!(s=(r=i.call(n)).done)&&(l.push(r.value),l.length!==t);s=!0);}catch(e){c=!0,a=e}finally{try{if(!s&&null!=n.return&&(o=n.return(),Object(o)!==o))return}finally{if(c)throw a}}return l}}(e,t)||function(e,t){if(e){if("string"==typeof e)return re(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)?re(e,t):void 0}}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function re(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}var ae="share.pluginShareSettings";function ie(e){var t,n,a,i,o=(0,Q.u6)(),l=(0,S.T)().hasPermissions,s=(0,j.G)().sizeSelector,c=!!(null===(t=e.shareLink)||void 0===t?void 0:t.isPasswordProtected)||!!(null===(n=e.shareLink)||void 0===n?void 0:n.linkExpireDate),u=ne(r.useState(c),2),d=u[0],m=u[1],p=ne(r.useState(!(null===(i=null===(a=e.shareLink)||void 0===a?void 0:a.isPasswordProtected)||void 0===i||!i)),2),f=p[0],y=p[1];return r.createElement(Q.l0,null,r.createElement("div",{className:"mb-4"},r.createElement("h2",{className:"h6"},r.createElement(_.x,{namespace:ae,phrase:"title"})),r.createElement(X.V,{autoplay:e.autoplay,setAutoplay:e.setAutoplay,videoSize:e.videoSize,setVideoSize:e.setVideoSize,videoSizes:s?e.videoSizes:[]})),d&&r.createElement("div",{className:"mt-2"},r.createElement("h2",{className:"h6"},r.createElement(_.x,{namespace:ae,phrase:"accessTitle"})),r.createElement(Y.a,{passwordProtectLink:f}),e.shareOverrideRestrictions&&r.createElement(K.z,{shareLink:e.shareLink,passwordProtectLink:f,setPasswordProtectLink:y})),r.createElement("div",{className:"d-flex justify-content-between"},r.createElement("div",null,!d&&l(v.C.ManageShareLinkSettings)&&r.createElement(q.Z,{type:"button",variant:"link",className:"text-info ps-0",onClick:function(){return m(!0)}},r.createElement(_.x,{namespace:ae,phrase:"showAdvanced"}))),r.createElement("div",null,r.createElement(q.Z,{className:"me-2",variant:"link",onClick:e.onClickCancel},"Cancel"),r.createElement(q.Z,{variant:"outline-dark",type:"submit"},o.isSubmitting?r.createElement(J.Z,{as:"span",animation:"border",role:"status",size:"sm"}):r.createElement(_.x,{namespace:ae,phrase:"embed"})))))}function oe(e){var t,n,a={password:"",removePassword:!1,linkExpireDate:null===(t=e.shareLink)||void 0===t?void 0:t.linkExpireDate,overrideRestrictions:null===(n=e.shareLink)||void 0===n?void 0:n.overrideRestrictions};return r.createElement(te.n,{initialValues:a,onSubmit:e.onClickEmbed,castInitialValues:!1,validationSchema:ee.d},r.createElement(ie,{shareLink:e.shareLink,onClickCancel:e.onClickCancel,autoplay:e.autoplay,setAutoplay:e.setAutoplay,videoSize:e.videoSize,setVideoSize:e.setVideoSize,videoSizes:e.videoSizes,privacy:e.privacy,entityType:e.entityType,hasStudentExp:e.hasStudentExp,entity:e.entity,yearGroups:e.yearGroups,shareOverrideRestrictions:e.shareOverrideRestrictions}))}var le=n(50023),se=n(99742),ce="share.postMessageSuccess",ue=i.T.encloseNamespace(ce);function de(e){return(0,j.G)().singleSelectMode?r.createElement("div",null,r.createElement("img",{className:"img-fluid mx-auto d-block",alt:"Success",src:se.W.SUCCESS,style:{maxWidth:"14rem"}}),r.createElement("p",{className:"text-center"},r.createElement("strong",null,r.createElement(_.x,{namespace:ce,phrase:"success"}))),r.createElement(D.u,null,r.createElement(D.u.Submit,{onClick:e.closePopup,text:ue("close"),variant:"outline-dark"}))):r.createElement(le.E,null)}function me(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,a,i,o,l=[],s=!0,c=!1;try{if(i=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;s=!1}else for(;!(s=(r=i.call(n)).done)&&(l.push(r.value),l.length!==t);s=!0);}catch(e){c=!0,a=e}finally{try{if(!s&&null!=n.return&&(o=n.return(),Object(o)!==o))return}finally{if(c)throw a}}return l}}(e,t)||function(e,t){if(e){if("string"==typeof e)return pe(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)?pe(e,t):void 0}}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function pe(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}var fe=i.T.encloseNamespace("share.pluginShare");function ye(e){var t,n,i=(0,a.I0)(),C=(0,g.Z)(),I=(0,S.T)().hasPermissions,T=(0,w.r)(null),A=T.shareOverrideRestrictions,N=T.isLoadingSettings,L=(0,j.G)(),V=L.embed,z=L.smartEmbed,F=(0,L.isConsumer)(j.A.SmartEmbed),D=l.a.useBasicFetch(h.L.config()),_=l.a.useBasicFetch(E.N.currentUser()),Z=m.I.getFetchFunctionByType(e.entityType)(e.entityId,null===(t=_.data)||void 0===t?void 0:t.id),B=l.a.useBasicFetch(d.o.getShareLinkByObjectId(e.entityId)),G=l.a.useBasicFetch(d.o.getPrivacy(e.entityId)),M=l.a.useBasicFetch((null===(n=_.data)||void 0===n?void 0:n.isAuthenticated)&&b.h.yearGroups(_.data.customerId)),U=k.i.getEmbedResolutions(!1),$=me(r.useState(U[0]),2),H=$[0],q=$[1],J=me(r.useState(!1),2),Q=J[0],X=J[1],Y=me(r.useState(F?"smart-embed-main":"main"),2),K=Y[0],ee=Y[1];function te(t){V({entity:Z.data,entityType:e.entityType,shareLink:t,videoSize:H,autoplay:Q,primaryUrl:D.data.primaryUrl}),c.k.logUserAction(Object.assign(Object.assign({},Z.data),{shareLink:t}),c.k.mergeOptions(m.I.getAnalyticsOptions(e.entityType),{actionType:u.Vw.Share,descriptor:u.YM.PluginEmbed,eventVersion:u.eq.V4})),ee("post-message-sent")}function ne(t){B.data?m.I.updateLink(i,Z.data,e.entityType,B.data,t,C,(function(){return te(B.data)})):m.I.createLink({dispatch:i,entity:Z.data,entityType:e.entityType,alerts:C,password:t.password,linkExpireDate:t.linkExpireDate,success:te})}function re(){z(Z.data),ee("post-message-sent")}r.useEffect((function(){if(Z.hasCompleted&&O.G.isType(Z.data,y.E.Interactive)&&Z.data.status!==f.X.Published){var e=o.Q.C$.getHref({application:x.O.INTERACTIVES,action:P.e.Interactives.EDIT_INTERACTIVE,args:[Z.data.id,s.m.slugify(Z.data.name)]});o.Q.Ry.throw(new R(e))}}),[Z.hasCompleted]);var ae=D.data&&_.data&&Z.data&&B.hasCompleted&&G.data&&M.hasCompleted&&!N;return r.createElement(p.G,{title:fe("title"),closePopup:e.closePopup,showLoadingSpinner:!ae||null===K},function(){if(!ae)return r.createElement(r.Fragment,null);switch(K){case"post-message-sent":return r.createElement(de,{closePopup:e.closePopup});case"main":return r.createElement(oe,{shareLink:B.data,analyticsOptions:m.I.getAnalyticsOptions(e.entityType),onClickCancel:e.closePopup,onClickEmbed:ne,videoSize:H,setVideoSize:q,videoSizes:U,autoplay:Q,setAutoplay:X,privacy:G.data,entityType:e.entityType,hasStudentExp:I(v.C.StudentExperience),entity:Z.data,yearGroups:M.data,shareOverrideRestrictions:A});case"smart-embed-main":return r.createElement(W,{entity:Z.data,closePopup:e.closePopup,embed:re})}}())}}}]);
2
+ //# sourceMappingURL=5442-2326dc9418-lite.chunk.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"scripts/5442-eecab1d715-lite.chunk.js","mappings":"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","sources":["file:///app/packages/libs/shared/src/apps/share/components/embed-size/EmbedSize.tsx","file:///app/packages/libs/shared/src/apps/share/components/link-expiry/LinkExpiry.tsx","file:///app/packages/libs/shared/src/apps/share/components/set-password-input/set-password-input.scss","file:///app/packages/libs/shared/src/apps/share/components/set-password-input/SetPasswordInput.tsx","file:///app/packages/libs/shared/src/apps/share/components/link-password/LinkPassword.tsx","file:///app/packages/libs/shared/src/apps/share/utils/LinkExpiryHelper.ts","file:///app/packages/libs/shared/src/apps/share/validation/ShareLinkSettingsValidationSchema.ts","file:///app/packages/libs/shared/src/components/forms/form-wrapper/FormWrapper.tsx","file:///app/packages/libs/shared/src/components/video-list/components/video-item-title/VideoItemTitle.tsx","file:///app/packages/projects/lite/src/apps/share/errors/embed-unpublished-interactive/EmbedUnpublishedInteractiveError.ts","file:///app/packages/projects/lite/src/apps/share/views/plugin-share/components/smart-embed-confirmation/SmartEmbedConfirmation.tsx","file:///app/packages/projects/lite/src/apps/share/views/plugin-share/components/plugin-share-settings/PluginShareSettings.tsx","file:///app/packages/projects/lite/src/apps/share/views/plugin-share/components/post-message-sent/PostMessageSent.tsx","file:///app/packages/projects/lite/src/apps/share/views/plugin-share/PluginShareView.tsx"],"sourcesContent":["import React from 'react';\nimport { Dropdown } from 'react-bootstrap';\n\nimport { Checkbox } from 'libs/shared/components/forms/form-checkbox/Checkbox';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { EmbedResolution } from 'libs/shared/utils/EmbedHelper';\n\nconst namespace = 'share.embedSize';\n\ninterface EmbedSizeProps {\n autoplay: boolean;\n setAutoplay: (autoplay: boolean) => void;\n videoSize: EmbedResolution;\n setVideoSize: (videoSize: EmbedResolution) => void;\n videoSizes: EmbedResolution[];\n}\n\nexport function EmbedSize(props: EmbedSizeProps): React.ReactElement {\n const {\n autoplay,\n setAutoplay,\n videoSize,\n setVideoSize,\n videoSizes\n } = props;\n\n return (\n <div className='d-flex align-items-center'>\n {!!videoSizes.length &&\n <>\n <div className='me-1'>\n <Text namespace={namespace} phrase='videoSize' />\n </div>\n <div className='pe-3'>\n <Dropdown>\n <Dropdown.Toggle id='embed-resolution' variant='outline-dark'>\n {videoSize.label}\n </Dropdown.Toggle>\n\n <Dropdown.Menu>\n {videoSizes.map(size => (\n <Dropdown.Item\n key={`${size.width}x${size.height}`}\n onClick={() => setVideoSize(size)}\n >\n {size.label}\n </Dropdown.Item>\n ))}\n </Dropdown.Menu>\n </Dropdown>\n </div>\n </>\n }\n <div className='me-2'>\n <Text namespace={namespace} phrase='autoplay' />\n </div>\n <Checkbox id='autoplay-checkbox' checked={autoplay} onChange={() => setAutoplay(!autoplay)} />\n </div>\n );\n}","import React from 'react';\nimport { useFormikContext } from 'formik';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { EditShareLinkRequest } from 'libs/shared/apps/share/interfaces/requests/EditShareLinkRequest';\nimport { getLinkExpiryDate } from 'libs/shared/apps/share/utils/LinkExpiryHelper';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { ToggleSwitch } from 'libs/shared/components/toggle-switch/ToggleSwitch';\nimport { Tooltip } from 'libs/shared/components/tooltip/Tooltip';\n\nconst namespace = 'shared.linkExpiry';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface LinkExpiryProps {\n passwordProtectLink: boolean;\n}\n\nexport function LinkExpiry(props: LinkExpiryProps): React.ReactElement {\n const formikProps = useFormikContext<EditShareLinkRequest>();\n\n function setLinkExpireDate(): void {\n if (props.passwordProtectLink)\n return;\n\n formikProps.setFieldValue('linkExpireDate', getLinkExpiryDate(!formikProps.values.linkExpireDate));\n }\n\n return (\n <div className='d-flex justify-content-between align-items-center pb-3'>\n <div>\n <label className='m-0' htmlFor=''><Text namespace={namespace} phrase='linkExpirationHeading' /></label>\n <p className='m-0'><Text namespace={namespace} phrase='linkExpirationInfo' /></p>\n </div>\n <Tooltip\n title={getPhrase('passwordProtected')}\n disable={!props.passwordProtectLink}\n spanHack\n trigger='hover'\n >\n <ToggleSwitch\n onClick={setLinkExpireDate}\n on={!!formikProps.values.linkExpireDate}\n disabled={props.passwordProtectLink}\n showStateWhenDisabled\n />\n </Tooltip>\n </div>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"passwordButton\":\"W9Jl8\"};","import * as React from 'react';\nimport { Form } from 'react-bootstrap';\nimport { useFormikContext } from 'formik';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { EditShareLinkRequest } from 'libs/shared/apps/share/interfaces/requests/EditShareLinkRequest';\nimport { DivButton } from 'libs/shared/components/div-button/DivButton';\nimport { SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport styles from './set-password-input.scss';\n\nconst namespace = 'share.setPasswordInput';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface SetPasswordInputProps {\n value: string;\n onChange: (value: string) => void;\n onReset?: () => void;\n /**\n * Allow user to view and edit current value.\n */\n canEdit?: boolean;\n /**\n * Don't allow user to view/edit current value\n * but allow them to clear it and enter a new value.\n */\n canReset?: boolean;\n placeholder?: string;\n}\n\nexport function SetPasswordInput(props: SetPasswordInputProps): JSX.Element {\n const [ revealPassword, setRevealPassword ] = React.useState(false);\n\n const formikProps = useFormikContext<EditShareLinkRequest>();\n\n const errorMsg = formikProps.errors?.password;\n\n return (\n <>\n <input\n className={`form-control ${errorMsg ? 'is-invalid' : ''}`}\n value={props.value}\n onChange={e => {\n !!props.canEdit && props.onChange(e.target.value);\n }}\n type={revealPassword ? 'text' : 'password'}\n placeholder={props.placeholder || getPhrase('passwordPlaceholder')}\n readOnly={!props.canEdit}\n />\n {!!errorMsg && (\n <Form.Control.Feedback type='invalid'>{errorMsg}</Form.Control.Feedback>\n )}\n {!!props.canEdit &&\n <DivButton className={styles.passwordButton} onClick={() => setRevealPassword(!revealPassword)}>\n <SvgContainer\n svgName={revealPassword ? cvSvgLibrary.VisibleOn : cvSvgLibrary.VisibleOff}\n title={getPhrase(revealPassword ? 'hidePassword' : 'revealPassword')}\n tooltipPlacement='top'\n />\n </DivButton>\n }\n {!props.canEdit && !!props.canReset && !!props.onReset &&\n <DivButton className={styles.passwordButton} onClick={props.onReset}>\n <SvgContainer\n svgName={cvSvgLibrary.Close} title={getPhrase('resetPassword')}\n tooltipPlacement='top'\n />\n </DivButton>\n }\n </>\n );\n}","import React from 'react';\nimport { useFormikContext } from 'formik';\n\nimport { SetPasswordInput } from 'libs/shared/apps/share/components/set-password-input/SetPasswordInput';\nimport { EditShareLinkRequest } from 'libs/shared/apps/share/interfaces/requests/EditShareLinkRequest';\nimport { getLinkExpiryDate } from 'libs/shared/apps/share/utils/LinkExpiryHelper';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { ToggleSwitch } from 'libs/shared/components/toggle-switch/ToggleSwitch';\nimport { ShareLink } from 'libs/shared/interfaces';\n\nconst namespace = 'shared.linkPassword';\n\nconst PASSWORD_PLACEHOLDER = '********';\n\ninterface LinkPasswordProps {\n shareLink: ShareLink;\n passwordProtectLink: boolean;\n setPasswordProtectLink: (protect: boolean) => void;\n}\n\nexport function LinkPassword(props: LinkPasswordProps): React.ReactElement {\n const { passwordProtectLink, setPasswordProtectLink } = props;\n\n const formikProps = useFormikContext<EditShareLinkRequest>();\n \n const [ readonlyPassword, setReadonlyPassword ] = React.useState(!!props.shareLink?.isPasswordProtected);\n\n function onTogglePasswordProtect(): void {\n if (props.shareLink?.isPasswordProtected)\n formikProps.setFieldValue('removePassword', passwordProtectLink);\n\n formikProps.setFieldValue('password', '');\n\n setPasswordProtectLink(!passwordProtectLink);\n formikProps.setFieldValue('linkExpireDate', getLinkExpiryDate(!passwordProtectLink));\n }\n\n function setPassword(password: string): void {\n formikProps.setFieldValue('password', password);\n }\n\n function resetPassword(): void {\n formikProps.setFieldValue('password', '');\n formikProps.setFieldValue('removePassword', true);\n setReadonlyPassword(false);\n }\n\n return (\n <div className='pb-3'>\n <div className='d-flex justify-content-between align-items-center'>\n <div>\n <label className='m-0' htmlFor=''><Text namespace={namespace} phrase='passwordProtectHeading' /></label>\n <p className='m-0'><Text namespace={namespace} phrase='passwordProtectInfo' /></p>\n </div>\n <ToggleSwitch onClick={onTogglePasswordProtect} on={passwordProtectLink} />\n </div>\n\n {passwordProtectLink &&\n <div className='position-relative mt-2'>\n <SetPasswordInput\n value={readonlyPassword ? PASSWORD_PLACEHOLDER : formikProps.values.password}\n onChange={setPassword}\n onReset={resetPassword}\n canEdit={!readonlyPassword}\n canReset\n />\n </div>\n }\n </div>\n );\n}","const LINK_EXPIRY_TIME = 30; // days\nexport function getLinkExpiryDate(shouldExpire: boolean): string | null {\n if (!shouldExpire)\n return null;\n\n const date = new Date();\n date.setDate(date.getDate() + LINK_EXPIRY_TIME);\n\n return date.toISOString();\n}","import { boolean, object, string } from 'yup';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nconst namespace = 'share.validation';\n\nexport const ShareLinkSettingsValidationSchema = object().shape({\n removePassword: boolean(),\n resourceId: string(),\n linkExpireDate: string().nullable(),\n password: string()\n .test({\n name: 'password-length',\n exclusive: false,\n params: {},\n message: LanguageService.getPhrase(namespace, 'minPassword'),\n test: val => {\n const removePassword = ((this as any)?.parent as any)?.removePassword;\n\n if (removePassword)\n return true;\n\n if (!val?.length)\n return true;\n\n if (val.length < 3)\n return false;\n\n return true;\n }\n })\n .default('')\n});","import * as React from 'react';\nimport { Formik, FormikConfig, FormikContextType, FormikErrors, FormikHelpers, FormikProps, FormikValues, useFormikContext } from 'formik';\n\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\nimport { HashObject } from 'libs/common/react/interfaces';\nimport { ObjectHelper } from 'libs/common/react/utils/ObjectHelper';\n\n/**\n * Note: This currently doesn't support arrays, but the need for arrays as initial\n * form data has not yet come up\n */\nfunction omitNullInitialValues<Values extends FormikValues>(initialValues: Values): Values {\n if (!initialValues)\n return {} as Values;\n\n const values = ObjectHelper.deepClone(initialValues);\n\n function omitChildValues(child: Values): void {\n Object.keys(values).forEach((key: keyof Values) => {\n if (!values.hasOwnProperty(key))\n return;\n \n if (ObjectHelper.isObject(child[key]))\n omitChildValues(child[key]);\n else if (values[key] === null)\n delete values[key];\n });\n }\n\n omitChildValues(values);\n return values;\n}\n\n// Omit attributes from FormikConfig that are defined in FormWrapperProps.\ntype ModifiedFormikConfig<Values extends FormikValues> = Omit<FormikConfig<Values>, 'initialValues' | 'onSubmit'>;\n\ninterface InitialStatus {\n allowInitialSubmit: boolean;\n}\n\nexport type FormSubmissionOptions<FormValues = FormikValues> = {\n reset?: boolean;\n errors?: FormikErrors<FormValues>;\n};\n\ninterface FormWrapperProps<FormValues extends FormikValues, ApiValues extends FormikValues> {\n initialValues: Partial<FormValues | ApiValues>;\n onSubmit: (data: FormValues, onDone: (options?: FormSubmissionOptions<FormValues>) => void) => void;\n castInitialValues?: boolean; // cast to validationSchema\n castValuesOnSubmit?: boolean; // cast to validationSchema\n allowInitialSubmit?: boolean; // if true, useCanSubmitForm will allow submit without any user changes.\n}\n\nFormWrapper.defaultProps = {\n castInitialValues: true,\n castValuesOnSubmit: true\n};\n\nexport function FormWrapper<\n FormValues extends FormikValues = FormikValues,\n ApiValues extends FormikValues = FormValues,\n ExtraProps = HashObject\n>(props: ModifiedFormikConfig<FormValues> & ExtraProps & FormWrapperProps<FormValues, ApiValues>): JSX.Element {\n const { castInitialValues, castValuesOnSubmit, initialValues, onSubmit, ...formikProps } = props;\n\n /**\n * If castInitialValues is true, cast initialValues to the validationSchema.\n * This will ensure that any data fetched from the api conforms to the expected form data shape.\n */\n const formattedInitialValues: FormValues = castInitialValues && props.validationSchema\n ? props.validationSchema.cast(omitNullInitialValues(initialValues))\n : initialValues;\n\n const onSubmitHandler = (\n values: FormValues,\n { setSubmitting, resetForm, setFieldError }: FormikHelpers<FormValues>\n ) => {\n /**\n * validationSchema.cast will coerce the values to the types defined in validationSchema.\n * This is useful for trimming inputs:\n * e.g. if a value field has type Yup.string().trim(), it will be automatically trimmed.\n */\n const formattedData = castValuesOnSubmit && props.validationSchema\n ? props.validationSchema.cast(values)\n : values;\n\n onSubmit(formattedData, (options: FormSubmissionOptions<FormValues> = {}) => {\n options.reset && resetForm();\n\n if (options.errors) {\n for (const [ key, value ] of Object.entries(options.errors)) {\n setFieldError(key, value);\n }\n }\n\n setSubmitting(false);\n });\n };\n\n const initialStatus: InitialStatus = {\n allowInitialSubmit: props.allowInitialSubmit\n };\n\n return (\n <Formik<FormValues, ExtraProps>\n enableReinitialize\n {...(formikProps as ModifiedFormikConfig<FormValues> & ExtraProps)}\n initialValues={formattedInitialValues}\n onSubmit={onSubmitHandler}\n initialStatus={initialStatus}\n >\n {FunctionHelper.isFunction(props.children)\n ? (f: FormikProps<FormValues>) => (props.children as (f: FormikProps<FormValues>) => React.ReactNode)(f)\n : React.Children.count(props.children) ? props.children : null\n }\n </Formik>\n );\n}\n\nexport function useFormikContextWrapper<T>(): FormikContextType<T> {\n return useFormikContext<T>();\n}","import * as React from 'react';\n\nimport { Core } from 'libs/common/core';\n\nimport { AnalyticsOptions, ClickDescriptor, HashObject, UserAction } from 'libs/analytics/interfaces';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { VideoItemSize } from 'libs/shared/components/video-list/BaseVideoItemProps';\nimport { RestrictionPadlock } from 'libs/shared/components/video-list/components/restriction-padlock/RestrictionPadlock';\nimport { Video, YearGroup } from 'libs/shared/interfaces';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\ninterface VideoItemTitleProps {\n video: Video;\n appLink: Core.AppLink;\n size?: VideoItemSize;\n analyticsData?: HashObject;\n analyticsOptions: AnalyticsOptions;\n yearGroups: YearGroup[];\n\n linkClassName?: string;\n textClassName?: string;\n}\n\nexport function VideoItemTitle(props: VideoItemTitleProps): JSX.Element {\n const { canNavigate } = VideoHelper.getCanBeConsumed(props.video);\n const title = VideoHelper.getTitle(props.video);\n\n const analyticsData: HashObject = {\n ...props.analyticsData,\n id: props.video?.id,\n name: props.video?.name\n };\n\n const analyticsOptions: AnalyticsOptions = {\n ...props.analyticsOptions,\n actionType: UserAction.Click,\n descriptor: ClickDescriptor.Title\n };\n\n const textClassName = props.textClassName || `m-0 clamp-1 mb-n1 pb-1 align-middle ${props.size === 'md' ? 'h4' : 'h5'}`;\n\n return (\n <AppLink\n className={props.linkClassName}\n appLink={canNavigate ? props.appLink : null}\n analyticsOptions={analyticsOptions}\n analyticsData={analyticsData}\n >\n <h5 className={textClassName} title={props.video.name ?? ''}>\n {title}\n <RestrictionPadlock\n size={props.size}\n video={props.video}\n yearGroups={props.yearGroups}\n />\n </h5>\n </AppLink>\n );\n}","import { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { DialogError } from 'libs/shared/errors/primitives/DialogError';\nimport { DialogOptions } from 'libs/shared/interfaces';\n\nconst namespace = 'share.embedUnpublishedInteractiveError';\n\nexport class EmbedUnpublishedInteractiveError extends DialogError {\n private externalLink: string;\n\n constructor(externalLink: string) {\n super('Embed unpublished interactive error');\n\n this.externalLink = externalLink;\n }\n\n // @ts-ignore\n public get name(): string {\n return 'EmbedUnpublishedInteractiveError';\n }\n\n // @ts-ignore\n public get dialogOptions(): DialogOptions {\n return {\n title: LanguageService.getPhrase(namespace, 'title'),\n text: LanguageService.getPhrase(namespace, 'body', {\n externalLink: this.externalLink\n }),\n buttons: [{\n text: LanguageService.getPhrase(namespace, 'close'),\n className: `btn btn-dark`,\n success: true\n }]\n };\n }\n}","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { PopupButtons } from 'libs/shared/components/popup/PopupButtons';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { VideoThumbnail } from 'libs/shared/components/thumbnails/video/VideoThumbnail';\nimport { VideoItemTitle } from 'libs/shared/components/video-list/components/video-item-title/VideoItemTitle';\nimport { VideoSubText } from 'libs/shared/components/video-sub-text/VideoSubText';\nimport { ImageSize } from 'libs/shared/enums/Images';\nimport { ThumbnailTextPosition } from 'libs/shared/enums/ThumbnailTextPosition';\nimport { VideoTypes } from 'libs/shared/interfaces';\n\nconst namespace = 'share.smartEmbedConfirmation';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface SmartEmbedConfirmation {\n closePopup: () => void;\n embed: () => void;\n entity: VideoTypes;\n}\n\nexport function SmartEmbedConfirmation(props: SmartEmbedConfirmation): JSX.Element {\n return (\n <>\n <div className='row mb-3'>\n <div className='col-4'>\n <VideoThumbnail\n video={props.entity}\n type='cosmetic'\n imageOptions={{ size: ImageSize.Small }}\n textPosition={ThumbnailTextPosition.Independent}\n preload\n />\n </div>\n <div className='col-8'>\n <VideoSubText type='series' analyticsOptions={{}} video={props.entity} />\n <VideoItemTitle video={props.entity} analyticsOptions={{}} appLink={null} yearGroups={null} />\n </div>\n </div>\n <p><Text namespace={namespace} phrase='prompt' /></p>\n <PopupButtons>\n <PopupButtons.Cancel onClick={props.closePopup} />\n <PopupButtons.Submit\n text={getPhrase('embed')}\n onClick={props.embed}\n variant='dark'\n />\n </PopupButtons>\n </>\n );\n}","import React from 'react';\nimport { Button, Spinner } from 'react-bootstrap';\nimport { Form, useFormikContext } from 'formik';\n\nimport { EmbedSize } from 'libs/shared/apps/share/components/embed-size/EmbedSize';\nimport { LinkExpiry } from 'libs/shared/apps/share/components/link-expiry/LinkExpiry';\nimport { LinkPassword } from 'libs/shared/apps/share/components/link-password/LinkPassword';\nimport { EditShareLinkRequest } from 'libs/shared/apps/share/interfaces/requests/EditShareLinkRequest';\nimport { SharePrivacyResponse } from 'libs/shared/apps/share/interfaces/responses/SharePrivacyResponse';\nimport { ShareLinkSettingsValidationSchema } from 'libs/shared/apps/share/validation/ShareLinkSettingsValidationSchema';\nimport { SharableEntityType } from 'libs/shared/apps/share/views/share/ShareViewHelper';\nimport { FormWrapper } from 'libs/shared/components/forms/form-wrapper/FormWrapper';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { PermissionName } from 'libs/shared/enums/PermissionName';\nimport { usePermissions } from 'libs/shared/hooks/usePermissions';\nimport { BaseObject, PropsWithAnalyticsOptions, ShareLink, YearGroup } from 'libs/shared/interfaces';\nimport { EmbedResolution } from 'libs/shared/utils/EmbedHelper';\n\nimport { usePluginHelper } from 'shared/hooks/use-plugin-helper/usePluginHelper';\n\nconst namespace = 'share.pluginShareSettings';\n\ninterface PluginShareSettingsFormProps {\n shareLink: ShareLink;\n privacy: SharePrivacyResponse;\n onClickCancel: () => void;\n videoSize: EmbedResolution;\n setVideoSize: (videoSize: EmbedResolution) => void;\n videoSizes: EmbedResolution[];\n autoplay: boolean;\n setAutoplay: (autoplay: boolean) => void;\n entityType: SharableEntityType;\n hasStudentExp: boolean;\n entity: BaseObject;\n yearGroups: YearGroup[];\n shareOverrideRestrictions: boolean;\n}\n\nfunction PluginShareSettingsForm(props: PluginShareSettingsFormProps): React.ReactElement {\n const formikProps = useFormikContext<EditShareLinkRequest>();\n \n const { hasPermissions } = usePermissions();\n\n const { sizeSelector } = usePluginHelper();\n\n const hasAdvanced = !!props.shareLink?.isPasswordProtected || !!props.shareLink?.linkExpireDate;\n const [ showAdvanced, setShowAdvanced ] = React.useState(hasAdvanced);\n\n const [\n passwordProtectLink, setPasswordProtectLink\n ] = React.useState(!!(props.shareLink?.isPasswordProtected ?? false));\n\n return (\n <Form>\n <div className='mb-4'>\n <h2 className='h6'><Text namespace={namespace} phrase='title' /></h2>\n <EmbedSize\n autoplay={props.autoplay}\n setAutoplay={props.setAutoplay}\n videoSize={props.videoSize}\n setVideoSize={props.setVideoSize}\n videoSizes={sizeSelector ? props.videoSizes : []}\n />\n </div>\n {showAdvanced && (\n <div className='mt-2'>\n <h2 className='h6'><Text namespace={namespace} phrase='accessTitle' /></h2>\n <LinkExpiry passwordProtectLink={passwordProtectLink}/>\n {props.shareOverrideRestrictions &&\n <LinkPassword\n shareLink={props.shareLink}\n passwordProtectLink={passwordProtectLink}\n setPasswordProtectLink={setPasswordProtectLink}\n />\n }\n </div>\n )}\n <div className='d-flex justify-content-between'>\n <div>\n {!showAdvanced && hasPermissions(PermissionName.ManageShareLinkSettings) && (\n <Button type='button' variant='link' className='text-info ps-0' onClick={() => setShowAdvanced(true)}>\n <Text namespace={namespace} phrase='showAdvanced' />\n </Button>\n )}\n </div>\n <div>\n <Button className='me-2' variant='link' onClick={props.onClickCancel}>Cancel</Button>\n <Button\n variant='outline-dark'\n type='submit'\n >\n {formikProps.isSubmitting\n ? <Spinner as='span' animation='border' role='status' size='sm' />\n : <Text namespace={namespace} phrase='embed' />}\n </Button>\n </div>\n </div>\n </Form>\n );\n}\n\ninterface PluginShareSettingsProps {\n shareLink: ShareLink;\n videoSize: EmbedResolution;\n setVideoSize: (videoSize: EmbedResolution) => void;\n videoSizes: EmbedResolution[];\n autoplay: boolean;\n setAutoplay: (autoplay: boolean) => void;\n onClickEmbed: (data: EditShareLinkRequest) => void;\n onClickCancel: () => void;\n privacy: SharePrivacyResponse;\n entityType: SharableEntityType;\n hasStudentExp: boolean;\n entity: BaseObject;\n yearGroups: YearGroup[];\n shareOverrideRestrictions: boolean;\n}\n\nexport function PluginShareSettings(\n props: PropsWithAnalyticsOptions<PluginShareSettingsProps>\n): React.ReactElement {\n const initialValues: EditShareLinkRequest = {\n password: '',\n removePassword: false,\n linkExpireDate: props.shareLink?.linkExpireDate,\n overrideRestrictions: props.shareLink?.overrideRestrictions\n };\n\n return (\n <FormWrapper<EditShareLinkRequest>\n initialValues={initialValues}\n onSubmit={props.onClickEmbed}\n castInitialValues={false}\n validationSchema={ShareLinkSettingsValidationSchema}\n >\n <PluginShareSettingsForm\n shareLink={props.shareLink}\n onClickCancel={props.onClickCancel}\n autoplay={props.autoplay}\n setAutoplay={props.setAutoplay}\n videoSize={props.videoSize}\n setVideoSize={props.setVideoSize}\n videoSizes={props.videoSizes}\n privacy={props.privacy}\n entityType={props.entityType}\n hasStudentExp={props.hasStudentExp}\n entity={props.entity}\n yearGroups={props.yearGroups}\n shareOverrideRestrictions={props.shareOverrideRestrictions}\n />\n </FormWrapper>\n );\n}","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { PopupButtons } from 'libs/shared/components/popup/PopupButtons';\nimport { PopupLoadingSpinner } from 'libs/shared/components/popup/PopupLoadingSpinner';\nimport { Text } from 'libs/shared/components/text/Text';\n\nimport { ImageUrls } from 'shared/constants/ImageUrls';\nimport { usePluginHelper } from 'shared/hooks/use-plugin-helper/usePluginHelper';\n\nconst namespace = 'share.postMessageSuccess';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface PostMessageSentProps {\n closePopup: () => void;\n}\n\nexport function PostMessageSent(props: PostMessageSentProps): React.ReactElement {\n const { singleSelectMode } = usePluginHelper();\n\n if (!singleSelectMode)\n return <PopupLoadingSpinner />;\n\n return (\n <div>\n <img\n className='img-fluid mx-auto d-block'\n alt='Success'\n src={ImageUrls.SUCCESS}\n style={{ maxWidth: '14rem' }}\n />\n <p className='text-center'>\n <strong><Text namespace={namespace} phrase='success' /></strong>\n </p>\n <PopupButtons>\n <PopupButtons.Submit onClick={props.closePopup} text={getPhrase('close')} variant='outline-dark' />\n </PopupButtons>\n </div>\n );\n}","import React from 'react';\nimport { useDispatch } from 'react-redux';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Core } from 'libs/common/core';\nimport { Flight } from 'libs/common/flight';\nimport { TextHelper } from 'libs/common/react/utils/TextHelper';\n\nimport { AnalyticsHelper } from 'libs/analytics/AnalyticsHelper';\nimport { EventVersion, ShareDescriptors, UserAction } from 'libs/analytics/interfaces';\n\nimport { ShareRequests } from 'libs/shared/apps/share/flight-requests/ShareRequests';\nimport { EditShareLinkRequest } from 'libs/shared/apps/share/interfaces/requests/EditShareLinkRequest';\nimport { SharePrivacyResponse } from 'libs/shared/apps/share/interfaces/responses/SharePrivacyResponse';\nimport { SharableEntityType, ShareViewHelper } from 'libs/shared/apps/share/views/share/ShareViewHelper';\nimport { Popup } from 'libs/shared/components/popup/Popup';\nimport { CurationStatus } from 'libs/shared/enums/CurationStatus';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { PermissionName } from 'libs/shared/enums/PermissionName';\nimport { ConfigRequests } from 'libs/shared/flight-requests/ConfigRequests';\nimport { CustomerRequests } from 'libs/shared/flight-requests/CustomerRequests';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { useAlerts } from 'libs/shared/hooks/UseAlerts';\nimport { usePermissions } from 'libs/shared/hooks/usePermissions';\nimport { useSettings } from 'libs/shared/hooks/useSettings';\nimport { Config, CurrentUser, InteractiveMetadata, PopupViewProps, ShareLink, VideoTypes, YearGroup } from 'libs/shared/interfaces';\nimport { EmbedHelper, EmbedResolution } from 'libs/shared/utils/EmbedHelper';\nimport { MasterTypeHelper } from 'libs/shared/utils/MasterTypeHelper';\n\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\nimport { PluginConsumers, usePluginHelper } from 'shared/hooks/use-plugin-helper/usePluginHelper';\n\nimport { EmbedUnpublishedInteractiveError } from 'apps/share/errors/embed-unpublished-interactive/EmbedUnpublishedInteractiveError';\nimport { SmartEmbedConfirmation } from 'apps/share/views/plugin-share/components/smart-embed-confirmation/SmartEmbedConfirmation';\n\nimport { PluginShareSettings } from './components/plugin-share-settings/PluginShareSettings';\nimport { PostMessageSent } from './components/post-message-sent/PostMessageSent';\n\nconst namespace = 'share.pluginShare';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface PluginShareViewProps extends PopupViewProps {\n entityId: string;\n entityType: SharableEntityType;\n}\n\ntype ShareScreen = 'main' | 'post-message-sent' | 'restriction-warning' | 'smart-embed-main';\n\nexport function PluginShareView(props: PluginShareViewProps): React.ReactElement {\n const dispatch = useDispatch();\n\n const alerts = useAlerts();\n\n const { hasPermissions } = usePermissions();\n const { shareOverrideRestrictions, isLoadingSettings } = useSettings(null);\n\n const { embed, smartEmbed, isConsumer } = usePluginHelper();\n const isSmartEmbed = isConsumer(PluginConsumers.SmartEmbed);\n\n const config = Flight.useBasicFetch<Config>(ConfigRequests.config());\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n const entity = ShareViewHelper.getFetchFunctionByType(props.entityType)(props.entityId, currentUser.data?.id);\n const shareLink = Flight.useBasicFetch<ShareLink>(ShareRequests.getShareLinkByObjectId(props.entityId));\n\n const privacy = Flight.useBasicFetch<SharePrivacyResponse>(ShareRequests.getPrivacy(props.entityId));\n\n const yearGroups = Flight.useBasicFetch<YearGroup[]>(\n currentUser.data?.isAuthenticated && CustomerRequests.yearGroups(currentUser.data.customerId)\n );\n\n const videoSizes = EmbedHelper.getEmbedResolutions(false);\n const [ videoSize, setVideoSize ] = React.useState<EmbedResolution>(videoSizes[0]);\n const [ autoplay, setAutoplay ] = React.useState(false);\n const [ screen, setScreen ] = React.useState<ShareScreen>(isSmartEmbed ? 'smart-embed-main' : 'main');\n\n function postMessage(updatedShareLink: ShareLink): void {\n embed({\n entity: entity.data,\n entityType: props.entityType,\n shareLink: updatedShareLink,\n videoSize,\n autoplay,\n primaryUrl: config.data.primaryUrl\n });\n\n AnalyticsHelper.logUserAction({\n ...entity.data,\n shareLink: updatedShareLink\n }, AnalyticsHelper.mergeOptions(ShareViewHelper.getAnalyticsOptions(props.entityType), {\n actionType: UserAction.Share,\n descriptor: ShareDescriptors.PluginEmbed,\n eventVersion: EventVersion.V4\n }));\n\n setScreen('post-message-sent');\n }\n\n function onClickEmbed(data: EditShareLinkRequest): void {\n if (!shareLink.data) {\n ShareViewHelper.createLink({\n dispatch,\n entity: entity.data,\n entityType: props.entityType,\n alerts,\n password: data.password,\n linkExpireDate: data.linkExpireDate,\n success: postMessage\n });\n return;\n }\n\n ShareViewHelper.updateLink(\n dispatch,\n entity.data,\n props.entityType,\n shareLink.data,\n data,\n alerts,\n () => postMessage(shareLink.data)\n );\n }\n\n function onClickSmartEmbed(): void {\n smartEmbed(entity.data as VideoTypes);\n\n // TODO: Log analytics.\n\n setScreen('post-message-sent');\n }\n\n React.useEffect(() => {\n if (!entity.hasCompleted)\n return;\n\n // If the user is attempting to share an unpublished interactive, throw an error.\n if (\n MasterTypeHelper.isType<InteractiveMetadata>(entity.data, MasterType.Interactive) &&\n entity.data.status !== CurationStatus.Published\n ) {\n const interactiveUrl = Core.AppLinkHelper.getHref({\n application: AppChannels.INTERACTIVES,\n action: Actions.Interactives.EDIT_INTERACTIVE,\n args: [ entity.data.id, TextHelper.slugify(entity.data.name) ]\n });\n\n Core.ErrorHelper.throw(new EmbedUnpublishedInteractiveError(interactiveUrl));\n }\n }, [entity.hasCompleted]);\n\n const loaded = config.data\n && currentUser.data\n && entity.data\n && shareLink.hasCompleted\n && privacy.data\n && yearGroups.hasCompleted\n && !isLoadingSettings;\n\n return (\n <Popup\n title={getPhrase('title')}\n closePopup={props.closePopup}\n showLoadingSpinner={!loaded || screen === null}\n >\n {(() => {\n if (!loaded)\n return <></>;\n\n switch (screen) {\n case 'post-message-sent':\n return <PostMessageSent closePopup={props.closePopup} />;\n case 'main':\n return (\n <PluginShareSettings\n shareLink={shareLink.data}\n analyticsOptions={ShareViewHelper.getAnalyticsOptions(props.entityType)}\n onClickCancel={props.closePopup}\n onClickEmbed={onClickEmbed}\n videoSize={videoSize}\n setVideoSize={setVideoSize}\n videoSizes={videoSizes}\n autoplay={autoplay}\n setAutoplay={setAutoplay}\n privacy={privacy.data}\n entityType={props.entityType}\n hasStudentExp={hasPermissions(PermissionName.StudentExperience)}\n entity={entity.data}\n yearGroups={yearGroups.data}\n shareOverrideRestrictions={shareOverrideRestrictions}\n />\n );\n case 'smart-embed-main':\n return (\n <SmartEmbedConfirmation\n entity={entity.data as VideoTypes}\n closePopup={props.closePopup}\n embed={onClickSmartEmbed}\n />\n );\n }\n })()}\n </Popup>\n );\n}"],"names":["namespace","EmbedSize","props","autoplay","setAutoplay","videoSize","setVideoSize","videoSizes","className","length","phrase","id","variant","label","map","size","key","width","height","onClick","checked","onChange","getPhrase","LinkExpiry","formikProps","htmlFor","title","disable","passwordProtectLink","spanHack","trigger","setFieldValue","values","linkExpireDate","on","disabled","showStateWhenDisabled","LanguageService","SetPasswordInput","revealPassword","setRevealPassword","errorMsg","errors","password","value","e","canEdit","target","type","placeholder","readOnly","Form","DivButton","SvgContainer","svgName","tooltipPlacement","canReset","onReset","PASSWORD_PLACEHOLDER","LinkPassword","setPasswordProtectLink","shareLink","isPasswordProtected","readonlyPassword","setReadonlyPassword","Text","ToggleSwitch","LINK_EXPIRY_TIME","getLinkExpiryDate","shouldExpire","date","Date","setDate","getDate","toISOString","ShareLinkSettingsValidationSchema","shape","removePassword","resourceId","nullable","test","name","exclusive","params","message","val","FormWrapper","castInitialValues","castValuesOnSubmit","initialValues","onSubmit","formattedInitialValues","validationSchema","cast","omitChildValues","child","Object","keys","forEach","hasOwnProperty","omitNullInitialValues","initialStatus","allowInitialSubmit","enableReinitialize","setSubmitting","resetForm","setFieldError","formattedData","options","reset","entries","children","f","useFormikContextWrapper","defaultProps","VideoItemTitle","canNavigate","video","analyticsData","analyticsOptions","actionType","descriptor","textClassName","linkClassName","appLink","yearGroups","EmbedUnpublishedInteractiveError","externalLink","text","this","buttons","success","DialogError","SmartEmbedConfirmation","VideoThumbnail","entity","imageOptions","textPosition","ThumbnailTextPosition","preload","VideoSubText","PopupButtons","closePopup","embed","PluginShareSettingsForm","hasPermissions","usePermissions","sizeSelector","usePluginHelper","hasAdvanced","showAdvanced","setShowAdvanced","shareOverrideRestrictions","PermissionName","Button","onClickCancel","isSubmitting","Spinner","as","animation","role","PluginShareSettings","overrideRestrictions","onClickEmbed","privacy","entityType","hasStudentExp","PostMessageSent","singleSelectMode","alt","src","ImageUrls","style","maxWidth","PopupLoadingSpinner","PluginShareView","dispatch","alerts","useSettings","isLoadingSettings","smartEmbed","isSmartEmbed","isConsumer","config","ConfigRequests","currentUser","UserRequests","ShareViewHelper","entityId","data","ShareRequests","isAuthenticated","CustomerRequests","customerId","EmbedHelper","screen","setScreen","postMessage","updatedShareLink","primaryUrl","AnalyticsHelper","eventVersion","onClickSmartEmbed","hasCompleted","MasterTypeHelper","MasterType","status","CurationStatus","interactiveUrl","application","action","args","TextHelper","loaded","Popup","showLoadingSpinner"],"sourceRoot":""}
1
+ {"version":3,"file":"scripts/5442-2326dc9418-lite.chunk.js","mappings":"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","sources":["file:///app/packages/libs/shared/src/apps/share/components/embed-size/EmbedSize.tsx","file:///app/packages/libs/shared/src/apps/share/components/link-expiry/LinkExpiry.tsx","file:///app/packages/libs/shared/src/apps/share/components/set-password-input/set-password-input.scss","file:///app/packages/libs/shared/src/apps/share/components/set-password-input/SetPasswordInput.tsx","file:///app/packages/libs/shared/src/apps/share/components/link-password/LinkPassword.tsx","file:///app/packages/libs/shared/src/apps/share/utils/LinkExpiryHelper.ts","file:///app/packages/libs/shared/src/apps/share/validation/ShareLinkSettingsValidationSchema.ts","file:///app/packages/libs/shared/src/components/forms/form-wrapper/FormWrapper.tsx","file:///app/packages/libs/shared/src/components/video-list/components/video-item-title/VideoItemTitle.tsx","file:///app/packages/projects/lite/src/apps/share/errors/embed-unpublished-interactive/EmbedUnpublishedInteractiveError.ts","file:///app/packages/projects/lite/src/apps/share/views/plugin-share/components/smart-embed-confirmation/SmartEmbedConfirmation.tsx","file:///app/packages/projects/lite/src/apps/share/views/plugin-share/components/plugin-share-settings/PluginShareSettings.tsx","file:///app/packages/projects/lite/src/apps/share/views/plugin-share/components/post-message-sent/PostMessageSent.tsx","file:///app/packages/projects/lite/src/apps/share/views/plugin-share/PluginShareView.tsx"],"sourcesContent":["import React from 'react';\nimport { Dropdown } from 'react-bootstrap';\n\nimport { Checkbox } from 'libs/shared/components/forms/form-checkbox/Checkbox';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { EmbedResolution } from 'libs/shared/utils/EmbedHelper';\n\nconst namespace = 'share.embedSize';\n\ninterface EmbedSizeProps {\n autoplay: boolean;\n setAutoplay: (autoplay: boolean) => void;\n videoSize: EmbedResolution;\n setVideoSize: (videoSize: EmbedResolution) => void;\n videoSizes: EmbedResolution[];\n}\n\nexport function EmbedSize(props: EmbedSizeProps): React.ReactElement {\n const {\n autoplay,\n setAutoplay,\n videoSize,\n setVideoSize,\n videoSizes\n } = props;\n\n return (\n <div className='d-flex align-items-center'>\n {!!videoSizes.length &&\n <>\n <div className='me-1'>\n <Text namespace={namespace} phrase='videoSize' />\n </div>\n <div className='pe-3'>\n <Dropdown>\n <Dropdown.Toggle id='embed-resolution' variant='outline-dark'>\n {videoSize.label}\n </Dropdown.Toggle>\n\n <Dropdown.Menu>\n {videoSizes.map(size => (\n <Dropdown.Item\n key={`${size.width}x${size.height}`}\n onClick={() => setVideoSize(size)}\n >\n {size.label}\n </Dropdown.Item>\n ))}\n </Dropdown.Menu>\n </Dropdown>\n </div>\n </>\n }\n <div className='me-2'>\n <Text namespace={namespace} phrase='autoplay' />\n </div>\n <Checkbox id='autoplay-checkbox' checked={autoplay} onChange={() => setAutoplay(!autoplay)} />\n </div>\n );\n}","import React from 'react';\nimport { useFormikContext } from 'formik';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { EditShareLinkRequest } from 'libs/shared/apps/share/interfaces/requests/EditShareLinkRequest';\nimport { getLinkExpiryDate } from 'libs/shared/apps/share/utils/LinkExpiryHelper';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { ToggleSwitch } from 'libs/shared/components/toggle-switch/ToggleSwitch';\nimport { Tooltip } from 'libs/shared/components/tooltip/Tooltip';\n\nconst namespace = 'shared.linkExpiry';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface LinkExpiryProps {\n passwordProtectLink: boolean;\n}\n\nexport function LinkExpiry(props: LinkExpiryProps): React.ReactElement {\n const formikProps = useFormikContext<EditShareLinkRequest>();\n\n function setLinkExpireDate(): void {\n if (props.passwordProtectLink)\n return;\n\n formikProps.setFieldValue('linkExpireDate', getLinkExpiryDate(!formikProps.values.linkExpireDate));\n }\n\n return (\n <div className='d-flex justify-content-between align-items-center pb-3'>\n <div>\n <label className='m-0' htmlFor=''><Text namespace={namespace} phrase='linkExpirationHeading' /></label>\n <p className='m-0'><Text namespace={namespace} phrase='linkExpirationInfo' /></p>\n </div>\n <Tooltip\n title={getPhrase('passwordProtected')}\n disable={!props.passwordProtectLink}\n spanHack\n trigger='hover'\n >\n <ToggleSwitch\n onClick={setLinkExpireDate}\n on={!!formikProps.values.linkExpireDate}\n disabled={props.passwordProtectLink}\n showStateWhenDisabled\n />\n </Tooltip>\n </div>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"passwordButton\":\"W9Jl8\"};","import * as React from 'react';\nimport { Form } from 'react-bootstrap';\nimport { useFormikContext } from 'formik';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { EditShareLinkRequest } from 'libs/shared/apps/share/interfaces/requests/EditShareLinkRequest';\nimport { DivButton } from 'libs/shared/components/div-button/DivButton';\nimport { SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport styles from './set-password-input.scss';\n\nconst namespace = 'share.setPasswordInput';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface SetPasswordInputProps {\n value: string;\n onChange: (value: string) => void;\n onReset?: () => void;\n /**\n * Allow user to view and edit current value.\n */\n canEdit?: boolean;\n /**\n * Don't allow user to view/edit current value\n * but allow them to clear it and enter a new value.\n */\n canReset?: boolean;\n placeholder?: string;\n}\n\nexport function SetPasswordInput(props: SetPasswordInputProps): JSX.Element {\n const [ revealPassword, setRevealPassword ] = React.useState(false);\n\n const formikProps = useFormikContext<EditShareLinkRequest>();\n\n const errorMsg = formikProps.errors?.password;\n\n return (\n <>\n <input\n className={`form-control ${errorMsg ? 'is-invalid' : ''}`}\n value={props.value}\n onChange={e => {\n !!props.canEdit && props.onChange(e.target.value);\n }}\n type={revealPassword ? 'text' : 'password'}\n placeholder={props.placeholder || getPhrase('passwordPlaceholder')}\n readOnly={!props.canEdit}\n />\n {!!errorMsg && (\n <Form.Control.Feedback type='invalid'>{errorMsg}</Form.Control.Feedback>\n )}\n {!!props.canEdit &&\n <DivButton className={styles.passwordButton} onClick={() => setRevealPassword(!revealPassword)}>\n <SvgContainer\n svgName={revealPassword ? cvSvgLibrary.VisibleOn : cvSvgLibrary.VisibleOff}\n title={getPhrase(revealPassword ? 'hidePassword' : 'revealPassword')}\n tooltipPlacement='top'\n />\n </DivButton>\n }\n {!props.canEdit && !!props.canReset && !!props.onReset &&\n <DivButton className={styles.passwordButton} onClick={props.onReset}>\n <SvgContainer\n svgName={cvSvgLibrary.Close} title={getPhrase('resetPassword')}\n tooltipPlacement='top'\n />\n </DivButton>\n }\n </>\n );\n}","import React from 'react';\nimport { useFormikContext } from 'formik';\n\nimport { SetPasswordInput } from 'libs/shared/apps/share/components/set-password-input/SetPasswordInput';\nimport { EditShareLinkRequest } from 'libs/shared/apps/share/interfaces/requests/EditShareLinkRequest';\nimport { getLinkExpiryDate } from 'libs/shared/apps/share/utils/LinkExpiryHelper';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { ToggleSwitch } from 'libs/shared/components/toggle-switch/ToggleSwitch';\nimport { ShareLink } from 'libs/shared/interfaces';\n\nconst namespace = 'shared.linkPassword';\n\nconst PASSWORD_PLACEHOLDER = '********';\n\ninterface LinkPasswordProps {\n shareLink: ShareLink;\n passwordProtectLink: boolean;\n setPasswordProtectLink: (protect: boolean) => void;\n}\n\nexport function LinkPassword(props: LinkPasswordProps): React.ReactElement {\n const { passwordProtectLink, setPasswordProtectLink } = props;\n\n const formikProps = useFormikContext<EditShareLinkRequest>();\n \n const [ readonlyPassword, setReadonlyPassword ] = React.useState(!!props.shareLink?.isPasswordProtected);\n\n function onTogglePasswordProtect(): void {\n if (props.shareLink?.isPasswordProtected)\n formikProps.setFieldValue('removePassword', passwordProtectLink);\n\n formikProps.setFieldValue('password', '');\n\n setPasswordProtectLink(!passwordProtectLink);\n formikProps.setFieldValue('linkExpireDate', getLinkExpiryDate(!passwordProtectLink));\n }\n\n function setPassword(password: string): void {\n formikProps.setFieldValue('password', password);\n }\n\n function resetPassword(): void {\n formikProps.setFieldValue('password', '');\n formikProps.setFieldValue('removePassword', true);\n setReadonlyPassword(false);\n }\n\n return (\n <div className='pb-3'>\n <div className='d-flex justify-content-between align-items-center'>\n <div>\n <label className='m-0' htmlFor=''><Text namespace={namespace} phrase='passwordProtectHeading' /></label>\n <p className='m-0'><Text namespace={namespace} phrase='passwordProtectInfo' /></p>\n </div>\n <ToggleSwitch onClick={onTogglePasswordProtect} on={passwordProtectLink} />\n </div>\n\n {passwordProtectLink &&\n <div className='position-relative mt-2'>\n <SetPasswordInput\n value={readonlyPassword ? PASSWORD_PLACEHOLDER : formikProps.values.password}\n onChange={setPassword}\n onReset={resetPassword}\n canEdit={!readonlyPassword}\n canReset\n />\n </div>\n }\n </div>\n );\n}","const LINK_EXPIRY_TIME = 30; // days\nexport function getLinkExpiryDate(shouldExpire: boolean): string | null {\n if (!shouldExpire)\n return null;\n\n const date = new Date();\n date.setDate(date.getDate() + LINK_EXPIRY_TIME);\n\n return date.toISOString();\n}","import { boolean, object, string } from 'yup';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nconst namespace = 'share.validation';\n\nexport const ShareLinkSettingsValidationSchema = object().shape({\n removePassword: boolean(),\n resourceId: string(),\n linkExpireDate: string().nullable(),\n password: string()\n .test({\n name: 'password-length',\n exclusive: false,\n params: {},\n message: LanguageService.getPhrase(namespace, 'minPassword'),\n test: val => {\n const removePassword = ((this as any)?.parent as any)?.removePassword;\n\n if (removePassword)\n return true;\n\n if (!val?.length)\n return true;\n\n if (val.length < 3)\n return false;\n\n return true;\n }\n })\n .default('')\n});","import * as React from 'react';\nimport { Formik, FormikConfig, FormikContextType, FormikErrors, FormikHelpers, FormikProps, FormikValues, useFormikContext } from 'formik';\n\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\nimport { HashObject } from 'libs/common/react/interfaces';\nimport { ObjectHelper } from 'libs/common/react/utils/ObjectHelper';\n\n/**\n * Note: This currently doesn't support arrays, but the need for arrays as initial\n * form data has not yet come up\n */\nfunction omitNullInitialValues<Values extends FormikValues>(initialValues: Values): Values {\n if (!initialValues)\n return {} as Values;\n\n const values = ObjectHelper.deepClone(initialValues);\n\n function omitChildValues(child: Values): void {\n Object.keys(values).forEach((key: keyof Values) => {\n if (!values.hasOwnProperty(key))\n return;\n \n if (ObjectHelper.isObject(child[key]))\n omitChildValues(child[key]);\n else if (values[key] === null)\n delete values[key];\n });\n }\n\n omitChildValues(values);\n return values;\n}\n\n// Omit attributes from FormikConfig that are defined in FormWrapperProps.\ntype ModifiedFormikConfig<Values extends FormikValues> = Omit<FormikConfig<Values>, 'initialValues' | 'onSubmit'>;\n\ninterface InitialStatus {\n allowInitialSubmit: boolean;\n}\n\nexport type FormSubmissionOptions<FormValues = FormikValues> = {\n reset?: boolean;\n errors?: FormikErrors<FormValues>;\n};\n\ninterface FormWrapperProps<FormValues extends FormikValues, ApiValues extends FormikValues> {\n initialValues: Partial<FormValues | ApiValues>;\n onSubmit: (data: FormValues, onDone: (options?: FormSubmissionOptions<FormValues>) => void) => void;\n castInitialValues?: boolean; // cast to validationSchema\n castValuesOnSubmit?: boolean; // cast to validationSchema\n allowInitialSubmit?: boolean; // if true, useCanSubmitForm will allow submit without any user changes.\n}\n\nFormWrapper.defaultProps = {\n castInitialValues: true,\n castValuesOnSubmit: true\n};\n\nexport function FormWrapper<\n FormValues extends FormikValues = FormikValues,\n ApiValues extends FormikValues = FormValues,\n ExtraProps = HashObject\n>(props: ModifiedFormikConfig<FormValues> & ExtraProps & FormWrapperProps<FormValues, ApiValues>): JSX.Element {\n const { castInitialValues, castValuesOnSubmit, initialValues, onSubmit, ...formikProps } = props;\n\n /**\n * If castInitialValues is true, cast initialValues to the validationSchema.\n * This will ensure that any data fetched from the api conforms to the expected form data shape.\n */\n const formattedInitialValues: FormValues = castInitialValues && props.validationSchema\n ? props.validationSchema.cast(omitNullInitialValues(initialValues))\n : initialValues;\n\n const onSubmitHandler = (\n values: FormValues,\n { setSubmitting, resetForm, setFieldError }: FormikHelpers<FormValues>\n ) => {\n /**\n * validationSchema.cast will coerce the values to the types defined in validationSchema.\n * This is useful for trimming inputs:\n * e.g. if a value field has type Yup.string().trim(), it will be automatically trimmed.\n */\n const formattedData = castValuesOnSubmit && props.validationSchema\n ? props.validationSchema.cast(values)\n : values;\n\n onSubmit(formattedData, (options: FormSubmissionOptions<FormValues> = {}) => {\n options.reset && resetForm();\n\n if (options.errors) {\n for (const [ key, value ] of Object.entries(options.errors)) {\n setFieldError(key, value);\n }\n }\n\n setSubmitting(false);\n });\n };\n\n const initialStatus: InitialStatus = {\n allowInitialSubmit: props.allowInitialSubmit\n };\n\n return (\n <Formik<FormValues, ExtraProps>\n enableReinitialize\n {...(formikProps as ModifiedFormikConfig<FormValues> & ExtraProps)}\n initialValues={formattedInitialValues}\n onSubmit={onSubmitHandler}\n initialStatus={initialStatus}\n >\n {FunctionHelper.isFunction(props.children)\n ? (f: FormikProps<FormValues>) => (props.children as (f: FormikProps<FormValues>) => React.ReactNode)(f)\n : React.Children.count(props.children) ? props.children : null\n }\n </Formik>\n );\n}\n\nexport function useFormikContextWrapper<T>(): FormikContextType<T> {\n return useFormikContext<T>();\n}","import * as React from 'react';\n\nimport { Core } from 'libs/common/core';\n\nimport { AnalyticsOptions, ClickDescriptor, HashObject, UserAction } from 'libs/analytics/interfaces';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { VideoItemSize } from 'libs/shared/components/video-list/BaseVideoItemProps';\nimport { RestrictionPadlock } from 'libs/shared/components/video-list/components/restriction-padlock/RestrictionPadlock';\nimport { Video, YearGroup } from 'libs/shared/interfaces';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\ninterface VideoItemTitleProps {\n video: Video;\n appLink: Core.AppLink;\n size?: VideoItemSize;\n analyticsData?: HashObject;\n analyticsOptions: AnalyticsOptions;\n yearGroups: YearGroup[];\n\n linkClassName?: string;\n textClassName?: string;\n}\n\nexport function VideoItemTitle(props: VideoItemTitleProps): JSX.Element {\n const { canNavigate } = VideoHelper.getCanBeConsumed(props.video);\n const title = VideoHelper.getTitle(props.video);\n\n const analyticsData: HashObject = {\n ...props.analyticsData,\n id: props.video?.id,\n name: props.video?.name\n };\n\n const analyticsOptions: AnalyticsOptions = {\n ...props.analyticsOptions,\n actionType: UserAction.Click,\n descriptor: ClickDescriptor.Title\n };\n\n const textClassName = props.textClassName || `m-0 clamp-1 mb-n1 pb-1 align-middle ${props.size === 'md' ? 'h4' : 'h5'}`;\n\n return (\n <AppLink\n className={props.linkClassName}\n appLink={canNavigate ? props.appLink : null}\n analyticsOptions={analyticsOptions}\n analyticsData={analyticsData}\n >\n <h5 className={textClassName} title={props.video.name ?? ''}>\n {title}\n <RestrictionPadlock\n size={props.size}\n video={props.video}\n yearGroups={props.yearGroups}\n />\n </h5>\n </AppLink>\n );\n}","import { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { DialogError } from 'libs/shared/errors/primitives/DialogError';\nimport { DialogOptions } from 'libs/shared/interfaces';\n\nconst namespace = 'share.embedUnpublishedInteractiveError';\n\nexport class EmbedUnpublishedInteractiveError extends DialogError {\n private externalLink: string;\n\n constructor(externalLink: string) {\n super('Embed unpublished interactive error');\n\n this.externalLink = externalLink;\n }\n\n // @ts-ignore\n public get name(): string {\n return 'EmbedUnpublishedInteractiveError';\n }\n\n // @ts-ignore\n public get dialogOptions(): DialogOptions {\n return {\n title: LanguageService.getPhrase(namespace, 'title'),\n text: LanguageService.getPhrase(namespace, 'body', {\n externalLink: this.externalLink\n }),\n buttons: [{\n text: LanguageService.getPhrase(namespace, 'close'),\n className: `btn btn-dark`,\n success: true\n }]\n };\n }\n}","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { PopupButtons } from 'libs/shared/components/popup/PopupButtons';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { VideoThumbnail } from 'libs/shared/components/thumbnails/video/VideoThumbnail';\nimport { VideoItemTitle } from 'libs/shared/components/video-list/components/video-item-title/VideoItemTitle';\nimport { VideoSubText } from 'libs/shared/components/video-sub-text/VideoSubText';\nimport { ImageSize } from 'libs/shared/enums/Images';\nimport { ThumbnailTextPosition } from 'libs/shared/enums/ThumbnailTextPosition';\nimport { VideoTypes } from 'libs/shared/interfaces';\n\nconst namespace = 'share.smartEmbedConfirmation';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface SmartEmbedConfirmation {\n closePopup: () => void;\n embed: () => void;\n entity: VideoTypes;\n}\n\nexport function SmartEmbedConfirmation(props: SmartEmbedConfirmation): JSX.Element {\n return (\n <>\n <div className='row mb-3'>\n <div className='col-4'>\n <VideoThumbnail\n video={props.entity}\n type='cosmetic'\n imageOptions={{ size: ImageSize.Small }}\n textPosition={ThumbnailTextPosition.Independent}\n preload\n />\n </div>\n <div className='col-8'>\n <VideoSubText type='series' analyticsOptions={{}} video={props.entity} />\n <VideoItemTitle video={props.entity} analyticsOptions={{}} appLink={null} yearGroups={null} />\n </div>\n </div>\n <p><Text namespace={namespace} phrase='prompt' /></p>\n <PopupButtons>\n <PopupButtons.Cancel onClick={props.closePopup} />\n <PopupButtons.Submit\n text={getPhrase('embed')}\n onClick={props.embed}\n variant='dark'\n />\n </PopupButtons>\n </>\n );\n}","import React from 'react';\nimport { Button, Spinner } from 'react-bootstrap';\nimport { Form, useFormikContext } from 'formik';\n\nimport { EmbedSize } from 'libs/shared/apps/share/components/embed-size/EmbedSize';\nimport { LinkExpiry } from 'libs/shared/apps/share/components/link-expiry/LinkExpiry';\nimport { LinkPassword } from 'libs/shared/apps/share/components/link-password/LinkPassword';\nimport { EditShareLinkRequest } from 'libs/shared/apps/share/interfaces/requests/EditShareLinkRequest';\nimport { SharePrivacyResponse } from 'libs/shared/apps/share/interfaces/responses/SharePrivacyResponse';\nimport { ShareLinkSettingsValidationSchema } from 'libs/shared/apps/share/validation/ShareLinkSettingsValidationSchema';\nimport { SharableEntityType } from 'libs/shared/apps/share/views/share/ShareViewHelper';\nimport { FormWrapper } from 'libs/shared/components/forms/form-wrapper/FormWrapper';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { PermissionName } from 'libs/shared/enums/PermissionName';\nimport { usePermissions } from 'libs/shared/hooks/usePermissions';\nimport { BaseObject, PropsWithAnalyticsOptions, ShareLink, YearGroup } from 'libs/shared/interfaces';\nimport { EmbedResolution } from 'libs/shared/utils/EmbedHelper';\n\nimport { usePluginHelper } from 'shared/hooks/use-plugin-helper/usePluginHelper';\n\nconst namespace = 'share.pluginShareSettings';\n\ninterface PluginShareSettingsFormProps {\n shareLink: ShareLink;\n privacy: SharePrivacyResponse;\n onClickCancel: () => void;\n videoSize: EmbedResolution;\n setVideoSize: (videoSize: EmbedResolution) => void;\n videoSizes: EmbedResolution[];\n autoplay: boolean;\n setAutoplay: (autoplay: boolean) => void;\n entityType: SharableEntityType;\n hasStudentExp: boolean;\n entity: BaseObject;\n yearGroups: YearGroup[];\n shareOverrideRestrictions: boolean;\n}\n\nfunction PluginShareSettingsForm(props: PluginShareSettingsFormProps): React.ReactElement {\n const formikProps = useFormikContext<EditShareLinkRequest>();\n \n const { hasPermissions } = usePermissions();\n\n const { sizeSelector } = usePluginHelper();\n\n const hasAdvanced = !!props.shareLink?.isPasswordProtected || !!props.shareLink?.linkExpireDate;\n const [ showAdvanced, setShowAdvanced ] = React.useState(hasAdvanced);\n\n const [\n passwordProtectLink, setPasswordProtectLink\n ] = React.useState(!!(props.shareLink?.isPasswordProtected ?? false));\n\n return (\n <Form>\n <div className='mb-4'>\n <h2 className='h6'><Text namespace={namespace} phrase='title' /></h2>\n <EmbedSize\n autoplay={props.autoplay}\n setAutoplay={props.setAutoplay}\n videoSize={props.videoSize}\n setVideoSize={props.setVideoSize}\n videoSizes={sizeSelector ? props.videoSizes : []}\n />\n </div>\n {showAdvanced && (\n <div className='mt-2'>\n <h2 className='h6'><Text namespace={namespace} phrase='accessTitle' /></h2>\n <LinkExpiry passwordProtectLink={passwordProtectLink}/>\n {props.shareOverrideRestrictions &&\n <LinkPassword\n shareLink={props.shareLink}\n passwordProtectLink={passwordProtectLink}\n setPasswordProtectLink={setPasswordProtectLink}\n />\n }\n </div>\n )}\n <div className='d-flex justify-content-between'>\n <div>\n {!showAdvanced && hasPermissions(PermissionName.ManageShareLinkSettings) && (\n <Button type='button' variant='link' className='text-info ps-0' onClick={() => setShowAdvanced(true)}>\n <Text namespace={namespace} phrase='showAdvanced' />\n </Button>\n )}\n </div>\n <div>\n <Button className='me-2' variant='link' onClick={props.onClickCancel}>Cancel</Button>\n <Button\n variant='outline-dark'\n type='submit'\n >\n {formikProps.isSubmitting\n ? <Spinner as='span' animation='border' role='status' size='sm' />\n : <Text namespace={namespace} phrase='embed' />}\n </Button>\n </div>\n </div>\n </Form>\n );\n}\n\ninterface PluginShareSettingsProps {\n shareLink: ShareLink;\n videoSize: EmbedResolution;\n setVideoSize: (videoSize: EmbedResolution) => void;\n videoSizes: EmbedResolution[];\n autoplay: boolean;\n setAutoplay: (autoplay: boolean) => void;\n onClickEmbed: (data: EditShareLinkRequest) => void;\n onClickCancel: () => void;\n privacy: SharePrivacyResponse;\n entityType: SharableEntityType;\n hasStudentExp: boolean;\n entity: BaseObject;\n yearGroups: YearGroup[];\n shareOverrideRestrictions: boolean;\n}\n\nexport function PluginShareSettings(\n props: PropsWithAnalyticsOptions<PluginShareSettingsProps>\n): React.ReactElement {\n const initialValues: EditShareLinkRequest = {\n password: '',\n removePassword: false,\n linkExpireDate: props.shareLink?.linkExpireDate,\n overrideRestrictions: props.shareLink?.overrideRestrictions\n };\n\n return (\n <FormWrapper<EditShareLinkRequest>\n initialValues={initialValues}\n onSubmit={props.onClickEmbed}\n castInitialValues={false}\n validationSchema={ShareLinkSettingsValidationSchema}\n >\n <PluginShareSettingsForm\n shareLink={props.shareLink}\n onClickCancel={props.onClickCancel}\n autoplay={props.autoplay}\n setAutoplay={props.setAutoplay}\n videoSize={props.videoSize}\n setVideoSize={props.setVideoSize}\n videoSizes={props.videoSizes}\n privacy={props.privacy}\n entityType={props.entityType}\n hasStudentExp={props.hasStudentExp}\n entity={props.entity}\n yearGroups={props.yearGroups}\n shareOverrideRestrictions={props.shareOverrideRestrictions}\n />\n </FormWrapper>\n );\n}","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { PopupButtons } from 'libs/shared/components/popup/PopupButtons';\nimport { PopupLoadingSpinner } from 'libs/shared/components/popup/PopupLoadingSpinner';\nimport { Text } from 'libs/shared/components/text/Text';\n\nimport { ImageUrls } from 'shared/constants/ImageUrls';\nimport { usePluginHelper } from 'shared/hooks/use-plugin-helper/usePluginHelper';\n\nconst namespace = 'share.postMessageSuccess';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface PostMessageSentProps {\n closePopup: () => void;\n}\n\nexport function PostMessageSent(props: PostMessageSentProps): React.ReactElement {\n const { singleSelectMode } = usePluginHelper();\n\n if (!singleSelectMode)\n return <PopupLoadingSpinner />;\n\n return (\n <div>\n <img\n className='img-fluid mx-auto d-block'\n alt='Success'\n src={ImageUrls.SUCCESS}\n style={{ maxWidth: '14rem' }}\n />\n <p className='text-center'>\n <strong><Text namespace={namespace} phrase='success' /></strong>\n </p>\n <PopupButtons>\n <PopupButtons.Submit onClick={props.closePopup} text={getPhrase('close')} variant='outline-dark' />\n </PopupButtons>\n </div>\n );\n}","import React from 'react';\nimport { useDispatch } from 'react-redux';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Core } from 'libs/common/core';\nimport { Flight } from 'libs/common/flight';\nimport { TextHelper } from 'libs/common/react/utils/TextHelper';\n\nimport { AnalyticsHelper } from 'libs/analytics/AnalyticsHelper';\nimport { EventVersion, ShareDescriptors, UserAction } from 'libs/analytics/interfaces';\n\nimport { ShareRequests } from 'libs/shared/apps/share/flight-requests/ShareRequests';\nimport { EditShareLinkRequest } from 'libs/shared/apps/share/interfaces/requests/EditShareLinkRequest';\nimport { SharePrivacyResponse } from 'libs/shared/apps/share/interfaces/responses/SharePrivacyResponse';\nimport { SharableEntityType, ShareViewHelper } from 'libs/shared/apps/share/views/share/ShareViewHelper';\nimport { Popup } from 'libs/shared/components/popup/Popup';\nimport { CurationStatus } from 'libs/shared/enums/CurationStatus';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { PermissionName } from 'libs/shared/enums/PermissionName';\nimport { ConfigRequests } from 'libs/shared/flight-requests/ConfigRequests';\nimport { CustomerRequests } from 'libs/shared/flight-requests/CustomerRequests';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { useAlerts } from 'libs/shared/hooks/UseAlerts';\nimport { usePermissions } from 'libs/shared/hooks/usePermissions';\nimport { useSettings } from 'libs/shared/hooks/useSettings';\nimport { Config, CurrentUser, InteractiveMetadata, PopupViewProps, ShareLink, VideoTypes, YearGroup } from 'libs/shared/interfaces';\nimport { EmbedHelper, EmbedResolution } from 'libs/shared/utils/EmbedHelper';\nimport { MasterTypeHelper } from 'libs/shared/utils/MasterTypeHelper';\n\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\nimport { PluginConsumers, usePluginHelper } from 'shared/hooks/use-plugin-helper/usePluginHelper';\n\nimport { EmbedUnpublishedInteractiveError } from 'apps/share/errors/embed-unpublished-interactive/EmbedUnpublishedInteractiveError';\nimport { SmartEmbedConfirmation } from 'apps/share/views/plugin-share/components/smart-embed-confirmation/SmartEmbedConfirmation';\n\nimport { PluginShareSettings } from './components/plugin-share-settings/PluginShareSettings';\nimport { PostMessageSent } from './components/post-message-sent/PostMessageSent';\n\nconst namespace = 'share.pluginShare';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface PluginShareViewProps extends PopupViewProps {\n entityId: string;\n entityType: SharableEntityType;\n}\n\ntype ShareScreen = 'main' | 'post-message-sent' | 'restriction-warning' | 'smart-embed-main';\n\nexport function PluginShareView(props: PluginShareViewProps): React.ReactElement {\n const dispatch = useDispatch();\n\n const alerts = useAlerts();\n\n const { hasPermissions } = usePermissions();\n const { shareOverrideRestrictions, isLoadingSettings } = useSettings(null);\n\n const { embed, smartEmbed, isConsumer } = usePluginHelper();\n const isSmartEmbed = isConsumer(PluginConsumers.SmartEmbed);\n\n const config = Flight.useBasicFetch<Config>(ConfigRequests.config());\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n const entity = ShareViewHelper.getFetchFunctionByType(props.entityType)(props.entityId, currentUser.data?.id);\n const shareLink = Flight.useBasicFetch<ShareLink>(ShareRequests.getShareLinkByObjectId(props.entityId));\n\n const privacy = Flight.useBasicFetch<SharePrivacyResponse>(ShareRequests.getPrivacy(props.entityId));\n\n const yearGroups = Flight.useBasicFetch<YearGroup[]>(\n currentUser.data?.isAuthenticated && CustomerRequests.yearGroups(currentUser.data.customerId)\n );\n\n const videoSizes = EmbedHelper.getEmbedResolutions(false);\n const [ videoSize, setVideoSize ] = React.useState<EmbedResolution>(videoSizes[0]);\n const [ autoplay, setAutoplay ] = React.useState(false);\n const [ screen, setScreen ] = React.useState<ShareScreen>(isSmartEmbed ? 'smart-embed-main' : 'main');\n\n function postMessage(updatedShareLink: ShareLink): void {\n embed({\n entity: entity.data,\n entityType: props.entityType,\n shareLink: updatedShareLink,\n videoSize,\n autoplay,\n primaryUrl: config.data.primaryUrl\n });\n\n AnalyticsHelper.logUserAction({\n ...entity.data,\n shareLink: updatedShareLink\n }, AnalyticsHelper.mergeOptions(ShareViewHelper.getAnalyticsOptions(props.entityType), {\n actionType: UserAction.Share,\n descriptor: ShareDescriptors.PluginEmbed,\n eventVersion: EventVersion.V4\n }));\n\n setScreen('post-message-sent');\n }\n\n function onClickEmbed(data: EditShareLinkRequest): void {\n if (!shareLink.data) {\n ShareViewHelper.createLink({\n dispatch,\n entity: entity.data,\n entityType: props.entityType,\n alerts,\n password: data.password,\n linkExpireDate: data.linkExpireDate,\n success: postMessage\n });\n return;\n }\n\n ShareViewHelper.updateLink(\n dispatch,\n entity.data,\n props.entityType,\n shareLink.data,\n data,\n alerts,\n () => postMessage(shareLink.data)\n );\n }\n\n function onClickSmartEmbed(): void {\n smartEmbed(entity.data as VideoTypes);\n\n // TODO: Log analytics.\n\n setScreen('post-message-sent');\n }\n\n React.useEffect(() => {\n if (!entity.hasCompleted)\n return;\n\n // If the user is attempting to share an unpublished interactive, throw an error.\n if (\n MasterTypeHelper.isType<InteractiveMetadata>(entity.data, MasterType.Interactive) &&\n entity.data.status !== CurationStatus.Published\n ) {\n const interactiveUrl = Core.AppLinkHelper.getHref({\n application: AppChannels.INTERACTIVES,\n action: Actions.Interactives.EDIT_INTERACTIVE,\n args: [ entity.data.id, TextHelper.slugify(entity.data.name) ]\n });\n\n Core.ErrorHelper.throw(new EmbedUnpublishedInteractiveError(interactiveUrl));\n }\n }, [entity.hasCompleted]);\n\n const loaded = config.data\n && currentUser.data\n && entity.data\n && shareLink.hasCompleted\n && privacy.data\n && yearGroups.hasCompleted\n && !isLoadingSettings;\n\n return (\n <Popup\n title={getPhrase('title')}\n closePopup={props.closePopup}\n showLoadingSpinner={!loaded || screen === null}\n >\n {(() => {\n if (!loaded)\n return <></>;\n\n switch (screen) {\n case 'post-message-sent':\n return <PostMessageSent closePopup={props.closePopup} />;\n case 'main':\n return (\n <PluginShareSettings\n shareLink={shareLink.data}\n analyticsOptions={ShareViewHelper.getAnalyticsOptions(props.entityType)}\n onClickCancel={props.closePopup}\n onClickEmbed={onClickEmbed}\n videoSize={videoSize}\n setVideoSize={setVideoSize}\n videoSizes={videoSizes}\n autoplay={autoplay}\n setAutoplay={setAutoplay}\n privacy={privacy.data}\n entityType={props.entityType}\n hasStudentExp={hasPermissions(PermissionName.StudentExperience)}\n entity={entity.data}\n yearGroups={yearGroups.data}\n shareOverrideRestrictions={shareOverrideRestrictions}\n />\n );\n case 'smart-embed-main':\n return (\n <SmartEmbedConfirmation\n entity={entity.data as VideoTypes}\n closePopup={props.closePopup}\n embed={onClickSmartEmbed}\n />\n );\n }\n })()}\n </Popup>\n );\n}"],"names":["namespace","EmbedSize","props","autoplay","setAutoplay","videoSize","setVideoSize","videoSizes","className","length","phrase","id","variant","label","map","size","key","width","height","onClick","checked","onChange","getPhrase","LinkExpiry","formikProps","htmlFor","title","disable","passwordProtectLink","spanHack","trigger","setFieldValue","values","linkExpireDate","on","disabled","showStateWhenDisabled","LanguageService","SetPasswordInput","revealPassword","setRevealPassword","errorMsg","errors","password","value","e","canEdit","target","type","placeholder","readOnly","Form","DivButton","SvgContainer","svgName","tooltipPlacement","canReset","onReset","PASSWORD_PLACEHOLDER","LinkPassword","setPasswordProtectLink","shareLink","isPasswordProtected","readonlyPassword","setReadonlyPassword","Text","ToggleSwitch","LINK_EXPIRY_TIME","getLinkExpiryDate","shouldExpire","date","Date","setDate","getDate","toISOString","ShareLinkSettingsValidationSchema","shape","removePassword","resourceId","nullable","test","name","exclusive","params","message","val","FormWrapper","castInitialValues","castValuesOnSubmit","initialValues","onSubmit","formattedInitialValues","validationSchema","cast","omitChildValues","child","Object","keys","forEach","hasOwnProperty","omitNullInitialValues","initialStatus","allowInitialSubmit","enableReinitialize","setSubmitting","resetForm","setFieldError","formattedData","options","reset","entries","children","f","useFormikContextWrapper","defaultProps","VideoItemTitle","canNavigate","video","analyticsData","analyticsOptions","actionType","descriptor","textClassName","linkClassName","appLink","yearGroups","EmbedUnpublishedInteractiveError","externalLink","text","this","buttons","success","DialogError","SmartEmbedConfirmation","VideoThumbnail","entity","imageOptions","textPosition","ThumbnailTextPosition","preload","VideoSubText","PopupButtons","closePopup","embed","PluginShareSettingsForm","hasPermissions","usePermissions","sizeSelector","usePluginHelper","hasAdvanced","showAdvanced","setShowAdvanced","shareOverrideRestrictions","PermissionName","Button","onClickCancel","isSubmitting","Spinner","as","animation","role","PluginShareSettings","overrideRestrictions","onClickEmbed","privacy","entityType","hasStudentExp","PostMessageSent","singleSelectMode","alt","src","ImageUrls","style","maxWidth","PopupLoadingSpinner","PluginShareView","dispatch","alerts","useSettings","isLoadingSettings","smartEmbed","isSmartEmbed","isConsumer","config","ConfigRequests","currentUser","UserRequests","ShareViewHelper","entityId","data","ShareRequests","isAuthenticated","CustomerRequests","customerId","EmbedHelper","screen","setScreen","postMessage","updatedShareLink","primaryUrl","AnalyticsHelper","eventVersion","onClickSmartEmbed","hasCompleted","MasterTypeHelper","MasterType","status","CurationStatus","interactiveUrl","application","action","args","TextHelper","loaded","Popup","showLoadingSpinner"],"sourceRoot":""}
@@ -1,2 +1,2 @@
1
- "use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[5591],{94644:(e,t,r)=>{r.d(t,{r:()=>u});var n=r(50242),a=r(81886),i=r(67058),c=r(14553),o=r(49267),s=r(49075),l={notFound:i.d,forbidden:{rating:c.q,yearLevel:c.q,region:o.a,privacy:c.q},badRequest:s._};function u(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(e){var i;i="number"==typeof e?e:e.status;var c=Object.assign(Object.assign({},l),t);i&&a.Q.Ry.isStatusCodeError(i)&&(i!==n.o.NotFound?i!==n.o.Forbidden?r.badRequest||a.Q.Ry.throw(new c.badRequest):r.forbidden||a.Q.Ry.throw(new c.forbidden.privacy):r.notFound||a.Q.Ry.throw(new c.notFound))}}},91286:(e,t,r)=>{r.d(t,{v:()=>c});var n=r(32735),a=r(94644);function i(e){return e.map((function(e){return e.statusCode})).join(":")}function c(e,t,r){var c=Array.isArray(e)?e:[e];(0,n.useEffect)((function(){c.forEach((function(e){(0,a.r)(e.statusCode,t,r)}))}),[i(c),t,r])}},84062:(e,t,r)=>{r.d(t,{M:()=>y});var n=r(32735),a=r(17082),i=r(65858),c=r(38647),o=r(16714),s=r(22902),l=r(31908),u=r(26492),d=r(78166),v=r(27638),m=r(22490),f=r(57245);function p(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r<t;r++)n[r]=e[r];return n}function y(e){var t,r,y=e.shareLink?i.LZ.PlaySharedInteractive:i.LZ.PlayInteractive,g=(t=n.useState(!0),r=2,function(e){if(Array.isArray(e))return e}(t)||function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var n,a,i,c,o=[],s=!0,l=!1;try{if(i=(r=r.call(e)).next,0===t){if(Object(r)!==r)return;s=!1}else for(;!(s=(n=i.call(r)).done)&&(o.push(n.value),o.length!==t);s=!0);}catch(e){l=!0,a=e}finally{try{if(!s&&null!=r.return&&(c=r.return(),Object(c)!==c))return}finally{if(l)throw a}}return o}}(t,r)||function(e,t){if(e){if("string"==typeof e)return p(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?p(e,t):void 0}}(t,r)||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.")}()),b=g[0],h=g[1],E=l.M.isVideoTypeArchived(e.interactive),I=n.useMemo((function(){return(0,a.oD)()}),[]),P=(0,v.u)(y),w=P.setFavourite,N=P.canFavourite,S=(0,s.T)().hasPermissions;return n.createElement("div",{className:"px-3"},E&&n.createElement(u.T,{typeId:e.interactive.typeId,hasStudentExperience:!0}),n.createElement("div",{className:"mb-3"},n.createElement(f._,{config:e.config,video:e.interactive,currentUser:e.currentUser,shareLink:e.shareLink,viewKey:e.viewKey,startTime:e.startTime,onShowSummary:function(e){h(!e)},summaryPortalNode:I})),n.createElement("div",null,b&&n.createElement("h1",{className:"h3 d-flex"},e.interactive.name,n.createElement(c.m,{tooltipPlacement:"right",className:"ps-1",video:e.interactive,yearGroups:e.yearGroups}))),n.createElement(a.t0,{node:I}),!S(o.C.StudentExperience)&&n.createElement(d.Z,{currentVideo:e.interactive,yearGroups:e.yearGroups,currentUser:e.currentUser,setFavourite:w,canFavourite:N,relatedVideos:e.relatedVideos,audiences:e.audiences,getVideoAppLink:function(t,r){var n;return m.W.getAppLink(t,Object.assign(Object.assign({},r),{context:e.queryParams.context,contextId:e.queryParams.contextId,playNext:e.queryParams.playNext,shareId:null===(n=e.shareLink)||void 0===n?void 0:n.id,moviesAndTv:e.queryParams.mtv}))},moviesAndTv:e.queryParams.mtv}))}},25758:(e,t,r)=>{r.d(t,{x:()=>M});var n=r(32735),a=r(17082),i=r(23481),c=r(28400),o=r(65858),s=r(83657),l=r(36848),u=r(83345),d=r(38647),v=r(11518),m=r(47862),f=r(10439),p=r(35429),y=r(5960),g=r(4594),b=r(58704),h=r(31908),E=r(47938),I=r(78166),P=r(14070),w=r(97291),N=r(10671),S=r(27638),x=r(22490),A=r(83914),C=r(83523),T=r(76177),j=r(35223),k=i.T.encloseNamespace("interactives.previewInteractive");function O(e){return n.createElement("div",{className:"alert text-dark bg-light-blue px-2 rounded d-flex flex-column flex-lg-row justify-content-between mb-3 align-items-center",role:"alert"},e.isArchived?n.createElement("div",{className:"d-flex align-items-center"},n.createElement(A.x,{svgName:j.vn.Archive,size:A.S.Standard,className:"me-2 svg-container"}),n.createElement("div",{className:"w-100"},n.createElement("p",{className:"fw-semibold mb-0"},k("archivedInfoTitle")),n.createElement("p",{className:"mb-1"},k("archivedInfo")))):n.createElement(u.x,{phrase:"alert"}),e.isPreviewPreventScrubbingEnabled&&n.createElement(T.u,{title:k("previewPreventScrubbingExplain"),trigger:"hover",spanHack:!0},n.createElement("div",{className:"d-flex mt-1 mt-lg-0"},n.createElement("div",{className:"me-2"},n.createElement(u.x,{phrase:"previewPreventScrubbing"})),n.createElement(C.Z,{on:e.isPreviewingPreventScrubbing,onClick:e.toggleStudentMode}))))}function V(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r<t;r++)n[r]=e[r];return n}var L="interactives.previewInteractive",q=i.T.encloseNamespace(L);function M(e){var t,r,i,A,C,T,j,k,M,F=e.shareId?o.LZ.PreviewSharedInteractive:o.LZ.PreviewInteractive,R=(0,p.g)(),_=(k=n.useState(!1),M=2,function(e){if(Array.isArray(e))return e}(k)||function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var n,a,i,c,o=[],s=!0,l=!1;try{if(i=(r=r.call(e)).next,0===t){if(Object(r)!==r)return;s=!1}else for(;!(s=(n=i.call(r)).done)&&(o.push(n.value),o.length!==t);s=!0);}catch(e){l=!0,a=e}finally{try{if(!s&&null!=r.return&&(c=r.return(),Object(c)!==c))return}finally{if(l)throw a}}return o}}(k,M)||function(e,t){if(e){if("string"==typeof e)return V(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?V(e,t):void 0}}(k,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.")}()),U=_[0],G=_[1],D=h.M.getCanBeConsumed(e.interactive).canConsume,Z=n.useMemo((function(){return(0,a.oD)()}),[]),$=(0,N._)({location:N.i.PlayPage,shareId:e.shareId}),Q=(0,S.u)(F),W=Q.setFavourite,z=Q.canFavourite;T=U,j=function(){var e,t,r;null===(r=null===(t=null===(e=R.playerRef)||void 0===e?void 0:e.current)||void 0===t?void 0:t.togglePreviewPreventScrubbing)||void 0===r||r.call(t)},n.useEffect((function(){j()}),[T]);var B,K,Y,H,X=(B=e.interactive)._parentClip||B._parentVideo;h.M.isClip(X)?(K=null===(r=null===(t=X.interactives)||void 0===t?void 0:t.data)||void 0===r?void 0:r.filter((function(t){return t.id.toString()!==e.interactive.id.toString()})),Y=X.name,H={application:w.O.CLIPS,action:P.e.Clips.PLAY_CLIP,args:[X.id,c.m.slugify(X.name)]}):(K=null===(A=null===(i=X.interactives)||void 0===i?void 0:i.data)||void 0===A?void 0:A.filter((function(t){return t.id.toString()!==e.interactive.id.toString()})),Y=X.name,H={application:w.O.VIDEOS,action:P.e.Videos.PLAY_VIDEO,args:[X.id,c.m.slugify(X.name)]});var J=e.interactive.status===y.X.Draft;return n.createElement(u.D.Provider,{value:L},n.createElement("div",{className:"px-4"},n.createElement(E.W,{restrictions:e.interactive._restrictions,yearGroups:e.yearGroups,objectId:e.interactive.id,objectTypeId:g.E.Interactive,canManageVideoAccess:e.canManageVideoAccess}),n.createElement(O,{isPreviewPreventScrubbingEnabled:e.isPreviewPreventScrubbingEnabled,isPreviewingPreventScrubbing:U,toggleStudentMode:function(){G(!U)},isArchived:h.M.isVideoTypeArchived(e.interactive)}),n.createElement("div",{className:"mb-3"},D&&n.createElement(f.r,{key:e.interactive.id,objectId:e.interactive.id,objectTypeId:e.interactive.typeId,shareId:e.shareId,startTime:null!==(C=e.queryParams.t)&&void 0!==C?C:e.queryParams.startTime,mode:"default",location:"play-page"})),n.createElement("div",{className:"d-flex justify-content-between align-items-center"},n.createElement("div",{className:"inline-block w-100"},n.createElement("div",{className:"ms-2 float-end"},n.createElement(s.e,{actions:$.getVideoActions(e.interactive),actionsDropdownClassName:"btn btn-outline-dark",fetchMore:function(){return $.fetchMoreActions(e.interactive)}})),n.createElement("h1",{className:"h3 mb-2"},J&&n.createElement("div",{className:"badge draft-badge me-2 align-bottom flex-shrink-0 h-auto lh-base"},n.createElement(u.x,{phrase:"draft"})),e.interactive.name,n.createElement(d.m,{tooltipPlacement:"right",className:"ps-1",video:e.interactive,yearGroups:e.yearGroups})),h.M.canViewOriginalVideo(e.interactive)&&n.createElement("div",{className:"mb-1 me-3 clamp-1"},n.createElement(u.x,{phrase:"viewOriginal"})," ",n.createElement(l.F,{appLink:H,className:"text-info"},Y)))),e.interactive.description&&n.createElement("p",null,e.interactive.description),n.createElement("div",{className:"mb-3"},n.createElement(a.t0,{node:Z})),!!(null==K?void 0:K.length)&&n.createElement("div",{className:"pb-3"},n.createElement(v.kM,{name:q("otherInteractives",{count:K.length}),contents:b.z.Interactives,collection:K,prefetched:!0,getChildAppLink:function(e){return{application:w.O.INTERACTIVES,action:P.e.Interactives.VIEW_INTERACTIVE,args:[e.id,c.m.slugify(e.name)]}},childComponent:m.K,extraChildComponentProps:{video:X,questionsAppLink:{application:w.O.INTERACTIVES,action:P.e.Interactives.PREVIEW_QUESTIONS},imageCdnUrl:e.config.imageCdnUrl},analyticsData:{widgetId:"interactives"}})),n.createElement(I.Z,{currentVideo:e.interactive,yearGroups:e.yearGroups,setFavourite:W,canFavourite:z,currentUser:e.currentUser,audiences:e.audiences,relatedVideos:e.relatedVideos,getVideoAppLink:function(t,r){return x.W.getAppLink(t,Object.assign(Object.assign({},r),{context:e.queryParams.context,contextId:e.queryParams.contextId,playNext:e.queryParams.playNext,shareId:e.shareId,moviesAndTv:e.queryParams.mtv}))},moviesAndTv:e.queryParams.mtv})))}},44110:(e,t,r)=>{r.d(t,{i:()=>c});var n=r(20354),a=r(89454),i=r(86698),c=function(){var e=(0,i.y)({redirectOnError:!0}).activePresentation;return n.a.useBasicFetch(!!e&&a.O.presentationAudiences(e.id))}},53073:(e,t,r)=>{r.d(t,{f:()=>l});var n=r(20354),a=r(16714),i=r(12754),c=r(31949),o=r(22902),s=r(15311);function l(){var e=(0,o.T)().hasPermissions,t=(0,s.r)().hasProduct,r=n.a.useBasicFetch(c.N.currentUser());return!e(a.C.StudentExperience)&&t(i.x.Primary)&&r.data.isAuthenticated}},68050:(e,t,r)=>{r.d(t,{Z:()=>l});var n=r(95685),a=r.n(n),i=r(32735),c=r(46304),o=r(74512);const s=i.forwardRef((({bsPrefix:e,className:t,as:r="div",...n},i)=>{const s=(0,c.vE)(e,"row"),l=(0,c.pi)(),u=(0,c.zG)(),d=`${s}-cols`,v=[];return l.forEach((e=>{const t=n[e];let r;delete n[e],null!=t&&"object"==typeof t?({cols:r}=t):r=t;const a=e!==u?`-${e}`:"";null!=r&&v.push(`${d}${a}-${r}`)})),(0,o.jsx)(r,{ref:i,...n,className:a()(t,s,...v)})}));s.displayName="Row";const l=s}}]);
2
- //# sourceMappingURL=5591-a4850980ea-lite.chunk.js.map
1
+ "use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[5591],{94644:(e,t,r)=>{r.d(t,{r:()=>u});var n=r(50242),a=r(81886),i=r(67058),c=r(14553),o=r(49267),s=r(49075),l={notFound:i.d,forbidden:{rating:c.q,yearLevel:c.q,region:o.a,privacy:c.q},badRequest:s._};function u(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(e){var i;i="number"==typeof e?e:e.status;var c=Object.assign(Object.assign({},l),t);i&&a.Q.Ry.isStatusCodeError(i)&&(i!==n.o.NotFound?i!==n.o.Forbidden?r.badRequest||a.Q.Ry.throw(new c.badRequest):r.forbidden||a.Q.Ry.throw(new c.forbidden.privacy):r.notFound||a.Q.Ry.throw(new c.notFound))}}},91286:(e,t,r)=>{r.d(t,{v:()=>c});var n=r(32735),a=r(94644);function i(e){return e.map((function(e){return e.statusCode})).join(":")}function c(e,t,r){var c=Array.isArray(e)?e:[e];(0,n.useEffect)((function(){c.forEach((function(e){(0,a.r)(e.statusCode,t,r)}))}),[i(c),t,r])}},84062:(e,t,r)=>{r.d(t,{M:()=>y});var n=r(32735),a=r(17082),i=r(65858),c=r(38647),o=r(16714),s=r(22902),l=r(31908),u=r(26492),d=r(78166),v=r(27638),m=r(22490),f=r(57245);function p(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r<t;r++)n[r]=e[r];return n}function y(e){var t,r,y=e.shareLink?i.LZ.PlaySharedInteractive:i.LZ.PlayInteractive,g=(t=n.useState(!0),r=2,function(e){if(Array.isArray(e))return e}(t)||function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var n,a,i,c,o=[],s=!0,l=!1;try{if(i=(r=r.call(e)).next,0===t){if(Object(r)!==r)return;s=!1}else for(;!(s=(n=i.call(r)).done)&&(o.push(n.value),o.length!==t);s=!0);}catch(e){l=!0,a=e}finally{try{if(!s&&null!=r.return&&(c=r.return(),Object(c)!==c))return}finally{if(l)throw a}}return o}}(t,r)||function(e,t){if(e){if("string"==typeof e)return p(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?p(e,t):void 0}}(t,r)||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.")}()),b=g[0],h=g[1],E=l.M.isVideoTypeArchived(e.interactive),I=n.useMemo((function(){return(0,a.oD)()}),[]),P=(0,v.u)(y),w=P.setFavourite,N=P.canFavourite,S=(0,s.T)().hasPermissions;return n.createElement("div",{className:"px-3"},E&&n.createElement(u.T,{typeId:e.interactive.typeId,hasStudentExperience:!0}),n.createElement("div",{className:"mb-3"},n.createElement(f._,{config:e.config,video:e.interactive,currentUser:e.currentUser,shareLink:e.shareLink,viewKey:e.viewKey,startTime:e.startTime,onShowSummary:function(e){h(!e)},summaryPortalNode:I})),n.createElement("div",null,b&&n.createElement("h1",{className:"h3 d-flex"},e.interactive.name,n.createElement(c.m,{tooltipPlacement:"right",className:"ps-1",video:e.interactive,yearGroups:e.yearGroups}))),n.createElement(a.t0,{node:I}),!S(o.C.StudentExperience)&&n.createElement(d.Z,{currentVideo:e.interactive,yearGroups:e.yearGroups,currentUser:e.currentUser,setFavourite:w,canFavourite:N,relatedVideos:e.relatedVideos,audiences:e.audiences,getVideoAppLink:function(t,r){var n;return m.W.getAppLink(t,Object.assign(Object.assign({},r),{context:e.queryParams.context,contextId:e.queryParams.contextId,playNext:e.queryParams.playNext,shareId:null===(n=e.shareLink)||void 0===n?void 0:n.id,moviesAndTv:e.queryParams.mtv}))},moviesAndTv:e.queryParams.mtv}))}},25758:(e,t,r)=>{r.d(t,{x:()=>F});var n=r(32735),a=r(17082),i=r(23481),c=r(28400),o=r(65858),s=r(83657),l=r(36848),u=r(83345),d=r(38647),v=r(11518),m=r(47862),f=r(10439),p=r(35429),y=r(5960),g=r(4594),b=r(58704),h=r(31908),E=r(47938),I=r(78166),P=r(14070),w=r(97291),N=r(10671),S=r(27638),x=r(22490),A=r(83914),C=r(83523),T=r(76177),k=r(35223),j=i.T.encloseNamespace("interactives.previewInteractive");function O(e){return n.createElement("div",{className:"alert text-dark bg-light-blue px-2 rounded d-flex flex-column flex-lg-row justify-content-between mb-3 align-items-center",role:"alert"},e.isArchived?n.createElement("div",{className:"d-flex align-items-center"},n.createElement(A.x,{svgName:k.vn.Archive,size:A.S.Standard,className:"me-2 svg-container"}),n.createElement("div",{className:"w-100"},n.createElement("p",{className:"fw-semibold mb-0"},j("archivedInfoTitle")),n.createElement("p",{className:"mb-1"},j("archivedInfo")))):n.createElement(u.x,{phrase:"alert"}),e.isPreviewPreventScrubbingEnabled&&n.createElement(T.u,{title:j("previewPreventScrubbingExplain"),trigger:"hover",spanHack:!0},n.createElement("div",{className:"d-flex mt-1 mt-lg-0"},n.createElement("div",{className:"me-2"},n.createElement(u.x,{phrase:"previewPreventScrubbing"})),n.createElement(C.Z,{on:e.isPreviewingPreventScrubbing,onClick:e.toggleStudentMode}))))}function V(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r<t;r++)n[r]=e[r];return n}var L="interactives.previewInteractive",q=i.T.encloseNamespace(L);function F(e){var t,r,i,A,C,T,k,j,F,M=e.shareId?o.LZ.PreviewSharedInteractive:o.LZ.PreviewInteractive,R=(0,p.g)(),_=(j=n.useState(!1),F=2,function(e){if(Array.isArray(e))return e}(j)||function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var n,a,i,c,o=[],s=!0,l=!1;try{if(i=(r=r.call(e)).next,0===t){if(Object(r)!==r)return;s=!1}else for(;!(s=(n=i.call(r)).done)&&(o.push(n.value),o.length!==t);s=!0);}catch(e){l=!0,a=e}finally{try{if(!s&&null!=r.return&&(c=r.return(),Object(c)!==c))return}finally{if(l)throw a}}return o}}(j,F)||function(e,t){if(e){if("string"==typeof e)return V(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?V(e,t):void 0}}(j,F)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),U=_[0],G=_[1],D=h.M.getCanBeConsumed(e.interactive).canConsume,Z=n.useMemo((function(){return(0,a.oD)()}),[]),$=(0,N._)({location:N.i.PlayPage,shareId:e.shareId}),Q=(0,S.u)(M),W=Q.setFavourite,z=Q.canFavourite;T=U,k=function(){var e,t,r;null===(r=null===(t=null===(e=R.playerRef)||void 0===e?void 0:e.current)||void 0===t?void 0:t.togglePreviewPreventScrubbing)||void 0===r||r.call(t)},n.useEffect((function(){k()}),[T]);var B,K,Y,H,X=(B=e.interactive)._parentClip||B._parentVideo;h.M.isClip(X)?(K=null===(r=null===(t=X.interactives)||void 0===t?void 0:t.data)||void 0===r?void 0:r.filter((function(t){return t.id.toString()!==e.interactive.id.toString()})),Y=X.name,H={application:w.O.CLIPS,action:P.e.Clips.PLAY_CLIP,args:[X.id,c.m.slugify(X.name)]}):(K=null===(A=null===(i=X.interactives)||void 0===i?void 0:i.data)||void 0===A?void 0:A.filter((function(t){return t.id.toString()!==e.interactive.id.toString()})),Y=X.name,H={application:w.O.VIDEOS,action:P.e.Videos.PLAY_VIDEO,args:[X.id,c.m.slugify(X.name)]});var J=e.interactive.status===y.X.Draft;return n.createElement(u.D.Provider,{value:L},n.createElement("div",{className:"px-4"},n.createElement(E.W,{restrictions:e.interactive._restrictions,yearGroups:e.yearGroups,objectId:e.interactive.id,objectTypeId:g.E.Interactive,canManageVideoAccess:e.canManageVideoAccess}),n.createElement(O,{isPreviewPreventScrubbingEnabled:e.isPreviewPreventScrubbingEnabled,isPreviewingPreventScrubbing:U,toggleStudentMode:function(){G(!U)},isArchived:h.M.isVideoTypeArchived(e.interactive)}),n.createElement("div",{className:"mb-3"},D&&n.createElement(f.r,{key:e.interactive.id,objectId:e.interactive.id,objectTypeId:e.interactive.typeId,shareId:e.shareId,startTime:null!==(C=e.queryParams.t)&&void 0!==C?C:e.queryParams.startTime,mode:"default",location:"play-page"})),n.createElement("div",{className:"d-flex justify-content-between align-items-center"},n.createElement("div",{className:"inline-block w-100"},n.createElement("div",{className:"ms-2 float-end"},n.createElement(s.e,{actions:$.getVideoActions(e.interactive),actionsDropdownClassName:"btn btn-outline-dark",fetchMore:function(){return $.fetchMoreActions(e.interactive)}})),n.createElement("h1",{className:"h3 mb-2"},J&&n.createElement("div",{className:"badge draft-badge me-2 align-bottom flex-shrink-0 h-auto lh-base"},n.createElement(u.x,{phrase:"draft"})),e.interactive.name,n.createElement(d.m,{tooltipPlacement:"right",className:"ps-1",video:e.interactive,yearGroups:e.yearGroups})),h.M.canViewOriginalVideo(e.interactive)&&n.createElement("div",{className:"mb-1 me-3 clamp-1"},n.createElement(u.x,{phrase:"viewOriginal"})," ",n.createElement(l.F,{appLink:H,className:"text-info"},Y)))),e.interactive.description&&n.createElement("p",null,e.interactive.description),n.createElement("div",{className:"mb-3"},n.createElement(a.t0,{node:Z})),!!(null==K?void 0:K.length)&&n.createElement("div",{className:"pb-3"},n.createElement(v.kM,{name:q("otherInteractives",{count:K.length}),contents:b.z.Interactives,collection:K,prefetched:!0,getChildAppLink:function(e){return{application:w.O.INTERACTIVES,action:P.e.Interactives.VIEW_INTERACTIVE,args:[e.id,c.m.slugify(e.name)]}},childComponent:m.K,extraChildComponentProps:{video:X,questionsAppLink:{application:w.O.INTERACTIVES,action:P.e.Interactives.PREVIEW_QUESTIONS},imageCdnUrl:e.config.imageCdnUrl},analyticsData:{widgetId:"interactives"}})),n.createElement(I.Z,{currentVideo:e.interactive,yearGroups:e.yearGroups,setFavourite:W,canFavourite:z,currentUser:e.currentUser,audiences:e.audiences,relatedVideos:e.relatedVideos,getVideoAppLink:function(t,r){return x.W.getAppLink(t,Object.assign(Object.assign({},r),{context:e.queryParams.context,contextId:e.queryParams.contextId,playNext:e.queryParams.playNext,shareId:e.shareId,moviesAndTv:e.queryParams.mtv}))},moviesAndTv:e.queryParams.mtv})))}},44110:(e,t,r)=>{r.d(t,{i:()=>c});var n=r(20354),a=r(89454),i=r(86698),c=function(){var e=(0,i.y)({redirectOnError:!0}),t=e.activePresentation,r=e.getFallbackPresentation,c=t||r();return n.a.useBasicFetch(!!c&&a.O.presentationAudiences(c.id))}},53073:(e,t,r)=>{r.d(t,{f:()=>l});var n=r(20354),a=r(16714),i=r(12754),c=r(31949),o=r(22902),s=r(15311);function l(){var e=(0,o.T)().hasPermissions,t=(0,s.r)().hasProduct,r=n.a.useBasicFetch(c.N.currentUser());return!e(a.C.StudentExperience)&&t(i.x.Primary)&&r.data.isAuthenticated}},68050:(e,t,r)=>{r.d(t,{Z:()=>l});var n=r(95685),a=r.n(n),i=r(32735),c=r(46304),o=r(74512);const s=i.forwardRef((({bsPrefix:e,className:t,as:r="div",...n},i)=>{const s=(0,c.vE)(e,"row"),l=(0,c.pi)(),u=(0,c.zG)(),d=`${s}-cols`,v=[];return l.forEach((e=>{const t=n[e];let r;delete n[e],null!=t&&"object"==typeof t?({cols:r}=t):r=t;const a=e!==u?`-${e}`:"";null!=r&&v.push(`${d}${a}-${r}`)})),(0,o.jsx)(r,{ref:i,...n,className:a()(t,s,...v)})}));s.displayName="Row";const l=s}}]);
2
+ //# sourceMappingURL=5591-90c4fa0949-lite.chunk.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scripts/5591-90c4fa0949-lite.chunk.js","mappings":"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","sources":["file:///app/packages/libs/shared/src/errors/handlers/HttpErrorHandlers.ts","file:///app/packages/libs/shared/src/hooks/UseHandleObjectError.ts","file:///app/packages/projects/lite/src/apps/interactives/components/play-interactive/PlayInteractive.tsx","file:///app/packages/projects/lite/src/apps/interactives/components/preview-interactive/InteractiveAlertBanner.tsx","file:///app/packages/projects/lite/src/apps/interactives/components/preview-interactive/PreviewInteractive.tsx","file:///app/packages/projects/lite/src/apps/interactives/hooks/interactiveHooks.tsx","file:///app/packages/projects/lite/src/shared/hooks/usePresentationAudiences.ts","file:///app/packages/projects/lite/src/shared/hooks/useShouldPreviewInteractive.ts","file:///app/node_modules/react-bootstrap/esm/Row.js"],"sourcesContent":["import { BaseError } from 'libs/common/backbone/core/BaseError';\nimport { HttpStatus } from 'libs/common/backbone/enums/HttpStatus';\nimport { Xhr } from 'libs/common/backbone/interfaces';\nimport { Core } from 'libs/common/core';\n\nimport { NotFoundError } from 'libs/shared/errors/general/not-found/NotFoundError';\nimport { PrivateResourceError } from 'libs/shared/errors/general/private-resource/PrivateResourceError';\nimport { RegionLockedResourceError } from 'libs/shared/errors/general/region-locked-resource/RegionLockedResourceError';\nimport { UnspecifiedError } from 'libs/shared/errors/general/unspecified-error/UnspecifiedError';\nimport { VideoTypes } from 'libs/shared/interfaces';\n\nexport interface HttpErrorMap {\n notFound?: new () => BaseError;\n forbidden?: {\n rating?: new (description: string) => BaseError;\n yearLevel?: new (description: string) => BaseError;\n region?: new () => BaseError;\n privacy?: new (video?: VideoTypes) => BaseError;\n };\n badRequest?: new () => BaseError;\n}\n\nexport type IgnoreHttpErrorMap = {\n [key in keyof HttpErrorMap]: boolean;\n};\n\nconst defaultErrors: HttpErrorMap = {\n notFound: NotFoundError,\n forbidden: {\n rating: PrivateResourceError,\n yearLevel: PrivateResourceError,\n region: RegionLockedResourceError,\n privacy: PrivateResourceError\n },\n badRequest: UnspecifiedError\n};\n\nexport function handleHttpError(\n info: HttpStatus | Xhr,\n customErrorMap: HttpErrorMap = {},\n /**\n * Prevent certain errors in the errorMap from being thrown\n * so that you may implement your own handler\n */\n ignoreMap: IgnoreHttpErrorMap = {}\n): void {\n if (!info)\n return;\n\n let statusCode: HttpStatus;\n\n if (typeof(info) === 'number') {\n statusCode = info;\n } else {\n statusCode = info.status;\n }\n\n const errorMap = {\n ...defaultErrors,\n ...customErrorMap\n };\n\n if (!statusCode)\n return;\n\n if (!Core.ErrorHelper.isStatusCodeError(statusCode))\n return;\n\n if (statusCode === HttpStatus.NotFound) {\n if (!ignoreMap.notFound)\n Core.ErrorHelper.throw(new errorMap.notFound());\n return;\n }\n\n if (statusCode === HttpStatus.Forbidden) {\n /**\n * TODO: Work out how to go about handling all forbidden errors, such as region locking, year levels,\n * ratings, and privacy.\n */\n if (!ignoreMap.forbidden)\n Core.ErrorHelper.throw(new errorMap.forbidden.privacy());\n return;\n }\n\n if (!ignoreMap.badRequest)\n Core.ErrorHelper.throw(new errorMap.badRequest());\n}\n\nexport function handleXhrError(xhr: Xhr, customErrorMap?: HttpErrorMap): void {\n handleHttpError(xhr.status, customErrorMap);\n}","import { useEffect } from 'react';\n\nimport { Flight } from 'libs/common/flight';\n\nimport { handleHttpError, HttpErrorMap, IgnoreHttpErrorMap } from 'libs/shared/errors/handlers/HttpErrorHandlers';\n\nfunction generateCacheKey(flightObjs: Array<Flight.Response<any>>): string {\n return flightObjs.map(obj => obj.statusCode).join(':');\n}\n\n// TODO: Change this to just `useHandleHttpError` and only accept a status code.\nexport function useHandleObjectError(\n _flightObjs: Flight.Response<any> | Array<Flight.Response<any>>,\n customErrors?: HttpErrorMap,\n ignoreErrors?: IgnoreHttpErrorMap\n): void {\n const flightObjs = Array.isArray(_flightObjs) ? _flightObjs : [_flightObjs];\n\n useEffect(() => {\n flightObjs.forEach(obj => {\n handleHttpError(obj.statusCode, customErrors, ignoreErrors);\n });\n }, [ generateCacheKey(flightObjs), customErrors, ignoreErrors ]);\n}","import React from 'react';\nimport { createHtmlPortalNode, OutPortal } from 'react-reverse-portal';\n\nimport { LocationContext } from 'libs/analytics/interfaces';\n\nimport { CheckMarkStatus } from 'libs/shared/components/check-mark-button/CheckMarkButton';\nimport { RestrictionPadlock } from 'libs/shared/components/video-list/components/restriction-padlock/RestrictionPadlock';\nimport { PermissionName } from 'libs/shared/enums/PermissionName';\nimport { usePermissions } from 'libs/shared/hooks/usePermissions';\nimport { Config, CurrentUser, InteractiveMetadata, PlayerViewKey, PresentationAudience, UnionShareObject, YearGroup } from 'libs/shared/interfaces';\nimport { PlayViewQueryParams } from 'libs/shared/interfaces/query-params/PlayViewQueryParams';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\nimport { ArchivedBanner } from 'shared/components/play-page/ArchivedBanner';\nimport { RelatedVideos } from 'shared/components/related-videos/RelatedVideos';\nimport { RelatedVideosHash } from 'shared/hooks/useGetRelatedVideos';\nimport { useLiteFavourites } from 'shared/hooks/useLiteFavourites';\nimport { VideoAppLinkHelper } from 'shared/utils/VideoAppLinkHelper';\nimport { LitePlayerView } from 'shared/views/lite-player/LitePlayerView';\n\ninterface PlayInteractiveProps {\n interactive: InteractiveMetadata;\n yearGroups: YearGroup[];\n currentUser: CurrentUser;\n config: Config;\n audiences: PresentationAudience[];\n queryParams: PlayViewQueryParams;\n viewKey: PlayerViewKey;\n startTime?: number;\n endTime?: number;\n\n // Share view only\n shareLink?: UnionShareObject;\n sharerInstanceRegion?: string;\n checkMarkStatus?: CheckMarkStatus;\n relatedVideos: RelatedVideosHash;\n}\n\nexport function PlayInteractive(props: PlayInteractiveProps): JSX.Element {\n const locationContext = props.shareLink ?\n LocationContext.PlaySharedInteractive :\n LocationContext.PlayInteractive;\n\n const [ showHeading, setShowHeading ] = React.useState(true);\n\n const isArchived = VideoHelper.isVideoTypeArchived(props.interactive);\n\n const summaryPortalNode = React.useMemo(() => createHtmlPortalNode(), []);\n\n const { setFavourite, canFavourite } = useLiteFavourites(locationContext);\n const { hasPermissions } = usePermissions();\n\n function onShowSummary(showing: boolean): void {\n setShowHeading(!showing);\n }\n\n return (\n <div className='px-3'>\n {isArchived && <ArchivedBanner typeId={props.interactive.typeId} hasStudentExperience />}\n\n <div className='mb-3'>\n <LitePlayerView\n config={props.config}\n video={props.interactive}\n currentUser={props.currentUser}\n shareLink={props.shareLink}\n viewKey={props.viewKey}\n startTime={props.startTime}\n onShowSummary={onShowSummary}\n summaryPortalNode={summaryPortalNode}\n />\n </div>\n {/* This wrapping div is here because react seems to not want to play nice\n with adding or removing a node just ahead of an OutPortal */}\n <div>\n {showHeading &&\n <h1 className='h3 d-flex'>\n {props.interactive.name}\n <RestrictionPadlock\n tooltipPlacement='right'\n className='ps-1'\n video={props.interactive}\n yearGroups={props.yearGroups}\n />\n </h1>\n }\n </div>\n <OutPortal node={summaryPortalNode}></OutPortal>\n\n {!hasPermissions(PermissionName.StudentExperience) && (\n <RelatedVideos\n currentVideo={props.interactive}\n yearGroups={props.yearGroups}\n currentUser={props.currentUser}\n setFavourite={setFavourite}\n canFavourite={canFavourite}\n relatedVideos={props.relatedVideos}\n audiences={props.audiences}\n getVideoAppLink={(v, opts) => VideoAppLinkHelper.getAppLink(v, {\n ...opts,\n context: props.queryParams.context,\n contextId: props.queryParams.contextId,\n playNext: props.queryParams.playNext,\n shareId: props.shareLink?.id,\n moviesAndTv: props.queryParams.mtv\n })}\n moviesAndTv={props.queryParams.mtv}\n />\n )}\n </div>\n );\n}","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { SvgContainer, SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { ToggleSwitch } from 'libs/shared/components/toggle-switch/ToggleSwitch';\nimport { Tooltip } from 'libs/shared/components/tooltip/Tooltip';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nconst namespace = 'interactives.previewInteractive';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface InteractiveAlertBannerProps {\n isPreviewPreventScrubbingEnabled: boolean;\n isPreviewingPreventScrubbing: boolean;\n toggleStudentMode: () => void;\n isArchived: boolean;\n}\n\nexport function InteractiveAlertBanner(props: InteractiveAlertBannerProps): JSX.Element {\n return (\n <div className='alert text-dark bg-light-blue px-2 rounded d-flex flex-column flex-lg-row justify-content-between mb-3 align-items-center' role='alert'>\n {!props.isArchived ? <Text phrase='alert' /> : (\n <div className='d-flex align-items-center'>\n <SvgContainer\n svgName={cvSvgLibrary.Archive}\n size={SvgContainerSize.Standard}\n className='me-2 svg-container'\n />\n \n <div className='w-100'>\n <p className='fw-semibold mb-0'>{getPhrase('archivedInfoTitle')}</p>\n <p className='mb-1'>{getPhrase('archivedInfo')}</p>\n </div>\n </div>\n )}\n {props.isPreviewPreventScrubbingEnabled && (\n <Tooltip\n title={getPhrase('previewPreventScrubbingExplain')}\n trigger='hover'\n spanHack\n >\n <div className='d-flex mt-1 mt-lg-0'>\n <div className='me-2'><Text phrase='previewPreventScrubbing'/></div>\n <ToggleSwitch on={props.isPreviewingPreventScrubbing} onClick={props.toggleStudentMode} />\n </div>\n </Tooltip>\n )}\n </div>\n );\n}","import * as React from 'react';\nimport { createHtmlPortalNode, OutPortal } from 'react-reverse-portal';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Core } from 'libs/common/core';\nimport { TextHelper } from 'libs/common/react/utils/TextHelper';\n\nimport { LocationContext } from 'libs/analytics/interfaces';\n\nimport { Actions as ActionsComponent } from 'libs/shared/components/actions/Actions';\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { LanguageNamespaceContext, Text } from 'libs/shared/components/text/Text';\nimport { RestrictionPadlock } from 'libs/shared/components/video-list/components/restriction-padlock/RestrictionPadlock';\nimport { FixedWidget } from 'libs/shared/components/widgets/fixed-widget';\nimport { InteractiveWidgetItem, InteractiveWidgetItemProps } from 'libs/shared/components/widgets/items/interactive-widget-item/InteractiveWidgetItem';\nimport { GlobalPlayerConsumer } from 'libs/shared/context/player-context/components/GlobalPlayerConsumer';\nimport { usePlayerContext } from 'libs/shared/context/player-context/PlayerContext';\nimport { CurationStatus } from 'libs/shared/enums/CurationStatus';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { WidgetContents } from 'libs/shared/enums/WidgetContents';\nimport { Clip, Config, CurrentUser, Interactive, InteractiveMetadata, PresentationAudience, Video, YearGroup } from 'libs/shared/interfaces';\nimport { PlayViewQueryParams } from 'libs/shared/interfaces/query-params/PlayViewQueryParams';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\nimport { RestrictionBanner } from 'shared/components/play-page/RestrictionBanner';\nimport { RelatedVideos } from 'shared/components/related-videos/RelatedVideos';\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\nimport { useVideoActions, VideoActionsLocation } from 'shared/hooks/use-video-actions/useVideoActions';\nimport { RelatedVideosHash } from 'shared/hooks/useGetRelatedVideos';\nimport { useLiteFavourites } from 'shared/hooks/useLiteFavourites';\nimport { VideoAppLinkHelper } from 'shared/utils/VideoAppLinkHelper';\n\nimport { InteractiveAlertBanner } from 'apps/interactives/components/preview-interactive/InteractiveAlertBanner';\nimport { usePreviewPreventInteractive } from 'apps/interactives/hooks/interactiveHooks';\n\nconst namespace = 'interactives.previewInteractive';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nfunction getSourceVideo(interactive: InteractiveMetadata): Clip | Video {\n return interactive._parentClip || interactive._parentVideo;\n}\n\ninterface PreviewInteractiveProps {\n interactive: InteractiveMetadata;\n yearGroups: YearGroup[];\n config: Config;\n currentUser: CurrentUser;\n queryParams: PlayViewQueryParams;\n audiences: PresentationAudience[];\n isPreviewPreventScrubbingEnabled: boolean;\n relatedVideos: RelatedVideosHash;\n canManageVideoAccess: boolean;\n\n // Share view only\n shareId?: string;\n}\n\nexport function PreviewInteractive(props: PreviewInteractiveProps): JSX.Element {\n const locationContext = props.shareId ? LocationContext.PreviewSharedInteractive : LocationContext.PreviewInteractive;\n\n const playerContext = usePlayerContext();\n\n const [ isPreviewingPreventScrubbing, setIsPreviewingPreventScrubbing ] = React.useState(false);\n\n const { canConsume } = VideoHelper.getCanBeConsumed(props.interactive);\n\n const questionListPortalNode = React.useMemo(() => createHtmlPortalNode(), []);\n \n const videoActions = useVideoActions({\n location: VideoActionsLocation.PlayPage,\n shareId: props.shareId\n });\n\n const { setFavourite, canFavourite } = useLiteFavourites(locationContext);\n\n usePreviewPreventInteractive(isPreviewingPreventScrubbing, togglePreviewPreventScrubbing);\n\n function togglePreviewPreventScrubbing() {\n playerContext.playerRef?.current?.togglePreviewPreventScrubbing?.();\n }\n\n function toggleStudentMode() {\n setIsPreviewingPreventScrubbing(!isPreviewingPreventScrubbing);\n }\n\n const sourceVideo = getSourceVideo(props.interactive);\n\n let otherInteractives: InteractiveMetadata[];\n let backToName: string;\n let backAppLink: Core.AppLink;\n\n if (VideoHelper.isClip(sourceVideo)) {\n otherInteractives = sourceVideo.interactives?.data?.filter(i => {\n return i.id.toString() !== props.interactive.id.toString();\n });\n backToName = sourceVideo.name;\n backAppLink = {\n application: AppChannels.CLIPS,\n action: Actions.Clips.PLAY_CLIP,\n args: [ sourceVideo.id, TextHelper.slugify(sourceVideo.name) ]\n };\n } else {\n otherInteractives = sourceVideo.interactives?.data?.filter(i => {\n return i.id.toString() !== props.interactive.id.toString();\n });\n backToName = sourceVideo.name;\n backAppLink = {\n application: AppChannels.VIDEOS,\n action: Actions.Videos.PLAY_VIDEO,\n args: [ sourceVideo.id, TextHelper.slugify(sourceVideo.name) ]\n };\n }\n\n const isDraft = props.interactive.status === CurationStatus.Draft;\n\n return (\n <LanguageNamespaceContext.Provider value={namespace}>\n <div className='px-4'>\n\n <RestrictionBanner\n restrictions={props.interactive._restrictions}\n yearGroups={props.yearGroups}\n objectId={props.interactive.id}\n objectTypeId={MasterType.Interactive}\n canManageVideoAccess={props.canManageVideoAccess}\n />\n\n <InteractiveAlertBanner\n isPreviewPreventScrubbingEnabled={props.isPreviewPreventScrubbingEnabled}\n isPreviewingPreventScrubbing={isPreviewingPreventScrubbing}\n toggleStudentMode={toggleStudentMode}\n isArchived={VideoHelper.isVideoTypeArchived(props.interactive)}\n />\n\n <div className='mb-3'>\n {canConsume &&\n <GlobalPlayerConsumer\n key={props.interactive.id}\n objectId={props.interactive.id}\n objectTypeId={props.interactive.typeId}\n shareId={props.shareId}\n startTime={props.queryParams.t ?? props.queryParams.startTime}\n mode='default'\n location='play-page'\n />\n }\n </div>\n <div className='d-flex justify-content-between align-items-center'>\n <div className='inline-block w-100'>\n <div className='ms-2 float-end'>\n <ActionsComponent\n actions={videoActions.getVideoActions(props.interactive)}\n actionsDropdownClassName='btn btn-outline-dark'\n fetchMore={() => videoActions.fetchMoreActions(props.interactive)}\n />\n </div>\n\n <h1 className='h3 mb-2'>\n {isDraft && (\n <div className={`badge draft-badge me-2 align-bottom flex-shrink-0 h-auto lh-base`}>\n <Text phrase='draft' />\n </div>\n )}\n {props.interactive.name}\n <RestrictionPadlock\n tooltipPlacement='right'\n className='ps-1'\n video={props.interactive}\n yearGroups={props.yearGroups}\n />\n </h1>\n {VideoHelper.canViewOriginalVideo(props.interactive) &&\n <div className='mb-1 me-3 clamp-1'>\n <Text phrase='viewOriginal' />&nbsp;<AppLink appLink={backAppLink} className='text-info'>{backToName}</AppLink>\n </div>\n }\n </div>\n </div>\n\n {props.interactive.description &&\n <p>{props.interactive.description}</p>\n }\n\n <div className='mb-3'>\n <OutPortal node={questionListPortalNode}></OutPortal>\n </div>\n\n {!!otherInteractives?.length && (\n <div className='pb-3'>\n <FixedWidget<InteractiveWidgetItemProps>\n name={getPhrase('otherInteractives', { count: otherInteractives.length })}\n contents={WidgetContents.Interactives}\n collection={otherInteractives}\n prefetched\n getChildAppLink={(interactive: Interactive) => {\n return {\n application: AppChannels.INTERACTIVES,\n action: Actions.Interactives.VIEW_INTERACTIVE,\n args: [ interactive.id, TextHelper.slugify(interactive.name) ]\n };\n }}\n childComponent={InteractiveWidgetItem}\n extraChildComponentProps={{\n video: sourceVideo,\n questionsAppLink: {\n application: AppChannels.INTERACTIVES,\n action: Actions.Interactives.PREVIEW_QUESTIONS\n },\n imageCdnUrl: props.config.imageCdnUrl\n }}\n analyticsData={{ widgetId: 'interactives' }}\n />\n </div>\n )}\n\n <RelatedVideos\n currentVideo={props.interactive}\n yearGroups={props.yearGroups}\n setFavourite={setFavourite}\n canFavourite={canFavourite}\n currentUser={props.currentUser}\n audiences={props.audiences}\n relatedVideos={props.relatedVideos}\n getVideoAppLink={(v, opts) => VideoAppLinkHelper.getAppLink(v, {\n ...opts,\n context: props.queryParams.context,\n contextId: props.queryParams.contextId,\n playNext: props.queryParams.playNext,\n shareId: props.shareId,\n moviesAndTv: props.queryParams.mtv\n })}\n moviesAndTv={props.queryParams.mtv}\n />\n </div>\n </LanguageNamespaceContext.Provider>\n );\n}","import React from 'react';\n\nexport function usePreviewPreventInteractive(\n previewPreventInteractive: boolean,\n togglePreviewPreventInteractive: () => void\n): void {\n React.useEffect(() => {\n togglePreviewPreventInteractive();\n }, [previewPreventInteractive]);\n}","import { Flight } from 'libs/common/react/index';\n\nimport { AudienceRequests } from 'libs/shared/flight-requests/AudienceRequests';\nimport { PresentationAudience } from 'libs/shared/interfaces';\n\nimport { usePresentation } from 'shared/hooks/usePresentation';\n\nexport const usePresentationAudiences = () => {\n const { activePresentation, getFallbackPresentation } = usePresentation({ redirectOnError: true });\n\n const presentation = activePresentation || getFallbackPresentation();\n\n const audiences = Flight.useBasicFetch<PresentationAudience[]>(\n !!presentation &&\n AudienceRequests.presentationAudiences(presentation.id)\n );\n\n return audiences;\n};","import { Flight } from 'libs/common/flight';\n\nimport { PermissionName } from 'libs/shared/enums/PermissionName';\nimport { ProductId } from 'libs/shared/enums/ProductId';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { usePermissions } from 'libs/shared/hooks/usePermissions';\nimport { useProducts } from 'libs/shared/hooks/UseProducts';\nimport { CurrentUser } from 'libs/shared/interfaces';\n\nexport function useShouldPreviewInteractive() {\n const { hasPermissions } = usePermissions();\n const { hasProduct } = useProducts();\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n\n return !hasPermissions(PermissionName.StudentExperience) &&\n hasProduct(ProductId.Primary) &&\n currentUser.data.isAuthenticated;\n}","\"use client\";\n\nimport classNames from 'classnames';\nimport * as React from 'react';\nimport { useBootstrapPrefix, useBootstrapBreakpoints, useBootstrapMinBreakpoint } from './ThemeProvider';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst Row = /*#__PURE__*/React.forwardRef(({\n bsPrefix,\n className,\n // Need to define the default \"as\" during prop destructuring to be compatible with styled-components github.com/react-bootstrap/react-bootstrap/issues/3595\n as: Component = 'div',\n ...props\n}, ref) => {\n const decoratedBsPrefix = useBootstrapPrefix(bsPrefix, 'row');\n const breakpoints = useBootstrapBreakpoints();\n const minBreakpoint = useBootstrapMinBreakpoint();\n const sizePrefix = `${decoratedBsPrefix}-cols`;\n const classes = [];\n breakpoints.forEach(brkPoint => {\n const propValue = props[brkPoint];\n delete props[brkPoint];\n let cols;\n if (propValue != null && typeof propValue === 'object') {\n ({\n cols\n } = propValue);\n } else {\n cols = propValue;\n }\n const infix = brkPoint !== minBreakpoint ? `-${brkPoint}` : '';\n if (cols != null) classes.push(`${sizePrefix}${infix}-${cols}`);\n });\n return /*#__PURE__*/_jsx(Component, {\n ref: ref,\n ...props,\n className: classNames(className, decoratedBsPrefix, ...classes)\n });\n});\nRow.displayName = 'Row';\nexport default Row;"],"names":["defaultErrors","notFound","forbidden","rating","yearLevel","region","privacy","badRequest","handleHttpError","info","customErrorMap","ignoreMap","statusCode","status","errorMap","generateCacheKey","flightObjs","map","obj","join","useHandleObjectError","_flightObjs","customErrors","ignoreErrors","Array","isArray","useEffect","forEach","PlayInteractive","props","locationContext","shareLink","showHeading","setShowHeading","isArchived","interactive","summaryPortalNode","u","setFavourite","canFavourite","hasPermissions","className","typeId","hasStudentExperience","config","video","currentUser","viewKey","startTime","onShowSummary","showing","name","tooltipPlacement","yearGroups","node","currentVideo","relatedVideos","audiences","getVideoAppLink","v","opts","context","queryParams","contextId","playNext","shareId","id","moviesAndTv","mtv","getPhrase","LanguageService","InteractiveAlertBanner","role","SvgContainer","svgName","size","S","Text","phrase","isPreviewPreventScrubbingEnabled","Tooltip","title","trigger","spanHack","ToggleSwitch","on","isPreviewingPreventScrubbing","onClick","toggleStudentMode","PreviewInteractive","previewPreventInteractive","togglePreviewPreventInteractive","playerContext","setIsPreviewingPreventScrubbing","canConsume","VideoHelper","questionListPortalNode","videoActions","useVideoActions","location","useLiteFavourites","playerRef","current","togglePreviewPreventScrubbing","otherInteractives","backToName","backAppLink","sourceVideo","_parentClip","_parentVideo","interactives","data","filter","i","toString","application","action","args","TextHelper","isDraft","CurationStatus","value","RestrictionBanner","restrictions","_restrictions","objectId","objectTypeId","MasterType","canManageVideoAccess","GlobalPlayerConsumer","key","t","mode","Actions","actions","getVideoActions","actionsDropdownClassName","fetchMore","fetchMoreActions","RestrictionPadlock","AppLink","appLink","description","length","count","contents","WidgetContents","collection","prefetched","getChildAppLink","childComponent","InteractiveWidgetItem","extraChildComponentProps","questionsAppLink","imageCdnUrl","analyticsData","widgetId","RelatedVideos","VideoAppLinkHelper","usePresentationAudiences","redirectOnError","activePresentation","getFallbackPresentation","presentation","useShouldPreviewInteractive","hasProduct","isAuthenticated","Row","bsPrefix","as","Component","ref","decoratedBsPrefix","breakpoints","minBreakpoint","sizePrefix","classes","brkPoint","propValue","cols","infix","push","displayName"],"sourceRoot":""}