PageSourceSearch

https://smh.re/CompanySettingsContainer-ca159b.bundle.js

js smh.re collected 2026-10-01 14:07:53 UTC 343,883 bytes, 187 lines download raw bytes

1"use strict";(self.webpackChunksmarpshare_frontend=self.webpackChunksmarpshare_frontend||[]).push([[5468,6113],{34:(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{__webpack_require__.d(__webpack_exports__,{l:()=>DragNDropArea});var react__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(96540);const handleDragOver=event=>{event.preventDefault(),event.stopPropagation()},DragNDropArea=({children,onDrop})=>react__WEBPACK_IMPORTED_MODULE_0__.createElement("div",{onDragOver:handleDragOver,onDrop:event=>((event,handleSelectFiles)=>{if(handleDragOver(event),!event.dataTransfer.files||0===event.dataTransfer.files.length)return;const fileInput=document.createElement("input");fileInput.type="file",fileInput.style.display="none",document.body.appendChild(fileInput);const dataTransfer=new DataTransfer;Array.from(event.dataTransfer.files).forEach((file=>dataTransfer.items.add(file))),fileInput.files=dataTransfer.files;const changeEvent=new Event("change",{bubbles:!0});fileInput.dispatchEvent(changeEvent),handleSelectFiles({target:fileInput}),document.body.removeChild(fileInput)})(event,onDrop)},children)},5741:(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{__webpack_require__.d(__webpack_exports__,{M:()=>ImageInput});var _emotion_styled__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(59295),_haiilo_catalyst_react__WEBPACK_IMPORTED_MODULE_3__=__webpack_require__(11432),react__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__(96540),src_app_react_common_hooks_use_get_text__WEBPACK_IMPORTED_MODULE_2__=__webpack_require__(87914);const TextWrapper=_emotion_styled__WEBPACK_IMPORTED_MODULE_0__.A.div`
2	display: flex;
3	align-items: center;
4	justify-content: center;
5`,BrowseButton=(0,_emotion_styled__WEBPACK_IMPORTED_MODULE_0__.A)(_haiilo_catalyst_react__WEBPACK_IMPORTED_MODULE_3__.B$)`
6	::part(button) {
7		text-decoration: underline;
8		color: ${props=>props.theme.color.PrimaryDefault};
9		padding-left: 5px;
10		padding-right: 5px;
11
12		&:hover {
13			background-color: transparent;
14		}
15	}
16`,ImageInput=({text,onChange,inputRef,multiple=!1,hasCustomText=!1,...props})=>{const{gettext}=(0,src_app_react_common_hooks_use_get_text__WEBPACK_IMPORTED_MODULE_2__.z)(),promptText=gettext(multiple?"Drag and drop your images here, or":"Drag and drop your image here, or");return react__WEBPACK_IMPORTED_MODULE_1__.createElement("div",{className:"image-placeholder-caption","data-testid":"image-placeholder-caption"},text?react__WEBPACK_IMPORTED_MODULE_1__.createElement("span",null,text):!hasCustomText&&react__WEBPACK_IMPORTED_MODULE_1__.createElement(TextWrapper,null,react__WEBPACK_IMPORTED_MODULE_1__.createElement("span",null,promptText)," ",react__WEBPACK_IMPORTED_MODULE_1__.createElement(BrowseButton,{variant:"text",color:"primary"},gettext("browse"))," ",react__WEBPACK_IMPORTED_MODULE_1__.createElement("span",null,gettext("your computer."))),react__WEBPACK_IMPORTED_MODULE_1__.createElement("input",{type:"file",style:{display:"none"},onChange,ref:inputRef,...props,multiple}))}},9613:(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{__webpack_require__.d(__webpack_exports__,{_V:()=>getUtmTagsError,uy:()=>fetchCompanyDefaultUTMTags,v0:()=>defaultUtmTags});var _SmarpJSClient_dist__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(71287),src_api__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__(56433),src_utils_alert_utils_alert_utils__WEBPACK_IMPORTED_MODULE_2__=__webpack_require__(20987),src_app_modules_core_helpers_util__WEBPACK_IMPORTED_MODULE_3__=__webpack_require__(58151);const defaultUtmTags={source:{type:_SmarpJSClient_dist__WEBPACK_IMPORTED_MODULE_0__.cTJ.SocialNetwork},medium:{type:_SmarpJSClient_dist__WEBPACK_IMPORTED_MODULE_0__.cTJ.StaticText},campaign:{type:_SmarpJSClient_dist__WEBPACK_IMPORTED_MODULE_0__.cTJ.UserId},content:{type:_SmarpJSClient_dist__WEBPACK_IMPORTED_MODULE_0__.cTJ.PostId},id:{type:_SmarpJSClient_dist__WEBPACK_IMPORTED_MODULE_0__.cTJ.Empty},term:{type:_SmarpJSClient_dist__WEBPACK_IMPORTED_MODULE_0__.cTJ.Empty}},fetchCompanyDefaultUTMTags=async companyId=>{var _a,_b;const[response,error]=await(0,src_app_modules_core_helpers_util__WEBPACK_IMPORTED_MODULE_3__.Oi)((()=>src_api__WEBPACK_IMPORTED_MODULE_1__._K.retrieveCompanyDefaultUTMTags(companyId)));if(!Boolean(error))return response.data;{const errorMessage=null===(_b=null===(_a=null==error?void 0:error.response)||void 0===_a?void 0:_a.data)||void 0===_b?void 0:_b.message;"Company UTM tags not found"!==errorMessage&&src_utils_alert_utils_alert_utils__WEBPACK_IMPORTED_MODULE_2__.A.error(errorMessage)}},getUtmTagsError=utmTags=>{return{emptyStaticValue:(tags=utmTags,tags?Object.entries(tags).filter((([,tag])=>(tag=>tag.type===_SmarpJSClient_dist__WEBPACK_IMPORTED_MODULE_0__.cTJ.StaticText&&!tag.value)(tag))).map((([tagName])=>tagName)):[])};var tags}},13125:(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{__webpack_require__.d(__webpack_exports__,{DZ:()=>saveSettings,Sy:()=>deleteFilter,TS:()=>getRankedUserList,U2:()=>addFilter,Wf:()=>saveFilter,mt:()=>getSettings});var src_api__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(56433);let settings,settingsPromise;const getSettings=async()=>
16{if(settings)return settings;settingsPromise||(settingsPromise=src_api__WEBPACK_IMPORTED_MODULE_0__.S4.getLeaderboardSettings());try{const response=await settingsPromise;return settings=response.data,settings}catch(err){throw settingsPromise=null,err}},saveSettings=async request=>{await src_api__WEBPACK_IMPORTED_MODULE_0__.S4.updateLeaderboardSettings(request),settings&&(settings=getUpdateSettings(settings,request))},addFilter=async filter=>{const response=await src_api__WEBPACK_IMPORTED_MODULE_0__.S4.createLeaderboardFilter(filter),newFilter={...filter,_id:response.data._id,filteredTeamList:[]};return settings&&(settings={...settings,orderedLeaderboardList:[...settings.orderedLeaderboardList,newFilter]}),newFilter},saveFilter=async filter=>{await src_api__WEBPACK_IMPORTED_MODULE_0__.S4.updateLeaderboardFilter(filter._id,filter),settings&&(settings={...settings,orderedLeaderboardList:settings.orderedLeaderboardList.map((cachedFilter=>cachedFilter._id===filter._id?filter:cachedFilter))})},deleteFilter=async filter=>{await src_api__WEBPACK_IMPORTED_MODULE_0__.S4.deleteLeaderboardFilter(filter._id),settings&&(settings={...settings,orderedLeaderboardList:settings.orderedLeaderboardList.filter((cachedFilter=>cachedFilter._id!==filter._id))})},getRankedUserList=async params=>(await src_api__WEBPACK_IMPORTED_MODULE_0__.S4.getFilteredLeaderboard(params._id,params.teamId)).data,getUpdateSettings=(oldSetting,updatingSetting)=>{const{orderedLeaderboardIdList,...updated}=updatingSetting,updatedSetting={...oldSetting,...updated};return updatedSetting.orderedLeaderboardList=reorderLeaderboardListById(updatedSetting.orderedLeaderboardList,orderedLeaderboardIdList),updatedSetting},reorderLeaderboardListById=(leaderboardList,idList)=>idList.map((id=>leaderboardList.find((item=>item._id===id)))).filter((item=>void 0!==item))},24571:(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{__webpack_require__.d(__webpack_exports__,{e:()=>UtmTagsForm});var react=__webpack_require__(96540),modules=__webpack_require__(56848),utils=__webpack_require__(41182),use_get_text=__webpack_require__(87914),components=__webpack_require__(66931),emotion_styled_browser_esm=__webpack_require__(59295),stencil_generated=__webpack_require__(11432),dist=__webpack_require__(71287),cat_select_facade=__webpack_require__(33544),catalyst_provider=__webpack_require__(2784);const Label=emotion_styled_browser_esm.A.p`
17	flex: 1 1 0;
18	margin: 0;
19`,Row=emotion_styled_browser_esm.A.div`
20	display: flex;
21	flex-wrap: wrap;
22	gap: ${p=>p.theme.cat.spacing.s};
23`,FlexElement=emotion_styled_browser_esm.A.div`
24	flex: 2 1 0;
25	min-width: 250px;
26`,UtmTagInput=({tagName,initialTag,onChange,hasStaticTextError})=>{var _a;const{gettext}=(0,use_get_text.z)(),[selectedOption,setSelectedOption]=(0,react.useState)(initialTag.type),isRequired=(tagName=>"source"===tagName||"medium"===tagName||"campaign"===tagName)(tagName),typeSelectOptions=(0,utils.Dn)(gettext,!isRequired);(0,catalyst_provider.g)({"error.UtmTagInput.staticTextError":gettext("Static text input cannot be empty.")});const shouldShowStaticInput=selectedOption===dist.cTJ.StaticText,labelText=`utm_${tagName}`;return react.createElement(Row,null,react.createElement(Label,null,labelText),react.createElement(FlexElement,null,react.createElement(cat_select_facade.j,{label:labelText,labelHidden:!0,required:!0,options:typeSelectOptions,nativeAttributes:{autocomplete:"off","data-testid":`utm_${tagName}_type_field`},noItems:gettext("No matching type found"),value:selectedOption,onCatChange:event=>{var selected;(selected=event.target.value)!==initialTag.type&&selected&&(setSelectedOption(selected),onChange(tagName,{type:selected}))}})),shouldShowStaticInput&&react.createElement(FlexElement,null,react.createElement(stencil_generated.BU,{labelHidden:!0,placeholder:gettext("Static text"),value:null!==(_a=initialTag.value)&&void 0!==_a?_a:"",maxLength:1e3,nativeAttributes:{"data-testid":`utm_${tagName}_static_field`},onCatChange:event=>{onChange(tagName,{type:initialTag.type,value:event.target.value})},errors:hasStaticTextError?["UtmTagInput.staticTextError"]:[]})))},UtmTagsForm=({utmTags,updateUtmTags,utmTagsError})=>{const handleUpdate=(tagName,tag)=>{updateUtmTags({[tagName]:tag})},{gettext}=(0,use_get_text.z)();return utmTags?react.createElement("div",null,react.createElement(components.YC,null,gettext("Haiilo Share automatically generates UTM tags to external links to allow easier tracking through analytics tools. You can also replace the automatic UTM tags with custom ones if you wish.")),react.createElement(modules.Hg,{name:"utm-tags-error"}),react.createElement(components.hK,{size:"m",dir:"y"}),utils.pJ.map((tagName=>{const hasErrors=!!utmTagsError&&utmTagsError.emptyStaticValue.includes(tagName);return react.createElement(react.Fragment,{key:tagName},react.createElement(components.hK,{size:"m",dir:"y"}),react.createElement(UtmTagInput,{tagName,initialTag:utmTags[tagName],onChange:handleUpdate,hasStaticTextError:hasErrors}))}))):null}},28576:(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{__webpack_require__.d(__webpack_exports__,{z:()=>useClickOutsideElement});var react__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(96540);const useClickOutsideElement=(ref,callback)=>{react__WEBPACK_IMPORTED_MODULE_0__.useEffect((()=>{const handleClickOutside=event=>{ref.current&&!ref.current.contains(event.target)&&callback()};return document.addEventListener("mousedown",handleClickOutside),()=>{document.removeEventListener("mousedown",handleClickOutside)}}),[ref,callback])}},28962:(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{__webpack_require__.d(__webpack_exports__,{A:()=>DialogMessage,Q:()=>Message});var react__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(96540),classnames__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__(32485),_fortawesome_free_solid_svg_icons__WEBPACK_IMPORTED_MODULE_4__=__webpack_require__(66188),_fortawesome_react_fontawesome__WEBPACK_IMPORTED_MODULE_2__=__webpack_require__(46784),src_design_system_components__WEBPACK_IMPORTED_MODULE_3__=__webpack_require__(66931);const MessageIcon=({messageType})=>{switch(messageType){case"info":return react__WEBPACK_IMPORTED_MODULE_0__.createElement(_fortawesome_react_fontawesome__WEBPACK_IMPORTED_MODULE_2__.g,{icon:_fortawesome_free_solid_svg_icons__WEBPACK_IMPORTED_MODULE_4__.tUE});case"warning":return react__WEBPACK_IMPORTED_MODULE_0__.createElement(_fortawesome_react_fontawesome__WEBPACK_IMPORTED_MODULE_2__.g,{icon:_fortawesome_free_solid_svg_icons__WEBPACK_IMPORTED_MODULE_4__.zpE});default:return null}},Message=({children,className,style,messageType="info"})=>react__WEBPACK_IMPORTED_MODULE_0__.createElement("div",{className:classnames__WEBPACK_IMPORTED_MODULE_1__(`${messageType}-message`,"message-component",className),style},react__WEBPACK_IMPORTED_MODULE_0__.createElement(MessageIcon,{messageType}),react__WEBPACK_IMPORTED_MODULE_0__.createElement(src_design_system_components__WEBPACK_IMPORTED_MODULE_3__.YC,null,children)),DialogMessageIcon=({type})=>{switch(type){case"info":return react__WEBPACK_IMPORTED_MODULE_0__.createElement(_fortawesome_react_fontawesome__WEBPACK_IMPORTED_MODULE_2__.g,{icon:_fortawesome_free_solid_svg_icons__WEBPACK_IMPORTED_MODULE_4__.SGM,color:"#4395CD",size:"2x"});case"warning":return react__WEBPACK_IMPORTED_MODULE_0__.createElement(_fortawesome_react_fontawesome__WEBPACK_IMPORTED_MODULE_2__.g,{icon:_fortawesome_free_solid_svg_icons__WEBPACK_IMPORTED_MODULE_4__.zpE,color:"#F49342"});case"error":return react__WEBPACK_IMPORTED_MODULE_0__.createElement(_fortawesome_react_fontawesome__WEBPACK_IMPORTED_MODULE_2__.g,{icon:_fortawesome_free_solid_svg_icons__WEBPACK_IMPORTED_MODULE_4__.zpE,color:"#DE3618"});default:return react__WEBPACK_IMPORTED_MODULE_0__.createElement(_fortawesome_react_fontawesome__WEBPACK_IMPORTED_MODULE_2__.g,{icon:_fortawesome_free_solid_svg_icons__WEBPACK_IMPORTED_MODULE_4__.tUE,color:"#4395CD"})}},DialogMessage=({type,children,className})=>react__WEBPACK_IMPORTED_MODULE_0__.createElement("div",{className:classnames__WEBPACK_IMPORTED_MODULE_1__("dialog-message-container",type,className)},react__WEBPACK_IMPORTED_MODULE_0__.createElement(DialogMessageIcon,{type}),react__WEBPACK_IMPORTED_MODULE_0__.createElement(src_design_system_components__WEBPACK_IMPORTED_MODULE_3__.hK,{dir:"x",size:"s"}),react__WEBPACK_IMPORTED_MODULE_0__.createElement("div",{className:"content"},children))},35123:(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{__webpack_require__.d(__webpack_exports__,{l:()=>getKeycloakRedirectUrl,r:()=>getKeycloakRelativePath});var js_cookie__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(18987),src_app_react_modules_login_components_keycloak_keycloak_wrapper__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__(11486);const getKeycloakRedirectUrl=async(companyId,clientId,keycloakRelativePath)=>{const keycloakInstance=new src_app_react_modules_login_components_keycloak_keycloak_wrapper__WEBPACK_IMPORTED_MODULE_1__.A({url:`https://saml.smarpshare.com/${keycloakRelativePath}`,realm:companyId,clientId});return await keycloakInstance.init(),await keycloakInstance.createLoginUrl({idpHint:"saml",redirectUri:`https://saml.smarpshare.com/${keycloakRelativePath}/realms/${companyId}/account`})},BETA_INSTANCES=["asad","asad-channelmodel","smarp-test","smarp-saml","pentest-rc"],getKeycloakRelativePath=subdomain=>{const version=js_cookie__WEBPACK_IMPORTED_MODULE_0__.A.get("version")||"stable";return BETA_INSTANCES.includes(subdomain)||"stable"!==version?"keycloak-beta":"keycloak"}},35278:(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{__webpack_require__.d(__webpack_exports__,{A:()=>__WEBPACK_DEFAULT_EXPORT__});const dailyRegex=/^0 ([0-9]|1[0-9]|2[0-3]) \* \* MON-FRI \*$/i,weeklyRegex=/^0 ([0-9]|1[0-9]|2[0-3]) \* \* (MON|TUE|WED|THU|FRI|SAT|SUN)((?:,(?:MON|TUE|WED|THU|FRI|SAT|SUN)){0,6}) \*$/i,monthlyRegex=/^0 ([0-9]|1[0-9]|2[0-3]) \* \* ((?:MON|TUE|WED|THU|FRI|SAT|SUN)(?:#[1-5]|L))((?:,(?:MON|TUE|WED|THU|FRI|SAT|SUN)(?:#[1-5]|L))*) \*$/i,payloadHelper=({Ordinal,DoW})=>{if(null==Ordinal||0===Ordinal||Number.isNaN(Ordinal))throw new Error("Invalid input");if(-1===Ordinal)return DoW+"L";if(1<=Ordinal&&Ordinal<=5)return DoW+"#"+Ordinal;throw new Error("Invalid input")},objectToCronex=input=>{switch(input.Level){case"daily":return"0 "+input.Hour+" * * MON-FRI *";case"weekly":{const payload=input.Payload;let d=input.Payload[0].DoW;const len=input.Payload.length;for(let i=1;i<len;i++)d+=","+payload[i].DoW;return"0 "+input.Hour+" * * "+d+" *"}case"monthly":{let d=payloadHelper(input.Payload[0]);const len=input.Payload.length;for(let i=1;i<len;i++)d+=","+payloadHelper(input.Payload[i]);return"0 "+input.Hour+" * * "+d+" *"}default:throw new Error("Invalid input")}},cronexToObject=(cronex="")=>{let match;if(match=cronex.match(dailyRegex),null!==match&&2===match.length)return{Hour:Number(match[1]),Level:"daily",Payload:[]};if(match=cronex.match(weeklyRegex),null!==match&&4===match.length){const Payload=[],temp=match[3].split(",");temp[0]=match[2];for(let i=0;i<temp.length;i++)Payload.push({DoW:temp[i]});return{Hour:Number(match[1]),Level:"weekly",Payload}}if(match=cronex.match(monthlyRegex),null!==match&&4===match.length){const Payload=[],temp=match[3].split(",");temp[0]=match[2];for(let i=0;i<temp.length;i++){const d=temp[i],oDoW={DoW:d.substring(0,3),Ordinal:0};switch(d.substring(3)){case"#1":oDoW.Ordinal=1;break;case"#2":oDoW.Ordinal=2;break;case"#3":oDoW.Ordinal=3;break;case"#4":oDoW.Ordinal=4;break;case"#5":oDoW.Ordinal=5;break;case"L":oDoW.Ordinal=-1;break;default:throw new Error("Invalid cron expression")}Payload.push(oDoW)}return{Hour:Number(match[1]),Level:"monthly",Payload}}throw new Error("Invalid cron expression")},_processCron=inputCtx=>{let newCtx={...inputCtx},inputCronEx=newCtx.emailCronEx;if(inputCronEx||(inputCronEx=newCtx.defaultEmailCronEx),"#"===inputCronEx)return newCtx={...newCtx,startingTime:"08"},newCtx=_clearDays(newCtx),newCtx;const cronObj=cronexToObject(inputCronEx),startingTime=cronObj.Hour<10?`0${cronObj.Hour}`:`${cronObj.Hour}`;return newCtx={...newCtx,startingTime},0===cronObj.Payload.length||(newCtx=_clearDays(newCtx),newCtx.daysOfWeek.forEac
26h((day=>{day.isActive=cronObj.Payload.some((item=>item.DoW===day.name))}))),newCtx},_clearDays=inputCtx=>{const newCtx={...inputCtx};return newCtx.daysOfWeek.forEach((day=>{day.isActive=!1})),newCtx},__WEBPACK_DEFAULT_EXPORT__={getDefaultCtx:gettext=>({daysOfWeek:[{name:"MON",display:gettext("Monday"),isActive:!1},{name:"TUE",display:gettext("Tuesday"),isActive:!1},{name:"WED",display:gettext("Wednesday"),isActive:!1},{name:"THU",display:gettext("Thursday"),isActive:!1},{name:"FRI",display:gettext("Friday"),isActive:!1},{name:"SAT",display:gettext("Saturday"),isActive:!1},{name:"SUN",display:gettext("Sunday"),isActive:!1}],defaultEmailCronEx:"",emailCronEx:"",display:"",isEdit:!1,startingTime:"",timezone:""}),getCronExObject:(options,defaultCtx)=>{var _a,_b,_c;return _processCron({...defaultCtx,defaultEmailCronEx:null!==(_a=options.defaultEmailCronEx)&&void 0!==_a?_a:defaultCtx.defaultEmailCronEx,emailCronEx:null!==(_b=options.emailCronEx)&&void 0!==_b?_b:defaultCtx.emailCronEx,timezone:null!==(_c=options.timezone)&&void 0!==_c?_c:defaultCtx.timezone})},getDayDisplay:(inputCtx,gettext)=>{const activeDaysOfWeek=inputCtx.daysOfWeek.reduce(((activeDays,day)=>(day.isActive&&activeDays.push(day.display.toUpperCase()),activeDays)),[]);return 7===activeDaysOfWeek.length?gettext("day"):activeDaysOfWeek.join(", ")},generateCronEx:inputCtx=>{const cronObj={Hour:Number(inputCtx.startingTime)||0,Level:"weekly",Payload:[]};inputCtx.daysOfWeek.forEach((item=>{item.isActive&&cronObj.Payload.push({DoW:item.name})}));const emailCronEx=0!==cronObj.Payload.length?objectToCronex(cronObj):"#";return emailCronEx||""},objectToCronex,cronexToObject}},37373:(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{__webpack_require__.d(__webpack_exports__,{ve:()=>HeaderWithGroupSelection,uA:()=>HeaderWithGroupSelectionRenderer,lW:()=>NO_FILTER_OPTION_VALUE,Xy:()=>mapStateToProps});var react=__webpack_require__(96540),es=__webpack_require__(49924),redux=__webpack_require__(82960),stencil_generated=__webpack_require__(11432),emotion_styled_browser_esm=__webpack_require__(59295),effects=__webpack_require__(61412),cat_select_facade=__webpack_require__(33544),use_cat_select=__webpack_require__(50071),use_get_text=__webpack_require__(87914);const Select=(0,emotion_styled_browser_esm.A)(cat_select_facade.j)`
27	${({theme:{cat:{fontSize,fontWeight,color,radius}}})=>`\n\t\tcolor: ${color.uiFontBase};\n\t\twidth: 240px;\n\t\t--cat-border-radius-m: ${radius.l};\n\t\t--cat-border-color-dark: 235, 236, 240;\n\t\t::part(input) {\n\t\t\tfont-size: ${fontSize.m};\n\t\t\tfont-weight: ${fontWeight.head};\n\t\t}\n\t`}
28`,CatGroupSelect=({options,value,onGroupChange})=>{const{gettext}=(0,use_get_text.z)();return react.createElement(Select,{label:gettext("Group select"),labelHidden:!0,required:!0,options:(0,use_cat_select.a)(options,(folder=>folder.value),(folder=>folder.display)),nativeAttributes:{"data-testid":"group-select"},noItems:gettext("No matching group found"),value,onCatChange:event=>{if(!event.target.value||event.target.value===value)return;const group=options.find((({value})=>value===event.target.value));group&&onGroupChange(group)}})};var use_query_params=__webpack_require__(47547),use_session=__webpack_require__(84280);const GroupLabel=emotion_styled_browser_esm.A.p`
29	color: ${p=>p.theme.cat.color.uiFontBase};
30`,NO_FILTER_OPTION_VALUE="no_filter",HeaderWithGroupSelectionRenderer=({groupOptions,isGroupSelectionEnabled,isFetchingGroups,selectedGroup,onGroupSelection,fetchGroups,testId,title,toolbar,isUpdateQueryParamEnabled=!0,isNoFilterOptionEnabled=!0,noFilterOptionText})=>{const[queryParams,setQueryParam]=(0,use_query_params.s)(),{groupId:groupIdFromUrl}=queryParams,{session:{company:{_id:companyId,isGroupEnabled},user}}=(0,use_session.w)(),{gettext}=(0,use_get_text.z)(),[hasMounted,setHasMounted]=react.useState(!1),noFilterOption={value:NO_FILTER_OPTION_VALUE,display:noFilterOptionText||gettext("All groups")};react.useEffect((()=>{if(setHasMounted(!0),isGroupEnabled&&isGroupSelectionEnabled){fetchGroups(!0)}else handleGroupSelection({display:user.groupName,value:user.groupId})}),[]);const filteredGroupOptions=react.useMemo((()=>{const groups=(groupOptions=>user.companyId!==companyId&&isGroupEnabled?groupOptions.filter((group=>group.value!==user.groupId)):groupOptions)(groupOptions);return isNoFilterOptionEnabled?[noFilterOption,...groups]:groups}),[groupOptions]),handleGroupSelection=group=>{onGroupSelection(group),isUpdateQueryParamEnabled&&updateQueryParam(group)},updateQueryParam=group=>{if((null==group?void 0:group.value)!==NO_FILTER_OPTION_VALUE)setQueryParam({...queryParams,groupId:null==group?void 0:group.value});else{const{groupId,...query}=queryParams;setQueryParam({...query})}};react.useEffect((()=>
30{if(!isGroupSelectionEnabled||!hasMounted||isFetchingGroups)return;const groupToSelect=(()=>{if(!groupIdFromUrl&&isNoFilterOptionEnabled)return noFilterOption;let groupToSelect=filteredGroupOptions.find((({value})=>value===(groupIdFromUrl||user.groupId)));return void 0===groupToSelect&&(groupToSelect=filteredGroupOptions[0]),groupToSelect})();void 0!==groupToSelect&&groupToSelect.value!==(null==selectedGroup?void 0:selectedGroup.value)&&handleGroupSelection(groupToSelect)}),[groupOptions,groupIdFromUrl]);return react.createElement("div",{className:"cat-flex-col cat-gap-s"},react.createElement("h1",{className:"cat-h1","data-testid":testId},title),react.createElement("div",{className:"cat-flex cat-justify-between"},isGroupEnabled?isGroupSelectionEnabled?isFetchingGroups?react.createElement(stencil_generated.K0,{"data-testid":"loading-indicator"}):0===filteredGroupOptions.length?gettext("No groups for this user. Please check your user role."):1===filteredGroupOptions.length?react.createElement(GroupLabel,{className:"cat-text-l","data-testid":"group-label"},filteredGroupOptions[0].display):react.createElement(CatGroupSelect,{options:filteredGroupOptions,value:(null==selectedGroup?void 0:selectedGroup.value)||"",onGroupChange:handleGroupSelection}):react.createElement(GroupLabel,{className:"cat-text-l","data-testid":"group-label"},null==selectedGroup?void 0:selectedGroup.display):null,toolbar))},mapStateToProps=state=>({isFetchingGroups:state.Group.isFetching,groupOptions:Object.values(state.Group.groupList).map((({general:{name,_id}})=>({display:name,value:_id})))}),HeaderWithGroupSelection=(0,es.Ng)(mapStateToProps,(dispatch=>(0,redux.bindActionCreators)({fetchGroups:effects.pl},dispatch)))(HeaderWithGroupSelectionRenderer)},48779:(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{__webpack_require__.d(__webpack_exports__,{LE:()=>useChangeOrderMutation,Gq:()=>useCreateShortcutsMutation,fr:()=>useDeleteShortcutsMutation,w3:()=>useEditShortcutsMutation,xT:()=>useFetchShortcuts});var es=__webpack_require__(75942),api=__webpack_require__(56433),icon=__webpack_require__(83298);const convertShortcutToModel=async shortcut=>{const inlineIcon=await(0,icon.n)(shortcut.icon);return{...shortcut,icon:{name:shortcut.icon,inlineIcon},platform:shortcut.platform}},convertModelToShortcut=model=>{var _a,_b;return{title:model.title,link:model.link,color:model.color,icon:null!==(_b=null===(_a=model.icon)||void 0===_a?void 0:_a.name)&&void 0!==_b?_b:"",platform:model.platform}},useFetchShortcuts=(groupId="",platform="all")=>(0,es.useQuery)(["shortcuts",groupId],(()=>groupId?(async(groupId,platform="all")=>{const{data}=await api.f9.retrieveShortcutsForGroup(groupId,void 0,platform);return Promise.all(data.map(convertShortcutToModel))})(groupId,platform):(async()=>{const{data}=await api.f9.retrieveShortcutsForCompany();return Promise.all(data.map(convertShortcutToModel))})())),useCreateShortcutsMutation=()=>{const client=(0,es.useQueryClient)();return(0,es.useMutation)((model=>model.groupId?api.f9.createShortcutForGroup(model.groupId,convertModelToShortcut(model)):api.f9.createShortcutForCompany(convertModelToShortcut(model))),{onSuccess:()=>{client.invalidateQueries("shortcuts")}})},useEditShortcutsMutation=()=>{const client=(0,es.useQueryClient)();return(0,es.useMutation)((model=>model.groupId?api.f9.updateShortcutForGroup(model.groupId,model.id,convertModelToShortcut(model)):api.f9.updateShortcutForCompany(model.id,convertModelToShortcut(model))),{onSuccess:()=>{client.invalidateQueries("shortcuts")}})},useDeleteShortcutsMutation=()=>{const client=(0,es.useQueryClient)();return(0,es.useMutation)((shortcut=>shortcut.groupId?api.f9.deleteShortcutForGroup(shortcut.groupId,shortcut.id):api.f9.deleteShortcutForCompany(shortcut.id)),{onSuccess:()=>{client.invalidateQueries("shortcuts")}})},useChangeOrderMutation=groupId=>{const client=(0,es.useQueryClient)();return(0,es.useMutation)((updateOrderPayload=>api.f9.updateShortcutsOrderForGroup(groupId,updateOrderPayload)),{onSuccess:()=>{client.invalidateQueries("shortcuts")}})}},50294:(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{__webpack_require__.d(__webpack_exports__,{_:()=>WarningMessage});var react__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(96540),classnames__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__(32485),_fortawesome_free_solid_svg_icons__WEBPACK_IMPORTED_MODULE_4__=__webpack_require__(66188),_fortawesome_react_fontawesome__WEBPACK_IMPORTED_MODULE_2__=__webpack_require__(46784),src_design_system_components__WEBPACK_IMPORTED_MODULE_3__=__webpack_require__(66931);const WarningMessage=({text,className,style})=>react__WEBPACK_IMPORTED_MODULE_0__.createElement("div",{className:classnames__WEBPACK_IMPORTED_MODULE_1__("warning-message",className),style},react__WEBPACK_IMPORTED_MODULE_0__.createElement(_fortawesome_react_fontawesome__WEBPACK_IMPORTED_MODULE_2__.g,{icon:_fortawesome_free_solid_svg_icons__WEBPACK_IMPORTED_MODULE_4__.zpE}),react__WEBPACK_IMPORTED_MODULE_0__.createElement(src_design_system_components__WEBPACK_IMPORTED_MODULE_3__.YC,null,text))},52685:(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{__webpack_require__.d(__webpack_exports__,{FD:()=>setCompanyDefaultChannels,pZ:()=>getCompanyDefaultChannels});var src_api__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(56433);const getCompanyDefaultChannels=async companyId=>(await src_api__WEBPACK_IMPORTED_MODULE_0__._K.getCompanyDefaultChannels(companyId)).data,setCompanyDefaultChannels=async(companyId,defaultChannels)=>{await src_api__WEBPACK_IMPORTED_MODULE_0__._K.setCompanyDefaultChannels(companyId,defaultChannels)}},54073:(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{__webpack_require__.d(__webpack_exports__,{m:()=>DefaultChannels});var react__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(96540),react_redux__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__(49924),_Util_channels_util_adapters__WEBPACK_IMPORTED_MODULE_7__=__webpack_require__(59008),src_app_modules_app_channel_redux_effects__WEBPACK_IMPORTED_MODULE_2__=__webpack_require__(13226),src_app_modules_core_helpers_labs__WEBPACK_IMPORTED_MODULE_6__=__webpack_require__(25231),src_app_react_common_hooks_use_get_text__WEBPACK_IMPORTED_MODULE_3__=__webpack_require__(87914),src_app_react_common_hooks_use_session__WEBPACK_IMPORTED_MODULE_4__=__webpack_require__(84280),src_design_system_components__WEBPACK_IMPORTED_MODULE_5__=__webpack_require__(66931);const mapDispatchToProps={fetchGroupedChannels:src_app_modules_app_channel_redux_effects__WEBPACK_IMPORTED_MODULE_2__.Vx},DefaultChannels=(0,react_redux__WEBPACK_IMPORTED_MODULE_1__.Ng)((state=>({channelListForSelect:(0,_Util_channels_util_adapters__WEBPACK_IMPORTED_MODULE_7__.DI)(state.Channel.groupedChannelList,state.Session.user.groupId),isLoading:state.Channel.is
30FetchingGroupedChannelList,error:state.Channel.groupedChannelListError})),mapDispatchToProps)((({customOption=props=>react__WEBPACK_IMPORTED_MODULE_0__.createElement(src_design_system_components__WEBPACK_IMPORTED_MODULE_5__.O5,{...props}),level,setMandatoryChannels,setRecomendedChannels,isDisabled,channelListForSelect,selectedMandatoryChannelList,selectedRecomededChannelList,fetchGroupedChannels})=>{const{gettext}=(0,src_app_react_common_hooks_use_get_text__WEBPACK_IMPORTED_MODULE_3__.z)(),{session,sessionUtil:{isLabEnabled,isManager}}=(0,src_app_react_common_hooks_use_session__WEBPACK_IMPORTED_MODULE_4__.w)();react__WEBPACK_IMPORTED_MODULE_0__.useEffect((()=>{fetchGroupedChannels({ignoreAccessibilityFilter:isManager()},{forceFetch:!0})}),[]);return react__WEBPACK_IMPORTED_MODULE_0__.createElement("div",{className:"cat-flex-col cat-gap-l cat-text-m"},react__WEBPACK_IMPORTED_MODULE_0__.createElement("p",{className:"cat-m-0"},"team"===level?gettext("Existing and new team members will be automatically subscribed to these channels."):"group"===level?gettext("Existing and new group members will be automatically subscribed to these channels."):"company"===level?gettext("Existing and new users will be automatically subscribed to these channels."):""),react__WEBPACK_IMPORTED_MODULE_0__.createElement("div",null,react__WEBPACK_IMPORTED_MODULE_0__.createElement("div",{className:"cat-text-l cat-mb-s"},gettext("Essential channels")),react__WEBPACK_IMPORTED_MODULE_0__.createElement("div",{className:"cat-mb-m cat-flex-col"},react__WEBPACK_IMPORTED_MODULE_0__.createElement("span",{className:"cat-text-m"},"team"===level?gettext("Make sure important content will reach everyone in the team. Team members cannot unsubscribe from these channels"):"group"===level?gettext("Make sure important content will reach everyone in the group. Group members cannot unsubscribe from these channels"):"company"===level?gettext("Make sure important content will reach everyone in the company. Users cannot unsubscribe from these channels"):""),isLabEnabled(src_app_modules_core_helpers_labs__WEBPACK_IMPORTED_MODULE_6__.fS)&&"company"===level&&react__WEBPACK_IMPORTED_MODULE_0__.createElement("span",{className:"cat-text-m"},gettext("Users from Groups with limited access will not be automatically subscribed to these Channels"))),react__WEBPACK_IMPORTED_MODULE_0__.createElement(src_design_system_components__WEBPACK_IMPORTED_MODULE_5__.xI,{channelList:channelListForSelect,value:selectedMandatoryChannelList,onChange:setMandatoryChannels,showGroups:session.company.isGroupEnabled,isDisabled,components:{Option:customOption},placeholder:gettext("Choose channels")})),react__WEBPACK_IMPORTED_MODULE_0__.createElement("div",null,react__WEBPACK_IMPORTED_MODULE_0__.createElement("div",{className:"cat-text-l cat-mb-s"},gettext("Default channels")),react__WEBPACK_IMPORTED_MODULE_0__.createElement("div",{className:"cat-mb-m cat-flex-col"},react__WEBPACK_IMPORTED_MODULE_0__.createElement("span",{className:"cat-text-m"},"team"===level?gettext("Team members can unsubscribe from these channels."):"group"===level?gettext("Group members can unsubscribe from these channels."):"company"===level?gettext("Users can unsubscribe from these channels."):""),isLabEnabled(src_app_modules_core_helpers_labs__WEBPACK_IMPORTED_MODULE_6__.fS)&&"company"===level&&react__WEBPACK_IMPORTED_MODULE_0__.createElement("span",{className:"cat-text-m"},gettext("Users from Groups with limited access will not be automatically subscribed to these Channels"))),react__WEBPACK_IMPORTED_MODULE_0__.createElement(src_design_system_components__WEBPACK_IMPORTED_MODULE_5__.xI,{channelList:channelListForSelect,value:selectedRecomededChannelList,onChange:setRecomendedChannels,showGroups:session.company.isGroupEnabled,isDisabled,components:{Option:customOption},placeholder:gettext("Choose channels")})))}))},59008:(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{__webpack_require__.d(__webpack_exports__,{CM:()=>filterGroupedChannelsByGroupId,DI:()=>convertGroupedChannelsToObjectForSelect,sT:()=>convertToSectionedListForSelect});var _filter_channel_manager_filter_channel_manager__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(18901);const filterGroupedChannelsByGroupId=(groupedChannels,groupId)=>groupedChannels.filter((group=>group.groupId===groupId)),convertGroupedChannelsToObjectForSelect=(groupedChannels,userGroupId)=>groupedChannels.map((group=>({groupId:group.groupId,groupName:userGroupId===group.groupId?`My group: ${group.groupName}`:group.groupName,options:group.channelList}))),convertToSectionedListForSelect=(groupedChannels,userGroupId,sectionNames)=>{const groupedChannelsForSelect=convertGroupedChannelsToObjectForSelect(groupedChannels,userGroupId),sectionedManagedChannels=groupedChannelsForSelect.map((groupedList=>({...groupedList,isPrimarySection:!0,options:groupedList.options.filter(_filter_channel_manager_filter_channel_manager__WEBPACK_IMPORTED_MODULE_0__._W)}))).filter((groupedList=>groupedList.options.length>0));sectionedManagedChannels.length>0&&(sectionedManagedChannels[0].sectionName=sectionNames.publishableChannel);const sectionedOtherChannels=groupedChannelsForSelect.map((groupedList=>({...groupedList,isPrimarySection:!1,options:groupedList.options.filter(_filter_channel_manager_filter_channel_manager__WEBPACK_IMPORTED_MODULE_0__.TA)}))).filter((groupedList=>groupedList.options.length>0));return sectionedOtherChannels.length>0&&(sectionedOtherChannels[0].sectionName=sectionNames.proposableChannel),[...sectionedManagedChannels,...sectionedOtherChannels]}},62061:(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{__webpack_require__.d(__webpack_exports__,{o:()=>UserTable});var jed=__webpack_require__(69407),react=__webpack_require__(96540),lib=__webpack_require__(85821),es=__webpack_require__(9053),loader=__webpack_require__(95259),shared_react_components=__webpack_require__(67940),human_readable_date=__webpack_require__(19551),dist=__webpack_require__(71287),show_by_condition=__webpack_require__(5775);class UserRow extends react.Component{render(){const{props:{user,columnMap,selectMap,selectAll,disableSelect}}=this,canShowUserRoleText=user.role&&![dist.u8N.Sharer,dist.u8N.ChannelManager].includes(user.role);return react.createElement("tr",null,columnMap.select?react.createElement("td",{className:"table-checkbox"},react.createElement("input",{type:"checkbox",checked:selectAll||!!selectMap[user._id],disabled:disableSelect,onChange:()=>this.props.toggleSelect(user)})):react.createElement("td",{className:"table-checkbox"}),!!columnMap.avatar&&react.createElement("td",{className:"table-avatar"},react.createElement(shared_react_components.Cr,{imageUrl:user.avatarUrl,token:dist.JRo.Avatar})),!!columnMap.info&&react.createElement("td",{className:"table-info"},react.createElement("div",null,""!==user.firstName||""!==user.lastName?`${user.firstName} ${user.lastName}`:null),react.createElement("div",{className:"email"},user.email),react.createElement("div",null,user.socnetList.map((socnet=>{const socnetClass=`i-${socnet}`;return react.createElement("i",{key:socnet,className:`user-socnet ${socnetClass}`})}))),react.createElement(show_by_condition.q,{isShow:canShowUserRoleText},react.createElement("div",{style:{fontWeight:"bold",textTransform:"capitalize"}},user.role))),!!columnMap.point&&react.createElement("td",null,react.createElement("i",{className:"lifetime",style:{marginRight:"5px"}}),user.point),!!columnMap.teams&&react.createElement("td",{className:"table-user-tag"},user.teamList.map((team=>react.createElement("span",{key:team._id},team.name)))),!!columnMap.lastActive&&react.createElement("td",{className:"table-date-status"},react.createElement("div",{className:"table-date-status-value"},react.createElement(human_readable_date.q,{date:user.lastActive}))),!!columnMap.subDate&&react.createElement("td",{className:"table-date-status"},react.createElement("div",{className:"table-date-status-value"},react.createElement(human_readable_date.q,{date:user.subscribedAt}))),!!columnMap.subStatus&&react.createElement("td",null,react.createElement("div",null,user.subscriptionStatus?"Subscribed":"")))}}class UserTable extends react.Component{constructor(props,state){super(props,state),this.get
30SortPosition=(sortAttr,sortMap)=>{if(void 0!==sortMap[sortAttr]){if(!1===sortMap[sortAttr])return react.createElement("i",{className:"i-caret-up"});if(!0===sortMap[sortAttr])return react.createElement("i",{className:"i-caret-down"})}return null},this.sort=attr=>{const sortMap={...this.state.sortMap};Object.keys(sortMap).forEach((key=>{sortMap[key]=key===attr?!sortMap[key]:null})),this.setState({sortMap},this.resetList)},this.fetch=async()=>{if(this.state.isLoading)return;this.setState({isLoading:!0});const req=this.prepareRetrieveRequest();let response;try{if(response=await this.props.fetch(req),response instanceof Array&&0===response.length)return void this.setState({listEnded:!0,isLoading:!1});const list=this.state.list.concat(response);return this.setState({list,isLoading:!1}),response}catch(err){this.setState({isLoading:!1,listEnded:!0})}},this.toggleSelect=item=>{this.props.toggleSelect(item,null,this.state.list)},this.prepareRetrieveRequest=()=>{let fromId="",lastSortValue=null;const sortAttr=this.getSortAttr(),sortReverse=this.state.sortMap[sortAttr];if(this.state.list.length>0){const lastElem=this.state.list.slice(0).pop();if(lastElem)switch(fromId=lastElem._id,sortAttr){case"point":lastSortValue=lastElem.point;break;case"lastActive":lastSortValue=lastElem.lastActive;break;default:lastSortValue=lastElem.email}}return{fromId,sortAttr,sortReverse,lastSortValue}},this.getSortAttr=()=>{let sortAttr="email";return Object.keys(this.state.sortMap).forEach((key=>{null!==this.state.sortMap[key]&&void 0!==this.state.sortMap[key]&&(sortAttr=key)})),sortAttr},this.resetList=()=>{this.setState({list:[],listEnded:!1,isLoading:!1})},this.state={isLoading:!1,listEnded:!1,list:[],sortMap:this.props.sortMap}}UNSAFE_componentWillReceiveProps(nextProps){this.props.reset!==nextProps.reset&&!0===nextProps.reset&&this.resetList()}render(){const{props:{count,columnMap,disableSelectAll,disableSelectOnRow},context:{gettext,ngettext}}=this,{getSortPosition,state:{list,sortMap}}=this;return react.createElement("div",{className:"data-table table-responsive"},react.createElement("div",{style:{position:"relative"}},react.createElement("table",{className:`table select-table user-table ${this.props.className}`},react.createElement("thead",null,react.createElement("tr",null,columnMap.select&&!disableSelectAll?react.createElement("th",{className:"table-checkbox",onClick:()=>this.props.toggleSelect(null,!this.props.selectAll,this.state.list)},react.createElement("input",{type:"checkbox",readOnly:!0,checked:this.props.selectAll})):react.createElement("th",{className:"table-checkbox"}
30),!!columnMap.avatar&&react.createElement("th",null),!!columnMap.info&&react.createElement("th",null,react.createElement("a",{onClick:()=>this.sort("email")},react.createElement("span",{className:"label"},gettext("Info")),getSortPosition("email",sortMap))),!!columnMap.point&&react.createElement("th",null,react.createElement("a",{onClick:()=>this.sort("point")},react.createElement("span",{className:"label"},gettext("Points")),getSortPosition("point",sortMap))),!!columnMap.teams&&react.createElement("th",null,react.createElement("a",null,react.createElement("span",{className:"label"},gettext("Teams")))),!!columnMap.lastActive&&react.createElement("th",null,react.createElement("a",{onClick:()=>this.sort("lastActive")},react.createElement("span",{className:"label"},gettext("Last active")),getSortPosition("lastActive",sortMap))),!!columnMap.subDate&&react.createElement("th",null,react.createElement("a",null,react.createElement("span",{className:"label"},gettext("Subscription date")))),!!columnMap.subStatus&&react.createElement("th",
30null,react.createElement("a",{onClick:()=>this.sort("status")},react.createElement("span",{className:"label"},gettext("Status")),getSortPosition("status",sortMap))))),react.createElement("tbody",null,list.map((user=>react.createElement(UserRow,{key:user._id,user,columnMap,toggleSelect:this.toggleSelect,selectMap:this.props.selectMap,selectAll:this.props.selectAll,disableSelect:disableSelectOnRow(user)}))))),react.createElement(loader.a,{isShow:this.state.isLoading,cssStyle:{textAlign:"center"}}),this.state.listEnded?react.createElement("div",{className:"graytext aligncenter"},react.createElement("span",null,(0,jed.sprintf)(ngettext(gettext("Showing %s user"),gettext("Showing all %s users"),count),count))):react.createElement(es.Y,{key:`user-table-wp-${count}`,onEnter:this.fetch})))}}UserTable.defaultProps={disableSelectOnRow:()=>!1},UserTable.contextType=lib.dg},67395:(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{__webpack_require__.d(__webpack_exports__,{M:()=>Anchor,N:()=>Link});var _emotion_styled__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(59295),react_router_dom__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__(54625);const StyledLink=_emotion_styled__WEBPACK_IMPORTED_MODULE_0__.A.a`
31	&,
32	&:link,
33	&:visited,
34	&:hover {
35		color: ${props=>props.theme.color.PrimaryDefault};
36		text-decoration: underline;
37	}
38`,Anchor=StyledLink,Link=StyledLink.withComponent(react_router_dom__WEBPACK_IMPORTED_MODULE_1__.N_)},83298:(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{__webpack_require__.d(__webpack_exports__,{A:()=>convertIconToShortcutIconModel,n:()=>fetchSVGIconAsText});var src_api__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(56433);const fetchSVGIconAsText=async iconName=>{const{data}=await src_api__WEBPACK_IMPORTED_MODULE_0__.Ay.get(`https://storage.googleapis.com/shortcut-icons/${iconName}.svg`);return data},convertIconToShortcutIconModel=async iconName=>({inlineIcon:await fetchSVGIconAsText(iconName),name:iconName})},86307:(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{__webpack_require__.d(__webpack_exports__,{K:()=>ConfirmationDialog});var react=__webpack_require__(96540),components=__webpack_require__(66931),use_get_text=__webpack_require__(87914);const ConfirmationDialog=({text,isDialogShown,isLoading,closeModal,title,onConfirmClick,cancelButtonLabel,confirmButtonLabel})=>{const{gettext}=(0,use_get_text.z)();return react.createElement(components.Au,{show:isDialogShown,onClose:closeModal,width:640},react.createElement(components.Au.Header,{title}),react.createElement(components.Au.Content,null,react.createElement(components.P,null,text)),react.createElement(components.Au.FooterActions,null,react.createElement(components.$n,{style:"link",text:cancelButtonLabel||gettext("Cancel"),onClick:closeModal}),react.createElement(components.hK,{size:"s",dir:"x"}),react.createElement(components.$n,{style:"primary",text:confirmButtonLabel||gettext("Confirm"),onClick:onConfirmClick,isLoading})))}},91066:(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{__webpack_require__.d(__webpack_exports__,{K:()=>SettingsCard,w:()=>Footer});var _emotion_styled__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(59295),_haiilo_catalyst_react__WEBPACK_IMPORTED_MODULE_2__=__webpack_require__(11432),react__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__(96540);const Title=_emotion_styled__WEBPACK_IMPORTED_MODULE_0__.A.h3`
39	${({theme:{cat:{fontWeight,fontSize,lineHeight,color}}})=>`\n\t\tcolor: ${color.uiFontBase};\n\t\tfont-size: ${fontSize.h4};\n\t    font-weight: ${fontWeight.head};\n\t    line-height: ${lineHeight.h3};\n\t\tmargin: 0;\n\t`}
40`,Card=(0,_emotion_styled__WEBPACK_IMPORTED_MODULE_0__.A)(_haiilo_catalyst_react__WEBPACK_IMPORTED_MODULE_2__.Re)`
41	${({theme:{cat:{color}}})=>`\n        color: ${color.uiFontBase};\n\t`}
42`,Header=_emotion_styled__WEBPACK_IMPORTED_MODULE_0__.A.div`
43	display: flex;
44	justify-content: space-between;
45	align-items: baseline;
46	margin-bottom: ${p=>p.theme.spacing.L};
47`,Footer=_emotion_styled__WEBPACK_IMPORTED_MODULE_0__.A.div`
48	display: flex;
49	justify-content: end;
50	margin-top: ${p=>p.theme.spacing.L};
51`,SettingsCard=({headerButton,title,children,footerButton,dataTestId})=>react__WEBPACK_IMPORTED_MODULE_1__.createElement(Card,{"data-testid":dataTestId,className:"cat-border"},react__WEBPACK_IMPORTED_MODULE_1__.createElement(Header,null,title&&react__WEBPACK_IMPORTED_MODULE_1__.createElement(Title,null,title),headerButton),children,Boolean(footerButton)&&react__WEBPACK_IMPORTED_MODULE_1__.createElement(Footer,null,footerButton))},91995:(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{__webpack_require__.d(__webpack_exports__,{l:()=>TextAreaWithCharsLimit});var react=__webpack_require__(96540),modules=__webpack_require__(56848),emotion_styled_browser_esm=__webpack_require__(59295),components=__webpack_require__(66931),use_get_text=__webpack_require__(87914);const AdditionalInfo=emotion_styled_browser_esm.A.div`
52	display: flex;
53	justify-content: flex-end;
54	margin-bottom: ${({addSpacing,theme:{cat}})=>addSpacing?"0":`-${cat.spacing.l}`};
55`,Message=(0,emotion_styled_browser_esm.A)(components.YC,{shouldForwardProp:propName=>"isValid"!==propName})`
56	${({isValid,theme:{cat,color}})=>`\n\t\t&&& {\n\t\t\tfont-size: ${cat.fontSize.s};\n\t\t\tcolor: ${isValid?cat.color.uiFontMuted:color.MessageDanger};\n\t\t}\n\t`}
57`,Wrapper=emotion_styled_browser_esm.A.div`
58	${({isValid,addSpacing,width,theme:{cat,color}})=>`\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\tjustify-content: flex-start;\n\t\tgap: ${addSpacing?cat.spacing.s:"0"};\n\t\twidth: ${width||"100%"};\n\n\t\t.ds-textarea {\n\t\t\tbox-shadow: none;\n\t\t\tborder-radius: ${cat.radius.m};\n\t\t\tborder: 1px solid ${isValid?cat.color.uiBorderDark:cat.color.baseRed100};\n\t\t\toutline: 1px solid ${isValid?"transparent":cat.color.baseRed100};\n\n\t\t\t&:hover {\n    \t\t\toutline: 1px solid ${isValid?cat.color.uiBorderDark:cat.color.baseRed100};\n    \t\t\tborder: 1px solid ${isValid?cat.color.uiBorderDark:cat.color.baseRed100};\n\t\t\t}\n\t\t\t\n\t\t\t&:focus {\n\t\t\t\tborder-color: ${color.PrimaryDefault};\n\t\t\t\toutline: 1px solid ${color.PrimaryDefault};\n\t\t\t} \n\t\t}\n\t`}
59`,TextAreaWithMessage=({wrapperWidth,placeholder,isValid=!0,message,labelText,...rest})=>{const{gettext}=(0,use_get_text.z)();return react.createElement(Wrapper,{width:wrapperWidth,isValid,addSpacing:!labelText},react.createElement(AdditionalInfo,{addSpacing:!labelText},react.createElement(Message,{isValid},message)),react.createElement(components.TM,{placeholder:null!=placeholder?placeholder:gettext("Write something..."),labelText,...rest}))},TextAreaWithCharsLimit=({enableInputMaxLimit=!0,maxLength,getRemainingCharsCount,value,...rest})=>{const remainingCharsLength=getRemainingCharsCount?getRemainingCharsCount(value):(value=>!maxLength||maxLength<0?1/0:maxLength-value.length)(value),isValid=remainingCharsLength>=0;return react.createElement(react.Fragment,null,!isValid&&react.createElement(modules.Hg,{name:"socnet-comment-validation-error"}),react.createElement(TextAreaWithMessage,{...rest,value,maxLength:enableInputMaxLimit?maxLength:void 0,isValid,message:String(remainingCharsLength)}))}},98944:(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{CompanySettingsContainer:()=>CompanySettingsContainer});var react=__webpack_require__(96540),react_router=__webpack_require__(56347),es=__webpack_require__(49924),stencil_generated=__webpack_require__(11432),emotion_styled_browser_esm=__webpack_require__(59295),authorize=__webpack_require__(33941),dist=__webpack_require__(71287),design_system_candidates_link=__webpack_require__(67395),labs=__webpack_require__(25231),use_get_text=__webpack_require__(87914),use_session=__webpack_require__(84280);const SIDEBAR_TABS_general="company.detail.basic",SIDEBAR_TABS_channels="company.detail.channel",SIDEBAR_TABS_gamification="company.detail.game",SIDEBAR_TABS_integrations="company.detail.integrations",SIDEBAR_TABS_ad="company.detail.ad",SIDEBAR_TABS_invitations="company.detail.invitations",SIDEBAR_TABS_employeAdvocacy="company.detail.employee-advocacy",SIDEBAR_TABS_onboardingSettings="company.detail.onboarding-settings",SIDEBAR_TABS_saml="company.detail.saml",SIDEBAR_TABS_forSmarpers="company.detail.for-smarpers",SIDEBAR_TABS_postSettings="company.detail.post-settings",SIDEBAR_TABS_postOnBehalfSettings="company.detail.post-on-behalf-settings",SIDEBAR_TABS_AIAssistantSettings="company.detail.ai-assistant-settings",SIDEBAR_TABS_socialInsights="company.detail.social-insights",SIDEBAR_TABS_importingContent="company.detail.importing-content",SIDEBAR_TABS_digestSettings="company.detail.digest",SIDEBAR_TABS_otherSettings="company.detail.otherSettings",SIDEBAR_TABS_shortcuts="company.detail.shortcuts",SIDEBAR_TABS_resources="company.detail.resources",SidebarContainer=(0,emotion_styled_browser_esm.A)(stencil_generated.Re)`
60	min-width: 240px;
61`,StyledLink=(0,emotion_styled_browser_esm.A)(design_system_candidates_link.N)`
62	${({theme:{color,cat}})=>`\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t\tpadding: 14px 20px;\n\t\tgap: 12px;\n\t\tborder-radius: ${cat.spacing.xs};\n\t\tfont-size: ${cat.fontSize.m};\n\t\tline-height: ${cat.lineHeight.h3};\n\n\t\t&,\n\t\t&:link,\n\t\t&:visited,\n\t\t&:hover {\n\t\t\tcolor: ${cat.color.uiFontBase};\n\t\t\ttext-decoration: none;\n\t\t}\n\n\t\t&:hover,\n\t\t&:active,\n\t\t&.active {\n\t\t\tcolor: ${cat.color.uiFontBase};\n\t\t\tbackground-color: ${color.PrimaryLighter};\n\t\t}\n\t`}
63`,{Smarper,Partner,Admin,GroupAdmin,ChannelManager}=dist.u8N,SettingSidebarMenuConnect=(0,es.Ng)((state=>({selectedGroupId:state.Group.selectedGroupId})),{})((({selectedGroupId})=>{var _a,_b;const{gettext}=(0,use_get_text.z)(),{pathname,search}=(0,react_router.zy)(),{session,sessionUtil:{isCompanyLabEnabled,isLabEnabled,hasAdEnabled}}=(0,use_session.w)(),isGroupsDisabled=!session.company.isGroupEnabled,isGroupSettings=Boolean(selectedGroupId)&&!isGroupsDisabled,isCompanySettings=!isGroupSettings,adminRolesWithGroupAdmin=[Smarper,Partner,Admin,GroupAdmin],adminRoles=[Smarper,Partner,Admin],adminRolesWithChannelManager=[Smarper,Partner,Admin,ChannelManager];let authorizedRoles=adminRoles;isGroupSettings&&(authorizedRoles=adminRolesWithGroupAdmin);const isInvitationsPageAllowed=!(null===(_a=session.company)||void 0===_a?void 0:_a.isSamlEnabled)||(null===(_b=session.company)||void 0===_b?void 0:_b.isNonSamlAuthEnabled),CompanySettingsMenu=[{id:SIDEBAR_TABS_general,title:gettext("General"),path:"",icon:"info-circle-outlined",isShownWhen:!0,isShownFor:authorizedRoles},{id:SIDEBAR_TABS_channels,title:gettext("Channels"),path:"/channel/",icon:"w-feed-outlined",isShownWhen:!0,isShownFor:selectedGroupId?[...adminRolesWithGroupAdmin,ChannelManager]:adminRolesWithChannelManager},{id:SIDEBAR_TABS_postSettings,title:gettext("Post Settings"),path:"/post-settings",icon:"paperplane-tilt-outlined",isShownWhen:isCompanySettings,isShownFor:authorizedRoles},{id:SIDEBAR_TABS_postOnBehalfSettings,title:gettext("Post on behalf"),path:"/post-on-behalf-settings",icon:"w-colleagues-new-outlined",isShownWhen:isCompanySettings,isShownFor:authorizedRoles},{id:SIDEBAR_TABS_socialInsights,title:gettext("Social insights"),path:"/social-insights",icon:"bar-chart-outlined",isShownWhen:isCompanySettings&&session.company.isSocialInsightsEnabled,isS
63hownFor:authorizedRoles},{id:SIDEBAR_TABS_AIAssistantSettings,title:gettext("AI assistant"),path:"/ai-assistant-settings",icon:"ai-outlined",isShownWhen:isCompanySettings,isShownFor:authorizedRoles},{id:SIDEBAR_TABS_importingContent,title:gettext("Importing Content"),path:"/content",icon:"arrow-pointing-import-outlined",isShownWhen:!0,isShownFor:isLabEnabled(labs.Wy)?adminRolesWithGroupAdmin:adminRoles},{id:SIDEBAR_TABS_invitations,title:gettext("Invitations & Registration"),path:"/invitations",icon:"w-welcome-outlined",isShownWhen:(isGroupsDisabled||isGroupSettings)&&isInvitationsPageAllowed,isShownFor:authorizedRoles},{id:SIDEBAR_TABS_employeAdvocacy,title:gettext("Employee Advocacy"),path:"/employee-advocacy",icon:"w-online-users-outlined",isShownWhen:isCompanySettings,isShownFor:authorizedRoles},{id:SIDEBAR_TABS_onboardingSettings,title:gettext("Onboarding settings"),path:"/onboarding-settings",icon:"results-outlined",isShownWhen:isCompanySettings,isShownFor:authorizedRoles},{id:SIDEBAR_TABS_gamification,title:gettext("Gamification"),path:"/gamification",icon:"star-circle-outlined",isShownWhen:isCompanySettings&&!session.company.isGamificationDisabled,isShownFor:authorizedRoles},{id:SIDEBAR_TABS_integrations,title:gettext("Integrations"),path:"/integrations",icon:"module-plus-outlined",isShownWhen:isCompanySettings&&session.company.contentBooster,isShownFor:authorizedRoles},{id:SIDEBAR_TABS_saml,title:gettext("Single Sign-On"),path:"/saml",icon:"lock-outlined",isShownWhen:isCompanySettings&&session.company.isSAMLSelfServiceEnabled,isShownFor:authorizedRoles},{id:SIDEBAR_TABS_ad,title:gettext("Active directory"),path:"/ad",icon:"lock-outlined",isShownWhen:isCompanySettings&&hasAdEnabled(),isShownFor:authorizedRoles},{id:SIDEBAR_TABS_resources,title:gettext("Resources"),path:"/resources",icon:"app-directory",isShownWhen:!session.company.isHideResourcesEnabled&&isCompanySettings&&!isGroupsDisabled,isShownFor:adminRoles},{id:SIDEBAR_TABS_shortcuts,title:gettext("Home Screen"),path:"/shortcuts",icon:"w-wiki-article-new-outlined",isShownWhen:!0,isShownFor:authorizedRoles},{id:SIDEBAR_TABS_forSmarpers,title:gettext("For Smarpers"),path:"/smarpers",icon:"w-wiki-article-new-outlined",isShownWhen:isCompanySettings,isShownFor:[Smarper]},{id:SIDEBAR_TABS_digestSettings,title:gettext("Email Digest"),path:"/digest",icon:"mail-outlined",isShownWhen:isGroupsDisabled||isGroupSettings,isShownFor:adminRolesWithGroupAdmin},{id:SIDEBAR_TABS_otherSettings,title:gettext("Other Settings"),path:"/other-settings",icon:"brush-brackets-outlined",isShownWhen:isLabEnabled(labs.fS)&&isGroupSettings,isShownFor:adminRolesWithGroupAdmin}];return react.createElement(SidebarContainer,{className:"cat-border"},react.createElement("nav",null,react.createElement("ul",null,CompanySettingsMenu.filter((item=>item.isShownWhen)).map((({id,isShownFor,icon,title,path})=>react.createElement("li",{key:id},react.createElement(authorize._,{roles:isShownFor},react.createElement(StyledLink,{to:`/company/${session.company._id}${path}${search}`,className:pathname===`/company/${session.company._id}${path}`?"active":"","data-testid":"setting-sidebar-menu-item"},react.createElement(stencil_generated.k0,{icon,size:"l"}),title))))))))}));var free_solid_svg_icons=__webpack_require__(66188),index_es=__webpack_require__(46784),redux=__webpack_require__(82960),api=__webpack_require__(56433),alert_utils=__webpack_require__(20987),loader=__webpack_require__(95259),util=__webpack_require__(58151),components=__webpack_require__(10046),effects=__webpack_require__(61412),design_system_components=__webpack_require__(66931),tracking_utils=__webpack_require__(48458);const defaultProviderSpecificSettings={[dist.J3K.OpenAI]:{version:Object.values(dist.A)[0],apiKey:""},[dist.J3K.AzureOpenAI]:{version:"",azureBaseUrl:"",apiKey:""},[dist.J3K.Vertex]:{version:"",vertexLocation:void 0,apiKey:""},[dist.J3K.HaiiloAI]:{}},defaultSettings={isEnabled:!1,isForEveryone:!1,apiKeyHint:"",provider:dist.J3K.OpenAI,isGroupBased:!1,groupIds:[],...defaultProviderSpecificSettings[dist.J3K.OpenAI]},emptyErrors={provider:"",version:"",azureBaseUrl:"",vertexLocation:"",apiKey:"",groupsSelection:""},toSelectOption=value=>({label:value,value}),toSelectOptionsGeneric=values=>values.map((value=>({label:value,value}))),Description=emotion_styled_browser_esm.A.div`
64	font-size: 1rem;
65	line-height: 1.25rem;
66	max-width: 550px;
67	margin-bottom: 20px;
68`,InputContainer=emotion_styled_browser_esm.A.div`
69	flex: 0.5;
70`,SectionTitle=emotion_styled_browser_esm.A.span`
71	color: ${props=>props.disabled?"#9b9b9b":props.theme.color.InkDefault};
72	font-size: 1rem;
73	font-weight: bold;
74	margin-bottom: 8px;
75`,RadioButtonWithHint=emotion_styled_browser_esm.A.div`
76	display: flex;
77`,KeyFileName=emotion_styled_browser_esm.A.span`
78	line-height: 32px;
79	margin-left: 5px;
80`,ErrorMessage=emotion_styled_browser_esm.A.div`
81	color: ${p=>p.theme.color.MessageDanger};
82`,MultiSelectContainer=emotion_styled_browser_esm.A.div`
83	width: 100%;
84
85	.ds-multi-select__control {
86		background-color: white;
87	}
88`,transformSelectedGroupsToOptions=(groupIds,allGroupsOptions)=>groupIds?groupIds.reduce(((options,groupId)=>{const group=allGroupsOptions.find((g=>g.value===groupId));return group&&options.push(group),options}),[]):[],AVASettings=(0,es.Ng)((state=>({groupList:Object.keys(state.Group.groupList).map((groupId=>(({_id,name})=>({value:_id,label:name}))(state.Group.groupList[groupId].general)))})),(dispatch=>(0,redux.bindActionCreators)({fetchGroups:effects.pl},dispatch)))((({groupList,fetchGroups})=>{const{gettext}=(0,use_get_text.z)(),{session:{company}}=(0,use_session.w)(),[initialValues,setInitialValues]=react.useState(defaultSettings),[formValues,setFormValues]=react.useState({...defaultSettings,selectedGroups:[]}),[vertexVersionsOptions,setVertexVersionsOptions]=react.useState([]),[vertexLocationsOptions,setVertexLocationsOptions]=react.useState([]),[vertexVersionToLocations,setVertexVersionToLocations]=react.useState({}),[formErrors,setFormErrors]=react.useState(emptyErrors),[isFormLoading,setIsFormLoading]=react.useState(!0),[isFormSaving,setIsFormSaving]=react.useState(!1),[isAzureBaseUrlSaved,setIsAzureBaseUrlSaved]=react.useState(!1),[keyFileName,setKeyFileName]=react.useState(""),keyFileEl=react.useRef(null),[menuIsOpen,setMenuIsOpen]=react.useState(!1);(0,react.useEffect)((()=>{(async()=>{var _a,_b;const settings=null!==(_a=await(async(companyId,gettext)=>{const[response,error]=await(0,util.Oi)((()=>api._K.retrieveCompanyAISettings(companyId)));if(!error)return response.data;alert_utils.A.errorFromApi(error,gettext)})(company._id,gettext))&&void 0!==_a?_a:defaultSettings;let nextFormValues={...settings,selectedGroups:transformSelectedGroupsToOptions(settings.groupIds,groupList),apiKey:""};const catalog=await(async(companyId,gettext)=>{var _a,_b;const[response,error]=await(0,util.Oi)((()=>api._K.retrieveSupportedAIVersions(companyId)));return error?(alert_utils.A.errorFromApi(error,gettext),[]):(null!==(_b=null===(_a=null==response?void 0:response.data)||void 0===_a?void 0:_a.vertex)&&void 0!==_b?_b:[]).map((entry=>({version:entry.version,vertexLocations:entry.vertexLocations})))})(company._id,gettext);if(Array.isArray(catalog)&&catalog.length>0){const versions=catalog.map((o=>o.version)),versionToLocs=Object.fromEntries(catalog.map((o=>[o.version,o.vertexLocations])));if(setVertexVersionsOptions(toSelectOptionsGeneric(versions)),setVertexVersionToLocations(versionToLocs),nextFormValues.provider===dist.J3K.Vertex){const defaultVersion=nextFormValues.version||versions[0],locs=null!==(_b=versionToLocs[defaultVersion])&&void 0!==_b?_b:[];setVertexLocationsOptions(toSelectOptionsGeneric(locs)),nextFormValues={...nextFormValues,version:defaultVersion,vertexLocation:nextFormValues.vertexLocation||locs[0]}}}setInitialValues({...nextFormValues}),setFormValues(nextFormValues),nextFormValues.provider===dist.J3K.AzureOpenAI&&nextFormValues.azureBaseUrl&&setIsAzureBaseUrlSaved(!0),setIsFormLoading(!1)})()}),[company._id]),(0,react.useEffect)((()=>{fetchGroups()}),[fetchGroups]),(0,react.useEffect)((()=>{setFormValues((prev=>({...prev,selectedGroups:transformSelectedGroupsToOptions(initialValues.groupIds,groupList)})))}),[groupList,initialValues.groupIds]);const handleUpdateIsForEveryone=e=>{const{checked,value}=e.target,isForEveryone="isForEveryone"===value&&checked;setFormValues((prev=>({...prev,isForEveryone})))};const handleUpdateTextInput=(name,value)=>{setFormValues((prev=>({...prev,[name]:value}))),setFormErrors((prev=>({...prev,[name]:""})))},sendMixpanelEventsForChanges=newValues=>{var _a;(newValues=>newValues.isEnabled!==initialValues.isEnabled)(newValues)&&newValues.isEnabled&&tracking_utils.A.event("Activate AI in company settings",{"Selected AI provider":newValues.provider}),newValues.apiKey&&tracking_utils.A.event("Add AI API key"),newValues.isGroupBased&&newValues.isGroupBased!==initialValues.isGroupBased&&tracking_utils.A.event("Enable AI for specific groups",{"Number of selected groups":null===(_a=newValues.groupIds)||void 0===_a?void 0:_a.length})};if(isFormLoading)return react.createElement(loader.a,{isShow:!0}
88);const isDisabled=!formValues.isEnabled||isFormSaving,isGroupsSelectionDisabled=isDisabled||!formValues.isGroupBased,isGroupsSelectionVisible=formValues.isGroupBased,AIProvidersOptions=toSelectOptionsGeneric([dist.J3K.OpenAI,dist.J3K.AzureOpenAI,dist.J3K.Vertex,...company.isHaiiloAIEnabled?[dist.J3K.HaiiloAI]:[]]);return react.createElement(design_system_components.Zp,null,react.createElement(design_system_components.Zp.HeaderTitle,{title:gettext("AI assistant")}),react.createElement(design_system_components.Zp.Content,null,react.createElement(components.fI,null,react.createElement(components.VP,null,react.createElement(design_system_components.Sc,{checkboxOnTheRight:!0,value:formValues.isEnabled,name:"isEnabled",labelText:gettext("Activate AVA"),dataTestId:"avaEnabled-id",onChange:e=>{const{checked}=e.target;checked||setFormErrors(emptyErrors),setFormValues((prev=>({...prev,isEnabled:checked})))},disabled:isFormSaving}))),react.createElement(Description,null,gettext("AVA is your artificial virtual assistant while writing your share messages. When activated, AVA will be available under your share message input field.")),react.createElement(components.fI,null,react.createElement(components.VP,null,react.createElement(SectionTitle,{disabled:isDisabled},gettext("Provider")),react.createElement(design_system_components.dh,{labelText:gettext("Choose which provider you want to use"),disabled:isDisabled}),react.createElement(components.fI,{style:{paddingBottom:0}},react.createElement(InputContainer,null,react.createElement(design_system_components.l6,{style:"withBorder",value:toSelectOption(formValues.provider),options:AIProvidersOptions,onChange:selectedOption=>{var _a;
88const provider=selectedOption.value,newFormValues=function(provider,vertexVersionsOptions,vertexVersionToLocations){var _a;const base={...defaultSettings,isEnabled:formValues.isEnabled,isForEveryone:formValues.isForEveryone,isGroupBased:formValues.isGroupBased,groupIds:formValues.groupIds,selectedGroups:formValues.selectedGroups,provider,apiKey:"",apiKeyHint:initialValues.apiKeyHint};if(provider===dist.J3K.OpenAI)base.version=Object.values(dist.A)[0];else if(provider===dist.J3K.AzureOpenAI)base.version="",base.azureBaseUrl="";else if(provider===dist.J3K.Vertex){const versions=vertexVersionsOptions.map((v=>v.value));if(versions.length>0){const ver=versions[0],locs=null!==(_a=vertexVersionToLocations[ver])&&void 0!==_a?_a:[];base.version=ver,base.vertexLocation=locs[0]}else base.version="",base.vertexLocation=void 0}return base}(provider,vertexVersionsOptions,vertexVersionToLocations);if(provider===dist.J3K.Vertex){const versions=vertexVersionsOptions.map((v=>v.value));if(versions.length>0){const ver=versions[0],locs=null!==(_a=vertexVersionToLocations[ver])&&void 0!==_a?_a:[];setVertexLocationsOptions(toSelectOptionsGeneric(locs))}else setVertexLocationsOptions([])}setFormValues(newFormValues),setInitialValues({...newFormValues,apiKeyHint:""}),setKeyFileName(""),setIsAzureBaseUrlSaved(!1),setFormErrors({...emptyErrors})},disabled:isDisabled}),react.createElement(ErrorMessage,null,formErrors.provider)),formValues.provider!==dist.J3K.HaiiloAI&&react.createElement(react.Fragment,null,react.createElement(InputContainer,null,formValues.provider===dist.J3K.AzureOpenAI?react.createElement(design_system_components.TZ,{type:"text",value:formValues.version,style:{width:"100%"},onChange:e=>{const{value}=e.target;handleUpdateTextInput("version",value)},disabled:isDisabled,placeholder:gettext("Deployment name")}):react.createElement(design_system_components.l6,{style:"withBorder",value:formValues.version?toSelectOption(formValues.version):void 0,options:(provider=>{if(provider!==dist.J3K.AzureOpenAI&&provider!==dist.J3K.HaiiloAI)return provider===dist.J3K.Vertex?vertexVersionsOptions:toSelectOptionsGeneric(Object.values(dist.A))})(formValues.provider),onChange:selectedOption=>formValues.provider===dist.J3K.Vertex?(selectedOption=>{var _a;const nextVersion=selectedOption.value,locs=null!==(_a=vertexVersionToLocations[nextVersion])&&void 0!==_a?_a:[];setVertexLocationsOptions(toSelectOptionsGeneric(locs)),setFormValues((prev=>{const nextLocation=prev.vertexLocation&&locs.includes(prev.vertexLocation)?prev.vertexLocation:locs[0];return prev.version===nextVersion&&prev.vertexLocation===nextLocation?prev:{...prev,version:nextVersion,vertexLocation:nextLocation}})),setFormErrors((prev=>({...prev,version:""})))})(selectedOption):(selectedOption=>{setFormValues((prev=>({...prev,version:selectedOption.value}))),setFormErrors((prev=>({...prev,version:""})))})(selectedOption),disabled:isDisabled}),react.createElement(ErrorMessage,null,formErrors.version)),formValues.provider===dist.J3K.AzureOpenAI&&react.createElement(InputContainer,null,react.createElement(design_system_components.TZ,{type:"text",value:formValues.azureBaseUrl,style:{width:"100%"},onChange:e=>{const{value}=e.target;isAzureBaseUrlSaved&&""==formValues.apiKey&&(setInitialValues((init=>({...init,apiKeyHint:""}))),setIsAzureBaseUrlSaved(!1)),handleUpdateTextInput("azureBaseUrl",value)},disabled:isDisabled,placeholder:gettext("Project endpoint")}),react.createElement(ErrorMessage,null,formErrors.azureBaseUrl)),formValues.provider===dist.J3K.Vertex&&react.createElement(InputContainer,null,react.createElement(design_system_components.l6,{style:"withBorder",options:vertexLocationsOptions,value:formValues.vertexLocation?toSelectOption(formValues.vertexLocation):void 0,onChange:selectedOption=>{const nextLocation=selectedOption.value;setFormValues((prev=>({...prev,vertexLocation:nextLocation}))),setFormErrors((prev=>({...prev,vertexLocation:""})))},disabled:isDisabled}),react.createElement(ErrorMessage,null,formErrors.vertexLocation)))))),formValues.provider!==dist.J3K.HaiiloAI&&react.createElement(components.fI,null,react.createElement(components.VP,null,react.createElement(SectionTitle,{disabled:isDisabled},gettext("API key")),formValues.provider===dist.J3K.Vertex?react.createElement(react.Fragment,null,react.createElement(design_system_components.dh,{required:!initialValues.apiKeyHint,labelText:initialValues.apiKeyHint?gettext("Leave untouched to keep your current Vertex key file. To use another one, choose it and click Save."):gettext("Choose your Vertex key file"),disabled:isDisabled}),react.createElement(components.fI,null,react.createElement("input",{type:"file",title:"key-file-input",accept:".json",onChange:async({target:{files}})=>{try{if(!files||void 0===files[0])return;const fileContent=await files[0].text();setKeyFileName(files[0].name),setFormValues((prev=>({...prev,apiKey:fileContent}))),setFormErrors((prev=>({...prev,apiKey:""})))}catch(err){alert_utils.A.errorFromApi(err,gettext)}},ref:keyFileEl,style:{display:"none"}}),react.createElement(design_system_components.$n,{text:gettext("Choose key file"),style:"secondary",onClick:()=>{var _a;return null===(_a=keyFileEl.current)||void 0===_a?void 0:_a.click()},disabled:isDisabled}),react.createElement(KeyFileName,null,keyFileName))):react.createElement(react.Fragment,null,react.createElement(design_system_components.dh,{required:!initialValues.apiKeyHint,labelText:initialValues.apiKeyHint?gettext("Leave the field blank to keep your current API key. To use another API key, input it and click Save."):gettext("Enter your API key, given to you by your provider"),disabled:isDisabled}),react.createElement(design_system_components.TZ,{type:"text",value:formValues.apiKey,placeholder:initialValues.apiKeyHint?`${gettext("Current API key:")} ${initialValues.apiKeyHint}
88`:"",name:"apiKey",dataTestId:"apiKey-id",onChange:e=>{const{value}=e.target;setFormValues((prev=>({...prev,apiKey:value}))),(value||initialValues.apiKeyHint)&&setFormErrors((prev=>({...prev,apiKey:""})))},disabled:isDisabled})),react.createElement(ErrorMessage,null,formErrors.apiKey))),react.createElement(components.fI,null,react.createElement(components.VP,null,react.createElement(RadioButtonWithHint,null,react.createElement(design_system_components.a,{dataTestId:"avaForAdmins-id",label:gettext("Activate for admin users"),name:"ADMINS_OR_EVERYONE",value:"isForAdminsOnly",checked:!formValues.isForEveryone,onChange:handleUpdateIsForEveryone,disabled:isDisabled}),react.createElement(design_system_components.dh,{labelText:"",hintElement:gettext("Selecting this option AI assistant will be enabled only for the admin users"),disabled:isDisabled})),react.createElement(design_system_components.a,{dataTestId:"avaForEveryone-id",label:gettext("Activate for all users"),name:"ADMINS_OR_EVERYONE",value:"isForEveryone",checked:Boolean(formValues.isForEveryone),onChange:handleUpdateIsForEveryone,disabled:isDisabled}))),react.createElement(components.fI,null,react.createElement(components.VP,null,react.createElement(SectionTitle,{disabled:isDisabled},gettext("Group activation")),react.createElement(design_system_components.Sc,{checkboxOnTheRight:!0,value:formValues.isGroupBased,name:"isGroupBased",labelText:gettext("Activate for specific groups"),onChange:e=>{const{checked}=e.target;setFormValues((prev=>({...prev,isGroupBased:checked})))},disabled:isDisabled}))),isGroupsSelectionVisible&&react.createElement(components.fI,null,react.createElement(components.VP,null,react.createElement(SectionTitle,{disabled:isGroupsSelectionDisabled},gettext("Select group")),react.createElement(design_system_components.dh,{labelText:gettext("AI will only be activated for these groups"),disabled:isGroupsSelectionDisabled}),react.createElement(MultiSelectContainer,null,react.createElement(design_system_components.KF,{options:groupList,value:formValues.selectedGroups,menuIsOpen,placeholder:gettext("Select groups"),isDisabled:isGroupsSelectionDisabled,inputTagProps:{renderIcon:()=>react.createElement(index_es.g,{icon:free_solid_svg_icons.gdJ})},onChange:value=>{setFormValues((prev=>({...prev,selectedGroups:value}))),setFormErrors((prev=>({...prev,groupsSelection:""})))},onMenuOpen:()=>setMenuIsOpen(!0),onMenuClose:()=>setMenuIsOpen(!1),maxMenuHeight:200})),react.createElement(ErrorMessage,null,formErrors.groupsSelection)))),react.createElement(design_system_components.Zp.FooterActions,null,react.createElement(design_system_components.$n,{onClick:async e=>{e.preventDefault();const errors=(()=>{const errors={...emptyErrors},{isEnabled,provider,version,azureBaseUrl,apiKey,vertexLocation,isGroupBased,selectedGroups}=formValues;return isEnabled?(provider||(errors.provider=gettext("Provider is required")),company.isHaiiloAIEnabled||formValues.provider!==dist.J3K.HaiiloAI||(errors.provider=gettext("Haiilo AI is not enabled for your platform. Please contact your CSM to purchase this add-on")),version||formValues.provider===dist.J3K.HaiiloAI||(errors.version=provider===dist.J3K.AzureOpenAI?gettext("Deployment name is required"):gettext("Version is required")),provider!==dist.J3K.AzureOpenAI||azureBaseUrl||(errors.azureBaseUrl=gettext("Project endpoint is required")),provider!==dist.J3K.Vertex||vertexLocation||(errors.vertexLocation=gettext("Location is required")),apiKey||initialValues.apiKeyHint||formValues.provider===dist.J3K.HaiiloAI||(errors.apiKey=gettext("API key is required")),isGroupBased&&0===selectedGroups.length&&(errors.groupsSelection=gettext("At least one group is required")),errors):errors})();if(!(errors=>Object.values(errors).every((error=>!error)))(errors))return void setFormErrors(errors);setIsFormSaving(!0);const{apiKey,apiKeyHint,selectedGroups,...updatedValues}=formValues;apiKey&&(updatedValues.apiKey=apiKey),selectedGroups.length>0&&(updatedValues.groupIds=selectedGroups.map((option=>option.value)));const[response,error]=await(0,util.Oi)((()=>api._K.modifyCompanyAISettings(company._id,updatedValues)));if(error)return alert_utils.A.errorFromApi(error,gettext),void setIsFormSaving(!1);setIsFormSaving(!1),sendMixpanelEventsForChanges(updatedValues);const newValues=response.data;setFormValues((prev=>({...prev,...newValues,selectedGroups:transformSelectedGroupsToOptions(newValues.groupIds,groupList),apiKey:""}))),setInitialValues(newValues),newValues.provider===dist.J3K.AzureOpenAI&&newValues.azureBaseUrl&&setIsAzureBaseUrlSaved(!0),alert_utils.A.success(gettext("AI assistant configuration was successfully updated"))},isLoading:isFormSaving,style:"secondary",text:gettext("Save")})))}
88));var post_on_behalf_settings=__webpack_require__(32931),typesafe_actions_umd_production=__webpack_require__(77475),string_utils=__webpack_require__(73225),actions=__webpack_require__(30508);const updateCompany=async(companyId,updatedCompany)=>{const{supportedLang}=updatedCompany,updatedCompanyRequest=updatedCompany;supportedLang&&(updatedCompanyRequest.supportedLang=supportedLang.map((({value})=>value)));return(await api._K.modifyCompany(companyId,updatedCompanyRequest)).data},updateCompanySocnet=async(companyId,socnet)=>(await api._K.modifyCompanySocnet(companyId,socnet.Name,socnet),socnet),createCompanySocnet=async(companyId,socnet)=>{await api._K.createCompanySocnet(companyId,socnet.Name);const createdSocnet={...socnet,CompanyId:companyId};return await updateCompanySocnet(companyId,createdSocnet),createdSocnet};var toast=__webpack_require__(62614),success_error_effects=__webpack_require__(21507),company_actions=__webpack_require__(45569);const fetchCompany=(companyId,forceFetch=!1)=>async(dispatch,getState)=>{try{const{Company:{company,isFetching}}=getState();if(isFetching||company&&!forceFetch)return;dispatch(company_actions.uF());const response=await(async companyId=>(await api._K.retrieveCompany(companyId)).data)(companyId);dispatch(company_actions.dw(response))}catch(error){dispatch(company_actions.gJ(error)),dispatch((0,success_error_effects.V)((0,typesafe_actions_umd_production.getType)(company_actions.uF),error,"fetchCompany"))}},effects_updateCompany=(companyId,updatedCompany,successMessage)=>async dispatch=>{try{dispatch(company_actions.JT()),await updateCompany(companyId,updatedCompany),dispatch(company_actions.Iy(updatedCompany)),dispatch((0,actions.EL)(updatedCompany)),""!==successMessage&&dispatch((0,success_error_effects.y)((0,typesafe_actions_umd_production.getType)(company_actions.JT),successMessage))}catch(error){dispatch(company_actions.jK(error)),dispatch((0,success_error_effects.V)((0,typesafe_actions_umd_production.getType)(company_actions.JT),error,"updateCompany"))}},deleteImportContentConnection=(connectionUrl,successMessage,fallbackErrorMessage)=>async(dispatch,getState)=>{var _a,_b;const{Company:{company}}=getState(),[,error]=await(0,util.Oi)((()=>api._K.deleteContentImportConnection(company._id,{urls:[connectionUrl]})));if(error)return(0,toast.Kf)({message:null!==(_a=(0,string_utils.fi)(error))&&void 0!==_a?_a:fallbackErrorMessage}),void tracking_utils.A.error(null!==(_b=(0,string_utils.fi)(error))&&void 0!==_b?_b:"Failed to delete content import 
88connection","deleteImportContentConnection",(0,string_utils.hT)(error));const newContentImportConnectionsList=Object.keys(company.feedMap).reduce(((newImportConnectionsList,source)=>(newImportConnectionsList[source]=company.feedMap[source].filter((item=>item.url!==connectionUrl)),newImportConnectionsList)),{});dispatch(company_actions.Iy({feedMap:newContentImportConnectionsList})),(0,toast.tP)({message:successMessage})},ResourcesSettings_mapDispatchToProps={updateCompany:effects_updateCompany},ResourcesSettings=(0,es.Ng)(null,ResourcesSettings_mapDispatchToProps)((props=>{const{gettext}=(0,use_get_text.z)(),{session}=(0,use_session.w)(),[resourceViewAll,setResourceViewAll]=(0,react.useState)(session.company.resourceViewAll),[isSubmitting,setIsSubmitting]=(0,react.useState)(!1);return react.createElement(react.Fragment,null,react.createElement(design_system_components.Zp,null,react.createElement(design_system_components.Zp.HeaderTitle,{title:gettext("Resources")}),react.createElement(design_system_components.Zp.Content,null,react.createElement(components.VP,null,react.createElement(components.fI,null,react.createElement(design_system_components.dh,{labelText:gettext("If you want to share resources across Groups then you should make the Resources visible to all.")})),react.createElement(components.fI,null,react.createElement(design_system_components.hK,{dir:"y",size:"xxl"}),react.createElement(design_system_components.dh,{labelText:gettext("Make Resources which include pages and files visible to all")}),react.createElement(design_system_components.hK,{dir:"x",size:"m"}),react.createElement(design_system_components.L$,{onChange:()=>{setResourceViewAll(!resourceViewAll)},value:resourceViewAll})),react.createElement(design_system_components.hK,{dir:"y",size:"xxxxxxl"}),react.createElement(components.fI,null,react.createElement(design_system_components.dh,{labelText:gettext("Please note, Groups with limited access cannot have access to all Resources.")})))),react.createElement(design_system_components.Zp.FooterActions,null,react.createElement(design_system_components.$n,{onClick:async()=>{setIsSubmitting(!0);const{updateCompany}=props;await updateCompany(session.company._id,{resourceViewAll},gettext("Resources settings successfully updated")),setIsSubmitting(!1)},isLoading:isSubmitting,style:"secondary",text:gettext("Save")}))))}));var file_download=__webpack_require__(5419),file_download_default=__webpack_require__.n(file_download),settings_card=__webpack_require__(91066),keycloak_utils=__webpack_require__(35123);const TextColumn=emotion_styled_browser_esm.A.div`
89	width: 500px;
90`,SamlNewSettings=()=>{var _a,_b;const{gettext}=(0,use_get_text.z)(),dispatch=(0,es.wA)(),{session,sessionUtil:{isCompanyLabEnabled}}=(0,use_session.w)(),isNonSamlEnabled=null===(_a=session.company)||void 0===_a?void 0:_a.isNonSamlAuthEnabled,isSamlEnabled=null===(_b=session.company)||void 0===_b?void 0:_b.isSamlEnabled,isKeycloakEnabled=!session.company.useLegacySamlLogin,[isDownloading,setIsDownloading]=react.useState(!1),[isUploading,setIsUploading]=react.useState(!1),[isFileUploaded,setIsFileUploaded]=react.useState(!1),[isTesting,setIsTesting]=react.useState(!1),[showWarningDialog,setShowWarningDialog]=react.useState(!1),inputFileEl=react.useRef(null),cancelWarningDialog=()=>{setShowWarningDialog(!1)},dispatchToggleSaml=samlEnabled=>{dispatch(((companyId,samlEnabled,isNonSamlEnabled,successMessage)=>async(dispatch,getState)=>{try{dispatch(company_actions.JT());const settingsUpdate={samlEnabled,nonSamlEnabled:isNonSamlEnabled},formerLabsUpdate={isSamlEnabled:samlEnabled,isNonSamlAuthEnabled:!!samlEnabled&&isNonSamlEnabled};await updateCompany(companyId,{...settingsUpdate,...formerLabsUpdate}),dispatch(company_actions.Iy(formerLabsUpdate)),dispatch((0,actions.EL)(formerLabsUpdate)),dispatch((0,success_error_effects.y)((0,typesafe_actions_umd_production.getType)(company_actions.JT),successMessage))}catch(error){dispatch(company_actions.jK(error)),dispatch((0,success_error_effects.V)((0,typesafe_actions_umd_production.getType)(company_actions.JT),error,"toggleSaml"))}})(session.company._id,samlEnabled,isNonSamlEnabled,gettext("Saml is "+(samlEnabled?"enabled":"disabled"))))};return react.createElement(react.Fragment,null,react.createElement(settings_card.K,{title:gettext("Single Sign-On"),dataTestId:"saml-settings-card"},react.createElement("div",{className:"cat-flex cat-mb-l"},react.createElement(stencil_generated.Jv,{color:"warning"},gettext("SAML configuration made before June 2, 2025 will soon be deprecated."),react.createElement("br",null),gettext("Please go through the steps below to update your configuration."))),react.createElement("ol",{className:"cat-flex-col cat-gap-l","data-testid":"saml-settings-steps"},react.createElement("li",{className:"cat-flex-row cat-items-end","data-testid":"saml-settings-step-1"},react.createElement(TextColumn,null,react.createElement("span",{className:"cat-h5 cat-bold"},gettext("Step 1")),react.createElement("label",{className:"cat-label cat-muted cat-mb-0","data-testid":"saml-settings-download-metadata-label"},gettext("Download Haiilo metadata and continue editing on your IdP"))),react.createElement(stencil_generated.B$,{onClick:async()=>{var _a;setIsDownloading(!0);const[response,error]=await(0,util.Oi)((async()=>await api.Ut.samlGetHaiiloKeycloakMetadata()));if(setIsDownloading(!1),error)return(0,toast.Kf)({message:(0,string_utils.fi)(error)||gettext("Failed to download metadata")}),void tracking_utils.A.error(null!==(_a=(0,string_utils.fi)(error))&&void 0!==_a?_a:"Failed to download metadata","SamlNewSettings.getConfiguration",(0,string_utils.hT)(error));file_download_default()(response.data,"haiilo_metadata.xml")},loading:isDownloading,icon:"download-outlined",variant:"filled",color:"primary",nativeAttributes:{"data-testid":"saml-settings-download-metadata-button"}},gettext("Download metadata file"))),react.createElement("li",{className:"cat-flex-row cat-items-end","data-testid":"saml-settings-step-2"},react.createElement(TextColumn,null,react.createElement("span",{className:"cat-h5 cat-bold"},gettext("Step 2")),react.createElement("label",{className:"cat-label cat-muted cat-mb-0","data-testid":"saml-settings-upload-config-label"},gettext("Upload your metadata file downloaded from your IdP"))),react.createElement("div",null,react.createElement(stencil_generated.B$,{onClick:()=>{var _a;null===(_a=inputFileEl.current)||void 0===_a||_a.click()},loading:isUploading,icon:"upload-outlined",variant:"filled",color:"primary",nativeAttributes:{"data-testid":"saml-settings-upload-config-button"}},gettext("Upload metadata file")),react.createElement("input",{type:"file",accept:"text/xml",style:{display:"none"},onChange:async({target:{files}})=>{var _a;if(!files||0===files.length)return;setIsUploading(!0);const[,error]=await(0,util.Oi)((async()=>{const idpMetadata=await files[0].text();await api.Ut.samlUpdateKeycloakConfiguration({idpMetadata})}));if(setIsUploading(!1),error)return(0,toast.Kf)({message:(0,string_utils.fi)(error)||gettext("Failed to upload configuration file")}),void tracking_utils.A.error(null!==(_a=(0,string_utils.fi)(error))&&void 0!==_a?_a:"Failed to upload configuration file","SamlNewSettings.handleSelectedConfigurationFile",(0,string_utils.hT)(error));setIsFileUploaded(!0)},ref:inputFileEl,"data-testid":"saml-settings-upload-config-input"}))),react.createElement("li",{className:"cat-flex-row cat-items-end","data-testid":"saml-settings-step-3"},react.createElement(TextColumn,null,react.createElement("span",{className:"cat-h5 cat-bold"},gettext("Step 3")),react.createElement("label",{className:"cat-label cat-muted cat-mb-0","data-testid":"saml-settings-test-config-label"},gettext("Test new configuration by clicking test button and observing successful login on the page which will open"))),react.createElement(stencil_generated.B$,{loading:isTesting,disabled:!isFileUploaded,onClick:async()=>{var _a;let loginUrl;setIsTesting(!0);try{loginUrl=await(0,keycloak_utils.l)(session.company._id,"account",(0,keycloak_utils.r)(session.company.ShareSubdomain))}catch(error){return setIsTesting(!1),(0,toast.Kf)({message:error.error}),void tracking_utils.A.error(null!==(_a=error.error)&&void 0!==_a?_a:"Failed to get Keycloak redirect URL","SamlNewSettings.testConfiguration")}window.open(loginUrl,"_blank"),setIsTesting(!1)},variant:"filled",color:"primary",nativeAttributes:{"data-testid":"saml-settings-test-config-button"}},gettext("Test new configuration"))),react.createElement("li",{className:"cat-flex-col","data-testid":"saml-settings-step-4"},react.createElement("span",{className:"cat-h5 cat-bold"},gettext("Step 4")),react.createElement("div",{className:"cat-flex-row cat-items-center cat-mt-xs"},react.createElement(design_system_components.L$,{onChange:newValue=>
90{const shouldUseLegacySamlLogin=!newValue,successMessage=gettext(shouldUseLegacySamlLogin?"New configuration is disabled":"New configuration is enabled");dispatch(((companyId,updatedValue,successMessage)=>async dispatch=>{dispatch(company_actions.JT());try{const changes={useLegacySamlLogin:updatedValue};await updateCompany(companyId,changes),dispatch(company_actions.Iy(changes)),dispatch((0,actions.EL)(changes)),(0,success_error_effects.y)((0,typesafe_actions_umd_production.getType)(company_actions.JT),successMessage)(dispatch)}catch(error){dispatch(company_actions.jK(error)),(0,success_error_effects.V)((0,typesafe_actions_umd_production.getType)(company_actions.JT),error,"toggleKeycloak")(dispatch)}})(session.company._id,shouldUseLegacySamlLogin,successMessage))},value:isKeycloakEnabled,dataTestId:"saml-settings-keycloak-toggle"}),react.createElement("label",{className:"cat-flex-1 cat-label cat-muted cat-ml-m cat-mb-0","data-testid":"saml-settings-keycloak-toggle-label"},gettext("Use new configuration"))),react.createElement("span",{className:"cat-muted cat-mt-xs"},gettext("You can temporarily go back to previously used configuration by toggling off the switch")),react.createElement("div",{className:"cat-flex-row cat-items-center cat-mt-l"},react.createElement(design_system_components.L$,{onChange:newValue=>{newValue?dispatchToggleSaml(!0):setShowWarningDialog(!0)},value:isSamlEnabled,dataTestId:"saml-settings-saml-toggle"}),react.createElement("label",{className:"cat-flex-1 cat-label cat-muted cat-ml-m cat-mb-0","data-testid":"saml-settings-saml-toggle-label"},gettext("Enable SAML so users can login with SSO")))))),react.createElement(design_system_components.Au,{show:showWarningDialog,onClose:cancelWarningDialog,width:640},react.createElement(design_system_components.Au.Header,{title:gettext("Disable SAML?")}),react.createElement(design_system_components.Au.Content,null,react.createElement("p",{className:"cat-text-m cat-text-secondary"},gettext("If you disable SAML, users won’t be able to sign in using Single Sign-On."))),react.createElement(design_system_components.Au.FooterActions,null,react.createElement(stencil_generated.B$,{variant:"outlined",color:"primary",onClick:cancelWarningDialog,nativeAttributes:{"data-testid":"saml-settings-cancel-disable-saml-button"}},gettext("Cancel")),react.createElement(design_system_components.hK,{size:"s",dir:"x"}),react.createElement(stencil_generated.B$,{variant:"filled",color:"primary",onClick:()=>{dispatchToggleSaml(!1),setShowWarningDialog(!1)},nativeAttributes:{"data-testid":"saml-settings-confirm-disable-saml-button"}},gettext("Disable")))))};var commonjs=__webpack_require__(10100),classnames=__webpack_require__(32485),classnames_default=__webpack_require__.n(classnames),lib=__webpack_require__(85821);const ShortcutsSettingsTableMenu=({onOpen,onDelete,onDuplicate})=>{const{gettext}=react.useContext(lib.dg);return react.createElement(stencil_generated.s5,{triggerA11yLabel:gettext("Shortcut actions"),triggerNativeAttributes:{"data-testid":"shortcuts-settings-action-menu-button"}},react.createElement(stencil_generated.h1,{onClick:onOpen},gettext("Open")),react.createElement(stencil_generated.h1,{onClick:onDuplicate},gettext("Duplicate")),react.createElement(stencil_generated.h1,{onClick:onDelete},gettext("Delete")))},InlineSVG=({imageString,color,wrapperClassName})=>react.createElement("div",{style:{color},className:classnames(wrapperClassName,"inline-svg"),dangerouslySetInnerHTML:{__html:imageString}}),ShortcutsSettingsTable=({shortcuts,isGroupAdmin,isGroupSettingsPage,companyColor,onSortEnd,onShortcutOpen,onShortcutDuplicate,onShortcutDelete})=>{const{gettext}=(0,use_get_text.z)(),withPlatform=(visibilityLabel,platform=dist.ShA.IPlatformEnum.All)=>`${visibilityLabel}${{[dist.ShA.IPlatformEnum.Web]:", only web",[dist.ShA.IPlatformEnum.Mobile]:", only mobile",[dist.ShA.IPlatformEnum.All]:""}[platform]}`,getShortcutsVisibilityLabel=shortcut=>{if(shortcut.groupId){const visibilityLabel=isGroupSettingsPage?"This group":shortcut.groupName;return react.createElement("span",{"data-testid":"visibility-label"},withPlatform(visibilityLabel,shortcut.platform))}return react.createElement(react.Fragment,{key:"label"},isGroupAdmin&&!shortcut.groupId&&react.createElement(index_es.g,{"data-testid":"lock-icon",style:{marginRight:"8px"},color:companyColor,icon:free_solid_svg_icons.DW4}),react.createElement("span",{"data-testid":"visibility-label"},gettext(withPlatform("All Company",shortcut.platform))))},renderRows=shortcuts.map((shortcut=>[react.createElement("div",{className:"shortcuts-table--link-icon",key:"icon"}
90,react.createElement(InlineSVG,{color:shortcut.color,imageString:shortcut.icon.inlineIcon}),react.createElement("span",{"data-testid":"shortcut-title-cell"},shortcut.title)),react.createElement("span",{"data-testid":"shortcut-link-cell",key:"link"},shortcut.link),getShortcutsVisibilityLabel(shortcut),react.createElement(ShortcutsSettingsTableMenu,{onOpen:()=>onShortcutOpen(shortcut),onDelete:()=>onShortcutDelete(shortcut),onDuplicate:()=>onShortcutDuplicate(shortcut),key:"actions"})]));return react.createElement("div",{className:classnames("shortcuts-table",{"shortcuts-table--group":isGroupSettingsPage,"shortcuts-table--company":!isGroupSettingsPage})},react.createElement(design_system_components.bQ,{headings:[gettext("Name"),gettext("Link"),gettext("Visibility"),gettext("")],columnStyles:[{padding:"14px 16px"},{padding:"14px 16px"},{padding:"14px 16px"},{padding:"14px 16px"}],rows:renderRows,isSortable:isGroupSettingsPage,onSortEnd}))};var use_shorcuts_query=__webpack_require__(48779),confirmation_dialog=__webpack_require__(86307);const ShortcutSettingZeroState=({onClick})=>{const{gettext}=react.useContext(lib.dg);return react.createElement("div",{className:"shortcut-setttings-zero-state_container"},react.createElement(design_system_components.VY,{"data-testid":"description"},gettext("Shortcuts allow users to have quick access to external resources, services and applications")),react.createElement(design_system_components.hK,{size:"m",dir:"y"}),react.createElement(design_system_components.$n,{dataTestId:"add-shortcut-btn",style:"primary",size:"default",text:gettext("Add Shortcut"),type:"button",onClick}))};var formik_esm=__webpack_require__(65755),nanopop_min=__webpack_require__(28093),useClickOutsideElement=__webpack_require__(28576);function Picker({isDisabled,value,valueRenderProp,bodyRenderProp,placeholder,error}){const dropdownContainerRef=react.useRef(null),dropdownBodyRef=react.useRef(null),[isOpened,toggle]=((reference,popper,optionsOverrides={})=>{const[isPopperShown,setIsPopperShown]=react.useState(!1),close=react.useCallback((()=>setIsPopperShown(!1)),[]);return(0,useClickOutsideElement.z)(reference,close),react.useEffect((()=>{var _a;reference.current&&popper.current&&isPopperShown&&(0,nanopop_min.nc)(reference.current,popper.current,{position:"bottom-start",container:null===(_a=document.querySelector("#application-frame"))||void 0===_a?void 0:_a.getBoundingClientRect(),...optionsOverrides})}),[isPopperShown,reference,popper,optionsOverrides]),[isPopperShown,()=>setIsPopperShown((isPopperShown=>!isPopperShown))]})(dropdownContainerRef,dropdownBodyRef);return react.createElement("div",{className:"picker",ref:dropdownContainerRef},react.createElement("button",{"aria-haspopup":"listbox","aria-labelledby":"picker-button",id:"picker-button",className:classnames_default()("picker__button",{"picker__button--error":!!error}),onClick:toggle,disabled:isDisabled,"aria-disabled":isDisabled,type:"button"},value?valueRenderProp(value):react.createElement("span",{className:"picker__button-placeholder"},placeholder),react.createElement("div",{className:"picker__button-arrow"},react.createElement(index_es.g,{size:"sm",icon:isOpened?free_solid_svg_icons.w2A:free_solid_svg_icons.Jt$}))),isOpened&&react.createElement("div",{ref:dropdownBodyRef,className:"picker__body"},bodyRenderProp(toggle)))}const colorOptions=["#49A266","#2D6B41","#15485E","#4C9DA8","#4E7BB9","#013571","#3F47B5","#6944D7","#9C0094","#DA5E83","#CE017B","#B41F1F","#FF183E","#AF4E44","#EE7834","#EFAC1F"],ColorPicker=({onChange,value="",disabled=!1,error})=>{const{gettext}=react.useContext(lib.dg),onHexInputUpdate=event=>{let value=event.target.value;"#"!==value[0]&&value.length&&(value=value.replace(/^/,"#")),onChange(value)};return react.createElement(Picker,{bodyRenderProp:closeDropdown=>react.createElement("div",{className:"color-picker__dropdown"},colorOptions.map((color=>react.createElement("button",{className:"color-picker__color-item",onClick:()=>{onChange(color),closeDropdown()},style:{backgroundColor:color},key:color}))),react.createElement(design_system_components.TZ,{value,onChange:onHexInputUpdate,placeholder:gettext("Hex color"),size:"32",state:error?"error":"default",style:{width:"100%"},textAlign:"left",type:"text"})),value,valueRenderProp:color=>react.createElement("div",{className:"color-picker__value"},react.createElement("div",{className:"color-picker__color-box",style:{backgroundColor:color,opacity:disabled?.7:1}}),react.createElement("span",null,color)),placeholder:gettext("Please choose color..."),isDisabled:disabled,error})};var react_query_es=__webpack_require__(75942),icon=__webpack_require__(83298);const useFetchShortcutIcons=(limit=20,prefix="")=>(0,react_query_es.useQuery)(["shortcut-icons",limit,prefix],(()=>(async(limit,prefix)=>{const{data}=await api.f9.retrieveShortcutIcons(prefix,String(limit));return Promise.all(data.icons.map(icon.A))})(limit,prefix))),IconPicker=({onChange,iconValue,disabled=!1})=>{const{gettext}=react.useContext(lib.dg),[searchTerm,setSearchTerm]=react.useState(""),{data=[]}=useFetchShortcutIcons(20,searchTerm);return react.createElement(Picker,{bodyRenderProp:closeDropdown=>react.createElement("div",{className:"icon-picker__dropdown"},react.createElement("div",{className:"icon-picker__search-input"},react.createElement(design_system_components.TZ,{type:"text",placeholder:gettext("Search for icons…"),value:searchTerm,onChange:e=>setSearchTerm(e.target.value)}),react.createElement(design_system_components.hK,{dir:"y",size:"m"})),data.length?react.createElement("div",{className:"icon-picker__icon-list"},data.map(((icon,index)=>{var _a;return react.createElement("button",{key:null!==(_a=null==icon?void 0:icon.name)&&void 0!==_a?_a:index,type:"button",className:"icon-picker__icon-item",onClick:()=>{onChange(icon),closeDropdown()}},react.createElement(InlineSVG,{wrapperClassName:"icon-picker__inline-icon",imageString:icon.inlineIcon}))}))):react.createElement(design_system_components.VY,null,gettext("No results"))),value:iconValue,valueRenderProp:value=>react.createElement("div",{className:"icon-picker__value"},react.createElement(InlineSVG,{wrapperClassName:"icon-picker__inline-icon",imageString:value.inlineIcon,color:"#757575"}),react.createElement(design_system_components.hK,{dir:"x",size:"s"}),react.createElement("span",null,gettext(value.name))),placeholder:gettext("Select icon..."),isDisabled:disabled})};var message=__webpack_require__(28962);const hexToRgb=hex=>[parseInt(hex.slice(1,3),16),parseInt(hex.slice(3,5),16),parseInt(hex.slice(5,7),16)],ShortcutSettingsPreview=({color,
90icon,title})=>{const{gettext}=react.useContext(lib.dg),isInFilledState=!!color&&!!icon&&!!title;return react.createElement("aside",{className:classnames("shortcut-preview",{"shortcut-preview--filled-state":isInFilledState,"shortcut-preview--empty-state":!isInFilledState})},isInFilledState?react.createElement("div",{className:"shortcut-preview__icon-container","data-testid":"filled-in-state"},react.createElement("article",{"data-testid":"shortcut-preview",style:{background:`rgba(${hexToRgb(color).toString()}, 0.08)`},className:"shortcut-preview-item shortcut-preview-item--mobile"},react.createElement(InlineSVG,{imageString:icon.inlineIcon,wrapperClassName:"shortcut-preview-item__link-icon",color}),react.createElement("span",{className:"shortcut-preview-item__link-title"},gettext(title))),react.createElement("article",{"data-testid":"shortcut-preview",style:{background:`rgba(${hexToRgb(color).toString()}, 0.08)`},className:"shortcut-preview-item shortcut-preview-item--web"},react.createElement(InlineSVG,{imageString:icon.inlineIcon,wrapperClassName:"shortcut-preview-item__link-icon",color}),react.createElement(design_system_components.YC,{className:"shortcut-preview-item__link-title"},gettext(title)))):react.createElement(design_system_components.VY,{className:"shortcut-preview__empty-state-text"},gettext("Preview will be generated when all information has been entered")))},HEX_COLOR_REGEX=/^#([a-fA-F0-9]{6})$/,ShortcutsDialog=({show,shortcutFormValue,isGroupAdmin,groups,onSave,onClose,mode,isFormDisabled,showVisibilitySection})=>{const{gettext}=react.useContext(lib.dg),BUTTON_TEXT_MAP=Object.freeze({create:gettext("Add shortcut"),edit:gettext("Save shortcut")}),TITLE_MAP=Object.freeze({create:gettext("Add shortcut"),edit:gettext("Edit shortcut")}),areVisibilityControlsDisabled="edit"===mode;return react.createElement(formik_esm.l1,{initialValues:shortcutFormValue,onSubmit:(values,formikActions)=>{onSave(values),onClose(),formikActions.resetForm()},enableReinitialize:!0,validate:values=>{const errors={};return values.title||(errors.title=gettext("Empty shortcut title")),values.link||(errors.link=gettext("Empty shortcut link")),values.isGroupVisibilityChosen&&!values.groupId&&(errors.groupId=gettext("Group has not been chosen")),values.color||(errors.color=gettext("Not valid color")),values.color&&!HEX_COLOR_REGEX.test(values.color)&&(errors.color=gettext("Not valid color")),values.icon||(errors.icon=gettext("Empty shortcut icon")),errors}},(({values,setFieldValue,isSubmitting,touched,dirty,isValid,errors,setFieldTouched})=>{return react.createElement(design_system_components.Au,{"data-testid":"shortcuts-dialog",show,onClose:()=>{setFieldValue("groupId",null),setFieldValue("groupName",null),onClose()},width:640},react.createElement(formik_esm.lV,{className:"shortcuts-form"},react.createElement(design_system_components.Au.Header,{title:TITLE_MAP[mode]}),react.createElement(design_system_components.Au.Content,null,react.createElement("div",{className:"shortcuts-dialog"},react.createElement(design_system_components.hK,{dir:"y",size:"l"}),isFormDisabled&&react.createElement(react.Fragment,null,react.createElement(message.Q,{messageType:"info"},gettext("This is a global shortcut. Only company admins can edit it.")),react.createElement(design_system_components.hK,{dir:"y",size:"l"})),react.createElement(design_system_components.TZ,{labelText:gettext("Shortcut name"),maxLength:25,name:"title",type:"text",placeholder:gettext("Enter shortcut name"),subText:gettext("Recommended length: 2-3 words (10-15 letters)"),value:values.title,onChange:event=>setFieldValue("title",event.target.value),disabled:isFormDisabled}),react.createElement(design_system_components.hK,{dir:"y",size:"xl"}),react.createElement(design_system_components.TZ,{labelText:gettext("Shortcut link"),type:"text",placeholder:gettext("Enter shortcut link"),value:values.link,onChange:event=>setFieldValue("link",event.target.value),disabled:isFormDisabled}),react.createElement(design_system_components.hK,{dir:"y",size:"xl"}),showVisibilitySection&&react.createElement(react.Fragment,null,react.createElement(design_system_components.P,null,gettext("Visibility")),react.createElement(design_system_components.hK,{dir:"y",size:"s"}),isGroupAdmin&&!isFormDisabled?react.createElement(design_system_components.YC,null,gettext(`Item will be shown in the ${values.groupName} group`)):react.createElement(react.Fragment,null,react.createElement(design_system_components.a,{label:gettext("For everyone"),checked:!values.isGroupVisibilityChosen,value:"Only company admins can edit this item",name:"visibility",disabled:isFormDisabled||areVisibilityControl
90sDisabled,onChange:()=>{setFieldValue("isGroupVisibilityChosen",!1),setFieldValue("groupId",null),setFieldValue("groupName",null)}}),react.createElement(design_system_components.a,{label:gettext("For a group"),checked:values.isGroupVisibilityChosen,value:"Only group admins can edit this item",name:"visibility",disabled:isFormDisabled||areVisibilityControlsDisabled,onChange:event=>setFieldValue("isGroupVisibilityChosen",!0)}),react.createElement(design_system_components.hK,{dir:"y",size:"m"}),react.createElement("div",{className:"shortcuts-dialog__select-wrapper"},react.createElement(design_system_components.l6,{placeholder:gettext("Select a group…"),style:"withBorder",options:groups,value:(groupId=values.groupId,groups.find((item=>groupId===item._id))||null),onChange:event=>{setFieldValue("groupId",event._id),setFieldValue("groupName",event.name)},getOptionLabel:option=>option.name,getOptionValue:option=>option,disabled:!values.isGroupVisibilityChosen||isFormDisabled||areVisibilityControlsDisabled}))),react.createElement(design_system_components.hK,{dir:"y",size:"xl"})),react.createElement(design_system_components.P,null,gettext("Platform")),react.createElement(design_system_components.hK,{dir:"y",size:"s"}),react.createElement(design_system_components.a,{label:gettext("Web and mobile"),checked:values.platform===dist.ShA.IPlatformEnum.All,value:dist.ShA.IPlatformEnum.All,name:"platform",disabled:isFormDisabled,onChange:()=>{setFieldValue("platform",dist.ShA.IPlatformEnum.All)}}),react.createElement(design_system_components.a,{label:gettext("Only web"),checked:values.platform===dist.ShA.IPlatformEnum.Web,value:dist.ShA.IPlatformEnum.Web,name:"platform",disabled:isFormDisabled,onChange:()=>{setFieldValue("platform",dist.ShA.IPlatformEnum.Web)}}),react.createElement(design_system_components.a,{label:gettext("Only mobile"),checked:values.platform===dist.ShA.IPlatformEnum.Mobile,value:dist.ShA.IPlatformEnum.Mobile,name:"platform",disabled:isFormDisabled,onChange:()=>{setFieldValue("platform",dist.ShA.IPlatformEnum.Mobile)}}),react.createElement(design_system_components.hK,{dir:"y",size:"xl"}),react.createElement("section",{className:"shortcut-appearance"},react.createElement(design_system_components.P,null,gettext("Appearance")),react.createElement(design_system_components.hK,{dir:"y",size:"s"}),react.createElement("div",{className:"shortcut-appearance__grid"},react.createElement("div",{className:"shortcut-appearance__pickers"},react.createElement(design_system_components.hK,{dir:"y",size:"s"}),react.createElement(ColorPicker,{value:values.color,onChange:color=>{setFieldValue("color",color),setFieldTouched("color",!0)},disabled:isFormDisabled,error:!0===touched.color?errors.color:void 0}),react.createElement(design_system_components.hK,{dir:"y",size:"m"}),react.createElement(IconPicker,{iconValue:values.icon,onChange:icon=>setFieldValue("icon",icon),disabled:isFormDisabled})),react.createElement("div",{className:"shortcut-appearance__preview"},react.createElement(ShortcutSettingsPreview,{color:values.color,icon:values.icon,title:values.title})))))),react.createElement(design_system_components.Au.FooterActions,null,react.createElement(design_system_components.$n,{dataTestId:"submit-button",disabled:isFormDisabled||!dirty||!isValid,isLoading:isSubmitting,type:"submit",style:"primary",text:gettext(BUTTON_TEXT_MAP[mode])}))));var groupId}))},DEFAULT_FORM_MODEL={title:"",link:"",icon:void 0,color:"",groupId:"",groupName:"",isGroupVisibilityChosen:!1,platform:dist.ShA.IPlatformEnum.All},ShortcutsSettings=()=>{const{gettext}=(0,use_get_text.z)(),{session,sessionUtil:{isGroupAdmin}}=(0,use_session.w)(),selectedGroupId=(0,es.d4)((state=>state.Group.selectedGroupId)),groupsList=(0,es.d4)((state=>Object.values(state.Group.groupList).map((group=>group.general)))),[openNewShortcutDialog,setOpenNewShortcutDialog]=react.useState(!1),[shortcuts,setShortcuts]=react.useState([]),[shortcutFormValue,setShortcutFormValue]=react.useState(DEFAULT_FORM_MODEL),[isConfirmationDialogShown,setIsConfirmationDialogShown]=react.useState(!1),[isConfirmationDialogLoading,setIsConfirmationDialogLoading]=react.useState(!1),shortcutToDelete=react.useRef(),companyColor=session.company.HighlightColor||"#ED5D40",userGroup={name:session.user.groupName,id:session.user.groupId},mode=(null==shortcutFormValue?void 0:shortcutFormValue.id)?"edit":"create",isFormDisabled=isGroupAdmin()&&!shortcutFormValue.groupId,showVisibilitySection=session.company.isGroupEnabled,shortcutsDescription=gettext(selectedGroupId?'Manage the list of shortcuts that are visible on the mobile home screen for the chosen group. The first 4 items will be shown on the home screen. Users can access all other shortcuts in the "All Shortcuts" view.':"To change the order of the shortcuts, view shortcuts settings for an individual group. The order in which shortcuts are displayed are unique for each group."),{data}=(0,use_shorcuts_query.xT)(selectedGroupId),createMutation=(0,use_shorcuts_query.Gq)(),editMutation=(0,use_shorcuts_query.w3)(),deleteMutation=(0,use_shorcuts_query.fr)(),changeOrderMutation=(0,use_shorcuts_query.LE)(selectedGroupId);react.useEffect((()=>{data&&setShortcuts(data)}),[data,setShortcuts]);const hasShortcuts=!!shortcuts.length,addShortcut=()=>{const shortcutInitialFormValue={...DEFAULT_FORM_MODEL,groupId:isGroupAdmin()?userGroup.id:"",groupName:isGroupAdmin()?userGroup.name:"",isGroupVisibilityChosen:isGroupAdmin()};setShortcutFormValue(shortcutInitialFormValue),setOpenNewShortcutDialog(!0)};return react.createElement(react.Fragment,null,react.createElement(ShortcutsDialog,{show:openNewShortcutDialog,shortcutFormValue,isGroupAdmin:isGroupAdmin(),groups:groupsList,onSave:async shortcut=>{try{"edit"===mode?await editMutation.mutateAsync(shortcut):await createMutation.mutateAsync(shortcut)}catch(error){alert_utils.A.errorFromApi(error,gettext),tracking_utils.A.error((0,string_utils.fi)(error),"ShortcutsSettings.onSaveShortcut",(0,string_utils.hT)(error))}},onClose:()=>setOpenNewShortcutDialog(!1),mode,isFormDisabled,showVisibilitySection}),react.createElement(design_system_components.Zp,null,react.createElement(design_system_components.Zp.Content,null,react.createElement("header",null,react.createElement("div",{className:"shortcuts-card-header"},react.createElement(design_system_components.H5,null,gettext("Shortcuts")),react.createElement(design_system_components.$n,{style:"link",size:"default",text:gettext("Add Shortcut"),type:"button",onClick:()=>addShortcut()})),react.createElement(design_system_components.hK,{size:"l",dir:"y"}),react.createElement(design_system_components.cG,{type:"default"})),hasShortcuts?react.createElement(react.Fragment,null,react.createElement(design_system_components.hK,{size:"l",dir:"y"}),react.createElement(design_system_components.VY,null,shortcutsDescription),react.createElement(design_system_components.hK,{size:"l",dir:"y"}),react.createElement(ShortcutsSettingsTable,{shortcuts,isGroupSettingsPage:!!selectedGroupId,isGroupAdmin:isGroupAdmin(),companyColor,onSortEnd:async(oldIndex,newIndex)=>{try{const movedShortcuts=(0,commonjs.be)(shortcuts,oldIndex,newIndex);setShortcuts(movedShortcuts),await changeOrderMutation.mutate({shortcutId:movedShortcuts[newIndex].id,order:newIndex})}catch(error){alert_utils.A.errorFromApi(error,gettext),tracking_utils.A.error((0,string_utils.fi)(error),"ShortcutsSettings.handleShortcutsTableSortEnd",(0,string_utils.hT)(error))}},onShortcutOpen:shortcut=>{const shortcutInitialFormValue={...shortcut,isGroupVisibilityChosen:!!shortcut.groupId};setShortcutFormValue(shortcutInitialFormValue),setOpenNewShortcutDialog(!0)},onShortcutDuplicate:shortcut=>{const shortcutInitialFormValue={...shortcut,id:void 0,groupId:isGroupAdmin()?userGroup.id:shortcut.groupId,groupName:isGroupAdmin()?userGroup.name:shortcut.groupName,isGroupVisibilityChosen:Boolean(shortcut.groupId)};setShortcutFormValue(shortcutInitialFormValue),setOpenNewShortcutDialog(!0)},onShortcutDelete:shortcut=>{shortcutToDelete.current=shortcut,setIsConfirmationDialogShown(!0)}})):react.createElement(ShortcutSettingZeroState,{onClick:()=>addShortcut()}))),react.createElement(confirmation_dialog.K,{title:gettext("Do you really want to delete?"),text:gettext("You are trying to delete the shortcut. The data will be removed."),isDialogShown:isConfirmationDialogShown,isLoading:isConfirmationDialogLoading,closeModal:()=>setIsConfirmationDialogShown(!1),onConfirmClick:()=>{shortcutToDelete.current&&(async shortcut=>
90{try{setIsConfirmationDialogLoading(!0),await deleteMutation.mutateAsync(shortcut),setIsConfirmationDialogShown(!1),setIsConfirmationDialogLoading(!1)}catch(error){alert_utils.A.errorFromApi(error,gettext),tracking_utils.A.error((0,string_utils.fi)(error),"ShortcutsSettings.deleteShortcut",(0,string_utils.hT)(error))}})(shortcutToDelete.current)}}))};var ChannelVisibility,ChannelStatus,PrivateRoute=__webpack_require__(64322),channel=__webpack_require__(56063),redux_effects=__webpack_require__(13226);!function(ChannelVisibility){ChannelVisibility.public="public",ChannelVisibility.private="private"}(ChannelVisibility||(ChannelVisibility={})),function(ChannelStatus){ChannelStatus.active="active",ChannelStatus.archived="archived"}(ChannelStatus||(ChannelStatus={}));const ChannelArchiveDialog=({show,onClose,archiveChannel})=>{const{gettext}=react.useContext(lib.dg);return react.createElement(design_system_components.Au,{show,onClose,width:640},react.createElement(design_system_components.Au.Header,{title:gettext("Do you really want to archive this channel?")}),react.createElement(design_system_components.Au.Content,null,react.createElement("div",{className:"edit-channel-details-dialog-text-block"},react.createElement(design_system_components.P,null,gettext("The following changes will occur when you archive a channel:"))),react.createElement("ul",{className:"edit-channel-details-dialog-list edit-channel-details-dialog-text-block"},react.createElement("li",null,react.createElement(design_system_components.P,null,gettext("It’s not possible to subscribe to this channel"))),react.createElement("li",null,react.createElement(design_system_components.P,null,gettext("It’s not possible to create or propose new posts to this channel"))),react.createElement("li",null,react.createElement(design_system_components.P,null,gettext("Posts from this channel cannot be filtered in the Analytics")))),react.createElement("div",{className:"edit-channel-details-dialog-text-block"},react.createElement(design_system_components.P,null,gettext("Posts in this channels will neither be archived nor deleted because of this action."))),react.createElement("div",{className:"edit-channel-details-dialog-text-block"},react.createElement(design_system_components.P,null,gettext("You can reactivate an archived channel later.")))),react.createElement(design_system_components.Au.FooterActions,null,react.createElement(design_system_components.$n,{style:"link",type:"button",text:gettext("No, take me back"),onClick:onClose}),react.createElement(design_system_components.hK,{size:"s",dir:"x"}),react.createElement(design_system_components.$n,{style:"primary",type:"button",text:gettext("Yes, archive channel"),onClick:archiveChannel})))};var textarea_with_chars_limit=__webpack_require__(91995),date_display=__webpack_require__(12555),UserSelector=__webpack_require__(73846);const ChannelDetailsForm=({formikProps,channelItem,fetchUsers,showArchiveDialog,showPrivateDialog,activateChannel,makeChannelPublic})=>{const{gettext}=(0,use_get_text.z)(),{sessionUtil:{isLabEnabled,isManager,isGroupAdmin},session}=(0,use_session.w)(),{errors,isSubmitting,setFieldValue}=formikProps,channelManagerFunctionalitiesEnabled=session.company.isChannelManagerEnabled,channelAnalystLabEnabled=isLabEnabled("channel_analyst_user_lab"),userIsChannelManager=!isManager()&&!isGroupAdmin(),channelIsPrivate=formikProps.values.visibility===ChannelVisibility.private,managerIdList=react.useMemo((()=>formikProps.values.managerList.map((manager=>manager._id))),[formikProps.values.managerList]),analystIdList=react.useMemo((()=>formikProps.values.analystList.map((analyst=>analyst._id))),[formikProps.values.analystList]),onManagerListChange=react.useCallback((value=>{const newManagerIdList=value.map((item=>item._id)),isIdInAnalystList=newManagerIdList.some((value=>analystIdList.includes(value)));if(isIdInAnalystList){const analystListWithoutManagers=formikProps.values.analystList.filter((analyst=>!newManagerIdList.includes(analyst._id)));setFieldValue("analystList",analystListWithoutManagers)}setFieldValue("managerList",value)}),[analystIdList,formikProps.values.analystList,setFieldValue]);return react.createElement(formik_esm.lV,{className:"formik-form"},react.createElement(design_system_components.Zp,null,react.createElement(design_system_components.Zp.HeaderTitle,{title:gettext("Channel details")}),react.createElement(design_system_components.Zp.Content,null,react.createElement("div",{className:"edit-channel-details-form-row"},react.createElement(formik_esm.D0,{name:"name"},(({field})=>react.createElement(design_system_components.TZ,{...field,type:"text",labelText:gettext("Channel Name"),subText:gettext("Name must be unique and up to 60 characters in length"),maxLength:60,state:errors.name?"error":"default",error:errors.name||"",size:"48",dataTestId:"channelName-id"})))),channelManagerFunctionalitiesEnabled&&react.createElement(react.Fragment,null,react.createElement(design_system_components.hK,{size:"l",dir:"y"}),react.createElement("div",{className:"edit-channel-details-form-row"},react.createElement(formik_esm.D0,{name:"managerList"},(({field})=>react.createElement(design_system_components.ks,{labelText:gettext("Channel Manager"),hintElement:gettext("A Channel Manager can manage content and subscribers and view anal
90ytics of the Channel")},(labelMarkup=>react.createElement(react.Fragment,null,labelMarkup,react.createElement(UserSelector.T,{fetchUsers,lastSortKey:"subscriptionStatus",onChange:onManagerListChange,value:field.value,onBlur:field.onBlur,autoFocus:!1,isDisabled:userIsChannelManager,gettext,inputId:"managerSelector-id"})))))))),channelAnalystLabEnabled&&react.createElement(react.Fragment,null,react.createElement(design_system_components.hK,{size:"l",dir:"y"}),react.createElement("div",{className:"edit-channel-details-form-row"},react.createElement(formik_esm.D0,{name:"analystList"},(({field})=>react.createElement(design_system_components.ks,{labelText:gettext("Channel Analyst"),hintElement:gettext("A Channel Analyst can view analytics of the Channel without being able to manage content and subscribers")},(labelMarkup=>react.createElement(react.Fragment,null,labelMarkup,react.createElement(UserSelector.T,{fetchUsers,lastSortKey:"subscriptionStatus",onChange:value=>{setFieldValue(field.name,value)},value:field.value,onBlur:field.onBlur,autoFocus:!1,isDisabled:userIsChannelManager,disabledOptions:managerIdList,gettext,inputId:"analystSelector-id"}),react.createElement(design_system_components.VY,{className:"edit-channel-details-field-sub-text"},gettext("A Channel Manager cannot be a Channel Analyst of a Channel at the same time"))))))))),react.createElement(design_system_components.hK,{size:"l",dir:"y"}),react.createElement(formik_esm.D0,{name:"description"},(({field})=>react.createElement(textarea_with_chars_limit.l,{...field,maxLength:135,dataTestId:"description-id",labelText:gettext("Description (optional)")}))),react.createElement(design_system_components.ks,{labelText:gettext("Channel status"),labelClassName:"edit-channel-details-form-block",hintElement:gettext("An archived channel will not appear in the channel subscription list, it’s not possible to create new post in this channel anymore. Posts in archived channel will still remain in the feed until it expires")},(labelMarkup=>react.createElement(react.Fragment,null,labelMarkup,react.createElement(formik_esm.D0,{name:"status"},(({field})=>react.createElement(design_system_components.a,{...field,label:gettext("Active"),value:ChannelStatus.active,checked:field.value===ChannelStatus.active,dataTestId:"statusActive-id",onChange:activateChannel,disabled:userIsChannelManager}))),react.createElement(formik_esm.D0,{name:"status"},(({field})=>react.createElement(design_system_components.a,{...field,label:gettext("Archived"),value:ChannelStatus.archived,checked:field.value===ChannelStatus.archived,dataTestId:"statusArchived-id",onChange:showArchiveDialog,disabled:userIsChannelManager})))))),react.createElement(design_system_components.ks,{labelText:gettext("Visibility"),labelClassName:"edit-channel-details-form-block",hintElement:gettext("A channel's visibility sets who can see and interact with it. Only invited users can read and create content on a private channel. After making a channel private, you will not be able to set it as public again later")},(labelMarkup=>react.createElement(react.Fragment,null,labelMarkup,react.createElement(formik_esm.D0,{name:"visibility"},(({field})=>react.createElement(design_system_components.a,{...field,label:gettext("Public (Visible to all users)"),value:ChannelVisibility.public,checked:field.value===ChannelVisibility.public,dataTestId:"visibilityPublic-id",onChange:makeChannelPublic,disabled:userIsChannelManager||channelIsPrivate}))),react.createElement(formik_esm.D0,{name:"visibility"},(({field})=>react.createElement(design_system_components.a,{...field,label:gettext("Private (Visible only to selected users)"),value:ChannelVisibility.private,checked:field.value===ChannelVisibility.private,onChange:showPrivateDialog,dataTestId:"visibilityPrivate-id",disabled:userIsChannelManager||channelIsPrivate})))))),react.createElement("div",{className:"edit-channel-details-form-block edit-channel-details-creator"},react.createElement(design_system_components.VY,null,`${gettext("Created by")}: ${channelItem.createdByDisplay} | ${gettext("Date of creation")}: ${(0,date_display.$)(channelItem.createdAt,!0)}`))),react.createElement(design_system_components.Zp.FooterActions,null,react.createElement(design_system_components.$n,{style:"secondary",isLoading:isSubmitting,text:gettext("Save")}))))},ChannelPrivateDialog=({show,onClose,makeChannelPrivate})=>{const{gettext}=react.useContext(lib.dg);return react.createElement(design_system_components.Au,{show,onClose,width:640},react.createElement(design_system_components.Au.Header,{title:gettext("Do you really want to make this channel private?")}),react.createElement(design_system_components.Au.Content,null,react.createElement("div",{className:"edit-channel-details-dialog-text-block"},react.createElement(design_system_components.P,null,gettext("If you make this channel private, you will not be able to set is as public again later. Only users invited to this channel will be able to see it’s content."))),react.createElement("div",{className:"edit-channel-details-dialog-text-block"},react.createElement(design_system_components.P,null,gettext("You will automatically be this channel manager if there is no one else set for this role")))),react.createElement(design_system_components.Au.FooterActions,null,react.createElement(design_system_components.$n,{style:"link",type:"button",text:gettext("No, take me back"),onClick:onClose}),react.createElement(design_system_components.hK,{size:"s",dir:"x"}),react.createElement(design_system_components.$n,{style:"primary",type:"button",text:gettext("Yes, make it private"),onClick:makeChannelPrivate})))},ChannelDetails=({channelItem})=>{const{session}=(0,use_session.w)(),{gettext}=(0,use_get_text.z)(),dispatch=(0,es.wA)(),[isArchiveDialogShown,setIsArchiveDialogShown]=react.useState(!1),[isPrivateDialogShown,setIsPrivateDialogShown]=react.useState(!1),showArchiveDialog=()=>{setIsArchiveDialogShown(!0)},hideArchiveDialog=()=>{setIsArchiveDialogShown(!1)},showPrivateDialog=()=>{setIsPrivateDialogShown(!0)},hidePrivateDialog=()=>{setIsPrivateDialogShown(!1)},updateChannelStatus=async({setFieldValue},status)=>
90{try{await channel.Gh(channelItem,status===ChannelStatus.active),refetchChannels(),alertSuccess(),setFieldValue("status",status)}catch(err){alert_utils.A.errorFromApi(err,gettext)}finally{hideArchiveDialog()}},updateChannelVisibility=async({setFieldValue,values},visibility)=>{try{const submittedManagerList=await updateChannelData(values,{visibility});refetchChannels(),alertSuccess(),setFieldValue("visibility",visibility),setFieldValue("managerList",submittedManagerList)}catch(err){alert_utils.A.errorFromApi(err,gettext)}finally{hidePrivateDialog()}},updateChannelData=async(values,overrides)=>{const visibility=overrides&&overrides.visibility?overrides.visibility:values.visibility,{user}=session,managerList=visibility===ChannelVisibility.private&&0===values.managerList.length?[{_id:user._id,firstName:user.firstName,lastName:user.lastName}]:values.managerList,channelData={_id:channelItem._id,name:values.name,managerList,analystList:values.analystList,description:values.description,isPrivate:visibility===ChannelVisibility.private};return await channel.fy(channelData),managerList},fetchAllUsers=params=>channel.Wf({isFull:!0,channelId:channelItem._id,sortAttr:"status",sortReverse:!1,...params}),alertSuccess=()=>{alert_utils.A.success(gettext("Channel settings has been updated!"))},refetchChannels=()=>{dispatch((0,redux_effects.Vx)({},{forceFetch:!0}))};return react.createElement(formik_esm.l1,{initialValues:{name:channelItem.name,description:channelItem.description,managerList:channelItem.managerList||[],analystList:channelItem.analystList||[],status:channelItem.isActive?ChannelStatus.active:ChannelStatus.archived,visibility:channelItem.isPrivate?ChannelVisibility.private:ChannelVisibility.public},onSubmit:async(values,{setSubmitting,setFieldValue})=>{try{const submittedManagerList=await updateChannelData(values);refetchChannels(),alertSuccess(),setFieldValue("managerList",submittedManagerList)}catch(error){alert_utils.A.errorFromApi(error,gettext)}finally{setSubmitting(!1)}}},(formikProps=>react.createElement(react.Fragment,null,react.createElement(ChannelDetailsForm,{formikProps,channelItem,fetchUsers:fetchAllUsers,showArchiveDialog,showPrivateDialog,activateChannel:()=>updateChannelStatus(formikProps,ChannelStatus.active),makeChannelPublic:()=>{updateChannelVisibility(formikProps,ChannelVisibility.public)}}),react.createElement(ChannelArchiveDialog,{show:isArchiveDialogShown,onClose:hideArchiveDialog,archiveChannel:()=>{updateChannelStatus(formikProps,ChannelStatus.archived)}}),react.createElement(ChannelPrivateDialog,{show:isPrivateDialogShown,onClose:hidePrivateDialog,makeChannelPrivate:()=>{updateChannelVisibility(formikProps,ChannelVisibility.private)}}))))};var jed=__webpack_require__(69407),user_list_table=__webpack_require__(62061);const AddUserControls=({fetchUsers,onChange,selectedUserList,addSubscriberToChannel,cancel,isControlsShow,showAddSubscriberCtrl})=>{const{gettext}=(0,use_get_text.z)();return react.createElement("div",null,isControlsShow?react.createElement("div",{className:"add-users-ctrl-group"},react.createElement("span",{className:"title"},gettext("Add users")),react.createElement("div",{style:{flexGrow:1}},react.createElement(components.Tu,{gettext,fetchUsers,isOptionDisabled:user=>!0===user.subscriptionStatus,disabledNote:"Subscriber",lastSortKey:"subscriptionStatus",onChange,value:selectedUserList,autoFocus:!0})),react.createElement(design_system_components.$n,{style:"link",onClick:cancel,text:gettext("Cancel")}),react.createElement(design_system_components.$n,{type:"submit",style:"primary",onClick:addSubscriberToChannel,text:gettext("Add")})):react.createElement("div",{style:{display:"flex"}},react.createElement(design_system_components.$n,{type:"submit",icon:"fas-plus",style:"secondary",onClick:showAddSubscriberCtrl,text:gettext("Add")})))},RemoveUserControls=({hideAddSubscriberCtrl,onGoingSelectCount,onRemoveConfirm})=>{const{gettext,ngettext}=(0,use_get_text.z)(),[showForm,setShowForm]=react.useState(!1);return react.createElement("div",null,react.createElement(react.Fragment,null,react.createElement(design_system_components.$n,{style:"secondary",onClick:()=>{setShowForm(!0),hideAddSubscriberCtrl()},text:gettext("Remove")}),react.createElement(design_system_components.Au,{show:showForm,onClose:()=>setShowForm(!1)},react.createElement(design_system_components.Au.Header,{title:gettext("Are you sure you want to remove these members?")}),react.createElement(design_system_components.Au.Content,null,react.createElement(design_system_components.P,null,(0,jed.sprintf)(ngettext(gettext("Remove %s member from this channel"),gettext("Remove %s members from this channel"),onGoingSelectCount),onGoingSelectCount))),react.createElement(design_system_components.Au.FooterActions,null,react.createElement(design_system_components.$n,{style:"link",text:gettext("Cancel"),type:"button",onClick:()=>setShowForm(!1)}),react.createElement(design_system_components.hK,{size:"s",dir:"x"}),react.createElement(design_system_components.$n,{style:"primary",text:gettext("Remove"),onClick:onRemoveConfirm})))))};class SubscriberControls extends react.Component{constructor(){super(...arguments),this.state={selectedUserList:[],isAddCtrlShown:!1},this.fetchUsers=reqObj=>{if(!this.props.channelId)return Promise.resolve([]);const req={isFull:!0,channelId:this.props.channelId,sortAttr:"status",sortReverse:!1,...reqObj};return channel.Wf(req)},this.onChange=selectedUserList=>{this.setState({selectedUserList})},this.addSubscriberToChannel=async()=>{const selectedUserList=this.state.selectedUserList;if(0===selectedUserList.length)return;const userIdList=selectedUserList.map((user=>user._id));return channel.o2(this.props.channelId,{userIdList}).then((()=>{this._reset(),this.props.onAddSuccess(),this._hideAddSubscriberCtrl()})).catch((err=>{alert_utils.A.errorFromApi(err,this.context.gettext)}))},this.cancel=()=>{this._reset(),this._hideAddSubscriberCtrl()},this._hideAddSubscriberCtrl=()=>{this.setState({isAddCtrlShown:!1})},this._showAddSubscriberCtrl=()=>{this.setState({isAddCtrlShown:!0})}}render(){return this.props.channelId?0===this.props.onGoingSelectCount?react.createElement(AddUserControls,{fetchUsers:this.fetchUsers,onChange:this.onChange,selectedUserList:this.state.selectedUserList,addSubscriberToChannel:this.addSubscriberToChannel,cancel:this.cancel,isControlsShow:this.state.isAddCtrlShown,showAddSubscriberCtrl:this._showAddSubscriberCtrl}):react.createElement(RemoveUserControls,{onRemoveConfirm:this.props.onRemoveConfirm,hideAddSubscriberCtrl:this._hideAddSubscriberCtrl,onGoingSelectCount:this.props.onGoingSelectCount}):null}_reset(){this.setState({selectedUserList:[]})}}SubscriberControls.contextType=lib.dg;const ChannelSubscriber=({channelItem})=>{const{gettext,ngettext}=(0,use_get_text.z)(),{sessionUtil:{isManager,isUserChannelManager}}=(0,use_session.w)(),[subscriberCount,setSubscriberCount]=react.useState(0),[sortMap]=react.useState({email:!1}),[isResetSubscriberList,setIsResetSubscriberList]=react.useState(!1),[selectMap,setSelectMap]=react.useState({}),[selectAll,setSelectAll]=react.useState(!1),loadSubscriberCount=react.useCallback((async()=>{try{const data=await(0,channel.rr)({channelId:channelItem._id});return setSubscriberCount(data.count),data}catch(err){alert_utils.A.errorFromApi(err,gettext)}}),[channelItem._id]);react.useEffect((()=>{channelItem&&loadSubscriberCount()}),[channelItem,loadSubscriberCount]);const alertSuccess=()=>{alert_utils.A.success(gettext("Channel settings has been updated!"))},resetSubscriberList=()=>{setIsResetSubscriberList(!0),setIsResetSubscriberList(!1)},clearSelection=()=>{setSelectMap({}),setSelectAll(!1)};if(!channelItem)return null;const selectedCount=selectAll?subscriberCount:Object.keys(selectMap).length,columnMap={select:isManager()||channelItem.isManager,info:!0,avatar:!0,subDate:!0};return react.createElement(react.Fragment,null,react.createElement(SubscriberControls,{channelId:channelItem._id,onAddSuccess:()=>{resetSubscriberList(),loadSubscriberCount()},onGoingSelectCount:selectedCount,onRemoveConfirm:async()=>{const userIdList=Object.keys(selectMap);if(0!==userIdList.length||selectAll)try{return await(0,channel.XS)(channelItem._id,{userIdList,selectAll}),alertSuccess(),setSubscriberCount(selectAll?0:subscriberCount-userIdList.length),clearSelection(),void resetSubscriberList()}catch(err){alert_utils.A.errorFromApi(err,gettext)}}}),react.createElement("div",{style:{margin:"20px 0px"}},react.createElement("i",{className:"i-user",style:{marginRight:"5px",color:"#b9b9b9"}}),react.createElement("span",null,(0,jed.sprintf)(`%s ${ngettext("subscriber","subscribers",subscriberCount||0)}`,subscriberCount||0)),selectedCount>0&&react.createElement("span",null,react.createElement("span",null,(0,jed.sprintf)(` | %s ${ngettext("user selected","users selected",selectedCount)} | `,selectedCount)),react.createElement("a",{onClick:()=>clearSelection(),style:{color:"#7c7c7c",textDecoration:"underline"}},gettext("clear selection")))),react.createElement(user_list_table.o,{columnMap,sortMap,count:subscriberCount,fetch:async params=>{try{const req={...params,isFull:!1,channelId:channelItem._id};return await(0,channel.Wf)(req)}catch(err){return alert_utils.A.errorFromApi(err,gettext),[]}},className:"channel-subscriber-table",reset:isResetSubscriberList,selectMap,selectAll,toggleSelect:(item,all,list)=>{if(null!=all)return setSelectMap({}),void setSelectAll(all);let newSelectMap={...selectMap};selectAll?(newSelectMap={},list.forEach((user=>{newSelectMap[user._id]=!0})),delete newSelectMap[item._id]):newSelectMap[item._id]?delete newSelectMap[item._id]:newSelectMap[item._id]=!0,setSelectMap(newSelectMap),setSelectAll(!1)},disableSelectAll:!0,disableSelectOnRow:user=>isUserChannelManager()&&channelItem.managerList.map((manager=>manager._id)).includes(user._id)}))},Container=emotion_styled_browser_esm.A.div`
91	display: flex;
92	flex-direction: column;
93	gap: 20px;
94`,ChannelEdit=()=>{const{gettext}=(0,use_get_text.z)(),{channelId}=(0,react_router.g)(),history=(0,react_router.W6)(),[isLoading,setIsLoading]=react.useState(!1),[channelItem,setChannelItem]=react.useState(null);react.useEffect((()=>{(async channelId=>{setIsLoading(!0);const[response,error]=await(0,util.Oi)((()=>(0,channel.qz)(channelId)));if(error)return alert_utils.A.errorFromApi(error,gettext),void setIsLoading(!1);setIsLoading(!1),setChannelItem(response)})(channelId)}),[channelId]);return isLoading?react.createElement(loader.a,{isShow:!0}
94):channelItem?react.createElement(Container,null,react.createElement("div",{className:"channel-edit-back-button",onClick:()=>{history.goBack()}},react.createElement("a",null,react.createElement(design_system_components.YC,null,gettext("Back to Channel list")))),react.createElement(ChannelDetails,{channelItem}),react.createElement(design_system_components.Zp,null,react.createElement(design_system_components.Zp.HeaderTitle,{title:gettext("Subscribers list")}),react.createElement(design_system_components.Zp.Content,null,react.createElement(ChannelSubscriber,{channelItem})))):null};var noop=__webpack_require__(42302);const makeCancelable=promise=>{let hasCanceled_=!1;return{promise:new Promise(((resolve,reject)=>{promise.then((val=>hasCanceled_?reject({isCanceled:!0}):resolve(val)),(error=>reject(hasCanceled_?{isCanceled:!0}:error)))})),cancel(){hasCanceled_=!0}}};class ChannelFullListProvider extends react.Component{constructor(){super(...arguments),this.fetchPromise=makeCancelable(new Promise(noop.A)),this.state={channelList:[],session:null,isLoading:!1},this.notifyChange=()=>{this._initList(!0)},this._initList=async(forceFetch=!1)=>{this.setState({isLoading:!0}),this.fetchPromise=makeCancelable((0,channel.Ir)({groupId:this.props.groupId,ignoreAccessibilityFilter:this.props.isManager},forceFetch)),this.fetchPromise.promise.then((channelList=>{Array.isArray(channelList)&&this.setState({channelList})})).catch((err=>{err.isCanceled||(alert_utils.A.errorFromApi(err,this.context.gettext),tracking_utils.A.error((0,string_utils.fi)(err),"ChannelFullListProvider._initList",(0,string_utils.hT)(err)))})).finally((()=>{this.setState({isLoading:!1})}))}}componentDidMount(){this._initList()}componentDidUpdate(prevProps){prevProps.groupId!==this.props.groupId&&(this.fetchPromise.cancel(),this._initList())}componentWillUnmount(){this.fetchPromise.cancel()}render(){const{children,filterFunction}=this.props,{channelList}=this.state;return children({channelList:filterFunction?channelList.filter(filterFunction):channelList,notifyChange:this.notifyChange,isLoading:this.state.isLoading})}}ChannelFullListProvider.contextType=lib.dg;var filter_channel_manager=__webpack_require__(18901);const setManagerName=user=>({...user,name:[user.firstName,user.lastName].join(" ")});var session_util=__webpack_require__(7031),apiWrappers=__webpack_require__(28373),warning_message=__webpack_require__(50294);const getHashQueryParam=name=>{const hash=window.location.hash,queryIndex=hash.indexOf("?");return-1===queryIndex?null:new URLSearchParams(hash.slice(queryIndex)).get(name)};class AddChannelModal extends react.Component{constructor(){super(...arguments),this.state={isModalShown:!1,isManagerSelectorOpen:!1},this.onSubmit=(values,{setSubmitting,resetForm,setFieldError})=>{const{name:inputName,description,visibility,managerList}=values,{session:{user}}=this.props;let channelManagerList=managerList;return visibility===ChannelVisibility.private&&0===managerList.length&&(channelManagerList=[{_id:user._id,firstName:user.firstName,lastName:user.lastName}]),this.props.addChannel({inputName,description,visibility,managerList:channelManagerList}).then((()=>{this.closeModal(resetForm),setSubmitting(!1),tracking_utils.A.event("Create Channel Submit",{source:this.getSourceParam()||"settings"})})).catch((err=>{setFieldError("name",err.toString()),setSubmitting(!1)}))},this.onEnteredHandler=()=>{tracking_utils.A.event("Create Channel Start",{source:this.getSourceParam()||"settings"})}
94,this.getSourceParam=()=>getHashQueryParam("source"),this.showModal=()=>{this.setState({isModalShown:!0})},this.closeModal=resetForm=>{resetForm(),this.setState({isModalShown:!1})},this.setIsManagerSelectorOpenTo=isManagerSelectorOpen=>{this.setState({isManagerSelectorOpen})},this.fetchUsers=async params=>await(0,apiWrappers.xv)(params)}render(){var _a;const{state:{isModalShown,isManagerSelectorOpen},props:{session},context:{gettext}}=this,{bottom:managerSelectorBottom=0}=(null===(_a=null===document||void 0===document?void 0:document.getElementById("managerSelector-id"))||void 0===_a?void 0:_a.getBoundingClientRect())||{};return react.createElement(react.Fragment,null,react.createElement(design_system_components.$n,{type:"button",style:"link",onClick:this.showModal,text:gettext("Create new channel"),dataTestId:"createNewChannel-id"}),react.createElement(formik_esm.l1,{initialValues:{name:"",description:"",visibility:ChannelVisibility.public,managerList:[]},onSubmit:this.onSubmit},(({values,errors,isSubmitting,handleSubmit,resetForm,setFieldValue})=>{const closeModal=()=>this.closeModal(resetForm);return react.createElement(formik_esm.lV,{className:"formik-form"},react.createElement(design_system_components.Au,{show:isModalShown,onClose:closeModal,onEntered:this.onEnteredHandler,width:640},react.createElement(design_system_components.Au.Header,{title:gettext("Create new channel")}),react.createElement(design_system_components.Au.Content,null,isManagerSelectorOpen&&react.createElement("div",{className:"add-channel-modal-manager-selector-click-blocker",onClickCapture:e=>e.stopPropagation()}),react.createElement("div",{className:"add-channel-form-container"},react.createElement(formik_esm.D0,{name:"name"},(({field})=>react.createElement(design_system_components.TZ,{...field,type:"text",labelText:gettext("Channel name"),subText:gettext("Name must be unique and up to 60 characters in length."),maxLength:60,state:errors.name?"error":"default",error:errors.name||"",dataTestId:"channelName-id"}))),react.createElement(design_system_components.hK,{size:"m",dir:"y"}),react.createElement(formik_esm.D0,{name:"description"},(({field})=>react.createElement(textarea_with_chars_limit.l,{...field,maxLength:135,dataTestId:"description-id",labelText:gettext("Description (optional)")}))),react.createElement(design_system_components.hK,{size:"m",dir:"y"}),react.createElement(design_system_components.ks,{labelText:gettext("Visibility"),labelClassName:"add-channel-form-block"},(labelMarkup=>react.createElement(react.Fragment,null,labelMarkup,react.createElement(formik_esm.D0,{name:"visibility"},(({field})=>react.createElement(design_system_components.a,{...field,label:gettext("Public (Visible to all users)"),value:ChannelVisibility.public,checked:field.value===ChannelVisibility.public,dataTestId:"visibilityPublic-id"}))),react.createElement(formik_esm.D0,{name:"visibility"},(({field})=>react.createElement(design_system_components.a,{...field,label:gettext("Private (Visible only to selected users)"),value:ChannelVisibility.private,checked:field.value===ChannelVisibility.private,dataTestId:"visibilityPrivate-id"})))))),session.company.isChannelManagerEnabled&&react.createElement(react.Fragment,null,react.createElement(design_system_components.hK,{size:"m",dir:"y"}),react.createElement(formik_esm.D0,{name:"managerList"},(({field})=>react.createElement(design_system_components.ks,{labelText:gettext("Channel manager"),labelClassName:"add-channel-form-block"},(labelMarkup=>react.createElement(react.Fragment,null,labelMarkup,react.createElement(components.Tu,{fetchUsers:this.fetchUsers,lastSortKey:"_id",onChange:option=>setFieldValue(field.name,option),styles:{menuList:base=>({...base,maxHeight:window.innerHeight-managerSelectorBottom-24}),menuPortal:base=>({...base,zIndex:99999})},menuPortalTarget:document.body,value:field.value,onBlur:e=>{this.setIsManagerSelectorOpenTo(!1),field.onBlur(e)},onFocus:()=>this.setIsManagerSelectorOpenTo(!0),autoFocus:!1,gettext,inputId:"managerSelector-id"}))))))),values.visibility===ChannelVisibility.private&&react.createElement(react.Fragment,null,react.createElement(design_system_components.hK,{dir:"y",size:"l"}),react.createElement(warning_message._,{text:gettext("You will be this channel's manager if you don’t select anyone.")})))),react.createElement(design_system_components.Au.FooterActions,null,react.createElement(design_system_components.$n,{style:"link",text:gettext("Cancel"),type:"button",onClick:closeModal,dataTestId:"cancelChannel-id"}),react.createElement(design_system_components.hK,{size:"s",dir:"x"}),react.createElement(design_system_components.$n,{style:"primary",text:gettext("Create"),isLoading:isSubmitting,disabled:""===values.name,onClick:()=>handleSubmit(),dataTestId:"createChannel-id"}))))})))}}AddChannelModal.contextType=lib.dg;const COLUMN_STYLES=[{},{},{whiteSpace:"nowrap"}];class ChannelListComponent extends react.Component{constructor(){super(...arguments),this.getChannelListHeadingsAndRows=channelList=>{const{context:{gettext},props:{session}}=this,channelManagerFunctionalitiesEnabled=session.company.isChannelManagerEnabled,headings=[gettext("Name"),gettext(channelManagerFunctionalitiesEnabled?"Manager":"Creator"),!1,gettext("Subscribers"),gettext("Visibility"),gettext("Status")].filter(
94Boolean),rows=channelList.map((channel=>[this.renderChannelName(channel),this.renderChannelManager(channel,channelManagerFunctionalitiesEnabled),null,this.renderChannelSubscribers(channel),this.renderChannelVisibility(channel),this.renderChannelStatus(channel)].filter((row=>null!==row))));return[headings,rows]},this.renderChannelName=({name})=>react.createElement("div",{"data-testid":"channel-name-id"},name,react.createElement("i",{className:"i-pencil-square-o channel-list-edit-icon"})),this.renderChannelManager=({managerList,createdByDisplay},channelManagerLabEnabled)=>{const managersName=managerList?managerList.map((manager=>manager.name)).join(","):"";return channelManagerLabEnabled?managersName:createdByDisplay},this.renderChannelSubscribers=({subscriberCount})=>subscriberCount,this.renderChannelVisibility=({isPrivate})=>{const{gettext}=this.context;return isPrivate?react.createElement("span",{className:"channel-list-cell-with-icon"},react.createElement("span",{className:"icon primary"},react.createElement(design_system_components.w9,null)),gettext("Private")):react.createElement("span",{className:"channel-list-cell-with-icon"},react.createElement("span",{className:"icon primary"},react.createElement(design_system_components.d$,null)),gettext("Public"))},this.renderChannelStatus=channel=>{const{gettext}=this.context;return channel.isActive?react.createElement("span",{className:"channel-list-cell-with-icon"},react.createElement("span",{className:"icon success"},react.createElement(index_es.g,{icon:free_solid_svg_icons.GEE})),gettext("Active")):react.createElement("span",{className:"channel-list-cell-with-icon"},react.createElement("span",{className:"icon danger"},react.createElement(index_es.g,{icon:free_solid_svg_icons.GEE})),gettext("Archived"))},this.goToDetailPage=channelId=>{this.props.onChannelClick(channelId)}}render(){const{list,session}=this.props;if(!session)return null;const sortedChannelList=this.sortChannelsAlphabetically(list),[channelListHeadings,channelListRows]=this.getChannelListHeadingsAndRows(sortedChannelList);return react.createElement(design_system_components.bQ,{headings:channelListHeadings,columnStyles:COLUMN_STYLES,rows:channelListRows,getRowProps:index=>({onClick:()=>this.goToDetailPage(sortedChannelList[index]._id),className:"channel-list-row","data-testid":`${sortedChannelList[index]._id}-id`})})}sortChannelsAlphabetically(list){if(!list.length)return[];const sortByName=(itemA,itemB)=>itemA.name.localeCompare(itemB.name),activeChannels=list.filter((channel=>channel.isActive)).sort(sortByName),archivedChannels=list.filter((channel=>!channel.isActive)).sort(sortByName);return activeChannels.concat(archivedChannels)}}ChannelListComponent.contextType=lib.dg;class ChannelsListRenderer extends react.Component{constructor(){super(...arguments),this.addChannel=async({inputName,description,visibility,managerList})=>{const{group}=this.props;if(!group._id)throw Error("Channel should have a groupId");const newChannel=this.prepareNewChannel({inputName,description,groupId:group._id,visibility,managerList,analystList:[]});if(this.isDuplicateChannel(newChannel))throw Error("There's an existing channel with this name");return(0,channel.Bh)(newChannel).then((()=>{this.props.notifyChange(),this.props.fetchGroupedChannels({},{forceFetch:!0})})).catch((e=>{throw e.data.message}))},this.sanitizeName=name=>name.trim(),this.setManagerNameOnChannel=channel=>({...channel,managerList:channel.managerList.map(setManagerName)})}render(){const{context:{gettext},props:{channelList,isLoading,session}}=this,{isManager}=(0,session_util.d)(session);let filteredChannelList=isManager()?channelList:this.filterChannelManagerChannels(channelList);return filteredChannelList=filteredChannelList.map(this.setManagerNameOnChannel),react.createElement(design_system_components.Zp,null,react.createElement(design_system_components.Zp.HeaderTitle,{title:gettext("Channels")}),react.createElement(authorize._,{roles:[dist.u8N.Smarper,dist.u8N.Partner,dist.u8N.Admin,dist.u8N.GroupAdmin]},react.createElement(design_system_components.Zp.HeaderActions,null,react.createElement(AddChannelModal,{addChannel:this.addChannel,session}))),react.createElement(design_system_components.Zp.Content,null,isLoading?react.createElement("div",{className:"cat-flex cat-justify-center cat-mt-l"},react.createElement(stencil_generated.K0,{size:"xl","data-testid":"loading-indicator"})):react.createElement(components.fI,null,react.createElement(ChannelListComponent,{list:filteredChannelList,session,onChannelClick:this.props.onChannelClick}
94))))}prepareNewChannel({inputName,description,groupId,visibility,managerList,analystList}){const{session,group}=this.props,{user}=session;let createdByDisplay="";user&&(createdByDisplay=`${user.firstName} ${user.lastName}`);const name=this.sanitizeName(inputName),isPrivate=visibility===ChannelVisibility.private;return{_id:null,name,description,createdByDisplay,groupId,createdAt:new Date,subscriberCount:1,subscriptionStatus:!1,isActive:!0,isMandatory:!1,groupName:group.name,isPrivate,managerList,analystList}}isDuplicateChannel(channel){const{channelList}=this.props;return channelList.some((({name})=>name.toLowerCase()===channel.name.toLowerCase()))}filterChannelManagerChannels(channelsList){return channelsList.filter(filter_channel_manager._W)}}ChannelsListRenderer.contextType=lib.dg;const ChannelsList_mapDispatchToProps={fetchGroupedChannels:redux_effects.Vx},ChannelsList=(0,es.Ng)((state=>({group:state.Group.groupList[state.Group.selectedGroupId].general,session:state.Session})),ChannelsList_mapDispatchToProps)((({session,selectedGroupId,...other})=>{const{isManager}=(0,session_util.d)(session),history=(0,react_router.W6)(),handleChannelClick=channelId=>{history.push(`/company/${session.company._id}/channel/${channelId}?groupId=${selectedGroupId}`)};return react.createElement(ChannelFullListProvider,{groupId:selectedGroupId,isManager:isManager()},(({channelList,isLoading,notifyChange})=>react.createElement(ChannelsListRenderer,{...other,channelList,isLoading,notifyChange,session,onChannelClick:handleChannelClick})))}));var default_channel_select=__webpack_require__(54073),default_channel_model=__webpack_require__(52685),default_channels_actions=__webpack_require__(42552);const getLeftDifference=(leftList,rightList)=>leftList.filter((leftItem=>!rightList.some((rightItem=>leftItem._id===rightItem._id)))),CompanyChannels=(0,es.Ng)(null,{updateCompanyDefaultChannels:(companyId,updatedDefaultChannels,successMsg,failureMsg)=>async dispatch=>{var _a,_b,_c;try{dispatch(default_channels_actions.hU()),await(0,default_channel_model.FD)(companyId,updatedDefaultChannels),dispatch(default_channels_actions.YB(updatedDefaultChannels)),(0,toast.tP)({message:successMsg})}catch(error){dispatch(default_channels_actions.h()),(0,toast.Kf)({message:(null===(_a=null==error?void 0:error.data)||void 0===_a?void 0:_a.message)||failureMsg}),tracking_utils.A.error(null!==(_c=null===(_b=null==error?void 0:error.data)||void 0===_b?void 0:_b.message)&&void 0!==_c?_c:failureMsg,"updateCompanyDefaultChannels",(0,string_utils.hT)(error))}}})((({updateCompanyDefaultChannels,defaultChannels})=>{const{gettext}=(0,use_get_text.z)(),{session:{company:{_id}},sessionUtil:{isManager}}=(0,use_session.w)(),[isLoading,setIsLoading]=react.useState(!1),[channels,setChannels]=react.useState(defaultChannels);return react.createElement(settings_card.K,{title:gettext("Channels subscription settings"),footerButton:isManager()?react.createElement(stencil_generated.B$,{loading:isLoading,color:"primary",onClick:async()=>{isLoading||(setIsLoading(!0),await updateCompanyDefaultChannels(_id,channels,gettext("Channels subscription settings were successfully updated."),gettext("Something went wrong, please try again later.")),setIsLoading(!1))},nativeAttributes:{"data-testid":"channels-save-button"},variant:"filled"},gettext("Save changes")):null},react.createElement(default_channel_select.m,{selectedMandatoryChannelList:channels.mandatoryChannelList,selectedRecomededChannelList:channels.recommendedChannelList,setMandatoryChannels:mandatoryChannelList=>{const recommendedChannelList=getLeftDifference(channels.recommendedChannelList,mandatoryChannelList);setChannels({...channels,mandatoryChannelList,recommendedChannelList})},setRecomendedChannels:recommendedChannelList=>{const mandatoryChannelList=getLeftDifference(channels.mandatoryChannelList,recommendedChannelList);setChannels({...channels,mandatoryChannelList,recommendedChannelList})},level:"company",isDisabled:!isManager()}))}));var Column=__webpack_require__(20118),general_actions=__webpack_require__(35005),redux_default_channels_actions=__webpack_require__(68349);const convertGetDefaultChannelsToSetDefaultChannels=(companyId,defaultChannels)=>{const mandatoryChannelList=defaultChannels.mandatoryChannelList.map((channel=>channel._id)),recommendedChannelList=defaultChannels.recommendedChannelList.map((channel=>channel._id));return{companyId,mandatoryChannelList,recommendedChannelList}};class GroupDefaultChannelsRenderer extends react.Component{static getDerivedStateFromProps(props,state){return state.defaultChannels.mandatoryChannelList&&state.defaultChannels.recommendedChannelList?state:{...state,defaultChannels:{...props.defaultChannels}}}constructor(props,state){super(props,state),this.setMandatoryChannel=mandatoryChannelList=>{const{defaultChannels}=this.state,recommendedChannelList=this._getLeftDifference(defaultChannels.recommendedChannelList,mandatoryChannelList);this.setState({defaultChannels:{...defaultChannels,mandatoryChannelList,recommendedChannelList}})},this.setRecomendedChannel=recommendedChannelList=>{const{defaultChannels}=this.state,mandatoryChannelList=this._getLeftDifference(defaultChannels.mandatoryChannelList,recommendedChannelList);this.setState({defaultChannels:{...defaultChannels,mandatoryChannelList,recommendedChannelList}})},this._onSubmit=async()=>{const{state:{isLoading,defaultChannels},props:{groupId}}=this;isLoading||(this.setState({isLoading:!0}),await this.props.editGroupDefaultChannels(groupId,this.props.session.company._id,defaultChannels),this._onSubmitResponse())},this._onSubmitResponse=()=>{const{defaultChannelsError}=this.props;defaultChannelsError?alert_utils.A.errorFromApi(defaultChannelsError,this.context.gettext):alert_utils.A.success(this.context.gettext("Channels subscription settings were successfully updated")),this.setState({isLoading:!1})},this.state={isLoading:!1,defaultChannels:{...props.defaultChannels}}}componentDidMount(){this.props.fetchGroupDefaultChannels(this.props.groupId)}render(){const{context:{gettext},state,props:{session}}=this,{isLoading,defaultChannels:{mandatoryChannelList,recommendedChannelList}}=state,{isManager,isGroupAdmin}
94=(0,session_util.d)(session),canUserChangeDefaultChannels=isManager()||isGroupAdmin();return react.createElement(design_system_components.Zp,null,react.createElement(design_system_components.Zp.HeaderTitle,{title:gettext("Channels subscription settings")}),react.createElement(design_system_components.Zp.Content,null,react.createElement(Column.V,null,react.createElement(default_channel_select.m,{selectedMandatoryChannelList:mandatoryChannelList,selectedRecomededChannelList:recommendedChannelList,setMandatoryChannels:this.setMandatoryChannel,setRecomendedChannels:this.setRecomendedChannel,level:"group",isDisabled:!canUserChangeDefaultChannels}))),canUserChangeDefaultChannels?react.createElement(design_system_components.Zp.FooterActions,null,react.createElement(design_system_components.$n,{onClick:this._onSubmit,isLoading,style:"secondary",text:gettext("Save")})):null)}_getLeftDifference(leftList,rightList){return leftList.filter((leftItem=>!rightList.some((rightItem=>leftItem._id===rightItem._id))))}}GroupDefaultChannelsRenderer.contextType=lib.dg;const GroupDefaultChannels_mapDispatchToProps={editGroupDefaultChannels:(groupId,companyId,defaultChannels)=>async dispatch=>{try{dispatch((0,general_actions.Zs)()),dispatch(redux_default_channels_actions.F(groupId,defaultChannels)),await api.GA.setDefaultChannelsForGroup(groupId,convertGetDefaultChannelsToSetDefaultChannels(companyId,defaultChannels)),dispatch(redux_default_channels_actions.q(groupId,defaultChannels))}catch(error){dispatch(redux_default_channels_actions.Z4(error))}},fetchGroupDefaultChannels:(groupId,forceFetch=!1)=>async(dispatch,getState)=>{try{const{Group:{groupList}}=getState(),groupForEditing=groupList[groupId];if(dispatch((0,general_actions.Zs)()),!groupForEditing.defaultChannels||forceFetch){dispatch(redux_default_channels_actions.bk(groupId));const{data}=await api.GA.retrieveDefaultChannelsForGroup(groupId);dispatch(redux_default_channels_actions.iv(groupId,data))}}catch(error){dispatch(redux_default_channels_actions.HE(error))}}},GroupDefaultChannels=(0,es.Ng)(((state,ownProps)=>({defaultChannelsError:state.Group.defaultChannelsError,defaultChannels:state.Group.groupList[ownProps.groupId].defaultChannels,session:state.Session})),GroupDefaultChannels_mapDispatchToProps)(GroupDefaultChannelsRenderer),channel_settings_Container=emotion_styled_browser_esm.A.div`
95	color: ${p=>p.theme.cat.color.uiFontBase};
96`,channel_settings_mapDispatchToProps={fetchCompanyDefaultChannels:(companyId,failureMsg,forceFetch=!1)=>async(dispatch,getState)=>{var _a,_b,_c;try{const{Company:{defaultChannels,isFetchingDefaultChannels}}=getState();if(isFetchingDefaultChannels||defaultChannels&&!forceFetch)return;dispatch(default_channels_actions.uO());const response=await(0,default_channel_model.pZ)(companyId);dispatch(default_channels_actions.LG(response))}catch(error){dispatch(default_channels_actions.gs()),(0,toast.Kf)({message:(null===(_a=null==error?void 0:error.data)||void 0===_a?void 0:_a.message)||failureMsg}),tracking_utils.A.error(null!==(_c=null===(_b=null==error?void 0:error.data)||void 0===_b?void 0:_b.message)&&void 0!==_c?_c:failureMsg,"fetchCompanyDefaultChannels",(0,string_utils.hT)(error))}}},ChannelsSettings=(0,es.Ng)((state=>({defaultChannels:state.Company.defaultChannels,selectedGroupId:state.Group.selectedGroupId})),channel_settings_mapDispatchToProps)((({selectedGroupId,defaultChannels,fetchCompanyDefaultChannels})=>{const{session:{company:{isGroupEnabled,_id}},sessionUtil:{isManager,isGroupAdmin}}=(0,use_session.w)(),{gettext}=(0,use_get_text.z)(),canSetupGroupOrCompanyChannels=isManager()||isGroupAdmin();return react.useEffect((()=>{canSetupGroupOrCompanyChannels&&fetchCompanyDefaultChannels(_id,gettext("Something went wrong, please check again later."))}),[fetchCompanyDefaultChannels,_id,canSetupGroupOrCompanyChannels]),react.createElement(channel_settings_Container,{className:"cat-flex-col cat-gap-l"},canSetupGroupOrCompanyChannels&&defaultChannels&&react.createElement(react.Fragment,null,isGroupEnabled&&selectedGroupId?react.createElement(GroupDefaultChannels,{groupId:selectedGroupId}):react.createElement(CompanyChannels,{defaultChannels})),selectedGroupId&&react.createElement(ChannelsList,{selectedGroupId}))}));var cron_utils=__webpack_require__(35278),digest_settings_actions=__webpack_require__(37691);const fetchGroupDigestSettings=(groupId,forceFetch=!1)=>async(dispatch,getState)=>{try{const{Group:{groupList}}=getState(),groupForEditing=groupList[groupId];if(!groupForEditing||!groupForEditing.digestSettings||forceFetch){dispatch(digest_settings_actions.H6(groupId));const{data}=await api.GA.retrieveGroupDigestSettings(groupId);dispatch(digest_settings_actions.I_(groupId,data))}}
96catch(error){dispatch((0,success_error_effects.V)((0,typesafe_actions_umd_production.getType)(digest_settings_actions.H6),error,"fetchGroupDigestSettings"))}},editGroupDigestSettings=(groupId,digestSettings,successMessage)=>async dispatch=>{try{dispatch(digest_settings_actions.dg(groupId,digestSettings)),await api.GA.modifyGroupDigestSettings(groupId,digestSettings),dispatch(digest_settings_actions.OG(groupId,digestSettings)),dispatch((0,success_error_effects.y)((0,typesafe_actions_umd_production.getType)(digest_settings_actions.dg),successMessage))}catch(error){dispatch((0,success_error_effects.V)((0,typesafe_actions_umd_production.getType)(digest_settings_actions.dg),error,"editGroupDigestSettings"))}},EmailCopyForm=({digestSettings,setDigestSettings})=>{const{gettext}=(0,use_get_text.z)();return react.createElement(react.Fragment,null,react.createElement(stencil_generated.BU,{label:gettext("Subject line"),value:digestSettings.subject,required:!0,onCatChange:e=>{setDigestSettings({...digestSettings,subject:e.target.value})},nativeAttributes:{"data-testid":"email-subject-input"}}),react.createElement(design_system_components.hK,{size:"l",dir:"y"}),react.createElement("div",{className:"cat-grid cat-grid-2 cat-gap-s"},react.createElement(stencil_generated.BU,{label:gettext("Greeting message"),value:digestSettings.greeting,required:!0,onCatChange:e=>{setDigestSettings({...digestSettings,greeting:e.target.value})},nativeAttributes:{"data-testid":"email-greeting-input"}}),react.createElement(stencil_generated.BU,{label:"",value:digestSettings.message,required:!0,onCatChange:e=>{setDigestSettings({...digestSettings,message:e.target.value})},nativeAttributes:{"data-testid":"email-message-input"}})))};var cat_select_facade=__webpack_require__(33544);const EmailFrequencyForm=({cronCtx,dayDisplay,hourValueList,setCronCtx})=>{const{gettext}=(0,use_get_text.z)(),hourOptions=react.useMemo((()=>hourValueList),[hourValueList]);return react.createElement(react.Fragment,null,react.createElement(design_system_components.hK,{size:"l",dir:"y"}),react.createElement("label",{className:"cat-label","data-testid":"email-frequency-day-label"},gettext("Day of the week")),react.createElement(design_system_components.hK,{size:"m",dir:"y"}),react.createElement("div",{className:"cat-flex cat-flex-wrap cat-gap-m"},cronCtx.daysOfWeek.map((day=>react.createElement(stencil_generated.B$,{key:day.name,variant:day.isActive?"filled":"outlined",color:"primary",active:day.isActive,onClick:()=>{var name;(name=day.name)&&setCronCtx({...cronCtx,daysOfWeek:cronCtx.daysOfWeek.map((day=>day.name===name?{...day,isActive:!day.isActive}:day))})},nativeAttributes:{"data-testid":"email-frequency-day-button"}},day.display.substring(0,2))))),dayDisplay&&react.createElement(react.Fragment,null,react.createElement(design_system_components.hK,{size:"l",dir:"y"}),react.createElement(cat_select_facade.j,{options:hourOptions,label:gettext("Select time"),value:cronCtx.startingTime.toString(),onCatChange:e=>{setCronCtx({...cronCtx,startingTime:e.target.value})},nativeAttributes:{autocomplete:"off","data-testid":"email-frequency-time-select"}})),react.createElement(design_system_components.hK,{size:"l",dir:"y"}),react.createElement("div",{className:"cat-label cat-muted"},dayDisplay?`${gettext("Emails will be sent every")} ${dayDisplay} ${gettext("at")} ${cronCtx.startingTime} ${gettext("UTC")}`:gettext("Select a day to send email digests")))},EnvelopeIcon=(0,emotion_styled_browser_esm.A)(stencil_generated.k0)`
97	color: ${p=>p.theme.color.PrimaryDefault};
98`,EmailWrapper=emotion_styled_browser_esm.A.div`
99	border-top: 1px solid ${p=>p.theme.cat.color.uiBorderDefault};
100`,EmailGreeting=emotion_styled_browser_esm.A.span`
101	font-size: 26px;
102`,EmailDigestPreview=({companyName,subject,greeting,greetingMessage})=>{const{gettext}=(0,use_get_text.z)();return react.createElement("div",{className:"cat-flex-col cat-border cat-border-default"},react.createElement("div",{className:"cat-flex cat-items-start cat-gap-xs cat-p-m"},react.createElement(EnvelopeIcon,{size:"l",icon:"mail-outlined"}),react.createElement("div",{className:"cat-flex-col"},react.createElement("span",{className:"cat-text-m"},`${companyName} - via Haiilo`),react.createElement("p",{className:"cat-h4"},subject))),react.createElement(EmailWrapper,{className:"cat-flex-col cat-items-center cat-bg-muted cat-pv-xl cat-ph-m"},react.createElement("p",{className:"cat-text-m"},`${greeting} James,`),react.createElement(EmailGreeting,{className:"cat-text-muted cat-pb-l"},greetingMessage),react.createElement("img",{src:"/images/post.png",alt:gettext("Here post previews would go in the email")})))},EmailDigest=(0,es.Ng)(null,(dispatch=>(0,redux.bindActionCreators)({editGroupDigestSettings},dispatch)))((({editGroupDigestSettings,groupDigestSettings,groupId})=>{var _a;const{gettext}=(0,use_get_text.z)(),{session}=(0,use_session.w)(),hourValueList=react.useMemo((()=>util.Ay.numberGenerator(0,23)),[]),defaultCtx=cron_utils.A.getDefaultCtx(gettext),initialCronCtx=cron_utils.A.getCronExObject({emailCronEx:groupDigestSettings.emailCronEx,defaultEmailCronEx:null===(_a=session.System)||void 0===_a?void 0:_a.EmailCronEx},defaultCtx),initialDayDisplay=cron_utils.A.getDayDisplay(initialCronCtx,gettext),[digestSettings,setDigestSettings]=react.useState({subject:groupDigestSettings.subject||gettext("New posts available"),message:groupDigestSettings.message||gettext("Fresh posts for you"),greeting:groupDigestSettings.greeting||gettext("Hi")}),[cronCtx,setCronCtx]=react.useState(initialCronCtx),[dayDisplay,setDayDisplay]=react.useState(initialDayDisplay),[isLoading,setIsLoading]=react.useState(!1);return digestSettings&&0!==Object.values(digestSettings).length&&cronCtx?react.createElement(settings_card.K,{title:gettext("Email digest"),footerButton:react.createElement(stencil_generated.B$,{nativeAttributes:{"data-testid":"email-sett
102ings-save-button"},variant:"filled",color:"primary",loading:isLoading,onClick:async()=>{setIsLoading(!0);const updatedDigestSettings={...digestSettings,emailCronEx:cron_utils.A.generateCronEx(cronCtx)};await editGroupDigestSettings(groupId,updatedDigestSettings,gettext("Email digest information was successfully updated")),setIsLoading(!1)}},gettext("Save changes"))},react.createElement("div",{className:"cat-grid cat-grid-2 cat-gap-l"},react.createElement("div",null,react.createElement(EmailCopyForm,{digestSettings,setDigestSettings}),react.createElement(EmailFrequencyForm,{cronCtx,dayDisplay,hourValueList,setCronCtx:updatedCronCtx=>{setCronCtx(updatedCronCtx),setDayDisplay(cron_utils.A.getDayDisplay(updatedCronCtx,gettext))}})),react.createElement("div",null,react.createElement("label",{className:"cat-label","data-testid":"email-digest-preview-label"},gettext("Preview")),react.createElement(EmailDigestPreview,{companyName:session.company.name,subject:digestSettings.subject||"",greeting:digestSettings.greeting||"",greetingMessage:digestSettings.message||""})))):null})),DigestSettings_mapDispatchToProps={fetchGroupDigestSettings},DigestSettings=(0,es.Ng)((state=>({selectedGroupId:state.Group.selectedGroupId,group:state.Group.groupList[state.Group.selectedGroupId]})),DigestSettings_mapDispatchToProps)((({group,selectedGroupId,fetchGroupDigestSettings})=>(react.useEffect((()=>{selectedGroupId&&fetchGroupDigestSettings(selectedGroupId)}),[fetchGroupDigestSettings,selectedGroupId]),(null==group?void 0:group.digestSettings)?react.createElement(EmailDigest,{groupDigestSettings:group.digestSettings,groupId:selectedGroupId}):null)));var Row=__webpack_require__(99490),utm_tags_form=__webpack_require__(24571),utm_util=__webpack_require__(9613);const CompanyUtmSettings=({updateCompanySettings,utmTagsError})=>{const{session}=(0,use_session.w)(),[utmTags,setUtmTags]=react.useState();react.useEffect((()=>{(async()=>{const utmTags=await(0,utm_util.uy)(session.company._id);setUtmTags(null!=utmTags?utmTags:utm_util.v0)})()}),[session.company._id]);return react.createElement(utm_tags_form.e,{"data-testid":"CompanyUtmTagsForm",utmTags,updateUtmTags:updatedTag=>{0!==Object.values(updatedTag).length&&(setUtmTags({...utmTags,...updatedTag}),updateCompanySettings({...utmTags,...updatedTag}))},utmTagsError})};var utils=__webpack_require__(30518);const ExternalSharing=()=>{const{gettext}=(0,use_get_text.z)(),{session:{company}}=(0,use_session.w)(),dispatch=(0,es.wA)(),[state,setState]=react.useState({shareSubdomain:company.ShareSubdomain,utmEnabled:company.utmEnabled,uniqueClickPoint:company.uniqueClickPoint,isLoading:!1,utmTags:{}}),updateCompanyUTMTags=async()=>{await api._K.modifyCompanyDefaultUTMTags(company._id,utmTags)},{isLoading,shareSubdomain,uniqueClickPoint,utmEnabled,utmTags}=state,utmTagsError=(0,utm_util._V)(utmTags);return react.createElement(design_system_components.Zp,null,react.createElement(design_system_components.Zp.HeaderTitle,{title:gettext("External sharing")}),react.createElement(design_system_components.Zp.Content,null,react.createElement(components.VP,null,react.createElement(design_system_components.TZ,{type:"text",value:shareSubdomain,textAlign:"right",labelText:gettext("Customize externally shared link"),onChange:event=>{setState({...state,shareSubdomain:event.target.value.toLowerCase()})},suffixAfterInput:".smh.re",style:{width:"264px"}}),react.createElement(design_system_components.hK,{size:"xl",dir:"y"}),!company.isGamificationDisabled&&react.createElement(design_system_components.TZ,{type:"number",value:uniqueClickPoint,min:0,step:1,labelText:gettext("Points for clicks on external shares"),hintElement:gettext("Reward your users for engaging their social networks to click on their shares"),onChange:event=>{const uniqueClickPoint=parseInt(event.target.value,10)||0;setState({...state,uniqueClickPoint})},style:{width:"80px"}}),react.createElement(design_system_components.hK,{size:"l",dir:"y"}),react.createElement(components.fI,null,react.createElement(design_system_components.Sc,{value:utmEnabled,labelText:gettext("Use UTM tags for external shares"),hintElement:gettext("You can use UTM tags to track post performance in other services"),dataTestId:"utmEnabled-id",onChange:event=>{setState({...state,utmEnabled:event.target.checked})}})),utmEnabled&&react.createElement(components.fI,null,react.createElement(CompanyUtmSettings,{updateCompanySettings:utmTags=>{setState({...state,utmTags})},utmTagsError:utmTagsError.emptyStaticValue.length>0?utmTagsError:void 0})))),react.createElement(design_system_components.Zp.FooterActions,null,react.createElement(design_system_components.$n,{onClick:async()=>
102{if(isLoading)return;setState({...state,isLoading:!0});const hasUTMTagsChanged=Object.keys(utmTags).length>0;hasUTMTagsChanged&&(utmTags=>{try{const utmTagObject=(0,utils.x3)(utmTags);tracking_utils.A.event("Save custom UTMs in company settings",utmTagObject)}catch(error){alert_utils.A.error(gettext("An error occurred while tracking UTM changes event"))}})(utmTags),Promise.all([hasUTMTagsChanged?updateCompanyUTMTags():Promise.resolve(),dispatch(effects_updateCompany(company._id,{ShareSubdomain:shareSubdomain,uniqueClickPoint,utmEnabled},""))]).then((()=>{alert_utils.A.success(gettext("All external sharing configuration was successfully updated"))})).catch((()=>{alert_utils.A.error(gettext("An error occurred while updating the configuration"))})).finally((()=>{setState({...state,isLoading:!1})}))},isLoading,style:"secondary",text:gettext("Save")})))};var OverlayTrigger=__webpack_require__(30798),Tooltip=__webpack_require__(57139),socnet_enums=__webpack_require__(28431),deprecated_socnets_util=__webpack_require__(14562);const SOCNET_LIST=[socnet_enums.tZ.Linkedin,socnet_enums.tZ.Facebook,socnet_enums.tZ.Twitter,socnet_enums.tZ.Xing,socnet_enums.tZ.Instagram,socnet_enums.tZ.Bluesky,socnet_enums.tZ.Generic],SUPPORTED_SHARING_POINT=[socnet_enums.tZ.Facebook,socnet_enums.tZ.Twitter,socnet_enums.tZ.Linkedin,socnet_enums.tZ.Xing,socnet_enums.tZ.Bluesky],SUPPORTED_SIGNATURE=[socnet_enums.tZ.Linkedin,socnet_enums.tZ.Bluesky],getRowProps=()=>({style:{height:83}});class SocialNetworksRenderer extends react.Component{constructor(props,state){super(props,state),this.renderActivatedToggle=socnet=>react.createElement(design_system_components.Sc,{value:socnet.Activated,onChange:event=>this._onActivatedChange(event,socnet),dataTestId:"socnet-activated-checkbox-"+socnet.Name}),this.renderSignature=socnet=>{const{context:{gettext}}=this;if(!socnet.Activated)return null;return SUPPORTED_SIGNATURE.some((supportedSocnet=>supportedSocnet===socnet.Name))?react.createElement(design_system_components.TZ,{type:"text",value:socnet.Signature,textAlign:"left",onChange:event=>this._onSignatureChange(event,socnet),dataTestId:"socnet-signature-input-"+socnet.Name,state:"default",style:{width:200},maxLength:128,showLeftAmountOfSymbols:!1}):react.createElement("span",null,gettext("Signature not supported"))},this.renderSocnetName=socnet=>react.createElement(components.XA,{socnet:socnet.Name,isDisabled:!socnet.Activated}),this.renderSharingPoints=socnet=>{const{context:{gettext}}=this;if(!socnet.Activated)return null;return SUPPORTED_SHARING_POINT.some((supportedSocnet=>supportedSocnet===socnet.Name))?react.createElement(design_system_components.TZ,{type:"number",pattern:"[0-9]*",value:socnet.SharingPoint,min:0,step:1,onChange:event=>this._onSharingPointChange(event,socnet),style:{width:"80px"}}):react.createElement("span",null,gettext("Sharing points not supported"))},this._onSortEnd=(oldIndex,newIndex)=>{const{SocnetOrderedSet}=this.state,reorderedSocnetSet=(0,commonjs.be)(SocnetOrderedSet,oldIndex,newIndex);reorderedSocnetSet.forEach(((socnet,index)=>{socnet.Order=index+1})),this.setState({SocnetOrderedSet:reorderedSocnetSet})},this._onShowSharingStatisticsInFeedChange=()=>{this.setState({showSharingStatisticsInFeed:!this.state.showSharingStatisticsInFeed})},this._onActivatedChange=(event,socnet)=>{const SocnetOrderedSet=[...this.state.SocnetOrderedSet],socnetIndex=SocnetOrderedSet.findIndex((item=>item.Name===socnet.Name)),Activated=event.target.checked,targetSocnet={...SocnetOrderedSet[socnetIndex],Activated};SocnetOrderedSet[socnetIndex]=targetSocnet,this.setState({SocnetOrderedSet})},this._onSharingPointChange=(event,socnet)=>{const SocnetOrderedSet=[...this.state.SocnetOrderedSet],socnetIndex=SocnetOrderedSet.findIndex((item=>item.Name===socnet.Name)),SharingPoint=Math.abs(parseInt(event.target.value,10)||0),targetSocnet={...SocnetOrderedSet[socnetIndex],SharingPoint};SocnetOrderedSet[socnetIndex]=targetSocnet,this.setState({SocnetOrderedSet})},this._onSignatureChange=(event,socnet)=>{const SocnetOrderedSet=[...this.state.SocnetOrderedSet],socnetIndex=SocnetOrderedSet.findIndex((item=>item.Name===socnet.Name)),Signature=event.target.value,targetSocnet={...SocnetOrderedSet[socnetIndex],Signature};SocnetOrderedSet[socnetIndex]=targetSocnet,this.setState({SocnetOrderedSet})},this._onSubmit=async()=>{const{isLoading,SocnetOrderedSet}=this.state;if(isLoading)return;this.setState({isLoading:!0});const companyId=this.props.company._id;Promise.all([this.props.updateCompany(companyId,{showSharingStatisticsInFeed:this.state.showSharingStatisticsInFeed},""),this.props.updateCompanySocnets(companyId,SocnetOrderedSet,this.context.gettext("Social networks configuration was successfully updated"))]).then((()=>{this.setState({isLoading:!1})}
102))};const{_id,SocnetOrderedSet}=props.company;this.state={isLoading:!1,SocnetOrderedSet:compileSocnetOrderedSet(_id,SocnetOrderedSet),showSharingStatisticsInFeed:props.company.showSharingStatisticsInFeed}}render(){const{state:{SocnetOrderedSet,isLoading},context:{gettext}}=this,socnetRows=SocnetOrderedSet.map((socnet=>{const settings=[this.renderActivatedToggle(socnet),this.renderSocnetName(socnet),this.renderSignature(socnet)];return this.props.company.isGamificationDisabled||settings.push(this.renderSharingPoints(socnet)),settings}));return react.createElement(design_system_components.Zp,null,react.createElement(design_system_components.Zp.HeaderTitle,{title:gettext("Social Networks")}),react.createElement(design_system_components.Zp.Content,null,react.createElement(components.fI,null,react.createElement(design_system_components.Sc,{value:this.state.showSharingStatisticsInFeed,labelText:gettext("Show sharing statistics in feed"),onChange:this._onShowSharingStatisticsInFeedChange})),react.createElement(components.fI,null,react.createElement(design_system_components.bQ,{headings:[gettext("Activated"),gettext("Name"),react.createElement(react.Fragment,{key:"signature-header"},gettext("Sharing signature")," ",react.createElement(OverlayTrigger.A,{placement:"right",overlay:react.createElement(Tooltip.A,{id:"signature-tooltip"},react.createElement("span",null,gettext("A signature will be appended to all sharing messages. Users cannot remove or edit this signature. Maximum 128 characters.")))},react.createElement("i",{className:"i-question-sign sm-left",style:{color:"#7c7c7c"}}))),...this.props.company.isGamificationDisabled?[]:[gettext("Points for sharing")]],columnStyles:[{padding:"15px 15px"}],rows:socnetRows,isSortable:!0,onSortEnd:this._onSortEnd,getRowProps,dataTestId:"employee-advocacy-socnet-table"}))),react.createElement(design_system_components.Zp.FooterActions,null,react.createElement(design_system_components.$n,{onClick:this._onSubmit,isLoading,style:"secondary",text:gettext("Save")})))}}function compileSocnetOrderedSet(companyId,SocnetOrderedSet){const existingSocnetsInDB=(0,deprecated_socnets_util.Ao)(SocnetOrderedSet).map((socnet=>({...socnet,CompanyId:companyId}))),missingSocnets=SOCNET_LIST.filter((socnetName=>!existingSocnetsInDB.some((socnet=>socnet.Name===socnetName))));let Order=existingSocnetsInDB[existingSocnetsInDB.length-1].Order;const missingSocnetsFromDB=missingSocnets.map((socnetName=>(Order++,{Order,Name:socnetName,Signature:"",SharingPoint:50,ClickedPoint:0,MessageSet:[],Activated:!1})));return[...existingSocnetsInDB,...missingSocnetsFromDB]}SocialNetworksRenderer.contextType=lib.dg;const SocialNetworks_mapDispatchToProps={updateCompany:effects_updateCompany,updateCompanySocnets:(companyId,SocnetOrderedSet,successMessage)=>async dispatch=>{try{dispatch(company_actions.JT());const updatedSocnetOrderedSet=await(async(companyId,SocnetOrderedSet)=>await Promise.all(SocnetOrderedSet.map((socnet=>socnet.CompanyId?updateCompanySocnet(companyId,socnet):socnet.Activated?createCompanySocnet(companyId,socnet):socnet))))(companyId,SocnetOrderedSet);await(async(companyId,SocnetOrderedSet)=>(await api._K.reorderCompanySocnets(companyId,SocnetOrderedSet)).data)(companyId,updatedSocnetOrderedSet);const updatedCompany={SocnetOrderedSet:updatedSocnetOrderedSet};dispatch(company_actions.Iy(updatedCompany)),dispatch((0,success_error_effects.y)((0,typesafe_actions_umd_production.getType)(company_actions.JT),successMessage))}catch(error){dispatch(company_actions.jK(error)),dispatch((0,success_error_effects.V)((0,typesafe_actions_umd_production.getType)(company_actions.JT),error,"updateCompanySocnets"))}}},SocialNetworks=(0,es.Ng)(null,SocialNetworks_mapDispatchToProps)(SocialNetworksRenderer),KeywordBlocking=()=>{const{gettext}=react.useContext(lib.dg),[blacklistedKeywords,setBlacklistedKeywords]=react.useState([]);react.useEffect((()=>{(async()=>{const{data}=await api.qz.blockwordGet();setBlacklistedKeywords(data)})()}),[]);return react.createElement(design_system_components.Zp,null,react.createElement(design_system_components.Zp.HeaderTitle,{title:gettext("Keywords blocked")}),react.createElement(design_system_components.Zp.Content,null,react.createElement(design_system_components.dh,{labelText:gettext("Define a list of the keywords that cannot be included in users’ outgoing sharing messages:")}),react.createElement(design_system_components.hK,{dir:"y",size:"m"}),react.createElement(design_system_components.um,{addKeys:[9,13,32],value:blacklistedKeywords,onChange:setBlacklistedKeywords,addOnPaste:!0,inputProps:{placeholder:gettext("Enter keywords")}}),react.createElement(design_system_components.hK,{dir:"y",size:"m"}),react.createElement(design_system_components.P,null,react.createElement(react.Fragment,null,gettext("Some recommendations:"),react.createElement("ol",{style:{listStylePosition:"inside",listStyleType:"decimal"}},react.createElement("li",null,gettext("If you want to paste a few words, please use space as a divider (e.g. “word1 word2”)")),react.createElement("li",null,gettext("You can add only w
102ords (adding phrases isn’t supported)")),react.createElement("li",null,gettext("All words should be fully matched. If you want to block different forms of the word, please add them separately (e.g “love loves”)")))))),react.createElement(design_system_components.Zp.FooterActions,null,react.createElement(design_system_components.$n,{style:"secondary",text:gettext("Save"),onClick:async()=>{await api.qz.blockwordUpsert({Words:blacklistedKeywords}),alert_utils.A.success(gettext("Keywords updated successfully"))}})))},NameCell=emotion_styled_browser_esm.A.div`
103	display: flex;
104	align-items: center;
105	gap: 8px;
106	opacity: ${({isActivated})=>isActivated?1:.5};
107`,TableWrapper=emotion_styled_browser_esm.A.div`
108	.ds-table {
109		table-layout: fixed;
110	}
111`,embedded_sharing_mapDispatchToProps={updateCompany:effects_updateCompany},EmbeddedSharing=(0,es.Ng)(null,embedded_sharing_mapDispatchToProps)((({company,updateCompany})=>{const{gettext}=(0,use_get_text.z)(),[isLoading,setIsLoading]=react.useState(!1),[state,setState]=react.useState((()=>{var _a,_b,_c,_d,_e,_f,_g,_h;return{like:{enabled:null!==(_b=null===(_a=company.gamification)||void 0===_a?void 0:_a.embeddedPostLikeEnabled)&&void 0!==_b&&_b,point:null!==(_d=null===(_c=company.gamification)||void 0===_c?void 0:_c.embeddedPostLikePoint)&&void 0!==_d?_d:50},comment:{enabled:null!==(_f=null===(_e=company.gamification)||void 0===_e?void 0:_e.embeddedPostCommentEnabled)&&void 0!==_f&&_f,point:null!==(_h=null===(_g=company.gamification)||void 0===_g?void 0:_g.embeddedPostCommentPoint)&&void 0!==_h?_h:50}}})),onPointChange=key=>event=>{const point=Math.abs(parseInt(event.target.value,10)||0);setState((prevState=>({...prevState,[key]:{...prevState[key],point}})))},rows=[{key:"like",icon:"thumbs-up-filled",label:gettext("Like company post")},{key:"comment",icon:"chat-filled",label:gettext("Comment company post")}].map((action=>{const isActivated=state[action.key].enabled,row=[react.createElement(design_system_components.Sc,{key:`${action.key}-checkbox`,value:isActivated,onChange:(key=action.key,event=>{const{checked}=event.target;setState((prevState=>({...prevState,[key]:{...prevState[key],enabled:checked}})))}),dataTestId:`embedded-sharing-activated-checkbox-${action.key}`}),react.createElement(NameCell,{key:`${action.key}-name`,isActivated},react.createElement(stencil_generated.k0,{icon:action.icon}),react.createElement("span",null,action.label))];var key;return row.push(isActivated?react.createElement(design_system_components.TZ,{type:"number",pattern:"[0-9]*",value:state[action.key].point,min:0,step:1,onChange:onPointChange(action.key),suffixAfterInput:gettext("Points"),style:{width:"80px"},dataTestId:`embedded-sharing-point-input-${action.key}`}):null),row}));return react.createElement(design_system_components.Zp,null,react.createElement(design_system_components.Zp.HeaderTitle,{title:gettext("Company post gamification")}),react.createElement(design_system_components.Zp.Content,null,react.createElement(components.fI,null,react.createElement(TableWrapper,null,react.createElement(design_system_components.bQ,{headings:[gettext("Activated"),gettext("Name"),gettext("Points for action")],columnStyles:[{padding:"15px 15px",width:"135px"},{width:"265px"}],rows,getRowProps,dataTestId:"employee-advocacy-embedded-sharing-table"})))),react.createElement(design_system_components.Zp.FooterActions,null,react.createElement(design_system_components.$n,{onClick:async()=>{isLoading||(setIsLoading(!0),await updateCompany(company._id,{gamification:{...company.gamification,embeddedPostLikeEnabled:state.like.enabled,embeddedPostLikePoint:state.like.point,embeddedPostCommentEnabled:state.comment.enabled,embeddedPostCommentPoint:state.comment.point}},gettext("Gamification settings were successfully updated")),setIsLoading(!1))},isLoading,style:"secondary",text:gettext("Save")})))})),EmployeeAdvocacySettings=()=>{const company=(0,es.d4)((state=>state.Company.company)),{sessionUtil:{isLabEnabled}}=(0,use_session.w)();return company?react.createElement(react.Fragment,null,react.createElement(Row.f,null,react.createElement(ExternalSharing,
111null)),react.createElement(Row.f,null,react.createElement(SocialNetworks,{company})),isLabEnabled(labs.j7)&&!company.isGamificationDisabled&&react.createElement(Row.f,null,react.createElement(EmbeddedSharing,{company})),react.createElement(Row.f,null,react.createElement(KeywordBlocking,null))):null};var drag_n_drop_area=__webpack_require__(34),image_utils=__webpack_require__(3554),file_utils=__webpack_require__(47339),image_input=__webpack_require__(5741),media=__webpack_require__(75088),shared_react_components=__webpack_require__(67940);const LogoSection=emotion_styled_browser_esm.A.div`
112	${({theme:{cat:{spacing,color,radius}}})=>`\n\t\t width: 288px;\n\t\t border: 1px dashed ${color.uiBorderDark};\n\t\t border-radius: ${radius.m};\n\t\t padding: ${spacing.m};\n \t`}
113`,whitelabelling_settings_mapDispatchToProps={updateCompany:effects_updateCompany},WhitelabellingSettings=(0,es.Ng)(null,whitelabelling_settings_mapDispatchToProps)((({updateCompany})=>{const{gettext}=(0,use_get_text.z)(),{session,session:{company}}=(0,use_session.w)(),[highlightColor,setHighlightColor]=react.useState((()=>({HighlightColor:company.HighlightColor}))),[isSubmitting,setIsSubmitting]=react.useState(!1),[isUploading,setIsUploading]=react.useState(!1),[imageError,setImageError]=react.useState(""),[isDeleting,setIsDeleting]=react.useState(!1),[companyLogo,setCompanyLogo]=react.useState(),uploaderInputRef=react.useRef(null);react.useEffect((()=>{var _a;setHighlightColor({HighlightColor:company.HighlightColor}),setCompanyLogo((null===(_a=null==session?void 0:session.company)||void 0===_a?void 0:_a.ImageUrlLogin)?session.company.ImageUrlLogin:void 0)}),[company]);const handleUploadLogo=async event=>{setImageError("");const files=(0,file_utils.fz)(event);if(!files||0===files.length)return;if(!(0,image_utils.K)(files[0]))return void setImageError(gettext("Invalid image format"));const file=files[0];await uploadLogo(file)},uploadLogo=async file=>{var _a,_b;setIsUploading(!0);try{const{link}=await(0,media.vj)(file,session.user._id,dist.LWb.Logo),[response,error]=await(0,util.Oi)((()=>api._K.updateWhiteLabel(company._id,{imageUrl:link.accessUrl})));if(response&&(setCompanyLogo(link.accessUrl),(0,toast.tP)({message:gettext("White Labelling enabled for this instance.")})),error){const errorMessage=null===(_b=null===(_a=null==error?void 0:error.response)||void 0===_a?void 0:_a.data)||void 0===_b?void 0:_b.message;(0,toast.Kf)({message:errorMessage||gettext("White Labelling couldn't be enabled for this instance.")}),tracking_utils.A.error(null!=errorMessage?errorMessage:"White Labelling couldn't be enabled for this instance.","WhitelabellingSettingsRenderer",(0,string_utils.hT)(error))}}catch(_c){(0,toast.Kf)({message:gettext("Failed to upload image")}),tracking_utils.A.error("Failed to upload image","WhitelabellingSettingsRenderer")}finally{setIsUploading(!1)}};return react.createElement(settings_card.K,{title:gettext("White Labelling Settings"),footerButton:react.createElement(stencil_generated.B$,{nativeAttributes:{"data-testid":"whitelabelling-save-button"},variant:"filled",color:"primary",loading:isSubmitting,onClick:async()=>{setIsSubmitting(!0);const companyId=company._id;await updateCompany(companyId,highlightColor,gettext("Company color and logo have been successfully updated")),setIsSubmitting(!1)}},gettext("Save changes"))},react.createElement("div",{className:"cat-flex-col cat-gap-m"},react.createElement("label",{className:"cat-label"},gettext("Upload your logo, set your brand colors to deliver a fully branded experience to your users.")),react.createElement("div",null,react.createElement("label",{className:"cat-label cat-mb-m","data-testid":"logo-label"},gettext("Company logo")),react.createElement("div",{className:"cat-flex-col cat-gap-s"},react.createElement(LogoSection,{className:"cat-mb-m"},companyLogo&&react.createElement(shared_react_components.Cr,{imageUrl:companyLogo,fallbackImage:"/images/no-image-16x9.jpg",alt:gettext("Company Logo Image"),token:dist.JRo.FitIn,"data-testid":"company-logo-image-preview"}),!companyLogo&&react.createElement(drag_n_drop_area.l,{onDrop:handleUploadLogo},react.createElement("div",{className:"cat-flex-col cat-items-center cat-text-center",onClick:()=>{var _a;return null===(_a=null==uploaderInputRef?void 0:uploaderInputRef.current)||void 0===_a?void 0:_a.click()}},react.createElement(stencil_generated.k0,{icon:"upload-outlined",size:"m"}),react.createElement("p",{className:"cat-text-s cat-pt-m"},react.createElement("span",null,gettext("Drag and drop your logo here or ")),react.createElement(stencil_generated.B$,{variant:"text",color:"primary",size:"s",loading:isUploading,nativeAttributes:{"data-testid":"logo-upload-button"}},gettext("browse"))," ",react.createElement("span",null,gettext("your computer."))),react.createElement("p",{className:"cat-text-s"},gettext("Aspect ratio 2.75:1; PNG (preferably 32-bit with Alpha Channel) or JPEG; and less than 10MB in size")),react.createElement(image_input.M,{text:void 0,onChange:handleUploadLogo,inputRef:uploaderInputRef,accept:image_utils.Zw,hasCustomText:!0,"data-testid":"image-upload-input"})))),companyLogo&&react.createElement("div",{className:"cat-flex cat-gap-m"},react.createElement(stencil_generated.B$,{nativeAttributes:{"data-testid":"logo-upload-button"},variant:"outlined",color:"primary",loading:isUploading,onClick:()=>{var _a;return null===(_a=null==uploaderInputRef?void 0:uploaderInputRef.current)||void 0===_a?void 0:_a.click()},icon:"plus-outlined"},gettext("Upload new")),react.createElement(stencil_generated.B$,{nativeAttributes:{"data-testid":"logo-delete-button"},variant:"text",color:"primary",loading:isDeleting,onClick:async()=>{var _a,_b;setIsDeleting(!0);const[response,error]=await(0,util.Oi)((()=>api._K.deleteWhiteLabel(company._id)));if(response&&((0,toast.tP)({message:gettext("Company logo has been successfully deleted")}),setCompanyLogo(void 0)),error){const errorMessage=null===(_b=null===(_a=null==error?void 0:error.response)||void 0===_a?void 0:_a.data)||void 0===_b?void 0:_b.message;return(0,toast.Kf)({message:errorMessage||gettext("Company logo couldn't be deleted")}),tracking_utils.A.error("Company logo couldn't be deleted","WhitelabellingSettingsRenderer.handleDeleteLogo",(0,string_utils.hT)(error)),void setIsDeleting(!1)}setIsDeleting(!1)}},gettext("Delete logo")),react.createElement(image_input.M,{text:void 0,onChange:handleUploadLogo,inputRef:uploaderInputRef,accept:image_utils.Zw,hasCustomText:!0,"data-testid":"image-upload-input"}))),imageError&&react.createElement("span",{className:"cat-text-danger"},imageError)),react.createElement("div",{className:"cat-pb-l",style:{width:"fit-content"}},react.createElement(stencil_generated.BU,{type:"color",label:gettext("Company color"),required:!0,value:highlightColor.HighlightColor,onCatChange:event=>{var _a;return setHighlightColor({...highlightColor,HighlightColor:null!==(_a=event.target.value)&&void 0!==_a?_a:"#000000"})},nativeAttributes:{"data-testid":"highlightColor-id"}}))))})),DragonLairLinkCard=()=>react.createElement(settings_card.K,{title:"Labs",dataTestId:"dragon-lair-link-card"},react.createElement(stencil_generated.B$,{url:"/app.dragon-lair/",
113size:"l",nativeAttributes:{"data-testid":"dragon-lair-link"}},"To the Dragon's Lair 🐉"));var pick=__webpack_require__(88542);const GENERAL_FORM_FIELDS=["isSocialInsightsEnabled","ProposedPostNotification","commentEnabled","isArchivedReadEnabled","anonymousEnabled","GoogleOAuth2Enabled","HighlightColor","WithOGTagsLinkFetching","shareTextEditable","contentBooster","feedbackNotification","isSlackAppEnabled","isInfluencerScoreHidden","isGamificationDisabled","isDocumentRepoEnabled","isSAMLSelfServiceEnabled","isHaiiloAIEnabled","isChannelManagerEnabled","isMSTeamsEnabled","isPasswordAuthEnabled","isHideResourcesEnabled","isSimpleProfileEnabled","isSelfRegistrationSettingAvailable","isAccessTokenEnabled","isSamlEnabled","isNonSamlAuthEnabled"],renderCheckbox=(values,fieldName,labelText)=>react.createElement(components.fI,{key:fieldName},react.createElement(formik_esm.D0,{name:fieldName,type:"checkbox",value:values[fieldName]},(({field})=>react.createElement(design_system_components.Sc,{...field,labelText,dataTestId:`${fieldName}-id`})))),general_tab_settings_mapDispatchToProps={updateCompany:effects_updateCompany},GeneralTabSettings=(0,es.Ng)(null,general_tab_settings_mapDispatchToProps)((({company,updateCompany})=>{const{gettext}=(0,use_get_text.z)(),showInvitePoint=company.isGroupEnabled,formFields=showInvitePoint?[...GENERAL_FORM_FIELDS,"invitePoint"]:GENERAL_FORM_FIELDS;return react.createElement(formik_esm.l1,{initialValues:(0,pick.A)(company,formFields),onSubmit:async(values,{setSubmitting})=>{const companyId=company._id;await updateCompany(companyId,values,gettext("General configuration was successfully updated")),setSubmitting(!1)}},(({values,setFieldValue,isSubmitting})=>react.createElement(formik_esm.lV,{className:"formik-form"},react.createElement(design_system_components.Zp,null,react.createElement(design_system_components.Zp.HeaderTitle,{title:gettext("General tab settings")}),react.createElement(design_system_components.Zp.Content,null,react.createElement(components.VP,null,renderCheckbox(values,"ProposedPostNotification",gettext("Admins receive notifications about proposals")),renderCheckbox(values,"commentEnabled",gettext("Enable commenting on posts")),renderCheckbox(values,"isArchivedReadEnabled",gettext("Make archived visible for everyone")),renderCheckbox(values,"anonymousEnabled",gettext("Allow registered users to be anonymous")),renderCheckbox(values,"GoogleOAuth2Enabled",gettext("Allow users to register with Google account")),renderCheckbox(values,"WithOGTagsLinkFetching",gettext("Enable OG Tag fetching")),renderCheckbox(values,"shareTextEditable",gettext("Users can edit the share message when sharing it on social media")),renderCheckbox(values,"contentBooster",gettext("Content Booster (Work in Progress)")),renderCheckbox(values,"feedbackNotification",gettext("Enable feedback notifications")),renderCheckbox(values,"isSlackAppEnabled",gettext("Enable Slack app")),renderCheckbox(values,"isInfluencerScoreHidden",gettext("Hide the Influencer Score widget")),renderCheckbox(values,"isGamificationDisabled",gettext("Hide all Gamification elements")),renderCheckbox(values,"isDocumentRepoEnabled",gettext("Enable documents repository")),renderCheckbox(values,"isSAMLSelfServiceEnabled",gettext("Enable Single Sign-On settings page")),renderCheckbox(values,"isHaiiloAIEnabled",gettext("Enable Haiilo AI provider")),renderCheckbox(values,"isSocialInsightsEnabled",gettext("Enable Social insights settings page")),renderCheckbox(values,"isChannelManagerEnabled",gettext("Enable channel manager functionalities")),renderCheckbox(values,"isMSTeamsEnabled",gettext("Enable Microsoft Teams Integration")),showInvitePoint&&react.createElement(design_system_components.TZ,{type:"number",value:values.invitePoint,min:0,step:1,labelText:gettext("Points for inviting a colleague"),hintElement:gettext("Users will receive points when a colleague they invited joins Smarp"),onChange:event=>setFieldValue("invitePoint",parseInt(event.target.value,10)||0),style:{width:"80px"},dataTestId:"invitePoint-id"}),react.createElement("h6",{className:"cat-h6 cat-mb-l cat-mt-xl"},gettext("Newly migrated from company labs")),renderCheckbox(values,"isPasswordAuthEnabled",gettext("Enable logging in with email & password")),renderCheckbox(values,"isHideResourcesEnabled",gettext("Hide Resources page")),renderCheckbox(values,"isSimpleProfileEnabled",`${gettext("Enable extra user info inputs and popup")} (previously "Show simple profile")`),renderCheckbox(values,"isAccessTokenEnabled","Enable access tokens for public API access"),renderCheckbox(values,"isSelfRegistrationSettingAvailable",gettext("Add admin option to enable users to self register in groups")),renderCheckbox(values,"isSamlEnabled",gettext("Enable logging in with SSO")),renderCheckbox(values,"isNonSamlAuthEnabled",gettext("Enable logging in with email or social networks when SSO is enabled")))),react.createElement(design_system_components.Zp.FooterActions,null,react.createElement(design_system_components.$n,{isLoading:isSubmitting,style:"secondary",text:gettext("Save")}))))))}));var moment=__webpack_require__(95093);class SubdomainConfigurationRenderer extends react.Component{constructor(props,state){super(props,state),this._onSubdomainChange=event=>{this.setState({subdomain:event.target.value})},this._onUserHardLimitChange=event=>{this.setState({userHardLimit:parseInt(event.target.value,10)||0})},this._onResponsibleCSMChange=event=>{this.setState({responsibleCSM:event.target.value})},this._onExpiredAtDateChange=event=>{const expiredAt=event?event._d:null;this.setState({expiredAt})},this._onExpiredAtFocusChange=event=>{this.setState({isExpiredAtFocused:event.focused})},this._onIsGroupEnabledChange=event=>{this.setState({isGroupEnabled:event.target.checked})},this._onSubmit=async()=>{const{isLoading,isExpiredAtFocused,...companySettings}=this.state;if(isLoading)return;this.setState({isLoading:!0});const companyId=this.props.company._id;await this.props.updateCompany(companyId,companySettings,this.context.gettext("Subudomain configuration was successfully updated")),this.setState({isLoading:!1})};const{subdomain,userHardLimit,responsibleCSM,expiredAt,isGroupEnabled}=props.company;this.state={isLoading:!1,subdomain,userHardLimit,responsibleCSM,expiredAt,isGroupEnabled,isExpiredAtFocused:!1}}render(){const{context:{gettext},state:{isLoading,subdomain,userHardLimit,responsibleCSM,expiredAt,isGroupEnabled,isExpiredAtFocused}}=this,formattedExpiredAt=expiredAt?moment(expiredAt):null;return react.createElement(design_system_components.Zp,null,react.createElement(design_system_components.Zp.HeaderTitle,{title:gettext("Subdomain configuration - Smarp options")}),react.createElement(design_system_components.Zp.Content,null,react.createElement(components.VP,null,react.createElement(design_system_components.TZ,{type:"text",value:subdomain,labelText:gettext("Subdomain"),onChange:this._onSubdomainChange,dataTestId:"subdomain-id"}),react.createElement(design_system_components.hK,{size:"xl",dir:"y"}),react.createElement(design_system_components.TZ,{type:"number",value:userHardLimit,labelText:gettext("User hard limit"),onChange:this._onUserHardLimitChange,style:{width:80},dataTestId:"userHardLimit-id"}),react.createElement(design_system_components.hK,{size:"xl",dir:"y"}),react.createElement(design_system_components.TZ,{type:"text",value:responsibleCSM,labelText:gettext("Responsible CSM"),onChange:this._onResponsibleCSMChange,dataTestId:"responsibleCSM-id"}),react.createElement(design_system_components.hK,{size:"xl",dir:"y"}),react.createElement(components.XQ,{id:"expiredAt-id",date:formattedExpiredAt,labelText:gettext("Expiration date"),onDateChange:this._onExpiredAtDateChange,focused:isExpiredAtFocused,onFocusChange:this._onExpiredAtFocusChange,isOutsideRange:()=>!1}),react.createElement(design_system_components.hK,{size:"xl",dir:"y"}),react.createElement(design_system_components.Sc,{value:isGroupEnabled,labelText:gettext("Group enabled"),onChange:this._onIsGroupEnabledChange,dataTestId:"isGroupEnabled-id"}))),react.createElement(design_system_components.Zp.FooterActions,null,react.createElement(design_system_components.$n,{onClick:this._onSubmit,isLoading,style:"secondary",text:gettext("Save")})))}}SubdomainConfigurationRenderer.contextType=lib.dg;const subdomain_configuration_mapDispatchToProps={updateCompany:effects_updateCompany}
113,SubdomainConfiguration=(0,es.Ng)(null,subdomain_configuration_mapDispatchToProps)(SubdomainConfigurationRenderer),EMPTY_PROMPTS={linkPostPrompt:"",videoPostPrompt:"",imagePostPrompt:"",documentPostPrompt:"",articlePostPrompt:"",imageMediaPrompt:"",videoMediaPrompt:"",documentMediaPrompt:"",injectionPrompt:"",styleOfSpeechPrompt:""},PROMPT_FIELDS=[{key:"linkPostPrompt",label:"Link post prompt"},{key:"videoPostPrompt",label:"Video post prompt"},{key:"imagePostPrompt",label:"Image post prompt"},{key:"documentPostPrompt",label:"Document post prompt"},{key:"articlePostPrompt",label:"Article post prompt"},{key:"imageMediaPrompt",label:"Image media prompt"},{key:"videoMediaPrompt",label:"Video media prompt"},{key:"documentMediaPrompt",label:"Document media prompt"},{key:"injectionPrompt",label:"Injection prompt"},{key:"styleOfSpeechPrompt",label:"Style of speech prompt"}],PromptManagement=()=>{const{gettext}=(0,use_get_text.z)(),{session:{company}}=(0,use_session.w)(),[prompts,setPrompts]=react.useState(EMPTY_PROMPTS),[isLoading,setIsLoading]=react.useState(!0),[isSaving,setIsSaving]=react.useState(!1),[isRestricted,setIsRestricted]=react.useState(!1),[hasLoadError,setHasLoadError]=react.useState(!1);react.useEffect((()=>{(async()=>{setIsLoading(!0);const[response,error]=await(0,util.Oi)((()=>api._K.retrieveAIPrompts()));response&&setPrompts(response.data),error&&("403.37"===(0,string_utils.hT)(error)?setIsRestricted(!0):(alert_utils.A.errorFromApi(error,gettext),setHasLoadError(!0),tracking_utils.A.error((0,string_utils.fi)(error),"PromptManagementRenderer.fetchPrompts",(0,string_utils.hT)(error)))),setIsLoading(!1)})()}),[company._id]);const saveButton=isRestricted||isLoading||hasLoadError?void 0:react.createElement(stencil_generated.B$,{variant:"filled",color:"primary",loading:isSaving,onClick:async()=>{setIsSaving(!0);const[,error]=await(0,util.Oi)((()=>api._K.modifyAIPrompts(prompts)));error?(alert_utils.A.errorFromApi(error,gettext),tracking_utils.A.error((0,string_utils.fi)(error),"PromptManagementRenderer.handleSave",(0,string_utils.hT)(error))):alert_utils.A.success(gettext("Prompts were successfully saved")),setIsSaving(!1)},nativeAttributes:{"data-testid":"prompt-management-save-button"}},gettext("Save"));return react.createElement(settings_card.K,{title:gettext("Prompt Management"),dataTestId:"prompt-management-card",footerButton:saveButton},react.createElement(loader.a,{isShow:isLoading}),isRestricted&&react.createElement("p",{"data-testid":"prompt-management-restricted-notice"},gettext("You do not have permission to manage AI prompts for this company.")),!isLoading&&!isRestricted&&!hasLoadError&&PROMPT_FIELDS.map((({key,label})=>react.createElement(stencil_generated.Fc,{key,label,required:!0,className:"cat-mb-m",value:prompts[key],nativeAttributes:{"data-testid":`prompt-${key}`},onCatChange:e=>setPrompts((prev=>{var _a;return{...prev,[key]:null!==(_a=e.target.value)&&void 0!==_a?_a:""}}))}))))},ForSmarpersSettings=(0,es.Ng)((state=>({company:state.Company.company})),{})((({company})=>company?react.createElement("div",{className:"cat-flex-col cat-gap-xl"},react.createElement(GeneralTabSettings,{company}),react.createElement(WhitelabellingSettings,null),react.createElement(DragonLairLinkCard,null),react.createElement(SubdomainConfiguration,{company}),react.createElement(PromptManagement,null)):null));var Collapse=__webpack_require__(62787),modules=__webpack_require__(56848),team_select=__webpack_require__(13745),leaderboard_service=__webpack_require__(13125),show_by_condition=__webpack_require__(5775),Modal=__webpack_require__(76021);class LeaderboardFormModal extends react.Component{constructor(props,state){super(props,state),this.onNameChange=e=>{const leaderboardFilter={...this.props.leaderboardFilter,name:e.target.value};this.props.setFilter(leaderboardFilter)},this.onDateChange=(date,type)=>{const time=moment("from"===type?"00:00:00":"23:59:59","HH:mm:ss"),dateToSet=moment(date);dateToSet.set({hour:time.get("hour"),minute:time.get("minute"),second:time.get("second")});const leaderboardFilter={...this.props.leaderboardFilter};leaderboardFilter[type]=dateToSet,this.props.setFilter(leaderboardFilter)},this.onTypeChange=e=>{const leaderboardFilter={...this.props.leaderboardFilter,type:e.target.value};this.props.setFilter(leaderboardFilter)},this.onSubmit=()=>{this.props.onSubmit()},this.state={isLoading:!1,isFromDateFocus:!1,isToDateFocus:!1}}render(){const{props:{isModalShow,leaderboardFilter,closeModal,isSubmitting},context:{gettext}}=this;if(null===leaderboardFilter)return null;const fromDate=leaderboardFilter.from?moment(leaderboardFilter.from):null,toDate=leaderboardFilter.to?moment(leaderboardFilter.to):null;return react.createElement(Modal.A,{show:isModalShow,onHide:closeModal,className:"modal-default-2 create-leaderboard-modal"},react.createElement(Modal.A.Header,null,react.createElement("div",{className:"modal-title"},gettext("New time filter")),react.createElement("button",{className:"close",onClick:closeModal})),react.createElement(Modal.A.Body,null,react.createElement("form",{id:"AddFilterForm",onSubmit:this.onSubmit},react.createElement("div",{className:"form-group-2",style:{marginTop:0}},react.createElement("span",{className:"section-title"},gettext("Name")),react.createElement("input",{type:"text",value:leaderboardFilter.name,onChange:this.onNameChange,className:"form-control",placeholder:gettext("e.g. This month - France")})),react.createElement("div",{className:"form-group-2 no-margin"},react.createElement("span",{className:"section-title"},gettext("Time range")),leaderboardFilter.type===dist.hqK.Custom&&react.createElement("div",{className:"form-date-period"},gettext("From"),react.createElement(shared_react_components.XQ,{date:fromDate,onDateChange:date=>this.onDateChange(date,"from"),id:"from",required:!0,focused:this.state.isFromDateFocus,onFocusChange:({focused:isFromDateFocus})=>this.setState({isFromDateFocus}),isOutsideRange:()=>!1}),gettext("to"),react.createElement(shared_react_components.XQ,{date:toDate,onDateChange:date=>this.onDateChange(date,"to"),id:"to",required:!0,focused:this.state.isToDateFocus,onFocusChange:({focused:isToDateFocus})=>this.setState({isToDateFocus}),isOutsideRange:date=>date<fromDate}))))),react.createElement(Modal.A.Footer,null,react.createElement(design_system_components.$n,{type:"button",style:"link",onClick:closeModal,text:gettext("Cancel")}),react.createElement(design_system_components.$n,{type:"submit",style:"primary",onClick:this.onSubmit,disabled:""===leaderboardFilter.name,text:gettext("Update"),isLoading:isSubmitting})))}}LeaderboardFormModal.contextType=lib.dg;class LeaderboardFilterCreate extends react.Component{constructor(props,state){super(props,state),this.openModal=()=>{this.setState({isModalShow:!0})},this.closeModal=()=>{this.setState({isModalShow:!1,isLoading:!1,leaderboardFilter:this.newItem()})},this.setFilter=leaderboardFilter=>{this.setState({leaderboardFilter})},this.onSubmit=async()=>
113{if(!this.state.isLoading){this.setState({isLoading:!0});try{const newFilter=await leaderboard_service.U2(this.state.leaderboardFilter);this.props.onCreate(newFilter),this.closeModal()}catch(err){alert_utils.A.errorFromApi(err,this.context.gettext),tracking_utils.A.error((0,string_utils.fi)(err),"LeaderboardFilterCreate.onSubmit",(0,string_utils.hT)(err))}finally{this.setState({isLoading:!1})}}},this.newItem=()=>{const end=new Date,start=new Date;return end.setHours(23,59,59),end.setDate(start.getDate()+30),start.setHours(0,0,0),{_id:"",name:"",type:dist.hqK.Custom,from:start.toISOString(),to:end.toISOString()}},this.state={isModalShow:!1,isLoading:!1,leaderboardFilter:this.newItem()}}render(){const{state:{isModalShow,leaderboardFilter},context:{gettext}}=this;return react.createElement("div",{className:"form-group"},react.createElement(design_system_components.$n,{onClick:this.openModal,style:"primary",text:gettext("New filter"),icon:"fas-plus"}),react.createElement(LeaderboardFormModal,{onSubmit:this.onSubmit,isSubmitting:this.state.isLoading,leaderboardFilter,setFilter:this.setFilter,isModalShow,closeModal:this.closeModal}))}}LeaderboardFilterCreate.contextType=lib.dg;class LeaderboardFilterDelete extends react.Component{constructor(props,state){super(props,state),this.onSubmit=async()=>{try{return this.setState({isLoading:!0}),await leaderboard_service.Sy(this.props.leaderboardFilter),this.setState({isLoading:!1}),this.props.onDeleted(this.props.leaderboardFilter),void this.props.closeModal()}catch(err){this.setState({isLoading:!1}),alert_utils.A.errorFromApi(err,this.context.gettext),tracking_utils.A.error((0,string_utils.fi)(err),"LeaderboardFilterDelete.onSubmit",(0,string_utils.hT)(err))}},this.state={isLoading:!1}}render(){const{gettext}=this.context,{isModalShow,leaderboardFilter,closeModal}=this.props;return null===leaderboardFilter?null:react.createElement(Modal.A,{show:isModalShow,onHide:closeModal,className:"modal-default-2"},react.createElement(Modal.A.Header,null,react.createElement("div",{className:"modal-title"},gettext("Delete filter")),react.createElement("a",{className:"close",onClick:closeModal})),react.createElement(Modal.A.Body,null,gettext(`Are you sure you want to delete “${leaderboardFilter.name}” filter?`)),react.createElement(Modal.A.Footer,null,react.createElement(design_system_components.$n,{style:"link",onClick:closeModal,text:gettext("Cancel")}),react.createElement(design_system_components.$n,{style:"primary",onClick:this.onSubmit,text:gettext("Delete")})))}}LeaderboardFilterDelete.contextType=lib.dg;class LeaderboardFilterEdit extends react.Component{constructor(props,state){super(props,state),this.setFilter=leaderboardFilter=>{this.setState({edittingLeaderboardFilter:leaderboardFilter})},this.onSubmit=async()=>{if(!this.state.isLoading){this.setState({isLoading:!0});try{return await leaderboard_service.Wf(this.state.edittingLeaderboardFilter),void this.props.onUpdated(this.state.edittingLeaderboardFilter)}catch(err){alert_utils.A.errorFromApi(err,this.context.gettext),tracking_utils.A.error((0,string_utils.fi)(err),"LeaderboardFilterEdit.onSubmit",(0,string_utils.hT)(err))}}},this.state={isLoading:!1,edittingLeaderboardFilter:this.props.leaderboardFilter||null}}UNSAFE_componentWillReceiveProps(nextProps){nextProps.leaderboardFilter!==this.props.leaderboardFilter&&this.setState({edittingLeaderboardFilter:nextProps.leaderboardFilter})}componentWillUnmount(){this.setState({isLoading:!1})}render(){const{edittingLeaderboardFilter,isLoading}=this.state;return react.createElement(LeaderboardFormModal,{onSubmit:this.onSubmit,isSubmitting:isLoading,leaderboardFilter:edittingLeaderboardFilter,setFilter:this.setFilter,isModalShow:this.props.isModalShow,closeModal:this.props.closeModal})}}const LeaderboardDragHandle=(0,commonjs.D)((()=>react.createElement("div",null)));class LeaderboardTableRow extends react.Component{constructor(props,state){super(props,state),this.onRowHover=()=>{this.setState({isHover:!0})},this.offRowHover=()=>{this.setState({isHover:!1})},this.openEditModal=()=>{this._isDefaultLeaderboard()||this.setState({isEditModalOpen:!0})},this.closeEditModal=()=>{this.setState({isEditModalOpen:!1})},this.openDeleteModal=()=>{this._isDefaultLeaderboard()||this.setState({isDeleteModalOpen:!0})},this.closeDeleteModal=()=>{this.setState({isDeleteModalOpen:!1})},this.getFormattedDate=inputDate=>moment(inputDate).format("DD.MM.YYYY"),this.getLeaderboardDateDisplay=leaderboardFilter=>{switch(leaderboardFilter.type){case dist.hqK.ThisWeek:return this.context.gettext("Current calendar week (Mon-Sun)");case dist.hqK.ThisMonth:return this.context.gettext("Current calendar month");case dist.hqK.Custom:return`${this.getFormattedDate(leaderboardFilter.from)} - ${this.getFormattedDate(leaderboardFilter.to)}`;default:return"-"}},this._isDefaultLeaderboard=()=>this.props.leaderboardFilter&&this.props.leaderboardFilter.type!==dist.hqK.Custom,this.state={isHover:!1,isEditModalOpen:!1,isDeleteModalOpen:!1}}render(){const{props:{leaderboardFilter},context:{gettext}}=this,leaderboardDateDisplay=this.getLeaderboardDateDisplay(leaderboardFilter);return react.createElement("tr",{onMouseOver:this.onRowHover,onMouseLeave:this.offRowHover,className:`${!this._isDefaultLeaderboard()&&this.state.isHover&&"is-hover"}`}
113,react.createElement("td",{className:"reorder-grip"},react.createElement(LeaderboardDragHandle,null)),react.createElement("td",{className:`filter ${!this._isDefaultLeaderboard()&&"editable"}`},react.createElement("div",{onClick:this.openEditModal},gettext(leaderboardFilter.name),!this._isDefaultLeaderboard()&&this.state.isHover&&react.createElement("i",{style:{marginLeft:"10px"},className:"i-pencil-square-o"}),this._isDefaultLeaderboard()&&react.createElement("span",{style:{marginLeft:"10px"},className:"placeholder-text"},gettext("(Default)"))),react.createElement(LeaderboardFilterEdit,{leaderboardFilter,onUpdated:this.props.onFilterUpdate,closeModal:this.closeEditModal,isModalShow:this.state.isEditModalOpen})),react.createElement("td",null,leaderboardDateDisplay),react.createElement("td",{className:"action-group"},!this._isDefaultLeaderboard()&&react.createElement(stencil_generated.B$,{onClick:this.openDeleteModal,icon:"trash-outlined",a11yLabel:gettext("Delete time filter"),nativeAttributes:{"data-testid":"leaderboard-filter-delete-button"}}),react.createElement(LeaderboardFilterDelete,{leaderboardFilter,onDeleted:this.props.onFilterDelete,closeModal:this.closeDeleteModal,isModalShow:this.state.isDeleteModalOpen})))}}LeaderboardTableRow.contextType=lib.dg;class LeaderboardSortableTable extends react.Component{constructor(){super(...arguments),this.onSortEnd=({oldIndex,newIndex})=>{const newOrderedLeaderboardList=(0,commonjs.be)(this.props.orderedLeaderboardList,oldIndex,newIndex);this.props.onSortEnd(newOrderedLeaderboardList)}}render(){const{props:{orderedLeaderboardList},context:{gettext}}=this,SortableItem=(0,commonjs.Zj)((({value})=>{const leaderboard=value.value;return react.createElement(LeaderboardTableRow,{leaderboardFilter:leaderboard,onFilterUpdate:this.props.onFilterUpdate,onFilterDelete:this.props.onFilterDelete})})),SortableList=(0,commonjs.q6)((({items})=>react.createElement("tbody",null,items.map(((value,index)=>react.createElement(SortableItem,{key:`item-${index}`,index,value:{value}}))))));return orderedLeaderboardList.length?react.createElement("table",{className:"horizontal-striped-table leaderboard-table"},react.createElement("thead",null,react.createElement("tr",null,react.createElement("th",{className:"reorder-grip"}),react.createElement("th",{className:"filter"}
113,gettext("Time filter")),react.createElement("th",null,gettext("Date period")),react.createElement("th",null))),react.createElement(SortableList,{items:orderedLeaderboardList,onSortEnd:this.onSortEnd,useDragHandle:!0,helperClass:"table-row-drag-active"})):null}}LeaderboardSortableTable.contextType=lib.dg;var dayjs_min=__webpack_require__(74353),query_string=__webpack_require__(86663);const FixedWidthContainer=emotion_styled_browser_esm.A.div`
114	flex: 0 0 180px;
115`,CatDateRange=({startDate,endDate,onStartDateChange,onEndDateChange,onDateRangeChange,minDate,maxDate,disabled})=>{const{gettext}=(0,use_get_text.z)(),handleStartDateChange=react.useCallback((value=>{if(!value)return;const newStartDate=dayjs_min(value);null==onStartDateChange||onStartDateChange(newStartDate),null==onDateRangeChange||onDateRangeChange({startDate:newStartDate,endDate})}),[onStartDateChange,onDateRangeChange,endDate]),handleEndDateChange=react.useCallback((value=>{if(!value)return;const newEndDate=dayjs_min(value);null==onEndDateChange||onEndDateChange(newEndDate),null==onDateRangeChange||onDateRangeChange({startDate,endDate:newEndDate})}),[onEndDateChange,onDateRangeChange,startDate]),labelFrom=gettext("from"),labelTo=gettext("to");return react.createElement("div",{className:"cat-flex cat-gap-m cat-text-m cat-text-secondary"},react.createElement(FixedWidthContainer,{className:"cat-flex-col cat-gap-xs"},react.createElement("label",{htmlFor:"cat-date-range-start"},labelFrom),react.createElement(stencil_generated.dj,{id:"cat-date-range-start",required:!0,label:labelFrom,labelHidden:!0,value:startDate?startDate.format("YYYY-MM-DD"):"",min:minDate?minDate.format("YYYY-MM-DD"):void 0,max:endDate?endDate.format("YYYY-MM-DD"):maxDate?maxDate.format("YYYY-MM-DD"):void 0,readonly:disabled,onCatChange:e=>handleStartDateChange(e.detail),nativeAttributes:{"data-testid":"cat-date-range-start"}})),react.createElement(FixedWidthContainer,{className:"cat-flex-col cat-gap-xs"},react.createElement("label",{htmlFor:"cat-date-range-end"},labelTo),react.createElement(stencil_generated.dj,{id:"cat-date-range-end",required:!0,label:labelTo,labelHidden:!0,value:endDate?endDate.format("YYYY-MM-DD"):"",min:startDate?startDate.format("YYYY-MM-DD"):minDate?minDate.format("YYYY-MM-DD"):void 0,max:maxDate?maxDate.format("YYYY-MM-DD"):void 0,readonly:disabled,onCatChange:e=>handleEndDateChange(e.detail),nativeAttributes:{"data-testid":"cat-date-range-end"}})))},LeaderboardExportData_Container=emotion_styled_browser_esm.A.div`
116	margin-top: 10px;
117`,RadioGroup=emotion_styled_browser_esm.A.div`
118	padding-left: 15px;
119`,TimeFrameContainer=RadioGroup,LeaderboardExportData_SectionTitle=emotion_styled_browser_esm.A.div`
120	font-weight: 400;
121	font-size: 16px;
122	color: #000000;
123`,LeaderboardExportData=()=>{const{gettext}=(0,use_get_text.z)(),{session}=(0,use_session.w)(),[isModalVisible,setIsModalVisible]=react.useState(!1),[isGroupLeaderboard,setIsGroupLeaderboard]=react.useState(!0),[dateRange,setDateRange]=react.useState({startDate:dayjs_min().subtract(30,"days"),endDate:dayjs_min().subtract(1,"days")}),toggleModal=()=>{setIsModalVisible(!isModalVisible)},{startDate,endDate}=dateRange;return react.createElement(LeaderboardExportData_Container,null,react.createElement(design_system_components.$n,{onClick:toggleModal,style:"secondary",text:gettext("Export CSV"),icon:"fas-download"}),react.createElement(design_system_components.Au,{show:isModalVisible,onClose:toggleModal,width:640},react.createElement(design_system_components.Au.Header,{title:gettext("Export leaderboard")}),react.createElement(design_system_components.Au.Content,null,react.createElement(components.VP,null,react.createElement(LeaderboardExportData_SectionTitle,null,gettext("Please select which leaderboard you want to export"),":"),react.createElement(design_system_components.hK,{size:"m",dir:"y"}),react.createElement(RadioGroup,{role:"radiogroup","aria-label":"leaderboard options"},react.createElement(design_system_components.a,{label:gettext("My group"),value:"",checked:isGroupLeaderboard,name:"my group",onChange:()=>setIsGroupLeaderboard(!0)}),react.createElement(design_system_components.hK,{size:"xs",dir:"y"}),react.createElement(design_system_components.a,{label:gettext("Whole company"),value:"",dataTestId:"statusActive-id",checked:!isGroupLeaderboard,name:"whole company",onChange:()=>setIsGroupLeaderboard(!1)})),react.createElement(design_system_components.hK,{size:"m",dir:"y"}),react.createElement(LeaderboardExportData_SectionTitle,null,gettext("Select time frame"),":"),react.createElement(design_system_components.hK,{size:"m",dir:"y"}),react.createElement(TimeFrameContainer,null,react.createElement(CatDateRange,{onDateRangeChange:setDateRange,startDate,endD
123ate,maxDate:dayjs_min()})),react.createElement(design_system_components.hK,{size:"xxl",dir:"y"}))),react.createElement(design_system_components.Au.FooterActions,null,react.createElement(design_system_components.$n,{type:"submit",style:"secondary",text:gettext("Cancel"),onClick:toggleModal}),react.createElement(design_system_components.hK,{dir:"x",size:"s"}),react.createElement(design_system_components.$n,{type:"submit",style:"primary",text:gettext("Export"),onClick:()=>{window.open(`https://${session.company.subdomain}.smarpshare.com/api/leaderboard3/export/csv?${(()=>{let params={dateFrom:startDate.startOf("day").valueOf(),dateTo:endDate.endOf("day").valueOf()};return isGroupLeaderboard&&(params={...params,groupId:session.user.groupId}),query_string.As(params)})()}`),toggleModal()}}))))},LeaderboardSettings_Row=emotion_styled_browser_esm.A.div`
124	display: flex;
125	justify-content: space-between;
126`,InnerRow=emotion_styled_browser_esm.A.div`
127	display: flex;
128	justify-content: flex-end;
129	gap: 6px;
130`;class Leaderboards extends react.Component{constructor(props,state){super(props,state),this.SUCCESS_ALERT=this.context.gettext("Leaderboards settings have been updated!"),this.initLeaderboardSetting=async()=>{try{const settings=await leaderboard_service.mt();return this.setState({leaderboardSettings:settings}),settings}catch(err){alert_utils.A.errorFromApi(err,this.context.gettext),tracking_utils.A.error((0,string_utils.fi)(err),"Leaderboards.initLeaderboardSetting",(0,string_utils.hT)(err))}},this.addNewFilter=newFilter=>{const leaderboardSettings={...this.state.leaderboardSettings},newList=leaderboardSettings.orderedLeaderboardList.concat(newFilter);leaderboardSettings.orderedLeaderboardList=newList,this.setState({leaderboardSettings}),this._alertSuccess()},this.onFilterUpdate=editedFilter=>{const leaderboardSettings={...this.state.leaderboardSettings},list=leaderboardSettings.orderedLeaderboardList.concat(),editIndex=list.findIndex((item=>item._id===editedFilter._id));editIndex<0||(list[editIndex]=editedFilter,leaderboardSettings.orderedLeaderboardList=list,this.setState({leaderboardSettings}),this._alertSuccess())},this.onFilterDelete=deletedFilter=>{const leaderboardSettings={...this.state.leaderboardSettings},list=leaderboardSettings.orderedLeaderboardList.filter((item=>item._id!==deletedFilter._id));leaderboardSettings.orderedLeaderboardList=list,this.setState({leaderboardSettings}),this._alertSuccess()},this.toggleLeaderboardEnabled=()=>{const leaderboardSettings={...this.state.leaderboardSettings};leaderboardSettings.leaderboardEnabled=!leaderboardSettings.leaderboardEnabled,this.setState({leaderboardSettings})},this.onSortEnd=newList=>{const leaderboardSettings={...this.state.leaderboardSettings};leaderboardSettings.orderedLeaderboardList=newList,this.setState({leaderboardSettings})},this.setExcludeTeams=excludedTeamIdList=>{const leaderboardSettings={...this.state.leaderboardSettings};leaderboardSettings.excludedTeamIdList=excludedTeamIdList.filter((id=>""!==id)),this.setState({leaderboardSettings})},this.submit=async()=>{if(this.state.isSending)return;
130const reqParams={orderedLeaderboardIdList:this.state.leaderboardSettings.orderedLeaderboardList.map((filter=>filter._id)),leaderboardEnabled:this.state.leaderboardSettings.leaderboardEnabled,excludedTeamIdList:this.state.leaderboardSettings.excludedTeamIdList};try{this.setState({isSending:!0}),await leaderboard_service.DZ(reqParams),this._alertSuccess()}catch(err){alert_utils.A.errorFromApi(err,this.context.gettext),tracking_utils.A.error((0,string_utils.fi)(err),"Leaderboards.submit",(0,string_utils.hT)(err))}this.setState({isSending:!1})},this.scrollOnSectionLeaderboard=()=>{"leaderboard"===getHashQueryParam("section")&&modules.XG.scrollTo("leaderboard-setting",{duration:1e3,smooth:!0})},this._alertSuccess=()=>{alert_utils.A.success(this.SUCCESS_ALERT)},this.state={leaderboardSettings:null,isSending:!1}}componentDidMount(){this.scrollOnSectionLeaderboard(),this.initLeaderboardSetting()}render(){const{gettext}=this.context;if(!this.state.leaderboardSettings)return react.createElement(modules.Hg,{name:"leaderboard-setting"},react.createElement(loader.a,{isShow:!0}));const{leaderboardSettings:{leaderboardEnabled,orderedLeaderboardList,excludedTeamIdList},isSending}=this.state,{company}=this.props,ExcludeGroupSetting=react.createElement(react.Fragment,null,react.createElement("div",{className:"section-title"},gettext("Hide teams from leaderboard")),react.createElement(team_select.E,{setTeamList:this.setExcludeTeams,selectedTeamList:excludedTeamIdList,simpleValue:!0}));return react.createElement(design_system_components.Zp,null,react.createElement(design_system_components.Zp.HeaderTitle,{title:gettext("Leaderboards")}),react.createElement(design_system_components.Zp.Content,null,react.createElement(modules.Hg,{name:"leaderboard-setting"},react.createElement("div",{className:"form-group-leaderboard large-margin"},react.createElement("div",{className:"form-group-leaderboard"},react.createElement("p",{className:"input-label"},gettext("Showcase your best-performing users of the week, month or all time. Users can compare their performance to their team members by filtering the leaderboard.")),react.createElement("p",{className:"input-label"},gettext("In addition to default time filters, you can create custom time periods for special competitions.")),company.isGroupEnabled&&react.createElement("p",{className:"input-label"},gettext("Leaderboards will only show users from your own group.")))),react.createElement("div",{className:"form-group-leaderboard"},react.createElement(LeaderboardSettings_Row,null,react.createElement("div",{className:"enable-leaderboard-checkbox-positioner"},react.createElement(design_system_components.Sc,{value:leaderboardEnabled,labelText:gettext("Enable Leaderboard"),onChange:this.toggleLeaderboardEnabled,dataTestId:"leaderboardEnabled-id"})),react.createElement(show_by_condition.q,{isShow:!!leaderboardEnabled},react.createElement(InnerRow,null,react.createElement(LeaderboardFilterCreate,{onCreate:this.addNewFilter}),react.createElement(LeaderboardExportData,null)))),react.createElement(show_by_condition.q,{isShow:!leaderboardEnabled},react.createElement(design_system_components.hK,{dir:"y",size:"xs"})),react.createElement(Collapse.A,{in:!!leaderboardEnabled,timeout:300},react.createElement("div",null,react.createElement("div",{className:"form-group-leaderboard large-margin"},react.createElement(LeaderboardSortableTable,{orderedLeaderboardList,onSortEnd:this.onSortEnd,onFilterUpdate:this.onFilterUpdate,onFilterDelete:this.onFilterDelete})),react.createElement("div",{className:"md-block"},react.createElement("div",{className:"form-group-leaderboard large-margin"},ExcludeGroupSetting)),react.createElement("div",{className:"clear"})))))),react.createElement(design_system_components.Zp.FooterActions,null,react.createElement(design_system_components.$n,{onClick:this.submit,isLoading:isSending,style:"secondary",text:gettext("Save")})))}}Leaderboards.contextType=lib.dg;const EMAIL_VALIDATION_REGEX=/^[-a-z0-9~!$%^&*_=+}{'?]+(\.[-a-z0-9~!$%^&*_=+}{'?]+)*@([a-z0-9_][-a-z0-9_]*(\.[-a-z0-9_]+)*\.(aero|arpa|biz|com|coop|edu|gov|info|int|mil|museum|name|net|org|pro|travel|mobi|[a-z][a-z])|([0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}))(:[0-9]{1,5})?$/i;class PerksRenderer extends react.Component{constructor(props,state){super(props,state),this._onRewardEnabledChange=event=>{this.setState({RewardEnabled:event.target.checked})},this._onRewardEmailSetChange=rewardEmailSet=>{const{rewardEmailInputValue}=this.state;return 0===rewardEmailInputValue.length||EMAIL_VALIDATION_REGEX.test(rewardEmailInputValue)?this.setState({rewardEmailSet,rewardEmailInputValueIsInvalid:!1}):this.setState({rewardEmailInputValueIsInvalid:!0})},this._rewardEmailInputValueChange=rewardEmailInputValue=>{this.setState((({rewardEmailInputValueIsInvalid})=>rewardEmailInputValueIsInvalid&&""===rewardEmailInputValue?null:{rewardEmailInputValue,rewardEmailInputValueIsInvalid:!1}))},this._onSubmit=async()=>{const{isLoading,RewardEnabled,rewardEmailSet}=this.state;if(isLoading)return;this.setState({isLoading:!0});const companyId=this.props.company._id;await this.props.updateCompany(companyId,{RewardEnabled,rewardEmailSet},this.context.gettext("Perks configuration was successfully updated")),this.setState({isLoading:!1,rewardEmailInputValue:"",rewardEmailInputValueIsInvalid:!1})};const{RewardEnabled,rewardEmailSet}=props.company;this.state={isLoading:!1,RewardEnabled,rewardEmailSet,rewardEmailInputValue:"",rewardEmailInputValueIsInvalid:!1}}render(){const{context:{gettext},state}=this,{isLoading,RewardEnabled,rewardEmailSet,rewardEmailInputValue,rewardEmailInputValueIsInvalid}=state,tagsInputStyle={width:150,height:45,...rewardEmailInputValueIsInvalid?{color:"red"}:{}};return react.createElement(design_system_components.Zp,null,react.createElement(design_system_components.Zp.HeaderTitle,{title:gettext("Perks")}),react.createElement(design_system_components.Zp.Content,null,react.createElement(design_system_components.dh,{labelText:gettext("Recognize your users for great performance by using Perks.")}),react.createElement(Row.f,null,react.createElement(design_system_components.Sc,{value:RewardEnabled,labelText:gettext("Enable rewards"),onChange:this._onRewardEnabledChange,dataTestId:"RewardEnabled-id"})),react.createElement(Row.f,null,react.createElement(design_system_components.ks,{labelClassName:"col_1_of_1",labelText:gettext("Emails of people in charge of rewards")},(labelMarkup=>react.createElement(react.Fragment,null,labelMarkup,react.createElement(design_system_components.um,{onlyUnique:!0,addOn
130Blur:!0,inputValue:rewardEmailInputValue,onChangeInput:this._rewardEmailInputValueChange,value:rewardEmailSet,onChange:this._onRewardEmailSetChange,inputProps:{placeholder:"[email protected]",style:tagsInputStyle,"data-testid":"rewardEmailSet-id"}})))))),react.createElement(design_system_components.Zp.FooterActions,null,react.createElement(design_system_components.$n,{onClick:this._onSubmit,isLoading,style:"secondary",text:gettext("Save")})))}}PerksRenderer.contextType=lib.dg;const Perks_mapDispatchToProps={updateCompany:effects_updateCompany},Perks=(0,es.Ng)(null,Perks_mapDispatchToProps)(PerksRenderer);class GamificationSettingsRenderer extends react.Component{render(){const{company}=this.props;return company?react.createElement(react.Fragment,null,react.createElement(Row.f,null,react.createElement(Perks,{company})),react.createElement(Row.f,null,react.createElement(Leaderboards,{company}))):react.createElement(react.Fragment,null)}}const GamificationSettings=(0,es.Ng)((state=>({company:state.Company.company})),{})(GamificationSettingsRenderer);var OccupiedCapacityBar=__webpack_require__(18332);const Progress=emotion_styled_browser_esm.A.progress`
131	${({theme:{cat,color}})=>`\n\t\twidth: 226px;\n\t\theight: 6px;\n\t\tborder: none;\n\n\t\t&::-webkit-progress-bar {\n\t\t\tbackground-color: ${cat.color.uiBackgroundCanvas};\n\t\t\tborder-radius: ${cat.radius.l};\n\t\t}\n\n\t\t&::-webkit-progress-value {\n\t\t\tbackground-color: ${color.PrimaryDefault};\n\t\t\tborder-radius: ${cat.radius.l};\n\t\t}\n\t`}
132`,ContractSalesPackage=({totalCapacity,occupiedCapacity})=>{const{gettext}=(0,use_get_text.z)();if(totalCapacity<=0)return react.createElement(authorize._,{roles:[dist.u8N.Smarper,dist.u8N.Partner]},react.createElement("div",{className:"cat-flex-col cat-gap-s"},react.createElement("h3",{className:"cat-h5"},gettext("Current Plan")),react.createElement("span",{className:"cat-text-m"},gettext("User quota is not set."))));const freeCapacity=totalCapacity-occupiedCapacity,occupiedPercentage=occupiedCapacity/totalCapacity*100;return react.createElement("div",{className:"cat-flex-col cat-gap-s cat-text-m"},react.createElement("h3",{className:"cat-h5"},gettext("Package details")),react.createElement("span",null,gettext("User quota")),react.createElement("div",{className:"cat-flex-col cat-gap-s cat-mt-m"},react.createElement("div",{className:"cat-flex-row cat-gap-s cat-items-center"},react.createElement("span",null,`${occupiedPercentage.toFixed(1)}%`),react.createElement(Progress,{value:occupiedPercentage,max:100}))),react.createElement("div",{className:"cat-flex-row cat-gap-s cat-mt-l"},react.createElement("span",null,gettext("Total seats"),":"),react.createElement("span",null,(0,OccupiedCapacityBar.a)(totalCapacity))),react.createElement("div",{className:"cat-flex-row cat-gap-s"},react.createElement("span",null,gettext("Seats left"),":"),react.createElement("span",null,(0,OccupiedCapacityBar.a)(freeCapacity))),react.createElement("p",{className:"cat-mt-l"},gettext("If you want to update your package, please contact your customer success manager or"),react.createElement("a",{href:"mailto:[email protected]",target:"_blank",rel:"noopener noreferrer",className:"cat-ml-xs"},"[email protected]")))};var TimeoutFormUnit,formatting=__webpack_require__(51752);!function(TimeoutFormUnit){TimeoutFormUnit.Minute="minutes",TimeoutFormUnit.Hour="hours",TimeoutFormUnit.Day="days"}(TimeoutFormUnit||(TimeoutFormUnit={}));const SECONDS_PER_UNIT={[TimeoutFormUnit.Day]:formatting.rC*formatting.Tm*formatting.Rc,[TimeoutFormUnit.Hour]:formatting.Tm*formatting.Rc,[TimeoutFormUnit.Minute]:formatting.Rc},SessionTimeout=({sessionTimeout,isValid,handleValueChange,handleUnitChange})=>{var _a;const{gettext}=(0,use_get_text.z)(),unitOptions=react.useMemo((()=>new Map(Object.values(TimeoutFormUnit).map((unit=>[unit,unit])))),[]);return react.createElement("div",{className:"cat-flex-col"},react.createElement("h3",{className:"cat-h5 cat-mb-s","data-testid":"session-timeout-label"},gettext("Session timeout")),react.createElement("div",{className:"cat-flex cat-gap-m"},react.createElement(stencil_generated.BU,{label:gettext("Log users out automatically after"),value:null===(_a=sessionTimeout.value)||void 0===_a?void 0:_a.toString(),onCatChange:event=>{event.target.value?handleValueChange(parseInt(event.target.value)):handleValueChange(null)},nativeAttributes:{"data-testid":"company-session-time-out-number-input"},requiredMarker:"none",type:"number",style:{width:"237px"},errors:!isValid}),react.createElement(cat_select_facade.j,{style:{width:"131px"},required:!0,options:unitOptions,nativeAttributes:{autocomplete:"off","data-testid":"company-session-time-out-unit-select"},placeholder:gettext("Unit"),noItems:gettext("No matching unit found"),value:sessionTimeout.unit,onCatChange:event=>{event.target.value&&event.target.value!==sessionTimeout.unit&&handleUnit
132Change(event.target.value)},errors:!isValid})),!isValid&&react.createElement("div",{className:"cat-text-m cat-text-danger","data-testid":"session-timeout-error-message"},`${gettext("Please choose a duration between")} 1 ${gettext("minute and")} 365 ${gettext("days")}.`))},company_general_info_FixedWidthContainer=emotion_styled_browser_esm.A.div`
133	width: 370px;
134`,company_general_info_mapDispatchToProps={updateCompany:effects_updateCompany},CompanyGeneralInfo=(0,es.Ng)(null,company_general_info_mapDispatchToProps)((({updateCompany})=>{const{gettext}=(0,use_get_text.z)(),{session:{company:{name,userHardLimit,AllUserCount,_id,customSessionTTLSec}}}=(0,use_session.w)(),[companyName,setCompanyName]=react.useState(name),[sessionTimeout,setSessionTimeout]=react.useState((seconds=>{if(seconds<=0)return{value:0,unit:TimeoutFormUnit.Minute};const orderedUnits=[TimeoutFormUnit.Day,TimeoutFormUnit.Hour,TimeoutFormUnit.Minute];for(const unit of orderedUnits)if(seconds%SECONDS_PER_UNIT[unit]==0)return{value:seconds/SECONDS_PER_UNIT[unit],unit};return{value:Math.round(seconds/SECONDS_PER_UNIT[TimeoutFormUnit.Minute]),unit:TimeoutFormUnit.Minute}})(customSessionTTLSec)),[isSessionTimeoutValid,setIsSessionTimeoutValid]=react.useState(!0),[isSavingChanges,setIsSavingChanges]=react.useState(!1);return react.createElement(settings_card.K,{title:gettext("General information"),footerButton:react.createElement(stencil_generated.B$,{onClick:async()=>{(timeout=>{const{value,unit}=timeout;if(!value||!(unit in SECONDS_PER_UNIT))return!1;const sessionTimeoutValueInSeconds=value*SECONDS_PER_UNIT[unit],MIN_SESSION_TIMEOUT_IN_SECONDS=1*SECONDS_PER_UNIT[TimeoutFormUnit.Minute],MAX_SESSION_TIMEOUT_IN_SECONDS=365*SECONDS_PER_UNIT[TimeoutFormUnit.Day];return sessionTimeoutValueInSeconds>=MIN_SESSION_TIMEOUT_IN_SECONDS&&sessionTimeoutValueInSeconds<=MAX_SESSION_TIMEOUT_IN_SECONDS})(sessionTimeout)?(setIsSavingChanges(!0),await updateCompany(_id,{name:companyName,customSessionTTLSec:sessionTimeout.value*SECONDS_PER_UNIT[sessionTimeout.unit]},gettext("Company configuration was successfully updated.")),setIsSavingChanges(!1)):setIsSessionTimeoutValid(!1)},nativeAttributes:{"data-testid":"general-info-save-button"},variant:"filled",color:"primary",loading:isSavingChanges},gettext("Save changes"))},react.createElement("div",{className:"cat-flex-col cat-gap-xl"},react.createElement(company_general_info_FixedWidthContainer,null,react.createElement(stencil_generated.BU,{label:gettext("Company name"),placeholder:gettext("Add company name"),value:companyName,onCatChange:event=>{event.target.value&&setCompanyName(event.target.value)},nativeAttributes:{"data-testid":"company-name-input"},requiredMarker:"none"})),react.createElement(company_general_info_FixedWidthContainer,null,react.createElement(SessionTimeout,{sessionTimeout,isValid:isSessionTimeoutValid,handleUnitChange:unit=>{setIsSessionTimeoutValid(!0),setSessionTimeout({...sessionTimeout,unit})},handleValueChange:value=>{setIsSessionTimeoutValid(!0),setSessionTimeout({...sessionTimeout,value})}})),react.createElement(ContractSalesPackage,{totalCapacity:userHardLimit,occupiedCapacity:AllUserCount})))})),Input=(emotion_styled_browser_esm.A.table`
135	${({theme:{cat:{fontSize,fontWeight,spacing,color,lineHeight}}})=>`\n        border-collapse: collapse;\n\n\t    thead {\n\t\t    tr {\n\t\t\t    border-bottom: 2px solid ${color.uiBackgroundSkeleton};\n\n\t\t\t    th {\n\t\t\t\t    font-size: ${fontSize.h6};\n\t\t\t\t    font-weight: ${fontWeight.head};\n\t\t\t\t    line-height: ${lineHeight.h6};\n\t\t\t\t    padding: ${spacing.s};\n\t\t\t\t    color: ${color.uiFontMuted};\n\t\t\t\t    text-align: left;\n\t\t\t    }\n\t\t    }\n\t    }\n\n\t    tbody {\n\t\t    tr {\n\t\t\t    border-bottom: 1px solid ${color.uiBackgroundSkeleton};\n\t\t\t    td {\n\t\t\t        padding: ${spacing.xl} ${spacing.s} ${spacing.m} ${spacing.s};\n\t\t\t\t    font-size: ${fontSize.h5};\n\t\t\t\t    font-weight: ${fontWeight.body};\n\t\t\t\t    line-height: ${lineHeight.h5};\n\t\t\t\t    text-align: left;\n\t\t\t    }\n\t\t    }\n\t    }\n    `}
136`,(0,emotion_styled_browser_esm.A)(stencil_generated.BU)`
137	width: 370px;
138`);var reused_styled_components=__webpack_require__(79595);const GroupGeneralInfo=(0,es.Ng)(((state,{groupId})=>{var _a;return{group:null===(_a=state.Group.groupList[groupId])||void 0===_a?void 0:_a.general,isFetchingGroups:state.Group.isFetching}}
138),(dispatch=>(0,redux.bindActionCreators)({fetchGroups:effects.pl},dispatch)))((({group,isFetchingGroups,fetchGroups})=>{const{gettext}=(0,use_get_text.z)(),isDataLoaded=void 0!==(null==group?void 0:group.seatLimit);return react.useEffect((()=>{isDataLoaded||fetchGroups()}),[]),!isDataLoaded||isFetchingGroups?react.createElement(reused_styled_components.YG,{"data-testid":"group-info-loading"}):react.createElement(settings_card.K,{title:gettext("General information")},react.createElement(Input,{requiredMarker:"none",readonly:!0,value:group.name,label:gettext("Group name"),nativeAttributes:{"data-testid":"groupname-id"}}),react.createElement(design_system_components.hK,{dir:"y",size:"m"}),react.createElement(ContractSalesPackage,{totalCapacity:group.seatLimit,occupiedCapacity:group.memberCount}))})),GeneralSettings=(0,es.Ng)((state=>({selectedGroupId:state.Group.selectedGroupId})),null)((({selectedGroupId})=>{const{session:{company}}=(0,use_session.w)();if(!company)return null;const showGroupGeneralInfo=company.isGroupEnabled&&selectedGroupId;return react.createElement(react.Fragment,null,showGroupGeneralInfo?react.createElement(GroupGeneralInfo,{groupId:selectedGroupId}):react.createElement(CompanyGeneralInfo,null))}));var use_query_params=__webpack_require__(47547);const selectors_getSourceConnectionsUrls=(rootState,source)=>rootState.Company.company.feedMap[source].map((connection=>connection.url));var catalyst_provider=__webpack_require__(2784),emotion_element_a8309070_browser_esm=__webpack_require__(90193),emotion_react_browser_esm=__webpack_require__(17437),adapters=__webpack_require__(59008),styles=__webpack_require__(4781);const FeedChannelSelector=({selectedChannelList,isClearable,setChannelList,showWarningHighlight})=>{const dispatch=(0,es.wA)(),{gettext}=(0,use_get_text.z)(),[{groupId}]=(0,use_query_params.s)(),{session}=(0,use_session.w)(),{cat,color}=(0,emotion_element_a8309070_browser_esm.u)(),channelList=(0,es.d4)((state=>state.Channel.groupedChannelList)),userGroupId=session.user.groupId,isGroupEnabled=session.company.isGroupEnabled;react.useEffect((()=>{dispatch((0,redux_effects.Vx)())}),[dispatch]);const channelSelectorChannelList=react.useMemo((()=>{const filteredChannelList=groupId?(0,adapters.CM)(channelList,groupId):channelList;return(0,adapters.DI)(filteredChannelList,userGroupId)}),[channelList,groupId,userGroupId]);return react.createElement(react.Fragment,null,react.createElement(emotion_react_browser_esm.mL,{styles:(0,styles.q)(cat,color.PrimaryDefault)}),react.createElement("div",null,react.createElement("div",{className:"cat-label"},gettext("Post to")),react.createElement(design_system_components.xI,{channelList:channelSelectorChannelList,onChange:selectedChannelList=>{setChannelList(selectedChannelList)},value:((selectedChannelList,groupId)=>groupId?selectedChannelList.map((channel=>({...channel,isDisabled:channel.groupId!==groupId}))):selectedChannelList)(selectedChannelList,groupId),showGroups:isGroupEnabled,components:{MultiValue:props=>((props,gettext)=>{const isValueDisabled=Boolean(props.data.isDisabled),style=isValueDisabled?"disabled":"primary",tooltipText=isValueDisabled?gettext("You can’t delete this group because you don’t have admin rights."):void 0;return react.createElement(design_system_components.Hw,{...props,style,tooltipText})})(props,gettext)},isClearable,placeholder:gettext("Select"),menuPortalTarget:document.body,menuPlacement:"auto",styles:{menuPortal:base=>({...base,zIndex:10001})},showWarningHighlight})))},linkedinReg=/^(https?:\/\/)?(?:www\.)?(?:linkedin\.com\/|linkd\.in\/).+$/i,xReg=/^(https?:\/\/)?(?:www\.)?(?:twitter\.com|x\.com)\/[\w.-]+\/?$/i,fbReg=/^(https?:\/\/)?(?:www\.)?(?:facebook\.com|fb\.me|fb\.com)\/(?:(?:\w+\.)*#!\/)?(?:pages\/)?(?:[\w.-]+\/)*[\w.-]+\/?$/i,rssReg=/^(https?:\/\/)?[\w-]+(?:\.[\w-]+)+[\w.~:/?#[\]@!$&'()*+,;=%-]*$/i,sourceDetails={facebook:{icon:"facebook",label:"Facebook",isURLValid:url=>fbReg.test(url)},linkedin:{icon:"linkedin",label:"LinkedIn",isURLValid:url=>linkedinReg.test(url)},twitter:{icon:"twitter",label:"X",isURLValid:url=>xReg.test(url)}
138,rss:{icon:"w-rss-feed-outlined",label:"RSS feeds",isURLValid:url=>rssReg.test(url)}},channelsHaveMultipleGroups=channels=>{const groupIdsSet=new Set;for(const{groupId}of channels)groupIdsSet.add(groupId);return groupIdsSet.size>1},Body=emotion_styled_browser_esm.A.div`
139	color: ${p=>p.theme.cat.color.uiFontBase};
140`,AddEditConnectionDialog=(0,es.Ng)(((state,{source})=>({usedConnectionUrls:selectors_getSourceConnectionsUrls(state,source)})),(dispatch=>({dispatchUpdateConnections:payload=>dispatch((0,company_actions.o$)(payload))})))((({closeDialog,source,connection,usedConnectionUrls,dispatchUpdateConnections})=>{var _a;const{session:{company}}=(0,use_session.w)(),{gettext}=(0,use_get_text.z)(),[form,setForm]=react.useState(connection),[formError,setFormError]=react.useState({url:null,channels:null,submit:null}),[isLoading,setIsLoading]=react.useState(!1);(0,catalyst_provider.g)({"error.AddEditConnectionDialog.urlError":null!==(_a=formError.url)&&void 0!==_a?_a:""});const isEditing=""!==form._id,submitButtonLabel=gettext(isEditing?"Update":"Connect"),sourceLabel="rss"===source?gettext("RSS feeds"):sourceDetails[source].label,canClearChannelsSelection=react.useMemo((()=>!isEditing||!channelsHaveMultipleGroups(connection.channelList)),[connection,isEditing]);return react.createElement(design_system_components.Au,{show:!0,onClose:closeDialog,width:524},react.createElement(design_system_components.Au.Header,{title:`${gettext(isEditing?"Update":"Add")} ${sourceLabel} ${gettext("connection")}`}),react.createElement(design_system_components.Au.Content,null,react.createElement(Body,{className:"cat-flex-col cat-gap-m"},react.createElement(stencil_generated.BU,{label:gettext("URL"),placeholder:`${gettext("Add")} ${sourceLabel} ${gettext("URL")}`,requiredMarker:"required",value:form.url,errors:formError.url?["AddEditConnectionDialog.urlError"]:[],onCatChange:event=>{var _a;setForm({...form,url:null!==(_a=event.target.value)&&void 0!==_a?_a:""}),setFormError({...formError,url:null})},nativeAttributes:{"data-testid":"connection-url"},disabled:isEditing}),react.createElement("div",null,react.createElement(FeedChannelSelector,{selectedChannelList:form.channelList,isClearable:canClearChannelsSelection,setChannelList:channelList=>{setFormError({...formError,channels:null}),setForm({...form,channelList})},showWarningHighlight:Boolean(formError.channels),"data-testid":"connection-channels"}),formError.channels&&react.createElement("div",{className:"cat-text-danger cat-mt-s cat-text-s","data-testid":"connection-channels-error-message"},formError.channels)),react.createElement(stencil_generated.ih,{label:gettext("Publish automatically, without admin approval"),checked:form.autoApprove,onCatChange:e=>{setForm({...form,autoApprove:e.target.checked})},nativeAttributes:{"data-testid":"connection-auto-post-checkbox"},style:{width:"fit-content"}}),formError.submit&&react.createElement(stencil_generated.Jv,{color:"danger"},formError.submit))),react.createElement(design_system_components.Au.FooterActions,null,react.createElement(stencil_generated.B$,{variant:"filled",color:"primary",onClick:async()=>{setFormError((prev=>({...prev,submit:null})));const{url,channelList}=form,errorsList={};if(isEditing||(usedConnectionUrls.includes(url)&&(errorsList.url=gettext("This URL is already connected")),sourceDetails[source].isURLValid(url)||(errorsList.url=gettext("Please enter a valid URL"))),channelList.length<1&&(errorsList.channels=gettext("Please select at least one channel")),Object.keys(errorsList).length>0)return void setFormError((prev=>({...prev,...errorsList})));setIsLoading(!0);const[response,error]=await(0,util.Oi)((()=>api._K.updateContentImportConnections(company._id,{[source]:[{...form}]})));setIsLoading(!1),error?setFormError((prev=>{var _a;return{...prev,submit:null!==(_a=(0,string_utils.fi)(error))&&void 0!==_a?_a:gettext("Something went wrong, please try again later.")}})):(dispatchUpdateConnections({source,connection:{...form,_id:response.data[source][0]._id}}),closeDialog(),(0,toast.tP)({message:gettext("Connection saved successfully.")}))},nativeAttributes:{"data-testid":`${submitButtonLabel}-button`},loading:isLoading},submitButtonLabel)))})),DeleteConnectionDialog=(0,es.Ng)(null,(dispatch=>(0,redux.bindActionCreators)({deleteImportContentConnection},dispatch)))((({closeDialog,connectionUrl,deleteImportContentConnection})=>{const{gettext}=(0,use_get_text.z)(),[isLoading,setIsLoading]=react.useState(!1),isMounted=react.useRef(!0);react.useEffect((()=>()=>{isMounted.current=!1}),[]);return react.createElement(design_system_components.Au,{show:!0,onClose:closeDialog},react.createElement(design_system_components.Au.Header,{title:gettext("Delete import 
140content connection")}),react.createElement(design_system_components.Au.Content,null,react.createElement("div",{className:"cat-text-m cat-text-secondary cat-text-center cat-pv-l"},gettext("Are you sure you want to permanently delete your connected source?"))),react.createElement(design_system_components.Au.FooterActions,null,react.createElement(stencil_generated.B$,{variant:"outlined",color:"primary",onClick:closeDialog,nativeAttributes:{"data-testid":"cancel-delete-connection-button"},className:"cat-mr-s"},gettext("Cancel")),react.createElement(stencil_generated.B$,{variant:"filled",color:"primary",onClick:async()=>{setIsLoading(!0),await deleteImportContentConnection(connectionUrl,gettext("Import content connection has been deleted successfully."),gettext("Something went wrong, please try again later.")),isMounted.current&&closeDialog()},nativeAttributes:{"data-testid":"delete-connection-button"},loading:isLoading},gettext("Delete"))))}));var user_preview_redux_effects=__webpack_require__(46342),redux_selectors=__webpack_require__(65223);const UserPreview=(0,es.Ng)(((state,{id})=>({preview:redux_selectors.T.getUserPreviewById(state,id),isFetching:redux_selectors.T.getUserPreviewIsFetching(state)})),(dispatch=>(0,redux.bindActionCreators)({fetchUserPreviewById:user_preview_redux_effects.o},dispatch)))((({id,preview,isFetching,fetchUserPreviewById})=>{if(react.useEffect((()=>{isFetching||preview||fetchUserPreviewById(id)}),[id,preview,isFetching,fetchUserPreviewById]),isFetching)return react.createElement(stencil_generated.K0,null);if(!preview)return null;const{firstName,lastName,avatarUrl}=preview,fullName=`${firstName} ${lastName}`;return react.createElement("div",{className:"cat-flex cat-gap-s cat-items-center"},react.createElement(stencil_generated.iR,{src:avatarUrl,label:fullName,size:"s",round:!0}),react.createElement("div",{"data-testid":"user-name"},fullName))})),ImportConnection=({connection,source})=>{const{gettext,ngettext}=(0,use_get_text.z)(),{session:{user:loggedInUser}}=(0,use_session.w)(),[{groupId}]=(0,use_query_params.s)(),{url,channelList,userId,autoApprove,_id}=connection,[showDeleteDialog,setShowDeleteDialog]=react.useState(!1),[showEditDialog,setShowEditDialog]=react.useState(!1),showLITokenExpiration=loggedInUser._id===userId&&"linkedin"===source,isDeleteConnectionDisabled=react.useMemo((()=>!!groupId&&channelsHaveMultipleGroups(connection.channelList)),[groupId,connection.channelList]);return react.createElement(react.Fragment,null,react.createElement("div",{className:"cat-flex-col cat-gap-l","data-testid":`import-connection-${_id}`},react.createElement("hr",null),react.createElement("div",{className:"cat-flex cat-gap-l"},react.createElement("div",{className:"cat-flex-col cat-flex-1"},react.createElement("div",{className:"cat-label cat-muted","data-testid":"source-url"},gettext("Source URL")),react.createElement("div",null,url)),react.createElement("div",{className:"cat-flex cat-gap-m"},react.createElement(stencil_generated.B$,{iconOnly:!0,color:"primary",variant:"outlined",onClick:()=>{setShowEditDialog(!0)},size:"s",icon:"16-pen-outlined",nativeAttributes:{"data-testid":"edit-button"},style:{width:"fit-content"}}),react.createElement(stencil_generated.QS,{content:gettext("You can't delete this connection because it contains channels from multiple groups. You can edit the connection to remove desired channels. Once the connection only has channels from one group, it can be deleted completely."),disabled:!isDeleteConnectionDisabled},react.createElement(stencil_generated.B$,{iconOnly:!0,color:"primary",variant:"outlined",size:"s",icon:"16-editor-delete",nativeAttributes:{"data-testid":"delete-button"},style:{width:"fit-content"},onClick:()=>{setShowDeleteDialog(!0)},disabled:isDeleteConnectionDisabled})))),react.createElement("div",{className:"cat-flex cat-gap-l"},react.createElement("div",{className:"cat-flex-col",style:{flex:"2 1 0"}},react.createElement("div",{className:"cat-label cat-muted","data-testid":"post-to"},gettext("Post to")),react.createElement("div",{className:"cat-flex cat-gap-s"},null==channelList?void 0:channelList.map((({_id,name,groupName,isPrivate})=>react.createElement(stencil_generated.ql,{icon:isPrivate?"16-lock-outlined":void 0,key:_id},`${name} - ${groupName}`))))),userId&&react.createElement("div",{className:"cat-flex-col",style:{flex:"1 1 0"}},react.createElement("div",{className:"cat-label cat-muted","data-testid":"connected-by"},gettext("Connected by")),react.createElement(UserPreview,{id:userId}))),react.createElement("div",{className:"cat-flex cat-gap-l"}
140,react.createElement("div",{style:{flex:"2 1 0"}},react.createElement(stencil_generated.ih,{label:gettext("Publish automatically"),checked:autoApprove,disabled:!0,nativeAttributes:{"data-testid":"publish-automatically-checkbox"}})),showLITokenExpiration&&react.createElement("div",{className:"cat-h6",style:{flex:"1 1 0"},"data-testid":"li-token-expiration-date"},(linkedinTokenExpiredAt=>{const daysTillTokenExpires=(0,formatting.$I)(linkedinTokenExpiredAt);return daysTillTokenExpires<1?gettext("Authorization token expired. Please reconnect or disconnect this network."):`${gettext("Token expires in")} ${daysTillTokenExpires} ${ngettext("day","days",daysTillTokenExpires)}`})(loggedInUser.linkedinTokenExpiredAt)))),showDeleteDialog&&react.createElement(DeleteConnectionDialog,{closeDialog:()=>{setShowDeleteDialog(!1)},connectionUrl:url}),showEditDialog&&react.createElement(AddEditConnectionDialog,{closeDialog:()=>{setShowEditDialog(!1)},connection,source}))},TabBody=({source,connections})=>{const{gettext}=(0,use_get_text.z)(),{session:{company,user}}=(0,use_session.w)(),[showAddConnectionDialog,setShowConnectionDialog]=react.useState(!1),dummyConnection={_id:"",userId:user._id,url:"",autoApprove:!1,channelList:[]};return react.createElement(react.Fragment,null,react.createElement("div",{className:"cat-mv-l cat-flex-col cat-gap-m"},"linkedin"===source&&react.createElement("div",{className:"cat-flex",style:{alignItems:"baseline"}},react.createElement("div",{className:"cat-text-s cat-muted"},gettext("You need to authenticate yourself as the company page admin in order to make the connection")),react.createElement(stencil_generated.B$,{variant:"text",color:"primary",urlTarget:"_self",url:`/oauth/linkedin/connect?company=1&redirect=company/${company._id}/content?tab=linkedin`,nativeAttributes:{"data-testid":"linkedin-authenticate-button"}},gettext("Authenticate"))),react.createElement(stencil_generated.B$,{icon:"plus-outlined",color:"primary",onClick:()=>{setShowConnectionDialog(!0)},nativeAttributes:{"data-testid":"connect-new-source-button"}},gettext("Connect source")),connections.map((connection=>react.createElement(ImportConnection,{key:connection._id,connection,source})))),showAddConnectionDialog&&react.createElement(AddEditConnectionDialog,{source,closeDialog:()=>{setShowConnectionDialog(!1)},connection:dummyConnection}))},ImportingContentSettings=(0,es.Ng)((state=>({company:state.Company.company})),(dispatch=>(0,redux.bindActionCreators)({fetchCompany},dispatch)))((({company,fetchCompany})=>{const{gettext}=(0,use_get_text.z)(),[{groupId,tab}]=(0,use_query_params.s)(),{session}=(0,use_session.w)(),[activeTab,setActiveTab]=react.useState(null);react.useEffect((()=>{company?setActiveTab((prev=>prev||(tab&&((tab,importConnectionsList)=>tab in importConnectionsList)(tab,company.feedMap)?tab:Object.keys(company.feedMap)[0]))):fetchCompany(session.company._id)}),[company,tab,fetchCompany,session.company._id]);const tabs=react.useMemo((()=>company?Object.keys(company.feedMap).map((source=>{const{icon,label}=sourceDetails[source];return{id:source,icon,label:"rss"===source?gettext("RSS feeds"):label}})):[]),[company,gettext]),importConnectionsList=react.useMemo((()=>company?groupId?((importConnectionsList,groupId)=>Object.keys(importConnectionsList).reduce(((newImportConnectionsList,source)=>(newImportConnectionsList[source]=importConnectionsList[source].filter((item=>item.channelList.some((channel=>channel.groupId===groupId)))),newImportConnectionsList)),{}))(company.feedMap,groupId):company.feedMap:{}),[groupId,company]);if(!company)return null;return react.createElement(settings_card.K,{title:gettext("Importing content")},react.createElement("div",{className:"cat-flex-col cat-text-m cat-mb-l"},react.createElement("span",null,gettext("Automatically import links posted to your company's social network accounts.")),react.createElement("span",null,gettext("Posts will need to be moderated, unless you select automatic publishing.")),react.createElement("span",null,gettext("Note, only the posts with links will be imported."))),react.createElement(stencil_generated.Re,{className:"cat-border"},react.createElement("div",{className:"cat-card-pull-v"},react.createElement(stencil_generated.bo,{onCatChange:event=>{setActiveTab(event.detail.id)},activeTab:null!=activeTab?activeTab:void 0},tabs.map((({icon,label,id})=>react.createElement(stencil_generated.AW,{id,key:id,label,icon,nativeAttributes:{"data-testid":`${id}-tab`}})))),activeTab&&react.createElement(TabBody,{source:activeTab,connections:importConnectionsList[activeTab]}))))})),FORM_FIELDS=["invitePoint"];class InvitationPointSettingRenderer extends react.Component{constructor(){super(...arguments),this.onSubmit=async(values,{setSubmitting})=>{const companyId=this.props.company._id;await this.props.updateCompany(companyId,values,this.context.gettext("Invitation points were successfully updated")),setSubmitting(!1)}}render(){const{context:{gettext},props:{company}}=this;return react.createElement(components.fI,null,react.createElement(formik_esm.l1,{initialValues:(0,pick.A)(company,FORM_FIELDS),onSubmit:this.onSubmit},(({values,setFieldValue,isSubmitting})=>react.createElement(formik_esm.lV,{className:"formik-form"},react.createElement(design_system_components.Zp,null,react.createElement(design_system_components.Zp.HeaderTitle,{title:gettext("Invitation points")}),react.createElement(design_system_components.Zp.Content,null,react.createElement(components.VP,null,react.createElement(design_system_components.TZ,{type:"number",value:values.invitePoint,min:0,step:1,labelText:gettext("Points for inviting a colleague"),hintElement:gettext("Users will receive points when a colleague they invited joins Smarp"),onChange:event=>setFieldValue("invitePoint",parseInt(event.target.value,10)||0),style:{width:"80px"},dataTestId:"invitePoint-id"}))),react.createElement(design_system_components.Zp.FooterActions,null,react.createElement(design_system_components.$n,{isLoading:isSubmitting,style:"secondary",text:gettext("Update")})))))))}}InvitationPointSettingRenderer.contextType=lib.dg;const InvitationPointSetting_mapDispatchToProps={updateCompany:effects_updateCompany},InvitationPointSetting=(0,es.Ng)(null,InvitationPointSetting_mapDispatchToProps)(InvitationPointSettingRenderer);var Draft=__webpack_require__(35143),draftjs_to_html=__webpack_require__(29987);const Editor=__webpack_require__(43754).Editor;class EmailTemplateRenderer extends react.Component{constructor(props,state){super(props,state),this.invitationTemplateHandler=invitationTemplateEditorObject=>{let html=draftjs_to_html((0,Draft.convertToRaw)(invitationTemplateEditorObject.getCurrentContent()));"<p></p>"!==html&&"<p></p>\n"!==html||(html=""),this.setState({invitationTemplateEditorObject,invitationTemplateString:html}),this.props.onChangeInvitationTemplate(html)},this.signatureHandler=invitationSignatureEditorObject=>{let html=draftjs_to_html((0,Draft.convertToRaw)(invitationSignatureEditorObject.getCurrentContent()));"<p></p>"!==html&&"<p></p>\n"!==html||(html=""),this.setState({invitationSignatureEditorObject,invitationSignatureString:html}),this.props.onChangeInvitationSignature(html)},this.initTemplates=()=>{this.initInvitationSignature(),this.initInvitationTemplate()},this.initInvitationSignature=()=>{const{editorState,text}=this._sanatizeAndGetEditorStateFromText(this.props.invitationSignature);this.setState({invitationSignatureEditorObject:editorState,invitationSignatureString:text})},this.initInvitationTemplate=()=>{const{editorState,text}=this._sanatizeAndGetEditorStateFromText(this.props.invitationTemplate);this.setState({invitationTemplateEditorObject:editorState,invitationTemplateString:text})},this._sanatizeAndGetEditorStateFromText=input=>{const text=this._stripBreakLinesAndFixUnderlines(input),{contentBlocks,entityMap}=(0,Draft.convertFromHTML)(text);return{text,editorState:Draft.EditorState.createWithContent(Draft.ContentState.createFromBlockArray(contentBlocks,entityMap))}},this._stripBreakLinesAndFixUnderlines=input=>input?input.replace(/(<ins>
140)/g,"<u>").replace(/(<\/ins>)/g,"</u>").split(/\s*(<br>|<br\/>|<br \/>)\s*/).map((chunk=>`<p>${chunk}</p>`)).join(""):"",this.state={invitationTemplateEditorObject:Draft.EditorState.createEmpty(),invitationSignatureEditorObject:Draft.EditorState.createEmpty(),invitationSignatureString:"",invitationTemplateString:""}}componentDidMount(){this.initTemplates()}render(){const editorOptions={options:["inline","link"],inline:{inDropdown:!1,options:["bold","italic","underline"]},link:{inDropdown:!1,showOpenOptionOnHover:!0,defaultTargetOption:"_self",options:["link","unlink"]}},{state:{invitationTemplateEditorObject,invitationSignatureEditorObject},context:{gettext},props:{session,editMode}}=this;return react.createElement("div",{className:"email-template-container"},react.createElement("div",{className:"email-template email-template-header"},react.createElement("p",{className:"email-template-subject"},`${gettext("You’re invited to join Haiilo for")} ${session.company.name}`),react.createElement("br",null),react.createElement("p",{className:"email-template-text"},gettext("Haiilo helps to discover and share content while engaging with your colleagues.")),react.createElement("br",null),react.createElement("p",{className:"email-template-text"},session.user.firstName," ",session.user.lastName," (",react.createElement("span",{className:"email-template-colored"},session.user.email),") ",gettext("sent you this invitation")," (",react.createElement("span",{className:"email-template-colored"},gettext("accept invite")),"), ",gettext("along with the following message"),":")),editMode?react.createElement("div",{className:"email-template email-template-fields"},react.createElement("div",{className:"email-template-field"},react.createElement(design_system_components.dh,{labelText:"Default invitation message"}),react.createElement(Editor,{editorState:invitationTemplateEditorObject,wrapperClassName:"demo-wrapper",onEditorStateChange:this.invitationTemplateHandler,toolbar:editorOptions})),react.createElement("div",{className:"email-template-field"},react.createElement(design_system_components.dh,{labelText:"Information about Haiilo"}),react.createElement(Editor,{editorState:invitationSignatureEditorObject,wrapperClassName:"demo-wrapper",onEditorStateChange:this.signatureHandler,toolbar:editorOptions}))):react.createElement("div",{className:"email-template-text email-template-preview"},react.createElement("p",{dangerouslySetInnerHTML:{__html:this.props.invitationTemplate}}),react.createElement("p",{dangerouslySetInnerHTML:{__html:this.props.invitationSignature}})),react.createElement("div",{className:"email-template email-template-footer"},react.createElement(design_system_components.$n,{onClick:()=>!1,style:"primary",text:gettext("Activate my account")}),react.createElement("span",{className:"email-template-link-label"},gettext("or use this link")),react.createElement("span",{className:"email-template-link email-template-colored"},"http://",session.company.subdomain,".smarpshare.com/auth/launch/5620e52be85dd03c461a893d/G26z3H5ygTki_L3SDd82IMqI7mvL-yqROT5TMo8RyCqx_BNiJjvKjNEYUDOVDxS7RsDjuKEOF6vX49DgsBMA?redirect=tutorial"),react.createElement("span",{className:"email-template-domain-label"},gettext("Your company’s Haiilo domain is"),":"),react.createElement("span",{className:"email-template-colored"},session.company.subdomain,".smarpshare.com")))}}EmailTemplateRenderer.contextType=lib.dg;const EmailTemplate=(0,es.Ng)((state=>({session:state.Session})),{})(EmailTemplateRenderer);var invitationTemplate_effects=__webpack_require__(91705);class InvitationsTemplateSettingsRenderer extends react.Component{constructor(props,state){super(props,state),this.cancelEditing=()=>{const{group:{invitationTemplate}}=this.props;this.setState({invitationSignature:invitationTemplate.invitationSignature,invitationTemplate:invitationTemplate.invitationTemplate,editMode:!1})},this.switchToEditMode=()=>{this.setState({editMode:!0})},this.changeInvitationTemplate=invitationTemplate=>{this.setState({invitationTemplate})},this.changeInvitationSignature=invitationSignature=>{this.setState({invitationSignature})},this.fetchTemplate=async()=>{await this.props.fetchGroupInvitationTemplate(this.props.group.general._id);const invitationTemplateError=this.props.invitationTemplateError;if(invitationTemplateError){alert_utils.A.errorFromApi(invitationTemplateError,this.context.gettext);const errorMessage=alert_utils.A.getErrorMessage(invitationTemplateError,(text=>text));tracking_utils.A.error(null!=errorMessage?errorMessage:"","InvitationsTemplateSettings.fetchTemplate")}},this.updateTemplate=async()=>
140{const{invitationSignature,invitationTemplate,isLoading}=this.state;if(isLoading)return!1;this.setState({isLoading:!0}),await this.props.editGroupInvitationTemplate(this.props.group.general._id,{invitationSignature,invitationTemplate}),this.setState({isLoading:!1,editMode:!1});const invitationTemplateError=this.props.invitationTemplateError;if(invitationTemplateError){alert_utils.A.errorFromApi(invitationTemplateError,this.context.gettext);const errorMessage=alert_utils.A.getErrorMessage(invitationTemplateError,(text=>text));return tracking_utils.A.error(null!=errorMessage?errorMessage:"","InvitationsTemplateSettings.updateTemplate"),!1}alert_utils.A.success(this.context.gettext("Template settings were successfully updated"))},this.state={editMode:!1,isLoading:!1,invitationSignature:null,invitationTemplate:null}}async componentDidMount(){await this.fetchTemplate();const{group:{invitationTemplate}}=this.props;await this.setState({invitationSignature:invitationTemplate?invitationTemplate.invitationSignature:"",invitationTemplate:invitationTemplate?invitationTemplate.invitationTemplate:""})}render(){const{state:{isLoading,invitationTemplate,invitationSignature,editMode},context:{gettext}}=this;return react.createElement(react.Fragment,null,null!==invitationTemplate&&null!==invitationSignature&&react.createElement(design_system_components.Zp,null,react.createElement(design_system_components.Zp.HeaderTitle,{title:gettext("Email templates")}),react.createElement(design_system_components.Zp.Content,null,!editMode&&react.createElement("div",{className:"template-button-top-container"},react.createElement("span",{className:"preview-bold-text"},gettext("Preview")),react.createElement(design_system_components.hK,{size:"m",dir:"x"}),react.createElement(design_system_components.$n,{onClick:this.switchToEditMode,style:"secondary",isLoading,text:gettext("Edit")})),react.createElement(EmailTemplate,{invitationTemplate,invitationSignature,onChangeInvitationTemplate:this.changeInvitationTemplate,onChangeInvitationSignature:this.changeInvitationSignature,editMode})),editMode&&react.createElement(design_system_components.Zp.FooterActions,null,react.createElement("div",{className:"template-button-bottom-container"},react.createElement(design_system_components.$n,{onClick:this.cancelEditing,style:"secondary",text:gettext("Cancel")}),react.createElement(design_system_components.hK,{size:"m",dir:"x"}),react.createElement(design_system_components.$n,{onClick:this.updateTemplate,style:"primary",isLoading,text:gettext("Update")})))))}}InvitationsTemplateSettingsRenderer.defaultProps={group:{general:void 0,invitationTemplate:{invitationSignature:null,invitationTemplate:null}}},InvitationsTemplateSettingsRenderer.contextType=lib.dg;const InvitationsTemplateSettings=(0,es.Ng)((state=>({invitationTemplateError:state.Group.invitationTemplateError})),(dispatch=>(0,redux.bindActionCreators)({editGroupInvitationTemplate:invitationTemplate_effects.R,fetchGroupInvitationTemplate:invitationTemplate_effects.v},dispatch)))(InvitationsTemplateSettingsRenderer);var invitationPermissions_effects=__webpack_require__(11557);class InvitationsPermissionsSettingsRenderer extends react.Component{constructor(props,state){super(props,state),this.changeEmailDomainList=emailDomainList=>{this.setState({emailDomainList})},this.setSharerInvite=isSharerInviteEnabled=>{this.setState({sharerInviteEnabled:isSharerInviteEnabled})},this.setSelfRegister=isSelfRegisterEnabled=>{this.setState({selfRegisterEnabled:isSelfRegisterEnabled})},this.fetchPermissions=async()=>{await this.props.fetchGroupInvitationPermissions(this.props.group.general._id);const invitationPermissionsError=this.props.invitationPermissionsError;if(invitationPermissionsError){alert_utils.A.errorFromApi(invitationPermissionsError,this.context.gettext);const errorMessage=alert_utils.A.getErrorMessage(invitationPermissionsError,(text=>text));tracking_utils.A.error(null!=errorMessage?errorMessage:"","InvitationsPermissionsSettings.fetchPermissions")}},this.updatePermissions=async()=>{const{sharerInviteEnabled,emailDomainList,isLoading,selfRegisterEnabled}=this.state;if(isLoading)return!1;if(!this.validateBeforeUpdating(sharerInviteEnabled,emailDomainList))return;this.setState({isLoading:!0}),await this.props.editGroup(this.props.group.general._id,{sharerInviteEnabled,emailDomainList,
140selfRegisterEnabled}),this.setState({isLoading:!1});const invitationPermissionsError=this.props.invitationPermissionsError;if(invitationPermissionsError){alert_utils.A.errorFromApi(invitationPermissionsError,this.context.gettext);const errorMessage=alert_utils.A.getErrorMessage(invitationPermissionsError,(text=>text));tracking_utils.A.error(null!=errorMessage?errorMessage:"","InvitationsPermissionsSettings.updatePermissions")}else alert_utils.A.success(this.context.gettext("Permission settings were successfully updated"))},this.validateBeforeUpdating=(sharerInviteEnabled,emailDomainList)=>0!==emailDomainList.length||!sharerInviteEnabled||(this.setState({requiredEmailDomainsAlert:"This field cannot be empty"}),!1),this.state={isLoading:!1,sharerInviteEnabled:!1,emailDomainList:[],requiredEmailDomainsAlert:"",selfRegisterEnabled:!1,inviteForEveryoneAllowed:!1}}async componentDidMount(){var _a,_b;await this.fetchPermissions();const{isCompanyLabEnabled}=(0,session_util.d)(this.props.session);this.setState({sharerInviteEnabled:this.props.group.invitationPermissions&&this.props.group.invitationPermissions.sharerInviteEnabled,selfRegisterEnabled:this.props.group.invitationPermissions&&this.props.group.invitationPermissions.selfRegisterEnabled,emailDomainList:this.props.group.invitationPermissions?this.props.group.invitationPermissions.emailDomainList:[],inviteForEveryoneAllowed:!((null===(_a=this.props.session.company)||void 0===_a?void 0:_a.isSamlEnabled)&&(null===(_b=this.props.session.company)||void 0===_b?void 0:_b.isNonSamlAuthEnabled))})}render(){const{state:{sharerInviteEnabled,selfRegisterEnabled,isLoading,emailDomainList,requiredEmailDomainsAlert,inviteForEveryoneAllowed},props:{session:{company}},context:{gettext}}=this;return react.createElement(components.fI,null,react.createElement(design_system_components.Zp,null,react.createElement(design_system_components.Zp.HeaderTitle,{title:gettext("Permissions")}),react.createElement(design_system_components.Zp.Content,null,react.createElement(design_system_components.dh,{labelText:gettext("Who can invite?")}),react.createElement(components.fI,null,react.createElement(design_system_components.A_,{type:"primary",display:gettext("Only Admins can invite"),id:"redPill",isActive:!sharerInviteEnabled,onClick:()=>this.setSharerInvite(!1),orientation:"horizontal"}),react.createElement(design_system_components.A_,{type:"primary",display:gettext("Everyone can invite"),id:"bluePill",isActive:sharerInviteEnabled,onClick:()=>inviteForEveryoneAllowed&&this.setSharerInvite(!0),orientation:"horizontal"})),(null==company?void 0:company.isSelfRegistrationSettingAvailable)&&react.createElement(react.Fragment,null,react.createElement(design_system_components.dh,{labelText:gettext("Can users self-register?")}),react.createElement(components.fI,null,react.createElement(design_system_components.A_,{type:"primary",display:gettext("Do not allow self-registration"),id:"redPill",isActive:!selfRegisterEnabled,onClick:()=>this.setSelfRegister(!1),orientation:"horizontal"}),react.createElement(design_system_components.A_,{type:"primary",display:gettext("Allow self registration"),id:"bluePill",isActive:selfRegisterEnabled,onClick:()=>this.setSelfRegister(!0),orientation:"horizontal"}))),react.createElement(design_system_components.dh,{labelText:gettext("Email domains"),disabled:!sharerInviteEnabled,hintElement:gettext("Set here the email domains your users can use to invite or self-register in the format yourdomain.com")}),react.createElement(design_system_components.um,{value:emailDomainList,onChange:this.changeEmailDomainList,disabled:!sharerInviteEnabled&&!selfRegisterEnabled,validationRegex:/^(?!:\/\/)([a-zA-Z0-9-_]+\.)*[a-zA-Z0-9][a-zA-Z0-9-_]+\.[a-zA-Z]{2,11}?$/,wrongInputAlert:gettext("Please enter a valid email domain."),requiredAlert:requiredEmailDomainsAlert,addOnBlur:!0,inputProps:{placeholder:"ex: gmail.com..."}})),react.createElement(design_system_components.Zp.FooterActions,null,react.createElement(design_system_components.$n,{onClick:this.updatePermissions,style:"secondary",isLoading,text:gettext("Update")}))))}}InvitationsPermissionsSettingsRenderer.defaultProps={group:{general:void 0,invitationPermissions:{sharerInviteEnabled:!1,emailDomainList:[],selfRegisterEnabled:!1}}},InvitationsPermissionsSettingsRenderer.contextType=lib.dg;const InvitationsPermissionsSettings=(0,es.Ng)((state=>({invitationPermissionsError:state.Group.invitationPermissionsError,session:state.Session}
140)),(dispatch=>(0,redux.bindActionCreators)({editGroup:invitationPermissions_effects.B,fetchGroupInvitationPermissions:invitationPermissions_effects.L},dispatch)))(InvitationsPermissionsSettingsRenderer);class InvitationsSettingsRenderer extends react.Component{render(){const{group,company}=this.props;return react.createElement("div",null,group&&react.createElement(react.Fragment,null,react.createElement(InvitationsPermissionsSettings,{group}),company&&!company.isGroupEnabled&&react.createElement(InvitationPointSetting,{company}),react.createElement(InvitationsTemplateSettings,{group})))}}const InvitationsSettings=(0,es.Ng)((state=>({group:state.Group.groupList[state.Group.selectedGroupId],company:state.Company.company})),{})(InvitationsSettingsRenderer);var dist_api=__webpack_require__(33127),use_cat_select=__webpack_require__(50071);const Title=emotion_styled_browser_esm.A.h3`
141	${({theme:{cat:{fontWeight,fontSize,lineHeight,color}}})=>`\n\t\tcolor: ${color.uiFontBase};\n\t\tfont-size: ${fontSize.h4};\n\t\tfont-weight: ${fontWeight.head};\n\t\tline-height: ${lineHeight.h3};\n\t\tmargin: 0;\n  `}
142`,TeamsSelectionWrapper=emotion_styled_browser_esm.A.div`
143	border-top: 1px solid ${p=>p.theme.cat.color.uiBorderDefault};
144`,RadioInfo=emotion_styled_browser_esm.A.p`
145	margin-left: 28px;
146`,SelectLabel=emotion_styled_browser_esm.A.div`
147	color: ${p=>p.theme.cat.color.uiFontBase};
148`,P=emotion_styled_browser_esm.A.p`
149	font-size: ${p=>p.theme.cat.fontSize.m};
150`,TeamsSelectionSettings=({onChange,pageDetails})=>{var _a,_b,_c;const{gettext}=(0,use_get_text.z)(),rawStepsCount=null!==(_a=null==pageDetails?void 0:pageDetails.teamStepsCount)&&void 0!==_a?_a:0,teamsStep1=null!==(_b=null==pageDetails?void 0:pageDetails.teamsStep1)&&void 0!==_b?_b:[],teamsStep2=null!==(_c=null==pageDetails?void 0:pageDetails.teamsStep2)&&void 0!==_c?_c:[],[selectedTeamNamesStep1,setSelectedTeamNamesStep1]=react.useState((()=>teamsStep1.map((t=>t.name)))),[selectedTeamNamesStep2,setSelectedTeamNamesStep2]=react.useState((()=>teamsStep2.map((t=>t.name)))),[selectedTeamStepsCount,setSelectedTeamStepsCount]=react.useState(2===rawStepsCount?"2":"1"),[enabledTeamsSelection,setEnabledTeamsSelection]=react.useState(rawStepsCount>0),[teamsList,setTeamsList]=react.useState([]),[isLoading,setIsLoading]=react.useState(!1);react.useEffect((()=>{setSelectedTeamStepsCount(2===rawStepsCount?"2":"1"),setEnabledTeamsSelection(rawStepsCount>0)}),[rawStepsCount]),react.useEffect((()=>{(async()=>{var _a;if(!enabledTeamsSelection)return;setIsLoading(!0);const[response,error]=await(0,util.Oi)(api.YV.getTeamList);if(error)return(0,toast.Kf)({message:(0,string_utils.fi)(error)||gettext("Failed to fetch teams")}),tracking_utils.A.error(null!==(_a=(0,string_utils.fi)(error))&&void 0!==_a?_a:"Failed to fetch teams","TeamsSelectionSettings.getTeams",(0,string_utils.hT)(error)),void setIsLoading(!1);setTeamsList(response.data||[]),setIsLoading(!1)})()}),[enabledTeamsSelection,gettext]);const areStringArraysEqual=(a,b)=>{if(a.length!==b.length)return!1;const aSorted=[...a].sort(),bSorted=[...b].sort();return aSorted.every(((val,idx)=>val===bSorted[idx]))};react.useEffect((()=>{var _a;if(!teamsList.length)return;const namesFromProps=(null!==(_a=null==pageDetails?void 0:pageDetails.teamsStep1)&&void 0!==_a?_a:[]).map((t=>t.name));areStringArraysEqual(selectedTeamNamesStep1,namesFromProps)||setSelectedTeamNamesStep1(namesFromProps)}),[null==pageDetails?void 0:pageDetails.teamsStep1,teamsList.length]),react.useEffect((()=>{var _a;if(!teamsList.length)return;const namesFromProps=(null!==(_a=null==pageDetails?void 0:pageDetails.teamsStep2)&&void 0!==_a?_a:[]).map((t=>t.name));areStringArraysEqual(selectedTeamNamesStep2,namesFromProps)||setSelectedTeamNamesStep2(namesFromProps)}),[null==pageDetails?void 0:pageDetails.teamsStep2,teamsList.length]);const toTeams=names=>teamsList.filter((t=>names.includes(t.name))),handleSelectTeams=(name,selectedNames)=>{if("teamsStep1"===name){const nextStep1=selectedNames;return setSelectedTeamNamesStep1(nextStep1),void onChange({name:"teamsStep1",value:toTeams(nextStep1)})}if("teamsStep2"===name){const nextStep2=selectedNames;return setSelectedTeamNamesStep2(nextStep2),void onChange({name:"teamsStep2",value:toTeams(nextStep2)})}},RadioButtons=[{value:"1",label:gettext("One team"),info:gettext("A team will be selectable in step one")},{value:"2",label:gettext("Two teams"),info:gettext("Teams will be selectable in step one and step two")}];return react.createElement(TeamsSelectionWrapper,{className:"cat-mt-xl"},react.createElement(Title,{className:"cat-mv-xl","data-testid":"teams-selection-title"},gettext("Teams in onboarding")),react.createElement(P,{"data-testid":"teams-selection-heading-description"},gettext("Enable team selection so new members can choose their team during onboarding.")),react.createElement(stencil_generated.xN,{label:gettext("Enable team selection"),checked:enabledTeamsSelection,onCatChange:()=>{const next=!enabledTeamsSelection;setEnabledTeamsSelection(next),next?onChange({name:"teamStepsCount",value:"2"===selectedTeamStepsCount?2:1}):(onChange({name:"teamStepsCount",value:0}),onChange({name:"teamsStep1",value:[]}),onChange({name:"teamsStep2",value:[]}))},className:"cat-mv-xl",nativeAttributes:{"data-testid":"enable-teams-selection-toggle"}}),enabledTeamsSelection&&react.createElement("div",null,react.createElement(P,{"data-testid":"teams-selection-description"},gettext("Decide how many teams members can join during onboarding.")),react.createElement(stencil_generated.hu,{className:"cat-form",name:"teamStepsCount","a11y-label":gettext("Teams selection count"),value:selectedTeamStepsCount,onCatChange:e=>{var _a,_b;const detailValue=null===(_a=e.detail)||void 0===_a?void 0:_a.value,htmlTarget=e.target,targetValue=null==htmlTarget?void 0:htmlTarget.value,valueStr=null!==(_b=null!=detailValue?detailValue:targetValue)&&void 0!==_b?_b:"1";valueStr!==selectedTeamStepsCount&&(setSelectedTeamStepsCount(valueStr),onChange({name:"teamStepsCount",value:"2"===valueStr?2:1}))}},RadioButtons.map((radio=>react.createElement(react.Fragment,{key:radio.value},react.createElement(stencil_generated.ut,{value:radio.value,label:radio.label,nativeAttributes:{"data-testid":"team-steps-count-radio-"+radio.value},className:"cat-mt-m"}),react.createElement(RadioInfo,{className:"cat-text-muted"},radio.info))))),isLoading&&react.createElement(stencil_generated.K0,{className:"cat-mt-xl cat-flex cat-justify-center cat-items-center",size:"m"}),("1"===selectedTeamStepsCount||"2"===selectedTeamStepsCount)&&!isLoading&&react.createElement("div",{className:"cat-mv-xl"},react.createElement(SelectLabel,{"data-testid":"teams-step1-label"},gettext("Select teams for step one")),react.createElement(cat_select_facade.j,{placeholder:gettext("Select"),multiple:!0,clearable:!0,options:(0,use_cat_select.a)(teamsList.map((team=>({value:team.name,display:team.groupName?`${team.name} (${team.groupName})`:team.name}))),(team=>team.value),(team=>team.display)),nativeAttributes:{"data-testid":"teams-step1-select"},noItems:gettext("No matching group found"),value:selectedTeamNamesStep1,onCatChange:event=>{const selectedNames=event.target.value||[],initialTeamNames=teamsStep1.map((team=>team.name));areStringArraysEqual(selectedNames,initialTeamNames)||handleSelectTeams("teamsStep1",selectedNames)}})),"2"===selectedTeamStepsCount&&!isLoading&&react.createElement("div",null,react.createElement(SelectLabel,null,gettext("Select teams for step two")),react.createElement(cat_select_facade.j,{placeholder:gettext("Select"),multiple:!0,clearable:!0,options:(0,use_cat_select.a)(teamsList.map((team=>({value:team.name,display:team.groupName?`${team.name} (${team.groupName})`:team.name}))),(team=>team.value),(team=>team.display)),nativeAttributes:{"data-testid":"teams-step2-select"},noItems:gettext("No matching group found"),value:selectedTeamNamesStep2,onCatChange:event=>{const selectedNames=event.target.value||[],initialTeamNames=teamsStep2.map((team=>team.name));areStringArraysEqual(selectedNames,initialTeamNames)||handleSelectTeams("teamsStep2",selectedNames)}}))))},PageTitleWrapper=emotion_styled_browser_esm.A.div`
151	width: 100%;
152`,RadioButtonContainer=emotion_styled_browser_esm.A.div`
153	padding-left: 15px;
154`,RadioButtonDescription=emotion_styled_browser_esm.A.div`
155	padding-left: 40px;
156`,PageSettings=({pageDetails,updateOnboardingPageSettings,isSubmitting=!1})=>{var _a,_b;const{gettext}=(0,use_get_text.z)(),{cardTitle,cardDescription}=((pageName,gettext)=>{switch(pageName){case dist_api.To3.IPageNameEnum.Welcome:return{cardTitle:gettext("Welcome page title and description"),cardDescription:gettext("Here you can configure the welcome page title and description")};case dist_api.To3.IPageNameEnum.Group:return{cardTitle:gettext("Group page title and description"),cardDescription:gettext("Here you can configure group selection onboarding title and description")};case dist_api.To3.IPageNameEnum.Team:return{cardTitle:gettext("Team page title and description"),cardDescription:gettext("Here you can configure team selection onboarding title and description")};default:return{cardTitle:"",cardDescription:""}}})(pageDetails.pageName||"",gettext),[formData,setFormData]=react.useState(pageDetails),[isCustomPagesSettingsSelected,setIsCustomPagesSettingsSelected]=react.useState(!1);react.useEffect((()=>{var _a,_b;if(isSubmitting)return;setFormData(pageDetails);const hasCustomText=!!(null===(_a=pageDetails.title)||void 0===_a?void 0:_a.trim())&&!!(null===(_b=pageDetails.description)||void 0===_b?void 0:_b.trim());setIsCustomPagesSettingsSelected(hasCustomText)}),[pageDetails]);const updateLocal=react.useCallback((patch=>{setFormData((prev=>({...prev,...patch})))}),[]),handleFieldChange=event=>{const{name,value}=event.currentTarget;setFormData((prev=>({...prev,[name]:value})))},handleSave=react.useCallback((()=>{var _a,_b;if(isCustomPagesSettingsSelected&&(!(null===(_a=formData.title)||void 0===_a?void 0:_a.trim())||!(null===(_b=formData.description)||void 0===_b?void 0:_b.trim())))return void(0,toast.Kf)({message:gettext("Page title and description are required.")});let payload={...formData};return payload.pageName===dist_api.To3.IPageNameEnum.Team&&(0===payload.teamStepsCount?payload={...payload,teamsStep1:[],teamsStep2:[]}:1===payload.teamStepsCount&&(payload={...payload,teamsStep2:[]})),isCustomPagesSettingsSelected||(payload={...payload,title:"",description:""}),updateOnboardingPageSettings(payload,payload.pageName)}
156),[formData,isCustomPagesSettingsSelected,updateOnboardingPageSettings,gettext]);return react.createElement(settings_card.K,{title:cardTitle,footerButton:react.createElement(stencil_generated.B$,{nativeAttributes:{"data-testid":"teams-settings-save-button"},variant:"filled",color:"primary",loading:isSubmitting,onClick:handleSave},gettext("Save changes"))},react.createElement(design_system_components.P,null,cardDescription),react.createElement(design_system_components.hK,{size:"l",dir:"y"}),react.createElement(RadioButtonContainer,{role:"radiogroup","aria-label":`${pageDetails.pageName} page settings`},react.createElement(design_system_components.a,{label:gettext("Use default"),value:"",checked:!isCustomPagesSettingsSelected,name:`radio button ${pageDetails.pageName}`,onChange:()=>setIsCustomPagesSettingsSelected(!1)}),react.createElement(RadioButtonDescription,null,react.createElement(design_system_components.VY,null,gettext("The title and the description that are on the page will be system default"))),react.createElement(design_system_components.hK,{size:"m",dir:"y"}),react.createElement(design_system_components.a,{label:gettext("Create custom title and description"),value:"true",dataTestId:"statusActive-id",checked:isCustomPagesSettingsSelected,name:`radio button ${pageDetails.pageName}`,onChange:()=>setIsCustomPagesSettingsSelected(!0)}),react.createElement(RadioButtonDescription,null,react.createElement(design_system_components.VY,null,gettext("Now you can set your custom title and description text")))),react.createElement(show_by_condition.q,{isShow:isCustomPagesSettingsSelected},react.createElement(react.Fragment,null,react.createElement(design_system_components.hK,{size:"m",dir:"y"}),react.createElement(components.fI,null,react.createElement(PageTitleWrapper,null,react.createElement(design_system_components.TZ,{labelText:gettext("Page title"),placeholder:gettext("Write page title"),value:null!==(_a=formData.title)&&void 0!==_a?_a:"",onChange:handleFieldChange,type:"text",name:"title",style:{width:"100%"},maxLength:40,required:!0}))),react.createElement(components.fI,null,react.createElement(textarea_with_chars_limit.l,{labelText:gettext("Page description"),value:null!==(_b=formData.description)&&void 0!==_b?_b:"",name:"description",maxLength:128,onChange:handleFieldChange,required:!0})))),pageDetails.pageName===dist_api.To3.IPageNameEnum.Team&&react.createElement(TeamsSelectionSettings,{pageDetails:formData,onChange:({name,value})=>{updateLocal({[name]:value})}}))},privacy_policy_settings_PageTitleWrapper=emotion_styled_browser_esm.A.div`
157	width: 100%;
158`,privacy_policy_settings_RadioButtonContainer=emotion_styled_browser_esm.A.div`
159	padding-left: 15px;
160`,privacy_policy_settings_RadioButtonDescription=emotion_styled_browser_esm.A.div`
161	padding-left: 40px;
162`,ReapprovalButtonWrapper=emotion_styled_browser_esm.A.div`
163	display: flex;
164	place-items: center;
165
166	> * {
167		&:first-child {
168			padding-right: 5px;
169		}
170	}
171`,PrivacyPolicySettings=({customPrivacyPolicy,updatePrivacyPolicySettings,deletePrivacyPolicySettings})=>{const{gettext}=(0,use_get_text.z)(),[privacyPolicy,setPrivacyPolicy]=react.useState(customPrivacyPolicy),[isCustomSelected,setIsCustomSelected]=react.useState(!1),[initialValues,setInitialValues]=react.useState({isCustomSelected:!1,customPrivacyPolicy:{link:"",description:""}});react.useEffect((()=>{setInitialValues({isCustomSelected:""!==customPrivacyPolicy.companyId,customPrivacyPolicy:{...customPrivacyPolicy}}),setIsCustomSelected(""!==customPrivacyPolicy.companyId),setPrivacyPolicy(customPrivacyPolicy)}),[customPrivacyPolicy]);const[isSaving,setIsSaving]=react.useState(!1),{session}=(0,use_session.w)();if(customPrivacyPolicy.body)return react.createElement(design_system_components.Zp,null,react.createElement(design_system_components.Zp.HeaderTitle,{title:gettext("Privacy policy")}),react.createElement(design_system_components.Zp.Content,null,react.createElement(design_system_components.P,null,gettext("You are using a customized privacy policy so you cannot change the settings. If you want to change this, please reach out to your Haiilo Customer Success Manager"))));const companyId=session.company._id,handleUpdatePageDetails=({name,value})=>{const newCustomPageDetails={...privacyPolicy,[name]:value};setPrivacyPolicy(newCustomPageDetails)},toggleBetweenDefaultAndCustomPrivacyPolicy=isSetToCustom=>{isSetToCustom?(setPrivacyPolicy({...customPrivacyPolicy,link:customPrivacyPolicy.link,description:customPrivacyPolicy.description,companyId}),setIsCustomSelected(!0)):setIsCustomSelected(!1)},isFormDirty=()=>isCustomSelected!==initialValues.isCustomSelected||privacyPolicy.link!==initialValues.customPrivacyPolicy.link||privacyPolicy.description!==initialValues.customPrivacyPolicy.description,isFormValid=isCustomSelected&&0!==privacyPolicy.link.length&&0!==privacyPolicy.description.length,handleUpdate=async isReapproval=>{setIsSaving(!0),await(isCustomSelected?saveCustomPrivacyPolicy(isReapproval):deletePrivacyPolicySettings(companyId)),setIsSaving(!1)},saveCustomPrivacyPolicy=isReapproval=>isFormValid?updatePrivacyPolicySettings(privacyPolicy,isReapproval):(alert_utils.A.error(gettext("Link URL and description are required.")),Promise.resolve());return react.createElement(design_system_components.Zp,null,react.createElement(design_system_components.Zp.HeaderTitle,{title:gettext("Privacy policy")}),react.createElement(design_system_components.Zp.Content,null,react.createElement(design_system_components.P,null,gettext("Here you can configure a custom privacy policy link and its description for your users")),react.createElement(design_system_components.hK,{size:"l",dir:"y"}),react.createElement(privacy_policy_settings_RadioButtonContainer,{role:"radiogroup","aria-label":"privacy policy settings"},react.createElement(design_system_components.a,{label:gettext("Use default"),value:"",checked:!isCustomSelected,name:"radio button privacy policy",onChange:()=>toggleBetweenDefaultAndCustomPrivacyPolicy(!1)}),react.createElement(privacy_policy_settings_RadioButtonDescription,null,react.createElement(design_system_components.VY,null,gettext("The link and the description that are on the page will be system default"))),react.createElement(design_system_components.hK,{size:"m",dir:"y"}),react.createElement(design_system_components.a,{label:gettext("Include custom privacy policy in addition to Haiilo's"),value:"true",checked:isCustomSelected,name:"radio button privacy policy",onChange:()=>toggleBetweenDefaultAndCustomPrivacyPolicy(!0)}),react.createElement(privacy_policy_settings_RadioButtonDescription,null,react.createElement(design_system_components.VY,null,gettext("Here you can set your custom title and description text for hyper link of your company privacy policy.")))
171),react.createElement(show_by_condition.q,{isShow:isCustomSelected},react.createElement(react.Fragment,null,react.createElement(design_system_components.hK,{size:"m",dir:"y"}),react.createElement(components.fI,null,react.createElement(privacy_policy_settings_PageTitleWrapper,null,react.createElement(design_system_components.TZ,{labelText:gettext("Privacy policy link"),placeholder:gettext("Link URL"),value:privacyPolicy.link,onChange:event=>{handleUpdatePageDetails(event.target)},type:"text",name:"link",style:{width:"100%"},required:!0}))),react.createElement(components.fI,null,react.createElement(textarea_with_chars_limit.l,{labelText:gettext("Describe hyper link"),value:privacyPolicy.description,name:"description",maxLength:40,onChange:event=>{handleUpdatePageDetails(event.target)},required:!0}))))),react.createElement(design_system_components.Zp.FooterActions,null,react.createElement(show_by_condition.q,{isShow:isCustomSelected},react.createElement(ReapprovalButtonWrapper,null,react.createElement(OverlayTrigger.A,{placement:"left",overlay:react.createElement(Tooltip.A,{id:"reapproval-tooltip"},react.createElement("span",null,gettext("Click here if you need all your users to reapprove custom privacy policy.")))},react.createElement("i",{className:"i-question-sign sm-left",style:{color:"#7c7c7c"}})),react.createElement(design_system_components.$n,{style:"secondary",text:gettext("Save and request reapproval"),onClick:()=>handleUpdate(!0),disabled:isSaving||!isFormDirty()}))),react.createElement(design_system_components.hK,{size:"s",dir:"x"}),react.createElement(design_system_components.$n,{style:"secondary",text:gettext("Save"),onClick:()=>handleUpdate(!1),disabled:isSaving||!isFormDirty()})))};var IPageNameEnum=dist_api.To3.IPageNameEnum;const initialPrivacyPolicy={companyId:"",description:"",link:""},OnboardingSettings=()=>{const{gettext}=(0,use_get_text.z)(),{session}=(0,use_session.w)(),[onboardingSettingsPagesList,setOnboardingSettingsPagesList]=react.useState([]),[customPrivacyPolicy,setCustomPrivacyPolicy]=react.useState(initialPrivacyPolicy),[isSubmittingWelcome,setIsSubmittingWelcome]=react.useState(!1),[isSubmittingGroup,setIsSubmittingGroup]=react.useState(!1),[isSubmittingTeam,setIsSubmittingTeam]=react.useState(!1);react.useEffect((()=>{const defaultOnboardingSettingsConfiguration=[{pageName:IPageNameEnum.Welcome,companyId:session.company._id},{pageName:IPageNameEnum.Group,companyId:session.company._id},{pageName:IPageNameEnum.Team,companyId:session.company._id}];(async()=>{try{const{data}=await api.DK.onboardingGetPages(session.company._id);data.length>0?setOnboardingSettingsPagesList(data):setOnboardingSettingsPagesList(defaultOnboardingSettingsConfiguration)}catch(error){alert_utils.A.errorFromApi(error,gettext)}})()}),[session.company._id]),react.useEffect((()=>{(async()=>{var _a;try{const{data}=await api.DK.onboardingGetPrivacyPolicy(session.company._id);data&&setCustomPrivacyPolicy(data)}catch(error){404!==(null===(_a=error.response)||void 0===_a?void 0:_a.status)&&alert_utils.A.errorFromApi(error,gettext)}})()}),[session.company._id]);const pageSubmitSetters={[IPageNameEnum.Welcome]:setIsSubmittingWelcome,[IPageNameEnum.Group]:setIsSubmittingGroup,[IPageNameEnum.Team]:setIsSubmittingTeam},updateOnboardingPageSettings=async(pageDetails,pageToUpdate)=>{var _a,_b,_c,_d;const setIsSubmitting=pageSubmitSetters[pageToUpdate];if(setIsSubmitting){setIsSubmitting(!0);try{await api.DK.onboardingUpsertPages(pageDetails);const{title,description,pageName,teamStepsCount,teamsStep1,teamsStep2}=pageDetails,pageIndex=onboardingSettingsPagesList.findIndex((page=>page.pageName===pageName)),newOnboardingSettingsPagesList=[...onboardingSettingsPagesList],newPageDetails={...onboardingSettingsPagesList[pageIndex]};newPageDetails.title=title,newPageDetails.description=description,newPageDetails.teamStepsCount=null!==(_a=null!=teamStepsCount?teamStepsCount:newPageDetails.teamStepsCount)&&void 0!==_a?_a:1,newPageDetails.teamsStep1=null!==(_b=null!=teamsStep1?teamsStep1:newPageDetails.teamsStep1)&&void 0!==_b?_b:[],newPageDetails.teamsStep2=null!==(_c=null!=teamsStep2?teamsStep2:newPageDetails.teamsStep2)&&void 0!==_c?_c:[],newOnboardingSettingsPagesList[pageIndex]=newPageDetails,setOnboardingSettingsPagesList(newOnboardingSettingsPagesList),(0,toast.tP)({message:gettext("Onboarding page details updated successfully.")})}catch(error){(0,toast.Kf)({message:(0,string_utils.fi)(error)||gettext("Failed to update onboarding page details.")}),tracking_utils.A.error(null!==(_d=(0,string_utils.fi)(error))&&void 0!==_d?_d:"Failed to update onboarding page details","OnboardingSettings.updateOnboardingPageSettings",(0,string_utils.hT)(error))}finally{setIsSubmitting(!1)}}},getPageDetails=pageName=>{var _a,_b,_c;const pageDetails=onboardingSettingsPagesList.find((page=>page.pageName===pageName));
171return pageDetails?{...pageDetails,teamStepsCount:null!==(_a=pageDetails.teamStepsCount)&&void 0!==_a?_a:0,teamsStep1:null!==(_b=pageDetails.teamsStep1)&&void 0!==_b?_b:[],teamsStep2:null!==(_c=pageDetails.teamsStep2)&&void 0!==_c?_c:[]}:{pageName,companyId:session.company._id,teamStepsCount:0,teamsStep1:[],teamsStep2:[],title:"",description:""}},isLoaderVisible=0===onboardingSettingsPagesList.length;return react.createElement(react.Fragment,null,react.createElement(loader.a,{isShow:isLoaderVisible}),react.createElement(show_by_condition.q,{isShow:!isLoaderVisible},react.createElement(PageSettings,{pageDetails:getPageDetails(IPageNameEnum.Welcome),updateOnboardingPageSettings,isSubmitting:isSubmittingWelcome}),react.createElement(design_system_components.hK,{size:"l",dir:"y"}),react.createElement(PageSettings,{pageDetails:getPageDetails(IPageNameEnum.Group),updateOnboardingPageSettings,isSubmitting:isSubmittingGroup}),react.createElement(design_system_components.hK,{size:"l",dir:"y"}),react.createElement(PageSettings,{pageDetails:getPageDetails(IPageNameEnum.Team),updateOnboardingPageSettings,isSubmitting:isSubmittingTeam}),react.createElement(design_system_components.hK,{size:"l",dir:"y"}),react.createElement(PrivacyPolicySettings,{customPrivacyPolicy,updatePrivacyPolicySettings:async(privacyPolicy,isReapproval)=>{try{const newPrivacyPolicy={...privacyPolicy,isNew:isReapproval};await api.DK.onboardingUpsertPrivacyPolicy(newPrivacyPolicy),setCustomPrivacyPolicy(privacyPolicy),alert_utils.A.success(gettext(isReapproval?"Saved and reapproval requested.":"Onboarding page details updated successfully."))}catch(error){alert_utils.A.errorFromApi(error,gettext)}},deletePrivacyPolicySettings:async companyId=>{const[,error]=await(0,util.Oi)((()=>api.DK.onboardingDeletePrivacyPolicy(companyId)));error?alert_utils.A.errorFromApi(error,gettext):(setCustomPrivacyPolicy(initialPrivacyPolicy),alert_utils.A.success(gettext("Onboarding page details updated successfully.")))}})))};var group_settings_actions=__webpack_require__(35543);var reselect_es=__webpack_require__(1081);const baseSelectors={getIsAllGroupsAccessible:rootState=>rootState.Company.GroupSettings.isAllGroupsAccessible,getAccessibleGroups:rootState=>rootState.Company.GroupSettings.accessibleGroups,getInaccessibleGroups:rootState=>rootState.Company.GroupSettings.inaccessibleGroups},selectors_selectors={...baseSelectors,getAccessibleGroupsIds:(0,reselect_es.Mz)(baseSelectors.getAccessibleGroups,(groups=>groups.map((group=>group._id)))),getAllGroupsAvailable:(0,reselect_es.Mz)(baseSelectors.getAccessibleGroups,baseSelectors.getInaccessibleGroups,((accessibleGroups,innaccessibleGroups)=>[...accessibleGroups,...innaccessibleGroups]))},UpdateSubscriptionsModal=({children})=>{const{gettext}=react.useContext(lib.dg),[isOpen,setIsOpen]=react.useState(!1),callback=react.useRef(null),onClose=()=>{setIsOpen(!1),callback.current=null};return react.createElement(react.Fragment,null,children((currentEventCallback=>{setIsOpen(!0),callback.current=currentEventCallback})),react.createElement(design_system_components.Au,{show:isOpen,onClose,width:640},react.createElement(design_system_components.Au.Header,{title:gettext("Update accessibility changes?")}),react.createElement(design_system_components.Au.Content,null,react.createElement(design_system_components.P,null,gettext("Accessibility of this Group will be updated.")),react.createElement(design_system_components.hK,{dir:"y",size:"m"}),react.createElement(design_system_components.P,null,gettext("This means users of this Group may lose or gain access to Channels in other Groups depending on your changes."))),react.createElement(design_system_components.Au.FooterActions,null,react.createElement(design_system_components.$n,{style:"link",type:"button",text:gettext("Cancel"),onClick:onClose}),react.createElement(design_system_components.$n,{style:"primary",type:"button",text:gettext("Update"),onClick:()=>{callback.current(),onClose()}}))))};var GroupAccessibilityOption;!function(GroupAccessibilityOption){GroupAccessibilityOption.AllGroupsAccessible="allGroupsAccessible",GroupAccessibilityOption.NoGroupsAccessible="noGroupsAccessible",GroupAccessibilityOption.SomeGroupsAccessible="someGroupsAccessible"}(GroupAccessibilityOption||(GroupAccessibilityOption={}));const other_group_settings_transformGroupToOption=group=>({value:group._id,label:group.name}),transformOptionToGroup=option=>
171({_id:option.value,name:option.label}),transformOptionsToInaccessibleGrups=(options,selectedOptionsIds)=>options.filter((option=>!selectedOptionsIds.includes(option.value))).map(transformOptionToGroup),OtherGroupSettings=()=>{const dispatch=(0,es.wA)(),{gettext}=react.useContext(lib.dg),selectedGroupId=(0,es.d4)((state=>state.Group.selectedGroupId)),isAllGroupsAccessible=(0,es.d4)(selectors_selectors.getIsAllGroupsAccessible),accessibleGroupsIds=(0,es.d4)(selectors_selectors.getAccessibleGroupsIds),allGroupsAvailable=(0,es.d4)(selectors_selectors.getAllGroupsAvailable),options=react.useMemo((()=>allGroupsAvailable.map(other_group_settings_transformGroupToOption)),[allGroupsAvailable]),[selectedAccessibleGroups,setSelectedAccessibleGroups]=react.useState([]),[menuIsOpen,setMenuIsOpen]=react.useState(!1),[radioValue,setRadioValue]=react.useState(null),[isPristine,setIsPristine]=react.useState(!0),[showEmptyOptionsError,setShowEmptyOptionsError]=react.useState(!1);react.useEffect((()=>{const beforeunloadHandler=e=>(isPristine||(e.preventDefault(),e.returnValue="",delete e.returnValue),e);return window.addEventListener("beforeunload",beforeunloadHandler),()=>{window.removeEventListener("beforeunload",beforeunloadHandler)}}),[isPristine]),react.useEffect((()=>{var groupId;selectedGroupId&&dispatch((groupId=selectedGroupId,async dispatch=>{dispatch(group_settings_actions.Q.request());try{const{data}=await api.GA.retrieveGroupVisibilitySettings(groupId);dispatch(group_settings_actions.Q.success(data))}catch(error){dispatch((0,success_error_effects.V)((0,typesafe_actions_umd_production.getType)(group_settings_actions.Q.request),error,"fetchGroupVisibility"))}}))}),[dispatch,selectedGroupId]),react.useEffect((()=>{isAllGroupsAccessible?setRadioValue(GroupAccessibilityOption.AllGroupsAccessible):accessibleGroupsIds.length?setRadioValue(GroupAccessibilityOption.SomeGroupsAccessible):setRadioValue(GroupAccessibilityOption.NoGroupsAccessible)}),[isAllGroupsAccessible,accessibleGroupsIds,allGroupsAvailable]);const setDefaultSelectedAccessibleGroups=react.useCallback((()=>{setSelectedAccessibleGroups(options.filter((group=>accessibleGroupsIds.includes(group.value))))}),[accessibleGroupsIds,options]);react.useEffect((()=>{accessibleGroupsIds&&setDefaultSelectedAccessibleGroups()}),[accessibleGroupsIds,setDefaultSelectedAccessibleGroups]);const isRadioSelected=value=>radioValue===value,onAllGroupsAccessibleSelect=()=>{setRadioValue(GroupAccessibilityOption.AllGroupsAccessible),setSelectedAccessibleGroups(options),setIsPristine(!1),setShowEmptyOptionsError(!1)},onNoGroupsAccessibleSelect=()=>{setRadioValue(GroupAccessibilityOption.NoGroupsAccessible),setSelectedAccessibleGroups([]),setIsPristine(!1),setShowEmptyOptionsError(!1)},onSomeGroupsAccessibleSelect=()=>{setDefaultSelectedAccessibleGroups(),setRadioValue(GroupAccessibilityOption.SomeGroupsAccessible),setIsPristine(!1)},onMultiSelectChange=value=>{setIsPristine(!1),setShowEmptyOptionsError(!1),setSelectedAccessibleGroups(value)},onSave=confirm=>{!isRadioSelected(GroupAccessibilityOption.SomeGroupsAccessible)||selectedAccessibleGroups.length?isPristine||confirm((()=>{dispatch(((groupId,{isAllGroupsAccessible,accessibleGroups,inaccessibleGroups},successMessage)=>async dispatch=>{dispatch(group_settings_actions.Z.request());try{await api.GA.modifyGroupVisibilitySettings(groupId,{isAllGroupsAccessible,accessibleGroups:accessibleGroups.map((group=>group._id))}),dispatch(group_settings_actions.Z.success({isAllGroupsAccessible,accessibleGroups,inaccessibleGroups})),dispatch((0,success_error_effects.y)((0,typesafe_actions_umd_production.getType)(group_settings_actions.Z.request),successMessage))}catch(error){dispatch((0,success_error_effects.V)((0,typesafe_actions_umd_production.getType)(group_settings_actions.Z.request),error,"updateGroupVisibility"))}})(selectedGroupId,{isAllGroupsAccessible:isRadioSelected(GroupAccessibilityOption.AllGroupsAccessible),accessibleGroups:selectedAccessibleGroups.map(transformOptionToGroup),inaccessibleGroups:transformOptionsToInaccessibleGrups(options,selectedAccessibleGroups.map((option=>option.value)))},gettext("Group accessibility settings updated!")))})):setShowEmptyOptionsError(!0)};return react.createElement("div",{className:classnames("group-settings",{"has-margin":menuIsOpen})},react.createElement(UpdateSubscriptionsModal,null,(confirm=>react.createElement(design_system_components.Zp,null,react.createElement(design_system_components.Zp.HeaderTitle,{title:gettext("Accessibility to Other Groups")}),react.createElement(design_system_components.Zp.Content,null,react.createElement(design_system_components.dh,{labelText:gettext("This Group can access the Channels in:")}),react.createElement(design_system_components.hK,{dir:"y",size:"m"}),react.createElement("div",null,react.createElement("div",{className:"group-settings-option-input"},react.createElement(design_system_components.a,{label:gettext("All other Groups"),checked:isRadioSelected(GroupAccessibilityOption.AllGroupsAccessible),value:GroupAccessibilityOption.AllGroupsAccessible,name:"accessibility",disabled:!radioValue,onChange:onAllGroupsAccessibleSelect})),react.createElement("div",{className:"group-settings-option-description"},react.createElement(design_system_components.YC,{className:"group-settings-option-description-text"},gettext("This Group’s users have access to Channels in all Groups")))),react.createElement(design_system_components.hK,{dir:"y",size:"l"}),react.createElement("div",null,react.createElement("div",{className:"group-settings-option-input"},react.createElement(design_system_components.a,{label:gettext("No other Groups"),checked:isRadioSelected(GroupAccessibilityOption.NoGroupsAccessible),value:GroupAccessibilityOption.NoGroupsAccessible,name:"accessibility",disabled:!radioValue,onChange:onNoGroupsAccessibleSelect})),react.createElement("div",{className:"group-settings-option-description"},react.createElement(design_system_components.YC,{className:"group-settings-option-description-text"},gettext("This Group’s users do not have access to Channels in any other Groups")))),react.createElement(design_system_components.hK,{dir:"y",size:"l"}),react.createElement("div",null,react.createElement("div",{className:"group-settings-option-input"},react.createElement(design_system_components.a,{label:gettext("Selected Groups"),checked:isRadioSelected(GroupAccessibilityOption.SomeGroupsAccessible),value:GroupAccessibilityOption.SomeGroupsAccessible,name:"accessibility",disabled:!radioValue,onChange:onSomeGroupsAccessibleSelect})),react.createElement("div",{className:"group-settings-option-description"},react.createElement(design_system_components.YC,{className:"group-settings-option-description-text"},gettext("This Group’s users have access to Channels in this Group and selected Groups")),react.createElement(design_system_components.hK,{dir:"y",size:"m"}),react.createElement(design_system_components.KF,{options,value:isRadioSelected(GroupAccessibilityOption.SomeGroupsAccessible)?selectedAccessibleGroups:[],menuIsOpen,placeholder:gettext("Select Groups..."),isDisabled:!isRadioSelected(GroupAccessibilityOption.SomeGroupsAccessible),inputTagProps:{renderIcon:()=>react.createElement(index_es.g,{icon:free_solid_svg_icons.gdJ})},hasError:showEmptyOptionsError,errorMessage:gettext("Please select at least one Group from the dropdown"),onChange:onMultiSelectChange,onMenuOpen:()=>{setMenuIsOpen(!0)},onMenuClose:()=>{setMenuIsOpen(!1)}})))),react.createElement(design_system_components.Zp.FooterActions,null,react.createElement(design_system_components.$n,{onClick:()=>{onSave(confirm)},isLoading:!1,style:"secondary",text:gettext("Save")}))))))}
171,DeleteCampaignDialog=({campaignId,closeDialog,onCampaignDeleted})=>{const{gettext}=(0,use_get_text.z)(),[isSubmitting,setIsSubmitting]=react.useState(!1);return react.createElement(design_system_components.Au,{show:!0,onClose:closeDialog},react.createElement(design_system_components.Au.Header,{title:gettext("Delete Campaign")}),react.createElement(design_system_components.Au.Content,null,react.createElement("div",{className:"cat-text-m cat-text-secondary cat-text-center cat-pv-l"},gettext("Are you sure that you want to delete this campaign?"))),react.createElement(design_system_components.Au.FooterActions,null,react.createElement(stencil_generated.B$,{variant:"outlined",color:"secondary",onClick:closeDialog,nativeAttributes:{"data-testid":"cancel-button"},className:"cat-mr-s"},gettext("Cancel")),react.createElement(stencil_generated.B$,{variant:"filled",color:"primary",onClick:async()=>{var _a;setIsSubmitting(!0);const[,error]=await(0,util.Oi)((()=>api.Bm.deleteCampaign(campaignId)));if(error)return(0,toast.Kf)({message:error.message},{autoClose:8e3}),tracking_utils.A.error(null!==(_a=error.message)&&void 0!==_a?_a:"Failed to delete campaign","DeleteCampaignDialog.deleteCampaign",(0,string_utils.hT)(error)),void setIsSubmitting(!1);(0,toast.tP)({message:gettext("Campaign deleted successfully")}),setIsSubmitting(!1),onCampaignDeleted(campaignId)},nativeAttributes:{"data-testid":"submit-button"},loading:isSubmitting},gettext("Delete campaign"))))},CreateCampaignDialog=({getColor,closeDialog,onCampaignCreated})=>{const{gettext}=(0,use_get_text.z)(),[newCampaignName,setNewCampaignName]=react.useState(""),[campaignNameError,setCampaignNameError]=react.useState(""),[isSubmitting,setIsSubmitting]=react.useState(!1),inputRef=react.useRef(null);react.useEffect((()=>{var _a;null===(_a=inputRef.current)||void 0===_a||_a.doFocus()}),[]),(0,catalyst_provider.g)({"error.Campaigns.campaignNameError":gettext("Campaign name cannot be empty.")});return react.createElement(design_system_components.Au,{show:!0,onClose:closeDialog},react.createElement(design_system_components.Au.Header,{title:gettext("Add campaign")}),react.createElement(design_system_components.Au.Content,null,react.createElement("div",{className:"cat-pv-l"},react.createElement(stencil_generated.BU,{value:newCampaignName,onCatChange:e=>{var _a;return setNewCampaignName(null!==(_a=e.target.value)&&void 0!==_a?_a:"")},placeholder:gettext("Enter campaign name"),nativeAttributes:{"data-testid":"new-campaign-name-input"},ref:inputRef,errors:campaignNameError?[campaignNameError]:[]}))),react.createElement(design_system_components.Au.FooterActions,null,react.createElement(stencil_generated.B$,{variant:"outlined",color:"secondary",onClick:closeDialog,nativeAttributes:{"data-testid":"cancel-button"},className:"cat-mr-s"},gettext("Cancel")),react.createElement(stencil_generated.B$,{variant:"filled",color:"primary",onClick:async()=>{var _a;if(""===newCampaignName.trim())return void setCampaignNameError("Campaigns.campaignNameError");setIsSubmitting(!0);const newCampaign={name:newCampaignName,color:getColor()},[response,error]=await(0,util.Oi)((()=>api.Bm.upsertCampaigns([newCampaign])));if(setIsSubmitting(!1),error||!response)return(0,toast.Kf)({message:(null==error?void 0:error.message)||gettext("Failed to create campaign")},{autoClose:8e3}),void tracking_utils.A.error(null!==(_a=null==error?void 0:error.message)&&void 0!==_a?_a:"Failed to create campaign","CreateCampaignDialog.createCampaign",(0,string_utils.hT)(error));const savedCampaign={Id:response.data[0],Name:newCampaign.name,Color:newCampaign.color};(0,toast.tP)({message:gettext("Campaign created successfully")}),onCampaignCreated(savedCampaign)},nativeAttributes:{"data-testid":"submit-button"},loading:isSubmitting},gettext("Save"))))};var math_utils=__webpack_require__(56175);const CAMPAIGN_COLORS=["#967bdc","#f6bb43","#4b89dc","#db4453","#8dc153","#d870ad","#37bd9c","#e9573e","#3baeda","#aab2bd"],CampaignButton=(0,emotion_styled_browser_esm.A)(stencil_generated.B$)`
172	::part(button) {
173		display: flex;
174		align-items: center;
175		justify-content: space-between;
176		border-left: 5px solid ${({borderColor})=>borderColor};
177	}
178`,Campaigns=()=>{var _a;const{gettext}=(0,use_get_text.z)(),{session:{company}}=(0,use_session.w)(),[campaignsList,setCampaignsList]=react.useState(null!==(_a=company.CampaignList)&&void 0!==_a?_a:[]),[isSorting,setIsSorting]=react.useState(!1),[showCreateDialog,setShowCreateDialog]=react.useState(!1),[showDeleteDialog,setShowDeleteDialog]=react.useState(!1),[selectedCampaignId,setSelectedCampaignId]=react.useState(null),closeDeleteDialog=()=>{setShowDeleteDialog(!1),setSelectedCampaignId(null)},closeCreateDialog=()=>{setShowCreateDialog(!1)};return react.createElement(react.Fragment,null,react.createElement(settings_card.K,{title:gettext("Campaigns")},react.createElement("div",{className:"cat-flex cat-flex-col"}
178,react.createElement("span",{className:"cat-text-m cat-mb-l"},gettext("Use campaign tags to link posts together across different channels and measure their performance in Analytics. Tags also visually differentiate posts on the post feed."))),react.createElement("div",{className:"cat-flex cat-items-center cat-gap-x-m"},react.createElement(stencil_generated.B$,{variant:"outlined",color:"secondary",icon:"plus-outlined",iconRight:!0,onClick:()=>{setShowCreateDialog(!0)},nativeAttributes:{"data-testid":"add-campaign-button"}},gettext("Add new campaign")),campaignsList.length>1&&react.createElement(stencil_generated.B$,{variant:"text",color:"primary",onClick:()=>(async campaigns=>{var _a;setIsSorting(!0);const sortedCampaigns=[...campaigns].sort(((a,b)=>a.Name.localeCompare(b.Name))),upsertRequestItems=sortedCampaigns.map((campaign=>({id:campaign.Id,name:campaign.Name,color:campaign.Color}))),[response,error]=await(0,util.Oi)((()=>api.Bm.upsertCampaigns(upsertRequestItems)));if(setIsSorting(!1),error||!response)return(0,toast.Kf)({message:(null==error?void 0:error.message)||gettext("Failed to update campaigns")},{autoClose:8e3}),void tracking_utils.A.error(null!==(_a=null==error?void 0:error.message)&&void 0!==_a?_a:"Failed to update campaigns","Campaigns.handleSortCampaigns",(0,string_utils.hT)(error));(0,toast.tP)({message:gettext("Campaigns sorted successfully")}),setCampaignsList(sortedCampaigns)})(campaignsList),nativeAttributes:{"data-testid":"sort-campaigns-button"},loading:isSorting},gettext("Sort alphabetically"))),react.createElement("div",{className:"cat-grid cat-grid-4 cat-gap-x-m cat-gap-y-s cat-mv-l"},campaignsList.map(((campaign,index)=>react.createElement(CampaignButton,{key:campaign.Id,borderColor:campaign.Color,variant:"outlined",color:"secondary",icon:"cross-circle-outlined",iconRight:!0,onClick:()=>{return campaignId=campaign.Id,setSelectedCampaignId(campaignId),void setShowDeleteDialog(!0);var campaignId},nativeAttributes:{"data-testid":`campaigns-${index}-id`}},campaign.Name))))),showCreateDialog&&react.createElement(CreateCampaignDialog,{closeDialog:closeCreateDialog,getColor:()=>{const usedColors=campaignsList.map((campaign=>campaign.Color)),firstAvailableColor=CAMPAIGN_COLORS.find((color=>!usedColors.includes(color)));if(!firstAvailableColor){const randomIndex=(0,math_utils.h)(CAMPAIGN_COLORS.length);return CAMPAIGN_COLORS[randomIndex]}return firstAvailableColor},onCampaignCreated:campaign=>{setCampaignsList([campaign,...campaignsList]),closeCreateDialog()}}),showDeleteDialog&&selectedCampaignId&&react.createElement(DeleteCampaignDialog,{campaignId:selectedCampaignId,closeDialog:closeDeleteDialog,onCampaignDeleted:campaignId=>{const updatedList=null==campaignsList?void 0:campaignsList.filter((campaign=>campaign.Id!==campaignId));setCampaignsList(updatedList),closeDeleteDialog()}}))};var omit=__webpack_require__(46347);const ManageFeedContainer=emotion_styled_browser_esm.A.div`
179	max-width: 400px;
180`,manage_post_feed_mapDispatchToProps={updateCompany:effects_updateCompany},ManagePostFeed=(0,es.Ng)(null,manage_post_feed_mapDispatchToProps)((({updateCompany})=>{const{session:{company}}=(0,use_session.w)(),{gettext}=(0,use_get_text.z)(),showProposePostPoints=!(company.isGamificationDisabled||company.postCreation.skipApprovalInternal&&company.postCreation.skipApprovalExternal);return null==company?react.createElement(stencil_generated.K0,{size:"xl",className:"cat-flex cat-justify-center","data-testid":"manage-post-feed-loader"}):react.createElement(formik_esm.l1,{initialValues:(0,pick.A)(company,["defaultPostExpiration","proposePostPoint"]),enableReinitialize:!0,onSubmit:async(values,{setSubmitting,resetForm})=>{let companySettingsToSubmit={...values};showProposePostPoints||(companySettingsToSubmit=(0,omit.A)(values,["proposePostPoint"])),await updateCompany(company._id,companySettingsToSubmit,gettext("Post feed configuration was successfully updated")),setSubmitting(!1),resetForm({values})}},(({isSubmitting,handleSubmit})=>react.createElement(formik_esm.lV,{className:"formik-form"},react.createElement(settings_card.K,{title:gettext("Manage post feed"),footerButton:react.createElement(stencil_generated.B$,{nativeAttributes:{"data-testid":"manage-post-feed-save-button"},variant:"filled",color:"primary",loading:isSubmitting,onClick:()=>{handleSubmit()}},gettext("Save changes"))},react.createElement(ManageFeedContainer,{className:"cat-flex-col cat-gap-l"},react.createElement("div",null,react.createElement("label",{className:"cat-flex cat-items-center cat-gap-xs cat-label","data-testid":"defaultPostExpiration-label"},react.createElement("span",{id:"defaultPostExpiration-label-text"},gettext("Posts are by default archived after")),react.createElement(stencil_generated.QS,{content:gettext("You can change the archival date for individual posts manually."),"data-testid":"defaultPostExpiration-tooltip"},react.createElement(stencil_generated.k0,{icon:"question-mark-circle-outlined"}))),react.createElement(formik_esm.D0,{name:"defaultPostExpiration"},(({field})=>react.createElement(stencil_generated.BU,{type:"number",name:"defaultPostExpiration",min:1,"aria-labelledby":"defaultPostExpiration-label-text","text-suffix":gettext("days"),value:field.value,onCatChange:e=>{var _a;field.onChange({target:{name:field.name,value:parseInt(null!==(_a=e.target.value)&&void 0!==_a?_a:"")}})},nativeAttributes:{"data-testid":"defaultPostExpiration-id"}})))),showProposePostPoints&&react.createElement("div",null,react.createElement("label",{className:"cat-label","data-testid":"proposePostPoint-label",id:"proposePostPoint-label"},gettext("Points for proposing a post (by sharer)")),react.createElement(formik_esm.D0,{name:"proposePostPoint"},(({field})=>react.createElement(stencil_generated.BU,{type:"number",name:"proposePostPoint",min:0,"aria-labelledby":"proposePostPoint-label","text-suffix":gettext("points"),value:field.value,onCatChange:e=>{var _a;field.onChange({target:{name:field.name,value:parseInt(null!==(_a=e.target.value)&&void 0!==_a?_a:"")}})},nativeAttributes:{"data-testid":"proposePostPoint-id"}})))))))))}
180)),getLanguageOptions=async(params={})=>(await api.X_.getLanguage(params.filter)).data,language_detection_and_filtering_mapDispatchToProps={updateCompany:effects_updateCompany},LanguageDetectionAndFiltering=(0,es.Ng)(null,language_detection_and_filtering_mapDispatchToProps)((({updateCompany})=>{const{gettext}=(0,use_get_text.z)(),{session:{company}}=(0,use_session.w)(),[languageOptions,setLanguageOptions]=react.useState([]),[companyLanguages,setCompanyLanguages]=react.useState(null),[isLoading,setIsLoading]=react.useState(!1);react.useEffect((()=>{(async()=>{var _a;setIsLoading(!0);try{const[companyLanguages,languageOptionsList]=await Promise.all([getLanguageOptions({filter:"company"}),getLanguageOptions({filter:"all"})]);setCompanyLanguages(null===companyLanguages?[]:companyLanguages.map((lang=>lang.name))),setLanguageOptions(languageOptionsList)}catch(error){(0,toast.Kf)({message:error.message}),tracking_utils.A.error(null!==(_a=error.message)&&void 0!==_a?_a:"Failed to fetch language options","LanguageDetectionAndFiltering.getLanguages",(0,string_utils.hT)(error))}finally{setIsLoading(!1)}})()}),[]);const languageOptionsSelect=new Map(languageOptions.map((lang=>[lang.name,gettext(lang.name)])));return isLoading?react.createElement(stencil_generated.K0,{size:"xl",className:"cat-flex cat-justify-center","data-testid":"language-detection-filtering-loader"}):react.createElement(formik_esm.l1,{enableReinitialize:!0,initialValues:{languages:companyLanguages||[]},onSubmit:async(values,{setSubmitting})=>{const ids=((languages=[])=>languages.map((langName=>languageOptions.find((lang=>lang.name===langName)))).filter((lang=>void 0!==lang)))(values.languages);await updateCompany(company._id,{supportedLang:ids},gettext("Language detection & filtering configuration was successfully updated")),setSubmitting(!1)}},(({values:{languages},setFieldValue,isSubmitting,handleSubmit})=>react.createElement(formik_esm.lV,{className:"formik-form"},react.createElement(settings_card.K,{title:gettext("Language detection & filtering"),footerButton:react.createElement(stencil_generated.B$,{nativeAttributes:{"data-testid":"language-detection-save-button"},variant:"filled",color:"primary",loading:isSubmitting,onClick:()=>{handleSubmit()}},gettext("Save changes"))},react.createElement("div",{className:"cat-flex-col cat-gap-l"},react.createElement(cat_select_facade.j,{multiple:!0,clearable:!0,requiredMarker:"none",options:languageOptionsSelect,noItems:gettext("No matching language found"),placeholder:gettext("Select language"),value:languages,onCatChange:e=>{setFieldValue("languages",e.target.value)},nativeAttributes:{"data-testid":"language-detection-select"}},react.createElement("label",{slot:"label",className:"cat-flex cat-items-center cat-gap-xs cat-label cat-mb-0"},gettext("Select which languages your company uses"),react.createElement(stencil_generated.QS,{content:gettext("Users can select which languages they understand and receive content only in those languages."),"data-testid":"languageDetection-tooltip"},react.createElement(stencil_generated.k0,{icon:"question-mark-circle-outlined"})))))))))}));var Fields,ApprovalNeededFor;!function(Fields){Fields.adminsOnlyPosting="adminsOnlyPosting",Fields.approvalNeededFor="approvalNeededFor",Fields.isDefaultPostTypeShareable="isDefaultPostTypeShareable"}(Fields||(Fields={})),function(ApprovalNeededFor){ApprovalNeededFor.allPosts="allPosts",ApprovalNeededFor.externalPosts="externalPosts",ApprovalNeededFor.noPosts="noPosts"}(ApprovalNeededFor||(ApprovalNeededFor={}));const post_creation_permissions_mapDispatchToProps={updateCompany:effects_updateCompany},PostCreationPermissions=(0,es.Ng)(null,post_creation_permissions_mapDispatchToProps)((({company,updateCompany})=>{const{gettext}=(0,use_get_text.z)(),shouldDisableApprovalNeededFor=values=>values[Fields.adminsOnlyPosting]===String(!0),postCreationOptions=[{value:String(!0),label:gettext("Only admins")},{value:String(!1),label:gettext("Everyone")}],approvalNeededOptions=[{value:ApprovalNeededFor.allPosts,label:gettext("Internal and external")},{value:ApprovalNeededFor.externalPosts,label:gettext("Only external")},{value:ApprovalNeededFor.noPosts,label:gettext("None")}
180],isDefaultPostTypeShareableOptions=[{value:String(!0),label:gettext("External (shareable)")},{value:String(!1),label:gettext("Internal")}];return react.createElement(formik_esm.l1,{initialValues:(({postCreation,isDefaultPostTypeShareable})=>({[Fields.adminsOnlyPosting]:String(postCreation.adminsOnlyPosting),[Fields.approvalNeededFor]:postCreation.skipApprovalExternal?ApprovalNeededFor.noPosts:postCreation.skipApprovalInternal?ApprovalNeededFor.externalPosts:ApprovalNeededFor.allPosts,[Fields.isDefaultPostTypeShareable]:String(null!=isDefaultPostTypeShareable&&isDefaultPostTypeShareable)}))(company),onSubmit:async(values,{setSubmitting,resetForm})=>{const companyId=company._id;await updateCompany(companyId,(values=>{const adminsOnlyPosting=values[Fields.adminsOnlyPosting]===String(!0),isDefaultPostTypeShareable=values[Fields.isDefaultPostTypeShareable]===String(!0);return values[Fields.approvalNeededFor]===ApprovalNeededFor.noPosts?{postCreation:{adminsOnlyPosting,skipApprovalInternal:!0,skipApprovalExternal:!0},isDefaultPostTypeShareable}:values[Fields.approvalNeededFor]===ApprovalNeededFor.externalPosts?{postCreation:{adminsOnlyPosting,skipApprovalInternal:!0,skipApprovalExternal:!1},isDefaultPostTypeShareable}:{postCreation:{adminsOnlyPosting,skipApprovalInternal:!1,skipApprovalExternal:!1},isDefaultPostTypeShareable}})(values),gettext("Post creation permissions were successfully updated")),setSubmitting(!1),resetForm({values})}},(({values,isSubmitting,handleSubmit})=>react.createElement(formik_esm.lV,{className:"formik-form"},react.createElement(settings_card.K,{title:gettext("Post creation"),footerButton:react.createElement(stencil_generated.B$,{nativeAttributes:{"data-testid":"post-settings-save-button"},variant:"filled",color:"primary",loading:isSubmitting,onClick:e=>{e.preventDefault(),handleSubmit()}},gettext("Save changes"))},react.createElement("div",{className:"cat-flex-col cat-gap-l"},react.createElement("div",null,react.createElement("label",{className:"cat-label","data-testid":"admins-only-posting-label"},gettext("Who can create posts?")),react.createElement(formik_esm.D0,{name:Fields.adminsOnlyPosting},(({field})=>react.createElement(stencil_generated.hu,{class:"cat-form","a11y-label":gettext("Admins only posting"),name:Fields.adminsOnlyPosting,value:field.value},postCreationOptions.map((option=>react.createElement(stencil_generated.ut,{key:option.value,label:option.label,value:option.value,checked:field.value===option.value,onCatChange:()=>field.onChange({target:{name:field.name,value:option.value}}),nativeAttributes:{"data-testid":`adminsOnlyPosting-${option.value}-radio`}}))))))),react.createElement("div",null,react.createElement("label",{className:"cat-label","data-testid":"approval-needed-for-label"},gettext("Which posts need to be approved by admin?")),react.createElement(formik_esm.D0,{name:Fields.approvalNeededFor},(({field})=>react.createElement(stencil_generated.hu,{class:"cat-form","a11y-label":gettext("Approval needed for"),name:Fields.approvalNeededFor,value:field.value},approvalNeededOptions.map((option=>react.createElement(stencil_generated.ut,{key:option.value,label:option.label,value:option.value,checked:field.value===option.value,disabled:shouldDisableApprovalNeededFor(values),onCatChange:()=>field.onChange({target:{name:field.name,value:option.value}}),nativeAttributes:{"data-testid":`approvalNeededFor-${option.value}-radio`}}))))))),react.createElement("div",null,react.createElement("label",{className:"cat-label","data-testid":"default-post-type-label"},gettext("Default post type")),react.createElement(formik_esm.D0,{name:Fields.isDefaultPostTypeShareable},(({field})=>react.createElement(stencil_generated.hu,{class:"cat-form","a11y-label":gettext("Default post type"),name:Fields.isDefaultPostTypeShareable,value:field.value},isDefaultPostTypeShareableOptions.map((option=>react.createElement(stencil_generated.ut,{key:option.value,label:option.label,value:option.value,checked:field.value===option.value,onCatChange:()=>field.onChange({target:{name:field.name,value:option.value}}
180),nativeAttributes:{"data-testid":`isDefaultPostExternal-${option.value}-radio`}}))))))))))))})),PostSettings=()=>{const{session:{user,company}}=(0,use_session.w)(),dispatch=(0,es.wA)();return react.useEffect((()=>{company.isGroupEnabled||dispatch(fetchGroupDigestSettings(user.groupId))}),[company.isGroupEnabled,user.groupId,dispatch]),react.createElement("div",{className:"cat-flex-col cat-gap-xl"},react.createElement(PostCreationPermissions,{company}),react.createElement(ManagePostFeed,null),company.isLanguageEnabled&&react.createElement(LanguageDetectionAndFiltering,null),react.createElement(Campaigns,null))},SocialInsights=(0,es.Ng)(null,(dispatch=>(0,redux.bindActionCreators)({updateCompany:effects_updateCompany},dispatch)))((({updateCompany})=>{const{gettext}=(0,use_get_text.z)(),{session:{company}}=(0,use_session.w)(),[isSaving,setIsSaving]=react.useState(!1),[isFetchingEngagersEnabled,setIsFetchingEngagersEnabled]=react.useState(company.isFetchingEngagersEnabled);return react.createElement(settings_card.K,{title:gettext("Social insights"),footerButton:react.createElement(stencil_generated.B$,{nativeAttributes:{"data-testid":"social-insights-save-button"},variant:"filled",color:"primary",loading:isSaving,onClick:async()=>{setIsSaving(!0),await updateCompany(company._id,{isFetchingEngagersEnabled},gettext("Social insights configuration was successfully updated")),isFetchingEngagersEnabled&&tracking_utils.A.event("Enable engager list"),setIsSaving(!1)}},gettext("Save changes"))},react.createElement("div",{className:"cat-flex-col cat-gap-l"},react.createElement("label",{className:"cat-label","data-testid":"social-insights-description"},gettext("The engager list allows your users to download a list of people who reacted to their LinkedIn posts over the past 30 days. The lists are available to export for each user from their profile settings page.")),react.createElement(stencil_generated.xN,{style:{width:"fit-content"},label:gettext("Allow fetching engagement lists from LinkedIn"),labelLeft:!0,checked:isFetchingEngagersEnabled,onCatChange:()=>{setIsFetchingEngagersEnabled(!isFetchingEngagersEnabled)},nativeAttributes:{"data-testid":"social-insights-toggle"}})))})),MSTeamsSettingsForm=(0,emotion_styled_browser_esm.A)(stencil_generated.as)`
181	max-width: 400px;
182
183	@media screen and (max-width: 767px) {
184		width: 100%;
185		max-width: 100%;
186	}
187`,DEFAULT_MS_TEAMS_SETTINGS={botId:"",clientId:"",clientSecret:"",tenantId:"",appId:"",isEnabled:!1},MsTeamsSettings=()=>{const{formValues,touchedFields,isSaving,isFetching,isTestingConnection,canTestConnection,handleInputChange,handleBlur,getFieldErrors,handleSubmit,testConnection,inputFields,gettext}=(()=>{const{gettext}=(0,use_get_text.z)(),{session:{company}}=(0,use_session.w)(),INPUT_FIELDS_CONFIG=[{id:"botId",labelKey:gettext("Bot ID"),placeholderKey:gettext("Add Bot ID"),disabled:!0,testId:"botId"},{id:"clientId",labelKey:gettext("Client ID"),placeholderKey:gettext("Add Client ID"),disabled:!1,testId:"clientId"},{id:"clientSecret",labelKey:gettext("Client Secret"),placeholderKey:gettext("Add Client Secret"),disabled:!1,testId:"clientSecret"},{id:"tenantId",labelKey:gettext("Tenant ID"),placeholderKey:gettext("Add Tenant ID"),disabled:!1,testId:"tenantID"},{id:"appId",labelKey:gettext("App ID"),placeholderKey:gettext("Add App ID"),disabled:!1,testId:"appID"}],initialTouched=INPUT_FIELDS_CONFIG.reduce(((field,{id})=>({...field,[id]:!1})),{isEnabled:!1}),[formValues,setFormValues]=react.useState(DEFAULT_MS_TEAMS_SETTINGS),[originalClientSecret,setOriginalClientSecret]=react.useState(""),[savedValues,setSavedValues]=react.useState(DEFAULT_MS_TEAMS_SETTINGS),[touchedFields,setTouchedFields]=react.useState(initialTouched),[isSaving,setIsSaving]=react.useState(!1),[isFetching,setIsFetching]=react.useState(!0),[isTestingConnection,setIsTestingConnection]=react.useState(!1);(0,catalyst_provider.g)({"error.MsTeamsSettings.requiredField":gettext("This field is required.")});const fetchSettings=react.useCallback((async()=>{setIsFetching(!0);const[msTeamsIntegrationResponse,error]=await(0,util.Oi)((()=>api._K.retrieveCompanyMSTeamsSettings(company._id)));if(setIsFetching(!1),error)return(0,toast.Kf)({message:gettext("Failed to load MS Teams settings.")}),tracking_utils.A.error("Failed to load MS Teams settings","useMsTeamsSettingsForm.fetchSettings",(0,string_utils.hT)(error)),setFormValues(DEFAULT_MS_TEAMS_SETTINGS),setOriginalClientSecret(""),void setTouchedFields(initialTouched);const fetchedData=null==msTeamsIntegrationResponse?void 0:msTeamsIntegrationResponse.data,currentSettings={...DEFAULT_MS_TEAMS_SETTINGS,...fetchedData||{},isEnabled:fetchedData.isEnabled};setFormValues(currentSettings),setSavedValues(currentSettings),setOriginalClientSecret(currentSettings.clientSecret||""),setTouchedFields(initialTouched)}),[company,gettext]);react.useEffect((()=>{fetchSettings()}),[fetchSettings]);const getFieldErrors=fieldValue=>{const errors=[];return(fieldValue||"").trim()||errors.push("MsTeamsSettings.requiredField"),errors},validateForm=react.useCallback((()=>{let isValid=!0;return INPUT_FIELDS_CONFIG.forEach((field=>{const value=formValues[field.id];getFieldErrors(value).length>0&&(isValid=!1)})),isValid}),[formValues]),hasUnsavedChanges=react.useMemo((()=>[...INPUT_FIELDS_CONFIG.map((f=>f.id)),"isEnabled"].some((key=>{var _a;const typedKey=key,currentValue="clientSecret"===typedKey?originalClientSecret:savedValues[typedKey];return String(null!==(_a=formValues[typedKey])&&void 0!==_a?_a:"")!==String(null!=currentValue?currentValue:"")}
187))),[formValues,setSavedValues,originalClientSecret]),isFormComplete=react.useMemo((()=>!!formValues.isEnabled&&INPUT_FIELDS_CONFIG.every((field=>{const value=formValues[field.id];return"string"==typeof value&&""!==value.trim()}))),[formValues]),canTestConnection=formValues.isEnabled&&isFormComplete&&!hasUnsavedChanges;return{formValues,touchedFields,isSaving,isFetching,isTestingConnection,hasUnsavedChanges,canTestConnection,handleInputChange:(field,value)=>{let newValue;newValue="isEnabled"===field?Boolean(value):null==value?"":String(value),setFormValues((prev=>({...prev,[field]:newValue})))},handleBlur:field=>{setTouchedFields((touched=>({...touched,[field]:!0})))},getFieldErrors,handleSubmit:async()=>{var _a;if(setTouchedFields(Object.keys(initialTouched).reduce(((all,key)=>(all[key]=!0,all)),{})),!validateForm())return void(0,toast.Kf)({message:gettext("Please fill in all required fields.")});setIsSaving(!0);const payload={...formValues};formValues.clientSecret===originalClientSecret&&delete payload.clientSecret;const[response,error]=await(0,util.Oi)((()=>api._K.modifyCompanyMSTeamsSettings(company._id,payload)));if(setIsSaving(!1),error)return(0,toast.Kf)({message:gettext("Failed to update MS Teams settings.")}),void tracking_utils.A.error("Failed to update MS Teams settings","useMsTeamsSettingsForm.handleSubmit",(0,string_utils.hT)(error));if(null==response?void 0:response.data){(0,toast.tP)({message:gettext("MS Teams settings updated successfully.")});const responseWithBotId={...response.data,botId:formValues.botId};setFormValues(responseWithBotId),setSavedValues(responseWithBotId),setOriginalClientSecret(null!==(_a=response.data.clientSecret)&&void 0!==_a?_a:originalClientSecret),setTouchedFields(initialTouched)}},testConnection:async()=>{setIsTestingConnection(!0);const[response,error]=await(0,util.Oi)((()=>api._K.testCompanyMSTeamsSettings(company._id)));if(setIsTestingConnection(!1),error)return(0,toast.Kf)({message:gettext("MS Teams connection failed.")}),void tracking_utils.A.error("MS Teams connection failed","useMsTeamsSettingsForm.testConnection",(0,string_utils.hT)(error));response&&(0,toast.tP)({message:gettext("MS Teams connection was successful.")})},inputFields:INPUT_FIELDS_CONFIG,gettext}})();return react.createElement(react.Fragment,null,react.createElement(settings_card.K,{title:gettext("MS Teams settings"),footerButton:react.createElement(stencil_generated.B$,{nativeAttributes:{"data-testid":"msteams-settings-button"},variant:"filled",color:"primary",loading:isSaving,onClick:handleSubmit},gettext("Save changes"))},isFetching?react.createElement(stencil_generated.K0,{size:"l",className:"cat-flex cat-items-center"}):react.createElement(react.Fragment,null,react.createElement("div",{className:"cat-flex-col cat-gap-x-m cat-gap-y-s"},react.createElement("label",{className:"cat-label"},gettext("Advocate through MS Teams")),react.createElement(stencil_generated.xN,{nativeAttributes:{"data-testid":"msteams-toggle"},label:gettext("Enable MS Teams integration"),checked:formValues.isEnabled,onCatChange:()=>{handleInputChange("isEnabled",!formValues.isEnabled)}})),formValues.isEnabled&&react.createElement(MSTeamsSettingsForm,{className:"cat-form cat-mt-l"},inputFields.map((field=>react.createElement(stencil_generated.BU,{key:field.id,nativeAttributes:{"data-testid":field.testId},label:field.labelKey,placeholder:field.placeholderKey,hint:"clientSecret"===field.id?gettext("Leave the field unchanged to keep your current client secret."):void 0,value:String(formValues[field.id]||""),errors:touchedFields[field.id]?getFieldErrors(String(formValues[field.id]||"")):[],errorUpdate:!0,required:!0,disabled:field.disabled,onCatChange:e=>{handleInputChange(field.id,e.target.value)},onCatBlur:()=>handleBlur(field.id)}))))),react.createElement("div",{className:"cat-mt-l"},react.createElement(stencil_generated.QS,{size:"m",content:gettext(canTestConnection?"Check your MS Teams - You should receive a test message shortly!":"Make sure to save your settings first to test the integration.")},react.createElement(stencil_generated.B$,{variant:"outlined",color:"secondary",loading:isTestingConnection,disabled:!canTestConnection,onClick:testConnection,nativeAttributes:{"data-testid":"msteams-test-connection-button"}},gettext("Test connection"))))))};var url_utils=__webpack_require__(60059);class PostFeedWidgetRenderer extends react.Component{constructor(props,state){super(props,state),this.renderEmbedCodeToCopy=()=>{const{selectedChannelList,embedCodeToCopy}
187=this.state,{gettext}=this.context;return 0===selectedChannelList.length?this.renderRequiredChannelMessage():react.createElement(react.Fragment,null,react.createElement("p",null,gettext("Embed the following code into your website.")),react.createElement("textarea",{"data-testid":"post-feed-widget-textarea",className:"embed-code",readOnly:!0,value:embedCodeToCopy}))},this.renderEmbedCode=()=>{const{selectedChannelList,embedCode}=this.state;return 0===selectedChannelList.length?this.renderRequiredChannelMessage():embedCode},this.renderRequiredChannelMessage=()=>{const{gettext}=this.context;return react.createElement("p",null,gettext("Please, select at least one channel to get code snippet."))},this.setChannelList=channelList=>{const selectedChannelList=channelList;this.setState({selectedChannelList},this.updateCode)},this.onTitleChange=event=>{this.setState({title:event.target.value},this.updateCode)},this.onIsTitleDisabledToggle=event=>{this.setState({isTitleDisabled:event.target.checked},(()=>this.updateCode()))},this.onWidthChange=event=>{this.setState({width:event.target.value},this.updateCode)},this.onHeightChange=event=>{this.setState({height:event.target.value},this.updateCode)},this.updateCode=()=>{const{width,height}=this.state,attributes={};attributes.src=`${this.composeWidgetURL()}`,width&&(attributes.width=`${width}`),height&&(attributes.height=`${height}`);const embedCode=react.createElement("iframe",{"data-testid":"post-feed-widget-preview",...attributes,title:"post-feed-widget-preview"}),embedCodeToCopy=this.getWidgetSnippetAsString(attributes);this.setState({embedCode,embedCodeToCopy})},this.getWidgetSnippetAsString=attributes=>{const attrsArray=[];for(const key of Object.keys(attributes))attrsArray.push(`${key}="${attributes[key]}"`);return`<iframe ${attrsArray.join(" ")}></iframe>`},this.state={title:this.context.gettext("New posts this week"),isTitleDisabled:!1,width:"300",height:"500",embedCode:react.createElement("div",null),embedCodeToCopy:"",selectedChannelList:[]}}componentDidMount(){this.updateCode(),this.props.fetchGroupedChannels()}render(){const{props:{channelList,company,userGroupId},state:{title,isTitleDisabled,selectedChannelList,width,height},context:{gettext}}=this;return react.createElement(design_system_components.Zp,null,react.createElement(design_system_components.Zp.HeaderTitle,{title:gettext("Widgets")}),react.createElement(design_system_components.Zp.Content,null,react.createElement(components.fI,null,react.createElement("p",null,gettext("Add Haiilo's post feed to your website by creating a widget and embedding its code snippet into your website."),react.createElement("br",null),gettext("For more information, please contact us."))),react.createElement(components.fI,null,react.createElement("div",{className:"md-block"},react.createElement(components.fI,null,react.createElement(components.VP,null,react.createElement(design_system_components.dh,{labelText:gettext("Select channels")}),react.createElement("div",{style:{width:"360px"}},react.createElement(design_system_components.xI,{placeholder:gettext("Choose channels"),showGroups:company.isGroupEnabled,channelList:(0,adapters.DI)(channelList,userGroupId),value:selectedChannelList,onChange:this.setChannelList})))),react.createElement(components.fI,null,react.createElement(components.VP,null,react.createElement(design_system_components.TZ,{type:"text",value:title,disabled:isTitleDisabled,labelText:gettext("Title"),onChange:this.onTitleChange}),react.createElement(design_system_components.hK,{size:"xl",dir:"y"}),react.createElement(design_system_components.Sc,{value:isTitleDisabled,labelText:gettext("No title"),onChange:this.onIsTitleDisabledToggle,dataTestId:"post-feed-widget-no-title"}))),react.createElement(components.fI,null,react.createElement(components.VP,null,react.createElement(design_system_components.TZ,{type:"text",value:width,labelText:gettext("Width"),onChange:this.onWidthChange,style:{width:"164px"}})),react.createElement(components.VP,null,react.createElement(design_system_components.TZ,{type:"text",value:height,labelText:gettext("Height"),onChange:this.onHeightChange,style:{width:"164px"}}))),react.createElement(components.VP,null,react.createElement(design_system_components.dh,{labelText:gettext("Code Snippet")}),this.renderEmbedCodeToCopy())),react.createElement("div",{className:"md-block"},react.createElement(design_system_components.dh,{labelText:gettext("Preview")}),this.renderEmbedCode()))))}composeWidgetURL(){const{company:{subdomain}}=this.props,{title,isTitleDisabled,selectedChannelList}=this.state,params={title,isTitleDisabled,channelId:selectedChannelList.map((channel=>channel._id))};return(0,url_utils.Dz)(subdomain,"/app.iframe/#/iframe",params)}}PostFeedWidgetRenderer.contextType=lib.dg;const PostfeedWidget_mapDispatchToProps={fetchGroupedChannels:redux_effects.Vx},PostFeedWidget=(0,es.Ng)((state=>({channelList:state.Channel.groupedChannelList,userGroupId:state.Session.user.groupId})),PostfeedWidget_mapDispatchToProps)(PostFeedWidgetRenderer),WidgetsSettings=(0,es.Ng)((state=>({company:state.Company.company})),{})((props=>{const{company}=props;return company?react.createElement(react.Fragment,null,react.createElement(PostFeedWidget,{company}),company.isMSTeamsEnabled&&react.createElement("div",{className:"cat-mv-l"},react.createElement(MsTeamsSettings,null))):react.createElement(react.Fragment,null)})),CompanySettings=({match})=>{const{session,sessionUtil:{isLabEnabled}}=(0,use_session.w)();return react.createElement(react.Fragment,null,react.createElement(react_router.qh,{exact:!0,path:`${match.path}`,component:GeneralSettings}),react.createElement(react_router.qh,{exact:!0,path:`${match.path}/digest`,component:DigestSettings}),react.createElement(react_router.qh,{exact:!0,path:`${match.path}/onboarding-settings`,component:OnboardingSettings}),react.createElement(react_router.qh,{exact:!0,path:`${match.path}/employee-advocacy`,component:EmployeeAdvocacySettings}),!session.company.isGamificationDisabled&&react.createElement(react_router.qh,{exact:!0,path:`${match.path}/gamification`,component:GamificationSettings}),react.createElement(react_router.qh,{exact:!0,path:`${match.path}/smarpers`,component:ForSmarpersSettings}),session.company.isSAMLSelfServiceEnabled&&react.createElement(react_router.qh,{exact:!0,path:`${match.path}/saml`,component:SamlNewSettings}),react.createElement(react_router.qh,{exact:!0,path:`${match.path}/channel`,component:ChannelsSettings}),react.createElement(react_router.qh,{exact:!0,path:`${match.path}/channel/:channelId`,component:ChannelEdit}),react.createElement(PrivateRoute.n,{isAuthorized:isLabEnabled(labs.fS),exact:!0,path:`${match.path}/other-settings`,component:OtherGroupSettings}),react.createElement(react_router.qh,{exact:!0,path:`${match.path}/invitations`,component:InvitationsSettings}),react.createElement(react_router.qh,{exact:!0,path:`${match.path}/post-settings`,component:PostSettings}),react.createElement(react_router.qh,{exact:!0,path:`${match.path}/post-on-behalf-settings`,component:post_on_behalf_settings.PostOnBehalfSettings}),react.createElement(react_router.qh,{exact:!0,path:`${match.path}/ai-assistant-settings`,component:AVASettings}),react.createElement(PrivateRoute.n,{isAuthorized:session.company.contentBooster,exact:!0,path:`${match.path}/integrations`,component:WidgetsSettings}),react.createElement(react_router.qh,{exact:!0,path:`${match.path}/shortcuts`,component:ShortcutsSettings}),react.createElement(react_router.qh,{exact:!0,path:`${match.path}/resources`,component:ResourcesSettings}),react.createElement(PrivateRoute.n,{isAuthorized:session.company.isSocialInsightsEnabled,exact:!0,path:`${match.path}/social-insights`,component:SocialInsights}),react.createElement(react_router.qh,{exact:!0,path:`${match.path}/content`,component:ImportingContentSettings}))};var group_switcher_actions=__webpack_require__(18020),header_with_group_selection=__webpack_require__(37373);const HeaderWithGroupSelectionConnectedForSettings=(0,es.Ng)(header_with_group_selection.Xy,(dispat
187ch=>(0,redux.bindActionCreators)({fetchGroups:effects.NV},dispatch)))(header_with_group_selection.uA),HeaderWithGroupSelectionForSettings=({onGroupIdSelection})=>{const{gettext}=(0,use_get_text.z)(),{sessionUtil:{isManager,hasChannelManagerRole}}=(0,use_session.w)(),[lastSelectedGroup,setLastSelectedGroup]=react.useState(null),canSelectGroup=isManager()||hasChannelManagerRole(),canEditCompanySettings=isManager();return react.createElement(HeaderWithGroupSelectionConnectedForSettings,{onGroupSelection:group=>{setLastSelectedGroup(group);const groupId=group.value===header_with_group_selection.lW?"":group.value;onGroupIdSelection(groupId)},isUpdateQueryParamEnabled:!1,isGroupSelectionEnabled:canSelectGroup,isNoFilterOptionEnabled:canEditCompanySettings,selectedGroup:lastSelectedGroup,title:gettext("Administration"),testId:"company-settings-page-header",noFilterOptionText:gettext("Company settings")})};var query_utils=__webpack_require__(1162);const CompanySettingsContainer=()=>{const match=(0,react_router.W5)(),location=(0,react_router.zy)(),history=(0,react_router.W6)(),[{groupId:groupIdFromUrl}]=(0,use_query_params.s)(),{session:{company:{_id:companyId}},sessionUtil:{isManager,isGroupAdmin}}=(0,use_session.w)(),{company}=(0,es.d4)((state=>({company:state.Company.company}))),dispatch=(0,es.wA)(),shouldFetchCompanyData=!company&&(isManager()||isGroupAdmin());react.useEffect((()=>{shouldFetchCompanyData&&dispatch(fetchCompany(companyId))}),[shouldFetchCompanyData]);return react.createElement("div",null,react.createElement(HeaderWithGroupSelectionForSettings,{onGroupIdSelection:groupId=>{const path=groupId===(null!=groupIdFromUrl?groupIdFromUrl:"")?location.pathname:isManager()||isGroupAdmin()?`/company/${companyId}`:`/company/${companyId}/channel/`,url=(0,query_utils.S)(path,{groupId:groupId||void 0});history.push(url),dispatch((0,group_switcher_actions.j)(groupId))}}),react.createElement("div",{className:"cat-flex-row cat-mt-l cat-gap-l"},react.createElement("div",null,react.createElement(SettingSidebarMenuConnect,null)),react.createElement("div",{className:"cat-flex-1"},shouldFetchCompanyData?react.createElement("div",{className:"cat-flex cat-justify-center"},react.createElement(stencil_generated.K0,{size:"xl","data-testid":"cat-spinner"})):react.createElement(CompanySettings,{match,location,history}))))}}}]);

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.