@clickview/lite 0.50.0-rc.1 → 0.50.0-rc.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (60) hide show
  1. package/dist/bundles.json +2 -2
  2. package/dist/css/{355-lite-7e76df6ab5.chunk.css → 355-lite-e474c8ddce.chunk.css} +1 -1
  3. package/dist/css/{7715-lite-671ee43c49.chunk.css → 7715-lite-25809cdd3d.chunk.css} +1 -1
  4. package/dist/css/{8139-lite-10c11c0722.chunk.css → 8139-lite-5511af77bf.chunk.css} +1 -1
  5. package/dist/css/{8960-lite-d45f2332e6.chunk.css → 8960-lite-a80ad92ea7.chunk.css} +1 -1
  6. package/dist/css/{9395-lite-01ed62af75.chunk.css → 9395-lite-e7ca0b1320.chunk.css} +1 -1
  7. package/dist/css/lite-app-f2595ac365.css +53 -0
  8. package/dist/languages/en.json +1 -1
  9. package/dist/scripts/{1285-086e83fddf-lite.chunk.js → 1285-f4b56a47c2-lite.chunk.js} +2 -2
  10. package/dist/scripts/{1285-086e83fddf-lite.chunk.js.map → 1285-f4b56a47c2-lite.chunk.js.map} +1 -1
  11. package/dist/scripts/{355-81c86415d9-lite.chunk.js → 355-eaf55dc95f-lite.chunk.js} +1 -1
  12. package/dist/scripts/{355-81c86415d9-lite.chunk.js.map → 355-eaf55dc95f-lite.chunk.js.map} +1 -1
  13. package/dist/scripts/{4395-2e9e72a400-lite.chunk.js → 4395-322f459cb0-lite.chunk.js} +2 -2
  14. package/dist/scripts/4395-322f459cb0-lite.chunk.js.map +1 -0
  15. package/dist/scripts/{5562-42375ce894-lite.chunk.js → 5562-09db6be3de-lite.chunk.js} +3 -3
  16. package/dist/scripts/{5562-42375ce894-lite.chunk.js.map → 5562-09db6be3de-lite.chunk.js.map} +1 -1
  17. package/dist/scripts/{6480-06435aaa46-lite.chunk.js → 6480-60a0ad2ff5-lite.chunk.js} +1 -1
  18. package/dist/scripts/{6480-06435aaa46-lite.chunk.js.map → 6480-60a0ad2ff5-lite.chunk.js.map} +1 -1
  19. package/dist/scripts/{679-a58b19729d-lite.chunk.js → 679-51a0b936e0-lite.chunk.js} +2 -2
  20. package/dist/scripts/{679-a58b19729d-lite.chunk.js.map → 679-51a0b936e0-lite.chunk.js.map} +1 -1
  21. package/dist/scripts/{6863-562ff82f45-lite.chunk.js → 6863-670092eaa5-lite.chunk.js} +1 -1
  22. package/dist/scripts/{6863-562ff82f45-lite.chunk.js.map → 6863-670092eaa5-lite.chunk.js.map} +1 -1
  23. package/dist/scripts/{6948-8c8d9131eb-lite.chunk.js → 6948-e7a16d8c0b-lite.chunk.js} +2 -2
  24. package/dist/scripts/{6948-8c8d9131eb-lite.chunk.js.map → 6948-e7a16d8c0b-lite.chunk.js.map} +1 -1
  25. package/dist/scripts/{7052-32d8266e82-lite.chunk.js → 7052-a4d79c9f20-lite.chunk.js} +3 -3
  26. package/dist/scripts/{7052-32d8266e82-lite.chunk.js.map → 7052-a4d79c9f20-lite.chunk.js.map} +1 -1
  27. package/dist/scripts/{7715-e5380d1440-lite.chunk.js → 7715-634be84dc5-lite.chunk.js} +2 -2
  28. package/dist/scripts/{7715-e5380d1440-lite.chunk.js.map → 7715-634be84dc5-lite.chunk.js.map} +1 -1
  29. package/dist/scripts/7855-04bc8e52e3-lite.chunk.js +2 -0
  30. package/dist/scripts/7855-04bc8e52e3-lite.chunk.js.map +1 -0
  31. package/dist/scripts/{8055-f4de552821-lite.chunk.js → 8055-a6d102b953-lite.chunk.js} +3 -3
  32. package/dist/scripts/{8055-f4de552821-lite.chunk.js.map → 8055-a6d102b953-lite.chunk.js.map} +1 -1
  33. package/dist/scripts/{8139-37635f8bcd-lite.chunk.js → 8139-2a36098eae-lite.chunk.js} +3 -3
  34. package/dist/scripts/{8139-37635f8bcd-lite.chunk.js.map → 8139-2a36098eae-lite.chunk.js.map} +1 -1
  35. package/dist/scripts/8243-e4baf0ae31-lite.chunk.js +2 -0
  36. package/dist/scripts/8243-e4baf0ae31-lite.chunk.js.map +1 -0
  37. package/dist/scripts/{8419-70c7a44baa-lite.chunk.js → 8419-510dc22a69-lite.chunk.js} +1 -1
  38. package/dist/scripts/{8419-70c7a44baa-lite.chunk.js.map → 8419-510dc22a69-lite.chunk.js.map} +1 -1
  39. package/dist/scripts/{9395-181720391d-lite.chunk.js → 9395-77dfcbad18-lite.chunk.js} +2 -2
  40. package/dist/scripts/{9395-181720391d-lite.chunk.js.map → 9395-77dfcbad18-lite.chunk.js.map} +1 -1
  41. package/dist/scripts/950-68255d3086-lite.chunk.js +2 -0
  42. package/dist/scripts/950-68255d3086-lite.chunk.js.map +1 -0
  43. package/dist/scripts/{bundle-be1688b50c.min.js → bundle-0187039e1a.min.js} +3 -3
  44. package/dist/scripts/bundle-0187039e1a.min.js.map +1 -0
  45. package/package.json +1 -1
  46. package/dist/css/lite-app-5b9f4761e1.css +0 -53
  47. package/dist/scripts/4395-2e9e72a400-lite.chunk.js.map +0 -1
  48. package/dist/scripts/7855-1c7a0adeab-lite.chunk.js +0 -2
  49. package/dist/scripts/7855-1c7a0adeab-lite.chunk.js.map +0 -1
  50. package/dist/scripts/8243-5d673b616d-lite.chunk.js +0 -2
  51. package/dist/scripts/8243-5d673b616d-lite.chunk.js.map +0 -1
  52. package/dist/scripts/950-4b9770bfe3-lite.chunk.js +0 -2
  53. package/dist/scripts/950-4b9770bfe3-lite.chunk.js.map +0 -1
  54. package/dist/scripts/bundle-be1688b50c.min.js.map +0 -1
  55. /package/dist/scripts/{5562-42375ce894-lite.chunk.js.LICENSE.txt → 5562-09db6be3de-lite.chunk.js.LICENSE.txt} +0 -0
  56. /package/dist/scripts/{7052-32d8266e82-lite.chunk.js.LICENSE.txt → 7052-a4d79c9f20-lite.chunk.js.LICENSE.txt} +0 -0
  57. /package/dist/scripts/{8055-f4de552821-lite.chunk.js.LICENSE.txt → 8055-a6d102b953-lite.chunk.js.LICENSE.txt} +0 -0
  58. /package/dist/scripts/{8139-37635f8bcd-lite.chunk.js.LICENSE.txt → 8139-2a36098eae-lite.chunk.js.LICENSE.txt} +0 -0
  59. /package/dist/scripts/{9395-181720391d-lite.chunk.js.LICENSE.txt → 9395-77dfcbad18-lite.chunk.js.LICENSE.txt} +0 -0
  60. /package/dist/scripts/{bundle-be1688b50c.min.js.LICENSE.txt → bundle-0187039e1a.min.js.LICENSE.txt} +0 -0
@@ -0,0 +1,2 @@
1
+ "use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[950],{30357:(e,t,r)=>{r.d(t,{V:()=>c});var n=r(32735),a=r(34509),i=r(89965),l=r(83345),o="share.embedSize";function c(e){var t=e.autoplay,r=e.setAutoplay,c=e.videoSize,s=e.setVideoSize,u=e.videoSizes;return n.createElement("div",{className:"d-flex align-items-center"},!!u.length&&n.createElement(n.Fragment,null,n.createElement("div",{className:"me-1"},n.createElement(l.x,{namespace:o,phrase:"videoSize"})),n.createElement("div",{className:"pe-3"},n.createElement(a.Z,null,n.createElement(a.Z.Toggle,{id:"embed-resolution",variant:"outline-dark"},c.label),n.createElement(a.Z.Menu,null,u.map((function(e){return n.createElement(a.Z.Item,{key:"".concat(e.width,"x").concat(e.height),onClick:function(){return s(e)}},e.label)})))))),n.createElement("div",{className:"me-2"},n.createElement(l.x,{namespace:o,phrase:"autoplay"})),n.createElement(i.X,{id:"autoplay-checkbox",checked:t,onChange:function(){return r(!t)}}))}},3185:(e,t,r)=>{r.d(t,{s:()=>g});var n=r(32735),a=r(23481),i=r(110),l=r(26361),o=r(31908);function c(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r<t;r++)n[r]=e[r];return n}var s=a.T.encloseNamespace("share.shareLinkInfo");function u(e,t,r){var n;if(!e||!t)return null;if(r)return s("justMySchoolTeachers");if(!o.M.isVideoType(e))return s("collectionRating");var a=l.l.getWeightedRestriction(null===(n=e._restrictions)||void 0===n?void 0:n.value);if(a&&!a.yearGroup)return s("onlyAdmins");var i,u,m,d=o.M.getRating(e),f=function(e,t){var r="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!r){if(Array.isArray(e)||(r=function(e,t){if(e){if("string"==typeof e)return c(e,t);var r={}.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)?c(e,t):void 0}}(e))||t&&e&&"number"==typeof e.length){r&&(e=r);var n=0,a=function(){};return{s:a,n:function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:a}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,l=!0,o=!1;return{s:function(){r=r.call(e)},n:function(){var e=r.next();return l=e.done,e},e:function(e){o=!0,i=e},f:function(){try{l||null==r.return||r.return()}finally{if(o)throw i}}}}(t);try{for(f.s();!(m=f.n()).done;){var v=m.value;(!i||v.value>i.value)&&(i=v),a&&v.value<=a.yearGroup||d&&v.rating.value<d.value||(!u||v.value<u.value)&&(u=v)}}catch(e){f.e(e)}finally{f.f()}return u?u.value===i.value?s("maxYearGroup",{yearGroup:i.name}):s("yearGroupRange",{yearGroup:u.name}):s("onlyStaff")}var m=r(83914),d=r(4594),f=r(49080),v=r(35223);function p(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var n,a,i,l,o=[],c=!0,s=!1;try{if(i=(r=r.call(e)).next,0===t){if(Object(r)!==r)return;c=!1}else for(;!(c=(n=i.call(r)).done)&&(o.push(n.value),o.length!==t);c=!0);}catch(e){s=!0,a=e}finally{try{if(!c&&null!=r.return&&(l=r.return(),Object(l)!==l))return}finally{if(s)throw a}}return o}}(e,t)||function(e,t){if(e){if("string"==typeof e)return y(e,t);var r={}.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)?y(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 y(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r<t;r++)n[r]=e[r];return n}var h=a.T.encloseNamespace("share.shareLinkInfo"),b=function(e){var t=e.linkExpireDate,r=e.isPasswordProtected,n=e.status;if(!t&&!r)return function(e){var t=e.entityTypeId,r=e.privacy,n=e.hasStudentExp,a=e.entity,i=e.yearGroups;if(t===d.E.Topic||t===d.E.Series)return{icon:v.vn.VisibleOn,text:h(n?"justMySchoolTeachers":"justMySchoolDescription")};if(!Array.isArray(r))switch(r.privacy){case"public":return{icon:v.vn.VisibleOn,text:h("publicDescription")};case"protected":return r.overrideRestrictions?{icon:v.vn.VisibleOn,text:h("clickViewOnly")}:{icon:v.vn.Lock,text:u(a,i,n)};case"just_my_customer":return r.overrideRestrictions?{icon:v.vn.Lock,text:h(n?"justMySchoolTeachers":"justMySchoolDescription")}:{icon:v.vn.Lock,text:u(a,i,n)};case"restricted":case"private":return{icon:v.vn.Lock,text:h("privateDescription")};default:return{}}}(e);if(!t)return{icon:v.vn.Lock,text:h("password")};var a=i.O.isToday(t),l=i.O.diffBetween(t,new Date,"day");if(!r){var o=a?h("expiryToday"):h("expiry",{days:l});return n===f.F.Expired&&(o=h("expired")),{icon:v.vn.Timer,text:o}}var c=a?h("passwordExpiryToday"):h("passwordExpiry",{days:l});return n===f.F.Expired&&(c=h("passwordExpired")),{icon:v.vn.Lock,text:c}};function E(e){var t=e.active,r=e.title,a=e.description,i=e.onClick;return n.createElement("li",{className:"".concat(t?"bg-light-blue":""," dropdown-item d-flex align-items-center justify-content-between"),onClick:t?null:i},n.createElement("div",{className:"me-4"},n.createElement("p",{className:"fw-semibold mb-1"},r),n.createElement("p",{className:"font-size-sm mb-0"},a)),t&&n.createElement(m.x,{svgName:v.vn.Check}))}function g(e){var t=p(n.useState(!1),2),r=t[0],a=t[1],i=p(n.useState(null),2),l=i[0],o=i[1],c=b(e),s=c.icon,d=c.text;n.useEffect((function(){a(e.privacy.canManageAccess),o(e.privacy.privacy)}),[e.privacy]);var f=r?"just_my_customer":"protected",v=!e.isPasswordProtected&&!e.linkExpireDate&&e.shareOverrideRestrictions&&!e.hasStudentExp;return n.createElement("div",{className:"d-flex align-items-center"},v?n.createElement("div",{className:"btn-group"},n.createElement("button",{className:"btn border-0 info-link dropdown-toggle p-1 bg-light-blue-hover","data-bs-toggle":"dropdown"},n.createElement(m.x,{svgName:s,className:"svg-container me-1"}),n.createElement("span",{className:"me-1"},d)),n.createElement("ul",{className:"dropdown-menu cursor-pointer"},r&&n.createElement(E,{active:"public"===l,title:h("public"),description:h("publicDescription"),onClick:function(){return e.onClickSavePrivacy("public",!1)}}),n.createElement(E,{active:l===f&&e.privacy.overrideRestrictions,title:h("justMySchool"),description:h(r?"justMySchoolDescription":"clickViewOnly"),onClick:function(){return e.onClickSavePrivacy(f,!0)}}),n.createElement(E,{active:l===f&&!e.privacy.overrideRestrictions,title:h("respectRatings"),description:u(e.entity,e.yearGroups,e.hasStudentExp),onClick:function(){return e.onClickSavePrivacy(f,!1)}}),n.createElement(E,{active:"private"===l,title:h("private"),description:h("privateDescription"),onClick:function(){return e.onClickSavePrivacy("private",!1)}}))):n.createElement(n.Fragment,null,n.createElement(m.x,{svgName:s,className:"svg-container me-1"}),n.createElement("span",null,d)))}},61193:(e,t,r)=>{r.d(t,{d:()=>i});var n=r(5173),a=r(23481),i=(0,n.Ry)().shape({removePassword:(0,n.O7)(),resourceId:(0,n.Z_)(),linkExpireDate:(0,n.Z_)().nullable(),password:(0,n.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("")})},17752:(e,t,r)=>{r.d(t,{G:()=>T});var n=r(32735),a=r(92802),i=r(23481),l=30;function o(e){if(!e)return null;var t=new Date;return t.setDate(t.getDate()+l),t.toISOString()}var c=r(83345),s=r(83523),u=r(76177),m="shared.linkExpiry",d=i.T.encloseNamespace(m);function f(e){var t=(0,a.u6)();return n.createElement("div",{className:"d-flex justify-content-between align-items-center pb-3"},n.createElement("div",null,n.createElement("label",{className:"m-0",htmlFor:""},n.createElement(c.x,{namespace:m,phrase:"linkExpirationHeading"})),n.createElement("p",{className:"m-0"},n.createElement(c.x,{namespace:m,phrase:"linkExpirationInfo"}))),n.createElement(u.u,{title:d("passwordProtected"),disable:!e.passwordProtectLink,spanHack:!0,trigger:"hover"},n.createElement(s.Z,{onClick:function(){e.passwordProtectLink||t.setFieldValue("linkExpireDate",o(!t.values.linkExpireDate))},on:!!t.values.linkExpireDate,disabled:e.passwordProtectLink,showStateWhenDisabled:!0})))}var v=r(80130),p=r(11607),y=r(83914),h=r(35223);const b={passwordButton:"W9Jl8"};function E(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r<t;r++)n[r]=e[r];return n}var g=i.T.encloseNamespace("share.setPasswordInput");function k(e){var t,r,i,l=(r=n.useState(!1),i=2,function(e){if(Array.isArray(e))return e}(r)||function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var n,a,i,l,o=[],c=!0,s=!1;try{if(i=(r=r.call(e)).next,0===t){if(Object(r)!==r)return;c=!1}else for(;!(c=(n=i.call(r)).done)&&(o.push(n.value),o.length!==t);c=!0);}catch(e){s=!0,a=e}finally{try{if(!c&&null!=r.return&&(l=r.return(),Object(l)!==l))return}finally{if(s)throw a}}return o}}(r,i)||function(e,t){if(e){if("string"==typeof e)return E(e,t);var r={}.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)?E(e,t):void 0}}(r,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.")}()),o=l[0],c=l[1],s=null===(t=(0,a.u6)().errors)||void 0===t?void 0:t.password;return n.createElement(n.Fragment,null,n.createElement("input",{className:"form-control ".concat(s?"is-invalid":""),value:e.value,onChange:function(t){e.canEdit&&e.onChange(t.target.value)},type:o?"text":"password",placeholder:e.placeholder||g("passwordPlaceholder"),readOnly:!e.canEdit}),!!s&&n.createElement(v.Z.Control.Feedback,{type:"invalid"},s),!!e.canEdit&&n.createElement(p.L,{className:b.passwordButton,onClick:function(){return c(!o)}},n.createElement(y.x,{svgName:o?h.vn.VisibleOn:h.vn.VisibleOff,title:g(o?"hidePassword":"revealPassword"),tooltipPlacement:"top"})),!e.canEdit&&!!e.canReset&&!!e.onReset&&n.createElement(p.L,{className:b.passwordButton,onClick:e.onReset},n.createElement(y.x,{svgName:h.vn.Close,title:g("resetPassword"),tooltipPlacement:"top"})))}function w(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r<t;r++)n[r]=e[r];return n}var S="shared.linkPassword",x="********";function O(e){var t,r,i,l=e.passwordProtectLink,u=e.setPasswordProtectLink,m=(0,a.u6)(),d=(r=n.useState(!!(null===(t=e.shareLink)||void 0===t?void 0:t.isPasswordProtected)),i=2,function(e){if(Array.isArray(e))return e}(r)||function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var n,a,i,l,o=[],c=!0,s=!1;try{if(i=(r=r.call(e)).next,0===t){if(Object(r)!==r)return;c=!1}else for(;!(c=(n=i.call(r)).done)&&(o.push(n.value),o.length!==t);c=!0);}catch(e){s=!0,a=e}finally{try{if(!c&&null!=r.return&&(l=r.return(),Object(l)!==l))return}finally{if(s)throw a}}return o}}(r,i)||function(e,t){if(e){if("string"==typeof e)return w(e,t);var r={}.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)?w(e,t):void 0}}(r,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.")}()),f=d[0],v=d[1];return n.createElement("div",{className:"pb-3"},n.createElement("div",{className:"d-flex justify-content-between align-items-center"},n.createElement("div",null,n.createElement("label",{className:"m-0",htmlFor:""},n.createElement(c.x,{namespace:S,phrase:"passwordProtectHeading"})),n.createElement("p",{className:"m-0"},n.createElement(c.x,{namespace:S,phrase:"passwordProtectInfo"}))),n.createElement(s.Z,{onClick:function(){var t;(null===(t=e.shareLink)||void 0===t?void 0:t.isPasswordProtected)&&m.setFieldValue("removePassword",l),m.setFieldValue("password",""),u(!l),m.setFieldValue("linkExpireDate",o(!l))},on:l})),l&&n.createElement("div",{className:"position-relative mt-2"},n.createElement(k,{value:f?x:m.values.password,onChange:function(e){m.setFieldValue("password",e)},onReset:function(){m.setFieldValue("password",""),m.setFieldValue("removePassword",!0),v(!1)},canEdit:!f,canReset:!0})))}var C=r(61193),P=r(82644),j=r(13876),A=r(16714),N=r(22902);function L(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r<t;r++)n[r]=e[r];return n}var I="shared.share",V=i.T.encloseNamespace(I);function D(e){var t,r,i=(0,N.T)().hasPermissions,l=(t=n.useState(!!e.shareLink.isPasswordProtected),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,l,o=[],c=!0,s=!1;try{if(i=(r=r.call(e)).next,0===t){if(Object(r)!==r)return;c=!1}else for(;!(c=(n=i.call(r)).done)&&(o.push(n.value),o.length!==t);c=!0);}catch(e){s=!0,a=e}finally{try{if(!c&&null!=r.return&&(l=r.return(),Object(l)!==l))return}finally{if(s)throw a}}return o}}(t,r)||function(e,t){if(e){if("string"==typeof e)return L(e,t);var r={}.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)?L(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.")}()),o=l[0],s=l[1];return n.createElement(a.l0,null,e.onClickDeleteLink&&n.createElement("div",{className:"d-flex justify-content-between align-items-center pb-3"},n.createElement("div",null,n.createElement("label",{className:"mb-0"},n.createElement(c.x,{namespace:I,phrase:"deleteLinkLabel"})),n.createElement("p",{className:"mb-0"},n.createElement(c.x,{namespace:I,phrase:"deleteLinkDescription"}))),n.createElement(p.L,{onClick:e.onClickDeleteLink,className:"info-link justify-self-start"},n.createElement(c.x,{phrase:"deleteLink"}))),i(A.C.ManageShareLinkSettings)&&n.createElement(n.Fragment,null,n.createElement(f,{passwordProtectLink:o}),e.shareOverrideRestrictions&&n.createElement(O,{shareLink:e.shareLink,passwordProtectLink:o,setPasswordProtectLink:s})),n.createElement(j.u,null,n.createElement(j.u.Cancel,{onClick:e.onClickCancel,text:V("back"),variant:"link"}),n.createElement(j.u.Submit,{variant:"dark"})))}function T(e){var t={password:"",removePassword:!1,linkExpireDate:e.shareLink.linkExpireDate,overrideRestrictions:e.shareLink.overrideRestrictions};return n.createElement(n.Fragment,null,n.createElement(P.n,{initialValues:t,onSubmit:e.onClickSaveLink,castInitialValues:!1,validationSchema:C.d},n.createElement(D,{entity:e.entity,entityType:e.entityType,config:e.config,shareLink:e.shareLink,entityId:e.entityId,onClickCancel:e.onClickCancel,analyticsOptions:e.analyticsOptions,privacy:e.privacy,onClickDeleteLink:e.onClickDeleteLink,hasStudentExp:e.hasStudentExp,shareOverrideRestrictions:e.shareOverrideRestrictions})))}},82644:(e,t,r)=>{r.d(t,{b:()=>u,n:()=>s});var n=r(32735),a=r(92802),i=r(91967),l=r(1048);function o(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r<t;r++)n[r]=e[r];return n}var c=function(e,t){var r={};for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&t.indexOf(n)<0&&(r[n]=e[n]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var a=0;for(n=Object.getOwnPropertySymbols(e);a<n.length;a++)t.indexOf(n[a])<0&&Object.prototype.propertyIsEnumerable.call(e,n[a])&&(r[n[a]]=e[n[a]])}return r};function s(e){var t=e.castInitialValues,r=e.castValuesOnSubmit,s=e.initialValues,u=e.onSubmit,m=c(e,["castInitialValues","castValuesOnSubmit","initialValues","onSubmit"]),d=t&&e.validationSchema?e.validationSchema.cast(function(e){if(!e)return{};var t=l.t.deepClone(e);return function e(r){Object.keys(t).forEach((function(n){t.hasOwnProperty(n)&&(l.t.isObject(r[n])?e(r[n]):null===t[n]&&delete t[n])}))}(t),t}(s)):s,f={allowInitialSubmit:e.allowInitialSubmit};return n.createElement(a.J9,Object.assign({enableReinitialize:!0},m,{initialValues:d,onSubmit:function(t,n){var a=n.setSubmitting,i=n.resetForm,l=n.setFieldError,c=r&&e.validationSchema?e.validationSchema.cast(t):t;u(c,(function(){var e,t,r=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(r.reset&&i(),r.errors)for(var n=0,c=Object.entries(r.errors);n<c.length;n++){var s=(e=c[n],t=2,function(e){if(Array.isArray(e))return e}(e)||function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var n,a,i,l,o=[],c=!0,s=!1;try{if(i=(r=r.call(e)).next,0===t){if(Object(r)!==r)return;c=!1}else for(;!(c=(n=i.call(r)).done)&&(o.push(n.value),o.length!==t);c=!0);}catch(e){s=!0,a=e}finally{try{if(!c&&null!=r.return&&(l=r.return(),Object(l)!==l))return}finally{if(s)throw a}}return o}}(e,t)||function(e,t){if(e){if("string"==typeof e)return o(e,t);var r={}.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)?o(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=s[0],m=s[1];l(u,m)}a(!1)}))},initialStatus:f}),i.q.isFunction(e.children)?function(t){return e.children(t)}:n.Children.count(e.children)?e.children:null)}function u(){return(0,a.u6)()}s.defaultProps={castInitialValues:!0,castValuesOnSubmit:!0}}}]);
2
+ //# sourceMappingURL=950-68255d3086-lite.chunk.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scripts/950-68255d3086-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/share-link-info/getRespectRatingText.ts","file:///app/packages/libs/shared/src/apps/share/components/share-link-info/ShareLinkInfo.tsx","file:///app/packages/libs/shared/src/apps/share/validation/ShareLinkSettingsValidationSchema.ts","file:///app/packages/libs/shared/src/apps/share/utils/LinkExpiryHelper.ts","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/views/share/components/share-settings/ShareSettings.tsx","file:///app/packages/libs/shared/src/components/forms/form-wrapper/FormWrapper.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 { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { BaseObject } from 'libs/analytics/interfaces';\n\nimport { YearGroup } from 'libs/shared/interfaces';\nimport { RestrictionHelper } from 'libs/shared/utils/RestrictionHelper';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\nconst namespace = 'share.shareLinkInfo';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nexport function getRespectRatingText(video: BaseObject, yearGroups: YearGroup[], hasStudentExp: boolean) {\n if (!video || !yearGroups)\n return null;\n\n if (hasStudentExp)\n return getPhrase('justMySchoolTeachers');\n\n if (!VideoHelper.isVideoType(video))\n return getPhrase('collectionRating');\n\n const restriction = RestrictionHelper.getWeightedRestriction(video._restrictions?.value);\n\n /**\n * Restrictions without a year group are teacher restricitons, which means only admins can see it.\n */\n if (restriction && !restriction.yearGroup)\n return getPhrase('onlyAdmins');\n\n const rating = VideoHelper.getRating(video);\n\n let maxYearGroup: YearGroup;\n let minAllowedYearGroup: YearGroup;\n\n for (const yearGroup of yearGroups) {\n /**\n * If our year group is our new highest so far, save it\n */\n if (!maxYearGroup || yearGroup.value > maxYearGroup.value)\n maxYearGroup = yearGroup;\n\n /**\n * If the restriction is higher than this year group, skip it.\n */\n if (restriction && yearGroup.value <= restriction.yearGroup)\n continue;\n\n /**\n * If therating is higher than this year group's rating value, skip it.\n */\n if (rating && yearGroup.rating.value < rating.value)\n continue;\n\n /**\n * If our year group is the new lowest so far, save it\n */\n if (!minAllowedYearGroup || yearGroup.value < minAllowedYearGroup.value)\n minAllowedYearGroup = yearGroup;\n }\n\n /**\n * If no year groups are allowed, then it's staff only.\n */\n if (!minAllowedYearGroup)\n return getPhrase('onlyStaff');\n\n /**\n * We differentiate the copy if it's the highest year group or not. \n * Basically if we need to say \"X and above\" or not.\n */\n if (minAllowedYearGroup.value === maxYearGroup.value)\n return getPhrase('maxYearGroup', { yearGroup: maxYearGroup.name });\n\n return getPhrase('yearGroupRange', { yearGroup: minAllowedYearGroup.name });\n}","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { DateHelper } from 'libs/common/react/utils/DateHelper';\n\nimport { getRespectRatingText } from 'libs/shared/apps/share/components/share-link-info/getRespectRatingText';\nimport { SharePrivacy } from 'libs/shared/apps/share/interfaces/SharePrivacy';\nimport { SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { ShareLinkStatus } from 'libs/shared/enums/ShareLinkStatus';\nimport { BaseObject, YearGroup } from 'libs/shared/interfaces';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport { SharePrivacyResponse } from '../../interfaces/responses/SharePrivacyResponse';\n\nconst namespace = 'share.shareLinkInfo';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface ShareLinkInfoProps {\n linkExpireDate: string;\n isPasswordProtected: boolean;\n privacy: SharePrivacyResponse;\n status: ShareLinkStatus;\n entityTypeId: MasterType;\n hasStudentExp: boolean;\n onClickSavePrivacy?: (privacy: SharePrivacy, onClickSavePrivacy: boolean) => void;\n entity: BaseObject;\n yearGroups: YearGroup[];\n shareOverrideRestrictions: boolean;\n}\n\ninterface GetIconAndTextOptions extends ShareLinkInfoProps {}\n\nconst getPrivateIconAndText = (options: GetIconAndTextOptions) => {\n const { entityTypeId, privacy, hasStudentExp, entity, yearGroups } = options;\n\n if (entityTypeId === MasterType.Topic || entityTypeId === MasterType.Series)\n return { icon: cvSvgLibrary.VisibleOn, text: getPhrase(hasStudentExp ? 'justMySchoolTeachers' : 'justMySchoolDescription') };\n\n /**\n * This is mainly for typescript, privacy will be an array for playlists\n * but that is handled above\n */\n if (Array.isArray(privacy))\n return;\n\n switch (privacy.privacy) {\n case 'public':\n return { icon: cvSvgLibrary.VisibleOn, text: getPhrase('publicDescription') };\n case 'protected':\n if (privacy.overrideRestrictions)\n return { icon: cvSvgLibrary.VisibleOn, text: getPhrase('clickViewOnly') };\n return { icon: cvSvgLibrary.Lock, text: getRespectRatingText(entity, yearGroups, hasStudentExp) };\n case 'just_my_customer':\n if (privacy.overrideRestrictions)\n return { icon: cvSvgLibrary.Lock, text: getPhrase(hasStudentExp ? 'justMySchoolTeachers' : 'justMySchoolDescription') };\n return { icon: cvSvgLibrary.Lock, text: getRespectRatingText(entity, yearGroups, hasStudentExp) };\n /**\n * Because we plan to add restricted management later \n * for the time being we treat is the same as private \n */\n case 'restricted':\n case 'private':\n return { icon: cvSvgLibrary.Lock, text: getPhrase('privateDescription') };\n default:\n return {};\n }\n};\n\nconst getIconAndText = (options: GetIconAndTextOptions) => {\n const { linkExpireDate, isPasswordProtected, status } = options;\n if (!linkExpireDate && !isPasswordProtected)\n return getPrivateIconAndText(options);\n\n if (!linkExpireDate)\n return { icon: cvSvgLibrary.Lock, text: getPhrase('password') };\n\n const isToday = DateHelper.isToday(linkExpireDate);\n const dayDifference = DateHelper.diffBetween(linkExpireDate, new Date(), 'day');\n\n if (!isPasswordProtected) {\n let text = isToday\n ? getPhrase('expiryToday')\n : getPhrase('expiry', { days: dayDifference });\n\n if (status === ShareLinkStatus.Expired)\n text = getPhrase('expired');\n\n return { icon: cvSvgLibrary.Timer, text };\n }\n\n let text = isToday\n ? getPhrase('passwordExpiryToday')\n : getPhrase('passwordExpiry', { days: dayDifference });\n\n if (status === ShareLinkStatus.Expired)\n text = getPhrase('passwordExpired');\n\n return { icon: cvSvgLibrary.Lock, text };\n};\n\ninterface ShareLinkItemProps {\n active: boolean;\n title: string;\n description: string;\n onClick: () => void\n}\n\nfunction ShareLinkItem(props: ShareLinkItemProps) {\n const { active, title, description, onClick } = props;\n\n return (\n <li\n className={`${active ? 'bg-light-blue' : ''} dropdown-item d-flex align-items-center justify-content-between`}\n onClick={!active ? onClick : null}\n >\n <div className='me-4'>\n <p className='fw-semibold mb-1'>{title}</p>\n <p className='font-size-sm mb-0'>{description}</p>\n </div>\n {active && <SvgContainer svgName={cvSvgLibrary.Check} />}\n </li>\n );\n}\n\nexport function ShareLinkInfo(props: ShareLinkInfoProps): JSX.Element {\n const [ canManageAccess, setCanManageAccess ] = React.useState(false);\n const [ privacy, setPrivacy ] = React.useState<SharePrivacy>(null);\n\n const { icon, text } = getIconAndText(props);\n\n React.useEffect(() => {\n setCanManageAccess(props.privacy.canManageAccess);\n setPrivacy(props.privacy.privacy);\n }, [props.privacy]);\n\n const canManageAccessPrivacy = canManageAccess ? 'just_my_customer' : 'protected';\n\n const canUpdatePrivacy = (\n !props.isPasswordProtected &&\n !props.linkExpireDate &&\n (props.shareOverrideRestrictions && !props.hasStudentExp)\n );\n\n return (\n <div className='d-flex align-items-center'>\n {(canUpdatePrivacy)\n ? (\n <div className='btn-group'>\n <button className={`btn border-0 info-link dropdown-toggle p-1 bg-light-blue-hover`} data-bs-toggle='dropdown'>\n <SvgContainer svgName={icon} className='svg-container me-1' />\n <span className='me-1'>{text}</span>\n </button>\n <ul className='dropdown-menu cursor-pointer'>\n {canManageAccess &&\n <ShareLinkItem\n active={privacy === 'public'}\n title={getPhrase('public')}\n description={getPhrase('publicDescription')}\n onClick={() => props.onClickSavePrivacy('public', false)}\n />\n }\n <ShareLinkItem\n active={privacy === canManageAccessPrivacy && props.privacy.overrideRestrictions}\n title={getPhrase('justMySchool')}\n description={canManageAccess ? getPhrase('justMySchoolDescription') : getPhrase('clickViewOnly')}\n onClick={() => props.onClickSavePrivacy(canManageAccessPrivacy, true)}\n />\n <ShareLinkItem\n active={privacy === canManageAccessPrivacy && !props.privacy.overrideRestrictions}\n title={getPhrase('respectRatings')}\n description={getRespectRatingText(props.entity, props.yearGroups, props.hasStudentExp)}\n onClick={() => props.onClickSavePrivacy(canManageAccessPrivacy, false)}\n />\n <ShareLinkItem\n active={privacy === 'private'}\n title={getPhrase('private')}\n description={getPhrase('privateDescription')}\n onClick={() => props.onClickSavePrivacy('private', false)}\n />\n </ul>\n </div>\n )\n : (\n <>\n <SvgContainer svgName={icon} className='svg-container me-1' />\n <span>{text}</span>\n </>\n )\n }\n </div>\n );\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});","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 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}","import React from 'react';\nimport { Form } from 'formik';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\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 { DivButton } from 'libs/shared/components/div-button/DivButton';\nimport { FormWrapper } from 'libs/shared/components/forms/form-wrapper/FormWrapper';\nimport { PopupButtons } from 'libs/shared/components/popup/PopupButtons';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { PermissionName } from 'libs/shared/enums/PermissionName';\nimport { usePermissions } from 'libs/shared/hooks/usePermissions';\nimport { BaseObject, Config } from 'libs/shared/interfaces';\nimport { PropsWithAnalyticsOptions, ShareLink } from 'libs/shared/interfaces';\n\nconst namespace = 'shared.share';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ntype ShareSettingsFormProps = PropsWithAnalyticsOptions<{\n entity: BaseObject;\n entityType: SharableEntityType;\n config: Config;\n shareLink: ShareLink;\n entityId: string;\n onClickCancel: () => void;\n onClickDeleteLink: () => void;\n canEmbed?: boolean;\n privacy: SharePrivacyResponse;\n hasStudentExp: boolean;\n shareOverrideRestrictions: boolean;\n}>;\n\nfunction ShareSettingsForm(props: ShareSettingsFormProps): JSX.Element {\n const { hasPermissions } = usePermissions();\n\n const [ passwordProtectLink, setPasswordProtectLink ] = React.useState(!!props.shareLink.isPasswordProtected);\n\n return (\n <Form>\n {props.onClickDeleteLink &&\n <div className='d-flex justify-content-between align-items-center pb-3'>\n <div>\n <label className='mb-0'><Text namespace={namespace} phrase='deleteLinkLabel' /></label>\n <p className='mb-0'><Text namespace={namespace} phrase='deleteLinkDescription' /></p>\n </div>\n <DivButton onClick={props.onClickDeleteLink} className='info-link justify-self-start'>\n <Text phrase='deleteLink' />\n </DivButton>\n </div>\n }\n {hasPermissions(PermissionName.ManageShareLinkSettings) && (\n <>\n <LinkExpiry passwordProtectLink={passwordProtectLink} />\n {props.shareOverrideRestrictions &&\n <LinkPassword\n shareLink={props.shareLink}\n passwordProtectLink={passwordProtectLink}\n setPasswordProtectLink={setPasswordProtectLink}\n />\n }\n </>\n )}\n\n <PopupButtons>\n <PopupButtons.Cancel onClick={props.onClickCancel} text={getPhrase('back')} variant='link' />\n <PopupButtons.Submit variant='dark' />\n </PopupButtons>\n </Form>\n );\n}\n\ninterface ShareSettingsProps {\n entity: BaseObject;\n entityType: SharableEntityType;\n config: Config;\n shareLink: ShareLink;\n entityId: string;\n privacy: SharePrivacyResponse;\n onClickSaveLink: (data: EditShareLinkRequest, onError: () => void) => void;\n onClickCancel: () => void;\n onClickDeleteLink?: () => void;\n hasStudentExp: boolean;\n shareOverrideRestrictions: boolean;\n}\n\nexport function ShareSettings(props: PropsWithAnalyticsOptions<ShareSettingsProps>): JSX.Element {\n const initialValues: EditShareLinkRequest = {\n password: '',\n removePassword: false,\n linkExpireDate: props.shareLink.linkExpireDate,\n overrideRestrictions: props.shareLink.overrideRestrictions\n };\n\n return (\n <>\n <FormWrapper<EditShareLinkRequest>\n initialValues={initialValues}\n onSubmit={props.onClickSaveLink}\n castInitialValues={false}\n validationSchema={ShareLinkSettingsValidationSchema}\n >\n <ShareSettingsForm\n entity={props.entity}\n entityType={props.entityType}\n config={props.config}\n shareLink={props.shareLink}\n entityId={props.entityId}\n onClickCancel={props.onClickCancel}\n analyticsOptions={props.analyticsOptions}\n privacy={props.privacy}\n onClickDeleteLink={props.onClickDeleteLink}\n hasStudentExp={props.hasStudentExp}\n shareOverrideRestrictions={props.shareOverrideRestrictions}\n />\n </FormWrapper>\n </>\n );\n}\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}"],"names":["namespace","EmbedSize","props","autoplay","setAutoplay","videoSize","setVideoSize","videoSizes","className","length","phrase","id","variant","label","map","size","key","width","height","onClick","checked","onChange","getPhrase","LanguageService","getRespectRatingText","video","yearGroups","hasStudentExp","VideoHelper","restriction","RestrictionHelper","_restrictions","value","yearGroup","maxYearGroup","minAllowedYearGroup","rating","name","getIconAndText","options","linkExpireDate","isPasswordProtected","status","entityTypeId","privacy","entity","MasterType","icon","text","Array","isArray","overrideRestrictions","getPrivateIconAndText","isToday","DateHelper","dayDifference","Date","days","ShareLinkStatus","ShareLinkItem","active","title","description","SvgContainer","svgName","ShareLinkInfo","canManageAccess","setCanManageAccess","setPrivacy","canManageAccessPrivacy","canUpdatePrivacy","shareOverrideRestrictions","onClickSavePrivacy","ShareLinkSettingsValidationSchema","shape","removePassword","resourceId","nullable","password","test","exclusive","params","message","val","LINK_EXPIRY_TIME","getLinkExpiryDate","shouldExpire","date","setDate","getDate","toISOString","LinkExpiry","formikProps","htmlFor","Text","Tooltip","disable","passwordProtectLink","spanHack","trigger","ToggleSwitch","setFieldValue","values","on","disabled","showStateWhenDisabled","SetPasswordInput","revealPassword","setRevealPassword","errorMsg","errors","e","canEdit","target","type","placeholder","readOnly","Form","DivButton","tooltipPlacement","canReset","onReset","PASSWORD_PLACEHOLDER","LinkPassword","setPasswordProtectLink","shareLink","readonlyPassword","setReadonlyPassword","ShareSettingsForm","hasPermissions","usePermissions","onClickDeleteLink","PermissionName","PopupButtons","onClickCancel","ShareSettings","initialValues","FormWrapper","onSubmit","onClickSaveLink","castInitialValues","validationSchema","entityType","config","entityId","analyticsOptions","castValuesOnSubmit","formattedInitialValues","cast","omitChildValues","child","Object","keys","forEach","hasOwnProperty","omitNullInitialValues","initialStatus","allowInitialSubmit","enableReinitialize","setSubmitting","resetForm","setFieldError","formattedData","reset","entries","children","f","useFormikContextWrapper","defaultProps"],"sourceRoot":""}