From 3502f0294e91537d81db2ce0a18309b832a6aa5c Mon Sep 17 00:00:00 2001 From: Mike Bender Date: Thu, 13 Jun 2024 16:03:31 -0400 Subject: [PATCH] revert: "revert: Revert some changes that are not compatible with v0.78 (#550)" (#551) - This reverts commit 27414e190920346ed6c7dc00d0a7fbce1c326c55. - Adds back the following reverted changes: - **Revert "refactor: Cleanup component mappings and utils (python side) (#523)"** - **Revert "feat: Make RadioGroup orientation prop case insensitive (#536)"** - **Revert "feat: ui.checkbox, ui.button, ui.button_group, ui.radio, ui.radio_group, ui.icon (#512)"** - **Revert "chore: Update DH packages to ^0.81.1 jsapi-types to ^1.0.0-dev0.34.3 (#511)"** --- jest.config.base.cjs | 2 +- package-lock.json | 980 +++++++++--------- plugins/ui/docs/README.md | 30 + .../src/deephaven/ui/components/__init__.py | 62 +- .../{spectrum => }/action_button.py | 18 +- .../deephaven/ui/components/action_group.py | 15 +- .../deephaven/ui/components/action_menu.py | 19 +- .../ui/components/{spectrum => }/basic.py | 34 +- .../ui/components/{spectrum => }/button.py | 17 +- .../components/{spectrum => }/button_group.py | 20 +- .../ui/components/{spectrum => }/checkbox.py | 19 +- .../ui/src/deephaven/ui/components/column.py | 6 +- .../src/deephaven/ui/components/combo_box.py | 5 +- .../ui/components/{spectrum => }/content.py | 19 +- .../{spectrum => }/contextual_help.py | 12 +- .../deephaven/ui/components/date_picker.py | 7 +- .../ui/components/{spectrum => }/flex.py | 6 +- .../src/deephaven/ui/components/fragment.py | 4 +- .../ui/src/deephaven/ui/components/item.py | 3 +- .../ui/components/list_action_group.py | 15 +- .../ui/components/list_action_menu.py | 13 +- .../src/deephaven/ui/components/list_view.py | 5 +- .../components/{spectrum => }/number_field.py | 20 +- .../ui/src/deephaven/ui/components/panel.py | 8 +- .../ui/src/deephaven/ui/components/picker.py | 3 +- .../ui/src/deephaven/ui/components/radio.py | 14 + .../deephaven/ui/components/radio_group.py | 14 + .../components/{spectrum => }/range_slider.py | 12 +- plugins/ui/src/deephaven/ui/components/row.py | 6 +- .../ui/src/deephaven/ui/components/section.py | 5 +- .../ui/components/{spectrum => }/slider.py | 18 +- .../ui/components/spectrum/__init__.py | 16 - .../ui/src/deephaven/ui/components/stack.py | 6 +- .../components/{spectrum => }/text_field.py | 19 +- .../{spectrum => }/toggle_button.py | 17 +- .../deephaven/ui/components/types/__init__.py | 6 + .../{spectrum => types}/accessibility.py | 0 .../{spectrum => types}/combo_box.py | 0 .../{spectrum => types}/date_picker.py | 0 .../components/{spectrum => types}/events.py | 0 .../components/{spectrum => types}/layout.py | 0 .../{spectrum => types}/validate.py | 0 plugins/ui/src/js/package.json | 31 +- .../src/js/src/elements/ElementConstants.ts | 2 + .../src/js/src/elements/IconElementView.tsx | 2 +- plugins/ui/src/js/src/elements/Radio.tsx | 40 + plugins/ui/src/js/src/elements/RadioGroup.tsx | 39 + .../js/src/elements/SerializedPropTypes.ts | 48 + .../js/src/elements/SpectrumElementUtils.ts | 30 +- .../js/src/elements/spectrum/ActionButton.tsx | 5 +- .../src/js/src/elements/spectrum/Button.tsx | 10 +- .../src/elements/spectrum/useButtonProps.ts | 55 +- .../elements/spectrum/useSelectionProps.ts | 5 +- .../src/js/src/elements/useListViewProps.ts | 4 +- plugins/ui/src/js/src/widget/WidgetUtils.tsx | 4 + plugins/ui/src/js/vite.config.ts | 1 - tests/app.d/tests.app | 1 + tests/app.d/ui_render_all.py | 137 +++ tests/ui.spec.ts | 33 +- ...all-components-render-1-chromium-linux.png | Bin 0 -> 75826 bytes ...-all-components-render-1-firefox-linux.png | Bin 0 -> 102413 bytes ...I-all-components-render-1-webkit-linux.png | Bin 0 -> 71785 bytes 62 files changed, 1141 insertions(+), 781 deletions(-) rename plugins/ui/src/deephaven/ui/components/{spectrum => }/action_button.py (97%) rename plugins/ui/src/deephaven/ui/components/{spectrum => }/basic.py (68%) rename plugins/ui/src/deephaven/ui/components/{spectrum => }/button.py (97%) rename plugins/ui/src/deephaven/ui/components/{spectrum => }/button_group.py (94%) rename plugins/ui/src/deephaven/ui/components/{spectrum => }/checkbox.py (97%) rename plugins/ui/src/deephaven/ui/components/{spectrum => }/content.py (94%) rename plugins/ui/src/deephaven/ui/components/{spectrum => }/contextual_help.py (97%) rename plugins/ui/src/deephaven/ui/components/{spectrum => }/flex.py (95%) rename plugins/ui/src/deephaven/ui/components/{spectrum => }/number_field.py (98%) create mode 100644 plugins/ui/src/deephaven/ui/components/radio.py create mode 100644 plugins/ui/src/deephaven/ui/components/radio_group.py rename plugins/ui/src/deephaven/ui/components/{spectrum => }/range_slider.py (98%) rename plugins/ui/src/deephaven/ui/components/{spectrum => }/slider.py (96%) delete mode 100644 plugins/ui/src/deephaven/ui/components/spectrum/__init__.py rename plugins/ui/src/deephaven/ui/components/{spectrum => }/text_field.py (98%) rename plugins/ui/src/deephaven/ui/components/{spectrum => }/toggle_button.py (97%) create mode 100644 plugins/ui/src/deephaven/ui/components/types/__init__.py rename plugins/ui/src/deephaven/ui/components/{spectrum => types}/accessibility.py (100%) rename plugins/ui/src/deephaven/ui/components/{spectrum => types}/combo_box.py (100%) rename plugins/ui/src/deephaven/ui/components/{spectrum => types}/date_picker.py (100%) rename plugins/ui/src/deephaven/ui/components/{spectrum => types}/events.py (100%) rename plugins/ui/src/deephaven/ui/components/{spectrum => types}/layout.py (100%) rename plugins/ui/src/deephaven/ui/components/{spectrum => types}/validate.py (100%) create mode 100644 plugins/ui/src/js/src/elements/Radio.tsx create mode 100644 plugins/ui/src/js/src/elements/RadioGroup.tsx create mode 100644 plugins/ui/src/js/src/elements/SerializedPropTypes.ts create mode 100644 tests/app.d/ui_render_all.py create mode 100644 tests/ui.spec.ts-snapshots/UI-all-components-render-1-chromium-linux.png create mode 100644 tests/ui.spec.ts-snapshots/UI-all-components-render-1-firefox-linux.png create mode 100644 tests/ui.spec.ts-snapshots/UI-all-components-render-1-webkit-linux.png diff --git a/jest.config.base.cjs b/jest.config.base.cjs index 3ca0a57f1..cf5744ce0 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)/)', + '/node_modules/(?!(@deephaven|monaco-editor|d3-interpolate|d3-color|nanoid)/)', ], moduleNameMapper: { 'theme-([^/]+?)\\.css(\\?(?:inline|raw))?$': path.join( diff --git a/package-lock.json b/package-lock.json index 86e983e74..b9c818be8 100644 --- a/package-lock.json +++ b/package-lock.json @@ -13928,12 +13928,12 @@ } }, "node_modules/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", "dev": true, "dependencies": { - "fill-range": "^7.0.1" + "fill-range": "^7.1.1" }, "engines": { "node": ">=8" @@ -16002,9 +16002,9 @@ } }, "node_modules/enhanced-resolve": { - "version": "5.16.1", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.16.1.tgz", - "integrity": "sha512-4U5pNsuDl0EhuZpq46M5xPslstkviJuhrdobaRDBk2Jy2KO37FDAJl4lb2KlNabxT0m4MTK2UHNrsAcphE8nyw==", + "version": "5.17.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.17.0.tgz", + "integrity": "sha512-dwDPwZL0dmye8Txp2gzFmA6sxALaSvdRDjPH0viLcKrtlOL3tw62nWWweVD1SdILDTJrbrL6tdWVN58Wo6U3eA==", "dev": true, "peer": true, "dependencies": { @@ -17410,9 +17410,9 @@ } }, "node_modules/fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", "dev": true, "dependencies": { "to-regex-range": "^5.0.1" @@ -17461,9 +17461,9 @@ } }, "node_modules/flatted": { - "version": "3.2.9", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.9.tgz", - "integrity": "sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==", + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.1.tgz", + "integrity": "sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==", "dev": true }, "node_modules/flatten-vertex-data": { @@ -22629,9 +22629,9 @@ } }, "node_modules/known-css-properties": { - "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==", + "version": "0.31.0", + "resolved": "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.31.0.tgz", + "integrity": "sha512-sBPIUGTNF0czz0mwGGUoKKJC8Q7On1GPbCSFPfyEsfHb2DyBG0Y4QtV+EVWpINSaiGKZblDNuF5AezxSgOhesQ==", "dev": true, "peer": true }, @@ -25468,12 +25468,12 @@ } }, "node_modules/micromatch": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", - "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.7.tgz", + "integrity": "sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==", "dev": true, "dependencies": { - "braces": "^3.0.2", + "braces": "^3.0.3", "picomatch": "^2.3.1" }, "engines": { @@ -27976,9 +27976,9 @@ "integrity": "sha512-ESj2+eBxhGrcA1azgHs7lARG5+5iLakc/6nlfbpjcLl00HuuUOIuORhYXN4D1HfvMSKuVtFQjAlnwi1JHEeDIw==" }, "node_modules/picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.1.tgz", + "integrity": "sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==", "dev": true }, "node_modules/picomatch": { @@ -28279,9 +28279,9 @@ } }, "node_modules/postcss-selector-parser": { - "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==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.0.tgz", + "integrity": "sha512-UMz42UD0UY0EApS0ZL9o1XnLhSTtvvvLe5Dc2H2O56fvRZi+KulDyf5ctDhhtYJBGKStV2FL1fy6253cmLgqVQ==", "dev": true, "dependencies": { "cssesc": "^3.0.0", @@ -30784,17 +30784,27 @@ } }, "node_modules/stylelint": { - "version": "16.5.0", - "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-16.5.0.tgz", - "integrity": "sha512-IlCBtVrG+qTy3v+tZTk50W8BIomjY/RUuzdrDqdnlCYwVuzXtPbiGfxYqtyYAyOMcb+195zRsuHn6tgfPmFfbw==", + "version": "16.6.1", + "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-16.6.1.tgz", + "integrity": "sha512-yNgz2PqWLkhH2hw6X9AweV9YvoafbAD5ZsFdKN9BvSDVwGvPh+AUIrn7lYwy1S7IHmtFin75LLfX1m0D2tHu8Q==", "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.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", + "@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", "balanced-match": "^2.0.0", "colord": "^2.9.3", "cosmiconfig": "^9.0.0", @@ -30803,7 +30813,7 @@ "debug": "^4.3.4", "fast-glob": "^3.3.2", "fastest-levenshtein": "^1.0.16", - "file-entry-cache": "^8.0.0", + "file-entry-cache": "^9.0.0", "global-modules": "^2.0.0", "globby": "^11.1.0", "globjoin": "^0.1.4", @@ -30811,16 +30821,16 @@ "ignore": "^5.3.1", "imurmurhash": "^0.1.4", "is-plain-object": "^5.0.0", - "known-css-properties": "^0.30.0", + "known-css-properties": "^0.31.0", "mathml-tag-names": "^2.1.3", "meow": "^13.2.0", - "micromatch": "^4.0.5", + "micromatch": "^4.0.7", "normalize-path": "^3.0.0", - "picocolors": "^1.0.0", + "picocolors": "^1.0.1", "postcss": "^8.4.38", "postcss-resolve-nested-selector": "^0.1.1", "postcss-safe-parser": "^7.0.0", - "postcss-selector-parser": "^6.0.16", + "postcss-selector-parser": "^6.1.0", "postcss-value-parser": "^4.2.0", "resolve-from": "^5.0.0", "string-width": "^4.2.3", @@ -30835,10 +30845,6 @@ }, "engines": { "node": ">=18.12.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/stylelint" } }, "node_modules/stylelint/node_modules/ansi-regex": { @@ -30889,30 +30895,30 @@ } }, "node_modules/stylelint/node_modules/file-entry-cache": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz", - "integrity": "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==", + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-9.0.0.tgz", + "integrity": "sha512-6MgEugi8p2tiUhqO7GnPsmbCCzj0YRCwwaTbpGRyKZesjRSzkqkAE9fPp7V2yMs5hwfgbQLgdvSSkGNg1s5Uvw==", "dev": true, "peer": true, "dependencies": { - "flat-cache": "^4.0.0" + "flat-cache": "^5.0.0" }, "engines": { - "node": ">=16.0.0" + "node": ">=18" } }, "node_modules/stylelint/node_modules/flat-cache": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz", - "integrity": "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-5.0.0.tgz", + "integrity": "sha512-JrqFmyUl2PnPi1OvLyTVHnQvwQ0S+e6lGSwu8OkAZlSaNIZciTY2H/cOOROxsBA1m/LZNHDsqAgDZt6akWcjsQ==", "dev": true, "peer": true, "dependencies": { - "flatted": "^3.2.9", + "flatted": "^3.3.1", "keyv": "^4.5.4" }, "engines": { - "node": ">=16" + "node": ">=18" } }, "node_modules/stylelint/node_modules/meow": { @@ -31137,9 +31143,9 @@ } }, "node_modules/table/node_modules/ajv": { - "version": "8.13.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.13.0.tgz", - "integrity": "sha512-PRA911Blj99jR5RMeTunVbNXMF6Lp4vZXnk5GQjcnUWUTsrXtekg/pnmFFI2u/I36Y/2bITGS30GZCXei6uNkA==", + "version": "8.16.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.16.0.tgz", + "integrity": "sha512-F0twR8U1ZU67JIEtekUcLkXkoO5mMMmgGD8sK/xUFzJ805jxHQl92hImFAqqXMyMYjSPOyUPAwHYhB72g5sTXw==", "dev": true, "peer": true, "dependencies": { @@ -34878,22 +34884,21 @@ "version": "0.15.0", "license": "Apache-2.0", "dependencies": { - "@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", + "@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", "@fortawesome/react-fontawesome": "^0.2.0", "@react-types/shared": "^3.22.0", "classnames": "^2.5.1", @@ -34982,17 +34987,17 @@ } }, "plugins/ui/src/js/node_modules/@deephaven/chart": { - "version": "0.78.0", - "resolved": "https://registry.npmjs.org/@deephaven/chart/-/chart-0.78.0.tgz", - "integrity": "sha512-G28KsnH+p3sot94UZP+LkwpyHPBUmtwbIyaIUQQxvEA8Hr5vJlN92IkMKCWEtPFRTiHhCrHYkgfQ54SN2XyNZQ==", + "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==", "dependencies": { - "@deephaven/components": "^0.78.0", - "@deephaven/icons": "^0.78.0", + "@deephaven/components": "^0.81.1", + "@deephaven/icons": "^0.81.0", "@deephaven/jsapi-types": "1.0.0-dev0.34.0", - "@deephaven/jsapi-utils": "^0.78.0", - "@deephaven/log": "^0.78.0", - "@deephaven/react-hooks": "^0.78.0", - "@deephaven/utils": "^0.78.0", + "@deephaven/jsapi-utils": "^0.81.0", + "@deephaven/log": "^0.81.0", + "@deephaven/react-hooks": "^0.81.0", + "@deephaven/utils": "^0.81.0", "buffer": "^6.0.3", "fast-deep-equal": "^3.1.3", "lodash.debounce": "^4.0.8", @@ -35016,19 +35021,20 @@ "integrity": "sha512-UiIbmCaMx5mPOGCWdgOCfZtccMhh55jv3qzeN3qBp3YUi46uGfWY5kfCU3hWRtaQvUgO7n0XhBKTd4K/pxv9ng==" }, "plugins/ui/src/js/node_modules/@deephaven/components": { - "version": "0.78.0", - "resolved": "https://registry.npmjs.org/@deephaven/components/-/components-0.78.0.tgz", - "integrity": "sha512-gx+yc1ZNRb4Pa3ptilGKBypPRNVoPrIqlDb7wJeZCKX+OnMZczFZLdEn12bh0s4Dnp460VNhegG2iM5W14GBHA==", + "version": "0.81.1", + "resolved": "https://registry.npmjs.org/@deephaven/components/-/components-0.81.1.tgz", + "integrity": "sha512-m270cnxIXS/nXnaqRXUhw8GJA+E8IB3lfhBaqF104AJwq3XE2D2IQUFm0mf/JVbO/sVmMjMGH4Um1SbRCcFwLA==", "dependencies": { "@adobe/react-spectrum": "3.33.1", - "@deephaven/icons": "^0.78.0", - "@deephaven/log": "^0.78.0", - "@deephaven/react-hooks": "^0.78.0", - "@deephaven/utils": "^0.78.0", + "@deephaven/icons": "^0.81.0", + "@deephaven/log": "^0.81.0", + "@deephaven/react-hooks": "^0.81.0", + "@deephaven/utils": "^0.81.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", @@ -35038,13 +35044,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", - "shortid": "^2.2.16" + "react-window": "^1.8.6" }, "engines": { "node": ">=10" @@ -35055,19 +35061,19 @@ } }, "plugins/ui/src/js/node_modules/@deephaven/console": { - "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", + "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", "@deephaven/jsapi-types": "1.0.0-dev0.34.0", - "@deephaven/log": "^0.78.0", - "@deephaven/react-hooks": "^0.78.0", - "@deephaven/storage": "^0.78.0", - "@deephaven/utils": "^0.78.0", + "@deephaven/log": "^0.81.0", + "@deephaven/react-hooks": "^0.81.0", + "@deephaven/storage": "^0.81.0", + "@deephaven/utils": "^0.81.0", "@fortawesome/react-fontawesome": "^0.2.0", "classnames": "^2.3.1", "linkifyjs": "^4.1.0", @@ -35076,11 +35082,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", - "shortid": "^2.2.16" + "shell-quote": "^1.7.2" }, "engines": { "node": ">=16" @@ -35096,21 +35102,21 @@ "integrity": "sha512-UiIbmCaMx5mPOGCWdgOCfZtccMhh55jv3qzeN3qBp3YUi46uGfWY5kfCU3hWRtaQvUgO7n0XhBKTd4K/pxv9ng==" }, "plugins/ui/src/js/node_modules/@deephaven/dashboard": { - "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", + "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", "fast-deep-equal": "^3.1.3", "lodash.ismatch": "^4.1.1", "lodash.throttle": "^4.1.1", - "prop-types": "^15.7.2", - "shortid": "^2.2.16" + "nanoid": "^5.0.7", + "prop-types": "^15.7.2" }, "engines": { "node": ">=16" @@ -35123,30 +35129,30 @@ } }, "plugins/ui/src/js/node_modules/@deephaven/dashboard-core-plugins": { - "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", + "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", "@deephaven/jsapi-types": "1.0.0-dev0.34.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", + "@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", "@fortawesome/react-fontawesome": "^0.2.0", "classnames": "^2.3.1", "fast-deep-equal": "^3.1.3", @@ -35155,14 +35161,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", - "shortid": "^2.2.16" + "remark-math": "^5.1.1" }, "engines": { "node": ">=16" @@ -35179,15 +35185,15 @@ "integrity": "sha512-UiIbmCaMx5mPOGCWdgOCfZtccMhh55jv3qzeN3qBp3YUi46uGfWY5kfCU3hWRtaQvUgO7n0XhBKTd4K/pxv9ng==" }, "plugins/ui/src/js/node_modules/@deephaven/file-explorer": { - "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", + "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", "@fortawesome/fontawesome-svg-core": "^6.2.1", "@fortawesome/react-fontawesome": "^0.2.0", "classnames": "^2.3.1", @@ -35202,20 +35208,21 @@ } }, "plugins/ui/src/js/node_modules/@deephaven/filters": { - "version": "0.78.0", - "resolved": "https://registry.npmjs.org/@deephaven/filters/-/filters-0.78.0.tgz", - "integrity": "sha512-0C9udzidoX99nZXxQ5UOn+zRq2dAA16ic0FvnUBBJtKKwxfuAHPIq95H4b5VHgUh6lVOG6Q432xrRSinB7wrlw==", + "version": "0.81.0", + "resolved": "https://registry.npmjs.org/@deephaven/filters/-/filters-0.81.0.tgz", + "integrity": "sha512-qRrfcSEN5lEbbmLpXhqWEDON3cBVBsRQCEdkqwSMadGm1mev0oeucAN6LiiiHxEHe/n5i9N2vrzjVpqHmDjzyA==", "engines": { "node": ">=16" } }, "plugins/ui/src/js/node_modules/@deephaven/golden-layout": { - "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==", + "version": "0.81.1", + "resolved": "https://registry.npmjs.org/@deephaven/golden-layout/-/golden-layout-0.81.1.tgz", + "integrity": "sha512-dXAUCpDE2Mtt5lAuUanqVf6MybCBdEbQaVEsdsz0tyu6joQUTR2tpiAP2pF1oyAV/6eMk712HjNNANHH5GK/5Q==", "dependencies": { - "@deephaven/components": "^0.78.0", - "jquery": "^3.6.0" + "@deephaven/components": "^0.81.1", + "jquery": "^3.6.0", + "nanoid": "^5.0.7" }, "peerDependencies": { "react": ">=16.8.0", @@ -35223,11 +35230,11 @@ } }, "plugins/ui/src/js/node_modules/@deephaven/grid": { - "version": "0.78.0", - "resolved": "https://registry.npmjs.org/@deephaven/grid/-/grid-0.78.0.tgz", - "integrity": "sha512-w5qC8MhS/eUJzro8lkTHe2XOw+KAnhFgqkA1RFAr4A0/T0pUha7IJhdjH0JMBYOLaik6bMCPrQDiU8GvFyJPtA==", + "version": "0.81.0", + "resolved": "https://registry.npmjs.org/@deephaven/grid/-/grid-0.81.0.tgz", + "integrity": "sha512-2vuYvVIstJVEu18eQGOArZRtKodTiWqKrv3mHb1uPznvspBd3r+TgQHPAKpdP+nckMlJ09zIGQragRGnavl//w==", "dependencies": { - "@deephaven/utils": "^0.78.0", + "@deephaven/utils": "^0.81.0", "classnames": "^2.3.1", "color-convert": "^2.0.1", "event-target-shim": "^6.0.2", @@ -35245,9 +35252,9 @@ } }, "plugins/ui/src/js/node_modules/@deephaven/icons": { - "version": "0.78.0", - "resolved": "https://registry.npmjs.org/@deephaven/icons/-/icons-0.78.0.tgz", - "integrity": "sha512-gFR7hWghDJGgNphF9FpI0VnjCQrZ7FpQqFmxTzWTBSLWAxwRL1jR3glAR1/GbpfugE4BwuQARI+zRBU0xB4z1w==", + "version": "0.81.0", + "resolved": "https://registry.npmjs.org/@deephaven/icons/-/icons-0.81.0.tgz", + "integrity": "sha512-V6i7wMygcMhtnhGKY/LQEFL2qEtEBYMWjcJaeAFTpa6DgFDKakPY3cZyyURpHUtJOnalY6O5n5TC0KVlKyDkGw==", "dependencies": { "@fortawesome/fontawesome-common-types": "^6.1.1" }, @@ -35257,22 +35264,22 @@ } }, "plugins/ui/src/js/node_modules/@deephaven/iris-grid": { - "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", + "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", "@deephaven/jsapi-types": "1.0.0-dev0.34.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", + "@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", "@dnd-kit/core": "^6.1.0", "@dnd-kit/sortable": "^7.0.2", "@dnd-kit/utilities": "^3.2.2", @@ -35285,10 +35292,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", - "shortid": "^2.2.16" + "react-transition-group": "^4.4.2" }, "engines": { "node": ">=10" @@ -35304,14 +35311,15 @@ "integrity": "sha512-UiIbmCaMx5mPOGCWdgOCfZtccMhh55jv3qzeN3qBp3YUi46uGfWY5kfCU3hWRtaQvUgO7n0XhBKTd4K/pxv9ng==" }, "plugins/ui/src/js/node_modules/@deephaven/jsapi-bootstrap": { - "version": "0.78.0", - "resolved": "https://registry.npmjs.org/@deephaven/jsapi-bootstrap/-/jsapi-bootstrap-0.78.0.tgz", - "integrity": "sha512-XeQnxcCTLH6CdycDvo4dw/gpoqOnGYQQUSAlWqHjwiR0Ep+11JBkeIZRufsT1/GBfaQDho7GtZAJ0vlgADFSow==", + "version": "0.81.1", + "resolved": "https://registry.npmjs.org/@deephaven/jsapi-bootstrap/-/jsapi-bootstrap-0.81.1.tgz", + "integrity": "sha512-IIHfahXJ/ciV2lfuyHBGzStljEzBIoWeBeOi3emRI6iihqfNXh6Uhbxm4EAlOr6pCyDesM3PmJ9VdBvQmFqgyw==", "dependencies": { - "@deephaven/components": "^0.78.0", + "@deephaven/components": "^0.81.1", "@deephaven/jsapi-types": "1.0.0-dev0.34.0", - "@deephaven/log": "^0.78.0", - "@deephaven/react-hooks": "^0.78.0" + "@deephaven/log": "^0.81.0", + "@deephaven/react-hooks": "^0.81.0", + "@deephaven/utils": "^0.81.0" }, "engines": { "node": ">=16" @@ -35326,17 +35334,17 @@ "integrity": "sha512-UiIbmCaMx5mPOGCWdgOCfZtccMhh55jv3qzeN3qBp3YUi46uGfWY5kfCU3hWRtaQvUgO7n0XhBKTd4K/pxv9ng==" }, "plugins/ui/src/js/node_modules/@deephaven/jsapi-components": { - "version": "0.78.0", - "resolved": "https://registry.npmjs.org/@deephaven/jsapi-components/-/jsapi-components-0.78.0.tgz", - "integrity": "sha512-VSQD7gvollbyQTbzW6jhIjxQplm6i5tvL/nyqY6P19W0bxCcraYGeVzoaL5XvTQo91GvQkqB6d1nltOytI3dmw==", + "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==", "dependencies": { - "@deephaven/components": "^0.78.0", - "@deephaven/jsapi-bootstrap": "^0.78.0", + "@deephaven/components": "^0.81.1", + "@deephaven/jsapi-bootstrap": "^0.81.1", "@deephaven/jsapi-types": "1.0.0-dev0.34.0", - "@deephaven/jsapi-utils": "^0.78.0", - "@deephaven/log": "^0.78.0", - "@deephaven/react-hooks": "^0.78.0", - "@deephaven/utils": "^0.78.0", + "@deephaven/jsapi-utils": "^0.81.0", + "@deephaven/log": "^0.81.0", + "@deephaven/react-hooks": "^0.81.0", + "@deephaven/utils": "^0.81.0", "@types/js-cookie": "^3.0.3", "classnames": "^2.3.2", "js-cookie": "^3.0.5", @@ -35356,21 +35364,21 @@ "integrity": "sha512-UiIbmCaMx5mPOGCWdgOCfZtccMhh55jv3qzeN3qBp3YUi46uGfWY5kfCU3hWRtaQvUgO7n0XhBKTd4K/pxv9ng==" }, "plugins/ui/src/js/node_modules/@deephaven/jsapi-types": { - "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==" + "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==" }, "plugins/ui/src/js/node_modules/@deephaven/jsapi-utils": { - "version": "0.78.0", - "resolved": "https://registry.npmjs.org/@deephaven/jsapi-utils/-/jsapi-utils-0.78.0.tgz", - "integrity": "sha512-VeCCns+nkKucbQYRGOak1MisEFQzI9bJQ+pAmqXBhVxJHj5NxqRiqnyoyp1VQig6zg1dzVqUj4h5ZTHXJ1QHdw==", + "version": "0.81.0", + "resolved": "https://registry.npmjs.org/@deephaven/jsapi-utils/-/jsapi-utils-0.81.0.tgz", + "integrity": "sha512-rlx7K+tCUWA0ekNa/BKUudoAb9T2+4Oitu5pIMfe0qu8SgBV7PxcUGLmKGrRMEj9ZlAHYH3ngHgYFeAFDF6cMQ==", "dependencies": { - "@deephaven/filters": "^0.78.0", + "@deephaven/filters": "^0.81.0", "@deephaven/jsapi-types": "1.0.0-dev0.34.0", - "@deephaven/log": "^0.78.0", - "@deephaven/utils": "^0.78.0", + "@deephaven/log": "^0.81.0", + "@deephaven/utils": "^0.81.0", "lodash.clamp": "^4.0.3", - "shortid": "^2.2.16" + "nanoid": "^5.0.7" }, "engines": { "node": ">=16" @@ -35382,9 +35390,9 @@ "integrity": "sha512-UiIbmCaMx5mPOGCWdgOCfZtccMhh55jv3qzeN3qBp3YUi46uGfWY5kfCU3hWRtaQvUgO7n0XhBKTd4K/pxv9ng==" }, "plugins/ui/src/js/node_modules/@deephaven/log": { - "version": "0.78.0", - "resolved": "https://registry.npmjs.org/@deephaven/log/-/log-0.78.0.tgz", - "integrity": "sha512-6GXUm1yjHTUWpi/p22sJ/F8yZ+l7I3jnfs9HlRjSErB7tb5jmpBXGAMTkL8oCuvvycLdx0QKcs17VJxV0saejw==", + "version": "0.81.0", + "resolved": "https://registry.npmjs.org/@deephaven/log/-/log-0.81.0.tgz", + "integrity": "sha512-W5TgMBa7Q8W1nWrz7TElhwV4xO6+aHWrcPgH/a3Tj0oZDyYSjxRoWJ/CHx6boGrrJrkR8qpHyDuOKu9xHmxhYg==", "dependencies": { "event-target-shim": "^6.0.2" }, @@ -35393,17 +35401,17 @@ } }, "plugins/ui/src/js/node_modules/@deephaven/plugin": { - "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", + "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", "@deephaven/jsapi-types": "1.0.0-dev0.34.0", - "@deephaven/log": "^0.78.0", - "@deephaven/react-hooks": "^0.78.0", + "@deephaven/log": "^0.81.0", + "@deephaven/react-hooks": "^0.81.0", "@fortawesome/fontawesome-common-types": "^6.1.1", "@fortawesome/react-fontawesome": "^0.2.0" }, @@ -35420,16 +35428,16 @@ "integrity": "sha512-UiIbmCaMx5mPOGCWdgOCfZtccMhh55jv3qzeN3qBp3YUi46uGfWY5kfCU3hWRtaQvUgO7n0XhBKTd4K/pxv9ng==" }, "plugins/ui/src/js/node_modules/@deephaven/react-hooks": { - "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==", + "version": "0.81.0", + "resolved": "https://registry.npmjs.org/@deephaven/react-hooks/-/react-hooks-0.81.0.tgz", + "integrity": "sha512-KmY9kDAQbbve9nfsSgkP8q0dlMGEAISmXl8bR0c/VZEbDPULXaMD4DLFWGN286uvn1hzSNy5CyAzk9MsMzrFag==", "dependencies": { "@adobe/react-spectrum": "3.33.1", - "@deephaven/log": "^0.78.0", - "@deephaven/utils": "^0.78.0", + "@deephaven/log": "^0.81.0", + "@deephaven/utils": "^0.81.0", "lodash.debounce": "^4.0.8", "lodash.throttle": "^4.1.1", - "shortid": "^2.2.16" + "nanoid": "^5.0.7" }, "engines": { "node": ">=16" @@ -35439,14 +35447,14 @@ } }, "plugins/ui/src/js/node_modules/@deephaven/redux": { - "version": "0.78.0", - "resolved": "https://registry.npmjs.org/@deephaven/redux/-/redux-0.78.0.tgz", - "integrity": "sha512-6G2hDFzkT5hc0P3ARtTfrReXnEJytjnpLFPI2BLR7elQl8A55boQFBOG2KnS0oNiCZaJ50oE4t/CyW0bUTOHcw==", + "version": "0.81.1", + "resolved": "https://registry.npmjs.org/@deephaven/redux/-/redux-0.81.1.tgz", + "integrity": "sha512-5mHP4TTyRm9QDQ4oab4iGS6bLuAux1MLy7Qw14kBSn+lYo8ItA2NmN6MOEqzKY4ozQUyLxMvXyx+IWlVzt5Lag==", "dependencies": { "@deephaven/jsapi-types": "1.0.0-dev0.34.0", - "@deephaven/jsapi-utils": "^0.78.0", - "@deephaven/log": "^0.78.0", - "@deephaven/plugin": "^0.78.0", + "@deephaven/jsapi-utils": "^0.81.0", + "@deephaven/log": "^0.81.0", + "@deephaven/plugin": "^0.81.1", "fast-deep-equal": "^3.1.3", "proxy-memoize": "^3.0.0", "redux-thunk": "2.4.1" @@ -35464,12 +35472,12 @@ "integrity": "sha512-UiIbmCaMx5mPOGCWdgOCfZtccMhh55jv3qzeN3qBp3YUi46uGfWY5kfCU3hWRtaQvUgO7n0XhBKTd4K/pxv9ng==" }, "plugins/ui/src/js/node_modules/@deephaven/storage": { - "version": "0.78.0", - "resolved": "https://registry.npmjs.org/@deephaven/storage/-/storage-0.78.0.tgz", - "integrity": "sha512-+2bSIa4iaNqjv6d4v8GBtzOQduJZEMSR2W4kT48yZrItsyABnYnGdPagszgnI6CjCSXNNjJUa6SQLy/jZfSQzQ==", + "version": "0.81.0", + "resolved": "https://registry.npmjs.org/@deephaven/storage/-/storage-0.81.0.tgz", + "integrity": "sha512-f6yHt5CrCV7RsdWFgaOUdiGWzHkvA1T4UFETiAp9/eUiyOdsinlxnKGydN5Heg1T0trfiBL3IZCQBEDzUb5Aog==", "dependencies": { - "@deephaven/filters": "^0.78.0", - "@deephaven/log": "^0.78.0", + "@deephaven/filters": "^0.81.0", + "@deephaven/log": "^0.81.0", "lodash.throttle": "^4.1.1" }, "engines": { @@ -35480,9 +35488,9 @@ } }, "plugins/ui/src/js/node_modules/@deephaven/utils": { - "version": "0.78.0", - "resolved": "https://registry.npmjs.org/@deephaven/utils/-/utils-0.78.0.tgz", - "integrity": "sha512-uQdEiQYoPHDbF1jRlliJITmxDNAYpv1CT8H2vHnTRuGevP17WpudTdUOXjq1Jas4oggpj0Q60/bu0XbxgO3QTA==", + "version": "0.81.0", + "resolved": "https://registry.npmjs.org/@deephaven/utils/-/utils-0.81.0.tgz", + "integrity": "sha512-mFESX7oErF0Zcof7OXjTGbgqOzPiLeo/eedVkPxtJ0ue2UEPxUO0Ws7Xb/b61XjsVaP0u3DCpuPajs88ZPun5w==", "engines": { "node": ">=16" } @@ -35537,6 +35545,23 @@ "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", @@ -39484,22 +39509,21 @@ "@deephaven/js-plugin-ui": { "version": "file:plugins/ui/src/js", "requires": { - "@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", + "@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", "@fortawesome/react-fontawesome": "^0.2.0", "@react-types/shared": "^3.22.0", "@types/react": "^17.0.2", @@ -39578,17 +39602,17 @@ } }, "@deephaven/chart": { - "version": "0.78.0", - "resolved": "https://registry.npmjs.org/@deephaven/chart/-/chart-0.78.0.tgz", - "integrity": "sha512-G28KsnH+p3sot94UZP+LkwpyHPBUmtwbIyaIUQQxvEA8Hr5vJlN92IkMKCWEtPFRTiHhCrHYkgfQ54SN2XyNZQ==", + "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==", "requires": { - "@deephaven/components": "^0.78.0", - "@deephaven/icons": "^0.78.0", + "@deephaven/components": "^0.81.1", + "@deephaven/icons": "^0.81.0", "@deephaven/jsapi-types": "1.0.0-dev0.34.0", - "@deephaven/jsapi-utils": "^0.78.0", - "@deephaven/log": "^0.78.0", - "@deephaven/react-hooks": "^0.78.0", - "@deephaven/utils": "^0.78.0", + "@deephaven/jsapi-utils": "^0.81.0", + "@deephaven/log": "^0.81.0", + "@deephaven/react-hooks": "^0.81.0", + "@deephaven/utils": "^0.81.0", "buffer": "^6.0.3", "fast-deep-equal": "^3.1.3", "lodash.debounce": "^4.0.8", @@ -39608,19 +39632,20 @@ } }, "@deephaven/components": { - "version": "0.78.0", - "resolved": "https://registry.npmjs.org/@deephaven/components/-/components-0.78.0.tgz", - "integrity": "sha512-gx+yc1ZNRb4Pa3ptilGKBypPRNVoPrIqlDb7wJeZCKX+OnMZczFZLdEn12bh0s4Dnp460VNhegG2iM5W14GBHA==", + "version": "0.81.1", + "resolved": "https://registry.npmjs.org/@deephaven/components/-/components-0.81.1.tgz", + "integrity": "sha512-m270cnxIXS/nXnaqRXUhw8GJA+E8IB3lfhBaqF104AJwq3XE2D2IQUFm0mf/JVbO/sVmMjMGH4Um1SbRCcFwLA==", "requires": { "@adobe/react-spectrum": "3.33.1", - "@deephaven/icons": "^0.78.0", - "@deephaven/log": "^0.78.0", - "@deephaven/react-hooks": "^0.78.0", - "@deephaven/utils": "^0.78.0", + "@deephaven/icons": "^0.81.0", + "@deephaven/log": "^0.81.0", + "@deephaven/react-hooks": "^0.81.0", + "@deephaven/utils": "^0.81.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", @@ -39630,29 +39655,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", - "shortid": "^2.2.16" + "react-window": "^1.8.6" } }, "@deephaven/console": { - "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", + "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", "@deephaven/jsapi-types": "1.0.0-dev0.34.0", - "@deephaven/log": "^0.78.0", - "@deephaven/react-hooks": "^0.78.0", - "@deephaven/storage": "^0.78.0", - "@deephaven/utils": "^0.78.0", + "@deephaven/log": "^0.81.0", + "@deephaven/react-hooks": "^0.81.0", + "@deephaven/storage": "^0.81.0", + "@deephaven/utils": "^0.81.0", "@fortawesome/react-fontawesome": "^0.2.0", "classnames": "^2.3.1", "linkifyjs": "^4.1.0", @@ -39661,11 +39686,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", - "shortid": "^2.2.16" + "shell-quote": "^1.7.2" }, "dependencies": { "@deephaven/jsapi-types": { @@ -39676,48 +39701,48 @@ } }, "@deephaven/dashboard": { - "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", + "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", "fast-deep-equal": "^3.1.3", "lodash.ismatch": "^4.1.1", "lodash.throttle": "^4.1.1", - "prop-types": "^15.7.2", - "shortid": "^2.2.16" + "nanoid": "^5.0.7", + "prop-types": "^15.7.2" } }, "@deephaven/dashboard-core-plugins": { - "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", + "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", "@deephaven/jsapi-types": "1.0.0-dev0.34.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", + "@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", "@fortawesome/react-fontawesome": "^0.2.0", "classnames": "^2.3.1", "fast-deep-equal": "^3.1.3", @@ -39726,14 +39751,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", - "shortid": "^2.2.16" + "remark-math": "^5.1.1" }, "dependencies": { "@deephaven/jsapi-types": { @@ -39744,15 +39769,15 @@ } }, "@deephaven/file-explorer": { - "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", + "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", "@fortawesome/fontawesome-svg-core": "^6.2.1", "@fortawesome/react-fontawesome": "^0.2.0", "classnames": "^2.3.1", @@ -39761,25 +39786,26 @@ } }, "@deephaven/filters": { - "version": "0.78.0", - "resolved": "https://registry.npmjs.org/@deephaven/filters/-/filters-0.78.0.tgz", - "integrity": "sha512-0C9udzidoX99nZXxQ5UOn+zRq2dAA16ic0FvnUBBJtKKwxfuAHPIq95H4b5VHgUh6lVOG6Q432xrRSinB7wrlw==" + "version": "0.81.0", + "resolved": "https://registry.npmjs.org/@deephaven/filters/-/filters-0.81.0.tgz", + "integrity": "sha512-qRrfcSEN5lEbbmLpXhqWEDON3cBVBsRQCEdkqwSMadGm1mev0oeucAN6LiiiHxEHe/n5i9N2vrzjVpqHmDjzyA==" }, "@deephaven/golden-layout": { - "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==", + "version": "0.81.1", + "resolved": "https://registry.npmjs.org/@deephaven/golden-layout/-/golden-layout-0.81.1.tgz", + "integrity": "sha512-dXAUCpDE2Mtt5lAuUanqVf6MybCBdEbQaVEsdsz0tyu6joQUTR2tpiAP2pF1oyAV/6eMk712HjNNANHH5GK/5Q==", "requires": { - "@deephaven/components": "^0.78.0", - "jquery": "^3.6.0" + "@deephaven/components": "^0.81.1", + "jquery": "^3.6.0", + "nanoid": "^5.0.7" } }, "@deephaven/grid": { - "version": "0.78.0", - "resolved": "https://registry.npmjs.org/@deephaven/grid/-/grid-0.78.0.tgz", - "integrity": "sha512-w5qC8MhS/eUJzro8lkTHe2XOw+KAnhFgqkA1RFAr4A0/T0pUha7IJhdjH0JMBYOLaik6bMCPrQDiU8GvFyJPtA==", + "version": "0.81.0", + "resolved": "https://registry.npmjs.org/@deephaven/grid/-/grid-0.81.0.tgz", + "integrity": "sha512-2vuYvVIstJVEu18eQGOArZRtKodTiWqKrv3mHb1uPznvspBd3r+TgQHPAKpdP+nckMlJ09zIGQragRGnavl//w==", "requires": { - "@deephaven/utils": "^0.78.0", + "@deephaven/utils": "^0.81.0", "classnames": "^2.3.1", "color-convert": "^2.0.1", "event-target-shim": "^6.0.2", @@ -39791,30 +39817,30 @@ } }, "@deephaven/icons": { - "version": "0.78.0", - "resolved": "https://registry.npmjs.org/@deephaven/icons/-/icons-0.78.0.tgz", - "integrity": "sha512-gFR7hWghDJGgNphF9FpI0VnjCQrZ7FpQqFmxTzWTBSLWAxwRL1jR3glAR1/GbpfugE4BwuQARI+zRBU0xB4z1w==", + "version": "0.81.0", + "resolved": "https://registry.npmjs.org/@deephaven/icons/-/icons-0.81.0.tgz", + "integrity": "sha512-V6i7wMygcMhtnhGKY/LQEFL2qEtEBYMWjcJaeAFTpa6DgFDKakPY3cZyyURpHUtJOnalY6O5n5TC0KVlKyDkGw==", "requires": { "@fortawesome/fontawesome-common-types": "^6.1.1" } }, "@deephaven/iris-grid": { - "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", + "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", "@deephaven/jsapi-types": "1.0.0-dev0.34.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", + "@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", "@dnd-kit/core": "^6.1.0", "@dnd-kit/sortable": "^7.0.2", "@dnd-kit/utilities": "^3.2.2", @@ -39827,10 +39853,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", - "shortid": "^2.2.16" + "react-transition-group": "^4.4.2" }, "dependencies": { "@deephaven/jsapi-types": { @@ -39841,14 +39867,15 @@ } }, "@deephaven/jsapi-bootstrap": { - "version": "0.78.0", - "resolved": "https://registry.npmjs.org/@deephaven/jsapi-bootstrap/-/jsapi-bootstrap-0.78.0.tgz", - "integrity": "sha512-XeQnxcCTLH6CdycDvo4dw/gpoqOnGYQQUSAlWqHjwiR0Ep+11JBkeIZRufsT1/GBfaQDho7GtZAJ0vlgADFSow==", + "version": "0.81.1", + "resolved": "https://registry.npmjs.org/@deephaven/jsapi-bootstrap/-/jsapi-bootstrap-0.81.1.tgz", + "integrity": "sha512-IIHfahXJ/ciV2lfuyHBGzStljEzBIoWeBeOi3emRI6iihqfNXh6Uhbxm4EAlOr6pCyDesM3PmJ9VdBvQmFqgyw==", "requires": { - "@deephaven/components": "^0.78.0", + "@deephaven/components": "^0.81.1", "@deephaven/jsapi-types": "1.0.0-dev0.34.0", - "@deephaven/log": "^0.78.0", - "@deephaven/react-hooks": "^0.78.0" + "@deephaven/log": "^0.81.0", + "@deephaven/react-hooks": "^0.81.0", + "@deephaven/utils": "^0.81.0" }, "dependencies": { "@deephaven/jsapi-types": { @@ -39859,17 +39886,17 @@ } }, "@deephaven/jsapi-components": { - "version": "0.78.0", - "resolved": "https://registry.npmjs.org/@deephaven/jsapi-components/-/jsapi-components-0.78.0.tgz", - "integrity": "sha512-VSQD7gvollbyQTbzW6jhIjxQplm6i5tvL/nyqY6P19W0bxCcraYGeVzoaL5XvTQo91GvQkqB6d1nltOytI3dmw==", + "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==", "requires": { - "@deephaven/components": "^0.78.0", - "@deephaven/jsapi-bootstrap": "^0.78.0", + "@deephaven/components": "^0.81.1", + "@deephaven/jsapi-bootstrap": "^0.81.1", "@deephaven/jsapi-types": "1.0.0-dev0.34.0", - "@deephaven/jsapi-utils": "^0.78.0", - "@deephaven/log": "^0.78.0", - "@deephaven/react-hooks": "^0.78.0", - "@deephaven/utils": "^0.78.0", + "@deephaven/jsapi-utils": "^0.81.0", + "@deephaven/log": "^0.81.0", + "@deephaven/react-hooks": "^0.81.0", + "@deephaven/utils": "^0.81.0", "@types/js-cookie": "^3.0.3", "classnames": "^2.3.2", "js-cookie": "^3.0.5", @@ -39885,21 +39912,21 @@ } }, "@deephaven/jsapi-types": { - "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==" + "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==" }, "@deephaven/jsapi-utils": { - "version": "0.78.0", - "resolved": "https://registry.npmjs.org/@deephaven/jsapi-utils/-/jsapi-utils-0.78.0.tgz", - "integrity": "sha512-VeCCns+nkKucbQYRGOak1MisEFQzI9bJQ+pAmqXBhVxJHj5NxqRiqnyoyp1VQig6zg1dzVqUj4h5ZTHXJ1QHdw==", + "version": "0.81.0", + "resolved": "https://registry.npmjs.org/@deephaven/jsapi-utils/-/jsapi-utils-0.81.0.tgz", + "integrity": "sha512-rlx7K+tCUWA0ekNa/BKUudoAb9T2+4Oitu5pIMfe0qu8SgBV7PxcUGLmKGrRMEj9ZlAHYH3ngHgYFeAFDF6cMQ==", "requires": { - "@deephaven/filters": "^0.78.0", + "@deephaven/filters": "^0.81.0", "@deephaven/jsapi-types": "1.0.0-dev0.34.0", - "@deephaven/log": "^0.78.0", - "@deephaven/utils": "^0.78.0", + "@deephaven/log": "^0.81.0", + "@deephaven/utils": "^0.81.0", "lodash.clamp": "^4.0.3", - "shortid": "^2.2.16" + "nanoid": "^5.0.7" }, "dependencies": { "@deephaven/jsapi-types": { @@ -39910,25 +39937,25 @@ } }, "@deephaven/log": { - "version": "0.78.0", - "resolved": "https://registry.npmjs.org/@deephaven/log/-/log-0.78.0.tgz", - "integrity": "sha512-6GXUm1yjHTUWpi/p22sJ/F8yZ+l7I3jnfs9HlRjSErB7tb5jmpBXGAMTkL8oCuvvycLdx0QKcs17VJxV0saejw==", + "version": "0.81.0", + "resolved": "https://registry.npmjs.org/@deephaven/log/-/log-0.81.0.tgz", + "integrity": "sha512-W5TgMBa7Q8W1nWrz7TElhwV4xO6+aHWrcPgH/a3Tj0oZDyYSjxRoWJ/CHx6boGrrJrkR8qpHyDuOKu9xHmxhYg==", "requires": { "event-target-shim": "^6.0.2" } }, "@deephaven/plugin": { - "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", + "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", "@deephaven/jsapi-types": "1.0.0-dev0.34.0", - "@deephaven/log": "^0.78.0", - "@deephaven/react-hooks": "^0.78.0", + "@deephaven/log": "^0.81.0", + "@deephaven/react-hooks": "^0.81.0", "@fortawesome/fontawesome-common-types": "^6.1.1", "@fortawesome/react-fontawesome": "^0.2.0" }, @@ -39941,27 +39968,27 @@ } }, "@deephaven/react-hooks": { - "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==", + "version": "0.81.0", + "resolved": "https://registry.npmjs.org/@deephaven/react-hooks/-/react-hooks-0.81.0.tgz", + "integrity": "sha512-KmY9kDAQbbve9nfsSgkP8q0dlMGEAISmXl8bR0c/VZEbDPULXaMD4DLFWGN286uvn1hzSNy5CyAzk9MsMzrFag==", "requires": { "@adobe/react-spectrum": "3.33.1", - "@deephaven/log": "^0.78.0", - "@deephaven/utils": "^0.78.0", + "@deephaven/log": "^0.81.0", + "@deephaven/utils": "^0.81.0", "lodash.debounce": "^4.0.8", "lodash.throttle": "^4.1.1", - "shortid": "^2.2.16" + "nanoid": "^5.0.7" } }, "@deephaven/redux": { - "version": "0.78.0", - "resolved": "https://registry.npmjs.org/@deephaven/redux/-/redux-0.78.0.tgz", - "integrity": "sha512-6G2hDFzkT5hc0P3ARtTfrReXnEJytjnpLFPI2BLR7elQl8A55boQFBOG2KnS0oNiCZaJ50oE4t/CyW0bUTOHcw==", + "version": "0.81.1", + "resolved": "https://registry.npmjs.org/@deephaven/redux/-/redux-0.81.1.tgz", + "integrity": "sha512-5mHP4TTyRm9QDQ4oab4iGS6bLuAux1MLy7Qw14kBSn+lYo8ItA2NmN6MOEqzKY4ozQUyLxMvXyx+IWlVzt5Lag==", "requires": { "@deephaven/jsapi-types": "1.0.0-dev0.34.0", - "@deephaven/jsapi-utils": "^0.78.0", - "@deephaven/log": "^0.78.0", - "@deephaven/plugin": "^0.78.0", + "@deephaven/jsapi-utils": "^0.81.0", + "@deephaven/log": "^0.81.0", + "@deephaven/plugin": "^0.81.1", "fast-deep-equal": "^3.1.3", "proxy-memoize": "^3.0.0", "redux-thunk": "2.4.1" @@ -39975,19 +40002,19 @@ } }, "@deephaven/storage": { - "version": "0.78.0", - "resolved": "https://registry.npmjs.org/@deephaven/storage/-/storage-0.78.0.tgz", - "integrity": "sha512-+2bSIa4iaNqjv6d4v8GBtzOQduJZEMSR2W4kT48yZrItsyABnYnGdPagszgnI6CjCSXNNjJUa6SQLy/jZfSQzQ==", + "version": "0.81.0", + "resolved": "https://registry.npmjs.org/@deephaven/storage/-/storage-0.81.0.tgz", + "integrity": "sha512-f6yHt5CrCV7RsdWFgaOUdiGWzHkvA1T4UFETiAp9/eUiyOdsinlxnKGydN5Heg1T0trfiBL3IZCQBEDzUb5Aog==", "requires": { - "@deephaven/filters": "^0.78.0", - "@deephaven/log": "^0.78.0", + "@deephaven/filters": "^0.81.0", + "@deephaven/log": "^0.81.0", "lodash.throttle": "^4.1.1" } }, "@deephaven/utils": { - "version": "0.78.0", - "resolved": "https://registry.npmjs.org/@deephaven/utils/-/utils-0.78.0.tgz", - "integrity": "sha512-uQdEiQYoPHDbF1jRlliJITmxDNAYpv1CT8H2vHnTRuGevP17WpudTdUOXjq1Jas4oggpj0Q60/bu0XbxgO3QTA==" + "version": "0.81.0", + "resolved": "https://registry.npmjs.org/@deephaven/utils/-/utils-0.81.0.tgz", + "integrity": "sha512-mFESX7oErF0Zcof7OXjTGbgqOzPiLeo/eedVkPxtJ0ue2UEPxUO0Ws7Xb/b61XjsVaP0u3DCpuPajs88ZPun5w==" }, "buffer": { "version": "6.0.3", @@ -40016,6 +40043,11 @@ "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", @@ -47816,12 +47848,12 @@ } }, "braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", "dev": true, "requires": { - "fill-range": "^7.0.1" + "fill-range": "^7.1.1" } }, "browserslist": { @@ -49438,9 +49470,9 @@ } }, "enhanced-resolve": { - "version": "5.16.1", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.16.1.tgz", - "integrity": "sha512-4U5pNsuDl0EhuZpq46M5xPslstkviJuhrdobaRDBk2Jy2KO37FDAJl4lb2KlNabxT0m4MTK2UHNrsAcphE8nyw==", + "version": "5.17.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.17.0.tgz", + "integrity": "sha512-dwDPwZL0dmye8Txp2gzFmA6sxALaSvdRDjPH0viLcKrtlOL3tw62nWWweVD1SdILDTJrbrL6tdWVN58Wo6U3eA==", "dev": true, "peer": true, "requires": { @@ -50505,9 +50537,9 @@ } }, "fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", "dev": true, "requires": { "to-regex-range": "^5.0.1" @@ -50541,9 +50573,9 @@ } }, "flatted": { - "version": "3.2.9", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.9.tgz", - "integrity": "sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==", + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.1.tgz", + "integrity": "sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==", "dev": true }, "flatten-vertex-data": { @@ -54454,9 +54486,9 @@ "dev": true }, "known-css-properties": { - "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==", + "version": "0.31.0", + "resolved": "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.31.0.tgz", + "integrity": "sha512-sBPIUGTNF0czz0mwGGUoKKJC8Q7On1GPbCSFPfyEsfHb2DyBG0Y4QtV+EVWpINSaiGKZblDNuF5AezxSgOhesQ==", "dev": true, "peer": true }, @@ -56410,12 +56442,12 @@ "integrity": "sha512-ukRBgie8TIAcacscVHSiddHjO4k/q3pnedmzMQ4iwDcK0FtFCohKOlFbaOL/mPgfnPsL3C1ZyxJa4sbWrBl3jg==" }, "micromatch": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", - "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.7.tgz", + "integrity": "sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==", "dev": true, "requires": { - "braces": "^3.0.2", + "braces": "^3.0.3", "picomatch": "^2.3.1" } }, @@ -58350,9 +58382,9 @@ "integrity": "sha512-ESj2+eBxhGrcA1azgHs7lARG5+5iLakc/6nlfbpjcLl00HuuUOIuORhYXN4D1HfvMSKuVtFQjAlnwi1JHEeDIw==" }, "picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.1.tgz", + "integrity": "sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==", "dev": true }, "picomatch": { @@ -58556,9 +58588,9 @@ "requires": {} }, "postcss-selector-parser": { - "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==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.0.tgz", + "integrity": "sha512-UMz42UD0UY0EApS0ZL9o1XnLhSTtvvvLe5Dc2H2O56fvRZi+KulDyf5ctDhhtYJBGKStV2FL1fy6253cmLgqVQ==", "dev": true, "requires": { "cssesc": "^3.0.0", @@ -60501,17 +60533,17 @@ } }, "stylelint": { - "version": "16.5.0", - "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-16.5.0.tgz", - "integrity": "sha512-IlCBtVrG+qTy3v+tZTk50W8BIomjY/RUuzdrDqdnlCYwVuzXtPbiGfxYqtyYAyOMcb+195zRsuHn6tgfPmFfbw==", + "version": "16.6.1", + "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-16.6.1.tgz", + "integrity": "sha512-yNgz2PqWLkhH2hw6X9AweV9YvoafbAD5ZsFdKN9BvSDVwGvPh+AUIrn7lYwy1S7IHmtFin75LLfX1m0D2tHu8Q==", "dev": true, "peer": true, "requires": { - "@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", + "@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", "balanced-match": "^2.0.0", "colord": "^2.9.3", "cosmiconfig": "^9.0.0", @@ -60520,7 +60552,7 @@ "debug": "^4.3.4", "fast-glob": "^3.3.2", "fastest-levenshtein": "^1.0.16", - "file-entry-cache": "^8.0.0", + "file-entry-cache": "^9.0.0", "global-modules": "^2.0.0", "globby": "^11.1.0", "globjoin": "^0.1.4", @@ -60528,16 +60560,16 @@ "ignore": "^5.3.1", "imurmurhash": "^0.1.4", "is-plain-object": "^5.0.0", - "known-css-properties": "^0.30.0", + "known-css-properties": "^0.31.0", "mathml-tag-names": "^2.1.3", "meow": "^13.2.0", - "micromatch": "^4.0.5", + "micromatch": "^4.0.7", "normalize-path": "^3.0.0", - "picocolors": "^1.0.0", + "picocolors": "^1.0.1", "postcss": "^8.4.38", "postcss-resolve-nested-selector": "^0.1.1", "postcss-safe-parser": "^7.0.0", - "postcss-selector-parser": "^6.0.16", + "postcss-selector-parser": "^6.1.0", "postcss-value-parser": "^4.2.0", "resolve-from": "^5.0.0", "string-width": "^4.2.3", @@ -60576,23 +60608,23 @@ } }, "file-entry-cache": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz", - "integrity": "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==", + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-9.0.0.tgz", + "integrity": "sha512-6MgEugi8p2tiUhqO7GnPsmbCCzj0YRCwwaTbpGRyKZesjRSzkqkAE9fPp7V2yMs5hwfgbQLgdvSSkGNg1s5Uvw==", "dev": true, "peer": true, "requires": { - "flat-cache": "^4.0.0" + "flat-cache": "^5.0.0" } }, "flat-cache": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz", - "integrity": "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-5.0.0.tgz", + "integrity": "sha512-JrqFmyUl2PnPi1OvLyTVHnQvwQ0S+e6lGSwu8OkAZlSaNIZciTY2H/cOOROxsBA1m/LZNHDsqAgDZt6akWcjsQ==", "dev": true, "peer": true, "requires": { - "flatted": "^3.2.9", + "flatted": "^3.3.1", "keyv": "^4.5.4" } }, @@ -60773,9 +60805,9 @@ }, "dependencies": { "ajv": { - "version": "8.13.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.13.0.tgz", - "integrity": "sha512-PRA911Blj99jR5RMeTunVbNXMF6Lp4vZXnk5GQjcnUWUTsrXtekg/pnmFFI2u/I36Y/2bITGS30GZCXei6uNkA==", + "version": "8.16.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.16.0.tgz", + "integrity": "sha512-F0twR8U1ZU67JIEtekUcLkXkoO5mMMmgGD8sK/xUFzJ805jxHQl92hImFAqqXMyMYjSPOyUPAwHYhB72g5sTXw==", "dev": true, "peer": true, "requires": { diff --git a/plugins/ui/docs/README.md b/plugins/ui/docs/README.md index 8c8e5c2af..c8d245d4d 100644 --- a/plugins/ui/docs/README.md +++ b/plugins/ui/docs/README.md @@ -249,6 +249,36 @@ 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 7d919dbe9..7f5dcdee0 100644 --- a/plugins/ui/src/deephaven/ui/components/__init__.py +++ b/plugins/ui/src/deephaven/ui/components/__init__.py @@ -1,24 +1,52 @@ +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 .fragment import fragment +from .number_field import number_field from .panel import panel -from .spectrum import * -from .table import table -from .dashboard import dashboard -from .row import row -from .column import column -from .stack import stack from .picker import picker -from .action_group import action_group +from .radio import radio +from .radio_group import radio_group +from .range_slider import range_slider +from .row import row 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 .slider import slider +from .stack import stack +from .table import table +from .text_field import text_field +from .toggle_button import toggle_button +from .types import * from . import html @@ -27,14 +55,17 @@ "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", @@ -52,11 +83,12 @@ "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/spectrum/action_button.py b/plugins/ui/src/deephaven/ui/components/action_button.py similarity index 97% rename from plugins/ui/src/deephaven/ui/components/spectrum/action_button.py rename to plugins/ui/src/deephaven/ui/components/action_button.py index d8d99d9b2..3f31fc5dc 100644 --- a/plugins/ui/src/deephaven/ui/components/spectrum/action_button.py +++ b/plugins/ui/src/deephaven/ui/components/action_button.py @@ -1,14 +1,17 @@ from __future__ import annotations from typing import Any, Callable -from .accessibility import AriaExpanded, AriaHasPopup, AriaPressed -from .events import ( +from .types import ( + # Accessibility + AriaExpanded, + AriaHasPopup, + AriaPressed, + # Events ButtonType, FocusEventCallable, KeyboardEventCallable, PressEventCallable, StaticColor, -) -from .layout import ( + # Layout AlignSelf, CSSProperties, DimensionValue, @@ -17,8 +20,9 @@ Number, Position, ) -from .basic import spectrum_element -from ...elements import Element + +from .basic import component_element +from ..elements import Element ActionButtonElement = Element @@ -159,7 +163,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 spectrum_element( + return component_element( "ActionButton", *children, type=type, diff --git a/plugins/ui/src/deephaven/ui/components/action_group.py b/plugins/ui/src/deephaven/ui/components/action_group.py index 3fd4ff391..f167892ee 100644 --- a/plugins/ui/src/deephaven/ui/components/action_group.py +++ b/plugins/ui/src/deephaven/ui/components/action_group.py @@ -3,14 +3,12 @@ from typing import Any, Callable, Iterable -from ..components.spectrum.events import ( +from .types import ( + # Events ButtonLabelBehavior, Orientation, StaticColor, -) -from ..elements import Element, BaseElement -from ..types import ActionGroupDensity, SelectedKeys, SelectionMode, Key, Selection -from .spectrum.layout import ( + # Layout AlignSelf, CSSProperties, DimensionValue, @@ -19,6 +17,9 @@ OverflowMode, Position, ) +from .basic import component_element +from ..elements import Element +from ..types import ActionGroupDensity, SelectedKeys, SelectionMode, Key, Selection def action_group( @@ -153,8 +154,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 BaseElement( - "deephaven.ui.components.ActionGroup", + return component_element( + "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 f3048c344..9b8601853 100644 --- a/plugins/ui/src/deephaven/ui/components/action_menu.py +++ b/plugins/ui/src/deephaven/ui/components/action_menu.py @@ -5,11 +5,20 @@ from .item import Item from .section import SectionElement -from .spectrum.events import TriggerType from ..types import Key, ActionKey, ActionMenuDirection -from ..elements import BaseElement, Element +from .basic import component_element +from ..elements import Element -from .spectrum import ( +from ..types import ( + Key, + ActionKey, + ActionMenuDirection, +) + +from .types import ( + # Events + TriggerType, + # Layout Alignment, AlignSelf, CSSProperties, @@ -141,8 +150,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 BaseElement( - f"deephaven.ui.components.ActionMenu", + return component_element( + f"ActionMenu", *children, is_disabled=is_disabled, is_quiet=is_quiet, diff --git a/plugins/ui/src/deephaven/ui/components/spectrum/basic.py b/plugins/ui/src/deephaven/ui/components/basic.py similarity index 68% rename from plugins/ui/src/deephaven/ui/components/spectrum/basic.py rename to plugins/ui/src/deephaven/ui/components/basic.py index 184b61d7d..6c7bfdca0 100644 --- a/plugins/ui/src/deephaven/ui/components/spectrum/basic.py +++ b/plugins/ui/src/deephaven/ui/components/basic.py @@ -1,14 +1,15 @@ from __future__ import annotations from typing import Any -from ...elements import BaseElement +from ..elements import BaseElement -def spectrum_element(name: str, /, *children: Any, **props: Any) -> BaseElement: +def component_element(name: str, /, *children: Any, **props: Any) -> BaseElement: """ - 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. + Base class for UI elements. + All names are automatically prefixed with "deephaven.ui.components.", and + all props are automatically camelCased. """ - return BaseElement(f"deephaven.ui.spectrum.{name}", *children, **props) + return BaseElement(f"deephaven.ui.components.{name}", *children, **props) def grid(*children, **props): @@ -16,7 +17,7 @@ def grid(*children, **props): Python implementation for the Adobe React Spectrum Grid component. https://react-spectrum.adobe.com/react-spectrum/Grid.html """ - return spectrum_element("Grid", *children, **props) + return component_element("Grid", *children, **props) def heading(*children, **props): @@ -24,7 +25,7 @@ def heading(*children, **props): Python implementation for the Adobe React Spectrum Heading component. https://react-spectrum.adobe.com/react-spectrum/Heading.html """ - return spectrum_element("Heading", *children, **props) + return component_element("Heading", *children, **props) def icon_wrapper(*children, **props): @@ -33,8 +34,9 @@ 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 spectrum_element("Icon", *children, **props) + return component_element("Icon", *children, **props) def illustrated_message(*children, **props): @@ -42,7 +44,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 spectrum_element("IllustratedMessage", *children, **props) + return component_element("IllustratedMessage", *children, **props) def form(*children, **props): @@ -50,7 +52,7 @@ def form(*children, **props): Python implementation for the Adobe React Spectrum Form component. https://react-spectrum.adobe.com/react-spectrum/Form.html """ - return spectrum_element("Form", *children, **props) + return component_element("Form", *children, **props) def switch(*children, **props): @@ -58,7 +60,7 @@ def switch(*children, **props): Python implementation for the Adobe React Spectrum Switch component. https://react-spectrum.adobe.com/react-spectrum/Switch.html """ - return spectrum_element("Switch", *children, **props) + return component_element("Switch", *children, **props) def tabs(*children, **props): @@ -66,7 +68,7 @@ def tabs(*children, **props): Python implementation for the Adobe React Spectrum Tabs component. https://react-spectrum.adobe.com/react-spectrum/Tabs.html """ - return spectrum_element("Tabs", *children, **props) + return component_element("Tabs", *children, **props) def tab_list(*children, **props): @@ -74,7 +76,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 spectrum_element("TabList", *children, **props) + return component_element("TabList", *children, **props) def tab_panels(*children, **props): @@ -82,7 +84,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 spectrum_element("TabPanels", *children, **props) + return component_element("TabPanels", *children, **props) def text(*children, **props): @@ -90,7 +92,7 @@ def text(*children, **props): Python implementation for the Adobe React Spectrum Text component. https://react-spectrum.adobe.com/react-spectrum/Text.html """ - return spectrum_element("Text", *children, **props) + return component_element("Text", *children, **props) def view(*children, **props): @@ -98,4 +100,4 @@ def view(*children, **props): Python implementation for the Adobe React Spectrum View component. https://react-spectrum.adobe.com/react-spectrum/View.html """ - return spectrum_element("View", *children, **props) + return component_element("View", *children, **props) diff --git a/plugins/ui/src/deephaven/ui/components/spectrum/button.py b/plugins/ui/src/deephaven/ui/components/button.py similarity index 97% rename from plugins/ui/src/deephaven/ui/components/spectrum/button.py rename to plugins/ui/src/deephaven/ui/components/button.py index d9cb8ed38..d13d7cab6 100644 --- a/plugins/ui/src/deephaven/ui/components/spectrum/button.py +++ b/plugins/ui/src/deephaven/ui/components/button.py @@ -1,7 +1,11 @@ from __future__ import annotations from typing import Any, Callable -from .accessibility import AriaExpanded, AriaHasPopup, AriaPressed -from .events import ( +from .types import ( + # Accessibility + AriaExpanded, + AriaHasPopup, + AriaPressed, + # Events ButtonType, ButtonVariant, ButtonStyle, @@ -10,8 +14,7 @@ PressEventCallable, StaticColor, ElementTypes, -) -from .layout import ( + # Layout AlignSelf, CSSProperties, DimensionValue, @@ -20,8 +23,8 @@ Number, Position, ) -from .basic import spectrum_element -from ...elements import Element +from .basic import component_element +from ..elements import Element def button( @@ -172,7 +175,7 @@ def button( UNSAFE_style: A CSS style to apply to the element. """ - return spectrum_element( + return component_element( "Button", *children, variant=variant, diff --git a/plugins/ui/src/deephaven/ui/components/spectrum/button_group.py b/plugins/ui/src/deephaven/ui/components/button_group.py similarity index 94% rename from plugins/ui/src/deephaven/ui/components/spectrum/button_group.py rename to plugins/ui/src/deephaven/ui/components/button_group.py index 0751aa7e8..8f08d78ad 100644 --- a/plugins/ui/src/deephaven/ui/components/spectrum/button_group.py +++ b/plugins/ui/src/deephaven/ui/components/button_group.py @@ -1,15 +1,9 @@ from __future__ import annotations -from typing import Any, Callable -from .accessibility import AriaExpanded, AriaHasPopup, AriaPressed -from .events import ( - ButtonType, - FocusEventCallable, - KeyboardEventCallable, - PressEventCallable, - StaticColor, +from typing import Any +from .types import ( + # Events Orientation, -) -from .layout import ( + # Layout AlignSelf, CSSProperties, DimensionValue, @@ -18,8 +12,8 @@ Number, Position, ) -from .basic import spectrum_element -from ...elements import Element +from .basic import component_element +from ..elements import Element def button_group( @@ -109,7 +103,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 spectrum_element( + return component_element( "ButtonGroup", *children, is_disabled=is_disabled, diff --git a/plugins/ui/src/deephaven/ui/components/spectrum/checkbox.py b/plugins/ui/src/deephaven/ui/components/checkbox.py similarity index 97% rename from plugins/ui/src/deephaven/ui/components/spectrum/checkbox.py rename to plugins/ui/src/deephaven/ui/components/checkbox.py index 6ebd480f9..e9818d780 100644 --- a/plugins/ui/src/deephaven/ui/components/spectrum/checkbox.py +++ b/plugins/ui/src/deephaven/ui/components/checkbox.py @@ -1,15 +1,11 @@ from __future__ import annotations from typing import Any, Callable -from .accessibility import AriaExpanded, AriaHasPopup, AriaPressed -from .events import ( - ButtonType, + +from .types import ( + # Events FocusEventCallable, KeyboardEventCallable, - PressEventCallable, - StaticColor, - Orientation, -) -from .layout import ( + # Layout AlignSelf, CSSProperties, DimensionValue, @@ -17,10 +13,9 @@ LayoutFlex, Number, Position, - LabelPosition, ) -from .basic import spectrum_element -from ...elements import Element +from .basic import component_element +from ..elements import Element def checkbox( @@ -161,7 +156,7 @@ def checkbox( UNSAFE_style: A CSS style to apply to the element. """ - return spectrum_element( + return component_element( "Checkbox", children=children, is_emphasized=is_emphasized, diff --git a/plugins/ui/src/deephaven/ui/components/column.py b/plugins/ui/src/deephaven/ui/components/column.py index d976523c2..a869753ee 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 ..elements import BaseElement +from .basic import component_element def column(*children: Any, width: float | None = None, **kwargs: Any): @@ -13,6 +13,4 @@ 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 BaseElement( - "deephaven.ui.components.Column", *children, width=width, **kwargs - ) + return component_element("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 2f357ea65..41b21bc09 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 .spectrum import ( +from .types import ( FocusEventCallable, KeyboardEventCallable, LayoutFlex, @@ -31,6 +31,7 @@ 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 @@ -239,4 +240,4 @@ def combo_box( children, props = unpack_item_table_source(children, props, SUPPORTED_SOURCE_ARGS) - return BaseElement("deephaven.ui.components.ComboBox", *children, **props) + return component_element("ComboBox", *children, **props) diff --git a/plugins/ui/src/deephaven/ui/components/spectrum/content.py b/plugins/ui/src/deephaven/ui/components/content.py similarity index 94% rename from plugins/ui/src/deephaven/ui/components/spectrum/content.py rename to plugins/ui/src/deephaven/ui/components/content.py index 74c450c16..dd7e27130 100644 --- a/plugins/ui/src/deephaven/ui/components/spectrum/content.py +++ b/plugins/ui/src/deephaven/ui/components/content.py @@ -1,15 +1,7 @@ from __future__ import annotations from typing import Any, Callable -from .accessibility import AriaExpanded, AriaHasPopup, AriaPressed -from .events import ( - ButtonType, - FocusEventCallable, - KeyboardEventCallable, - PressEventCallable, - StaticColor, - Orientation, -) -from .layout import ( +from .types import ( + # Layout AlignSelf, CSSProperties, DimensionValue, @@ -17,10 +9,9 @@ LayoutFlex, Number, Position, - LabelPosition, ) -from .basic import spectrum_element -from ...elements import Element +from .basic import component_element +from ..elements import Element def content( @@ -110,7 +101,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 spectrum_element( + return component_element( "Content", children=children, flex=flex, diff --git a/plugins/ui/src/deephaven/ui/components/spectrum/contextual_help.py b/plugins/ui/src/deephaven/ui/components/contextual_help.py similarity index 97% rename from plugins/ui/src/deephaven/ui/components/spectrum/contextual_help.py rename to plugins/ui/src/deephaven/ui/components/contextual_help.py index 6055e384d..95e3cc155 100644 --- a/plugins/ui/src/deephaven/ui/components/spectrum/contextual_help.py +++ b/plugins/ui/src/deephaven/ui/components/contextual_help.py @@ -1,8 +1,10 @@ from __future__ import annotations from numbers import Number from typing import Any, Callable -from .validate import ContextualHelperVariant -from .layout import ( +from .types import ( + # Validation + ContextualHelperVariant, + # Layout AlignSelf, CSSProperties, DimensionValue, @@ -11,8 +13,8 @@ Placement, Position, ) -from .basic import spectrum_element -from ...elements import Element +from .basic import component_element +from ..elements import Element def contextual_help( @@ -127,7 +129,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 spectrum_element( + return component_element( "ContextualHelp", *children, variant=variant, diff --git a/plugins/ui/src/deephaven/ui/components/date_picker.py b/plugins/ui/src/deephaven/ui/components/date_picker.py index 5532348a8..255ec472d 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 .spectrum import ( +from .types import ( FocusEventCallable, KeyboardEventCallable, LayoutFlex, @@ -23,13 +23,14 @@ ) from ..hooks import use_memo -from ..elements import Element, BaseElement +from ..elements import Element from .._internal.utils import ( create_props, convert_date_props, convert_list_prop, ) from ..types import Date, Granularity +from .basic import component_element DatePickerElement = Element @@ -271,4 +272,4 @@ def date_picker( [unavailable_values], ) - return BaseElement("deephaven.ui.components.DatePicker", **props) + return component_element("DatePicker", **props) diff --git a/plugins/ui/src/deephaven/ui/components/spectrum/flex.py b/plugins/ui/src/deephaven/ui/components/flex.py similarity index 95% rename from plugins/ui/src/deephaven/ui/components/spectrum/flex.py rename to plugins/ui/src/deephaven/ui/components/flex.py index 0eb365e03..c8388a40a 100644 --- a/plugins/ui/src/deephaven/ui/components/spectrum/flex.py +++ b/plugins/ui/src/deephaven/ui/components/flex.py @@ -1,7 +1,7 @@ from __future__ import annotations from typing import Any -from .basic import spectrum_element -from .layout import ( +from .basic import component_element +from .types 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 spectrum_element( + return component_element( "Flex", *children, flex=flex, diff --git a/plugins/ui/src/deephaven/ui/components/fragment.py b/plugins/ui/src/deephaven/ui/components/fragment.py index 0f5247ddc..a39135e76 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 ..elements import BaseElement +from .basic import component_element def fragment(*children: Any): @@ -12,4 +12,4 @@ def fragment(*children: Any): Args: children: The children in the fragment. """ - return BaseElement("deephaven.ui.components.Fragment", children=children) + return component_element("Fragment", children=children) diff --git a/plugins/ui/src/deephaven/ui/components/item.py b/plugins/ui/src/deephaven/ui/components/item.py index b5b05e8e5..d7482baed 100644 --- a/plugins/ui/src/deephaven/ui/components/item.py +++ b/plugins/ui/src/deephaven/ui/components/item.py @@ -2,6 +2,7 @@ from ..elements import BaseElement from ..types import Stringable +from .basic import component_element ItemElement = BaseElement Item = Union[Stringable, ItemElement] @@ -15,4 +16,4 @@ def item(*children: Stringable, **props: Any) -> ItemElement: children: The options to render within the item. **props: Any other Item prop. """ - return BaseElement("deephaven.ui.components.Item", *children, **props) + return component_element("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 e48e7be2f..2c35ec9a1 100644 --- a/plugins/ui/src/deephaven/ui/components/list_action_group.py +++ b/plugins/ui/src/deephaven/ui/components/list_action_group.py @@ -3,8 +3,9 @@ from numbers import Number from typing import Callable, Iterable +from .basic import component_element from .item import Item -from ..elements import BaseElement, Element +from ..elements import Element from ..types import ( Key, ActionKey, @@ -13,7 +14,12 @@ SelectionMode, Selection, ) -from .spectrum.layout import ( +from .types import ( + # Events + ButtonLabelBehavior, + Orientation, + StaticColor, + # Layout AlignSelf, CSSProperties, DimensionValue, @@ -22,7 +28,6 @@ OverflowMode, Position, ) -from .spectrum.events import ButtonLabelBehavior, Orientation, StaticColor ListActionGroupElement = Element @@ -163,8 +168,8 @@ def list_action_group( A ListActionGroup that can be used within the actions prop of a `ui.list_view` component. """ - return BaseElement( - "deephaven.ui.components.ListActionGroup", + return component_element( + "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 77ccb8a00..95137b306 100644 --- a/plugins/ui/src/deephaven/ui/components/list_action_menu.py +++ b/plugins/ui/src/deephaven/ui/components/list_action_menu.py @@ -4,10 +4,14 @@ from typing import Callable, Iterable, Union +from .basic import component_element from .item import Item -from ..elements import BaseElement, Element +from ..elements import Element from ..types import Key, ActionKey, ActionMenuDirection -from .spectrum.layout import ( +from .types import ( + # Events + TriggerType, + # Layout AlignSelf, Alignment, CSSProperties, @@ -16,7 +20,6 @@ LayoutFlex, Position, ) -from .spectrum.events import TriggerType ListActionMenuElement = Element @@ -148,8 +151,8 @@ def list_action_menu( A ListActionMenu that can be used within the actions prop of a `ui.list_view` component. """ - return BaseElement( - "deephaven.ui.components.ListActionMenu", + return component_element( + "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 5bd2f50e9..173cedb3a 100644 --- a/plugins/ui/src/deephaven/ui/components/list_view.py +++ b/plugins/ui/src/deephaven/ui/components/list_view.py @@ -5,8 +5,9 @@ from deephaven.table import Table from .item_table_source import ItemTableSource -from ..elements import BaseElement, Element +from ..elements import 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 @@ -70,4 +71,4 @@ def list_view( children, props = unpack_item_table_source(children, props, SUPPORTED_SOURCE_ARGS) - return BaseElement("deephaven.ui.components.ListView", *children, **props) + return component_element("ListView", *children, **props) diff --git a/plugins/ui/src/deephaven/ui/components/spectrum/number_field.py b/plugins/ui/src/deephaven/ui/components/number_field.py similarity index 98% rename from plugins/ui/src/deephaven/ui/components/spectrum/number_field.py rename to plugins/ui/src/deephaven/ui/components/number_field.py index 906aad2fb..6a13ad07d 100644 --- a/plugins/ui/src/deephaven/ui/components/spectrum/number_field.py +++ b/plugins/ui/src/deephaven/ui/components/number_field.py @@ -1,11 +1,13 @@ from __future__ import annotations from typing import Any, Callable - -from .events import ( +from .types import ( + # Events FocusEventCallable, KeyboardEventCallable, -) -from .layout import ( + # Validation + TextFieldValidationState, + NecessityIndicator, + # Layout AlignSelf, CSSProperties, DimensionValue, @@ -16,12 +18,8 @@ LabelPosition, Align, ) -from .validate import ( - TextFieldValidationState, - NecessityIndicator, -) -from .basic import spectrum_element -from ...elements import Element +from .basic import component_element +from ..elements import Element def number_field( @@ -180,7 +178,7 @@ def number_field( UNSAFE_style: A CSS style to apply to the element. """ - return spectrum_element( + return component_element( "NumberField", is_quiet=is_quiet, hide_stepper=hide_stepper, diff --git a/plugins/ui/src/deephaven/ui/components/panel.py b/plugins/ui/src/deephaven/ui/components/panel.py index d3c374e29..acec3dc0a 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 ..elements import BaseElement +from .basic import component_element from .._internal.utils import create_props -from .spectrum import ( +from .types import ( Direction, Wrap, JustifyContent, @@ -57,8 +57,8 @@ def panel( """ children, props = create_props(locals()) - return BaseElement( - "deephaven.ui.components.Panel", + return component_element( + "Panel", *children, **props, ) diff --git a/plugins/ui/src/deephaven/ui/components/picker.py b/plugins/ui/src/deephaven/ui/components/picker.py index b5366ed4e..9472b39b2 100644 --- a/plugins/ui/src/deephaven/ui/components/picker.py +++ b/plugins/ui/src/deephaven/ui/components/picker.py @@ -3,6 +3,7 @@ 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 @@ -63,4 +64,4 @@ def picker( children, props = unpack_item_table_source(children, props, SUPPORTED_SOURCE_ARGS) - return BaseElement("deephaven.ui.components.Picker", *children, **props) + return component_element("Picker", *children, **props) diff --git a/plugins/ui/src/deephaven/ui/components/radio.py b/plugins/ui/src/deephaven/ui/components/radio.py new file mode 100644 index 000000000..4b3d32520 --- /dev/null +++ b/plugins/ui/src/deephaven/ui/components/radio.py @@ -0,0 +1,14 @@ +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 new file mode 100644 index 000000000..fb82e6d8a --- /dev/null +++ b/plugins/ui/src/deephaven/ui/components/radio_group.py @@ -0,0 +1,14 @@ +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/spectrum/range_slider.py b/plugins/ui/src/deephaven/ui/components/range_slider.py similarity index 98% rename from plugins/ui/src/deephaven/ui/components/spectrum/range_slider.py rename to plugins/ui/src/deephaven/ui/components/range_slider.py index 1310319e4..9587abe95 100644 --- a/plugins/ui/src/deephaven/ui/components/spectrum/range_slider.py +++ b/plugins/ui/src/deephaven/ui/components/range_slider.py @@ -1,11 +1,11 @@ from __future__ import annotations from typing import Any, Callable -from .events import ( +from .types import ( + # Events SliderChange, SliderChangeCallable, Orientation, -) -from .layout import ( + # Layout AlignSelf, CSSProperties, DimensionValue, @@ -15,8 +15,8 @@ Position, LabelPosition, ) -from .basic import spectrum_element -from ...elements import Element +from .basic import component_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 spectrum_element( + return component_element( "RangeSlider", start_name=start_name, end_name=end_name, diff --git a/plugins/ui/src/deephaven/ui/components/row.py b/plugins/ui/src/deephaven/ui/components/row.py index 46700867b..6b1cd8c60 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 ..elements import BaseElement +from .basic import component_element def row(*children: Any, height: float | None = None, **kwargs: Any): @@ -13,6 +13,4 @@ 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 BaseElement( - "deephaven.ui.components.Row", *children, height=height, **kwargs - ) + return component_element("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 d3cb7eb03..3aa17674a 100644 --- a/plugins/ui/src/deephaven/ui/components/section.py +++ b/plugins/ui/src/deephaven/ui/components/section.py @@ -3,7 +3,8 @@ from typing import Any from .._internal.utils import create_props -from ..elements import Element, BaseElement +from ..elements import Element +from .basic import component_element from .item import Item SectionElement = Element @@ -24,4 +25,4 @@ def section(*children: Item, title: str | None = None, **props: Any) -> SectionE children, props = create_props(locals()) - return BaseElement("deephaven.ui.components.Section", *children, **props) + return component_element("Section", *children, **props) diff --git a/plugins/ui/src/deephaven/ui/components/spectrum/slider.py b/plugins/ui/src/deephaven/ui/components/slider.py similarity index 96% rename from plugins/ui/src/deephaven/ui/components/spectrum/slider.py rename to plugins/ui/src/deephaven/ui/components/slider.py index 92aafbbe6..e15f8675f 100644 --- a/plugins/ui/src/deephaven/ui/components/spectrum/slider.py +++ b/plugins/ui/src/deephaven/ui/components/slider.py @@ -1,15 +1,9 @@ from __future__ import annotations from typing import Any, Callable -from .accessibility import AriaExpanded, AriaHasPopup, AriaPressed -from .events import ( - ButtonType, - FocusEventCallable, - KeyboardEventCallable, - PressEventCallable, - StaticColor, +from .types import ( + # Events Orientation, -) -from .layout import ( + # Layout AlignSelf, CSSProperties, DimensionValue, @@ -19,8 +13,8 @@ Position, LabelPosition, ) -from .basic import spectrum_element -from ...elements import Element +from .basic import component_element +from ..elements import Element def slider( @@ -152,7 +146,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 spectrum_element( + return component_element( "Slider", is_filled=is_filled, fill_offset=fill_offset, diff --git a/plugins/ui/src/deephaven/ui/components/spectrum/__init__.py b/plugins/ui/src/deephaven/ui/components/spectrum/__init__.py deleted file mode 100644 index 3d6ea30cb..000000000 --- a/plugins/ui/src/deephaven/ui/components/spectrum/__init__.py +++ /dev/null @@ -1,16 +0,0 @@ -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/stack.py b/plugins/ui/src/deephaven/ui/components/stack.py index 9687145e9..d3e42cc75 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 ..elements import BaseElement +from .basic import component_element 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 BaseElement( - "deephaven.ui.components.Stack", + return component_element( + "Stack", *children, height=height, width=width, diff --git a/plugins/ui/src/deephaven/ui/components/spectrum/text_field.py b/plugins/ui/src/deephaven/ui/components/text_field.py similarity index 98% rename from plugins/ui/src/deephaven/ui/components/spectrum/text_field.py rename to plugins/ui/src/deephaven/ui/components/text_field.py index 9635317fa..e8b84a99f 100644 --- a/plugins/ui/src/deephaven/ui/components/spectrum/text_field.py +++ b/plugins/ui/src/deephaven/ui/components/text_field.py @@ -1,11 +1,13 @@ from __future__ import annotations from typing import Any, Callable -from .accessibility import AriaExpanded, AriaHasPopup, AriaAutoComplete -from .events import ( +from .types import ( + # Accessibility + AriaHasPopup, + AriaAutoComplete, + # Events FocusEventCallable, KeyboardEventCallable, -) -from .layout import ( + # Layout AlignSelf, CSSProperties, DimensionValue, @@ -15,15 +17,14 @@ Position, LabelPosition, Align, -) -from .validate import ( + # Validation TextFieldType, TextFieldInputMode, TextFieldValidationState, NecessityIndicator, ) -from .basic import spectrum_element -from ...elements import Element +from .basic import component_element +from ..elements import Element def text_field( @@ -188,7 +189,7 @@ def text_field( UNSAFE_style: A CSS style to apply to the element. """ - return spectrum_element( + return component_element( "TextField", icon=icon, is_quiet=is_quiet, diff --git a/plugins/ui/src/deephaven/ui/components/spectrum/toggle_button.py b/plugins/ui/src/deephaven/ui/components/toggle_button.py similarity index 97% rename from plugins/ui/src/deephaven/ui/components/spectrum/toggle_button.py rename to plugins/ui/src/deephaven/ui/components/toggle_button.py index cf56fc405..d86ce2ba5 100644 --- a/plugins/ui/src/deephaven/ui/components/spectrum/toggle_button.py +++ b/plugins/ui/src/deephaven/ui/components/toggle_button.py @@ -1,14 +1,17 @@ from __future__ import annotations from typing import Any, Callable -from .accessibility import AriaExpanded, AriaHasPopup, AriaPressed -from .events import ( +from .types import ( + # Accessibility + AriaExpanded, + AriaHasPopup, + AriaPressed, + # Events ButtonType, FocusEventCallable, KeyboardEventCallable, PressEventCallable, StaticColor, -) -from .layout import ( + # Layout AlignSelf, CSSProperties, DimensionValue, @@ -17,8 +20,8 @@ Number, Position, ) -from .basic import spectrum_element -from ...elements import Element +from .basic import component_element +from ..elements import Element def toggle_button( @@ -165,7 +168,7 @@ def toggle_button( UNSAFE_style: A CSS style to apply to the element. """ - return spectrum_element( + return component_element( "ToggleButton", *children, is_emphasized=is_emphasized, diff --git a/plugins/ui/src/deephaven/ui/components/types/__init__.py b/plugins/ui/src/deephaven/ui/components/types/__init__.py new file mode 100644 index 000000000..6d701a1f6 --- /dev/null +++ b/plugins/ui/src/deephaven/ui/components/types/__init__.py @@ -0,0 +1,6 @@ +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/deephaven/ui/components/spectrum/accessibility.py b/plugins/ui/src/deephaven/ui/components/types/accessibility.py similarity index 100% rename from plugins/ui/src/deephaven/ui/components/spectrum/accessibility.py rename to plugins/ui/src/deephaven/ui/components/types/accessibility.py diff --git a/plugins/ui/src/deephaven/ui/components/spectrum/combo_box.py b/plugins/ui/src/deephaven/ui/components/types/combo_box.py similarity index 100% rename from plugins/ui/src/deephaven/ui/components/spectrum/combo_box.py rename to plugins/ui/src/deephaven/ui/components/types/combo_box.py diff --git a/plugins/ui/src/deephaven/ui/components/spectrum/date_picker.py b/plugins/ui/src/deephaven/ui/components/types/date_picker.py similarity index 100% rename from plugins/ui/src/deephaven/ui/components/spectrum/date_picker.py rename to plugins/ui/src/deephaven/ui/components/types/date_picker.py diff --git a/plugins/ui/src/deephaven/ui/components/spectrum/events.py b/plugins/ui/src/deephaven/ui/components/types/events.py similarity index 100% rename from plugins/ui/src/deephaven/ui/components/spectrum/events.py rename to plugins/ui/src/deephaven/ui/components/types/events.py diff --git a/plugins/ui/src/deephaven/ui/components/spectrum/layout.py b/plugins/ui/src/deephaven/ui/components/types/layout.py similarity index 100% rename from plugins/ui/src/deephaven/ui/components/spectrum/layout.py rename to plugins/ui/src/deephaven/ui/components/types/layout.py diff --git a/plugins/ui/src/deephaven/ui/components/spectrum/validate.py b/plugins/ui/src/deephaven/ui/components/types/validate.py similarity index 100% rename from plugins/ui/src/deephaven/ui/components/spectrum/validate.py rename to plugins/ui/src/deephaven/ui/components/types/validate.py diff --git a/plugins/ui/src/js/package.json b/plugins/ui/src/js/package.json index 1475502b2..3663f2248 100644 --- a/plugins/ui/src/js/package.json +++ b/plugins/ui/src/js/package.json @@ -41,22 +41,21 @@ "react-dom": "^17.0.2" }, "dependencies": { - "@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", + "@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", "@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 24383121a..6fffd69de 100644 --- a/plugins/ui/src/js/src/elements/ElementConstants.ts +++ b/plugins/ui/src/js/src/elements/ElementConstants.ts @@ -31,6 +31,8 @@ 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 64edc1ce0..930e338ad 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 '@adobe/react-spectrum'; +import { Icon } from '@deephaven/components'; 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 new file mode 100644 index 000000000..313f5c2a3 --- /dev/null +++ b/plugins/ui/src/js/src/elements/Radio.tsx @@ -0,0 +1,40 @@ +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 new file mode 100644 index 000000000..b44031e55 --- /dev/null +++ b/plugins/ui/src/js/src/elements/RadioGroup.tsx @@ -0,0 +1,39 @@ +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 new file mode 100644 index 000000000..ad8a8ecb7 --- /dev/null +++ b/plugins/ui/src/js/src/elements/SerializedPropTypes.ts @@ -0,0 +1,48 @@ +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 d070f9d04..ffb624b3b 100644 --- a/plugins/ui/src/js/src/elements/SpectrumElementUtils.ts +++ b/plugins/ui/src/js/src/elements/SpectrumElementUtils.ts @@ -1,18 +1,14 @@ -import { ButtonGroup, Checkbox } from '@adobe/react-spectrum'; import { ValueOf } from '@deephaven/utils'; import { - ActionGroup, - ActionMenu, + ButtonGroup, Content, ContextualHelp, Grid, Heading, Icon, - Item, IllustratedMessage, - ListActionGroup, - ListActionMenu, NumberField, + SpectrumCheckbox as Checkbox, Switch, Tabs, TabList, @@ -32,12 +28,12 @@ import { } from './spectrum'; import { ELEMENT_KEY, ElementNode, isElementNode } from './ElementUtils'; -export const SPECTRUM_ELEMENT_TYPE_PREFIX = 'deephaven.ui.spectrum.'; +// 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 SpectrumSupportedTypes = { ActionButton, - ActionGroup, - ActionMenu, Button, ButtonGroup, Checkbox, @@ -49,10 +45,7 @@ export const SpectrumSupportedTypes = { Heading, Icon, IllustratedMessage, - ListActionGroup, - ListActionMenu, NumberField, - Item, RangeSlider, Slider, Switch, @@ -80,11 +73,16 @@ 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 ( - isElementNode(obj) && - (obj as SpectrumElementNode)[ELEMENT_KEY].startsWith( - SPECTRUM_ELEMENT_TYPE_PREFIX - ) + name.startsWith(SPECTRUM_ELEMENT_TYPE_PREFIX) && + name.substring(SPECTRUM_ELEMENT_TYPE_PREFIX.length) in + SpectrumSupportedTypes ); } diff --git a/plugins/ui/src/js/src/elements/spectrum/ActionButton.tsx b/plugins/ui/src/js/src/elements/spectrum/ActionButton.tsx index 89ab5cdfc..064fce34a 100644 --- a/plugins/ui/src/js/src/elements/spectrum/ActionButton.tsx +++ b/plugins/ui/src/js/src/elements/spectrum/ActionButton.tsx @@ -3,10 +3,11 @@ import { ActionButton as DHCActionButton, ActionButtonProps as DHCActionButtonProps, } from '@deephaven/components'; -import { SerializedButtonEventProps, useButtonProps } from './useButtonProps'; +import { useButtonProps } from './useButtonProps'; +import { SerializedButtonEventProps } from '../SerializedPropTypes'; function ActionButton( - props: DHCActionButtonProps & SerializedButtonEventProps + props: 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 7db01e1b5..d6643c359 100644 --- a/plugins/ui/src/js/src/elements/spectrum/Button.tsx +++ b/plugins/ui/src/js/src/elements/spectrum/Button.tsx @@ -1,12 +1,10 @@ import React from 'react'; -import { - Button as SpectrumButton, - SpectrumButtonProps, -} from '@adobe/react-spectrum'; -import { SerializedButtonEventProps, useButtonProps } from './useButtonProps'; +import { SpectrumButton, SpectrumButtonProps } from '@deephaven/components'; +import { useButtonProps } from './useButtonProps'; +import { SerializedButtonEventProps } from '../SerializedPropTypes'; function Button( - props: SpectrumButtonProps & SerializedButtonEventProps + props: 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 d0daa1297..a7f67fd81 100644 --- a/plugins/ui/src/js/src/elements/spectrum/useButtonProps.ts +++ b/plugins/ui/src/js/src/elements/spectrum/useButtonProps.ts @@ -1,52 +1,11 @@ -import { - SerializedPressEventCallback, - usePressEventCallback, -} from './usePressEventCallback'; -import { - SerializedFocusEventCallback, - useFocusEventCallback, -} from './useFocusEventCallback'; -import { - SerializedKeyboardEventCallback, - useKeyboardEventCallback, -} from './useKeyboardEventCallback'; +import { usePressEventCallback } from './usePressEventCallback'; +import { useFocusEventCallback } from './useFocusEventCallback'; +import { useKeyboardEventCallback } from './useKeyboardEventCallback'; import { mapSpectrumProps } from './mapSpectrumProps'; - -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; -}; +import { SerializedButtonEventProps } from '../SerializedPropTypes'; // returns SpectrumButtonProps -export function useButtonProps( - props: SerializedButtonEventProps & T -): T & SerializedButtonEventProps { +export function useButtonProps(props: SerializedButtonEventProps): T { const { onPress: propOnPress, onPressStart: propsOnPressStart, @@ -78,5 +37,7 @@ export function useButtonProps( onKeyDown, onKeyUp, ...mapSpectrumProps(otherProps), - } as T & SerializedButtonEventProps; + } as T; } + +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 b802626b2..cd5a91634 100644 --- a/plugins/ui/src/js/src/elements/spectrum/useSelectionProps.ts +++ b/plugins/ui/src/js/src/elements/spectrum/useSelectionProps.ts @@ -80,8 +80,9 @@ export function useSelectionProps({ onChange: serializedOnChange, onSelectionChange: serializedOnSelectionChange, }: SerializedSelectionProps): SelectionProps { - const selectionModeLc = - selectionModeMaybeUppercase?.toLowerCase() as SelectionMode; + const selectionModeLc = selectionModeMaybeUppercase?.toLowerCase() as + | SelectionMode + | undefined; 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 467030437..53df13fed 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, + density: densityMaybeUppercase, selectionMode: selectionModeMaybeUppercase, onChange: serializedOnChange, onSelectionChange: serializedOnSelectionChange, ...otherProps }: SerializedListViewProps): DHListViewProps | WrappedDHListViewJSApiProps { - const densityLc = density?.toLowerCase() as Density; + const densityLc = densityMaybeUppercase?.toLowerCase() as Density | undefined; 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 76c1ed142..524e6f763 100644 --- a/plugins/ui/src/js/src/widget/WidgetUtils.tsx +++ b/plugins/ui/src/js/src/widget/WidgetUtils.tsx @@ -34,6 +34,8 @@ 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 @@ -58,6 +60,8 @@ 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 f64b5e9f1..9a1abb16f 100644 --- a/plugins/ui/src/js/vite.config.ts +++ b/plugins/ui/src/js/vite.config.ts @@ -17,7 +17,6 @@ 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 43694c37f..6fe8afd7f 100644 --- a/tests/app.d/tests.app +++ b/tests/app.d/tests.app @@ -6,3 +6,4 @@ 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 new file mode 100644 index 000000000..3d138a3c5 --- /dev/null +++ b/tests/app.d/ui_render_all.py @@ -0,0 +1,137 @@ +# 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 30c387a08..4ba733207 100644 --- a/tests/ui.spec.ts +++ b/tests/ui.spec.ts @@ -1,34 +1,41 @@ 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', '.dh-react-panel'); - await expect(page.locator('.dh-react-panel')).toHaveScreenshot(); + await openPanel(page, 'ui_component', selector.REACT_PANEL_VISIBLE); + await expect(page.locator(selector.REACT_PANEL_VISIBLE)).toHaveScreenshot(); }); test('boom component shows an error in a panel', async ({ page }) => { await gotoPage(page, ''); - await openPanel(page, 'ui_boom', '.dh-react-panel'); - await expect(page.locator('.dh-react-panel')).toBeVisible(); + await openPanel(page, 'ui_boom', selector.REACT_PANEL_VISIBLE); + await expect(page.locator(selector.REACT_PANEL_VISIBLE)).toBeVisible(); await expect( - page.locator('.dh-react-panel').getByText('Exception', { exact: true }) + page + .locator(selector.REACT_PANEL_VISIBLE) + .getByText('Exception', { exact: true }) ).toBeVisible(); await expect( page - .locator('.dh-react-panel') + .locator(selector.REACT_PANEL_VISIBLE) .getByText('BOOM! Traceback (most recent call last)') ).toBeVisible(); - await expect(page.locator('.dh-react-panel-overlay')).not.toBeVisible(); + await expect(page.locator(selector.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', '.dh-react-panel'); + await openPanel(page, 'ui_boom_counter', selector.REACT_PANEL_VISIBLE); - const panelLocator = page.locator('.dh-react-panel'); + const panelLocator = page.locator(selector.REACT_PANEL_VISIBLE); let btn = await panelLocator.getByRole('button', { name: 'Count is 0' }); await expect(btn).toBeVisible(); @@ -38,7 +45,7 @@ test('boom counter component shows error overlay after clicking the button twice await expect(btn).toBeVisible(); btn.click(); - const overlayLocator = page.locator('.dh-react-panel-overlay'); + const overlayLocator = page.locator(selector.REACT_PANEL_OVERLAY); await expect( overlayLocator.getByText('ValueError', { exact: true }) @@ -47,3 +54,9 @@ 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 new file mode 100644 index 0000000000000000000000000000000000000000..1172b696f11f8e918b8eaf04f1637e945e44588f GIT binary patch literal 75826 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

L=k zm+;T@0?gB3?1^!8$0ej2P{QBgP;Q56tX)rFfuGZlmJE5rAxtY-=6&T?E^%-!98_3KP`-C;Zk9)C{rgw8DNnO z^$`f>X?@R2F&(}Ma}Ks+$`y!2SDMpSdx>+QKg-!`uSE3(f04B#QT=)#4T)e|zJ{x$ z<%1@*t;ad~MC!AXtFJx`Kaq)?db$qs99I$;M4I8IVP!NkSd#w8biTu}BteBNtY@%^LH++MYA+^#{ zGBQnP#R05EHW_eS;pX8XI5lKD7%3S*)i_QczFJT3I=-y_I%8Np5l#uP=GXr+v#dTA z?i>V;1FbRW7rkXf<)(cNZM4PfyN#j++e<P&i=h%0+Cm}&6kjKZjX}4ib zh*urZc`i^e6Y1}?Sz)F2imL-7)|`2h5T$yU$Kx9~fY=}%3Q*K|$1+^{hY5||9~r?|Z#sX3&uVGk`Zqi~fR1{*9Uzov*=XUBGw_=L z2s2XVoS*w^krYKTtj&Cn~%AKEwV>xh7y>TJi}cp(=XOCw1a zv5<*ZgX^+Wg-(0ihWyRroJW>ov9=AOHEy2IjV0*5 za)&e+|6v42CU}sgA(G|pkOTqybrKZ#&mWU2bqL6L{5XtFmATm(o)?%%5>I{#TFKYe z{)+nCaD_v?;N&gcNtKe)G~}T7Im-l&|2UeEnOlN>V4#@Uc5{3IqSj>MgyT{Z?0sQ< zgB&oJQ&bg_NPn8Fd<1ibf`WqYt!C7q@m%cB^_od=J#U)98=*SlxP$jDEbLYDHj`O@ zv`i94r@9Ip2?=}f{Fxa6KAhf&Q=gZr_6*W53o|DG-g`vmKuv$XyVuBcrEp zZ*Nxm4xL9y-@;uf>cy@1jskuY|ZkgzcFkkHVa_bOdG9s=nQ6vUL86v=OO?0S^H zZj!;f@M!BFqmXC^Hb8qOgGF|04AK#32|&xFWFCOeQTO!ak)=~Nh>s>XGasP zO_+i3tqi`cY-<7XQ?S9Gk=$|zhq%%_7wLb-cZMu>FVF9 zP2CZS=X?+I`~EB)3Lq)g>E8HlGt&d(dhla&Z>$T`J5I$<=4(5U zKbhIrCqP3(1Htid!+6nKG#>#oN^;?j-GgI&`RQ5s?MhELq2titQoL=|V5e0hwv z3Bk`q6(tH2miVPr;dUFlc+T?OQ=yFwLDFRgO+W7go0Yx&03da^x0vJxE`S9MXX(0S z{131M#KygU|0^IjTv+7ffl+#L`XFL!4UQ}|sYN8Pw?r*~bN+iU4Cj7X^CCmN)S;Qr zaeKZJ;+HAcE3a>_2;BmfNuv69G^WXHI-H%%#mCH}>0U`;S52Hy*y zV_^`kibXd!G*rCc)+^?KyBL^4(Kig=H0pi=yV+@O>4R`b7Wg$t@FDEp6V?n^88ZT1 z9Q!k+Qgd{VB0d$)seZoKg~%;VyvK)wkb>@NxHiryq}pTpDL|NY0lfWy_f5*pLqJGa zH6rGwCw7RSH@llTdnM2)fDGgO4`Rl9#ECko6palHqkzKD2*2_+E5iiBAdah-ssnq7 zE-Dq?DW`}x7(F-yi+I+JnQN#~P4gbwV(?&ov8mi$j8T-7NcudxK9Kgxe(9;aLQY05 zIVs&S#Q4qIS6I3~#^{=0xNS}CFOPK9d>BWy0q4UW}t`xWuxR|@Zp zj<#~4rFGr{BSRt*K8IlFnkJ*0bC1qD@8uRcVapDY+5>u&IsorlX8@_#TOOpJ?V5TT zZ@5JcYGdZZY4Ry}DZl;jlHQGUIyi3OetTS6MA9zW8xMx25Q2QS47)9f$PD@MP>#MWY!Ld%Y#RnXS!2cQP7{Bmx;YW?07)U zcs@g;ysZL555<%e)&)1}x}mW1h+{+)kG{%KJ%lmuYIdAy3bXiNQk>^>*cw6T;Cg*9 z&$K;ru*nK68vViR9wMbeW5b+F14K(lm?rxyP~d#{9!*ACScs?#CNfSw@f@`y`o^x5PGmS81PF1D(xk2LY}$ zP*B_th~~B1F5FfbC^olpSdIH(;sfFwg%SxLp<*exc(ob{wwQH@AdYg4$2L~6>tSgG zc}-i6Z?uC45#a>^O1HDMemT$sIvupy0;Eo7vU>&QhDf5fx4-Xr;vA0|wHzz}*npZ< z!!vj7&#}3vzt^FG&45a5c_knVL$$KBk1?PQ$v53u;f5JnV`$3seK89Q3Mf}ESqOfc zvMc_xqv@S82Y%fbwbb*_TH}4NoO&P=DG@0>BVX&1EBtdw6L*-zvn+5mwEVE0*#;x9x9ZX1T_q z#7UNo8E&VV4&x=ru(Vhj;8jO!7*ttN9C-kH)rz66{-L75AIXtAM zqVj;GkYBaydd%!5gAmB|{<5ejCNLB19S$^NwoP92W)R`Iziw%f@xNyjVo7=BVn~E+ z!cFJqrfh+nHM_h+?Cy4q8RgoTd2E~+%=7n6CbH_OwXLnxSg2L0=YM6^ z=b7|NGGknJPl|gHwsV8{0>w@e%+(~M9G3P&ro#FPNY zX}V$5bGd%IEl#Aq_B4edNXOwD(}#P8p583}89D-C%(;%ZsL!Gq;QOu7)VsU49+)4% zo1d4dUizRhCUKwc%Z^muf>F=c*PR2=z<30^jJSn;cj!z7miqGCz1T!re$Isg#f!VF zjA$1#NPp@kJ5&sl>rBV`U|9{x{oAvIlDJZJBZI^{1pfVuS%$??7 zpxjIh>iH_jP*vIPZU=Z^&AiqZwb)nYj?{vQ`b4OCk@b^?Q2L%8aFyKI`1L7sZ+c;6 z_HbKBBEe6;t)3?K74$@c58P4?&G&i(NHn&qC zbuTbtWSmDFoYwjy1UbsT>#oVw)YfrpPhMx1i;*ea-|8!ATnW#b?%DRVF7Mi#l11A6 zg1$cE-iWIzzF8CX9c9j{W$K$mtgQJ7ZQwBJp&-*@4%uRUd{gmo2i})YSgy{0+Y{jCe)HfxUD<+5D}9IM z?uR_M`iQ4~{)p>cH`j}hZE8@xuaWZ;vKhFsPJHw12(e;F+d&Be{p`|uV?c{W>gebQ ziClas)Il3n9)4)d0qF&P)0*IspjEqx`u<{r678B4w$Q<<7tcO_bpt$&8hHbuln>{?_$2$eHf5m`OrCXZSGs!%*sZ?X zv)h>d)>tFrxUH|EbVO~dk>BISxeo4qp{*ke?1$)$2RCgTNJk{WMi_hnV=2^~M4NGb z^z_^Veb-8nh7!LL>XTXEadawdF_3B4ge~pzAY+k5E?%8n!QqcbK-S>y$_Y9H)$#O% zy%jJaM&m@C=XS@Xr{~&S`}3@YAkPJ_0s=m^6Zn}6!3_i!B!q)+i{&bi*J}6}bS1F@ z=WSH^cQAYzQK7D#GoPYv7@k^F`k@&97Z?+cT-Q53T4>b?mEl<%W%JPj`1C90m znbRi;2r4!8DgbQQ5XHQOEX%0O4JbDIUHwm%D5R^3wZc@{toYVkW2md;`lK*~em8e$ zxl?V8Mbf0&*gH6A1A8OLyG2nEq6Gk#i4@e~1GdlfiD9haLXXL&^9n5(+SZ7Z*k@VI zEDM#w(=Gk;{u|<8 z7uJN*p*4ngYA}YNf&+}f+SSdnVFTbZMF&hylEVn5jao#Vg^9^y#gyYE0Nc6js&GY0 za!J8h7s~%xw54P;zZnphSEiNoUEKF?K0YSjm-q29(3Faq)d z0|SfI(MqA;Q&|rOdtS|U1fDo8It9HXAst$jB{1Q#!0sw-?#4wV&t~$z0u`UrNw<3# zAF1H1F%9V#M;B|z$LT&QL$&yIkiM+W+IaHM47JcQ=aFOx_{3X0D+84!(?hpi|8^n+C?y@e@lExg2WXF4s=85HDm)Y{0@Is=E@hr?Hm zFYubyjEP^cVEv0bd#IKf;S3m{ds0mjjx=TppOaG# zu>=8-B@8OZzYsD`s2Ra6x5tcHV?a;VS-H-VP2WPNl1o8z|0TLi)F%C*!71Q5< zSr95~MrUv1Co8f|O9s(3=LS^Oyttu#of0T!th0|M#XA1l1;e>`YF&@)ovV-wdKWjB zOZ?fhXScmB{&{wfj_PytDO%zhu;R^aEbzca(bKAv>-gfKlY_8wPGOgbPV|$ z3LdP=b0Oe|*+_V}TwaZ4Ly^3KPZQJUCxvGN=v@7w-~X<4n0evVMQqe>!C-v9vwzTJ zuqSHJyx!reDOOSfJZ!}6#ZemI8Jrwbw!NHF!f~B>R zZDl7bb(Wt0wr^Rw3Y8yx$rdXNXA9*(n*llsg(Fm6inKRFjT%W4f(A9=8k$C|JRJ^q z7?1sN%YlzVe^chgEEUYI>tOen8EqHCu+MfRzv~iWSs!h*rWmcMIS#~_<%c&Ib_g6D zg@BcD>Lwv_Jz2+vMMUh1es!bR_nk;tE#wV%sZFwu|C^u^AV1;e27vnvICf(#(c-TzD<_#Sn`V;2t^yNj_V>OeqQ$K z%Mr*Q%+OX_d%|s0-0ND|bY>Apo9y2C2y!)t83{U>LQ|ZO@aTKGcE>?}{xLd;#Kxv} z`Jpbu39v8m0Tw;!Il9}=zS1EovYbkTV2%Rud_#;lMV^VIu_KV z!NKNMrQ5CtyP<-%?0_#=QiS0U955n-o zD8K>!LVfyrdO&T#zOue14>} zUocOz#%-LH`9pmXNmlV7WI_fb6H;-;(XpsA%jwp<-+-Y2(SjHNfDt5@^4#X^6B1f3 zsD0dc6XW&%(XT>NyoH8HJJRt+S?;nj`Tge}q`nu`eh!3(U%=bEVtkkc&(FlLVs%(Qv3&JG(Qs ze)QP!TvPla?Hn)2q#h?DfGDONX#CRWzzUvxv!yY6Rz@Lt#7|2|rqCoEeH2}|#MJ-7^L>5sa)>7^l<^;OSmDmO?* z0lh`tySH=4cJ!b4ctgP09G#sMQZ49Q-Dpq3+JI|*P% zIF_}KgY@#s$}(kP_Re=d?$OD~h8S&^J0`!j`A|Sr@L8E|z2!dta76%AbX2l*YWa2D z>L7D*=ptZksq#K!qoZPTe69aLR46shYPD)~0woa~w0~rH`~z$3sF0#727U#XpfXa$+5w0YGVi(oDSi*Xk*49Y9nY3P%XlNKi=l!s@hM zeC9%(wb0fct;KY2`#-RD9QF(irG#v8k{XXDsMZ}pdTrmapO-k7-zsE@ycQB?7{oFB zF5{yL-sF;Gt-*Id+b;sh#wwWocYS$NklC<6P6;XnNHC6k)Gl4WVLD~jleI7Y;bH^D zpS$Wm3OPSgGS*ZYsjSZ{JjFf!e*Q-)Yx-)&)~u@e^{BDkoGCV6;e0UQ1kNJ&#vZ6!&BUHi!ZMiPPc$JVsif3-|M;WWPlf=H-pIdsoa4W9t&^6Z8_G z3t=*3f}rjz@&Hx`OY|#vUe-4Az5aG6i2ZB9U~P?0Fg#7yfVr3XkM%7pY6`jspl(Ml zy8CIX#D_!Vw3yM%m%Dy{v)|UKf9+RYz`IWo5x(K!tgxEa5HME^4xWK5<;qm^(()>k zfPlcjql!V!&xM~@W6T;fEpZ=GQ%MkB(`~!MRNPwmj(ZjPUAKF(beazAoI=6sDOHsp z1}rB2mtNrT6V5_w?wD%x9Z~8x^8O}ZqO1vBh(`!{IVLjKxwF|3AALxbF|Z- z-!@$AKb9MdH5G0`_2ujFRV;f6PLG0u{iI3_?70e5ZSQy4;ekAFp=M*ViBH+!Wte zER>_8Pd_+O7vQZgK%APAE?m@RpH>Tiy0PEjOalE>@tGCU{Q1!@)ifWG-pLyofB_zFZIfmq}A$Rd?hNQX|Yf8RIIk>2P zK+VJEG>g2Br}|?TT=5o|v;X|_1G3vZ)Ux>|of%?dNVpP|kl5yq2FmO0J(BfOgW|lr zQ*tdHta+d)Uh5aFQ)I9QG7?`Ki1-1PpQJRxjAz+R8bi6NK|4f%icVI;S#amgdaldH zux1YfuQL<04Dya_sD94qeZ#o%s0P-ZMW&o|k@Dir`6DTEkw51wZJU-2>OgE0WPq$# zN5N)B2L2XgU$t_PK`F$27zwfSD zV7>f93Mda;B?T@UIr9UBv0RY_ZDj^FD^37N03S(^rpI!ka{q{}docy_lJjPI@Zg>D z<<(u3p}z~3!v=`)K-;`w@m(!Ne&;=0F*|YM2Z*3Z$;*(8-q)fH2$&=l z)Iz*x_6bh(A&l|tZr=N^082)8+))uC;=}N{7a1apD5azpHmK%lAMZ& zzk-jyY4(c>dERHr9{jAD*37Uk zfg^JV*Y#@s8*}9omn2F}`LkX&mxP{X;CVY%v(P-*({p^A+%eEU62DT7CZ;U~Mz7Y& z(>8rQ`@qsk6dpSuTfgU0>|FPTRN-xu%V~{+3K3YKA_1D~0EAdLk#=|OG+39YPI^^I#yjLTD@(NViRn`AW1g8B_%Qfd)cvI;xPAOQP*c)z$5yUx^bD@`{X#wO>=@|RG>g>+y+VBZYl&T%CC^}H6Yd;@@&|2 zu;vC=zA4wg{gJbCiA1b#z3>Kc?K{ys?992d#U6uu)X*CN3ZPJJ)6s>-J!O{|eF78k zk>yse*s6UJEwUVJ=8aAOngB_JtZOP6k8)oWOiif%apO3d>aII)IQcU!ecbbpG{ONa{1kSDokb1f z^Ml1cL#6h}$71f|P*<9WgA7!EzNr`FY)Q`0=5Gp~Ju8!(oD3-mIq(F0+WWT)>;Sxn zRmwadF>MT^1$X$4{5aY3wjD1d{ZjjpIy^9_$*ZNQ$q)J{@R)CdXbunAz>9*9^eb0D z@#YF2-vytWXVhpc%Q`1%={_hO)_6!-iNl}5DHUf+f`hyfCT@y)SzKw9%E}I;GrS?)GrFKnc~E}n zX^!HDR?(fSE}|@q3$f;{-?w7V(Yjvr{CexTIsrWF+|9aV)cjy>|E_dTi8djyZcaw~H~bs|G5;_FayE_7_5dKS>^VnQO1s+4$0>OP@dXd0=a5YR}Tp z$ONbO_Z90=LE#5ac(kxf*e1sk)QuejX92`g-c&u4)z_a8F6U>Dfbtut_>xj@Ss2O- zFL&9G@fLydUZf9W_hu#vG7c$DD^t(|!4DdW*xb3Zb6^U*B9QZV2vs9iw%6o=+lAt| zu3PfZOpEr4d!o&I$8Iaq!Ht6lQ3@o}U;$eM5yChk#KR7tJd9c2C zS1@G<`qOhXJYa{(mRWf zD&=IJe6!_}*vS?eij85_*xexhU$50!#RBtjO{_9y{!?PPRt=*=a5mYFPiHQa!lhtPru*5bwxI01n z`JxLyHJ^##OzW<%x#eM4R)bZZ+kW=It)I! z7wgWaKG&1e2~EH!#>Nt^bKCbYn$!0LjvVM$oxo2oJ`rzeakyY|8s)jBriCig>UG+G zH{DexZnLsj;N*rjurUr-6B6=z%o6;)nmjWsHrCbE?fiucDSlMfGi2KseSLjxvqrwY22MnvbZU zZFhUE%!jrM(Jib}=qRGCO6N=2$+@{izI)kNkd3IR{V^q!;-Br`D0GKSm~lMC*OS-H zB;!Sm(CYYxCNVj@PmrEI_(r!QN zQuC(~l}JxFj=15T;J!QQqMS{*B1L+pFYV+wt8q6mQ~$=ru8rnl6MRKBjOqTFEzMXD zK5Z)Q6lv8}Mq*oT`MGl~ghVTb+0m*pO`1a}-|(7N1KsQM(2QFbI-X}5V(8IHn?;TW z`ug>CsVM?Ib$ChiPx-)i-c##Er%t3L{{C7mXubJ<*90G?Yc5JBcs^{})oRJAv9VDR ztkKF{-HTA)DlJufnHxhrrN>WTP=*|ilatFVOuX)FQ*yhx{s(R@ICh{_cCRk+)rC%O z%sAh?dDHjKEffkhx~|X?AElvX!jTK11($BceUSWAc`1={^A_j?tQvFa77UinIRvM? zzS*le{H~#@BFao(&&t)d>tu3r%510wclwKDUwjm|5pfA$veA(-qH4NRut4bgC6%on zyz|T5YMqe;bv`@N;wQw38Qg|HRi>w7mAP;lP?V^#KWA;X(4)N3g<)lgjUaRu7TPZk z8Z1guIsg7d=*eW{w&bQ0vVRQq#!r)_DZ6K?NNi^WBQ-DPebmTxP1c!R|3(<1xD0!h z|9%mEcmrMksI^Vop_mXLwD^e$lxHPCRxZqg&Z9d=8?s3_`yo?UaZ?f{1FzlX)B+u9 z-vHm9sw45f0V44ixHPpWbT5n~Hl4OVKIAkVoiVnU;=|zd=w4t!`_w4cu|^UYuA=Df z^l@%hR#tIINz;|7xr11KN2RYIPdy0@TXl7H{pt#Hu{@Tf`X44H^!+c2NN@1FiZyv? zW}Ia3NUCJtPBlY?>zhFuS1MgnHu2U6RP~TKq%d2+;W#NBV*|%qR%R|ud z##17hn<~i4MF^Yb6j%=ANX0(x3b%O)O`~)YB|h@iF^~$giHeFw-*u9%X#aB&|{7I?zWmX_Pf~jxowPOhI(+~(Uup| z>r98R`t9eq)OTfHFCT*Ov@l!@w{IA77uWnS*N5fUU>7UAmc!3m*X&+|gZXIZv?xx- zAgHLWeko#imdTFTE(@=|+S}p{M_4Y;)7wAvA!i7MK~&DvStu#5TTzVKt3QMiZ%uI* z^NKWGJ`SfqwaIYf(nuYiwtc*GEA&f{Q*|$N=brH&#>@e?4y<``jm_uB0$}ktUIkcI z45`YCtiA0&CY%Ct)v~cm#Xb8Yf?J#0Gn-4}Q^Vt?`&yY6n2H3TmPvIe3!|84hprp} z#3^OtIC(G=WKs#G3^z{5ub0{bhf};NRb&XNGiVpEhAy`_u4vqn=IW*u3N!6r1yT6f$IS zsB^88i|ccXI?N+#{QUe<9niGO!sJYF0~9+B*x!rbHS`7o52r)mwUUF^J8O-Z+{QM) zUtaQ;NcSwSW1h9$z2xMCSAZS@Hak&NR-)D@v88XWr>-H_%4&gyR#_*5>9+ z#SXFCi<}S5BrYLgLI`O!jv$AxYQ5I>JcOz=pUVxP>zb+ZmX?$2iBi`!-rM#EFGuz7 zGC|3}fN^u#nA==Bffz?{JtrRtI!~lwl@N<*LF0r;gn9e*CWbo3WMJ`$R7V+RY7Sa= z;r+?TPvOVJ{g|ZyRZw0dbX%y$AlJJPaQHHqS}v?>S~8TaVwoNN0vH18`9<#TzTY3- zE`;B8Cn)=Aq8VXtg>wq1qbO7%GdVfAR0rUGToo^g!-Hz%4jV6;PQear#;1Ga;C~r` z5N__$x%tC>Xl`EKwG4cYMGiWt{{17rx;su|NlXpGfrsOQgO%cK^25x6r7q3R_Q)N9 z?=hdpi64TI?wE{rC7Yb*s$c>0zac+)UQ-ADDkfD;;feA*=fxV=7zUg?_Bb8p?zCU& zZC*Z{B`FeQ@=_fiW+?DcJ46a^WOwx{*c~-mU`xpcjm4>TqrjMo+T24!Y^fc_@ z`RCqc&4+2PCbp-!5KC3}_uaQ@`Hfx$9zIOC1`|`W(5#$U;4tjVdsQy#gyXR6CzAV=p>{(I~cI%z~Tr=$4C56v)E_`<8wJR1j_gUWs>_+f$>oG-g0 zg!-W&ZT}-QP1(MY){j||Q&Jkz-vpcN;8jY`n6Gtp$~RV3-2-oXdw+n~cNm5mRrE%7 z&-3^$!zGx81@ouv3B5}^h&!k`P)5bAZ)j)=@aeW&H$x-e%aLVTc=nzHmyiopxZ1Uv zp3d^xe^RIW0X_X9I;p705ybP2HS77rCB)T*#Npth1rHDX1OLOuR?~YFIp3d;$Q=H& zC0|62g=}%>6Os1?*+O3YHI8sD#gE7cBAbHm6V$)om*(-pQXs$cL^nRO{3J8kXlj}2siRtvqEcs8^f^@A z$5+yNj4t@oyOi`m7o_1wCymKmKDB2L(@=G zBMyyJil5&V{?~{{X)itnC0A@GT>NuGigOe5)`k^U$X$F@!13?Ym!=dVe;Z_>rK1ZC ztNo@64t)|dB<=Fz8)2@rnQjHY=D;*ydSZfYCdj_==TA)t)P*@=&`VN;dUE-lYGwnEjQf0I(F02!R$7}ryt zdk6dqko6J}48zOIc(kPjF&J&+2sbt~u)kW8M-K{T)b|M-NS;50Dl!|5+lS;;1WbW% zxw%0+O=+}~Ml&weq2@m;(sTQdVtaxZB`N7B-I|M`_#xc{n{m@%`oauItztw~vU`en z#<{2mng(Qm&Egc3ht2B*SAkV?fcfvE96Yym0mZFV#3t4Fvyp2Z<|Sgmi>U@^x;!cm zx=LhClXV_rD-qP!ozS4PqdDd=7U-Mlh>yG9wmJ@ZNEAAx@V!~ZB0dS#mbVbIdNc+4A)o8`u zc0C@i>NY$BMu63S``O!;Xqm2Wy5Xin{cFz4>2=+Cs^tEA&!Ti(%2Q!yA@H*lF?Ph{ z!u^dfEo~0dd6IEEp0yY4LuXNOKhqc0wY7Dfq(Zf?ad2`z9&y|80@ibPmXi|JV(-1k z_NzBg0CC%So~=1TKohbep^=f9&a1A|C&! z*Hp6776$CkFAahD3ZYvaK1!NW8R>a(p3Hf7DL|v>8Q{zbl=f_oL8J(uXzulsM=8}c z$A`f2R!2DBeMo|g zflqPv(xtyf9U|AzprCjOaz4emxE^3-;;u3#uKwy>LL$mHTYj9^_tgarbxItFDMO{} zMj%5j4V;*+y~8N!0v6fBydJ-_7WxX61`2#;{4RBN!5EmP9t%0aARiGIU+t|XL>Bk( z+N(ofp;p`4*1Bu+%hFzQn{ zbc4&h|4t|$yh#HvO><${q$koiwEMpjreni1s`VDS@BF^UrMn(kGj8uT$t)XlQz|(1 zG5SHV^@Y|gU05TQ(+KfoG<=Ppqq9G8X`XVb0~=zp`97W?I!XtQtUtY3@56iM{U&?c zWDz&4$^=CZqOhG0F7X355V@h!jm0)^T#w0OnSk@mFO_%n#74{^uWhPplA5K5!*6)r z#8k?7a`Q_Z%v7HgJWst(wCe1ZU)kE(;b0aJmyJAbQoZf}u7MKeY5KGzFM*b>$#gkH zYD$mly3P#`2Fgp!khY8#u#uqR))=-PlMqI&M6O6va;Q9&knp~FYxAGesK##v3-roE zo+X5y?9wg6`_hfaxb`Mh7lz9v{lYohAp9XEBg5KfuvObH3}!o!kUfD$#a%3ESdnN! zbxcLa1HcwJyBxzqlafoJhGKbbO}Q=6e0B1t`b}!};`iw6%43y9n|HvWX=rYir5W3A zyfwANDoDsFy=FS|a96&AV-9@O-Ff(3Lkb$%! zV)F>yr`oE#-W}9j!wFzQ(CDj(D?Bg&@P1~S%@LGzN=tNX_t-nXm0dA5SiU+%4(?-c zOA(;Cs~@_HlDhel1`Ihs`%GLq`47u=i0RH7M`tQudqu3*7?wExO7JG5dma$WV-q14 z?b|Ln&N}?6j00;rqB1T@ooX0E$bvE$tXbcEm;#E^(>e;aw)v;M2b(2??42RHmx}b_ zp9_{!`biVg-`_V|9`CibNf90Lisc>=C#rEUFM3&uu;wgp=Uf&HtQos?vxKRZEot0- z$>7}$Rwa=hh?x+~MlMj)zIjbH;%LT!r^C}Gq6J`A;7H1)%GV)_@VOQyqk0!&hIXla z$*ZL|0DQ*_TPp#6 zaVYd;VM5}01kG^Q%vH=(*^f6A5@i(fing7lm}$Iz-P+ccvqOLx){KVXPdk@1zkfN3 zOg}CSzVNDN3YjWgzVpLiS0%lUljS?v)Z4ZCyfuSpztqxLu5t~eIS9b=`1C-4WTCf0 z37!9ZPlDH&+GszzBI<#FaNF-g=7XO%j@-kqOcQwf^IQVASKS_<5qL!d8oebXCNfJA zS3NY%-)NY&c{+5@VTZxEsF)CN@@GW0jc96WYiGBnOJ-(r^{7`D#a4mDqTvw6m`CPO7_gwb3ogU@MF( zg}lzwP-Hr6sx_Baa)zPY8gP1f%sUN*2LLYVdnUL?0f%XUG3;WYf5u-_Q?kp`a{ z^gE!`#_r(A#_YH}%S=tU?k6uVFQ!@G6#;qFCFIj96(Rfirz$F8^u~MdnT*G`{Y~)k z+1_Uu65z3j^QAH^^ykXBjm&d|Hx`dy*IC6vIaiL=cpV!%yHsE8{8cw_=nMJ5T=ZR< zwxy~mCGF*kXxkqu-ye4T}n*7EC0soNE@u?+BxW$dvF)~R-?)N82hh9q`7G7hL zA|Ld?eUwOq;;B%gqh^6cN6M&&<{R0l8&dE*GUZ43pXR<02ezRYTHn$V1C^-Kr>3~O z7KdCYt?u53glHLoy%Y>6*0KFu&5s|*^=GJe4!Bz2TeJm#w;lqzw1(*3rXNh#iSaoX zWjP^-`HnGh8E7SuisRcgs2Co>6~Jt^Zc8gQazC>21TdEG12W;-<2`rV`E+0 z@g5FPawpvp={9m*tq0|K(|jQUt6DB%cTGY`Bo2bh_P0w6k-7|m=To4? z*p$FNYjDbhlk5Cv@|9>Mbl7$66u>sW=t{zMROgO2V+w%}5G`~B6(SKH`?)bNI$Aq- z`tV@={@#JnkKY@UqoZ+9%3=JoxBVOc#eD0@YmiouJJ_`mYmVgaeC=^2&3GlHpZeRH zcchyRy*%1%)p8&Nh~0DHuxvTR^553~t+3LuNr>rIj=z75PS|?2L@y;N=`*hNCbfa- z3K19S?N8rEQ|{6L{tASw->_I^ft}1IdZZeP=-<~jH5W)PkOCwWK)+R*+_mFj6;_5v zC@v|UUSenm@%U_KdT?{iBd_RtCkxM5I-nbYN6l7I>F}Q&Vka;NJ zarUh;f!r)54F!kxHYyLwdI-xesIs++rP29T)w<3TK|Z%#dT4pg`yZZ~=FWF4JIJ6> zP=%{8X;1jFPwen14d^<@rvms77) z-SIy#ijt@hy)TjYrqAN;>&1a8PrehQ6eL#bFZoWaKE|fKO zHPbZV@DhROUm+7~<+<5eRjM3*v)(ip!bl=O?<&m^!=z`172~X8-KW@#ONNu(-G&wG zUMj`PQ`7O7LR zn#PN&E11SiUpQ~=j|kk@xctZ}tta+Rq>A!<(RJr*u6Su111TA=WyT3Lud0^Ipj71K zSj54W<}YY#gu&(XPC%;!X@DrHZ~UfP0O6dB$s⋙xeAj;przoKfmGGgMy0BB1$CW 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 VS#965E1MAP|OxxQHSMgb4fzjzdNQ{?n|E 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�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 literal 0 HcmV?d00001 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 new file mode 100644 index 0000000000000000000000000000000000000000..377493e73d90e9e4dd896d1f19970c142f16265f GIT binary patch literal 71785 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%0AEFWipU6Nz;vC~dihxy$SP!H)+G#v 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 z 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®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