diff --git a/package-lock.json b/package-lock.json index fb4312398..2a193c94b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -13114,7 +13114,6 @@ "version": "1.9.3", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, "dependencies": { "color-name": "1.1.3" } @@ -15637,7 +15636,6 @@ "version": "5.0.1", "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==", - "dev": true, "engines": { "node": ">=6" } @@ -30537,11 +30535,13 @@ "version": "0.4.0", "license": "Apache-2.0", "dependencies": { - "@deephaven/components": "^0.40.0", - "@deephaven/dashboard": "^0.40.0", - "@deephaven/jsapi-bootstrap": "^0.40.0", - "@deephaven/jsapi-types": "^0.40.0", - "@deephaven/log": "^0.40.0", + "@deephaven/components": "^0.58.0", + "@deephaven/dashboard": "^0.58.0", + "@deephaven/icons": "^0.58.0", + "@deephaven/jsapi-bootstrap": "^0.58.0", + "@deephaven/jsapi-types": "^0.58.0", + "@deephaven/log": "^0.58.0", + "@deephaven/plugin": "^0.58.0", "shortid": "^2.2.16" }, "devDependencies": { @@ -30556,6 +30556,370 @@ "react": "^17.0.2" } }, + "plugins/matplotlib/src/js/node_modules/@deephaven/chart": { + "version": "0.58.0", + "resolved": "https://registry.npmjs.org/@deephaven/chart/-/chart-0.58.0.tgz", + "integrity": "sha512-rP4MKR3OswDRbt58I2r65ADHbYHVeSlBFxEoZDK3oJjkh5XEnsd0RpvEQn3gAFmQuUxk9JPUPnRx+d/6iu6zPQ==", + "dependencies": { + "@deephaven/components": "^0.58.0", + "@deephaven/icons": "^0.58.0", + "@deephaven/jsapi-types": "^0.58.0", + "@deephaven/jsapi-utils": "^0.58.0", + "@deephaven/log": "^0.58.0", + "@deephaven/react-hooks": "^0.58.0", + "@deephaven/utils": "^0.58.0", + "deep-equal": "^2.0.5", + "lodash.debounce": "^4.0.8", + "lodash.set": "^4.3.2", + "memoize-one": "^5.1.1", + "memoizee": "^0.4.15", + "plotly.js": "^2.18.2", + "prop-types": "^15.7.2", + "react-plotly.js": "^2.6.0" + }, + "engines": { + "node": ">=16" + }, + "peerDependencies": { + "react": "^17.x" + } + }, + "plugins/matplotlib/src/js/node_modules/@deephaven/components": { + "version": "0.58.0", + "resolved": "https://registry.npmjs.org/@deephaven/components/-/components-0.58.0.tgz", + "integrity": "sha512-yfdyi2LTKs/0N930kuFo9j407XW04jqUHVToEhNzTkgBibNZ4XJ8GwEHJDRg+pYOl/vlvIzNI/OJLd9q+IuEdw==", + "dependencies": { + "@adobe/react-spectrum": "^3.29.0", + "@deephaven/icons": "^0.58.0", + "@deephaven/log": "^0.58.0", + "@deephaven/react-hooks": "^0.58.0", + "@deephaven/utils": "^0.58.0", + "@fortawesome/fontawesome-svg-core": "^6.2.1", + "@fortawesome/react-fontawesome": "^0.2.0", + "@react-spectrum/theme-default": "^3.5.1", + "bootstrap": "4.6.2", + "classnames": "^2.3.1", + "event-target-shim": "^6.0.2", + "lodash.clamp": "^4.0.3", + "lodash.debounce": "^4.0.8", + "lodash.flatten": "^4.4.0", + "memoizee": "^0.4.15", + "popper.js": "^1.16.1", + "prop-types": "^15.7.2", + "react-beautiful-dnd": "^13.1.0", + "react-transition-group": "^4.4.2", + "react-virtualized-auto-sizer": "1.0.6", + "react-window": "^1.8.6", + "shortid": "^2.2.16" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "react": "^17.x", + "react-dom": "^17.x" + } + }, + "plugins/matplotlib/src/js/node_modules/@deephaven/console": { + "version": "0.58.0", + "resolved": "https://registry.npmjs.org/@deephaven/console/-/console-0.58.0.tgz", + "integrity": "sha512-jfQVsBmzJO/qnv4pQyJcyZZ3EdBPUeHa5r94VdtL0XKTVqiViF4jrUH2+mfdW5SLNwpwnjhBdfPZ7da1ynJxWQ==", + "dependencies": { + "@deephaven/chart": "^0.58.0", + "@deephaven/components": "^0.58.0", + "@deephaven/icons": "^0.58.0", + "@deephaven/jsapi-bootstrap": "^0.58.0", + "@deephaven/jsapi-types": "^0.58.0", + "@deephaven/log": "^0.58.0", + "@deephaven/react-hooks": "^0.58.0", + "@deephaven/storage": "^0.58.0", + "@deephaven/utils": "^0.58.0", + "@fortawesome/react-fontawesome": "^0.2.0", + "classnames": "^2.3.1", + "linkifyjs": "^4.1.0", + "lodash.debounce": "^4.0.8", + "lodash.throttle": "^4.1.1", + "memoize-one": "^5.1.1", + "memoizee": "^0.4.15", + "monaco-editor": "^0.41.0", + "papaparse": "5.3.2", + "popper.js": "^1.16.1", + "prop-types": "^15.7.2", + "shell-quote": "^1.7.2", + "shortid": "^2.2.16" + }, + "engines": { + "node": ">=16" + }, + "peerDependencies": { + "react": "^17.x", + "react-dom": "^17.x" + } + }, + "plugins/matplotlib/src/js/node_modules/@deephaven/dashboard": { + "version": "0.58.0", + "resolved": "https://registry.npmjs.org/@deephaven/dashboard/-/dashboard-0.58.0.tgz", + "integrity": "sha512-3D3xo10uU/fnQmyLiLOh14RdjEqk6NIu79MuuBJw8ESaDx9BN9ESZyU02QU/JcwXZjahJoRIsquvD4f0iTawGA==", + "dependencies": { + "@deephaven/components": "^0.58.0", + "@deephaven/golden-layout": "^0.58.0", + "@deephaven/log": "^0.58.0", + "@deephaven/react-hooks": "^0.58.0", + "@deephaven/redux": "^0.58.0", + "@deephaven/utils": "^0.58.0", + "deep-equal": "^2.0.5", + "lodash.ismatch": "^4.1.1", + "lodash.throttle": "^4.1.1", + "prop-types": "^15.7.2", + "shortid": "^2.2.16" + }, + "engines": { + "node": ">=16" + }, + "peerDependencies": { + "react": "^17.0.0", + "react-dom": "^17.0.0", + "react-is": "^17.0.0", + "react-redux": "^7.2.4" + } + }, + "plugins/matplotlib/src/js/node_modules/@deephaven/filters": { + "version": "0.58.0", + "resolved": "https://registry.npmjs.org/@deephaven/filters/-/filters-0.58.0.tgz", + "integrity": "sha512-7FRCEAjoo0e0gRZbdDxoTrC8SSqwL9IDH4Z23OjIOQ5RBS7MypFeomFLLJns9Sg1rOXXixG0Of7Zqv6cR8hC6Q==", + "engines": { + "node": ">=16" + } + }, + "plugins/matplotlib/src/js/node_modules/@deephaven/golden-layout": { + "version": "0.58.0", + "resolved": "https://registry.npmjs.org/@deephaven/golden-layout/-/golden-layout-0.58.0.tgz", + "integrity": "sha512-AN5AWH1Qr1Mof95ZWBGPRds+L4WBa0ePRTpmjDffcEuoPjKbd2KDzuiRp3au/QsrkfcyLz4rWQmSd+1dHb/qeQ==", + "dependencies": { + "@deephaven/components": "^0.58.0", + "jquery": "^3.6.0" + }, + "peerDependencies": { + "react": "^17.x", + "react-dom": "^17.x" + } + }, + "plugins/matplotlib/src/js/node_modules/@deephaven/grid": { + "version": "0.58.0", + "resolved": "https://registry.npmjs.org/@deephaven/grid/-/grid-0.58.0.tgz", + "integrity": "sha512-BmSuLKm70qzHEZPaq8pc3CCOXcxHw9KmWwuZTQnjMMGHSyGmDgseydODwOatbuW4QohY+B03Uf1GdaEpAT0GVw==", + "dependencies": { + "@deephaven/utils": "^0.58.0", + "classnames": "^2.3.1", + "color-convert": "^2.0.1", + "event-target-shim": "^6.0.2", + "linkifyjs": "^4.1.0", + "lodash.clamp": "^4.0.3", + "memoize-one": "^5.1.1", + "memoizee": "^0.4.15", + "prop-types": "^15.7.2" + }, + "engines": { + "node": ">=16" + }, + "peerDependencies": { + "react": "^17.x" + } + }, + "plugins/matplotlib/src/js/node_modules/@deephaven/icons": { + "version": "0.58.0", + "resolved": "https://registry.npmjs.org/@deephaven/icons/-/icons-0.58.0.tgz", + "integrity": "sha512-jD8rEOCTbelkXT2BRGTRamP8bmHmk/Hdo8uu6s3ydjI2d52Rp7YaCjsspNS9fGV1XhpNF6N2lTC3rdtUWXvMFg==", + "dependencies": { + "@fortawesome/fontawesome-common-types": "^6.1.1" + }, + "peerDependencies": { + "@fortawesome/fontawesome-svg-core": "^6.2.1", + "@fortawesome/react-fontawesome": "^0.2.0" + } + }, + "plugins/matplotlib/src/js/node_modules/@deephaven/iris-grid": { + "version": "0.58.0", + "resolved": "https://registry.npmjs.org/@deephaven/iris-grid/-/iris-grid-0.58.0.tgz", + "integrity": "sha512-HYMOxjmS/gpkTHshDOYsplvVgy9RW7mGvySpj4G00k5M595PJuqZ8q3VfnxVH0Tswb44bk1WmQhvHndAvWMg2A==", + "dependencies": { + "@deephaven/components": "^0.58.0", + "@deephaven/console": "^0.58.0", + "@deephaven/filters": "^0.58.0", + "@deephaven/grid": "^0.58.0", + "@deephaven/icons": "^0.58.0", + "@deephaven/jsapi-types": "^0.58.0", + "@deephaven/jsapi-utils": "^0.58.0", + "@deephaven/log": "^0.58.0", + "@deephaven/react-hooks": "^0.58.0", + "@deephaven/storage": "^0.58.0", + "@deephaven/utils": "^0.58.0", + "@dnd-kit/core": "^6.0.5", + "@dnd-kit/sortable": "^7.0.0", + "@dnd-kit/utilities": "^3.2.0", + "@fortawesome/react-fontawesome": "^0.2.0", + "classnames": "^2.3.1", + "deep-equal": "^2.0.5", + "lodash.clamp": "^4.0.3", + "lodash.debounce": "^4.0.8", + "lodash.throttle": "^4.1.1", + "memoize-one": "^5.1.1", + "memoizee": "^0.4.15", + "monaco-editor": "^0.41.0", + "prop-types": "^15.7.2", + "react-beautiful-dnd": "^13.1.0", + "react-transition-group": "^4.4.2", + "shortid": "^2.2.16" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "react": "^17.x", + "react-dom": "^17.x" + } + }, + "plugins/matplotlib/src/js/node_modules/@deephaven/jsapi-bootstrap": { + "version": "0.58.0", + "resolved": "https://registry.npmjs.org/@deephaven/jsapi-bootstrap/-/jsapi-bootstrap-0.58.0.tgz", + "integrity": "sha512-w7oubRFxkTbitfDs7JNALrsRZqHYtgbfllcaUnlTFXD688E/8kSjVVi4yaE8aKWmMDCQLFU0QoFsfC1Z+kxWeA==", + "dependencies": { + "@deephaven/components": "^0.58.0", + "@deephaven/jsapi-types": "^0.58.0", + "@deephaven/log": "^0.58.0", + "@deephaven/react-hooks": "^0.58.0" + }, + "engines": { + "node": ">=16" + }, + "peerDependencies": { + "react": "^17.x" + } + }, + "plugins/matplotlib/src/js/node_modules/@deephaven/jsapi-types": { + "version": "0.58.0", + "resolved": "https://registry.npmjs.org/@deephaven/jsapi-types/-/jsapi-types-0.58.0.tgz", + "integrity": "sha512-CjJXqHPPTWAqCYJRXC/Zb2VEdaXutyx55Hlzeeg/1vYnWY5t5Lxld4PQkuO4rvsJzzkuEWzdgggMw7Iu9ZVuQQ==", + "engines": { + "node": ">=16" + } + }, + "plugins/matplotlib/src/js/node_modules/@deephaven/jsapi-utils": { + "version": "0.58.0", + "resolved": "https://registry.npmjs.org/@deephaven/jsapi-utils/-/jsapi-utils-0.58.0.tgz", + "integrity": "sha512-isX/HdSl8XBQSPJHockM5ybGOBRplT/4M10b4loB4nZpY0y5bCY2H7sdutsICE6FTSMInAD+cMGNH6nPF+IGfg==", + "dependencies": { + "@deephaven/filters": "^0.58.0", + "@deephaven/jsapi-types": "^0.58.0", + "@deephaven/log": "^0.58.0", + "@deephaven/utils": "^0.58.0", + "lodash.clamp": "^4.0.3", + "shortid": "^2.2.16" + }, + "engines": { + "node": ">=16" + } + }, + "plugins/matplotlib/src/js/node_modules/@deephaven/log": { + "version": "0.58.0", + "resolved": "https://registry.npmjs.org/@deephaven/log/-/log-0.58.0.tgz", + "integrity": "sha512-al05eDP3qamkWuqaQlsMESEn+rTRiaMZLAI8ePlHnlcEPrQS2ymkcO6sY6Am4yk3l5JQg8FKHA8LjHFZfkvTsQ==", + "dependencies": { + "event-target-shim": "^6.0.2" + }, + "engines": { + "node": ">=16" + } + }, + "plugins/matplotlib/src/js/node_modules/@deephaven/plugin": { + "version": "0.58.0", + "resolved": "https://registry.npmjs.org/@deephaven/plugin/-/plugin-0.58.0.tgz", + "integrity": "sha512-QmmaMfNbsKi2hLJqwxilE57Mqio1mT9HhmIyc0qa0G60kPI1NuMAV3TJWu4+s9xQBMqolzrD8OD3jfLzrfK5VA==", + "dependencies": { + "@deephaven/components": "^0.58.0", + "@deephaven/golden-layout": "^0.58.0", + "@deephaven/icons": "^0.58.0", + "@deephaven/iris-grid": "^0.58.0", + "@deephaven/jsapi-types": "^0.58.0", + "@deephaven/log": "^0.58.0", + "@deephaven/react-hooks": "^0.58.0", + "@fortawesome/fontawesome-common-types": "^6.1.1", + "@fortawesome/react-fontawesome": "^0.2.0" + }, + "engines": { + "node": ">=16" + }, + "peerDependencies": { + "react": "^17.x" + } + }, + "plugins/matplotlib/src/js/node_modules/@deephaven/react-hooks": { + "version": "0.58.0", + "resolved": "https://registry.npmjs.org/@deephaven/react-hooks/-/react-hooks-0.58.0.tgz", + "integrity": "sha512-XeQgk8VqaTwcI68660pNd5q611EkKtqIxKaZnPMR5GzbHn1zE55fFAUi5UdgrSJhhe2oaIz2tFbVd8uaduANsw==", + "dependencies": { + "@adobe/react-spectrum": "^3.29.0", + "@deephaven/log": "^0.58.0", + "@deephaven/utils": "^0.58.0", + "lodash.debounce": "^4.0.8", + "shortid": "^2.2.16" + }, + "engines": { + "node": ">=16" + }, + "peerDependencies": { + "react": "^17.x" + } + }, + "plugins/matplotlib/src/js/node_modules/@deephaven/redux": { + "version": "0.58.0", + "resolved": "https://registry.npmjs.org/@deephaven/redux/-/redux-0.58.0.tgz", + "integrity": "sha512-RnhldimzNK1AJv9OIcKgXMZ5BXe+1Rm6/BXjDnAnl8HREEGtuVvIUna2g3s+FoOokfQCRIIzNkPXTwyJDGRO2A==", + "dependencies": { + "@deephaven/jsapi-types": "^0.58.0", + "@deephaven/jsapi-utils": "^0.58.0", + "@deephaven/log": "^0.58.0", + "@deephaven/plugin": "^0.58.0", + "deep-equal": "^2.0.5", + "redux-thunk": "2.4.1" + }, + "engines": { + "node": ">=16" + }, + "peerDependencies": { + "redux": "^4.2.0" + } + }, + "plugins/matplotlib/src/js/node_modules/@deephaven/storage": { + "version": "0.58.0", + "resolved": "https://registry.npmjs.org/@deephaven/storage/-/storage-0.58.0.tgz", + "integrity": "sha512-GGgcqHdgQCko1vxSJttwDw04u4atbv51C/t8IJPdHoTzd1HoY/yYhX639UranueS5LygBTwu4QCM73CMuHS0eg==", + "dependencies": { + "@deephaven/filters": "^0.58.0", + "@deephaven/log": "^0.58.0", + "lodash.throttle": "^4.1.1" + }, + "engines": { + "node": ">=16" + }, + "peerDependencies": { + "react": "^17.x" + } + }, + "plugins/matplotlib/src/js/node_modules/@deephaven/utils": { + "version": "0.58.0", + "resolved": "https://registry.npmjs.org/@deephaven/utils/-/utils-0.58.0.tgz", + "integrity": "sha512-5zmnUYwAT6ognsZ7SjhEF6OS1xjF4nP3RixEO+CEZdBxen5Q8pZ2CjhPv2FvuqAUGEx+MhPq/yD1AXvzu3HITw==", + "engines": { + "node": ">=16" + } + }, + "plugins/matplotlib/src/js/node_modules/react-is": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", + "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", + "peer": true + }, "plugins/matplotlib/src/js/node_modules/typescript": { "version": "4.9.5", "dev": true, @@ -33344,11 +33708,13 @@ "@deephaven/js-plugin-matplotlib": { "version": "file:plugins/matplotlib/src/js", "requires": { - "@deephaven/components": "^0.40.0", - "@deephaven/dashboard": "^0.40.0", - "@deephaven/jsapi-bootstrap": "^0.40.0", - "@deephaven/jsapi-types": "^0.40.0", - "@deephaven/log": "^0.40.0", + "@deephaven/components": "^0.58.0", + "@deephaven/dashboard": "^0.58.0", + "@deephaven/icons": "^0.58.0", + "@deephaven/jsapi-bootstrap": "^0.58.0", + "@deephaven/jsapi-types": "^0.58.0", + "@deephaven/log": "^0.58.0", + "@deephaven/plugin": "^0.58.0", "@types/react": "^17.0.2", "@types/react-dom": "^17.0.2", "@vitejs/plugin-react-swc": "^3.0.0", @@ -33358,6 +33724,275 @@ "vite": "~4.1.4" }, "dependencies": { + "@deephaven/chart": { + "version": "0.58.0", + "resolved": "https://registry.npmjs.org/@deephaven/chart/-/chart-0.58.0.tgz", + "integrity": "sha512-rP4MKR3OswDRbt58I2r65ADHbYHVeSlBFxEoZDK3oJjkh5XEnsd0RpvEQn3gAFmQuUxk9JPUPnRx+d/6iu6zPQ==", + "requires": { + "@deephaven/components": "^0.58.0", + "@deephaven/icons": "^0.58.0", + "@deephaven/jsapi-types": "^0.58.0", + "@deephaven/jsapi-utils": "^0.58.0", + "@deephaven/log": "^0.58.0", + "@deephaven/react-hooks": "^0.58.0", + "@deephaven/utils": "^0.58.0", + "deep-equal": "^2.0.5", + "lodash.debounce": "^4.0.8", + "lodash.set": "^4.3.2", + "memoize-one": "^5.1.1", + "memoizee": "^0.4.15", + "plotly.js": "^2.18.2", + "prop-types": "^15.7.2", + "react-plotly.js": "^2.6.0" + } + }, + "@deephaven/components": { + "version": "0.58.0", + "resolved": "https://registry.npmjs.org/@deephaven/components/-/components-0.58.0.tgz", + "integrity": "sha512-yfdyi2LTKs/0N930kuFo9j407XW04jqUHVToEhNzTkgBibNZ4XJ8GwEHJDRg+pYOl/vlvIzNI/OJLd9q+IuEdw==", + "requires": { + "@adobe/react-spectrum": "^3.29.0", + "@deephaven/icons": "^0.58.0", + "@deephaven/log": "^0.58.0", + "@deephaven/react-hooks": "^0.58.0", + "@deephaven/utils": "^0.58.0", + "@fortawesome/fontawesome-svg-core": "^6.2.1", + "@fortawesome/react-fontawesome": "^0.2.0", + "@react-spectrum/theme-default": "^3.5.1", + "bootstrap": "4.6.2", + "classnames": "^2.3.1", + "event-target-shim": "^6.0.2", + "lodash.clamp": "^4.0.3", + "lodash.debounce": "^4.0.8", + "lodash.flatten": "^4.4.0", + "memoizee": "^0.4.15", + "popper.js": "^1.16.1", + "prop-types": "^15.7.2", + "react-beautiful-dnd": "^13.1.0", + "react-transition-group": "^4.4.2", + "react-virtualized-auto-sizer": "1.0.6", + "react-window": "^1.8.6", + "shortid": "^2.2.16" + } + }, + "@deephaven/console": { + "version": "0.58.0", + "resolved": "https://registry.npmjs.org/@deephaven/console/-/console-0.58.0.tgz", + "integrity": "sha512-jfQVsBmzJO/qnv4pQyJcyZZ3EdBPUeHa5r94VdtL0XKTVqiViF4jrUH2+mfdW5SLNwpwnjhBdfPZ7da1ynJxWQ==", + "requires": { + "@deephaven/chart": "^0.58.0", + "@deephaven/components": "^0.58.0", + "@deephaven/icons": "^0.58.0", + "@deephaven/jsapi-bootstrap": "^0.58.0", + "@deephaven/jsapi-types": "^0.58.0", + "@deephaven/log": "^0.58.0", + "@deephaven/react-hooks": "^0.58.0", + "@deephaven/storage": "^0.58.0", + "@deephaven/utils": "^0.58.0", + "@fortawesome/react-fontawesome": "^0.2.0", + "classnames": "^2.3.1", + "linkifyjs": "^4.1.0", + "lodash.debounce": "^4.0.8", + "lodash.throttle": "^4.1.1", + "memoize-one": "^5.1.1", + "memoizee": "^0.4.15", + "monaco-editor": "^0.41.0", + "papaparse": "5.3.2", + "popper.js": "^1.16.1", + "prop-types": "^15.7.2", + "shell-quote": "^1.7.2", + "shortid": "^2.2.16" + } + }, + "@deephaven/dashboard": { + "version": "0.58.0", + "resolved": "https://registry.npmjs.org/@deephaven/dashboard/-/dashboard-0.58.0.tgz", + "integrity": "sha512-3D3xo10uU/fnQmyLiLOh14RdjEqk6NIu79MuuBJw8ESaDx9BN9ESZyU02QU/JcwXZjahJoRIsquvD4f0iTawGA==", + "requires": { + "@deephaven/components": "^0.58.0", + "@deephaven/golden-layout": "^0.58.0", + "@deephaven/log": "^0.58.0", + "@deephaven/react-hooks": "^0.58.0", + "@deephaven/redux": "^0.58.0", + "@deephaven/utils": "^0.58.0", + "deep-equal": "^2.0.5", + "lodash.ismatch": "^4.1.1", + "lodash.throttle": "^4.1.1", + "prop-types": "^15.7.2", + "shortid": "^2.2.16" + } + }, + "@deephaven/filters": { + "version": "0.58.0", + "resolved": "https://registry.npmjs.org/@deephaven/filters/-/filters-0.58.0.tgz", + "integrity": "sha512-7FRCEAjoo0e0gRZbdDxoTrC8SSqwL9IDH4Z23OjIOQ5RBS7MypFeomFLLJns9Sg1rOXXixG0Of7Zqv6cR8hC6Q==" + }, + "@deephaven/golden-layout": { + "version": "0.58.0", + "resolved": "https://registry.npmjs.org/@deephaven/golden-layout/-/golden-layout-0.58.0.tgz", + "integrity": "sha512-AN5AWH1Qr1Mof95ZWBGPRds+L4WBa0ePRTpmjDffcEuoPjKbd2KDzuiRp3au/QsrkfcyLz4rWQmSd+1dHb/qeQ==", + "requires": { + "@deephaven/components": "^0.58.0", + "jquery": "^3.6.0" + } + }, + "@deephaven/grid": { + "version": "0.58.0", + "resolved": "https://registry.npmjs.org/@deephaven/grid/-/grid-0.58.0.tgz", + "integrity": "sha512-BmSuLKm70qzHEZPaq8pc3CCOXcxHw9KmWwuZTQnjMMGHSyGmDgseydODwOatbuW4QohY+B03Uf1GdaEpAT0GVw==", + "requires": { + "@deephaven/utils": "^0.58.0", + "classnames": "^2.3.1", + "color-convert": "^2.0.1", + "event-target-shim": "^6.0.2", + "linkifyjs": "^4.1.0", + "lodash.clamp": "^4.0.3", + "memoize-one": "^5.1.1", + "memoizee": "^0.4.15", + "prop-types": "^15.7.2" + } + }, + "@deephaven/icons": { + "version": "0.58.0", + "resolved": "https://registry.npmjs.org/@deephaven/icons/-/icons-0.58.0.tgz", + "integrity": "sha512-jD8rEOCTbelkXT2BRGTRamP8bmHmk/Hdo8uu6s3ydjI2d52Rp7YaCjsspNS9fGV1XhpNF6N2lTC3rdtUWXvMFg==", + "requires": { + "@fortawesome/fontawesome-common-types": "^6.1.1" + } + }, + "@deephaven/iris-grid": { + "version": "0.58.0", + "resolved": "https://registry.npmjs.org/@deephaven/iris-grid/-/iris-grid-0.58.0.tgz", + "integrity": "sha512-HYMOxjmS/gpkTHshDOYsplvVgy9RW7mGvySpj4G00k5M595PJuqZ8q3VfnxVH0Tswb44bk1WmQhvHndAvWMg2A==", + "requires": { + "@deephaven/components": "^0.58.0", + "@deephaven/console": "^0.58.0", + "@deephaven/filters": "^0.58.0", + "@deephaven/grid": "^0.58.0", + "@deephaven/icons": "^0.58.0", + "@deephaven/jsapi-types": "^0.58.0", + "@deephaven/jsapi-utils": "^0.58.0", + "@deephaven/log": "^0.58.0", + "@deephaven/react-hooks": "^0.58.0", + "@deephaven/storage": "^0.58.0", + "@deephaven/utils": "^0.58.0", + "@dnd-kit/core": "^6.0.5", + "@dnd-kit/sortable": "^7.0.0", + "@dnd-kit/utilities": "^3.2.0", + "@fortawesome/react-fontawesome": "^0.2.0", + "classnames": "^2.3.1", + "deep-equal": "^2.0.5", + "lodash.clamp": "^4.0.3", + "lodash.debounce": "^4.0.8", + "lodash.throttle": "^4.1.1", + "memoize-one": "^5.1.1", + "memoizee": "^0.4.15", + "monaco-editor": "^0.41.0", + "prop-types": "^15.7.2", + "react-beautiful-dnd": "^13.1.0", + "react-transition-group": "^4.4.2", + "shortid": "^2.2.16" + } + }, + "@deephaven/jsapi-bootstrap": { + "version": "0.58.0", + "resolved": "https://registry.npmjs.org/@deephaven/jsapi-bootstrap/-/jsapi-bootstrap-0.58.0.tgz", + "integrity": "sha512-w7oubRFxkTbitfDs7JNALrsRZqHYtgbfllcaUnlTFXD688E/8kSjVVi4yaE8aKWmMDCQLFU0QoFsfC1Z+kxWeA==", + "requires": { + "@deephaven/components": "^0.58.0", + "@deephaven/jsapi-types": "^0.58.0", + "@deephaven/log": "^0.58.0", + "@deephaven/react-hooks": "^0.58.0" + } + }, + "@deephaven/jsapi-types": { + "version": "0.58.0", + "resolved": "https://registry.npmjs.org/@deephaven/jsapi-types/-/jsapi-types-0.58.0.tgz", + "integrity": "sha512-CjJXqHPPTWAqCYJRXC/Zb2VEdaXutyx55Hlzeeg/1vYnWY5t5Lxld4PQkuO4rvsJzzkuEWzdgggMw7Iu9ZVuQQ==" + }, + "@deephaven/jsapi-utils": { + "version": "0.58.0", + "resolved": "https://registry.npmjs.org/@deephaven/jsapi-utils/-/jsapi-utils-0.58.0.tgz", + "integrity": "sha512-isX/HdSl8XBQSPJHockM5ybGOBRplT/4M10b4loB4nZpY0y5bCY2H7sdutsICE6FTSMInAD+cMGNH6nPF+IGfg==", + "requires": { + "@deephaven/filters": "^0.58.0", + "@deephaven/jsapi-types": "^0.58.0", + "@deephaven/log": "^0.58.0", + "@deephaven/utils": "^0.58.0", + "lodash.clamp": "^4.0.3", + "shortid": "^2.2.16" + } + }, + "@deephaven/log": { + "version": "0.58.0", + "resolved": "https://registry.npmjs.org/@deephaven/log/-/log-0.58.0.tgz", + "integrity": "sha512-al05eDP3qamkWuqaQlsMESEn+rTRiaMZLAI8ePlHnlcEPrQS2ymkcO6sY6Am4yk3l5JQg8FKHA8LjHFZfkvTsQ==", + "requires": { + "event-target-shim": "^6.0.2" + } + }, + "@deephaven/plugin": { + "version": "0.58.0", + "resolved": "https://registry.npmjs.org/@deephaven/plugin/-/plugin-0.58.0.tgz", + "integrity": "sha512-QmmaMfNbsKi2hLJqwxilE57Mqio1mT9HhmIyc0qa0G60kPI1NuMAV3TJWu4+s9xQBMqolzrD8OD3jfLzrfK5VA==", + "requires": { + "@deephaven/components": "^0.58.0", + "@deephaven/golden-layout": "^0.58.0", + "@deephaven/icons": "^0.58.0", + "@deephaven/iris-grid": "^0.58.0", + "@deephaven/jsapi-types": "^0.58.0", + "@deephaven/log": "^0.58.0", + "@deephaven/react-hooks": "^0.58.0", + "@fortawesome/fontawesome-common-types": "^6.1.1", + "@fortawesome/react-fontawesome": "^0.2.0" + } + }, + "@deephaven/react-hooks": { + "version": "0.58.0", + "resolved": "https://registry.npmjs.org/@deephaven/react-hooks/-/react-hooks-0.58.0.tgz", + "integrity": "sha512-XeQgk8VqaTwcI68660pNd5q611EkKtqIxKaZnPMR5GzbHn1zE55fFAUi5UdgrSJhhe2oaIz2tFbVd8uaduANsw==", + "requires": { + "@adobe/react-spectrum": "^3.29.0", + "@deephaven/log": "^0.58.0", + "@deephaven/utils": "^0.58.0", + "lodash.debounce": "^4.0.8", + "shortid": "^2.2.16" + } + }, + "@deephaven/redux": { + "version": "0.58.0", + "resolved": "https://registry.npmjs.org/@deephaven/redux/-/redux-0.58.0.tgz", + "integrity": "sha512-RnhldimzNK1AJv9OIcKgXMZ5BXe+1Rm6/BXjDnAnl8HREEGtuVvIUna2g3s+FoOokfQCRIIzNkPXTwyJDGRO2A==", + "requires": { + "@deephaven/jsapi-types": "^0.58.0", + "@deephaven/jsapi-utils": "^0.58.0", + "@deephaven/log": "^0.58.0", + "@deephaven/plugin": "^0.58.0", + "deep-equal": "^2.0.5", + "redux-thunk": "2.4.1" + } + }, + "@deephaven/storage": { + "version": "0.58.0", + "resolved": "https://registry.npmjs.org/@deephaven/storage/-/storage-0.58.0.tgz", + "integrity": "sha512-GGgcqHdgQCko1vxSJttwDw04u4atbv51C/t8IJPdHoTzd1HoY/yYhX639UranueS5LygBTwu4QCM73CMuHS0eg==", + "requires": { + "@deephaven/filters": "^0.58.0", + "@deephaven/log": "^0.58.0", + "lodash.throttle": "^4.1.1" + } + }, + "@deephaven/utils": { + "version": "0.58.0", + "resolved": "https://registry.npmjs.org/@deephaven/utils/-/utils-0.58.0.tgz", + "integrity": "sha512-5zmnUYwAT6ognsZ7SjhEF6OS1xjF4nP3RixEO+CEZdBxen5Q8pZ2CjhPv2FvuqAUGEx+MhPq/yD1AXvzu3HITw==" + }, + "react-is": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", + "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", + "peer": true + }, "typescript": { "version": "4.9.5", "dev": true @@ -41087,7 +41722,6 @@ "version": "1.9.3", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, "requires": { "color-name": "1.1.3" } @@ -43060,8 +43694,7 @@ "event-target-shim": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", - "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==", - "dev": true + "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==" }, "eventemitter3": { "version": "4.0.7", diff --git a/plugins/matplotlib/src/js/package.json b/plugins/matplotlib/src/js/package.json index d98250e2b..713a809bb 100644 --- a/plugins/matplotlib/src/js/package.json +++ b/plugins/matplotlib/src/js/package.json @@ -35,11 +35,13 @@ "react": "^17.0.2" }, "dependencies": { - "@deephaven/components": "^0.40.0", - "@deephaven/dashboard": "^0.40.0", - "@deephaven/jsapi-bootstrap": "^0.40.0", - "@deephaven/jsapi-types": "^0.40.0", - "@deephaven/log": "^0.40.0", + "@deephaven/components": "^0.58.0", + "@deephaven/dashboard": "^0.58.0", + "@deephaven/icons": "^0.58.0", + "@deephaven/jsapi-bootstrap": "^0.58.0", + "@deephaven/jsapi-types": "^0.58.0", + "@deephaven/log": "^0.58.0", + "@deephaven/plugin": "^0.58.0", "shortid": "^2.2.16" }, "publishConfig": { diff --git a/plugins/matplotlib/src/js/src/DashboardPlugin.tsx b/plugins/matplotlib/src/js/src/DashboardPlugin.tsx deleted file mode 100644 index 08ca8ad7e..000000000 --- a/plugins/matplotlib/src/js/src/DashboardPlugin.tsx +++ /dev/null @@ -1,81 +0,0 @@ -import React, { useCallback, useEffect } from 'react'; -import shortid from 'shortid'; -import { - DashboardPluginComponentProps, - LayoutUtils, - useListener, -} from '@deephaven/dashboard'; -import type { VariableDefinition } from '@deephaven/jsapi-types'; -import Log from '@deephaven/log'; -import MatPlotLibPanel from './MatPlotLibPanel'; -import styles from './MatPlotLibPanel.scss?inline'; - -const VARIABLE_TYPE = 'matplotlib.figure.Figure'; - -const log = Log.module('@deephaven/js-plugin-matplotlib.DashboardPlugin'); - -export function DashboardPlugin({ - id, - layout, - registerComponent, -}: DashboardPluginComponentProps): React.ReactNode { - const handlePanelOpen = useCallback( - ({ - dragEvent, - fetch, - metadata = {}, - panelId = shortid.generate(), - widget, - }: { - dragEvent?: DragEvent; - fetch: () => Promise; - metadata?: Record; - panelId?: string; - widget: VariableDefinition; - }) => { - const { id: widgetId, name, type } = widget; - if ((type as string) !== VARIABLE_TYPE) { - // Only want to listen for matplotlib panels - return; - } - log.info('Panel opened of type', type); - const config = { - type: 'react-component' as const, - component: MatPlotLibPanel.COMPONENT, - props: { - localDashboardId: id, - id: panelId, - metadata: { - ...metadata, - id: widgetId, - name, - type, - }, - fetch, - }, - title: name, - id: panelId, - }; - - const { root } = layout; - LayoutUtils.openComponent({ root, config, dragEvent }); - }, - [id, layout] - ); - - useEffect(() => { - const cleanups = [ - registerComponent(MatPlotLibPanel.COMPONENT, MatPlotLibPanel), - ]; - - return () => { - cleanups.forEach(cleanup => cleanup()); - }; - }, [registerComponent]); - - useListener(layout.eventHub, 'PanelEvent.OPEN', handlePanelOpen); - - return ; -} - -export default DashboardPlugin; diff --git a/plugins/matplotlib/src/js/src/MatPlotLibPanel.scss b/plugins/matplotlib/src/js/src/MatPlotLibPanel.scss deleted file mode 100644 index 13d4fb562..000000000 --- a/plugins/matplotlib/src/js/src/MatPlotLibPanel.scss +++ /dev/null @@ -1,12 +0,0 @@ -@import '@deephaven/components/scss/custom.scss'; - -.mat-plot-lib-panel { - height: 100%; - width: 100%; - - img { - height: 100%; - width: 100%; - object-fit: contain; - } -} diff --git a/plugins/matplotlib/src/js/src/MatplotlibPlugin.ts b/plugins/matplotlib/src/js/src/MatplotlibPlugin.ts new file mode 100644 index 000000000..4f083bbe4 --- /dev/null +++ b/plugins/matplotlib/src/js/src/MatplotlibPlugin.ts @@ -0,0 +1,13 @@ +import { type WidgetPlugin, PluginType } from '@deephaven/plugin'; +import { vsGraph } from '@deephaven/icons'; +import { MatplotlibView } from './MatplotlibView'; + +export const MatplotlibPlugin: WidgetPlugin = { + name: '@deephaven/js-plugin-matplotlib', + type: PluginType.WIDGET_PLUGIN, + supportedTypes: 'matplotlib.figure.Figure', + component: MatplotlibView, + icon: vsGraph, +}; + +export default MatplotlibPlugin; diff --git a/plugins/matplotlib/src/js/src/MatPlotLibPanel.tsx b/plugins/matplotlib/src/js/src/MatplotlibView.tsx similarity index 62% rename from plugins/matplotlib/src/js/src/MatPlotLibPanel.tsx rename to plugins/matplotlib/src/js/src/MatplotlibView.tsx index fa2903ba6..c1beea599 100644 --- a/plugins/matplotlib/src/js/src/MatPlotLibPanel.tsx +++ b/plugins/matplotlib/src/js/src/MatplotlibView.tsx @@ -1,10 +1,10 @@ -import React, { useEffect, useState } from 'react'; +import React, { CSSProperties, useEffect, useState } from 'react'; import { useApi } from '@deephaven/jsapi-bootstrap'; -import type { Table } from '@deephaven/jsapi-types'; +import type { Table, ViewportData } from '@deephaven/jsapi-types'; import Log from '@deephaven/log'; -import { PanelProps } from '@deephaven/dashboard'; +import { WidgetComponentProps } from '@deephaven/plugin'; -const log = Log.module('@deephaven/js-plugin-matplotlib.MatPlotLibPanel'); +const log = Log.module('@deephaven/js-plugin-matplotlib.MatplotlibView'); enum InputColumn { key = 'key', @@ -15,28 +15,22 @@ enum InputKey { revision = 'revision', } -export type MatPlotLibExportedObject = { - fetch: () => unknown; +export const MatplotlibViewStyle: CSSProperties = { + height: '100%', + width: '100%', + display: 'contents', }; -export type MatPlotLibWidget = { - type: string; - getDataAsBase64: () => string; - exportedObjects: MatPlotLibExportedObject[]; -}; - -export type MatPlotLibPanelProps = { - fetch: () => Promise; -} & PanelProps; - -export type MatPlotLibPanelState = { - imageData?: string; +export const MatplotlibViewImageStyle: CSSProperties = { + height: '100%', + width: '100%', + objectFit: 'contain', }; /** * Displays a rendered matplotlib from the server */ -export function MatPlotLibPanel(props: MatPlotLibPanelProps): React.ReactNode { +export function MatplotlibView(props: WidgetComponentProps): JSX.Element { const { fetch } = props; const [imageSrc, setImageSrc] = useState(); const [inputTable, setInputTable] = useState(); @@ -59,11 +53,14 @@ export function MatPlotLibPanel(props: MatPlotLibPanelProps): React.ReactNode { table.applyFilter([ keyColumn.filter().eq(dh.FilterValue.ofString(InputKey.revision)), ]); - table.addEventListener(dh.Table.EVENT_UPDATED, ({ detail: data }) => { - const newRevision = data.rows[0].get(valueColumn); - log.debug('New revision', newRevision); - setRevision(newRevision); - }); + table.addEventListener( + dh.Table.EVENT_UPDATED, + ({ detail: data }: CustomEvent) => { + const newRevision = data.rows[0].get(valueColumn); + log.debug('New revision', newRevision); + setRevision(newRevision); + } + ); table.setViewport(0, 0, [valueColumn]); } openTable(); @@ -96,12 +93,16 @@ export function MatPlotLibPanel(props: MatPlotLibPanelProps): React.ReactNode { ); return ( -
- {imageSrc !== undefined && MatPlotLib render} +
+ {imageSrc !== undefined && ( + Matplotlib render + )}
); } -MatPlotLibPanel.COMPONENT = 'MatPlotLibPanel'; - -export default MatPlotLibPanel; +export default MatplotlibView; diff --git a/plugins/matplotlib/src/js/src/index.ts b/plugins/matplotlib/src/js/src/index.ts index a28fb6d8b..ab5627523 100644 --- a/plugins/matplotlib/src/js/src/index.ts +++ b/plugins/matplotlib/src/js/src/index.ts @@ -1,2 +1,3 @@ -export * from './MatPlotLibPanel'; -export * from './DashboardPlugin'; +import { MatplotlibPlugin } from './MatplotlibPlugin'; + +export default MatplotlibPlugin; diff --git a/plugins/matplotlib/src/js/vite.config.ts b/plugins/matplotlib/src/js/vite.config.ts index 1e1c8674f..785ccea5c 100644 --- a/plugins/matplotlib/src/js/vite.config.ts +++ b/plugins/matplotlib/src/js/vite.config.ts @@ -11,7 +11,16 @@ export default defineConfig(({ mode }) => ({ formats: ['cjs'], }, rollupOptions: { - external: ['react', 'react-dom', '@deephaven/jsapi-bootstrap'], + external: [ + 'react', + 'react-dom', + '@deephaven/components', + '@deephaven/dashboard', + '@deephaven/icons', + '@deephaven/jsapi-bootstrap', + '@deephaven/log', + '@deephaven/plugin', + ], }, }, define: