1import{a as ps,j as e,F as D,C as I,u as Qs,b as Zs,ac as Xs,r as cs,o as bs,p as ys,s as Ns,ad as Ys}from"./index-B4Fbz1N8.js";import{r as n,b as Js,u as et,f as Ce}from"./vendor-react-DPmWmpvI.js";import{r as ws,u as ss,w as st}from"./xlsx-BojT3SgY.js";import{V as tt}from"./VaultDocPreviewModal-7BfjnJuo.js";import{F as Re,X as Te,L as De,Y as ks,x as Ze,o as As,ab as xs,cC as as,D as $s,aq as at,S as Es,aK as ts,cD as Ss,P as _s,ax as lt,T as hs,a0 as nt,cE as us,al as Cs,a3 as Qe,cA as it,aP as Ts,cF as rt,h as ot,a as dt,a8 as ms,i as Ds,b1 as Is,cG as Ms,aa as ct,C as ut,E as mt,as as zs,cH as ht}from"./vendor-ui-DBK2XfYL.js";import"./vendor-canvas-B-q-NmKy.js";import"./vendor-pdf-xZJ_zfOo.js";import"./vendor-misc-DuVBITyX.js";import"./purify.es-4eNOHKSq.js";const pt=({doc:a,eventId:v,organizerId:P,user:E,team:N=[],onClose:b,onSuccess:O,onOpenInTableEditor:K=null})=>{const{success:Ee,error:ne}=ps(),[me,$]=n.useState(!0),[Le,C]=n.useState(""),[ie,J]=n.useState(null),[re,be]=n.useState([]),[he,oe]=n.useState(""),[_,Ne]=n.useState([]),[U,pe]=n.useState([]),[Q,Ie]=n.useState(""),[B,de]=n.useState(""),[ce,ze]=n.useState(""),[Z,G]=n.useState(""),[q,M]=n.useState(""),[y,ee]=n.useState([]),[R,se]=n.useState(new Set),[Fe,xe]=n.useState(!1);n.useEffect(()=>{(async()=>{if(!a?.url){C("Document file URL is not available."),$(!1);return}const r=new AbortController,o=setTimeout(()=>r.abort(),6e3);try{$(!0),C("");const h=await fetch(a.url,{signal:r.signal});if(clearTimeout(o),!h.ok)throw new Error(`HTTP ${h.status}`);const c=await h.arrayBuffer(),d=ws(c,{type:"array",cellDates:!0});if(J(d),be(d.SheetNames||[]),d.SheetNames&&d.SheetNames.length>0){const z=d.SheetNames.find(p=>p.toLowerCase().includes("task")||p.toLowerCase().includes("todo")||p.toLowerCase().includes("schedule")||p.toLowerCase().includes("action"))||d.SheetNames[0];oe(z),H(d,z)}else C("No sheets found in this file.")}catch(h){console.warn("[VaultSpreadsheetTaskImporter] Remote fetch/parse error:",h),clearTimeout(o),C("Unable to download spreadsheet directly. You can re-select the file from your computer below or open in Table Editor.")}finally{$(!1)}})()},[a]);const Ge=t=>{const r=t.target.files?.[0];if(!r)return;$(!0),C("");const o=new FileReader;o.onload=h=>{try{const c=new Uint8Array(h.target.result),d=ws(c,{type:"array",cellDates:!0});if(J(d),be(d.SheetNames||[]),d.SheetNames&&d.SheetNames.length>0){const z=d.SheetNames.find(p=>p.toLowerCase().includes("task")||p.toLowerCase().includes("todo")||p.toLowerCase().includes("schedule")||p.toLowerCase().includes("action"))||d.SheetNames[0];oe(z),H(d,z)}$(!1)}catch(c){console.error("[VaultSpreadsheetTaskImporter] Local parse error:",c),C("Failed to parse selected file."),$(!1)}},o.readAsArrayBuffer(r)},H=(t,r)=>{try{const o=t.Sheets[r];if(!o)return;const h=ss.sheet_to_json(o,{header:1,defval:""});if(!h||h.length===0){Ne([]),pe([]),ee([]);return}let c=0;for(let S=0;S<Math.min(h.length,5);S++)if(h[S].filter(Boolean).length>=2){c=S;break}const d=h[c].map(S=>String(S||"").trim()),z=h.slice(c+1).filter(S=>S.some(m=>String(m).trim()!==""));pe(d),Ne(z);let p="",T="",W="",X="",te="";d.forEach(S=>{const m=S.toLowerCase();!p&&(m.includes("task")||m.includes("title")||m.includes("name")||m.includes("item")||m.includes("deliverable")||m.includes("activity"))?p=S:!T&&(m.includes("desc")||m.includes("detail")||m.includes("note")||m.includes("comment")||m.includes("scope"))?T=S:!W&&(m.includes("priority")||m.includes("urgency")||m.includes("importance")||m.includes("level"))?W=S:!X&&(m.includes("due")||m.includes("date")||m.includes("deadline")||m.includes("timeline")||m.includes("target"))?X=S:!te&&(m.includes("assign")||m.includes("owner")||m.includes("responsible")||m.includes("lead")||m.includes("person")||m.includes("who"))&&(te=S)}),!p&&d.length>0&&(p=d[0]),Ie(p),de(T),ze(W),G(X),M(te),L(z,d,p,T,W,X,te)}catch(o){console.error("[VaultSpreadsheetTaskImporter] Sheet loading error:",o)}},Oe=t=>{oe(t),ie&&H(ie,t)},L=(t=_,r=U,o=Q,h=B,c=ce,d=Z,z=q)=>{if(!o||r.length===0||t.length===0){ee([]),se(new Set);return}const p=r.indexOf(o),T=h?r.indexOf(h):-1,W=c?r.indexOf(c):-1,X=d?r.indexOf(d):-1,te=z?r.indexOf(z):-1,S=[],m=new Set;t.forEach((ae,Pe)=>{const we=ae[p];if(!we||String(we).trim()==="")return;const ke=String(we).trim(),Se=T!==-1&&ae[T]?String(ae[T]).trim():"";let Be="Medium";if(W!==-1&&ae[W]){const j=String(ae[W]).trim().toLowerCase();j.includes("high")||j.includes("urgent")||j.includes("critical")||j==="1"||j==="p1"?Be="High":j.includes("low")||j.includes("minor")||j==="3"||j==="p3"?Be="Low":Be="Medium"}let Ae="";if(X!==-1&&ae[X]){const j=ae[X];if(j instanceof Date&&!isNaN(j))Ae=j.toISOString().split("T")[0];else{const le=new Date(j);isNaN(le.getTime())||(Ae=le.toISOString().split("T")[0])}}let _e=null,ve="";if(te!==-1&&ae[te]){ve=String(ae[te]).trim();const j=ve.toLowerCase();_e=N.find(le=>{const ge=(le.displayName||le.name||le.firstName||"").toLowerCase(),qe=(le.email||"").toLowerCase();return ge.includes(j)||j.includes(ge)||qe===j})||null}S.push({index:Pe,title:ke,description:Se,priority:Be,dueDate:Ae,assigneeId:_e?.id||_e?.uid||null,assigneeName:_e?.displayName||_e?.name||ve||null,rawAssignee:ve}),m.add(Pe)}),ee(S),se(m)},Ue=()=>{R.size===y.length?se(new Set):se(new Set(y.map(t=>t.index)))},l=t=>{se(r=>{const o=new Set(r);return o.has(t)?o.delete(t):o.add(t),o})},g=async()=>{const t=y.filter(c=>R.has(c.index));if(t.length===0){ne("Please select at least one task to import.");return}xe(!0);const r=P||E?.organizerId||E?.uid,o=E?.displayName||E?.name||E?.firstName||"Organizer",h=new Date().toISOString();try{let c=0;
1for(const d of t){const z={title:d.title,description:d.description||`Imported from spreadsheet "${a.name}" (Sheet: ${he})`,priority:d.priority||"Medium",dueDate:d.dueDate||null,status:"To Do",eventId:v||null,organizerId:r,createdBy:E?.uid||null,createdByName:o,assigneeId:d.assigneeId||null,assigneeName:d.assigneeName||"Open to Team",isGeneralTask:!d.assigneeId,accessLevel:d.assigneeId?"assigned":"open_team",linkedDocIds:a?.id?[a.id]:[],linkedDocs:a?.id?[{id:a.id,name:a.name,url:a.url,size:a.size||0,type:a.type||"spreadsheet",version:a.version||1}]:[],createdAt:h,updatedAt:h},{id:p,error:T}=await D.add(I.TASKS,z);if(!T&&p&&(c++,d.assigneeId&&d.assigneeId!==E?.uid))try{await D.add(I.USER_NOTIFICATIONS,{userId:d.assigneeId,type:"task_assigned",title:`New Task: ${d.title}`,message:`${o} assigned you task "${d.title}" from spreadsheet "${a.name}".`,link:`/tasks?taskId=${p}`,eventId:v||null,read:!1,createdAt:h})}catch(W){console.warn("[VaultSpreadsheetTaskImporter] Notification error:",W)}}try{await D.add(I.TEAM_MESSAGES,{organizerId:r,eventId:v||null,senderId:E?.uid,senderName:o,type:"system_activity",text:`ð ${o} imported ${c} tasks from spreadsheet "${a.name}" (Sheet: ${he})`,createdAt:h})}catch(d){console.warn("[VaultSpreadsheetTaskImporter] Activity post error:",d)}Ee(`Successfully imported ${c} tasks into EventPulse!`),typeof O=="function"&&O(c),b()}catch(c){console.error("[VaultSpreadsheetTaskImporter] Batch import error:",c),ne("An error occurred during task import. Please try again.")}finally{xe(!1)}},x=()=>{if(typeof K=="function"){const t=U.map((o,h)=>{const c=o.toLowerCase();let d="text";return c.includes("priority")?d="priority":c.includes("due")||c.includes("date")?d="date":c.includes("assign")||c.includes("owner")?d="assignee":c.includes("status")?d="status":(c.includes("amount")||c.includes("cost")||c.includes("qty"))&&(d="number"),{id:`col_${h}`,name:o,type:d}}),r=_.map((o,h)=>{const c={id:`row_${Date.now()}_${h}`};return U.forEach((d,z)=>{c[`col_${z}`]=o[z]!==void 0?String(o[z]):""}),c});b(),K({name:a.name.replace(/\.[^/.]+$/,""),columns:t.length>0?t:void 0,rows:r})}};return e.jsx("div",{className:"vault-importer-overlay",onClick:b,children:e.jsxs("div",{className:"vault-importer-modal",onClick:t=>t.stopPropagation(),children:[e.jsxs("div",{className:"vault-importer-header",children:[e.jsxs("div",{className:"vault-importer-title-group",children:[e.jsx("div",{className:"vault-importer-icon-wrap",children:e.jsx(Re,{size:22,className:"text-primary"})}),e.jsxs("div",{style:{minWidth:0,flex:1},children:[e.jsx("h3",{children:"Import Tasks from Spreadsheet"}),e.jsxs("p",{className:"text-xs text-muted truncate",style:{maxWidth:"240px"},children:["Source: ",e.jsx("strong",{children:a.name})]})]}),e.jsx("button",{className:"vault-close-btn sm:hidden",onClick:b,children:e.jsx(Te,{size:18})})]}),e.jsxs("div",{className:"vault-importer-header-actions",children:[K&&e.jsxs("button",{type:"button",className:"gm-btn-secondary",style:{padding:"0.4rem 0.75rem",fontSize:"0.8rem"},onClick:x,title:"Edit cells and add rows directly in EventPulse table editor",children:[e.jsx(Re,{size:14}),e.jsx("span",{children:"Open in Table Editor"})]}),e.jsx("button",{className:"vault-close-btn hidden sm:flex",onClick:b,children:e.jsx(Te,{size:20})})]})]}),e.jsx("div",{className:"vault-importer-body",children:me?e.jsxs("div",{className:"vault-importer-loading",children:[e.jsx("div",{className:"vault-loading-spinner-wrap",children:e.jsx(De,{size:36,className:"animate-spin text-primary"})}),e.jsx("h4",{children:"Reading Spreadsheet Data..."}),e.jsx("p",{className:"text-xs text-muted",children:"Parsing columns, rows, and sheet tabs for task extraction"})]}):Le?e.jsxs("div",{className:"vault-importer-error",children:[e.jsx(ks,{size:32,className:"text-rose-400 mb-2"}),e.jsx("p",{style:{maxWidth:"480px",margin:"0 auto 1.25rem"},children:Le}),e.jsxs("div",{className:"flex items-center justify-center gap-3 flex-wrap",children:[e.jsxs("label",{className:"gm-btn-primary cursor-pointer",style:{margin:0,padding:"0.5rem 1.2rem"},children:[e.jsx(Re,{size:15}),e.jsx("span",{children:"Select File from Device"}),e.jsx("input",{type:"file",accept:".xlsx,.xls,.csv",style:{display:"none"},onChange:Ge})]}),K&&e.jsx("button",{type:"button",className:"gm-btn-secondary",onClick:x,children:"Open Table Editor Instead"})]})]}):e.jsxs(e.Fragment,{children:[re.length>1&&e.jsxs("div",{className:"vault-sheet-selector-wrap",children:[e.jsx("label",{className:"text-xs font-semibold text-muted uppercase tracking-wider",children:"Select Sheet / Tab:"}),e.jsx("div",{className:"vault-sheet-tabs",children:re.map(t=>e.jsxs("button",{type:"button",className:`vault-sheet-tab ${he===t?"active":""}`,onClick:()=>Oe(t),children:[e.jsx(Ze,{size:14}),e.jsx("span",{children:t})]},t))})]}),e.jsxs("div",{className:"vault-mapping-section",children:[e.jsxs("h4",{className:"text-sm font-semibold mb-3 flex items-center gap-2",children:[e.jsx("span",{children:"Map Spreadsheet Columns"}),e.jsx("span",{className:"text-xs text-muted font-normal",children:"(Auto-detected from sheet headers)"})]}),e.jsxs("div",{className:"vault-mapping-grid",children:[e.jsxs("div",{className:"vault-mapping-field",children:[e.jsx("label",{children:"Task Title *"}),e.jsxs("select",{value:Q,onChange:t=>{Ie(t.target.value),L(_,U,t.target.value,B,ce,Z,q)},children:[e.jsx("option",{value:"",children:"-- Select Column --"}),U.map((t,r)=>e.jsx("option",{value:t,children:t},r))]})]}),e.jsxs("div",{className:"vault-mapping-field",children:[e.jsx("label",{children:"Description / Notes"}),e.jsxs("select",{value:B,onChange:t=>{de(t.target.value),L(_,U,Q,t.target.value,ce,Z,q)},children:[e.jsx("option",{value:"",children:"-- None / Optional --"}),U.map((t,r)=>e.jsx("option",{value:t,children:t},r))]})]}),e.jsxs("div",{className:"vault-mapping-field",children:[e.jsx("label",{children:"Priority"}),e.jsxs("select",{value:ce,onChange:t=>{ze(t.target.value),L(_,U,Q,B,t.target.value,Z,q)},children:[e.jsx("option",{value:"",children:"-- Default to Medium --"}),U.map((t,r)=>e.jsx("option",{value:t,children:t},r))]})]}),e.jsxs("div",{className:"vault-mapping-field",children:[e.jsx("label",{children:"Due Date"}),e.jsxs("select",{value:Z,onChange:t=>{G(t.target.value),L(_,U,Q,B,ce,t.target.value,q)},children:[e.jsx("option",{value:"",children:"-- None / Optional --"}),U.map((t,r)=>e.jsx("option",{value:t,children:t},r))]})]}),e.jsxs("div",{className:"vault-mapping-field",children:[e.jsx("label",{children:"Assignee / Owner"}),e.jsxs("select",{value:q,onChange:t=>{M(t.target.value),L(_,U,Q,B,ce,Z,t.target.value)},children:[e.jsx("option",{value:"",children:"-- None / Open Team --"}),U.map((t,r)=>e.jsx("option",{value:t,children:t},r))]})]})]})]}),e.jsxs("div",{className:"vault-preview-section",children:[e.jsxs("div",{className:"flex items-center justify-between mb-3 flex-wrap gap-2",children:[e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx("button",{type:"button",className:"gm-btn-secondary",style:{padding:"0.35rem 0.75rem",fontSize:"0.8rem"},onClick:Ue,children:R.size===y.length?"Deselect All":"Select All"}),e.jsxs("span",{className:"text-xs text-muted",children:[R.size," of ",y.length," tasks selected for import"]}
1)]}),e.jsxs("span",{className:"text-xs text-primary bg-primary/10 px-2 py-1 rounded border border-primary/20",children:["ð Will auto-link to ",a.name]})]}),e.jsx("div",{className:"vault-preview-table-wrap",children:y.length===0?e.jsxs("div",{className:"p-8 text-center text-muted",children:[e.jsx(ks,{size:20,className:"inline-block mb-1"}),e.jsx("p",{children:"No tasks could be extracted with the current column mappings."})]}):e.jsxs("table",{className:"vault-custom-table",children:[e.jsx("thead",{children:e.jsxs("tr",{children:[e.jsx("th",{style:{width:"40px",textAlign:"center"},children:e.jsx("input",{type:"checkbox",checked:y.length>0&&R.size===y.length,onChange:Ue})}),e.jsx("th",{children:"Task Title"}),e.jsx("th",{children:"Description"}),e.jsx("th",{children:"Priority"}),e.jsx("th",{children:"Due Date"}),e.jsx("th",{children:"Assignee"})]})}),e.jsx("tbody",{children:y.map(t=>e.jsxs("tr",{className:R.has(t.index)?"vault-row-selected":"",onClick:()=>l(t.index),style:{cursor:"pointer"},children:[e.jsx("td",{style:{textAlign:"center"},onClick:r=>r.stopPropagation(),children:e.jsx("input",{type:"checkbox",checked:R.has(t.index),onChange:()=>l(t.index)})}),e.jsx("td",{style:{fontWeight:600},children:t.title}),e.jsx("td",{className:"text-muted text-xs",style:{maxWidth:"240px",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:t.description||"-"}),e.jsx("td",{children:e.jsx("span",{className:`priority-badge ${t.priority==="High"?"text-error bg-error-dim":t.priority==="Low"?"text-success bg-success-dim":"text-warning bg-warning-dim"}`,children:t.priority})}),e.jsx("td",{className:"text-xs text-muted",children:t.dueDate||"-"}),e.jsx("td",{children:t.assigneeName?e.jsxs("span",{className:"inline-flex items-center gap-1 text-xs",children:[e.jsx(As,{size:12,className:"text-primary"}),e.jsx("span",{children:t.assigneeName})]}):e.jsx("span",{className:"text-xs text-muted",children:"Open to Team"})})]},t.index))})]})})]})]})}),e.jsxs("div",{className:"vault-importer-footer",children:[e.jsx("button",{type:"button",className:"gm-btn-secondary",onClick:b,disabled:Fe,children:"Cancel"}),e.jsx("button",{type:"button",className:"gm-btn-primary flex items-center gap-2",disabled:Fe||R.size===0||me,onClick:g,children:Fe?e.jsxs(e.Fragment,{children:[e.jsx(De,{size:16,className:"animate-spin"}),e.jsxs("span",{children:["Importing ",R.size," Tasks..."]})]}):e.jsxs(e.Fragment,{children:[e.jsx(xs,{size:16}),e.jsxs("span",{children:["Import ",R.size," Tasks to EventPulse"]})]})})]})]})})},We=a=>
1a==null?"":typeof a=="number"||typeof a=="boolean"?a:String(a).replace(/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi,"").replace(/javascript:/gi,"").trim(),xt=[{id:"col_title",name:"Task / Item Name",type:"text",required:!0},{id:"col_desc",name:"Description / Notes",type:"text"},{id:"col_priority",name:"Priority",type:"priority"},{id:"col_due",name:"Due Date",type:"date"},{id:"col_assignee",name:"Assignee",type:"assignee"},{id:"col_status",name:"Status",type:"status"}],vt=({tableDoc:a=null,initialData:v=null,eventId:P,organizerId:E,folderId:N=null,user:b,team:O=[],onClose:K,onSaved:Ee})=>{const{success:ne,error:me}=ps(),[$,Le]=n.useState(a?.name||v?.name||"Untitled Custom Table"),[C,ie]=n.useState(a?.columns||v?.columns||xt),[J,re]=n.useState(a?.rows||v?.rows||[{id:`row_${Date.now()}_1`,col_title:"Setup registration desk",col_desc:"Badge printers and scanners",col_priority:"High",col_due:"",col_assignee:"",col_status:"To Do"},{id:`row_${Date.now()}_2`,col_title:"Confirm catering delivery",col_desc:"Lunch boxes for 200 attendees",col_priority:"Medium",col_due:"",col_assignee:"",col_status:"To Do"},{id:`row_${Date.now()}_3`,col_title:"AV & Projector Soundcheck",col_desc:"Main stage wireless mics",col_priority:"High",col_due:"",col_assignee:"",col_status:"In Progress"}]),[be,he]=n.useState(""),[oe,_]=n.useState(new Set),[Ne,U]=n.useState(!1),[pe,Q]=n.useState(!1),[Ie,B]=n.useState(!1),[de,ce]=n.useState(""),[ze,Z]=n.useState("text"),[G,q]=n.useState(!0);n.useEffect(()=>{const l=setTimeout(()=>q(!1),200);return()=>clearTimeout(l)},[]);const M=n.useMemo(()=>{if(!be.trim())return J;const l=be.toLowerCase();return J.filter(g=>Object.values(g).some(x=>String(x||"").toLowerCase().includes(l)))},[J,be]),y=(l,g,x)=>{re(t=>t.map(r=>r.id===l?{...r,[g]:We(x)}:r))},ee=()=>{const l={id:`row_${Date.now()}_${Math.random().toString(36).substring(2,7)}`};C.forEach(g=>{g.type==="priority"?l[g.id]="Medium":g.type==="status"?l[g.id]="To Do":l[g.id]=""}),re(g=>[...g,l])},R=l=>{const g={...l,id:`row_${Date.now()}_${Math.random().toString(36).substring(2,7)}`,col_title:l.col_title?`${l.col_title} (Copy)`:"Copy"};re(x=>[...x,g]),ne("Row duplicated")},se=l=>{re(g=>g.filter(x=>x.id!==l)),_(g=>{const x=new Set(g);return x.delete(l),x})},Fe=l=>{if(l.preventDefault(),!de.trim())return;const x={id:`col_${Date.now()}_${Math.random().toString(36).substring(2,6)}`,name:We(de.trim()),type:ze};ie(t=>[...t,x]),ce(""),Z("text"),B(!1),ne(`Column "${x.name}" added`)},xe=l=>{if(C.length<=1){me("A table must have at least 1 column.");return}ie(g=>g.filter(x=>x.id!==l)),re(g=>g.map(x=>{const t={...x};return delete t[l],t}))},Ge=()=>{oe.size===M.length?_(new Set):_(new Set(M.map(l=>l.id)))},H=l=>{_(g=>{const x=new Set(g);return x.has(l)?x.delete(l):x.add(l),x})},Oe=async()=>{if(!$.trim()){me("Please enter a name for the table.");return}U(!0);const l=E||b?.organizerId||b?.uid,g=b?.displayName||b?.name||b?.firstName||"Organizer",x=new Date().toISOString();try{const t=J.map(h=>{const c={id:h.id};
1return C.forEach(d=>{c[d.id]=We(h[d.id]||"")}),c}),r={name:We($.trim()),type:"custom_table",columns:C,rows:t,rowCount:t.length,eventId:P||null,organizerId:l,folderId:a?.folderId!==void 0?a.folderId:N||null,uploadedBy:b?.uid,uploaderName:g,lastUpdatedBy:b?.uid,lastUpdatedByName:g,version:a?.version?a.version+1:1,updatedAt:x};let o=a?.id;if(a?.id)await D.update(I.DOCUMENTS,a.id,r),ne(`Table "${$}" saved successfully!`);else{r.createdAt=x;const{id:h,error:c}=await D.add(I.DOCUMENTS,r);if(c)throw c;o=h,ne(`Custom table "${$}" created in Vault!`)}typeof Ee=="function"&&Ee({id:o,...r}),K()}catch(t){console.error("[VaultCustomTableModal] Save error:",t),me("Failed to save table to Document Vault.")}finally{U(!1)}},L=async()=>{const l=J.filter(r=>oe.has(r.id));if(l.length===0){me("Please select at least one row to convert to tasks.");return}Q(!0);const g=E||b?.organizerId||b?.uid,x=b?.displayName||b?.name||b?.firstName||"Organizer",t=new Date().toISOString();try{const r=C.find(p=>p.id==="col_title"||p.type==="text")||C[0],o=C.find(p=>p.id==="col_desc"||p.name.toLowerCase().includes("desc")),h=C.find(p=>p.type==="priority"),c=C.find(p=>p.type==="date"),d=C.find(p=>p.type==="assignee");let z=0;for(const p of l){const T=p[r.id];if(!T||!String(T).trim())continue;const W=o?p[o.id]:"",X=h&&p[h.id]?p[h.id]:"Medium",te=c&&p[c.id]?p[c.id]:null,S=d?p[d.id]:null,m=O.find(ke=>(ke.uid||ke.id)===S),ae={title:We(T),description:We(W)||`Created from table "${$}"`,priority:["High","Medium","Low"].includes(X)?X:"Medium",dueDate:te||null,status:"To Do",eventId:P||null,organizerId:g,createdBy:b?.uid||null,createdByName:x,assigneeId:m?m.uid||m.id:null,assigneeName:m?m.displayName||m.name||"Team Member":"Open to Team",isGeneralTask:!m,accessLevel:m?"assigned":"open_team",linkedDocIds:a?.id?[a.id]:[],linkedDocs:a?.id?[{id:a.id,name:$,type:"custom_table",version:a.version||1}]:[],createdAt:t,updatedAt:t},{id:Pe,error:we}=await D.add(I.TASKS,ae);if(!we&&Pe&&(z++,m&&m.uid!==b?.uid))try{await D.add(I.USER_NOTIFICATIONS,{userId:m.uid,type:"task_assigned",title:`New Task: ${T}`,message:`${x} assigned you task "${T}" from table "${$}".`,link:`/tasks?taskId=${Pe}`,eventId:P||null,read:!1,createdAt:t})}catch{}}ne(`Converted ${z} row${z===1?"":"s"} into Team Tasks!`),_(new Set)}catch(r){console.error("[VaultCustomTableModal] Conversion error:",r),me("Failed to convert rows to tasks.")}finally{Q(!1)}},Ue=()=>{try{const l=C.map(o=>o.name),g=J.map(o=>C.map(h=>{if(h.type==="assignee"){const c=O.find(d=>(d.uid||d.id)===o[h.id]);return c?c.displayName||c.name||c.email:o[h.id]||""}return o[h.id]||""})),x=ss.aoa_to_sheet([l,...g]),t=ss.book_new();ss.book_append_sheet(t,x,"Table");const r=`${$.replace(/[^a-zA-Z0-9_-]/g,"_")}.xlsx`;st(t,r),ne(`Exported table as ${r}!`)}catch(l){console.error("Export error:",l),me("Failed to export table.")}};return e.jsx("div",{className:"vault-table-modal-overlay",onClick:K,children:e.jsxs("div",{className:"vault-table-modal-container",onClick:l=>l.stopPropagation(),children:[e.jsxs("div",{className:"vault-table-modal-header",children:[e.jsxs("div",{className:"vault-table-title-wrap",children:[e.jsx("div",{className:"vault-table-icon-wrap",children:e.jsx(as,{size:20,className:"text-primary"})}),e.jsxs("div",{style:{minWidth:0,flex:1},children:[e.jsx("input",{type:"text",className:"vault-table-name-input",value:$,onChange:l=>Le(l.target.value),placeholder:"Enter Table Name...",title:"Click to edit table name"}),e.jsxs("p",{className:"vault-table-subtitle",children:["Interactive Table ⢠",J.length," rows ⢠",C.length," columns"]})]}),e.jsx("button",{className:"vault-close-btn sm:hidden",onClick:K,title:"Close",children:e.jsx(Te,{size:18})})]}),e.jsxs("div",{className:"vault-table-header-actions",children:[e.jsxs("button",{type:"button",className:"gm-btn-secondary",onClick:Ue,title:"Export to Excel / CSV",children:[e.jsx($s,{size:15}),e.jsx("span",{children:"Export"})]}),e.jsx("button",{type:"button",className:"gm-btn-primary",disabled:Ne,onClick:Oe,children:Ne?e.jsxs(e.Fragment,{children:[e.jsx(De,{size:16,className:"animate-spin"})," Saving..."]}):e.jsxs(e.Fragment,{children:[e.jsx(at,{size:15})," Save Table"]})}),e.jsx("button",{className:"vault-close-btn hidden sm:flex",onClick:K,title:"Close",children:e.jsx(Te,{size:20})})]})]}),e.jsxs("div",{className:"vault-table-toolbar",children:[e.jsxs("div",{className:"vault-table-search",children:[e.jsx(Es,{size:15,className:"text-muted"}),e.jsx("input",{type:"text",placeholder:"Search rows...",value:be,onChange:l=>he(l.target.value)}),be&&e.jsx("button",{className:"vault-clear-search",onClick:()=>he(""),children:e.jsx(Te,{size:13})})]}),e.jsxs("div",{className:"vault-table-tools-right",children:[oe.size>0&&e.jsxs("button",{type:"button",className:"gm-btn-secondary",style:{background:"rgba(236, 72, 153, 0.12)",color:"hsl(var(--primary))",borderColor:"hsl(var(--primary) / 0.3)"},disabled:pe,onClick:L,children:[pe?e.jsx(De,{size:14,className:"animate-spin"}):e.jsx(ts,{size:14}),e.jsxs("span",{children:["Convert ",oe.size," Selected to Tasks"]})]}),e.jsxs("button",{type:"button",className:"gm-btn-secondary",onClick:()=>B(!0),children:[e.jsx(Ss,{size:14}),e.jsx("span",{children:"Add Column"})]}),e.jsxs("button",{type:"button",className:"gm-btn-primary",style:{padding:"0.45rem 1rem",fontSize:"0.85rem"},onClick:ee,children:[e.jsx(_s,{size:15}),e.jsx("span",{children:"Add Row"})]})]})]}),e.jsx("div",{className:"vault-table-grid-scroll",children:G?e.jsx("div",{className:"vault-table-skeleton-wrap",children:[1,2,3,4,5].map(l=>e.jsxs("div",{className:"vault-table-skeleton-row",children:[e.jsx("div",{className:"vault-skeleton-cell",style:{width:"40px"}}),e.jsx("div",{className:"vault-skeleton-cell",style:{width:"25%"}}),e.jsx("div",{className:"vault-skeleton-cell",style:{width:"35%"}}),e.jsx("div",{className:"vault-skeleton-cell",style:{width:"15%"}}),e.jsx("div",{className:"vault-skeleton-cell",style:{width:"15%"}})]},l))}):e.jsxs("table",{className:"vault-custom-table",children:[e.jsx("thead",{children:e.jsxs("tr",{children:[e.jsx("th",{style:{width:"44px",textAlign:"center"},children:e.jsx("input",{type:"checkbox",checked:M.length>0&&oe.size===M.length,onChange:Ge,title:"Select All Rows"})}),C.map(l=>e.jsx("th",{className:"vault-col-header",children:e.jsxs("div",{className:"flex items-center justify-between gap-1.5",children:[e.jsx("span",{className:"truncate",children:l.name}),C.length>
11&&e.jsx("button",{type:"button",className:"vault-col-delete-btn",onClick:()=>xe(l.id),title:`Delete column "${l.name}"`,children:e.jsx(Te,{size:12})})]})},l.id)),e.jsx("th",{style:{width:"80px",textAlign:"center"},children:"Actions"})]})}),e.jsx("tbody",{children:M.length>0?M.map((l,g)=>{const x=oe.has(l.id);return e.jsxs("tr",{className:x?"vault-row-selected":"",children:[e.jsx("td",{style:{textAlign:"center"},children:e.jsx("input",{type:"checkbox",checked:x,onChange:()=>H(l.id)})}),C.map(t=>{const r=l[t.id]||"";return t.type==="priority"?e.jsx("td",{children:e.jsxs("select",{className:"vault-cell-select",value:r||"Medium",onChange:o=>y(l.id,t.id,o.target.value),children:[e.jsx("option",{value:"Low",children:"Low"}),e.jsx("option",{value:"Medium",children:"Medium"}),e.jsx("option",{value:"High",children:"High"})]})},t.id):t.type==="status"?e.jsx("td",{children:e.jsxs("select",{className:"vault-cell-select",value:r||"To Do",onChange:o=>y(l.id,t.id,o.target.value),children:[e.jsx("option",{value:"To Do",children:"To Do"}),e.jsx("option",{value:"In Progress",children:"In Progress"}),e.jsx("option",{value:"Done",children:"Done"})]})},t.id):t.type==="assignee"?e.jsx("td",{children:e.jsxs("select",{className:"vault-cell-select",value:r,onChange:o=>y(l.id,t.id,o.target.value),children:[e.jsx("option",{value:"",children:"Open to Team"}),O.map(o=>e.jsx("option",{value:o.uid||o.id,children:o.displayName||o.name||o.email},o.uid||o.id))]})},t.id):t.type==="date"?e.jsx("td",{children:e.jsx("input",{type:"date",className:"vault-cell-input",value:r,onChange:o=>y(l.id,t.id,o.target.value)})},t.id):t.type==="number"?e.jsx("td",{children:e.jsx("input",{type:"number",className:"vault-cell-input",placeholder:"0",value:r,onChange:o=>y(l.id,t.id,o.target.value)})},t.id):e.jsx("td",{children:e.jsx("input",{type:"text",className:"vault-cell-input",placeholder:"Type here...",value:r,onChange:o=>y(l.id,t.id,o.target.value)})},t.id)}),e.jsx("td",{style:{textAlign:"center"},children:e.jsxs("div",{className:"vault-row-actions",children:[e.jsx("button",{type:"button",className:"vault-row-btn",onClick:()=>R(l),title:"Duplicate row",children:e.jsx(lt,{size:13})}),e.jsx("button",{type:"button",className:"vault-row-btn danger",onClick:()=>se(l.id),title:"Delete row",children:e.jsx(hs,{size:13})})]})})]},l.id)}):e.jsx("tr",{children:e.jsx("td",{colSpan:C.length+2,className:"vault-table-empty",children:e.jsx("p",{children:"No rows found matching your search."})})})})]})}),e.jsxs("div",{className:"vault-table-modal-footer",children:[e.jsxs("div",{className:"text-xs text-muted",style:{lineHeight:1.4},children:["ð¡ Tip: Select rows and click ",e.jsx("strong",{children:'"Convert to Tasks"'})," to assign action items to your team."]}),e.jsxs("div",{className:"vault-footer-buttons flex items-center gap-2",children:[e.jsx("button",{type:"button",className:"gm-btn-secondary",onClick:K,children:"Close"}),e.jsx("button",{type:"button",className:"gm-btn-primary",disabled:Ne,onClick:Oe,children:Ne?e.jsxs(e.Fragment,{children:[e.jsx(De,{size:15,className:"animate-spin"})," Saving..."]}):e.jsxs(e.Fragment,{children:[e.jsx(xs,{size:15})," Save & Apply"]})})]})]}),Ie&&e.jsx("div",{className:"vault-mini-modal-overlay",onClick:()=>B(!1),children:e.jsxs("div",{className:"vault-mini-modal-box",onClick:l=>l.stopPropagation(),children:[e.jsxs("div",{className:"vault-modal-header",children:[e.jsx(Ss,{size:18,className:"text-primary"}),e.jsx("h3",{children:"Add New Column"})]}),e.jsxs("form",{onSubmit:Fe,children:[e.jsx("label",{className:"text-xs font-semibold text-muted block mb-1",children:"Column Name *"}),e.jsx("input",{type:"text",className:"vault-modal-input",placeholder:"e.g. Budget Estimate, Quantity, Notes",value:de,onChange:l=>ce(l.target.value),required:!0,autoFocus:!0}),e.jsx("label",{className:"text-xs font-semibold text-muted block mb-1",children:"Column Type"}),e.jsxs("select",{className:"vault-modal-input",value:ze,onChange:l=>Z(l.target.value),children:[e.jsx("option",{value:"text",children:"Text / String"}),e.jsx("option",{value:"number",children:"Number"}),e.jsx("option",{value:"date",children:"Date"}),e.jsx("option",{value:"priority",children:"Priority (High, Medium, Low)"}),e.jsx("option",{value:"status",children:"Status (To Do, In Progress, Done)"}),e.jsx("option",{value:"assignee",children:"Team Member Assignee"})]}),e.jsxs("div",{className:"vault-modal-actions",children:[e.jsx("button",{type:"button",className:"vault-modal-cancel",onClick:()=>B(!1),children:"Cancel"}),e.jsx("button",{type:"submit",className:"vault-modal-submit",disabled:!de.trim(),children:"Add Column"})]})]})]})})]})})},gt=a=>a?a==="custom_table"?{icon:e.jsx(as,{size:20}
1),color:"#ec4899",label:"TABLE",bg:"rgba(236,72,153,0.12)"}:a.includes("pdf")?{icon:e.jsx(Ze,{size:20}),color:"#ef4444",label:"PDF",bg:"rgba(239,68,68,0.1)"}:a.includes("image")?{icon:e.jsx(Ms,{size:20}),color:"#3b82f6",label:"IMG",bg:"rgba(59,130,246,0.1)"}:a.includes("spreadsheet")||a.includes("csv")||a.includes("excel")||a.includes("sheet")?{icon:e.jsx(Re,{size:20}),color:"#22c55e",label:"XLS",bg:"rgba(34,197,94,0.1)"}:a.includes("json")?{icon:e.jsx(ht,{size:20}),color:"#f59e0b",label:"JSON",bg:"rgba(245,158,11,0.1)"}:a.includes("word")||a.includes("doc")?{icon:e.jsx(Ze,{size:20}),color:"#2563eb",label:"DOC",bg:"rgba(37,99,235,0.1)"}:a.includes("zip")||a.includes("rar")?{icon:e.jsx(zs,{size:20}),color:"#f97316",label:"ZIP",bg:"rgba(249,115,22,0.1)"}:{icon:e.jsx(Ze,{size:20}),color:"#8b5cf6",label:"FILE",bg:"rgba(139,92,246,0.12)"}:{icon:e.jsx(zs,{size:20}),color:"#8b5cf6",label:"FILE",bg:"rgba(139,92,246,0.12)"},jt=(a,v=2)=>{if(!+a)return"0 Bytes";const P=1024,E=v<0?0:v,N=["Bytes","KB","MB","GB","TB"],b=Math.floor(Math.log(a)/Math.log(P));return`${parseFloat((a/Math.pow(P,b)).toFixed(E))} ${N[b]}`},ft=[".exe",".bat",".cmd",".sh",".vbs",".msi",".scr",".pif",".application",".gadget",".hta",".cpl",".msc",".jar",".ps1",".php",".cgi"],Fs=a=>{if(!a)return!1;const v=a.toLowerCase();return ft.some(P=>v.endsWith(P))},Ps=async a=>{const v=await crypto.subtle.digest("SHA-256",new TextEncoder().encode(a));return Array.from(new Uint8Array(v)).map(P=>P.toString(16).padStart(2,"0")).join("")},It=()=>{const{user:a}=Qs(),{eventId:v,folderId:P}=Js(),E=et(),{error:N,success:b}=ps(),O=Zs(),K=Xs(),[Ee,ne]=n.useState(!0),[me,$]=n.useState([]),[Le,C]=n.useState([]),[ie,J]=n.useState(null),[re,be]=n.useState(""),[he,oe]=n.useState([]),[_,Ne]=n.useState([]),[U,pe]=n.useState(!1),[Q,Ie]=n.useState(""),[B,de]=n.useState(!1),[ce,ze]=n.useState(0),[Z,G]=n.useState(null),[q,M]=n.useState(null),[y,ee]=n.useState(null),[R,se]=n.useState(null),[Fe,xe]=n.useState(null),[Ge,H]=n.useState(!1),[Oe,L]=n.useState(null),[Ue,l]=n.useState(null),[g,x]=n.useState(null),[t,r]=n.useState(""),[o,h]=n.useState(""),[c,d]=n.useState("Medium"),[z,p]=n.useState(""),[T,W]=n.useState(""),[X,te]=n.useState(!1),[S,m]=n.useState(!1),[ae,Pe]=n.useState(0),we=n.useRef([]),ke=n.useRef([]),Se=n.useRef(new Set),[Be,Ae]=n.useState(!1),[_e,ve]=n.useState(!1),[j,le]=n.useState(null),[ge,qe]=n.useState(""),[Ke,ls]=n.useState(""),[ns,vs]=n.useState(!1),[Xe,Me]=n.useState(""),[is,$e]=n.useState(""),[ue,Ye]=n.useState("unlock"),[Je,Ve]=n.useState(null),ye=!P,Y=a?.role==="team_member"?a.organizerId:a?.uid;n.useEffect(()=>{if(!a||!Y||!v)return;const s=D.listenToCollection(I.FOLDERS,[{field:"eventId",operator:"==",value:v}],null,({data:f,error:F})=>{if(F){console.error("Folders sync error:",F);return}we.current=f||[];const V=(f||[]).filter(k=>ye?k.parentId===null||k.parentId===void 0||k.parentId==="":k.parentId===P);$(V.sort((k,je)=>k.name.localeCompare(je.name)))},500),i=D.listenToCollection(I.DOCUMENTS,[{field:"eventId",operator:"==",value:v}],null,({data:f,error:F})=>{if(F){console.error("Docs sync error:",F),ne(!1);return}ke.current=f||[];const V=(f||[]).filter(k=>ye?k.folderId===null||k.folderId===void 0||k.folderId==="":k.folderId===P);C(V.sort((k,je)=>(je.createdAt||"").localeCompare(k.createdAt||""))),ne(!1)},500),u=D.listenToCollection(I.TASKS,[{field:"organizerId",operator:"==",value:Y}],null,({data:f,error:F})=>{if(F){console.warn("[VaultDashboard] Tasks sync error:",F);return}const V=(f||[]).filter(k=>!k.eventId||k.eventId===v);oe(V)},500),w=D.listenToCollection(I.USERS,[{field:"organizerId",operator:"==",value:Y}],null,async({data:f})=>{let F=f||[];if(!F.find(V=>(V.uid||V.id)===Y)){const{data:V}=await D.getOne(I.USERS,Y);V&&F.push(V)}Ne(F)},500);return(async()=>{if(ye)J(null),Se.current.clear();else{const{data:f}=await D.getOne(I.FOLDERS,P);J(f),f?.passwordHash&&!Se.current.has(P)&&(le(f),Me(""),$e(""),Ye("unlock"),ve(!0))}})(),()=>{s?.(),i?.(),u?.(),w?.()}},[a,Y,v,P,ye]);const Rs=async s=>{if(O){N("Renew your plan to make changes.");return}if(s.preventDefault(),!Q.trim())return;const{id:i,error:u}=await D.add(I.FOLDERS,{name:Q.trim(),eventId:v,organizerId:Y,parentId:ye?null:P});u||!i?(console.error("Create folder error:",u),N("Failed to create folder")):(Ie(""),pe(!1),b("Folder created"))},gs=async s=>{if(O){N("Renew your plan to make changes.");return}const i=s.target.files[0];if(i){if(Fs(i.name)){N("Executable and script files (.exe, .bat, .cmd, .sh, etc.) are blocked for security.");return}if(i.size>10*1024*1024){N("File too large. Maximum size is 10MB");return}de(!0),ze(0);try{const u=i.name.replace(/[^a-zA-Z0-9.]/g,"_"),w=`vault/${Y}/${v}/${Date.now()}_${u}`,A=cs(K,w),f=bs(A,i);f.on("state_changed",F=>{const V=F.bytesTransferred/F.totalBytes*100;ze(Math.round(V))},F=>{console.error("Upload failed",F),N("Upload failed"),de(!1)},async()=>{const F=await ys(f.snapshot.ref);await D.add(I.DOCUMENTS,{name:i.name,type:i.type||"unknown",size:i.size,url:F,storagePath:w,eventId:v,organizerId:Y,folderId:ye?null:P,uploadedBy:a.uid,uploaderName:a.name||"Admin",createdAt:new Date().toISOString()}),b("File uploaded successfully"),de(!1)})}catch(u){console.error(u),N("Failed to start upload"),de(!1)}}},Ls=async s=>{if(O){N("Renew your plan to make changes.");return}if(await Ns(`Are you sure you want to delete ${s.name}?`))try{if(s.storagePath){const i=cs(K,s.storagePath);await Ys(i)}await D.delete(I.DOCUMENTS,s.id),b("File deleted")}catch(i){console.error("Delete error",i),N("Failed to delete file")}},js=async s=>{$(u=>u.filter(w=>
1w.id!==s.id));const{error:i}=await D.delete(I.FOLDERS,s.id);i?($(u=>[...u,s].sort((w,A)=>w.name.localeCompare(A.name))),N("Failed to delete folder")):b("Folder deleted")},Os=async s=>{if(O){N("Renew your plan to make changes.");return}if(s.passwordHash){le(s),Me(""),$e(""),Ye("delete"),ve(!0);return}const i=we.current.some(w=>w.parentId===s.id),u=ke.current.some(w=>w.folderId===s.id);if(i||u){N("Folder is not empty. Remove all files and subfolders first.");return}await Ns(`Delete folder "${s.name}"?`)&&await js(s)},Us=async s=>{if(O){N("Renew your plan to make changes.");return}if(s.preventDefault(),!t.trim()||!y)return;te(!0);const i=a?.organizerId||Y||a?.uid,u=a?.displayName||a?.name||a?.firstName||"Organizer",w=new Date().toISOString(),A=_.find(f=>(f.uid||f.id)===T);try{const f={title:t.trim(),description:o.trim()||`Task created for vault document "${y.name}"`,priority:c||"Medium",dueDate:z||null,status:"To Do",eventId:v,organizerId:i,createdBy:a?.uid||null,createdByName:u,assigneeId:T||null,assigneeName:A?A.displayName||A.name||"Team Member":T?"Team Member":"Open to Team",isGeneralTask:!T,accessLevel:T?"assigned":"open_team",linkedDocIds:[y.id],linkedDocs:[{id:y.id,name:y.name,url:y.url,size:y.size||0,type:y.type||"unknown",storagePath:y.storagePath||"",version:y.version||
11}],createdAt:w,updatedAt:w},{id:F,error:V}=await D.add(I.TASKS,f);if(!V&&F){if(T&&T!==a.uid)try{await D.add(I.USER_NOTIFICATIONS,{userId:T,type:"task_assigned",title:`New Task: ${t}`,message:`${u} assigned you task "${t}" with attached file "${y.name}".`,link:`/tasks?taskId=${F}`,eventId:v,read:!1,createdAt:w})}catch(k){console.warn("[VaultDashboard] Notification write error:",k)}try{await D.add(I.TEAM_MESSAGES,{organizerId:i,eventId:v,senderId:a.uid,senderName:u,type:"system_activity",text:`ð ${u} created task "${t}" linked to file "${y.name}"`,createdAt:w})}catch(k){console.warn("[VaultDashboard] Team message error:",k)}b(`Task "${t}" created and linked to ${y.name}!`),ee(null),r(""),h(""),d("Medium"),p(""),W("")}else N("Failed to create task.")}catch(f){console.error("[VaultDashboard] Create task error:",f),N("Failed to create task.")}finally{te(!1)}},Bs=async s=>{if(O){N("Renew your plan to make changes.");return}const i=s.target.files?.[0];if(!(!i||!R)){if(Fs(i.name)){N("Executable and script files (.exe, .bat, .cmd, .sh, etc.) are blocked for security.");return}if(i.size>15*1024*1024){N("File too large. Maximum size is 15MB");return}m(!0),Pe(0);try{const u=R,w=(u.version||1)+1,A=i.name.replace(/[^a-zA-Z0-9.]/g,"_"),f=`vault/${Y}/${v}/${Date.now()}_v${w}_${A}`,F=cs(K,f),V=bs(F,i);V.on("state_changed",k=>{const je=k.bytesTransferred/k.totalBytes*100;Pe(Math.round(je))},k=>{console.error("Version upload failed:",k),N("Version upload failed."),m(!1)},async()=>{const k=await ys(V.snapshot.ref),je=new Date().toISOString(),es=a.displayName||a.name||a.firstName||"Organizer";await D.update(I.DOCUMENTS,u.id,{url:k,storagePath:f,size:i.size,type:i.type||u.type,version:w,updatedAt:je,lastUpdatedBy:a.uid,lastUpdatedByName:es});const ds=he.filter(fe=>fe.linkedDocIds?.includes(u.id));for(const fe of ds){const Ks=(fe.linkedDocs||[]).map(He=>He.id===u.id?{...He,name:i.name,url:k,size:i.size,type:i.type||He.type,version:w,updatedAt:je}:He);if(await D.update(I.TASKS,fe.id,{linkedDocs:Ks,updatedAt:je}),fe.assigneeId&&fe.assigneeId!==a.uid)try{await D.add(I.USER_NOTIFICATIONS,{userId:fe.assigneeId,type:"vault_doc_updated",title:`Document Updated: ${u.name}`,message:`${es} uploaded version ${w} of "${u.name}" for your task "${fe.title}".`,link:`/tasks?taskId=${fe.id}`,eventId:v,read:!1,createdAt:je})}catch(He){console.warn("Notification error:",He)}}try{await D.add(I.TEAM_MESSAGES,{organizerId:Y,eventId:v,senderId:a.uid,senderName:es,type:"system_activity",text:`ð ${es} updated document "${u.name}" to version ${w} (linked to ${ds.length} task${ds.length===1?"":"s"})`,createdAt:je})}catch(fe){console.warn("Activity feed error:",fe)}b(`Uploaded version ${w} of "${u.name}"!`),m(!1),se(null)})}catch(u){console.error("Error starting version upload:",u),N("Failed to start version upload."),m(!1)}}};n.useEffect(()=>{if(!Je&&!Z)return;const s=()=>{Ve(null),G(null)};return document.addEventListener("mousedown",s),()=>document.removeEventListener("mousedown",s)},[Je,Z]);const Vs=s=>{Ve(null),G(null),s.passwordHash?(le(s),Me(""),$e(""),Ye("unlock"),ve(!0)):E(`/organizer/events/${v}/vault/${s.id}`)},Hs=()=>{Se.current.clear(),E(ie?.parentId?`/organizer/events/${v}/vault/${ie.parentId}`:`/organizer/events/${v}/vault`)},fs=()=>{ve(!1),Me(""),$e(""),!ye&&ie?.passwordHash&&!Se.current.has(P)&&E(ie?.parentId?`/organizer/events/${v}/vault/${ie.parentId}`:`/organizer/events/${v}/vault`)},Ws=async s=>{if(s.preventDefault(),O){N("Renew your plan to make changes.");return}if(!ge||ge!==Ke)return;const i=await Ps(ge),{error:u}=await D.update(I.FOLDERS,j.id,{passwordHash:i});u?N("Failed to set password"):(Se.current.add(j.id),b("Password protection enabled"),Ae(!1),qe(""),ls(""))},Gs=async s=>{if(O){N("Renew your plan to make changes.");return}le(s),Me(""),$e(""),Ye("remove"),ve(!0)},qs=async s=>{if(s.preventDefault(),!Xe)return;if(await Ps(Xe)===j.passwordHash)if(Se.current.add(j.id),ve(!1),Me(""),$e(""),ue==="remove"){const{error:u}=await D.update(I.FOLDERS,j.id,{passwordHash:null});u?N("Failed to remove password"):(Se.current.delete(j.id),b("Password protection removed"))}else if(ue==="delete"){const u=we.current.some(A=>A.parentId===j.id),w=ke.current.some(A=>A.folderId===j.id);if(u||w){N("Folder is not empty. Remove all files and subfolders first.");return}await js(j)}else E(`/organizer/events/${v}/vault/${j.id}`);else $e("Incorrect password. Try again.")},rs=me.filter(s=>s.name.toLowerCase().includes(re.toLowerCase())),os=Le.filter(s=>s.name.toLowerCase().includes(re.toLowerCase()));return e.jsxs("div",{className:"gm-vault-container",children:[e.jsxs("div",{className:"gm-vault-header",children:[e.jsxs("div",{className:"title-section",children:[!ye&&e.jsx("button",{className:"back-btn",onClick:Hs,children:e.jsx(nt,{size:18})}),e.jsxs("div",{children:[e.jsx("h1",{children:ye?"Document Vault":ie?.name||"Folder"}),e.jsx("p",{children:ye?"Securely store and share event planning files, spreadsheets, and contracts with your team":"Folder Contents"})]})]}),e.jsxs("div",{className:"actions-section",children:[e.jsxs("div",{className:"search-bar",children:[e.jsx(Es,{size:16,className:"text-muted"}),e.jsx("input",{type:"text",placeholder:"Search documents...",value:re,onChange:s=>be(s.target.value)})]}),e.jsxs("div",{className:"actions-section-buttons",children:[e.jsxs("button",{className:"gm-btn-secondary",disabled:O,onClick:()=>{L(null),l(null),H(!0)},title:"Create a new dynamic table, spreadsheet or tracker in EventPulse",children:[e.jsx(as,{size:16,className:"text-pink-500"})," Create Table"]}),e.jsxs("button",{className:"gm-btn-secondary",disabled:O,onClick:()=>pe(!0),children:[e.jsx(us,{size:16})," New Folder"]}),e.jsxs("div",{className:"upload-btn-wrapper",children:[e.jsx("button",{className:"gm-btn-primary",disabled:B,children:B?e.jsxs(e.Fragment,{children:[e.jsx(De,{size:16,className:"animate-spin"})," ",ce,"%"]}):e.jsxs(e.Fragment,{children:[e.jsx(Cs,{size:16})," Upload File"]})}),e.jsx("input",{type:"file",onChange:gs,disabled:B})]})]})]})]}),e.jsxs("div",{className:"gm-vault-body",children:[Ee&&e.jsxs("div",{className:"vault-skeleton-container",style:{display:"flex",flexDirection:"column",gap:"1.5rem",animation:"fadeIn 0.2s ease"},children:[e.jsxs("div",{className:"vault-section",children:[e.jsx("div",{className:"vault-skeleton-cell",style:{width:"100px",height:"16px",marginBottom:"1rem",borderRadius:"4px"}}),e.jsx("div",{className:"folder-grid",children:[1,2].map(s=>e.jsxs("div",{className:"folder-card",style:{pointerEvents:"none",borderStyle:"dashed"},children:[e.jsx("div",{className:"vault-skeleton-cell",style:{width:"36px",height:"36px",borderRadius:"8px",flexShrink:0}}),e.jsxs("div",{style:{flex:1},children:[e.jsx("div",{className:"vault-skeleton-cell",style:{width:"65%",height:"15px",marginBottom:"6px",borderRadius:"4px"}}),e.jsx("div",{className:"vault-skeleton-cell",style:{width:"35%",height:"11px",borderRadius:"4px"}})]})]},s))})]}),e.jsxs("div",{className:"vault-section",children:[e.jsx("div",{className:"vault-skeleton-cell",style:{width:"80px",height:"16px",marginBottom:"1rem",borderRadius:"4px"}}),e.jsx("div",{className:"files-list",children:[1,2,3].map(s=>e.jsx("div",{className:"file-item",style:{pointerEvents:"none"},children:e.jsxs("div",{className:"file-main",children:[e.jsx("div",{className:"vault-skeleton-cell",style:{width:"42px",height:"42px",borderRadius:"8px",flexShrink:0}}),e.jsxs("div",{style:{flex:1},children:[e.jsx("div",{className:"vault-skeleton-cell",style:{width:"45%",height:"15px",marginBottom:"8px",borderRadius:"4px"}}),e.jsx("div",{className:"vault-skeleton-cell",style:{width:"25%",height:"12px",borderRadius:"4px"}})]})]})},s))})]})]}),rs.length>0&&e.jsxs("div",{className:"vault-section",children:[e.jsx("h3",{children:"Folders"}),e.jsx("div",{className:"folder-grid",children:rs.map(s=>{const i=!!s.passwordHash;return e.jsxs("div",{className:`folder-card${i?" folder-card--locked":""}`,onClick:()=>Vs(s),children:[i&&e.jsx("div",{className:"folder-lock-badge",title:"Password protected",children:e.jsx(Qe,{size:11})}),e.jsx("div",{className:"folder-icon",children:e.jsx(it,{size:32,fill:"
1currentColor",className:"text-primary/20 text-primary"})}),e.jsxs("div",{className:"folder-info",children:[e.jsx("h4",{children:s.name}),i&&e.jsx("span",{className:"folder-lock-hint",children:"Password protected"})]}),e.jsx("button",{className:"action-menu folder-menu-btn",onClick:u=>{u.stopPropagation(),Ve(Je===s.id?null:s.id)},children:e.jsx(Ts,{size:16})}),Je===s.id&&e.jsxs("div",{className:"folder-menu-dropdown",onMouseDown:u=>u.stopPropagation(),onClick:u=>u.stopPropagation(),children:[e.jsxs("button",{onClick:()=>{Ve(null),le(s),qe(""),ls(""),vs(!1),Ae(!0)},children:[e.jsx(Qe,{size:14})," ",i?"Change Password":"Set Password"]}),i&&e.jsxs("button",{onClick:()=>{Ve(null),Gs(s)},children:[e.jsx(rt,{size:14})," Remove Password"]}),e.jsxs("button",{className:"danger",onClick:()=>{Ve(null),Os(s)},children:[e.jsx(hs,{size:14})," Delete Folder"]})]})]},s.id)})})]}),os.length>0&&e.jsxs("div",{className:"vault-section",children:[e.jsx("h3",{children:"Files"}),e.jsx("div",{className:"files-list",children:os.map(s=>{const i=gt(s.type),u=he.filter(f=>f.linkedDocIds?.includes(s.id)),w=s.type?.includes("spreadsheet")||s.type?.includes("csv")||s.type?.includes("excel")||s.type?.includes("sheet")||s.name?.endsWith(".xlsx")||s.name?.endsWith(".xls")||s.name?.endsWith(".csv"),A=s.type==="custom_table";return e.jsxs("div",{className:"file-item",children:[e.jsx("div",{className:"file-type-strip",style:{background:i.color}}),e.jsxs("div",{className:"file-main",children:[e.jsx("div",{className:"file-icon-wrap",style:{background:i.bg},children:e.jsx("span",{style:{color:i.color},children:i.icon})}),e.jsxs("div",{className:"file-details",children:[e.jsxs("div",{className:"file-name-row",children:[e.jsx("button",{type:"button",className:"file-name",style:{background:"transparent",border:"none",padding:0,margin:0,color:"hsl(var(--text-main))",textAlign:"left",cursor:"pointer",boxShadow:"none",display:"inline-block"},onClick:()=>{A?(L(s),l(null),H(!0)):x(s)},title:"Click to view / edit in EventPulse",children:s.name}),e.jsx("span",{className:"file-type-badge",style:{color:i.color,background:i.bg},children:i.label}),s.version>1&&e.jsxs("span",{className:"file-version-badge",children:["v",s.version]}),u.length>0&&e.jsxs("button",{type:"button",className:"file-tasks-badge",onClick:()=>M(s),title:"View tasks connected to this document",children:[e.jsx(ts,{size:12}),e.jsxs("span",{children:[u.length," ",u.length===1?"Task":"Tasks"," Linked"]})]})]}),e.jsxs("div",{className:"file-meta",children:[e.jsx("span",{children:jt(s.size)}),e.jsx("span",{children:"â¢"}),e.jsxs("span",{className:"flex items-center gap-1",children:[e.jsx(ot,{size:11}),new Date(s.createdAt).toLocaleDateString()]}),e.jsx("span",{children:"â¢"}),e.jsx("span",{children:s.uploaderName})]})]})]}),e.jsxs("div",{className:"file-actions",children:[A?e.jsx("button",{className:"btn-icon",style:{color:"#ec4899",borderColor:"rgba(236,72,153,0.3)"},onClick:()=>{L(s),l(null),H(!0)},title:"Open in Table Builder & Editor",children:e.jsx(dt,{size:18})}):w?e.jsx("button",{className:"btn-icon",style:{color:"#10b981",borderColor:"rgba(16,185,129,0.3)"},onClick:()=>xe(s),title:"Convert / Import Spreadsheet to Tasks",children:e.jsx(Re,{size:18})}):null,e.jsx("button",{className:"btn-icon",onClick:()=>{A?(L(s),l(null),H(!0)):x(s)},title:"Preview Document in App",children:e.jsx(ms,{size:18})}),s.url&&e.jsx("a",{href:s.url,download:s.name,className:"btn-icon",title:"Download copy",children:e.jsx($s,{size:18})}),e.jsx("button",{className:"action-menu file-menu-btn",style:{opacity:1,position:"relative",top:"auto",right:"auto"},onClick:f=>{f.stopPropagation(),G(Z===s.id?null:s.id)},children:e.jsx(Ts,{size:18})}),Z===s.id&&e.jsxs("div",{className:"folder-menu-dropdown",onMouseDown:f=>f.stopPropagation(),onClick:f=>f.stopPropagation(),children:[e.jsxs("button",{onClick:()=>{G(null),A?(L(s),l(null),H(!0)):x(s)},children:[e.jsx(ms,{size:14})," Preview File"]}),A&&e.jsxs("button",{onClick:()=>{G(null),L(s),l(null),H(!0)},children:[e.jsx(as,{size:14})," Edit Table Grid"]}),e.jsxs("button",{onClick:()=>{G(null),M(s)},children:[e.jsx(ts,{size:14})," Linked Tasks (",u.length,")"]}),e.jsxs("button",{onClick:()=>{G(null),ee(s),r(`Review ${s.name}`),h(`Deliverable review for vault document "${s.name}"`),d("Medium"),p(""),W("")},children:[e.jsx(Ds,{size:14})," Create Task from File"]}),e.jsxs("button",{onClick:()=>{G(null),se(s)},children:[e.jsx(Is,{size:14})," Upload New Version"]}),w&&e.jsxs("button",{onClick:()=>{G(null),xe(s)},children:[e.jsx(Re,{size:14})," Import to Tasks"]}),e.jsxs("button",{className:"danger",onClick:()=>{G(null),Ls(s)},children:[e.jsx(hs,{size:14})," Delete File"]})]})]})]},s.id)})})]}),!Ee&&rs.length===0&&os.length===0&&e.jsxs("div",{className:"empty-vault",children:[e.jsxs("div",{className:"ev-icons",children:[e.jsx("div",{className:"ev-icon ev-icon-1",style:{color:"#ef4444",background:"rgba(239,68,68,0.1)"},children:e.jsx(Ze,{size:22})}),e.jsx("div",{className:"ev-icon ev-icon-2",style:{color:"#3b82f6",background:"rgba(59,130,246,0.1)"},children:e.jsx(Ms,{size:22})}),e.jsx("div",{className:"ev-icon ev-icon-3",style:{color:"#22c55e",background:"rgba(34,197,94,0.1)"},children:e.jsx(Re,{size:22})}),e.jsx("div",{className:"ev-icon ev-icon-center",children:e.jsx(Qe,{size:26})})]}),e.jsx("h3",{className:"ev-title",children:"Nothing stored yet"}),e.jsx("p",{className:"ev-subtitle",children:"Upload contracts, permits, invoices, or event planning spreadsheets to keep everything in one secure place."}),e.jsx("div",{className:"ev-suggestions",children:["Contracts","Permits","Invoices","Floor Plans","Agreements"].map(s=>e.jsx("span",{className:"ev-chip",children:s},s))}),e.jsxs("div",{className:"ev-actions",children:[e.jsxs("button",{className:"gm-btn-secondary",disabled:O,onClick:()=>pe(!0),children:[e.jsx(us,{size:15})," New Folder"]}),e.jsxs("div",{className:"upload-btn-wrapper",children:[e.jsx("button",{className:"gm-btn-primary",disabled:B,children:B?e.jsxs(e.Fragment,{children:[e.jsx(De,{size:15,className:"animate-spin"}),ce,"%"]}):e.jsxs(e.Fragment,{children:[e.jsx(Cs,{size:15})," Upload a File"]})}),e.jsx("input",{type:"file",onChange:gs,disabled:B})]})]})]})]}),Be&&j&&Ce.createPortal(e.jsx("div",{className:"vault-modal-overlay",onClick:()=>Ae(!1),children:e.jsxs("div",{className:"vault-modal-box",onClick:s=>s.stopPropagation(),children:[e.jsxs("div",{className:"vault-modal-header",children:[e.jsx(Qe,{size:20,style:{color:"hsl(var(--primary))"}}),e.jsx("h2",{children:j.passwordHash?"Change Password":"Set Folder Password"})]}),e.jsxs("p",{className:"vault-modal-hint",children:["Protect ",e.jsx("strong",{children:j.name})," â anyone opening this folder will need to enter the password."]}),e.jsxs("form",{onSubmit:Ws,children:[e.jsxs("div",{className:"vault-pw-row",children:[e.jsx("input",{type:ns?"text":"password",className:"vault-modal-input",placeholder:"New password",value:ge,onChange:s=>qe(s.target.value),autoFocus:!0}),e.jsx("button",{type:"button",className:"vault-pw-toggle",onClick:()=>vs(s=>!s),children:ns?e.jsx(ct,{size:16}):e.jsx(ms,{size:16})})]}),e.jsx("input",{type:ns?"text":"password",className:"vault-modal-input",placeholder:"Confirm password",value:Ke,onChange:s=>ls(s.target.value)}),ge&&Ke&&ge!==Ke&&e.jsx("p",{className:"vault-pw-error",children:"Passwords do not match"}),e.jsxs("div",{className:"vault-modal-actions",children:[e.jsx("button",{type:"button",className:"vault-modal-cancel",onClick:()=>Ae(!1),children:"Cancel"}),e.jsx("button",{type:"submit",className:"vault-modal-submit",disabled:!ge||ge!==Ke,children:j.passwordHash?"Update Password":"Set Password"})]})]})]})}),document.body),_e&&j&&Ce.createPortal(e.jsx("div",{className:"vault-modal-overlay",onClick:fs,children:e.jsxs("div",{className:"vault-modal-box",onClick:s=>s.stopPropagation(),children:[e.jsxs("div",{className:"vault-modal-header",children:[e.jsx(Qe,{size:20,style:{color:ue==="remove"||ue==="delete"?"#ef4444":"hsl(var(--primary))"}}),e.jsx("h2",{children:ue==="remove"?"Confirm to Remove Password":ue==="delete"?"Confirm Deletion":"Unlock Folder"})]}),e.jsx("p",{className:"vault-modal-hint",children:ue==="remove"?e.jsxs(e.Fragment,{children:["Enter the current password to remove protection from ",e.jsx("strong",{children:j.name}),"."]}):ue==="delete"?e.jsxs(e.Fragment,{children:["This folder is password protected. Enter the password to confirm permanent deleti
1on of ",e.jsx("strong",{children:j.name}),"."]}):e.jsxs(e.Fragment,{children:[e.jsx("strong",{children:j.name})," is password protected. Enter the password to open it."]})}),e.jsxs("form",{onSubmit:qs,children:[e.jsx("input",{type:"password",className:`vault-modal-input${is?" vault-modal-input--error":""}`,placeholder:"Enter folder password",value:Xe,onChange:s=>{Me(s.target.value),$e("")},autoFocus:!0}),is&&e.jsx("p",{className:"vault-pw-error",children:is}),e.jsxs("div",{className:"vault-modal-actions",children:[e.jsx("button",{type:"button",className:"vault-modal-cancel",onClick:fs,children:"Cancel"}),e.jsx("button",{type:"submit",className:`vault-modal-submit${ue==="remove"||ue==="delete"?" vault-modal-submit--danger":""}`,disabled:!Xe,children:ue==="remove"?"Remove Password":ue==="delete"?"Delete Folder":"Unlock"})]})]})]})}),document.body),U&&Ce.createPortal(e.jsx("div",{className:"vault-modal-overlay",onClick:()=>pe(!1),children:e.jsxs("div",{className:"vault-modal-box",onClick:s=>s.stopPropagation(),children:[e.jsxs("div",{className:"vault-modal-header",children:[e.jsx(us,{size:20,className:"text-primary"}),e.jsx("h2",{children:"New Folder"})]}),e.jsxs("form",{onSubmit:Rs,children:[e.jsx("input",{type:"text",className:"vault-modal-input",placeholder:"e.g. Contracts, Permits, Invoices",value:Q,onChange:s=>Ie(s.target.value),autoFocus:!0}),e.jsxs("div",{className:"vault-modal-actions",children:[e.jsx("button",{type:"button",className:"vault-modal-cancel",onClick:()=>{pe(!1),Ie("")},children:"Cancel"}),e.jsx("button",{type:"submit",className:"vault-modal-submit",disabled:!Q.trim(),children:"Create Folder"})]})]})]})}),document.body),q&&Ce.createPortal(e.jsx("div",{className:"vault-drawer-overlay",onClick:()=>M(null),children:e.jsxs("div",{className:"vault-drawer-modal",onClick:s=>s.stopPropagation(),children:[e.jsxs("div",{className:"vault-drawer-header",children:[e.jsxs("div",{children:[e.jsx("h3",{children:"Tasks Linked to Document"}),e.jsxs("p",{className:"text-xs text-muted",style:{margin:"0.2rem 0 0"},children:["File: ",e.jsx("strong",{children:q.name})]})]}),e.jsx("button",{className:"vault-close-btn",onClick:()=>M(null),children:e.jsx(Te,{size:18})})]}),e.jsx("div",{className:"vault-drawer-body",children:(()=>{const s=he.filter(i=>i.linkedDocIds?.includes(q.id));return s.length===0?e.jsxs("div",{className:"vault-empty-state",children:[e.jsx("div",{className:"vault-empty-state-icon",children:e.jsx(ts,{size:30})}),e.jsx("h4",{className:"vault-empty-state-title",children:"No Linked Tasks"}),e.jsx("p",{className:"vault-empty-state-desc",children:"No team tasks are currently connected to this file. Link a task to track assignments, deadlines, and deliverables."}),e.jsxs("button",{type:"button",className:"gm-btn-primary",style:{display:"inline-flex",padding:"0.6rem 1.4rem"},onClick:()=>{const i=q;M(null),ee(i),r(`Review ${i.name}`),h(`Task for vault file "${i.name}"`)},children:[e.jsx(Ds,{size:16}),e.jsx("span",{children:"Create a Linked Task"})]})]}):s.map(i=>{const u=_.find(f=>(f.uid||f.id)===i.assigneeId),w=i.status==="Done"?"status-done":i.status==="In Progress"?"status-inprogress":"status-todo",A=i.priority==="High"?"priority-high":i.priority==="Low"?"priority-low":"priority-medium";return e.jsxs("div",{className:"vault-linked-task-item",children:[e.jsxs("div",{className:"task-item-main",children:[e.jsx("h4",{children:i.title}),e.jsxs("div",{className:"task-item-meta",children:[e.jsx("span",{className:`status-pill ${w}`,children:i.status||"To Do"}),e.jsx("span",{className:`priority-pill ${A}`,children:i.priority||"Medium"}),i.dueDate&&e.jsxs("span",{className:"flex items-center gap-1",children:[e.jsx(ut,{size:12})," ",i.dueDate]}),e.jsxs("span",{className:"flex items-center gap-1",children:[e.jsx(As,{size:12})," ",u?.displayName||u?.name||i.assigneeName||"Open to Team"]})]})]}),e.jsxs("button",{className:"gm-btn-secondary",style:{padding:"0.4rem 0.8rem",fontSize:"0.8rem"},onClick:()=>{M(null),E(`/organizer/tasks?taskId=${i.id}`)},children:[e.jsx("span",{children:"Open Task"}),e.jsx(mt,{size:12})]})]},i.id)})})()}),e.jsx("div",{className:"vault-drawer-footer",children:he.filter(s=>s.linkedDocIds?.includes(q.id)).length>0?e.jsxs(e.Fragment,{children:[e.jsxs("button",{type:"button",className:"gm-btn-secondary",onClick:()=>{const s=q;M(null),ee(s),r(`Review ${s.name}`),h(`Task for vault file "${s.name}"`)},children:[e.jsx(_s,{size:15})," Create Another Task"]}),e.jsx("button",{type:"button",className:"gm-btn-primary",onClick:()=>M(null),children:"Done"})]}):e.jsx("div",{style:{width:"100%",display:"flex",justifyContent:"flex-end"},children:e.jsx("button",{type:"button",className:"gm-btn-secondary",onClick:()=>M(null),children:"Close"})})})]})}),document.body),y&&Ce.createPortal(e.jsx("div",{className:"vault-drawer-overlay",onClick:()=>ee(null),children:e.jsxs("div",{className:"vault-drawer-modal",style:{maxWidth:"560px"},onClick:s=>s.stopPropagation(),children:[e.jsxs("div",{className:"vault-drawer-header",children:[e.jsxs("div",{children:[e.jsx("h3",{children:"Create Task for Document"}),e.jsxs("p",{className:"text-xs text-muted",style:{margin:"0.2rem 0 0"},children:["Attaching: ",e.jsx("strong",{children:y.name})]})]}),e.jsx("button",{className:"vault-close-btn",onClick:()=>ee(null),children:e.jsx(Te,{size:18})})]}),e.jsxs("form",{onSubmit:Us,children:[e.jsxs("div",{className:"vault-drawer-body",children:[e.jsxs("div",{children:[e.jsx("label",{className:"text-xs font-semibold text-muted block mb-1",children:"Task Title *"}),e.jsx("input",{type:"text",className:"vault-modal-input",style:{width:"100%"},placeholder:"e.g. Review Catering Contract",value:t,onChange:s=>r(s.target.value),required:!0,autoFocus:!0})]}),e.jsxs("div",{children:[e.jsx("label",{className:"text-xs font-semibold text-muted block mb-1",children:"Description / Notes"}),e.jsx("textarea",{className:"vault-modal-input",style:{width:"100%",minHeight:"80px",resize:"vertical"},placeholder:"Add instructions or deliverables...",value:o,onChange:s=>h(s.target.value)})]}),e.jsxs("div",{style:{display:"grid",gridTemplateColumns:"1fr 1fr",gap:"1rem"},children:[e.jsxs("div",{children:[e.jsx("label",{className:"text-xs font-semibold text-muted block mb-1",children:"Priority"}),e.jsxs("select",{className:"vault-modal-input",style:{width:"100%"},value:c,onChange:s=>d(s.target.value),children:[e.jsx("option",{value:"Low",children:"Low"}),e.jsx("option",{value:"Medium",children:"Medium"}),e.jsx("option",{value:"High",children:"High"})]})]}),e.jsxs("div",{children:[e.jsx("label",{className:"text-xs font-semibold text-muted block mb-1",children:"Due Date"}),e.jsx("input",{type:"date",className:"vault-modal-input",style:{width:"100%"},value:z,onChange:s=>p(s.target.value)})]})]}),e.jsxs("div",{children:[e.jsx("label",{className:"text-xs font-semibold text-muted block mb-1",children:"Assign To Team Member"}),e.jsxs("select",{className:"vault-modal-input",style:{width:"100%"},value:T,onChange:s=>W(s.target.value),children:[e.jsx("option",{value:"",children:"Open to Entire Team"}),_.map(s=>e.jsxs("option",{value:s.uid||s.id,children:[s.displayName||s.name||s.email," (",s.role||"Member",")"]},s.uid||s.id))]})]})]}),e.jsxs("div",{className:"vault-drawer-footer",children:[e.jsx("button",{type:"button",className:"gm-btn-secondary",onClick:()=>ee(null),children:"Cancel"}),e.jsx("button",{type:"submit",className:"gm-btn-primary",disabled:X||!t.trim(),children:X?e.jsxs(e.Fragment,{children:[e.jsx(De,{size:16,className:"animate-spin"})," Creating..."]}):e.jsxs(e.Fragment,{children:[e.jsx(xs,{size:16})," Create & Link Task"]})})]})]})]})}),document.body),R&&Ce.createPortal(e.jsx("div",{className:"vault-drawer-overlay",onClick:()=>!S&&se(null),children:e.jsxs("div",{className:"vault-drawer-modal",style:{maxWidth:"520px"},onClick:s=>s.stopPropagation(),children:[e.jsxs("div",{className:"vault-drawer-header",children:[e.jsxs("div",{children:[e.jsx("h3",{children:"Upload New Version"}),e.jsxs("p",{className:"text-xs text-muted",style:{margin:"0.2rem 0 0"},children:["Updating: ",e.jsx("strong",{children:R.name}
1)," (v",R.version||1," â v",(R.version||1)+1,")"]})]}),e.jsx("button",{className:"vault-close-btn",disabled:S,onClick:()=>se(null),children:e.jsx(Te,{size:18})})]}),e.jsxs("div",{className:"vault-drawer-body",children:[e.jsx("p",{className:"text-sm text-muted",children:"Uploading a new revision will automatically update the file for all assigned team members and linked tasks in real time."}),e.jsxs("div",{style:{border:"2px dashed rgba(255,255,255,0.15)",borderRadius:"1rem",padding:"2.5rem 1.5rem",textAlign:"center",background:"rgba(255,255,255,0.02)"},children:[e.jsx(Is,{size:36,className:"inline-block text-primary mb-3"}),e.jsx("h4",{style:{margin:"0 0 0.5rem",color:"white"},children:"Select Replacement File"}),e.jsx("p",{className:"text-xs text-muted",style:{marginBottom:"1.25rem"},children:"Maximum file size: 15MB"}),e.jsxs("div",{className:"upload-btn-wrapper",children:[e.jsx("button",{className:"gm-btn-primary",disabled:S,children:S?e.jsxs(e.Fragment,{children:[e.jsx(De,{size:16,className:"animate-spin"})," Uploading (",ae,"%)..."]}):"Choose New Version"}),e.jsx("input",{type:"file",onChange:Bs,disabled:S})]})]})]}),e.jsx("div",{className:"vault-drawer-footer",children:e.jsx("button",{className:"gm-btn-secondary",disabled:S,onClick:()=>se(null),children:"Cancel"})})]})}),document.body),Fe&&Ce.createPortal(e.jsx(pt,{doc:Fe,eventId:v,organizerId:Y,user:a,team:_,onClose:()=>xe(null),onSuccess:()=>{xe(null)},onOpenInTableEditor:s=>{xe(null),l(s),L(null),H(!0)}}),document.body),Ge&&Ce.createPortal(e.jsx(vt,{tableDoc:Oe,initialData:Ue,eventId:v,organizerId:Y,folderId:P,user:a,team:_,onClose:()=>{H(!1),L(null),l(null)},onSuccess:()=>{H(!1),L(null),l(null)}}),document.body),g&&Ce.createPortal(e.jsx(tt,{doc:g,onClose:()=>x(null),onOpenTableEditor:s=>{x(null),L(s),l(null),H(!0)},onOpenTaskImporter:s=>{x(null),xe(s)}}),document.body)]})};export{It as default};
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.