1"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[3763],{19577:(e,t,a)=>{a.d(t,{A:()=>l});var s=a(70127),r=a(70567);let n=()=>{let[e,t]=(0,r.useState)(!1),[a,n]=(0,r.useState)({top:0,left:0}),l=(0,r.useRef)(null),i=(0,r.useRef)(null),o=(0,r.useCallback)(()=>{if(!l.current)return;let e=l.current.getBoundingClientRect(),t=window.innerWidth,a=e.bottom+10,s=e.left+e.width/2-160;s<10?s=10:s+320>t-10&&(s=t-320-10),n({top:a,left:s})},[]),d=(0,r.useCallback)(e=>{i.current&&!i.current.contains(e.target)&&l.current&&!l.current.contains(e.target)&&t(!1)},[]);(0,r.useEffect)(()=>(e&&(document.addEventListener("mousedown",d),document.addEventListener("touchstart",d)),()=>{document.removeEventListener("mousedown",d),document.removeEventListener("touchstart",d)}),[e,d]),(0,r.useEffect)(()=>{e&&o()},[e,o]);let c=(0,r.useCallback)(()=>{e?t(!1):(o(),t(!0))},[e,o]);return(0,s.jsxs)("div",{className:"relative inline-block ml-1",children:[(0,s.jsx)("span",{ref:l,className:"text-xs opacity-75 cursor-help select-none",onClick:c,children:"â"}),e&&(0,s.jsx)("div",{className:"fixed inset-0 z-[9998] bg-ink/10",children:(0,s.jsxs)("div",{ref:i,className:"absolute bg-ink text-white text-sm rounded-lg p-3 shadow-lg min-w-[280px] max-w-[320px] z-[9999]",style:{to
1p:"".concat(a.top,"px"),left:"".concat(a.left,"px")},children:[(0,s.jsxs)("div",{className:"space-y-2",children:[(0,s.jsxs)("div",{children:[(0,s.jsx)("strong",{className:"text-[#F59E0B]",children:"ìíìì°"}),": TDF, ETF ë±(ê³ì¢ í©ê³ 70% íë)"]}),(0,s.jsxs)("div",{children:[(0,s.jsx)("strong",{className:"text-[color:var(--chart-2)]",children:"ìì ìì°"}),": ìê¸, ì 격TDF ë± (íë ìì)"]})]}),(0,s.jsx)("div",{className:"absolute w-0 h-0 border-l-4 border-r-4 border-transparent border-bottom-4",style:{top:"-4px",left:"50%",transform:"translateX(-50%)",borderBottom:"4px solid #0e1f1b"}})]})})]})},l=e=>{let{riskyAssetTotal:t=0,isVisible:a=!0,isLoading:r=!1,message:l=null,dataLength:i=0,title:o="í¬í¸í´ë¦¬ì¤ ìíë ë¶ì"}=e;if(!(a&&!r&&!l&&i>0))return null;let d=Math.round(100*t)/100,c=t>70,u=Math.round((70-t)*100)/100,m=Math.round((t-70)*100)/100;return(0,s.jsxs)("div",{className:"mt-4 bg-surface border border-line rounded-lg p-4 shadow-sm",children:[(0,s.jsxs)("div",{className:"flex items-center justify-between mb-3",children:[(0,s.jsx)("h3",{className:"text-lg font-semibold text-ink",children:o}),(0,s.jsxs)("div",{className:"flex items-center gap-1",children:[(0,s.jsx)("span",{className:"text-sm text-ink-mute",children:"ê·ì íë:"}),(0,s.jsx)("span",{className:"text-sm font-medium text-ink-soft",children:"70%"})]})]}),(0,s.jsxs)("div",{className:"mb-3",children:[(0,s.jsxs)("div",{className:"flex items-center justify-between mb-2",children:[(0,s.jsxs)("div",{className:"flex items-center",children:[(0,s.jsx)("span",{className:"text-sm font-medium text-ink-soft",children:"ìíìì° ë¹ì¤"}),(0,s.jsx)(n,{})]}),(0,s.jsxs)("span",{className:"text-sm text-ink-mute tabular-nums",children:[d,"% / 70%"]})]}),(0,s.jsxs)("div",{className:"w-full bg-secondary rounded-full h-3 relative",children:[(0,s.jsx)("div",{className:"absolute top-0 h-3 w-0.5 bg-ink-mute z-10",style:{left:"70%"}}),(0,s.jsx)("div",{className:"h-3 rounded-full transition-all duration-300 ".concat(c?"bg-debt":"bg-up"),style:{width:"".concat(Math.min(t,100),"%")}})]}),(0,s.jsxs)("div",{className:"flex justify-between text-xs text-ink-mute mt-1 relative",children:[(0,s.jsx)("span",{children:"0%"}),(0,s.jsx)("span",{className:"absolute text-ink-soft font-medium",style:{left:"70%",transform:"translateX(-50%)"},children:"70% (íë)"}),(0,s.jsx)("span",{children:"100%"})]})]}),(0,s.jsx)("div",{className:"text-sm p-2 rounded-md ".concat(c?"bg-debt/10 text-debt border border-debt/30":"bg-up/10 text-up border border-up/30"),children:c?"íì¬ ë³´ì ì¤ì¸ ìíì ìíìì° ë¹ì¤ì ".concat(d,"%ì´ë©°, í¬ì íë를 ").concat(m,"% ì´ê³¼íìµëë¤. í¬í¸í´ë¦¬ì¤ ì ì¥ì ìí´ ë¹ì¤ ì¡°ì ì´ íìí©ëë¤."):"íì¬ ë³´ì ì¤ì¸ ìíì ìíìì° ë¹ì¤ì ".concat(d,"%ì´ë©°, íëê¹ì§ ").concat(u,"%ì ì¬ì ê° ììµëë¤.")})]})}},42338:(e,t,a)=>{a.d(t,{A:()=>p});var s=a(70127),r=a(70567),n=a(9879),l=a(57088),i=a(31975),o=a(93721),d=a(67118),c=a(10895),u=a(6476),m=a(86685),x=a(70746),h=a(74590);let f=function(){let[e,t]=(0,r.useState)({loading:!0,data:null,message:null});return{multiliesGraphData:e,MultilinesGraph:async function(e,a){let s=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;if(a&&Array.isArray(a)&&0!==a.length&&!(Math.abs(a.reduce((e,t)=>e+(Number(t.weight)||0),0)-100)>.01))try{t(e=>({...e,loading:!0}));let e={portfolio:{ETF:a,TDF:[],...s&&{start_date:s}}},r=await h.O.post("/api/v2/us-etf/portfolio/returns",e,{headers:{"Content-Type":"application/json"}});t(e=>({...e,loading:!1,data:r.data,message:null}))}catch(e){var r;console.error("Error fetching US ETF portfolio returns:",e),console.error("Response:",null==e||null==(r=e.response)?void 0:r.data),t(t=>{var a,s;return{...t,loading:!1,data:null,message:(null==e||null==(s=e.response)||null==(a=s.data)?void 0:a.message)||e.message||"ìë¬ê° ë°ìíììµëë¤. ìë¡ê³ 침ì ìëí´ì£¼ì¸ì."}})}}}},p=function(e){var t,a;let{token:h,etfPortfolio:p,onDataReceived:g,startDate:b=null,disabled:v=!1,hidePortfolioLine:j=!1,hideTickerLines:y=!1}=e,[N,w]=(0,r.useState)([]),[k,E]=(0,r.useState)([]),{MultilinesGraph:F,multiliesGraphData:M}=f(),S=(0,r.useMemo)(()=>
1{if(!p||0===p.length)return null;try{return JSON.stringify({ETF:p.map(e=>({standard_code:e.standard_code,weight:e.weight})),startDate:null!=b?b:null})}catch(e){return console.error("í¬í¸í´ë¦¬ì¤ ì§ë ¬íì ì¤í¨íìµëë¤.",e),null}},[p,b]);(0,r.useEffect)(()=>{!v&&S&&F(h,p,b)},[h,S,v]),(0,r.useEffect)(()=>{M.data&&g&&g(M.data)},[M.data,g]);let{processedData:A,xRange:C,yRange:T,lineColors:D,etfNames:_}=(e=>{if(!e||!e.dates||!e.tickers)return{processedData:[],xRange:[],yRange:[],lineColors:[],etfNames:{}};let{dates:t,tickers:a,us_portfolio_cumulative_return:s}=e,r=[],n=[],l=[],i=[],o={},d=["#1f6b4d","#F59E0B","#94A3B8","#148F9A","#ABD5DE","#FCD34D","#10B981","#3B82F6","#8B5CF6","#0D9488"];return a.forEach((e,t)=>{let{ticker:a,cumulative_returns:s}=e,c=d[t%d.length];i.push({name:a,color:c}),o[a]=a,Object.entries(s).forEach(e=>{let[t,s]=e;r.push(t),n.push(s);let i=l.find(e=>e.date===t);i?i[a]=s:l.push({date:t,[a]:s})})}),!j&&s&&(i.push({name:"í¬í¸í´ë¦¬ì¤",color:"#1f6b4d"}),Object.entries(s).forEach(e=>{let[t,a]=e;r.push(t),n.push(a);let s=l.find(e=>e.date===t);s?s["í¬í¸í´ë¦¬ì¤"]=a:l.push({date:t,í¬í¸í´ë¦¬ì¤:a})})),l.sort((e,t)=>new Date(e.date)-new Date(t.date)),{processedData:l,xRange:[Math.min(...r.map(e=>new Date(e))),Math.max(...r.map(e=>new Date(e)))],yRange:[Math.min(...n),Math.max(...n)],lineColors:i,etfNames:o}})(M.data);(0,r.useEffect)(()=>{if(M.data&&M.data.tickers){w(M.data.tickers.map(e=>e.ticker));let e={};M.data.tickers.forEach(t=>{e[t.ticker]=t.ticker}),E(e)}},[M.data]);let R=v||!M.loading&&(0===A.length||M.message),B=!j,L=!y,O=B?D.slice(0,-1):D;return(0,s.jsxs)("div",{className:"w-full px-4 mt-5 flex flex-col items-center justify-start bg-secondary border border-line rounded-xl shadow-sm relative py-4 ".concat(R?"min-h-[200px]":"min-h-[550px]"),children:[!v&&M.loading&&(0,s.jsx)("div",{className:"flex min-h-[500px] w-full items-center justify-center",children:(0,s.jsx)(x.Ay,{})}),R&&(0,s.jsxs)("div",{className:"flex min-h-[300px] w-full flex-col items-center justify-center gap-3 px-4 py-8",children:[(0,s.jsx)(m.A,{className:"h-12 w-12 shrink-0 text-ink-mute",strokeWidth:1.5}),(0,s.jsx)("p",{className:"text-center text-ink-soft",children:M.message||"ì íí ììµë¥ ì ê³µì ìí´ ì¼ë¶ ë¯¸êµ ETF ì 보를 íì¸í ì ìë ì¢
ëª©ì´ í¬í¨ë ê²½ì° ê·¸ëí íìê° ì íë ì ììµëë¤."})]}),!R&&!M.loading&&A.length>0&&(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(n.u,{width:"100%",height:400,children:(0,s.jsxs)(l.b,{data:A,margin:{top:10,right:30,left:0,bottom:0},className:"min-h-[500px]",children:[(0,s.jsx)(i.d,{strokeDasharray:"3 3"}),(0,s.jsx)(o.W,{dataKey:"date",type:"category",tick:{fontSize:12},interval:"preserveStartEnd",angle:-45,textAnchor:"end"}),(0,s.jsx)(d.h,{domain:T,tick:{fontSize:12},interval:"preserveStartEnd"}),(0,s.jsx)(c.m,{}),L&&(null==(a=M.data)||null==(t=a.tickers)?void 0:t.map((e,t)=>{var a;return(0,s.jsx)(u.N1,{type:"monotone",dataKey:e.ticker,stroke:null==(a=D[t])?void 0:a.color,strokeWidth:1.5,opacity:.7,dot:!1},e.ticker)})),B&&(0,s.jsx)(u.N1,{type:"monotone",dataKey:"í¬í¸í´ë¦¬ì¤",stroke:"#1f6b4d",strokeWidth:2.5,dot:!1,strokeLinecap:"round",activeDot:{r:4,fill:"#1f6b4d",stroke:"#fff",strokeWidth:2}})]})}),(L||B)&&(0,s.jsxs)("div",{className:"absolute top-2 left-[100px] bg-surface rounded-md px-3 py-2 border border-line shadow-sm",children:[L&&O.map((e,t)=>{let a=N.includes(e.name)?k[e.name]:null;return(0,s.jsxs)("div",{className:"flex items-center justify-start gap-2",children:[(0,s.jsx)("div",{className:"h-[2px] w-[50px]",style:{backgroundColor:e.color,opacity:.7,height:"1.5px"}}),(0,s.jsx)("span",{className:"text-[10px]",children:a||e.name})]},t)}),B&&(0,s.jsxs)("div",{className:"flex items-center justify-start gap-2",children:[(0,s.jsx)("div",{className:"w-[50px]",style:{backgroundColor:"#1f6b4d",height:"2.5px",borderRadius:"2px"}}),(0,s.jsx)("span",{className:"text-[10px] font-semibold",children:"í¬í¸í´ë¦¬ì¤"})]})]})]})]})}},44809:(e,t,a)=>{a.d(t,{A:()=>r});var s=a(70127);let r=function(e){let{missingCodes:t,fundNames:a}=e,r=Object.values(t||{}).flat().map(e=>{let t=null==a?void 0:a.find(t=>t.includes("standard_code=".concat(e)));return(null==t?void 0:t.split(", name=")[1])||e});return 0===r.length?null:(0,s.jsxs)("div",{className:"mt-2 rounded-md border border-amber-200 bg-amber-50 px-3 py-2 text-xs text-amber-700",children:["ìë ì¢
목ì ìì°ë°°ë¶ ë°ì´í°ê° ìì´ ê³ì°ìì ì ì¸ëììµëë¤:"," ",r.join(", ")
1]})}},61176:(e,t,a)=>{a.d(t,{Zf:()=>i,gb:()=>d,qj:()=>c,r8:()=>o,w2:()=>u});let s=["ETF","TDF","principal_protected","cash"],r={ETF:[],TDF:[],principal_protected:[],cash:[]};function n(e){var t,a;if(!e||"object"!=typeof e)return null;let s=String(null!=(t=e.standard_code)?t:"").trim();if(!s)return null;let r=Number(null!=(a=e.allocation)?a:e.weight);return Number.isNaN(r)||r<=0?null:{standard_code:s,allocation:r}}function l(e){return Array.isArray(e)?e.map(n).filter(Boolean):[]}function i(e){return Array.isArray(e)?{...r,ETF:l(e)}:e&&"object"==typeof e?s.reduce((t,a)=>(t[a]=l(e[a]),t),{...r}):{...r}}function o(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,a=i(e),s=Number(t)||0;return s>0&&(a.cash=[{standard_code:"CASH",allocation:s}]),a}function d(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return i({ETF:Object.entries(e).map(e=>{let[t,a]=e;return{standard_code:t,allocation:a}})})}function c(e){return s.reduce((t,a)=>t+(e[a]||[]).reduce((e,t)=>e+t.allocation,0),0)}function u(e){return s.some(t=>(e[t]||[]).length>0)}},80923:(e,t,a)=>{a.d(t,{A:()=>g});var s=a(70127),r=a(70567),n=a(9879),l=a(84950),i=a(31975),o=a(93721),d=a(67118),c=a(10895),u=a(42572),m=a(70746),x=a(74590),h=a(61176);let f=function(){let[e,t]=(0,r.useState)({loading:!0,data:null,message:null});return{mountainGraphData:e,MountainGraph:async e=>{let a=(0,h.Zf)(e);if(!(0,h.w2)(a)||Math.abs((0,h.qj)(a)-100)>.01)return void t(e=>({...e,loading:!1}));try{t(e=>({...e,loading:!0}));let e=await x.O.post("/api/v2/simulation-results",a,{headers:{"Content-Type":"application/json"}});t(t=>({...t,loading:!1,data:e.data,message:null}))}catch(a){var s;console.error("â Simulation Results API Failed:",a.message);let e="ìë¬ê° ë°ìíììµëë¤. ìë¡ê³ 침ì ìëí´ì£¼ì¸ì.";if(null==a||null==(s=a.response)?void 0:s.data){let{error:t,message:s,details:r}=a.response.data;t?(e="ë°±ìë ìë¬: ".concat(t),s&&(e+=" - ".concat(s)),r&&(console.error("Error details:",r),e+=" (ìì¸í ë´ì©ì ì½ì 참조)")):s&&(e=s)}else a.message&&(e=a.message);t(t=>({...t,loading:!1,data:null,message:e}))}}}};var p=a(44809);let g=function(e){var t;let{portfolioData:a,fundNames:x}=e,{MountainGraph:g,mountainGraphData:b}=f(),[v,j]=(0,r.useState)([]),[y,N]=(0,r.useState)([0,0]),[w,k]=(0,r.useState)([0,0]),[E,F]=(0,r.useState)(10),[M,S]=(0,r.useState)(-10),A=(0,r.useRef)(null),C=(0,r.useMemo)(()=>{if(!(0,h.w2)(a))return null;try{return JSON.stringify(a)}catch(e){return null}},[a]);return(0,r.useEffect)(()=>{C&&(0,h.w2)(a)&&g(a)},[C]),(0,r.useEffect)(()=>{var e,t;if((null==b||null==(e=b.data)?void 0:e.returns_2y)&&(null==b||null==(t=b.data)?void 0:t.returns_10y)){let e=b.data.returns_2y,t=b.data.returns_10y,a=Array.from(new Set([...Object.keys(e),...Object.keys(t)])).map(a=>({x:parseFloat(a),twoYear:e[a]||0,tenYear:t[a]||0})).sort((e,t)=>e.x-t.x);j(a);let s=a.map(e=>e.x),r=[...a.map(e=>e.twoYear),...a.map(e=>e.tenYear)];N([Math.min(...s),Math.max(...s)]),k([0,Math.max(...r)])}},[b]),(0,r.useEffect)(()=>{let e=()=>{var e;let t=Math.max(Math.min(((null==(e=A.current)?void 0:e.clientWidth)||window.innerWidth)/(1.5*v.length),10),.2);F(t),S(-t)};return window.addEventListener("resize",e),e(),()=>{window.removeEventListener("resize",e)}},[v.length]),(0,s.jsxs)("div",{ref:A,className:"w-full overflow-auto min-h-[500px] px-4 mt-5 flex flex-col items-start justify-start bg-secondary border border-line rounded-xl shadow-sm relative pt-6",children:[b.loading&&(0,s.jsx)("div",{className:"flex min-h-[500px] w-full items-center justify-center",children:(0,s.jsx)(m.Ay,{})}),!b.loading&&v.length>0&&(0,s.jsx)(n.u,{width:"100%",height:420,children:(0,s.jsxs)(l.X,{data:v,margin:{top:10,right:0,left:30,bottom:40},children:[(0,s.jsx)(i.d,{strokeDasharray:"3 3",stroke:"var(--line)",vertical:!1}),(0,s.jsx)(o.W,{dataKey:"x",type:"number",domain:y,tickFormatter:e=>Math.round(e),label:{value:"ì°íê· ììµë¥ (%)",position:"bottom",offset:20}}),(0,s.jsx)(d.h,{domain:w,label:{value:"ë¹ë (í)",angle:-90,position:"insideLeft",offset:-5}}),(0,s.jsx)(c.m,{formatter:(e,t)=>["".concat(Math.round(e),"í"),t]}),(0,s.jsx)(u.Gk,{type:"monotone",dataKey:"tenYear",fill:"rgba(31, 107, 77, 0.2)",stroke:"#1f6b4d",name:"10ë
ì¥ê¸°í¬ì"}),(0,s.jsx)(u.Gk,{type:"monotone",dataKey:"twoYear",fill:"rgba(245, 158, 11, 0.2)",stroke:"#F59E0B",name:"2ë
ë¨ê¸°í¬ì"})]})}),!b.loading&&(0,s.jsx)("div",{className:"w-full pb-4",children:(0,s.jsx)(p.A,{missingCodes:null==b||null==(t=b.data)?void 0:t.missing_codes,fundNames:x})}),(0,s.jsx)("div",{className:"absolute top-6 right-4 bg-surface rounded-md px-3 py-2 shadow-sm border border-line",children:(0,s.jsxs)("div",{className:"flex flex-col gap-2",children:[(0,s.jsxs)("div",{className:"flex items-center gap-2",children:[(0,s.jsx)("div",{className:"h-[8px] w-[20px] bg-brand-700 rounded-sm"}),(0,s.jsx)("span",{className:"text-sm",children:"10ë
ì¥ê¸°í¬ì"})]}),(0,s.jsxs)("div",{className:"flex items-center gap-2",children:[(0,s.jsx)("div",{className:"h-[8px] w-[20px] bg-[#F59E0B] rounded-sm"}),(0,s.jsx)("span",{className:"text-sm",children:"2ë
ë¨ê¸°í¬ì"})]})]})})]})}},84950:(e,t,a)=>{a.d(t,{X:()=>i});var s=a(70567),r=a(45809),n=a(15516),l=["axis"],i=(0,s.forwardRef)((e,t)=>
1s.createElement(n.P,{chartName:"ComposedChart",defaultTooltipEventType:"axis",validateTooltipEventTypes:l,tooltipPayloadSearcher:r.uN,categoricalChartProps:e,ref:t}))},93328:(e,t,a)=>{a.d(t,{A:()=>l});var s=a(70127),r=a(70567);let n=(0,a(51629).A)("circle-question-mark",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3",key:"1u773s"}],["path",{d:"M12 17h.01",key:"p32p05"}]]);function l(e){let{label:t,children:a,className:l=""}=e,[i,o]=(0,r.useState)(!1),d=(0,r.useRef)(null);return(0,r.useEffect)(()=>{if(!i)return;let e=e=>{d.current&&!d.current.contains(e.target)&&o(!1)};return document.addEventListener("mousedown",e),()=>document.removeEventListener("mousedown",e)},[i]),(0,s.jsxs)("span",{ref:d,className:"relative inline-flex ".concat(l),children:[(0,s.jsx)("button",{type:"button","aria-label":t,"aria-expanded":i,className:"shrink-0 cursor-pointer text-ink-mute transition-colors hover:text-ink-soft",onClick:e=>{e.stopPropagation(),o(e=>!e)},children:(0,s.jsx)(n,{className:"h-4 w-4"})}),i&&(0,s.jsx)("div",{role:"tooltip",className:"absolute left-0 top-full z-50 mt-2 w-[min(340px,calc(100vw-2rem))] rounded-lg border border-line bg-surface px-3 py-2.5 text-left text-xs leading-relaxed text-ink-soft shadow-lg break-keep",children:a})]})}}}]);
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.