@clickview/lite 0.60.0-rc.1 → 0.60.0-rc.2
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/8988-863de3ae24-lite.chunk.js +2 -0
- package/dist/scripts/8988-863de3ae24-lite.chunk.js.map +1 -0
- package/dist/scripts/{bundle-5bd60218ec.min.js → bundle-6ac9fc9b87.min.js} +3 -3
- package/dist/scripts/bundle-6ac9fc9b87.min.js.map +1 -0
- package/package.json +1 -1
- package/dist/scripts/8988-f66e969430-lite.chunk.js +0 -2
- package/dist/scripts/8988-f66e969430-lite.chunk.js.map +0 -1
- package/dist/scripts/bundle-5bd60218ec.min.js.map +0 -1
- /package/dist/scripts/{bundle-5bd60218ec.min.js.LICENSE.txt → bundle-6ac9fc9b87.min.js.LICENSE.txt} +0 -0
package/package.json
CHANGED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
"use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[8988],{56187:(e,t,n)=>{n.r(t),n.d(t,{ShareView:()=>xe});var r=n(32735),a=n(70680),i=n(23481),o=n(20354),c=n(30439),s=n(31250),l=n(59087),u=n(49985),m=n(65858),d=n(30357),p=n(64249),f=n(83345),h=n(26450);const y={embedHtmlInput:"mwvd0",copyBtnContainer:"myePx"};function g(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,c=[],s=!0,l=!1;try{if(i=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;s=!1}else for(;!(s=(r=i.call(n)).done)&&(c.push(r.value),c.length!==t);s=!0);}catch(e){l=!0,a=e}finally{try{if(!s&&null!=n.return&&(o=n.return(),Object(o)!==o))return}finally{if(l)throw a}}return c}}(e,t)||function(e,t){if(e){if("string"==typeof e)return v(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)?v(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 v(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 A="share.copyEmbedHtml",b=i.T.encloseNamespace(A);function E(e){var t=h.i.getEmbedResolutions(),n=g(r.useState("copy"),2),a=n[0],i=n[1],o=g(r.useState(!1),2),c=o[0],s=o[1],v=g(r.useState(t.find((function(e){return"100%"===e.width}))),2),E=v[0],S=v[1],C=g(r.useState(!1),2),k=C[0],w=C[1],L=h.i.buildEmbedUrl({embedUrl:e.embedUrl,host:e.config.primaryUrl,shareId:e.shareId,autoplay:c}),N=h.i.getEmbedString({url:L,size:E});return r.createElement(f.D.Provider,{value:A},r.createElement("label",null,r.createElement(f.x,{namespace:A,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:N,rows:7,readOnly:!0}),r.createElement(l.CopyToClipboard,{onCopy:function(){i("copied"),setTimeout((function(){return i("copy")}),2e3),k||(w(!0),u.k.logUserAction(Object.assign(Object.assign({},e.entity),{embedDetails:{size:E,autoplay:c}}),u.k.mergeOptions(p.I.getAnalyticsOptions(e.entityType),{actionType:m.Vw.Share,descriptor:m.YM.CopyEmbedHtml,eventVersion:m.eq.V3})))},text:N},r.createElement("button",{className:"btn btn-outline-dark border border-secondary position-absolute bottom-0 end-0 ".concat(y.copyBtnContainer),type:"button"},b(a)))),r.createElement(d.V,{autoplay:c,setAutoplay:s,videoSize:E,setVideoSize:S,videoSizes:t}))}var S=n(11607),C=n(13876),k="shared.share";function w(e){return r.createElement(r.Fragment,null,r.createElement("div",{className:"mb-3"},r.createElement(E,{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(C.u,null,r.createElement(S.L,{onClick:e.onClickCancel,className:"btn btn-outline-dark"},r.createElement(f.x,{namespace:k,phrase:"back"}))))}var L=n(80247),N=n(42648),I=n(97395),x=n(75896),O=n(1048),U=n(83914),P=n(35223);const B={hoverBackground:"ICTmv"};var j="share.getEmbedCode";function z(e){return r.createElement(S.L,{onClick:e.onClickGetEmbedCode,className:"d-inline-block p-1 pe-2 rounded-1 ".concat(B.hoverBackground)},r.createElement("div",{className:"d-flex align-items-center"},r.createElement("div",{className:"bg-dark text-white rounded-1 me-2"},r.createElement(U.x,{svgName:P.vn.Code,size:U.S.Large})),r.createElement(f.x,{namespace:j,phrase:"getEmbedCode"})))}var T=n(45852),F=n(7855),D=n(3185),V=n(36532);function M(){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,iVBORw0KGgoAAAANSUhEUgAAAMAAAADACAYAAABS3GwHAAAAAXNSR0IArs4c6QAAJ41JREFUeAHtfQm0XFWZ7r+r7jxPuTeXhExkgISYNFOGmwBJUEB8IPSD1whERXR1A22Cgv2WT1TQ7tUNCIRW2vVE1ESkF3SDgAr4TBgyQQANhgAhIQNJCPfmDrm581B13v+dupXUrVtn71OnTp2a9r9W1Rn2/O/vP3v6978FaXKNA8a2ceOp35hFgmYRGVPJMGrJEHUk+Ep8JaOcr4X8voDEyBWpCzHI7wbMK/GV6Dj/2jhsG4dtZQ/47ePnXVQodomFLc0IpilxDojEo8itGIx9U4roSN8MGh6axYA83QS7YQJ+JnOi0iNudLKw7OK0dnH6u1h4dlFe/i5qLN4tpu7v9ygPWZGMFgBFNRo75xRQR8sCMgLLyaDl7H0hXwsUwVLkLLgVode4pdlAPv8Gqq7fJubsHExRZjIiWS0AUdVkGFf7aeOGsxlIy0YAv4S/sCVR3jLjUYhezugmLgsLBP8WL/+zEE8GMiPz3uRSCwDz2ezWHO65nILBaxnsy/iVV10Zb2r5ZCroOr3E44rf0MSK53R3iUdWJ3mTW3eGYQjaXL+EgoEb+Et/DZc+W0FvVbEsDPQEd5XWUlPLZiGEYeUxm9/nnAAYW8ZNp2HjBqIggD81myvXdtkE7SPyraM8sU4sPrrHdrgs8JgTAmAOZNuPXE9BuonrbFEW1Fsyi7CVxwuPUE3jr3NhAJ3VAmBsmVhMgb6vMvDv4J7+xGSiBnEPGj76aLiM9uI3VE6fBIqo18ijnmAedRv5fOUf8T0/410Pu4FKxTCV+oapjH+lhPshKhND5rsSdhvv76dp+V00La+bJvGvQATNcMn9E4e4i3QP5RU/IhYf6ktuWqmLPSsFwNhUV86D2Zu5i/MNvta7zd4+w087BqvpQwb53mH+mdcyOhgopSAPLZJJPu6qn+rvMYUhJBRddBoLx9yCDioWSZjgEaKFBeF+Hjw/LJa0diWzbKmIO7m15XGJ+ItfQ8P9q7h//48M/mq3kseXfftgDW0ZGEdb++vN+yF+l06Uz63C/IJ2WlTUQosLj5r3rrYUgjrI8D1E+UUPcYvQnk5lTyQvWSEAxpvTKqm389sM+pu5q1OWCEMQNsBf8R1D1bSlnwE/UE9vDtTSAH/1M4kKuTU4t7CVFrIwLC46SnPzO8jvykSP6OYW4WEqqfwXcc7ezkziSay8ZrwAGK/UXceg/xH/GmIVMJ537w5W0VO9k+jZ3lOplfvv2UR1PI64vOQgXVXyEc0uOOZC0cQnPIt+u7ig9TEXIktZFBkrAMarNbO5An7CffwLE+Fec6CYnmHAP9UzmT4YqkgkqowJOzP/OF1VeoCuYIFo8Cc4vhXiZf743CLOb383YxgQkdGMEwDj7YZS6hz+LjP9Nu7y5EeUxfYtBrEv9E2gp3sm0eb+Bo4mNwmV31TUTFeWfkSXFB92PogWNMQfoweoMu9uMa+5J5O4mVECYGyqvYqnWR5kxJ7qhMnHeRpybfd0erRrOh0Lpqk+m5OCuRCmyjdIN5bvoZVlu6mCp2MdkaCD5BOrxZK2pxyFT0GgjBAAY3NDPasf/4L581knPGoLFtIvGPRru04z5+OdxJErYbD+sLL8Q/oyC0OtD1sTHJCg35M//0bR1NziILSnQdJeAHhOfxl/9R/jvn5jvJxB//7/Hp9Bj/dM430qmTWLE29Z3fZfxLNI15bupa9V7HY2ThDiCLcG1/HawUtu583N+NJWAAzj+z7a+NB3uLDf4y5PXJPuLcEiWnNsNv1372RzddZNhuVaXFhL+NuSA7Sq6l2q98W510bwGjzRXbT06z8U4vteLF/HXT1pKQDGa/UNNBjAV39FPCXC/P3a7tPogc7ZuqsTD+Ns+EXX6LbKd3mM8GH86wlCrKcC/3XpuJUz7QTAeLV2BX/xeW45vnn9t3il9s72s+j9oVzTaraBXhe9nJ7fST+o+TOdzavO8ZFo5gW068T5bevjC5dc33F1LZKZFXR5jFfr7mLg/zEe8LcHCuif2s+mq5uXafAns4JG4sYHBrwGz8F7+4QPmvFH1LHZvbUfMKk+06IFMHZPL6SPO37DDLrKbmkxd/+f3VPpns4zqVNPadplm6v+Knnq9FuV79Dfle3jj3scJMR/U2P1dWLGHofTTHGkpfAaV74VcTlyNl6rqaBB8Uw8K7pHWU1hddu5pp6Oo0R1IFc5sKiwhR6sfYPGsbqFbcIKcoFxhVjYDhMwKaOUCoBpR6cv8DyXfr5dDmxm5bTbGPzZpqtjt/zp6g+6Rg+wEDSxMMRB26nYf6k47yjrFaWGUiYAoa2JgRd5wDvNTtExw/PQ8TPox/zLVdUFO3xKpR+A6daK9+jr/LOteSpoL+X5L07VVsyUCAAPhM7i/v7z3O2xtVkF8/qrWs+j11kfX1P6c2ABq2Cvqdtmf90Am25IXCrOb/2z16XzXACMV2qX84jptwx+NhOopo2srPYN7vJAnUFT5nAAahT3c5doKSvb2SIhurhp/7y4oG2DLf8uefJUAEzwE/2Bv/620PxL1t/5wbF5usvjUmV7HQ3AdWfV2/Ql1iuyR2zZjvW9vBQCzwRgpNvzst0v/708vfkfx2fZ45v2ldYc+IeKXXQHT5faIrQEJC70qjvkiQCEBrzBzXb6/Bjs/p+Ov6Eneqba4pf2lBkcuKZ0H/1z9V/sDY4xJsjzNXkxME66AIRMhgcY/OrZHuy7vbVtAa3vi1vxMzNQkOO5XFF8hH5c+zpbeLdhvQKzQ0X+pmRPkSZVAMxFrgF6hetdOc+PzSo3tTaZG9BzHCdZXfxzCtvokbrNvOmGN5GpaTsV0gXJXCxLmi6Qqd6AFV4b4Mc05/86eqEGvxoQGe8DFjZQ16hzGzQfWgImlmx4duIlKQJgKjtBt8fGhnV8+b94dCntGsyNDelOKinbwqCuUeeoeyUBQ4ylZCnQJaULZGp1GkHeuC4n9PlvYEbgq6Ap9ziA7tC6cRttjgl8d/PM0Pfc5pLrAmDq80OlWbGLC7M9f9+2SA943a7RDIsPA+Of1m5Vzw6Zu8vEZ9zeT+BqF8jcyYXNLArwo44w1alnezIMrUnILjAALCgJmGJsmRhTerbvwTUBMPto2MZoYycXFrn0PL/9Ssp2n8ACMKEm3lTDGHNzPOCaAJgb2G3s4YV6g17hVVd1rvkAJoANJQFjIWMJSq92PLgyBgiZLgn+SdX1gWLbl47ymXN2cqb95BwHAMZfjtukVqDDeMDnu8gNkysJC4BptCowvJ2nPKXLt5j3vezIRVqrM+dgHV+BoUX6+8Y/qVWpYXfInzc/UeNbiXeBAkOPqsCPGR/o82uV5vjAkIu+gRFgBZiREj64wF6ClJAAmLY6DbpMlYc1vItLb2ZRcUm7hzkArAAzSmLsmRhUerT2oBAz64AhK81D73GHXmqoFnt4V7Ys1f1+a1ZqlxgcADDX1m9U7zGGQd7K/DOcWqV23gLARLkC/LDegA3setAbo4b1KykHgBlgBxiSEjBomsuX+rJ0dNQChA6nIB74WtvnRwGu5y8/jhjSpDnglAMwufJrbgmkQDXPJ6D5Tg7pcNgC4GQWa/CjsDBapcHvtNp1uDAHgCFgSUomFhmTDihuATDP5FJoecJkHiy2adIccIMDwJLSDCNjMnReXHwpxiUA5mmMZNynSuLfOudqc4UqJml32xyA6UtgSk3Gj0IYVfsM+4hLAMyjSMkYHw4c6worzU/2TInlpN9pDjjmADAFbMmJdYVwXG4cJB1bRMZjHkI91HeAld0sz+HF4sX/aF6hrTRHMk7fu8YBmGZ/rmG9QnWazzHOL55s9zBv+y2AeQK7NfhRyl/1TNfgd626dUTRHIBpdhyAIifGqIlVua+wq60WgJXdyikYPMAzP9XhgNFX6Ppc9PFn9Mks0YzRz65yACfV/OmUP8p1hQR1sLLcZFaWYxtDcrLXAhjGzTLwI4kH9bFEck5rV1c40G3km+e/SSPDhxqYtUHKFoD7/sU03LefI7Rc0fqET2O88Mgl+kA6GwzXXhLnAA7ue6XxBfnplaZxreIpPBbok6WobgECfV+VgR+R/4yPIh001FHJMqLdNAfscgBYw/G3UsIHG9hVkBS1xs45Bbz14A5ZHFBfxTm8mjQHvOQAMKdUr2fsmhiWZEwqANR65Aae9pwoCU+Pds3Qh1DLGKTdksIBHHz+C+UWSsZu+5HrZRmQCwDRV2SBYdhoXZf++st4pN2Sx4G1Xaexca08eQJBuknmwTK0adF5KLBIFnht93Q97SljUJTb6VUTaEXjp+jccdOpvriSxhVVmlqOLf3HqaXvGL3Zuoc2fPwOvXvsYFRI/RiLA5gRWts9wzyWKZb7yLtFwLKVpWnLWSC27nY3GcE7rSLu4yao6ePP0jF9RKkVi068//SEebR6zudoajkflWuD9nfzEUPvPEcvHt5uw3due6nio1o3n/IHKpZZnBbWVuViCoBhsE7DxtoPee5/qhV7n+6ZRN9sP9fKWb9nDpxSUkP3nfdFml9ryUYpn95u30+3v/5LOtwb76ns0mizzvFHNW/QlaUfWZdL0D5a2naaEGLM3qzYY4DN9bBdIq21p3snWSeoXegc7uY8ufx2x+AHC+fVTKEnV9zBXSbFlF+O81uJRWAZmI5BsQUgGODZH2tq5oWvzWzjR1NsDgD8P19yC1UXWuoNxg4Y421VQSn9fOnNWghi8Cb8ClgEJqVkgekxAmDsm1LEX/9rZJE903sqe9EUiwPo9qxZcCPl+/yxnB29yxN+enDBl2kCx61pLAeARWBSSoxpE9tRnsYIAB3uuZz9VEb5G/X4VM/kUc/64SQH0Od348t/MsbQHeK8b8GXol/r5xEO2MBk5Qi2R/FsrAAEg18Y5SPqYedgFX0wpA+ziGKL+fiZCfMT6vPHijPyHcYEF3MamsZyAJgENqUUDF4b7T5KAAzjarTby6I9RT4rBxyRnnPsfvWZn0t6iVd5kEbSC5GkBJTYNIxlIxg/kYNRAkAbN5zNim+Wn3fs+HpW1dc6EXVu3ZxRNZGmlFkqzLrGDKSBtDSN5QCwqTCpWGliPCLoaAEwaHmE25jbHUPV1KoyVDQmVG68WN5oZ9O2O7xYcYp3abmTY29iATaBUSmJ0T2c0QJAcgHY0j9OGncuO0K9wSs6p867tLwqk1vpKDEa9ZE/IQCm2qigJllGtKEra+7UFysGYNZB43bxMq24M5fiADYwuiRSRfqEAFBHywLu/5dY5R+bEPRpjlbcIaovshw6WQdy6OJlWg6zmLJgwKh0cxYwDqyP0EltUCMg7f9vZ5ssONY0U8jPC1HVhSXmnHxxXuGJhamhYID6hgepY6CLf70U4OdcpmzjEzAKrJ5X2GpdrSGsb4SHCAFQ9P/ZZnsmkGAF48bSahpfUkV5MVZj/X4fFfnzWTBKaZjB/0nvMTrS08Er24mtbUOleUqZNzxCWolSqviUaL7thN/CWJULgIn1uxCX2QUaWSJeKIt8a3/yp/hk6dtxK/Dl0eyaiTSxrDYm+KPjgIDAL8IgbCIEfX6vKNG0UsknL3hkA6sLw2oRoTHAwd6Z/AEssMocdP/RrKQzmZVaeyqV5ivsyccoBMLM5rCJCAE2s3hFiaSVaj55wSNgFZi1JGD9SJ+pYhsSADE8y9IzO/x1sJqG0tjqA5rzGVWNCQEYwEAciMsJrf94h5NgjsI4TSsd+OSowHEGAlZ3MGalNDxkYj4kAEEhFYAPh8ulcaXaEX1+J1/+6HwjDsTlhN47doj2d7c4CRpXGKSBtJxQOvDJSb6dhNmjwqwhTke8Iy0ASQVg71D6CgBmMTDgdYsQF+J0Qmve+Z2TYHGFcZpGOvEprgI79KzErAhhPiQAhkIAVNLkMJNuBMNUZ6zZHqdxIy7E6YSwhxfbGJNFf+W4ne4TTic+JYs/kfHuVWF2BPMZ3wIkS/c+kpnx3GMPb8dAdzxBbPk9NthDt2/7lS2/sTylG59i5dHNd8oWgIyZSM9nbBs3XqYBilW1QwFnX0Q3C2QVFxa53KZE4sQG9tWv/4KGDfcW2BDXqq0/p0M9bY6LmkiZrBJNRpxWacX7HpiVrgjzpi9g38dm3aT9/wOBMgqqTu2ON3cu+ndz62E4W4nG+cbR3fSVjQ+70hLgy/+VV39CbyQ4zZpomcK8ibwmI87I+BO5B2aBXSkx9n086ycVAHVTIk0iZx0hBNdsuI+2t+1zzAP0+RFHouB3nIEMD6jELmOflz+NqbJy7h1WSJEssAdu0O2BeoObhDjdIHSHvvDyA4StkqvmXBaXYayHdv6OXjj0FzeyYcaRznxyrZBREamxa0zN4/5/bVS4UY/Nw/GvrI6KIMkPfcMDpm6Pm8lAWc5N+iPPDuGHnVzYOBMyjVjFphErzGU3L0wjZgKf3OQ54lJil7HPAiDquBWwTLvHSExHxjJilxww4+L2DAc0RZNBWMAyF7HeS0bs8jgziU/ykth3VWKXsc9jAHkL0MMWoNOZoNIMrU63CHEhzmyjXOSTEruMfe48owWwpm6V+WnroJ64QJ8fKs1uEeLKxj0CucgnNXbRAhgk3crUQ+ndAgD40OfvGepPWAYQB+LKVso1Pqmxa5RjGtRSDRpA6E3zMQDyiM0su48docHgMB4dEcIijkQ3xjhK3KNAucYnNXZFIbcAhlQA1M2IR7WnSAYAfrftoKOWAF9+hE1EgBTZSxvnXOKTEruM/TwSopCFwLKCetJ8DBCZcbNy2w9Jt0RG+ndzS2RkvOl+nyt8UmKXsY91AGkLoJxKSrPaRjP/cU87Nfd1mlqdmCKFzkp42T60KX7AVFPI5U3xucAnJXbNFiDNAOxWdjDr0drXZf7cijPeeBrYVtAZfC7Y6SNmEysLSqgiv5gq2eZ/OW++wRXUyfo+XdwNw/X4UB9fe83NNe+b6waHWZjdm+WKLkM68Ck6T14+ows0yK2A5ekCpWKYjskbCS/zm9ZpfYqtNy9rPJPm1kyi0ysnUo3NAzJwWB5+VtTOi33vdx6iHe0f0UtH3iHoCGlScwDYlRJjXxiv1GDez3JL1dIjl9Lh4fRVh5YWMMmOfuGjc+pOo0+zrg/sdeKL7wWhRcC+4P/H6hVvtn7IBmGDXiSbcWlMyOuljY3Py/J9LNwCWHoq8ymkyDJk9jrUsQ7PyukX0v+cuohwhJHXBEH7wmlLzR/Upf9r31Zau+dlanXBXpDXZUlmekrscgsAbdABWSbYfJTMOafcJrPhqxtnrqArJp+XkAUKN5kGAbxp1kW0csaF9MyBbfToB+vpAB+zqolIjV1jgAVAsOaX9TRoqW8o53nZWFJNd8z9PF08cT6vGzozm5JsJsKsy9VTF5ut0ouHttO9O35LR3qzd1XbDj9tYPc4WgCJEUWiMpE5AoDD5EryC9lESiGV8NQnQIFN7nncV8/zhyw9DAcCvF0xaCrQYT68l9Wpe4YGqJd/sbYxopvzrU9dSWV56a0WHgYEBPSSiX9DS8afQff89WmzexR2C1+Twadw3Ol0tYHdNqhD80ZTWQuQ3l2gorwCnm0p51+pCX5VBeT780ZpN9XSSZMvEIL2gR7+dVFNQRndffa1tLheumFOlVzK3CGwd591LQvDWfTdtx6n9sHupPCp3+W9E24yrFQ1fmXs8yCYWwBr/FOJairJzRzbjMvHX/T6Yp46LK7gRS7pOp7NGEPe0Hrgd9mks+jvZ11MxX734o4rIy56hgA/95lv0093veiayZYwnyaWsQlCFoCjfcephRceg2k2G6UUAMY+K8OhBbCm8f7EtSytY4/PBdOOp5TW0Ly6KTSpvM5V8Idzcn7DbFo9+3NZAf5wmSDIKBPK5jbhA4S6QJ2gblBH6UINPhV2RSsGwftkXaBp+cnZHRUvk7CoNKWi3lUjWNF5WMRfyxtnrIh+nRXPGBugbENsYmVryy7XywRVE1jahmW9/cdbuBvpvm2keDOtxq7Yh/0AUm5My0ttQTBgm1Y5nqaz4Vo3LcBFM3NW5QS6acZF0a+z7hllRFmTRagj1BXqDHWXSlJi1xC7+LQIIRWASSwAPiEZJCSxhAU8YJ3DZsvrik4OVJORHJrxr838dFo138koJ+JEFwVldXPsFCuvqDPUHeowFQTMArtSKmQBEOcd/YQ9dVp5LBBBOtXfY+WctPeYrTm9eiIV8mkuyaYrJy2gWp5JyhVCWVHmZBPqDnWIuvSagFlgV0KdYmFL88iIRXwg8UjKpkQW2IEbms4zqie4bu4kVlagobls/JmxnLL6HcqMsiebcBwV6tLr7pASsyLU8wkJgFCMAzweCJ9aUcvg92YKckHdDN4r4P0XKtnAU8WPMqPsXhDqEnXqJakHwCHMhwRAORD2biYIC1sy1WC3mTivRmoYz+3k0io+L8uOOkXdekXT8hSYHfnohwTAZ0gHwqd52AI08OKWlzTeIxVmL8tkNy2vy+5l3Soxa4QwHxIAf/77MqbNLeigfPmAQhY8LrcKVmnwklKhzuxl+WRpeV32Co9Ux4FVYFZKefnmRz8kAI3Fu3mdxNIgZrEI0PyCdml8bjkW+pI/6xOZ13RauYzMlxf3Xpfdixk98A1YBWatSQzQuHJz4scUADF1P9aMX7MOQLSoqEXm7JqbT6SnurFrBczhiLyqWyVWBb0mZuwZQFWEWgDcCdqAixUtLtSbLKx4o9+nFwfUWDVOYD1CAPwnXsYqDpqVQmmzEiuUfqc54C0HgFFld913EusnBaC6/nXWDLU0i4xVtXMKpYqj3pZUp6Y5EIMD5xa2yleAgfHq+m3hoCcEQMzZiUHwprBDrOuiQm/GAbHS1u80B+xwYKG6q75pBOtmdCcEwHwy6CVZIouL9DhAxh/tlnoOKDEaNdYdLQBRjtHFmZvfQXVptEEmOn/6Obc5AGwCo1LyjZ7sGS0AS5e/xYEtNUP9rGJ6eclBafzaUXMgVRwANoFRCXXS4uV/jnQfM+luvFr7NJtK/Hykp8j7dwer6HPN2blrKrKc+j7zOPC7hvU0u0BiR1WI34rz266MLNnoFgAuPt/jkR6i75HAzPzj0a/1s+ZASjkATErBj9wJ4zfRmRwrABNKn2VPlt0gRHBV6YHoePSz5kBKOWADk500seK56EyOEQBTLULQE9EeI5+v4L7WmL5TpAd9rzngIQeARWBSSozpEZWfUd7GCIDp6vOvG+Ur6qHB30dNRc1Rb/Wj5kBqOAAsApNS8vnXxnKPLQBNLZv4E8/mUqzpytKPrB21i+aAhxxQYhFYbmrZHCtLMQVACMwl+aStwCXFh6nKZ6lBHSst/U5zwHUOAIPAopx860KYHusrpgCY3vKEVACgb31j+Z6xMeo3mgMecgAYlOv+c2YkWLYUALH4KNC9VVaWlWV7Msp6tKws2i3zOADrzyvLdqsyvnUEyzH9WQrAiO+fxww18rKCzw5YWf6hzIt20xxIGgeAvQqVBWgfPSLLgFwA6hq5GyQOySL4MjdBRXqfgIxF2i0JHADmgD05MXZrGn8t8yMVAFNt1Ef3yiKo9Q3QtaV7ZV60m+aA6xwA5oA9KQm6J1L1OZZfqQCYAfzFP+ONMtKNAF+r2C3fhBArZf1Oc8AhB7A5C5iTEjCbVyzt/iC8UgDE4kN9vCZwvywxLEL8bYlWj5DxSLu5xwFgTbnwxZg1satIVikAZnghHmYhkCpar6p6V88IKZitnRPnAGZ+gDUpAavArA2yJQBiSSvbmfP9uyy+ej6N47ZKRcZkEWg3zQEbHADGgDUpGb6HQpiV+jIdbQmA6TOvaA3PCEkNrq8s+5BOz5cqkqpzpH1oDlhwANgCxuTEGM0vekju56SrbQHg/lQ7d4OkzQp24/ygZtSGm5Mp6TvNgQQ5AGwpdnzBvtXDJlZtpmVbAMz4Sir/hVOQqoGezfaDri7dbzN57U1zwB4HgClgS07iEzIxKvcV6RqXAIhz9nL/RnwzMoJY9/9UuYMqtaJcLNbodw44ACwBU2oSt4cwqvYZ9hGXACCQuKD1MR5hvxyOINa1xj9I36p8J5aTfqc5EDcHgCVgSkqMSRObUk9jHeMWgFAUxi3c1xoaG93JN39Xto+0Ia2T/NB3zjgADAFLUjKxyJh0QI4EQJzfzvOd4gFZetim9mDtG9qOkIxJ2k3KAdj5AYbU22/FAyFMSqOL6ehIAMyYKvPu5pwdjBnryMtxXIAHbBVAFot2y0UOAPTADjAkJWAQWHRIjgVAzGvu4QOEV6vSbeIm7NaK91TetLvmwCgOADPAjpIYgyYWlR5je3AsAIhOLGl7iluB38eO+uTbr3NhFqiNlp4MoO9ymgPACjCjJMaeiUGlR2sPCQmAGa0//0aeFTpinQROJzdoTd02tfqqLBLtlhMcgIozsKJe8GLMAXsJUsICIJqaW7grdB23BEFZXqC/cb8eD8hYlPNu6PcDI0pdH2CNMWdiL0GuJSwASJ8Vj17iy12qvCxl+y13Vr2t8qbdc5QDwAYwYoPuGsGcDa9yL64IgJnE0q//kLtC6+XJEX2Jt7H9Q4X0WGJVFNo9CzkATAAbSgLGgDWXSD3FGkdCxmv1DTQQ4E+80aAK9r/bz6IneqaqvGn3HODANaX76F9tKVGyHlqhf55Y2GKrmbDDOvdaAE7NzJgg5XgAGfvn6r/QimLp2NlO/rWfDOcAMAAsKAn9fsaWm+BHmq4KACJk++vcDfIpmyiM8n9c+7o+eA9My1HCoYvAgHLGx+SP74chbLnLLNcFwMze0lt5QCyeUmUVR1o+UreZZhXo8wZUvMo2d9Q56t7e0buMJRNT7nPB1TFAZPaM3dML6UjHC3zazIWR72PdtwSL6ItHl9KuwYpYzvpdlnEA4P/VuI3q6U6UG5rHjdWXhE92d5sVSRMAZNR4raaCBugVvp2vyvjxYD7d1NpEbw7Uqrxq9wzmALo9+PLDqqAN2k6FdIFY2J60LkJSBQAFNLaNG0/9gc1k0DRVgQcMP93atoDW9zWqvGr3DOQABrzo89vq9gjaS0X+JnHe0U+SWdTkjAEicmwWIM9/MTdlSs0mMOantVsJ02KasosDqFPUrT3ww6iV/+Jkgx8cTnoLEK5G49W6s7g9eJnHBOXhd7LrvZ1n0n8cnyXzot0yhANY5LrD7g5BIboYlheK81s9sa7gmQCgroxXapfz5Q98V2in7n7ZNZ1+cGwe9540ZSIHAC6oN9ha4TULKGDs87PigrYNXpXXUwFAoUwhEPRbuy3Bxv4G+kbbudQWtCUzXvFNp6PgALQ6odhmU7cHsz1d/KX7vJfgRxE8FwAkOtIdep6FoB7PKsI06arW8+j1gXEqr9o9DTgAfX6oNCu1OsN5NceH4lKvuj3hZHFNiQAgYWPLuOk0HHjRzuwQ/AcMQWuOn0E/4Z/uEoEj6UcA0y28kWUV/+yt7nIAzPZgwBs6kcjzQqVMAFBSc4q0L/A83yrXCcKc2TxQT7dxl6g1UBR+pa9pwAFsYMceXlvbGE/mdzsV+y/1YrbnZJKj71IqAMiKuVg2KJ6xs2IczvpRBv9qFoKtLAyaUs8BmC6B9QblBvbIrGKFt8C4IpmLXJHJWd2nXACQMVNt4uOO3/DdVVYZjX6PbtB/dk+le3i6tDNYEO2snz3gACy2wWgV7PbEByTW7Tml+gvJUm+Ip+jx5TuemOP0axjf99HGH3+PKPgd7uTbXqBrDxTQv3XOpSd7psSZovaeCAdgqxPmCpUW2yITMbfNsqYwK7YJ8X3pFtrIYMm8TxsBCBfSeLV2BQvAY9waKDfVhMPg+tZgDd3Jm2zeH6qMfK3vXeYATJTDSrPaUG10wryZBfr8prp8tFvqntNOAMAKc2fZYOAxHhesiIc1mCn6Vc90evDYGdRt5McTVPtVcAAns6yueo++WLrH/gxPOE5sYyzwu76ZJRx9Ite0FAAUKNQleug7fPu9eLpECIt1gzXHZtN/9U6mIcN2bwpBNUVxAAfS4UwuHEtke14/HEfIUshd2MObLl2ecNbC17QVgHAGjU11yyhooDWIW0X0k0Ax/ez4DHq8Zxr1s6apJvscwDm8OIoUpzEqD6SLFS1sRcF0SchiSCwfafEu7QUAXDI2N9RTYOhRbgkuc8I1qFE82jWD1nVN010jBQPR1cEJ7DiEWnkOr1VcsBbIRqvcsNtjlYRb7zNCAMKFNTbVXsWtwYMsCKeG38Vzxaabtd3TWRim0zE9dTqKdVU8pXkjg35l2R67m1VGhTcfYKgWtjphMjNDKKMEADw13m4opc7h7/LdbSwIjka6fdwdeqF3Aj3dO4k2s7JdrqpWoPKb2BDVlSUf0SUlh6mYuz2OyLTPz+by2UpzIoZqHaWdYKCME4BweY1Xa2azIslP4llBDoeNvDbzOOGZ3lPpqZ7J9MFQbuxJnpl/nK4qPUBXlBx01r+PZCBWdMm4xal9/sioUnGfsQIQZpbxSt11XAH38W98+J3T687BKrNVeJYFItt0jaCrczkDHl/7OQXHnLIoIhwOSxTfdHIsUUQkKb/NeAEAB403p1VSb+e3uS9zMz+VJcpVrCfsGKqmLf3jTH0jbNTHfuVMImw9xAZ06OksLjpKc/M74p+/j1lgPocXx+XyaYzxHkgXM7oUv8wKAQjz0NgysYaG+1exOsU/sjBUh98neh3ktYTtvNK8hfcjbO2vN+/TbX0hn+fr5/MxoouKGPCsj497zOG7RoI62ODZvxMfmB7PObyupZ+kiLJKAMI84rWDch4b3MxC8A2+uq4yikH0jsFq2jNcTnuH+DdyPRQo4Umq5LLUxxb1Jvp7aVp+F03L4x9fp/N1bkGH80FsmHGxrtisIuh+3rH1MM/p837d7KLk1laKecUtQjEF+r7KViXv4K7RxGRnBy3FgUDZiFCUUfNwEfUYedTD06/dQb7ypFUvP5v3eOZ7UKkYplLfMJXxrwT3fAAn7kvZdg7cGvL6GezdJtgn+7vd/bJbMkUcYpXEe8lf/DP+4vdZestwh6wWgHDdGDvnFFD7ketZEG7id4vC7/U1Jge2MvAfoZrGX4s5OxWH88YMn1Evc0IAImsktBXTWMnjhOu5izQ10i1n7wXt4/79OsoT61K1NTFVvM85AQgz2jC4s765fgkFAzewIFzD73NNj7qT+/ZPkM+/jppaNgnBg4scpJwVgMi6NvZNKaLDPZdTMHgtv1/OA+dsXRFj0IuXyOd7nCaUPium7lccwhvJpey81wIQVa+GcbWfNm44m1sFGPFazl/JJhaIkihvmfEoRC9ndBOX5SUuxwZauvwtIZ50qO+QGUWON5daABQcMwfQHS0LyAhwy2AKxUK+pucmZEEYtL5mgl34N1B1/eu5MJBVVKHUWQuAlD1jHc3u0sHemSSGZ1FQzGKwzWKBGLl61nXqZDWEDzjtXZz2LvIZu1j9+H1qLN6tuzVj60z2RguAjDtxuoVMwRthYZjCaw91ZIg6EgYfesBXgmFgUchdqgLui4euSEOIQX43YF6JrwQDsUYrh23jsK38vo3f7TPBXiR2pdKOTpwsSXvv/x8AJDjD09C0zQAAAABJRU5ErkJggg=="})))}function H(){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 R=n(50030),X="share.shareIntegrations";function Z(){var e="".concat(R.Z.avatar," border border-light rounded-circle overflow-hidden");return r.createElement(V.u,{title:i.T.getPhrase(X,"shareThroughIntegrations"),spanHack:!0},r.createElement("ul",{className:"list-unstyled d-flex mb-0"},r.createElement("li",{className:e,style:{zIndex:1}},r.createElement(M,null)),r.createElement("li",{className:"".concat(e," ").concat(R.Z.msTeamsContainer),style:{zIndex:0}},r.createElement(H,null))))}var W=n(66903);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 q="share.shareAsLink";function Y(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,c=[],s=!0,l=!1;try{if(i=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;s=!1}else for(;!(s=(r=i.call(n)).done)&&(c.push(r.value),c.length!==t);s=!0);}catch(e){l=!0,a=e}finally{try{if(!s&&null!=n.return&&(o=n.return(),Object(o)!==o))return}finally{if(l)throw a}}return c}}(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.")}()),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(D.s,{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(W.k,{value:e.shareLink.url,onCopy:function(){i||(o(!0),u.k.logUserAction({id:e.entity.id,name:e.entity.name},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(Z,null):r.createElement(U.x,{svgName:P.vn.Link,className:"svg-container"})),r.createElement("span",{className:"fw-semibold"},r.createElement(f.x,{namespace:q,phrase:"createLink"})))),!e.shareLink&&r.createElement(S.L,{className:"info-link",onClick:e.onClickCreateLink},r.createElement(f.x,{phrase:"createLink"}))))}var J=n(74231),Q=n(92802),K=n(5173),_=n(38365),$=n(82644),ee=i.T.encloseNamespace("share.shareMessage"),te=K.Ry().shape({message:K.Z_().max(280,(function(){return ee("maxMessageLen")}))});function ne(){var e=(0,$.b)();return r.createElement(Q.l0,null,r.createElement(_.W,{component:"textarea",name:"message",id:"message",placeholder:ee("placeholder"),value:e.values.message,label:ee("label"),showOptionalLabel:!0}),r.createElement(C.u,null,r.createElement(C.u.Submit,{variant:"dark",text:ee("share")})))}function re(e){return r.createElement($.n,{initialValues:{message:""},validationSchema:te,onSubmit:function(t,n){var r=null;t.message&&(r=t.message),e.onClickShare(r,n)},allowInitialSubmit:!0},r.createElement(ne,null))}var ae=n(32045),ie=n(16714),oe=n(22902),ce=n(37802);function se(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,c=[],s=!0,l=!1;try{if(i=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;s=!1}else for(;!(s=(r=i.call(n)).done)&&(c.push(r.value),c.length!==t);s=!0);}catch(e){l=!0,a=e}finally{try{if(!s&&null!=n.return&&(o=n.return(),Object(o)!==o))return}finally{if(l)throw a}}return c}}(e,t)||ue(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 le(e){return function(e){if(Array.isArray(e))return me(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||ue(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 ue(e,t){if(e){if("string"==typeof e)return me(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)?me(e,t):void 0}}function me(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 de="shared.share",pe=i.T.encloseNamespace(de);function fe(e,t,n,r){if(!e)return[];var a=[].concat(le(t),le(n)).map((function(e){return e.id}));return e.filter((function(e){return!a.includes(e.id)&&e.id!==r}))}function he(e){var t,n,a=se(r.useState([]),2),i=a[0],o=a[1],c=se(r.useState(!1),2),s=c[0],l=c[1],u=(0,oe.T)().hasPermissions,m=(0,ce.r)(null).hasClassrooms,d=u(ie.C.ManageIntegrations),p=u(ie.C.ShareToUsers)||u(ie.C.ShareToClassrooms)||u(ie.C.ShareToClassroomGroups),h=fe(e.recentlySharedTo,i,e.directShareRecipients,e.currentUser.id);return r.useEffect((function(){l(!!e.shareLinkIsLoading)}),[e.shareLinkIsLoading]),r.createElement(r.Fragment,null,p&&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(F.R,{key:null!==(t=null==h?void 0:h.map((function(e){return e.id})).join(":"))&&void 0!==t?t:"share:search",getRemoteUrl:function(){return I._.safeUrlConcat(e.gatewayApiUrl,"v4/search")},getRemotePostBody:function(t){var n=[];return u(ie.C.ShareToUsers)&&n.push({index:"user",filters:{userProfile:{status:["".concat(ae.w.Active.toLowerCase())],customerId:e.currentUser.customerId}}}),u(ie.C.ShareToClassrooms)&&n.push({index:"classroom"}),u(ie.C.ShareToClassroomGroups)&&n.push({index:"classroom_group"}),{query:t,indices:n,searchType:"user",limit:F.d}},requestHeaders:e.searchRequestHeaders,formatRemoteSuggestions:function(t){return fe(null==t?void 0:t.results,i,e.directShareRecipients,e.currentUser.id)},recentSearches:h,selections:i,onSuggestionSelected:function(e){return o([].concat(le(i),[e]))},removeSelection:function(e){return o(i.filter((function(t){return t.id!==e.id})))},placeholder:pe(m?"searchPlaceholder":"searchPlaceholderNoClassrooms"),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(x.m.uniq(n,"id"))}))},debounceTime:300,emptyStateImageUrl:e.emptyStateImageUrl,errorStateImageUrl:e.errorStateImageUrl,hasStudentExperience:u(ie.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(N.$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(T.j,{entity:t,imageCdnUrl:e.imageCdnUrl,removeRecipient:e.onClickRemoveRecipient,showDisplayName:u(ie.C.StudentExperience)}))}))))):r.createElement(r.Fragment,null),!!i.length&&r.createElement("div",{className:"pb-3"},r.createElement(re,{onClickShare:function(t,n){e.onClickShare(i.map((function(e){return{id:e.id,typeId:e.typeId}})),t,(function(){o([]),n()}))}}))),!i.length&&!s&&r.createElement("div",{className:"bg-white p-3 ".concat(p?"rounded-3":"rounded-bottom-3")},r.createElement("div",null,e.shareLink&&r.createElement("div",{className:"fw-semibold mb-2"},r.createElement(f.x,{namespace:de,phrase:"shareLink"})),r.createElement(Y,{entity:e.entity,entityType:e.entityType,shareLink:e.shareLink,onClickShowSettings:e.onClickShowSettings,onClickCreateLink:function(){l(!0),e.onClickCreateLink()},shareLinkIsLoading:e.shareLinkIsLoading,canAddPolicies:e.canAddPolicies,privacy:e.privacy,entityTypeId:e.entity.typeId,onClickSavePrivacy:e.onClickSavePrivacy,enableIntegrations:e.enableIntegrationBanner,hasStudentExp:u(ie.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(J.T,{integrations:e.integrations,url:e.shareLink.url,closePopup:e.closePopup,appLink:d?e.integrationSettingAppLink:e.messagePopupAppLink})),e.shareLink&&e.canEmbed&&r.createElement("div",{className:"mt-1"},r.createElement(z,{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:de,phrase:"advancedSettings"})))),s&&r.createElement("div",{className:"bg-white rounded-3 p-3 text-center"},r.createElement(L.Z,{as:"div",animation:"border",role:"status"})))}var ye=n(17752),ge=n(9111),ve=n(39151),Ae=n(1666),be=n(31949),Ee=n(69883),Se=n(40841);function Ce(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 ke="shared.share",we=i.T.encloseNamespace(ke);function Le(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 Ne=function(e){return"video"===e||"interactive"===e||"clip"===e},Ie=function(e){return"video"===e||"interactive"===e||"clip"===e};function xe(e){var t,n,i,l,u,m=(0,a.I0)(),d=(0,Ee.Z)(),h=!e.gatewayApiUrl,y=(l=r.useState("main"),u=2,function(e){if(Array.isArray(e))return e}(l)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,a,i,o,c=[],s=!0,l=!1;try{if(i=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;s=!1}else for(;!(s=(r=i.call(n)).done)&&(c.push(r.value),c.length!==t);s=!0);}catch(e){l=!0,a=e}finally{try{if(!s&&null!=n.return&&(o=n.return(),Object(o)!==o))return}finally{if(l)throw a}}return c}}(l,u)||function(e,t){if(e){if("string"==typeof e)return Ce(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)?Ce(e,t):void 0}}(l,u)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),g=y[0],v=y[1],A=(0,oe.T)(),b=A.hasPermissions,E=A.hasLocalPermissions,S=o.a.useBasicFetch(be.N.currentUser()),C=p.I.getFetchFunctionByType(e.entityType)(e.entityId,null===(t=S.data)||void 0===t?void 0:t.id),k=o.a.useBasicFetch(ve.L.config()),L=o.a.useBasicFetch(h&&be.N.token()),N=o.a.useBasicFetch(c.o.getShareLinkByObjectId(e.entityId)),I=o.a.useBasicFetch(c.o.getSentDirectShareByObjectId(e.entityId)),x=o.a.useBasicFetch((null===(n=S.data)||void 0===n?void 0:n.customerId)&&p.I.getDirectShareRecipientsRequest(S.data.customerId,I.data)),O=S.data&&s.R.getRecentlySharedTo(S.data.id),U=!!(null==O?void 0:O.length),P=o.a.useBasicFetch(U&&c.o.getRecipientsById(O,S.data.customerId)),B=o.a.useBasicFetch(c.o.getPrivacy(e.entityId)),j=o.a.useBasicFetch((null===(i=S.data)||void 0===i?void 0:i.isAuthenticated)&&Ae.h.yearGroups(S.data.customerId)),z=(0,ce.r)(null),T=z.shareToGoogleClassroom,F=z.shareToMicrosoftTeams,D=z.shareOverrideRestrictions,V=z.isLoadingSettings;function M(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 H(e,t){o.a.getFetch(m)(c.o.getRecipientUsers(e,t))}function R(){N.data||p.I.createLink({dispatch:m,entity:C.data,entityType:e.entityType,alerts:d})}function X(t,n){p.I.updateLink(m,C.data,e.entityType,N.data,t,d,(function(){return v("main")}),n)}function Z(){p.I.deleteLink(m,C.data,e.entityType,N.data,d,(function(){return v("main")}))}function W(t,n,r){p.I.createOrUpdateDirectShare({dispatch:m,entity:C.data,entityType:e.entityType,currentUser:S.data,recipients:t,message:n,sentDirectShare:I.data,onSuccess:function(e){return M(S.data.customerId,e)},onError:function(){return d.error(we("directShareError",{name:C.data.name}))},onDone:r})}function G(t,n){p.I.removeDirectShareRecipient(m,t,e.entityType,I.data,(function(e){return M(S.data.customerId,e)}),(function(){d.error(we("removeDirectShareError")),n&&n()}))}function q(e,t){"private"!==e?o.a.fetch(m,c.o.updatePrivacy(N.data.id,e,t,(function(){return d.success(we("privaciesSuccess",{name:C.data.name}))}),(function(){return d.error(we("privaciesError",{name:C.data.name}))}))):Z()}var Y=!(!S.data||!k.data||h&&!L.data||!I.hasCompleted||!B.data||!C.data||V||!j.hasCompleted);return r.createElement(f.D.Provider,{value:ke},r.createElement(ge.G,{title:Le(e.entityType),closePopup:e.closePopup,showLoadingSpinner:!Y,contentClassName:Y&&g?"bg-transparent border-0":"",bodyClassName:"p-0"},function(){if(!Y)return r.createElement(r.Fragment,null);switch(g){case"main":return r.createElement(he,{shareLink:N.data,shareLinkIsLoading:N.isFetching,entity:C.data,entityType:e.entityType,directShareRecipients:x.data||[],recentlySharedTo:P.data||[],onClickCreateLink:R,onClickShowSettings:function(){return v("link-settings")},onClickShare:W,onClickRemoveRecipient:G,onClickGetEmbedCode:function(){return v("copy-embed")},analyticsOptions:p.I.getAnalyticsOptions(e.entityType),gatewayApiUrl:e.gatewayApiUrl||k.data.gatewayApiUrl,imageCdnUrl:k.data.imageCdnUrl,searchRequestHeaders:h?{authorization:"Bearer ".concat(L.data.value)}:null,currentUser:S.data,fetchRecipientUsers:H,privacy:B.data,onClickSavePrivacy:q,canAddPolicies:Ie(e.entityType),emptyStateImageUrl:e.emptyStateImageUrl,errorStateImageUrl:e.errorStateImageUrl,integrations:(t=T,n=F,Se._.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:Ne(e.entityType),yearGroups:j.data,shareOverrideRestrictions:D,hasLocalPermissions:E});case"link-settings":return r.createElement("div",{className:"bg-white p-3 rounded-bottom-3"},r.createElement(ye.G,{entity:C.data,entityType:e.entityType,config:k.data,shareLink:N.data,entityId:e.entityId,analyticsOptions:p.I.getAnalyticsOptions(e.entityType),onClickSaveLink:X,onClickDeleteLink:Z,onClickCancel:function(){return v("main")},privacy:B.data,hasStudentExp:b(ie.C.StudentExperience),shareOverrideRestrictions:D}));case"copy-embed":return r.createElement("div",{className:"bg-white p-3 rounded-bottom-3"},r.createElement(w,{entity:C.data,entityType:e.entityType,config:k.data,shareLink:N.data,entityId:e.entityId,analyticsOptions:p.I.getAnalyticsOptions(e.entityType),onClickCancel:function(){return v("main")}}))}var t,n}()))}},38365:(e,t,n)=>{n.d(t,{n:()=>E,W:()=>S});var r=n(32735),a=n(80247),i=n(80130),o=n(92802),c=n(91967),s=n(1048),l=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,c=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(E,Object.assign({className:"form-check-input"},c)),r.createElement(i.Z.Label,{className:"form-check-label cursor-pointer ".concat("normal"===a?"fw-normal":""," \n ").concat(n),htmlFor:c.id},t),e.checkboxAppLink&&e.checkboxAppLinkText&&r.createElement(r.Fragment,null,r.createElement("span",null," "),r.createElement(l.F,{appLink:e.checkboxAppLink,className:"info-link"},e.checkboxAppLinkText))))}var d=n(83914),p=n(83345),f=n(73814),h=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 g={revealPassword:"jCfI0",passwordInput:"RBJnf",passwordContainer:"d78lK",passwordContainerDisabled:"asbVo",infoTooltip:"wzyOG",spinner:"CycFx"};function v(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 A=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},b="shared.formField";function E(e){var t,n,i=e.children,l=e.showLoadingSpinner,u=A(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,c=[],s=!0,l=!1;try{if(i=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;s=!1}else for(;!(s=(r=i.call(n)).done)&&(c.push(r.value),c.length!==t);s=!0);}catch(e){l=!0,a=e}finally{try{if(!s&&null!=n.return&&(o=n.return(),Object(o)!==o))return}finally{if(l)throw a}}return c}}(t,n)||function(e,t){if(e){if("string"==typeof e)return v(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)?v(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=c.q.isFunction(i)?function(e){return i(e)}:r.Children.count(i)?i:null;if("password"!==u.type)return l?r.createElement("div",{className:"position-relative"},r.createElement(o.gN,Object.assign({},s.t.omit(u,["formSize"])),y),r.createElement("div",{className:g.spinner},r.createElement(a.Z,{animation:"border",size:"sm"}))):r.createElement(o.gN,Object.assign({},s.t.omit(u,["formSize"])),y);var b="position-relative ".concat(g.passwordContainer);return u.className&&(b+=" ".concat(u.className)),u.disabled&&(b+=" ".concat(g.passwordContainerDisabled)),r.createElement("div",{className:b},r.createElement(o.gN,Object.assign({},s.t.omit(u,["formSize","type","className"]),{type:p,className:"".concat(g.passwordInput," border-0 w-100 h-100 outline-none rounded")}),y),"password"===u.type&&r.createElement(d.x,{svgName:"password"===p?h.vn.VisibleOn:h.vn.VisibleOff,className:"svg-container cursor-pointer ".concat(g.revealPassword),onClick:function(){f("password"===p?"text":"password")}}))}function S(e){var t=e.label,n=e.className,a=e.showCharacterCounter,c=e.showRequiredStar,l=e.infoTooltip,u=e.infoTooltipPlacement,v=e.infoText,S=e.formSize,C=e.showOptionalLabel,k=A(e,["label","className","showCharacterCounter","showRequiredStar","infoTooltip","infoTooltipPlacement","infoText","formSize","showOptionalLabel"]),w=(0,o.u6)(),L=w.errors,N=w.touched,I=function(){};if("checkbox"===k.type){var x=s.t.omit(e,["formSize","infoTooltipPlacement"]);return e.disabled&&(x.onChange=I),r.createElement(m,Object.assign({},x))}var O=Object.assign(Object.assign({},k),{className:f.w.getCustomFormControlClassName(L,N,k.name,S,n,"string"==typeof e.as?e.as:null)});return e.disabled&&(O.onChange=I),r.createElement(i.Z.Group,{className:"form-group"},!!t&&r.createElement(i.Z.Label,{htmlFor:k.id,className:"d-flex align-items-center"},t,c&&r.createElement("span",{className:"text-danger"},"*"),l&&r.createElement(d.x,{className:"svg-container text-secondary ".concat(g.infoTooltip),svgName:h.vn.Info,title:l,tooltipPlacement:u,tooltipSpanHack:!0}),C&&r.createElement("span",{className:"text-secondary"}," ",r.createElement(p.x,{namespace:b,phrase:"optional"})),!!a&&!!k.maxLength&&r.createElement("div",{className:"ms-auto"},r.createElement(y,{fieldName:k.name,limit:k.maxLength}))),r.createElement(E,Object.assign({},O,{"aria-errormessage":"".concat(k.name,"Error")})),!!v&&r.createElement(i.Z.Text,{className:"text-secondary"},v),r.createElement(o.Bc,{name:k.name},(function(e){return r.createElement(i.Z.Control.Feedback,{id:"".concat(k.name,"Error"),type:"invalid",role:"status"},e)})))}E.defaultProps={autoComplete:"off"},S.defaultProps={autoComplete:"off",infoTooltipPlacement:"top"}},73814:(e,t,n)=>{n.d(t,{w:()=>a});var r=n(92802),a={getCustomFormControlClassName:function(e,t,n,a,i,o){var c="";return c=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)&&(c+=" is-invalid"),i&&(c+=" ".concat(i)),c}}}}]);
|
|
2
|
-
//# sourceMappingURL=8988-f66e969430-lite.chunk.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"scripts/8988-f66e969430-lite.chunk.js","mappings":"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","sources":["file:///app/packages/libs/shared/src/apps/share/components/copy-embed-html/copy-embed-html.scss","file:///app/packages/libs/shared/src/apps/share/components/copy-embed-html/CopyEmbedHtml.tsx","file:///app/packages/libs/shared/src/apps/share/views/share/components/copy-embed/CopyEmbed.tsx","file:///app/packages/libs/shared/src/apps/share/components/get-embed-code/get-embed-code.scss","file:///app/packages/libs/shared/src/apps/share/components/get-embed-code/GetEmbedCode.tsx","file:///app/packages/libs/shared/src/apps/share/views/share/components/share-integrations/avatars/GoogleClassroomAvatar.tsx","file:///app/packages/libs/shared/src/apps/share/views/share/components/share-integrations/avatars/MicrosoftTeamsAvatar.tsx","file:///app/packages/libs/shared/src/apps/share/views/share/components/share-integrations/ShareIntegrationsStack.tsx","file:///app/packages/libs/shared/src/apps/share/views/share/components/share-as-link/ShareAsLink.tsx","file:///app/packages/libs/shared/src/apps/share/views/share/components/share-message/ShareMessage.tsx","file:///app/packages/libs/shared/src/apps/share/views/share/components/main-share/MainShare.tsx","file:///app/packages/libs/shared/src/apps/share/views/share/ShareView.tsx","file:///app/packages/libs/shared/src/components/forms/form-checkbox/FormCheckbox.tsx","file:///app/packages/libs/shared/src/components/forms/form-field/CharacterCounter.tsx","file:///app/packages/libs/shared/src/components/forms/form-field/form-field.scss","file:///app/packages/libs/shared/src/components/forms/form-field/FormField.tsx","file:///app/packages/libs/shared/src/utils/FormHelper.ts"],"sourcesContent":["// 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 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 id: props.entity.id,\n name: props.entity.name\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 { HasLocalPermissionsFunc, usePermissions } from 'libs/shared/hooks/usePermissions';\nimport { useSettings } from 'libs/shared/hooks/useSettings';\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 hasLocalPermissions: HasLocalPermissionsFunc;\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 { hasClassrooms } = useSettings(null);\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={hasClassrooms\n ? getPhrase('searchPlaceholder')\n : getPhrase('searchPlaceholderNoClassrooms')}\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 { 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, hasLocalPermissions } = 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 hasLocalPermissions={hasLocalPermissions}\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} aria-errormessage={`${fieldProps.name}Error`} />\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 id={`${fieldProps.name}Error`} type='invalid' role='status'>{errorMessage}</Form.Control.Feedback>}\n </ErrorMessage>\n </Form.Group>\n );\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","getPhrase","LanguageService","CopyEmbedHtml","props","videoSizes","EmbedHelper","copyBtnPhrase","setCopyBtnPhrase","autoplay","setAutoplay","find","s","width","videoSize","setVideoSize","logged","setLogged","url","embedUrl","host","config","primaryUrl","shareId","embedString","size","value","Text","phrase","className","spellCheck","rows","readOnly","CopyToClipboard","onCopy","setTimeout","AnalyticsHelper","entity","embedDetails","ShareViewHelper","entityType","actionType","descriptor","eventVersion","text","type","EmbedSize","CopyEmbed","shareLink","entityId","id","analyticsOptions","PopupButtons","DivButton","onClick","onClickCancel","GetEmbedCode","onClickGetEmbedCode","SvgContainer","svgName","S","GoogleClassroomAvatar","height","viewBox","fill","cx","cy","r","patternContentUnits","xlinkHref","transform","MicrosoftTeamsAvatar","d","ShareIntegrationsStack","Tooltip","title","spanHack","style","zIndex","ShareAsLink","ShareLinkInfo","linkExpireDate","isPasswordProtected","privacy","entityTypeId","objectTypeId","status","onClickSavePrivacy","hasStudentExp","yearGroups","shareOverrideRestrictions","CopyInput","name","enableIntegrations","onClickCreateLink","MessageValidationSchema","shape","message","max","ShareMessageForm","formikProps","FormField","component","placeholder","values","label","showOptionalLabel","variant","ShareMessage","FormWrapper","initialValues","validationSchema","onSubmit","data","onDone","onClickShare","allowInitialSubmit","filterSearchResults","recipientsToFilter","currentSelections","existingShareRecipients","currentUserId","selectedIds","map","filter","includes","MainShare","selections","setSelections","showShareLinkSpinner","setShowShareLinkSpinner","hasPermissions","usePermissions","hasClassrooms","useSettings","hasManageIntegrationsPermission","PermissionName","canDirectShare","recentSearches","recentlySharedTo","directShareRecipients","currentUser","shareLinkIsLoading","TokenizedTypeahead","key","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","length","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","getTitle","ShareView","dispatch","alerts","shouldFetchUserToken","screen","setScreen","hasLocalPermissions","UserRequests","ConfigRequests","userToken","ShareRequests","sentDirectShare","recipients","recentlySharedToIds","RecentShareHelper","R","hasRecentlySharedRecipients","isAuthenticated","CustomerRequests","shareToGoogleClassroom","shareToMicrosoftTeams","isLoadingSettings","fetchRecipients","directShare","callback","onClickSaveLink","onError","onClickDeleteLink","onSuccess","error","recipientId","overrideRestrictions","success","dataLoaded","hasCompleted","Popup","showLoadingSpinner","contentClassName","bodyClassName","isFetching","authorization","googleClassroomSetting","msftTeamsSetting","IntegrationHelper","i","enabled","ShareSettings","FormCheckbox","checkboxLabelClassName","checkboxLabelFontWeight","fieldProps","Form","FieldWrapper","htmlFor","checkboxAppLink","checkboxAppLinkText","AppLink","CharacterCounter","field","fieldName","children","setType","resolvedChildren","FunctionHelper","f","containerClassName","disabled","showCharacterCounter","showRequiredStar","infoTooltip","infoTooltipPlacement","infoText","formSize","errors","touched","disabledOnChange","_props","onChange","fieldWrapperProps","FormHelper","tooltipPlacement","tooltipSpanHack","maxLength","errorMessage","defaultProps","autoComplete","getCustomFormControlClassName","attribute","additionalClassName","getTypeSize"],"sourceRoot":""}
|