PageSourceSearch

https://extraetf.com/at/3958.a5419d214344bd63.js

js extraetf.com collected 2026-09-24 09:40:01 UTC 36,238 bytes, 1 lines download raw bytes

1"use strict";(self.webpackChunkfrontend=self.webpackChunkfrontend||[]).push([[3958],{71455:(S,d,n)=>{n.d(d,{W:()=>R});var c=n(517),o=n(81586);class l{constructor(s){s&&(Object.assign(this,s),this.sparplan_faehig=0,this.fund_portfolio_holdings=this.fund_portfolio_holdings.map(e=>(e.logo_url=(0,o.vo)(e.logo_url),e)))}get link(){return this.isin&&`/fund-profile/${this.isin}`||null}get topStockBranches(){return{items:this.fund_portfolio_global_stock_sector_breakdown?.map(s=>({name:s.type_name,value:s.value,code:s.type_code}))||[]}}get topBondBranches(){return{items:this.fund_portfolio_global_bond_sector_breakdown.super.map(s=>({name:s.type_name,value:s.value,code:s.type_code}))||[]}}get topBondCountries(){return this.getTopCountries(this.fund_portfolio_country_breakdown.bond)}get topStockCountries(){return this.getTopCountries(this.fund_portfolio_country_breakdown.stock)}get topConvertibleCountries(){return this.getTopCountries(this.fund_portfolio_country_breakdown.convertible)}getTopCountries(s){return s&&Object.keys(s)?.length?{items:Object.keys(s).map(e=>({name:(0,c.qQ)(e),value:s[e],code:e}))}:null}get topStockRegions(){return this.getTopRegions(this.fund_portfolio_stock?.regional_breakdown)}get topBondRegions(){return this.getTopRegions(this.fund_portfolio_bond?.regional_breakdown)}get topConvertibleRegions(){return this.getTopRegions(this.fund_portfolio_convertible?.regional_breakdown)}get hasMarketCapitalisation(){return!!(this.fund_portfolio_market_cap_breakdown.giant||this.fund_portfolio_market_cap_breakdown.large||this.fund_portfolio_market_cap_breakdown.medium||this.fund_portfolio_market_cap_breakdown.small||this.fund_portfolio_market_cap_breakdown.micro)}get hasBondMaturityRange(){return!!(this.fund_portfolio_bond?.maturity_range["1_to_3_years"]||this.fund_portfolio_bond?.maturity_range["3_to_5_years"]||this.fund_portfolio_bond?.maturity_range["5_to_7_years"]||this.fund_portfolio_bond?.maturity_range["7_to_10_years"]||this.fund_portfolio_bond?.maturity_range["10_to_15_years"]||this.fund_portfolio_bond?.maturity_range["20_to_30_years"]||this.fund_portfolio_bond?.maturity_range.over_30_years)}get hasCreditStructure(){return!!(this.fund_portfolio_credit_quality_breakdown?.aaa?.value||this.fund_portfolio_credit_quality_breakdown?.aa?.value||this.fund_portfolio_credit_quality_breakdown?.a?.value||this.fund_portfolio_credit_quality_breakdown?.bbb?.value||this.fund_portfolio_credit_quality_breakdown?.bb?.value||this.fund_portfolio_credit_quality_breakdown?.b?.value||this.fund_portfolio_credit_quality_breakdown?.below_b?.value||this.fund_portfolio_credit_quality_breakdown?.not_rated?.value)}get marketValue(){return this._marketValue}set marketValue(s){this._marketValue=s}getTopRegions(s){return s?.length?{items:s.map(e=>({name:e.type_name,value:e.value,code:e.type_code}))}:null}}var g=n(68422),f=n(31801),v=n(97144);class R extends l{constructor(s){super(s),this.hidePaymentsInDM=e=>e>=2e3,Object.assign(this,s),this.distribution_frequency_months=this.filterDistributionMonths(this.distribution_frequency_months),this.filteredDistributionFrequency?.length&&(this.distribution_frequency=this.filteredDistributionFrequency),this.sum_distribution=this.filterDistributions(this.sum_distribution),this.yield_distribution=this.filterDistributions(this.yield_distribution),this.lastQuoteValue=new g.A(this.last_quote),this.latest_net_assets_value/=1e6,this.specificInvestmentType="fund"}get name(){return this.fondname_shareclass}get distributionPolicy(){switch(!0){case this.is_accumulating:return"Thesaurierend";case this.is_distributing:return"Aussch\xfcttend"}}get portfolioItemsWeight(){return this.fund_portfolio_holdings?.length?this.fund_portfolio_holdings.reduce((s,e)=>s+e.weight,0):0}get fundDomicile(){return(0,c.qQ)(this.fund_domicile_id)}get sumDistributions(){const s={};return this.distribution_frequency_months&&Object.keys(this.distribution_frequency_months)?.forEach(e=>{s[e]=this.distribution_frequency_months[e].reduce((u,p)=>u+Number(p.total_in_eur),0)}),s}get hasDistributions(){return this.distribution_frequency_months&&Object.keys(this.distribution_frequency_months)?.length>0}get portfolioHoldingsWeight(){return this.fund_portfolio_holdings?.length?this.fund_portfolio_holdings.reduce((s,e)=>s+e.weight,0):0}get hasComponents(){const s=this.fund_portfolio_holdings?.length>0,e=this.fund_portfolio_asset_allocation?.bond>0||this.fund_portfolio_asset_allocation?.cash>
10||this.fund_portfolio_asset_allocation?.convertible>0||this.fund_portfolio_asset_allocation?.other>0||this.fund_portfolio_asset_allocation?.preferred>0||this.fund_portfolio_asset_allocation?.stock>0,u=this.fund_portfolio_country_breakdown?.bond,p=this.fund_portfolio_country_breakdown?.stock,h=this.fund_portfolio_country_breakdown?.convertible,E=u&&Object.keys(u)?.length>0||p&&Object.keys(p)?.length>0||h&&Object.keys(h)?.length>0;return s||e||E||this.fund_portfolio_currency_breakdown.length>0}get type(){return[this.fund_attributes.is_aifmd?"AIFMD":null,this.fund_attributes.is_census_replication?"Census Replication":null,this.fund_attributes.is_coveredcall?"Covered Call":null,this.fund_attributes.is_currencytracking?"W\xe4hrungstracking":null,this.fund_attributes.is_derivate_based?"Derivatebasiert":null,this.fund_attributes.is_enhanced_index_fund?"Gehebelter Indexfonds":null,this.fund_attributes.is_fund_of_funds?"Dachfonds":null,this.fund_attributes.is_hedge_fund?"Hedgefonds":null,this.fund_attributes.is_index_fund?"Indexfonds":null,this.fund_attributes.is_insured_muni_fund?"Besicherter Fonds":null,this.fund_attributes.is_leverage_fund?"Gehebelter Fonds":null,this.fund_attributes.is_lifecycle_fund?"Lifecycle Fonds":null,this.fund_attributes.is_manageddistribution?"Managed Distribution":null,this.fund_attributes.is_masterfeeder?"Masterfeeder":null,this.fund_attributes.is_moneymarket_fund?"Geldmarktfonds":null,this.fund_attributes.is_nondiversified_fund?"Nondiversified Fonds":null,this.fund_attributes.is_not_applicable?"Keine Angabe":null,this.fund_attributes.is_offshorevehicle?"Offshore Fonds":null,this.fund_attributes.is_overlaymanaged?"Overlaymanaged":null,this.fund_attributes.is_privatelabel_fund?"Private Label Fund":null,this.fund_attributes.is_termtrust_fund?"Termtrust Fonds":null,this.fund_attributes.is_ucits?"UCITS":null].filter(e=>e)?.join(", ")||"\u2014"}get creditRating(){return this.fund_portfolio_bond?.statistics?.avg_credit_quality?(0,f.RN)(this.fund_portfolio_bond?.statistics?.avg_credit_quality):"\u2014"}get lastDistributionFrequency(){return this.distribution_frequency?.length?this.distribution_frequency.at(-1):null}get chartExportingTitle(){return`<span style="display: block">${this.fondname_shareclass} (ISIN: ${this.isin||this.isin_backup||""} | WKN: ${this.wkn||this.wkn_backup||""})</span>`}get chartMddExportingTitle(){const e=this.isin||this.isin_backup||"",u=this.wkn||this.wkn_backup||"";return`${this.fondname_shareclass&&`<span style="display: block">Drawdowns des ${this.fondname}</span>`||""}<span style="display: block">${e&&`ISIN: ${e}`||""}${u&&` WKN: ${u}`||""}</span>`}get extraetfUrl(){return v.c.APPHost+"/crypto-profile/"+(this.isin||this.isin_backup)}getRiskValue(s,e){return this.risk_and_rating?.[e]?.[s]}get perfCurrencies(){return["EUR"]}getPerfMonthlyFlattened(){const s=[];return Object.values(this.monthly_returns||{}).forEach(e=>{e.forEach(u=>{s.push({date:u.month,value:u.value})})}),s}getPerfYearlyFlattened(s){const e=[];if(this.perfCurrencies.includes(s)&&Object.entries(this.performance_yearly||{}).forEach(u=>{e.push({date:u[0],value:Number(u[1])})}),(0,o.J5)(this.return_year_to_date_real)){const u=(0,o.hk)();e.push({date:u+"",value:this.return_year_to_date_real})}return e}get flattenedPerf(){const s={};return this.perfCurrencies.forEach(e=>{s[e]=this.getPerfMonthlyFlattened()}),s}get yearlyFlattenedPerf(){const s={};return this.perfCurrencies.forEach(e=>{s[e]=this.getPerfYearlyFlattened(e)}),s}performanceId(s){return this.performance_id?"price"===s?this.returns[this.performance_id]?this.performance_id:null:this.returns_nav[this.performance_id]?this.performance_id:null:null}getPerformanceData(s){const e=this.performanceId(s);if(e)return s&&"price"!==s?this.returns_nav[e]??null:this.returns[e]??null}get hasPortfolioProspectiveMetrics(){return!!(this.fund_portfolio_prospective.earnings_yield||this.fund_portfolio_prospective.bookvalue_yield||this.fund_portfolio_prospective.dividend_yield||this.fund_portfolio_prospective.cashflow_yield||this.fund_portfolio_prospective.revenue_yield)}get hasPortfolioForecastMetrics(){return!!(this.fund_portfolio_forecast.bookvalue_growth||this.fund_portfolio_forecast.cashflow_growth||this.fund_portfolio_forecast.earnings_growth||this.fund_portfolio_forecast["5y_earings_growth"]||this.fund_portfolio_forecast.revenue_growth)}get hasCreditStatistics(){return!!(this.fund_portfolio_bond?.statistics?.avg_credit_quality||this.fund_portfolio_bond?.statistics?.avg_cupon||this.fund_portfolio_bond?.statistics?.current_yield||this.fund_portfolio_bond?.statistics?.avg_price)}get filteredDistributionFrequency(){return this.distribution_frequency?.filter(s=>this.hidePaymentsInDM(new Date(s.start_date).getFullYear()))}filterDistributionMonths(s){return this._filterDistributionObjects(s)}filterDistributions(s){return this._filterDistributionObjects(s)}_filterDistributionObjects(s){if(!s||!Object.keys(s).length)return s;const e={};return Object.keys(s)?.filter(u=>this.hidePaymentsInDM(+u))?.map(u=>e[u]=s[u]),e}}}
1,91679:(S,d,n)=>{n.d(d,{p:()=>e});var c=n(96354),o=n(99437),l=n(7673),g=n(99720),f=n(71455),v=n(51890),R=n(81586),T=n(54438),s=n(21626);let e=(()=>{class u{constructor(h){this.http=h,this.DETAIL_URL="/api-v3/funds/detail/",this.FUND_HOLDINGS_URL="/api-v3/funds/detail/holdings/",this.FULL_SEARCH_URL="/api-v3/funds/search/full/"}fetchFund(h){return this.http.get(this.DETAIL_URL,{params:{isin:h}}).pipe((0,c.T)(E=>new g.Z(E,f.W).getItems()[0]),(0,o.W)(()=>(0,l.of)(null)))}fetchFundHoldings(h){return this.http.get(this.FUND_HOLDINGS_URL,{params:h}).pipe((0,o.W)(()=>(0,l.of)([])))}fullSearch(h){return this.http.get(this.FULL_SEARCH_URL,{params:(0,R.gS)(h)}).pipe((0,c.T)(E=>new g.Z(E,v.t)))}getChartExportingTitle(h){return`<span style="display: block">${h.fondname_shareclass} (ISIN: ${h.isin||h.isin_backup||""} | WKN: ${h.wkn||h.wkn_backup||""})</span>`}static{this.\u0275fac=function(E){return new(E||u)(T.KVO(s.Qq))}}static{this.\u0275prov=T.jDH({token:u,factory:u.\u0275fac,providedIn:"root"})}}return u})()},536:(S,d,n)=>{n.r(d),n.d(d,{ModalsAlertModule:()=>De});var c=n(18223),o=n(88607),l=n(86089),g=n(93853),f=n(63072),v=n(88141),R=n(99437),T=n(70980),s=n(25558),e=n(54438),u=n(50779),p=n(84156),h=n(51136),E=n(42331),M=n(60177),x=n(83038);function H(r,m){1&r&&e.nrm(0,"xetf-spinner")}function Q(r,m){1&r&&e.EFF(0,"Kursalarm l\xf6schen")}let G=(()=>{class r extends f.f{set options(t){this.alert=t.alert}constructor(t,i,a,_,A){super(),this.modalRef=t,this.athFeatures=i,this.notifier=a,this.utils=_,this._cdr=A,this.MSG_SUCCESS="Der Kursalarm wurde gel\xf6scht.",this.MSG_ERROR="Unerwarteter Fehler: Der Kursalarm konnte nicht gel\xf6scht werden."}onConfirm(){this.loading=!0,this.deleteAlert$.pipe((0,v.M)(()=>{this.hideModal(),this.utils.navigateWithReload(),this.notifier.success(this.MSG_SUCCESS)}),(0,R.W)((t,i)=>(this.notifier.error(this.MSG_ERROR),i)),(0,T.j)(()=>{this.loading=!1,this._cdr.markForCheck()})).subscribe()}get deleteAlert$(){return this.athFeatures.getAlertServiceByType(this.alert.investmentType).pipe((0,s.n)(t=>t.delete(this.alert.id)))}static{this.\u0275fac=function(i){return new(i||r)(e.rXU(u.Y$),e.rXU(p.x),e.rXU(h.C),e.rXU(E.T),e.rXU(e.gRc))}}static{this.\u0275cmp=e.VBU({type:r,selectors:[["app-course-alert-delete"]],inputs:{options:"options"},features:[e.Vt3],decls:10,vars:3,consts:()=>{let t;return t="Bist du sicher?",[["btnText",""],t,[1,"modal-header"],[1,"modal-title"],[1,"modal-body"],[1,"text-center"],["type","submit",1,"btn","btn-danger","w-100","mt-3",3,"click","disabled"],[4,"ngIf","ngIfElse"]]},template:function(i,a){if(1&i){const _=e.RV6();e.j41(0,"div",2)(1,"h4",3),e.pXf(2,1),e.k0s()(),e.j41(3,"div",4)(4,"p",5),e.EFF(5,"Dieser Vorgang kann nicht r\xfcckg\xe4ngig gemacht werden."),e.k0s(),e.j41(6,"button",6),e.bIt("click",function(){return e.eBV(_),e.Njj(a.onConfirm())}),e.DNE(7,H,1,0,"xetf-spinner",7)(8,Q,1,0,"ng-template",null,0,e.C5r),e.k0s()()}if(2&i){const _=e.sdS(9);e.R7$(6),e.Y8G("disabled",a.loading||a.error),e.R7$(),e.Y8G("ngIf",a.loading)("ngIfElse",_)}},dependencies:[M.bT,x.tI],encapsulation:2,changeDetection:0})}}return r})();var C=n(89417),w=n(89079),j=n(81586),Z=n(33489),J=n(35129);const q={type:r=>{switch(r){case"ask":return "Der <b>Briefkurs (Ask)</b> ist der B\xF6rsenkurs, zu welchem das Wertpapier angeboten wird.";case"bid":return "Der <b>Geldkurs (Bid)</b> ist der B\xF6rsenkurs, zu welchem das Wertpapier nachgefragt wird.";case"last_price":return "Als <b>letzter Preis</b> wird der an der B\xF6rse zuletzt festgestellte Kurs bezeichnet. Normalerweise ist das der Kurs, zu welchem Handel stattgefunden hat.";default:return""}},exchange:"Hier kannst du festlegen, f\xFCr welchen Handelsplatz der Kursalarm gelten soll. Bitte beachte, dass der Net Asset Value (NAV) in der Regel 2-3 Tage zeitverz\xF6gert ist."};var X=n(53098);const O={coingecko:"CoinGecko",frankfurt:"B\xF6rse Frankfurt",ls:"L&S Indikation",nav:"NAV (2-3 Tage verz\xF6gert)",stuttgart:"B\xF6rse Stuttgart"};var U=n(66161);const N={courseChange:{conditions:[{key:"ge",value:X.i.ge},{key:"le",value:X.i.le}],types:[{key:"last_price",value:U.x.last_price},{key:"bid",value:U.x.bid},{key:"ask",value:U.x.ask}],exchanges:[{key:"stuttgart",value:O.stuttgart},{key:"frankfurt",value:O.frankfurt},{key:"nav",value:O.nav},{key:"coingecko",value:O.coingecko},{key:"ls",value:O.ls}]}};var I=n(68422),$=n(7673),F=n(96354),te=n(21413),ne=n(70274),se=n(13479),ie=n(44661),re=n(81958),oe=n(51188),ae=n(534),le=n(28210),_e=n(6385),ue=n(10374),ce=n(90165),de=n(14305),he=n(53312),fe=n(69206),me=n(32817);const z=r=>({"is-invalid":r}),pe=(r,m,t)=>({active:r,"btn-outline-success":m,"btn-outline-danger":t}),ge=r=>({"rotate-180":r}),Ee=()=>["de"];function Re(r,m){1&r&&(e.qex(0),e.pXf(1,6),e.bVm())}function Te(r,m){1&r&&e.pXf(0,7)}function Ce(r,m){if(1&r&&e.nrm(0,"app-real-time-delta",30),2&r){const t=e.XpG(3);e.Y8G("realTimeQuote",t.realTimeQuote)("investment",t.investment)}}function Se(r,m){if(1&r&&e.nrm(0,"app-real-time-exchange-details",31),2&r){const t=e.XpG(3);e.Y8G("realTimeQuote",t.realTimeQuote)("investment",t.investment)}}function ve(r,m){if(1&r&&(e.j41(0,"span"),e.EFF(1),e.nI1(2,"date"),e.k0s()),2&r){const t=e.XpG(4);e.R7$(),e.SpI(", ",e.bMT(2,1,(null==t.investment?null:t.investment.nav_date)||(null==t.alert||null==t.alert.etf?null:t.alert.etf.nav_date)),"")}}function Ae(r,m){if(1&r&&(e.j41(0,"div",32)(1,"span"),e.pXf(2,9),e.k0s(),e.DNE(3,ve,3,3,"span",33),e.k0s()),2&r){const t=e.XpG(3);e.R7$(3),e.Y8G("ngIf",(null==t.investment?null:t.investment.nav_date)||(null==t.alert||null==t.alert.etf?null:t.alert.etf.nav_date))}}function be(r,m){if(1&r){const t=e.RV6();e.j41(0,"div",55)(1,"button",56),e.bIt("click",function(){const a=e.eBV(t).$implicit,_=e.XpG(4);return e.Njj(_.changeCondition(a))}),e.EFF(2),e.nI1(3,"titlecase"),e.nrm(4,"xetf-icon",57),e.k0s()()}if(2&r){const t=m.$implicit,i=e.XpG(4);e.R7$(),e.Y8G("ngClass",e.sMw(8,pe,t.key===i.condition.value.key,"ge"===t.key,"le"===t.key)),e.R7$(),e.SpI(" ",e.bMT(3,6,t.value)," "),e.R7$(2),e.Y8G("name","arrowUp")("size",14)("strokeWidth",2.5)("ngClass",e.eq3(12,ge,"ge"!==t.key))}}function ye(r,m){if(1&r&&e.nrm(0,"div",58),2&r){const t=e.XpG(4);e.Y8G("innerHTML",t.TOOLTIPS.type(t.type.value.key),e.npT)}}function Me(r,m){1&r&&e.nrm(0,"xetf-spinner")}function Oe(r,m){1&r&&e.pXf(0,14)}function Le(r,m){if(1&r){const t=e.RV6();e.j41(0,"div",34)(1,"h6",35),e.pXf(2,10),e.k0s(),e.j41(3,"form",36),e.bIt("ngSubmit",function(){e.eBV(t);const a=e.XpG(3);return e.Njj(a.onSubmit())}),e.j41(4,"div",37)(5,"div",38)(6,"div",39)(7,"input",40),e.bIt("input",function(){e.eBV(t);const a=e.XpG(3);return e.Njj(a.updateRelativeValue())})("focusin",function(){e.eBV(t);const a=e.XpG(3);return e.Njj(a.course.markAsTouched())}),e.k0s(),e.j41(8,"span",41),e.EFF(9),e.nI1(10,"currencySymbol"),e.k0s()()(),e.j41(11,"div",38)(12,"xetf-number-spinner",42),e.bIt("valueChange",function(a){e.eBV(t);const _=e.XpG(3);return e.Njj(_.updateAbsoluteValue(a))}),e.k0s()(),e.DNE(13,be,5,14,"div",43),e.j41(14,"div",38)(15,"label",44),e.qex(16),e.pXf(17,11),e.bVm(),e.nrm(18,"xetf-icon",45),e.k0s(),e.nrm(19,"xetf-select",46),e.k0s(),e.j41(20,"div",38)(21,"label",47),e.qex(22),e.pXf(23,12),e.bVm(),e.nrm(24,"xetf-icon",45),e.DNE(25,ye,1,1,"ng-template",null,4,e.C5r),e.k0s(),e.nrm(27,"xetf-select",48),e.k0s(),e.j41(28,"div",49),e.nrm(29,"label",50),e.j41(30,"textarea",51),e.EFF(31,"                            "),e.k0s(),e.j41(32,"div",52),e.pXf(33,13),e.k0s()()(),e.j41(34,"div",53)(35,"button",54),e.DNE(36,Me,1,0,"xetf-spinner",20)(37,Oe,1,0,"ng-template",null,5,e.C5r),e.k0s()()()()}if(2&r){let t;const i=e.sdS(26),a=e.sdS(38),_=e.XpG(3);e.R7$(3),e.Y8G("formGroup",_.alertForm),e.R7$(3),e.Y8G("ngClass",e.eq3(29,z,_.course.invalid)),e.R7$(),e.Y8G("formControl",_.course)("inputMask",_.inputMask),e.R7$(2),e.SpI(" ",e.bMT(10,27,_.currency)," "),e.R7$(3),e.Y8G("max",1e4)("min",-100)("initial",_.course.value)("realTimeQuote",null==_.realTimeQuote?null:_.realTimeQuote.mid)("isProgression",!0)("suffix"," %")("hasColor",!0)("hasSign",!0)("refresh$",_.refresh$),e.R7$(),e.Y8G("ngForOf",_.CONDITIONS),e.R7$(5),e.Y8G("name","
1infoCircle")("tooltip",_.TOOLTIPS.exchange),e.R7$(),e.Y8G("bindLabel","value")("options",_.exchanges),e.R7$(5),e.Y8G("name","infoCircle")("tooltip",i),e.R7$(3),e.Y8G("bindLabel","value")("options",_.types),e.R7$(3),e.Y8G("ngClass",e.eq3(31,z,null==(t=_.alertForm.get("comment"))?null:t.invalid)),e.R7$(5),e.Y8G("disabled",_.loading),e.R7$(),e.Y8G("ngIf",_.loading)("ngIfElse",a)}}function Pe(r,m){1&r&&(e.j41(0,"div",59),e.nrm(1,"xetf-icon",60),e.j41(2,"div"),e.pXf(3,15),e.k0s()()),2&r&&(e.R7$(),e.Y8G("name","exclamationCircle"))}function ke(r,m){if(1&r&&(e.qex(0),e.j41(1,"h6",22),e.EFF(2),e.k0s(),e.j41(3,"div",23)(4,"h6",24),e.pXf(5,8),e.k0s(),e.nrm(6,"app-real-time-course",25),e.DNE(7,Ce,1,2,"app-real-time-delta",26),e.k0s(),e.DNE(8,Se,1,2,"app-real-time-exchange-details",27)(9,Ae,4,1,"ng-template",null,3,e.C5r)(11,Le,39,33,"div",28)(12,Pe,4,1,"div",29),e.bVm()),2&r){const t=e.sdS(10),i=e.XpG(2);e.R7$(2),e.JRh(i.investment.name),e.R7$(4),e.Y8G("realTimeQuote",i.isInitiallyNavCourse?null:i.realTimeQuote)("investment",i.investment)("isRealTimeMarketCourse",i.isRealTimeMarketCourse)("courseFallback",i.isInitiallyNavCourse?"nav":"close_price")("iconRelativeSize",80),e.R7$(),e.Y8G("ngIf",!i.isInitiallyNavCourse),e.R7$(),e.Y8G("ngIf",!i.isInitiallyNavCourse)("ngIfElse",t),e.R7$(3),e.Y8G("ngIf",i.alertForm),e.R7$(),e.Y8G("ngIf",i.error)}}function xe(r,m){if(1&r&&(e.qex(0),e.DNE(1,ke,13,11,"ng-container",20),e.bVm()),2&r){const t=e.XpG(),i=e.sdS(8);e.R7$(),e.Y8G("ngIf",!t.maxLimitReached)("ngIfElse",i)}}function Ue(r,m){if(1&r){const t=e.RV6();e.qex(0),e.PLo(1,17),e.j41(2,"a",63),e.bIt("click",function(){e.eBV(t);const a=e.XpG(2);return e.Njj(a.hideModal())}),e.k0s(),e.YFu(),e.bVm()}}function Ne(r,m){1&r&&(e.j41(0,"div",61),e.nrm(1,"xetf-icon",60),e.j41(2,"div"),e.qex(3),e.pXf(4,16),e.bVm(),e.DNE(5,Ue,3,0,"ng-container",62),e.k0s()()),2&r&&(e.R7$(),e.Y8G("name","infoCircle"),e.R7$(4),e.Y8G("xetfLocaleVisible",e.lJ4(2,Ee)))}function Ie(r,m){1&r&&(e.j41(0,"div",53),e.nrm(1,"xetf-spinner",64),e.k0s()),2&r&&(e.R7$(),e.Y8G("size",30)("color","logo"))}let B=(()=>{class r extends f.f{set options(t){let i;t.investment?this.investment=t.investment:t.alert&&(this.alert=t.alert,this.investment=this.alert.investment,this.isEditMode=!0),i=t.realTimeCourse?t.realTimeCourse instanceof I.A?t.realTimeCourse:new I.A(t.realTimeCourse):this.investment.lastQuoteValue,i?.mid?i.isin||(i.isin=this.investment.isin):i=new I.A({i:this.investment.isin,m:this.investment.nav}),this.realTimeQuote=i,this.courseAlertService=t.courseAlertService,this.loading=!0,this.isMaxLimitReached$.pipe((0,s.n)(a=>(this.maxLimitReached=a,a?(0,$.of)(null):this.getAvailableCourses())),(0,F.T)(a=>{this.availableCourses=a,this.investment instanceof se.Y&&(this.performanceReturnData=this.investment.getPerformanceData()),this.maxLimitReached||(this.initForm(),this.subscribeToFormChanges(),this.subscribeToRealTimeQuoteUpdates(i))}),(0,T.j)(()=>{this.loading=!1,this._cdr.markForCheck()})).subscribe()}constructor(t,i,a,_,A,b,P){super(),this.modalRef=t,this.fb=i,this.notifier=a,this.realTimeService=_,this.userService=A,this.utils=b,this._cdr=P,this.CONDITIONS=N.courseChange.conditions,this.TOOLTIPS=q,this.CURRENCY_PRECISION=8,this.inputMask=(0,Z.Z)({digits:8}),this.EXCHANGES=N.courseChange.exchanges,this.TYPES=N.courseChange.types,this.MSG_CREATE={success:"Der Kursalarm wurde erstellt und gespeichert.",error:"Unerwarteter Fehler: Der Kursalarm konnte nicht erstellt werden."},this.MSG_UPDATE={success:"Der Kursalarm wurde erfolgreich bearbeitet und gespeichert.",error:"Unerwarteter Fehler: Der Kursalarm konnte nicht gespeichert werden."},this.refresh$=new te.B,this.types=[],this.exchanges=[],this.isExchangeAvailable=L=>L&&Object.values(L).filter(k=>k).length>0}ngOnDestroy(){this.realTimeService.unsubscribe(),this.realTimeQuote=null}get lastCourse(){return this.realTimeQuote?.mid||this.performanceReturnData?.close_price||this.investment?.nav||0}get isMaxLimitReached$(){return this.userService.getUser().pipe((0,v.M)(t=>this.user=t),(0,s.n)(()=>this.courseAlertService.getUsage()),(0,F.T)(t=>!this.isEditMode&&("number"!=typeof t.alertsAmount||"number"!=typeof this.user.courseAlertLimit||t.alertsAmount>=this.user.courseAlertLimit)))}getAvailableCourses(){const t=this.investment.isin;return this.courseAlertService.checkAvailability([t]).pipe((0,R.W)(()=>(0,$.of)(null)),(0,F.T)(i=>i?.[t]))}get createAlert$(){return this.courseAlertService.create(this.payload)}get updateAlert$(){const t=this.payload;return t.triggered_on=null,t.triggered_course=null,this.courseAlertService.update(this.alert.id,t)}getInitialCourseExchange(){return this.exchange?.value?.key||this.exchanges[0].key}subscribeToRealTimeQuoteUpdates(t){this.realTimeService.subscribeToIsins([this.investment.isin],!0,!1).pipe((0,ne.H)(i=>(i.hasNoData?this.realTimeQuote=t:i.isin===(this.alert?.investment?.isin||this.investment.isin||null)&&(!this.currency||i.currency.toLowerCase()===this.currency.toLowerCase())&&(this.realTimeQuote=i,this.isRealTimeMarketCourse=!0,this.updateRealTimeCourse()),this._cdr.markForCheck(),(0,$.of)())),(0,w.pQ)(this._destroy)).subscribe()}prepareAvailableExchanges(){this.exchanges=[],this.isExchangeAvailable(this.availableCourses?.realtime?.stuttgart)&&this.exchanges.push(this.EXCHANGES.find(t=>"stuttgart"===t.key)),this.isExchangeAvailable(this.availableCourses?.realtime?.frankfurt)&&this.user?.hasPermissionToSetSpecialAlerts&&this.exchanges.push(this.EXCHANGES.find(t=>"frankfurt"===t.key)),this.isExchangeAvailable(this.availableCourses?.realtime?.coingecko)&&this.exchanges.push(this.EXCHANGES.find(t=>"coingecko"===t.key)),this.isExchangeAvailable(this.availableCourses?.realtime?.ls)&&this.exchanges.push(this.EXCHANGES.find(t=>"ls"===t.key)),this.availableCourses?.nav&&this.exchanges.push(this.EXCHANGES.find(t=>"nav"===t.key)),this.sortCourseExchanges(this.exchanges)}
1prepareAvailableTypes(){if(this.types=[],!this.exchanges.length)return;if(this.isNavExchangeSelected)return void(this.types=[this.TYPES.find(i=>"last_price"===i.key)]);const t=this.availableCourses.realtime[this.exchange?.value.key||this.exchanges[0].key];this.isExchangeAvailable(t)&&(Object.keys(t).forEach(i=>{t[i]&&this.types.push(this.TYPES.find(a=>a.key===i))}),this.sortCourseTypes(this.types))}sortCourseTypes(t){return t.sort((i,a)=>this.courseAlertService.TYPES_ORDER.indexOf(i.key)-this.courseAlertService.TYPES_ORDER.indexOf(a.key))}sortCourseExchanges(t){return t.sort((i,a)=>this.courseAlertService.EXCHANGES_ORDER.indexOf(i.key)-this.courseAlertService.EXCHANGES_ORDER.indexOf(a.key))}isNavExchange(t){return"nav"===t?.key}get condition(){return this.alertForm?.get("condition")}get percent(){return this.alertForm?.get("percent")}get type(){return this.alertForm?.get("type")}get currency(){return this.isEditMode?this.alert.currency:(this.realTimeQuote?"EUR":this.performanceReturnData?.price_currency)||"EUR"}get course(){return this.alertForm?.get("course")}get comment(){return this.alertForm?.get("comment")}get exchange(){return this.alertForm?.get("exchange")}get payload(){return new J.$({comment:this.comment.value,condition:this.condition.value.key,course:this.course.value,currency:this.currency,exchange:this.exchange.value.key,isin:this.investment.isin,type:this.t
1ype.value.key}).payload}get isNavExchangeSelected(){if(this.alertForm)return this.isNavExchange(this.exchange?.value);{const i=this.alert&&this.exchanges.find(a=>a.key===this.alert.exchange)||this.exchanges[0];return this.isNavExchange(i)}}onSubmit(){this.alertForm.valid&&this.upsertAlert().subscribe()}updateRelativeValue(){const t=100*(this.course.value-this.lastCourse)/this.lastCourse;this.setNumericInputValue(this.percent,t),this.refresh$.next(t)}updateAbsoluteValue(t){(!this.course?.touched||this.alert)&&this.course.markAsTouched(),this.setNumericInputValue(this.course,this.lastCourse*(1+t/100))}changeCondition(t){this.condition.setValue(t)}subscribeToFormChanges(){this.exchange?.valueChanges.pipe((0,w.pQ)(this._destroy)).subscribe(()=>{this.prepareAvailableTypes(),this.types.find(t=>t.key===this.type.value.key)||this.type.setValue(this.types[0])})}initForm(){this.prepareAvailableExchanges(),this.prepareAvailableTypes();const t=this.alert&&this.CONDITIONS.find(b=>b.key===this.alert.condition)||this.CONDITIONS[0],i=this.alert&&this.exchanges.find(b=>b.key===this.alert.exchange)||this.exchanges[0],a=this.alert&&this.types.find(b=>b.key===this.alert.type)||this.types[0],_=this.alert?.comment||"",A=this.alert?this.alert.course:this.lastCourse;if(i&&a&&"number"==typeof A){if(this.alertForm=this.fb.group({course:[A,[C.k0.required,C.k0.min(1e-9)]],percent:[0,C.k0.required],condition:[t,C.k0.required],type:[a,C.k0.required],exchange:[i,C.k0.required],comment:[_,C.k0.maxLength(500)]}),this.isEditMode){const b=this.getInitialCourseExchange();this.isInitiallyNavCourse="nav"===b}}else this.error=!0}upsertAlert(){this.loading=!0;const i=this.isEditMode?this.MSG_UPDATE:this.MSG_CREATE;return(this.isEditMode?this.updateAlert$:this.createAlert$).pipe((0,v.M)(()=>{this.hideModal(),this.utils.navigateWithReload(["/user/alert"]),this.notifier.success(i.success)}),(0,T.j)(()=>{this.loading=!1,this.isEditMode&&this.utils.navigateWithReload(),this._cdr.markForCheck()}),(0,R.W)((a,_)=>(this.notifier.error(i.error),_)))}setNumericInputValue(t,i){t&&t.setValue(i<5?(0,j.eB)(i,8):(0,j.eB)(i))}updateRealTimeCourse(){!this.course?.touched&&!this.alert&&this.setNumericInputValue(this.course,this.lastCourse)}static{this.\u0275fac=function(i){return new(i||r)(e.rXU(u.Y$),e.rXU(C.ze),e.rXU(h.C),e.rXU(ie.j),e.rXU(re.D),e.rXU(E.T),e.rXU(e.gRc))}}static{this.\u0275cmp=e.VBU({type:r,selectors:[["app-course-alert-upsert"]],inputs:{options:"options"},features:[e.Vt3],decls:11,vars:4,consts:()=>{let t,i,a,_,A,b,P,L,k,K,Y,V,W;return t="Kursalarm bearbeiten",i="Kursalarm erstellen",a="Aktueller Kurs:\xA0",_="NAV",A="Dein Kommentar",b="Benachrichtige mich, wenn der Kurs",P="Handelsplatz",L="Kurstyp",k="Maximale Zeichenanzahl \xFCberschritten",K="Speichern",Y="Fehler: F\xFCr dieses Produkt kann kein Kursalarm erstellt werden.",V="Maximale Anzahl an Kursalarmen erreicht.",W=" F\xFCr weitere Kursalarme muss das " + "\ufffd#2\ufffd" + "Benutzerkonto hochgestuft" + "\ufffd/#2\ufffd" + " werden. ",[["createTitleRef",""],["limitReached",""],["loadingRef",""],["navExchange",""],["tooltipTypeHtml",""],["btnText",""],t,i,a,_,b,P,L,k,K,Y,V,W,[1,"modal-header"],[1,"modal-title"],[4,"ngIf","ngIfElse"],[1,"modal-body","modal-md"],[1,"fw-bold","text-primary","text-center"],[1,"d-flex","align-items-center","justify-content-center","flex-wrap","gap-2"],[1,"fw-bold","mb-0"],[3,"realTimeQuote","investment","isRealTimeMarketCourse","courseFallback","iconRelativeSize"],[3,"realTimeQuote","investment",4,"ngIf"],["id","course-details","class","text-center",3,"realTimeQuote","investment",4,"ngIf","ngIfElse"],["class","form-container",4,"ngIf"],["class","alert alert-danger",4,"ngIf"],[3,"realTimeQuote","investment"],["id","course-details",1,"text-center",3,"realTimeQuote","investment"],[1,"text-center","mb-2"],[4,"ngIf"],[1,"form-container"],[1,"mt-3","text-center","fw-bold"],[3,"ngSubmit","formGroup"],[1,"row"],[1,"col-md-6"],[1,"input-group",3,"ngClass"],["id","course","placeholder","0",1,"form-control",3,"input","focusin","formControl","inputMask"],[1,"input-group-text"],[3,"valueChange","max","min","initial","realTimeQuote","isProgression","suffix","hasColor","hasSign","refresh$"],["class","col-6 mb-3",4,"ngFor","ngForOf"],["for","exchange",1,"xetf-label"],["container","body",1,"text-muted","ms-1",3,"name","tooltip"],["formControlName","exchange","id","exchange",3,"bindLabel","options"],["for","type",1,"xetf-label"],["formControlName","type","id","type",3,"bindLabel","options"],[1,"col-12","mb-3"],["hidden","","for","comment"],["rows","2","id","comment","formControlName","comment","placeholder",A,1,"form-control",3,"ngClass"],[1,"invalid-feedback"],[1,"text-center"],["type","submit",1,"btn","btn-primary","w-100","w-md-50",3,"disabled"],[1,"col-6","mb-3"],["type","button",1,"btn","btn-sm","btn-aft-icon","w-100",3,"click","ngClass"],[3,"name","size","strokeWidth","ngClass"],[3,"innerHTML"],[1,"alert","alert-danger"],[1,"alert-icon",3,"name"],[1,"alert","alert-primary"],[4,"xetfLocaleVisible"],["routerLink","/offer/overview",1,"alert-link",3,"click"],[3,"size","color"]]},template:function(i,a){if(1&i&&(e.j41(0,"div",18)(1,"h4",19),e.DNE(2,Re,2,0,"ng-container",20)(3,Te,1,0,"ng-template",null,0,e.C5r),e.k0s()(),e.j41(5,"div",21),e.DNE(6,xe,2,2,"ng-container",20),e.k0s(),e.DNE(7,Ne,6,3,"ng-template",null,1,e.C5r)(9,Ie,2,2,"ng-template",null,2,e.C5r)),2&i){const _=e.sdS(4),A=e.sdS(10);e.R7$(2),e.Y8G("ngIf",a.alert)("ngIfElse",_),e.R7$(4),e.Y8G("ngIf",!a.loading)("ngIfElse",A)}},dependencies:[M.YU,M.Sq,M.bT,oe.Wk,C.qT,C.me,C.BC,C.cb,C.l_,C.j4,C.JD,ae.dg,x.Rl,x.tI,le.Y,_e.w,ue.q,ce.L,de.I,he.v,fe.E5,me.IK,M.PV,M.vh],encapsulation:2,changeDetection:0})}}return r})(),De=(()=>{class r extends g.N{constructor(){super({ModalCourseAlertDelete:G,ModalCourseAlertUpsert:B})}static{this.\u0275fac=function(i){return new(i||r)}}static{this.\u0275mod=e.$C({type:r})}static{this.\u0275inj=e.G2t({imports:[c.U,l.D,o.A]})}}return r})()},93853:(S,d,n)=>{n.d(d,{N:()=>c});class c{constructor(l){this.CMP_MAP=l}getEntry(l){return this.CMP_MAP[l]}}},24455:(S,d,n)=>{n.d(d,{i:()=>s});var c=n(60177),o=n(54438),l=n(83038);const g=e=>["btn btn-link btn-sm btn-aft-icon btn-toggler",e],f=e=>({"rotate-180":e});function v(e,u){if(1&e&&o.EFF(0),2&e){const p=o.XpG(2);o.SpI(" ",p.textShowLess," ")}}function R(e,u){if(1&e&&o.EFF(0),2&e){const p=o.XpG(2);o.SpI(" ",p.textShowMore," ")}}function T(e,u){if(1&e){const p=o.RV6();o.j41(0,"button",1),o.bIt("click",function(){o.eBV(p);const E=o.XpG();return o.Njj(E.toggleRecords())}),o.DNE(1,v,1,1)(2,R,1,1),o.nrm(3,"xetf-icon",2),o.k0s()}if(2&e){const p=o.XpG();o.Y8G("ngClass",o.eq3(4,g,p.classOverride)),o.R7$(),o.vxM(p.showAllRecords?1:2),o.R7$(2),o.Y8G("name","chevron")("ngClass",o.eq3(6,f,p.showAllRecords))}}let s=(()=>{class e{constructor(){this.classOverride="mt-3 mt-md-4 mx-auto",this.textShowLess="Weniger anzeigen",this.textShowMore="Mehr Zeilen anzeigen",this.showAllRecordsChange=new o.bkB,this.DEFAULT_CLASSES=""}toggleRecords(){this.showAllRecords=!this.showAllRecords,this.showAllRecordsChange.emit(this.showAllRecords)}static{this.\u0275fac=function(h){return new(h||e)}}static{this.\u0275cmp=o.VBU({type:e,selectors:[["app-show-more"]],inputs:{classOverride:"classOverride",numberOfItems:"numberOfItems",recordsLimit:"recordsLimit",textShowLess:"textShowLess",textShowMore:"textShowMore",showAllRecords:"showAllRecords"},outputs:{showAllRecordsChange:"showAllRecordsChange"},standalone:!0,features:[o.aNF],decls:1,vars:1,consts:[["type","button",3,"ngClass"],["type","button",3,"click","ngClass"],[1,"ms-1",3,"name","ngClass"]],template:function(h,E){1&h&&o.DNE(0,T,4,8,"button",0),2&h&&o.vxM(E.numberOfItems>E.recordsLimit||!E.numberOfItems&&!E.recordsLimit?0:-1)},dependencies:[c.YU,l.Rl],encapsulation:2,changeDetection:0})}}return e})()},9351:(S,d,n)=>{n.d(d,{$:()=>g});
1var c=n(60177),o=n(32817),l=n(54438);let g=(()=>{class f{constructor(){this.decimals=2,this.suffix=" %"}static{this.\u0275fac=function(T){return new(T||f)}}static{this.\u0275cmp=l.VBU({type:f,selectors:[["app-trend-label"]],inputs:{value:"value",decimals:"decimals",suffix:"suffix"},standalone:!0,features:[l.aNF],decls:3,vars:7,consts:[[1,"tp-change-label","arrow",3,"ngClass"]],template:function(T,s){1&T&&(l.j41(0,"span",0),l.EFF(1),l.nI1(2,"decimalNew"),l.k0s()),2&T&&(l.Y8G("ngClass",s.value>=0?"plus":"minus down"),l.R7$(),l.SpI(" ",(s.value>=0?"+":"")+l.ii3(2,2,s.value,s.decimals,s.decimals,s.suffix),"\n"))},dependencies:[c.YU,o.gw],styles:["[_nghost-%COMP%]{display:inline-block}"],changeDetection:0})}}return f})()},35129:(S,d,n)=>{n.d(d,{$:()=>R});var c=n(80711),o=n(13479),l=n(43412),g=n(87725),f=n(53098),v=n(66161);class R{constructor(s){Object.assign(this,s),this.triggered_on||="",this.etf&&(this.investmentType="etf",this.investment=new o.Y(this.etf)),this.stock&&(this.investmentType="stock",this.investment=new l.d(this.stock)),this?.coin&&(this.investmentType="crypto",this.investment=new c.s(this.coin)),this?.fund&&(this.investmentType="fund",this.investment=new g.Y(this.fund))}static getRealTimeAlikeExchange(s){switch(s){case"coingecko":return"cg";case"ls":return"ls";case"stuttgart":case"frankfurt":return"ms";default:return s}}get typeId(){switch(this.type){case"ask":case"bid":return this.type;case"last_price":return"mid";default:return null}}get isAsk(){return"ask"===this.type}get isBid(){return"bid"===this.type}get isLastPrice(){return"last_price"===this.type}get typeName(){return v.x[this.type]}get conditionName(){return f.i[this.condition]}get isGreater(){return"ge"===this.condition}get isLess(){return"le"===this.condition}get isEtf(){return"etf"===this.investmentType}get isStock(){return"stock"===this.investmentType}get isFund(){return"fund"===this.investmentType}get exchangeId(){return R.getRealTimeAlikeExchange(this.exchange)}get payload(){return{comment:this.comment,condition:this.condition,course:this.course,currency:this.currency,exchange:this.exchange,isin:this.isin,type:this.t
1ype}}}},53098:(S,d,n)=>{n.d(d,{i:()=>c});const c={ge:"\xFCberschreitet",le:"unterschreitet"}},66161:(S,d,n)=>{n.d(d,{x:()=>c});const c={ask:"Briefkurs (Ask)",bid:"Geldkurs (Bid)",last_price:"Letzter Preis"}},80711:(S,d,n)=>{n.d(d,{s:()=>c});class c{constructor(l){Object.assign(this,l)}}},13479:(S,d,n)=>{n.d(d,{Y:()=>o});var c=n(44557);class o extends c.K{constructor(g){super(g),Object.assign(this,g)}}},87725:(S,d,n)=>{n.d(d,{Y:()=>c});class c{constructor(l){Object.assign(this,l)}}},43412:(S,d,n)=>{n.d(d,{d:()=>c});class c{constructor(l){Object.assign(this,l)}}},88607:(S,d,n)=>{n.d(d,{A:()=>g});var c=n(18223),o=n(69206),l=n(54438);let g=(()=>{class f{static{this.\u0275fac=function(T){return new(T||f)}}static{this.\u0275mod=l.$C({type:f})}static{this.\u0275inj=l.G2t({imports:[c.U,o.Zn,o.Zn]})}}return f})()},33489:(S,d,n)=>{n.d(d,{Z:()=>o});var c=n(69206);const o=l=>{const g=void 0===l?.digits?2:l.digits,f=void 0===l?.digitsOptional||l.digitsOptional,v=l?.allowMinus||!1,R=l?.withGroupSeparator||void 0===l?.withGroupSeparator?".":"";return(0,c.Px)({alias:"numeric",inputmode:"decimal",unmaskAsNumber:!0,autoUnmask:!0,shiftPositions:!1,radixPoint:",",placeholder:"0",rightAlign:!1,showMaskOnHover:!1,suffix:l?.suffix,allowMinus:v,digits:g,groupSeparator:R,digitsOptional:f,max:l?.max||Number.MAX_SAFE_INTEGER,min:l?.min||Number.MIN_SAFE_INTEGER})}}}]);

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.