@sqlrooms/sql-editor 0.15.0 → 0.16.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.
Files changed (93) hide show
  1. package/README.md +3 -4
  2. package/dist/SqlEditor.d.ts.map +1 -1
  3. package/dist/SqlEditor.js +22 -136
  4. package/dist/SqlEditor.js.map +1 -1
  5. package/dist/SqlEditorSlice.d.ts +58 -15
  6. package/dist/SqlEditorSlice.d.ts.map +1 -1
  7. package/dist/SqlEditorSlice.js +244 -94
  8. package/dist/SqlEditorSlice.js.map +1 -1
  9. package/dist/SqlMonacoEditor.d.ts.map +1 -1
  10. package/dist/SqlMonacoEditor.js +2 -1
  11. package/dist/SqlMonacoEditor.js.map +1 -1
  12. package/dist/components/CreateTableModal.d.ts.map +1 -0
  13. package/dist/{CreateTableModal.js → components/CreateTableModal.js} +2 -10
  14. package/dist/components/CreateTableModal.js.map +1 -0
  15. package/dist/components/DeleteSqlQueryModal.d.ts.map +1 -0
  16. package/dist/components/DeleteSqlQueryModal.js.map +1 -0
  17. package/dist/components/QueryEditorPanel.d.ts +9 -0
  18. package/dist/components/QueryEditorPanel.d.ts.map +1 -0
  19. package/dist/components/QueryEditorPanel.js +14 -0
  20. package/dist/components/QueryEditorPanel.js.map +1 -0
  21. package/dist/components/QueryEditorPanelActions.d.ts +5 -0
  22. package/dist/components/QueryEditorPanelActions.d.ts.map +1 -0
  23. package/dist/components/QueryEditorPanelActions.js +53 -0
  24. package/dist/components/QueryEditorPanelActions.js.map +1 -0
  25. package/dist/components/QueryEditorPanelEditor.d.ts +5 -0
  26. package/dist/components/QueryEditorPanelEditor.d.ts.map +1 -0
  27. package/dist/components/QueryEditorPanelEditor.js +45 -0
  28. package/dist/components/QueryEditorPanelEditor.js.map +1 -0
  29. package/dist/components/QueryEditorPanelTabsList.d.ts +5 -0
  30. package/dist/components/QueryEditorPanelTabsList.d.ts.map +1 -0
  31. package/dist/components/QueryEditorPanelTabsList.js +71 -0
  32. package/dist/components/QueryEditorPanelTabsList.js.map +1 -0
  33. package/dist/components/QueryResultPanel.d.ts +12 -0
  34. package/dist/components/QueryResultPanel.d.ts.map +1 -0
  35. package/dist/components/QueryResultPanel.js +30 -0
  36. package/dist/components/QueryResultPanel.js.map +1 -0
  37. package/dist/components/RenameSqlQueryModal.d.ts.map +1 -0
  38. package/dist/components/RenameSqlQueryModal.js +29 -0
  39. package/dist/components/RenameSqlQueryModal.js.map +1 -0
  40. package/dist/components/SqlEditorHeader.d.ts +15 -0
  41. package/dist/components/SqlEditorHeader.d.ts.map +1 -0
  42. package/dist/components/SqlEditorHeader.js +7 -0
  43. package/dist/components/SqlEditorHeader.js.map +1 -0
  44. package/dist/components/SqlQueryDataSourcesPanel.d.ts.map +1 -0
  45. package/dist/components/SqlQueryDataSourcesPanel.js.map +1 -0
  46. package/dist/components/SqlReferenceButton.d.ts +12 -0
  47. package/dist/components/SqlReferenceButton.d.ts.map +1 -0
  48. package/dist/components/SqlReferenceButton.js +10 -0
  49. package/dist/components/SqlReferenceButton.js.map +1 -0
  50. package/dist/components/TableStructurePanel.d.ts +13 -0
  51. package/dist/components/TableStructurePanel.d.ts.map +1 -0
  52. package/dist/components/TableStructurePanel.js +21 -0
  53. package/dist/components/TableStructurePanel.js.map +1 -0
  54. package/dist/index.d.ts +10 -2
  55. package/dist/index.d.ts.map +1 -1
  56. package/dist/index.js +10 -2
  57. package/dist/index.js.map +1 -1
  58. package/package.json +17 -16
  59. package/dist/CreateTableModal.d.ts.map +0 -1
  60. package/dist/CreateTableModal.js.map +0 -1
  61. package/dist/DeleteSqlQueryModal.d.ts.map +0 -1
  62. package/dist/DeleteSqlQueryModal.js.map +0 -1
  63. package/dist/RenameSqlQueryModal.d.ts.map +0 -1
  64. package/dist/RenameSqlQueryModal.js +0 -27
  65. package/dist/RenameSqlQueryModal.js.map +0 -1
  66. package/dist/SqlQueryDataSourcesPanel.d.ts.map +0 -1
  67. package/dist/SqlQueryDataSourcesPanel.js.map +0 -1
  68. package/dist/hooks/index.d.ts +0 -5
  69. package/dist/hooks/index.d.ts.map +0 -1
  70. package/dist/hooks/index.js +0 -5
  71. package/dist/hooks/index.js.map +0 -1
  72. package/dist/hooks/useMonacoEditor.d.ts +0 -13
  73. package/dist/hooks/useMonacoEditor.d.ts.map +0 -1
  74. package/dist/hooks/useMonacoEditor.js +0 -78
  75. package/dist/hooks/useMonacoEditor.js.map +0 -1
  76. package/dist/hooks/useQueryExecution.d.ts +0 -17
  77. package/dist/hooks/useQueryExecution.d.ts.map +0 -1
  78. package/dist/hooks/useQueryExecution.js +0 -61
  79. package/dist/hooks/useQueryExecution.js.map +0 -1
  80. package/dist/hooks/useQueryTabManagement.d.ts +0 -41
  81. package/dist/hooks/useQueryTabManagement.d.ts.map +0 -1
  82. package/dist/hooks/useQueryTabManagement.js +0 -95
  83. package/dist/hooks/useQueryTabManagement.js.map +0 -1
  84. package/dist/hooks/useTableManagement.d.ts +0 -14
  85. package/dist/hooks/useTableManagement.d.ts.map +0 -1
  86. package/dist/hooks/useTableManagement.js +0 -46
  87. package/dist/hooks/useTableManagement.js.map +0 -1
  88. /package/dist/{CreateTableModal.d.ts → components/CreateTableModal.d.ts} +0 -0
  89. /package/dist/{DeleteSqlQueryModal.d.ts → components/DeleteSqlQueryModal.d.ts} +0 -0
  90. /package/dist/{DeleteSqlQueryModal.js → components/DeleteSqlQueryModal.js} +0 -0
  91. /package/dist/{RenameSqlQueryModal.d.ts → components/RenameSqlQueryModal.d.ts} +0 -0
  92. /package/dist/{SqlQueryDataSourcesPanel.d.ts → components/SqlQueryDataSourcesPanel.d.ts} +0 -0
  93. /package/dist/{SqlQueryDataSourcesPanel.js → components/SqlQueryDataSourcesPanel.js} +0 -0
@@ -1 +0,0 @@
1
- {"version":3,"file":"useQueryTabManagement.js","sourceRoot":"","sources":["../../src/hooks/useQueryTabManagement.ts"],"names":[],"mappings":"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","sourcesContent":["import {useState, useCallback} from 'react';\nimport {useStoreWithSqlEditor} from '../SqlEditorSlice';\n\nexport type SqlQuery = {\n id: string;\n name: string;\n query: string;\n};\n\n/**\n * Hook for managing query tabs (adding, renaming, deleting)\n *\n * @deprecated Use the methods directly from SqlEditorSlice instead\n */\nexport function useQueryTabManagement(defaultQuery: string = '') {\n // Get SQL editor config and functions from the store\n const sqlEditorConfig = useStoreWithSqlEditor((s) => s.config.sqlEditor);\n const createQueryTab = useStoreWithSqlEditor(\n (s) => s.sqlEditor.createQueryTab,\n );\n const deleteQueryTab = useStoreWithSqlEditor(\n (s) => s.sqlEditor.deleteQueryTab,\n );\n const renameQueryTab = useStoreWithSqlEditor(\n (s) => s.sqlEditor.renameQueryTab,\n );\n const updateQueryText = useStoreWithSqlEditor(\n (s) => s.sqlEditor.updateQueryText,\n );\n const setSelectedQueryId = useStoreWithSqlEditor(\n (s) => s.sqlEditor.setSelectedQueryId,\n );\n const getCurrentQueryFn = useStoreWithSqlEditor(\n (s) => s.sqlEditor.getCurrentQuery,\n );\n\n // Local state for modals\n const [queryToDelete, setQueryToDelete] = useState<string | null>(null);\n const [queryToRename, setQueryToRename] = useState<{\n id: string;\n name: string;\n } | null>(null);\n\n /**\n * Get the currently selected query's SQL text\n */\n const getCurrentQuery = useCallback(() => {\n return getCurrentQueryFn(defaultQuery);\n }, [getCurrentQueryFn, defaultQuery]);\n\n /**\n * Change the selected tab\n */\n const handleTabChange = useCallback(\n (value: string) => {\n setSelectedQueryId(value);\n },\n [setSelectedQueryId],\n );\n\n /**\n * Update a query's SQL text\n */\n const handleUpdateQuery = useCallback(\n (value: string | undefined) => {\n if (!value) return;\n updateQueryText(sqlEditorConfig.selectedQueryId, value);\n },\n [sqlEditorConfig.selectedQueryId, updateQueryText],\n );\n\n /**\n * Create a new query tab\n */\n const handleNewQuery = useCallback(() => {\n return createQueryTab(defaultQuery);\n }, [createQueryTab, defaultQuery]);\n\n /**\n * Begin the rename process for a query\n */\n const handleStartRename = useCallback(\n (queryId: string, currentName: string, event: React.MouseEvent) => {\n event.preventDefault();\n setQueryToRename({id: queryId, name: currentName});\n },\n [],\n );\n\n /**\n * Complete the rename process for a query\n */\n const handleFinishRename = useCallback(\n (newName: string) => {\n if (queryToRename) {\n renameQueryTab(queryToRename.id, newName);\n }\n setQueryToRename(null);\n },\n [queryToRename, renameQueryTab],\n );\n\n /**\n * Begin the delete process for a query\n */\n const handleDeleteQuery = useCallback(\n (queryId: string, event: React.MouseEvent) => {\n event.stopPropagation();\n setQueryToDelete(queryId);\n },\n [],\n );\n\n /**\n * Confirm and execute the deletion of a query\n */\n const handleConfirmDeleteQuery = useCallback(() => {\n if (queryToDelete) {\n deleteQueryTab(queryToDelete);\n setQueryToDelete(null);\n }\n }, [queryToDelete, deleteQueryTab]);\n\n return {\n queries: sqlEditorConfig.queries,\n selectedQueryId: sqlEditorConfig.selectedQueryId,\n queryToDelete,\n queryToRename,\n getCurrentQuery,\n handleTabChange,\n handleUpdateQuery,\n handleNewQuery,\n handleStartRename,\n handleFinishRename,\n handleDeleteQuery,\n handleConfirmDeleteQuery,\n setQueryToDelete,\n setQueryToRename,\n };\n}\n"]}
@@ -1,14 +0,0 @@
1
- import { DataTable } from '@sqlrooms/duckdb';
2
- /**
3
- * Hook to manage SQL tables, their schemas, and sample data
4
- */
5
- export declare function useTableManagement(): {
6
- tables: string[];
7
- tablesLoading: boolean;
8
- tablesError: Error | null;
9
- tableSchemas: DataTable[];
10
- selectedTable: string | undefined;
11
- fetchTables: () => Promise<void>;
12
- handleSelectTable: (table: string | undefined) => void;
13
- };
14
- //# sourceMappingURL=useTableManagement.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"useTableManagement.d.ts","sourceRoot":"","sources":["../../src/hooks/useTableManagement.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAC,MAAM,kBAAkB,CAAC;AAI3C;;GAEG;AACH,wBAAgB,kBAAkB;;;;;;;+BAmBc,MAAM,GAAG,SAAS;EA2BjE"}
@@ -1,46 +0,0 @@
1
- import { useCallback, useMemo, useState } from 'react';
2
- import { useStoreWithSqlEditor } from '../SqlEditorSlice';
3
- /**
4
- * Hook to manage SQL tables, their schemas, and sample data
5
- */
6
- export function useTableManagement() {
7
- // Get data from the store without refs
8
- const rawTables = useStoreWithSqlEditor((s) => s.db.tables);
9
- const tables = useMemo(() => rawTables.map((t) => t.tableName), [rawTables]);
10
- const refreshTableSchemas = useStoreWithSqlEditor((s) => s.db.refreshTableSchemas);
11
- // Use the DataTable[] directly without transforming it
12
- const tableSchemas = useMemo(() => rawTables || [], [rawTables]);
13
- const [tablesLoading, setTablesLoading] = useState(false);
14
- const [tablesError, setTablesError] = useState(null);
15
- const [selectedTable, setSelectedTable] = useState();
16
- // Handler for selecting a table
17
- const handleSelectTable = useCallback((table) => {
18
- setSelectedTable(table);
19
- }, []);
20
- // The fetchTables method now just refreshes the schemas from ProjectStore
21
- const fetchTables = useCallback(async () => {
22
- try {
23
- setTablesLoading(true);
24
- setTablesError(null);
25
- if (refreshTableSchemas)
26
- await refreshTableSchemas();
27
- }
28
- catch (error) {
29
- console.error('Error refreshing tables:', error);
30
- setTablesError(error);
31
- }
32
- finally {
33
- setTablesLoading(false);
34
- }
35
- }, [refreshTableSchemas]);
36
- return {
37
- tables,
38
- tablesLoading,
39
- tablesError,
40
- tableSchemas,
41
- selectedTable,
42
- fetchTables,
43
- handleSelectTable,
44
- };
45
- }
46
- //# sourceMappingURL=useTableManagement.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"useTableManagement.js","sourceRoot":"","sources":["../../src/hooks/useTableManagement.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,WAAW,EAAE,OAAO,EAAE,QAAQ,EAAC,MAAM,OAAO,CAAC;AACrD,OAAO,EAAC,qBAAqB,EAAC,MAAM,mBAAmB,CAAC;AAExD;;GAEG;AACH,MAAM,UAAU,kBAAkB;IAChC,uCAAuC;IACvC,MAAM,SAAS,GAAG,qBAAqB,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC;IAC5D,MAAM,MAAM,GAAG,OAAO,CACpB,GAAG,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAY,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,EAClD,CAAC,SAAS,CAAC,CACZ,CAAC;IACF,MAAM,mBAAmB,GAAG,qBAAqB,CAC/C,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,mBAAmB,CAChC,CAAC;IAEF,uDAAuD;IACvD,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,SAAS,IAAI,EAAE,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;IAEjE,MAAM,CAAC,aAAa,EAAE,gBAAgB,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC1D,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,QAAQ,CAAe,IAAI,CAAC,CAAC;IACnE,MAAM,CAAC,aAAa,EAAE,gBAAgB,CAAC,GAAG,QAAQ,EAAsB,CAAC;IAEzE,gCAAgC;IAChC,MAAM,iBAAiB,GAAG,WAAW,CAAC,CAAC,KAAyB,EAAE,EAAE;QAClE,gBAAgB,CAAC,KAAK,CAAC,CAAC;IAC1B,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,0EAA0E;IAC1E,MAAM,WAAW,GAAG,WAAW,CAAC,KAAK,IAAI,EAAE;QACzC,IAAI,CAAC;YACH,gBAAgB,CAAC,IAAI,CAAC,CAAC;YACvB,cAAc,CAAC,IAAI,CAAC,CAAC;YACrB,IAAI,mBAAmB;gBAAE,MAAM,mBAAmB,EAAE,CAAC;QACvD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,0BAA0B,EAAE,KAAK,CAAC,CAAC;YACjD,cAAc,CAAC,KAAc,CAAC,CAAC;QACjC,CAAC;gBAAS,CAAC;YACT,gBAAgB,CAAC,KAAK,CAAC,CAAC;QAC1B,CAAC;IACH,CAAC,EAAE,CAAC,mBAAmB,CAAC,CAAC,CAAC;IAE1B,OAAO;QACL,MAAM;QACN,aAAa;QACb,WAAW;QACX,YAAY;QACZ,aAAa;QACb,WAAW;QACX,iBAAiB;KAClB,CAAC;AACJ,CAAC","sourcesContent":["import {DataTable} from '@sqlrooms/duckdb';\nimport {useCallback, useMemo, useState} from 'react';\nimport {useStoreWithSqlEditor} from '../SqlEditorSlice';\n\n/**\n * Hook to manage SQL tables, their schemas, and sample data\n */\nexport function useTableManagement() {\n // Get data from the store without refs\n const rawTables = useStoreWithSqlEditor((s) => s.db.tables);\n const tables = useMemo(\n () => rawTables.map((t: DataTable) => t.tableName),\n [rawTables],\n );\n const refreshTableSchemas = useStoreWithSqlEditor(\n (s) => s.db.refreshTableSchemas,\n );\n\n // Use the DataTable[] directly without transforming it\n const tableSchemas = useMemo(() => rawTables || [], [rawTables]);\n\n const [tablesLoading, setTablesLoading] = useState(false);\n const [tablesError, setTablesError] = useState<Error | null>(null);\n const [selectedTable, setSelectedTable] = useState<string | undefined>();\n\n // Handler for selecting a table\n const handleSelectTable = useCallback((table: string | undefined) => {\n setSelectedTable(table);\n }, []);\n\n // The fetchTables method now just refreshes the schemas from ProjectStore\n const fetchTables = useCallback(async () => {\n try {\n setTablesLoading(true);\n setTablesError(null);\n if (refreshTableSchemas) await refreshTableSchemas();\n } catch (error) {\n console.error('Error refreshing tables:', error);\n setTablesError(error as Error);\n } finally {\n setTablesLoading(false);\n }\n }, [refreshTableSchemas]);\n\n return {\n tables,\n tablesLoading,\n tablesError,\n tableSchemas,\n selectedTable,\n fetchTables,\n handleSelectTable,\n };\n}\n"]}