PageSourceSearch

https://stenography.ai/chunk-5I2A4AAJ.js

js stenography.ai collected 2026-10-05 15:25:26 UTC 93,832 bytes, 1 lines download raw bytes

1import{a as fe,b as ve,c as be,d as Se,e as xe}from"./chunk-XU6KJMLD.js";import{a as Ie}from"./chunk-AZCXY5T2.js";import{n as me,q as H,r as he,t as _e}from"./chunk-S5I2EVF7.js";import{a as Ce}from"./chunk-JU4PPE6U.js";import{a as ge}from"./chunk-TOTLR3QA.js";import{d as ce}from"./chunk-T7225IML.js";import"./chunk-WB47LW5O.js";import{a as pe}from"./chunk-LJOMP4RP.js";import"./chunk-7MBOVGXP.js";import{a as ue}from"./chunk-WHDKGTGN.js";import{$a as oe,C as K,Da as ne,Ga as W,Ha as I,Ia as w,Ib as le,Ja as q,Ka as j,La as O,M as ee,Ma as k,Na as o,Oa as a,Pa as R,Sb as de,Ta as y,V as B,Va as C,X as _,Xa as m,Y as g,_a as re,a as f,ab as se,b,cb as N,da as T,db as V,ea as te,fb as c,gb as G,hb as M,ib as Y,o as X,oa as A,ob as ae,qa as p,r as z,tb as D,x as Z,za as ie}from"./chunk-OP5U5MM4.js";var Me=()=>[1,2,3,4,5,6,7],L=(s,t)=>t.id,ke=(s,t)=>t.themeId,De=(s,t)=>t.themeId+"-"+s,Qe=(s,t)=>t.startTime+"-"+t.endTime+"-"+t.textSnippet,je=(s,t)=>t.transcriptId;function Oe(s,t){if(s&1&&(o(0,"p",1),c(1),a()),s&2){let e=m();p(),G(e.sheetError())}}function ze(s,t){if(s&1&&(o(0,"p",2),c(1),a()),s&2){let e=m();p(),G(e.sheetNotice())}}function Ve(s,t){s&1&&R(0,"span",8)}function Ne(s,t){s&1&&(o(0,"ds-card")(1,"div",7),j(2,Ve,1,0,"span",8,q),a()()),s&2&&(p(2),O(ae(0,Me)))}function Re(s,t){if(s&1){let e=y();o(0,"ds-card",9)(1,"h3"),c(2,"No sheets yet"),a(),o(3,"p",10),c(4,"Create your first sheet to start transcript intelligence processing."),a(),o(5,"ds-button",11),C("click",function(){_(e);let n=m(2);return g(n.createSheet())}),c(6,"Create sheet"),a()()}}function Ae(s,t){if(s&1&&(o(0,"span",15),c(1),a()),s&2){let e=m(3);p(),M("",e.staleCellCount()," stale")}}function We(s,t){s&1&&(o(0,"small"),c(1,"Saving..."),a())}function Fe(s,t){s&1&&(o(0,"small"),c(1,"Loading sheet..."),a())}function Le(s,t){s&1&&(o(0,"div",19)(1,"div",38)(2,"span",33),c(3,"hourglass_top"),a(),o(4,"span"),c(5,"Loading sheet..."),a()()())}function Ue(s,t){if(s&1){let e=y();o(0,"button",40),C("click",function(){let n=_(e).$implicit,r=m(4);return g(r.toggleQuestionCollapse(n.themeId))}),c(1),a()}if(s&2){let e=t.$implicit;p(),M(" Expand: ",e.label," ")}}function Be(s,t){if(s&1&&(o(0,"div",23)(1,"span",14),c(2,"Collapsed themes"),a(),j(3,Ue,2,1,"button",39,ke),a()),s&2){let e=m(3);p(3),O(e.collapsedThemeGroups())}}function qe(s,t){if(s&1){let e=y();o(0,"button",46),C("click",function(){_(e);let n=m().$implicit,r=m(4);return g(r.toggleQuestionCollapse(n.themeId))}),o(1,"span",33),c(2),a()()}if(s&2){let e=m().$implicit;W("aria-label",e.isCollapsed?"Expand theme group":"Collapse theme group"),p(2),M(" ",e.isCollapsed?"chevron_right":"expand_more"," ")}}function $e(s,t){s&1&&R(0,"span",45)}function He(s,t){if(s&1&&(o(0,"div",27)(1,"div",43),I(2,qe,3,2,"button",44)(3,$e,1,0,"span",45),o(4,"strong"),c(5),a()()()),s&2){let e=t.$implicit;N("grid-column","span "+e.columnSpan),p(2),w(e.isCollapsible&&e.themeId!=="__ungrouped__"?2:3),p(3),G(e.label)}}function Xe(s,t){if(s&1&&(o(0,"div",41),R(1,"div",26),j(2,He,6,4,"div",42,De),a()),s&2){let e=m(3);N("grid-template-columns",e.gridTemplateColumns()),p(2),O(e.visibleThemeGroups())}}function Ke(s,t){if(s&1){let e=y();o(0,"div",27)(1,"div",43)(2,"strong"),c(3),a()(),o(4,"div",47)(5,"button",48),C("click",function(){let n=_(e).$implicit,r=m(3);return g(r.generateColumn(n.id))}),c(6,"Column"),a()(),o(7,"button",49),C("mousedown",function(n){let r=_(e).$implicit,l=m(3);return g(l.beginColumnResize(r.id,n))}),a()()}if(s&2){let e=t.$implicit;p(3),G(e.label)}}function Ye(s,t){if(s&1){let e=y();o(0,"button",60),C("click",function(n){_(e);let r=m().$implicit,l=m().$implicit,u=m(3);return g(u.openFirstCitationForCell(l.id,r.id,n))}),c(1),a()}if(s&2){let e=m().$implicit,i=m().$implicit,n=m(3);p(),Y(" ",n.cellCitationCount(i.id,e.id)," citation",n.cellCitationCount(i.id,e.id)===1?"":"s"," ")}}function Je(s,t){if(s&1){let e=y();o(0,"button",54),C("click",function(){let n=_(e).$implicit,r=m().$implicit,l=m(3);return g(l.openCellPanel(r.id,n.id))}),o(1,"span",55),c(2),a(),o(3,"span",56)(4,"span",57),c(5),a(),o(6,"span",58),c(7),a()(),I(8,Ye,2,2,"button",59),a()}if(s&2){let e=t.$implicit,i=m().$implicit,n=m(3);
1V("grid-data-cell--idle",n.cellStatus(i.id,e.id)==="idle")("grid-data-cell--processing",n.cellStatus(i.id,e.id)==="processing"||n.cellStatus(i.id,e.id)==="queued")("grid-data-cell--complete",n.cellStatus(i.id,e.id)==="complete")("grid-data-cell--error",n.cellStatus(i.id,e.id)==="error")("grid-data-cell--stale",n.cellStatus(i.id,e.id)==="stale"),p(2),G(n.cellPreview(i.id,e.id)),p(3),G(n.cellStatus(i.id,e.id)),p(2),G(n.cellLastUpdatedLabel(i.id,e.id)),p(),w(n.cellCitationCount(i.id,e.id)>0?8:-1)}}function Ze(s,t){if(s&1){let e=y();o(0,"div",50)(1,"div",51)(2,"div",52)(3,"strong"),c(4),a(),o(5,"small"),c(6),a(),o(7,"button",48),C("click",function(){let n=_(e).$implicit,r=m(3);return g(r.generateRow(n.id))}),c(8,"Row"),a()()(),j(9,Je,9,14,"button",53,L),a()}if(s&2){let e=t.$implicit,i=m(3);N("grid-template-columns",i.gridTemplateColumns()),p(4),G(e.name),p(2),G(i.respondentUploadDateLabel(e.transcriptId)),p(3),O(i.visibleQuestionColumns())}}function et(s,t){s&1&&(o(0,"p",10),c(1,"No citations available for this cell."),a())}function tt(s,t){if(s&1){let e=y();o(0,"button",75),C("click",function(){let n=_(e).$implicit,r=m(5);return g(r.openCitationDialog(r.selectedCellRef().respondentId,r.selectedCellRef().questionId,n))}),o(1,"strong"),c(2),a(),o(3,"p"),c(4),a()()}if(s&2){let e=t.$implicit,i=m(5);p(2),G(i.formatCitationRange(e.startTime,e.endTime)),p(2),G(e.textSnippet)}}function it(s,t){if(s&1&&(o(0,"div",73),j(1,tt,5,2,"button",74,Qe),a()),s&2){let e=m(4);p(),O(e.selectedCell().citations)}}function nt(s,t){if(s&1){let e=y();o(0,"div",61),C("click",function(n){_(e);let r=m(3);return g(r.onCellPanelBackdropClick(n))})("keydown.escape",function(){_(e);let n=m(3);return g(n.closeCellPanel())}),o(1,"aside",62)(2,"header",63)(3,"div")(4,"h4"),c(5),a(),o(6,"p"),c(7),a()(),o(8,"button",64),C("click",function(){_(e);let n=m(3);return g(n.closeCellPanel())}),o(9,"span",33),c(10,"close"),a()()(),o(11,"div",65)(12,"span",14),c(13),a(),o(14,"span",14),c(15),a(),o(16,"span",14),c(17),a()(),o(18,"div",66)(19,"ds-button",67),C("click",function(){_(e);let n=m(3);return g(n.regenerateSelectedCell())}),c(20," Regenerate "),a(),o(21,"ds-button",68),C("click",function(){_(e);let n=m(3);return g(n.toggleSelectedCellEditMode())}),c(22),a(),o(23,"ds-button",69),C("click",function(){_(e);let n=m(3);return g(n.saveManualCellEdit())}),c(24," Save "),a()(),o(25,"label",70)(26,"span"),c(27,"Answer"),a(),o(28,"textarea",71),C("input",function(n){_(e);let r=m(3);return g(r.onSelectedCellEditorInput(n))}),a()(),o(29,"section",72)(30,"h5"),c(31,"Citations"),a(),I(32,et,2,0,"p",10)(33,it,3,0,"div",73),a()()()}if(s&2){let e,i,n,r,l,u,d=m(3);p(5),G((e=d.selectedCellRespondent())==null?null:e.name),p(2),G((i=d.selectedCellQuestion())==null?null:i.label),p(6),M("Status: ",((n=d.selectedCell())==null?null:n.status)??"idle"),p(2),M("Updated: ",((r=d.selectedCell())==null?null:r.lastUpdated)||((r=d.selectedCell())==null?null:r.updatedAt)||"never"),p(2),M("Manual: ",(l=d.selectedCell())!=null&&l.manuallyEdited||(l=d.selectedCell())!=null&&l.isManuallyEdited?"yes":"no"),p(5),M(" ",d.selectedCellEditMode()?"Cancel Edit":"Edit"," "),p(),k("disabled",!d.selectedCellEditMode()),p(5),k("readOnly",!d.selectedCellEditMode())("value",d.selectedCellEditorText()),p(4),w(!((u=d.selectedCell())==null||u.citations==null)&&u.citations.length?33:32)}}function rt(s,t){if(s&1){let e=y();o(0,"div",76)(1,"button",77),C("click",function(){let n=_(e).$implicit,r=m(3);return g(r.openSheet(n.id))}),o(2,"span"),c(3),a()(),o(4,"button",78),C("click",function(n){let r=_(e).$implicit,l=m(3);return g(l.toggleSheetTabMenu(r.id,n))}),o(5,"span",33),c(6,"more_horiz"),a()()()}if(s&2){let e,i,n,r=t.$implicit,l=m(3);V("grid-sheet-tab-item--active",((e=l.activeSheet())==null?null:e.id)===r.id),p(),V("grid-sheet-tab--active",((i=l.activeSheet())==null?null:i.id)===r.id),W("aria-selected",((n=l.activeSheet())==null?null:n.id)===r.id?"true":"false"),p(2),G(r.name),p(),W("aria-expanded",l.isSheetTabMenuOpen(r.id)?"true":"false")}}function ot(s,t){if(s&1){let e=y();o(0,"div",79)(1,"button",80),C("click",function(){let n=_(e),r=m(3);return g(r.openEditSheetDialog(n.sheetId))}
1),c(2,"Edit"),a(),o(3,"button",80),C("click",function(){let n=_(e),r=m(3);return g(r.duplicateActiveSheet(n.sheetId))}),c(4,"Duplicate"),a(),o(5,"button",81),C("click",function(){let n=_(e),r=m(3);return g(r.deleteActiveSheet(n.sheetId))}),c(6,"Delete"),a()()}if(s&2){let e=t;N("position","fixed")("top",e.top,"px")("left",e.left,"px")("right","auto")("bottom","auto")("transform","none")("z-index",60)}}function st(s,t){if(s&1){let e=y();o(0,"div",37)(1,"div",82)(2,"header",83)(3,"div")(4,"h3"),c(5,"Delete sheet?"),a(),o(6,"p"),c(7,"This action cannot be undone."),a()(),o(8,"button",84),C("click",function(){_(e);let n=m(3);return g(n.closeDeleteSheetDialog())}),o(9,"span",33),c(10,"close"),a()()(),o(11,"p",85),c(12),a(),o(13,"footer",86)(14,"ds-button",87),C("click",function(){_(e);let n=m(3);return g(n.closeDeleteSheetDialog())}),c(15," Cancel "),a(),o(16,"button",88),C("click",function(){_(e);let n=m(3);return g(n.confirmDeleteSheet())}),c(17),a()()()()}if(s&2){let e=m(3);p(8),k("disabled",e.isDeletingSheet()),p(4),M('Delete "',t.sheetName,'" and all of its generated cells?'),p(2),k("disabled",e.isDeletingSheet()),p(2),k("disabled",e.isDeletingSheet()),p(),M(" ",e.isDeletingSheet()?"Deleting...":"Delete Sheet"," ")}}function at(s,t){if(s&1){let e=y();o(0,"div",12)(1,"div",13)(2,"span",14),c(3),a(),o(4,"span",14),c(5),a(),o(6,"span",14),c(7),a(),o(8,"span",14),c(9),a(),I(10,Ae,2,1,"span",15),o(11,"span",14),c(12),a()(),o(13,"div",16),I(14,We,2,0,"small"),I(15,Fe,2,0,"small"),a()(),o(16,"div",17)(17,"div",18),I(18,Le,6,0,"div",19),o(19,"div",20)(20,"div",21)(21,"div",22),I(22,Be,5,0,"div",23),I(23,Xe,4,2,"div",24),o(24,"div",25),R(25,"div",26),j(26,Ke,8,1,"div",27,L),a()(),o(28,"cdk-virtual-scroll-viewport",28),ne(29,Ze,11,4,"div",29),a()()()(),I(30,nt,34,10,"div",30),o(31,"footer",31)(32,"button",32),C("click",function(){_(e);let n=m(2);return g(n.createSheet())}),o(33,"span",33),c(34,"add"),a()(),o(35,"div",34),j(36,rt,7,7,"div",35,L),a()(),I(38,ot,7,14,"div",36),I(39,st,18,5,"div",37),a()}if(s&2){let e,i,n=m(2);p(3),M("",n.activeSheet().respondents.length," respondents"),p(2),M("",n.answerableQuestionCount()," questions"),p(2),M("",n.themeCount()," themes"),p(2),M("",n.activeSheet().cells.length," cells"),p(),w(n.staleCellCount()>0?10:-1),p(2),M("",n.generationInFlightCount()," processing"),p(2),w(n.isPersisting()?14:-1),p(),w(n.isSheetLoading()?15:-1),p(2),V("grid-workspace--loading",n.isSheetLoading()),p(),w(n.isSheetLoading()?18:-1),p(),W("aria-busy",n.isSheetLoading()?"true":"false"),p(),N("width",n.gridWidthPx(),"px"),p(2),w(n.collapsedThemeGroups().length>0?22:-1),p(),w(n.visibleThemeGroups().length>0?23:-1),p(),N("grid-template-columns",n.gridTemplateColumns()),p(2),O(n.visibleQuestionColumns()),p(2),k("itemSize",72)("minBufferPx",420)("maxBufferPx",760),p(),k("cdkVirtualForOf",n.orderedRespondents())("cdkVirtualForTrackBy",n.trackRespondent),p(),w(n.selectedCellRef()?30:-1),p(6),O(n.orderedSheetSummaries()),p(2),w((e=n.openSheetTabMenu())?38:-1,e),p(),w((i=n.deleteSheetDialog())?39:-1,i)}}function lt(s,t){if(s&1&&I(0,Re,7,0,"ds-card",9)(1,at,40,26),s&2){let e=m();w(e.activeSheet()?1:0)}}function dt(s,t){if(s&1){let e=y();o(0,"button",103),C("click",function(){let n=_(e).$implicit,r=m(4);return g(r.toggleWizardSegment(n))}),c(1),a()}if(s&2){let e=t.$implicit,i=m(4);V("tag--selected",i.sheetWizardDraft().segments.includes(e)),p(),M(" ",e," ")}}function ct(s,t){if(s&1&&(o(0,"small"),c(1,"Select the respondent groups this sheet should process."),a(),o(2,"div",101),j(3,dt,2,3,"button",102,q),a()),s&2){let e=m(3);p(3),O(e.knownSegmentCatalog())}}function ut(s,t){s&1&&(o(0,"small"),c(1,"No respondent groups configured on this project yet."),a())}function pt(s,t){if(s&1){let e=y();o(0,"div",92)(1,"label",98)(2,"span"),c(3,"Name"),a(),o(4,"input",99),C("input",function(n){_(e);let r=m(2);return g(r.onWizardNameInput(n))}),a()(),o(5,"label",98)(6,"span"),c(7,"Description (optional)"),a(),o(8,"textarea",100),C("input",function(n){_(e);let r=m(2);return g(r.onWizardDescriptionInput(n))}),a()(),o(9,"div",98)(10,"span"),c(11,"Respondent groups"),a(),I(12,ct,5,0)(13,ut,2,0,"small"),a()()}if(s&2){let e=m(2);p(4),k("value",e.sheetWizardDraft().name),p(4),k("value",e.sheetWizardDraft().description),p(4),w(e.knownSegmentCatalog().length>0?12:13)}}function mt(s,t){s&1&&(o(0,"p",10),c(1,"No interview sections yet. Add one manually or upload a guide."),a())}function ht(s,t){if(s&1){let e=y();o(0,"button",46),C("click",function(){_(e);let n=m().$implicit,r=m(4);return g(r.toggleQuestionCollapse(n.id))}),o(1,"span",33),c(2),a()()}if(s&2){let e=m().$implicit,i=m(4);W("aria-label",i.isQuestionCollapsed(e.id)?"Expand":"Collapse"),p(2),M(" ",i.isQuestionCollapsed(e.id)?"chevron_right":"exp
1and_more"," ")}}function _t(s,t){s&1&&R(0,"span",45)}function gt(s,t){if(s&1){let e=y();o(0,"button",48),C("click",function(){_(e);let n=m().$implicit,r=m(4);return g(r.addChildQuestion(n.id))}),c(1,"Add question"),a()}}function Ct(s,t){if(s&1){let e=y();o(0,"div",111)(1,"button",112)(2,"span",33),c(3,"drag_indicator"),a()(),I(4,ht,3,2,"button",44)(5,_t,1,0,"span",45),o(6,"input",113),C("input",function(n){let r=_(e).$implicit,l=m(4);return g(l.onQuestionLabelInput(r.id,n))}),a(),o(7,"span",114),c(8),a(),o(9,"div",115)(10,"button",48),C("click",function(){let n=_(e).$implicit,r=m(4);return g(r.addSiblingQuestion(n.id))}),c(11),a(),I(12,gt,2,0,"button",116),o(13,"button",117),C("click",function(){let n=_(e).$implicit,r=m(4);return g(r.deleteQuestion(n.id))}),o(14,"span",33),c(15,"delete"),a()()()()}if(s&2){let e=t.$implicit,i=m(4);N("padding-left",(e.depth-1)*18,"px"),p(4),w(e.hasChildren?4:5),p(2),k("value",e.label),p(2),G(i.guideHierarchyLabel(e)),p(3),M(" ",i.guideSiblingActionLabel(e)," "),p(),w(i.canAddGuideChild(e)?12:-1)}}function ft(s,t){if(s&1&&j(0,Ct,16,7,"div",110,L),s&2){let e=m(3);O(e.orderedQuestions())}}function vt(s,t){if(s&1){let e=y();o(0,"div",93)(1,"header",104)(2,"p"),c(3,"Structure your guide as interview sections, then questions/subquestions nested one level deep."),a(),o(4,"label",105)(5,"input",106),C("change",function(n){_(e);let r=m(2);return g(r.onGuideUploadSelected(n))}),a(),o(6,"span",33),c(7,"upload"),a(),c(8," Upload guide "),a()(),o(9,"div",107)(10,"input",108),C("input",function(n){_(e);let r=m(2);return g(r.onRootQuestionInput(n))}),a(),o(11,"ds-button",11),C("click",function(){_(e);let n=m(2);return g(n.addRootQuestion())}),c(12,"Add Section"),a()(),o(13,"p",10),c(14,"Add interview sections first, then add questions/subquestions inside each section. Depth limit: 2."),a(),o(15,"div",109),C("cdkDropListDropped",function(n){_(e);let r=m(2);return g(r.onQuestionDrop(n))}),I(16,mt,2,0,"p",10)(17,ft,2,0),a()()}if(s&2){let e=m(2);p(10),k("value",e.pendingRootQuestionLabel()),p(5),k("cdkDropListData",e.orderedQuestions()),p(),w(e.orderedQuestions().length===0?16:17)}}function bt(s,t){if(s&1&&(o(0,"div",121),c(1),a()),s&2){let e=t.$implicit;N("padding-left",(e.depth-1)*20,"px"),p(),M(" ",e.label," ")}}function St(s,t){if(s&1&&(o(0,"div",92)(1,"dl",118)(2,"div")(3,"dt"),c(4,"Name"),a(),o(5,"dd"),c(6),a()(),o(7,"div")(8,"dt"),c(9,"Description"),a(),o(10,"dd"),c(11),a()(),o(12,"div")(13,"dt"),c(14,"Respondent groups"),a(),o(15,"dd"),c(16),a()(),o(17,"div")(18,"dt"),c(19,"Guide Nodes"),a(),o(20,"dd"),c(21),a()()(),o(22,"div",119),j(23,bt,2,3,"div",120,L),a()()),s&2){let e=m(2);p(6),G(e.sheetWizardDraft().name),p(5),G(e.sheetWizardDraft().description||"No description"),p(5),G(e.sheetWizardDraft().segments.length?e.sheetWizardDraft().segments.join(", "):"No respondent groups selected"),p(5),G(e.sheetWizardDraft().discussionGuide.length),p(2),O(e.orderedQuestions())}}function xt(s,t){if(s&1){let e=y();o(0,"ds-button",122),C("click",function(){_(e);let n=m(2);return g(n.goToPreviousWizardStep())}),c(1,"Back"),a()}}function It(s,t){if(s&1){let e=y();o(0,"ds-button",123),C("click",function(){_(e);let n=m(2);return g(n.goToNextWizardStep())}),c(1,"Continue"),a()}}function wt(s,t){if(s&1){let e=y();o(0,"ds-button",124),C("click",function(){_(e);let n=m(2);return g(n.createSheetFromWizard())}),c(1,"Create Sheet"),a()}}function Tt(s,t){if(s&1){let e=y();o(0,"div",3)(1,"div",89)(2,"header",83)(3,"div")(4,"h3"),c(5,"Create Insight Sheet"),a(),o(6,"p"),c(7),a()(),o(8,"button",90),C("click",function(){_(e);let n=m();return g(n.closeCreateSheetWizard())}),o(9,"span",33),c(10,"close"),a()()(),o(11,"div",91)(12,"span"),c(13,"1. Metadata"),a(),o(14,"span"),c(15,"2. Discussion Guide"),a(),o(16,"span"),c(17,"3. Review"),a()(),I(18,pt,14,3,"div",92),I(19,vt,18,3,"div",93),I(20,St,25,4,"div",92),o(21,"footer",86)(22,"ds-button",94),C("click",function(){_(e);let n=m();return g(n.closeCreateSheetWizard())}),c(23,"Cancel"),a(),I(24,xt,2,0,"ds-button",95),I(25,It,2,0,"ds-button",96)(26,wt,2,0,"ds-button",97),a()()()}if(s&2){let e=m();p(7),M("Step ",e.sheetWizardStep()," of 3"),p(5),V("wizard-stepper__step--active",e.sheetWizardStep()>=1),p(2),V("wizard-stepper__step--active",e.sheetWizardStep()>=2),p(2),V("wizard-stepper__step--active",e.sheetWizardStep()>=3),p(2),w(e.sheetWizardStep()===1?18:-1),p(),w(e.sheetWizardStep()===2?19:-1),p(),w(e.sheetWizardStep()===3?20:-1),p(4),w(e.sheetWizardStep()>1?24:-1),p(),w(e.sheetWizardStep()<3?25:26)}}function yt(s,t){if(s&1){let e=y();o(0,"button",103),C("click",function(){let n=_(e).$implicit,r=m(4);return g(r.toggleEditSheetSegment(n))}),c(1),a()}if(s&2){let e=t.$implicit,i=m(2);V("tag--selected",i.segments.includes(e)),p(),M(" ",e," ")}}function Et(s,t){if(s&1&&(o(0,"small"),c(1,"Select the respondent groups this sheet should process."),a(),o(2,"div",101),j(3,yt,2,3,"button",102,q),a()),s&2){let e=m(3);p(3),O(e.knownSegmentCatalog())}}function Pt(s,t){s&1&&(o(0,"small"),c(1,"No respondent groups configured on this project yet."),a())}function Gt(s,t){if(s&1){let e=y();o(0,"div",125)(1,"div",126)(2,"header",83)(3,"div")(4,"h3"),c(5,"Edit Sheet"),a(),o(6,"p"),c(7,"Update metadata and respondent groups used for automatic transcript row matching."),a()(),o(8,"button",127),C("click",function(){_(e);let n=m(2);return g(n.closeEditSheetDialog())}),o(9,"span",33),c(10,"close"),a()()(),o(11,"div",92)(12,"label",98)(13,"span"),c(14,"Name"),a(),o(15,"input",99),C("input",function(n){_(e);let r=m(2);return g(r.onEditSheetNameInput(n))}),a()(),o(16,"label",98)(17,"span"),c(18,"Description (optional)"),a(),o(19,"textarea",100),C("input",function(n){_(e);let r=m(2);return g(r.onEditSheetDescriptionInput(n))}),a()(),o(20,"div",98)(21,"span"),c(22,"Discussion Guide"),a(),o(23,"small"),c(24,"Guide edits open in the dedicated full-page editor for this sheet."),a(),o(25,"ds-button",128),C("click",function(){_(e);let n=m(2);return g(n.openGuideEditorFromEditSheetDialog())}),c(26," Modify Guide "),a()(),o(27,"div",98)(28,"span"),c(29,"Respondent groups"),a(),I(30,Et,5,0)(31,Pt,2,0,"small"),a()(),o(32,"footer",86)(33,"ds-button",94),C("click",function(){_(e);let n=m(2);return g(n.closeEditSheetDialog())}),c(34,"Cancel"),a(),o(35,"ds-button",129),C("click",function(){_(e);let n=m(2);return g(n.saveEditSheetDialog())}),c(36,"Save Changes"),a()()()()}if(s&2){let e=t,i=m(2);
1p(15),k("value",e.name),p(4),k("value",e.description),p(11),w(i.knownSegmentCatalog().length>0?30:31)}}function Mt(s,t){if(s&1&&I(0,Gt,37,3,"div",125),s&2){let e,i=m();w((e=i.editSheetDraft())?0:-1,e)}}function kt(s,t){s&1&&(o(0,"p",10),c(1,"No interview sections yet. Add one manually or upload a guide."),a())}function Dt(s,t){if(s&1){let e=y();o(0,"button",46),C("click",function(){_(e);let n=m().$implicit,r=m(3);return g(r.toggleQuestionCollapse(n.id))}),o(1,"span",33),c(2),a()()}if(s&2){let e=m().$implicit,i=m(3);W("aria-label",i.isQuestionCollapsed(e.id)?"Expand":"Collapse"),p(2),M(" ",i.isQuestionCollapsed(e.id)?"chevron_right":"expand_more"," ")}}function Qt(s,t){s&1&&R(0,"span",45)}function jt(s,t){if(s&1){let e=y();o(0,"button",48),C("click",function(){_(e);let n=m().$implicit,r=m(3);return g(r.addChildQuestion(n.id))}),c(1,"Add question"),a()}}function Ot(s,t){if(s&1){let e=y();o(0,"div",111)(1,"button",112)(2,"span",33),c(3,"drag_indicator"),a()(),I(4,Dt,3,2,"button",44)(5,Qt,1,0,"span",45),o(6,"input",113),C("input",function(n){let r=_(e).$implicit,l=m(3);return g(l.onQuestionLabelInput(r.id,n))}),a(),o(7,"span",114),c(8),a(),o(9,"div",115)(10,"button",48),C("click",function(){let n=_(e).$implicit,r=m(3);return g(r.addSiblingQuestion(n.id))}),c(11),a(),I(12,jt,2,0,"button",116),o(13,"button",117),C("click",function(){let n=_(e).$implicit,r=m(3);return g(r.deleteQuestion(n.id))}),o(14,"span",33),c(15,"delete"),a()()()()}if(s&2){let e=t.$implicit,i=m(3);N("padding-left",(e.depth-1)*18,"px"),p(4),w(e.hasChildren?4:5),p(2),k("value",e.label),p(2),G(i.guideHierarchyLabel(e)),p(3),M(" ",i.guideSiblingActionLabel(e)," "),p(),w(i.canAddGuideChild(e)?12:-1)}}function zt(s,t){if(s&1&&j(0,Ot,16,7,"div",110,L),s&2){let e=m(2);O(e.orderedQuestions())}}function Vt(s,t){if(s&1){let e=y();o(0,"div",4)(1,"div",130)(2,"header",83)(3,"div")(4,"h3"),c(5,"Discussion Guide Editor"),a(),o(6,"p"),c(7,"Guide edits are isolated from the grid and applied on save."),a()(),o(8,"button",131),C("click",function(){_(e);let n=m();return g(n.closeDiscussionGuideEditor())}),o(9,"span",33),c(10,"close"),a()()(),o(11,"div",132)(12,"strong"),c(13,"Warning:"),a(),c(14," Removing questions will remove related generated cells. "),a(),o(15,"div",93)(16,"header",104)(17,"p"),c(18,"Structure your guide as interview sections, then questions/subquestions nested one level deep."),a(),o(19,"label",105)(20,"input",106),C("change",function(n){_(e);let r=m();return g(r.onGuideUploadSelected(n))}),a(),o(21,"span",33),c(22,"upload"),a(),c(23," Upload guide "),a()(),o(24,"div",107)(25,"input",108),C("input",function(n){_(e);let r=m();return g(r.onRootQuestionInput(n))}),a(),o(26,"ds-button",11),C("click",function(){_(e);let n=m();return g(n.addRootQuestion())}),c(27,"Add Section"),a()(),o(28,"p",10),c(29,"Add interview sections first, then add questions/subquestions inside each section. Depth limit: 2."),a(),o(30,"div",109),C("cdkDropListDropped",function(n){_(e);let r=m();return g(r.onQuestionDrop(n))}),I(31,kt,2,0,"p",10)(32,zt,2,0),a()(),o(33,"footer",86)(34,"ds-button",94),C("click",function(){_(e);let n=m();return g(n.closeDiscussionGuideEditor())}),c(35,"Cancel"),a(),o(36,"ds-button",129),C("click",function(){_(e);let n=m();return g(n.saveDiscussionGuideEditor())}),c(37,"Save Guide"),a()()()()}if(s&2){let e=m();p(25),k("value",e.pendingRootQuestionLabel()),p(5),k("cdkDropListData",e.orderedQuestions()),p(),w(e.orderedQuestions().length===0?31:32)}}function Nt(s,t){if(s&1){let e=y();o(0,"button",103),C("click",function(){let n=_(e).$implicit,r=m().$implicit,l=m(2);return g(l.toggleTranscriptSegmentDraft(r.transcriptId,n))}),c(1),a()}if(s&2){let e=t.$implicit,i=m().$implicit,n=m(2);V("tag--selected",n.transcriptDraftHasSegment(i.transcriptId,e)),p(),M(" ",e," ")}}function Rt(s,t){if(s&1){let e=y();o(0,"article",135)(1,"header")(2,"strong"),c(3),a(),o(4,"small"),c(5),a()(),o(6,"input",136),C("input",function(n){let r=_(e).$implicit,l=m(2);return g(l.onTranscriptSegmentInput(r.transcriptId,n))}),a(),o(7,"div",101),j(8,Nt,2,3,"button",102,q),a()()}if(s&2){let e=t.$implicit,i=m(2);
1p(3),G(e.name),p(2),G(e.transcriptId),p(),k("value",i.transcriptSegmentDraftById()[e.transcriptId]),p(2),O(i.knownSegmentCatalog())}}function At(s,t){if(s&1){let e=y();o(0,"div",5)(1,"div",126)(2,"header",83)(3,"div")(4,"h3"),c(5,"Transcript Respondent Group Mapping"),a(),o(6,"p"),c(7,"Assign respondent groups to transcripts. Matching groups auto-create rows for this sheet."),a()(),o(8,"button",133),C("click",function(){_(e);let n=m();return g(n.closeTranscriptSegmentDialog())}),o(9,"span",33),c(10,"close"),a()()(),o(11,"div",134),j(12,Rt,10,3,"article",135,je),a(),o(14,"footer",86)(15,"ds-button",94),C("click",function(){_(e);let n=m();return g(n.closeTranscriptSegmentDialog())}),c(16,"Cancel"),a(),o(17,"ds-button",129),C("click",function(){_(e);let n=m();return g(n.saveTranscriptSegmentDialog())}),c(18,"Save Mapping"),a()()()()}if(s&2){let e=m();p(12),O(e.availableRespondents())}}function Wt(s,t){if(s&1&&R(0,"audio",141),s&2){let e=m();k("src",e.playbackUrl)}}function Ft(s,t){s&1&&(o(0,"p",10),c(1,"Loading transcript context..."),a())}function Lt(s,t){if(s&1&&(o(0,"p",143),c(1),a()),s&2){let e=m();p(),G(e.errorMessage)}}function Ut(s,t){s&1&&(o(0,"p",10),c(1,"No transcript chunks available."),a())}function Bt(s,t){if(s&1&&(o(0,"article",146)(1,"header")(2,"strong"),c(3),a(),o(4,"span"),c(5),a()(),o(6,"p"),c(7),a()()),s&2){let e=t.$implicit,i=m(2),n=m();V("citation-chunk--highlight",n.isCitationChunkHighlighted(e,i.citation)),k("id",n.getCitationChunkDomId(e.id)),p(3),G(e.speaker||"Speaker"),p(2),G(n.formatCitationRange(e.startTime,e.endTime)),p(2),G(e.text)}}function qt(s,t){if(s&1&&(o(0,"div",144),j(1,Bt,8,6,"article",145,L),a()),s&2){let e=m();p(),O(e.chunks)}}function $t(s,t){if(s&1){let e=y();o(0,"div",6)(1,"div",137)(2,"header",83)(3,"div")(4,"h3"),c(5,"Citation Detail"),a(),o(6,"p"),c(7),a()(),o(8,"button",138),C("click",function(){_(e);let n=m();return g(n.closeCitationDialog())}),o(9,"span",33),c(10,"close"),a()()(),o(11,"div",139)(12,"section",140)(13,"h4"),c(14,"Generated Answer"),a(),o(15,"p"),c(16),a(),o(17,"h5"),c(18,"Citation Metadata"),a(),o(19,"p"),c(20),a(),o(21,"p"),c(22),a(),I(23,Wt,1,1,"audio",141),a(),o(24,"section",142)(25,"h4"),c(26,"Transcript Context"),a(),I(27,Ft,2,0,"p",10)(28,Lt,2,1,"p",143)(29,Ut,2,0,"p",10)(30,qt,3,0,"div",144),a()()()()}if(s&2){let e=t,i=m();p(7),Y("",e.respondentName," - ",e.questionLabel),p(9),G(e.answer||"No answer text available."),p(4),G(i.formatCitationRange(e.citation.startTime,e.citation.endTime)),p(2),G(e.citation.textSnippet),p(),w(e.playbackUrl?23:-1),p(4),w(e.loading?27:e.errorMessage?28:e.chunks.length?30:29)}}var F=2,we=320,Ht=190,Xt=520,Te=300,J=4,ye=3e4,Ee=5e3,Kt=1e4,Yt=176,Jt=132,Zt=8,Pe=class s{route=B(de);authService=B(ce);gridService=B(Ie);projectService=B(ge);transcriptService=B(Ce);projectId="";transcriptChunksByUploadId=new Map;uploadRevisionByTranscriptId=T({});projectRouteSubscription=null;uploadsPollingSubscription=null;persistTimer=null;persistInFlight=!1;persistPending=!1;viewportRefreshTimer=null;gridProgressPollTimer=null;gridProgressPollInFlight=!1;gridViewport;resizingQuestionId=null;resizeStartX=0;resizeStartWidth=we;isLoading=T(!0);isSheetLoading=T(!1);isPersisting=T(!1);sheetError=T(null);sheetNotice=T(null);sheetSummaries=T([]);activeSheet=T(null);availableRespondents=T([]);projectRespondentGroups=T([]);pendingRootQuestionLabel=T("");selectedCellRef=T(null);selectedCellEditorText=T("");selectedCellEditMode=T(!1);generationInFlightCount=T(0);questionColumnWidthById=T({});openSheetTabMenu=T(null);editSheetDialogOpen=T(!1);editSheetDraft=T(null);pendingEditSheetSegmentInput=T("");deleteSheetDialog=T(null);isDeletingSheet=T(!1);sheetWizardOpen=T(!1);sheetWizardStep=T(1);sheetWizardCollapsedIds=T([]);sheetWizardDraft=T({name:"",description:"",segments:[],discussionGuide:[]});pendingWizardSegmentInput=T("");sheetGuideEditorOpen=T(!1);sheetGuideEditorNodes=T([]);sheetGuideEditorCollapsedIds=T([]);sheetGuideEditorOriginQuestionIds=T([]);transcriptSegmentDialogOpen=T(!1);transcriptSegmentDraftById=T({});citationDialog=T(null);gridProgressPollEffect=te(()=>{let t=this.activeSheet();if(this.hasInProgressCells(t)){this.ensureGridProgressPolling();return}this.stopGridProgressPolling()});currentUserId=D(()=>this.authService.userSnapshot?.id?.trim()??"");orderedSheetSummaries=D(()=>[...this.sheetSummaries()].sort((t,e)=>t.tabOrder-e.tabOrder||e.updatedAt.localeCompare(t.updatedAt)));knownSegmentCatalog=D(()=>{let t=this.projectRespondentGroups(),e=this.sheetWizardDraft().segments,i=this.editSheetDraft()?.segments??[],n=[...t,...e,...i];return Array.from(new Set(n.map(r=>
1r.trim()).filter(Boolean))).sort()});orderedQuestions=D(()=>{let t=this.getCurrentGuideQuestions();if(!t.length)return[];let e=[...t].sort((l,u)=>l.order-u.order),i=new Map;for(let l of e)l.parentId&&i.set(l.parentId,(i.get(l.parentId)??0)+1);let n=new Set(this.getCurrentGuideCollapsedIds()),r=new Map(e.map(l=>[l.id,l]));return e.map(l=>b(f({},l),{hasChildren:(i.get(l.id)??0)>0})).filter(l=>this.isQuestionVisible(l,n,r))});visibleQuestionColumns=D(()=>{let t=this.activeSheet();if(!t)return[];let e=this.toOrderedQuestions(t.questions??[]),i=this.buildChildCountByParent(e),n=new Set(t.collapsedQuestionIds),r=new Map(e.map(l=>[l.id,l]));return e.filter(l=>this.isQuestionVisible(l,n,r)).filter(l=>this.isAnswerableQuestion(l,i)).map(l=>b(f({},l),{hasChildren:!1,isCollapsed:!1}))});selectedRespondentIds=D(()=>{let t=this.activeSheet();return t?new Set(t.respondents.map(e=>e.transcriptId)):new Set});orderedRespondents=D(()=>{let t=this.activeSheet();if(!t)return[];let e=f(f({},this.uploadRevisionByTranscriptId()),t.transcriptRevisionById??{});return[...t.respondents].sort((i,n)=>{let r=this.resolveRespondentUploadTimestamp(e[i.transcriptId]),l=this.resolveRespondentUploadTimestamp(e[n.transcriptId]);return r!==null&&l!==null&&l!==r?l-r:r===null&&l!==null?1:r!==null&&l===null?-1:i.name.localeCompare(n.name)})});selectedCell=D(()=>{let t=this.activeSheet(),e=this.selectedCellRef();return!t||!e?null:t.cells.find(i=>i.respondentId===e.respondentId&&i.questionId===e.questionId)??null});selectedCellRespondent=D(()=>{let t=this.activeSheet(),e=this.selectedCellRef();return!t||!e?null:t.respondents.find(i=>i.id===e.respondentId)??null});selectedCellQuestion=D(()=>{let t=this.activeSheet(),e=this.selectedCellRef();return!t||!e?null:(t.questions??[]).find(i=>i.id===e.questionId)??null});staleCellCount=D(()=>{let t=this.activeSheet();return t?t.cells.filter(e=>e.status==="stale"||e.isStale).length:0});themeCount=D(()=>this.getThemeQuestionsForSheet(this.activeSheet()).length);answerableQuestionCount=D(()=>this.getAnswerableQuestionsForSheet(this.activeSheet()).length);visibleThemeGroups=D(()=>{let t=this.activeSheet(),e=this.visibleQuestionColumns();if(!t||!e.length)return[];let i=this.toOrderedQuestions(t.questions??[]),n=new Map(i.map(d=>[d.id,d])),r=this.buildChildCountByParent(i),l=new Set(t.collapsedQuestionIds??[]),u=[];for(let d of e){let h=this.resolveThemeQuestion(d,n),v=h?.id??"__ungrouped__",E=h?.label||"Ungrouped",P=u[u.length-1];if(P&&P.themeId===v){P.columnSpan+=1;continue}u.push({themeId:v,label:E,depth:h?.depth??1,columnSpan:1,isCollapsible:!!(h&&(r.get(h.id)??0)>0),isCollapsed:!!(h&&l.has(h.id))})}return u});collapsedThemeGroups=D(()=>{let t=this.activeSheet();if(!t)return[];let e=this.toOrderedQuestions(t.questions??[]),i=new Map(e.map(u=>[u.id,u])),n=new Set(t.collapsedQuestionIds??[]),r=this.getAnswerableQuestions(e),l=new Map;for(let u of r){let d=this.resolveThemeQuestion(u,i);!d||!n.has(d.id)||l.has(d.id)||l.set(d.id,{themeId:d.id,label:d.label})}return Array.from(l.values())});gridTemplateColumns=D(()=>{let t=this.visibleQuestionColumns(),e=[`${Te}px`];for(let i of t)e.push(`${this.resolveQuestionWidth(i.id)}px`);return e.join(" ")});gridWidthPx=D(()=>{let t=Te;for(let e of this.visibleQuestionColumns())t+=this.resolveQuestionWidth(e.id);return t});ngOnInit(){this.projectRouteSubscription=this.route.parent?.paramMap.subscribe(t=>{let e=t.get("projectId")?.trim()??"";if(!e){this.resetProjectState();return}this.projectId=e,this.loadProjectGridState()})??null}ngOnDestroy(){this.projectRouteSubscription?.unsubscribe(),this.stopUploadsPolling(),this.stopGridProgressPolling(),this.persistTimer&&(clearTimeout(this.persistTimer),this.persistTimer=null),this.viewportRefreshTimer&&(clearTimeout(this.viewportRefreshTimer),this.viewportRefreshTimer=null)}onWindowMouseMove(t){if(!this.resizingQuestionId)return;let e=t.clientX-this.resizeStartX,i=Math.max(Ht,Math.min(Xt,this.resizeStartWidth+e));this.questionColumnWidthById.update(n=>b(f({},n),{[this.resizingQuestionId]:i}))}onWindowMouseUp(){this.resizingQuestionId=null}onWindowClick(t){let e=t.target;e instanceof Element&&(e.closest(".grid-sheet-tab-menu")||e.closest(".grid-sheet-tab-menu-trigger"))||this.openSheetTabMenu.set(null)}onWindowEscape(){this.openSheetTabMenu.set(null)}onWindowResize(){this.openSheetTabMenu.set(null),this.requestGridViewportRefresh(40)}onWindowScroll(){this.openSheetTabMenu.set(null)}openSheet(t){let e=t.trim();!e||!this.projectId||(this.openSheetTabMenu.set(null),this.loadSheetById(e))}isSheetTabMenuOpen(t){return this.openSheetTabMenu()?.sheetId===t}toggleSheetTabMenu(t,e){if(e.preventDefault(),e.stopPropagation(),this.openSheetTabMenu()?.sheetId===t){this.openSheetTabMenu.set(null);return}let n=e.currentTarget;if(!n){this.openSheetTabMenu.set({sheetId:t,top:0,left:0});return}let r=n.getBoundingClientRect(),l=window.innerWidth,u=window.innerHeight,d=Zt,h=Yt,v=Jt,E=r.bottom+4,P=r.to
1p-v-4,x=Math.max(d,l-h-d),S=Math.max(d,u-v-d),Q=r.right-h,U=Math.min(Math.max(Q,d),x),$=E+v<=u-d?Math.min(Math.max(E,d),S):Math.min(Math.max(P,d),S);this.openSheetTabMenu.set({sheetId:t,top:$,left:U})}createSheet(){this.openCreateSheetWizard()}openCreateSheetWizard(){let t=this.gridService.createQuestionNode("Core Themes",void 0,1,0),e=[t,this.gridService.createQuestionNode("What did respondents emphasize most?",t.id,2,1)];this.sheetWizardDraft.set({name:"Insight Workspace",description:"",segments:[],discussionGuide:e}),this.sheetWizardStep.set(1),this.sheetWizardCollapsedIds.set([]),this.pendingWizardSegmentInput.set(""),this.sheetWizardOpen.set(!0)}closeCreateSheetWizard(){this.sheetWizardOpen.set(!1),this.sheetWizardStep.set(1),this.sheetWizardCollapsedIds.set([])}onWizardNameInput(t){let e=t.target;this.sheetWizardDraft.update(i=>b(f({},i),{name:e?.value??""}))}onWizardDescriptionInput(t){let e=t.target;this.sheetWizardDraft.update(i=>b(f({},i),{description:e?.value??""}))}onWizardSegmentInput(t){let e=t.target;this.pendingWizardSegmentInput.set(e?.value??"")}addWizardSegment(){let t=this.pendingWizardSegmentInput().trim();t&&(this.sheetWizardDraft.update(e=>b(f({},e),{segments:Array.from(new Set([...e.segments,t]))})),this.pendingWizardSegmentInput.set(""))}toggleWizardSegment(t){this.sheetWizardDraft.update(e=>{let i=new Set(e.segments);return i.has(t)?i.delete(t):i.add(t),b(f({},e),{segments:Array.from(i)})})}goToNextWizardStep(){let t=this.sheetWizardStep();if(t===1){if(!this.sheetWizardDraft().name.trim()){this.sheetError.set("Sheet name is required before continuing.");return}this.sheetError.set(null),this.sheetWizardStep.set(2);return}if(t===2){let e=this.validateDiscussionGuideStructure(this.sheetWizardDraft().discussionGuide,{requireAtLeastOneSectionAndQuestion:!0});if(e){this.sheetError.set(e);return}this.sheetError.set(null),this.sheetWizardStep.set(3)}}goToPreviousWizardStep(){let t=this.sheetWizardStep();if(t===3){this.sheetWizardStep.set(2);return}t===2&&this.sheetWizardStep.set(1)}async createSheetFromWizard(){if(!this.projectId||!this.currentUserId())return;let t=this.sheetWizardDraft();if(!t.name.trim()){this.sheetError.set("Sheet name is required.");return}let e=this.validateDiscussionGuideStructure(t.discussionGuide,{requireAtLeastOneSectionAndQuestion:!0});if(e){this.sheetError.set(e);return}this.sheetError.set(null),this.sheetNotice.set(null);try{let i=await z(this.gridService.createSheet(this.projectId,this.currentUserId(),{name:t.name,description:t.description,segments:t.segments,discussionGuide:this.reindexQuestions(t.discussionGuide),tabOrder:this.orderedSheetSummaries().length}));this.sheetSummaries.set([...this.sheetSummaries(),this.mapSummary(i)].sort((n,r)=>n.tabOrder-r.tabOrder||r.updatedAt.localeCompare(n.updatedAt))),this.activeSheet.set(i),this.selectedCellRef.set(null),this.sheetNotice.set(`Created "${i.name}".`),this.closeCreateSheetWizard()}catch{this.sheetError.set("Unable to create a grid sheet right now.")}}renameActiveSheet(){this.openEditSheetDialog()}async openEditSheetDialog(t){let e=t?.trim()||this.activeSheet()?.id||"";if(!e)return;this.openSheetTabMenu.set(null);let i=await this.resolveSheetForAction(e),n=this.sheetSummaries().find(r=>r.id===e);if(!i&&!n){this.sheetError.set("Unable to load this sheet for editing.");return}this.editSheetDraft.set({sheetId:e,name:i?.name??n?.name??"",description:i?.description??n?.description??"",segments:this.sanitizeSegmentList(i?.segments??n?.segments??[])}),this.pendingEditSheetSegmentInput.set(""),this.editSheetDialogOpen.set(!0),this.sheetError.set(null)}closeEditSheetDialog(){this.editSheetDialogOpen.set(!1),this.editSheetDraft.set(null),this.pendingEditSheetSegmentInput.set("")}onEditSheetNameInput(t){let e=t.target;this.editSheetDraft.update(i=>i&&b(f({},i),{name:e?.value??""}))}onEditSheetDescriptionInput(t){let e=t.target;this.editSheetDraft.update(i=>i&&b(f({},i),{description:e?.value??""}))}onEditSheetSegmentInput(t){let e=t.target;this.pendingEditSheetSegmentInput.set(e?.value??"")}addEditSheetSegment(){let t=this.pendingEditSheetSegmentInput().trim();t&&(this.editSheetDraft.update(e=>e&&b(f({},e),{segments:this.sanitizeSegmentList([...e.segments,t])})),this.pendingEditSheetSegmentInput.set(""))}toggleEditSheetSegment(t){this.editSheetDraft.update(e=>{if(!e)return e;let i=new Set(this.sanitizeSegmentList(e.segments));return i.has(t)?i.delete(t):i.add(t),b(f({},e),{segments:Array.from(i)})})}saveEditSheetDialog(){let t=this.editSheetDraft(),e=this.currentUserId();if(!t||!this.projectId||!e)return;let i=t.name.trim();if(!i){this.sheetError.set("Sheet name is required.");return}
1let n=t.description.trim(),r=this.sanitizeSegmentList(t.segments),l=t.sheetId,u=this.activeSheet()?.id===l;this.gridService.updateSheetMetadata(this.projectId,l,e,{name:i,description:n,segments:r}).subscribe({next:d=>{if(!d){this.sheetError.set("Unable to update this sheet.");return}this.sheetError.set(null),this.sheetSummaries.update(h=>h.map(v=>v.id===d.id?d:v)),this.activeSheet.update(h=>h&&h.id===d.id?b(f({},h),{name:d.name,description:d.description??"",segments:[...d.segments],updatedAt:d.updatedAt}):h),this.sheetNotice.set(`Updated "${d.name}".`),this.closeEditSheetDialog(),u&&this.syncSegmentRespondentsForActiveSheet()},error:()=>{this.sheetError.set("Unable to update this sheet.")}})}async openGuideEditorFromEditSheetDialog(){let t=this.editSheetDraft();if(!t)return;let e=await this.resolveSheetForAction(t.sheetId);if(!e){this.sheetError.set("Unable to load this sheet guide.");return}let i=this.sanitizeSegmentList(t.segments).slice().sort((u,d)=>u.localeCompare(d)),n=this.sanitizeSegmentList(e.segments??[]).slice().sort((u,d)=>u.localeCompare(d));if((t.name.trim()!==(e.name??"").trim()||t.description.trim()!==(e.description??"").trim()||i.join("||")!==n.join("||"))&&!window.confirm("Unsaved sheet metadata changes will be discarded when opening the guide editor. Continue?"))return;this.closeEditSheetDialog(),this.activeSheet()?.id!==e.id&&await this.loadSheetById(e.id);let l=this.activeSheet();if(!l||l.id!==e.id){this.sheetError.set("Unable to open the guide editor for this sheet.");return}this.openDiscussionGuideEditor()}async duplicateActiveSheet(t){let e=this.currentUserId();if(!this.projectId||!e)return;this.openSheetTabMenu.set(null);let i=await this.resolveSheetForAction(t);if(!i){this.sheetError.set("Unable to load this sheet for duplication.");return}let n=window.prompt("Duplicate sheet name",`${i.name} Copy`)?.trim();if(n)try{let r=await z(this.gridService.createSheet(this.projectId,e,{name:n,description:i.description,segments:[...i.segments??[]],discussionGuide:[...i.questions??[]].map(h=>f({},h)),tabOrder:this.orderedSheetSummaries().length})),l=this.normalizeSheet(b(f({},r),{discussionGuide:[...i.questions??[]].map(h=>f({},h)),questions:[...i.questions??[]].map(h=>f({},h)),respondents:i.respondents.map(h=>f({},h)),cells:i.cells.map(h=>b(f({},h),{sheetId:r.id,status:h.status==="processing"||h.status==="generating"?"idle":h.status,isStale:h.status==="stale"||h.isStale})),collapsedQuestionIds:[...i.collapsedQuestionIds],transcriptRevisionById:f({},i.transcriptRevisionById),transcriptSegmentsById:f({},i.transcriptSegmentsById??{})})),d=await z(this.gridService.saveSheet(this.projectId,l,e))??l;this.activeSheet.set(d),this.sheetSummaries.set([...this.sheetSummaries().filter(h=>h.id!==d.id),this.mapSummary(d)].sort((h,v)=>h.tabOrder-v.tabOrder||v.updatedAt.localeCompare(h.updatedAt))),this.sheetNotice.set(`Duplicated "${i.name}" to "${d.name}".`)}catch{this.sheetError.set("Unable to duplicate this sheet.")}}deleteActiveSheet(t){let e=this.currentUserId();if(!this.projectId||!e)return;this.openSheetTabMenu.set(null);let i=t?.trim()||this.activeSheet()?.id||"";if(!i)return;let r=this.sheetSummaries().find(l=>l.id===i)?.name||this.activeSheet()?.name||"this sheet";this.deleteSheetDialog.set({sheetId:i,sheetName:r})}closeDeleteSheetDialog(){this.isDeletingSheet()||this.deleteSheetDialog.set(null)}confirmDeleteSheet(){let t=this.currentUserId(),e=this.deleteSheetDialog();if(!this.projectId||!t||!e||this.isDeletingSheet())return;let i=e.sheetId;this.isDeletingSheet.set(!0),this.gridService.deleteSheet(this.projectId,i,t).subscribe({next:n=>{if(!n){this.sheetError.set("Unable to delete this sheet.");return}this.deleteSheetDialog.set(null);let r=this.sheetSummaries().filter(l=>l.id!==i);if(this.sheetSummaries.set(r),this.activeSheet()?.id===i){if(this.activeSheet.set(null),this.selectedCellRef.set(null),r.length>0){this.loadSheetById(r[0].id);return}this.sheetNotice.set("No sheets yet. Create a new sheet to start transcript intelligence processing.")}},error:()=>{this.isDeletingSheet.set(!1),this.sheetError.set("Unable to delete this sheet.")},complete:()=>{this.isDeletingSheet.set(!1)}})}onRootQuestionInput(t){let e=t.target;this.pendingRootQuestionLabel.set(e?.value??"")}guideHierarchyLabel(t){return t.depth===1?"Interview section":"Question / subquestion"}guideSiblingActionLabel(t){return t.depth===1?"Add section":"Add question"}canAddGuideChild(t){return t.depth<F}addRootQuestion(){let t=this.pendingRootQuestionLabel().trim();if(!t)return;let e=this.getCurrentGuideQuestions();if(!this.isGuideLabelUniqueAtLevel(e,t,1,void 0)){this.sheetError.set(`Interview sections must be unique. "${t}" already exists.`);return}this.pendingRootQuestionLabel.set(""),this.sheetError.set(null),this.mutateCurrentGuideQuestions(i=>{let n=[...i];return n.push(this.gridService.createQuestionNode(t,void 0,1,n.length)),this.reindexQuestions(n)})}openDiscussionGuideEditor(){let t=this.activeSheet();t&&(this.sheetGuideEditorNodes.set((t.questions??[]).map(e=>f({},e))),this.sheetGuideEditorCollapsedIds.set([...t.collapsedQuestionIds]),this.sheetGuideEditorOriginQuestionIds.set((t.questions??[]).map(e=>e.id)),this.pendingRootQuestionLabel.set(""),this.sheetGuideEditorOpen.set(!0))}closeDiscussionGuideEditor(){this.sheetGuideEditorOpen.set(!1),this.sheetGuideEditorNodes.set([]),this.sheetGuideEditorCollapsedIds.set([]),this.sheetGuideEditorOriginQuestionIds.set([])}saveDiscussionGuideEditor(){let t=this.activeSheet();if(!t)return;let e=this.reindexQuestions(this.sheetGuideEditorNodes()),i=this.validateDiscussionGuideStructure(e,{requireAtLeastOneSectionAndQuestion:!0}
1);if(i){this.sheetError.set(i);return}let n=new Set(e.map(l=>l.id));this.sheetGuideEditorOriginQuestionIds().filter(l=>!n.has(l)).length>0&&t.cells.length>0&&!window.confirm("Updating the discussion guide will remove cells tied to deleted questions. Continue?")||(this.updateActiveSheet(l=>b(f({},l),{questions:e,discussionGuide:e,cells:this.reconcileCellsForQuestions(b(f({},l),{cells:l.cells.filter(u=>n.has(u.questionId))}),e),collapsedQuestionIds:this.sheetGuideEditorCollapsedIds().filter(u=>n.has(u))}),!0),this.closeDiscussionGuideEditor(),this.sheetNotice.set("Discussion guide updated."))}addSiblingQuestion(t){this.mutateCurrentGuideQuestions(e=>{let i=[...e].sort((h,v)=>h.order-v.order),n=i.findIndex(h=>h.id===t);if(n<0)return e;let r=i[n],l=[...i],u=r.depth===1?"New interview section":"New question",d=this.buildUniqueGuideLabel(u,l,r.depth,r.parentId);return l.splice(n+1,0,this.gridService.createQuestionNode(d,r.parentId,r.depth,n+1)),this.reindexQuestions(l)}),this.sheetError.set(this.validateDiscussionGuideStructure(this.getCurrentGuideQuestions()))}addChildQuestion(t){this.mutateCurrentGuideQuestions(e=>{let i=[...e].sort((h,v)=>h.order-v.order),n=i.findIndex(h=>h.id===t);if(n<0)return e;let r=i[n];if(r.depth>=F)return e;let l=Math.min(F,r.depth+1),u=[...i],d=this.buildUniqueGuideLabel("New question",u,l,r.id);return u.splice(n+1,0,this.gridService.createQuestionNode(d,r.id,l,n+1)),this.reindexQuestions(u)}),this.sheetError.set(this.validateDiscussionGuideStructure(this.getCurrentGuideQuestions()))}deleteQuestion(t){this.mutateCurrentGuideQuestions(e=>{let i=[...e].sort((u,d)=>u.order-d.order),n=i.findIndex(u=>u.id===t);if(n<0)return e;let r=i[n].depth,l=new Set([t]);for(let u=n+1;u<i.length;u+=1){let d=i[u];if(d.depth<=r)break;l.add(d.id)}return this.isEditingActiveSheetGuide()?this.updateActiveSheet(u=>b(f({},u),{cells:u.cells.filter(d=>!l.has(d.questionId)),collapsedQuestionIds:u.collapsedQuestionIds.filter(d=>!l.has(d))}),!0):this.sheetGuideEditorOpen()&&this.sheetGuideEditorCollapsedIds.update(u=>u.filter(d=>!l.has(d))),this.reindexQuestions(i.filter(u=>!l.has(u.id)))})}onQuestionLabelInput(t,e){let n=e.target?.value??"";this.mutateCurrentGuideQuestions(r=>r.map(l=>l.id===t?b(f({},l),{label:n}):l)),this.sheetError.set(this.validateDiscussionGuideStructure(this.getCurrentGuideQuestions()))}onQuestionDrop(t){this.mutateCurrentGuideQuestions(e=>{let i=[...e].sort((E,P)=>E.order-P.order);if(t.previousIndex<0||t.previousIndex>=i.length||t.currentIndex<0||t.currentIndex>=i.length)return e;fe(i,t.previousIndex,t.currentIndex);let n=i[t.currentIndex];if(!n)return this.reindexQuestions(i);let r=Math.round(t.distance.x/28),l=Math.max(1,Math.min(F,n.depth+r)),u=t.currentIndex>0?i[t.currentIndex-1]:null,d=u?Math.min(F,u.depth+1):1,h=Math.max(1,Math.min(l,d)),v;if(h>1)for(let E=t.currentIndex-1;E>=0;E-=1){let P=i[E];if(P.depth===h-1){v=P.id;break}}return i[t.currentIndex]=f(b(f({},n),{depth:v?h:1}),v?{parentId:v}:{parentId:void 0}),this.reindexQuestions(i)}),this.sheetError.set(this.validateDiscussionGuideStructure(this.getCurrentGuideQuestions()))}toggleQuestionCollapse(t){if(this.sheetWizardOpen()&&this.sheetWizardStep()===2){this.sheetWizardCollapsedIds.update(e=>{let i=new Set(e);return i.has(t)?i.delete(t):i.add(t),Array.from(i)});return}if(this.sheetGuideEditorOpen()){this.sheetGuideEditorCollapsedIds.update(e=>{let i=new Set(e);return i.has(t)?i.delete(t):i.add(t),Array.from(i)});return}this.updateActiveSheet(e=>{let i=new Set(e.collapsedQuestionIds);return i.has(t)?i.delete(t):i.add(t),b(f({},e),{collapsedQuestionIds:Array.from(i)})},!1)}beginColumnResize(t,e){e.preventDefault(),e.stopPropagation(),this.resizingQuestionId=t,this.resizeStartX=e.clientX,this.resizeStartWidth=this.resolveQuestionWidth(t)}onGuideUploadSelected(t){let e=t.target,i=e?.files?.[0]??null;if(i){if(!/\.docx$/i.test(i.name||"")){this.sheetError.set("Only .docx files are supported for guide upload."),e&&(e.value="");return}if(i.size>6e6){this.sheetError.set("Guide DOCX files must be 6MB or smaller."),e&&(e.value="");return}this.replaceQuestionsFromGuideFile(i),e&&(e.value="")}}openTranscriptSegmentDialog(){let t=this.activeSheet();if(!t)return;let e=t.transcriptSegmentsById??{},i={};for(let n of this.availableRespondents())i[n.transcriptId]=(e[n.transcriptId]??[]).join(", ");this.transcriptSegmentDraftById.set(i),this.transcriptSegmentDialogOpen.set(!0)}closeTranscriptSegmentDialog(){this.transcriptSegmentDialogOpen.set(!1),this.transcriptSegmentDraftById.set({})}onTranscriptSegmentInput(t,e){let i=e.target;this.transcriptSegmentDraftById.update(n=>b(f({},n),{[t]:i?.value??""}))}toggleTranscriptSegmentDraft(t,e){let i=this.transcriptSegmentDraftById()[t]??"",n=new Set(i.split(",").map(r=>
1r.trim()).filter(Boolean));n.has(e)?n.delete(e):n.add(e),this.transcriptSegmentDraftById.update(r=>b(f({},r),{[t]:Array.from(n).join(", ")}))}transcriptDraftHasSegment(t,e){let i=this.transcriptSegmentDraftById()[t]??"";return new Set(i.split(",").map(r=>r.trim()).filter(Boolean)).has(e)}saveTranscriptSegmentDialog(){this.updateActiveSheet(t=>{let e={};for(let[i,n]of Object.entries(this.transcriptSegmentDraftById())){let r=Array.from(new Set(n.split(",").map(l=>l.trim()).filter(Boolean)));r.length&&(e[i]=r)}return b(f({},t),{transcriptSegmentsById:e})},!0),this.closeTranscriptSegmentDialog(),this.syncSegmentRespondentsForActiveSheet()}toggleRespondentSelection(t,e){let n=!!e.target?.checked;this.updateActiveSheet(r=>{if(n){if(r.respondents.find(P=>P.transcriptId===t.transcriptId))return r;let d=`resp_${t.transcriptId}`,h=[...r.respondents,{id:d,name:t.name,transcriptId:t.transcriptId}],v=[...r.cells],E=this.getAnswerableQuestionsForSheet(r);for(let P of E)v.some(S=>S.respondentId===d&&S.questionId===P.id)||v.push(this.createEmptyCell(r.id,d,P.id));return b(f({},r),{respondents:h,cells:v,transcriptRevisionById:f(f({},r.transcriptRevisionById),t.uploadedAt?{[t.transcriptId]:t.uploadedAt}:{})})}let l=r.respondents.find(u=>u.transcriptId===t.transcriptId);return l?b(f({},r),{respondents:r.respondents.filter(u=>u.transcriptId!==t.transcriptId),cells:r.cells.filter(u=>u.respondentId!==l.id)}):r},!0)}async generateEntireGrid(t=!1){let e=this.activeSheet();if(!e)return;let i=this.getAnswerableQuestionsForSheet(e),n=[];for(let r of e.respondents)for(let l of i)n.push(()=>this.generateCell(r.id,l.id,t));await this.runTasksWithConcurrency(n,J)}async generateRow(t,e=!1){let i=this.activeSheet();if(!i)return;
1let r=this.getAnswerableQuestionsForSheet(i).map(l=>()=>this.generateCell(t,l.id,e));await this.runTasksWithConcurrency(r,J)}async generateColumn(t,e=!1){let i=this.activeSheet();if(!i)return;let n=i.respondents.map(r=>()=>this.generateCell(r.id,t,e));await this.runTasksWithConcurrency(n,J)}async generateCell(t,e,i=!1){let n=this.activeSheet();if(!n)return;let r=n.respondents.find(h=>h.id===t),u=this.getAnswerableQuestionsForSheet(n).find(h=>h.id===e);if(!r||!u)return;let d=n.cells.find(h=>h.respondentId===t&&h.questionId===e)??null;if(!(d?.status==="processing"||d?.status==="generating")&&!(!i&&(d?.manuallyEdited||d?.isManuallyEdited||d?.status==="complete"&&!d.isStale))){this.generationInFlightCount.update(h=>h+1),this.updateCell(t,e,{status:"processing",isStale:d?.isStale??d?.status==="stale",isManuallyEdited:d?.isManuallyEdited??d?.manuallyEdited??!1,manuallyEdited:d?.manuallyEdited??d?.isManuallyEdited??!1,errorMessage:void 0,lastUpdated:new Date().toISOString()},!1);try{let h=await z(this.gridService.generateCell(this.projectId,n.id,this.currentUserId(),{respondentId:t,questionId:e,force:i}));if(h?.cell){let x=h.cell,S=(x.answer??x.summary??"").trim(),Q=x.lastUpdated||x.updatedAt||new Date().toISOString();this.updateCell(t,e,{answer:S,summary:S,citations:x.citations??[],confidence:x.confidence,status:x.status??"complete",isStale:x.status==="stale",isManuallyEdited:x.isManuallyEdited??x.manuallyEdited??!1,manuallyEdited:x.manuallyEdited??x.isManuallyEdited??!1,errorMessage:x.errorMessage,lastUpdated:Q},!1),h.transcriptRevision&&this.updateActiveSheet(U=>b(f({},U),{transcriptRevisionById:b(f({},U.transcriptRevisionById),{[r.transcriptId]:h.transcriptRevision})})),this.schedulePersist(120);return}await this.delay(180+Math.floor(Math.random()*320));let v=await this.getTranscriptChunksForRespondent(r.transcriptId);if(!v.length){this.updateCell(t,e,{status:"error",errorMessage:"No transcript chunks are available for this respondent.",lastUpdated:new Date().toISOString()});return}let E=this.buildStubAnswer(u.label,v),P=this.uploadRevisionByTranscriptId()[r.transcriptId];this.updateCell(t,e,{answer:E.summary,summary:E.summary,citations:E.citations,confidence:E.confidence,status:"complete",isStale:!1,isManuallyEdited:!1,manuallyEdited:!1,errorMessage:void 0,lastUpdated:new Date().toISOString()},!1),P?this.updateActiveSheet(x=>b(f({},x),{transcriptRevisionById:b(f({},x.transcriptRevisionById),{[r.transcriptId]:P})}),!0):this.schedulePersist()}catch{this.updateCell(t,e,{status:"error",errorMessage:"Generation failed for this cell.",lastUpdated:new Date().toISOString()})}finally{this.generationInFlightCount.update(h=>Math.max(0,h-1))}}}openCellPanel(t,e){this.selectedCellRef.set({respondentId:t,questionId:e});let i=this.selectedCell();this.selectedCellEditorText.set(i?.answer??i?.summary??""),this.selectedCellEditMode.set(!1)}closeCellPanel(){this.selectedCellRef.set(null),this.selectedCellEditorText.set(""),this.selectedCellEditMode.set(!1)}onCellPanelBackdropClick(t){t.target===t.currentTarget&&this.closeCellPanel()}onSelectedCellEditorInput(t){let e=t.target;this.selectedCellEditorText.set(e?.value??"")}toggleSelectedCellEditMode(){this.selectedCellEditMode.update(t=>!t)}saveManualCellEdit(){let t=this.selectedCellRef();if(!t)return;let e=this.selectedCellEditorText().trim();this.updateCell(t.respondentId,t.questionId,{answer:e,summary:e,status:e?"complete":"idle",isManuallyEdited:!0,manuallyEdited:!0,isStale:!1,errorMessage:void 0,lastUpdated:new Date().toISOString()}),this.selectedCellEditMode.set(!1)}regenerateSelectedCell(){let t=this.selectedCellRef();if(!t)return;let e=this.selectedCell();(e?.isManuallyEdited||e?.manuallyEdited)&&!window.confirm("This cell was edited manually. Regenerating will overwrite the manual content. Continue?")||this.generateCell(t.respondentId,t.questionId,!0)}cellPreview(t,e){let i=this.resolveCell(t,e);return i?i.status==="queued"?"Queued...":i.status==="processing"||i.status==="generating"?"Processing...":i.status==="error"?i.errorMessage||"Error":(i.answer??i.summary).trim()?(i.answer??i.summary).trim():"No answer":"Generate"}cellStatus(t,e){let i=this.resolveCell(t,e);return i?i.isStale&&i.status==="complete"?"stale":i.status==="generating"?"processing":i.status:"idle"}cellHasContent(t,e){let i=this.resolveCell(t,e);return!!(i?.answer??i?.summary??"").trim()}cellCitationCount(t,e){return this.resolveCell(t,e)?.citations?.length??0}openFirstCitationForCell(t,e,i){i.preventDefault(),i.stopPropagation();let r=this.resolveCell(t,e)?.citations?.[0];r&&this.openCitationDialog(t,e,r)}cellLastUpdatedLabel(t,e){let i=this.resolveCell(t,e),n=i?.lastUpdated||i?.updatedAt;if(!n)return"never";let r=new Date(n);
1return Number.isNaN(r.getTime())?"never":r.toLocaleString()}respondentUploadDateLabel(t){let e=this.activeSheet()?.transcriptRevisionById?.[t]?.trim()||this.uploadRevisionByTranscriptId()[t]?.trim()||"";if(!e)return"Upload date unavailable";let i=new Date(e);return Number.isNaN(i.getTime())?"Upload date unavailable":`Uploaded ${i.toLocaleString()}`}isRespondentSelected(t){return this.selectedRespondentIds().has(t)}isQuestionCollapsed(t){if(this.sheetWizardOpen()&&this.sheetWizardStep()===2)return this.sheetWizardCollapsedIds().includes(t);if(this.sheetGuideEditorOpen())return this.sheetGuideEditorCollapsedIds().includes(t);let e=this.activeSheet();return e?e.collapsedQuestionIds.includes(t):!1}trackRespondent=(t,e)=>e.id;trackQuestion=(t,e)=>e.id;trackSheet=(t,e)=>e.id;trackChunk=(t,e)=>e.id;formatCitationRange(t,e){return`${this.secondsToTimestamp(t)} - ${this.secondsToTimestamp(e)}`}editActiveSheetSegments(){this.openEditSheetDialog()}async openCitationDialog(t,e,i){let n=this.activeSheet();if(!n)return;let r=n.respondents.find(h=>h.id===t),l=(n.questions??[]).find(h=>h.id===e),u=this.resolveCell(t,e);if(!r||!l||!u)return;let d=u.answer??u.summary??"";this.citationDialog.set({respondentName:r.name,questionLabel:l.label,answer:d,transcriptId:r.transcriptId,citation:i,citations:u.citations??[],chunks:[],playbackUrl:null,loading:!0});try{let[h,v]=await Promise.all([this.getTranscriptChunksForRespondent(r.transcriptId),z(this.transcriptService.getUploadPlaybackUrl(this.projectId,r.transcriptId).pipe(K(()=>X(""))))]);this.citationDialog.set({respondentName:r.name,questionLabel:l.label,answer:d,transcriptId:r.transcriptId,citation:i,citations:u.citations??[],chunks:h,playbackUrl:v.trim()||null,loading:!1}),this.scrollCitationChunkIntoView(i,h)}catch{this.citationDialog.update(h=>h&&b(f({},h),{loading:!1,errorMessage:"Unable to load transcript citation context."}))}}closeCitationDialog(){this.citationDialog.set(null)}getCitationChunkDomId(t){return`citation_chunk_${t}`}isCitationChunkHighlighted(t,e){return t.startTime<=e.endTime&&t.endTime>=e.startTime}getCurrentGuideQuestions(){return this.sheetGuideEditorOpen()?this.sheetGuideEditorNodes():this.sheetWizardOpen()?this.sheetWizardDraft().discussionGuide:this.activeSheet()?.questions??[]}getCurrentGuideCollapsedIds(){return this.sheetGuideEditorOpen()?this.sheetGuideEditorCollapsedIds():this.sheetWizardOpen()?this.sheetWizardCollapsedIds():this.activeSheet()?.collapsedQuestionIds??[]}mutateCurrentGuideQuestions(t){if(this.sheetGuideEditorOpen()){this.sheetGuideEditorNodes.update(e=>this.reindexQuestions(t([...e])));return}if(this.sheetWizardOpen()){this.sheetWizardDraft.update(e=>b(f({},e),{discussionGuide:this.reindexQuestions(t([...e.discussionGuide]))}));return}this.updateActiveSheet(e=>{let i=this.reindexQuestions(t([...e.questions??[]]));return b(f({},e),{discussionGuide:i,questions:i,cells:this.reconcileCellsForQuestions(e,i)})},!0)}isEditingActiveSheetGuide(){return!this.sheetGuideEditorOpen()&&!this.sheetWizardOpen()}async resolveSheetForAction(t){let e=t?.trim()||this.activeSheet()?.id||"";if(!e||!this.projectId||!this.currentUserId())return null;let i=this.activeSheet();if(i&&i.id===e)return i;try{return await z(this.gridService.getSheet(this.projectId,e,this.currentUserId()))}catch{return null}}reconcileCellsForQuestions(t,e){let i=this.getAnswerableQuestions(e),n=new Set(i.map(u=>u.id)),r=(t.cells??[]).filter(u=>n.has(u.questionId)),l=new Set(r.map(u=>`${u.respondentId}::${u.questionId}`));for(let u of t.respondents??[])for(let d of i){let h=`${u.id}::${d.id}`;l.has(h)||(r.push(this.createEmptyCell(t.id,u.id,d.id)),l.add(h))}return r}createEmptyCell(t,e,i){let n=new Date().toISOString();return{sheetId:t,respondentId:e,questionId:i,answer:"",summary:"",citations:[],status:"idle",manuallyEdited:!1,isManuallyEdited:!1,isStale:!1,lastUpdated:n,updatedAt:n}}scrollCitationChunkIntoView(t,e){let i=this.findCitationChunk(e,t);if(!i)return;let n=this.getCitationChunkDomId(i.id);setTimeout(()=>{let r=document.getElementById(n);r&&r.scrollIntoView({behavior:"smooth",block:"center"})},16)}findCitationChunk(t,e){let i=t.find(n=>this.isCitationChunkHighlighted(n,e));
1return i||(t.length?[...t].sort((n,r)=>{let l=Math.abs(n.startTime-e.startTime),u=Math.abs(r.startTime-e.startTime);return l-u})[0]:null)}async loadProjectGridState(){if(!this.projectId||!this.currentUserId()){this.resetProjectState();return}this.isLoading.set(!0),this.sheetError.set(null),this.sheetNotice.set(null),this.selectedCellRef.set(null),this.selectedCellEditorText.set(""),this.transcriptChunksByUploadId.clear();try{let[t,e,i]=await Promise.all([z(this.gridService.listSheets(this.projectId,this.currentUserId())),z(this.transcriptService.getUploads(this.projectId)),z(this.projectService.getProjectById(this.projectId))]);this.projectRespondentGroups.set(Array.from(new Set((i?.respondentGroups??[]).map(n=>n.trim()).filter(Boolean)))),this.refreshAvailableRespondentsFromUploads(e),t.length?(this.sheetSummaries.set(t),await this.loadSheetById(t[0].id)):(this.sheetSummaries.set([]),this.activeSheet.set(null)),this.startUploadsPolling()}catch{this.sheetError.set("Unable to load grid sheets for this project.")}finally{this.isLoading.set(!1)}}async loadSheetById(t){if(!(!this.projectId||!this.currentUserId())){this.isSheetLoading.set(!0),this.sheetError.set(null),this.selectedCellRef.set(null),this.selectedCellEditorText.set("");try{let e=await z(this.gridService.getSheet(this.projectId,t,this.currentUserId()));if(!e){this.sheetError.set("Grid sheet could not be loaded."),this.activeSheet.set(null);return}this.activeSheet.set(e),this.applyTranscriptRevisionStaleness(),this.syncSegmentRespondentsForActiveSheet(),this.requestGridViewportRefresh()}catch{this.sheetError.set("Grid sheet could not be loaded."),this.activeSheet.set(null)}finally{this.isSheetLoading.set(!1),this.requestGridViewportRefresh(16)}}}requestGridViewportRefresh(t=0){this.viewportRefreshTimer&&(clearTimeout(this.viewportRefreshTimer),this.viewportRefreshTimer=null),this.viewportRefreshTimer=setTimeout(()=>{this.viewportRefreshTimer=null,this.gridViewport?.checkViewportSize()},t)}startUploadsPolling(){this.stopUploadsPolling(),this.projectId&&(this.uploadsPollingSubscription=Z(ye,ye).pipe(ee(()=>this.transcriptService.getUploads(this.projectId)),K(()=>X([]))).subscribe(t=>{this.refreshAvailableRespondentsFromUploads(t)}))}stopUploadsPolling(){this.uploadsPollingSubscription?.unsubscribe(),this.uploadsPollingSubscription=null}hasInProgressCells(t){return t?t.cells.some(e=>{let i=e.status==="generating"?"processing":e.status;return e.manuallyEdited??e.isManuallyEdited?!1:i==="queued"||i==="processing"||i==="stale"}):!1}ensureGridProgressPolling(){this.gridProgressPollTimer||this.gridProgressPollInFlight||this.scheduleGridProgressPolling(this.resolveNextGridProgressPollDelayMs())}stopGridProgressPolling(){this.gridProgressPollTimer&&(clearTimeout(this.gridProgressPollTimer),this.gridProgressPollTimer=null)}scheduleGridProgressPolling(t){this.gridProgressPollTimer&&clearTimeout(this.gridProgressPollTimer),this.gridProgressPollTimer=setTimeout(()=>{this.gridProgressPollTimer=null,this.refreshActiveSheetForProgressPolling()},Math.max(0,t))}async refreshActiveSheetForProgressPolling(){if(this.gridProgressPollInFlight)return;let t=this.activeSheet(),e=this.currentUserId();if(!(!t||!this.projectId||!e)&&this.hasInProgressCells(t)){if(this.persistTimer||this.persistInFlight||this.persistPending){this.scheduleGridProgressPolling(this.resolveNextGridProgressPollDelayMs());return}this.gridProgressPollInFlight=!0;try{let i=await z(this.gridService.getSheet(this.projectId,t.id,e));if(!i||i.id!==t.id)return;let n=this.normalizeSheet(i);if(this.activeSheet.set(n),this.sheetSummaries.update(r=>r.map(l=>l.id===n.id?this.mapSummary(n):l)),!this.selectedCellEditMode()){let r=this.selectedCellRef();if(r){let l=n.cells.find(u=>u.respondentId===r.respondentId&&u.questionId===r.questionId);this.selectedCellEditorText.set(l?.answer??l?.summary??"")}}}catch{this.scheduleGridProgressPolling(this.resolveNextGridProgressPollDelayMs());return}finally{this.gridProgressPollInFlight=!1}this.hasInProgressCells(this.activeSheet())&&this.scheduleGridProgressPolling(this.resolveNextGridProgressPollDelayMs())}}resolveNextGridProgressPollDelayMs(){return Ee+Math.floor(Math.random()*(Kt-Ee+1))}refreshAvailableRespondentsFromUploads(t){let e=t.filter(i=>i.source==="audio").map(i=>({transcriptId:i.id,name:this.sanitizeRespondentName(i.fileName),respondentGroup:i.respondentGroup?.trim()||"",uploadedAt:i.uploadedAt,status:i.status,chunkCount:i.chunkCount??0})).sort((i,n)=>n.uploadedAt.localeCompare(i.uploadedAt));this.availableRespondents.set(e),this.uploadRevisionByTranscriptId.set(Object.fromEntries(e.map(i=>[i.transcriptId,i.uploadedAt]))),this.applyTranscriptRevisionStaleness(),this.syncSegmentRespondentsForActiveSheet()}syncSegmentRespondentsForActiveSheet(){let t=this.activeSheet();if(!t)return;let e=new Set((t.segments??[]).map(d=>
1d.trim().toLowerCase()).filter(Boolean)),i=e.size>0,n=[...t.respondents],r=[...t.cells],l=this.getAnswerableQuestionsForSheet(t),u=!1;for(let d of this.availableRespondents()){if(d.status!=="completed")continue;let h=d.respondentGroup.trim().toLowerCase();if(!(i?!!(h&&e.has(h)):!0))continue;let E=n.find(x=>x.transcriptId===d.transcriptId),P=E?.id??"";E||(P=`resp_${d.transcriptId}`,n.push({id:P,name:d.name,transcriptId:d.transcriptId}),u=!0);for(let x of l)r.some(Q=>Q.respondentId===P&&Q.questionId===x.id)||(r.push(this.createEmptyCell(t.id,P,x.id)),u=!0)}u&&this.updateActiveSheet(d=>b(f({},d),{respondents:n,cells:r}),!0)}applyTranscriptRevisionStaleness(){let t=this.activeSheet();if(!t)return;let e=this.uploadRevisionByTranscriptId(),i=!1,n=t.cells,r=f({},t.transcriptRevisionById);for(let l of t.respondents){let u=l.transcriptId,d=e[u],h=r[u];if(d){if(!h){r[u]=d,i=!0;continue}h!==d&&(this.transcriptChunksByUploadId.delete(u),r[u]=d,n=n.map(v=>v.respondentId===l.id&&v.status==="complete"?b(f({},v),{status:"stale",isStale:!0,lastUpdated:new Date().toISOString(),updatedAt:new Date().toISOString()}):v),i=!0)}}i&&(this.activeSheet.set(b(f({},t),{cells:n,transcriptRevisionById:r,updatedAt:new Date().toISOString()})),this.schedulePersist())}updateActiveSheet(t,e=!1){let i=this.activeSheet();if(!i)return;let n=this.normalizeSheet(t(i));this.activeSheet.set(n),this.sheetSummaries.update(r=>r.map(l=>l.id===n.id?this.mapSummary(n):l)),e&&this.schedulePersist()}updateCell(t,e,i,n=!0){this.updateActiveSheet(r=>{let l=r.cells.findIndex(Q=>Q.respondentId===t&&Q.questionId===e),u=l>=0?r.cells[l]:{sheetId:r.id,respondentId:t,questionId:e,answer:"",summary:"",citations:[],status:"idle",manuallyEdited:!1,isManuallyEdited:!1,isStale:!1,lastUpdated:new Date().toISOString(),updatedAt:new Date().toISOString()},d=i.status==="generating"?"processing":i.status??u.status,h=i.lastUpdated??i.updatedAt??new Date().toISOString(),v=i.answer??i.summary??u.answer??u.summary??"",E=i.manuallyEdited??i.isManuallyEdited??u.manuallyEdited??u.isManuallyEdited,P=i.isStale??(d==="stale"?!0:d==="complete"?!1:u.isStale),x=b(f(f({},u),i),{sheetId:u.sheetId||r.id,answer:v,summary:v,status:d,manuallyEdited:!!E,isManuallyEdited:!!E,isStale:!!P,lastUpdated:h,updatedAt:h}),S=[...r.cells];return l>=0?S[l]=x:S.push(x),b(f({},r),{cells:S})},n)}resolveCell(t,e){let i=this.activeSheet();return i?i.cells.find(n=>n.respondentId===t&&n.questionId===e)??null:null}schedulePersist(t=350){this.persistTimer&&clearTimeout(this.persistTimer),this.persistTimer=setTimeout(()=>{this.persistTimer=null,this.persistActiveSheet()},t)}async persistActiveSheet(){if(this.persistInFlight){this.persistPending=!0;return}let t=this.activeSheet(),e=this.currentUserId();if(!(!t||!this.projectId||!e)){this.persistInFlight=!0,this.isPersisting.set(!0);try{let i=await z(this.gridService.saveSheet(this.projectId,t,e));i&&(this.activeSheet.set(i),this.sheetSummaries.update(n=>n.map(r=>r.id===i.id?this.mapSummary(i):r)))}catch{this.sheetError.set("Some grid updates could not be persisted. Changes are kept locally.")}finally{this.persistInFlight=!1,this.isPersisting.set(!1),this.persistPending&&(this.persistPending=!1,this.schedulePersist(120))}}}async replaceQuestionsFromGuideFile(t){let e=this.projectId,i=this.currentUserId();if(!e||!i){this.sheetError.set("Guide parsing requires an active project and signed-in user.");return}let n=await this.gridService.extractQuestionsFromGuideFile(e,i,t);if(!n.length){this.sheetError.set("No questions could be extracted from that DOCX file.");return}if(this.getCurrentGuideQuestions().length>0&&!window.confirm("Replace the current discussion guide with extracted questions from this file?"))return;let l=this.reindexQuestions(n),u=this.validateDiscussionGuideStructure(l,{requireAtLeastOneSectionAndQuestion:!0});if(u){this.sheetError.set(u);return}this.sheetGuideEditorOpen()?(this.sheetGuideEditorNodes.set(l),this.sheetGuideEditorCollapsedIds.set([])):this.sheetWizardOpen()&&this.sheetWizardStep()===2?this.sheetWizardDraft.update(d=>b(f({},d),{discussionGuide:l})):this.updateActiveSheet(d=>{let h=new Set(l.map(v=>v.id));return b(f({},d),{questions:l,discussionGuide:l,cells:this.reconcileCellsForQuestions(b(f({},d),{cells:d.cells.filter(v=>h.has(v.questionId))}),l),collapsedQuestionIds:[]})},!0),this.sheetError.set(null),this.sheetNotice.set(`Discussion guide imported from ${t.name}.`)}async getTranscriptChunksForRespondent(t){if(this.transcriptChunksByUploadId.has(t))return this.transcriptChunksByUploadId.get(t)??[];if(!this.projectId)return[];try{let e=await z(this.transcriptService.getTranscriptChunks(this.projectId,t));return this.transcriptChunksByUploadId.set(t,e),e}catch{return this.transcriptChunksByUploadId.set(t,[]),[]}}buildStubAnswer(t,e){let n=t.toLowerCase().split(/[^a-z0-9]+/g).map(S=>S.trim()).filter(S=>S.length>=4),r=e.map(S=>{let Q=S.text.toLowerCase(),U=n.reduce(($,Ge)=>Q.includes(Ge)?$+1:$,0);return{chunk:S,score:U}}).sort((S,Q)=>Q.score!==S.score?Q.score-S.score:S.chunk.startTime-Q.chunk.startTime),l=r.filter(S=>S.score>0).slice(0,2),u=l.length?l:r.slice(0,Math.min(2,r.length)),d=u.map(S=>S.chunk),h=d.map(S=>
1S.text.trim()).filter(Boolean).join(" ").replace(/\s+/g," ").trim(),v=h.length>0?h.slice(0,420):"No clear transcript evidence was found for this prompt yet.",E=d.map(S=>({startTime:S.startTime,endTime:S.endTime,textSnippet:S.text.slice(0,220).trim()})),P=u.length?u.reduce((S,Q)=>S+Q.score,0)/Math.max(1,u.length*Math.max(1,n.length)):.2,x=Math.max(.18,Math.min(.95,Number(P.toFixed(2))));return{summary:v,citations:E,confidence:x}}async runTasksWithConcurrency(t,e){if(!t.length)return;let i=Math.max(1,Math.min(e,t.length)),n=0,r=Array.from({length:i},async()=>{for(;;){let l=n;if(n+=1,l>=t.length)return;try{await t[l]()}catch{}}});await Promise.all(r)}sanitizeRespondentName(t){return t.replace(/\.[a-z0-9]+$/i,"").replace(/[_-]+/g," ").replace(/\s+/g," ").trim()||"Respondent"}sanitizeSegmentList(t){return Array.from(new Set((t??[]).map(e=>e.trim()).filter(Boolean)))}normalizeGuideLabel(t){return t.trim().replace(/\s+/g," ").toLowerCase()}isGuideLabelUniqueAtLevel(t,e,i,n,r){let l=this.normalizeGuideLabel(e);return l?!t.some(u=>r&&u.id===r||u.depth!==i||(u.parentId??"")!==(n??"")?!1:this.normalizeGuideLabel(u.label)===l):!0}buildUniqueGuideLabel(t,e,i,n){let r=t.trim()||(i===1?"New interview section":"New question"),l=1,u=r;for(;!this.isGuideLabelUniqueAtLevel(e,u,i,n);)l+=1,u=`${r} ${l}`;return u}validateDiscussionGuideStructure(t,e={}){let i=this.reindexQuestions(t);if(!i.length)return e.requireAtLeastOneSectionAndQuestion?"Add at least one interview section before continuing.":null;let n=new Map(i.map(h=>[h.id,h])),r=!1,l=!1,u=new Set,d=new Map;for(let h of i){let v=h.label.trim();if(!v)return h.depth===1?"Every interview section needs a title.":"Every question or subquestion needs a title.";if(h.depth>F)return"Depth is limited to interview sections and one question level.";let E=this.normalizeGuideLabel(v);if(h.depth===1){if(r=!0,u.has(E))return`Interview sections must be unique. "${v}" is duplicated.`;u.add(E);continue}let P=h.parentId??"",x=P?n.get(P):null;if(!x||x.depth!==1)return"Questions and subquestions must be nested directly under interview sections.";l=!0;let S=d.get(x.id)??new Set;if(S.has(E))return`Questions within "${x.label}" must be unique at the same level.`;S.add(E),d.set(x.id,S)}if(e.requireAtLeastOneSectionAndQuestion){if(!r)return"Add at least one interview section before continuing.";if(!l)return"Add at least one question or subquestion inside an interview section before continuing."}return null}getThemeQuestionsForSheet(t){return t?this.toOrderedQuestions(t.questions??[]).filter(e=>e.depth===1):[]}getAnswerableQuestionsForSheet(t){return t?this.getAnswerableQuestions(t.questions??[]):[]}getAnswerableQuestions(t){let e=this.toOrderedQuestions(t),i=this.buildChildCountByParent(e);return e.filter(n=>this.isAnswerableQuestion(n,i))}toOrderedQuestions(t){return[...t??[]].sort((e,i)=>e.order-i.order)}buildChildCountByParent(t){let e=new Map;for(let i of t)i.parentId&&e.set(i.parentId,(e.get(i.parentId)??0)+1);return e}isAnswerableQuestion(t,e){return t.depth<=1?!1:(e.get(t.id)??0)===0}resolveThemeQuestion(t,e){let i=t;for(;i;){if(i.depth===1)return i;let n=i.parentId?.trim()||"";if(!n)break;i=e.get(n)}return null}mapSummary(t){let e=t.questions??t.discussionGuide??[],i=this.getAnswerableQuestions(e);return{id:t.id,projectId:t.projectId,name:t.name,description:t.description??"",segments:[...t.segments??[]],tabOrder:Number.isFinite(t.tabOrder)?Math.max(0,Math.floor(t.tabOrder)):0,questionCount:i.length,respondentCount:t.respondents.length,createdAt:t.createdAt,updatedAt:t.updatedAt}}reindexQuestions(t){let e=[...t].sort((n,r)=>n.order-r.order),i=new Set(e.map(n=>n.id));return e.map((n,r)=>f(b(f({},n),{order:r,depth:Math.max(1,Math.min(F,Math.floor(n.depth)))}),n.parentId&&i.has(n.parentId)?{parentId:n.parentId}:{parentId:void 0,depth:1}))}normalizeSheet(t){let e=this.reindexQuestions(t.questions??t.discussionGuide??[]),i=new Set(this.getAnswerableQuestions(e).map(d=>d.id)),n=new Set(e.map(d=>d.id)),r=[...t.respondents].filter(d=>d.id.trim()&&d.transcriptId.trim()),l=new Set(r.map(d=>d.id)),u=t.cells.filter(d=>l.has(d.respondentId)&&i.has(d.questionId)).map(d=>{let h=(d.answer??d.summary??"").trim(),v=!!(d.manuallyEdited??d.isManuallyEdited),E=d.status==="generating"?"processing":d.status,P=!!(d.isStale||E==="stale"),x=d.lastUpdated??d.updatedAt??new Date().toISOString();return b(f({},d),{sheetId:t.id,answer:h,summary:h,status:P?"stale":E,manuallyEdited:v,isManuallyEdited:v,isStale:P,lastUpdated:x,updatedAt:x})});return b(f({},t),{description:t.description??"",segments:[...t.segments??[]],tabOrder:Number.isFinite(t.tabOrder)?Math.max(0,Math.floor(t.tabOrder)):0,questionCount:i.size,respondentCount:r.length,discussionGuide:e,questions:e,respondents:r,cells:u,collapsedQuestionIds:(t.collapsedQuestionIds??[]).filter(d=>n.has(d)),transcriptRevisionById:f({},t.transcriptRevisionById??{}),transcriptSegmentsById:f({},t.transcriptSegmentsById??{}),updatedAt:new Date().toISOString()})}isQuestionVisible(t,e,i){if(!t.parentId)return!0;let n=t.parentId;for(;n;){if(e.has(n))return!1;n=i.get(n)?.parentId}return!0}resolveQuestionWidth(t){return this.questionColumnWidthById()[t]??we}secondsToTimestamp(t){let e=Number.isFinite(t)?Math.max(0,t):0,i=Math.round(e*1e3),n=Math.floor(i/36e5),r=Math.floor(i%36e5/6e4),l=Math.floor(i%6e4/1e3),u=i%1e3;return`${n.toString().padStart(2,"0")}:${r.toString().padStart(2,"0")}:${l.toString().padStart(2,"0")}.${u.toString().padStart(3,"0")}`}resolveRespondentUploadTimestamp(t){let e=t?.trim()||"";if(!e)return null;let i=Date.parse(e);return Number.isNaN(i)?null:i}delay(t){return new Promise(e=>{setTimeout(e,t)})}resetProjectState(){this.projectId="",this.stopUploadsPolling(),this.stopGridProgressPolling(),this.isLoading.set(!1),this.isSheetL
1oading.set(!1),this.sheetSummaries.set([]),this.activeSheet.set(null),this.availableRespondents.set([]),this.selectedCellRef.set(null),this.selectedCellEditorText.set(""),this.selectedCellEditMode.set(!1),this.sheetWizardOpen.set(!1),this.sheetWizardStep.set(1),this.sheetWizardCollapsedIds.set([]),this.openSheetTabMenu.set(null),this.projectRespondentGroups.set([]),this.editSheetDialogOpen.set(!1),this.editSheetDraft.set(null),this.pendingEditSheetSegmentInput.set(""),this.deleteSheetDialog.set(null),this.isDeletingSheet.set(!1),this.sheetGuideEditorOpen.set(!1),this.transcriptSegmentDialogOpen.set(!1),this.citationDialog.set(null),this.sheetError.set(null),this.sheetNotice.set(null),this.transcriptChunksByUploadId.clear(),this.uploadRevisionByTranscriptId.set({})}static \u0275fac=function(e){return new(e||s)};static \u0275cmp=ie({type:s,selectors:[["app-project-grid-tab"]],viewQuery:function(e,i){if(e&1&&re(H,5),e&2){let n;oe(n=se())&&(i.gridViewport=n.first)}},hostBindings:function(e,i){e&1&&C("mousemove",function(r){return i.onWindowMouseMove(r)},A)("mouseup",function(){return i.onWindowMouseUp()},A)("click",function(r){return i.onWindowClick(r)},A)("keydown.escape",function(){return i.onWindowEscape()},A)("resize",function(){return i.onWindowResize()},A)("scroll",function(){return i.onWindowScroll()},A)},decls:10,vars:8,consts:[[1,"project-tab-shell","grid-tab"],["role","alert",1,"grid-status","grid-status--error"],[1,"grid-status","grid-status--notice"],["role","dialog","aria-modal","true","aria-label","Create sheet wizard",1,"grid-overlay"],["role","dialog","aria-modal","true","aria-label","Discussion guide editor",1,"grid-overlay"],["role","dialog","aria-modal","true","aria-label","Transcript respondent group mapping",1,"grid-overlay"],["role","dialog","aria-modal","true","aria-label","Citation detail",1,"grid-overlay"],["aria-hidden","true",1,"grid-skeleton"],[1,"ds-skeleton","ds-skeleton--line"],["data-test-id","project-grid-empty-state",1,"empty-state"],[1,"loading-state"],["size","small","leadingIcon","add",3,"click"],[1,"grid-meta-row"],[1,"grid-meta-row__left"],[1,"grid-meta-pill"],[1,"grid-meta-pill","grid-meta-pill--warning"],[1,"grid-meta-row__right"],[1,"grid-sheet-frame"],[1,"grid-workspace"],["role","status","aria-live","polite",1,"grid-loading-overlay"],[1,"grid-table-scroll"],[1,"grid-table"],[1,"grid-header-stack"],[1,"grid-meta-row__left",2,"border-bottom","1px solid var(--color-border-subtle)","min-height","2rem","padding","0.35rem 0.68rem"],[1,"grid-header-group-row",3,"grid-template-columns"],[1,"grid-header-row"],[1,"grid-header-cell","grid-header-cell--sticky"],[1,"grid-header-cell"],[1,"grid-viewport",3,"itemSize","minBufferPx","maxBufferPx"],["class","grid-data-row",3,"grid-template-columns",4,"cdkVirtualFor","cdkVirtualForOf","cdkVirtualForTrackBy"],["role","dialog","aria-modal","true","aria-label","Cell inspector","tabindex","0",1,"cell-panel-dialog"],[1,"grid-sheet-toolbar"],["type","button","aria-label","Create sheet",1,"grid-sheet-add",3,"click"],["aria-hidden","true",1,"material-symbols-outlined"],["role","tablist","aria-label","Grid sheets",1,"grid-sheet-tabs"],[1,"grid-sheet-tab-item",3,"grid-sheet-tab-item--active"],["role","menu",1,"grid-sheet-tab-menu","grid-sheet-tab-menu--floating",3,"position","top","left","right","bottom","transform","z-index"],["role","dialog","aria-modal","true","aria-label","Delete sheet confirmation",1,"grid-overlay"],[1,"grid-loading-overlay__card"],["type","button","aria-label","Expand collapsed theme",1,"mini-action"],["type","button","aria-label","Expand collapsed theme",1,"mini-action",3,"click"],[1,"grid-header-group-row"],[1,"grid-header-cell",3,"grid-column"],[1,"grid-header-cell__inner"],["type","button",1,"icon-button"],[1,"icon-placeholder"],["type","button",1,"icon-button",3,"click"],[1,"grid-header-cell__actions"],["type","button",1,"mini-action",3,"click"],["type","button","aria-label","Resize column",1,"column-resize-handle",3,"mousedown"],[1,"grid-data-row"],[1,"grid-data-cell","grid-data-cell--sticky"],[1,"respondent-cell"],["type","button",1,"grid-data-cell","grid-data-cell--button",3,"grid-data-cell--idle","grid-data-cell--processing","grid-data-cell--complete","grid-data-cell--error","grid-data-cell--stale"],["type","button",1,"grid-data-cell","grid-data-cell--button",3,"click"],[1,"grid-cell__summary"],[1,"grid-cell__meta"],[1,"grid-cell__status"],[1,"grid-cell__time"],["type","button",1,"grid-cell__citation-pill"],["type","button",1,"grid-cell__citation-pill",3,"click"],["role","dialog","aria-modal","true","aria-label","Cell inspector","tabindex","0",1,"cell-panel-dialog",3,"click","keydown.escape"],[1,"cell-panel","cell-panel--dialog"],[1,"cell-panel__header"],["type","button","aria-label","Close inspector",1,"icon-button",3,"click"],[1,"cell-panel__facts"],[1,"cell-panel__actions"],["size","small","variant","secondary","leadingIcon","auto_awesome",3,"click"],["size","small","variant","secondary","leadingIcon","edit",3,"click"],["size","small","leadingIcon","save",3,"click","disabled"],[1,"cell-panel__editor"],["rows","10",3,"input","readOnly","value"],[1,"cell-panel__citations"],[1,"citation-list"],["type","button",1,"citation-item"],["type","button",1,"citation-item",3,"click"],[1,"grid-sheet-tab-item"],["type","button","role","tab",1,"grid-sheet-tab",3,"click"],["type","button","aria-label","Open sheet actions",1,"grid-sheet-tab-menu-trigger",3,"click"],["role","menu",1,"grid-sheet-tab-menu","grid-sheet-tab-menu--floating"],["type","button",3,"click"],["type","button",1,"grid-sheet-tab-menu__danger",3,"click"],[1,"grid-overlay__card","grid-overlay__card--confirm"],[1,"grid-overlay__header"],["type","button","aria-label","Close delete dialog",1,"icon-button",3,"click","disabled"],[1,"grid-confirm-copy"],[1,"grid-overlay__footer"],["variant","ghost","size","small","leadingIcon","close",3,"click","disabled"],["type","button",1,"grid-confirm-danger",3,"click","disabled"],[1,"grid-overlay__card","grid-overlay__card--full","grid-overlay__card--wizard"],["type","button","aria-label","Close wizard",1,"icon-button",3,"click"],["aria-hidden","true",1,"wizard-stepper"],[1,"wizard-body"],[1,"wizard-body","wizard-body--editor"],["variant","ghost","size","small","leadingIcon","close",3,"click"],["variant","secondary","size","small","leadingIcon","chevron_left"],["size","small","leadingIcon","chevron_right"],["size","small","leadingIcon","check"],[1,"wizard-field"],["type","text",3,"input","value"],["rows","4",3,"input","value"],[1,"tag-list"],["type","button",1,"tag",3,"tag--selected"],["type","button",1,"tag",3,"click"],[1,"guide-editor__toolbar"],[1,"guide-upload"],["type","file","accept",".docx",3,"change"],[1,"guide-root-add"],["type","text","placeholder","Add interview section",3,"input","value"],["cdkDropList","",1,"guide-tree",3,"cdkDropListDropped","cdkDropListData"],["cdkDrag","",1,"guide-node",3,"padding-left"],["cdkDrag","",1,"guide-node"],["type","button","cdkDragHandle","","aria-label","Drag guide node",1,"icon-button"],["type","text",1,"guide-node__input",3,"input","value"],[1,"guide-node__meta"],[1,"guide-node__actions"],["type","button",1,"mini-action"],["type","button","aria-label","Delete node",1,"icon-button","icon-button--danger",3,"click"],[1,"wizard-review"],[1,"wizard-preview-tree"],[1,"wizard-preview-row",3,"padding-left"],[1,"wizard-preview-row"],["variant","secondary","size","small","leadingIcon","chevron_left",3,"click"],["size","small","leadingIcon","chevron_right",3,"click"],["size","small","leadingIcon","check",3,"click"],["role","dialog","aria-modal","true","aria-label","Edit sheet",1,"grid-overlay"],[1,"grid-overlay__card"],["type","button","aria-label","Close edit sheet dialog",1,"icon-button",3,"click"],["size","small","variant","secondary","leadingIcon","edit_note",3,"click"],["size","small","leadingIcon","save",3,"click"],[1,"grid-overlay__card","grid-overlay__card--full"],["type","button","aria-label","Close editor",1,"icon-button",3,"click"],[1,"guide-editor__warning"],["type","button","aria-label","Close respondent group dialog",1,"icon-button",3,"click"],[1,"segment-dialog-list"],[1,"segment-dialog-row"],["type","text","placeholder","Comma-separated respondent groups",3,"input","value"],[1,"grid-overlay__card","grid-overlay__card--citation"],["type","button","aria-label","Close citation dialog",1,"icon-button",3,"click"],[1,"citation-layout"],[1,"citation-answer"],["controls","",3,"src"],[1,"citation-transcript-panel"],[1,"grid-status","grid-status--error"],[1,"citation-transcript-scroll"],[1,"citation-chunk",3,"id","citation-chunk--highlight"],[1,"citation-chunk",3,"id"]],template:function(e,i){if(e&1&&(o(0,"section",0),I(1,Oe,2,1,"p",1),I(2,ze,2,1,"p",2),I(3,Ne,4,1,"ds-card")(4,lt,2,1),I(5,Tt,27,12,"div",3),I(6,Mt,1,1),I(7,Vt,38,3,"div",4),I(8,At,19,0,"div",5),I(9,$t,3
11,7,"div",6),a()),e&2){let n;p(),w(i.sheetError()?1:-1),p(),w(i.sheetNotice()?2:-1),p(),w(i.isLoading()?3:4),p(2),w(i.sheetWizardOpen()?5:-1),p(),w(i.editSheetDialogOpen()?6:-1),p(),w(i.sheetGuideEditorOpen()?7:-1),p(),w(i.transcriptSegmentDialogOpen()?8:-1),p(),w((n=i.citationDialog())?9:-1,n)}},dependencies:[le,xe,Se,be,ve,_e,me,he,H,ue,pe],styles:[".grid-tab[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:.9rem;min-height:0}.grid-status[_ngcontent-%COMP%]{border-radius:10px;font-size:.82rem;margin:0;padding:.45rem .65rem}.grid-status--error[_ngcontent-%COMP%]{background:color-mix(in srgb,#ef4444 12%,transparent);color:#991b1b}.grid-status--notice[_ngcontent-%COMP%]{background:color-mix(in srgb,#10b981 12%,transparent);color:#065f46}.grid-skeleton[_ngcontent-%COMP%]{display:grid;gap:.55rem}.empty-state[_ngcontent-%COMP%]{display:grid;gap:.6rem}.grid-sheet-toolbar[_ngcontent-%COMP%]{align-items:stretch;display:flex;gap:.24rem;justify-content:flex-start;min-height:2.35rem}.grid-sheet-tabs[_ngcontent-%COMP%]{align-items:stretch;display:flex;gap:.32rem;max-width:calc(100vw - 25rem);overflow-x:auto;padding:0}.grid-sheet-tab[_ngcontent-%COMP%]{align-items:center;background:transparent;border:none;border-radius:7px;color:var(--color-text-muted);cursor:pointer;display:flex;gap:.2rem;height:100%;min-width:0;padding:0 1.85rem 0 .68rem}.grid-sheet-tab--active[_ngcontent-%COMP%]{background:color-mix(in srgb,var(--color-primary-soft) 28%,var(--color-neutral-0));border-color:transparent;box-shadow:none;color:var(--color-text-strong)}.grid-config[_ngcontent-%COMP%]{display:grid;gap:.8rem;grid-template-columns:minmax(0,1fr) minmax(0,20rem)}.grid-config__panel[_ngcontent-%COMP%]{display:grid;gap:.65rem}.grid-config__panel-header[_ngcontent-%COMP%]{align-items:flex-start;display:flex;gap:.7rem;justify-content:space-between}.grid-config__panel-header[_ngcontent-%COMP%]   h3[_ngcontent-%COMP%]{margin:0}.grid-config__panel-header[_ngcontent-%COMP%]   p[_ngcontent-%COMP%]{color:var(--color-text-muted);font-size:.8rem;margin:.2rem 0 0}.guide-upload[_ngcontent-%COMP%]{align-items:center;border:1px dashed var(--color-border-subtle);border-radius:8px;cursor:pointer;display:inline-flex;font-size:.78rem;gap:.3rem;padding:.38rem .6rem}.guide-upload[_ngcontent-%COMP%]   input[_ngcontent-%COMP%]{display:none}.guide-root-add[_ngcontent-%COMP%]{display:flex;gap:.45rem}.guide-root-add[_ngcontent-%COMP%]   input[_ngcontent-%COMP%]{background:var(--color-neutral-0);border:1px solid var(--color-border-subtle);border-radius:8px;flex:1;font-size:.85rem;min-width:0;padding:.48rem .58rem}.guide-tree[_ngcontent-%COMP%]{display:grid;gap:.32rem;max-height:21rem;overflow:auto;padding-right:.25rem}.guide-node[_ngcontent-%COMP%]{align-items:center;background:var(--color-neutral-0);border:1px solid var(--color-border-subtle);border-radius:8px;display:grid;gap:.28rem;grid-template-columns:auto auto 1fr auto auto;min-height:2.2rem;padding:.24rem .3rem}.icon-button[_ngcontent-%COMP%]{align-items:center;background:transparent;border:none;border-radius:6px;color:var(--color-text-muted);cursor:pointer;display:inline-flex;height:1.6rem;justify-content:center;width:1.6rem}.icon-button[_ngcontent-%COMP%]:hover{background:var(--color-surface-hover);color:var(--color-text-strong)}.icon-button[_ngcontent-%COMP%]   .material-symbols-outlined[_ngcontent-%COMP%]{font-size:1rem}.icon-button--danger[_ngcontent-%COMP%]:hover{color:#b91c1c}.icon-placeholder[_ngcontent-%COMP%]{display:inline-block;width:1.6rem}.guide-node__input[_ngcontent-%COMP%]{background:transparent;border:none;color:var(--color-text-strong);font-size:.82rem;min-width:0;outline:none;width:100%}.guide-node__meta[_ngcontent-%COMP%]{color:var(--color-text-muted);font-size:.7rem}.guide-node__actions[_ngcontent-%COMP%]{align-items:center;display:inline-flex;gap:.14rem}.respondent-options[_ngcontent-%COMP%]{display:grid;gap:.36rem;max-height:21rem;overflow:auto}.respondent-option[_ngcontent-%COMP%]{align-items:center;border:1px solid var(--color-border-subtle);border-radius:8px;display:grid;gap:.45rem;grid-template-columns:auto minmax(0,1fr) auto;padding:.44rem .52rem}.respondent-option[_ngcontent-%COMP%]   input[_ngcontent-%COMP%]{margin:0}.respondent-option__copy[_ngcontent-%COMP%]{min-width:0}.respondent-option__copy[_ngcontent-%COMP%]   strong[_ngcontent-%COMP%]{display:block;font-size:.82rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.respondent-option__copy[_ngcontent-%COMP%]   small[_ngcontent-%COMP%]{color:var(--color-text-muted);font-size:.72rem}.grid-meta-row[_ngcontent-%COMP%]{align-items:center;display:flex;gap:.6rem;justify-content:space-between}.grid-meta-row__left[_ngcontent-%COMP%]{align-items:center;display:flex;flex-wrap:wrap;gap:.4rem}.grid-meta-pill[_ngcontent-%COMP%]{background:color-mix(in srgb,var(--color-surface-hover) 65%,transparent);border-radius:999px;color:var(--color-text-muted);font-size:.74rem;padding:.18rem .5rem}.grid-meta-pill--warning[_ngcontent-%COMP%]{color:#92400e}.grid-sheet-frame[_ngcontent-%COMP%]{display:flex;flex:1 1 auto;flex-direction:column;height:calc(100dvh - 13.6rem);min-height:0}.grid-workspace[_ngcontent-%COMP%]{display:flex;flex:1 1 auto;min-height:0}.grid-table-scroll[_ngcontent-%COMP%]{background:transparent;border:none;border-radius:0;flex:1 1 auto;min-height:0;overflow-x:auto;overflow-y:hidden}.grid-table[_ngcontent-%COMP%]{display:flex;flex-direction:column;height:100%;min-width:100%}.grid-header-stack[_ngcontent-%COMP%]{background:var(--color-neutral-0);position:sticky;top:0;z-index:6}.grid-header-group-row[_ngcontent-%COMP%]{display:grid;min-height:2.6rem}.grid-header-row[_ngcontent-%COMP%]{display:grid;min-height:3.5rem}.grid-header-cell[_ngcontent-%COMP%]{border-right:1px solid var(--color-border-subtle);min-width:0;padding:.58rem .68rem;position:relative}.grid-header-cell[_ngcontent-%COMP%]:last-child{border-right:none}.grid-header-cell--sticky[_ngcontent-%COMP%], .grid-data-cell--sticky[_ngcontent-%COMP%]{background:var(--color-neutral-0);left:0;position:sticky;z-index:5}.grid-header-cell--sticky[_ngcontent-%COMP%]{z-index:7}.grid-header-cell__inner[_ngcontent-%COMP%]{align-items:flex-start;display:flex;gap:.28rem}.grid-header-cell__inner[_ngcontent-%COMP%]   strong[_ngcontent-%COMP%]{display:-webkit-box;font-size:.75rem;line-height:1.3;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.grid-header-cell__actions[_ngcontent-%COMP%]{margin-top:.35rem}.mini-action[_ngcontent-%COMP%]{background:color-mix(in srgb,var(--color-surface-hover) 70%,transparent);border:none;border-radius:6px;color:var(--color-text-muted);cursor:pointer;font-size:.68rem;padding:.2rem .42rem}.mini-action[_ngcontent-%COMP%]:hover{color:var(--color-text-strong)}.column-resize-handle[_ngcontent-%COMP%]{background:transparent;border:none;cursor:col-resize;height:100%;position:absolute;right:-5px;top:0;width:10px}.grid-viewport[_ngcontent-%COMP%]{flex:1 1 auto;min-height:0;overflow-x:hidden!important;overflow-y:auto!important}.grid-data-row[_ngcontent-%COMP%]{border-bottom:1px solid color-mix(in srgb,var(--color-border-subtle) 78%,transparent);display:grid;min-height:4.1rem}.grid-data-cell[_ngcontent-%COMP%]{align-items:stretch;border-right:1px solid color-mix(in srgb,var(--color-border-subtle) 78%,transparent);display:flex;min-width:0;padding:.52rem .68rem}.grid-data-cell[_ngcontent-%COMP%]:last-child{border-right:none}.grid-data-cell--button[_ngcontent-%COMP%]{background:transparent;border:none;cursor:pointer;display:grid;gap:.22rem;text-align:left}.grid-data-cell--idle[_ngcontent-%COMP%]{background:color-mix(in srgb,var(--color-surface-hover) 24%,transparent)}.grid-data-cell--complete[_ngcontent-%COMP%]{background:color-mix(in srgb,#34d399 11%,transparent)}.grid-data-cell--stale[_ngcontent-%COMP%]{background:color-mix(in srgb,#f59e0b 14%,transparent)}.grid-data-cell--error[_ngcontent-%COMP%]{background:color-mix(in srgb,#f87171 14%,transparent)}.grid-cell__summary[_ngcontent-%COMP%]{color:var(--color-text-strong);display:-webkit-box;font-size:.74rem;line-height:1.26;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}.respondent-cell[_ngcontent-%COMP%]{display:grid;gap:.2rem;min-width:0}.respondent-cell[_ngcontent-%COMP%]   strong[_ngcontent-%COMP%]{font-size:.78rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.cell-panel[_ngcontent-%COMP%]{display:grid;gap:.55rem;overflow:auto;padding:.7rem}.cell-panel-dialog[_ngcontent-%COMP%]{align-items:stretch;background:color-mix(in srgb,#0f172a 24%,transparent);display:flex;inset:0;justify-content:flex-end;position:fixed;z-index:40}.cell-panel--dialog[_ngcontent-%COMP%]{background:var(--color-neutral-0);border:1px solid var(--color-border-subtle);border-bottom:none;border-right:none;border-top:none;box-shadow:-14px 0 32px color-mix(in srgb,#111827 24%,transparent);height:100%;max-height:100%;width:min(28rem,94vw)}
1.cell-panel__header[_ngcontent-%COMP%]   h4[_ngcontent-%COMP%]{margin:0}.cell-panel__header[_ngcontent-%COMP%]   p[_ngcontent-%COMP%]{color:var(--color-text-muted);font-size:.8rem;margin:.25rem 0 0}.cell-panel__header[_ngcontent-%COMP%]{align-items:flex-start;display:flex;justify-content:space-between}.cell-panel__actions[_ngcontent-%COMP%]{display:flex;gap:.4rem}.cell-panel__editor[_ngcontent-%COMP%]{display:grid;gap:.3rem}.cell-panel__editor[_ngcontent-%COMP%]   span[_ngcontent-%COMP%]{color:var(--color-text-muted);font-size:.78rem}.cell-panel__editor[_ngcontent-%COMP%]   textarea[_ngcontent-%COMP%]{border:1px solid var(--color-border-subtle);border-radius:8px;font:inherit;font-size:.8rem;min-height:9rem;padding:.48rem .55rem;resize:vertical}.cell-panel__citations[_ngcontent-%COMP%]   h5[_ngcontent-%COMP%]{margin:0}.citation-list[_ngcontent-%COMP%]{display:grid;gap:.45rem}.citation-item[_ngcontent-%COMP%]{background:color-mix(in srgb,var(--color-surface-hover) 50%,transparent);border-radius:8px;padding:.45rem .5rem}.citation-item[_ngcontent-%COMP%]   strong[_ngcontent-%COMP%]{font-size:.72rem}.citation-item[_ngcontent-%COMP%]   p[_ngcontent-%COMP%]{font-size:.75rem;margin:.2rem 0 0}@media(max-width:980px){.grid-config[_ngcontent-%COMP%]{grid-template-columns:1fr}.grid-sheet-tabs[_ngcontent-%COMP%]{max-width:100%}}"]})};export{Pe as ProjectGridTabComponent};

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.