PageSourceSearch

https://www.vertigoreleasing.com/chunk-URWJYBDS.js

js vertigoreleasing.com collected 2026-10-02 17:18:46 UTC 84,734 bytes, 46 lines download raw bytes

1import{a as fe}from"./chunk-DHXG4SK6.js";import"./chunk-LDJE3X6Q.js";import{b as de,c as pe,g as ue,k as he,w as me}from"./chunk-KY6RYROT.js";import"./chunk-L4SU67NZ.js";import"./chunk-A72NZ3FD.js";import{Ba as Q,Ea as ee,Fb as y,Jc as c,Kc as C,La as te,Lc as S,Mc as oe,Nc as re,Oc as H,Pc as z,Qc as M,Re as ce,Vb as d,Xb as T,ed as se,fc as s,gc as r,hb as X,hc as ne,ia as $,ib as a,lc as w,pe as ae,qa as J,qe as le,ra as _,sa as v,tc as x,uc as p,yb as ie}from"./chunk-5YC6RQ55.js";import"./chunk-77SYK2UP.js";import{a as E,b as P}from"./chunk-JGCW4DGO.js";function Ce(o,u){if(o&1&&(s(0,"span",41),c(1),r()),o&2){let e=p(2);a(),S("\u{1F33F} ",e.branchName,"")}}function we(o,u){if(o&1&&(s(0,"div",37)(1,"span",38),c(2),r(),s(3,"span",39),c(4),r(),y(5,Ce,2,1,"span",40),r()),o&2){let e=p();a(2),C(e.ctx.app),a(),d("title",e.currentUrl||e.ctx.route),a(),C(e.currentUrl||e.ctx.route),a(),d("ngIf",e.branchName)}}function Se(o,u){if(o&1&&(s(0,"span",42),c(1),r()),o&2){let e=p();a(),S("",e.readinessScore,"%")}}function Ie(o,u){o&1&&(s(0,"span",55),c(1,"(1 match)"),r())}function Te(o,u){if(o&1&&(s(0,"span",56),c(1),r()),o&2){let e=p().$implicit;a(),S("(",e.matchCount," matches)")}}function Re(o,u){o&1&&(s(0,"span",57),c(1,"(no match)"),r())}function Ee(o,u){if(o&1){let e=w();s(0,"button",58),x("click",function(t){_(e);let n=p().index,l=p(2);return t.stopPropagation(),v(l.disambiguateRow(n))}),c(1," Narrow down "),r()}}function Fe(o,u){if(o&1){let e=w();s(0,"button",59),x("click",function(t){_(e);let n=p().index,l=p(2);return t.stopPropagation(),v(l.simplifyRow(n))}),c(1," Try simpler "),r()}}function Ae(o,u){if(o&1){let e=w();s(0,"button",60),x("click",function(t){_(e);let n=p().index,l=p(2);return t.stopPropagation(),v(l.removeSelectorAt(n))}),c(1," \xD7 "),r()}}function Be(o,u){if(o&1&&(s(0,"span",63),c(1),r()),o&2){let e=u.$implicit;a(),C(e)}}function Pe(o,u){if(o&1&&(s(0,"div",61),y(1,Be,2,1,"span",62),r()),o&2){let e=p().$implicit;a(),d("ngForOf",e.props)}}function Ve(o,u){if(o&1){let e=w();s(0,"div",45),x("mouseenter",function(){let t=_(e),n=t.$implicit,l=t.index,h=p(2);return v(h.onResultRowEnter(l,n))})("mouseleave",function(){let t=_(e),n=t.$implicit,l=t.index,h=p(2);return v(h.onResultRowLeave(l,n))})("click",function(){let t=_(e),n=t.$implicit,l=t.index,h=p(2);return v(h.setActiveTarget(l,n))}),s(1,"span",46),c(2),r(),s(3,"span",47),c(4),r(),y(5,Ie,2,0,"span",48)(6,Te,2,1,"span",49)(7,Re,2,0,"span",50)(8,Ee,2,0,"button",51)(9,Fe,2,0,"button",52)(10,Ae,2,0,"button",53)(11,Pe,2,1,"div",54),r()}if(o&2){let e=u.$implicit,i=u.index,t=p(2);T("invalid",!e.match)("hovered",t.hoveredResultIndex===i)("active",t.activeTargetIndex===i)("ambiguous",e.ambiguous),a(2),C(e.match?"\u2713":"\u2717"),a(2),C(e.raw),a(),d("ngIf",e.match&&!e.ambiguous),a(),d("ngIf",e.ambiguous),a(),d("ngIf",!e.match),a(),d("ngIf",e.ambiguous),a(),d("ngIf",e.match&&!e.ambiguous&&t.hasLongPath(e.raw)&&e.match===t.targetElement),a(),d("ngIf",t.selectorResults.length>1),a(),d("ngIf",e.props.length>0)}}function $e(o,u){if(o&1&&(s(0,"div",43),y(1,Ve,12,17,"div",44),r()),o&2){let e=p();a(),d("ngForOf",e.selectorResults)}}function He(o,u){if(o&1&&(s(0,"span"),c(1),r()),o&2){let e=p(2);a(),S("Active target: ",e.selectorResults[e.activeTargetIndex]==null?null:e.selectorResults[e.activeTargetIndex].raw,"")}}function ze(o,u){if(o&1){let e=w();s(0,"span",64),y(1,He,2,1,"span",65),s(2,"button",66),x("click",function(){_(e);let t=p();return v(t.clearAllSelectors())}),c(3," Clear all "),r()()}if(o&2){let e=p();a(),d("ngIf",e.activeTargetIndex>=0)}}function Me(o,u){if(o&1){let e=w();s(0,"div",67)(1,"label",68)(2,"span",69),c(3,"Branch name"),r(),s(4,"input",70),x("ngModelChange",function(t){_(e);let n=p();return n.branchName=t,v(n.resetCopyState())}),r()()()}if(o&2){let e=p();a(4),d("ngModel",e.branchName)}}function Le(o,u){if(o&1&&(s(0,"span",74),c(1),r()),o&2){let e=p(2);a(),oe(" ",e.selectedInteractionCount," / ",e.interactionCount," selected ")}}function De(o,u){if(o&1){let e=w();s(0,"div",71)(1,"button",72),x("click",function(){_(e);let t=p();return v(t.toggleRecording())}),c(2),r(),y(3,Le,2,2,"span",73),r()}if(o&2){let e=p();
1a(),T("active",e.recording),a(),S(" ",e.recording?"\u25A0 Stop":"\u25B6 Start recording"," "),a(),d("ngIf",e.interactionCount>0)}}function Oe(o,u){if(o&1){let e=w();s(0,"button",83),x("click",function(){let t=_(e).$implicit,n=p(2);return v(n.setInteractionTypeFilter(t.kind))}),s(1,"span"),c(2),r(),s(3,"span",84),c(4),r()()}if(o&2){let e=u.$implicit;T("active",e.active),a(2),C(e.label),a(2),C(e.count)}}function Ne(o,u){if(o&1){let e=w();s(0,"div",85)(1,"label",86)(2,"input",87),x("ngModelChange",function(t){let n=_(e).$implicit,l=p(2);return v(l.toggleInteractionSelection(n.index,t))}),r(),s(3,"span",88),c(4),r()(),s(5,"span",89),c(6),r()()}if(o&2){let e=u.$implicit;T("unselected",!e.selected),a(2),d("ngModel",e.selected),a(2),C(e.kind),a(2),C(e.text||e.selector)}}function je(o,u){if(o&1){let e=w();s(0,"div",75)(1,"div",76)(2,"div",77),y(3,Oe,5,4,"button",78),r(),s(4,"div",79)(5,"button",80),x("click",function(){_(e);let t=p();return v(t.setVisibleInteractionSelection(!0))}),c(6,"Select visible"),r(),s(7,"button",80),x("click",function(){_(e);let t=p();return v(t.setVisibleInteractionSelection(!1))}),c(8,"Clear visible"),r()()(),s(9,"div",81),y(10,Ne,7,5,"div",82),r()()}if(o&2){let e=p();a(3),d("ngForOf",e.interactionTypeFilters)("ngForTrackBy",e.trackByFilterKind),a(7),d("ngForOf",e.filteredInteractions)("ngForTrackBy",e.trackByInteractionIndex)}}function We(o,u){if(o&1&&(s(0,"div",99),c(1),r()),o&2){let e=u.$implicit;a(),S("\u2713 ",e,"")}}function Ke(o,u){if(o&1&&(s(0,"div",97),y(1,We,2,1,"div",98),r()),o&2){let e=p(2);a(),d("ngForOf",e.readinessStrengths)}}function Ue(o,u){if(o&1&&(s(0,"div",102),c(1),r()),o&2){let e=u.$implicit;a(),S("\u2717 ",e,"")}}function qe(o,u){if(o&1&&(s(0,"div",100),y(1,Ue,2,1,"div",101),r()),o&2){let e=p(2);a(),d("ngForOf",e.readinessGaps)}}function Xe(o,u){if(o&1&&(s(0,"div",90)(1,"div",91)(2,"span",92),c(3),r(),s(4,"span",93),c(5),r()(),s(6,"div",94),y(7,Ke,2,1,"div",95)(8,qe,2,1,"div",96),r()()),o&2){let e=p();a(3),S("",e.readinessScore,"%"),a(2),C(e.readinessVerdict),a(2),d("ngIf",e.readinessStrengths.length>0),a(),d("ngIf",e.readinessGaps.length>0)}}function Ge(o,u){if(o&1&&(s(0,"span",121),c(1),r()),o&2){let e=p().$implicit;a(),C(e.application)}}function Ye(o,u){if(o&1&&(s(0,"span",122),c(1),r()),o&2){let e=p().$implicit;a(),S("\u2014 ",e.memoryKey.symptom,"")}}function Ze(o,u){if(o&1){let e=w();s(0,"button",123),x("mousedown",function(t){return _(e),v(t.stopPropagation())})("click",function(){_(e);let t=p().$implicit,n=p(2);return v(n.applyLessonFix(t))}),c(1," Use CSS fix "),r()}}function Je(o,u){if(o&1&&(s(0,"div",128)(1,"span",129),c(2,"Summary"),r(),s(3,"p",130),c(4),r()()),o&2){let e=p(2).$implicit;a(4),C(e.routeThoughtToFixProblem.summary)}}function Qe(o,u){if(o&1&&(s(0,"div",128)(1,"span",129),c(2,"Diagnostic evidence"),r(),s(3,"p",130),c(4),r()()),o&2){let e=p(2).$implicit;a(4),C(e.routeThoughtToFixProblem.diagnosticEvidence)}}function et(o,u){if(o&1&&(s(0,"li"),c(1),r()),o&2){let e=u.$implicit;a(),C(e)}}function tt(o,u){if(o&1&&(s(0,"div",128)(1,"span",129),c(2,"Reasoning"),r(),s(3,"ol",131),y(4,et,2,1,"li",132),r()()),o&2){let e=p(2).$implicit;a(4),d("ngForOf",e.routeThoughtToFixProblem.reasoning)}}function it(o,u){if(o&1){let e=w();s(0,"button",139),x("click",function(){_(e);let t=p(3).$implicit,n=p(2);return v(n.tryLessonFix(t))}),c(1," Try fix "),r()}if(o&2){let e=p(5);d("title",e.targetElement?"Inject this CSS into the page and measure the diff against the picked element":"Inject this CSS into the page (pick an element above to see a diff)")}}function nt(o,u){if(o&1){let e=w();s(0,"button",140),x("click",function(){_(e);let t=p(5);return v(t.removeLessonFix())}),c(1," \u2713 Trying \u2014 remove "),r()}o&2&&T("active",!0)}function ot(o,u){if(o&1){let e=w();s(0,"div",128)(1,"div",133)(2,"span",129),c(3,"CSS template"),r(),s(4,"div",134),y(5,it,2,1,"button",135)(6,nt,2,2,"button",136),s(7,"button",137),x("click",function(){let t=_(e).ngIf,n=p(2).$implicit,l=p(2);return v(l.copyText(t,n==null?null:n.memoryKeyHash))}),c(8),r()()(),s(9,"pre",138)(10,"code"),c(11),r()()()}if(o&2){let e=u.ngIf,i=p(2).$implicit,t=p(2);a(5),d("ngIf",t.lessonTriedHash!==(i==null?null:i.memoryKeyHash)),a(),d("ngIf",t.lessonTriedHash===(i==null?null:i.memoryKeyHash)),a(2),S(" ",t.lessonCopiedHash===(i==null?null:i.memoryKeyHash)?"\u2713 C
1opied":"Copy CSS"," "),a(3),C(e)}}function rt(o,u){if(o&1&&(s(0,"li"),c(1),r()),o&2){let e=u.$implicit;a(),C(e)}}function st(o,u){if(o&1&&(s(0,"div",128)(1,"span",129),c(2,"Files touched"),r(),s(3,"ul",131),y(4,rt,2,1,"li",132),r()()),o&2){let e=p(2).$implicit;a(4),d("ngForOf",e.touchedFiles)}}function at(o,u){if(o&1){let e=w();s(0,"details",124),x("click",function(t){return _(e),v(t.stopPropagation())})("mousedown",function(t){return _(e),v(t.stopPropagation())}),s(1,"summary",125),c(2,"Show full lesson details"),r(),s(3,"div",126),y(4,Je,5,1,"div",127)(5,Qe,5,1,"div",127)(6,tt,5,1,"div",127)(7,ot,12,4,"div",127)(8,st,5,1,"div",127),r()()}if(o&2){let e=p().$implicit,i=p(2);a(4),d("ngIf",e==null||e.routeThoughtToFixProblem==null?null:e.routeThoughtToFixProblem.summary),a(),d("ngIf",e==null||e.routeThoughtToFixProblem==null?null:e.routeThoughtToFixProblem.diagnosticEvidence),a(),d("ngIf",e==null||e.routeThoughtToFixProblem==null||e.routeThoughtToFixProblem.reasoning==null?null:e.routeThoughtToFixProblem.reasoning.length),a(),d("ngIf",i.lessonEditTemplate(e)),a(),d("ngIf",e==null||e.touchedFiles==null?null:e.touchedFiles.length)}}function lt(o,u){if(o&1){let e=w();s(0,"div",109)(1,"div",110),y(2,Ge,2,1,"span",111)(3,Ye,2,1,"span",112),r(),s(4,"div",113)(5,"span",114),c(6,"Problem:"),r(),s(7,"span",115),c(8),r()(),s(9,"div",116)(10,"span",114),c(11,"Fix:"),r(),s(12,"span",115),c(13),r()(),s(14,"div",117)(15,"button",118),x("mousedown",function(t){return _(e),v(t.stopPropagation())})("click",function(){let t=_(e).$implicit,n=p(2);return v(n.applyLessonAsContext(t))}),c(16),r(),y(17,Ze,2,0,"button",119),r(),y(18,at,9,5,"details",120),r()}if(o&2){let e=u.$implicit,i=p(2);a(2),d("ngIf",e==null?null:e.application),a(),d("ngIf",e==null||e.memoryKey==null?null:e.memoryKey.symptom),a(5),C(i.lessonProblemShape(e)),a(5),C(i.lessonFixShape(e)),a(2),T("active",i.lessonAppliedAsContext===(e==null?null:e.memoryKeyHash)),d("title",i.lessonApplyContextTitle(e)),a(),S(" ",i.lessonAppliedAsContext===(e==null?null:e.memoryKeyHash)?"\u2713 Copied to form":"Use this lesson"," "),a(),d("ngIf",e==null||e.routeThoughtToFixProblem==null||e.routeThoughtToFixProblem.edits==null||e.routeThoughtToFixProblem.edits[0]==null?null:e.routeThoughtToFixProblem.edits[0].replace),a(),d("ngIf",i.lessonHasDetails(e))}}function ct(o,u){if(o&1&&(s(0,"div",103)(1,"div",104)(2,"span",105),c(3,"\u{1F4DA}"),r(),s(4,"span",106),c(5),r()(),s(6,"div",107),y(7,lt,19,10,"div",108),r()()),o&2){let e=p();a(5),S("Similar past fixes (",e.liveRelevantEntries.length,")"),a(2),d("ngForOf",e.liveRelevantEntries.slice(0,3))}}function dt(o,u){if(o&1){let e=w();s(0,"div",141)(1,"div",142)(2,"button",143),x("click",function(){_(e);let t=p();return v(t.cycleProposedFix(-1))}),c(3,"\u25C0"),r(),s(4,"span",144),c(5),r(),s(6,"button",143),x("click",function(){_(e);let t=p();return v(t.cycleProposedFix(1))}),c(7," \u25B6 "),r()(),s(8,"textarea",145),x("ngModelChange",function(t){_(e);let n=p();return v(n.onEditedCssChange(t))}),r()()}if(o&2){let e=p();a(2),d("disabled",e.selectedProposedFixIndex<=0),a(3),re(" Fix ",e.selectedProposedFixIndex+1," of ",e.proposedFixes.length,": ",e.proposedFixes[e.selectedProposedFixIndex]==null?null:e.proposedFixes[e.selectedProposedFixIndex].label," "),a(),d("disabled",e.selectedProposedFixIndex>=e.proposedFixes.length-1),a(2),d("ngModel",e.editedCss||(e.proposedFixes[e.selectedProposedFixIndex]==null?null:e.proposedFixes[e.selectedProposedFixIndex].rawCss))}}function pt(o,u){o&1&&(s(0,"div",153),c(1," Live styles on the picked element "),s(2,"strong"),c(3,"before"),r(),c(4," you applied the fix vs "),s(5,"strong"),c(6,"now"),r(),c(7,". Only the properties the fix touched are listed; other properties may also have changed. "),r())}function ut(o,u){o&1&&(s(0,"div",153),c(1," Live styles on the picked element "),s(2,"strong"),c(3,"before"),r(),c(4," you applied the fix vs "),s(5,"strong"),c(6,"now"),r(),c(7,". Only the properties the fix touched are listed; if the list is empty, the fix didn't reach the element. "),r())}function ht(o,u){if(o&1&&(s(0,"div",156)(1,"span",157),c(2),r(),s(3,"span",158),c(4),r(),s(5,"span",159),c(6,"\u2192"),r(),s(7,"span",160),c(8),r()()),o&2){let e=u.$implicit;a(2),C(e.key),a(2),C(e.before),a(4),C(e.after)}}function mt(o,u){if(o&1&&(s(0,"div",154),y(1,ht,9,3,"div",155),r()),o&2){let e=p(2);a(),d("ngForOf",e.fixDelta)}}function ft(o,u){o&1&&(s(0,"div",161)(1,"div",162),c(2,"No tracked property changed on the picked element."),r(),s(3,"div",163),c(4," The CSS was injected, but every property we measure is the same as before. The selector may not match the element, or the change is being overridden by a more specific rule. "),r()())}function gt(o,u){o&1&&(s(0,"div",161)(1,"div",162),c(2,"No element selected to measure."),r(),s(3,"div",163),c(4,"Pick an element above so the form can read its styles before and after."),r()())}function xt(o,u){if(o&1&&(s(0,"div",146)(1,"div",147)(2,"span",148),c(3,"\u{1F4CF}"),r(),s(4,"span",149),c(5),r()(),y(6,pt,8,0,"div",150)(7,ut,8,0,"div",150)(8,mt,2,1,"div",151)(9,ft,5,0,"div",152)(10,gt,5,
10,"div",152),r()),o&2){let e=p();a(5),S(" ",e.fixDelta.length>0?e.fixDelta.length+" computed change"+(e.fixDelta.length!==1?"s":""):"What changed on this element"," "),a(),d("ngIf",e.fixDelta.length>0),a(),d("ngIf",e.fixDelta.length===0&&e.afterValues.length>0),a(),d("ngIf",e.fixDelta.length>0),a(),d("ngIf",e.fixDelta.length===0&&e.afterValues.length>0),a(),d("ngIf",e.afterValues.length===0&&e.beforeValues.length===0)}}function bt(o,u){o&1&&(s(0,"div",169),c(1," The form is reading styles before/after \u2014 the green tick enables once a real computed change is detected. "),r())}function _t(o,u){if(o&1){let e=w();s(0,"div",164)(1,"button",165),x("click",function(){_(e);let t=p();return v(t.markFixSuccessful())}),c(2," \u2713 Fixed "),r(),s(3,"button",166),x("click",function(){_(e);let t=p();return v(t.markFixFailed())}),c(4," \u2717 Not fixed "),r(),s(5,"button",167),x("click",function(){_(e);let t=p();return v(t.removeCssFix())}),c(6,"Remove fix"),r(),y(7,bt,2,0,"div",168),r()}if(o&2){let e=p();a(),T("active",e.fixSuccessful===!0),d("disabled",e.fixDelta.length===0)("title",e.fixDelta.length===0?"Wait for a real before/after change before marking fixed":""),a(2),T("active",e.fixSuccessful===!1),a(4),d("ngIf",e.fixDelta.length===0)}}function vt(o,u){if(o&1&&(s(0,"div",170)(1,"span",171),c(2,"\u2713"),r(),s(3,"span",115),c(4),r()()),o&2){let e=p();a(4),S("Lesson saved to console \u2014 save ",e.lessonRecordCount," record(s) under ai-tooling/memory/lessons/<app>/")}}var Vt=(()=>{class o{constructor(){this.aiInfo=$(fe),this.cdr=$(se),this.ngZone=$(Q),this.el=$(ee),this.platformId=$(te),this.ctx=null,this.targetElementHint=null,this.proposedFixesInit=[],this.relevantEntriesInit=[],this.fixRoutingInit=null,this.selectorVariableMap={},this.bugContext="",this.expectedOutcome="",this.acceptCookies=!0,this.useBranch=!1,this.branchName="",this.currentUrl="",this.targetElement=null,this.hint=null,this.requiresLogin=!1,this.compareToProduction=!1,this.includeRecordedSteps=!1,this.selectedInteractionIndices=new Set,this.pickingElement=!1,this.selectedProposedFixIndex=0,this.verifiedFixCss="",this.includeAiSuggestion=!1,this.activeTargetIndex=0,this.hoveredResultIndex=null,this.liveRelevantEntries=[],this.liveFixRouting=null,this.liveAnalysisStatus="idle",this.lessons=[],this.selectedLesson=null,this.proposedFixes=[],this.readinessScore=0,this.readinessVerdict="",this.readinessGaps=[],this.readinessStrengths=[],this.recording=!1,this.displayedInteractions=[],this.interactionTypeFilter="all",this.recordingTimer=null,this.knownInteractionIndices=new Set,this.recordingStartIndex=0,this.copyState="idle",this.copyResetTimer=null,this.fixApplied=!1,this.fixSuccessful=null,this.editedCss="",this.fixStyleEl=null,this.beforeValues=[],this.afterValues=[],this.fixDelta=[],this.lessonRecorded=!1,this.lessonRecordCount=0,this.dragging=!1,this.dragX=0,this.dragY=0,this.compactMode=!1,this.lessonAppliedAsContext=null,this.lessonCopiedHash=null,this.lessonTriedHash=null,this.closed=!1,this.liveAnalysisTimer=null,this.liveAnalysisRunId=0,this.pickHighlight=null,this.pickTooltip=null,this.pickBanner=null,this.pickHandler=null,this.hoverHandler=null,this.keyHandler=null,this.hoverDebounceTimer=null,this.lessonLookupTimer=null,this.lessonLookupRunId=0,this.lessonCacheReadySub=null,this.emptyFixRouting={fixType:"unknown",routeAction:"unknown",visualIssueType:"",existingStyleVariableHints:[],layoutConstraintHints:[],consumedAndSettableHints:[],dryCssVariableFixHeuristic:null},this.selectorInput="",this.selectorResults=[],this.selectorValidationTimer=null,this.hoverHighlightEl=null,this.hoverHighlightTimer=null}ngOnInit(){ce(this.platformId)&&(this.bugContext=this.ctx?.bugContext||"",this.expectedOutcome=this.ctx?.expectedOutcome||"",this.branchName=this.ctx?.branch||"",this.useBranch=!!this.branchName,this.currentUrl=this.ctx?.currentUrl||"",this.hint=this.targetElementHint,this.liveRelevantEntries=[...this.relevantEntriesInit],this.liveFixRouting=this.fixRoutingInit?E({},this.fixRoutingInit):E({},this.emptyFixRouting),Object.keys(this.selectorVariableMap||{}).length===0&&(this.selectorVariableMap=this.buildSelectorVariableMapFromHints(this.liveFixRouting)),this.proposedFixesInit.length>0&&(this.proposedFixes=this.proposedFixesInit),this.restoreDragPosition(),this.buildProposedFixes(),this.refreshReadinessScore(),this.scheduleLessonLookup(),this.aiInfo.hasAiBugfixLessonsCache()&&this.runLessonLookup(),this.liveAnalysisStatus=this.hasActionableReportInput()?"ready":"idle",this.ngZone.runOutsideAngular(()=>{this.pickHandler=e=>{if(!this.pickingElement)return;let i=e.target;this.isSelectableTarget(i)&&(e.preventDefault(),e.stopPropagation(),this.syncTargetElement(i,!0),this.ngZone.run(()=>this.cdr.markForCheck()))},this.hoverHandler=e=>{if(!this.pickingElement)return;let i=e.target;if(!this.isSelectableTarget(i)){this.pickHighlight&&(this.pickHighlight.style.display="none"),this.pickTooltip&&(this.pickTooltip.style.display="none");return}this.updatePickOverlay(i,e)},document.addEventListener("click",this.pickHandler,!0),document.addEventListener("mouseover",this.hoverHandler,!0)}),this.keyHandler=e=>{e.key==="Escape"&&this.pickingElement&&this.ngZone.run(()=>{this.pickingElement=!1,this.removePickBanner(),this.removePickOverlay(),document.body.style.cursor="",this.cdr.markForCheck()})},document.addEventListener("keydown",this.keyHandler),this.lessonCacheReadySub=this.aiInfo.aiBugfixLessonsReady$.subscribe(()=>{this.runLessonLookup()}))}ngOnChanges(e){e.relevantEntriesInit&&(this.liveRelevantEntries=[...this.relevantEntriesInit||[]],this.liveAnalysisStatus="ready",this.refreshReadinessScore(),this.cdr.markForCheck()),e.fixRoutingInit&&(this.liveFixRouting=this.fixRoutingInit?E({},this.fixRoutingInit):E({},this.emptyFixRouting),this.cdr.markForCheck())}ngOnDestroy(){this.stopInteractionRefresh(),this.pickHandler&&document.removeEventListener("click",this.pickHandler,!0),this.hoverHandler&&document.removeEventListener("mouseover",this.hoverHandler,!0),this.keyHandler&&document.removeEventListener("keydown",this.keyHandler),this.hoverDebounceTimer!==null&&window.clearTimeout(this.hoverDebounceTimer),this.selectorValidationTimer!==null&&window.clearTimeout(this.selectorValidationTimer),this.lessonLookupTimer!==null&&window.clearTimeout(this.lessonLookupTimer),this.lessonCacheReadySub&&this.lessonCacheReadySub.unsubscribe(),this.removeHoverHighlight(),this.removePickBanner(),this.removePickOverlay(),document.body.style.cursor=""}isSelectableTarget(e){return e instanceof HTMLElement&&document.contains(e)&&!e.closest("#usheru-bugfix-chat")&&!e.closest("#ush-pick-overlay")&&!e.closest("#ush-debug-btn")}startPicking(){if(this.pickingElement){this.pickingElement=!1,this.removePickBanner(),this.removePickOverlay(),document.body.style.cursor="";return}this.pickingElement=!0,document.body.style.cursor="crosshair";let e=document.createElement("div");e.id="ush-pick-overlay",e.style.cssText="position:fixed;top:0;left:0;width:100%;height:100%;z-index:999998;background:transparent;pointer-events:none;",document.body.appendChild(e),this.pickHighlight=document.createElement("div"),this.pickHighlight.style.cssText="position:fixed;pointer-events:none;border:3px solid #89b4fa;
1background:rgba(137,180,250,0.12);z-index:999999;display:none;transition:all 0.05s;box-shadow:0 0 12px rgba(137,180,250,0.3);",document.body.appendChild(this.pickHighlight),this.pickTooltip=document.createElement("div"),this.pickTooltip.style.cssText="position:fixed;pointer-events:none;background:#1e1e2e;border:1px solid #45475a;color:#cdd6f4;padding:6px 10px;border-radius:8px;font-size:11px;z-index:999999;display:none;max-width:380px;font-family:system-ui,sans-serif;line-height:1.4;",document.body.appendChild(this.pickTooltip),this.createPickBanner()}buildElementChain(e){let i=[],t=e,n=10;for(;t&&i.length<n&&!(t===document.body||t===document.documentElement);){let l=t.tagName.toLowerCase(),h=t.id?"#"+CSS.escape(t.id):"",m=Array.from(t.classList).slice(0,2).map(k=>"."+CSS.escape(k)).join(""),g=`${l}${h}${m}`;i.unshift({el:t,label:g}),t=t.parentElement}return i}getComputedProperties(e){let i=getComputedStyle(e);return[{key:"font-size",val:i.fontSize},{key:"color",val:i.color},{key:"background",val:i.backgroundColor==="rgba(0, 0, 0, 0)"?"transparent":i.backgroundColor},{key:"border",val:i.borderWidth==="0px"?"none":`${i.borderWidth} ${i.borderStyle} ${i.borderColor}`},{key:"display",val:i.display},{key:"width",val:e.offsetWidth+"px"},{key:"height",val:e.offsetHeight+"px"}].filter(n=>n.val&&n.val!=="none"&&n.val!=="0px").map(n=>`${n.key}: ${n.val.length>30?n.val.slice(0,30)+"\u2026":n.val}`)}updatePickOverlay(e,i){!this.pickHighlight||!this.pickTooltip||(this.hoverDebounceTimer!==null&&window.clearTimeout(this.hoverDebounceTimer),this.hoverDebounceTimer=window.setTimeout(()=>{this.hoverDebounceTimer=null;let t=e.getBoundingClientRect();this.pickHighlight.style.display="block",this.pickHighlight.style.left=t.left+"px",this.pickHighlight.style.top=t.top+"px",this.pickHighlight.style.width=t.width+"px",this.pickHighlight.style.height=t.height+"px";let n=this.buildElementChain(e),l=t.width.toFixed(0)+" \xD7 "+t.height.toFixed(0),h=e.parentElement,m=h?Array.from(h.children).filter(R=>R.tagName===e.tagName):[],g=m.length>1?`  \u2502  nth: ${m.indexOf(e)+1} of ${m.length}`:"",k=this.getComputedProperties(e),F=n.map((R,L)=>{let D=L===n.length-1;return`<span style="color:${D?"#89b4fa":"#a6adc8"};${D?"font-weight:700":""}">${R.label}</span>`}).join('<span style="color:#585b70;margin:0 3px;">\u203A</span>'),V=k.length>0?'<div style="border-top:1px solid #45475a;margin-top:4px;padding-top:4px;display:flex;flex-wrap:wrap;gap:2px 10px;">'+k.map(R=>`<span style="color:#a6e3a1;font-size:10px;">\u25CF ${R}</span>`).join("")+"</div>":"";if(this.pickTooltip.style.display="block",i){let R=Math.min(i.clientX+15,window.innerWidth-400),L=Math.min(i.clientY+15,window.innerHeight-200);this.pickTooltip.style.left=Math.max(0,R)+"px",this.pickTooltip.style.top=Math.max(0,L)+"px"}else this.pickTooltip.style.left=Math.min(t.right+10,window.innerWidth-400)+"px",this.pickTooltip.style.top=t.top+"px";this.pickTooltip.innerHTML=`<div style="margin-bottom:2px;">${F}</div><div style="color:#585b70;font-size:10px;">${l}${g}</div>`+V},80))}createPickBanner(){if(document.getElementById("ush-pick-banner"))return;this.pickBanner=document.createElement("div"),this.pickBanner.id="ush-pick-banner",this.pickBanner.style.cssText="position:fixed;top:0;left:0;right:0;z-index:1000000;background:#1e1e2e;border-bottom:1px solid #89b4fa;padding:8px 16px;display:flex;align-items:center;gap:12px;font-family:system-ui,sans-serif;font-size:13px;color:#cdd6f4;box-shadow:0 2px 12px rgba(0,0,0,0.3);",this.pickBanner.innerHTML='<span style="font-size:16px;">\u{1F50D}</span><span style="flex:1;">Pick the broken element \u2014 click any element on the page</span><button id="ush-pick-cancel" style="background:#45475a;border:none;color:#cdd6f4;padding:4px 12px;border-radius:6px;cursor:pointer;font-family:inherit;font-size:12px;">Cancel (Esc)</button>',document.body.appendChild(this.pickBanner);let e=this.pickBanner.querySelector("#ush-pick-cancel");e&&e.addEventListener("click",()=>{this.pickingElement=!1,this.removePickBanner(),this.removePickOverlay(),document.body.style.cursor="",this.ngZone.run(()=>this.cdr.markForCheck())})}removePickBanner(){let e=document.getElementById("ush-pick-banner");e&&e.remove(),this.pickBanner=null}applyCssFix(){let e=this.getSelectedProposedFix();e&&this.injectCss(this.editedCss||e.rawCss)}injectCss(e){if(typeof e!="string"||!e)return;this.targetElement,this.beforeValues=this.snapshotTargetProperties(),this.removeCssFix(!1);let i=document.createElement("style");i.id="ush-ai-bugfix-injected",i.textContent=e,document.head.appendChild(i),this.fixStyleEl=i,this.fixApplied=!0,this.fixSuccessful=null,this.afterValues=[],this.fixDelta=[],requestAnimationFrame(()=>{this.afterValues=this.snapshotTargetProperties(),this.fixDelta=this.diffProperties(this.beforeValues,this.afterValues),this.cdr.markForCheck()}),this.cdr.markForCheck()}tryLessonFix(e){if(!e)return;let i=this.lessonEditTemplate(e);
1i&&(this.editedCss=i,this.selectedProposedFixIndex=-1,this.lessonTriedHash=String(e?.memoryKeyHash||e?.memoryKey?.symptom||"lesson"),this.injectCss(i))}removeLessonFix(){this.fixApplied?this.removeCssFix(!0):this.cdr.markForCheck(),this.lessonTriedHash=null}removeCssFix(e=!0){let i=document.getElementById("ush-ai-bugfix-injected");i&&i.remove(),this.fixStyleEl=null,this.fixApplied=!1,this.fixSuccessful=null,e&&(this.beforeValues=[],this.afterValues=[],this.fixDelta=[]),this.cdr.markForCheck()}snapshotTargetProperties(){if(!this.targetElement)return[];let e=getComputedStyle(this.targetElement);return[{key:"text color",val:e.color},{key:"background",val:e.backgroundColor==="rgba(0, 0, 0, 0)"?"transparent":e.backgroundColor},{key:"border color",val:e.borderColor},{key:"border width",val:e.borderWidth},{key:"border style",val:e.borderStyle},{key:"font size",val:e.fontSize},{key:"font weight",val:e.fontWeight},{key:"font family",val:e.fontFamily},{key:"line height",val:e.lineHeight},{key:"text align",val:e.textAlign},{key:"text decoration",val:e.textDecorationLine},{key:"display",val:e.display},{key:"position",val:e.position},{key:"top",val:e.top},{key:"right",val:e.right},{key:"bottom",val:e.bottom},{key:"left",val:e.left},{key:"width",val:e.width},{key:"height",val:e.height},{key:"max width",val:e.maxWidth},{key:"max height",val:e.maxHeight},{key:"min width",val:e.minWidth},{key:"min height",val:e.minHeight},{key:"padding",val:e.padding},{key:"margin",val:e.margin},{key:"gap",val:e.gap},{key:"flex direction",val:e.flexDirection},{key:"flex wrap",val:e.flexWrap},{key:"align items",val:e.alignItems},{key:"justify content",val:e.justifyContent},{key:"visibility",val:e.visibility},{key:"opacity",val:e.opacity},{key:"transform",val:e.transform},{key:"z-index",val:e.zIndex},{key:"overflow",val:e.overflow}].filter(t=>t.val&&t.val!=="none"&&t.val!=="auto"&&t.val!=="normal"&&t.val!=="0px")}diffProperties(e,i){let t=new Map(e.map(m=>[m.key,m.val])),n=new Map(i.map(m=>[m.key,m.val])),l=new Set([...t.keys(),...n.keys()]),h=[];for(let m of l){let g=t.get(m),k=n.get(m);g!==k&&h.push({key:m,before:g||"\u2205",after:k||"\u2205"})}return h}onEditedCssChange(e){if(this.editedCss=e,this.fixApplied){let i=document.getElementById("ush-ai-bugfix-injected");i&&(i.textContent=e)}}markFixSuccessful(){this.fixSuccessful=!0,this.recordVerifiedLesson(),this.cdr.markForCheck()}markFixFailed(){this.fixSuccessful=!1,this.lessonRecorded=!1,this.lessonRecordCount=0,this.cdr.markForCheck()}applyLessonFix(e){if(!e||!e.routeThoughtToFixProblem)return;let i=e.routeThoughtToFixProblem.edits;if(!Array.isArray(i)||i.length===0)return;let t=i[0].replace||i[0].template;typeof t!="string"||!t||(this.editedCss=t,this.selectedProposedFixIndex=-1,this.cdr.markForCheck())}applyLessonAsContext(e){if(!e)return;let i=this.lessonProblemShape(e),t=this.lessonFixShape(e);this.bugContext=i,this.expectedOutcome=t,this.lessonAppliedAsContext=String(e?.memoryKeyHash||e?.memoryKey?.symptom||"lesson"),this.onBugInput(),this.onExpectedInput(),this.resetCopyState(),this.cdr.markForCheck()}lessonApplyContextTitle(e){let i=String(e?.memoryKeyHash||e?.memoryKey?.symptom||"lesson");return this.lessonAppliedAsContext===i?'Problem copied to "What is broken?" and Fix copied to "What should happen instead?"':'Copy the Problem line into "What is broken?" and the Fix line into "What should happen instead?"'}lessonHasDetails(e){if(!e)return!1;let i=e.routeThoughtToFixProblem;return i?!!(i.summary||i.diagnosticEvidence||Array.isArray(i.reasoning)&&i.reasoning.length>0||this.lessonEditTemplate(e)||Array.isArray(e.touchedFiles)&&e.touchedFiles.length>0):!1}lessonEditTemplate(e){let i=e?.routeThoughtToFixProblem?.edits;if(!Array.isArray(i)||i.length===0)return null;let t=i[0],n=t?.replace||t?.template;return typeof n=="string"&&n?n:null}copyText(e,i){if(typeof e!="string"||!e)return;i&&(this.lessonCopiedHash=i,this.cdr.markForCheck());let t=()=>{i&&window.setTimeout(()=>{this.lessonCopiedHash===i&&(this.lessonCopiedHash=null,this.cdr.markForCheck())},1500)};if(navigator?.clipboard?.writeText){navigator.clipboard.writeText(e).then(t,()=>this.fallbackCopy(e,t));return}this.fallbackCopy(e,t)}fallbackCopy(e,i){try{let t=document.createElement("textarea");t.value=e,t.style.position="fixed",t.style.opacity="0",t.style.pointerEvents="none",document.body.appendChild(t),t.focu
1s(),t.select();let n=document.execCommand("copy");t.remove(),n&&i()}catch{}}lessonProblemShape(e){let i=String(e?.compactedInput?.bugContext||"").trim();return i?this.firstSentence(i,140):String(e?.memoryKey?.symptom||"").trim()||"Prior fix for a similar visual regression."}lessonFixShape(e){let i=String(e?.routeThoughtToFixProblem?.summary||"").trim();if(i){let l=this.firstSentence(i,140);if(this.looksLikeHumanSummary(l))return l}let t=String(e?.memoryKey?.control||"").trim(),n=String(e?.memoryKey?.routeAction||"").trim();return t&&n?this.humanizeControlLabel(t,n):t?this.humanizeControlLabel(t,"app-override-existing-variable"):"See lesson for the full fix template."}firstSentence(e,i){let t=e.replace(/\s+/g," ").trim(),n=t.match(/^[^.!?\n]+[.!?]/),l=n?n[0]:t;return l.length<=i?l:l.slice(0,i-1).trimEnd()+"\u2026"}looksLikeHumanSummary(e){return e?!/^(Drop|Set|Narrow|Add|Remove|Move|Replace|Bridge|Use|Switch to)\b/i.test(e):!1}humanizeControlLabel(e,i){let t=e.replace(/-/g," ").replace(/\b\w/g,n=>n.toUpperCase());return i==="app-override-existing-variable"?`Set the existing variables on the ${t} scope.`:i==="shared-variable-plus-app-override"?`Expose a shared variable and override it on the ${t} scope.`:i==="minimal-code-fix"?`Narrow app-local fix for the ${t}.`:`App-local fix for the ${t}.`}recordVerifiedLesson(){if(!this.fixApplied)return;let e=this.proposedFixes[this.selectedProposedFixIndex];if(!e)return;let i=this.editedCss||e.rawCss;if(!i)return;let t=e.source==="variable-availability"?"app-override-existing-variable":"minimal-code-fix";try{let n=this.aiInfo.recordBugfixLesson({bug_context:this.bugContext,expected_outcome:this.expectedOutcome,app:this.ctx?.app,scope:this.ctx?.scope,path:this.ctx?.route,targetElementHint:this.hint,fixes:[{label:e.label,selector:e.selector,rawCss:i,source:e.source,fixType:"shared-style-fix",routeAction:t}]});this.lessonRecorded=Array.isArray(n)&&n.length>0,this.lessonRecordCount=Array.isArray(n)?n.length:0}catch{this.lessonRecorded=!1,this.lessonRecordCount=0}}getSelectedProposedFix(){return this.selectedProposedFixIndex>=0&&this.selectedProposedFixIndex<this.proposedFixes.length?this.proposedFixes[this.selectedProposedFixIndex]:this.proposedFixes[0]||null}get hasSelectorErrors(){return this.selectorResults.length>0&&this.selectorResults.some(e=>!e.match)}get hasValidSelector(){return this.selectorResults.some(e=>e.match)}get hasAmbiguousSelector(){return this.selectorResults.some(e=>e.ambiguous)}onSelectorInput(e){this.selectorInput=e,this.selectorValidationTimer!==null&&window.clearTimeout(this.selectorValidationTimer),this.selectorValidationTimer=window.setTimeout(()=>{this.selectorValidationTimer=null,this.validateSelectorInput(),this.buildProposedFixes()},200),this.cdr.markForCheck()}validateSelectorInput(){let e=this.selectorInput.split(",").map(i=>i.trim()).filter(Boolean);if(e.length===0){this.selectorResults=[];return}this.selectorResults=e.map(i=>this.resolveSelector(i))}resolveSelector(e){try{let i=Array.from(document.querySelectorAll(e)),t=i.length,n=i[0]||null,l=t>1,h=n instanceof HTMLElement?this.getComputedProperties(n):[];return{raw:e,match:n,matchCount:t,ambiguous:l,props:h}}catch{return{raw:e,match:null,matchCount:0,ambiguous:!1,props:[]}}}disambiguateRow(e){let i=this.selectorResults[e];if(!i||!i.match)return;let t=i.match,n=this.buildDisambiguatedSelector(t,i.raw);if(!n||n===i.raw)return;let l=this.selectorInput.split(",").map(h=>h.trim());l[e]=n,this.selectorInput=l.join(", "),this.validateSelectorInput()}hasLongPath(e){return/[\s>+~]/.test(e)||/\(/.test(e)}simplifyRow(e){let i=this.selectorResults[e];if(!i||!i.match)return;let t=i.match,n=this.targetElement===t?this.hint:this.aiInfo.describeElement(t),l=this.pickBestSelectorForElement(t,n);if(!l||l===i.raw)return;let h=this.selectorInput.split(",").map(m=>m.trim());h[e]=l,this.selectorInput=h.join(", "),this.validateSelectorInput()}buildDisambiguatedSelector(e,i){let t=Array.from(document.querySelectorAll(i));if(t.length<=1||t.indexOf(e)<0)return i;let l=e.tagName.toLowerCase(),h=e.parentElement;if(h){let g=Array.from(h.children).filter(k=>k.tagName===e.tagName);if(g.length===t.length){let k=g.indexOf(e)+1;return`${i}:nth-of-type(${k})`}}let m=Array.from(document.querySelectorAll(l));if(m.length>0){let g=m.indexOf(e)+1;return`${l}:nth-of-type(${g})`}return i}pickBestSelectorForElement(e,i){if(!i)return e.tagName.toLowerCase();let t=[];if(typeof i.selector=="string"&&t.push(i.selector),Array.isArray(i.selectorCandidates))for(let n of i.selectorCandidates)typeof n=="string"&&t.push(n);for(let n of t){let l=n.trim();if(l)try{let h=document.querySelectorAll(l);if(h.length===1&&h[0]===e)return l}catch{continue}}return i.selector||e.tagName.toLowerCase()}syncTargetElement(e,i=!1){if(!this.isSelectableTarget(e))return;this.targetElement=e,this.hint=this.aiInfo.describeElement(e),this.scheduleLessonLookup();let t=this.pickBestSelectorForElement(e,this.hint);this.appendPickedSelector(t),this.activeTargetIndex=this.selectorResults.findIndex(n=>n.match===e),this.activeTargetIndex<0&&(this.activeTargetIndex=0),this.cdr.markForCheck(),this.pickHighlight&&(this.pickHighlight.style.borderColor="#a6e3a1",this.pickHighlight.style.background="rgba(166,227,161,0.15)",this.pickHighlight.style.boxShadow="0 0 16px rgba(166,227,161,0.4)"),i&&(this.pickingElement=!1,this.removePickBanner(),setTimeout(()=>{this.removePickOverlay(),document.body.style.cursor="",this.cdr.markForCheck()},1500),this.cdr.markForCheck())}onResultRowEnter(e,i){this.hoveredResultIndex=e,i.match&&this.flashHighlightOnElement(i.match,"#f9e2af","rgba(249,226,175,0.18)","0 0 14px rgba(249,226,175,0.45)")}onResultRowLeave(e,i){this.hoveredResultIndex=null,this.removeHoverHighlight()}setActiveTarget(e,i){if(!i.match)return;let t=i.match;if(i.matchCount>1){let n=Array.from(document.querySelectorAll(i.raw)),l=n.indexOf(this.targetElement),h=l<0?0:(l+1)%n.length;t=n[h]||i.match}t instanceof HTMLElement&&(this.activeTargetIndex=e,this.targetElement=t,this.hint=this.aiInfo.describeElement(t),this.cdr.markForCheck(),this.flashHighlightOnElement(t,"#a6e3a1","rgba(166,227,161,0.18)","0 0 16px rgba(166,227,161,0.45)"),setTimeout(()=>this.removeHoverHighlight(),1200))}removeSelectorAt(e){if(e<0||e>=this.selectorResults.length)return;let i=[...this.selectorResults.slice(0,e),...this.selectorResults.slice(e+1)];this.selectorResults=i,this.selectorInput=i.map(t=>t.raw).join(", "),this.activeTargetIndex>=i.length&&(this.activeTargetIndex=Math.max(0,i.length-1)),i[this.activeTargetIndex]?.match instanceof HTMLElement?(this.targetElement=i[this.activeTargetIndex].match,this.hint=this.aiInfo.describeElement(this.targetElement)):(this.targetElement=null,this.hint=null),this.cdr.markForCheck()}clearAllSelectors(){this.selectorResults=[],this.selectorInput="",this.activeTargetIndex=0,this.targetElement=null,this.hint=null,this.cdr.markForCheck()}appendPickedSelector(e){if(!e)return;let i=String(e).trim();if(!i)return;let t=this.selectorInput.split(",").map(n=>
1n.trim()).filter(Boolean);t.includes(i)||(t.push(i),this.selectorInput=t.join(", "),this.validateSelectorInput())}flashHighlightOnElement(e,i,t,n){this.removeHoverHighlight();let l=e.getBoundingClientRect(),h=document.createElement("div");h.style.cssText=`position:fixed;pointer-events:none;border:2px dashed ${i};background:${t};z-index:999997;box-shadow:${n};`,h.style.left=`${l.left}px`,h.style.top=`${l.top}px`,h.style.width=`${l.width}px`,h.style.height=`${l.height}px`,document.body.appendChild(h),this.hoverHighlightEl=h}removeHoverHighlight(){this.hoverHighlightTimer!==null&&(window.clearTimeout(this.hoverHighlightTimer),this.hoverHighlightTimer=null),this.hoverHighlightEl&&(this.hoverHighlightEl.remove(),this.hoverHighlightEl=null)}removePickOverlay(){let e=document.getElementById("ush-pick-overlay");e&&e.remove(),this.pickHighlight&&(this.pickHighlight.remove(),this.pickHighlight=null),this.pickTooltip&&(this.pickTooltip.remove(),this.pickTooltip=null)}markForCheck(){return this.cdr.markForCheck()}hasActionableReportInput(){return this.bugContext.trim().length>=15&&this.expectedOutcome.trim().length>=12}refreshReadinessScore(){if(!this.ctx)return;let e=this.aiInfo.computeReadinessScore({bugContext:this.bugContext,expectedOutcome:this.expectedOutcome,scope:this.ctx.scope,targetElementHint:this.hint,relevantEntries:this.liveRelevantEntries,fixRouting:this.liveFixRouting||this.emptyFixRouting,currentPath:this.ctx.route});this.readinessScore=e.score,this.readinessVerdict=e.verdict,this.readinessGaps=e.gaps,this.readinessStrengths=e.strengths,this.cdr.markForCheck()}onHeaderMouseDown(e){if(e.button!==0)return;let i=e.target;if(i&&(i.closest(".header-btn")||i.closest(".close-btn")))return;this.dragging=!0;let t=this.el.nativeElement,n=t.getBoundingClientRect();this.dragX=e.clientX-n.left,this.dragY=e.clientY-n.top,t.style.left=n.left+"px",t.style.top=n.top+"px",t.style.right="auto",t.style.bottom="auto",e.preventDefault()}getDragPositionStorageKey(){return"usheru-bug-report-position"}persistDragPosition(){try{let e=this.el.nativeElement,i=e.style.left,t=e.style.top;if(!i||!t||i==="auto"||t==="auto")return;let n=JSON.stringify({left:i,top:t});window.sessionStorage.setItem(this.getDragPositionStorageKey(),n)}catch{}}restoreDragPosition(){try{let e=window.sessionStorage.getItem(this.getDragPositionStorageKey());if(!e)return;let i=JSON.parse(e);if(!i?.left||!i?.top)return;let t=this.el.nativeElement;t.style.left=i.left,t.style.top=i.top,t.style.right="auto",t.style.bottom="auto"}catch{}}onMouseMove(e){if(!this.dragging)return;let i=this.el.nativeElement;i.style.left=e.clientX-this.dragX+"px",i.style.top=e.clientY-this.dragY+"px",i.style.right="auto",i.style.bottom="auto"}onMouseUp(){this.dragging&&this.persistDragPosition(),this.dragging=!1}toggleCompact(e){e.preventDefault(),e.stopPropagation(),this.compactMode=!this.compactMode,this.cdr.markForCheck()}get statusLabel(){return{idle:"Ready",waiting:"Waiting...",running:"Processing...",ready:this.proposedFixes.length>0?`${this.proposedFixes.length} fix suggestion${this.proposedFixes.length!==1?"s":""} available`:"No suggestions \u2014 describe the bug to generate fixes",unavailable:"Unavailable"}[this.liveAnalysisStatus]||"Unknown"}get interactionCount(){return this.displayedInteractions.length}get selectedInteractionCount(){return this.selectedInteractionIndices.size}get interactionTypeFilters(){let e=new Map;for(let n of this.displayedInteractions)e.set(n.kind,(e.get(n.kind)||0)+1);let i=["click","mouseenter","change","input","submit","keydown","focus"],t=Array.from(e.keys()).sort((n,l)=>{let h=i.indexOf(n),m=i.indexOf(l);return h>=0||m>=0?(h>=0?h:Number.MAX_SAFE_INTEGER)-(m>=0?m:Number.MAX_SAFE_INTEGER):n.localeCompare(l)});return[{kind:"all",label:"all",count:this.displayedInteractions.length,active:this.interactionTypeFilter==="all"},...t.map(n=>({kind:n,label:n,count:e.get(n)||0,active:this.interactionTypeFilter===n}))]}get filteredInteractions(){return this.interactionTypeFilter==="all"?this.displayedInteractions:this.displayedInteractions.filter(e=>e.kind===this.interactionTypeFilter)}onToggleRecordSteps(){if(!this.includeRecordedSteps){let e=window.usheru;this.recording&&typeof e?.stopRecording=="function"&&e.stopRecording(),this.recording=!1,this.stopInteractionRefresh()}}toggleRecording(){let e=window.usheru;this.recording?(typeof e?.stopRecording=="function"&&e.stopRecording(),this.recording=!1,this.buildInteractionList(),this.pauseInteractionRefresh()):(typeof e?.clearRecording=="function"&&e.clearRecording(),typeof e?.startRecording=="function"&&e.startRecording(),this.recordingStartIndex=0,this.displayedInteractions=[],this.selectedInteractionIndices=new Set,this.knownInteractionIndices=new Set,this.interactionTypeFilter="all",this.recording=!0,this.startInteractionRefresh()),this.buildInteractionList(),this.cdr.markForCheck()}startInteractionRefresh(){this.recordingTimer===null&&(this.recordingTimer=window.setInterval(()=>{this.buildInteractionList()},1500))}stopInteractionRefresh(){this.pauseInteractionRefresh(),this.displayedInteractions=[],this.selectedInteractionIndices=new Set,this.knownInteractionIndices=new Set,this.interactionTypeFilter="all",this.recordingStartIndex=0,this.cdr.markForCheck()}pauseInteractionRefresh(){this.recordingTimer!==null&&(window.clearInterval(this.recordingTimer),this.recordingTimer=null)}buildInteractionList(){let e=window.usheru,t=(Array.isArray(e?.recordedDomInteractions)?e.recordedDomInteractions:[]).slice(this.recordingStartIndex),n=t.slice(-50),l=this.recordingStartIndex+t.length-n.length,h=new Set;this.displayedInteractions=n.map((m,g)=>{let k=l+g;return h.add(k),this.knownInteractionIndices.has(k)||this.knownInteractionIndices.add(k),{index:k,kind:m.kind||"click",text:(m.text||m.label||m.title||"").slice(0,100),selector:(m.selector||"").slice(0,120),selected:this.selectedInteractionIndices.has(k),raw:m}}).reverse(),this.selectedInteractionIndices=new Set(Array.from(this.selectedInteractionIndices).filter(m=>h.has(m))),this.cdr.markForCheck()}setInteractionTypeFilter(e){this.interactionTypeFilter=e,this.cdr.markForCheck()}trackByFilterKind(e,i){return i.kind}trackByInteractionIndex(e,i){return i.index}toggleInteractionSelection(e,i){i?this.selectedInteractionIndices.add(e):this.selectedInteractionIndices.delete(e),this.displayedInteractions=this.displayedInteractions.map(t=>t.index===e?P(E({},t),{selected:i}):t),this.resetCopyState(),this.cdr.markForCheck()}setVisibleInteractionSelection(e){for(let i of this.filteredInteractions)e?this.selectedInteractionIndices.add(i.index):this.selectedInteractionIndices.delete(i.index);this.displayedInteractions=this.displayedInteractions.map(i=>P(E({},i),{selected:this.selectedInteractionIndices.has(i.index)})),this.resetCopyState(),this.cdr.markForCheck()}getSelectedRecordedDomInteractions(){return!this.includeRecordedSteps||this.selectedInteractionIndices.size===0?[]:this.displayedInteractions.filter(e=>this.selectedInteractionIndices.has(e.index)).sort((e,i)=>e.index-i.index).map(e=>e.raw)}close(){if(this.closed)return;this.closed=!0,this.dragging=!1,this.stopInteractionRefresh(),this.removeCssFix(),this.pickingElement&&(this.pickingElement=!1,this.removePickBanner(),this.removePickOverlay(),document.body.style.cursor="");let e=this.el.nativeElement;e.style.display="none",this.aiInfo.updateDebugButtonPosition(!1),this.cdr.markForCheck()}reopen(){if(!this.closed)return;this.closed=!1;let e=this.el.nativeElement;this.restoreDragPosition(),e.style.display="",this.aiInfo.updateDebugButtonPosition(!0),this.cdr.markForCheck()}onBugInput(){this.refreshReadinessScore(),this.buildProposedFixes(),this.scheduleLessonLookup(),this.lessonAppliedAsContext=null,this.hasActionableReportInput()&&(this.liveAnalysisStatus="ready",this.cdr.markForCheck())}onExpectedInput(){this.refreshReadinessScore(),this.buildProposedFixes(),this.scheduleLessonLookup(),this.lessonAppliedAsContext=null,this.hasActionableReportInput()&&(this.liveAnalysisStatus="ready",this.cdr.markForCheck())}scheduleLessonLookup(){this.aiInfo.hasAiBugfixLessonsCache()&&(this.lessonLookupTimer!==null&&window.clearTimeout(this.lessonLookupTimer),this.lessonLookupTimer=window.setTimeout(()=>{this.lessonLookupTimer=null,this.runLessonLookup()},250))}runLessonLookup(){if(!this.aiInfo.hasAiBugfixLessonsCache())return;let e=++this.lessonLookupRunId,i=typeof window<"u"?window.location.pathname:"",t=(this.ctx&&typeof this.ctx.app=="string"?String(this.ctx.app):"")||"",n=this.aiInfo.findRelevantAiBugfixLessons({app:t,bugContext:this.bugContext||"",expectedOutcome:this.expectedOutcome||"",path:i,targetElementHint:this.hint});e===this.lessonLookupRunId&&(this.liveRelevantEntries=n,this.cdr.markForCheck())}buildProposedFixes(){let e=this.bugContext.toLowerCase(),i=this.expectedOutcome.toLowerCase(),t=`${e} ${i}`,n=this.selectorResults.filter(b=>b.match),l=n.map(b=>b.raw),h=l.length>
11?l.join(", "):n[0]?.raw||this.getRawSelector(),m=[],g=b=>{!b.selector||m.some(I=>I.id===b.id)||m.push(b)},k=this.resolveVariableAvailabilityForSelector(h),F=b=>{let I=k.filter(B=>B.property===b&&B.isAppSettable);return I.length===0?null:{name:I[0].name,fallback:I[0].fallback||"inherit"}},V=/(\d+(?:\.\d+)?)\s*(rem|px|em|%)/,R=i.match(V)?.[0]||"",L=/#[0-9a-f]{3,8}\b/,D=/\b(red|blue|green|yellow|white|black|grey|gray|pink|purple|orange)\b/,A=i.match(L)?.[0]||i.match(D)?.[0]?.replace("grey","gray")||"",ge=/\bcolou?r\b|\b(?:red|blue|green|yellow|white|black|grey|gray|pink|purple|orange)\b|#[0-9a-f]{3,8}\b/.test(t),N=/\bbackground\b|\bbg\b/.test(t),xe=/\bspace\b|\bspacing\b|\bgap\b|\bmargin\b|\bpadding\b|\btoo close\b|\btoo far\b/.test(e),be=/\bsize\b|\bwidth\b|\bheight\b|\btoo small\b|\btoo big\b|\blarger\b|\bsmaller\b|\bfont\b/.test(e),G=/\bfont[-\s]?size\b/.test(t),_e=/\bfont[-\s]?weight\b|\bbolder\b|\bbold(?:er)?\b/.test(t),ve=/\bborder\b/.test(t),j=/\bleft\b/.test(t)||/\b(?:align|move|shift)\s+(?:to\s+)?left\b/.test(t),W=/\bright\b/.test(t)||/\b(?:align|move|shift)\s+(?:to\s+)?right\b/.test(t),K=/\btop\b/.test(t)||/\b(?:align|move|shift)\s+(?:to\s+)?top\b/.test(t),U=/\bbottom\b/.test(t)||/\b(?:align|move|shift)\s+(?:to\s+)?bottom\b/.test(t),Y=/\bcenter(?:ed)?\b|\bcentre(?:d)?\b|\bmiddle\b/.test(t),ye=/\bwrap\b|\bone line\b|\bsingle line\b|\bnowrap\b|\bno wrap\b/.test(e),ke=/\bhidden\b|\bmissing\b|\binvisible\b|\bnot\s+visible\b/.test(e)||/\b(?:should\s+be?\s+)?visible\b|\bshould\s+appear\b/.test(i),Z=!!R,f=h;if(f&&_e){let b=F("font-weight");b&&g({id:"font-weight-var",label:`Set font-weight via ${b.name}`,selector:f,priority:78,source:"variable-availability",rawCss:`${f} {
2  font-weight: var(${b.name}, bolder);
3}`}),g({id:"font-weight",label:"Set font-weight to bolder (fallback)",selector:f,priority:55,rawCss:`${f} {
4  font-weight: bolder !important;
5}`})}if(f&&G&&Z){let b=F("font-size");b&&g({id:"font-size-var",label:`Set font-size via ${b.name} to ${R}`,selector:f,priority:73,source:"variable-availability",rawCss:`${f} {
6  font-size: var(${b.name}, ${R});
7}`}),g({id:"font-size",label:`Set font-size to ${R} (fallback)`,selector:f,priority:50,rawCss:`${f} {
8  font-size: ${R} !important;
9}`})}if(f&&ge&&A){let b=/\bp-button\b/i.test(h),I=/\bhover\b/i.test(t),B=N&&b&&I,O=B?"color":N?"background-color":"color",q=F(O);q&&g({id:`${O}-var`,label:`Set ${O} via ${q.name} to ${A}`,selector:f,priority:83,source:"variable-availability",rawCss:`${f} {
10  ${O}: var(${q.name}, ${A});
11}`}),g(B?{id:"button-hover-color",label:`Set label color to ${A} on p-button hover`,selector:f,priority:65,rawCss:`${f}:hover, ${f}:hover span.p-button-label, ${f}:hover .p-button-label {
12  color: ${A} !important;
13}`}:N?{id:"bg-color",label:`Set background to ${A} (fallback)`,selector:f,priority:60,rawCss:`${f} {
14  background-color: ${A} !important;
15}`}:{id:"text-color",label:`Set color to ${A} (fallback)`,selector:f,priority:60,rawCss:`${f} {
16  color: ${A} !important;
17}`})}if(f&&xe){let b=F("padding")||F("gap")||F("margin");b&&g({id:"spacing-var",label:`Adjust spacing via ${b.name}`,selector:f,priority:73,source:"variable-availability",rawCss:`${f} {
18  gap: var(${b.name}, 0.5rem);
19  margin: 0;
20  padding: 0.5rem;
21}`}),g({id:"spacing",label:"Adjust spacing (fallback)",selector:f,priority:50,rawCss:`${f} {
22  gap: 0.5rem !important;
23  margin: 0;
24  padding: 0.5rem;
25}`})}if(f&&ve){let b=F("border");b&&g({id:"border-var",label:`Add border via ${b.name}`,selector:f,priority:78,source:"variable-availability",rawCss:`${f} {
26  border: 1px solid var(${b.name}, currentColor);
27}`}),g({id:"border",label:"Add border (fallback)",selector:f,priority:58,rawCss:`${f} {
28  border: 1px solid currentColor !important;
29}`})}if(f&&(j||W||K||U||Y)){let b=[],I=[];Y&&(b.push("display: flex !important","align-items: center !important","justify-content: center !important"),I.push("center")),j&&(b.push("left: 0 !important"),I.push("left")),W&&(b.push("right: 0 !important"),I.push("right")),K&&(b.push("top: 0 !important"),I.push("top")),U&&(b.push("bottom: 0 !important"),I.push("bottom"));let B=j||W||K||U;g({id:"position",label:`Align to ${I.join(", ")}`,selector:f,priority:67,rawCss:`${f} {
30${B?`  position: relative;
31`:""}  ${b.join(`;
32  `)};
33}`})}f&&be&&!(G&&Z)&&g({id:"size",label:"Adjust size",selector:f,priority:55,rawCss:`${f} {
34  width: auto;
35  height: auto;
36  font-size: 1rem;
37}`}),f&&ye&&g({id:"no-wrap",label:"Keep text on one line",selector:f,priority:65,rawCss:`${f} {
38  white-space: nowrap !important;
39}`}),f&&ke&&g({id:"visibility",label:"Adjust visibility",selector:f,priority:50,rawCss:`${f} {
40  display: block !important;
41  visibility: visible !important;
42  opacity: 1 !important;
43}`}
43),this.proposedFixes=m.sort((b,I)=>I.priority-b.priority),this.selectedProposedFixIndex>=this.proposedFixes.length&&(this.selectedProposedFixIndex=0),this.cdr.markForCheck()}resolveVariableAvailabilityForSelector(e){let i=[];if(!e)return i;let n=(this.selectorVariableMap||{})[e]?.consumed||[];for(let l of n)l.isAppSettable&&i.push({property:this.inferPropertyFromVariableName(l.name),name:l.name,fallback:l.fallback||"inherit",isAppSettable:!0});return i}inferPropertyFromVariableName(e){let i=String(e||"").toLowerCase();return/(color|bg|background)/.test(i)?"color":/(border|outline|stroke)/.test(i)?"border":/(font-size|fontsize|text-size)/.test(i)?"font-size":/(font-weight|fontweight|bold)/.test(i)?"font-weight":/(padding|gap|space|spacing|margin|offset)/.test(i)?"padding":/(width|w-|size)/.test(i)?"width":/(height|h-|size)/.test(i)?"height":"color"}buildSelectorVariableMapFromHints(e){let i={},t=e&&e.consumedAndSettableHints||[];for(let n of t){if(!n||!n.variable||!n.isAppSettable)continue;let l=Array.isArray(n.selectorCandidates)?n.selectorCandidates:[];for(let h of l){if(!h)continue;let m=i[h]||{consumed:[],exposed:[]};m.consumed.some(g=>g.name===n.variable)||m.consumed.push({name:n.variable,isAppSettable:!0}),i[h]=m}}return i}getRawSelector(){if(this.targetElement){let e=this.targetElement.tagName.toLowerCase(),i=this.targetElement.id?`#${CSS.escape(this.targetElement.id)}`:"",t=Array.from(this.targetElement.classList).slice(0,3).map(l=>`.${CSS.escape(l)}`).join(""),n=`${e}${i}${t}`;try{let l=document.querySelectorAll(n);if(l.length>1){let h=Array.from(l).indexOf(this.targetElement);if(h>=0)return`${n}:nth-of-type(${h+1})`}return n}catch{return n}}return this.hint?.selector||this.hint?.selectorCandidates?.[0]||""}cycleProposedFix(e){let i=this.proposedFixes.length-1;this.selectedProposedFixIndex=Math.max(0,Math.min(i,this.selectedProposedFixIndex+e)),this.cdr.markForCheck()}resetCopyState(){this.copyState==="copied"&&(this.copyState="idle",this.copyResetTimer!==null&&(window.clearTimeout(this.copyResetTimer),this.copyResetTimer=null),this.cdr.markForCheck())}copyToClickUp(){let e=this.useBranch?this.branchName.trim():"",i=g=>String(g||"").replace(/\r\n?/g,`
44`).replace(/\n/g,"\\n").replace(/\t/g,"\\t"),t=this.getSelectedRecordedDomInteractions().map(g=>{let k=E({},g);for(let F of Object.keys(k)){let V=k[F];typeof V=="string"&&(k[F]=i(V))}return k}),n=P(E(E(P(E({app:this.ctx?.app||"",bug_context:i(this.bugContext),expected_outcome:i(this.expectedOutcome),fix_applied:this.fixApplied,fix_successful:this.fixSuccessful,fix_css:this.fixApplied&&(this.editedCss||this.proposedFixes[this.selectedProposedFixIndex]?.rawCss)||""},this.fixApplied&&this.fixSuccessful===!0&&(this.editedCss||this.proposedFixes[this.selectedProposedFixIndex]?.rawCss)?{verified_fix:{rawCss:this.editedCss||this.proposedFixes[this.selectedProposedFixIndex]?.rawCss||""}}:{}),{accept_cookies:this.acceptCookies}),this.compareToProduction?{source_of_truth:"production"}:{}),e?{branch_name:e}:{}),{runtime_context:P(E(P(E({current_path:this.ctx?.route||""},this.currentUrl?{current_url:this.currentUrl}:{}),{accept_cookies:this.acceptCookies}),e?{source_branch:e}:{}),{target_element:this.hint?{selector:this.hint.selector,selectorCandidates:this.hint.selectorCandidates,componentChain:this.hint.componentChain,surface:this.hint.surface,role:this.hint.role,tagName:this.hint.tagName,label:this.hint.label,text:this.hint.text}:void 0,target_selectors:this.selectorResults.filter(g=>g.match).map(g=>g.raw),recorded_dom_interactions:t})}),l=JSON.stringify(n),h=`/ai-bugfix ${l}`,m=`node ai-tooling/scripts/ai-bugfix-from-report.js --report-json '${l}' --prepare-only`;console.log("%c\u{1F4CB} ClickUp payload (also copied to clipboard):%c","color:#89b4fa;font-weight:700","color:inherit"),console.log(`%c${h}%c`,"color:#1e1e2e;background:#f3f4f6;padding:4px 8px;border-radius:4px;font-size:11px;","color:inherit"),console.log("%c\u{1F527} Run locally:%c","color:#a6e3a1;font-weight:700","color:inherit"),console.log(`%c${m}%c`,"color:#1e1e2e;background:#f3f4f6;padding:4px 8px;border-radius:4px;font-size:11px;","color:inherit"),navigator.clipboard.writeText(h).catch(()=>{}),this.copyState="copied",this.copyResetTimer!==null&&window.clearTimeout(this.copyResetTimer),this.copyResetTimer=window.setTimeout(()=>{this.copyState="idle",this.copyResetTimer=null,this.cdr.markForCheck()},3e3),this.cdr.markForCheck()}static{this.\u0275fac=function(i){return new(i||o)}}static{this.\u0275cmp=ie({type:o,selectors:[["ush-ai-bug-report"]],hostVars:2,hostBindings:function(i,t){i&1&&x("mousemove",function(l){return t.onMouseMove(l)},!1,X)("mouseup",function(){return t.onMouseUp()},!1,X),i&2&&T("compact",t.compactMode)},inputs:{ctx:"ctx",targetElementHint:"targetElementHint",proposedFixesInit:"proposedFixesInit",relevantEntriesInit:"relevantEntriesInit",fixRoutingInit:"fixRoutingInit",selectorVariableMap:"selectorVariableMap"},features:[J],decls:65,vars:48,consts:[["id","usheru-bugfix-chat",1,"bug-report-widget"],[1,"header",3,"mousedown"],[1,"header-title"],[1,"header-actions"],["type","button",1,"header-btn","compact-btn",3,"mousedown","click","title"],["type","button",1,"header-btn","close-btn",3,"mousedown","click"],[1,"body-scroll"],["class","meta-row",4,"ngIf"],[1,"status-bar"],[1,"status-dot"],[1,"status-text"],["class","readiness-score",4,"ngIf"],[1,"field-label","pick-label"],["placeholder",'Click "P
44ick element" to select, or type a CSS selector',1,"target-input",3,"ngModelChange","ngModel"],["class","target-results",4,"ngIf"],[1,"target-controls"],[1,"btn","pick-btn",3,"click"],["class","target-help",4,"ngIf"],[1,"field-label"],["placeholder","e.g. CTA button wraps to two lines on mobile",1,"input-textarea",3,"ngModelChange","ngModel"],[1,"field-label","expected-label"],["placeholder","e.g. Button stays on one line with no text wrapping",1,"input-textarea",3,"ngModelChange","ngModel"],[1,"opts-row"],[1,"toggle-row"],["type","checkbox",3,"ngModelChange","change","ngModel"],["class","branch-row",4,"ngIf"],["class","recording-row",4,"ngIf"],["class","interactions-list",4,"ngIf"],["class","score-card",4,"ngIf"],["class","lessons-card",4,"ngIf"],["class","proposed-fix-section",4,"ngIf"],["class","diff-card",4,"ngIf"],["class","fix-result",4,"ngIf"],["class","lesson-indicator",4,"ngIf"],[1,"actions"],[1,"btn","try-fix-btn",3,"click","disabled"],[1,"btn","clickup-btn",3,"click"],[1,"meta-row"],[1,"meta-badge"],[1,"meta-badge",3,"title"],["class","meta-badge branch-badge","title","Branch supplied via report({ branch }) or ?branch=",4,"ngIf"],["title","Branch supplied via report({ branch }) or ?branch=",1,"meta-badge","branch-badge"],[1,"readiness-score"],[1,"target-results"],["class","result-row",3,"invalid","hovered","active","ambiguous","mouseenter","mouseleave","click",4,"ngFor","ngForOf"],[1,"result-row",3,"mouseenter","mouseleave","click"],[1,"result-icon"],[1,"result-selector"],["class","result-count",4,"ngIf"],["class","result-count match-many",4,"ngIf"],["class","result-error",4,"ngIf"],["type","button","class","result-narrow","title","Narrow this selector to the picked element only",3,"click",4,"ngIf"],["type","button","class","result-simplify","title","Try a shorter scoped selector for the picked element",3,"click",4,"ngIf"],["type","button","class","result-remove","title","Remove this selector",3,"click",4,"ngIf"],["class","result-props",4,"ngIf"],[1,"result-count"],[1,"result-count","match-many"],[1,"result-error"],["type","button","title","Narrow this selector to the picked element only",1,"result-narrow",3,"click"],["type","button","title","Try a shorter scoped selector for the picked element",1,"result-simplify",3,"click"],["type","button","title","Remove this selector",1,"result-remove",3,"click"],[1,"result-props"],["class","prop-item",4,"ngFor","ngForOf"],[1,"prop-item"],[1,"target-help"],[4,"ngIf"],["type","button","title","Clear all selectors",1,"target-clear",3,"click"],[1,"branch-row"],[1,"branch-field"],[1,"branch-label"],["type","text","placeholder","e.g. PROD-12345_login-modal-automate-bugfix","spellcheck","false","autocomplete","off",1,"input-text",3,"ngModelChange","ngModel"],[1,"recording-row"],[1,"btn","rec-btn",3,"click"],["class","rec-count",4,"ngIf"],[1,"rec-count"],[1,"interactions-list"],[1,"interaction-toolbar"],["aria-label","Recorded interaction filters",1,"interaction-filters"],["type","button","class","interaction-chip",3,"active","click",4,"ngFor","ngForOf","ngForTrackBy"],[1,"interaction-selection-actions"],["type","button",3,"click"],[1,"interaction-items"],["class","interaction-item",3,"unselected",4,"ngFor","ngForOf","ngForTrackBy"],["type","button",1,"interaction-chip",3,"click"],[1,"chip-count"],[1,"interaction-item"],[1,"interaction-check"],["type","checkbox",3,"ngModelChange","ngModel"],[1,"interaction-kind"],[1,"interaction-text"],[1,"score-card"],[1,"score-header"],[1,"score-value"],[1,"score-verdict"],[1,"score-details"],["class","strengths",4,"ngIf"],["class","gaps",4,"ngIf"],[1,"strengths"],["class","score-item strength",4,"ngFor","ngForOf"],[1,"score-item","strength"],[1,"gaps"],["class","score-item gap",4,"ngFor","ngForOf"],[1,"score-item","gap"],[1,"lessons-card"],[1,"lessons-header"],[1,"lessons-icon"],[1,"lessons-title"],[1,"lessons-list"],["class","lesson-row",4,"ngFor","ngForOf"],[1,"lesson-row"],[1,"lesson-row-meta"],["class","lesson-app",4,"ngIf"],["class","lesson-symptom",4,"ngIf"],[1,"lesson-row-problem"],[1,"lesson-label"],[1,"lesson-text"],[1,"lesson-row-fix"],[1,"lesson-row-actions"],["type","button",1,"btn","lesson-apply-btn","primary",3,"mousedown","click","title"],["type","button","class","btn lesson-apply-btn","title","Replace the proposed fix CSS with this lesson's template",3,"mousedown","click",4,"ngIf"],["class","lesson-row-detail
44s",3,"click","mousedown",4,"ngIf"],[1,"lesson-app"],[1,"lesson-symptom"],["type","button","title","Replace the proposed fix CSS with this lesson's template",1,"btn","lesson-apply-btn",3,"mousedown","click"],[1,"lesson-row-details",3,"click","mousedown"],[1,"lesson-row-details-summary"],[1,"lesson-row-details-body"],["class","lesson-detail-block",4,"ngIf"],[1,"lesson-detail-block"],[1,"lesson-detail-label"],[1,"lesson-detail-text"],[1,"lesson-detail-list"],[4,"ngFor","ngForOf"],[1,"lesson-detail-header"],[1,"lesson-detail-actions"],["type","button","class","btn lesson-try-fix-btn",3,"title","click",4,"ngIf"],["type","button","class","btn lesson-try-fix-btn","title","Remove the injected lesson CSS",3,"active","click",4,"ngIf"],["type","button","title","Copy the lesson's CSS template to clipboard",1,"btn","lesson-copy-css-btn",3,"click"],[1,"lesson-detail-pre"],["type","button",1,"btn","lesson-try-fix-btn",3,"click","title"],["type","button","title","Remove the injected lesson CSS",1,"btn","lesson-try-fix-btn",3,"click"],[1,"proposed-fix-section"],[1,"fix-nav"],[1,"btn","nav-btn",3,"click","disabled"],[1,"fix-label"],["spellcheck","false",1,"fix-editor",3,"ngModelChange","ngModel"],[1,"diff-card"],[1,"diff-header"],[1,"diff-icon"],[1,"diff-title"],["class","diff-subtitle",4,"ngIf"],["class","diff-list",4,"ngIf"],["class","diff-empty",4,"ngIf"],[1,"diff-subtitle"],[1,"diff-list"],["class","diff-row",4,"ngFor","ngForOf"],[1,"diff-row"],[1,"diff-key"],[1,"diff-before"],[1,"diff-arrow"],[1,"diff-after"],[1,"diff-empty"],[1,"diff-empty-line"],[1,"diff-empty-hint"],[1,"fix-result"],[1,"btn","result-btn","fixed",3,"click","disabled","title"],[1,"btn","result-btn","not-fixed",3,"click"],[1,"btn","remove-btn",3,"click"],["class","fix-result-hint",4,"ngIf"],[1,"fix-result-hint"],[1,"lesson-indicator"],[1,"lesson-icon"]],template:function(i,t){i&1&&(s(0,"div",0)(1,"div",1),x("mousedown",function(l){return t.onHeaderMouseDown(l)}),s(2,"span",2),c(3,"\u{1F41B} Bug Report"),r(),s(4,"div",3)(5,"button",4),x("mousedown",function(l){return l.stopPropagation()})("click",function(l){return t.toggleCompact(l)}),c(6),r(),s(7,"button",5),x("mousedown",function(l){return l.stopPropagation()})("click",function(){return t.close()}),c(8,"\u2715"),r()()(),s(9,"div",6),y(10,we,6,4,"div",7),s(11,"div",8),ne(12,"span",9),s(13,"span",10),c(14),r(),y(15,Se,2,1,"span",11),r(),s(16,"label",12),c(17,"1) Pick element"),r(),s(18,"input",13),x("ngModelChange",function(l){return t.onSelectorInput(l)}),r(),y(19,$e,2,1,"div",14),s(20,"div",15)(21,"button",16),x("click",function(){return t.startPicking()}),c(22),r(),y(23,ze,4,1,"span",17),r(),s(24,"label",18),c(25,"2) What is broken? *"),r(),s(26,"textarea",19),x("ngModelChange",function(l){return t.bugContext=l,t.onBugInput(),t.resetCopyState()}),r(),s(27,"label",20),c(28,"3) What should happen instead?"),r(),s(29,"textarea",21),x("ngModelChange",function(l){return t.expectedOutcome=l,t.onExpectedInput(),t.resetCopyState()}),r(),s(30,"div",22)(31,"label",23)(32,"input",24),M("ngModelChange",function(l){return z(t.requiresLogin,l)||(t.requiresLogin=l),l}),x("change",function(){return t.markForCheck()}),r(),s(33,"span"),c(34,"Requires login"),r()(),s(35,"label",23)(36,"input",24),M("ngModelChange",function(l){return z(t.compareToProduction,l)||(t.compareToProduction=l),l}),x("change",function(){return t.markForCheck(),t.resetCopyState()}),r(),s(37,"span"),c(38,"Compare production"),r()(),s(39,"label",23)(40,"input",24),M("ngModelChange",function(l){return z(t.includeRecordedSteps,l)||(t.includeRecordedSteps=l),l}),x("change",function(){return t.onToggleRecordSteps()}),r(),s(41,"span"),c(42,"Use interactions"),r()(),s(43,"label",23)(44,"input",24),M("ngModelChange",function(l){return z(t.acceptCookies,l)||(t.acceptCookies=l),l}),x("change",function(){return t.markForCheck(),t.resetCopyState()}),r(),s(45,"span"),c(46,"Accept cookies"),r()(),s(47,"label",23)(48,"input",24),M("ngModelChange",function(l){return z(t.useBranch,l)||(t.useBranch=l),l}),x("change",function(){return t.markForCheck(),t.resetCopyState()}
44),r(),s(49,"span"),c(50,"Use branch"),r()()(),y(51,Me,5,1,"div",25)(52,De,4,4,"div",26)(53,je,11,4,"div",27)(54,Xe,9,4,"div",28)(55,ct,8,2,"div",29)(56,dt,9,6,"div",30)(57,xt,11,6,"div",31)(58,_t,8,7,"div",32)(59,vt,5,1,"div",33),r(),s(60,"div",34)(61,"button",35),x("click",function(){return t.applyCssFix()}),c(62),r(),s(63,"button",36),x("click",function(){return t.copyToClickUp()}),c(64),r()()()),i&2&&(a(5),T("active",t.compactMode),d("title",t.compactMode?"Expand form":"Shorten form"),a(),S(" ",t.compactMode?"\u25A1":"\u2014"," "),a(4),d("ngIf",t.ctx),a(2),T("idle",t.liveAnalysisStatus==="idle")("waiting",t.liveAnalysisStatus==="waiting")("running",t.liveAnalysisStatus==="running")("ready",t.liveAnalysisStatus==="ready")("unavailable",t.liveAnalysisStatus==="unavailable"),a(2),C(t.statusLabel),a(),d("ngIf",t.hasActionableReportInput()),a(3),T("has-target",!!(t.hint!=null&&t.hint.selector))("has-errors",t.hasSelectorErrors),d("ngModel",t.selectorInput),a(),d("ngIf",t.selectorResults.length>0),a(2),T("cancel",t.pickingElement),a(),S(" ",t.pickingElement?"Cancel":t.targetElement?"Add another element":"Pick element"," "),a(),d("ngIf",t.targetElement),a(3),d("ngModel",t.bugContext),a(3),d("ngModel",t.expectedOutcome),a(3),H("ngModel",t.requiresLogin),a(4),H("ngModel",t.compareToProduction),a(4),H("ngModel",t.includeRecordedSteps),a(4),H("ngModel",t.acceptCookies),a(4),H("ngModel",t.useBranch),a(3),d("ngIf",t.useBranch),a(),d("ngIf",t.includeRecordedSteps),a(),d("ngIf",t.includeRecordedSteps&&t.interactionCount>0),a(),d("ngIf",t.hasActionableReportInput()),a(),d("ngIf",t.liveRelevantEntries.length>0),a(),d("ngIf",t.proposedFixes.length>0),a(),d("ngIf",t.fixApplied),a(),d("ngIf",t.fixApplied),a(),d("ngIf",t.lessonRecorded),a(2),d("disabled",t.proposedFixes.length===0),a(),S(" ",t.fixApplied?"Update fix":"Try CSS fix"," "),a(),T("copied",t.copyState==="copied"),a(),S(" ",t.copyState==="copied"?"Copied to clickup!":"Copy for ClickUp"," "))},dependencies:[le,ae,me,pe,de,ue,he],styles:[`@charset "UTF-8";ush-ai-bug-report{display:flex;position:fixed;right:12px;bottom:12px;flex-direction:column;z-index:999999;box-shadow:0 4px 24px #0006;border:1px solid #45475a;border-radius:12px;background:#1e1e2e;width:min(520px,100vw - 24px);height:calc(100vh - 24px);min-height:min(520px,100vh - 24px);max-height:calc(100vh - 24px);overflow:hidden;color:#cdd6f4;font-size:13px;font-family:system-ui,sans-serif}ush-ai-bug-report.compact{height:min(430px,100vh - 24px);min-height:min(360px,100vh - 24px)}ush-ai-bug-report.compact .interactions-list{flex-basis:clamp(140px,24vh,220px)}.bug-report-widget{display:flex;flex-direction:column;height:100%;min-height:0}.header{display:flex;justify-content:space-between;align-items:center;cursor:grab;border-radius:12px 12px 0 0;background:#313244;padding:12px 14px;-webkit-user-select:none;user-select:none}.header:active{cursor:grabbing}.header .header-title{font-weight:600}.header .header-actions{display:flex;align-items:center;gap:6px}.header .header-btn{cursor:pointer;border:none;border-radius:6px;background:none;padding:2px 6px;color:#cdd6f4;font-size:16px;line-height:1.2;font-family:inherit}.header .header-btn:hover,.header .header-btn.active{background:#45475a}.body-scroll{display:flex;flex:1;flex-direction:column;gap:10px;padding:14px;min-height:0;overflow-y:auto}.meta-row{display:flex;gap:8px;color:#a6adc8;font-size:11px}.meta-badge{border-radius:4px;background:#313244;padding:4px 8px}.meta-badge.branch-badge{background:#1f3a2a;color:#a6e3a1;font-weight:600}.field-label{color:#cba6f7;font-weight:600;font-size:12px}.field-label.expected-label{color:#f9e2af}.field-label.pick-label{color:#a6adc8}.target-input{box-sizing:border-box;border:1px solid #45475a;border-radius:8px;background:#313244;padding:8px 10px;color:#a6adc8;font-size:11px;
44font-family:Fira Code,Cascadia Code,monospace}.target-input.has-target{border-color:#89b4fa;color:#cba6f7}.target-input.has-errors{border-color:#f38ba8}.target-input::placeholder{color:#585b70;font-family:system-ui,sans-serif}.target-results{display:flex;flex-direction:column;gap:4px}.target-results .result-row{display:flex;flex-wrap:wrap;align-items:center;gap:4px 8px;transition:background .1s,border-color .1s,box-shadow .1s;cursor:pointer;border:1px solid #3b6f4a;border-radius:8px;background:#1e2a24;padding:6px 8px;font-size:10px}.target-results .result-row.invalid{cursor:default;border-color:#6f3b3b;background:#3a1e1e}.target-results .result-row.hovered:not(.invalid){box-shadow:0 0 8px #f9e2af40;border-color:#f9e2af;background:#2a2618}.target-results .result-row.active:not(.invalid){box-shadow:0 0 8px #52b78866;border-color:#52b788;background:#1e3a2f}.target-results .result-row.ambiguous:not(.invalid){border-color:#f9e2af}.target-results .result-row .result-icon{font-weight:700;font-size:12px}.result-row:not(.invalid) .target-results .result-row .result-icon{color:#a6e3a1}.result-row.invalid .target-results .result-row .result-icon{color:#f38ba8}.target-results .result-row .result-selector{color:#cba6f7;font-weight:600;
44font-family:Fira Code,Cascadia Code,monospace}.target-results .result-row .result-count{color:#a6e3a1}.target-results .result-row .result-count.match-many{color:#f9e2af;font-weight:600}.target-results .result-row .result-error{color:#f38ba8}.target-results .result-row .result-props{display:flex;flex-wrap:wrap;gap:2px 10px;margin-top:2px;width:100%}.target-results .result-row .result-props .prop-item{color:#a6e3a1}.target-results .result-row .result-props .prop-item:before{content:"\\25cf  ";color:#52b788}.target-results .result-row .result-remove{flex:0 0 auto;cursor:pointer;border:1px solid #585b70;border-radius:4px;background:transparent;padding:0 6px;color:#a6adc8;font-size:12px;line-height:1;font-family:inherit}.target-results .result-row .result-remove:hover{background:#45475a;color:#f38ba8}.target-results .result-row .result-narrow{flex:0 0 auto;cursor:pointer;border:1px solid #f9e2af;border-radius:4px;background:transparent;padding:1px 6px;color:#f9e2af;font-weight:600;font-size:10px;font-family:inherit}.target-results .result-row .result-narrow:hover{background:#f9e2af;color:#1e1e2e}.target-results .result-row .result-simplify{flex:0 0 auto;cursor:pointer;border:1px solid #89b4fa;border-radius:4px;background:transparent;padding:1px 6px;color:#89b4fa;font-weight:600;font-size:10px;font-family:inherit}.target-results .result-row .result-simplify:hover{background:#89b4fa;color:#1e1e2e}.target-controls{display:flex;flex-wrap:wrap;align-items:center;gap:6px}.target-controls .target-help{display:flex;align-items:center;gap:4px;color:#a6adc8;font-size:10px}.target-controls .target-clear{cursor:pointer;border:1px solid #585b70;border-radius:4px;background:transparent;padding:2px 6px;color:#a6adc8;font-size:10px;font-family:inherit}.target-controls .target-clear:hover{background:#45475a;color:#f38ba8}.input-textarea{box-sizing:border-box;border:1px solid #45475a;border-radius:8px;background:#313244;padding:8px 10px;width:100%;min-height:45px;resize:vertical;color:#cdd6f4;font-size:12px;font-family:inherit}.opts-row{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.toggle-row{display:flex;align-items:center;gap:8px;cursor:pointer;border:1px solid #45475a;border-radius:8px;background:#28283a;padding:8px 10px;min-width:0;color:#a6adc8;font-size:12px}.toggle-row input[type=checkbox]{flex:0 0 16px;appearance:none;-webkit-appearance:none;cursor:pointer;margin:0;border:1px solid #6c7086;border-radius:4px;background:#1e1e2e;width:16px;height:16px}.toggle-row input[type=checkbox]:checked{box-shadow:inset 0 0 0 3px #1e1e2e;border-color:#89b4fa;background:#89b4fa}.toggle-row span{min-width:0;color:#cdd6f4;line-height:1.2}.branch-row{display:flex;flex-direction:column;gap:4px}.branch-field{display:flex;flex-direction:column;gap:4px;border:1px solid #45475a;border-radius:8px;background:#28283a;padding:8px 10px;min-width:0}.branch-label{color:#a6adc8;font-size:11px;font-weight:600;letter-spacing:.02em}.input-text{box-sizing:border-box;border:1px solid #45475a;border-radius:6px;background:#1e1e2e;padding:6px 8px;width:100%;color:#cdd6f4;font-size:12px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace}.score-card{display:flex;flex-direction:column;gap:6px;border:1px solid #45475a;border-radius:8px;background:#28283a;padding:10px}.score-card .score-header{display:flex;align-items:center;gap:8px}.score-card .score-value{color:#b4befe;font-weight:700;font-size:14px}.score-card .score-verdict{color:#a6adc8;font-size:12px}.score-card .score-details{display:flex;flex-direction:column;gap:2px}.score-card .score-item{font-size:11px}.score-card .score-item.strength{color:#a6e3a1}.score-card .score-item.gap{color:#f38ba8}.lessons-card{display:flex;flex-direction:column;gap:6px;border:1px solid #45475a;border-radius:8px;background:#232336;padding:10px}.lessons-card .lessons-header{display:flex;align-items:center;gap:6px;color:#b4befe;font-weight:600;font-size:12px}.lessons-card .lessons-list{display:flex;flex-direction:column;gap:6px}.lessons-card .lesson-row{display:flex;flex-direction:column;gap:4px;border:1px solid #313244;border-radius:6px;background:#1e1e2e;padding:6px 8px}.lessons-card .lesson-row-meta{color:#a6adc8;font-size:11px}.lessons-card .lesson-app{color:#f9e2af;font-weight:600}.lessons-card .lesson-row-problem,.lessons-card .lesson-row-fix{display:flex;gap:6px;align-items:baseline;color:#cdd6f4;font-size:12px;line-height:1.35}.lessons-card .lesson-row-fix{color:#a6e3a1}.lessons-card .lesson-label{flex:0 0 auto;color:#6c7086;font-size:10.5px;font-weight:600;text-transform:uppercase;letter-spacing:.04em}.lessons-card .lesson-text{flex:1 1 auto;min-width:0}.lessons-card .lesson-row-actions{display:flex;flex-wrap:wrap;gap:6px;align-items:center}.lessons-card .lesson-apply-btn{align-self:flex-start;cursor:pointer;border:1px solid #585b70;border-radius:6px;background:#313244;padding:4px 10px;color:#cdd6f4;font-size:11px;font-family:inherit}.lessons-card .lesson-apply-btn:hover{background:#45475a}.lessons-card .lesson-apply-btn.primary{border-color:#89b4fa;background:#1e3a8a;color:#cdd6f4;font-weight:600}.lessons-card .lesson-apply-btn.primary:hover{background:#2547a8;border-color:#b4befe}.lessons-card .lesson-apply-btn.active{border-color:#52b788;background:#1e3a2f;color:#a6e3a1;cursor:default}.lessons-card .lesson-apply-btn.active:hover{background:#1e3a2f}
44.lessons-card .lesson-row-details{margin-top:4px;border-top:1px dashed #313244;padding-top:4px;font-size:11px}.lessons-card .lesson-row-details-summary{cursor:pointer;color:#89b4fa;font-size:11px;-webkit-user-select:none;user-select:none;list-style:none}.lessons-card .lesson-row-details-summary::-webkit-details-marker{display:none}.lessons-card .lesson-row-details-summary:before{content:"\\25b8";display:inline-block;margin-right:6px;transition:transform .15s}details[open]>.lessons-card .lesson-row-details-summary:before{transform:rotate(90deg)}.lessons-card .lesson-row-details-summary:hover{color:#b4befe}.lessons-card .lesson-row-details-body{display:flex;flex-direction:column;gap:6px;margin-top:6px}.lessons-card .lesson-detail-block{display:flex;flex-direction:column;gap:2px}.lessons-card .lesson-detail-header{display:flex;align-items:center;justify-content:space-between;gap:6px}.lessons-card .lesson-detail-actions{display:flex;flex-wrap:wrap;gap:4px;align-items:center}.lessons-card .lesson-detail-label{color:#6c7086;font-size:10.5px;font-weight:600;text-transform:uppercase;letter-spacing:.04em}.lessons-card .lesson-detail-text{margin:0;color:#bac2de;font-size:11.5px;line-height:1.4;white-space:pre-wrap}.lessons-card .lesson-detail-list{margin:0;padding-left:18px;color:#bac2de;font-size:11.5px;line-height:1.4}.lessons-card .lesson-detail-list li{margin:2px 0}.lessons-card .lesson-detail-pre{margin:0;border:1px solid #313244;border-radius:4px;background:#181825;padding:6px 8px;color:#cdd6f4;font-family:Menlo,Consolas,monospace;font-size:11px;line-height:1.4;overflow-x:auto;max-height:220px;white-space:pre}.lessons-card .lesson-copy-css-btn,.lessons-card .lesson-try-fix-btn{cursor:pointer;border:1px solid #585b70;border-radius:6px;background:#313244;padding:3px 8px;color:#cdd6f4;font-size:10.5px;font-family:inherit}.lessons-card .lesson-copy-css-btn:hover,.lessons-card .lesson-try-fix-btn:hover{background:#45475a}.lessons-card .lesson-copy-css-btn.active,.lessons-card .lesson-try-fix-btn.active{border-color:#52b788;background:#1e3a2f;color:#a6e3a1;cursor:default}.lessons-card .lesson-copy-css-btn.active:hover,.lessons-card .lesson-try-fix-btn.active:hover{background:#1e3a2f}.lessons-card .lesson-try-fix-btn{border-color:#89b4fa;color:#89b4fa}.lessons-card .lesson-try-fix-btn:hover{background:#1e3a8a;color:#cdd6f4}.proposed-fix-section{border:1px solid #45475a;border-radius:8px;background:#181825;padding:8px}.proposed-fix-section .fix-nav{display:flex;align-items:center;gap:6px}.proposed-fix-section .fix-label{flex:1;overflow:hidden;color:#a6adc8;font-size:11px;text-overflow:ellipsis;white-space:nowrap}.proposed-fix-section .fix-editor{box-sizing:border-box;margin:6px 0 0;border:1px solid #313244;border-radius:6px;background:#11111b;padding:8px;width:100%;min-height:80px;overflow-x:auto;resize:vertical;color:#a6e3a1;font-size:11px;
44font-family:Fira Code,Cascadia Code,monospace;white-space:pre;word-break:normal}.fix-result{display:flex;align-items:center;gap:6px}.fix-result .result-btn{flex:1;transition:all .15s;cursor:pointer;border:1px solid #45475a;border-radius:8px;padding:8px 10px;font-weight:600;font-size:12px;font-family:inherit}.fix-result .result-btn.fixed{border-color:#3b6f4a;background:#1e3a2f;color:#a6e3a1}.fix-result .result-btn.fixed.active{border-color:#52b788;background:#2d6a4f}.fix-result .result-btn.not-fixed{border-color:#6f3b3b;background:#3a1e1e;color:#f38ba8}.fix-result .result-btn.not-fixed.active{border-color:#b75252;background:#6a2d2d}.fix-result .remove-btn{cursor:pointer;border:1px solid #585b70;border-radius:8px;background:#313244;padding:8px 12px;color:#a6adc8;font-size:11px;font-family:inherit}.fix-result .remove-btn:hover{background:#45475a}.fix-result .fix-result-hint{flex-basis:100%;color:#a6adc8;font-size:10.5px;line-height:1.35}.fix-result .result-btn[disabled]{cursor:not-allowed;opacity:.55}.lesson-indicator{display:flex;align-items:center;gap:6px;border:1px solid #3b6f4a;border-radius:8px;background:#1e3a2f;padding:6px 10px;color:#a6e3a1;font-size:11px}.lesson-indicator .lesson-icon{flex:0 0 auto;color:#52b788;font-weight:700}.lesson-indicator .lesson-text{flex:1}.diff-card{display:flex;flex-direction:column;gap:6px;border:1px solid #45475a;border-radius:8px;background:#181825;padding:8px 10px}.diff-card .diff-header{display:flex;align-items:center;gap:6px;color:#89b4fa;font-weight:600;font-size:12px}.diff-card .diff-header .diff-icon{flex:0 0 auto}.diff-card .diff-subtitle{color:#a6adc8;font-size:10px;line-height:1.35}.diff-card .diff-list{display:flex;flex-direction:column;gap:2px}.diff-card .diff-row{display:flex;flex-wrap:wrap;align-items:center;gap:4px 8px;border-radius:4px;background:#11111b;padding:4px 6px;font-size:10px;
44font-family:Fira Code,Cascadia Code,monospace}.diff-card .diff-row .diff-key{color:#cba6f7;font-weight:600}.diff-card .diff-row .diff-before{color:#f38ba8}.diff-card .diff-row .diff-arrow{color:#a6adc8}.diff-card .diff-row .diff-after{color:#a6e3a1}.diff-card .diff-empty{display:flex;flex-direction:column;gap:2px;border-radius:4px;background:#11111b;padding:6px 8px;color:#a6adc8;font-size:10px;line-height:1.4}.diff-card .diff-empty-line{color:#f9e2af;font-weight:600}.diff-card .diff-empty-hint{color:#a6adc8}.status-bar{display:flex;align-items:center;gap:8px;border:1px solid #45475a;border-radius:8px;background:#28283a;padding:6px 10px;color:#a6adc8;font-size:11px}.status-bar .status-dot{flex:0 0 8px;border-radius:50%;width:8px;height:8px}.status-bar .status-dot.idle{background:#6c7086}.status-bar .status-dot.waiting{background:#f9e2af}.status-bar .status-dot.running{animation:pulse 1s infinite;background:#89b4fa}.status-bar .status-dot.ready{background:#a6e3a1}.status-bar .status-dot.unavailable{background:#f38ba8}.status-bar .status-text{flex:1}.status-bar .readiness-score{color:#b4befe;font-weight:700}@keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}.recording-row{display:flex;align-items:center;gap:8px;margin-top:4px}.recording-row .rec-btn{flex:1;cursor:pointer;border:1px solid #45475a;border-radius:6px;background:#313244;padding:6px 10px;color:#a6e3a1;font-size:11px;font-family:inherit}.recording-row .rec-btn.active{color:#f38ba8}.recording-row .rec-count{color:#585b70;font-size:10px}.interactions-list{display:flex;flex:0 0 clamp(180px,28vh,320px);flex-direction:column;gap:4px;margin-top:4px;min-height:0;max-height:320px;overflow:hidden}.interactions-list .interaction-toolbar{display:flex;flex:0 0 auto;flex-direction:column;gap:6px;border:1px solid #45475a;border-radius:6px;background:#181825;padding:6px}.interactions-list .interaction-filters{display:flex;flex-wrap:wrap;gap:4px}.interactions-list .interaction-chip{display:inline-flex;align-items:center;gap:4px;cursor:pointer;border:1px solid #45475a;border-radius:999px;background:#28283a;padding:2px 7px;max-width:100%;color:#a6adc8;font-size:10px;line-height:1.4;font-family:inherit}.interactions-list .interaction-chip.active{border-color:#89b4fa;background:#313244;color:#89b4fa}.interactions-list .interaction-chip .chip-count{border-radius:999px;background:#11111b;padding:0 5px;min-width:1.4em;color:#cdd6f4;text-align:center}.interactions-list .interaction-selection-actions{display:flex;gap:6px}.interactions-list .interaction-selection-actions button{cursor:pointer;border:1px solid #45475a;border-radius:5px;background:#28283a;padding:3px 7px;color:#a6adc8;font-size:10px;font-family:inherit}.interactions-list .interaction-selection-actions button:hover{border-color:#89b4fa;color:#cdd6f4}.interactions-list .interaction-items{display:flex;flex:1 1 auto;flex-direction:column;gap:3px;min-height:0;overflow-y:auto}.interactions-list .interaction-item{display:flex;align-items:center;gap:6px;border-radius:4px;background:#28283a;padding:3px 6px;color:#a6adc8;font-size:10px}.interactions-list .interaction-item.unselected{opacity:.55}.interactions-list .interaction-item .interaction-check{display:flex;flex:0 0 auto;align-items:center;gap:5px;cursor:pointer;min-width:0}.interactions-list .interaction-item input[type=checkbox]{flex:0 0 13px;appearance:none;-webkit-appearance:none;cursor:pointer;margin:0;border:1px solid #6c7086;border-radius:3px;background:#1e1e2e;width:13px;height:13px}.interactions-list .interaction-item input[type=checkbox]:checked{box-shadow:inset 0 0 0 2px #1e1e2e;border-color:#89b4fa;background:#89b4fa}.interactions-list .interaction-item .interaction-kind{flex:0 0 auto;color:#89b4fa;font-weight:600}.interactions-list .interaction-item .interaction-text{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.actions{display:flex;flex:0 0 auto;gap:8px;border-top:1px solid #45475a;background:#1e1e2e;padding:10px 14px 14px}.btn{flex:1;transition:background .15s;cursor:pointer;border:none;border-radius:8px;background:#45475a;padding:10px;color:#cdd6f4;font-weight:600;font-size:12px;font-family:inherit}.btn:hover{opacity:.9}.btn:disabled{opacity:.4;cursor:default}.btn.pick-btn.cancel{background:#f38ba8!important}.btn.try-fix-btn{flex:0 0 auto;padding:10px 12px}.btn.clickup-btn{transition:background .2s,transform .15s;background:#89b4fa;color:#1e1e2e}.btn.clickup-btn:hover{background:#74c7ec}
44.btn.clickup-btn.copied{animation:copyPop .3s ease;background:#a6e3a1}@keyframes copyPop{0%{transform:scale(1)}50%{transform:scale(1.05)}to{transform:scale(1)}}.btn.nav-btn{flex:0 0 auto;padding:4px 8px;font-size:14px}
45`],encapsulation:2,changeDetection:0})}}return o})();export{Vt as AiBugReportComponent};
46/**i18n:18e9021b3ed8bb1bf2a115baa1a2ba9da27ad714320e22a7a1f1c41f9160c0af*/

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.