admin08077/Githubgemini
0
1import{r as p,j as e}from"./react-CIdJ77ke.js";import{V as g,J as d}from"./index-CX7Qxd1D.js";import{d as x}from"./fileUtils-DLahR3l0.js";import"./@braintree-DzxiOROe.js";import"./react-dom-R9L8nDNe.js";import"./scheduler-CoSDG3-6.js";import"./@google-CcUHq7Ay.js";import"./idb-Dob3nYDb.js";import"./marked-BrGMJkBT.js";import"./mermaid-KwKZWwy0.js";import"./dayjs-CeEF-NGT.js";import"./d3-transition-CiCB8KJE.js";import"./d3-timer-DdKHrDhs.js";import"./d3-dispatch-kxCwF96_.js";import"./d3-interpolate-CtIaNujU.js";import"./d3-color-amxIadob.js";import"./d3-selection-C52G7wmG.js";import"./d3-ease-DRPgKoYJ.js";import"./d3-zoom-BYoC3mS3.js";import"./dompurify-J5RlrwSC.js";import"./dagre-d3-es-CTpFWynZ.js";import"./lodash-es-Dt6r0yiR.js";import"./d3-shape-CX8xTzfR.js";import"./d3-path-CimkQT29.js";import"./d3-fetch-BOsq7VnW.js";import"./khroma-DUX6PT6k.js";import"./uuid-DhYbOkY1.js";import"./d3-scale-DRZz3QW5.js";import"./internmap-BkD7Hj8s.js";import"./d3-array-DGRYoJHh.js";import"./d3-format-CzD4bSOQ.js";import"./d3-time-format-CUNN4Ell.js";import"./d3-time-6cSPyVSY.js";import"./d3-axis-DSWTncID.js";import"./elkjs-oKFFZvz7.js";import"./cytoscape-DtBltrT8.js";import"./cytoscape-cose-bilkent-Cgr1thlj.js";import"./cose-base-CwCxnKwh.js";import"./layout-base-CMXQqlmj.js";import"./d3-sankey-DgqkLiUE.js";import"./d3-scale-chromatic-B-NsZVaP.js";import"./ts-dedent-DrFu-skq.js";import"./stylis-D5iaQeiq.js";import"./mdast-util-from-markdown-CLAsVoWb.js";import"./micromark-CTBPIv-_.js";import"./micromark-util-combine-extensions-Bka6Sc1c.js";import"./micromark-util-chunked-DrRIdSP-.js";import"./micromark-factory-space-x2vfxbz5.js";import"./micromark-util-character-Bcm1tP9o.js";import"./micromark-core-commonmark-AH8VCgT7.js";import"./micromark-util-classify-character-Cq7Fg3xE.js";import"./micromark-util-resolve-all-PQCKh0dx.js";import"./decode-named-character-reference-C3-224fz.js";import"./micromark-util-subtokenize-QwsxNXk2.js";import"./micromark-factory-destination-CypD_wgM.js";import"./micromark-factory-label-CRHH4ZHP.js";import"./micromark-factory-title-B7kCBvC9.js";import"./micromark-factory-whitespace-B322EA6O.js";import"./micromark-util-normalize-identifier-C9ANKk3v.js";import"./micromark-util-html-tag-name-DbKNfynz.js";import"./micromark-util-decode-numeric-character-reference-DRnCnno4.js";import"./micromark-util-decode-string-DJl8Y_PO.js";import"./unist-util-stringify-position-Ch_qCilz.js";import"./mdast-util-to-string-C_aolqmU.js";import"./jszip-CFFhfFtd.js";import"./octokit-B6bKu3NB.js";import"./@octokit-MBEWYTsi.js";import"./bottleneck-D_vuF9V7.js";import"./universal-user-agent-CLgqIJsR.js";import"./before-after-hook-y8XtM9xW.js";import"./fast-content-type-parse-3SwieiST.js";const h=s=>s.map(n=>{const o=n.columns.map(i=>` "${i.name}" ${i.type.toUpperCase()}`).join(`,2`);return`CREATE TABLE "${n.name}" (3${o}4);`}).join(`5 6`),Xe=()=>{const[s,n]=p.useState([{id:1,name:"users",columns:[{id:1,name:"id",type:"INTEGER PRIMARY KEY"},{id:2,name:"username",type:"VARCHAR(255)"}],x:50,y:50},{id:2,name:"posts",columns:[{id:1,name:"id",type:"INTEGER PRIMARY KEY"},{id:2,name:"user_id",type:"INTEGER"},{id:3,name:"content",type:"TEXT"}],x:300,y:100}]),[o,i]=p.useState(null),m=p.useRef(null),u=(r,t)=>{const c=r.currentTarget.getBoundingClientRect();i({id:t,offsetX:r.clientX-c.left,offsetY:r.clientY-c.top})},f=r=>{if(!o||!m.current)return;const t=m.current.getBoundingClientRect();n(s.map(a=>a.id===o.id?{...a,x:r.clientX-o.offsetX-t.left+m.current.scrollLeft,y:r.clientY-o.offsetY-t.top+m.current.scrollTop}:a))},l=()=>i(null);return e.jsxs("div",{className:"h-full flex flex-col p-4 sm:p-6 lg:p-8 text-text-primary",children:[e.jsxs("header",{className:"mb-6",children:[e.jsxs("h1",{className:"text-3xl font-bold flex items-center",children:[e.jsx(g,{}),e.jsx("span",{className:"ml-3",children:"Schema Designer"})]}),e.jsx("p",{className:"text-text-secondary mt-1",children:"Visually design your database schema with drag-and-drop."})]}),e.jsxs("div",{className:"flex-grow flex gap-6 min-h-0",children:[e.jsx("main",{ref:m,className:"flex-grow relative bg-background rounded-lg border-2 border-dashed border-border overflow-auto",onMouseMove:f,onMouseUp:l,onMouseLeave:l,children:s.map(r=>e.jsxs("div",{className:`absolute w-64 bg-surface rounded-lg shadow-xl border cursor-grab active:cursor-grabbing ${o?.id===r.id?"border-primary":"border-border"}`,style:{top:r.y,left:r.x},onMouseDown:t=>u(t,r.id),children:[e.jsx("h3",{className:"font-bold text-primary text-lg p-2 bg-gray-50 rounded-t-lg border-b border-border",children:r.name}),e.jsx("div",{className:"p-2 space-y-1 font-mono text-xs",children:r.columns.map(t=>e.jsxs("div",{className:"flex justify-between items-center",children:[e.jsx("span",{className:"text-text-primary",children:t.name}),e.jsx("span",{className:"text-text-secondary",children:t.type})]},t.id))})]},r.id))}),e.jsxs("aside",{className:"w-80 flex-shrink-0 flex flex-col gap-4",children:[e.jsxs("div",{className:"flex flex-col gap-2",children:[e.jsxs("button",{onClick:()=>x(JSON.stringify(s,null,2),"schema.json","application/json"),className:"flex-1 text-sm py-2 bg-gray-100 border border-border rounded-md flex items-center justify-center gap-2 hover:bg-gray-200",children:[e.jsx(d,{className:"w-4 h-4"})," Download JSON"]}),e.jsxs("button",{onClick:()=>x(h(s),"schema.sql","application/sql"),className:"btn-primary flex-1 text-sm py-2 flex items-center justify-center gap-2",children:[e.jsx(d,{className:"w-4 h-4"})," Download SQL"]})]}),e.jsxs("div",{className:"flex-grow bg-surface border border-border p-4 rounded-lg overflow-y-auto",children:[e.jsx("h3",{className:"font-bold mb-2",children:"Editor"}),e.jsx("p",{className:"text-xs text-text-secondary",children:"Schema editing coming soon!"})]})]})]})]})};export{Xe as SchemaDesigner};7//# sourceMappingURL=SchemaDesigner-CSx-Y31t.js.map8 