PageSourceSearch

https://ghostfol.io/en/chunk-ClnDc4V8.js

js ghostfol.io collected 2026-09-25 20:42:11 UTC 27,032 bytes, 1 lines download raw bytes

1import{r as C,t as A}from"./chunk-JAOQM8Cn.js";import{$t as WE,Ai as yy,Dr as nB,Ei as wI,En as ab,Et as Q_,Gn as e_,In as cM,Ir as oB,Jn as ev,Kt as Uu,Ln as c_,Mn as bs,O as Fp,Oi as xT,Pn as cB,Qr as rb,Qt as Vu,Ti as vy,Tn as a_,Vn as di,Vr as pb,ai as sb,bi as uv,cn as Yb,dr as ib,g as C$1,hn as Zy,j as Gi,jr as nb,k as G_,kt as Qs,li as tB,m as Bw,n as $u,qt as Uy,vr as jp,xn as _e,xr as k_,yt as OM}from"./chunk-CURRVo-b.js";import"./chunk-BjogDFms.js";import"./chunk-CWEajFkI.js";import"./chunk-Ck8iuz3S.js";import{h as za,i as La,p as ur}from"./chunk-VOQLMcKZ.js";import{$ as ns,nt as os,yt as za$1}from"./chunk-Bs0bKjUL.js";import{a as Ge,d as W,s as It}from"./chunk-BYkKVaWx.js";import{d as Qn,o as Fn$1,s as Jn}from"./chunk-DDb967TJ.js";import"./chunk-C6wkjQDx.js";import{r as zt$1,t as Vt$1}from"./chunk-C2t52SQI.js";import{i as x,r as v}from"./chunk-BNN5XOJO.js";import"./chunk-Cy8M3DFp.js";import{A as Gpe,J as Lpe,N as HB,Ot as WB,Qn as sv,T as GB,V as JQ,_r as yQ,dn as fv,f as Ct,l as CQ,nr as upe,sr as wQ,xt as Sx}from"./chunk-BibJlzT8.js";import"./chunk-CD_IkxAN.js";import"./chunk-C7aPY-LE.js";import{i as n,r as l,t as a}from"./chunk-DWHaKLt5.js";import{n as s,t as c}from"./chunk-BwV9B6ng.js";import{A as On$1,Dt as re,J as _i,S as K3,W as Y3,b as J3,f as Fn$2,p as G3,rt as dn}from"./chunk-DBOT4Gq9.js";import{s as nt}from"./chunk-OeT5qc2p.js";import{r as w,t as P}from"./chunk-dv8Le2lA.js";import{i as Oi,o as ft,r as Mn$1,s as ut}from"./chunk-CSAyoN4O.js";import"./chunk-76IM69fa.js";import{c as en,n as J,p as ti,u as nn}from"./chunk-BEZOqHAC.js";import{a as en$1,i as St,n as G,r as I,t as $t}from"./chunk-B1sBjV-6.js";import{n as K,r as U,t as B}from"./chunk-ChUOWPps.js";import{n as rt}from"./chunk-C6FyLIgY.js";import{t as e}from"./chunk-DP-UTisU2.js";import"./chunk-CduE4OeC2.js";import{a as it,i as gt}from"./chunk-Ds0l1azp2.js";import{C as Sl,E as Uc,F as ah,L as be,M as Yc,R as ch,W as ih,Z as lh,_ as Nc,at as zc,k as Wc,rt as sh,t as $c,w as To,z as de}from"./chunk-Bb6HVS-M2.js";import"./chunk-B181-Klw2.js";import{n as vo,r as yo,t as Po}from"./chunk-DgoBu-sn2.js";import{t as U$1}from"./chunk-2letIMRR2.js";import{n as Z,t as M}from"./chunk-ClaMunTs.js";import{a as M$1,c as z,o as T,r as G$1,s as k,t as B$1}from"./chunk-EVdQ_PfA.js";import{n as ie,r as ne,t as G$2}from"./chunk-DzvBRGZY.js";import{a as i,n as C$2,s as t}from"./chunk-B5Oq6vuy.js";import"./chunk-CDp7DkPM2.js";import{n as et,t as H}from"./chunk-d3W3duDB2.js";import{n as W$1,t as O}from"./chunk-DfMrYv1a2.js";import{n as ee,t as be$1}from"./chunk-Oy0n-W6T2.js";function En(t,c){t&1&&vy(0,`gf-premium-indicator`,7)}function Tn(t,c){if(t&1&&(bs(0,`mat-option`,11),k_(1),Vu()),t&2){let n=c.$implicit;yy(`value`,n.id),Bw(),uv(n.name)}}function vn(t,c){if(t&1&&(bs(0,`mat-option`,12)(1,`div`,16),vy(2,`ion-icon`,17),bs(3,`span`),Yb(4,3),Vu()()()),t&2)yy(`routerLink`,e_().routerLinkAdminControlMarketData)}function In(t,c){t&1&&vy(0,`ngx-skeleton-loader`,14),t&2&&yy(`theme`,G_(1,hn))}var An;var hn;var zt;var wt=A(()=>{To();fv();HB();l();s();yo();re();OM();Fn$1();ti();za();G3();zc();U$1();K3();J3();U();OM();It();ti();U();za();An=[`chartCanvas`],hn=()=>({height:`100%`,width:`100%`});zt=(()=>{class t{constructor(){this.benchmark=nB(),this.benchmarkDataItems=nB([]),this.benchmarks=nB(),this.colorScheme=nB.required(),this.isLoading=nB(),this.locale=nB(WB()),this.performanceDataItems=nB.required(),this.user=nB(),this.benchmarkChanged=tB(),this.routerLinkAdminControlMarketData=c.adminControl.subRoutes.marketData.routerLink,this.chartCanvas=oB.required(`chartCanvas`),Sl.register(lh,ih,de,sh,ch,ah),Po(),nt({arrowForwardOutline:dn})}ngOnChanges(){this.hasPermissionToAccessAdminControl=n(this.user()?.permissions,a.accessAdminControl),this.performanceDataItems()&&this.initialize()}ngOnDestroy(){this.chart?.destroy()}onChangeBenchmark(n){this.benchmarkChanged.emit(n)}initialize(){let n={};for(let{date:e,value:d}of this.benchmarkDataItems())n[e]=d;let a={datasets:[{backgroundColor:`rgb(${yQ.r}, ${yQ.g}, ${yQ.b})`,borderColor:`rgb(${yQ.r}, ${yQ.g}, ${yQ.b})`,borderWidth:2,data:this.performanceDataItems().map(({date:e,value:d})=>({x:Lpe(e)?.getTime()??null,y:d*100})),label:"Portfolio"},{backgroundColor:`rgb(${wQ.r}, ${wQ.g}, ${wQ.b})`,borderColor:`rgb(${wQ.r}, ${wQ.g}, ${wQ.b})`,borderWidth:2,data:this.performanceDataItems().map(({date:e})=>({x:Lpe(e)?.getTime()??null,y:n[e]})),label:this.benchmark()?.name??"Benchmark"}]};this.chartCanvas&&(this.chart?(this.chart.data=a,this.chart.options.plugins??={},this.chart.options.plugins.tooltip=this.getTooltipPluginConfiguration(),this.chart.update(
1)):this.chart=new Sl(this.chartCanvas().nativeElement,{data:a,options:{animation:!1,elements:Wc(this.colorScheme()),interaction:{intersect:!1,mode:`index`},maintainAspectRatio:!0,plugins:{annotation:{annotations:{yAxis:Uc(this.colorScheme())}},legend:{display:!1},tooltip:this.getTooltipPluginConfiguration(),verticalHoverLine:{color:be(this.colorScheme())}},responsive:!0,scales:{x:Nc({colorScheme:this.colorScheme(),locale:this.locale()}),y:$c({colorScheme:this.colorScheme(),tickCallback:e=>`${Number(e).toFixed(2)} %`})}},plugins:[Yc(this.chartCanvas(),this.colorScheme())],type:`line`}))}getTooltipPluginConfiguration(){return vo({colorScheme:this.colorScheme(),locale:this.locale(),unit:`%`})}static{this.ɵfac=function(a){return new(a||t)}}static{this.ɵcmp=xT({type:t,selectors:[[`gf-benchmark-comparator`]],viewQuery:function(a,e){a&1&&Zy(e.chartCanvas,An,5),a&2&&a_()},inputs:{benchmark:[1,`benchmark`],benchmarkDataItems:[1,`benchmarkDataItems`],benchmarks:[1,`benchmarks`],colorScheme:[1,`colorScheme`],isLoading:[1,`isLoading`],locale:[1,`locale`],performanceDataItems:[1,`performanceDataItems`],user:[1,`user`]},outputs:{benchmarkChanged:`benchmarkChanged`},features:[WE],decls:19,vars:8,consts:()=>{let n;n="Performance";let a;a="Compare with...";let e;return e="Manage Benchmarks",[[`chartCanvas`,``],n,a,e,[1,`mb-2`,`row`],[1,`col-md-6`,`col-xs-12`,`d-flex`],[1,`align-items-center`,`d-flex`,`flex-grow-1`,`h5`,`mb-0`,`py-2`,`text-truncate`],[1,`ml-1`],[1,`col-md-6`,`col-xs-12`,`d-flex`,`justify-content-end`],[`appearance`,`outline`,`color`,`accent`,1,`gf-form-field-dense`,`w-100`,`without-hint`],[`name`,`benchmark`,3,`selectionChange`,`disabled`,`value`],[3,`value`],[3,`routerLink`],[1,`chart-container`],[`animation`,`pulse`,3,`theme`],[1,`h-100`],[1,`align-items-center`,`d-flex`],[`name`,`arrow-forward-outline`,1,`mr-2`,`text-muted`]]},template:function(a,e){a&1&&(bs(0,`div`,4)(1,`div`,5)(2,`div`,6)(3,`span`),Yb(4,1),Vu(),nb(5,En,1,0,`gf-premium-indicator`,7),Vu()(),bs(6,`div`,8)(7,`mat-form-field`,9)(8,`mat-label`),Yb(9,2),Vu(),bs(10,`mat-select`,10),Uy(`selectionChange`,function(_){return e.onChangeBenchmark(_.value)}),vy(11,`mat-option`,11),sb(12,Tn,2,2,`mat-option`,11,ib),nb(14,vn,5,1,`mat-option`,12),Vu()()()(),bs(15,`div`,13),nb(16,In,1,2,`ngx-skeleton-loader`,14),vy(17,`canvas`,15,0),Vu()),a&2&&(Bw(5),rb(e.user()?.subscription?.type===`Basic`?5:-1),Bw(5),yy(`disabled`,e.user()?.subscription?.type===`Basic`)(`value`,e.benchmark()?.id),Bw(),yy(`value`,null),Bw(),ab(e.benchmarks()),Bw(2),rb(e.hasPermissionToAccessAdminControl?14:-1),Bw(2),rb(e.isLoading()?16:-1),Bw(),ev(`display`,e.isLoading()?`none`:`block`))},dependencies:[Jn,_i,Y3,nn,Ge,W,en,J,K,B,Qn,La,ur],styles:[`[_nghost-%COMP%]{display:block}[_nghost-%COMP%]   .chart-container[_ngcontent-%COMP%]{aspect-ratio:16/9}[_nghost-%COMP%]   .chart-container[_ngcontent-%COMP%]   ngx-skeleton-loader[_ngcontent-%COMP%]{height:100%}`]})}}return t})()});function Nn(t,c){t&1&&vy(0,`gf-premium-indicator`,63)}function Ln(t,c){t&1&&vy(0,`mat-spinner`,64),t&2&&yy(`diameter`,16)}function On(t,c){t&1&&vy(0,`ion-icon`,65)}function bn(t,c){if(t&1&&nb(0,Ln,1,1,`mat-spinner`,64)(1,On,1,0,`ion-icon`,65),t&2)rb(e_(2).isLoadingPortfolioPrompt?0:1)}function Mn(t,c){t&1&&vy(0,`gf-premium-indicator`,63)}function yn(t,c){t&1&&vy(0,`mat-spinner`,64),t&2&&yy(`diameter`,16)}function Rn(t,c){t&1&&vy(0,`ion-icon`,65)}function kn(t,c){if(t&1&&nb(0,yn,1,1,`mat-spinner`,64)(1,Rn,1,0,`ion-icon`,65),t&2)rb(e_(2).isLoadingAnalysisPrompt?0:1)}function Gn(t,c){if(t&1){let n=pb();bs(0,`div`,23)(1,`div`,31)(2,`div`,37)(3,`button`,58,0),Uy(`click`,function(e){return e.stopPropagation()}),vy(5,`ion-icon`,59),Vu(),bs(6,`mat-menu`,60,1)(8,`div`,61),Uy(`click`,function(e){return e.stopPropagation()}),bs(9,`button`,62),Uy(`click`,function(){Fp(n);return jp(e_().onCopyPromptToClipboard(`portfolio`))}),bs(10,`span`,46),nb(11,Nn,1,0,`gf-premium-indicator`,63)(12,bn,2,1),$u(13),Yb(14,17),Qs(),Vu()(),bs(15,`button`,62),Uy(`click`,function(){Fp(n);return jp(e_().onCopyPromptToClipboard(`analysis`))}),bs(16,`span`,46),nb(17,Mn,1,0,`gf-premium-indicator`,63)(18,kn,2,1),$u(19),Yb(20,18),Qs(),Vu()()()()()()()}if(t&2){let n=c_(7),a=e_();Bw(3),yy(`matMenuTriggerFor`,n),Bw(6),yy(`disabled`,!a.hasPermissionToReadAiPrompt),Bw(2),rb(a.user?.subscription?.type===`Basic`?11:12),Bw(4),yy(`disabled`,!a.hasPermissionToReadAiPrompt),Bw(2),rb(a.user?.subscription?.type===`Basic`?17:18)}}function $n(t,c){t&1&&vy(0,`gf-premium-indicator`,36)}function Dn(t,c){t&1&&vy(0,`gf-premium-indicator`,36)}function Yn(t,c){t&1&&(bs(0,`abbr`,43),k_(1,`(ROAI)`),Vu())}function Bn(t,c){if(t&1&&(bs(0,`li`,48)(1,`a`,66)(2,`div`,67),k_(3),Vu(),bs(4,`div`,37),vy(5,`gf-value`,68),Vu()()()),t&2){let n=c.$implicit,a=e_();Bw(),yy(`queryParams`,Q_(7,Xt,n.assetProfile.dataSource,n.assetProfile.symbol))(`routerLink`,G_(10,Ht)),Bw(2),Uu(` `,n.assetProfile.name,` `),Bw(2),yy(`colorizeSign`,!0)(`isPercent`,!0)(`locale`,a.user?.settings?.locale)(`value`,n.netPerformancePercentWithCurrencyEffect)}}function Fn(t,c){t&1&&vy(0,`ngx-skeleton-loader`,49),t&2&&yy(`theme`,G_(1,Vt))}function zn(t,c){if(t&1&&(bs(0,`li`,48)(1,`a`,66)(2,`div`,67),k_(3),Vu(),bs(4,`div`,37),vy(5,`gf-value`,68),Vu()()()),t&2){let n=c.$implicit,a=e_();Bw(),yy(`queryParams`,Q_(7,Xt,n.assetProfile.dataSource,n.assetProfile.symbol))(`routerLink`,G_(10,Ht)),Bw(2),Uu(` `,n.assetProfile.name,` `),Bw(2),yy(`colorizeSign`,!0)(`isPercent`,!0)(`locale`,a.user?.settings?.locale)(`value`,n.netPerformancePercentWithCurrencyEffect)}}function wn(t,c){t&1&&vy(0,`ngx-skeleton-loader`,49),t&2&&yy(`theme`,G_(1,Vt))}function Xn(t,c){t&1&&vy(0,`gf-premium-indicator`,36)}function Hn(t,c){t&1&&vy(0,`gf-premium-indicator`,36)}function Vn(t,c){if(t&1&&(bs(0,`div`,55)(1,`div`,69)(2,`gf-value`,70),Yb(3,19),Vu()(),bs(4,`div`,69)(5,`gf-value`,70),Yb(6,20),Vu()()()),t&2){let n=e_();Bw(2),yy(`unit`,n.unitCurrentStreak)(`value`,n.streaks?.currentStreak),Bw(3),yy(`unit`,n.unitLongestStreak)(`value`,n.streaks?.longestStreak)}}function xn(t,c){t&1&&vy(0,`gf-premium-indicator`,36)}var S;var Xt;var Ht;var Vt;var xt;var Wt=A(()=>{wt();ee();Mn$1();fv();HB();l();C$2();W$1();GB();re();it();H();e();x();OM();w();za$1();M$1();St();G$2();Vt$1();za();G3();K3();J3();S=C(Sx());sv();ft();U();di();OM();za$1();M$1();St();G$2();U();za();Xt=(t,c)=>({dataSource:t,holdingDetailDialog:!0,symbol:c}),Ht=()=>[],Vt=()=>({height:`1.5rem`,width:`100%`});xt=(()=>{class t$1{constructor(){this.benchmarkDataItems=[],this.dividendTimelineDataLabel="Dividend",this.investmentTimelineDataLabel="Invested Capital",this.mode=Gi(`month`),this.modeOptions=[{label:"Monthly",value:`month`},{label:"Yearly",value:`year`}],this.PerformanceCalculationType=O,this.portfolioEvolutionDataLabel="Investment",this.precision=2,this.actionsMenuButton=oB.required($t),this.deviceType=cM(()=>this.deviceDetectorService.deviceInfo().deviceType),this.changeDetectorRef=C$1(cB),this.clipboard=C$1(v),this.dataService=C$1(gt),this.destroyRef=C$1(_e),this.deviceDetectorService=C$1(ut),this.snackBar=C$1(zt$1),this.userService=C$1(Oi);let{benchmarks:n}=this.dataService.fetchInfo();this.benchmarks=n,nt({copyOutline:On$1,ellipsisVertical:Fn$2})}get savingsRate(){if(this.savingsRatePerMonth)return this.mode()===`year`?this.savingsRatePerMonth*12:this.savingsRatePerMonth}ngOnInit(){this.userService.stateChanged.pipe(P(this.destroyRef)).subscribe(n$1=>{n$1?.user&&(this.user=n$1.user,this.benchmark=this.benchmarks.find(({id:a})=>a===this.user.settings?.benchmark),this.hasPermissionToReadAiPrompt=n(this.user.permissions,a.readAiPrompt),this.update()),this.changeDetectorRef.markForCheck()})}onChangeBenchmark(n){this.dataService.putUserSetting({benchmark:n}).pipe(P(this.destroyRef)).subscribe(()=>{this.userService.get(!0).pipe(P(this.destroyRef)).subscribe(a=>{this.user=a,this.changeDetectorRef.markForCheck()})})}onChangeGroupBy(n){this.mode.set(n),this.fetchDividendsAndInvestments()}onCopyPromptToClipboard(n){n===`analysis`?this.isLoadingAnalysisPrompt=!0:n===`portfolio`&&(this.isLoadingPortfolioPrompt=!0),this.dataService.fetchPrompt({mode:n,filters:this.userService.getFilters()}).pipe(P(this.destroyRef)).subscribe(({prompt:a})=>{this.clipboard.copy(a),this.snackBar.open(`✅ `+"AI prompt has been copied to the clipboard","Open Duck.ai"+` →`,{duration:Ct(`7 seconds`)}).onAction().pipe(P(this.destroyRef)).subscribe(()=>{window.open(`https://duck.ai`,`_blank`)}),this.actionsMenuButton().closeMenu(),n===`analysis`?this.isLoadingAnalysisPrompt=!1:n===`portfolio`&&(this.isLoadingPortfolioPrompt=!1),this.changeDetectorRef.markForCheck()})}showValuesInPercentage(){return!i(this.user?.scopes,t.portfolioReadValues)||this.user?.settings?.isRestrictedView}fetchDividendsAndInvestments(){this.isLoadingDividendTimelineChart=!0,this.isLoadingInvestmentTimelineChart=!0,wI({divi
1dends:this.dataService.fetchDividends({filters:this.userService.getFilters(),groupBy:this.mode(),range:this.user?.settings?.dateRange??CQ}),investments:this.dataService.fetchInvestments({filters:this.userService.getFilters(),groupBy:this.mode(),range:this.user?.settings?.dateRange??CQ})}).pipe(P(this.destroyRef)).subscribe(({dividends:{dividends:n},investments:{investments:a,savingsRate:e,streaks:d}})=>{let _=(0,S.keyBy)(n,`date`),I=(0,S.keyBy)(a,`date`),T=(0,S.sortBy)((0,S.union)(Object.keys(_),Object.keys(I)));this.dividendsByGroup=T.map(P=>({date:P,investment:_[P]?.investment??0})),this.investmentsByGroup=T.map(P=>({date:P,investment:I[P]?.investment??0})),this.savingsRatePerMonth=e,this.streaks=d,this.unitCurrentStreak=this.mode()===`year`?this.streaks?.currentStreak===1?Gpe(`YEAR`):Gpe(`YEARS`):this.streaks?.currentStreak===1?Gpe(`MONTH`):Gpe(`MONTHS`),this.unitLongestStreak=this.mode()===`year`?this.streaks?.longestStreak===1?Gpe(`YEAR`):Gpe(`YEARS`):this.streaks?.longestStreak===1?Gpe(`MONTH`):Gpe(`MONTHS`),this.isLoadingDividendTimelineChart=!1,this.isLoadingInvestmentTimelineChart=!1,this.changeDetectorRef.markForCheck()})}update(){this.isLoadingInvestmentChart=!0,this.dataService.fetchPortfolioPerformance({filters:this.userService.getFilters(),range:this.user?.settings?.dateRange??CQ}).pipe(P(this.destroyRef)).subscribe(({chart:n,dateOfFirstActivity:a,performance:e})=>{this.dateOfFirstActivity=a??new Date,this.investments=[],this.performance=e,this.performanceDataItems=[],this.performanceDataItemsInPercentage=[];for(let[d,{date:_,netPerformanceInPercentageWithCurrencyEffect:I,totalInvestmentValueWithCurrencyEffect:T,valueInPercentage:P,valueWithCurrencyEffect:R}]of(n??[]).entries())(d>0||this.user?.settings?.dateRange===`max`)&&(T!==void 0&&this.investments.push({date:_,investment:T}),this.performanceDataItems.push({date:_,value:(0,S.isNumber)(R)?R:P})),this.performanceDataItemsInPercentage.push({date:_,value:I});this.deviceType()===`mobile`&&this.performance.currentValueInBaseCurrency>=JQ&&(this.precision=0),this.isLoadingInvestmentChart=!1,this.updateBenchmarkDataItems(),this.changeDetectorRef.markForCheck()}),this.dataService.fetchPortfolioHoldings({filters:[...this.userService.getFilters(),{id:`ACTIVE`,type:`HOLDING_TYPE`}],range:this.user?.settings?.dateRange}).pipe(P(this.destroyRef)).subscribe(({holdings:n})=>{let a=(0,S.sortBy)(n.filter(e=>upe(e)&&(0,S.isNumber)(e.netPerformancePercentWithCurrencyEffect)),`netPerformancePercentWithCurrencyEffect`).reverse();this.top3=a.filter(({netPerformancePercentWithCurrencyEffect:e})=>e>0).slice(0,3),this.bottom3=a.filter(({netPerformancePercentWithCurrencyEffect:e})=>e<0).slice(-3).reverse(),this.changeDetectorRef.markForCheck()}),this.fetchDividendsAndInvestments(),this.changeDetectorRef.markForCheck()}updateBenchmarkDataItems(){if(this.benchmarkDataItems=[],this.user.settings.benchmark){let{dataSource:n,symbol:a}=this.benchmarks.find(({id:e})=>e===this.user.settings.benchmark)??{};n&&a&&(this.isLoadingBenchmarkComparator=!0,this.dataService.fetchBenchmarkForUser({dataSource:n,symbol:a,filters:this.userService.getFilters(),range:this.user?.settings?.dateRange??CQ,startDate:this.dateOfFirstActivity}).pipe(P(this.destroyRef)).subscribe(({marketData:e})=>{this.benchmarkDataItems=e.map(({date:d,value:_})=>({date:d,value:_})),this.isLoadingBenchmarkComparator=!1,this.changeDetectorRef.markForCheck()}))}}static{this.ɵfac=function(a){return new(a||t$1)}}static{this.ɵcmp=xT({type:t$1,selectors:[[`gf-analysis-page`]],viewQuery:function(a,e){a&1&&Zy(e.actionsMenuButton,$t,5),a&2&&a_()},decls:121,vars:94,consts:()=>{let n;n="Analysis";let a;a="Total amount";let e;e="Change with currency effect";let d;d="Performance with currency effect";let _;_="Absolute Asset Performance";let I;I="Asset Performance";let T;T="Absolute Currency Performance";let P;P="Currency Performance";let R;R="Absolute Net Performance";let le;le="Net Performance";let ce;ce="Top";let me;me="Bottom";let de;de="Portfolio Evolution";let _e;_e="Investment Timeline";let ue;ue="Dividend Timeline";let fe;fe="Copy portfolio data to clipboard for AI prompt";let pe;pe="Copy AI prompt to clipboard for analysis";let ge;ge="Current Streak";let Se;return Se="Longest Streak",[[`actionsMenuButton`,``],[`actionsMenu`,`matMenu`],n,a,e,d,_,I,T,P,R,le,ce,me,de,_e,ue,fe,pe,ge,Se,[1,`container`],[1,`d-none`,`d-sm-block`,`h3`,`mb-3`,`text-center`],[1,`mb-3`,`row`],[1,`mb-5`,`row`],[1,`col-lg-4`,`mb-3`,`mb-lg-0`],[`appearance`,`outlined`],[`size`,`large`,3,`isCurrency`,`isLoading`,`locale`,`precision`,`unit`,`value`],[`size`,`large`,3,`colorizeSign`,`isCurrency`,`isLoading`,`locale`,`precision`,`unit`,`value`],[1,`col-lg-4`],[`size`,`large`,3,`colorizeSign`,`isLoading`,`isPercent`,`locale`,`value`],[1,`col-lg`],[1,`h-100`,3,`benchmarkChanged`,`benchmark`,`benchmarkDataItems`,`benchmarks`,`colorScheme`,`isLoading`,`locale`,`performanceDataItems`,`user`],[1,`col`],[1,`d-flex`,`py-1`],[1,`align-items-center`,`d-flex`,`flex-grow-1`,`mr-2`,`text-truncate`],[1,`ml-1`],[1,`d-flex`,`justify-content-end`],[`position`,`end`,1,`justify-content-end`,3,`isCurrency`,`isLoading`,`locale`,`unit`,`value`],[1,`d-flex`,`mb-3`,`ml-3`,`py-1`],[1,`flex-grow-1`,`mr-2`,`text-truncate`],[`position`,`end`,1,`justify-content-end`,3,`colorizeSign`,`isLoading`,`isPercent`,`locale`,`value`],[1,`d-flex`,`ml-3`,`py-1`],[`title`,`Return on Average Investment`,1,`d-none`,`d-sm-inline-block`,`initialism`,`ml-2`,`text-muted`],[1,`col-md-6`,`mb-3`],[`appearance`,`outlined`,1,`h-100`],[1,`align-items-center`,`d-flex`],[1,`mb-0`,`ml-1`,`pl-3`],[1,`py-1`],[`animation`,`pulse`,3,`theme`],[1,`align-items-center`,`d-flex`,`mb-4`],[1,`align-items-center`,`d-flex`,`flex-grow-1`,`h5`,`mb-0`,`text-truncate`],[1,`chart-container`],[1,`h-100`,3,`benchmarkDataItems`,`benchmarkDataLabel`,`currency`,`historicalDataItems`,`isInPercentage`,`isLoading`,`locale`],[1,`d-none`,`d-lg-block`,3,`valueChange`,`defaultValue`,`isLoading`,`options`],[1,`row`],[1,`h-100`,3,`benchmarkDataItems`,`benchmarkDataLabel`,`currency`,`groupBy`,`isInPercentage`,`isLoading`,`locale`,`savingsRate`],[1,`h-100`,3,`benchmarkDataItems`,`benchmarkDataLabel`,`currency`,`groupBy`,`isInPercentage`,`isLoading`,`locale`],[`mat-stroked-button`,``,1,`mx-1`,`no-min-width`,`px-2`,3,`click`,`matMenuTriggerFor`],[`name`,`ellipsis-vertical`],[`xPosition`,`before`,1,`no-max-width`],[3,`click`],[`mat-menu-item`,``,3,`click`,`disabled`],[1,`mr-2`],[`color`,`accent`,1,`mr-2`,3,`diameter`],[`name`,`copy-outline`,1,`mr-2`],[1,`d-flex`,3,`queryParams`,`routerLink`],[1,`flex-grow-1`,`mr-2`],[`position`,`end`,1,`justify-content-end`,3,`colorizeSign`,`isPercent`,`locale`,`value`],[1,`col-md-6`,`col-xs-12`,`my-2`],[`size`,`large`,3,`unit`,`value`]]},template:function(a,e){a&1&&(bs(0,`div`,21)(1,`h1`,22),Yb(2,2),Vu(),nb(3,Gn,21,5,`div`,23),bs(4,`div`,24)(5,`div`,25)(6,`mat-card`,26)(7,`mat-card-content`)(8,`gf-value`,27),Yb(9,3),Vu()()()(),bs(10,`div`,25)(11,`mat-card`,26)(12,`mat-card-content`)(13,`gf-value`,28),Yb(14,4),Vu()()()(),bs(15,`div`,29)(16,`mat-card`,26)(17,`mat-card-content`)(18,`gf-value`,30),Yb(19,5),Vu()()()()(),bs(20,`div`,24)(21,`div`,31)(22,`gf-benchmark-comparator`,32),Uy(`benchmarkChanged`,function(_){return e.onChangeBenchmark(_)}),Vu()()(),bs(23,`div`,24)(24,`div`,33)(25,`mat-card`,26)(26,`mat-card-content`)(27,`div`,34)(28,`div`,35)(29,`span`),Yb(30,6),Vu(),nb(31,$n,1,0,`gf-premium-indicator`,36),Vu(),bs(32,`div`,37),vy(33,`gf-value`,38),Vu()(),bs(34,`div`,39)(35,`div`,40),$u(36),Yb(37,7),Qs(),Vu(),bs(38,`div`,37),vy(39,`gf-value`,41),Vu()(),bs(40,`div`,34)(41,`div`,35)(42,`span`),Yb(43,8),Vu(),nb(44,Dn,1,0,`gf-premium-indicator`,36),Vu(),bs(45,`div`,37),vy(46,`gf-value`,38),Vu()(),bs(47,`div`,42)(48,`div`,40),$u(49),Yb(50,9),Qs(),Vu(),bs(51,`div`,37),vy(52,`gf-value`,41),Vu()(),bs(53,`div`),vy(54,`hr`),Vu(),bs(55,`div`,34)(56,`div`,40),$u(57),Yb(58,10),Qs(),Vu(),bs(59,`div`,37),vy(60,`gf-value`,38),Vu()(),bs(61,`div`,42)(62,`div`,40),$u(63),Yb(64,11),Qs(),nb(65,Yn,2,0,`abbr`,43),Vu(),bs(66,`div`,37),vy(67,`gf-value`,41),Vu()()()()()(),bs(68,`div`,24)(69,`div`,44)(70,`mat-card`,45)(71,`mat-card-header`)(72,`mat-card-title`,46),Yb(73,12),Vu()(),bs(74,`mat-card-content`)(75,`ol`,47),sb(76,Bn,6,11,`li`,48,ib),Vu(),bs(78,`div`),nb(79,Fn,1,2,`ngx-skeleton-loader`,49),Vu()()()(),bs(80,`div`,44)(81,`mat-card`,45)(82,`mat-card-header`)(83,`mat-card-title`,46),Yb(84,13),Vu()(),bs(85,`mat-card-content`)(86,`ol`,47),sb(87,zn,6,11,`li`,48,ib),Vu(),bs(89,`div`),nb(90,wn,1,2,`ngx-skeleton-loader`,49),Vu()()()()(),bs(91,`div`,24)(92,`div`,31)(93,`div`,50)(94,`div`,51)(95,`span`),Yb(96,14),Vu(),nb(97,Xn,1,0,`gf-premium-indicator`,36),Vu()(),bs(98,`div`,52),vy(99,`gf-investment-chart`,53),Vu()()(),bs(100,`div`,24)(101,`div`,31)(102,`div`,50)(103,`div`,51)(104,`span`),Yb(105,15),Vu(),nb(106,Hn,1,0,`gf-premium-indicator`,36),Vu(),bs(107,`gf-toggle`,54),Uy(`valueChange`,function(_){return e.onChangeGroupBy(_.value)}),Vu()(),nb(108,Vn,7,4,`div`,55),bs(109,`div`,52),vy(110,`gf-investment-chart`,56),Vu()()(),bs(111,`div`,55)(112,`div`,31)(113,`div`,50)(114,`div`,51)(115,`span`),Yb(116,16),Vu(),nb(117,xn,1,0,`gf-premium-indicator`,36),Vu(),bs(118,`gf-toggle`,54),Uy(`valueChange`,function(_){return e.onChangeGroupBy(_.value)}),Vu()(),bs(119,`div`,52),vy(120,`gf-investment-chart`,57),Vu()()()()),a&2&&(Bw(3),rb(e.user?.settings?.isExperimentalFeatures?3:-1),Bw(5),yy(`
1isCurrency`,!0)(`isLoading`,e.isLoadingInvestmentChart)(`locale`,e.user?.settings?.locale)(`precision`,e.precision)(`unit`,e.user?.settings?.baseCurrency)(`value`,e.performance?.currentValueInBaseCurrency),Bw(5),yy(`colorizeSign`,!0)(`isCurrency`,!0)(`isLoading`,e.isLoadingInvestmentChart)(`locale`,e.user?.settings?.locale)(`precision`,e.precision)(`unit`,e.user?.settings?.baseCurrency)(`value`,e.performance?.netPerformanceWithCurrencyEffect),Bw(5),yy(`colorizeSign`,!0)(`isLoading`,e.isLoadingInvestmentChart)(`isPercent`,!0)(`locale`,e.user?.settings?.locale)(`value`,e.performance?.netPerformancePercentageWithCurrencyEffect),Bw(4),yy(`benchmark`,e.benchmark)(`benchmarkDataItems`,e.benchmarkDataItems)(`benchmarks`,e.benchmarks)(`colorScheme`,e.user?.settings?.colorScheme)(`isLoading`,e.isLoadingBenchmarkComparator||e.isLoadingInvestmentChart)(`locale`,e.user?.settings?.locale)(`performanceDataItems`,e.performanceDataItemsInPercentage)(`user`,e.user),Bw(9),rb(e.user?.subscription?.type===`Basic`?31:-1),Bw(2),yy(`isCurrency`,!0)(`isLoading`,e.isLoadingInvestmentChart)(`locale`,e.user?.settings?.locale)(`unit`,e.user?.settings?.baseCurrency)(`value`,e.performance?.netPerformance),Bw(6),yy(`colorizeSign`,!0)(`isLoading`,e.isLoadingInvestmentChart)(`isPercent`,!0)(`locale`,e.user?.settings?.locale)(`value`,e.performance?.netPerformancePercentage),Bw(5),rb(e.user?.subscription?.type===`Basic`?44:-1),Bw(2),yy(`isCurrency`,!0)(`isLoading`,e.isLoadingInvestmentChart)(`locale`,e.user?.settings?.locale)(`unit`,e.user?.settings?.baseCurrency)(`value`,e.performance?.netPerformance===null?null:e.performance?.netPerformanceWithCurrencyEffect-e.performance?.netPerformance),Bw(6),yy(`colorizeSign`,!0)(`isLoading`,e.isLoadingInvestmentChart)(`isPercent`,!0)(`locale`,e.user?.settings?.locale)(`value`,e.performance?.netPerformancePercentage===null?null:e.performance?.netPerformancePercentageWithCurrencyEffect-e.performance?.netPerformancePercentage),Bw(8),yy(`isCurrency`,!0)(`isLoading`,e.isLoadingInvestmentChart)(`locale`,e.user?.settings?.locale)(`unit`,e.user?.settings?.baseCurrency)(`value`,e.performance?.netPerformanceWithCurrencyEffect),Bw(5),rb(e.user?.settings?.performanceCalculationType===e.PerformanceCalculationType.ROAI?65:-1),Bw(2),yy(`colorizeSign`,!0)(`isLoading`,e.isLoadingInvestmentChart)(`isPercent`,!0)(`locale`,e.user?.settings?.locale)(`value`,e.performance?.netPerformancePercentageWithCurrencyEffect),Bw(9),ab(e.top3),Bw(3),rb(e.top3?-1:79),Bw(8),ab(e.bottom3),Bw(3),rb(e.bottom3?-1:90),Bw(7),rb(e.user?.subscription?.type===`Basic`?97:-1),Bw(2),yy(`benchmarkDataItems`,e.investments)(`benchmarkDataLabel`,e.portfolioEvolutionDataLabel)(`currency`,e.user?.settings?.baseCurrency)(`historicalDataItems`,e.performanceDataItems)(`isInPercentage`,e.showValuesInPercentage())(`isLoading`,e.isLoadingInvestmentChart)(`locale`,e.user?.settings?.locale),Bw(7),rb(e.user?.subscription?.type===`Basic`?106:-1),Bw(),yy(`defaultValue`,e.mode())(`isLoading`,!1)(`options`,e.modeOptions),Bw(),rb(e.streaks?108:-1),Bw(2),yy(`benchmarkDataItems`,e.investmentsByGroup)(`benchmarkDataLabel`,e.investmentTimelineDataLabel)(`currency`,e.user?.settings?.baseCurrency)(`groupBy`,e.mode())(`isInPercentage`,e.showValuesInPercentage())(`isLoading`,e.isLoadingInvestmentTimelineChart)(`locale`,e.user?.settings?.locale)(`savingsRate`,e.savingsRate),Bw(7),rb(e.user?.subscription?.type===`Basic`?117:-1),Bw(),yy(`defaultValue`,e.mode())(`isLoading`,!1)(`options`,e.modeOptions),Bw(2),yy(`benchmarkDataItems`,e.dividendsByGroup)(`benchmarkDataLabel`,e.dividendTimelineDataLabel)(`currency`,e.user?.settings?.baseCurrency)(`groupBy`,e.mode())(`isInPercentage`,e.showValuesInPercentage())(`isLoading`,e.isLoadingDividendTimelineChart)(`locale`,e.user?.settings?.locale))},dependencies:[zt,be$1,_i,et,rt,Y3,os,ns,G$1,k,z,B$1,T,en$1,I,G,$t,ie,ne,K,B,La,ur],styles:[`[_nghost-%COMP%]{display:block}[_nghost-%COMP%]   .chart-container[_ngcontent-%COMP%]{aspect-ratio:16/9}`]})}}return t$1})()});var eo;A(()=>{M();s();Wt();eo=[{canActivate:[Z],component:xt,path:``,title:c.portfolio.subRoutes.analysis.title}]})();export{eo as routes};

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