diff --git a/jest.config.base.cjs b/jest.config.base.cjs index cf5744ce0..3ca0a57f1 100644 --- a/jest.config.base.cjs +++ b/jest.config.base.cjs @@ -5,7 +5,7 @@ module.exports = { '^.+\\.(ts|tsx|js|jsx)$': ['babel-jest', { rootMode: 'upward' }], }, transformIgnorePatterns: [ - '/node_modules/(?!(@deephaven|monaco-editor|d3-interpolate|d3-color|nanoid)/)', + '/node_modules/(?!(@deephaven|monaco-editor|d3-interpolate|d3-color)/)', ], moduleNameMapper: { 'theme-([^/]+?)\\.css(\\?(?:inline|raw))?$': path.join( diff --git a/package-lock.json b/package-lock.json index 9e40899e9..ffeb2b8c7 100644 --- a/package-lock.json +++ b/package-lock.json @@ -13928,12 +13928,12 @@ } }, "node_modules/braces": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", - "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", "dev": true, "dependencies": { - "fill-range": "^7.1.1" + "fill-range": "^7.0.1" }, "engines": { "node": ">=8" @@ -16002,9 +16002,9 @@ } }, "node_modules/enhanced-resolve": { - "version": "5.17.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.17.0.tgz", - "integrity": "sha512-dwDPwZL0dmye8Txp2gzFmA6sxALaSvdRDjPH0viLcKrtlOL3tw62nWWweVD1SdILDTJrbrL6tdWVN58Wo6U3eA==", + "version": "5.16.1", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.16.1.tgz", + "integrity": "sha512-4U5pNsuDl0EhuZpq46M5xPslstkviJuhrdobaRDBk2Jy2KO37FDAJl4lb2KlNabxT0m4MTK2UHNrsAcphE8nyw==", "dev": true, "peer": true, "dependencies": { @@ -17410,9 +17410,9 @@ } }, "node_modules/fill-range": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", - "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", "dev": true, "dependencies": { "to-regex-range": "^5.0.1" @@ -17461,9 +17461,9 @@ } }, "node_modules/flatted": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.1.tgz", - "integrity": "sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==", + "version": "3.2.9", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.9.tgz", + "integrity": "sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==", "dev": true }, "node_modules/flatten-vertex-data": { @@ -22629,9 +22629,9 @@ } }, "node_modules/known-css-properties": { - "version": "0.31.0", - "resolved": "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.31.0.tgz", - "integrity": "sha512-sBPIUGTNF0czz0mwGGUoKKJC8Q7On1GPbCSFPfyEsfHb2DyBG0Y4QtV+EVWpINSaiGKZblDNuF5AezxSgOhesQ==", + "version": "0.30.0", + "resolved": "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.30.0.tgz", + "integrity": "sha512-VSWXYUnsPu9+WYKkfmJyLKtIvaRJi1kXUqVmBACORXZQxT5oZDsoZ2vQP+bQFDnWtpI/4eq3MLoRMjI2fnLzTQ==", "dev": true, "peer": true }, @@ -25468,12 +25468,12 @@ } }, "node_modules/micromatch": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.7.tgz", - "integrity": "sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==", + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", "dev": true, "dependencies": { - "braces": "^3.0.3", + "braces": "^3.0.2", "picomatch": "^2.3.1" }, "engines": { @@ -27976,9 +27976,9 @@ "integrity": "sha512-ESj2+eBxhGrcA1azgHs7lARG5+5iLakc/6nlfbpjcLl00HuuUOIuORhYXN4D1HfvMSKuVtFQjAlnwi1JHEeDIw==" }, "node_modules/picocolors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.1.tgz", - "integrity": "sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", "dev": true }, "node_modules/picomatch": { @@ -28279,9 +28279,9 @@ } }, "node_modules/postcss-selector-parser": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.0.tgz", - "integrity": "sha512-UMz42UD0UY0EApS0ZL9o1XnLhSTtvvvLe5Dc2H2O56fvRZi+KulDyf5ctDhhtYJBGKStV2FL1fy6253cmLgqVQ==", + "version": "6.0.16", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.16.tgz", + "integrity": "sha512-A0RVJrX+IUkVZbW3ClroRWurercFhieevHB38sr2+l9eUClMqome3LmEmnhlNy+5Mr2EYN6B2Kaw9wYdd+VHiw==", "dev": true, "dependencies": { "cssesc": "^3.0.0", @@ -30784,27 +30784,17 @@ } }, "node_modules/stylelint": { - "version": "16.6.1", - "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-16.6.1.tgz", - "integrity": "sha512-yNgz2PqWLkhH2hw6X9AweV9YvoafbAD5ZsFdKN9BvSDVwGvPh+AUIrn7lYwy1S7IHmtFin75LLfX1m0D2tHu8Q==", + "version": "16.5.0", + "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-16.5.0.tgz", + "integrity": "sha512-IlCBtVrG+qTy3v+tZTk50W8BIomjY/RUuzdrDqdnlCYwVuzXtPbiGfxYqtyYAyOMcb+195zRsuHn6tgfPmFfbw==", "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/stylelint" - }, - { - "type": "github", - "url": "https://github.com/sponsors/stylelint" - } - ], "peer": true, "dependencies": { - "@csstools/css-parser-algorithms": "^2.6.3", - "@csstools/css-tokenizer": "^2.3.1", - "@csstools/media-query-list-parser": "^2.1.11", - "@csstools/selector-specificity": "^3.1.1", - "@dual-bundle/import-meta-resolve": "^4.1.0", + "@csstools/css-parser-algorithms": "^2.6.1", + "@csstools/css-tokenizer": "^2.2.4", + "@csstools/media-query-list-parser": "^2.1.9", + "@csstools/selector-specificity": "^3.0.3", + "@dual-bundle/import-meta-resolve": "^4.0.0", "balanced-match": "^2.0.0", "colord": "^2.9.3", "cosmiconfig": "^9.0.0", @@ -30813,7 +30803,7 @@ "debug": "^4.3.4", "fast-glob": "^3.3.2", "fastest-levenshtein": "^1.0.16", - "file-entry-cache": "^9.0.0", + "file-entry-cache": "^8.0.0", "global-modules": "^2.0.0", "globby": "^11.1.0", "globjoin": "^0.1.4", @@ -30821,16 +30811,16 @@ "ignore": "^5.3.1", "imurmurhash": "^0.1.4", "is-plain-object": "^5.0.0", - "known-css-properties": "^0.31.0", + "known-css-properties": "^0.30.0", "mathml-tag-names": "^2.1.3", "meow": "^13.2.0", - "micromatch": "^4.0.7", + "micromatch": "^4.0.5", "normalize-path": "^3.0.0", - "picocolors": "^1.0.1", + "picocolors": "^1.0.0", "postcss": "^8.4.38", "postcss-resolve-nested-selector": "^0.1.1", "postcss-safe-parser": "^7.0.0", - "postcss-selector-parser": "^6.1.0", + "postcss-selector-parser": "^6.0.16", "postcss-value-parser": "^4.2.0", "resolve-from": "^5.0.0", "string-width": "^4.2.3", @@ -30845,6 +30835,10 @@ }, "engines": { "node": ">=18.12.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/stylelint" } }, "node_modules/stylelint/node_modules/ansi-regex": { @@ -30895,30 +30889,30 @@ } }, "node_modules/stylelint/node_modules/file-entry-cache": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-9.0.0.tgz", - "integrity": "sha512-6MgEugi8p2tiUhqO7GnPsmbCCzj0YRCwwaTbpGRyKZesjRSzkqkAE9fPp7V2yMs5hwfgbQLgdvSSkGNg1s5Uvw==", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz", + "integrity": "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==", "dev": true, "peer": true, "dependencies": { - "flat-cache": "^5.0.0" + "flat-cache": "^4.0.0" }, "engines": { - "node": ">=18" + "node": ">=16.0.0" } }, "node_modules/stylelint/node_modules/flat-cache": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-5.0.0.tgz", - "integrity": "sha512-JrqFmyUl2PnPi1OvLyTVHnQvwQ0S+e6lGSwu8OkAZlSaNIZciTY2H/cOOROxsBA1m/LZNHDsqAgDZt6akWcjsQ==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz", + "integrity": "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==", "dev": true, "peer": true, "dependencies": { - "flatted": "^3.3.1", + "flatted": "^3.2.9", "keyv": "^4.5.4" }, "engines": { - "node": ">=18" + "node": ">=16" } }, "node_modules/stylelint/node_modules/meow": { @@ -31143,9 +31137,9 @@ } }, "node_modules/table/node_modules/ajv": { - "version": "8.16.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.16.0.tgz", - "integrity": "sha512-F0twR8U1ZU67JIEtekUcLkXkoO5mMMmgGD8sK/xUFzJ805jxHQl92hImFAqqXMyMYjSPOyUPAwHYhB72g5sTXw==", + "version": "8.13.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.13.0.tgz", + "integrity": "sha512-PRA911Blj99jR5RMeTunVbNXMF6Lp4vZXnk5GQjcnUWUTsrXtekg/pnmFFI2u/I36Y/2bITGS30GZCXei6uNkA==", "dev": true, "peer": true, "dependencies": { @@ -34884,21 +34878,22 @@ "version": "0.14.0", "license": "Apache-2.0", "dependencies": { - "@deephaven/chart": "^0.81.1", - "@deephaven/components": "^0.81.1", - "@deephaven/dashboard": "^0.81.1", - "@deephaven/dashboard-core-plugins": "^0.81.1", - "@deephaven/grid": "^0.81.0", - "@deephaven/icons": "^0.81.0", - "@deephaven/iris-grid": "^0.81.1", - "@deephaven/jsapi-bootstrap": "^0.81.1", - "@deephaven/jsapi-components": "^0.81.1", - "@deephaven/jsapi-types": "^1.0.0-dev0.34.3", - "@deephaven/log": "^0.81.0", - "@deephaven/plugin": "^0.81.1", - "@deephaven/react-hooks": "^0.81.0", - "@deephaven/redux": "^0.81.1", - "@deephaven/utils": "^0.81.0", + "@adobe/react-spectrum": "^3.34.1", + "@deephaven/chart": "^0.78.0", + "@deephaven/components": "^0.78.0", + "@deephaven/dashboard": "^0.78.0", + "@deephaven/dashboard-core-plugins": "^0.78.0", + "@deephaven/grid": "^0.78.0", + "@deephaven/icons": "^0.78.0", + "@deephaven/iris-grid": "^0.78.0", + "@deephaven/jsapi-bootstrap": "^0.78.0", + "@deephaven/jsapi-components": "^0.78.0", + "@deephaven/jsapi-types": "^1.0.0-dev0.34.2", + "@deephaven/log": "^0.78.0", + "@deephaven/plugin": "^0.78.0", + "@deephaven/react-hooks": "^0.78.0", + "@deephaven/redux": "^0.78.0", + "@deephaven/utils": "^0.78.0", "@fortawesome/react-fontawesome": "^0.2.0", "@react-types/shared": "^3.22.0", "classnames": "^2.5.1", @@ -34987,17 +34982,17 @@ } }, "plugins/ui/src/js/node_modules/@deephaven/chart": { - "version": "0.81.1", - "resolved": "https://registry.npmjs.org/@deephaven/chart/-/chart-0.81.1.tgz", - "integrity": "sha512-yvcOlE+Me1aUxqSECAz5a8/1vwK1ZaVtbnS+RD1Kr7DTa6SSvC6cllQMN+S/HpC9c1AXqfnIITOEsj6/70SB6Q==", + "version": "0.78.0", + "resolved": "https://registry.npmjs.org/@deephaven/chart/-/chart-0.78.0.tgz", + "integrity": "sha512-G28KsnH+p3sot94UZP+LkwpyHPBUmtwbIyaIUQQxvEA8Hr5vJlN92IkMKCWEtPFRTiHhCrHYkgfQ54SN2XyNZQ==", "dependencies": { - "@deephaven/components": "^0.81.1", - "@deephaven/icons": "^0.81.0", + "@deephaven/components": "^0.78.0", + "@deephaven/icons": "^0.78.0", "@deephaven/jsapi-types": "1.0.0-dev0.34.0", - "@deephaven/jsapi-utils": "^0.81.0", - "@deephaven/log": "^0.81.0", - "@deephaven/react-hooks": "^0.81.0", - "@deephaven/utils": "^0.81.0", + "@deephaven/jsapi-utils": "^0.78.0", + "@deephaven/log": "^0.78.0", + "@deephaven/react-hooks": "^0.78.0", + "@deephaven/utils": "^0.78.0", "buffer": "^6.0.3", "fast-deep-equal": "^3.1.3", "lodash.debounce": "^4.0.8", @@ -35021,20 +35016,19 @@ "integrity": "sha512-UiIbmCaMx5mPOGCWdgOCfZtccMhh55jv3qzeN3qBp3YUi46uGfWY5kfCU3hWRtaQvUgO7n0XhBKTd4K/pxv9ng==" }, "plugins/ui/src/js/node_modules/@deephaven/components": { - "version": "0.81.1", - "resolved": "https://registry.npmjs.org/@deephaven/components/-/components-0.81.1.tgz", - "integrity": "sha512-m270cnxIXS/nXnaqRXUhw8GJA+E8IB3lfhBaqF104AJwq3XE2D2IQUFm0mf/JVbO/sVmMjMGH4Um1SbRCcFwLA==", + "version": "0.78.0", + "resolved": "https://registry.npmjs.org/@deephaven/components/-/components-0.78.0.tgz", + "integrity": "sha512-gx+yc1ZNRb4Pa3ptilGKBypPRNVoPrIqlDb7wJeZCKX+OnMZczFZLdEn12bh0s4Dnp460VNhegG2iM5W14GBHA==", "dependencies": { "@adobe/react-spectrum": "3.33.1", - "@deephaven/icons": "^0.81.0", - "@deephaven/log": "^0.81.0", - "@deephaven/react-hooks": "^0.81.0", - "@deephaven/utils": "^0.81.0", + "@deephaven/icons": "^0.78.0", + "@deephaven/log": "^0.78.0", + "@deephaven/react-hooks": "^0.78.0", + "@deephaven/utils": "^0.78.0", "@fortawesome/fontawesome-svg-core": "^6.2.1", "@fortawesome/react-fontawesome": "^0.2.0", "@react-spectrum/theme-default": "^3.5.1", "@react-spectrum/utils": "^3.11.5", - "@react-types/radio": "^3.8.1", "@react-types/shared": "^3.22.1", "@react-types/textfield": "^3.9.1", "bootstrap": "4.6.2", @@ -35044,13 +35038,13 @@ "lodash.debounce": "^4.0.8", "lodash.flatten": "^4.4.0", "memoizee": "^0.4.15", - "nanoid": "^5.0.7", "popper.js": "^1.16.1", "prop-types": "^15.7.2", "react-beautiful-dnd": "^13.1.0", "react-transition-group": "^4.4.2", "react-virtualized-auto-sizer": "1.0.6", - "react-window": "^1.8.6" + "react-window": "^1.8.6", + "shortid": "^2.2.16" }, "engines": { "node": ">=10" @@ -35061,19 +35055,19 @@ } }, "plugins/ui/src/js/node_modules/@deephaven/console": { - "version": "0.81.1", - "resolved": "https://registry.npmjs.org/@deephaven/console/-/console-0.81.1.tgz", - "integrity": "sha512-gWg5yB7eekLcqiWpXKyaboVDsuaVZ6ZnCR+47HQZe9mLNe33TG0nH2V8X1Ci/gYjfbDcCefA0bXAVPujP4DT8w==", - "dependencies": { - "@deephaven/chart": "^0.81.1", - "@deephaven/components": "^0.81.1", - "@deephaven/icons": "^0.81.0", - "@deephaven/jsapi-bootstrap": "^0.81.1", + "version": "0.78.0", + "resolved": "https://registry.npmjs.org/@deephaven/console/-/console-0.78.0.tgz", + "integrity": "sha512-mWFRwGLUAEKpyedmDFhLnvm75GDYchPmM8e4X/iG1Zna72euhar3++EDwLcjO+7IBqqDN1mU27hVoGKp0FmnNg==", + "dependencies": { + "@deephaven/chart": "^0.78.0", + "@deephaven/components": "^0.78.0", + "@deephaven/icons": "^0.78.0", + "@deephaven/jsapi-bootstrap": "^0.78.0", "@deephaven/jsapi-types": "1.0.0-dev0.34.0", - "@deephaven/log": "^0.81.0", - "@deephaven/react-hooks": "^0.81.0", - "@deephaven/storage": "^0.81.0", - "@deephaven/utils": "^0.81.0", + "@deephaven/log": "^0.78.0", + "@deephaven/react-hooks": "^0.78.0", + "@deephaven/storage": "^0.78.0", + "@deephaven/utils": "^0.78.0", "@fortawesome/react-fontawesome": "^0.2.0", "classnames": "^2.3.1", "linkifyjs": "^4.1.0", @@ -35082,11 +35076,11 @@ "memoize-one": "^5.1.1", "memoizee": "^0.4.15", "monaco-editor": "^0.41.0", - "nanoid": "^5.0.7", "papaparse": "5.3.2", "popper.js": "^1.16.1", "prop-types": "^15.7.2", - "shell-quote": "^1.7.2" + "shell-quote": "^1.7.2", + "shortid": "^2.2.16" }, "engines": { "node": ">=16" @@ -35102,21 +35096,21 @@ "integrity": "sha512-UiIbmCaMx5mPOGCWdgOCfZtccMhh55jv3qzeN3qBp3YUi46uGfWY5kfCU3hWRtaQvUgO7n0XhBKTd4K/pxv9ng==" }, "plugins/ui/src/js/node_modules/@deephaven/dashboard": { - "version": "0.81.1", - "resolved": "https://registry.npmjs.org/@deephaven/dashboard/-/dashboard-0.81.1.tgz", - "integrity": "sha512-ftc0wG+TUbKakd0CwLWn0pK5y4OMWvadncTErHkEiEpRi4WtHUVyCDF3QtGUXt021QgqSXQ1FwiQfQSraO8qTg==", - "dependencies": { - "@deephaven/components": "^0.81.1", - "@deephaven/golden-layout": "^0.81.1", - "@deephaven/log": "^0.81.0", - "@deephaven/react-hooks": "^0.81.0", - "@deephaven/redux": "^0.81.1", - "@deephaven/utils": "^0.81.0", + "version": "0.78.0", + "resolved": "https://registry.npmjs.org/@deephaven/dashboard/-/dashboard-0.78.0.tgz", + "integrity": "sha512-PzlWlJrA8HiIYkpzQUjyDhPJr8vh0dvKQDX9eBM4QuWGoIk75Oo6oDUUJhmNyp8X7TilnR5rdOnOVosbs110vg==", + "dependencies": { + "@deephaven/components": "^0.78.0", + "@deephaven/golden-layout": "^0.78.0", + "@deephaven/log": "^0.78.0", + "@deephaven/react-hooks": "^0.78.0", + "@deephaven/redux": "^0.78.0", + "@deephaven/utils": "^0.78.0", "fast-deep-equal": "^3.1.3", "lodash.ismatch": "^4.1.1", "lodash.throttle": "^4.1.1", - "nanoid": "^5.0.7", - "prop-types": "^15.7.2" + "prop-types": "^15.7.2", + "shortid": "^2.2.16" }, "engines": { "node": ">=16" @@ -35129,30 +35123,30 @@ } }, "plugins/ui/src/js/node_modules/@deephaven/dashboard-core-plugins": { - "version": "0.81.1", - "resolved": "https://registry.npmjs.org/@deephaven/dashboard-core-plugins/-/dashboard-core-plugins-0.81.1.tgz", - "integrity": "sha512-n/KQfQuS5to8XOsY/Imb1KZeLXO9vxuH+d/mQehAw5etsaRuUMaZA1hLvJVSUzkYboGNGbW55rZ+L9HKcVHTIw==", - "dependencies": { - "@deephaven/chart": "^0.81.1", - "@deephaven/components": "^0.81.1", - "@deephaven/console": "^0.81.1", - "@deephaven/dashboard": "^0.81.1", - "@deephaven/file-explorer": "^0.81.1", - "@deephaven/filters": "^0.81.0", - "@deephaven/golden-layout": "^0.81.1", - "@deephaven/grid": "^0.81.0", - "@deephaven/icons": "^0.81.0", - "@deephaven/iris-grid": "^0.81.1", - "@deephaven/jsapi-bootstrap": "^0.81.1", - "@deephaven/jsapi-components": "^0.81.1", + "version": "0.78.0", + "resolved": "https://registry.npmjs.org/@deephaven/dashboard-core-plugins/-/dashboard-core-plugins-0.78.0.tgz", + "integrity": "sha512-hssDMaXWRzj3KsGP4J+9Q+Ww6cW1NQBrmCvCVO3/R7DZZXCWohQFU1zPwKBxXEDk3BbGx4zc7imM/CsU5eB5cw==", + "dependencies": { + "@deephaven/chart": "^0.78.0", + "@deephaven/components": "^0.78.0", + "@deephaven/console": "^0.78.0", + "@deephaven/dashboard": "^0.78.0", + "@deephaven/file-explorer": "^0.78.0", + "@deephaven/filters": "^0.78.0", + "@deephaven/golden-layout": "^0.78.0", + "@deephaven/grid": "^0.78.0", + "@deephaven/icons": "^0.78.0", + "@deephaven/iris-grid": "^0.78.0", + "@deephaven/jsapi-bootstrap": "^0.78.0", + "@deephaven/jsapi-components": "^0.78.0", "@deephaven/jsapi-types": "1.0.0-dev0.34.0", - "@deephaven/jsapi-utils": "^0.81.0", - "@deephaven/log": "^0.81.0", - "@deephaven/plugin": "^0.81.1", - "@deephaven/react-hooks": "^0.81.0", - "@deephaven/redux": "^0.81.1", - "@deephaven/storage": "^0.81.0", - "@deephaven/utils": "^0.81.0", + "@deephaven/jsapi-utils": "^0.78.0", + "@deephaven/log": "^0.78.0", + "@deephaven/plugin": "^0.78.0", + "@deephaven/react-hooks": "^0.78.0", + "@deephaven/redux": "^0.78.0", + "@deephaven/storage": "^0.78.0", + "@deephaven/utils": "^0.78.0", "@fortawesome/react-fontawesome": "^0.2.0", "classnames": "^2.3.1", "fast-deep-equal": "^3.1.3", @@ -35161,14 +35155,14 @@ "lodash.throttle": "^4.1.1", "memoize-one": "^5.1.1", "memoizee": "^0.4.15", - "nanoid": "^5.0.7", "prop-types": "^15.7.2", "react-markdown": "^8.0.7", "redux": "^4.2.0", "redux-thunk": "^2.4.1", "rehype-mathjax": "^4.0.3", "remark-gfm": "^3.0.1", - "remark-math": "^5.1.1" + "remark-math": "^5.1.1", + "shortid": "^2.2.16" }, "engines": { "node": ">=16" @@ -35185,15 +35179,15 @@ "integrity": "sha512-UiIbmCaMx5mPOGCWdgOCfZtccMhh55jv3qzeN3qBp3YUi46uGfWY5kfCU3hWRtaQvUgO7n0XhBKTd4K/pxv9ng==" }, "plugins/ui/src/js/node_modules/@deephaven/file-explorer": { - "version": "0.81.1", - "resolved": "https://registry.npmjs.org/@deephaven/file-explorer/-/file-explorer-0.81.1.tgz", - "integrity": "sha512-+z8JVWHMHpotST4dlA/BR7Us4XcOgo3r3l2gnTn6UF60c1D25Vuoispi2Ev8mANBKO4RekoS7BEURm6KOzqfZQ==", - "dependencies": { - "@deephaven/components": "^0.81.1", - "@deephaven/icons": "^0.81.0", - "@deephaven/log": "^0.81.0", - "@deephaven/storage": "^0.81.0", - "@deephaven/utils": "^0.81.0", + "version": "0.78.0", + "resolved": "https://registry.npmjs.org/@deephaven/file-explorer/-/file-explorer-0.78.0.tgz", + "integrity": "sha512-qXeDu1FB08k6g+Y+3WElWO6Iq4TryqhWlh+sw4iLx6Ey7rkpZZkFvPpdtVldVoDixgCO+3zuUwWkAYE3rO0LGg==", + "dependencies": { + "@deephaven/components": "^0.78.0", + "@deephaven/icons": "^0.78.0", + "@deephaven/log": "^0.78.0", + "@deephaven/storage": "^0.78.0", + "@deephaven/utils": "^0.78.0", "@fortawesome/fontawesome-svg-core": "^6.2.1", "@fortawesome/react-fontawesome": "^0.2.0", "classnames": "^2.3.1", @@ -35208,21 +35202,20 @@ } }, "plugins/ui/src/js/node_modules/@deephaven/filters": { - "version": "0.81.0", - "resolved": "https://registry.npmjs.org/@deephaven/filters/-/filters-0.81.0.tgz", - "integrity": "sha512-qRrfcSEN5lEbbmLpXhqWEDON3cBVBsRQCEdkqwSMadGm1mev0oeucAN6LiiiHxEHe/n5i9N2vrzjVpqHmDjzyA==", + "version": "0.78.0", + "resolved": "https://registry.npmjs.org/@deephaven/filters/-/filters-0.78.0.tgz", + "integrity": "sha512-0C9udzidoX99nZXxQ5UOn+zRq2dAA16ic0FvnUBBJtKKwxfuAHPIq95H4b5VHgUh6lVOG6Q432xrRSinB7wrlw==", "engines": { "node": ">=16" } }, "plugins/ui/src/js/node_modules/@deephaven/golden-layout": { - "version": "0.81.1", - "resolved": "https://registry.npmjs.org/@deephaven/golden-layout/-/golden-layout-0.81.1.tgz", - "integrity": "sha512-dXAUCpDE2Mtt5lAuUanqVf6MybCBdEbQaVEsdsz0tyu6joQUTR2tpiAP2pF1oyAV/6eMk712HjNNANHH5GK/5Q==", + "version": "0.78.0", + "resolved": "https://registry.npmjs.org/@deephaven/golden-layout/-/golden-layout-0.78.0.tgz", + "integrity": "sha512-TFnlrb/TIqJlUlRN3I4v5i/UMpLCbcVnD5+FVEkN1Rwnn9n/lfY4kgu3o0Cr56TLXllfdmfuEHWJY4pJpoFrlg==", "dependencies": { - "@deephaven/components": "^0.81.1", - "jquery": "^3.6.0", - "nanoid": "^5.0.7" + "@deephaven/components": "^0.78.0", + "jquery": "^3.6.0" }, "peerDependencies": { "react": ">=16.8.0", @@ -35230,11 +35223,11 @@ } }, "plugins/ui/src/js/node_modules/@deephaven/grid": { - "version": "0.81.0", - "resolved": "https://registry.npmjs.org/@deephaven/grid/-/grid-0.81.0.tgz", - "integrity": "sha512-2vuYvVIstJVEu18eQGOArZRtKodTiWqKrv3mHb1uPznvspBd3r+TgQHPAKpdP+nckMlJ09zIGQragRGnavl//w==", + "version": "0.78.0", + "resolved": "https://registry.npmjs.org/@deephaven/grid/-/grid-0.78.0.tgz", + "integrity": "sha512-w5qC8MhS/eUJzro8lkTHe2XOw+KAnhFgqkA1RFAr4A0/T0pUha7IJhdjH0JMBYOLaik6bMCPrQDiU8GvFyJPtA==", "dependencies": { - "@deephaven/utils": "^0.81.0", + "@deephaven/utils": "^0.78.0", "classnames": "^2.3.1", "color-convert": "^2.0.1", "event-target-shim": "^6.0.2", @@ -35252,9 +35245,9 @@ } }, "plugins/ui/src/js/node_modules/@deephaven/icons": { - "version": "0.81.0", - "resolved": "https://registry.npmjs.org/@deephaven/icons/-/icons-0.81.0.tgz", - "integrity": "sha512-V6i7wMygcMhtnhGKY/LQEFL2qEtEBYMWjcJaeAFTpa6DgFDKakPY3cZyyURpHUtJOnalY6O5n5TC0KVlKyDkGw==", + "version": "0.78.0", + "resolved": "https://registry.npmjs.org/@deephaven/icons/-/icons-0.78.0.tgz", + "integrity": "sha512-gFR7hWghDJGgNphF9FpI0VnjCQrZ7FpQqFmxTzWTBSLWAxwRL1jR3glAR1/GbpfugE4BwuQARI+zRBU0xB4z1w==", "dependencies": { "@fortawesome/fontawesome-common-types": "^6.1.1" }, @@ -35264,22 +35257,22 @@ } }, "plugins/ui/src/js/node_modules/@deephaven/iris-grid": { - "version": "0.81.1", - "resolved": "https://registry.npmjs.org/@deephaven/iris-grid/-/iris-grid-0.81.1.tgz", - "integrity": "sha512-RmeVpIndkMKyXAOwWkWotlcE1zENGM45oCQa27mTc3jLel9eC97IuZKO2lNm0SSUHvw90/5gcnPOB1TeCi5OLA==", - "dependencies": { - "@deephaven/components": "^0.81.1", - "@deephaven/console": "^0.81.1", - "@deephaven/filters": "^0.81.0", - "@deephaven/grid": "^0.81.0", - "@deephaven/icons": "^0.81.0", - "@deephaven/jsapi-components": "^0.81.1", + "version": "0.78.0", + "resolved": "https://registry.npmjs.org/@deephaven/iris-grid/-/iris-grid-0.78.0.tgz", + "integrity": "sha512-kRjZC+aRjFlmQUSV3qcYL4BxdruxQKr4CY96FRC9pPgRztaLbU/pQHawuOp8aqydxkrpIR5eF1EVQIzPlR9piA==", + "dependencies": { + "@deephaven/components": "^0.78.0", + "@deephaven/console": "^0.78.0", + "@deephaven/filters": "^0.78.0", + "@deephaven/grid": "^0.78.0", + "@deephaven/icons": "^0.78.0", + "@deephaven/jsapi-components": "^0.78.0", "@deephaven/jsapi-types": "1.0.0-dev0.34.0", - "@deephaven/jsapi-utils": "^0.81.0", - "@deephaven/log": "^0.81.0", - "@deephaven/react-hooks": "^0.81.0", - "@deephaven/storage": "^0.81.0", - "@deephaven/utils": "^0.81.0", + "@deephaven/jsapi-utils": "^0.78.0", + "@deephaven/log": "^0.78.0", + "@deephaven/react-hooks": "^0.78.0", + "@deephaven/storage": "^0.78.0", + "@deephaven/utils": "^0.78.0", "@dnd-kit/core": "^6.1.0", "@dnd-kit/sortable": "^7.0.2", "@dnd-kit/utilities": "^3.2.2", @@ -35292,10 +35285,10 @@ "memoize-one": "^5.1.1", "memoizee": "^0.4.15", "monaco-editor": "^0.41.0", - "nanoid": "^5.0.7", "prop-types": "^15.7.2", "react-beautiful-dnd": "^13.1.0", - "react-transition-group": "^4.4.2" + "react-transition-group": "^4.4.2", + "shortid": "^2.2.16" }, "engines": { "node": ">=10" @@ -35311,15 +35304,14 @@ "integrity": "sha512-UiIbmCaMx5mPOGCWdgOCfZtccMhh55jv3qzeN3qBp3YUi46uGfWY5kfCU3hWRtaQvUgO7n0XhBKTd4K/pxv9ng==" }, "plugins/ui/src/js/node_modules/@deephaven/jsapi-bootstrap": { - "version": "0.81.1", - "resolved": "https://registry.npmjs.org/@deephaven/jsapi-bootstrap/-/jsapi-bootstrap-0.81.1.tgz", - "integrity": "sha512-IIHfahXJ/ciV2lfuyHBGzStljEzBIoWeBeOi3emRI6iihqfNXh6Uhbxm4EAlOr6pCyDesM3PmJ9VdBvQmFqgyw==", + "version": "0.78.0", + "resolved": "https://registry.npmjs.org/@deephaven/jsapi-bootstrap/-/jsapi-bootstrap-0.78.0.tgz", + "integrity": "sha512-XeQnxcCTLH6CdycDvo4dw/gpoqOnGYQQUSAlWqHjwiR0Ep+11JBkeIZRufsT1/GBfaQDho7GtZAJ0vlgADFSow==", "dependencies": { - "@deephaven/components": "^0.81.1", + "@deephaven/components": "^0.78.0", "@deephaven/jsapi-types": "1.0.0-dev0.34.0", - "@deephaven/log": "^0.81.0", - "@deephaven/react-hooks": "^0.81.0", - "@deephaven/utils": "^0.81.0" + "@deephaven/log": "^0.78.0", + "@deephaven/react-hooks": "^0.78.0" }, "engines": { "node": ">=16" @@ -35334,17 +35326,17 @@ "integrity": "sha512-UiIbmCaMx5mPOGCWdgOCfZtccMhh55jv3qzeN3qBp3YUi46uGfWY5kfCU3hWRtaQvUgO7n0XhBKTd4K/pxv9ng==" }, "plugins/ui/src/js/node_modules/@deephaven/jsapi-components": { - "version": "0.81.1", - "resolved": "https://registry.npmjs.org/@deephaven/jsapi-components/-/jsapi-components-0.81.1.tgz", - "integrity": "sha512-767gLERw/cqiECwCPLjIad9JKD+UBs7wXB+zAVc/L3N1gpNCZyWCFi4BKMSCCqtOSJaGJU3QoIEw8CAJCWBhdQ==", + "version": "0.78.0", + "resolved": "https://registry.npmjs.org/@deephaven/jsapi-components/-/jsapi-components-0.78.0.tgz", + "integrity": "sha512-VSQD7gvollbyQTbzW6jhIjxQplm6i5tvL/nyqY6P19W0bxCcraYGeVzoaL5XvTQo91GvQkqB6d1nltOytI3dmw==", "dependencies": { - "@deephaven/components": "^0.81.1", - "@deephaven/jsapi-bootstrap": "^0.81.1", + "@deephaven/components": "^0.78.0", + "@deephaven/jsapi-bootstrap": "^0.78.0", "@deephaven/jsapi-types": "1.0.0-dev0.34.0", - "@deephaven/jsapi-utils": "^0.81.0", - "@deephaven/log": "^0.81.0", - "@deephaven/react-hooks": "^0.81.0", - "@deephaven/utils": "^0.81.0", + "@deephaven/jsapi-utils": "^0.78.0", + "@deephaven/log": "^0.78.0", + "@deephaven/react-hooks": "^0.78.0", + "@deephaven/utils": "^0.78.0", "@types/js-cookie": "^3.0.3", "classnames": "^2.3.2", "js-cookie": "^3.0.5", @@ -35364,21 +35356,21 @@ "integrity": "sha512-UiIbmCaMx5mPOGCWdgOCfZtccMhh55jv3qzeN3qBp3YUi46uGfWY5kfCU3hWRtaQvUgO7n0XhBKTd4K/pxv9ng==" }, "plugins/ui/src/js/node_modules/@deephaven/jsapi-types": { - "version": "1.0.0-dev0.34.3", - "resolved": "https://registry.npmjs.org/@deephaven/jsapi-types/-/jsapi-types-1.0.0-dev0.34.3.tgz", - "integrity": "sha512-yJdfk5ZOQGufhe6Arx1B9fqf5F6arKST3SZ/Jtkb3hWj2SXFf+5vphQ3JuINXmuGYUAIz6BGF+yNulkNWuRafA==" + "version": "1.0.0-dev0.34.2", + "resolved": "https://registry.npmjs.org/@deephaven/jsapi-types/-/jsapi-types-1.0.0-dev0.34.2.tgz", + "integrity": "sha512-vHEP+93r2zsPPZs5hLT4I6eYw2pWqLqL7e4GSedX7K37P57+MzLtRR+eTp29o1BVwbuRpQfz6D/hSROzvw3XxQ==" }, "plugins/ui/src/js/node_modules/@deephaven/jsapi-utils": { - "version": "0.81.0", - "resolved": "https://registry.npmjs.org/@deephaven/jsapi-utils/-/jsapi-utils-0.81.0.tgz", - "integrity": "sha512-rlx7K+tCUWA0ekNa/BKUudoAb9T2+4Oitu5pIMfe0qu8SgBV7PxcUGLmKGrRMEj9ZlAHYH3ngHgYFeAFDF6cMQ==", + "version": "0.78.0", + "resolved": "https://registry.npmjs.org/@deephaven/jsapi-utils/-/jsapi-utils-0.78.0.tgz", + "integrity": "sha512-VeCCns+nkKucbQYRGOak1MisEFQzI9bJQ+pAmqXBhVxJHj5NxqRiqnyoyp1VQig6zg1dzVqUj4h5ZTHXJ1QHdw==", "dependencies": { - "@deephaven/filters": "^0.81.0", + "@deephaven/filters": "^0.78.0", "@deephaven/jsapi-types": "1.0.0-dev0.34.0", - "@deephaven/log": "^0.81.0", - "@deephaven/utils": "^0.81.0", + "@deephaven/log": "^0.78.0", + "@deephaven/utils": "^0.78.0", "lodash.clamp": "^4.0.3", - "nanoid": "^5.0.7" + "shortid": "^2.2.16" }, "engines": { "node": ">=16" @@ -35390,9 +35382,9 @@ "integrity": "sha512-UiIbmCaMx5mPOGCWdgOCfZtccMhh55jv3qzeN3qBp3YUi46uGfWY5kfCU3hWRtaQvUgO7n0XhBKTd4K/pxv9ng==" }, "plugins/ui/src/js/node_modules/@deephaven/log": { - "version": "0.81.0", - "resolved": "https://registry.npmjs.org/@deephaven/log/-/log-0.81.0.tgz", - "integrity": "sha512-W5TgMBa7Q8W1nWrz7TElhwV4xO6+aHWrcPgH/a3Tj0oZDyYSjxRoWJ/CHx6boGrrJrkR8qpHyDuOKu9xHmxhYg==", + "version": "0.78.0", + "resolved": "https://registry.npmjs.org/@deephaven/log/-/log-0.78.0.tgz", + "integrity": "sha512-6GXUm1yjHTUWpi/p22sJ/F8yZ+l7I3jnfs9HlRjSErB7tb5jmpBXGAMTkL8oCuvvycLdx0QKcs17VJxV0saejw==", "dependencies": { "event-target-shim": "^6.0.2" }, @@ -35401,17 +35393,17 @@ } }, "plugins/ui/src/js/node_modules/@deephaven/plugin": { - "version": "0.81.1", - "resolved": "https://registry.npmjs.org/@deephaven/plugin/-/plugin-0.81.1.tgz", - "integrity": "sha512-3uBpOHEVN2v3k9BegZ87O6agyup8BLKeufmkBt1W3mp15fvSf15iwa8wXkj12FOXlVWWozdqqE6PDLZsWoLOXw==", - "dependencies": { - "@deephaven/components": "^0.81.1", - "@deephaven/golden-layout": "^0.81.1", - "@deephaven/icons": "^0.81.0", - "@deephaven/iris-grid": "^0.81.1", + "version": "0.78.0", + "resolved": "https://registry.npmjs.org/@deephaven/plugin/-/plugin-0.78.0.tgz", + "integrity": "sha512-HLE4lEA3/8ICkhgrD4N0cH2gAkQd44yftHKr6a1UeZWp/A3fheSrawzB1hjQCXsmpNf82UGuhrFyILTyWcHxwQ==", + "dependencies": { + "@deephaven/components": "^0.78.0", + "@deephaven/golden-layout": "^0.78.0", + "@deephaven/icons": "^0.78.0", + "@deephaven/iris-grid": "^0.78.0", "@deephaven/jsapi-types": "1.0.0-dev0.34.0", - "@deephaven/log": "^0.81.0", - "@deephaven/react-hooks": "^0.81.0", + "@deephaven/log": "^0.78.0", + "@deephaven/react-hooks": "^0.78.0", "@fortawesome/fontawesome-common-types": "^6.1.1", "@fortawesome/react-fontawesome": "^0.2.0" }, @@ -35428,16 +35420,16 @@ "integrity": "sha512-UiIbmCaMx5mPOGCWdgOCfZtccMhh55jv3qzeN3qBp3YUi46uGfWY5kfCU3hWRtaQvUgO7n0XhBKTd4K/pxv9ng==" }, "plugins/ui/src/js/node_modules/@deephaven/react-hooks": { - "version": "0.81.0", - "resolved": "https://registry.npmjs.org/@deephaven/react-hooks/-/react-hooks-0.81.0.tgz", - "integrity": "sha512-KmY9kDAQbbve9nfsSgkP8q0dlMGEAISmXl8bR0c/VZEbDPULXaMD4DLFWGN286uvn1hzSNy5CyAzk9MsMzrFag==", + "version": "0.78.0", + "resolved": "https://registry.npmjs.org/@deephaven/react-hooks/-/react-hooks-0.78.0.tgz", + "integrity": "sha512-ic4KTEsykk58hF/RiRaTgNWKYphH6E8jZ/XiJ5sUHFLq+p/z8RCULyQhGcsAt3DwcwRtzHr97g7FvUPxyVE2WA==", "dependencies": { "@adobe/react-spectrum": "3.33.1", - "@deephaven/log": "^0.81.0", - "@deephaven/utils": "^0.81.0", + "@deephaven/log": "^0.78.0", + "@deephaven/utils": "^0.78.0", "lodash.debounce": "^4.0.8", "lodash.throttle": "^4.1.1", - "nanoid": "^5.0.7" + "shortid": "^2.2.16" }, "engines": { "node": ">=16" @@ -35447,14 +35439,14 @@ } }, "plugins/ui/src/js/node_modules/@deephaven/redux": { - "version": "0.81.1", - "resolved": "https://registry.npmjs.org/@deephaven/redux/-/redux-0.81.1.tgz", - "integrity": "sha512-5mHP4TTyRm9QDQ4oab4iGS6bLuAux1MLy7Qw14kBSn+lYo8ItA2NmN6MOEqzKY4ozQUyLxMvXyx+IWlVzt5Lag==", + "version": "0.78.0", + "resolved": "https://registry.npmjs.org/@deephaven/redux/-/redux-0.78.0.tgz", + "integrity": "sha512-6G2hDFzkT5hc0P3ARtTfrReXnEJytjnpLFPI2BLR7elQl8A55boQFBOG2KnS0oNiCZaJ50oE4t/CyW0bUTOHcw==", "dependencies": { "@deephaven/jsapi-types": "1.0.0-dev0.34.0", - "@deephaven/jsapi-utils": "^0.81.0", - "@deephaven/log": "^0.81.0", - "@deephaven/plugin": "^0.81.1", + "@deephaven/jsapi-utils": "^0.78.0", + "@deephaven/log": "^0.78.0", + "@deephaven/plugin": "^0.78.0", "fast-deep-equal": "^3.1.3", "proxy-memoize": "^3.0.0", "redux-thunk": "2.4.1" @@ -35472,12 +35464,12 @@ "integrity": "sha512-UiIbmCaMx5mPOGCWdgOCfZtccMhh55jv3qzeN3qBp3YUi46uGfWY5kfCU3hWRtaQvUgO7n0XhBKTd4K/pxv9ng==" }, "plugins/ui/src/js/node_modules/@deephaven/storage": { - "version": "0.81.0", - "resolved": "https://registry.npmjs.org/@deephaven/storage/-/storage-0.81.0.tgz", - "integrity": "sha512-f6yHt5CrCV7RsdWFgaOUdiGWzHkvA1T4UFETiAp9/eUiyOdsinlxnKGydN5Heg1T0trfiBL3IZCQBEDzUb5Aog==", + "version": "0.78.0", + "resolved": "https://registry.npmjs.org/@deephaven/storage/-/storage-0.78.0.tgz", + "integrity": "sha512-+2bSIa4iaNqjv6d4v8GBtzOQduJZEMSR2W4kT48yZrItsyABnYnGdPagszgnI6CjCSXNNjJUa6SQLy/jZfSQzQ==", "dependencies": { - "@deephaven/filters": "^0.81.0", - "@deephaven/log": "^0.81.0", + "@deephaven/filters": "^0.78.0", + "@deephaven/log": "^0.78.0", "lodash.throttle": "^4.1.1" }, "engines": { @@ -35488,9 +35480,9 @@ } }, "plugins/ui/src/js/node_modules/@deephaven/utils": { - "version": "0.81.0", - "resolved": "https://registry.npmjs.org/@deephaven/utils/-/utils-0.81.0.tgz", - "integrity": "sha512-mFESX7oErF0Zcof7OXjTGbgqOzPiLeo/eedVkPxtJ0ue2UEPxUO0Ws7Xb/b61XjsVaP0u3DCpuPajs88ZPun5w==", + "version": "0.78.0", + "resolved": "https://registry.npmjs.org/@deephaven/utils/-/utils-0.78.0.tgz", + "integrity": "sha512-uQdEiQYoPHDbF1jRlliJITmxDNAYpv1CT8H2vHnTRuGevP17WpudTdUOXjq1Jas4oggpj0Q60/bu0XbxgO3QTA==", "engines": { "node": ">=16" } @@ -35545,23 +35537,6 @@ "url": "https://github.com/sponsors/mysticatea" } }, - "plugins/ui/src/js/node_modules/nanoid": { - "version": "5.0.7", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-5.0.7.tgz", - "integrity": "sha512-oLxFY2gd2IqnjcYyOXD8XGCftpGtZP2AbHbOkthDkvRywH5ayNtPVy9YlOPcHckXzbLTCHpkb7FB+yuxKV13pQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "bin": { - "nanoid": "bin/nanoid.js" - }, - "engines": { - "node": "^18 || >=20" - } - }, "plugins/ui/src/js/node_modules/redux-thunk": { "version": "2.4.1", "resolved": "https://registry.npmjs.org/redux-thunk/-/redux-thunk-2.4.1.tgz", @@ -39509,21 +39484,22 @@ "@deephaven/js-plugin-ui": { "version": "file:plugins/ui/src/js", "requires": { - "@deephaven/chart": "^0.81.1", - "@deephaven/components": "^0.81.1", - "@deephaven/dashboard": "^0.81.1", - "@deephaven/dashboard-core-plugins": "^0.81.1", - "@deephaven/grid": "^0.81.0", - "@deephaven/icons": "^0.81.0", - "@deephaven/iris-grid": "^0.81.1", - "@deephaven/jsapi-bootstrap": "^0.81.1", - "@deephaven/jsapi-components": "^0.81.1", - "@deephaven/jsapi-types": "^1.0.0-dev0.34.3", - "@deephaven/log": "^0.81.0", - "@deephaven/plugin": "^0.81.1", - "@deephaven/react-hooks": "^0.81.0", - "@deephaven/redux": "^0.81.1", - "@deephaven/utils": "^0.81.0", + "@adobe/react-spectrum": "^3.34.1", + "@deephaven/chart": "^0.78.0", + "@deephaven/components": "^0.78.0", + "@deephaven/dashboard": "^0.78.0", + "@deephaven/dashboard-core-plugins": "^0.78.0", + "@deephaven/grid": "^0.78.0", + "@deephaven/icons": "^0.78.0", + "@deephaven/iris-grid": "^0.78.0", + "@deephaven/jsapi-bootstrap": "^0.78.0", + "@deephaven/jsapi-components": "^0.78.0", + "@deephaven/jsapi-types": "^1.0.0-dev0.34.2", + "@deephaven/log": "^0.78.0", + "@deephaven/plugin": "^0.78.0", + "@deephaven/react-hooks": "^0.78.0", + "@deephaven/redux": "^0.78.0", + "@deephaven/utils": "^0.78.0", "@fortawesome/react-fontawesome": "^0.2.0", "@react-types/shared": "^3.22.0", "@types/react": "^17.0.2", @@ -39602,17 +39578,17 @@ } }, "@deephaven/chart": { - "version": "0.81.1", - "resolved": "https://registry.npmjs.org/@deephaven/chart/-/chart-0.81.1.tgz", - "integrity": "sha512-yvcOlE+Me1aUxqSECAz5a8/1vwK1ZaVtbnS+RD1Kr7DTa6SSvC6cllQMN+S/HpC9c1AXqfnIITOEsj6/70SB6Q==", + "version": "0.78.0", + "resolved": "https://registry.npmjs.org/@deephaven/chart/-/chart-0.78.0.tgz", + "integrity": "sha512-G28KsnH+p3sot94UZP+LkwpyHPBUmtwbIyaIUQQxvEA8Hr5vJlN92IkMKCWEtPFRTiHhCrHYkgfQ54SN2XyNZQ==", "requires": { - "@deephaven/components": "^0.81.1", - "@deephaven/icons": "^0.81.0", + "@deephaven/components": "^0.78.0", + "@deephaven/icons": "^0.78.0", "@deephaven/jsapi-types": "1.0.0-dev0.34.0", - "@deephaven/jsapi-utils": "^0.81.0", - "@deephaven/log": "^0.81.0", - "@deephaven/react-hooks": "^0.81.0", - "@deephaven/utils": "^0.81.0", + "@deephaven/jsapi-utils": "^0.78.0", + "@deephaven/log": "^0.78.0", + "@deephaven/react-hooks": "^0.78.0", + "@deephaven/utils": "^0.78.0", "buffer": "^6.0.3", "fast-deep-equal": "^3.1.3", "lodash.debounce": "^4.0.8", @@ -39632,20 +39608,19 @@ } }, "@deephaven/components": { - "version": "0.81.1", - "resolved": "https://registry.npmjs.org/@deephaven/components/-/components-0.81.1.tgz", - "integrity": "sha512-m270cnxIXS/nXnaqRXUhw8GJA+E8IB3lfhBaqF104AJwq3XE2D2IQUFm0mf/JVbO/sVmMjMGH4Um1SbRCcFwLA==", + "version": "0.78.0", + "resolved": "https://registry.npmjs.org/@deephaven/components/-/components-0.78.0.tgz", + "integrity": "sha512-gx+yc1ZNRb4Pa3ptilGKBypPRNVoPrIqlDb7wJeZCKX+OnMZczFZLdEn12bh0s4Dnp460VNhegG2iM5W14GBHA==", "requires": { "@adobe/react-spectrum": "3.33.1", - "@deephaven/icons": "^0.81.0", - "@deephaven/log": "^0.81.0", - "@deephaven/react-hooks": "^0.81.0", - "@deephaven/utils": "^0.81.0", + "@deephaven/icons": "^0.78.0", + "@deephaven/log": "^0.78.0", + "@deephaven/react-hooks": "^0.78.0", + "@deephaven/utils": "^0.78.0", "@fortawesome/fontawesome-svg-core": "^6.2.1", "@fortawesome/react-fontawesome": "^0.2.0", "@react-spectrum/theme-default": "^3.5.1", "@react-spectrum/utils": "^3.11.5", - "@react-types/radio": "^3.8.1", "@react-types/shared": "^3.22.1", "@react-types/textfield": "^3.9.1", "bootstrap": "4.6.2", @@ -39655,29 +39630,29 @@ "lodash.debounce": "^4.0.8", "lodash.flatten": "^4.4.0", "memoizee": "^0.4.15", - "nanoid": "^5.0.7", "popper.js": "^1.16.1", "prop-types": "^15.7.2", "react-beautiful-dnd": "^13.1.0", "react-transition-group": "^4.4.2", "react-virtualized-auto-sizer": "1.0.6", - "react-window": "^1.8.6" + "react-window": "^1.8.6", + "shortid": "^2.2.16" } }, "@deephaven/console": { - "version": "0.81.1", - "resolved": "https://registry.npmjs.org/@deephaven/console/-/console-0.81.1.tgz", - "integrity": "sha512-gWg5yB7eekLcqiWpXKyaboVDsuaVZ6ZnCR+47HQZe9mLNe33TG0nH2V8X1Ci/gYjfbDcCefA0bXAVPujP4DT8w==", - "requires": { - "@deephaven/chart": "^0.81.1", - "@deephaven/components": "^0.81.1", - "@deephaven/icons": "^0.81.0", - "@deephaven/jsapi-bootstrap": "^0.81.1", + "version": "0.78.0", + "resolved": "https://registry.npmjs.org/@deephaven/console/-/console-0.78.0.tgz", + "integrity": "sha512-mWFRwGLUAEKpyedmDFhLnvm75GDYchPmM8e4X/iG1Zna72euhar3++EDwLcjO+7IBqqDN1mU27hVoGKp0FmnNg==", + "requires": { + "@deephaven/chart": "^0.78.0", + "@deephaven/components": "^0.78.0", + "@deephaven/icons": "^0.78.0", + "@deephaven/jsapi-bootstrap": "^0.78.0", "@deephaven/jsapi-types": "1.0.0-dev0.34.0", - "@deephaven/log": "^0.81.0", - "@deephaven/react-hooks": "^0.81.0", - "@deephaven/storage": "^0.81.0", - "@deephaven/utils": "^0.81.0", + "@deephaven/log": "^0.78.0", + "@deephaven/react-hooks": "^0.78.0", + "@deephaven/storage": "^0.78.0", + "@deephaven/utils": "^0.78.0", "@fortawesome/react-fontawesome": "^0.2.0", "classnames": "^2.3.1", "linkifyjs": "^4.1.0", @@ -39686,11 +39661,11 @@ "memoize-one": "^5.1.1", "memoizee": "^0.4.15", "monaco-editor": "^0.41.0", - "nanoid": "^5.0.7", "papaparse": "5.3.2", "popper.js": "^1.16.1", "prop-types": "^15.7.2", - "shell-quote": "^1.7.2" + "shell-quote": "^1.7.2", + "shortid": "^2.2.16" }, "dependencies": { "@deephaven/jsapi-types": { @@ -39701,48 +39676,48 @@ } }, "@deephaven/dashboard": { - "version": "0.81.1", - "resolved": "https://registry.npmjs.org/@deephaven/dashboard/-/dashboard-0.81.1.tgz", - "integrity": "sha512-ftc0wG+TUbKakd0CwLWn0pK5y4OMWvadncTErHkEiEpRi4WtHUVyCDF3QtGUXt021QgqSXQ1FwiQfQSraO8qTg==", - "requires": { - "@deephaven/components": "^0.81.1", - "@deephaven/golden-layout": "^0.81.1", - "@deephaven/log": "^0.81.0", - "@deephaven/react-hooks": "^0.81.0", - "@deephaven/redux": "^0.81.1", - "@deephaven/utils": "^0.81.0", + "version": "0.78.0", + "resolved": "https://registry.npmjs.org/@deephaven/dashboard/-/dashboard-0.78.0.tgz", + "integrity": "sha512-PzlWlJrA8HiIYkpzQUjyDhPJr8vh0dvKQDX9eBM4QuWGoIk75Oo6oDUUJhmNyp8X7TilnR5rdOnOVosbs110vg==", + "requires": { + "@deephaven/components": "^0.78.0", + "@deephaven/golden-layout": "^0.78.0", + "@deephaven/log": "^0.78.0", + "@deephaven/react-hooks": "^0.78.0", + "@deephaven/redux": "^0.78.0", + "@deephaven/utils": "^0.78.0", "fast-deep-equal": "^3.1.3", "lodash.ismatch": "^4.1.1", "lodash.throttle": "^4.1.1", - "nanoid": "^5.0.7", - "prop-types": "^15.7.2" + "prop-types": "^15.7.2", + "shortid": "^2.2.16" } }, "@deephaven/dashboard-core-plugins": { - "version": "0.81.1", - "resolved": "https://registry.npmjs.org/@deephaven/dashboard-core-plugins/-/dashboard-core-plugins-0.81.1.tgz", - "integrity": "sha512-n/KQfQuS5to8XOsY/Imb1KZeLXO9vxuH+d/mQehAw5etsaRuUMaZA1hLvJVSUzkYboGNGbW55rZ+L9HKcVHTIw==", - "requires": { - "@deephaven/chart": "^0.81.1", - "@deephaven/components": "^0.81.1", - "@deephaven/console": "^0.81.1", - "@deephaven/dashboard": "^0.81.1", - "@deephaven/file-explorer": "^0.81.1", - "@deephaven/filters": "^0.81.0", - "@deephaven/golden-layout": "^0.81.1", - "@deephaven/grid": "^0.81.0", - "@deephaven/icons": "^0.81.0", - "@deephaven/iris-grid": "^0.81.1", - "@deephaven/jsapi-bootstrap": "^0.81.1", - "@deephaven/jsapi-components": "^0.81.1", + "version": "0.78.0", + "resolved": "https://registry.npmjs.org/@deephaven/dashboard-core-plugins/-/dashboard-core-plugins-0.78.0.tgz", + "integrity": "sha512-hssDMaXWRzj3KsGP4J+9Q+Ww6cW1NQBrmCvCVO3/R7DZZXCWohQFU1zPwKBxXEDk3BbGx4zc7imM/CsU5eB5cw==", + "requires": { + "@deephaven/chart": "^0.78.0", + "@deephaven/components": "^0.78.0", + "@deephaven/console": "^0.78.0", + "@deephaven/dashboard": "^0.78.0", + "@deephaven/file-explorer": "^0.78.0", + "@deephaven/filters": "^0.78.0", + "@deephaven/golden-layout": "^0.78.0", + "@deephaven/grid": "^0.78.0", + "@deephaven/icons": "^0.78.0", + "@deephaven/iris-grid": "^0.78.0", + "@deephaven/jsapi-bootstrap": "^0.78.0", + "@deephaven/jsapi-components": "^0.78.0", "@deephaven/jsapi-types": "1.0.0-dev0.34.0", - "@deephaven/jsapi-utils": "^0.81.0", - "@deephaven/log": "^0.81.0", - "@deephaven/plugin": "^0.81.1", - "@deephaven/react-hooks": "^0.81.0", - "@deephaven/redux": "^0.81.1", - "@deephaven/storage": "^0.81.0", - "@deephaven/utils": "^0.81.0", + "@deephaven/jsapi-utils": "^0.78.0", + "@deephaven/log": "^0.78.0", + "@deephaven/plugin": "^0.78.0", + "@deephaven/react-hooks": "^0.78.0", + "@deephaven/redux": "^0.78.0", + "@deephaven/storage": "^0.78.0", + "@deephaven/utils": "^0.78.0", "@fortawesome/react-fontawesome": "^0.2.0", "classnames": "^2.3.1", "fast-deep-equal": "^3.1.3", @@ -39751,14 +39726,14 @@ "lodash.throttle": "^4.1.1", "memoize-one": "^5.1.1", "memoizee": "^0.4.15", - "nanoid": "^5.0.7", "prop-types": "^15.7.2", "react-markdown": "^8.0.7", "redux": "^4.2.0", "redux-thunk": "^2.4.1", "rehype-mathjax": "^4.0.3", "remark-gfm": "^3.0.1", - "remark-math": "^5.1.1" + "remark-math": "^5.1.1", + "shortid": "^2.2.16" }, "dependencies": { "@deephaven/jsapi-types": { @@ -39769,15 +39744,15 @@ } }, "@deephaven/file-explorer": { - "version": "0.81.1", - "resolved": "https://registry.npmjs.org/@deephaven/file-explorer/-/file-explorer-0.81.1.tgz", - "integrity": "sha512-+z8JVWHMHpotST4dlA/BR7Us4XcOgo3r3l2gnTn6UF60c1D25Vuoispi2Ev8mANBKO4RekoS7BEURm6KOzqfZQ==", - "requires": { - "@deephaven/components": "^0.81.1", - "@deephaven/icons": "^0.81.0", - "@deephaven/log": "^0.81.0", - "@deephaven/storage": "^0.81.0", - "@deephaven/utils": "^0.81.0", + "version": "0.78.0", + "resolved": "https://registry.npmjs.org/@deephaven/file-explorer/-/file-explorer-0.78.0.tgz", + "integrity": "sha512-qXeDu1FB08k6g+Y+3WElWO6Iq4TryqhWlh+sw4iLx6Ey7rkpZZkFvPpdtVldVoDixgCO+3zuUwWkAYE3rO0LGg==", + "requires": { + "@deephaven/components": "^0.78.0", + "@deephaven/icons": "^0.78.0", + "@deephaven/log": "^0.78.0", + "@deephaven/storage": "^0.78.0", + "@deephaven/utils": "^0.78.0", "@fortawesome/fontawesome-svg-core": "^6.2.1", "@fortawesome/react-fontawesome": "^0.2.0", "classnames": "^2.3.1", @@ -39786,26 +39761,25 @@ } }, "@deephaven/filters": { - "version": "0.81.0", - "resolved": "https://registry.npmjs.org/@deephaven/filters/-/filters-0.81.0.tgz", - "integrity": "sha512-qRrfcSEN5lEbbmLpXhqWEDON3cBVBsRQCEdkqwSMadGm1mev0oeucAN6LiiiHxEHe/n5i9N2vrzjVpqHmDjzyA==" + "version": "0.78.0", + "resolved": "https://registry.npmjs.org/@deephaven/filters/-/filters-0.78.0.tgz", + "integrity": "sha512-0C9udzidoX99nZXxQ5UOn+zRq2dAA16ic0FvnUBBJtKKwxfuAHPIq95H4b5VHgUh6lVOG6Q432xrRSinB7wrlw==" }, "@deephaven/golden-layout": { - "version": "0.81.1", - "resolved": "https://registry.npmjs.org/@deephaven/golden-layout/-/golden-layout-0.81.1.tgz", - "integrity": "sha512-dXAUCpDE2Mtt5lAuUanqVf6MybCBdEbQaVEsdsz0tyu6joQUTR2tpiAP2pF1oyAV/6eMk712HjNNANHH5GK/5Q==", + "version": "0.78.0", + "resolved": "https://registry.npmjs.org/@deephaven/golden-layout/-/golden-layout-0.78.0.tgz", + "integrity": "sha512-TFnlrb/TIqJlUlRN3I4v5i/UMpLCbcVnD5+FVEkN1Rwnn9n/lfY4kgu3o0Cr56TLXllfdmfuEHWJY4pJpoFrlg==", "requires": { - "@deephaven/components": "^0.81.1", - "jquery": "^3.6.0", - "nanoid": "^5.0.7" + "@deephaven/components": "^0.78.0", + "jquery": "^3.6.0" } }, "@deephaven/grid": { - "version": "0.81.0", - "resolved": "https://registry.npmjs.org/@deephaven/grid/-/grid-0.81.0.tgz", - "integrity": "sha512-2vuYvVIstJVEu18eQGOArZRtKodTiWqKrv3mHb1uPznvspBd3r+TgQHPAKpdP+nckMlJ09zIGQragRGnavl//w==", + "version": "0.78.0", + "resolved": "https://registry.npmjs.org/@deephaven/grid/-/grid-0.78.0.tgz", + "integrity": "sha512-w5qC8MhS/eUJzro8lkTHe2XOw+KAnhFgqkA1RFAr4A0/T0pUha7IJhdjH0JMBYOLaik6bMCPrQDiU8GvFyJPtA==", "requires": { - "@deephaven/utils": "^0.81.0", + "@deephaven/utils": "^0.78.0", "classnames": "^2.3.1", "color-convert": "^2.0.1", "event-target-shim": "^6.0.2", @@ -39817,30 +39791,30 @@ } }, "@deephaven/icons": { - "version": "0.81.0", - "resolved": "https://registry.npmjs.org/@deephaven/icons/-/icons-0.81.0.tgz", - "integrity": "sha512-V6i7wMygcMhtnhGKY/LQEFL2qEtEBYMWjcJaeAFTpa6DgFDKakPY3cZyyURpHUtJOnalY6O5n5TC0KVlKyDkGw==", + "version": "0.78.0", + "resolved": "https://registry.npmjs.org/@deephaven/icons/-/icons-0.78.0.tgz", + "integrity": "sha512-gFR7hWghDJGgNphF9FpI0VnjCQrZ7FpQqFmxTzWTBSLWAxwRL1jR3glAR1/GbpfugE4BwuQARI+zRBU0xB4z1w==", "requires": { "@fortawesome/fontawesome-common-types": "^6.1.1" } }, "@deephaven/iris-grid": { - "version": "0.81.1", - "resolved": "https://registry.npmjs.org/@deephaven/iris-grid/-/iris-grid-0.81.1.tgz", - "integrity": "sha512-RmeVpIndkMKyXAOwWkWotlcE1zENGM45oCQa27mTc3jLel9eC97IuZKO2lNm0SSUHvw90/5gcnPOB1TeCi5OLA==", - "requires": { - "@deephaven/components": "^0.81.1", - "@deephaven/console": "^0.81.1", - "@deephaven/filters": "^0.81.0", - "@deephaven/grid": "^0.81.0", - "@deephaven/icons": "^0.81.0", - "@deephaven/jsapi-components": "^0.81.1", + "version": "0.78.0", + "resolved": "https://registry.npmjs.org/@deephaven/iris-grid/-/iris-grid-0.78.0.tgz", + "integrity": "sha512-kRjZC+aRjFlmQUSV3qcYL4BxdruxQKr4CY96FRC9pPgRztaLbU/pQHawuOp8aqydxkrpIR5eF1EVQIzPlR9piA==", + "requires": { + "@deephaven/components": "^0.78.0", + "@deephaven/console": "^0.78.0", + "@deephaven/filters": "^0.78.0", + "@deephaven/grid": "^0.78.0", + "@deephaven/icons": "^0.78.0", + "@deephaven/jsapi-components": "^0.78.0", "@deephaven/jsapi-types": "1.0.0-dev0.34.0", - "@deephaven/jsapi-utils": "^0.81.0", - "@deephaven/log": "^0.81.0", - "@deephaven/react-hooks": "^0.81.0", - "@deephaven/storage": "^0.81.0", - "@deephaven/utils": "^0.81.0", + "@deephaven/jsapi-utils": "^0.78.0", + "@deephaven/log": "^0.78.0", + "@deephaven/react-hooks": "^0.78.0", + "@deephaven/storage": "^0.78.0", + "@deephaven/utils": "^0.78.0", "@dnd-kit/core": "^6.1.0", "@dnd-kit/sortable": "^7.0.2", "@dnd-kit/utilities": "^3.2.2", @@ -39853,10 +39827,10 @@ "memoize-one": "^5.1.1", "memoizee": "^0.4.15", "monaco-editor": "^0.41.0", - "nanoid": "^5.0.7", "prop-types": "^15.7.2", "react-beautiful-dnd": "^13.1.0", - "react-transition-group": "^4.4.2" + "react-transition-group": "^4.4.2", + "shortid": "^2.2.16" }, "dependencies": { "@deephaven/jsapi-types": { @@ -39867,15 +39841,14 @@ } }, "@deephaven/jsapi-bootstrap": { - "version": "0.81.1", - "resolved": "https://registry.npmjs.org/@deephaven/jsapi-bootstrap/-/jsapi-bootstrap-0.81.1.tgz", - "integrity": "sha512-IIHfahXJ/ciV2lfuyHBGzStljEzBIoWeBeOi3emRI6iihqfNXh6Uhbxm4EAlOr6pCyDesM3PmJ9VdBvQmFqgyw==", + "version": "0.78.0", + "resolved": "https://registry.npmjs.org/@deephaven/jsapi-bootstrap/-/jsapi-bootstrap-0.78.0.tgz", + "integrity": "sha512-XeQnxcCTLH6CdycDvo4dw/gpoqOnGYQQUSAlWqHjwiR0Ep+11JBkeIZRufsT1/GBfaQDho7GtZAJ0vlgADFSow==", "requires": { - "@deephaven/components": "^0.81.1", + "@deephaven/components": "^0.78.0", "@deephaven/jsapi-types": "1.0.0-dev0.34.0", - "@deephaven/log": "^0.81.0", - "@deephaven/react-hooks": "^0.81.0", - "@deephaven/utils": "^0.81.0" + "@deephaven/log": "^0.78.0", + "@deephaven/react-hooks": "^0.78.0" }, "dependencies": { "@deephaven/jsapi-types": { @@ -39886,17 +39859,17 @@ } }, "@deephaven/jsapi-components": { - "version": "0.81.1", - "resolved": "https://registry.npmjs.org/@deephaven/jsapi-components/-/jsapi-components-0.81.1.tgz", - "integrity": "sha512-767gLERw/cqiECwCPLjIad9JKD+UBs7wXB+zAVc/L3N1gpNCZyWCFi4BKMSCCqtOSJaGJU3QoIEw8CAJCWBhdQ==", + "version": "0.78.0", + "resolved": "https://registry.npmjs.org/@deephaven/jsapi-components/-/jsapi-components-0.78.0.tgz", + "integrity": "sha512-VSQD7gvollbyQTbzW6jhIjxQplm6i5tvL/nyqY6P19W0bxCcraYGeVzoaL5XvTQo91GvQkqB6d1nltOytI3dmw==", "requires": { - "@deephaven/components": "^0.81.1", - "@deephaven/jsapi-bootstrap": "^0.81.1", + "@deephaven/components": "^0.78.0", + "@deephaven/jsapi-bootstrap": "^0.78.0", "@deephaven/jsapi-types": "1.0.0-dev0.34.0", - "@deephaven/jsapi-utils": "^0.81.0", - "@deephaven/log": "^0.81.0", - "@deephaven/react-hooks": "^0.81.0", - "@deephaven/utils": "^0.81.0", + "@deephaven/jsapi-utils": "^0.78.0", + "@deephaven/log": "^0.78.0", + "@deephaven/react-hooks": "^0.78.0", + "@deephaven/utils": "^0.78.0", "@types/js-cookie": "^3.0.3", "classnames": "^2.3.2", "js-cookie": "^3.0.5", @@ -39912,21 +39885,21 @@ } }, "@deephaven/jsapi-types": { - "version": "1.0.0-dev0.34.3", - "resolved": "https://registry.npmjs.org/@deephaven/jsapi-types/-/jsapi-types-1.0.0-dev0.34.3.tgz", - "integrity": "sha512-yJdfk5ZOQGufhe6Arx1B9fqf5F6arKST3SZ/Jtkb3hWj2SXFf+5vphQ3JuINXmuGYUAIz6BGF+yNulkNWuRafA==" + "version": "1.0.0-dev0.34.2", + "resolved": "https://registry.npmjs.org/@deephaven/jsapi-types/-/jsapi-types-1.0.0-dev0.34.2.tgz", + "integrity": "sha512-vHEP+93r2zsPPZs5hLT4I6eYw2pWqLqL7e4GSedX7K37P57+MzLtRR+eTp29o1BVwbuRpQfz6D/hSROzvw3XxQ==" }, "@deephaven/jsapi-utils": { - "version": "0.81.0", - "resolved": "https://registry.npmjs.org/@deephaven/jsapi-utils/-/jsapi-utils-0.81.0.tgz", - "integrity": "sha512-rlx7K+tCUWA0ekNa/BKUudoAb9T2+4Oitu5pIMfe0qu8SgBV7PxcUGLmKGrRMEj9ZlAHYH3ngHgYFeAFDF6cMQ==", + "version": "0.78.0", + "resolved": "https://registry.npmjs.org/@deephaven/jsapi-utils/-/jsapi-utils-0.78.0.tgz", + "integrity": "sha512-VeCCns+nkKucbQYRGOak1MisEFQzI9bJQ+pAmqXBhVxJHj5NxqRiqnyoyp1VQig6zg1dzVqUj4h5ZTHXJ1QHdw==", "requires": { - "@deephaven/filters": "^0.81.0", + "@deephaven/filters": "^0.78.0", "@deephaven/jsapi-types": "1.0.0-dev0.34.0", - "@deephaven/log": "^0.81.0", - "@deephaven/utils": "^0.81.0", + "@deephaven/log": "^0.78.0", + "@deephaven/utils": "^0.78.0", "lodash.clamp": "^4.0.3", - "nanoid": "^5.0.7" + "shortid": "^2.2.16" }, "dependencies": { "@deephaven/jsapi-types": { @@ -39937,25 +39910,25 @@ } }, "@deephaven/log": { - "version": "0.81.0", - "resolved": "https://registry.npmjs.org/@deephaven/log/-/log-0.81.0.tgz", - "integrity": "sha512-W5TgMBa7Q8W1nWrz7TElhwV4xO6+aHWrcPgH/a3Tj0oZDyYSjxRoWJ/CHx6boGrrJrkR8qpHyDuOKu9xHmxhYg==", + "version": "0.78.0", + "resolved": "https://registry.npmjs.org/@deephaven/log/-/log-0.78.0.tgz", + "integrity": "sha512-6GXUm1yjHTUWpi/p22sJ/F8yZ+l7I3jnfs9HlRjSErB7tb5jmpBXGAMTkL8oCuvvycLdx0QKcs17VJxV0saejw==", "requires": { "event-target-shim": "^6.0.2" } }, "@deephaven/plugin": { - "version": "0.81.1", - "resolved": "https://registry.npmjs.org/@deephaven/plugin/-/plugin-0.81.1.tgz", - "integrity": "sha512-3uBpOHEVN2v3k9BegZ87O6agyup8BLKeufmkBt1W3mp15fvSf15iwa8wXkj12FOXlVWWozdqqE6PDLZsWoLOXw==", - "requires": { - "@deephaven/components": "^0.81.1", - "@deephaven/golden-layout": "^0.81.1", - "@deephaven/icons": "^0.81.0", - "@deephaven/iris-grid": "^0.81.1", + "version": "0.78.0", + "resolved": "https://registry.npmjs.org/@deephaven/plugin/-/plugin-0.78.0.tgz", + "integrity": "sha512-HLE4lEA3/8ICkhgrD4N0cH2gAkQd44yftHKr6a1UeZWp/A3fheSrawzB1hjQCXsmpNf82UGuhrFyILTyWcHxwQ==", + "requires": { + "@deephaven/components": "^0.78.0", + "@deephaven/golden-layout": "^0.78.0", + "@deephaven/icons": "^0.78.0", + "@deephaven/iris-grid": "^0.78.0", "@deephaven/jsapi-types": "1.0.0-dev0.34.0", - "@deephaven/log": "^0.81.0", - "@deephaven/react-hooks": "^0.81.0", + "@deephaven/log": "^0.78.0", + "@deephaven/react-hooks": "^0.78.0", "@fortawesome/fontawesome-common-types": "^6.1.1", "@fortawesome/react-fontawesome": "^0.2.0" }, @@ -39968,27 +39941,27 @@ } }, "@deephaven/react-hooks": { - "version": "0.81.0", - "resolved": "https://registry.npmjs.org/@deephaven/react-hooks/-/react-hooks-0.81.0.tgz", - "integrity": "sha512-KmY9kDAQbbve9nfsSgkP8q0dlMGEAISmXl8bR0c/VZEbDPULXaMD4DLFWGN286uvn1hzSNy5CyAzk9MsMzrFag==", + "version": "0.78.0", + "resolved": "https://registry.npmjs.org/@deephaven/react-hooks/-/react-hooks-0.78.0.tgz", + "integrity": "sha512-ic4KTEsykk58hF/RiRaTgNWKYphH6E8jZ/XiJ5sUHFLq+p/z8RCULyQhGcsAt3DwcwRtzHr97g7FvUPxyVE2WA==", "requires": { "@adobe/react-spectrum": "3.33.1", - "@deephaven/log": "^0.81.0", - "@deephaven/utils": "^0.81.0", + "@deephaven/log": "^0.78.0", + "@deephaven/utils": "^0.78.0", "lodash.debounce": "^4.0.8", "lodash.throttle": "^4.1.1", - "nanoid": "^5.0.7" + "shortid": "^2.2.16" } }, "@deephaven/redux": { - "version": "0.81.1", - "resolved": "https://registry.npmjs.org/@deephaven/redux/-/redux-0.81.1.tgz", - "integrity": "sha512-5mHP4TTyRm9QDQ4oab4iGS6bLuAux1MLy7Qw14kBSn+lYo8ItA2NmN6MOEqzKY4ozQUyLxMvXyx+IWlVzt5Lag==", + "version": "0.78.0", + "resolved": "https://registry.npmjs.org/@deephaven/redux/-/redux-0.78.0.tgz", + "integrity": "sha512-6G2hDFzkT5hc0P3ARtTfrReXnEJytjnpLFPI2BLR7elQl8A55boQFBOG2KnS0oNiCZaJ50oE4t/CyW0bUTOHcw==", "requires": { "@deephaven/jsapi-types": "1.0.0-dev0.34.0", - "@deephaven/jsapi-utils": "^0.81.0", - "@deephaven/log": "^0.81.0", - "@deephaven/plugin": "^0.81.1", + "@deephaven/jsapi-utils": "^0.78.0", + "@deephaven/log": "^0.78.0", + "@deephaven/plugin": "^0.78.0", "fast-deep-equal": "^3.1.3", "proxy-memoize": "^3.0.0", "redux-thunk": "2.4.1" @@ -40002,19 +39975,19 @@ } }, "@deephaven/storage": { - "version": "0.81.0", - "resolved": "https://registry.npmjs.org/@deephaven/storage/-/storage-0.81.0.tgz", - "integrity": "sha512-f6yHt5CrCV7RsdWFgaOUdiGWzHkvA1T4UFETiAp9/eUiyOdsinlxnKGydN5Heg1T0trfiBL3IZCQBEDzUb5Aog==", + "version": "0.78.0", + "resolved": "https://registry.npmjs.org/@deephaven/storage/-/storage-0.78.0.tgz", + "integrity": "sha512-+2bSIa4iaNqjv6d4v8GBtzOQduJZEMSR2W4kT48yZrItsyABnYnGdPagszgnI6CjCSXNNjJUa6SQLy/jZfSQzQ==", "requires": { - "@deephaven/filters": "^0.81.0", - "@deephaven/log": "^0.81.0", + "@deephaven/filters": "^0.78.0", + "@deephaven/log": "^0.78.0", "lodash.throttle": "^4.1.1" } }, "@deephaven/utils": { - "version": "0.81.0", - "resolved": "https://registry.npmjs.org/@deephaven/utils/-/utils-0.81.0.tgz", - "integrity": "sha512-mFESX7oErF0Zcof7OXjTGbgqOzPiLeo/eedVkPxtJ0ue2UEPxUO0Ws7Xb/b61XjsVaP0u3DCpuPajs88ZPun5w==" + "version": "0.78.0", + "resolved": "https://registry.npmjs.org/@deephaven/utils/-/utils-0.78.0.tgz", + "integrity": "sha512-uQdEiQYoPHDbF1jRlliJITmxDNAYpv1CT8H2vHnTRuGevP17WpudTdUOXjq1Jas4oggpj0Q60/bu0XbxgO3QTA==" }, "buffer": { "version": "6.0.3", @@ -40043,11 +40016,6 @@ "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-6.0.2.tgz", "integrity": "sha512-8q3LsZjRezbFZ2PN+uP+Q7pnHUMmAOziU2vA2OwoFaKIXxlxl38IylhSSgUorWu/rf4er67w0ikBqjBFk/pomA==" }, - "nanoid": { - "version": "5.0.7", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-5.0.7.tgz", - "integrity": "sha512-oLxFY2gd2IqnjcYyOXD8XGCftpGtZP2AbHbOkthDkvRywH5ayNtPVy9YlOPcHckXzbLTCHpkb7FB+yuxKV13pQ==" - }, "redux-thunk": { "version": "2.4.1", "resolved": "https://registry.npmjs.org/redux-thunk/-/redux-thunk-2.4.1.tgz", @@ -47848,12 +47816,12 @@ } }, "braces": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", - "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", "dev": true, "requires": { - "fill-range": "^7.1.1" + "fill-range": "^7.0.1" } }, "browserslist": { @@ -49470,9 +49438,9 @@ } }, "enhanced-resolve": { - "version": "5.17.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.17.0.tgz", - "integrity": "sha512-dwDPwZL0dmye8Txp2gzFmA6sxALaSvdRDjPH0viLcKrtlOL3tw62nWWweVD1SdILDTJrbrL6tdWVN58Wo6U3eA==", + "version": "5.16.1", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.16.1.tgz", + "integrity": "sha512-4U5pNsuDl0EhuZpq46M5xPslstkviJuhrdobaRDBk2Jy2KO37FDAJl4lb2KlNabxT0m4MTK2UHNrsAcphE8nyw==", "dev": true, "peer": true, "requires": { @@ -50537,9 +50505,9 @@ } }, "fill-range": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", - "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", "dev": true, "requires": { "to-regex-range": "^5.0.1" @@ -50573,9 +50541,9 @@ } }, "flatted": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.1.tgz", - "integrity": "sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==", + "version": "3.2.9", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.9.tgz", + "integrity": "sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==", "dev": true }, "flatten-vertex-data": { @@ -54486,9 +54454,9 @@ "dev": true }, "known-css-properties": { - "version": "0.31.0", - "resolved": "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.31.0.tgz", - "integrity": "sha512-sBPIUGTNF0czz0mwGGUoKKJC8Q7On1GPbCSFPfyEsfHb2DyBG0Y4QtV+EVWpINSaiGKZblDNuF5AezxSgOhesQ==", + "version": "0.30.0", + "resolved": "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.30.0.tgz", + "integrity": "sha512-VSWXYUnsPu9+WYKkfmJyLKtIvaRJi1kXUqVmBACORXZQxT5oZDsoZ2vQP+bQFDnWtpI/4eq3MLoRMjI2fnLzTQ==", "dev": true, "peer": true }, @@ -56442,12 +56410,12 @@ "integrity": "sha512-ukRBgie8TIAcacscVHSiddHjO4k/q3pnedmzMQ4iwDcK0FtFCohKOlFbaOL/mPgfnPsL3C1ZyxJa4sbWrBl3jg==" }, "micromatch": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.7.tgz", - "integrity": "sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==", + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", "dev": true, "requires": { - "braces": "^3.0.3", + "braces": "^3.0.2", "picomatch": "^2.3.1" } }, @@ -58382,9 +58350,9 @@ "integrity": "sha512-ESj2+eBxhGrcA1azgHs7lARG5+5iLakc/6nlfbpjcLl00HuuUOIuORhYXN4D1HfvMSKuVtFQjAlnwi1JHEeDIw==" }, "picocolors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.1.tgz", - "integrity": "sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", "dev": true }, "picomatch": { @@ -58588,9 +58556,9 @@ "requires": {} }, "postcss-selector-parser": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.0.tgz", - "integrity": "sha512-UMz42UD0UY0EApS0ZL9o1XnLhSTtvvvLe5Dc2H2O56fvRZi+KulDyf5ctDhhtYJBGKStV2FL1fy6253cmLgqVQ==", + "version": "6.0.16", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.16.tgz", + "integrity": "sha512-A0RVJrX+IUkVZbW3ClroRWurercFhieevHB38sr2+l9eUClMqome3LmEmnhlNy+5Mr2EYN6B2Kaw9wYdd+VHiw==", "dev": true, "requires": { "cssesc": "^3.0.0", @@ -60533,17 +60501,17 @@ } }, "stylelint": { - "version": "16.6.1", - "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-16.6.1.tgz", - "integrity": "sha512-yNgz2PqWLkhH2hw6X9AweV9YvoafbAD5ZsFdKN9BvSDVwGvPh+AUIrn7lYwy1S7IHmtFin75LLfX1m0D2tHu8Q==", + "version": "16.5.0", + "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-16.5.0.tgz", + "integrity": "sha512-IlCBtVrG+qTy3v+tZTk50W8BIomjY/RUuzdrDqdnlCYwVuzXtPbiGfxYqtyYAyOMcb+195zRsuHn6tgfPmFfbw==", "dev": true, "peer": true, "requires": { - "@csstools/css-parser-algorithms": "^2.6.3", - "@csstools/css-tokenizer": "^2.3.1", - "@csstools/media-query-list-parser": "^2.1.11", - "@csstools/selector-specificity": "^3.1.1", - "@dual-bundle/import-meta-resolve": "^4.1.0", + "@csstools/css-parser-algorithms": "^2.6.1", + "@csstools/css-tokenizer": "^2.2.4", + "@csstools/media-query-list-parser": "^2.1.9", + "@csstools/selector-specificity": "^3.0.3", + "@dual-bundle/import-meta-resolve": "^4.0.0", "balanced-match": "^2.0.0", "colord": "^2.9.3", "cosmiconfig": "^9.0.0", @@ -60552,7 +60520,7 @@ "debug": "^4.3.4", "fast-glob": "^3.3.2", "fastest-levenshtein": "^1.0.16", - "file-entry-cache": "^9.0.0", + "file-entry-cache": "^8.0.0", "global-modules": "^2.0.0", "globby": "^11.1.0", "globjoin": "^0.1.4", @@ -60560,16 +60528,16 @@ "ignore": "^5.3.1", "imurmurhash": "^0.1.4", "is-plain-object": "^5.0.0", - "known-css-properties": "^0.31.0", + "known-css-properties": "^0.30.0", "mathml-tag-names": "^2.1.3", "meow": "^13.2.0", - "micromatch": "^4.0.7", + "micromatch": "^4.0.5", "normalize-path": "^3.0.0", - "picocolors": "^1.0.1", + "picocolors": "^1.0.0", "postcss": "^8.4.38", "postcss-resolve-nested-selector": "^0.1.1", "postcss-safe-parser": "^7.0.0", - "postcss-selector-parser": "^6.1.0", + "postcss-selector-parser": "^6.0.16", "postcss-value-parser": "^4.2.0", "resolve-from": "^5.0.0", "string-width": "^4.2.3", @@ -60608,23 +60576,23 @@ } }, "file-entry-cache": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-9.0.0.tgz", - "integrity": "sha512-6MgEugi8p2tiUhqO7GnPsmbCCzj0YRCwwaTbpGRyKZesjRSzkqkAE9fPp7V2yMs5hwfgbQLgdvSSkGNg1s5Uvw==", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz", + "integrity": "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==", "dev": true, "peer": true, "requires": { - "flat-cache": "^5.0.0" + "flat-cache": "^4.0.0" } }, "flat-cache": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-5.0.0.tgz", - "integrity": "sha512-JrqFmyUl2PnPi1OvLyTVHnQvwQ0S+e6lGSwu8OkAZlSaNIZciTY2H/cOOROxsBA1m/LZNHDsqAgDZt6akWcjsQ==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz", + "integrity": "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==", "dev": true, "peer": true, "requires": { - "flatted": "^3.3.1", + "flatted": "^3.2.9", "keyv": "^4.5.4" } }, @@ -60805,9 +60773,9 @@ }, "dependencies": { "ajv": { - "version": "8.16.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.16.0.tgz", - "integrity": "sha512-F0twR8U1ZU67JIEtekUcLkXkoO5mMMmgGD8sK/xUFzJ805jxHQl92hImFAqqXMyMYjSPOyUPAwHYhB72g5sTXw==", + "version": "8.13.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.13.0.tgz", + "integrity": "sha512-PRA911Blj99jR5RMeTunVbNXMF6Lp4vZXnk5GQjcnUWUTsrXtekg/pnmFFI2u/I36Y/2bITGS30GZCXei6uNkA==", "dev": true, "peer": true, "requires": { diff --git a/plugins/ui/docs/README.md b/plugins/ui/docs/README.md index c8d245d4d..8c8e5c2af 100644 --- a/plugins/ui/docs/README.md +++ b/plugins/ui/docs/README.md @@ -249,36 +249,6 @@ def ui_action_menu(): my_action_menu = ui_action_menu() ``` -## ButtonGroup - -ButtonGroup handles overflow for a grouping of buttons whose actions are related to each other. - -```python -@ui.component -def ui_button_group(): - return ui.button_group(ui.button("One"), ui.button("Two")) - - -my_button_group = ui_button_group() -``` - -## RadioGroup - -Radio buttons allow users to select a single option from a list of mutually exclusive options. All possible options are exposed up front for users to compare. - -```python -@ui.component -def ui_radio_group(): - return ui.radio_group( - ui.radio("One", value="one"), - ui.radio("Two", value="two"), - label="Radio Group", - ) - - -my_radio_group = ui_radio_group() -``` - ## Picker (string values) The `ui.picker` component can be used to select from a list of items. Here's a basic example for selecting from a list of string values and displaying the selected key in a text field. diff --git a/plugins/ui/src/deephaven/ui/components/__init__.py b/plugins/ui/src/deephaven/ui/components/__init__.py index 7f5dcdee0..7d919dbe9 100644 --- a/plugins/ui/src/deephaven/ui/components/__init__.py +++ b/plugins/ui/src/deephaven/ui/components/__init__.py @@ -1,52 +1,24 @@ -from .action_button import action_button from .action_group import action_group from .action_menu import action_menu -from .basic import ( - component_element, - grid, - heading, - icon_wrapper, - illustrated_message, - form, - switch, - tabs, - tab_list, - tab_panels, - text, - view, -) -from .button import button -from .button_group import button_group -from .checkbox import checkbox -from .column import column -from .combo_box import combo_box -from .content import content -from .contextual_help import contextual_help -from .dashboard import dashboard -from .date_picker import date_picker -from .flex import flex -from .fragment import fragment from .icon import icon -from .item import item -from .item_table_source import item_table_source -from .list_action_group import list_action_group -from .list_action_menu import list_action_menu -from .list_view import list_view from .make_component import make_component as component -from .number_field import number_field +from .fragment import fragment from .panel import panel -from .picker import picker -from .radio import radio -from .radio_group import radio_group -from .range_slider import range_slider +from .spectrum import * +from .table import table +from .dashboard import dashboard from .row import row -from .section import section -from .slider import slider +from .column import column from .stack import stack -from .table import table -from .text_field import text_field -from .toggle_button import toggle_button -from .types import * +from .picker import picker +from .action_group import action_group +from .section import section +from .action_menu import action_menu +from .item import item +from .list_view import list_view +from .list_action_group import list_action_group +from .list_action_menu import list_action_menu +from .item_table_source import item_table_source from . import html @@ -55,17 +27,14 @@ "action_button", "action_group", "action_menu", - "component_element", "button", "button_group", "checkbox", "column", - "combo_box", "component", "content", "contextual_help", "dashboard", - "date_picker", "flex", "form", "fragment", @@ -83,12 +52,11 @@ "number_field", "panel", "picker", - "radio", - "radio_group", "range_slider", "row", "section", "slider", + "spectrum_element", "stack", "switch", "table", diff --git a/plugins/ui/src/deephaven/ui/components/action_group.py b/plugins/ui/src/deephaven/ui/components/action_group.py index f167892ee..3fd4ff391 100644 --- a/plugins/ui/src/deephaven/ui/components/action_group.py +++ b/plugins/ui/src/deephaven/ui/components/action_group.py @@ -3,12 +3,14 @@ from typing import Any, Callable, Iterable -from .types import ( - # Events +from ..components.spectrum.events import ( ButtonLabelBehavior, Orientation, StaticColor, - # Layout +) +from ..elements import Element, BaseElement +from ..types import ActionGroupDensity, SelectedKeys, SelectionMode, Key, Selection +from .spectrum.layout import ( AlignSelf, CSSProperties, DimensionValue, @@ -17,9 +19,6 @@ OverflowMode, Position, ) -from .basic import component_element -from ..elements import Element -from ..types import ActionGroupDensity, SelectedKeys, SelectionMode, Key, Selection def action_group( @@ -154,8 +153,8 @@ def action_group( UNSAFE_class_name: Set the CSS className for the element. Only use as a last resort. Use style props instead. UNSAFE_style: Set the inline style for the element. Only use as a last resort. Use style props instead. """ - return component_element( - "ActionGroup", + return BaseElement( + "deephaven.ui.components.ActionGroup", *children, is_emphasized=is_emphasized, density=density, diff --git a/plugins/ui/src/deephaven/ui/components/action_menu.py b/plugins/ui/src/deephaven/ui/components/action_menu.py index 9b8601853..f3048c344 100644 --- a/plugins/ui/src/deephaven/ui/components/action_menu.py +++ b/plugins/ui/src/deephaven/ui/components/action_menu.py @@ -5,20 +5,11 @@ from .item import Item from .section import SectionElement +from .spectrum.events import TriggerType from ..types import Key, ActionKey, ActionMenuDirection -from .basic import component_element -from ..elements import Element +from ..elements import BaseElement, Element -from ..types import ( - Key, - ActionKey, - ActionMenuDirection, -) - -from .types import ( - # Events - TriggerType, - # Layout +from .spectrum import ( Alignment, AlignSelf, CSSProperties, @@ -150,8 +141,8 @@ def action_menu( UNSAFE_class_name: Set the CSS className for the element. Only use as a last resort. Use style props instead. UNSAFE_style: Set the inline style for the element. Only use as a last resort. Use style props instead. """ - return component_element( - f"ActionMenu", + return BaseElement( + f"deephaven.ui.components.ActionMenu", *children, is_disabled=is_disabled, is_quiet=is_quiet, diff --git a/plugins/ui/src/deephaven/ui/components/column.py b/plugins/ui/src/deephaven/ui/components/column.py index a869753ee..d976523c2 100644 --- a/plugins/ui/src/deephaven/ui/components/column.py +++ b/plugins/ui/src/deephaven/ui/components/column.py @@ -1,7 +1,7 @@ from __future__ import annotations from typing import Any -from .basic import component_element +from ..elements import BaseElement def column(*children: Any, width: float | None = None, **kwargs: Any): @@ -13,4 +13,6 @@ def column(*children: Any, width: float | None = None, **kwargs: Any): children: Elements to render in the column. width: The percent width of the column relative to other children of its parent. If not provided, the column will be sized automatically. """ - return component_element("Column", *children, width=width, **kwargs) + return BaseElement( + "deephaven.ui.components.Column", *children, width=width, **kwargs + ) diff --git a/plugins/ui/src/deephaven/ui/components/combo_box.py b/plugins/ui/src/deephaven/ui/components/combo_box.py index 41b21bc09..2f357ea65 100644 --- a/plugins/ui/src/deephaven/ui/components/combo_box.py +++ b/plugins/ui/src/deephaven/ui/components/combo_box.py @@ -2,7 +2,7 @@ from typing import Callable -from .types import ( +from .spectrum import ( FocusEventCallable, KeyboardEventCallable, LayoutFlex, @@ -31,7 +31,6 @@ from ..elements import BaseElement, Element from .._internal.utils import create_props, unpack_item_table_source from ..types import Key -from .basic import component_element ComboBoxElement = BaseElement @@ -240,4 +239,4 @@ def combo_box( children, props = unpack_item_table_source(children, props, SUPPORTED_SOURCE_ARGS) - return component_element("ComboBox", *children, **props) + return BaseElement("deephaven.ui.components.ComboBox", *children, **props) diff --git a/plugins/ui/src/deephaven/ui/components/date_picker.py b/plugins/ui/src/deephaven/ui/components/date_picker.py index 255ec472d..5532348a8 100644 --- a/plugins/ui/src/deephaven/ui/components/date_picker.py +++ b/plugins/ui/src/deephaven/ui/components/date_picker.py @@ -2,7 +2,7 @@ from typing import Any, Sequence, Callable -from .types import ( +from .spectrum import ( FocusEventCallable, KeyboardEventCallable, LayoutFlex, @@ -23,14 +23,13 @@ ) from ..hooks import use_memo -from ..elements import Element +from ..elements import Element, BaseElement from .._internal.utils import ( create_props, convert_date_props, convert_list_prop, ) from ..types import Date, Granularity -from .basic import component_element DatePickerElement = Element @@ -272,4 +271,4 @@ def date_picker( [unavailable_values], ) - return component_element("DatePicker", **props) + return BaseElement("deephaven.ui.components.DatePicker", **props) diff --git a/plugins/ui/src/deephaven/ui/components/fragment.py b/plugins/ui/src/deephaven/ui/components/fragment.py index a39135e76..0f5247ddc 100644 --- a/plugins/ui/src/deephaven/ui/components/fragment.py +++ b/plugins/ui/src/deephaven/ui/components/fragment.py @@ -1,7 +1,7 @@ from __future__ import annotations from typing import Any -from .basic import component_element +from ..elements import BaseElement def fragment(*children: Any): @@ -12,4 +12,4 @@ def fragment(*children: Any): Args: children: The children in the fragment. """ - return component_element("Fragment", children=children) + return BaseElement("deephaven.ui.components.Fragment", children=children) diff --git a/plugins/ui/src/deephaven/ui/components/item.py b/plugins/ui/src/deephaven/ui/components/item.py index d7482baed..b5b05e8e5 100644 --- a/plugins/ui/src/deephaven/ui/components/item.py +++ b/plugins/ui/src/deephaven/ui/components/item.py @@ -2,7 +2,6 @@ from ..elements import BaseElement from ..types import Stringable -from .basic import component_element ItemElement = BaseElement Item = Union[Stringable, ItemElement] @@ -16,4 +15,4 @@ def item(*children: Stringable, **props: Any) -> ItemElement: children: The options to render within the item. **props: Any other Item prop. """ - return component_element("Item", *children, **props) + return BaseElement("deephaven.ui.components.Item", *children, **props) diff --git a/plugins/ui/src/deephaven/ui/components/list_action_group.py b/plugins/ui/src/deephaven/ui/components/list_action_group.py index 2c35ec9a1..e48e7be2f 100644 --- a/plugins/ui/src/deephaven/ui/components/list_action_group.py +++ b/plugins/ui/src/deephaven/ui/components/list_action_group.py @@ -3,9 +3,8 @@ from numbers import Number from typing import Callable, Iterable -from .basic import component_element from .item import Item -from ..elements import Element +from ..elements import BaseElement, Element from ..types import ( Key, ActionKey, @@ -14,12 +13,7 @@ SelectionMode, Selection, ) -from .types import ( - # Events - ButtonLabelBehavior, - Orientation, - StaticColor, - # Layout +from .spectrum.layout import ( AlignSelf, CSSProperties, DimensionValue, @@ -28,6 +22,7 @@ OverflowMode, Position, ) +from .spectrum.events import ButtonLabelBehavior, Orientation, StaticColor ListActionGroupElement = Element @@ -168,8 +163,8 @@ def list_action_group( A ListActionGroup that can be used within the actions prop of a `ui.list_view` component. """ - return component_element( - "ListActionGroup", + return BaseElement( + "deephaven.ui.components.ListActionGroup", *children, on_action=on_action, on_change=on_change, diff --git a/plugins/ui/src/deephaven/ui/components/list_action_menu.py b/plugins/ui/src/deephaven/ui/components/list_action_menu.py index 95137b306..77ccb8a00 100644 --- a/plugins/ui/src/deephaven/ui/components/list_action_menu.py +++ b/plugins/ui/src/deephaven/ui/components/list_action_menu.py @@ -4,14 +4,10 @@ from typing import Callable, Iterable, Union -from .basic import component_element from .item import Item -from ..elements import Element +from ..elements import BaseElement, Element from ..types import Key, ActionKey, ActionMenuDirection -from .types import ( - # Events - TriggerType, - # Layout +from .spectrum.layout import ( AlignSelf, Alignment, CSSProperties, @@ -20,6 +16,7 @@ LayoutFlex, Position, ) +from .spectrum.events import TriggerType ListActionMenuElement = Element @@ -151,8 +148,8 @@ def list_action_menu( A ListActionMenu that can be used within the actions prop of a `ui.list_view` component. """ - return component_element( - "ListActionMenu", + return BaseElement( + "deephaven.ui.components.ListActionMenu", *children, on_action=on_action, on_open_change=on_open_change, diff --git a/plugins/ui/src/deephaven/ui/components/list_view.py b/plugins/ui/src/deephaven/ui/components/list_view.py index 173cedb3a..5bd2f50e9 100644 --- a/plugins/ui/src/deephaven/ui/components/list_view.py +++ b/plugins/ui/src/deephaven/ui/components/list_view.py @@ -5,9 +5,8 @@ from deephaven.table import Table from .item_table_source import ItemTableSource -from ..elements import Element +from ..elements import BaseElement, Element from .._internal.utils import create_props, unpack_item_table_source -from .basic import component_element from .item import Item from ..types import ListViewDensity, Selection, SelectionMode @@ -71,4 +70,4 @@ def list_view( children, props = unpack_item_table_source(children, props, SUPPORTED_SOURCE_ARGS) - return component_element("ListView", *children, **props) + return BaseElement("deephaven.ui.components.ListView", *children, **props) diff --git a/plugins/ui/src/deephaven/ui/components/panel.py b/plugins/ui/src/deephaven/ui/components/panel.py index acec3dc0a..d3c374e29 100644 --- a/plugins/ui/src/deephaven/ui/components/panel.py +++ b/plugins/ui/src/deephaven/ui/components/panel.py @@ -1,9 +1,9 @@ from __future__ import annotations from typing import Any -from .basic import component_element +from ..elements import BaseElement from .._internal.utils import create_props -from .types import ( +from .spectrum import ( Direction, Wrap, JustifyContent, @@ -57,8 +57,8 @@ def panel( """ children, props = create_props(locals()) - return component_element( - "Panel", + return BaseElement( + "deephaven.ui.components.Panel", *children, **props, ) diff --git a/plugins/ui/src/deephaven/ui/components/picker.py b/plugins/ui/src/deephaven/ui/components/picker.py index 9472b39b2..b5366ed4e 100644 --- a/plugins/ui/src/deephaven/ui/components/picker.py +++ b/plugins/ui/src/deephaven/ui/components/picker.py @@ -3,7 +3,6 @@ from typing import Callable, Any from deephaven.table import Table, PartitionedTable -from .basic import component_element from .section import SectionElement, Item from .item_table_source import ItemTableSource from ..elements import BaseElement @@ -64,4 +63,4 @@ def picker( children, props = unpack_item_table_source(children, props, SUPPORTED_SOURCE_ARGS) - return component_element("Picker", *children, **props) + return BaseElement("deephaven.ui.components.Picker", *children, **props) diff --git a/plugins/ui/src/deephaven/ui/components/radio.py b/plugins/ui/src/deephaven/ui/components/radio.py deleted file mode 100644 index 4b3d32520..000000000 --- a/plugins/ui/src/deephaven/ui/components/radio.py +++ /dev/null @@ -1,14 +0,0 @@ -from .basic import component_element - -# TODO: Add pydocs #515 -def radio(*children, **props): - """ - Radio buttons allow users to select a single option from a list of mutually - exclusive options. All possible options are exposed up front for users to - compare. - - Args: - children: The label for the Radio. Accepts any renderable node. - **props: Any other Radio props. - """ - return component_element(f"Radio", *children, **props) diff --git a/plugins/ui/src/deephaven/ui/components/radio_group.py b/plugins/ui/src/deephaven/ui/components/radio_group.py deleted file mode 100644 index fb82e6d8a..000000000 --- a/plugins/ui/src/deephaven/ui/components/radio_group.py +++ /dev/null @@ -1,14 +0,0 @@ -from .basic import component_element - -# TODO: Add pydocs #514 -def radio_group(*children, **props): - """ - Radio buttons allow users to select a single option from a list of mutually - exclusive options. All possible options are exposed up front for users to - compare. - - Args: - children: The Radio(s) contained within the RadioGroup. - **props: Any other RadioGroup props. - """ - return component_element(f"RadioGroup", *children, **props) diff --git a/plugins/ui/src/deephaven/ui/components/row.py b/plugins/ui/src/deephaven/ui/components/row.py index 6b1cd8c60..46700867b 100644 --- a/plugins/ui/src/deephaven/ui/components/row.py +++ b/plugins/ui/src/deephaven/ui/components/row.py @@ -1,7 +1,7 @@ from __future__ import annotations from typing import Any -from .basic import component_element +from ..elements import BaseElement def row(*children: Any, height: float | None = None, **kwargs: Any): @@ -13,4 +13,6 @@ def row(*children: Any, height: float | None = None, **kwargs: Any): children: Elements to render in the row. height: The percent height of the row relative to other children of its parent. If not provided, the row will be sized automatically. """ - return component_element("Row", *children, height=height, **kwargs) + return BaseElement( + "deephaven.ui.components.Row", *children, height=height, **kwargs + ) diff --git a/plugins/ui/src/deephaven/ui/components/section.py b/plugins/ui/src/deephaven/ui/components/section.py index 3aa17674a..d3cb7eb03 100644 --- a/plugins/ui/src/deephaven/ui/components/section.py +++ b/plugins/ui/src/deephaven/ui/components/section.py @@ -3,8 +3,7 @@ from typing import Any from .._internal.utils import create_props -from ..elements import Element -from .basic import component_element +from ..elements import Element, BaseElement from .item import Item SectionElement = Element @@ -25,4 +24,4 @@ def section(*children: Item, title: str | None = None, **props: Any) -> SectionE children, props = create_props(locals()) - return component_element("Section", *children, **props) + return BaseElement("deephaven.ui.components.Section", *children, **props) diff --git a/plugins/ui/src/deephaven/ui/components/spectrum/__init__.py b/plugins/ui/src/deephaven/ui/components/spectrum/__init__.py new file mode 100644 index 000000000..3d6ea30cb --- /dev/null +++ b/plugins/ui/src/deephaven/ui/components/spectrum/__init__.py @@ -0,0 +1,16 @@ +from .action_button import * +from .basic import * +from .button_group import * +from .button import * +from .checkbox import * +from .content import * +from .contextual_help import * +from .number_field import * +from .range_slider import * +from .slider import * +from .text_field import * +from .toggle_button import * +from .flex import * +from .date_picker import * +from .combo_box import * +from .layout import * diff --git a/plugins/ui/src/deephaven/ui/components/types/accessibility.py b/plugins/ui/src/deephaven/ui/components/spectrum/accessibility.py similarity index 100% rename from plugins/ui/src/deephaven/ui/components/types/accessibility.py rename to plugins/ui/src/deephaven/ui/components/spectrum/accessibility.py diff --git a/plugins/ui/src/deephaven/ui/components/action_button.py b/plugins/ui/src/deephaven/ui/components/spectrum/action_button.py similarity index 97% rename from plugins/ui/src/deephaven/ui/components/action_button.py rename to plugins/ui/src/deephaven/ui/components/spectrum/action_button.py index 3f31fc5dc..d8d99d9b2 100644 --- a/plugins/ui/src/deephaven/ui/components/action_button.py +++ b/plugins/ui/src/deephaven/ui/components/spectrum/action_button.py @@ -1,17 +1,14 @@ from __future__ import annotations from typing import Any, Callable -from .types import ( - # Accessibility - AriaExpanded, - AriaHasPopup, - AriaPressed, - # Events +from .accessibility import AriaExpanded, AriaHasPopup, AriaPressed +from .events import ( ButtonType, FocusEventCallable, KeyboardEventCallable, PressEventCallable, StaticColor, - # Layout +) +from .layout import ( AlignSelf, CSSProperties, DimensionValue, @@ -20,9 +17,8 @@ Number, Position, ) - -from .basic import component_element -from ..elements import Element +from .basic import spectrum_element +from ...elements import Element ActionButtonElement = Element @@ -163,7 +159,7 @@ def action_button( UNSAFE_class_name: A CSS class to apply to the element. UNSAFE_style: A CSS style to apply to the element. """ - return component_element( + return spectrum_element( "ActionButton", *children, type=type, diff --git a/plugins/ui/src/deephaven/ui/components/basic.py b/plugins/ui/src/deephaven/ui/components/spectrum/basic.py similarity index 68% rename from plugins/ui/src/deephaven/ui/components/basic.py rename to plugins/ui/src/deephaven/ui/components/spectrum/basic.py index 6c7bfdca0..184b61d7d 100644 --- a/plugins/ui/src/deephaven/ui/components/basic.py +++ b/plugins/ui/src/deephaven/ui/components/spectrum/basic.py @@ -1,15 +1,14 @@ from __future__ import annotations from typing import Any -from ..elements import BaseElement +from ...elements import BaseElement -def component_element(name: str, /, *children: Any, **props: Any) -> BaseElement: +def spectrum_element(name: str, /, *children: Any, **props: Any) -> BaseElement: """ - Base class for UI elements. - All names are automatically prefixed with "deephaven.ui.components.", and - all props are automatically camelCased. + Base class for UI elements that are part of the Spectrum design system. + All names are automatically prefixed with "deephaven.ui.spectrum.", and all props are automatically camelCased. """ - return BaseElement(f"deephaven.ui.components.{name}", *children, **props) + return BaseElement(f"deephaven.ui.spectrum.{name}", *children, **props) def grid(*children, **props): @@ -17,7 +16,7 @@ def grid(*children, **props): Python implementation for the Adobe React Spectrum Grid component. https://react-spectrum.adobe.com/react-spectrum/Grid.html """ - return component_element("Grid", *children, **props) + return spectrum_element("Grid", *children, **props) def heading(*children, **props): @@ -25,7 +24,7 @@ def heading(*children, **props): Python implementation for the Adobe React Spectrum Heading component. https://react-spectrum.adobe.com/react-spectrum/Heading.html """ - return component_element("Heading", *children, **props) + return spectrum_element("Heading", *children, **props) def icon_wrapper(*children, **props): @@ -34,9 +33,8 @@ def icon_wrapper(*children, **props): Named icon_wrapper so as not to conflict with the Deephaven icon component. TODO: This doesn't seem to work correctly. It throws an error saying `Cannot read properties of undefined (reading 'className')`. https://react-spectrum.adobe.com/react-spectrum/Icon.html - https://github.com/deephaven/deephaven-plugins/issues/526 """ - return component_element("Icon", *children, **props) + return spectrum_element("Icon", *children, **props) def illustrated_message(*children, **props): @@ -44,7 +42,7 @@ def illustrated_message(*children, **props): Python implementation for the Adobe React Spectrum IllustratedMessage component. https://react-spectrum.adobe.com/react-spectrum/IllustratedMessage.html """ - return component_element("IllustratedMessage", *children, **props) + return spectrum_element("IllustratedMessage", *children, **props) def form(*children, **props): @@ -52,7 +50,7 @@ def form(*children, **props): Python implementation for the Adobe React Spectrum Form component. https://react-spectrum.adobe.com/react-spectrum/Form.html """ - return component_element("Form", *children, **props) + return spectrum_element("Form", *children, **props) def switch(*children, **props): @@ -60,7 +58,7 @@ def switch(*children, **props): Python implementation for the Adobe React Spectrum Switch component. https://react-spectrum.adobe.com/react-spectrum/Switch.html """ - return component_element("Switch", *children, **props) + return spectrum_element("Switch", *children, **props) def tabs(*children, **props): @@ -68,7 +66,7 @@ def tabs(*children, **props): Python implementation for the Adobe React Spectrum Tabs component. https://react-spectrum.adobe.com/react-spectrum/Tabs.html """ - return component_element("Tabs", *children, **props) + return spectrum_element("Tabs", *children, **props) def tab_list(*children, **props): @@ -76,7 +74,7 @@ def tab_list(*children, **props): Python implementation for the Adobe React Spectrum TabList component. https://react-spectrum.adobe.com/react-spectrum/Tabs.html """ - return component_element("TabList", *children, **props) + return spectrum_element("TabList", *children, **props) def tab_panels(*children, **props): @@ -84,7 +82,7 @@ def tab_panels(*children, **props): Python implementation for the Adobe React Spectrum TabPanels component. https://react-spectrum.adobe.com/react-spectrum/Tabs.html """ - return component_element("TabPanels", *children, **props) + return spectrum_element("TabPanels", *children, **props) def text(*children, **props): @@ -92,7 +90,7 @@ def text(*children, **props): Python implementation for the Adobe React Spectrum Text component. https://react-spectrum.adobe.com/react-spectrum/Text.html """ - return component_element("Text", *children, **props) + return spectrum_element("Text", *children, **props) def view(*children, **props): @@ -100,4 +98,4 @@ def view(*children, **props): Python implementation for the Adobe React Spectrum View component. https://react-spectrum.adobe.com/react-spectrum/View.html """ - return component_element("View", *children, **props) + return spectrum_element("View", *children, **props) diff --git a/plugins/ui/src/deephaven/ui/components/button.py b/plugins/ui/src/deephaven/ui/components/spectrum/button.py similarity index 97% rename from plugins/ui/src/deephaven/ui/components/button.py rename to plugins/ui/src/deephaven/ui/components/spectrum/button.py index d13d7cab6..d9cb8ed38 100644 --- a/plugins/ui/src/deephaven/ui/components/button.py +++ b/plugins/ui/src/deephaven/ui/components/spectrum/button.py @@ -1,11 +1,7 @@ from __future__ import annotations from typing import Any, Callable -from .types import ( - # Accessibility - AriaExpanded, - AriaHasPopup, - AriaPressed, - # Events +from .accessibility import AriaExpanded, AriaHasPopup, AriaPressed +from .events import ( ButtonType, ButtonVariant, ButtonStyle, @@ -14,7 +10,8 @@ PressEventCallable, StaticColor, ElementTypes, - # Layout +) +from .layout import ( AlignSelf, CSSProperties, DimensionValue, @@ -23,8 +20,8 @@ Number, Position, ) -from .basic import component_element -from ..elements import Element +from .basic import spectrum_element +from ...elements import Element def button( @@ -175,7 +172,7 @@ def button( UNSAFE_style: A CSS style to apply to the element. """ - return component_element( + return spectrum_element( "Button", *children, variant=variant, diff --git a/plugins/ui/src/deephaven/ui/components/button_group.py b/plugins/ui/src/deephaven/ui/components/spectrum/button_group.py similarity index 94% rename from plugins/ui/src/deephaven/ui/components/button_group.py rename to plugins/ui/src/deephaven/ui/components/spectrum/button_group.py index 8f08d78ad..0751aa7e8 100644 --- a/plugins/ui/src/deephaven/ui/components/button_group.py +++ b/plugins/ui/src/deephaven/ui/components/spectrum/button_group.py @@ -1,9 +1,15 @@ from __future__ import annotations -from typing import Any -from .types import ( - # Events +from typing import Any, Callable +from .accessibility import AriaExpanded, AriaHasPopup, AriaPressed +from .events import ( + ButtonType, + FocusEventCallable, + KeyboardEventCallable, + PressEventCallable, + StaticColor, Orientation, - # Layout +) +from .layout import ( AlignSelf, CSSProperties, DimensionValue, @@ -12,8 +18,8 @@ Number, Position, ) -from .basic import component_element -from ..elements import Element +from .basic import spectrum_element +from ...elements import Element def button_group( @@ -103,7 +109,7 @@ def button_group( UNSAFE_class_name: Set the CSS className for the element. Only use as a last resort. Use style props instead. UNSAFE_style: Set the inline style for the element. Only use as a last resort. Use style props instead. """ - return component_element( + return spectrum_element( "ButtonGroup", *children, is_disabled=is_disabled, diff --git a/plugins/ui/src/deephaven/ui/components/checkbox.py b/plugins/ui/src/deephaven/ui/components/spectrum/checkbox.py similarity index 97% rename from plugins/ui/src/deephaven/ui/components/checkbox.py rename to plugins/ui/src/deephaven/ui/components/spectrum/checkbox.py index e9818d780..6ebd480f9 100644 --- a/plugins/ui/src/deephaven/ui/components/checkbox.py +++ b/plugins/ui/src/deephaven/ui/components/spectrum/checkbox.py @@ -1,11 +1,15 @@ from __future__ import annotations from typing import Any, Callable - -from .types import ( - # Events +from .accessibility import AriaExpanded, AriaHasPopup, AriaPressed +from .events import ( + ButtonType, FocusEventCallable, KeyboardEventCallable, - # Layout + PressEventCallable, + StaticColor, + Orientation, +) +from .layout import ( AlignSelf, CSSProperties, DimensionValue, @@ -13,9 +17,10 @@ LayoutFlex, Number, Position, + LabelPosition, ) -from .basic import component_element -from ..elements import Element +from .basic import spectrum_element +from ...elements import Element def checkbox( @@ -156,7 +161,7 @@ def checkbox( UNSAFE_style: A CSS style to apply to the element. """ - return component_element( + return spectrum_element( "Checkbox", children=children, is_emphasized=is_emphasized, diff --git a/plugins/ui/src/deephaven/ui/components/types/combo_box.py b/plugins/ui/src/deephaven/ui/components/spectrum/combo_box.py similarity index 100% rename from plugins/ui/src/deephaven/ui/components/types/combo_box.py rename to plugins/ui/src/deephaven/ui/components/spectrum/combo_box.py diff --git a/plugins/ui/src/deephaven/ui/components/content.py b/plugins/ui/src/deephaven/ui/components/spectrum/content.py similarity index 94% rename from plugins/ui/src/deephaven/ui/components/content.py rename to plugins/ui/src/deephaven/ui/components/spectrum/content.py index dd7e27130..74c450c16 100644 --- a/plugins/ui/src/deephaven/ui/components/content.py +++ b/plugins/ui/src/deephaven/ui/components/spectrum/content.py @@ -1,7 +1,15 @@ from __future__ import annotations from typing import Any, Callable -from .types import ( - # Layout +from .accessibility import AriaExpanded, AriaHasPopup, AriaPressed +from .events import ( + ButtonType, + FocusEventCallable, + KeyboardEventCallable, + PressEventCallable, + StaticColor, + Orientation, +) +from .layout import ( AlignSelf, CSSProperties, DimensionValue, @@ -9,9 +17,10 @@ LayoutFlex, Number, Position, + LabelPosition, ) -from .basic import component_element -from ..elements import Element +from .basic import spectrum_element +from ...elements import Element def content( @@ -101,7 +110,7 @@ def content( UNSAFE_class_name: A CSS class to apply to the element. UNSAFE_style: A CSS style to apply to the element. """ - return component_element( + return spectrum_element( "Content", children=children, flex=flex, diff --git a/plugins/ui/src/deephaven/ui/components/contextual_help.py b/plugins/ui/src/deephaven/ui/components/spectrum/contextual_help.py similarity index 97% rename from plugins/ui/src/deephaven/ui/components/contextual_help.py rename to plugins/ui/src/deephaven/ui/components/spectrum/contextual_help.py index 95e3cc155..6055e384d 100644 --- a/plugins/ui/src/deephaven/ui/components/contextual_help.py +++ b/plugins/ui/src/deephaven/ui/components/spectrum/contextual_help.py @@ -1,10 +1,8 @@ from __future__ import annotations from numbers import Number from typing import Any, Callable -from .types import ( - # Validation - ContextualHelperVariant, - # Layout +from .validate import ContextualHelperVariant +from .layout import ( AlignSelf, CSSProperties, DimensionValue, @@ -13,8 +11,8 @@ Placement, Position, ) -from .basic import component_element -from ..elements import Element +from .basic import spectrum_element +from ...elements import Element def contextual_help( @@ -129,7 +127,7 @@ def contextual_help( UNSAFE_class_name: Set the CSS className for the element. Only use as a last resort. Use style props instead. UNSAFE_style: Set the inline style for the element. Only use as a last resort. Use style props instead. """ - return component_element( + return spectrum_element( "ContextualHelp", *children, variant=variant, diff --git a/plugins/ui/src/deephaven/ui/components/types/date_picker.py b/plugins/ui/src/deephaven/ui/components/spectrum/date_picker.py similarity index 100% rename from plugins/ui/src/deephaven/ui/components/types/date_picker.py rename to plugins/ui/src/deephaven/ui/components/spectrum/date_picker.py diff --git a/plugins/ui/src/deephaven/ui/components/types/events.py b/plugins/ui/src/deephaven/ui/components/spectrum/events.py similarity index 100% rename from plugins/ui/src/deephaven/ui/components/types/events.py rename to plugins/ui/src/deephaven/ui/components/spectrum/events.py diff --git a/plugins/ui/src/deephaven/ui/components/flex.py b/plugins/ui/src/deephaven/ui/components/spectrum/flex.py similarity index 95% rename from plugins/ui/src/deephaven/ui/components/flex.py rename to plugins/ui/src/deephaven/ui/components/spectrum/flex.py index c8388a40a..0eb365e03 100644 --- a/plugins/ui/src/deephaven/ui/components/flex.py +++ b/plugins/ui/src/deephaven/ui/components/spectrum/flex.py @@ -1,7 +1,7 @@ from __future__ import annotations from typing import Any -from .basic import component_element -from .types import ( +from .basic import spectrum_element +from .layout import ( LayoutFlex, Direction, Wrap, @@ -40,7 +40,7 @@ def flex( column_gap: The space to display between columns of children. row_gap: The space to display between rows of children. """ - return component_element( + return spectrum_element( "Flex", *children, flex=flex, diff --git a/plugins/ui/src/deephaven/ui/components/types/layout.py b/plugins/ui/src/deephaven/ui/components/spectrum/layout.py similarity index 100% rename from plugins/ui/src/deephaven/ui/components/types/layout.py rename to plugins/ui/src/deephaven/ui/components/spectrum/layout.py diff --git a/plugins/ui/src/deephaven/ui/components/number_field.py b/plugins/ui/src/deephaven/ui/components/spectrum/number_field.py similarity index 98% rename from plugins/ui/src/deephaven/ui/components/number_field.py rename to plugins/ui/src/deephaven/ui/components/spectrum/number_field.py index 6a13ad07d..906aad2fb 100644 --- a/plugins/ui/src/deephaven/ui/components/number_field.py +++ b/plugins/ui/src/deephaven/ui/components/spectrum/number_field.py @@ -1,13 +1,11 @@ from __future__ import annotations from typing import Any, Callable -from .types import ( - # Events + +from .events import ( FocusEventCallable, KeyboardEventCallable, - # Validation - TextFieldValidationState, - NecessityIndicator, - # Layout +) +from .layout import ( AlignSelf, CSSProperties, DimensionValue, @@ -18,8 +16,12 @@ LabelPosition, Align, ) -from .basic import component_element -from ..elements import Element +from .validate import ( + TextFieldValidationState, + NecessityIndicator, +) +from .basic import spectrum_element +from ...elements import Element def number_field( @@ -178,7 +180,7 @@ def number_field( UNSAFE_style: A CSS style to apply to the element. """ - return component_element( + return spectrum_element( "NumberField", is_quiet=is_quiet, hide_stepper=hide_stepper, diff --git a/plugins/ui/src/deephaven/ui/components/range_slider.py b/plugins/ui/src/deephaven/ui/components/spectrum/range_slider.py similarity index 98% rename from plugins/ui/src/deephaven/ui/components/range_slider.py rename to plugins/ui/src/deephaven/ui/components/spectrum/range_slider.py index 9587abe95..1310319e4 100644 --- a/plugins/ui/src/deephaven/ui/components/range_slider.py +++ b/plugins/ui/src/deephaven/ui/components/spectrum/range_slider.py @@ -1,11 +1,11 @@ from __future__ import annotations from typing import Any, Callable -from .types import ( - # Events +from .events import ( SliderChange, SliderChangeCallable, Orientation, - # Layout +) +from .layout import ( AlignSelf, CSSProperties, DimensionValue, @@ -15,8 +15,8 @@ Position, LabelPosition, ) -from .basic import component_element -from ..elements import Element +from .basic import spectrum_element +from ...elements import Element def range_slider( @@ -146,7 +146,7 @@ def range_slider( UNSAFE_class_name: A CSS class to apply to the element. UNSAFE_style: A CSS style to apply to the element. """ - return component_element( + return spectrum_element( "RangeSlider", start_name=start_name, end_name=end_name, diff --git a/plugins/ui/src/deephaven/ui/components/slider.py b/plugins/ui/src/deephaven/ui/components/spectrum/slider.py similarity index 96% rename from plugins/ui/src/deephaven/ui/components/slider.py rename to plugins/ui/src/deephaven/ui/components/spectrum/slider.py index e15f8675f..92aafbbe6 100644 --- a/plugins/ui/src/deephaven/ui/components/slider.py +++ b/plugins/ui/src/deephaven/ui/components/spectrum/slider.py @@ -1,9 +1,15 @@ from __future__ import annotations from typing import Any, Callable -from .types import ( - # Events +from .accessibility import AriaExpanded, AriaHasPopup, AriaPressed +from .events import ( + ButtonType, + FocusEventCallable, + KeyboardEventCallable, + PressEventCallable, + StaticColor, Orientation, - # Layout +) +from .layout import ( AlignSelf, CSSProperties, DimensionValue, @@ -13,8 +19,8 @@ Position, LabelPosition, ) -from .basic import component_element -from ..elements import Element +from .basic import spectrum_element +from ...elements import Element def slider( @@ -146,7 +152,7 @@ def slider( UNSAFE_class_name: A CSS class to apply to the element. UNSAFE_style: A CSS style to apply to the element. """ - return component_element( + return spectrum_element( "Slider", is_filled=is_filled, fill_offset=fill_offset, diff --git a/plugins/ui/src/deephaven/ui/components/text_field.py b/plugins/ui/src/deephaven/ui/components/spectrum/text_field.py similarity index 98% rename from plugins/ui/src/deephaven/ui/components/text_field.py rename to plugins/ui/src/deephaven/ui/components/spectrum/text_field.py index e8b84a99f..9635317fa 100644 --- a/plugins/ui/src/deephaven/ui/components/text_field.py +++ b/plugins/ui/src/deephaven/ui/components/spectrum/text_field.py @@ -1,13 +1,11 @@ from __future__ import annotations from typing import Any, Callable -from .types import ( - # Accessibility - AriaHasPopup, - AriaAutoComplete, - # Events +from .accessibility import AriaExpanded, AriaHasPopup, AriaAutoComplete +from .events import ( FocusEventCallable, KeyboardEventCallable, - # Layout +) +from .layout import ( AlignSelf, CSSProperties, DimensionValue, @@ -17,14 +15,15 @@ Position, LabelPosition, Align, - # Validation +) +from .validate import ( TextFieldType, TextFieldInputMode, TextFieldValidationState, NecessityIndicator, ) -from .basic import component_element -from ..elements import Element +from .basic import spectrum_element +from ...elements import Element def text_field( @@ -189,7 +188,7 @@ def text_field( UNSAFE_style: A CSS style to apply to the element. """ - return component_element( + return spectrum_element( "TextField", icon=icon, is_quiet=is_quiet, diff --git a/plugins/ui/src/deephaven/ui/components/toggle_button.py b/plugins/ui/src/deephaven/ui/components/spectrum/toggle_button.py similarity index 97% rename from plugins/ui/src/deephaven/ui/components/toggle_button.py rename to plugins/ui/src/deephaven/ui/components/spectrum/toggle_button.py index d86ce2ba5..cf56fc405 100644 --- a/plugins/ui/src/deephaven/ui/components/toggle_button.py +++ b/plugins/ui/src/deephaven/ui/components/spectrum/toggle_button.py @@ -1,17 +1,14 @@ from __future__ import annotations from typing import Any, Callable -from .types import ( - # Accessibility - AriaExpanded, - AriaHasPopup, - AriaPressed, - # Events +from .accessibility import AriaExpanded, AriaHasPopup, AriaPressed +from .events import ( ButtonType, FocusEventCallable, KeyboardEventCallable, PressEventCallable, StaticColor, - # Layout +) +from .layout import ( AlignSelf, CSSProperties, DimensionValue, @@ -20,8 +17,8 @@ Number, Position, ) -from .basic import component_element -from ..elements import Element +from .basic import spectrum_element +from ...elements import Element def toggle_button( @@ -168,7 +165,7 @@ def toggle_button( UNSAFE_style: A CSS style to apply to the element. """ - return component_element( + return spectrum_element( "ToggleButton", *children, is_emphasized=is_emphasized, diff --git a/plugins/ui/src/deephaven/ui/components/types/validate.py b/plugins/ui/src/deephaven/ui/components/spectrum/validate.py similarity index 100% rename from plugins/ui/src/deephaven/ui/components/types/validate.py rename to plugins/ui/src/deephaven/ui/components/spectrum/validate.py diff --git a/plugins/ui/src/deephaven/ui/components/stack.py b/plugins/ui/src/deephaven/ui/components/stack.py index d3e42cc75..9687145e9 100644 --- a/plugins/ui/src/deephaven/ui/components/stack.py +++ b/plugins/ui/src/deephaven/ui/components/stack.py @@ -1,7 +1,7 @@ from __future__ import annotations from typing import Any -from .basic import component_element +from ..elements import BaseElement def stack( @@ -20,8 +20,8 @@ def stack( height: The percent height of the stack relative to other children of its parent. If not provided, the stack will be sized automatically. width: The percent width of the stack relative to other children of its parent. If not provided, the stack will be sized automatically. """ - return component_element( - "Stack", + return BaseElement( + "deephaven.ui.components.Stack", *children, height=height, width=width, diff --git a/plugins/ui/src/deephaven/ui/components/types/__init__.py b/plugins/ui/src/deephaven/ui/components/types/__init__.py deleted file mode 100644 index 6d701a1f6..000000000 --- a/plugins/ui/src/deephaven/ui/components/types/__init__.py +++ /dev/null @@ -1,6 +0,0 @@ -from .accessibility import * -from .combo_box import * -from .date_picker import * -from .events import * -from .layout import * -from .validate import * diff --git a/plugins/ui/src/js/package.json b/plugins/ui/src/js/package.json index 7da3ee411..3e2699d21 100644 --- a/plugins/ui/src/js/package.json +++ b/plugins/ui/src/js/package.json @@ -41,21 +41,22 @@ "react-dom": "^17.0.2" }, "dependencies": { - "@deephaven/chart": "^0.81.1", - "@deephaven/components": "^0.81.1", - "@deephaven/dashboard": "^0.81.1", - "@deephaven/dashboard-core-plugins": "^0.81.1", - "@deephaven/grid": "^0.81.0", - "@deephaven/icons": "^0.81.0", - "@deephaven/iris-grid": "^0.81.1", - "@deephaven/jsapi-bootstrap": "^0.81.1", - "@deephaven/jsapi-components": "^0.81.1", - "@deephaven/jsapi-types": "^1.0.0-dev0.34.3", - "@deephaven/log": "^0.81.0", - "@deephaven/plugin": "^0.81.1", - "@deephaven/react-hooks": "^0.81.0", - "@deephaven/redux": "^0.81.1", - "@deephaven/utils": "^0.81.0", + "@adobe/react-spectrum": "^3.34.1", + "@deephaven/chart": "^0.78.0", + "@deephaven/components": "^0.78.0", + "@deephaven/dashboard": "^0.78.0", + "@deephaven/dashboard-core-plugins": "^0.78.0", + "@deephaven/grid": "^0.78.0", + "@deephaven/icons": "^0.78.0", + "@deephaven/iris-grid": "^0.78.0", + "@deephaven/jsapi-bootstrap": "^0.78.0", + "@deephaven/jsapi-components": "^0.78.0", + "@deephaven/jsapi-types": "^1.0.0-dev0.34.2", + "@deephaven/log": "^0.78.0", + "@deephaven/plugin": "^0.78.0", + "@deephaven/react-hooks": "^0.78.0", + "@deephaven/redux": "^0.78.0", + "@deephaven/utils": "^0.78.0", "@fortawesome/react-fontawesome": "^0.2.0", "@react-types/shared": "^3.22.0", "classnames": "^2.5.1", diff --git a/plugins/ui/src/js/src/elements/ElementConstants.ts b/plugins/ui/src/js/src/elements/ElementConstants.ts index 6fffd69de..24383121a 100644 --- a/plugins/ui/src/js/src/elements/ElementConstants.ts +++ b/plugins/ui/src/js/src/elements/ElementConstants.ts @@ -31,8 +31,6 @@ export const ELEMENT_NAME = { listActionMenu: uiComponentName('ListActionMenu'), listView: uiComponentName('ListView'), picker: uiComponentName('Picker'), - radio: uiComponentName('Radio'), - radioGroup: uiComponentName('RadioGroup'), section: uiComponentName('Section'), } as const; diff --git a/plugins/ui/src/js/src/elements/IconElementView.tsx b/plugins/ui/src/js/src/elements/IconElementView.tsx index 930e338ad..64edc1ce0 100644 --- a/plugins/ui/src/js/src/elements/IconElementView.tsx +++ b/plugins/ui/src/js/src/elements/IconElementView.tsx @@ -1,5 +1,5 @@ import React from 'react'; -import { Icon } from '@deephaven/components'; +import { Icon } from '@adobe/react-spectrum'; import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; import { getIcon, IconElementNode } from './IconElementUtils'; import { ELEMENT_KEY } from './ElementUtils'; diff --git a/plugins/ui/src/js/src/elements/Radio.tsx b/plugins/ui/src/js/src/elements/Radio.tsx deleted file mode 100644 index 313f5c2a3..000000000 --- a/plugins/ui/src/js/src/elements/Radio.tsx +++ /dev/null @@ -1,40 +0,0 @@ -import { - Radio as DHRadio, - RadioProps as DHRadioProps, -} from '@deephaven/components'; -import { - SerializedFocusEventProps, - SerializedKeyboardEventProps, -} from './SerializedPropTypes'; -import { useFocusEventCallback } from './spectrum/useFocusEventCallback'; -import { useKeyboardEventCallback } from './spectrum/useKeyboardEventCallback'; - -export type SerializedRadioProps = SerializedFocusEventProps< - SerializedKeyboardEventProps ->; - -function Radio({ - onFocus: serializedOnFocus, - onBlur: serializedOnBlur, - onKeyDown: serializedOnKeyDown, - onKeyUp: serializedOnKeyUp, - ...props -}: SerializedRadioProps): JSX.Element { - const onFocus = useFocusEventCallback(serializedOnFocus); - const onBlur = useFocusEventCallback(serializedOnBlur); - const onKeyDown = useKeyboardEventCallback(serializedOnKeyDown); - const onKeyUp = useKeyboardEventCallback(serializedOnKeyUp); - - return ( - - ); -} - -export default Radio; diff --git a/plugins/ui/src/js/src/elements/RadioGroup.tsx b/plugins/ui/src/js/src/elements/RadioGroup.tsx deleted file mode 100644 index b44031e55..000000000 --- a/plugins/ui/src/js/src/elements/RadioGroup.tsx +++ /dev/null @@ -1,39 +0,0 @@ -import { - RadioGroup as DHRadioGroup, - RadioGroupProps as DHRadioGroupProps, -} from '@deephaven/components'; -import { Orientation } from '@react-types/shared'; -import { SerializedFocusEventProps } from './SerializedPropTypes'; -import { useFocusEventCallback } from './spectrum/useFocusEventCallback'; - -export type SerializedRadioGroupProps = Omit< - SerializedFocusEventProps, - 'orientation' -> & { - orientation?: Orientation | Uppercase; -}; - -function RadioGroup({ - onFocus: serializedOnFocus, - onBlur: serializedOnBlur, - orientation: orientationMaybeUppercase, - ...props -}: SerializedRadioGroupProps): JSX.Element { - const onFocus = useFocusEventCallback(serializedOnFocus); - const onBlur = useFocusEventCallback(serializedOnBlur); - const orientationLc = orientationMaybeUppercase?.toLowerCase() as - | Orientation - | undefined; - - return ( - - ); -} - -export default RadioGroup; diff --git a/plugins/ui/src/js/src/elements/SerializedPropTypes.ts b/plugins/ui/src/js/src/elements/SerializedPropTypes.ts deleted file mode 100644 index ad8a8ecb7..000000000 --- a/plugins/ui/src/js/src/elements/SerializedPropTypes.ts +++ /dev/null @@ -1,48 +0,0 @@ -import { SerializedFocusEventCallback } from './spectrum/useFocusEventCallback'; -import { SerializedKeyboardEventCallback } from './spectrum/useKeyboardEventCallback'; -import { SerializedPressEventCallback } from './spectrum/usePressEventCallback'; - -export type SerializedFocusEventProps = Omit & { - /** Handler that is called when the element receives focus. */ - onFocus?: SerializedFocusEventCallback; - - /** Handler that is called when the element loses focus. */ - onBlur?: SerializedFocusEventCallback; -}; - -export type SerializedKeyboardEventProps = Omit< - T, - 'onKeyDown' | 'onKeyUp' -> & { - /** Handler that is called when a key is pressed */ - onKeyDown?: SerializedKeyboardEventCallback; - - /** Handler that is called when a key is released */ - onKeyUp?: SerializedKeyboardEventCallback; -}; - -export type SerializedPressEventProps = Omit< - T, - 'onPress' | 'onPressStart' | 'onPressEnd' | 'onPressUp' -> & { - /** Handler that is called when the press is released over the target. */ - onPress?: SerializedPressEventCallback; - - /** Handler that is called when a press interaction starts. */ - onPressStart?: SerializedPressEventCallback; - /** - * Handler that is called when a press interaction ends, either - * over the target or when the pointer leaves the target. - */ - onPressEnd?: SerializedPressEventCallback; - - /** - * Handler that is called when a press is released over the target, regardless of - * whether it started on the target or not. - */ - onPressUp?: SerializedPressEventCallback; -}; - -export type SerializedButtonEventProps = SerializedFocusEventProps< - SerializedKeyboardEventProps> ->; diff --git a/plugins/ui/src/js/src/elements/SpectrumElementUtils.ts b/plugins/ui/src/js/src/elements/SpectrumElementUtils.ts index ffb624b3b..d070f9d04 100644 --- a/plugins/ui/src/js/src/elements/SpectrumElementUtils.ts +++ b/plugins/ui/src/js/src/elements/SpectrumElementUtils.ts @@ -1,14 +1,18 @@ +import { ButtonGroup, Checkbox } from '@adobe/react-spectrum'; import { ValueOf } from '@deephaven/utils'; import { - ButtonGroup, + ActionGroup, + ActionMenu, Content, ContextualHelp, Grid, Heading, Icon, + Item, IllustratedMessage, + ListActionGroup, + ListActionMenu, NumberField, - SpectrumCheckbox as Checkbox, Switch, Tabs, TabList, @@ -28,12 +32,12 @@ import { } from './spectrum'; import { ELEMENT_KEY, ElementNode, isElementNode } from './ElementUtils'; -// TODO: #425 will be removing Spectrum utils altogether. Just keeping this for -// now to keep the initial PR smaller. -export const SPECTRUM_ELEMENT_TYPE_PREFIX = 'deephaven.ui.components.'; +export const SPECTRUM_ELEMENT_TYPE_PREFIX = 'deephaven.ui.spectrum.'; export const SpectrumSupportedTypes = { ActionButton, + ActionGroup, + ActionMenu, Button, ButtonGroup, Checkbox, @@ -45,7 +49,10 @@ export const SpectrumSupportedTypes = { Heading, Icon, IllustratedMessage, + ListActionGroup, + ListActionMenu, NumberField, + Item, RangeSlider, Slider, Switch, @@ -73,16 +80,11 @@ export type SpectrumElementNode = ElementNode; export function isSpectrumElementNode( obj: unknown ): obj is SpectrumElementNode { - if (!isElementNode(obj)) { - return false; - } - - const name = (obj as SpectrumElementNode)[ELEMENT_KEY]; - return ( - name.startsWith(SPECTRUM_ELEMENT_TYPE_PREFIX) && - name.substring(SPECTRUM_ELEMENT_TYPE_PREFIX.length) in - SpectrumSupportedTypes + isElementNode(obj) && + (obj as SpectrumElementNode)[ELEMENT_KEY].startsWith( + SPECTRUM_ELEMENT_TYPE_PREFIX + ) ); } diff --git a/plugins/ui/src/js/src/elements/spectrum/ActionButton.tsx b/plugins/ui/src/js/src/elements/spectrum/ActionButton.tsx index 064fce34a..89ab5cdfc 100644 --- a/plugins/ui/src/js/src/elements/spectrum/ActionButton.tsx +++ b/plugins/ui/src/js/src/elements/spectrum/ActionButton.tsx @@ -3,11 +3,10 @@ import { ActionButton as DHCActionButton, ActionButtonProps as DHCActionButtonProps, } from '@deephaven/components'; -import { useButtonProps } from './useButtonProps'; -import { SerializedButtonEventProps } from '../SerializedPropTypes'; +import { SerializedButtonEventProps, useButtonProps } from './useButtonProps'; function ActionButton( - props: SerializedButtonEventProps + props: DHCActionButtonProps & SerializedButtonEventProps ): JSX.Element { const buttonProps = useButtonProps(props); diff --git a/plugins/ui/src/js/src/elements/spectrum/Button.tsx b/plugins/ui/src/js/src/elements/spectrum/Button.tsx index d6643c359..7db01e1b5 100644 --- a/plugins/ui/src/js/src/elements/spectrum/Button.tsx +++ b/plugins/ui/src/js/src/elements/spectrum/Button.tsx @@ -1,10 +1,12 @@ import React from 'react'; -import { SpectrumButton, SpectrumButtonProps } from '@deephaven/components'; -import { useButtonProps } from './useButtonProps'; -import { SerializedButtonEventProps } from '../SerializedPropTypes'; +import { + Button as SpectrumButton, + SpectrumButtonProps, +} from '@adobe/react-spectrum'; +import { SerializedButtonEventProps, useButtonProps } from './useButtonProps'; function Button( - props: SerializedButtonEventProps + props: SpectrumButtonProps & SerializedButtonEventProps ): JSX.Element { const buttonProps = useButtonProps(props); diff --git a/plugins/ui/src/js/src/elements/spectrum/useButtonProps.ts b/plugins/ui/src/js/src/elements/spectrum/useButtonProps.ts index a7f67fd81..d0daa1297 100644 --- a/plugins/ui/src/js/src/elements/spectrum/useButtonProps.ts +++ b/plugins/ui/src/js/src/elements/spectrum/useButtonProps.ts @@ -1,11 +1,52 @@ -import { usePressEventCallback } from './usePressEventCallback'; -import { useFocusEventCallback } from './useFocusEventCallback'; -import { useKeyboardEventCallback } from './useKeyboardEventCallback'; +import { + SerializedPressEventCallback, + usePressEventCallback, +} from './usePressEventCallback'; +import { + SerializedFocusEventCallback, + useFocusEventCallback, +} from './useFocusEventCallback'; +import { + SerializedKeyboardEventCallback, + useKeyboardEventCallback, +} from './useKeyboardEventCallback'; import { mapSpectrumProps } from './mapSpectrumProps'; -import { SerializedButtonEventProps } from '../SerializedPropTypes'; + +export type SerializedButtonEventProps = { + /** Handler that is called when the press is released over the target. */ + onPress?: SerializedPressEventCallback; + + /** Handler that is called when a press interaction starts. */ + onPressStart?: SerializedPressEventCallback; + /** + * Handler that is called when a press interaction ends, either + * over the target or when the pointer leaves the target. + */ + onPressEnd?: SerializedPressEventCallback; + + /** + * Handler that is called when a press is released over the target, regardless of + * whether it started on the target or not. + */ + onPressUp?: SerializedPressEventCallback; + + /** Handler that is called when the element receives focus. */ + onFocus?: SerializedFocusEventCallback; + + /** Handler that is called when the element loses focus. */ + onBlur?: SerializedFocusEventCallback; + + /** Handler that is called when a key is pressed */ + onKeyDown?: SerializedKeyboardEventCallback; + + /** Handler that is called when a key is released */ + onKeyUp?: SerializedKeyboardEventCallback; +}; // returns SpectrumButtonProps -export function useButtonProps(props: SerializedButtonEventProps): T { +export function useButtonProps( + props: SerializedButtonEventProps & T +): T & SerializedButtonEventProps { const { onPress: propOnPress, onPressStart: propsOnPressStart, @@ -37,7 +78,5 @@ export function useButtonProps(props: SerializedButtonEventProps): T { onKeyDown, onKeyUp, ...mapSpectrumProps(otherProps), - } as T; + } as T & SerializedButtonEventProps; } - -export default useButtonProps; diff --git a/plugins/ui/src/js/src/elements/spectrum/useSelectionProps.ts b/plugins/ui/src/js/src/elements/spectrum/useSelectionProps.ts index cd5a91634..b802626b2 100644 --- a/plugins/ui/src/js/src/elements/spectrum/useSelectionProps.ts +++ b/plugins/ui/src/js/src/elements/spectrum/useSelectionProps.ts @@ -80,9 +80,8 @@ export function useSelectionProps({ onChange: serializedOnChange, onSelectionChange: serializedOnSelectionChange, }: SerializedSelectionProps): SelectionProps { - const selectionModeLc = selectionModeMaybeUppercase?.toLowerCase() as - | SelectionMode - | undefined; + const selectionModeLc = + selectionModeMaybeUppercase?.toLowerCase() as SelectionMode; const onChange = useSelectionEventCallback(serializedOnChange); const onSelectionChange = useSelectionEventCallback( diff --git a/plugins/ui/src/js/src/elements/useListViewProps.ts b/plugins/ui/src/js/src/elements/useListViewProps.ts index 53df13fed..467030437 100644 --- a/plugins/ui/src/js/src/elements/useListViewProps.ts +++ b/plugins/ui/src/js/src/elements/useListViewProps.ts @@ -37,13 +37,13 @@ export type SerializedListViewProps = ( * @returns Wrapped props */ export function useListViewProps({ - density: densityMaybeUppercase, + density, selectionMode: selectionModeMaybeUppercase, onChange: serializedOnChange, onSelectionChange: serializedOnSelectionChange, ...otherProps }: SerializedListViewProps): DHListViewProps | WrappedDHListViewJSApiProps { - const densityLc = densityMaybeUppercase?.toLowerCase() as Density | undefined; + const densityLc = density?.toLowerCase() as Density; const { selectionMode, onChange, onSelectionChange } = useSelectionProps({ selectionMode: selectionModeMaybeUppercase, diff --git a/plugins/ui/src/js/src/widget/WidgetUtils.tsx b/plugins/ui/src/js/src/widget/WidgetUtils.tsx index 524e6f763..76c1ed142 100644 --- a/plugins/ui/src/js/src/widget/WidgetUtils.tsx +++ b/plugins/ui/src/js/src/widget/WidgetUtils.tsx @@ -34,8 +34,6 @@ import Dashboard from '../layout/Dashboard'; import ListView from '../elements/ListView'; import Picker from '../elements/Picker'; import ActionGroup from '../elements/ActionGroup'; -import Radio from '../elements/Radio'; -import RadioGroup from '../elements/RadioGroup'; /* * Map element node names to their corresponding React components @@ -60,8 +58,6 @@ export const elementComponentMap = { [ELEMENT_NAME.listActionMenu]: ListActionMenu, [ELEMENT_NAME.listView]: ListView, [ELEMENT_NAME.picker]: Picker, - [ELEMENT_NAME.radio]: Radio, - [ELEMENT_NAME.radioGroup]: RadioGroup, [ELEMENT_NAME.section]: Section, } as const satisfies Record, unknown>; diff --git a/plugins/ui/src/js/vite.config.ts b/plugins/ui/src/js/vite.config.ts index 9a1abb16f..f64b5e9f1 100644 --- a/plugins/ui/src/js/vite.config.ts +++ b/plugins/ui/src/js/vite.config.ts @@ -17,6 +17,7 @@ export default defineConfig(({ mode }) => ({ 'react-dom', 'redux', 'react-redux', + '@adobe/react-spectrum', '@deephaven/chart', '@deephaven/components', '@deephaven/dashboard', diff --git a/tests/app.d/tests.app b/tests/app.d/tests.app index 6fe8afd7f..43694c37f 100644 --- a/tests/app.d/tests.app +++ b/tests/app.d/tests.app @@ -6,4 +6,3 @@ name=Plugins Test Application file_0=express.py file_1=matplotlib.py file_2=ui.py -file_3=ui_render_all.py \ No newline at end of file diff --git a/tests/app.d/ui_render_all.py b/tests/app.d/ui_render_all.py deleted file mode 100644 index 3d138a3c5..000000000 --- a/tests/app.d/ui_render_all.py +++ /dev/null @@ -1,137 +0,0 @@ -# This file is used as a high level way to ensure all UI components render -# without error. We should add more robust tests that reflect all of our -# examples as suggested by #417 -from deephaven import ui, empty_table - -icon_names = ["vsAccount"] -columns = [ - "Id=new Integer(i)", - "Display=new String(`Display `+i)", - "Description=new String(`Description `+i)", - "Icon=(String) icon_names[0]", -] -_column_types = empty_table(20).update(columns) - -_item_table_source_with_icons = ui.item_table_source( - _column_types, - key_column="Id", - label_column="Display", - icon_column="Icon", -) - -_item_table_source_with_action_group = ui.item_table_source( - _column_types, - key_column="Id", - label_column="Display", - icon_column="Icon", - actions=ui.list_action_group( - ui.item("Edit"), - ui.item("Delete"), - ), -) - -_item_table_source_with_action_menu = ui.item_table_source( - _column_types, - key_column="Id", - label_column="Display", - icon_column="Icon", - actions=ui.list_action_menu( - ui.item("Edit"), - ui.item("Delete"), - ), -) - - -@ui.component -def ui_components(): - return ( - ui.action_button("Action Button"), - ui.action_group("Aaa", "Bbb", "Ccc"), - ui.action_menu("Aaa", "Bbb", "Ccc"), - ui.button_group(ui.button("One"), ui.button("Two")), - ui.button("Button"), - ui.checkbox("Checkbox"), - ui.column("Column child A", "Column child B", "Column child C"), - # TODO: #201 ui.combo_box("Combo Box"), - ui.content("Content"), - ui.contextual_help("Contextual Help"), - # TODO: #367 ui.date_picker("Date Picker"), - ui.flex("Flex default child A", "Flex default child B"), - ui.flex("Flex column child A", "Flex column child B", direction="column"), - ui.form("Form"), - ui.fragment("Fragment"), - ui.grid("Grid A", "Grid B"), - ui.heading("Heading"), - ui.icon("vsSymbolMisc"), - # TODO: #526 ui.icon_wrapper("TODO: fix this"), - ui.illustrated_message(ui.icon("vsSymbolMisc"), "Illustrated Message"), - ui.list_view( - _item_table_source_with_action_group, - aria_label="List View - List action group", - min_height="size-1600", - ), - ui.list_view( - _item_table_source_with_action_menu, - aria_label="List View - List action menu", - min_height="size-1600", - ), - ui.number_field("Number Field", aria_label="Number field"), - ui.picker( - "Aaa", - "Bbb", - ui.section("Ccc", "Ddd", title="Section A"), - aria_label="Picker with Section", - ), - ui.picker( - _item_table_source_with_icons, aria_label="Picker", default_selected_key=15 - ), - ui.radio_group( - ui.radio("One", value="one"), - ui.radio("Two", value="two"), - label="Radio Group", - orientation="HORIZONTAL", - ), - ui.range_slider(default_value={"start": 10, "end": 99}, label="Range Slider"), - ui.row("Row child A", "Row child B"), - ui.slider( - label="Slider", - default_value=40, - min_value=-100.0, - max_value=100.0, - step=0.1, - ), - ui.switch("Switch"), - # TODO: #191 - # ui.tab_list("Tab List"), - # ui.tab_panels("Tab Panels"), - # ui.tabs("Tabs"), - ui.text("Text"), - ui.text_field( - ui.icon("vsSymbolMisc"), default_value="Text Field", label="Text Field" - ), - ui.toggle_button( - ui.icon("vsBell"), - "By Exchange", - ), - ui.view("View"), - ) - - -@ui.component -def ui_html_elements(): - # TODO: render other ui.html elements #417 - ui.html.div("div"), - - -_my_components = ui_components() -_my_html_elements = ui_html_elements() - -ui_render_all = ui.dashboard( - ui.stack( - ui.panel( - ui.table(_column_types), - ui.grid(_my_components, _my_html_elements, columns=["1fr", "1fr", "1fr"]), - title="Panel B", - ), - ) -) diff --git a/tests/ui.spec.ts b/tests/ui.spec.ts index 4ba733207..30c387a08 100644 --- a/tests/ui.spec.ts +++ b/tests/ui.spec.ts @@ -1,41 +1,34 @@ import { expect, test } from '@playwright/test'; import { openPanel, gotoPage } from './utils'; -const selector = { - REACT_PANEL_VISIBLE: '.dh-react-panel:visible', - REACT_PANEL_OVERLAY: '.dh-react-panel-overlay', -}; - test('UI loads', async ({ page }) => { await gotoPage(page, ''); - await openPanel(page, 'ui_component', selector.REACT_PANEL_VISIBLE); - await expect(page.locator(selector.REACT_PANEL_VISIBLE)).toHaveScreenshot(); + await openPanel(page, 'ui_component', '.dh-react-panel'); + await expect(page.locator('.dh-react-panel')).toHaveScreenshot(); }); test('boom component shows an error in a panel', async ({ page }) => { await gotoPage(page, ''); - await openPanel(page, 'ui_boom', selector.REACT_PANEL_VISIBLE); - await expect(page.locator(selector.REACT_PANEL_VISIBLE)).toBeVisible(); + await openPanel(page, 'ui_boom', '.dh-react-panel'); + await expect(page.locator('.dh-react-panel')).toBeVisible(); await expect( - page - .locator(selector.REACT_PANEL_VISIBLE) - .getByText('Exception', { exact: true }) + page.locator('.dh-react-panel').getByText('Exception', { exact: true }) ).toBeVisible(); await expect( page - .locator(selector.REACT_PANEL_VISIBLE) + .locator('.dh-react-panel') .getByText('BOOM! Traceback (most recent call last)') ).toBeVisible(); - await expect(page.locator(selector.REACT_PANEL_OVERLAY)).not.toBeVisible(); + await expect(page.locator('.dh-react-panel-overlay')).not.toBeVisible(); }); test('boom counter component shows error overlay after clicking the button twice', async ({ page, }) => { await gotoPage(page, ''); - await openPanel(page, 'ui_boom_counter', selector.REACT_PANEL_VISIBLE); + await openPanel(page, 'ui_boom_counter', '.dh-react-panel'); - const panelLocator = page.locator(selector.REACT_PANEL_VISIBLE); + const panelLocator = page.locator('.dh-react-panel'); let btn = await panelLocator.getByRole('button', { name: 'Count is 0' }); await expect(btn).toBeVisible(); @@ -45,7 +38,7 @@ test('boom counter component shows error overlay after clicking the button twice await expect(btn).toBeVisible(); btn.click(); - const overlayLocator = page.locator(selector.REACT_PANEL_OVERLAY); + const overlayLocator = page.locator('.dh-react-panel-overlay'); await expect( overlayLocator.getByText('ValueError', { exact: true }) @@ -54,9 +47,3 @@ test('boom counter component shows error overlay after clicking the button twice overlayLocator.getByText('BOOM! Traceback (most recent call last)') ).toBeVisible(); }); - -test('UI all components render', async ({ page }) => { - await gotoPage(page, ''); - await openPanel(page, 'ui_render_all', selector.REACT_PANEL_VISIBLE); - await expect(page.locator(selector.REACT_PANEL_VISIBLE)).toHaveScreenshot(); -}); diff --git a/tests/ui.spec.ts-snapshots/UI-all-components-render-1-chromium-linux.png b/tests/ui.spec.ts-snapshots/UI-all-components-render-1-chromium-linux.png deleted file mode 100644 index 1172b696f..000000000 Binary files a/tests/ui.spec.ts-snapshots/UI-all-components-render-1-chromium-linux.png and /dev/null differ diff --git a/tests/ui.spec.ts-snapshots/UI-all-components-render-1-firefox-linux.png b/tests/ui.spec.ts-snapshots/UI-all-components-render-1-firefox-linux.png deleted file mode 100644 index 92294a517..000000000 Binary files a/tests/ui.spec.ts-snapshots/UI-all-components-render-1-firefox-linux.png and /dev/null differ diff --git a/tests/ui.spec.ts-snapshots/UI-all-components-render-1-webkit-linux.png b/tests/ui.spec.ts-snapshots/UI-all-components-render-1-webkit-linux.png deleted file mode 100644 index 377493e73..000000000 Binary files a/tests/ui.spec.ts-snapshots/UI-all-components-render-1-webkit-linux.png and /dev/null differ