@electric-sql/pglite-repl 0.0.1-alpha.0 → 0.2.0
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/dist/Repl.d.ts +8 -2
- package/dist/Repl.js +30 -10
- package/dist/Repl.js.map +1 -1
- package/dist/Repl.umd.cjs +30 -10
- package/dist/Repl.umd.cjs.map +1 -1
- package/dist/style.css +3 -3
- package/dist-webcomponent/Repl.js +147 -85
- package/dist-webcomponent/Repl.js.map +1 -1
- package/dist-webcomponent/src/Repl.d.ts +8 -2
- package/dist-webcomponent/src-webcomponent/main.d.ts +3 -3
- package/package.json +12 -10
package/dist/Repl.umd.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Repl.umd.cjs","sources":["../src/sqlSupport.ts","../src/utils.ts","../src/ReplTable.tsx","../src/ReplResponse.tsx","../src/Repl.tsx"],"sourcesContent":["import {\n PostgreSQL,\n SQLConfig,\n keywordCompletionSource,\n schemaCompletionSource,\n} from \"@codemirror/lang-sql\";\nimport { CompletionContext, CompletionResult } from \"@codemirror/autocomplete\";\nimport { LanguageSupport } from \"@codemirror/language\";\n\nconst describeCompletions = [\n {\n label: \"\\\\d\",\n type: \"function\",\n displayLabel: \"\\\\d[S+] [ pattern ]\",\n detail: \"PSQL Describe\",\n },\n {\n label: \"\\\\da\",\n type: \"function\",\n displayLabel: \"\\\\da[S] [ pattern ]\",\n detail: \"Lists aggregate functions\",\n },\n {\n label: \"\\\\dA\",\n type: \"function\",\n displayLabel: \"\\\\dA[+] [ pattern ]\",\n detail: \"Lists access methods\",\n },\n {\n label: \"\\\\dAc\",\n type: \"function\",\n displayLabel: \"\\\\dAc[+] [access-method-pattern [input-type-pattern]]\",\n detail: \"Lists operator classes\",\n },\n {\n label: \"\\\\dAf\",\n type: \"function\",\n displayLabel: \"\\\\dAf[+] [access-method-pattern [input-type-pattern]]\",\n detail: \"Lists operator families\",\n },\n {\n label: \"\\\\dAo\",\n type: \"function\",\n displayLabel: \"\\\\dAo[+] [access-method-pattern [operator-family-pattern]]\",\n detail: \"Lists operators associated with operator families\",\n },\n {\n label: \"\\\\dAp\",\n type: \"function\",\n displayLabel: \"\\\\dAp[+] [access-method-pattern [operator-family-pattern]]\",\n detail: \"Lists support functions associated with operator families\",\n },\n {\n label: \"\\\\db\",\n type: \"function\",\n displayLabel: \"\\\\db[+] [ pattern ]\",\n detail: \"Lists tablespaces\",\n },\n {\n label: \"\\\\dc\",\n type: \"function\",\n displayLabel: \"\\\\dc[S+] [ pattern ]\",\n detail: \"Lists conversions between character-set encodings\",\n },\n {\n label: \"\\\\dconfig\",\n type: \"function\",\n displayLabel: \"\\\\dconfig[+] [ pattern ]\",\n detail: \"Lists server configuration parameters and their values\",\n },\n {\n label: \"\\\\dC\",\n type: \"function\",\n displayLabel: \"\\\\dC[+] [ pattern ]\",\n detail: \"Lists type casts\",\n },\n {\n label: \"\\\\dd\",\n type: \"function\",\n displayLabel: \"\\\\dd[S] [ pattern ]\",\n detail:\n \"Shows the descriptions of objects of type constraint, operator class, operator family, rule, and trigger\",\n },\n {\n label: \"\\\\dD\",\n type: \"function\",\n displayLabel: \"\\\\dD[S+] [ pattern ]\",\n detail: \"Lists domains\",\n },\n {\n label: \"\\\\ddp\",\n type: \"function\",\n displayLabel: \"\\\\ddp [ pattern ]\",\n detail: \"Lists default access privilege settings\",\n },\n {\n label: \"\\\\dE\",\n type: \"function\",\n displayLabel: \"\\\\dE[S+] [ pattern ]\",\n detail: \"Lists foreign tables\",\n },\n {\n label: \"\\\\di\",\n type: \"function\",\n displayLabel: \"\\\\di[S+] [ pattern ]\",\n detail: \"Lists indexes\",\n },\n {\n label: \"\\\\dm\",\n type: \"function\",\n displayLabel: \"\\\\dm[S+] [ pattern ]\",\n detail: \"Lists materialized views\",\n },\n {\n label: \"\\\\ds\",\n type: \"function\",\n displayLabel: \"\\\\ds[S+] [ pattern ]\",\n detail: \"Lists sequences\",\n },\n {\n label: \"\\\\dt\",\n type: \"function\",\n displayLabel: \"\\\\dt[S+] [ pattern ]\",\n detail: \"Lists tables\",\n },\n {\n label: \"\\\\dv\",\n type: \"function\",\n displayLabel: \"\\\\dv[S+] [ pattern ]\",\n detail: \"Lists views\",\n },\n {\n label: \"\\\\des\",\n type: \"function\",\n displayLabel: \"\\\\des[+] [ pattern ]\",\n detail: \"Lists foreign servers\",\n },\n {\n label: \"\\\\det\",\n type: \"function\",\n displayLabel: \"\\\\det[+] [ pattern ]\",\n detail: \"Lists foreign tables\",\n },\n {\n label: \"\\\\deu\",\n type: \"function\",\n displayLabel: \"\\\\deu[+] [ pattern ]\",\n detail: \"Lists user mappings\",\n },\n {\n label: \"\\\\dew\",\n type: \"function\",\n displayLabel: \"\\\\dew[+] [ pattern ]\",\n detail: \"Lists foreign-data wrappers\",\n },\n {\n label: \"\\\\df\",\n type: \"function\",\n displayLabel: \"\\\\df[anptwS+] [ pattern [ arg_pattern ... ] ]\",\n detail: \"Lists functions\",\n },\n {\n label: \"\\\\dF\",\n type: \"function\",\n displayLabel: \"\\\\dF[+] [ pattern ]\",\n detail: \"Lists text search configurations\",\n },\n {\n label: \"\\\\dFd\",\n type: \"function\",\n displayLabel: \"\\\\dFd[+] [ pattern ]\",\n detail: \"Lists text search dictionaries\",\n },\n {\n label: \"\\\\dFp\",\n type: \"function\",\n displayLabel: \"\\\\dFp[+] [ pattern ]\",\n detail: \"Lists text search parsers\",\n },\n {\n label: \"\\\\dFt\",\n type: \"function\",\n displayLabel: \"\\\\dFt[+] [ pattern ]\",\n detail: \"Lists text search templates\",\n },\n {\n label: \"\\\\dg\",\n type: \"function\",\n displayLabel: \"\\\\dg[S+] [ pattern ]\",\n detail: \"Lists database roles\",\n },\n {\n label: \"\\\\dl\",\n type: \"function\",\n displayLabel: \"\\\\dl[+] \",\n detail: \"List large objects\",\n },\n {\n label: \"\\\\dL\",\n type: \"function\",\n displayLabel: \"\\\\dL[S+] [ pattern ]\",\n detail: \"Lists procedural languages\",\n },\n {\n label: \"\\\\dn\",\n type: \"function\",\n displayLabel: \"\\\\dn[S+] [ pattern ]\",\n detail: \"Lists schemas\",\n },\n {\n label: \"\\\\do\",\n type: \"function\",\n displayLabel: \"\\\\do[S+] [ pattern [ arg_pattern [ arg_pattern ] ] ]\",\n detail: \"Lists operators with their operand and result types\",\n },\n {\n label: \"\\\\dO\",\n type: \"function\",\n displayLabel: \"\\\\dO[S+] [ pattern ]\",\n detail: \"Lists collations\",\n },\n {\n label: \"\\\\dp\",\n type: \"function\",\n displayLabel: \"\\\\dp[S] [ pattern ]\",\n detail:\n \"Lists tables, views and sequences with their associated access privileges\",\n },\n {\n label: \"\\\\dP\",\n type: \"function\",\n displayLabel: \"\\\\dP[itn+] [ pattern ]\",\n detail: \"Lists partitioned relations\",\n },\n {\n label: \"\\\\drds\",\n type: \"function\",\n displayLabel: \"\\\\drds [ role-pattern [ database-pattern ] ]\",\n detail: \"Lists defined configuration settings\",\n },\n {\n label: \"\\\\drg\",\n type: \"function\",\n displayLabel: \"\\\\drg[S] [ pattern ]\",\n detail: \"Lists information about each granted role membership\",\n },\n {\n label: \"\\\\dRp\",\n type: \"function\",\n displayLabel: \"\\\\dRp[+] [ pattern ]\",\n detail: \"Lists replication publications\",\n },\n {\n label: \"\\\\dRs\",\n type: \"function\",\n displayLabel: \"\\\\dRs[+] [ pattern ]\",\n detail: \"Lists replication subscriptions\",\n },\n {\n label: \"\\\\dT\",\n type: \"function\",\n displayLabel: \"\\\\dT[S+] [ pattern ]\",\n detail: \"Lists data types\",\n },\n {\n label: \"\\\\du\",\n type: \"function\",\n displayLabel: \"\\\\du[S+] [ pattern ]\",\n detail: \"Lists database roles\",\n },\n {\n label: \"\\\\dx\",\n type: \"function\",\n displayLabel: \"\\\\dx[+] [ pattern ]\",\n detail: \"Lists installed extensions\",\n },\n {\n label: \"\\\\dX\",\n type: \"function\",\n displayLabel: \"\\\\dX [ pattern ]\",\n detail: \"Lists extended statistics\",\n },\n {\n label: \"\\\\dy\",\n type: \"function\",\n displayLabel: \"\\\\dy[+] [ pattern ]\",\n detail: \"Lists event triggers\",\n },\n];\n\nfunction describeCompletionsAutoComplete(\n context: CompletionContext,\n): CompletionResult | null {\n const word = context.matchBefore(/\\\\\\w*/);\n if (!word || word.from === word.to) return null;\n return {\n from: word.from,\n options: describeCompletions,\n };\n}\n\n// This is a reimplemented version of `sql()` from `@codemirror/lang-sql` that\n// includes a custom autocompletion function for postgresql's `\\d` command.\nexport function makeSqlExt(config: SQLConfig = {}) {\n let lang = config.dialect || PostgreSQL;\n return new LanguageSupport(lang.language, [\n // schemaCompletion(config),\n config.schema\n ? lang.language.data.of({\n autocomplete: schemaCompletionSource(config),\n })\n : [],\n // keywordCompletion(lang, !!config.upperCaseKeywords)\n lang.language.data.of({\n autocomplete: keywordCompletionSource(lang, !!config.upperCaseKeywords),\n }),\n lang.language.data.of({\n autocomplete: describeCompletionsAutoComplete,\n }),\n ]);\n}\n","import { type PGlite } from \"@electric-sql/pglite\";\nimport { describe } from \"psql-describe\";\nimport type { Results, Response } from \"./types\";\n\nexport async function runQuery(query: string, pg: PGlite): Promise<Response> {\n if (query.trim().toLowerCase().startsWith(\"\\\\\")) {\n return runDescribe(query, pg);\n }\n const start = performance.now();\n try {\n const result = await pg.exec(query, {\n rowMode: \"array\",\n });\n const elapsed = performance.now() - start;\n return {\n query,\n results: result as any[],\n time: elapsed,\n };\n } catch (err) {\n return {\n query,\n error: (err as Error).message,\n time: performance.now() - start,\n };\n }\n}\n\nexport async function runDescribe(\n query: string,\n pg: PGlite,\n): Promise<Response> {\n const start = performance.now();\n let out: any;\n let ret: Results;\n const { promise, cancel: _cancel } = describe(\n query,\n \"postgres\",\n async (sql) => {\n ret = (await pg.exec(sql, { rowMode: \"array\" }))[0] as Results;\n return {\n rows: ret.rows,\n fields: ret.fields,\n rowCount: ret.rows.length,\n };\n },\n (output) => {\n out = output;\n },\n );\n await promise;\n const elapsed = performance.now() - start;\n\n if (!out) {\n return {\n query,\n error: \"No output\",\n time: elapsed,\n };\n } else if (typeof out === \"string\") {\n if (out.startsWith(\"ERROR:\")) {\n return {\n query,\n error: out,\n time: elapsed,\n };\n } else {\n return {\n query,\n text: out,\n time: elapsed,\n };\n }\n } else {\n return {\n query,\n text: out.title,\n results: [ret!],\n time: elapsed,\n };\n }\n}\n\nexport async function getSchema(pg: PGlite): Promise<Record<string, string[]>> {\n const ret = await pg.query<{\n schema: string;\n table: string;\n columns: string;\n }>(`\n SELECT \n table_schema AS schema,\n table_name AS table,\n array_agg(column_name) AS columns\n FROM \n information_schema.columns\n GROUP BY \n table_schema, table_name\n ORDER BY \n table_schema, table_name;\n `);\n const schema: Record<string, string[]> = {};\n for (const row of ret.rows) {\n schema[`${row.schema}.${row.table}`] = Array.isArray(row.columns)\n ? row.columns\n : row.columns.slice(1, -1).split(\",\");\n }\n return schema;\n}\n","import { useState, useEffect } from \"react\";\nimport type { Results } from \"./types\";\n\nconst tableRowIncrement = 100;\nconst maxCellLength = 200;\n\nfunction cellClass(value: any) {\n if (value === null) {\n return \"PGliteRepl-null\";\n } else if (typeof value === \"number\") {\n return \"PGliteRepl-number\";\n } else if (typeof value === \"boolean\") {\n return \"PGliteRepl-boolean\";\n } else {\n return \"\";\n }\n}\n\nfunction cellValue(value: any) {\n let str: string;\n if (value === null) {\n str = \"null\";\n } else if (typeof value === \"number\") {\n str = value.toString();\n } else if (typeof value === \"boolean\") {\n str = value ? \"true\" : \"false\";\n } else if (value instanceof Date) {\n str = value.toISOString();\n } else if (Array.isArray(value)) {\n str = `[${value.map(cellValue).join(\", \")}]`;\n } else if (typeof value === \"object\") {\n str = JSON.stringify(value);\n } else if (ArrayBuffer.isView(value)) {\n str = `${value.byteLength} bytes`;\n } else {\n str = value.toString();\n }\n return str.length > maxCellLength ? str.slice(0, maxCellLength) + \"…\" : str;\n}\n\nexport function ReplTable({ result }: { result: Results }) {\n const [maxRows, setMaxRows] = useState(tableRowIncrement);\n const rows = result.rows.slice(0, maxRows);\n\n useEffect(() => {\n // Reset maxRows when the result changes\n setMaxRows(tableRowIncrement);\n }, [result]);\n\n const showMore = () => {\n setMaxRows((prev) => prev + tableRowIncrement);\n };\n\n return (\n <>\n <div className=\"PGliteRepl-table-scroll\">\n <table className=\"PGliteRepl-table\">\n <thead>\n <tr>\n {result.fields.map((col, i) => (\n <th key={i}>{col.name}</th>\n ))}\n </tr>\n {/* <tr>\n {result.fields.map((col, i) => (\n <th key={i}>{col.dataTypeID}</th>\n ))}\n </tr> */}\n </thead>\n <tbody>\n {rows.map((row, i) => (\n <tr key={i}>\n {row.map((col, j) => (\n <td key={j} className={cellClass(col)}>\n {cellValue(col)}\n </td>\n ))}\n </tr>\n ))}\n </tbody>\n </table>\n </div>\n <div className=\"PGliteRepl-table-row-count\">\n {result.rows.length > maxRows ? `${maxRows} of ` : \"\"}\n {result.rows.length} rows{\" \"}\n {result.rows.length > maxRows && (\n <a\n href=\"\"\n onClick={(e) => {\n e.preventDefault();\n showMore();\n }}\n >\n Show more\n </a>\n )}\n </div>\n </>\n );\n}\n","import type { Results, Response } from \"./types\";\nimport { ReplTable } from \"./ReplTable\";\n\nfunction OutLine({ result }: { result: Results }) {\n return (\n <div className=\"PGliteRepl-line\">\n {result.fields.length > 0 ? (\n <ReplTable result={result} />\n ) : (\n <div className=\"PGliteRepl-null\">null</div>\n )}\n </div>\n );\n}\n\nexport function ReplResponse({\n response,\n showTime,\n}: {\n response: Response;\n showTime: boolean;\n}) {\n let out;\n if (response.error) {\n out = (\n <div className=\"PGliteRepl-line PGliteRepl-error\">{response.error}</div>\n );\n } else {\n out = (\n <>\n {response.results?.map((result, i) => (\n <OutLine key={i} result={result} />\n ))}\n </>\n );\n }\n return (\n <>\n <pre className=\"PGliteRepl-line PGliteRepl-query\">{response.query}</pre>\n {response.text && (\n <div className=\"PGliteRepl-line PGliteRepl-text\">{response.text}</div>\n )}\n {out}\n <div className=\"PGliteRepl-divider\">\n <hr />\n {showTime && (\n <div className=\"PGliteRepl-time\">{response.time.toFixed(1)}ms</div>\n )}\n </div>\n </>\n );\n}\n","import { useState, useCallback, useMemo, useRef, useEffect } from \"react\";\nimport CodeMirror, {\n type ViewUpdate,\n type ReactCodeMirrorRef,\n type Extension,\n} from \"@uiw/react-codemirror\";\nimport { defaultKeymap } from \"@codemirror/commands\";\nimport { keymap } from \"@codemirror/view\";\nimport { PostgreSQL } from \"@codemirror/lang-sql\";\nimport { type PGlite } from \"@electric-sql/pglite\";\nimport { makeSqlExt } from \"./sqlSupport\";\nimport type { Response } from \"./types\";\nimport { runQuery, getSchema } from \"./utils\";\nimport { ReplResponse } from \"./ReplResponse\";\nimport { xcodeDark, xcodeLight } from \"@uiw/codemirror-theme-xcode\";\n\nimport \"./Repl.css\";\n\n// Filter out the Enter key from the default keymap, we entirely override its behavior\n// to run the query when the user presses Enter.\n// We keep the up and down arrow keys as we only override their behavior\n// when the cursor is on the first or last line.\nconst baseKeymap = defaultKeymap.filter((key) => key.key !== \"Enter\");\n\nexport type ReplTheme = \"light\" | \"dark\" | \"auto\";\n\nexport interface ReplProps {\n pg: PGlite;\n border?: boolean;\n lightTheme?: Extension;\n darkTheme?: Extension;\n theme?: ReplTheme;\n showTime?: boolean;\n disableUpdateSchema?: boolean;\n}\n\nexport function Repl({\n pg,\n border = false,\n lightTheme = xcodeLight,\n darkTheme = xcodeDark,\n theme = \"auto\",\n showTime = false,\n disableUpdateSchema = false,\n}: ReplProps) {\n const [value, setValue] = useState(\"\");\n const valueNoHistory = useRef(\"\");\n const [loading, setLoading] = useState(true);\n const [output, setOutput] = useState<Response[]>([]);\n const outputRef = useRef<HTMLDivElement | null>(null);\n const [schema, setSchema] = useState<Record<string, string[]>>({});\n const historyPos = useRef(-1);\n const rcm = useRef<ReactCodeMirrorRef | null>(null);\n const [themeToUse, setThemeToUse] = useState<Extension>(\n theme === \"dark\" ? darkTheme : lightTheme,\n );\n const [styles, setStyles] = useState<{ [key: string]: string | number }>({});\n\n useEffect(() => {\n let ignore = false;\n const init = async () => {\n await pg.waitReady;\n if (ignore) return;\n setLoading(false);\n };\n setLoading(true);\n init();\n return () => {\n ignore = true;\n };\n }, [pg]);\n\n useEffect(() => {\n if (theme === \"auto\") {\n const systemTheme = window.matchMedia(\"(prefers-color-scheme: dark)\")\n .matches\n ? \"dark\"\n : \"light\";\n setThemeToUse(systemTheme === \"dark\" ? darkTheme : lightTheme);\n const listener = (e: MediaQueryListEvent) => {\n setThemeToUse(e.matches ? darkTheme : lightTheme);\n setTimeout(() => {\n extractStyles();\n }, 0);\n };\n window\n .matchMedia(\"(prefers-color-scheme: dark)\")\n .addEventListener(\"change\", listener);\n return () => {\n window\n .matchMedia(\"(prefers-color-scheme: dark)\")\n .removeEventListener(\"change\", listener);\n };\n } else {\n setThemeToUse(theme === \"dark\" ? darkTheme : lightTheme);\n setTimeout(() => {\n extractStyles();\n }, 0);\n }\n }, [theme, lightTheme, darkTheme]);\n\n const onChange = useCallback((val: string, _viewUpdate: ViewUpdate) => {\n extractStyles();\n setValue(val);\n if (historyPos.current === -1) {\n valueNoHistory.current = val;\n }\n }, []);\n\n const extensions = useMemo(\n () => [\n keymap.of([\n {\n key: \"Enter\",\n preventDefault: true,\n run: () => {\n if (value.trim() === \"\") return false; // Do nothing if the input is empty\n runQuery(value, pg).then((response) => {\n setOutput((prev) => [...prev, response]);\n if (outputRef.current) {\n setTimeout(() => {\n outputRef.current!.scrollTop =\n outputRef.current!.scrollHeight;\n }, 0);\n }\n // Update the schema for any new tables to be used in autocompletion\n if (!disableUpdateSchema) {\n getSchema(pg).then(setSchema);\n }\n });\n historyPos.current = -1;\n valueNoHistory.current = \"\";\n setValue(\"\");\n return true;\n },\n },\n {\n key: \"ArrowUp\",\n run: (view) => {\n const state = view.state;\n const cursorLine = state.doc.lineAt(\n state.selection.main.head,\n ).number;\n if (cursorLine === 1) {\n // If the cursor is on the first line, go back in history\n const currentPos = historyPos.current;\n historyPos.current++;\n if (historyPos.current >= output.length) {\n historyPos.current = output.length - 1;\n }\n if (historyPos.current < -1) {\n historyPos.current = -1;\n }\n if (historyPos.current === currentPos) return true;\n if (historyPos.current === -1) {\n setValue(valueNoHistory.current);\n } else {\n setValue(output[output.length - historyPos.current - 1].query);\n }\n return true; // Prevent the default behavior\n }\n return false; // Allow the default behavior\n },\n },\n {\n key: \"ArrowDown\",\n run: (view) => {\n const state = view.state;\n const cursorLine = state.doc.lineAt(\n state.selection.main.head,\n ).number;\n const lastLine = state.doc.lines;\n if (cursorLine === lastLine) {\n // If the cursor is on the last line, go forward in history\n const currentPos = historyPos.current;\n historyPos.current--;\n if (historyPos.current >= output.length) {\n historyPos.current = output.length - 1;\n }\n if (historyPos.current < -1) {\n historyPos.current = -1;\n }\n if (historyPos.current === currentPos) return true;\n if (historyPos.current === -1) {\n setValue(valueNoHistory.current);\n } else {\n setValue(output[output.length - historyPos.current - 1].query);\n }\n return true; // Prevent the default behavior\n }\n return false; // Allow the default behavior\n },\n },\n ...baseKeymap,\n ]),\n makeSqlExt({\n dialect: PostgreSQL,\n schema: schema,\n tables: [\n {\n label: \"d\",\n displayLabel: \"\\\\d\",\n },\n ],\n defaultSchema: \"public\",\n }),\n ],\n [pg, schema, value, output],\n );\n\n const extractStyles = () => {\n // Get the styles from the CodeMirror editor to use in the REPL\n const cmEditorEl = rcm.current?.editor!.querySelector(\".cm-editor\")!;\n const gutterEl = cmEditorEl.querySelector(\".cm-gutters\")!;\n const cmEditorElComputedStyles = window.getComputedStyle(cmEditorEl);\n const foregroundColor = cmEditorElComputedStyles.color;\n const backgroundColor = cmEditorElComputedStyles.backgroundColor;\n\n const gutterElComputedStyles = window.getComputedStyle(gutterEl!);\n const gutterBorder = gutterElComputedStyles.borderRight;\n const borderWidth = parseInt(gutterElComputedStyles.borderRightWidth) || 0;\n const borderColor = borderWidth\n ? gutterElComputedStyles.borderRightColor\n : foregroundColor.replace(\"rgb\", \"rgba\").replace(\")\", \", 0.15)\");\n const border = borderWidth\n ? gutterElComputedStyles.borderRight\n : `1px solid ${borderColor}`;\n\n setStyles({\n \"--PGliteRepl-foreground-color\": foregroundColor,\n \"--PGliteRepl-background-color\": backgroundColor,\n \"--PGliteRepl-border\": border,\n \"--PGliteRepl-gutter-border\": gutterBorder,\n \"--PGliteRepl-border-color\": borderColor,\n });\n };\n\n return (\n <div\n className={`\n PGliteRepl-root\n ${border ? \"PGliteRepl-root-border\" : \"\"}\n `}\n style={styles}\n >\n <div\n className=\"PGliteRepl-output\"\n ref={(ref) => (outputRef.current = ref)}\n >\n {loading && <div className=\"PGliteRepl-loading-msg\">Loading...</div>}\n {output.map((response, i) => (\n <div key={i}>\n <ReplResponse response={response || []} showTime={showTime} />\n </div>\n ))}\n </div>\n <CodeMirror\n ref={rcm}\n className={`PGliteRepl-input ${loading ? \"PGliteRepl-input-loading\" : \"\"}`}\n width=\"100%\"\n value={value}\n basicSetup={{\n defaultKeymap: false,\n }}\n extensions={extensions}\n theme={themeToUse}\n onChange={onChange}\n editable={!loading}\n onCreateEditor={() => {\n extractStyles();\n setTimeout(extractStyles, 0);\n getSchema(pg).then(setSchema);\n }}\n />\n </div>\n );\n}\n"],"names":["PostgreSQL","LanguageSupport","schemaCompletionSource","keywordCompletionSource","describe","useState","useEffect","jsxs","Fragment","jsx","defaultKeymap","xcodeLight","xcodeDark","useRef","useCallback","useMemo","keymap","view","border"],"mappings":";;;;AASA,QAAM,sBAAsB;AAAA,IAC1B;AAAA,MACE,OAAO;AAAA,MACP,MAAM;AAAA,MACN,cAAc;AAAA,MACd,QAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,OAAO;AAAA,MACP,MAAM;AAAA,MACN,cAAc;AAAA,MACd,QAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,OAAO;AAAA,MACP,MAAM;AAAA,MACN,cAAc;AAAA,MACd,QAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,OAAO;AAAA,MACP,MAAM;AAAA,MACN,cAAc;AAAA,MACd,QAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,OAAO;AAAA,MACP,MAAM;AAAA,MACN,cAAc;AAAA,MACd,QAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,OAAO;AAAA,MACP,MAAM;AAAA,MACN,cAAc;AAAA,MACd,QAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,OAAO;AAAA,MACP,MAAM;AAAA,MACN,cAAc;AAAA,MACd,QAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,OAAO;AAAA,MACP,MAAM;AAAA,MACN,cAAc;AAAA,MACd,QAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,OAAO;AAAA,MACP,MAAM;AAAA,MACN,cAAc;AAAA,MACd,QAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,OAAO;AAAA,MACP,MAAM;AAAA,MACN,cAAc;AAAA,MACd,QAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,OAAO;AAAA,MACP,MAAM;AAAA,MACN,cAAc;AAAA,MACd,QAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,OAAO;AAAA,MACP,MAAM;AAAA,MACN,cAAc;AAAA,MACd,QACE;AAAA,IACJ;AAAA,IACA;AAAA,MACE,OAAO;AAAA,MACP,MAAM;AAAA,MACN,cAAc;AAAA,MACd,QAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,OAAO;AAAA,MACP,MAAM;AAAA,MACN,cAAc;AAAA,MACd,QAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,OAAO;AAAA,MACP,MAAM;AAAA,MACN,cAAc;AAAA,MACd,QAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,OAAO;AAAA,MACP,MAAM;AAAA,MACN,cAAc;AAAA,MACd,QAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,OAAO;AAAA,MACP,MAAM;AAAA,MACN,cAAc;AAAA,MACd,QAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,OAAO;AAAA,MACP,MAAM;AAAA,MACN,cAAc;AAAA,MACd,QAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,OAAO;AAAA,MACP,MAAM;AAAA,MACN,cAAc;AAAA,MACd,QAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,OAAO;AAAA,MACP,MAAM;AAAA,MACN,cAAc;AAAA,MACd,QAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,OAAO;AAAA,MACP,MAAM;AAAA,MACN,cAAc;AAAA,MACd,QAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,OAAO;AAAA,MACP,MAAM;AAAA,MACN,cAAc;AAAA,MACd,QAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,OAAO;AAAA,MACP,MAAM;AAAA,MACN,cAAc;AAAA,MACd,QAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,OAAO;AAAA,MACP,MAAM;AAAA,MACN,cAAc;AAAA,MACd,QAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,OAAO;AAAA,MACP,MAAM;AAAA,MACN,cAAc;AAAA,MACd,QAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,OAAO;AAAA,MACP,MAAM;AAAA,MACN,cAAc;AAAA,MACd,QAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,OAAO;AAAA,MACP,MAAM;AAAA,MACN,cAAc;AAAA,MACd,QAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,OAAO;AAAA,MACP,MAAM;AAAA,MACN,cAAc;AAAA,MACd,QAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,OAAO;AAAA,MACP,MAAM;AAAA,MACN,cAAc;AAAA,MACd,QAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,OAAO;AAAA,MACP,MAAM;AAAA,MACN,cAAc;AAAA,MACd,QAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,OAAO;AAAA,MACP,MAAM;AAAA,MACN,cAAc;AAAA,MACd,QAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,OAAO;AAAA,MACP,MAAM;AAAA,MACN,cAAc;AAAA,MACd,QAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,OAAO;AAAA,MACP,MAAM;AAAA,MACN,cAAc;AAAA,MACd,QAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,OAAO;AAAA,MACP,MAAM;AAAA,MACN,cAAc;AAAA,MACd,QAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,OAAO;AAAA,MACP,MAAM;AAAA,MACN,cAAc;AAAA,MACd,QAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,OAAO;AAAA,MACP,MAAM;AAAA,MACN,cAAc;AAAA,MACd,QACE;AAAA,IACJ;AAAA,IACA;AAAA,MACE,OAAO;AAAA,MACP,MAAM;AAAA,MACN,cAAc;AAAA,MACd,QAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,OAAO;AAAA,MACP,MAAM;AAAA,MACN,cAAc;AAAA,MACd,QAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,OAAO;AAAA,MACP,MAAM;AAAA,MACN,cAAc;AAAA,MACd,QAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,OAAO;AAAA,MACP,MAAM;AAAA,MACN,cAAc;AAAA,MACd,QAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,OAAO;AAAA,MACP,MAAM;AAAA,MACN,cAAc;AAAA,MACd,QAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,OAAO;AAAA,MACP,MAAM;AAAA,MACN,cAAc;AAAA,MACd,QAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,OAAO;AAAA,MACP,MAAM;AAAA,MACN,cAAc;AAAA,MACd,QAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,OAAO;AAAA,MACP,MAAM;AAAA,MACN,cAAc;AAAA,MACd,QAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,OAAO;AAAA,MACP,MAAM;AAAA,MACN,cAAc;AAAA,MACd,QAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,OAAO;AAAA,MACP,MAAM;AAAA,MACN,cAAc;AAAA,MACd,QAAQ;AAAA,IACV;AAAA,EACF;AAEA,WAAS,gCACP,SACyB;AACnB,UAAA,OAAO,QAAQ,YAAY,OAAO;AACxC,QAAI,CAAC,QAAQ,KAAK,SAAS,KAAK,GAAW,QAAA;AACpC,WAAA;AAAA,MACL,MAAM,KAAK;AAAA,MACX,SAAS;AAAA,IAAA;AAAA,EAEb;AAIgB,WAAA,WAAW,SAAoB,IAAI;AAC7C,QAAA,OAAO,OAAO,WAAWA;AACtB,WAAA,IAAIC,SAAAA,gBAAgB,KAAK,UAAU;AAAA;AAAA,MAExC,OAAO,SACH,KAAK,SAAS,KAAK,GAAG;AAAA,QACpB,cAAcC,+BAAuB,MAAM;AAAA,MAC5C,CAAA,IACD,CAAC;AAAA;AAAA,MAEL,KAAK,SAAS,KAAK,GAAG;AAAA,QACpB,cAAcC,QAAAA,wBAAwB,MAAM,CAAC,CAAC,OAAO,iBAAiB;AAAA,MAAA,CACvE;AAAA,MACD,KAAK,SAAS,KAAK,GAAG;AAAA,QACpB,cAAc;AAAA,MAAA,CACf;AAAA,IAAA,CACF;AAAA,EACH;AC5TsB,iBAAA,SAAS,OAAe,IAA+B;AAC3E,QAAI,MAAM,KAAK,EAAE,cAAc,WAAW,IAAI,GAAG;AACxC,aAAA,YAAY,OAAO,EAAE;AAAA,IAC9B;AACM,UAAA,QAAQ,YAAY;AACtB,QAAA;AACF,YAAM,SAAS,MAAM,GAAG,KAAK,OAAO;AAAA,QAClC,SAAS;AAAA,MAAA,CACV;AACK,YAAA,UAAU,YAAY,IAAA,IAAQ;AAC7B,aAAA;AAAA,QACL;AAAA,QACA,SAAS;AAAA,QACT,MAAM;AAAA,MAAA;AAAA,aAED,KAAK;AACL,aAAA;AAAA,QACL;AAAA,QACA,OAAQ,IAAc;AAAA,QACtB,MAAM,YAAY,IAAA,IAAQ;AAAA,MAAA;AAAA,IAE9B;AAAA,EACF;AAEsB,iBAAA,YACpB,OACA,IACmB;AACb,UAAA,QAAQ,YAAY;AACtB,QAAA;AACA,QAAA;AACJ,UAAM,EAAE,SAAS,QAAQ,QAAY,IAAAC,aAAA;AAAA,MACnC;AAAA,MACA;AAAA,MACA,OAAO,QAAQ;AACN,eAAA,MAAM,GAAG,KAAK,KAAK,EAAE,SAAS,QAAA,CAAS,GAAG,CAAC;AAC3C,eAAA;AAAA,UACL,MAAM,IAAI;AAAA,UACV,QAAQ,IAAI;AAAA,UACZ,UAAU,IAAI,KAAK;AAAA,QAAA;AAAA,MAEvB;AAAA,MACA,CAAC,WAAW;AACJ,cAAA;AAAA,MACR;AAAA,IAAA;AAEI,UAAA;AACA,UAAA,UAAU,YAAY,IAAA,IAAQ;AAEpC,QAAI,CAAC,KAAK;AACD,aAAA;AAAA,QACL;AAAA,QACA,OAAO;AAAA,QACP,MAAM;AAAA,MAAA;AAAA,IACR,WACS,OAAO,QAAQ,UAAU;AAC9B,UAAA,IAAI,WAAW,QAAQ,GAAG;AACrB,eAAA;AAAA,UACL;AAAA,UACA,OAAO;AAAA,UACP,MAAM;AAAA,QAAA;AAAA,MACR,OACK;AACE,eAAA;AAAA,UACL;AAAA,UACA,MAAM;AAAA,UACN,MAAM;AAAA,QAAA;AAAA,MAEV;AAAA,IAAA,OACK;AACE,aAAA;AAAA,QACL;AAAA,QACA,MAAM,IAAI;AAAA,QACV,SAAS,CAAC,GAAI;AAAA,QACd,MAAM;AAAA,MAAA;AAAA,IAEV;AAAA,EACF;AAEA,iBAAsB,UAAU,IAA+C;AACvE,UAAA,MAAM,MAAM,GAAG,MAIlB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAWF;AACD,UAAM,SAAmC,CAAA;AAC9B,eAAA,OAAO,IAAI,MAAM;AACnB,aAAA,GAAG,IAAI,MAAM,IAAI,IAAI,KAAK,EAAE,IAAI,MAAM,QAAQ,IAAI,OAAO,IAC5D,IAAI,UACJ,IAAI,QAAQ,MAAM,GAAG,EAAE,EAAE,MAAM,GAAG;AAAA,IACxC;AACO,WAAA;AAAA,EACT;ACxGA,QAAM,oBAAoB;AAC1B,QAAM,gBAAgB;AAEtB,WAAS,UAAU,OAAY;AAC7B,QAAI,UAAU,MAAM;AACX,aAAA;AAAA,IAAA,WACE,OAAO,UAAU,UAAU;AAC7B,aAAA;AAAA,IAAA,WACE,OAAO,UAAU,WAAW;AAC9B,aAAA;AAAA,IAAA,OACF;AACE,aAAA;AAAA,IACT;AAAA,EACF;AAEA,WAAS,UAAU,OAAY;AACzB,QAAA;AACJ,QAAI,UAAU,MAAM;AACZ,YAAA;AAAA,IAAA,WACG,OAAO,UAAU,UAAU;AACpC,YAAM,MAAM;IAAS,WACZ,OAAO,UAAU,WAAW;AACrC,YAAM,QAAQ,SAAS;AAAA,IAAA,WACd,iBAAiB,MAAM;AAChC,YAAM,MAAM;IACH,WAAA,MAAM,QAAQ,KAAK,GAAG;AAC/B,YAAM,IAAI,MAAM,IAAI,SAAS,EAAE,KAAK,IAAI,CAAC;AAAA,IAAA,WAChC,OAAO,UAAU,UAAU;AAC9B,YAAA,KAAK,UAAU,KAAK;AAAA,IACjB,WAAA,YAAY,OAAO,KAAK,GAAG;AAC9B,YAAA,GAAG,MAAM,UAAU;AAAA,IAAA,OACpB;AACL,YAAM,MAAM;IACd;AACO,WAAA,IAAI,SAAS,gBAAgB,IAAI,MAAM,GAAG,aAAa,IAAI,MAAM;AAAA,EAC1E;AAEgB,WAAA,UAAU,EAAE,UAA+B;AACzD,UAAM,CAAC,SAAS,UAAU,IAAIC,eAAS,iBAAiB;AACxD,UAAM,OAAO,OAAO,KAAK,MAAM,GAAG,OAAO;AAEzCC,UAAAA,UAAU,MAAM;AAEd,iBAAW,iBAAiB;AAAA,IAAA,GAC3B,CAAC,MAAM,CAAC;AAEX,UAAM,WAAW,MAAM;AACV,iBAAA,CAAC,SAAS,OAAO,iBAAiB;AAAA,IAAA;AAG/C,WAEIC,2BAAA,KAAAC,qBAAA,EAAA,UAAA;AAAA,MAAAC,2BAAAA,IAAC,SAAI,WAAU,2BACb,UAACF,2BAAA,KAAA,SAAA,EAAM,WAAU,oBACf,UAAA;AAAA,QAAAE,+BAAC,WACC,UAACA,2BAAA,IAAA,MAAA,EACE,UAAO,OAAA,OAAO,IAAI,CAAC,KAAK,MACvBA,2BAAA,IAAC,QAAY,UAAI,IAAA,KAAA,GAAR,CAAa,CACvB,EACH,CAAA,GAMF;AAAA,QACCA,2BAAA,IAAA,SAAA,EACE,UAAK,KAAA,IAAI,CAAC,KAAK,MACdA,2BAAA,IAAC,MACE,EAAA,UAAA,IAAI,IAAI,CAAC,KAAK,MACZA,2BAAA,IAAA,MAAA,EAAW,WAAW,UAAU,GAAG,GACjC,UAAU,UAAA,GAAG,EADP,GAAA,CAET,CACD,EAAA,GALM,CAMT,CACD,GACH;AAAA,MAAA,EAAA,CACF,EACF,CAAA;AAAA,MACAF,2BAAAA,KAAC,OAAI,EAAA,WAAU,8BACZ,UAAA;AAAA,QAAA,OAAO,KAAK,SAAS,UAAU,GAAG,OAAO,SAAS;AAAA,QAClD,OAAO,KAAK;AAAA,QAAO;AAAA,QAAM;AAAA,QACzB,OAAO,KAAK,SAAS,WACpBE,2BAAA;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,MAAK;AAAA,YACL,SAAS,CAAC,MAAM;AACd,gBAAE,eAAe;AACR;YACX;AAAA,YACD,UAAA;AAAA,UAAA;AAAA,QAED;AAAA,MAAA,GAEJ;AAAA,IACF,EAAA,CAAA;AAAA,EAEJ;AChGA,WAAS,QAAQ,EAAE,UAA+B;AAChD,0CACG,OAAI,EAAA,WAAU,mBACZ,UAAA,OAAO,OAAO,SAAS,IACrBA,2BAAA,IAAA,WAAA,EAAU,OAAgB,CAAA,IAE3BA,2BAAA,IAAC,SAAI,WAAU,mBAAkB,iBAAI,CAAA,EAEzC,CAAA;AAAA,EAEJ;AAEO,WAAS,aAAa;AAAA,IAC3B;AAAA,IACA;AAAA,EACF,GAGG;;AACG,QAAA;AACJ,QAAI,SAAS,OAAO;AAClB,YACGA,2BAAAA,IAAA,OAAA,EAAI,WAAU,oCAAoC,mBAAS,MAAM,CAAA;AAAA,IAAA,OAE/D;AACL,YAEKA,2BAAA,IAAAD,qBAAA,EAAA,WAAA,cAAS,YAAT,mBAAkB,IAAI,CAAC,QAAQ,MAC9BC,2BAAA,IAAC,SAAgB,EAAA,OAAA,GAAH,CAAmB,GAErC,CAAA;AAAA,IAEJ;AACA,WAEIF,2BAAA,KAAAC,qBAAA,EAAA,UAAA;AAAA,MAAAC,2BAAA,IAAC,OAAI,EAAA,WAAU,oCAAoC,UAAA,SAAS,OAAM;AAAA,MACjE,SAAS,QACRA,2BAAA,IAAC,SAAI,WAAU,mCAAmC,mBAAS,MAAK;AAAA,MAEjE;AAAA,MACDF,2BAAAA,KAAC,OAAI,EAAA,WAAU,sBACb,UAAA;AAAA,QAAAE,2BAAA,IAAC,MAAG,EAAA;AAAA,QACH,YACCF,2BAAA,KAAC,OAAI,EAAA,WAAU,mBAAmB,UAAA;AAAA,UAAS,SAAA,KAAK,QAAQ,CAAC;AAAA,UAAE;AAAA,QAAA,GAAE;AAAA,MAAA,GAEjE;AAAA,IACF,EAAA,CAAA;AAAA,EAEJ;AC7BA,QAAM,aAAaG,SAAc,cAAA,OAAO,CAAC,QAAQ,IAAI,QAAQ,OAAO;AAc7D,WAAS,KAAK;AAAA,IACnB;AAAA,IACA,SAAS;AAAA,IACT,aAAaC,qBAAA;AAAA,IACb,YAAYC,qBAAA;AAAA,IACZ,QAAQ;AAAA,IACR,WAAW;AAAA,IACX,sBAAsB;AAAA,EACxB,GAAc;AACZ,UAAM,CAAC,OAAO,QAAQ,IAAIP,eAAS,EAAE;AAC/B,UAAA,iBAAiBQ,aAAO,EAAE;AAChC,UAAM,CAAC,SAAS,UAAU,IAAIR,eAAS,IAAI;AAC3C,UAAM,CAAC,QAAQ,SAAS,IAAIA,MAAA,SAAqB,CAAE,CAAA;AAC7C,UAAA,YAAYQ,aAA8B,IAAI;AACpD,UAAM,CAAC,QAAQ,SAAS,IAAIR,MAAA,SAAmC,CAAE,CAAA;AAC3D,UAAA,aAAaQ,MAAAA,OAAO,EAAE;AACtB,UAAA,MAAMA,aAAkC,IAAI;AAC5C,UAAA,CAAC,YAAY,aAAa,IAAIR,MAAA;AAAA,MAClC,UAAU,SAAS,YAAY;AAAA,IAAA;AAEjC,UAAM,CAAC,QAAQ,SAAS,IAAIA,MAAA,SAA6C,CAAE,CAAA;AAE3EC,UAAAA,UAAU,MAAM;AACd,UAAI,SAAS;AACb,YAAM,OAAO,YAAY;AACvB,cAAM,GAAG;AACT,YAAI,OAAQ;AACZ,mBAAW,KAAK;AAAA,MAAA;AAElB,iBAAW,IAAI;AACV;AACL,aAAO,MAAM;AACF,iBAAA;AAAA,MAAA;AAAA,IACX,GACC,CAAC,EAAE,CAAC;AAEPA,UAAAA,UAAU,MAAM;AACd,UAAI,UAAU,QAAQ;AACpB,cAAM,cAAc,OAAO,WAAW,8BAA8B,EACjE,UACC,SACA;AACU,sBAAA,gBAAgB,SAAS,YAAY,UAAU;AACvD,cAAA,WAAW,CAAC,MAA2B;AAC7B,wBAAA,EAAE,UAAU,YAAY,UAAU;AAChD,qBAAW,MAAM;AACD;aACb,CAAC;AAAA,QAAA;AAEN,eACG,WAAW,8BAA8B,EACzC,iBAAiB,UAAU,QAAQ;AACtC,eAAO,MAAM;AACX,iBACG,WAAW,8BAA8B,EACzC,oBAAoB,UAAU,QAAQ;AAAA,QAAA;AAAA,MAC3C,OACK;AACS,sBAAA,UAAU,SAAS,YAAY,UAAU;AACvD,mBAAW,MAAM;AACD;WACb,CAAC;AAAA,MACN;AAAA,IACC,GAAA,CAAC,OAAO,YAAY,SAAS,CAAC;AAEjC,UAAM,WAAWQ,MAAAA,YAAY,CAAC,KAAa,gBAA4B;AACvD;AACd,eAAS,GAAG;AACR,UAAA,WAAW,YAAY,IAAI;AAC7B,uBAAe,UAAU;AAAA,MAC3B;AAAA,IACF,GAAG,CAAE,CAAA;AAEL,UAAM,aAAaC,MAAA;AAAA,MACjB,MAAM;AAAA,QACJC,KAAAA,OAAO,GAAG;AAAA,UACR;AAAA,YACE,KAAK;AAAA,YACL,gBAAgB;AAAA,YAChB,KAAK,MAAM;AACT,kBAAI,MAAM,KAAA,MAAW,GAAW,QAAA;AAChC,uBAAS,OAAO,EAAE,EAAE,KAAK,CAAC,aAAa;AACrC,0BAAU,CAAC,SAAS,CAAC,GAAG,MAAM,QAAQ,CAAC;AACvC,oBAAI,UAAU,SAAS;AACrB,6BAAW,MAAM;AACL,8BAAA,QAAS,YACjB,UAAU,QAAS;AAAA,qBACpB,CAAC;AAAA,gBACN;AAEA,oBAAI,CAAC,qBAAqB;AACd,4BAAA,EAAE,EAAE,KAAK,SAAS;AAAA,gBAC9B;AAAA,cAAA,CACD;AACD,yBAAW,UAAU;AACrB,6BAAe,UAAU;AACzB,uBAAS,EAAE;AACJ,qBAAA;AAAA,YACT;AAAA,UACF;AAAA,UACA;AAAA,YACE,KAAK;AAAA,YACL,KAAK,CAACC,UAAS;AACb,oBAAM,QAAQA,MAAK;AACb,oBAAA,aAAa,MAAM,IAAI;AAAA,gBAC3B,MAAM,UAAU,KAAK;AAAA,cACrB,EAAA;AACF,kBAAI,eAAe,GAAG;AAEpB,sBAAM,aAAa,WAAW;AACnB,2BAAA;AACP,oBAAA,WAAW,WAAW,OAAO,QAAQ;AAC5B,6BAAA,UAAU,OAAO,SAAS;AAAA,gBACvC;AACI,oBAAA,WAAW,UAAU,IAAI;AAC3B,6BAAW,UAAU;AAAA,gBACvB;AACI,oBAAA,WAAW,YAAY,WAAmB,QAAA;AAC1C,oBAAA,WAAW,YAAY,IAAI;AAC7B,2BAAS,eAAe,OAAO;AAAA,gBAAA,OAC1B;AACL,2BAAS,OAAO,OAAO,SAAS,WAAW,UAAU,CAAC,EAAE,KAAK;AAAA,gBAC/D;AACO,uBAAA;AAAA,cACT;AACO,qBAAA;AAAA,YACT;AAAA,UACF;AAAA,UACA;AAAA,YACE,KAAK;AAAA,YACL,KAAK,CAACA,UAAS;AACb,oBAAM,QAAQA,MAAK;AACb,oBAAA,aAAa,MAAM,IAAI;AAAA,gBAC3B,MAAM,UAAU,KAAK;AAAA,cACrB,EAAA;AACI,oBAAA,WAAW,MAAM,IAAI;AAC3B,kBAAI,eAAe,UAAU;AAE3B,sBAAM,aAAa,WAAW;AACnB,2BAAA;AACP,oBAAA,WAAW,WAAW,OAAO,QAAQ;AAC5B,6BAAA,UAAU,OAAO,SAAS;AAAA,gBACvC;AACI,oBAAA,WAAW,UAAU,IAAI;AAC3B,6BAAW,UAAU;AAAA,gBACvB;AACI,oBAAA,WAAW,YAAY,WAAmB,QAAA;AAC1C,oBAAA,WAAW,YAAY,IAAI;AAC7B,2BAAS,eAAe,OAAO;AAAA,gBAAA,OAC1B;AACL,2BAAS,OAAO,OAAO,SAAS,WAAW,UAAU,CAAC,EAAE,KAAK;AAAA,gBAC/D;AACO,uBAAA;AAAA,cACT;AACO,qBAAA;AAAA,YACT;AAAA,UACF;AAAA,UACA,GAAG;AAAA,QAAA,CACJ;AAAA,QACD,WAAW;AAAA,UACT,SAASjB,QAAA;AAAA,UACT;AAAA,UACA,QAAQ;AAAA,YACN;AAAA,cACE,OAAO;AAAA,cACP,cAAc;AAAA,YAChB;AAAA,UACF;AAAA,UACA,eAAe;AAAA,QAAA,CAChB;AAAA,MACH;AAAA,MACA,CAAC,IAAI,QAAQ,OAAO,MAAM;AAAA,IAAA;AAG5B,UAAM,gBAAgB,MAAM;;AAE1B,YAAM,cAAa,SAAI,YAAJ,mBAAa,OAAQ,cAAc;AAChD,YAAA,WAAW,WAAW,cAAc,aAAa;AACjD,YAAA,2BAA2B,OAAO,iBAAiB,UAAU;AACnE,YAAM,kBAAkB,yBAAyB;AACjD,YAAM,kBAAkB,yBAAyB;AAE3C,YAAA,yBAAyB,OAAO,iBAAiB,QAAS;AAChE,YAAM,eAAe,uBAAuB;AAC5C,YAAM,cAAc,SAAS,uBAAuB,gBAAgB,KAAK;AACnE,YAAA,cAAc,cAChB,uBAAuB,mBACvB,gBAAgB,QAAQ,OAAO,MAAM,EAAE,QAAQ,KAAK,SAAS;AACjE,YAAMkB,UAAS,cACX,uBAAuB,cACvB,aAAa,WAAW;AAElB,gBAAA;AAAA,QACR,iCAAiC;AAAA,QACjC,iCAAiC;AAAA,QACjC,uBAAuBA;AAAAA,QACvB,8BAA8B;AAAA,QAC9B,6BAA6B;AAAA,MAAA,CAC9B;AAAA,IAAA;AAID,WAAAX,2BAAA;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,WAAW;AAAA;AAAA,QAET,SAAS,2BAA2B,EAAE;AAAA;AAAA,QAExC,OAAO;AAAA,QAEP,UAAA;AAAA,UAAAA,2BAAA;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,WAAU;AAAA,cACV,KAAK,CAAC,QAAS,UAAU,UAAU;AAAA,cAElC,UAAA;AAAA,gBAAA,WAAYE,2BAAA,IAAA,OAAA,EAAI,WAAU,0BAAyB,UAAU,cAAA;AAAA,gBAC7D,OAAO,IAAI,CAAC,UAAU,qCACpB,OACC,EAAA,UAAAA,2BAAAA,IAAC,cAAa,EAAA,UAAU,YAAY,CAAA,GAAI,UAAoB,EAAA,GADpD,CAEV,CACD;AAAA,cAAA;AAAA,YAAA;AAAA,UACH;AAAA,UACAA,2BAAA;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,KAAK;AAAA,cACL,WAAW,oBAAoB,UAAU,6BAA6B,EAAE;AAAA,cACxE,OAAM;AAAA,cACN;AAAA,cACA,YAAY;AAAA,gBACV,eAAe;AAAA,cACjB;AAAA,cACA;AAAA,cACA,OAAO;AAAA,cACP;AAAA,cACA,UAAU,CAAC;AAAA,cACX,gBAAgB,MAAM;AACN;AACd,2BAAW,eAAe,CAAC;AACjB,0BAAA,EAAE,EAAE,KAAK,SAAS;AAAA,cAC9B;AAAA,YAAA;AAAA,UACF;AAAA,QAAA;AAAA,MAAA;AAAA,IAAA;AAAA,EAGN;;;;"}
|
|
1
|
+
{"version":3,"file":"Repl.umd.cjs","sources":["../src/sqlSupport.ts","../src/utils.ts","../src/ReplTable.tsx","../src/ReplResponse.tsx","../src/Repl.tsx"],"sourcesContent":["import {\n PostgreSQL,\n SQLConfig,\n keywordCompletionSource,\n schemaCompletionSource,\n} from '@codemirror/lang-sql'\nimport { CompletionContext, CompletionResult } from '@codemirror/autocomplete'\nimport { LanguageSupport } from '@codemirror/language'\n\nconst describeCompletions = [\n {\n label: '\\\\d',\n type: 'function',\n displayLabel: '\\\\d[S+] [ pattern ]',\n detail: 'PSQL Describe',\n },\n {\n label: '\\\\da',\n type: 'function',\n displayLabel: '\\\\da[S] [ pattern ]',\n detail: 'Lists aggregate functions',\n },\n {\n label: '\\\\dA',\n type: 'function',\n displayLabel: '\\\\dA[+] [ pattern ]',\n detail: 'Lists access methods',\n },\n {\n label: '\\\\dAc',\n type: 'function',\n displayLabel: '\\\\dAc[+] [access-method-pattern [input-type-pattern]]',\n detail: 'Lists operator classes',\n },\n {\n label: '\\\\dAf',\n type: 'function',\n displayLabel: '\\\\dAf[+] [access-method-pattern [input-type-pattern]]',\n detail: 'Lists operator families',\n },\n {\n label: '\\\\dAo',\n type: 'function',\n displayLabel: '\\\\dAo[+] [access-method-pattern [operator-family-pattern]]',\n detail: 'Lists operators associated with operator families',\n },\n {\n label: '\\\\dAp',\n type: 'function',\n displayLabel: '\\\\dAp[+] [access-method-pattern [operator-family-pattern]]',\n detail: 'Lists support functions associated with operator families',\n },\n {\n label: '\\\\db',\n type: 'function',\n displayLabel: '\\\\db[+] [ pattern ]',\n detail: 'Lists tablespaces',\n },\n {\n label: '\\\\dc',\n type: 'function',\n displayLabel: '\\\\dc[S+] [ pattern ]',\n detail: 'Lists conversions between character-set encodings',\n },\n {\n label: '\\\\dconfig',\n type: 'function',\n displayLabel: '\\\\dconfig[+] [ pattern ]',\n detail: 'Lists server configuration parameters and their values',\n },\n {\n label: '\\\\dC',\n type: 'function',\n displayLabel: '\\\\dC[+] [ pattern ]',\n detail: 'Lists type casts',\n },\n {\n label: '\\\\dd',\n type: 'function',\n displayLabel: '\\\\dd[S] [ pattern ]',\n detail:\n 'Shows the descriptions of objects of type constraint, operator class, operator family, rule, and trigger',\n },\n {\n label: '\\\\dD',\n type: 'function',\n displayLabel: '\\\\dD[S+] [ pattern ]',\n detail: 'Lists domains',\n },\n {\n label: '\\\\ddp',\n type: 'function',\n displayLabel: '\\\\ddp [ pattern ]',\n detail: 'Lists default access privilege settings',\n },\n {\n label: '\\\\dE',\n type: 'function',\n displayLabel: '\\\\dE[S+] [ pattern ]',\n detail: 'Lists foreign tables',\n },\n {\n label: '\\\\di',\n type: 'function',\n displayLabel: '\\\\di[S+] [ pattern ]',\n detail: 'Lists indexes',\n },\n {\n label: '\\\\dm',\n type: 'function',\n displayLabel: '\\\\dm[S+] [ pattern ]',\n detail: 'Lists materialized views',\n },\n {\n label: '\\\\ds',\n type: 'function',\n displayLabel: '\\\\ds[S+] [ pattern ]',\n detail: 'Lists sequences',\n },\n {\n label: '\\\\dt',\n type: 'function',\n displayLabel: '\\\\dt[S+] [ pattern ]',\n detail: 'Lists tables',\n },\n {\n label: '\\\\dv',\n type: 'function',\n displayLabel: '\\\\dv[S+] [ pattern ]',\n detail: 'Lists views',\n },\n {\n label: '\\\\des',\n type: 'function',\n displayLabel: '\\\\des[+] [ pattern ]',\n detail: 'Lists foreign servers',\n },\n {\n label: '\\\\det',\n type: 'function',\n displayLabel: '\\\\det[+] [ pattern ]',\n detail: 'Lists foreign tables',\n },\n {\n label: '\\\\deu',\n type: 'function',\n displayLabel: '\\\\deu[+] [ pattern ]',\n detail: 'Lists user mappings',\n },\n {\n label: '\\\\dew',\n type: 'function',\n displayLabel: '\\\\dew[+] [ pattern ]',\n detail: 'Lists foreign-data wrappers',\n },\n {\n label: '\\\\df',\n type: 'function',\n displayLabel: '\\\\df[anptwS+] [ pattern [ arg_pattern ... ] ]',\n detail: 'Lists functions',\n },\n {\n label: '\\\\dF',\n type: 'function',\n displayLabel: '\\\\dF[+] [ pattern ]',\n detail: 'Lists text search configurations',\n },\n {\n label: '\\\\dFd',\n type: 'function',\n displayLabel: '\\\\dFd[+] [ pattern ]',\n detail: 'Lists text search dictionaries',\n },\n {\n label: '\\\\dFp',\n type: 'function',\n displayLabel: '\\\\dFp[+] [ pattern ]',\n detail: 'Lists text search parsers',\n },\n {\n label: '\\\\dFt',\n type: 'function',\n displayLabel: '\\\\dFt[+] [ pattern ]',\n detail: 'Lists text search templates',\n },\n {\n label: '\\\\dg',\n type: 'function',\n displayLabel: '\\\\dg[S+] [ pattern ]',\n detail: 'Lists database roles',\n },\n {\n label: '\\\\dl',\n type: 'function',\n displayLabel: '\\\\dl[+] ',\n detail: 'List large objects',\n },\n {\n label: '\\\\dL',\n type: 'function',\n displayLabel: '\\\\dL[S+] [ pattern ]',\n detail: 'Lists procedural languages',\n },\n {\n label: '\\\\dn',\n type: 'function',\n displayLabel: '\\\\dn[S+] [ pattern ]',\n detail: 'Lists schemas',\n },\n {\n label: '\\\\do',\n type: 'function',\n displayLabel: '\\\\do[S+] [ pattern [ arg_pattern [ arg_pattern ] ] ]',\n detail: 'Lists operators with their operand and result types',\n },\n {\n label: '\\\\dO',\n type: 'function',\n displayLabel: '\\\\dO[S+] [ pattern ]',\n detail: 'Lists collations',\n },\n {\n label: '\\\\dp',\n type: 'function',\n displayLabel: '\\\\dp[S] [ pattern ]',\n detail:\n 'Lists tables, views and sequences with their associated access privileges',\n },\n {\n label: '\\\\dP',\n type: 'function',\n displayLabel: '\\\\dP[itn+] [ pattern ]',\n detail: 'Lists partitioned relations',\n },\n {\n label: '\\\\drds',\n type: 'function',\n displayLabel: '\\\\drds [ role-pattern [ database-pattern ] ]',\n detail: 'Lists defined configuration settings',\n },\n {\n label: '\\\\drg',\n type: 'function',\n displayLabel: '\\\\drg[S] [ pattern ]',\n detail: 'Lists information about each granted role membership',\n },\n {\n label: '\\\\dRp',\n type: 'function',\n displayLabel: '\\\\dRp[+] [ pattern ]',\n detail: 'Lists replication publications',\n },\n {\n label: '\\\\dRs',\n type: 'function',\n displayLabel: '\\\\dRs[+] [ pattern ]',\n detail: 'Lists replication subscriptions',\n },\n {\n label: '\\\\dT',\n type: 'function',\n displayLabel: '\\\\dT[S+] [ pattern ]',\n detail: 'Lists data types',\n },\n {\n label: '\\\\du',\n type: 'function',\n displayLabel: '\\\\du[S+] [ pattern ]',\n detail: 'Lists database roles',\n },\n {\n label: '\\\\dx',\n type: 'function',\n displayLabel: '\\\\dx[+] [ pattern ]',\n detail: 'Lists installed extensions',\n },\n {\n label: '\\\\dX',\n type: 'function',\n displayLabel: '\\\\dX [ pattern ]',\n detail: 'Lists extended statistics',\n },\n {\n label: '\\\\dy',\n type: 'function',\n displayLabel: '\\\\dy[+] [ pattern ]',\n detail: 'Lists event triggers',\n },\n]\n\nfunction describeCompletionsAutoComplete(\n context: CompletionContext,\n): CompletionResult | null {\n const word = context.matchBefore(/\\\\\\w*/)\n if (!word || word.from === word.to) return null\n return {\n from: word.from,\n options: describeCompletions,\n }\n}\n\n// This is a reimplemented version of `sql()` from `@codemirror/lang-sql` that\n// includes a custom autocompletion function for postgresql's `\\d` command.\nexport function makeSqlExt(config: SQLConfig = {}) {\n const lang = config.dialect || PostgreSQL\n return new LanguageSupport(lang.language, [\n // schemaCompletion(config),\n config.schema\n ? lang.language.data.of({\n autocomplete: schemaCompletionSource(config),\n })\n : [],\n // keywordCompletion(lang, !!config.upperCaseKeywords)\n lang.language.data.of({\n autocomplete: keywordCompletionSource(lang, !!config.upperCaseKeywords),\n }),\n lang.language.data.of({\n autocomplete: describeCompletionsAutoComplete,\n }),\n ])\n}\n","import { type PGlite } from '@electric-sql/pglite'\nimport { describe } from 'psql-describe'\nimport type { Results, Response } from './types'\n\nexport async function runQuery(query: string, pg: PGlite): Promise<Response> {\n if (query.trim().toLowerCase().startsWith('\\\\')) {\n return runDescribe(query, pg)\n }\n const start = performance.now()\n try {\n const result = await pg.exec(query, {\n rowMode: 'array',\n })\n const elapsed = performance.now() - start\n return {\n query,\n results: result as Results[],\n time: elapsed,\n }\n } catch (err) {\n return {\n query,\n error: (err as Error).message,\n time: performance.now() - start,\n }\n }\n}\n\nexport async function runDescribe(\n query: string,\n pg: PGlite,\n): Promise<Response> {\n const start = performance.now()\n let out: string | Record<string, unknown> | undefined\n let ret: Results\n const { promise, cancel: _cancel } = describe(\n query,\n 'postgres',\n async (sql) => {\n ret = (await pg.exec(sql, { rowMode: 'array' }))[0] as Results\n return {\n rows: ret.rows,\n fields: ret.fields,\n rowCount: ret.rows.length,\n }\n },\n (output) => {\n out = output\n },\n )\n await promise\n const elapsed = performance.now() - start\n\n if (!out) {\n return {\n query,\n error: 'No output',\n time: elapsed,\n }\n } else if (typeof out === 'string') {\n if (out.startsWith('ERROR:')) {\n return {\n query,\n error: out,\n time: elapsed,\n }\n } else {\n return {\n query,\n text: out,\n time: elapsed,\n }\n }\n } else {\n return {\n query,\n text: out.title as string,\n results: [ret!],\n time: elapsed,\n }\n }\n}\n\nexport async function getSchema(pg: PGlite): Promise<Record<string, string[]>> {\n const ret = await pg.query<{\n schema: string\n table: string\n columns: string\n }>(`\n SELECT \n table_schema AS schema,\n table_name AS table,\n array_agg(column_name) AS columns\n FROM \n information_schema.columns\n GROUP BY \n table_schema, table_name\n ORDER BY \n table_schema, table_name;\n `)\n const schema: Record<string, string[]> = {}\n for (const row of ret.rows) {\n schema[`${row.schema}.${row.table}`] = Array.isArray(row.columns)\n ? row.columns\n : row.columns.slice(1, -1).split(',')\n }\n return schema\n}\n","import { useState, useEffect } from 'react'\nimport type { Results } from './types'\n\nconst tableRowIncrement = 100\nconst maxCellLength = 200\n\nfunction cellClass(value: unknown) {\n if (value === null) {\n return 'PGliteRepl-null'\n } else if (typeof value === 'number') {\n return 'PGliteRepl-number'\n } else if (typeof value === 'boolean') {\n return 'PGliteRepl-boolean'\n } else {\n return ''\n }\n}\n\nfunction cellValue(value: unknown) {\n let str: string\n if (value === null) {\n str = 'null'\n } else if (typeof value === 'number') {\n str = value.toString()\n } else if (typeof value === 'boolean') {\n str = value ? 'true' : 'false'\n } else if (value instanceof Date) {\n str = value.toISOString()\n } else if (Array.isArray(value)) {\n str = `[${value.map(cellValue).join(', ')}]`\n } else if (typeof value === 'object') {\n str = JSON.stringify(value)\n } else if (ArrayBuffer.isView(value)) {\n str = `${value.byteLength} bytes`\n } else if (value === undefined) {\n str = 'undefined'\n } else {\n str = value.toString()\n }\n return str.length > maxCellLength ? str.slice(0, maxCellLength) + '…' : str\n}\n\nexport function ReplTable({ result }: { result: Results }) {\n const [maxRows, setMaxRows] = useState(tableRowIncrement)\n const rows = result.rows.slice(0, maxRows)\n\n useEffect(() => {\n // Reset maxRows when the result changes\n setMaxRows(tableRowIncrement)\n }, [result])\n\n const showMore = () => {\n setMaxRows((prev) => prev + tableRowIncrement)\n }\n\n return (\n <>\n <div className=\"PGliteRepl-table-scroll\">\n <table className=\"PGliteRepl-table\">\n <thead>\n <tr>\n {result.fields.map((col, i) => (\n <th key={i}>{col.name}</th>\n ))}\n </tr>\n {/* <tr>\n {result.fields.map((col, i) => (\n <th key={i}>{col.dataTypeID}</th>\n ))}\n </tr> */}\n </thead>\n <tbody>\n {rows.map((row, i) => (\n // eslint-disable-next-line @eslint-react/no-array-index-key\n <tr key={i}>\n {row.map((col, j) => (\n // eslint-disable-next-line @eslint-react/no-array-index-key\n <td key={j} className={cellClass(col)}>\n {cellValue(col)}\n </td>\n ))}\n </tr>\n ))}\n </tbody>\n </table>\n </div>\n <div className=\"PGliteRepl-table-row-count\">\n {result.rows.length > maxRows ? `${maxRows} of ` : ''}\n {result.rows.length} rows{' '}\n {result.rows.length > maxRows && (\n <a\n href=\"\"\n onClick={(e) => {\n e.preventDefault()\n showMore()\n }}\n >\n Show more\n </a>\n )}\n </div>\n </>\n )\n}\n","import type { Results, Response } from './types'\nimport { ReplTable } from './ReplTable'\n\nfunction OutLine({ result }: { result: Results }) {\n return (\n <div className=\"PGliteRepl-line\">\n {result.fields.length > 0 ? (\n <ReplTable result={result} />\n ) : (\n <div className=\"PGliteRepl-null\">null</div>\n )}\n </div>\n )\n}\n\nexport function ReplResponse({\n response,\n showTime,\n}: {\n response: Response\n showTime: boolean\n}) {\n let out\n if (response.error) {\n out = (\n <div className=\"PGliteRepl-line PGliteRepl-error\">{response.error}</div>\n )\n } else {\n out = (\n <>\n {response.results?.map((result, i) => (\n <OutLine key={i} result={result} />\n ))}\n </>\n )\n }\n return (\n <>\n <pre className=\"PGliteRepl-line PGliteRepl-query\">{response.query}</pre>\n {response.text && (\n <div className=\"PGliteRepl-line PGliteRepl-text\">{response.text}</div>\n )}\n {out}\n <div className=\"PGliteRepl-divider\">\n <hr />\n {showTime && (\n <div className=\"PGliteRepl-time\">{response.time.toFixed(1)}ms</div>\n )}\n </div>\n </>\n )\n}\n","import { useState, useCallback, useMemo, useRef, useEffect } from 'react'\nimport CodeMirror, {\n type ViewUpdate,\n type ReactCodeMirrorRef,\n type Extension,\n} from '@uiw/react-codemirror'\nimport { type CreateThemeOptions } from '@uiw/codemirror-themes'\nimport { defaultKeymap } from '@codemirror/commands'\nimport { keymap } from '@codemirror/view'\nimport { PostgreSQL } from '@codemirror/lang-sql'\nimport { type PGlite } from '@electric-sql/pglite'\nimport { makeSqlExt } from './sqlSupport'\nimport type { Response } from './types'\nimport { runQuery, getSchema } from './utils'\nimport { ReplResponse } from './ReplResponse'\nimport {\n githubDark,\n githubDarkInit,\n githubLight,\n githubLightInit,\n} from '@uiw/codemirror-theme-github'\n\nimport './Repl.css'\n\n// Filter out the Enter key from the default keymap, we entirely override its behavior\n// to run the query when the user presses Enter.\n// We keep the up and down arrow keys as we only override their behavior\n// when the cursor is on the first or last line.\nconst baseKeymap = defaultKeymap.filter((key) => key.key !== 'Enter')\n\nexport type ReplTheme = 'light' | 'dark' | 'auto'\n\ntype ThemeInit = (options?: Partial<CreateThemeOptions>) => Extension\n\nexport const defaultLightThemeInit: ThemeInit = githubLightInit\nexport const defaultLightTheme = githubLight\nexport const defaultDarkThemeInit: ThemeInit = githubDarkInit\nexport const defaultDarkTheme = githubDark\n\nexport interface ReplProps {\n pg: PGlite\n border?: boolean\n lightTheme?: Extension\n darkTheme?: Extension\n theme?: ReplTheme\n showTime?: boolean\n disableUpdateSchema?: boolean\n}\n\nexport function Repl({\n pg,\n border = false,\n lightTheme = defaultLightTheme,\n darkTheme = defaultDarkTheme,\n theme = 'auto',\n showTime = false,\n disableUpdateSchema = false,\n}: ReplProps) {\n const [value, setValue] = useState('')\n const valueNoHistory = useRef('')\n const [loading, setLoading] = useState(true)\n const [output, setOutput] = useState<Response[]>([])\n const outputRef = useRef<HTMLDivElement | null>(null)\n const [schema, setSchema] = useState<Record<string, string[]>>({})\n const historyPos = useRef(-1)\n const rcm = useRef<ReactCodeMirrorRef | null>(null)\n const [themeToUse, setThemeToUse] = useState<Extension>(\n theme === 'dark' ? darkTheme : lightTheme,\n )\n const [styles, setStyles] = useState<{ [key: string]: string | number }>({})\n\n useEffect(() => {\n let ignore = false\n const init = async () => {\n await pg.waitReady\n if (ignore) return\n setLoading(false)\n }\n setLoading(true)\n init()\n return () => {\n ignore = true\n }\n }, [pg])\n\n useEffect(() => {\n if (theme === 'auto') {\n const systemTheme = window.matchMedia('(prefers-color-scheme: dark)')\n .matches\n ? 'dark'\n : 'light'\n setThemeToUse(systemTheme === 'dark' ? darkTheme : lightTheme)\n const listener = (e: MediaQueryListEvent) => {\n setThemeToUse(e.matches ? darkTheme : lightTheme)\n setTimeout(() => {\n extractStyles()\n }, 0)\n }\n window\n .matchMedia('(prefers-color-scheme: dark)')\n .addEventListener('change', listener)\n return () => {\n window\n .matchMedia('(prefers-color-scheme: dark)')\n .removeEventListener('change', listener)\n }\n } else {\n setThemeToUse(theme === 'dark' ? darkTheme : lightTheme)\n setTimeout(() => {\n extractStyles()\n }, 0)\n return\n }\n }, [theme, lightTheme, darkTheme])\n\n const onChange = useCallback((val: string, _viewUpdate: ViewUpdate) => {\n extractStyles()\n setValue(val)\n if (historyPos.current === -1) {\n valueNoHistory.current = val\n }\n }, [])\n\n const extensions = useMemo(\n () => [\n keymap.of([\n {\n key: 'Enter',\n preventDefault: true,\n run: () => {\n if (value.trim() === '') return false // Do nothing if the input is empty\n runQuery(value, pg).then((response) => {\n setOutput((prev) => [...prev, response])\n if (outputRef.current) {\n setTimeout(() => {\n outputRef.current!.scrollTop = outputRef.current!.scrollHeight\n }, 0)\n }\n // Update the schema for any new tables to be used in autocompletion\n if (!disableUpdateSchema) {\n getSchema(pg).then(setSchema)\n }\n })\n historyPos.current = -1\n valueNoHistory.current = ''\n setValue('')\n return true\n },\n },\n {\n key: 'ArrowUp',\n run: (view) => {\n const state = view.state\n const cursorLine = state.doc.lineAt(\n state.selection.main.head,\n ).number\n if (cursorLine === 1) {\n // If the cursor is on the first line, go back in history\n const currentPos = historyPos.current\n historyPos.current++\n if (historyPos.current >= output.length) {\n historyPos.current = output.length - 1\n }\n if (historyPos.current < -1) {\n historyPos.current = -1\n }\n if (historyPos.current === currentPos) return true\n if (historyPos.current === -1) {\n setValue(valueNoHistory.current)\n } else {\n setValue(output[output.length - historyPos.current - 1].query)\n }\n return true // Prevent the default behavior\n }\n return false // Allow the default behavior\n },\n },\n {\n key: 'ArrowDown',\n run: (view) => {\n const state = view.state\n const cursorLine = state.doc.lineAt(\n state.selection.main.head,\n ).number\n const lastLine = state.doc.lines\n if (cursorLine === lastLine) {\n // If the cursor is on the last line, go forward in history\n const currentPos = historyPos.current\n historyPos.current--\n if (historyPos.current >= output.length) {\n historyPos.current = output.length - 1\n }\n if (historyPos.current < -1) {\n historyPos.current = -1\n }\n if (historyPos.current === currentPos) return true\n if (historyPos.current === -1) {\n setValue(valueNoHistory.current)\n } else {\n setValue(output[output.length - historyPos.current - 1].query)\n }\n return true // Prevent the default behavior\n }\n return false // Allow the default behavior\n },\n },\n ...baseKeymap,\n ]),\n makeSqlExt({\n dialect: PostgreSQL,\n schema: schema,\n tables: [\n {\n label: 'd',\n displayLabel: '\\\\d',\n },\n ],\n defaultSchema: 'public',\n }),\n ],\n [pg, schema, value, output, disableUpdateSchema],\n )\n\n const extractStyles = () => {\n // Get the styles from the CodeMirror editor to use in the REPL\n const cmEditorEl = rcm.current?.editor?.querySelector('.cm-editor')\n if (!cmEditorEl) {\n throw new Error('No CodeMirror editor found')\n }\n const gutterEl = cmEditorEl.querySelector('.cm-gutters')\n const cmEditorElComputedStyles = window.getComputedStyle(cmEditorEl)\n const foregroundColor = cmEditorElComputedStyles.color\n const backgroundColor = cmEditorElComputedStyles.backgroundColor\n\n const gutterElComputedStyles = window.getComputedStyle(gutterEl!)\n const gutterBorder = gutterElComputedStyles.borderRight\n const borderWidth = parseInt(gutterElComputedStyles.borderRightWidth) || 0\n const borderColor = borderWidth\n ? gutterElComputedStyles.borderRightColor\n : foregroundColor.replace('rgb', 'rgba').replace(')', ', 0.15)')\n const border = borderWidth\n ? gutterElComputedStyles.borderRight\n : `1px solid ${borderColor}`\n\n setStyles({\n '--PGliteRepl-foreground-color': foregroundColor,\n '--PGliteRepl-background-color': backgroundColor,\n '--PGliteRepl-border': border,\n '--PGliteRepl-gutter-border': gutterBorder,\n '--PGliteRepl-border-color': borderColor,\n })\n }\n\n return (\n <div\n className={`\n PGliteRepl-root\n ${border ? 'PGliteRepl-root-border' : ''}\n `}\n style={styles}\n >\n <div\n className=\"PGliteRepl-output\"\n ref={(ref) => (outputRef.current = ref)}\n >\n {loading && <div className=\"PGliteRepl-loading-msg\">Loading...</div>}\n {output.map((response) => (\n <div key={`${response.query}-${response.time}`}>\n <ReplResponse response={response || []} showTime={showTime} />\n </div>\n ))}\n </div>\n <CodeMirror\n ref={rcm}\n className={`PGliteRepl-input ${loading ? 'PGliteRepl-input-loading' : ''}`}\n width=\"100%\"\n value={value}\n basicSetup={{\n defaultKeymap: false,\n }}\n extensions={extensions}\n theme={themeToUse}\n onChange={onChange}\n editable={!loading}\n onCreateEditor={() => {\n extractStyles()\n setTimeout(extractStyles, 0)\n getSchema(pg).then(setSchema)\n }}\n />\n </div>\n )\n}\n"],"names":["PostgreSQL","LanguageSupport","schemaCompletionSource","keywordCompletionSource","describe","useState","useEffect","jsxs","Fragment","jsx","defaultKeymap","githubLightInit","githubLight","githubDarkInit","githubDark","useRef","useCallback","useMemo","keymap","view","border"],"mappings":"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"}
|
package/dist/style.css
CHANGED
|
@@ -71,7 +71,7 @@
|
|
|
71
71
|
display: block;
|
|
72
72
|
width: 0.7em;
|
|
73
73
|
text-align: center;
|
|
74
|
-
content:
|
|
74
|
+
content: '❮';
|
|
75
75
|
margin-right: 0.5em;
|
|
76
76
|
color: var(--border-color);
|
|
77
77
|
position: absolute;
|
|
@@ -87,7 +87,7 @@
|
|
|
87
87
|
}
|
|
88
88
|
|
|
89
89
|
.PGliteRepl-query::before {
|
|
90
|
-
content:
|
|
90
|
+
content: '❯';
|
|
91
91
|
}
|
|
92
92
|
|
|
93
93
|
.PGliteRepl-table th {
|
|
@@ -147,7 +147,7 @@
|
|
|
147
147
|
}
|
|
148
148
|
|
|
149
149
|
.PGliteRepl-error::before {
|
|
150
|
-
content:
|
|
150
|
+
content: '!';
|
|
151
151
|
color: #c33;
|
|
152
152
|
font-weight: bold;
|
|
153
153
|
}
|
|
@@ -55868,7 +55868,7 @@ function describeCompletionsAutoComplete(context) {
|
|
|
55868
55868
|
};
|
|
55869
55869
|
}
|
|
55870
55870
|
function makeSqlExt(config2 = {}) {
|
|
55871
|
-
|
|
55871
|
+
const lang = config2.dialect || PostgreSQL;
|
|
55872
55872
|
return new LanguageSupport(lang.language, [
|
|
55873
55873
|
// schemaCompletion(config),
|
|
55874
55874
|
config2.schema ? lang.language.data.of({
|
|
@@ -62858,6 +62858,8 @@ function cellValue(value) {
|
|
|
62858
62858
|
str = JSON.stringify(value);
|
|
62859
62859
|
} else if (ArrayBuffer.isView(value)) {
|
|
62860
62860
|
str = `${value.byteLength} bytes`;
|
|
62861
|
+
} else if (value === void 0) {
|
|
62862
|
+
str = "undefined";
|
|
62861
62863
|
} else {
|
|
62862
62864
|
str = value.toString();
|
|
62863
62865
|
}
|
|
@@ -62875,7 +62877,13 @@ function ReplTable({ result }) {
|
|
|
62875
62877
|
return /* @__PURE__ */ jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [
|
|
62876
62878
|
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "PGliteRepl-table-scroll", children: /* @__PURE__ */ jsxRuntimeExports.jsxs("table", { className: "PGliteRepl-table", children: [
|
|
62877
62879
|
/* @__PURE__ */ jsxRuntimeExports.jsx("thead", { children: /* @__PURE__ */ jsxRuntimeExports.jsx("tr", { children: result.fields.map((col, i) => /* @__PURE__ */ jsxRuntimeExports.jsx("th", { children: col.name }, i)) }) }),
|
|
62878
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx("tbody", { children: rows.map((row, i) =>
|
|
62880
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("tbody", { children: rows.map((row, i) => (
|
|
62881
|
+
// eslint-disable-next-line @eslint-react/no-array-index-key
|
|
62882
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("tr", { children: row.map((col, j) => (
|
|
62883
|
+
// eslint-disable-next-line @eslint-react/no-array-index-key
|
|
62884
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("td", { className: cellClass(col), children: cellValue(col) }, j)
|
|
62885
|
+
)) }, i)
|
|
62886
|
+
)) })
|
|
62879
62887
|
] }) }),
|
|
62880
62888
|
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "PGliteRepl-table-row-count", children: [
|
|
62881
62889
|
result.rows.length > maxRows ? `${maxRows} of ` : "",
|
|
@@ -62998,108 +63006,153 @@ var createTheme = (_ref) => {
|
|
|
62998
63006
|
var extension = [themeExtension, syntaxHighlighting(highlightStyle)];
|
|
62999
63007
|
return extension;
|
|
63000
63008
|
};
|
|
63001
|
-
var
|
|
63009
|
+
var defaultSettingsGithubLight = {
|
|
63002
63010
|
background: "#fff",
|
|
63003
|
-
foreground: "#
|
|
63011
|
+
foreground: "#24292e",
|
|
63004
63012
|
selection: "#BBDFFF",
|
|
63005
63013
|
selectionMatch: "#BBDFFF",
|
|
63006
63014
|
gutterBackground: "#fff",
|
|
63007
|
-
gutterForeground: "#
|
|
63008
|
-
lineHighlight: "#d5e6ff69"
|
|
63015
|
+
gutterForeground: "#6e7781"
|
|
63009
63016
|
};
|
|
63010
|
-
|
|
63017
|
+
var githubLightStyle = [{
|
|
63018
|
+
tag: [tags.standard(tags.tagName), tags.tagName],
|
|
63019
|
+
color: "#116329"
|
|
63020
|
+
}, {
|
|
63021
|
+
tag: [tags.comment, tags.bracket],
|
|
63022
|
+
color: "#6a737d"
|
|
63023
|
+
}, {
|
|
63024
|
+
tag: [tags.className, tags.propertyName],
|
|
63025
|
+
color: "#6f42c1"
|
|
63026
|
+
}, {
|
|
63027
|
+
tag: [tags.variableName, tags.attributeName, tags.number, tags.operator],
|
|
63028
|
+
color: "#005cc5"
|
|
63029
|
+
}, {
|
|
63030
|
+
tag: [tags.keyword, tags.typeName, tags.typeOperator, tags.typeName],
|
|
63031
|
+
color: "#d73a49"
|
|
63032
|
+
}, {
|
|
63033
|
+
tag: [tags.string, tags.meta, tags.regexp],
|
|
63034
|
+
color: "#032f62"
|
|
63035
|
+
}, {
|
|
63036
|
+
tag: [tags.name, tags.quote],
|
|
63037
|
+
color: "#22863a"
|
|
63038
|
+
}, {
|
|
63039
|
+
tag: [tags.heading, tags.strong],
|
|
63040
|
+
color: "#24292e",
|
|
63041
|
+
fontWeight: "bold"
|
|
63042
|
+
}, {
|
|
63043
|
+
tag: [tags.emphasis],
|
|
63044
|
+
color: "#24292e",
|
|
63045
|
+
fontStyle: "italic"
|
|
63046
|
+
}, {
|
|
63047
|
+
tag: [tags.deleted],
|
|
63048
|
+
color: "#b31d28",
|
|
63049
|
+
backgroundColor: "ffeef0"
|
|
63050
|
+
}, {
|
|
63051
|
+
tag: [tags.atom, tags.bool, tags.special(tags.variableName)],
|
|
63052
|
+
color: "#e36209"
|
|
63053
|
+
}, {
|
|
63054
|
+
tag: [tags.url, tags.escape, tags.regexp, tags.link],
|
|
63055
|
+
color: "#032f62"
|
|
63056
|
+
}, {
|
|
63057
|
+
tag: tags.link,
|
|
63058
|
+
textDecoration: "underline"
|
|
63059
|
+
}, {
|
|
63060
|
+
tag: tags.strikethrough,
|
|
63061
|
+
textDecoration: "line-through"
|
|
63062
|
+
}, {
|
|
63063
|
+
tag: tags.invalid,
|
|
63064
|
+
color: "#cb2431"
|
|
63065
|
+
}];
|
|
63066
|
+
var githubLightInit = (options) => {
|
|
63011
63067
|
var {
|
|
63012
63068
|
theme: theme2 = "light",
|
|
63013
63069
|
settings = {},
|
|
63014
63070
|
styles = []
|
|
63015
|
-
} = {};
|
|
63071
|
+
} = options || {};
|
|
63016
63072
|
return createTheme({
|
|
63017
63073
|
theme: theme2,
|
|
63018
|
-
settings: _extends({},
|
|
63019
|
-
styles: [
|
|
63020
|
-
tag: [tags.comment, tags.quote],
|
|
63021
|
-
color: "#707F8D"
|
|
63022
|
-
}, {
|
|
63023
|
-
tag: [tags.typeName, tags.typeOperator],
|
|
63024
|
-
color: "#aa0d91"
|
|
63025
|
-
}, {
|
|
63026
|
-
tag: [tags.keyword],
|
|
63027
|
-
color: "#aa0d91",
|
|
63028
|
-
fontWeight: "bold"
|
|
63029
|
-
}, {
|
|
63030
|
-
tag: [tags.string, tags.meta],
|
|
63031
|
-
color: "#D23423"
|
|
63032
|
-
}, {
|
|
63033
|
-
tag: [tags.name],
|
|
63034
|
-
color: "#032f62"
|
|
63035
|
-
}, {
|
|
63036
|
-
tag: [tags.typeName],
|
|
63037
|
-
color: "#522BB2"
|
|
63038
|
-
}, {
|
|
63039
|
-
tag: [tags.variableName],
|
|
63040
|
-
color: "#23575C"
|
|
63041
|
-
}, {
|
|
63042
|
-
tag: [tags.definition(tags.variableName)],
|
|
63043
|
-
color: "#327A9E"
|
|
63044
|
-
}, {
|
|
63045
|
-
tag: [tags.regexp, tags.link],
|
|
63046
|
-
color: "#0e0eff"
|
|
63047
|
-
}, ...styles]
|
|
63074
|
+
settings: _extends({}, defaultSettingsGithubLight, settings),
|
|
63075
|
+
styles: [...githubLightStyle, ...styles]
|
|
63048
63076
|
});
|
|
63049
|
-
}
|
|
63050
|
-
var xcodeLight = xcodeLightInit();
|
|
63051
|
-
var defaultSettingsXcodeDark = {
|
|
63052
|
-
background: "#292A30",
|
|
63053
|
-
foreground: "#CECFD0",
|
|
63054
|
-
caret: "#fff",
|
|
63055
|
-
selection: "#727377",
|
|
63056
|
-
selectionMatch: "#727377",
|
|
63057
|
-
lineHighlight: "#ffffff0f"
|
|
63058
63077
|
};
|
|
63059
|
-
var
|
|
63078
|
+
var githubLight = githubLightInit();
|
|
63079
|
+
var defaultSettingsGithubDark = {
|
|
63080
|
+
background: "#0d1117",
|
|
63081
|
+
foreground: "#c9d1d9",
|
|
63082
|
+
caret: "#c9d1d9",
|
|
63083
|
+
selection: "#003d73",
|
|
63084
|
+
selectionMatch: "#003d73",
|
|
63085
|
+
lineHighlight: "#36334280"
|
|
63086
|
+
};
|
|
63087
|
+
var githubDarkStyle = [{
|
|
63088
|
+
tag: [tags.standard(tags.tagName), tags.tagName],
|
|
63089
|
+
color: "#7ee787"
|
|
63090
|
+
}, {
|
|
63091
|
+
tag: [tags.comment, tags.bracket],
|
|
63092
|
+
color: "#8b949e"
|
|
63093
|
+
}, {
|
|
63094
|
+
tag: [tags.className, tags.propertyName],
|
|
63095
|
+
color: "#d2a8ff"
|
|
63096
|
+
}, {
|
|
63097
|
+
tag: [tags.variableName, tags.attributeName, tags.number, tags.operator],
|
|
63098
|
+
color: "#79c0ff"
|
|
63099
|
+
}, {
|
|
63100
|
+
tag: [tags.keyword, tags.typeName, tags.typeOperator, tags.typeName],
|
|
63101
|
+
color: "#ff7b72"
|
|
63102
|
+
}, {
|
|
63103
|
+
tag: [tags.string, tags.meta, tags.regexp],
|
|
63104
|
+
color: "#a5d6ff"
|
|
63105
|
+
}, {
|
|
63106
|
+
tag: [tags.name, tags.quote],
|
|
63107
|
+
color: "#7ee787"
|
|
63108
|
+
}, {
|
|
63109
|
+
tag: [tags.heading, tags.strong],
|
|
63110
|
+
color: "#d2a8ff",
|
|
63111
|
+
fontWeight: "bold"
|
|
63112
|
+
}, {
|
|
63113
|
+
tag: [tags.emphasis],
|
|
63114
|
+
color: "#d2a8ff",
|
|
63115
|
+
fontStyle: "italic"
|
|
63116
|
+
}, {
|
|
63117
|
+
tag: [tags.deleted],
|
|
63118
|
+
color: "#ffdcd7",
|
|
63119
|
+
backgroundColor: "ffeef0"
|
|
63120
|
+
}, {
|
|
63121
|
+
tag: [tags.atom, tags.bool, tags.special(tags.variableName)],
|
|
63122
|
+
color: "#ffab70"
|
|
63123
|
+
}, {
|
|
63124
|
+
tag: tags.link,
|
|
63125
|
+
textDecoration: "underline"
|
|
63126
|
+
}, {
|
|
63127
|
+
tag: tags.strikethrough,
|
|
63128
|
+
textDecoration: "line-through"
|
|
63129
|
+
}, {
|
|
63130
|
+
tag: tags.invalid,
|
|
63131
|
+
color: "#f97583"
|
|
63132
|
+
}];
|
|
63133
|
+
var githubDarkInit = (options) => {
|
|
63060
63134
|
var {
|
|
63061
63135
|
theme: theme2 = "dark",
|
|
63062
63136
|
settings = {},
|
|
63063
63137
|
styles = []
|
|
63064
|
-
} = {};
|
|
63138
|
+
} = options || {};
|
|
63065
63139
|
return createTheme({
|
|
63066
63140
|
theme: theme2,
|
|
63067
|
-
settings: _extends({},
|
|
63068
|
-
styles: [
|
|
63069
|
-
tag: [tags.comment, tags.quote],
|
|
63070
|
-
color: "#7F8C98"
|
|
63071
|
-
}, {
|
|
63072
|
-
tag: [tags.keyword],
|
|
63073
|
-
color: "#FF7AB2",
|
|
63074
|
-
fontWeight: "bold"
|
|
63075
|
-
}, {
|
|
63076
|
-
tag: [tags.string, tags.meta],
|
|
63077
|
-
color: "#FF8170"
|
|
63078
|
-
}, {
|
|
63079
|
-
tag: [tags.typeName],
|
|
63080
|
-
color: "#DABAFF"
|
|
63081
|
-
}, {
|
|
63082
|
-
tag: [tags.definition(tags.variableName)],
|
|
63083
|
-
color: "#6BDFFF"
|
|
63084
|
-
}, {
|
|
63085
|
-
tag: [tags.name],
|
|
63086
|
-
color: "#6BAA9F"
|
|
63087
|
-
}, {
|
|
63088
|
-
tag: [tags.variableName],
|
|
63089
|
-
color: "#ACF2E4"
|
|
63090
|
-
}, {
|
|
63091
|
-
tag: [tags.regexp, tags.link],
|
|
63092
|
-
color: "#FF8170"
|
|
63093
|
-
}, ...styles]
|
|
63141
|
+
settings: _extends({}, defaultSettingsGithubDark, settings),
|
|
63142
|
+
styles: [...githubDarkStyle, ...styles]
|
|
63094
63143
|
});
|
|
63095
63144
|
};
|
|
63096
|
-
var
|
|
63145
|
+
var githubDark = githubDarkInit();
|
|
63097
63146
|
const baseKeymap = defaultKeymap.filter((key) => key.key !== "Enter");
|
|
63147
|
+
const defaultLightThemeInit = githubLightInit;
|
|
63148
|
+
const defaultLightTheme = githubLight;
|
|
63149
|
+
const defaultDarkThemeInit = githubDarkInit;
|
|
63150
|
+
const defaultDarkTheme = githubDark;
|
|
63098
63151
|
function Repl({
|
|
63099
63152
|
pg,
|
|
63100
63153
|
border = false,
|
|
63101
|
-
lightTheme =
|
|
63102
|
-
darkTheme: darkTheme2 =
|
|
63154
|
+
lightTheme = defaultLightTheme,
|
|
63155
|
+
darkTheme: darkTheme2 = defaultDarkTheme,
|
|
63103
63156
|
theme: theme2 = "auto",
|
|
63104
63157
|
showTime = false,
|
|
63105
63158
|
disableUpdateSchema = false
|
|
@@ -63148,6 +63201,7 @@ function Repl({
|
|
|
63148
63201
|
setTimeout(() => {
|
|
63149
63202
|
extractStyles();
|
|
63150
63203
|
}, 0);
|
|
63204
|
+
return;
|
|
63151
63205
|
}
|
|
63152
63206
|
}, [theme2, lightTheme, darkTheme2]);
|
|
63153
63207
|
const onChange = reactExports.useCallback((val, _viewUpdate) => {
|
|
@@ -63251,11 +63305,14 @@ function Repl({
|
|
|
63251
63305
|
defaultSchema: "public"
|
|
63252
63306
|
})
|
|
63253
63307
|
],
|
|
63254
|
-
[pg, schema, value, output]
|
|
63308
|
+
[pg, schema, value, output, disableUpdateSchema]
|
|
63255
63309
|
);
|
|
63256
63310
|
const extractStyles = () => {
|
|
63257
|
-
var _a2;
|
|
63258
|
-
const cmEditorEl = (_a2 = rcm.current) == null ? void 0 : _a2.editor.querySelector(".cm-editor");
|
|
63311
|
+
var _a2, _b;
|
|
63312
|
+
const cmEditorEl = (_b = (_a2 = rcm.current) == null ? void 0 : _a2.editor) == null ? void 0 : _b.querySelector(".cm-editor");
|
|
63313
|
+
if (!cmEditorEl) {
|
|
63314
|
+
throw new Error("No CodeMirror editor found");
|
|
63315
|
+
}
|
|
63259
63316
|
const gutterEl = cmEditorEl.querySelector(".cm-gutters");
|
|
63260
63317
|
const cmEditorElComputedStyles = window.getComputedStyle(cmEditorEl);
|
|
63261
63318
|
const foregroundColor = cmEditorElComputedStyles.color;
|
|
@@ -63289,7 +63346,7 @@ function Repl({
|
|
|
63289
63346
|
ref: (ref) => outputRef.current = ref,
|
|
63290
63347
|
children: [
|
|
63291
63348
|
loading && /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "PGliteRepl-loading-msg", children: "Loading..." }),
|
|
63292
|
-
output.map((response
|
|
63349
|
+
output.map((response) => /* @__PURE__ */ jsxRuntimeExports.jsx("div", { children: /* @__PURE__ */ jsxRuntimeExports.jsx(ReplResponse, { response: response || [], showTime }) }, `${response.query}-${response.time}`))
|
|
63293
63350
|
]
|
|
63294
63351
|
}
|
|
63295
63352
|
),
|
|
@@ -63318,7 +63375,7 @@ function Repl({
|
|
|
63318
63375
|
}
|
|
63319
63376
|
);
|
|
63320
63377
|
}
|
|
63321
|
-
const css =
|
|
63378
|
+
const css = ".PGliteRepl-root {\n --fg: var(--PGliteRepl-foreground-color);\n --bg: var(--PGliteRepl-background-color);\n --border: var(--PGliteRepl-border);\n --border-color: var(--PGliteRepl-border-color);\n --font-size: var(--PGliteRepl-font-size, 12px);\n\n display: flex;\n flex-direction: column;\n height: 100%;\n width: 100%;\n font-size: var(--font-size);\n color: var(--fg);\n background-color: var(--bg);\n}\n\n.PGliteRepl-loading-msg {\n opacity: 0.5;\n}\n\n.PGliteRepl-root table {\n font-size: var(--font-size);\n}\n\n.PGliteRepl-root-border {\n border: var(--border);\n}\n\n.PGliteRepl-output {\n flex: 1;\n overflow-y: auto;\n padding: 0.5em 0 0.5em 0.5em;\n border-bottom: var(--border);\n}\n\n.PGliteRepl-root hr {\n margin: 0.5em 0;\n border: none;\n border-top: var(--border);\n}\n\n.PGliteRepl-input {\n display: flex;\n min-height: 60px;\n max-height: 50%;\n width: 100%;\n}\n\n.PGliteRepl-input .cm-editor.cm-focused {\n outline: none;\n}\n\n.PGliteRepl-input-loading {\n pointer-events: none;\n}\n\n.PGliteRepl-table-scroll {\n overflow-x: auto;\n}\n\n.PGliteRepl-table {\n border-collapse: collapse;\n}\n\n.PGliteRepl-line {\n margin: 0 0 0 1em;\n position: relative;\n}\n\n.PGliteRepl-line::before {\n display: block;\n width: 0.7em;\n text-align: center;\n content: '❮';\n margin-right: 0.5em;\n color: var(--border-color);\n position: absolute;\n left: -1em;\n}\n\n.PGliteRepl-line + .PGliteRepl-line {\n margin-top: 0.25em;\n}\n\n.PGliteRepl-query {\n margin: 0 0 0.25em 1em;\n}\n\n.PGliteRepl-query::before {\n content: '❯';\n}\n\n.PGliteRepl-table th {\n text-align: center;\n font-weight: 600;\n}\n\n.PGliteRepl-table td {\n text-align: left;\n max-width: 400px;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.PGliteRepl-table .PGliteRepl-number {\n text-align: right;\n font-variant-numeric: tabular-nums;\n}\n\n.PGliteRepl-table .PGliteRepl-boolean {\n text-align: center;\n}\n\n.PGliteRepl-table .PGliteRepl-json {\n font-family: monospace;\n}\n\n.PGliteRepl-table th,\n.PGliteRepl-table td {\n padding: 0 0.2em;\n border: var(--border);\n}\n\n.PGliteRepl-divider {\n font-size: 9px;\n display: flex;\n align-items: center;\n color: var(--border-color);\n padding-right: 0.5em;\n}\n\n.PGliteRepl-divider hr {\n margin: 0;\n flex-grow: 1;\n}\n\n.PGliteRepl-time {\n margin: 0 0.5em;\n}\n\n.PGliteRepl-null {\n color: var(--border-color);\n}\n\n.PGliteRepl-error {\n color: #c33;\n}\n\n.PGliteRepl-error::before {\n content: '!';\n color: #c33;\n font-weight: bold;\n}\n\n.PGliteRepl-table-row-count a {\n text-decoration: none;\n}\n";
|
|
63322
63379
|
class PGliteREPL extends HTMLElement {
|
|
63323
63380
|
constructor() {
|
|
63324
63381
|
super();
|
|
@@ -63328,6 +63385,7 @@ class PGliteREPL extends HTMLElement {
|
|
|
63328
63385
|
__privateAdd(this, _lightTheme);
|
|
63329
63386
|
__privateAdd(this, _darkTheme);
|
|
63330
63387
|
__privateSet(this, _mountPoint, document.createElement("div"));
|
|
63388
|
+
__privateGet(this, _mountPoint).classList.add("PGliteRepl-root");
|
|
63331
63389
|
const shadowRoot = this.attachShadow({ mode: "open" });
|
|
63332
63390
|
const style = document.createElement("style");
|
|
63333
63391
|
style.textContent = css;
|
|
@@ -63397,6 +63455,10 @@ _lightTheme = new WeakMap();
|
|
|
63397
63455
|
_darkTheme = new WeakMap();
|
|
63398
63456
|
customElements.define("pglite-repl", PGliteREPL);
|
|
63399
63457
|
export {
|
|
63400
|
-
PGliteREPL
|
|
63458
|
+
PGliteREPL,
|
|
63459
|
+
defaultDarkTheme,
|
|
63460
|
+
defaultDarkThemeInit,
|
|
63461
|
+
defaultLightTheme,
|
|
63462
|
+
defaultLightThemeInit
|
|
63401
63463
|
};
|
|
63402
63464
|
//# sourceMappingURL=Repl.js.map
|