+ `,n.innerHTML=a}async function Rt(t,l){try{await f.updateExtensionSetting(t,l),c(`Updated ${t}`)}catch(n){console.error(`Failed to set ${t}:`,n),c(`Error: ${n.message}`),await De()}}async function Lt(t,l){try{c(`Updating ${t}...`),await f.setPragma(t,l),c(`Updated ${t}`)}catch(n){console.error(`Failed to set ${t}:`,n),c(`Error: ${n.message}`),await De()}}function Bt(){let t=document.getElementById("gridContainer");if(!t){console.error("gridContainer not found");return}document.addEventListener("dragover",l=>l.preventDefault()),document.addEventListener("drop",l=>l.preventDefault()),t.addEventListener("dragover",Ht),t.addEventListener("dragleave",Kt),t.addEventListener("drop",jt)}var P=null;function Ht(t){t.preventDefault(),t.dataTransfer.dropEffect="copy";let l=t.target.closest(".data-cell");l&&!l.classList.contains("row-number")?(P&&P!==l&&P.classList.remove("drag-over"),l.classList.add("drag-over"),P=l):P&&(P.classList.remove("drag-over"),P=null)}function Kt(t){t.target}async function jt(t){t.preventDefault(),P&&(P.classList.remove("drag-over"),P=null);let l=t.target.closest(".data-cell");if(!l||l.classList.contains("row-number"))return;if(t.dataTransfer.files.length>0){let o=t.dataTransfer.files[0];await _t(l,o.name,o);return}let n=t.dataTransfer.getData("text/uri-list");if(n){let o=n.split(/\r?\n/);if(o.length>0&&o[0]){let a=o[0],i="unknown_file";try{let s=a.split("/");i=decodeURIComponent(s[s.length-1])}catch(s){console.warn("Failed to parse name from URI",s)}await Jt(l,i,a);return}}}async function _t(t,l,n){try{c(`Reading ${l}...`);let o=await Xt(n),a=new Uint8Array(o);await Dt(t,l,a)}catch(o){console.error("File read failed:",o),c(`File read failed: ${o.message}`)}}async function Jt(t,l,n){try{c(`Fetching ${l}...`);let o=await f.readWorkspaceFileUri(n),a;if(o instanceof Uint8Array)a=o;else if(o&&o.type==="Buffer"&&Array.isArray(o.data))a=new Uint8Array(o.data);else if(o&&typeof o=="object"&&Object.keys(o).some(i=>!isNaN(i)))a=new Uint8Array(Object.values(o));else throw console.error("Unknown data format from backend:",o),new Error("Received invalid data format from backend");await Dt(t,l,a)}catch(o){console.error("URI upload failed:",o),c(`Upload failed: ${o.message}`)}}async function Dt(t,l,n){let o=parseInt(t.dataset.rowidx,10),a=parseInt(t.dataset.colidx,10);if(!e.gridData)return;let i=e.gridData[o];if(!i)return;let s=v(i,o),r=e.tableColumns[a];if(e.selectedTableType!=="table"){c("Cannot upload to a view");return}try{c(`Uploading ${l} (${Gt(n.byteLength)})...`);let m=i[a+I()];await f.updateCell(e.selectedTable,s,r.name,n,m),e.gridData[o][a+I()]=n,Qt(t,n),c(`Uploaded ${l}`)}catch(m){console.error("Upload failed:",m),c(`Upload failed: ${m.message}`)}}function Xt(t){return new Promise((l,n)=>{let o=new FileReader;o.onload=()=>l(o.result),o.onerror=()=>n(o.error),o.readAsArrayBuffer(t)})}function Gt(t){if(t===0)return"0 B";let l=1024,n=["B","KB","MB","GB"],o=Math.floor(Math.log(t)/Math.log(l));return parseFloat((t/Math.pow(l,o)).toFixed(2))+" "+n[o]}function Qt(t,l){let n=q(l),o=!0,a=`<span class="cell-text">${n}</span>`;a+='<span class="expand-icon codicon codicon-link-external" title="View full content"></span>',t.innerHTML=a,t.classList.remove("null-value")}var Nt={async refreshContent(t){return e.isDbConnected&&(await O(),!(e.schemaCache.tables.some(n=>n.name===e.selectedTable)||e.schemaCache.views.some(n=>n.name===e.selectedTable))&&e.selectedTable?(e.selectedTable=null,e.selectedTableType=null,document.getElementById("tableNameLabel").textContent="No table selected",Ce()):e.selectedTable&&await w(!1)),{success:!0}},async updateColorScheme(t){return document.documentElement.style.colorScheme=t,{success:!0}},async updateCellEditBehavior(t){return e.cellEditBehavior=t,{success:!0}}};function Zt(){window.addEventListener("message",t=>{let l=t.data;if(l&&l.kind==="invoke"){let{correlationId:o,methodName:a,parameters:i}=l,s=Nt[a];typeof s=="function"?Promise.resolve(s.apply(Nt,i||[])).then(r=>{Fe(o,r)}).catch(r=>{ye(o,r instanceof Error?r.message:String(r))}):ye(o,`Unknown method: ${a}`);return}if(!l||l.channel!=="rpc")return;let n=l.content;n&&n.kind==="response"&&We(n)})}Zt();Object.assign(window,{reloadFromDisk:pt,toggleSection:ut,selectTableItem:mt,openCreateTableModal:bt,openAddRowModal:ht,openAddColumnModal:It,openDeleteModal:Ct,submitAddRow:yt,submitDelete:re,submitCreateTable:vt,addColumnDefinition:Be,removeColumnDefinition:xt,submitAddColumn:Et,openExportModal:ft,submitExport:gt,onExportFormatChange:Le,onFilterChange:et,onPageSizeChange:tt,onDateFormatChange:lt,goToPage:nt,onColumnSort:xe,onColumnHeaderClick:Ie,toggleColumnPin:Ee,onColumnFilterKeydown:ve,applyColumnFilter:se,startColumnResize:Se,onRowClick:st,onRowNumberClick:$e,toggleRowPin:Te,onSelectAllClick:ie,onCellClick:Pe,onCellDoubleClick:Re,openCellPreview:A,closeCellPreview:H,saveCellPreview:we,formatCellPreviewJson:Ge,compactCellPreviewJson:Qe,toggleCellPreviewWrap:Ze,openSettingsModal:Pt,updateExtensionSetting:Rt,updatePragma:Lt,applyBatchUpdate:rt,setBatchNull:ct,toggleBatchPatch:dt,closeModal:D,goToPrevPage:()=>nt(e.currentPageIndex-1),goToNextPage:()=>nt(e.currentPageIndex+1),goToLastPage:()=>nt(e.totalPageCount-1)});async function Yt(){try{c("Connecting to database...");let t=await f.initialize();e.isDbConnected=!0,await f.ping(),await O(),c("Ready"),Ce(),qe(),Ye(),Bt();let l=document.getElementById("openInVsCodeBtn");l&&(l.style.display="none"),document.addEventListener("keydown",async n=>{if(n.key==="Escape"&&!e.editingCellInfo&&!document.querySelector(".modal:not(.hidden)")&&ae(),(n.metaKey||n.ctrlKey)&&n.key==="c"){if(e.editingCellInfo||document.activeElement.tagName==="INPUT")return;e.selectedCells.length>0?(n.preventDefault(),await Tt()):e.selectedRowIds.size>0&&(n.preventDefault(),await St())}if((n.metaKey||n.ctrlKey)&&n.key==="a"){if(e.editingCellInfo||document.activeElement.tagName==="INPUT")return;e.selectedTable&&(n.preventDefault(),ie(n))}if((n.metaKey||n.ctrlKey)&&(n.key==="Delete"||n.key==="Backspace")){if(e.editingCellInfo||document.activeElement.tagName==="INPUT"||document.activeElement.tagName==="TEXTAREA")return;e.selectedTable&&e.selectedTableType==="table"&&(n.preventDefault(),e.selectedColumns.size>0?await re():e.selectedRowIds.size>0?await re():e.selectedCells.length>0&&await $t())}})}catch(t){console.error("Init error:",t),le(t.message)}}Yt();})();
0 commit comments