1!function(){try{var e="u">typeof window?window:"u">typeof global?global:"u">typeof globalThis?globalThis:"u">typeof self?self:{},t=(new e.Error).stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]="1df47f71-8aee-419b-958e-256635fc352d",e._sentryDebugIdIdentifier="sentry-dbid-1df47f71-8aee-419b-958e-256635fc352d")}catch(e){}}();"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[4061],{24061:(e,t,s)=>{s.r(t),s.d(t,{PeakTable:()=>b,peakTableToTSV:()=>p});var n=s(95155),r=s(12115),a=s(11012),i=s(64577),d=s(91633),l=s(12363),x=s(76721),c=s(16981),o=s(40206);let m={high:"High",medium:"Medium",low:"Low"};function p(e,t="cmâ»\xb9"){return[`Position (${t}) Intensity Assignment Confidence`,...[...e].sort((e,t)=>e.peak.position-t.peak.position).map(e=>{let t=e.assignments[0],s=t?t.entry.group:"â",n=t?m[(0,c._)(t.confidence)]:"â";return`${e.peak.position.toFixed(1)} ${e.peak.intensity.toFixed(4)} ${s} ${n}`})].join("\n")}function h({value:e}){let t=Math.round(100*e),s=(0,c._)(e);return(0,n.jsxs)("div",{className:"flex items-center gap-2",children:[(0,n.jsx)("div",{className:"w-16 h-1.5 bg-white/5 rounded-full overflow-hidden",children:(0,n.jsx)("div",{className:`h-full rounded-full ${"high"===s?"bg-cyan":"medium"===s?"bg-amber":"bg-text-muted"}`,style:{width:`${t}%`}})}),(0,n.jsxs)("span",{className:`text-[10px] font-mono ${"high"===s?"text-cyan":"medium"===s?"text-amber":"text-text-muted"}`,children:[t,"%"]})]})}function u({assignment:e}){return(0,n.jsx)("div",{className:"px-6 py-2 bg-white/[0.02] border-t border-border-subtle space-y-2",children:0===e.assignments.length?(0,n.jsx)("div",{className:"text-xs text-text-muted italic",children:"No matching functional groups found"}):e.assignments.map((e,t)=>{let s=(0,c._)(e.confidence);return(0,n.jsxs)("div",{className:`rounded border ${"high"===s?"border-cyan/20":"medium"===s?"border-amber/20":"border-border-subtle"} p-2 space-y-1`,children:[(0,n.jsxs)("div",{className:"flex items-center justify-between",children:[(0,n.jsxs)("div",{className:"flex items-center gap-2",children:[(0,n.jsxs)("span",{className:"text-[10px] text-text-muted font-mono",children:["#",t+1]}),(0,n.jsx)("span",{className:"text-xs font-medium text-text-primary",children:e.entry.group}),(0,n.jsx)("span",{className:"text-[10px] px-1.5 py-0.5 rounded bg-surface-raised text-text-muted",children:e.entry.category})]}),(0,n.jsx)(h,{value:e.confidence})]}),(0,n.jsxs)("div",{className:"flex items-center gap-3 text-[10px] text-text-muted font-mono",children:[(0,n.jsxs)("span",{children:[e.entry.rangeMin,"â",e.entry.rangeMax," ",e.entry.transitionType?"nm":"cmâ»\xb9"]}),e.entry.intensity&&(0,n.jsx)("span",{children:e.entry.intensity}),e.entry.shape&&(0,n.jsx)("span",{children:e.entry.shape}),e.entry.transitionType&&(0,n.jsx)("span",{children:e.entry.transitionType}),e.entry.molarAbsorptivity&&(0,n.jsxs)("span",{children:["ε: ",e.entry.molarAbsorptivity]})]}),(0,n.jsx)("p",{className:"text-[11px] text-text-secondary leading-relaxed",children:e.entry.description}),e.entry.interferents&&e.entry.interferents.length>0&&(0,n.jsxs)("div",{className:"flex items-start gap-1.5 text-[10px] text-text-muted",children:[(0,n.jsx)(a.A,{size:10,className:"mt-0.5 shrink-0 text-amber"}),(0,n.jsxs)("span",{children:["Could also be: ",e.entry.interferents.join(", ")]})]})]},e.entry.id)})})}function b({assignments:e,onPeakSelect:t,selectedPeakIndex:s,patternMatches:a}){let[m,g]=(0,r.useState)(new Set),[y,f]=(0,r.useState)(!1),j=[...e].sort((e,t)=>e.peak.position-t.peak.position),N=async()=>{await (0,o.lW)(p(e))&&(f(!0),setTimeout(()=>f(!1),1500))};return 0===e.length?(0,n.jsx)("div",{className:"text-xs text-text-muted italic p-3",children:"No peaks detected. Load a spectrum and switch to the Peak Identifier tool."}):(0,n.jsxs)("div",{className:"text-xs",children:[(0,n.jsxs)("div",{className:"flex items-center justify-between px-3 py-1.5 border-b border-border-subtle",children:[(0,n.jsxs)("span",{className:"text-[10px] text-text-muted font-mono tabular-nums",children:[e.length," peak",1===e.length?"":"s"]}),(0,n.jsx)("button",{onClick:N,title:"Copy peak table as TSV (paste into Excel / Word)",className:`flex items-center gap-1 px-2 py-1 text-[10px] font-medium rounded border transition-all ${y?"text-emerald-400 border-emerald-400/30 bg-emerald-400/5":"text-text-secondary border-border-subtle hover:border-text-muted/30 hover:bg-white/[0.03]"}`,children:y?(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(i.A,{size:11}),"Copied"]}):(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(d.A,{size:11}),"Copy Table"]})})]}),(0,n.jsxs)("div",{className:"grid grid-cols-[2rem_5.5rem_5rem_4.5rem_1fr_6rem] gap-1 px-3 py-1.5 text-[10px] font-semibold text-text-muted uppercase tracking-wider border-b border-border-subtle sticky top-0 bg-surface z-10",children:[(0,n.jsx)("span",{children:"#"}),(0,n.jsx)("span",{children:"Position"}),(0,n.jsx)("span",{children:"Intensity"}),(0,n.jsx)("span",{children:"FWHM"}),(0,n.jsx)("span",{children:"Top Assignment"}),(0,n.jsx)("span",{children:"Confidence"})]}),j.map((e,r)=>{let i=m.has(r),d=e.assignments[0],o=d?(0,c._)(d.confidence):"low",p=e.peak.index===s,b=a?.filter(t=>t.matchedPeakIndices.includes(e.peak.index))??[];return(0,n.jsxs)("div",{children:[(0,n.jsxs)("div",{onClick:()=>{g(e=>{let t=new Set(e);return t.has(r)?t.delete(r):t.add(r),t}),t?.(e.peak)},className:`grid grid-cols-[2rem_5.5rem_5rem_4.5rem_1fr_6rem] gap-1 px-3 py-1.5 cursor-pointer transition-colors ${p?"bg-accent/[0.08] text-text-primary":"hover:bg-white/[0.03] text-text-secondary"}`,children:[(0,n.jsxs)("span",{className:"flex items-center gap-1",children:[i?(0,n.jsx)(l.A,{size:10,
1className:"text-text-muted"}):(0,n.jsx)(x.A,{size:10,className:"text-text-muted"}),(0,n.jsx)("span",{className:"font-mono text-text-muted",children:r+1})]}),(0,n.jsx)("span",{className:"font-mono",children:e.peak.position.toFixed(1)}),(0,n.jsx)("span",{className:"font-mono",children:e.peak.intensity.toFixed(4)}),(0,n.jsx)("span",{className:"font-mono",children:e.peak.fwhm.toFixed(1)}),(0,n.jsxs)("span",{className:"flex items-center gap-1.5",children:[(0,n.jsx)("span",{className:`truncate ${"high"===o?"text-cyan":"medium"===o?"text-amber":"text-text-muted"}`,children:d?.entry.group??"â"}),b.length>0&&(0,n.jsx)("span",{className:"text-[8px] font-bold text-emerald-400 bg-emerald-400/10 rounded px-1 py-0.5 shrink-0",children:"PM"})]}),(0,n.jsx)("span",{children:d?(0,n.jsx)(h,{value:d.confidence}):(0,n.jsx)("span",{className:"text-text-muted",children:"â"})})]}),i&&(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(u,{assignment:e}),b.length>0&&(0,n.jsxs)("div",{className:"px-6 py-2 bg-emerald-400/[0.02] border-t border-emerald-400/10 space-y-1.5",children:[(0,n.jsx)("span",{className:"text-[10px] font-semibold text-emerald-400 uppercase tracking-wider",children:"Pattern Matches"}),b.map(e=>(0,n.jsxs)("div",{className:"rounded border border-emerald-400/15 bg-emerald-400/[0.04] px-2 py-1.5",children:[(0,n.jsxs)("div",{className:"flex items-center gap-1.5",children:[(0,n.jsx)("span",{className:"text-[10px] font-medium text-emerald-400",children:e.ruleName}),(0,n.jsxs)("span",{className:"text-[9px] text-text-muted",children:["+",(100*e.confidenceBoost).toFixed(0),"% boost"]})]}),(0,n.jsx)("p",{className:"text-[10px] text-text-secondary leading-relaxed mt-0.5",children:e.description})]},e.ruleId))]})]})]},r)})]})}}}]);
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.