1var M=Object.defineProperty;var F=(p,h,e)=>h in p?M(p,h,{enumerable:!0,configurable:!0,writable:!0,value:e}):p[h]=e;var l=(p,h,e)=>F(p,typeof h!="symbol"?h+"":h,e);import{a as b,j as s}from"./vendor.react.xX5OaRB0.js";import{P as g}from"./vendor.commons.Krup8qXf.js";import{c as U}from"./vendor.redux.Bi9BTFkI.js";import{B as A}from"./vendor.ui-extras.D5KyEMxS.js";import{d as q,L as Y}from"./vendor.ui-core.Dao_ArY3.js";import{u as W,L as z,b as H,i as E,a as J,G as K,w as Q,T as X}from"./GroupRulesProvider.C7wP9Jo6.js";import{g as S,l as _,w as D,G as T,f as Z}from"./app.ClmmUuYS.js";import{u as ee,w as te}from"./vendor.i18n.DLKhcqJc.js";import{C as se}from"./ConversionStats.IpBhPran.js";import{C as ie}from"./index.CmUh10cq.js";import{E as re,a as ae}from"./index.UlyJF8Kw.js";import{c as ne}from"./checkCurrencyFromRequest.D2Yto29c.js";import{a as oe,d as ce,G as de}from"./adGroupCreate.D4_CD-cz.js";import{S as ue}from"./infoImg.DSYRDO9b.js";import{d as le}from"./vendor.utils.DcRJ3SBO.js";import"./vendor.polyfills.DYhgmCsW.js";import"./TooltipWrapper.DsIxXYAJ.js";import"./sendEventGA._PCitIpa.js";import"./vendor.monitoring.BDs9VX6O.js";import"./trash_red_icon.CJoOY0QI.js";import"./BidChangeConfirmModal.CU_WJNl9.js";import"./[email protected]_T31-J.js";import"./scrollSmoothTo.BGwbwami.js";import"./BtcInput.BhUIRg-A.js";import"./SearchInputWithButtonUpdated.DJM2D-La.js";import"./getAdgroupTypeDisplayText.DZ1P0-Aq.js";import"./index.CGde6NmW.js";import"./Checkbox.ksftgCeH.js";import"./index.DGQTkOEx.js";import"./InputWithSearchBtn.C87fpdD9.js";import"./revenue-icon.BOjOHseY.js";import"./AccountManager.W1YcSplL.js";import"./vendor.router.U73PX5Em.js";import"./DateRangePickerCalendar.C6UMlaFJ.js";import"./ExportStats.Bl7xuhiK.js";import"./vendor.export.BsSCz_t6.js";import"./conversions.C2C3e5Wt.js";import"./CopyEntities.D19HK0aZ.js";import"./useCountries.B-Eo1sj3.js";import"./[email protected]";import"./UpdateClickUrl.CyjKO9hX.js";import"./ArchiveEntities.DSiXIeto.js";import"./index.Dj_hA8_s.js";import"./checkbox_check_icon.CiTh8aCD.js";import"./ConfirmActionModal.jTreZSrI.js";import"./creative.BwvaWufg.js";import"./SpentPerStatistics.BpyG_4fK.js";import"./Layout.B9z3w6v1.js";import"./TopNavbar.BZEgptjt.js";import"./vendor.charts.D8f5d-UU.js";import"./ConvertedBigValue.CGPvhrjg.js";import"./StatusModal.BdtiBPHR.js";import"./prepareTableHeaders.BscFGWqS.js";import"./TableStat.DIAGhgE1.js";/* empty css */import"./RippleButton.DTMpxF7o.js";/* empty css */const pe=768,me=E,he=p=>{const h=(p||"").toLowerCase();return h.includes("balance")?H:h.includes("investment")?E:h.includes("interest")?J:me},ge=p=>(p||"category").toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/(^-|-$)/g,""),I=({groupId:p,onSaved:h})=>{const{t:e}=ee(["Account/AudienceList","Account/EntityCreateLayout","Account/Common"]),{groupedAudiences:t,isLoading:r,error:n}=W(),[o,a]=b.useState(""),[u,c]=b.useState(!1),[m,v]=b.useState(null),[C,w]=b.useState(!1),y=b.useRef({}),x=b.useRef(null);b.useEffect(()=>{t.length&&a(i=>i&&t.some(d=>d.category===i)?i:t[0].category)},[t]),b.useEffect(()=>{const i=window.matchMedia("(max-width: ".concat(pe-1,"px)")),d=()=>c(i.matches);return d(),i.addEventListener("change",d),()=>i.removeEventListener("change",d)},[]);const k=i=>{if(a(i),u)return;const d=y.current[i],f=x.current;if(!d||!f)return;const j=d.getBoundingClientRect().top-f.getBoundingClientRect().top+f.scrollTop-24;f.scrollTo({top:Math.max(0,j),behavior:"smooth"})},$=b.useMemo(()=>!u||!o?t:t.filter(i=>i.category===o),[o,t,u]),G=b.useCallback(async()=>{if(m){w(!0);try{const i=await S("/api/groups/set-group-targeting",{method:"POST",body:JSON.stringify({id:p,whitelistedAudiences:[m.id]})});if(!i.success){A.error(i.error||e("common.error",{ns:"Account/Common"}));return}A.success(e("web3Audiences.savedSuccess",{ns:"Account/EntityCreateLayout",defaultValue:"Web3 audience set successfully."})),h()}catch(i){A.error(i.message||e("common.error",{ns:"Account/Common"}))}finally{w(!1)}}},[p,h,m,e]),O=i=>{var d,f,R,j,B,P;return!((d=i.bidInfo)!=null&&d.full_bid)||((f=i.bidInfo)==null?void 0:f.bid)>=((R=i.bidInfo)==null?void 0:R.full_bid)?s.jsx("div",{className:"web3-promo-audiences__bid-values",children:s.jsx("p",{className:"web3-promo-audiences__bid-value",children:"$ ".concat(_((j=i.bidInfo)==null?void 0:j.bid," "))})}):s.jsxs("div",{className:"web3-promo-audiences__bid-values",children:[s.jsx("p",{className:"web3-promo-audiences__bid-value web3-promo-audiences__bid-value--struck",children:"$ ".concat(_((B=i.bidInfo)==null?void 0:B.full_bid," "))}),s.jsx("p",{className:"web3-promo-audiences__bid-value web3-promo-audiences__bid-value--discount",children:"$ ".concat(_((P=i.bidInfo)==null?void 0:P.bid," "))})]})},V=i=>{const d=(m==null?void 0:m.id)===i.id;return s.jsxs("div",{className:"web3-promo-audiences__card".concat(d?" web3-promo-audiences__card--selected":""),onClick:()=>v(i),role:"radio","aria-checked":d,tabIndex:0,onKeyDown:f=>{(f.key==="Enter"||f.key===" ")&&(f.preventDefault(),v(i))},children:[s.jsx("div",{className:"web3-promo-audiences__card-radio",children:s.jsxs("div",{className:"checkbox-wrapper checkbox-cyan",children:[s.jsx(q,{className:"input-checkbox-cyan round input-checkbox-big",id:"web3-audience-setup-".concat(i.id),type:"radio",name:"web3-audience-setup",checked:d,readOnly:!0}),s.jsx(Y,{htmlFor:"web3-audience-setup-".concat(i.id),className:"checkbox-text"})]})}),s.jsxs("div",{className:"web3-promo-audiences__card-main",children:[s.jsxs("div",{className:"web3-promo-audiences__card-head",children:[s.jsx("div",{className:"web3-promo-audiences__card-image",children:s.jsx("img",{src:"https://media.bitmedia.io".concat(i.promoImageUrl),alt:i.title||i.name,width:48,height:48})}),s.jsxs("div",{className:"web3-promo-audiences__card-info",children:[s.jsx("h6",{className:"web3-promo-audiences__card-title",children:i.name}),s.jsxs("p",{className:"web3-promo-audiences__card-audience",children:[e("audience"),": ",_(i.users)]})]})]}),s.jsxs("div",{className:"web3-promo-audiences__card-stats",children:[s.jsxs("div",{className:"web3-promo-audiences__card-stat",children:[s.jsx("p",{className:"web3-promo-audiences__card-stat-label",children:e("reach")}),s.jsxs("p",{className:"web3-promo-audiences__card-stat-value",children:[_(i.impressionsPerDay)," / ",s.jsx("span",{children:e("day")})]}),s.jsxs("p",{className:"web3-promo-audiences__card-stat-value",children:[_(i.impressionsPerMonth)," / ",s.jsx("span",{children:e("month")})]})]}),s.jsxs("div",{className:"web3-promo-audiences__card-stat",children:[s.jsx("p",{className:"web3-promo-audiences__card-stat-label",children:e("bidCPM",{defaultValue:"Bid CPM"})}),O(i)]})]})]})]},i.id)};return r?s.jsx(z,{size:"xl"}):s.jsxs("div",{className:"web3-promo-audiences",children:[s.jsxs("div",{className:"web3-promo-audiences__section",children:[s.jsx("h3",{className:"web3-promo-audiences__title",children:e("web3Audiences.title",{ns:"Account/EntityCreateLayout",defaultValue:"Audiences"})}),n&&s.jsx("p",{className:"web3-promo-audiences__error",role:"alert",children:n}),!n&&t.length===0&&s.jsx("p",{className:"web3-promo-audiences__empty",children:e("web3Audiences.empty",{ns:"Account/EntityCreateLayout",defaultValue:"No promo audie
1nces are available right now."})}),t.length>0&&s.jsxs("div",{className:"web3-promo-audiences__layout",children:[s.jsx("nav",{className:"web3-promo-audiences__nav","aria-label":e("web3Audiences.title",{ns:"Account/EntityCreateLayout"}),children:t.map(i=>{const d=o===i.category;return s.jsxs("button",{type:"button",className:"web3-promo-audiences__nav-item".concat(d?" web3-promo-audiences__nav-item--active":""),onClick:()=>k(i.category),"aria-current":d?"true":void 0,children:[s.jsx("img",{src:he(i.category),alt:"",className:"web3-promo-audiences__nav-icon",width:20,height:20}),s.jsx("span",{children:i.category})]},i.category)})}),s.jsx("div",{className:"web3-promo-audiences__list-wrap",children:s.jsx("div",{className:"web3-promo-audiences__list",ref:x,children:$.map(i=>s.jsxs("section",{className:"web3-promo-audiences__category",id:"web3-category-setup-".concat(ge(i.category)),ref:d=>{y.current[i.category]=d},children:[s.jsx("h4",{className:"web3-promo-audiences__category-title",children:i.category}),s.jsx("div",{className:"web3-promo-audiences__cards",children:i.items.map(d=>V(d))})]},i.category))})})]})]}),t.length>0&&s.jsx("div",{className:"targeting-continue-changes-wrapper",children:s.jsx("div",{className:"continue-btn-wrapper",children:s.jsx("button",{type:"button",className:"btn btn-primary button-cyan continue-btn",disabled:!m||C,onClick:G,children:C?e("common.saving",{ns:"Account/Common",defaultValue:"Saving..."}):e("targeting.saveChanges",{ns:"Account/Common",defaultValue:"Save Changes"})})})})]})};I.propTypes={groupId:g.string.isRequired,onSaved:g.func.isRequired};const fe=p=>({currencies:p.entity.currencies,isDSPAdvertiser:!!p.auth.user.isDSPAdvertiser,isBackupAdvertiser:!!p.auth.user.isBackupAdvertiser,language:p.language.current});class N extends b.Component{constructor(e){super(e);l(this,"createSignalAndController",e=>{this.controllers[e]&&this.controllers[e].abort(),this.controllers[e]=new AbortController,this.signals[e]=this.controllers[e].signal});l(this,"fetchGroupInfo",async e=>{const t="fetchAdgroupData";this.createSignalAndController(t);const r=await S("/api/groups/group-info?id=".concat(e),{signal:this.signals[t]});if(!r.success)throw new Error(r.error);return r.data});l(this,"fetchPromoAudiences",async()=>{const e="fetchPromoAudiences";this.createSignalAndController(e);const t=await S("/api/audiences/list?isPromoted=1&limit=100",{signal:this.signals[e]});if(!t.success)throw new Error(t.error);return t.data||[]});l(this,"checkHasPromoAudiences",(e,t)=>{var n,o;const r=((o=(n=e.targetingOptions)==null?void 0:n.audiencesWhitelistList)==null?void 0:o.map(a=>a.toString()))||[];return t.some(a=>r.includes(a.id.toString()))});l(this,"fetchCampaignInfo",async e=>{const t="fetchCampaignData";this.createSignalAndController(t);const r=await S("/api/campaigns/campaign-info?id=".concat(e),{signal:this.signals[t]});if(!r.success)throw new Error(r.error);return r.data});l(this,"fetchCreativesCountValue",async e=>{const t="fetchCreativesCount";this.createSignalAndController(t);const{currencies:r}=this.props,n=r.find(a=>a.selected),o=await S("/api/others/entity-count?id=".concat(e,"&countBy=group&count=creatives¤cy=").concat(n.name),{signal:this.signals[t]});if(!o.success)throw new Error(o.error);return o.data});l(this,"fetchAdgroupData",async e=>{var a,u;const{match:t,isBackupAdvertiser:r,isDSPAdvertiser:n}=this.props,{id:o}=t.params;if(this.fetchingAdgroupId!==o){this.fetchingAdgroupId=o,this.setState({isLoading:!0});try{const c=await this.fetchGroupInfo(o);let m=!1;if(!n){const x=await this.fetchPromoAudiences();m=this.checkHasPromoAudiences(c,x.items)}const v=!r&&!n&&c.campaignNetworkType==="backup",[C,w]=await Promise.allSettled([this.fetchCampaignInfo(c.campaignId),this.fetchCreativesCountValue(o)]);C.status==="rejected"&&((a=C.reason)==null?void 0:a.name)!=="AbortError"&&console.error(C.reason),w.status==="rejected"&&((u=w.reason)==null?void 0:u.name)!=="AbortError"&&console.error(w.reason);const y=C.status==="fulfilled"?C.value:{};if(y.currency&&ne(y.currency),this.setState({adgroup:{...this.buildAdGroupState(c,v,m),campaignName:y.campaignName,campaignId:c.campaignId},campaign:{id:c.campaignId,isCPACampaign:v,campaignType:y.campaignType,balance:T(y.balance||0),name:y.campaignName,isInternal:y.isInternal},creativesCount:w.status==="fulfilled"?w.value:0,isLoading:!1,hasPromoAudiences:m}),r||n||c.type==="internal"||c.subType||v||!c.type||c.bidStrategy==="exact")return this.setState({isRecommendedBidDisabled:!0});typeof e=="function"&&e()}catch(c){if(c.name!=="AbortError"){console.error(c);const{t:m,history:v}=this.props;A.error(m("common.error",{defaultValue:"Error fetching ad group data"})||c.message),v.push(this.BASE_URL)}}finally{this.fetchingAdgroupId=null,this.setState({isLoading:!1})}}});l(this,"fetchAdgroupRecommendedBid",async e=>{var o;if(this.state.isRecommendedBidDisabled)return;const{match:t}=this.props,{id:r}=t.params,n="fetchAdgroupBid";this.createSignalAndController(n);try{const a=await S("/api/groups/recommended-bid?id=".concat(r),{signal:this.signals[n]});if(!a.success)return A.error("Error fetching ad group recommended bid: ".concat(a.error));this.setState({adgroup:{...this.state.adgroup,recommendedBid:a.data}}),(o=a==null?void 0:a.data)!=null&&o.current&&typeof e=="function"&&e()}catch(a){a.name!=="AbortError"&&console.error(a)}});l(this,"chooseBidType",e=>{switch(e){case"smart":return"Smart Bid";case"static":return"Fixed Bid";case"exact":return"Exact Bid";default:return"Fixed Bid"}});l(this,"buildAdGroupState",(e,t,r)=>{const n=e.limit||{};return{id:e._id,name:e.groupName,bidStrategy:e.bidStrategy==="static"?"fixed":e.bidStrategy,created:Z(e.createdAt,"D MMM YYYY"),age:le().diff(e.createdAt,"days"),isActive:e.active,status:ce({...e,isEntityPage:!0},!1),bid:e.bid?T(e.bid):0,limitAmount:n.exists&&n.amount?T(n.amount):0,bidType:this.chooseBidType(e.bidStrategy),limitStatus:!!n.exists,limit:n,type:e.type,subType:e.subType,adPlacementType:e.adPlacementType||oe.DISPLAY,packageId:e.selectedPackageId,minLimitPackages:e.minLimitPackagesCPM,isInternal:e.isInternal,isArchived:e.isArchived,isCPACampaign:t,hasPromoAudiences:r,recommendedBid:{current:0,min:0,max:0}}});l(this,"fetchCreativesCount",async()=>{const{match:e}=this.props,{id:t}=e.params;this.setState({isLoading:!0});try{const r=await this.fetchCreativesCountValue(t);this.setState({creativesCount:r})}catch(r){r.name!=="AbortError"&&console.error(r)}finally{this.setState({isLoading:!1})}});l(this,"syncFieldRuleFromResponse",(e,t,r)=>{if(!t||typeof t!="object")return;const{groupRules:n}=this.props;if(!n||typeof n.updateFieldRule!="function")return;const o=r.reduce((a,u)=>(t[u]!==void 0&&t[u]!==null&&(a[u]=t[u]),a),{});Object.keys(o).length>0&&n.updateFieldRule(e,o)});l(this,"fetchChangeAdGroupLimit",async(e,t)=>{const r="fetchChangeAdGroupLimit";this.createSignalAndController(r);const{adgroup:n,isAdsRefresh:o}=this.state,{match:a}=this.props,{id:u}=a.params,c={id:u,dailyLimitStatus:t,groupDailyLimit:t?+e:0};try{const m=await S("/api/groups/group-limit",{signal:this.signals[r],method:"POST",body:JSON.stringify(c)});return m.success?(A.success("Limit successfully changed"),this.syncFieldRuleFromResponse("group_daily_limit",m.data,["min","max","required"]),this.setState({adgroup:{...n,limitAmount:+e||0,limitStatus:t,limit:{...n.limit,amount:+e||0,exists:t,reached:n.limit.reached,stopTime:t?n.limit.stopTime:new Date().toISOString()}},isAdsRefresh:!o}),!0):(A.error(m.error),!1)}catch(m){return m.name!=="AbortError"&&console.error(m),!1}});l(this,"fetchChangeAdGroupBid",async e=>{const t="fetchChangeAdGroupBid";this.createSignalAndController(t);const{adgroup:r}=this.state,{match:n}=this.props,{id:o}=n.params;try{const a=await S("/api/groups/group-bid",{signal:this.signals[t],method:"POST",body:JSON.stringify({id:o,newBid:+e})});return a.success?(A.success("Bid successfully changed"),this.syncFieldRuleFromResponse("bid",a.data,["min","max","default"]),this.setState({adgroup:{...r,bid:+e}}),!0):(A.error(a.error),!1)}catch(a){return a.name!=="AbortError"&&console.error(a),!1}});l(this,"changeAdgroupStateValue",(e,t)=>{const{adgroup:r}=this.state;r&&r[e]!==void 0&&this.setState({adgroup:{...r,[e]:t}})});l(this,"handleCreativeUpdate",()=>{this.setState({isRefresh:!this.state.isRefresh})});l(this,"handleAdgroupStatusChange",()=>{const{isRecommendedBidDisabled:e}=this.state;if(e)return this.fetchAdgroupData();this.fetchAdgroupData(this.fetchAdgroupRecommendedBid)});l(this,"prepareContent",()=>{const{adgroup:e,campaign:t,isAdsRefresh:r,hasPromoAudiences:n}=this.state,{match:o,isDSPAdvertiser:a}=this.props,{id:u}=o.params,c=o.params.currentTab||"statistics";return c==="creatives"?s.jsx(ie,{group:{id:u,...e},onDataUpdate:this.handleCreativeUpdate,isRefresh:r}):c==="targeting"?e.subType===de.WEB_3&&!n?s.jsx(I,{groupId:u,onSaved:this.fetchAdgroupData}):s.jsx(X,{adgroupId:u,isCPACampaign:t.isCPACampaign,limit:e.limit,processType:"editTargeting",hasTargetingPromo:this.state.hasPromoAudiences,onUpdateTargeting:this.fetchAdgroupRecommendedBid,recommendedBid:e.recommendedBid,isSmartBidStrategy:e.bidStrategy==="smart",bidStrategy:e.bidStrategy}
1):c==="conversions"&&!a?s.jsx(se,{campaignId:t.id,adgroupId:u}):s.jsx(re,{entityId:u,statisticsBy:ue.GROUP,isInternal:e.isInternal,isSpentPerStatisticsColumn:!1,isSmartBidStrategy:e.bidStrategy==="smart"})});this.state={campaign:{},adgroup:{},currentTab:"statistics",isLoading:!1,creativesCount:0,isRefresh:!1,isAdsRefresh:!1,isRecommendedBidDisabled:!1},this.TABS=["statistics","creatives","targeting","conversions"],this.BASE_URL="/app/adv/adgroups",this.controllers={},this.signals={},this.fetchingAdgroupId=null}componentDidMount(){this.fetchAdgroupData(this.fetchAdgroupRecommendedBid)}componentDidUpdate(e,t,r){const{isRefresh:n}=this.state;n!==t.isRefresh&&this.fetchCreativesCount()}componentWillUnmount(){Object.keys(this.controllers).forEach(e=>{this.controllers[e]&&this.controllers[e].abort()})}render(){const{creativesCount:e,campaign:t,adgroup:r,isRecommendedBidDisabled:n}=this.state,{isDSPAdvertiser:o,t:a}=this.props,u=[{label:a("statistics.title"),id:this.TABS[0],isAvailable:!0},{label:a("creatives.creatives"),id:this.TABS[1],count:e,isAvailable:!0},{label:a("targeting.title"),id:this.TABS[2],isAvailable:!0},{label:a("entitiesList.headers.conversionLogs"),id:this.TABS[3],isAvailable:!o}];return s.jsx(ae,{data:{campaign:t,group:r},navData:u,entityType:"group",Content:this.prepareContent,tabs:this.TABS,onChangeName:c=>this.changeAdgroupStateValue("name",c),onChangeStatus:this.handleAdgroupStatusChange,onUpdateData:this.fetchAdgroupData,additionalHandlers:{changeLimit:this.fetchChangeAdGroupLimit,changeBid:this.fetchChangeAdGroupBid},isRecommendedBidDisabled:n})}}l(N,"propTypes",{match:g.object.isRequired,history:g.object.isRequired,location:g.object.isRequired,currencies:g.array.isRequired,isDSPAdvertiser:g.bool.isRequired,isBackupAdvertiser:g.bool.isRequired,language:g.string.isRequired,t:g.func.isRequired,groupRules:g.shape({updateFieldRule:g.func})}),l(N,"defaultProps",{groupRules:null});const be=D(U(fe,null)(te(["Account/Common"])(Q(N)))),L=({match:p})=>s.jsx(K,{groupId:p.params.id,children:s.jsx(be,{})});L.propTypes={match:g.shape({params:g.shape({id:g.string})}).isRequired};const wt=D(L);export{wt as default};
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.