@hienlh/ppm 0.13.61 → 0.13.63

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (58) hide show
  1. package/CHANGELOG.md +11 -0
  2. package/assets/skills/ppm/SKILL.md +1 -1
  3. package/assets/skills/ppm/references/http-api.md +1 -1
  4. package/dist/web/assets/audio-preview-D8onaG_2.js +1 -0
  5. package/dist/web/assets/{chat-tab-6xXNp6td.js → chat-tab-D1n2fmne.js} +7 -7
  6. package/dist/web/assets/code-editor-D3ofpe9P.js +8 -0
  7. package/dist/web/assets/{conflict-editor-pC5U_tzr.js → conflict-editor-BaSyowCW.js} +3 -3
  8. package/dist/web/assets/database-viewer-IDG5i3mc.js +1 -0
  9. package/dist/web/assets/diff-viewer-D5SnxW8Y.js +4 -0
  10. package/dist/web/assets/{extension-webview-CVylZpkv.js → extension-webview-BUzklJiG.js} +1 -1
  11. package/dist/web/assets/git-log-panel-CkfQFd6J.js +1 -0
  12. package/dist/web/assets/{glide-data-grid-PZOzxnWV.js → glide-data-grid-BJ3Wn9to.js} +3 -3
  13. package/dist/web/assets/image-preview-CJ8Qqjgt.js +1 -0
  14. package/dist/web/assets/index-Di7q5I27.js +27 -0
  15. package/dist/web/assets/keybindings-store-D9NMYHYK.js +1 -0
  16. package/dist/web/assets/{markdown-renderer-BPuu5Czn.js → markdown-renderer-YnP2OcPh.js} +1 -1
  17. package/dist/web/assets/notification-store-CW0Alosv.js +1 -0
  18. package/dist/web/assets/pdf-preview-D3Y2rNVC.js +1 -0
  19. package/dist/web/assets/port-forwarding-tab-DvoM_j8q.js +1 -0
  20. package/dist/web/assets/{postgres-viewer-D72BwBOg.js → postgres-viewer-BN_vFAqs.js} +2 -2
  21. package/dist/web/assets/{settings-tab-BTT3CCTS.js → settings-tab-B52JczcO.js} +1 -1
  22. package/dist/web/assets/sql-query-editor-XkJZFBl5.js +3 -0
  23. package/dist/web/assets/sqlite-viewer-DR2scYmN.js +1 -0
  24. package/dist/web/assets/system-monitor-tab-QXA7p0VH.js +1 -0
  25. package/dist/web/assets/{terminal-tab-BHFM5N0l.js → terminal-tab-BI9y5tDL.js} +2 -2
  26. package/dist/web/assets/video-preview-EhN6q3Xv.js +1 -0
  27. package/dist/web/index.html +1 -1
  28. package/dist/web/sw.js +1 -1
  29. package/docs/codebase-summary.md +2 -1
  30. package/docs/project-changelog.md +10 -1
  31. package/package.json +1 -1
  32. package/src/index.ts +0 -0
  33. package/src/web/components/database/database-viewer.tsx +13 -2
  34. package/src/web/components/database/sql-query-editor.tsx +8 -10
  35. package/src/web/components/explorer/file-tree.tsx +5 -0
  36. package/src/web/components/explorer/tree-node-context-menu.tsx +3 -0
  37. package/src/web/components/layout/command-palette-filter-chips.tsx +61 -0
  38. package/src/web/components/layout/command-palette.tsx +54 -7
  39. package/src/web/components/layout/draggable-tab.tsx +3 -0
  40. package/src/web/components/layout/mobile-nav.tsx +11 -0
  41. package/src/web/components/layout/tab-bar.tsx +9 -0
  42. package/bun.lock +0 -2129
  43. package/bunfig.toml +0 -2
  44. package/dist/web/assets/audio-preview-CKyqt8Qa.js +0 -1
  45. package/dist/web/assets/code-editor-DWNVyji6.js +0 -8
  46. package/dist/web/assets/database-viewer-Qp7wc8sJ.js +0 -1
  47. package/dist/web/assets/diff-viewer-FyAyKn4J.js +0 -4
  48. package/dist/web/assets/git-log-panel-BA4xxiZR.js +0 -1
  49. package/dist/web/assets/image-preview-meDqzT6e.js +0 -1
  50. package/dist/web/assets/index-Drwzii_w.js +0 -27
  51. package/dist/web/assets/keybindings-store-D6R_grEQ.js +0 -1
  52. package/dist/web/assets/notification-store-eSbjsPHn.js +0 -1
  53. package/dist/web/assets/pdf-preview-CE6iGnyw.js +0 -1
  54. package/dist/web/assets/port-forwarding-tab-Bm2K9NO-.js +0 -1
  55. package/dist/web/assets/sql-query-editor-BiVMmcK3.js +0 -3
  56. package/dist/web/assets/sqlite-viewer-CKdZF5AA.js +0 -1
  57. package/dist/web/assets/system-monitor-tab-PIhMDYPP.js +0 -1
  58. package/dist/web/assets/video-preview-DC5PWgPo.js +0 -1
@@ -0,0 +1,8 @@
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/markdown-renderer-YnP2OcPh.js","assets/rolldown-runtime-FhOqtrmT.js","assets/index-Di7q5I27.js","assets/vendor-mermaid-DCie7hiR.js","assets/vendor-ui-UXCWAcmi.js","assets/vendor-markdown-0Mxgxy0L.js","assets/input-B78ol0hV.js","assets/utils-E0yyGxXt.js","assets/createLucideIcon-BjHrJDVb.js","assets/x-DfF6D5Js.js","assets/settings-store-CSDOihqv.js","assets/react-CfveccaI.js","assets/api-client-DiZgVOok.js","assets/eye-off-BacF7RVS.js","assets/ai-settings-section-BH2UOQH-.js","assets/chevron-down-BMo4cBth.js","assets/globe-CQ8NAYvi.js","assets/trash-2-DkIfBY8d.js","assets/refresh-cw-CRD2qr4U.js","assets/api-settings-uQKmeGkl.js","assets/database-Dc8mr-dP.js","assets/chevron-right-CD8e6Aj4.js","assets/search-D90WJ5fo.js","assets/panel-store-B1pOXkyS.js","assets/project-store-BnvrVKBw.js","assets/tab-store-DzftzxTL.js","assets/index-DwvSM9vu.css","assets/csv-preview-DgArUJhd.js","assets/lib-DrypSCq8.js","assets/arrow-down-D825m4vm.js","assets/arrow-up-Rcw6_KKu.js","assets/csv-parser-D8VHWVA6.js","assets/image-preview-CJ8Qqjgt.js","assets/file-exclamation-point-B__2Hrd6.js","assets/use-blob-url-DCUIEzjB.js","assets/pdf-preview-D3Y2rNVC.js","assets/video-preview-EhN6q3Xv.js","assets/audio-preview-D8onaG_2.js"])))=>i.map(i=>d[i]);
2
+ import{o as e}from"./rolldown-runtime-FhOqtrmT.js";import{b as t,x as n}from"./vendor-markdown-0Mxgxy0L.js";import"./vendor-ui-UXCWAcmi.js";import{t as r}from"./createLucideIcon-BjHrJDVb.js";import{t as i}from"./database-Dc8mr-dP.js";import{t as a}from"./chevron-right-CD8e6Aj4.js";import{a as o,l as s,n as c,o as l,r as u,s as d,t as f}from"./input-B78ol0hV.js";import{t as p}from"./code-DiNmA3eR.js";import{i as m,r as h}from"./trash-2-DkIfBY8d.js";import{t as ee}from"./file-exclamation-point-B__2Hrd6.js";import{i as g,r as te,t as _}from"./glide-data-grid-BJ3Wn9to.js";import{t as v}from"./table-2wDtM4_B.js";import{t as y}from"./text-wrap-AZErifCu.js";import{t as b}from"./x-DfF6D5Js.js";import{i as ne,t as x}from"./api-client-DiZgVOok.js";import{n as re}from"./settings-store-CSDOihqv.js";import{K as S}from"./vendor-mermaid-DCie7hiR.js";import{t as C}from"./utils-E0yyGxXt.js";import{t as ie}from"./panel-store-B1pOXkyS.js";import{n as w}from"./project-store-BnvrVKBw.js";import{t as ae}from"./tab-store-DzftzxTL.js";import{H as T,O as E,X as oe,_ as se,at as ce,ct as D,d as O,et as k,f as le,ft as A,h as j,it as M,l as N,lt as P,m as F,o as ue,ot as I,p as de,rt as fe,s as pe,st as L,tt as me,u as he,v as ge}from"./index-Di7q5I27.js";import"./data-grid-types-C29KDkZJ.js";import{n as _e,t as ve}from"./use-monaco-theme-qx6SfVRk.js";var ye=r(`redo-2`,[[`path`,{d:`m15 14 5-5-5-5`,key:`12vg1m`}],[`path`,{d:`M20 9H9.5A5.5 5.5 0 0 0 4 14.5A5.5 5.5 0 0 0 9.5 20H13`,key:`6uklza`}]]),R=e(n(),1),z=t(),B={ts:L,tsx:L,js:L,jsx:L,py:L,rs:L,go:L,html:L,css:L,scss:L,json:D,md:I,txt:I,yaml:ce,yml:ce};function be(e,t){return t?fe:B[e.split(`.`).pop()?.toLowerCase()??``]??M}function xe(e,t){let n=[],r=e,i=``;for(let e=0;e<t.length;e++){let a=t[e],o=t.slice(0,e+1).join(`/`),s=r.find(e=>e.name===a);if(n.push({name:a,fullPath:o,node:s??null,siblings:r,parentPath:i}),s?.children)i=s.path,r=s.children;else{for(let r=e+1;r<t.length;r++)n.push({name:t[r],fullPath:t.slice(0,r+1).join(`/`),node:null,siblings:[],parentPath:t.slice(0,r).join(`/`)});break}}return n}function V(e){return[...e].sort((e,t)=>e.type===t.type?e.name.localeCompare(t.name):e.type===`directory`?-1:1)}function Se({filePath:e,projectName:t,tabId:n,className:r}){let i=E(e=>e.tree),{updateTab:o,openTab:s}=ae(se(e=>({updateTab:e.updateTab,openTab:e.openTab}))),c=w(e=>e.projects.find(e=>e.name===t)?.path??``),l=(0,R.useRef)(null),{prefixParts:u,relativePath:d}=(0,R.useMemo)(()=>{let t=e.startsWith(`/`)?e.slice(1):e,n=c.startsWith(`/`)?c.slice(1):c;if(n&&t.startsWith(n+`/`)){let e=t.slice(n.length+1);return{prefixParts:n.split(`/`),relativePath:e}}return{prefixParts:[],relativePath:t}},[e,c]),f=(0,R.useMemo)(()=>xe(i,d.split(`/`).filter(Boolean)),[i,d]);(0,R.useEffect)(()=>{l.current&&(l.current.scrollLeft=l.current.scrollWidth)},[f]);function p(e,r){let i=C(e);r.metaKey||r.ctrlKey?s({type:`editor`,title:i,metadata:{filePath:e,projectName:t},projectId:t,closable:!0}):o(n,{title:i,metadata:{filePath:e,projectName:t}})}return(0,z.jsxs)(`div`,{ref:l,className:r,children:[u.map((e,t)=>(0,z.jsxs)(`div`,{className:`flex items-center shrink-0`,children:[t>0&&(0,z.jsx)(a,{className:`size-3 text-muted-foreground shrink-0 mx-0.5`}),(0,z.jsx)(`span`,{className:`text-xs text-muted-foreground px-1 py-0.5`,children:e})]},`prefix-${t}`)),f.map((e,n)=>(0,z.jsxs)(`div`,{className:`flex items-center shrink-0`,children:[(n>0||u.length>0)&&(0,z.jsx)(a,{className:`size-3 text-muted-foreground shrink-0 mx-0.5`}),(0,z.jsx)(Ce,{segment:e,isLast:n===f.length-1,projectName:t,onFileClick:p})]},e.fullPath))]})}function Ce({segment:e,isLast:t,projectName:n,onFileClick:r}){let i=E(e=>e.loadChildren),a=E(e=>e.loadedPaths),o=(0,R.useMemo)(()=>V(e.siblings),[e.siblings]),s=a.has(e.parentPath);function c(t){if(t&&!s){let t=e.parentPath.split(`/`).filter(Boolean);(async()=>{for(let e=0;e<=t.length;e++)await i(n,t.slice(0,e).join(`/`))})()}}return(0,z.jsxs)(N,{onOpenChange:c,children:[(0,z.jsx)(j,{asChild:!0,children:(0,z.jsx)(`button`,{type:`button`,className:`text-xs px-1 py-0.5 rounded hover:bg-muted transition-colors truncate max-w-[120px] ${t?`text-foreground font-medium`:`text-muted-foreground`}`,children:e.name})}),(0,z.jsx)(he,{align:`start`,className:`max-h-[300px] p-1`,children:o.length===0?(0,z.jsx)(O,{disabled:!0,className:`text-xs text-muted-foreground`,children:`Loading…`}):o.map(t=>(0,z.jsx)(H,{node:t,projectName:n,activePath:e.fullPath,onFileClick:r},t.path))})]})}function H({node:e,projectName:t,activePath:n,onFileClick:r}){let i=be(e.name,e.type===`directory`),a=e.path===n,o=E(e=>e.loadChildren),s=E(e=>e.loadedPaths);if(e.type===`directory`){let c=e.children??[],l=s.has(e.path);function u(n){n&&!l&&o(t,e.path)}return(0,z.jsxs)(le,{onOpenChange:u,children:[(0,z.jsxs)(F,{className:`text-xs gap-1.5 ${a?`bg-muted`:``}`,children:[(0,z.jsx)(i,{className:`size-3.5 shrink-0 text-muted-foreground`}),(0,z.jsx)(`span`,{className:`truncate`,children:e.name})]}),(0,z.jsx)(de,{className:`max-h-[300px] overflow-y-auto p-1`,children:c.length===0?(0,z.jsx)(O,{disabled:!0,className:`text-xs text-muted-foreground`,children:`Loading…`}):V(c).map(e=>(0,z.jsx)(H,{node:e,projectName:t,activePath:n,onFileClick:r},e.path))})]})}return(0,z.jsxs)(O,{className:`text-xs gap-1.5 cursor-pointer ${a?`bg-muted`:``}`,onSelect:e=>{},onClick:t=>{r(e.path,t)},children:[(0,z.jsx)(i,{className:`size-3.5 shrink-0 text-muted-foreground`}),(0,z.jsx)(`span`,{className:`truncate`,children:e.name})]})}function U({active:e,onClick:t,icon:n,label:r}){return(0,z.jsxs)(`button`,{type:`button`,onClick:t,className:`flex items-center gap-1 px-2 py-1 rounded text-xs transition-colors ${e?`bg-muted text-foreground`:`text-muted-foreground hover:text-foreground`}`,children:[(0,z.jsx)(n,{className:`size-3`}),(0,z.jsx)(`span`,{className:`hidden sm:inline`,children:r})]})}function we({ext:e,mdMode:t,onMdModeChange:n,csvMode:r,onCsvModeChange:i,wordWrap:a,onToggleWordWrap:o,filePath:s,projectName:c,className:l}){return(0,z.jsxs)(`div`,{className:l,children:[(e===`md`||e===`mdx`)&&n&&(0,z.jsxs)(z.Fragment,{children:[(0,z.jsx)(U,{active:t===`edit`,onClick:()=>n(`edit`),icon:p,label:`Edit`}),(0,z.jsx)(U,{active:t===`preview`,onClick:()=>n(`preview`),icon:h,label:`Preview`})]}),e===`csv`&&i&&(0,z.jsxs)(z.Fragment,{children:[(0,z.jsx)(U,{active:r===`table`,onClick:()=>i(`table`),icon:v,label:`Table`}),(0,z.jsx)(U,{active:r===`raw`,onClick:()=>i(`raw`),icon:p,label:`Raw`})]}),(0,z.jsx)(U,{active:a,onClick:o,icon:y,label:`Wrap`}),s&&c&&(0,z.jsx)(U,{active:!1,onClick:()=>ge(c,s),icon:m,label:`Download`})]})}function Te({open:e,defaultName:t,content:n,onSave:r,onCancel:i}){let[a,p]=(0,R.useState)(t),[m,h]=(0,R.useState)(!1),[ee,g]=(0,R.useState)(``),te=w(e=>e.activeProject),_=(0,R.useCallback)(()=>{let e=a.trim();if(!e){g(`Filename cannot be empty`);return}if(/[/\\]/.test(e)){g(`Filename cannot contain / or \\`);return}g(``),h(!0)},[a]),v=(0,R.useCallback)(e=>{let t=e.includes(`\\`)?`\\`:`/`;r(e.endsWith(t)?`${e}${a.trim()}`:`${e}${t}${a.trim()}`,n)},[a,n,r]);return m?(0,z.jsx)(pe,{open:!0,mode:`folder`,root:te?.path,title:`Save "${a.trim()}" to...`,onSelect:v,onCancel:()=>h(!1)}):(0,z.jsx)(c,{open:e,onOpenChange:e=>{e||i()},children:(0,z.jsxs)(u,{className:`sm:max-w-md`,children:[(0,z.jsx)(l,{children:(0,z.jsx)(d,{children:`Save As`})}),(0,z.jsxs)(`div`,{className:`flex flex-col gap-2 py-2`,children:[(0,z.jsx)(`label`,{className:`text-sm text-muted-foreground`,children:`Filename`}),(0,z.jsx)(f,{value:a,onChange:e=>{p(e.target.value),g(``)},onKeyDown:e=>{e.key===`Enter`&&_()},placeholder:`e.g. my-file.ts`,autoFocus:!0}),ee&&(0,z.jsx)(`p`,{className:`text-xs text-destructive`,children:ee})]}),(0,z.jsxs)(o,{children:[(0,z.jsx)(s,{variant:`outline`,onClick:i,children:`Cancel`}),(0,z.jsx)(s,{onClick:_,children:`Choose Folder...`})]})]})})}var W=typeof window<`u`&&window.isSecureContext,Ee=[`(`,`)`,`{`,`}`,`[`,`]`,`<`,`>`,`;`,`:`,`=`,`"`,`'`,"`",`/`,`\\`,`_`,`#`],G=`px-2 py-1.5 rounded text-xs min-w-[36px] min-h-[32px] bg-surface-elevated text-text-primary active:bg-primary active:text-primary-foreground transition-colors select-none`,K=`px-3 py-1.5 rounded text-xs font-mono min-w-[36px] min-h-[32px] bg-surface-elevated text-text-primary active:bg-primary active:text-primary-foreground transition-colors select-none`,De=`w-px h-5 bg-border mx-0.5 shrink-0`;function Oe({editorRef:e,readOnly:t}){let n=(0,R.useCallback)(()=>e.current,[e]),r=(0,R.useCallback)(e=>{let t=n();if(!t)return;t.focus();let r=t.getSelection();r&&t.executeEdits(`mobile-toolbar`,[{range:r,text:e}])},[n]),[i,a]=(0,R.useState)(!1),o=(0,R.useRef)(null),s=(0,R.useCallback)(async()=>{try{let e=await navigator.clipboard.readText();e&&r(e)}catch{}},[r]),c=(0,R.useCallback)(()=>{a(!0),requestAnimationFrame(()=>o.current?.focus())},[]),l=(0,R.useCallback)(e=>{e.preventDefault();let t=e.clipboardData.getData(`text/plain`);t&&(a(!1),r(t))},[r]),u=(0,R.useCallback)(()=>{let e=n();e&&(e.focus(),e.trigger(`mobile-toolbar`,`undo`,null))},[n]),d=(0,R.useCallback)(()=>{let e=n();e&&(e.focus(),e.trigger(`mobile-toolbar`,`redo`,null))},[n]),f=(0,R.useCallback)(()=>{let e=n();e&&(e.focus(),e.trigger(`mobile-toolbar`,`tab`,null))},[n]);return t?null:(0,z.jsxs)(`div`,{className:`shrink-0 border-t border-border bg-surface`,children:[!W&&i&&(0,z.jsxs)(`div`,{className:`flex items-center gap-2 px-2 py-1.5 border-b border-border bg-muted/50`,children:[(0,z.jsx)(`textarea`,{ref:o,onPaste:l,placeholder:`Long-press here → Paste`,className:`flex-1 h-8 rounded border border-border bg-background text-foreground text-xs px-2 py-1.5 resize-none focus:outline-none focus:ring-1 focus:ring-primary`}),(0,z.jsx)(`button`,{type:`button`,onClick:()=>a(!1),className:`p-1.5 rounded text-muted-foreground active:bg-muted transition-colors`,children:(0,z.jsx)(b,{size:14})})]}),(0,z.jsxs)(`div`,{className:`flex items-center gap-1 px-2 py-1.5 overflow-x-auto`,children:[(0,z.jsx)(`button`,{type:`button`,onClick:W?s:c,className:G,title:`Paste`,children:(0,z.jsx)(A,{size:14})}),(0,z.jsx)(`button`,{type:`button`,onClick:u,className:G,title:`Undo`,children:(0,z.jsx)(T,{size:14})}),(0,z.jsx)(`button`,{type:`button`,onClick:d,className:G,title:`Redo`,children:(0,z.jsx)(ye,{size:14})}),(0,z.jsx)(`div`,{className:De}),(0,z.jsx)(`button`,{type:`button`,onClick:f,className:K,children:`Tab`}),(0,z.jsx)(`div`,{className:De}),Ee.map(e=>(0,z.jsx)(`button`,{type:`button`,onClick:()=>r(e),className:K,children:e},e))]})]})}var ke=(0,R.lazy)(()=>S(()=>import(`./markdown-renderer-YnP2OcPh.js`).then(e=>({default:e.MarkdownRenderer})),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26]))),Ae=(0,R.lazy)(()=>S(()=>import(`./csv-preview-DgArUJhd.js`).then(e=>({default:e.CsvPreview})),__vite__mapDeps([27,1,4,5,28,29,8,30,31]))),je=(0,R.lazy)(()=>S(()=>import(`./image-preview-CJ8Qqjgt.js`).then(e=>({default:e.ImagePreview})),__vite__mapDeps([32,2,1,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,33,34]))),Me=(0,R.lazy)(()=>S(()=>import(`./pdf-preview-D3Y2rNVC.js`).then(e=>({default:e.PdfPreview})),__vite__mapDeps([35,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,33]))),Ne=(0,R.lazy)(()=>S(()=>import(`./video-preview-EhN6q3Xv.js`).then(e=>({default:e.VideoPreview})),__vite__mapDeps([36,2,1,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,33,34]))),Pe=(0,R.lazy)(()=>S(()=>import(`./audio-preview-D8onaG_2.js`).then(e=>({default:e.AudioPreview})),__vite__mapDeps([37,2,1,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,33,34]))),Fe=new Set([`png`,`jpg`,`jpeg`,`gif`,`webp`,`svg`,`ico`]),Ie=new Set([`mp4`,`webm`,`mov`,`ogg`,`avi`,`mkv`]),Le=new Set([`mp3`,`wav`,`flac`,`aac`,`m4a`,`wma`]),Re=new Set([`db`,`sqlite`,`sqlite3`]);function ze(e){return e.split(`.`).pop()?.toLowerCase()??``}function Be(e){return{js:`javascript`,jsx:`javascript`,ts:`typescript`,tsx:`typescript`,py:`python`,html:`html`,css:`css`,scss:`scss`,json:`json`,md:`markdown`,mdx:`markdown`,yaml:`yaml`,yml:`yaml`,sh:`shell`,bash:`shell`,sql:`sql`}[ze(e)]??`plaintext`}var q=(0,R.memo)(function({metadata:e,tabId:t}){let n=e?.filePath,r=e?.projectName,a=e?.inlineContent,o=e?.inlineLanguage,[s,c]=(0,R.useState)(a??null),[l,u]=(0,R.useState)(`utf-8`),[d,f]=(0,R.useState)(!0),[p,m]=(0,R.useState)(null),[h,_]=(0,R.useState)(!1),v=(0,R.useRef)(null),y=(0,R.useRef)(``),b=(0,R.useRef)(null),{tabs:S,updateTab:w}=ae(se(e=>({tabs:e.tabs,updateTab:e.updateTab}))),{wordWrap:T,toggleWordWrap:E}=re(se(e=>({wordWrap:e.wordWrap,toggleWordWrap:e.toggleWordWrap}))),ce=ve(),D=e?.isUntitled===!0,O=e?.unsavedContent,[le,A]=(0,R.useState)(!1),j=S.find(e=>e.id===t),M=n?ze(n):``,N=Fe.has(M),P=M===`pdf`,F=Ie.has(M),I=Le.has(M),de=Re.has(M),fe=M===`md`||M===`mdx`,pe=M===`csv`,L=M===`sql`,[me,he]=(0,R.useState)(`preview`),[ge,ye]=(0,R.useState)(`table`),{connections:B,cachedTables:be,refreshTables:xe}=ue(),[V,Ce]=(0,R.useState)(()=>{if(!L||!n)return null;let e=localStorage.getItem(`ppm:sql-conn:${n}`);return e?Number(e):null}),H=(0,R.useRef)(null),U=(0,R.useRef)(null),W=(0,R.useMemo)(()=>B.find(e=>e.id===V)??null,[B,V]),Ee=a!=null&&(o===`json`||o===`xml`),[G,K]=(0,R.useState)(!1),De=(0,R.useCallback)(()=>{if(a)if(G)c(a),K(!1);else{let e=a.trimStart();if(o===`json`)try{c(JSON.stringify(JSON.parse(e),null,2)),K(!0)}catch{}else if(o===`xml`){let t=0;c(e.replace(/(>)(<)(\/*)/g,`$1
3
+ $2$3`).split(`
4
+ `).map(e=>{let n=e.trim();n.startsWith(`</`)&&(t=Math.max(0,t-1));let r=` `.repeat(t)+n;return n.startsWith(`<`)&&!n.startsWith(`</`)&&!n.endsWith(`/>`)&&!n.includes(`</`)&&t++,r}).join(`
5
+ `)),K(!0)}}},[a,o,G]),ke=(0,R.useCallback)(e=>{Ce(e),n&&localStorage.setItem(`ppm:sql-conn:${n}`,String(e)),xe(e).catch(()=>{})},[n,xe]),q=(0,R.useMemo)(()=>{if(!L||!V)return;let e=(be.get(V)??[]).map(e=>({name:e.tableName,schema:e.schemaName}));if(e.length!==0)return{tables:e,getColumns:async(e,t)=>x.get(`/api/db/connections/${V}/schema?table=${encodeURIComponent(e)}${t?`&schema=${encodeURIComponent(t)}`:``}`)}},[L,V,be]);(0,R.useEffect)(()=>{if(!(!H.current||!q))return U.current?.dispose(),te(),U.current=H.current.languages.registerCompletionItemProvider(`sql`,g(H.current,q)),()=>{U.current?.dispose()}},[q]);let J=ae(e=>e.openTab),[Ue,We]=(0,R.useState)(null),[Ge,Ke]=(0,R.useState)(null),[qe,Je]=(0,R.useState)(!1),[Ye,Xe]=(0,R.useState)(``),X=(0,R.useCallback)(async e=>{if(W){Je(!0),Ke(null),Xe(e);try{We(await x.post(`/api/db/connections/${W.id}/query`,{sql:e}))}catch(e){Ke(e.message),We(null)}finally{Je(!1)}}},[W]),Ze=(0,R.useCallback)(()=>{!W||!Ye||J({type:`database`,title:`${W.name} · Query`,projectId:null,closable:!0,metadata:{connectionId:W.id,connectionName:W.name,dbType:W.type,initialSql:Ye}})},[W,J,Ye]),Qe=(0,R.useCallback)(()=>{if(!b.current||!W)return;let e=b.current,t=e.getSelection();X(t&&!t.isEmpty()?e.getModel()?.getValueInRange(t)??e.getValue():e.getValue())},[W,X]),$e=typeof window<`u`&&`ontouchstart`in window,et=(0,R.useRef)(null),[tt,nt]=(0,R.useState)(null);(0,R.useEffect)(()=>{if(!$e)return;let e=window.visualViewport;if(!e)return;let t=()=>{let t=et.current;if(!t)return;let n=t.getBoundingClientRect().top;nt(e.height-Math.max(0,n))};return e.addEventListener(`resize`,t),e.addEventListener(`scroll`,t),()=>{e.removeEventListener(`resize`,t),e.removeEventListener(`scroll`,t)}},[$e]);let Z=(0,R.useRef)([]),rt=(0,R.useRef)(X);rt.current=X,(0,R.useEffect)(()=>()=>{Z.current.forEach(e=>e.dispose()),Z.current=[]},[]),(0,R.useEffect)(()=>{de&&t&&w(t,{type:`sqlite`})},[de,t,w]);let Q=n?/^(\/|[A-Za-z]:[/\\])/.test(n):!1;(0,R.useEffect)(()=>{if(a!=null){f(!1);return}if(D){c(O??``),y.current=O??``,f(!1),O&&_(!0);return}if(!n||!Q&&!r)return;if(N||P||F||I){f(!1);return}f(!0),m(null);let e=Q?`/api/fs/read?path=${encodeURIComponent(n)}`:`${ne(r)}/files/read?path=${encodeURIComponent(n)}`;return x.get(e).then(e=>{c(e.content),e.encoding&&u(e.encoding),y.current=e.content,f(!1)}).catch(e=>{m(e instanceof Error?e.message:`Failed to load file`),f(!1)}),()=>{v.current&&clearTimeout(v.current)}},[n,r,N,P,Q,D]);let it=(0,R.useRef)(h);it.current=h,(0,R.useEffect)(()=>{if(!n||!r||a!=null||D)return;let e=e=>{let t=e.detail;if(t.projectName!==r||t.path!==n||it.current)return;let i=Q?`/api/fs/read?path=${encodeURIComponent(n)}`:`${ne(r)}/files/read?path=${encodeURIComponent(n)}`;x.get(i).then(e=>{e.content!==y.current&&(c(e.content),y.current=e.content,e.encoding&&u(e.encoding))}).catch(()=>{})};return window.addEventListener(`file:changed`,e),()=>window.removeEventListener(`file:changed`,e)},[n,r,Q,a,D]),(0,R.useEffect)(()=>{if(!j||a!=null)return;let t=D?`Untitled-${e?.untitledNumber??1}`:n?C(n):`Untitled`,r=h?`${t} \u25CF`:t;j.title!==r&&w(j.id,{title:r})},[h]);let at=(0,R.useCallback)(async e=>{if(n&&!(!Q&&!r))try{Q?await x.put(`/api/fs/write`,{path:n,content:e}):await x.put(`${ne(r)}/files/write`,{path:n,content:e}),_(!1)}catch{}},[n,r,Q]);function ot(n){let r=n??``;c(r),y.current=r,_(!0),v.current&&clearTimeout(v.current),D?v.current=setTimeout(()=>{t&&w(t,{metadata:{...e,unsavedContent:y.current}})},2e3):v.current=setTimeout(()=>at(y.current),1e3)}let st=(0,R.useCallback)(async(e,n)=>{try{if(v.current&&clearTimeout(v.current),await x.put(`/api/fs/write`,{path:e,content:n}),t){let{closeTab:n,openTab:r}=ie.getState();n(t),r({type:`editor`,title:C(e),projectId:null,metadata:{filePath:e},closable:!0})}_(!1),A(!1)}catch{}},[t]),$=e?.lineNumber,ct=(0,R.useCallback)((e,t)=>{if(b.current=e,H.current=t,$&&$>0&&setTimeout(()=>{e.revealLineInCenter($),e.setPosition({lineNumber:$,column:1}),e.focus()},100),D&&e.addCommand(t.KeyMod.CtrlCmd|t.KeyCode.KeyS,()=>A(!0)),e.addCommand(t.KeyMod.Alt|t.KeyCode.KeyZ,()=>re.getState().toggleWordWrap()),t.languages.typescript.typescriptDefaults.setDiagnosticsOptions({noSemanticValidation:!0,noSyntaxValidation:!0,noSuggestionDiagnostics:!0}),t.languages.typescript.javascriptDefaults.setDiagnosticsOptions({noSemanticValidation:!0,noSyntaxValidation:!0,noSuggestionDiagnostics:!0}),q&&(U.current?.dispose(),U.current=t.languages.registerCompletionItemProvider(`sql`,g(t,q))),L){Z.current.forEach(e=>e.dispose()),Z.current=[];let n=e.getModel(),r=e.addCommand(0,(e,t)=>{t&&rt.current(t)});if(r&&n){let e=t.languages.registerCodeLensProvider(`sql`,{provideCodeLenses:e=>{if(e!==n)return{lenses:[],dispose:()=>{}};let t=[],i=e.getValue().split(`
6
+ `),a=-1,o=[],s=!1,c=(e,n)=>{let i=n.trim();!i||i.startsWith(`--`)||t.push({range:{startLineNumber:e,startColumn:1,endLineNumber:e,endColumn:1},command:{id:r,title:`▷ Run`,arguments:[i]}})};for(let e=0;e<i.length;e++){let t=i[e].trim();if(a===-1){if(!t||t.startsWith(`--`))continue;a=e+1,o=[]}o.push(i[e]),(t.match(/\$\$/g)||[]).length%2==1&&(s=!s),!s&&t.endsWith(`;`)&&(c(a,o.join(`
7
+ `)),a=-1,o=[])}return a>0&&o.join(``).trim()&&c(a,o.join(`
8
+ `)),{lenses:t,dispose:()=>{}}}});Z.current.push(e)}}},[q]);if(!a&&!D&&(!n||!Q&&!r))return(0,z.jsx)(`div`,{className:`flex items-center justify-center h-full text-text-secondary text-sm`,children:`No file selected.`});if(d)return(0,z.jsxs)(`div`,{className:`flex items-center justify-center h-full gap-2 text-text-secondary`,children:[(0,z.jsx)(k,{className:`size-5 animate-spin`}),(0,z.jsx)(`span`,{className:`text-sm`,children:`Loading file...`})]});if(p)return(0,z.jsx)(`div`,{className:`flex items-center justify-center h-full text-error text-sm`,children:p});if(N)return(0,z.jsx)(R.Suspense,{fallback:(0,z.jsx)(Y,{}),children:(0,z.jsx)(je,{filePath:n,projectName:r})});if(P)return(0,z.jsx)(R.Suspense,{fallback:(0,z.jsx)(Y,{}),children:(0,z.jsx)(Me,{filePath:n,projectName:r})});if(F)return(0,z.jsx)(R.Suspense,{fallback:(0,z.jsx)(Y,{}),children:(0,z.jsx)(Ne,{filePath:n,projectName:r})});if(I)return(0,z.jsx)(R.Suspense,{fallback:(0,z.jsx)(Y,{}),children:(0,z.jsx)(Pe,{filePath:n,projectName:r})});if(l===`base64`)return(0,z.jsxs)(`div`,{className:`flex flex-col items-center justify-center h-full gap-3 text-text-secondary`,children:[(0,z.jsx)(ee,{className:`size-10 text-text-subtle`}),(0,z.jsx)(`p`,{className:`text-sm`,children:`This file is a binary format and cannot be displayed.`}),(0,z.jsx)(`p`,{className:`text-xs text-text-subtle`,children:n})]});let lt=L?(0,z.jsxs)(`div`,{className:`shrink-0 flex items-center gap-1 px-2 border-l border-border`,children:[(0,z.jsx)(i,{className:`size-3 text-muted-foreground`}),(0,z.jsxs)(`select`,{value:V??``,onChange:e=>{let t=Number(e.target.value);t&&ke(t)},className:`h-5 text-[10px] bg-transparent border border-border rounded px-1 text-foreground outline-none max-w-[140px]`,title:`Select connection for autocomplete`,children:[(0,z.jsx)(`option`,{value:``,children:`Connection…`}),B.map(e=>(0,z.jsx)(`option`,{value:e.id,children:e.name},e.id))]}),(0,z.jsx)(`button`,{type:`button`,onClick:Qe,disabled:!W,className:`p-0.5 rounded text-muted-foreground hover:text-primary disabled:opacity-30 transition-colors`,title:`Run SQL`,children:(0,z.jsx)(oe,{className:`size-3.5`})})]}):null;return(0,z.jsxs)(`div`,{ref:et,className:`flex flex-col h-full w-full overflow-hidden`,style:tt?{height:`${tt}px`,maxHeight:`${tt}px`}:void 0,children:[a!=null&&Ee&&(0,z.jsx)(`div`,{className:`flex items-center h-7 border-b border-border bg-background shrink-0 px-2 gap-2`,children:(0,z.jsx)(`button`,{type:`button`,onClick:De,className:`text-[10px] px-2 py-0.5 rounded border border-border hover:bg-muted transition-colors text-foreground`,children:G?`Raw`:`Beautify`})}),n&&r&&t&&(0,z.jsxs)(`div`,{className:`hidden md:flex items-center h-7 border-b border-border bg-background shrink-0`,children:[(0,z.jsx)(Se,{filePath:n,projectName:r,tabId:t,className:`flex items-center flex-1 min-w-0 overflow-x-auto scrollbar-none px-2 gap-0.5`}),lt,(0,z.jsx)(we,{ext:M,mdMode:me,onMdModeChange:he,csvMode:ge,onCsvModeChange:ye,wordWrap:T,onToggleWordWrap:E,filePath:n,projectName:r,className:`shrink-0 flex items-center gap-1 px-2`})]}),L&&(!r||!t)&&(0,z.jsxs)(`div`,{className:`hidden md:flex items-center h-7 border-b border-border bg-background shrink-0 px-2`,children:[(0,z.jsx)(`span`,{className:`text-xs text-muted-foreground truncate flex-1`,children:n?C(n):`SQL`}),lt]}),pe&&ge===`table`?(0,z.jsx)(R.Suspense,{fallback:(0,z.jsx)(`div`,{className:`flex items-center justify-center h-full`,children:(0,z.jsx)(k,{className:`size-5 animate-spin text-text-subtle`})}),children:(0,z.jsx)(Ae,{content:s??``,onContentChange:ot,wordWrap:T})}):fe&&me===`preview`?(0,z.jsx)(He,{content:s??``}):(0,z.jsx)(`div`,{className:`flex-1 overflow-hidden min-h-0`,children:(0,z.jsx)(_e,{height:`100%`,language:o??Be(n??``),value:s??``,onChange:a==null?ot:void 0,onMount:ct,theme:ce,options:{fontSize:13,fontFamily:`Menlo, Monaco, Consolas, monospace`,wordWrap:T?`on`:`off`,minimap:{enabled:!1},scrollBeyondLastLine:!1,automaticLayout:!0,lineNumbers:`on`,folding:!0,bracketPairColorization:{enabled:!0},readOnly:a!=null},loading:(0,z.jsx)(k,{className:`size-5 animate-spin text-text-subtle`})})}),L&&(Ue||Ge||qe)&&(0,z.jsx)(Ve,{result:Ue,error:Ge,loading:qe,connName:W?.name,onClose:()=>{We(null),Ke(null),Je(!1)},onOpenInTab:Ze}),$e&&(0,z.jsx)(Oe,{editorRef:b,readOnly:a!=null}),le&&(0,z.jsx)(Te,{open:le,defaultName:`Untitled-${e?.untitledNumber??1}`,content:y.current,onSave:st,onCancel:()=>A(!1)})]})}),J=()=>{};function Ve({result:e,error:t,loading:n,connName:r,onClose:a,onOpenInTab:o}){let s=(0,R.useMemo)(()=>e?.changeType===`select`&&e.rows.length>0?{columns:e.columns,rows:e.rows,total:e.rows.length,limit:e.rows.length}:null,[e]),c=(0,R.useMemo)(()=>(e?.columns??[]).map(e=>({name:e,type:`text`,nullable:!0,pk:!1,defaultValue:null})),[e?.columns]),[l,u]=(0,R.useState)(250),d=(0,R.useCallback)(e=>{e.preventDefault();let t=e.clientY,n=l,r=e=>u(Math.max(80,n+(t-e.clientY))),i=()=>{document.removeEventListener(`mousemove`,r),document.removeEventListener(`mouseup`,i)};document.addEventListener(`mousemove`,r),document.addEventListener(`mouseup`,i)},[l]);return(0,z.jsxs)(`div`,{className:`shrink-0 border-t border-border flex flex-col`,style:{height:l},children:[(0,z.jsx)(`div`,{onMouseDown:d,className:`shrink-0 h-1.5 cursor-row-resize bg-border/50 hover:bg-primary/30 flex items-center justify-center transition-colors`,children:(0,z.jsx)(me,{className:`size-3 text-muted-foreground/50`})}),(0,z.jsxs)(`div`,{className:`flex items-center gap-2 px-2 py-1 bg-muted/50 border-b border-border shrink-0`,children:[(0,z.jsx)(i,{className:`size-3 text-muted-foreground`}),(0,z.jsxs)(`span`,{className:`text-xs font-medium text-foreground truncate flex-1`,children:[r?`${r} · Results`:`Query Results`,e?.executionTimeMs!=null&&(0,z.jsxs)(`span`,{className:`text-muted-foreground ml-1.5 font-normal`,children:[e.executionTimeMs,`ms`]})]}),(0,z.jsxs)(`button`,{type:`button`,onClick:o,title:`Open in DB Viewer tab`,className:`flex items-center gap-1 px-1.5 py-0.5 rounded text-[10px] text-muted-foreground hover:text-foreground hover:bg-muted transition-colors`,children:[(0,z.jsx)(P,{className:`size-3`}),(0,z.jsx)(`span`,{className:`hidden sm:inline`,children:`Open in Tab`})]}),(0,z.jsx)(`button`,{type:`button`,onClick:a,title:`Close results`,className:`p-0.5 rounded text-muted-foreground hover:text-foreground transition-colors`,children:(0,z.jsx)(b,{className:`size-3`})})]}),(0,z.jsxs)(`div`,{className:`flex-1 overflow-hidden min-h-0`,children:[n&&(0,z.jsx)(`div`,{className:`flex items-center justify-center h-full`,children:(0,z.jsx)(k,{className:`size-4 animate-spin text-muted-foreground`})}),t&&(0,z.jsx)(`div`,{className:`px-3 py-2 text-xs text-destructive bg-destructive/5`,children:t}),e?.changeType===`modify`&&(0,z.jsxs)(`div`,{className:`px-3 py-2 text-xs text-green-500`,children:[e.rowsAffected,` row(s) affected`]}),s&&(0,z.jsx)(_,{columns:s.columns,rows:s.rows,total:s.total,limit:s.limit,schema:c,loading:!1,page:1,onPageChange:J,onCellUpdate:J,orderBy:null,orderDir:`ASC`,onToggleSort:J,connectionName:r}),e?.changeType===`select`&&e.rows.length===0&&(0,z.jsx)(`div`,{className:`px-3 py-2 text-xs text-muted-foreground`,children:`No results`})]})]})}function Y(){return(0,z.jsx)(`div`,{className:`flex items-center justify-center h-full`,children:(0,z.jsx)(k,{className:`size-5 animate-spin text-text-subtle`})})}function He({content:e}){return(0,z.jsx)(R.Suspense,{fallback:(0,z.jsx)(`div`,{className:`animate-pulse h-4 bg-muted rounded m-4`}),children:(0,z.jsx)(ke,{content:e,className:`flex-1 overflow-auto p-4`})})}export{q as CodeEditor};
@@ -1,7 +1,7 @@
1
- import{o as e}from"./rolldown-runtime-FhOqtrmT.js";import{b as t,x as n}from"./vendor-markdown-0Mxgxy0L.js";import{i as r,t as i}from"./api-client-DiZgVOok.js";import{n as a}from"./settings-store-CSDOihqv.js";import"./vendor-mermaid-DCie7hiR.js";import{$ as o,_ as s}from"./index-Drwzii_w.js";import{n as c,t as l}from"./use-monaco-theme-qx6SfVRk.js";var u=e(n(),1),d=t();function f(e){return{js:`javascript`,jsx:`javascript`,ts:`typescript`,tsx:`typescript`,py:`python`,html:`html`,css:`css`,scss:`scss`,json:`json`,md:`markdown`,mdx:`markdown`,yaml:`yaml`,yml:`yaml`,sh:`shell`,bash:`shell`,go:`go`,rs:`rust`,java:`java`,rb:`ruby`,php:`php`,swift:`swift`,sql:`sql`,xml:`xml`,toml:`toml`}[e.split(`.`).pop()?.toLowerCase()??``]??`plaintext`}function p(e){let t=e.split(`
1
+ import{o as e}from"./rolldown-runtime-FhOqtrmT.js";import{b as t,x as n}from"./vendor-markdown-0Mxgxy0L.js";import{i as r,t as i}from"./api-client-DiZgVOok.js";import{n as a}from"./settings-store-CSDOihqv.js";import"./vendor-mermaid-DCie7hiR.js";import{_ as o,et as s}from"./index-Di7q5I27.js";import{n as c,t as l}from"./use-monaco-theme-qx6SfVRk.js";var u=e(n(),1),d=t();function f(e){return{js:`javascript`,jsx:`javascript`,ts:`typescript`,tsx:`typescript`,py:`python`,html:`html`,css:`css`,scss:`scss`,json:`json`,md:`markdown`,mdx:`markdown`,yaml:`yaml`,yml:`yaml`,sh:`shell`,bash:`shell`,go:`go`,rs:`rust`,java:`java`,rb:`ruby`,php:`php`,swift:`swift`,sql:`sql`,xml:`xml`,toml:`toml`}[e.split(`.`).pop()?.toLowerCase()??``]??`plaintext`}function p(e){let t=e.split(`
2
2
  `),n=[],r=0,i=0;for(;r<t.length;){let e=t[r];if(e.startsWith(`<<<<<<<`)){let a=r,o=e.substring(7).trim(),s=[];for(r++;r<t.length&&!t[r].startsWith(`=======`);)s.push(t[r]),r++;if(r>=t.length)break;let c=r,l=[];for(r++;r<t.length&&!t[r].startsWith(`>>>>>>>`);)l.push(t[r]),r++;if(r>=t.length)break;let u=t[r].substring(7).trim();n.push({id:i++,startLine:a+1,separatorLine:c+1,endLine:r+1,currentContent:s.join(`
3
3
  `),incomingContent:l.join(`
4
- `),currentLabel:o,incomingLabel:u})}r++}return n}function m({metadata:e}){let t=e?.filePath,n=e?.projectName,[m,g]=(0,u.useState)(null),[_,v]=(0,u.useState)(!0),[y,b]=(0,u.useState)(null),[x,S]=(0,u.useState)(0),C=(0,u.useRef)(null),w=(0,u.useRef)(null),T=(0,u.useRef)([]),E=(0,u.useRef)(null),{wordWrap:D}=a(s(e=>({wordWrap:e.wordWrap}))),O=l(),k=(0,u.useRef)(null),[A,j]=(0,u.useState)();(0,u.useEffect)(()=>{let e=k.current;if(!e)return;let t=new ResizeObserver(([e])=>{e&&j(Math.floor(e.contentRect.height))});return t.observe(e),()=>t.disconnect()},[]),(0,u.useEffect)(()=>{!t||!n||(v(!0),i.get(`${r(n)}/files/read?path=${encodeURIComponent(t)}`).then(e=>{g(e.content),v(!1)}).catch(e=>{b(e.message||`Failed to load file`),v(!1)}))},[t,n]);let M=(0,u.useCallback)(()=>{let e=C.current,t=w.current;if(!e||!t)return;let n=p(e.getModel()?.getValue()||``);S(n.length);for(let t of T.current)e.removeContentWidget(t);if(T.current=[],E.current&&E.current.clear(),n.length===0)return;let r=[];for(let e of n)r.push({range:new t.Range(e.startLine,1,e.startLine,1),options:{isWholeLine:!0,className:`conflict-marker-line`,glyphMarginClassName:`conflict-glyph-current`}}),r.push({range:new t.Range(e.separatorLine,1,e.separatorLine,1),options:{isWholeLine:!0,className:`conflict-marker-line`}}),r.push({range:new t.Range(e.endLine,1,e.endLine,1),options:{isWholeLine:!0,className:`conflict-marker-line`,glyphMarginClassName:`conflict-glyph-incoming`}}),e.separatorLine-e.startLine>1&&r.push({range:new t.Range(e.startLine+1,1,e.separatorLine-1,1),options:{isWholeLine:!0,className:`conflict-current-content`}}),e.endLine-e.separatorLine>1&&r.push({range:new t.Range(e.separatorLine+1,1,e.endLine-1,1),options:{isWholeLine:!0,className:`conflict-incoming-content`}});E.current=e.createDecorationsCollection(r);for(let r of n){let n=`conflict-widget-${r.id}`,i=document.createElement(`div`);i.className=`conflict-actions`,i.innerHTML=`<span class="conflict-label">Current Change (${h(r.currentLabel||`HEAD`)})</span><button class="conflict-btn conflict-btn-current" data-action="current">Accept Current</button><button class="conflict-btn conflict-btn-incoming" data-action="incoming">Accept Incoming</button><button class="conflict-btn conflict-btn-both" data-action="both">Accept Both</button>`,i.addEventListener(`click`,e=>{let t=e.target.closest(`[data-action]`);if(!t)return;let n=t.getAttribute(`data-action`);N(r.id,n)});let a={getId:()=>n,getDomNode:()=>i,getPosition:()=>({position:{lineNumber:r.startLine,column:1},preference:[t.editor.ContentWidgetPositionPreference.ABOVE]})};e.addContentWidget(a),T.current.push(a)}},[]),N=(0,u.useCallback)((e,t)=>{let n=C.current,r=w.current;if(!n||!r)return;let i=n.getModel();if(!i)return;let a=p(i.getValue()).find(t=>t.id===e);if(!a)return;let o;switch(t){case`current`:o=a.currentContent;break;case`incoming`:o=a.incomingContent;break;case`both`:o=a.currentContent+`
4
+ `),currentLabel:o,incomingLabel:u})}r++}return n}function m({metadata:e}){let t=e?.filePath,n=e?.projectName,[m,g]=(0,u.useState)(null),[_,v]=(0,u.useState)(!0),[y,b]=(0,u.useState)(null),[x,S]=(0,u.useState)(0),C=(0,u.useRef)(null),w=(0,u.useRef)(null),T=(0,u.useRef)([]),E=(0,u.useRef)(null),{wordWrap:D}=a(o(e=>({wordWrap:e.wordWrap}))),O=l(),k=(0,u.useRef)(null),[A,j]=(0,u.useState)();(0,u.useEffect)(()=>{let e=k.current;if(!e)return;let t=new ResizeObserver(([e])=>{e&&j(Math.floor(e.contentRect.height))});return t.observe(e),()=>t.disconnect()},[]),(0,u.useEffect)(()=>{!t||!n||(v(!0),i.get(`${r(n)}/files/read?path=${encodeURIComponent(t)}`).then(e=>{g(e.content),v(!1)}).catch(e=>{b(e.message||`Failed to load file`),v(!1)}))},[t,n]);let M=(0,u.useCallback)(()=>{let e=C.current,t=w.current;if(!e||!t)return;let n=p(e.getModel()?.getValue()||``);S(n.length);for(let t of T.current)e.removeContentWidget(t);if(T.current=[],E.current&&E.current.clear(),n.length===0)return;let r=[];for(let e of n)r.push({range:new t.Range(e.startLine,1,e.startLine,1),options:{isWholeLine:!0,className:`conflict-marker-line`,glyphMarginClassName:`conflict-glyph-current`}}),r.push({range:new t.Range(e.separatorLine,1,e.separatorLine,1),options:{isWholeLine:!0,className:`conflict-marker-line`}}),r.push({range:new t.Range(e.endLine,1,e.endLine,1),options:{isWholeLine:!0,className:`conflict-marker-line`,glyphMarginClassName:`conflict-glyph-incoming`}}),e.separatorLine-e.startLine>1&&r.push({range:new t.Range(e.startLine+1,1,e.separatorLine-1,1),options:{isWholeLine:!0,className:`conflict-current-content`}}),e.endLine-e.separatorLine>1&&r.push({range:new t.Range(e.separatorLine+1,1,e.endLine-1,1),options:{isWholeLine:!0,className:`conflict-incoming-content`}});E.current=e.createDecorationsCollection(r);for(let r of n){let n=`conflict-widget-${r.id}`,i=document.createElement(`div`);i.className=`conflict-actions`,i.innerHTML=`<span class="conflict-label">Current Change (${h(r.currentLabel||`HEAD`)})</span><button class="conflict-btn conflict-btn-current" data-action="current">Accept Current</button><button class="conflict-btn conflict-btn-incoming" data-action="incoming">Accept Incoming</button><button class="conflict-btn conflict-btn-both" data-action="both">Accept Both</button>`,i.addEventListener(`click`,e=>{let t=e.target.closest(`[data-action]`);if(!t)return;let n=t.getAttribute(`data-action`);N(r.id,n)});let a={getId:()=>n,getDomNode:()=>i,getPosition:()=>({position:{lineNumber:r.startLine,column:1},preference:[t.editor.ContentWidgetPositionPreference.ABOVE]})};e.addContentWidget(a),T.current.push(a)}},[]),N=(0,u.useCallback)((e,t)=>{let n=C.current,r=w.current;if(!n||!r)return;let i=n.getModel();if(!i)return;let a=p(i.getValue()).find(t=>t.id===e);if(!a)return;let o;switch(t){case`current`:o=a.currentContent;break;case`incoming`:o=a.incomingContent;break;case`both`:o=a.currentContent+`
5
5
  `+a.incomingContent;break}let s=new r.Range(a.startLine,1,a.endLine+1,1);i.pushEditOperations([],[{range:s,text:o+`
6
6
  `}],()=>null),P(i.getValue()),setTimeout(()=>M(),50)},[M]),P=(0,u.useCallback)(async e=>{if(!(!t||!n))try{await i.put(`${r(n)}/files/write`,{path:t,content:e})}catch(e){console.error(`[conflict-editor] save failed:`,e)}},[t,n]),F=(e,t)=>{C.current=e,w.current=t;let n=e.getDomNode()?.ownerDocument??document;if(!n.getElementById(`conflict-editor-styles`)){let e=n.createElement(`style`);e.id=`conflict-editor-styles`,e.textContent=`
7
7
  .conflict-current-content { background: rgba(34, 197, 94, 0.1) !important; }
@@ -16,4 +16,4 @@ import{o as e}from"./rolldown-runtime-FhOqtrmT.js";import{b as t,x as n}from"./v
16
16
  .conflict-btn-current { color: #22c55e; background: rgba(34, 197, 94, 0.15); }
17
17
  .conflict-btn-incoming { color: #3b82f6; background: rgba(59, 130, 246, 0.15); }
18
18
  .conflict-btn-both { color: #a855f7; background: rgba(168, 85, 247, 0.15); }
19
- `,n.head?.appendChild(e)}M()},I=t?.split(/[\\/]/).pop()??`unknown`,L=f(I);return _?(0,d.jsx)(`div`,{className:`flex items-center justify-center h-full`,children:(0,d.jsx)(o,{className:`size-6 animate-spin text-primary`})}):y?(0,d.jsx)(`div`,{className:`flex items-center justify-center h-full text-destructive`,children:y}):(0,d.jsxs)(`div`,{className:`h-full w-full flex flex-col`,children:[(0,d.jsxs)(`div`,{className:`flex items-center gap-2 px-3 py-1.5 text-xs border-b border-border bg-muted/50 flex-shrink-0`,children:[(0,d.jsx)(`span`,{className:`font-medium`,children:I}),(0,d.jsx)(`span`,{className:`text-muted-foreground`,children:`—`}),x>0?(0,d.jsxs)(`span`,{className:`text-destructive font-medium`,children:[x,` conflict`,x===1?``:`s`,` remaining`]}):(0,d.jsx)(`span`,{className:`text-green-500 font-medium`,children:`All conflicts resolved`})]}),(0,d.jsx)(`div`,{ref:k,className:`flex-1 min-h-0`,children:m!==null&&A&&(0,d.jsx)(c,{height:A,language:L,value:m,onMount:F,theme:O,options:{fontSize:13,fontFamily:`Menlo, Monaco, Consolas, monospace`,wordWrap:D?`on`:`off`,glyphMargin:!0,readOnly:!1,automaticLayout:!0,scrollBeyondLastLine:!1,minimap:{enabled:!1}}})})]})}function h(e){return e.replace(/&/g,`&amp;`).replace(/</g,`&lt;`).replace(/>/g,`&gt;`).replace(/"/g,`&quot;`)}export{m as ConflictEditor};
19
+ `,n.head?.appendChild(e)}M()},I=t?.split(/[\\/]/).pop()??`unknown`,L=f(I);return _?(0,d.jsx)(`div`,{className:`flex items-center justify-center h-full`,children:(0,d.jsx)(s,{className:`size-6 animate-spin text-primary`})}):y?(0,d.jsx)(`div`,{className:`flex items-center justify-center h-full text-destructive`,children:y}):(0,d.jsxs)(`div`,{className:`h-full w-full flex flex-col`,children:[(0,d.jsxs)(`div`,{className:`flex items-center gap-2 px-3 py-1.5 text-xs border-b border-border bg-muted/50 flex-shrink-0`,children:[(0,d.jsx)(`span`,{className:`font-medium`,children:I}),(0,d.jsx)(`span`,{className:`text-muted-foreground`,children:`—`}),x>0?(0,d.jsxs)(`span`,{className:`text-destructive font-medium`,children:[x,` conflict`,x===1?``:`s`,` remaining`]}):(0,d.jsx)(`span`,{className:`text-green-500 font-medium`,children:`All conflicts resolved`})]}),(0,d.jsx)(`div`,{ref:k,className:`flex-1 min-h-0`,children:m!==null&&A&&(0,d.jsx)(c,{height:A,language:L,value:m,onMount:F,theme:O,options:{fontSize:13,fontFamily:`Menlo, Monaco, Consolas, monospace`,wordWrap:D?`on`:`off`,glyphMargin:!0,readOnly:!1,automaticLayout:!0,scrollBeyondLastLine:!1,minimap:{enabled:!1}}})})]})}function h(e){return e.replace(/&/g,`&amp;`).replace(/</g,`&lt;`).replace(/>/g,`&gt;`).replace(/"/g,`&quot;`)}export{m as ConflictEditor};
@@ -0,0 +1 @@
1
+ import{o as e}from"./rolldown-runtime-FhOqtrmT.js";import{b as t,x as n}from"./vendor-markdown-0Mxgxy0L.js";import"./vendor-ui-UXCWAcmi.js";import{t as r}from"./database-Dc8mr-dP.js";import{n as i,t as a}from"./glide-data-grid-BJ3Wn9to.js";import{t as o}from"./refresh-cw-CRD2qr4U.js";import{t as s}from"./api-client-DiZgVOok.js";import"./settings-store-CSDOihqv.js";import"./vendor-mermaid-DCie7hiR.js";import"./panel-store-B1pOXkyS.js";import{t as c}from"./tab-store-DzftzxTL.js";import{et as l,tt as u}from"./index-Di7q5I27.js";import"./data-grid-types-C29KDkZJ.js";import"./use-monaco-theme-qx6SfVRk.js";import{t as d}from"./sql-query-editor-XkJZFBl5.js";var f=e(n(),1);function p(e,t,n,r){return`ppm-db-${e}-${n}.${t}-p${r}`}function m(e,t,n,r){try{let i=sessionStorage.getItem(p(e,t,n,r));return i?JSON.parse(i):null}catch{return null}}function h(e,t,n,r,i,a){try{sessionStorage.setItem(p(e,t,n,r),JSON.stringify({data:i,cols:a}))}catch{}}function g(e){let t=`/api/db/connections/${e}`,[n,r]=(0,f.useState)(null),[i,a]=(0,f.useState)(`public`),[o,c]=(0,f.useState)(null),[l,u]=(0,f.useState)([]),[d,p]=(0,f.useState)(!1),[g,_]=(0,f.useState)(null),[v,y]=(0,f.useState)(1),[b,x]=(0,f.useState)(null),[S,C]=(0,f.useState)(null),[w,T]=(0,f.useState)(!1),[E,D]=(0,f.useState)(null),[O,k]=(0,f.useState)(`ASC`),A=(0,f.useCallback)(async(r,a,o,l,d)=>{let f=r??n,m=a??i;if(!f)return;p(!0);let g=l===void 0?E:l,y=d??O;try{let n=g?`&orderBy=${encodeURIComponent(g)}&orderDir=${y}`:``,[r,i]=await Promise.all([s.get(`${t}/data?table=${encodeURIComponent(f)}&schema=${m}&page=${o??v}&limit=100${n}`),s.get(`${t}/schema?table=${encodeURIComponent(f)}&schema=${m}`)]);c(r),u(i),h(e,f,m,o??v,r,i)}catch(e){_(e.message)}finally{p(!1)}},[t,e,n,i,v,E,O]),j=(0,f.useCallback)((t,n=`public`)=>{r(t),a(n),y(1),x(null);let i=m(e,t,n,1);i?(c(i.data),u(i.cols),p(!1),A(t,n,1)):A(t,n,1)},[e,A]),M=(0,f.useCallback)(e=>{y(e),A(void 0,void 0,e)},[A]),N=(0,f.useCallback)(async e=>{T(!0),C(null);try{let r=await s.post(`${t}/query`,{sql:e});x(r),r.changeType===`modify`&&A(n??void 0,i)}catch(e){C(e.message)}finally{T(!1)}},[t,n,i,A]),P=(0,f.useCallback)(async(e,r,a,o)=>{if(!n)return;let c=n,l=i;try{await s.put(`${t}/cell`,{table:c,schema:l,pkColumn:e,pkValue:r,column:a,value:o}),A(c,l)}catch(e){_(e.message)}},[t,n,i,A]),F=(0,f.useCallback)(async(e,r)=>{if(!n)return;let a=n,o=i;try{await s.del(`${t}/row`,{table:a,schema:o,pkColumn:e,pkValue:r}),A(a,o)}catch(e){_(e.message)}},[t,n,i,A]);return{selectedTable:n,selectedSchema:i,selectTable:j,tableData:o,schema:l,loading:d,error:g,page:v,setPage:M,orderBy:E,orderDir:O,toggleSort:(0,f.useCallback)(e=>{let t,n=`ASC`;E===e?O===`ASC`?(t=e,n=`DESC`):(t=null,n=`ASC`):(t=e,n=`ASC`),D(t),k(n),y(1),A(void 0,void 0,1,t,n)},[E,O,A]),clearSort:(0,f.useCallback)(()=>{D(null),k(`ASC`),y(1),A(void 0,void 0,1,null,`ASC`)},[A]),queryResult:b,queryError:S,queryLoading:w,executeQuery:N,updateCell:P,deleteRow:F,bulkDelete:(0,f.useCallback)(async(e,r)=>{if(!n)return;let a=n,o=i;try{await s.post(`${t}/rows/delete`,{table:a,schema:o,pkColumn:e,pkValues:r}),A(a,o)}catch(e){_(e.message)}},[t,n,i,A]),insertRow:(0,f.useCallback)(async e=>{if(!n)return;let r=n,a=i;try{await s.post(`${t}/row`,{table:r,schema:a,values:e}),A(r,a)}catch(e){throw _(e.message),e}},[t,n,i,A]),refreshData:A,queryAsTable:(0,f.useCallback)(async e=>{p(!0);try{let n=await s.post(`${t}/query`,{sql:e});n.changeType===`select`&&c({columns:n.columns,rows:n.rows,total:n.rows.length,page:1,limit:n.rows.length})}catch(e){_(e.message)}finally{p(!1)}},[t])}}var _=t();function v(e){let t={},n=/"(\w+)"\s+ILIKE\s+'%([^']*?)%'/gi,r;for(;(r=n.exec(e))!==null;)t[r[1]]=r[2].replace(/''/g,`'`);return t}function y({metadata:e,tabId:t}){let n=e?.connectionId,l=e?.connectionName,p=e?.tableName,m=e?.schemaName??`public`,h=e?.initialSql,y=e?.currentSql,b=c(e=>e.updateTab),S=(0,f.useRef)(e);S.current=e;let C=(0,f.useCallback)(e=>{t&&b(t,{metadata:{...S.current,currentSql:e}})},[t,b]),w=g(n),[T,E]=(0,f.useState)([]),[D,O]=(0,f.useState)(180),k=(0,f.useRef)(null),[A,j]=(0,f.useState)({}),M=(0,f.useMemo)(()=>{if(h&&!w.selectedTable)return h;if(w.selectedTable){let e=`SELECT * FROM "${w.selectedTable}"`,t=Object.entries(A).filter(([,e])=>e.trim()).map(([e,t])=>`"${e}" ILIKE '%${t.replace(/'/g,`''`)}%'`);t.length>0&&(e+=` WHERE ${t.join(` AND `)}`),w.orderBy&&(e+=` ORDER BY "${w.orderBy}" ${w.orderDir}`);let n=(w.page-1)*100;return e+=` LIMIT 100`,n>0&&(e+=` OFFSET ${n}`),e}return`SELECT * FROM `},[h,w.selectedTable,w.orderBy,w.orderDir,w.page,A]),N=(0,f.useCallback)(e=>{j(e)},[]),P=(0,f.useRef)(void 0);(0,f.useEffect)(()=>{if(!(!w.selectedTable||Object.keys(A).length===0))return clearTimeout(P.current),P.current=setTimeout(()=>{w.queryAsTable(M)},500),()=>clearTimeout(P.current)},[A]);let F=(0,f.useCallback)(e=>{e.preventDefault();let t=e.clientY,n=D,r=e=>{let r=e.clientY-t;O(Math.max(80,Math.min(n+r,(k.current?.clientHeight??600)-100)))},i=()=>{document.removeEventListener(`mousemove`,r),document.removeEventListener(`mouseup`,i)};document.addEventListener(`mousemove`,r),document.addEventListener(`mouseup`,i)},[D]);(0,f.useEffect)(()=>{s.get(`/api/db/connections/${n}/tables?cached=1`).then(e=>E(e.map(e=>({name:e.name,schema:e.schema})))).catch(()=>{})},[n]);let I=(0,f.useMemo)(()=>{if(T.length!==0)return{tables:T,getColumns:async(e,t)=>await s.get(`/api/db/connections/${n}/schema?table=${encodeURIComponent(e)}${t?`&schema=${encodeURIComponent(t)}`:``}`)}},[n,T]),L=(0,f.useRef)(!1);(0,f.useEffect)(()=>{L.current||(L.current=!0,h?w.executeQuery(h):p&&w.selectTable(p,m))},[p,m,h]);let[R,z]=(0,f.useState)(!!h),B=(0,f.useCallback)(e=>{let t=e.trim();if(w.selectedTable&&RegExp(`^SELECT\\s+\\*\\s+FROM\\s+"?${w.selectedTable.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`)}"?\\b`,`i`).test(t)){j(v(t)),w.queryAsTable(t);return}z(!0),w.executeQuery(e)},[w.executeQuery,w.queryAsTable,w.selectedTable]),V=(0,f.useCallback)(e=>{z(!1),w.toggleSort(e)},[w.toggleSort]),H=(0,f.useCallback)(()=>{z(!1),w.clearSort()},[w.clearSort]),U=(0,f.useCallback)(e=>{z(!1),w.setPage(e)},[w.setPage]),W=w.queryResult,G=R&&!!(W||w.queryError),K=w.selectedTable&&!G;return(0,_.jsx)(`div`,{ref:k,className:`flex h-full w-full overflow-hidden`,children:(0,_.jsxs)(`div`,{className:`flex-1 flex flex-col overflow-hidden`,children:[(0,_.jsxs)(`div`,{className:`flex items-center gap-2 px-3 py-1.5 border-b border-border bg-background shrink-0`,children:[(0,_.jsx)(r,{className:`size-3.5 text-muted-foreground`}),(0,_.jsx)(`span`,{className:`text-xs text-muted-foreground truncate`,children:l??`Database`}),w.selectedTable&&(0,_.jsxs)(`span`,{className:`text-xs text-muted-foreground`,children:[`/ `,w.selectedTable]}),(0,_.jsxs)(`div`,{className:`ml-auto flex items-center gap-1`,children:[w.tableData&&(0,_.jsx)(i,{columns:w.tableData.columns,rows:w.tableData.rows,filename:l?`${l}-${w.selectedTable??`data`}`:w.selectedTable??`data`,exportAllUrl:w.selectedTable?`/api/db/connections/${n}/export?table=${encodeURIComponent(w.selectedTable)}&schema=${w.selectedSchema}`:void 0}),(0,_.jsx)(`button`,{type:`button`,onClick:()=>w.refreshData(),title:`Reload data`,className:`p-1 rounded text-muted-foreground hover:text-foreground transition-colors`,children:(0,_.jsx)(o,{className:`size-3 ${w.loading?`animate-spin`:``}`})})]})]}),(0,_.jsx)(`div`,{className:`shrink-0 border-b border-border`,style:{height:D},children:(0,_.jsx)(d,{onExecute:B,loading:w.queryLoading,defaultValue:M,schemaInfo:I,onSqlChange:C,persistedSql:y})}),(0,_.jsx)(`div`,{onMouseDown:F,className:`shrink-0 h-1.5 cursor-row-resize bg-border/50 hover:bg-primary/30 flex items-center justify-center transition-colors`,children:(0,_.jsx)(u,{className:`size-3 text-muted-foreground/50`})}),(0,_.jsxs)(`div`,{className:`flex-1 overflow-hidden`,children:[K&&w.tableData&&(0,_.jsx)(a,{columns:w.tableData.columns,rows:w.tableData.rows,total:w.tableData.total,limit:w.tableData.limit,schema:w.schema,loading:w.loading,page:w.page,onPageChange:U,onCellUpdate:w.updateCell,onRowDelete:w.deleteRow,orderBy:w.orderBy,orderDir:w.orderDir,onToggleSort:V,onClearSort:H,onBulkDelete:w.bulkDelete,onInsertRow:w.insertRow,connectionId:n,selectedTable:w.selectedTable,selectedSchema:w.selectedSchema,connectionName:l,columnFilters:A,onColumnFilter:N}),G&&(0,_.jsx)(x,{result:W,error:w.queryError,loading:w.queryLoading,schema:w.schema,connectionName:l})]})]})})}var b=()=>{};function x({result:e,error:t,loading:n,schema:r,connectionName:i}){let o=(0,f.useMemo)(()=>e?.changeType===`select`&&e.rows.length>0?{columns:e.columns,rows:e.rows,total:e.rows.length,limit:e.rows.length}:null,[e]),s=(0,f.useMemo)(()=>r?.length?r:(e?.columns??[]).map(e=>({name:e,type:`text`,nullable:!0,pk:!1,defaultValue:null})),[r,e?.columns]);return(0,_.jsxs)(`div`,{className:`flex flex-col h-full overflow-hidden text-xs`,children:[t&&(0,_.jsx)(`div`,{className:`px-3 py-2 text-destructive bg-destructive/5 shrink-0`,children:t}),e?.changeType===`modify`&&(0,_.jsxs)(`div`,{className:`px-3 py-2 text-green-500 shrink-0`,children:[e.rowsAffected,` row(s) affected`,e.executionTimeMs!=null&&(0,_.jsxs)(`span`,{className:`text-muted-foreground ml-2`,children:[e.executionTimeMs,`ms`]})]}),o&&(0,_.jsxs)(`div`,{className:`flex-1 overflow-hidden`,children:[(0,_.jsx)(a,{columns:o.columns,rows:o.rows,total:o.total,limit:o.limit,schema:s,loading:!!n,page:1,onPageChange:b,onCellUpdate:b,orderBy:null,orderDir:`ASC`,onToggleSort:b,connectionName:i}),e?.executionTimeMs!=null&&(0,_.jsxs)(`div`,{className:`px-3 py-0.5 border-t border-border text-[10px] text-muted-foreground shrink-0`,children:[e.rows.length,` rows · `,e.executionTimeMs,`ms`]})]}),e?.changeType===`select`&&e.rows.length===0&&(0,_.jsxs)(`div`,{className:`px-3 py-2 text-muted-foreground shrink-0`,children:[`No results`,e.executionTimeMs!=null&&(0,_.jsxs)(`span`,{className:`ml-2 text-muted-foreground/60`,children:[e.executionTimeMs,`ms`]})]}),!e&&!t&&(0,_.jsx)(`div`,{className:`flex items-center justify-center h-full text-muted-foreground`,children:n?(0,_.jsx)(l,{className:`size-4 animate-spin`}):`Run a query to see results`})]})}export{y as DatabaseViewer};
@@ -0,0 +1,4 @@
1
+ import{o as e}from"./rolldown-runtime-FhOqtrmT.js";import{b as t,x as n}from"./vendor-markdown-0Mxgxy0L.js";import{t as r}from"./text-wrap-AZErifCu.js";import{i,t as a}from"./api-client-DiZgVOok.js";import{n as o}from"./settings-store-CSDOihqv.js";import"./vendor-mermaid-DCie7hiR.js";import{_ as s,et as c,st as l}from"./index-Di7q5I27.js";import{r as u,t as d}from"./use-monaco-theme-qx6SfVRk.js";var f=e(n(),1),p=t();function m(e){return{js:`javascript`,jsx:`javascript`,ts:`typescript`,tsx:`typescript`,py:`python`,html:`html`,css:`css`,scss:`scss`,json:`json`,md:`markdown`,mdx:`markdown`,yaml:`yaml`,yml:`yaml`,sh:`shell`,bash:`shell`}[e.split(`.`).pop()?.toLowerCase()??``]??`plaintext`}function h({metadata:e}){let t=e?.filePath,n=e?.projectName,h=e?.ref1,_=e?.ref2,v=e?.file1,y=e?.file2,b=e?.original,x=e?.modified,S=b!=null||x!=null,C=!!(v&&y),[w,T]=(0,f.useState)(null),[E,D]=(0,f.useState)(null),[O,k]=(0,f.useState)(null),[A,j]=(0,f.useState)(!S),[M,N]=(0,f.useState)(null),{wordWrap:P,toggleWordWrap:F}=o(s(e=>({wordWrap:e.wordWrap,toggleWordWrap:e.toggleWordWrap}))),I=d(),L=(0,f.useRef)(null),R=(0,f.useRef)(null),[z,B]=(0,f.useState)(!1),[V,H]=(0,f.useState)();(0,f.useEffect)(()=>{let e=L.current;if(!e)return;let t=new ResizeObserver(([e])=>{e&&H(Math.floor(e.contentRect.height))});return t.observe(e),()=>t.disconnect()},[A,M]),(0,f.useEffect)(()=>{if(S||!n)return;if(j(!0),N(null),k(null),D(null),T(null),v&&y){let e=new URLSearchParams({file1:v,file2:y});a.get(`${i(n)}/files/compare?${e}`).then(e=>{D(e),j(!1)}).catch(e=>{N(e instanceof Error?e.message:`Failed to compare files`),j(!1)});return}if(t){let e=new URLSearchParams({file:t});h&&e.set(`ref`,h),a.get(`${i(n)}/git/file-full-diff?${e}`).then(e=>{k(e),j(!1)}).catch(e=>{N(e instanceof Error?e.message:`Failed to load diff`),j(!1)});return}let e;if(h||_){let t=new URLSearchParams;h&&t.set(`ref1`,h),_&&t.set(`ref2`,_),e=`${i(n)}/git/diff?${t}`}else e=`${i(n)}/git/diff`;a.get(e).then(e=>{T(e.diff),j(!1)}).catch(e=>{N(e instanceof Error?e.message:`Failed to load diff`),j(!1)})},[t,n,h,_,v,y,S]);let{original:U,modified:W}=(0,f.useMemo)(()=>S?{original:b??``,modified:x??``}:C&&E?E:O||(w?g(w):{original:``,modified:``}),[w,S,b,x,C,E,O]),G=(0,f.useMemo)(()=>{let e=t??y??v;return e?m(e):`plaintext`},[t,v,y]),K=typeof window<`u`&&window.innerWidth<768,q=!K;return(0,f.useEffect)(()=>{let e=R.current;if(!e)return;let t=K||P?`on`:`off`;e.updateOptions({diffWordWrap:t}),e.getOriginalEditor().updateOptions({wordWrapOverride2:t}),e.getModifiedEditor().updateOptions({wordWrapOverride2:t})},[P,K,z]),!n&&!S?(0,p.jsx)(`div`,{className:`flex items-center justify-center h-full text-muted-foreground text-sm`,children:`No project selected.`}):A?(0,p.jsxs)(`div`,{className:`flex items-center justify-center h-full gap-2 text-muted-foreground`,children:[(0,p.jsx)(c,{className:`size-5 animate-spin`}),(0,p.jsx)(`span`,{className:`text-sm`,children:`Loading diff...`})]}):M?(0,p.jsx)(`div`,{className:`flex items-center justify-center h-full text-destructive text-sm`,children:M}):!S&&!C&&!O&&!U&&!W?(0,p.jsxs)(`div`,{className:`flex flex-col items-center justify-center h-full gap-2 text-muted-foreground`,children:[(0,p.jsx)(l,{className:`size-8`}),(0,p.jsx)(`p`,{className:`text-sm`,children:`No content changes`}),t&&(0,p.jsx)(`p`,{className:`text-xs font-mono`,children:t})]}):(0,p.jsxs)(`div`,{className:`flex flex-col h-full`,children:[!K&&(0,p.jsx)(`div`,{className:`flex items-center justify-end gap-0.5 px-2 py-0.5 border-b border-border shrink-0`,children:(0,p.jsx)(`button`,{type:`button`,onClick:F,title:`Toggle word wrap`,className:`p-1 rounded hover:bg-muted transition-colors ${P?`bg-muted text-foreground`:``}`,children:(0,p.jsx)(r,{className:`size-3.5`})})}),(0,p.jsx)(`div`,{ref:L,className:`flex-1 overflow-hidden`,children:V&&V>0?(0,p.jsx)(u,{height:V,language:G,original:U,modified:W,theme:I,onMount:e=>{R.current=e,B(!0)},options:{fontSize:K?11:13,fontFamily:`Menlo, Monaco, Consolas, monospace`,diffWordWrap:K||P?`on`:`off`,renderSideBySide:q,useInlineViewWhenSpaceIsLimited:!1,readOnly:!0,automaticLayout:!0,scrollBeyondLastLine:!1},loading:(0,p.jsx)(c,{className:`size-5 animate-spin text-muted-foreground`})}):(0,p.jsx)(`div`,{className:`flex items-center justify-center h-full`,children:(0,p.jsx)(c,{className:`size-5 animate-spin text-muted-foreground`})})})]})}function g(e){let t=e.split(`
2
+ `),n=[],r=[],i=!1;for(let e of t)if(!(e.startsWith(`diff --git`)||e.startsWith(`diff --no-index`)||e.startsWith(`index `)||e.startsWith(`new file`)||e.startsWith(`deleted file`)||e.startsWith(`old mode`)||e.startsWith(`new mode`)||e.startsWith(`---`)||e.startsWith(`+++`)||e.startsWith(`Binary files`)||e.startsWith(`\\ No newline`))){if(e.startsWith(`@@`)){i=!0;continue}if(i)if(e.startsWith(`-`))n.push(e.slice(1));else if(e.startsWith(`+`))r.push(e.slice(1));else{let t=e.startsWith(` `)?e.slice(1):e;n.push(t),r.push(t)}}return{original:n.join(`
3
+ `),modified:r.join(`
4
+ `)}}export{h as DiffViewer};
@@ -1,3 +1,3 @@
1
- import{o as e}from"./rolldown-runtime-FhOqtrmT.js";import{b as t,x as n}from"./vendor-markdown-0Mxgxy0L.js";import{r}from"./api-client-DiZgVOok.js";import{$ as i,x as a}from"./index-Drwzii_w.js";var o=e(n(),1),s=t(),c=`<script>
1
+ import{o as e}from"./rolldown-runtime-FhOqtrmT.js";import{b as t,x as n}from"./vendor-markdown-0Mxgxy0L.js";import{r}from"./api-client-DiZgVOok.js";import{et as i,x as a}from"./index-Di7q5I27.js";var o=e(n(),1),s=t(),c=`<script>
2
2
  function acquireVsCodeApi(){return{postMessage:function(m){window.parent.postMessage(m,"*")},getState:function(){try{return JSON.parse(sessionStorage.getItem("vscode-state")||"null")}catch{return null}},setState:function(s){sessionStorage.setItem("vscode-state",JSON.stringify(s));return s}}}
3
3
  <\/script>`;function l(e){if(!e)return e;let t=e.indexOf(`<head>`);return t===-1?c+e:e.slice(0,t+6)+c+e.slice(t+6)}function u({metadata:e}){let t=e?.panelId,n=e?.viewType,c=e?.projectName||void 0,[u,d]=(0,o.useState)(!1),f=a(e=>e.contributions!==null),p=a(e=>{if(t&&e.webviewPanels[t])return e.webviewPanels[t];if(n){let t=n.includes(`.`)?n:`${n}.view`;return Object.values(e.webviewPanels).find(e=>e.viewType===n||e.viewType===t)}}),m=p?.id??t,h=(0,o.useRef)(null),g=p?.html??``,_=l(g),v=(0,o.useRef)(null);(0,o.useEffect)(()=>{if(p||!n||!f||c&&c===v.current)return;c&&(v.current=c);let e=n.includes(`.`)?n:`${n}.view`,t=!1;async function i(){let n=[];if(c)try{let e=r(),t=(await(await fetch(`/api/projects`,e?{headers:{Authorization:`Bearer ${e}`}}:{})).json()).data?.find(e=>e.name===c);t&&(n=[t.path])}catch{}t||window.dispatchEvent(new CustomEvent(`ext:command:execute`,{detail:{command:e,args:n}}))}return i(),()=>{t=!0}},[p,n,c,f]);let y=e?.extensionId,b=a(e=>{if(y&&e.activationErrors[y])return e.activationErrors[y];if(n){for(let[t,r]of Object.entries(e.activationErrors))if(t===`ext-${n}`)return r}}),x=(0,o.useCallback)(()=>{if(d(!1),!n)return;let e=n.includes(`.`)?n:`${n}.view`;(async()=>{try{let t=r(),n=(await(await fetch(`/api/projects`,t?{headers:{Authorization:`Bearer ${t}`}}:{})).json()).data?.find(e=>e.name===c),i=n?[n.path]:[];window.dispatchEvent(new CustomEvent(`ext:command:execute`,{detail:{command:e,args:i}}))}catch{}})()},[n,c]),S=(0,o.useRef)(null),C=(0,o.useRef)(n);return(0,o.useEffect)(()=>{S.current=m??null},[m]),(0,o.useEffect)(()=>{C.current=n},[n]),(0,o.useEffect)(()=>()=>{let e=S.current;if(e){let t=C.current;a.getState().removeWebviewPanel(e),window.dispatchEvent(new CustomEvent(`ext:webview:close`,{detail:{panelId:e,viewType:t}}))}},[]),(0,o.useEffect)(()=>{if(p){d(!1);return}if(!f||!n)return;let e=0,t=setInterval(()=>{if(e++,e>3){clearInterval(t),d(!0);return}x()},2e3);return()=>clearInterval(t)},[p,f,n,x]),(0,o.useEffect)(()=>{if(!m)return;let e=e=>{h.current&&e.source===h.current.contentWindow&&window.dispatchEvent(new CustomEvent(`ext:webview:send`,{detail:{panelId:m,message:e.data}}))};return window.addEventListener(`message`,e),()=>window.removeEventListener(`message`,e)},[m]),(0,o.useEffect)(()=>{if(!m)return;let e=e=>{let{panelId:t,message:n}=e.detail;t===m&&h.current?.contentWindow?.postMessage(n,`*`)};return window.addEventListener(`ext:webview:message`,e),()=>window.removeEventListener(`ext:webview:message`,e)},[m]),!p||!g?(0,s.jsx)(`div`,{className:`flex flex-col items-center justify-center h-full gap-3 text-sm text-text-subtle`,children:u?(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(`span`,{className:`text-destructive font-medium`,children:`Extension failed to load`}),b&&(0,s.jsx)(`span`,{className:`text-xs text-muted-foreground max-w-md text-center`,children:b}),(0,s.jsx)(`button`,{onClick:x,className:`text-xs text-primary hover:underline`,children:`Retry`})]}):(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(i,{className:`size-5 animate-spin`}),(0,s.jsx)(`span`,{children:`Loading extension...`})]})}):(0,s.jsx)(`div`,{className:`h-full w-full relative`,children:(0,s.jsx)(`iframe`,{ref:h,srcDoc:_,sandbox:`allow-scripts`,className:`w-full h-full border-0 bg-white dark:bg-zinc-900`,title:p.title},m)})}export{u as ExtensionWebview};
@@ -0,0 +1 @@
1
+ import{o as e}from"./rolldown-runtime-FhOqtrmT.js";import{b as t,x as n}from"./vendor-markdown-0Mxgxy0L.js";import"./vendor-ui-UXCWAcmi.js";import{t as r}from"./createLucideIcon-BjHrJDVb.js";import{t as i}from"./arrow-down-D825m4vm.js";import{t as a}from"./arrow-up-Rcw6_KKu.js";import{t as o}from"./refresh-cw-CRD2qr4U.js";import{i as s,t as c}from"./api-client-DiZgVOok.js";import{n as l}from"./utils-E0yyGxXt.js";import{n as u}from"./project-store-BnvrVKBw.js";import{W as d,_ as f,dt as p,et as m,nt as h}from"./index-Di7q5I27.js";var g=r(`cloud-off`,[[`path`,{d:`M10.94 5.274A7 7 0 0 1 15.71 10h1.79a4.5 4.5 0 0 1 4.222 6.057`,key:`1uxyv8`}],[`path`,{d:`M18.796 18.81A4.5 4.5 0 0 1 17.5 19H9A7 7 0 0 1 5.79 5.78`,key:`99tcn7`}],[`path`,{d:`m2 2 20 20`,key:`1ooewy`}]]),_=e(n(),1),v=t(),y=[`#2563eb`,`#16a34a`,`#d97706`,`#9333ea`,`#dc2626`,`#0891b2`,`#c026d3`,`#ea580c`];function b(e){let t=0;for(let n=0;n<e.length;n++)t=t*31+e.charCodeAt(n)|0;return y[Math.abs(t)%y.length]}function x({name:e,syncState:t,isHead:n,isTag:r,className:o}){let s=r?`#d97706`:b(e),c=r?d:t===`synced`?p:t===`ahead`?a:t===`behind`?i:t===`remote-only`?p:g,u=r?`Tag: ${e}`:t===`synced`?`${e} — synced with remote`:t===`ahead`?`${e} — ahead of remote`:t===`behind`?`${e} — behind remote`:t===`remote-only`?`${e} — remote only`:`${e} — local only`;return(0,v.jsxs)(`span`,{className:l(`inline-flex items-center gap-1 rounded-md border px-1.5 py-0.5 text-[11px] font-medium leading-tight max-w-[220px]`,n&&`ring-1 ring-offset-1 ring-offset-background`,t===`remote-only`&&`opacity-70`,o),style:{borderColor:s,backgroundColor:s+`1A`,color:`#1a1a1a`,...n?{"--tw-ring-color":s}:{}},title:u,children:[(0,v.jsx)(c,{className:`size-3 shrink-0`,style:{color:s}}),(0,v.jsx)(`span`,{className:`truncate`,children:e})]})}function S(e,t,n,r){let i=[],a=e===r;for(let e of t)e.startsWith(`tag: `)&&i.push({name:e.slice(5),syncState:`synced`,isTag:!0});let o=n.filter(t=>t.commitHash===e),s=o.filter(e=>!e.remote),c=o.filter(e=>e.remote);new Set(s.map(e=>e.name));let l=new Set;for(let e of s){let t=`local-only`;e.remotes.length>0&&(t=e.ahead>0&&e.behind===0?`ahead`:e.behind>0&&e.ahead===0?`behind`:`synced`),i.push({name:e.name,syncState:t,isHead:a&&e.current});for(let t of c){let n=t.name.replace(/^remotes\//,``),r=n.indexOf(`/`);r<0||n.slice(r+1)===e.name&&l.add(t.name)}}for(let e of c){if(l.has(e.name))continue;let t=e.name.replace(/^remotes\//,``);i.push({name:t,syncState:`remote-only`})}return i}var C=100;function w({metadata:e}){let t=e?.projectName??u(f(e=>e.activeProject))?.name,[n,r]=(0,_.useState)(null),[i,a]=(0,_.useState)(!1),[l,d]=(0,_.useState)(!0),p=(0,_.useRef)(null),g=(0,_.useCallback)(async(e=0,n=!1)=>{if(t){a(!0);try{let i=await c.get(`${s(t)}/git/graph?max=${C}&skip=${e}`);r(e=>n&&e?{...i,commits:[...e.commits,...i.commits]}:i),d(i.commits.length===C)}catch{}a(!1)}},[t]);(0,_.useEffect)(()=>{g()},[g]);let y=(0,_.useCallback)(()=>{i||!l||!n||g(n.commits.length,!0)},[i,l,n,g]),b=(0,_.useCallback)(e=>{let t=e.currentTarget;t.scrollHeight-t.scrollTop-t.clientHeight<200&&y()},[y]);return t?(0,v.jsxs)(`div`,{className:`flex flex-col h-full`,children:[(0,v.jsxs)(`div`,{className:`flex items-center gap-2 px-3 py-2 border-b border-border shrink-0`,children:[(0,v.jsx)(h,{className:`size-4 text-text-secondary`}),(0,v.jsx)(`span`,{className:`text-xs font-medium text-text-primary`,children:`Git Log`}),(0,v.jsx)(`span`,{className:`text-[10px] text-text-subtle`,children:n?`${n.commits.length} commits`:``}),(0,v.jsx)(`div`,{className:`flex-1`}),(0,v.jsx)(`button`,{onClick:()=>g(),disabled:i,className:`p-1 rounded text-text-subtle hover:text-text-secondary transition-colors`,title:`Refresh`,children:(0,v.jsx)(o,{className:`size-3.5 ${i?`animate-spin`:``}`})})]}),!n&&i?(0,v.jsx)(`div`,{className:`flex items-center justify-center h-full`,children:(0,v.jsx)(m,{className:`size-5 animate-spin text-primary`})}):n&&n.commits.length===0?(0,v.jsx)(`div`,{className:`flex items-center justify-center h-full text-text-secondary text-sm`,children:`No commits yet`}):n?(0,v.jsxs)(`div`,{ref:p,className:`flex-1 overflow-y-auto min-h-0`,onScroll:b,children:[n.commits.map(e=>(0,v.jsx)(T,{commit:e,branches:n.branches,head:n.head},e.hash)),i&&(0,v.jsx)(`div`,{className:`flex items-center justify-center py-3`,children:(0,v.jsx)(m,{className:`size-4 animate-spin text-text-subtle`})}),!l&&n.commits.length>0&&(0,v.jsx)(`div`,{className:`text-center text-[10px] text-text-subtle py-3`,children:`End of history`})]}):null]}):(0,v.jsx)(`div`,{className:`flex items-center justify-center h-full text-text-secondary text-sm`,children:`Select a project to view git log`})}function T({commit:e,branches:t,head:n}){let r=e.hash===n,i=S(e.hash,e.refs,t,n);return(0,v.jsxs)(`div`,{className:`flex items-start gap-2 px-3 py-1.5 border-b border-border/50 hover:bg-surface-elevated transition-colors ${r?`bg-primary/5`:``}`,children:[(0,v.jsx)(`div`,{className:`flex items-center pt-1 shrink-0`,children:(0,v.jsx)(`span`,{className:`size-2.5 rounded-full border-2 ${r?`border-primary bg-primary`:`border-text-subtle bg-transparent`}`})}),(0,v.jsxs)(`div`,{className:`flex-1 min-w-0`,children:[i.length>0&&(0,v.jsx)(`div`,{className:`flex flex-wrap items-center gap-1 mb-0.5`,children:i.map(e=>(0,v.jsx)(x,{...e},`${e.name}-${e.syncState}`))}),(0,v.jsx)(`p`,{className:`text-xs text-text-primary truncate leading-snug`,children:e.subject}),(0,v.jsxs)(`div`,{className:`flex items-center gap-2 mt-0.5`,children:[(0,v.jsx)(`span`,{className:`text-[10px] font-mono text-text-subtle`,children:e.abbreviatedHash}),(0,v.jsx)(`span`,{className:`text-[10px] text-text-subtle truncate`,children:e.authorName}),(0,v.jsx)(`span`,{className:`text-[10px] text-text-subtle shrink-0`,children:E(e.authorDate)})]})]})]})}function E(e){let t=new Date(e),n=Date.now()-t.getTime(),r=Math.floor(n/6e4);if(r<1)return`now`;if(r<60)return`${r}m`;let i=Math.floor(r/60);if(i<24)return`${i}h`;let a=Math.floor(i/24);return a<30?`${a}d`:t.toLocaleDateString(`en`,{month:`short`,day:`numeric`})}export{w as GitLogPanel};
@@ -1,5 +1,5 @@
1
1
  const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/data-grid-overlay-editor-CmduzuPM.js","assets/rolldown-runtime-FhOqtrmT.js","assets/dist-PPUhQONj.js","assets/vendor-markdown-0Mxgxy0L.js","assets/vendor-ui-UXCWAcmi.js","assets/data-grid-types-C29KDkZJ.js","assets/number-overlay-editor-DS-qf63L.js"])))=>i.map(i=>d[i]);
2
- import{o as e,t}from"./rolldown-runtime-FhOqtrmT.js";import{b as n,x as r}from"./vendor-markdown-0Mxgxy0L.js";import{Y as i}from"./vendor-ui-UXCWAcmi.js";import{t as a}from"./createLucideIcon-BjHrJDVb.js";import{t as o}from"./arrow-down-D825m4vm.js";import{t as s}from"./arrow-up-Rcw6_KKu.js";import{n as c}from"./database-Dc8mr-dP.js";import{t as l}from"./chevron-right-CD8e6Aj4.js";import{i as u,n as d,r as f,t as p}from"./search-D90WJ5fo.js";import{i as m,n as h,r as g,t as _}from"./trash-2-DkIfBY8d.js";import{t as v}from"./sparkles-KCOEy7QI.js";import{t as y}from"./text-wrap-AZErifCu.js";import{t as b}from"./x-DfF6D5Js.js";import{K as x,j as S}from"./vendor-mermaid-DCie7hiR.js";import{t as C}from"./tab-store-DzftzxTL.js";import{$ as w,V as T,_ as E,ct as D,et as O}from"./index-Drwzii_w.js";import{A as k,B as ee,C as te,D as A,E as ne,F as j,G as re,H as ie,I as ae,L as M,M as oe,N,O as P,P as se,R as ce,S as le,T as F,U as I,V as ue,W as de,_ as fe,a as pe,b as me,c as he,d as ge,f as _e,g as ve,h as L,i as ye,j as R,k as be,l as z,m as xe,n as B,o as Se,p as V,r as Ce,s as we,t as H,u as Te,v as Ee,w as De,x as U,y as Oe,z as ke}from"./data-grid-types-C29KDkZJ.js";import{t as W}from"./dist-PPUhQONj.js";import{n as Ae,t as je}from"./use-monaco-theme-qx6SfVRk.js";import{n as Me}from"./csv-parser-D8VHWVA6.js";var Ne=a(`funnel`,[[`path`,{d:`M10 20a1 1 0 0 0 .553.895l2 1A1 1 0 0 0 14 21v-7a2 2 0 0 1 .517-1.341L21.74 4.67A1 1 0 0 0 21 3H3a1 1 0 0 0-.742 1.67l7.225 7.989A2 2 0 0 1 10 14z`,key:`sc7q7i`}]]),Pe=a(`save`,[[`path`,{d:`M15.2 3a2 2 0 0 1 1.4.6l3.8 3.8a2 2 0 0 1 .6 1.4V19a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2z`,key:`1c8476`}],[`path`,{d:`M17 21v-7a1 1 0 0 0-1-1H8a1 1 0 0 0-1 1v7`,key:`1ydtos`}],[`path`,{d:`M7 3v4a1 1 0 0 0 1 1h7`,key:`t51u73`}]]),Fe=`SELECT.FROM.WHERE.INSERT.INTO.VALUES.UPDATE.SET.DELETE.CREATE.TABLE.ALTER.DROP.INDEX.JOIN.LEFT.RIGHT.INNER.OUTER.ON.AND.OR.NOT.NULL.IS.IN.LIKE.BETWEEN.HAVING.LIMIT.OFFSET.AS.DISTINCT.COUNT.SUM.AVG.MIN.MAX.CASE.WHEN.THEN.ELSE.END.EXISTS.UNION.ALL.ASC.DESC.ORDER BY.GROUP BY.LEFT JOIN.RIGHT JOIN.INNER JOIN.CROSS JOIN.FULL OUTER JOIN.IS NULL.IS NOT NULL`.split(`.`),Ie=[`COUNT`,`SUM`,`AVG`,`MIN`,`MAX`],Le=[`=`,`!=`,`<>`,`>`,`<`,`>=`,`<=`,`LIKE`,`ILIKE`,`IN`,`NOT IN`,`BETWEEN`,`IS NULL`,`IS NOT NULL`],Re=[`ASC`,`DESC`],ze=new Map,Be=new Set(`WHERE.SET.ON.ORDER.GROUP.HAVING.LIMIT.LEFT.RIGHT.INNER.OUTER.CROSS.FULL.JOIN.AND.OR.VALUES.SELECT.FROM.INTO.UPDATE.DELETE.INSERT.CREATE.ALTER.DROP`.split(`.`));function Ve(e){let t=new Set,n=new Map,r=e.matchAll(/\b(?:FROM|JOIN|UPDATE|INTO)\s+"?(\w+)"?(?:\s+AS\s+(\w+)|\s+(?!(?:FROM|JOIN|UPDATE|INTO|WHERE|SET|ON|ORDER|GROUP|HAVING|LIMIT|LEFT|RIGHT|INNER|OUTER|CROSS|FULL|AND|OR|VALUES|SELECT)\b)(\w+))?/gi);for(let e of r){let r=e[1];t.add(r);let i=e[2]??e[3];i&&!Be.has(i.toUpperCase())&&n.set(i.toLowerCase(),r)}return{tableRefs:t,aliasMap:n}}function He(e,t){return t.get(e.toLowerCase())??e}async function Ue(e,t){let n=e.toLowerCase(),r=ze.get(n);if(!r)try{r=await t.getColumns(e),ze.set(n,r)}catch{r=[]}return r}async function We(e,t,n,r){let i=[],a=new Set;for(let o of e){let e=await Ue(o,t);for(let t of e){if(a.has(t.name))continue;a.add(t.name);let e=/[A-Z]/.test(t.name);i.push({label:t.name,kind:n.languages.CompletionItemKind.Field,detail:`${o} · ${t.type}`,insertText:e?`"${t.name}"`:t.name,range:r,sortText:`0`+t.name})}}return i}function Ge(e){if(/(\w+)\.\s*$/.test(e))return`dot`;let t=e.match(/\b(?:ORDER|GROUP)\s+BY\s+(?:[\w"]+\s+(?:ASC|DESC)\s*,\s*)*[\w"]+\s+(\w*)$/i);if(t){let e=t[1].toUpperCase();return e===`ASC`||e===`DESC`?`after-direction`:`sort-direction`}return/\b(?:ORDER|GROUP)\s+BY\s+.*(?:ASC|DESC)\s*,\s*\w*$/i.test(e)?`order-by-next-col`:/\b(?:WHERE|AND|OR)\s+[\w"]+\s+\S*$/i.test(e)?`operator`:/\b(?:FROM|JOIN|INTO|UPDATE|TABLE)\s+\w*$/i.test(e)?`table`:/\bINSERT\s+INTO\s+[\w"]+\s*\(\s*(?:[\w"]+\s*,\s*)*\w*$/i.test(e)?`insert-cols`:/\b(?:SELECT|WHERE|ORDER\s+BY|GROUP\s+BY|HAVING|SET|ON|AND|OR)\s+(?:[\w"]+\s*,\s*)*\w*$/i.test(e)?`columns`:/,\s*\w*$/.test(e)?`comma-cols`:`default`}function Ke(e,t){return{triggerCharacters:[`.`,`,`],provideCompletionItems:async(n,r)=>{try{let i=n.getValueInRange({startLineNumber:1,startColumn:1,endLineNumber:r.lineNumber,endColumn:r.column}),a=n.getWordUntilPosition(r),o={startLineNumber:r.lineNumber,endLineNumber:r.lineNumber,startColumn:a.startColumn,endColumn:a.endColumn},{tableRefs:s,aliasMap:c}=Ve(n.getValue()),l=[],u=Ge(i);if(u===`dot`){let n=i.match(/(\w+)\.\s*$/);if(n){let r=n[1],i=await Ue(He(r,c),t);for(let t of i){let n=/[A-Z]/.test(t.name);l.push({label:t.name,kind:e.languages.CompletionItemKind.Field,detail:t.type,insertText:n?`"${t.name}"`:t.name,range:o})}}return{suggestions:l}}if(u===`sort-direction`){for(let t of Re)l.push({label:t,kind:e.languages.CompletionItemKind.Keyword,insertText:t,range:o,sortText:`0`+t});return{suggestions:l}}if(u===`after-direction`)return{suggestions:[]};if(u===`order-by-next-col`)return l.push(...await We(s,t,e,o)),{suggestions:l};if(u===`operator`){for(let t of Le)l.push({label:t,kind:e.languages.CompletionItemKind.Operator,insertText:t,range:o,sortText:`0`+t});return{suggestions:l}}if(u===`table`){for(let n of t.tables)l.push({label:n.name,kind:e.languages.CompletionItemKind.Struct,detail:n.schema,insertText:n.name,range:o,sortText:`0`+n.name});return{suggestions:l}}if(u===`insert-cols`)return l.push(...await We(s,t,e,o)),{suggestions:l};if(u===`columns`){if(l.push(...await We(s,t,e,o)),/\bSELECT\s+/i.test(i)){l.push({label:`*`,kind:e.languages.CompletionItemKind.Value,insertText:`*`,range:o,sortText:`00*`});for(let t of Ie)l.push({label:`${t}()`,kind:e.languages.CompletionItemKind.Function,insertText:`${t}($0)`,insertTextRules:e.languages.CompletionItemInsertTextRule.InsertAsSnippet,range:o,sortText:`1`+t})}for(let t of Fe)l.push({label:t,kind:e.languages.CompletionItemKind.Keyword,insertText:t,range:o,sortText:`3`+t});return{suggestions:l}}if(u===`comma-cols`&&s.size>0)return l.push(...await We(s,t,e,o)),{suggestions:l};for(let t of Fe)l.push({label:t,kind:e.languages.CompletionItemKind.Keyword,insertText:t,range:o,sortText:`2`+t});for(let n of t.tables)l.push({label:n.name,kind:e.languages.CompletionItemKind.Struct,detail:n.schema,insertText:n.name,range:o,sortText:`1`+n.name});return{suggestions:l}}catch{return{suggestions:[]}}}}}function qe(){ze.clear()}var G=e(r(),1),Je=e(i(),1),K=n();function Ye(e,t,n){let r=new Blob([t],{type:n}),i=URL.createObjectURL(r),a=document.createElement(`a`);a.href=i,a.download=e,a.click(),URL.revokeObjectURL(i)}function Xe({columns:e,rows:t,filename:n=`export`,exportAllUrl:r}){let[i,a]=(0,G.useState)(!1),[o,s]=(0,G.useState)(!1),c=(0,G.useRef)(null),l=(0,G.useRef)(null);(0,G.useEffect)(()=>{if(!i)return;let e=e=>{l.current&&!l.current.contains(e.target)&&c.current&&!c.current.contains(e.target)&&a(!1)};return document.addEventListener(`mousedown`,e),()=>document.removeEventListener(`mousedown`,e)},[i]);let u=(0,G.useCallback)(()=>a(e=>!e),[]),d=()=>{let r=Me(e,t.map(t=>e.map(e=>String(t[e]??``))));Ye(`${n}.csv`,r,`text/csv`),a(!1)},f=()=>{let e=JSON.stringify(t,null,2);Ye(`${n}.json`,e,`application/json`),a(!1)},p=async()=>{let n=e.join(` `),r=t.map(t=>e.map(e=>String(t[e]??``)).join(` `)).join(`
2
+ import{o as e,t}from"./rolldown-runtime-FhOqtrmT.js";import{b as n,x as r}from"./vendor-markdown-0Mxgxy0L.js";import{Y as i}from"./vendor-ui-UXCWAcmi.js";import{t as a}from"./createLucideIcon-BjHrJDVb.js";import{t as o}from"./arrow-down-D825m4vm.js";import{t as s}from"./arrow-up-Rcw6_KKu.js";import{n as c}from"./database-Dc8mr-dP.js";import{t as l}from"./chevron-right-CD8e6Aj4.js";import{i as u,n as d,r as f,t as p}from"./search-D90WJ5fo.js";import{i as m,n as h,r as g,t as _}from"./trash-2-DkIfBY8d.js";import{t as v}from"./sparkles-KCOEy7QI.js";import{t as y}from"./text-wrap-AZErifCu.js";import{t as b}from"./x-DfF6D5Js.js";import{K as x,j as S}from"./vendor-mermaid-DCie7hiR.js";import{t as C}from"./tab-store-DzftzxTL.js";import{H as w,_ as T,et as E,lt as D,tt as O}from"./index-Di7q5I27.js";import{A as k,B as ee,C as te,D as A,E as ne,F as j,G as re,H as ie,I as ae,L as M,M as oe,N,O as P,P as se,R as ce,S as le,T as F,U as I,V as ue,W as de,_ as fe,a as pe,b as me,c as he,d as ge,f as _e,g as ve,h as L,i as ye,j as R,k as be,l as z,m as xe,n as B,o as Se,p as V,r as Ce,s as we,t as H,u as Te,v as Ee,w as De,x as U,y as Oe,z as ke}from"./data-grid-types-C29KDkZJ.js";import{t as W}from"./dist-PPUhQONj.js";import{n as Ae,t as je}from"./use-monaco-theme-qx6SfVRk.js";import{n as Me}from"./csv-parser-D8VHWVA6.js";var Ne=a(`funnel`,[[`path`,{d:`M10 20a1 1 0 0 0 .553.895l2 1A1 1 0 0 0 14 21v-7a2 2 0 0 1 .517-1.341L21.74 4.67A1 1 0 0 0 21 3H3a1 1 0 0 0-.742 1.67l7.225 7.989A2 2 0 0 1 10 14z`,key:`sc7q7i`}]]),Pe=a(`save`,[[`path`,{d:`M15.2 3a2 2 0 0 1 1.4.6l3.8 3.8a2 2 0 0 1 .6 1.4V19a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2z`,key:`1c8476`}],[`path`,{d:`M17 21v-7a1 1 0 0 0-1-1H8a1 1 0 0 0-1 1v7`,key:`1ydtos`}],[`path`,{d:`M7 3v4a1 1 0 0 0 1 1h7`,key:`t51u73`}]]),Fe=`SELECT.FROM.WHERE.INSERT.INTO.VALUES.UPDATE.SET.DELETE.CREATE.TABLE.ALTER.DROP.INDEX.JOIN.LEFT.RIGHT.INNER.OUTER.ON.AND.OR.NOT.NULL.IS.IN.LIKE.BETWEEN.HAVING.LIMIT.OFFSET.AS.DISTINCT.COUNT.SUM.AVG.MIN.MAX.CASE.WHEN.THEN.ELSE.END.EXISTS.UNION.ALL.ASC.DESC.ORDER BY.GROUP BY.LEFT JOIN.RIGHT JOIN.INNER JOIN.CROSS JOIN.FULL OUTER JOIN.IS NULL.IS NOT NULL`.split(`.`),Ie=[`COUNT`,`SUM`,`AVG`,`MIN`,`MAX`],Le=[`=`,`!=`,`<>`,`>`,`<`,`>=`,`<=`,`LIKE`,`ILIKE`,`IN`,`NOT IN`,`BETWEEN`,`IS NULL`,`IS NOT NULL`],Re=[`ASC`,`DESC`],ze=new Map,Be=new Set(`WHERE.SET.ON.ORDER.GROUP.HAVING.LIMIT.LEFT.RIGHT.INNER.OUTER.CROSS.FULL.JOIN.AND.OR.VALUES.SELECT.FROM.INTO.UPDATE.DELETE.INSERT.CREATE.ALTER.DROP`.split(`.`));function Ve(e){let t=new Set,n=new Map,r=e.matchAll(/\b(?:FROM|JOIN|UPDATE|INTO)\s+"?(\w+)"?(?:\s+AS\s+(\w+)|\s+(?!(?:FROM|JOIN|UPDATE|INTO|WHERE|SET|ON|ORDER|GROUP|HAVING|LIMIT|LEFT|RIGHT|INNER|OUTER|CROSS|FULL|AND|OR|VALUES|SELECT)\b)(\w+))?/gi);for(let e of r){let r=e[1];t.add(r);let i=e[2]??e[3];i&&!Be.has(i.toUpperCase())&&n.set(i.toLowerCase(),r)}return{tableRefs:t,aliasMap:n}}function He(e,t){return t.get(e.toLowerCase())??e}async function Ue(e,t){let n=e.toLowerCase(),r=ze.get(n);if(!r)try{r=await t.getColumns(e),ze.set(n,r)}catch{r=[]}return r}async function We(e,t,n,r){let i=[],a=new Set;for(let o of e){let e=await Ue(o,t);for(let t of e){if(a.has(t.name))continue;a.add(t.name);let e=/[A-Z]/.test(t.name);i.push({label:t.name,kind:n.languages.CompletionItemKind.Field,detail:`${o} · ${t.type}`,insertText:e?`"${t.name}"`:t.name,range:r,sortText:`0`+t.name})}}return i}function Ge(e){if(/(\w+)\.\s*$/.test(e))return`dot`;let t=e.match(/\b(?:ORDER|GROUP)\s+BY\s+(?:[\w"]+\s+(?:ASC|DESC)\s*,\s*)*[\w"]+\s+(\w*)$/i);if(t){let e=t[1].toUpperCase();return e===`ASC`||e===`DESC`?`after-direction`:`sort-direction`}return/\b(?:ORDER|GROUP)\s+BY\s+.*(?:ASC|DESC)\s*,\s*\w*$/i.test(e)?`order-by-next-col`:/\b(?:WHERE|AND|OR)\s+[\w"]+\s+\S*$/i.test(e)?`operator`:/\b(?:FROM|JOIN|INTO|UPDATE|TABLE)\s+\w*$/i.test(e)?`table`:/\bINSERT\s+INTO\s+[\w"]+\s*\(\s*(?:[\w"]+\s*,\s*)*\w*$/i.test(e)?`insert-cols`:/\b(?:SELECT|WHERE|ORDER\s+BY|GROUP\s+BY|HAVING|SET|ON|AND|OR)\s+(?:[\w"]+\s*,\s*)*\w*$/i.test(e)?`columns`:/,\s*\w*$/.test(e)?`comma-cols`:`default`}function Ke(e,t){return{triggerCharacters:[`.`,`,`],provideCompletionItems:async(n,r)=>{try{let i=n.getValueInRange({startLineNumber:1,startColumn:1,endLineNumber:r.lineNumber,endColumn:r.column}),a=n.getWordUntilPosition(r),o={startLineNumber:r.lineNumber,endLineNumber:r.lineNumber,startColumn:a.startColumn,endColumn:a.endColumn},{tableRefs:s,aliasMap:c}=Ve(n.getValue()),l=[],u=Ge(i);if(u===`dot`){let n=i.match(/(\w+)\.\s*$/);if(n){let r=n[1],i=await Ue(He(r,c),t);for(let t of i){let n=/[A-Z]/.test(t.name);l.push({label:t.name,kind:e.languages.CompletionItemKind.Field,detail:t.type,insertText:n?`"${t.name}"`:t.name,range:o})}}return{suggestions:l}}if(u===`sort-direction`){for(let t of Re)l.push({label:t,kind:e.languages.CompletionItemKind.Keyword,insertText:t,range:o,sortText:`0`+t});return{suggestions:l}}if(u===`after-direction`)return{suggestions:[]};if(u===`order-by-next-col`)return l.push(...await We(s,t,e,o)),{suggestions:l};if(u===`operator`){for(let t of Le)l.push({label:t,kind:e.languages.CompletionItemKind.Operator,insertText:t,range:o,sortText:`0`+t});return{suggestions:l}}if(u===`table`){for(let n of t.tables)l.push({label:n.name,kind:e.languages.CompletionItemKind.Struct,detail:n.schema,insertText:n.name,range:o,sortText:`0`+n.name});return{suggestions:l}}if(u===`insert-cols`)return l.push(...await We(s,t,e,o)),{suggestions:l};if(u===`columns`){if(l.push(...await We(s,t,e,o)),/\bSELECT\s+/i.test(i)){l.push({label:`*`,kind:e.languages.CompletionItemKind.Value,insertText:`*`,range:o,sortText:`00*`});for(let t of Ie)l.push({label:`${t}()`,kind:e.languages.CompletionItemKind.Function,insertText:`${t}($0)`,insertTextRules:e.languages.CompletionItemInsertTextRule.InsertAsSnippet,range:o,sortText:`1`+t})}for(let t of Fe)l.push({label:t,kind:e.languages.CompletionItemKind.Keyword,insertText:t,range:o,sortText:`3`+t});return{suggestions:l}}if(u===`comma-cols`&&s.size>0)return l.push(...await We(s,t,e,o)),{suggestions:l};for(let t of Fe)l.push({label:t,kind:e.languages.CompletionItemKind.Keyword,insertText:t,range:o,sortText:`2`+t});for(let n of t.tables)l.push({label:n.name,kind:e.languages.CompletionItemKind.Struct,detail:n.schema,insertText:n.name,range:o,sortText:`1`+n.name});return{suggestions:l}}catch{return{suggestions:[]}}}}}function qe(){ze.clear()}var G=e(r(),1),Je=e(i(),1),K=n();function Ye(e,t,n){let r=new Blob([t],{type:n}),i=URL.createObjectURL(r),a=document.createElement(`a`);a.href=i,a.download=e,a.click(),URL.revokeObjectURL(i)}function Xe({columns:e,rows:t,filename:n=`export`,exportAllUrl:r}){let[i,a]=(0,G.useState)(!1),[o,s]=(0,G.useState)(!1),c=(0,G.useRef)(null),l=(0,G.useRef)(null);(0,G.useEffect)(()=>{if(!i)return;let e=e=>{l.current&&!l.current.contains(e.target)&&c.current&&!c.current.contains(e.target)&&a(!1)};return document.addEventListener(`mousedown`,e),()=>document.removeEventListener(`mousedown`,e)},[i]);let u=(0,G.useCallback)(()=>a(e=>!e),[]),d=()=>{let r=Me(e,t.map(t=>e.map(e=>String(t[e]??``))));Ye(`${n}.csv`,r,`text/csv`),a(!1)},f=()=>{let e=JSON.stringify(t,null,2);Ye(`${n}.json`,e,`application/json`),a(!1)},p=async()=>{let n=e.join(` `),r=t.map(t=>e.map(e=>String(t[e]??``)).join(` `)).join(`
3
3
  `);await navigator.clipboard.writeText(n+`
4
4
  `+r),a(!1)},h=async e=>{if(r){s(!0);try{let t=await(await fetch(`${r}&format=${e}&limit=10000`)).text(),i=e===`csv`?`text/csv`:`application/json`;Ye(`${n}-all.${e}`,t,i)}catch{}s(!1),a(!1)}};if(e.length===0||t.length===0)return null;let g=c.current?.getBoundingClientRect(),_=document.getElementById(`portal`);return(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(`button`,{ref:c,type:`button`,onClick:u,className:`p-1 rounded text-muted-foreground hover:text-foreground transition-colors`,title:`Export`,children:(0,K.jsx)(m,{className:`size-3.5`})}),i&&_&&g&&(0,Je.createPortal)((0,K.jsxs)(`div`,{ref:l,style:{position:`fixed`,left:Math.min(g.left,window.innerWidth-170),top:g.bottom+4,zIndex:1e4},className:`bg-popover border border-border rounded-md shadow-md py-1 min-w-[160px] text-xs`,children:[(0,K.jsx)(`button`,{onClick:p,className:`w-full text-left px-3 py-1.5 hover:bg-muted transition-colors text-foreground`,children:`Copy to Clipboard (TSV)`}),(0,K.jsx)(`button`,{onClick:d,className:`w-full text-left px-3 py-1.5 hover:bg-muted transition-colors text-foreground`,children:`Export Page (CSV)`}),(0,K.jsx)(`button`,{onClick:f,className:`w-full text-left px-3 py-1.5 hover:bg-muted transition-colors text-foreground`,children:`Export Page (JSON)`}),r&&(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(`div`,{className:`border-t border-border my-1`}),(0,K.jsx)(`button`,{onClick:()=>h(`csv`),disabled:o,className:`w-full text-left px-3 py-1.5 hover:bg-muted transition-colors disabled:opacity-50 text-foreground`,children:o?`Exporting…`:`Export All (CSV)`}),(0,K.jsx)(`button`,{onClick:()=>h(`json`),disabled:o,className:`w-full text-left px-3 py-1.5 hover:bg-muted transition-colors disabled:opacity-50 text-foreground`,children:o?`Exporting…`:`Export All (JSON)`})]})]}),_)]})}var Ze=W(`div`)({name:`ImageOverlayEditorStyle`,class:`gdg-i2iowwq`,propsAsIs:!1}),Qe=t(((e,t)=>{t.exports=`SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED`})),q=t(((e,t)=>{var n=Qe();function r(){}function i(){}i.resetWarningCache=r,t.exports=function(){function e(e,t,r,i,a,o){if(o!==n){var s=Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw s.name=`Invariant Violation`,s}}e.isRequired=e;function t(){return e}var a={array:e,bigint:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:t,element:e,elementType:e,instanceOf:t,node:e,objectOf:t,oneOf:t,oneOfType:t,shape:t,exact:t,checkPropTypes:i,resetWarningCache:r};return a.PropTypes=a,a}})),$e=t(((e,t)=>{t.exports=q()()})),et=t((e=>{(function(t,n){if(typeof define==`function`&&define.amd)define([`exports`,`react`,`prop-types`],n);else if(e!==void 0)n(e,r(),$e());else{var i={exports:{}};n(i.exports,t.react,t.propTypes),t.reactSwipe=i.exports}})(e,function(e,t,n){Object.defineProperty(e,`__esModule`,{value:!0}),e.setHasSupportToCaptureOption=p;var r=a(t),i=a(n);function a(e){return e&&e.__esModule?e:{default:e}}var o=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e};function s(e,t){var n={};for(var r in e)t.indexOf(r)>=0||Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=e[r]);return n}function c(e,t){if(!(e instanceof t))throw TypeError(`Cannot call a class as a function`)}var l=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,`value`in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();function u(e,t){if(!e)throw ReferenceError(`this hasn't been initialised - super() hasn't been called`);return t&&(typeof t==`object`||typeof t==`function`)?t:e}function d(e,t){if(typeof t!=`function`&&t!==null)throw TypeError(`Super expression must either be null or a function, not `+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}var f=!1;function p(e){f=e}try{addEventListener(`test`,null,Object.defineProperty({},`capture`,{get:function(){p(!0)}}))}catch{}function m(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{capture:!0};return f?e:e.capture}function h(e){if(`touches`in e){var t=e.touches[0];return{x:t.pageX,y:t.pageY}}return{x:e.screenX,y:e.screenY}}var g=function(e){d(t,e);function t(){var e;c(this,t);var n=[...arguments],r=u(this,(e=t.__proto__||Object.getPrototypeOf(t)).call.apply(e,[this].concat(n)));return r._handleSwipeStart=r._handleSwipeStart.bind(r),r._handleSwipeMove=r._handleSwipeMove.bind(r),r._handleSwipeEnd=r._handleSwipeEnd.bind(r),r._onMouseDown=r._onMouseDown.bind(r),r._onMouseMove=r._onMouseMove.bind(r),r._onMouseUp=r._onMouseUp.bind(r),r._setSwiperRef=r._setSwiperRef.bind(r),r}return l(t,[{key:`componentDidMount`,value:function(){this.swiper&&this.swiper.addEventListener(`touchmove`,this._handleSwipeMove,m({capture:!0,passive:!1}))}},{key:`componentWillUnmount`,value:function(){this.swiper&&this.swiper.removeEventListener(`touchmove`,this._handleSwipeMove,m({capture:!0,passive:!1}))}},{key:`_onMouseDown`,value:function(e){this.props.allowMouseEvents&&(this.mouseDown=!0,document.addEventListener(`mouseup`,this._onMouseUp),document.addEventListener(`mousemove`,this._onMouseMove),this._handleSwipeStart(e))}},{key:`_onMouseMove`,value:function(e){this.mouseDown&&this._handleSwipeMove(e)}},{key:`_onMouseUp`,value:function(e){this.mouseDown=!1,document.removeEventListener(`mouseup`,this._onMouseUp),document.removeEventListener(`mousemove`,this._onMouseMove),this._handleSwipeEnd(e)}},{key:`_handleSwipeStart`,value:function(e){var t=h(e);this.moveStart={x:t.x,y:t.y},this.props.onSwipeStart(e)}},{key:`_handleSwipeMove`,value:function(e){if(this.moveStart){var t=h(e),n=t.x,r=t.y,i=n-this.moveStart.x,a=r-this.moveStart.y;this.moving=!0,this.props.onSwipeMove({x:i,y:a},e)&&e.cancelable&&e.preventDefault(),this.movePosition={deltaX:i,deltaY:a}}}},{key:`_handleSwipeEnd`,value:function(e){this.props.onSwipeEnd(e);var t=this.props.tolerance;this.moving&&this.movePosition&&(this.movePosition.deltaX<-t?this.props.onSwipeLeft(1,e):this.movePosition.deltaX>t&&this.props.onSwipeRight(1,e),this.movePosition.deltaY<-t?this.props.onSwipeUp(1,e):this.movePosition.deltaY>t&&this.props.onSwipeDown(1,e)),this.moveStart=null,this.moving=!1,this.movePosition=null}},{key:`_setSwiperRef`,value:function(e){this.swiper=e,this.props.innerRef(e)}},{key:`render`,value:function(){var e=this.props;e.tagName;var t=e.className,n=e.style,i=e.children;e.allowMouseEvents,e.onSwipeUp,e.onSwipeDown,e.onSwipeLeft,e.onSwipeRight,e.onSwipeStart,e.onSwipeMove,e.onSwipeEnd,e.innerRef,e.tolerance;var a=s(e,[`tagName`,`className`,`style`,`children`,`allowMouseEvents`,`onSwipeUp`,`onSwipeDown`,`onSwipeLeft`,`onSwipeRight`,`onSwipeStart`,`onSwipeMove`,`onSwipeEnd`,`innerRef`,`tolerance`]);return r.default.createElement(this.props.tagName,o({ref:this._setSwiperRef,onMouseDown:this._onMouseDown,onTouchStart:this._handleSwipeStart,onTouchEnd:this._handleSwipeEnd,className:t,style:n},a),i)}}]),t}(t.Component);g.displayName=`ReactSwipe`,g.propTypes={tagName:i.default.string,className:i.default.string,style:i.default.object,children:i.default.node,allowMouseEvents:i.default.bool,onSwipeUp:i.default.func,onSwipeDown:i.default.func,onSwipeLeft:i.default.func,onSwipeRight:i.default.func,onSwipeStart:i.default.func,onSwipeMove:i.default.func,onSwipeEnd:i.default.func,innerRef:i.default.func,tolerance:i.default.number.isRequired},g.defaultProps={tagName:`div`,allowMouseEvents:!1,onSwipeUp:function(){},onSwipeDown:function(){},onSwipeLeft:function(){},onSwipeRight:function(){},onSwipeStart:function(){},onSwipeMove:function(){},onSwipeEnd:function(){},innerRef:function(){},tolerance:0},e.default=g})})),tt=t((e=>{(function(t,n){if(typeof define==`function`&&define.amd)define([`exports`,`./react-swipe`],n);else if(e!==void 0)n(e,et());else{var r={exports:{}};n(r.exports,t.reactSwipe),t.index=r.exports}})(e,function(e,t){Object.defineProperty(e,`__esModule`,{value:!0});var n=r(t);function r(e){return e&&e.__esModule?e:{default:e}}e.default=n.default})})),nt=t(((e,t)=>{(function(){var e={}.hasOwnProperty;function n(){for(var e=``,t=0;t<arguments.length;t++){var n=arguments[t];n&&(e=i(e,r(n)))}return e}function r(t){if(typeof t==`string`||typeof t==`number`)return t;if(typeof t!=`object`)return``;if(Array.isArray(t))return n.apply(null,t);if(t.toString!==Object.prototype.toString&&!t.toString.toString().includes(`[native code]`))return t.toString();var r=``;for(var a in t)e.call(t,a)&&t[a]&&(r=i(r,a));return r}function i(e,t){return t?e?e+` `+t:e+t:e}t!==void 0&&t.exports?(n.default=n,t.exports=n):typeof define==`function`&&typeof define.amd==`object`&&define.amd?define(`classnames`,[],function(){return n}):window.classNames=n})()})),rt=t((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.default=void 0;var t=n(nt());function n(e){return e&&e.__esModule?e:{default:e}}function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}e.default={ROOT:function(e){return(0,t.default)(r({"carousel-root":!0},e||``,!!e))},CAROUSEL:function(e){return(0,t.default)({carousel:!0,"carousel-slider":e})},WRAPPER:function(e,n){return(0,t.default)({"thumbs-wrapper":!e,"slider-wrapper":e,"axis-horizontal":n===`horizontal`,"axis-vertical":n!==`horizontal`})},SLIDER:function(e,n){return(0,t.default)({thumbs:!e,slider:e,animated:!n})},ITEM:function(e,n,r){return(0,t.default)({thumb:!e,slide:e,selected:n,previous:r})},ARROW_PREV:function(e){return(0,t.default)({"control-arrow control-prev":!0,"control-disabled":e})},ARROW_NEXT:function(e){return(0,t.default)({"control-arrow control-next":!0,"control-disabled":e})},DOT:function(e){return(0,t.default)({dot:!0,selected:e})}}})),it=t((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.outerWidth=void 0,e.outerWidth=function(e){var t=e.offsetWidth,n=getComputedStyle(e);return t+=parseInt(n.marginLeft)+parseInt(n.marginRight),t}})),at=t((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.default=void 0,e.default=function(e,t,n){var r=e===0?e:e+t;return`translate3d`+(`(`+(n===`horizontal`?[r,0,0]:[0,r,0]).join(`,`)+`)`)}})),ot=t((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.default=void 0,e.default=function(){return window}})),st=t((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.default=void 0;var t=u(r()),n=c(rt()),i=it(),a=c(at()),o=c(tt()),s=c(ot());function c(e){return e&&e.__esModule?e:{default:e}}function l(){if(typeof WeakMap!=`function`)return null;var e=new WeakMap;return l=function(){return e},e}function u(e){if(e&&e.__esModule)return e;if(e===null||d(e)!==`object`&&typeof e!=`function`)return{default:e};var t=l();if(t&&t.has(e))return t.get(e);var n={},r=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var i in e)if(Object.prototype.hasOwnProperty.call(e,i)){var a=r?Object.getOwnPropertyDescriptor(e,i):null;a&&(a.get||a.set)?Object.defineProperty(n,i,a):n[i]=e[i]}return n.default=e,t&&t.set(e,n),n}function d(e){"@babel/helpers - typeof";return d=typeof Symbol==`function`&&typeof Symbol.iterator==`symbol`?function(e){return typeof e}:function(e){return e&&typeof Symbol==`function`&&e.constructor===Symbol&&e!==Symbol.prototype?`symbol`:typeof e},d(e)}function f(){return f=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},f.apply(this,arguments)}function p(e,t){if(!(e instanceof t))throw TypeError(`Cannot call a class as a function`)}function m(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,`value`in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function h(e,t,n){return t&&m(e.prototype,t),n&&m(e,n),e}function g(e,t){if(typeof t!=`function`&&t!==null)throw TypeError(`Super expression must either be null or a function`);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&_(e,t)}function _(e,t){return _=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e},_(e,t)}function v(e){var t=x();return function(){var n=S(e),r;if(t){var i=S(this).constructor;r=Reflect.construct(n,arguments,i)}else r=n.apply(this,arguments);return y(this,r)}}function y(e,t){return t&&(d(t)===`object`||typeof t==`function`)?t:b(e)}function b(e){if(e===void 0)throw ReferenceError(`this hasn't been initialised - super() hasn't been called`);return e}function x(){if(typeof Reflect>`u`||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy==`function`)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function S(e){return S=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)},S(e)}function C(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var w=function(e){return e.hasOwnProperty(`key`)},T=function(e){g(c,e);var r=v(c);function c(e){var n;return p(this,c),n=r.call(this,e),C(b(n),`itemsWrapperRef`,void 0),C(b(n),`itemsListRef`,void 0),C(b(n),`thumbsRef`,void 0),C(b(n),`setItemsWrapperRef`,function(e){n.itemsWrapperRef=e}),C(b(n),`setItemsListRef`,function(e){n.itemsListRef=e}),C(b(n),`setThumbsRef`,function(e,t){n.thumbsRef||=[],n.thumbsRef[t]=e}),C(b(n),`updateSizes`,function(){if(!(!n.props.children||!n.itemsWrapperRef||!n.thumbsRef)){var e=t.Children.count(n.props.children),r=n.itemsWrapperRef.clientWidth,a=n.props.thumbWidth?n.props.thumbWidth:(0,i.outerWidth)(n.thumbsRef[0]),o=Math.floor(r/a),s=o<e,c=s?e-o:0;n.setState(function(e,t){return{itemSize:a,visibleItems:o,firstItem:s?n.getFirstItem(t.selectedItem):0,lastPosition:c,showArrows:s}})}}),C(b(n),`handleClickItem`,function(e,t,r){if(!w(r)||r.key===`Enter`){var i=n.props.onSelectItem;typeof i==`function`&&i(e,t)}}),C(b(n),`onSwipeStart`,function(){n.setState({swiping:!0})}),C(b(n),`onSwipeEnd`,function(){n.setState({swiping:!1})}),C(b(n),`onSwipeMove`,function(e){var r=e.x;if(!n.state.itemSize||!n.itemsWrapperRef||!n.state.visibleItems)return!1;var i=0,o=t.Children.count(n.props.children),s=-(n.state.firstItem*100)/n.state.visibleItems,c=-Math.max(o-n.state.visibleItems,0)*100/n.state.visibleItems;s===i&&r>0&&(r=0),s===c&&r<0&&(r=0);var l=s+100/(n.itemsWrapperRef.clientWidth/r);return n.itemsListRef&&[`WebkitTransform`,`MozTransform`,`MsTransform`,`OTransform`,`transform`,`msTransform`].forEach(function(e){n.itemsListRef.style[e]=(0,a.default)(l,`%`,n.props.axis)}),!0}),C(b(n),`slideRight`,function(e){n.moveTo(n.state.firstItem-(typeof e==`number`?e:1))}),C(b(n),`slideLeft`,function(e){n.moveTo(n.state.firstItem+(typeof e==`number`?e:1))}),C(b(n),`moveTo`,function(e){e=e<0?0:e,e=e>=n.state.lastPosition?n.state.lastPosition:e,n.setState({firstItem:e})}),n.state={selectedItem:e.selectedItem,swiping:!1,showArrows:!1,firstItem:0,visibleItems:0,lastPosition:0},n}return h(c,[{key:`componentDidMount`,value:function(){this.setupThumbs()}},{key:`componentDidUpdate`,value:function(e){this.props.selectedItem!==this.state.selectedItem&&this.setState({selectedItem:this.props.selectedItem,firstItem:this.getFirstItem(this.props.selectedItem)}),this.props.children!==e.children&&this.updateSizes()}},{key:`componentWillUnmount`,value:function(){this.destroyThumbs()}},{key:`setupThumbs`,value:function(){(0,s.default)().addEventListener(`resize`,this.updateSizes),(0,s.default)().addEventListener(`DOMContentLoaded`,this.updateSizes),this.updateSizes()}},{key:`destroyThumbs`,value:function(){(0,s.default)().removeEventListener(`resize`,this.updateSizes),(0,s.default)().removeEventListener(`DOMContentLoaded`,this.updateSizes)}},{key:`getFirstItem`,value:function(e){var t=e;return e>=this.state.lastPosition&&(t=this.state.lastPosition),e<this.state.firstItem+this.state.visibleItems&&(t=this.state.firstItem),e<this.state.firstItem&&(t=e),t}},{key:`renderItems`,value:function(){var e=this;return this.props.children.map(function(r,i){var a={key:i,ref:function(t){return e.setThumbsRef(t,i)},className:n.default.ITEM(!1,i===e.state.selectedItem),onClick:e.handleClickItem.bind(e,i,e.props.children[i]),onKeyDown:e.handleClickItem.bind(e,i,e.props.children[i]),"aria-label":`${e.props.labels.item} ${i+1}`,style:{width:e.props.thumbWidth}};return t.default.createElement(`li`,f({},a,{role:`button`,tabIndex:0}),r)})}},{key:`render`,value:function(){var e=this;if(!this.props.children)return null;var r=t.Children.count(this.props.children)>1,i=this.state.showArrows&&this.state.firstItem>0,s=this.state.showArrows&&this.state.firstItem<this.state.lastPosition,c={},l=-this.state.firstItem*(this.state.itemSize||0),u=(0,a.default)(l,`px`,this.props.axis),d=this.props.transitionTime+`ms`;return c={WebkitTransform:u,MozTransform:u,MsTransform:u,OTransform:u,transform:u,msTransform:u,WebkitTransitionDuration:d,MozTransitionDuration:d,MsTransitionDuration:d,OTransitionDuration:d,transitionDuration:d,msTransitionDuration:d},t.default.createElement(`div`,{className:n.default.CAROUSEL(!1)},t.default.createElement(`div`,{className:n.default.WRAPPER(!1),ref:this.setItemsWrapperRef},t.default.createElement(`button`,{type:`button`,className:n.default.ARROW_PREV(!i),onClick:function(){return e.slideRight()},"aria-label":this.props.labels.leftArrow}),r?t.default.createElement(o.default,{tagName:`ul`,className:n.default.SLIDER(!1,this.state.swiping),onSwipeLeft:this.slideLeft,onSwipeRight:this.slideRight,onSwipeMove:this.onSwipeMove,onSwipeStart:this.onSwipeStart,onSwipeEnd:this.onSwipeEnd,style:c,innerRef:this.setItemsListRef,allowMouseEvents:this.props.emulateTouch},this.renderItems()):t.default.createElement(`ul`,{className:n.default.SLIDER(!1,this.state.swiping),ref:function(t){return e.setItemsListRef(t)},style:c},this.renderItems()),t.default.createElement(`button`,{type:`button`,className:n.default.ARROW_NEXT(!s),onClick:function(){return e.slideLeft()},"aria-label":this.props.labels.rightArrow})))}}]),c}(t.Component);e.default=T,C(T,`displayName`,`Thumbs`),C(T,`defaultProps`,{axis:`horizontal`,labels:{leftArrow:`previous slide / item`,rightArrow:`next slide / item`,item:`slide item`},selectedItem:0,thumbWidth:80,transitionTime:350})})),ct=t((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.default=void 0,e.default=function(){return document}})),lt=t((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.setPosition=e.getPosition=e.isKeyboardEvent=e.defaultStatusFormatter=e.noop=void 0;var t=r(),n=i(at());function i(e){return e&&e.__esModule?e:{default:e}}e.noop=function(){},e.defaultStatusFormatter=function(e,t){return`${e} of ${t}`},e.isKeyboardEvent=function(e){return e?e.hasOwnProperty(`key`):!1},e.getPosition=function(e,n){if(n.infiniteLoop&&++e,e===0)return 0;var r=t.Children.count(n.children);if(n.centerMode&&n.axis===`horizontal`){var i=-e*n.centerSlidePercentage,a=r-1;return e&&(e!==a||n.infiniteLoop)?i+=(100-n.centerSlidePercentage)/2:e===a&&(i+=100-n.centerSlidePercentage),i}return-e*100},e.setPosition=function(e,t){var r={};return[`WebkitTransform`,`MozTransform`,`MsTransform`,`OTransform`,`transform`,`msTransform`].forEach(function(i){r[i]=(0,n.default)(e,`%`,t)}),r}})),ut=t((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.fadeAnimationHandler=e.slideStopSwipingHandler=e.slideSwipeAnimationHandler=e.slideAnimationHandler=void 0;var t=r(),n=a(at()),i=lt();function a(e){return e&&e.__esModule?e:{default:e}}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function s(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]==null?{}:arguments[t];t%2?o(Object(n),!0).forEach(function(t){c(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):o(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}function c(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}e.slideAnimationHandler=function(e,r){var a={},o=r.selectedItem,c=o,l=t.Children.count(e.children)-1;if(e.infiniteLoop&&(o<0||o>l))return c<0?e.centerMode&&e.centerSlidePercentage&&e.axis===`horizontal`?a.itemListStyle=(0,i.setPosition)(-(l+2)*e.centerSlidePercentage-(100-e.centerSlidePercentage)/2,e.axis):a.itemListStyle=(0,i.setPosition)(-(l+2)*100,e.axis):c>l&&(a.itemListStyle=(0,i.setPosition)(0,e.axis)),a;var u=(0,i.getPosition)(o,e),d=(0,n.default)(u,`%`,e.axis),f=e.transitionTime+`ms`;return a.itemListStyle={WebkitTransform:d,msTransform:d,OTransform:d,transform:d},r.swiping||(a.itemListStyle=s(s({},a.itemListStyle),{},{WebkitTransitionDuration:f,MozTransitionDuration:f,OTransitionDuration:f,transitionDuration:f,msTransitionDuration:f})),a},e.slideSwipeAnimationHandler=function(e,n,r,a){var o={},s=n.axis===`horizontal`,c=t.Children.count(n.children),l=0,u=(0,i.getPosition)(r.selectedItem,n),d=n.infiniteLoop?(0,i.getPosition)(c-1,n)-100:(0,i.getPosition)(c-1,n),f=s?e.x:e.y,p=f;u===l&&f>0&&(p=0),u===d&&f<0&&(p=0);var m=u+100/(r.itemSize/p),h=Math.abs(f)>n.swipeScrollTolerance;return n.infiniteLoop&&h&&(r.selectedItem===0&&m>-100?m-=c*100:r.selectedItem===c-1&&m<-c*100&&(m+=c*100)),(!n.preventMovementUntilSwipeScrollTolerance||h||r.swipeMovementStarted)&&(r.swipeMovementStarted||a({swipeMovementStarted:!0}),o.itemListStyle=(0,i.setPosition)(m,n.axis)),h&&!r.cancelClick&&a({cancelClick:!0}),o},e.slideStopSwipingHandler=function(e,t){var n=(0,i.getPosition)(t.selectedItem,e);return{itemListStyle:(0,i.setPosition)(n,e.axis)}},e.fadeAnimationHandler=function(e,t){var n=e.transitionTime+`ms`,r=`ease-in-out`,i={position:`absolute`,display:`block`,zIndex:-2,minHeight:`100%`,opacity:0,top:0,right:0,left:0,bottom:0,transitionTimingFunction:r,msTransitionTimingFunction:r,MozTransitionTimingFunction:r,WebkitTransitionTimingFunction:r,OTransitionTimingFunction:r};return t.swiping||(i=s(s({},i),{},{WebkitTransitionDuration:n,MozTransitionDuration:n,OTransitionDuration:n,transitionDuration:n,msTransitionDuration:n})),{slideStyle:i,selectedStyle:s(s({},i),{},{opacity:1,position:`relative`}),prevStyle:s({},i)}}})),dt=t((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.default=void 0;var t=f(r()),n=u(tt()),i=u(rt()),a=u(st()),o=u(ct()),s=u(ot()),c=lt(),l=ut();function u(e){return e&&e.__esModule?e:{default:e}}function d(){if(typeof WeakMap!=`function`)return null;var e=new WeakMap;return d=function(){return e},e}function f(e){if(e&&e.__esModule)return e;if(e===null||p(e)!==`object`&&typeof e!=`function`)return{default:e};var t=d();if(t&&t.has(e))return t.get(e);var n={},r=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var i in e)if(Object.prototype.hasOwnProperty.call(e,i)){var a=r?Object.getOwnPropertyDescriptor(e,i):null;a&&(a.get||a.set)?Object.defineProperty(n,i,a):n[i]=e[i]}return n.default=e,t&&t.set(e,n),n}function p(e){"@babel/helpers - typeof";return p=typeof Symbol==`function`&&typeof Symbol.iterator==`symbol`?function(e){return typeof e}:function(e){return e&&typeof Symbol==`function`&&e.constructor===Symbol&&e!==Symbol.prototype?`symbol`:typeof e},p(e)}function m(){return m=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},m.apply(this,arguments)}function h(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function g(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]==null?{}:arguments[t];t%2?h(Object(n),!0).forEach(function(t){D(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):h(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}function _(e,t){if(!(e instanceof t))throw TypeError(`Cannot call a class as a function`)}function v(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,`value`in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function y(e,t,n){return t&&v(e.prototype,t),n&&v(e,n),e}function b(e,t){if(typeof t!=`function`&&t!==null)throw TypeError(`Super expression must either be null or a function`);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&x(e,t)}function x(e,t){return x=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e},x(e,t)}function S(e){var t=T();return function(){var n=E(e),r;if(t){var i=E(this).constructor;r=Reflect.construct(n,arguments,i)}else r=n.apply(this,arguments);return C(this,r)}}function C(e,t){return t&&(p(t)===`object`||typeof t==`function`)?t:w(e)}function w(e){if(e===void 0)throw ReferenceError(`this hasn't been initialised - super() hasn't been called`);return e}function T(){if(typeof Reflect>`u`||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy==`function`)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function E(e){return E=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)},E(e)}function D(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var O=function(e){b(u,e);var r=S(u);function u(e){var n;_(this,u),n=r.call(this,e),D(w(n),`thumbsRef`,void 0),D(w(n),`carouselWrapperRef`,void 0),D(w(n),`listRef`,void 0),D(w(n),`itemsRef`,void 0),D(w(n),`timer`,void 0),D(w(n),`animationHandler`,void 0),D(w(n),`setThumbsRef`,function(e){n.thumbsRef=e}),D(w(n),`setCarouselWrapperRef`,function(e){n.carouselWrapperRef=e}),D(w(n),`setListRef`,function(e){n.listRef=e}),D(w(n),`setItemsRef`,function(e,t){n.itemsRef||=[],n.itemsRef[t]=e}),D(w(n),`autoPlay`,function(){t.Children.count(n.props.children)<=1||(n.clearAutoPlay(),n.props.autoPlay&&(n.timer=setTimeout(function(){n.increment()},n.props.interval)))}),D(w(n),`clearAutoPlay`,function(){n.timer&&clearTimeout(n.timer)}),D(w(n),`resetAutoPlay`,function(){n.clearAutoPlay(),n.autoPlay()}),D(w(n),`stopOnHover`,function(){n.setState({isMouseEntered:!0},n.clearAutoPlay)}),D(w(n),`startOnLeave`,function(){n.setState({isMouseEntered:!1},n.autoPlay)}),D(w(n),`isFocusWithinTheCarousel`,function(){return n.carouselWrapperRef?!!((0,o.default)().activeElement===n.carouselWrapperRef||n.carouselWrapperRef.contains((0,o.default)().activeElement)):!1}),D(w(n),`navigateWithKeyboard`,function(e){if(n.isFocusWithinTheCarousel()){var t=n.props.axis===`horizontal`,r={ArrowUp:38,ArrowRight:39,ArrowDown:40,ArrowLeft:37},i=t?r.ArrowRight:r.ArrowDown,a=t?r.ArrowLeft:r.ArrowUp;i===e.keyCode?n.increment():a===e.keyCode&&n.decrement()}}),D(w(n),`updateSizes`,function(){if(!(!n.state.initialized||!n.itemsRef||n.itemsRef.length===0)){var e=n.props.axis===`horizontal`,t=n.itemsRef[0];if(t){var r=e?t.clientWidth:t.clientHeight;n.setState({itemSize:r}),n.thumbsRef&&n.thumbsRef.updateSizes()}}}),D(w(n),`setMountState`,function(){n.setState({hasMount:!0}),n.updateSizes()}),D(w(n),`handleClickItem`,function(e,r){if(t.Children.count(n.props.children)!==0){if(n.state.cancelClick){n.setState({cancelClick:!1});return}n.props.onClickItem(e,r),e!==n.state.selectedItem&&n.setState({selectedItem:e})}}),D(w(n),`handleOnChange`,function(e,r){t.Children.count(n.props.children)<=1||n.props.onChange(e,r)}),D(w(n),`handleClickThumb`,function(e,t){n.props.onClickThumb(e,t),n.moveTo(e)}),D(w(n),`onSwipeStart`,function(e){n.setState({swiping:!0}),n.props.onSwipeStart(e)}),D(w(n),`onSwipeEnd`,function(e){n.setState({swiping:!1,cancelClick:!1,swipeMovementStarted:!1}),n.props.onSwipeEnd(e),n.clearAutoPlay(),n.state.autoPlay&&n.autoPlay()}),D(w(n),`onSwipeMove`,function(e,t){n.props.onSwipeMove(t);var r=n.props.swipeAnimationHandler(e,n.props,n.state,n.setState.bind(w(n)));return n.setState(g({},r)),!!Object.keys(r).length}),D(w(n),`decrement`,function(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:1;n.moveTo(n.state.selectedItem-(typeof e==`number`?e:1))}),D(w(n),`increment`,function(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:1;n.moveTo(n.state.selectedItem+(typeof e==`number`?e:1))}),D(w(n),`moveTo`,function(e){if(typeof e==`number`){var r=t.Children.count(n.props.children)-1;e<0&&(e=n.props.infiniteLoop?r:0),e>r&&(e=n.props.infiniteLoop?0:r),n.selectItem({selectedItem:e}),n.state.autoPlay&&n.state.isMouseEntered===!1&&n.resetAutoPlay()}}),D(w(n),`onClickNext`,function(){n.increment(1)}),D(w(n),`onClickPrev`,function(){n.decrement(1)}),D(w(n),`onSwipeForward`,function(){n.increment(1),n.props.emulateTouch&&n.setState({cancelClick:!0})}),D(w(n),`onSwipeBackwards`,function(){n.decrement(1),n.props.emulateTouch&&n.setState({cancelClick:!0})}),D(w(n),`changeItem`,function(e){return function(t){(!(0,c.isKeyboardEvent)(t)||t.key===`Enter`)&&n.moveTo(e)}}),D(w(n),`selectItem`,function(e){n.setState(g({previousItem:n.state.selectedItem},e),function(){n.setState(n.animationHandler(n.props,n.state))}),n.handleOnChange(e.selectedItem,t.Children.toArray(n.props.children)[e.selectedItem])}),D(w(n),`getInitialImage`,function(){var e=n.props.selectedItem,t=n.itemsRef&&n.itemsRef[e];return(t&&t.getElementsByTagName(`img`)||[])[0]}),D(w(n),`getVariableItemHeight`,function(e){var t=n.itemsRef&&n.itemsRef[e];if(n.state.hasMount&&t&&t.children.length){var r=t.children[0].getElementsByTagName(`img`)||[];if(r.length>0){var i=r[0];i.complete||i.addEventListener(`load`,function e(){n.forceUpdate(),i.removeEventListener(`load`,e)})}var a=(r[0]||t.children[0]).clientHeight;return a>0?a:null}return null});var i={initialized:!1,previousItem:e.selectedItem,selectedItem:e.selectedItem,hasMount:!1,isMouseEntered:!1,autoPlay:e.autoPlay,swiping:!1,swipeMovementStarted:!1,cancelClick:!1,itemSize:1,itemListStyle:{},slideStyle:{},selectedStyle:{},prevStyle:{}};return n.animationHandler=typeof e.animationHandler==`function`&&e.animationHandler||e.animationHandler===`fade`&&l.fadeAnimationHandler||l.slideAnimationHandler,n.state=g(g({},i),n.animationHandler(e,i)),n}return y(u,[{key:`componentDidMount`,value:function(){this.props.children&&this.setupCarousel()}},{key:`componentDidUpdate`,value:function(e,t){!e.children&&this.props.children&&!this.state.initialized&&this.setupCarousel(),!e.autoFocus&&this.props.autoFocus&&this.forceFocus(),t.swiping&&!this.state.swiping&&this.setState(g({},this.props.stopSwipingHandler(this.props,this.state))),(e.selectedItem!==this.props.selectedItem||e.centerMode!==this.props.centerMode)&&(this.updateSizes(),this.moveTo(this.props.selectedItem)),e.autoPlay!==this.props.autoPlay&&(this.props.autoPlay?this.setupAutoPlay():this.destroyAutoPlay(),this.setState({autoPlay:this.props.autoPlay}))}},{key:`componentWillUnmount`,value:function(){this.destroyCarousel()}},{key:`setupCarousel`,value:function(){var e=this;this.bindEvents(),this.state.autoPlay&&t.Children.count(this.props.children)>1&&this.setupAutoPlay(),this.props.autoFocus&&this.forceFocus(),this.setState({initialized:!0},function(){var t=e.getInitialImage();t&&!t.complete?t.addEventListener(`load`,e.setMountState):e.setMountState()})}},{key:`destroyCarousel`,value:function(){this.state.initialized&&(this.unbindEvents(),this.destroyAutoPlay())}},{key:`setupAutoPlay`,value:function(){this.autoPlay();var e=this.carouselWrapperRef;this.props.stopOnHover&&e&&(e.addEventListener(`mouseenter`,this.stopOnHover),e.addEventListener(`mouseleave`,this.startOnLeave))}},{key:`destroyAutoPlay`,value:function(){this.clearAutoPlay();var e=this.carouselWrapperRef;this.props.stopOnHover&&e&&(e.removeEventListener(`mouseenter`,this.stopOnHover),e.removeEventListener(`mouseleave`,this.startOnLeave))}},{key:`bindEvents`,value:function(){(0,s.default)().addEventListener(`resize`,this.updateSizes),(0,s.default)().addEventListener(`DOMContentLoaded`,this.updateSizes),this.props.useKeyboardArrows&&(0,o.default)().addEventListener(`keydown`,this.navigateWithKeyboard)}},{key:`unbindEvents`,value:function(){(0,s.default)().removeEventListener(`resize`,this.updateSizes),(0,s.default)().removeEventListener(`DOMContentLoaded`,this.updateSizes);var e=this.getInitialImage();e&&e.removeEventListener(`load`,this.setMountState),this.props.useKeyboardArrows&&(0,o.default)().removeEventListener(`keydown`,this.navigateWithKeyboard)}},{key:`forceFocus`,value:function(){var e;(e=this.carouselWrapperRef)==null||e.focus()}},{key:`renderItems`,value:function(e){var n=this;return this.props.children?t.Children.map(this.props.children,function(r,a){var o=a===n.state.selectedItem,s=a===n.state.previousItem,c=o&&n.state.selectedStyle||s&&n.state.prevStyle||n.state.slideStyle||{};n.props.centerMode&&n.props.axis===`horizontal`&&(c=g(g({},c),{},{minWidth:n.props.centerSlidePercentage+`%`})),n.state.swiping&&n.state.swipeMovementStarted&&(c=g(g({},c),{},{pointerEvents:`none`}));var l={ref:function(e){return n.setItemsRef(e,a)},key:`itemKey`+a+(e?`clone`:``),className:i.default.ITEM(!0,a===n.state.selectedItem,a===n.state.previousItem),onClick:n.handleClickItem.bind(n,a,r),style:c};return t.default.createElement(`li`,l,n.props.renderItem(r,{isSelected:a===n.state.selectedItem,isPrevious:a===n.state.previousItem}))}):[]}},{key:`renderControls`,value:function(){var e=this,n=this.props,r=n.showIndicators,i=n.labels,a=n.renderIndicator,o=n.children;return r?t.default.createElement(`ul`,{className:`control-dots`},t.Children.map(o,function(t,n){return a&&a(e.changeItem(n),n===e.state.selectedItem,n,i.item)})):null}},{key:`renderStatus`,value:function(){return this.props.showStatus?t.default.createElement(`p`,{className:`carousel-status`},this.props.statusFormatter(this.state.selectedItem+1,t.Children.count(this.props.children))):null}},{key:`renderThumbs`,value:function(){return!this.props.showThumbs||!this.props.children||t.Children.count(this.props.children)===0?null:t.default.createElement(a.default,{ref:this.setThumbsRef,onSelectItem:this.handleClickThumb,selectedItem:this.state.selectedItem,transitionTime:this.props.transitionTime,thumbWidth:this.props.thumbWidth,labels:this.props.labels,emulateTouch:this.props.emulateTouch},this.props.renderThumbs(this.props.children))}},{key:`render`,value:function(){var e=this;if(!this.props.children||t.Children.count(this.props.children)===0)return null;var r=this.props.swipeable&&t.Children.count(this.props.children)>1,a=this.props.axis===`horizontal`,o=this.props.showArrows&&t.Children.count(this.props.children)>1,s=o&&(this.state.selectedItem>0||this.props.infiniteLoop)||!1,c=o&&(this.state.selectedItem<t.Children.count(this.props.children)-1||this.props.infiniteLoop)||!1,l=this.renderItems(!0),u=l.shift(),d=l.pop(),f={className:i.default.SLIDER(!0,this.state.swiping),onSwipeMove:this.onSwipeMove,onSwipeStart:this.onSwipeStart,onSwipeEnd:this.onSwipeEnd,style:this.state.itemListStyle,tolerance:this.props.swipeScrollTolerance},p={};return a?(f.onSwipeLeft=this.onSwipeForward,f.onSwipeRight=this.onSwipeBackwards,this.props.dynamicHeight&&(p.height=this.getVariableItemHeight(this.state.selectedItem)||`auto`)):(f.onSwipeUp=this.props.verticalSwipe===`natural`?this.onSwipeBackwards:this.onSwipeForward,f.onSwipeDown=this.props.verticalSwipe===`natural`?this.onSwipeForward:this.onSwipeBackwards,f.style=g(g({},f.style),{},{height:this.state.itemSize}),p.height=this.state.itemSize),t.default.createElement(`div`,{"aria-label":this.props.ariaLabel,className:i.default.ROOT(this.props.className),ref:this.setCarouselWrapperRef,tabIndex:this.props.useKeyboardArrows?0:void 0},t.default.createElement(`div`,{className:i.default.CAROUSEL(!0),style:{width:this.props.width}},this.renderControls(),this.props.renderArrowPrev(this.onClickPrev,s,this.props.labels.leftArrow),t.default.createElement(`div`,{className:i.default.WRAPPER(!0,this.props.axis),style:p},r?t.default.createElement(n.default,m({tagName:`ul`,innerRef:this.setListRef},f,{allowMouseEvents:this.props.emulateTouch}),this.props.infiniteLoop&&d,this.renderItems(),this.props.infiniteLoop&&u):t.default.createElement(`ul`,{className:i.default.SLIDER(!0,this.state.swiping),ref:function(t){return e.setListRef(t)},style:this.state.itemListStyle||{}},this.props.infiniteLoop&&d,this.renderItems(),this.props.infiniteLoop&&u)),this.props.renderArrowNext(this.onClickNext,c,this.props.labels.rightArrow),this.renderStatus()),this.renderThumbs())}}]),u}(t.default.Component);e.default=O,D(O,`displayName`,`Carousel`),D(O,`defaultProps`,{ariaLabel:void 0,axis:`horizontal`,centerSlidePercentage:80,interval:3e3,labels:{leftArrow:`previous slide / item`,rightArrow:`next slide / item`,item:`slide item`},onClickItem:c.noop,onClickThumb:c.noop,onChange:c.noop,onSwipeStart:function(){},onSwipeEnd:function(){},onSwipeMove:function(){return!1},preventMovementUntilSwipeScrollTolerance:!1,renderArrowPrev:function(e,n,r){return t.default.createElement(`button`,{type:`button`,"aria-label":r,className:i.default.ARROW_PREV(!n),onClick:e})},renderArrowNext:function(e,n,r){return t.default.createElement(`button`,{type:`button`,"aria-label":r,className:i.default.ARROW_NEXT(!n),onClick:e})},renderIndicator:function(e,n,r,a){return t.default.createElement(`li`,{className:i.default.DOT(n),onClick:e,onKeyDown:e,value:r,key:r,role:`button`,tabIndex:0,"aria-label":`${a} ${r+1}`})},renderItem:function(e){return e},renderThumbs:function(e){var n=t.Children.map(e,function(e){var n=e;if(e.type!==`img`&&(n=t.Children.toArray(e.props.children).find(function(e){return e.type===`img`})),n)return n});return n.filter(function(e){return e}).length===0?(console.warn(`No images found! Can't build the thumb list without images. If you don't need thumbs, set showThumbs={false} in the Carousel. Note that it's not possible to get images rendered inside custom components. More info at https://github.com/leandrowd/react-responsive-carousel/blob/master/TROUBLESHOOTING.md`),[]):n},statusFormatter:c.defaultStatusFormatter,selectedItem:0,showArrows:!0,showIndicators:!0,showStatus:!0,showThumbs:!0,stopOnHover:!0,swipeScrollTolerance:5,swipeable:!0,transitionTime:350,verticalSwipe:`standard`,width:`100%`,animationHandler:`slide`,swipeAnimationHandler:l.slideSwipeAnimationHandler,stopSwipingHandler:l.slideStopSwipingHandler})})),ft=t((()=>{})),pt=t((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),Object.defineProperty(e,`Carousel`,{enumerable:!0,get:function(){return t.default}}),Object.defineProperty(e,`CarouselProps`,{enumerable:!0,get:function(){return n.CarouselProps}}),Object.defineProperty(e,`Thumbs`,{enumerable:!0,get:function(){return r.default}});var t=i(dt()),n=ft(),r=i(st());function i(e){return e&&e.__esModule?e:{default:e}}})),mt=t(((e,t)=>{var n=R();t.exports=function(){return n.Date.now()}})),ht=t(((e,t)=>{var n=/\s/;function r(e){for(var t=e.length;t--&&n.test(e.charAt(t)););return t}t.exports=r})),gt=t(((e,t)=>{var n=ht(),r=/^\s+/;function i(e){return e&&e.slice(0,n(e)+1).replace(r,``)}t.exports=i})),_t=t(((e,t)=>{var n=gt(),r=F(),i=A(),a=NaN,o=/^[-+]0x[0-9a-f]+$/i,s=/^0b[01]+$/i,c=/^0o[0-7]+$/i,l=parseInt;function u(e){if(typeof e==`number`)return e;if(i(e))return a;if(r(e)){var t=typeof e.valueOf==`function`?e.valueOf():e;e=r(t)?t+``:t}if(typeof e!=`string`)return e===0?e:+e;e=n(e);var u=s.test(e);return u||c.test(e)?l(e.slice(2),u?2:8):o.test(e)?a:+e}t.exports=u})),vt=t(((e,t)=>{var n=F(),r=mt(),i=_t(),a=`Expected a function`,o=Math.max,s=Math.min;function c(e,t,c){var l,u,d,f,p,m,h=0,g=!1,_=!1,v=!0;if(typeof e!=`function`)throw TypeError(a);t=i(t)||0,n(c)&&(g=!!c.leading,_=`maxWait`in c,d=_?o(i(c.maxWait)||0,t):d,v=`trailing`in c?!!c.trailing:v);function y(t){var n=l,r=u;return l=u=void 0,h=t,f=e.apply(r,n),f}function b(e){return h=e,p=setTimeout(C,t),g?y(e):f}function x(e){var n=e-m,r=e-h,i=t-n;return _?s(i,d-r):i}function S(e){var n=e-m,r=e-h;return m===void 0||n>=t||n<0||_&&r>=d}function C(){var e=r();if(S(e))return w(e);p=setTimeout(C,x(e))}function w(e){return p=void 0,v&&l?y(e):(l=u=void 0,f)}function T(){p!==void 0&&clearTimeout(p),h=0,l=m=u=p=void 0}function E(){return p===void 0?f:w(r())}function D(){var e=r(),n=S(e);if(l=arguments,u=this,m=e,n){if(p===void 0)return b(m);if(_)return clearTimeout(p),p=setTimeout(C,t),y(m)}return p===void 0&&(p=setTimeout(C,t)),f}return D.cancel=T,D.flush=E,D}t.exports=c})),yt=e(vt(),1);function bt(e,t,n,r,i=!1){let a=G.useRef();a.current=t,G.useEffect(()=>{if(n===null||n.addEventListener===void 0)return;let t=n,o=e=>{a.current?.call(t,e)};return t.addEventListener(e,o,{passive:r,capture:i}),()=>{t.removeEventListener(e,o,{capture:i})}},[e,n,r,i])}function xt(e,t){return e===void 0?void 0:t}var St=Math.PI;function Ct(e){return e*St/180}var wt=(e,t,n)=>({x1:e-n/2,y1:t-n/2,x2:e+n/2,y2:t+n/2}),Tt=(e,t,n,r,i)=>{switch(e){case`left`:return Math.floor(t)+r+i/2;case`center`:return Math.floor(t+n/2);case`right`:return Math.floor(t+n)-r-i/2}},Et=(e,t,n)=>Math.min(e,t-n*2),Dt=(e,t,n)=>n.x1<=e&&e<=n.x2&&n.y1<=t&&t<=n.y2,Ot=e=>{let t=e.fgColor??`currentColor`;return G.createElement(`svg`,{viewBox:`0 0 24 24`,fill:`none`,xmlns:`http://www.w3.org/2000/svg`},G.createElement(`path`,{d:`M12.7073 7.05029C7.87391 11.8837 10.4544 9.30322 6.03024 13.7273C5.77392 13.9836 5.58981 14.3071 5.50189 14.6587L4.52521 18.5655C4.38789 19.1148 4.88543 19.6123 5.43472 19.475L9.34146 18.4983C9.69313 18.4104 10.0143 18.2286 10.2706 17.9722L16.9499 11.2929`,stroke:t,strokeWidth:`1.5`,strokeLinecap:`round`,strokeLinejoin:`round`,fill:`none`,vectorEffect:`non-scaling-stroke`}),G.createElement(`path`,{d:`M20.4854 4.92901L19.0712 3.5148C18.2901 2.73375 17.0238 2.73375 16.2428 3.5148L14.475 5.28257C15.5326 7.71912 16.4736 8.6278 18.7176 9.52521L20.4854 7.75744C21.2665 6.97639 21.2665 5.71006 20.4854 4.92901Z`,stroke:t,strokeWidth:`1.5`,strokeLinecap:`round`,strokeLinejoin:`round`,fill:`none`,vectorEffect:`non-scaling-stroke`}))},kt=e=>{let t=e.fgColor??`currentColor`;return G.createElement(`svg`,{viewBox:`0 0 24 24`,fill:`none`,xmlns:`http://www.w3.org/2000/svg`},G.createElement(`path`,{d:`M19 6L10.3802 17L5.34071 11.8758`,vectorEffect:`non-scaling-stroke`,stroke:t,strokeWidth:`1.5`,strokeLinecap:`round`,strokeLinejoin:`round`}))};function At(e,t,n){let[r,i]=G.useState(e),a=G.useRef(!0);G.useEffect(()=>()=>{a.current=!1},[]);let o=G.useRef((0,yt.default)(e=>{a.current&&i(e)},n));return G.useLayoutEffect(()=>{a.current&&o.current(()=>e())},t),r}var jt=RegExp(`^[^A-Za-zÀ-ÖØ-öø-ʸ̀-֐ࠀ-῿‎Ⰰ-﬜︀-﹯﻽-￿]*[֑-߿יִ-﷽ﹰ-ﻼ]`);function Mt(e){return jt.test(e)?`rtl`:`not-rtl`}var Nt=void 0;function Pt(){if(typeof document>`u`)return 0;if(Nt!==void 0)return Nt;let e=document.createElement(`p`);e.style.width=`100%`,e.style.height=`200px`;let t=document.createElement(`div`);t.id=`testScrollbar`,t.style.position=`absolute`,t.style.top=`0px`,t.style.left=`0px`,t.style.visibility=`hidden`,t.style.width=`200px`,t.style.height=`150px`,t.style.overflow=`hidden`,t.append(e),document.body.append(t);let n=e.offsetWidth;t.style.overflow=`scroll`;let r=e.offsetWidth;return n===r&&(r=t.clientWidth),t.remove(),Nt=n-r,Nt}var Ft=Symbol();function It(e){let t=G.useRef([Ft,e]);t.current[1]!==e&&(t.current[0]=e),t.current[1]=e;let[n,r]=G.useState(e),[,i]=G.useState(),a=G.useCallback(e=>{let n=t.current[0];n!==Ft&&(e=typeof e==`function`?e(n):e,e===n)||(n!==Ft&&i({}),r(t=>typeof e==`function`?e(n===Ft?t:n):e),t.current[0]=Ft)},[]),o=G.useCallback(()=>{t.current[0]=Ft,i({})},[]);return[t.current[0]===Ft?n:t.current[0],a,o]}function Lt(e){if(e.length===0)return``;let t=0,n=0;for(let r of e){if(n+=r.length,n>1e4)break;t++}return e.slice(0,t).join(`, `)}function Rt(e){let t=G.useRef(e);return ae(e,t.current)||(t.current=e),t.current}var zt=pt(),Bt=e=>{let{urls:t,canWrite:n,onEditClick:r,renderImage:i}=e,a=t.filter(e=>e!==``);if(a.length===0)return null;let o=a.length>1;return G.createElement(Ze,{"data-testid":`GDG-default-image-overlay-editor`},G.createElement(zt.Carousel,{showArrows:o,showThumbs:!1,swipeable:o,emulateTouch:o,infiniteLoop:o},a.map(e=>{let t=i?.(e)??G.createElement(`img`,{draggable:!1,src:e});return G.createElement(`div`,{className:`gdg-centering-container`,key:e},t)})),n&&r&&G.createElement(`button`,{className:`gdg-edit-icon`,onClick:r},G.createElement(Ot,null)))},Vt=W(`div`)({name:`MarkdownContainer`,class:`gdg-mnuv029`,propsAsIs:!1}),Ht=class extends G.PureComponent{targetElement=null;renderMarkdownIntoDiv(){let{targetElement:e,props:t}=this;if(e===null)return;let{contents:n,createNode:r}=t,i=S(n),a=document.createRange();a.selectNodeContents(e),a.deleteContents();let o=r?.(i);if(o===void 0){let e=document.createElement(`template`);e.innerHTML=i,o=e.content}e.append(o);let s=e.getElementsByTagName(`a`);for(let e of s)e.target=`_blank`,e.rel=`noreferrer noopener`}containerRefHook=e=>{this.targetElement=e,this.renderMarkdownIntoDiv()};render(){return this.renderMarkdownIntoDiv(),G.createElement(Vt,{ref:this.containerRefHook})}},Ut=W(`textarea`)({name:`InputBox`,class:`gdg-izpuzkl`,propsAsIs:!1}),Wt=W(`div`)({name:`ShadowBox`,class:`gdg-s69h75o`,propsAsIs:!1}),Gt=W(`div`)({name:`GrowingEntryStyle`,class:`gdg-g1y0xocz`,propsAsIs:!1}),Kt=0,qt=e=>{let{placeholder:t,value:n,onKeyDown:r,highlight:i,altNewline:a,validatedSelection:o,...s}=e,{onChange:c,className:l}=s,u=G.useRef(null),d=n??``;se(c!==void 0,`GrowingEntry must be a controlled input area`);let[f]=G.useState(()=>`input-box-`+(Kt=(Kt+1)%1e7));G.useEffect(()=>{let e=u.current;if(e===null||e.disabled)return;let t=d.toString().length;e.focus(),e.setSelectionRange(i?0:t,t)},[]),G.useLayoutEffect(()=>{if(o!==void 0){let e=typeof o==`number`?[o,null]:o;u.current?.setSelectionRange(e[0],e[1])}},[o]);let p=G.useCallback(e=>{e.key===`Enter`&&e.shiftKey&&a===!0||r?.(e)},[a,r]);return G.createElement(Gt,{className:`gdg-growing-entry`},G.createElement(Wt,{className:l},d+`
5
5
  `),G.createElement(Ut,{...s,className:(l??``)+` gdg-input`,id:f,ref:u,onKeyDown:p,value:d,placeholder:t,dir:`auto`}))},Jt=new Map,Yt=new Map,Xt=new Map;function Zt(){Jt.clear(),Xt.clear(),Yt.clear()}function Qt(e,t,n,r,i){let a=0,o={};for(let t of e)a+=n.get(t)??i,o[t]=(o[t]??0)+1;let s=t-a;for(let e of Object.keys(o)){let t=o[e],c=n.get(e)??i,l=c+s*(c*t/a)*r/t;n.set(e,l)}}function $t(e,t){let n=new Map,r=0;for(let t of`abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890,.-+=?`){let i=e.measureText(t).width;n.set(t,i),r+=i}let i=r/n.size,a=(t/i+3)/4,o=n.keys();for(let e of o)n.set(e,(n.get(e)??i)*a);return n}function en(e,t,n,r){let i=Yt.get(n);if(r&&i!==void 0&&i.count>2e4){let r=Xt.get(n);if(r===void 0&&(r=$t(e,i.size),Xt.set(n,r)),i.count>5e5){let e=0;for(let n of t)e+=r.get(n)??i.size;return e*1.01}let a=e.measureText(t);return Qt(t,a.width,r,Math.max(.05,1-i.count/2e5),i.size),Yt.set(n,{count:i.count+t.length,size:i.size}),a.width}let a=e.measureText(t),o=a.width/t.length;if((i?.count??0)>2e4)return a.width;if(i===void 0)Yt.set(n,{count:t.length,size:o});else{let e=o-i.size,r=t.length/(i.count+t.length),a=i.size+e*r;Yt.set(n,{count:i.count+t.length,size:a})}return a.width}function tn(e,t,n,r,i,a,o,s){if(t.length<=1)return t.length;if(i<n)return-1;let c=Math.floor(n/i*a),l=en(e,t.slice(0,Math.max(0,c)),r,o),u=s?.(t);if(l!==n)if(l<n){for(;l<n;)c++,l=en(e,t.slice(0,Math.max(0,c)),r,o);c--}else for(;l>n;){let n=u===void 0?t.lastIndexOf(` `,c-1):0;n>0?c=n:c--,l=en(e,t.slice(0,Math.max(0,c)),r,o)}if(t[c]!==` `){let e=0;if(u===void 0)e=t.lastIndexOf(` `,c);else for(let t of u){if(t>c)break;e=t}e>0&&(c=e)}return c}function J(e,t,n,r,i,a){let o=`${t}_${n}_${r}px`,s=Jt.get(o);if(s!==void 0)return s;if(r<=0)return[];let c=[],l=t.split(`
@@ -130,7 +130,7 @@ import{o as e,t}from"./rolldown-runtime-FhOqtrmT.js";import{b as n,x as r}from".
130
130
  `)??``:n?.toString()??``;if(!we(e)&&z(e)&&e.readonly!==!0){let a=T?.(i,e);if(a!==void 0&&Se(a))return{location:t,value:a};let o=Nn(e);if(o===void 0)return;if(o.kind===B.Custom){se(e.kind===B.Custom);let n=o.onPaste?.(i,e.data);return n===void 0?void 0:{location:t,value:{...e,data:n}}}else{let a=o.onPaste?.(i,e,{formatted:r,formattedString:typeof r==`string`?r:r?.join(`
131
131
  `),rawValue:n});return a===void 0?void 0:(se(a.kind===e.kind),{location:t,value:a})}}}let n=Y.columns,r=Y.rows,i=u.current?.contains(document.activeElement)===!0||s.current?.contains(document.activeElement)===!0,a;if(Y.current===void 0?n.length===1?a=[n.first()??0,0]:r.length===1&&(a=[J,r.first()??0]):a=[Y.current.range.x,Y.current.range.y],i&&a!==void 0){let n,r,i=`text/plain`,o=`text/html`;if(navigator.clipboard.read!==void 0){let e=await navigator.clipboard.read();for(let t of e){if(t.types.includes(o)){let e=Eo(await(await t.getType(o)).text());if(e!==void 0){n=e;break}}t.types.includes(i)&&(r=await(await t.getType(i)).text())}}else if(navigator.clipboard.readText!==void 0)r=await navigator.clipboard.readText();else if(e!==void 0&&e?.clipboardData!==null)e.clipboardData.types.includes(o)&&(n=Eo(e.clipboardData.getData(o))),n===void 0&&e.clipboardData.types.includes(i)&&(r=e.clipboardData.getData(i));else return;let[s,c]=a,l=[];do{if(Me===void 0){let e=fr(a),i=r??n?.map(e=>e.map(e=>e.rawValue).join(` `)).join(` `)??``,o=t(e,a,i,void 0);o!==void 0&&l.push(o);break}if(n===void 0){if(r===void 0)return;n=ko(r)}if(Me===!1||typeof Me==`function`&&Me?.([a[0]-J,a[1]],n.map(e=>e.map(e=>e.rawValue?.toString()??``)))!==!0)return;for(let[e,r]of n.entries()){if(e+c>=y)break;for(let[n,i]of r.entries()){let r=[n+s,e+c],[a,o]=r;if(a>=X.length||o>=nr)continue;let u=t(fr(r),r,i.rawValue,i.formatted);u!==void 0&&l.push(u)}}}while(!1);rr(l),er.current?.damage(l.map(e=>({cell:e.location})))}},[T,Nn,fr,Y,$t.paste,X.length,rr,nr,Me,J,y]);bt(`paste`,ui,f,!1,!0);let di=G.useCallback(async(e,t)=>{if(!$t.copy)return;let n=t===!0||u.current?.contains(document.activeElement)===!0||s.current?.contains(document.activeElement)===!0,r=Y.columns,i=Y.rows,a=(t,n)=>{Ao(Ne?[n.map(e=>({kind:B.Text,data:v[e].title,displayData:v[e].title,allowOverlay:!1})),...t]:t,n,e)};if(n&&hn!==void 0){if(Y.current!==void 0){let e=hn(Y.current.range,mn.current.signal);typeof e!=`object`&&(e=await e()),a(e,(0,Wa.default)(Y.current.range.x-J,Y.current.range.x+Y.current.range.width-J))}else if(i!==void 0&&i.length>0){let e=[...i].map(e=>{let t=hn({x:J,y:e,width:v.length,height:1},mn.current.signal);return typeof t==`object`?t[0]:t().then(e=>e[0])});e.some(e=>e instanceof Promise)?a(await Promise.all(e),(0,Wa.default)(v.length)):a(e,(0,Wa.default)(v.length))}else if(r.length>0){let e=[],t=[];for(let n of r){let r=hn({x:n,y:0,width:1,height:y},mn.current.signal);typeof r!=`object`&&(r=await r()),e.push(r),t.push(n-J)}e.length===1?a(e[0],t):a(e.reduce((e,t)=>e.map((e,n)=>[...e,...t[n]])),t)}}},[v,hn,Y,$t.copy,J,y,Ne]);bt(`copy`,di,f,!1,!1),bt(`cut`,G.useCallback(async e=>{if($t.cut&&(u.current?.contains(document.activeElement)===!0||s.current?.contains(document.activeElement)===!0)&&(await di(e),Y.current!==void 0)){let e={current:{cell:Y.current.cell,range:Y.current.range,rangeStack:[]},rows:H.empty(),columns:H.empty()},t=Tn?.(e);if(t===!1||(e=t===!0?e:t,e.current===void 0))return;ai(e.current.range)}},[ai,Y,$t.cut,di,Tn]),f,!1,!1);let fi=G.useCallback((e,t)=>{if(I!==void 0){J!==0&&(e=e.map(e=>[e[0]-J,e[1]])),I(e,t);return}if(e.length===0||t===-1)return;let[n,r]=e[t];d.current!==void 0&&d.current[0]===n&&d.current[1]===r||(d.current=[n,r],ni(n,r,!1,!1))},[I,J,ni]),[pi,mi]=We?.current?.cell??[],hi=G.useRef(_r);hi.current=_r,G.useLayoutEffect(()=>{!Wn.current&&pi!==void 0&&mi!==void 0&&(pi!==vn.current?.current?.cell[0]||mi!==vn.current?.current?.cell[1])&&hi.current(pi,mi),Wn.current=!1},[pi,mi]);let gi=Y.current!==void 0&&(Y.current.cell[0]>=X.length||Y.current.cell[1]>=nr);G.useLayoutEffect(()=>{gi&&yn(Zo,!1)},[gi,yn]);let _i=G.useMemo(()=>nn===!0&&Ye?.tint===!0?H.fromSingleSelection(nr-1):H.empty(),[nr,nn,Ye?.tint]),vi=G.useCallback(e=>typeof $e==`boolean`?$e:$e?.(e-J)??!0,[J,$e]),yi=G.useMemo(()=>{if(jr===void 0||s.current===null)return null;let{bounds:e,group:t}=jr,n=s.current.getBoundingClientRect();return G.createElement(fo,{bounds:e,group:t,canvasBounds:n,onClose:()=>Mr(void 0),onFinish:e=>{Mr(void 0),P?.(t,e)}})},[P,jr]),bi=Math.min(X.length,Pe+(tn?1:0));G.useImperativeHandle(t,()=>({appendRow:(e,t)=>xr(e+J,t),updateCells:e=>(J!==0&&(e=e.map(e=>({cell:[e.cell[0]+J,e.cell[1]]}))),er.current?.damage(e)),getBounds:(e,t)=>{if(!(s?.current===null||u?.current===null)){if(e===void 0&&t===void 0){let e=s.current.getBoundingClientRect(),t=e.width/u.current.clientWidth;return{x:e.x-u.current.scrollLeft*t,y:e.y-u.current.scrollTop*t,width:u.current.scrollWidth*t,height:u.current.scrollHeight*t}}return er.current?.getBounds((e??0)+J,t)}},focus:()=>er.current?.focus(),emit:async e=>{switch(e){case`delete`:ci({bounds:void 0,cancel:()=>void 0,stopPropagation:()=>void 0,preventDefault:()=>void 0,ctrlKey:!1,key:`Delete`,keyCode:46,metaKey:!1,shiftKey:!1,altKey:!1,rawEvent:void 0,location:void 0});break;case`fill-right`:ci({bounds:void 0,cancel:()=>void 0,stopPropagation:()=>void 0,preventDefault:()=>void 0,ctrlKey:!0,key:`r`,keyCode:82,metaKey:!1,shiftKey:!1,altKey:!1,rawEvent:void 0,location:void 0});break;case`fill-down`:ci({bounds:void 0,cancel:()=>void 0,stopPropagation:()=>void 0,preventDefault:()=>void 0,ctrlKey:!0,key:`d`,keyCode:68,metaKey:!1,shiftKey:!1,altKey:!1,rawEvent:void 0,location:void 0});break;case`copy`:await di(void 0,!0);break;case`paste`:await ui();break}},scrollTo:_r,remeasureColumns:e=>{for(let t of e)Fr(t+J)}}),[xr,Fr,di,ci,ui,J,_r]);let[xi,Si]=qr??[],Ci=G.useCallback(e=>{let[t,n]=e;if(n===-1){Te!==`none`&&(On(H.fromSingleSelection(t),void 0,!1),tr());return}xi===t&&Si===n||(En({cell:e,range:{x:t,y:n,width:1,height:1}},!0,!1,`keyboard-nav`),_r(t,n))},[Te,tr,_r,xi,Si,En,On]),[wi,Ti]=G.useState(!1),Ei=G.useRef((0,yt.default)(e=>{Ti(e)},5)),Di=G.useCallback(()=>{Ei.current(!0),Y.current===void 0&&Y.columns.length===0&&Y.rows.length===0&&c===void 0&&En({cell:[J,$n],range:{x:J,y:$n,width:1,height:1}},!0,!1,`keyboard-select`)},[$n,Y,c,J,En]),Oi=G.useCallback(()=>{Ei.current(!1)},[]),[ki,Ai]=G.useMemo(()=>{let e,t=ct?.scrollbarWidthOverride??Pt(),n=y+(nn?1:0);if(typeof qt==`number`)e=Ln+n*qt;else{let t=0,r=Math.min(n,10);for(let e=0;e<r;e++)t+=qt(e);t=Math.floor(t/r),e=Ln+n*t}e+=t;let r=X.reduce((e,t)=>t.width+e,0)+t;return[`${Math.min(1e5,r)}px`,`${Math.min(1e5,e)}px`]},[X,ct?.scrollbarWidthOverride,qt,y,nn,Ln]),ji=G.useMemo(()=>ee(kn),[kn]);return G.createElement(ce.Provider,{value:kn},G.createElement(Io,{style:ji,className:ie,inWidth:g??ki,inHeight:_??Ai},G.createElement(co,{fillHandle:ot,drawFocusRing:st,experimental:ct,fixedShadowX:lt,fixedShadowY:ut,getRowThemeOverride:m,headerIcons:dt,imageWindowLoader:ft,initialSize:pt,isDraggable:mt,onDragLeave:ht,onRowMoved:gt,overscrollX:Zt,overscrollY:Qt,preventDiagonalScrolling:St,rightElement:Ct,rightElementProps:wt,smoothScrollX:Et,smoothScrollY:Dt,className:ie,enableGroups:In,onCanvasFocused:Di,onCanvasBlur:Oi,canvasRef:s,onContextMenu:li,theme:kn,cellXOffset:Qn,cellYOffset:$n,accessibilityHeight:Gn.height,onDragEnd:Qr,columns:X,nonGrowWidth:Fn,drawHeader:Cn,onColumnProposeMove:te,drawCell:wn,disabledRows:_i,freezeColumns:bi,lockColumns:J,firstColAccessible:J===0,getCellContent:fr,minColumnWidth:Ut,maxColumnWidth:Wt,searchInputRef:o,showSearch:dn,onSearchClose:fn,highlightRegions:ur,getCellsForSelection:hn,getGroupDetails:pr,headerHeight:Jt,isFocused:wi,groupHeaderHeight:In?Yt:0,freezeTrailingRows:Xe+(nn&&Ye?.sticky===!0?1:0),hasAppendRow:nn,onColumnResize:bn,onColumnResizeEnd:xn,onColumnResizeStart:Sn,onCellFocused:Ci,onColumnMoved:Yr,onDragStart:Zr,onHeaderMenuClick:Kr,onItemHovered:ei,isFilling:c?.fillHandle===!0,onMouseMove:Gr,onKeyDown:ci,onKeyUp:_e,onMouseDown:Ar,onMouseUp:Wr,onDragOverCell:et,onDrop:tt,onSearchResultsChanged:fi,onVisibleRegionChanged:Jr,clientSize:An,rowHeight:qt,searchResults:fe,searchValue:me,onSearchValueChange:pe,rows:nr,scrollRef:u,selection:Y,translateX:Gn.tx,translateY:Gn.ty,verticalBorder:vi,gridRef:er,getCellRenderer:Nn}),yi,i!==void 0&&G.createElement(G.Suspense,{fallback:null},G.createElement(Ko,{...i,validateCell:_n,bloom:O,id:ii,getCellRenderer:Nn,className:ct?.isSubGrid===!0?`click-outside-ignore`:void 0,provideEditor:K,imageEditorOverride:p,onFinishEditing:ri,markdownDivCreateNode:h,isOutsideClick:Nt}))))}),$o=20,es={getAccessibilityString:e=>e.data?.toString()??`false`,kind:B.Boolean,needsHover:!0,useLabel:!1,needsHoverPosition:!0,measure:()=>50,draw:e=>ts(e,e.cell.data,pe(e.cell),e.cell.maxSize??$o),onDelete:e=>({...e,data:!1}),onClick:e=>{let{cell:t,posX:n,posY:r,bounds:i,theme:a}=e,{width:o,height:s,x:c,y:l}=i,u=t.maxSize??$o,d=Math.floor(i.y+s/2),f=Et(u,s,a.cellVerticalPadding),p=wt(Tt(t.contentAlign??`center`,c,o,a.cellHorizontalPadding,f),d,f),m=Dt(c+n,l+r,p);if(pe(t)&&m)return{...t,data:jo(t.data)}},onPaste:(e,t)=>{let n=null;return e.toLowerCase()===`true`?n=!0:e.toLowerCase()===`false`?n=!1:e.toLowerCase()===`indeterminate`&&(n=void 0),n===t.data?void 0:{...t,data:n}}};function ts(e,t,n,r){if(!n&&t===null)return;let{ctx:i,hoverAmount:a,theme:o,rect:s,highlighted:c,hoverX:l,hoverY:u,cell:{contentAlign:d}}=e,{x:f,y:p,width:m,height:h}=s,g=.35,_=n?1-g+g*a:.4;t===null&&(_*=a),_!==0&&(i.globalAlpha=_,$r(i,o,t,f,p,m,h,c,l,u,r,d),i.globalAlpha=1)}var ns=W(`div`)({name:`BubblesOverlayEditorStyle`,class:`gdg-b1ygi5by`,propsAsIs:!1}),rs=e=>{let{bubbles:t}=e;return G.createElement(ns,null,t.map((e,t)=>G.createElement(`div`,{key:t,className:`boe-bubble`},e)),G.createElement(`textarea`,{className:`gdg-input`,autoFocus:!0}))},is={getAccessibilityString:e=>Lt(e.data),kind:B.Bubble,needsHover:!1,useLabel:!1,needsHoverPosition:!1,measure:(e,t,n)=>t.data.reduce((t,n)=>e.measureText(n).width+t+20,0)+2*n.cellHorizontalPadding-4,draw:e=>os(e,e.cell.data),provideEditor:()=>e=>{let{value:t}=e;return G.createElement(rs,{bubbles:t.data})},onPaste:()=>void 0},as=4;function os(e,t){let{rect:n,theme:r,ctx:i,highlighted:a}=e,{x:o,y:s,width:c,height:l}=n,u=as,d=o+r.cellHorizontalPadding,f=[];for(let e of t){if(d>o+c)break;let t=Sn(e,i,r.baseFontFull).width;f.push({x:d,width:t}),d+=t+16+u}i.beginPath();for(let e of f)Fn(i,e.x,s+(l-20)/2,e.width+16,20,r.roundingRadius??20/2);i.fillStyle=a?r.bgBubbleSelected:r.bgBubble,i.fill();for(let[e,n]of f.entries())i.beginPath(),i.fillStyle=r.textBubble,i.fillText(t[e],n.x+8,s+l/2+wn(i,r))}var ss=W(`div`)({name:`DrilldownOverlayEditorStyle`,class:`gdg-d4zsq0x`,propsAsIs:!1}),cs=e=>{let{drilldowns:t}=e;return G.createElement(ss,null,t.map((e,t)=>G.createElement(`div`,{key:t,className:`doe-bubble`},e.img!==void 0&&G.createElement(`img`,{src:e.img}),G.createElement(`div`,null,e.text))))},ls={getAccessibilityString:e=>Lt(e.data.map(e=>e.text)),kind:B.Drilldown,needsHover:!1,useLabel:!1,needsHoverPosition:!1,measure:(e,t,n)=>t.data.reduce((t,n)=>e.measureText(n.text).width+t+20+(n.img===void 0?0:18),0)+2*n.cellHorizontalPadding-4,draw:e=>ps(e,e.cell.data),provideEditor:()=>e=>{let{value:t}=e;return G.createElement(cs,{drilldowns:t.data})},onPaste:()=>void 0},us=4,ds={};function fs(e,t,n,r){let i=Math.ceil(window.devicePixelRatio),a=n-10,o=n*i,s=r+5,c=r*3,l=(c+10)*i,u=`${e},${t},${i},${n}`;if(ds[u]!==void 0)return{el:ds[u],height:o,width:l,middleWidth:4*i,sideWidth:s*i,padding:5*i,dpr:i};let d=document.createElement(`canvas`),f=d.getContext(`2d`);return f===null?null:(d.width=l,d.height=o,f.scale(i,i),ds[u]=d,f.beginPath(),Fn(f,5,5,c,a,r),f.shadowColor=`rgba(24, 25, 34, 0.4)`,f.shadowBlur=1,f.fillStyle=e,f.fill(),f.shadowColor=`rgba(24, 25, 34, 0.3)`,f.shadowOffsetY=1,f.shadowBlur=5,f.fillStyle=e,f.fill(),f.shadowOffsetY=0,f.shadowBlur=0,f.shadowBlur=0,f.beginPath(),Fn(f,5.5,5.5,c,a,r),f.strokeStyle=t,f.lineWidth=1,f.stroke(),{el:d,height:o,width:l,sideWidth:s*i,middleWidth:r*i,padding:5*i,dpr:i})}function ps(e,t){let{rect:n,theme:r,ctx:i,imageLoader:a,col:o,row:s}=e,{x:c,width:l}=n,u=r.baseFontFull,d=jn(i,u),f=Math.min(n.height,Math.max(16,Math.ceil(d*r.lineHeight)*2)),p=Math.floor(n.y+(n.height-f)/2),m=f-10,h=us,g=c+r.cellHorizontalPadding,_=r.roundingRadius??6,v=fs(r.bgCell,r.drilldownBorder,f,_),y=[];for(let e of t){if(g>c+l)break;let t=Sn(e.text,i,u).width,n=0;e.img!==void 0&&a.loadOrGetImage(e.img,o,s)!==void 0&&(n=m-8+4);let r=t+n+16;y.push({x:g,width:r}),g+=r+h}if(v!==null){let{el:e,height:t,middleWidth:n,sideWidth:r,width:a,dpr:o,padding:s}=v,c=r/o,l=s/o;for(let o of y){let s=Math.floor(o.x),u=Math.floor(o.width),d=u-(c-l)*2;i.imageSmoothingEnabled=!1,i.drawImage(e,0,0,r,t,s-l,p,c,f),d>0&&i.drawImage(e,r,0,n,t,s+(c-l),p,d,f),i.drawImage(e,a-r,0,r,t,s+u-(c-l),p,c,f),i.imageSmoothingEnabled=!0}}i.beginPath();for(let[e,n]of y.entries()){let c=t[e],l=n.x+8;if(c.img!==void 0){let e=a.loadOrGetImage(c.img,o,s);if(e!==void 0){let t=m-8,n=0,a=0,o=e.width,s=e.height;o>s?(n+=(o-s)/2,o=s):s>o&&(a+=(s-o)/2,s=o),i.beginPath(),Fn(i,l,p+f/2-t/2,t,t,r.roundingRadius??3),i.save(),i.clip(),i.drawImage(e,n,a,o,s,l,p+f/2-t/2,t,t),i.restore(),l+=t+4}}i.beginPath(),i.fillStyle=r.textBubble,i.fillText(c.text,l,p+f/2+wn(i,r))}}var ms={getAccessibilityString:e=>e.data.join(`, `),kind:B.Image,needsHover:!1,useLabel:!1,needsHoverPosition:!1,draw:e=>gs(e,e.cell.displayData??e.cell.data,e.cell.rounding??e.theme.roundingRadius??4,e.cell.contentAlign),measure:(e,t)=>t.data.length*50,onDelete:e=>({...e,data:[]}),provideEditor:()=>e=>{let{value:t,onFinishedEditing:n,imageEditorOverride:r}=e,i=r??Bt;return G.createElement(i,{urls:t.data,canWrite:t.readonly!==!1,onCancel:n,onChange:e=>{n({...t,data:[e]})}})},onPaste:(e,t)=>{e=e.trim();let n=e.split(`,`).map(e=>{try{return new URL(e),e}catch{return}}).filter(e=>e!==void 0);if(!(n.length===t.data.length&&n.every((e,n)=>e===t.data[n])))return{...t,data:n}}},hs=4;function gs(e,t,n,r){let{rect:i,col:a,row:o,theme:s,ctx:c,imageLoader:l}=e,{x:u,y:d,height:f,width:p}=i,m=f-s.cellVerticalPadding*2,h=[],g=0;for(let e=0;e<t.length;e++){let n=t[e];if(n.length===0)continue;let r=l.loadOrGetImage(n,a,o);if(r!==void 0){h[e]=r;let t=r.width*(m/r.height);g+=t+hs}}if(g===0)return;g-=hs;let _=u+s.cellHorizontalPadding;r===`right`?_=Math.floor(u+p-s.cellHorizontalPadding-g):r===`center`&&(_=Math.floor(u+p/2-g/2));for(let e of h){if(e===void 0)continue;let t=e.width*(m/e.height);n>0&&(c.beginPath(),Fn(c,_,d+s.cellVerticalPadding,t,m,n),c.save(),c.clip()),c.drawImage(e,_,d+s.cellVerticalPadding,t,m),n>0&&c.restore(),_+=t+hs}}function _s(e,t){let n=e*49632+t*325176;return n^=n<<13,n^=n>>17,n^=n<<5,n/4294967295*2}var vs={getAccessibilityString:()=>``,kind:B.Loading,needsHover:!1,useLabel:!1,needsHoverPosition:!1,measure:()=>120,draw:e=>{let{cell:t,col:n,row:r,ctx:i,rect:a,theme:o}=e;if(t.skeletonWidth===void 0||t.skeletonWidth===0)return;let s=t.skeletonWidth;t.skeletonWidthVariability!==void 0&&t.skeletonWidthVariability>0&&(s+=Math.round(_s(n,r)*t.skeletonWidthVariability));let c=o.cellHorizontalPadding,l=t.skeletonHeight??Math.min(18,a.height-2*o.cellVerticalPadding);Fn(i,a.x+c,a.y+(a.height-l)/2,s,l,o.roundingRadius??3),i.fillStyle=de(o.textDark,.1),i.fill()},onPaste:()=>void 0},ys=()=>e=>e.targetWidth,bs=W(`div`)({name:`MarkdownOverlayEditorStyle`,class:`gdg-m1pnx84e`,propsAsIs:!1,vars:{"m1pnx84e-0":[ys(),`px`]}}),xs=e=>{let{value:t,onChange:n,forceEditMode:r,createNode:i,targetRect:a,onFinish:o,validatedSelection:s}=e,c=t.data,l=t.readonly===!0,[u,d]=G.useState(c===``||r),f=G.useCallback(()=>{d(e=>!e)},[]),p=c?`gdg-ml-6`:``;return u?G.createElement(bs,{targetWidth:a.width-20},G.createElement(qt,{autoFocus:!0,highlight:!1,validatedSelection:s,value:c,onKeyDown:e=>{e.key===`Enter`&&e.stopPropagation()},onChange:n}),G.createElement(`div`,{className:`gdg-edit-icon gdg-checkmark-hover ${p}`,onClick:()=>o(t)},G.createElement(kt,null))):G.createElement(bs,{targetWidth:a.width},G.createElement(Ht,{contents:c,createNode:i}),!l&&G.createElement(G.Fragment,null,G.createElement(`div`,{className:`spacer`}),G.createElement(`div`,{className:`gdg-edit-icon gdg-edit-hover ${p}`,onClick:f},G.createElement(Ot,null))),G.createElement(`textarea`,{className:`gdg-md-edit-textarea gdg-input`,autoFocus:!0}))},Ss={getAccessibilityString:e=>e.data?.toString()??``,kind:B.Markdown,needsHover:!1,needsHoverPosition:!1,drawPrep:kn,measure:(e,t,n)=>{let r=t.data.split(`
132
132
  `)[0];return e.measureText(r).width+2*n.cellHorizontalPadding},draw:e=>Pn(e,e.cell.data,e.cell.contentAlign),onDelete:e=>({...e,data:``}),provideEditor:()=>e=>{let{onChange:t,value:n,target:r,onFinishedEditing:i,markdownDivCreateNode:a,forceEditMode:o,validatedSelection:s}=e;return G.createElement(xs,{onFinish:i,targetRect:r,value:n,validatedSelection:s,onChange:e=>t({...n,data:e.target.value}),forceEditMode:o,createNode:a})},onPaste:(e,t)=>e===t.data?void 0:{...t,data:e}},Cs={getAccessibilityString:e=>e.row.toString(),kind:ye.Marker,needsHover:!0,needsHoverPosition:!1,drawPrep:ws,measure:()=>44,draw:e=>Es(e,e.cell.row,e.cell.checked,e.cell.markerKind,e.cell.drawHandle,e.cell.checkboxStyle),onClick:e=>{let{bounds:t,cell:n,posX:r,posY:i}=e,{width:a,height:o}=t,s=n.drawHandle?7+(a-7)/2:a/2,c=o/2;if(Math.abs(r-s)<=10&&Math.abs(i-c)<=10)return{...n,checked:!n.checked}},onPaste:()=>void 0};function ws(e,t){let{ctx:n,theme:r}=e,i=r.markerFontFull,a=t??{};return a?.font!==i&&(n.font=i,a.font=i),a.deprep=Ts,n.textAlign=`center`,a}function Ts(e){let{ctx:t}=e;t.textAlign=`start`}function Es(e,t,n,r,i,a){let{ctx:o,rect:s,hoverAmount:c,theme:l}=e,{x:u,y:d,width:f,height:p}=s,m=n?1:r===`checkbox-visible`?.6+.4*c:c;if(r!==`number`&&m>0){o.globalAlpha=m;let e=7*(n?c:1);if($r(o,l,n,i?u+e:u,d,i?f-e:f,p,!0,void 0,void 0,18,`center`,a),i){o.globalAlpha=c,o.beginPath();for(let e of[3,6])for(let t of[-5,-1,3])o.rect(u+e,d+p/2+t,2,2);o.fillStyle=l.textLight,o.fill(),o.beginPath()}o.globalAlpha=1}if(r===`number`||r===`both`&&!n){let e=t.toString(),n=l.markerFontFull,i=u+f/2;r===`both`&&c!==0&&(o.globalAlpha=1-c),o.fillStyle=l.textLight,o.font=n,o.fillText(e,i,d+p/2+wn(o,n)),c!==0&&(o.globalAlpha=1)}}var Ds={getAccessibilityString:()=>``,kind:ye.NewRow,needsHover:!0,needsHoverPosition:!1,measure:()=>200,draw:e=>Os(e,e.cell.hint,e.cell.icon),onPaste:()=>void 0};function Os(e,t,n){let{ctx:r,rect:i,hoverAmount:a,theme:o,spriteManager:s}=e,{x:c,y:l,width:u,height:d}=i;r.beginPath(),r.globalAlpha=a,r.rect(c+1,l+1,u,d-2),r.fillStyle=o.bgHeaderHovered,r.fill(),r.globalAlpha=1,r.beginPath();let f=t!==``,p=0;if(n!==void 0){let e=d-8,t=c+8/2,i=l+8/2;s.drawSprite(n,`normal`,r,t,i,e,o,f?1:a),p=e}else{p=24;let e=f?12:a*12,t=f?0:(1-a)*12*.5,n=o.cellHorizontalPadding+4;e>0&&(r.moveTo(c+n+t,l+d/2),r.lineTo(c+n+t+e,l+d/2),r.moveTo(c+n+t+e*.5,l+d/2-e*.5),r.lineTo(c+n+t+e*.5,l+d/2+e*.5),r.lineWidth=2,r.strokeStyle=o.bgIconHeader,r.lineCap=`round`,r.stroke())}r.fillStyle=o.textMedium,r.fillText(t,p+c+o.cellHorizontalPadding+.5,l+d/2+wn(r,o)),r.beginPath()}var ks=G.lazy(async()=>await x(()=>import(`./number-overlay-editor-DS-qf63L.js`),__vite__mapDeps([6,1,2,3]))),As={getAccessibilityString:e=>e.data?.toString()??``,kind:B.Number,needsHover:!1,needsHoverPosition:!1,useLabel:!0,drawPrep:kn,draw:e=>Pn(e,e.cell.displayData,e.cell.contentAlign),measure:(e,t,n)=>e.measureText(t.displayData).width+n.cellHorizontalPadding*2,onDelete:e=>({...e,data:void 0}),provideEditor:()=>e=>{let{isHighlighted:t,onChange:n,value:r,validatedSelection:i}=e;return G.createElement(G.Suspense,{fallback:null},G.createElement(ks,{highlight:t,disabled:r.readonly===!0,value:r.data,fixedDecimals:r.fixedDecimals,allowNegative:r.allowNegative,thousandSeparator:r.thousandSeparator,decimalSeparator:r.decimalSeparator,validatedSelection:i,onChange:e=>n({...r,data:Number.isNaN(e.floatValue??0)?0:e.floatValue})}))},onPaste:(e,t,n)=>{let r=typeof n.rawValue==`number`?n.rawValue:Number.parseFloat(typeof n.rawValue==`string`?n.rawValue:e);if(!(Number.isNaN(r)||t.data===r))return{...t,data:r,displayData:n.formattedString??t.displayData}}},js={getAccessibilityString:()=>``,measure:()=>108,kind:B.Protected,needsHover:!1,needsHoverPosition:!1,draw:Ms,onPaste:()=>void 0};function Ms(e){let{ctx:t,theme:n,rect:r}=e,{x:i,y:a,height:o}=r;t.beginPath();let s=2.5,c=i+n.cellHorizontalPadding+s,l=a+o/2,u=Math.cos(Ct(30))*s,d=Math.sin(Ct(30))*s;for(let e=0;e<12;e++)t.moveTo(c,l-s),t.lineTo(c,l+s),t.moveTo(c+u,l-d),t.lineTo(c-u,l+d),t.moveTo(c-u,l-d),t.lineTo(c+u,l+d),c+=8;t.lineWidth=1.1,t.lineCap=`square`,t.strokeStyle=n.textLight,t.stroke()}var Ns={getAccessibilityString:e=>e.data?.toString()??``,kind:B.RowID,needsHover:!1,needsHoverPosition:!1,drawPrep:(e,t)=>kn(e,t,e.theme.textLight),draw:e=>Pn(e,e.cell.data,e.cell.contentAlign),measure:(e,t,n)=>e.measureText(t.data).width+n.cellHorizontalPadding*2,provideEditor:()=>e=>{let{isHighlighted:t,onChange:n,value:r,validatedSelection:i}=e;return G.createElement(qt,{highlight:t,autoFocus:r.readonly!==!0,disabled:r.readonly!==!1,value:r.data,validatedSelection:i,onChange:e=>n({...r,data:e.target.value})})},onPaste:()=>void 0},Ps={getAccessibilityString:e=>e.data?.toString()??``,kind:B.Text,needsHover:e=>e.hoverEffect===!0,needsHoverPosition:!1,drawPrep:kn,useLabel:!0,draw:e=>{let{cell:t,hoverAmount:n,hyperWrapping:r,ctx:i,rect:a,theme:o,overrideCursor:s}=e,{displayData:c,contentAlign:l,hoverEffect:u,allowWrapping:d}=t;if(u===!0&&n>0){i.textBaseline=`alphabetic`;let e=o.cellHorizontalPadding,t=o.cellVerticalPadding,r=Sn(c,i,o.baseFontFull,`alphabetic`),l=a.height-t,u=Math.min(l,r.actualBoundingBoxAscent*2.5);i.beginPath(),Fn(i,a.x+e/2,a.y+(a.height-u)/2+1,r.width+e*3,u-1,o.roundingRadius??4),i.globalAlpha=n,i.fillStyle=de(o.textDark,.1),i.fill(),i.globalAlpha=1,i.fillStyle=o.textDark,i.textBaseline=`middle`,s?.(`text`)}Pn(e,c,l,d,r)},measure:(e,t,n)=>{let r=t.displayData.split(`
133
- `,t.allowWrapping===!0?void 0:1),i=0;for(let t of r)i=Math.max(i,e.measureText(t).width);return i+2*n.cellHorizontalPadding},onDelete:e=>({...e,data:``}),provideEditor:e=>({disablePadding:e.allowWrapping===!0,editor:t=>{let{isHighlighted:n,onChange:r,value:i,validatedSelection:a}=t;return G.createElement(qt,{style:e.allowWrapping===!0?{padding:`3px 8.5px`}:void 0,highlight:n,autoFocus:i.readonly!==!0,disabled:i.readonly===!0,altNewline:!0,value:i.data,validatedSelection:a,onChange:e=>r({...i,data:e.target.value})})}}),onPaste:(e,t,n)=>e===t.data?void 0:{...t,data:e,displayData:n.formattedString??t.displayData}},Fs=W(`div`)({name:`UriOverlayEditorStyle`,class:`gdg-u1rrojo`,propsAsIs:!1}),Is=e=>{let{uri:t,onChange:n,forceEditMode:r,readonly:i,validatedSelection:a,preview:o}=e,[s,c]=G.useState(!i&&(t===``||r)),l=G.useCallback(()=>{c(!0)},[]);return s?G.createElement(qt,{validatedSelection:a,highlight:!0,autoFocus:!0,value:t,onChange:n}):G.createElement(Fs,null,G.createElement(`a`,{className:`gdg-link-area`,href:t,target:`_blank`,rel:`noopener noreferrer`},o),!i&&G.createElement(`div`,{className:`gdg-edit-icon`,onClick:l},G.createElement(Ot,null)),G.createElement(`textarea`,{className:`gdg-input`,autoFocus:!0}))};function Ls(e,t,n,r){let i=n.cellHorizontalPadding,a=t.height/2-e.actualBoundingBoxAscent/2,o=e.width,s=e.actualBoundingBoxAscent;return r===`right`?i=t.width-o-n.cellHorizontalPadding:r===`center`&&(i=t.width/2-o/2),{x:i,y:a,width:o,height:s}}var Rs=[Cs,Ds,es,is,ls,ms,vs,Ss,As,js,Ns,Ps,{getAccessibilityString:e=>e.data?.toString()??``,kind:B.Uri,needsHover:e=>e.hoverEffect===!0,needsHoverPosition:!0,useLabel:!0,drawPrep:kn,draw:e=>{let{cell:t,theme:n,overrideCursor:r,hoverX:i,hoverY:a,rect:o,ctx:s}=e,c=t.displayData??t.data,l=t.hoverEffect===!0;if(r!==void 0&&l&&i!==void 0&&a!==void 0){let{x:l,y:u,width:d,height:f}=Ls(Sn(c,s,n.baseFontFull),o,n,t.contentAlign);if(i>=l-4&&i<=l-4+d+8&&a>=u-4&&a<=u-4+f+8){let i=wn(s,n.baseFontFull);r(`pointer`);let a=u-i;s.beginPath(),s.moveTo(o.x+l,Math.floor(o.y+a+f+5)+.5),s.lineTo(o.x+l+d,Math.floor(o.y+a+f+5)+.5),s.strokeStyle=n.linkColor,s.stroke(),s.save(),s.fillStyle=e.cellFillColor,Pn({...e,rect:{...o,x:o.x-1}},c,t.contentAlign),Pn({...e,rect:{...o,x:o.x-2}},c,t.contentAlign),Pn({...e,rect:{...o,x:o.x+1}},c,t.contentAlign),Pn({...e,rect:{...o,x:o.x+2}},c,t.contentAlign),s.restore()}}s.fillStyle=l?n.linkColor:n.textDark,Pn(e,c,t.contentAlign)},onClick:e=>{let{cell:t,bounds:n,posX:r,posY:i,theme:a}=e,o=t.displayData??t.data;if(t.hoverEffect!==!0||t.onClickUri===void 0)return;let s=Cn(o,a.baseFontFull);if(s===void 0)return;let c=Ls(s,n,a,t.contentAlign);Br({x:c.x-4,y:c.y-4,width:c.width+8,height:c.height+8},r,i)&&t.onClickUri(e)},measure:(e,t,n)=>e.measureText(t.displayData??t.data).width+n.cellHorizontalPadding*2,onDelete:e=>({...e,data:``}),provideEditor:e=>t=>{let{onChange:n,value:r,forceEditMode:i,validatedSelection:a}=t;return G.createElement(Is,{forceEditMode:r.readonly!==!0&&(i||e.hoverEffect===!0&&e.onClickUri!==void 0),uri:r.data,preview:r.displayData??r.data,validatedSelection:a,readonly:r.readonly===!0,onChange:e=>n({...r,data:e.target.value})})},onPaste:(e,t,n)=>e===t.data?void 0:{...t,data:e,displayData:n.formattedString??t.displayData}}],zs=e(t(((e,t)=>{var n=vt(),r=F(),i=`Expected a function`;function a(e,t,a){var o=!0,s=!0;if(typeof e!=`function`)throw TypeError(i);return r(a)&&(o=`leading`in a?!!a.leading:o,s=`trailing`in a?!!a.trailing:s),n(e,t,{leading:o,maxWait:t,trailing:s})}t.exports=a}))(),1),Bs=[],Vs=class extends Un{imageLoaded=()=>void 0;loadedLocations=[];cache={};setCallback(e){this.imageLoaded=e}sendLoaded=(0,zs.default)(()=>{this.imageLoaded(new Gn(this.loadedLocations)),this.loadedLocations=[]},20);clearOutOfWindow=()=>{let e=Object.keys(this.cache);for(let t of e){let e=this.cache[t],n=!1;for(let t=0;t<e.cells.length;t++){let r=e.cells[t];if(this.isInWindow(r)){n=!0;break}}n?e.cells=e.cells.filter(this.isInWindow):(e.cancel(),delete this.cache[t])}};loadImage(e,t,n,r){let i=!1,a=Bs.pop()??new Image,o=!1,s={img:void 0,cells:[X(t,n)],url:e,cancel:()=>{o||(o=!0,Bs.length<12?Bs.unshift(a):i||(a.src=``))}},c=new Promise(e=>a.addEventListener(`load`,()=>e(null)));requestAnimationFrame(async()=>{try{a.src=e,await c,await a.decode();let t=this.cache[r];if(t!==void 0&&!o){t.img=a;for(let e of t.cells)this.loadedLocations.push(Hn(e));i=!0,this.sendLoaded()}}catch{s.cancel()}}),this.cache[r]=s}loadOrGetImage(e,t,n){let r=e,i=this.cache[r];if(i!==void 0){let e=X(t,n);return i.cells.includes(e)||i.cells.push(e),i.img}else this.loadImage(e,t,n,r)}},Hs=G.forwardRef((e,t)=>{let n=G.useMemo(()=>({...Ar,...e.headerIcons}),[e.headerIcons]),r=G.useMemo(()=>e.imageWindowLoader??new Vs,[e.imageWindowLoader]);return G.createElement(Qo,{...e,renderers:Rs,headerIcons:n,ref:t,imageWindowLoader:r})});function Us(e){return getComputedStyle(document.documentElement).getPropertyValue(e).trim()}function Ws(e,t){if(e.startsWith(`#`)){let n=e.slice(1);return`rgba(${parseInt(n.slice(0,2),16)}, ${parseInt(n.slice(2,4),16)}, ${parseInt(n.slice(4,6),16)}, ${t})`}return e}function Gs(){let e=Us(`--color-background`),t=Us(`--color-foreground`),n=Us(`--color-muted`),r=Us(`--color-muted-foreground`),i=Us(`--color-primary`),a=Us(`--color-primary-foreground`),o=Us(`--color-border`),s=Us(`--color-accent`),c=Us(`--color-text-secondary`),l=Us(`--color-text-subtle`),u=Us(`--font-sans`)||`Geist, system-ui, sans-serif`;return{bgCell:e,bgCellMedium:n,bgHeader:n,bgHeaderHasFocus:s,bgHeaderHovered:s,bgBubble:s,bgBubbleSelected:i,textDark:t,textMedium:c,textLight:l,textHeader:r,textGroupHeader:r,textHeaderSelected:t,textBubble:t,accentColor:i,accentFg:a,accentLight:Ws(i,.12),borderColor:o,horizontalBorderColor:o,fontFamily:u,baseFontStyle:`13px`,headerFontStyle:`600 12px`,editorFontSize:`13px`,lineHeight:1.5,cellHorizontalPadding:8,cellVerticalPadding:4,headerIconSize:16}}function Ks(){let[e,t]=(0,G.useState)(0);return(0,G.useEffect)(()=>{let e=new MutationObserver(()=>t(e=>e+1));return e.observe(document.documentElement,{attributes:!0,attributeFilter:[`class`]}),()=>e.disconnect()},[]),(0,G.useMemo)(()=>Gs(),[e])}function qs(e,t,n){let r=e.length*9+40,i=0,a=Math.min(t.length,20);for(let n=0;n<a;n++){let r=t[n]?.[e];if(r==null)continue;let a=typeof r==`object`?12:String(r).length;i=Math.max(i,a*8)}let o=/^(int|serial|bigint|smallint|float|double|decimal|numeric|real|money|bool)/.test(n.toLowerCase())?80:100;return Math.max(o,Math.min(Math.max(r,i)+16,400))}function Js(e,t,n,r,i,a,o){return(0,G.useMemo)(()=>{let s=t.filter(e=>n.has(e)),c=t.filter(e=>!n.has(e)),l=[...s,...c],u=new Map(e.map(e=>[e.name,e]));return{columns:l.map(e=>{let t=u.get(e),n=t?.pk??!1,s;return a===e?s=o===`ASC`?`sortAsc`:`sortDesc`:n?s=`headerRowID`:t?.fk&&(s=`headerFk`),{title:e,id:e,width:r.get(e)??qs(e,i,t?.type??`text`),hasMenu:!0,icon:s}}),freezeColumns:s.length,columnOrder:l}},[e,t,n,r,i,a,o])}function Ys(e){if(e==null)return!1;if(typeof e==`object`)return!0;let t=String(e);if(t.length>=200)return!0;let n=t.trimStart();return!!((n[0]===`{`||n[0]===`[`)&&(n.endsWith(`}`)||n.endsWith(`]`))||n.startsWith(`<?xml`)||n.startsWith(`<`)&&n.endsWith(`>`))}function Xs(e){return e==null?`NULL`:typeof e==`object`?JSON.stringify(e):String(e)}function Zs(e){let t=e.trimStart();if(t[0]===`{`||t[0]===`[`)try{return JSON.parse(t),`json`}catch{}return t.startsWith(`<?xml`)||t.startsWith(`<`)&&/<\/\w+>/.test(t)?`xml`:t.startsWith(`---`)||/^\w+:\s/m.test(t)?`yaml`:`plaintext`}function Qs(e){let t=e.toLowerCase();return/^(int|serial|bigint|smallint|float|double|decimal|numeric|real|money)/.test(t)?B.Number:/^bool/.test(t)?B.Boolean:B.Text}function $s(e){let t=e.type.toLowerCase();return!!(/^(serial|bigserial|smallserial)/.test(t)||/^(int|bigint|smallint|integer)/.test(t)&&e.defaultValue&&/nextval|identity|auto_increment/i.test(e.defaultValue)||t===`integer`&&e.pk&&!e.defaultValue)}function ec(e,t=200){return e.length>t?e.slice(0,t)+`…`:e}var tc={bgCell:`rgba(251, 191, 36, 0.15)`};function nc(e,t,n,r,i,a){let o=(0,G.useRef)(e);o.current=e;let s=(0,G.useRef)(t);s.current=t;let c=(0,G.useRef)(new Map);return c.current=new Map(n.map(e=>[e.name,e])),{getCellContent:(0,G.useCallback)(([e,t])=>{let n=s.current[e],i=o.current[t];if(!n||!i)return{kind:B.Text,data:``,displayData:``,allowOverlay:!1};let l=c.current.get(n),u=l?Qs(l.type):B.Text,d=l?.pk??!1,f=r?i[r]:void 0,p=typeof f==`string`&&f.startsWith(`__new_`),m=`${f}:${n}`,h=a.current.get(m),g=h===void 0?i[n]:h.newVal,_=h!==void 0;if(d&&p){if(l&&$s(l))return{kind:B.Text,data:``,displayData:`AUTO`,allowOverlay:!1,readonly:!0,themeOverride:{textDark:`#6b7280`}};let e=h===void 0?``:String(h.newVal??``);return{kind:B.Text,data:e,displayData:e||`Enter ID…`,allowOverlay:!0,readonly:!1,themeOverride:e?_?tc:void 0:{textDark:`#9ca3af`}}}if(g==null){let e=p?``:`NULL`;if(p&&!_&&l){let t=l.type.toLowerCase();l.defaultValue?e=l.defaultValue:/^(timestamp|datetime|date)/.test(t)?e=`NOW()`:/^(uuid)/.test(t)&&(e=`gen_random_uuid()`)}return{kind:B.Text,data:``,displayData:e,allowOverlay:!d,readonly:d,themeOverride:_?tc:p||e!==`NULL`?{textDark:`#9ca3af`}:{textDark:`#6b7280`}}}if(u===B.Number&&typeof g==`number`)return{kind:B.Number,data:g,displayData:String(g),allowOverlay:!d,readonly:d,themeOverride:_?tc:void 0};if(u===B.Boolean&&typeof g==`boolean`)return{kind:B.Boolean,data:g,readonly:d,allowOverlay:!1};let v=Xs(g);return{kind:B.Text,data:v,displayData:ec(v),allowOverlay:!d,readonly:d,themeOverride:_?tc:void 0}},[]),onCellEdited:(0,G.useCallback)(([e,t],n)=>{if(!r)return;let a=s.current[e],c=o.current[t];if(!a||!c)return;let l=c[r],u;if(n.kind===B.Text)u=n.data===``?null:n.data;else if(n.kind===B.Number)u=n.data;else if(n.kind===B.Boolean)u=n.data;else return;i(l,a,u)},[r,i])}}var rc={columns:H.empty(),rows:H.empty()};function ic(){let[e,t]=(0,G.useState)(rc);return{gridSelection:e,onGridSelectionChange:(0,G.useCallback)(e=>{t(e)},[]),selectedRowIndices:(0,G.useMemo)(()=>{let t=[];if(e.rows)for(let n of e.rows)if(Array.isArray(n))for(let e=n[0];e<n[1];e++)t.push(e);else t.push(n);return t},[e.rows]),clearSelection:(0,G.useCallback)(()=>{t(rc)},[])}}function ac(e,t,n){let[r,i]=(0,G.useState)(new Map),a=(0,G.useRef)(r);a.current=r;let o=(0,G.useRef)(!1);return{pendingEdits:r,pendingRef:a,addEdit:(0,G.useCallback)((e,t,n)=>{let r=`${e}:${t}`;i(i=>new Map(i).set(r,{pkVal:e,col:t,newVal:n}))},[]),commitAll:(0,G.useCallback)(async()=>{if(!e)return;let r=new Map;for(let n of a.current.values()){let i=String(n.pkVal);i.startsWith(`__new_`)?(r.has(i)||r.set(i,{}),r.get(i)[n.col]=n.newVal):t(e,n.pkVal,n.col,n.newVal)}if(n)for(let e of r.values())await n(e);o.current=!0},[e,t,n]),discardAll:(0,G.useCallback)(()=>{i(new Map),o.current=!1},[]),hasPending:r.size>0,pendingCount:r.size,committedRef:o}}function oc(e,t){let[n,r]=(0,G.useState)(new Set);return{effectiveRows:(0,G.useMemo)(()=>{if(n.size===0||!t)return e;let r=[],i=[];for(let a of e)n.has(String(a[t]??``))?i.push(a):r.push(a);return[...r,...i]},[e,n,t]),pinnedCount:n.size,pinnedPks:n,setPinnedPks:r}}function sc(e){let{displayRows:t,columnOrder:n,schema:r,pkCol:i,connectionId:a,connectionName:o,selectedTable:s,selectedSchema:c,addEdit:l,gridSelection:u,containerRef:d}=e,{openTab:f}=C(E(e=>({openTab:e.openTab}))),[p,m]=(0,G.useState)(null),h=(0,G.useRef)(t);h.current=t;let g=(0,G.useRef)(n);g.current=n;let _=(0,G.useCallback)(e=>{let n=t[e];if(!n)return;let r=i?String(n[i]??``):``,o=s??``,c=JSON.stringify(n,null,2);m({title:r?`Row #${r}${o?` — ${o}`:``}`:`Row — ${o}`,content:c,language:`json`,viewerKey:`${a}:${o}:row:${r}`})},[t,i,s,a]),v=(0,G.useCallback)((e,r)=>{let o=t[e];if(!o)return;let c=n[r];if(!c)return;let l=Xs(o[c]),u=i?String(o[i]??e):String(e),d=s??``;m({title:`${c} #${u}${d?` — ${d}`:``}`,content:l,language:Zs(l),viewerKey:`${a}:${d}:${c}:${u}`})},[t,n,i,s,a]),y=(0,G.useCallback)(()=>{p&&f({type:`editor`,title:p.title,projectId:null,closable:!0,metadata:{inlineContent:p.content,inlineLanguage:p.language,viewerKey:p.viewerKey}})},[f,p]),b=(0,G.useCallback)((e,t)=>{if(!i)return!1;let[n,a]=e;for(let e=0;e<t.length;e++){let o=h.current[a+e];if(!o)continue;let s=o[i];for(let i=0;i<t[e].length;i++){let a=g.current[n+i];if(!a||r.find(e=>e.name===a)?.pk)continue;let o=t[e][i];l(s,a,o===``?null:o)}}return!1},[i,r,l]),x=(0,G.useRef)(r);x.current=r;let S=(0,G.useRef)(u);S.current=u;let w=(0,G.useRef)(l);w.current=l;let T=(0,G.useRef)(i);return T.current=i,(0,G.useEffect)(()=>{if(!d)return;let e=e=>{let t=d.current;if(!t||!t.contains(document.activeElement))return;let n=document.activeElement?.tagName;if(n===`INPUT`||n===`TEXTAREA`)return;let r=T.current;if(!r)return;let i=S.current?.current;if(!i)return;let a=e.clipboardData?.getData(`text/plain`);if(!a)return;let o=a.split(/\r?\n/).filter(e=>e.length>0).map(e=>e.split(` `));if(o.length===0)return;let[s,c]=i.cell;for(let e=0;e<o.length;e++){let t=h.current[c+e];if(!t)continue;let n=t[r];for(let t=0;t<o[e].length;t++){let r=g.current[s+t];if(!r||x.current.find(e=>e.name===r)?.pk)continue;let i=o[e][t];w.current(n,r,i===``?null:i)}}e.preventDefault()};return document.addEventListener(`paste`,e),()=>document.removeEventListener(`paste`,e)},[d]),{previewData:p,setPreviewData:m,openRowPreview:_,openCellPreview:v,openPreviewInTab:y,handlePaste:b,getContextFk:(0,G.useCallback)(e=>e?r.find(t=>t.name===e)?.fk??null:null,[r]),isCellViewable:(0,G.useCallback)((e,t)=>e&&t?Ys(e[t]):!1,[]),openFkTable:(0,G.useCallback)((e,t)=>{t==null||!a||f({type:`database`,title:`${o??`DB`} · ${e.table}`,projectId:null,closable:!0,metadata:{connectionId:a,connectionName:o,tableName:e.table,schemaName:c??`public`,initialSql:`SELECT * FROM "${e.table}" WHERE "${e.column}" = '${String(t).replace(/'/g,`''`)}'`}})},[a,o,c,f])}}function cc({colName:e,bounds:t,isPinned:n,filterValue:r,sortState:i,onFilter:a,onSort:c,onClearSort:l,onTogglePin:u,onClose:p}){let[m,h]=(0,G.useState)(r),g=(0,G.useRef)(null),_=(0,G.useRef)(void 0);(0,G.useEffect)(()=>{let e=e=>{g.current&&!g.current.contains(e.target)&&p()};return document.addEventListener(`mousedown`,e),()=>document.removeEventListener(`mousedown`,e)},[p]),(0,G.useEffect)(()=>{let e=e=>{e.key===`Escape`&&p()};return document.addEventListener(`keydown`,e),()=>document.removeEventListener(`keydown`,e)},[p]);let v=e=>{h(e),clearTimeout(_.current),_.current=setTimeout(()=>a(e),300)},y=Math.min(t.x,window.innerWidth-220-8),x=t.y+t.height+2,S=document.getElementById(`portal`);return S?(0,Je.createPortal)((0,K.jsxs)(`div`,{ref:g,style:{position:`fixed`,left:y,top:x,zIndex:1e4},className:`w-[220px] bg-popover border border-border rounded-md shadow-lg text-xs overflow-hidden`,children:[(0,K.jsx)(`div`,{className:`px-3 py-1.5 border-b border-border text-muted-foreground font-medium truncate`,children:e}),(0,K.jsx)(`div`,{className:`px-2 py-1.5 border-b border-border`,children:(0,K.jsxs)(`div`,{className:`flex items-center gap-1`,children:[(0,K.jsx)(Ne,{className:`size-3 text-muted-foreground shrink-0`}),(0,K.jsx)(`input`,{autoFocus:!0,type:`text`,value:m,onChange:e=>v(e.target.value),placeholder:`Filter (ILIKE)…`,className:`flex-1 bg-transparent outline-none text-foreground placeholder:text-muted-foreground text-xs`}),m&&(0,K.jsx)(`button`,{type:`button`,onClick:()=>v(``),className:`text-muted-foreground hover:text-foreground`,children:(0,K.jsx)(b,{className:`size-3`})})]})}),(0,K.jsxs)(`div`,{className:`py-1`,children:[(0,K.jsxs)(`button`,{type:`button`,onClick:()=>{c(),p()},className:`w-full text-left px-3 py-1.5 hover:bg-muted flex items-center gap-2 text-foreground`,children:[i===`asc`?(0,K.jsx)(o,{className:`size-3`}):(0,K.jsx)(s,{className:`size-3`}),i===`asc`?`Sort Descending`:`Sort Ascending`]}),i&&l&&(0,K.jsxs)(`button`,{type:`button`,onClick:()=>{l(),p()},className:`w-full text-left px-3 py-1.5 hover:bg-muted flex items-center gap-2 text-foreground`,children:[(0,K.jsx)(b,{className:`size-3`}),`Clear Sort`]}),(0,K.jsxs)(`button`,{type:`button`,onClick:()=>{u(),p()},className:`w-full text-left px-3 py-1.5 hover:bg-muted flex items-center gap-2 text-foreground`,children:[n?(0,K.jsx)(f,{className:`size-3`}):(0,K.jsx)(d,{className:`size-3`}),n?`Unpin Column`:`Pin Column`]})]})]}),S):null}function lc({position:e,isPinned:t,onViewRow:n,onViewCell:r,onPinRow:i,onDeleteRow:a,onOpenFkTable:o,fkLabel:s,onClose:c}){let[l,u]=(0,G.useState)(!1),p=(0,G.useRef)(null);(0,G.useEffect)(()=>{let e=e=>{p.current&&!p.current.contains(e.target)&&c()};return document.addEventListener(`mousedown`,e),()=>document.removeEventListener(`mousedown`,e)},[c]),(0,G.useEffect)(()=>{let e=e=>{e.key===`Escape`&&c()};return document.addEventListener(`keydown`,e),()=>document.removeEventListener(`keydown`,e)},[c]);let m=Math.min(e.x,window.innerWidth-180-8),h=Math.min(e.y,window.innerHeight-130-8),v=document.getElementById(`portal`);return v?(0,Je.createPortal)((0,K.jsxs)(`div`,{ref:p,style:{position:`fixed`,left:m,top:h,zIndex:1e4},className:`w-[180px] bg-popover border border-border rounded-md shadow-lg text-xs overflow-hidden py-1`,children:[(0,K.jsxs)(`button`,{type:`button`,onClick:()=>{n(),c()},className:`w-full text-left px-3 py-1.5 hover:bg-muted flex items-center gap-2 text-foreground`,children:[(0,K.jsx)(g,{className:`size-3`}),` View as JSON`]}),r&&(0,K.jsxs)(`button`,{type:`button`,onClick:()=>{r(),c()},className:`w-full text-left px-3 py-1.5 hover:bg-muted flex items-center gap-2 text-foreground`,children:[(0,K.jsx)(g,{className:`size-3`}),` View Cell`]}),o&&(0,K.jsxs)(`button`,{type:`button`,onClick:()=>{o(),c()},className:`w-full text-left px-3 py-1.5 hover:bg-muted flex items-center gap-2 text-blue-400`,children:[(0,K.jsx)(D,{className:`size-3`}),` `,s??`Open Referenced Table`]}),(0,K.jsxs)(`button`,{type:`button`,onClick:()=>{i(),c()},className:`w-full text-left px-3 py-1.5 hover:bg-muted flex items-center gap-2 text-foreground`,children:[t?(0,K.jsx)(f,{className:`size-3`}):(0,K.jsx)(d,{className:`size-3`}),t?`Unpin Row`:`Pin Row`]}),(0,K.jsx)(`div`,{className:`border-t border-border my-0.5`}),l?(0,K.jsxs)(`div`,{className:`px-3 py-1.5 flex items-center gap-2`,children:[(0,K.jsx)(`button`,{type:`button`,onClick:()=>{a(),c()},className:`text-destructive font-medium hover:underline`,children:`Delete?`}),(0,K.jsx)(`button`,{type:`button`,onClick:()=>u(!1),className:`text-muted-foreground hover:underline`,children:`Cancel`})]}):(0,K.jsxs)(`button`,{type:`button`,onClick:()=>u(!0),className:`w-full text-left px-3 py-1.5 hover:bg-muted flex items-center gap-2 text-destructive`,children:[(0,K.jsx)(_,{className:`size-3`}),` Delete Row`]})]}),v):null}function uc({columns:e,onSelect:t,onClose:n,anchorRect:r}){let[i,a]=(0,G.useState)(``),[o,s]=(0,G.useState)(0),c=(0,G.useRef)(null),l=(0,G.useRef)(null),u=i?e.filter(e=>e.toLowerCase().includes(i.toLowerCase())):e;(0,G.useEffect)(()=>{s(0)},[i]),(0,G.useEffect)(()=>{let e=l.current;e&&e.children[o]?.scrollIntoView({block:`nearest`})},[o]),(0,G.useEffect)(()=>{let e=e=>{c.current&&!c.current.contains(e.target)&&n()};return document.addEventListener(`mousedown`,e),()=>document.removeEventListener(`mousedown`,e)},[n]);let d=(0,G.useCallback)(e=>{if(e.key===`Escape`){n();return}if(e.key===`ArrowDown`){e.preventDefault(),s(e=>Math.min(e+1,u.length-1));return}if(e.key===`ArrowUp`){e.preventDefault(),s(e=>Math.max(e-1,0));return}if(e.key===`Enter`){e.preventDefault();let r=u[o];r&&(t(r),n())}},[u,o,t,n]),f=document.getElementById(`portal`);return f?(0,Je.createPortal)((0,K.jsxs)(`div`,{ref:c,style:{position:`fixed`,left:Math.min(r.x,window.innerWidth-216),top:Math.min(r.y,window.innerHeight-308),zIndex:1e4},className:`w-[200px] max-h-[300px] bg-popover border border-border rounded-md shadow-lg text-xs overflow-hidden flex flex-col`,children:[(0,K.jsx)(`div`,{className:`px-2 py-1.5 border-b border-border`,children:(0,K.jsx)(`input`,{autoFocus:!0,value:i,onChange:e=>a(e.target.value),onKeyDown:d,placeholder:`Search columns…`,className:`w-full bg-transparent outline-none text-foreground placeholder:text-muted-foreground text-xs`})}),(0,K.jsxs)(`div`,{ref:l,className:`overflow-y-auto py-1`,children:[u.map((e,r)=>(0,K.jsx)(`button`,{type:`button`,onClick:()=>{t(e),n()},onMouseEnter:()=>s(r),className:`w-full text-left px-3 py-1 truncate text-foreground ${r===o?`bg-muted`:`hover:bg-muted`}`,children:e},e)),u.length===0&&(0,K.jsx)(`div`,{className:`px-3 py-2 text-muted-foreground`,children:`No columns found`})]})]}),f):null}function dc({hasSelection:e,selectedCount:t,onBulkDelete:n,onInsertRow:r,columns:i,selectedRows:a,connectionName:o,searchTerm:s,onSearchChange:c,onColumnJump:l,colSearchOpen:d,onColSearchChange:f}){let[m,g]=(0,G.useState)(!1),[v,y]=(0,G.useState)(!1),x=d??v,S=f??y,C=(0,G.useRef)(null),w=C.current?(()=>{let e=C.current.getBoundingClientRect();return{x:e.left,y:e.bottom+4}})():{x:0,y:0};return(0,K.jsxs)(`div`,{className:`flex items-center gap-2 px-2 py-1 border-b border-border bg-background shrink-0`,children:[e&&(0,K.jsxs)(`div`,{className:`flex items-center gap-1.5 text-xs`,children:[(0,K.jsxs)(`span`,{className:`text-muted-foreground`,children:[t,` selected`]}),n&&(m?(0,K.jsxs)(`span`,{className:`flex items-center gap-1`,children:[(0,K.jsxs)(`button`,{type:`button`,onClick:()=>{n(),g(!1)},className:`text-destructive text-[10px] font-medium hover:underline`,children:[`Delete `,t,`?`]}),(0,K.jsx)(`button`,{type:`button`,onClick:()=>g(!1),className:`text-muted-foreground text-[10px] hover:underline`,children:`Cancel`})]}):(0,K.jsx)(`button`,{type:`button`,onClick:()=>g(!0),className:`p-0.5 text-muted-foreground hover:text-destructive`,children:(0,K.jsx)(_,{className:`size-3`})})),(0,K.jsx)(Xe,{columns:i,rows:a,filename:`${o??`db`}-selected`})]}),(0,K.jsx)(`div`,{className:`flex-1`}),(0,K.jsxs)(`div`,{className:`flex items-center gap-1 text-xs`,children:[(0,K.jsx)(p,{className:`size-3 text-muted-foreground`}),(0,K.jsx)(`input`,{value:s,onChange:e=>c(e.target.value),placeholder:`Search page…`,className:`w-24 bg-transparent outline-none text-foreground placeholder:text-muted-foreground text-xs`}),s&&(0,K.jsx)(`button`,{type:`button`,onClick:()=>c(``),className:`text-muted-foreground hover:text-foreground`,children:(0,K.jsx)(b,{className:`size-3`})})]}),l&&(0,K.jsx)(`button`,{ref:C,type:`button`,onClick:()=>S(!x),className:`p-0.5 rounded text-muted-foreground hover:text-foreground transition-colors`,title:`Jump to column (/)`,children:(0,K.jsx)(u,{className:`size-3.5`})}),r&&(0,K.jsx)(`button`,{type:`button`,onClick:r,className:`p-0.5 rounded text-muted-foreground hover:text-primary transition-colors`,title:`Insert row`,children:(0,K.jsx)(h,{className:`size-3.5`})}),x&&l&&(0,K.jsx)(uc,{columns:i,onSelect:l,onClose:()=>S(!1),anchorRect:w})]})}function fc({pendingCount:e,onSave:t,onDiscard:n}){return e===0?null:(0,K.jsxs)(`div`,{className:`flex items-center gap-2 px-3 py-1.5 border-t border-amber-400/50 bg-amber-50 dark:bg-amber-950/30 shrink-0 text-xs`,children:[(0,K.jsxs)(`span`,{className:`text-amber-700 dark:text-amber-300 font-medium`,children:[e,` pending edit`,e>1?`s`:``]}),(0,K.jsx)(`div`,{className:`flex-1`}),(0,K.jsxs)(`button`,{type:`button`,onClick:n,className:`flex items-center gap-1 px-2 py-0.5 rounded text-muted-foreground hover:text-foreground hover:bg-muted transition-colors`,children:[(0,K.jsx)(T,{className:`size-3`}),` Discard`]}),(0,K.jsxs)(`button`,{type:`button`,onClick:t,className:`flex items-center gap-1 px-2 py-0.5 rounded bg-primary text-primary-foreground hover:bg-primary/90 transition-colors`,children:[(0,K.jsx)(Pe,{className:`size-3`}),` Save`,(0,K.jsx)(`kbd`,{className:`ml-1 text-[9px] opacity-70`,children:`⌘↵`})]})]})}function pc({total:e,page:t,totalPages:n,onPageChange:r}){return(0,K.jsxs)(`div`,{className:`flex items-center justify-between px-3 py-1.5 border-t border-border bg-background shrink-0 text-xs text-muted-foreground`,children:[(0,K.jsxs)(`span`,{children:[e.toLocaleString(),` rows`]}),(0,K.jsxs)(`div`,{className:`hidden md:flex items-center gap-2 text-[10px] text-muted-foreground/50`,children:[(0,K.jsxs)(`span`,{children:[(0,K.jsx)(`kbd`,{className:`px-1 py-0.5 rounded bg-muted text-[9px]`,children:`/`}),` columns`]}),(0,K.jsxs)(`span`,{children:[(0,K.jsxs)(`kbd`,{className:`px-1 py-0.5 rounded bg-muted text-[9px]`,children:[`⌘`,`A`]}),` select all`]}),(0,K.jsxs)(`span`,{children:[(0,K.jsxs)(`kbd`,{className:`px-1 py-0.5 rounded bg-muted text-[9px]`,children:[`⌘`,`C`]}),` copy`]})]}),(0,K.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,K.jsx)(`button`,{type:`button`,disabled:t<=1,onClick:()=>r(t-1),className:`p-0.5 rounded hover:bg-muted disabled:opacity-30`,children:(0,K.jsx)(c,{className:`size-3.5`})}),(0,K.jsxs)(`span`,{children:[t,` / `,n]}),(0,K.jsx)(`button`,{type:`button`,disabled:t>=n,onClick:()=>r(t+1),className:`p-0.5 rounded hover:bg-muted disabled:opacity-30`,children:(0,K.jsx)(l,{className:`size-3.5`})})]})]})}function mc({data:e,onClose:t,onOpenInTab:n}){let r=je(),[i,a]=(0,G.useState)(!0),[o,s]=(0,G.useState)(e.content),[c,l]=(0,G.useState)(!1),u=e.language===`json`||e.language===`xml`,d=(0,G.useRef)(e.title);d.current!==e.title&&(d.current=e.title,s(e.content),l(!1));let f=(0,G.useCallback)(()=>{if(c)s(e.content),l(!1);else if(e.language===`json`)try{s(JSON.stringify(JSON.parse(e.content.trim()),null,2)),l(!0)}catch{}else if(e.language===`xml`){let t=0;s(e.content.trim().replace(/>\s*</g,`>
133
+ `,t.allowWrapping===!0?void 0:1),i=0;for(let t of r)i=Math.max(i,e.measureText(t).width);return i+2*n.cellHorizontalPadding},onDelete:e=>({...e,data:``}),provideEditor:e=>({disablePadding:e.allowWrapping===!0,editor:t=>{let{isHighlighted:n,onChange:r,value:i,validatedSelection:a}=t;return G.createElement(qt,{style:e.allowWrapping===!0?{padding:`3px 8.5px`}:void 0,highlight:n,autoFocus:i.readonly!==!0,disabled:i.readonly===!0,altNewline:!0,value:i.data,validatedSelection:a,onChange:e=>r({...i,data:e.target.value})})}}),onPaste:(e,t,n)=>e===t.data?void 0:{...t,data:e,displayData:n.formattedString??t.displayData}},Fs=W(`div`)({name:`UriOverlayEditorStyle`,class:`gdg-u1rrojo`,propsAsIs:!1}),Is=e=>{let{uri:t,onChange:n,forceEditMode:r,readonly:i,validatedSelection:a,preview:o}=e,[s,c]=G.useState(!i&&(t===``||r)),l=G.useCallback(()=>{c(!0)},[]);return s?G.createElement(qt,{validatedSelection:a,highlight:!0,autoFocus:!0,value:t,onChange:n}):G.createElement(Fs,null,G.createElement(`a`,{className:`gdg-link-area`,href:t,target:`_blank`,rel:`noopener noreferrer`},o),!i&&G.createElement(`div`,{className:`gdg-edit-icon`,onClick:l},G.createElement(Ot,null)),G.createElement(`textarea`,{className:`gdg-input`,autoFocus:!0}))};function Ls(e,t,n,r){let i=n.cellHorizontalPadding,a=t.height/2-e.actualBoundingBoxAscent/2,o=e.width,s=e.actualBoundingBoxAscent;return r===`right`?i=t.width-o-n.cellHorizontalPadding:r===`center`&&(i=t.width/2-o/2),{x:i,y:a,width:o,height:s}}var Rs=[Cs,Ds,es,is,ls,ms,vs,Ss,As,js,Ns,Ps,{getAccessibilityString:e=>e.data?.toString()??``,kind:B.Uri,needsHover:e=>e.hoverEffect===!0,needsHoverPosition:!0,useLabel:!0,drawPrep:kn,draw:e=>{let{cell:t,theme:n,overrideCursor:r,hoverX:i,hoverY:a,rect:o,ctx:s}=e,c=t.displayData??t.data,l=t.hoverEffect===!0;if(r!==void 0&&l&&i!==void 0&&a!==void 0){let{x:l,y:u,width:d,height:f}=Ls(Sn(c,s,n.baseFontFull),o,n,t.contentAlign);if(i>=l-4&&i<=l-4+d+8&&a>=u-4&&a<=u-4+f+8){let i=wn(s,n.baseFontFull);r(`pointer`);let a=u-i;s.beginPath(),s.moveTo(o.x+l,Math.floor(o.y+a+f+5)+.5),s.lineTo(o.x+l+d,Math.floor(o.y+a+f+5)+.5),s.strokeStyle=n.linkColor,s.stroke(),s.save(),s.fillStyle=e.cellFillColor,Pn({...e,rect:{...o,x:o.x-1}},c,t.contentAlign),Pn({...e,rect:{...o,x:o.x-2}},c,t.contentAlign),Pn({...e,rect:{...o,x:o.x+1}},c,t.contentAlign),Pn({...e,rect:{...o,x:o.x+2}},c,t.contentAlign),s.restore()}}s.fillStyle=l?n.linkColor:n.textDark,Pn(e,c,t.contentAlign)},onClick:e=>{let{cell:t,bounds:n,posX:r,posY:i,theme:a}=e,o=t.displayData??t.data;if(t.hoverEffect!==!0||t.onClickUri===void 0)return;let s=Cn(o,a.baseFontFull);if(s===void 0)return;let c=Ls(s,n,a,t.contentAlign);Br({x:c.x-4,y:c.y-4,width:c.width+8,height:c.height+8},r,i)&&t.onClickUri(e)},measure:(e,t,n)=>e.measureText(t.displayData??t.data).width+n.cellHorizontalPadding*2,onDelete:e=>({...e,data:``}),provideEditor:e=>t=>{let{onChange:n,value:r,forceEditMode:i,validatedSelection:a}=t;return G.createElement(Is,{forceEditMode:r.readonly!==!0&&(i||e.hoverEffect===!0&&e.onClickUri!==void 0),uri:r.data,preview:r.displayData??r.data,validatedSelection:a,readonly:r.readonly===!0,onChange:e=>n({...r,data:e.target.value})})},onPaste:(e,t,n)=>e===t.data?void 0:{...t,data:e,displayData:n.formattedString??t.displayData}}],zs=e(t(((e,t)=>{var n=vt(),r=F(),i=`Expected a function`;function a(e,t,a){var o=!0,s=!0;if(typeof e!=`function`)throw TypeError(i);return r(a)&&(o=`leading`in a?!!a.leading:o,s=`trailing`in a?!!a.trailing:s),n(e,t,{leading:o,maxWait:t,trailing:s})}t.exports=a}))(),1),Bs=[],Vs=class extends Un{imageLoaded=()=>void 0;loadedLocations=[];cache={};setCallback(e){this.imageLoaded=e}sendLoaded=(0,zs.default)(()=>{this.imageLoaded(new Gn(this.loadedLocations)),this.loadedLocations=[]},20);clearOutOfWindow=()=>{let e=Object.keys(this.cache);for(let t of e){let e=this.cache[t],n=!1;for(let t=0;t<e.cells.length;t++){let r=e.cells[t];if(this.isInWindow(r)){n=!0;break}}n?e.cells=e.cells.filter(this.isInWindow):(e.cancel(),delete this.cache[t])}};loadImage(e,t,n,r){let i=!1,a=Bs.pop()??new Image,o=!1,s={img:void 0,cells:[X(t,n)],url:e,cancel:()=>{o||(o=!0,Bs.length<12?Bs.unshift(a):i||(a.src=``))}},c=new Promise(e=>a.addEventListener(`load`,()=>e(null)));requestAnimationFrame(async()=>{try{a.src=e,await c,await a.decode();let t=this.cache[r];if(t!==void 0&&!o){t.img=a;for(let e of t.cells)this.loadedLocations.push(Hn(e));i=!0,this.sendLoaded()}}catch{s.cancel()}}),this.cache[r]=s}loadOrGetImage(e,t,n){let r=e,i=this.cache[r];if(i!==void 0){let e=X(t,n);return i.cells.includes(e)||i.cells.push(e),i.img}else this.loadImage(e,t,n,r)}},Hs=G.forwardRef((e,t)=>{let n=G.useMemo(()=>({...Ar,...e.headerIcons}),[e.headerIcons]),r=G.useMemo(()=>e.imageWindowLoader??new Vs,[e.imageWindowLoader]);return G.createElement(Qo,{...e,renderers:Rs,headerIcons:n,ref:t,imageWindowLoader:r})});function Us(e){return getComputedStyle(document.documentElement).getPropertyValue(e).trim()}function Ws(e,t){if(e.startsWith(`#`)){let n=e.slice(1);return`rgba(${parseInt(n.slice(0,2),16)}, ${parseInt(n.slice(2,4),16)}, ${parseInt(n.slice(4,6),16)}, ${t})`}return e}function Gs(){let e=Us(`--color-background`),t=Us(`--color-foreground`),n=Us(`--color-muted`),r=Us(`--color-muted-foreground`),i=Us(`--color-primary`),a=Us(`--color-primary-foreground`),o=Us(`--color-border`),s=Us(`--color-accent`),c=Us(`--color-text-secondary`),l=Us(`--color-text-subtle`),u=Us(`--font-sans`)||`Geist, system-ui, sans-serif`;return{bgCell:e,bgCellMedium:n,bgHeader:n,bgHeaderHasFocus:s,bgHeaderHovered:s,bgBubble:s,bgBubbleSelected:i,textDark:t,textMedium:c,textLight:l,textHeader:r,textGroupHeader:r,textHeaderSelected:t,textBubble:t,accentColor:i,accentFg:a,accentLight:Ws(i,.12),borderColor:o,horizontalBorderColor:o,fontFamily:u,baseFontStyle:`13px`,headerFontStyle:`600 12px`,editorFontSize:`13px`,lineHeight:1.5,cellHorizontalPadding:8,cellVerticalPadding:4,headerIconSize:16}}function Ks(){let[e,t]=(0,G.useState)(0);return(0,G.useEffect)(()=>{let e=new MutationObserver(()=>t(e=>e+1));return e.observe(document.documentElement,{attributes:!0,attributeFilter:[`class`]}),()=>e.disconnect()},[]),(0,G.useMemo)(()=>Gs(),[e])}function qs(e,t,n){let r=e.length*9+40,i=0,a=Math.min(t.length,20);for(let n=0;n<a;n++){let r=t[n]?.[e];if(r==null)continue;let a=typeof r==`object`?12:String(r).length;i=Math.max(i,a*8)}let o=/^(int|serial|bigint|smallint|float|double|decimal|numeric|real|money|bool)/.test(n.toLowerCase())?80:100;return Math.max(o,Math.min(Math.max(r,i)+16,400))}function Js(e,t,n,r,i,a,o){return(0,G.useMemo)(()=>{let s=t.filter(e=>n.has(e)),c=t.filter(e=>!n.has(e)),l=[...s,...c],u=new Map(e.map(e=>[e.name,e]));return{columns:l.map(e=>{let t=u.get(e),n=t?.pk??!1,s;return a===e?s=o===`ASC`?`sortAsc`:`sortDesc`:n?s=`headerRowID`:t?.fk&&(s=`headerFk`),{title:e,id:e,width:r.get(e)??qs(e,i,t?.type??`text`),hasMenu:!0,icon:s}}),freezeColumns:s.length,columnOrder:l}},[e,t,n,r,i,a,o])}function Ys(e){if(e==null)return!1;if(typeof e==`object`)return!0;let t=String(e);if(t.length>=200)return!0;let n=t.trimStart();return!!((n[0]===`{`||n[0]===`[`)&&(n.endsWith(`}`)||n.endsWith(`]`))||n.startsWith(`<?xml`)||n.startsWith(`<`)&&n.endsWith(`>`))}function Xs(e){return e==null?`NULL`:typeof e==`object`?JSON.stringify(e):String(e)}function Zs(e){let t=e.trimStart();if(t[0]===`{`||t[0]===`[`)try{return JSON.parse(t),`json`}catch{}return t.startsWith(`<?xml`)||t.startsWith(`<`)&&/<\/\w+>/.test(t)?`xml`:t.startsWith(`---`)||/^\w+:\s/m.test(t)?`yaml`:`plaintext`}function Qs(e){let t=e.toLowerCase();return/^(int|serial|bigint|smallint|float|double|decimal|numeric|real|money)/.test(t)?B.Number:/^bool/.test(t)?B.Boolean:B.Text}function $s(e){let t=e.type.toLowerCase();return!!(/^(serial|bigserial|smallserial)/.test(t)||/^(int|bigint|smallint|integer)/.test(t)&&e.defaultValue&&/nextval|identity|auto_increment/i.test(e.defaultValue)||t===`integer`&&e.pk&&!e.defaultValue)}function ec(e,t=200){return e.length>t?e.slice(0,t)+`…`:e}var tc={bgCell:`rgba(251, 191, 36, 0.15)`};function nc(e,t,n,r,i,a){let o=(0,G.useRef)(e);o.current=e;let s=(0,G.useRef)(t);s.current=t;let c=(0,G.useRef)(new Map);return c.current=new Map(n.map(e=>[e.name,e])),{getCellContent:(0,G.useCallback)(([e,t])=>{let n=s.current[e],i=o.current[t];if(!n||!i)return{kind:B.Text,data:``,displayData:``,allowOverlay:!1};let l=c.current.get(n),u=l?Qs(l.type):B.Text,d=l?.pk??!1,f=r?i[r]:void 0,p=typeof f==`string`&&f.startsWith(`__new_`),m=`${f}:${n}`,h=a.current.get(m),g=h===void 0?i[n]:h.newVal,_=h!==void 0;if(d&&p){if(l&&$s(l))return{kind:B.Text,data:``,displayData:`AUTO`,allowOverlay:!1,readonly:!0,themeOverride:{textDark:`#6b7280`}};let e=h===void 0?``:String(h.newVal??``);return{kind:B.Text,data:e,displayData:e||`Enter ID…`,allowOverlay:!0,readonly:!1,themeOverride:e?_?tc:void 0:{textDark:`#9ca3af`}}}if(g==null){let e=p?``:`NULL`;if(p&&!_&&l){let t=l.type.toLowerCase();l.defaultValue?e=l.defaultValue:/^(timestamp|datetime|date)/.test(t)?e=`NOW()`:/^(uuid)/.test(t)&&(e=`gen_random_uuid()`)}return{kind:B.Text,data:``,displayData:e,allowOverlay:!d,readonly:d,themeOverride:_?tc:p||e!==`NULL`?{textDark:`#9ca3af`}:{textDark:`#6b7280`}}}if(u===B.Number&&typeof g==`number`)return{kind:B.Number,data:g,displayData:String(g),allowOverlay:!d,readonly:d,themeOverride:_?tc:void 0};if(u===B.Boolean&&typeof g==`boolean`)return{kind:B.Boolean,data:g,readonly:d,allowOverlay:!1};let v=Xs(g);return{kind:B.Text,data:v,displayData:ec(v),allowOverlay:!d,readonly:d,themeOverride:_?tc:void 0}},[]),onCellEdited:(0,G.useCallback)(([e,t],n)=>{if(!r)return;let a=s.current[e],c=o.current[t];if(!a||!c)return;let l=c[r],u;if(n.kind===B.Text)u=n.data===``?null:n.data;else if(n.kind===B.Number)u=n.data;else if(n.kind===B.Boolean)u=n.data;else return;i(l,a,u)},[r,i])}}var rc={columns:H.empty(),rows:H.empty()};function ic(){let[e,t]=(0,G.useState)(rc);return{gridSelection:e,onGridSelectionChange:(0,G.useCallback)(e=>{t(e)},[]),selectedRowIndices:(0,G.useMemo)(()=>{let t=[];if(e.rows)for(let n of e.rows)if(Array.isArray(n))for(let e=n[0];e<n[1];e++)t.push(e);else t.push(n);return t},[e.rows]),clearSelection:(0,G.useCallback)(()=>{t(rc)},[])}}function ac(e,t,n){let[r,i]=(0,G.useState)(new Map),a=(0,G.useRef)(r);a.current=r;let o=(0,G.useRef)(!1);return{pendingEdits:r,pendingRef:a,addEdit:(0,G.useCallback)((e,t,n)=>{let r=`${e}:${t}`;i(i=>new Map(i).set(r,{pkVal:e,col:t,newVal:n}))},[]),commitAll:(0,G.useCallback)(async()=>{if(!e)return;let r=new Map;for(let n of a.current.values()){let i=String(n.pkVal);i.startsWith(`__new_`)?(r.has(i)||r.set(i,{}),r.get(i)[n.col]=n.newVal):t(e,n.pkVal,n.col,n.newVal)}if(n)for(let e of r.values())await n(e);o.current=!0},[e,t,n]),discardAll:(0,G.useCallback)(()=>{i(new Map),o.current=!1},[]),hasPending:r.size>0,pendingCount:r.size,committedRef:o}}function oc(e,t){let[n,r]=(0,G.useState)(new Set);return{effectiveRows:(0,G.useMemo)(()=>{if(n.size===0||!t)return e;let r=[],i=[];for(let a of e)n.has(String(a[t]??``))?i.push(a):r.push(a);return[...r,...i]},[e,n,t]),pinnedCount:n.size,pinnedPks:n,setPinnedPks:r}}function sc(e){let{displayRows:t,columnOrder:n,schema:r,pkCol:i,connectionId:a,connectionName:o,selectedTable:s,selectedSchema:c,addEdit:l,gridSelection:u,containerRef:d}=e,{openTab:f}=C(T(e=>({openTab:e.openTab}))),[p,m]=(0,G.useState)(null),h=(0,G.useRef)(t);h.current=t;let g=(0,G.useRef)(n);g.current=n;let _=(0,G.useCallback)(e=>{let n=t[e];if(!n)return;let r=i?String(n[i]??``):``,o=s??``,c=JSON.stringify(n,null,2);m({title:r?`Row #${r}${o?` — ${o}`:``}`:`Row — ${o}`,content:c,language:`json`,viewerKey:`${a}:${o}:row:${r}`})},[t,i,s,a]),v=(0,G.useCallback)((e,r)=>{let o=t[e];if(!o)return;let c=n[r];if(!c)return;let l=Xs(o[c]),u=i?String(o[i]??e):String(e),d=s??``;m({title:`${c} #${u}${d?` — ${d}`:``}`,content:l,language:Zs(l),viewerKey:`${a}:${d}:${c}:${u}`})},[t,n,i,s,a]),y=(0,G.useCallback)(()=>{p&&f({type:`editor`,title:p.title,projectId:null,closable:!0,metadata:{inlineContent:p.content,inlineLanguage:p.language,viewerKey:p.viewerKey}})},[f,p]),b=(0,G.useCallback)((e,t)=>{if(!i)return!1;let[n,a]=e;for(let e=0;e<t.length;e++){let o=h.current[a+e];if(!o)continue;let s=o[i];for(let i=0;i<t[e].length;i++){let a=g.current[n+i];if(!a||r.find(e=>e.name===a)?.pk)continue;let o=t[e][i];l(s,a,o===``?null:o)}}return!1},[i,r,l]),x=(0,G.useRef)(r);x.current=r;let S=(0,G.useRef)(u);S.current=u;let w=(0,G.useRef)(l);w.current=l;let E=(0,G.useRef)(i);return E.current=i,(0,G.useEffect)(()=>{if(!d)return;let e=e=>{let t=d.current;if(!t||!t.contains(document.activeElement))return;let n=document.activeElement?.tagName;if(n===`INPUT`||n===`TEXTAREA`)return;let r=E.current;if(!r)return;let i=S.current?.current;if(!i)return;let a=e.clipboardData?.getData(`text/plain`);if(!a)return;let o=a.split(/\r?\n/).filter(e=>e.length>0).map(e=>e.split(` `));if(o.length===0)return;let[s,c]=i.cell;for(let e=0;e<o.length;e++){let t=h.current[c+e];if(!t)continue;let n=t[r];for(let t=0;t<o[e].length;t++){let r=g.current[s+t];if(!r||x.current.find(e=>e.name===r)?.pk)continue;let i=o[e][t];w.current(n,r,i===``?null:i)}}e.preventDefault()};return document.addEventListener(`paste`,e),()=>document.removeEventListener(`paste`,e)},[d]),{previewData:p,setPreviewData:m,openRowPreview:_,openCellPreview:v,openPreviewInTab:y,handlePaste:b,getContextFk:(0,G.useCallback)(e=>e?r.find(t=>t.name===e)?.fk??null:null,[r]),isCellViewable:(0,G.useCallback)((e,t)=>e&&t?Ys(e[t]):!1,[]),openFkTable:(0,G.useCallback)((e,t)=>{t==null||!a||f({type:`database`,title:`${o??`DB`} · ${e.table}`,projectId:null,closable:!0,metadata:{connectionId:a,connectionName:o,tableName:e.table,schemaName:c??`public`,initialSql:`SELECT * FROM "${e.table}" WHERE "${e.column}" = '${String(t).replace(/'/g,`''`)}'`}})},[a,o,c,f])}}function cc({colName:e,bounds:t,isPinned:n,filterValue:r,sortState:i,onFilter:a,onSort:c,onClearSort:l,onTogglePin:u,onClose:p}){let[m,h]=(0,G.useState)(r),g=(0,G.useRef)(null),_=(0,G.useRef)(void 0);(0,G.useEffect)(()=>{let e=e=>{g.current&&!g.current.contains(e.target)&&p()};return document.addEventListener(`mousedown`,e),()=>document.removeEventListener(`mousedown`,e)},[p]),(0,G.useEffect)(()=>{let e=e=>{e.key===`Escape`&&p()};return document.addEventListener(`keydown`,e),()=>document.removeEventListener(`keydown`,e)},[p]);let v=e=>{h(e),clearTimeout(_.current),_.current=setTimeout(()=>a(e),300)},y=Math.min(t.x,window.innerWidth-220-8),x=t.y+t.height+2,S=document.getElementById(`portal`);return S?(0,Je.createPortal)((0,K.jsxs)(`div`,{ref:g,style:{position:`fixed`,left:y,top:x,zIndex:1e4},className:`w-[220px] bg-popover border border-border rounded-md shadow-lg text-xs overflow-hidden`,children:[(0,K.jsx)(`div`,{className:`px-3 py-1.5 border-b border-border text-muted-foreground font-medium truncate`,children:e}),(0,K.jsx)(`div`,{className:`px-2 py-1.5 border-b border-border`,children:(0,K.jsxs)(`div`,{className:`flex items-center gap-1`,children:[(0,K.jsx)(Ne,{className:`size-3 text-muted-foreground shrink-0`}),(0,K.jsx)(`input`,{autoFocus:!0,type:`text`,value:m,onChange:e=>v(e.target.value),placeholder:`Filter (ILIKE)…`,className:`flex-1 bg-transparent outline-none text-foreground placeholder:text-muted-foreground text-xs`}),m&&(0,K.jsx)(`button`,{type:`button`,onClick:()=>v(``),className:`text-muted-foreground hover:text-foreground`,children:(0,K.jsx)(b,{className:`size-3`})})]})}),(0,K.jsxs)(`div`,{className:`py-1`,children:[(0,K.jsxs)(`button`,{type:`button`,onClick:()=>{c(),p()},className:`w-full text-left px-3 py-1.5 hover:bg-muted flex items-center gap-2 text-foreground`,children:[i===`asc`?(0,K.jsx)(o,{className:`size-3`}):(0,K.jsx)(s,{className:`size-3`}),i===`asc`?`Sort Descending`:`Sort Ascending`]}),i&&l&&(0,K.jsxs)(`button`,{type:`button`,onClick:()=>{l(),p()},className:`w-full text-left px-3 py-1.5 hover:bg-muted flex items-center gap-2 text-foreground`,children:[(0,K.jsx)(b,{className:`size-3`}),`Clear Sort`]}),(0,K.jsxs)(`button`,{type:`button`,onClick:()=>{u(),p()},className:`w-full text-left px-3 py-1.5 hover:bg-muted flex items-center gap-2 text-foreground`,children:[n?(0,K.jsx)(f,{className:`size-3`}):(0,K.jsx)(d,{className:`size-3`}),n?`Unpin Column`:`Pin Column`]})]})]}),S):null}function lc({position:e,isPinned:t,onViewRow:n,onViewCell:r,onPinRow:i,onDeleteRow:a,onOpenFkTable:o,fkLabel:s,onClose:c}){let[l,u]=(0,G.useState)(!1),p=(0,G.useRef)(null);(0,G.useEffect)(()=>{let e=e=>{p.current&&!p.current.contains(e.target)&&c()};return document.addEventListener(`mousedown`,e),()=>document.removeEventListener(`mousedown`,e)},[c]),(0,G.useEffect)(()=>{let e=e=>{e.key===`Escape`&&c()};return document.addEventListener(`keydown`,e),()=>document.removeEventListener(`keydown`,e)},[c]);let m=Math.min(e.x,window.innerWidth-180-8),h=Math.min(e.y,window.innerHeight-130-8),v=document.getElementById(`portal`);return v?(0,Je.createPortal)((0,K.jsxs)(`div`,{ref:p,style:{position:`fixed`,left:m,top:h,zIndex:1e4},className:`w-[180px] bg-popover border border-border rounded-md shadow-lg text-xs overflow-hidden py-1`,children:[(0,K.jsxs)(`button`,{type:`button`,onClick:()=>{n(),c()},className:`w-full text-left px-3 py-1.5 hover:bg-muted flex items-center gap-2 text-foreground`,children:[(0,K.jsx)(g,{className:`size-3`}),` View as JSON`]}),r&&(0,K.jsxs)(`button`,{type:`button`,onClick:()=>{r(),c()},className:`w-full text-left px-3 py-1.5 hover:bg-muted flex items-center gap-2 text-foreground`,children:[(0,K.jsx)(g,{className:`size-3`}),` View Cell`]}),o&&(0,K.jsxs)(`button`,{type:`button`,onClick:()=>{o(),c()},className:`w-full text-left px-3 py-1.5 hover:bg-muted flex items-center gap-2 text-blue-400`,children:[(0,K.jsx)(D,{className:`size-3`}),` `,s??`Open Referenced Table`]}),(0,K.jsxs)(`button`,{type:`button`,onClick:()=>{i(),c()},className:`w-full text-left px-3 py-1.5 hover:bg-muted flex items-center gap-2 text-foreground`,children:[t?(0,K.jsx)(f,{className:`size-3`}):(0,K.jsx)(d,{className:`size-3`}),t?`Unpin Row`:`Pin Row`]}),(0,K.jsx)(`div`,{className:`border-t border-border my-0.5`}),l?(0,K.jsxs)(`div`,{className:`px-3 py-1.5 flex items-center gap-2`,children:[(0,K.jsx)(`button`,{type:`button`,onClick:()=>{a(),c()},className:`text-destructive font-medium hover:underline`,children:`Delete?`}),(0,K.jsx)(`button`,{type:`button`,onClick:()=>u(!1),className:`text-muted-foreground hover:underline`,children:`Cancel`})]}):(0,K.jsxs)(`button`,{type:`button`,onClick:()=>u(!0),className:`w-full text-left px-3 py-1.5 hover:bg-muted flex items-center gap-2 text-destructive`,children:[(0,K.jsx)(_,{className:`size-3`}),` Delete Row`]})]}),v):null}function uc({columns:e,onSelect:t,onClose:n,anchorRect:r}){let[i,a]=(0,G.useState)(``),[o,s]=(0,G.useState)(0),c=(0,G.useRef)(null),l=(0,G.useRef)(null),u=i?e.filter(e=>e.toLowerCase().includes(i.toLowerCase())):e;(0,G.useEffect)(()=>{s(0)},[i]),(0,G.useEffect)(()=>{let e=l.current;e&&e.children[o]?.scrollIntoView({block:`nearest`})},[o]),(0,G.useEffect)(()=>{let e=e=>{c.current&&!c.current.contains(e.target)&&n()};return document.addEventListener(`mousedown`,e),()=>document.removeEventListener(`mousedown`,e)},[n]);let d=(0,G.useCallback)(e=>{if(e.key===`Escape`){n();return}if(e.key===`ArrowDown`){e.preventDefault(),s(e=>Math.min(e+1,u.length-1));return}if(e.key===`ArrowUp`){e.preventDefault(),s(e=>Math.max(e-1,0));return}if(e.key===`Enter`){e.preventDefault();let r=u[o];r&&(t(r),n())}},[u,o,t,n]),f=document.getElementById(`portal`);return f?(0,Je.createPortal)((0,K.jsxs)(`div`,{ref:c,style:{position:`fixed`,left:Math.min(r.x,window.innerWidth-216),top:Math.min(r.y,window.innerHeight-308),zIndex:1e4},className:`w-[200px] max-h-[300px] bg-popover border border-border rounded-md shadow-lg text-xs overflow-hidden flex flex-col`,children:[(0,K.jsx)(`div`,{className:`px-2 py-1.5 border-b border-border`,children:(0,K.jsx)(`input`,{autoFocus:!0,value:i,onChange:e=>a(e.target.value),onKeyDown:d,placeholder:`Search columns…`,className:`w-full bg-transparent outline-none text-foreground placeholder:text-muted-foreground text-xs`})}),(0,K.jsxs)(`div`,{ref:l,className:`overflow-y-auto py-1`,children:[u.map((e,r)=>(0,K.jsx)(`button`,{type:`button`,onClick:()=>{t(e),n()},onMouseEnter:()=>s(r),className:`w-full text-left px-3 py-1 truncate text-foreground ${r===o?`bg-muted`:`hover:bg-muted`}`,children:e},e)),u.length===0&&(0,K.jsx)(`div`,{className:`px-3 py-2 text-muted-foreground`,children:`No columns found`})]})]}),f):null}function dc({hasSelection:e,selectedCount:t,onBulkDelete:n,onInsertRow:r,columns:i,selectedRows:a,connectionName:o,searchTerm:s,onSearchChange:c,onColumnJump:l,colSearchOpen:d,onColSearchChange:f}){let[m,g]=(0,G.useState)(!1),[v,y]=(0,G.useState)(!1),x=d??v,S=f??y,C=(0,G.useRef)(null),w=C.current?(()=>{let e=C.current.getBoundingClientRect();return{x:e.left,y:e.bottom+4}})():{x:0,y:0};return(0,K.jsxs)(`div`,{className:`flex items-center gap-2 px-2 py-1 border-b border-border bg-background shrink-0`,children:[e&&(0,K.jsxs)(`div`,{className:`flex items-center gap-1.5 text-xs`,children:[(0,K.jsxs)(`span`,{className:`text-muted-foreground`,children:[t,` selected`]}),n&&(m?(0,K.jsxs)(`span`,{className:`flex items-center gap-1`,children:[(0,K.jsxs)(`button`,{type:`button`,onClick:()=>{n(),g(!1)},className:`text-destructive text-[10px] font-medium hover:underline`,children:[`Delete `,t,`?`]}),(0,K.jsx)(`button`,{type:`button`,onClick:()=>g(!1),className:`text-muted-foreground text-[10px] hover:underline`,children:`Cancel`})]}):(0,K.jsx)(`button`,{type:`button`,onClick:()=>g(!0),className:`p-0.5 text-muted-foreground hover:text-destructive`,children:(0,K.jsx)(_,{className:`size-3`})})),(0,K.jsx)(Xe,{columns:i,rows:a,filename:`${o??`db`}-selected`})]}),(0,K.jsx)(`div`,{className:`flex-1`}),(0,K.jsxs)(`div`,{className:`flex items-center gap-1 text-xs`,children:[(0,K.jsx)(p,{className:`size-3 text-muted-foreground`}),(0,K.jsx)(`input`,{value:s,onChange:e=>c(e.target.value),placeholder:`Search page…`,className:`w-24 bg-transparent outline-none text-foreground placeholder:text-muted-foreground text-xs`}),s&&(0,K.jsx)(`button`,{type:`button`,onClick:()=>c(``),className:`text-muted-foreground hover:text-foreground`,children:(0,K.jsx)(b,{className:`size-3`})})]}),l&&(0,K.jsx)(`button`,{ref:C,type:`button`,onClick:()=>S(!x),className:`p-0.5 rounded text-muted-foreground hover:text-foreground transition-colors`,title:`Jump to column (/)`,children:(0,K.jsx)(u,{className:`size-3.5`})}),r&&(0,K.jsx)(`button`,{type:`button`,onClick:r,className:`p-0.5 rounded text-muted-foreground hover:text-primary transition-colors`,title:`Insert row`,children:(0,K.jsx)(h,{className:`size-3.5`})}),x&&l&&(0,K.jsx)(uc,{columns:i,onSelect:l,onClose:()=>S(!1),anchorRect:w})]})}function fc({pendingCount:e,onSave:t,onDiscard:n}){return e===0?null:(0,K.jsxs)(`div`,{className:`flex items-center gap-2 px-3 py-1.5 border-t border-amber-400/50 bg-amber-50 dark:bg-amber-950/30 shrink-0 text-xs`,children:[(0,K.jsxs)(`span`,{className:`text-amber-700 dark:text-amber-300 font-medium`,children:[e,` pending edit`,e>1?`s`:``]}),(0,K.jsx)(`div`,{className:`flex-1`}),(0,K.jsxs)(`button`,{type:`button`,onClick:n,className:`flex items-center gap-1 px-2 py-0.5 rounded text-muted-foreground hover:text-foreground hover:bg-muted transition-colors`,children:[(0,K.jsx)(w,{className:`size-3`}),` Discard`]}),(0,K.jsxs)(`button`,{type:`button`,onClick:t,className:`flex items-center gap-1 px-2 py-0.5 rounded bg-primary text-primary-foreground hover:bg-primary/90 transition-colors`,children:[(0,K.jsx)(Pe,{className:`size-3`}),` Save`,(0,K.jsx)(`kbd`,{className:`ml-1 text-[9px] opacity-70`,children:`⌘↵`})]})]})}function pc({total:e,page:t,totalPages:n,onPageChange:r}){return(0,K.jsxs)(`div`,{className:`flex items-center justify-between px-3 py-1.5 border-t border-border bg-background shrink-0 text-xs text-muted-foreground`,children:[(0,K.jsxs)(`span`,{children:[e.toLocaleString(),` rows`]}),(0,K.jsxs)(`div`,{className:`hidden md:flex items-center gap-2 text-[10px] text-muted-foreground/50`,children:[(0,K.jsxs)(`span`,{children:[(0,K.jsx)(`kbd`,{className:`px-1 py-0.5 rounded bg-muted text-[9px]`,children:`/`}),` columns`]}),(0,K.jsxs)(`span`,{children:[(0,K.jsxs)(`kbd`,{className:`px-1 py-0.5 rounded bg-muted text-[9px]`,children:[`⌘`,`A`]}),` select all`]}),(0,K.jsxs)(`span`,{children:[(0,K.jsxs)(`kbd`,{className:`px-1 py-0.5 rounded bg-muted text-[9px]`,children:[`⌘`,`C`]}),` copy`]})]}),(0,K.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,K.jsx)(`button`,{type:`button`,disabled:t<=1,onClick:()=>r(t-1),className:`p-0.5 rounded hover:bg-muted disabled:opacity-30`,children:(0,K.jsx)(c,{className:`size-3.5`})}),(0,K.jsxs)(`span`,{children:[t,` / `,n]}),(0,K.jsx)(`button`,{type:`button`,disabled:t>=n,onClick:()=>r(t+1),className:`p-0.5 rounded hover:bg-muted disabled:opacity-30`,children:(0,K.jsx)(l,{className:`size-3.5`})})]})]})}function mc({data:e,onClose:t,onOpenInTab:n}){let r=je(),[i,a]=(0,G.useState)(!0),[o,s]=(0,G.useState)(e.content),[c,l]=(0,G.useState)(!1),u=e.language===`json`||e.language===`xml`,d=(0,G.useRef)(e.title);d.current!==e.title&&(d.current=e.title,s(e.content),l(!1));let f=(0,G.useCallback)(()=>{if(c)s(e.content),l(!1);else if(e.language===`json`)try{s(JSON.stringify(JSON.parse(e.content.trim()),null,2)),l(!0)}catch{}else if(e.language===`xml`){let t=0;s(e.content.trim().replace(/>\s*</g,`>
134
134
  <`).split(`
135
135
  `).map(e=>{let n=e.trim();n.startsWith(`</`)&&(t=Math.max(0,t-1));let r=` `.repeat(t)+n;return n.startsWith(`<`)&&!n.startsWith(`</`)&&!n.endsWith(`/>`)&&!n.startsWith(`<?`)&&t++,r}).join(`
136
- `)),l(!0)}},[c,e.content,e.language]),[p,m]=(0,G.useState)(200),h=(0,G.useCallback)(e=>{e.preventDefault();let t=e.clientY,n=p,r=e=>m(Math.max(80,n+(t-e.clientY))),i=()=>{document.removeEventListener(`mousemove`,r),document.removeEventListener(`mouseup`,i)};document.addEventListener(`mousemove`,r),document.addEventListener(`mouseup`,i)},[p]);return(0,K.jsxs)(`div`,{className:`shrink-0 border-t border-border flex flex-col`,style:{height:p},children:[(0,K.jsx)(`div`,{onMouseDown:h,className:`shrink-0 h-1.5 cursor-row-resize bg-border/50 hover:bg-primary/30 flex items-center justify-center transition-colors`,children:(0,K.jsx)(O,{className:`size-3 text-muted-foreground/50`})}),(0,K.jsxs)(`div`,{className:`flex items-center gap-1 px-2 py-1 bg-muted/50 border-b border-border shrink-0`,children:[(0,K.jsx)(g,{className:`size-3 text-muted-foreground`}),(0,K.jsx)(`span`,{className:`text-xs font-medium text-foreground truncate flex-1`,children:e.title}),u&&(0,K.jsx)(`button`,{type:`button`,onClick:f,title:c?`Raw`:`Beautify`,className:`p-0.5 rounded transition-colors ${c?`text-primary`:`text-muted-foreground hover:text-foreground`}`,children:(0,K.jsx)(v,{className:`size-3`})}),(0,K.jsx)(`button`,{type:`button`,onClick:()=>a(!i),title:i?`No wrap`:`Word wrap`,className:`p-0.5 rounded transition-colors ${i?`text-primary`:`text-muted-foreground hover:text-foreground`}`,children:(0,K.jsx)(y,{className:`size-3`})}),(0,K.jsxs)(`button`,{type:`button`,onClick:n,title:`Open in new tab`,className:`flex items-center gap-1 px-1.5 py-0.5 rounded text-[10px] text-muted-foreground hover:text-foreground hover:bg-muted transition-colors`,children:[(0,K.jsx)(D,{className:`size-3`}),(0,K.jsx)(`span`,{className:`hidden sm:inline`,children:`Open in Tab`})]}),(0,K.jsx)(`button`,{type:`button`,onClick:t,title:`Close preview (Esc)`,className:`p-0.5 rounded text-muted-foreground hover:text-foreground transition-colors`,children:(0,K.jsx)(b,{className:`size-3`})})]}),(0,K.jsx)(`div`,{className:`flex-1 min-h-0`,children:(0,K.jsx)(Ae,{height:`100%`,language:e.language===`plaintext`?void 0:e.language,value:o,theme:r,options:{readOnly:!0,minimap:{enabled:!1},scrollBeyondLastLine:!1,wordWrap:i?`on`:`off`,lineNumbers:`on`,fontSize:12,folding:!0,bracketPairColorization:{enabled:!0},domReadOnly:!0,contextmenu:!1,overviewRulerLanes:0},loading:(0,K.jsx)(w,{className:`size-4 animate-spin text-muted-foreground`})})})]})}var hc={sortAsc:e=>`<svg viewBox="0 0 16 16" fill="${e.fgColor}"><path d="M8 4l4 6H4z"/></svg>`,sortDesc:e=>`<svg viewBox="0 0 16 16" fill="${e.fgColor}"><path d="M8 12l4-6H4z"/></svg>`,headerFk:()=>`<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16" fill="none" stroke="#3b82f6" stroke-width="1.5" stroke-linecap="round"><path d="M6 4.5H4.5a2.5 2.5 0 000 5H6M10 4.5h1.5a2.5 2.5 0 010 5H10M5 7h6"/></svg>`};function gc(e){let{columns:t,rows:n,total:r,limit:i,schema:a,loading:o,page:s,onPageChange:c,onCellUpdate:l,onRowDelete:u,onBulkDelete:d,onInsertRow:f,orderBy:p,orderDir:m,onToggleSort:h,onClearSort:g,columnFilters:_={},onColumnFilter:v,connectionId:y,selectedTable:b,selectedSchema:x,connectionName:S}=e,C=Ks(),T=(0,G.useRef)(null),E=(0,G.useRef)(null),D=(0,G.useMemo)(()=>{let e=new Set(a.map(e=>e.name));return t.filter(t=>e.has(t))},[t,a]),[O,k]=(0,G.useState)(new Set),[ee,te]=(0,G.useState)(new Map),[A,ne]=(0,G.useState)(null),[j,re]=(0,G.useState)(null),[ie,ae]=(0,G.useState)(``),[M,oe]=(0,G.useState)([]),N=(0,G.useMemo)(()=>a.find(e=>e.pk)?.name??a.find(e=>e.name.toLowerCase()===`id`)?.name??null,[a]),{effectiveRows:P,pinnedCount:se,pinnedPks:ce,setPinnedPks:le}=oc(n,N),F=(0,G.useMemo)(()=>{if(se===0)return[...P,...M];let e=P.slice(0,P.length-se),t=P.slice(P.length-se);return[...e,...M,...t]},[P,M,se]),I=(0,G.useMemo)(()=>{if(!ie.trim())return F;let e=ie.toLowerCase();return F.filter(t=>D.some(n=>String(t[n]??``).toLowerCase().includes(e)))},[F,D,ie]),ue=(0,G.useMemo)(()=>se===0||!N?0:ie.trim()?I.filter(e=>ce.has(String(e[N]??``))).length:se,[se,N,ie,I,ce]),{pendingRef:de,addEdit:fe,commitAll:pe,discardAll:me,hasPending:he,pendingCount:ge,committedRef:_e}=ac(N,l,f),{columns:ve,freezeColumns:L,columnOrder:ye}=Js(a,D,O,ee,I,p,m),{getCellContent:R,onCellEdited:be}=nc(I,ye,a,N,fe,de),{gridSelection:z,onGridSelectionChange:xe,selectedRowIndices:B,clearSelection:Se}=ic(),{previewData:V,setPreviewData:Ce,openRowPreview:we,openCellPreview:H,openPreviewInTab:Te,handlePaste:Ee,getContextFk:De,isCellViewable:U,openFkTable:Oe}=sc({displayRows:I,columnOrder:ye,schema:a,pkCol:N,connectionId:y,connectionName:S,selectedTable:b,selectedSchema:x,addEdit:fe,gridSelection:z,containerRef:E});(0,G.useEffect)(()=>{_e.current&&(_e.current=!1,me(),oe([]))},[n]);let ke=(0,G.useCallback)((e,t)=>{te(n=>new Map(n).set(e.id??e.title,t))},[]),W=(0,G.useCallback)((e,t)=>{let n=ye[e];n&&ne({colName:n,bounds:t})},[ye]),Ae=(0,G.useCallback)(([e,t],n)=>{n.preventDefault(),re({position:{x:n.bounds.x+n.localEventX,y:n.bounds.y+n.localEventY},rowIdx:t,colIdx:e})},[]),je=(0,G.useCallback)(e=>{k(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n})},[]),Me=(0,G.useCallback)(e=>{if(!N)return;let t=I[e];if(!t)return;let n=String(t[N]??``);le(e=>{let t=new Set(e);return t.has(n)?t.delete(n):t.add(n),t})},[N,I,le]),Ne=(0,G.useCallback)(e=>{if(ce.size===0||!N)return;let t=I[e];if(t&&ce.has(String(t[N]??``)))return{bgCell:C.bgCellMedium??C.bgHeader}},[ce,N,I,C]),Pe=(0,G.useCallback)(()=>{!N||!d||(d(N,B.map(e=>I[e]?.[N]).filter(e=>e!=null)),Se())},[N,d,B,I,Se]),[Fe,Ie]=(0,G.useState)(!1),Le=(0,G.useCallback)(e=>{if(e.key===`Escape`){Ce(null),Ie(!1);return}(e.metaKey||e.ctrlKey)&&e.key===`Enter`&&he&&(e.preventDefault(),pe());let t=e.target?.tagName;e.key===`/`&&t!==`INPUT`&&t!==`TEXTAREA`&&(e.preventDefault(),Ie(!0))},[he,pe]),Re=(0,G.useCallback)(()=>{!N||!f||oe(e=>[...e,{[N]:`__new_${Date.now()}`}])},[N,f]),ze=(0,G.useCallback)(e=>{let t=ye.indexOf(e);t>=0&&T.current?.scrollTo&&T.current.scrollTo(t,0)},[ye]),Be=j?I[j.rowIdx]:null,Ve=Be&&N?String(Be[N]??``):``,He=j?ye[j.colIdx]:null,Ue=U(Be??null,He??null),We=De(He??null),Ge=Be&&He?Be[He]:null;return D.length?(0,K.jsxs)(`div`,{ref:E,className:`flex flex-col h-full overflow-hidden relative`,tabIndex:0,onKeyDown:Le,children:[(0,K.jsx)(dc,{hasSelection:B.length>0,selectedCount:B.length,onBulkDelete:d&&N?Pe:void 0,onInsertRow:f&&N?Re:void 0,columns:D,selectedRows:B.map(e=>I[e]).filter(Boolean),connectionName:S,searchTerm:ie,onSearchChange:ae,onColumnJump:ze,colSearchOpen:Fe,onColSearchChange:Ie}),o&&(0,K.jsx)(`div`,{className:`absolute inset-0 z-30 flex items-center justify-center bg-background/60`,children:(0,K.jsx)(w,{className:`size-5 animate-spin text-primary`})}),(0,K.jsx)(`div`,{className:`flex-1 min-h-0`,children:(0,K.jsx)(Hs,{ref:T,columns:ve,rows:I.length,getCellContent:R,getCellsForSelection:!0,onCellEdited:be,onPaste:Ee,theme:C,freezeColumns:L,freezeTrailingRows:ue,rowMarkers:N?`checkbox-visible`:`number`,gridSelection:z,onGridSelectionChange:xe,onColumnResize:ke,onHeaderMenuClick:W,onCellContextMenu:Ae,getRowThemeOverride:Ne,trailingRowOptions:f&&N?{sticky:!0,tint:!0}:void 0,onRowAppended:f?Re:void 0,headerIcons:hc,smoothScrollX:!0,smoothScrollY:!0,width:`100%`,height:`100%`})}),he&&(0,K.jsx)(fc,{pendingCount:ge,onSave:pe,onDiscard:()=>{me(),oe([])}}),V&&(0,K.jsx)(mc,{data:V,onClose:()=>Ce(null),onOpenInTab:Te}),(0,K.jsx)(pc,{total:r,page:s,totalPages:Math.ceil(r/i)||1,onPageChange:c}),A&&(0,K.jsx)(cc,{colName:A.colName,bounds:A.bounds,isPinned:O.has(A.colName),filterValue:_[A.colName]??``,sortState:p===A.colName?m===`ASC`?`asc`:`desc`:null,onFilter:e=>{if(!v)return;let t={..._};e?t[A.colName]=e:delete t[A.colName],v(t)},onSort:()=>{h&&h(A.colName)},onClearSort:g,onTogglePin:()=>je(A.colName),onClose:()=>ne(null)}),j&&Be&&(0,K.jsx)(lc,{position:j.position,isPinned:ce.has(Ve),onViewRow:()=>we(j.rowIdx),onViewCell:Ue?()=>H(j.rowIdx,j.colIdx):void 0,onPinRow:()=>Me(j.rowIdx),onDeleteRow:()=>{N&&u&&Be&&u(N,Be[N])},onOpenFkTable:We&&Ge!=null&&y?()=>Oe(We,Ge):void 0,fkLabel:We?`Open ${We.table}.${We.column}`:void 0,onClose:()=>re(null)})]}):(0,K.jsx)(`div`,{className:`flex items-center justify-center h-full text-xs text-muted-foreground`,children:o?(0,K.jsx)(w,{className:`size-4 animate-spin`}):`Select a table`})}export{Ke as i,Xe as n,qe as r,gc as t};
136
+ `)),l(!0)}},[c,e.content,e.language]),[p,m]=(0,G.useState)(200),h=(0,G.useCallback)(e=>{e.preventDefault();let t=e.clientY,n=p,r=e=>m(Math.max(80,n+(t-e.clientY))),i=()=>{document.removeEventListener(`mousemove`,r),document.removeEventListener(`mouseup`,i)};document.addEventListener(`mousemove`,r),document.addEventListener(`mouseup`,i)},[p]);return(0,K.jsxs)(`div`,{className:`shrink-0 border-t border-border flex flex-col`,style:{height:p},children:[(0,K.jsx)(`div`,{onMouseDown:h,className:`shrink-0 h-1.5 cursor-row-resize bg-border/50 hover:bg-primary/30 flex items-center justify-center transition-colors`,children:(0,K.jsx)(O,{className:`size-3 text-muted-foreground/50`})}),(0,K.jsxs)(`div`,{className:`flex items-center gap-1 px-2 py-1 bg-muted/50 border-b border-border shrink-0`,children:[(0,K.jsx)(g,{className:`size-3 text-muted-foreground`}),(0,K.jsx)(`span`,{className:`text-xs font-medium text-foreground truncate flex-1`,children:e.title}),u&&(0,K.jsx)(`button`,{type:`button`,onClick:f,title:c?`Raw`:`Beautify`,className:`p-0.5 rounded transition-colors ${c?`text-primary`:`text-muted-foreground hover:text-foreground`}`,children:(0,K.jsx)(v,{className:`size-3`})}),(0,K.jsx)(`button`,{type:`button`,onClick:()=>a(!i),title:i?`No wrap`:`Word wrap`,className:`p-0.5 rounded transition-colors ${i?`text-primary`:`text-muted-foreground hover:text-foreground`}`,children:(0,K.jsx)(y,{className:`size-3`})}),(0,K.jsxs)(`button`,{type:`button`,onClick:n,title:`Open in new tab`,className:`flex items-center gap-1 px-1.5 py-0.5 rounded text-[10px] text-muted-foreground hover:text-foreground hover:bg-muted transition-colors`,children:[(0,K.jsx)(D,{className:`size-3`}),(0,K.jsx)(`span`,{className:`hidden sm:inline`,children:`Open in Tab`})]}),(0,K.jsx)(`button`,{type:`button`,onClick:t,title:`Close preview (Esc)`,className:`p-0.5 rounded text-muted-foreground hover:text-foreground transition-colors`,children:(0,K.jsx)(b,{className:`size-3`})})]}),(0,K.jsx)(`div`,{className:`flex-1 min-h-0`,children:(0,K.jsx)(Ae,{height:`100%`,language:e.language===`plaintext`?void 0:e.language,value:o,theme:r,options:{readOnly:!0,minimap:{enabled:!1},scrollBeyondLastLine:!1,wordWrap:i?`on`:`off`,lineNumbers:`on`,fontSize:12,folding:!0,bracketPairColorization:{enabled:!0},domReadOnly:!0,contextmenu:!1,overviewRulerLanes:0},loading:(0,K.jsx)(E,{className:`size-4 animate-spin text-muted-foreground`})})})]})}var hc={sortAsc:e=>`<svg viewBox="0 0 16 16" fill="${e.fgColor}"><path d="M8 4l4 6H4z"/></svg>`,sortDesc:e=>`<svg viewBox="0 0 16 16" fill="${e.fgColor}"><path d="M8 12l4-6H4z"/></svg>`,headerFk:()=>`<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16" fill="none" stroke="#3b82f6" stroke-width="1.5" stroke-linecap="round"><path d="M6 4.5H4.5a2.5 2.5 0 000 5H6M10 4.5h1.5a2.5 2.5 0 010 5H10M5 7h6"/></svg>`};function gc(e){let{columns:t,rows:n,total:r,limit:i,schema:a,loading:o,page:s,onPageChange:c,onCellUpdate:l,onRowDelete:u,onBulkDelete:d,onInsertRow:f,orderBy:p,orderDir:m,onToggleSort:h,onClearSort:g,columnFilters:_={},onColumnFilter:v,connectionId:y,selectedTable:b,selectedSchema:x,connectionName:S}=e,C=Ks(),w=(0,G.useRef)(null),T=(0,G.useRef)(null),D=(0,G.useMemo)(()=>{let e=new Set(a.map(e=>e.name));return t.filter(t=>e.has(t))},[t,a]),[O,k]=(0,G.useState)(new Set),[ee,te]=(0,G.useState)(new Map),[A,ne]=(0,G.useState)(null),[j,re]=(0,G.useState)(null),[ie,ae]=(0,G.useState)(``),[M,oe]=(0,G.useState)([]),N=(0,G.useMemo)(()=>a.find(e=>e.pk)?.name??a.find(e=>e.name.toLowerCase()===`id`)?.name??null,[a]),{effectiveRows:P,pinnedCount:se,pinnedPks:ce,setPinnedPks:le}=oc(n,N),F=(0,G.useMemo)(()=>{if(se===0)return[...P,...M];let e=P.slice(0,P.length-se),t=P.slice(P.length-se);return[...e,...M,...t]},[P,M,se]),I=(0,G.useMemo)(()=>{if(!ie.trim())return F;let e=ie.toLowerCase();return F.filter(t=>D.some(n=>String(t[n]??``).toLowerCase().includes(e)))},[F,D,ie]),ue=(0,G.useMemo)(()=>se===0||!N?0:ie.trim()?I.filter(e=>ce.has(String(e[N]??``))).length:se,[se,N,ie,I,ce]),{pendingRef:de,addEdit:fe,commitAll:pe,discardAll:me,hasPending:he,pendingCount:ge,committedRef:_e}=ac(N,l,f),{columns:ve,freezeColumns:L,columnOrder:ye}=Js(a,D,O,ee,I,p,m),{getCellContent:R,onCellEdited:be}=nc(I,ye,a,N,fe,de),{gridSelection:z,onGridSelectionChange:xe,selectedRowIndices:B,clearSelection:Se}=ic(),{previewData:V,setPreviewData:Ce,openRowPreview:we,openCellPreview:H,openPreviewInTab:Te,handlePaste:Ee,getContextFk:De,isCellViewable:U,openFkTable:Oe}=sc({displayRows:I,columnOrder:ye,schema:a,pkCol:N,connectionId:y,connectionName:S,selectedTable:b,selectedSchema:x,addEdit:fe,gridSelection:z,containerRef:T});(0,G.useEffect)(()=>{_e.current&&(_e.current=!1,me(),oe([]))},[n]);let ke=(0,G.useCallback)((e,t)=>{te(n=>new Map(n).set(e.id??e.title,t))},[]),W=(0,G.useCallback)((e,t)=>{let n=ye[e];n&&ne({colName:n,bounds:t})},[ye]),Ae=(0,G.useCallback)(([e,t],n)=>{n.preventDefault(),re({position:{x:n.bounds.x+n.localEventX,y:n.bounds.y+n.localEventY},rowIdx:t,colIdx:e})},[]),je=(0,G.useCallback)(e=>{k(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n})},[]),Me=(0,G.useCallback)(e=>{if(!N)return;let t=I[e];if(!t)return;let n=String(t[N]??``);le(e=>{let t=new Set(e);return t.has(n)?t.delete(n):t.add(n),t})},[N,I,le]),Ne=(0,G.useCallback)(e=>{if(ce.size===0||!N)return;let t=I[e];if(t&&ce.has(String(t[N]??``)))return{bgCell:C.bgCellMedium??C.bgHeader}},[ce,N,I,C]),Pe=(0,G.useCallback)(()=>{!N||!d||(d(N,B.map(e=>I[e]?.[N]).filter(e=>e!=null)),Se())},[N,d,B,I,Se]),[Fe,Ie]=(0,G.useState)(!1),Le=(0,G.useCallback)(e=>{if(e.key===`Escape`){Ce(null),Ie(!1);return}(e.metaKey||e.ctrlKey)&&e.key===`Enter`&&he&&(e.preventDefault(),pe());let t=e.target?.tagName;e.key===`/`&&t!==`INPUT`&&t!==`TEXTAREA`&&(e.preventDefault(),Ie(!0))},[he,pe]),Re=(0,G.useCallback)(()=>{!N||!f||oe(e=>[...e,{[N]:`__new_${Date.now()}`}])},[N,f]),ze=(0,G.useCallback)(e=>{let t=ye.indexOf(e);t>=0&&w.current?.scrollTo&&w.current.scrollTo(t,0)},[ye]),Be=j?I[j.rowIdx]:null,Ve=Be&&N?String(Be[N]??``):``,He=j?ye[j.colIdx]:null,Ue=U(Be??null,He??null),We=De(He??null),Ge=Be&&He?Be[He]:null;return D.length?(0,K.jsxs)(`div`,{ref:T,className:`flex flex-col h-full overflow-hidden relative`,tabIndex:0,onKeyDown:Le,children:[(0,K.jsx)(dc,{hasSelection:B.length>0,selectedCount:B.length,onBulkDelete:d&&N?Pe:void 0,onInsertRow:f&&N?Re:void 0,columns:D,selectedRows:B.map(e=>I[e]).filter(Boolean),connectionName:S,searchTerm:ie,onSearchChange:ae,onColumnJump:ze,colSearchOpen:Fe,onColSearchChange:Ie}),o&&(0,K.jsx)(`div`,{className:`absolute inset-0 z-30 flex items-center justify-center bg-background/60`,children:(0,K.jsx)(E,{className:`size-5 animate-spin text-primary`})}),(0,K.jsx)(`div`,{className:`flex-1 min-h-0`,children:(0,K.jsx)(Hs,{ref:w,columns:ve,rows:I.length,getCellContent:R,getCellsForSelection:!0,onCellEdited:be,onPaste:Ee,theme:C,freezeColumns:L,freezeTrailingRows:ue,rowMarkers:N?`checkbox-visible`:`number`,gridSelection:z,onGridSelectionChange:xe,onColumnResize:ke,onHeaderMenuClick:W,onCellContextMenu:Ae,getRowThemeOverride:Ne,trailingRowOptions:f&&N?{sticky:!0,tint:!0}:void 0,onRowAppended:f?Re:void 0,headerIcons:hc,smoothScrollX:!0,smoothScrollY:!0,width:`100%`,height:`100%`})}),he&&(0,K.jsx)(fc,{pendingCount:ge,onSave:pe,onDiscard:()=>{me(),oe([])}}),V&&(0,K.jsx)(mc,{data:V,onClose:()=>Ce(null),onOpenInTab:Te}),(0,K.jsx)(pc,{total:r,page:s,totalPages:Math.ceil(r/i)||1,onPageChange:c}),A&&(0,K.jsx)(cc,{colName:A.colName,bounds:A.bounds,isPinned:O.has(A.colName),filterValue:_[A.colName]??``,sortState:p===A.colName?m===`ASC`?`asc`:`desc`:null,onFilter:e=>{if(!v)return;let t={..._};e?t[A.colName]=e:delete t[A.colName],v(t)},onSort:()=>{h&&h(A.colName)},onClearSort:g,onTogglePin:()=>je(A.colName),onClose:()=>ne(null)}),j&&Be&&(0,K.jsx)(lc,{position:j.position,isPinned:ce.has(Ve),onViewRow:()=>we(j.rowIdx),onViewCell:Ue?()=>H(j.rowIdx,j.colIdx):void 0,onPinRow:()=>Me(j.rowIdx),onDeleteRow:()=>{N&&u&&Be&&u(N,Be[N])},onOpenFkTable:We&&Ge!=null&&y?()=>Oe(We,Ge):void 0,fkLabel:We?`Open ${We.table}.${We.column}`:void 0,onClose:()=>re(null)})]}):(0,K.jsx)(`div`,{className:`flex items-center justify-center h-full text-xs text-muted-foreground`,children:o?(0,K.jsx)(E,{className:`size-4 animate-spin`}):`Select a table`})}export{Ke as i,Xe as n,qe as r,gc as t};
@@ -0,0 +1 @@
1
+ import{b as e}from"./vendor-markdown-0Mxgxy0L.js";import{t}from"./file-exclamation-point-B__2Hrd6.js";import"./api-client-DiZgVOok.js";import{et as n}from"./index-Di7q5I27.js";import{t as r}from"./use-blob-url-DCUIEzjB.js";var i=e();function a({filePath:e,projectName:a}){let{blobUrl:o,error:s}=r(e,a);return s?(0,i.jsxs)(`div`,{className:`flex flex-col items-center justify-center h-full gap-3 text-text-secondary`,children:[(0,i.jsx)(t,{className:`size-10 text-text-subtle`}),(0,i.jsx)(`p`,{className:`text-sm`,children:`Failed to load image.`})]}):o?(0,i.jsx)(`div`,{className:`flex items-center justify-center h-full p-4 bg-surface overflow-auto`,children:(0,i.jsx)(`img`,{src:o,alt:e,className:`max-w-full max-h-full object-contain`})}):(0,i.jsx)(`div`,{className:`flex items-center justify-center h-full`,children:(0,i.jsx)(n,{className:`size-5 animate-spin text-text-subtle`})})}export{a as ImagePreview};