diff --git a/superset-frontend/package-lock.json b/superset-frontend/package-lock.json index 0f74a842b120a..00abb2871a508 100644 --- a/superset-frontend/package-lock.json +++ b/superset-frontend/package-lock.json @@ -13,34 +13,34 @@ "@babel/runtime-corejs3": "^7.12.5", "@data-ui/sparkline": "^0.0.84", "@emotion/core": "^10.0.35", - "@superset-ui/chart-controls": "^0.17.12", - "@superset-ui/core": "^0.17.11", - "@superset-ui/legacy-plugin-chart-calendar": "^0.17.12", - "@superset-ui/legacy-plugin-chart-chord": "^0.17.12", - "@superset-ui/legacy-plugin-chart-country-map": "^0.17.12", - "@superset-ui/legacy-plugin-chart-event-flow": "^0.17.12", - "@superset-ui/legacy-plugin-chart-force-directed": "^0.17.12", - "@superset-ui/legacy-plugin-chart-heatmap": "^0.17.12", - "@superset-ui/legacy-plugin-chart-histogram": "^0.17.12", - "@superset-ui/legacy-plugin-chart-horizon": "^0.17.12", - "@superset-ui/legacy-plugin-chart-map-box": "^0.17.12", - "@superset-ui/legacy-plugin-chart-paired-t-test": "^0.17.12", - "@superset-ui/legacy-plugin-chart-parallel-coordinates": "^0.17.12", - "@superset-ui/legacy-plugin-chart-partition": "^0.17.12", - "@superset-ui/legacy-plugin-chart-pivot-table": "^0.17.12", - "@superset-ui/legacy-plugin-chart-rose": "^0.17.12", - "@superset-ui/legacy-plugin-chart-sankey": "^0.17.12", - "@superset-ui/legacy-plugin-chart-sankey-loop": "^0.17.12", - "@superset-ui/legacy-plugin-chart-sunburst": "^0.17.12", - "@superset-ui/legacy-plugin-chart-treemap": "^0.17.12", - "@superset-ui/legacy-plugin-chart-world-map": "^0.17.12", - "@superset-ui/legacy-preset-chart-big-number": "^0.17.12", + "@superset-ui/chart-controls": "^0.17.13", + "@superset-ui/core": "^0.17.13", + "@superset-ui/legacy-plugin-chart-calendar": "^0.17.13", + "@superset-ui/legacy-plugin-chart-chord": "^0.17.13", + "@superset-ui/legacy-plugin-chart-country-map": "^0.17.13", + "@superset-ui/legacy-plugin-chart-event-flow": "^0.17.13", + "@superset-ui/legacy-plugin-chart-force-directed": "^0.17.13", + "@superset-ui/legacy-plugin-chart-heatmap": "^0.17.13", + "@superset-ui/legacy-plugin-chart-histogram": "^0.17.13", + "@superset-ui/legacy-plugin-chart-horizon": "^0.17.13", + "@superset-ui/legacy-plugin-chart-map-box": "^0.17.13", + "@superset-ui/legacy-plugin-chart-paired-t-test": "^0.17.13", + "@superset-ui/legacy-plugin-chart-parallel-coordinates": "^0.17.13", + "@superset-ui/legacy-plugin-chart-partition": "^0.17.13", + "@superset-ui/legacy-plugin-chart-pivot-table": "^0.17.13", + "@superset-ui/legacy-plugin-chart-rose": "^0.17.13", + "@superset-ui/legacy-plugin-chart-sankey": "^0.17.13", + "@superset-ui/legacy-plugin-chart-sankey-loop": "^0.17.13", + "@superset-ui/legacy-plugin-chart-sunburst": "^0.17.13", + "@superset-ui/legacy-plugin-chart-treemap": "^0.17.13", + "@superset-ui/legacy-plugin-chart-world-map": "^0.17.13", + "@superset-ui/legacy-preset-chart-big-number": "^0.17.13", "@superset-ui/legacy-preset-chart-deckgl": "^0.4.6", - "@superset-ui/legacy-preset-chart-nvd3": "^0.17.12", - "@superset-ui/plugin-chart-echarts": "^0.17.12", - "@superset-ui/plugin-chart-table": "^0.17.12", - "@superset-ui/plugin-chart-word-cloud": "^0.17.12", - "@superset-ui/preset-chart-xy": "^0.17.12", + "@superset-ui/legacy-preset-chart-nvd3": "^0.17.13", + "@superset-ui/plugin-chart-echarts": "^0.17.13", + "@superset-ui/plugin-chart-table": "^0.17.13", + "@superset-ui/plugin-chart-word-cloud": "^0.17.13", + "@superset-ui/preset-chart-xy": "^0.17.13", "@vx/responsive": "^0.0.195", "abortcontroller-polyfill": "^1.1.9", "antd": "^4.9.4", @@ -14124,11 +14124,11 @@ } }, "node_modules/@superset-ui/chart-controls": { - "version": "0.17.12", - "resolved": "https://registry.npmjs.org/@superset-ui/chart-controls/-/chart-controls-0.17.12.tgz", - "integrity": "sha512-2IMaFR6sU8IM8TyGb3km8RMkkVp3zhqIMA11OI0pb8lyBJIxdbz8wpGoASpHCCBRhLyt7U0TV7yOePotFGklbw==", + "version": "0.17.13", + "resolved": "https://registry.npmjs.org/@superset-ui/chart-controls/-/chart-controls-0.17.13.tgz", + "integrity": "sha512-FwIPvkDSm/Qewx3IRQId4+8JdO/UcsfznSntzOZ3Syb+awyZbfNdF7OjqZOv501bMcXOrbMqiTqH6Kxoy4Y+8g==", "dependencies": { - "@superset-ui/core": "0.17.11", + "@superset-ui/core": "0.17.13", "lodash": "^4.17.15", "prop-types": "^15.7.2" }, @@ -14141,9 +14141,9 @@ } }, "node_modules/@superset-ui/core": { - "version": "0.17.11", - "resolved": "https://registry.npmjs.org/@superset-ui/core/-/core-0.17.11.tgz", - "integrity": "sha512-PNJAHjQMELyn8MADB5lp9jDx9SwgxMwR5e2SZDq0vBrcg+LNZCgvkptwXZ7bOTbTwavPVEWgwXa1A9v2TKvFRA==", + "version": "0.17.13", + "resolved": "https://registry.npmjs.org/@superset-ui/core/-/core-0.17.13.tgz", + "integrity": "sha512-kY9wR2WKCHfbab7gVWFNpZrsYELSWPUZZUBUIduEvfmxWYVTkl98nv926Hle5bQk64OfuDbM0QzrxOApVJ3Sdg==", "dependencies": { "@babel/runtime": "^7.1.2", "@emotion/core": "^10.0.28", @@ -14232,12 +14232,12 @@ } }, "node_modules/@superset-ui/legacy-plugin-chart-calendar": { - "version": "0.17.12", - "resolved": "https://registry.npmjs.org/@superset-ui/legacy-plugin-chart-calendar/-/legacy-plugin-chart-calendar-0.17.12.tgz", - "integrity": "sha512-NYf5x3e4AIPeqmyq1Cog66zn3KgmpGXtwIp4RS2J2CIEWVZmvWaR8Xyjy1HifQWsFpmN+MjGr8L9lag6ejZZeQ==", + "version": "0.17.13", + "resolved": "https://registry.npmjs.org/@superset-ui/legacy-plugin-chart-calendar/-/legacy-plugin-chart-calendar-0.17.13.tgz", + "integrity": "sha512-98JTVEZ08xA6PPte1GrOvtTICk3Q0U1zQNrJZPwwXtPyet0/J9vQwOE8g399KaHb6+mND2ECUfKR++NOtXaC3w==", "dependencies": { - "@superset-ui/chart-controls": "0.17.12", - "@superset-ui/core": "0.17.11", + "@superset-ui/chart-controls": "0.17.13", + "@superset-ui/core": "0.17.13", "d3-array": "^2.0.3", "d3-selection": "^1.4.0", "d3-tip": "^0.9.1", @@ -14256,24 +14256,24 @@ } }, "node_modules/@superset-ui/legacy-plugin-chart-chord": { - "version": "0.17.12", - "resolved": "https://registry.npmjs.org/@superset-ui/legacy-plugin-chart-chord/-/legacy-plugin-chart-chord-0.17.12.tgz", - "integrity": "sha512-O7hjn02qPhD6qE21B6/EwvGVtcGDBJHlrcoJRjDhn8G0xNude7bwb0YlEHCZwlmvTinZD12rJv4l994V8/e5fg==", + "version": "0.17.13", + "resolved": "https://registry.npmjs.org/@superset-ui/legacy-plugin-chart-chord/-/legacy-plugin-chart-chord-0.17.13.tgz", + "integrity": "sha512-jdSY6uTIpsO5G6DE0sFOYfiWw+uVyzhNsM68L5QsW1DgbbGbZtr9+Uig0Ec4niQqzntjpCctNFEaeOPhs5QBmw==", "dependencies": { - "@superset-ui/chart-controls": "0.17.12", - "@superset-ui/core": "0.17.11", + "@superset-ui/chart-controls": "0.17.13", + "@superset-ui/core": "0.17.13", "d3": "^3.5.17", "prop-types": "^15.6.2", "react": "^16.13.1" } }, "node_modules/@superset-ui/legacy-plugin-chart-country-map": { - "version": "0.17.12", - "resolved": "https://registry.npmjs.org/@superset-ui/legacy-plugin-chart-country-map/-/legacy-plugin-chart-country-map-0.17.12.tgz", - "integrity": "sha512-92wIkd1ve5sVz3wEZ1YBGoeUj2dupcpVyIsazT9t3YuEOwa4fuhm8w7FLJ2mS3U791j9KI63RsPM08mssl38sA==", + "version": "0.17.13", + "resolved": "https://registry.npmjs.org/@superset-ui/legacy-plugin-chart-country-map/-/legacy-plugin-chart-country-map-0.17.13.tgz", + "integrity": "sha512-2wwoVNZtxH7UXOdRjhqCj0BLBQ8GQTt0V8v1+VphqV6jlDCEQaJmSdSnfB0kbwjZ7bR5rmO4XmFxEHJnNUb/IA==", "dependencies": { - "@superset-ui/chart-controls": "0.17.12", - "@superset-ui/core": "0.17.11", + "@superset-ui/chart-controls": "0.17.13", + "@superset-ui/core": "0.17.13", "d3": "^3.5.17", "d3-array": "^2.0.3", "prop-types": "^15.6.2" @@ -14288,13 +14288,13 @@ } }, "node_modules/@superset-ui/legacy-plugin-chart-event-flow": { - "version": "0.17.12", - "resolved": "https://registry.npmjs.org/@superset-ui/legacy-plugin-chart-event-flow/-/legacy-plugin-chart-event-flow-0.17.12.tgz", - "integrity": "sha512-zm6udN2qJirAQZhtLnwjOe+xJfKmpYoGRz7zejLOYHTbkqlv7D+GoB0M/GXiEo6vUbV289Cms9KsrsUh7gYvSw==", + "version": "0.17.13", + "resolved": "https://registry.npmjs.org/@superset-ui/legacy-plugin-chart-event-flow/-/legacy-plugin-chart-event-flow-0.17.13.tgz", + "integrity": "sha512-4cUAueJw/Te3pw73fNObkHeEeXNRwxNObkE6Z4M/9Z7qXAXNvIdhakgelnO9wcM19vcMXhS1cr0rdu37q4IgwA==", "dependencies": { "@data-ui/event-flow": "^0.0.84", - "@superset-ui/chart-controls": "0.17.12", - "@superset-ui/core": "0.17.11", + "@superset-ui/chart-controls": "0.17.13", + "@superset-ui/core": "0.17.13", "prop-types": "^15.6.2" }, "peerDependencies": { @@ -14302,12 +14302,12 @@ } }, "node_modules/@superset-ui/legacy-plugin-chart-force-directed": { - "version": "0.17.12", - "resolved": "https://registry.npmjs.org/@superset-ui/legacy-plugin-chart-force-directed/-/legacy-plugin-chart-force-directed-0.17.12.tgz", - "integrity": "sha512-+2aljLZ6wO7D90l/EhgzsK+CKxOX+ldArovKXyUlBkWozaXBw27cA8I5Rj3tdbwbDMlN/bYxw44hnExVjKTYMQ==", + "version": "0.17.13", + "resolved": "https://registry.npmjs.org/@superset-ui/legacy-plugin-chart-force-directed/-/legacy-plugin-chart-force-directed-0.17.13.tgz", + "integrity": "sha512-A3UWjqzWxYBI7aS2c11452kn50K4L4wc5/moKJo6jJgcxZtn/qBb4hjJ5CybYrvS+b4KKrbgTJY5850iVgg3Kg==", "dependencies": { - "@superset-ui/chart-controls": "0.17.12", - "@superset-ui/core": "0.17.11", + "@superset-ui/chart-controls": "0.17.13", + "@superset-ui/core": "0.17.13", "d3": "^3.5.17", "prop-types": "^15.7.2" }, @@ -14316,12 +14316,12 @@ } }, "node_modules/@superset-ui/legacy-plugin-chart-heatmap": { - "version": "0.17.12", - "resolved": "https://registry.npmjs.org/@superset-ui/legacy-plugin-chart-heatmap/-/legacy-plugin-chart-heatmap-0.17.12.tgz", - "integrity": "sha512-5K+dZ0688mn5KNza/b3SZ6h2d2VxY8gAXKaFBwyPjeabfexg5Sj1Squb5l4p7oTh1FSmLcAty0fXCwZALEh45g==", + "version": "0.17.13", + "resolved": "https://registry.npmjs.org/@superset-ui/legacy-plugin-chart-heatmap/-/legacy-plugin-chart-heatmap-0.17.13.tgz", + "integrity": "sha512-9Er9FmnUIyKuHPn8FmJsLBiXHpJaqjPH5utLQM+zCeGm3PLkJuM8PI5bHF/mNMnJRtqdMx4uWTmwoM+A4LLsag==", "dependencies": { - "@superset-ui/chart-controls": "0.17.12", - "@superset-ui/core": "0.17.11", + "@superset-ui/chart-controls": "0.17.13", + "@superset-ui/core": "0.17.13", "d3": "^3.5.17", "d3-svg-legend": "^1.x", "d3-tip": "^0.9.1", @@ -14329,14 +14329,14 @@ } }, "node_modules/@superset-ui/legacy-plugin-chart-histogram": { - "version": "0.17.12", - "resolved": "https://registry.npmjs.org/@superset-ui/legacy-plugin-chart-histogram/-/legacy-plugin-chart-histogram-0.17.12.tgz", - "integrity": "sha512-GNI0fmutspJvdNIDSeiOgXvpFwkqEB48ZiN/lf2/Vpjp1RY5fZDs+I3HlFo0XOveB5SkE2LMwIysO1ex7+ql+g==", + "version": "0.17.13", + "resolved": "https://registry.npmjs.org/@superset-ui/legacy-plugin-chart-histogram/-/legacy-plugin-chart-histogram-0.17.13.tgz", + "integrity": "sha512-pQFZuotoPvLuA93sfm+23/hIQL/CcawIEUaR4p+mkGvNpsFOf+FVjfI3wjk5Is9O7FJdD+zTSaZC73av1OjmkA==", "dependencies": { "@data-ui/histogram": "^0.0.84", "@data-ui/theme": "^0.0.84", - "@superset-ui/chart-controls": "0.17.12", - "@superset-ui/core": "0.17.11", + "@superset-ui/chart-controls": "0.17.13", + "@superset-ui/core": "0.17.13", "@vx/legend": "^0.0.198", "@vx/responsive": "^0.0.199", "@vx/scale": "^0.0.197", @@ -14405,12 +14405,12 @@ } }, "node_modules/@superset-ui/legacy-plugin-chart-horizon": { - "version": "0.17.12", - "resolved": "https://registry.npmjs.org/@superset-ui/legacy-plugin-chart-horizon/-/legacy-plugin-chart-horizon-0.17.12.tgz", - "integrity": "sha512-YQUMV494vP0Lu4pTdELsdR5CbXzQ78BRX0nxnyBXdXVb5UTxCVgXAhU7Q/eQQv2zJ3OXqUpQian2vCeTxqyvfA==", + "version": "0.17.13", + "resolved": "https://registry.npmjs.org/@superset-ui/legacy-plugin-chart-horizon/-/legacy-plugin-chart-horizon-0.17.13.tgz", + "integrity": "sha512-9bVKRikN6zDd2UcgJTo5dtk2LkAyFrGX7/RVAxC0/GmUyhKwPL7XgoK278myB9c5DL1K2lPhHTz7s1/nQatbcA==", "dependencies": { - "@superset-ui/chart-controls": "0.17.12", - "@superset-ui/core": "0.17.11", + "@superset-ui/chart-controls": "0.17.13", + "@superset-ui/core": "0.17.13", "d3-array": "^2.0.3", "d3-scale": "^3.0.1", "prop-types": "^15.6.2" @@ -14440,12 +14440,12 @@ } }, "node_modules/@superset-ui/legacy-plugin-chart-map-box": { - "version": "0.17.12", - "resolved": "https://registry.npmjs.org/@superset-ui/legacy-plugin-chart-map-box/-/legacy-plugin-chart-map-box-0.17.12.tgz", - "integrity": "sha512-G0RznxH5LH6dj9mdgLV2Z0MObjruOWCgGqsbItDbo1wi4iR8SuNGHDQgAnv24MlGiMSrp5mOYcUSlzSRFl96KA==", + "version": "0.17.13", + "resolved": "https://registry.npmjs.org/@superset-ui/legacy-plugin-chart-map-box/-/legacy-plugin-chart-map-box-0.17.13.tgz", + "integrity": "sha512-o+oR7FSH7Ep+jTxTOQb445RB8sNPBqs0o8BEOf8loEUlgSZUClQx8dQYSoxRpw6YjtWVD0J+4HtUzX2HQt++Ng==", "dependencies": { - "@superset-ui/chart-controls": "0.17.12", - "@superset-ui/core": "0.17.11", + "@superset-ui/chart-controls": "0.17.13", + "@superset-ui/core": "0.17.13", "immutable": "^3.8.2", "mapbox-gl": "^0.53.0", "prop-types": "^15.6.2", @@ -14466,12 +14466,12 @@ } }, "node_modules/@superset-ui/legacy-plugin-chart-paired-t-test": { - "version": "0.17.12", - "resolved": "https://registry.npmjs.org/@superset-ui/legacy-plugin-chart-paired-t-test/-/legacy-plugin-chart-paired-t-test-0.17.12.tgz", - "integrity": "sha512-e5FWzHzKpbB2tf5PabVIw1e7VXiBm+A6G9XvhmqNTLtFSlrQeehtje7pumjo6xYBeYwGcXJTLpgaQmplWaJ72w==", + "version": "0.17.13", + "resolved": "https://registry.npmjs.org/@superset-ui/legacy-plugin-chart-paired-t-test/-/legacy-plugin-chart-paired-t-test-0.17.13.tgz", + "integrity": "sha512-5evYJLS7/yVlA7OI8n3ioQEpsIz+8lSUaZo8n2wWbvRlqvApVNAx+ofppf5O9RqRgLfheYPT6FESUqTOAdRv+Q==", "dependencies": { - "@superset-ui/chart-controls": "0.17.12", - "@superset-ui/core": "0.17.11", + "@superset-ui/chart-controls": "0.17.13", + "@superset-ui/core": "0.17.13", "distributions": "^1.0.0", "prop-types": "^15.6.2", "reactable": "^1.1.0" @@ -14481,12 +14481,12 @@ } }, "node_modules/@superset-ui/legacy-plugin-chart-parallel-coordinates": { - "version": "0.17.12", - "resolved": "https://registry.npmjs.org/@superset-ui/legacy-plugin-chart-parallel-coordinates/-/legacy-plugin-chart-parallel-coordinates-0.17.12.tgz", - "integrity": "sha512-34vtDU3bMwNQk6dst6uC+4R5MwZ6VoUs6y+I5ZdqcLZj1uiu4TPvcOyPKzvXvtOBXkWmb6CKMagWXeg0Lei/Sg==", + "version": "0.17.13", + "resolved": "https://registry.npmjs.org/@superset-ui/legacy-plugin-chart-parallel-coordinates/-/legacy-plugin-chart-parallel-coordinates-0.17.13.tgz", + "integrity": "sha512-alRR+psEv0chVuwLGemlhBM8+UwnO9nWQsFvV8IblL0rSGKMsuofeutljp5BOXiJu/rpumWXn3HpriMri0ABDg==", "dependencies": { - "@superset-ui/chart-controls": "0.17.12", - "@superset-ui/core": "0.17.11", + "@superset-ui/chart-controls": "0.17.13", + "@superset-ui/core": "0.17.13", "d3": "^3.5.17", "prop-types": "^15.7.2" }, @@ -14495,12 +14495,12 @@ } }, "node_modules/@superset-ui/legacy-plugin-chart-partition": { - "version": "0.17.12", - "resolved": "https://registry.npmjs.org/@superset-ui/legacy-plugin-chart-partition/-/legacy-plugin-chart-partition-0.17.12.tgz", - "integrity": "sha512-4qSUzL5z3UwWjRpCIdSgwrjaHmj29rDzaPm77Aq0DVqNBTqk9dvQcwPeQPYjR/TrfuMB9jJ3rJYZqPI5F42lnw==", + "version": "0.17.13", + "resolved": "https://registry.npmjs.org/@superset-ui/legacy-plugin-chart-partition/-/legacy-plugin-chart-partition-0.17.13.tgz", + "integrity": "sha512-lkcWo2d47GPgmSxOyVGKRcNd5rm1EhNnbTN/vLVrRCkBJ1u3aOcWdm3xbAQBZNXk2LPFnZM5l9px3Q301znPew==", "dependencies": { - "@superset-ui/chart-controls": "0.17.12", - "@superset-ui/core": "0.17.11", + "@superset-ui/chart-controls": "0.17.13", + "@superset-ui/core": "0.17.13", "d3": "^3.5.17", "d3-hierarchy": "^1.1.8", "prop-types": "^15.6.2" @@ -14510,24 +14510,24 @@ } }, "node_modules/@superset-ui/legacy-plugin-chart-pivot-table": { - "version": "0.17.12", - "resolved": "https://registry.npmjs.org/@superset-ui/legacy-plugin-chart-pivot-table/-/legacy-plugin-chart-pivot-table-0.17.12.tgz", - "integrity": "sha512-DgMVuUd/G1gUOg2mzqp+0GB0V9ri6o+bGijW37rISjqyDHpwbYUMaWp/64/thjNfYa/D0x6OgGqai6/kdzPutA==", + "version": "0.17.13", + "resolved": "https://registry.npmjs.org/@superset-ui/legacy-plugin-chart-pivot-table/-/legacy-plugin-chart-pivot-table-0.17.13.tgz", + "integrity": "sha512-tsL+98WeQCeAbTkm6IdA0f/XlBX6pNnFH4MIrb4cw0GNSsJ/Yz5PiA+NUptnTMSX3k+DV10vtV/T2HtuhpDK4g==", "dependencies": { - "@superset-ui/chart-controls": "0.17.12", - "@superset-ui/core": "0.17.11", + "@superset-ui/chart-controls": "0.17.13", + "@superset-ui/core": "0.17.13", "d3": "^3.5.17", "datatables.net-bs": "^1.10.15", "prop-types": "^15.6.2" } }, "node_modules/@superset-ui/legacy-plugin-chart-rose": { - "version": "0.17.12", - "resolved": "https://registry.npmjs.org/@superset-ui/legacy-plugin-chart-rose/-/legacy-plugin-chart-rose-0.17.12.tgz", - "integrity": "sha512-ZIxSf153T4MW6Nbsld41TIk04sxwqA7d9EhL7NutAkN7yGgz8/dtlNvt2JfAQCVLbJnrH2b7xR+4FDYd+/ks2g==", + "version": "0.17.13", + "resolved": "https://registry.npmjs.org/@superset-ui/legacy-plugin-chart-rose/-/legacy-plugin-chart-rose-0.17.13.tgz", + "integrity": "sha512-Hz2nq14TzbUg8ynMi7zfbK5blgx4XBB25dRMvpv1jyQeTYw/IAPdMb3y0/61ouQItpCImjGWJt7ixCSYoIMJIg==", "dependencies": { - "@superset-ui/chart-controls": "0.17.12", - "@superset-ui/core": "0.17.11", + "@superset-ui/chart-controls": "0.17.13", + "@superset-ui/core": "0.17.13", "d3": "^3.5.17", "nvd3": "1.8.6", "prop-types": "^15.6.2" @@ -14537,12 +14537,12 @@ } }, "node_modules/@superset-ui/legacy-plugin-chart-sankey": { - "version": "0.17.12", - "resolved": "https://registry.npmjs.org/@superset-ui/legacy-plugin-chart-sankey/-/legacy-plugin-chart-sankey-0.17.12.tgz", - "integrity": "sha512-Wj3qLsN9Chfe6mvjRK7c9OfAeQij+JL0qDz01fa9FNKxMjNNi7eZkRb4mH6CkfYxJlLWjpVx1anInz+aCaoj4Q==", + "version": "0.17.13", + "resolved": "https://registry.npmjs.org/@superset-ui/legacy-plugin-chart-sankey/-/legacy-plugin-chart-sankey-0.17.13.tgz", + "integrity": "sha512-DDqS5zMKNtssZemaqetSc1Wm/Ymg7TayK34SmHAXzFJ0ZbzlWsUs6gSwY38MtTwfT/Yy/g+Cp6HfJjBsu//gdw==", "dependencies": { - "@superset-ui/chart-controls": "0.17.12", - "@superset-ui/core": "0.17.11", + "@superset-ui/chart-controls": "0.17.13", + "@superset-ui/core": "0.17.13", "d3": "^3.5.17", "d3-sankey": "^0.4.2", "prop-types": "^15.6.2" @@ -14552,47 +14552,47 @@ } }, "node_modules/@superset-ui/legacy-plugin-chart-sankey-loop": { - "version": "0.17.12", - "resolved": "https://registry.npmjs.org/@superset-ui/legacy-plugin-chart-sankey-loop/-/legacy-plugin-chart-sankey-loop-0.17.12.tgz", - "integrity": "sha512-iqV3phKISwD5o+NniWXa4J5eFmGt03twmFZLAtNXR39AnG4HKHQxB7rwcQPYJA9U4A4TkgxCxQCxyndTb3VmOA==", + "version": "0.17.13", + "resolved": "https://registry.npmjs.org/@superset-ui/legacy-plugin-chart-sankey-loop/-/legacy-plugin-chart-sankey-loop-0.17.13.tgz", + "integrity": "sha512-cfTrYKWu02TV31a4N3g7i8+JlpvTQUD8SQWV8bWfGqenCfaYXnEtLcT7a06AZD84c7xPVIJ3ri+e1levxyCi/Q==", "dependencies": { - "@superset-ui/chart-controls": "0.17.12", - "@superset-ui/core": "0.17.11", + "@superset-ui/chart-controls": "0.17.13", + "@superset-ui/core": "0.17.13", "d3-sankey-diagram": "^0.7.3", "d3-selection": "^1.4.0", "prop-types": "^15.6.2" } }, "node_modules/@superset-ui/legacy-plugin-chart-sunburst": { - "version": "0.17.12", - "resolved": "https://registry.npmjs.org/@superset-ui/legacy-plugin-chart-sunburst/-/legacy-plugin-chart-sunburst-0.17.12.tgz", - "integrity": "sha512-Ml7uxXqpaMiTEzXFzM1hLOo5z8yQn3HUiXhV77W9OSjg05Y6uCai+d9TeAKiwLEU0OKCzku8jkOj35Cv5ZMPLg==", + "version": "0.17.13", + "resolved": "https://registry.npmjs.org/@superset-ui/legacy-plugin-chart-sunburst/-/legacy-plugin-chart-sunburst-0.17.13.tgz", + "integrity": "sha512-rpc91+qtAZAjxmJyuK39GJBnzyVPVVSA8XZ3iYHFPTYooiIM0QuRbYY8RVIsDqwIJ2gNCaCxD8ymA9OhIQjAEw==", "dependencies": { - "@superset-ui/chart-controls": "0.17.12", - "@superset-ui/core": "0.17.11", + "@superset-ui/chart-controls": "0.17.13", + "@superset-ui/core": "0.17.13", "d3": "^3.5.17", "prop-types": "^15.6.2" } }, "node_modules/@superset-ui/legacy-plugin-chart-treemap": { - "version": "0.17.12", - "resolved": "https://registry.npmjs.org/@superset-ui/legacy-plugin-chart-treemap/-/legacy-plugin-chart-treemap-0.17.12.tgz", - "integrity": "sha512-kHoslysbX070nuI1zhYGFKWxS6sldpX0TRuGyDLM4anUApuw7y/+jZeOAu6Ws+T6akkVmJpis0fkKrkbeFFrNQ==", + "version": "0.17.13", + "resolved": "https://registry.npmjs.org/@superset-ui/legacy-plugin-chart-treemap/-/legacy-plugin-chart-treemap-0.17.13.tgz", + "integrity": "sha512-60zgDGCbj0o6x8vJeRNyPp1jpHFOBmpza2xrHshaAWef6tyI7btaiWyDAk1+1sm+f5gHuVWI4uP8J6rE7xeuBQ==", "dependencies": { - "@superset-ui/chart-controls": "0.17.12", - "@superset-ui/core": "0.17.11", + "@superset-ui/chart-controls": "0.17.13", + "@superset-ui/core": "0.17.13", "d3-hierarchy": "^1.1.8", "d3-selection": "^1.4.0", "prop-types": "^15.6.2" } }, "node_modules/@superset-ui/legacy-plugin-chart-world-map": { - "version": "0.17.12", - "resolved": "https://registry.npmjs.org/@superset-ui/legacy-plugin-chart-world-map/-/legacy-plugin-chart-world-map-0.17.12.tgz", - "integrity": "sha512-9nHlbcdpoUe0vEi7t/QtOcXDxTqz0W3zl2+s4hUNtEsHGdKNrVeir4f3sq1zF+OOLReKHBoL7MFv6cF8JUNMNA==", + "version": "0.17.13", + "resolved": "https://registry.npmjs.org/@superset-ui/legacy-plugin-chart-world-map/-/legacy-plugin-chart-world-map-0.17.13.tgz", + "integrity": "sha512-xxN0roJlvSqVYJpXAMkCbNgscCN5skazLlxRa+M4LYT7C3XAigcUwR8SwhP6FN9lrDaupiGaxiygrCZ2JTZhKg==", "dependencies": { - "@superset-ui/chart-controls": "0.17.12", - "@superset-ui/core": "0.17.11", + "@superset-ui/chart-controls": "0.17.13", + "@superset-ui/core": "0.17.13", "d3": "^3.5.17", "d3-array": "^2.4.0", "d3-color": "^1.4.1", @@ -14617,13 +14617,13 @@ "integrity": "sha512-p2sTHSLCJI2QKunbGb7ocOh7DgTAn8IrLx21QRc/BSnodXM4sv6aLQlnfpvehFMLZEfBc6g9pH9SWQccFYfJ9Q==" }, "node_modules/@superset-ui/legacy-preset-chart-big-number": { - "version": "0.17.12", - "resolved": "https://registry.npmjs.org/@superset-ui/legacy-preset-chart-big-number/-/legacy-preset-chart-big-number-0.17.12.tgz", - "integrity": "sha512-GQNXqSA827Fch3eNaCaPMYERvWNRdaUqH00Suqq6BG+aYW+rKhIHaYBsY0eF/w1GRfZ+YjAh/yYyY21P+N/hqg==", + "version": "0.17.13", + "resolved": "https://registry.npmjs.org/@superset-ui/legacy-preset-chart-big-number/-/legacy-preset-chart-big-number-0.17.13.tgz", + "integrity": "sha512-GqFG/BS2370GgxOm5mjXqjUMYW3eZGkj9jNxZgeKLPzftXIZ1CglLO6jZw6xU6jpgEhzKpQomOjGBbD+Kdc/Mg==", "dependencies": { "@data-ui/xy-chart": "^0.0.84", - "@superset-ui/chart-controls": "0.17.12", - "@superset-ui/core": "0.17.11", + "@superset-ui/chart-controls": "0.17.13", + "@superset-ui/core": "0.17.13", "@types/d3-color": "^1.2.2", "@types/shortid": "^0.0.29", "d3-color": "^1.2.3", @@ -14664,13 +14664,13 @@ } }, "node_modules/@superset-ui/legacy-preset-chart-nvd3": { - "version": "0.17.12", - "resolved": "https://registry.npmjs.org/@superset-ui/legacy-preset-chart-nvd3/-/legacy-preset-chart-nvd3-0.17.12.tgz", - "integrity": "sha512-e55scJz7FKnn82vtYSxQIbtNFiN7Ftx5guw76Rcm2hkx2bu2TWTgSq7J/4BuTgaSCZsDEt48PNWIeJsfiu+HFQ==", + "version": "0.17.13", + "resolved": "https://registry.npmjs.org/@superset-ui/legacy-preset-chart-nvd3/-/legacy-preset-chart-nvd3-0.17.13.tgz", + "integrity": "sha512-TQyMdtP34pXG9wO5LtfNhg1ZWOD4HIfhLzED+/jvkf2GTl5DY4hUHPlO1h3h4PRKz62tsSOMMSI3+RepiEHjsA==", "dependencies": { "@data-ui/xy-chart": "^0.0.84", - "@superset-ui/chart-controls": "0.17.12", - "@superset-ui/core": "0.17.11", + "@superset-ui/chart-controls": "0.17.13", + "@superset-ui/core": "0.17.13", "d3": "^3.5.17", "d3-tip": "^0.9.1", "dompurify": "^2.0.6", @@ -14687,12 +14687,12 @@ } }, "node_modules/@superset-ui/plugin-chart-echarts": { - "version": "0.17.12", - "resolved": "https://registry.npmjs.org/@superset-ui/plugin-chart-echarts/-/plugin-chart-echarts-0.17.12.tgz", - "integrity": "sha512-qMyfxv7XPUc+6k5QzJbhooCv2Jqjq/lS9B3VThU4sMZNuqiPmUPBykl7pdw+1TTX7QOJV73C35jm+YU0FAoL1A==", + "version": "0.17.13", + "resolved": "https://registry.npmjs.org/@superset-ui/plugin-chart-echarts/-/plugin-chart-echarts-0.17.13.tgz", + "integrity": "sha512-QVxbvsNjlT+L2T1WFmoTWM5aryZ++sHFNUIUX3i4hTAV/Di7obt2k6ps0vVdPBVpwmjjWzMuTCJX5Ppqs9n3Pg==", "dependencies": { - "@superset-ui/chart-controls": "0.17.12", - "@superset-ui/core": "0.17.11", + "@superset-ui/chart-controls": "0.17.13", + "@superset-ui/core": "0.17.13", "@types/mathjs": "^6.0.7", "d3-array": "^1.2.0", "echarts": "^5.0.2", @@ -14703,13 +14703,13 @@ } }, "node_modules/@superset-ui/plugin-chart-table": { - "version": "0.17.12", - "resolved": "https://registry.npmjs.org/@superset-ui/plugin-chart-table/-/plugin-chart-table-0.17.12.tgz", - "integrity": "sha512-izJkv2rFUAg1aDgLD/nRbgmVw04b6wx5GrbqGjMFv1Y4fR13ZlSgz/QuVVFM7vj9UgQVcz3PA+DNEkiABGKRgA==", + "version": "0.17.13", + "resolved": "https://registry.npmjs.org/@superset-ui/plugin-chart-table/-/plugin-chart-table-0.17.13.tgz", + "integrity": "sha512-ofh+g2ozHmlvd42BZvlRrcfU4i9FstMGrDCecSP4WKzMmrgbJbfW1zwpLE8CPGGV+6NaET/fIVWw2p+sj1CEig==", "dependencies": { "@emotion/core": "^10.0.28", - "@superset-ui/chart-controls": "0.17.12", - "@superset-ui/core": "0.17.11", + "@superset-ui/chart-controls": "0.17.13", + "@superset-ui/core": "0.17.13", "@types/d3-array": "^2.0.0", "@types/react-table": "^7.0.19", "d3-array": "^2.4.0", @@ -14735,12 +14735,12 @@ } }, "node_modules/@superset-ui/plugin-chart-word-cloud": { - "version": "0.17.12", - "resolved": "https://registry.npmjs.org/@superset-ui/plugin-chart-word-cloud/-/plugin-chart-word-cloud-0.17.12.tgz", - "integrity": "sha512-QIJmig3nC/cdx1Ch06OqOnypYvHnkKzpd+YSj3WMXhEn5p2SRS0mqgM1n56/QvNbJegHi+xEuaZKZ4Cek3409g==", + "version": "0.17.13", + "resolved": "https://registry.npmjs.org/@superset-ui/plugin-chart-word-cloud/-/plugin-chart-word-cloud-0.17.13.tgz", + "integrity": "sha512-TVD5emY7sEljAuhk4da4uAEBlNPyjabzlMapP4Jjrulwy9rnYPXiyf6L6Z8BxoSY8RD09jdl7TRxQ/jTzCp+bg==", "dependencies": { - "@superset-ui/chart-controls": "0.17.12", - "@superset-ui/core": "0.17.11", + "@superset-ui/chart-controls": "0.17.13", + "@superset-ui/core": "0.17.13", "@types/d3-cloud": "^1.2.1", "@types/d3-scale": "^2.0.2", "d3-cloud": "^1.2.5", @@ -14774,14 +14774,14 @@ } }, "node_modules/@superset-ui/preset-chart-xy": { - "version": "0.17.12", - "resolved": "https://registry.npmjs.org/@superset-ui/preset-chart-xy/-/preset-chart-xy-0.17.12.tgz", - "integrity": "sha512-UwXjsNKzAhYyjV+NJksr7nQ8YN3RUwzemxkHjpHX7tvIIquci3jqcCVbP8Ml19YxAs9o5gf+i6uUvn4Vtag+qw==", + "version": "0.17.13", + "resolved": "https://registry.npmjs.org/@superset-ui/preset-chart-xy/-/preset-chart-xy-0.17.13.tgz", + "integrity": "sha512-NJ5ACYe1AlZ9hb24NdntNx1CFVRyOAQtpvWWfKfEnQc26t0A8Bl68WL05pMazwHQ6fkthseRXlpUEzdVVyB7Lw==", "dependencies": { "@data-ui/theme": "^0.0.84", "@data-ui/xy-chart": "^0.0.84", - "@superset-ui/chart-controls": "0.17.12", - "@superset-ui/core": "0.17.11", + "@superset-ui/chart-controls": "0.17.13", + "@superset-ui/core": "0.17.13", "@vx/axis": "^0.0.198", "@vx/legend": "^0.0.198", "@vx/scale": "^0.0.197", @@ -22022,12 +22022,14 @@ }, "node_modules/chokidar/node_modules/fsevents/node_modules/abbrev": { "version": "1.1.1", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", "dev": true, "optional": true }, "node_modules/chokidar/node_modules/fsevents/node_modules/ansi-regex": { "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", "dev": true, "optional": true, @@ -22037,12 +22039,14 @@ }, "node_modules/chokidar/node_modules/fsevents/node_modules/aproba": { "version": "1.2.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", "dev": true, "optional": true }, "node_modules/chokidar/node_modules/fsevents/node_modules/are-we-there-yet": { "version": "1.1.5", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz", "integrity": "sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==", "dev": true, "optional": true, @@ -22053,12 +22057,14 @@ }, "node_modules/chokidar/node_modules/fsevents/node_modules/balanced-match": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", "dev": true, "optional": true }, "node_modules/chokidar/node_modules/fsevents/node_modules/brace-expansion": { "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dev": true, "optional": true, @@ -22069,6 +22075,7 @@ }, "node_modules/chokidar/node_modules/fsevents/node_modules/code-point-at": { "version": "1.1.0", + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", "dev": true, "optional": true, @@ -22078,18 +22085,21 @@ }, "node_modules/chokidar/node_modules/fsevents/node_modules/concat-map": { "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", "dev": true, "optional": true }, "node_modules/chokidar/node_modules/fsevents/node_modules/console-control-strings": { "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=", "dev": true, "optional": true }, "node_modules/chokidar/node_modules/fsevents/node_modules/core-util-is": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", "dev": true, "optional": true @@ -22114,6 +22124,7 @@ }, "node_modules/chokidar/node_modules/fsevents/node_modules/delegates": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=", "dev": true, "optional": true @@ -22132,12 +22143,14 @@ }, "node_modules/chokidar/node_modules/fsevents/node_modules/fs.realpath": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", "dev": true, "optional": true }, "node_modules/chokidar/node_modules/fsevents/node_modules/gauge": { "version": "2.7.4", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", "dev": true, "optional": true, @@ -22154,6 +22167,7 @@ }, "node_modules/chokidar/node_modules/fsevents/node_modules/glob": { "version": "7.1.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", "dev": true, "optional": true, @@ -22171,6 +22185,7 @@ }, "node_modules/chokidar/node_modules/fsevents/node_modules/has-unicode": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=", "dev": true, "optional": true @@ -22198,6 +22213,7 @@ }, "node_modules/chokidar/node_modules/fsevents/node_modules/inflight": { "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", "dev": true, "optional": true, @@ -22208,12 +22224,14 @@ }, "node_modules/chokidar/node_modules/fsevents/node_modules/inherits": { "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", "dev": true, "optional": true }, "node_modules/chokidar/node_modules/fsevents/node_modules/is-fullwidth-code-point": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", "dev": true, "optional": true, @@ -22226,12 +22244,14 @@ }, "node_modules/chokidar/node_modules/fsevents/node_modules/isarray": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", "dev": true, "optional": true }, "node_modules/chokidar/node_modules/fsevents/node_modules/minimatch": { "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", "dev": true, "optional": true, @@ -22336,6 +22356,7 @@ }, "node_modules/chokidar/node_modules/fsevents/node_modules/number-is-nan": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", "dev": true, "optional": true, @@ -22345,6 +22366,7 @@ }, "node_modules/chokidar/node_modules/fsevents/node_modules/object-assign": { "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", "dev": true, "optional": true, @@ -22354,6 +22376,7 @@ }, "node_modules/chokidar/node_modules/fsevents/node_modules/once": { "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", "dev": true, "optional": true, @@ -22363,6 +22386,7 @@ }, "node_modules/chokidar/node_modules/fsevents/node_modules/os-homedir": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", "dev": true, "optional": true, @@ -22372,6 +22396,7 @@ }, "node_modules/chokidar/node_modules/fsevents/node_modules/os-tmpdir": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", "dev": true, "optional": true, @@ -22381,6 +22406,7 @@ }, "node_modules/chokidar/node_modules/fsevents/node_modules/osenv": { "version": "0.1.5", + "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz", "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", "dev": true, "optional": true, @@ -22391,6 +22417,7 @@ }, "node_modules/chokidar/node_modules/fsevents/node_modules/path-is-absolute": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", "dev": true, "optional": true, @@ -22400,6 +22427,7 @@ }, "node_modules/chokidar/node_modules/fsevents/node_modules/process-nextick-args": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==", "dev": true, "optional": true @@ -22421,6 +22449,7 @@ }, "node_modules/chokidar/node_modules/fsevents/node_modules/readable-stream": { "version": "2.3.6", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", "dev": true, "optional": true, @@ -22448,18 +22477,21 @@ }, "node_modules/chokidar/node_modules/fsevents/node_modules/safe-buffer": { "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", "dev": true, "optional": true }, "node_modules/chokidar/node_modules/fsevents/node_modules/safer-buffer": { "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", "dev": true, "optional": true }, "node_modules/chokidar/node_modules/fsevents/node_modules/sax": { "version": "1.2.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", "dev": true, "optional": true @@ -22475,18 +22507,21 @@ }, "node_modules/chokidar/node_modules/fsevents/node_modules/set-blocking": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", "dev": true, "optional": true }, "node_modules/chokidar/node_modules/fsevents/node_modules/signal-exit": { "version": "3.0.2", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", "dev": true, "optional": true }, "node_modules/chokidar/node_modules/fsevents/node_modules/string_decoder": { "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "dev": true, "optional": true, @@ -22496,6 +22531,7 @@ }, "node_modules/chokidar/node_modules/fsevents/node_modules/string-width": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", "dev": true, "optional": true, @@ -22510,6 +22546,7 @@ }, "node_modules/chokidar/node_modules/fsevents/node_modules/strip-ansi": { "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "dev": true, "optional": true, @@ -22531,12 +22568,14 @@ }, "node_modules/chokidar/node_modules/fsevents/node_modules/util-deprecate": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", "dev": true, "optional": true }, "node_modules/chokidar/node_modules/fsevents/node_modules/wide-align": { "version": "1.1.3", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz", "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==", "dev": true, "optional": true, @@ -22546,6 +22585,7 @@ }, "node_modules/chokidar/node_modules/fsevents/node_modules/wrappy": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", "dev": true, "optional": true @@ -68502,19 +68542,19 @@ } }, "@superset-ui/chart-controls": { - "version": "0.17.12", - "resolved": "https://registry.npmjs.org/@superset-ui/chart-controls/-/chart-controls-0.17.12.tgz", - "integrity": "sha512-2IMaFR6sU8IM8TyGb3km8RMkkVp3zhqIMA11OI0pb8lyBJIxdbz8wpGoASpHCCBRhLyt7U0TV7yOePotFGklbw==", + "version": "0.17.13", + "resolved": "https://registry.npmjs.org/@superset-ui/chart-controls/-/chart-controls-0.17.13.tgz", + "integrity": "sha512-FwIPvkDSm/Qewx3IRQId4+8JdO/UcsfznSntzOZ3Syb+awyZbfNdF7OjqZOv501bMcXOrbMqiTqH6Kxoy4Y+8g==", "requires": { - "@superset-ui/core": "0.17.11", + "@superset-ui/core": "0.17.13", "lodash": "^4.17.15", "prop-types": "^15.7.2" } }, "@superset-ui/core": { - "version": "0.17.11", - "resolved": "https://registry.npmjs.org/@superset-ui/core/-/core-0.17.11.tgz", - "integrity": "sha512-PNJAHjQMELyn8MADB5lp9jDx9SwgxMwR5e2SZDq0vBrcg+LNZCgvkptwXZ7bOTbTwavPVEWgwXa1A9v2TKvFRA==", + "version": "0.17.13", + "resolved": "https://registry.npmjs.org/@superset-ui/core/-/core-0.17.13.tgz", + "integrity": "sha512-kY9wR2WKCHfbab7gVWFNpZrsYELSWPUZZUBUIduEvfmxWYVTkl98nv926Hle5bQk64OfuDbM0QzrxOApVJ3Sdg==", "requires": { "@babel/runtime": "^7.1.2", "@emotion/core": "^10.0.28", @@ -68597,12 +68637,12 @@ } }, "@superset-ui/legacy-plugin-chart-calendar": { - "version": "0.17.12", - "resolved": "https://registry.npmjs.org/@superset-ui/legacy-plugin-chart-calendar/-/legacy-plugin-chart-calendar-0.17.12.tgz", - "integrity": "sha512-NYf5x3e4AIPeqmyq1Cog66zn3KgmpGXtwIp4RS2J2CIEWVZmvWaR8Xyjy1HifQWsFpmN+MjGr8L9lag6ejZZeQ==", + "version": "0.17.13", + "resolved": "https://registry.npmjs.org/@superset-ui/legacy-plugin-chart-calendar/-/legacy-plugin-chart-calendar-0.17.13.tgz", + "integrity": "sha512-98JTVEZ08xA6PPte1GrOvtTICk3Q0U1zQNrJZPwwXtPyet0/J9vQwOE8g399KaHb6+mND2ECUfKR++NOtXaC3w==", "requires": { - "@superset-ui/chart-controls": "0.17.12", - "@superset-ui/core": "0.17.11", + "@superset-ui/chart-controls": "0.17.13", + "@superset-ui/core": "0.17.13", "d3-array": "^2.0.3", "d3-selection": "^1.4.0", "d3-tip": "^0.9.1", @@ -68620,24 +68660,24 @@ } }, "@superset-ui/legacy-plugin-chart-chord": { - "version": "0.17.12", - "resolved": "https://registry.npmjs.org/@superset-ui/legacy-plugin-chart-chord/-/legacy-plugin-chart-chord-0.17.12.tgz", - "integrity": "sha512-O7hjn02qPhD6qE21B6/EwvGVtcGDBJHlrcoJRjDhn8G0xNude7bwb0YlEHCZwlmvTinZD12rJv4l994V8/e5fg==", + "version": "0.17.13", + "resolved": "https://registry.npmjs.org/@superset-ui/legacy-plugin-chart-chord/-/legacy-plugin-chart-chord-0.17.13.tgz", + "integrity": "sha512-jdSY6uTIpsO5G6DE0sFOYfiWw+uVyzhNsM68L5QsW1DgbbGbZtr9+Uig0Ec4niQqzntjpCctNFEaeOPhs5QBmw==", "requires": { - "@superset-ui/chart-controls": "0.17.12", - "@superset-ui/core": "0.17.11", + "@superset-ui/chart-controls": "0.17.13", + "@superset-ui/core": "0.17.13", "d3": "^3.5.17", "prop-types": "^15.6.2", "react": "^16.13.1" } }, "@superset-ui/legacy-plugin-chart-country-map": { - "version": "0.17.12", - "resolved": "https://registry.npmjs.org/@superset-ui/legacy-plugin-chart-country-map/-/legacy-plugin-chart-country-map-0.17.12.tgz", - "integrity": "sha512-92wIkd1ve5sVz3wEZ1YBGoeUj2dupcpVyIsazT9t3YuEOwa4fuhm8w7FLJ2mS3U791j9KI63RsPM08mssl38sA==", + "version": "0.17.13", + "resolved": "https://registry.npmjs.org/@superset-ui/legacy-plugin-chart-country-map/-/legacy-plugin-chart-country-map-0.17.13.tgz", + "integrity": "sha512-2wwoVNZtxH7UXOdRjhqCj0BLBQ8GQTt0V8v1+VphqV6jlDCEQaJmSdSnfB0kbwjZ7bR5rmO4XmFxEHJnNUb/IA==", "requires": { - "@superset-ui/chart-controls": "0.17.12", - "@superset-ui/core": "0.17.11", + "@superset-ui/chart-controls": "0.17.13", + "@superset-ui/core": "0.17.13", "d3": "^3.5.17", "d3-array": "^2.0.3", "prop-types": "^15.6.2" @@ -68654,34 +68694,34 @@ } }, "@superset-ui/legacy-plugin-chart-event-flow": { - "version": "0.17.12", - "resolved": "https://registry.npmjs.org/@superset-ui/legacy-plugin-chart-event-flow/-/legacy-plugin-chart-event-flow-0.17.12.tgz", - "integrity": "sha512-zm6udN2qJirAQZhtLnwjOe+xJfKmpYoGRz7zejLOYHTbkqlv7D+GoB0M/GXiEo6vUbV289Cms9KsrsUh7gYvSw==", + "version": "0.17.13", + "resolved": "https://registry.npmjs.org/@superset-ui/legacy-plugin-chart-event-flow/-/legacy-plugin-chart-event-flow-0.17.13.tgz", + "integrity": "sha512-4cUAueJw/Te3pw73fNObkHeEeXNRwxNObkE6Z4M/9Z7qXAXNvIdhakgelnO9wcM19vcMXhS1cr0rdu37q4IgwA==", "requires": { "@data-ui/event-flow": "^0.0.84", - "@superset-ui/chart-controls": "0.17.12", - "@superset-ui/core": "0.17.11", + "@superset-ui/chart-controls": "0.17.13", + "@superset-ui/core": "0.17.13", "prop-types": "^15.6.2" } }, "@superset-ui/legacy-plugin-chart-force-directed": { - "version": "0.17.12", - "resolved": "https://registry.npmjs.org/@superset-ui/legacy-plugin-chart-force-directed/-/legacy-plugin-chart-force-directed-0.17.12.tgz", - "integrity": "sha512-+2aljLZ6wO7D90l/EhgzsK+CKxOX+ldArovKXyUlBkWozaXBw27cA8I5Rj3tdbwbDMlN/bYxw44hnExVjKTYMQ==", + "version": "0.17.13", + "resolved": "https://registry.npmjs.org/@superset-ui/legacy-plugin-chart-force-directed/-/legacy-plugin-chart-force-directed-0.17.13.tgz", + "integrity": "sha512-A3UWjqzWxYBI7aS2c11452kn50K4L4wc5/moKJo6jJgcxZtn/qBb4hjJ5CybYrvS+b4KKrbgTJY5850iVgg3Kg==", "requires": { - "@superset-ui/chart-controls": "0.17.12", - "@superset-ui/core": "0.17.11", + "@superset-ui/chart-controls": "0.17.13", + "@superset-ui/core": "0.17.13", "d3": "^3.5.17", "prop-types": "^15.7.2" } }, "@superset-ui/legacy-plugin-chart-heatmap": { - "version": "0.17.12", - "resolved": "https://registry.npmjs.org/@superset-ui/legacy-plugin-chart-heatmap/-/legacy-plugin-chart-heatmap-0.17.12.tgz", - "integrity": "sha512-5K+dZ0688mn5KNza/b3SZ6h2d2VxY8gAXKaFBwyPjeabfexg5Sj1Squb5l4p7oTh1FSmLcAty0fXCwZALEh45g==", + "version": "0.17.13", + "resolved": "https://registry.npmjs.org/@superset-ui/legacy-plugin-chart-heatmap/-/legacy-plugin-chart-heatmap-0.17.13.tgz", + "integrity": "sha512-9Er9FmnUIyKuHPn8FmJsLBiXHpJaqjPH5utLQM+zCeGm3PLkJuM8PI5bHF/mNMnJRtqdMx4uWTmwoM+A4LLsag==", "requires": { - "@superset-ui/chart-controls": "0.17.12", - "@superset-ui/core": "0.17.11", + "@superset-ui/chart-controls": "0.17.13", + "@superset-ui/core": "0.17.13", "d3": "^3.5.17", "d3-svg-legend": "^1.x", "d3-tip": "^0.9.1", @@ -68689,14 +68729,14 @@ } }, "@superset-ui/legacy-plugin-chart-histogram": { - "version": "0.17.12", - "resolved": "https://registry.npmjs.org/@superset-ui/legacy-plugin-chart-histogram/-/legacy-plugin-chart-histogram-0.17.12.tgz", - "integrity": "sha512-GNI0fmutspJvdNIDSeiOgXvpFwkqEB48ZiN/lf2/Vpjp1RY5fZDs+I3HlFo0XOveB5SkE2LMwIysO1ex7+ql+g==", + "version": "0.17.13", + "resolved": "https://registry.npmjs.org/@superset-ui/legacy-plugin-chart-histogram/-/legacy-plugin-chart-histogram-0.17.13.tgz", + "integrity": "sha512-pQFZuotoPvLuA93sfm+23/hIQL/CcawIEUaR4p+mkGvNpsFOf+FVjfI3wjk5Is9O7FJdD+zTSaZC73av1OjmkA==", "requires": { "@data-ui/histogram": "^0.0.84", "@data-ui/theme": "^0.0.84", - "@superset-ui/chart-controls": "0.17.12", - "@superset-ui/core": "0.17.11", + "@superset-ui/chart-controls": "0.17.13", + "@superset-ui/core": "0.17.13", "@vx/legend": "^0.0.198", "@vx/responsive": "^0.0.199", "@vx/scale": "^0.0.197", @@ -68764,12 +68804,12 @@ } }, "@superset-ui/legacy-plugin-chart-horizon": { - "version": "0.17.12", - "resolved": "https://registry.npmjs.org/@superset-ui/legacy-plugin-chart-horizon/-/legacy-plugin-chart-horizon-0.17.12.tgz", - "integrity": "sha512-YQUMV494vP0Lu4pTdELsdR5CbXzQ78BRX0nxnyBXdXVb5UTxCVgXAhU7Q/eQQv2zJ3OXqUpQian2vCeTxqyvfA==", + "version": "0.17.13", + "resolved": "https://registry.npmjs.org/@superset-ui/legacy-plugin-chart-horizon/-/legacy-plugin-chart-horizon-0.17.13.tgz", + "integrity": "sha512-9bVKRikN6zDd2UcgJTo5dtk2LkAyFrGX7/RVAxC0/GmUyhKwPL7XgoK278myB9c5DL1K2lPhHTz7s1/nQatbcA==", "requires": { - "@superset-ui/chart-controls": "0.17.12", - "@superset-ui/core": "0.17.11", + "@superset-ui/chart-controls": "0.17.13", + "@superset-ui/core": "0.17.13", "d3-array": "^2.0.3", "d3-scale": "^3.0.1", "prop-types": "^15.6.2" @@ -68798,12 +68838,12 @@ } }, "@superset-ui/legacy-plugin-chart-map-box": { - "version": "0.17.12", - "resolved": "https://registry.npmjs.org/@superset-ui/legacy-plugin-chart-map-box/-/legacy-plugin-chart-map-box-0.17.12.tgz", - "integrity": "sha512-G0RznxH5LH6dj9mdgLV2Z0MObjruOWCgGqsbItDbo1wi4iR8SuNGHDQgAnv24MlGiMSrp5mOYcUSlzSRFl96KA==", + "version": "0.17.13", + "resolved": "https://registry.npmjs.org/@superset-ui/legacy-plugin-chart-map-box/-/legacy-plugin-chart-map-box-0.17.13.tgz", + "integrity": "sha512-o+oR7FSH7Ep+jTxTOQb445RB8sNPBqs0o8BEOf8loEUlgSZUClQx8dQYSoxRpw6YjtWVD0J+4HtUzX2HQt++Ng==", "requires": { - "@superset-ui/chart-controls": "0.17.12", - "@superset-ui/core": "0.17.11", + "@superset-ui/chart-controls": "0.17.13", + "@superset-ui/core": "0.17.13", "immutable": "^3.8.2", "mapbox-gl": "^0.53.0", "prop-types": "^15.6.2", @@ -68820,118 +68860,118 @@ } }, "@superset-ui/legacy-plugin-chart-paired-t-test": { - "version": "0.17.12", - "resolved": "https://registry.npmjs.org/@superset-ui/legacy-plugin-chart-paired-t-test/-/legacy-plugin-chart-paired-t-test-0.17.12.tgz", - "integrity": "sha512-e5FWzHzKpbB2tf5PabVIw1e7VXiBm+A6G9XvhmqNTLtFSlrQeehtje7pumjo6xYBeYwGcXJTLpgaQmplWaJ72w==", + "version": "0.17.13", + "resolved": "https://registry.npmjs.org/@superset-ui/legacy-plugin-chart-paired-t-test/-/legacy-plugin-chart-paired-t-test-0.17.13.tgz", + "integrity": "sha512-5evYJLS7/yVlA7OI8n3ioQEpsIz+8lSUaZo8n2wWbvRlqvApVNAx+ofppf5O9RqRgLfheYPT6FESUqTOAdRv+Q==", "requires": { - "@superset-ui/chart-controls": "0.17.12", - "@superset-ui/core": "0.17.11", + "@superset-ui/chart-controls": "0.17.13", + "@superset-ui/core": "0.17.13", "distributions": "^1.0.0", "prop-types": "^15.6.2", "reactable": "^1.1.0" } }, "@superset-ui/legacy-plugin-chart-parallel-coordinates": { - "version": "0.17.12", - "resolved": "https://registry.npmjs.org/@superset-ui/legacy-plugin-chart-parallel-coordinates/-/legacy-plugin-chart-parallel-coordinates-0.17.12.tgz", - "integrity": "sha512-34vtDU3bMwNQk6dst6uC+4R5MwZ6VoUs6y+I5ZdqcLZj1uiu4TPvcOyPKzvXvtOBXkWmb6CKMagWXeg0Lei/Sg==", + "version": "0.17.13", + "resolved": "https://registry.npmjs.org/@superset-ui/legacy-plugin-chart-parallel-coordinates/-/legacy-plugin-chart-parallel-coordinates-0.17.13.tgz", + "integrity": "sha512-alRR+psEv0chVuwLGemlhBM8+UwnO9nWQsFvV8IblL0rSGKMsuofeutljp5BOXiJu/rpumWXn3HpriMri0ABDg==", "requires": { - "@superset-ui/chart-controls": "0.17.12", - "@superset-ui/core": "0.17.11", + "@superset-ui/chart-controls": "0.17.13", + "@superset-ui/core": "0.17.13", "d3": "^3.5.17", "prop-types": "^15.7.2" } }, "@superset-ui/legacy-plugin-chart-partition": { - "version": "0.17.12", - "resolved": "https://registry.npmjs.org/@superset-ui/legacy-plugin-chart-partition/-/legacy-plugin-chart-partition-0.17.12.tgz", - "integrity": "sha512-4qSUzL5z3UwWjRpCIdSgwrjaHmj29rDzaPm77Aq0DVqNBTqk9dvQcwPeQPYjR/TrfuMB9jJ3rJYZqPI5F42lnw==", + "version": "0.17.13", + "resolved": "https://registry.npmjs.org/@superset-ui/legacy-plugin-chart-partition/-/legacy-plugin-chart-partition-0.17.13.tgz", + "integrity": "sha512-lkcWo2d47GPgmSxOyVGKRcNd5rm1EhNnbTN/vLVrRCkBJ1u3aOcWdm3xbAQBZNXk2LPFnZM5l9px3Q301znPew==", "requires": { - "@superset-ui/chart-controls": "0.17.12", - "@superset-ui/core": "0.17.11", + "@superset-ui/chart-controls": "0.17.13", + "@superset-ui/core": "0.17.13", "d3": "^3.5.17", "d3-hierarchy": "^1.1.8", "prop-types": "^15.6.2" } }, "@superset-ui/legacy-plugin-chart-pivot-table": { - "version": "0.17.12", - "resolved": "https://registry.npmjs.org/@superset-ui/legacy-plugin-chart-pivot-table/-/legacy-plugin-chart-pivot-table-0.17.12.tgz", - "integrity": "sha512-DgMVuUd/G1gUOg2mzqp+0GB0V9ri6o+bGijW37rISjqyDHpwbYUMaWp/64/thjNfYa/D0x6OgGqai6/kdzPutA==", + "version": "0.17.13", + "resolved": "https://registry.npmjs.org/@superset-ui/legacy-plugin-chart-pivot-table/-/legacy-plugin-chart-pivot-table-0.17.13.tgz", + "integrity": "sha512-tsL+98WeQCeAbTkm6IdA0f/XlBX6pNnFH4MIrb4cw0GNSsJ/Yz5PiA+NUptnTMSX3k+DV10vtV/T2HtuhpDK4g==", "requires": { - "@superset-ui/chart-controls": "0.17.12", - "@superset-ui/core": "0.17.11", + "@superset-ui/chart-controls": "0.17.13", + "@superset-ui/core": "0.17.13", "d3": "^3.5.17", "datatables.net-bs": "^1.10.15", "prop-types": "^15.6.2" } }, "@superset-ui/legacy-plugin-chart-rose": { - "version": "0.17.12", - "resolved": "https://registry.npmjs.org/@superset-ui/legacy-plugin-chart-rose/-/legacy-plugin-chart-rose-0.17.12.tgz", - "integrity": "sha512-ZIxSf153T4MW6Nbsld41TIk04sxwqA7d9EhL7NutAkN7yGgz8/dtlNvt2JfAQCVLbJnrH2b7xR+4FDYd+/ks2g==", + "version": "0.17.13", + "resolved": "https://registry.npmjs.org/@superset-ui/legacy-plugin-chart-rose/-/legacy-plugin-chart-rose-0.17.13.tgz", + "integrity": "sha512-Hz2nq14TzbUg8ynMi7zfbK5blgx4XBB25dRMvpv1jyQeTYw/IAPdMb3y0/61ouQItpCImjGWJt7ixCSYoIMJIg==", "requires": { - "@superset-ui/chart-controls": "0.17.12", - "@superset-ui/core": "0.17.11", + "@superset-ui/chart-controls": "0.17.13", + "@superset-ui/core": "0.17.13", "d3": "^3.5.17", "nvd3": "1.8.6", "prop-types": "^15.6.2" } }, "@superset-ui/legacy-plugin-chart-sankey": { - "version": "0.17.12", - "resolved": "https://registry.npmjs.org/@superset-ui/legacy-plugin-chart-sankey/-/legacy-plugin-chart-sankey-0.17.12.tgz", - "integrity": "sha512-Wj3qLsN9Chfe6mvjRK7c9OfAeQij+JL0qDz01fa9FNKxMjNNi7eZkRb4mH6CkfYxJlLWjpVx1anInz+aCaoj4Q==", + "version": "0.17.13", + "resolved": "https://registry.npmjs.org/@superset-ui/legacy-plugin-chart-sankey/-/legacy-plugin-chart-sankey-0.17.13.tgz", + "integrity": "sha512-DDqS5zMKNtssZemaqetSc1Wm/Ymg7TayK34SmHAXzFJ0ZbzlWsUs6gSwY38MtTwfT/Yy/g+Cp6HfJjBsu//gdw==", "requires": { - "@superset-ui/chart-controls": "0.17.12", - "@superset-ui/core": "0.17.11", + "@superset-ui/chart-controls": "0.17.13", + "@superset-ui/core": "0.17.13", "d3": "^3.5.17", "d3-sankey": "^0.4.2", "prop-types": "^15.6.2" } }, "@superset-ui/legacy-plugin-chart-sankey-loop": { - "version": "0.17.12", - "resolved": "https://registry.npmjs.org/@superset-ui/legacy-plugin-chart-sankey-loop/-/legacy-plugin-chart-sankey-loop-0.17.12.tgz", - "integrity": "sha512-iqV3phKISwD5o+NniWXa4J5eFmGt03twmFZLAtNXR39AnG4HKHQxB7rwcQPYJA9U4A4TkgxCxQCxyndTb3VmOA==", + "version": "0.17.13", + "resolved": "https://registry.npmjs.org/@superset-ui/legacy-plugin-chart-sankey-loop/-/legacy-plugin-chart-sankey-loop-0.17.13.tgz", + "integrity": "sha512-cfTrYKWu02TV31a4N3g7i8+JlpvTQUD8SQWV8bWfGqenCfaYXnEtLcT7a06AZD84c7xPVIJ3ri+e1levxyCi/Q==", "requires": { - "@superset-ui/chart-controls": "0.17.12", - "@superset-ui/core": "0.17.11", + "@superset-ui/chart-controls": "0.17.13", + "@superset-ui/core": "0.17.13", "d3-sankey-diagram": "^0.7.3", "d3-selection": "^1.4.0", "prop-types": "^15.6.2" } }, "@superset-ui/legacy-plugin-chart-sunburst": { - "version": "0.17.12", - "resolved": "https://registry.npmjs.org/@superset-ui/legacy-plugin-chart-sunburst/-/legacy-plugin-chart-sunburst-0.17.12.tgz", - "integrity": "sha512-Ml7uxXqpaMiTEzXFzM1hLOo5z8yQn3HUiXhV77W9OSjg05Y6uCai+d9TeAKiwLEU0OKCzku8jkOj35Cv5ZMPLg==", + "version": "0.17.13", + "resolved": "https://registry.npmjs.org/@superset-ui/legacy-plugin-chart-sunburst/-/legacy-plugin-chart-sunburst-0.17.13.tgz", + "integrity": "sha512-rpc91+qtAZAjxmJyuK39GJBnzyVPVVSA8XZ3iYHFPTYooiIM0QuRbYY8RVIsDqwIJ2gNCaCxD8ymA9OhIQjAEw==", "requires": { - "@superset-ui/chart-controls": "0.17.12", - "@superset-ui/core": "0.17.11", + "@superset-ui/chart-controls": "0.17.13", + "@superset-ui/core": "0.17.13", "d3": "^3.5.17", "prop-types": "^15.6.2" } }, "@superset-ui/legacy-plugin-chart-treemap": { - "version": "0.17.12", - "resolved": "https://registry.npmjs.org/@superset-ui/legacy-plugin-chart-treemap/-/legacy-plugin-chart-treemap-0.17.12.tgz", - "integrity": "sha512-kHoslysbX070nuI1zhYGFKWxS6sldpX0TRuGyDLM4anUApuw7y/+jZeOAu6Ws+T6akkVmJpis0fkKrkbeFFrNQ==", + "version": "0.17.13", + "resolved": "https://registry.npmjs.org/@superset-ui/legacy-plugin-chart-treemap/-/legacy-plugin-chart-treemap-0.17.13.tgz", + "integrity": "sha512-60zgDGCbj0o6x8vJeRNyPp1jpHFOBmpza2xrHshaAWef6tyI7btaiWyDAk1+1sm+f5gHuVWI4uP8J6rE7xeuBQ==", "requires": { - "@superset-ui/chart-controls": "0.17.12", - "@superset-ui/core": "0.17.11", + "@superset-ui/chart-controls": "0.17.13", + "@superset-ui/core": "0.17.13", "d3-hierarchy": "^1.1.8", "d3-selection": "^1.4.0", "prop-types": "^15.6.2" } }, "@superset-ui/legacy-plugin-chart-world-map": { - "version": "0.17.12", - "resolved": "https://registry.npmjs.org/@superset-ui/legacy-plugin-chart-world-map/-/legacy-plugin-chart-world-map-0.17.12.tgz", - "integrity": "sha512-9nHlbcdpoUe0vEi7t/QtOcXDxTqz0W3zl2+s4hUNtEsHGdKNrVeir4f3sq1zF+OOLReKHBoL7MFv6cF8JUNMNA==", + "version": "0.17.13", + "resolved": "https://registry.npmjs.org/@superset-ui/legacy-plugin-chart-world-map/-/legacy-plugin-chart-world-map-0.17.13.tgz", + "integrity": "sha512-xxN0roJlvSqVYJpXAMkCbNgscCN5skazLlxRa+M4LYT7C3XAigcUwR8SwhP6FN9lrDaupiGaxiygrCZ2JTZhKg==", "requires": { - "@superset-ui/chart-controls": "0.17.12", - "@superset-ui/core": "0.17.11", + "@superset-ui/chart-controls": "0.17.13", + "@superset-ui/core": "0.17.13", "d3": "^3.5.17", "d3-array": "^2.4.0", "d3-color": "^1.4.1", @@ -68955,13 +68995,13 @@ } }, "@superset-ui/legacy-preset-chart-big-number": { - "version": "0.17.12", - "resolved": "https://registry.npmjs.org/@superset-ui/legacy-preset-chart-big-number/-/legacy-preset-chart-big-number-0.17.12.tgz", - "integrity": "sha512-GQNXqSA827Fch3eNaCaPMYERvWNRdaUqH00Suqq6BG+aYW+rKhIHaYBsY0eF/w1GRfZ+YjAh/yYyY21P+N/hqg==", + "version": "0.17.13", + "resolved": "https://registry.npmjs.org/@superset-ui/legacy-preset-chart-big-number/-/legacy-preset-chart-big-number-0.17.13.tgz", + "integrity": "sha512-GqFG/BS2370GgxOm5mjXqjUMYW3eZGkj9jNxZgeKLPzftXIZ1CglLO6jZw6xU6jpgEhzKpQomOjGBbD+Kdc/Mg==", "requires": { "@data-ui/xy-chart": "^0.0.84", - "@superset-ui/chart-controls": "0.17.12", - "@superset-ui/core": "0.17.11", + "@superset-ui/chart-controls": "0.17.13", + "@superset-ui/core": "0.17.13", "@types/d3-color": "^1.2.2", "@types/shortid": "^0.0.29", "d3-color": "^1.2.3", @@ -68994,13 +69034,13 @@ } }, "@superset-ui/legacy-preset-chart-nvd3": { - "version": "0.17.12", - "resolved": "https://registry.npmjs.org/@superset-ui/legacy-preset-chart-nvd3/-/legacy-preset-chart-nvd3-0.17.12.tgz", - "integrity": "sha512-e55scJz7FKnn82vtYSxQIbtNFiN7Ftx5guw76Rcm2hkx2bu2TWTgSq7J/4BuTgaSCZsDEt48PNWIeJsfiu+HFQ==", + "version": "0.17.13", + "resolved": "https://registry.npmjs.org/@superset-ui/legacy-preset-chart-nvd3/-/legacy-preset-chart-nvd3-0.17.13.tgz", + "integrity": "sha512-TQyMdtP34pXG9wO5LtfNhg1ZWOD4HIfhLzED+/jvkf2GTl5DY4hUHPlO1h3h4PRKz62tsSOMMSI3+RepiEHjsA==", "requires": { "@data-ui/xy-chart": "^0.0.84", - "@superset-ui/chart-controls": "0.17.12", - "@superset-ui/core": "0.17.11", + "@superset-ui/chart-controls": "0.17.13", + "@superset-ui/core": "0.17.13", "d3": "^3.5.17", "d3-tip": "^0.9.1", "dompurify": "^2.0.6", @@ -69014,12 +69054,12 @@ } }, "@superset-ui/plugin-chart-echarts": { - "version": "0.17.12", - "resolved": "https://registry.npmjs.org/@superset-ui/plugin-chart-echarts/-/plugin-chart-echarts-0.17.12.tgz", - "integrity": "sha512-qMyfxv7XPUc+6k5QzJbhooCv2Jqjq/lS9B3VThU4sMZNuqiPmUPBykl7pdw+1TTX7QOJV73C35jm+YU0FAoL1A==", + "version": "0.17.13", + "resolved": "https://registry.npmjs.org/@superset-ui/plugin-chart-echarts/-/plugin-chart-echarts-0.17.13.tgz", + "integrity": "sha512-QVxbvsNjlT+L2T1WFmoTWM5aryZ++sHFNUIUX3i4hTAV/Di7obt2k6ps0vVdPBVpwmjjWzMuTCJX5Ppqs9n3Pg==", "requires": { - "@superset-ui/chart-controls": "0.17.12", - "@superset-ui/core": "0.17.11", + "@superset-ui/chart-controls": "0.17.13", + "@superset-ui/core": "0.17.13", "@types/mathjs": "^6.0.7", "d3-array": "^1.2.0", "echarts": "^5.0.2", @@ -69027,13 +69067,13 @@ } }, "@superset-ui/plugin-chart-table": { - "version": "0.17.12", - "resolved": "https://registry.npmjs.org/@superset-ui/plugin-chart-table/-/plugin-chart-table-0.17.12.tgz", - "integrity": "sha512-izJkv2rFUAg1aDgLD/nRbgmVw04b6wx5GrbqGjMFv1Y4fR13ZlSgz/QuVVFM7vj9UgQVcz3PA+DNEkiABGKRgA==", + "version": "0.17.13", + "resolved": "https://registry.npmjs.org/@superset-ui/plugin-chart-table/-/plugin-chart-table-0.17.13.tgz", + "integrity": "sha512-ofh+g2ozHmlvd42BZvlRrcfU4i9FstMGrDCecSP4WKzMmrgbJbfW1zwpLE8CPGGV+6NaET/fIVWw2p+sj1CEig==", "requires": { "@emotion/core": "^10.0.28", - "@superset-ui/chart-controls": "0.17.12", - "@superset-ui/core": "0.17.11", + "@superset-ui/chart-controls": "0.17.13", + "@superset-ui/core": "0.17.13", "@types/d3-array": "^2.0.0", "@types/react-table": "^7.0.19", "d3-array": "^2.4.0", @@ -69056,12 +69096,12 @@ } }, "@superset-ui/plugin-chart-word-cloud": { - "version": "0.17.12", - "resolved": "https://registry.npmjs.org/@superset-ui/plugin-chart-word-cloud/-/plugin-chart-word-cloud-0.17.12.tgz", - "integrity": "sha512-QIJmig3nC/cdx1Ch06OqOnypYvHnkKzpd+YSj3WMXhEn5p2SRS0mqgM1n56/QvNbJegHi+xEuaZKZ4Cek3409g==", + "version": "0.17.13", + "resolved": "https://registry.npmjs.org/@superset-ui/plugin-chart-word-cloud/-/plugin-chart-word-cloud-0.17.13.tgz", + "integrity": "sha512-TVD5emY7sEljAuhk4da4uAEBlNPyjabzlMapP4Jjrulwy9rnYPXiyf6L6Z8BxoSY8RD09jdl7TRxQ/jTzCp+bg==", "requires": { - "@superset-ui/chart-controls": "0.17.12", - "@superset-ui/core": "0.17.11", + "@superset-ui/chart-controls": "0.17.13", + "@superset-ui/core": "0.17.13", "@types/d3-cloud": "^1.2.1", "@types/d3-scale": "^2.0.2", "d3-cloud": "^1.2.5", @@ -69093,14 +69133,14 @@ } }, "@superset-ui/preset-chart-xy": { - "version": "0.17.12", - "resolved": "https://registry.npmjs.org/@superset-ui/preset-chart-xy/-/preset-chart-xy-0.17.12.tgz", - "integrity": "sha512-UwXjsNKzAhYyjV+NJksr7nQ8YN3RUwzemxkHjpHX7tvIIquci3jqcCVbP8Ml19YxAs9o5gf+i6uUvn4Vtag+qw==", + "version": "0.17.13", + "resolved": "https://registry.npmjs.org/@superset-ui/preset-chart-xy/-/preset-chart-xy-0.17.13.tgz", + "integrity": "sha512-NJ5ACYe1AlZ9hb24NdntNx1CFVRyOAQtpvWWfKfEnQc26t0A8Bl68WL05pMazwHQ6fkthseRXlpUEzdVVyB7Lw==", "requires": { "@data-ui/theme": "^0.0.84", "@data-ui/xy-chart": "^0.0.84", - "@superset-ui/chart-controls": "0.17.12", - "@superset-ui/core": "0.17.11", + "@superset-ui/chart-controls": "0.17.13", + "@superset-ui/core": "0.17.13", "@vx/axis": "^0.0.198", "@vx/legend": "^0.0.198", "@vx/scale": "^0.0.197", @@ -75563,24 +75603,28 @@ "dependencies": { "abbrev": { "version": "1.1.1", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", "dev": true, "optional": true }, "ansi-regex": { "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", "dev": true, "optional": true }, "aproba": { "version": "1.2.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", "dev": true, "optional": true }, "are-we-there-yet": { "version": "1.1.5", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz", "integrity": "sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==", "dev": true, "optional": true, @@ -75591,12 +75635,14 @@ }, "balanced-match": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", "dev": true, "optional": true }, "brace-expansion": { "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dev": true, "optional": true, @@ -75607,24 +75653,28 @@ }, "code-point-at": { "version": "1.1.0", + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", "dev": true, "optional": true }, "concat-map": { "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", "dev": true, "optional": true }, "console-control-strings": { "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=", "dev": true, "optional": true }, "core-util-is": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", "dev": true, "optional": true @@ -75646,6 +75696,7 @@ }, "delegates": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=", "dev": true, "optional": true @@ -75658,12 +75709,14 @@ }, "fs.realpath": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", "dev": true, "optional": true }, "gauge": { "version": "2.7.4", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", "dev": true, "optional": true, @@ -75680,6 +75733,7 @@ }, "glob": { "version": "7.1.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", "dev": true, "optional": true, @@ -75694,6 +75748,7 @@ }, "has-unicode": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=", "dev": true, "optional": true @@ -75718,6 +75773,7 @@ }, "inflight": { "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", "dev": true, "optional": true, @@ -75728,12 +75784,14 @@ }, "inherits": { "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", "dev": true, "optional": true }, "is-fullwidth-code-point": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", "dev": true, "optional": true, @@ -75743,12 +75801,14 @@ }, "isarray": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", "dev": true, "optional": true }, "minimatch": { "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", "dev": true, "optional": true, @@ -75838,18 +75898,21 @@ }, "number-is-nan": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", "dev": true, "optional": true }, "object-assign": { "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", "dev": true, "optional": true }, "once": { "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", "dev": true, "optional": true, @@ -75859,18 +75922,21 @@ }, "os-homedir": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", "dev": true, "optional": true }, "os-tmpdir": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", "dev": true, "optional": true }, "osenv": { "version": "0.1.5", + "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz", "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", "dev": true, "optional": true, @@ -75881,12 +75947,14 @@ }, "path-is-absolute": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", "dev": true, "optional": true }, "process-nextick-args": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==", "dev": true, "optional": true @@ -75905,6 +75973,7 @@ }, "readable-stream": { "version": "2.3.6", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", "dev": true, "optional": true, @@ -75929,18 +75998,21 @@ }, "safe-buffer": { "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", "dev": true, "optional": true }, "safer-buffer": { "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", "dev": true, "optional": true }, "sax": { "version": "1.2.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", "dev": true, "optional": true @@ -75953,18 +76025,21 @@ }, "set-blocking": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", "dev": true, "optional": true }, "signal-exit": { "version": "3.0.2", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", "dev": true, "optional": true }, "string_decoder": { "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "dev": true, "optional": true, @@ -75974,6 +76049,7 @@ }, "string-width": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", "dev": true, "optional": true, @@ -75985,6 +76061,7 @@ }, "strip-ansi": { "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "dev": true, "optional": true, @@ -76000,12 +76077,14 @@ }, "util-deprecate": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", "dev": true, "optional": true }, "wide-align": { "version": "1.1.3", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz", "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==", "dev": true, "optional": true, @@ -76015,6 +76094,7 @@ }, "wrappy": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", "dev": true, "optional": true diff --git a/superset-frontend/package.json b/superset-frontend/package.json index 7ba6567005283..d7ad60eb2fb0e 100644 --- a/superset-frontend/package.json +++ b/superset-frontend/package.json @@ -65,34 +65,34 @@ "@babel/runtime-corejs3": "^7.12.5", "@data-ui/sparkline": "^0.0.84", "@emotion/core": "^10.0.35", - "@superset-ui/chart-controls": "^0.17.12", - "@superset-ui/core": "^0.17.11", - "@superset-ui/legacy-plugin-chart-calendar": "^0.17.12", - "@superset-ui/legacy-plugin-chart-chord": "^0.17.12", - "@superset-ui/legacy-plugin-chart-country-map": "^0.17.12", - "@superset-ui/legacy-plugin-chart-event-flow": "^0.17.12", - "@superset-ui/legacy-plugin-chart-force-directed": "^0.17.12", - "@superset-ui/legacy-plugin-chart-heatmap": "^0.17.12", - "@superset-ui/legacy-plugin-chart-histogram": "^0.17.12", - "@superset-ui/legacy-plugin-chart-horizon": "^0.17.12", - "@superset-ui/legacy-plugin-chart-map-box": "^0.17.12", - "@superset-ui/legacy-plugin-chart-paired-t-test": "^0.17.12", - "@superset-ui/legacy-plugin-chart-parallel-coordinates": "^0.17.12", - "@superset-ui/legacy-plugin-chart-partition": "^0.17.12", - "@superset-ui/legacy-plugin-chart-pivot-table": "^0.17.12", - "@superset-ui/legacy-plugin-chart-rose": "^0.17.12", - "@superset-ui/legacy-plugin-chart-sankey": "^0.17.12", - "@superset-ui/legacy-plugin-chart-sankey-loop": "^0.17.12", - "@superset-ui/legacy-plugin-chart-sunburst": "^0.17.12", - "@superset-ui/legacy-plugin-chart-treemap": "^0.17.12", - "@superset-ui/legacy-plugin-chart-world-map": "^0.17.12", - "@superset-ui/legacy-preset-chart-big-number": "^0.17.12", + "@superset-ui/chart-controls": "^0.17.13", + "@superset-ui/core": "^0.17.13", + "@superset-ui/legacy-plugin-chart-calendar": "^0.17.13", + "@superset-ui/legacy-plugin-chart-chord": "^0.17.13", + "@superset-ui/legacy-plugin-chart-country-map": "^0.17.13", + "@superset-ui/legacy-plugin-chart-event-flow": "^0.17.13", + "@superset-ui/legacy-plugin-chart-force-directed": "^0.17.13", + "@superset-ui/legacy-plugin-chart-heatmap": "^0.17.13", + "@superset-ui/legacy-plugin-chart-histogram": "^0.17.13", + "@superset-ui/legacy-plugin-chart-horizon": "^0.17.13", + "@superset-ui/legacy-plugin-chart-map-box": "^0.17.13", + "@superset-ui/legacy-plugin-chart-paired-t-test": "^0.17.13", + "@superset-ui/legacy-plugin-chart-parallel-coordinates": "^0.17.13", + "@superset-ui/legacy-plugin-chart-partition": "^0.17.13", + "@superset-ui/legacy-plugin-chart-pivot-table": "^0.17.13", + "@superset-ui/legacy-plugin-chart-rose": "^0.17.13", + "@superset-ui/legacy-plugin-chart-sankey": "^0.17.13", + "@superset-ui/legacy-plugin-chart-sankey-loop": "^0.17.13", + "@superset-ui/legacy-plugin-chart-sunburst": "^0.17.13", + "@superset-ui/legacy-plugin-chart-treemap": "^0.17.13", + "@superset-ui/legacy-plugin-chart-world-map": "^0.17.13", + "@superset-ui/legacy-preset-chart-big-number": "^0.17.13", "@superset-ui/legacy-preset-chart-deckgl": "^0.4.6", - "@superset-ui/legacy-preset-chart-nvd3": "^0.17.12", - "@superset-ui/plugin-chart-echarts": "^0.17.12", - "@superset-ui/plugin-chart-table": "^0.17.12", - "@superset-ui/plugin-chart-word-cloud": "^0.17.12", - "@superset-ui/preset-chart-xy": "^0.17.12", + "@superset-ui/legacy-preset-chart-nvd3": "^0.17.13", + "@superset-ui/plugin-chart-echarts": "^0.17.13", + "@superset-ui/plugin-chart-table": "^0.17.13", + "@superset-ui/plugin-chart-word-cloud": "^0.17.13", + "@superset-ui/preset-chart-xy": "^0.17.13", "@vx/responsive": "^0.0.195", "abortcontroller-polyfill": "^1.1.9", "antd": "^4.9.4", diff --git a/superset-frontend/spec/fixtures/mockNativeFilters.ts b/superset-frontend/spec/fixtures/mockNativeFilters.ts index 207a9394b7693..b60bff23b58c8 100644 --- a/superset-frontend/spec/fixtures/mockNativeFilters.ts +++ b/superset-frontend/spec/fixtures/mockNativeFilters.ts @@ -73,27 +73,31 @@ export const nativeFilters: NativeFiltersState = { }, }, filtersState: { - 'NATIVE_FILTER-e7Q8zKixx': { - id: 'NATIVE_FILTER-e7Q8zKixx', - currentState: { - value: ['East Asia & Pacific'], - }, - extraFormData: { - append_form_data: { - filters: [ - { - col: 'region', - op: 'IN', - val: ['East Asia & Pacific'], - }, - ], + crossFilters: {}, + ownFilters: {}, + nativeFilters: { + 'NATIVE_FILTER-e7Q8zKixx': { + id: 'NATIVE_FILTER-e7Q8zKixx', + extraFormData: { + append_form_data: { + filters: [ + { + col: 'region', + op: 'IN', + val: ['East Asia & Pacific'], + }, + ], + }, + }, + currentState: { + value: ['East Asia & Pacific'], }, }, - }, - 'NATIVE_FILTER-x9QPw0so1': { - id: 'NATIVE_FILTER-x9QPw0so1', - extraFormData: {}, - currentState: {}, + 'NATIVE_FILTER-x9QPw0so1': { + id: 'NATIVE_FILTER-x9QPw0so1', + extraFormData: {}, + currentState: {}, + }, }, }, }; @@ -129,11 +133,13 @@ export const singleNativeFiltersState = { }, }, filtersState: { - [NATIVE_FILTER_ID]: { - id: NATIVE_FILTER_ID, - extraFormData, - currentState: { - value: ['No, not an ethnic minority'], + nativeFilters: { + [NATIVE_FILTER_ID]: { + id: NATIVE_FILTER_ID, + extraFormData, + currentState: { + value: ['No, not an ethnic minority'], + }, }, }, }, diff --git a/superset-frontend/spec/javascripts/dashboard/components/Dashboard_spec.jsx b/superset-frontend/spec/javascripts/dashboard/components/Dashboard_spec.jsx index 972498eb7acc5..96b7e6ce6bde5 100644 --- a/superset-frontend/spec/javascripts/dashboard/components/Dashboard_spec.jsx +++ b/superset-frontend/spec/javascripts/dashboard/components/Dashboard_spec.jsx @@ -53,6 +53,7 @@ describe('Dashboard', () => { dashboardInfo, charts: chartQueries, activeFilters: {}, + ownDataCharts: {}, slices: sliceEntities.slices, datasources, layout: dashboardLayout.present, diff --git a/superset-frontend/spec/javascripts/dashboard/fixtures/mockNativeFilters.js b/superset-frontend/spec/javascripts/dashboard/fixtures/mockNativeFilters.js index 8ed2bb7ad8070..a667ffc41a7e1 100644 --- a/superset-frontend/spec/javascripts/dashboard/fixtures/mockNativeFilters.js +++ b/superset-frontend/spec/javascripts/dashboard/fixtures/mockNativeFilters.js @@ -42,9 +42,13 @@ export const nativeFiltersInfo = { }, }, filtersState: { - DefaultsID: { - id: 'DefaultId', - selectedValues: [], + nativeFilters: { + DefaultsID: { + id: 'DefaultId', + currentState: { + value: [], + }, + }, }, }, }; diff --git a/superset-frontend/spec/javascripts/dashboard/util/getFormDataWithExtraFilters_spec.ts b/superset-frontend/spec/javascripts/dashboard/util/getFormDataWithExtraFilters_spec.ts index c5db75ff83472..7f538fba4fa45 100644 --- a/superset-frontend/spec/javascripts/dashboard/util/getFormDataWithExtraFilters_spec.ts +++ b/superset-frontend/spec/javascripts/dashboard/util/getFormDataWithExtraFilters_spec.ts @@ -62,10 +62,14 @@ describe('getFormDataWithExtraFilters', () => { } as unknown) as Filter, }, filtersState: { - [filterId]: { - id: filterId, - extraFormData: {}, - currentState: {}, + crossFilters: {}, + ownFilters: {}, + nativeFilters: { + [filterId]: { + id: filterId, + extraFormData: {}, + currentState: {}, + }, }, }, }, diff --git a/superset-frontend/src/chart/ChartContainer.jsx b/superset-frontend/src/chart/ChartContainer.jsx index ecc4a2d8a8fc0..118acec4d5a22 100644 --- a/superset-frontend/src/chart/ChartContainer.jsx +++ b/superset-frontend/src/chart/ChartContainer.jsx @@ -22,14 +22,14 @@ import { bindActionCreators } from 'redux'; import * as actions from './chartAction'; import { logEvent } from '../logger/actions'; import Chart from './Chart'; -import { setExtraFormData } from '../dashboard/actions/nativeFilters'; +import { updateExtraFormData } from '../dashboard/actions/nativeFilters'; function mapDispatchToProps(dispatch) { return { actions: bindActionCreators( { ...actions, - setExtraFormData, + updateExtraFormData, logEvent, }, dispatch, diff --git a/superset-frontend/src/chart/ChartRenderer.jsx b/superset-frontend/src/chart/ChartRenderer.jsx index e4b24a7754e7b..ca391bac95679 100644 --- a/superset-frontend/src/chart/ChartRenderer.jsx +++ b/superset-frontend/src/chart/ChartRenderer.jsx @@ -19,7 +19,7 @@ import { snakeCase } from 'lodash'; import PropTypes from 'prop-types'; import React from 'react'; -import { SuperChart, logging } from '@superset-ui/core'; +import { SuperChart, logging, Behavior } from '@superset-ui/core'; import { Logger, LOG_ACTIONS_RENDER_CHART } from '../logger/LogUtils'; const propTypes = { @@ -42,9 +42,10 @@ const propTypes = { refreshOverlayVisible: PropTypes.bool, // dashboard callbacks addFilter: PropTypes.func, - setExtraFormData: PropTypes.func, + setDataMask: PropTypes.func, onFilterMenuOpen: PropTypes.func, onFilterMenuClose: PropTypes.func, + ownCurrentState: PropTypes.object, }; const BLANK = {}; @@ -74,12 +75,12 @@ class ChartRenderer extends React.Component { setControlValue: this.handleSetControlValue, onFilterMenuOpen: this.props.onFilterMenuOpen, onFilterMenuClose: this.props.onFilterMenuClose, - setExtraFormData: ({ extraFormData, currentState }) => - this.props.actions?.setExtraFormData( + setDataMask: filtersState => { + this.props.actions?.updateExtraFormData( this.props.chartId, - extraFormData, - currentState, - ), + filtersState, + ); + }, }; } @@ -185,6 +186,7 @@ class ChartRenderer extends React.Component { annotationData, datasource, initialValues, + ownCurrentState, formData, queriesResponse, } = this.props; @@ -224,7 +226,9 @@ class ChartRenderer extends React.Component { datasource={datasource} initialValues={initialValues} formData={formData} + ownCurrentState={ownCurrentState} hooks={this.hooks} + behaviors={[Behavior.CROSS_FILTER]} queriesData={queriesResponse} onRenderSuccess={this.handleRenderSuccess} onRenderFailure={this.handleRenderFailure} diff --git a/superset-frontend/src/dashboard/actions/nativeFilters.ts b/superset-frontend/src/dashboard/actions/nativeFilters.ts index 985c22985b505..6b3c655f57565 100644 --- a/superset-frontend/src/dashboard/actions/nativeFilters.ts +++ b/superset-frontend/src/dashboard/actions/nativeFilters.ts @@ -17,14 +17,15 @@ * under the License. */ -import { ExtraFormData, makeApi } from '@superset-ui/core'; +import { makeApi, DataMask } from '@superset-ui/core'; import { Dispatch } from 'redux'; import { FilterConfiguration } from 'src/dashboard/components/nativeFilters/types'; import { dashboardInfoChanged } from './dashboardInfo'; import { - CurrentFilterState, + FiltersState, + FilterState, FiltersSet, - NativeFilterState, + FilterStateType, } from '../reducers/types'; export const SET_FILTER_CONFIG_BEGIN = 'SET_FILTER_CONFIG_BEGIN'; @@ -142,51 +143,49 @@ export const setFilterSetsConfiguration = ( } }; -export const SET_EXTRA_FORM_DATA = 'SET_EXTRA_FORM_DATA'; -export interface SetExtraFormData { - type: typeof SET_EXTRA_FORM_DATA; +export const UPDATE_EXTRA_FORM_DATA = 'UPDATE_EXTRA_FORM_DATA'; +export interface UpdateExtraFormData { + type: typeof UPDATE_EXTRA_FORM_DATA; filterId: string; - extraFormData: ExtraFormData; - currentState: CurrentFilterState; + nativeFilters?: Omit; + crossFilters?: Omit; + ownFilters?: Omit; } export const SAVE_FILTER_SETS = 'SAVE_FILTER_SETS'; export interface SaveFilterSets { type: typeof SAVE_FILTER_SETS; name: string; - filtersState: NativeFilterState; + filtersState: Pick; filtersSetId: string; } export const SET_FILTERS_STATE = 'SET_FILTERS_STATE'; export interface SetFiltersState { type: typeof SET_FILTERS_STATE; - filtersState: NativeFilterState; + filtersState: FiltersState; } /** * Sets the selected option(s) for a given filter - * @param filterId the id of the native filter - * @param extraFormData the selection translated into extra form data - * @param currentState + * @param filterId the id of the nativeFilters filter + * @param filterState */ -export function setExtraFormData( +export function updateExtraFormData( filterId: string, - extraFormData: ExtraFormData, - currentState: CurrentFilterState, -): SetExtraFormData { + filterState: DataMask, +): UpdateExtraFormData { return { - type: SET_EXTRA_FORM_DATA, + type: UPDATE_EXTRA_FORM_DATA, filterId, - extraFormData, - currentState, + ...filterState, }; } export function saveFilterSets( name: string, filtersSetId: string, - filtersState: NativeFilterState, + filtersState: Pick, ): SaveFilterSets { return { type: SAVE_FILTER_SETS, @@ -196,9 +195,7 @@ export function saveFilterSets( }; } -export function setFiltersState( - filtersState: NativeFilterState, -): SetFiltersState { +export function setFiltersState(filtersState: FiltersState): SetFiltersState { return { type: SET_FILTERS_STATE, filtersState, @@ -213,5 +210,5 @@ export type AnyFilterAction = | SetFilterSetsConfigComplete | SetFilterSetsConfigFail | SetFiltersState - | SetExtraFormData - | SaveFilterSets; + | SaveFilterSets + | UpdateExtraFormData; diff --git a/superset-frontend/src/dashboard/components/Dashboard.jsx b/superset-frontend/src/dashboard/components/Dashboard.jsx index 3f3a79284aceb..859b5607529ff 100644 --- a/superset-frontend/src/dashboard/components/Dashboard.jsx +++ b/superset-frontend/src/dashboard/components/Dashboard.jsx @@ -42,6 +42,7 @@ import { areObjectsEqual } from '../../reduxUtils'; import '../stylesheets/index.less'; import getLocationHash from '../util/getLocationHash'; import isDashboardEmpty from '../util/isDashboardEmpty'; +import { getAffectedOwnDataCharts } from '../util/charts/getOwnDataCharts'; const propTypes = { actions: PropTypes.shape({ @@ -56,6 +57,7 @@ const propTypes = { slices: PropTypes.objectOf(slicePropShape).isRequired, activeFilters: PropTypes.object.isRequired, datasources: PropTypes.object.isRequired, + ownDataCharts: PropTypes.object.isRequired, layout: PropTypes.object.isRequired, impressionId: PropTypes.string.isRequired, initMessages: PropTypes.array, @@ -88,7 +90,8 @@ class Dashboard extends React.PureComponent { constructor(props) { super(props); - this.appliedFilters = props.activeFilters || {}; + this.appliedFilters = props.activeFilters ?? {}; + this.appliedOwnDataCharts = props.ownDataCharts ?? {}; this.onVisibilityChange = this.onVisibilityChange.bind(this); } @@ -147,9 +150,13 @@ class Dashboard extends React.PureComponent { componentDidUpdate() { const { hasUnsavedChanges, editMode } = this.props.dashboardState; - const { appliedFilters } = this; - const { activeFilters } = this.props; - if (!editMode && !areObjectsEqual(appliedFilters, activeFilters)) { + const { appliedFilters, appliedOwnDataCharts } = this; + const { activeFilters, ownDataCharts } = this.props; + if ( + !editMode && + (!areObjectsEqual(appliedOwnDataCharts, ownDataCharts) || + !areObjectsEqual(appliedFilters, activeFilters)) + ) { this.applyFilters(); } @@ -188,14 +195,17 @@ class Dashboard extends React.PureComponent { applyFilters() { const { appliedFilters } = this; - const { activeFilters } = this.props; + const { activeFilters, ownDataCharts } = this.props; // refresh charts if a filter was removed, added, or changed const currFilterKeys = Object.keys(activeFilters); const appliedFilterKeys = Object.keys(appliedFilters); const allKeys = new Set(currFilterKeys.concat(appliedFilterKeys)); - const affectedChartIds = []; + const affectedChartIds = getAffectedOwnDataCharts( + ownDataCharts, + this.appliedOwnDataCharts, + ); [...allKeys].forEach(filterKey => { if (!currFilterKeys.includes(filterKey)) { // filterKey is removed? @@ -234,6 +244,7 @@ class Dashboard extends React.PureComponent { // remove dup in affectedChartIds this.refreshCharts([...new Set(affectedChartIds)]); this.appliedFilters = activeFilters; + this.appliedOwnDataCharts = ownDataCharts; } refreshCharts(ids) { diff --git a/superset-frontend/src/dashboard/components/FiltersBadge/selectors.ts b/superset-frontend/src/dashboard/components/FiltersBadge/selectors.ts index 2a42d044d5d00..abef1afb36423 100644 --- a/superset-frontend/src/dashboard/components/FiltersBadge/selectors.ts +++ b/superset-frontend/src/dashboard/components/FiltersBadge/selectors.ts @@ -210,7 +210,8 @@ export const selectNativeIndicatorsForChart = ( layoutItem => dashboardLayout[layoutItem]?.meta?.chartId === chartId, ); const column = nativeFilter.targets[0]?.column?.name; - const filterState = nativeFilters.filtersState[nativeFilter.id]; + const filterState = + nativeFilters.filtersState.nativeFilters?.[nativeFilter.id]; let value = filterState?.currentState?.value ?? []; if (!Array.isArray(value)) { value = [value]; diff --git a/superset-frontend/src/dashboard/components/gridComponents/Chart.jsx b/superset-frontend/src/dashboard/components/gridComponents/Chart.jsx index 822999446e07e..cdc8ba9535f35 100644 --- a/superset-frontend/src/dashboard/components/gridComponents/Chart.jsx +++ b/superset-frontend/src/dashboard/components/gridComponents/Chart.jsx @@ -69,6 +69,7 @@ const propTypes = { sliceCanEdit: PropTypes.bool.isRequired, addSuccessToast: PropTypes.func.isRequired, addDangerToast: PropTypes.func.isRequired, + ownCurrentState: PropTypes.object, }; const defaultProps = { @@ -259,6 +260,7 @@ export default class Chart extends React.Component { sliceCanEdit, addSuccessToast, addDangerToast, + ownCurrentState, handleToggleFullSize, isFullSize, } = this.props; @@ -360,6 +362,7 @@ export default class Chart extends React.Component { dashboardId={dashboardId} initialValues={initialValues} formData={formData} + ownCurrentState={ownCurrentState} queriesResponse={chart.queriesResponse} timeout={timeout} triggerQuery={chart.triggerQuery} diff --git a/superset-frontend/src/dashboard/components/nativeFilters/FilterBar/CascadeFilterControl.tsx b/superset-frontend/src/dashboard/components/nativeFilters/FilterBar/CascadeFilterControl.tsx index 0a2f32c01486f..8d7f60f0a815c 100644 --- a/superset-frontend/src/dashboard/components/nativeFilters/FilterBar/CascadeFilterControl.tsx +++ b/superset-frontend/src/dashboard/components/nativeFilters/FilterBar/CascadeFilterControl.tsx @@ -17,9 +17,8 @@ * under the License. */ import React from 'react'; -import { ExtraFormData, styled } from '@superset-ui/core'; +import { styled, DataMask } from '@superset-ui/core'; import Icon from 'src/components/Icon'; -import { CurrentFilterState } from 'src/dashboard/reducers/types'; import FilterControl from './FilterControl'; import { Filter } from '../types'; import { CascadeFilter } from './types'; @@ -27,11 +26,7 @@ import { CascadeFilter } from './types'; interface CascadeFilterControlProps { filter: CascadeFilter; directPathToChild?: string[]; - onFilterSelectionChange: ( - filter: Filter, - extraFormData: ExtraFormData, - currentState: CurrentFilterState, - ) => void; + onFilterSelectionChange: (filter: Filter, filterState: DataMask) => void; } const StyledCascadeChildrenList = styled.ul` diff --git a/superset-frontend/src/dashboard/components/nativeFilters/FilterBar/CascadePopover.tsx b/superset-frontend/src/dashboard/components/nativeFilters/FilterBar/CascadePopover.tsx index 0a51df05d5ad3..0ab31ac8ca6bc 100644 --- a/superset-frontend/src/dashboard/components/nativeFilters/FilterBar/CascadePopover.tsx +++ b/superset-frontend/src/dashboard/components/nativeFilters/FilterBar/CascadePopover.tsx @@ -17,12 +17,11 @@ * under the License. */ import React, { useCallback, useEffect, useMemo, useState } from 'react'; -import { ExtraFormData, styled, t } from '@superset-ui/core'; +import { styled, t, DataMask } from '@superset-ui/core'; import Popover from 'src/common/components/Popover'; import Icon from 'src/components/Icon'; import { Pill } from 'src/dashboard/components/FiltersBadge/Styles'; -import { CurrentFilterState } from 'src/dashboard/reducers/types'; -import { useFilterState } from './state'; +import { useFilterStateNative } from './state'; import FilterControl from './FilterControl'; import CascadeFilterControl from './CascadeFilterControl'; import { CascadeFilter } from './types'; @@ -33,11 +32,7 @@ interface CascadePopoverProps { visible: boolean; directPathToChild?: string[]; onVisibleChange: (visible: boolean) => void; - onFilterSelectionChange: ( - filter: Filter, - extraFormData: ExtraFormData, - currentState: CurrentFilterState, - ) => void; + onFilterSelectionChange: (filter: Filter, filterState: DataMask) => void; } const StyledTitleBox = styled.div` @@ -85,7 +80,7 @@ const CascadePopover: React.FC = ({ directPathToChild, }) => { const [currentPathToChild, setCurrentPathToChild] = useState(); - const filterState = useFilterState(filter.id); + const filterStateNative = useFilterStateNative(filter.id); useEffect(() => { setCurrentPathToChild(directPathToChild); @@ -98,7 +93,7 @@ const CascadePopover: React.FC = ({ const getActiveChildren = useCallback( (filter: CascadeFilter): CascadeFilter[] | null => { const children = filter.cascadeChildren || []; - const currentValue = filterState.currentState?.value; + const currentValue = filterStateNative.currentState?.value; const activeChildren = children.flatMap( childFilter => getActiveChildren(childFilter) || [], @@ -114,7 +109,7 @@ const CascadePopover: React.FC = ({ return null; }, - [filterState], + [filterStateNative], ); const getAllFilters = (filter: CascadeFilter): CascadeFilter[] => { diff --git a/superset-frontend/src/dashboard/components/nativeFilters/FilterBar/FilterBar.tsx b/superset-frontend/src/dashboard/components/nativeFilters/FilterBar/FilterBar.tsx index f5db6c6c01b4e..b1c403e641792 100644 --- a/superset-frontend/src/dashboard/components/nativeFilters/FilterBar/FilterBar.tsx +++ b/superset-frontend/src/dashboard/components/nativeFilters/FilterBar/FilterBar.tsx @@ -16,27 +16,21 @@ * specific language governing permissions and limitations * under the License. */ -import { styled, t, tn, ExtraFormData } from '@superset-ui/core'; +import { styled, t, tn, DataMask } from '@superset-ui/core'; import React, { useState, useEffect, useMemo, ChangeEvent } from 'react'; import { useDispatch, useSelector } from 'react-redux'; import cx from 'classnames'; import Button from 'src/components/Button'; import Icon from 'src/components/Icon'; -import { - CurrentFilterState, - FiltersSet, - NativeFilterState, -} from 'src/dashboard/reducers/types'; +import { FiltersSet, FilterState } from 'src/dashboard/reducers/types'; import { Input, Select } from 'src/common/components'; import { FeatureFlag, isFeatureEnabled } from 'src/featureFlags'; -import { setFilterSetsConfiguration } from 'src/dashboard/actions/nativeFilters'; -import FilterConfigurationLink from './FilterConfigurationLink'; import { - useFilters, - useFilterSets, - useFiltersState, - useSetExtraFormData, -} from './state'; + setFilterSetsConfiguration, + updateExtraFormData, +} from 'src/dashboard/actions/nativeFilters'; +import FilterConfigurationLink from './FilterConfigurationLink'; +import { useFilters, useFilterSets, useFiltersStateNative } from './state'; import { useFilterConfiguration } from '../state'; import { Filter } from '../types'; import { @@ -183,14 +177,10 @@ const FilterBar: React.FC = ({ directPathToChild, }) => { const [filterData, setFilterData] = useState<{ - [id: string]: { - extraFormData: ExtraFormData; - currentState: CurrentFilterState; - }; + [filterId: string]: Omit; }>({}); const dispatch = useDispatch(); - const setExtraFormData = useSetExtraFormData(); - const filtersState = useFiltersState(); + const filtersStateNative = useFiltersStateNative(); const filterSets = useFilterSets(); const filterConfigs = useFilterConfiguration(); const filterSetsConfigs = useSelector( @@ -242,22 +232,21 @@ const FilterBar: React.FC = ({ const handleFilterSelectionChange = ( filter: Pick & Partial, - extraFormData: ExtraFormData, - currentState: CurrentFilterState, + filtersState: DataMask, ) => { setFilterData(prevFilterData => { const children = cascadeChildren[filter.id] || []; // force instant updating on initialization or for parent filters if (filter.isInstant || children.length > 0) { - setExtraFormData(filter.id, extraFormData, currentState); + dispatch(updateExtraFormData(filter.id, filtersState)); } + if (!filtersState.nativeFilters) { + return { ...prevFilterData }; + } return { ...prevFilterData, - [filter.id]: { - extraFormData, - currentState, - }, + [filter.id]: filtersState.nativeFilters, }; }); }; @@ -268,24 +257,25 @@ const FilterBar: React.FC = ({ return; } const filtersSet = filterSets[value]; - Object.values(filtersSet.filtersState).forEach(filterState => { - const { - extraFormData, - currentState, - id, - } = filterState as NativeFilterState; - handleFilterSelectionChange({ id }, extraFormData, currentState); - }); + Object.values(filtersSet.filtersState?.nativeFilters ?? []).forEach( + filterState => { + const { extraFormData, currentState, id } = filterState as FilterState; + handleFilterSelectionChange( + { id }, + { nativeFilters: { extraFormData, currentState } }, + ); + }, + ); }; const handleApply = () => { const filterIds = Object.keys(filterData); filterIds.forEach(filterId => { if (filterData[filterId]) { - setExtraFormData( - filterId, - filterData[filterId]?.extraFormData, - filterData[filterId]?.currentState, + dispatch( + updateExtraFormData(filterId, { + nativeFilters: filterData[filterId], + }), ); } }); @@ -304,8 +294,9 @@ const FilterBar: React.FC = ({ { name: filtersSetName.trim(), id: generateFiltersSetId(), - // TODO: After merge https://github.com/apache/superset/pull/13137, compare if data changed (meantime save only clicking `apply`) - filtersState, + filtersState: { + nativeFilters: filtersStateNative, + }, }, ]), ), @@ -327,10 +318,16 @@ const FilterBar: React.FC = ({ const handleResetAll = () => { filterConfigs.forEach(filter => { - setExtraFormData(filter.id, filterData[filter.id]?.extraFormData, { - ...filterData[filter.id]?.currentState, - value: filters[filter.id]?.defaultValue, - }); + dispatch( + updateExtraFormData(filter.id, { + nativeFilters: { + currentState: { + ...filterData[filter.id]?.currentState, + value: filters[filter.id]?.defaultValue, + }, + }, + }), + ); }); }; diff --git a/superset-frontend/src/dashboard/components/nativeFilters/FilterBar/FilterValue.tsx b/superset-frontend/src/dashboard/components/nativeFilters/FilterBar/FilterValue.tsx index 6d93528a06aed..b2b45fc42c95c 100644 --- a/superset-frontend/src/dashboard/components/nativeFilters/FilterBar/FilterValue.tsx +++ b/superset-frontend/src/dashboard/components/nativeFilters/FilterBar/FilterValue.tsx @@ -18,17 +18,17 @@ */ import React, { useEffect, useRef, useState } from 'react'; import { - ExtraFormData, QueryFormData, styled, SuperChart, + DataMask, t, + Behavior, } from '@superset-ui/core'; import { areObjectsEqual } from 'src/reduxUtils'; import { getChartDataRequest } from 'src/chart/chartAction'; import Loading from 'src/components/Loading'; import BasicErrorAlert from 'src/components/ErrorMessage/BasicErrorAlert'; -import { CurrentFilterState } from 'src/dashboard/reducers/types'; import { FilterProps } from './types'; import { getFormData } from '../utils'; import { useCascadingFilters } from './state'; @@ -109,13 +109,8 @@ const FilterValue: React.FC = ({ return undefined; }, [inputRef, directPathToChild, filter.id]); - const setExtraFormData = ({ - extraFormData, - currentState, - }: { - extraFormData: ExtraFormData; - currentState: CurrentFilterState; - }) => onFilterSelectionChange(filter, extraFormData, currentState); + const setDataMask = (dataMask: DataMask) => + onFilterSelectionChange(filter, dataMask); if (loading) { return ( @@ -144,8 +139,8 @@ const FilterValue: React.FC = ({ // For charts that don't have datasource we need workaround for empty placeholder queriesData={hasDataSource ? state : [{ data: [null] }]} chartType={filterType} - // @ts-ignore (update superset-ui) - hooks={{ setExtraFormData }} + behaviors={[Behavior.NATIVE_FILTER]} + hooks={{ setDataMask }} /> ); diff --git a/superset-frontend/src/dashboard/components/nativeFilters/FilterBar/state.ts b/superset-frontend/src/dashboard/components/nativeFilters/FilterBar/state.ts index 484987136c9dc..316195d884316 100644 --- a/superset-frontend/src/dashboard/components/nativeFilters/FilterBar/state.ts +++ b/superset-frontend/src/dashboard/components/nativeFilters/FilterBar/state.ts @@ -16,16 +16,13 @@ * specific language governing permissions and limitations * under the License. */ -import { useDispatch, useSelector } from 'react-redux'; -import { useCallback } from 'react'; -import { ExtraFormData } from '@superset-ui/core'; -import { setExtraFormData } from 'src/dashboard/actions/nativeFilters'; +import { useSelector } from 'react-redux'; import { getInitialFilterState } from 'src/dashboard/reducers/nativeFilters'; import { - CurrentFilterState, - NativeFilterState, NativeFiltersState, + FilterState, FilterSets, + FilterStates, } from 'src/dashboard/reducers/types'; import { mergeExtraFormData } from '../utils'; import { Filter } from '../types'; @@ -34,9 +31,9 @@ export function useFilters() { return useSelector(state => state.nativeFilters.filters); } -export function useFiltersState() { - return useSelector( - state => state.nativeFilters.filtersState, +export function useFiltersStateNative() { + return useSelector( + state => state.nativeFilters.filtersState.nativeFilters ?? {}, ); } @@ -46,36 +43,28 @@ export function useFilterSets() { ); } -export function useSetExtraFormData() { - const dispatch = useDispatch(); - return useCallback( - ( - id: string, - extraFormData: ExtraFormData, - currentState: CurrentFilterState, - ) => dispatch(setExtraFormData(id, extraFormData, currentState)), - [dispatch], - ); -} - export function useCascadingFilters(id: string) { - const nativeFilters = useSelector( - state => state.nativeFilters, - ); - const { filters, filtersState } = nativeFilters; + const { + filters, + filtersState: { nativeFilters }, + } = useSelector(state => state.nativeFilters); const filter = filters[id]; - const cascadeParentIds = filter?.cascadeParentIds ?? []; + const cascadeParentIds: string[] = filter?.cascadeParentIds ?? []; let cascadedFilters = {}; cascadeParentIds.forEach(parentId => { - const parentState = filtersState[parentId] || {}; + const parentState = nativeFilters[parentId] || {}; const { extraFormData: parentExtra = {} } = parentState; - cascadedFilters = mergeExtraFormData(cascadedFilters, parentExtra); + cascadedFilters = { + nativeFilters: mergeExtraFormData(cascadedFilters, parentExtra), + }; }); return cascadedFilters; } -export function useFilterState(id: string) { - return useSelector( - state => state.nativeFilters.filtersState[id] || getInitialFilterState(id), +export function useFilterStateNative(id: string) { + return useSelector( + state => + state.nativeFilters.filtersState.nativeFilters[id] ?? + getInitialFilterState(id), ); } diff --git a/superset-frontend/src/dashboard/components/nativeFilters/FilterBar/types.ts b/superset-frontend/src/dashboard/components/nativeFilters/FilterBar/types.ts index b0d8a2760c6d6..404eb419fc829 100644 --- a/superset-frontend/src/dashboard/components/nativeFilters/FilterBar/types.ts +++ b/superset-frontend/src/dashboard/components/nativeFilters/FilterBar/types.ts @@ -17,19 +17,14 @@ * under the License. */ import React from 'react'; -import { ExtraFormData } from '@superset-ui/core'; -import { CurrentFilterState } from 'src/dashboard/reducers/types'; +import { DataMask } from '@superset-ui/core'; import { Filter } from '../types'; export interface FilterProps { filter: Filter; icon?: React.ReactElement; directPathToChild?: string[]; - onFilterSelectionChange: ( - filter: Filter, - extraFormData: ExtraFormData, - currentState: CurrentFilterState, - ) => void; + onFilterSelectionChange: (filter: Filter, filterState: DataMask) => void; } export interface CascadeFilter extends Filter { diff --git a/superset-frontend/src/dashboard/components/nativeFilters/FiltersConfigModal/FiltersConfigForm/DefaultValue.tsx b/superset-frontend/src/dashboard/components/nativeFilters/FiltersConfigModal/FiltersConfigForm/DefaultValue.tsx index 797b1b51a3ab1..1019bd6f4b6f9 100644 --- a/superset-frontend/src/dashboard/components/nativeFilters/FiltersConfigModal/FiltersConfigForm/DefaultValue.tsx +++ b/superset-frontend/src/dashboard/components/nativeFilters/FiltersConfigModal/FiltersConfigForm/DefaultValue.tsx @@ -17,9 +17,9 @@ * under the License. */ import React, { FC } from 'react'; -import { t, SuperChart } from '@superset-ui/core'; +import { t, SuperChart, Behavior } from '@superset-ui/core'; import { FormInstance } from 'antd/lib/form'; -import { setFilterFieldValues, useForceUpdate } from './utils'; +import { setFilterFieldValues } from './utils'; import { StyledFormItem, StyledLabel } from './FiltersConfigForm'; import { Filter } from '../../types'; import { NativeFiltersForm } from '../types'; @@ -27,6 +27,7 @@ import { getFormData } from '../../utils'; type DefaultValueProps = { filterId: string; + forceUpdate: Function; hasFilledDatasource: boolean; hasDatasource: boolean; filterToEdit?: Filter; @@ -40,9 +41,9 @@ const DefaultValue: FC = ({ hasDatasource, filterToEdit, form, + forceUpdate, formData, }) => { - const forceUpdate = useForceUpdate(); const formFilter = (form.getFieldValue('filters') || {})[filterId]; return ( = ({ = ({ } chartType={formFilter?.filterType} hooks={{ - // @ts-ignore (fixed in other PR) - setExtraFormData: ({ currentState }) => { + setDataMask: ({ nativeFilters }) => { setFilterFieldValues(form, filterId, { - defaultValue: currentState?.value, + defaultValue: nativeFilters?.currentState?.value, }); forceUpdate(); }, diff --git a/superset-frontend/src/dashboard/components/nativeFilters/FiltersConfigModal/FiltersConfigForm/FiltersConfigForm.tsx b/superset-frontend/src/dashboard/components/nativeFilters/FiltersConfigModal/FiltersConfigForm/FiltersConfigForm.tsx index b97785a5950ee..a4a5d0d74c356 100644 --- a/superset-frontend/src/dashboard/components/nativeFilters/FiltersConfigModal/FiltersConfigForm/FiltersConfigForm.tsx +++ b/superset-frontend/src/dashboard/components/nativeFilters/FiltersConfigModal/FiltersConfigForm/FiltersConfigForm.tsx @@ -249,6 +249,7 @@ export const FiltersConfigForm: React.FC = ({ /> { - const filterState = nativeFilters.filtersState[key] || {}; + const filterState = nativeFilters.filtersState.nativeFilters[key] || {}; const { extraFormData: newExtra = {} } = filterState; extraFormData = mergeExtraFormData(extraFormData, newExtra); }); if (isFeatureEnabled(FeatureFlag.DASHBOARD_CROSS_FILTERS)) { Object.entries(charts).forEach(([key, chart]) => { if (isCrossFilter(chart?.formData?.viz_type)) { - const filterState = nativeFilters.filtersState[key] || {}; + const filterState = nativeFilters.filtersState.crossFilters[key] || {}; const { extraFormData: newExtra = {} } = filterState; extraFormData = mergeExtraFormData(extraFormData, newExtra); } diff --git a/superset-frontend/src/dashboard/containers/Chart.jsx b/superset-frontend/src/dashboard/containers/Chart.jsx index 19f4c9adb44d9..0e39dc2f21ede 100644 --- a/superset-frontend/src/dashboard/containers/Chart.jsx +++ b/superset-frontend/src/dashboard/containers/Chart.jsx @@ -82,6 +82,7 @@ function mapStateToProps( supersetCanExplore: !!dashboardInfo.superset_can_explore, supersetCanCSV: !!dashboardInfo.superset_can_csv, sliceCanEdit: !!dashboardInfo.slice_can_edit, + ownCurrentState: nativeFilters.filtersState.ownFilters?.[id]?.currentState, }; } diff --git a/superset-frontend/src/dashboard/containers/Dashboard.jsx b/superset-frontend/src/dashboard/containers/Dashboard.jsx index 07fc924011ff1..90e7734729a25 100644 --- a/superset-frontend/src/dashboard/containers/Dashboard.jsx +++ b/superset-frontend/src/dashboard/containers/Dashboard.jsx @@ -62,6 +62,7 @@ function mapStateToProps(state) { layout: dashboardLayout.present, }), }, + ownDataCharts: nativeFilters.filtersState.ownFilters ?? {}, slices: sliceEntities.slices, layout: dashboardLayout.present, impressionId, diff --git a/superset-frontend/src/dashboard/reducers/nativeFilters.ts b/superset-frontend/src/dashboard/reducers/nativeFilters.ts index 2aaa8807b9038..59ed13576589c 100644 --- a/superset-frontend/src/dashboard/reducers/nativeFilters.ts +++ b/superset-frontend/src/dashboard/reducers/nativeFilters.ts @@ -19,15 +19,22 @@ import { AnyFilterAction, SAVE_FILTER_SETS, - SET_EXTRA_FORM_DATA, SET_FILTER_CONFIG_COMPLETE, SET_FILTER_SETS_CONFIG_COMPLETE, SET_FILTERS_STATE, + UPDATE_EXTRA_FORM_DATA, + UpdateExtraFormData, } from 'src/dashboard/actions/nativeFilters'; -import { FiltersSet, NativeFiltersState, NativeFilterState } from './types'; +import { + FiltersSet, + FiltersState, + FilterState, + FilterStateType, + NativeFiltersState, +} from './types'; import { FilterConfiguration } from '../components/nativeFilters/types'; -export function getInitialFilterState(id: string): NativeFilterState { +export function getInitialFilterState(id: string): FilterState { return { id, extraFormData: {}, @@ -46,20 +53,30 @@ export function getInitialState({ }): NativeFiltersState { const state: Partial = {}; + const emptyFiltersState = { + [FilterStateType.NativeFilters]: {}, + [FilterStateType.CrossFilters]: {}, + [FilterStateType.OwnFilters]: {}, + }; + const filters = {}; - const filtersState = {}; + const filtersState = { ...emptyFiltersState }; if (filterConfig) { filterConfig.forEach(filter => { const { id } = filter; filters[id] = filter; - filtersState[id] = - prevState?.filtersState?.[id] || getInitialFilterState(id); + filtersState.nativeFilters[id] = + prevState?.filtersState?.nativeFilters[id] || getInitialFilterState(id); }); state.filters = filters; - state.filtersState = filtersState; + state.filtersState = { + ...emptyFiltersState, + ...prevState?.filtersState, + nativeFilters: filtersState.nativeFilters, + }; } else { state.filters = prevState?.filters ?? {}; - state.filtersState = prevState?.filtersState ?? {}; + state.filtersState = prevState?.filtersState ?? { ...emptyFiltersState }; } if (filterSetsConfig) { @@ -75,23 +92,57 @@ export function getInitialState({ return state as NativeFiltersState; } +const getUnitState = ( + unitName: FilterStateType, + action: UpdateExtraFormData, + filtersState: FiltersState, +) => { + if (action[unitName]) + return { + ...filtersState[unitName], + [action.filterId]: { + ...filtersState[unitName][action.filterId], + ...action[unitName], + }, + }; + return { ...filtersState[unitName] }; +}; + export default function nativeFilterReducer( - state: NativeFiltersState = { filters: {}, filtersState: {}, filterSets: {} }, + state: NativeFiltersState = { + filters: {}, + filterSets: {}, + filtersState: { + [FilterStateType.NativeFilters]: {}, + [FilterStateType.CrossFilters]: {}, + [FilterStateType.OwnFilters]: {}, + }, + }, action: AnyFilterAction, ) { const { filters, filtersState, filterSets } = state; switch (action.type) { - case SET_EXTRA_FORM_DATA: + case UPDATE_EXTRA_FORM_DATA: return { ...state, filters, filtersState: { ...filtersState, - [action.filterId]: { - ...filtersState[action.filterId], - extraFormData: action.extraFormData, - currentState: action.currentState, - }, + [FilterStateType.NativeFilters]: getUnitState( + FilterStateType.NativeFilters, + action, + filtersState, + ), + [FilterStateType.CrossFilters]: getUnitState( + FilterStateType.CrossFilters, + action, + filtersState, + ), + [FilterStateType.OwnFilters]: getUnitState( + FilterStateType.OwnFilters, + action, + filtersState, + ), }, }; case SAVE_FILTER_SETS: diff --git a/superset-frontend/src/dashboard/reducers/types.ts b/superset-frontend/src/dashboard/reducers/types.ts index 493bbc12ee314..03e273f9e44b5 100644 --- a/superset-frontend/src/dashboard/reducers/types.ts +++ b/superset-frontend/src/dashboard/reducers/types.ts @@ -18,7 +18,7 @@ */ import componentTypes from 'src/dashboard/util/componentTypes'; -import { ExtraFormData, JsonObject } from '@superset-ui/core'; +import { ExtraFormData, DataMaskCurrentState } from '@superset-ui/core'; import { Filter } from '../components/nativeFilters/types'; export enum Scoping { @@ -45,11 +45,6 @@ export type RootState = { /** State of dashboardLayout in redux */ export type Layout = { [key: string]: LayoutItem }; -/** State of nativeFilters currentState */ -export type CurrentFilterState = JsonObject & { - value?: any; -}; - /** State of charts in redux */ export type Charts = { [key: number]: Chart }; @@ -73,28 +68,42 @@ export type LayoutItem = { }; /** Current state of the filter, stored in `nativeFilters` in redux */ -export type NativeFilterState = { +export type FilterState = { id: string; // ties this filter state to the config object - extraFormData: ExtraFormData; - currentState: CurrentFilterState; + extraFormData?: ExtraFormData; + currentState: DataMaskCurrentState; }; export type FiltersSet = { id: string; name: string; - filtersState: NativeFilterState; + filtersState: Partial; }; export type FilterSets = { [filtersSetId: string]: FiltersSet; }; +export type FilterStates = { [filterId: string]: FilterState }; + +export enum FilterStateType { + NativeFilters = 'nativeFilters', + CrossFilters = 'crossFilters', + OwnFilters = 'ownFilters', +} + +export type FiltersState = { + [FilterStateType.NativeFilters]: FilterStates; + [FilterStateType.CrossFilters]: FilterStates; + [FilterStateType.OwnFilters]: FilterStates; +}; + +export type Filters = { + [filterId: string]: Filter; +}; + export type NativeFiltersState = { - filters: { - [filterId: string]: Filter; - }; + filters: Filters; + filtersState: FiltersState; filterSets: FilterSets; - filtersState: { - [filterId: string]: NativeFilterState; - }; }; diff --git a/superset-frontend/src/dashboard/util/activeDashboardNativeFilters.ts b/superset-frontend/src/dashboard/util/activeDashboardNativeFilters.ts index 44779394a919b..af8954d43f612 100644 --- a/superset-frontend/src/dashboard/util/activeDashboardNativeFilters.ts +++ b/superset-frontend/src/dashboard/util/activeDashboardNativeFilters.ts @@ -78,31 +78,32 @@ export const getActiveNativeFilters = ({ layout: { [key: string]: LayoutItem }; }): ActiveFilters => { const activeNativeFilters = {}; - if (!nativeFilters?.filtersState) { + if (!nativeFilters?.filtersState?.nativeFilters) { return activeNativeFilters; } - Object.values(nativeFilters.filtersState).forEach( - ({ id: filterId, extraFormData }) => { - // TODO: for a case of a cross filters (should be updated will be added scope there) - const scope = nativeFilters?.filters?.[filterId]?.scope ?? { - rootPath: [DASHBOARD_ROOT_ID], - excluded: [], - }; - // Iterate over all roots to find all affected charts - scope.rootPath.forEach(layoutItemId => { - layout[layoutItemId].children.forEach((child: string) => { - // Need exclude from affected charts, charts that located in scope `excluded` - findAffectedCharts({ - child, - layout, - scope, - activeNativeFilters, - filterId, - extraFormData, - }); + Object.values({ + ...nativeFilters.filtersState.nativeFilters, + ...nativeFilters.filtersState.crossFilters, + }).forEach(({ id: filterId, extraFormData }) => { + // TODO: for a case of a cross filters (should be updated will be added scope there) + const scope = nativeFilters?.filters?.[filterId]?.scope ?? { + rootPath: [DASHBOARD_ROOT_ID], + excluded: [], + }; + // Iterate over all roots to find all affected charts + scope.rootPath.forEach(layoutItemId => { + layout[layoutItemId].children.forEach((child: string) => { + // Need exclude from affected charts, charts that located in scope `excluded` + findAffectedCharts({ + child, + layout, + scope, + activeNativeFilters, + filterId, + extraFormData, }); }); - }, - ); + }); + }); return activeNativeFilters; }; diff --git a/superset-frontend/src/dashboard/util/charts/getFormDataWithExtraFilters.ts b/superset-frontend/src/dashboard/util/charts/getFormDataWithExtraFilters.ts index 5659eb0054bf4..b3d78272b1d4d 100644 --- a/superset-frontend/src/dashboard/util/charts/getFormDataWithExtraFilters.ts +++ b/superset-frontend/src/dashboard/util/charts/getFormDataWithExtraFilters.ts @@ -20,9 +20,13 @@ import { isEqual } from 'lodash'; import { CategoricalColorNamespace, DataRecordFilters, + JsonObject, } from '@superset-ui/core'; import { ChartQueryPayload, Charts, LayoutItem } from 'src/dashboard/types'; -import { getExtraFormData } from 'src/dashboard/components/nativeFilters/utils'; +import { + getExtraFormData, + mergeExtraFormData, +} from 'src/dashboard/components/nativeFilters/utils'; import getEffectiveExtraFilters from './getEffectiveExtraFilters'; import { getActiveNativeFilters } from '../activeDashboardNativeFilters'; import { NativeFiltersState } from '../../reducers/types'; @@ -73,7 +77,7 @@ export default function getFormDataWithExtraFilters({ return cachedFormdataByChart[sliceId]; } - let extraData = {}; + let extraData: { extra_form_data?: JsonObject } = {}; const activeNativeFilters = getActiveNativeFilters({ nativeFilters, layout }); const filterIdsAppliedOnChart = Object.entries(activeNativeFilters) .filter(([, { scope }]) => scope.includes(chart.id)) @@ -88,6 +92,13 @@ export default function getFormDataWithExtraFilters({ }; } + const { extraFormData: newExtra = {} } = + nativeFilters.filtersState?.ownFilters?.[chart.id] ?? {}; + extraData.extra_form_data = mergeExtraFormData( + extraData?.extra_form_data, + newExtra, + ); + const formData = { ...chart.formData, ...(colorScheme && { color_scheme: colorScheme }), diff --git a/superset-frontend/src/dashboard/util/charts/getOwnDataCharts.ts b/superset-frontend/src/dashboard/util/charts/getOwnDataCharts.ts new file mode 100644 index 0000000000000..096f18af4f3ba --- /dev/null +++ b/superset-frontend/src/dashboard/util/charts/getOwnDataCharts.ts @@ -0,0 +1,50 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +import { JsonObject } from '@superset-ui/core'; +import { areObjectsEqual } from '../../../reduxUtils'; + +export const arrayDiff = (a: string[], b: string[]) => [ + ...a.filter(x => !b.includes(x)), + ...b.filter(x => !a.includes(x)), +]; + +export const getAffectedOwnDataCharts = ( + ownDataCharts: JsonObject, + appliedOwnDataCharts: JsonObject, +) => { + const chartIds = Object.keys(ownDataCharts); + const appliedChartIds = Object.keys(appliedOwnDataCharts); + const affectedIds: string[] = arrayDiff(chartIds, appliedChartIds).filter( + id => + ownDataCharts[id]?.extraFormData || + appliedOwnDataCharts[id]?.extraFormData, + ); + const checkForUpdateIds = new Set([...chartIds, ...appliedChartIds]); + checkForUpdateIds.forEach(chartId => { + if ( + !areObjectsEqual( + ownDataCharts[chartId]?.extraFormData, + appliedOwnDataCharts[chartId]?.extraFormData, + ) + ) { + affectedIds.push(chartId); + } + }); + return [...new Set(affectedIds)]; +}; diff --git a/superset-frontend/src/filters/components/Range/RangeFilterPlugin.tsx b/superset-frontend/src/filters/components/Range/RangeFilterPlugin.tsx index fe007d538d7e7..0df41a2922a95 100644 --- a/superset-frontend/src/filters/components/Range/RangeFilterPlugin.tsx +++ b/superset-frontend/src/filters/components/Range/RangeFilterPlugin.tsx @@ -16,7 +16,7 @@ * specific language governing permissions and limitations * under the License. */ -import { styled, t } from '@superset-ui/core'; +import { styled, t, DataMask, Behavior } from '@superset-ui/core'; import React, { useEffect, useState } from 'react'; import { Slider } from 'src/common/components'; import { PluginFilterRangeProps } from './types'; @@ -29,7 +29,15 @@ const Styles = styled.div` `; export default function RangeFilterPlugin(props: PluginFilterRangeProps) { - const { data, formData, height, width, setExtraFormData, inputRef } = props; + const { + data, + formData, + height, + width, + setDataMask, + inputRef, + behaviors, + } = props; const [row] = data; // @ts-ignore const { min, max }: { min: number; max: number } = row; @@ -42,12 +50,23 @@ export default function RangeFilterPlugin(props: PluginFilterRangeProps) { const handleAfterChange = (value: [number, number]) => { const [lower, upper] = value; setValue(value); - setExtraFormData({ + const dataMask = { extraFormData: getRangeExtraFormData(col, lower, upper), currentState: { value, }, - }); + }; + + const dataMaskObject: DataMask = {}; + if (behaviors.includes(Behavior.NATIVE_FILTER)) { + dataMaskObject.nativeFilters = dataMask; + } + + if (behaviors.includes(Behavior.CROSS_FILTER)) { + dataMaskObject.crossFilters = dataMask; + } + + setDataMask(dataMaskObject); }; const handleChange = (value: [number, number]) => { diff --git a/superset-frontend/src/filters/components/Range/transformProps.ts b/superset-frontend/src/filters/components/Range/transformProps.ts index ca9ec7f4a1748..56b8bc049411b 100644 --- a/superset-frontend/src/filters/components/Range/transformProps.ts +++ b/superset-frontend/src/filters/components/Range/transformProps.ts @@ -19,15 +19,16 @@ import { ChartProps } from '@superset-ui/core'; export default function transformProps(chartProps: ChartProps) { - const { formData, height, hooks, queriesData, width } = chartProps; - const { setExtraFormData } = hooks; + const { formData, height, hooks, queriesData, width, behaviors } = chartProps; + const { setDataMask } = hooks; const { data } = queriesData[0]; return { data, formData, + behaviors, height, - setExtraFormData, + setDataMask, width, }; } diff --git a/superset-frontend/src/filters/components/Range/types.ts b/superset-frontend/src/filters/components/Range/types.ts index a07c8d7c1b300..a3b9d56b9c7aa 100644 --- a/superset-frontend/src/filters/components/Range/types.ts +++ b/superset-frontend/src/filters/components/Range/types.ts @@ -19,7 +19,8 @@ import { DataRecord, QueryFormData, - SetExtraFormDataHook, + SetDataMaskHook, + Behavior, } from '@superset-ui/core'; import { RefObject } from 'react'; import { PluginFilterStylesProps } from '../types'; @@ -36,6 +37,7 @@ export type PluginFilterRangeQueryFormData = QueryFormData & export type PluginFilterRangeProps = PluginFilterStylesProps & { data: DataRecord[]; formData: PluginFilterRangeQueryFormData; - setExtraFormData: SetExtraFormDataHook; + setDataMask: SetDataMaskHook; + behaviors: Behavior[]; inputRef: RefObject; }; diff --git a/superset-frontend/src/filters/components/Select/SelectFilterPlugin.stories.tsx b/superset-frontend/src/filters/components/Select/SelectFilterPlugin.stories.tsx index 41e1ced94e926..5dd07cb9aca83 100644 --- a/superset-frontend/src/filters/components/Select/SelectFilterPlugin.stories.tsx +++ b/superset-frontend/src/filters/components/Select/SelectFilterPlugin.stories.tsx @@ -56,7 +56,7 @@ export const Select = ({ metrics: ['SUM(SP_POP_TOTL)'], }} hooks={{ - setExtraFormData: action('setExtraFormData'), + setDataMask: action('setDataMask'), }} /> ); diff --git a/superset-frontend/src/filters/components/Select/SelectFilterPlugin.tsx b/superset-frontend/src/filters/components/Select/SelectFilterPlugin.tsx index 70664af01d7e2..d9b8e0b167d44 100644 --- a/superset-frontend/src/filters/components/Select/SelectFilterPlugin.tsx +++ b/superset-frontend/src/filters/components/Select/SelectFilterPlugin.tsx @@ -16,7 +16,7 @@ * specific language governing permissions and limitations * under the License. */ -import { styled } from '@superset-ui/core'; +import { styled, Behavior, DataMask, t } from '@superset-ui/core'; import React, { useEffect, useState } from 'react'; import { Select } from 'src/common/components'; import { PluginFilterSelectProps } from './types'; @@ -31,7 +31,7 @@ const Styles = styled.div` const { Option } = Select; export default function PluginFilterSelect(props: PluginFilterSelectProps) { - const { data, formData, height, width, setExtraFormData } = props; + const { data, formData, height, width, behaviors, setDataMask } = props; const { defaultValue, enableEmptyFilter, @@ -58,10 +58,12 @@ export default function PluginFilterSelect(props: PluginFilterSelectProps) { resultValue = value; } setValues(resultValue); + const [col] = groupby; const emptyFilter = enableEmptyFilter && !inverseSelection && resultValue?.length === 0; - setExtraFormData({ + + const dataMask = { extraFormData: getSelectExtraFormData( col, resultValue, @@ -71,7 +73,18 @@ export default function PluginFilterSelect(props: PluginFilterSelectProps) { currentState: { value: resultValue.length ? resultValue : null, }, - }); + }; + + const dataMaskObject: DataMask = {}; + if (behaviors.includes(Behavior.NATIVE_FILTER)) { + dataMaskObject.nativeFilters = dataMask; + } + + if (behaviors.includes(Behavior.CROSS_FILTER)) { + dataMaskObject.crossFilters = dataMask; + } + + setDataMask(dataMaskObject); }; useEffect(() => { @@ -86,8 +99,8 @@ export default function PluginFilterSelect(props: PluginFilterSelectProps) { const placeholderText = (data || []).length === 0 - ? 'No data' - : `${data.length} option${data.length > 1 ? 's' : 0}`; + ? t('No data') + : t(`%d option%s`, data.length, data.length === 1 ? '' : 's'); return (