From 0f1271a69c78d1f10fdcd3beb7eeb61d7d2a32c6 Mon Sep 17 00:00:00 2001 From: Peter Kosztolanyi Date: Sun, 9 Nov 2025 12:00:58 +0100 Subject: [PATCH] Switch to Material UI; replaced custom CSS/HTML with MUI components (no functional changes) --- README.md | 30 +- precise/index.html | 2 +- precise/package-lock.json | 1019 +++++++++++++++-- precise/package.json | 13 +- precise/src/QueryCell.tsx | 319 ++++-- precise/src/QueryEditor.tsx | 249 ++-- precise/src/QueryEditorPane.tsx | 91 +- precise/src/ResultSet.tsx | 550 +++++---- precise/src/SubstitutionEditor.tsx | 63 +- precise/src/assets/close.png | Bin 46334 -> 0 bytes precise/src/assets/pin_down.png | Bin 36813 -> 0 bytes precise/src/assets/pin_up.png | Bin 62626 -> 0 bytes .../controls/catalog_viewer/CatalogViewer.tsx | 300 +++-- .../catalog_viewer/CatalogViewerColumn.tsx | 144 +-- .../catalog_viewer/CatalogViewerSchema.tsx | 101 +- .../catalog_viewer/CatalogViewerTable.tsx | 123 +- .../controls/catalog_viewer/ViewerState.ts | 2 +- .../controls/catalog_viewer/catalogviewer.css | 204 ---- precise/src/controls/tabs/EnterpriseTabs.tsx | 87 +- precise/src/controls/tabs/TabItem.tsx | 145 --- .../src/controls/tabs/TabsEllipsesMenu.tsx | 76 +- precise/src/controls/tabs/tabs.css | 193 ---- precise/src/main.tsx | 46 +- precise/src/sql/SchemaProvider.ts | 10 +- precise/src/style/components.css | 201 ---- precise/src/style/control.css | 231 ---- precise/src/style/layout.css | 144 --- precise/src/style/normalize.css | 94 -- precise/src/style/query-editor.css | 162 --- precise/src/style/results.css | 231 ---- precise/src/style/theme.css | 66 -- precise/src/theme.tsx | 45 + precise/src/utils/ClearButton.tsx | 33 +- precise/src/utils/CopyLink.tsx | 39 +- precise/src/utils/ErrorBoxProvider.tsx | 41 - precise/src/utils/ProgressBar.tsx | 33 - precise/src/utils/ResizableContainer.tsx | 83 -- precise/src/utils/errorbox.css | 40 - screenshot.png | Bin 0 -> 173703 bytes 39 files changed, 2347 insertions(+), 2863 deletions(-) delete mode 100644 precise/src/assets/close.png delete mode 100644 precise/src/assets/pin_down.png delete mode 100644 precise/src/assets/pin_up.png delete mode 100644 precise/src/controls/catalog_viewer/catalogviewer.css delete mode 100644 precise/src/controls/tabs/TabItem.tsx delete mode 100644 precise/src/controls/tabs/tabs.css delete mode 100644 precise/src/style/components.css delete mode 100644 precise/src/style/control.css delete mode 100644 precise/src/style/layout.css delete mode 100644 precise/src/style/normalize.css delete mode 100644 precise/src/style/query-editor.css delete mode 100644 precise/src/style/results.css delete mode 100644 precise/src/style/theme.css create mode 100644 precise/src/theme.tsx delete mode 100644 precise/src/utils/ErrorBoxProvider.tsx delete mode 100644 precise/src/utils/ProgressBar.tsx delete mode 100644 precise/src/utils/ResizableContainer.tsx delete mode 100644 precise/src/utils/errorbox.css create mode 100755 screenshot.png diff --git a/README.md b/README.md index 140f149..6e26cae 100644 --- a/README.md +++ b/README.md @@ -9,7 +9,7 @@ or remote Trino cluster. > production workloads. Treat the current release as an early-stage demo; > production-ready builds and documentation are planned. -![Trino Query UI Demo](demos.gif "Trino Query UI Demo") +![Trino Query UI](screenshot.png "Trino Query UI") Implementation details: * React TypeScript project with Vite @@ -29,7 +29,7 @@ import { QueryEditor } from 'trino-query-ui' import 'trino-query-ui/dist/index.css' function MyTrinoApp() { - return + return } export default MyTrinoApp @@ -51,8 +51,10 @@ npm run build ### Copying into Trino +``` mkdir -p $TRINO_HOME/core/trino-main/src/main/resources/query_ui_webapp/ cp -r dist/* $TRINO_HOME/core/trino-main/src/main/resources/query_ui_webapp/ +``` ### Modifying Trino to respond to /query/ @@ -126,7 +128,7 @@ npm run dev The local URL is displayed, and you can open it in your browser. -### Set Up proxying to a local Trino instance +### Set up proxying to a local Trino instance Update `vite.config.ts` with the following so that queries can be proxied to Trino's query endpoint running on `http://localhost:8080` (or any @@ -182,19 +184,19 @@ cases are: The approach: 1. Direct integration into the Trino UI - - No need for an additional authentication hop (although it could be added - in the future) - - Authenticates as the user executing the query when using OAuth2 - - Trino does the heavy lifting + - No need for an additional authentication hop (although it could be added + in the future) + - Authenticates as the user executing the query when using OAuth2 + - Trino does the heavy lifting 2. Remove friction so you can simply write a query - - Autocomplete understands the Trino language, tables, and columns - - Provides syntax highlighting and validation - - Offers a comprehensive catalog explorer + - Autocomplete understands the Trino language, tables, and columns + - Provides syntax highlighting and validation + - Offers a comprehensive catalog explorer 3. Avoid black-box query execution - - Show progress and execution details. People ask "why is my query slow?" - mostly because they only see a spinner for minutes. - - Link to the Trino Query UI to drill into query performance - - Show stages and split counts like the Trino console client + - Show progress and execution details. People ask "why is my query slow?" + mostly because they only see a spinner for minutes. + - Link to the Trino Query UI to drill into query performance + - Show stages and split counts like the Trino console client 4. Keep the experience easy to navigate ### Gaps and future direction diff --git a/precise/index.html b/precise/index.html index 9f6fd79..9faea4e 100644 --- a/precise/index.html +++ b/precise/index.html @@ -4,7 +4,7 @@ - Trino Query Editor - Example app + Trino query editor - Example app
diff --git a/precise/package-lock.json b/precise/package-lock.json index 6729dda..f952c17 100644 --- a/precise/package-lock.json +++ b/precise/package-lock.json @@ -9,13 +9,15 @@ "version": "0.0.1", "license": "Apache-2.0", "dependencies": { + "@emotion/react": "^11.14.0", + "@emotion/styled": "^11.14.1", "@monaco-editor/react": "^4.7.0", + "@mui/icons-material": "^7.3.2", + "@mui/material": "^7.3.2", + "@mui/x-data-grid": "^8.14.0", + "@mui/x-tree-view": "^8.13.1", "antlr4-c3": "^3.4.4", "antlr4ng": "^3.0.16", - "lucide-react": "^0.544.0", - "prettier": "^3.6.2", - "react-dnd": "^16.0.1", - "react-dnd-html5-backend": "^16.0.1", "sql-formatter": "^15.6.9", "uuidv4": "^6.2.13" }, @@ -29,6 +31,7 @@ "eslint": "^9.36.0", "eslint-plugin-react-hooks": "^5.2.0", "eslint-plugin-react-refresh": "^0.4.21", + "prettier": "^3.6.2", "typescript": "^5.9.2", "vite": "^7.1.7" }, @@ -41,7 +44,6 @@ "version": "7.27.1", "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.27.1.tgz", "integrity": "sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==", - "dev": true, "license": "MIT", "dependencies": { "@babel/helper-validator-identifier": "^7.27.1", @@ -68,6 +70,7 @@ "integrity": "sha512-2BCOP7TN8M+gVDj7/ht3hsaO/B/n5oDbiAyyvnRlNOs+u1o+JWNYTQrmpuNp1/Wq2gcFrI01JAW+paEKDMx/CA==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@babel/code-frame": "^7.27.1", "@babel/generator": "^7.28.3", @@ -107,7 +110,6 @@ "version": "7.28.3", "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.28.3.tgz", "integrity": "sha512-3lSpxGgvnmZznmBkCRnVREPUFJv2wrv9iAoFDvADJc0ypmdOxdUtcLeBgBJ6zE0PMeTKnxeQzyk0xTBq4Ep7zw==", - "dev": true, "license": "MIT", "dependencies": { "@babel/parser": "^7.28.3", @@ -151,7 +153,6 @@ "version": "7.28.0", "resolved": "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.28.0.tgz", "integrity": "sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==", - "dev": true, "license": "MIT", "engines": { "node": ">=6.9.0" @@ -161,7 +162,6 @@ "version": "7.27.1", "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.27.1.tgz", "integrity": "sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==", - "dev": true, "license": "MIT", "dependencies": { "@babel/traverse": "^7.27.1", @@ -203,7 +203,6 @@ "version": "7.27.1", "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz", "integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==", - "dev": true, "license": "MIT", "engines": { "node": ">=6.9.0" @@ -213,7 +212,6 @@ "version": "7.27.1", "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.27.1.tgz", "integrity": "sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==", - "dev": true, "license": "MIT", "engines": { "node": ">=6.9.0" @@ -247,7 +245,6 @@ "version": "7.28.4", "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.28.4.tgz", "integrity": "sha512-yZbBqeM6TkpP9du/I2pUZnJsRMGGvOuIrhjzC1AwHwW+6he4mni6Bp/m8ijn0iOuZuPI2BfkCoSRunpyjnrQKg==", - "dev": true, "license": "MIT", "dependencies": { "@babel/types": "^7.28.4" @@ -304,7 +301,6 @@ "version": "7.27.2", "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.27.2.tgz", "integrity": "sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==", - "dev": true, "license": "MIT", "dependencies": { "@babel/code-frame": "^7.27.1", @@ -319,7 +315,6 @@ "version": "7.28.4", "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.28.4.tgz", "integrity": "sha512-YEzuboP2qvQavAcjgQNVgsvHIDv6ZpwXvcvjmyySP2DIMuByS/6ioU5G9pYrWHM6T2YDfc7xga9iNzYOs12CFQ==", - "dev": true, "license": "MIT", "dependencies": { "@babel/code-frame": "^7.27.1", @@ -338,7 +333,6 @@ "version": "7.28.4", "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.28.4.tgz", "integrity": "sha512-bkFqkLhh3pMBUQQkpVgWDWq/lqzc2678eUyDlTBhRqhCHFguYYGM0Efga7tYk4TogG/3x0EEl66/OQ+WGbWB/Q==", - "dev": true, "license": "MIT", "dependencies": { "@babel/helper-string-parser": "^7.27.1", @@ -348,6 +342,182 @@ "node": ">=6.9.0" } }, + "node_modules/@base-ui-components/utils": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@base-ui-components/utils/-/utils-0.1.1.tgz", + "integrity": "sha512-HWXZA8upEKgrdL1rQqxWu1H+2tB2cXzY2jCxvgnpUv3eoWN2jldhXxMZnXIjZF7jahGxSWXfSIM/qskiTWFFxA==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.28.3", + "@floating-ui/utils": "^0.2.10", + "reselect": "^5.1.1", + "use-sync-external-store": "^1.5.0" + }, + "peerDependencies": { + "@types/react": "^17 || ^18 || ^19", + "react": "^17 || ^18 || ^19", + "react-dom": "^17 || ^18 || ^19" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@emotion/babel-plugin": { + "version": "11.13.5", + "resolved": "https://registry.npmjs.org/@emotion/babel-plugin/-/babel-plugin-11.13.5.tgz", + "integrity": "sha512-pxHCpT2ex+0q+HH91/zsdHkw/lXd468DIN2zvfvLtPKLLMo6gQj7oLObq8PhkrxOZb/gGCq03S3Z7PDhS8pduQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-module-imports": "^7.16.7", + "@babel/runtime": "^7.18.3", + "@emotion/hash": "^0.9.2", + "@emotion/memoize": "^0.9.0", + "@emotion/serialize": "^1.3.3", + "babel-plugin-macros": "^3.1.0", + "convert-source-map": "^1.5.0", + "escape-string-regexp": "^4.0.0", + "find-root": "^1.1.0", + "source-map": "^0.5.7", + "stylis": "4.2.0" + } + }, + "node_modules/@emotion/babel-plugin/node_modules/convert-source-map": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", + "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", + "license": "MIT" + }, + "node_modules/@emotion/cache": { + "version": "11.14.0", + "resolved": "https://registry.npmjs.org/@emotion/cache/-/cache-11.14.0.tgz", + "integrity": "sha512-L/B1lc/TViYk4DcpGxtAVbx0ZyiKM5ktoIyafGkH6zg/tj+mA+NE//aPYKG0k8kCHSHVJrpLpcAlOBEXQ3SavA==", + "license": "MIT", + "dependencies": { + "@emotion/memoize": "^0.9.0", + "@emotion/sheet": "^1.4.0", + "@emotion/utils": "^1.4.2", + "@emotion/weak-memoize": "^0.4.0", + "stylis": "4.2.0" + } + }, + "node_modules/@emotion/hash": { + "version": "0.9.2", + "resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.9.2.tgz", + "integrity": "sha512-MyqliTZGuOm3+5ZRSaaBGP3USLw6+EGykkwZns2EPC5g8jJ4z9OrdZY9apkl3+UP9+sdz76YYkwCKP5gh8iY3g==", + "license": "MIT" + }, + "node_modules/@emotion/is-prop-valid": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-1.4.0.tgz", + "integrity": "sha512-QgD4fyscGcbbKwJmqNvUMSE02OsHUa+lAWKdEUIJKgqe5IwRSKd7+KhibEWdaKwgjLj0DRSHA9biAIqGBk05lw==", + "license": "MIT", + "dependencies": { + "@emotion/memoize": "^0.9.0" + } + }, + "node_modules/@emotion/memoize": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.9.0.tgz", + "integrity": "sha512-30FAj7/EoJ5mwVPOWhAyCX+FPfMDrVecJAM+Iw9NRoSl4BBAQeqj4cApHHUXOVvIPgLVDsCFoz/hGD+5QQD1GQ==", + "license": "MIT" + }, + "node_modules/@emotion/react": { + "version": "11.14.0", + "resolved": "https://registry.npmjs.org/@emotion/react/-/react-11.14.0.tgz", + "integrity": "sha512-O000MLDBDdk/EohJPFUqvnp4qnHeYkVP5B0xEG0D/L7cOKP9kefu2DXn8dj74cQfsEzUqh+sr1RzFqiL1o+PpA==", + "license": "MIT", + "peer": true, + "dependencies": { + "@babel/runtime": "^7.18.3", + "@emotion/babel-plugin": "^11.13.5", + "@emotion/cache": "^11.14.0", + "@emotion/serialize": "^1.3.3", + "@emotion/use-insertion-effect-with-fallbacks": "^1.2.0", + "@emotion/utils": "^1.4.2", + "@emotion/weak-memoize": "^0.4.0", + "hoist-non-react-statics": "^3.3.1" + }, + "peerDependencies": { + "react": ">=16.8.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@emotion/serialize": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@emotion/serialize/-/serialize-1.3.3.tgz", + "integrity": "sha512-EISGqt7sSNWHGI76hC7x1CksiXPahbxEOrC5RjmFRJTqLyEK9/9hZvBbiYn70dw4wuwMKiEMCUlR6ZXTSWQqxA==", + "license": "MIT", + "dependencies": { + "@emotion/hash": "^0.9.2", + "@emotion/memoize": "^0.9.0", + "@emotion/unitless": "^0.10.0", + "@emotion/utils": "^1.4.2", + "csstype": "^3.0.2" + } + }, + "node_modules/@emotion/sheet": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@emotion/sheet/-/sheet-1.4.0.tgz", + "integrity": "sha512-fTBW9/8r2w3dXWYM4HCB1Rdp8NLibOw2+XELH5m5+AkWiL/KqYX6dc0kKYlaYyKjrQ6ds33MCdMPEwgs2z1rqg==", + "license": "MIT" + }, + "node_modules/@emotion/styled": { + "version": "11.14.1", + "resolved": "https://registry.npmjs.org/@emotion/styled/-/styled-11.14.1.tgz", + "integrity": "sha512-qEEJt42DuToa3gurlH4Qqc1kVpNq8wO8cJtDzU46TjlzWjDlsVyevtYCRijVq3SrHsROS+gVQ8Fnea108GnKzw==", + "license": "MIT", + "peer": true, + "dependencies": { + "@babel/runtime": "^7.18.3", + "@emotion/babel-plugin": "^11.13.5", + "@emotion/is-prop-valid": "^1.3.0", + "@emotion/serialize": "^1.3.3", + "@emotion/use-insertion-effect-with-fallbacks": "^1.2.0", + "@emotion/utils": "^1.4.2" + }, + "peerDependencies": { + "@emotion/react": "^11.0.0-rc.0", + "react": ">=16.8.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@emotion/unitless": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.10.0.tgz", + "integrity": "sha512-dFoMUuQA20zvtVTuxZww6OHoJYgrzfKM1t52mVySDJnMSEa08ruEvdYQbhvyu6soU+NeLVd3yKfTfT0NeV6qGg==", + "license": "MIT" + }, + "node_modules/@emotion/use-insertion-effect-with-fallbacks": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@emotion/use-insertion-effect-with-fallbacks/-/use-insertion-effect-with-fallbacks-1.2.0.tgz", + "integrity": "sha512-yJMtVdH59sxi/aVJBpk9FQq+OR8ll5GT8oWd57UpeaKEVGab41JWaCFA7FRLoMLloOZF/c/wsPoe+bfGmRKgDg==", + "license": "MIT", + "peerDependencies": { + "react": ">=16.8.0" + } + }, + "node_modules/@emotion/utils": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/@emotion/utils/-/utils-1.4.2.tgz", + "integrity": "sha512-3vLclRofFziIa3J2wDh9jjbkUz9qk5Vi3IZ/FSTKViB0k+ef0fPV7dYrUIugbgupYDx7v9ud/SjrtEP8Y4xLoA==", + "license": "MIT" + }, + "node_modules/@emotion/weak-memoize": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@emotion/weak-memoize/-/weak-memoize-0.4.0.tgz", + "integrity": "sha512-snKqtPW01tN0ui7yu9rGv69aJXr/a/Ywvl11sUjNtEcRc+ng/mQriFL0wLXMef74iHa/EkftbDzU9F8iFbH+zg==", + "license": "MIT" + }, "node_modules/@esbuild/aix-ppc64": { "version": "0.25.10", "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.10.tgz", @@ -976,6 +1146,12 @@ "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, + "node_modules/@floating-ui/utils": { + "version": "0.2.10", + "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.10.tgz", + "integrity": "sha512-aGTxbpbg8/b5JfU1HXSrbH3wXZuLPJcNEcZQFMxLs3oSzgtVu6nFPkbbGGUvBcUjKV2YyB9Wxxabo+HEH9tcRQ==", + "license": "MIT" + }, "node_modules/@humanfs/core": { "version": "0.19.1", "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz", @@ -1032,7 +1208,6 @@ "version": "0.3.13", "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==", - "dev": true, "license": "MIT", "dependencies": { "@jridgewell/sourcemap-codec": "^1.5.0", @@ -1054,7 +1229,6 @@ "version": "3.1.2", "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", - "dev": true, "license": "MIT", "engines": { "node": ">=6.0.0" @@ -1064,14 +1238,12 @@ "version": "1.5.5", "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", - "dev": true, "license": "MIT" }, "node_modules/@jridgewell/trace-mapping": { "version": "0.3.31", "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz", "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==", - "dev": true, "license": "MIT", "dependencies": { "@jridgewell/resolve-uri": "^3.1.0", @@ -1101,6 +1273,418 @@ "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" } }, + "node_modules/@mui/core-downloads-tracker": { + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/@mui/core-downloads-tracker/-/core-downloads-tracker-7.3.2.tgz", + "integrity": "sha512-AOyfHjyDKVPGJJFtxOlept3EYEdLoar/RvssBTWVAvDJGIE676dLi2oT/Kx+FoVXFoA/JdV7DEMq/BVWV3KHRw==", + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui-org" + } + }, + "node_modules/@mui/icons-material": { + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/@mui/icons-material/-/icons-material-7.3.2.tgz", + "integrity": "sha512-TZWazBjWXBjR6iGcNkbKklnwodcwj0SrChCNHc9BhD9rBgET22J1eFhHsEmvSvru9+opDy3umqAimQjokhfJlQ==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.28.3" + }, + "engines": { + "node": ">=14.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui-org" + }, + "peerDependencies": { + "@mui/material": "^7.3.2", + "@types/react": "^17.0.0 || ^18.0.0 || ^19.0.0", + "react": "^17.0.0 || ^18.0.0 || ^19.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@mui/material": { + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/@mui/material/-/material-7.3.2.tgz", + "integrity": "sha512-qXvbnawQhqUVfH1LMgMaiytP+ZpGoYhnGl7yYq2x57GYzcFL/iPzSZ3L30tlbwEjSVKNYcbiKO8tANR1tadjUg==", + "license": "MIT", + "peer": true, + "dependencies": { + "@babel/runtime": "^7.28.3", + "@mui/core-downloads-tracker": "^7.3.2", + "@mui/system": "^7.3.2", + "@mui/types": "^7.4.6", + "@mui/utils": "^7.3.2", + "@popperjs/core": "^2.11.8", + "@types/react-transition-group": "^4.4.12", + "clsx": "^2.1.1", + "csstype": "^3.1.3", + "prop-types": "^15.8.1", + "react-is": "^19.1.1", + "react-transition-group": "^4.4.5" + }, + "engines": { + "node": ">=14.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui-org" + }, + "peerDependencies": { + "@emotion/react": "^11.5.0", + "@emotion/styled": "^11.3.0", + "@mui/material-pigment-css": "^7.3.2", + "@types/react": "^17.0.0 || ^18.0.0 || ^19.0.0", + "react": "^17.0.0 || ^18.0.0 || ^19.0.0", + "react-dom": "^17.0.0 || ^18.0.0 || ^19.0.0" + }, + "peerDependenciesMeta": { + "@emotion/react": { + "optional": true + }, + "@emotion/styled": { + "optional": true + }, + "@mui/material-pigment-css": { + "optional": true + }, + "@types/react": { + "optional": true + } + } + }, + "node_modules/@mui/material/node_modules/react-is": { + "version": "19.1.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-19.1.1.tgz", + "integrity": "sha512-tr41fA15Vn8p4X9ntI+yCyeGSf1TlYaY5vlTZfQmeLBrFo3psOPX6HhTDnFNL9uj3EhP0KAQ80cugCl4b4BERA==", + "license": "MIT" + }, + "node_modules/@mui/private-theming": { + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/@mui/private-theming/-/private-theming-7.3.2.tgz", + "integrity": "sha512-ha7mFoOyZGJr75xeiO9lugS3joRROjc8tG1u4P50dH0KR7bwhHznVMcYg7MouochUy0OxooJm/OOSpJ7gKcMvg==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.28.3", + "@mui/utils": "^7.3.2", + "prop-types": "^15.8.1" + }, + "engines": { + "node": ">=14.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui-org" + }, + "peerDependencies": { + "@types/react": "^17.0.0 || ^18.0.0 || ^19.0.0", + "react": "^17.0.0 || ^18.0.0 || ^19.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@mui/styled-engine": { + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/@mui/styled-engine/-/styled-engine-7.3.2.tgz", + "integrity": "sha512-PkJzW+mTaek4e0nPYZ6qLnW5RGa0KN+eRTf5FA2nc7cFZTeM+qebmGibaTLrgQBy3UpcpemaqfzToBNkzuxqew==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.28.3", + "@emotion/cache": "^11.14.0", + "@emotion/serialize": "^1.3.3", + "@emotion/sheet": "^1.4.0", + "csstype": "^3.1.3", + "prop-types": "^15.8.1" + }, + "engines": { + "node": ">=14.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui-org" + }, + "peerDependencies": { + "@emotion/react": "^11.4.1", + "@emotion/styled": "^11.3.0", + "react": "^17.0.0 || ^18.0.0 || ^19.0.0" + }, + "peerDependenciesMeta": { + "@emotion/react": { + "optional": true + }, + "@emotion/styled": { + "optional": true + } + } + }, + "node_modules/@mui/system": { + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/@mui/system/-/system-7.3.2.tgz", + "integrity": "sha512-9d8JEvZW+H6cVkaZ+FK56R53vkJe3HsTpcjMUtH8v1xK6Y1TjzHdZ7Jck02mGXJsE6MQGWVs3ogRHTQmS9Q/rA==", + "license": "MIT", + "peer": true, + "dependencies": { + "@babel/runtime": "^7.28.3", + "@mui/private-theming": "^7.3.2", + "@mui/styled-engine": "^7.3.2", + "@mui/types": "^7.4.6", + "@mui/utils": "^7.3.2", + "clsx": "^2.1.1", + "csstype": "^3.1.3", + "prop-types": "^15.8.1" + }, + "engines": { + "node": ">=14.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui-org" + }, + "peerDependencies": { + "@emotion/react": "^11.5.0", + "@emotion/styled": "^11.3.0", + "@types/react": "^17.0.0 || ^18.0.0 || ^19.0.0", + "react": "^17.0.0 || ^18.0.0 || ^19.0.0" + }, + "peerDependenciesMeta": { + "@emotion/react": { + "optional": true + }, + "@emotion/styled": { + "optional": true + }, + "@types/react": { + "optional": true + } + } + }, + "node_modules/@mui/types": { + "version": "7.4.7", + "resolved": "https://registry.npmjs.org/@mui/types/-/types-7.4.7.tgz", + "integrity": "sha512-8vVje9rdEr1rY8oIkYgP+Su5Kwl6ik7O3jQ0wl78JGSmiZhRHV+vkjooGdKD8pbtZbutXFVTWQYshu2b3sG9zw==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.28.4" + }, + "peerDependencies": { + "@types/react": "^17.0.0 || ^18.0.0 || ^19.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@mui/utils": { + "version": "7.3.3", + "resolved": "https://registry.npmjs.org/@mui/utils/-/utils-7.3.3.tgz", + "integrity": "sha512-kwNAUh7bLZ7mRz9JZ+6qfRnnxbE4Zuc+RzXnhSpRSxjTlSTj7b4JxRLXpG+MVtPVtqks5k/XC8No1Vs3x4Z2gg==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.28.4", + "@mui/types": "^7.4.7", + "@types/prop-types": "^15.7.15", + "clsx": "^2.1.1", + "prop-types": "^15.8.1", + "react-is": "^19.1.1" + }, + "engines": { + "node": ">=14.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui-org" + }, + "peerDependencies": { + "@types/react": "^17.0.0 || ^18.0.0 || ^19.0.0", + "react": "^17.0.0 || ^18.0.0 || ^19.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@mui/utils/node_modules/react-is": { + "version": "19.1.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-19.1.1.tgz", + "integrity": "sha512-tr41fA15Vn8p4X9ntI+yCyeGSf1TlYaY5vlTZfQmeLBrFo3psOPX6HhTDnFNL9uj3EhP0KAQ80cugCl4b4BERA==", + "license": "MIT" + }, + "node_modules/@mui/x-data-grid": { + "version": "8.14.0", + "resolved": "https://registry.npmjs.org/@mui/x-data-grid/-/x-data-grid-8.14.0.tgz", + "integrity": "sha512-bzUpD83Wx4mawkgquDQUUbLLnpF+JP7Pe7YQx1ixS6W/AlUwXAVagPTOijwchHvlx0Ky11dJvOQAfrnWu6an/Q==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.28.4", + "@mui/utils": "^7.3.3", + "@mui/x-internals": "8.14.0", + "@mui/x-virtualizer": "0.2.3", + "clsx": "^2.1.1", + "prop-types": "^15.8.1", + "use-sync-external-store": "^1.6.0" + }, + "engines": { + "node": ">=14.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui-org" + }, + "peerDependencies": { + "@emotion/react": "^11.9.0", + "@emotion/styled": "^11.8.1", + "@mui/material": "^5.15.14 || ^6.0.0 || ^7.0.0", + "@mui/system": "^5.15.14 || ^6.0.0 || ^7.0.0", + "react": "^17.0.0 || ^18.0.0 || ^19.0.0", + "react-dom": "^17.0.0 || ^18.0.0 || ^19.0.0" + }, + "peerDependenciesMeta": { + "@emotion/react": { + "optional": true + }, + "@emotion/styled": { + "optional": true + } + } + }, + "node_modules/@mui/x-data-grid/node_modules/@mui/x-internals": { + "version": "8.14.0", + "resolved": "https://registry.npmjs.org/@mui/x-internals/-/x-internals-8.14.0.tgz", + "integrity": "sha512-esYyl61nuuFXiN631TWuPh2tqdoyTdBI/4UXgwH3rytF8jiWvy6prPBPRHEH1nvW3fgw9FoBI48FlOO+yEI8xg==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.28.4", + "@mui/utils": "^7.3.3", + "reselect": "^5.1.1", + "use-sync-external-store": "^1.6.0" + }, + "engines": { + "node": ">=14.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui-org" + }, + "peerDependencies": { + "react": "^17.0.0 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/@mui/x-internals": { + "version": "8.13.1", + "resolved": "https://registry.npmjs.org/@mui/x-internals/-/x-internals-8.13.1.tgz", + "integrity": "sha512-OKQyCJ9uxtMpjBZCOEQGOR5MhgL1f9HjI4qZHuaLxxtDATK5rcBbVjBF67hI8FzXeF1wrcZP2wsjc4AgGpAo9g==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.28.4", + "@mui/utils": "^7.3.2", + "reselect": "^5.1.1", + "use-sync-external-store": "^1.5.0" + }, + "engines": { + "node": ">=14.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui-org" + }, + "peerDependencies": { + "react": "^17.0.0 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/@mui/x-tree-view": { + "version": "8.13.1", + "resolved": "https://registry.npmjs.org/@mui/x-tree-view/-/x-tree-view-8.13.1.tgz", + "integrity": "sha512-i5GrIMbNZRGEIYpJDC+d8TStANmvQpwIGYbsGTczrM+6x3KCkASahURgSraZVBfAAxJ2sm55rbrG+6jtkbq5HQ==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.28.4", + "@base-ui-components/utils": "0.1.1", + "@mui/utils": "^7.3.2", + "@mui/x-internals": "8.13.1", + "@types/react-transition-group": "^4.4.12", + "clsx": "^2.1.1", + "prop-types": "^15.8.1", + "react-transition-group": "^4.4.5" + }, + "engines": { + "node": ">=14.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui-org" + }, + "peerDependencies": { + "@emotion/react": "^11.9.0", + "@emotion/styled": "^11.8.1", + "@mui/material": "^5.15.14 || ^6.0.0 || ^7.0.0", + "@mui/system": "^5.15.14 || ^6.0.0 || ^7.0.0", + "react": "^17.0.0 || ^18.0.0 || ^19.0.0", + "react-dom": "^17.0.0 || ^18.0.0 || ^19.0.0" + }, + "peerDependenciesMeta": { + "@emotion/react": { + "optional": true + }, + "@emotion/styled": { + "optional": true + } + } + }, + "node_modules/@mui/x-virtualizer": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/@mui/x-virtualizer/-/x-virtualizer-0.2.3.tgz", + "integrity": "sha512-CZ+VxFmeJaTduAOlSyo5cVek0PV5Y8gm4coyaHEpCvms207J9AoMUKqWIcdwsVGlTH1Y71j35xT/MwHKutZiNw==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.28.4", + "@mui/utils": "^7.3.3", + "@mui/x-internals": "8.14.0" + }, + "engines": { + "node": ">=14.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui-org" + }, + "peerDependencies": { + "react": "^17.0.0 || ^18.0.0 || ^19.0.0", + "react-dom": "^17.0.0 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/@mui/x-virtualizer/node_modules/@mui/x-internals": { + "version": "8.14.0", + "resolved": "https://registry.npmjs.org/@mui/x-internals/-/x-internals-8.14.0.tgz", + "integrity": "sha512-esYyl61nuuFXiN631TWuPh2tqdoyTdBI/4UXgwH3rytF8jiWvy6prPBPRHEH1nvW3fgw9FoBI48FlOO+yEI8xg==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.28.4", + "@mui/utils": "^7.3.3", + "reselect": "^5.1.1", + "use-sync-external-store": "^1.6.0" + }, + "engines": { + "node": ">=14.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui-org" + }, + "peerDependencies": { + "react": "^17.0.0 || ^18.0.0 || ^19.0.0" + } + }, "node_modules/@nodelib/fs.scandir": { "version": "2.1.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", @@ -1139,23 +1723,15 @@ "node": ">= 8" } }, - "node_modules/@react-dnd/asap": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/@react-dnd/asap/-/asap-5.0.2.tgz", - "integrity": "sha512-WLyfoHvxhs0V9U+GTsGilGgf2QsPl6ZZ44fnv0/b8T3nQyvzxidxsg/ZltbWssbsRDlYW8UKSQMTGotuTotZ6A==", - "license": "MIT" - }, - "node_modules/@react-dnd/invariant": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/@react-dnd/invariant/-/invariant-4.0.2.tgz", - "integrity": "sha512-xKCTqAK/FFauOM9Ta2pswIyT3D8AQlfrYdOi/toTPEhqCuAs1v5tcJ3Y08Izh1cJ5Jchwy9SeAXmMg6zrKs2iw==", - "license": "MIT" - }, - "node_modules/@react-dnd/shallowequal": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/@react-dnd/shallowequal/-/shallowequal-4.0.2.tgz", - "integrity": "sha512-/RVXdLvJxLg4QKvMoM5WlwNR9ViO9z8B/qPcc+C0Sa/teJY7QG7kJ441DwzOjMYEY7GmU4dj5EcGHIkKZiQZCA==", - "license": "MIT" + "node_modules/@popperjs/core": { + "version": "2.11.8", + "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz", + "integrity": "sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==", + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/popperjs" + } }, "node_modules/@rolldown/pluginutils": { "version": "1.0.0-beta.35", @@ -1531,12 +2107,24 @@ "dev": true, "license": "MIT" }, + "node_modules/@types/parse-json": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.2.tgz", + "integrity": "sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==", + "license": "MIT" + }, + "node_modules/@types/prop-types": { + "version": "15.7.15", + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.15.tgz", + "integrity": "sha512-F6bEyamV9jKGAFBEmlQnesRPGOQqS2+Uwi0Em15xenOxHaf2hv6L8YCVn3rPdPJOiJfPiCnLIRyvwVaqMY3MIw==", + "license": "MIT" + }, "node_modules/@types/react": { "version": "19.1.13", "resolved": "https://registry.npmjs.org/@types/react/-/react-19.1.13.tgz", "integrity": "sha512-hHkbU/eoO3EG5/MZkuFSKmYqPbSVk5byPFa3e7y/8TybHiLMACgI8seVYlicwk7H5K/rI2px9xrQp/C+AUDTiQ==", - "devOptional": true, "license": "MIT", + "peer": true, "dependencies": { "csstype": "^3.0.2" } @@ -1551,12 +2139,20 @@ "@types/react": "^19.0.0" } }, + "node_modules/@types/react-transition-group": { + "version": "4.4.12", + "resolved": "https://registry.npmjs.org/@types/react-transition-group/-/react-transition-group-4.4.12.tgz", + "integrity": "sha512-8TV6R3h2j7a91c+1DXdJi3Syo69zzIZbz7Lg5tORM5LEJG7X/E6a1V3drRyBRZq7/utz7A+c4OgYLiLcYGHG6w==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*" + } + }, "node_modules/@types/trusted-types": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-1.0.6.tgz", "integrity": "sha512-230RC8sFeHoT6sSUlRO6a8cAnclO06eeiq1QDfiv2FGCLWFvvERWgwIQD4FWqD9A69BN7Lzee4OXwoMVnnsWDw==", - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/@types/uuid": { "version": "8.3.4", @@ -1600,6 +2196,7 @@ "integrity": "sha512-EHrrEsyhOhxYt8MTg4zTF+DJMuNBzWwgvvOYNj/zm1vnaD/IC5zCXFehZv94Piqa2cRFfXrTFxIvO95L7Qc/cw==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@typescript-eslint/scope-manager": "8.44.1", "@typescript-eslint/types": "8.44.1", @@ -1826,6 +2423,7 @@ "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", "dev": true, "license": "MIT", + "peer": true, "bin": { "acorn": "bin/acorn" }, @@ -1908,6 +2506,21 @@ "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", "license": "Python-2.0" }, + "node_modules/babel-plugin-macros": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-3.1.0.tgz", + "integrity": "sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.12.5", + "cosmiconfig": "^7.0.0", + "resolve": "^1.19.0" + }, + "engines": { + "node": ">=10", + "npm": ">=6" + } + }, "node_modules/balanced-match": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", @@ -1968,6 +2581,7 @@ } ], "license": "MIT", + "peer": true, "dependencies": { "baseline-browser-mapping": "^2.8.3", "caniuse-lite": "^1.0.30001741", @@ -1986,7 +2600,6 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true, "license": "MIT", "engines": { "node": ">=6" @@ -2030,6 +2643,15 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, + "node_modules/clsx": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz", + "integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, "node_modules/color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", @@ -2070,6 +2692,31 @@ "dev": true, "license": "MIT" }, + "node_modules/cosmiconfig": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz", + "integrity": "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==", + "license": "MIT", + "dependencies": { + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.2.1", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.10.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/cosmiconfig/node_modules/yaml": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", + "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", + "license": "ISC", + "engines": { + "node": ">= 6" + } + }, "node_modules/cross-spawn": { "version": "7.0.6", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", @@ -2089,14 +2736,12 @@ "version": "3.1.3", "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==", - "devOptional": true, "license": "MIT" }, "node_modules/debug": { "version": "4.4.3", "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", - "dev": true, "license": "MIT", "dependencies": { "ms": "^2.1.3" @@ -2123,15 +2768,14 @@ "integrity": "sha512-c68LpLbO+7kP/b1Hr1qs8/BJ09F5khZGTxqxZuhzxpmwJKOgRFHJWIb9/KmqnqHhLdO55aOxFH/EGBvUQbL/RQ==", "license": "MIT" }, - "node_modules/dnd-core": { - "version": "16.0.1", - "resolved": "https://registry.npmjs.org/dnd-core/-/dnd-core-16.0.1.tgz", - "integrity": "sha512-HK294sl7tbw6F6IeuK16YSBUoorvHpY8RHO+9yFfaJyCDVb6n7PRcezrOEOa2SBCqiYpemh5Jx20ZcjKdFAVng==", + "node_modules/dom-helpers": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-5.2.1.tgz", + "integrity": "sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==", "license": "MIT", "dependencies": { - "@react-dnd/asap": "^5.0.1", - "@react-dnd/invariant": "^4.0.1", - "redux": "^4.2.0" + "@babel/runtime": "^7.8.7", + "csstype": "^3.0.2" } }, "node_modules/electron-to-chromium": { @@ -2141,6 +2785,15 @@ "dev": true, "license": "ISC" }, + "node_modules/error-ex": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.4.tgz", + "integrity": "sha512-sqQamAnR14VgCr1A618A3sGrygcpK+HEbenA/HiEAkkUwcZIIB/tgWqHFxWgOyDh4nB4JCRimh79dR5Ywc9MDQ==", + "license": "MIT", + "dependencies": { + "is-arrayish": "^0.2.1" + } + }, "node_modules/esbuild": { "version": "0.25.10", "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.10.tgz", @@ -2197,7 +2850,6 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -2212,6 +2864,7 @@ "integrity": "sha512-hB4FIzXovouYzwzECDcUkJ4OcfOEkXTv2zRY6B9bkwjx/cprAq0uvm1nl7zvQ0/TsUk0zQiN4uPfJpB9m+rPMQ==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@eslint-community/eslint-utils": "^4.8.0", "@eslint-community/regexpp": "^4.12.1", @@ -2448,6 +3101,7 @@ "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true, "license": "MIT" }, "node_modules/fast-glob": { @@ -2530,6 +3184,12 @@ "node": ">=8" } }, + "node_modules/find-root": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/find-root/-/find-root-1.1.0.tgz", + "integrity": "sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==", + "license": "MIT" + }, "node_modules/find-up": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", @@ -2583,6 +3243,15 @@ "node": "^8.16.0 || ^10.6.0 || >=11.0.0" } }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/gensync": { "version": "1.0.0-beta.2", "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", @@ -2636,6 +3305,18 @@ "node": ">=8" } }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/hoist-non-react-statics": { "version": "3.3.2", "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz", @@ -2659,7 +3340,6 @@ "version": "3.3.1", "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz", "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==", - "dev": true, "license": "MIT", "dependencies": { "parent-module": "^1.0.0", @@ -2682,6 +3362,27 @@ "node": ">=0.8.19" } }, + "node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", + "license": "MIT" + }, + "node_modules/is-core-module": { + "version": "2.16.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz", + "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==", + "license": "MIT", + "dependencies": { + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-extglob": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", @@ -2726,7 +3427,6 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true, "license": "MIT" }, "node_modules/js-yaml": { @@ -2746,7 +3446,6 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", - "dev": true, "license": "MIT", "bin": { "jsesc": "bin/jsesc" @@ -2762,6 +3461,12 @@ "dev": true, "license": "MIT" }, + "node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "license": "MIT" + }, "node_modules/json-schema-traverse": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", @@ -2813,6 +3518,12 @@ "node": ">= 0.8.0" } }, + "node_modules/lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "license": "MIT" + }, "node_modules/locate-path": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", @@ -2836,6 +3547,18 @@ "dev": true, "license": "MIT" }, + "node_modules/loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "license": "MIT", + "dependencies": { + "js-tokens": "^3.0.0 || ^4.0.0" + }, + "bin": { + "loose-envify": "cli.js" + } + }, "node_modules/lru-cache": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", @@ -2846,15 +3569,6 @@ "yallist": "^3.0.2" } }, - "node_modules/lucide-react": { - "version": "0.544.0", - "resolved": "https://registry.npmjs.org/lucide-react/-/lucide-react-0.544.0.tgz", - "integrity": "sha512-t5tS44bqd825zAW45UQxpG2CvcC4urOwn2TrwSH8u+MjeE+1NnWl6QqeQ/6NdjMqdOygyiT9p3Ev0p1NJykxjw==", - "license": "ISC", - "peerDependencies": { - "react": "^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0" - } - }, "node_modules/merge2": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", @@ -2915,7 +3629,6 @@ "version": "2.1.3", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true, "license": "MIT" }, "node_modules/nanoid": { @@ -2973,6 +3686,15 @@ "dev": true, "license": "MIT" }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/optionator": { "version": "0.9.4", "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", @@ -3027,7 +3749,6 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", - "dev": true, "license": "MIT", "dependencies": { "callsites": "^3.0.0" @@ -3036,6 +3757,24 @@ "node": ">=6" } }, + "node_modules/parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/path-exists": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", @@ -3056,11 +3795,25 @@ "node": ">=8" } }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "license": "MIT" + }, + "node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, "node_modules/picocolors": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", - "dev": true, "license": "ISC" }, "node_modules/picomatch": { @@ -3119,6 +3872,7 @@ "version": "3.6.2", "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.6.2.tgz", "integrity": "sha512-I7AIg5boAr5R0FFtJ6rCfD+LFsWHp81dolrFD8S79U9tb8Az2nGrJncnMSnys+bpQJfRUzqs9hnA81OAA3hCuQ==", + "dev": true, "license": "MIT", "bin": { "prettier": "bin/prettier.cjs" @@ -3130,6 +3884,17 @@ "url": "https://github.com/prettier/prettier?sponsor=1" } }, + "node_modules/prop-types": { + "version": "15.8.1", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", + "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", + "license": "MIT", + "dependencies": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.13.1" + } + }, "node_modules/punycode": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", @@ -3190,45 +3955,6 @@ "node": ">=0.10.0" } }, - "node_modules/react-dnd": { - "version": "16.0.1", - "resolved": "https://registry.npmjs.org/react-dnd/-/react-dnd-16.0.1.tgz", - "integrity": "sha512-QeoM/i73HHu2XF9aKksIUuamHPDvRglEwdHL4jsp784BgUuWcg6mzfxT0QDdQz8Wj0qyRKx2eMg8iZtWvU4E2Q==", - "license": "MIT", - "dependencies": { - "@react-dnd/invariant": "^4.0.1", - "@react-dnd/shallowequal": "^4.0.1", - "dnd-core": "^16.0.1", - "fast-deep-equal": "^3.1.3", - "hoist-non-react-statics": "^3.3.2" - }, - "peerDependencies": { - "@types/hoist-non-react-statics": ">= 3.3.1", - "@types/node": ">= 12", - "@types/react": ">= 16", - "react": ">= 16.14" - }, - "peerDependenciesMeta": { - "@types/hoist-non-react-statics": { - "optional": true - }, - "@types/node": { - "optional": true - }, - "@types/react": { - "optional": true - } - } - }, - "node_modules/react-dnd-html5-backend": { - "version": "16.0.1", - "resolved": "https://registry.npmjs.org/react-dnd-html5-backend/-/react-dnd-html5-backend-16.0.1.tgz", - "integrity": "sha512-Wu3dw5aDJmOGw8WjH1I1/yTH+vlXEL4vmjk5p+MHxP8HuHJS1lAGeIdG/hze1AvNeXWo/JgULV87LyQOr+r5jw==", - "license": "MIT", - "dependencies": { - "dnd-core": "^16.0.1" - } - }, "node_modules/react-dom": { "version": "19.1.1", "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.1.1.tgz", @@ -3258,20 +3984,52 @@ "node": ">=0.10.0" } }, - "node_modules/redux": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/redux/-/redux-4.2.1.tgz", - "integrity": "sha512-LAUYz4lc+Do8/g7aeRa8JkyDErK6ekstQaqWQrNRW//MY1TvCEpMtpTWvlQ+FPbWCx+Xixu/6SHt5N0HR+SB4w==", + "node_modules/react-transition-group": { + "version": "4.4.5", + "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-4.4.5.tgz", + "integrity": "sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g==", + "license": "BSD-3-Clause", + "dependencies": { + "@babel/runtime": "^7.5.5", + "dom-helpers": "^5.0.1", + "loose-envify": "^1.4.0", + "prop-types": "^15.6.2" + }, + "peerDependencies": { + "react": ">=16.6.0", + "react-dom": ">=16.6.0" + } + }, + "node_modules/reselect": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/reselect/-/reselect-5.1.1.tgz", + "integrity": "sha512-K/BG6eIky/SBpzfHZv/dd+9JBFiS4SWV7FIujVyJRux6e45+73RaUHXLmIR1f7WOMaQ0U1km6qwklRQxpJJY0w==", + "license": "MIT" + }, + "node_modules/resolve": { + "version": "1.22.10", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.10.tgz", + "integrity": "sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==", "license": "MIT", "dependencies": { - "@babel/runtime": "^7.9.2" + "is-core-module": "^2.16.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/resolve-from": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "dev": true, "license": "MIT", "engines": { "node": ">=4" @@ -3367,8 +4125,7 @@ "version": "0.26.0", "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.26.0.tgz", "integrity": "sha512-NlHwttCI/l5gCPR3D1nNXtWABUmBwvZpEQiD4IXSbIDq8BzLIK/7Ir5gTFSGZDUu37K5cMNp0hFtzO38sC7gWA==", - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/semver": { "version": "7.7.2", @@ -3406,6 +4163,15 @@ "node": ">=8" } }, + "node_modules/source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/source-map-js": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", @@ -3448,6 +4214,12 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/stylis": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.2.0.tgz", + "integrity": "sha512-Orov6g6BB1sDfYgzWfTHDOxamtX1bE/zo104Dh9e6fqJ3PooipYyfJ0pUmrZO2wAvO8YbEyeFrkV91XTsGMSrw==", + "license": "MIT" + }, "node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -3461,6 +4233,18 @@ "node": ">=8" } }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/tinyglobby": { "version": "0.2.15", "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.15.tgz", @@ -3502,6 +4286,7 @@ "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", "dev": true, "license": "MIT", + "peer": true, "engines": { "node": ">=12" }, @@ -3554,6 +4339,7 @@ "integrity": "sha512-CWBzXQrc/qOkhidw1OzBTQuYRbfyxDXJMVJ1XNwUHGROVmuaeiEm3OslpZ1RV96d7SKKjZKrSJu3+t/xlw3R9A==", "dev": true, "license": "Apache-2.0", + "peer": true, "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -3603,6 +4389,15 @@ "punycode": "^2.1.0" } }, + "node_modules/use-sync-external-store": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.6.0.tgz", + "integrity": "sha512-Pp6GSwGP/NrPIrxVFAIkOQeyw8lFenOHijQWkUTrDvrF4ALqylP2C/KCkeS9dpUM3KvYRQhna5vt7IL95+ZQ9w==", + "license": "MIT", + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" + } + }, "node_modules/uuid": { "version": "8.3.2", "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", @@ -3629,6 +4424,7 @@ "integrity": "sha512-VbA8ScMvAISJNJVbRDTJdCwqQoAareR/wutevKanhR2/1EkoXVZVkkORaYm/tNVCjP/UDTKtcw3bAkwOUdedmA==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "esbuild": "^0.25.0", "fdir": "^6.5.0", @@ -3722,6 +4518,7 @@ "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", "dev": true, "license": "MIT", + "peer": true, "engines": { "node": ">=12" }, diff --git a/precise/package.json b/precise/package.json index 3467958..8e61b1c 100644 --- a/precise/package.json +++ b/precise/package.json @@ -1,6 +1,6 @@ { "name": "trino-query-ui", - "description": "Trino Query Editor react component", + "description": "Trino query editor React component", "version": "0.0.1", "author": { "name": "Trino contributors", @@ -40,13 +40,15 @@ "antlr4ng": "antlr4ng -visitor -listener -Dlanguage=TypeScript -o src/generated/lexer/SqlBase.g4 trino/SqlBase.g4" }, "dependencies": { + "@emotion/react": "^11.14.0", + "@emotion/styled": "^11.14.1", "@monaco-editor/react": "^4.7.0", + "@mui/icons-material": "^7.3.2", + "@mui/material": "^7.3.2", + "@mui/x-data-grid": "^8.14.0", + "@mui/x-tree-view": "^8.13.1", "antlr4-c3": "^3.4.4", "antlr4ng": "^3.0.16", - "lucide-react": "^0.544.0", - "prettier": "^3.6.2", - "react-dnd": "^16.0.1", - "react-dnd-html5-backend": "^16.0.1", "sql-formatter": "^15.6.9", "uuidv4": "^6.2.13" }, @@ -60,6 +62,7 @@ "eslint": "^9.36.0", "eslint-plugin-react-hooks": "^5.2.0", "eslint-plugin-react-refresh": "^0.4.21", + "prettier": "^3.6.2", "typescript": "^5.9.2", "vite": "^7.1.7" }, diff --git a/precise/src/QueryCell.tsx b/precise/src/QueryCell.tsx index c8329a7..e1fb7e8 100644 --- a/precise/src/QueryCell.tsx +++ b/precise/src/QueryCell.tsx @@ -1,12 +1,19 @@ -import React from 'react' +import React, { ReactNode } from 'react' +import { Box, Divider, IconButton, Stack, TextField, Toolbar, Typography } from '@mui/material' +import type { TextFieldProps } from '@mui/material/TextField' +import type { TypographyProps } from '@mui/material/Typography' +import MenuIcon from '@mui/icons-material/Menu' +import PlayCircleOutlinedIcon from '@mui/icons-material/PlayCircleOutlined' +import StopCircleOutlinedIcon from '@mui/icons-material/StopCircleOutlined' +import UnfoldLessIcon from '@mui/icons-material/UnfoldLess' +import UnfoldMoreIcon from '@mui/icons-material/UnfoldMore' import QueryEditorPane from './QueryEditorPane' import ResultSet from './ResultSet' import Queries from './schema/Queries' import QueryInfo from './schema/QueryInfo' import AsyncTrinoClient from './AsyncTrinoClient' -import { Play, StopCircle, Link, Plus, FileEdit, MinusSquare, PlusSquare } from 'lucide-react' -import './style/components.css' -import './style/query-editor.css' + +const TOOLBAR_HEIGHT = 64 interface QueryCellState { results: any[] @@ -15,15 +22,22 @@ interface QueryCellState { errorMessage: string currentQuery: QueryInfo runningQuery: QueryInfo | undefined + editingTitle: boolean + editingCatalog: boolean + editingSchema: boolean + editorCollapsed: boolean } interface QueryCellProps { queries: Queries + drawerOpen: boolean + height: number + onDrawerToggle: () => void + theme?: string } class QueryCell extends React.Component { private queryRunner: AsyncTrinoClient - private isQueryCollapsed: boolean = false constructor(props: QueryCellProps) { super(props) @@ -34,6 +48,10 @@ class QueryCell extends React.Component { errorMessage: '', currentQuery: this.props.queries.getCurrentQuery(), runningQuery: undefined, + editingTitle: false, + editingCatalog: false, + editingSchema: false, + editorCollapsed: false, } this.queryRunner = new AsyncTrinoClient() this.setupQueryRunner() @@ -50,13 +68,19 @@ class QueryCell extends React.Component { shouldComponentUpdate(nextProps: QueryCellProps, nextState: QueryCellState) { // Only update if the ResultSet-related props have changed return ( + this.props.drawerOpen !== nextProps.drawerOpen || + this.props.height !== nextProps.height || this.state.results !== nextState.results || this.state.columns !== nextState.columns || this.state.response !== nextState.response || this.state.errorMessage !== nextState.errorMessage || this.state.runningQuery !== nextState.runningQuery || this.state.currentQuery !== nextState.currentQuery || - this.state.currentQuery.title !== nextState.currentQuery.title + this.state.currentQuery.title !== nextState.currentQuery.title || + this.state.editingTitle !== nextState.editingTitle || + this.state.editingCatalog !== nextState.editingCatalog || + this.state.editingSchema !== nextState.editingSchema || + this.state.editorCollapsed !== nextState.editorCollapsed ) } @@ -109,6 +133,14 @@ class QueryCell extends React.Component { this.props.queries.updateQuery(this.state.currentQuery.id, { title: title }) } + handleCatalogChange = (catalog: string) => { + this.props.queries.updateQuery(this.state.currentQuery.id, { catalog: catalog }) + } + + handleSchemaChange = (schema: string) => { + this.props.queries.updateQuery(this.state.currentQuery.id, { schema: schema }) + } + ClearResults() { this.setState({ results: [], columns: [], errorMessage: '' }) } @@ -132,11 +164,63 @@ class QueryCell extends React.Component { } toggleQueryCollapse = () => { - const queryEditor = document.getElementById('query-editor') - if (queryEditor) { - this.isQueryCollapsed = !this.isQueryCollapsed - queryEditor.style.display = this.isQueryCollapsed ? 'none' : 'block' + this.setState({ editorCollapsed: !this.state.editorCollapsed }) + } + + private renderEditableTextField( + key: 'editingTitle' | 'editingCatalog' | 'editingSchema', + value: string | undefined, + options: { + typographyProps?: TypographyProps + textFieldProps?: TextFieldProps + displayContent?: ReactNode + } = {} + ) { + const { typographyProps = {}, textFieldProps = {}, displayContent } = options + const isEditing = this.state[key] + + if (isEditing) { + const { onChange, onKeyDown, onBlur, autoFocus, ...restTextFieldProps } = textFieldProps + + return ( + { + onChange?.(event) + }} + onKeyDown={(event) => { + onKeyDown?.(event) + if (!event.defaultPrevented && (event.key === 'Enter' || event.key === 'Escape')) { + this.setState({ [key]: false } as Pick) + } + }} + onBlur={(event) => { + onBlur?.(event) + this.setState({ [key]: false } as Pick) + }} + autoFocus={autoFocus ?? true} + /> + ) } + + const { onClick, ...restTypographyProps } = typographyProps + + return ( + { + onClick?.(event) + if (!event.defaultPrevented) { + this.setState({ [key]: true } as Pick) + } + }} + > + {displayContent ?? value} + + ) } render() { @@ -146,103 +230,100 @@ class QueryCell extends React.Component { response.stats !== undefined && (response.stats.state === 'RUNNING' || response.stats.state === 'QUEUED') + const availablePanelHeight = Math.max(this.props.height - TOOLBAR_HEIGHT, 0) + const resultSetHeight = this.state.editorCollapsed ? availablePanelHeight : availablePanelHeight / 2 + return ( - <> -
-
- - this.handleTitleChange(e.target.value)} - value={currentQuery.title} - /> - - this.props.queries.updateQuery(this.state.currentQuery.id, { catalog: e.target.value }) - } - value={currentQuery.catalog ?? ''} - /> - - this.props.queries.updateQuery(this.state.currentQuery.id, { schema: e.target.value }) - } - value={currentQuery.schema ?? ''} - /> - -
- -
- -
- -
-
-
+ + + + + + this.Execute()} + > + {!isQueryRunning ? : } + + {this.renderEditableTextField('editingTitle', currentQuery.title, { + typographyProps: { + variant: 'h6', + sx: { ml: 2 }, + }, + textFieldProps: { + sx: { maxWidth: 200 }, + onChange: (event) => this.handleTitleChange(event.target.value), + }, + })} + + + + + Catalog: + + {this.renderEditableTextField('editingCatalog', currentQuery.catalog ?? '', { + typographyProps: { + sx: { ml: 2, maxWidth: 200, fontFamily: 'monospace' }, + noWrap: true, + }, + textFieldProps: { + sx: { + maxWidth: 200, + '& .MuiInputBase-input': { fontFamily: 'monospace' }, + }, + onChange: (event) => this.handleCatalogChange(event.target.value), + }, + displayContent: + currentQuery.catalog && currentQuery.catalog.length > 0 ? ( + currentQuery.catalog + ) : ( + + <no-catalog> + + ), + })} + + + + + Schema: + + {this.renderEditableTextField('editingSchema', currentQuery.schema ?? '', { + typographyProps: { + sx: { ml: 2, maxWidth: 200, fontFamily: 'monospace' }, + noWrap: true, + }, + textFieldProps: { + sx: { + maxWidth: 200, + '& .MuiInputBase-input': { fontFamily: 'monospace' }, + }, + onChange: (event) => this.handleSchemaChange(event.target.value), + }, + displayContent: + currentQuery.schema && currentQuery.schema.length > 0 ? ( + currentQuery.schema + ) : ( + + <no-schema> + + ), + })} + + + + {this.state.editorCollapsed ? : } + + + + {}} @@ -250,19 +331,21 @@ class QueryCell extends React.Component { queries={this.props.queries} catalog={currentQuery.catalog} schema={currentQuery.schema} + theme={this.props.theme} + maxHeight={availablePanelHeight} /> -
-
- this.ClearResults()} - /> -
- + {this.props.theme != 'dark' && } + + this.ClearResults()} + /> + ) } } diff --git a/precise/src/QueryEditor.tsx b/precise/src/QueryEditor.tsx index 328b012..2bad7a7 100644 --- a/precise/src/QueryEditor.tsx +++ b/precise/src/QueryEditor.tsx @@ -1,33 +1,109 @@ -import React from 'react' +import React, { useRef, useState } from 'react' +import { styled } from '@mui/material/styles' +import { Box, Drawer, useMediaQuery } from '@mui/material' +import CssBaseline from '@mui/material/CssBaseline' +import MuiAppBar, { AppBarProps as MuiAppBarProps } from '@mui/material/AppBar' +import { ThemeProvider } from '@mui/material/styles' import QueryCell from './QueryCell' +import { darkTheme, lightTheme } from './theme' import Queries from './schema/Queries' +import QueryInfo from './schema/QueryInfo' import CatalogViewer from './controls/catalog_viewer/CatalogViewer' -import './style/components.css' -import './style/control.css' -import './style/layout.css' -import './style/normalize.css' -import './style/query-editor.css' -import './style/results.css' -import './style/theme.css' - -type QueryEditorProps = Record - -interface QueryEditorState { - queries: Queries + +interface IQueryEditor { + height: number + theme?: 'dark' | 'light' + enableCatalogSearchColumns?: boolean } -class QueryEditor extends React.Component { - constructor(props: QueryEditorProps) { - super(props) +const DRAWER_WIDTH = 260 + +const Main = styled('main', { shouldForwardProp: (prop) => prop !== 'open' })<{ + open?: boolean +}>(({ theme }) => ({ + flexGrow: 1, + padding: theme.spacing(3), + transition: theme.transitions.create('margin', { + easing: theme.transitions.easing.sharp, + duration: theme.transitions.duration.leavingScreen, + }), + marginLeft: 0, + variants: [ + { + props: ({ open }) => open, + style: { + transition: theme.transitions.create('margin', { + easing: theme.transitions.easing.easeOut, + duration: theme.transitions.duration.enteringScreen, + }), + marginLeft: `${DRAWER_WIDTH}px`, + }, + }, + ], +})) + +interface AppBarProps extends MuiAppBarProps { + open?: boolean +} - this.state = { - queries: new Queries(), +const AppBar = styled(MuiAppBar, { + shouldForwardProp: (prop) => prop !== 'open', +})(({ theme }) => ({ + position: 'absolute', + boxShadow: 'none', + borderBottom: `1px solid ${theme.palette.divider}`, + transition: theme.transitions.create(['margin', 'width'], { + easing: theme.transitions.easing.sharp, + duration: theme.transitions.duration.leavingScreen, + }), + variants: [ + { + props: ({ open }) => open, + style: { + width: `calc(100% - ${DRAWER_WIDTH}px)`, + marginLeft: `${DRAWER_WIDTH}px`, + transition: theme.transitions.create(['margin', 'width'], { + easing: theme.transitions.easing.easeOut, + duration: theme.transitions.duration.enteringScreen, + }), + }, + }, + ], +})) + +export const QueryEditor = ({ height, theme, enableCatalogSearchColumns }: IQueryEditor) => { + const [queries, setQueries] = useState(() => new Queries()) + const [drawerOpen, setDrawerOpen] = useState(true) + const [queryRunning, setQueryRunning] = useState(false) + const [currentQuery, setCurrentQuery] = useState(queries.getCurrentQuery()) + const prefersDarkMode = useMediaQuery('(prefers-color-scheme: dark)') + const containerRef = useRef(null) + + const muiThemeToUse = () => { + if (theme === 'dark') { + return darkTheme + } else if (theme === 'light') { + return lightTheme + } else if (prefersDarkMode) { + return darkTheme + } else { + return lightTheme } } - setQueryContent = (query: string, catalog?: string, schema?: string) => { - const currentQuery = this.state.queries.getCurrentQuery() - const updates: any = {} + const applyQueryUpdates = (updates: Partial) => { + const activeQuery = queries.getCurrentQuery() + + if (!activeQuery) { + return + } + + queries.updateQuery(activeQuery.id, updates) + setCurrentQuery((prev) => ({ ...prev, ...updates })) + } + + const setQueryContent = (query: string, catalog?: string, schema?: string) => { + const updates: Partial = {} if (query) { updates.query = query @@ -41,79 +117,92 @@ class QueryEditor extends React.Component { updates.schema = schema } - this.state.queries.updateQuery(currentQuery.id, updates) + applyQueryUpdates(updates) } - appendQueryContent = (query: string, catalog?: string, schema?: string) => { - const currentQuery = this.state.queries.getCurrentQuery() - const updates: any = {} + const appendQueryContent = (query: string, catalog?: string, schema?: string) => { + const activeQuery = queries.getCurrentQuery() + const updates: Partial = {} - if (query) { - // Append to existing query, adding newlines as needed - const existingQuery = currentQuery.query || '' - const separator = existingQuery.trim() === '' ? '' : '\n\n' + if (query !== undefined) { + const existingQuery = activeQuery.query || '' + const separator = existingQuery.trim() === '' || query.trim() === '' ? '' : '\n\n' updates.query = existingQuery + separator + query } - if (catalog) { + if (catalog !== undefined) { updates.catalog = catalog } - if (schema) { + if (schema !== undefined) { updates.schema = schema } - this.state.queries.updateQuery(currentQuery.id, updates) + applyQueryUpdates(updates) } - render() { - return ( -
-
-
-
-
-
- -
-
- - - -
-
-
- -
-
-
-
- ) - } + return ( + + + + + + + setDrawerOpen(false)} + enableSearchColumns={enableCatalogSearchColumns} + /> + + +
+ setDrawerOpen(true)} + theme={theme} + /> +
+
+
+ ) } export default QueryEditor diff --git a/precise/src/QueryEditorPane.tsx b/precise/src/QueryEditorPane.tsx index 356c7df..3679fec 100644 --- a/precise/src/QueryEditorPane.tsx +++ b/precise/src/QueryEditorPane.tsx @@ -1,4 +1,8 @@ import React from 'react' +import { Box, Stack, Tooltip, IconButton } from '@mui/material' +import CodeIcon from '@mui/icons-material/Code' +import Maximize from '@mui/icons-material/Maximize' +import Minimize from '@mui/icons-material/Minimize' import Editor from '@monaco-editor/react' import * as monaco from 'monaco-editor/esm/vs/editor/editor.api' import Queries from './schema/Queries' @@ -20,26 +24,27 @@ import Column from './schema/Column' import NamedQuery from './sql/NamedQuery' import { tokenMap } from './sql/TokenMap' import SubstitutionEditor from './SubstitutionEditor' -import './style/query-editor.css' import { format } from 'sql-formatter' -import { Code, Maximize2, Minimize2 } from 'lucide-react' const TRINO_SQL_LANGUAGE = 'trinosql' +const TABS_HEIGHT = 64 interface QueryEditorPaneProps { queries: Queries + maxHeight: number onQueryChange: (query: string) => void onSelectChange: (selectedText: string) => void onExecute: () => void catalog?: string schema?: string + theme?: string } interface QueryEditorPaneState { currentQuery: QueryInfo | null substitutions: Record isMaximized: boolean - height: string + height: number width: string } @@ -106,7 +111,7 @@ class QueryEditorPane extends React.Component { - const newQuery = this.props.queries.addQuery(false, 'New Query') + const newQuery = this.props.queries.addQuery(false, 'New query') monaco.editor.createModel('', TRINO_SQL_LANGUAGE, monaco.Uri.parse(`file:///${newQuery.id}`)) this.props.queries.setCurrentQuery(newQuery.id) return newQuery.id @@ -177,8 +188,7 @@ class QueryEditorPane extends React.Component { this.setState((prevState) => ({ isMaximized: !prevState.isMaximized, - // 2.5 em for the tab bar, 3em for the substitution editor, 3em for the brand bar - height: !prevState.isMaximized ? 'calc(100vh - 2.5em - 3em - 3.5em)' : '40vh', + height: !prevState.isMaximized ? this.props.maxHeight : this.props.maxHeight / 2, width: '100%', })) } @@ -851,8 +861,8 @@ class QueryEditorPane extends React.Component { - this.setState({ height: newHeight }) + handleHeightChange = (maxHeight: number) => { + this.setState({ height: this.state.isMaximized ? maxHeight : maxHeight / 2 }) } render() { @@ -876,36 +886,51 @@ class QueryEditorPane extends React.Component -
-
-
- - -
+ + + + -
-
+ + ) } diff --git a/precise/src/ResultSet.tsx b/precise/src/ResultSet.tsx index 46da4ac..fbc4c6a 100644 --- a/precise/src/ResultSet.tsx +++ b/precise/src/ResultSet.tsx @@ -1,17 +1,33 @@ import React from 'react' -import QueryInfo from './schema/QueryInfo' +import { + Alert, + Box, + CircularProgress, + LinearProgress, + Link, + Paper, + Stack, + Table, + TableBody, + TableCell, + TableContainer, + TableFooter, + TableHead, + TableRow, + Typography, +} from '@mui/material' +import { DataGrid, GridColDef } from '@mui/x-data-grid' +import Chip, { ChipProps } from '@mui/material/Chip' import ReactDOMServer from 'react-dom/server' -import ErrorBox from './utils/ErrorBoxProvider' -import ProgressBar from './utils/ProgressBar' import CopyLink from './utils/CopyLink' import ClearButton from './utils/ClearButton' -import './style/results.css' interface ResultSetProps { - queryInfo: QueryInfo | undefined + queryId: string | undefined results: any[] columns: any[] response: any + height: number errorMessage: string onClearResults: (queryId: string | undefined) => void } @@ -21,6 +37,38 @@ class ResultSet extends React.Component { statsHistory: any[] = [] lastQueryId: string | undefined = undefined + static readonly STATE_COLOR_MAP: Record = { + QUEUED: 'default', + RUNNING: 'info', + PLANNING: 'info', + FINISHED: 'success', + BLOCKED: 'secondary', + USER_ERROR: 'error', + CANCELED: 'warning', + INSUFFICIENT_RESOURCES: 'error', + EXTERNAL_ERROR: 'error', + UNKNOWN_ERROR: 'error', + } + + getQueryStateColor(queryState: string): ChipProps['color'] { + switch (queryState) { + case 'QUEUED': + return ResultSet.STATE_COLOR_MAP.QUEUED + case 'PLANNING': + return ResultSet.STATE_COLOR_MAP.PLANNING + case 'STARTING': + case 'FINISHING': + case 'RUNNING': + return ResultSet.STATE_COLOR_MAP.RUNNING + case 'FAILED': + return ResultSet.STATE_COLOR_MAP.UNKNOWN_ERROR + case 'FINISHED': + return ResultSet.STATE_COLOR_MAP.FINISHED + default: + return ResultSet.STATE_COLOR_MAP.QUEUED + } + } + renderHeader(columns: any) { return ( @@ -60,11 +108,27 @@ class ResultSet extends React.Component { ) } - renderTable = (results: any[], response: any, columns: any) => { + renderTable = (results: any[], columns: any) => { + const muiColumns: GridColDef[] = columns.map((column: any) => ({ field: column.name, minWidth: 150 })) + const muiRows = results + .flat() + .map((row: any[], i: number) => + Object.fromEntries([ + ['mui-row-id', `row-${i + 1}`], + ...columns.map((c: any, j: number) => [c.name, row[j]]), + ]) + ) + return ( -
30 ? 'scrollable' : 'result-table-container'}> - {this.renderInnerTable(results, response, columns)} -
+ String(row['mui-row-id'])} + density="compact" + /> ) } @@ -214,14 +278,14 @@ class ResultSet extends React.Component { } render() { - const { queryInfo, results, columns, response, errorMessage } = this.props + const { queryId, results, columns, response, height, errorMessage } = this.props // if the query ID has changed, reset the last processed rows and elapsed time - if (queryInfo == null || this.lastQueryId !== queryInfo.id) { + if (this.lastQueryId !== queryId) { this.reset() } - this.lastQueryId = queryInfo?.id + this.lastQueryId = queryId // new implementation, look over 10 second window in stats history let processedRowsSinceLast = 0 @@ -271,239 +335,289 @@ class ResultSet extends React.Component { // Ensure the 'result-set' class is applied to the container return ( -
- { - // only return if there are columns - columns && columns.length ? ( -
- {response.stats && this.isFinishedFailedOrCancelled(response.stats.state) && ( - this.props.onClearResults(queryInfo?.id)} /> - )} - this.copy()} /> - {/* if row count > 30 place in scrollable div */} - {this.renderTable(results, response, columns)} -
- ) : null - } + {response && response.id ? ( -
- {this.getRowCount()} rows:{' '} - - {response.id} - -
+ + {errorMessage ? ( + + {errorMessage} + + ) : null} + + + {this.getRowCount()} rows: + + + {response.id} + + {columns && columns.length ? ( + response.stats && this.isFinishedFailedOrCancelled(response.stats.state) ? ( + <> + this.props.onClearResults(queryId)} /> + this.copy()} /> + + ) : null + ) : null} + + ) : null} - {errorMessage ? : null} {/* if the status is not finished, show spinner */} {response && response.stats && response.stats.state !== 'FINISHED' && response.stats.state !== 'FAILED' && response.stats.state !== 'CANCELLED' ? ( -
-
-
-
-
- {response && response.stats && response.stats.runningPercentage - ? Math.floor(response.stats.runningPercentage) - : 0} - % -
-
- {response.stats.state} -
+ <> + + + + {response && response.stats && response.stats.progressPercentage + ? Math.floor(response.stats.progressPercentage) + : 0} + % + + + + Workers: {response.stats.nodes}, Running splits: {response.stats.runningSplits}, Total splits: {response.stats.totalSplits}, Run time:{' '} {Math.floor(response.stats.elapsedTimeMillis / 1000)}s -
-
-
-
-
- -
- {this.formatMillisAsHHMMSS(response.stats.elapsedTimeMillis)} -
-
-
- {/* if response.stats.subStages */} - {response.stats.rootStage && response.stats.rootStage.subStages ? ( -
- - - - {' '} - {/* groupings for subcategories of metrics */} - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - {/* look at all the substages in subStages */} - {stages.map((subStageInfo: any) => { - return ( - + + + + + + {this.formatMillisAsHHMMSS(response.stats.elapsedTimeMillis)} + + + + {response.stats.rootStage && response.stats.rootStage.subStages ? ( + +
- Rows - - Bytes - - Splits -
StageNodesProcessedRateCurrent RateProcessedRateCurrent RateInput ProcessedQueuedRunningDone
0 (root){response.stats.rootStage.nodes} - {this.rowCountToCorrectScale(response.stats.rootStage.processedRows)} - - {this.rowCountToCorrectScale( - response.stats.rootStage.processedRows / - (response.stats.rootStage.wallTimeMillis / 1000) - )} - - {this.bytesToCorrectScale(response.stats.rootStage.processedBytes)} - - {this.bytesToCorrectScale( - response.stats.rootStage.processedBytes / - (response.stats.wallTimeMillis / 1000) - )} - - {this.bytesToCorrectScale(response.stats.rootStage.physicalInputBytes)} - - {response.stats.rootStage.queuedSplits} - - {response.stats.rootStage.runningSplits} - - {response.stats.rootStage.completedSplits} -
*': { + borderRight: (theme) => `1px solid ${theme.palette.divider}`, + }, + '& .MuiTableRow-root > *:last-of-type': { + borderRight: 'none', + }, + }} + size="small" + stickyHeader + > + + + + Query run metrics + + + Rows + + + Bytes + + + Splits + + + + Stage + Nodes + Processed + Rate + Current Rate + Processed + Rate + Current Rate + Input Processed + Queued + Running + Done + + + + + 0 (root) + {response.stats.rootStage.nodes} + + {this.rowCountToCorrectScale( + response.stats.rootStage.processedRows + )} + + + {this.rowCountToCorrectScale( + response.stats.rootStage.processedRows / + (response.stats.rootStage.wallTimeMillis / 1000) + )} + + + + {this.bytesToCorrectScale(response.stats.rootStage.processedBytes)} + + + {this.bytesToCorrectScale( + response.stats.rootStage.processedBytes / + (response.stats.wallTimeMillis / 1000) + )} + + + + {this.bytesToCorrectScale( + response.stats.rootStage.physicalInputBytes + )} + + + {response.stats.rootStage.queuedSplits} + + + {response.stats.rootStage.runningSplits} + + + {response.stats.rootStage.completedSplits} + + + + {/* Sub-stages */} + {stages.map((subStageInfo: any) => ( + - - - - - - - - - - - - - - ) - })} - - - - - - - - - - - - - - - -
- {subStageInfo.stage.stageId} - {subStageInfo.stage.nodes} + {subStageInfo.stage.stageId} + {subStageInfo.stage.nodes} + {this.rowCountToCorrectScale(subStageInfo.stage.processedRows)} - + + {this.rowCountToCorrectScale( subStageInfo.stage.processedRows / (subStageInfo.stage.wallTimeMillis / 1000) )} - + + + {this.bytesToCorrectScale(response.stats.processedBytes)} - + + {this.bytesToCorrectScale( subStageInfo.stage.processedBytes / (subStageInfo.stage.wallTimeMillis / 1000) )} - + + + {this.bytesToCorrectScale(response.stats.physicalInputBytes)} - + + {subStageInfo.stage.queuedSplits} - + + {subStageInfo.stage.runningSplits} - + + {subStageInfo.stage.completedSplits} -
Total{response.stats.nodes} - {this.rowCountToCorrectScale(response.stats.processedRows)} - - {this.rowCountToCorrectScale( - response.stats.processedRows / - (response.stats.elapsedTimeMillis / 1000) - )} - - {this.rowCountToCorrectScale(processedRowsSinceLast)} - - {this.bytesToCorrectScale(response.stats.processedBytes)} - - {this.bytesToCorrectScale( - response.stats.processedBytes / - (response.stats.elapsedTimeMillis / 1000) - )} - - {this.bytesToCorrectScale(response.stats.physicalInputBytes)} - {response.stats.queuedSplits}{response.stats.runningSplits}{response.stats.completedSplits}
-
- ) : null} -
+ + + ))} + + + theme.typography.fontWeightBold, + color: 'text.primary', + }, + }} + > + {/* Totals */} + + Total + {response.stats.nodes} + + {this.rowCountToCorrectScale(response.stats.processedRows)} + + + {this.rowCountToCorrectScale( + response.stats.processedRows / + (response.stats.elapsedTimeMillis / 1000) + )} + + + {this.rowCountToCorrectScale(processedRowsSinceLast)} + + + {this.bytesToCorrectScale(response.stats.processedBytes)} + + + {this.bytesToCorrectScale( + response.stats.processedBytes / + (response.stats.elapsedTimeMillis / 1000) + )} + + + + {this.bytesToCorrectScale(response.stats.physicalInputBytes)} + + {response.stats.queuedSplits} + {response.stats.runningSplits} + {response.stats.completedSplits} + + + + + ) : null} +
+ + ) : columns && columns.length ? ( + + {this.renderTable(results, columns)} + ) : null} -
+ ) } } diff --git a/precise/src/SubstitutionEditor.tsx b/precise/src/SubstitutionEditor.tsx index da81681..c5e1467 100644 --- a/precise/src/SubstitutionEditor.tsx +++ b/precise/src/SubstitutionEditor.tsx @@ -1,4 +1,6 @@ import React, { useState, useEffect } from 'react' +import { Box, Stack, Typography, TextField, InputAdornment, IconButton } from '@mui/material' +import ClearIcon from '@mui/icons-material/Clear' interface SubstitutionField { name: string @@ -60,21 +62,52 @@ const SubstitutionEditor: React.FC = ({ query, onSubsti } return ( -
-

Query Parameters

- {fields.map((field) => ( -
- - handleInputChange(field.name, e.target.value)} - placeholder={field.defaultValue} - /> -
- ))} -
+ + Query Parameters + + {fields.map((field) => { + const isNumber = field.type !== 'varchar' + const val = values[field.name] ?? '' + + return ( + handleInputChange(field.name, e.target.value)} + placeholder={field.defaultValue !== undefined ? String(field.defaultValue) : ''} + slotProps={{ + input: { + // helpful for numeric types + inputProps: isNumber ? { step: field.type === 'double' ? 'any' : 1 } : undefined, + // optional clear button (keeps width stable when empty) + endAdornment: ( + + handleInputChange(field.name, '')} + sx={{ + visibility: val ? 'visible' : 'hidden', + '& .MuiSvgIcon-root': { fontSize: 16 }, + }} + > + + + + ), + }, + }} + /> + ) + })} + + ) } diff --git a/precise/src/assets/close.png b/precise/src/assets/close.png deleted file mode 100644 index cbd90bea7f7a655f062499f7cfa3966fdb924383..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 46334 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 diff --git a/precise/src/assets/pin_down.png b/precise/src/assets/pin_down.png deleted file mode 100644 index 1039779c17a1f167f51a94325d4a2165ff399bb4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 36813 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 IM6N<$g8e-P@c;k- diff --git a/precise/src/assets/pin_up.png b/precise/src/assets/pin_up.png deleted file mode 100644 index 1d3ce9b066659a0b73cd96374aabcfff2ad49d21..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 62626 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

  • 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 void onAppendQuery?: (query: string, catalog?: string, schema?: string) => void + onDrawerToggle?: () => void + enableSearchColumns?: boolean } -const CatalogViewer: React.FC = ({ initialFilterText = '', onGenerateQuery, onAppendQuery }) => { +const CatalogViewer: React.FC = ({ + initialFilterText = '', + onGenerateQuery, + onAppendQuery, + onDrawerToggle, + enableSearchColumns, +}) => { // Basic state const [catalogs, setCatalogs] = useState>(new Map()) const [errorMessage, setErrorMessage] = useState() @@ -70,8 +94,8 @@ const CatalogViewer: React.FC = ({ initialFilterText = '', o try { await SchemaProvider.populateCatalogsAndRefreshTableList( - () => { - setCatalogs(SchemaProvider.catalogs) + (nextCatalogs) => { + setCatalogs(nextCatalogs) setIsLoading(false) }, (error: string) => { @@ -153,91 +177,184 @@ const CatalogViewer: React.FC = ({ initialFilterText = '', o } return ( -
    -
    -
    - + `calc(${theme.mixins.toolbar.minHeight}px + ${theme.spacing(1)})`, + px: 0, + py: 0, + }} + > + + setFilterText(e.target.value)} - className="filter-input" + fullWidth /> - {filterText && ( -
    setFilterText('')} - role="button" - aria-label="Clear search" - > - Clear -
    - )} -
    - - - -
    - - {isLoading &&
    Loading catalogs...
    } - - {errorMessage && } - -
    - {Array.from(catalogs.values()) - .sort((a, b) => a.getName().localeCompare(b.getName())) - .map((catalog: Catalog) => { - const catalogName = catalog.getName() - const catalogPath = buildPath.catalog(catalogName) - - if (filterText && !isVisible(catalogPath)) { - return null - } - - return ( -
    -
    handleToggle(catalogPath)}> -
    - {catalogName} - {catalog.getType()} catalog -
    - + + + + + + + {enableSearchColumns && ( + + setSearchColumns(e.target.checked)} + /> + } + label={ + + - {isExpanded(catalogPath) ? 'â–¼' : 'â–¶'} - -
    handleGenerateCatalogQuery(e, catalogName)} - title="Set this catalog as default catalog" - > - -
    -
    - - {isExpanded(catalogPath) && ( -
    + Search columns + + {isLoadingColumns && } + + } + /> + + )} + + + + {errorMessage && ( + + Catalog Viewer + {errorMessage} + + )} + + { + handleToggle(itemId) + }} + > + {Array.from(catalogs.values()) + .sort((a, b) => a.getName().localeCompare(b.getName())) + .map((catalog: Catalog) => { + const catalogName = catalog.getName() + const catalogPath = buildPath.catalog(catalogName) + + if (filterText && !isVisible(catalogPath)) { + return null + } + + return ( + + {catalogName} + {catalog.getType() === 'system' && ( + + )} + + handleGenerateCatalogQuery(e, catalogName)} + disabled={isLoading} + > + + + + } + slotProps={{ + label: { + style: { + overflow: 'visible', + }, + }, + }} + > + {catalog.getError() && ( - + + Catalog Viewer + {catalog.getError()} + )} {Array.from(catalog.getSchemas().values()) .sort((a, b) => a.getName().localeCompare(b.getName())) .map((schema) => { - const schemaPath = buildPath.schema(catalogName, schema.getName()) + const schemaName = schema.getName() + const schemaPath = buildPath.schema(catalogName, schemaName) return ( = ({ initialFilterText = '', o catalogName={catalogName} schema={schema} filterText={filterText} - isExpanded={isExpanded(schemaPath)} isVisible={isVisible} + isLoading={isLoading} hasMatchingChildren={hasMatchingChildren} - onToggle={handleToggle} onGenerateQuery={handleGenerateQuery} /> ) })} -
    - )} -
    - ) - })} -
    -
    + + + ) + })} + + + ) } diff --git a/precise/src/controls/catalog_viewer/CatalogViewerColumn.tsx b/precise/src/controls/catalog_viewer/CatalogViewerColumn.tsx index 201510b..0b8fcad 100644 --- a/precise/src/controls/catalog_viewer/CatalogViewerColumn.tsx +++ b/precise/src/controls/catalog_viewer/CatalogViewerColumn.tsx @@ -1,123 +1,63 @@ -import React, { useState, useEffect } from 'react' +import React from 'react' +import { Box, Stack, Typography } from '@mui/material' +import { TreeItem } from '@mui/x-tree-view' import Column from '../../schema/Column' import TableReference from './../../schema/TableReference' -import CopyLink from './../../utils/CopyLink' import { buildPath } from './ViewerState' -import './catalogviewer.css' interface CatalogViewerColumnProps { tableRef: TableReference column: Column - isExpanded: boolean isVisible: (path: string) => boolean - onToggle: (path: string) => Promise } -const CatalogViewerColumn: React.FC = ({ - tableRef, - column, - isExpanded, - isVisible, - onToggle, -}) => { - const [sampleValues, setSampleValues] = useState([]) - const [isLoadingSamples, setIsLoadingSamples] = useState(false) - const [showSamples, setShowSamples] = useState(false) - +const CatalogViewerColumn: React.FC = ({ tableRef, column, isVisible }) => { const columnPath = buildPath.column(tableRef.catalogName, tableRef.schemaName, tableRef.tableName, column.getName()) - // Load sample values when samples are shown - useEffect(() => { - if (showSamples && sampleValues.length === 0 && !isLoadingSamples) { - setIsLoadingSamples(true) - column.getSampleValues(tableRef, (newSampleValues: string[]) => { - setSampleValues(newSampleValues) - setIsLoadingSamples(false) - }) - } - }, [showSamples, column, tableRef, sampleValues.length, isLoadingSamples]) - - const handleRefresh = (e: React.MouseEvent) => { - e.stopPropagation() - setIsLoadingSamples(true) - column.getSampleValues(tableRef, (newSampleValues: string[]) => { - setSampleValues(newSampleValues) - setIsLoadingSamples(false) - }) - } - - const handleToggle = async () => { - // Toggle samples if already expanded - if (isExpanded) { - setShowSamples(!showSamples) - } else { - // Just expand the column initially - await onToggle(columnPath) - setShowSamples(true) - } - } - - const renderSampleValue = (value: string, index: number) => { - if (value === null) { - return ( -
    - NULL -
    - ) - } - - const displayValue = value.length > 50 ? value.substring(0, 50) + '...' : value - - return ( -
    - {displayValue} - navigator.clipboard.writeText(value)} /> -
    - ) - } - // Check visibility using the passed down helper if (!isVisible(columnPath)) { return null } return ( -
    -
    - {showSamples && ( -
    -
    -
    - )} -
    - {column.getName()} - {column.getType()} - {showSamples ? 'â–¼' : 'â–¶'} -
    - {column.getExtraOrComment() && ( -
    - {column.getExtraOrComment()} -
    - )} -
    - - {showSamples && ( -
    -
    - Sample values: -
    -
    - {isLoadingSamples ? ( -
    Loading samples...
    - ) : sampleValues.length === 0 ? ( -
    No sample values available
    - ) : ( - sampleValues.map((value, index) => renderSampleValue(value, index)) - )} -
    -
    - )} -
    + + + + + {column.getName()} + + + {column.getType()} + + + + + } + slotProps={{ + label: { + style: { + overflow: 'visible', + }, + }, + }} + /> ) } diff --git a/precise/src/controls/catalog_viewer/CatalogViewerSchema.tsx b/precise/src/controls/catalog_viewer/CatalogViewerSchema.tsx index 90857b4..d348217 100644 --- a/precise/src/controls/catalog_viewer/CatalogViewerSchema.tsx +++ b/precise/src/controls/catalog_viewer/CatalogViewerSchema.tsx @@ -1,20 +1,21 @@ import React from 'react' +import { Box, IconButton, Typography } from '@mui/material' +import { TreeItem } from '@mui/x-tree-view' +import AccountTreeOutlinedIcon from '@mui/icons-material/AccountTreeOutlined' +import ChevronRightIcon from '@mui/icons-material/ChevronRight' import Schema from '../../schema/Schema' import Table from '../../schema/Table' import CatalogViewerTable from './CatalogViewerTable' import TableReference from '../../schema/TableReference' import { buildPath } from './ViewerState' -import './catalogviewer.css' -import { ChevronRight } from 'lucide-react' interface SchemaProps { catalogName: string schema: Schema filterText: string - isExpanded: boolean isVisible: (path: string) => boolean + isLoading: boolean hasMatchingChildren: (path: string) => boolean - onToggle: (path: string) => Promise onGenerateQuery?: ( queryType: string, tableRef: TableReference | null, @@ -27,10 +28,9 @@ const CatalogViewerSchema: React.FC = ({ catalogName, schema, filterText, - isExpanded, isVisible, + isLoading, hasMatchingChildren, - onToggle, onGenerateQuery, }) => { const schemaPath = buildPath.schema(catalogName, schema.getName()) @@ -48,51 +48,60 @@ const CatalogViewerSchema: React.FC = ({ } return ( -
    -
    onToggle(schemaPath)}> - {schema.getName()} - schema - - {isExpanded ? 'â–¼' : 'â–¶'} - + {schema.getName()} - {onGenerateQuery && ( -
    - -
    - )} -
    - - {isExpanded && ( -
    - {Array.from(schema.getTables().values()) - .sort((a: Table, b: Table) => a.getName().localeCompare(b.getName())) - .map((table: Table) => { - const tablePath = buildPath.table(catalogName, schema.getName(), table.getName()) + + + + } + slotProps={{ + label: { + style: { + overflow: 'visible', + }, + }, + }} + > + {Array.from(schema.getTables().values()) + .sort((a: Table, b: Table) => a.getName().localeCompare(b.getName())) + .map((table: Table) => { + const tablePath = buildPath.table(catalogName, schema.getName(), table.getName()) - // Table visibility is handled within the component - return ( - - ) - })} -
    - )} -
    + return ( + + ) + })} +
    ) } diff --git a/precise/src/controls/catalog_viewer/CatalogViewerTable.tsx b/precise/src/controls/catalog_viewer/CatalogViewerTable.tsx index 9283651..1b077a6 100644 --- a/precise/src/controls/catalog_viewer/CatalogViewerTable.tsx +++ b/precise/src/controls/catalog_viewer/CatalogViewerTable.tsx @@ -1,19 +1,22 @@ import React, { useState, useEffect } from 'react' +import { Alert, Box, IconButton, Typography } from '@mui/material' +import { TreeItem } from '@mui/x-tree-view' +import HourglassEmptyOutlinedIcon from '@mui/icons-material/HourglassEmptyOutlined' +import SearchOutlinedIcon from '@mui/icons-material/SearchOutlined' +import TableRowsOutlined from '@mui/icons-material/TableRowsOutlined' import Table from '../../schema/Table' import SchemaProvider from '../../sql/SchemaProvider' import TableReference from '../../schema/TableReference' import CatalogViewerColumn from './CatalogViewerColumn' import { buildPath } from './ViewerState' -import './catalogviewer.css' -import { ChevronRight } from 'lucide-react' interface CatalogViewerTableProps { tableRef: TableReference filterText: string isExpanded: boolean isVisible: (path: string) => boolean + isLoading: boolean hasMatchingChildren: (path: string) => boolean - onToggle: (path: string) => Promise onGenerateQuery?: (queryType: string, tableRef: TableReference) => void } @@ -22,7 +25,7 @@ const CatalogViewerTable: React.FC = ({ filterText, isExpanded, isVisible, - onToggle, + isLoading, onGenerateQuery, }) => { const [table, setTable] = useState(() => new Table(tableRef.tableName)) @@ -63,60 +66,70 @@ const CatalogViewerTable: React.FC = ({ } return ( -
    -
    -
    onToggle(tablePath)}> - {table.getName()} - table - {isExpanded ? 'â–¼' : 'â–¶'} + + {table.getName()} - {onGenerateQuery && ( -
    - -
    - )} -
    -
    + + + + + } + slotProps={{ + label: { + style: { + overflow: 'visible', + }, + }, + }} + > + + {table.getError() ? ( + {table.getError()} + ) : table.getColumns().length === 0 && table.isLoading() ? null : ( + table.getColumns().length > 0 && + table.getColumns().map((column) => { + const columnPath = buildPath.column( + tableRef.catalogName, + tableRef.schemaName, + tableRef.tableName, + column.getName() + ) - {isExpanded && ( -
    - {table.getError() ? ( -
    {table.getError()}
    - ) : table.getColumns().length === 0 && isExpanded && table.isLoading() ? ( -
    Loading columns...
    - ) : ( - table.getColumns().length > 0 && - table.getColumns().map((column) => { - const columnPath = buildPath.column( - tableRef.catalogName, - tableRef.schemaName, - tableRef.tableName, - column.getName() - ) + if (!isVisible(columnPath)) { + return null + } - if (!isVisible(columnPath)) { - return null - } - - return ( - - ) - }) - )} -
    - )} -
    + return ( + + ) + }) + )} + + ) } diff --git a/precise/src/controls/catalog_viewer/ViewerState.ts b/precise/src/controls/catalog_viewer/ViewerState.ts index c02737b..9325a06 100644 --- a/precise/src/controls/catalog_viewer/ViewerState.ts +++ b/precise/src/controls/catalog_viewer/ViewerState.ts @@ -19,7 +19,7 @@ export const buildPath = { } export class ViewerStateManager { - private userExpanded = new Set() + public userExpanded = new Set() private matches = new Set() private onStateUpdate: StateUpdateCallback private isSearching = false diff --git a/precise/src/controls/catalog_viewer/catalogviewer.css b/precise/src/controls/catalog_viewer/catalogviewer.css deleted file mode 100644 index 8610726..0000000 --- a/precise/src/controls/catalog_viewer/catalogviewer.css +++ /dev/null @@ -1,204 +0,0 @@ -.filter-input { - width: 95%; - padding: 0.5em; - margin: 0.5em; - border: 1px solid #2b2b2b; - border-radius: 3px; - background-color: #181818; - color: #9d9d9d; - font-size: small; -} - -/* A plain text with no obvious element of it being a button */ -.reload-button { - border: 0; - background-color: transparent; - color: #bbb; - right: 20px; - position: absolute; - padding: 0; - margin: 0; - font-size: 2em; -} - -/* catalog explorer */ -.viewer_catalog { - font-weight: bold; - color: #fff; - cursor: pointer; -} - -.catalog-content { - padding-left: 0.5em; -} - -.viewer_catalog:hover { - color: #fff; - background-color: #689CC5; -} - -.viewer_catalog_body { - margin-left: 10px; - padding-left: 10px; - border-left: #444 1px solid; -} - -.viewer_schema { - font-weight: regular; - color: #bbb; - cursor: pointer; -} - -.viewer_schema:hover { - color: #fff; - background-color: #416480; -} - -.viewer-schema-body { - margin-left: 10px; - padding-left: 10px; - border-left: #444 1px solid; -} - -.viewer_table { - font-weight: regular; - color: #999; - cursor: pointer; - position: relative; - padding-right: 30px; -} - -.viewer_samplevalue { - color: #999; -} - -.viewer_table_body { - margin-left: 10px; - padding-left: 10px; - border-left: #888 1px solid; - padding-right: 10px; -} - -.viewer_samplevalues_body { - margin-left: 10px; - padding-left: 10px; - border-left: #444 1px solid; -} - -.viewer_table:hover { - color: #fff; - background-color: #334e64; -} - -/* monospaced text */ -.viewer_column { - font-family: monospace; - cursor: pointer; -} - -.viewer_column:hover { - color: #fff; - background-color: #334e64; - cursor: pointer; -} - -.loading-message { - color: #999; - font-size: x-small; -} - -.table-name { - padding-right: 0.25em; -} - -.schema-name { - padding-right: 0.25em; -} - -.catalog-viewer { - position: relative; -} - -.catalog-viewer-header { - padding-bottom: 0.5em; -} - -.catalog-name { - padding-right: 0.25em; -} - -.column-name { - padding-right: 0.25em; -} - -.expand-indicator { - color: #444; - font-size: x-small; - padding-left: 0.25em; -} - -/* Add to catalogviewer.css */ -.search-container { - position: relative; - display: flex; - flex: 1; - align-items: center; -} - -/* input inside the search container needs to have text cursor */ -.search-container > .filter-input { - cursor: text !important; -} - -.clear-search { - position: absolute; - right: 8px; - top: 50%; - transform: translateY(-50%); - cursor: pointer; - opacity: 0.6; - transition: opacity 0.2s; - padding: 4px; - display: flex; - align-items: center; - justify-content: center; -} - -.clear-search:hover { - opacity: 1; -} - -.filter-input { - padding-right: 28px; /* Make room for the clear button */ -} - -.expand-indicator-has-matches { - color: #689CC5; /* Light blue to match the hover color */ -} - -/* Add to catalogviewer.css */ -.generate-query-button { - margin-left: auto; - color: #666; - cursor: pointer; - padding: 2px 8px; - transition: color 0.2s; - display: flex; - align-items: center; -} - -.generate-query-button:hover { - color: #fff; -} - -/* Make viewer rows display as flex to accommodate the button on the right */ -.viewer_catalog, .viewer_schema, .viewer_table { - display: flex; - align-items: center; - width: 100%; -} - -/* Add spacing between the expand indicator and text */ -.catalog-name, .schema-name, .table-name { - margin-right: 0.5em; -} \ No newline at end of file diff --git a/precise/src/controls/tabs/EnterpriseTabs.tsx b/precise/src/controls/tabs/EnterpriseTabs.tsx index 823cf49..c12275b 100644 --- a/precise/src/controls/tabs/EnterpriseTabs.tsx +++ b/precise/src/controls/tabs/EnterpriseTabs.tsx @@ -1,8 +1,7 @@ import React, { Component } from 'react' -import { DndProvider } from 'react-dnd' -import { HTML5Backend } from 'react-dnd-html5-backend' -import './tabs.css' -import TabItem from './TabItem' +import { Box, Divider, IconButton, Tab as MuiTab, Tabs as MuiTabs } from '@mui/material' +import AddIcon from '@mui/icons-material/Add' +import CloseIcon from '@mui/icons-material/Close' import TabsEllipsesMenu from './TabsEllipsesMenu' import Tabs from './Tabs' import TabInfo from './TabInfo' @@ -131,29 +130,69 @@ class EnterpriseTabs extends Component const { newTabLabel = '+' } = this.props return ( - -
    -
    - {tabs.map((tab, index) => ( - + + this.handleTabClick(id)} + sx={{ flexGrow: 1 }} + > + {tabs.map((tab) => ( + this.handleTabClick(tab.id)} - handleTabClose={() => this.handleTabClose(tab.id)} - handleTabRename={(id, newTitle) => this.handleTabRename(tab.id, newTitle)} - handleTabPin={() => this.handleTabPin(tab.id)} + value={tab.id} + label={tab.title} + sx={{ minHeight: 36, py: 0 }} + icon={ + { + e.stopPropagation() + this.handleTabClose(tab.id) + }} + > + + + } + iconPosition="end" /> ))} -
    - {newTabLabel} -
    -
    - -
    -
    + { + e.stopPropagation() + this.handleNewTab() + }} + > + + + } + aria-label="Add tab" + sx={{ minWidth: 0, px: 1 }} + disableRipple + /> + + + + + + + + ) } } diff --git a/precise/src/controls/tabs/TabItem.tsx b/precise/src/controls/tabs/TabItem.tsx deleted file mode 100644 index e96f62c..0000000 --- a/precise/src/controls/tabs/TabItem.tsx +++ /dev/null @@ -1,145 +0,0 @@ -import React, { useState, useRef, useEffect } from 'react' -import { useDrag, useDrop } from 'react-dnd' -import TabInfo from './TabInfo' -import PinUpIcon from '../../assets/pin_up.png' -import PinDownIcon from '../../assets/pin_down.png' -import CloseIcon from '../../assets/close.png' - -const ItemType = { - TAB: 'tab', -} - -interface TabItemProps { - tab: T - isActive: boolean - index: number - moveTab: (fromIndex: number, toIndex: number) => void - handleTabClick: (tabId: string) => void - handleTabClose: (tabId: string) => void - handleTabRename: (tabId: string, newTitle: string) => void - handleTabPin: (tabId: string) => void -} - -function TabItem({ - tab, - isActive, - index, - moveTab, - handleTabClick, - handleTabClose, - handleTabRename, - handleTabPin, -}: TabItemProps) { - const [isEditing, setIsEditing] = useState(false) - const [editedTitle, setEditedTitle] = useState(tab.title) - const inputRef = useRef(null) - const containerRef = useRef(null) - const dragHandleRef = useRef(null) - - const [{ isDragging }, drag, preview] = useDrag({ - type: ItemType.TAB, - item: () => ({ index }), - collect: (monitor) => ({ - isDragging: monitor.isDragging(), - }), - canDrag: () => !isEditing, // Disable dragging when editing - }) - - const [, drop] = useDrop({ - accept: ItemType.TAB, - hover: (draggedItem: { index: number }) => { - if (draggedItem.index !== index) { - moveTab(draggedItem.index, index) - draggedItem.index = index - } - }, - }) - - useEffect(() => { - preview(drop(containerRef)) - }, [preview, drop]) - - useEffect(() => { - drag(dragHandleRef) - }, [drag]) - - useEffect(() => { - if (isEditing && inputRef.current) { - inputRef.current.focus() - inputRef.current.select() // Select all text when editing starts - } - }, [isEditing]) - - const handleDoubleClick = (e: React.MouseEvent) => { - e.stopPropagation() - setIsEditing(true) - } - - const handleInputChange = (event: React.ChangeEvent) => { - setEditedTitle(event.target.value) - } - - const handleInputBlur = () => { - setIsEditing(false) - if (editedTitle.trim() !== tab.title && editedTitle.trim() !== '') { - handleTabRename(tab.id, editedTitle.trim()) - } else { - setEditedTitle(tab.title) // Reset to original title if empty or unchanged - } - } - - const handleInputKeyPress = (event: React.KeyboardEvent) => { - if (event.key === 'Enter') { - handleInputBlur() - } - } - - return ( -
    handleTabClick(tab.id)} - > -
    - {isEditing ? ( - e.stopPropagation()} - style={{ cursor: 'text' }} - /> - ) : ( -
    - {tab.title} -
    - )} -
    -
    -
    { - e.stopPropagation() - handleTabPin(tab.id) - }} - > - Pin -
    -
    { - e.stopPropagation() - handleTabClose(tab.id) - }} - > - Close -
    -
    -
    - ) -} - -export default TabItem diff --git a/precise/src/controls/tabs/TabsEllipsesMenu.tsx b/precise/src/controls/tabs/TabsEllipsesMenu.tsx index 2e729bb..b92d794 100644 --- a/precise/src/controls/tabs/TabsEllipsesMenu.tsx +++ b/precise/src/controls/tabs/TabsEllipsesMenu.tsx @@ -1,4 +1,7 @@ import React, { useState, useRef, useEffect } from 'react' +import { Box, IconButton, Popover, TextField, List, ListItemButton, ListItemText } from '@mui/material' +import ExpandMoreIcon from '@mui/icons-material/ExpandMore' +import PushPinIcon from '@mui/icons-material/PushPin' import TabInfo from './TabInfo' interface TabsEllipsesMenuProps { @@ -12,62 +15,61 @@ function TabsEllipsesMenu({ onTabSelect, filterPlaceholder = 'Filter tabs...', }: TabsEllipsesMenuProps) { - const [isOpen, setIsOpen] = useState(false) + const [anchorEl, setAnchorEl] = useState(null) const [filter, setFilter] = useState('') - const menuRef = useRef(null) + const isOpen = Boolean(anchorEl) const filteredTabs = tabs.filter((tab) => tab.title.toLowerCase().includes(filter.toLowerCase())) - useEffect(() => { - function handleClickOutside(event: MouseEvent) { - if (menuRef.current && !menuRef.current.contains(event.target as Node)) { - setIsOpen(false) - } - } - - document.addEventListener('mousedown', handleClickOutside) - return () => { - document.removeEventListener('mousedown', handleClickOutside) - } - }, [menuRef]) - - const handleEllipsesClick = (event: React.MouseEvent) => { + const handleEllipsesClick = (event: React.MouseEvent) => { event.stopPropagation() - setIsOpen(true) + setAnchorEl(event.currentTarget) } + const handleClosePopover = () => setAnchorEl(null) + return ( -
    - - {isOpen && ( -
    - + + + + + e.stopPropagation()}> + setFilter(e.target.value)} - autoFocus + sx={{ mb: 1 }} /> -
    + {filteredTabs.map((tab) => ( -
    { onTabSelect(tab.id) - setIsOpen(false) + handleClosePopover() }} + sx={{ gap: 1 }} > - {tab.title} - {tab.isPinned && 📌} -
    + + {tab.isPinned && } + ))} -
    -
    - )} -
    + + + + ) } diff --git a/precise/src/controls/tabs/tabs.css b/precise/src/controls/tabs/tabs.css deleted file mode 100644 index 5fada60..0000000 --- a/precise/src/controls/tabs/tabs.css +++ /dev/null @@ -1,193 +0,0 @@ -.tabs-container { - position: relative; - display: flex; - align-items: center; - overflow-x: auto; - white-space: nowrap; - margin-top: 0px; /* Tabs overlap the control bar, better fix might be to prevent the animation from doing this */ -} - -.tabs { - display: flex; - flex-direction: row; - flex-grow: 1; - overflow-x: auto; - /* disable scrollbars */ - scrollbar-width: none; - height: 2.5em; -} - -.controltab { - display: inline-flex; - align-items: center; - padding: 10px; - padding-left: 20px; - padding-right: 20px; - background-color: #000000; - border-left: 1px solid #2b2b2b; - border-top: 1px solid #2b2b2b; - border-radius: 3px; - font-size: xx-large; - cursor: pointer; - flex-shrink: 0; - box-sizing: border-box; - color: #ffffff; - font-size: small; -} - -.controltab:hover, .tabs-ellipses-menu:hover { - background-color: #2b2b2b; -} - -.tab-item, -.tab-item-selected { - display: flex; - align-items: center; - justify-content: space-between; - padding: 10px; - border-left: 1px solid #2b2b2b; - border-top: 1px solid #2b2b2b; - border-top-left-radius: 5px; - border-top-right-radius: 5px; - cursor: pointer; - box-sizing: border-box; - font-size: small; - max-width: 200px; - animation: tabPopup 0.3s ease-out; -} - -@keyframes tabPopup { - from { - transform: translateY(10px); - opacity: 0; - } - to { - transform: translateY(0); - opacity: 1; - } -} - -.tab-item { - background-color: #101010; - color: #9d9d9d; -} - -.tab-item-selected { - background-color: #1F1F1F; - color: #dddddd; -} - -.tab-item:hover, -.tab-item-selected:hover { - background-color: #2b2b2b; -} - -.tab-content { - flex-grow: 1; - overflow: hidden; - text-overflow: ellipsis; - white-space: nowrap; - margin-right: 5px; -} - -.tab-buttons { - display: flex; - align-items: center; -} - -.tab-button { - background: none; - border: none; - cursor: pointer; - display: flex; - align-items: center; - justify-content: center; - padding: 2px; - color: inherit; - font-size: 14px; - width: 14px; - height: 14px; - margin-left: 0px; -} - -.tab-button:hover { - background-color: rgba(255, 255, 255, 0.1); - border-radius: 3px; -} - -.close-button:hover { - color: #ff4444; -} - -.tab-list-button-and-menu { - position: absolute; - right: 0px; - top: 0px; - z-index: 1000; -} - -.ellipses-button { - display: flex; - align-items: center; - justify-content: center; - width: 30px; - height: 30px; - padding: 0; - margin-right: 20px; - background-color: #000000; - border: none; - border-left: 1px solid #2b2b2b; - border-top: 1px solid #2b2b2b; - border-radius: 3px; - cursor: pointer; - color: #ffffff; - font-size: 18px; - outline: none; -} - -.ellipses-button:hover { - background-color: #2b2b2b; -} - -.tabs-ellipses-menu-content { - position: fixed; - right: 10px; - top: 130px; - background-color: #101010; - min-width: 300px; - box-shadow: 0px 8px 16px 0px rgba(0,0,0,0.2); - z-index: 1001; - max-height: calc(100vh - 50px); - overflow-y: auto; - overflow-x: hidden; - border: 1px solid #2b2b2b; - border-radius: 3px; -} - -.tabs-ellipses-menu-content input { - width: calc(100% - 20px); - margin: 10px; - padding: 5px; - background-color: #181818; - border: 1px solid #2b2b2b; - color: #9d9d9d; - font-size: small; -} - -.tabs-ellipses-menu-content .tab-list { - max-height: 250px; - overflow-y: auto; -} - -.tabs-ellipses-menu-content .tab-item { - display: block; - padding: 10px; - text-decoration: none; - cursor: pointer; - border: none; - border-radius: 0; -} - -.tabs-ellipses-menu-content .tab-item:hover { - background-color: #2b2b2b; -} \ No newline at end of file diff --git a/precise/src/main.tsx b/precise/src/main.tsx index b7b1aff..4480051 100644 --- a/precise/src/main.tsx +++ b/precise/src/main.tsx @@ -1,10 +1,50 @@ -import React from 'react' +import React, { useLayoutEffect, useRef, useState } from 'react' import ReactDOM from 'react-dom/client' import QueryEditor from './QueryEditor' +function useObservedHeight(ref: React.RefObject | React.RefObject) { + const [height, setHeight] = useState(0) + + useLayoutEffect(() => { + const el = ref.current + if (!el) return + + // Initial measure + setHeight(el.getBoundingClientRect().height) + + const ro = new ResizeObserver(([entry]) => { + setHeight(entry.contentRect.height) + }) + ro.observe(el) + + return () => ro.disconnect() + }, [ref]) + + return height +} + +export default function App() { + const slotRef = useRef(null) + const slotHeight = useObservedHeight(slotRef) + + return ( +
    +

    Trino query editor - Example app

    +
    + +
    +
    + ) +} + ReactDOM.createRoot(document.getElementById('root')!).render( -

    Trino Query Editor - Example app

    - +
    ) diff --git a/precise/src/sql/SchemaProvider.ts b/precise/src/sql/SchemaProvider.ts index 9e2c41b..627a4ed 100644 --- a/precise/src/sql/SchemaProvider.ts +++ b/precise/src/sql/SchemaProvider.ts @@ -63,7 +63,10 @@ class SchemaProvider { return null } - static populateCatalogsAndRefreshTableList(callback: any = null, errorCallback: any = null) { + static populateCatalogsAndRefreshTableList( + callback: ((nextCatalogs: Map) => void) | null = null, + errorCallback: ((error: string) => void) | null = null + ) { // refresh catalogs new TrinoQueryRunner() .SetAllResultsCallback((results: any[], isError: boolean) => { @@ -73,7 +76,6 @@ class SchemaProvider { this.catalogs.set(catalog.getName(), catalog) } this.lastSchemaFetchError = undefined - callback() // refresh tables and schemas for this catalog new TrinoQueryRunner() @@ -97,7 +99,7 @@ class SchemaProvider { if (!isError) { catalog.clearErrorMessage() } - callback() + callback?.(new Map(this.catalogs)) }) .SetErrorMessageCallback((error: string) => { catalog.setErrorMessage(error.toString()) @@ -111,7 +113,7 @@ class SchemaProvider { }) .SetErrorMessageCallback((error: string) => { this.lastSchemaFetchError = error.toString() - errorCallback(error.toString()) + errorCallback?.(error.toString()) }) .StartQuery('select catalog_name, connector_name from system.metadata.catalogs') } diff --git a/precise/src/style/components.css b/precise/src/style/components.css deleted file mode 100644 index 57a1d65..0000000 --- a/precise/src/style/components.css +++ /dev/null @@ -1,201 +0,0 @@ -/** - * components.css - * Styles for reusable UI components and utility classes - */ - -.collapse-button { - background-color: var(--dark-gray); - color: var(--highlight-blue); - border-color: var(--light-gray); - font-size: large; - border-radius: 0px 10px 10px 0px; - padding: 0.5em; - cursor: pointer; - text-align: center; - vertical-align: middle; - position: fixed; - left: 0; - bottom: 0; - z-index: 1000; -} - -.button-align-right { - padding-left: 1vw; - bottom: 0; -} - -.small-rounded-dark-grey-button { - background-color: var(--very-dark-gray); - color: var(--muted-text-color); - font-size: large; - border-radius: 10px; - padding: 0em; - cursor: pointer; - width: 1.5em; - height: 1.5em; - border: 1px solid var(--dark-gray); - text-align: center; - vertical-align: middle; - position: absolute; - left: 50%; - line-height: 1.0em; -} - -/* Progress Indicators */ -.spinner { - display: inline-block; - width: 30px; - height: 30px; - border: 3px solid rgba(255, 255, 255, 0.3); - border-radius: 50%; - border-top-color: var(--white); - animation: spin 1s linear infinite; -} - -.progress-percent { - font-weight: bold; - font-size: 1.5em; -} - -.progress-bar { - width: 100%; - border: 1px solid var(--medium-gray); - background-color: var(--dark-accent); - display: grid; - grid-template-columns: 1fr; -} - -.progress-bar-fill { - transition: width 1100ms; - transition-timing-function: linear; - grid-column-start: 0; - left: 0px; - top: 0px; - line-height: 30px; - text-align: center; - bottom: 0px; - width: 0%; - background: var(--brand-gradient); - z-index: 1; - white-space: nowrap; -} - -.progress-bar-running-state { - width: 100%; - transition: opacity 500ms; - transition-timing-function: linear; - grid-column-start: 0; - left: 0px; - top: 0px; - line-height: 30px; - text-align: center; - bottom: 0px; - background: var(--brand-gradient); - z-index: 1; - white-space: nowrap; -} - -.progress-bar-timer { - padding-left: 1em; - font-size: large; -} - -/* Add Query Button */ -.add-query-button { - display: grid; - grid-template-columns: auto; - align-items: center; - width: 100%; - height: 1em; -} - -.add-query-button hr { - border: 0; - height: 1px; - width: 100%; - background: #333; - background-image: linear-gradient(to right, #111, #222, #111); -} - -/* Error Handling */ -.result-cell-null { - color: var(--muted-text-color); - font-style: italic; -} - -/* Links and Text */ -.link-to-query { - font-size: small; - text-align: right; - margin-right: 1em; -} - -.status-text { - color: var(--muted-text-color); - font-size: small; -} - -.read-the-docs { - color: var(--muted-text-color); -} - -.helper-text { - color: #666; - font-size: x-small; -} - -.offset-page-for-copy { - font-size: .875em; - margin-right: .125em; - position: relative; - top: -.25em; - left: -.125em; -} - -.offset-page-for-copy-inner { - position: absolute; - top: .25em; - left: .25em; -} - -/* Utility Classes - Only include the ones actually used in the project */ -.flex { - display: flex; -} - -.items-center { - align-items: center; -} - -.justify-center { - justify-content: center; -} - - button:focus, - button:focus-visible { - outline: 4px auto -webkit-focus-ring-color; - } - - /* Progress bar color consistency */ - .progress-bar { - width: 100%; - border: 1px solid #777; - background-color: #222; - display: grid; - grid-template-columns: 1fr; - } - - .progress-bar-fill { - transition: width 1100ms; - transition-timing-function: linear; - grid-column-start: 0; - left: 0px; - top: 0px; - line-height: 30px; - text-align: center; - bottom: 0px; - width: 0%; - background: var(--brand-gradient); - z-index: 1; - white-space: nowrap; - } \ No newline at end of file diff --git a/precise/src/style/control.css b/precise/src/style/control.css deleted file mode 100644 index 5fc42ca..0000000 --- a/precise/src/style/control.css +++ /dev/null @@ -1,231 +0,0 @@ -/** - * control.css - * Styles for control elements and interactions - */ - -/* Basic Interactive Elements */ -.clickable { - cursor: pointer; -} - -.selectable { - user-select: text; -} - -.non-selectable { - user-select: none; -} - -input:focus { - outline: none; - border-color: var(--highlight-blue); -} - -/* Tab Controls */ -.tab-container { - display: flex; - border-bottom: 1px solid var(--dark-gray); - background-color: var(--subtle-darker-accent-color); -} - -.tab { - padding: 8px 16px; - cursor: pointer; - border-right: 1px solid var(--dark-gray); - user-select: none; -} - -.tab.active { - background-color: var(--lighter-accent-color); - border-bottom: 2px solid var(--highlight-blue); -} - -.tab:hover:not(.active) { - background-color: var(--subtle-lighter-accent-color); -} - -/* Editor Controls */ -.editor-toolbar { - display: flex; - align-items: center; - padding: 4px; - background-color: var(--subtle-darker-accent-color); - border-bottom: 1px solid var(--dark-gray); -} - -.toolbar-button { - background: none; - border: none; - color: var(--muted-text-color); - padding: 4px 8px; - cursor: pointer; - border-radius: 4px; -} - -.toolbar-button:hover { - background-color: var(--subtle-lighter-accent-color); - color: var(--white); -} - -.toolbar-button.active { - background-color: var(--lighter-accent-color); - color: var(--white); -} - -/* Resizable Elements */ -.resizable { - position: relative; -} - -.resize-handle { - position: absolute; - width: 10px; - height: 100%; - right: 0; - top: 0; - cursor: col-resize; - z-index: 10; -} - -.resize-handle-horizontal { - width: 100%; - height: 10px; - left: 0; - bottom: 0; - cursor: row-resize; -} - -/* Context Menus and Dropdowns */ -.context-menu { - position: absolute; - background-color: var(--lighter-accent-color); - border: 1px solid var(--dark-gray); - border-radius: 4px; - z-index: 1000; - box-shadow: 0 2px 10px rgba(0, 0, 0, 0.3); -} - -.menu-item { - padding: 6px 12px; - cursor: pointer; -} - -.menu-item:hover { - background-color: var(--subtle-lighter-accent-color); -} - -.menu-divider { - height: 1px; - background-color: var(--dark-gray); - margin: 4px 0; -} - -/* parent type of small control buttons */ -.small-rounded-button { - background-color: #111; - color: #7d7d7d; - border-color: #689CC5; - font-size: large; - border-radius: 10px; - padding: 0.5em; - cursor: pointer; - height: auto; - text-align: center; - vertical-align: middle; - margin-right: 2px; -} - -.small-rounded-button:hover { - background-color: #333; - /* animate */ - transition: background-color 0.25s; -} - -/* input box with no border and transparent background, no outline when selected */ -.query-title { - padding-left: 1em; - color: #61dafb; - font-weight: 300; - font-size: 1.5em; - border: none; - background-color: transparent; - outline: none; -} - -.card-header { - padding-top: 0.2em; - padding-left: 0.2em; - background-color: #1E1E1E; - right: 0px; - height: 3em; -} - -/* grid containing execute query and title text */ -.card-header-grid { - display: grid; - grid-template-columns: 4em auto 10em 10em 3.75em 5px 3.75em 5px 3.75em 5px 3.75em; - padding-right: 20px; /* to account for scrollbar */ -} - -.query-run-button { - background-color: #111; - color: #689CC5; - border-color: #689CC5; - font-size: large; - border-radius: 10px; - padding: 0.5em; - cursor: pointer; - width: 4em; - height: auto; - text-align: center; - vertical-align: middle; -} - -.query-run-button:hover { - background-color: var(--dark-accent); - color: var(--white); -} - -.query-control-button { - background-color: #111; - color: #689CC5; - border-color: #3f5f79; - font-size: large; - border-radius: 10px; - padding: 0.5em; - cursor: pointer; - width: 100%; - height: 100%; - text-align: center; - vertical-align: middle; - box-sizing: border-box; -} - -.query-control-button:hover { - background-color: var(--dark-accent); - color: var(--white); -} - - -.catalog-setting { - /* align text right */ - text-align: right; -} - -/* Catalog and schema settings */ -.catalog-setting, -.schema-setting { - padding-left: 1em; - color: #777; - font-weight: 300; - font-size: 1em; - border: none; - background-color: transparent; - outline: none; - } - -/* hover over the catalog setting and schema setting to change the color to white */ -.catalog-setting:hover, .schema-setting:hover { - color: #fff; - transition: background-color 0.25s, color 0.25s; -} diff --git a/precise/src/style/layout.css b/precise/src/style/layout.css deleted file mode 100644 index ede5c71..0000000 --- a/precise/src/style/layout.css +++ /dev/null @@ -1,144 +0,0 @@ -/** - * layout.css - * Layout structures and positioning styles - */ - -/* Page Layout */ -.page { - width: 100%; - } - - /* Grid Layout for page with collapsible sidebar */ - .pagegrid { - display: grid; - grid-template-columns: 0vw 100vw; - transition: grid-template-columns 0.1s; - max-width: 100%; - width: 100%; - box-sizing: border-box; - } - - /* For expanded layout */ - .catalog-expanded { - /* Will be applied via JavaScript */ - } - - /* For collapsed layout */ - .catalog-collapsed { - /* Will be applied via JavaScript */ - } - - /* Catalog Sidebar */ - .catalog-container { - width: auto; - height: calc(100vh); - } - - .catalog-wrapper { - overflow-y: auto; - overflow-x: hidden; - width: auto; - background-color: var(--dark-gray); - height: calc(100vh - 3em); - scrollbar-color: var(--medium-gray) var(--dark-gray); - } - - /* Branding and Header */ - .branding-header { - background: var(--brand-gradient); - height: 3em; - width: 100%; - position: fixed; - } - - .branding-padder { - height: 3em; - } - - /* Card Layout */ - .card { - margin: 0px; - } - - /* Editor and Results Layout */ - .query-editor { - margin: 0px; - padding: 0px; - } - - .editorspace { - /* Space for the Monaco editor */ - } - - .resultSetPort { - padding-top: 0em; - } - - /* Spacers and Common Layout Elements */ - .spacer { - margin-bottom: 1em; - } - - /* Status Layouts */ - .status { - display: grid; - grid-template-columns: 60px 60px auto; - align-items: left; - } - - .progress-bar-grid { - display: grid; - grid-template-columns: 90fr 10fr; - align-items: center; - } - - /* Query Status Table Layout */ - .query-status-table { - border-spacing: 0px; - } - - .query-status-table th { - padding: 4px 8px 4px 8px; - color: var(--muted-text-color); - font-size: small; - padding-right: 1em; - text-align: left; - } - - /* Image size modifiers */ - .full-height-image { - height: 100%; - width: auto; - object-fit: contain; - } - - .half-height-image { - height: 50%; - width: auto; - object-fit: contain; - } - - /* Fixes for scrollable areas */ - .scrollable { - overflow-y: auto; - overflow-x: auto; - height: 40vh; - width: 100%; - margin: 0; - padding: 0; - } - - /* Catalog container height */ - .catalog-container { - width: auto; - height: calc(100vh); - } - - .catalog-wrapper { - overflow-y: auto; - overflow-x: hidden; - width: auto; - background-color: var(--dark-gray); - height: calc(100vh - 3em); - scrollbar-color: var(--medium-gray) var(--dark-gray); - } \ No newline at end of file diff --git a/precise/src/style/normalize.css b/precise/src/style/normalize.css deleted file mode 100644 index a0ac59d..0000000 --- a/precise/src/style/normalize.css +++ /dev/null @@ -1,94 +0,0 @@ -/** - * normalize.css - * Base styles and resets for consistent rendering - */ - -/* Reset margins and paddings */ -html, body { - margin: 0; - padding: 0; - font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif; - color: var(--text-color); - background-color: var(--bg-color); - } - - body { - overflow-y: auto; - } - - #root { - font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif; - color: #fff; - background-color: #121212; - margin: 0; - padding: 0; - max-width: 100%; - overflow-x: hidden; - } - - /* Basic elements styling */ - a { - font-weight: 500; - color: var(--link-color); - text-decoration: inherit; - } - - a:hover { - color: var(--link-hover-color); - } - - button { - border-radius: 8px; - border: 1px solid transparent; - padding: 0.6em 1.2em; - font-size: 1em; - font-weight: 500; - font-family: inherit; - background-color: #1a1a1a; - cursor: pointer; - transition: border-color 0.25s; - } - - button:hover { - border-color: var(--border-color); - } - - button:focus, - button:focus-visible { - outline: 4px auto -webkit-focus-ring-color; - } - - /* Tables */ - table { - border-collapse: collapse; - border-spacing: 0; - width: 100%; - box-sizing: border-box; - color: var(--text-color); - } - - /* Basic animations */ - @keyframes spin { - to { - transform: rotate(360deg); - } - } - - @keyframes logo-spin { - from { - transform: rotate(0deg); - } - to { - transform: rotate(360deg); - } - } - - .animate-spin { - animation: spin 1s linear infinite; - } - - @media (prefers-reduced-motion: no-preference) { - a:nth-of-type(2) .logo { - animation: logo-spin infinite 20s linear; - } - } \ No newline at end of file diff --git a/precise/src/style/query-editor.css b/precise/src/style/query-editor.css deleted file mode 100644 index ef51423..0000000 --- a/precise/src/style/query-editor.css +++ /dev/null @@ -1,162 +0,0 @@ -/** - * query-editor.css - * Styles specific to the query editor component - */ - - /* Query title input */ - .query-title { - background-color: transparent; - color: var(--highlight-blue); - border: 0px; - padding: 0px 12px; - font-size: 2em; - width: 100%; - } - - /* Query Editor Area */ - .editorspace { - /* Container for Monaco editor */ - } - - /* SQL Syntax Highlighting */ - .qualifiedName { - color: var(--white) !important; - background-color: var(--success-color); - cursor: pointer !important; - font-weight: bold; - } - - .relationReference { - color: var(--white) !important; - background-color: rgba(0, 0, 255, 0.5); - cursor: pointer !important; - font-weight: bold; - } - - .columnType { - color: var(--muted-text-color); - } - - .columnExtraOrComment { - font-style: italic; - } - - /* Query Stage Indicators */ - .status-stage-default { - border-left: 4px solid var(--lighter-accent-color); - border-top: 1px solid var(--lighter-accent-color); - } - - .status-stage-rows { - border-left: 4px solid var(--rows-color); - border-top: 1px solid var(--rows-color-partial-transparent); - } - - .status-stage-bytes { - border-left: 4px solid var(--bytes-color); - border-top: 1px solid var(--bytes-color-partial-transparent); - } - - .status-stage-splits { - border-left: 4px solid var(--splits-color); - border-top: 1px solid var(--splits-color-partial-transparent); - } - - /* Stage Headers */ - .status-stage-category-header-splits { - border-left: 4px solid var(--splits-color); - text-align: center; - } - - .status-stage-category-header-bytes { - border-left: 4px solid var(--bytes-color); - text-align: center; - } - - .status-stage-category-header-rows { - border-left: 4px solid var(--rows-color); - text-align: center; - } - - /* Stage Row Styles */ - .stage-running td { - padding: 4px 8px 4px 8px; - text-align: left; - } - - .stage-not-running td { - padding: 4px 8px 4px 8px; - color: var(--muted-text-color); - text-align: left; - } - - .substitution-field { - /* Field container styling */ - margin-bottom: 10px; - } - - .substitution-field label { - /* Label styling */ - margin-right: 8px; - } - - .substitution-field input { - /* Input styling */ - padding: 4px 8px; - border-radius: 4px; - border: 1px solid var(--lighter-accent-color); - background-color: var(--subtle-lighter-accent-color); - color: var(--text-color); - } - - /* Add this to your query-editor.css file */ - -.editor-toolbar { - position: absolute; - top: 5px; - right: 25px; - z-index: 1000; - display: flex; - gap: 8px; -} - -.editor-button { - background: none; - border: none; - cursor: pointer; - color: rgba(255, 255, 255, 0.7); - display: flex; - align-items: center; - justify-content: center; - padding: 4px; - border-radius: 4px; - transition: all 0.2s ease; -} - -.editor-button:hover { - background-color: rgba(255, 255, 255, 0.1); - color: white; -} - -.editor-button:active { - background-color: rgba(255, 255, 255, 0.2); -} - -.editor-button[disabled] { - opacity: 0.5; - cursor: not-allowed; -} - -.editor-button[data-tooltip]:hover::after { - content: attr(data-tooltip); - position: absolute; - bottom: -30px; - left: 50%; - transform: translateX(-50%); - background-color: rgba(0, 0, 0, 0.8); - color: white; - padding: 4px 8px; - border-radius: 4px; - font-size: 12px; - white-space: nowrap; -} \ No newline at end of file diff --git a/precise/src/style/results.css b/precise/src/style/results.css deleted file mode 100644 index 8c69fbd..0000000 --- a/precise/src/style/results.css +++ /dev/null @@ -1,231 +0,0 @@ -/** - * results.css - * Styles for the query results display - */ - -/* Results Container */ -.result-set { - width: 100%; - overflow-x: auto; - box-sizing: border-box; - padding: 0; - margin: 0; - position: relative; /* For positioning clear and copy buttons */ - } - - .result-table-container { - width: 100%; - overflow-x: auto; - margin: 0; - padding: 0; - } - - /* Results Table */ - .result-table { - table-layout: fixed; - width: 100%; - min-width: 100%; - border-collapse: collapse; - } - - .result-set table { - border-collapse: collapse; - border-spacing: 0; - width: 100%; - box-sizing: border-box; - } - - .result-set tr, - .result-set td, - .result-set th { - box-sizing: border-box; - } - - /* Table Rows & Cells */ - .result-set tr:nth-child(even) td { - background-color: var(--subtle-lighter-accent-color); - } - - .result-set tr:nth-child(odd) td { - background-color: var(--lighter-accent-color); - } - - .result-set td { - padding: 10px; - border: 1px solid var(--lighter-accent-color); - text-align: left; - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; - } - - .result-set th { - padding: 10px; - text-align: left; - background-color: var(--subtle-darker-accent-color); - color: darkgray; - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; - } - - /* Null Values */ - .result-cell-null { - color: var(--muted-text-color); - font-style: italic; - } - - /* Clear Results Button */ - .clear-result-table { - position: absolute; - right: 0; - max-width: calc(100% - 20px); - color: var(--muted-text-color); - font-size: small; - cursor: pointer; - margin-right: 1em; - } - - /* Stats Display */ - .stats { - margin: 0em; - } - - /* Collapsed Display */ - .displaydefaultcollapsed { - display: none; - } - - /* Reload Link */ - .reload-link-div { - text-align: right; - float: right; - padding-right: 0.5em; - cursor: pointer; - font-size: small; - color: var(--error-color-subtle); - } - - .reload-link-div:hover { - color: var(--white); - } - - /* Results table structure improvements */ -.result-set tr, .result-set td, .result-set th { - box-sizing: border-box; - } - - .result-set table { - border-collapse: collapse; - border-spacing: 0; - width: 100%; - box-sizing: border-box; - } - - /* Adding missing hover style */ - .reload-link-div:hover { - color: var(--white); - } - - /* Fix table container sizing */ - .result-table-container { - width: 100%; - overflow-x: auto; - margin: 0; - padding: 0; - } - - /* Fix copy link formatting */ - .offset-page-for-copy { - font-size: .875em; - margin-right: .125em; - position: relative; - top: -.25em; - left: -.125em; - } - - .offset-page-for-copy-inner { - position: absolute; - top: .25em; - left: .25em; - } - - /* Helper text formatting */ - .helper-text { - color: #666; - font-size: x-small; - } - - /* Shared styles for action buttons (copy and clear) */ -.result-action-button { - position: absolute; - background-color: rgba(40, 40, 40, 0.6); - color: rgba(200, 200, 200, 0.8); - padding: 8px 12px; - border-radius: 4px; - font-size: small; - cursor: pointer; - display: flex; - align-items: center; - justify-content: center; - transition: all 0.2s ease-in-out; - backdrop-filter: blur(2px); - z-index: 10; - box-shadow: 0 2px 5px rgba(0, 0, 0, 0.2); - right: 10px; /* Positioned on the right */ - width: auto; /* Allow content to determine width */ - white-space: nowrap; /* Keep text on one line */ - } - - - .result-action-button:hover { - transform: scale(1.15); - background-color: rgba(60, 60, 60, 0.8); - color: white; - box-shadow: 0 3px 8px rgba(0, 0, 0, 0.3); - } - - .copy-link { - position: absolute; - top: 2px; - right: 10px; - max-width: calc(100% - 20px); - } - - .copy-link.copied { - animation: action-pulse 0.3s ease-in-out; - background-color: rgba(40, 100, 40, 0.8); - } - - /* Clear button specific styles */ - .clear-result-table { - top: 2px; - margin-right: 80px; - } - - .clear-result-table.confirmed { - animation: action-pulse 0.3s ease-in-out; - background-color: rgba(120, 40, 40, 0.8); - } - - /* Shared animation for feedback */ - @keyframes action-pulse { - 0% { transform: scale(1.15); } - 50% { transform: scale(1.3); } - 100% { transform: scale(1.15); } - } - - /* Icon styling */ - .action-icon { - margin-right: 6px; - } - - /* Text label styling */ - .action-text { - user-select: none; - } - - /* Make sure the result container has proper positioning context */ - .result-set { - position: relative; - } \ No newline at end of file diff --git a/precise/src/style/theme.css b/precise/src/style/theme.css deleted file mode 100644 index a2eb627..0000000 --- a/precise/src/style/theme.css +++ /dev/null @@ -1,66 +0,0 @@ -/** - * theme.css - * Contains all theme variables and color definitions - */ - - :root { - /* Base typography */ - font-weight: 400; - font-synthesis: none; - text-rendering: optimizeLegibility; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; - - /* Color scheme */ - color-scheme: light dark; - color: rgba(255, 255, 255, 0.87); - background-color: #242424; - - /* Brand Colors */ - --bytes-color: #1C364D; - --bytes-color-partial-transparent: rgba(28, 54, 77, 0.5); - --rows-color: #0C61A6; - --rows-color-partial-transparent: rgba(12, 97, 166, 0.5); - --splits-color: #564682; - --splits-color-partial-transparent: rgba(86, 70, 130, 0.5); - - /* UI Colors */ - --link-color: #5bc0de; - --link-hover-color: #747bff; - --border-color: #646cff; - --subtle-lighter-accent-color: #1e1e1e; - --lighter-accent-color: #2c2c2c; - --subtle-darker-accent-color: #131313; - - /* Text Colors */ - --muted-text-color: #888; - --white: #fff; - - /* Gradient */ - --brand-gradient: linear-gradient(45deg, #564682, #1C2F44, #1C364D, #0C61A6); - - /* Structural Colors */ - --dark-gray: #333; - --medium-gray: #555; - --light-gray: #666; - --very-dark-gray: #111; - --dark-accent: #222; - --highlight-blue: #689CC5; - - /* Success/Error States */ - --success-color: rgba(1, 123, 15, 0.5); - --error-color-subtle: #999; -} - -@media (prefers-color-scheme: light) { - :root { - color: #213547; - background-color: #ffffff; - } - a:hover { - color: #747bff; - } - button { - background-color: #f9f9f9; - } -} \ No newline at end of file diff --git a/precise/src/theme.tsx b/precise/src/theme.tsx new file mode 100644 index 0000000..ebdf6b0 --- /dev/null +++ b/precise/src/theme.tsx @@ -0,0 +1,45 @@ +import { createTheme } from '@mui/material/styles' +import darkScrollbar from '@mui/material/darkScrollbar' + +export const lightTheme = createTheme({ + palette: { + mode: 'light', + primary: { + main: '#0b1367', + }, + secondary: { + main: '#f50057', + }, + }, + components: { + MuiLink: { + styleOverrides: { + root: { + color: '#f50057', + textDecoration: 'none', + }, + }, + }, + }, +}) + +export const darkTheme = createTheme({ + palette: { + mode: 'dark', + }, + components: { + MuiLink: { + styleOverrides: { + root: { + color: '#dd33fa', + textDecoration: 'none', + }, + }, + }, + MuiCssBaseline: { + styleOverrides: { + body: darkScrollbar(), + }, + }, + }, +}) diff --git a/precise/src/utils/ClearButton.tsx b/precise/src/utils/ClearButton.tsx index 89031ca..6809022 100644 --- a/precise/src/utils/ClearButton.tsx +++ b/precise/src/utils/ClearButton.tsx @@ -1,5 +1,7 @@ import React, { useState } from 'react' -import { Trash2, AlertTriangle } from 'lucide-react' +import { Button, Tooltip } from '@mui/material' +import DeleteOutlineIcon from '@mui/icons-material/DeleteOutline' +import WarningAmberIcon from '@mui/icons-material/WarningAmber' interface ClearButtonProps { onClear: () => void @@ -19,23 +21,18 @@ const ClearButton: React.FC = ({ onClear }) => { } return ( -
    - {confirming ? ( - <> - - Confirm - - ) : ( - <> - - Clear - - )} -
    + + + ) } diff --git a/precise/src/utils/CopyLink.tsx b/precise/src/utils/CopyLink.tsx index 790032a..06d8fe0 100644 --- a/precise/src/utils/CopyLink.tsx +++ b/precise/src/utils/CopyLink.tsx @@ -1,5 +1,7 @@ import React, { useState } from 'react' -import { Copy, CheckCircle } from 'lucide-react' +import { Button, Tooltip } from '@mui/material' +import CopyAllOutlinedIcon from '@mui/icons-material/CopyAllOutlined' +import DoneOutlinedIcon from '@mui/icons-material/DoneOutlined' interface CopyLinkProps { copy: () => void @@ -15,23 +17,24 @@ const CopyLink: React.FC = ({ copy }) => { } return ( -
    - {copied ? ( - <> - - Copied! - - ) : ( - <> - - Copy - - )} -
    + + + ) } diff --git a/precise/src/utils/ErrorBoxProvider.tsx b/precise/src/utils/ErrorBoxProvider.tsx deleted file mode 100644 index 5d7bdca..0000000 --- a/precise/src/utils/ErrorBoxProvider.tsx +++ /dev/null @@ -1,41 +0,0 @@ -import React, { useState } from 'react' -import CloseIcon from '../assets/close.png' -import './errorbox.css' - -interface ErrorBoxProviderProps { - errorMessage: string - errorContext: string -} - -const ErrorBox: React.FC = ({ errorMessage, errorContext }) => { - const [isVisible, setIsVisible] = useState(true) - const [errorTimestamp] = useState(new Date().toISOString()) // Capture timestamp when error occurs - - if (!errorMessage || !isVisible) { - return null - } - - return ( -
    -
    - Error: {errorContext} -
    setIsVisible(false)} - role="button" - aria-label="Close error message" - > - Close -
    -
    -
    -
    - {errorMessage} -
    {errorTimestamp}
    -
    -
    -
    - ) -} - -export default ErrorBox diff --git a/precise/src/utils/ProgressBar.tsx b/precise/src/utils/ProgressBar.tsx deleted file mode 100644 index 9a7cada..0000000 --- a/precise/src/utils/ProgressBar.tsx +++ /dev/null @@ -1,33 +0,0 @@ -import * as React from 'react' - -// ProgressBar properties -interface ProgressBarProps { - progress: number - state: string -} - -// ProgressBar state -interface ProgressBarState {} - -export default class ProgressBar extends React.Component { - constructor(props: ProgressBarProps) { - super(props) - this.state = { - progress: 0, - } - } - - render() { - return ( -
    - {this.props.progress === 0 && Number.isFinite(this.props.progress) ? ( -
    {this.props.state}
    - ) : ( -
    - {Math.round(this.props.progress) + '%'} -
    - )} -
    - ) - } -} diff --git a/precise/src/utils/ResizableContainer.tsx b/precise/src/utils/ResizableContainer.tsx deleted file mode 100644 index 4268c8a..0000000 --- a/precise/src/utils/ResizableContainer.tsx +++ /dev/null @@ -1,83 +0,0 @@ -import React, { useState, useRef, useEffect } from 'react' - -interface ResizableContainerProps { - children: React.ReactNode - initialHeight: string - minHeight?: string - maxHeight?: string - onHeightChange: (newHeight: string) => void -} - -const ResizableContainer: React.FC = ({ - children, - initialHeight, - minHeight = '100px', - maxHeight = '80vh', - onHeightChange, -}) => { - const [height, setHeight] = useState(initialHeight) - const containerRef = useRef(null) - const resizeHandleRef = useRef(null) - - useEffect(() => { - const container = containerRef.current - const resizeHandle = resizeHandleRef.current - let isResizing = false - let startY: number - let startHeight: number - - const onMouseDown = (e: MouseEvent) => { - isResizing = true - startY = e.clientY - startHeight = container!.getBoundingClientRect().height - document.addEventListener('mousemove', onMouseMove) - document.addEventListener('mouseup', onMouseUp) - } - - const onMouseMove = (e: MouseEvent) => { - if (!isResizing) return - const diff = e.clientY - startY - const newHeight = startHeight + diff - const minHeightPx = parseInt(minHeight) - const maxHeightPx = parseInt(maxHeight) - const clampedHeight = Math.max(minHeightPx, Math.min(maxHeightPx, newHeight)) - const newHeightString = `${clampedHeight}px` - setHeight(newHeightString) - onHeightChange(newHeightString) - } - - const onMouseUp = () => { - isResizing = false - document.removeEventListener('mousemove', onMouseMove) - document.removeEventListener('mouseup', onMouseUp) - } - - resizeHandle?.addEventListener('mousedown', onMouseDown) - - return () => { - resizeHandle?.removeEventListener('mousedown', onMouseDown) - document.removeEventListener('mousemove', onMouseMove) - document.removeEventListener('mouseup', onMouseUp) - } - }, [minHeight, maxHeight, onHeightChange]) - - return ( -
    - {children} -
    -
    - ) -} - -export default ResizableContainer diff --git a/precise/src/utils/errorbox.css b/precise/src/utils/errorbox.css deleted file mode 100644 index 9f89172..0000000 --- a/precise/src/utils/errorbox.css +++ /dev/null @@ -1,40 +0,0 @@ -.error-box { - background-color: #2b2b2b; - border: 1px solid #ff6b6b; - border-radius: 4px; - margin: 10px; - padding: 10px; -} - -.error-box-header { - color: #ff6b6b; - display: flex; - justify-content: space-between; - align-items: center; - font-weight: bold; - margin-bottom: 8px; -} - -.error-box-close { - cursor: pointer; - opacity: 0.8; - transition: opacity 0.2s; -} - -.error-box-close:hover { - opacity: 1; -} - -.error-box-body { - color: #ff9999; -} - -.error-box-message { - margin-bottom: 8px; -} - -.error-box-context { - color: #999; - font-size: 0.9em; - margin-top: 8px; -} \ No newline at end of file diff --git a/screenshot.png b/screenshot.png new file mode 100755 index 0000000000000000000000000000000000000000..f0a833ebc51e317120f909dc908a0fe15ce0df79 GIT binary patch literal 173703 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Ó)jED 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

    p#;jBQE!`aL0zDG-@WGWqsN)fX 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

    R32mBoV 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