@electric-sql/pglite-repl 0.0.1-alpha.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/LICENSE +176 -0
- package/README.md +91 -0
- package/dist/Repl.d.ts +14 -0
- package/dist/Repl.js +726 -0
- package/dist/Repl.js.map +1 -0
- package/dist/Repl.umd.cjs +720 -0
- package/dist/Repl.umd.cjs.map +1 -0
- package/dist/style.css +157 -0
- package/dist-webcomponent/Repl.js +63402 -0
- package/dist-webcomponent/Repl.js.map +1 -0
- package/dist-webcomponent/src/Repl.d.ts +14 -0
- package/dist-webcomponent/src-webcomponent/main.d.ts +20 -0
- package/dist-webcomponent/style.css +1 -0
- package/package.json +69 -0
package/dist/Repl.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Repl.js","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":["border"],"mappings":"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"}
|