@clickview/lite 0.49.7 → 0.49.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/bundles.json +1 -1
- package/dist/scripts/1285-db42ee1c76-lite.chunk.js +2 -0
- package/dist/scripts/1285-db42ee1c76-lite.chunk.js.map +1 -0
- package/dist/scripts/1863-bb98f2e617-lite.chunk.js +2 -0
- package/dist/scripts/1863-bb98f2e617-lite.chunk.js.map +1 -0
- package/dist/scripts/{2355-78b307e130-lite.chunk.js → 2355-b2345e9449-lite.chunk.js} +2 -2
- package/dist/scripts/{2355-78b307e130-lite.chunk.js.map → 2355-b2345e9449-lite.chunk.js.map} +1 -1
- package/dist/scripts/7301-49c2341e97-lite.chunk.js +2 -0
- package/dist/scripts/7301-49c2341e97-lite.chunk.js.map +1 -0
- package/dist/scripts/{7855-cbf70d4453-lite.chunk.js → 7855-76f000d339-lite.chunk.js} +2 -2
- package/dist/scripts/7855-76f000d339-lite.chunk.js.map +1 -0
- package/dist/scripts/8243-e9d7716ffe-lite.chunk.js +2 -0
- package/dist/scripts/8243-e9d7716ffe-lite.chunk.js.map +1 -0
- package/dist/scripts/bundle-d3e8783756.min.js +3 -0
- package/dist/scripts/bundle-d3e8783756.min.js.map +1 -0
- package/package.json +1 -1
- package/dist/scripts/1285-93d485e012-lite.chunk.js +0 -2
- package/dist/scripts/1285-93d485e012-lite.chunk.js.map +0 -1
- package/dist/scripts/1863-5502813c32-lite.chunk.js +0 -2
- package/dist/scripts/1863-5502813c32-lite.chunk.js.map +0 -1
- package/dist/scripts/7301-98679776b7-lite.chunk.js +0 -2
- package/dist/scripts/7301-98679776b7-lite.chunk.js.map +0 -1
- package/dist/scripts/7855-cbf70d4453-lite.chunk.js.map +0 -1
- package/dist/scripts/8243-ddaa0ed22d-lite.chunk.js +0 -2
- package/dist/scripts/8243-ddaa0ed22d-lite.chunk.js.map +0 -1
- package/dist/scripts/bundle-0fc905d3a4.min.js +0 -3
- package/dist/scripts/bundle-0fc905d3a4.min.js.map +0 -1
- /package/dist/scripts/{bundle-0fc905d3a4.min.js.LICENSE.txt → bundle-d3e8783756.min.js.LICENSE.txt} +0 -0
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[7301],{30357:(e,t,n)=>{n.d(t,{V:()=>c});var r=n(32735),a=n(34509),i=n(89965),o=n(83345),l="share.embedSize";function c(e){var t=e.autoplay,n=e.setAutoplay,c=e.videoSize,s=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"},c.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 s(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:()=>d});var r=n(32735),a=n(92802),i=n(23481),o=n(9673),l=n(83345),c=n(83523),s=n(76177),u="shared.linkExpiry",m=i.T.encloseNamespace(u);function d(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(s.u,{title:m("passwordProtected"),disable:!e.passwordProtectLink,spanHack:!0,trigger:"hover"},r.createElement(c.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:()=>E});var r=n(32735),a=n(92802),i=n(80130),o=n(23481),l=n(11607),c=n(83914),s=n(35223);const u={passwordButton:"W9Jl8"};function m(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}var d=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=[],c=!0,s=!1;try{if(i=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;c=!1}else for(;!(c=(r=i.call(n)).done)&&(l.push(r.value),l.length!==t);c=!0);}catch(e){s=!0,a=e}finally{try{if(!c&&null!=n.return&&(o=n.return(),Object(o)!==o))return}finally{if(s)throw a}}return l}}(n,o)||function(e,t){if(e){if("string"==typeof e)return m(e,t);var n={}.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)?m(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],v=p[1],y=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(y?"is-invalid":""),value:e.value,onChange:function(t){e.canEdit&&e.onChange(t.target.value)},type:f?"text":"password",placeholder:e.placeholder||d("passwordPlaceholder"),readOnly:!e.canEdit}),!!y&&r.createElement(i.Z.Control.Feedback,{type:"invalid"},y),!!e.canEdit&&r.createElement(l.L,{className:u.passwordButton,onClick:function(){return v(!f)}},r.createElement(c.x,{svgName:f?s.vn.VisibleOn:s.vn.VisibleOff,title:d(f?"hidePassword":"revealPassword"),tooltipPlacement:"top"})),!e.canEdit&&!!e.canReset&&!!e.onReset&&r.createElement(l.L,{className:u.passwordButton,onClick:e.onReset},r.createElement(c.x,{svgName:s.vn.Close,title:d("resetPassword"),tooltipPlacement:"top"})))}var f=n(9673),v=n(83345),y=n(83523);function h(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}var g="shared.linkPassword",b="********";function E(e){var t,n,i,o=e.passwordProtectLink,l=e.setPasswordProtectLink,c=(0,a.u6)(),s=(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=[],c=!0,s=!1;try{if(i=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;c=!1}else for(;!(c=(r=i.call(n)).done)&&(l.push(r.value),l.length!==t);c=!0);}catch(e){s=!0,a=e}finally{try{if(!c&&null!=n.return&&(o=n.return(),Object(o)!==o))return}finally{if(s)throw a}}return l}}(n,i)||function(e,t){if(e){if("string"==typeof e)return h(e,t);var n={}.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=s[0],m=s[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(v.x,{namespace:g,phrase:"passwordProtectHeading"})),r.createElement("p",{className:"m-0"},r.createElement(v.x,{namespace:g,phrase:"passwordProtectInfo"}))),r.createElement(y.Z,{onClick:function(){var t;(null===(t=e.shareLink)||void 0===t?void 0:t.isPasswordProtected)&&c.setFieldValue("removePassword",o),c.setFieldValue("password",""),l(!o),c.setFieldValue("linkExpireDate",(0,f.o)(!o))},on:o})),o&&r.createElement("div",{className:"position-relative mt-2"},r.createElement(p,{value:u?b:c.values.password,onChange:function(e){c.setFieldValue("password",e)},onReset:function(){c.setFieldValue("password",""),c.setFieldValue("removePassword",!0),m(!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("")})},68123:(e,t,n)=>{n.r(t),n.d(t,{ShareView:()=>Qe});var r=n(32735),a=n(70680),i=n(23481),o=n(20354),l=n(30439),c=n(31250),s=n(59087),u=n(49985),m=n(65858),d=n(30357),p=n(64249),f=n(83345),v=n(26450);const y={embedHtmlInput:"mwvd0",copyBtnContainer:"myePx"};function h(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=[],c=!0,s=!1;try{if(i=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;c=!1}else for(;!(c=(r=i.call(n)).done)&&(l.push(r.value),l.length!==t);c=!0);}catch(e){s=!0,a=e}finally{try{if(!c&&null!=n.return&&(o=n.return(),Object(o)!==o))return}finally{if(s)throw a}}return l}}(e,t)||function(e,t){if(e){if("string"==typeof e)return g(e,t);var n={}.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)?g(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 g(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}var b="share.copyEmbedHtml",E=i.T.encloseNamespace(b);function A(e){var t=v.i.getEmbedResolutions(),n=h(r.useState("copy"),2),a=n[0],i=n[1],o=h(r.useState(!1),2),l=o[0],c=o[1],g=h(r.useState(t.find((function(e){return"100%"===e.width}))),2),A=g[0],S=g[1],k=h(r.useState(!1),2),w=k[0],C=k[1],x=v.i.buildEmbedUrl({embedUrl:e.embedUrl,host:e.config.primaryUrl,shareId:e.shareId,autoplay:l}),L=v.i.getEmbedString({url:x,size:A});return r.createElement(f.D.Provider,{value:b},r.createElement("label",null,r.createElement(f.x,{namespace:b,phrase:"label"})),r.createElement("div",{className:"position-relative mb-3"},r.createElement("textarea",{className:"form-control rounded w-100 h-100 ".concat(y.embedHtmlInput),spellCheck:!1,value:L,rows:7,readOnly:!0}),r.createElement(s.CopyToClipboard,{onCopy:function(){i("copied"),setTimeout((function(){return i("copy")}),2e3),w||(C(!0),u.k.logUserAction(Object.assign(Object.assign({},e.entity),{embedDetails:{size:A,autoplay:l}}),u.k.mergeOptions(p.I.getAnalyticsOptions(e.entityType),{actionType:m.Vw.Share,descriptor:m.YM.CopyEmbedHtml,eventVersion:m.eq.V3})))},text:L},r.createElement("button",{className:"btn btn-outline-dark border border-secondary position-absolute bottom-0 end-0 ".concat(y.copyBtnContainer),type:"button"},E(a)))),r.createElement(d.V,{autoplay:l,setAutoplay:c,videoSize:A,setVideoSize:S,videoSizes:t}))}var S=n(11607),k=n(13876),w="shared.share";function C(e){return r.createElement(r.Fragment,null,r.createElement("div",{className:"mb-3"},r.createElement(A,{embedUrl:e.shareLink.embedUrl,entity:e.entity,entityType:e.entityType,config:e.config,entityId:e.entityId,shareId:e.shareLink.id,analyticsOptions:e.analyticsOptions})),r.createElement(k.u,null,r.createElement(S.L,{onClick:e.onClickCancel,className:"btn btn-outline-dark"},r.createElement(f.x,{namespace:w,phrase:"back"}))))}var x=n(80247),L=n(42648),N=n(97395),I=n(75896),O=n(1048),P=n(83914),j=n(35223);const T={hoverBackground:"ICTmv"};var U="share.getEmbedCode";function B(e){return r.createElement(S.L,{onClick:e.onClickGetEmbedCode,className:"d-inline-block p-1 pe-2 rounded-1 ".concat(T.hoverBackground)},r.createElement("div",{className:"d-flex align-items-center"},r.createElement("div",{className:"bg-dark text-white rounded-1 me-2"},r.createElement(P.x,{svgName:j.vn.Code,size:P.S.Large})),r.createElement(f.x,{namespace:U,phrase:"getEmbedCode"})))}var V=n(75314),z=n(7855),D=n(110),F=n(26361),M=n(31908);function R(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}var H=i.T.encloseNamespace("share.shareLinkInfo");function Z(e,t,n){var r;if(!e||!t)return null;if(n)return H("justMySchoolTeachers");if(!M.M.isVideoType(e))return H("collectionRating");var a=F.l.getWeightedRestriction(null===(r=e._restrictions)||void 0===r?void 0:r.value);if(a&&!a.yearGroup)return H("onlyAdmins");var i,o,l,c=M.M.getRating(e),s=function(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!n){if(Array.isArray(e)||(n=function(e,t){if(e){if("string"==typeof e)return R(e,t);var n={}.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)?R(e,t):void 0}}(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var r=0,a=function(){};return{s:a,n:function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}},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,o=!0,l=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return o=e.done,e},e:function(e){l=!0,i=e},f:function(){try{o||null==n.return||n.return()}finally{if(l)throw i}}}}(t);try{for(s.s();!(l=s.n()).done;){var u=l.value;(!i||u.value>i.value)&&(i=u),a&&u.value<=a.yearGroup||c&&u.rating.value<c.value||(!o||u.value<o.value)&&(o=u)}}catch(e){s.e(e)}finally{s.f()}return o?o.value===i.value?H("maxYearGroup",{yearGroup:i.name}):H("yearGroupRange",{yearGroup:o.name}):H("onlyStaff")}var G=n(4594),X=n(49080);const W={hoverBackground:"R3fNE"};function q(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=[],c=!0,s=!1;try{if(i=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;c=!1}else for(;!(c=(r=i.call(n)).done)&&(l.push(r.value),l.length!==t);c=!0);}catch(e){s=!0,a=e}finally{try{if(!c&&null!=n.return&&(o=n.return(),Object(o)!==o))return}finally{if(s)throw a}}return l}}(e,t)||function(e,t){if(e){if("string"==typeof e)return Y(e,t);var n={}.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)?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 n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}var J=i.T.encloseNamespace("share.shareLinkInfo"),Q=function(e){var t=e.linkExpireDate,n=e.isPasswordProtected,r=e.status;if(!t&&!n)return function(e){var t=e.entityTypeId,n=e.privacy,r=e.hasStudentExp,a=e.entity,i=e.yearGroups;if(t===G.E.Topic||t===G.E.Series)return{icon:j.vn.VisibleOn,text:J(r?"justMySchoolTeachers":"justMySchoolDescription")};if(!Array.isArray(n))switch(n.privacy){case"public":return{icon:j.vn.VisibleOn,text:J("publicDescription")};case"protected":return n.overrideRestrictions?{icon:j.vn.VisibleOn,text:J("clickViewOnly")}:{icon:j.vn.Lock,text:Z(a,i,r)};case"just_my_customer":return n.overrideRestrictions?{icon:j.vn.Lock,text:J(r?"justMySchoolTeachers":"justMySchoolDescription")}:{icon:j.vn.Lock,text:Z(a,i,r)};case"restricted":case"private":return{icon:j.vn.Lock,text:J("privateDescription")};default:return{}}}(e);if(!t)return{icon:j.vn.Lock,text:J("password")};var a=D.O.isToday(t),i=D.O.diffBetween(t,new Date,"day");if(!n){var o=a?J("expiryToday"):J("expiry",{days:i});return r===X.F.Expired&&(o=J("expired")),{icon:j.vn.Timer,text:o}}var l=a?J("passwordExpiryToday"):J("passwordExpiry",{days:i});return r===X.F.Expired&&(l=J("passwordExpired")),{icon:j.vn.Lock,text:l}};function K(e){var t=e.active,n=e.title,a=e.description,i=e.onClick;return r.createElement("li",{className:"".concat(t?"bg-light-blue":""," dropdown-item d-flex align-items-center justify-content-between"),onClick:t?null:i},r.createElement("div",{className:"me-4"},r.createElement("p",{className:"fw-semibold mb-1"},n),r.createElement("p",{className:"font-size-sm mb-0"},a)),t&&r.createElement(P.x,{svgName:j.vn.Check}))}function _(e){var t=q(r.useState(!1),2),n=t[0],a=t[1],i=q(r.useState(null),2),o=i[0],l=i[1],c=Q(e),s=c.icon,u=c.text;r.useEffect((function(){a(e.privacy.canManageAccess),l(e.privacy.privacy)}),[e.privacy]);var m=n?"just_my_customer":"protected",d=!e.isPasswordProtected&&!e.linkExpireDate&&e.shareOverrideRestrictions&&!e.hasStudentExp;return r.createElement("div",{className:"d-flex align-items-center"},d?r.createElement("div",{className:"btn-group"},r.createElement("button",{className:"btn border-0 info-link dropdown-toggle p-1 ".concat(W.hoverBackground),"data-bs-toggle":"dropdown"},r.createElement(P.x,{svgName:s,className:"svg-container me-1"}),r.createElement("span",{className:"me-1"},u)),r.createElement("ul",{className:"dropdown-menu cursor-pointer"},n&&r.createElement(K,{active:"public"===o,title:J("public"),description:J("publicDescription"),onClick:function(){return e.onClickSavePrivacy("public",!1)}}),r.createElement(K,{active:o===m&&e.privacy.overrideRestrictions,title:J("justMySchool"),description:J(n?"justMySchoolDescription":"clickViewOnly"),onClick:function(){return e.onClickSavePrivacy(m,!0)}}),r.createElement(K,{active:o===m&&!e.privacy.overrideRestrictions,title:J("respectRatings"),description:Z(e.entity,e.yearGroups,e.hasStudentExp),onClick:function(){return e.onClickSavePrivacy(m,!1)}}),r.createElement(K,{active:"private"===o,title:J("private"),description:J("privateDescription"),onClick:function(){return e.onClickSavePrivacy("private",!1)}}))):r.createElement(r.Fragment,null,r.createElement(P.x,{svgName:s,className:"svg-container me-1"}),r.createElement("span",null,u)))}var $=n(76177);function ee(){return r.createElement("svg",{width:"24",height:"24",viewBox:"0 0 24 24",fill:"none"},r.createElement("circle",{cx:"12",cy:"12",r:"12",fill:"url(#pattern0)"}),r.createElement("defs",null,r.createElement("pattern",{id:"pattern0",patternContentUnits:"objectBoundingBox",width:"1",height:"1"},r.createElement("use",{xlinkHref:"#image0_3558_14996",transform:"scale(0.00520833)"})),r.createElement("image",{id:"image0_3558_14996",width:"192",height:"192",xlinkHref:"data:image/png;base64,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"})))}function te(){return r.createElement("svg",{viewBox:"0 0 40 40",fill:"none"},r.createElement("path",{d:"M29.692 15.31c.58 0 1.146-.173 1.628-.5a2.96 2.96 0 001.078-1.331 3.004 3.004 0 00-.634-3.235 2.918 2.918 0 00-1.5-.812 2.894 2.894 0 00-1.693.169 2.938 2.938 0 00-1.314 1.093 2.997 2.997 0 00.364 3.748 2.91 2.91 0 002.071.869zM20.043 26.267V13.849a.9.9 0 00-.259-.633.877.877 0 00-.624-.262H6.883a.877.877 0 00-.624.262.9.9 0 00-.259.633v12.418c0 .24.092.469.257.64.165.172.39.27.626.276H19.16a.899.899 0 00.626-.276.923.923 0 00.257-.64zm-3.51-10.389v1.92h-2.37v6.68H11.88V17.93H9.51v-2.182h7.022v.13z",fill:"#fff"}),r.createElement("path",{d:"M21.874 14.132v.917a4.03 4.03 0 002.05-1.47c.512-.699.79-1.545.793-2.415 0-1.1-.431-2.154-1.199-2.932a4.065 4.065 0 00-2.893-1.214 4.065 4.065 0 00-2.894 1.214 4.175 4.175 0 00-1.199 2.932h2.391a2.996 2.996 0 012.061.887c.55.552.868 1.297.89 2.081zM26.332 17.1h-4.458v8.883c0 .8-.309 1.566-.86 2.138-.552.57-1.302.9-2.091.917h-4.588a7.047 7.047 0 003.265 3.317c1.427.7 3.046.887 4.593.532a6.99 6.99 0 003.918-2.486 7.152 7.152 0 001.535-4.418v-7.551a1.348 1.348 0 00-.385-.942 1.313 1.313 0 00-.929-.39zM32.772 17.1h-3.597c.206.414.316.87.323 1.332v7.551a9.1 9.1 0 01-.516 2.859c.236.021.474.021.71 0a4.28 4.28 0 003.046-1.278A4.394 4.394 0 0034 24.477v-6.045c0-.339-.126-.665-.354-.912a1.307 1.307 0 00-.874-.42z",fill:"#fff"}))}var ne=n(50030),re="share.shareIntegrations";function ae(){var e="".concat(ne.Z.avatar," border border-light rounded-circle overflow-hidden");return r.createElement($.u,{title:i.T.getPhrase(re,"shareThroughIntegrations"),spanHack:!0},r.createElement("ul",{className:"list-unstyled d-flex mb-0"},r.createElement("li",{className:e,style:{zIndex:1}},r.createElement(ee,null)),r.createElement("li",{className:"".concat(e," ").concat(ne.Z.msTeamsContainer),style:{zIndex:0}},r.createElement(te,null))))}var ie=n(66903);function oe(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}var le="share.shareAsLink";function ce(e){var t,n,a=(t=r.useState(!1),n=2,function(e){if(Array.isArray(e))return e}(t)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,a,i,o,l=[],c=!0,s=!1;try{if(i=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;c=!1}else for(;!(c=(r=i.call(n)).done)&&(l.push(r.value),l.length!==t);c=!0);}catch(e){s=!0,a=e}finally{try{if(!c&&null!=n.return&&(o=n.return(),Object(o)!==o))return}finally{if(s)throw a}}return l}}(t,n)||function(e,t){if(e){if("string"==typeof e)return oe(e,t);var n={}.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)?oe(e,t):void 0}}(t,n)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),i=a[0],o=a[1];return r.createElement(r.Fragment,null,r.createElement("div",{className:"d-flex justify-content-between align-items-center"},r.createElement("div",{className:"".concat(e.shareLink?"w-100":"w-75 d-flex align-items-center")},e.shareLink?r.createElement(r.Fragment,null,r.createElement("div",{className:"d-flex justify-content-between align-items-center mb-1"},r.createElement(_,{linkExpireDate:e.shareLink.linkExpireDate,isPasswordProtected:e.shareLink.isPasswordProtected,privacy:e.privacy,entityTypeId:e.shareLink.objectTypeId,status:e.shareLink.status,onClickSavePrivacy:e.onClickSavePrivacy,hasStudentExp:e.hasStudentExp,entity:e.entity,yearGroups:e.yearGroups,shareOverrideRestrictions:e.shareOverrideRestrictions})),r.createElement(ie.k,{value:e.shareLink.url,onCopy:function(){i||(o(!0),u.k.logUserAction(Object.assign({},e.entity),u.k.mergeOptions(p.I.getAnalyticsOptions(e.entityType),{actionType:m.Vw.Share,descriptor:m.YM.CopyLink,eventVersion:m.eq.V3})))}})):r.createElement("div",{className:"d-flex align-items-center"},r.createElement("div",{className:"me-2"},e.enableIntegrations?r.createElement(ae,null):r.createElement(P.x,{svgName:j.vn.Link,className:"svg-container"})),r.createElement("span",{className:"fw-semibold"},r.createElement(f.x,{namespace:le,phrase:"createLink"})))),!e.shareLink&&r.createElement(S.L,{className:"info-link",onClick:e.onClickCreateLink},r.createElement(f.x,{phrase:"createLink"}))))}var se=n(74231),ue=n(92802),me=n(5173),de=n(38365),pe=n(82644),fe=i.T.encloseNamespace("share.shareMessage"),ve=me.Ry().shape({message:me.Z_().max(280,(function(){return fe("maxMessageLen")}))});function ye(){var e=(0,pe.b)();return r.createElement(ue.l0,null,r.createElement(de.W,{component:"textarea",name:"message",id:"message",placeholder:fe("placeholder"),value:e.values.message,label:fe("label"),showOptionalLabel:!0}),r.createElement(k.u,null,r.createElement(k.u.Submit,{variant:"dark",text:fe("share")})))}function he(e){return r.createElement(pe.n,{initialValues:{message:""},validationSchema:ve,onSubmit:function(t,n){var r=null;t.message&&(r=t.message),e.onClickShare(r,n)},allowInitialSubmit:!0},r.createElement(ye,null))}var ge=n(40424),be=n(16714),Ee=n(22902);function Ae(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=[],c=!0,s=!1;try{if(i=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;c=!1}else for(;!(c=(r=i.call(n)).done)&&(l.push(r.value),l.length!==t);c=!0);}catch(e){s=!0,a=e}finally{try{if(!c&&null!=n.return&&(o=n.return(),Object(o)!==o))return}finally{if(s)throw a}}return l}}(e,t)||ke(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 Se(e){return function(e){if(Array.isArray(e))return we(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||ke(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function ke(e,t){if(e){if("string"==typeof e)return we(e,t);var n={}.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)?we(e,t):void 0}}function we(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}var Ce="shared.share",xe=i.T.encloseNamespace(Ce);function Le(e,t,n,r){if(!e)return[];var a=[].concat(Se(t),Se(n)).map((function(e){return e.id}));return e.filter((function(e){return!a.includes(e.id)&&e.id!==r}))}function Ne(e){var t,n,a=Ae(r.useState([]),2),i=a[0],o=a[1],l=Ae(r.useState(!1),2),c=l[0],s=l[1],u=(0,Ee.T)().hasPermissions,m=u(be.C.ManageIntegrations),d=u(be.C.ShareToUsers)||u(be.C.ShareToClassrooms)||u(be.C.ShareToClassroomGroups),p=Le(e.recentlySharedTo,i,e.directShareRecipients,e.currentUser.id);return r.useEffect((function(){s(!!e.shareLinkIsLoading)}),[e.shareLinkIsLoading]),r.createElement(r.Fragment,null,d&&r.createElement("div",{className:"bg-white rounded-bottom-3 pt-3 px-3 mb-2"},r.createElement("div",{className:"d-flex justify-content-between align-items-center pb-3"},r.createElement(z.R,{key:null!==(t=null==p?void 0:p.map((function(e){return e.id})).join(":"))&&void 0!==t?t:"share:search",getRemoteUrl:function(){return N._.safeUrlConcat(e.gatewayApiUrl,"v4/search")},getRemotePostBody:function(t){var n=[];return u(be.C.ShareToUsers)&&n.push({index:"user",filters:{userProfile:{status:["".concat(ge.w.Active.toLowerCase())],customerId:e.currentUser.customerId}}}),u(be.C.ShareToClassrooms)&&n.push({index:"classroom"}),u(be.C.ShareToClassroomGroups)&&n.push({index:"classroom_group"}),{query:t,indices:n,searchType:"user",limit:z.d}},requestHeaders:e.searchRequestHeaders,formatRemoteSuggestions:function(t){return Le(null==t?void 0:t.results,i,e.directShareRecipients,e.currentUser.id)},recentSearches:p,selections:i,onSuggestionSelected:function(e){return o([].concat(Se(i),[e]))},removeSelection:function(e){return o(i.filter((function(t){return t.id!==e.id})))},placeholder:xe("searchPlaceholder"),imageCdnUrl:e.imageCdnUrl,activationLength:2,fetchSelectionMembers:e.fetchRecipientUsers&&function(t){e.fetchRecipientUsers&&e.fetchRecipientUsers(t,(function(e){var n=[];i.forEach((function(r){var a;if(r.id!==t)return n.push(r);var i=O.t.deepClone(r);(null===(a=null==e?void 0:e.data)||void 0===a?void 0:a.length)?i.users=e:i.users={count:0,data:[],pagination:null},n.push(i)})),o(I.m.uniq(n,"id"))}))},debounceTime:300,emptyStateImageUrl:e.emptyStateImageUrl,errorStateImageUrl:e.errorStateImageUrl,hasStudentExperience:u(be.C.StudentExperience)})),!i.length&&e.directShareRecipients.length?r.createElement("div",null,r.createElement("h3",{className:"font-size-normal"},r.createElement(f.x,{phrase:"sharedTo"})),r.createElement(L.$B,{autoHeight:!0},r.createElement("ul",{className:"list-unstyled"},e.directShareRecipients.map((function(t){return r.createElement("li",{key:t.id,className:"mb-2 pe-1"},r.createElement(V.j,{entity:t,imageCdnUrl:e.imageCdnUrl,removeRecipient:e.onClickRemoveRecipient,showDisplayName:u(be.C.StudentExperience)}))}))))):r.createElement(r.Fragment,null),!!i.length&&r.createElement("div",{className:"pb-3"},r.createElement(he,{onClickShare:function(t,n){e.onClickShare(i.map((function(e){return{id:e.id,typeId:e.typeId}})),t,(function(){o([]),n()}))}}))),!i.length&&!c&&r.createElement("div",{className:"bg-white p-3 ".concat(d?"rounded-3":"rounded-bottom-3")},r.createElement("div",null,e.shareLink&&r.createElement("div",{className:"fw-semibold mb-2"},r.createElement(f.x,{namespace:Ce,phrase:"shareLink"})),r.createElement(ce,{entity:e.entity,entityType:e.entityType,shareLink:e.shareLink,onClickShowSettings:e.onClickShowSettings,onClickCreateLink:function(){s(!0),e.onClickCreateLink()},shareLinkIsLoading:e.shareLinkIsLoading,canAddPolicies:e.canAddPolicies,privacy:e.privacy,entityTypeId:e.entity.typeId,onClickSavePrivacy:e.onClickSavePrivacy,enableIntegrations:e.enableIntegrationBanner,hasStudentExp:u(be.C.StudentExperience),yearGroups:e.yearGroups,shareOverrideRestrictions:e.shareOverrideRestrictions}),e.shareLink&&e.enableIntegrationBanner&&r.createElement("div",{className:"".concat((null===(n=e.integrations)||void 0===n?void 0:n.length)&&e.canEmbed?"float-end":""," mt-1 pt-1")},r.createElement(se.T,{integrations:e.integrations,url:e.shareLink.url,closePopup:e.closePopup,appLink:m?e.integrationSettingAppLink:e.messagePopupAppLink})),e.shareLink&&e.canEmbed&&r.createElement("div",{className:"mt-1"},r.createElement(B,{onClickGetEmbedCode:e.onClickGetEmbedCode})),e.shareLink&&e.canAddPolicies&&r.createElement("button",{className:"btn btn-link text-info mt-2 p-0",onClick:e.onClickShowSettings},r.createElement(f.x,{namespace:Ce,phrase:"advancedSettings"})))),c&&r.createElement("div",{className:"bg-white rounded-3 p-3 text-center"},r.createElement(x.Z,{as:"div",animation:"border",role:"status"})))}var Ie=n(62124),Oe=n(20847),Pe=n(61193);function je(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}var Te="shared.share",Ue=i.T.encloseNamespace(Te);function Be(e){var t,n,a=(0,Ee.T)().hasPermissions,i=(t=r.useState(!!e.shareLink.isPasswordProtected),n=2,function(e){if(Array.isArray(e))return e}(t)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,a,i,o,l=[],c=!0,s=!1;try{if(i=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;c=!1}else for(;!(c=(r=i.call(n)).done)&&(l.push(r.value),l.length!==t);c=!0);}catch(e){s=!0,a=e}finally{try{if(!c&&null!=n.return&&(o=n.return(),Object(o)!==o))return}finally{if(s)throw a}}return l}}(t,n)||function(e,t){if(e){if("string"==typeof e)return je(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?je(e,t):void 0}}(t,n)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),o=i[0],l=i[1];return r.createElement(ue.l0,null,r.createElement("div",{className:"d-flex justify-content-between align-items-center pb-3"},r.createElement("div",null,r.createElement("label",{className:"mb-0"},r.createElement(f.x,{namespace:Te,phrase:"deleteLinkLabel"})),r.createElement("p",{className:"mb-0"},r.createElement(f.x,{namespace:Te,phrase:"deleteLinkDescription"}))),r.createElement(S.L,{onClick:e.onClickDeleteLink,className:"info-link justify-self-start"},r.createElement(f.x,{phrase:"deleteLink"}))),a(be.C.ManageShareLinkSettings)&&r.createElement(r.Fragment,null,r.createElement(Ie.a,{passwordProtectLink:o}),e.shareOverrideRestrictions&&r.createElement(Oe.z,{shareLink:e.shareLink,passwordProtectLink:o,setPasswordProtectLink:l})),r.createElement(k.u,null,r.createElement(k.u.Cancel,{onClick:e.onClickCancel,text:Ue("back"),variant:"outline-dark"}),r.createElement(k.u.Submit,{variant:"dark"})))}function Ve(e){var t={password:"",removePassword:!1,linkExpireDate:e.shareLink.linkExpireDate,overrideRestrictions:e.shareLink.overrideRestrictions};return r.createElement(r.Fragment,null,r.createElement(pe.n,{initialValues:t,onSubmit:e.onClickSaveLink,castInitialValues:!1,validationSchema:Pe.d},r.createElement(Be,{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})))}var ze=n(9111),De=n(39151),Fe=n(1666),Me=n(31949),Re=n(69883),He=n(37802),Ze=n(40841);function Ge(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}var Xe="shared.share",We=i.T.encloseNamespace(Xe);function qe(e){switch(e){case"video":return We("titleVideo");case"clip":return We("titleClip");case"interactive":return We("titleInteractive");case"series":return We("titleSeries");case"playlist":return We("titlePlaylist");case"subject":return We("titleTopic")}}var Ye=function(e){return"video"===e||"interactive"===e||"clip"===e},Je=function(e){return"video"===e||"interactive"===e||"clip"===e};function Qe(e){var t,n,i,s,u,m=(0,a.I0)(),d=(0,Re.Z)(),v=!e.gatewayApiUrl,y=(s=r.useState("main"),u=2,function(e){if(Array.isArray(e))return e}(s)||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=[],c=!0,s=!1;try{if(i=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;c=!1}else for(;!(c=(r=i.call(n)).done)&&(l.push(r.value),l.length!==t);c=!0);}catch(e){s=!0,a=e}finally{try{if(!c&&null!=n.return&&(o=n.return(),Object(o)!==o))return}finally{if(s)throw a}}return l}}(s,u)||function(e,t){if(e){if("string"==typeof e)return Ge(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?Ge(e,t):void 0}}(s,u)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),h=y[0],g=y[1],b=(0,Ee.T)().hasPermissions,E=o.a.useBasicFetch(Me.N.currentUser()),A=p.I.getFetchFunctionByType(e.entityType)(e.entityId,null===(t=E.data)||void 0===t?void 0:t.id),S=o.a.useBasicFetch(De.L.config()),k=o.a.useBasicFetch(v&&Me.N.token()),w=o.a.useBasicFetch(l.o.getShareLinkByObjectId(e.entityId)),x=o.a.useBasicFetch(l.o.getSentDirectShareByObjectId(e.entityId)),L=o.a.useBasicFetch((null===(n=E.data)||void 0===n?void 0:n.customerId)&&p.I.getDirectShareRecipientsRequest(E.data.customerId,x.data)),N=E.data&&c.R.getRecentlySharedTo(E.data.id),I=!!(null==N?void 0:N.length),O=o.a.useBasicFetch(I&&l.o.getRecipientsById(N,E.data.customerId)),P=o.a.useBasicFetch(l.o.getPrivacy(e.entityId)),j=o.a.useBasicFetch((null===(i=E.data)||void 0===i?void 0:i.isAuthenticated)&&Fe.h.yearGroups(E.data.customerId)),T=(0,He.r)(null),U=T.shareToGoogleClassroom,B=T.shareToMicrosoftTeams,V=T.shareOverrideRestrictions,z=T.isLoadingSettings;function D(e,t){var n;(null===(n=t.recipients)||void 0===n?void 0:n.length)&&o.a.getFetch(m)(p.I.getDirectShareRecipientsRequest(e,t))}function F(e,t){o.a.getFetch(m)(l.o.getRecipientUsers(e,t))}function M(){w.data||p.I.createLink({dispatch:m,entity:A.data,entityType:e.entityType,alerts:d})}function R(t,n){p.I.updateLink(m,A.data,e.entityType,w.data,t,d,(function(){return g("main")}),n)}function H(){p.I.deleteLink(m,A.data,e.entityType,w.data,d,(function(){return g("main")}))}function Z(t,n,r){p.I.createOrUpdateDirectShare({dispatch:m,entity:A.data,entityType:e.entityType,currentUser:E.data,recipients:t,message:n,sentDirectShare:x.data,onSuccess:function(e){return D(E.data.customerId,e)},onError:function(){return d.error(We("directShareError",{name:A.data.name}))},onDone:r})}function G(t,n){p.I.removeDirectShareRecipient(m,t,e.entityType,x.data,(function(e){return D(E.data.customerId,e)}),(function(){d.error(We("removeDirectShareError")),n&&n()}))}function X(e,t){"private"!==e?o.a.fetch(m,l.o.updatePrivacy(w.data.id,e,t,(function(){return d.success(We("privaciesSuccess",{name:A.data.name}))}),(function(){return d.error(We("privaciesError",{name:A.data.name}))}))):H()}var W=!(!E.data||!S.data||v&&!k.data||!x.hasCompleted||!P.data||!A.data||z||!j.hasCompleted);return r.createElement(f.D.Provider,{value:Xe},r.createElement(ze.G,{title:qe(e.entityType),closePopup:e.closePopup,showLoadingSpinner:!W,contentClassName:W&&h?"bg-transparent border-0":"",bodyClassName:"p-0"},function(){if(!W)return r.createElement(r.Fragment,null);switch(h){case"main":return r.createElement(Ne,{shareLink:w.data,shareLinkIsLoading:w.isFetching,entity:A.data,entityType:e.entityType,directShareRecipients:L.data||[],recentlySharedTo:O.data||[],onClickCreateLink:M,onClickShowSettings:function(){return g("link-settings")},onClickShare:Z,onClickRemoveRecipient:G,onClickGetEmbedCode:function(){return g("copy-embed")},analyticsOptions:p.I.getAnalyticsOptions(e.entityType),gatewayApiUrl:e.gatewayApiUrl||S.data.gatewayApiUrl,imageCdnUrl:S.data.imageCdnUrl,searchRequestHeaders:v?{authorization:"Bearer ".concat(k.data.value)}:null,currentUser:E.data,fetchRecipientUsers:F,privacy:P.data,onClickSavePrivacy:X,canAddPolicies:Je(e.entityType),emptyStateImageUrl:e.emptyStateImageUrl,errorStateImageUrl:e.errorStateImageUrl,integrations:(t=U,n=B,Ze._.getShareIntegrations(t,n).filter((function(e){return e.enabled})).map((function(e){return e.id}))),integrationSettingAppLink:e.integrationSettingAppLink,messagePopupAppLink:e.messagePopupAppLink,closePopup:e.closePopup,enableIntegrationBanner:e.enableIntegrationBanner,canEmbed:Ye(e.entityType),yearGroups:j.data,shareOverrideRestrictions:V});case"link-settings":return r.createElement("div",{className:"bg-white p-3 rounded-bottom-3"},r.createElement(Ve,{entity:A.data,entityType:e.entityType,config:S.data,shareLink:w.data,entityId:e.entityId,analyticsOptions:p.I.getAnalyticsOptions(e.entityType),onClickSaveLink:R,onClickDeleteLink:H,onClickCancel:function(){return g("main")},privacy:P.data,hasStudentExp:b(be.C.StudentExperience),shareOverrideRestrictions:V}));case"copy-embed":return r.createElement("div",{className:"bg-white p-3 rounded-bottom-3"},r.createElement(C,{entity:A.data,entityType:e.entityType,config:S.data,shareLink:w.data,entityId:e.entityId,analyticsOptions:p.I.getAnalyticsOptions(e.entityType),onClickCancel:function(){return g("main")}}))}var t,n}()))}},38365:(e,t,n)=>{n.d(t,{n:()=>A,W:()=>S});var r=n(32735),a=n(80247),i=n(80130),o=n(92802),l=n(91967),c=n(1048),s=n(36848),u=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 m(e){var t=e.label,n=e.checkboxLabelClassName,a=e.checkboxLabelFontWeight,o=e.className,l=u(e,["label","checkboxLabelClassName","checkboxLabelFontWeight","className"]);return r.createElement(i.Z.Group,{className:"form-group"},r.createElement("div",{className:"form-check ".concat(o||"")},r.createElement(A,Object.assign({className:"form-check-input"},l)),r.createElement(i.Z.Label,{className:"form-check-label cursor-pointer ".concat("normal"===a?"fw-normal":""," \n ").concat(n),htmlFor:l.id},t),e.checkboxAppLink&&e.checkboxAppLinkText&&r.createElement(r.Fragment,null,r.createElement("span",null," "),r.createElement(s.F,{appLink:e.checkboxAppLink,className:"info-link"},e.checkboxAppLinkText))))}var d=n(83914),p=n(83345),f=n(73814),v=n(35223);function y(e){var t=(0,o.u6)().values[e.fieldName];return"string"!=typeof t?r.createElement(r.Fragment,null):r.createElement("div",{className:"float-end text-secondary fw-normal"},t.length,"/",e.limit," characters")}const h={revealPassword:"jCfI0",passwordInput:"RBJnf",passwordContainer:"d78lK",passwordContainerDisabled:"asbVo",infoTooltip:"wzyOG",spinner:"CycFx"};function g(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}var b=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},E="shared.formField";function A(e){var t,n,i=e.children,s=e.showLoadingSpinner,u=b(e,["children","showLoadingSpinner"]),m=(t=r.useState(e.type),n=2,function(e){if(Array.isArray(e))return e}(t)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,a,i,o,l=[],c=!0,s=!1;try{if(i=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;c=!1}else for(;!(c=(r=i.call(n)).done)&&(l.push(r.value),l.length!==t);c=!0);}catch(e){s=!0,a=e}finally{try{if(!c&&null!=n.return&&(o=n.return(),Object(o)!==o))return}finally{if(s)throw a}}return l}}(t,n)||function(e,t){if(e){if("string"==typeof e)return g(e,t);var n={}.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)?g(e,t):void 0}}(t,n)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),p=m[0],f=m[1],y=l.q.isFunction(i)?function(e){return i(e)}:r.Children.count(i)?i:null;if("password"!==u.type)return s?r.createElement("div",{className:"position-relative"},r.createElement(o.gN,Object.assign({},c.t.omit(u,["formSize"])),y),r.createElement("div",{className:h.spinner},r.createElement(a.Z,{animation:"border",size:"sm"}))):r.createElement(o.gN,Object.assign({},c.t.omit(u,["formSize"])),y);var E="position-relative ".concat(h.passwordContainer);return u.className&&(E+=" ".concat(u.className)),u.disabled&&(E+=" ".concat(h.passwordContainerDisabled)),r.createElement("div",{className:E},r.createElement(o.gN,Object.assign({},c.t.omit(u,["formSize","type","className"]),{type:p,className:"".concat(h.passwordInput," border-0 w-100 h-100 outline-none rounded")}),y),"password"===u.type&&r.createElement(d.x,{svgName:"password"===p?v.vn.VisibleOn:v.vn.VisibleOff,className:"svg-container cursor-pointer ".concat(h.revealPassword),onClick:function(){f("password"===p?"text":"password")}}))}function S(e){var t=e.label,n=e.className,a=e.showCharacterCounter,l=e.showRequiredStar,s=e.infoTooltip,u=e.infoTooltipPlacement,g=e.infoText,S=e.formSize,k=e.showOptionalLabel,w=b(e,["label","className","showCharacterCounter","showRequiredStar","infoTooltip","infoTooltipPlacement","infoText","formSize","showOptionalLabel"]),C=(0,o.u6)(),x=C.errors,L=C.touched,N=function(){};if("checkbox"===w.type){var I=c.t.omit(e,["formSize","infoTooltipPlacement"]);return e.disabled&&(I.onChange=N),r.createElement(m,Object.assign({},I))}var O=Object.assign(Object.assign({},w),{className:f.w.getCustomFormControlClassName(x,L,w.name,S,n,"string"==typeof e.as?e.as:null)});return e.disabled&&(O.onChange=N),r.createElement(i.Z.Group,{className:"form-group"},!!t&&r.createElement(i.Z.Label,{htmlFor:w.id,className:"d-flex align-items-center"},t,l&&r.createElement("span",{className:"text-danger"},"*"),s&&r.createElement(d.x,{className:"svg-container text-secondary ".concat(h.infoTooltip),svgName:v.vn.Info,title:s,tooltipPlacement:u,tooltipSpanHack:!0}),k&&r.createElement("span",{className:"text-secondary"}," ",r.createElement(p.x,{namespace:E,phrase:"optional"})),!!a&&!!w.maxLength&&r.createElement("div",{className:"ms-auto"},r.createElement(y,{fieldName:w.name,limit:w.maxLength}))),r.createElement(A,Object.assign({},O)),!!g&&r.createElement(i.Z.Text,{className:"text-secondary"},g),r.createElement(o.Bc,{name:w.name},(function(e){return r.createElement(i.Z.Control.Feedback,{type:"invalid"},e)})))}A.defaultProps={autoComplete:"off"},S.defaultProps={autoComplete:"off",infoTooltipPlacement:"top"}},82644:(e,t,n)=>{n.d(t,{b:()=>u,n:()=>s});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=Array(t);n<t;n++)r[n]=e[n];return r}var c=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 s(e){var t=e.castInitialValues,n=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=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}(s)):s,p={allowInitialSubmit:e.allowInitialSubmit};return r.createElement(a.J9,Object.assign({enableReinitialize:!0},m,{initialValues:d,onSubmit:function(t,r){var a=r.setSubmitting,i=r.resetForm,o=r.setFieldError,c=n&&e.validationSchema?e.validationSchema.cast(t):t;u(c,(function(){var e,t,n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(n.reset&&i(),n.errors)for(var r=0,c=Object.entries(n.errors);r<c.length;r++){var s=(e=c[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=[],c=!0,s=!1;try{if(i=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;c=!1}else for(;!(c=(r=i.call(n)).done)&&(l.push(r.value),l.length!==t);c=!0);}catch(e){s=!0,a=e}finally{try{if(!c&&null!=n.return&&(o=n.return(),Object(o)!==o))return}finally{if(s)throw a}}return l}}(e,t)||function(e,t){if(e){if("string"==typeof e)return l(e,t);var n={}.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=s[0],m=s[1];o(u,m)}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)()}s.defaultProps={castInitialValues:!0,castValuesOnSubmit:!0}},73814:(e,t,n)=>{n.d(t,{w:()=>a});var r=n(92802),a={getCustomFormControlClassName:function(e,t,n,a,i,o){var l="";return l=function(e,t){var n="";return n="select"===e?"form-select":"form-control","sm"===t&&(n+=" ".concat(n,"-sm")),"lg"===t&&(n+=" ".concat(n,"-lg")),n}(o,a),(0,r.u9)(t,n)&&(0,r.u9)(e,n)&&(l+=" is-invalid"),i&&(l+=" ".concat(i)),l}}}}]);
|
|
2
|
+
//# sourceMappingURL=7301-49c2341e97-lite.chunk.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scripts/7301-49c2341e97-lite.chunk.js","mappings":"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","sources":["file:///Users/joshua.taylor/Projects/clickview/packages/libs/shared/src/apps/share/components/embed-size/EmbedSize.tsx","file:///Users/joshua.taylor/Projects/clickview/packages/libs/shared/src/apps/share/components/link-expiry/LinkExpiry.tsx","file:///Users/joshua.taylor/Projects/clickview/packages/libs/shared/src/apps/share/components/set-password-input/set-password-input.scss","file:///Users/joshua.taylor/Projects/clickview/packages/libs/shared/src/apps/share/components/set-password-input/SetPasswordInput.tsx","file:///Users/joshua.taylor/Projects/clickview/packages/libs/shared/src/apps/share/components/link-password/LinkPassword.tsx","file:///Users/joshua.taylor/Projects/clickview/packages/libs/shared/src/apps/share/utils/LinkExpiryHelper.ts","file:///Users/joshua.taylor/Projects/clickview/packages/libs/shared/src/apps/share/validation/ShareLinkSettingsValidationSchema.ts","file:///Users/joshua.taylor/Projects/clickview/packages/libs/shared/src/apps/share/components/copy-embed-html/copy-embed-html.scss","file:///Users/joshua.taylor/Projects/clickview/packages/libs/shared/src/apps/share/components/copy-embed-html/CopyEmbedHtml.tsx","file:///Users/joshua.taylor/Projects/clickview/packages/libs/shared/src/apps/share/views/share/components/copy-embed/CopyEmbed.tsx","file:///Users/joshua.taylor/Projects/clickview/packages/libs/shared/src/apps/share/components/get-embed-code/get-embed-code.scss","file:///Users/joshua.taylor/Projects/clickview/packages/libs/shared/src/apps/share/components/get-embed-code/GetEmbedCode.tsx","file:///Users/joshua.taylor/Projects/clickview/packages/libs/shared/src/apps/share/components/share-link-info/getRespectRatingText.ts","file:///Users/joshua.taylor/Projects/clickview/packages/libs/shared/src/apps/share/components/share-link-info/share-link-info.scss","file:///Users/joshua.taylor/Projects/clickview/packages/libs/shared/src/apps/share/components/share-link-info/ShareLinkInfo.tsx","file:///Users/joshua.taylor/Projects/clickview/packages/libs/shared/src/apps/share/views/share/components/share-integrations/avatars/GoogleClassroomAvatar.tsx","file:///Users/joshua.taylor/Projects/clickview/packages/libs/shared/src/apps/share/views/share/components/share-integrations/avatars/MicrosoftTeamsAvatar.tsx","file:///Users/joshua.taylor/Projects/clickview/packages/libs/shared/src/apps/share/views/share/components/share-integrations/ShareIntegrationsStack.tsx","file:///Users/joshua.taylor/Projects/clickview/packages/libs/shared/src/apps/share/views/share/components/share-as-link/ShareAsLink.tsx","file:///Users/joshua.taylor/Projects/clickview/packages/libs/shared/src/apps/share/views/share/components/share-message/ShareMessage.tsx","file:///Users/joshua.taylor/Projects/clickview/packages/libs/shared/src/apps/share/views/share/components/main-share/MainShare.tsx","file:///Users/joshua.taylor/Projects/clickview/packages/libs/shared/src/apps/share/views/share/components/share-settings/ShareSettings.tsx","file:///Users/joshua.taylor/Projects/clickview/packages/libs/shared/src/apps/share/views/share/ShareView.tsx","file:///Users/joshua.taylor/Projects/clickview/packages/libs/shared/src/components/forms/form-checkbox/FormCheckbox.tsx","file:///Users/joshua.taylor/Projects/clickview/packages/libs/shared/src/components/forms/form-field/CharacterCounter.tsx","file:///Users/joshua.taylor/Projects/clickview/packages/libs/shared/src/components/forms/form-field/form-field.scss","file:///Users/joshua.taylor/Projects/clickview/packages/libs/shared/src/components/forms/form-field/FormField.tsx","file:///Users/joshua.taylor/Projects/clickview/packages/libs/shared/src/components/forms/form-wrapper/FormWrapper.tsx","file:///Users/joshua.taylor/Projects/clickview/packages/libs/shared/src/utils/FormHelper.ts"],"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});","// extracted by mini-css-extract-plugin\nexport default {\"embedHtmlInput\":\"mwvd0\",\"copyBtnContainer\":\"myePx\"};","import React from 'react';\nimport { CopyToClipboard } from 'react-copy-to-clipboard';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { AnalyticsHelper } from 'libs/analytics/AnalyticsHelper';\nimport { EventVersion, ShareDescriptors, UserAction } from 'libs/analytics/interfaces';\n\nimport { EmbedSize } from 'libs/shared/apps/share/components/embed-size/EmbedSize';\nimport { SharableEntityType, ShareViewHelper } from 'libs/shared/apps/share/views/share/ShareViewHelper';\nimport { LanguageNamespaceContext, Text } from 'libs/shared/components/text/Text';\nimport { BaseObject, Config, PropsWithAnalyticsOptions } from 'libs/shared/interfaces';\nimport { EmbedHelper, EmbedResolution } from 'libs/shared/utils/EmbedHelper';\n\nimport styles from './copy-embed-html.scss';\n\nconst namespace = 'share.copyEmbedHtml';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ntype CopyEmbedHtmlProps = PropsWithAnalyticsOptions<{\n entity: BaseObject;\n entityType: SharableEntityType;\n config: Config;\n entityId: string;\n shareId: string;\n embedUrl: string;\n}>;\n\nexport function CopyEmbedHtml(props: CopyEmbedHtmlProps): JSX.Element {\n const videoSizes = EmbedHelper.getEmbedResolutions();\n\n const [ copyBtnPhrase, setCopyBtnPhrase ] = React.useState<'copy' | 'copied'>('copy');\n const [ autoplay, setAutoplay ] = React.useState(false);\n const [ videoSize, setVideoSize ] = React.useState<EmbedResolution>(videoSizes.find(s => s.width === '100%'));\n\n const [ logged, setLogged ] = React.useState(false);\n function onCopy(): void {\n setCopyBtnPhrase('copied');\n setTimeout(() => setCopyBtnPhrase('copy'), 2000);\n\n // Because our users are double clickers\n if (logged)\n return;\n\n setLogged(true);\n\n AnalyticsHelper.logUserAction({\n ...props.entity,\n embedDetails: {\n size: videoSize,\n autoplay\n }\n }, AnalyticsHelper.mergeOptions(ShareViewHelper.getAnalyticsOptions(props.entityType), {\n actionType: UserAction.Share,\n descriptor: ShareDescriptors.CopyEmbedHtml,\n eventVersion: EventVersion.V3\n }));\n }\n\n const url = EmbedHelper.buildEmbedUrl({\n embedUrl: props.embedUrl,\n host: props.config.primaryUrl,\n shareId: props.shareId,\n autoplay\n });\n \n const embedString = EmbedHelper.getEmbedString({\n url,\n size: videoSize\n });\n\n return (\n <LanguageNamespaceContext.Provider value={namespace}>\n <label><Text namespace={namespace} phrase='label' /></label>\n <div className='position-relative mb-3'>\n <textarea\n className={`form-control rounded w-100 h-100 ${styles.embedHtmlInput}`}\n spellCheck={false}\n value={embedString}\n rows={7}\n readOnly\n />\n <CopyToClipboard onCopy={onCopy} text={embedString}>\n <button className={`btn btn-outline-dark border border-secondary position-absolute bottom-0 end-0 ${styles.copyBtnContainer}`} type='button'>\n {getPhrase(copyBtnPhrase)}\n </button>\n </CopyToClipboard>\n </div>\n <EmbedSize\n autoplay={autoplay}\n setAutoplay={setAutoplay}\n videoSize={videoSize}\n setVideoSize={setVideoSize}\n videoSizes={videoSizes}\n />\n </LanguageNamespaceContext.Provider>\n );\n}\n","import React from 'react';\n\nimport { AnalyticsOptions } from 'libs/analytics/interfaces';\n\nimport { CopyEmbedHtml } from 'libs/shared/apps/share/components/copy-embed-html/CopyEmbedHtml';\nimport { SharableEntityType } from 'libs/shared/apps/share/views/share/ShareViewHelper';\nimport { DivButton } from 'libs/shared/components/div-button/DivButton';\nimport { PopupButtons } from 'libs/shared/components/popup/PopupButtons';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { BaseObject, Config, ShareLink } from 'libs/shared/interfaces';\n\nconst namespace = 'shared.share';\n\ninterface CopyEmbedProps {\n entity: BaseObject;\n entityType: SharableEntityType;\n shareLink: ShareLink;\n config: Config;\n entityId: string;\n analyticsOptions: AnalyticsOptions;\n onClickCancel: () => void;\n}\n\nexport function CopyEmbed(props: CopyEmbedProps) {\n return (\n <>\n <div className='mb-3'>\n <CopyEmbedHtml\n embedUrl={props.shareLink.embedUrl}\n entity={props.entity}\n entityType={props.entityType}\n config={props.config}\n entityId={props.entityId}\n shareId={props.shareLink.id}\n analyticsOptions={props.analyticsOptions}\n />\n </div>\n\n <PopupButtons>\n <DivButton onClick={props.onClickCancel} className='btn btn-outline-dark'>\n <Text namespace={namespace} phrase='back'/>\n </DivButton>\n </PopupButtons>\n </>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"hoverBackground\":\"ICTmv\"};","import React from 'react';\n\nimport { DivButton } from 'libs/shared/components/div-button/DivButton';\nimport { SvgContainer, SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport styles from './get-embed-code.scss';\n\nconst namespace = 'share.getEmbedCode';\n\ninterface GetEmbedCodeProps {\n onClickGetEmbedCode: () => void\n}\n\nexport function GetEmbedCode(props: GetEmbedCodeProps) {\n return (\n <DivButton\n onClick={props.onClickGetEmbedCode}\n className={`d-inline-block p-1 pe-2 rounded-1 ${styles.hoverBackground}`}\n >\n <div className='d-flex align-items-center'>\n <div className='bg-dark text-white rounded-1 me-2'>\n <SvgContainer svgName={cvSvgLibrary.Code} size={SvgContainerSize.Large} />\n </div>\n <Text namespace={namespace} phrase='getEmbedCode' />\n </div>\n </DivButton>\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}","// extracted by mini-css-extract-plugin\nexport default {\"hoverBackground\":\"R3fNE\"};","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\nimport styles from './share-link-info.scss';\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 ${styles.hoverBackground}`} 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 React from 'react';\n\nexport function GoogleClassroomAvatar(): JSX.Element {\n return (\n <svg width='24' height='24' viewBox='0 0 24 24' fill='none'>\n <circle cx='12' cy='12' r='12' fill='url(#pattern0)'/>\n <defs>\n <pattern id='pattern0' patternContentUnits='objectBoundingBox' width='1' height='1'>\n <use xlinkHref='#image0_3558_14996' transform='scale(0.00520833)'/>\n </pattern>\n <image id='image0_3558_14996' width='192' height='192' xlinkHref='data:image/png;base64,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'/>\n </defs>\n </svg>\n );\n}","import React from 'react';\n\nexport function MicrosoftTeamsAvatar(): JSX.Element {\n return (\n <svg viewBox='0 0 40 40' fill='none'>\n <path d='M29.692 15.31c.58 0 1.146-.173 1.628-.5a2.96 2.96 0 001.078-1.331 3.004 3.004 0 00-.634-3.235 2.918 2.918 0 00-1.5-.812 2.894 2.894 0 00-1.693.169 2.938 2.938 0 00-1.314 1.093 2.997 2.997 0 00.364 3.748 2.91 2.91 0 002.071.869zM20.043 26.267V13.849a.9.9 0 00-.259-.633.877.877 0 00-.624-.262H6.883a.877.877 0 00-.624.262.9.9 0 00-.259.633v12.418c0 .24.092.469.257.64.165.172.39.27.626.276H19.16a.899.899 0 00.626-.276.923.923 0 00.257-.64zm-3.51-10.389v1.92h-2.37v6.68H11.88V17.93H9.51v-2.182h7.022v.13z' fill='#fff'/>\n <path d='M21.874 14.132v.917a4.03 4.03 0 002.05-1.47c.512-.699.79-1.545.793-2.415 0-1.1-.431-2.154-1.199-2.932a4.065 4.065 0 00-2.893-1.214 4.065 4.065 0 00-2.894 1.214 4.175 4.175 0 00-1.199 2.932h2.391a2.996 2.996 0 012.061.887c.55.552.868 1.297.89 2.081zM26.332 17.1h-4.458v8.883c0 .8-.309 1.566-.86 2.138-.552.57-1.302.9-2.091.917h-4.588a7.047 7.047 0 003.265 3.317c1.427.7 3.046.887 4.593.532a6.99 6.99 0 003.918-2.486 7.152 7.152 0 001.535-4.418v-7.551a1.348 1.348 0 00-.385-.942 1.313 1.313 0 00-.929-.39zM32.772 17.1h-3.597c.206.414.316.87.323 1.332v7.551a9.1 9.1 0 01-.516 2.859c.236.021.474.021.71 0a4.28 4.28 0 003.046-1.278A4.394 4.394 0 0034 24.477v-6.045c0-.339-.126-.665-.354-.912a1.307 1.307 0 00-.874-.42z' fill='#fff'/>\n </svg>\n );\n}","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { Tooltip } from 'libs/shared/components/tooltip/Tooltip';\n\nimport { GoogleClassroomAvatar } from './avatars/GoogleClassroomAvatar';\nimport { MicrosoftTeamsAvatar } from './avatars/MicrosoftTeamsAvatar';\n\nimport styles from './share-integrations.scss';\n\nconst namespace = 'share.shareIntegrations';\n\nexport function ShareIntegrationsStack(): JSX.Element {\n const className = `${styles.avatar} border border-light rounded-circle overflow-hidden`;\n\n return (\n <Tooltip title={LanguageService.getPhrase(namespace, 'shareThroughIntegrations')} spanHack>\n <ul className='list-unstyled d-flex mb-0'>\n <li className={className} style={{ zIndex: 1 }}>\n <GoogleClassroomAvatar />\n </li>\n\n <li className={`${className} ${styles.msTeamsContainer}`} style={{ zIndex: 0 }}>\n <MicrosoftTeamsAvatar />\n </li>\n </ul>\n </Tooltip>\n );\n}","import React from 'react';\n\nimport { AnalyticsHelper } from 'libs/analytics/AnalyticsHelper';\nimport { EventVersion, ShareDescriptors, UserAction } from 'libs/analytics/interfaces';\n\nimport { ShareLinkInfo } from 'libs/shared/apps/share/components/share-link-info/ShareLinkInfo';\nimport { SharePrivacyResponse } from 'libs/shared/apps/share/interfaces/responses/SharePrivacyResponse';\nimport { SharePrivacy } from 'libs/shared/apps/share/interfaces/SharePrivacy';\nimport { ShareIntegrationsStack } from 'libs/shared/apps/share/views/share/components/share-integrations/ShareIntegrationsStack';\nimport { SharableEntityType, ShareViewHelper } from 'libs/shared/apps/share/views/share/ShareViewHelper';\nimport { CopyInput } from 'libs/shared/components/copy-input/CopyInput';\nimport { DivButton } from 'libs/shared/components/div-button/DivButton';\nimport { SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { BaseObject, ShareLink, YearGroup } from 'libs/shared/interfaces';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nconst namespace = 'share.shareAsLink';\n\ninterface ShareAsLinkProps {\n entity: BaseObject;\n entityType: SharableEntityType;\n shareLink: ShareLink;\n onClickShowSettings: () => void;\n onClickCreateLink: () => void;\n shareLinkIsLoading?: boolean;\n canAddPolicies: boolean;\n privacy: SharePrivacyResponse;\n entityTypeId: MasterType;\n onClickSavePrivacy: (privacy: SharePrivacy, overrideRestrictions: boolean) => void;\n enableIntegrations: boolean;\n hasStudentExp: boolean;\n yearGroups: YearGroup[];\n shareOverrideRestrictions: boolean;\n}\n\nexport function ShareAsLink(props: ShareAsLinkProps): React.ReactElement {\n const [ logged, setLogged ] = React.useState(false);\n\n function onCopy(): void {\n // Because our users are double clickers\n if (logged)\n return;\n\n setLogged(true);\n\n AnalyticsHelper.logUserAction({\n ...props.entity\n }, AnalyticsHelper.mergeOptions(ShareViewHelper.getAnalyticsOptions(props.entityType), {\n actionType: UserAction.Share,\n descriptor: ShareDescriptors.CopyLink,\n eventVersion: EventVersion.V3\n }));\n }\n\n return (\n <>\n <div className='d-flex justify-content-between align-items-center'>\n <div className={`${props.shareLink ? 'w-100' : 'w-75 d-flex align-items-center'}`}>\n {props.shareLink\n ? (\n <>\n <div className='d-flex justify-content-between align-items-center mb-1'>\n <ShareLinkInfo\n linkExpireDate={props.shareLink.linkExpireDate}\n isPasswordProtected={props.shareLink.isPasswordProtected}\n privacy={props.privacy}\n entityTypeId={props.shareLink.objectTypeId}\n status={props.shareLink.status}\n onClickSavePrivacy={props.onClickSavePrivacy}\n hasStudentExp={props.hasStudentExp}\n entity={props.entity}\n yearGroups={props.yearGroups}\n shareOverrideRestrictions={props.shareOverrideRestrictions}\n />\n </div>\n <CopyInput value={props.shareLink.url} onCopy={onCopy} />\n </>\n ) : (\n <div className='d-flex align-items-center'>\n <div className='me-2'>\n {props.enableIntegrations ? (\n <ShareIntegrationsStack />\n ) : (\n <SvgContainer svgName={cvSvgLibrary.Link} className='svg-container' />\n )}\n </div>\n \n <span className='fw-semibold'><Text namespace={namespace} phrase='createLink' /></span>\n </div>\n )\n }\n </div>\n {!props.shareLink &&\n <DivButton className='info-link' onClick={props.onClickCreateLink}>\n <Text phrase='createLink' />\n </DivButton>\n }\n </div>\n </>\n );\n}","import React from 'react';\nimport { Form as FormikForm } from 'formik';\nimport * as Yup from 'yup';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { FormField } from 'libs/shared/components/forms/form-field/FormField';\nimport { FormWrapper, useFormikContextWrapper } from 'libs/shared/components/forms/form-wrapper/FormWrapper';\nimport { PopupButtons } from 'libs/shared/components/popup/PopupButtons';\n\nconst getPhrase = LanguageService.encloseNamespace('share.shareMessage');\n\nconst MessageValidationSchema = Yup.object().shape({\n message: Yup.string()\n .max(280, () => getPhrase('maxMessageLen'))\n});\n\ninterface ShareMessageRequest {\n message?: string;\n}\n\nfunction ShareMessageForm(): React.ReactElement {\n const formikProps = useFormikContextWrapper<ShareMessageRequest>();\n\n return (\n <FormikForm>\n <FormField\n component='textarea'\n name='message'\n id='message'\n placeholder={getPhrase('placeholder')}\n value={formikProps.values.message}\n label={getPhrase('label')}\n showOptionalLabel\n />\n <PopupButtons>\n <PopupButtons.Submit variant='dark' text={getPhrase('share')} />\n </PopupButtons>\n </FormikForm>\n );\n}\n\ninterface ShareMessageProps {\n onClickShare: (message: string, onDone: () => void) => void\n}\n\nexport function ShareMessage(props: ShareMessageProps): React.ReactElement {\n function onSubmit(data: ShareMessageRequest, onDone: () => void): void {\n let message: string = null;\n\n if (data.message)\n message = data.message;\n\n props.onClickShare(message, onDone);\n }\n\n return (\n <FormWrapper<ShareMessageRequest>\n initialValues={{ message: '' }}\n validationSchema={MessageValidationSchema}\n onSubmit={onSubmit}\n allowInitialSubmit={true}\n >\n <ShareMessageForm />\n </FormWrapper>\n );\n}","import React from 'react';\nimport { Spinner } from 'react-bootstrap';\nimport { Scrollbars } from 'react-custom-scrollbars-2';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { UrlHelper } from 'libs/common/backbone/utils/UrlHelper';\nimport { Core } from 'libs/common/core';\nimport { HashObject } from 'libs/common/react/interfaces';\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\nimport { ObjectHelper } from 'libs/common/react/utils/ObjectHelper';\n\nimport { TypeFilter } from 'libs/shared/apps/search/interfaces/TypedFilter';\nimport { GetEmbedCode } from 'libs/shared/apps/share/components/get-embed-code/GetEmbedCode';\nimport { RecipientItem } from 'libs/shared/apps/share/components/recipient-item/RecipientItem';\nimport { TOKENIZED_TYPEAHEAD_SUGGESTIONS_LIMIT, TokenizedTypeahead } from 'libs/shared/apps/share/components/tokenized-typeahead/TokenizedTypeahead';\nimport { SharePrivacyResponse } from 'libs/shared/apps/share/interfaces/responses/SharePrivacyResponse';\nimport { SharePrivacy } from 'libs/shared/apps/share/interfaces/SharePrivacy';\nimport { ShareAsLink } from 'libs/shared/apps/share/views/share/components/share-as-link/ShareAsLink';\nimport { ShareIntegrations } from 'libs/shared/apps/share/views/share/components/share-integrations/ShareIntegrations';\nimport { ShareMessage } from 'libs/shared/apps/share/views/share/components/share-message/ShareMessage';\nimport { SharableEntityType } from 'libs/shared/apps/share/views/share/ShareViewHelper';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { IntegrationId } from 'libs/shared/enums/IntegrationId';\nimport { ObjectStatus } from 'libs/shared/enums/ObjectStatus';\nimport { PermissionName } from 'libs/shared/enums/PermissionName';\nimport { usePermissions } from 'libs/shared/hooks/usePermissions';\nimport { BaseObject, Classroom, ClassroomGroup, CurrentUser, PropsWithAnalyticsOptions, ShareLink, ShareRecipient, ShareSearchResponse, UserCollection, YearGroup } from 'libs/shared/interfaces';\n\nconst namespace = 'shared.share';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nfunction filterSearchResults(\n recipientsToFilter: BaseObject[],\n currentSelections: BaseObject[],\n existingShareRecipients: BaseObject[],\n currentUserId: string\n): BaseObject[] {\n if (!recipientsToFilter)\n return [];\n\n const selectedIds = [ ...currentSelections, ...existingShareRecipients ].map(s => s.id);\n\n return recipientsToFilter.filter(s => {\n // Prevent users from sharing to other users who have already been shared this resource\n if (selectedIds.includes(s.id))\n return false;\n\n // Prevent users from sharing to themselves\n if (s.id === currentUserId)\n return false;\n\n return true;\n });\n}\n\ntype MainShareProps = PropsWithAnalyticsOptions<{\n entity: BaseObject;\n entityType: SharableEntityType,\n directShareRecipients: BaseObject[];\n recentlySharedTo: BaseObject[];\n onClickCreateLink: () => void;\n onClickShowSettings: () => void;\n onClickShare: (recipients: ShareRecipient[], message: string, onDone?: () => void) => void;\n onClickRemoveRecipient: (recipientId: string, onError?: () => void) => void;\n onClickSavePrivacy: (privacy: SharePrivacy, overrideRestrictions: boolean) => void;\n onClickGetEmbedCode: () => void;\n gatewayApiUrl: string;\n imageCdnUrl: string;\n currentUser: CurrentUser;\n searchRequestHeaders?: HashObject;\n emptyStateImageUrl: string;\n errorStateImageUrl: string;\n integrations: IntegrationId[];\n shareLink?: ShareLink;\n shareLinkIsLoading?: boolean;\n fetchRecipientUsers?: (id: string, callback: (users: UserCollection) => void) => void;\n canAddPolicies: boolean;\n privacy: SharePrivacyResponse;\n integrationSettingAppLink?: Core.AppLink;\n messagePopupAppLink?: Core.AppLink;\n closePopup: () => void;\n enableIntegrationBanner?: boolean;\n canEmbed?: boolean;\n yearGroups: YearGroup[];\n shareOverrideRestrictions: boolean;\n}>;\n\nexport function MainShare(props: MainShareProps): JSX.Element {\n const [ selections, setSelections ] = React.useState<BaseObject[]>([]);\n const [ showShareLinkSpinner, setShowShareLinkSpinner ] = React.useState(false);\n\n const { hasPermissions } = usePermissions();\n const hasManageIntegrationsPermission = hasPermissions(PermissionName.ManageIntegrations);\n\n function onClickShare(message: string, onDone: () => void): void {\n props.onClickShare(\n selections.map(s => ({ id: s.id, typeId: s.typeId })),\n message,\n () => {\n setSelections([]);\n onDone();\n }\n );\n }\n\n function fetchSelectionMembers(id: string): void {\n if (!props.fetchRecipientUsers)\n return;\n\n const callback = (users: UserCollection) => {\n const newSelections: BaseObject[] = [];\n\n selections.forEach(selection => {\n if (selection.id !== id)\n return newSelections.push(selection);\n\n const updatedSelection = ObjectHelper.deepClone<Classroom | ClassroomGroup>(selection);\n\n if (!users?.data?.length) {\n updatedSelection.users = { count: 0, data: [], pagination: null };\n } else {\n updatedSelection.users = users;\n }\n\n newSelections.push(updatedSelection);\n });\n\n setSelections(ArrayHelper.uniq(newSelections, 'id'));\n };\n\n props.fetchRecipientUsers(id, callback);\n }\n\n function getRemotePostBody(query: string): HashObject {\n const indices: TypeFilter[] = [];\n\n if (hasPermissions(PermissionName.ShareToUsers)) {\n indices.push({\n index: 'user',\n filters: {\n userProfile: {\n status: [`${ObjectStatus.Active.toLowerCase()}`],\n customerId: props.currentUser.customerId\n }\n }\n });\n }\n\n if (hasPermissions(PermissionName.ShareToClassrooms))\n indices.push({ index: 'classroom' });\n\n if (hasPermissions(PermissionName.ShareToClassroomGroups))\n indices.push({ index: 'classroom_group' });\n\n return {\n query,\n indices,\n searchType: 'user',\n limit: TOKENIZED_TYPEAHEAD_SUGGESTIONS_LIMIT\n };\n }\n\n const canDirectShare = hasPermissions(PermissionName.ShareToUsers) ||\n hasPermissions(PermissionName.ShareToClassrooms) ||\n hasPermissions(PermissionName.ShareToClassroomGroups);\n\n const recentSearches = filterSearchResults(\n props.recentlySharedTo,\n selections,\n props.directShareRecipients,\n props.currentUser.id\n );\n \n function onClickCreateShareLink(): void {\n setShowShareLinkSpinner(true);\n props.onClickCreateLink();\n }\n\n React.useEffect(() => {\n setShowShareLinkSpinner(!!props.shareLinkIsLoading);\n }, [props.shareLinkIsLoading]);\n\n return (\n <>\n {canDirectShare && (\n <div className='bg-white rounded-bottom-3 pt-3 px-3 mb-2'>\n <div className={`d-flex justify-content-between align-items-center pb-3`}>\n <TokenizedTypeahead\n // This key is used to re-initialize TokenizedTypeahead whenever recentSearches changes\n key={recentSearches?.map(s => s.id).join(':') ?? 'share:search'}\n getRemoteUrl={() => UrlHelper.safeUrlConcat(props.gatewayApiUrl, 'v4/search')}\n getRemotePostBody={getRemotePostBody}\n requestHeaders={props.searchRequestHeaders}\n formatRemoteSuggestions={(suggestions: ShareSearchResponse) =>\n filterSearchResults(\n suggestions?.results,\n selections,\n props.directShareRecipients,\n props.currentUser.id\n )\n }\n recentSearches={recentSearches}\n selections={selections}\n onSuggestionSelected={selection => setSelections([ ...selections, selection ])}\n removeSelection={selection => setSelections(selections.filter(s => s.id !== selection.id))}\n placeholder={getPhrase('searchPlaceholder')}\n imageCdnUrl={props.imageCdnUrl}\n activationLength={2}\n fetchSelectionMembers={props.fetchRecipientUsers && fetchSelectionMembers}\n debounceTime={300}\n emptyStateImageUrl={props.emptyStateImageUrl}\n errorStateImageUrl={props.errorStateImageUrl}\n hasStudentExperience={hasPermissions(PermissionName.StudentExperience)}\n />\n </div>\n \n {(!selections.length && props.directShareRecipients.length)\n ? (\n <div>\n <h3 className='font-size-normal'><Text phrase='sharedTo' /></h3>\n <Scrollbars autoHeight>\n <ul className='list-unstyled'>\n {props.directShareRecipients.map(d => (\n <li key={d.id} className='mb-2 pe-1'>\n <RecipientItem\n entity={d}\n imageCdnUrl={props.imageCdnUrl}\n removeRecipient={props.onClickRemoveRecipient}\n showDisplayName={hasPermissions(PermissionName.StudentExperience)}\n />\n </li>\n ))}\n </ul>\n </Scrollbars>\n </div>\n ) : <></>\n }\n {!!selections.length && (\n // The form submit inside of ShareMessage is used as the Share button\n <div className='pb-3'>\n <ShareMessage\n onClickShare={onClickShare}\n />\n </div>\n )}\n </div>\n )}\n\n {!selections.length && !showShareLinkSpinner && (\n <div className={`bg-white p-3 ${canDirectShare ? 'rounded-3' : 'rounded-bottom-3'}`}>\n <div>\n {props.shareLink && (\n <div className='fw-semibold mb-2'><Text namespace={namespace} phrase='shareLink' /></div>\n )}\n <ShareAsLink\n entity={props.entity}\n entityType={props.entityType}\n shareLink={props.shareLink}\n onClickShowSettings={props.onClickShowSettings}\n onClickCreateLink={onClickCreateShareLink}\n shareLinkIsLoading={props.shareLinkIsLoading}\n canAddPolicies={props.canAddPolicies}\n privacy={props.privacy}\n entityTypeId={props.entity.typeId}\n onClickSavePrivacy={props.onClickSavePrivacy}\n enableIntegrations={props.enableIntegrationBanner}\n hasStudentExp={hasPermissions(PermissionName.StudentExperience)}\n yearGroups={props.yearGroups}\n shareOverrideRestrictions={props.shareOverrideRestrictions}\n />\n {props.shareLink && props.enableIntegrationBanner && (\n <div className={`${props.integrations?.length && props.canEmbed ? 'float-end' : ''} mt-1 pt-1`}>\n <ShareIntegrations\n integrations={props.integrations}\n url={props.shareLink.url}\n closePopup={props.closePopup}\n appLink={hasManageIntegrationsPermission\n ? props.integrationSettingAppLink\n : props.messagePopupAppLink\n }\n />\n </div>\n )}\n {props.shareLink && props.canEmbed && (\n <div className='mt-1'>\n <GetEmbedCode onClickGetEmbedCode={props.onClickGetEmbedCode} />\n </div>\n )}\n {props.shareLink && props.canAddPolicies &&\n <button className='btn btn-link text-info mt-2 p-0' onClick={props.onClickShowSettings}>\n <Text namespace={namespace} phrase='advancedSettings' />\n </button>\n }\n </div>\n </div>\n )}\n \n {showShareLinkSpinner && (\n <div className='bg-white rounded-3 p-3 text-center'>\n <Spinner as='div' animation='border' role='status' />\n </div>\n )}\n </>\n );\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 <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='outline-dark' />\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 React from 'react';\nimport { useDispatch } from 'react-redux';\n\nimport { AppLink } from 'libs/common/backbone/core';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Flight } from 'libs/common/flight';\nimport { HashObject } from 'libs/common/react/interfaces/HashObject';\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 { SharePrivacy } from 'libs/shared/apps/share/interfaces/SharePrivacy';\nimport { RecentShareHelper } from 'libs/shared/apps/share/utils/RecentShareHelper';\nimport { CopyEmbed } from 'libs/shared/apps/share/views/share/components/copy-embed/CopyEmbed';\nimport { MainShare } from 'libs/shared/apps/share/views/share/components/main-share/MainShare';\nimport { ShareSettings } from 'libs/shared/apps/share/views/share/components/share-settings/ShareSettings';\nimport { Popup } from 'libs/shared/components/popup/Popup';\nimport { LanguageNamespaceContext } from 'libs/shared/components/text/Text';\nimport { IntegrationId } from 'libs/shared/enums/IntegrationId';\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 {\n BaseObject, Config, CurrentUser,\n DirectShare, PopupViewProps, ShareLink, ShareRecipient, UserCollection, YearGroup\n} from 'libs/shared/interfaces';\nimport { IntegrationHelper } from 'libs/shared/utils/IntegrationHelper';\n\nimport { SharableEntityType, ShareViewHelper } from './ShareViewHelper';\n\nconst namespace = 'shared.share';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nfunction getTitle(type: SharableEntityType): string {\n switch (type) {\n case 'video': return getPhrase('titleVideo');\n case 'clip': return getPhrase('titleClip');\n case 'interactive': return getPhrase('titleInteractive');\n case 'series': return getPhrase('titleSeries');\n case 'playlist': return getPhrase('titlePlaylist');\n case 'subject': return getPhrase('titleTopic');\n }\n}\n\nfunction getEnabledIntegrations(googleClassroomSetting: boolean, msftTeamsSetting: boolean): IntegrationId[] {\n const integrations = IntegrationHelper.getShareIntegrations(googleClassroomSetting, msftTeamsSetting);\n return integrations.filter(i => i.enabled).map(i => i.id);\n}\n\n/**\n * I realise these are all the same right now, but they're technically different things - Sha\n */\nconst canEmbed = (type: SharableEntityType) => type === 'video' || type === 'interactive' || type === 'clip';\nconst canAddPolicies = (type: SharableEntityType) => type === 'video' || type === 'interactive' || type === 'clip';\n\ntype ShareScreen = 'main' | 'link-settings' | 'copy-embed';\n\ninterface ShareViewProps extends PopupViewProps {\n entityId: string;\n entityType: SharableEntityType;\n emptyStateImageUrl: string;\n errorStateImageUrl: string;\n gatewayApiUrl?: string;\n integrationSettingAppLink?: AppLink;\n messagePopupAppLink?: AppLink;\n enableIntegrationBanner?: boolean\n}\n\nexport function ShareView(props: ShareViewProps): JSX.Element {\n const dispatch = useDispatch();\n\n const alerts = useAlerts();\n\n // If the gateway api url is passed down in props and not pulled from the config, we don't need to fetch the user token\n const shouldFetchUserToken = !props.gatewayApiUrl;\n\n /**\n * Our screen is initially set to null, and it is set to it's initial state\n * by ShareViewHelper.useRestrictionWarning.\n */\n const [ screen, setScreen ] = React.useState<ShareScreen>('main');\n\n const { hasPermissions } = usePermissions();\n\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n const entity = ShareViewHelper.getFetchFunctionByType(props.entityType)(props.entityId, currentUser.data?.id);\n const config = Flight.useBasicFetch<Config>(ConfigRequests.config());\n const userToken = Flight.useBasicFetch<HashObject>(shouldFetchUserToken && UserRequests.token());\n const shareLink = Flight.useBasicFetch<ShareLink>(ShareRequests.getShareLinkByObjectId(props.entityId));\n const sentDirectShare = Flight.useBasicFetch<DirectShare>(\n ShareRequests.getSentDirectShareByObjectId(props.entityId)\n );\n const recipients = Flight.useBasicFetch<BaseObject[]>(currentUser.data?.customerId &&\n ShareViewHelper.getDirectShareRecipientsRequest(currentUser.data.customerId, sentDirectShare.data));\n\n const recentlySharedToIds = currentUser.data && RecentShareHelper.getRecentlySharedTo(currentUser.data.id);\n\n const hasRecentlySharedRecipients = !!recentlySharedToIds?.length;\n const recentlySharedTo = Flight.useBasicFetch<BaseObject[]>(hasRecentlySharedRecipients &&\n ShareRequests.getRecipientsById(recentlySharedToIds, currentUser.data.customerId));\n\n const privacy = Flight.useBasicFetch<SharePrivacyResponse>(ShareRequests.getPrivacy(props.entityId));\n const yearGroups = Flight.useBasicFetch<YearGroup[]>(\n currentUser.data?.isAuthenticated && CustomerRequests.yearGroups(currentUser.data.customerId)\n );\n\n const {\n shareToGoogleClassroom,\n shareToMicrosoftTeams,\n shareOverrideRestrictions,\n isLoadingSettings\n } = useSettings(null);\n\n /**\n * We need to manually re-fetch the recipients they're updated on the directShare object.\n * See ShareRequests.getDirectShareRecipientsById for an explanation\n * of why we are doing this.\n */\n function fetchRecipients(customerId: string, directShare: DirectShare): void {\n if (directShare.recipients?.length)\n Flight.getFetch(dispatch)(ShareViewHelper.getDirectShareRecipientsRequest(customerId, directShare));\n }\n\n function fetchRecipientUsers(id: string, callback: (users: UserCollection) => void): void {\n Flight.getFetch(dispatch)(ShareRequests.getRecipientUsers(id, callback));\n }\n\n function onClickCreateLink(): void {\n if (shareLink.data)\n return;\n\n ShareViewHelper.createLink({\n dispatch,\n entity: entity.data,\n entityType: props.entityType,\n alerts\n });\n }\n\n function onClickSaveLink(data: EditShareLinkRequest, onError: () => void): void {\n ShareViewHelper.updateLink(\n dispatch,\n entity.data,\n props.entityType,\n shareLink.data,\n data,\n alerts,\n () => setScreen('main'),\n onError\n );\n }\n\n function onClickDeleteLink(): void {\n ShareViewHelper.deleteLink(\n dispatch,\n entity.data,\n props.entityType,\n shareLink.data,\n alerts,\n () => setScreen('main')\n );\n }\n\n function onClickShare(recipients: ShareRecipient[], message: string, onDone?: () => void): void {\n ShareViewHelper.createOrUpdateDirectShare({\n dispatch,\n entity: entity.data,\n entityType: props.entityType,\n currentUser: currentUser.data,\n recipients,\n message,\n sentDirectShare: sentDirectShare.data,\n onSuccess: directShare => fetchRecipients(currentUser.data.customerId, directShare),\n onError: () => alerts.error(getPhrase('directShareError', { name: entity.data.name })),\n onDone\n });\n }\n\n function onClickRemoveRecipient(recipientId: string, onError?: () => void): void {\n ShareViewHelper.removeDirectShareRecipient(\n dispatch,\n recipientId,\n props.entityType,\n sentDirectShare.data,\n directShare => fetchRecipients(currentUser.data.customerId, directShare),\n () => {\n alerts.error(getPhrase('removeDirectShareError'));\n onError && onError();\n }\n );\n }\n\n function onClickSavePrivacy(privacy: SharePrivacy, overrideRestrictions: boolean): void {\n if (privacy === 'private') {\n onClickDeleteLink();\n return;\n }\n\n Flight.fetch(\n dispatch,\n ShareRequests.updatePrivacy(\n shareLink.data.id,\n privacy,\n overrideRestrictions,\n () => alerts.success(getPhrase('privaciesSuccess', { name: entity.data.name })),\n () => alerts.error(getPhrase('privaciesError', { name: entity.data.name }))\n )\n );\n }\n\n function getSearchRequestHeaders(): HashObject {\n if (!shouldFetchUserToken)\n return null;\n\n return {\n authorization: `Bearer ${userToken.data.value}`\n };\n }\n\n /**\n * We are intentionally not checking to see if recipients.data or recentlySharedTo.data\n * have loaded because:\n * 1. Adding the first recipient will trigger fetching recipients for the first time\n * which would trigger the loading spinner.\n * 2. Adding and recipient will update the list of recently shared to which causes\n * recentlySharedTo to be re-fetched.\n */\n const dataLoaded = !!currentUser.data\n && !!config.data\n && (!shouldFetchUserToken || !!userToken.data)\n && !!sentDirectShare.hasCompleted\n && !!privacy.data\n && !!entity.data\n && !isLoadingSettings\n && !!yearGroups.hasCompleted;\n\n return (\n <LanguageNamespaceContext.Provider value={namespace}>\n <Popup\n title={getTitle(props.entityType)}\n closePopup={props.closePopup}\n showLoadingSpinner={!dataLoaded}\n contentClassName={(dataLoaded && screen) ? 'bg-transparent border-0' : ''}\n bodyClassName='p-0'\n >\n {(() => {\n if (!dataLoaded)\n return <></>;\n\n switch (screen) {\n case 'main':\n return (\n <MainShare\n shareLink={shareLink.data}\n shareLinkIsLoading={shareLink.isFetching}\n entity={entity.data}\n entityType={props.entityType}\n directShareRecipients={recipients.data || []}\n recentlySharedTo={recentlySharedTo.data || []}\n onClickCreateLink={onClickCreateLink}\n onClickShowSettings={() => setScreen('link-settings')}\n onClickShare={onClickShare}\n onClickRemoveRecipient={onClickRemoveRecipient}\n onClickGetEmbedCode={() => setScreen('copy-embed')}\n analyticsOptions={ShareViewHelper.getAnalyticsOptions(props.entityType)}\n gatewayApiUrl={props.gatewayApiUrl || config.data.gatewayApiUrl}\n imageCdnUrl={config.data.imageCdnUrl}\n searchRequestHeaders={getSearchRequestHeaders()}\n currentUser={currentUser.data}\n fetchRecipientUsers={fetchRecipientUsers}\n privacy={privacy.data}\n onClickSavePrivacy={onClickSavePrivacy}\n canAddPolicies={canAddPolicies(props.entityType)}\n emptyStateImageUrl={props.emptyStateImageUrl}\n errorStateImageUrl={props.errorStateImageUrl}\n integrations={getEnabledIntegrations(shareToGoogleClassroom, shareToMicrosoftTeams)}\n integrationSettingAppLink={props.integrationSettingAppLink}\n messagePopupAppLink={props.messagePopupAppLink}\n closePopup={props.closePopup}\n enableIntegrationBanner={props.enableIntegrationBanner}\n canEmbed={canEmbed(props.entityType)}\n yearGroups={yearGroups.data}\n shareOverrideRestrictions={shareOverrideRestrictions}\n />\n );\n case 'link-settings':\n return (\n <div className='bg-white p-3 rounded-bottom-3'>\n <ShareSettings\n entity={entity.data}\n entityType={props.entityType}\n config={config.data}\n shareLink={shareLink.data}\n entityId={props.entityId}\n analyticsOptions={ShareViewHelper.getAnalyticsOptions(props.entityType)}\n onClickSaveLink={onClickSaveLink}\n onClickDeleteLink={onClickDeleteLink}\n onClickCancel={() => setScreen('main')}\n privacy={privacy.data}\n hasStudentExp={hasPermissions(PermissionName.StudentExperience)}\n shareOverrideRestrictions={shareOverrideRestrictions}\n />\n </div>\n );\n case 'copy-embed':\n return (\n <div className='bg-white p-3 rounded-bottom-3'>\n <CopyEmbed\n entity={entity.data}\n entityType={props.entityType}\n config={config.data}\n shareLink={shareLink.data}\n entityId={props.entityId}\n analyticsOptions={ShareViewHelper.getAnalyticsOptions(props.entityType)}\n onClickCancel={() => setScreen('main')}\n />\n </div>\n );\n }\n })()}\n </Popup>\n </LanguageNamespaceContext.Provider>\n );\n}\n","import * as React from 'react';\nimport { Form } from 'react-bootstrap';\nimport { FieldAttributes } from 'formik';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\n\nimport { FieldWrapper, FormFieldProps } from '../form-field/FormField';\n\n/**\n * Use this checkbox within Formik contexts\n */\nexport function FormCheckbox(props: FieldAttributes<FormFieldProps>): JSX.Element {\n const { label, checkboxLabelClassName, checkboxLabelFontWeight, className, ...fieldProps } = props;\n\n return (\n <Form.Group className='form-group'>\n <div className={`form-check ${className || ''}`}>\n <FieldWrapper className='form-check-input' {...fieldProps} />\n <Form.Label\n className={`form-check-label cursor-pointer ${checkboxLabelFontWeight === 'normal' ? 'fw-normal' : ''} \n ${checkboxLabelClassName}`}\n htmlFor={fieldProps.id}\n >\n {label}\n </Form.Label>\n {props.checkboxAppLink && props.checkboxAppLinkText && (\n <>\n <span> </span>\n <AppLink appLink={props.checkboxAppLink} className='info-link'>\n {props.checkboxAppLinkText}\n </AppLink>\n </>\n )}\n </div>\n </Form.Group>\n );\n}\n\n","import * as React from 'react';\nimport { useFormikContext } from 'formik';\n\nimport { HashObject } from 'libs/common/react/interfaces';\n\ninterface CharacterCounterProps<Values extends HashObject> {\n fieldName: keyof Values;\n limit: number;\n}\n\nexport function CharacterCounter<Values extends HashObject>(props: CharacterCounterProps<Values>): JSX.Element {\n const { values } = useFormikContext<Values>();\n\n const field = values[props.fieldName];\n\n if (typeof field !== 'string')\n return <></>;\n\n return (\n <div className='float-end text-secondary fw-normal'>\n {field.length}/{props.limit} characters\n </div>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"revealPassword\":\"jCfI0\",\"passwordInput\":\"RBJnf\",\"passwordContainer\":\"d78lK\",\"passwordContainerDisabled\":\"asbVo\",\"infoTooltip\":\"wzyOG\",\"spinner\":\"CycFx\"};","import * as React from 'react';\nimport { Form, Spinner } from 'react-bootstrap';\nimport { Placement } from 'react-bootstrap/esm/types';\nimport { ErrorMessage, Field, FieldAttributes, FieldProps, useFormikContext } from 'formik';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\nimport { HashObject } from 'libs/common/react/interfaces';\nimport { ObjectHelper } from 'libs/common/react/utils/ObjectHelper';\n\nimport { FormCheckbox } from 'libs/shared/components/forms/form-checkbox/FormCheckbox';\nimport { SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { FormHelper } from 'libs/shared/utils/FormHelper';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport { CharacterCounter } from './CharacterCounter';\n\nimport styles from './form-field.scss';\n\nconst namespace = 'shared.formField';\n\nexport type FormSize = 'lg' | 'sm';\n\n// If checkboxLabelFontWeight is not specified, it will be bold by default\nexport type CheckboxLabelFontWeight = 'normal' | 'bold'\n\nexport interface FormFieldProps {\n /**\n * The name prop MUST be the same as the attribute\n * name of the value that the field is bound to.\n */\n name: string;\n label?: string;\n children?: any;\n showCharacterCounter?: boolean;\n showRequiredStar?: boolean;\n checkboxAppLink?: Core.AppLink;\n checkboxAppLinkText?: string;\n checkboxLabelClassName?: string;\n checkboxLabelFontWeight?: CheckboxLabelFontWeight\n infoTooltip?: string;\n infoTooltipPlacement?: Placement;\n infoText?: string;\n formSize?: FormSize;\n showOptionalLabel?: boolean;\n showLoadingSpinner?: boolean;\n}\n\nFieldWrapper.defaultProps = {\n autoComplete: 'off'\n};\n\nexport function FieldWrapper(\n props: FieldAttributes<FormFieldProps> & { className: string }\n): React.ReactElement {\n const { children, showLoadingSpinner, ...fieldProps } = props;\n\n const [ type, setType ] = React.useState(props.type);\n\n function onClickTogglePassword(): void {\n if (type === 'password')\n setType('text');\n else\n setType('password');\n }\n\n const resolvedChildren = FunctionHelper.isFunction(children)\n ? (f: FieldProps) => children(f)\n : React.Children.count(children) ? children : null;\n\n if (fieldProps.type !== 'password') {\n if (showLoadingSpinner) {\n return (\n <div className='position-relative'>\n <Field {...(ObjectHelper.omit(fieldProps, ['formSize']))}>\n {resolvedChildren}\n </Field>\n\n <div className={styles.spinner}>\n <Spinner animation='border' size='sm' />\n </div>\n </div>\n );\n }\n\n return (\n <Field {...(ObjectHelper.omit(fieldProps, ['formSize']))}>\n {resolvedChildren}\n </Field>\n );\n }\n\n let containerClassName = `position-relative ${styles.passwordContainer}`;\n\n if (fieldProps.className)\n containerClassName += ` ${fieldProps.className}`;\n\n if (fieldProps.disabled)\n containerClassName += ` ${styles.passwordContainerDisabled}`;\n\n /**\n * We need to wrap out input with a relatively positioned element in order to absolutely\n * position our visibility icon to reveal the password - Sha\n */\n return (\n <div className={containerClassName}>\n <Field\n {...(ObjectHelper.omit(fieldProps, [ 'formSize', 'type', 'className' ]))}\n type={type}\n className={`${styles.passwordInput} border-0 w-100 h-100 outline-none rounded`}\n >\n {resolvedChildren}\n </Field>\n {fieldProps.type === 'password' &&\n <SvgContainer\n svgName={type === 'password' ? cvSvgLibrary.VisibleOn : cvSvgLibrary.VisibleOff}\n className={`svg-container cursor-pointer ${styles.revealPassword}`}\n onClick={onClickTogglePassword}\n />\n }\n </div>\n );\n}\n\nFormField.defaultProps = {\n autoComplete: 'off',\n infoTooltipPlacement: 'top'\n};\n\nexport function FormField<Values extends HashObject>(props: FieldAttributes<FormFieldProps>): React.ReactElement {\n const {\n label,\n className,\n showCharacterCounter,\n showRequiredStar,\n infoTooltip,\n infoTooltipPlacement,\n infoText,\n formSize,\n showOptionalLabel,\n ...fieldProps\n } = props;\n\n const { errors, touched } = useFormikContext<Values>();\n\n // This function overwrites the default `onChange` function whenever `props.disabled` is set.\n // This prevents users from \"undisabling\" form fields via inspect element, then editing the field.\n const disabledOnChange = () => {};\n\n if (fieldProps.type === 'checkbox') {\n const _props = ObjectHelper.omit(props, [ 'formSize', 'infoTooltipPlacement' ]);\n\n if (props.disabled)\n _props.onChange = disabledOnChange;\n\n return <FormCheckbox {..._props} />;\n }\n\n const fieldWrapperProps = {\n ...fieldProps,\n className: FormHelper.getCustomFormControlClassName(\n errors,\n touched,\n fieldProps.name,\n formSize,\n className,\n typeof props.as === 'string' ? props.as : null\n )\n };\n\n if (props.disabled)\n fieldWrapperProps.onChange = disabledOnChange;\n\n return (\n <Form.Group className='form-group'>\n {!!label && (\n <Form.Label htmlFor={fieldProps.id} className='d-flex align-items-center'>\n {label}\n {showRequiredStar && <span className='text-danger'>*</span>}\n {infoTooltip && (\n <SvgContainer\n className={`svg-container text-secondary ${styles.infoTooltip}`}\n svgName={cvSvgLibrary.Info}\n title={infoTooltip}\n tooltipPlacement={infoTooltipPlacement}\n tooltipSpanHack\n />\n )}\n {showOptionalLabel && <span className='text-secondary'> <Text namespace={namespace} phrase='optional' /></span>}\n \n {!!showCharacterCounter && !!(fieldProps as React.HTMLProps<HTMLInputElement>).maxLength &&\n <div className='ms-auto'>\n <CharacterCounter\n fieldName={(fieldProps.name as keyof Values)}\n limit={(fieldProps as React.HTMLProps<HTMLInputElement>).maxLength}\n />\n </div>\n }\n </Form.Label>\n )}\n\n <FieldWrapper {...fieldWrapperProps} />\n\n {!!infoText &&\n <Form.Text className='text-secondary'>\n {infoText}\n </Form.Text>\n }\n\n <ErrorMessage name={fieldProps.name}>\n {(errorMessage: string) => <Form.Control.Feedback type='invalid'>{errorMessage}</Form.Control.Feedback>}\n </ErrorMessage>\n </Form.Group>\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}","import { FormikErrors, FormikTouched, getIn } from 'formik';\n\nimport { FormSize } from 'libs/shared/components/forms/form-field/FormField';\n\nfunction getTypeSize(type: string, size: FormSize) {\n let className = '';\n\n switch (type) {\n case 'select':\n className = 'form-select';\n break;\n default:\n className = 'form-control';\n }\n\n if (size === 'sm')\n className += ` ${className}-sm`;\n\n if (size === 'lg')\n className += ` ${className}-lg`;\n\n return className;\n}\n\nexport const FormHelper = {\n getCustomFormControlClassName<T>(\n errors: FormikErrors<T>,\n touched: FormikTouched<T>,\n attribute: string,\n size?: FormSize,\n additionalClassName?: string,\n type?: string\n ): string {\n let className = '';\n\n className = getTypeSize(type, size);\n\n // Using getIn as it supports dot notation\n if (getIn(touched, attribute) && getIn(errors, attribute))\n className += ' is-invalid';\n\n if (additionalClassName)\n className += ` ${additionalClassName}`;\n\n return className;\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","CopyEmbedHtml","EmbedHelper","copyBtnPhrase","setCopyBtnPhrase","find","s","logged","setLogged","url","embedUrl","host","config","primaryUrl","shareId","embedString","spellCheck","rows","CopyToClipboard","onCopy","setTimeout","AnalyticsHelper","entity","embedDetails","ShareViewHelper","entityType","actionType","descriptor","eventVersion","text","CopyEmbed","entityId","analyticsOptions","PopupButtons","onClickCancel","GetEmbedCode","onClickGetEmbedCode","S","getRespectRatingText","video","yearGroups","hasStudentExp","VideoHelper","restriction","RestrictionHelper","_restrictions","yearGroup","maxYearGroup","minAllowedYearGroup","rating","getIconAndText","options","status","entityTypeId","privacy","MasterType","icon","Array","isArray","overrideRestrictions","getPrivateIconAndText","isToday","DateHelper","dayDifference","days","ShareLinkStatus","ShareLinkItem","active","description","ShareLinkInfo","canManageAccess","setCanManageAccess","setPrivacy","canManageAccessPrivacy","canUpdatePrivacy","shareOverrideRestrictions","onClickSavePrivacy","GoogleClassroomAvatar","viewBox","fill","cx","cy","r","patternContentUnits","xlinkHref","transform","MicrosoftTeamsAvatar","d","ShareIntegrationsStack","Tooltip","style","zIndex","ShareAsLink","objectTypeId","CopyInput","enableIntegrations","onClickCreateLink","MessageValidationSchema","max","ShareMessageForm","FormField","component","showOptionalLabel","ShareMessage","FormWrapper","initialValues","validationSchema","onSubmit","data","onDone","onClickShare","allowInitialSubmit","filterSearchResults","recipientsToFilter","currentSelections","existingShareRecipients","currentUserId","selectedIds","filter","includes","MainShare","selections","setSelections","showShareLinkSpinner","setShowShareLinkSpinner","hasPermissions","usePermissions","hasManageIntegrationsPermission","PermissionName","canDirectShare","recentSearches","recentlySharedTo","directShareRecipients","currentUser","shareLinkIsLoading","TokenizedTypeahead","join","getRemoteUrl","UrlHelper","gatewayApiUrl","getRemotePostBody","query","indices","push","index","filters","userProfile","ObjectStatus","customerId","searchType","limit","requestHeaders","searchRequestHeaders","formatRemoteSuggestions","suggestions","results","onSuggestionSelected","selection","removeSelection","imageCdnUrl","activationLength","fetchSelectionMembers","fetchRecipientUsers","users","newSelections","forEach","updatedSelection","ObjectHelper","count","pagination","ArrayHelper","debounceTime","emptyStateImageUrl","errorStateImageUrl","hasStudentExperience","autoHeight","RecipientItem","removeRecipient","onClickRemoveRecipient","showDisplayName","typeId","onClickShowSettings","canAddPolicies","enableIntegrationBanner","integrations","canEmbed","ShareIntegrations","closePopup","appLink","integrationSettingAppLink","messagePopupAppLink","Spinner","as","animation","role","ShareSettingsForm","onClickDeleteLink","ShareSettings","onClickSaveLink","castInitialValues","getTitle","ShareView","dispatch","alerts","shouldFetchUserToken","screen","setScreen","UserRequests","ConfigRequests","userToken","ShareRequests","sentDirectShare","recipients","recentlySharedToIds","RecentShareHelper","R","hasRecentlySharedRecipients","isAuthenticated","CustomerRequests","useSettings","shareToGoogleClassroom","shareToMicrosoftTeams","isLoadingSettings","fetchRecipients","directShare","callback","onError","onSuccess","error","recipientId","success","dataLoaded","hasCompleted","Popup","showLoadingSpinner","contentClassName","bodyClassName","isFetching","authorization","googleClassroomSetting","msftTeamsSetting","IntegrationHelper","i","enabled","FormCheckbox","checkboxLabelClassName","checkboxLabelFontWeight","fieldProps","FieldWrapper","checkboxAppLink","checkboxAppLinkText","AppLink","CharacterCounter","field","fieldName","children","setType","resolvedChildren","FunctionHelper","f","containerClassName","showCharacterCounter","showRequiredStar","infoTooltip","infoTooltipPlacement","infoText","formSize","touched","disabledOnChange","_props","fieldWrapperProps","FormHelper","tooltipSpanHack","maxLength","errorMessage","defaultProps","autoComplete","castValuesOnSubmit","formattedInitialValues","cast","omitChildValues","child","Object","keys","hasOwnProperty","omitNullInitialValues","initialStatus","enableReinitialize","setSubmitting","resetForm","setFieldError","formattedData","reset","entries","useFormikContextWrapper","getCustomFormControlClassName","attribute","additionalClassName","getTypeSize"],"sourceRoot":""}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[7855],{75314:(e,t,n)=>{n.d(t,{j:()=>w});var a=n(32735),r=n(80247),o=n(23481),i=n(91967),c=n(76177),l=n(4594),s=n(45778),m=n(60376),u=n(36511),d=n(35223);const p={removeRecipient:"mCbMC",recipientItem:"kdcb0",showSpinner:"xH6Mu",avatarContainer:"Zcpg3",recipientDetails:"v5EmV",recipientDetailsWithRemoveButton:"_V928"};var v="shared.classroomGroupRecipientItemMetadata";function g(e){var t;return a.createElement(a.Fragment,null,a.createElement("div",{className:"".concat(p.avatarContainer," d-inline-block")},a.createElement(m.f,{svgName:d.vn.Group,variant:(0,u.I)(null===(t=e.classroomGroup.metadata)||void 0===t?void 0:t.colour)})),a.createElement("div",{className:e.detailsClassName},a.createElement("h4",{className:"font-size-normal fw-normal m-0"},e.classroomGroup.name),a.createElement("p",{className:"text-secondary m-0"},function(e){var t,n,a,r=null!==(n=null===(t=e.users)||void 0===t?void 0:t.count)&&void 0!==n?n:0,i=null===(a=e.classroom)||void 0===a?void 0:a.name;return i?o.T.getPhrase(v,"subheading",{classroomName:i,smartCount:r}):""}(e.classroomGroup))))}var f="shared.classroomRecipientItemMetadata";function E(e){return a.createElement(a.Fragment,null,a.createElement("div",{className:"".concat(p.avatarContainer," d-inline-block")},a.createElement(m.f,{svgName:d.vn.Classrooms,variant:"teal"})),a.createElement("div",{className:e.detailsClassName},a.createElement("h4",{className:"font-size-normal fw-normal m-0"},e.classroom.name),a.createElement("p",{className:"text-secondary m-0"},(n=null===(t=e.classroom.users)||void 0===t?void 0:t.count,Number.isInteger(n)?o.T.getPhrase(f,"subheading",{smartCount:n}):""))));var t,n}var h=n(20789),y=n(76881),C=n(86613),x=n(64818),b=o.T.encloseNamespace("shared.userRecipientItemMetadata");function N(e){var t;return a.createElement(a.Fragment,null,a.createElement("div",{className:"".concat(p.avatarContainer," d-inline-block")},a.createElement(h.q,{imageUrl:null===(t=e.user.avatar)||void 0===t?void 0:t.url,imageCdnUrl:e.imageCdnUrl,initials:x.l.getInitials(e.user.name,e.user.surname)})),a.createElement("div",{className:e.detailsClassName},a.createElement("h4",{className:"font-size-normal fw-normal m-0"},e.showDisplayName?x.l.getDisplayName(e.user):x.l.getFullName(e.user)),a.createElement("p",{className:"text-secondary m-0"},e.getSubText?e.getSubText(e.user):function(e){var t=x.l.getUserType(e),n=x.l.getUserRole(e);if(t===y.Y.Staff)return n===C.i.Admin?b("admin"):b("staff");var a=x.l.getYearGroup(e);return(null==a?void 0:a.name)?a.name:b("student")}(e.user))))}function S(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,a=Array(t);n<t;n++)a[n]=e[n];return a}var k=o.T.encloseNamespace("share.recipientItem");function I(e){switch(e){case l.E.User:return k("removeUser");case l.E.Classroom:return k("removeClassroom");case l.E.ClassroomGroup:return k("removeGroup")}return null}function w(e){var t,n,o=(t=a.useState(!1),n=2,function(e){if(Array.isArray(e))return e}(t)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var a,r,o,i,c=[],l=!0,s=!1;try{if(o=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;l=!1}else for(;!(l=(a=o.call(n)).done)&&(c.push(a.value),c.length!==t);l=!0);}catch(e){s=!0,r=e}finally{try{if(!l&&null!=n.return&&(i=n.return(),Object(i)!==i))return}finally{if(s)throw r}}return c}}(t,n)||function(e,t){if(e){if("string"==typeof e)return S(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?S(e,t):void 0}}(t,n)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),m=o[0],u=o[1],d="".concat(p.recipientItem," d-flex");m&&(d+=" ".concat(p.showSpinner));var v="".concat(e.removeRecipient?p.recipientDetailsWithRemoveButton:p.recipientDetails," d-inline-block ms-2");return a.createElement("div",{className:d},s.G.isType(e.entity,l.E.User)?a.createElement(N,{user:e.entity,imageCdnUrl:e.imageCdnUrl,detailsClassName:v,showDisplayName:e.showDisplayName,getSubText:e.getSubText}):s.G.isType(e.entity,l.E.Classroom)?a.createElement(E,{classroom:e.entity,detailsClassName:v}):s.G.isType(e.entity,l.E.ClassroomGroup)?a.createElement(g,{classroomGroup:e.entity,detailsClassName:v}):void 0,i.q.isFunction(e.removeRecipient)&&a.createElement("div",{className:"".concat(p.removeRecipient," d-inline-flex justify-content-center align-items-center")},m?a.createElement(r.Z,{as:"div",size:"sm",animation:"border",role:"status"}):a.createElement(c.u,{title:I(e.entity.typeId),spanHack:!0},a.createElement("div",{className:"btn-close cursor-pointer",role:"button","aria-label":"Close",onClick:function(){u(!0),e.removeRecipient(e.entity.id,(function(){return u(!1)}))}}))))}},82872:(e,t,n)=>{n.d(t,{t:()=>k});var a=n(32735),r=n(91967),o=n(11607),i=n(83914),c=n(4594),l=n(76881),s=n(36511),m=n(45778),u=n(35223),d=n(64818),p=n(80247),v=n(23481);const g={avatar:"srrS3"};function f(e){var t=e.imageUrl,n=e.initials,r={};return t&&(r.backgroundImage="url('".concat(t,"')")),a.createElement("div",{className:g.avatar,style:r},t?a.createElement(a.Fragment,null," "):n)}var E=n(76177);const h={svgContainer:"laVU4",selection:"vEOCt",expander:"d1NHd",iconContainer:"rFH4W",icon:"BarYz",bubble:"HF0E8",spinnerContainer:"iKeXW",remove:"pyzCM",removeBubble:"mgt6Y"};var y=v.T.encloseNamespace("shared.inputSelection");function C(e){var t,n="".concat(h.svgContainer," ").concat(h.icon);return e.typeId===c.E.Classroom?n+=" text-teal":n+=" text-".concat((0,s.I)(null===(t=e.metadata)||void 0===t?void 0:t.colour)),n}function x(e){var t,n=function(e){var t;switch(e.typeId){case c.E.Classroom:return"text-teal-hover";case c.E.ClassroomGroup:return"text-".concat((0,s.I)(null===(t=e.metadata)||void 0===t?void 0:t.colour),"-hover")}}(e.selection),r=e.selection.typeId===c.E.Classroom;if(!e.canExpand){if(!e.selection.typeId||e.selection.typeId===c.E.User){var l=e.selection;return a.createElement("div",{className:h.svgContainer},a.createElement(f,{imageUrl:null===(t=l.avatar)||void 0===t?void 0:t.url,initials:d.l.getInitials(e.selection.name,e.selection.surname)}))}return a.createElement(E.u,{title:y(r?"emptyClassroom":"emptyGroup")},a.createElement("div",{className:"align-items-center border border-white bg-white ".concat(h.iconContainer)},a.createElement(i.x,{className:C(e.selection),svgName:r?u.vn.Classrooms:u.vn.Group})))}return e.hasExpanded?a.createElement("div",{className:"d-flex align-items-center text-white ".concat(h.spinnerContainer," ").concat(h.svgContainer)},a.createElement(p.Z,{as:"div",size:"sm",animation:"border",role:"status"})):a.createElement(a.Fragment,null,a.createElement(o.L,{className:"align-items-center cursor-pointer text-white border border-white rounded-circle ".concat(h.expander," ").concat(n),onClick:e.onClickExpand},a.createElement(i.x,{svgName:u.vn.Plus,className:"d-flex align-items-center ".concat(h.svgContainer)})),a.createElement("div",{className:"align-items-center border border-white bg-white ".concat(h.iconContainer)},a.createElement(i.x,{className:C(e.selection),svgName:r?u.vn.Classrooms:u.vn.Group})))}function b(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var a,r,o,i,c=[],l=!0,s=!1;try{if(o=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;l=!1}else for(;!(l=(a=o.call(n)).done)&&(c.push(a.value),c.length!==t);l=!0);}catch(e){s=!0,r=e}finally{try{if(!l&&null!=n.return&&(i=n.return(),Object(i)!==i))return}finally{if(s)throw r}}return c}}(e,t)||function(e,t){if(e){if("string"==typeof e)return N(e,t);var n={}.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)?N(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 N(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,a=Array(t);n<t;n++)a[n]=e[n];return a}function S(e){var t;if(!e.typeId)return"dark-blue";switch(e.typeId){case c.E.User:return"number"==typeof e.userType?2===e.userType?"dark-blue":"indigo":e.userType===l.Y.Learner?"dark-blue":"indigo";case c.E.Classroom:return"teal";case c.E.ClassroomGroup:return(0,s.I)(null===(t=e.metadata)||void 0===t?void 0:t.colour)}}function k(e){var t,n,r,l=m.G.isType(e.selection,c.E.Classroom),s=m.G.isType(e.selection,c.E.ClassroomGroup),d=e.onClickExpand&&(l||s),p=!!(null===(t=e.selection.users)||void 0===t?void 0:t.count),v=!!(null===(r=null===(n=e.selection.users)||void 0===n?void 0:n.data)||void 0===r?void 0:r.length),g=b(a.useState(!1),2),f=g[0],E=g[1],y=b(a.useState(d&&p),2),C=y[0],x=y[1];if(a.useEffect((function(){x(d&&p)}),[d,p]),v){var N=e.selection,k=S(e.selection);return a.createElement("div",{className:"d-flex align-items-center flex-wrap me-1 mt-1 pb-1 ps-1 pe-4 position-relative border-".concat(k," text-").concat(k," ").concat(h.bubble)},N.users.data.map((function(t){return a.createElement(I,{key:"".concat(t.id,":").concat(e.selection.id),selection:t,colourVariant:k,hasStudentExperience:e.hasStudentExperience})})),a.createElement(o.L,{className:"cursor-pointer position-absolute text-".concat(k," ").concat(h.removeBubble),onClick:function(){return e.onClickRemove(e.selection)}},a.createElement(i.x,{svgName:u.vn.Close,className:"d-flex align-items-center ".concat(h.svgContainer)})))}return a.createElement(I,{selection:e.selection,canExpand:C,hasExpanded:f,onClickExpand:function(){E(!0),e.onClickExpand(e.selection.id)},onClickRemove:e.onClickRemove,colourVariant:S(e.selection),hasStudentExperience:e.hasStudentExperience})}function I(e){var t=e.colourVariant||S(e.selection),n=e.selection.name;return e.selection.typeId===c.E.User&&(n=e.hasStudentExperience?d.l.getDisplayName(e.selection):d.l.getFullName(e.selection)),a.createElement("div",{className:"".concat(h.selection," bg-").concat(t," rounded-pill text-").concat(t," d-flex align-items-center me-1 mt-1 overflow-hidden")},!e.hideExpander&&a.createElement(x,{canExpand:e.canExpand,hasExpanded:e.hasExpanded,onClickExpand:e.onClickExpand,selection:e.selection}),a.createElement("span",{className:"mx-1 text-white text-truncate"},n),r.q.isFunction(e.onClickRemove)&&a.createElement(o.L,{className:"d-flex align-items-center cursor-pointer align-self-stretch text-white ".concat(h.remove),onClick:function(){return e.onClickRemove(e.selection)}},a.createElement(i.x,{svgName:u.vn.Close,className:"d-flex align-items-center ".concat(h.svgContainer)})))}},7855:(e,t,n)=>{n.d(t,{d:()=>g,R:()=>f});var a=n(32735),r=n(23481),o=n(75896),i=n(75314),c=n(2136),l=n(83914),s=n(89589),m=n(97481),u=n(35223),d=n(82872);const p={container:"Dc3kX",suggestionsContainerOpen:"c5t3e",selectionContainer:"kFjoN",sectionContainer:"mLrE3"};var v="shared.tokenizedTypeahead",g=10;function f(e){var t;return a.createElement("div",{className:"form-control h-auto d-flex align-items-top position-relative ".concat(e.hideIcon?"":"py-1 px-0"," ").concat(e.className)},!e.hideIcon&&a.createElement(l.x,{className:"svg-container m-1",svgName:u.vn.Search}),a.createElement("div",{className:"".concat(p.selectionContainer," d-flex flex-wrap align-items-center mt-n1")},e.selections.map((function(t){return e.getInputTokenComponent?e.getInputTokenComponent(t):a.createElement(d.t,{key:t.id,selection:t,onClickRemove:e.removeSelection,onClickExpand:e.fetchSelectionMembers,hasStudentExperience:e.hasStudentExperience})})),a.createElement(c.E,Object.assign({},e,{onBackspace:function(){e.selections.length&&e.removeSelection(o.m.last(e.selections))},recentSearchHeading:e.recentSearchHeading||r.T.getPhrase(v,"recentSearchHeading"),placeholder:(null===(t=e.selections)||void 0===t?void 0:t.length)?" ":e.placeholder,searchIconPlacement:!1,clearQueryOnSelect:!0,getSuggestionComponent:function(t){return e.getSuggestionComponent?e.getSuggestionComponent(t):a.createElement(i.j,{entity:t,imageCdnUrl:e.imageCdnUrl,showDisplayName:e.hasStudentExperience})},getEmptyStateComponent:function(t){return a.createElement(s.x,{query:t,imageUrl:e.emptyStateImageUrl})},getErrorStateComponent:function(t){return a.createElement(m.d,{imageUrl:e.errorStateImageUrl,onClickTryAgain:t})},theme:{container:p.container,suggestionsContainerOpen:"bg-white py-1 rounded border mt-1 ".concat(p.suggestionsContainerOpen),sectionContainer:"border-bottom py-1 ".concat(p.sectionContainer)},sectionTitleClassName:"ps-2",renderSuggestionsOnInputFocus:e.renderSuggestionsOnInputFocus,onSuggestionDependencies:[e.selections]}))),!!e.sharePermissionsDescription&&a.createElement("span",{className:"px-2 text-secondary text-nowrap"},e.sharePermissionsDescription))}f.defaultProps={renderSuggestionsOnInputFocus:!0}},89589:(e,t,n)=>{n.d(t,{x:()=>l});var a=n(32735),r=n(83345),o=n(28329);const i={emptyState:"bKTf0"};var c="shared.typeaheadEmptyState";function l(e){var t=e.query,n=void 0===t?"":t,l=e.imageUrl,s=(0,o.N)(n,300);return a.createElement("div",{className:"d-flex flex-column align-items-center text-center",onClick:function(e){e.stopPropagation()}},a.createElement("img",{alt:"",role:"presentation",src:l,className:"pb-2 ".concat(i.emptyState)}),a.createElement("h2",{className:"h6"},a.createElement(r.x,{namespace:c,phrase:"noResults",options:{query:s,smartCount:s.length}})))}},97481:(e,t,n)=>{n.d(t,{d:()=>l});var a=n(32735),r=n(11607),o=n(83345);const i={emptyState:"k5mEG"};var c="shared.typeaheadErrorState";function l(e){return a.createElement("div",{className:"d-flex flex-column align-items-center text-center",onClick:function(e){e.stopPropagation()}},a.createElement("img",{alt:"",role:"presentation",src:e.imageUrl,className:"pb-2 ".concat(i.emptyState)}),a.createElement("h2",{className:"h6"},a.createElement(o.x,{namespace:c,phrase:"error"})),a.createElement(r.L,{onClick:function(t){t.stopPropagation(),e.onClickTryAgain()},className:"btn btn-link info-link p-0"},a.createElement(o.x,{namespace:c,phrase:"tryAgain"})))}},36511:(e,t,n)=>{n.d(t,{I:()=>r});var a=n(96787);function r(e){switch(e){case a.R.Pink:return"pink";case a.R.Orange:return"orange";case a.R.Green:return"green";case a.R.Blue:return"blue";case a.R.Purple:return"purple";case a.R.Indigo:return"indigo";default:return"pink"}}}}]);
|
|
2
|
-
//# sourceMappingURL=7855-
|
|
1
|
+
"use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[7855],{75314:(e,t,n)=>{n.d(t,{j:()=>w});var a=n(32735),r=n(80247),o=n(23481),i=n(91967),c=n(76177),l=n(4594),s=n(45778),m=n(60376),u=n(36511),d=n(35223);const p={removeRecipient:"mCbMC",recipientItem:"kdcb0",showSpinner:"xH6Mu",avatarContainer:"Zcpg3",recipientDetails:"v5EmV",recipientDetailsWithRemoveButton:"_V928"};var v="shared.classroomGroupRecipientItemMetadata";function g(e){var t;return a.createElement(a.Fragment,null,a.createElement("div",{className:"".concat(p.avatarContainer," d-inline-block")},a.createElement(m.f,{svgName:d.vn.Group,variant:(0,u.I)(null===(t=e.classroomGroup.metadata)||void 0===t?void 0:t.colour)})),a.createElement("div",{className:e.detailsClassName},a.createElement("h4",{className:"font-size-normal fw-normal m-0"},e.classroomGroup.name),a.createElement("p",{className:"text-secondary m-0"},function(e){var t,n,a,r=null!==(n=null===(t=e.users)||void 0===t?void 0:t.count)&&void 0!==n?n:0,i=null===(a=e.classroom)||void 0===a?void 0:a.name;return i?o.T.getPhrase(v,"subheading",{classroomName:i,smartCount:r}):""}(e.classroomGroup))))}var f="shared.classroomRecipientItemMetadata";function E(e){return a.createElement(a.Fragment,null,a.createElement("div",{className:"".concat(p.avatarContainer," d-inline-block")},a.createElement(m.f,{svgName:d.vn.Classrooms,variant:"teal"})),a.createElement("div",{className:e.detailsClassName},a.createElement("h4",{className:"font-size-normal fw-normal m-0"},e.classroom.name),a.createElement("p",{className:"text-secondary m-0"},(i=(null===(n=(t=e.classroom).users)||void 0===n?void 0:n.count)||(null===(r=t.enrolments)||void 0===r?void 0:r.count),Number.isInteger(i)?o.T.getPhrase(f,"subheading",{smartCount:i}):""))));var t,n,r,i}var h=n(20789),y=n(76881),C=n(86613),x=n(64818),b=o.T.encloseNamespace("shared.userRecipientItemMetadata");function N(e){var t;return a.createElement(a.Fragment,null,a.createElement("div",{className:"".concat(p.avatarContainer," d-inline-block")},a.createElement(h.q,{imageUrl:null===(t=e.user.avatar)||void 0===t?void 0:t.url,imageCdnUrl:e.imageCdnUrl,initials:x.l.getInitials(e.user.name,e.user.surname)})),a.createElement("div",{className:e.detailsClassName},a.createElement("h4",{className:"font-size-normal fw-normal m-0"},e.showDisplayName?x.l.getDisplayName(e.user):x.l.getFullName(e.user)),a.createElement("p",{className:"text-secondary m-0"},e.getSubText?e.getSubText(e.user):function(e){var t=x.l.getUserType(e),n=x.l.getUserRole(e);if(t===y.Y.Staff)return n===C.i.Admin?b("admin"):b("staff");var a=x.l.getYearGroup(e);return(null==a?void 0:a.name)?a.name:b("student")}(e.user))))}function S(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,a=Array(t);n<t;n++)a[n]=e[n];return a}var k=o.T.encloseNamespace("share.recipientItem");function I(e){switch(e){case l.E.User:return k("removeUser");case l.E.Classroom:return k("removeClassroom");case l.E.ClassroomGroup:return k("removeGroup")}return null}function w(e){var t,n,o=(t=a.useState(!1),n=2,function(e){if(Array.isArray(e))return e}(t)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var a,r,o,i,c=[],l=!0,s=!1;try{if(o=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;l=!1}else for(;!(l=(a=o.call(n)).done)&&(c.push(a.value),c.length!==t);l=!0);}catch(e){s=!0,r=e}finally{try{if(!l&&null!=n.return&&(i=n.return(),Object(i)!==i))return}finally{if(s)throw r}}return c}}(t,n)||function(e,t){if(e){if("string"==typeof e)return S(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?S(e,t):void 0}}(t,n)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),m=o[0],u=o[1],d="".concat(p.recipientItem," d-flex");m&&(d+=" ".concat(p.showSpinner));var v="".concat(e.removeRecipient?p.recipientDetailsWithRemoveButton:p.recipientDetails," d-inline-block ms-2");return a.createElement("div",{className:d},s.G.isType(e.entity,l.E.User)?a.createElement(N,{user:e.entity,imageCdnUrl:e.imageCdnUrl,detailsClassName:v,showDisplayName:e.showDisplayName,getSubText:e.getSubText}):s.G.isType(e.entity,l.E.Classroom)?a.createElement(E,{classroom:e.entity,detailsClassName:v}):s.G.isType(e.entity,l.E.ClassroomGroup)?a.createElement(g,{classroomGroup:e.entity,detailsClassName:v}):void 0,i.q.isFunction(e.removeRecipient)&&a.createElement("div",{className:"".concat(p.removeRecipient," d-inline-flex justify-content-center align-items-center")},m?a.createElement(r.Z,{as:"div",size:"sm",animation:"border",role:"status"}):a.createElement(c.u,{title:I(e.entity.typeId),spanHack:!0},a.createElement("div",{className:"btn-close cursor-pointer",role:"button","aria-label":"Close",onClick:function(){u(!0),e.removeRecipient(e.entity.id,(function(){return u(!1)}))}}))))}},82872:(e,t,n)=>{n.d(t,{t:()=>k});var a=n(32735),r=n(91967),o=n(11607),i=n(83914),c=n(4594),l=n(76881),s=n(36511),m=n(45778),u=n(35223),d=n(64818),p=n(80247),v=n(23481);const g={avatar:"srrS3"};function f(e){var t=e.imageUrl,n=e.initials,r={};return t&&(r.backgroundImage="url('".concat(t,"')")),a.createElement("div",{className:g.avatar,style:r},t?a.createElement(a.Fragment,null," "):n)}var E=n(76177);const h={svgContainer:"laVU4",selection:"vEOCt",expander:"d1NHd",iconContainer:"rFH4W",icon:"BarYz",bubble:"HF0E8",spinnerContainer:"iKeXW",remove:"pyzCM",removeBubble:"mgt6Y"};var y=v.T.encloseNamespace("shared.inputSelection");function C(e){var t,n="".concat(h.svgContainer," ").concat(h.icon);return e.typeId===c.E.Classroom?n+=" text-teal":n+=" text-".concat((0,s.I)(null===(t=e.metadata)||void 0===t?void 0:t.colour)),n}function x(e){var t,n=function(e){var t;switch(e.typeId){case c.E.Classroom:return"text-teal-hover";case c.E.ClassroomGroup:return"text-".concat((0,s.I)(null===(t=e.metadata)||void 0===t?void 0:t.colour),"-hover")}}(e.selection),r=e.selection.typeId===c.E.Classroom;if(!e.canExpand){if(!e.selection.typeId||e.selection.typeId===c.E.User){var l=e.selection;return a.createElement("div",{className:h.svgContainer},a.createElement(f,{imageUrl:null===(t=l.avatar)||void 0===t?void 0:t.url,initials:d.l.getInitials(e.selection.name,e.selection.surname)}))}return a.createElement(E.u,{title:y(r?"emptyClassroom":"emptyGroup")},a.createElement("div",{className:"align-items-center border border-white bg-white ".concat(h.iconContainer)},a.createElement(i.x,{className:C(e.selection),svgName:r?u.vn.Classrooms:u.vn.Group})))}return e.hasExpanded?a.createElement("div",{className:"d-flex align-items-center text-white ".concat(h.spinnerContainer," ").concat(h.svgContainer)},a.createElement(p.Z,{as:"div",size:"sm",animation:"border",role:"status"})):a.createElement(a.Fragment,null,a.createElement(o.L,{className:"align-items-center cursor-pointer text-white border border-white rounded-circle ".concat(h.expander," ").concat(n),onClick:e.onClickExpand},a.createElement(i.x,{svgName:u.vn.Plus,className:"d-flex align-items-center ".concat(h.svgContainer)})),a.createElement("div",{className:"align-items-center border border-white bg-white ".concat(h.iconContainer)},a.createElement(i.x,{className:C(e.selection),svgName:r?u.vn.Classrooms:u.vn.Group})))}function b(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var a,r,o,i,c=[],l=!0,s=!1;try{if(o=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;l=!1}else for(;!(l=(a=o.call(n)).done)&&(c.push(a.value),c.length!==t);l=!0);}catch(e){s=!0,r=e}finally{try{if(!l&&null!=n.return&&(i=n.return(),Object(i)!==i))return}finally{if(s)throw r}}return c}}(e,t)||function(e,t){if(e){if("string"==typeof e)return N(e,t);var n={}.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)?N(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 N(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,a=Array(t);n<t;n++)a[n]=e[n];return a}function S(e){var t;if(!e.typeId)return"dark-blue";switch(e.typeId){case c.E.User:return"number"==typeof e.userType?2===e.userType?"dark-blue":"indigo":e.userType===l.Y.Learner?"dark-blue":"indigo";case c.E.Classroom:return"teal";case c.E.ClassroomGroup:return(0,s.I)(null===(t=e.metadata)||void 0===t?void 0:t.colour)}}function k(e){var t,n,r,l=m.G.isType(e.selection,c.E.Classroom),s=m.G.isType(e.selection,c.E.ClassroomGroup),d=e.onClickExpand&&(l||s),p=!!(null===(t=e.selection.users||e.selection.enrolments)||void 0===t?void 0:t.count),v=!!(null===(r=null===(n=e.selection.users)||void 0===n?void 0:n.data)||void 0===r?void 0:r.length),g=b(a.useState(!1),2),f=g[0],E=g[1],y=b(a.useState(d&&p),2),C=y[0],x=y[1];if(a.useEffect((function(){x(d&&p)}),[d,p]),v){var N=e.selection,k=S(e.selection);return a.createElement("div",{className:"d-flex align-items-center flex-wrap me-1 mt-1 pb-1 ps-1 pe-4 position-relative border-".concat(k," text-").concat(k," ").concat(h.bubble)},N.users.data.map((function(t){return a.createElement(I,{key:"".concat(t.id,":").concat(e.selection.id),selection:t,colourVariant:k,hasStudentExperience:e.hasStudentExperience})})),a.createElement(o.L,{className:"cursor-pointer position-absolute text-".concat(k," ").concat(h.removeBubble),onClick:function(){return e.onClickRemove(e.selection)}},a.createElement(i.x,{svgName:u.vn.Close,className:"d-flex align-items-center ".concat(h.svgContainer)})))}return a.createElement(I,{selection:e.selection,canExpand:C,hasExpanded:f,onClickExpand:function(){E(!0),e.onClickExpand(e.selection.id)},onClickRemove:e.onClickRemove,colourVariant:S(e.selection),hasStudentExperience:e.hasStudentExperience})}function I(e){var t=e.colourVariant||S(e.selection),n=e.selection.name;return e.selection.typeId===c.E.User&&(n=e.hasStudentExperience?d.l.getDisplayName(e.selection):d.l.getFullName(e.selection)),a.createElement("div",{className:"".concat(h.selection," bg-").concat(t," rounded-pill text-").concat(t," d-flex align-items-center me-1 mt-1 overflow-hidden")},!e.hideExpander&&a.createElement(x,{canExpand:e.canExpand,hasExpanded:e.hasExpanded,onClickExpand:e.onClickExpand,selection:e.selection}),a.createElement("span",{className:"mx-1 text-white text-truncate"},n),r.q.isFunction(e.onClickRemove)&&a.createElement(o.L,{className:"d-flex align-items-center cursor-pointer align-self-stretch text-white ".concat(h.remove),onClick:function(){return e.onClickRemove(e.selection)}},a.createElement(i.x,{svgName:u.vn.Close,className:"d-flex align-items-center ".concat(h.svgContainer)})))}},7855:(e,t,n)=>{n.d(t,{d:()=>g,R:()=>f});var a=n(32735),r=n(23481),o=n(75896),i=n(75314),c=n(2136),l=n(83914),s=n(89589),m=n(97481),u=n(35223),d=n(82872);const p={container:"Dc3kX",suggestionsContainerOpen:"c5t3e",selectionContainer:"kFjoN",sectionContainer:"mLrE3"};var v="shared.tokenizedTypeahead",g=10;function f(e){var t;return a.createElement("div",{className:"form-control h-auto d-flex align-items-top position-relative ".concat(e.hideIcon?"":"py-1 px-0"," ").concat(e.className)},!e.hideIcon&&a.createElement(l.x,{className:"svg-container m-1",svgName:u.vn.Search}),a.createElement("div",{className:"".concat(p.selectionContainer," d-flex flex-wrap align-items-center mt-n1")},e.selections.map((function(t){return e.getInputTokenComponent?e.getInputTokenComponent(t):a.createElement(d.t,{key:t.id,selection:t,onClickRemove:e.removeSelection,onClickExpand:e.fetchSelectionMembers,hasStudentExperience:e.hasStudentExperience})})),a.createElement(c.E,Object.assign({},e,{onBackspace:function(){e.selections.length&&e.removeSelection(o.m.last(e.selections))},recentSearchHeading:e.recentSearchHeading||r.T.getPhrase(v,"recentSearchHeading"),placeholder:(null===(t=e.selections)||void 0===t?void 0:t.length)?" ":e.placeholder,searchIconPlacement:!1,clearQueryOnSelect:!0,getSuggestionComponent:function(t){return e.getSuggestionComponent?e.getSuggestionComponent(t):a.createElement(i.j,{entity:t,imageCdnUrl:e.imageCdnUrl,showDisplayName:e.hasStudentExperience})},getEmptyStateComponent:function(t){return a.createElement(s.x,{query:t,imageUrl:e.emptyStateImageUrl})},getErrorStateComponent:function(t){return a.createElement(m.d,{imageUrl:e.errorStateImageUrl,onClickTryAgain:t})},theme:{container:p.container,suggestionsContainerOpen:"bg-white py-1 rounded border mt-1 ".concat(p.suggestionsContainerOpen),sectionContainer:"border-bottom py-1 ".concat(p.sectionContainer)},sectionTitleClassName:"ps-2",renderSuggestionsOnInputFocus:e.renderSuggestionsOnInputFocus,onSuggestionDependencies:[e.selections]}))),!!e.sharePermissionsDescription&&a.createElement("span",{className:"px-2 text-secondary text-nowrap"},e.sharePermissionsDescription))}f.defaultProps={renderSuggestionsOnInputFocus:!0}},89589:(e,t,n)=>{n.d(t,{x:()=>l});var a=n(32735),r=n(83345),o=n(28329);const i={emptyState:"bKTf0"};var c="shared.typeaheadEmptyState";function l(e){var t=e.query,n=void 0===t?"":t,l=e.imageUrl,s=(0,o.N)(n,300);return a.createElement("div",{className:"d-flex flex-column align-items-center text-center",onClick:function(e){e.stopPropagation()}},a.createElement("img",{alt:"",role:"presentation",src:l,className:"pb-2 ".concat(i.emptyState)}),a.createElement("h2",{className:"h6"},a.createElement(r.x,{namespace:c,phrase:"noResults",options:{query:s,smartCount:s.length}})))}},97481:(e,t,n)=>{n.d(t,{d:()=>l});var a=n(32735),r=n(11607),o=n(83345);const i={emptyState:"k5mEG"};var c="shared.typeaheadErrorState";function l(e){return a.createElement("div",{className:"d-flex flex-column align-items-center text-center",onClick:function(e){e.stopPropagation()}},a.createElement("img",{alt:"",role:"presentation",src:e.imageUrl,className:"pb-2 ".concat(i.emptyState)}),a.createElement("h2",{className:"h6"},a.createElement(o.x,{namespace:c,phrase:"error"})),a.createElement(r.L,{onClick:function(t){t.stopPropagation(),e.onClickTryAgain()},className:"btn btn-link info-link p-0"},a.createElement(o.x,{namespace:c,phrase:"tryAgain"})))}},36511:(e,t,n)=>{n.d(t,{I:()=>r});var a=n(96787);function r(e){switch(e){case a.R.Pink:return"pink";case a.R.Orange:return"orange";case a.R.Green:return"green";case a.R.Blue:return"blue";case a.R.Purple:return"purple";case a.R.Indigo:return"indigo";default:return"pink"}}}}]);
|
|
2
|
+
//# sourceMappingURL=7855-76f000d339-lite.chunk.js.map
|