1import{_ as N}from"./9O65W94F.js";import{B as D,u as E,a as G,A as T,k as s,a1 as K,w as h,a5 as P,D as d,b as x,c as I,y as J,Y as w,d as A,e as C,l as R,m as r,t as _,f as U,o as v,j as V}from"#entry";import"./CRmIUlhp.js";import"./JOYp4pE2.js";import"./Dk53qDSH.js";import"./MFi1022A.js";import"./CZBXOu9j.js";import"./CWHr4f2k.js";import"./DtxMtNyo.js";import"./H6WxckKn.js";import"./DVu5kgg7.js";import"./B2bO5Xct.js";import"./B94QFPvX.js";import"./Kojc0Z1Z.js";import"./uCxdpa09.js";import"./DSkL-1Rt.js";import"./BkeENxAR.js";import"./CGvUyP8N.js";import"./CE1G-McA.js";const Z={class:"max-w-7xl mx-auto px-4 py-12"},j={key:0,class:"text-center py-12"},z={class:"text-red-500 text-lg mb-4"},F={key:1,class:"space-y-8"},de=D({__name:"[section]",async setup(H){let c,l;const{t:i,locale:k}=E();G();const g=T(),u=s(()=>g.params.id),a=s(()=>g.params.section);if(!["moat","pricing-power","predictability","financial-strength","capital-allocation","strong-management","fair-value"].includes(a.value))throw K({statusCode:404,statusMessage:"Section not found"});let y=null,b=null;try{const t=([c,l]=h(()=>$fetch(`/api/stock/${u.value.toLowerCase()}`)),c=await c,l(),c);if(t.redirect&&t.redirect.slug){const o=t.redirect.slug;[c,l]=h(()=>P(`/stock/${o}/${a.value}`,{redirectCode:301})),await c,l()}y=t.stock}catch(t){b=t.data?.message||t.message||"Failed to load stock data"}const e=d(y),n=d(b),L=d(!1),B=async t=>{if(!(!V().isLoggedIn||!t))try{const o=t.slug||t.symbol;await $fetch(`/api/stock/${o}/view`,{method:"GET",headers:{Authorization:`Bearer ${V().token}`}})}catch(o){console.error("Failed to track stock view:",o)}};s(()=>!e.value||!e.value.companyName?"":e.value.companyName.replace(/\b(S\.?A\.? ?[dD][eE]? ?[cC]?[vV]?\b|S\.?A\.?B\.? ?[dD][eE]? ?C\.?V\.?|S\.?A\.?S\.?|S\.?A\.?|A\.?G\.?|G\.?m\.?b\.?H\.?|N\.?V\.?|B\.?V\.?|O\.?Y\.?|A\.?B\.?|O\.?J\.?S\.?C\.?|P\.?L\.?C\.?|L\.?T\.?D\.?|L\.?L\.?C\.?|Inc\.?|Incorporated|Corporation|Corp\.?|Company|Co\.?|Limited|Ltd\.?|SpA|Oy|S\.?p\.?z\.? o\.?o\.?|K\.?K\.?|Pty\.? ?Ltd\.?|BVBA|NV|ASA|S\.?A\.?B\.? ?d[eE] ?C\.?V\.?|S\.?A\.?E\.?|S\.?A\.?P\.?|S\.?C\.?A\.?|S\.?C\.?|S\.?R\.?L\.?|S\.?N\.?C\.?|S\.?P\.?A\.?|S\.?P\.?Z\.?O\.?O\.?|A\.?S\.?|A\.?E\.?|A\.?S\.?A\.?|OAO|PJSC|Tbk|Pte\.? ?Ltd\.?|Co\.? Ltd\.?|Co\.? Plc\.?|Co\.? AG|Co\.? KGaA|KGaA|S\.?A\.?S\.?|S\.?A\.?B\.?|S\.?A\.? de C\.?V\.?|S\.?A\.? de C\.?V\.?|S\.?A\.?B\.? de C\.?V\.?|S\.?A\.?E\.?|S\.?A\.?P\.?|S\.?C\.?A\.?|S\.?C\.?|S\.?R\.?L\.?|S\.?N\.?C\.?|S\.?P\.?A\.?|S\.?P\.?Z\.?O\.?O\.?|A\.?S\.?|A\.?E\.?|A\.?S\.?A\.?|OAO|PJSC|Tbk|Pte\.? ?Ltd\.?|Co\.? Ltd\.?|Co\.? Plc\.?|Co\.? AG|Co\.? KGaA|KGaA)\b\.?/gi,"").replace(/[,.\-ââ]+$/,"").replace(/\s{2,}/g," ").trim().replace(/ /g,"-"));const O=s(()=>!e.value||!e.value.companyName?"":e.value.companyName.replace(/\b(S\.?A\.? ?[dD][eE]? ?[cC]?[vV]?\b|S\.?A\.?B\.? ?[dD][eE]? ?C\.?V\.?|S\.?A\.?S\.?|S\.?A\.?|A\.?G\.?|G\.?m\.?b\.?H\.?|N\.?V\.?|B\.?V\.?|O\.?Y\.?|A\.?B\.?|O\.?J\.?S\.?C\.?|P\.?L\.?C\.?|L\.?T\.?D\.?|L\.?L\.?C\.?|Inc\.?|Incorporated|Corporation|Corp\.?|Company|Co\.?|Limited|Ltd\.?|SpA|Oy|S\.?p\.?z\.? o\.?o\.?|K\.?K\.?|Pty\.? ?Ltd\.?|BVBA|NV|ASA|S\.?A\.?B\.? ?d[eE] ?C\.?V\.?|S\.?A\.?E\.?|S\.?A\.?P\.?|S\.?C\.?A\.?|S\.?C\.?|S\.?R\.?L\.?|S\.?N\.?C\.?|S\.?P\.?A\.?|S\.?P\.?Z\.?O\.?O\.?|A\.?S\.?|A\.?E\.?|A\.?S\.?A\.?|OAO|PJSC|Tbk|Pte\.? ?Ltd\.?|Co\.? Ltd\.?|Co\.? Plc\.?|Co\.? AG|Co\.? KGaA|KGaA|S\.?A\.?S\.?|S\.?A\.?B\.?|S\.?A\.? de C\.?V\.?|S\.?A\.? de C\.?V\.?|S\.?A\.?B\.? de C\.?V\.?|S\.?A\.?E\.?|S\.?A\.?P\.?|S\.?C\.?A\.?|S\.?C\.?|S\.?R\.?L\.?|S\.?N\.?C\.?|S\.?P\.?A\.?|S\.?P\.?Z\.?O\.?O\.?|A\.?S\.?|A\.?E\.?|A\.?S\.?A\.?|OAO|PJSC|Tbk|Pte\.? ?Ltd\.?|Co\.? Ltd\.?|Co\.? Plc\.?|Co\.? AG|Co\.? KGaA|KGaA)\b\.?/gi,"").replace(/[,.\-ââ]+$/,"").replace(/\s{2,}/g," ").trim());s(()=>i(`stockDetails.sectionNames.${a.value}`)||a.value);const p=s(()=>
1{if(!e.value)return"Stock Details";const t=O.value,o=e.value.symbol.toUpperCase();return i(`stockDetails.seoTitles.${a.value}`,{company:t,symbol:o})}),m=s(()=>{if(!e.value)return i("stockDetails.loadingStock");const t=e.value.companyName||e.value.symbol.toUpperCase(),o=e.value.symbol.toUpperCase();return i(`stockDetails.seoDescriptions.${a.value}`,{company:t,symbol:o})});x({ogLocale:k.value}),I({title:()=>p.value,ogTitle:()=>p.value,description:()=>e.value?m.value:"Stock section analysis",ogDescription:()=>e.value?m.value:"Stock section analysis on Beanvest.",ogUrl:()=>e.value?`https://beanvest.com/stock/${e.value.slug?.toLowerCase()||e.value.symbol?.toLowerCase()||e.value.isin?.toLowerCase()}/${a.value}`:"https://beanvest.com/stock",ogType:"website",ogLocale:k.value,ogImage:()=>e.value?.logo?.url||"https://beanvest.com/og/beanvest-home.jpg",twitterCard:"summary_large_image",twitterTitle:()=>p.value,twitterDescription:()=>e.value?m.value:"Stock section analysis on Beanvest.",twitterImage:()=>e.value?.logo?.url||"https://beanvest.com/og/beanvest-home.jpg",twitterCreator:"@beanvest"}),J({link:[{rel:"canonical",href:()=>e.value?`https://beanvest.com/stock/${e.value.slug?.toLowerCase()||e.value.symbol?.toLowerCase()||e.value.isin?.toLowerCase()}/${a.value}`:"https://beanvest.com/stock"}]});const f=async()=>{L.value=!0,n.value=null;try{const t=await $fetch(`/api/stock/${u.value.toLowerCase()}`);if(t.redirect&&t.redirect.slug){const o=t.redirect.slug;await P(`/stock/${o}/${a.value}`,{replace:!0})}e.value=t.stock}catch(t){n.value=t.data?.message||t.message||"Failed to load stock data"}finally{L.value=!1}};return w([u,a],async([t,o],[S,$])=>{(t&&t!==S||o&&o!==$)&&await f()}),w(e,t=>{t&&B(t)},{immediate:!0}),(t,o)=>{const S=N;return v(),A("div",null,[C("div",Z,[r(n)?(v(),A("div",j,[C("div",z,_(r(n)),1),C("button",{onClick:f,class:"px-4 py-2 bg-blue-600 text-white rounded hover:bg-blue-700 transition-colors"},_(t.$t("stocks.error.retry")),1)])):r(e)?(v(),A("div",F,[U(S,{stock:r(e),"related-stocks":r(e).relatedStocks,"sector-stocks":r(e).sectorStocks,"focused-section":r(a)},null,8,["stock","related-stocks","sector-stocks","focused-section"])])):R("",!0)])])}}});export{de as default};
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.