diff --git a/.gitignore b/.gitignore index a547bf3..3dca698 100644 --- a/.gitignore +++ b/.gitignore @@ -22,3 +22,7 @@ dist-ssr *.njsproj *.sln *.sw? + +# Playwright +playwright-report/ +test-results/ diff --git a/.nvmrc b/.nvmrc index 0e9dc6b..cc7ce7f 100644 --- a/.nvmrc +++ b/.nvmrc @@ -1 +1 @@ -v18.13.0 +v22.13.1 diff --git a/package-lock.json b/package-lock.json index 7f843d4..7c70d11 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,22 +9,26 @@ "version": "0.0.0", "dependencies": { "@deephaven-enterprise/jsapi-types": "1.20240723.147-beta", - "@deephaven/components": "^0.102.0", - "@deephaven/dashboard": "^0.102.0", - "@deephaven/iris-grid": "^0.102.0", - "@deephaven/jsapi-shim": "^0.102.0", + "@deephaven/components": "^0.106.2", + "@deephaven/dashboard": "^0.106.2", + "@deephaven/iris-grid": "^0.106.2", + "@deephaven/js-plugin-ag-grid": "^0.5.2", + "@deephaven/jsapi-bootstrap": "^0.106.2", + "@deephaven/jsapi-shim": "^0.106.0", "@deephaven/jsapi-types": "^1.0.0-dev0.39.5", - "@deephaven/jsapi-utils": "^0.102.0", + "@deephaven/jsapi-utils": "^0.106.2", "react": "^17.0.2", "react-dom": "^17.0.2", "react-router-dom": "^6.24.0" }, "devDependencies": { + "@playwright/test": "^1.57.0", "@types/react": "^17.0.2", "@types/react-dom": "^17.0.9", "@typescript-eslint/eslint-plugin": "^6.0.0", "@typescript-eslint/parser": "^6.0.0", "@vitejs/plugin-react": "^4.0.3", + "ag-grid-community": "^34.3.1", "eslint": "^8.45.0", "eslint-plugin-react-hooks": "^4.6.0", "eslint-plugin-react-refresh": "^0.4.3", @@ -500,6 +504,14 @@ "findup": "bin/findup.js" } }, + "node_modules/@deephaven-enterprise/jsapi-coreplus-types": { + "version": "1.20240517.510", + "resolved": "https://registry.npmjs.org/@deephaven-enterprise/jsapi-coreplus-types/-/jsapi-coreplus-types-1.20240517.510.tgz", + "integrity": "sha512-Hnm/qrmuu58I7NoTwIHr1Wgfm5r94DNCairn+nvjlFFdHGpmLuYoo6g74lqgyv9qPlr7TJfro8XLNznDYF3tWQ==", + "dependencies": { + "@deephaven/jsapi-types": "^1.0.0-dev0.39.2" + } + }, "node_modules/@deephaven-enterprise/jsapi-types": { "version": "1.20240723.147-beta", "resolved": "https://registry.npmjs.org/@deephaven-enterprise/jsapi-types/-/jsapi-types-1.20240723.147-beta.tgz", @@ -509,17 +521,17 @@ } }, "node_modules/@deephaven/chart": { - "version": "0.102.0", - "resolved": "https://registry.npmjs.org/@deephaven/chart/-/chart-0.102.0.tgz", - "integrity": "sha512-uztL+K5IlTXPVXcLzYVkO3VlyGlBTEJbqyqc3bIMsRuwiG27YSfU+Wc6B2s8OljhR1If3Ejae27bgkCAVWcKZg==", - "dependencies": { - "@deephaven/components": "^0.102.0", - "@deephaven/icons": "^0.102.0", - "@deephaven/jsapi-types": "^1.0.0-dev0.34.0", - "@deephaven/jsapi-utils": "^0.102.0", - "@deephaven/log": "^0.102.0", - "@deephaven/react-hooks": "^0.102.0", - "@deephaven/utils": "^0.102.0", + "version": "0.106.2", + "resolved": "https://registry.npmjs.org/@deephaven/chart/-/chart-0.106.2.tgz", + "integrity": "sha512-38nyYZ56wpU8DakpWS2YbrdBUS6miDh6TsC20xYRZ+HFB2Io6NEsfqvW8rtir05N3UQXxTmGAew14Vqpdhc62g==", + "dependencies": { + "@deephaven/components": "^0.106.2", + "@deephaven/icons": "^0.106.0", + "@deephaven/jsapi-types": "^1.0.0-dev0.37.2", + "@deephaven/jsapi-utils": "^0.106.2", + "@deephaven/log": "^0.106.2", + "@deephaven/react-hooks": "^0.106.2", + "@deephaven/utils": "^0.106.0", "buffer": "^6.0.3", "fast-deep-equal": "^3.1.3", "lodash.debounce": "^4.0.8", @@ -538,21 +550,22 @@ } }, "node_modules/@deephaven/components": { - "version": "0.102.0", - "resolved": "https://registry.npmjs.org/@deephaven/components/-/components-0.102.0.tgz", - "integrity": "sha512-cofLvfexDVWGdUQBbymD6DbplkIbzmuAY2MQFTO25Orj664Y0rhmA5d3nk1Bdu7XFc1nzFzoOQMm8OWEsla3nw==", + "version": "0.106.2", + "resolved": "https://registry.npmjs.org/@deephaven/components/-/components-0.106.2.tgz", + "integrity": "sha512-nQz3o2ty95SrT6+mm8BNaDAKK5jhPJdTOhxyzMUmMEJWTBSxb53hvfzP/760hpn9r5S25FqFLZc/heVZXVJ4Aw==", "dependencies": { "@adobe/react-spectrum": "3.38.0", - "@deephaven/icons": "^0.102.0", - "@deephaven/log": "^0.102.0", - "@deephaven/react-hooks": "^0.102.0", - "@deephaven/utils": "^0.102.0", + "@deephaven/icons": "^0.106.0", + "@deephaven/log": "^0.106.2", + "@deephaven/react-hooks": "^0.106.2", + "@deephaven/utils": "^0.106.0", "@fortawesome/fontawesome-svg-core": "^6.2.1", "@fortawesome/react-fontawesome": "^0.2.0", "@internationalized/date": "^3.5.5", "@react-spectrum/theme-default": "^3.5.1", "@react-spectrum/toast": "^3.0.0-beta.16", "@react-spectrum/utils": "^3.11.5", + "@react-types/combobox": "3.13.1", "@react-types/radio": "^3.8.1", "@react-types/shared": "^3.22.1", "@react-types/textfield": "^3.9.1", @@ -598,21 +611,21 @@ } }, "node_modules/@deephaven/console": { - "version": "0.102.0", - "resolved": "https://registry.npmjs.org/@deephaven/console/-/console-0.102.0.tgz", - "integrity": "sha512-3SXLkW555/Yh0WQBZwzq2VjprqyzgRk0mkN/o3yrl3GznLd6VJGspA4heVX9+nSe/bHaHdoOrXolt+b0tfQtJA==", + "version": "0.106.3", + "resolved": "https://registry.npmjs.org/@deephaven/console/-/console-0.106.3.tgz", + "integrity": "sha512-O+E7wI9PzokCrXA1iO0UKuS0JC2cGoB3tIT/4e0kMXUqGkhh4EOTMQsTBjFSkhzkCgoHy8u3cG9Ti9rvk1LFog==", "dependencies": { "@astral-sh/ruff-wasm-web": "0.6.4", - "@deephaven/chart": "^0.102.0", - "@deephaven/components": "^0.102.0", - "@deephaven/icons": "^0.102.0", - "@deephaven/jsapi-bootstrap": "^0.102.0", - "@deephaven/jsapi-types": "^1.0.0-dev0.34.0", - "@deephaven/jsapi-utils": "^0.102.0", - "@deephaven/log": "^0.102.0", - "@deephaven/react-hooks": "^0.102.0", - "@deephaven/storage": "^0.102.0", - "@deephaven/utils": "^0.102.0", + "@deephaven/chart": "^0.106.2", + "@deephaven/components": "^0.106.2", + "@deephaven/icons": "^0.106.0", + "@deephaven/jsapi-bootstrap": "^0.106.2", + "@deephaven/jsapi-types": "^1.0.0-dev0.37.2", + "@deephaven/jsapi-utils": "^0.106.2", + "@deephaven/log": "^0.106.2", + "@deephaven/react-hooks": "^0.106.2", + "@deephaven/storage": "^0.106.2", + "@deephaven/utils": "^0.106.0", "@fortawesome/react-fontawesome": "^0.2.0", "classnames": "^2.3.1", "linkifyjs": "^4.1.0", @@ -636,9 +649,9 @@ } }, "node_modules/@deephaven/console/node_modules/nanoid": { - "version": "5.0.9", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-5.0.9.tgz", - "integrity": "sha512-Aooyr6MXU6HpvvWXKoVoXwKMs/KyVakWwg7xQfv5/S/RIgJMy0Ifa45H9qqYy7pTCszrHzP21Uk4PZq2HpEM8Q==", + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-5.1.6.tgz", + "integrity": "sha512-c7+7RQ+dMB5dPwwCp4ee1/iV/q2P6aK1mTZcfr1BTuVlyW9hJYiMPybJCcnBlQtuSmTIWNeazm/zqNoZSSElBg==", "funding": [ { "type": "github", @@ -653,16 +666,16 @@ } }, "node_modules/@deephaven/dashboard": { - "version": "0.102.0", - "resolved": "https://registry.npmjs.org/@deephaven/dashboard/-/dashboard-0.102.0.tgz", - "integrity": "sha512-vi1Cr6fFW3uCt3T+XDky6fQ5V2m/8Yl0OCpDfYpmZqRdfYGsCj83FWa12OA7jUsA7vgeGWbL9X8/KJ4Lr7xW3A==", - "dependencies": { - "@deephaven/components": "^0.102.0", - "@deephaven/golden-layout": "^0.102.0", - "@deephaven/log": "^0.102.0", - "@deephaven/react-hooks": "^0.102.0", - "@deephaven/redux": "^0.102.0", - "@deephaven/utils": "^0.102.0", + "version": "0.106.4", + "resolved": "https://registry.npmjs.org/@deephaven/dashboard/-/dashboard-0.106.4.tgz", + "integrity": "sha512-PkSMbw7ykALAID3OPqKP5OggQXwjHe8MFysPLLaSI4gIYObB3y8l1PuUbMnILMdPVlbgar9m20WjrgIoLynWtg==", + "dependencies": { + "@deephaven/components": "^0.106.2", + "@deephaven/golden-layout": "^0.106.2", + "@deephaven/log": "^0.106.2", + "@deephaven/react-hooks": "^0.106.2", + "@deephaven/redux": "^0.106.4", + "@deephaven/utils": "^0.106.0", "fast-deep-equal": "^3.1.3", "lodash.ismatch": "^4.1.1", "lodash.throttle": "^4.1.1", @@ -696,19 +709,19 @@ } }, "node_modules/@deephaven/filters": { - "version": "0.102.0", - "resolved": "https://registry.npmjs.org/@deephaven/filters/-/filters-0.102.0.tgz", - "integrity": "sha512-K1NIZnDpCY43KUEijeLoL5T7qRMTrFs1JEZJSOwrqSvazcQiojz9ZgxXiLmnSCz4vPq9/cYarC05ShJklNptJg==", + "version": "0.106.0", + "resolved": "https://registry.npmjs.org/@deephaven/filters/-/filters-0.106.0.tgz", + "integrity": "sha512-3zMXnUxqy7wSsFU1/74lrTJqm7nWOblSxFgktOH8HtWXSFzzXS9G+aey2cp5YEAEFyC2qoll6jqFilSX1D36Xw==", "engines": { "node": ">=16" } }, "node_modules/@deephaven/golden-layout": { - "version": "0.102.0", - "resolved": "https://registry.npmjs.org/@deephaven/golden-layout/-/golden-layout-0.102.0.tgz", - "integrity": "sha512-Uku10hS+mPLi8xyy+rUqRWDJv4ooB1qlnxKb6qThF8rNLtnzczq41jc4SijHWWCSWtv7DaFw8HkeNuMwHrUHMw==", + "version": "0.106.2", + "resolved": "https://registry.npmjs.org/@deephaven/golden-layout/-/golden-layout-0.106.2.tgz", + "integrity": "sha512-VI2KN8B4lSC1lnlpgZs3j11ENMnq/mcCm1ulXEetjkkK6iV72hpyJRq0EKI+EEP93aiLvCKV7vCWyMDpHuzPuQ==", "dependencies": { - "@deephaven/components": "^0.102.0", + "@deephaven/components": "^0.106.2", "jquery": "^3.6.0", "nanoid": "^5.0.7" }, @@ -718,9 +731,9 @@ } }, "node_modules/@deephaven/golden-layout/node_modules/nanoid": { - "version": "5.0.9", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-5.0.9.tgz", - "integrity": "sha512-Aooyr6MXU6HpvvWXKoVoXwKMs/KyVakWwg7xQfv5/S/RIgJMy0Ifa45H9qqYy7pTCszrHzP21Uk4PZq2HpEM8Q==", + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-5.1.6.tgz", + "integrity": "sha512-c7+7RQ+dMB5dPwwCp4ee1/iV/q2P6aK1mTZcfr1BTuVlyW9hJYiMPybJCcnBlQtuSmTIWNeazm/zqNoZSSElBg==", "funding": [ { "type": "github", @@ -735,11 +748,11 @@ } }, "node_modules/@deephaven/grid": { - "version": "0.102.0", - "resolved": "https://registry.npmjs.org/@deephaven/grid/-/grid-0.102.0.tgz", - "integrity": "sha512-C3e+uxTNJA2aTM+CJsxfDeqXT50jpKn2//zVdUeAe4qoSUkPEH85A+xdMZHQX1FL6GBy8sB+szIa0NAUQ4tCDw==", + "version": "0.106.3", + "resolved": "https://registry.npmjs.org/@deephaven/grid/-/grid-0.106.3.tgz", + "integrity": "sha512-sfAwqmf3rLGiq782+ADEeii2rjk+Os+Qlh1vWdLxavYohTGpwQsVdYMzxxbktz+GR50D1WcHQrsfT+SQr4wAxg==", "dependencies": { - "@deephaven/utils": "^0.102.0", + "@deephaven/utils": "^0.106.0", "classnames": "^2.3.1", "color-convert": "^2.0.1", "event-target-shim": "^6.0.2", @@ -757,9 +770,9 @@ } }, "node_modules/@deephaven/icons": { - "version": "0.102.0", - "resolved": "https://registry.npmjs.org/@deephaven/icons/-/icons-0.102.0.tgz", - "integrity": "sha512-k5XjVhQcm679NtBVEZs8g826+fU4D6NDz6igzPs3JszuiY5ca/zGW1wWS5mZPjBGOh2urLeS0gG8E87oX8Oo3Q==", + "version": "0.106.0", + "resolved": "https://registry.npmjs.org/@deephaven/icons/-/icons-0.106.0.tgz", + "integrity": "sha512-I41Le5SkNrvg2v29ylBHWFsKeep+HxlfJ5fKvAaU67c8Z0J6PsXzOZ8WcwsPkbTdmOf2RIdKgozUMLSVjzk+YQ==", "dependencies": { "@fortawesome/fontawesome-common-types": "^6.1.1" }, @@ -769,22 +782,22 @@ } }, "node_modules/@deephaven/iris-grid": { - "version": "0.102.0", - "resolved": "https://registry.npmjs.org/@deephaven/iris-grid/-/iris-grid-0.102.0.tgz", - "integrity": "sha512-taOX/rK0oK/AH6fnU6GXke1x2FlEiWAo67XMiTsuvFYyOScIfqLyUt7l+zTVlq871oFuKGwOoy9i5aWfvnhLFg==", - "dependencies": { - "@deephaven/components": "^0.102.0", - "@deephaven/console": "^0.102.0", - "@deephaven/filters": "^0.102.0", - "@deephaven/grid": "^0.102.0", - "@deephaven/icons": "^0.102.0", - "@deephaven/jsapi-components": "^0.102.0", - "@deephaven/jsapi-types": "^1.0.0-dev0.34.0", - "@deephaven/jsapi-utils": "^0.102.0", - "@deephaven/log": "^0.102.0", - "@deephaven/react-hooks": "^0.102.0", - "@deephaven/storage": "^0.102.0", - "@deephaven/utils": "^0.102.0", + "version": "0.106.4", + "resolved": "https://registry.npmjs.org/@deephaven/iris-grid/-/iris-grid-0.106.4.tgz", + "integrity": "sha512-ntNxbfBUgj0IjErzMysWJb831LKL4R7poSBBk/FGluqUOA5tsP5SyrZ2quGU7qchQMzV0XWY8zvvtiL/xzp4MA==", + "dependencies": { + "@deephaven/components": "^0.106.2", + "@deephaven/console": "^0.106.3", + "@deephaven/filters": "^0.106.0", + "@deephaven/grid": "^0.106.3", + "@deephaven/icons": "^0.106.0", + "@deephaven/jsapi-components": "^0.106.2", + "@deephaven/jsapi-types": "^1.0.0-dev0.37.2", + "@deephaven/jsapi-utils": "^0.106.2", + "@deephaven/log": "^0.106.2", + "@deephaven/react-hooks": "^0.106.2", + "@deephaven/storage": "^0.106.2", + "@deephaven/utils": "^0.106.0", "@dnd-kit/core": "^6.1.0", "@dnd-kit/sortable": "^7.0.2", "@dnd-kit/utilities": "^3.2.2", @@ -811,9 +824,9 @@ } }, "node_modules/@deephaven/iris-grid/node_modules/nanoid": { - "version": "5.0.9", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-5.0.9.tgz", - "integrity": "sha512-Aooyr6MXU6HpvvWXKoVoXwKMs/KyVakWwg7xQfv5/S/RIgJMy0Ifa45H9qqYy7pTCszrHzP21Uk4PZq2HpEM8Q==", + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-5.1.6.tgz", + "integrity": "sha512-c7+7RQ+dMB5dPwwCp4ee1/iV/q2P6aK1mTZcfr1BTuVlyW9hJYiMPybJCcnBlQtuSmTIWNeazm/zqNoZSSElBg==", "funding": [ { "type": "github", @@ -827,16 +840,41 @@ "node": "^18 || >=20" } }, + "node_modules/@deephaven/js-plugin-ag-grid": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/@deephaven/js-plugin-ag-grid/-/js-plugin-ag-grid-0.5.2.tgz", + "integrity": "sha512-WZJpYQV3HuhfcHcX/80HhMCunV1AoXxx+HvCrSE8Y6SFOdP3/pkk2bwInCL5APv0cZBD41UsSf/5yi8KFGkt5A==", + "dependencies": { + "@deephaven-enterprise/jsapi-coreplus-types": "^1.20240517.510", + "@deephaven/icons": "^0.106.0", + "@deephaven/jsapi-bootstrap": "^0.106.2", + "@deephaven/jsapi-utils": "^0.106.2", + "@deephaven/log": "^0.106.2", + "@deephaven/plugin": "^0.106.4", + "@deephaven/redux": "^0.106.2", + "@deephaven/utils": "^0.106.0", + "ag-grid-community": "^34.3.1", + "ag-grid-enterprise": "^34.3.1", + "ag-grid-react": "^34.3.1", + "classnames": "^2.5.1", + "lodash.throttle": "^4.1.1", + "react-redux": "^7.x" + }, + "peerDependencies": { + "react": "^17.0.2 || ^18.0.0 || ^19.0.0", + "react-dom": "^17.0.2 || ^18.0.0 || ^19.0.0" + } + }, "node_modules/@deephaven/jsapi-bootstrap": { - "version": "0.102.0", - "resolved": "https://registry.npmjs.org/@deephaven/jsapi-bootstrap/-/jsapi-bootstrap-0.102.0.tgz", - "integrity": "sha512-+k/rKJKzlzCzopKG1p6IfdhHSnSvq/5LnxipQ/DK6oQq/QPC7lLjUq14ifyTDe4fS5ns/golPn6VHBmKcWFkxQ==", + "version": "0.106.2", + "resolved": "https://registry.npmjs.org/@deephaven/jsapi-bootstrap/-/jsapi-bootstrap-0.106.2.tgz", + "integrity": "sha512-6Yi5X5WddNmbPB96ta7/BK7vsSlmT15XSgGUjMEY1xy14e+dqhedfcsfeq17O7RqSRKT0glvgw2YblD5JGYl8Q==", "dependencies": { - "@deephaven/components": "^0.102.0", - "@deephaven/jsapi-types": "^1.0.0-dev0.34.0", - "@deephaven/log": "^0.102.0", - "@deephaven/react-hooks": "^0.102.0", - "@deephaven/utils": "^0.102.0" + "@deephaven/components": "^0.106.2", + "@deephaven/jsapi-types": "^1.0.0-dev0.37.2", + "@deephaven/log": "^0.106.2", + "@deephaven/react-hooks": "^0.106.2", + "@deephaven/utils": "^0.106.0" }, "engines": { "node": ">=16" @@ -846,17 +884,17 @@ } }, "node_modules/@deephaven/jsapi-components": { - "version": "0.102.0", - "resolved": "https://registry.npmjs.org/@deephaven/jsapi-components/-/jsapi-components-0.102.0.tgz", - "integrity": "sha512-MdS7OU3GBETGL8DbvAfvIg2xx/AbZddqKz9vml7KGAnDOzuCQef6fF9TjujG/bYrXyAThon1f297+RVr/JWLJw==", - "dependencies": { - "@deephaven/components": "^0.102.0", - "@deephaven/jsapi-bootstrap": "^0.102.0", - "@deephaven/jsapi-types": "^1.0.0-dev0.34.0", - "@deephaven/jsapi-utils": "^0.102.0", - "@deephaven/log": "^0.102.0", - "@deephaven/react-hooks": "^0.102.0", - "@deephaven/utils": "^0.102.0", + "version": "0.106.2", + "resolved": "https://registry.npmjs.org/@deephaven/jsapi-components/-/jsapi-components-0.106.2.tgz", + "integrity": "sha512-1cxVAqGInoSDyUvBiZ7bGxw5BNYibB+sWSHMu+5kzmLSWgN8YyB7CKP8YaWtcL0FMhdLsahmakmCXuKoyLq1qw==", + "dependencies": { + "@deephaven/components": "^0.106.2", + "@deephaven/jsapi-bootstrap": "^0.106.2", + "@deephaven/jsapi-types": "^1.0.0-dev0.37.2", + "@deephaven/jsapi-utils": "^0.106.2", + "@deephaven/log": "^0.106.2", + "@deephaven/react-hooks": "^0.106.2", + "@deephaven/utils": "^0.106.0", "@types/js-cookie": "^3.0.3", "classnames": "^2.3.2", "js-cookie": "^3.0.5", @@ -871,11 +909,11 @@ } }, "node_modules/@deephaven/jsapi-shim": { - "version": "0.102.0", - "resolved": "https://registry.npmjs.org/@deephaven/jsapi-shim/-/jsapi-shim-0.102.0.tgz", - "integrity": "sha512-BTgKBmba3YZ1BVka5JUsSYkDUe4xbNDbfSFqShreme2g/lZRIlxYcZbNhlpnvZ96Gxxvh9MLrfCD5ocCZLcY2w==", + "version": "0.106.0", + "resolved": "https://registry.npmjs.org/@deephaven/jsapi-shim/-/jsapi-shim-0.106.0.tgz", + "integrity": "sha512-SHvrruII0ixX1NHmm/2l0F99fmp3zrvRiv8KpQLd0h+lJbLXRh/WWqrTs3IXZKahAr86/c2RaydsbiMaXFTWwQ==", "dependencies": { - "@deephaven/jsapi-types": "^1.0.0-dev0.34.0", + "@deephaven/jsapi-types": "^1.0.0-dev0.37.2", "prop-types": "^15.7.2" }, "engines": { @@ -888,14 +926,14 @@ "integrity": "sha512-R3YjoTj22+d4r/yl4haq40Ep5uV2Xk7xnqZX7N1Ah/9ARPvoi7O0afv+OZQoALpWChhuhk3PvlBgpCW7AbnmoQ==" }, "node_modules/@deephaven/jsapi-utils": { - "version": "0.102.0", - "resolved": "https://registry.npmjs.org/@deephaven/jsapi-utils/-/jsapi-utils-0.102.0.tgz", - "integrity": "sha512-5bV8iOChttvU/+gxymmchiPFMBJ0RTtKzLOZ8z8tEOiW1/AV2bks+QDIOu6T7oDLpsSAFXdDg0J3MxHaw52X9Q==", - "dependencies": { - "@deephaven/filters": "^0.102.0", - "@deephaven/jsapi-types": "^1.0.0-dev0.34.0", - "@deephaven/log": "^0.102.0", - "@deephaven/utils": "^0.102.0", + "version": "0.106.2", + "resolved": "https://registry.npmjs.org/@deephaven/jsapi-utils/-/jsapi-utils-0.106.2.tgz", + "integrity": "sha512-i/0Zflqa2MuOD47Q11dcAyizVgcJLrMzKIBrj9Txv1ZFDrPxEUamUxTDh7nHysCrz3RQrlNWLiB2ijLkMFuvXw==", + "dependencies": { + "@deephaven/filters": "^0.106.0", + "@deephaven/jsapi-types": "^1.0.0-dev0.37.2", + "@deephaven/log": "^0.106.2", + "@deephaven/utils": "^0.106.0", "lodash.clamp": "^4.0.3", "nanoid": "^5.0.7" }, @@ -904,9 +942,9 @@ } }, "node_modules/@deephaven/jsapi-utils/node_modules/nanoid": { - "version": "5.0.9", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-5.0.9.tgz", - "integrity": "sha512-Aooyr6MXU6HpvvWXKoVoXwKMs/KyVakWwg7xQfv5/S/RIgJMy0Ifa45H9qqYy7pTCszrHzP21Uk4PZq2HpEM8Q==", + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-5.1.6.tgz", + "integrity": "sha512-c7+7RQ+dMB5dPwwCp4ee1/iV/q2P6aK1mTZcfr1BTuVlyW9hJYiMPybJCcnBlQtuSmTIWNeazm/zqNoZSSElBg==", "funding": [ { "type": "github", @@ -921,9 +959,9 @@ } }, "node_modules/@deephaven/log": { - "version": "0.102.0", - "resolved": "https://registry.npmjs.org/@deephaven/log/-/log-0.102.0.tgz", - "integrity": "sha512-RaWHil+xJw9FwchXjeJFuWKvNFjd/7LaiuYmPx1zXuSH1Ah7gRNKPEMKGBUC911OtRxNVBsO9P4UPccMm6PyLA==", + "version": "0.106.2", + "resolved": "https://registry.npmjs.org/@deephaven/log/-/log-0.106.2.tgz", + "integrity": "sha512-0yX5zrT51WDZnAKMlr4Lz4F/GYlsAb0YUq0sd3cSRclqD4OKmJrk57Ev8J4D23Rg4jQBwKunmQvdUatdTKcAHg==", "dependencies": { "event-target-shim": "^6.0.2", "jszip": "^3.10.1" @@ -933,18 +971,18 @@ } }, "node_modules/@deephaven/plugin": { - "version": "0.102.0", - "resolved": "https://registry.npmjs.org/@deephaven/plugin/-/plugin-0.102.0.tgz", - "integrity": "sha512-5GruTOAvMkY7rxYcisDMjLQTHAh3ptCP1f9a4f6zIoJGKJWB2VEJb2uIKrZhv6is2azSBSsxYn5j5LyH718z0g==", - "dependencies": { - "@deephaven/components": "^0.102.0", - "@deephaven/golden-layout": "^0.102.0", - "@deephaven/grid": "^0.102.0", - "@deephaven/icons": "^0.102.0", - "@deephaven/iris-grid": "^0.102.0", - "@deephaven/jsapi-types": "^1.0.0-dev0.34.0", - "@deephaven/log": "^0.102.0", - "@deephaven/react-hooks": "^0.102.0", + "version": "0.106.4", + "resolved": "https://registry.npmjs.org/@deephaven/plugin/-/plugin-0.106.4.tgz", + "integrity": "sha512-yjnKaBbYJk2Jozv8nTb9UCPv9zAs31SglNeeX1CCRGbk0u3U5Mo8e2KgsLJPszOHqxxMBgrtCRnbE5w9BYAN1w==", + "dependencies": { + "@deephaven/components": "^0.106.2", + "@deephaven/golden-layout": "^0.106.2", + "@deephaven/grid": "^0.106.3", + "@deephaven/icons": "^0.106.0", + "@deephaven/iris-grid": "^0.106.4", + "@deephaven/jsapi-types": "^1.0.0-dev0.37.2", + "@deephaven/log": "^0.106.2", + "@deephaven/react-hooks": "^0.106.2", "@fortawesome/fontawesome-common-types": "^6.1.1", "@fortawesome/react-fontawesome": "^0.2.0" }, @@ -956,13 +994,13 @@ } }, "node_modules/@deephaven/react-hooks": { - "version": "0.102.0", - "resolved": "https://registry.npmjs.org/@deephaven/react-hooks/-/react-hooks-0.102.0.tgz", - "integrity": "sha512-ewMcD8QG5P15dJ2p1pk37ZcZxomFZGa9rTmz6PlW8NyP1Ib4hW9yGdtXO1PoXUUaLRklGM1zrTv4DKdmTEG2Fg==", + "version": "0.106.2", + "resolved": "https://registry.npmjs.org/@deephaven/react-hooks/-/react-hooks-0.106.2.tgz", + "integrity": "sha512-SOr+HeLTk94Y+d8LUvR5iDAjlry3zr+EOJkkqv08NRY87hmhztYkiGTmFFXIe47DKSg0P12CaMD1Zp7wXvnEAg==", "dependencies": { "@adobe/react-spectrum": "3.38.0", - "@deephaven/log": "^0.102.0", - "@deephaven/utils": "^0.102.0", + "@deephaven/log": "^0.106.2", + "@deephaven/utils": "^0.106.0", "lodash.debounce": "^4.0.8", "lodash.throttle": "^4.1.1", "nanoid": "^5.0.7" @@ -975,9 +1013,9 @@ } }, "node_modules/@deephaven/react-hooks/node_modules/nanoid": { - "version": "5.0.9", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-5.0.9.tgz", - "integrity": "sha512-Aooyr6MXU6HpvvWXKoVoXwKMs/KyVakWwg7xQfv5/S/RIgJMy0Ifa45H9qqYy7pTCszrHzP21Uk4PZq2HpEM8Q==", + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-5.1.6.tgz", + "integrity": "sha512-c7+7RQ+dMB5dPwwCp4ee1/iV/q2P6aK1mTZcfr1BTuVlyW9hJYiMPybJCcnBlQtuSmTIWNeazm/zqNoZSSElBg==", "funding": [ { "type": "github", @@ -992,14 +1030,14 @@ } }, "node_modules/@deephaven/redux": { - "version": "0.102.0", - "resolved": "https://registry.npmjs.org/@deephaven/redux/-/redux-0.102.0.tgz", - "integrity": "sha512-5l7E6MggDStWyvY00S6xJOxsAiHOwyIUb2JDqKbzFlD1KtKrVlaGMLKUpHGK6L3/Ku213CkzmAYOMlO/D2jr6g==", - "dependencies": { - "@deephaven/jsapi-types": "^1.0.0-dev0.34.0", - "@deephaven/jsapi-utils": "^0.102.0", - "@deephaven/log": "^0.102.0", - "@deephaven/plugin": "^0.102.0", + "version": "0.106.4", + "resolved": "https://registry.npmjs.org/@deephaven/redux/-/redux-0.106.4.tgz", + "integrity": "sha512-397hFksZ6J4HKu2KOU/ddRCklL6ZHX66KfCkdzE1RwIqaMp7DL3MpuFBdQemzYoUjhnlVBhyD1Y9J+Yk+aFgpg==", + "dependencies": { + "@deephaven/jsapi-types": "^1.0.0-dev0.37.2", + "@deephaven/jsapi-utils": "^0.106.2", + "@deephaven/log": "^0.106.2", + "@deephaven/plugin": "^0.106.4", "fast-deep-equal": "^3.1.3", "proxy-memoize": "^3.0.0", "redux-thunk": "2.4.1" @@ -1012,12 +1050,12 @@ } }, "node_modules/@deephaven/storage": { - "version": "0.102.0", - "resolved": "https://registry.npmjs.org/@deephaven/storage/-/storage-0.102.0.tgz", - "integrity": "sha512-kgmHB4/gbrK4BP3dM4W7zoKEGimGVVpvJlzXVWiv/UqnFJ72FezJfJsBg3zhAEfjKsIpRhmArBL1Hq/5xHOPqA==", + "version": "0.106.2", + "resolved": "https://registry.npmjs.org/@deephaven/storage/-/storage-0.106.2.tgz", + "integrity": "sha512-qX+rr93c9kH2u9TsBxRY84ymB08f94O7IA7LFxuJtQcib6UCCguT9QuTtuu5GLo2ciAgV9MqEQJ6ay16c6oFzw==", "dependencies": { - "@deephaven/filters": "^0.102.0", - "@deephaven/log": "^0.102.0", + "@deephaven/filters": "^0.106.0", + "@deephaven/log": "^0.106.2", "lodash.throttle": "^4.1.1" }, "engines": { @@ -1028,9 +1066,9 @@ } }, "node_modules/@deephaven/utils": { - "version": "0.102.0", - "resolved": "https://registry.npmjs.org/@deephaven/utils/-/utils-0.102.0.tgz", - "integrity": "sha512-aD12/ObluzmonUtxotASZTeyOtjSiJySTC13o5y/RS9/oVwihhKURsOyAnc2h6k2BW2MDZxgencUyNg7T0w03g==", + "version": "0.106.0", + "resolved": "https://registry.npmjs.org/@deephaven/utils/-/utils-0.106.0.tgz", + "integrity": "sha512-P5EsEl/rtA/KGZDQu8FDtovERRp/muRfJgrPunZdQy9stWSW0zYBFRHnLZCEbeETdduP/q902ZIOw77WSATqCw==", "engines": { "node": ">=16" } @@ -1833,6 +1871,21 @@ "node": ">= 8" } }, + "node_modules/@playwright/test": { + "version": "1.57.0", + "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.57.0.tgz", + "integrity": "sha512-6TyEnHgd6SArQO8UO2OMTxshln3QMWBtPGrOCgs3wVEmQmwyuNtB10IZMfmYDE0riwNR1cu4q+pPcxMVtaG3TA==", + "dev": true, + "dependencies": { + "playwright": "1.57.0" + }, + "bin": { + "playwright": "cli.js" + }, + "engines": { + "node": ">=18" + } + }, "node_modules/@plotly/d3": { "version": "3.8.2", "resolved": "https://registry.npmjs.org/@plotly/d3/-/d3-3.8.2.tgz", @@ -4968,12 +5021,12 @@ } }, "node_modules/@turf/area": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@turf/area/-/area-7.2.0.tgz", - "integrity": "sha512-zuTTdQ4eoTI9nSSjerIy4QwgvxqwJVciQJ8tOPuMHbXJ9N/dNjI7bU8tasjhxas/Cx3NE9NxVHtNpYHL0FSzoA==", + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/@turf/area/-/area-7.3.1.tgz", + "integrity": "sha512-9nSiwt4zB5QDMcSoTxF28WpK1f741MNKcpUJDiHVRX08CZ4qfGWGV9ZIPQ8TVEn5RE4LyYkFuQ47Z9pdEUZE9Q==", "dependencies": { - "@turf/helpers": "^7.2.0", - "@turf/meta": "^7.2.0", + "@turf/helpers": "7.3.1", + "@turf/meta": "7.3.1", "@types/geojson": "^7946.0.10", "tslib": "^2.8.1" }, @@ -4982,12 +5035,12 @@ } }, "node_modules/@turf/bbox": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@turf/bbox/-/bbox-7.2.0.tgz", - "integrity": "sha512-wzHEjCXlYZiDludDbXkpBSmv8Zu6tPGLmJ1sXQ6qDwpLE1Ew3mcWqt8AaxfTP5QwDNQa3sf2vvgTEzNbPQkCiA==", + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/@turf/bbox/-/bbox-7.3.1.tgz", + "integrity": "sha512-/IyMKoS7P9B0ch5PIlQ6gMfoE8gRr48+cSbzlyexvEjuDuaAV1VURjH1jAthS0ipFG8RrFxFJKnp7TLL1Skong==", "dependencies": { - "@turf/helpers": "^7.2.0", - "@turf/meta": "^7.2.0", + "@turf/helpers": "7.3.1", + "@turf/meta": "7.3.1", "@types/geojson": "^7946.0.10", "tslib": "^2.8.1" }, @@ -4996,12 +5049,12 @@ } }, "node_modules/@turf/centroid": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@turf/centroid/-/centroid-7.2.0.tgz", - "integrity": "sha512-yJqDSw25T7P48au5KjvYqbDVZ7qVnipziVfZ9aSo7P2/jTE7d4BP21w0/XLi3T/9bry/t9PR1GDDDQljN4KfDw==", + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/@turf/centroid/-/centroid-7.3.1.tgz", + "integrity": "sha512-hRnsDdVBH4pX9mAjYympb2q5W8TCMUMNEjcRrAF7HTCyjIuRmjJf8vUtlzf7TTn9RXbsvPc1vtm3kLw20Jm8DQ==", "dependencies": { - "@turf/helpers": "^7.2.0", - "@turf/meta": "^7.2.0", + "@turf/helpers": "7.3.1", + "@turf/meta": "7.3.1", "@types/geojson": "^7946.0.10", "tslib": "^2.8.1" }, @@ -5010,9 +5063,9 @@ } }, "node_modules/@turf/helpers": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@turf/helpers/-/helpers-7.2.0.tgz", - "integrity": "sha512-cXo7bKNZoa7aC7ydLmUR02oB3IgDe7MxiPuRz3cCtYQHn+BJ6h1tihmamYDWWUlPHgSNF0i3ATc4WmDECZafKw==", + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/@turf/helpers/-/helpers-7.3.1.tgz", + "integrity": "sha512-zkL34JVhi5XhsuMEO0MUTIIFEJ8yiW1InMu4hu/oRqamlY4mMoZql0viEmH6Dafh/p+zOl8OYvMJ3Vm3rFshgg==", "dependencies": { "@types/geojson": "^7946.0.10", "tslib": "^2.8.1" @@ -5022,11 +5075,11 @@ } }, "node_modules/@turf/meta": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@turf/meta/-/meta-7.2.0.tgz", - "integrity": "sha512-igzTdHsQc8TV1RhPuOLVo74Px/hyPrVgVOTgjWQZzt3J9BVseCdpfY/0cJBdlSRI4S/yTmmHl7gAqjhpYH5Yaw==", + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/@turf/meta/-/meta-7.3.1.tgz", + "integrity": "sha512-NWsfOE5RVtWpLQNkfOF/RrYvLRPwwruxhZUV0UFIzHqfiRJ50aO9Y6uLY4bwCUe2TumLJQSR4yaoA72Rmr2mnQ==", "dependencies": { - "@turf/helpers": "^7.2.0", + "@turf/helpers": "7.3.1", "@types/geojson": "^7946.0.10" }, "funding": { @@ -5054,15 +5107,15 @@ } }, "node_modules/@types/estree": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz", - "integrity": "sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==", + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", + "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==", "peer": true }, "node_modules/@types/geojson": { - "version": "7946.0.15", - "resolved": "https://registry.npmjs.org/@types/geojson/-/geojson-7946.0.15.tgz", - "integrity": "sha512-9oSxFzDCT2Rj6DfcHF8G++jxBKS7mBqXl5xrRW+Kbvjry6Uduya2iiwqHPhVXpasAVMBYKkEPGgKhd3+/HZ6xA==" + "version": "7946.0.16", + "resolved": "https://registry.npmjs.org/@types/geojson/-/geojson-7946.0.16.tgz", + "integrity": "sha512-6C8nqWur3j98U6+lXDfTUWIfgvZU+EumvpHKcYjujKH7woYyLj2sUmff0tRhrqM7BohUw7Pz3ZB1jj2gW9Fvmg==" }, "node_modules/@types/geojson-vt": { "version": "3.2.5", @@ -5087,9 +5140,9 @@ "integrity": "sha512-wkw9yd1kEXOPnvEeEV1Go1MmxtBJL0RR79aOTAApecWFVu7w0NNXNqhcWgvw2YgZDYadliXkl14pa3WXw5jlCQ==" }, "node_modules/@types/json-schema": { - "version": "7.0.12", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.12.tgz", - "integrity": "sha512-Hr5Jfhc9eYOQNPYO5WLDq/n4jqijdHNlDXjuAQkkt+mWdQR+XJToOHrsD4cPaMXpn6KO7y2+wM8AZEs8VpBLVA==" + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==" }, "node_modules/@types/mapbox__point-geometry": { "version": "0.1.4", @@ -5545,9 +5598,9 @@ "integrity": "sha512-d8XPSGjfyzlXC3Xx891DJRyZfqk5JU0BJrDQcsWomFIV1/BIzPW5HDH5iDdWpqWaav0YVIEzT1RHTwWr0FFshA==" }, "node_modules/acorn": { - "version": "8.14.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.0.tgz", - "integrity": "sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==", + "version": "8.15.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", + "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", "bin": { "acorn": "bin/acorn" }, @@ -5555,6 +5608,18 @@ "node": ">=0.4.0" } }, + "node_modules/acorn-import-phases": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/acorn-import-phases/-/acorn-import-phases-1.0.4.tgz", + "integrity": "sha512-wKmbr/DDiIXzEOiWrTTUcDm24kQ2vGfZQvM2fwg2vXqR5uW6aapr7ObPtj1th32b9u90/Pf4AItvdTh42fBmVQ==", + "peer": true, + "engines": { + "node": ">=10.13.0" + }, + "peerDependencies": { + "acorn": "^8.14.0" + } + }, "node_modules/acorn-jsx": { "version": "5.3.2", "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", @@ -5564,10 +5629,85 @@ "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" } }, + "node_modules/ag-charts-community": { + "version": "12.3.1", + "resolved": "https://registry.npmjs.org/ag-charts-community/-/ag-charts-community-12.3.1.tgz", + "integrity": "sha512-uRaUFmCl8e0Y3KxjaHUYlkCPS5OtwtfTChkdpoZuBKDXqerCPTjPu+uvlun3rYUSYxScwVf2LZCI0Hfw4Vc+WQ==", + "optional": true, + "dependencies": { + "ag-charts-core": "12.3.1", + "ag-charts-locale": "12.3.1", + "ag-charts-types": "12.3.1" + } + }, + "node_modules/ag-charts-core": { + "version": "12.3.1", + "resolved": "https://registry.npmjs.org/ag-charts-core/-/ag-charts-core-12.3.1.tgz", + "integrity": "sha512-711UJ0fXengb8+4PEW4nlzWDowmbYymPcjW2eJWHRzzvttUf14hnh+wP/l/s3EGVgYkEHe9vkXFwmeOJUlkC0Q==", + "optional": true, + "dependencies": { + "ag-charts-types": "12.3.1" + } + }, + "node_modules/ag-charts-enterprise": { + "version": "12.3.1", + "resolved": "https://registry.npmjs.org/ag-charts-enterprise/-/ag-charts-enterprise-12.3.1.tgz", + "integrity": "sha512-2sQIwLfksRTcI4JVRjgQkyGq6z68UVTO/I91HKmtpukrQLsW/o0TzzHmgTtVJOXd9yO9gx2KWa2DMg0+FKdXEQ==", + "optional": true, + "dependencies": { + "ag-charts-community": "12.3.1", + "ag-charts-core": "12.3.1" + } + }, + "node_modules/ag-charts-locale": { + "version": "12.3.1", + "resolved": "https://registry.npmjs.org/ag-charts-locale/-/ag-charts-locale-12.3.1.tgz", + "integrity": "sha512-dCn7oHh3xLI576FT514aBedNQgtb5zwh/Gcj7jHvjOWYRnfH8kaekZzLzntITA6dF6E78okJfoI7CUCbYduQ4Q==", + "optional": true + }, + "node_modules/ag-charts-types": { + "version": "12.3.1", + "resolved": "https://registry.npmjs.org/ag-charts-types/-/ag-charts-types-12.3.1.tgz", + "integrity": "sha512-5216xYoawnvMXDFI6kTpPku+mH0Csiwu/FE7lsAm8Z22HEN6ciSG/V7g+IrpLWncELqksgENebCTP75PZ3CsHA==" + }, + "node_modules/ag-grid-community": { + "version": "34.3.1", + "resolved": "https://registry.npmjs.org/ag-grid-community/-/ag-grid-community-34.3.1.tgz", + "integrity": "sha512-PwlrPudsFOzGumphi2y9ihWeaUlIwKhOra/MXu2LjeV2U8DgLLcYS8CartE5Hszhn1poJHawwI9HWrxlKliwdw==", + "dependencies": { + "ag-charts-types": "12.3.1" + } + }, + "node_modules/ag-grid-enterprise": { + "version": "34.3.1", + "resolved": "https://registry.npmjs.org/ag-grid-enterprise/-/ag-grid-enterprise-34.3.1.tgz", + "integrity": "sha512-pee4Zh0gLeQED+RM+ofxNun9JSrYrE0ZVw90BibuBkhBCLXrtXtjGPiwM+Ylntl+GwJUuCXrTcVLXRHpdXVYbQ==", + "dependencies": { + "ag-grid-community": "34.3.1" + }, + "optionalDependencies": { + "ag-charts-community": "12.3.1", + "ag-charts-enterprise": "12.3.1" + } + }, + "node_modules/ag-grid-react": { + "version": "34.3.1", + "resolved": "https://registry.npmjs.org/ag-grid-react/-/ag-grid-react-34.3.1.tgz", + "integrity": "sha512-1UTlBT+xJkjNZAuf7RxK61mgxKGTPB+6XR99oIHq7cYC89kJmLbWqhHt/1XqRWF5cAgSKk8u+HtOQaN8tAZStw==", + "dependencies": { + "ag-grid-community": "34.3.1", + "prop-types": "^15.8.1" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" + } + }, "node_modules/ajv": { "version": "6.12.6", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, "dependencies": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", @@ -5618,15 +5758,6 @@ "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", "peer": true }, - "node_modules/ajv-keywords": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", - "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "peer": true, - "peerDependencies": { - "ajv": "^6.9.1" - } - }, "node_modules/almost-equal": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/almost-equal/-/almost-equal-1.1.0.tgz", @@ -5760,6 +5891,14 @@ } ] }, + "node_modules/baseline-browser-mapping": { + "version": "2.9.14", + "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.9.14.tgz", + "integrity": "sha512-B0xUquLkiGLgHhpPBqvl7GWegWBUNuujQ6kXd/r1U38ElPT6Ok8KZ8e+FpUGEc2ZoRQUzq/aUnaKFc/svWUGSg==", + "bin": { + "baseline-browser-mapping": "dist/cli.js" + } + }, "node_modules/binary-extensions": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", @@ -5835,9 +5974,9 @@ } }, "node_modules/browserslist": { - "version": "4.24.4", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.4.tgz", - "integrity": "sha512-KDi1Ny1gSePi1vm0q4oxSF8b4DR44GF4BbmS2YdhPLOEqd8pDviZOGH/GsmRwoWJ2+5Lr085X7naowMwKHDG1A==", + "version": "4.28.1", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.1.tgz", + "integrity": "sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA==", "funding": [ { "type": "opencollective", @@ -5853,10 +5992,11 @@ } ], "dependencies": { - "caniuse-lite": "^1.0.30001688", - "electron-to-chromium": "^1.5.73", - "node-releases": "^2.0.19", - "update-browserslist-db": "^1.1.1" + "baseline-browser-mapping": "^2.9.0", + "caniuse-lite": "^1.0.30001759", + "electron-to-chromium": "^1.5.263", + "node-releases": "^2.0.27", + "update-browserslist-db": "^1.2.0" }, "bin": { "browserslist": "cli.js" @@ -5903,9 +6043,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001690", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001690.tgz", - "integrity": "sha512-5ExiE3qQN6oF8Clf8ifIDcMRCRE/dMGcETG/XGMD8/XiXm6HXQgQTh1yZYLXXpSOsEUlJm1Xr7kGULZTuGtP/w==", + "version": "1.0.30001764", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001764.tgz", + "integrity": "sha512-9JGuzl2M+vPL+pz70gtMF9sHdMFbY9FJaQBi186cHKH3pSzDvzoUJUPV6fqiKIMyXbud9ZLg4F3Yza1vJ1+93g==", "funding": [ { "type": "opencollective", @@ -5997,9 +6137,9 @@ "integrity": "sha512-kgMuFyE78OC6Dyu3Dy7vcx4uy97EIbVxJB/B0eJ3bUNAkwdNcxYzgKltnyADiYwsR7SEqkkUPsEUT//OVS6XMA==" }, "node_modules/classnames": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.3.2.tgz", - "integrity": "sha512-CSbhY4cFEJRe6/GQzIk5qXZ4Jeg5pcsP7b5peFSDpffpe1cqjASH/n9UTjBwOp6XpMSTwQ8Za2K5V02ueA7Tmw==" + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.5.1.tgz", + "integrity": "sha512-saHYOzhIQs6wy2sVxTM6bUDsQO4F50V9RQ22qBpEdCW+I+/Wmke2HOl6lS6dTpdxVhb88/I6+Hs+438c3lfUow==" }, "node_modules/client-only": { "version": "0.0.1", @@ -6502,9 +6642,9 @@ "integrity": "sha512-/pjZsA1b4RPHbeWZQn66SWS8nZZWLQQ23oE3Eam7aroEFGEvwKAsJfZ9ytiEMycfzXWpca4FA9QIOehf7PocBQ==" }, "node_modules/electron-to-chromium": { - "version": "1.5.79", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.79.tgz", - "integrity": "sha512-nYOxJNxQ9Om4EC88BE4pPoNI8xwSFf8pU/BAeOl4Hh/b/i6V4biTAzwV7pXi3ARKeoYO5JZKMIXTryXSVer5RA==" + "version": "1.5.267", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.267.tgz", + "integrity": "sha512-0Drusm6MVRXSOJpGbaSVgcQsuB4hEkMpHXaVstcPmhu5LIedxs1xNK/nIxmQIU/RPC0+1/o0AVZfBTkTNJOdUw==" }, "node_modules/element-size": { "version": "1.1.1", @@ -6520,17 +6660,17 @@ } }, "node_modules/end-of-stream": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", - "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "version": "1.4.5", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.5.tgz", + "integrity": "sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==", "dependencies": { "once": "^1.4.0" } }, "node_modules/enhanced-resolve": { - "version": "5.18.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.18.0.tgz", - "integrity": "sha512-0/r0MySGYG8YqlayBZ6MuCfECmHFdJ5qyPh8s8wa5Hnm6SaFLSK1VYCbj+NKp090Nm1caZhD+QTnmxO7esYGyQ==", + "version": "5.18.4", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.18.4.tgz", + "integrity": "sha512-LgQMM4WXU3QI+SYgEc2liRgznaD5ojbmY3sb8LxyguVkIg5FxdpTkvk72te2R38/TGKxH634oLxXRGY6d7AP+Q==", "peer": true, "dependencies": { "graceful-fs": "^4.2.4", @@ -6541,9 +6681,9 @@ } }, "node_modules/es-module-lexer": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.6.0.tgz", - "integrity": "sha512-qqnD1yMU6tk/jnaMosogGySTZP8YtUgAffA9nMN+E/rjxcfRQ6IEk7IiozUjgxKoFHBGjTLnrHB/YC45r/59EQ==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-2.0.0.tgz", + "integrity": "sha512-5POEcUuZybH7IdmGsD8wlf0AI55wMecM9rVBTI/qEAy2c1kTOm3DjFYjrBdI2K3BaJjJYfYFeRtM0t9ssnRuxw==", "peer": true }, "node_modules/es5-ext": { @@ -7047,7 +7187,8 @@ "node_modules/fast-json-stable-stringify": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true }, "node_modules/fast-levenshtein": { "version": "2.0.6", @@ -7056,9 +7197,9 @@ "dev": true }, "node_modules/fast-uri": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.0.5.tgz", - "integrity": "sha512-5JnBCWpFlMo0a3ciDy/JckMzzv1U9coZrIhedq+HXxxUfDTAiS0LA8OKVao4G9BxmCVck/jtA5r3KAtRWEyD8Q==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.0.tgz", + "integrity": "sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA==", "funding": [ { "type": "github", @@ -7236,9 +7377,9 @@ "integrity": "sha512-sT5C0pwB1/e9G9AvAoLsoaJtbMGjfd/jfxo8jMCKqYYEnjZuFvqV5rehqar0538EmssjdDeiEWnKyBSTw7quoA==" }, "node_modules/gl-matrix": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/gl-matrix/-/gl-matrix-3.4.3.tgz", - "integrity": "sha512-wcCp8vu8FT22BnvKVPjXa/ICBWRq/zjFfdofZy1WSpQZpphblv12/bOQLBC1rMM7SGOFS9ltVmKOHil5+Ml7gA==" + "version": "3.4.4", + "resolved": "https://registry.npmjs.org/gl-matrix/-/gl-matrix-3.4.4.tgz", + "integrity": "sha512-latSnyDNt/8zYUB6VIJ6PCh2jBjJX6gnDsoCZ7LyW7GkqrD51EWwa9qCoGixj8YqBtETQK/xY7OmpTF8xz1DdQ==" }, "node_modules/gl-text": { "version": "1.4.0", @@ -7984,7 +8125,8 @@ "node_modules/json-schema-traverse": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true }, "node_modules/json-stable-stringify-without-jsonify": { "version": "1.0.1", @@ -8060,12 +8202,16 @@ "integrity": "sha512-pCj3PrQyATaoTYKHrgWRF3SJwsm61udVh+vuls/Rl6SptiDhgE7ziUIudAedRY9QEfynmM7/RmLEfPUyw1HPCw==" }, "node_modules/loader-runner": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", - "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==", + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.1.tgz", + "integrity": "sha512-IWqP2SCPhyVFTBtRcgMHdzlf9ul25NwaFx4wCEH/KjAXuuHY4yNjvPXsBokp8jCB936PyWRaPKUNh8NvylLp2Q==", "peer": true, "engines": { "node": ">=6.11.5" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" } }, "node_modules/locate-path": { @@ -8236,9 +8382,9 @@ } }, "node_modules/maplibre-gl/node_modules/@mapbox/tiny-sdf": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/@mapbox/tiny-sdf/-/tiny-sdf-2.0.6.tgz", - "integrity": "sha512-qMqa27TLw+ZQz5Jk+RcwZGH7BQf5G/TrutJhspsca/3SHwmgKQ1iq+d3Jxz5oysPVYTGP6aXxCo5Lk9Er6YBAA==" + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@mapbox/tiny-sdf/-/tiny-sdf-2.0.7.tgz", + "integrity": "sha512-25gQLQMcpivjOSA40g3gO6qgiFPDpWRoMfd+G/GoppPIeP6JDaMMkMrEJnMZhKyyS6iKwVt5YKu02vCUyJM3Ug==" }, "node_modules/maplibre-gl/node_modules/@mapbox/unitbezier": { "version": "0.0.1", @@ -8246,9 +8392,9 @@ "integrity": "sha512-nMkuDXFv60aBr9soUG5q+GvZYL+2KZHVvsqFCzqnkGEf46U2fvmytHaEVc1/YZbiLn8X+eR3QzX1+dwDO1lxlw==" }, "node_modules/maplibre-gl/node_modules/earcut": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/earcut/-/earcut-3.0.1.tgz", - "integrity": "sha512-0l1/0gOjESMeQyYaK5IDiPNvFeu93Z/cO0TjZh9eZ1vyCtZnA7KMZ8rQggpsJHIbGSdrqYq9OhuveadOVHCshw==" + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/earcut/-/earcut-3.0.2.tgz", + "integrity": "sha512-X7hshQbLyMJ/3RPhyObLARM2sNxxmRALLKx1+NVFFnQ9gKzmCrxm9+uLIAdBcvc8FNLpctqlQ2V6AE92Ol9UDQ==" }, "node_modules/maplibre-gl/node_modules/geojson-vt": { "version": "4.0.2", @@ -8256,9 +8402,9 @@ "integrity": "sha512-AV9ROqlNqoZEIJGfm1ncNjEXfkz2hdFlZf0qkVfmkwdKa8vj7H16YUOT81rJw1rdFhyEDlN2Tds91p/glzbl5A==" }, "node_modules/maplibre-gl/node_modules/potpack": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/potpack/-/potpack-2.0.0.tgz", - "integrity": "sha512-Q+/tYsFU9r7xoOJ+y/ZTtdVQwTWfzjbiXBDMM/JKUux3+QPP02iUuIoeBQ+Ot6oEDlC+/PGjB/5A3K7KKb7hcw==" + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/potpack/-/potpack-2.1.0.tgz", + "integrity": "sha512-pcaShQc1Shq0y+E7GqJqvZj8DTthWV1KeHGdi0Z6IAin2Oi3JnLCOfwnCo84qc+HAp52wT9nK9H7FAJp5a44GQ==" }, "node_modules/maplibre-gl/node_modules/quickselect": { "version": "3.0.0", @@ -8491,9 +8637,9 @@ "integrity": "sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==" }, "node_modules/node-releases": { - "version": "2.0.19", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.19.tgz", - "integrity": "sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==" + "version": "2.0.27", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.27.tgz", + "integrity": "sha512-nmh3lCkYZ3grZvqcCH+fjmQ7X+H0OeZgP40OierEaAptX4XofMh5kwNbWh7lBduUzCcV/8kZ+NDLCwm2iorIlA==" }, "node_modules/normalize-path": { "version": "3.0.0", @@ -8708,6 +8854,50 @@ "url": "https://github.com/sponsors/jonschlinkert" } }, + "node_modules/playwright": { + "version": "1.57.0", + "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.57.0.tgz", + "integrity": "sha512-ilYQj1s8sr2ppEJ2YVadYBN0Mb3mdo9J0wQ+UuDhzYqURwSoW4n1Xs5vs7ORwgDGmyEh33tRMeS8KhdkMoLXQw==", + "dev": true, + "dependencies": { + "playwright-core": "1.57.0" + }, + "bin": { + "playwright": "cli.js" + }, + "engines": { + "node": ">=18" + }, + "optionalDependencies": { + "fsevents": "2.3.2" + } + }, + "node_modules/playwright-core": { + "version": "1.57.0", + "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.57.0.tgz", + "integrity": "sha512-agTcKlMw/mjBWOnD6kFZttAAGHgi/Nw0CZ2o6JqWSbMlI219lAFLZZCyqByTsvVAJq5XA5H8cA6PrvBRpBWEuQ==", + "dev": true, + "bin": { + "playwright-core": "cli.js" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/playwright/node_modules/fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, "node_modules/plotly.js": { "version": "2.35.3", "resolved": "https://registry.npmjs.org/plotly.js/-/plotly.js-2.35.3.tgz", @@ -8870,9 +9060,9 @@ } }, "node_modules/postcss-selector-parser": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.0.0.tgz", - "integrity": "sha512-9RbEr1Y7FFfptd/1eEdntyjMwLeghW1bHX9GWjXo19vx4ytPQhANltvVxDggzJl7mnWM+dX28kb6cyS/4iQjlQ==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.1.tgz", + "integrity": "sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg==", "dependencies": { "cssesc": "^3.0.0", "util-deprecate": "^1.0.2" @@ -8952,6 +9142,7 @@ "version": "2.3.0", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", + "dev": true, "engines": { "node": ">=6" } @@ -9429,11 +9620,11 @@ } }, "node_modules/resolve": { - "version": "1.22.10", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.10.tgz", - "integrity": "sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==", + "version": "1.22.11", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.11.tgz", + "integrity": "sha512-RfqAvLnMl313r7c9oclB1HhUEAezcpLjz95wFH4LVuhk9JF/r22qmVP9AMmOU4vMX7Q8pN8jwNg/CSpdFnMjTQ==", "dependencies": { - "is-core-module": "^2.16.0", + "is-core-module": "^2.16.1", "path-parse": "^1.0.7", "supports-preserve-symlinks-flag": "^1.0.0" }, @@ -9566,9 +9757,12 @@ } }, "node_modules/sax": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.4.1.tgz", - "integrity": "sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==" + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.4.4.tgz", + "integrity": "sha512-1n3r/tGXO6b6VXMdFT54SHzT9ytu9yr7TaELowdYpMqY/Ao7EnlQGmAQ1+RatX7Tkkdm6hONI2owqNx2aZj5Sw==", + "engines": { + "node": ">=11.0.0" + } }, "node_modules/scheduler": { "version": "0.20.2", @@ -9580,14 +9774,15 @@ } }, "node_modules/schema-utils": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", - "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.3.3.tgz", + "integrity": "sha512-eflK8wEtyOE6+hsaRVPxvUKYCpRgzLqDTb8krvAsRIwOGlHoSgYLgBXoubGgLd2fT41/OUYdb48v4k4WWHQurA==", "peer": true, "dependencies": { - "@types/json-schema": "^7.0.8", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" + "@types/json-schema": "^7.0.9", + "ajv": "^8.9.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.1.0" }, "engines": { "node": ">= 10.13.0" @@ -9597,6 +9792,40 @@ "url": "https://opencollective.com/webpack" } }, + "node_modules/schema-utils/node_modules/ajv": { + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", + "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", + "peer": true, + "dependencies": { + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/schema-utils/node_modules/ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "peer": true, + "dependencies": { + "fast-deep-equal": "^3.1.3" + }, + "peerDependencies": { + "ajv": "^8.8.2" + } + }, + "node_modules/schema-utils/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "peer": true + }, "node_modules/semver": { "version": "7.5.4", "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", @@ -9668,9 +9897,9 @@ } }, "node_modules/shell-quote": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.2.tgz", - "integrity": "sha512-AzqKpGKjrj7EM6rKVQEPpB288oCfnrEIuyoT9cyF4nmGa7V8Zk6f7RRqYisX8X9m+Q7bd632aZW4ky7EhbQztA==", + "version": "1.8.3", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.3.tgz", + "integrity": "sha512-ObmnIF4hXNg1BqhnHmgbDETF8dLPCggZWBjkQfhZpbszZnYur5DUljTcCHii5LC3J5E0yeO/1LIMyH+UvHQgyw==", "engines": { "node": ">= 0.4" }, @@ -9898,12 +10127,16 @@ } }, "node_modules/tapable": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", - "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.3.0.tgz", + "integrity": "sha512-g9ljZiwki/LfxmQADO3dEY1CbpmXT5Hm2fJ+QaGKwSXUylMybePR7/67YW7jOrrvjEgL1Fmz5kzyAjWVWLlucg==", "peer": true, "engines": { "node": ">=6" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" } }, "node_modules/terser": { @@ -9925,9 +10158,9 @@ } }, "node_modules/terser-webpack-plugin": { - "version": "5.3.11", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.11.tgz", - "integrity": "sha512-RVCsMfuD0+cTt3EwX8hSl2Ks56EbFHWmhluwcqoPKtBnfjiT6olaq7PRIRfhyU8nnC2MrnDrBLfrD/RGE+cVXQ==", + "version": "5.3.16", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.16.tgz", + "integrity": "sha512-h9oBFCWrq78NyWWVcSwZarJkZ01c2AyGrzs1crmHZO3QUg9D61Wu4NPjBy69n7JqylFF5y+CsUZYmYEIZ3mR+Q==", "peer": true, "dependencies": { "@jridgewell/trace-mapping": "^0.3.25", @@ -9958,59 +10191,6 @@ } } }, - "node_modules/terser-webpack-plugin/node_modules/ajv": { - "version": "8.17.1", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", - "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", - "peer": true, - "dependencies": { - "fast-deep-equal": "^3.1.3", - "fast-uri": "^3.0.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/terser-webpack-plugin/node_modules/ajv-keywords": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", - "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", - "peer": true, - "dependencies": { - "fast-deep-equal": "^3.1.3" - }, - "peerDependencies": { - "ajv": "^8.8.2" - } - }, - "node_modules/terser-webpack-plugin/node_modules/json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "peer": true - }, - "node_modules/terser-webpack-plugin/node_modules/schema-utils": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.3.0.tgz", - "integrity": "sha512-Gf9qqc58SpCA/xdziiHz35F4GNIWYWZrEshUc/G/r5BnLph6xpKuLeoJoQuj5WfBIx/eQLf+hmVPYHaxJu7V2g==", - "peer": true, - "dependencies": { - "@types/json-schema": "^7.0.9", - "ajv": "^8.9.0", - "ajv-formats": "^2.1.1", - "ajv-keywords": "^5.1.0" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, "node_modules/text-table": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", @@ -10182,9 +10362,9 @@ "integrity": "sha512-vRCqFv6UhXpWxZPyGDh/F3ZpNv8/qo7w6iufLpQg9aKnQ71qM4B5KiI7Mia9COcjEhrO9LueHpMYjYzsWH3OIg==" }, "node_modules/update-browserslist-db": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.2.tgz", - "integrity": "sha512-PPypAm5qvlD7XMZC3BujecnaOxwhrtoFR+Dqkk5Aa/6DssiH0ibKoketaj9w8LP7Bont1rYeoV5plxD7RTEPRg==", + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.2.3.tgz", + "integrity": "sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==", "funding": [ { "type": "opencollective", @@ -10219,6 +10399,7 @@ "version": "4.4.1", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, "dependencies": { "punycode": "^2.1.0" } @@ -10310,9 +10491,9 @@ } }, "node_modules/watchpack": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.2.tgz", - "integrity": "sha512-TnbFSbcOCcDgjZ4piURLCbJ3nJhznVh9kw6F6iokjiFPl8ONxe9A6nMDVXDiNbrSfLILs6vB07F7wLBrwPYzJw==", + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.5.0.tgz", + "integrity": "sha512-e6vZvY6xboSwLz2GD36c16+O/2Z6fKvIf4pOXptw2rY9MVwE/TXc6RGqxD3I3x0a28lwBY7DE+76uTPSsBrrCA==", "peer": true, "dependencies": { "glob-to-regexp": "^0.4.1", @@ -10336,34 +10517,36 @@ } }, "node_modules/webpack": { - "version": "5.97.1", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.97.1.tgz", - "integrity": "sha512-EksG6gFY3L1eFMROS/7Wzgrii5mBAFe4rIr3r2BTfo7bcc+DWwFZ4OJ/miOuHJO/A85HwyI4eQ0F6IKXesO7Fg==", + "version": "5.104.1", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.104.1.tgz", + "integrity": "sha512-Qphch25abbMNtekmEGJmeRUhLDbe+QfiWTiqpKYkpCOWY64v9eyl+KRRLmqOFA2AvKPpc9DC6+u2n76tQLBoaA==", "peer": true, "dependencies": { "@types/eslint-scope": "^3.7.7", - "@types/estree": "^1.0.6", + "@types/estree": "^1.0.8", + "@types/json-schema": "^7.0.15", "@webassemblyjs/ast": "^1.14.1", "@webassemblyjs/wasm-edit": "^1.14.1", "@webassemblyjs/wasm-parser": "^1.14.1", - "acorn": "^8.14.0", - "browserslist": "^4.24.0", + "acorn": "^8.15.0", + "acorn-import-phases": "^1.0.3", + "browserslist": "^4.28.1", "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.17.1", - "es-module-lexer": "^1.2.1", + "enhanced-resolve": "^5.17.4", + "es-module-lexer": "^2.0.0", "eslint-scope": "5.1.1", "events": "^3.2.0", "glob-to-regexp": "^0.4.1", "graceful-fs": "^4.2.11", "json-parse-even-better-errors": "^2.3.1", - "loader-runner": "^4.2.0", + "loader-runner": "^4.3.1", "mime-types": "^2.1.27", "neo-async": "^2.6.2", - "schema-utils": "^3.2.0", - "tapable": "^2.1.1", - "terser-webpack-plugin": "^5.3.10", - "watchpack": "^2.4.1", - "webpack-sources": "^3.2.3" + "schema-utils": "^4.3.3", + "tapable": "^2.3.0", + "terser-webpack-plugin": "^5.3.16", + "watchpack": "^2.4.4", + "webpack-sources": "^3.3.3" }, "bin": { "webpack": "bin/webpack.js" @@ -10382,9 +10565,9 @@ } }, "node_modules/webpack-sources": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", - "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.3.3.tgz", + "integrity": "sha512-yd1RBzSGanHkitROoPFd6qsrxt+oFhg/129YzheDGqeustzX0vTZJZsSsQjVQC4yzBQ56K55XU8gaNCtIzOnTg==", "peer": true, "engines": { "node": ">=10.13.0" @@ -10428,9 +10611,9 @@ } }, "node_modules/world-calendars": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/world-calendars/-/world-calendars-1.0.3.tgz", - "integrity": "sha512-sAjLZkBnsbHkHWVhrsCU5Sa/EVuf9QqgvrN8zyJ2L/F9FR9Oc6CvVK0674+PGAtmmmYQMH98tCUSO4QLQv3/TQ==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/world-calendars/-/world-calendars-1.0.4.tgz", + "integrity": "sha512-VGRnLJS+xJmGDPodgJRnGIDwGu0s+Cr9V2HB3EzlDZ5n0qb8h5SJtGUEkjrphZYAglEiXZ6kiXdmk0H/h/uu/w==", "dependencies": { "object-assign": "^4.1.0" } @@ -10829,6 +11012,14 @@ "commander": "^2.15.1" } }, + "@deephaven-enterprise/jsapi-coreplus-types": { + "version": "1.20240517.510", + "resolved": "https://registry.npmjs.org/@deephaven-enterprise/jsapi-coreplus-types/-/jsapi-coreplus-types-1.20240517.510.tgz", + "integrity": "sha512-Hnm/qrmuu58I7NoTwIHr1Wgfm5r94DNCairn+nvjlFFdHGpmLuYoo6g74lqgyv9qPlr7TJfro8XLNznDYF3tWQ==", + "requires": { + "@deephaven/jsapi-types": "^1.0.0-dev0.39.2" + } + }, "@deephaven-enterprise/jsapi-types": { "version": "1.20240723.147-beta", "resolved": "https://registry.npmjs.org/@deephaven-enterprise/jsapi-types/-/jsapi-types-1.20240723.147-beta.tgz", @@ -10838,17 +11029,17 @@ } }, "@deephaven/chart": { - "version": "0.102.0", - "resolved": "https://registry.npmjs.org/@deephaven/chart/-/chart-0.102.0.tgz", - "integrity": "sha512-uztL+K5IlTXPVXcLzYVkO3VlyGlBTEJbqyqc3bIMsRuwiG27YSfU+Wc6B2s8OljhR1If3Ejae27bgkCAVWcKZg==", - "requires": { - "@deephaven/components": "^0.102.0", - "@deephaven/icons": "^0.102.0", - "@deephaven/jsapi-types": "^1.0.0-dev0.34.0", - "@deephaven/jsapi-utils": "^0.102.0", - "@deephaven/log": "^0.102.0", - "@deephaven/react-hooks": "^0.102.0", - "@deephaven/utils": "^0.102.0", + "version": "0.106.2", + "resolved": "https://registry.npmjs.org/@deephaven/chart/-/chart-0.106.2.tgz", + "integrity": "sha512-38nyYZ56wpU8DakpWS2YbrdBUS6miDh6TsC20xYRZ+HFB2Io6NEsfqvW8rtir05N3UQXxTmGAew14Vqpdhc62g==", + "requires": { + "@deephaven/components": "^0.106.2", + "@deephaven/icons": "^0.106.0", + "@deephaven/jsapi-types": "^1.0.0-dev0.37.2", + "@deephaven/jsapi-utils": "^0.106.2", + "@deephaven/log": "^0.106.2", + "@deephaven/react-hooks": "^0.106.2", + "@deephaven/utils": "^0.106.0", "buffer": "^6.0.3", "fast-deep-equal": "^3.1.3", "lodash.debounce": "^4.0.8", @@ -10861,21 +11052,22 @@ } }, "@deephaven/components": { - "version": "0.102.0", - "resolved": "https://registry.npmjs.org/@deephaven/components/-/components-0.102.0.tgz", - "integrity": "sha512-cofLvfexDVWGdUQBbymD6DbplkIbzmuAY2MQFTO25Orj664Y0rhmA5d3nk1Bdu7XFc1nzFzoOQMm8OWEsla3nw==", + "version": "0.106.2", + "resolved": "https://registry.npmjs.org/@deephaven/components/-/components-0.106.2.tgz", + "integrity": "sha512-nQz3o2ty95SrT6+mm8BNaDAKK5jhPJdTOhxyzMUmMEJWTBSxb53hvfzP/760hpn9r5S25FqFLZc/heVZXVJ4Aw==", "requires": { "@adobe/react-spectrum": "3.38.0", - "@deephaven/icons": "^0.102.0", - "@deephaven/log": "^0.102.0", - "@deephaven/react-hooks": "^0.102.0", - "@deephaven/utils": "^0.102.0", + "@deephaven/icons": "^0.106.0", + "@deephaven/log": "^0.106.2", + "@deephaven/react-hooks": "^0.106.2", + "@deephaven/utils": "^0.106.0", "@fortawesome/fontawesome-svg-core": "^6.2.1", "@fortawesome/react-fontawesome": "^0.2.0", "@internationalized/date": "^3.5.5", "@react-spectrum/theme-default": "^3.5.1", "@react-spectrum/toast": "^3.0.0-beta.16", "@react-spectrum/utils": "^3.11.5", + "@react-types/combobox": "3.13.1", "@react-types/radio": "^3.8.1", "@react-types/shared": "^3.22.1", "@react-types/textfield": "^3.9.1", @@ -10903,21 +11095,21 @@ } }, "@deephaven/console": { - "version": "0.102.0", - "resolved": "https://registry.npmjs.org/@deephaven/console/-/console-0.102.0.tgz", - "integrity": "sha512-3SXLkW555/Yh0WQBZwzq2VjprqyzgRk0mkN/o3yrl3GznLd6VJGspA4heVX9+nSe/bHaHdoOrXolt+b0tfQtJA==", + "version": "0.106.3", + "resolved": "https://registry.npmjs.org/@deephaven/console/-/console-0.106.3.tgz", + "integrity": "sha512-O+E7wI9PzokCrXA1iO0UKuS0JC2cGoB3tIT/4e0kMXUqGkhh4EOTMQsTBjFSkhzkCgoHy8u3cG9Ti9rvk1LFog==", "requires": { "@astral-sh/ruff-wasm-web": "0.6.4", - "@deephaven/chart": "^0.102.0", - "@deephaven/components": "^0.102.0", - "@deephaven/icons": "^0.102.0", - "@deephaven/jsapi-bootstrap": "^0.102.0", - "@deephaven/jsapi-types": "^1.0.0-dev0.34.0", - "@deephaven/jsapi-utils": "^0.102.0", - "@deephaven/log": "^0.102.0", - "@deephaven/react-hooks": "^0.102.0", - "@deephaven/storage": "^0.102.0", - "@deephaven/utils": "^0.102.0", + "@deephaven/chart": "^0.106.2", + "@deephaven/components": "^0.106.2", + "@deephaven/icons": "^0.106.0", + "@deephaven/jsapi-bootstrap": "^0.106.2", + "@deephaven/jsapi-types": "^1.0.0-dev0.37.2", + "@deephaven/jsapi-utils": "^0.106.2", + "@deephaven/log": "^0.106.2", + "@deephaven/react-hooks": "^0.106.2", + "@deephaven/storage": "^0.106.2", + "@deephaven/utils": "^0.106.0", "@fortawesome/react-fontawesome": "^0.2.0", "classnames": "^2.3.1", "linkifyjs": "^4.1.0", @@ -10934,23 +11126,23 @@ }, "dependencies": { "nanoid": { - "version": "5.0.9", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-5.0.9.tgz", - "integrity": "sha512-Aooyr6MXU6HpvvWXKoVoXwKMs/KyVakWwg7xQfv5/S/RIgJMy0Ifa45H9qqYy7pTCszrHzP21Uk4PZq2HpEM8Q==" + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-5.1.6.tgz", + "integrity": "sha512-c7+7RQ+dMB5dPwwCp4ee1/iV/q2P6aK1mTZcfr1BTuVlyW9hJYiMPybJCcnBlQtuSmTIWNeazm/zqNoZSSElBg==" } } }, "@deephaven/dashboard": { - "version": "0.102.0", - "resolved": "https://registry.npmjs.org/@deephaven/dashboard/-/dashboard-0.102.0.tgz", - "integrity": "sha512-vi1Cr6fFW3uCt3T+XDky6fQ5V2m/8Yl0OCpDfYpmZqRdfYGsCj83FWa12OA7jUsA7vgeGWbL9X8/KJ4Lr7xW3A==", - "requires": { - "@deephaven/components": "^0.102.0", - "@deephaven/golden-layout": "^0.102.0", - "@deephaven/log": "^0.102.0", - "@deephaven/react-hooks": "^0.102.0", - "@deephaven/redux": "^0.102.0", - "@deephaven/utils": "^0.102.0", + "version": "0.106.4", + "resolved": "https://registry.npmjs.org/@deephaven/dashboard/-/dashboard-0.106.4.tgz", + "integrity": "sha512-PkSMbw7ykALAID3OPqKP5OggQXwjHe8MFysPLLaSI4gIYObB3y8l1PuUbMnILMdPVlbgar9m20WjrgIoLynWtg==", + "requires": { + "@deephaven/components": "^0.106.2", + "@deephaven/golden-layout": "^0.106.2", + "@deephaven/log": "^0.106.2", + "@deephaven/react-hooks": "^0.106.2", + "@deephaven/redux": "^0.106.4", + "@deephaven/utils": "^0.106.0", "fast-deep-equal": "^3.1.3", "lodash.ismatch": "^4.1.1", "lodash.throttle": "^4.1.1", @@ -10966,33 +11158,33 @@ } }, "@deephaven/filters": { - "version": "0.102.0", - "resolved": "https://registry.npmjs.org/@deephaven/filters/-/filters-0.102.0.tgz", - "integrity": "sha512-K1NIZnDpCY43KUEijeLoL5T7qRMTrFs1JEZJSOwrqSvazcQiojz9ZgxXiLmnSCz4vPq9/cYarC05ShJklNptJg==" + "version": "0.106.0", + "resolved": "https://registry.npmjs.org/@deephaven/filters/-/filters-0.106.0.tgz", + "integrity": "sha512-3zMXnUxqy7wSsFU1/74lrTJqm7nWOblSxFgktOH8HtWXSFzzXS9G+aey2cp5YEAEFyC2qoll6jqFilSX1D36Xw==" }, "@deephaven/golden-layout": { - "version": "0.102.0", - "resolved": "https://registry.npmjs.org/@deephaven/golden-layout/-/golden-layout-0.102.0.tgz", - "integrity": "sha512-Uku10hS+mPLi8xyy+rUqRWDJv4ooB1qlnxKb6qThF8rNLtnzczq41jc4SijHWWCSWtv7DaFw8HkeNuMwHrUHMw==", + "version": "0.106.2", + "resolved": "https://registry.npmjs.org/@deephaven/golden-layout/-/golden-layout-0.106.2.tgz", + "integrity": "sha512-VI2KN8B4lSC1lnlpgZs3j11ENMnq/mcCm1ulXEetjkkK6iV72hpyJRq0EKI+EEP93aiLvCKV7vCWyMDpHuzPuQ==", "requires": { - "@deephaven/components": "^0.102.0", + "@deephaven/components": "^0.106.2", "jquery": "^3.6.0", "nanoid": "^5.0.7" }, "dependencies": { "nanoid": { - "version": "5.0.9", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-5.0.9.tgz", - "integrity": "sha512-Aooyr6MXU6HpvvWXKoVoXwKMs/KyVakWwg7xQfv5/S/RIgJMy0Ifa45H9qqYy7pTCszrHzP21Uk4PZq2HpEM8Q==" + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-5.1.6.tgz", + "integrity": "sha512-c7+7RQ+dMB5dPwwCp4ee1/iV/q2P6aK1mTZcfr1BTuVlyW9hJYiMPybJCcnBlQtuSmTIWNeazm/zqNoZSSElBg==" } } }, "@deephaven/grid": { - "version": "0.102.0", - "resolved": "https://registry.npmjs.org/@deephaven/grid/-/grid-0.102.0.tgz", - "integrity": "sha512-C3e+uxTNJA2aTM+CJsxfDeqXT50jpKn2//zVdUeAe4qoSUkPEH85A+xdMZHQX1FL6GBy8sB+szIa0NAUQ4tCDw==", + "version": "0.106.3", + "resolved": "https://registry.npmjs.org/@deephaven/grid/-/grid-0.106.3.tgz", + "integrity": "sha512-sfAwqmf3rLGiq782+ADEeii2rjk+Os+Qlh1vWdLxavYohTGpwQsVdYMzxxbktz+GR50D1WcHQrsfT+SQr4wAxg==", "requires": { - "@deephaven/utils": "^0.102.0", + "@deephaven/utils": "^0.106.0", "classnames": "^2.3.1", "color-convert": "^2.0.1", "event-target-shim": "^6.0.2", @@ -11004,30 +11196,30 @@ } }, "@deephaven/icons": { - "version": "0.102.0", - "resolved": "https://registry.npmjs.org/@deephaven/icons/-/icons-0.102.0.tgz", - "integrity": "sha512-k5XjVhQcm679NtBVEZs8g826+fU4D6NDz6igzPs3JszuiY5ca/zGW1wWS5mZPjBGOh2urLeS0gG8E87oX8Oo3Q==", + "version": "0.106.0", + "resolved": "https://registry.npmjs.org/@deephaven/icons/-/icons-0.106.0.tgz", + "integrity": "sha512-I41Le5SkNrvg2v29ylBHWFsKeep+HxlfJ5fKvAaU67c8Z0J6PsXzOZ8WcwsPkbTdmOf2RIdKgozUMLSVjzk+YQ==", "requires": { "@fortawesome/fontawesome-common-types": "^6.1.1" } }, "@deephaven/iris-grid": { - "version": "0.102.0", - "resolved": "https://registry.npmjs.org/@deephaven/iris-grid/-/iris-grid-0.102.0.tgz", - "integrity": "sha512-taOX/rK0oK/AH6fnU6GXke1x2FlEiWAo67XMiTsuvFYyOScIfqLyUt7l+zTVlq871oFuKGwOoy9i5aWfvnhLFg==", - "requires": { - "@deephaven/components": "^0.102.0", - "@deephaven/console": "^0.102.0", - "@deephaven/filters": "^0.102.0", - "@deephaven/grid": "^0.102.0", - "@deephaven/icons": "^0.102.0", - "@deephaven/jsapi-components": "^0.102.0", - "@deephaven/jsapi-types": "^1.0.0-dev0.34.0", - "@deephaven/jsapi-utils": "^0.102.0", - "@deephaven/log": "^0.102.0", - "@deephaven/react-hooks": "^0.102.0", - "@deephaven/storage": "^0.102.0", - "@deephaven/utils": "^0.102.0", + "version": "0.106.4", + "resolved": "https://registry.npmjs.org/@deephaven/iris-grid/-/iris-grid-0.106.4.tgz", + "integrity": "sha512-ntNxbfBUgj0IjErzMysWJb831LKL4R7poSBBk/FGluqUOA5tsP5SyrZ2quGU7qchQMzV0XWY8zvvtiL/xzp4MA==", + "requires": { + "@deephaven/components": "^0.106.2", + "@deephaven/console": "^0.106.3", + "@deephaven/filters": "^0.106.0", + "@deephaven/grid": "^0.106.3", + "@deephaven/icons": "^0.106.0", + "@deephaven/jsapi-components": "^0.106.2", + "@deephaven/jsapi-types": "^1.0.0-dev0.37.2", + "@deephaven/jsapi-utils": "^0.106.2", + "@deephaven/log": "^0.106.2", + "@deephaven/react-hooks": "^0.106.2", + "@deephaven/storage": "^0.106.2", + "@deephaven/utils": "^0.106.0", "@dnd-kit/core": "^6.1.0", "@dnd-kit/sortable": "^7.0.2", "@dnd-kit/utilities": "^3.2.2", @@ -11047,36 +11239,57 @@ }, "dependencies": { "nanoid": { - "version": "5.0.9", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-5.0.9.tgz", - "integrity": "sha512-Aooyr6MXU6HpvvWXKoVoXwKMs/KyVakWwg7xQfv5/S/RIgJMy0Ifa45H9qqYy7pTCszrHzP21Uk4PZq2HpEM8Q==" + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-5.1.6.tgz", + "integrity": "sha512-c7+7RQ+dMB5dPwwCp4ee1/iV/q2P6aK1mTZcfr1BTuVlyW9hJYiMPybJCcnBlQtuSmTIWNeazm/zqNoZSSElBg==" } } }, + "@deephaven/js-plugin-ag-grid": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/@deephaven/js-plugin-ag-grid/-/js-plugin-ag-grid-0.5.2.tgz", + "integrity": "sha512-WZJpYQV3HuhfcHcX/80HhMCunV1AoXxx+HvCrSE8Y6SFOdP3/pkk2bwInCL5APv0cZBD41UsSf/5yi8KFGkt5A==", + "requires": { + "@deephaven-enterprise/jsapi-coreplus-types": "^1.20240517.510", + "@deephaven/icons": "^0.106.0", + "@deephaven/jsapi-bootstrap": "^0.106.2", + "@deephaven/jsapi-utils": "^0.106.2", + "@deephaven/log": "^0.106.2", + "@deephaven/plugin": "^0.106.4", + "@deephaven/redux": "^0.106.2", + "@deephaven/utils": "^0.106.0", + "ag-grid-community": "^34.3.1", + "ag-grid-enterprise": "^34.3.1", + "ag-grid-react": "^34.3.1", + "classnames": "^2.5.1", + "lodash.throttle": "^4.1.1", + "react-redux": "^7.x" + } + }, "@deephaven/jsapi-bootstrap": { - "version": "0.102.0", - "resolved": "https://registry.npmjs.org/@deephaven/jsapi-bootstrap/-/jsapi-bootstrap-0.102.0.tgz", - "integrity": "sha512-+k/rKJKzlzCzopKG1p6IfdhHSnSvq/5LnxipQ/DK6oQq/QPC7lLjUq14ifyTDe4fS5ns/golPn6VHBmKcWFkxQ==", + "version": "0.106.2", + "resolved": "https://registry.npmjs.org/@deephaven/jsapi-bootstrap/-/jsapi-bootstrap-0.106.2.tgz", + "integrity": "sha512-6Yi5X5WddNmbPB96ta7/BK7vsSlmT15XSgGUjMEY1xy14e+dqhedfcsfeq17O7RqSRKT0glvgw2YblD5JGYl8Q==", "requires": { - "@deephaven/components": "^0.102.0", - "@deephaven/jsapi-types": "^1.0.0-dev0.34.0", - "@deephaven/log": "^0.102.0", - "@deephaven/react-hooks": "^0.102.0", - "@deephaven/utils": "^0.102.0" + "@deephaven/components": "^0.106.2", + "@deephaven/jsapi-types": "^1.0.0-dev0.37.2", + "@deephaven/log": "^0.106.2", + "@deephaven/react-hooks": "^0.106.2", + "@deephaven/utils": "^0.106.0" } }, "@deephaven/jsapi-components": { - "version": "0.102.0", - "resolved": "https://registry.npmjs.org/@deephaven/jsapi-components/-/jsapi-components-0.102.0.tgz", - "integrity": "sha512-MdS7OU3GBETGL8DbvAfvIg2xx/AbZddqKz9vml7KGAnDOzuCQef6fF9TjujG/bYrXyAThon1f297+RVr/JWLJw==", - "requires": { - "@deephaven/components": "^0.102.0", - "@deephaven/jsapi-bootstrap": "^0.102.0", - "@deephaven/jsapi-types": "^1.0.0-dev0.34.0", - "@deephaven/jsapi-utils": "^0.102.0", - "@deephaven/log": "^0.102.0", - "@deephaven/react-hooks": "^0.102.0", - "@deephaven/utils": "^0.102.0", + "version": "0.106.2", + "resolved": "https://registry.npmjs.org/@deephaven/jsapi-components/-/jsapi-components-0.106.2.tgz", + "integrity": "sha512-1cxVAqGInoSDyUvBiZ7bGxw5BNYibB+sWSHMu+5kzmLSWgN8YyB7CKP8YaWtcL0FMhdLsahmakmCXuKoyLq1qw==", + "requires": { + "@deephaven/components": "^0.106.2", + "@deephaven/jsapi-bootstrap": "^0.106.2", + "@deephaven/jsapi-types": "^1.0.0-dev0.37.2", + "@deephaven/jsapi-utils": "^0.106.2", + "@deephaven/log": "^0.106.2", + "@deephaven/react-hooks": "^0.106.2", + "@deephaven/utils": "^0.106.0", "@types/js-cookie": "^3.0.3", "classnames": "^2.3.2", "js-cookie": "^3.0.5", @@ -11085,11 +11298,11 @@ } }, "@deephaven/jsapi-shim": { - "version": "0.102.0", - "resolved": "https://registry.npmjs.org/@deephaven/jsapi-shim/-/jsapi-shim-0.102.0.tgz", - "integrity": "sha512-BTgKBmba3YZ1BVka5JUsSYkDUe4xbNDbfSFqShreme2g/lZRIlxYcZbNhlpnvZ96Gxxvh9MLrfCD5ocCZLcY2w==", + "version": "0.106.0", + "resolved": "https://registry.npmjs.org/@deephaven/jsapi-shim/-/jsapi-shim-0.106.0.tgz", + "integrity": "sha512-SHvrruII0ixX1NHmm/2l0F99fmp3zrvRiv8KpQLd0h+lJbLXRh/WWqrTs3IXZKahAr86/c2RaydsbiMaXFTWwQ==", "requires": { - "@deephaven/jsapi-types": "^1.0.0-dev0.34.0", + "@deephaven/jsapi-types": "^1.0.0-dev0.37.2", "prop-types": "^15.7.2" } }, @@ -11099,99 +11312,99 @@ "integrity": "sha512-R3YjoTj22+d4r/yl4haq40Ep5uV2Xk7xnqZX7N1Ah/9ARPvoi7O0afv+OZQoALpWChhuhk3PvlBgpCW7AbnmoQ==" }, "@deephaven/jsapi-utils": { - "version": "0.102.0", - "resolved": "https://registry.npmjs.org/@deephaven/jsapi-utils/-/jsapi-utils-0.102.0.tgz", - "integrity": "sha512-5bV8iOChttvU/+gxymmchiPFMBJ0RTtKzLOZ8z8tEOiW1/AV2bks+QDIOu6T7oDLpsSAFXdDg0J3MxHaw52X9Q==", - "requires": { - "@deephaven/filters": "^0.102.0", - "@deephaven/jsapi-types": "^1.0.0-dev0.34.0", - "@deephaven/log": "^0.102.0", - "@deephaven/utils": "^0.102.0", + "version": "0.106.2", + "resolved": "https://registry.npmjs.org/@deephaven/jsapi-utils/-/jsapi-utils-0.106.2.tgz", + "integrity": "sha512-i/0Zflqa2MuOD47Q11dcAyizVgcJLrMzKIBrj9Txv1ZFDrPxEUamUxTDh7nHysCrz3RQrlNWLiB2ijLkMFuvXw==", + "requires": { + "@deephaven/filters": "^0.106.0", + "@deephaven/jsapi-types": "^1.0.0-dev0.37.2", + "@deephaven/log": "^0.106.2", + "@deephaven/utils": "^0.106.0", "lodash.clamp": "^4.0.3", "nanoid": "^5.0.7" }, "dependencies": { "nanoid": { - "version": "5.0.9", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-5.0.9.tgz", - "integrity": "sha512-Aooyr6MXU6HpvvWXKoVoXwKMs/KyVakWwg7xQfv5/S/RIgJMy0Ifa45H9qqYy7pTCszrHzP21Uk4PZq2HpEM8Q==" + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-5.1.6.tgz", + "integrity": "sha512-c7+7RQ+dMB5dPwwCp4ee1/iV/q2P6aK1mTZcfr1BTuVlyW9hJYiMPybJCcnBlQtuSmTIWNeazm/zqNoZSSElBg==" } } }, "@deephaven/log": { - "version": "0.102.0", - "resolved": "https://registry.npmjs.org/@deephaven/log/-/log-0.102.0.tgz", - "integrity": "sha512-RaWHil+xJw9FwchXjeJFuWKvNFjd/7LaiuYmPx1zXuSH1Ah7gRNKPEMKGBUC911OtRxNVBsO9P4UPccMm6PyLA==", + "version": "0.106.2", + "resolved": "https://registry.npmjs.org/@deephaven/log/-/log-0.106.2.tgz", + "integrity": "sha512-0yX5zrT51WDZnAKMlr4Lz4F/GYlsAb0YUq0sd3cSRclqD4OKmJrk57Ev8J4D23Rg4jQBwKunmQvdUatdTKcAHg==", "requires": { "event-target-shim": "^6.0.2", "jszip": "^3.10.1" } }, "@deephaven/plugin": { - "version": "0.102.0", - "resolved": "https://registry.npmjs.org/@deephaven/plugin/-/plugin-0.102.0.tgz", - "integrity": "sha512-5GruTOAvMkY7rxYcisDMjLQTHAh3ptCP1f9a4f6zIoJGKJWB2VEJb2uIKrZhv6is2azSBSsxYn5j5LyH718z0g==", - "requires": { - "@deephaven/components": "^0.102.0", - "@deephaven/golden-layout": "^0.102.0", - "@deephaven/grid": "^0.102.0", - "@deephaven/icons": "^0.102.0", - "@deephaven/iris-grid": "^0.102.0", - "@deephaven/jsapi-types": "^1.0.0-dev0.34.0", - "@deephaven/log": "^0.102.0", - "@deephaven/react-hooks": "^0.102.0", + "version": "0.106.4", + "resolved": "https://registry.npmjs.org/@deephaven/plugin/-/plugin-0.106.4.tgz", + "integrity": "sha512-yjnKaBbYJk2Jozv8nTb9UCPv9zAs31SglNeeX1CCRGbk0u3U5Mo8e2KgsLJPszOHqxxMBgrtCRnbE5w9BYAN1w==", + "requires": { + "@deephaven/components": "^0.106.2", + "@deephaven/golden-layout": "^0.106.2", + "@deephaven/grid": "^0.106.3", + "@deephaven/icons": "^0.106.0", + "@deephaven/iris-grid": "^0.106.4", + "@deephaven/jsapi-types": "^1.0.0-dev0.37.2", + "@deephaven/log": "^0.106.2", + "@deephaven/react-hooks": "^0.106.2", "@fortawesome/fontawesome-common-types": "^6.1.1", "@fortawesome/react-fontawesome": "^0.2.0" } }, "@deephaven/react-hooks": { - "version": "0.102.0", - "resolved": "https://registry.npmjs.org/@deephaven/react-hooks/-/react-hooks-0.102.0.tgz", - "integrity": "sha512-ewMcD8QG5P15dJ2p1pk37ZcZxomFZGa9rTmz6PlW8NyP1Ib4hW9yGdtXO1PoXUUaLRklGM1zrTv4DKdmTEG2Fg==", + "version": "0.106.2", + "resolved": "https://registry.npmjs.org/@deephaven/react-hooks/-/react-hooks-0.106.2.tgz", + "integrity": "sha512-SOr+HeLTk94Y+d8LUvR5iDAjlry3zr+EOJkkqv08NRY87hmhztYkiGTmFFXIe47DKSg0P12CaMD1Zp7wXvnEAg==", "requires": { "@adobe/react-spectrum": "3.38.0", - "@deephaven/log": "^0.102.0", - "@deephaven/utils": "^0.102.0", + "@deephaven/log": "^0.106.2", + "@deephaven/utils": "^0.106.0", "lodash.debounce": "^4.0.8", "lodash.throttle": "^4.1.1", "nanoid": "^5.0.7" }, "dependencies": { "nanoid": { - "version": "5.0.9", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-5.0.9.tgz", - "integrity": "sha512-Aooyr6MXU6HpvvWXKoVoXwKMs/KyVakWwg7xQfv5/S/RIgJMy0Ifa45H9qqYy7pTCszrHzP21Uk4PZq2HpEM8Q==" + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-5.1.6.tgz", + "integrity": "sha512-c7+7RQ+dMB5dPwwCp4ee1/iV/q2P6aK1mTZcfr1BTuVlyW9hJYiMPybJCcnBlQtuSmTIWNeazm/zqNoZSSElBg==" } } }, "@deephaven/redux": { - "version": "0.102.0", - "resolved": "https://registry.npmjs.org/@deephaven/redux/-/redux-0.102.0.tgz", - "integrity": "sha512-5l7E6MggDStWyvY00S6xJOxsAiHOwyIUb2JDqKbzFlD1KtKrVlaGMLKUpHGK6L3/Ku213CkzmAYOMlO/D2jr6g==", - "requires": { - "@deephaven/jsapi-types": "^1.0.0-dev0.34.0", - "@deephaven/jsapi-utils": "^0.102.0", - "@deephaven/log": "^0.102.0", - "@deephaven/plugin": "^0.102.0", + "version": "0.106.4", + "resolved": "https://registry.npmjs.org/@deephaven/redux/-/redux-0.106.4.tgz", + "integrity": "sha512-397hFksZ6J4HKu2KOU/ddRCklL6ZHX66KfCkdzE1RwIqaMp7DL3MpuFBdQemzYoUjhnlVBhyD1Y9J+Yk+aFgpg==", + "requires": { + "@deephaven/jsapi-types": "^1.0.0-dev0.37.2", + "@deephaven/jsapi-utils": "^0.106.2", + "@deephaven/log": "^0.106.2", + "@deephaven/plugin": "^0.106.4", "fast-deep-equal": "^3.1.3", "proxy-memoize": "^3.0.0", "redux-thunk": "2.4.1" } }, "@deephaven/storage": { - "version": "0.102.0", - "resolved": "https://registry.npmjs.org/@deephaven/storage/-/storage-0.102.0.tgz", - "integrity": "sha512-kgmHB4/gbrK4BP3dM4W7zoKEGimGVVpvJlzXVWiv/UqnFJ72FezJfJsBg3zhAEfjKsIpRhmArBL1Hq/5xHOPqA==", + "version": "0.106.2", + "resolved": "https://registry.npmjs.org/@deephaven/storage/-/storage-0.106.2.tgz", + "integrity": "sha512-qX+rr93c9kH2u9TsBxRY84ymB08f94O7IA7LFxuJtQcib6UCCguT9QuTtuu5GLo2ciAgV9MqEQJ6ay16c6oFzw==", "requires": { - "@deephaven/filters": "^0.102.0", - "@deephaven/log": "^0.102.0", + "@deephaven/filters": "^0.106.0", + "@deephaven/log": "^0.106.2", "lodash.throttle": "^4.1.1" } }, "@deephaven/utils": { - "version": "0.102.0", - "resolved": "https://registry.npmjs.org/@deephaven/utils/-/utils-0.102.0.tgz", - "integrity": "sha512-aD12/ObluzmonUtxotASZTeyOtjSiJySTC13o5y/RS9/oVwihhKURsOyAnc2h6k2BW2MDZxgencUyNg7T0w03g==" + "version": "0.106.0", + "resolved": "https://registry.npmjs.org/@deephaven/utils/-/utils-0.106.0.tgz", + "integrity": "sha512-P5EsEl/rtA/KGZDQu8FDtovERRp/muRfJgrPunZdQy9stWSW0zYBFRHnLZCEbeETdduP/q902ZIOw77WSATqCw==" }, "@dnd-kit/accessibility": { "version": "3.1.1", @@ -11703,6 +11916,15 @@ "fastq": "^1.6.0" } }, + "@playwright/test": { + "version": "1.57.0", + "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.57.0.tgz", + "integrity": "sha512-6TyEnHgd6SArQO8UO2OMTxshln3QMWBtPGrOCgs3wVEmQmwyuNtB10IZMfmYDE0riwNR1cu4q+pPcxMVtaG3TA==", + "dev": true, + "requires": { + "playwright": "1.57.0" + } + }, "@plotly/d3": { "version": "3.8.2", "resolved": "https://registry.npmjs.org/@plotly/d3/-/d3-3.8.2.tgz", @@ -14201,53 +14423,53 @@ } }, "@turf/area": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@turf/area/-/area-7.2.0.tgz", - "integrity": "sha512-zuTTdQ4eoTI9nSSjerIy4QwgvxqwJVciQJ8tOPuMHbXJ9N/dNjI7bU8tasjhxas/Cx3NE9NxVHtNpYHL0FSzoA==", + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/@turf/area/-/area-7.3.1.tgz", + "integrity": "sha512-9nSiwt4zB5QDMcSoTxF28WpK1f741MNKcpUJDiHVRX08CZ4qfGWGV9ZIPQ8TVEn5RE4LyYkFuQ47Z9pdEUZE9Q==", "requires": { - "@turf/helpers": "^7.2.0", - "@turf/meta": "^7.2.0", + "@turf/helpers": "7.3.1", + "@turf/meta": "7.3.1", "@types/geojson": "^7946.0.10", "tslib": "^2.8.1" } }, "@turf/bbox": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@turf/bbox/-/bbox-7.2.0.tgz", - "integrity": "sha512-wzHEjCXlYZiDludDbXkpBSmv8Zu6tPGLmJ1sXQ6qDwpLE1Ew3mcWqt8AaxfTP5QwDNQa3sf2vvgTEzNbPQkCiA==", + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/@turf/bbox/-/bbox-7.3.1.tgz", + "integrity": "sha512-/IyMKoS7P9B0ch5PIlQ6gMfoE8gRr48+cSbzlyexvEjuDuaAV1VURjH1jAthS0ipFG8RrFxFJKnp7TLL1Skong==", "requires": { - "@turf/helpers": "^7.2.0", - "@turf/meta": "^7.2.0", + "@turf/helpers": "7.3.1", + "@turf/meta": "7.3.1", "@types/geojson": "^7946.0.10", "tslib": "^2.8.1" } }, "@turf/centroid": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@turf/centroid/-/centroid-7.2.0.tgz", - "integrity": "sha512-yJqDSw25T7P48au5KjvYqbDVZ7qVnipziVfZ9aSo7P2/jTE7d4BP21w0/XLi3T/9bry/t9PR1GDDDQljN4KfDw==", + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/@turf/centroid/-/centroid-7.3.1.tgz", + "integrity": "sha512-hRnsDdVBH4pX9mAjYympb2q5W8TCMUMNEjcRrAF7HTCyjIuRmjJf8vUtlzf7TTn9RXbsvPc1vtm3kLw20Jm8DQ==", "requires": { - "@turf/helpers": "^7.2.0", - "@turf/meta": "^7.2.0", + "@turf/helpers": "7.3.1", + "@turf/meta": "7.3.1", "@types/geojson": "^7946.0.10", "tslib": "^2.8.1" } }, "@turf/helpers": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@turf/helpers/-/helpers-7.2.0.tgz", - "integrity": "sha512-cXo7bKNZoa7aC7ydLmUR02oB3IgDe7MxiPuRz3cCtYQHn+BJ6h1tihmamYDWWUlPHgSNF0i3ATc4WmDECZafKw==", + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/@turf/helpers/-/helpers-7.3.1.tgz", + "integrity": "sha512-zkL34JVhi5XhsuMEO0MUTIIFEJ8yiW1InMu4hu/oRqamlY4mMoZql0viEmH6Dafh/p+zOl8OYvMJ3Vm3rFshgg==", "requires": { "@types/geojson": "^7946.0.10", "tslib": "^2.8.1" } }, "@turf/meta": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@turf/meta/-/meta-7.2.0.tgz", - "integrity": "sha512-igzTdHsQc8TV1RhPuOLVo74Px/hyPrVgVOTgjWQZzt3J9BVseCdpfY/0cJBdlSRI4S/yTmmHl7gAqjhpYH5Yaw==", + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/@turf/meta/-/meta-7.3.1.tgz", + "integrity": "sha512-NWsfOE5RVtWpLQNkfOF/RrYvLRPwwruxhZUV0UFIzHqfiRJ50aO9Y6uLY4bwCUe2TumLJQSR4yaoA72Rmr2mnQ==", "requires": { - "@turf/helpers": "^7.2.0", + "@turf/helpers": "7.3.1", "@types/geojson": "^7946.0.10" } }, @@ -14272,15 +14494,15 @@ } }, "@types/estree": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz", - "integrity": "sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==", + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", + "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==", "peer": true }, "@types/geojson": { - "version": "7946.0.15", - "resolved": "https://registry.npmjs.org/@types/geojson/-/geojson-7946.0.15.tgz", - "integrity": "sha512-9oSxFzDCT2Rj6DfcHF8G++jxBKS7mBqXl5xrRW+Kbvjry6Uduya2iiwqHPhVXpasAVMBYKkEPGgKhd3+/HZ6xA==" + "version": "7946.0.16", + "resolved": "https://registry.npmjs.org/@types/geojson/-/geojson-7946.0.16.tgz", + "integrity": "sha512-6C8nqWur3j98U6+lXDfTUWIfgvZU+EumvpHKcYjujKH7woYyLj2sUmff0tRhrqM7BohUw7Pz3ZB1jj2gW9Fvmg==" }, "@types/geojson-vt": { "version": "3.2.5", @@ -14305,9 +14527,9 @@ "integrity": "sha512-wkw9yd1kEXOPnvEeEV1Go1MmxtBJL0RR79aOTAApecWFVu7w0NNXNqhcWgvw2YgZDYadliXkl14pa3WXw5jlCQ==" }, "@types/json-schema": { - "version": "7.0.12", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.12.tgz", - "integrity": "sha512-Hr5Jfhc9eYOQNPYO5WLDq/n4jqijdHNlDXjuAQkkt+mWdQR+XJToOHrsD4cPaMXpn6KO7y2+wM8AZEs8VpBLVA==" + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==" }, "@types/mapbox__point-geometry": { "version": "0.1.4", @@ -14668,9 +14890,16 @@ "integrity": "sha512-d8XPSGjfyzlXC3Xx891DJRyZfqk5JU0BJrDQcsWomFIV1/BIzPW5HDH5iDdWpqWaav0YVIEzT1RHTwWr0FFshA==" }, "acorn": { - "version": "8.14.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.0.tgz", - "integrity": "sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==" + "version": "8.15.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", + "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==" + }, + "acorn-import-phases": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/acorn-import-phases/-/acorn-import-phases-1.0.4.tgz", + "integrity": "sha512-wKmbr/DDiIXzEOiWrTTUcDm24kQ2vGfZQvM2fwg2vXqR5uW6aapr7ObPtj1th32b9u90/Pf4AItvdTh42fBmVQ==", + "peer": true, + "requires": {} }, "acorn-jsx": { "version": "5.3.2", @@ -14679,10 +14908,79 @@ "dev": true, "requires": {} }, + "ag-charts-community": { + "version": "12.3.1", + "resolved": "https://registry.npmjs.org/ag-charts-community/-/ag-charts-community-12.3.1.tgz", + "integrity": "sha512-uRaUFmCl8e0Y3KxjaHUYlkCPS5OtwtfTChkdpoZuBKDXqerCPTjPu+uvlun3rYUSYxScwVf2LZCI0Hfw4Vc+WQ==", + "optional": true, + "requires": { + "ag-charts-core": "12.3.1", + "ag-charts-locale": "12.3.1", + "ag-charts-types": "12.3.1" + } + }, + "ag-charts-core": { + "version": "12.3.1", + "resolved": "https://registry.npmjs.org/ag-charts-core/-/ag-charts-core-12.3.1.tgz", + "integrity": "sha512-711UJ0fXengb8+4PEW4nlzWDowmbYymPcjW2eJWHRzzvttUf14hnh+wP/l/s3EGVgYkEHe9vkXFwmeOJUlkC0Q==", + "optional": true, + "requires": { + "ag-charts-types": "12.3.1" + } + }, + "ag-charts-enterprise": { + "version": "12.3.1", + "resolved": "https://registry.npmjs.org/ag-charts-enterprise/-/ag-charts-enterprise-12.3.1.tgz", + "integrity": "sha512-2sQIwLfksRTcI4JVRjgQkyGq6z68UVTO/I91HKmtpukrQLsW/o0TzzHmgTtVJOXd9yO9gx2KWa2DMg0+FKdXEQ==", + "optional": true, + "requires": { + "ag-charts-community": "12.3.1", + "ag-charts-core": "12.3.1" + } + }, + "ag-charts-locale": { + "version": "12.3.1", + "resolved": "https://registry.npmjs.org/ag-charts-locale/-/ag-charts-locale-12.3.1.tgz", + "integrity": "sha512-dCn7oHh3xLI576FT514aBedNQgtb5zwh/Gcj7jHvjOWYRnfH8kaekZzLzntITA6dF6E78okJfoI7CUCbYduQ4Q==", + "optional": true + }, + "ag-charts-types": { + "version": "12.3.1", + "resolved": "https://registry.npmjs.org/ag-charts-types/-/ag-charts-types-12.3.1.tgz", + "integrity": "sha512-5216xYoawnvMXDFI6kTpPku+mH0Csiwu/FE7lsAm8Z22HEN6ciSG/V7g+IrpLWncELqksgENebCTP75PZ3CsHA==" + }, + "ag-grid-community": { + "version": "34.3.1", + "resolved": "https://registry.npmjs.org/ag-grid-community/-/ag-grid-community-34.3.1.tgz", + "integrity": "sha512-PwlrPudsFOzGumphi2y9ihWeaUlIwKhOra/MXu2LjeV2U8DgLLcYS8CartE5Hszhn1poJHawwI9HWrxlKliwdw==", + "requires": { + "ag-charts-types": "12.3.1" + } + }, + "ag-grid-enterprise": { + "version": "34.3.1", + "resolved": "https://registry.npmjs.org/ag-grid-enterprise/-/ag-grid-enterprise-34.3.1.tgz", + "integrity": "sha512-pee4Zh0gLeQED+RM+ofxNun9JSrYrE0ZVw90BibuBkhBCLXrtXtjGPiwM+Ylntl+GwJUuCXrTcVLXRHpdXVYbQ==", + "requires": { + "ag-charts-community": "12.3.1", + "ag-charts-enterprise": "12.3.1", + "ag-grid-community": "34.3.1" + } + }, + "ag-grid-react": { + "version": "34.3.1", + "resolved": "https://registry.npmjs.org/ag-grid-react/-/ag-grid-react-34.3.1.tgz", + "integrity": "sha512-1UTlBT+xJkjNZAuf7RxK61mgxKGTPB+6XR99oIHq7cYC89kJmLbWqhHt/1XqRWF5cAgSKk8u+HtOQaN8tAZStw==", + "requires": { + "ag-grid-community": "34.3.1", + "prop-types": "^15.8.1" + } + }, "ajv": { "version": "6.12.6", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, "requires": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", @@ -14719,13 +15017,6 @@ } } }, - "ajv-keywords": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", - "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "peer": true, - "requires": {} - }, "almost-equal": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/almost-equal/-/almost-equal-1.1.0.tgz", @@ -14829,6 +15120,11 @@ "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==" }, + "baseline-browser-mapping": { + "version": "2.9.14", + "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.9.14.tgz", + "integrity": "sha512-B0xUquLkiGLgHhpPBqvl7GWegWBUNuujQ6kXd/r1U38ElPT6Ok8KZ8e+FpUGEc2ZoRQUzq/aUnaKFc/svWUGSg==" + }, "binary-extensions": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", @@ -14885,14 +15181,15 @@ } }, "browserslist": { - "version": "4.24.4", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.4.tgz", - "integrity": "sha512-KDi1Ny1gSePi1vm0q4oxSF8b4DR44GF4BbmS2YdhPLOEqd8pDviZOGH/GsmRwoWJ2+5Lr085X7naowMwKHDG1A==", + "version": "4.28.1", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.1.tgz", + "integrity": "sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA==", "requires": { - "caniuse-lite": "^1.0.30001688", - "electron-to-chromium": "^1.5.73", - "node-releases": "^2.0.19", - "update-browserslist-db": "^1.1.1" + "baseline-browser-mapping": "^2.9.0", + "caniuse-lite": "^1.0.30001759", + "electron-to-chromium": "^1.5.263", + "node-releases": "^2.0.27", + "update-browserslist-db": "^1.2.0" } }, "buffer": { @@ -14916,9 +15213,9 @@ "dev": true }, "caniuse-lite": { - "version": "1.0.30001690", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001690.tgz", - "integrity": "sha512-5ExiE3qQN6oF8Clf8ifIDcMRCRE/dMGcETG/XGMD8/XiXm6HXQgQTh1yZYLXXpSOsEUlJm1Xr7kGULZTuGtP/w==" + "version": "1.0.30001764", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001764.tgz", + "integrity": "sha512-9JGuzl2M+vPL+pz70gtMF9sHdMFbY9FJaQBi186cHKH3pSzDvzoUJUPV6fqiKIMyXbud9ZLg4F3Yza1vJ1+93g==" }, "canvas-fit": { "version": "1.5.0", @@ -14978,9 +15275,9 @@ "integrity": "sha512-kgMuFyE78OC6Dyu3Dy7vcx4uy97EIbVxJB/B0eJ3bUNAkwdNcxYzgKltnyADiYwsR7SEqkkUPsEUT//OVS6XMA==" }, "classnames": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.3.2.tgz", - "integrity": "sha512-CSbhY4cFEJRe6/GQzIk5qXZ4Jeg5pcsP7b5peFSDpffpe1cqjASH/n9UTjBwOp6XpMSTwQ8Za2K5V02ueA7Tmw==" + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.5.1.tgz", + "integrity": "sha512-saHYOzhIQs6wy2sVxTM6bUDsQO4F50V9RQ22qBpEdCW+I+/Wmke2HOl6lS6dTpdxVhb88/I6+Hs+438c3lfUow==" }, "client-only": { "version": "0.0.1", @@ -15417,9 +15714,9 @@ "integrity": "sha512-/pjZsA1b4RPHbeWZQn66SWS8nZZWLQQ23oE3Eam7aroEFGEvwKAsJfZ9ytiEMycfzXWpca4FA9QIOehf7PocBQ==" }, "electron-to-chromium": { - "version": "1.5.79", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.79.tgz", - "integrity": "sha512-nYOxJNxQ9Om4EC88BE4pPoNI8xwSFf8pU/BAeOl4Hh/b/i6V4biTAzwV7pXi3ARKeoYO5JZKMIXTryXSVer5RA==" + "version": "1.5.267", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.267.tgz", + "integrity": "sha512-0Drusm6MVRXSOJpGbaSVgcQsuB4hEkMpHXaVstcPmhu5LIedxs1xNK/nIxmQIU/RPC0+1/o0AVZfBTkTNJOdUw==" }, "element-size": { "version": "1.1.1", @@ -15435,17 +15732,17 @@ } }, "end-of-stream": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", - "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "version": "1.4.5", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.5.tgz", + "integrity": "sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==", "requires": { "once": "^1.4.0" } }, "enhanced-resolve": { - "version": "5.18.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.18.0.tgz", - "integrity": "sha512-0/r0MySGYG8YqlayBZ6MuCfECmHFdJ5qyPh8s8wa5Hnm6SaFLSK1VYCbj+NKp090Nm1caZhD+QTnmxO7esYGyQ==", + "version": "5.18.4", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.18.4.tgz", + "integrity": "sha512-LgQMM4WXU3QI+SYgEc2liRgznaD5ojbmY3sb8LxyguVkIg5FxdpTkvk72te2R38/TGKxH634oLxXRGY6d7AP+Q==", "peer": true, "requires": { "graceful-fs": "^4.2.4", @@ -15453,9 +15750,9 @@ } }, "es-module-lexer": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.6.0.tgz", - "integrity": "sha512-qqnD1yMU6tk/jnaMosogGySTZP8YtUgAffA9nMN+E/rjxcfRQ6IEk7IiozUjgxKoFHBGjTLnrHB/YC45r/59EQ==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-2.0.0.tgz", + "integrity": "sha512-5POEcUuZybH7IdmGsD8wlf0AI55wMecM9rVBTI/qEAy2c1kTOm3DjFYjrBdI2K3BaJjJYfYFeRtM0t9ssnRuxw==", "peer": true }, "es5-ext": { @@ -15833,7 +16130,8 @@ "fast-json-stable-stringify": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true }, "fast-levenshtein": { "version": "2.0.6", @@ -15842,9 +16140,9 @@ "dev": true }, "fast-uri": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.0.5.tgz", - "integrity": "sha512-5JnBCWpFlMo0a3ciDy/JckMzzv1U9coZrIhedq+HXxxUfDTAiS0LA8OKVao4G9BxmCVck/jtA5r3KAtRWEyD8Q==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.0.tgz", + "integrity": "sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA==", "peer": true }, "fastq": { @@ -15978,9 +16276,9 @@ "integrity": "sha512-sT5C0pwB1/e9G9AvAoLsoaJtbMGjfd/jfxo8jMCKqYYEnjZuFvqV5rehqar0538EmssjdDeiEWnKyBSTw7quoA==" }, "gl-matrix": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/gl-matrix/-/gl-matrix-3.4.3.tgz", - "integrity": "sha512-wcCp8vu8FT22BnvKVPjXa/ICBWRq/zjFfdofZy1WSpQZpphblv12/bOQLBC1rMM7SGOFS9ltVmKOHil5+Ml7gA==" + "version": "3.4.4", + "resolved": "https://registry.npmjs.org/gl-matrix/-/gl-matrix-3.4.4.tgz", + "integrity": "sha512-latSnyDNt/8zYUB6VIJ6PCh2jBjJX6gnDsoCZ7LyW7GkqrD51EWwa9qCoGixj8YqBtETQK/xY7OmpTF8xz1DdQ==" }, "gl-text": { "version": "1.4.0", @@ -16594,7 +16892,8 @@ "json-schema-traverse": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true }, "json-stable-stringify-without-jsonify": { "version": "1.0.1", @@ -16658,9 +16957,9 @@ "integrity": "sha512-pCj3PrQyATaoTYKHrgWRF3SJwsm61udVh+vuls/Rl6SptiDhgE7ziUIudAedRY9QEfynmM7/RmLEfPUyw1HPCw==" }, "loader-runner": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", - "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==", + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.1.tgz", + "integrity": "sha512-IWqP2SCPhyVFTBtRcgMHdzlf9ul25NwaFx4wCEH/KjAXuuHY4yNjvPXsBokp8jCB936PyWRaPKUNh8NvylLp2Q==", "peer": true }, "locate-path": { @@ -16814,9 +17113,9 @@ }, "dependencies": { "@mapbox/tiny-sdf": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/@mapbox/tiny-sdf/-/tiny-sdf-2.0.6.tgz", - "integrity": "sha512-qMqa27TLw+ZQz5Jk+RcwZGH7BQf5G/TrutJhspsca/3SHwmgKQ1iq+d3Jxz5oysPVYTGP6aXxCo5Lk9Er6YBAA==" + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@mapbox/tiny-sdf/-/tiny-sdf-2.0.7.tgz", + "integrity": "sha512-25gQLQMcpivjOSA40g3gO6qgiFPDpWRoMfd+G/GoppPIeP6JDaMMkMrEJnMZhKyyS6iKwVt5YKu02vCUyJM3Ug==" }, "@mapbox/unitbezier": { "version": "0.0.1", @@ -16824,9 +17123,9 @@ "integrity": "sha512-nMkuDXFv60aBr9soUG5q+GvZYL+2KZHVvsqFCzqnkGEf46U2fvmytHaEVc1/YZbiLn8X+eR3QzX1+dwDO1lxlw==" }, "earcut": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/earcut/-/earcut-3.0.1.tgz", - "integrity": "sha512-0l1/0gOjESMeQyYaK5IDiPNvFeu93Z/cO0TjZh9eZ1vyCtZnA7KMZ8rQggpsJHIbGSdrqYq9OhuveadOVHCshw==" + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/earcut/-/earcut-3.0.2.tgz", + "integrity": "sha512-X7hshQbLyMJ/3RPhyObLARM2sNxxmRALLKx1+NVFFnQ9gKzmCrxm9+uLIAdBcvc8FNLpctqlQ2V6AE92Ol9UDQ==" }, "geojson-vt": { "version": "4.0.2", @@ -16834,9 +17133,9 @@ "integrity": "sha512-AV9ROqlNqoZEIJGfm1ncNjEXfkz2hdFlZf0qkVfmkwdKa8vj7H16YUOT81rJw1rdFhyEDlN2Tds91p/glzbl5A==" }, "potpack": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/potpack/-/potpack-2.0.0.tgz", - "integrity": "sha512-Q+/tYsFU9r7xoOJ+y/ZTtdVQwTWfzjbiXBDMM/JKUux3+QPP02iUuIoeBQ+Ot6oEDlC+/PGjB/5A3K7KKb7hcw==" + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/potpack/-/potpack-2.1.0.tgz", + "integrity": "sha512-pcaShQc1Shq0y+E7GqJqvZj8DTthWV1KeHGdi0Z6IAin2Oi3JnLCOfwnCo84qc+HAp52wT9nK9H7FAJp5a44GQ==" }, "quickselect": { "version": "3.0.0", @@ -17033,9 +17332,9 @@ "integrity": "sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==" }, "node-releases": { - "version": "2.0.19", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.19.tgz", - "integrity": "sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==" + "version": "2.0.27", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.27.tgz", + "integrity": "sha512-nmh3lCkYZ3grZvqcCH+fjmQ7X+H0OeZgP40OierEaAptX4XofMh5kwNbWh7lBduUzCcV/8kZ+NDLCwm2iorIlA==" }, "normalize-path": { "version": "3.0.0", @@ -17202,6 +17501,31 @@ "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", "dev": true }, + "playwright": { + "version": "1.57.0", + "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.57.0.tgz", + "integrity": "sha512-ilYQj1s8sr2ppEJ2YVadYBN0Mb3mdo9J0wQ+UuDhzYqURwSoW4n1Xs5vs7ORwgDGmyEh33tRMeS8KhdkMoLXQw==", + "dev": true, + "requires": { + "fsevents": "2.3.2", + "playwright-core": "1.57.0" + }, + "dependencies": { + "fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, + "optional": true + } + } + }, + "playwright-core": { + "version": "1.57.0", + "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.57.0.tgz", + "integrity": "sha512-agTcKlMw/mjBWOnD6kFZttAAGHgi/Nw0CZ2o6JqWSbMlI219lAFLZZCyqByTsvVAJq5XA5H8cA6PrvBRpBWEuQ==", + "dev": true + }, "plotly.js": { "version": "2.35.3", "resolved": "https://registry.npmjs.org/plotly.js/-/plotly.js-2.35.3.tgz", @@ -17319,9 +17643,9 @@ } }, "postcss-selector-parser": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.0.0.tgz", - "integrity": "sha512-9RbEr1Y7FFfptd/1eEdntyjMwLeghW1bHX9GWjXo19vx4ytPQhANltvVxDggzJl7mnWM+dX28kb6cyS/4iQjlQ==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.1.tgz", + "integrity": "sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg==", "requires": { "cssesc": "^3.0.0", "util-deprecate": "^1.0.2" @@ -17396,7 +17720,8 @@ "punycode": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", - "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==" + "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", + "dev": true }, "queue-microtask": { "version": "1.2.3", @@ -17779,11 +18104,11 @@ "peer": true }, "resolve": { - "version": "1.22.10", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.10.tgz", - "integrity": "sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==", + "version": "1.22.11", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.11.tgz", + "integrity": "sha512-RfqAvLnMl313r7c9oclB1HhUEAezcpLjz95wFH4LVuhk9JF/r22qmVP9AMmOU4vMX7Q8pN8jwNg/CSpdFnMjTQ==", "requires": { - "is-core-module": "^2.16.0", + "is-core-module": "^2.16.1", "path-parse": "^1.0.7", "supports-preserve-symlinks-flag": "^1.0.0" } @@ -17867,9 +18192,9 @@ } }, "sax": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.4.1.tgz", - "integrity": "sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==" + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.4.4.tgz", + "integrity": "sha512-1n3r/tGXO6b6VXMdFT54SHzT9ytu9yr7TaELowdYpMqY/Ao7EnlQGmAQ1+RatX7Tkkdm6hONI2owqNx2aZj5Sw==" }, "scheduler": { "version": "0.20.2", @@ -17881,14 +18206,44 @@ } }, "schema-utils": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", - "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.3.3.tgz", + "integrity": "sha512-eflK8wEtyOE6+hsaRVPxvUKYCpRgzLqDTb8krvAsRIwOGlHoSgYLgBXoubGgLd2fT41/OUYdb48v4k4WWHQurA==", "peer": true, "requires": { - "@types/json-schema": "^7.0.8", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" + "@types/json-schema": "^7.0.9", + "ajv": "^8.9.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.1.0" + }, + "dependencies": { + "ajv": { + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", + "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", + "peer": true, + "requires": { + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" + } + }, + "ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "peer": true, + "requires": { + "fast-deep-equal": "^3.1.3" + } + }, + "json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "peer": true + } } }, "semver": { @@ -17949,9 +18304,9 @@ "dev": true }, "shell-quote": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.2.tgz", - "integrity": "sha512-AzqKpGKjrj7EM6rKVQEPpB288oCfnrEIuyoT9cyF4nmGa7V8Zk6f7RRqYisX8X9m+Q7bd632aZW4ky7EhbQztA==" + "version": "1.8.3", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.3.tgz", + "integrity": "sha512-ObmnIF4hXNg1BqhnHmgbDETF8dLPCggZWBjkQfhZpbszZnYur5DUljTcCHii5LC3J5E0yeO/1LIMyH+UvHQgyw==" }, "signum": { "version": "1.0.0", @@ -18140,9 +18495,9 @@ } }, "tapable": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", - "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.3.0.tgz", + "integrity": "sha512-g9ljZiwki/LfxmQADO3dEY1CbpmXT5Hm2fJ+QaGKwSXUylMybePR7/67YW7jOrrvjEgL1Fmz5kzyAjWVWLlucg==", "peer": true }, "terser": { @@ -18158,9 +18513,9 @@ } }, "terser-webpack-plugin": { - "version": "5.3.11", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.11.tgz", - "integrity": "sha512-RVCsMfuD0+cTt3EwX8hSl2Ks56EbFHWmhluwcqoPKtBnfjiT6olaq7PRIRfhyU8nnC2MrnDrBLfrD/RGE+cVXQ==", + "version": "5.3.16", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.16.tgz", + "integrity": "sha512-h9oBFCWrq78NyWWVcSwZarJkZ01c2AyGrzs1crmHZO3QUg9D61Wu4NPjBy69n7JqylFF5y+CsUZYmYEIZ3mR+Q==", "peer": true, "requires": { "@jridgewell/trace-mapping": "^0.3.25", @@ -18168,47 +18523,6 @@ "schema-utils": "^4.3.0", "serialize-javascript": "^6.0.2", "terser": "^5.31.1" - }, - "dependencies": { - "ajv": { - "version": "8.17.1", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", - "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", - "peer": true, - "requires": { - "fast-deep-equal": "^3.1.3", - "fast-uri": "^3.0.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2" - } - }, - "ajv-keywords": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", - "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", - "peer": true, - "requires": { - "fast-deep-equal": "^3.1.3" - } - }, - "json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "peer": true - }, - "schema-utils": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.3.0.tgz", - "integrity": "sha512-Gf9qqc58SpCA/xdziiHz35F4GNIWYWZrEshUc/G/r5BnLph6xpKuLeoJoQuj5WfBIx/eQLf+hmVPYHaxJu7V2g==", - "peer": true, - "requires": { - "@types/json-schema": "^7.0.9", - "ajv": "^8.9.0", - "ajv-formats": "^2.1.1", - "ajv-keywords": "^5.1.0" - } - } } }, "text-table": { @@ -18350,9 +18664,9 @@ "integrity": "sha512-vRCqFv6UhXpWxZPyGDh/F3ZpNv8/qo7w6iufLpQg9aKnQ71qM4B5KiI7Mia9COcjEhrO9LueHpMYjYzsWH3OIg==" }, "update-browserslist-db": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.2.tgz", - "integrity": "sha512-PPypAm5qvlD7XMZC3BujecnaOxwhrtoFR+Dqkk5Aa/6DssiH0ibKoketaj9w8LP7Bont1rYeoV5plxD7RTEPRg==", + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.2.3.tgz", + "integrity": "sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==", "requires": { "escalade": "^3.2.0", "picocolors": "^1.1.1" @@ -18367,6 +18681,7 @@ "version": "4.4.1", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, "requires": { "punycode": "^2.1.0" } @@ -18411,9 +18726,9 @@ } }, "watchpack": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.2.tgz", - "integrity": "sha512-TnbFSbcOCcDgjZ4piURLCbJ3nJhznVh9kw6F6iokjiFPl8ONxe9A6nMDVXDiNbrSfLILs6vB07F7wLBrwPYzJw==", + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.5.0.tgz", + "integrity": "sha512-e6vZvY6xboSwLz2GD36c16+O/2Z6fKvIf4pOXptw2rY9MVwE/TXc6RGqxD3I3x0a28lwBY7DE+76uTPSsBrrCA==", "peer": true, "requires": { "glob-to-regexp": "^0.4.1", @@ -18434,34 +18749,36 @@ } }, "webpack": { - "version": "5.97.1", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.97.1.tgz", - "integrity": "sha512-EksG6gFY3L1eFMROS/7Wzgrii5mBAFe4rIr3r2BTfo7bcc+DWwFZ4OJ/miOuHJO/A85HwyI4eQ0F6IKXesO7Fg==", + "version": "5.104.1", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.104.1.tgz", + "integrity": "sha512-Qphch25abbMNtekmEGJmeRUhLDbe+QfiWTiqpKYkpCOWY64v9eyl+KRRLmqOFA2AvKPpc9DC6+u2n76tQLBoaA==", "peer": true, "requires": { "@types/eslint-scope": "^3.7.7", - "@types/estree": "^1.0.6", + "@types/estree": "^1.0.8", + "@types/json-schema": "^7.0.15", "@webassemblyjs/ast": "^1.14.1", "@webassemblyjs/wasm-edit": "^1.14.1", "@webassemblyjs/wasm-parser": "^1.14.1", - "acorn": "^8.14.0", - "browserslist": "^4.24.0", + "acorn": "^8.15.0", + "acorn-import-phases": "^1.0.3", + "browserslist": "^4.28.1", "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.17.1", - "es-module-lexer": "^1.2.1", + "enhanced-resolve": "^5.17.4", + "es-module-lexer": "^2.0.0", "eslint-scope": "5.1.1", "events": "^3.2.0", "glob-to-regexp": "^0.4.1", "graceful-fs": "^4.2.11", "json-parse-even-better-errors": "^2.3.1", - "loader-runner": "^4.2.0", + "loader-runner": "^4.3.1", "mime-types": "^2.1.27", "neo-async": "^2.6.2", - "schema-utils": "^3.2.0", - "tapable": "^2.1.1", - "terser-webpack-plugin": "^5.3.10", - "watchpack": "^2.4.1", - "webpack-sources": "^3.2.3" + "schema-utils": "^4.3.3", + "tapable": "^2.3.0", + "terser-webpack-plugin": "^5.3.16", + "watchpack": "^2.4.4", + "webpack-sources": "^3.3.3" }, "dependencies": { "eslint-scope": { @@ -18483,9 +18800,9 @@ } }, "webpack-sources": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", - "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.3.3.tgz", + "integrity": "sha512-yd1RBzSGanHkitROoPFd6qsrxt+oFhg/129YzheDGqeustzX0vTZJZsSsQjVQC4yzBQ56K55XU8gaNCtIzOnTg==", "peer": true }, "which": { @@ -18498,9 +18815,9 @@ } }, "world-calendars": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/world-calendars/-/world-calendars-1.0.3.tgz", - "integrity": "sha512-sAjLZkBnsbHkHWVhrsCU5Sa/EVuf9QqgvrN8zyJ2L/F9FR9Oc6CvVK0674+PGAtmmmYQMH98tCUSO4QLQv3/TQ==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/world-calendars/-/world-calendars-1.0.4.tgz", + "integrity": "sha512-VGRnLJS+xJmGDPodgJRnGIDwGu0s+Cr9V2HB3EzlDZ5n0qb8h5SJtGUEkjrphZYAglEiXZ6kiXdmk0H/h/uu/w==", "requires": { "object-assign": "^4.1.0" } diff --git a/package.json b/package.json index b67b370..1272475 100644 --- a/package.json +++ b/package.json @@ -7,26 +7,32 @@ "start": "vite", "build": "tsc && vite build", "lint": "eslint . --ext ts,tsx --report-unused-disable-directives --max-warnings 0", - "preview": "vite preview" + "preview": "vite preview", + "test": "playwright test", + "test:ui": "playwright test --ui" }, "dependencies": { - "@deephaven/components": "^0.102.0", - "@deephaven/dashboard": "^0.102.0", - "@deephaven/iris-grid": "^0.102.0", - "@deephaven/jsapi-shim": "^0.102.0", - "@deephaven/jsapi-types": "^1.0.0-dev0.39.5", - "@deephaven/jsapi-utils": "^0.102.0", "@deephaven-enterprise/jsapi-types": "1.20240723.147-beta", + "@deephaven/components": "^0.106.2", + "@deephaven/dashboard": "^0.106.2", + "@deephaven/iris-grid": "^0.106.2", + "@deephaven/js-plugin-ag-grid": "^0.5.2", + "@deephaven/jsapi-bootstrap": "^0.106.2", + "@deephaven/jsapi-shim": "^0.106.0", + "@deephaven/jsapi-types": "^1.0.0-dev0.39.5", + "@deephaven/jsapi-utils": "^0.106.2", "react": "^17.0.2", "react-dom": "^17.0.2", "react-router-dom": "^6.24.0" }, "devDependencies": { + "@playwright/test": "^1.57.0", "@types/react": "^17.0.2", "@types/react-dom": "^17.0.9", "@typescript-eslint/eslint-plugin": "^6.0.0", "@typescript-eslint/parser": "^6.0.0", "@vitejs/plugin-react": "^4.0.3", + "ag-grid-community": "^34.3.1", "eslint": "^8.45.0", "eslint-plugin-react-hooks": "^4.6.0", "eslint-plugin-react-refresh": "^0.4.3", diff --git a/playwright.config.ts b/playwright.config.ts new file mode 100644 index 0000000..d578214 --- /dev/null +++ b/playwright.config.ts @@ -0,0 +1,20 @@ +import { defineConfig, devices } from "@playwright/test"; + +export default defineConfig({ + testDir: "./tests", + fullyParallel: true, + forbidOnly: !!process.env.CI, + retries: process.env.CI ? 2 : 0, + workers: process.env.CI ? 1 : undefined, + reporter: "html", + use: { + baseURL: "http://localhost:5173", + trace: "on-first-retry", + }, + projects: [ + { + name: "chromium", + use: { ...devices["Desktop Chrome"] }, + }, + ], +}); diff --git a/src/App.tsx b/src/App.tsx index 76a7094..cc9b90e 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -1,10 +1,5 @@ import { useCallback, useEffect, useState } from "react"; import { LoadingOverlay } from "@deephaven/components"; // Use the loading spinner from the Deephaven components package -import { - IrisGrid, - IrisGridModel, - IrisGridModelFactory, -} from "@deephaven/iris-grid"; // iris-grid is used to display Deephaven tables import dh from "@deephaven/jsapi-shim"; // Import the shim to use the JS API import type { ConsoleConfig, @@ -17,10 +12,12 @@ import "./App.scss"; // Styles for in this app import { clientConnected, getCorePlusApi, - getGridModelByQueryName, + getQuery, + getTableByQueryName, getWebsocketUrl, isCorePlusWorkerKind, } from "./Utils"; +import DeephavenAgGridComponent from "./DeephavenAgGridComponent"; const API_URL = import.meta.env.VITE_DEEPHAVEN_API_URL ?? ""; @@ -40,7 +37,7 @@ const enterpriseApi = dh as EnterpriseDhType; */ async function createGridModel( client: EnterpriseClient -): Promise { +): Promise { // Create a new session... API is currently undocumented and subject to change in future revisions const ide: Ide = new enterpriseApi.Ide(client); @@ -128,7 +125,8 @@ async function createGridModel( const table = await session.getObject(definition); - return IrisGridModelFactory.makeModel(coreApi, table); + return table; + // return IrisGridModelFactory.makeModel(coreApi, table); } const dhConsole = await ide.createConsole(config); @@ -156,7 +154,8 @@ async function createGridModel( const table = await session.getObject(definition); - return IrisGridModelFactory.makeModel(enterpriseApi, table); + return table; + // return IrisGridModelFactory.makeModel(enterpriseApi, table); } /** @@ -168,10 +167,13 @@ async function createGridModel( * See create-react-app docs for how to update these env vars: https://create-react-app.dev/docs/adding-custom-environment-variables/ */ function App() { - const [model, setModel] = useState(); + const [table, setTable] = useState< + DhType.Table | DhType.coreplus.pivot.PivotTable + >(); const [error, setError] = useState(); const [isLoading, setIsLoading] = useState(true); const [client, setClient] = useState(); + const [coreApi, setCoreApi] = useState(); const initApp = useCallback(async () => { try { @@ -195,12 +197,16 @@ function App() { const queryName = searchParams.get("queryName"); const tableName = searchParams.get("tableName"); + const query = await getQuery(client, queryName ?? ""); + const coreApi = await getCorePlusApi(query.designated?.jsApiUrl ?? ""); + setCoreApi(coreApi); + // If a table name was specified, load that table. Otherwise, create a new table. - const newModel = await (queryName && tableName - ? getGridModelByQueryName(client, queryName, tableName) + const newTable = await (queryName && tableName + ? getTableByQueryName(client, queryName, tableName) : createGridModel(client)); - setModel(newModel); + setTable(newTable); console.log("Table successfully loaded!"); } catch (e) { @@ -221,11 +227,11 @@ function App() { }; }, [client]); - const isLoaded = model != null; + const isLoaded = table != null && coreApi != null; return (
- {isLoaded && } + {isLoaded && } {!isLoaded && ( AgGridDhTheme.getThemeParams(), []); + + const theme = useMemo( + () => themeQuartz.withParams(themeParams), + [themeParams], + ); + + const [sourceTable, setSourceTable] = useState(); + const [gridApi, setGridApi] = useState(); + const handleSelectionChanged = useCallback( + async (event: SelectionChangedEvent) => { + const { selectedNodes } = event; + if (selectedNodes == null || selectedNodes.length === 0) { + return; + } + + // Build an AG Grid filter model to filter the source table to just these selected rows + // We need to collect unique values per column, then build a combined filter model + const columnValues: Record> = {}; + + selectedNodes.forEach((node) => { + const { data } = node; + const treeNodeKey = data[TREE_NODE_KEY]; + if (isPivotTable(table)) { + // If it's a pivot table, we need to look at the row sources to build the filters + // Only up to the depth of this selection + for (let depth = 0; depth <= treeNodeKey.depth - 2; depth += 1) { + const rowSource = table.rowSources[depth]; + const key = data[rowSource.name]; + + if (!columnValues[rowSource.name]) { + columnValues[rowSource.name] = new Set(); + } + columnValues[rowSource.name].add(key); + } + } else { + throw new Error("Other table types not yet supported"); + } + }); + + // Build the filter model using text filters with OR conditions for multiple values + const filterModel: FilterModel = {}; + Object.entries(columnValues).forEach(([columnName, values]) => { + const valuesArray = Array.from(values); + if (valuesArray.length === 1) { + // Single value: use simple text filter with equals + filterModel[columnName] = { + filterType: "text", + type: "equals", + filter: valuesArray[0], + }; + } else { + // Multiple values: use combined filter with OR operator + filterModel[columnName] = { + filterType: "text", + operator: "OR", + conditions: valuesArray.map((value) => ({ + filterType: "text", + type: "equals", + filter: value, + })), + }; + } + }); + + // Apply the filter model via the AG Grid API + gridApi?.setFilterModel(filterModel); + }, + [gridApi, table], + ); + const agGridProps: AgGridViewProps["agGridProps"] = useMemo( + () => ({ + ...getDefaultProps(), + rowSelection: { + mode: "multiRow", + }, + onSelectionChanged: handleSelectionChanged, + theme, + }), + [handleSelectionChanged, theme], + ); + + const sourceProps: AgGridViewProps["agGridProps"] = useMemo( + () => ({ + ...getDefaultProps(), + onModelUpdated: (event) => { + setGridApi(event.api); + }, + theme, + }), + [theme], + ); + + useEffect(() => { + async function getSourceTable() { + // eslint-disable-next-line @typescript-eslint/no-explicit-any + const newSourceTable = await (table as any).getSourceTable(); + setSourceTable(newSourceTable); + } + getSourceTable(); + }, [table]); + + return ( + + + + {sourceTable != null && ( + + )} + + + ); +} + +export default DeephavenAgGridComponent; diff --git a/src/Utils.ts b/src/Utils.ts index 6132051..9bdf95a 100644 --- a/src/Utils.ts +++ b/src/Utils.ts @@ -10,7 +10,6 @@ import type { WorkerKind, } from "@deephaven-enterprise/jsapi-types"; import { dh as CoreDhType } from "@deephaven/jsapi-types"; -import { IrisGridModel, IrisGridModelFactory } from "@deephaven/iris-grid"; export const CLIENT_TIMEOUT = 60_000; @@ -18,6 +17,16 @@ export const QUERY_TIMEOUT = 10_000; const enterpriseApi = dh as EnterpriseDhType; +export function isWidget(obj: unknown): obj is CoreDhType.Widget { + return ( + obj != null && + typeof obj === "object" && + "exportedObjects" in obj && + "type" in obj && + typeof (obj as CoreDhType.Widget).type === "string" + ); +} + /** * Get the WebSocket URL for connecting to the JS API * @param baseUrl Base URL to get the websocket URL for @@ -137,11 +146,11 @@ export async function getCorePlusConnection( * @param name Name of the table to get * @returns Table object */ -export async function getGridModel( +export async function getTableModel( legacyClient: EnterpriseClient, queryInfo: QueryInfo, name: string -): Promise { +): Promise { const { workerKinds } = await legacyClient.getServerConfigValues(); if (isCorePlusQuery(queryInfo, workerKinds)) { // Getting the table from the Core+ query requires a Core+ API instance @@ -149,16 +158,31 @@ export async function getGridModel( const api = await getCorePlusApi(queryInfo.jsApiUrl); const token = await legacyClient.createAuthToken("RemoteQueryProcessor"); const connection = await getCorePlusConnection(api, token, queryInfo); - const objectDefinition = { - name, - type: "Table", - }; + const objectDefinition = queryInfo.designated?.objects.find( + (obj) => obj.name === name + ); + if (objectDefinition == null) { + throw new Error( + `Table ${name} not found in designated objects for query ${queryInfo.name}` + ); + } const table = await connection.getObject(objectDefinition); - return IrisGridModelFactory.makeModel(api, table); + if (isWidget(table)) { + if (table.type === "PivotTable") { + return new api.coreplus.pivot.PivotTable(table); + } + throw new Error( + `Object ${name} is an unrecognized Widget type ${table.type}, not a Table` + ); + } + + return table; + // return IrisGridModelFactory.makeModel(api, table); } // Get the table from the legacy query const table = await queryInfo.getTable(name); - return IrisGridModelFactory.makeModel(enterpriseApi, table); + return table; + // return IrisGridModelFactory.makeModel(enterpriseApi, table); } /** @@ -210,13 +234,13 @@ export async function getQuery( * @param tableName Name of the table to load * @returns Deephaven table */ -export async function getGridModelByQueryName( +export async function getTableByQueryName( legacyClient: EnterpriseClient, queryName: string, tableName: string -): Promise { +): Promise { const query = await getQuery(legacyClient, queryName); - return getGridModel(legacyClient, query, tableName); + return getTableModel(legacyClient, query, tableName); } /** diff --git a/tests/pivot-filter.spec.ts b/tests/pivot-filter.spec.ts new file mode 100644 index 0000000..68b9020 --- /dev/null +++ b/tests/pivot-filter.spec.ts @@ -0,0 +1,62 @@ +import { test, expect } from "@playwright/test"; + +test.describe("Pivot Table Selection Filter", () => { + test("selecting a row in the pivot table should filter the source table", async ({ + page, + }) => { + // Navigate to the pivot table page + await page.goto("/?queryName=pivots&tableName=fish_market_pivot"); + + // Wait for the AG Grid tables to load - there should be two grids + const grids = page.locator(".ag-root-wrapper"); + await expect(grids).toHaveCount(2, { timeout: 30000 }); + + // Wait for both grids to have data loaded + const leftGrid = grids.nth(0); + const rightGrid = grids.nth(1); + + // Wait for rows to appear in both grids + await expect(leftGrid.locator(".ag-row")).not.toHaveCount(0, { + timeout: 30000, + }); + await expect(rightGrid.locator(".ag-row")).not.toHaveCount(0, { + timeout: 30000, + }); + + // Get the text content of all cells in the first row of the pivot table + // This will help us understand what value we're selecting + const firstPivotRow = leftGrid.locator(".ag-row").first(); + const firstRowText = await firstPivotRow.textContent(); + console.log(`First pivot row content: ${firstRowText}`); + + // Get the initial content of the source table to compare later + const sourceTableContent = await rightGrid.textContent(); + console.log( + `Initial source table content length: ${sourceTableContent?.length}`, + ); + + // Click the checkbox to select the first row + const firstRowCheckbox = firstPivotRow.locator(".ag-selection-checkbox"); + if ((await firstRowCheckbox.count()) > 0) { + await firstRowCheckbox.click(); + console.log("Clicked checkbox on first pivot row"); + } + + // Wait for the filter to apply + await page.waitForTimeout(2000); + + // Get the new content of the source table + const filteredSourceTableContent = await rightGrid.textContent(); + console.log( + `Filtered source table content length: ${filteredSourceTableContent?.length}`, + ); + + // The content should have changed (either different content or different length) + // since we've filtered the data + const contentChanged = sourceTableContent !== filteredSourceTableContent; + console.log(`Source table content changed: ${contentChanged}`); + + // Verify the filter was applied by checking that the source table content changed + expect(contentChanged).toBe(true); + }); +});