PageSourceSearch

https://finviz.com/assets/dist/5156.v1.48c87be1.js

js finviz.com collected 2026-09-24 08:31:03 UTC 22,546 bytes, 2 lines download raw bytes

1!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{};e.SENTRY_RELEASE={id:"80ef2cdf9e309e2aad9550e3141d0d77395a37e3"},e._sentryModuleMetadata=e._sentryModuleMetadata||{},e._sentryModuleMetadata[(new e.Error).stack]=function(e){for(var t=1;t<arguments.length;t++){var a=arguments[t];if(null!=a)for(var r in a)a.hasOwnProperty(r)&&(e[r]=a[r])}return e}({},e._sentryModuleMetadata[(new e.Error).stack],{"_sentryBundlerPluginAppKey:finviz":!0});var t=(new e.Error).stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]="602d1151-ba0c-4cd4-8541-5718c19b8d37",e._sentryDebugIdIdentifier="sentry-dbid-602d1151-ba0c-4cd4-8541-5718c19b8d37")}catch(e){}}(),(self.webpackChunkFinvizModern=self.webpackChunkFinvizModern||[]).push([[5156],{15830(e,t,a){a.r(t),a.d(t,{default:()=>le});var r=a(31115),s=a(98279),i=(a(14846),a(75568),a(61417)),l=a(63696),n=a(76700),o=a(62134),c=a(92362),d=a(85705),u=(a(66184),a(94364),a(30448)),m=a(40067),h=a(76022),g=a(59282),f=a(21794);let p=function(e){return e.Euclidean="euclidean",e.BandedDtw="dtw",e}({}),x=function(e){return e.All="all",e.Stocks="stocks",e.Etfs="etfs",e}({});const C=[{value:p.Euclidean,label:"Euclidean"},{value:p.BandedDtw,label:"Banded DTW"}],v=[{value:x.Stocks,label:"Stocks"},{value:x.Etfs,label:"ETFs"}];function b(e,t){return(0,o.jR)(e)??t}function y(e,t){const a=g.Ay.dateFromUnixTimestamp(e),r=g.Ay.dateFromUnixTimestamp(t),s=a.getFullYear()===r.getFullYear()?"":`, ${a.getFullYear()}`;return`${`${u.KR[a.getMonth()]} ${a.getDate()}${s}`} – ${u.KR[r.getMonth()]} ${r.getDate()}, ${r.getFullYear()}`}function k(e){const t=v.filter(t=>e.includes(t.value));return t.length===v.length?"All":t.map(e=>e.label).join(", ")}const S={algorithm:p.Euclidean,universe:[x.Stocks,x.Etfs],matchCount:12,isInverseMatch:!1};function j(e,t){const{query:a,sel_start_ts:r,sel_end_ts:s}=e,{match_start_ts:i,match_end_ts:l}=t;return null==r||null==s||null==i||null==l?[]:[{type:m.b.abbreviation,period:(0,h.O)({ticker:a,source:{from:r,to:s},destination:{from:i,to:l}}),color:m.b.defaultColor}]}const w=180;var T=a(58284),M=a(4452),N=a.n(M),R=a(62540);function I(e){let{match:t,rank:a,chartImageUrl:r,isViewed:s,onOpenChart:l}=e;return(0,R.jsxs)("button",{type:"button",className:N()("block w-full cursor-pointer rounded-lg border p-2 pb-1.5 text-left transition-colors",s?"border-blue-400":"border-transparent hover:border-primary"),title:"View this chart",onClick:()=>l(t),"data-testid":"similar-charts-result-card",children:[(0,R.jsxs)(i.fzL,{as:"span",className:"block leading-tight font-semibold",children:[a,". ",t.ticker]}),(0,R.jsxs)(i.fzL,{as:"span",size:"small",className:"mt-0.5 block truncate leading-tight text-muted-2",children:[t.companyName||t.ticker," · similarity ",Math.round(t.similarity)," · dist"," ",t.distance.toFixed(2)]}),(0,R.jsx)("img",{className:"mt-1.5 w-full",style:{height:w},src:r,srcSet:(0,i.tSO)(r),referrerPolicy:(0,i.Yqt)(),alt:`${t.ticker} chart`,loading:"lazy"})]})}function L(e){let{searchState:t,sourceChart:a,isSourceInstrumentSupported:s,viewedMatchTicker:l,onOpenChart:o}=e;const{setElementRef:c,elementWidth:d}=(0,i.uS3)(),{premarket:m,aftermarket:h}=(0,r.k)(a,{watchProperties:["premarket","aftermarket"]}),{theme:g}=(0,r.k)(a.chart_layout(),{watchProperties:["theme"]}),f=d>0?function(e){const t=e-u.sg.M-u.sg.L,a=Math.max(1,Math.floor(t/155)),r=a>=2?1:0;return{width:e,height:w,barWidth:a-r,barMargin:r,borderWidth:0}}(d-42):null;return s?"searching"===t.phase?(0,R.jsxs)("div",{className:"flex items-center gap-2 px-3.5 py-6",children:[(0,R.jsx)(i.vX2,{delayComponent:null,children:(0,R.jsx)(i.y$y,{width:14})}),(0,R.jsxs)(i.fzL,{size:"small",className:"text-muted-2",children:["Ranking the universe against ",t.sourceTicker,"…"]})]}):"results"===t.phase?0===t.response.matches.length?(0,R.jsx)(T.v,{icon:"chartLine",title:"No Matching Charts",description:"No charts match this source. Try a different region, algorithm or universe."}):(0,R.jsx)("div",{ref:c,className:"flex flex-col gap-2.5 px-3 py-4","data-testid":"similar-charts-results",children:null!=f&&t.response.matches.map((e,r)=>(0,R.jsx)(I,{match:e,rank:r+1,isViewed:e.ticker===l,chartImageUrl:(0,i.azv)({ticker:e.ticker,timeframe:t.sourceTimeframe,dimensions:f,hasDarkTheme:g===n.Sx.dark,chartType:a.getChartType()?.replace("charts/",""),premarketStartMinutes:m,aftermarketEndMinutes:h,overlays:j(t.response,e)}),onOpenChart:o},e.ticker))}):"error"===t.phase?(0,R.jsx)(T.v,{icon:"warningOutlined",title:"Search Failed",description:"Similar charts search failed. Try again."}):(0,R.jsx)(T.v,{icon:"chartLine",title:"Find Similar Charts",description:"Pick your settings and press Find Similar Charts to rank the universe against the active chart."}):(0,R.jsx)(T.v,{icon:"chartCandle",title:"Stocks Only",description:"Similar charts are available for stocks only. Switch to a stock chart to search."})}a(27458);var z=a(27642);function P(e){let{chartLayoutModel:t,sourceTicker:a,isDisabled:s}=e;const{similarChartsRegionController:l}=(0,r.k)(t,{watchProperties:["similarChartsRegionController","similarChartsRegion"]}),c=(0,o.b)(t),d=null!=l&&null==c,u=()=>t.trigger(n.CI.SimilarChartsRegionToolToggle),m=()=>{t.updateAttribute("similarChartsRegion",void 0),(0,o.L8)(t,c),null!=t.similarChartsRegionController&&u()},h=()=>{null==t.similarChartsRegionController&&u(),t.similarChartsRegionController?.restart()};return null!=c?(0,R.jsxs)("div",{className:"flex h-8 items-center justify-between gap-1 rounded-md border border-blue-400 bg-blue-400/10 pr-1","data-testid":"similar-charts-region-chip",children:[(0,R.jsxs)(i.$nd,{theme:"transparent",size:"medium",className:"min-w-0 flex-1 hover:text-blue-500 dark:hover:text-blue-400",contentClass:"flex items-center gap-2 truncate",title:"Select a new region",onClick:h,children:[(0,R.jsx)(i.Int,{name:"selectionArea",className:"text-blue-400"}),(0,R.jsxs)(i.fzL,{as:"span",medium:!0,className:"truncate text-xs",children:[c.barCount," bars selected"]})]}),(0,R.jsx)(i.$nd,{appearance:"square",size:"small",theme:"chipTransparent","aria-label":"Clear selection",onClick:m,"data-testid":"similar-charts-region-clear-btn",children:(0,R.jsx)(i.Int,{name:"close",width:12})})]}):(0,R.jsxs)("div",{className:"flex flex-col gap-0.5",children:[(0,R.jsxs)(i.$nd,{theme:"chip",size:"medium",className:"w-full text-xs disabled:opacity-50",contentClass:"flex items-center justify-center gap-2",active:d,disabled:s,onClick:u,"data-testid":"similar-charts-select-region-btn",children:[(0,R.jsx)(i.Int,{name:"selectionArea",className:d?"text-gray-900 dark:text-white":"text-muted-2"}),d?"Selecting... click on the chart":`Select Region On ${a}`]}),d&&(0,R.jsxs)(i.fzL,{size:"small",className:"leading-4 text-muted-2",children:["Click a start then an end point on the chart · ",z.Pg,"-",z.BQ," bars · Esc cancels."]})]})}function A(e){let{chartLayoutModel:t,sourceTicker:a,formState:r,isSourceInstrumentSupported:s,isSearching:l,onFormStateChange:n,onSubmit:o}=e;const c=v.filter(e=>r.universe.includes(e.value));return(0,R.jsxs)("div",{className:"flex flex-col gap-3.5 p-3 pb-4",children:[(0,R.jsxs)("div",{className:"grid grid-cols-2 gap-3",children:[(0,R.jsx)(i.JU7,{title:"Algorithm",titleClassName:"text-sm text-muted",children:(0,R.jsx)(i.l6P,{className:"w-full",size:"medium",nativeSelect:"mobile","aria-label":"Algorithm","data-testid":"similar-charts-algorithm-select",disabled:!s,items:C,value:r.algorithm,onChange:e=>n({algorithm:e.value})})}),(0,R.jsx)(i.JU7,{title:"Universe",titleClassName:"text-sm text-muted",children:(0,R.jsx)(i.l6P,{className:"w-full",size:"medium","aria-label":"Universe","data-testid":"similar-charts-universe-select",disabled:!s,items:v,value:c,triggerContent:k(r.universe),onChange:e=>{0!==e.length&&n({universe:e.map(e=>e.value)})}})})]}),(0,R.jsx)(P,{chartLayoutModel:t,sourceTicker:a,isDisabled:!s}
1),(0,R.jsx)(i.F16,{size:"small",label:(0,R.jsx)(i.fzL,{as:"span",className:"text-muted",children:"Matches"}),min:6,max:30,step:1,disabled:!s,value:r.matchCount,"data-testid":"similar-charts-matches-slider",rightContent:(0,R.jsx)(i.fzL,{as:"div",className:"w-8 text-right tabular-nums",children:r.matchCount}),onChange:e=>n({matchCount:e.currentTarget.valueAsNumber})}),(0,R.jsx)(i.dOG,{className:"flex-row-reverse justify-between gap-3",labelClassNames:"min-w-0",isChecked:r.isInverseMatch,disabled:!s,handleChange:()=>n({isInverseMatch:!r.isInverseMatch}),size:i.WWO.xsmall,theme:i.sOC.blue,"aria-label":"Inverse Match",label:(0,R.jsxs)("div",{className:"-ml-1 flex flex-col gap-0.5 font-normal",children:[(0,R.jsx)(i.fzL,{medium:!0,className:"leading-tight",children:"Inverse Match"}),(0,R.jsx)(i.fzL,{size:"small",className:"leading-4 text-muted-2",children:"Flip the source to find opposite / inverse charts."})]})}),(0,R.jsx)(i.$nd,{theme:"blue",size:"medium",padding:"large",className:"mt-0.5 self-start",disabled:l||!s,onClick:o,"data-testid":"similar-charts-find-btn",children:l?"Searching…":"Find Similar Charts"})]})}var O=a(78325);const F=[{value:"overlay",label:"Overlay"},{value:"split",label:"Split"}];function _(e){let{viewing:t,sourceRegion:a,onModeChange:r,onOpenMatch:s,onClose:l}=e;const{ticker:n,timeframe:o}=t.sourceChartConfig,c=document.getElementById(u.ze);return null==c?null:(0,O.createPortal)((0,R.jsxs)("div",{className:"my-1 flex h-8 items-center gap-1 overflow-hidden rounded-md border border-blue-400/45 bg-blue-400/10 px-1 font-medium text-muted [contain:inline-size]","data-testid":"similar-charts-viewing-bar",children:[(0,R.jsx)(i.Int,{name:"chartLine",className:"text-blue-400"}),(0,R.jsxs)(i.fzL,{as:"span",size:"small",className:"min-w-0 flex-1 truncate leading-none",children:["Now viewing ",(0,R.jsx)("span",{className:"font-semibold text-default",children:t.matchTicker})," — similar to"," ",null!=a?"your selection in ":"",(0,R.jsx)("span",{className:"font-semibold text-default",children:n})," ",(0,R.jsx)("span",{className:"text-disabled",children:null==a?(0,u.Rt)(o):y(a.startTimestamp,a.endTimestamp)})]}),(0,R.jsx)(i.$Zo,{isButtonActive:!0,size:"small",theme:"none",rounding:"small",hasBorder:!1,className:"flex gap-px bg-secondary/50 p-px",buttonClass:"px-2",activeTheme:"chipTransparent",items:F,value:t.mode,onChange:e=>r(e.value),"data-testid":"similar-charts-viewing-mode"}),(0,R.jsxs)(i.$nd,{size:"small",padding:"regular",theme:"blue",className:"font-semibold",title:`Load ${t.matchTicker} as the chart`,onClick:s,"data-testid":"similar-charts-open-match-btn",children:["Open ",t.matchTicker]}),(0,R.jsx)(i.$nd,{size:"small",padding:"regular",theme:"light",leftContent:(0,R.jsx)(i.Int,{name:"close",width:12}),title:`Close ${t.matchTicker} and go back to ${n}`,onClick:l,"data-testid":"similar-charts-viewing-close-btn",children:"Close"})]}),c)}a(6211),a(49748);var E=a(94930),$=a.n(E),D=a(38587),q=a(77513),V=a(92233),B=a(54466),H=a(54850);const U=e=>Object.values(u.x8).includes(e.type);function W(e){let{viewing:t,chartLayoutModel:a}=e;const s=l.useRef(null),{setElementRef:n,elementWidth:o}=(0,i.uS3)(),{theme:c}=(0,r.k)(a,{watchProperties:["theme"]}),d=g.Ay.getScaleRatio(),m=a.similarChartsRegion??null;return l.useLayoutEffect(()=>{if(o<=0)return;let e=null,r=!1;const{ticker:i,instrument:l,timeframe:n,premarket:h,aftermarket:g}=t.sourceChartConfig;return q.A.get({ticker:i,instrument:l,timeframe:n,options:{premarket:h,aftermarket:g,cachePredicate:e=>((e,t)=>null==t||e.date[0]<=t.startTimestamp&&e.date[e.date.length-1]>=t.endTimestamp)(e,m)}}).then(i=>{const l=s.current,n=null==l?null:(0,V.oF)(l);if(r||null==n||0===i.close.length)return;e=function(e,t,a,r,s,i){const{sourceChartConfig:l}=e,n=D.A.create({width:r,height:w,layout:t.layout,theme:s,specificChartFunctionality:u.MO.magnifierPopover,isLargeChart:t.isLargeChart,settings:$()({},t.settings),defaultZoomFactor:t.defaultZoomFactor,uuid:`${t.uuid}-similar-charts-preview`,isHideDrawingsActive:!0,isHideAlertsActive:!0,isPreserveDrawingsActive:!1,syncChartParts:[],similarChartsRegion:i??void 0}),o=n.charts().create({width:r,height:w,timeframe:l.timeframe,dateRange:null,scale:l.scale,leftOffset:0,ticker:l.ticker,instrument:l.instrument,zoomFactor:1,refreshData:!1,quote:a,premarket:l.premarket,aftermarket:l.aftermarket}),c=l.panes.flatMap(e=>e.elements).find(U),d=o.createPaneCascade({height:w,elements:null==c?[]:[$()({},c)]});return{layout:n,chart:o,pane:d}}(t,a,i,o,c,m);const h=t.sourceViewport,g=i.getBarIndex(i.close.length-1),f=null==h?0:i.getPositionXFromTimestamp(h.endTimestamp)+1;(0,B.u0)(e,{startBarIndex:f>0?Math.max(0,i.getPositionXFromTimestamp(h.startTimestamp)):0,endBarIndex:f>0?f:g+1}),n.setTransform(d,0,0,d,0,0),n.clearRect(0,0,o,w),(0,H.hd)({chartL
1ayoutModel:e.layout,chartModel:e.chart,paneModel:e.pane,canvasCtx:n,shouldRenderCross:!1,shouldRenderAlertContent:!1})}),()=>{r=!0,e?.layout.destroyCascade()}},[t,a,o,c,d,m]),(0,R.jsxs)("div",{className:"overflow-hidden rounded-md border border-secondary",children:[(0,R.jsxs)("div",{className:"truncate border-b border-secondary bg-blue-400/10 px-2 py-1.5 text-info leading-tight font-medium text-muted-2",children:[(0,R.jsx)("span",{className:"font-semibold text-default",children:t.sourceChartConfig.ticker})," · ",null==m?(0,u.Rt)(t.sourceChartConfig.timeframe):(0,R.jsxs)(R.Fragment,{children:[y(m.startTimestamp,m.endTimestamp),(0,R.jsx)("span",{className:"text-disabled",children:" · your selection"})]})]}),(0,R.jsx)("canvas",{ref:e=>{s.current=e,n(e)},className:"block w-full",width:Math.max(1,o)*d,height:w*d,style:{height:w},"data-testid":"similar-charts-preview-chart"})]})}function K(e){let{label:t,value:a}=e;return(0,R.jsxs)("div",{className:"flex items-baseline justify-between gap-3",children:[(0,R.jsx)(i.fzL,{className:"text-xs leading-tight text-muted-2",children:t}),(0,R.jsx)(i.fzL,{medium:!0,className:"text-right text-xs leading-tight",children:a})]})}function Y(e){let{viewing:t,chartLayoutModel:a,searchState:r,onClose:s}=e;return(0,R.jsxs)("div",{className:"flex flex-col gap-3.5 px-3 pt-3.5 pb-4","data-testid":"similar-charts-viewing-recap",children:[(0,R.jsxs)("div",{className:"flex flex-col gap-1.5",children:[(0,R.jsx)(i.fzL,{className:"text-muted",children:"Matched against"}),(0,R.jsx)(W,{viewing:t,chartLayoutModel:a})]}),"results"===r.phase&&(0,R.jsxs)("div",{className:"flex flex-col gap-2",children:[(0,R.jsx)(K,{label:"Timeframe",value:(0,u.Rt)(r.sourceTimeframe)}),(0,R.jsx)(K,{label:"Algorithm",value:C.find(e=>e.value===r.formState.algorithm)?.label??""}),(0,R.jsx)(K,{label:"Universe",value:k(r.formState.universe)}),(0,R.jsx)(K,{label:"Matches",value:String(r.response.matches.length)})]}),(0,R.jsxs)(i.$nd,{theme:"light",size:"medium",className:"w-full text-xs",contentClass:"flex items-center justify-center gap-2",onClick:s,"data-testid":"similar-charts-close-viewing-btn",children:[(0,R.jsx)(i.Int,{name:"close",width:14,className:"text-muted-2"}),"Close ",t.matchTicker]})]})}const J={phase:"idle"};function X(e){let{chartLayoutModel:t,sourceChart:a,regionKey:r,isStalenessSuspended:s}=e;const[n,c]=l.useState(S),[d,u]=l.useState(J),m=(0,i.oHS)(e=>{c(t=>({...t,...e}))}),h=(0,i.oHS)(async()=>{const e=(0,o.b)(t),a=b(t,t.activeChart),{ticker:s,timeframe:i,dateRange:l}=a,c=e??(0,z.xw)(a.quote()),d={formState:n,regionKey:r,sourceTicker:s,sourceTimeframe:i,sourceDateRange:l};u({phase:"searching",sourceTicker:s});try{const e=await async function(e){const t={ticker:e.sourceTicker,timeframe:e.timeframe,method:e.algorithm,top_n:e.matchCount,lookback_start_ts:0,sel_start_ts:null==e.region?null:Math.round(e.region.startTimestamp),sel_end_ts:null==e.region?null:Math.round(e.region.endTimestamp),inverse:e.isInverseMatch,universe:e.universe.length===v.length?x.All:e.universe[0]};return await(0,f.Ay)({location:"/api/similar_charts",method:"POST",contentType:f.cM.ApplicationJson,body:JSON.stringify(t),throwOnPredicate:e=>!e.ok})}({...n,sourceTicker:s,timeframe:i,region:c&&{startTimestamp:c.startTimestamp,endTimestamp:c.endTimestamp}});u({phase:"results",response:e,...d})}catch{u({phase:"error",...d})}}),g=!s&&function(e,t,a,r){return!("results"!==e.phase&&"error"!==e.phase||e.formState===t&&e.sourceTimeframe===a.timeframe&&e.sourceTicker===a.ticker&&e.sourceDateRange===a.dateRange&&e.regionKey===r)}(d,n,a,r);return{formState:n,updateFormState:m,searchState:g?J:d,isSearching:"searching"===d.phase,submit:h}}var Z=a(65227),Q=a(88746),G=a(48478);const ee=e=>e.getAllCharts().at(-1)??null;function te(e){return{...e,panes:e.panes.map(e=>({...e,scaleRange:null}))}}function ae(e){const t=e.quote(),a=e.getChartPane(),{ChartSettings:r}=e.getChartLayoutSettings(),s=e.width-r.left.width-r.right.width;if(null==t||0===t.close.length||s<=0)return null;if(null==a?.scale?.x||!Number.isFinite(e.leftOffset))return null;const i={quote:t,paneModel:a,leftOffset:e.leftOffset};return{startTimestamp:t.getTimestampFomPositionX((0,G.jm)(i).barIndex),endTimestamp:t.getTimestampFomPositionX((0,G.jm)({...i,chartWidth:s}).barIndex)}}function re(e,t,a){const r=function(e,t,a){const r="split"===e.mode,s={...te(t??e.sourceChartConfig),ticker:e.matchTicker,leftOffset:void 0,zoomFactor:void 0,isScrolled:!1,dateRange:null,scrollToTimestamp:e.matchStartTimestamp??void 0};return r?[{...e.sourceChartConfig,dateRange:null,leftOffset:void 0,zoomFactor:void 0,isScrolled:!1,scrollToTimestamp:a?.startTimestamp},s]:[s]}(t,a,e.similarChartsRegion??null),s={layout:"split"===t.mode?u.p5["2h1v"]:u.p5["1h1v"],chartConfigs:r,activeChartIndex:r.length-1};e.trigger(n.CI.SimilarChartsChartsReplace,s)}var se=a(89721);function ie(e){let{chartLayoutModel:t}=e;const{close:a,isCloseVisible:s}=(0,c.V)();(0,r.k)(t,{watchProperties:["similarChartsRegionController","similarChartsRegion","charts"]});const m=(0,o.b)(t),h=(0,r.k)(b(t,t.activeChart),{watchProperties:["ticker","instrument","timeframe","dateRange","quote"]}),f=h.instrument===n.CM.Stock,{viewing:p,openMatch:x,changeMode:C,close:v}=function(e){let{chartLayoutModel:t}=e;const[a,r]=l.useState(null),s=(0,Z.Zp)(),o=(0,Z.zy)(),{getChartsToPath:c}
1=(0,Q.J)({chartLayoutModel:t}),d=(0,i.oHS)(e=>{const s=ee(t),i=null!=a&&null!=s?.getChartPane()?s.toObject():null;r(e),t.updateAttribute("syncChartParts",[]),re(t,e,i)}),u=(0,i.oHS)(e=>{if(null!=t.similarChartsRegionController&&t.trigger(n.CI.SimilarChartsRegionToolToggle),null!=a)return void d({...a,matchTicker:e.ticker,matchStartTimestamp:e.match_start_ts});const r=t.getAllCharts();if(0===r.length||r.some(e=>null==e.getChartPane()))return;const s={layout:t.layout,chartConfigs:r.map(e=>e.toObject()),activeChartIndex:Math.max(r.findIndex(e=>e.eql(t.activeChart)),0),syncChartParts:t.syncChartParts??[]};t.updateAttribute("similarChartsViewingChartIndex",s.activeChartIndex);const i=b(t,t.activeChart);d({matchTicker:e.ticker,matchStartTimestamp:e.match_start_ts,mode:"overlay",sourceChartConfig:i.toObject(),sourceViewport:ae(i),restore:s})}),m=(0,i.oHS)(e=>{null!=a&&a.mode!==e&&d({...a,mode:e})}),h=(0,i.oHS)(e=>{if(null==a||null==t.similarChartsViewingChartIndex)return;const{restore:i}=a,l=ee(t),o=null==e||null==l?null:{ticker:e,timeframe:l.timeframe,dateRange:a.sourceChartConfig.dateRange},d=null==o?null:c(o);0===(t.syncChartParts??[]).length&&t.updateAttribute("syncChartParts",i.syncChartParts),r(null);const u=null==o?i.chartConfigs:i.chartConfigs.map((e,t)=>t===i.activeChartIndex?{...te(e),...o,leftOffset:void 0,isScrolled:!1}:e);t.trigger(n.CI.SimilarChartsChartsReplace,{...i,chartConfigs:u}),t.updateAttribute("similarChartsViewingChartIndex",void 0),null!=d&&s(d),t.updateAttributes((0,g.dx)(t.getHTMLElementId()))}),f=l.useRef(o.search);l.useEffect(()=>{const e=o.search!==f.current;f.current=o.search,e&&h()},[o.search,h]);const p=null!=a;return l.useEffect(()=>{t.updateAttributes((0,g.dx)(t.getHTMLElementId()))},[p,t]),{viewing:a,openMatch:u,changeMode:m,close:h}}
1({chartLayoutModel:t}),{formState:y,updateFormState:k,searchState:S,isSearching:w,submit:T}=X({chartLayoutModel:t,sourceChart:h,regionKey:(M=t.similarChartsRegion??null,null==M?"":`${M.startTimestamp}|${M.endTimestamp}`),isStalenessSuspended:null!=p});var M;!function(e){let{chartLayoutModel:t,viewing:a,searchState:s}=e;const i=null==a?null:ee(t),o=i?.cid??null,c=(0,r.k)(i,{watchProperties:["quote"]})?.getQuoteRawTicker()??null,d="results"===s.phase?s.response:null,m=null==a||null==d?null:d.matches.find(e=>e.ticker===a.matchTicker)??null,h=null!=a&&a.matchTicker===c;l.useEffect(()=>{if(null==o||null==m||null==d||!h)return;const e=t.getAllCharts().find(e=>e.cid===o),a=j(d,m)[0],r=e?.getChartElement()?.instance,s=e?.getChartPane();if(null==e||null==a||null==r||null==s)return;const i=se.V[u.P8.SimilarShape].fromObject({period:a.period,color:a.color},s);r.addOverlay(i);const l=()=>r.setOverlays([...r.overlays.filter(e=>e!==i),i]);return e.bind(n.CI.OverlaysChange,l),()=>{e.unbind(n.CI.OverlaysChange,l),r.setOverlays(r.overlays.filter(e=>e!==i))}},[o,m,d,h,t])}
1({chartLayoutModel:t,viewing:p,searchState:S});const N=(0,i.oHS)(e=>{"results"===S.phase&&x(e)}),I=h.quote()?.cid??null;return l.useEffect(()=>{null==p&&null==m&&null!=t.similarChartsRegion&&(t.getAllCharts().some(e=>0===(e.quote()?.close.length??0))||t.updateAttribute("similarChartsRegion",void 0))},[p,m,I,t]),l.useEffect(()=>()=>{v();const e=t.similarChartsRegion??null;t.updateAttribute("similarChartsRegion",void 0),(0,o.L8)(t,e),null!=t.similarChartsRegionController&&t.trigger(n.CI.SimilarChartsRegionToolToggle)},[t,v]),(0,R.jsxs)("div",{className:"flex min-h-0 flex-1 flex-col","data-testid":"similar-charts-module",children:[(0,R.jsx)(d.A,{className:"!px-3",onClose:a,isCloseVisible:s,children:(0,R.jsx)(i.fzL,{medium:!0,children:"Find Similar Charts"})}),null!=p&&(0,R.jsx)(_,{viewing:p,sourceRegion:t.similarChartsRegion??null,onModeChange:C,onOpenMatch:()=>v(p.matchTicker),onClose:()=>v()}),null==p?(0,R.jsx)(A,{chartLayoutModel:t,sourceTicker:h.ticker,formState:y,isSourceInstrumentSupported:f,isSearching:w,onFormStateChange:k,onSubmit:T}):(0,R.jsx)(Y,{viewing:p,chartLayoutModel:t,searchState:S,onClose:()=>v()}),(0,R.jsx)("div",{className:"min-h-0 flex-1 overflow-y-auto border-t border-secondary [scrollbar-gutter:stable]",children:(0,R.jsx)(L,{searchState:S,sourceChart:h,isSourceInstrumentSupported:f,viewedMatchTicker:p?.matchTicker??null,onOpenChart:N})})]})}const le=function(){const{chartLayoutModel:e}=(0,s.W)(),{activeChart:t}=(0,r.k)(e,{watchProperties:["activeChart"]})??{};return t&&e?(0,R.jsx)(ie,{chartLayoutModel:e}):null}}}]);
2//# sourceMappingURL=5156.v1.48c87be1.js.map

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.