@bloomscorp/blooms-ai-embed 0.1.0 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,3 @@
1
+ import{a as ue}from"./chunk-7NQRVCWL.js";import{b as ae,c as le,e as de,h as se,j as ce,k as me,s as pe}from"./chunk-VQEBAAHK.js";import{c as re}from"./chunk-SPLW6L45.js";import{$a as v,Ca as w,Cb as L,D as V,Fa as X,Ga as T,Ha as P,Ia as g,J as m,K as p,La as f,Na as M,Oa as D,Pa as E,Qa as n,Ra as o,S as H,Sa as B,Ta as C,Ua as u,V as Q,Va as c,W as I,Wa as l,Xa as _,Ya as y,Za as F,_a as Z,a as N,ab as x,bb as b,eb as h,fb as S,gb as q,hb as $,nb as z,oa as J,pa as d,sb as ee,ub as te,vb as ie,wb as ne,xa as G,xb as oe,z as Y}from"./chunk-WQW7QCHM.js";var j=class t{constructor(){this.http=V(re)}listDataSources(i){return this.http.get(`/api/influencers/projects/${i}/data-sources`)}createDataSource(i,e){return this.http.post(`/api/influencers/projects/${i}/data-sources`,e)}getDataSource(i){return this.http.get(`/api/influencers/data-sources/${i}`)}updateDataSource(i,e){return this.http.patch(`/api/influencers/data-sources/${i}`,e)}deleteDataSource(i){return this.http.delete(`/api/influencers/data-sources/${i}`)}refreshUsage(i){return this.http.post(`/api/influencers/data-sources/${i}/refresh-usage`,{})}resetEdUsage(i){return this.http.patch(`/api/influencers/data-sources/${i}/reset-usage`,{})}static{this.\u0275fac=function(e){return new(e||t)}}static{this.\u0275prov=Y({token:t,factory:t.\u0275fac,providedIn:"root"})}};function k(t,...i){for(let e of i){let r=t[e];if(r!=null&&!isNaN(Number(r)))return Number(r)}}function K(t,...i){for(let e of i)if(t[e]!==void 0)return!!t[e]}function A(t,...i){for(let e of i)if(typeof t[e]=="string")return t[e]}function xe(t){return{followerCount:k(t,"follower_count","followersCount"),followingCount:k(t,"following_count","followingCount"),postCount:k(t,"media_count","postsCount"),engagementRate:k(t,"engagement_rate","engagementRate"),avgLikes:k(t,"avg_likes","avgLikes"),avgComments:k(t,"avg_comments","avgComments"),verified:K(t,"is_verified","verified"),bio:A(t,"biography","bio"),profilePicUrl:A(t,"profile_pic_url","profilePicUrl")}}function be(t){return{followerCount:k(t,"follower_count","followersCount","followers"),pageLikes:k(t,"page_likes","pageLikes","likes"),postCount:k(t,"post_count","postCount"),engagementRate:k(t,"engagement_rate","engagementRate"),verified:K(t,"verified","is_verified"),bio:A(t,"description","biography","bio"),profilePicUrl:A(t,"profile_picture","profilePicUrl")}}function Ce(t){return{subscriberCount:k(t,"subscriber_count","subscriberCount"),videoCount:k(t,"video_count","videoCount"),avgViews:k(t,"avg_views","avgViews"),totalViews:k(t,"view_count","totalViews"),avgLikes:k(t,"avg_likes","avgLikes"),avgComments:k(t,"avg_comments","avgComments"),verified:K(t,"is_verified","verified"),bio:A(t,"description","biography"),profilePicUrl:A(t,"thumbnail","profilePicUrl"),followerCount:k(t,"subscriber_count","subscriberCount")}}function W(t){let i=t.rawData,e={};return t.platform==="instagram"?e=xe(i):t.platform==="facebook"?e=be(i):t.platform==="youtube"&&(e=Ce(i)),N({snapshotId:t._id,platform:t.platform,sourceType:t.sourceType,label:t.label||t.sourceType,fetchedAt:t.fetchedAt},e)}var he=(t,i)=>i.platform,we=(t,i)=>i.key,U=(t,i)=>i._id,Se=(t,i)=>i.platform+i.source;function ye(t,i){if(t&1){let e=C();n(0,"div",0)(1,"p",30),l(2),o(),n(3,"button",31),u("click",function(){m(e);let a=c();return p(a.go("dashboard"))}),l(4,"\u2190 Back to HQ"),o()()}if(t&2){let e=c();d(2),_(e.loadError())}}function ke(t,i){if(t&1&&(n(0,"div",62),l(1),o()),t&2){let e=c().$implicit,r=c(2);d(),_(r.formatCompact(e.followers))}}function Ie(t,i){if(t&1){let e=C();n(0,"div",56),u("click",function(){let a=m(e).$implicit,s=c(2);return s.setActivePlatform(a.platform),p(s.setTab("overview"))}),n(1,"div",57)(2,"span",58),l(3),o(),n(4,"div")(5,"div",59),l(6),h(7,"titlecase"),o(),n(8,"div",60),l(9),o()()(),n(10,"div",61),w(11,ke,2,1,"div",62),B(12,"span",63),o()()}if(t&2){let e=i.$implicit,r=c(2);g("id-phealth--active",r.activePlatform()===e.platform),d(3),_(r.getPlatformEmoji(e.platform)),d(3),_(S(7,8,e.platform)),d(3),y("@",e.handle||"\u2014",""),d(2),f(e.followers!==null?11:-1),d(),P("background",e.latestSnap?"#22c55e":"#cbd5e1")}}function De(t,i){t&1&&(n(0,"div",42),l(1,"No platforms added yet."),o())}function Ee(t,i){if(t&1){let e=C();n(0,"div",40),l(1,"Notes"),o(),n(2,"div",64),u("click",function(){m(e);let a=c(2);return p(a.setTab("notes"))}),l(3),h(4,"slice"),o()}if(t&2){let e=c(2);d(3),F(" ",$(4,2,e.profile().notes,0,120),"",e.profile().notes.length>120?"\u2026":""," ")}}function Fe(t,i){if(t&1){let e=C();n(0,"button",65),u("click",function(){let a=m(e).$implicit,s=c(2);return p(s.setTab(a.key))}),l(1),o()}if(t&2){let e=i.$implicit,r=c(2);g("id-tab--on",r.activeTab()===e.key),d(),y(" ",e.label," ")}}function Te(t,i){if(t&1){let e=C();n(0,"button",66),u("click",function(){let a=m(e).$implicit,s=c(2);return p(s.setActivePlatform(a))}),l(1),h(2,"titlecase"),o()}if(t&2){let e=i.$implicit,r=c(2);g("id-ptab--on",r.activePlatform()===e),d(),F(" ",r.getPlatformEmoji(e)," ",S(2,4,e)," ")}}function Be(t,i){t&1&&(n(0,"div",67),l(1,"Loading data\u2026"),o())}function Ve(t,i){if(t&1&&(n(0,"div",75)(1,"div",77),l(2),h(3,"number"),o(),n(4,"div",78),l(5,"Followers"),o()()),t&2){let e=c(4);d(2),_(S(3,1,e.latestSnap().followerCount))}}function Pe(t,i){if(t&1&&(n(0,"div",75)(1,"div",77),l(2),h(3,"number"),o(),n(4,"div",78),l(5,"Subscribers"),o()()),t&2){let e=c(4);d(2),_(S(3,1,e.latestSnap().subscriberCount))}}function Me(t,i){if(t&1&&(n(0,"div",75)(1,"div",77),l(2),h(3,"number"),o(),n(4,"div",78),l(5,"Following"),o()()),t&2){let e=c(4);d(2),_(S(3,1,e.latestSnap().followingCount))}}function Le(t,i){if(t&1&&(n(0,"div",75)(1,"div",77),l(2),o(),n(3,"div",78),l(4,"Posts"),o()()),t&2){let e=c(4);d(2),_(e.latestSnap().postCount)}}function Ae(t,i){if(t&1&&(n(0,"div",75)(1,"div",77),l(2),o(),n(3,"div",78),l(4,"Videos"),o()()),t&2){let e=c(4);d(2),_(e.latestSnap().videoCount)}}function ze(t,i){if(t&1&&(n(0,"div",76)(1,"div",77),l(2),o(),n(3,"div",78),l(4,"Engagement"),o()()),t&2){let e=c(4);d(2),y("",e.latestSnap().engagementRate,"%")}}function We(t,i){if(t&1&&(n(0,"div",75)(1,"div",77),l(2),h(3,"number"),o(),n(4,"div",78),l(5,"Avg Likes"),o()()),t&2){let e=c(4);d(2),_(S(3,1,e.latestSnap().avgLikes))}}function Re(t,i){if(t&1&&(n(0,"div",75)(1,"div",77),l(2),h(3,"number"),o(),n(4,"div",78),l(5,"Avg Views"),o()()),t&2){let e=c(4);d(2),_(S(3,1,e.latestSnap().avgViews))}}function Ne(t,i){if(t&1&&(n(0,"div",75)(1,"div",77),l(2),h(3,"number"),o(),n(4,"div",78),l(5,"Total Views"),o()()),t&2){let e=c(4);d(2),_(S(3,1,e.latestSnap().totalViews))}}function je(t,i){if(t&1&&(n(0,"div",75)(1,"div",77),l(2),h(3,"number"),o(),n(4,"div",78),l(5,"Page Likes"),o()()),t&2){let e=c(4);d(2),_(S(3,1,e.latestSnap().pageLikes))}}function Ue(t,i){if(t&1){let e=C();n(0,"div",82),u("click",function(){let a=m(e).$implicit,s=c(5);return p(s.viewRaw(a))}),n(1,"div",83),l(2),o(),n(3,"div",84),l(4),o(),n(5,"div",85),l(6),o()()}if(t&2){let e=i.$implicit,r=c(5);d(2),_(r.sourceLabel(e.sourceType)),d(2),_(r.relativeTime(e.fetchedAt)),d(2),_(r.getSnapSummary(e))}}function Oe(t,i){if(t&1&&(n(0,"div",79),l(1),o(),n(2,"div",80),D(3,Ue,7,3,"div",81,U),o()),t&2){let e=c(4);d(),y("Recent snapshots (",e.platformSnapshots().length," total)"),d(2),E(e.platformSnapshots().slice(0,5))}}function He(t,i){if(t&1){let e=C();n(0,"div",69)(1,"span",70),l(2),o(),n(3,"span",71),l(4),o(),n(5,"span",72),l(6),o(),n(7,"button",73),u("click",function(){m(e);let a=c(3);return p(a.viewRawForLatest())}),l(8,"View Raw"),o()(),n(9,"div",74),w(10,Ve,6,3,"div",75)(11,Pe,6,3,"div",75)(12,Me,6,3,"div",75)(13,Le,5,1,"div",75)(14,Ae,5,1,"div",75)(15,ze,5,1,"div",76)(16,We,6,3,"div",75)(17,Re,6,3,"div",75)(18,Ne,6,3,"div",75)(19,je,6,3,"div",75),o(),w(20,Oe,5,1)}if(t&2){let e=c(3);d(2),_(e.sourceLabel(e.latestSnap().sourceType)),d(2),_(e.latestSnap().label),d(2),_(e.relativeTime(e.latestSnap().fetchedAt)),d(4),f(e.latestSnap().followerCount!==void 0?10:-1),d(),f(e.latestSnap().subscriberCount!==void 0?11:-1),d(),f(e.latestSnap().followingCount!==void 0?12:-1),d(),f(e.latestSnap().postCount!==void 0?13:-1),d(),f(e.latestSnap().videoCount!==void 0?14:-1),d(),f(e.latestSnap().engagementRate!==void 0?15:-1),d(),f(e.latestSnap().avgLikes!==void 0?16:-1),d(),f(e.latestSnap().avgViews!==void 0?17:-1),d(),f(e.latestSnap().totalViews!==void 0?18:-1),d(),f(e.latestSnap().pageLikes!==void 0?19:-1),d(),f(e.platformSnapshots().length>1?20:-1)}}function qe(t,i){if(t&1){let e=C();n(0,"div",68)(1,"div",86),l(2,"\u{1F4E1}"),o(),n(3,"div",87),l(4),h(5,"titlecase"),o(),n(6,"div",88),l(7,"Sync or add manual data to see stats here."),o(),n(8,"button",89),u("click",function(){m(e);let a=c(3);return p(a.openDrawer("fetch"))}),l(9,"\u{1F4E1} Sync Now"),o()()}if(t&2){let e=c(3);d(4),y("No data for ",S(5,1,e.activePlatform()),"")}}function Ke(t,i){if(t&1&&(n(0,"div",55),w(1,Be,2,0,"div",67)(2,He,21,14)(3,qe,10,3,"div",68),o()),t&2){let e=c(2);d(),f(e.snapshotsLoading()?1:e.latestSnap()?2:3)}}function Ye(t,i){if(t&1){let e=C();n(0,"button",95),u("click",function(){let a=m(e).$implicit,s=c(3);return p(s.setSnapPlatform(a))}),l(1),h(2,"titlecase"),o()}if(t&2){let e=i.$implicit,r=c(3);g("id-dd__opt--on",r.snapPlatformFilter===e),d(),F(" ",r.getPlatformEmoji(e)," ",S(2,4,e)," ")}}function Qe(t,i){t&1&&(n(0,"div",67),l(1,"Loading snapshots\u2026"),o())}function Je(t,i){t&1&&(n(0,"div",68)(1,"div",87),l(2,"No snapshots found"),o(),n(3,"div",88),l(4,"Sync data or add manual entries to see history."),o()())}function Ge(t,i){if(t&1){let e=C();n(0,"div",102)(1,"div",103)(2,"span",104),l(3),o()(),n(4,"div",103)(5,"span",105),l(6),o()(),n(7,"div",106),l(8),o(),n(9,"div",107),l(10),o(),n(11,"div",108)(12,"button",109),u("click",function(){let a=m(e).$implicit,s=c(4);return p(s.viewRaw(a))}),l(13,"Raw"),o(),n(14,"button",110),u("click",function(){let a=m(e).$implicit,s=c(4);return p(s.deleteSnapshot(a._id))}),l(15,"\u{1F5D1}"),o()()()}if(t&2){let e=i.$implicit,r=c(4);d(2),X("data-src",e.sourceType),d(),_(r.sourceLabel(e.sourceType)),d(3),F("",r.getPlatformEmoji(e.platform)," ",e.platform,""),d(2),_(r.getSnapSummary(e)),d(2),_(r.relativeTime(e.fetchedAt))}}function Xe(t,i){if(t&1&&(n(0,"div",98)(1,"div",99)(2,"div",100),l(3,"Source"),o(),n(4,"div",100),l(5,"Platform"),o(),n(6,"div",100),l(7,"Summary"),o(),n(8,"div",100),l(9,"Fetched"),o(),B(10,"div",101),o(),D(11,Ge,16,6,"div",102,U),o()),t&2){let e=c(3);d(11),E(e.snapshots())}}function Ze(t,i){if(t&1){let e=C();n(0,"div",55)(1,"div",90)(2,"div",91)(3,"button",92),u("click",function(a){m(e);let s=c(2);return p(s.toggleSnapDd("platform",a))}),l(4),n(5,"span",93),l(6,"\u25BE"),o()(),n(7,"div",94),u("click",function(a){return m(e),p(a.stopPropagation())}),n(8,"button",95),u("click",function(){m(e);let a=c(2);return p(a.setSnapPlatform(""))}),l(9,"All Platforms"),o(),D(10,Ye,3,6,"button",96,M),o()(),n(12,"div",91)(13,"button",92),u("click",function(a){m(e);let s=c(2);return p(s.toggleSnapDd("source",a))}),l(14),n(15,"span",93),l(16,"\u25BE"),o()(),n(17,"div",94),u("click",function(a){return m(e),p(a.stopPropagation())}),n(18,"button",95),u("click",function(){m(e);let a=c(2);return p(a.setSnapSource(""))}),l(19,"All Sources"),o(),n(20,"button",95),u("click",function(){m(e);let a=c(2);return p(a.setSnapSource("ensembledata"))}),l(21,"\u{1F4E1} EnsembleData"),o(),n(22,"button",95),u("click",function(){m(e);let a=c(2);return p(a.setSnapSource("apify"))}),l(23,"\u{1F916} Apify"),o(),n(24,"button",95),u("click",function(){m(e);let a=c(2);return p(a.setSnapSource("manual"))}),l(25,"\u270F\uFE0F Manual"),o()()(),n(26,"span",97),l(27),o()(),w(28,Qe,2,0,"div",67)(29,Je,5,0,"div",68)(30,Xe,13,0,"div",98),o()}if(t&2){let e=c(2);d(2),g("id-dd--open",e.snapDdOpen()==="platform"),d(2),y(" ",e.snapPlatformFilter?e.getPlatformEmoji(e.snapPlatformFilter)+" "+e.snapPlatformFilter:"All Platforms"," "),d(4),g("id-dd__opt--on",!e.snapPlatformFilter),d(2),E(e.activePlatforms()),d(2),g("id-dd--open",e.snapDdOpen()==="source"),d(2),y(" ",e.snapSourceFilter?e.snapSourceFilter:"All Sources"," "),d(4),g("id-dd__opt--on",!e.snapSourceFilter),d(2),g("id-dd__opt--on",e.snapSourceFilter==="ensembledata"),d(2),g("id-dd__opt--on",e.snapSourceFilter==="apify"),d(2),g("id-dd__opt--on",e.snapSourceFilter==="manual"),d(3),F("",e.snapshots().length," snapshot",e.snapshots().length!==1?"s":"",""),d(),f(e.snapshotsLoading()?28:e.snapshots().length===0?29:30)}}function $e(t,i){if(t&1&&(n(0,"div",111),l(1),o()),t&2){let e=c(3);d(),y("Last edited ",e.relativeTime(e.profile().notesUpdatedAt),"")}}function et(t,i){if(t&1){let e=C();n(0,"div",55),w(1,$e,2,1,"div",111),n(2,"textarea",112),b("ngModelChange",function(a){m(e);let s=c(2);return x(s.notesContent,a)||(s.notesContent=a),p(a)}),o(),n(3,"div",113)(4,"button",17),u("click",function(){m(e);let a=c(2);return p(a.saveNotes())}),l(5),o()()()}if(t&2){let e=c(2);d(),f(e.profile().notesUpdatedAt?1:-1),d(),v("ngModel",e.notesContent),d(2),T("disabled",e.savingNotes()),d(),y(" ",e.savingNotes()?"Saving\u2026":"Save Notes"," ")}}function tt(t,i){if(t&1){let e=C();n(0,"div",1)(1,"aside",32)(2,"button",33),u("click",function(){m(e);let a=c();return p(a.go("dashboard"))}),l(3,"\u2190 Back to HQ"),o(),n(4,"div",34)(5,"div",35)(6,"div",36),l(7),o()(),n(8,"div",37)(9,"div",38),l(10),o(),n(11,"span",39),l(12),o()()(),n(13,"div",40),l(14,"Platforms"),o(),D(15,Ie,13,10,"div",41,he),w(17,De,2,0,"div",42),n(18,"div",40),l(19,"Actions"),o(),n(20,"div",43)(21,"button",44),u("click",function(){m(e);let a=c();return p(a.openDrawer("fetch"))}),l(22," \u{1F4E1} Sync Data "),o(),n(23,"button",45),u("click",function(){m(e);let a=c();return p(a.openManualDrawer())}),l(24," \u270F\uFE0F Manual Entry "),o(),n(25,"button",45),u("click",function(){m(e);let a=c();return p(a.openEditDrawer())}),l(26," \u{1F6E0} Edit Profile "),o(),n(27,"button",46),u("click",function(){m(e);let a=c();return p(a.confirmDelete())}),l(28," \u{1F5D1}\uFE0F Delete Creator "),o()(),w(29,Ee,5,6),o(),n(30,"main",47)(31,"div",48)(32,"span",49),l(33,"Influencer HQ"),o(),n(34,"span",50),l(35,"\u203A"),o(),n(36,"span",51),l(37),o()(),n(38,"div",52),D(39,Fe,2,3,"button",53,we),n(41,"div",54),D(42,Te,3,6,"button",26,M),o()(),w(44,Ke,4,1,"div",55)(45,Ze,31,19,"div",55)(46,et,6,4,"div",55),o()()}if(t&2){let e=c();d(5),P("background",e.getTierColor(e.profile().tier).bg),d(),P("background",e.getTierColor(e.profile().tier).accent)("color","#fff"),d(),y(" ",e.getInitials(e.profile().name)," "),d(3),_(e.profile().name),d(),P("background",e.getTierColor(e.profile().tier).bg)("color",e.getTierColor(e.profile().tier).text),d(),y(" ",e.profile().tier.toUpperCase()," "),d(3),E(e.platformHealth()),d(2),f(e.activePlatforms().length===0?17:-1),d(12),f(e.profile().notes?29:-1),d(8),_(e.profile().name),d(2),E(e.tabs),d(3),E(e.activePlatforms()),d(2),f(e.activeTab()==="overview"?44:-1),d(),f(e.activeTab()==="snapshots"?45:-1),d(),f(e.activeTab()==="notes"?46:-1)}}function it(t,i){t&1&&(n(0,"div",2)(1,"div",114),B(2,"span")(3,"span")(4,"span"),o(),l(5," Loading creator profile\u2026 "),o())}function nt(t,i){if(t&1){let e=C();n(0,"label",115)(1,"input",116),b("ngModelChange",function(a){let s=m(e).$implicit,R=c();return x(R.fetchForm.platforms[s],a)||(R.fetchForm.platforms[s]=a),p(a)}),o(),l(2),h(3,"titlecase"),o()}if(t&2){let e=i.$implicit,r=c();g("id-check-item--on",r.fetchForm.platforms[e]),d(),v("ngModel",r.fetchForm.platforms[e]),d(),F(" ",r.getPlatformEmoji(e)," ",S(3,5,e)," ")}}function ot(t,i){if(t&1){let e=C();n(0,"div",14),l(1,"No EnsembleData source configured. "),n(2,"button",31),u("click",function(){m(e);let a=c();return p(a.go("data-sources"))}),l(3,"Add one \u2192"),o()()}}function rt(t,i){if(t&1){let e=C();n(0,"label",118)(1,"input",119),b("ngModelChange",function(a){m(e);let s=c(2);return x(s.fetchForm.edSourceId,a)||(s.fetchForm.edSourceId=a),p(a)}),o(),n(2,"div",120),B(3,"span",121),n(4,"div")(5,"div",122),l(6),o(),n(7,"div",123),l(8),o()()(),n(9,"div",124),l(10),h(11,"number"),o()()}if(t&2){let e=i.$implicit,r=c(2);g("id-radio-card--on",r.fetchForm.edSourceId===e._id),d(),T("value",e._id),v("ngModel",r.fetchForm.edSourceId),d(5),_(e.label),d(2),F("",e.edUnitsUsedToday," / ",e.edDailyLimit," units used today"),d(),g("id-quota-mini--warn",r.edPct(e)>=70)("id-quota-mini--crit",r.edPct(e)>=90),d(),y(" ",q(11,12,r.edPct(e),"1.0-0"),"% ")}}function at(t,i){if(t&1&&D(0,rt,12,15,"label",117,U),t&2){let e=c();E(e.edSources())}}function lt(t,i){if(t&1){let e=C();n(0,"div",14),l(1,"No Apify source configured. "),n(2,"button",31),u("click",function(){m(e);let a=c();return p(a.go("data-sources"))}),l(3,"Add one \u2192"),o()()}}function dt(t,i){if(t&1){let e=C();n(0,"label",118)(1,"input",125),b("ngModelChange",function(a){m(e);let s=c(2);return x(s.fetchForm.apifySourceId,a)||(s.fetchForm.apifySourceId=a),p(a)}),o(),n(2,"div",120),B(3,"span",121),n(4,"div")(5,"div",122),l(6),o(),n(7,"div",123),l(8),o()()(),n(9,"div",124),l(10),h(11,"number"),o()()}if(t&2){let e=i.$implicit,r=c(2);g("id-radio-card--on",r.fetchForm.apifySourceId===e._id),d(),T("value",e._id),v("ngModel",r.fetchForm.apifySourceId),d(5),_(e.label),d(2),F("",r.formatUsd(e.apifyCreditUsedCents)," / ",r.formatUsd(e.apifyCreditLimitCents),""),d(),g("id-quota-mini--warn",r.apifyPct(e)>=70)("id-quota-mini--crit",r.apifyPct(e)>=90),d(),y(" ",q(11,12,r.apifyPct(e),"1.0-0"),"% ")}}function st(t,i){if(t&1&&D(0,dt,12,15,"label",117,U),t&2){let e=c();E(e.apifySources())}}function ct(t,i){if(t&1&&(n(0,"span",130),l(1),o()),t&2){let e=c().$implicit;d(),_(e.error)}}function mt(t,i){if(t&1&&(n(0,"div",128)(1,"span"),l(2),o(),n(3,"span",129),l(4),h(5,"titlecase"),o(),w(6,ct,2,1,"span",130),o()),t&2){let e=i.$implicit;g("id-fetch-result--ok",e.status==="success")("id-fetch-result--fail",e.status==="failed"),d(2),_(e.status==="success"?"\u2705":"\u274C"),d(2),F("",S(5,8,e.platform)," \xB7 ",e.source,""),d(2),f(e.error?6:-1)}}function pt(t,i){if(t&1&&(n(0,"div",10)(1,"div",11),l(2,"Results"),o(),n(3,"div",126),D(4,mt,7,10,"div",127,Se),o()()),t&2){let e=c();d(4),E(e.fetchResults())}}function ut(t,i){if(t&1){let e=C();n(0,"button",131),u("click",function(){let a=m(e).$implicit,s=c();return p(s.editForm.tier=a)}),B(1,"span",132),l(2),h(3,"titlecase"),o()}if(t&2){let e=i.$implicit,r=c();P("--to-bg",r.getTierColor(e).bg)("--to-text",r.getTierColor(e).text)("--to-accent",r.getTierColor(e).accent),g("id-tier-opt--on",r.editForm.tier===e),d(2),y(" ",S(3,9,e)," ")}}function ft(t,i){if(t&1){let e=C();n(0,"button",66),u("click",function(){let a=m(e).$implicit,s=c();return p(s.manualForm.platform=a)}),l(1),h(2,"titlecase"),o()}if(t&2){let e=i.$implicit,r=c();g("id-ptab--on",r.manualForm.platform===e),d(),F(" ",r.getPlatformEmoji(e)," ",S(2,4,e)," ")}}function _t(t,i){if(t&1){let e=C();n(0,"div",27)(1,"div",10)(2,"label",19),l(3,"Followers"),o(),n(4,"input",133),b("ngModelChange",function(a){m(e);let s=c();return x(s.manualForm.followerCount,a)||(s.manualForm.followerCount=a),p(a)}),o()(),n(5,"div",10)(6,"label",19),l(7,"Following"),o(),n(8,"input",133),b("ngModelChange",function(a){m(e);let s=c();return x(s.manualForm.followingCount,a)||(s.manualForm.followingCount=a),p(a)}),o()(),n(9,"div",10)(10,"label",19),l(11,"Posts"),o(),n(12,"input",133),b("ngModelChange",function(a){m(e);let s=c();return x(s.manualForm.postCount,a)||(s.manualForm.postCount=a),p(a)}),o()(),n(13,"div",10)(14,"label",19),l(15,"Avg Likes"),o(),n(16,"input",133),b("ngModelChange",function(a){m(e);let s=c();return x(s.manualForm.avgLikes,a)||(s.manualForm.avgLikes=a),p(a)}),o()(),n(17,"div",10)(18,"label",19),l(19,"Avg Comments"),o(),n(20,"input",133),b("ngModelChange",function(a){m(e);let s=c();return x(s.manualForm.avgComments,a)||(s.manualForm.avgComments=a),p(a)}),o()(),n(21,"div",10)(22,"label",19),l(23,"Engagement %"),o(),n(24,"input",134),b("ngModelChange",function(a){m(e);let s=c();return x(s.manualForm.engagementRate,a)||(s.manualForm.engagementRate=a),p(a)}),o()()(),n(25,"div",10)(26,"div",11),l(27,"Verified"),o(),n(28,"div",135)(29,"label",136)(30,"input",137),b("ngModelChange",function(a){m(e);let s=c();return x(s.manualForm.verified,a)||(s.manualForm.verified=a),p(a)}),o(),l(31," Yes \u2713 "),o(),n(32,"label",136)(33,"input",137),b("ngModelChange",function(a){m(e);let s=c();return x(s.manualForm.verified,a)||(s.manualForm.verified=a),p(a)}),o(),l(34," No "),o()()()}if(t&2){let e=c();d(4),v("ngModel",e.manualForm.followerCount),d(4),v("ngModel",e.manualForm.followingCount),d(4),v("ngModel",e.manualForm.postCount),d(4),v("ngModel",e.manualForm.avgLikes),d(4),v("ngModel",e.manualForm.avgComments),d(4),v("ngModel",e.manualForm.engagementRate),d(5),g("id-toggle-opt--on",e.manualForm.verified===!0),d(),T("value",!0),v("ngModel",e.manualForm.verified),d(2),g("id-toggle-opt--on",e.manualForm.verified===!1),d(),T("value",!1),v("ngModel",e.manualForm.verified)}}function gt(t,i){if(t&1){let e=C();n(0,"div",27)(1,"div",10)(2,"label",19),l(3,"Page Likes"),o(),n(4,"input",133),b("ngModelChange",function(a){m(e);let s=c();return x(s.manualForm.pageLikes,a)||(s.manualForm.pageLikes=a),p(a)}),o()(),n(5,"div",10)(6,"label",19),l(7,"Followers"),o(),n(8,"input",133),b("ngModelChange",function(a){m(e);let s=c();return x(s.manualForm.followerCount,a)||(s.manualForm.followerCount=a),p(a)}),o()(),n(9,"div",10)(10,"label",19),l(11,"Posts"),o(),n(12,"input",133),b("ngModelChange",function(a){m(e);let s=c();return x(s.manualForm.postCount,a)||(s.manualForm.postCount=a),p(a)}),o()(),n(13,"div",10)(14,"label",19),l(15,"Engagement %"),o(),n(16,"input",134),b("ngModelChange",function(a){m(e);let s=c();return x(s.manualForm.engagementRate,a)||(s.manualForm.engagementRate=a),p(a)}),o()()()}if(t&2){let e=c();d(4),v("ngModel",e.manualForm.pageLikes),d(4),v("ngModel",e.manualForm.followerCount),d(4),v("ngModel",e.manualForm.postCount),d(4),v("ngModel",e.manualForm.engagementRate)}}function vt(t,i){if(t&1){let e=C();n(0,"div",27)(1,"div",10)(2,"label",19),l(3,"Subscribers"),o(),n(4,"input",133),b("ngModelChange",function(a){m(e);let s=c();return x(s.manualForm.subscriberCount,a)||(s.manualForm.subscriberCount=a),p(a)}),o()(),n(5,"div",10)(6,"label",19),l(7,"Videos"),o(),n(8,"input",133),b("ngModelChange",function(a){m(e);let s=c();return x(s.manualForm.videoCount,a)||(s.manualForm.videoCount=a),p(a)}),o()(),n(9,"div",10)(10,"label",19),l(11,"Avg Views"),o(),n(12,"input",133),b("ngModelChange",function(a){m(e);let s=c();return x(s.manualForm.avgViews,a)||(s.manualForm.avgViews=a),p(a)}),o()(),n(13,"div",10)(14,"label",19),l(15,"Total Views"),o(),n(16,"input",133),b("ngModelChange",function(a){m(e);let s=c();return x(s.manualForm.totalViews,a)||(s.manualForm.totalViews=a),p(a)}),o()(),n(17,"div",10)(18,"label",19),l(19,"Avg Likes"),o(),n(20,"input",133),b("ngModelChange",function(a){m(e);let s=c();return x(s.manualForm.avgLikes,a)||(s.manualForm.avgLikes=a),p(a)}),o()(),n(21,"div",10)(22,"label",19),l(23,"Avg Comments"),o(),n(24,"input",133),b("ngModelChange",function(a){m(e);let s=c();return x(s.manualForm.avgComments,a)||(s.manualForm.avgComments=a),p(a)}),o()()()}if(t&2){let e=c();d(4),v("ngModel",e.manualForm.subscriberCount),d(4),v("ngModel",e.manualForm.videoCount),d(4),v("ngModel",e.manualForm.avgViews),d(4),v("ngModel",e.manualForm.totalViews),d(4),v("ngModel",e.manualForm.avgLikes),d(4),v("ngModel",e.manualForm.avgComments)}}function xt(t,i){if(t&1&&(n(0,"div")(1,"div",6),l(2,"RAW DATA"),o(),n(3,"h2",7),l(4),h(5,"titlecase"),o(),n(6,"div",138),l(7),o()()),t&2){let e=c();d(4),Z(" ",e.sourceLabel(e.selectedSnap().sourceType)," \xB7 ",e.getPlatformEmoji(e.selectedSnap().platform)," ",S(5,4,e.selectedSnap().platform)," "),d(3),_(e.relativeTime(e.selectedSnap().fetchedAt))}}function bt(t,i){if(t&1&&(n(0,"div",141)(1,"span",142),l(2),h(3,"number"),o(),n(4,"span",143),l(5,"Followers"),o()()),t&2){let e=c(3);d(2),_(S(3,1,e.normalisedSelected().followerCount))}}function Ct(t,i){if(t&1&&(n(0,"div",141)(1,"span",142),l(2),h(3,"number"),o(),n(4,"span",143),l(5,"Subscribers"),o()()),t&2){let e=c(3);d(2),_(S(3,1,e.normalisedSelected().subscriberCount))}}function ht(t,i){if(t&1&&(n(0,"div",141)(1,"span",142),l(2),o(),n(3,"span",143),l(4,"Engagement"),o()()),t&2){let e=c(3);d(2),y("",e.normalisedSelected().engagementRate,"%")}}function wt(t,i){if(t&1&&w(0,bt,6,3,"div",141)(1,Ct,6,3,"div",141)(2,ht,5,1,"div",141),t&2){let e=c(2);f(e.normalisedSelected().followerCount!==void 0?0:-1),d(),f(e.normalisedSelected().subscriberCount!==void 0?1:-1),d(),f(e.normalisedSelected().engagementRate!==void 0?2:-1)}}function St(t,i){if(t&1&&(n(0,"div",139),w(1,wt,3,3),o(),n(2,"pre",140),l(3),h(4,"json"),o()),t&2){let e=c();d(),f(e.normalisedSelected()?1:-1),d(2),_(S(4,2,e.selectedSnap().rawData))}}var fe={nano:{bg:"#E3D8F1",text:"#5D5F71",accent:"#8b5cf6"},micro:{bg:"#c5e8e0",text:"#2a6b5e",accent:"#059669"},macro:{bg:"#DABECA",text:"#7a4a3a",accent:"#d97706"},mega:{bg:"#fde8ea",text:"#E84855",accent:"#E84855"}},yt={instagram:"\u{1F4F8}",facebook:"\u{1F44D}",youtube:"\u{1F3AC}"},kt={ensembledata:"\u{1F4E1} EnsembleData",apify:"\u{1F916} Apify",manual:"\u270F\uFE0F Manual"};var _e=class t{constructor(){this.svc=V(ue);this.dsSvc=V(j);this.host=V(Q);this.influencerId="";this.projectId="";this.bloomsnavigate=new H;this.bloomserror=new H;this.loadError=I(null);this.needsSignIn=z(()=>L.config()!==null&&L.session()===null);this.profile=I(null);this.snapshots=I([]);this.dataSources=I([]);this.snapshotsLoading=I(!1);this.savingManual=I(!1);this.savingNotes=I(!1);this.savingEdit=I(!1);this.fetching=I(!1);this.fetchResults=I([]);this.activeTab=I("overview");this.activePlatform=I("instagram");this.activeDrawer=I(null);this.selectedSnap=I(null);this.snapDdOpen=I("");this.snapPlatformFilter="";this.snapSourceFilter="";this.notesContent="";this.tiers=["nano","micro","macro","mega"];this.tabs=[{key:"overview",label:"\u{1F4CA} Overview"},{key:"snapshots",label:"\u{1F5C3} Snapshots"},{key:"notes",label:"\u{1F4DD} Notes"}];this.editForm={name:"",tier:"micro",notes:""};this.manualForm={platform:"instagram",followerCount:null,followingCount:null,postCount:null,avgLikes:null,avgComments:null,engagementRate:null,verified:!1,pageLikes:null,subscriberCount:null,videoCount:null,avgViews:null,totalViews:null};this.fetchForm={platforms:{},edSourceId:"",apifySourceId:""};this.platformHealth=z(()=>{let i=this.snapshots();return(this.profile()?.platforms??[]).map(e=>{let r=i.filter(O=>O.platform===e.platform),a=r.length?[...r].sort((O,ge)=>new Date(ge.fetchedAt).getTime()-new Date(O.fetchedAt).getTime())[0]:null,s=a?W(a):null,R=s?.subscriberCount??s?.followerCount??null;return{platform:e.platform,handle:e.handle,latestSnap:a,norm:s,followers:R}})});this.normalisedSelected=z(()=>this.selectedSnap()?W(this.selectedSnap()):null);this.platformSnapshots=z(()=>this.snapshots().filter(i=>i.platform===this.activePlatform()).sort((i,e)=>new Date(e.fetchedAt).getTime()-new Date(i.fetchedAt).getTime()))}go(i,e={}){let r={feature:"influencers",view:i,params:e};this.bloomsnavigate.emit(r),L.emit(N({type:"navigate"},r))}onDocClick(){this.snapDdOpen.set("")}ngOnInit(){if(this.projectId||(this.projectId=L.project()?.id??""),!this.influencerId){let i="No influencer to show. Pass influencer-id.";this.loadError.set(i),this.bloomserror.emit({code:"NO_INFLUENCER",message:i});return}this.projectId||(this.projectId=L.project()?.id??""),this.loadProfile(),this.loadDataSources()}loadProfile(){this.svc.getInfluencer(this.influencerId).subscribe({next:i=>{this.profile.set(i.data),this.notesContent=i.data.notes??"",i.data.platforms.length>0&&(this.activePlatform.set(i.data.platforms[0].platform),i.data.platforms.forEach(e=>this.fetchForm.platforms[e.platform]=!0)),this.loadSnapshots()},error:i=>{let e=i?.error?.message??"Could not load this influencer.";this.loadError.set(e),this.bloomserror.emit({code:i?.error?.code,message:e})}})}loadDataSources(){this.dsSvc.listDataSources(this.projectId).subscribe(i=>this.dataSources.set(i.data))}loadSnapshots(){this.snapshotsLoading.set(!0),this.svc.listSnapshots(this.influencerId,{platform:this.snapPlatformFilter||void 0,sourceType:this.snapSourceFilter||void 0}).subscribe({next:i=>{this.snapshots.set(i.data),this.snapshotsLoading.set(!1)},error:()=>this.snapshotsLoading.set(!1)})}activePlatforms(){return(this.profile()?.platforms??[]).map(i=>i.platform)}latestSnap(){let i=this.snapshots().filter(r=>r.platform===this.activePlatform());if(!i.length)return null;let e=[...i].sort((r,a)=>new Date(a.fetchedAt).getTime()-new Date(r.fetchedAt).getTime())[0];return W(e)}edSources(){return this.dataSources().filter(i=>i.type==="ensembledata")}apifySources(){return this.dataSources().filter(i=>i.type==="apify")}setTab(i){this.activeTab.set(i)}setActivePlatform(i){this.activePlatform.set(i)}openDrawer(i){this.activeDrawer.set(i)}closeDrawer(){this.activeDrawer.set(null)}openEditDrawer(){let i=this.profile();this.editForm={name:i.name,tier:i.tier,notes:i.notes??""},this.activeDrawer.set("edit")}openManualDrawer(){let i=this.activePlatforms()[0]??"instagram";this.manualForm.platform=i,this.activeDrawer.set("manual")}toggleSnapDd(i,e){e.stopPropagation(),this.snapDdOpen.update(r=>r===i?"":i)}setSnapPlatform(i){this.snapPlatformFilter=i,this.snapDdOpen.set(""),this.loadSnapshots()}setSnapSource(i){this.snapSourceFilter=i,this.snapDdOpen.set(""),this.loadSnapshots()}saveEdit(){this.savingEdit.set(!0),this.svc.updateInfluencer(this.influencerId,{name:this.editForm.name,tier:this.editForm.tier,notes:this.editForm.notes}).subscribe({next:i=>{this.profile.set(i.data),this.savingEdit.set(!1),this.closeDrawer()},error:()=>this.savingEdit.set(!1)})}confirmDelete(){confirm(`Delete ${this.profile()?.name}? This removes all snapshots and cannot be undone.`)&&this.svc.deleteInfluencer(this.influencerId).subscribe(()=>{this.go("dashboard")})}doFetch(){let i=Object.entries(this.fetchForm.platforms).filter(([,r])=>r).map(([r])=>r),e=[];this.fetchForm.edSourceId&&e.push({type:"ensembledata",subscriptionId:this.fetchForm.edSourceId}),this.fetchForm.apifySourceId&&e.push({type:"apify",subscriptionId:this.fetchForm.apifySourceId}),!(!i.length||!e.length)&&(this.fetching.set(!0),this.svc.fetchData(this.influencerId,{platforms:i,sources:e}).subscribe({next:r=>{this.fetching.set(!1),this.fetchResults.set(r.data.results),this.loadSnapshots(),this.loadDataSources()},error:()=>this.fetching.set(!1)}))}saveManualSnapshot(){let i=this.manualForm.platform,e={};i==="instagram"?(this.manualForm.followerCount&&(e.followerCount=Number(this.manualForm.followerCount)),this.manualForm.followingCount&&(e.followingCount=Number(this.manualForm.followingCount)),this.manualForm.postCount&&(e.postCount=Number(this.manualForm.postCount)),this.manualForm.avgLikes&&(e.avgLikes=Number(this.manualForm.avgLikes)),this.manualForm.avgComments&&(e.avgComments=Number(this.manualForm.avgComments)),this.manualForm.engagementRate&&(e.engagementRate=Number(this.manualForm.engagementRate)),e.verified=!!this.manualForm.verified):i==="facebook"?(this.manualForm.pageLikes&&(e.pageLikes=Number(this.manualForm.pageLikes)),this.manualForm.followerCount&&(e.followerCount=Number(this.manualForm.followerCount)),this.manualForm.postCount&&(e.postCount=Number(this.manualForm.postCount)),this.manualForm.engagementRate&&(e.engagementRate=Number(this.manualForm.engagementRate))):(this.manualForm.subscriberCount&&(e.subscriberCount=Number(this.manualForm.subscriberCount)),this.manualForm.videoCount&&(e.videoCount=Number(this.manualForm.videoCount)),this.manualForm.avgViews&&(e.avgViews=Number(this.manualForm.avgViews)),this.manualForm.totalViews&&(e.totalViews=Number(this.manualForm.totalViews)),this.manualForm.avgLikes&&(e.avgLikes=Number(this.manualForm.avgLikes)),this.manualForm.avgComments&&(e.avgComments=Number(this.manualForm.avgComments))),this.savingManual.set(!0),this.svc.createManualSnapshot(this.influencerId,{platform:i,data:e}).subscribe({next:()=>{this.savingManual.set(!1),this.resetManualForm(),this.loadSnapshots(),this.closeDrawer()},error:()=>this.savingManual.set(!1)})}resetManualForm(){let i=this.manualForm.platform;this.manualForm={platform:i,followerCount:null,followingCount:null,postCount:null,avgLikes:null,avgComments:null,engagementRate:null,verified:!1,pageLikes:null,subscriberCount:null,videoCount:null,avgViews:null,totalViews:null}}saveNotes(){this.savingNotes.set(!0),this.svc.updateInfluencer(this.influencerId,{notes:this.notesContent}).subscribe({next:i=>{this.savingNotes.set(!1),this.profile.set(i.data)},error:()=>this.savingNotes.set(!1)})}deleteSnapshot(i){confirm("Delete this snapshot? This cannot be undone.")&&this.svc.deleteSnapshot(this.influencerId,i).subscribe(()=>this.loadSnapshots())}viewRaw(i){this.selectedSnap.set(i),this.activeDrawer.set("snapdetail")}viewRawForLatest(){let i=this.snapshots().filter(r=>r.platform===this.activePlatform());if(!i.length)return;let e=[...i].sort((r,a)=>new Date(a.fetchedAt).getTime()-new Date(r.fetchedAt).getTime())[0];this.viewRaw(e)}edPct(i){return i.edDailyLimit?Math.min(100,i.edUnitsUsedToday/i.edDailyLimit*100):0}apifyPct(i){return i.apifyCreditLimitCents?Math.min(100,i.apifyCreditUsedCents/i.apifyCreditLimitCents*100):0}getTierColor(i){return fe[i]??fe.micro}getPlatformEmoji(i){return yt[i]??"\u{1F310}"}sourceLabel(i){return kt[i]??i}getInitials(i){return i.split(" ").slice(0,2).map(e=>e[0]).join("").toUpperCase()}formatCompact(i){return i>=1e6?(i/1e6).toFixed(1)+"M":i>=1e3?(i/1e3).toFixed(1)+"K":String(i)}formatUsd(i){return"$"+(i/100).toFixed(2)}relativeTime(i){let e=Date.now()-new Date(i).getTime(),r=Math.floor(e/36e5);return r<1?"just now":r<24?`${r}h ago`:`${Math.floor(r/24)}d ago`}getSnapSummary(i){let e=W(i),r=[],a=e.subscriberCount??e.followerCount;return a&&r.push(`${a.toLocaleString()} followers`),e.postCount&&r.push(`${e.postCount} posts`),e.engagementRate&&r.push(`${e.engagementRate}% eng.`),e.totalViews&&r.push(`${e.totalViews.toLocaleString()} views`),r.join(" \xB7 ")||"No data"}static{this.\u0275fac=function(e){return new(e||t)}}static{this.\u0275cmp=G({type:t,selectors:[["blooms-influencer-detail"]],hostBindings:function(e,r){e&1&&u("click",function(){return r.onDocClick()},!1,J)},inputs:{influencerId:"influencerId",projectId:"projectId"},outputs:{bloomsnavigate:"bloomsnavigate",bloomserror:"bloomserror"},decls:100,vars:28,consts:[[1,"id-shell","id-shell--error"],[1,"id-shell"],[1,"id-fullload"],[1,"id-backdrop",3,"click"],[1,"id-drawer","id-drawer--lg"],[1,"id-drawer__head"],[1,"id-drawer__eyebrow"],[1,"id-drawer__title"],[1,"id-drawer__x",3,"click"],[1,"id-drawer__body"],[1,"id-field"],[1,"id-field__label"],[1,"id-check-group"],[1,"id-check-item",3,"id-check-item--on"],[1,"id-hint"],[1,"id-drawer__foot"],[1,"id-btn","id-btn--ghost",3,"click"],[1,"id-btn","id-btn--primary",3,"click","disabled"],[1,"id-drawer"],[1,"id-label"],[1,"id-req"],["type","text","placeholder","Creator name",1,"id-input",3,"ngModelChange","ngModel"],[1,"id-tier-grid"],["type","button",1,"id-tier-opt",3,"id-tier-opt--on","--to-bg","--to-text","--to-accent"],["rows","5","placeholder","Brand fit, contact info, campaign notes\u2026",1,"id-textarea",3,"ngModelChange","ngModel"],[1,"id-platform-tabs"],[1,"id-ptab",3,"id-ptab--on"],[1,"id-manual-grid"],[1,"id-drawer","id-drawer--xl"],[1,"id-drawer__body","id-drawer__body--mono"],[1,"id-error"],["type","button",1,"id-link-btn",3,"click"],[1,"id-sidebar"],["type","button",1,"id-back",3,"click"],[1,"id-profile-card"],[1,"id-profile-card__banner"],[1,"id-avatar"],[1,"id-profile-card__body"],[1,"id-profile-card__name"],[1,"id-tier-badge"],[1,"id-section-label"],[1,"id-phealth",3,"id-phealth--active"],[1,"id-empty-hint"],[1,"id-actions"],[1,"id-action-btn","id-action-btn--primary",3,"click"],[1,"id-action-btn",3,"click"],[1,"id-action-btn","id-action-btn--danger",3,"click"],[1,"id-main"],[1,"id-breadcrumb"],[1,"id-breadcrumb__item"],[1,"id-breadcrumb__sep"],[1,"id-breadcrumb__item","id-breadcrumb__item--current"],[1,"id-tabs"],[1,"id-tab",3,"id-tab--on"],[1,"id-tab-platforms"],[1,"id-section"],[1,"id-phealth",3,"click"],[1,"id-phealth__left"],[1,"id-phealth__icon"],[1,"id-phealth__platform"],[1,"id-phealth__handle"],[1,"id-phealth__right"],[1,"id-phealth__metric"],[1,"id-phealth__dot"],[1,"id-notes-preview",3,"click"],[1,"id-tab",3,"click"],[1,"id-ptab",3,"click"],[1,"id-loading"],[1,"id-no-data"],[1,"id-snap-meta"],[1,"id-snap-source"],[1,"id-snap-label"],[1,"id-snap-time"],[1,"id-mini-btn",3,"click"],[1,"id-kpi-grid"],[1,"id-kpi"],[1,"id-kpi","id-kpi--accent"],[1,"id-kpi__val"],[1,"id-kpi__label"],[1,"id-timeline-label"],[1,"id-timeline"],[1,"id-tl-item"],[1,"id-tl-item",3,"click"],[1,"id-tl-item__source"],[1,"id-tl-item__time"],[1,"id-tl-item__summary"],[1,"id-no-data__icon"],[1,"id-no-data__title"],[1,"id-no-data__sub"],[1,"id-btn","id-btn--primary",3,"click"],[1,"id-filter-bar"],[1,"id-dd"],[1,"id-dd__btn",3,"click"],[1,"id-dd__arrow"],[1,"id-dd__menu",3,"click"],[1,"id-dd__opt",3,"click"],[1,"id-dd__opt",3,"id-dd__opt--on"],[1,"id-snap-count"],[1,"id-snap-table"],[1,"id-snap-table__head"],[1,"id-sth"],[1,"id-sth","id-sth--r"],[1,"id-snap-row"],[1,"id-std"],[1,"id-source-chip"],[1,"id-platform-chip"],[1,"id-std","id-std--summary"],[1,"id-std","id-std--muted"],[1,"id-std","id-std--r"],[1,"id-snap-act",3,"click"],[1,"id-snap-act","id-snap-act--del",3,"click"],[1,"id-notes-meta"],["rows","14","placeholder","Add your notes about this creator \u2014 brand fit, contact details, campaign history\u2026",1,"id-notes-area",3,"ngModelChange","ngModel"],[1,"id-notes-foot"],[1,"id-dots"],[1,"id-check-item"],["type","checkbox",2,"display","none",3,"ngModelChange","ngModel"],[1,"id-radio-card",3,"id-radio-card--on"],[1,"id-radio-card"],["type","radio","name","ed-src",2,"display","none",3,"ngModelChange","value","ngModel"],[1,"id-radio-card__left"],[1,"id-radio-card__indicator"],[1,"id-radio-card__title"],[1,"id-radio-card__sub"],[1,"id-quota-mini"],["type","radio","name","apify-src",2,"display","none",3,"ngModelChange","value","ngModel"],[1,"id-fetch-results"],[1,"id-fetch-result",3,"id-fetch-result--ok","id-fetch-result--fail"],[1,"id-fetch-result"],[1,"id-fetch-result__text"],[1,"id-fetch-result__err"],["type","button",1,"id-tier-opt",3,"click"],[1,"id-tier-opt__dot"],["type","number",1,"id-input",3,"ngModelChange","ngModel"],["type","number","step","0.01",1,"id-input",3,"ngModelChange","ngModel"],[1,"id-toggle-row"],[1,"id-toggle-opt"],["type","radio",2,"display","none",3,"ngModelChange","value","ngModel"],[1,"id-drawer__sub"],[1,"id-snap-summary-strip"],[1,"id-raw-pre"],[1,"id-ss-item"],[1,"id-ss-item__val"],[1,"id-ss-item__lbl"]],template:function(e,r){e&1&&(w(0,ye,5,1,"div",0)(1,tt,47,19,"div",1)(2,it,6,0,"div",2),n(3,"div",3),u("click",function(){return r.closeDrawer()}),o(),n(4,"aside",4)(5,"div",5)(6,"div")(7,"div",6),l(8,"SYNC DATA"),o(),n(9,"h2",7),l(10,"\u{1F4E1} Fetch from Sources"),o()(),n(11,"button",8),u("click",function(){return r.closeDrawer()}),l(12,"\u2715"),o()(),n(13,"div",9)(14,"div",10)(15,"div",11),l(16,"Platforms to sync"),o(),n(17,"div",12),D(18,nt,4,7,"label",13,M),o()(),n(20,"div",10)(21,"div",11),l(22,"EnsembleData source"),o(),w(23,ot,4,0,"div",14)(24,at,2,0),o(),n(25,"div",10)(26,"div",11),l(27,"Apify source"),o(),w(28,lt,4,0,"div",14)(29,st,2,0),o(),w(30,pt,6,0,"div",10),o(),n(31,"div",15)(32,"button",16),u("click",function(){return r.closeDrawer()}),l(33,"Cancel"),o(),n(34,"button",17),u("click",function(){return r.doFetch()}),l(35),o()()(),n(36,"aside",18)(37,"div",5)(38,"div")(39,"div",6),l(40,"EDIT PROFILE"),o(),n(41,"h2",7),l(42,"\u{1F6E0} Update Creator"),o()(),n(43,"button",8),u("click",function(){return r.closeDrawer()}),l(44,"\u2715"),o()(),n(45,"div",9)(46,"div",10)(47,"label",19),l(48,"Name "),n(49,"span",20),l(50,"*"),o()(),n(51,"input",21),b("ngModelChange",function(s){return x(r.editForm.name,s)||(r.editForm.name=s),s}),o()(),n(52,"div",10)(53,"label",19),l(54,"Tier "),n(55,"span",20),l(56,"*"),o()(),n(57,"div",22),D(58,ut,4,11,"button",23,M),o()(),n(60,"div",10)(61,"label",19),l(62,"Notes"),o(),n(63,"textarea",24),b("ngModelChange",function(s){return x(r.editForm.notes,s)||(r.editForm.notes=s),s}),o()()(),n(64,"div",15)(65,"button",16),u("click",function(){return r.closeDrawer()}),l(66,"Cancel"),o(),n(67,"button",17),u("click",function(){return r.saveEdit()}),l(68),o()()(),n(69,"aside",18)(70,"div",5)(71,"div")(72,"div",6),l(73,"MANUAL ENTRY"),o(),n(74,"h2",7),l(75,"\u270F\uFE0F Add Snapshot"),o()(),n(76,"button",8),u("click",function(){return r.closeDrawer()}),l(77,"\u2715"),o()(),n(78,"div",9)(79,"div",10)(80,"div",11),l(81,"Platform"),o(),n(82,"div",25),D(83,ft,3,6,"button",26,M),o()(),w(85,_t,35,14)(86,gt,17,4,"div",27)(87,vt,25,6,"div",27),o(),n(88,"div",15)(89,"button",16),u("click",function(){return r.closeDrawer()}),l(90,"Cancel"),o(),n(91,"button",17),u("click",function(){return r.saveManualSnapshot()}),l(92),o()()(),n(93,"aside",28)(94,"div",5),w(95,xt,8,6,"div"),n(96,"button",8),u("click",function(){return r.closeDrawer()}),l(97,"\u2715"),o()(),n(98,"div",29),w(99,St,5,4),o()()),e&2&&(f(!r.profile()&&r.loadError()?0:-1),d(),f(r.profile()?1:2),d(2),g("id-backdrop--on",r.activeDrawer()!==null),d(),g("id-drawer--open",r.activeDrawer()==="fetch"),d(14),E(r.activePlatforms()),d(5),f(r.edSources().length===0?23:24),d(5),f(r.apifySources().length===0?28:29),d(2),f(r.fetchResults().length>0?30:-1),d(4),T("disabled",r.fetching()),d(),y(" ",r.fetching()?"\u23F3 Fetching\u2026":"\u{1F4E1} Fetch Now"," "),d(),g("id-drawer--open",r.activeDrawer()==="edit"),d(15),v("ngModel",r.editForm.name),d(7),E(r.tiers),d(5),v("ngModel",r.editForm.notes),d(4),T("disabled",r.savingEdit()),d(),y(" ",r.savingEdit()?"Saving\u2026":"Save Changes"," "),d(),g("id-drawer--open",r.activeDrawer()==="manual"),d(14),E(r.activePlatforms()),d(2),f(r.manualForm.platform==="instagram"?85:-1),d(),f(r.manualForm.platform==="facebook"?86:-1),d(),f(r.manualForm.platform==="youtube"?87:-1),d(4),T("disabled",r.savingManual()),d(),y(" ",r.savingManual()?"Saving\u2026":"Save Snapshot"," "),d(),g("id-drawer--open",r.activeDrawer()==="snapdetail"),d(2),f(r.selectedSnap()?95:-1),d(4),f(r.selectedSnap()?99:-1))},dependencies:[oe,te,ne,ie,ee,pe,le,ce,ae,me,de,se],styles:[`@charset "UTF-8";:host{--color-text: var(--color-text, #5d5f71);--color-text-muted: var(--color-text-muted, #9395a5);--color-bg: var(--color-bg, #f7f5fb);--color-card-bg: var(--color-card-bg, #ffffff);--color-border: var(--color-border, #ede9f6);--color-hover: var(--color-hover, #f5f2fb);--color-accent: var(--color-accent, #e84855);--radius-sm: var(--radius-sm, 6px);--radius-md: var(--radius-md, 10px);--radius-lg: var(--radius-lg, 16px);display:block;font-family:var(--font-sans, "Poppins", system-ui, -apple-system, sans-serif);color:var(--color-text)}:host>*{letter-spacing:normal;word-spacing:normal;line-height:1.5;text-transform:none;text-indent:0;font-style:normal;font-weight:400;font-variant:normal;text-align:left;white-space:normal}*,*:before,*:after{box-sizing:border-box}.btn{display:inline-flex;align-items:center;gap:6px;padding:9px 18px;border-radius:var(--radius-md);font-family:inherit;font-size:13px;font-weight:600;cursor:pointer;border:1px solid transparent;transition:background .15s,border-color .15s,box-shadow .15s,opacity .15s;text-decoration:none;white-space:nowrap}.btn:disabled{opacity:.5;cursor:not-allowed;pointer-events:none}.btn-sm{padding:6px 12px;font-size:12px}.btn-primary{background:var(--color-accent);color:#fff;border-color:var(--color-accent)}.btn-primary:hover:not(:disabled){background:#d13d4a;border-color:#d13d4a;box-shadow:0 2px 8px color-mix(in srgb,var(--color-accent) 30%,transparent)}.btn-outline{background:transparent;color:var(--color-text);border-color:var(--color-border)}.btn-outline:hover:not(:disabled){background:var(--color-hover);border-color:#d5d0e4}.btn-ghost{background:transparent;color:var(--color-text-muted);border-color:transparent}.btn-ghost:hover:not(:disabled){background:var(--color-hover);color:var(--color-text)}
2
+ `,`@charset "UTF-8";.id-shell{display:grid;grid-template-columns:280px 1fr;min-height:100%;font-family:var(--font-sans)}.id-sidebar{border-right:1px solid var(--color-border);padding:1.5rem 1.25rem;display:flex;flex-direction:column;gap:.6rem;background:var(--color-card-bg);position:sticky;top:0;height:100vh;overflow-y:auto}.id-shell--error{padding:24px;display:grid;gap:12px;place-items:start}.id-error{margin:0;color:var(--color-text-muted);font-size:14px}.id-link-btn{background:none;border:0;padding:0;cursor:pointer;font:inherit;color:var(--color-accent);text-decoration:underline}.id-back{background:none;border:0;cursor:pointer;font-family:inherit;font-size:.75rem;color:var(--color-text-muted);text-decoration:none;display:inline-flex;align-items:center;gap:4px;margin-bottom:.5rem;transition:color .15s}.id-back:hover{color:var(--color-accent);text-decoration:none}.id-profile-card{border:1px solid var(--color-border);border-radius:var(--radius-lg);overflow:hidden;margin-bottom:.5rem}.id-profile-card__banner{height:56px;display:flex;align-items:flex-end;padding:0 1rem}.id-avatar{width:52px;height:52px;border-radius:14px;display:flex;align-items:center;justify-content:center;font-size:1.25rem;font-weight:700;border:3px solid var(--color-card-bg);transform:translateY(28px)}.id-profile-card__body{padding:2rem 1rem 1rem;display:flex;flex-direction:column;gap:6px}.id-profile-card__name{font-size:1rem;font-weight:700;color:var(--color-text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.id-tier-badge{display:inline-block;font-size:.62rem;font-weight:800;letter-spacing:.08em;padding:2px 8px;border-radius:999px}.id-section-label{font-size:.65rem;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(--color-text-muted);padding:.5rem 0 .15rem}.id-phealth{display:flex;align-items:center;justify-content:space-between;padding:.6rem .75rem;border-radius:var(--radius-md);cursor:pointer;transition:background .12s;gap:.5rem}.id-phealth:hover{background:var(--color-hover)}.id-phealth--active{background:var(--color-primary-soft)}.id-phealth__left{display:flex;align-items:center;gap:.6rem;min-width:0}.id-phealth__icon{font-size:1rem;flex-shrink:0}.id-phealth__platform{font-size:.8rem;font-weight:600;color:var(--color-text)}.id-phealth__handle{font-size:.7rem;color:var(--color-text-muted)}.id-phealth__right{display:flex;align-items:center;gap:6px;flex-shrink:0}.id-phealth__metric{font-size:.75rem;font-weight:700;color:var(--color-text);font-variant-numeric:tabular-nums}.id-phealth__dot{width:7px;height:7px;border-radius:50%}.id-actions{display:flex;flex-direction:column;gap:.35rem}.id-action-btn{display:flex;align-items:center;gap:6px;padding:.55rem .875rem;border-radius:var(--radius-md);font-family:var(--font-sans);font-size:.8rem;font-weight:600;cursor:pointer;border:1px solid var(--color-border);background:var(--color-card-bg);color:var(--color-text);text-align:left;transition:background .12s,border-color .12s}.id-action-btn:hover{background:var(--color-hover)}.id-action-btn--primary{background:var(--color-accent);color:#fff;border-color:var(--color-accent)}.id-action-btn--primary:hover{opacity:.88;background:var(--color-accent)}.id-action-btn--danger{color:var(--color-accent)}.id-action-btn--danger:hover{background:#fde8ea;border-color:#fca5a5}.id-notes-preview{font-size:.75rem;color:var(--color-text-muted);line-height:1.55;padding:.5rem .75rem;background:var(--color-bg);border-radius:var(--radius-md);cursor:pointer;transition:background .12s}.id-notes-preview:hover{background:var(--color-hover)}.id-empty-hint{font-size:.75rem;color:var(--color-text-muted);padding:.25rem 0}.id-main{padding:1.5rem 2rem;overflow-y:auto;min-width:0}.id-breadcrumb{display:flex;align-items:center;gap:.4rem;font-size:.75rem;color:var(--color-text-muted);margin-bottom:1.25rem}.id-breadcrumb__sep{color:var(--color-border)}.id-breadcrumb__item--current{color:var(--color-text);font-weight:600}.id-tabs{display:flex;align-items:center;gap:0;border-bottom:2px solid var(--color-border);margin-bottom:1.5rem;flex-wrap:wrap;gap:.25rem}.id-tab{padding:.6rem 1.1rem;background:none;border:none;font-family:var(--font-sans);font-size:.85rem;font-weight:600;color:var(--color-text-muted);cursor:pointer;border-bottom:2px solid transparent;margin-bottom:-2px;transition:color .15s,border-color .15s}.id-tab--on{color:var(--color-accent);border-bottom-color:var(--color-accent)}.id-tab-platforms{display:flex;gap:.4rem;margin-left:auto;padding-bottom:2px}.id-ptab{padding:.3rem .8rem;border:1.5px solid var(--color-border);border-radius:999px;background:none;font-family:var(--font-sans);font-size:.75rem;font-weight:600;cursor:pointer;color:var(--color-text-muted);transition:border-color .15s,background .15s,color .15s}.id-ptab--on{border-color:var(--color-accent);background:#fde8ea;color:var(--color-accent)}.id-section{display:flex;flex-direction:column;gap:1.25rem}.id-snap-meta{display:flex;align-items:center;gap:.75rem;font-size:.78rem;color:var(--color-text-muted);flex-wrap:wrap}.id-snap-source{font-weight:600;color:var(--color-text)}.id-snap-time{margin-left:auto}.id-mini-btn{padding:2px 8px;border-radius:5px;font-size:.72rem;font-weight:600;cursor:pointer;background:var(--color-bg);border:1px solid var(--color-border);color:var(--color-text-muted);transition:background .1s}.id-mini-btn:hover{background:var(--color-hover)}.id-kpi-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(130px,1fr));gap:.85rem}.id-kpi{background:var(--color-card-bg);border:1px solid var(--color-border);border-radius:var(--radius-md);padding:.9rem 1rem;text-align:center}.id-kpi--accent{border-color:var(--color-accent);background:#fde8ea}.id-kpi__val{font-size:1.4rem;font-weight:700;color:var(--color-text);font-variant-numeric:tabular-nums}.id-kpi--accent .id-kpi__val{color:var(--color-accent)}.id-kpi__label{font-size:.72rem;color:var(--color-text-muted);margin-top:3px}.id-timeline-label{font-size:.72rem;font-weight:700;text-transform:uppercase;letter-spacing:.07em;color:var(--color-text-muted)}.id-timeline{display:flex;flex-direction:column;gap:.4rem}.id-tl-item{display:grid;grid-template-columns:140px 80px 1fr;gap:.75rem;align-items:center;padding:.6rem .875rem;border-radius:var(--radius-md);background:var(--color-bg);border:1px solid var(--color-border);cursor:pointer;transition:background .1s;font-size:.78rem}.id-tl-item:hover{background:var(--color-hover)}.id-tl-item__source{font-weight:600;color:var(--color-text)}.id-tl-item__time{color:var(--color-text-muted);font-size:.72rem}.id-tl-item__summary{color:var(--color-text-muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.id-no-data{text-align:center;padding:3rem 2rem}.id-no-data__icon{font-size:2.5rem;margin-bottom:.75rem}.id-no-data__title{font-weight:700;margin-bottom:.4rem}.id-no-data__sub{font-size:.875rem;color:var(--color-text-muted);margin-bottom:1.25rem}.id-filter-bar{display:flex;align-items:center;gap:.6rem;flex-wrap:wrap}.id-snap-count{font-size:.75rem;color:var(--color-text-muted);margin-left:auto}.id-dd{position:relative}.id-dd__btn{display:inline-flex;align-items:center;gap:6px;padding:.45rem .8rem;border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-card-bg);font-family:var(--font-sans);font-size:.78rem;font-weight:600;cursor:pointer;color:var(--color-text);white-space:nowrap;transition:border-color .15s}.id-dd--open .id-dd__btn{border-color:var(--color-accent)}.id-dd__arrow{font-size:.6rem;color:var(--color-text-muted);transition:transform .15s}.id-dd--open .id-dd__arrow{transform:rotate(180deg)}.id-dd__menu{display:none;position:absolute;top:calc(100% + 5px);left:0;min-width:160px;background:var(--color-card-bg);border:1px solid var(--color-border);border-radius:var(--radius-md);box-shadow:var(--shadow-lg);z-index:60;overflow:hidden}.id-dd--open .id-dd__menu{display:block}.id-dd__opt{display:flex;align-items:center;gap:6px;width:100%;padding:.45rem .875rem;background:none;border:none;text-align:left;font-family:var(--font-sans);font-size:.78rem;cursor:pointer;color:var(--color-text);transition:background .1s}.id-dd__opt:hover{background:var(--color-hover)}.id-dd__opt--on{color:var(--color-accent);font-weight:700;background:#fde8ea}.id-snap-table{border:1px solid var(--color-border);border-radius:var(--radius-lg);overflow:hidden;background:var(--color-card-bg)}.id-snap-table__head{display:grid;grid-template-columns:170px 130px 1fr 90px 100px;padding:.55rem 1rem;background:var(--color-bg);border-bottom:1px solid var(--color-border)}.id-sth{font-size:.68rem;font-weight:700;text-transform:uppercase;letter-spacing:.07em;color:var(--color-text-muted)}.id-sth--r{text-align:right}.id-snap-row{display:grid;grid-template-columns:170px 130px 1fr 90px 100px;padding:.6rem 1rem;border-bottom:1px solid var(--color-border);align-items:center;transition:background .1s}.id-snap-row:last-child{border-bottom:none}.id-snap-row:hover{background:var(--color-hover)}.id-std{font-size:.8rem;color:var(--color-text)}.id-std--summary{color:var(--color-text-muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:.76rem}.id-std--muted{color:var(--color-text-muted);font-size:.75rem}.id-std--r{display:flex;gap:.4rem;justify-content:flex-end}.id-source-chip{display:inline-block;padding:2px 7px;border-radius:4px;font-size:.72rem;font-weight:600;background:var(--color-bg);border:1px solid var(--color-border)}.id-platform-chip{font-size:.75rem}.id-snap-act{padding:2px 8px;border-radius:5px;font-size:.7rem;font-weight:600;cursor:pointer;background:var(--color-bg);border:1px solid var(--color-border);color:var(--color-text);transition:background .1s}.id-snap-act:hover{background:var(--color-hover)}.id-snap-act--del{border-color:#fca5a5;color:var(--color-accent)}.id-notes-meta{font-size:.75rem;color:var(--color-text-muted)}.id-notes-area{width:100%;box-sizing:border-box;padding:.875rem;border:1px solid var(--color-border);border-radius:var(--radius-md);font-family:var(--font-sans);font-size:.875rem;background:var(--color-bg);color:var(--color-text);resize:vertical;transition:border-color .15s}.id-notes-area:focus{outline:none;border-color:var(--color-accent)}.id-notes-foot{display:flex;justify-content:flex-end}.id-loading{padding:2rem;color:var(--color-text-muted);font-size:.875rem}.id-fullload{display:flex;align-items:center;gap:1rem;padding:5rem;color:var(--color-text-muted);font-size:.875rem;justify-content:center}.id-dots{display:flex;gap:4px}.id-dots span{width:8px;height:8px;border-radius:50%;background:var(--color-accent);animation:id-blink 1.2s infinite both}.id-dots span:nth-child(2){animation-delay:.2s}.id-dots span:nth-child(3){animation-delay:.4s}@keyframes id-blink{0%,80%,to{opacity:.2}40%{opacity:1}}.id-btn{display:inline-flex;align-items:center;gap:5px;padding:.55rem 1.1rem;border-radius:var(--radius-md);font-family:var(--font-sans);font-size:.82rem;font-weight:600;cursor:pointer;border:none;transition:opacity .15s,box-shadow .15s}.id-btn:disabled{opacity:.5;cursor:not-allowed}.id-btn--primary{background:var(--color-accent);color:#fff}.id-btn--primary:hover{box-shadow:0 3px 10px #e8485547}.id-btn--ghost{background:transparent;color:var(--color-text-muted)}.id-backdrop{position:fixed;inset:0;background:#0000006b;z-index:90;opacity:0;pointer-events:none;transition:opacity .25s}.id-backdrop--on{opacity:1;pointer-events:all}.id-drawer{position:fixed;top:0;right:0;bottom:0;width:440px;max-width:100vw;background:var(--color-card-bg);z-index:95;display:flex;flex-direction:column;box-shadow:-6px 0 40px #00000024;transform:translate(100%);transition:transform .3s cubic-bezier(.4,0,.2,1)}.id-drawer--open{transform:translate(0)}.id-drawer--lg{width:520px;z-index:96}.id-drawer--xl{width:640px;z-index:97}.id-drawer__head{display:flex;align-items:flex-start;justify-content:space-between;padding:1.5rem;border-bottom:1px solid var(--color-border);flex-shrink:0}.id-drawer__eyebrow{font-size:.65rem;font-weight:700;letter-spacing:.12em;color:var(--color-accent);margin-bottom:4px}.id-drawer__title{font-size:1.05rem;font-weight:700;margin:0}.id-drawer__sub{font-size:.75rem;color:var(--color-text-muted);margin-top:3px}.id-drawer__x{background:var(--color-bg);border:1px solid var(--color-border);border-radius:8px;width:32px;height:32px;display:flex;align-items:center;justify-content:center;cursor:pointer;font-size:.75rem;color:var(--color-text-muted);flex-shrink:0;transition:background .1s}.id-drawer__x:hover{background:var(--color-hover)}.id-drawer__body{flex:1;overflow-y:auto;padding:1.5rem;display:flex;flex-direction:column;gap:1.25rem}.id-drawer__body--mono{background:var(--color-bg)}.id-drawer__foot{padding:1.25rem 1.5rem;border-top:1px solid var(--color-border);display:flex;gap:.6rem;justify-content:flex-end;flex-shrink:0}.id-field{display:flex;flex-direction:column;gap:.4rem}.id-field__label,.id-label{font-size:.78rem;font-weight:600;color:var(--color-text)}.id-req{color:var(--color-accent);margin-left:2px}.id-input{padding:.6rem .875rem;border:1px solid var(--color-border);border-radius:var(--radius-md);font-family:var(--font-sans);font-size:.875rem;background:var(--color-bg);color:var(--color-text);width:100%;box-sizing:border-box;transition:border-color .15s,box-shadow .15s}.id-input:focus{outline:none;border-color:var(--color-accent);box-shadow:0 0 0 3px #e8485514}.id-textarea{padding:.6rem .875rem;border:1px solid var(--color-border);border-radius:var(--radius-md);font-family:var(--font-sans);font-size:.875rem;background:var(--color-bg);color:var(--color-text);width:100%;box-sizing:border-box;resize:vertical;transition:border-color .15s}.id-textarea:focus{outline:none;border-color:var(--color-accent)}.id-tier-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:.5rem}.id-tier-opt{display:flex;flex-direction:column;align-items:center;gap:4px;padding:.6rem .4rem;border-radius:var(--radius-md);border:2px solid var(--color-border);background:transparent;cursor:pointer;font-family:var(--font-sans);font-size:.72rem;font-weight:700;color:var(--color-text-muted);transition:border-color .15s,background .15s,color .15s}.id-tier-opt__dot{width:8px;height:8px;border-radius:50%;background:var(--to-accent)}.id-tier-opt--on{border-color:var(--to-accent);background:var(--to-bg);color:var(--to-text)}.id-check-group{display:flex;gap:.5rem;flex-wrap:wrap}.id-check-item{padding:.4rem .9rem;border:1.5px solid var(--color-border);border-radius:999px;font-size:.8rem;font-weight:600;cursor:pointer;color:var(--color-text-muted);transition:border-color .15s,background .15s,color .15s}.id-check-item--on{border-color:var(--color-accent);background:#fde8ea;color:var(--color-accent)}.id-radio-card{display:flex;align-items:center;justify-content:space-between;padding:.75rem 1rem;border:1.5px solid var(--color-border);border-radius:var(--radius-md);cursor:pointer;transition:border-color .15s,background .15s;margin-bottom:.4rem}.id-radio-card--on{border-color:var(--color-accent);background:#fde8ea}.id-radio-card__left{display:flex;align-items:center;gap:.65rem}.id-radio-card__indicator{width:14px;height:14px;border-radius:50%;border:2px solid var(--color-border);flex-shrink:0;transition:border-color .15s,background .15s}.id-radio-card--on .id-radio-card__indicator{border-color:var(--color-accent);background:var(--color-accent)}.id-radio-card__title{font-size:.85rem;font-weight:600;color:var(--color-text)}.id-radio-card__sub{font-size:.72rem;color:var(--color-text-muted);margin-top:2px}.id-quota-mini{font-size:.7rem;font-weight:700;padding:2px 7px;border-radius:999px;background:var(--color-bg);border:1px solid var(--color-border);color:var(--color-text-muted)}.id-quota-mini--warn{background:#fef3c7;border-color:#fbbf24;color:#92400e}.id-quota-mini--crit{background:#fee2e2;border-color:#fca5a5;color:#991b1b}.id-fetch-results{display:flex;flex-direction:column;gap:.35rem}.id-fetch-result{display:flex;align-items:center;gap:.6rem;padding:.5rem .75rem;border-radius:8px;font-size:.8rem}.id-fetch-result--ok{background:#d1fae5;color:#065f46;border:1px solid #6ee7b7}.id-fetch-result--fail{background:#fee2e2;color:#991b1b;border:1px solid #fca5a5}.id-fetch-result__text{font-weight:600}.id-fetch-result__err{color:inherit;opacity:.75;font-size:.75rem}.id-manual-grid{display:grid;grid-template-columns:1fr 1fr;gap:.75rem}.id-toggle-row{display:flex;gap:.5rem}.id-toggle-opt{padding:.35rem 1rem;border:1.5px solid var(--color-border);border-radius:999px;cursor:pointer;font-size:.8rem;font-weight:600;transition:border-color .15s,background .15s,color .15s;color:var(--color-text-muted)}.id-toggle-opt--on{border-color:var(--color-accent);background:#fde8ea;color:var(--color-accent)}.id-hint{font-size:.8rem;color:var(--color-text-muted);padding:.5rem 0}.id-hint a{color:var(--color-accent);text-decoration:underline}.id-snap-summary-strip{display:flex;gap:1rem;flex-wrap:wrap;padding:.875rem 1.5rem;background:var(--color-card-bg);border-bottom:1px solid var(--color-border)}.id-ss-item{display:flex;flex-direction:column;gap:2px}.id-ss-item__val{font-size:1.1rem;font-weight:700;font-variant-numeric:tabular-nums}.id-ss-item__lbl{font-size:.7rem;color:var(--color-text-muted)}.id-raw-pre{font-size:.72rem;white-space:pre-wrap;word-break:break-all;padding:1rem 1.5rem;font-family:monospace;color:var(--color-text);flex:1}
3
+ `],encapsulation:3,changeDetection:0})}};export{_e as BloomsInfluencerDetailComponent};
@@ -0,0 +1,2 @@
1
+ import{B as v,Bb as Te,C as A,D as m,E as le,G as ue,H as he,P as fe,R as pe,T as ye,a as W,d as Y,g as oe,h as Q,j,o as ie,ob as me,q as ae,r as ce,u as de,x as N,yb as ge,z as O}from"./chunk-WQW7QCHM.js";var D=class{},k=class{},g=class n{headers;normalizedNames=new Map;lazyInit;lazyUpdate=null;constructor(e){e?typeof e=="string"?this.lazyInit=()=>{this.headers=new Map,e.split(`
2
+ `).forEach(t=>{let r=t.indexOf(":");if(r>0){let s=t.slice(0,r),i=t.slice(r+1).trim();this.addHeaderEntry(s,i)}})}:typeof Headers<"u"&&e instanceof Headers?(this.headers=new Map,e.forEach((t,r)=>{this.addHeaderEntry(r,t)})):this.lazyInit=()=>{this.headers=new Map,Object.entries(e).forEach(([t,r])=>{this.setHeaderEntries(t,r)})}:this.headers=new Map}has(e){return this.init(),this.headers.has(e.toLowerCase())}get(e){this.init();let t=this.headers.get(e.toLowerCase());return t&&t.length>0?t[0]:null}keys(){return this.init(),Array.from(this.normalizedNames.values())}getAll(e){return this.init(),this.headers.get(e.toLowerCase())||null}append(e,t){return this.clone({name:e,value:t,op:"a"})}set(e,t){return this.clone({name:e,value:t,op:"s"})}delete(e,t){return this.clone({name:e,value:t,op:"d"})}maybeSetNormalizedName(e,t){this.normalizedNames.has(t)||this.normalizedNames.set(t,e)}init(){this.lazyInit&&(this.lazyInit instanceof n?this.copyFrom(this.lazyInit):this.lazyInit(),this.lazyInit=null,this.lazyUpdate&&(this.lazyUpdate.forEach(e=>this.applyUpdate(e)),this.lazyUpdate=null))}copyFrom(e){e.init(),Array.from(e.headers.keys()).forEach(t=>{this.headers.set(t,e.headers.get(t)),this.normalizedNames.set(t,e.normalizedNames.get(t))})}clone(e){let t=new n;return t.lazyInit=this.lazyInit&&this.lazyInit instanceof n?this.lazyInit:this,t.lazyUpdate=(this.lazyUpdate||[]).concat([e]),t}applyUpdate(e){let t=e.name.toLowerCase();switch(e.op){case"a":case"s":let r=e.value;if(typeof r=="string"&&(r=[r]),r.length===0)return;this.maybeSetNormalizedName(e.name,t);let s=(e.op==="a"?this.headers.get(t):void 0)||[];s.push(...r),this.headers.set(t,s);break;case"d":let i=e.value;if(!i)this.headers.delete(t),this.normalizedNames.delete(t);else{let o=this.headers.get(t);if(!o)return;o=o.filter(l=>i.indexOf(l)===-1),o.length===0?(this.headers.delete(t),this.normalizedNames.delete(t)):this.headers.set(t,o)}break}}addHeaderEntry(e,t){let r=e.toLowerCase();this.maybeSetNormalizedName(e,r),this.headers.has(r)?this.headers.get(r).push(t):this.headers.set(r,[t])}setHeaderEntries(e,t){let r=(Array.isArray(t)?t:[t]).map(i=>i.toString()),s=e.toLowerCase();this.headers.set(s,r),this.maybeSetNormalizedName(e,s)}forEach(e){this.init(),Array.from(this.normalizedNames.keys()).forEach(t=>e(this.normalizedNames.get(t),this.headers.get(t)))}};var X=class{encodeKey(e){return Ee(e)}encodeValue(e){return Ee(e)}decodeKey(e){return decodeURIComponent(e)}decodeValue(e){return decodeURIComponent(e)}};function Fe(n,e){let t=new Map;return n.length>0&&n.replace(/^\?/,"").split("&").forEach(s=>{let i=s.indexOf("="),[o,l]=i==-1?[e.decodeKey(s),""]:[e.decodeKey(s.slice(0,i)),e.decodeValue(s.slice(i+1))],a=t.get(o)||[];a.push(l),t.set(o,a)}),t}var Le=/%(\d[a-f0-9])/gi,je={40:"@","3A":":",24:"$","2C":",","3B":";","3D":"=","3F":"?","2F":"/"};function Ee(n){return encodeURIComponent(n).replace(Le,(e,t)=>je[t]??e)}function S(n){return`${n}`}var E=class n{map;encoder;updates=null;cloneFrom=null;constructor(e={}){if(this.encoder=e.encoder||new X,e.fromString){if(e.fromObject)throw new N(2805,!1);this.map=Fe(e.fromString,this.encoder)}else e.fromObject?(this.map=new Map,Object.keys(e.fromObject).forEach(t=>{let r=e.fromObject[t],s=Array.isArray(r)?r.map(S):[S(r)];this.map.set(t,s)})):this.map=null}has(e){return this.init(),this.map.has(e)}get(e){this.init();let t=this.map.get(e);return t?t[0]:null}getAll(e){return this.init(),this.map.get(e)||null}keys(){return this.init(),Array.from(this.map.keys())}append(e,t){return this.clone({param:e,value:t,op:"a"})}appendAll(e){let t=[];return Object.keys(e).forEach(r=>{let s=e[r];Array.isArray(s)?s.forEach(i=>{t.push({param:r,value:i,op:"a"})}):t.push({param:r,value:s,op:"a"})}),this.clone(t)}set(e,t){return this.clone({param:e,value:t,op:"s"})}delete(e,t){return this.clone({param:e,value:t,op:"d"})}toString(){return this.init(),this.keys().map(e=>{let t=this.encoder.encodeKey(e);return this.map.get(e).map(r=>t+"="+this.encoder.encodeValue(r)).join("&")}).filter(e=>e!=="").join("&")}clone(e){let t=new n({encoder:this.encoder});return t.cloneFrom=this.cloneFrom||this,t.updates=(this.updates||[]).concat(e),t}init(){this.map===null&&(this.map=new Map),this.cloneFrom!==null&&(this.cloneFrom.init(),this.cloneFrom.keys().forEach(e=>this.map.set(e,this.cloneFrom.map.get(e))),this.updates.forEach(e=>{switch(e.op){case"a":case"s":let t=(e.op==="a"?this.map.get(e.param):void 0)||[];t.push(S(e.value)),this.map.set(e.param,t);break;case"d":if(e.value!==void 0){let r=this.map.get(e.param)||[],s=r.indexOf(S(e.value));s!==-1&&r.splice(s,1),r.length>0?this.map.set(e.param,r):this.map.delete(e.param)}else{this.map.delete(e.param);break}}}),this.cloneFrom=this.updates=null)}};var J=class{map=new Map;set(e,t){return this.map.set(e,t),this}get(e){return this.map.has(e)||this.map.set(e,e.defaultValue()),this.map.get(e)}delete(e){return this.map.delete(e),this}has(e){return this.map.has(e)}keys(){return this.map.keys()}};function Ue(n){switch(n){case"DELETE":case"GET":case"HEAD":case"OPTIONS":case"JSONP":return!1;default:return!0}}function Re(n){return typeof ArrayBuffer<"u"&&n instanceof ArrayBuffer}function we(n){return typeof Blob<"u"&&n instanceof Blob}function ve(n){return typeof FormData<"u"&&n instanceof FormData}function Ce(n){return typeof URLSearchParams<"u"&&n instanceof URLSearchParams}var U="Content-Type",V="Accept",ne="X-Request-URL",Pe="text/plain",Ne="application/json",Ae=`${Ne}, ${Pe}, */*`,_=class n{url;body=null;headers;context;reportProgress=!1;withCredentials=!1;responseType="json";method;params;urlWithParams;transferCache;constructor(e,t,r,s){this.url=t,this.method=e.toUpperCase();let i;if(Ue(this.method)||s?(this.body=r!==void 0?r:null,i=s):i=r,i&&(this.reportProgress=!!i.reportProgress,this.withCredentials=!!i.withCredentials,i.responseType&&(this.responseType=i.responseType),i.headers&&(this.headers=i.headers),i.context&&(this.context=i.context),i.params&&(this.params=i.params),this.transferCache=i.transferCache),this.headers??=new g,this.context??=new J,!this.params)this.params=new E,this.urlWithParams=t;else{let o=this.params.toString();if(o.length===0)this.urlWithParams=t;else{let l=t.indexOf("?"),a=l===-1?"?":l<t.length-1?"&":"";this.urlWithParams=t+a+o}}}serializeBody(){return this.body===null?null:typeof this.body=="string"||Re(this.body)||we(this.body)||ve(this.body)||Ce(this.body)?this.body:this.body instanceof E?this.body.toString():typeof this.body=="object"||typeof this.body=="boolean"||Array.isArray(this.body)?JSON.stringify(this.body):this.body.toString()}detectContentTypeHeader(){return this.body===null||ve(this.body)?null:we(this.body)?this.body.type||null:Re(this.body)?null:typeof this.body=="string"?Pe:this.body instanceof E?"application/x-www-form-urlencoded;charset=UTF-8":typeof this.body=="object"||typeof this.body=="number"||typeof this.body=="boolean"?Ne:null}clone(e={}){let t=e.method||this.method,r=e.url||this.url,s=e.responseType||this.responseType,i=e.transferCache??this.transferCache,o=e.body!==void 0?e.body:this.body,l=e.withCredentials??this.withCredentials,a=e.reportProgress??this.reportProgress,f=e.headers||this.headers,p=e.params||this.params,y=e.context??this.context;return e.setHeaders!==void 0&&(f=Object.keys(e.setHeaders).reduce((b,u)=>b.set(u,e.setHeaders[u]),f)),e.setParams&&(p=Object.keys(e.setParams).reduce((b,u)=>b.set(u,e.setParams[u]),p)),new n(t,r,o,{params:p,headers:f,context:y,reportProgress:a,responseType:s,withCredentials:l,transferCache:i})}},R=function(n){return n[n.Sent=0]="Sent",n[n.UploadProgress=1]="UploadProgress",n[n.ResponseHeader=2]="ResponseHeader",n[n.DownloadProgress=3]="DownloadProgress",n[n.Response=4]="Response",n[n.User=5]="User",n}(R||{}),x=class{headers;status;statusText;url;ok;type;constructor(e,t=200,r="OK"){this.headers=e.headers||new g,this.status=e.status!==void 0?e.status:t,this.statusText=e.statusText||r,this.url=e.url||null,this.ok=this.status>=200&&this.status<300}},C=class n extends x{constructor(e={}){super(e)}type=R.ResponseHeader;clone(e={}){return new n({headers:e.headers||this.headers,status:e.status!==void 0?e.status:this.status,statusText:e.statusText||this.statusText,url:e.url||this.url||void 0})}},F=class n extends x{body;constructor(e={}){super(e),this.body=e.body!==void 0?e.body:null}type=R.Response;clone(e={}){return new n({body:e.body!==void 0?e.body:this.body,headers:e.headers||this.headers,status:e.status!==void 0?e.status:this.status,statusText:e.statusText||this.statusText,url:e.url||this.url||void 0})}},T=class extends x{name="HttpErrorResponse";message;error;ok=!1;constructor(e){super(e,0,"Unknown Error"),this.status>=200&&this.status<300?this.message=`Http failure during parsing for ${e.url||"(unknown url)"}`:this.message=`Http failure response for ${e.url||"(unknown url)"}: ${e.status} ${e.statusText}`,this.error=e.error||null}},Me=200,Be=204;function Z(n,e){return{body:e,headers:n.headers,context:n.context,observe:n.observe,params:n.params,reportProgress:n.reportProgress,responseType:n.responseType,withCredentials:n.withCredentials,transferCache:n.transferCache}}var Ie=(()=>{class n{handler;constructor(t){this.handler=t}request(t,r,s={}){let i;if(t instanceof _)i=t;else{let a;s.headers instanceof g?a=s.headers:a=new g(s.headers);let f;s.params&&(s.params instanceof E?f=s.params:f=new E({fromObject:s.params})),i=new _(t,r,s.body!==void 0?s.body:null,{headers:a,context:s.context,params:f,reportProgress:s.reportProgress,responseType:s.responseType||"json",withCredentials:s.withCredentials,transferCache:s.transferCache})}let o=Q(i).pipe(ae(a=>this.handler.handle(a)));if(t instanceof _||s.observe==="events")return o;let l=o.pipe(ie(a=>a instanceof F));switch(s.observe||"body"){case"body":switch(i.responseType){case"arraybuffer":return l.pipe(j(a=>{if(a.body!==null&&!(a.body instanceof ArrayBuffer))throw new N(2806,!1);return a.body}));case"blob":return l.pipe(j(a=>{if(a.body!==null&&!(a.body instanceof Blob))throw new N(2807,!1);return a.body}));case"text":return l.pipe(j(a=>{if(a.body!==null&&typeof a.body!="string")throw new N(2808,!1);return a.body}));case"json":default:return l.pipe(j(a=>a.body))}case"response":return l;default:throw new N(2809,!1)}}delete(t,r={}){return this.request("DELETE",t,r)}get(t,r={}){return this.request("GET",t,r)}head(t,r={}){return this.request("HEAD",t,r)}jsonp(t,r){return this.request("JSONP",t,{params:new E().append(r,"JSONP_CALLBACK"),observe:"body",responseType:"json"})}options(t,r={}){return this.request("OPTIONS",t,r)}patch(t,r,s={}){return this.request("PATCH",t,Z(s,r))}post(t,r,s={}){return this.request("POST",t,Z(s,r))}put(t,r,s={}){return this.request("PUT",t,Z(s,r))}static \u0275fac=function(r){return new(r||n)(A(D))};static \u0275prov=O({token:n,factory:n.\u0275fac})}return n})(),Se=/^\)\]\}',?\n/;function be(n){if(n.url)return n.url;let e=ne.toLocaleLowerCase();return n.headers.get(e)}var Oe=new v(""),z=(()=>{class n{fetchImpl=m(H,{optional:!0})?.fetch??((...t)=>globalThis.fetch(...t));ngZone=m(ye);destroyRef=m(fe);destroyed=!1;constructor(){this.destroyRef.onDestroy(()=>{this.destroyed=!0})}handle(t){return new Y(r=>{let s=new AbortController;return this.doRequest(t,s.signal,r).then(ee,i=>r.error(new T({error:i}))),()=>s.abort()})}async doRequest(t,r,s){let i=this.createRequestInit(t),o;try{let u=this.ngZone.runOutsideAngular(()=>this.fetchImpl(t.urlWithParams,W({signal:r},i)));ze(u),s.next({type:R.Sent}),o=await u}catch(u){s.error(new T({error:u,status:u.status??0,statusText:u.statusText,url:t.urlWithParams,headers:u.headers}));return}let l=new g(o.headers),a=o.statusText,f=be(o)??t.urlWithParams,p=o.status,y=null;if(t.reportProgress&&s.next(new C({headers:l,status:p,statusText:a,url:f})),o.body){let u=o.headers.get("content-length"),L=[],c=o.body.getReader(),d=0,w,M,h=typeof Zone<"u"&&Zone.current,I=!1;if(await this.ngZone.runOutsideAngular(async()=>{for(;;){if(this.destroyed){await c.cancel(),I=!0;break}let{done:P,value:K}=await c.read();if(P)break;if(L.push(K),d+=K.length,t.reportProgress){M=t.responseType==="text"?(M??"")+(w??=new TextDecoder).decode(K,{stream:!0}):void 0;let se=()=>s.next({type:R.DownloadProgress,total:u?+u:void 0,loaded:d,partialText:M});h?h.run(se):se()}}}),I){s.complete();return}let q=this.concatChunks(L,d);try{let P=o.headers.get(U)??"";y=this.parseBody(t,q,P)}catch(P){s.error(new T({error:P,headers:new g(o.headers),status:o.status,statusText:o.statusText,url:be(o)??t.urlWithParams}));return}}p===0&&(p=y?Me:0),p>=200&&p<300?(s.next(new F({body:y,headers:l,status:p,statusText:a,url:f})),s.complete()):s.error(new T({error:y,headers:l,status:p,statusText:a,url:f}))}parseBody(t,r,s){switch(t.responseType){case"json":let i=new TextDecoder().decode(r).replace(Se,"");return i===""?null:JSON.parse(i);case"text":return new TextDecoder().decode(r);case"blob":return new Blob([r],{type:s});case"arraybuffer":return r.buffer}}createRequestInit(t){let r={},s=t.withCredentials?"include":void 0;if(t.headers.forEach((i,o)=>r[i]=o.join(",")),t.headers.has(V)||(r[V]=Ae),!t.headers.has(U)){let i=t.detectContentTypeHeader();i!==null&&(r[U]=i)}return{body:t.serializeBody(),method:t.method,headers:r,credentials:s}}concatChunks(t,r){let s=new Uint8Array(r),i=0;for(let o of t)s.set(o,i),i+=o.length;return s}static \u0275fac=function(r){return new(r||n)};static \u0275prov=O({token:n,factory:n.\u0275fac})}return n})(),H=class{};function ee(){}function ze(n){n.then(ee,ee)}function Xe(n,e){return e(n)}function Je(n,e,t){return(r,s)=>he(t,()=>e(r,i=>n(i,s)))}var re=new v(""),_e=new v(""),De=new v("",{providedIn:"root",factory:()=>!0});var $=(()=>{class n extends D{backend;injector;chain=null;pendingTasks=m(pe);contributeToStability=m(De);constructor(t,r){super(),this.backend=t,this.injector=r}handle(t){if(this.chain===null){let r=Array.from(new Set([...this.injector.get(re),...this.injector.get(_e,[])]));this.chain=r.reduceRight((s,i)=>Je(s,i,this.injector),Xe)}if(this.contributeToStability){let r=this.pendingTasks.add();return this.chain(t,s=>this.backend.handle(s)).pipe(ce(()=>this.pendingTasks.remove(r)))}else return this.chain(t,r=>this.backend.handle(r))}static \u0275fac=function(r){return new(r||n)(A(k),A(ue))};static \u0275prov=O({token:n,factory:n.\u0275fac})}return n})();var Ve=/^\)\]\}',?\n/,$e=RegExp(`^${ne}:`,"m");function Ge(n){return"responseURL"in n&&n.responseURL?n.responseURL:$e.test(n.getAllResponseHeaders())?n.getResponseHeader(ne):null}var te=(()=>{class n{xhrFactory;constructor(t){this.xhrFactory=t}handle(t){if(t.method==="JSONP")throw new N(-2800,!1);let r=this.xhrFactory;return(r.\u0275loadImpl?oe(r.\u0275loadImpl()):Q(null)).pipe(de(()=>new Y(i=>{let o=r.build();if(o.open(t.method,t.urlWithParams),t.withCredentials&&(o.withCredentials=!0),t.headers.forEach((c,d)=>o.setRequestHeader(c,d.join(","))),t.headers.has(V)||o.setRequestHeader(V,Ae),!t.headers.has(U)){let c=t.detectContentTypeHeader();c!==null&&o.setRequestHeader(U,c)}if(t.responseType){let c=t.responseType.toLowerCase();o.responseType=c!=="json"?c:"text"}let l=t.serializeBody(),a=null,f=()=>{if(a!==null)return a;let c=o.statusText||"OK",d=new g(o.getAllResponseHeaders()),w=Ge(o)||t.url;return a=new C({headers:d,status:o.status,statusText:c,url:w}),a},p=()=>{let{headers:c,status:d,statusText:w,url:M}=f(),h=null;d!==Be&&(h=typeof o.response>"u"?o.responseText:o.response),d===0&&(d=h?Me:0);let I=d>=200&&d<300;if(t.responseType==="json"&&typeof h=="string"){let q=h;h=h.replace(Ve,"");try{h=h!==""?JSON.parse(h):null}catch(P){h=q,I&&(I=!1,h={error:P,text:h})}}I?(i.next(new F({body:h,headers:c,status:d,statusText:w,url:M||void 0})),i.complete()):i.error(new T({error:h,headers:c,status:d,statusText:w,url:M||void 0}))},y=c=>{let{url:d}=f(),w=new T({error:c,status:o.status||0,statusText:o.statusText||"Unknown Error",url:d||void 0});i.error(w)},b=!1,u=c=>{b||(i.next(f()),b=!0);let d={type:R.DownloadProgress,loaded:c.loaded};c.lengthComputable&&(d.total=c.total),t.responseType==="text"&&o.responseText&&(d.partialText=o.responseText),i.next(d)},L=c=>{let d={type:R.UploadProgress,loaded:c.loaded};c.lengthComputable&&(d.total=c.total),i.next(d)};return o.addEventListener("load",p),o.addEventListener("error",y),o.addEventListener("timeout",y),o.addEventListener("abort",y),t.reportProgress&&(o.addEventListener("progress",u),l!==null&&o.upload&&o.upload.addEventListener("progress",L)),o.send(l),i.next({type:R.Sent}),()=>{o.removeEventListener("error",y),o.removeEventListener("abort",y),o.removeEventListener("load",p),o.removeEventListener("timeout",y),t.reportProgress&&(o.removeEventListener("progress",u),l!==null&&o.upload&&o.upload.removeEventListener("progress",L)),o.readyState!==o.DONE&&o.abort()}})))}static \u0275fac=function(r){return new(r||n)(A(Te))};static \u0275prov=O({token:n,factory:n.\u0275fac})}return n})(),ke=new v(""),qe="XSRF-TOKEN",Ke=new v("",{providedIn:"root",factory:()=>qe}),We="X-XSRF-TOKEN",Ye=new v("",{providedIn:"root",factory:()=>We}),B=class{},Qe=(()=>{class n{doc;cookieName;lastCookieString="";lastToken=null;parseCount=0;constructor(t,r){this.doc=t,this.cookieName=r}getToken(){let t=this.doc.cookie||"";return t!==this.lastCookieString&&(this.parseCount++,this.lastToken=ge(t,this.cookieName),this.lastCookieString=t),this.lastToken}static \u0275fac=function(r){return new(r||n)(A(me),A(Ke))};static \u0275prov=O({token:n,factory:n.\u0275fac})}return n})(),Ze=/^(?:https?:)?\/\//i;function He(n,e){if(!m(ke)||n.method==="GET"||n.method==="HEAD"||Ze.test(n.url))return e(n);let t=m(B).getToken(),r=m(Ye);return t!=null&&!n.headers.has(r)&&(n=n.clone({headers:n.headers.set(r,t)})),e(n)}var G=function(n){return n[n.Interceptors=0]="Interceptors",n[n.LegacyInterceptors=1]="LegacyInterceptors",n[n.CustomXsrfConfiguration=2]="CustomXsrfConfiguration",n[n.NoXsrfProtection=3]="NoXsrfProtection",n[n.JsonpSupport=4]="JsonpSupport",n[n.RequestsMadeViaParent=5]="RequestsMadeViaParent",n[n.Fetch=6]="Fetch",n}(G||{});function xe(n,e){return{\u0275kind:n,\u0275providers:e}}function et(...n){let e=[Ie,te,$,{provide:D,useExisting:$},{provide:k,useFactory:()=>m(Oe,{optional:!0})??m(te)},{provide:re,useValue:He,multi:!0},{provide:ke,useValue:!0},{provide:B,useClass:Qe}];for(let t of n)e.push(...t.\u0275providers);return le(e)}function tt(n){return xe(G.Interceptors,n.map(e=>({provide:re,useValue:e,multi:!0})))}function nt(){return xe(G.Fetch,[z,{provide:Oe,useExisting:z},{provide:k,useExisting:z}])}export{E as a,T as b,Ie as c,et as d,tt as e,nt as f};
@@ -0,0 +1 @@
1
+ import{c as y}from"./chunk-SPLW6L45.js";import{Aa as d,D as s,W as a,a as l,b as m,nb as o,z as f}from"./chunk-WQW7QCHM.js";function b(n){let r=typeof n=="string"&&n.length>0&&n!=="null"&&n!=="undefined";return r||console.error(`[CurrencyService] rejecting invalid projectId: ${JSON.stringify(n)}`,new Error().stack),r}var c=class n{constructor(){this.http=s(y);this._currencyByProject=a({});this._currentProjectId=a(null);this.current=o(()=>{let r=this._currentProjectId();return r?this._currencyByProject()[r]??{code:"USD",symbol:"$"}:{code:"USD",symbol:"$"}});this.symbol=o(()=>this.current().symbol);this.code=o(()=>this.current().code)}load(r){b(r)&&(this._currentProjectId.set(r),!this._currencyByProject()[r]&&this.http.get(`/api/projects/${r}/currency`).subscribe({next:t=>{let e=t.data?.resolved;e?.code&&this._currencyByProject.update(i=>m(l({},i),{[r]:{code:e.code,symbol:e.symbol}}))},error:()=>{}}))}setProject(r){b(r)&&(this._currentProjectId.set(r),this._currencyByProject()[r]||this.load(r))}format(r,t=2){if(r==null||!isFinite(r))return"\u2014";let{symbol:e}=this.current(),u=Math.abs(r).toLocaleString("en-US",{minimumFractionDigits:t,maximumFractionDigits:t});return`${r<0?"-":""}${e}${u}`}formatCompact(r){if(r==null||!isFinite(r))return"\u2014";let{symbol:t}=this.current(),e=Math.abs(r),i=r<0?"-":"";return e>=1e6?`${i}${t}${(e/1e6).toFixed(1)}M`:e>=1e3?`${i}${t}${(e/1e3).toFixed(1)}K`:`${i}${t}${e.toFixed(0)}`}formatDelta(r,t=2){if(r==null||!isFinite(r))return"\u2014";if(r===0)return`\xB1${this.current().symbol}0`;let e=r>0?"+":"-",u=Math.abs(r).toLocaleString("en-US",{minimumFractionDigits:t,maximumFractionDigits:t});return`${e}${this.current().symbol}${u}`}formatMicros(r,t=2){return r==null?"\u2014":this.format(r/1e6,t)}static{this.\u0275fac=function(t){return new(t||n)}}static{this.\u0275prov=f({token:n,factory:n.\u0275fac,providedIn:"root"})}};var p=class n{constructor(){this.currency=s(c)}transform(r,t=2,e="normal"){switch(e){case"compact":return this.currency.formatCompact(r);case"delta":return this.currency.formatDelta(r,t);case"micros":return this.currency.formatMicros(r,t);default:return this.currency.format(r,t)}}static{this.\u0275fac=function(t){return new(t||n)}}static{this.\u0275pipe=d({name:"appCurrency",type:n,pure:!1})}};export{p as a};
@@ -0,0 +1,3 @@
1
+ import{a as ie}from"./chunk-EA7SZINY.js";import{a as re}from"./chunk-OBI6OSSF.js";import{c as q,e as G,f as Y,g as Q,h as X,i as Z,p as ee,s as te}from"./chunk-VQEBAAHK.js";import{a as oe}from"./chunk-HLIQJSA7.js";import"./chunk-SPLW6L45.js";import{$a as H,Ca as _,Cb as I,D as P,Ga as b,Ha as j,Ia as S,J as x,Ja as $,K as h,La as m,Na as A,Oa as D,Pa as F,Qa as l,Ra as n,S as B,Sa as R,Ta as v,Ua as g,V,Va as c,W as f,Wa as s,Xa as w,Ya as u,Za as k,a as U,ab as N,b as z,bb as O,db as K,eb as E,gb as T,na as M,nb as C,pa as a,tb as J,xa as L,xb as W}from"./chunk-WQW7QCHM.js";var ne=()=>["running","pending"],le=(i,t)=>t._id;function se(i,t){if(i&1){let e=v();l(0,"span",13)(1,"button",14),g("click",function(){let o=x(e).$implicit,d=c(2);return h(d.useSavedUrl(o))}),s(2),n(),l(3,"button",15),g("click",function(){let o=x(e).$implicit,d=c(2);return h(d.deleteSavedUrl(o))}),s(4,"\u2715"),n()()}if(i&2){let e=t.$implicit;a(),b("appTooltip",e),a(),w(e)}}function ce(i,t){if(i&1&&(l(0,"div",7)(1,"span",12),s(2,"Recent:"),n(),D(3,se,5,2,"span",13,A),n()),i&2){let e=c();a(3),F(e.savedUrls())}}function de(i,t){if(i&1&&(l(0,"p",8),s(1),n()),i&2){let e=c();a(),w(e.formError())}}function pe(i,t){if(i&1&&s(0),i&2){let e,r=c(2);k(" Paused \u2014 ",r.activeCrawl().totalUrlsCrawled," / ",(e=(e=r.activeCrawl().sitemapData)==null?null:e.totalUrls)!==null&&e!==void 0?e:"?"," pages crawled ")}}function me(i,t){i&1&&s(0," Fetching sitemap structure\u2026 ")}function ue(i,t){if(i&1&&s(0),i&2){let e=c(2);k(" Crawling ",e.activeCrawl().totalUrlsCrawled," / ",e.activeCrawl().sitemapData.totalUrls," pages ")}}function _e(i,t){i&1&&s(0," Crawling pages\u2026 ")}function fe(i,t){if(i&1){let e=v();l(0,"button",30),g("click",function(){x(e);let o=c(2);return h(o.resumeActiveCrawl())}),s(1,"\u25B6 Resume"),n()}}function ge(i,t){i&1&&(l(0,"button",22),s(1,"\u23F3 Pausing\u2026"),n())}function xe(i,t){if(i&1){let e=v();l(0,"button",31),g("click",function(){x(e);let o=c(2);return h(o.pauseCrawl())}),s(1,"\u23F8 Pause"),n()}}function he(i,t){i&1&&(l(0,"p",25),s(1," The crawl is paused. Pages crawled so far are saved. Click Resume to continue. "),n())}function be(i,t){if(i&1&&(l(0,"p",26),s(1),n()),i&2){let e=c(2);a(),k(" Sitemap index \u2014 ",e.activeCrawl().sitemapData.childSitemaps.length," child sitemaps, ",e.activeCrawl().sitemapData.totalUrls," total URLs ")}}function ve(i,t){if(i&1&&(l(0,"div",27)(1,"span",32),s(2,"Sitemap:"),n(),l(3,"span",33),s(4),n()()),i&2){let e=c(2);a(4),w(e.currentSitemapLabel()||e.activeCrawl().currentSitemapSource)}}function we(i,t){if(i&1&&(l(0,"div",27)(1,"span",32),s(2,"Fetching:"),n(),l(3,"a",34),s(4),n()()),i&2){let e=c(2);a(3),b("href",e.activeCrawl().currentUrl,M),a(),u(" ",e.activeCrawl().currentUrl," ")}}function Ce(i,t){if(i&1){let e=v();l(0,"div",16)(1,"div",17)(2,"span",18),_(3,pe,1,2)(4,me,1,0)(5,ue,1,2)(6,_e,1,0),n(),l(7,"div",19)(8,"span",20),s(9),n(),_(10,fe,2,0,"button",21)(11,ge,2,0,"button",22)(12,xe,2,0,"button",23),l(13,"button",24),g("click",function(){x(e);let o=c();return h(o.stopCrawl())}),s(14,"\u25FC Stop"),n()()(),_(15,he,2,0,"p",25)(16,be,2,2,"p",26)(17,ve,5,1,"div",27)(18,we,5,2,"div",27),l(19,"div",28),R(20,"div",29),n()()}if(i&2){let e,r,o,d,y,p=c();S("crawl-progress--paused",p.isPaused()),a(3),m(p.isPaused()?3:((e=p.activeCrawl())==null?null:e.status)==="pending"?4:!((e=p.activeCrawl())==null||e.sitemapData==null)&&e.sitemapData.totalUrls?5:6),a(6),u("",p.progressPct(),"%"),a(),m(p.isPaused()?10:p.pausing()?11:p.isRunning()?12:-1),a(5),m(p.isPaused()?15:-1),a(),m(!((r=p.activeCrawl())==null||r.sitemapData==null)&&r.sitemapData.isSitemapIndex?16:-1),a(),m(!p.isPaused()&&((o=p.activeCrawl())!=null&&o.currentSitemapSource)?17:-1),a(),m(!p.isPaused()&&((d=p.activeCrawl())!=null&&d.currentUrl)?18:-1),a(2),j("width",p.progressPct(),"%"),S("indeterminate",((y=p.activeCrawl())==null?null:y.status)==="pending")("paused-fill",p.isPaused())}}function ye(i,t){i&1&&R(0,"app-loading-spinner")}function Se(i,t){if(i&1&&(l(0,"span",43),s(1),n()),i&2){let e=t;b("appTooltip",e.full),a(),w(e.short)}}function ke(i,t){if(i&1&&(l(0,"span",53),s(1),n()),i&2){let e=c(2).$implicit;a(),u("\u2717 ",e.summary.brokenLinks,"")}}function Ie(i,t){if(i&1&&(l(0,"span",44)(1,"span",52),s(2),n(),_(3,ke,2,1,"span",53),n()),i&2){let e=c().$implicit;a(2),u("\u2713 ",e.totalUrlsCrawled-e.summary.brokenLinks,""),a(),m(e.summary.brokenLinks>0?3:-1)}}function Ee(i,t){if(i&1&&(l(0,"span",54),s(1),n()),i&2){let e=c().$implicit;S("health-chip--good",e.summary.healthScore>=80)("health-chip--ok",e.summary.healthScore>=50&&e.summary.healthScore<80)("health-chip--bad",e.summary.healthScore<50),a(),u(" ",e.summary.healthScore,"/100 ")}}function Te(i,t){if(i&1&&(s(0),E(1,"date")),i&2){let e=c().$implicit;u(" ",T(1,1,e.completedAt,"medium")," ")}}function Ue(i,t){if(i&1&&(s(0),E(1,"date")),i&2){let e=c().$implicit;u(" Paused ",T(1,1,e.pausedAt,"medium")," ")}}function Pe(i,t){if(i&1&&(s(0),E(1,"date")),i&2){let e=c().$implicit;u(" ",T(1,1,e.createdAt,"medium")," ")}}function Be(i,t){if(i&1){let e=v();l(0,"button",55),g("click",function(o){x(e);let d=c().$implicit,y=c(2);return h(y.resumeHistoryItem(o,d))}),s(1),n()}if(i&2){let e=c().$implicit,r=c(2);b("disabled",r.resumingId()===e._id),a(),u(" ",r.resumingId()===e._id?"\u23F3":"\u25B6 Resume"," ")}}function De(i,t){if(i&1){let e=v();l(0,"div",38),g("click",function(){let o=x(e).$implicit,d=c(2);return h(d.navigateToCrawl(o))}),l(1,"div",39)(2,"div",40),s(3),n(),l(4,"div",41)(5,"span",42),s(6),n(),_(7,Se,2,2,"span",43),l(8,"span"),s(9),n(),_(10,Ie,4,2,"span",44)(11,Ee,2,7,"span",45),n()(),l(12,"div",46)(13,"div",47),_(14,Te,2,4)(15,Ue,2,4)(16,Pe,2,4),n(),l(17,"div",48),_(18,Be,2,2,"button",49),l(19,"span",50),s(20,"View results \u2192"),n(),l(21,"button",51),g("click",function(o){let d=x(e).$implicit,y=c(2);return h(y.deleteHistoryItem(o,d._id))}),s(22),n()()()()}if(i&2){let e,r,o=t.$implicit,d=c(2);S("history-item--deleting",d.deletingId()===o._id),a(3),w(o.sitemapUrl),a(2),$("status-badge--"+o.status),a(),w(d.statusLabel(o)),a(),m((e=d.stopReasonChip(o))?7:-1,e),a(2),k("",o.totalUrlsCrawled," / ",(r=o.sitemapData==null?null:o.sitemapData.totalUrls)!==null&&r!==void 0?r:o.totalUrlsDiscovered," pages"),a(),m(o.summary?10:-1),a(),m((o.summary==null?null:o.summary.healthScore)!=null?11:-1),a(3),m(o.completedAt?14:o.pausedAt?15:16),a(4),m(d.canResumeItem(o)?18:-1),a(3),b("disabled",d.deletingId()===o._id||K(15,ne).includes(o.status)),a(),u(" ",d.deletingId()===o._id?"\u23F3":"\u{1F5D1}"," ")}}function Fe(i,t){if(i&1&&(l(0,"div",10)(1,"h3",35),s(2,"\u{1F550} Previous Sitemap Crawls"),n(),l(3,"div",36),D(4,De,23,16,"div",37,le),n()()),i&2){let e=c();a(4),F(e.history())}}function Re(i,t){i&1&&(l(0,"div",11)(1,"span"),s(2,"\u{1F5FA}\uFE0F"),n(),l(3,"p"),s(4,"No sitemap crawls yet. Enter a sitemap URL above to get started."),n()())}var ae=class i{constructor(){this.crawlService=P(ie);this.host=P(V);this.bloomsnavigate=new B;this.bloomserror=new B;this.sitemapUrl="";this.formError=f("");this.loading=f(!0);this.pausing=f(!1);this.activeCrawl=f(null);this.history=f([]);this.savedUrls=f([]);this.deletingId=f(null);this.resumingId=f(null);this._activeCrawlId=f(null);this.savedUrlsKey="";this.isPaused=C(()=>this.activeCrawl()?.status==="paused");this.isRunning=C(()=>this.activeCrawl()?.status==="running"||this.activeCrawl()?.status==="pending");this.isInProgress=C(()=>{let t=this.activeCrawl()?.status;return t==="pending"||t==="running"||t==="paused"});this.progressPct=C(()=>{let t=this.activeCrawl();if(!t||t.status==="pending")return 0;let e=t.sitemapData?.totalUrls;return e?Math.min(Math.round(t.totalUrlsCrawled/e*100),99):0});this.currentSitemapLabel=C(()=>{let t=this.activeCrawl();return!t?.currentSitemapSource||!t.sitemapData?.childSitemaps?"":t.sitemapData.childSitemaps.find(r=>r.url===t.currentSitemapSource)?.label??""});this.needsSignIn=C(()=>I.config()!==null&&I.session()===null)}statusLabel(t){return t.status==="failed"&&t.stopReason==="cancelled"?"cancelled":t.status}stopReasonChip(t){if(t.status!=="paused"&&t.status!=="failed")return null;let e={manual:"\u270B Paused manually",interrupted:"\u{1F50C} Server restarted",timeout:"\u23F1\uFE0F Stopped responding",cancelled:"\u{1F6AB} Cancelled",error:"\u26A0\uFE0F Error"},r=t.stopReason?e[t.stopReason]:t.status==="failed"?"\u26A0\uFE0F Failed":null;return r?{short:r,full:t.errorMessage||r}:null}canResumeItem(t){return(t.status==="paused"||t.status==="failed")&&t.crawlMode==="sitemap"&&(t.remainingUrls??0)>0}resumeHistoryItem(t,e){t.stopPropagation(),this.resumingId.set(e._id),this.formError.set(""),this.crawlService.resumeCrawl(e._id).subscribe({next:()=>{this.resumingId.set(null),this.beginPolling(e._id),this.loadHistory()},error:r=>{this.resumingId.set(null),this.formError.set(r?.error?.message||"Could not resume this crawl.")}})}get activeProjectId(){return this.projectId||I.project()?.id||""}announce(t){let e={feature:"sitemap-crawl",view:"detail",params:{crawlId:t}};this.bloomsnavigate.emit(e),I.emit(U({type:"navigate"},e))}ngOnInit(){this.savedUrlsKey=`blooms_sitemap_urls_${this.activeProjectId}`,this.loadSavedUrls(),this.checkForActiveCrawl(),this.loadHistory()}ngOnDestroy(){this.pollSub?.unsubscribe()}checkForActiveCrawl(){this.crawlService.getActiveSitemapCrawl(this.activeProjectId).subscribe({next:t=>{this.activeCrawl.set(t.data),this._activeCrawlId.set(t.data._id),(t.data.status==="running"||t.data.status==="pending")&&this.beginPolling(t.data._id)},error:()=>{}})}loadHistory(){this.crawlService.listSitemapHistory(this.activeProjectId).subscribe({next:t=>{this.history.set(t.data),this.loading.set(!1)},error:()=>{this.loading.set(!1)}})}startCrawl(){let t=this.sitemapUrl.trim();t&&(this.formError.set(""),this.persistSavedUrl(t),this.crawlService.startSitemapCrawl(this.activeProjectId,t).subscribe({next:e=>{let r={status:"pending",totalUrlsCrawled:0,crawlMode:"sitemap",_id:e.data.crawlId};this.activeCrawl.set(r),this.beginPolling(e.data.crawlId)},error:e=>{if(e.status===409&&e.error?.data?.crawlId){let r=e.error.data.crawlId;e.error.data.isPaused===!0?this.crawlService.get(r).subscribe({next:d=>{this.activeCrawl.set(d.data),this._activeCrawlId.set(r)},error:()=>{}}):(this.activeCrawl.set({status:"running",totalUrlsCrawled:0,crawlMode:"sitemap",_id:r}),this.beginPolling(r))}else this.formError.set(e.error?.message||"Failed to start crawl. Check the URL and try again.")}}))}pauseCrawl(){let t=this._activeCrawlId();t&&(this.pausing.set(!0),this.crawlService.pause(t).subscribe({error:()=>this.pausing.set(!1)}))}resumeActiveCrawl(){let t=this._activeCrawlId();t&&this.crawlService.resumeCrawl(t).subscribe({next:()=>{this.activeCrawl.update(e=>e&&z(U({},e),{status:"running"})),this.beginPolling(t)},error:e=>this.formError.set(e.error?.message||"Failed to resume crawl.")})}stopCrawl(){let t=this._activeCrawlId();t&&this.crawlService.cancel(t).subscribe({next:()=>{this.pollSub?.unsubscribe(),this.activeCrawl.set(null),this._activeCrawlId.set(null),this.formError.set(""),this.loadHistory()},error:()=>{}})}beginPolling(t){this._activeCrawlId.set(t),this.pollSub?.unsubscribe(),this.pollSub=this.crawlService.pollCrawl(t).subscribe({next:e=>{this.activeCrawl.set(e.data);let r=e.data.status;r==="completed"?(this.activeCrawl.set(null),this._activeCrawlId.set(null),this.loadHistory(),this.announce(t)):r==="failed"?(this.activeCrawl.set(null),this._activeCrawlId.set(null),e.data.stopReason!=="cancelled"&&this.formError.set((e.data.errorMessage||"Crawl failed. Please check the sitemap URL.")+" You can Resume it from the history below to continue where it stopped."),this.loadHistory()):r==="paused"&&this.pausing.set(!1)},error:()=>{this.activeCrawl.set(null),this._activeCrawlId.set(null)}})}navigateToCrawl(t){this.announce(String(t._id))}deleteHistoryItem(t,e){t.stopPropagation(),confirm("Delete this crawl result? This cannot be undone.")&&(this.deletingId.set(e),this.crawlService.delete(e).subscribe({next:()=>{this.history.update(r=>r.filter(o=>o._id!==e)),this.deletingId.set(null)},error:r=>{this.deletingId.set(null),alert(r.error?.message||"Failed to delete crawl result.")}}))}loadSavedUrls(){try{let t=localStorage.getItem(this.savedUrlsKey);this.savedUrls.set(t?JSON.parse(t):[])}catch{this.savedUrls.set([])}}persistSavedUrl(t){let e=[t,...this.savedUrls().filter(r=>r!==t)].slice(0,5);this.savedUrls.set(e);try{localStorage.setItem(this.savedUrlsKey,JSON.stringify(e))}catch{}}useSavedUrl(t){this.sitemapUrl=t}deleteSavedUrl(t){let e=this.savedUrls().filter(r=>r!==t);this.savedUrls.set(e);try{localStorage.setItem(this.savedUrlsKey,JSON.stringify(e))}catch{}}static{this.\u0275fac=function(e){return new(e||i)}}static{this.\u0275cmp=L({type:i,selectors:[["blooms-sitemap-crawl"]],inputs:{projectId:"projectId"},outputs:{bloomsnavigate:"bloomsnavigate",bloomserror:"bloomserror"},decls:16,vars:8,consts:[[1,"sitemap-page"],[1,"form-card"],[1,"form-card__title"],[1,"form-card__desc"],[1,"sitemap-form",3,"ngSubmit"],["type","url","name","sitemapUrl","placeholder","https://example.com/sitemap.xml","required","",1,"form-input","sitemap-form__input",3,"ngModelChange","ngModel","disabled"],["type","submit",1,"btn","btn-primary",3,"disabled"],[1,"saved-urls"],[1,"form-error"],[1,"crawl-progress",3,"crawl-progress--paused"],[1,"history-section"],[1,"history-empty"],[1,"saved-urls__label"],[1,"saved-url-chip"],["type","button",1,"saved-url-chip__btn",3,"click","appTooltip"],["type","button","appTooltip","Remove",1,"saved-url-chip__delete",3,"click"],[1,"crawl-progress"],[1,"crawl-progress__header"],[1,"crawl-progress__label"],[1,"crawl-progress__actions"],[1,"crawl-progress__pct"],[1,"btn-action","btn-resume"],["disabled","",1,"btn-action","btn-pause","btn-pause--loading"],[1,"btn-action","btn-pause"],[1,"btn-action","btn-stop",3,"click"],[1,"crawl-progress__paused-note"],[1,"crawl-progress__index-note"],[1,"crawl-progress__current"],[1,"crawl-progress__track"],[1,"crawl-progress__fill"],[1,"btn-action","btn-resume",3,"click"],[1,"btn-action","btn-pause",3,"click"],[1,"crawl-progress__current-label"],[1,"crawl-progress__current-value"],["target","_blank",1,"crawl-progress__current-url",3,"href"],[1,"history-section__title"],[1,"history-list"],[1,"history-item",3,"history-item--deleting"],[1,"history-item",3,"click"],[1,"history-item__left"],[1,"history-item__url"],[1,"history-item__meta"],[1,"status-badge"],[1,"reason-chip",3,"appTooltip"],[1,"history-item__counts"],[1,"health-chip",3,"health-chip--good","health-chip--ok","health-chip--bad"],[1,"history-item__right"],[1,"history-item__time"],[1,"history-item__actions"],["appTooltip","Resume from where it stopped \u2014 pages already crawled are kept",1,"history-resume-btn",3,"disabled"],[1,"history-item__view-hint"],["appTooltip","Delete this crawl result",1,"history-delete-btn",3,"click","disabled"],[1,"count-ok"],[1,"count-fail"],[1,"health-chip"],["appTooltip","Resume from where it stopped \u2014 pages already crawled are kept",1,"history-resume-btn",3,"click","disabled"]],template:function(e,r){e&1&&(l(0,"div",0)(1,"div",1)(2,"div",2),s(3,"\u{1F5FA}\uFE0F Crawl from Sitemap"),n(),l(4,"p",3),s(5," Provide a sitemap URL (or sitemap index) and the crawler will fetch and analyse every page listed. Sitemap indexes with multiple child sitemaps are fully supported. "),n(),l(6,"form",4),g("ngSubmit",function(){return r.startCrawl()}),l(7,"input",5),O("ngModelChange",function(d){return N(r.sitemapUrl,d)||(r.sitemapUrl=d),d}),n(),l(8,"button",6),s(9),n()(),_(10,ce,5,0,"div",7)(11,de,2,1,"p",8),n(),_(12,Ce,21,15,"div",9)(13,ye,1,0,"app-loading-spinner")(14,Fe,6,0,"div",10)(15,Re,5,0,"div",11),n()),e&2&&(a(7),H("ngModel",r.sitemapUrl),b("disabled",r.isInProgress()),a(),b("disabled",r.isInProgress()||!r.sitemapUrl.trim()),a(),u(" ",r.isInProgress()?"Crawl in progress\u2026":"\u2295 Start Sitemap Crawl"," "),a(),m(r.savedUrls().length>0&&!r.isInProgress()?10:-1),a(),m(r.formError()?11:-1),a(),m(r.isInProgress()?12:-1),a(),m(r.loading()?13:r.history().length>0?14:r.isInProgress()?-1:15))},dependencies:[W,J,te,Z,q,G,Y,ee,X,Q,re,oe],styles:[`@charset "UTF-8";:host{--color-text: var(--color-text, #5d5f71);--color-text-muted: var(--color-text-muted, #9395a5);--color-bg: var(--color-bg, #f7f5fb);--color-card-bg: var(--color-card-bg, #ffffff);--color-border: var(--color-border, #ede9f6);--color-hover: var(--color-hover, #f5f2fb);--color-accent: var(--color-accent, #e84855);--radius-sm: var(--radius-sm, 6px);--radius-md: var(--radius-md, 10px);--radius-lg: var(--radius-lg, 16px);display:block;font-family:var(--font-sans, "Poppins", system-ui, -apple-system, sans-serif);color:var(--color-text)}:host>*{letter-spacing:normal;word-spacing:normal;line-height:1.5;text-transform:none;text-indent:0;font-style:normal;font-weight:400;font-variant:normal;text-align:left;white-space:normal}*,*:before,*:after{box-sizing:border-box}.btn{display:inline-flex;align-items:center;gap:6px;padding:9px 18px;border-radius:var(--radius-md);font-family:inherit;font-size:13px;font-weight:600;cursor:pointer;border:1px solid transparent;transition:background .15s,border-color .15s,box-shadow .15s,opacity .15s;text-decoration:none;white-space:nowrap}.btn:disabled{opacity:.5;cursor:not-allowed;pointer-events:none}.btn-sm{padding:6px 12px;font-size:12px}.btn-primary{background:var(--color-accent);color:#fff;border-color:var(--color-accent)}.btn-primary:hover:not(:disabled){background:#d13d4a;border-color:#d13d4a;box-shadow:0 2px 8px color-mix(in srgb,var(--color-accent) 30%,transparent)}.btn-outline{background:transparent;color:var(--color-text);border-color:var(--color-border)}.btn-outline:hover:not(:disabled){background:var(--color-hover);border-color:#d5d0e4}.btn-ghost{background:transparent;color:var(--color-text-muted);border-color:transparent}.btn-ghost:hover:not(:disabled){background:var(--color-hover);color:var(--color-text)}
2
+ `,`.sitemap-page{display:flex;flex-direction:column;gap:28px}.form-card{background:var(--color-card-bg);border:1px solid var(--color-border);border-radius:12px;padding:24px}.form-card__title{font-size:15px;font-weight:600;color:var(--color-text);margin-bottom:6px}.form-card__desc{font-size:13px;color:var(--color-text-muted);margin-bottom:16px;line-height:1.6}.sitemap-form{display:flex;gap:10px}.sitemap-form__input{flex:1}.form-error{margin-top:8px;font-size:13px;color:var(--color-accent)}.saved-urls{display:flex;align-items:center;flex-wrap:wrap;gap:6px;margin-top:10px}.saved-urls__label{font-size:11px;color:var(--color-text-muted);font-weight:600;text-transform:uppercase;letter-spacing:.4px;flex-shrink:0}.saved-url-chip{display:inline-flex;align-items:center;border:1px solid var(--color-border);border-radius:20px;overflow:hidden;background:var(--color-bg)}.saved-url-chip__btn{font-size:11px;color:var(--color-text);padding:3px 8px;border:none;background:none;cursor:pointer;max-width:280px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.saved-url-chip__btn:hover{color:var(--color-accent)}.saved-url-chip__delete{font-size:10px;color:var(--color-text-muted);padding:3px 6px;border:none;background:none;cursor:pointer;border-left:1px solid var(--color-border)}.saved-url-chip__delete:hover{color:var(--color-accent);background:#fff1f2}.crawl-progress{background:var(--color-primary-soft);border:1px solid var(--color-border);border-radius:12px;padding:20px}.crawl-progress--paused{background:#fffbeb;border-color:#fbbf24}.crawl-progress__header{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px;font-size:13px;font-weight:600;color:var(--color-text);gap:12px;flex-wrap:wrap}.crawl-progress__actions{display:flex;align-items:center;gap:8px;flex-shrink:0}.crawl-progress__pct{color:var(--color-text-muted);font-size:13px}.crawl-progress__index-note{font-size:12px;color:var(--color-text-muted);margin-bottom:8px}.crawl-progress__paused-note{font-size:12px;color:#92400e;margin-bottom:8px;background:#fef3c7;padding:6px 10px;border-radius:6px}.crawl-progress__current{display:flex;gap:6px;align-items:baseline;font-size:12px;margin-bottom:4px}.crawl-progress__current-label{color:var(--color-text-muted);font-weight:600;white-space:nowrap}.crawl-progress__current-value{color:var(--color-text);word-break:break-all}.crawl-progress__current-url{color:var(--color-accent);text-decoration:none;word-break:break-all}.crawl-progress__current-url:hover{text-decoration:underline}.crawl-progress__track{height:8px;background:var(--color-border);border-radius:99px;overflow:hidden;margin-top:10px}.crawl-progress__fill{height:100%;background:var(--color-accent);border-radius:99px;transition:width .4s ease;min-width:4px}.crawl-progress__fill.indeterminate{width:40%!important;animation:indeterminate 1.4s ease-in-out infinite}.crawl-progress__fill.paused-fill{background:#f59e0b}@keyframes indeterminate{0%{transform:translate(-100%)}to{transform:translate(350%)}}.btn-action{font-size:11px;font-weight:600;padding:4px 10px;border-radius:6px;cursor:pointer;white-space:nowrap;border:1px solid}.btn-pause{background:#eff6ff;color:#1e40af;border-color:#93c5fd}.btn-pause:hover{background:#dbeafe}.btn-pause--loading{opacity:.7;cursor:default}.btn-resume{background:#f0fdf4;color:#166534;border-color:#86efac}.btn-resume:hover{background:#dcfce7}.btn-stop{background:#fff1f2;color:#9f1239;border-color:#fca5a5}.btn-stop:hover{background:#ffe4e6}.btn{display:inline-flex;align-items:center;gap:6px;padding:7px 16px;border-radius:8px;font-size:13px;font-weight:500;cursor:pointer;border:1px solid transparent;transition:background .15s}.btn-primary{background:var(--color-accent);color:#fff;border-color:var(--color-accent)}.btn-primary:hover:not(:disabled){opacity:.9}.btn-primary:disabled{opacity:.5;cursor:not-allowed}.status-badge{display:inline-block;padding:2px 6px;border-radius:4px;font-size:11px;font-weight:600;background:#f0fdf4;color:#166534}.status-badge--completed{background:#f0fdf4;color:#166534}.status-badge--failed{background:#fff1f2;color:#9f1239}.status-badge--running,.status-badge--pending{background:#eff6ff;color:#1e40af}.status-badge--paused{background:#fffbeb;color:#92400e}.reason-chip{display:inline-block;padding:2px 6px;border-radius:4px;font-size:11px;font-weight:600;background:var(--color-hover);color:var(--color-text-muted);cursor:help;white-space:nowrap}.history-resume-btn{padding:4px 10px;border-radius:6px;border:1px solid var(--color-border);background:var(--color-card-bg);color:var(--color-text);font-family:inherit;font-size:11px;font-weight:700;cursor:pointer;white-space:nowrap}.history-resume-btn:hover:not(:disabled){border-color:var(--color-accent);color:var(--color-accent)}.history-resume-btn:disabled{opacity:.55;cursor:not-allowed}.health-chip{font-size:11px;font-weight:700;padding:2px 7px;border-radius:20px}.health-chip--good{background:#dcfce7;color:#166534}.health-chip--ok{background:#fef3c7;color:#92400e}.health-chip--bad{background:#fee2e2;color:#991b1b}.history-section{background:var(--color-card-bg);border:1px solid var(--color-border);border-radius:12px;padding:20px}.history-section__title{font-size:15px;font-weight:600;color:var(--color-text);margin:0 0 14px}.history-list{display:flex;flex-direction:column;gap:8px}.history-item{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;padding:14px 16px;border-radius:10px;border:1px solid var(--color-border);cursor:pointer;transition:background .15s,border-color .15s,box-shadow .15s}.history-item:hover{background:var(--color-hover);border-color:var(--color-accent);box-shadow:0 2px 8px #0000000f}.history-item:hover .history-item__view-hint{opacity:1}.history-item.history-item--deleting{opacity:.5;pointer-events:none}.history-item__left{flex:1;min-width:0;display:flex;flex-direction:column;gap:6px}.history-item__url{font-size:13px;font-weight:500;color:var(--color-text);word-break:break-all}.history-item__meta{display:flex;align-items:center;gap:8px;font-size:12px;color:var(--color-text-muted);flex-wrap:wrap}.history-item__counts{display:flex;gap:6px}.count-ok{color:#16a34a;font-weight:600}.count-fail{color:#dc2626;font-weight:600}.history-item__right{display:flex;flex-direction:column;align-items:flex-end;gap:8px;flex-shrink:0}.history-item__time{font-size:11px;color:var(--color-text-muted);white-space:nowrap}.history-item__actions{display:flex;align-items:center;gap:8px}.history-item__view-hint{font-size:11px;font-weight:600;color:var(--color-accent);opacity:0;transition:opacity .15s;white-space:nowrap}.history-delete-btn{background:none;border:1px solid transparent;border-radius:6px;padding:3px 7px;font-size:13px;cursor:pointer;color:var(--color-text-muted);transition:all .15s}.history-delete-btn:hover:not(:disabled){border-color:#fca5a5;background:#fff1f2;color:#dc2626}.history-delete-btn:disabled{opacity:.4;cursor:default}.history-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;padding:60px 24px;color:var(--color-text-muted);font-size:14px;text-align:center}.history-empty span{font-size:40px;opacity:.35}.history-empty p{margin:0}
3
+ `],encapsulation:3,changeDetection:0})}};export{ae as BloomsSitemapCrawlComponent};
@@ -0,0 +1 @@
1
+ import{A as U,B as C,Ba as u,D as Ae,Da as Ee,Fa as O,I as N,Ia as ae,N as m,O as Me,S as V,Ua as D,V as H,W as b,a as d,b as f,cb as h,e as Ce,g as Ve,j as De,jb as Fe,k as be,lb as le,mb as g,nb as A,pb as ue,va as L,wa as o,x as B,y as c,ya as $,z as oe,za as l}from"./chunk-WQW7QCHM.js";var Ge=(()=>{class n{_renderer;_elementRef;onChange=e=>{};onTouched=()=>{};constructor(e,i){this._renderer=e,this._elementRef=i}setProperty(e,i){this._renderer.setProperty(this._elementRef.nativeElement,e,i)}registerOnTouched(e){this.onTouched=e}registerOnChange(e){this.onChange=e}setDisabledState(e){this.setProperty("disabled",e)}static \u0275fac=function(i){return new(i||n)(o(L),o(H))};static \u0275dir=l({type:n})}return n})(),ne=(()=>{class n extends Ge{static \u0275fac=(()=>{let e;return function(r){return(e||(e=m(n)))(r||n)}})();static \u0275dir=l({type:n,features:[u]})}return n})(),I=new C(""),dt={provide:I,useExisting:c(()=>ct),multi:!0},ct=(()=>{class n extends ne{writeValue(e){this.setProperty("checked",e)}static \u0275fac=(()=>{let e;return function(r){return(e||(e=m(n)))(r||n)}})();static \u0275dir=l({type:n,selectors:[["input","type","checkbox","formControlName",""],["input","type","checkbox","formControl",""],["input","type","checkbox","ngModel",""]],hostBindings:function(i,r){i&1&&D("change",function(a){return r.onChange(a.target.checked)})("blur",function(){return r.onTouched()})},standalone:!1,features:[h([dt]),u]})}return n})(),ht={provide:I,useExisting:c(()=>Te),multi:!0};function ft(){let n=ue()?ue().getUserAgent():"";return/android (\d+)/.test(n.toLowerCase())}var gt=new C(""),Te=(()=>{class n extends Ge{_compositionMode;_composing=!1;constructor(e,i,r){super(e,i),this._compositionMode=r,this._compositionMode==null&&(this._compositionMode=!ft())}writeValue(e){let i=e??"";this.setProperty("value",i)}_handleInput(e){(!this._compositionMode||this._compositionMode&&!this._composing)&&this.onChange(e)}_compositionStart(){this._composing=!0}_compositionEnd(e){this._composing=!1,this._compositionMode&&this.onChange(e)}static \u0275fac=function(i){return new(i||n)(o(L),o(H),o(gt,8))};static \u0275dir=l({type:n,selectors:[["input","formControlName","",3,"type","checkbox"],["textarea","formControlName",""],["input","formControl","",3,"type","checkbox"],["textarea","formControl",""],["input","ngModel","",3,"type","checkbox"],["textarea","ngModel",""],["","ngDefaultControl",""]],hostBindings:function(i,r){i&1&&D("input",function(a){return r._handleInput(a.target.value)})("blur",function(){return r.onTouched()})("compositionstart",function(){return r._compositionStart()})("compositionend",function(a){return r._compositionEnd(a.target.value)})},standalone:!1,features:[h([ht]),u]})}return n})();function fe(n){return n==null||ge(n)===0}function ge(n){return n==null?null:Array.isArray(n)||typeof n=="string"?n.length:n instanceof Set?n.size:null}var y=new C(""),ie=new C(""),pt=/^(?=.{1,254}$)(?=.{1,64}@)[a-zA-Z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-zA-Z0-9!#$%&'*+/=?^_`{|}~-]+)*@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/,we=class{static min(t){return je(t)}static max(t){return Be(t)}static required(t){return Ue(t)}static requiredTrue(t){return mt(t)}static email(t){return _t(t)}static minLength(t){return vt(t)}static maxLength(t){return He(t)}static pattern(t){return yt(t)}static nullValidator(t){return q()}static compose(t){return Ze(t)}static composeAsync(t){return Xe(t)}};function je(n){return t=>{if(t.value==null||n==null)return null;let e=parseFloat(t.value);return!isNaN(e)&&e<n?{min:{min:n,actual:t.value}}:null}}function Be(n){return t=>{if(t.value==null||n==null)return null;let e=parseFloat(t.value);return!isNaN(e)&&e>n?{max:{max:n,actual:t.value}}:null}}function Ue(n){return fe(n.value)?{required:!0}:null}function mt(n){return n.value===!0?null:{required:!0}}function _t(n){return fe(n.value)||pt.test(n.value)?null:{email:!0}}function vt(n){return t=>{let e=t.value?.length??ge(t.value);return e===null||e===0?null:e<n?{minlength:{requiredLength:n,actualLength:e}}:null}}function He(n){return t=>{let e=t.value?.length??ge(t.value);return e!==null&&e>n?{maxlength:{requiredLength:n,actualLength:e}}:null}}function yt(n){if(!n)return q;let t,e;return typeof n=="string"?(e="",n.charAt(0)!=="^"&&(e+="^"),e+=n,n.charAt(n.length-1)!=="$"&&(e+="$"),t=new RegExp(e)):(e=n.toString(),t=n),i=>{if(fe(i.value))return null;let r=i.value;return t.test(r)?null:{pattern:{requiredPattern:e,actualValue:r}}}}function q(n){return null}function Le(n){return n!=null}function $e(n){return Ee(n)?Ve(n):n}function We(n){let t={};return n.forEach(e=>{t=e!=null?d(d({},t),e):t}),Object.keys(t).length===0?null:t}function qe(n,t){return t.map(e=>e(n))}function Ct(n){return!n.validate}function ze(n){return n.map(t=>Ct(t)?t:e=>t.validate(e))}function Ze(n){if(!n)return null;let t=n.filter(Le);return t.length==0?null:function(e){return We(qe(e,t))}}function pe(n){return n!=null?Ze(ze(n)):null}function Xe(n){if(!n)return null;let t=n.filter(Le);return t.length==0?null:function(e){let i=qe(e,t).map($e);return be(i).pipe(De(We))}}function me(n){return n!=null?Xe(ze(n)):null}function Ie(n,t){return n===null?[t]:Array.isArray(n)?[...n,t]:[n,t]}function Ye(n){return n._rawValidators}function Ke(n){return n._rawAsyncValidators}function de(n){return n?Array.isArray(n)?n:[n]:[]}function z(n,t){return Array.isArray(n)?n.includes(t):n===t}function Se(n,t){let e=de(t);return de(n).forEach(r=>{z(e,r)||e.push(r)}),e}function Ne(n,t){return de(t).filter(e=>!z(n,e))}var Z=class{get value(){return this.control?this.control.value:null}get valid(){return this.control?this.control.valid:null}get invalid(){return this.control?this.control.invalid:null}get pending(){return this.control?this.control.pending:null}get disabled(){return this.control?this.control.disabled:null}get enabled(){return this.control?this.control.enabled:null}get errors(){return this.control?this.control.errors:null}get pristine(){return this.control?this.control.pristine:null}get dirty(){return this.control?this.control.dirty:null}get touched(){return this.control?this.control.touched:null}get status(){return this.control?this.control.status:null}get untouched(){return this.control?this.control.untouched:null}get statusChanges(){return this.control?this.control.statusChanges:null}get valueChanges(){return this.control?this.control.valueChanges:null}get path(){return null}_composedValidatorFn;_composedAsyncValidatorFn;_rawValidators=[];_rawAsyncValidators=[];_setValidators(t){this._rawValidators=t||[],this._composedValidatorFn=pe(this._rawValidators)}_setAsyncValidators(t){this._rawAsyncValidators=t||[],this._composedAsyncValidatorFn=me(this._rawAsyncValidators)}get validator(){return this._composedValidatorFn||null}get asyncValidator(){return this._composedAsyncValidatorFn||null}_onDestroyCallbacks=[];_registerOnDestroy(t){this._onDestroyCallbacks.push(t)}_invokeOnDestroyCallbacks(){this._onDestroyCallbacks.forEach(t=>t()),this._onDestroyCallbacks=[]}reset(t=void 0){this.control&&this.control.reset(t)}hasError(t,e){return this.control?this.control.hasError(t,e):!1}getError(t,e){return this.control?this.control.getError(t,e):null}},p=class extends Z{name;get formDirective(){return null}get path(){return null}},_=class extends Z{_parent=null;name=null;valueAccessor=null},X=class{_cd;constructor(t){this._cd=t}get isTouched(){return this._cd?.control?._touched?.(),!!this._cd?.control?.touched}get isUntouched(){return!!this._cd?.control?.untouched}get isPristine(){return this._cd?.control?._pristine?.(),!!this._cd?.control?.pristine}get isDirty(){return!!this._cd?.control?.dirty}get isValid(){return this._cd?.control?._status?.(),!!this._cd?.control?.valid}get isInvalid(){return!!this._cd?.control?.invalid}get isPending(){return!!this._cd?.control?.pending}get isSubmitted(){return this._cd?._submitted?.(),!!this._cd?.submitted}},Vt={"[class.ng-untouched]":"isUntouched","[class.ng-touched]":"isTouched","[class.ng-pristine]":"isPristine","[class.ng-dirty]":"isDirty","[class.ng-valid]":"isValid","[class.ng-invalid]":"isInvalid","[class.ng-pending]":"isPending"},vn=f(d({},Vt),{"[class.ng-submitted]":"isSubmitted"}),yn=(()=>{class n extends X{constructor(e){super(e)}static \u0275fac=function(i){return new(i||n)(o(_,2))};static \u0275dir=l({type:n,selectors:[["","formControlName",""],["","ngModel",""],["","formControl",""]],hostVars:14,hostBindings:function(i,r){i&2&&ae("ng-untouched",r.isUntouched)("ng-touched",r.isTouched)("ng-pristine",r.isPristine)("ng-dirty",r.isDirty)("ng-valid",r.isValid)("ng-invalid",r.isInvalid)("ng-pending",r.isPending)},standalone:!1,features:[u]})}return n})(),Cn=(()=>{class n extends X{constructor(e){super(e)}static \u0275fac=function(i){return new(i||n)(o(p,10))};static \u0275dir=l({type:n,selectors:[["","formGroupName",""],["","formArrayName",""],["","ngModelGroup",""],["","formGroup",""],["form",3,"ngNoForm",""],["","ngForm",""]],hostVars:16,hostBindings:function(i,r){i&2&&ae("ng-untouched",r.isUntouched)("ng-touched",r.isTouched)("ng-pristine",r.isPristine)("ng-dirty",r.isDirty)("ng-valid",r.isValid)("ng-invalid",r.isInvalid)("ng-pending",r.isPending)("ng-submitted",r.isSubmitted)},standalone:!1,features:[u]})}return n})();var x="VALID",W="INVALID",M="PENDING",P="DISABLED",v=class{},Y=class extends v{value;source;constructor(t,e){super(),this.value=t,this.source=e}},R=class extends v{pristine;source;constructor(t,e){super(),this.pristine=t,this.source=e}},G=class extends v{touched;source;constructor(t,e){super(),this.touched=t,this.source=e}},E=class extends v{status;source;constructor(t,e){super(),this.status=t,this.source=e}},K=class extends v{source;constructor(t){super(),this.source=t}},J=class extends v{source;constructor(t){super(),this.source=t}};function _e(n){return(re(n)?n.validators:n)||null}function Dt(n){return Array.isArray(n)?pe(n):n||null}function ve(n,t){return(re(t)?t.asyncValidators:n)||null}function bt(n){return Array.isArray(n)?me(n):n||null}function re(n){return n!=null&&!Array.isArray(n)&&typeof n=="object"}function Je(n,t,e){let i=n.controls;if(!(t?Object.keys(i):i).length)throw new B(1e3,"");if(!i[e])throw new B(1001,"")}function Qe(n,t,e){n._forEachChild((i,r)=>{if(e[r]===void 0)throw new B(1002,"")})}var F=class{_pendingDirty=!1;_hasOwnPendingAsyncValidator=null;_pendingTouched=!1;_onCollectionChange=()=>{};_updateOn;_parent=null;_asyncValidationSubscription;_composedValidatorFn;_composedAsyncValidatorFn;_rawValidators;_rawAsyncValidators;value;constructor(t,e){this._assignValidators(t),this._assignAsyncValidators(e)}get validator(){return this._composedValidatorFn}set validator(t){this._rawValidators=this._composedValidatorFn=t}get asyncValidator(){return this._composedAsyncValidatorFn}set asyncValidator(t){this._rawAsyncValidators=this._composedAsyncValidatorFn=t}get parent(){return this._parent}get status(){return g(this.statusReactive)}set status(t){g(()=>this.statusReactive.set(t))}_status=A(()=>this.statusReactive());statusReactive=b(void 0);get valid(){return this.status===x}get invalid(){return this.status===W}get pending(){return this.status==M}get disabled(){return this.status===P}get enabled(){return this.status!==P}errors;get pristine(){return g(this.pristineReactive)}set pristine(t){g(()=>this.pristineReactive.set(t))}_pristine=A(()=>this.pristineReactive());pristineReactive=b(!0);get dirty(){return!this.pristine}get touched(){return g(this.touchedReactive)}set touched(t){g(()=>this.touchedReactive.set(t))}_touched=A(()=>this.touchedReactive());touchedReactive=b(!1);get untouched(){return!this.touched}_events=new Ce;events=this._events.asObservable();valueChanges;statusChanges;get updateOn(){return this._updateOn?this._updateOn:this.parent?this.parent.updateOn:"change"}setValidators(t){this._assignValidators(t)}setAsyncValidators(t){this._assignAsyncValidators(t)}addValidators(t){this.setValidators(Se(t,this._rawValidators))}addAsyncValidators(t){this.setAsyncValidators(Se(t,this._rawAsyncValidators))}removeValidators(t){this.setValidators(Ne(t,this._rawValidators))}removeAsyncValidators(t){this.setAsyncValidators(Ne(t,this._rawAsyncValidators))}hasValidator(t){return z(this._rawValidators,t)}hasAsyncValidator(t){return z(this._rawAsyncValidators,t)}clearValidators(){this.validator=null}clearAsyncValidators(){this.asyncValidator=null}markAsTouched(t={}){let e=this.touched===!1;this.touched=!0;let i=t.sourceControl??this;this._parent&&!t.onlySelf&&this._parent.markAsTouched(f(d({},t),{sourceControl:i})),e&&t.emitEvent!==!1&&this._events.next(new G(!0,i))}markAllAsTouched(t={}){this.markAsTouched({onlySelf:!0,emitEvent:t.emitEvent,sourceControl:this}),this._forEachChild(e=>e.markAllAsTouched(t))}markAsUntouched(t={}){let e=this.touched===!0;this.touched=!1,this._pendingTouched=!1;let i=t.sourceControl??this;this._forEachChild(r=>{r.markAsUntouched({onlySelf:!0,emitEvent:t.emitEvent,sourceControl:i})}),this._parent&&!t.onlySelf&&this._parent._updateTouched(t,i),e&&t.emitEvent!==!1&&this._events.next(new G(!1,i))}markAsDirty(t={}){let e=this.pristine===!0;this.pristine=!1;let i=t.sourceControl??this;this._parent&&!t.onlySelf&&this._parent.markAsDirty(f(d({},t),{sourceControl:i})),e&&t.emitEvent!==!1&&this._events.next(new R(!1,i))}markAsPristine(t={}){let e=this.pristine===!1;this.pristine=!0,this._pendingDirty=!1;let i=t.sourceControl??this;this._forEachChild(r=>{r.markAsPristine({onlySelf:!0,emitEvent:t.emitEvent})}),this._parent&&!t.onlySelf&&this._parent._updatePristine(t,i),e&&t.emitEvent!==!1&&this._events.next(new R(!0,i))}markAsPending(t={}){this.status=M;let e=t.sourceControl??this;t.emitEvent!==!1&&(this._events.next(new E(this.status,e)),this.statusChanges.emit(this.status)),this._parent&&!t.onlySelf&&this._parent.markAsPending(f(d({},t),{sourceControl:e}))}disable(t={}){let e=this._parentMarkedDirty(t.onlySelf);this.status=P,this.errors=null,this._forEachChild(r=>{r.disable(f(d({},t),{onlySelf:!0}))}),this._updateValue();let i=t.sourceControl??this;t.emitEvent!==!1&&(this._events.next(new Y(this.value,i)),this._events.next(new E(this.status,i)),this.valueChanges.emit(this.value),this.statusChanges.emit(this.status)),this._updateAncestors(f(d({},t),{skipPristineCheck:e}),this),this._onDisabledChange.forEach(r=>r(!0))}enable(t={}){let e=this._parentMarkedDirty(t.onlySelf);this.status=x,this._forEachChild(i=>{i.enable(f(d({},t),{onlySelf:!0}))}),this.updateValueAndValidity({onlySelf:!0,emitEvent:t.emitEvent}),this._updateAncestors(f(d({},t),{skipPristineCheck:e}),this),this._onDisabledChange.forEach(i=>i(!1))}_updateAncestors(t,e){this._parent&&!t.onlySelf&&(this._parent.updateValueAndValidity(t),t.skipPristineCheck||this._parent._updatePristine({},e),this._parent._updateTouched({},e))}setParent(t){this._parent=t}getRawValue(){return this.value}updateValueAndValidity(t={}){if(this._setInitialStatus(),this._updateValue(),this.enabled){let i=this._cancelExistingSubscription();this.errors=this._runValidator(),this.status=this._calculateStatus(),(this.status===x||this.status===M)&&this._runAsyncValidator(i,t.emitEvent)}let e=t.sourceControl??this;t.emitEvent!==!1&&(this._events.next(new Y(this.value,e)),this._events.next(new E(this.status,e)),this.valueChanges.emit(this.value),this.statusChanges.emit(this.status)),this._parent&&!t.onlySelf&&this._parent.updateValueAndValidity(f(d({},t),{sourceControl:e}))}_updateTreeValidity(t={emitEvent:!0}){this._forEachChild(e=>e._updateTreeValidity(t)),this.updateValueAndValidity({onlySelf:!0,emitEvent:t.emitEvent})}_setInitialStatus(){this.status=this._allControlsDisabled()?P:x}_runValidator(){return this.validator?this.validator(this):null}_runAsyncValidator(t,e){if(this.asyncValidator){this.status=M,this._hasOwnPendingAsyncValidator={emitEvent:e!==!1};let i=$e(this.asyncValidator(this));this._asyncValidationSubscription=i.subscribe(r=>{this._hasOwnPendingAsyncValidator=null,this.setErrors(r,{emitEvent:e,shouldHaveEmitted:t})})}}_cancelExistingSubscription(){if(this._asyncValidationSubscription){this._asyncValidationSubscription.unsubscribe();let t=this._hasOwnPendingAsyncValidator?.emitEvent??!1;return this._hasOwnPendingAsyncValidator=null,t}return!1}setErrors(t,e={}){this.errors=t,this._updateControlsErrors(e.emitEvent!==!1,this,e.shouldHaveEmitted)}get(t){let e=t;return e==null||(Array.isArray(e)||(e=e.split(".")),e.length===0)?null:e.reduce((i,r)=>i&&i._find(r),this)}getError(t,e){let i=e?this.get(e):this;return i&&i.errors?i.errors[t]:null}hasError(t,e){return!!this.getError(t,e)}get root(){let t=this;for(;t._parent;)t=t._parent;return t}_updateControlsErrors(t,e,i){this.status=this._calculateStatus(),t&&this.statusChanges.emit(this.status),(t||i)&&this._events.next(new E(this.status,e)),this._parent&&this._parent._updateControlsErrors(t,e,i)}_initObservables(){this.valueChanges=new V,this.statusChanges=new V}_calculateStatus(){return this._allControlsDisabled()?P:this.errors?W:this._hasOwnPendingAsyncValidator||this._anyControlsHaveStatus(M)?M:this._anyControlsHaveStatus(W)?W:x}_anyControlsHaveStatus(t){return this._anyControls(e=>e.status===t)}_anyControlsDirty(){return this._anyControls(t=>t.dirty)}_anyControlsTouched(){return this._anyControls(t=>t.touched)}_updatePristine(t,e){let i=!this._anyControlsDirty(),r=this.pristine!==i;this.pristine=i,this._parent&&!t.onlySelf&&this._parent._updatePristine(t,e),r&&this._events.next(new R(this.pristine,e))}_updateTouched(t={},e){this.touched=this._anyControlsTouched(),this._events.next(new G(this.touched,e)),this._parent&&!t.onlySelf&&this._parent._updateTouched(t,e)}_onDisabledChange=[];_registerOnCollectionChange(t){this._onCollectionChange=t}_setUpdateStrategy(t){re(t)&&t.updateOn!=null&&(this._updateOn=t.updateOn)}_parentMarkedDirty(t){let e=this._parent&&this._parent.dirty;return!t&&!!e&&!this._parent._anyControlsDirty()}_find(t){return null}_assignValidators(t){this._rawValidators=Array.isArray(t)?t.slice():t,this._composedValidatorFn=Dt(this._rawValidators)}_assignAsyncValidators(t){this._rawAsyncValidators=Array.isArray(t)?t.slice():t,this._composedAsyncValidatorFn=bt(this._rawAsyncValidators)}},w=class extends F{constructor(t,e,i){super(_e(e),ve(i,e)),this.controls=t,this._initObservables(),this._setUpdateStrategy(e),this._setUpControls(),this.updateValueAndValidity({onlySelf:!0,emitEvent:!!this.asyncValidator})}controls;registerControl(t,e){return this.controls[t]?this.controls[t]:(this.controls[t]=e,e.setParent(this),e._registerOnCollectionChange(this._onCollectionChange),e)}addControl(t,e,i={}){this.registerControl(t,e),this.updateValueAndValidity({emitEvent:i.emitEvent}),this._onCollectionChange()}removeControl(t,e={}){this.controls[t]&&this.controls[t]._registerOnCollectionChange(()=>{}),delete this.controls[t],this.updateValueAndValidity({emitEvent:e.emitEvent}),this._onCollectionChange()}setControl(t,e,i={}){this.controls[t]&&this.controls[t]._registerOnCollectionChange(()=>{}),delete this.controls[t],e&&this.registerControl(t,e),this.updateValueAndValidity({emitEvent:i.emitEvent}),this._onCollectionChange()}contains(t){return this.controls.hasOwnProperty(t)&&this.controls[t].enabled}setValue(t,e={}){Qe(this,!0,t),Object.keys(t).forEach(i=>{Je(this,!0,i),this.controls[i].setValue(t[i],{onlySelf:!0,emitEvent:e.emitEvent})}),this.updateValueAndValidity(e)}patchValue(t,e={}){t!=null&&(Object.keys(t).forEach(i=>{let r=this.controls[i];r&&r.patchValue(t[i],{onlySelf:!0,emitEvent:e.emitEvent})}),this.updateValueAndValidity(e))}reset(t={},e={}){this._forEachChild((i,r)=>{i.reset(t?t[r]:null,{onlySelf:!0,emitEvent:e.emitEvent})}),this._updatePristine(e,this),this._updateTouched(e,this),this.updateValueAndValidity(e)}getRawValue(){return this._reduceChildren({},(t,e,i)=>(t[i]=e.getRawValue(),t))}_syncPendingControls(){let t=this._reduceChildren(!1,(e,i)=>i._syncPendingControls()?!0:e);return t&&this.updateValueAndValidity({onlySelf:!0}),t}_forEachChild(t){Object.keys(this.controls).forEach(e=>{let i=this.controls[e];i&&t(i,e)})}_setUpControls(){this._forEachChild(t=>{t.setParent(this),t._registerOnCollectionChange(this._onCollectionChange)})}_updateValue(){this.value=this._reduceValue()}_anyControls(t){for(let[e,i]of Object.entries(this.controls))if(this.contains(e)&&t(i))return!0;return!1}_reduceValue(){let t={};return this._reduceChildren(t,(e,i,r)=>((i.enabled||this.disabled)&&(e[r]=i.value),e))}_reduceChildren(t,e){let i=t;return this._forEachChild((r,s)=>{i=e(i,r,s)}),i}_allControlsDisabled(){for(let t of Object.keys(this.controls))if(this.controls[t].enabled)return!1;return Object.keys(this.controls).length>0||this.disabled}_find(t){return this.controls.hasOwnProperty(t)?this.controls[t]:null}};var ce=class extends w{};var S=new C("",{providedIn:"root",factory:()=>j}),j="always";function et(n,t){return[...t.path,n]}function Q(n,t,e=j){ye(n,t),t.valueAccessor.writeValue(n.value),(n.disabled||e==="always")&&t.valueAccessor.setDisabledState?.(n.disabled),Mt(n,t),Ft(n,t),Et(n,t),At(n,t)}function Oe(n,t,e=!0){let i=()=>{};t.valueAccessor&&(t.valueAccessor.registerOnChange(i),t.valueAccessor.registerOnTouched(i)),te(n,t),n&&(t._invokeOnDestroyCallbacks(),n._registerOnCollectionChange(()=>{}))}function ee(n,t){n.forEach(e=>{e.registerOnValidatorChange&&e.registerOnValidatorChange(t)})}function At(n,t){if(t.valueAccessor.setDisabledState){let e=i=>{t.valueAccessor.setDisabledState(i)};n.registerOnDisabledChange(e),t._registerOnDestroy(()=>{n._unregisterOnDisabledChange(e)})}}function ye(n,t){let e=Ye(n);t.validator!==null?n.setValidators(Ie(e,t.validator)):typeof e=="function"&&n.setValidators([e]);let i=Ke(n);t.asyncValidator!==null?n.setAsyncValidators(Ie(i,t.asyncValidator)):typeof i=="function"&&n.setAsyncValidators([i]);let r=()=>n.updateValueAndValidity();ee(t._rawValidators,r),ee(t._rawAsyncValidators,r)}function te(n,t){let e=!1;if(n!==null){if(t.validator!==null){let r=Ye(n);if(Array.isArray(r)&&r.length>0){let s=r.filter(a=>a!==t.validator);s.length!==r.length&&(e=!0,n.setValidators(s))}}if(t.asyncValidator!==null){let r=Ke(n);if(Array.isArray(r)&&r.length>0){let s=r.filter(a=>a!==t.asyncValidator);s.length!==r.length&&(e=!0,n.setAsyncValidators(s))}}}let i=()=>{};return ee(t._rawValidators,i),ee(t._rawAsyncValidators,i),e}function Mt(n,t){t.valueAccessor.registerOnChange(e=>{n._pendingValue=e,n._pendingChange=!0,n._pendingDirty=!0,n.updateOn==="change"&&tt(n,t)})}function Et(n,t){t.valueAccessor.registerOnTouched(()=>{n._pendingTouched=!0,n.updateOn==="blur"&&n._pendingChange&&tt(n,t),n.updateOn!=="submit"&&n.markAsTouched()})}function tt(n,t){n._pendingDirty&&n.markAsDirty(),n.setValue(n._pendingValue,{emitModelToViewChange:!1}),t.viewToModelUpdate(n._pendingValue),n._pendingChange=!1}function Ft(n,t){let e=(i,r)=>{t.valueAccessor.writeValue(i),r&&t.viewToModelUpdate(i)};n.registerOnChange(e),t._registerOnDestroy(()=>{n._unregisterOnChange(e)})}function nt(n,t){n==null,ye(n,t)}function wt(n,t){return te(n,t)}function it(n,t){if(!n.hasOwnProperty("model"))return!1;let e=n.model;return e.isFirstChange()?!0:!Object.is(t,e.currentValue)}function It(n){return Object.getPrototypeOf(n.constructor)===ne}function rt(n,t){n._syncPendingControls(),t.forEach(e=>{let i=e.control;i.updateOn==="submit"&&i._pendingChange&&(e.viewToModelUpdate(i._pendingValue),i._pendingChange=!1)})}function st(n,t){if(!t)return null;Array.isArray(t);let e,i,r;return t.forEach(s=>{s.constructor===Te?e=s:It(s)?i=s:r=s}),r||i||e||null}function St(n,t){let e=n.indexOf(t);e>-1&&n.splice(e,1)}var Nt={provide:p,useExisting:c(()=>Ot)},k=Promise.resolve(),Ot=(()=>{class n extends p{callSetDisabledState;get submitted(){return g(this.submittedReactive)}_submitted=A(()=>this.submittedReactive());submittedReactive=b(!1);_directives=new Set;form;ngSubmit=new V;options;constructor(e,i,r){super(),this.callSetDisabledState=r,this.form=new w({},pe(e),me(i))}ngAfterViewInit(){this._setUpdateStrategy()}get formDirective(){return this}get control(){return this.form}get path(){return[]}get controls(){return this.form.controls}addControl(e){k.then(()=>{let i=this._findContainer(e.path);e.control=i.registerControl(e.name,e.control),Q(e.control,e,this.callSetDisabledState),e.control.updateValueAndValidity({emitEvent:!1}),this._directives.add(e)})}getControl(e){return this.form.get(e.path)}removeControl(e){k.then(()=>{let i=this._findContainer(e.path);i&&i.removeControl(e.name),this._directives.delete(e)})}addFormGroup(e){k.then(()=>{let i=this._findContainer(e.path),r=new w({});nt(r,e),i.registerControl(e.name,r),r.updateValueAndValidity({emitEvent:!1})})}removeFormGroup(e){k.then(()=>{let i=this._findContainer(e.path);i&&i.removeControl(e.name)})}getFormGroup(e){return this.form.get(e.path)}updateModel(e,i){k.then(()=>{this.form.get(e.path).setValue(i)})}setValue(e){this.control.setValue(e)}onSubmit(e){return this.submittedReactive.set(!0),rt(this.form,this._directives),this.ngSubmit.emit(e),this.form._events.next(new K(this.control)),e?.target?.method==="dialog"}onReset(){this.resetForm()}resetForm(e=void 0){this.form.reset(e),this.submittedReactive.set(!1),this.form._events.next(new J(this.form))}_setUpdateStrategy(){this.options&&this.options.updateOn!=null&&(this.form._updateOn=this.options.updateOn)}_findContainer(e){return e.pop(),e.length?this.form.get(e):this.form}static \u0275fac=function(i){return new(i||n)(o(y,10),o(ie,10),o(S,8))};static \u0275dir=l({type:n,selectors:[["form",3,"ngNoForm","",3,"formGroup",""],["ng-form"],["","ngForm",""]],hostBindings:function(i,r){i&1&&D("submit",function(a){return r.onSubmit(a)})("reset",function(){return r.onReset()})},inputs:{options:[0,"ngFormOptions","options"]},outputs:{ngSubmit:"ngSubmit"},exportAs:["ngForm"],standalone:!1,features:[h([Nt]),u]})}return n})();function xe(n,t){let e=n.indexOf(t);e>-1&&n.splice(e,1)}function Pe(n){return typeof n=="object"&&n!==null&&Object.keys(n).length===2&&"value"in n&&"disabled"in n}var T=class extends F{defaultValue=null;_onChange=[];_pendingValue;_pendingChange=!1;constructor(t=null,e,i){super(_e(e),ve(i,e)),this._applyFormState(t),this._setUpdateStrategy(e),this._initObservables(),this.updateValueAndValidity({onlySelf:!0,emitEvent:!!this.asyncValidator}),re(e)&&(e.nonNullable||e.initialValueIsDefault)&&(Pe(t)?this.defaultValue=t.value:this.defaultValue=t)}setValue(t,e={}){this.value=this._pendingValue=t,this._onChange.length&&e.emitModelToViewChange!==!1&&this._onChange.forEach(i=>i(this.value,e.emitViewToModelChange!==!1)),this.updateValueAndValidity(e)}patchValue(t,e={}){this.setValue(t,e)}reset(t=this.defaultValue,e={}){this._applyFormState(t),this.markAsPristine(e),this.markAsUntouched(e),this.setValue(this.value,e),this._pendingChange=!1}_updateValue(){}_anyControls(t){return!1}_allControlsDisabled(){return this.disabled}registerOnChange(t){this._onChange.push(t)}_unregisterOnChange(t){xe(this._onChange,t)}registerOnDisabledChange(t){this._onDisabledChange.push(t)}_unregisterOnDisabledChange(t){xe(this._onDisabledChange,t)}_forEachChild(t){}_syncPendingControls(){return this.updateOn==="submit"&&(this._pendingDirty&&this.markAsDirty(),this._pendingTouched&&this.markAsTouched(),this._pendingChange)?(this.setValue(this._pendingValue,{onlySelf:!0,emitModelToViewChange:!1}),!0):!1}_applyFormState(t){Pe(t)?(this.value=this._pendingValue=t.value,t.disabled?this.disable({onlySelf:!0,emitEvent:!1}):this.enable({onlySelf:!0,emitEvent:!1})):this.value=this._pendingValue=t}};var xt=n=>n instanceof T;var Pt={provide:_,useExisting:c(()=>kt)},ke=Promise.resolve(),kt=(()=>{class n extends _{_changeDetectorRef;callSetDisabledState;control=new T;static ngAcceptInputType_isDisabled;_registered=!1;viewModel;name="";isDisabled;model;options;update=new V;constructor(e,i,r,s,a,ut){super(),this._changeDetectorRef=a,this.callSetDisabledState=ut,this._parent=e,this._setValidators(i),this._setAsyncValidators(r),this.valueAccessor=st(this,s)}ngOnChanges(e){if(this._checkForErrors(),!this._registered||"name"in e){if(this._registered&&(this._checkName(),this.formDirective)){let i=e.name.previousValue;this.formDirective.removeControl({name:i,path:this._getPath(i)})}this._setUpControl()}"isDisabled"in e&&this._updateDisabled(e),it(e,this.viewModel)&&(this._updateValue(this.model),this.viewModel=this.model)}ngOnDestroy(){this.formDirective&&this.formDirective.removeControl(this)}get path(){return this._getPath(this.name)}get formDirective(){return this._parent?this._parent.formDirective:null}viewToModelUpdate(e){this.viewModel=e,this.update.emit(e)}_setUpControl(){this._setUpdateStrategy(),this._isStandalone()?this._setUpStandalone():this.formDirective.addControl(this),this._registered=!0}_setUpdateStrategy(){this.options&&this.options.updateOn!=null&&(this.control._updateOn=this.options.updateOn)}_isStandalone(){return!this._parent||!!(this.options&&this.options.standalone)}_setUpStandalone(){Q(this.control,this,this.callSetDisabledState),this.control.updateValueAndValidity({emitEvent:!1})}_checkForErrors(){this._checkName()}_checkName(){this.options&&this.options.name&&(this.name=this.options.name),!this._isStandalone()&&this.name}_updateValue(e){ke.then(()=>{this.control.setValue(e,{emitViewToModelChange:!1}),this._changeDetectorRef?.markForCheck()})}_updateDisabled(e){let i=e.isDisabled.currentValue,r=i!==0&&le(i);ke.then(()=>{r&&!this.control.disabled?this.control.disable():!r&&this.control.disabled&&this.control.enable(),this._changeDetectorRef?.markForCheck()})}_getPath(e){return this._parent?et(e,this._parent):[e]}static \u0275fac=function(i){return new(i||n)(o(p,9),o(y,10),o(ie,10),o(I,10),o(Fe,8),o(S,8))};static \u0275dir=l({type:n,selectors:[["","ngModel","",3,"formControlName","",3,"formControl",""]],inputs:{name:"name",isDisabled:[0,"disabled","isDisabled"],model:[0,"ngModel","model"],options:[0,"ngModelOptions","options"]},outputs:{update:"ngModelChange"},exportAs:["ngModel"],standalone:!1,features:[h([Pt]),u,N]})}return n})();var Dn=(()=>{class n{static \u0275fac=function(i){return new(i||n)};static \u0275dir=l({type:n,selectors:[["form",3,"ngNoForm","",3,"ngNativeValidate",""]],hostAttrs:["novalidate",""],standalone:!1})}return n})(),Rt={provide:I,useExisting:c(()=>Gt),multi:!0},Gt=(()=>{class n extends ne{writeValue(e){let i=e??"";this.setProperty("value",i)}registerOnChange(e){this.onChange=i=>{e(i==""?null:parseFloat(i))}}static \u0275fac=(()=>{let e;return function(r){return(e||(e=m(n)))(r||n)}})();static \u0275dir=l({type:n,selectors:[["input","type","number","formControlName",""],["input","type","number","formControl",""],["input","type","number","ngModel",""]],hostBindings:function(i,r){i&1&&D("input",function(a){return r.onChange(a.target.value)})("blur",function(){return r.onTouched()})},standalone:!1,features:[h([Rt]),u]})}return n})(),Tt={provide:I,useExisting:c(()=>Bt),multi:!0};var jt=(()=>{class n{_accessors=[];add(e,i){this._accessors.push([e,i])}remove(e){for(let i=this._accessors.length-1;i>=0;--i)if(this._accessors[i][1]===e){this._accessors.splice(i,1);return}}select(e){this._accessors.forEach(i=>{this._isSameGroup(i,e)&&i[1]!==e&&i[1].fireUncheck(e.value)})}_isSameGroup(e,i){return e[0].control?e[0]._parent===i._control._parent&&e[1].name===i.name:!1}static \u0275fac=function(i){return new(i||n)};static \u0275prov=oe({token:n,factory:n.\u0275fac,providedIn:"root"})}return n})(),Bt=(()=>{class n extends ne{_registry;_injector;_state;_control;_fn;setDisabledStateFired=!1;onChange=()=>{};name;formControlName;value;callSetDisabledState=Ae(S,{optional:!0})??j;constructor(e,i,r,s){super(e,i),this._registry=r,this._injector=s}ngOnInit(){this._control=this._injector.get(_),this._checkName(),this._registry.add(this._control,this)}ngOnDestroy(){this._registry.remove(this)}writeValue(e){this._state=e===this.value,this.setProperty("checked",this._state)}registerOnChange(e){this._fn=e,this.onChange=()=>{e(this.value),this._registry.select(this)}}setDisabledState(e){(this.setDisabledStateFired||e||this.callSetDisabledState==="whenDisabledForLegacyCode")&&this.setProperty("disabled",e),this.setDisabledStateFired=!0}fireUncheck(e){this.writeValue(e)}_checkName(){this.name&&this.formControlName&&(this.name,this.formControlName),!this.name&&this.formControlName&&(this.name=this.formControlName)}static \u0275fac=function(i){return new(i||n)(o(L),o(H),o(jt),o(Me))};static \u0275dir=l({type:n,selectors:[["input","type","radio","formControlName",""],["input","type","radio","formControl",""],["input","type","radio","ngModel",""]],hostBindings:function(i,r){i&1&&D("change",function(){return r.onChange()})("blur",function(){return r.onTouched()})},inputs:{name:"name",formControlName:"formControlName",value:"value"},standalone:!1,features:[h([Tt]),u]})}return n})();var ot=new C("");var Ut={provide:p,useExisting:c(()=>Ht)},Ht=(()=>{class n extends p{callSetDisabledState;get submitted(){return g(this._submittedReactive)}set submitted(e){this._submittedReactive.set(e)}_submitted=A(()=>this._submittedReactive());_submittedReactive=b(!1);_oldForm;_onCollectionChange=()=>this._updateDomValue();directives=[];form=null;ngSubmit=new V;constructor(e,i,r){super(),this.callSetDisabledState=r,this._setValidators(e),this._setAsyncValidators(i)}ngOnChanges(e){e.hasOwnProperty("form")&&(this._updateValidators(),this._updateDomValue(),this._updateRegistrations(),this._oldForm=this.form)}ngOnDestroy(){this.form&&(te(this.form,this),this.form._onCollectionChange===this._onCollectionChange&&this.form._registerOnCollectionChange(()=>{}))}get formDirective(){return this}get control(){return this.form}get path(){return[]}addControl(e){let i=this.form.get(e.path);return Q(i,e,this.callSetDisabledState),i.updateValueAndValidity({emitEvent:!1}),this.directives.push(e),i}getControl(e){return this.form.get(e.path)}removeControl(e){Oe(e.control||null,e,!1),St(this.directives,e)}addFormGroup(e){this._setUpFormContainer(e)}removeFormGroup(e){this._cleanUpFormContainer(e)}getFormGroup(e){return this.form.get(e.path)}addFormArray(e){this._setUpFormContainer(e)}removeFormArray(e){this._cleanUpFormContainer(e)}getFormArray(e){return this.form.get(e.path)}updateModel(e,i){this.form.get(e.path).setValue(i)}onSubmit(e){return this._submittedReactive.set(!0),rt(this.form,this.directives),this.ngSubmit.emit(e),this.form._events.next(new K(this.control)),e?.target?.method==="dialog"}onReset(){this.resetForm()}resetForm(e=void 0){this.form.reset(e),this._submittedReactive.set(!1),this.form._events.next(new J(this.form))}_updateDomValue(){this.directives.forEach(e=>{let i=e.control,r=this.form.get(e.path);i!==r&&(Oe(i||null,e),xt(r)&&(Q(r,e,this.callSetDisabledState),e.control=r))}),this.form._updateTreeValidity({emitEvent:!1})}_setUpFormContainer(e){let i=this.form.get(e.path);nt(i,e),i.updateValueAndValidity({emitEvent:!1})}_cleanUpFormContainer(e){if(this.form){let i=this.form.get(e.path);i&&wt(i,e)&&i.updateValueAndValidity({emitEvent:!1})}}_updateRegistrations(){this.form._registerOnCollectionChange(this._onCollectionChange),this._oldForm&&this._oldForm._registerOnCollectionChange(()=>{})}_updateValidators(){ye(this.form,this),this._oldForm&&te(this._oldForm,this)}static \u0275fac=function(i){return new(i||n)(o(y,10),o(ie,10),o(S,8))};static \u0275dir=l({type:n,selectors:[["","formGroup",""]],hostBindings:function(i,r){i&1&&D("submit",function(a){return r.onSubmit(a)})("reset",function(){return r.onReset()})},inputs:{form:[0,"formGroup","form"]},outputs:{ngSubmit:"ngSubmit"},exportAs:["ngForm"],standalone:!1,features:[h([Ut]),u,N]})}return n})();var Lt={provide:_,useExisting:c(()=>$t)},$t=(()=>{class n extends _{_ngModelWarningConfig;_added=!1;viewModel;control;name=null;set isDisabled(e){}model;update=new V;static _ngModelWarningSentOnce=!1;_ngModelWarningSent=!1;constructor(e,i,r,s,a){super(),this._ngModelWarningConfig=a,this._parent=e,this._setValidators(i),this._setAsyncValidators(r),this.valueAccessor=st(this,s)}ngOnChanges(e){this._added||this._setUpControl(),it(e,this.viewModel)&&(this.viewModel=this.model,this.formDirective.updateModel(this,this.model))}ngOnDestroy(){this.formDirective&&this.formDirective.removeControl(this)}viewToModelUpdate(e){this.viewModel=e,this.update.emit(e)}get path(){return et(this.name==null?this.name:this.name.toString(),this._parent)}get formDirective(){return this._parent?this._parent.formDirective:null}_setUpControl(){this.control=this.formDirective.addControl(this),this._added=!0}static \u0275fac=function(i){return new(i||n)(o(p,13),o(y,10),o(ie,10),o(I,10),o(ot,8))};static \u0275dir=l({type:n,selectors:[["","formControlName",""]],inputs:{name:[0,"formControlName","name"],isDisabled:[0,"disabled","isDisabled"],model:[0,"ngModel","model"]},outputs:{update:"ngModelChange"},standalone:!1,features:[h([Lt]),u,N]})}return n})();function Wt(n){return typeof n=="number"?n:parseInt(n,10)}function at(n){return typeof n=="number"?n:parseFloat(n)}var se=(()=>{class n{_validator=q;_onChange;_enabled;ngOnChanges(e){if(this.inputName in e){let i=this.normalizeInput(e[this.inputName].currentValue);this._enabled=this.enabled(i),this._validator=this._enabled?this.createValidator(i):q,this._onChange&&this._onChange()}}validate(e){return this._validator(e)}registerOnValidatorChange(e){this._onChange=e}enabled(e){return e!=null}static \u0275fac=function(i){return new(i||n)};static \u0275dir=l({type:n,features:[N]})}return n})(),qt={provide:y,useExisting:c(()=>zt),multi:!0},zt=(()=>{class n extends se{max;inputName="max";normalizeInput=e=>at(e);createValidator=e=>Be(e);static \u0275fac=(()=>{let e;return function(r){return(e||(e=m(n)))(r||n)}})();static \u0275dir=l({type:n,selectors:[["input","type","number","max","","formControlName",""],["input","type","number","max","","formControl",""],["input","type","number","max","","ngModel",""]],hostVars:1,hostBindings:function(i,r){i&2&&O("max",r._enabled?r.max:null)},inputs:{max:"max"},standalone:!1,features:[h([qt]),u]})}return n})(),Zt={provide:y,useExisting:c(()=>Xt),multi:!0},Xt=(()=>{class n extends se{min;inputName="min";normalizeInput=e=>at(e);createValidator=e=>je(e);static \u0275fac=(()=>{let e;return function(r){return(e||(e=m(n)))(r||n)}})();static \u0275dir=l({type:n,selectors:[["input","type","number","min","","formControlName",""],["input","type","number","min","","formControl",""],["input","type","number","min","","ngModel",""]],hostVars:1,hostBindings:function(i,r){i&2&&O("min",r._enabled?r.min:null)},inputs:{min:"min"},standalone:!1,features:[h([Zt]),u]})}return n})(),Yt={provide:y,useExisting:c(()=>Kt),multi:!0};var Kt=(()=>{class n extends se{required;inputName="required";normalizeInput=le;createValidator=e=>Ue;enabled(e){return e}static \u0275fac=(()=>{let e;return function(r){return(e||(e=m(n)))(r||n)}})();static \u0275dir=l({type:n,selectors:[["","required","","formControlName","",3,"type","checkbox"],["","required","","formControl","",3,"type","checkbox"],["","required","","ngModel","",3,"type","checkbox"]],hostVars:1,hostBindings:function(i,r){i&2&&O("required",r._enabled?"":null)},inputs:{required:"required"},standalone:!1,features:[h([Yt]),u]})}return n})();var Jt={provide:y,useExisting:c(()=>Qt),multi:!0},Qt=(()=>{class n extends se{maxlength;inputName="maxlength";normalizeInput=e=>Wt(e);createValidator=e=>He(e);static \u0275fac=(()=>{let e;return function(r){return(e||(e=m(n)))(r||n)}})();static \u0275dir=l({type:n,selectors:[["","maxlength","","formControlName",""],["","maxlength","","formControl",""],["","maxlength","","ngModel",""]],hostVars:1,hostBindings:function(i,r){i&2&&O("maxlength",r._enabled?r.maxlength:null)},inputs:{maxlength:"maxlength"},standalone:!1,features:[h([Jt]),u]})}return n})();var lt=(()=>{class n{static \u0275fac=function(i){return new(i||n)};static \u0275mod=$({type:n});static \u0275inj=U({})}return n})(),he=class extends F{constructor(t,e,i){super(_e(e),ve(i,e)),this.controls=t,this._initObservables(),this._setUpdateStrategy(e),this._setUpControls(),this.updateValueAndValidity({onlySelf:!0,emitEvent:!!this.asyncValidator})}controls;at(t){return this.controls[this._adjustIndex(t)]}push(t,e={}){this.controls.push(t),this._registerControl(t),this.updateValueAndValidity({emitEvent:e.emitEvent}),this._onCollectionChange()}insert(t,e,i={}){this.controls.splice(t,0,e),this._registerControl(e),this.updateValueAndValidity({emitEvent:i.emitEvent})}removeAt(t,e={}){let i=this._adjustIndex(t);i<0&&(i=0),this.controls[i]&&this.controls[i]._registerOnCollectionChange(()=>{}),this.controls.splice(i,1),this.updateValueAndValidity({emitEvent:e.emitEvent})}setControl(t,e,i={}){let r=this._adjustIndex(t);r<0&&(r=0),this.controls[r]&&this.controls[r]._registerOnCollectionChange(()=>{}),this.controls.splice(r,1),e&&(this.controls.splice(r,0,e),this._registerControl(e)),this.updateValueAndValidity({emitEvent:i.emitEvent}),this._onCollectionChange()}get length(){return this.controls.length}setValue(t,e={}){Qe(this,!1,t),t.forEach((i,r)=>{Je(this,!1,r),this.at(r).setValue(i,{onlySelf:!0,emitEvent:e.emitEvent})}),this.updateValueAndValidity(e)}patchValue(t,e={}){t!=null&&(t.forEach((i,r)=>{this.at(r)&&this.at(r).patchValue(i,{onlySelf:!0,emitEvent:e.emitEvent})}),this.updateValueAndValidity(e))}reset(t=[],e={}){this._forEachChild((i,r)=>{i.reset(t[r],{onlySelf:!0,emitEvent:e.emitEvent})}),this._updatePristine(e,this),this._updateTouched(e,this),this.updateValueAndValidity(e)}getRawValue(){return this.controls.map(t=>t.getRawValue())}clear(t={}){this.controls.length<1||(this._forEachChild(e=>e._registerOnCollectionChange(()=>{})),this.controls.splice(0),this.updateValueAndValidity({emitEvent:t.emitEvent}))}_adjustIndex(t){return t<0?t+this.length:t}_syncPendingControls(){let t=this.controls.reduce((e,i)=>i._syncPendingControls()?!0:e,!1);return t&&this.updateValueAndValidity({onlySelf:!0}),t}_forEachChild(t){this.controls.forEach((e,i)=>{t(e,i)})}_updateValue(){this.value=this.controls.filter(t=>t.enabled||this.disabled).map(t=>t.value)}_anyControls(t){return this.controls.some(e=>e.enabled&&t(e))}_setUpControls(){this._forEachChild(t=>this._registerControl(t))}_allControlsDisabled(){for(let t of this.controls)if(t.enabled)return!1;return this.controls.length>0||this.disabled}_registerControl(t){t.setParent(this),t._registerOnCollectionChange(this._onCollectionChange)}_find(t){return this.at(t)??null}};function Re(n){return!!n&&(n.asyncValidators!==void 0||n.validators!==void 0||n.updateOn!==void 0)}var bn=(()=>{class n{useNonNullable=!1;get nonNullable(){let e=new n;return e.useNonNullable=!0,e}group(e,i=null){let r=this._reduceControls(e),s={};return Re(i)?s=i:i!==null&&(s.validators=i.validator,s.asyncValidators=i.asyncValidator),new w(r,s)}record(e,i=null){let r=this._reduceControls(e);return new ce(r,i)}control(e,i,r){let s={};return this.useNonNullable?(Re(i)?s=i:(s.validators=i,s.asyncValidators=r),new T(e,f(d({},s),{nonNullable:!0}))):new T(e,i,r)}array(e,i,r){let s=e.map(a=>this._createControl(a));return new he(s,i,r)}_reduceControls(e){let i={};return Object.keys(e).forEach(r=>{i[r]=this._createControl(e[r])}),i}_createControl(e){if(e instanceof T)return e;if(e instanceof F)return e;if(Array.isArray(e)){let i=e[0],r=e.length>1?e[1]:null,s=e.length>2?e[2]:null;return this.control(i,r,s)}else return this.control(e)}static \u0275fac=function(i){return new(i||n)};static \u0275prov=oe({token:n,factory:n.\u0275fac,providedIn:"root"})}return n})();var An=(()=>{class n{static withConfig(e){return{ngModule:n,providers:[{provide:S,useValue:e.callSetDisabledState??j}]}}static \u0275fac=function(i){return new(i||n)};static \u0275mod=$({type:n});static \u0275inj=U({imports:[lt]})}return n})(),Mn=(()=>{class n{static withConfig(e){return{ngModule:n,providers:[{provide:ot,useValue:e.warnOnNgModelWithFormControl??"always"},{provide:S,useValue:e.callSetDisabledState??j}]}}static \u0275fac=function(i){return new(i||n)};static \u0275mod=$({type:n});static \u0275inj=U({imports:[lt]})}return n})();export{I as a,ct as b,Te as c,we as d,yn as e,Cn as f,Ot as g,kt as h,Dn as i,Gt as j,Bt as k,Ht as l,$t as m,zt as n,Xt as o,Kt as p,Qt as q,bn as r,An as s,Mn as t};
@@ -0,0 +1,3 @@
1
+ import{a as U}from"./chunk-T4IZD3WN.js";import{a as J}from"./chunk-IRBW4XXQ.js";import{a as H}from"./chunk-X2Q5WSIJ.js";import{a as W}from"./chunk-HLIQJSA7.js";import"./chunk-SPLW6L45.js";import{Ca as p,Cb as _,D as S,Fa as f,Ga as w,Ha as j,J as M,Ja as F,K as P,L as z,La as s,M as L,Oa as v,Pa as y,Qa as a,Ra as n,S as D,Sa as m,Ta as A,Ua as E,V as $,Va as d,W as u,Wa as r,Xa as x,Ya as g,Za as G,a as K,eb as c,fb as b,gb as h,hb as I,nb as C,pa as l,tb as O,vb as N,xa as V,xb as R}from"./chunk-WQW7QCHM.js";var Y=(o,t)=>t.year+"-"+t.month,te=(o,t)=>t.date,oe=(o,t)=>t.page;function ie(o,t){o&1&&(m(0,"span",8),r(1," Syncing\u2026 "))}function ne(o,t){o&1&&r(0," \u21BB Sync Data ")}function ae(o,t){if(o&1&&(a(0,"p",7),r(1),c(2,"date"),n()),o&2){let e=d(2);l(),g("Last synced: ",h(2,1,e.keyword().lastSyncedAt,"medium"),"")}}function re(o,t){if(o&1){let e=A();a(0,"div",4)(1,"h2",5),r(2),n(),a(3,"button",6),E("click",function(){M(e);let k=d();return P(k.sync())}),p(4,ie,2,0)(5,ne,1,0),n()(),p(6,ae,3,4,"p",7)}if(o&2){let e=d();l(2),g('"',e.keyword().keyword,'"'),l(),w("disabled",e.syncing()),l(),s(e.syncing()?4:5),l(2),s(e.keyword().lastSyncedAt?6:-1)}}function le(o,t){o&1&&(a(0,"div",3),m(1,"div",9),a(2,"p"),r(3,"Loading keyword data\u2026"),n()())}function de(o,t){o&1&&(a(0,"div",14),r(1,"Connect Google Ads to fetch"),n())}function se(o,t){if(o&1&&(a(0,"span",24),r(1),n()),o&2){let e=d(2);F("comp-"+e.keyword().competition.toLowerCase()),l(),g(" ",e.keyword().competition," ")}}function ce(o,t){o&1&&r(0," \u2014 ")}function pe(o,t){if(o&1&&(a(0,"div",14),r(1),c(2,"number"),n()),o&2){let e=d(2);l(),g("Index: ",h(2,1,e.keyword().competitionIndex,"1.0-0"),"/100")}}function me(o,t){if(o&1&&(r(0),c(1,"appCurrency"),c(2,"appCurrency")),o&2){let e=d(2);G(" ",I(1,2,e.keyword().lowTopOfPageBidMicros,2,"micros")," \u2013 ",I(2,6,e.keyword().highTopOfPageBidMicros,2,"micros")," ")}}function xe(o,t){o&1&&r(0," \u2014 ")}function ge(o,t){o&1&&(a(0,"div",14),r(1,"Connect Search Console"),n())}function be(o,t){if(o&1&&(a(0,"div",28),c(1,"number"),m(2,"div",31),n()),o&2){let e=t.$implicit,i=d(3);w("appTooltip",i.monthLabel(e)+": "+b(1,3,e.searches)),l(2),j("height",i.volBarPct(e.searches),"%")}}function ue(o,t){if(o&1&&(a(0,"span",32),r(1),n()),o&2){let e=d().$implicit,i=d(3);l(),x(i.monthLabel(e))}}function fe(o,t){o&1&&m(0,"span",32)}function he(o,t){if(o&1&&p(0,ue,2,1,"span",32)(1,fe,1,0,"span",32),o&2){let e=t.$index,i=d(3);s(e%3===0||e===i.sortedMonthly().length-1?0:1)}}function ve(o,t){if(o&1&&(a(0,"div",22)(1,"div",25),r(2,"Monthly Search Volume Trend"),n(),a(3,"div",26)(4,"div",27),v(5,be,3,5,"div",28,Y),n(),a(7,"div",29),v(8,he,2,1,null,null,Y),n()(),a(10,"div",30),r(11),c(12,"number"),n()()),o&2){let e=d(2);l(5),y(e.sortedMonthly()),l(3),y(e.sortedMonthly()),l(3),g(" Peak: ",b(12,1,e.maxMonthlyVol())," searches/mo ")}}function ye(o,t){o&1&&(a(0,"div",23),m(1,"div",33),r(2," Loading Search Console trend\u2026 "),n())}function _e(o,t){if(o&1&&(a(0,"span",52),r(1),n()),o&2){let e=d().$implicit;l(),x(e.date.slice(5))}}function ke(o,t){o&1&&m(0,"span",52)}function we(o,t){if(o&1&&p(0,_e,2,1,"span",52)(1,ke,1,0,"span",52),o&2){let e=t.$index;s(e%15===0?0:1)}}function Ce(o,t){if(o&1&&(a(0,"tr")(1,"td",55),r(2),n(),a(3,"td",56),r(4),c(5,"number"),n(),a(6,"td",57),r(7),c(8,"number"),n(),a(9,"td",57),r(10),c(11,"number"),n(),a(12,"td",58),r(13),c(14,"number"),n()()),o&2){let e=t.$implicit,i=d(4);l(),w("appTooltip",e.page),l(),x(i.pageBasename(e.page)),l(2),x(b(5,6,e.clicks)),l(3),x(b(8,8,e.impressions)),l(3),g("",h(11,10,e.ctr*100,"1.1-1"),"%"),l(3),x(h(14,13,e.position,"1.1-1"))}}function Se(o,t){if(o&1&&(a(0,"div",51)(1,"div",53),r(2),n(),a(3,"table",54)(4,"thead")(5,"tr")(6,"th"),r(7,"Page"),n(),a(8,"th"),r(9,"Clicks"),n(),a(10,"th"),r(11,"Impressions"),n(),a(12,"th"),r(13,"CTR"),n(),a(14,"th"),r(15,"Position"),n()()(),a(16,"tbody"),v(17,Ce,15,16,"tr",null,oe),n()()()),o&2){let e=d(3);l(2),g('Top Pages for "',e.keyword().keyword,'"'),l(15),y(e.gscData().topPages)}}function De(o,t){if(o&1&&(a(0,"div",22)(1,"div",25),r(2," Search Console \u2014 Clicks & Impressions (Last 90 Days) "),a(3,"span",34),r(4),n()(),a(5,"div",35),z(),a(6,"svg",36)(7,"defs")(8,"linearGradient",37),m(9,"stop",38)(10,"stop",39),n(),a(11,"linearGradient",40),m(12,"stop",41)(13,"stop",42),n()(),m(14,"polygon",43)(15,"polyline",44)(16,"polygon",45)(17,"polyline",46),n(),L(),a(18,"div",47),v(19,we,2,1,null,null,te),n()(),a(21,"div",48),m(22,"span",49),r(23," Clicks "),m(24,"span",50),r(25," Impressions "),n()(),p(26,Se,19,1,"div",51)),o&2){let e=d(2);l(4),g('Filtered to "',e.keyword().keyword,'"'),l(2),f("viewBox","0 0 "+e.svgW+" "+e.svgH),l(8),f("points",e.gscImpAreaPoints()),l(),f("points",e.gscImpLinePoints()),l(),f("points",e.gscClickAreaPoints()),l(),f("points",e.gscClickLinePoints()),l(2),y(e.gscData().byDate),l(7),s(e.gscData().topPages.length?26:-1)}}function Ee(o,t){if(o&1&&(a(0,"div",10)(1,"div",11)(2,"div",12),r(3,"Avg. Monthly Searches"),n(),a(4,"div",13),r(5),c(6,"number"),n(),p(7,de,2,0,"div",14),n(),a(8,"div",15)(9,"div",12),r(10,"Competition"),n(),a(11,"div",13),p(12,se,2,3,"span",16)(13,ce,1,0),n(),p(14,pe,3,4,"div",14),n(),a(15,"div",17)(16,"div",12),r(17,"CPC Range"),n(),a(18,"div",18),p(19,me,3,10)(20,xe,1,0),n()(),a(21,"div",19)(22,"div",12),r(23,"GSC Clicks (90d)"),n(),a(24,"div",13),r(25),c(26,"number"),n(),p(27,ge,2,0,"div",14),n(),a(28,"div",20)(29,"div",12),r(30,"GSC Impressions (90d)"),n(),a(31,"div",13),r(32),c(33,"number"),n()(),a(34,"div",21)(35,"div",12),r(36,"Avg. GSC Position"),n(),a(37,"div",13),r(38),c(39,"number"),n()()(),p(40,ve,13,3,"div",22)(41,ye,3,0,"div",23)(42,De,27,7)),o&2){let e,i=d();l(5),g(" ",i.keyword().searchVolume!=null?b(6,11,i.keyword().searchVolume):"\u2014"," "),l(2),s(i.keyword().searchVolume==null?7:-1),l(5),s(i.keyword().competition&&i.keyword().competition!=="UNSPECIFIED"?12:13),l(2),s(i.keyword().competitionIndex!=null?14:-1),l(5),s(i.keyword().lowTopOfPageBidMicros!=null?19:20),l(6),x(i.keyword().gscClicks!=null?b(26,13,i.keyword().gscClicks):"\u2014"),l(2),s(i.keyword().gscClicks==null?27:-1),l(5),x(i.keyword().gscImpressions!=null?b(33,15,i.keyword().gscImpressions):"\u2014"),l(6),x(i.keyword().gscPosition!=null?h(39,17,i.keyword().gscPosition,"1.1-1"):"\u2014"),l(2),s(i.sortedMonthly().length>0?40:-1),l(),s(i.gscLoading()?41:!((e=i.gscData())==null||e.byDate==null)&&e.byDate.length?42:-1)}}var Ie=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],q=class o{constructor(){this.keywordService=S(J);this.host=S($);this.keywordId="";this.projectId="";this.bloomsnavigate=new D;this.bloomserror=new D;this.svgW=800;this.svgH=120;this.pad={t:10,b:10,l:4,r:4};this.keyword=u(null);this.loading=u(!0);this.syncing=u(!1);this.gscData=u(null);this.gscLoading=u(!1);this.sortedMonthly=C(()=>[...this.keyword()?.monthlySearchVolume??[]].sort((e,i)=>e.year!==i.year?e.year-i.year:e.month-i.month));this.maxMonthlyVol=C(()=>Math.max(1,...this.sortedMonthly().map(t=>t.searches)));this.needsSignIn=C(()=>_.config()!==null&&_.session()===null)}back(){let t={feature:"keywords",view:"list",params:{projectId:this.projectId}};this.bloomsnavigate.emit(t),_.emit(K({type:"navigate"},t))}ngOnInit(){let t=this.host.nativeElement.shadowRoot;if(t&&H(t),this.projectId||(this.projectId=_.project()?.id??""),this.needsSignIn()){this.loading.set(!1);return}if(!this.keywordId){this.loading.set(!1),this.bloomserror.emit({code:"NO_KEYWORD",message:"No keyword to show. Pass keyword-id."});return}this.loadKeyword()}loadKeyword(){this.loading.set(!0),this.keywordService.get(this.keywordId).subscribe({next:t=>{this.keyword.set(t.data),this.loading.set(!1),this.loadGscData(t.data.keyword)},error:()=>this.loading.set(!1)})}loadGscData(t){this.gscLoading.set(!0),this.keywordService.getGscData(this.projectId,t).subscribe({next:e=>{this.gscData.set(e.data),this.gscLoading.set(!1)},error:()=>this.gscLoading.set(!1)})}sync(){this.syncing()||(this.syncing.set(!0),this.keywordService.sync(this.keywordId).subscribe({next:t=>{this.keyword.set(t.data),this.syncing.set(!1),t.data.keyword&&this.loadGscData(t.data.keyword)},error:()=>this.syncing.set(!1)}))}volBarPct(t){return Math.round(t/this.maxMonthlyVol()*100)}monthLabel(t){return`${Ie[(t.month??1)-1]} ${t.year}`}chartCoords(t,e){if(!t.length)return[];let{t:i,b:k,l:B,r:Q}=this.pad,X=this.svgW-B-Q,T=this.svgH-i-k;return t.map((Z,ee)=>({x:B+ee/Math.max(t.length-1,1)*X,y:i+T-Z/e*T}))}pointsStr(t){return t.map(e=>`${e.x.toFixed(1)},${e.y.toFixed(1)}`).join(" ")}areaPoints(t){if(!t.length)return"";let e=this.svgH-this.pad.b;return`${t[0].x},${e} ${this.pointsStr(t)} ${t[t.length-1].x},${e}`}gscClickLinePoints(){let t=this.gscData()?.byDate??[],e=Math.max(1,...t.map(i=>i.clicks));return this.pointsStr(this.chartCoords(t.map(i=>i.clicks),e))}gscClickAreaPoints(){let t=this.gscData()?.byDate??[],e=Math.max(1,...t.map(i=>i.clicks));return this.areaPoints(this.chartCoords(t.map(i=>i.clicks),e))}gscImpLinePoints(){let t=this.gscData()?.byDate??[],e=Math.max(1,...t.map(i=>i.impressions));return this.pointsStr(this.chartCoords(t.map(i=>i.impressions),e))}gscImpAreaPoints(){let t=this.gscData()?.byDate??[],e=Math.max(1,...t.map(i=>i.impressions));return this.areaPoints(this.chartCoords(t.map(i=>i.impressions),e))}pageBasename(t){try{let e=new URL(t);return e.pathname==="/"?e.hostname:e.pathname}catch{return t}}static{this.\u0275fac=function(e){return new(e||o)}}static{this.\u0275cmp=V({type:o,selectors:[["blooms-keyword-detail"]],inputs:{keywordId:"keywordId",projectId:"projectId"},outputs:{bloomsnavigate:"bloomsnavigate",bloomserror:"bloomserror"},decls:7,vars:2,consts:[[1,"kd-page"],[1,"kd-header"],["type","button",1,"kd-back",3,"click"],[1,"kd-loading"],[1,"kd-title-row"],[1,"kd-title"],[1,"kd-sync-btn",3,"click","disabled"],[1,"kd-last-sync"],[1,"kd-spinner"],[1,"kd-spinner-lg"],[1,"kpi-row"],[1,"kpi-card","kpi-card--blue"],[1,"kpi-card__label"],[1,"kpi-card__value"],[1,"kpi-card__note"],[1,"kpi-card","kpi-card--amber"],[1,"comp-badge",3,"class"],[1,"kpi-card","kpi-card--green"],[1,"kpi-card__value","kpi-cpc"],[1,"kpi-card","kpi-card--purple"],[1,"kpi-card","kpi-card--teal"],[1,"kpi-card","kpi-card--rose"],[1,"chart-card"],[1,"chart-card","chart-card--loading"],[1,"comp-badge"],[1,"chart-card__header"],[1,"vol-chart"],[1,"vol-bars"],[1,"vol-bar-col",3,"appTooltip"],[1,"vol-x-labels"],[1,"vol-chart__max"],[1,"vol-bar-fill"],[1,"vol-x-label"],[1,"kd-spinner-sm"],[1,"chart-card__sub"],[1,"trend-chart"],["preserveAspectRatio","none",1,"trend-svg"],["id","kd-grad-clicks","x1","0","y1","0","x2","0","y2","1"],["offset","0%","stop-color","#2563eb","stop-opacity","0.25"],["offset","100%","stop-color","#2563eb","stop-opacity","0"],["id","kd-grad-imp","x1","0","y1","0","x2","0","y2","1"],["offset","0%","stop-color","#9b6cf0","stop-opacity","0.18"],["offset","100%","stop-color","#9b6cf0","stop-opacity","0"],["fill","url(#kd-grad-imp)"],["fill","none","stroke","#9b6cf0","stroke-width","1.5","stroke-linejoin","round"],["fill","url(#kd-grad-clicks)"],["fill","none","stroke","#2563eb","stroke-width","2","stroke-linejoin","round"],[1,"trend-x-labels"],[1,"trend-legend"],[1,"legend-dot","legend-dot--blue"],[1,"legend-dot","legend-dot--purple"],[1,"data-card"],[1,"trend-x-label"],[1,"data-card__header"],[1,"data-table"],[1,"page-cell",3,"appTooltip"],[1,"num-cell","blue-val"],[1,"num-cell"],[1,"num-cell","pos-val"]],template:function(e,i){e&1&&(a(0,"div",0)(1,"div",1)(2,"button",2),E("click",function(){return i.back()}),r(3,"\u2190 Keywords"),n(),p(4,re,7,4),n(),p(5,le,4,0,"div",3)(6,Ee,43,20),n()),e&2&&(l(4),s(i.keyword()?4:-1),l(),s(i.loading()?5:i.keyword()?6:-1))},dependencies:[R,N,O,U,W],styles:[`@charset "UTF-8";:host{--color-text: var(--color-text, #5d5f71);--color-text-muted: var(--color-text-muted, #9395a5);--color-bg: var(--color-bg, #f7f5fb);--color-card-bg: var(--color-card-bg, #ffffff);--color-border: var(--color-border, #ede9f6);--color-hover: var(--color-hover, #f5f2fb);--color-accent: var(--color-accent, #e84855);--radius-sm: var(--radius-sm, 6px);--radius-md: var(--radius-md, 10px);--radius-lg: var(--radius-lg, 16px);display:block;font-family:var(--font-sans, "Poppins", system-ui, -apple-system, sans-serif);color:var(--color-text)}:host>*{letter-spacing:normal;word-spacing:normal;line-height:1.5;text-transform:none;text-indent:0;font-style:normal;font-weight:400;font-variant:normal;text-align:left;white-space:normal}*,*:before,*:after{box-sizing:border-box}.btn{display:inline-flex;align-items:center;gap:6px;padding:9px 18px;border-radius:var(--radius-md);font-family:inherit;font-size:13px;font-weight:600;cursor:pointer;border:1px solid transparent;transition:background .15s,border-color .15s,box-shadow .15s,opacity .15s;text-decoration:none;white-space:nowrap}.btn:disabled{opacity:.5;cursor:not-allowed;pointer-events:none}.btn-sm{padding:6px 12px;font-size:12px}.btn-primary{background:var(--color-accent);color:#fff;border-color:var(--color-accent)}.btn-primary:hover:not(:disabled){background:#d13d4a;border-color:#d13d4a;box-shadow:0 2px 8px color-mix(in srgb,var(--color-accent) 30%,transparent)}.btn-outline{background:transparent;color:var(--color-text);border-color:var(--color-border)}.btn-outline:hover:not(:disabled){background:var(--color-hover);border-color:#d5d0e4}.btn-ghost{background:transparent;color:var(--color-text-muted);border-color:transparent}.btn-ghost:hover:not(:disabled){background:var(--color-hover);color:var(--color-text)}
2
+ `,`.kd-page{padding:24px;max-width:1100px}.kd-header{margin-bottom:24px}.kd-back{background:none;border:0;cursor:pointer;font-family:inherit;display:inline-flex;align-items:center;gap:4px;font-size:13px;font-weight:500;color:var(--color-accent, #2563eb);text-decoration:none;padding:4px 8px;border-radius:6px;transition:background .15s}.kd-back:hover{background:var(--color-primary-soft, #eff6ff)}.kd-title-row{display:flex;align-items:center;gap:16px;margin-top:12px;flex-wrap:wrap}.kd-title{font-size:24px;font-weight:700;color:var(--color-text);margin:0}.kd-sync-btn{display:inline-flex;align-items:center;gap:6px;padding:7px 16px;border:1.5px solid var(--color-border);border-radius:8px;background:var(--color-card-bg);color:var(--color-text);font-size:13px;font-weight:600;cursor:pointer;transition:background .15s}.kd-sync-btn:hover:not([disabled]){background:var(--color-hover)}.kd-sync-btn[disabled]{opacity:.6;cursor:not-allowed}.kd-last-sync{font-size:12px;color:var(--color-text-muted);margin:6px 0 0}.kd-loading{display:flex;flex-direction:column;align-items:center;gap:16px;padding:80px 24px;color:var(--color-text-muted);font-size:14px}.kd-spinner-lg{width:36px;height:36px;border-radius:50%;border:3px solid var(--color-border);border-top-color:#2563eb;animation:spin .8s linear infinite}.kd-spinner-sm{display:inline-block;width:14px;height:14px;border-radius:50%;border:2px solid var(--color-border);border-top-color:#2563eb;animation:spin .8s linear infinite}.kd-spinner{display:inline-block;width:11px;height:11px;border-radius:50%;border:2px solid rgba(255,255,255,.3);border-top-color:var(--color-text-muted);animation:spin .7s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.kpi-row{display:grid;grid-template-columns:repeat(6,1fr);gap:12px;margin-bottom:20px}@media (max-width: 1024px){.kpi-row{grid-template-columns:repeat(3,1fr)}}@media (max-width: 600px){.kpi-row{grid-template-columns:repeat(2,1fr)}}.kpi-card{background:var(--color-card-bg);border:1px solid var(--color-border);border-radius:12px;padding:16px;border-top:3px solid transparent}.kpi-card--blue{border-top-color:#2563eb}.kpi-card--amber{border-top-color:#d97706}.kpi-card--green{border-top-color:#16a34a}.kpi-card--purple{border-top-color:#9b6cf0}.kpi-card--teal{border-top-color:#0891b2}.kpi-card--rose{border-top-color:#e11d48}.kpi-card__label{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--color-text-muted);margin-bottom:6px}.kpi-card__value{font-size:18px;font-weight:700;color:var(--color-text)}.kpi-card__note{font-size:10px;color:var(--color-text-muted);margin-top:4px}.kpi-cpc{font-size:14px}.comp-badge{display:inline-block;font-size:11px;font-weight:700;padding:3px 10px;border-radius:20px;text-transform:uppercase;letter-spacing:.04em}.comp-low{background:#dcfce7;color:#166534}.comp-medium{background:#fef3c7;color:#92400e}.comp-high{background:#fee2e2;color:#991b1b}.chart-card{background:var(--color-card-bg);border:1px solid var(--color-border);border-radius:12px;padding:20px;margin-bottom:20px}.chart-card--loading{display:flex;align-items:center;gap:10px;font-size:13px;color:var(--color-text-muted)}.chart-card__header{font-size:14px;font-weight:700;color:var(--color-text);margin-bottom:16px;display:flex;align-items:center;gap:10px;flex-wrap:wrap}.chart-card__sub{font-size:11px;font-weight:400;color:var(--color-text-muted)}.chart-card__max{font-size:11px;color:var(--color-text-muted);text-align:right;margin-top:6px}.vol-chart{display:flex;flex-direction:column}.vol-bars{display:flex;align-items:flex-end;gap:2px;height:120px}.vol-bar-col{flex:1;display:flex;align-items:flex-end;height:100%;cursor:default}.vol-bar-fill{width:100%;background:linear-gradient(to top,#2563eb,#60a5fa);border-radius:3px 3px 0 0;min-height:2px;transition:height .3s ease}.vol-x-labels{display:flex;justify-content:space-between;padding:4px 0 0}.vol-x-label{font-size:10px;color:var(--color-text-muted);flex:1;text-align:center}.trend-chart{position:relative}.trend-svg{width:100%;height:160px;display:block}.trend-x-labels{display:flex;justify-content:space-between;padding:4px 0 0}.trend-x-label{font-size:10px;color:var(--color-text-muted);flex:1;text-align:center}.trend-legend{display:flex;align-items:center;gap:12px;font-size:12px;color:var(--color-text-muted);margin-top:8px}.legend-dot{display:inline-block;width:10px;height:10px;border-radius:50%;margin-right:4px}.legend-dot--blue{background:#2563eb}.legend-dot--purple{background:#9b6cf0}.data-card{background:var(--color-card-bg);border:1px solid var(--color-border);border-radius:12px;padding:20px;margin-bottom:20px;overflow:hidden}.data-card__header{font-size:13px;font-weight:700;color:var(--color-text);margin-bottom:14px}.data-table{width:100%;border-collapse:collapse;font-size:12px}.data-table th{padding:0 8px 8px;text-align:left;font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--color-text-muted);border-bottom:1px solid var(--color-border)}.data-table td{padding:7px 8px;border-bottom:1px solid var(--color-border);color:var(--color-text)}.data-table tr:last-child td{border-bottom:none}.page-cell{max-width:200px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.num-cell{text-align:right;white-space:nowrap;color:var(--color-text-muted)}.blue-val{color:#2563eb;font-weight:600}.pos-val{color:#16a34a;font-weight:600}
3
+ `],encapsulation:3,changeDetection:0})}};export{q as BloomsKeywordDetailComponent};