@hienlh/ppm 0.8.83 → 0.8.85
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.
- package/CHANGELOG.md +17 -0
- package/dist/web/assets/api-settings-Bx1GaNmQ.js +1 -0
- package/dist/web/assets/browser-tab-DaHGm_0i.js +1 -0
- package/dist/web/assets/chat-tab-BDYE0KHF.js +8 -0
- package/dist/web/assets/code-editor-DTA3c9Y8.js +2 -0
- package/dist/web/assets/database-viewer-DXk79Nel.js +1 -0
- package/dist/web/assets/diff-viewer-HhIcsOQE.js +4 -0
- package/dist/web/assets/git-graph-CQtWu8yE.js +1 -0
- package/dist/web/assets/index-CgQXpBb_.css +2 -0
- package/dist/web/assets/index-DEeeRoka.js +37 -0
- package/dist/web/assets/keybindings-store-1CJ7VX57.js +1 -0
- package/dist/web/assets/{markdown-renderer-8UFHcZ5r.js → markdown-renderer-Brj8_LQM.js} +2 -2
- package/dist/web/assets/postgres-viewer-CwkTGmqy.js +1 -0
- package/dist/web/assets/{settings-tab-BRlZef1w.js → settings-tab-BDE1MsIh.js} +1 -1
- package/dist/web/assets/sqlite-viewer-CFYTwgA8.js +1 -0
- package/dist/web/assets/{terminal-tab-WhTFQN4f.js → terminal-tab-CCDLZA5Y.js} +2 -2
- package/dist/web/assets/{use-monaco-theme-fBpj_HoX.js → use-monaco-theme-CNzekTN3.js} +1 -1
- package/dist/web/index.html +3 -3
- package/dist/web/sw.js +1 -1
- package/package.json +1 -1
- package/src/services/account.service.ts +5 -5
- package/src/services/supervisor.ts +54 -13
- package/src/web/app.tsx +4 -0
- package/src/web/components/chat/account-rotation-settings.tsx +163 -0
- package/src/web/components/chat/usage-badge.tsx +11 -1
- package/src/web/components/shared/connection-lost-overlay.tsx +89 -0
- package/src/web/hooks/use-global-keybindings.ts +18 -2
- package/src/web/hooks/use-server-reload.ts +9 -0
- package/src/web/stores/connection-store.ts +39 -0
- package/dist/web/assets/api-settings-D21InCnR.js +0 -1
- package/dist/web/assets/browser-tab-Bqk-srYK.js +0 -1
- package/dist/web/assets/chat-tab-DWkwGVrM.js +0 -8
- package/dist/web/assets/code-editor-DJP_ZAG0.js +0 -2
- package/dist/web/assets/database-viewer-BlDDMy32.js +0 -1
- package/dist/web/assets/diff-viewer-C9NBFCy-.js +0 -4
- package/dist/web/assets/git-graph-g_fIeDSV.js +0 -1
- package/dist/web/assets/index-Bg8Q-ve9.js +0 -37
- package/dist/web/assets/index-CzwYVupc.css +0 -2
- package/dist/web/assets/keybindings-store-CPlX-oIl.js +0 -1
- package/dist/web/assets/postgres-viewer-nMIFhsEa.js +0 -1
- package/dist/web/assets/sqlite-viewer-7G2YhjTZ.js +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import"./react-nm2Ru1Pt.js";import"./api-client-BfBM3I7n.js";import{L as e}from"./index-DEeeRoka.js";export{e as useKeybindingsStore};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/c4Diagram-IC4MRINW-dV22iAsY.js","assets/dist-CSJdAyA9.js","assets/chunk-CFjPhJqf.js","assets/src-BqX54PbV.js","assets/chunk-GEFDOKGD-BbQkJu8C.js","assets/math-069Z4SuC.js","assets/chunk-7R4GIKGN-BbIFzsIv.js","assets/preload-helper-uTix4PVD.js","assets/isArrayLikeObject-B_v2FtYn.js","assets/chunk-JSJVCQXG-23tyvw8k.js","assets/flowDiagram-PKNHOUZH-DIqcTrDV.js","assets/chunk-PU5JKC2W-Dw8ClWch.js","assets/channel-wrd-NHWf.js","assets/chunk-55IACEB6-DJ6BynZ4.js","assets/chunk-FMBD7UC4-DXncblvW.js","assets/chunk-GLR3WWYH-CzYx4w-r.js","assets/chunk-KYZI473N-BcUZNnwd.js","assets/chunk-PQ6SQG4A-D6BTbCQw.js","assets/chunk-YBOYWFTD-CeU4Q-xC.js","assets/rough.esm-JX0wREDd.js","assets/chunk-O4XLMI2P-JC6EGoUz.js","assets/line-B78g-52T.js","assets/path-6uRLdFF7.js","assets/array-B9UHiPd-.js","assets/chunk-MX3YWQON-BpS_PtKp.js","assets/chunk-KX2RTZJC-sQ0o-39C.js","assets/chunk-XPW4576I-BPQQBakK.js","assets/erDiagram-INFDFZHY-CKzVujYI.js","assets/gitGraphDiagram-K3NZZRJ6-BTXo57mF.js","assets/chunk-XZSTWKYB-DxAOx4hG.js","assets/isEmpty-bnrF3Qbc.js","assets/_baseUniq-BT4Ow4Kk.js","assets/_basePickBy-5PGDJbfF.js","assets/clone-LRxlvnMj.js","assets/chunk-7E7YKBS2-CiyUJxNI.js","assets/chunk-C72U2L5F-D21mS_6G.js","assets/chunk-EGIJ26TM-DzqmU2Z7.js","assets/chunk-L3YUKLVL-C7qGJrfV.js","assets/chunk-OZEHJAEY-BXhYx3nO.js","assets/chunk-R5LLSJPH-CFwSJijQ.js","assets/chunk-XIRO2GV7-Djlmrely.js","assets/mermaid-parser.core-DMIWdgEW.js","assets/chunk-4BX2VUAB-D4tOov49.js","assets/chunk-QZHKN3VN-CYaTbeZf.js","assets/ganttDiagram-A5KZAMGK-D4v7ZbVE.js","assets/linear-DP4mkX3m.js","assets/defaultLocale-5eAKkKJC.js","assets/init-DlZdxViB.js","assets/infoDiagram-LFFYTUFH-B1CX0pbC.js","assets/chunk-HHEYEP7N-HRhYy3kG.js","assets/pieDiagram-SKSYHLDU-WP0XXw51.js","assets/ordinal-_K3x1fkz.js","assets/arc-BAOivWpI.js","assets/quadrantDiagram-337W2JSQ-FHMogtsh.js","assets/xychartDiagram-JWTSCODW-z5MVJauZ.js","assets/requirementDiagram-Z7DCOOCP-BatTxyWb.js","assets/sequenceDiagram-2WXFIKYE-ByxQqGgs.js","assets/classDiagram-VBA2DB6C-lse8oZoJ.js","assets/chunk-WL4C6EOR-DfofndiH.js","assets/classDiagram-v2-RAHNMMFH-CxkwuInd.js","assets/stateDiagram-RAJIS63D-f8opcZNY.js","assets/dagre-Dbb5k38K.js","assets/graphlib-BcsNnGcW.js","assets/chunk-NQ4KR5QH-wMgTlP7f.js","assets/stateDiagram-v2-FVOUBMTO-DrxVDY9q.js","assets/journeyDiagram-4ABVD52K-ufoasAy6.js","assets/timeline-definition-YZTLITO2-58BlOSf9.js","assets/mindmap-definition-YRQLILUH-BsfWvIoO.js","assets/kanban-definition-K7BYSVSG-Bi0UTUeN.js","assets/sankeyDiagram-WA2Y5GQK-ClJuW3Hv.js","assets/diagram-P4PSJMXO-BkfNRc9U.js","assets/diagram-IFDJBPK2-k55eVqVU.js","assets/blockDiagram-WCTKOSBZ-TEF8Ally.js","assets/architectureDiagram-2XIMDMQ5-DWBCPMLF.js","assets/cytoscape.esm-BW-DbntU.js","assets/ishikawaDiagram-PHBUUO56-BOyvKMmB.js","assets/vennDiagram-LZ73GAT5-BOSy9ma9.js","assets/diagram-E7M64L7V-B1Qz70Do.js"])))=>i.map(i=>d[i]);
|
|
2
|
-
import{o as e}from"./chunk-CFjPhJqf.js";import{t}from"./react-nm2Ru1Pt.js";import{n,t as r}from"./jsx-runtime-BRW_vwa9.js";import{t as i}from"./tab-store-BJw7OCmy.js";import{t as a}from"./preload-helper-uTix4PVD.js";import{t as o}from"./utils-BNytJOb1.js";import{i as s,r as c,t as l}from"./api-client-BfBM3I7n.js";import{
|
|
2
|
+
import{o as e}from"./chunk-CFjPhJqf.js";import{t}from"./react-nm2Ru1Pt.js";import{n,t as r}from"./jsx-runtime-BRW_vwa9.js";import{t as i}from"./tab-store-BJw7OCmy.js";import{t as a}from"./preload-helper-uTix4PVD.js";import{t as o}from"./utils-BNytJOb1.js";import{i as s,r as c,t as l}from"./api-client-BfBM3I7n.js";import{N as u,j as d,n as f,t as p}from"./index-DEeeRoka.js";import{t as m}from"./isEmpty-bnrF3Qbc.js";import{a as h,d as g,h as _,i as v,m as y,r as b}from"./chunk-GEFDOKGD-BbQkJu8C.js";import{_ as x,g as S,h as C,p as w}from"./src-BqX54PbV.js";import{F as T,G as ee,H as te,J as ne,M as E,N as D,S as re,T as ie,X as ae,Y as oe,Z as se,c as ce,f as le,g as ue,h as de,l as fe,n as pe,p as me,r as he,t as ge,w as _e,x as ve,y as O,z as ye}from"./chunk-7R4GIKGN-BbIFzsIv.js";import{t as be}from"./chunk-HHEYEP7N-HRhYy3kG.js";import{i as xe,o as Se}from"./chunk-PU5JKC2W-Dw8ClWch.js";import{n as Ce}from"./chunk-GLR3WWYH-CzYx4w-r.js";import{n as we,t as Te}from"./chunk-XPW4576I-BPQQBakK.js";var Ee=n(`code`,[[`path`,{d:`m16 18 6-6-6-6`,key:`eg8j8`}],[`path`,{d:`m8 6-6 6 6 6`,key:`ppft3o`}]]);function De(){return{async:!1,breaks:!1,extensions:null,gfm:!0,hooks:null,pedantic:!1,renderer:null,silent:!1,tokenizer:null,walkTokens:null}}var k=De();function Oe(e){k=e}var A={exec:()=>null};function j(e,t=``){let n=typeof e==`string`?e:e.source,r={replace:(e,t)=>{let i=typeof t==`string`?t:t.source;return i=i.replace(M.caret,`$1`),n=n.replace(e,i),r},getRegex:()=>new RegExp(n,t)};return r}var ke=(()=>{try{return!0}catch{return!1}})(),M={codeRemoveIndent:/^(?: {1,4}| {0,3}\t)/gm,outputLinkReplace:/\\([\[\]])/g,indentCodeCompensation:/^(\s+)(?:```)/,beginningSpace:/^\s+/,endingHash:/#$/,startingSpaceChar:/^ /,endingSpaceChar:/ $/,nonSpaceChar:/[^ ]/,newLineCharGlobal:/\n/g,tabCharGlobal:/\t/g,multipleSpaceGlobal:/\s+/g,blankLine:/^[ \t]*$/,doubleBlankLine:/\n[ \t]*\n[ \t]*$/,blockquoteStart:/^ {0,3}>/,blockquoteSetextReplace:/\n {0,3}((?:=+|-+) *)(?=\n|$)/g,blockquoteSetextReplace2:/^ {0,3}>[ \t]?/gm,listReplaceNesting:/^ {1,4}(?=( {4})*[^ ])/g,listIsTask:/^\[[ xX]\] +\S/,listReplaceTask:/^\[[ xX]\] +/,listTaskCheckbox:/\[[ xX]\]/,anyLine:/\n.*\n/,hrefBrackets:/^<(.*)>$/,tableDelimiter:/[:|]/,tableAlignChars:/^\||\| *$/g,tableRowBlankLine:/\n[ \t]*$/,tableAlignRight:/^ *-+: *$/,tableAlignCenter:/^ *:-+: *$/,tableAlignLeft:/^ *:-+ *$/,startATag:/^<a /i,endATag:/^<\/a>/i,startPreScriptTag:/^<(pre|code|kbd|script)(\s|>)/i,endPreScriptTag:/^<\/(pre|code|kbd|script)(\s|>)/i,startAngleBracket:/^</,endAngleBracket:/>$/,pedanticHrefTitle:/^([^'"]*[^\s])\s+(['"])(.*)\2/,unicodeAlphaNumeric:/[\p{L}\p{N}]/u,escapeTest:/[&<>"']/,escapeReplace:/[&<>"']/g,escapeTestNoEncode:/[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/,escapeReplaceNoEncode:/[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/g,caret:/(^|[^\[])\^/g,percentDecode:/%25/g,findPipe:/\|/g,splitPipe:/ \|/,slashPipe:/\\\|/g,carriageReturn:/\r\n|\r/g,spaceLine:/^ +$/gm,notSpaceStart:/^\S*/,endingNewline:/\n$/,listItemRegex:e=>RegExp(`^( {0,3}${e})((?:[ ][^\\n]*)?(?:\\n|$))`),nextBulletRegex:e=>RegExp(`^ {0,${Math.min(3,e-1)}}(?:[*+-]|\\d{1,9}[.)])((?:[ ][^\\n]*)?(?:\\n|$))`),hrRegex:e=>RegExp(`^ {0,${Math.min(3,e-1)}}((?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$)`),fencesBeginRegex:e=>RegExp(`^ {0,${Math.min(3,e-1)}}(?:\`\`\`|~~~)`),headingBeginRegex:e=>RegExp(`^ {0,${Math.min(3,e-1)}}#`),htmlBeginRegex:e=>RegExp(`^ {0,${Math.min(3,e-1)}}<(?:[a-z].*>|!--)`,`i`),blockquoteBeginRegex:e=>RegExp(`^ {0,${Math.min(3,e-1)}}>`)},Ae=/^(?:[ \t]*(?:\n|$))+/,je=/^((?: {4}| {0,3}\t)[^\n]+(?:\n(?:[ \t]*(?:\n|$))*)?)+/,Me=/^ {0,3}(`{3,}(?=[^`\n]*(?:\n|$))|~{3,})([^\n]*)(?:\n|$)(?:|([\s\S]*?)(?:\n|$))(?: {0,3}\1[~`]* *(?=\n|$)|$)/,N=/^ {0,3}((?:-[\t ]*){3,}|(?:_[ \t]*){3,}|(?:\*[ \t]*){3,})(?:\n+|$)/,Ne=/^ {0,3}(#{1,6})(?=\s|$)(.*)(?:\n+|$)/,Pe=/ {0,3}(?:[*+-]|\d{1,9}[.)])/,Fe=/^(?!bull |blockCode|fences|blockquote|heading|html|table)((?:.|\n(?!\s*?\n|bull |blockCode|fences|blockquote|heading|html|table))+?)\n {0,3}(=+|-+) *(?:\n+|$)/,Ie=j(Fe).replace(/bull/g,Pe).replace(/blockCode/g,/(?: {4}| {0,3}\t)/).replace(/fences/g,/ {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g,/ {0,3}>/).replace(/heading/g,/ {0,3}#{1,6}/).replace(/html/g,/ {0,3}<[^\n>]+>\n/).replace(/\|table/g,``).getRegex(),Le=j(Fe).replace(/bull/g,Pe).replace(/blockCode/g,/(?: {4}| {0,3}\t)/).replace(/fences/g,/ {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g,/ {0,3}>/).replace(/heading/g,/ {0,3}#{1,6}/).replace(/html/g,/ {0,3}<[^\n>]+>\n/).replace(/table/g,/ {0,3}\|?(?:[:\- ]*\|)+[\:\- ]*\n/).getRegex(),Re=/^([^\n]+(?:\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\n)[^\n]+)*)/,ze=/^[^\n]+/,Be=/(?!\s*\])(?:\\[\s\S]|[^\[\]\\])+/,Ve=j(/^ {0,3}\[(label)\]: *(?:\n[ \t]*)?([^<\s][^\s]*|<.*?>)(?:(?: +(?:\n[ \t]*)?| *\n[ \t]*)(title))? *(?:\n+|$)/).replace(`label`,Be).replace(`title`,/(?:"(?:\\"?|[^"\\])*"|'[^'\n]*(?:\n[^'\n]+)*\n?'|\([^()]*\))/).getRegex(),He=j(/^(bull)([ \t][^\n]+?)?(?:\n|$)/).replace(/bull/g,Pe).getRegex(),Ue=`address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option|p|param|search|section|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul`,We=/<!--(?:-?>|[\s\S]*?(?:-->|$))/,Ge=j(`^ {0,3}(?:<(script|pre|style|textarea)[\\s>][\\s\\S]*?(?:</\\1>[^\\n]*\\n+|$)|comment[^\\n]*(\\n+|$)|<\\?[\\s\\S]*?(?:\\?>\\n*|$)|<![A-Z][\\s\\S]*?(?:>\\n*|$)|<!\\[CDATA\\[[\\s\\S]*?(?:\\]\\]>\\n*|$)|</?(tag)(?: +|\\n|/?>)[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$)|<(?!script|pre|style|textarea)([a-z][\\w-]*)(?:attribute)*? */?>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$)|</(?!script|pre|style|textarea)[a-z][\\w-]*\\s*>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$))`,`i`).replace(`comment`,We).replace(`tag`,Ue).replace(`attribute`,/ +[a-zA-Z:_][\w.:-]*(?: *= *"[^"\n]*"| *= *'[^'\n]*'| *= *[^\s"'=<>`]+)?/).getRegex(),Ke=j(Re).replace(`hr`,N).replace(`heading`,` {0,3}#{1,6}(?:\\s|$)`).replace(`|lheading`,``).replace(`|table`,``).replace(`blockquote`,` {0,3}>`).replace(`fences`," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace(`list`,` {0,3}(?:[*+-]|1[.)])[ \\t]`).replace(`html`,`</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)`).replace(`tag`,Ue).getRegex(),qe={blockquote:j(/^( {0,3}> ?(paragraph|[^\n]*)(?:\n|$))+/).replace(`paragraph`,Ke).getRegex(),code:je,def:Ve,fences:Me,heading:Ne,hr:N,html:Ge,lheading:Ie,list:He,newline:Ae,paragraph:Ke,table:A,text:ze},Je=j(`^ *([^\\n ].*)\\n {0,3}((?:\\| *)?:?-+:? *(?:\\| *:?-+:? *)*(?:\\| *)?)(?:\\n((?:(?! *\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\n|$))*)\\n*|$)`).replace(`hr`,N).replace(`heading`,` {0,3}#{1,6}(?:\\s|$)`).replace(`blockquote`,` {0,3}>`).replace(`code`,`(?: {4}| {0,3} )[^\\n]`).replace(`fences`," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace(`list`,` {0,3}(?:[*+-]|1[.)])[ \\t]`).replace(`html`,`</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)`).replace(`tag`,Ue).getRegex(),Ye={...qe,lheading:Le,table:Je,paragraph:j(Re).replace(`hr`,N).replace(`heading`,` {0,3}#{1,6}(?:\\s|$)`).replace(`|lheading`,``).replace(`table`,Je).replace(`blockquote`,` {0,3}>`).replace(`fences`," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace(`list`,` {0,3}(?:[*+-]|1[.)])[ \\t]`).replace(`html`,`</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)`).replace(`tag`,Ue).getRegex()},Xe={...qe,html:j(`^ *(?:comment *(?:\\n|\\s*$)|<(tag)[\\s\\S]+?</\\1> *(?:\\n{2,}|\\s*$)|<tag(?:"[^"]*"|'[^']*'|\\s[^'"/>\\s]*)*?/?> *(?:\\n{2,}|\\s*$))`).replace(`comment`,We).replace(/tag/g,`(?!(?:a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)\\b)\\w+(?!:|[^\\w\\s@]*@)\\b`).getRegex(),def:/^ *\[([^\]]+)\]: *<?([^\s>]+)>?(?: +(["(][^\n]+[")]))? *(?:\n+|$)/,heading:/^(#{1,6})(.*)(?:\n+|$)/,fences:A,lheading:/^(.+?)\n {0,3}(=+|-+) *(?:\n+|$)/,paragraph:j(Re).replace(`hr`,N).replace(`heading`,` *#{1,6} *[^
|
|
3
3
|
]`).replace(`lheading`,Ie).replace(`|table`,``).replace(`blockquote`,` {0,3}>`).replace(`|fences`,``).replace(`|list`,``).replace(`|html`,``).replace(`|tag`,``).getRegex()},Ze=/^\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/,Qe=/^(`+)([^`]|[^`][\s\S]*?[^`])\1(?!`)/,$e=/^( {2,}|\\)\n(?!\s*$)/,et=/^(`+|[^`])(?:(?= {2,}\n)|[\s\S]*?(?:(?=[\\<!\[`*_]|\b_|$)|[^ ](?= {2,}\n)))/,tt=/[\p{P}\p{S}]/u,nt=/[\s\p{P}\p{S}]/u,rt=/[^\s\p{P}\p{S}]/u,it=j(/^((?![*_])punctSpace)/,`u`).replace(/punctSpace/g,nt).getRegex(),at=/(?!~)[\p{P}\p{S}]/u,ot=/(?!~)[\s\p{P}\p{S}]/u,st=/(?:[^\s\p{P}\p{S}]|~)/u,ct=/(?![*_])[\p{P}\p{S}]/u,lt=/(?![*_])[\s\p{P}\p{S}]/u,ut=/(?:[^\s\p{P}\p{S}]|[*_])/u,dt=j(/link|precode-code|html/,`g`).replace(`link`,/\[(?:[^\[\]`]|(?<a>`+)[^`]+\k<a>(?!`))*?\]\((?:\\[\s\S]|[^\\\(\)]|\((?:\\[\s\S]|[^\\\(\)])*\))*\)/).replace(`precode-`,ke?"(?<!`)()":"(^^|[^`])").replace(`code`,/(?<b>`+)[^`]+\k<b>(?!`)/).replace(`html`,/<(?! )[^<>]*?>/).getRegex(),ft=/^(?:\*+(?:((?!\*)punct)|[^\s*]))|^_+(?:((?!_)punct)|([^\s_]))/,pt=j(ft,`u`).replace(/punct/g,tt).getRegex(),mt=j(ft,`u`).replace(/punct/g,at).getRegex(),ht=`^[^_*]*?__[^_*]*?\\*[^_*]*?(?=__)|[^*]+(?=[^*])|(?!\\*)punct(\\*+)(?=[\\s]|$)|notPunctSpace(\\*+)(?!\\*)(?=punctSpace|$)|(?!\\*)punctSpace(\\*+)(?=notPunctSpace)|[\\s](\\*+)(?!\\*)(?=punct)|(?!\\*)punct(\\*+)(?!\\*)(?=punct)|notPunctSpace(\\*+)(?=notPunctSpace)`,gt=j(ht,`gu`).replace(/notPunctSpace/g,rt).replace(/punctSpace/g,nt).replace(/punct/g,tt).getRegex(),_t=j(ht,`gu`).replace(/notPunctSpace/g,st).replace(/punctSpace/g,ot).replace(/punct/g,at).getRegex(),vt=j(`^[^_*]*?\\*\\*[^_*]*?_[^_*]*?(?=\\*\\*)|[^_]+(?=[^_])|(?!_)punct(_+)(?=[\\s]|$)|notPunctSpace(_+)(?!_)(?=punctSpace|$)|(?!_)punctSpace(_+)(?=notPunctSpace)|[\\s](_+)(?!_)(?=punct)|(?!_)punct(_+)(?!_)(?=punct)`,`gu`).replace(/notPunctSpace/g,rt).replace(/punctSpace/g,nt).replace(/punct/g,tt).getRegex(),yt=j(/^~~?(?:((?!~)punct)|[^\s~])/,`u`).replace(/punct/g,ct).getRegex(),bt=j(`^[^~]+(?=[^~])|(?!~)punct(~~?)(?=[\\s]|$)|notPunctSpace(~~?)(?!~)(?=punctSpace|$)|(?!~)punctSpace(~~?)(?=notPunctSpace)|[\\s](~~?)(?!~)(?=punct)|(?!~)punct(~~?)(?!~)(?=punct)|notPunctSpace(~~?)(?=notPunctSpace)`,`gu`).replace(/notPunctSpace/g,ut).replace(/punctSpace/g,lt).replace(/punct/g,ct).getRegex(),xt=j(/\\(punct)/,`gu`).replace(/punct/g,tt).getRegex(),St=j(/^<(scheme:[^\s\x00-\x1f<>]*|email)>/).replace(`scheme`,/[a-zA-Z][a-zA-Z0-9+.-]{1,31}/).replace(`email`,/[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/).getRegex(),Ct=j(We).replace(`(?:-->|$)`,`-->`).getRegex(),wt=j(`^comment|^</[a-zA-Z][\\w:-]*\\s*>|^<[a-zA-Z][\\w-]*(?:attribute)*?\\s*/?>|^<\\?[\\s\\S]*?\\?>|^<![a-zA-Z]+\\s[\\s\\S]*?>|^<!\\[CDATA\\[[\\s\\S]*?\\]\\]>`).replace(`comment`,Ct).replace(`attribute`,/\s+[a-zA-Z:_][\w.:-]*(?:\s*=\s*"[^"]*"|\s*=\s*'[^']*'|\s*=\s*[^\s"'=<>`]+)?/).getRegex(),Tt=/(?:\[(?:\\[\s\S]|[^\[\]\\])*\]|\\[\s\S]|`+[^`]*?`+(?!`)|[^\[\]\\`])*?/,Et=j(/^!?\[(label)\]\(\s*(href)(?:(?:[ \t]+(?:\n[ \t]*)?|\n[ \t]*)(title))?\s*\)/).replace(`label`,Tt).replace(`href`,/<(?:\\.|[^\n<>\\])+>|[^ \t\n\x00-\x1f]*/).replace(`title`,/"(?:\\"?|[^"\\])*"|'(?:\\'?|[^'\\])*'|\((?:\\\)?|[^)\\])*\)/).getRegex(),Dt=j(/^!?\[(label)\]\[(ref)\]/).replace(`label`,Tt).replace(`ref`,Be).getRegex(),Ot=j(/^!?\[(ref)\](?:\[\])?/).replace(`ref`,Be).getRegex(),kt=j(`reflink|nolink(?!\\()`,`g`).replace(`reflink`,Dt).replace(`nolink`,Ot).getRegex(),At=/[hH][tT][tT][pP][sS]?|[fF][tT][pP]/,jt={_backpedal:A,anyPunctuation:xt,autolink:St,blockSkip:dt,br:$e,code:Qe,del:A,delLDelim:A,delRDelim:A,emStrongLDelim:pt,emStrongRDelimAst:gt,emStrongRDelimUnd:vt,escape:Ze,link:Et,nolink:Ot,punctuation:it,reflink:Dt,reflinkSearch:kt,tag:wt,text:et,url:A},Mt={...jt,link:j(/^!?\[(label)\]\((.*?)\)/).replace(`label`,Tt).getRegex(),reflink:j(/^!?\[(label)\]\s*\[([^\]]*)\]/).replace(`label`,Tt).getRegex()},Nt={...jt,emStrongRDelimAst:_t,emStrongLDelim:mt,delLDelim:yt,delRDelim:bt,url:j(/^((?:protocol):\/\/|www\.)(?:[a-zA-Z0-9\-]+\.?)+[^\s<]*|^email/).replace(`protocol`,At).replace(`email`,/[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/).getRegex(),_backpedal:/(?:[^?!.,:;*_'"~()&]+|\([^)]*\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_'"~)]+(?!$))+/,del:/^(~~?)(?=[^\s~])((?:\\[\s\S]|[^\\])*?(?:\\[\s\S]|[^\s~\\]))\1(?=[^~]|$)/,text:j(/^([`~]+|[^`~])(?:(?= {2,}\n)|(?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)|[\s\S]*?(?:(?=[\\<!\[`*~_]|\b_|protocol:\/\/|www\.|$)|[^ ](?= {2,}\n)|[^a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-](?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)))/).replace(`protocol`,At).getRegex()},Pt={...Nt,br:j($e).replace(`{2,}`,`*`).getRegex(),text:j(Nt.text).replace(`\\b_`,`\\b_| {2,}\\n`).replace(/\{2,\}/g,`*`).getRegex()},Ft={normal:qe,gfm:Ye,pedantic:Xe},P={normal:jt,gfm:Nt,breaks:Pt,pedantic:Mt},It={"&":`&`,"<":`<`,">":`>`,'"':`"`,"'":`'`},Lt=e=>It[e];function F(e,t){if(t){if(M.escapeTest.test(e))return e.replace(M.escapeReplace,Lt)}else if(M.escapeTestNoEncode.test(e))return e.replace(M.escapeReplaceNoEncode,Lt);return e}function Rt(e){try{e=encodeURI(e).replace(M.percentDecode,`%`)}catch{return null}return e}function zt(e,t){let n=e.replace(M.findPipe,(e,t,n)=>{let r=!1,i=t;for(;--i>=0&&n[i]===`\\`;)r=!r;return r?`|`:` |`}).split(M.splitPipe),r=0;if(n[0].trim()||n.shift(),n.length>0&&!n.at(-1)?.trim()&&n.pop(),t)if(n.length>t)n.splice(t);else for(;n.length<t;)n.push(``);for(;r<n.length;r++)n[r]=n[r].trim().replace(M.slashPipe,`|`);return n}function I(e,t,n){let r=e.length;if(r===0)return``;let i=0;for(;i<r;){let a=e.charAt(r-i-1);if(a===t&&!n)i++;else if(a!==t&&n)i++;else break}return e.slice(0,r-i)}function Bt(e,t){if(e.indexOf(t[1])===-1)return-1;let n=0;for(let r=0;r<e.length;r++)if(e[r]===`\\`)r++;else if(e[r]===t[0])n++;else if(e[r]===t[1]&&(n--,n<0))return r;return n>0?-2:-1}function Vt(e,t=0){let n=t,r=``;for(let t of e)if(t===` `){let e=4-n%4;r+=` `.repeat(e),n+=e}else r+=t,n++;return r}function Ht(e,t,n,r,i){let a=t.href,o=t.title||null,s=e[1].replace(i.other.outputLinkReplace,`$1`);r.state.inLink=!0;let c={type:e[0].charAt(0)===`!`?`image`:`link`,raw:n,href:a,title:o,text:s,tokens:r.inlineTokens(s)};return r.state.inLink=!1,c}function Ut(e,t,n){let r=e.match(n.other.indentCodeCompensation);if(r===null)return t;let i=r[1];return t.split(`
|
|
4
4
|
`).map(e=>{let t=e.match(n.other.beginningSpace);if(t===null)return e;let[r]=t;return r.length>=i.length?e.slice(i.length):e}).join(`
|
|
5
5
|
`)}var Wt=class{options;rules;lexer;constructor(e){this.options=e||k}space(e){let t=this.rules.block.newline.exec(e);if(t&&t[0].length>0)return{type:`space`,raw:t[0]}}code(e){let t=this.rules.block.code.exec(e);if(t){let e=t[0].replace(this.rules.other.codeRemoveIndent,``);return{type:`code`,raw:t[0],codeBlockStyle:`indented`,text:this.options.pedantic?e:I(e,`
|
|
@@ -66,4 +66,4 @@ ${e.themeCSS}`),e.fontFamily!==void 0&&(n+=`
|
|
|
66
66
|
:root { --mermaid-font-family: ${e.fontFamily}}`),e.altFontFamily!==void 0&&(n+=`
|
|
67
67
|
:root { --mermaid-alt-font-family: ${e.altFontFamily}}`),t instanceof Map){let r=_e(e)?[`> *`,`span`]:[`rect`,`polygon`,`ellipse`,`circle`,`path`];t.forEach(e=>{m(e.styles)||r.forEach(t=>{n+=gi(e.id,t,e.styles)}),m(e.textStyles)||(n+=gi(e.id,`tspan`,(e?.textStyles||[]).map(e=>e.replace(`color`,`fill`))))})}return n},`createCssStyles`),vi=C((e,t,n,r)=>On(Cn(`${r}{${ne(t,_i(e,n),e.themeVariables)}}`),kn),`createUserStyles`),yi=C((e=``,t,n)=>{let r=e;return!n&&!t&&(r=r.replace(/marker-end="url\([\d+./:=?A-Za-z-]*?#/g,`marker-end="url(#`)),r=v(r),r=r.replace(/<br>/g,`<br/>`),r},`cleanUpSvgCode`),bi=C((e=``,t)=>`<iframe style="width:${oi};height:${t?.viewBox?.baseVal?.height?t.viewBox.baseVal.height+`px`:si};${ci}" src="data:text/html;charset=UTF-8;base64,${Qr(`<body style="${li}">${e}</body>`)}" sandbox="${ui}">
|
|
68
68
|
${di}
|
|
69
|
-
</iframe>`,`putIntoIFrame`),xi=C((e,t,n,r,i)=>{let a=e.append(`div`);a.attr(`id`,n),r&&a.attr(`style`,r);let o=a.append(`svg`).attr(`id`,t).attr(`width`,`100%`).attr(`xmlns`,ri);return i&&o.attr(`xmlns:xlink`,i),o.append(`g`),e},`appendDivSvgG`);function Si(e,t){return e.append(`iframe`).attr(`id`,t).attr(`style`,`width: 100%; height: 100%;`).attr(`sandbox`,``)}C(Si,`sandboxedIframe`);var Ci=C((e,t,n,r)=>{e.getElementById(t)?.remove(),e.getElementById(n)?.remove(),e.getElementById(r)?.remove()},`removeExistingElements`),wi=C(async function(e,t,n){Rr();let r=mi(t);t=r.code;let i=O();S.debug(i),t.length>(i?.maxTextSize??$r)&&(t=ei);let a=`#`+e,o=`i`+e,s=`#`+o,c=`d`+e,l=`#`+c,u=C(()=>{let e=w(f?s:l).node();e&&`remove`in e&&e.remove()},`removeTempElements`),d=w(`body`),f=i.securityLevel===ti,p=i.securityLevel===ni,m=i.fontFamily;n===void 0?(Ci(document,e,c,o),f?(d=w(Si(w(`body`),o).nodes()[0].contentDocument.body),d.node().style.margin=0):d=w(`body`),xi(d,e,c)):(n&&(n.innerHTML=``),f?(d=w(Si(w(n),o).nodes()[0].contentDocument.body),d.node().style.margin=0):d=w(n),xi(d,e,c,`font-family: ${m}`,ii));let h,g;try{h=await Ur.fromText(t,{title:r.title})}catch(e){if(i.suppressErrorRendering)throw u(),e;h=await Ur.fromText(`error`),g=e}let _=d.select(l).node(),v=h.type,y=_.firstChild,b=y.firstChild,x=h.renderer.getClasses?.(t,h),T=vi(i,v,x,a),ee=document.createElement(`style`);ee.innerHTML=T,y.insertBefore(ee,b);try{await h.renderer.draw(t,e,`11.13.0`,h)}catch(n){throw i.suppressErrorRendering?u():dr.draw(t,e,`11.13.0`),n}let te=d.select(`${l} svg`),ne=h.db.getAccTitle?.(),E=h.db.getAccDescription?.();Di(v,te,ne,E),d.select(`[id="${e}"]`).selectAll(`foreignobject > *`).attr(`xmlns`,ai);let D=d.select(l).node().innerHTML;if(S.debug(`config.arrowMarkerAbsolute`,i.arrowMarkerAbsolute),D=yi(D,f,de(i.arrowMarkerAbsolute)),f){let e=d.select(l+` svg`).node();D=bi(D,e)}else p||(D=se.sanitize(D,{ADD_TAGS:fi,ADD_ATTR:pi,HTML_INTEGRATION_POINTS:{foreignobject:!0}}));if(Gr(),g)throw g;return u(),{diagramType:v,svg:D,bindFunctions:h.db.bindFunctions}},`render`);function Ti(e={}){let t=he({},e);t?.fontFamily&&!t.themeVariables?.fontFamily&&(t.themeVariables||={},t.themeVariables.fontFamily=t.fontFamily),ye(t),t?.theme&&t.theme in oe?t.themeVariables=oe[t.theme].getThemeVariables(t.themeVariables):t&&(t.themeVariables=oe.default.getThemeVariables(t.themeVariables)),x((typeof t==`object`?ee(t):ie()).logLevel),Rr()}C(Ti,`initialize`);var Ei=C((e,t={})=>{let{code:n}=Zr(e);return Ur.fromText(n,t)},`getDiagramFromText`);function Di(e,t,n,r){Vr(t,e),Hr(t,n,r,t.attr(`id`))}C(Di,`addA11yInfo`);var Q=Object.freeze({render:wi,parse:hi,getDiagramFromText:Ei,initialize:Ti,getConfig:O,setConfig:te,getSiteConfig:ie,updateSiteConfig:ae,reset:C(()=>{T()},`reset`),globalReset:C(()=>{T(fe)},`globalReset`),defaultConfig:fe});x(O().logLevel),T(O());var Oi=C((e,t,n)=>{S.warn(e),g(e)?(n&&n(e.str,e.hash),t.push({...e,message:e.str,error:e})):(n&&n(e),e instanceof Error&&t.push({str:e.message,message:e.message,hash:e.name,error:e}))},`handleError`),ki=C(async function(e={querySelector:`.mermaid`}){try{await Ai(e)}catch(t){if(g(t)&&S.error(t.str),$.parseError&&$.parseError(t),!e.suppressErrors)throw S.error(`Use the suppressErrors option to suppress these errors`),t}},`run`),Ai=C(async function({postRenderCallback:e,querySelector:t,nodes:n}={querySelector:`.mermaid`}){let r=Q.getConfig();S.debug(`${e?``:`No `}Callback function found`);let i;if(n)i=n;else if(t)i=document.querySelectorAll(t);else throw Error(`Nodes and querySelector are both undefined`);S.debug(`Found ${i.length} diagrams`),r?.startOnLoad!==void 0&&(S.debug(`Start On Load: `+r?.startOnLoad),Q.updateSiteConfig({startOnLoad:r?.startOnLoad}));let a=new _.InitIDGenerator(r.deterministicIds,r.deterministicIDSeed),o,s=[];for(let t of Array.from(i)){if(S.info(`Rendering diagram: `+t.id),t.getAttribute(`data-processed`))continue;t.setAttribute(`data-processed`,`true`);let n=`mermaid-${a.next()}`;o=t.innerHTML,o=Se(_.entityDecode(o)).trim().replace(/<br\s*\/?>/gi,`<br/>`);let r=_.detectInit(o);r&&S.debug(`Detected early reinit: `,r);try{let{svg:r,bindFunctions:i}=await Bi(n,o,t);t.innerHTML=r,e&&await e(n),i&&i(t)}catch(e){Oi(e,s,$.parseError)}}if(s.length>0)throw s[0]},`runThrowsErrors`),ji=C(function(e){Q.initialize(e)},`initialize`),Mi=C(async function(e,t,n){S.warn(`mermaid.init is deprecated. Please use run instead.`),e&&ji(e);let r={postRenderCallback:n,querySelector:`.mermaid`};typeof t==`string`?r.querySelector=t:t&&(t instanceof HTMLElement?r.nodes=[t]:r.nodes=t),await ki(r)},`init`),Ni=C(async(e,{lazyLoad:t=!0}={})=>{Rr(),D(...e),t===!1&&await zr()},`registerExternalDiagrams`),Pi=C(function(){if($.startOnLoad){let{startOnLoad:e}=Q.getConfig();e&&$.run().catch(e=>S.error(`Mermaid failed to initialize`,e))}},`contentLoaded`);typeof document<`u`&&window.addEventListener(`load`,Pi,!1);var Fi=C(function(e){$.parseError=e},`setParseErrorHandler`),Ii=[],Li=!1,Ri=C(async()=>{if(!Li){for(Li=!0;Ii.length>0;){let e=Ii.shift();if(e)try{await e()}catch(e){S.error(`Error executing queue`,e)}}Li=!1}},`executeQueue`),zi=C(async(e,t)=>new Promise((n,r)=>{let i=C(()=>new Promise((i,a)=>{Q.parse(e,t).then(e=>{i(e),n(e)},e=>{S.error(`Error parsing`,e),$.parseError?.(e),a(e),r(e)})}),`performCall`);Ii.push(i),Ri().catch(r)}),`parse`),Bi=C((e,t,n)=>new Promise((r,i)=>{let a=C(()=>new Promise((a,o)=>{Q.render(e,t,n).then(e=>{a(e),r(e)},e=>{S.error(`Error parsing`,e),$.parseError?.(e),o(e),i(e)})}),`performCall`);Ii.push(a),Ri().catch(i)}),`render`),$={startOnLoad:!0,mermaidAPI:Q,parse:zi,render:Bi,init:Mi,run:ki,registerExternalDiagrams:Ni,registerLayoutLoaders:Ce,initialize:ji,parseError:void 0,contentLoaded:Pi,setParseErrorHandler:Fi,detectType:le,registerIconPacks:xe,getRegisteredDiagramsMetadata:C(()=>Object.keys(me).map(e=>({id:e})),`getRegisteredDiagramsMetadata`)},Vi=$,Hi=e(t(),1),Ui=r(),Wi=/^(sequenceDiagram|flowchart|graph\s|classDiagram|stateDiagram|erDiagram|journey|gantt|pie|quadrantChart|requirementDiagram|gitGraph|mindmap|timeline|sankey|xychart|block-beta|packet-beta|architecture-beta|kanban)\b/,Gi=!1;function Ki(){Gi||=(Vi.initialize({startOnLoad:!1,theme:`default`,securityLevel:`loose`,fontFamily:`ui-sans-serif, system-ui, sans-serif`}),!0)}var qi=/^(\/|[A-Za-z]:[/\\])/;V.use({gfm:!0,breaks:!0});var Ji=RegExp(`\\.(ts|tsx|js|jsx|mjs|cjs|py|json|md|mdx|yaml|yml|toml|css|scss|less|html|htm|sh|bash|zsh|go|rs|sql|rb|java|kt|swift|c|cpp|h|hpp|cs|vue|svelte|txt|env|cfg|conf|ini|xml|csv|log|dockerfile|makefile|gradle)$`,`i`),Yi=/[*?{}\[\]]/;function Xi(e){let t=e;return t=t.replace(/<table/g,`<div class="table-scroll-wrapper overflow-x-auto"><table`),t=t.replace(/<\/table>/g,`</table></div>`),t=t.replace(/<a\s+href="(https?:\/\/[^"]+)"/g,`<a href="$1" target="_blank" rel="noopener noreferrer"`),t=t.replace(/<a\s+href="([^"]+)"/g,(e,t)=>/^https?:\/\//.test(t)||Yi.test(t)||!Ji.test(t)?e:`<a href="${t}" data-file-path="${t}"`),t=t.split(/(<pre[\s\S]*?<\/pre>)/g).map(e=>e.startsWith(`<pre`)?e:e.replace(/<code>([^<]+)<\/code>/g,(e,t)=>{let n=t.trim();return!n||n.includes(` `)||Yi.test(n)||!Ji.test(n)?e:`<code data-file-clickable="${n}" style="cursor:pointer;text-decoration:underline;text-decoration-style:dotted">${t}</code>`})).join(``),t}function Zi({content:e,projectName:t,className:n=``,codeActions:r=!1}){let a=(0,Hi.useMemo)(()=>{try{return Xi(V.parse(e))}catch{return e}},[e]),m=(0,Hi.useRef)(null),h=i(e=>e.openTab),g=u(e=>e.tree),_=f(e=>e.open),v=p(e=>e.open);return(0,Hi.useEffect)(()=>{let e=m.current;if(!e)return;(async()=>{Ki();let t=e.querySelectorAll(`pre`);for(let e of t){let t=e.querySelector(`code`);if(!t)continue;let n=t.className??``,r=(t.textContent??``).trim();if(n.includes(`language-mermaid`)||Wi.test(r))try{let t=`mermaid-${Math.random().toString(36).slice(2,9)}`,{svg:n}=await Vi.render(t,r),i=document.createElement(`div`);i.className=`mermaid-diagram group relative cursor-pointer rounded-lg border border-border bg-white dark:bg-zinc-50 p-3 overflow-x-auto my-2`,i.innerHTML=n;let a=document.createElement(`div`);a.className=`absolute top-2 right-2 flex items-center gap-1 px-2 py-1 rounded bg-black/60 text-white text-xs opacity-0 group-hover:opacity-100 transition-opacity pointer-events-none`,a.textContent=`Click to expand`,i.appendChild(a),i.addEventListener(`click`,()=>v(n)),e.replaceWith(i)}catch{}}})();let n=t=>{let n=t.target,r=n.closest(`a[data-file-path]`);if(r&&e.contains(r)){t.preventDefault(),a(r.getAttribute(`data-file-path`)??``);return}let i=n.closest(`code[data-file-clickable]`);if(i&&e.contains(i)){a(i.getAttribute(`data-file-clickable`)??``);return}};function i(e,t){let n=[];for(let r of e)r.type===`file`&&r.name===t&&n.push(r.path),r.children&&n.push(...i(r.children,t));return n}function a(e){if(!e)return;let n=/^(\/|[A-Za-z]:[/\\])/.test(e),r=/^(\.\/|\.\.\/)/.test(e),i=o(e);if(n){let n={filePath:e};t&&(n.projectName=t),l.get(`/api/fs/read?path=${encodeURIComponent(e)}`).then(()=>{h({type:`editor`,title:i,metadata:n,projectId:null,closable:!0})}).catch(()=>d(e));return}if(r&&t){let n={filePath:e,projectName:t};l.get(`${s(t)}/files/read?path=${encodeURIComponent(e)}`).then(()=>{h({type:`editor`,title:i,metadata:n,projectId:t,closable:!0})}).catch(()=>u(e));return}u(e)}function u(e){let n=o(e),r=i(g,n);if(r.length===1){let e=r[0];h({type:`editor`,title:n,metadata:{filePath:e,projectName:t},projectId:t??null,closable:!0})}else d(e)}e.addEventListener(`click`,n);let f=[];return e.querySelectorAll(`img`).forEach(e=>{let t=e.getAttribute(`src`)??``;if(!qi.test(t))return;e.style.opacity=`0.3`,e.style.minHeight=`48px`,e.style.minWidth=`48px`;let n=c();fetch(`/api/fs/raw?path=${encodeURIComponent(t)}`,{headers:n?{Authorization:`Bearer ${n}`}:{}}).then(e=>{if(!e.ok)throw Error(`Failed to load`);return e.blob()}).then(n=>{let r=URL.createObjectURL(n);f.push(r),e.src=r,e.style.opacity=``,e.style.minHeight=``,e.style.minWidth=``,e.style.maxHeight=`400px`,e.style.maxWidth=`100%`,e.style.objectFit=`contain`,e.style.borderRadius=`0.375rem`,e.style.border=`1px solid var(--color-border)`,e.style.cursor=`pointer`,e.onclick=()=>_(r,e.alt||o(t))}).catch(()=>{e.style.opacity=`0.5`,e.alt=`[Image not found: ${o(t)}]`})}),r&&e.querySelectorAll(`pre`).forEach(e=>{if(e.querySelector(`.code-actions`))return;let n=e.querySelector(`code`),r=n?.textContent??e.textContent??``,i=n?.className??``,a=/language-(bash|sh|shell|zsh)/.test(i)||!i.includes(`language-`)&&r.startsWith(`$`);e.style.position=`relative`,e.classList.add(`group`);let o=document.createElement(`div`);o.className=`code-actions absolute top-1 right-1 flex gap-1`;let s=document.createElement(`button`);if(s.className=`flex items-center justify-center size-6 rounded bg-surface-elevated/80 hover:bg-surface-elevated text-text-secondary hover:text-text-primary transition-colors border border-border/50`,s.title=`Copy`,s.innerHTML=`<svg width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect width="14" height="14" x="8" y="8" rx="2" ry="2"/><path d="M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2"/></svg>`,s.addEventListener(`click`,()=>{navigator.clipboard.writeText(r),s.innerHTML=`<svg width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polyline points="20 6 9 17 4 12"/></svg>`,setTimeout(()=>{s.innerHTML=`<svg width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect width="14" height="14" x="8" y="8" rx="2" ry="2"/><path d="M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2"/></svg>`},2e3)}),o.appendChild(s),a&&t){let e=document.createElement(`button`);e.className=`flex items-center justify-center size-6 rounded bg-surface-elevated/80 hover:bg-surface-elevated text-text-secondary hover:text-text-primary transition-colors border border-border/50`,e.title=`Run in terminal`,e.innerHTML=`<svg width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polyline points="4 17 10 11 4 5"/><line x1="12" y1="19" x2="20" y2="19"/></svg>`,e.addEventListener(`click`,()=>{navigator.clipboard.writeText(r.replace(/^\$\s*/gm,``)),h({type:`terminal`,title:`Terminal`,metadata:{projectName:t},projectId:t,closable:!0})}),o.appendChild(e)}e.appendChild(o)}),()=>{e.removeEventListener(`click`,n),f.forEach(e=>URL.revokeObjectURL(e))}},[a,t,h,r,_,v]),(0,Ui.jsx)(`div`,{ref:m,className:`markdown-content prose-sm ${n}`,dangerouslySetInnerHTML:{__html:a}})}export{Ee as n,Zi as t};
|
|
69
|
+
</iframe>`,`putIntoIFrame`),xi=C((e,t,n,r,i)=>{let a=e.append(`div`);a.attr(`id`,n),r&&a.attr(`style`,r);let o=a.append(`svg`).attr(`id`,t).attr(`width`,`100%`).attr(`xmlns`,ri);return i&&o.attr(`xmlns:xlink`,i),o.append(`g`),e},`appendDivSvgG`);function Si(e,t){return e.append(`iframe`).attr(`id`,t).attr(`style`,`width: 100%; height: 100%;`).attr(`sandbox`,``)}C(Si,`sandboxedIframe`);var Ci=C((e,t,n,r)=>{e.getElementById(t)?.remove(),e.getElementById(n)?.remove(),e.getElementById(r)?.remove()},`removeExistingElements`),wi=C(async function(e,t,n){Rr();let r=mi(t);t=r.code;let i=O();S.debug(i),t.length>(i?.maxTextSize??$r)&&(t=ei);let a=`#`+e,o=`i`+e,s=`#`+o,c=`d`+e,l=`#`+c,u=C(()=>{let e=w(f?s:l).node();e&&`remove`in e&&e.remove()},`removeTempElements`),d=w(`body`),f=i.securityLevel===ti,p=i.securityLevel===ni,m=i.fontFamily;n===void 0?(Ci(document,e,c,o),f?(d=w(Si(w(`body`),o).nodes()[0].contentDocument.body),d.node().style.margin=0):d=w(`body`),xi(d,e,c)):(n&&(n.innerHTML=``),f?(d=w(Si(w(n),o).nodes()[0].contentDocument.body),d.node().style.margin=0):d=w(n),xi(d,e,c,`font-family: ${m}`,ii));let h,g;try{h=await Ur.fromText(t,{title:r.title})}catch(e){if(i.suppressErrorRendering)throw u(),e;h=await Ur.fromText(`error`),g=e}let _=d.select(l).node(),v=h.type,y=_.firstChild,b=y.firstChild,x=h.renderer.getClasses?.(t,h),T=vi(i,v,x,a),ee=document.createElement(`style`);ee.innerHTML=T,y.insertBefore(ee,b);try{await h.renderer.draw(t,e,`11.13.0`,h)}catch(n){throw i.suppressErrorRendering?u():dr.draw(t,e,`11.13.0`),n}let te=d.select(`${l} svg`),ne=h.db.getAccTitle?.(),E=h.db.getAccDescription?.();Di(v,te,ne,E),d.select(`[id="${e}"]`).selectAll(`foreignobject > *`).attr(`xmlns`,ai);let D=d.select(l).node().innerHTML;if(S.debug(`config.arrowMarkerAbsolute`,i.arrowMarkerAbsolute),D=yi(D,f,de(i.arrowMarkerAbsolute)),f){let e=d.select(l+` svg`).node();D=bi(D,e)}else p||(D=se.sanitize(D,{ADD_TAGS:fi,ADD_ATTR:pi,HTML_INTEGRATION_POINTS:{foreignobject:!0}}));if(Gr(),g)throw g;return u(),{diagramType:v,svg:D,bindFunctions:h.db.bindFunctions}},`render`);function Ti(e={}){let t=he({},e);t?.fontFamily&&!t.themeVariables?.fontFamily&&(t.themeVariables||={},t.themeVariables.fontFamily=t.fontFamily),ye(t),t?.theme&&t.theme in oe?t.themeVariables=oe[t.theme].getThemeVariables(t.themeVariables):t&&(t.themeVariables=oe.default.getThemeVariables(t.themeVariables)),x((typeof t==`object`?ee(t):ie()).logLevel),Rr()}C(Ti,`initialize`);var Ei=C((e,t={})=>{let{code:n}=Zr(e);return Ur.fromText(n,t)},`getDiagramFromText`);function Di(e,t,n,r){Vr(t,e),Hr(t,n,r,t.attr(`id`))}C(Di,`addA11yInfo`);var Q=Object.freeze({render:wi,parse:hi,getDiagramFromText:Ei,initialize:Ti,getConfig:O,setConfig:te,getSiteConfig:ie,updateSiteConfig:ae,reset:C(()=>{T()},`reset`),globalReset:C(()=>{T(fe)},`globalReset`),defaultConfig:fe});x(O().logLevel),T(O());var Oi=C((e,t,n)=>{S.warn(e),g(e)?(n&&n(e.str,e.hash),t.push({...e,message:e.str,error:e})):(n&&n(e),e instanceof Error&&t.push({str:e.message,message:e.message,hash:e.name,error:e}))},`handleError`),ki=C(async function(e={querySelector:`.mermaid`}){try{await Ai(e)}catch(t){if(g(t)&&S.error(t.str),$.parseError&&$.parseError(t),!e.suppressErrors)throw S.error(`Use the suppressErrors option to suppress these errors`),t}},`run`),Ai=C(async function({postRenderCallback:e,querySelector:t,nodes:n}={querySelector:`.mermaid`}){let r=Q.getConfig();S.debug(`${e?``:`No `}Callback function found`);let i;if(n)i=n;else if(t)i=document.querySelectorAll(t);else throw Error(`Nodes and querySelector are both undefined`);S.debug(`Found ${i.length} diagrams`),r?.startOnLoad!==void 0&&(S.debug(`Start On Load: `+r?.startOnLoad),Q.updateSiteConfig({startOnLoad:r?.startOnLoad}));let a=new _.InitIDGenerator(r.deterministicIds,r.deterministicIDSeed),o,s=[];for(let t of Array.from(i)){if(S.info(`Rendering diagram: `+t.id),t.getAttribute(`data-processed`))continue;t.setAttribute(`data-processed`,`true`);let n=`mermaid-${a.next()}`;o=t.innerHTML,o=Se(_.entityDecode(o)).trim().replace(/<br\s*\/?>/gi,`<br/>`);let r=_.detectInit(o);r&&S.debug(`Detected early reinit: `,r);try{let{svg:r,bindFunctions:i}=await Bi(n,o,t);t.innerHTML=r,e&&await e(n),i&&i(t)}catch(e){Oi(e,s,$.parseError)}}if(s.length>0)throw s[0]},`runThrowsErrors`),ji=C(function(e){Q.initialize(e)},`initialize`),Mi=C(async function(e,t,n){S.warn(`mermaid.init is deprecated. Please use run instead.`),e&&ji(e);let r={postRenderCallback:n,querySelector:`.mermaid`};typeof t==`string`?r.querySelector=t:t&&(t instanceof HTMLElement?r.nodes=[t]:r.nodes=t),await ki(r)},`init`),Ni=C(async(e,{lazyLoad:t=!0}={})=>{Rr(),D(...e),t===!1&&await zr()},`registerExternalDiagrams`),Pi=C(function(){if($.startOnLoad){let{startOnLoad:e}=Q.getConfig();e&&$.run().catch(e=>S.error(`Mermaid failed to initialize`,e))}},`contentLoaded`);typeof document<`u`&&window.addEventListener(`load`,Pi,!1);var Fi=C(function(e){$.parseError=e},`setParseErrorHandler`),Ii=[],Li=!1,Ri=C(async()=>{if(!Li){for(Li=!0;Ii.length>0;){let e=Ii.shift();if(e)try{await e()}catch(e){S.error(`Error executing queue`,e)}}Li=!1}},`executeQueue`),zi=C(async(e,t)=>new Promise((n,r)=>{let i=C(()=>new Promise((i,a)=>{Q.parse(e,t).then(e=>{i(e),n(e)},e=>{S.error(`Error parsing`,e),$.parseError?.(e),a(e),r(e)})}),`performCall`);Ii.push(i),Ri().catch(r)}),`parse`),Bi=C((e,t,n)=>new Promise((r,i)=>{let a=C(()=>new Promise((a,o)=>{Q.render(e,t,n).then(e=>{a(e),r(e)},e=>{S.error(`Error parsing`,e),$.parseError?.(e),o(e),i(e)})}),`performCall`);Ii.push(a),Ri().catch(i)}),`render`),$={startOnLoad:!0,mermaidAPI:Q,parse:zi,render:Bi,init:Mi,run:ki,registerExternalDiagrams:Ni,registerLayoutLoaders:Ce,initialize:ji,parseError:void 0,contentLoaded:Pi,setParseErrorHandler:Fi,detectType:le,registerIconPacks:xe,getRegisteredDiagramsMetadata:C(()=>Object.keys(me).map(e=>({id:e})),`getRegisteredDiagramsMetadata`)},Vi=$,Hi=e(t(),1),Ui=r(),Wi=/^(sequenceDiagram|flowchart|graph\s|classDiagram|stateDiagram|erDiagram|journey|gantt|pie|quadrantChart|requirementDiagram|gitGraph|mindmap|timeline|sankey|xychart|block-beta|packet-beta|architecture-beta|kanban)\b/,Gi=!1;function Ki(){Gi||=(Vi.initialize({startOnLoad:!1,theme:`default`,securityLevel:`loose`,fontFamily:`ui-sans-serif, system-ui, sans-serif`}),!0)}var qi=/^(\/|[A-Za-z]:[/\\])/;V.use({gfm:!0,breaks:!0});var Ji=RegExp(`\\.(ts|tsx|js|jsx|mjs|cjs|py|json|md|mdx|yaml|yml|toml|css|scss|less|html|htm|sh|bash|zsh|go|rs|sql|rb|java|kt|swift|c|cpp|h|hpp|cs|vue|svelte|txt|env|cfg|conf|ini|xml|csv|log|dockerfile|makefile|gradle)$`,`i`),Yi=/[*?{}\[\]]/;function Xi(e){let t=e;return t=t.replace(/<table/g,`<div class="table-scroll-wrapper overflow-x-auto"><table`),t=t.replace(/<\/table>/g,`</table></div>`),t=t.replace(/<a\s+href="(https?:\/\/[^"]+)"/g,`<a href="$1" target="_blank" rel="noopener noreferrer"`),t=t.replace(/<a\s+href="([^"]+)"/g,(e,t)=>/^https?:\/\//.test(t)||Yi.test(t)||!Ji.test(t)?e:`<a href="${t}" data-file-path="${t}"`),t=t.split(/(<pre[\s\S]*?<\/pre>)/g).map(e=>e.startsWith(`<pre`)?e:e.replace(/<code>([^<]+)<\/code>/g,(e,t)=>{let n=t.trim();return!n||n.includes(` `)||Yi.test(n)||!Ji.test(n)?e:`<code data-file-clickable="${n}" style="cursor:pointer;text-decoration:underline;text-decoration-style:dotted">${t}</code>`})).join(``),t}function Zi({content:e,projectName:t,className:n=``,codeActions:r=!1}){let a=(0,Hi.useMemo)(()=>{try{return Xi(V.parse(e))}catch{return e}},[e]),m=(0,Hi.useRef)(null),h=i(e=>e.openTab),g=d(e=>e.tree),_=f(e=>e.open),v=p(e=>e.open);return(0,Hi.useEffect)(()=>{let e=m.current;if(!e)return;(async()=>{Ki();let t=e.querySelectorAll(`pre`);for(let e of t){let t=e.querySelector(`code`);if(!t)continue;let n=t.className??``,r=(t.textContent??``).trim();if(n.includes(`language-mermaid`)||Wi.test(r))try{let t=`mermaid-${Math.random().toString(36).slice(2,9)}`,{svg:n}=await Vi.render(t,r),i=document.createElement(`div`);i.className=`mermaid-diagram group relative cursor-pointer rounded-lg border border-border bg-white dark:bg-zinc-50 p-3 overflow-x-auto my-2`,i.innerHTML=n;let a=document.createElement(`div`);a.className=`absolute top-2 right-2 flex items-center gap-1 px-2 py-1 rounded bg-black/60 text-white text-xs opacity-0 group-hover:opacity-100 transition-opacity pointer-events-none`,a.textContent=`Click to expand`,i.appendChild(a),i.addEventListener(`click`,()=>v(n)),e.replaceWith(i)}catch{}}})();let n=t=>{let n=t.target,r=n.closest(`a[data-file-path]`);if(r&&e.contains(r)){t.preventDefault(),a(r.getAttribute(`data-file-path`)??``);return}let i=n.closest(`code[data-file-clickable]`);if(i&&e.contains(i)){a(i.getAttribute(`data-file-clickable`)??``);return}};function i(e,t){let n=[];for(let r of e)r.type===`file`&&r.name===t&&n.push(r.path),r.children&&n.push(...i(r.children,t));return n}function a(e){if(!e)return;let n=/^(\/|[A-Za-z]:[/\\])/.test(e),r=/^(\.\/|\.\.\/)/.test(e),i=o(e);if(n){let n={filePath:e};t&&(n.projectName=t),l.get(`/api/fs/read?path=${encodeURIComponent(e)}`).then(()=>{h({type:`editor`,title:i,metadata:n,projectId:null,closable:!0})}).catch(()=>u(e));return}if(r&&t){let n={filePath:e,projectName:t};l.get(`${s(t)}/files/read?path=${encodeURIComponent(e)}`).then(()=>{h({type:`editor`,title:i,metadata:n,projectId:t,closable:!0})}).catch(()=>d(e));return}d(e)}function d(e){let n=o(e),r=i(g,n);if(r.length===1){let e=r[0];h({type:`editor`,title:n,metadata:{filePath:e,projectName:t},projectId:t??null,closable:!0})}else u(e)}e.addEventListener(`click`,n);let f=[];return e.querySelectorAll(`img`).forEach(e=>{let t=e.getAttribute(`src`)??``;if(!qi.test(t))return;e.style.opacity=`0.3`,e.style.minHeight=`48px`,e.style.minWidth=`48px`;let n=c();fetch(`/api/fs/raw?path=${encodeURIComponent(t)}`,{headers:n?{Authorization:`Bearer ${n}`}:{}}).then(e=>{if(!e.ok)throw Error(`Failed to load`);return e.blob()}).then(n=>{let r=URL.createObjectURL(n);f.push(r),e.src=r,e.style.opacity=``,e.style.minHeight=``,e.style.minWidth=``,e.style.maxHeight=`400px`,e.style.maxWidth=`100%`,e.style.objectFit=`contain`,e.style.borderRadius=`0.375rem`,e.style.border=`1px solid var(--color-border)`,e.style.cursor=`pointer`,e.onclick=()=>_(r,e.alt||o(t))}).catch(()=>{e.style.opacity=`0.5`,e.alt=`[Image not found: ${o(t)}]`})}),r&&e.querySelectorAll(`pre`).forEach(e=>{if(e.querySelector(`.code-actions`))return;let n=e.querySelector(`code`),r=n?.textContent??e.textContent??``,i=n?.className??``,a=/language-(bash|sh|shell|zsh)/.test(i)||!i.includes(`language-`)&&r.startsWith(`$`);e.style.position=`relative`,e.classList.add(`group`);let o=document.createElement(`div`);o.className=`code-actions absolute top-1 right-1 flex gap-1`;let s=document.createElement(`button`);if(s.className=`flex items-center justify-center size-6 rounded bg-surface-elevated/80 hover:bg-surface-elevated text-text-secondary hover:text-text-primary transition-colors border border-border/50`,s.title=`Copy`,s.innerHTML=`<svg width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect width="14" height="14" x="8" y="8" rx="2" ry="2"/><path d="M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2"/></svg>`,s.addEventListener(`click`,()=>{navigator.clipboard.writeText(r),s.innerHTML=`<svg width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polyline points="20 6 9 17 4 12"/></svg>`,setTimeout(()=>{s.innerHTML=`<svg width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect width="14" height="14" x="8" y="8" rx="2" ry="2"/><path d="M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2"/></svg>`},2e3)}),o.appendChild(s),a&&t){let e=document.createElement(`button`);e.className=`flex items-center justify-center size-6 rounded bg-surface-elevated/80 hover:bg-surface-elevated text-text-secondary hover:text-text-primary transition-colors border border-border/50`,e.title=`Run in terminal`,e.innerHTML=`<svg width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polyline points="4 17 10 11 4 5"/><line x1="12" y1="19" x2="20" y2="19"/></svg>`,e.addEventListener(`click`,()=>{navigator.clipboard.writeText(r.replace(/^\$\s*/gm,``)),h({type:`terminal`,title:`Terminal`,metadata:{projectName:t},projectId:t,closable:!0})}),o.appendChild(e)}e.appendChild(o)}),()=>{e.removeEventListener(`click`,n),f.forEach(e=>URL.revokeObjectURL(e))}},[a,t,h,r,_,v]),(0,Ui.jsx)(`div`,{ref:m,className:`markdown-content prose-sm ${n}`,dangerouslySetInnerHTML:{__html:a}})}export{Ee as n,Zi as t};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{o as e}from"./chunk-CFjPhJqf.js";import{t}from"./react-nm2Ru1Pt.js";import{t as n}from"./jsx-runtime-BRW_vwa9.js";import{t as r}from"./chevron-right-DeV0ehiG.js";import{a as i,i as a,r as o,t as s}from"./dist-DylI9XxN.js";import{t as c}from"./table-C7X5UAEI.js";import{t as l}from"./api-client-BfBM3I7n.js";import{K as u,ft as d,gt as f,tt as p,vt as m}from"./index-DEeeRoka.js";import{n as h,r as g,t as _}from"./lib-BQ34Db2e.js";var v=e(t(),1),y=`/api/postgres`;function b(e){let[t,n]=(0,v.useState)(``),[r,i]=(0,v.useState)(!1),a=e?`/api/db/connections/${e}`:null,[o,s]=(0,v.useState)([]),[c,u]=(0,v.useState)(null),[d,f]=(0,v.useState)(`public`),[p,m]=(0,v.useState)(null),[h,g]=(0,v.useState)([]),[_,b]=(0,v.useState)(!1),[x,S]=(0,v.useState)(null),[C,w]=(0,v.useState)(1),[T,E]=(0,v.useState)(null),[D,O]=(0,v.useState)(null),[k,A]=(0,v.useState)(!1),j=(0,v.useCallback)(async e=>{b(!0),S(null);try{let t=await l.post(`${y}/test`,{connectionString:e});if(!t.ok){S(t.error??`Connection failed`);return}n(e),i(!0);let r=await l.post(`${y}/tables`,{connectionString:e});s(r),r.length>0&&(u(r[0].name),f(r[0].schema))}catch(e){S(e.message)}finally{b(!1)}},[]),M=(0,v.useCallback)(async()=>{if(a){b(!0);try{s(await l.get(`${a}/tables?cached=1`))}catch(e){S(e.message)}finally{b(!1)}return}if(t){b(!0);try{s(await l.post(`${y}/tables`,{connectionString:t}))}catch(e){S(e.message)}finally{b(!1)}}},[a,t,c]);(0,v.useEffect)(()=>{a&&(i(!0),M())},[a]);let N=(0,v.useCallback)(async(e,n,r)=>{let i=e??c,o=n??d;if(i){b(!0);try{if(a){let[e,t]=await Promise.all([l.get(`${a}/data?table=${encodeURIComponent(i)}&schema=${o}&page=${r??C}&limit=100`),l.get(`${a}/schema?table=${encodeURIComponent(i)}&schema=${o}`)]);m(e),g(t)}else{if(!t)return;let[e,n]=await Promise.all([l.post(`${y}/data`,{connectionString:t,table:i,schema:o,page:r??C,limit:100}),l.post(`${y}/schema`,{connectionString:t,table:i,schema:o})]);m(e),g(n)}}catch(e){S(e.message)}finally{b(!1)}}},[a,t,c,d,C]);return{connectionString:t,connected:r,connect:j,tables:o,selectedTable:c,selectTable:(0,v.useCallback)((e,t=`public`)=>{u(e),f(t),w(1),E(null),N(e,t,1)},[N]),tableData:p,schema:h,loading:_,error:x,page:C,setPage:(0,v.useCallback)(e=>{w(e),N(void 0,void 0,e)},[N]),queryResult:T,queryError:D,queryLoading:k,executeQuery:(0,v.useCallback)(async e=>{if(!(!a&&!t)){A(!0),O(null);try{let n=a?await l.post(`${a}/query`,{sql:e}):await l.post(`${y}/query`,{connectionString:t,sql:e});E(n),n.changeType===`modify`&&N()}catch(e){O(e.message)}finally{A(!1)}}},[a,t,N]),updateCell:(0,v.useCallback)(async(e,n,r,i)=>{if(c)try{if(a)await l.put(`${a}/cell`,{table:c,schema:d,pkColumn:e,pkValue:n,column:r,value:i});else{if(!t)return;await l.post(`${y}/cell`,{connectionString:t,table:c,schema:d,pkColumn:e,pkValue:n,column:r,value:i})}N()}catch(e){S(e.message)}},[a,t,c,d,N]),refreshTables:M,refreshData:N}}var x=n();function S({metadata:e}){let t=e?.connectionString??``,n=e?.connectionId,r=b(n);return r.connected?(0,x.jsx)(w,{pg:r,initialTable:e?.tableName,hideTableList:!!n,connectionName:e?.connectionName}):(0,x.jsx)(C,{initialValue:t,onConnect:r.connect,loading:r.loading,error:r.error})}function C({initialValue:e,onConnect:t,loading:n,error:r}){let[i,a]=(0,v.useState)(e);return(0,x.jsx)(`div`,{className:`flex items-center justify-center h-full`,children:(0,x.jsxs)(`div`,{className:`flex flex-col gap-3 w-full max-w-lg px-4`,children:[(0,x.jsxs)(`div`,{className:`flex items-center gap-2 text-sm font-medium`,children:[(0,x.jsx)(d,{className:`size-4`}),` Connect to PostgreSQL`]}),(0,x.jsx)(`input`,{className:`w-full px-3 py-2 rounded border border-border bg-background text-sm font-mono outline-none focus:border-primary`,placeholder:`postgresql://user:pass@host:5432/db`,value:i,onChange:e=>a(e.target.value),onKeyDown:e=>{e.key===`Enter`&&i.trim()&&t(i.trim())}}),r&&(0,x.jsxs)(`p`,{className:`text-xs text-destructive flex items-center gap-1`,children:[(0,x.jsx)(f,{className:`size-3`}),r]}),(0,x.jsx)(`button`,{type:`button`,disabled:n||!i.trim(),onClick:()=>t(i.trim()),className:`px-4 py-2 rounded bg-primary text-primary-foreground text-sm hover:bg-primary/90 disabled:opacity-50 transition-colors`,children:n?(0,x.jsx)(p,{className:`size-4 animate-spin mx-auto`}):`Connect`})]})})}function w({pg:e,initialTable:t,hideTableList:n,connectionName:r}){let[i,a]=(0,v.useState)(!1),o=(0,v.useRef)(!1);return(0,v.useEffect)(()=>{if(!(!t||o.current)){if(n&&e.connected)o.current=!0,e.selectTable(t);else if(e.tables.length>0){let n=e.tables.find(e=>e.name===t);n&&(o.current=!0,e.selectTable(n.name,n.schema))}}},[t,e.connected,e.tables]),(0,x.jsxs)(`div`,{className:`flex h-full w-full overflow-hidden`,children:[!n&&(0,x.jsxs)(`div`,{className:`w-48 shrink-0 flex flex-col bg-background overflow-hidden`,children:[(0,x.jsxs)(`div`,{className:`flex items-center justify-between px-3 py-2 border-b border-border`,children:[(0,x.jsx)(`span`,{className:`text-xs font-medium text-muted-foreground uppercase tracking-wider`,children:`Tables`}),(0,x.jsx)(`button`,{type:`button`,onClick:e.refreshTables,className:`text-muted-foreground hover:text-foreground transition-colors`,title:`Refresh`,children:(0,x.jsx)(u,{className:`size-3`})})]}),(0,x.jsxs)(`div`,{className:`flex-1 overflow-y-auto`,children:[e.tables.map(t=>(0,x.jsxs)(`button`,{type:`button`,onClick:()=>e.selectTable(t.name,t.schema),className:`w-full flex items-center gap-2 px-3 py-1.5 text-left text-xs transition-colors ${e.selectedTable===t.name?`bg-muted text-foreground`:`text-muted-foreground hover:bg-muted/50 hover:text-foreground`}`,children:[(0,x.jsx)(c,{className:`size-3 shrink-0`}),(0,x.jsxs)(`span`,{className:`truncate flex-1`,children:[t.schema===`public`?``:`${t.schema}.`,t.name]}),(0,x.jsx)(`span`,{className:`text-[10px] opacity-60`,children:t.rowCount})]},`${t.schema}.${t.name}`)),e.tables.length===0&&(0,x.jsx)(`p`,{className:`px-3 py-4 text-xs text-muted-foreground text-center`,children:`No tables found`})]})]}),(0,x.jsxs)(`div`,{className:`flex-1 flex flex-col overflow-hidden ${n?``:`border-l border-border`}`,children:[(0,x.jsxs)(`div`,{className:`flex items-center gap-2 px-3 py-1.5 border-b border-border bg-background shrink-0`,children:[(0,x.jsx)(d,{className:`size-3.5 text-muted-foreground`}),(0,x.jsx)(`span`,{className:`text-xs text-muted-foreground truncate`,children:r??`PostgreSQL`}),e.selectedTable&&(0,x.jsxs)(`span`,{className:`text-xs text-muted-foreground`,children:[`/ `,e.selectedTable]}),(0,x.jsx)(`div`,{className:`ml-auto`,children:(0,x.jsx)(`button`,{type:`button`,onClick:()=>a(e=>!e),className:`px-2 py-1 rounded text-xs transition-colors ${i?`bg-muted text-foreground`:`text-muted-foreground hover:text-foreground`}`,children:`SQL`})})]}),(0,x.jsx)(`div`,{className:`flex-1 overflow-hidden ${i?`max-h-[60%]`:``}`,children:(0,x.jsx)(T,{tableData:e.tableData,schema:e.schema,loading:e.loading,page:e.page,onPageChange:e.setPage,onCellUpdate:e.updateCell})}),i&&(0,x.jsx)(`div`,{className:`border-t border-border h-[40%] shrink-0`,children:(0,x.jsx)(E,{onExecute:e.executeQuery,result:e.queryResult,error:e.queryError,loading:e.queryLoading})})]})]})}function T({tableData:e,schema:t,loading:n,page:i,onPageChange:a,onCellUpdate:o}){let[s,c]=(0,v.useState)(null),[l,u]=(0,v.useState)(``),d=(0,v.useMemo)(()=>t.find(e=>e.pk)?.name??null,[t]),f=(0,v.useCallback)((e,t,n)=>{c({rowIdx:e,col:t}),u(n==null?``:String(n))},[]),y=(0,v.useCallback)(()=>{if(!s||!e||!d)return;let t=e.rows[s.rowIdx];if(!t)return;let n=t[s.col];String(n??``)!==l&&o(d,t[d],s.col,l===``?null:l),c(null)},[s,l,e,d,o]),b=(0,v.useCallback)(()=>c(null),[]),S=(0,v.useMemo)(()=>(e?.columns??[]).map(e=>({id:e,accessorFn:t=>t[e],header:()=>(0,x.jsx)(`span`,{className:t.find(t=>t.name===e)?.pk?`font-bold`:``,children:e}),cell:({row:t,getValue:n})=>{let r=s?.rowIdx===t.index&&s?.col===e,i=n();return r?(0,x.jsx)(`input`,{autoFocus:!0,className:`w-full bg-transparent border border-primary/50 rounded px-1 py-0 text-xs outline-none`,value:l,onChange:e=>u(e.target.value),onBlur:y,onKeyDown:e=>{e.key===`Enter`&&y(),e.key===`Escape`&&b()}}):(0,x.jsx)(`span`,{className:`cursor-pointer truncate block ${i==null?`text-muted-foreground/40 italic`:``}`,onDoubleClick:()=>d&&f(t.index,e,i),title:i==null?`NULL`:String(i),children:i==null?`NULL`:String(i)})}})),[e?.columns,t,s,l,y,b,f,d]),C=h({data:e?.rows??[],columns:S,getCoreRowModel:g()});if(!e)return(0,x.jsx)(`div`,{className:`flex items-center justify-center h-full text-xs text-muted-foreground`,children:n?(0,x.jsx)(p,{className:`size-4 animate-spin`}):`Select a table`});let w=Math.ceil(e.total/e.limit)||1;return(0,x.jsxs)(`div`,{className:`flex flex-col h-full overflow-hidden`,children:[(0,x.jsx)(`div`,{className:`flex-1 overflow-auto`,children:(0,x.jsxs)(`table`,{className:`w-full text-xs border-collapse`,children:[(0,x.jsx)(`thead`,{className:`sticky top-0 z-10 bg-muted`,children:C.getHeaderGroups().map(e=>(0,x.jsx)(`tr`,{children:e.headers.map(e=>(0,x.jsx)(`th`,{className:`px-2 py-1.5 text-left font-medium text-muted-foreground border-b border-border whitespace-nowrap`,children:_(e.column.columnDef.header,e.getContext())},e.id))},e.id))}),(0,x.jsxs)(`tbody`,{children:[C.getRowModel().rows.map(e=>(0,x.jsx)(`tr`,{className:`hover:bg-muted/30 border-b border-border/50`,children:e.getVisibleCells().map(e=>(0,x.jsx)(`td`,{className:`px-2 py-1 max-w-[300px]`,children:_(e.column.columnDef.cell,e.getContext())},e.id))},e.id)),e.rows.length===0&&(0,x.jsx)(`tr`,{children:(0,x.jsx)(`td`,{colSpan:e.columns.length,className:`px-2 py-8 text-center text-muted-foreground`,children:`No data`})})]})]})}),(0,x.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,x.jsxs)(`span`,{children:[e.total.toLocaleString(),` rows`]}),(0,x.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,x.jsx)(`button`,{type:`button`,disabled:i<=1,onClick:()=>a(i-1),className:`p-0.5 rounded hover:bg-muted disabled:opacity-30`,children:(0,x.jsx)(m,{className:`size-3.5`})}),(0,x.jsxs)(`span`,{children:[i,` / `,w]}),(0,x.jsx)(`button`,{type:`button`,disabled:i>=w,onClick:()=>a(i+1),className:`p-0.5 rounded hover:bg-muted disabled:opacity-30`,children:(0,x.jsx)(r,{className:`size-3.5`})})]})]})]})}function E({onExecute:e,result:t,error:n,loading:r}){let[c,l]=(0,v.useState)(`SELECT * FROM `),u=(0,v.useCallback)(()=>{let t=c.trim();t&&e(t)},[c,e]);return(0,x.jsxs)(`div`,{className:`flex flex-col h-full overflow-hidden`,children:[(0,x.jsxs)(`div`,{className:`flex items-start gap-1 border-b border-border bg-background`,onKeyDown:(0,v.useCallback)(e=>{(e.metaKey||e.ctrlKey)&&e.key===`Enter`&&(e.preventDefault(),u())},[u]),children:[(0,x.jsx)(`div`,{className:`flex-1 max-h-[120px] overflow-auto`,children:(0,x.jsx)(a,{value:c,onChange:l,extensions:[o({dialect:s})],basicSetup:{lineNumbers:!1,foldGutter:!1,highlightActiveLine:!1},className:`text-xs [&_.cm-editor]:!outline-none [&_.cm-scroller]:!overflow-auto`})}),(0,x.jsx)(`button`,{type:`button`,onClick:u,disabled:r,title:`Execute (Cmd+Enter)`,className:`shrink-0 m-1 p-1.5 rounded bg-primary text-primary-foreground hover:bg-primary/90 disabled:opacity-50 transition-colors`,children:r?(0,x.jsx)(p,{className:`size-3.5 animate-spin`}):(0,x.jsx)(i,{className:`size-3.5`})})]}),(0,x.jsxs)(`div`,{className:`flex-1 overflow-auto text-xs`,children:[n&&(0,x.jsx)(`div`,{className:`px-3 py-2 text-destructive bg-destructive/5`,children:n}),t?.changeType===`modify`&&(0,x.jsxs)(`div`,{className:`px-3 py-2 text-green-500`,children:[`Query executed. `,t.rowsAffected,` row(s) affected.`]}),t?.changeType===`select`&&t.rows.length>0&&(0,x.jsxs)(`table`,{className:`w-full border-collapse`,children:[(0,x.jsx)(`thead`,{className:`sticky top-0 bg-muted`,children:(0,x.jsx)(`tr`,{children:t.columns.map(e=>(0,x.jsx)(`th`,{className:`px-2 py-1 text-left font-medium text-muted-foreground border-b border-border whitespace-nowrap`,children:e},e))})}),(0,x.jsx)(`tbody`,{children:t.rows.map((e,n)=>(0,x.jsx)(`tr`,{className:`hover:bg-muted/30 border-b border-border/50`,children:t.columns.map(t=>(0,x.jsx)(`td`,{className:`px-2 py-1 max-w-[300px] truncate`,title:e[t]==null?`NULL`:String(e[t]),children:e[t]==null?(0,x.jsx)(`span`,{className:`text-muted-foreground/40 italic`,children:`NULL`}):String(e[t])},t))},n))})]}),t?.changeType===`select`&&t.rows.length===0&&(0,x.jsx)(`div`,{className:`px-3 py-2 text-muted-foreground`,children:`No results`})]})]})}export{S as PostgresViewer};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import"./react-nm2Ru1Pt.js";import"./react-dom-Bpkvzu3U.js";import"./jsx-runtime-BRW_vwa9.js";import"./input-BglMT33g.js";import"./dist-lF8CoYII.js";import"./api-client-BfBM3I7n.js";import"./api-settings-
|
|
1
|
+
import"./react-nm2Ru1Pt.js";import"./react-dom-Bpkvzu3U.js";import"./jsx-runtime-BRW_vwa9.js";import"./input-BglMT33g.js";import"./dist-lF8CoYII.js";import"./api-client-BfBM3I7n.js";import"./api-settings-Bx1GaNmQ.js";import{i as e}from"./index-DEeeRoka.js";export{e as SettingsTab};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{o as e}from"./chunk-CFjPhJqf.js";import{t}from"./react-nm2Ru1Pt.js";import{t as n}from"./jsx-runtime-BRW_vwa9.js";import{t as r}from"./chevron-right-DeV0ehiG.js";import{a as i,i as a,n as o,r as s}from"./dist-DylI9XxN.js";import{t as c}from"./table-C7X5UAEI.js";import{i as l,t as u}from"./api-client-BfBM3I7n.js";import{K as d,ft as f,gt as p,tt as m,vt as h}from"./index-DEeeRoka.js";import{n as g,r as _,t as v}from"./lib-BQ34Db2e.js";var y=e(t(),1);function b(e,t,n){let[r,i]=(0,y.useState)([]),[a,o]=(0,y.useState)(null),[s,c]=(0,y.useState)(null),[d,f]=(0,y.useState)([]),[p,m]=(0,y.useState)(!1),[h,g]=(0,y.useState)(null),[_,v]=(0,y.useState)(1),[b,x]=(0,y.useState)(null),[S,C]=(0,y.useState)(null),[w,T]=(0,y.useState)(!1),E=n?`/api/db/connections/${n}`:null,D=E??`${l(e)}/sqlite`,O=E?``:`path=${encodeURIComponent(t)}`,k=(0,y.useCallback)(async()=>{m(!0),g(null);try{let e=E?`?cached=1`:O?`?${O}`:``,t=await u.get(`${D}/tables${e}`);i(t),!E&&t.length>0&&!a&&o(t[0].name)}catch(e){g(e.message)}finally{m(!1)}},[D,O,E]);(0,y.useEffect)(()=>{k()},[k]);let A=(0,y.useCallback)(async()=>{if(a){m(!0);try{let e=O?`${O}&`:``,[t,n]=await Promise.all([u.get(`${D}/data?${e}table=${encodeURIComponent(a)}&page=${_}&limit=100`),u.get(`${D}/schema?${e}table=${encodeURIComponent(a)}`)]);c(t),f(n)}catch(e){g(e.message)}finally{m(!1)}}},[D,O,a,_]);return(0,y.useEffect)(()=>{A()},[A]),{tables:r,selectedTable:a,selectTable:(0,y.useCallback)(e=>{o(e),v(1),x(null)},[]),tableData:s,schema:d,loading:p,error:h,page:_,setPage:v,queryResult:b,queryError:S,queryLoading:w,executeQuery:(0,y.useCallback)(async e=>{T(!0),C(null);try{let n=E?{sql:e}:{path:t,sql:e},r=await u.post(`${D}/query`,n);x(r),r.changeType===`modify`&&A()}catch(e){C(e.message)}finally{T(!1)}},[D,E,t,A]),updateCell:(0,y.useCallback)(async(e,n,r)=>{if(a)try{E?await u.put(`${D}/cell`,{table:a,pkColumn:`rowid`,pkValue:e,column:n,value:r}):await u.put(`${D}/cell`,{path:t,table:a,rowid:e,column:n,value:r}),A()}catch(e){g(e.message)}},[D,E,t,a,A]),refreshTables:k,refreshData:A}}var x=n();function S({tables:e,selectedTable:t,onSelect:n,onRefresh:r}){return(0,x.jsxs)(`div`,{className:`w-48 shrink-0 flex flex-col bg-background overflow-hidden`,children:[(0,x.jsxs)(`div`,{className:`flex items-center justify-between px-3 py-2 border-b border-border`,children:[(0,x.jsx)(`span`,{className:`text-xs font-medium text-muted-foreground uppercase tracking-wider`,children:`Tables`}),(0,x.jsx)(`button`,{type:`button`,onClick:r,className:`text-muted-foreground hover:text-foreground transition-colors`,title:`Refresh tables`,children:(0,x.jsx)(d,{className:`size-3`})})]}),(0,x.jsxs)(`div`,{className:`flex-1 overflow-y-auto`,children:[e.map(e=>(0,x.jsxs)(`button`,{type:`button`,onClick:()=>n(e.name),className:`w-full flex items-center gap-2 px-3 py-1.5 text-left text-xs transition-colors ${t===e.name?`bg-muted text-foreground`:`text-muted-foreground hover:bg-muted/50 hover:text-foreground`}`,children:[(0,x.jsx)(c,{className:`size-3 shrink-0`}),(0,x.jsx)(`span`,{className:`truncate flex-1`,children:e.name}),(0,x.jsx)(`span`,{className:`text-[10px] opacity-60`,children:e.rowCount})]},e.name)),e.length===0&&(0,x.jsx)(`p`,{className:`px-3 py-4 text-xs text-muted-foreground text-center`,children:`No tables found`})]})]})}function C({tableData:e,schema:t,loading:n,page:i,onPageChange:a,onCellUpdate:o}){if(!e)return(0,x.jsx)(`div`,{className:`flex items-center justify-center h-full text-xs text-muted-foreground`,children:n?(0,x.jsx)(m,{className:`size-4 animate-spin`}):`Select a table`});let s=Math.ceil(e.total/e.limit)||1;return(0,x.jsxs)(`div`,{className:`flex flex-col h-full overflow-hidden`,children:[(0,x.jsx)(`div`,{className:`flex-1 overflow-auto`,children:(0,x.jsx)(w,{columns:e.columns,rows:e.rows,schema:t,onCellUpdate:o})}),(0,x.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,x.jsxs)(`span`,{children:[e.total.toLocaleString(),` rows`]}),(0,x.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,x.jsx)(`button`,{type:`button`,disabled:i<=1,onClick:()=>a(i-1),className:`p-0.5 rounded hover:bg-muted disabled:opacity-30`,children:(0,x.jsx)(h,{className:`size-3.5`})}),(0,x.jsxs)(`span`,{children:[i,` / `,s]}),(0,x.jsx)(`button`,{type:`button`,disabled:i>=s,onClick:()=>a(i+1),className:`p-0.5 rounded hover:bg-muted disabled:opacity-30`,children:(0,x.jsx)(r,{className:`size-3.5`})})]})]})]})}function w({columns:e,rows:t,schema:n,onCellUpdate:r}){let[i,a]=(0,y.useState)(null),[o,s]=(0,y.useState)(``),c=(0,y.useMemo)(()=>new Set(n.filter(e=>e.pk).map(e=>e.name)),[n]),l=(0,y.useCallback)((e,t,n)=>{t!==`rowid`&&(a({rowIdx:e,col:t}),s(n==null?``:String(n)))},[]),u=(0,y.useCallback)(()=>{if(!i)return;let e=t[i.rowIdx];if(!e)return;let n=e.rowid,s=e[i.col];String(s??``)!==o&&r(n,i.col,o===``?null:o),a(null)},[i,o,t,r]),d=(0,y.useCallback)(()=>a(null),[]),f=g({data:t,columns:(0,y.useMemo)(()=>e.map(e=>({id:e,accessorFn:t=>t[e],header:()=>(0,x.jsx)(`span`,{className:`${c.has(e)?`font-bold`:``} ${e===`rowid`?`text-muted-foreground/50`:``}`,children:e}),cell:({row:t,getValue:n})=>{let r=t.index,a=i?.rowIdx===r&&i?.col===e,c=n();return a?(0,x.jsx)(`input`,{autoFocus:!0,className:`w-full bg-transparent border border-primary/50 rounded px-1 py-0 text-xs outline-none`,value:o,onChange:e=>s(e.target.value),onBlur:u,onKeyDown:e=>{e.key===`Enter`&&u(),e.key===`Escape`&&d()}}):(0,x.jsx)(`span`,{className:`cursor-pointer truncate block ${c==null?`text-muted-foreground/40 italic`:``} ${e===`rowid`?`text-muted-foreground/50`:``}`,onDoubleClick:()=>l(r,e,c),title:c==null?`NULL`:String(c),children:c==null?`NULL`:String(c)})}})),[e,c,i,o,u,d,l]),getCoreRowModel:_()});return(0,x.jsxs)(`table`,{className:`w-full text-xs border-collapse`,children:[(0,x.jsx)(`thead`,{className:`sticky top-0 z-10 bg-muted`,children:f.getHeaderGroups().map(e=>(0,x.jsx)(`tr`,{children:e.headers.map(e=>(0,x.jsx)(`th`,{className:`px-2 py-1.5 text-left font-medium text-muted-foreground border-b border-border whitespace-nowrap`,children:v(e.column.columnDef.header,e.getContext())},e.id))},e.id))}),(0,x.jsxs)(`tbody`,{children:[f.getRowModel().rows.map(e=>(0,x.jsx)(`tr`,{className:`hover:bg-muted/30 border-b border-border/50`,children:e.getVisibleCells().map(e=>(0,x.jsx)(`td`,{className:`px-2 py-1 max-w-[300px]`,children:v(e.column.columnDef.cell,e.getContext())},e.id))},e.id)),t.length===0&&(0,x.jsx)(`tr`,{children:(0,x.jsx)(`td`,{colSpan:e.length,className:`px-2 py-8 text-center text-muted-foreground`,children:`No data`})})]})]})}function T({onExecute:e,result:t,error:n,loading:r}){let[c,l]=(0,y.useState)(`SELECT * FROM `),u=(0,y.useCallback)(()=>{let t=c.trim();t&&e(t)},[c,e]);return(0,x.jsxs)(`div`,{className:`flex flex-col h-full overflow-hidden`,children:[(0,x.jsxs)(`div`,{className:`flex items-start gap-1 border-b border-border bg-background`,onKeyDown:(0,y.useCallback)(e=>{(e.metaKey||e.ctrlKey)&&e.key===`Enter`&&(e.preventDefault(),u())},[u]),children:[(0,x.jsx)(`div`,{className:`flex-1 max-h-[120px] overflow-auto`,children:(0,x.jsx)(a,{value:c,onChange:l,extensions:[s({dialect:o})],basicSetup:{lineNumbers:!1,foldGutter:!1,highlightActiveLine:!1},className:`text-xs [&_.cm-editor]:!outline-none [&_.cm-scroller]:!overflow-auto`})}),(0,x.jsx)(`button`,{type:`button`,onClick:u,disabled:r,className:`shrink-0 m-1 p-1.5 rounded bg-primary text-primary-foreground hover:bg-primary/90 disabled:opacity-50 transition-colors`,title:`Execute (Cmd+Enter)`,children:r?(0,x.jsx)(m,{className:`size-3.5 animate-spin`}):(0,x.jsx)(i,{className:`size-3.5`})})]}),(0,x.jsxs)(`div`,{className:`flex-1 overflow-auto text-xs`,children:[n&&(0,x.jsx)(`div`,{className:`px-3 py-2 text-destructive bg-destructive/5`,children:n}),t&&t.changeType===`modify`&&(0,x.jsxs)(`div`,{className:`px-3 py-2 text-green-500`,children:[`Query executed. `,t.rowsAffected,` row(s) affected.`]}),t&&t.changeType===`select`&&t.rows.length>0&&(0,x.jsxs)(`table`,{className:`w-full border-collapse`,children:[(0,x.jsx)(`thead`,{className:`sticky top-0 bg-muted`,children:(0,x.jsx)(`tr`,{children:t.columns.map(e=>(0,x.jsx)(`th`,{className:`px-2 py-1 text-left font-medium text-muted-foreground border-b border-border whitespace-nowrap`,children:e},e))})}),(0,x.jsx)(`tbody`,{children:t.rows.map((e,n)=>(0,x.jsx)(`tr`,{className:`hover:bg-muted/30 border-b border-border/50`,children:t.columns.map(t=>(0,x.jsx)(`td`,{className:`px-2 py-1 max-w-[300px] truncate`,title:e[t]==null?`NULL`:String(e[t]),children:e[t]==null?(0,x.jsx)(`span`,{className:`text-muted-foreground/40 italic`,children:`NULL`}):String(e[t])},t))},n))})]}),t&&t.changeType===`select`&&t.rows.length===0&&(0,x.jsx)(`div`,{className:`px-3 py-2 text-muted-foreground`,children:`No results`})]})]})}function E({metadata:e}){let t=e?.filePath,n=e?.projectName,r=e?.connectionId,i=e?.tableName,[a,o]=(0,y.useState)(!1);return r?(0,x.jsx)(D,{projectName:``,dbPath:``,connectionId:r,connectionName:e?.connectionName,initialTable:i,queryPanelOpen:a,onToggleQueryPanel:()=>o(e=>!e),hideTableList:!0}):!t||!n?(0,x.jsxs)(`div`,{className:`flex items-center justify-center h-full text-text-secondary text-sm`,children:[(0,x.jsx)(f,{className:`size-5 mr-2`}),` No database file selected.`]}):(0,x.jsx)(D,{projectName:n,dbPath:t,queryPanelOpen:a,onToggleQueryPanel:()=>o(e=>!e)})}function D({projectName:e,dbPath:t,connectionId:n,connectionName:r,initialTable:i,queryPanelOpen:a,onToggleQueryPanel:o,hideTableList:s}){let c=b(e,t,n),l=(0,y.useRef)(!1);return(0,y.useEffect)(()=>{i&&!l.current&&c.tables.length>0&&(l.current=!0,c.selectTable(i))},[i,c.tables]),c.error&&c.tables.length===0?(0,x.jsxs)(`div`,{className:`flex flex-col items-center justify-center h-full gap-3 text-text-secondary`,children:[(0,x.jsx)(p,{className:`size-10 text-destructive`}),(0,x.jsx)(`p`,{className:`text-sm`,children:c.error})]}):c.loading&&c.tables.length===0?(0,x.jsxs)(`div`,{className:`flex items-center justify-center h-full gap-2 text-text-secondary`,children:[(0,x.jsx)(m,{className:`size-5 animate-spin`}),(0,x.jsx)(`span`,{className:`text-sm`,children:`Loading database...`})]}):(0,x.jsxs)(`div`,{className:`flex h-full w-full overflow-hidden`,children:[!s&&(0,x.jsx)(S,{tables:c.tables,selectedTable:c.selectedTable,onSelect:c.selectTable,onRefresh:c.refreshTables}),(0,x.jsxs)(`div`,{className:`flex-1 flex flex-col overflow-hidden ${s?``:`border-l border-border`}`,children:[(0,x.jsxs)(`div`,{className:`flex items-center gap-2 px-3 py-1.5 border-b border-border bg-background shrink-0`,children:[(0,x.jsx)(f,{className:`size-3.5 text-muted-foreground`}),(0,x.jsx)(`span`,{className:`text-xs text-muted-foreground truncate`,children:r??t}),(0,x.jsx)(`span`,{className:`text-xs text-muted-foreground`,children:c.selectedTable&&`/ ${c.selectedTable}`}),(0,x.jsx)(`div`,{className:`ml-auto`,children:(0,x.jsx)(`button`,{type:`button`,onClick:o,className:`px-2 py-1 rounded text-xs transition-colors ${a?`bg-muted text-foreground`:`text-muted-foreground hover:text-foreground`}`,children:`SQL`})})]}),(0,x.jsx)(`div`,{className:`flex-1 overflow-hidden ${a?`max-h-[60%]`:``}`,children:(0,x.jsx)(C,{tableData:c.tableData,schema:c.schema,loading:c.loading,page:c.page,onPageChange:c.setPage,onCellUpdate:c.updateCell})}),a&&(0,x.jsx)(`div`,{className:`border-t border-border h-[40%] shrink-0`,children:(0,x.jsx)(T,{onExecute:c.executeQuery,result:c.queryResult,error:c.queryError,loading:c.queryLoading})})]})]})}export{E as SqliteViewer};
|