diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md index c5e50829ce503..2558dcd3e190c 100644 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -11,6 +11,7 @@ - [ ] Has associated issue: +- [ ] Required feature flags: - [ ] Changes UI - [ ] Includes DB Migration (follow approval process in [SIP-59](https://github.com/apache/superset/issues/13351)) - [ ] Migration is atomic, supports rollback & is backwards-compatible diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index bca0923e8068a..80202bebfab9a 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -24,9 +24,10 @@ repos: hooks: - id: isort - repo: https://github.com/pre-commit/mirrors-mypy - rev: v0.790 + rev: v0.910 hooks: - id: mypy + additional_dependencies: [types-all] - repo: https://github.com/peterdemin/pip-compile-multi rev: v2.4.1 hooks: diff --git a/.pylintrc b/.pylintrc index b624dfbc5aaed..c075529867576 100644 --- a/.pylintrc +++ b/.pylintrc @@ -90,7 +90,7 @@ disable= super-with-arguments, too-few-public-methods, too-many-locals, - + duplicate-code, [REPORTS] diff --git a/Dockerfile b/Dockerfile index 6ca89e889fd7d..c73e6cad61988 100644 --- a/Dockerfile +++ b/Dockerfile @@ -64,7 +64,7 @@ RUN /frontend-mem-nag.sh \ # Next, copy in the rest and let webpack do its thing COPY ./superset-frontend /app/superset-frontend -# This is BY FAR the most expensive step (thanks Terser!) +# This seems to be the most expensive step RUN cd /app/superset-frontend \ && npm run ${BUILD_CMD} \ && rm -rf node_modules diff --git a/RELEASING/changelog.py b/RELEASING/changelog.py index d6a1842fd878a..e9ff2de041a23 100644 --- a/RELEASING/changelog.py +++ b/RELEASING/changelog.py @@ -384,12 +384,12 @@ def change_log( with open(csv, "w") as csv_file: log_items = list(logs) field_names = log_items[0].keys() - writer = lib_csv.DictWriter( + writer = lib_csv.DictWriter( # type: ignore csv_file, delimiter=",", quotechar='"', quoting=lib_csv.QUOTE_ALL, - fieldnames=field_names, + fieldnames=field_names, # type: ignore ) writer.writeheader() for log in logs: diff --git a/docker-compose.yml b/docker-compose.yml index 8b94f70172227..93a79809178e5 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -118,6 +118,9 @@ services: depends_on: *superset-depends-on user: *superset-user volumes: *superset-volumes + # Bump memory limit if processing selenium / thumbails on superset-worker + # mem_limit: 2038m + # mem_reservation: 128M superset-worker-beat: image: *superset-image diff --git a/requirements/base.in b/requirements/base.in index 294583801824c..00071c4ac8f1b 100644 --- a/requirements/base.in +++ b/requirements/base.in @@ -18,3 +18,4 @@ -e file:. pyrsistent>=0.16.1,<0.17 zipp==3.4.1 +sasl==0.2.1 diff --git a/requirements/base.txt b/requirements/base.txt index 0125e97608990..6c903a098df47 100644 --- a/requirements/base.txt +++ b/requirements/base.txt @@ -1,4 +1,4 @@ -# SHA1:0862095245a068ae2fc00217da78331e1e7ae505 +# SHA1:57a754a4cf09b58d8e02c45bfb1058d2ce4286a6 # # This file is autogenerated by pip-compile-multi # To update, run: @@ -7,9 +7,9 @@ # -e file:. # via -r requirements/base.in -aiohttp==3.7.2 +aiohttp==3.7.4.post0 # via slackclient -alembic==1.4.3 +alembic==1.6.5 # via flask-migrate amqp==2.6.1 # via kombu @@ -17,17 +17,17 @@ apispec[yaml]==3.3.2 # via flask-appbuilder async-timeout==3.0.1 # via aiohttp -attrs==20.2.0 +attrs==21.2.0 # via # aiohttp # jsonschema -babel==2.8.0 +babel==2.9.1 # via flask-babel -backoff==1.10.0 +backoff==1.11.1 # via apache-superset -billiard==3.6.3.0 +billiard==3.6.4.0 # via celery -bleach==3.3.0 +bleach==3.3.1 # via apache-superset brotli==1.0.9 # via flask-compress @@ -35,9 +35,9 @@ cachelib==0.1.1 # via apache-superset celery==4.4.7 # via apache-superset -cffi==1.14.3 +cffi==1.14.6 # via cryptography -chardet==3.0.4 +chardet==4.0.0 # via aiohttp click==7.1.2 # via @@ -48,23 +48,23 @@ colorama==0.4.4 # via # apache-superset # flask-appbuilder -convertdate==2.3.0 +convertdate==2.3.2 # via holidays cron-descriptor==1.2.24 # via apache-superset -croniter==0.3.36 +croniter==1.0.15 # via apache-superset -cryptography==3.3.2 +cryptography==3.4.7 # via apache-superset -defusedxml==0.6.0 +defusedxml==0.7.1 # via python3-openid deprecation==2.1.0 # via apache-superset -dnspython==2.0.0 +dnspython==2.1.0 # via email-validator -email-validator==1.1.1 +email-validator==1.1.3 # via flask-appbuilder -flask==1.1.2 +flask==1.1.4 # via # apache-superset # flask-appbuilder @@ -77,35 +77,35 @@ flask==1.1.2 # flask-openid # flask-sqlalchemy # flask-wtf -flask-appbuilder==3.3.0 +flask-appbuilder==3.3.2 # via apache-superset flask-babel==1.0.0 # via flask-appbuilder flask-caching==1.10.1 # via apache-superset -flask-compress==1.8.0 +flask-compress==1.10.1 # via apache-superset -flask-jwt-extended==3.24.1 +flask-jwt-extended==3.25.1 # via flask-appbuilder flask-login==0.4.1 # via flask-appbuilder -flask-migrate==2.5.3 +flask-migrate==3.1.0 # via apache-superset flask-openid==1.2.5 # via flask-appbuilder -flask-sqlalchemy==2.4.4 +flask-sqlalchemy==2.5.1 # via # flask-appbuilder # flask-migrate -flask-talisman==0.7.0 +flask-talisman==0.8.1 # via apache-superset flask-wtf==0.14.3 # via # apache-superset # flask-appbuilder -geographiclib==1.50 +geographiclib==1.52 # via geopy -geopy==2.0.0 +geopy==2.2.0 # via apache-superset graphlib-backport==1.0.3 # via apache-superset @@ -113,9 +113,9 @@ gunicorn==20.0.4 # via apache-superset holidays==0.10.3 # via apache-superset -humanize==3.1.0 +humanize==3.11.0 # via apache-superset -idna==2.10 +idna==3.2 # via # email-validator # yarl @@ -136,16 +136,16 @@ kombu==4.6.11 # via celery korean-lunar-calendar==0.2.1 # via holidays -mako==1.1.3 +mako==1.1.4 # via alembic -markdown==3.3.3 +markdown==3.3.4 # via apache-superset -markupsafe==1.1.1 +markupsafe==2.0.1 # via # jinja2 # mako # wtforms -marshmallow==3.9.0 +marshmallow==3.13.0 # via # flask-appbuilder # marshmallow-enum @@ -154,23 +154,21 @@ marshmallow-enum==1.5.1 # via flask-appbuilder marshmallow-sqlalchemy==0.23.1 # via flask-appbuilder -msgpack==1.0.0 +msgpack==1.0.2 # via apache-superset -multidict==5.0.0 +multidict==5.1.0 # via # aiohttp # yarl -natsort==7.0.1 - # via croniter -numpy==1.19.4 +numpy==1.21.1 # via # pandas # pyarrow -packaging==20.4 +packaging==21.0 # via # bleach # deprecation -pandas==1.2.2 +pandas==1.2.5 # via apache-superset parsedatetime==2.6 # via apache-superset @@ -189,7 +187,7 @@ pyjwt==1.7.1 # apache-superset # flask-appbuilder # flask-jwt-extended -pymeeus==0.3.7 +pymeeus==0.5.11 # via convertdate pyparsing==2.4.7 # via @@ -199,7 +197,7 @@ pyrsistent==0.16.1 # via # -r requirements/base.in # jsonschema -python-dateutil==2.8.1 +python-dateutil==2.8.2 # via # alembic # apache-superset @@ -207,7 +205,7 @@ python-dateutil==2.8.1 # flask-appbuilder # holidays # pandas -python-dotenv==0.15.0 +python-dotenv==0.19.0 # via apache-superset python-editor==1.0.4 # via alembic @@ -215,7 +213,7 @@ python-geohash==0.8.5 # via apache-superset python3-openid==3.2.0 # via flask-openid -pytz==2020.4 +pytz==2021.1 # via # babel # celery @@ -228,29 +226,30 @@ pyyaml==5.4.1 # apispec redis==3.5.3 # via apache-superset +sasl==0.2.1 + # via -r requirements/base.in selenium==3.141.0 # via apache-superset -simplejson==3.17.2 +simplejson==3.17.3 # via apache-superset -six==1.15.0 +six==1.16.0 # via # bleach - # cryptography # flask-jwt-extended # flask-talisman # holidays # isodate # jsonschema - # packaging # polyline # prison # pyrsistent # python-dateutil + # sasl # sqlalchemy-utils # wtforms-json slackclient==2.5.0 # via apache-superset -sqlalchemy==1.3.20 +sqlalchemy==1.3.24 # via # alembic # apache-superset @@ -266,11 +265,11 @@ sqlparse==0.3.0 # via apache-superset tabulate==0.8.9 # via apache-superset -typing-extensions==3.7.4.3 +typing-extensions==3.10.0.0 # via # aiohttp # apache-superset -urllib3==1.25.11 +urllib3==1.26.6 # via selenium vine==1.3.0 # via @@ -288,7 +287,7 @@ wtforms==2.3.3 # wtforms-json wtforms-json==0.3.3 # via apache-superset -yarl==1.6.2 +yarl==1.6.3 # via aiohttp zipp==3.4.1 # via -r requirements/base.in diff --git a/requirements/development.in b/requirements/development.in index efa332051ccf4..db2162341dace 100644 --- a/requirements/development.in +++ b/requirements/development.in @@ -24,5 +24,5 @@ pyhive[hive]>=0.6.1 psycopg2-binary==2.8.5 tableschema thrift>=0.11.0,<1.0.0 -pygithub>=1.54.1,<2.0.0 progress>=1.5,<2 +pyinstrument>=4.0.2,<5 diff --git a/requirements/development.txt b/requirements/development.txt index 959c6466c25ab..82133b43a320b 100644 --- a/requirements/development.txt +++ b/requirements/development.txt @@ -1,4 +1,4 @@ -# SHA1:c470411e2e9cb04b412a94f80a6a9d870bece74d +# SHA1:e4f3ea65026a8aec3735d6d9977f89fef4a1a4f9 # # This file is autogenerated by pip-compile-multi # To update, run: @@ -8,84 +8,77 @@ -r base.txt -e file:. # via -r requirements/base.in -boto3==1.16.10 +boto3==1.18.19 # via tabulator -botocore==1.19.10 +botocore==1.21.19 # via # boto3 # s3transfer cached-property==1.5.2 # via tableschema -certifi==2020.6.20 +certifi==2021.5.30 # via requests -deprecated==1.2.11 - # via pygithub -et-xmlfile==1.0.1 +charset-normalizer==2.0.4 + # via requests +et-xmlfile==1.1.0 # via openpyxl -flask-cors==3.0.9 +flask-cors==3.0.10 # via -r requirements/development.in future==0.18.2 # via pyhive -ijson==3.1.2.post0 +ijson==3.1.4 # via tabulator -jdcal==1.4.1 - # via openpyxl jmespath==0.10.0 # via # boto3 # botocore -jsonlines==1.2.0 +jsonlines==2.0.0 # via tabulator linear-tsv==1.1.0 # via tabulator mysqlclient==1.4.2.post1 # via -r requirements/development.in -openpyxl==3.0.5 +openpyxl==3.0.7 # via tabulator pillow==7.2.0 # via -r requirements/development.in -progress==1.5 +progress==1.6 # via -r requirements/development.in psycopg2-binary==2.8.5 # via -r requirements/development.in -pydruid==0.6.1 +pure-sasl==0.6.2 + # via thrift-sasl +pydruid==0.6.2 # via -r requirements/development.in -pygithub==1.54.1 +pyhive[hive]==0.6.4 # via -r requirements/development.in -pyhive[hive]==0.6.3 +pyinstrument==4.0.2 # via -r requirements/development.in -requests==2.24.0 +requests==2.26.0 # via # pydruid - # pygithub # tableschema # tabulator -rfc3986==1.4.0 +rfc3986==1.5.0 # via tableschema -s3transfer==0.3.3 +s3transfer==0.5.0 # via boto3 -sasl==0.2.1 - # via - # pyhive - # thrift-sasl -tableschema==1.20.0 +tableschema==1.20.2 # via -r requirements/development.in -tabulator==1.52.5 +tabulator==1.53.5 # via tableschema thrift==0.13.0 # via # -r requirements/development.in # pyhive # thrift-sasl -thrift-sasl==0.4.2 +thrift-sasl==0.4.3 # via pyhive unicodecsv==0.14.1 # via # tableschema # tabulator -wrapt==1.12.1 - # via deprecated -xlrd==1.2.0 +xlrd==2.0.1 # via tabulator # The following packages are considered to be unsafe in a requirements file: diff --git a/requirements/docker.txt b/requirements/docker.txt index e1d3f07003ab1..545e919791bd2 100644 --- a/requirements/docker.txt +++ b/requirements/docker.txt @@ -8,15 +8,15 @@ -r base.txt -e file:. # via -r requirements/base.in -gevent==20.9.0 +gevent==21.8.0 # via -r requirements/docker.in -greenlet==0.4.17 +greenlet==1.1.1 # via gevent -psycopg2-binary==2.8.6 +psycopg2-binary==2.9.1 # via -r requirements/docker.in zope.event==4.5.0 # via gevent -zope.interface==5.1.2 +zope.interface==5.4.0 # via gevent # The following packages are considered to be unsafe in a requirements file: diff --git a/requirements/integration.in b/requirements/integration.in index 1aaee9255f97f..1bc94c7fb71df 100644 --- a/requirements/integration.in +++ b/requirements/integration.in @@ -17,3 +17,6 @@ pip-compile-multi!=1.5.9 pre-commit tox +py>=1.10.0 +click==7.1.2 +packaging==21.0 diff --git a/requirements/integration.txt b/requirements/integration.txt index b9ec99d133268..b7da99e3da365 100644 --- a/requirements/integration.txt +++ b/requirements/integration.txt @@ -1,62 +1,74 @@ -# SHA1:f95c1152ed0bcc554f3668440d63eec2a7d1567c +# SHA1:17ab2346746deadfc557e1df96014e77c8337f4b # # This file is autogenerated by pip-compile-multi # To update, run: # # pip-compile-multi # -appdirs==1.4.4 +backports.entry-points-selectable==1.1.0 # via virtualenv -cfgv==3.2.0 +cfgv==3.3.0 # via pre-commit click==7.1.2 # via + # -r requirements/integration.in # pip-compile-multi # pip-tools -distlib==0.3.1 +distlib==0.3.2 # via virtualenv filelock==3.0.12 # via # tox # virtualenv -identify==1.5.9 +identify==2.2.13 # via pre-commit -nodeenv==1.5.0 +nodeenv==1.6.0 # via pre-commit -packaging==20.4 - # via tox +packaging==21.0 + # via + # -r requirements/integration.in + # tox +pep517==0.11.0 + # via pip-tools pip-compile-multi==2.4.1 # via -r requirements/integration.in -pip-tools==5.3.1 +pip-tools==6.2.0 # via pip-compile-multi +platformdirs==2.2.0 + # via virtualenv pluggy==0.13.1 # via tox -pre-commit==2.8.2 +pre-commit==2.14.0 # via -r requirements/integration.in -py==1.9.0 - # via tox +py==1.10.0 + # via + # -r requirements/integration.in + # tox pyparsing==2.4.7 # via packaging pyyaml==5.4.1 # via pre-commit -six==1.15.0 +six==1.16.0 # via - # packaging - # pip-tools # tox # virtualenv toml==0.10.2 # via # pre-commit # tox -toposort==1.5 +tomli==1.2.1 + # via pep517 +toposort==1.6 # via pip-compile-multi -tox==3.20.1 +tox==3.24.1 # via -r requirements/integration.in -virtualenv==20.1.0 +virtualenv==20.7.2 # via # pre-commit # tox +wheel==0.37.0 + # via pip-tools # The following packages are considered to be unsafe in a requirements file: # pip +# setuptools diff --git a/requirements/testing.in b/requirements/testing.in index 9c67f790a73e8..3355d71fa4335 100644 --- a/requirements/testing.in +++ b/requirements/testing.in @@ -22,14 +22,15 @@ freezegun ipdb # pinning ipython as pip-compile-multi was bringing higher version # of the ipython that was not found in CI -ipython==7.16.1 +ipython openapi-spec-validator openpyxl parameterized pyfakefs pyhive[presto]>=0.6.3 -pylint +pylint==2.6.0 pytest pytest-cov statsd pytest-mock +packaging==21.0 diff --git a/requirements/testing.txt b/requirements/testing.txt index 5b736e38140ca..ccbd88989e6a3 100644 --- a/requirements/testing.txt +++ b/requirements/testing.txt @@ -1,4 +1,4 @@ -# SHA1:d39180c0eb498d1a7dd73b8428e6ab304b728484 +# SHA1:5bfcfb5d0ab31dd532ce58caa2aab91d6807b123 # # This file is autogenerated by pip-compile-multi # To update, run: @@ -11,79 +11,89 @@ # via -r requirements/base.in appnope==0.1.2 # via ipython -astroid==2.4.2 +astroid==2.6.6 # via pylint backcall==0.2.0 # via ipython -coverage==5.3 +coverage==5.5 # via pytest-cov decorator==5.0.9 - # via ipython -docker==4.3.1 + # via + # ipdb + # ipython +docker==5.0.0 # via -r requirements/testing.in -flask-testing==0.8.0 +flask-testing==0.8.1 # via -r requirements/testing.in -freezegun==1.0.0 +freezegun==1.1.0 # via -r requirements/testing.in iniconfig==1.1.1 # via pytest -ipdb==0.13.4 +ipdb==0.13.9 # via -r requirements/testing.in -ipython==7.16.1 +ipython==7.26.0 # via # -r requirements/testing.in # ipdb ipython-genutils==0.2.0 # via traitlets -isort==5.6.4 +isort==5.9.3 # via pylint -jedi==0.17.2 +jedi==0.18.0 # via ipython -lazy-object-proxy==1.4.3 +lazy-object-proxy==1.6.0 # via astroid +matplotlib-inline==0.1.2 + # via ipython mccabe==0.6.1 # via pylint -openapi-spec-validator==0.2.9 +openapi-schema-validator==0.1.5 + # via openapi-spec-validator +openapi-spec-validator==0.3.1 # via -r requirements/testing.in -parameterized==0.7.4 +parameterized==0.8.1 # via -r requirements/testing.in -parso==0.7.1 +parso==0.8.2 # via jedi pexpect==4.8.0 # via ipython pickleshare==0.7.5 # via ipython -prompt-toolkit==3.0.8 +prompt-toolkit==3.0.19 # via ipython -ptyprocess==0.6.0 +ptyprocess==0.7.0 # via pexpect -pyfakefs==4.4.0 +pyfakefs==4.5.0 # via -r requirements/testing.in -pygments==2.7.2 +pygments==2.9.0 # via ipython -pyhive[hive,presto]==0.6.3 +pyhive[hive,presto]==0.6.4 # via # -r requirements/development.in # -r requirements/testing.in -pylint==2.6.0 +pylint==2.9.6 # via -r requirements/testing.in -pytest==6.1.2 +pytest==6.2.4 # via # -r requirements/testing.in # pytest-cov # pytest-mock -pytest-cov==2.10.1 +pytest-cov==2.12.1 # via -r requirements/testing.in pytest-mock==3.6.1 # via -r requirements/testing.in statsd==3.3.0 # via -r requirements/testing.in traitlets==5.0.5 - # via ipython + # via + # ipython + # matplotlib-inline wcwidth==0.2.5 # via prompt-toolkit -websocket-client==0.57.0 +websocket-client==1.2.0 # via docker +wrapt==1.12.1 + # via astroid # The following packages are considered to be unsafe in a requirements file: # pip diff --git a/scripts/benchmark_migration.py b/scripts/benchmark_migration.py index e4e49906d7da9..27670b5d4d729 100644 --- a/scripts/benchmark_migration.py +++ b/scripts/benchmark_migration.py @@ -44,9 +44,13 @@ def import_migration_script(filepath: Path) -> ModuleType: Import migration script as if it were a module. """ spec = importlib.util.spec_from_file_location(filepath.stem, filepath) - module = importlib.util.module_from_spec(spec) - spec.loader.exec_module(module) # type: ignore - return module + if spec: + module = importlib.util.module_from_spec(spec) + spec.loader.exec_module(module) # type: ignore + return module + raise Exception( + "No module spec found in location: `{path}`".format(path=str(filepath)) + ) def extract_modified_tables(module: ModuleType) -> Set[str]: diff --git a/setup.py b/setup.py index a38c7d2a2d8ca..d082733fa38d4 100644 --- a/setup.py +++ b/setup.py @@ -106,14 +106,14 @@ def get_git_sha() -> str: "simplejson>=3.15.0", "slackclient==2.5.0", # PINNED! slack changes file upload api in the future versions "sqlalchemy>=1.3.16, <1.4, !=1.3.21", - "sqlalchemy-utils>=0.36.6,<0.37", + "sqlalchemy-utils>=0.36.6, <0.37", "sqlparse==0.3.0", # PINNED! see https://github.com/andialbrecht/sqlparse/issues/562 "tabulate==0.8.9", - "typing-extensions>=3.7.4.3,<4", # needed to support typing.Literal on py37 + "typing-extensions>=3.10, <4", # needed to support Literal (3.8) and TypeGuard (3.10) "wtforms-json", ], extras_require={ - "athena": ["pyathena>=1.10.8,<1.11"], + "athena": ["pyathena>=1.10.8, <1.11"], "bigquery": [ "pandas_gbq>=0.10.0", "pybigquery>=0.4.10", diff --git a/superset-frontend/babel.config.js b/superset-frontend/babel.config.js index 94a58d15a369a..1d0cae25843d6 100644 --- a/superset-frontend/babel.config.js +++ b/superset-frontend/babel.config.js @@ -82,5 +82,8 @@ module.exports = { ], ], }, + testableProduction: { + plugins: [], + }, }, }; diff --git a/superset-frontend/package-lock.json b/superset-frontend/package-lock.json index 12200bc7496d2..b184d0cf8df63 100644 --- a/superset-frontend/package-lock.json +++ b/superset-frontend/package-lock.json @@ -15,35 +15,35 @@ "@emotion/babel-preset-css-prop": "^11.2.0", "@emotion/cache": "^11.1.3", "@emotion/react": "^11.1.5", - "@superset-ui/chart-controls": "^0.17.79", - "@superset-ui/core": "^0.17.75", - "@superset-ui/legacy-plugin-chart-calendar": "^0.17.79", - "@superset-ui/legacy-plugin-chart-chord": "^0.17.79", - "@superset-ui/legacy-plugin-chart-country-map": "^0.17.79", - "@superset-ui/legacy-plugin-chart-event-flow": "^0.17.79", - "@superset-ui/legacy-plugin-chart-force-directed": "^0.17.79", - "@superset-ui/legacy-plugin-chart-heatmap": "^0.17.79", - "@superset-ui/legacy-plugin-chart-histogram": "^0.17.79", - "@superset-ui/legacy-plugin-chart-horizon": "^0.17.79", - "@superset-ui/legacy-plugin-chart-map-box": "^0.17.79", - "@superset-ui/legacy-plugin-chart-paired-t-test": "^0.17.79", - "@superset-ui/legacy-plugin-chart-parallel-coordinates": "^0.17.79", - "@superset-ui/legacy-plugin-chart-partition": "^0.17.79", - "@superset-ui/legacy-plugin-chart-pivot-table": "^0.17.79", - "@superset-ui/legacy-plugin-chart-rose": "^0.17.79", - "@superset-ui/legacy-plugin-chart-sankey": "^0.17.79", - "@superset-ui/legacy-plugin-chart-sankey-loop": "^0.17.79", - "@superset-ui/legacy-plugin-chart-sunburst": "^0.17.79", - "@superset-ui/legacy-plugin-chart-treemap": "^0.17.79", - "@superset-ui/legacy-plugin-chart-world-map": "^0.17.79", - "@superset-ui/legacy-preset-chart-big-number": "^0.17.79", - "@superset-ui/legacy-preset-chart-deckgl": "^0.4.9", - "@superset-ui/legacy-preset-chart-nvd3": "^0.17.79", - "@superset-ui/plugin-chart-echarts": "^0.17.79", - "@superset-ui/plugin-chart-pivot-table": "^0.17.79", - "@superset-ui/plugin-chart-table": "^0.17.79", - "@superset-ui/plugin-chart-word-cloud": "^0.17.79", - "@superset-ui/preset-chart-xy": "^0.17.79", + "@superset-ui/chart-controls": "^0.17.84", + "@superset-ui/core": "^0.17.81", + "@superset-ui/legacy-plugin-chart-calendar": "^0.17.84", + "@superset-ui/legacy-plugin-chart-chord": "^0.17.84", + "@superset-ui/legacy-plugin-chart-country-map": "^0.17.84", + "@superset-ui/legacy-plugin-chart-event-flow": "^0.17.84", + "@superset-ui/legacy-plugin-chart-force-directed": "^0.17.84", + "@superset-ui/legacy-plugin-chart-heatmap": "^0.17.84", + "@superset-ui/legacy-plugin-chart-histogram": "^0.17.84", + "@superset-ui/legacy-plugin-chart-horizon": "^0.17.84", + "@superset-ui/legacy-plugin-chart-map-box": "^0.17.84", + "@superset-ui/legacy-plugin-chart-paired-t-test": "^0.17.84", + "@superset-ui/legacy-plugin-chart-parallel-coordinates": "^0.17.84", + "@superset-ui/legacy-plugin-chart-partition": "^0.17.84", + "@superset-ui/legacy-plugin-chart-pivot-table": "^0.17.84", + "@superset-ui/legacy-plugin-chart-rose": "^0.17.84", + "@superset-ui/legacy-plugin-chart-sankey": "^0.17.84", + "@superset-ui/legacy-plugin-chart-sankey-loop": "^0.17.84", + "@superset-ui/legacy-plugin-chart-sunburst": "^0.17.84", + "@superset-ui/legacy-plugin-chart-treemap": "^0.17.84", + "@superset-ui/legacy-plugin-chart-world-map": "^0.17.84", + "@superset-ui/legacy-preset-chart-big-number": "^0.17.84", + "@superset-ui/legacy-preset-chart-deckgl": "^0.4.10", + "@superset-ui/legacy-preset-chart-nvd3": "^0.17.84", + "@superset-ui/plugin-chart-echarts": "^0.17.84", + "@superset-ui/plugin-chart-pivot-table": "^0.17.84", + "@superset-ui/plugin-chart-table": "^0.17.84", + "@superset-ui/plugin-chart-word-cloud": "^0.17.84", + "@superset-ui/preset-chart-xy": "^0.17.84", "@vx/responsive": "^0.0.195", "abortcontroller-polyfill": "^1.1.9", "antd": "^4.9.4", @@ -247,7 +247,6 @@ "storybook-addon-jsx": "^7.3.3", "storybook-addon-paddings": "^3.2.0", "style-loader": "^1.0.0", - "terser-webpack-plugin": "^1.1.0", "thread-loader": "^1.2.0", "transform-loader": "^0.2.3", "ts-jest": "^26.4.2", @@ -3022,81 +3021,186 @@ "integrity": "sha512-M2AelyJDVR/oLnToJLtuDJRBBWUGUvvGigj1411hXhAdyFWqMaqHp7TixW3FpiLuVaikIcR1QL+zqoJoZlOgpg==" }, "node_modules/@deck.gl/aggregation-layers": { - "version": "7.1.11", - "resolved": "https://registry.npmjs.org/@deck.gl/aggregation-layers/-/aggregation-layers-7.1.11.tgz", - "integrity": "sha512-CHsr+UJhf06Mqb/q60iP7ftHQv3ftHUhJbVO4550PRo+QMFFhHfhxo53gQDDgrQ3stxpAcLT3lXRSNghMoU34g==", + "version": "8.5.2", + "resolved": "https://registry.npmjs.org/@deck.gl/aggregation-layers/-/aggregation-layers-8.5.2.tgz", + "integrity": "sha512-oiqXPmyn2v0lX9tWCvgmWs29stHSLS3tje71Ff2FVXDNmvP5FoZItFa8y7O7KSTkej2/rSwZeSte/a9pri6Njg==", "dependencies": { + "@luma.gl/shadertools": "^8.5.4", + "@math.gl/web-mercator": "^3.5.3", "d3-hexbin": "^0.2.1" + }, + "peerDependencies": { + "@deck.gl/core": "^8.0.0", + "@deck.gl/layers": "^8.0.0" } }, - "node_modules/@deck.gl/core": { - "version": "7.1.11", - "resolved": "https://registry.npmjs.org/@deck.gl/core/-/core-7.1.11.tgz", - "integrity": "sha512-jUi1CcsnF5KPL2sv7Z0H3x+8amee5csqliZXGbXEBYox1l8naC4PhHg5jTgLaB0ZOHfVDsldPwGdPC+Mi4jP/Q==", + "node_modules/@deck.gl/carto": { + "version": "8.5.2", + "resolved": "https://registry.npmjs.org/@deck.gl/carto/-/carto-8.5.2.tgz", + "integrity": "sha512-Kw/3NUM+2NcHjxH6b7IOUYXEwmJ4SNQujFzAVFW5amG4Lut8074NGSF5XHi+4M/zgk7vXDFsGRxLqspsA/dg8w==", "dependencies": { - "@luma.gl/core": "^7.1.0", + "@loaders.gl/loader-utils": "^3.0.6", + "@loaders.gl/mvt": "^3.0.6", + "@loaders.gl/tiles": "^3.0.6", + "@math.gl/web-mercator": "^3.5.3", + "cartocolor": "^4.0.2", + "d3-scale": "^3.2.3" + }, + "peerDependencies": { + "@deck.gl/core": "^8.0.0", + "@deck.gl/geo-layers": "^8.0.0", + "@deck.gl/layers": "^8.0.0", + "@loaders.gl/core": "^3.0.0" + } + }, + "node_modules/@deck.gl/carto/node_modules/d3-array": { + "version": "2.12.1", + "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-2.12.1.tgz", + "integrity": "sha512-B0ErZK/66mHtEsR1TkPEEkwdy+WDesimkM5gpZr5Dsg54BiTA5RXtYW5qTLIAcekaS9xfZrzBLF/OAkB3Qn1YQ==", + "dependencies": { + "internmap": "^1.0.0" + } + }, + "node_modules/@deck.gl/carto/node_modules/d3-scale": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-3.3.0.tgz", + "integrity": "sha512-1JGp44NQCt5d1g+Yy+GeOnZP7xHo0ii8zsQp6PGzd+C1/dl0KGsp9A7Mxwp+1D1o4unbTTxVdU/ZOIEBoeZPbQ==", + "dependencies": { + "d3-array": "^2.3.0", + "d3-format": "1 - 2", + "d3-interpolate": "1.2.0 - 2", + "d3-time": "^2.1.1", + "d3-time-format": "2 - 3" + } + }, + "node_modules/@deck.gl/carto/node_modules/d3-time": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-2.1.1.tgz", + "integrity": "sha512-/eIQe/eR4kCQwq7yxi7z4c6qEXf2IYGcjoWB5OOQy4Tq9Uv39/947qlDcN2TLkiTzQWzvnsuYPB9TrWaNfipKQ==", + "dependencies": { + "d3-array": "2" + } + }, + "node_modules/@deck.gl/core": { + "version": "8.5.2", + "resolved": "https://registry.npmjs.org/@deck.gl/core/-/core-8.5.2.tgz", + "integrity": "sha512-SAFv7fKx6k1Rj8R4qTMQO2wEhEfixROzbcoSS6RivxrfES00KYYj6jJ7iNEnq3dFn6qc37LPpxqtYYHO4BcvYA==", + "dependencies": { + "@loaders.gl/core": "^3.0.6", + "@loaders.gl/images": "^3.0.6", + "@luma.gl/core": "^8.5.4", + "@math.gl/web-mercator": "^3.5.3", "gl-matrix": "^3.0.0", - "math.gl": "^2.3.0", - "mjolnir.js": "^2.1.2", - "probe.gl": "^3.0.1", - "seer": "^0.2.4", - "viewport-mercator-project": "^6.1.0" + "math.gl": "^3.5.3", + "mjolnir.js": "^2.5.0", + "probe.gl": "^3.4.0" } }, - "node_modules/@deck.gl/geo-layers": { - "version": "7.1.11", - "resolved": "https://registry.npmjs.org/@deck.gl/geo-layers/-/geo-layers-7.1.11.tgz", - "integrity": "sha512-gIJ1K98IFSZ12hB+zHyQC+9pMncb9BKVhJTA7pjUpxwcmEkkroqet9zkYQQMeSInK0a67BR9GXjebb/N0U04qA==", + "node_modules/@deck.gl/extensions": { + "version": "8.5.2", + "resolved": "https://registry.npmjs.org/@deck.gl/extensions/-/extensions-8.5.2.tgz", + "integrity": "sha512-VhbQsMNPM7RCR/ERwb1u1x0rEWAxgXfcCWttW+gYvbiagW/LrAJ22jhOghlRW/wilEmupHYbXQlWkW2V/mYfsg==", "dependencies": { - "h3-js": "^3.4.3", + "@luma.gl/shadertools": "^8.5.4" + }, + "peerDependencies": { + "@deck.gl/core": "^8.0.0", + "gl-matrix": "^3.0.0" + } + }, + "node_modules/@deck.gl/geo-layers": { + "version": "8.5.2", + "resolved": "https://registry.npmjs.org/@deck.gl/geo-layers/-/geo-layers-8.5.2.tgz", + "integrity": "sha512-t6+TgAdbKWDw8g9UX1y6D+5twcdJuKaXw4qSib/0yVurWi/Mil5Plihybt1l9uBZuwkr+UcpxPR73zzo+qd9MA==", + "dependencies": { + "@loaders.gl/3d-tiles": "^3.0.6", + "@loaders.gl/gis": "^3.0.6", + "@loaders.gl/loader-utils": "^3.0.6", + "@loaders.gl/mvt": "^3.0.6", + "@loaders.gl/terrain": "^3.0.6", + "@loaders.gl/tiles": "^3.0.6", + "@luma.gl/experimental": "^8.5.4", + "@math.gl/culling": "^3.5.3", + "@math.gl/web-mercator": "^3.5.3", + "h3-js": "^3.6.0", "long": "^3.2.0", - "s2-geometry": "^1.2.10" + "math.gl": "^3.5.3" + }, + "peerDependencies": { + "@deck.gl/core": "^8.0.0", + "@deck.gl/extensions": "^8.0.0", + "@deck.gl/layers": "^8.0.0", + "@deck.gl/mesh-layers": "^8.0.0", + "@loaders.gl/core": "^3.0.0" } }, "node_modules/@deck.gl/google-maps": { - "version": "7.1.11", - "resolved": "https://registry.npmjs.org/@deck.gl/google-maps/-/google-maps-7.1.11.tgz", - "integrity": "sha512-gYp3NFIsyT5p65HgKjXFWTDzFf7K8+6ce9d9MIqaNgVWFZdsjUy9JL5TttDMQXshaQ1aZpxtLL6ZO3BiI1w8fw==" + "version": "8.5.2", + "resolved": "https://registry.npmjs.org/@deck.gl/google-maps/-/google-maps-8.5.2.tgz", + "integrity": "sha512-Dk3ozenBWgt9nFSYOT4N82urNW/JhiMszfFq6zLt3jUp0N7EJ9d2XO81hclM59BhjIdGWb6drTe96NvtbabVLQ==", + "peerDependencies": { + "@deck.gl/core": "^8.0.0" + } }, "node_modules/@deck.gl/json": { - "version": "7.1.11", - "resolved": "https://registry.npmjs.org/@deck.gl/json/-/json-7.1.11.tgz", - "integrity": "sha512-obYAXq5VZ0qCTVS8hopS64aXGicUeBNg0/03AAfo+Q5z62cNqagAktGKVZMUsJ13bV8CPohJ2zRWMXO+mAJtew==", + "version": "8.5.2", + "resolved": "https://registry.npmjs.org/@deck.gl/json/-/json-8.5.2.tgz", + "integrity": "sha512-lVS16bvPfLUSidgBURZvGbWEjgK8GjLWlp1iGuLvua2W6TnWIyiKa6a3XoebgeXd8kqwSbQxhNnuSVPX+Di6Rg==", "dependencies": { - "d3-dsv": "^1.0.8" + "d3-dsv": "^1.0.8", + "expression-eval": "^2.0.0" + }, + "peerDependencies": { + "@deck.gl/core": "^8.0.0" } }, "node_modules/@deck.gl/layers": { - "version": "7.1.11", - "resolved": "https://registry.npmjs.org/@deck.gl/layers/-/layers-7.1.11.tgz", - "integrity": "sha512-hOylm7Pf3CSvqpDoiCJLnqLAU3PAePISskJ5jjhpXtgHBrm1/Gk4boP4/7t7kFZdbSvVIXin13pPRbT0SWCRPw==", + "version": "8.5.2", + "resolved": "https://registry.npmjs.org/@deck.gl/layers/-/layers-8.5.2.tgz", + "integrity": "sha512-HmpE3qf9CI7sU/xa2DMCNg31pzpzK5XuUHyC70dsLq8AV7Sm3vZQz17KMU/CWSZpVr7yQ8uxTeSQARiv/zeOFQ==", "dependencies": { - "@loaders.gl/core": "^1.0.3", - "@loaders.gl/images": "^1.0.3", + "@loaders.gl/images": "^3.0.6", "@mapbox/tiny-sdf": "^1.1.0", + "@math.gl/polygon": "^3.5.3", "earcut": "^2.0.6" + }, + "peerDependencies": { + "@deck.gl/core": "^8.0.0", + "@loaders.gl/core": "^3.0.0" } }, "node_modules/@deck.gl/mapbox": { - "version": "7.1.11", - "resolved": "https://registry.npmjs.org/@deck.gl/mapbox/-/mapbox-7.1.11.tgz", - "integrity": "sha512-V4cc9vwXzAOBtWV8x+WtvPVXElGChogkvQketeR2uhz6wIHuH+3sBBRg/Ma476w/II+DKjeHg2AzAZeX3SK7yQ==" + "version": "8.5.2", + "resolved": "https://registry.npmjs.org/@deck.gl/mapbox/-/mapbox-8.5.2.tgz", + "integrity": "sha512-nMpzfdPFBVthT+EMgIcKo4YO6bZCqADQtqnxIFtfofZIiKS6R5OSuJ3sXPSNZ9ReCJGzdmndEz7/Qtm9Sia/bA==", + "peerDependencies": { + "@deck.gl/core": "^8.0.0" + } }, "node_modules/@deck.gl/mesh-layers": { - "version": "7.1.11", - "resolved": "https://registry.npmjs.org/@deck.gl/mesh-layers/-/mesh-layers-7.1.11.tgz", - "integrity": "sha512-rI8ffUNh7ac2GpMcGLEiKyRarOPeLfVRlMRKjl9LXU61Wgx6DaHqsMmeqxzjoXEzgiRlY/XgCjepVg0dY6btlQ==", + "version": "8.5.2", + "resolved": "https://registry.npmjs.org/@deck.gl/mesh-layers/-/mesh-layers-8.5.2.tgz", + "integrity": "sha512-dUfQyGjm5CYQg9AQdRsGtEEXGSGHxifPlws0zWWoj1r757wjqM0aZ663TUJEsJQDTLNOvbBLGTiuFeCBUoKO4Q==", "dependencies": { - "@loaders.gl/core": "^1.0.3", - "@loaders.gl/images": "^1.0.3" + "@loaders.gl/gltf": "^3.0.6", + "@luma.gl/experimental": "^8.5.4", + "@luma.gl/shadertools": "^8.5.4" + }, + "peerDependencies": { + "@deck.gl/core": "^8.0.0" } }, "node_modules/@deck.gl/react": { - "version": "7.1.11", - "resolved": "https://registry.npmjs.org/@deck.gl/react/-/react-7.1.11.tgz", - "integrity": "sha512-WUzxhvM3jZIZkBAQgdQR+tFBAVDm5opLCKMWI9YkJUsdJzdv9uwiWCsk3Se1pCTFIa5Asb8U6YAi1CHl+OOFyA==", + "version": "8.5.2", + "resolved": "https://registry.npmjs.org/@deck.gl/react/-/react-8.5.2.tgz", + "integrity": "sha512-h7AJ9nPY1PTjrAVP7T1fvWDChWZrVOsEfYIoEP4W6ILSjvDqEQfVL0+9RhjUwQV2nKrg0QmpqCmbfOrgKQQbYw==", "dependencies": { "prop-types": "^15.6.0" + }, + "peerDependencies": { + "@deck.gl/core": "^8.0.0", + "react": ">=16.3", + "react-dom": ">=16.3" } }, "node_modules/@emotion/babel-plugin": { @@ -5349,93 +5453,227 @@ "node": ">=8" } }, + "node_modules/@loaders.gl/3d-tiles": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/@loaders.gl/3d-tiles/-/3d-tiles-3.0.8.tgz", + "integrity": "sha512-jZeOyDPGD2wEkTLW4Do9A4UUQ+OGjhhNXztB0AsttZ69OpkmsxJXb76xxwevf+eThrsTgSTjZ06eC5DHX0kyXA==", + "dependencies": { + "@loaders.gl/core": "3.0.8", + "@loaders.gl/draco": "3.0.8", + "@loaders.gl/gltf": "3.0.8", + "@loaders.gl/loader-utils": "3.0.8", + "@loaders.gl/math": "3.0.8", + "@loaders.gl/tiles": "3.0.8", + "@math.gl/core": "^3.5.1", + "@math.gl/geospatial": "^3.5.1" + } + }, "node_modules/@loaders.gl/core": { - "version": "1.3.7", - "resolved": "https://registry.npmjs.org/@loaders.gl/core/-/core-1.3.7.tgz", - "integrity": "sha512-dFZkJQc+i2PoqlBMz/aO8Gnn0y6ICafQp8u6cTpCm96h/HHulE8qDBodQlHGHn9EMJDSgVl/zjni+QhqIK31dg==", + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/@loaders.gl/core/-/core-3.0.8.tgz", + "integrity": "sha512-FIfbhMkoRX2JonEHXHgClC7jwOSsEwvvmjlaTMRAY+gFKvJPGmegkp4VgUZquLFf6GedJt/1TuMMvAX6gdq1pg==", "dependencies": { - "@babel/runtime": "^7.3.1" + "@babel/runtime": "^7.3.1", + "@loaders.gl/loader-utils": "3.0.8", + "@loaders.gl/worker-utils": "3.0.8", + "probe.gl": "^3.4.0" + } + }, + "node_modules/@loaders.gl/draco": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/@loaders.gl/draco/-/draco-3.0.8.tgz", + "integrity": "sha512-ZCXzXNHWQ7H0qk/kC+rWzjMWjLzZGzQcDbdpIuy8xJdp4rTpmMkLUseFPby8vhkmIaqxWPwPB6mx/vM7L6JENg==", + "dependencies": { + "@babel/runtime": "^7.3.1", + "@loaders.gl/loader-utils": "3.0.8", + "@loaders.gl/schema": "3.0.8", + "@loaders.gl/worker-utils": "3.0.8", + "draco3d": "1.4.1" + } + }, + "node_modules/@loaders.gl/gis": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/@loaders.gl/gis/-/gis-3.0.8.tgz", + "integrity": "sha512-7NL+lIb7NezlMupYskVil6M3RZunXJl+TyaVAW82GLbzPSOq+m/G7h3+z0GBa8iv/U/I+cB5BhSN+GZmvFwqEA==", + "dependencies": { + "@loaders.gl/loader-utils": "3.0.8", + "@loaders.gl/schema": "3.0.8", + "@mapbox/vector-tile": "^1.3.1", + "pbf": "^3.2.1" + } + }, + "node_modules/@loaders.gl/gltf": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/@loaders.gl/gltf/-/gltf-3.0.8.tgz", + "integrity": "sha512-4PXWTlqyvlbZE2Vp4iQ+Y87ZO1WuRvSlbImDhygd0hoINfmJ9ObxrFS3yJcpJTu007nWxXorNVEOKyuoo+4Iyw==", + "dependencies": { + "@loaders.gl/core": "3.0.8", + "@loaders.gl/draco": "3.0.8", + "@loaders.gl/images": "3.0.8", + "@loaders.gl/loader-utils": "3.0.8" } }, "node_modules/@loaders.gl/images": { - "version": "1.3.7", - "resolved": "https://registry.npmjs.org/@loaders.gl/images/-/images-1.3.7.tgz", - "integrity": "sha512-TKqW94vjvWc4RIChhr0Yx6HaVTe8K6h6GFeXcahsKeCxq9/k2qpcigRkXfmb6/37dkp2Qy5COHp73ECgN/q+NA==" + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/@loaders.gl/images/-/images-3.0.8.tgz", + "integrity": "sha512-rO2cIYJYlMs/uO9YSoF4/BEA4p/9xQ3gHZ1sIJkPYVnDqzpbu8nvUjWTQqIdL/MkQBTW8tz3twCdM+B6G9Fa2w==", + "dependencies": { + "@loaders.gl/loader-utils": "3.0.8" + } }, - "node_modules/@luma.gl/constants": { - "version": "7.3.2", - "resolved": "https://registry.npmjs.org/@luma.gl/constants/-/constants-7.3.2.tgz", - "integrity": "sha512-hr6JOOwsGPjjoHnil4sQ6AWsc8P6XXYtRL10TwNYfFTcNxrhSrjQvutYoCzXHH5U0vfHBfPMMUyLASK9FqiHOA==" + "node_modules/@loaders.gl/loader-utils": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/@loaders.gl/loader-utils/-/loader-utils-3.0.8.tgz", + "integrity": "sha512-PW1WyyQ+LXkqoGHBZHsmfNQkKiLAYf1gok+kHnHvY9fCzhJeA1iTNEUKPXGXKgS00m/k5cBTkOWAaOG9KRvBCQ==", + "dependencies": { + "@babel/runtime": "^7.3.1", + "@loaders.gl/worker-utils": "3.0.8", + "@probe.gl/stats": "^3.4.0" + } }, - "node_modules/@luma.gl/core": { - "version": "7.3.2", - "resolved": "https://registry.npmjs.org/@luma.gl/core/-/core-7.3.2.tgz", - "integrity": "sha512-XyQPSUJRkZcc//gVX0AgjLLNTkCOO68NRnm7RkIhikRBEUdovb4IOcpmWMCB1/Gyj4hzg/Z1FOAVT4pG1E+agw==", + "node_modules/@loaders.gl/math": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/@loaders.gl/math/-/math-3.0.8.tgz", + "integrity": "sha512-jfFpxxr4Bq5JfOPqLVJc4JJGoGGvVTOCWiJhnTtSAKhaNSwldmNWaZ0w8E2nlgPKPMAHiTRKOQnd9sSY5m66Cw==", "dependencies": { - "@babel/runtime": "^7.0.0", - "@luma.gl/constants": "7.3.2", - "@luma.gl/shadertools": "7.3.2", - "@luma.gl/webgl": "7.3.2", - "@luma.gl/webgl-state-tracker": "7.3.2", - "@luma.gl/webgl2-polyfill": "7.3.2", - "math.gl": "^3.0.0", - "probe.gl": "^3.1.1", - "seer": "^0.2.4" + "@loaders.gl/images": "3.0.8", + "@loaders.gl/loader-utils": "3.0.8", + "@math.gl/core": "^3.5.1" } }, - "node_modules/@luma.gl/core/node_modules/math.gl": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/math.gl/-/math.gl-3.4.1.tgz", - "integrity": "sha512-D33ZXryVFcHu1YJ+fgcNp2MkyK+mEfHesHMdQUZBz2hFqIsAwXovM1sJ+0rTcs8IyTFmuRJ2ayHf1igEJEOM2g==", + "node_modules/@loaders.gl/mvt": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/@loaders.gl/mvt/-/mvt-3.0.8.tgz", + "integrity": "sha512-Jk1QTHgpxMsUT01w5IJJ2en9qq0yOZcL2wGXVc7CFp2h6inB22rC3drUwq1mUNGe6iy3EWIo7EeJVd9B+5JyTQ==", "dependencies": { - "@math.gl/core": "3.4.1" + "@loaders.gl/gis": "3.0.8", + "@loaders.gl/loader-utils": "3.0.8", + "@math.gl/polygon": "^3.5.1", + "pbf": "^3.2.1" } }, - "node_modules/@luma.gl/shadertools": { - "version": "7.3.2", - "resolved": "https://registry.npmjs.org/@luma.gl/shadertools/-/shadertools-7.3.2.tgz", - "integrity": "sha512-GiOZTvdEr164zYFy1DNRc7mzduSWLNJ34s+YbkJ/0i07E6tK7gHgM29QNCZ/gROvUDDJ5CHxngZqGkb+XquOMQ==", + "node_modules/@loaders.gl/schema": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/@loaders.gl/schema/-/schema-3.0.8.tgz", + "integrity": "sha512-yne5WE7fZZWFl2zF8fzDlYhPVJua6h6mTCSmlQ5pryaMXTZS9mfzXXIFWRL3kswqnQTu/QNFdyFj1mP0haF24w==", + "dependencies": { + "@types/geojson": "^7946.0.7", + "apache-arrow": "^4.0.0", + "d3-dsv": "^1.2.0" + } + }, + "node_modules/@loaders.gl/terrain": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/@loaders.gl/terrain/-/terrain-3.0.8.tgz", + "integrity": "sha512-MtOAYEB/xJB4CN4B0YNPkO4v1ZY332joxiOHQI1x37x4sWVAqOrKLr9jB42sZCB8aINi2WMWGiErtf9wh9L5Pg==", + "dependencies": { + "@babel/runtime": "^7.3.1", + "@loaders.gl/loader-utils": "3.0.8", + "@loaders.gl/schema": "3.0.8", + "@mapbox/martini": "^0.2.0" + } + }, + "node_modules/@loaders.gl/tiles": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/@loaders.gl/tiles/-/tiles-3.0.8.tgz", + "integrity": "sha512-Rc+yHFdQg2sYmcYkwvszukFWdm9EW354F9HUR7y/oauos6tsdo4YTj31zgytaYR63/EqWQ7kwI29/eePEcutzg==", + "dependencies": { + "@loaders.gl/core": "3.0.8", + "@loaders.gl/loader-utils": "3.0.8", + "@loaders.gl/math": "3.0.8", + "@math.gl/core": "^3.5.1", + "@math.gl/culling": "^3.5.1", + "@math.gl/geospatial": "^3.5.1", + "@math.gl/web-mercator": "^3.5.1", + "@probe.gl/stats": "^3.4.0" + } + }, + "node_modules/@loaders.gl/worker-utils": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/@loaders.gl/worker-utils/-/worker-utils-3.0.8.tgz", + "integrity": "sha512-Pg72HuXPcL725TrOlOr83xloVUHj6OMWmno1dI8ccuqfOBsgoRjxNZrcSvwBzfK8tFCzuN2X30I+mHl3BkuYLw==", + "dependencies": { + "@babel/runtime": "^7.3.1" + } + }, + "node_modules/@luma.gl/constants": { + "version": "8.5.4", + "resolved": "https://registry.npmjs.org/@luma.gl/constants/-/constants-8.5.4.tgz", + "integrity": "sha512-lrA4ja92om/gDHYOvM9itL5S7FVzjKulyknDz6S+Y7gmgHgXk2ln1Xar5zUCsLnhAYx4glHITXGH5Y5rdWgT1Q==" + }, + "node_modules/@luma.gl/core": { + "version": "8.5.4", + "resolved": "https://registry.npmjs.org/@luma.gl/core/-/core-8.5.4.tgz", + "integrity": "sha512-+saDz1D3mcPd53vgbG60ryg1w5CF9Z2wdakKHzR810VoJLw97t4aNdg/eNgyWOvbOHxaKJBPm8K0sGjej67+jw==", "dependencies": { "@babel/runtime": "^7.0.0", - "math.gl": "^3.0.0" + "@luma.gl/constants": "8.5.4", + "@luma.gl/engine": "8.5.4", + "@luma.gl/gltools": "8.5.4", + "@luma.gl/shadertools": "8.5.4", + "@luma.gl/webgl": "8.5.4" } }, - "node_modules/@luma.gl/shadertools/node_modules/math.gl": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/math.gl/-/math.gl-3.4.1.tgz", - "integrity": "sha512-D33ZXryVFcHu1YJ+fgcNp2MkyK+mEfHesHMdQUZBz2hFqIsAwXovM1sJ+0rTcs8IyTFmuRJ2ayHf1igEJEOM2g==", + "node_modules/@luma.gl/engine": { + "version": "8.5.4", + "resolved": "https://registry.npmjs.org/@luma.gl/engine/-/engine-8.5.4.tgz", + "integrity": "sha512-Sfv972IzvR9s9kKWugs67XQUh9jC0e/PpBrzvyGVnPU4XvFq42RZVF73pzEklVU6AlpR8Zg5CPtxGdhyOHtT7w==", "dependencies": { - "@math.gl/core": "3.4.1" + "@babel/runtime": "^7.0.0", + "@luma.gl/constants": "8.5.4", + "@luma.gl/gltools": "8.5.4", + "@luma.gl/shadertools": "8.5.4", + "@luma.gl/webgl": "8.5.4", + "@math.gl/core": "^3.5.0", + "probe.gl": "^3.4.0" } }, - "node_modules/@luma.gl/webgl": { - "version": "7.3.2", - "resolved": "https://registry.npmjs.org/@luma.gl/webgl/-/webgl-7.3.2.tgz", - "integrity": "sha512-eWoPPRJOF5xSpqgggdwspsm8exclwxz20c8vqu8D1b3LJTY7cEpq57CMLvITHcJMMJ834TX/r598efTcF76lpw==", + "node_modules/@luma.gl/experimental": { + "version": "8.5.4", + "resolved": "https://registry.npmjs.org/@luma.gl/experimental/-/experimental-8.5.4.tgz", + "integrity": "sha512-09waqRhgIrw+Sq0/in4tw4jPag5YsFfV1nEHJaLAg5RFv92S53IEubSJgkuG02HoOBkPxQ7KYvs9VNmriisnYg==", + "dependencies": { + "@luma.gl/constants": "8.5.4", + "@math.gl/core": "^3.5.0", + "earcut": "^2.0.6" + }, + "peerDependencies": { + "@loaders.gl/gltf": "^3.0.0", + "@loaders.gl/images": "^3.0.0", + "@luma.gl/engine": "^8.4.0", + "@luma.gl/gltools": "^8.4.0", + "@luma.gl/shadertools": "^8.4.0", + "@luma.gl/webgl": "^8.4.0" + } + }, + "node_modules/@luma.gl/gltools": { + "version": "8.5.4", + "resolved": "https://registry.npmjs.org/@luma.gl/gltools/-/gltools-8.5.4.tgz", + "integrity": "sha512-JotiPuymQz2Xc41AYlS2moJC/EHxU+OX/OMKi0+/MeOlEFLsdochgTA0I64j8yofLTXdeiGCneGtD1Ao8fk+bw==", "dependencies": { "@babel/runtime": "^7.0.0", - "@luma.gl/constants": "7.3.2", - "@luma.gl/webgl-state-tracker": "7.3.2", - "@luma.gl/webgl2-polyfill": "7.3.2", - "probe.gl": "^3.1.1" + "@luma.gl/constants": "8.5.4", + "probe.gl": "^3.4.0" } }, - "node_modules/@luma.gl/webgl-state-tracker": { - "version": "7.3.2", - "resolved": "https://registry.npmjs.org/@luma.gl/webgl-state-tracker/-/webgl-state-tracker-7.3.2.tgz", - "integrity": "sha512-0LuK3veReSm2UPOiDwC2CRDeE2xk4irqXdhyFO0WSAU1w+YhzbD1hGbjizGczvgfkbz8dFl9h98LbbH75efcKw==", + "node_modules/@luma.gl/shadertools": { + "version": "8.5.4", + "resolved": "https://registry.npmjs.org/@luma.gl/shadertools/-/shadertools-8.5.4.tgz", + "integrity": "sha512-rwLBLrACi75aWnuJm8rVKCQnJR2sMTCxHuexfjHJ7Uecl0vVcVJZT7c9EnCFaz5LUTNbdupvuhq0SKNckKiKmw==", "dependencies": { "@babel/runtime": "^7.0.0", - "@luma.gl/constants": "7.3.2" + "@math.gl/core": "^3.5.0" } }, - "node_modules/@luma.gl/webgl2-polyfill": { - "version": "7.3.2", - "resolved": "https://registry.npmjs.org/@luma.gl/webgl2-polyfill/-/webgl2-polyfill-7.3.2.tgz", - "integrity": "sha512-PMt5xqQ+u7tIqfUaL3s4nuWl604WFNcl1F1ohSUFeEzIIuxFiF6gsdEEvC5VqGoMFxI8T4FOTSeHYIr6uP4+4w==", + "node_modules/@luma.gl/webgl": { + "version": "8.5.4", + "resolved": "https://registry.npmjs.org/@luma.gl/webgl/-/webgl-8.5.4.tgz", + "integrity": "sha512-dWy4dhTbtvDO9zQBdx1Yb+DxNx/1JWV9rhhJxJUtTKbGZSX0RjkASTT6GBWMl5jrH1JYJefS1wswHmmPVXjK0Q==", "dependencies": { "@babel/runtime": "^7.0.0", - "@luma.gl/constants": "7.3.2" + "@luma.gl/constants": "8.5.4", + "@luma.gl/gltools": "8.5.4", + "probe.gl": "^3.4.0" } }, "node_modules/@mapbox/geojson-area": { @@ -5478,15 +5716,20 @@ "resolved": "https://registry.npmjs.org/@mapbox/mapbox-gl-supported/-/mapbox-gl-supported-1.5.0.tgz", "integrity": "sha512-/PT1P6DNf7vjEEiPkVIRJkvibbqWtqnyGaBz3nfRdcxclNSnSdaLU5tfAgcD7I8Yt5i+L19s406YLl1koLnLbg==" }, + "node_modules/@mapbox/martini": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/@mapbox/martini/-/martini-0.2.0.tgz", + "integrity": "sha512-7hFhtkb0KTLEls+TRw/rWayq5EeHtTaErgm/NskVoXmtgAQu/9D299aeyj6mzAR/6XUnYRp2lU+4IcrYRFjVsQ==" + }, "node_modules/@mapbox/point-geometry": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/@mapbox/point-geometry/-/point-geometry-0.1.0.tgz", "integrity": "sha1-ioP5M1x4YO/6Lu7KJUMyqgru2PI=" }, "node_modules/@mapbox/tiny-sdf": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@mapbox/tiny-sdf/-/tiny-sdf-1.1.1.tgz", - "integrity": "sha512-Ihn1nZcGIswJ5XGbgFAvVumOgWpvIjBX9jiRlIl46uQG9vJOF51ViBYHF95rEZupuyQbEmhLaDPLQlU7fUTsBg==" + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/@mapbox/tiny-sdf/-/tiny-sdf-1.2.5.tgz", + "integrity": "sha512-cD8A/zJlm6fdJOk6DqPUV8mcpyJkRz2x2R+/fYcWDYG3oWbG7/L7Yl/WqQ1VZCjnL9OTIMAn6c+BC5Eru4sQEw==" }, "node_modules/@mapbox/unitbezier": { "version": "0.0.0", @@ -5510,18 +5753,46 @@ } }, "node_modules/@math.gl/core": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/@math.gl/core/-/core-3.4.1.tgz", - "integrity": "sha512-miAZL/WPU0B5hKrcg1K2nPU2GnOK6X84bwLoD0eTt2n7qT46ffh51Xu21V9kQp/cisE3l1ypukqSV/VHeaNxhQ==", + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/@math.gl/core/-/core-3.5.3.tgz", + "integrity": "sha512-TaSnvG0qFh1VxeNW5L58jSx0nJUMWMpUl6zo6Z3ScQzFySG5cicGOBzk/D40RkIZWPazCKCZ+ZThg5npSK9y3g==", + "dependencies": { + "@babel/runtime": "^7.12.0", + "gl-matrix": "^3.0.0" + } + }, + "node_modules/@math.gl/culling": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/@math.gl/culling/-/culling-3.5.3.tgz", + "integrity": "sha512-ABpAcrvoIOLSm1EUkwgDem4RfO28HWPBs/+taZ/ZSpJG6KiVPklpKU1NCK+05HuJStkpFZ+XlWtehWU6FAMCyA==", "dependencies": { "@babel/runtime": "^7.12.0", + "@math.gl/core": "3.5.3", "gl-matrix": "^3.0.0" } }, + "node_modules/@math.gl/geospatial": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/@math.gl/geospatial/-/geospatial-3.5.3.tgz", + "integrity": "sha512-cnc8VMQrt30JmlG200VDJmmvSjaGW57gY9KEZ+raapxyyFyfDNuAuIrIxe+zbK66FbvFWTbJlDaNmKqVG+ohyw==", + "dependencies": { + "@babel/runtime": "^7.12.0", + "@math.gl/core": "3.5.3", + "gl-matrix": "^3.0.0" + } + }, + "node_modules/@math.gl/polygon": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/@math.gl/polygon/-/polygon-3.5.3.tgz", + "integrity": "sha512-VktscmyQg/Rd56nJk0Nj/UyvnPDbsnZNMWCdl3G5AYenYzLWy6h4FEWhLx8pD+Xw7VuFot8LR4WAK2TPzXzrWw==", + "dependencies": { + "@math.gl/core": "3.5.3" + } + }, "node_modules/@math.gl/web-mercator": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/@math.gl/web-mercator/-/web-mercator-3.4.1.tgz", - "integrity": "sha512-5LAVmo5U25GY5YIxbI3D0J7r97B9AM5pAcWxnF9YhJx44DSVAYfMdiSISOfS+ivKuBFX44mFZvV9j75QY5aDkQ==", + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/@math.gl/web-mercator/-/web-mercator-3.5.3.tgz", + "integrity": "sha512-WZE9ALeTS4n3HDgkqTxcNLBU7DL0mjmPXSrcqSZIUeDY00+LCtNvMQWUAwqolpB7nD71vD6HLW8delzVuy4teA==", "dependencies": { "@babel/runtime": "^7.12.0", "gl-matrix": "^3.0.0" @@ -6065,9 +6336,9 @@ "dev": true }, "node_modules/@probe.gl/stats": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/@probe.gl/stats/-/stats-3.3.0.tgz", - "integrity": "sha512-CV4c3EgallqZTO88u34/u9L5asL0nCVP1BEkb4qcXlh8Qz2Vmygbyjz1ViQsct6rSi2lJ52lo6W0PnlpZJJvcA==", + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/@probe.gl/stats/-/stats-3.4.0.tgz", + "integrity": "sha512-Gl37r9qGuiKadIvTZdSZvzCNOttJYw6RcY1oT0oDuB8r2uhuZAdSMQRQTy9FTinp6MY6O9wngGnV6EpQ8wSBAw==", "dependencies": { "@babel/runtime": "^7.0.0" } @@ -11688,25 +11959,26 @@ } }, "node_modules/@superset-ui/chart-controls": { - "version": "0.17.79", - "resolved": "https://registry.npmjs.org/@superset-ui/chart-controls/-/chart-controls-0.17.79.tgz", - "integrity": "sha512-Mdgi6/ZYZHrDSyA88+JJZGyp2g0ZVM/2n1aNkKk9pQYr4E7W8OcvFX4HksjyWvicEsR8sQR3q3PczHUuwbm5OA==", + "version": "0.17.84", + "resolved": "https://registry.npmjs.org/@superset-ui/chart-controls/-/chart-controls-0.17.84.tgz", + "integrity": "sha512-tLbTdYegaez2D1N3eIHIkfpWyI3i/SoLQfY7asV1YadKcSZfff1BpSBDV2vbGom1hehsftD09sIV3uHm4wjkAg==", "dependencies": { "@react-icons/all-files": "^4.1.0", - "@superset-ui/core": "0.17.75", + "@superset-ui/core": "0.17.81", "lodash": "^4.17.15", "prop-types": "^15.7.2" }, "peerDependencies": { + "@emotion/react": "^11.1.5", "@types/react": "*", "antd": "^4.9.4", "react": "^16.13.1" } }, "node_modules/@superset-ui/core": { - "version": "0.17.75", - "resolved": "https://registry.npmjs.org/@superset-ui/core/-/core-0.17.75.tgz", - "integrity": "sha512-9g9YiQzsI4PFi9963DnizVghuejpHKSnbjGyyYkZa3SDSqTMLFkj4tuBd/s+Skayoo1DNoxzD2ZMMw41D81RcA==", + "version": "0.17.81", + "resolved": "https://registry.npmjs.org/@superset-ui/core/-/core-0.17.81.tgz", + "integrity": "sha512-CaDihqqwFnqtO9yWHxPbZh3MKTot66Zd27ifdIYQCVEMQwz5OpP6zUbULekq7NAbPMHwf7Ju3FOzN0uEzWwSmw==", "dependencies": { "@babel/runtime": "^7.1.2", "@emotion/styled": "^11.3.0", @@ -11828,12 +12100,12 @@ } }, "node_modules/@superset-ui/legacy-plugin-chart-calendar": { - "version": "0.17.79", - "resolved": "https://registry.npmjs.org/@superset-ui/legacy-plugin-chart-calendar/-/legacy-plugin-chart-calendar-0.17.79.tgz", - "integrity": "sha512-hgKVzR0m0eS6hP2BTk7f3dY/FnWDWKsNDmSie9TbFn04XdOYnf4H6p253rf+sI0TtQ6/G2DM39nKxUehm8wJfQ==", + "version": "0.17.84", + "resolved": "https://registry.npmjs.org/@superset-ui/legacy-plugin-chart-calendar/-/legacy-plugin-chart-calendar-0.17.84.tgz", + "integrity": "sha512-xalLL56JnXPxlDMjLxJqwQMy4Myaq1uOww6dyOBfgxEH1eat+V0tv4Aoh9i5RCYnafXymKTX+oqS0BkUYebwPQ==", "dependencies": { - "@superset-ui/chart-controls": "0.17.79", - "@superset-ui/core": "0.17.75", + "@superset-ui/chart-controls": "0.17.84", + "@superset-ui/core": "0.17.81", "d3-array": "^2.0.3", "d3-selection": "^1.4.0", "d3-tip": "^0.9.1", @@ -11852,24 +12124,24 @@ } }, "node_modules/@superset-ui/legacy-plugin-chart-chord": { - "version": "0.17.79", - "resolved": "https://registry.npmjs.org/@superset-ui/legacy-plugin-chart-chord/-/legacy-plugin-chart-chord-0.17.79.tgz", - "integrity": "sha512-okUKLettzXkqkcZ4GpeA8IchK6FMrb9CjuRYNB8U3jdXypNdwbYN1EKkuAm4H0AUvk3oBhr1k/2BTkG1y8UGeg==", + "version": "0.17.84", + "resolved": "https://registry.npmjs.org/@superset-ui/legacy-plugin-chart-chord/-/legacy-plugin-chart-chord-0.17.84.tgz", + "integrity": "sha512-7jhc+/iWrl6brVqQDKxEtNq3btPgGVtidzuz1LBLNz6Nc0EwMvBVAppnZvwvVgBqdZQ2T0C56wZRqwDgmj/Lxw==", "dependencies": { - "@superset-ui/chart-controls": "0.17.79", - "@superset-ui/core": "0.17.75", + "@superset-ui/chart-controls": "0.17.84", + "@superset-ui/core": "0.17.81", "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.79", - "resolved": "https://registry.npmjs.org/@superset-ui/legacy-plugin-chart-country-map/-/legacy-plugin-chart-country-map-0.17.79.tgz", - "integrity": "sha512-xQFCQ5Baf14HU/NOCLcCjRobGz+pYrjkz3aYXuj+db6xjz1wVdZUBtLM2atD7TzHM7Yn5jHdpQa8XRUUHQc2cg==", + "version": "0.17.84", + "resolved": "https://registry.npmjs.org/@superset-ui/legacy-plugin-chart-country-map/-/legacy-plugin-chart-country-map-0.17.84.tgz", + "integrity": "sha512-POFH/ZfPKOiNKA1BbeU/5vlwfU6BALph/XsQacP4YfBD7xVFGEZWDYKWH/aZky+GLCZWIp6v7h7EVzyNmC8GJQ==", "dependencies": { - "@superset-ui/chart-controls": "0.17.79", - "@superset-ui/core": "0.17.75", + "@superset-ui/chart-controls": "0.17.84", + "@superset-ui/core": "0.17.81", "d3": "^3.5.17", "d3-array": "^2.0.3", "prop-types": "^15.6.2" @@ -11884,13 +12156,13 @@ } }, "node_modules/@superset-ui/legacy-plugin-chart-event-flow": { - "version": "0.17.79", - "resolved": "https://registry.npmjs.org/@superset-ui/legacy-plugin-chart-event-flow/-/legacy-plugin-chart-event-flow-0.17.79.tgz", - "integrity": "sha512-hC0sen6ojNaZ+WIOtzEjEafPK2uJDUP3yF1dx9Z2QuoYATHthz74X5KHKWit/l5qi/R4jEH5ORw4M4qAFytwDw==", + "version": "0.17.84", + "resolved": "https://registry.npmjs.org/@superset-ui/legacy-plugin-chart-event-flow/-/legacy-plugin-chart-event-flow-0.17.84.tgz", + "integrity": "sha512-7zew1e5FRPUt06umJez3+zau/0LXtWWWDyIvy/0DiSu5i/Ds4zhru5ZmLTXhOZ6heU5BEGf/cfIV1G4bF6S00A==", "dependencies": { "@data-ui/event-flow": "^0.0.84", - "@superset-ui/chart-controls": "0.17.79", - "@superset-ui/core": "0.17.75", + "@superset-ui/chart-controls": "0.17.84", + "@superset-ui/core": "0.17.81", "prop-types": "^15.6.2" }, "peerDependencies": { @@ -11898,12 +12170,12 @@ } }, "node_modules/@superset-ui/legacy-plugin-chart-force-directed": { - "version": "0.17.79", - "resolved": "https://registry.npmjs.org/@superset-ui/legacy-plugin-chart-force-directed/-/legacy-plugin-chart-force-directed-0.17.79.tgz", - "integrity": "sha512-nhXyFgXuLqxURu5qFHc66NaD8T/8nBmNQEzDjJ+o7qrrMJeldgzAEjZGjoN1O014qiktA/D+nNKtyVmGeGRbIg==", + "version": "0.17.84", + "resolved": "https://registry.npmjs.org/@superset-ui/legacy-plugin-chart-force-directed/-/legacy-plugin-chart-force-directed-0.17.84.tgz", + "integrity": "sha512-GBfTI+2vfr9Y4vbT0azKqmdUJ32UGTRpw1PmuHTjw/ZQjoRts8Hyyw12o6zs0Ifj+0tIt5bqxbuaZgxuzEd/Pw==", "dependencies": { - "@superset-ui/chart-controls": "0.17.79", - "@superset-ui/core": "0.17.75", + "@superset-ui/chart-controls": "0.17.84", + "@superset-ui/core": "0.17.81", "d3": "^3.5.17", "prop-types": "^15.7.2" }, @@ -11912,12 +12184,12 @@ } }, "node_modules/@superset-ui/legacy-plugin-chart-heatmap": { - "version": "0.17.79", - "resolved": "https://registry.npmjs.org/@superset-ui/legacy-plugin-chart-heatmap/-/legacy-plugin-chart-heatmap-0.17.79.tgz", - "integrity": "sha512-EkcK1d/1F91Eu3+/7RqeUuBJgYebaFATI+nrRmcZ9S80V+iEw9V/9d9dm7UetSxMA2afcK2gNrvTcZ86x5z1Sw==", + "version": "0.17.84", + "resolved": "https://registry.npmjs.org/@superset-ui/legacy-plugin-chart-heatmap/-/legacy-plugin-chart-heatmap-0.17.84.tgz", + "integrity": "sha512-ZJ3BBGRL9jz8SM9UZdKKhHseZ9IZqMVfH4J/IcjeOxvNq2a0Y544WILrzmUR0DgvO++Cy7cV0VSrcSkhy/mrQw==", "dependencies": { - "@superset-ui/chart-controls": "0.17.79", - "@superset-ui/core": "0.17.75", + "@superset-ui/chart-controls": "0.17.84", + "@superset-ui/core": "0.17.81", "d3": "^3.5.17", "d3-svg-legend": "^1.x", "d3-tip": "^0.9.1", @@ -11925,14 +12197,14 @@ } }, "node_modules/@superset-ui/legacy-plugin-chart-histogram": { - "version": "0.17.79", - "resolved": "https://registry.npmjs.org/@superset-ui/legacy-plugin-chart-histogram/-/legacy-plugin-chart-histogram-0.17.79.tgz", - "integrity": "sha512-v9j3s11yqv5KgLwn7UIXoDzkBvkCnGt94l8Mh3QMWWfqSt2EENWVQSQ+yc9wV4ytpbIZepY+z8BDC6TWAiZdwg==", + "version": "0.17.84", + "resolved": "https://registry.npmjs.org/@superset-ui/legacy-plugin-chart-histogram/-/legacy-plugin-chart-histogram-0.17.84.tgz", + "integrity": "sha512-GaELpLkP9SFbPQnkzUte+fcKl2F++KEgEBINfS9Ek9pUMD1S/WlbevIEUUUSeAtI5rI89GN+0Qzi8MM0+D2WIw==", "dependencies": { "@data-ui/histogram": "^0.0.84", "@data-ui/theme": "^0.0.84", - "@superset-ui/chart-controls": "0.17.79", - "@superset-ui/core": "0.17.75", + "@superset-ui/chart-controls": "0.17.84", + "@superset-ui/core": "0.17.81", "@vx/legend": "^0.0.198", "@vx/responsive": "^0.0.199", "@vx/scale": "^0.0.197", @@ -12001,12 +12273,12 @@ } }, "node_modules/@superset-ui/legacy-plugin-chart-horizon": { - "version": "0.17.79", - "resolved": "https://registry.npmjs.org/@superset-ui/legacy-plugin-chart-horizon/-/legacy-plugin-chart-horizon-0.17.79.tgz", - "integrity": "sha512-rG+PBv6sPkDKQ1ycfusdgq3oUwv6cv1n4hIfoETelsSMqx2PNtwh4gWA4eWqBp2OJR59huAMuUzsvB3xdcNCJA==", + "version": "0.17.84", + "resolved": "https://registry.npmjs.org/@superset-ui/legacy-plugin-chart-horizon/-/legacy-plugin-chart-horizon-0.17.84.tgz", + "integrity": "sha512-9xm91qfW1OXOjTSvNoDXpkUqfsCU9wMttUihs2pdg0hbzpCI65+L5eysV11JzGS0uGOGKLDEOWoSpzmX/xVZvQ==", "dependencies": { - "@superset-ui/chart-controls": "0.17.79", - "@superset-ui/core": "0.17.75", + "@superset-ui/chart-controls": "0.17.84", + "@superset-ui/core": "0.17.81", "d3-array": "^2.0.3", "d3-scale": "^3.0.1", "prop-types": "^15.6.2" @@ -12036,12 +12308,12 @@ } }, "node_modules/@superset-ui/legacy-plugin-chart-map-box": { - "version": "0.17.79", - "resolved": "https://registry.npmjs.org/@superset-ui/legacy-plugin-chart-map-box/-/legacy-plugin-chart-map-box-0.17.79.tgz", - "integrity": "sha512-dlO+miiN9jnb3lCY1UwMSws/tr/wO6NBMRHeAzIh+j7I7qcDDtSuNnTG3kBc1LnvP6wqMhgCKU2e63K3aG0gYA==", + "version": "0.17.84", + "resolved": "https://registry.npmjs.org/@superset-ui/legacy-plugin-chart-map-box/-/legacy-plugin-chart-map-box-0.17.84.tgz", + "integrity": "sha512-vllEQe4HFTc5Rduac+klL97dcmPca/VDecos3v2nnkahNl447iuq+M08evfm2VnjXgD0QL4nLcliXwQjaZ2zsA==", "dependencies": { - "@superset-ui/chart-controls": "0.17.79", - "@superset-ui/core": "0.17.75", + "@superset-ui/chart-controls": "0.17.84", + "@superset-ui/core": "0.17.81", "immutable": "^3.8.2", "mapbox-gl": "^0.53.0", "prop-types": "^15.6.2", @@ -12062,12 +12334,12 @@ } }, "node_modules/@superset-ui/legacy-plugin-chart-paired-t-test": { - "version": "0.17.79", - "resolved": "https://registry.npmjs.org/@superset-ui/legacy-plugin-chart-paired-t-test/-/legacy-plugin-chart-paired-t-test-0.17.79.tgz", - "integrity": "sha512-KWJvuXyM6viUVrARD33tupIjV2L6UGXkp64o3SnRybCuXFUbrLYrCfRlbv+t0IaSt8QgYvM2qT7pCt8iQ5RzMg==", + "version": "0.17.84", + "resolved": "https://registry.npmjs.org/@superset-ui/legacy-plugin-chart-paired-t-test/-/legacy-plugin-chart-paired-t-test-0.17.84.tgz", + "integrity": "sha512-2e/UsUzRz4VUnb3q8fLNg/ZGm+6044eD3pnyCDL09Nke21BFDV6jwd3H93ryYJo89qKn3uJLPuDAvcsreN5j+w==", "dependencies": { - "@superset-ui/chart-controls": "0.17.79", - "@superset-ui/core": "0.17.75", + "@superset-ui/chart-controls": "0.17.84", + "@superset-ui/core": "0.17.81", "distributions": "^1.0.0", "prop-types": "^15.6.2", "reactable": "^1.1.0" @@ -12077,12 +12349,12 @@ } }, "node_modules/@superset-ui/legacy-plugin-chart-parallel-coordinates": { - "version": "0.17.79", - "resolved": "https://registry.npmjs.org/@superset-ui/legacy-plugin-chart-parallel-coordinates/-/legacy-plugin-chart-parallel-coordinates-0.17.79.tgz", - "integrity": "sha512-aliDFjhVuojAXkSeisMZ2uuRK++09A9aCchM1DTiHsI44ZT5GJoUi6Te5Rm/kNRKGyHfFjrXGJmJ3wbJaqxUOA==", + "version": "0.17.84", + "resolved": "https://registry.npmjs.org/@superset-ui/legacy-plugin-chart-parallel-coordinates/-/legacy-plugin-chart-parallel-coordinates-0.17.84.tgz", + "integrity": "sha512-p4OFm5jExsQz0uPMhUJ3K7Yp4mz4q99CMJDHNCWAsyYUmMQYSMcmUHBIBVFG0M8Y8oapnuLYvzJMl+ptbgr22A==", "dependencies": { - "@superset-ui/chart-controls": "0.17.79", - "@superset-ui/core": "0.17.75", + "@superset-ui/chart-controls": "0.17.84", + "@superset-ui/core": "0.17.81", "d3": "^3.5.17", "prop-types": "^15.7.2" }, @@ -12091,12 +12363,12 @@ } }, "node_modules/@superset-ui/legacy-plugin-chart-partition": { - "version": "0.17.79", - "resolved": "https://registry.npmjs.org/@superset-ui/legacy-plugin-chart-partition/-/legacy-plugin-chart-partition-0.17.79.tgz", - "integrity": "sha512-Xh7Ozb+IweXX2SVuQeXlXnVXw2neErTLJ2rFzZz4voyZvcGH93C/rfeKT25QQwButfcfFI6SIXCAXgIwJ0VsRw==", + "version": "0.17.84", + "resolved": "https://registry.npmjs.org/@superset-ui/legacy-plugin-chart-partition/-/legacy-plugin-chart-partition-0.17.84.tgz", + "integrity": "sha512-J+2cyTdIfPmjlSuNaEkdaQrmWU0LEtMoqxalDube9G+cdQrQsrWW99O141LQaaATlxBT88JRfAArN/13WfFieQ==", "dependencies": { - "@superset-ui/chart-controls": "0.17.79", - "@superset-ui/core": "0.17.75", + "@superset-ui/chart-controls": "0.17.84", + "@superset-ui/core": "0.17.81", "d3": "^3.5.17", "d3-hierarchy": "^1.1.8", "prop-types": "^15.6.2" @@ -12106,24 +12378,24 @@ } }, "node_modules/@superset-ui/legacy-plugin-chart-pivot-table": { - "version": "0.17.79", - "resolved": "https://registry.npmjs.org/@superset-ui/legacy-plugin-chart-pivot-table/-/legacy-plugin-chart-pivot-table-0.17.79.tgz", - "integrity": "sha512-GsVxldm0sRbd9jjGKmgaQ8uyqwlVBr/CYiifsxVRP3VcHRYaMX+1JgYMeko7mImbOpoo4GR1lnQvbzQCWH0yFg==", + "version": "0.17.84", + "resolved": "https://registry.npmjs.org/@superset-ui/legacy-plugin-chart-pivot-table/-/legacy-plugin-chart-pivot-table-0.17.84.tgz", + "integrity": "sha512-NXcaAzPEllzBYeQQVjexJUThgQxWRHY7mlGY2q3DDVCKq5EMakSucxv5Ma3vpBWD/nmiRTHm7F4ouVoK0b9FhA==", "dependencies": { - "@superset-ui/chart-controls": "0.17.79", - "@superset-ui/core": "0.17.75", + "@superset-ui/chart-controls": "0.17.84", + "@superset-ui/core": "0.17.81", "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.79", - "resolved": "https://registry.npmjs.org/@superset-ui/legacy-plugin-chart-rose/-/legacy-plugin-chart-rose-0.17.79.tgz", - "integrity": "sha512-rDT+C+3a8gMnA+QCatETSJ3GL3IPsiZ2aHWCXWdcbZo5exNwLYD8gZfyHf8do6LLBc46tSrErE8bXs5TDV2LYg==", + "version": "0.17.84", + "resolved": "https://registry.npmjs.org/@superset-ui/legacy-plugin-chart-rose/-/legacy-plugin-chart-rose-0.17.84.tgz", + "integrity": "sha512-r0Anl44JaBm4ivHErvpCcPU7RThxPuy7/tGY0jesfxghaPJ/cTMNkL6Tt4rErLQvLo7pVVO0gYpE3mLx+udNPw==", "dependencies": { - "@superset-ui/chart-controls": "0.17.79", - "@superset-ui/core": "0.17.75", + "@superset-ui/chart-controls": "0.17.84", + "@superset-ui/core": "0.17.81", "d3": "^3.5.17", "nvd3": "1.8.6", "prop-types": "^15.6.2" @@ -12133,12 +12405,12 @@ } }, "node_modules/@superset-ui/legacy-plugin-chart-sankey": { - "version": "0.17.79", - "resolved": "https://registry.npmjs.org/@superset-ui/legacy-plugin-chart-sankey/-/legacy-plugin-chart-sankey-0.17.79.tgz", - "integrity": "sha512-3AMEH15bOInmSHF87f3lgSS9vwKTMYjo67h4NhIflfXMR3EveXCA8dIIJfgS6xYSmaGEE7OL6aeeQE5+rnj4pQ==", + "version": "0.17.84", + "resolved": "https://registry.npmjs.org/@superset-ui/legacy-plugin-chart-sankey/-/legacy-plugin-chart-sankey-0.17.84.tgz", + "integrity": "sha512-P9ArmxsOONfLEBQ1mlIrRHDDWaM336mZsGfsWpD7gcP7oz4hNMneyR9KwUsPanOqVaIf2rETvdXNL5d5ddFY0w==", "dependencies": { - "@superset-ui/chart-controls": "0.17.79", - "@superset-ui/core": "0.17.75", + "@superset-ui/chart-controls": "0.17.84", + "@superset-ui/core": "0.17.81", "d3": "^3.5.17", "d3-sankey": "^0.4.2", "prop-types": "^15.6.2" @@ -12148,47 +12420,47 @@ } }, "node_modules/@superset-ui/legacy-plugin-chart-sankey-loop": { - "version": "0.17.79", - "resolved": "https://registry.npmjs.org/@superset-ui/legacy-plugin-chart-sankey-loop/-/legacy-plugin-chart-sankey-loop-0.17.79.tgz", - "integrity": "sha512-OdFBPQbE+vkN/fw9XqeM7lZ8f0xB2itXiwyOKei6MeC6G1cN45/DUlnTAY436ulRvZFhwLhel7g91TN8djSDoA==", + "version": "0.17.84", + "resolved": "https://registry.npmjs.org/@superset-ui/legacy-plugin-chart-sankey-loop/-/legacy-plugin-chart-sankey-loop-0.17.84.tgz", + "integrity": "sha512-PH+FajOKURiF7h+KMCsrMATBUR2Whiw5a6eMz+SkC3LoHVcWnpiSDh6F8ELBXfc1dhK0iQdrFWdCb8+Atpjvcg==", "dependencies": { - "@superset-ui/chart-controls": "0.17.79", - "@superset-ui/core": "0.17.75", + "@superset-ui/chart-controls": "0.17.84", + "@superset-ui/core": "0.17.81", "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.79", - "resolved": "https://registry.npmjs.org/@superset-ui/legacy-plugin-chart-sunburst/-/legacy-plugin-chart-sunburst-0.17.79.tgz", - "integrity": "sha512-VmRsKn/XHUlDKrQ2AQ+C1TRXIJ6m6ittKKuXMqz0XxZWs3jn5RUkNv0W8GuYg814abmZl/e1e0/3lgmYX6LyZg==", + "version": "0.17.84", + "resolved": "https://registry.npmjs.org/@superset-ui/legacy-plugin-chart-sunburst/-/legacy-plugin-chart-sunburst-0.17.84.tgz", + "integrity": "sha512-FSLKCWGzVsL+VL1DAD4Gsgt6swW9iqU2h+fW2O4UXIWlVdKCU7Xg012Lsh6QSt7lYJSQ3unnYtfMstYcpiR/HA==", "dependencies": { - "@superset-ui/chart-controls": "0.17.79", - "@superset-ui/core": "0.17.75", + "@superset-ui/chart-controls": "0.17.84", + "@superset-ui/core": "0.17.81", "d3": "^3.5.17", "prop-types": "^15.6.2" } }, "node_modules/@superset-ui/legacy-plugin-chart-treemap": { - "version": "0.17.79", - "resolved": "https://registry.npmjs.org/@superset-ui/legacy-plugin-chart-treemap/-/legacy-plugin-chart-treemap-0.17.79.tgz", - "integrity": "sha512-b204bAeVodLiYyzout0a4HXmltptXD/81kX8aA94IIDCAoA7QhbAvb9W9wZcQiDJQwu7MVsS+KPqyyv35Mxo8A==", + "version": "0.17.84", + "resolved": "https://registry.npmjs.org/@superset-ui/legacy-plugin-chart-treemap/-/legacy-plugin-chart-treemap-0.17.84.tgz", + "integrity": "sha512-yxjlWn9RVBw4PI3EKisHb80sLLHAZuVqykzeFebSXW4jlFYzgfQea3k5pCymz5QPDfYjM8c4DULMiffbbrnKmA==", "dependencies": { - "@superset-ui/chart-controls": "0.17.79", - "@superset-ui/core": "0.17.75", + "@superset-ui/chart-controls": "0.17.84", + "@superset-ui/core": "0.17.81", "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.79", - "resolved": "https://registry.npmjs.org/@superset-ui/legacy-plugin-chart-world-map/-/legacy-plugin-chart-world-map-0.17.79.tgz", - "integrity": "sha512-4iVqpwn4zlI9T4b9venoRLgoEy0+lZKaWbccmUkXPvYL+gpUtkB3z7KuFfp/MWWyruLRCKCd1z2Fedm4wv8ELA==", + "version": "0.17.84", + "resolved": "https://registry.npmjs.org/@superset-ui/legacy-plugin-chart-world-map/-/legacy-plugin-chart-world-map-0.17.84.tgz", + "integrity": "sha512-KJmt2jKXJ/1jade+bO0D36DNFl74oDJsdCr/2wuPRQgFTO8xkqoQKk/y+7on4BDSkHUfTExDuOjnnsS3ijdXjA==", "dependencies": { - "@superset-ui/chart-controls": "0.17.79", - "@superset-ui/core": "0.17.75", + "@superset-ui/chart-controls": "0.17.84", + "@superset-ui/core": "0.17.81", "d3": "^3.5.17", "d3-array": "^2.4.0", "d3-color": "^1.4.1", @@ -12207,19 +12479,14 @@ "internmap": "^1.0.0" } }, - "node_modules/@superset-ui/legacy-plugin-chart-world-map/node_modules/d3-color": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-1.4.1.tgz", - "integrity": "sha512-p2sTHSLCJI2QKunbGb7ocOh7DgTAn8IrLx21QRc/BSnodXM4sv6aLQlnfpvehFMLZEfBc6g9pH9SWQccFYfJ9Q==" - }, "node_modules/@superset-ui/legacy-preset-chart-big-number": { - "version": "0.17.79", - "resolved": "https://registry.npmjs.org/@superset-ui/legacy-preset-chart-big-number/-/legacy-preset-chart-big-number-0.17.79.tgz", - "integrity": "sha512-+OjEbyYugynYGbnobP6pNI59bMXfsaqgX6z+oz7fxCtb5BWxTiciz9W7aKhAqT6XM+I8gkkHUKFj76cyjawY5g==", + "version": "0.17.84", + "resolved": "https://registry.npmjs.org/@superset-ui/legacy-preset-chart-big-number/-/legacy-preset-chart-big-number-0.17.84.tgz", + "integrity": "sha512-1SotYUwx6BXvXXTHszqpu/+GSQoS2TkQPIXVqlkd4c7bHIZCetwsmOs9F9pCyiaYo9GM3x7DdTWOezgYYORFDw==", "dependencies": { "@data-ui/xy-chart": "^0.0.84", - "@superset-ui/chart-controls": "0.17.79", - "@superset-ui/core": "0.17.75", + "@superset-ui/chart-controls": "0.17.84", + "@superset-ui/core": "0.17.81", "@types/d3-color": "^1.2.2", "@types/shortid": "^0.0.29", "d3-color": "^1.2.3", @@ -12230,43 +12497,178 @@ } }, "node_modules/@superset-ui/legacy-preset-chart-deckgl": { - "version": "0.4.9", - "resolved": "https://registry.npmjs.org/@superset-ui/legacy-preset-chart-deckgl/-/legacy-preset-chart-deckgl-0.4.9.tgz", - "integrity": "sha512-eOenl2esuhXN5ONiGWR2sLMqavwkc4F1Q2/n1+JWveUMOOs4qi/XhDnx2VYqaiH3bgq7RgQ7objh/vxMz78j8w==", + "version": "0.4.10", + "resolved": "https://registry.npmjs.org/@superset-ui/legacy-preset-chart-deckgl/-/legacy-preset-chart-deckgl-0.4.10.tgz", + "integrity": "sha512-UGgzzDjy6N+vZvHlaSbihEyblm41jS2eL/41RWAEAABrn8g27V33a1VdVR/5zLUAtjqvP/dZqqkebF0h4ebmXA==", "dependencies": { "@math.gl/web-mercator": "^3.2.2", "@types/d3-array": "^2.0.0", "bootstrap-slider": "^10.0.0", "d3-array": "^1.2.4", - "d3-color": "^1.2.0", - "d3-scale": "^2.1.2", - "deck.gl": "7.1.11", + "d3-color": "^1.4.1", + "d3-scale": "^3.0.0", + "deck.gl": "8.5.2", "jquery": "^3.4.1", "lodash": "^4.17.15", - "mapbox-gl": "^0.53.0", + "mapbox-gl": "^2.4.0", "moment": "^2.20.1", "mousetrap": "^1.6.1", "prop-types": "^15.6.0", "react-bootstrap-slider": "2.1.5", - "react-map-gl": "^4.0.10", + "react-map-gl": "^6.1.16", "underscore": "^1.8.3", "urijs": "^1.18.10", "xss": "^1.0.6" }, "peerDependencies": { - "@superset-ui/chart-controls": "^0.17.12", - "@superset-ui/core": "^0.17.11", - "react": "^15 || ^16" + "@superset-ui/chart-controls": "^0.17.80", + "@superset-ui/core": "^0.17.80", + "react": "^16.13.1" + } + }, + "node_modules/@superset-ui/legacy-preset-chart-deckgl/node_modules/@mapbox/geojson-rewind": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/@mapbox/geojson-rewind/-/geojson-rewind-0.5.1.tgz", + "integrity": "sha512-eL7fMmfTBKjrb+VFHXCGv9Ot0zc3C0U+CwXo1IrP+EPwDczLoXv34Tgq3y+2mPSFNVUXgU42ILWJTC7145KPTA==", + "dependencies": { + "get-stream": "^6.0.1", + "minimist": "^1.2.5" + }, + "bin": { + "geojson-rewind": "geojson-rewind" + } + }, + "node_modules/@superset-ui/legacy-preset-chart-deckgl/node_modules/@mapbox/mapbox-gl-supported": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@mapbox/mapbox-gl-supported/-/mapbox-gl-supported-2.0.0.tgz", + "integrity": "sha512-zu4udqYiBrKMQKwpKJ4hhPON7tz0QR/JZ3iGpHnNWFmH3Sv/ysxlICATUtGCFpsyJf2v1WpFhlzaZ3GhhKmPMA==" + }, + "node_modules/@superset-ui/legacy-preset-chart-deckgl/node_modules/d3-scale": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-3.3.0.tgz", + "integrity": "sha512-1JGp44NQCt5d1g+Yy+GeOnZP7xHo0ii8zsQp6PGzd+C1/dl0KGsp9A7Mxwp+1D1o4unbTTxVdU/ZOIEBoeZPbQ==", + "dependencies": { + "d3-array": "^2.3.0", + "d3-format": "1 - 2", + "d3-interpolate": "1.2.0 - 2", + "d3-time": "^2.1.1", + "d3-time-format": "2 - 3" + } + }, + "node_modules/@superset-ui/legacy-preset-chart-deckgl/node_modules/d3-scale/node_modules/d3-array": { + "version": "2.12.1", + "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-2.12.1.tgz", + "integrity": "sha512-B0ErZK/66mHtEsR1TkPEEkwdy+WDesimkM5gpZr5Dsg54BiTA5RXtYW5qTLIAcekaS9xfZrzBLF/OAkB3Qn1YQ==", + "dependencies": { + "internmap": "^1.0.0" + } + }, + "node_modules/@superset-ui/legacy-preset-chart-deckgl/node_modules/d3-time": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-2.1.1.tgz", + "integrity": "sha512-/eIQe/eR4kCQwq7yxi7z4c6qEXf2IYGcjoWB5OOQy4Tq9Uv39/947qlDcN2TLkiTzQWzvnsuYPB9TrWaNfipKQ==", + "dependencies": { + "d3-array": "2" + } + }, + "node_modules/@superset-ui/legacy-preset-chart-deckgl/node_modules/d3-time/node_modules/d3-array": { + "version": "2.12.1", + "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-2.12.1.tgz", + "integrity": "sha512-B0ErZK/66mHtEsR1TkPEEkwdy+WDesimkM5gpZr5Dsg54BiTA5RXtYW5qTLIAcekaS9xfZrzBLF/OAkB3Qn1YQ==", + "dependencies": { + "internmap": "^1.0.0" + } + }, + "node_modules/@superset-ui/legacy-preset-chart-deckgl/node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@superset-ui/legacy-preset-chart-deckgl/node_modules/mapbox-gl": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/mapbox-gl/-/mapbox-gl-2.4.0.tgz", + "integrity": "sha512-oH5fkh209U2Zqvgs1bBS+SQVhrj8rUT9OTgZmg+20GaNthDJFYDCXvGidVAkgacuCHSIALTZKzMV1DFgO+isFQ==", + "dependencies": { + "@mapbox/geojson-rewind": "^0.5.0", + "@mapbox/geojson-types": "^1.0.2", + "@mapbox/jsonlint-lines-primitives": "^2.0.2", + "@mapbox/mapbox-gl-supported": "^2.0.0", + "@mapbox/point-geometry": "^0.1.0", + "@mapbox/tiny-sdf": "^1.2.5", + "@mapbox/unitbezier": "^0.0.0", + "@mapbox/vector-tile": "^1.3.1", + "@mapbox/whoots-js": "^3.1.0", + "csscolorparser": "~1.0.3", + "earcut": "^2.2.2", + "geojson-vt": "^3.2.1", + "gl-matrix": "^3.3.0", + "grid-index": "^1.1.0", + "minimist": "^1.2.5", + "murmurhash-js": "^1.0.0", + "pbf": "^3.2.1", + "potpack": "^1.0.1", + "quickselect": "^2.0.0", + "rw": "^1.3.3", + "supercluster": "^7.1.3", + "tinyqueue": "^2.0.3", + "vt-pbf": "^3.1.1" + }, + "engines": { + "node": ">=14.15.4" + } + }, + "node_modules/@superset-ui/legacy-preset-chart-deckgl/node_modules/react-map-gl": { + "version": "6.1.16", + "resolved": "https://registry.npmjs.org/react-map-gl/-/react-map-gl-6.1.16.tgz", + "integrity": "sha512-d/4kFMMh2hDeZNeQOUm2wC1/as9q93EZiDmM5mGBx0LIch+9pTFgO6ZINIuUD9Zz4JqWGpthyjoKr3QKgrGiRA==", + "dependencies": { + "@babel/runtime": "^7.0.0", + "@types/geojson": "^7946.0.7", + "@types/mapbox-gl": "^2.0.3", + "mapbox-gl": "^2.3.0", + "mjolnir.js": "^2.5.0", + "prop-types": "^15.7.2", + "resize-observer-polyfill": "^1.5.1", + "viewport-mercator-project": "^7.0.3" + }, + "engines": { + "node": ">= 4", + "npm": ">= 3" + }, + "peerDependencies": { + "react": ">=16.3.0" + } + }, + "node_modules/@superset-ui/legacy-preset-chart-deckgl/node_modules/supercluster": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/supercluster/-/supercluster-7.1.3.tgz", + "integrity": "sha512-7+bR4FbF5SYsmkHfDp61QiwCKtwNDyPsddk9TzfsDA5DQr5Goii5CVD2SXjglweFCxjrzVZf945ahqYfUIk8UA==", + "dependencies": { + "kdbush": "^3.0.0" + } + }, + "node_modules/@superset-ui/legacy-preset-chart-deckgl/node_modules/viewport-mercator-project": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/viewport-mercator-project/-/viewport-mercator-project-7.0.3.tgz", + "integrity": "sha512-5nSgVK8jKTSKzOvsa8TSSd2IeQCpHfSNiBOOOMQLvzlxgWD0YoF4xRmyZio3GaLtKSE+50UB892X3R1SAMbaww==", + "dependencies": { + "@math.gl/web-mercator": "^3.4.3" } }, "node_modules/@superset-ui/legacy-preset-chart-nvd3": { - "version": "0.17.79", - "resolved": "https://registry.npmjs.org/@superset-ui/legacy-preset-chart-nvd3/-/legacy-preset-chart-nvd3-0.17.79.tgz", - "integrity": "sha512-hmBof4w5aF6wZag+wnqQCCYjnxul2KBWqRAj0gWQYohUwgqxxuR3CaEwTP62SNVvmnt8R2iCHM9RpIxfcWpjeQ==", + "version": "0.17.84", + "resolved": "https://registry.npmjs.org/@superset-ui/legacy-preset-chart-nvd3/-/legacy-preset-chart-nvd3-0.17.84.tgz", + "integrity": "sha512-U1LAtnwktODasC8nKxVaui3xZn71npbsfUKH/ZKFkDvf3zSuu96qcklGYJLTRiEhFMq6NDT1V4ogEmoIuRjk6w==", "dependencies": { "@data-ui/xy-chart": "^0.0.84", - "@superset-ui/chart-controls": "0.17.79", - "@superset-ui/core": "0.17.75", + "@superset-ui/chart-controls": "0.17.84", + "@superset-ui/core": "0.17.81", "d3": "^3.5.17", "d3-tip": "^0.9.1", "dompurify": "^2.0.6", @@ -12283,12 +12685,12 @@ } }, "node_modules/@superset-ui/plugin-chart-echarts": { - "version": "0.17.79", - "resolved": "https://registry.npmjs.org/@superset-ui/plugin-chart-echarts/-/plugin-chart-echarts-0.17.79.tgz", - "integrity": "sha512-+lZO5hbQC47G8dDvyqeI4dBsjD2CRSQDqCGFXoecnhKZTzRw3zLX7TYckCK6ZxvLDbgW0ncjRBdcCJtvFs+MAw==", + "version": "0.17.84", + "resolved": "https://registry.npmjs.org/@superset-ui/plugin-chart-echarts/-/plugin-chart-echarts-0.17.84.tgz", + "integrity": "sha512-KTK5dTri9mJCCWnSijPGZ4+Mf/ZdOkATMoYFQjjNrb2GL9TkI9Utc+61CBfizKk3vz3t3PKoSWWa4TliEeGCgQ==", "dependencies": { - "@superset-ui/chart-controls": "0.17.79", - "@superset-ui/core": "0.17.75", + "@superset-ui/chart-controls": "0.17.84", + "@superset-ui/core": "0.17.81", "@types/mathjs": "^6.0.7", "d3-array": "^1.2.0", "echarts": "^5.1.2", @@ -12300,13 +12702,13 @@ } }, "node_modules/@superset-ui/plugin-chart-pivot-table": { - "version": "0.17.79", - "resolved": "https://registry.npmjs.org/@superset-ui/plugin-chart-pivot-table/-/plugin-chart-pivot-table-0.17.79.tgz", - "integrity": "sha512-sz3FfM8Odm+r094rNCRO1DGxMNZl8j0ySnwFYQTbdZNFgqUvcQme9x7QC51IBk3OQ/TOm8oMJG5hTV1/4HrCKA==", + "version": "0.17.84", + "resolved": "https://registry.npmjs.org/@superset-ui/plugin-chart-pivot-table/-/plugin-chart-pivot-table-0.17.84.tgz", + "integrity": "sha512-JGyn9Yd5Wg5ZJSGVQ/PQwPqkwaLZeZK09u0NvCRjoqLEIz9psudLVfTVgsj6WTLJrrEdr4J8yXxlBnnMQ/N3Kw==", "dependencies": { - "@superset-ui/chart-controls": "0.17.79", - "@superset-ui/core": "0.17.75", - "@superset-ui/react-pivottable": "^0.12.11" + "@superset-ui/chart-controls": "0.17.84", + "@superset-ui/core": "0.17.81", + "@superset-ui/react-pivottable": "^0.12.12" }, "peerDependencies": { "@ant-design/icons": "^4.2.2", @@ -12314,13 +12716,13 @@ } }, "node_modules/@superset-ui/plugin-chart-table": { - "version": "0.17.79", - "resolved": "https://registry.npmjs.org/@superset-ui/plugin-chart-table/-/plugin-chart-table-0.17.79.tgz", - "integrity": "sha512-gPXgLJntH72ligPD0V6XNT5Cj6eWzztL154/uhUf8qxXKSBB5wETrFqtIl00S99wJQeaPRN6UGER/eiuGqGOTA==", + "version": "0.17.84", + "resolved": "https://registry.npmjs.org/@superset-ui/plugin-chart-table/-/plugin-chart-table-0.17.84.tgz", + "integrity": "sha512-XUI3vj8m77jH5R1XTjz0UbW8SyVxFDD2xwlxkqtpstWkjmOd3VPGN2/LpQa0dKVpW8KBUpHVNRDByBYL+siVFA==", "dependencies": { "@react-icons/all-files": "^4.1.0", - "@superset-ui/chart-controls": "0.17.79", - "@superset-ui/core": "0.17.75", + "@superset-ui/chart-controls": "0.17.84", + "@superset-ui/core": "0.17.81", "@types/d3-array": "^2.9.0", "@types/react-table": "^7.0.29", "d3-array": "^2.4.0", @@ -12345,12 +12747,13 @@ } }, "node_modules/@superset-ui/plugin-chart-word-cloud": { - "version": "0.17.79", - "resolved": "https://registry.npmjs.org/@superset-ui/plugin-chart-word-cloud/-/plugin-chart-word-cloud-0.17.79.tgz", - "integrity": "sha512-EpHMJ1Qd7GnykEjlC+3bOzzBauLTFwZZuFFuCHs8m0exozuFaHQS1VxmpR1h3zJsp6pjF3PRFU05fpQ5LUAbnA==", + "version": "0.17.84", + "resolved": "https://registry.npmjs.org/@superset-ui/plugin-chart-word-cloud/-/plugin-chart-word-cloud-0.17.84.tgz", + "integrity": "sha512-ChuYtfOVlzOZpdavu65kVOoGLjwSQUU6mpJ8ziXqTr36hm8+QVzETX21+LTyJ8rWBFsehYPxOEgOlpmK2ZapUQ==", + "license": "Apache-2.0", "dependencies": { - "@superset-ui/chart-controls": "0.17.79", - "@superset-ui/core": "0.17.75", + "@superset-ui/chart-controls": "0.17.84", + "@superset-ui/core": "0.17.81", "@types/d3-cloud": "^1.2.1", "@types/d3-scale": "^2.0.2", "d3-cloud": "^1.2.5", @@ -12383,14 +12786,14 @@ } }, "node_modules/@superset-ui/preset-chart-xy": { - "version": "0.17.79", - "resolved": "https://registry.npmjs.org/@superset-ui/preset-chart-xy/-/preset-chart-xy-0.17.79.tgz", - "integrity": "sha512-JisKp00zIVa8VKSBXG1HNDj6hcRf70kHAGuSXHrQ8BUdfhy9Xc20oUMMFKeWSi0cc5NzPkgGg9Vl/vd3fvsO8Q==", + "version": "0.17.84", + "resolved": "https://registry.npmjs.org/@superset-ui/preset-chart-xy/-/preset-chart-xy-0.17.84.tgz", + "integrity": "sha512-Q4+k2k9ZoQUUy1d3S3h6Taj6zMIHnU0XtVaLYIxj1oISfyaKWz1hPR8At1ReC5pOl5qoJSAQv4X61KFOwEMsUw==", "dependencies": { "@data-ui/theme": "^0.0.84", "@data-ui/xy-chart": "^0.0.84", - "@superset-ui/chart-controls": "0.17.79", - "@superset-ui/core": "0.17.75", + "@superset-ui/chart-controls": "0.17.84", + "@superset-ui/core": "0.17.81", "@vx/axis": "^0.0.198", "@vx/legend": "^0.0.198", "@vx/scale": "^0.0.197", @@ -12510,9 +12913,9 @@ } }, "node_modules/@superset-ui/react-pivottable": { - "version": "0.12.11", - "resolved": "https://registry.npmjs.org/@superset-ui/react-pivottable/-/react-pivottable-0.12.11.tgz", - "integrity": "sha512-V0ZCqgxf5addssJlJqcUDUJVWH68JCgqWHDSQ8Wy75GdBSRgU4K/E8dogXaTHIWWhFDyrnxDsYW0YJ6TFWOQFQ==", + "version": "0.12.12", + "resolved": "https://registry.npmjs.org/@superset-ui/react-pivottable/-/react-pivottable-0.12.12.tgz", + "integrity": "sha512-4+wx2kQy3IRKoWHTf2bIkXjlzDA0u/eN2k0FfLfJ5bdER2GuqZErWuKtiZzARsn5kSS9hPIrvt77uv52R3FnfQ==", "dependencies": { "immutability-helper": "^3.1.1", "prop-types": "^15.7.2", @@ -13263,6 +13666,16 @@ "integrity": "sha512-NCEfv49jmDsBAixjMjEHKVgmVQlJ+uK56FOc+2roYPExnXCZDpi6mJOHQ3v23BiO84hBDStND9R2itJr7PNoow==", "dev": true }, + "node_modules/@types/flatbuffers": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/@types/flatbuffers/-/flatbuffers-1.10.0.tgz", + "integrity": "sha512-7btbphLrKvo5yl/5CC2OCxUSMx1wV1wvGT1qDXkSt7yi00/YW7E8k6qzXqJHsp+WU0eoG7r6MTQQXI9lIvd0qA==" + }, + "node_modules/@types/geojson": { + "version": "7946.0.8", + "resolved": "https://registry.npmjs.org/@types/geojson/-/geojson-7946.0.8.tgz", + "integrity": "sha512-1rkryxURpr6aWP7R786/UQOkJ3PcpQiWkAXBmdWc7ryFWqN6a4xfK7BtjXvFBKO9LjQ+MWQSWxYeZX1OApnArA==" + }, "node_modules/@types/glob": { "version": "7.1.1", "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.1.1.tgz", @@ -13404,6 +13817,14 @@ "@types/lodash": "*" } }, + "node_modules/@types/mapbox-gl": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/@types/mapbox-gl/-/mapbox-gl-2.4.0.tgz", + "integrity": "sha512-Na5vXw6Ez0L5To/+pL78dWPNoG6QlPdEDdnkSmIL5HWxemD+s0pTmTWDbMj7tcqJ2hnVyOyukVIveR9HPi7eeA==", + "dependencies": { + "@types/geojson": "*" + } + }, "node_modules/@types/markdown-to-jsx": { "version": "6.11.3", "resolved": "https://registry.npmjs.org/@types/markdown-to-jsx/-/markdown-to-jsx-6.11.3.tgz", @@ -13855,6 +14276,11 @@ "@types/jest": "*" } }, + "node_modules/@types/text-encoding-utf-8": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@types/text-encoding-utf-8/-/text-encoding-utf-8-1.0.2.tgz", + "integrity": "sha512-AQ6zewa0ucLJvtUi5HsErbOFKAcQfRLt9zFLlUOvcXBy2G36a+ZDpCHSGdzJVUD8aNURtIjh9aSjCStNMRCcRQ==" + }, "node_modules/@types/uglify-js": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/@types/uglify-js/-/uglify-js-3.0.4.tgz", @@ -15543,6 +15969,36 @@ "normalize-path": "^2.1.1" } }, + "node_modules/apache-arrow": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/apache-arrow/-/apache-arrow-4.0.1.tgz", + "integrity": "sha512-DyF7GXCbSjsw4P5C8b+qW7OnJKa6w9mJI0mhV0+EfZbVZCmhfiF6ffqcnrI/kzBrRqn9hH/Ft9n5+m4DTbBJpg==", + "dependencies": { + "@types/flatbuffers": "^1.10.0", + "@types/node": "^14.14.37", + "@types/text-encoding-utf-8": "^1.0.1", + "command-line-args": "5.1.1", + "command-line-usage": "6.1.1", + "flatbuffers": "1.12.0", + "json-bignum": "^0.0.3", + "pad-left": "^2.1.0", + "text-encoding-utf-8": "^1.0.2", + "tslib": "^2.2.0" + }, + "bin": { + "arrow2csv": "bin/arrow2csv.js" + } + }, + "node_modules/apache-arrow/node_modules/@types/node": { + "version": "14.17.9", + "resolved": "https://registry.npmjs.org/@types/node/-/node-14.17.9.tgz", + "integrity": "sha512-CMjgRNsks27IDwI785YMY0KLt3co/c0cQ5foxHYv/shC2w8oOnVwz5Ubq1QG5KzrcW+AXk6gzdnxIkDnTvzu3g==" + }, + "node_modules/apache-arrow/node_modules/tslib": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.0.tgz", + "integrity": "sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg==" + }, "node_modules/aphrodite": { "version": "1.2.5", "resolved": "https://registry.npmjs.org/aphrodite/-/aphrodite-1.2.5.tgz", @@ -15633,6 +16089,14 @@ "node": ">=0.10.0" } }, + "node_modules/array-back": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/array-back/-/array-back-3.1.0.tgz", + "integrity": "sha512-TkuxA4UCOvxuDK6NZYXCalszEzj+TLszyASooky+i742l9TqsOdYCMJJupxRic61hwquNtppB3hgcuq9SVSH1Q==", + "engines": { + "node": ">=6" + } + }, "node_modules/array-equal": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/array-equal/-/array-equal-1.0.0.tgz", @@ -18390,6 +18854,14 @@ "cdl": "bin/cdl.js" } }, + "node_modules/cartocolor": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/cartocolor/-/cartocolor-4.0.2.tgz", + "integrity": "sha512-+Gh9mb6lFxsDOLQlBLPxAHCnWXlg2W8q3AcVwqRcy95TdBbcOU89Wrb6h2Hd/6Ww1Kc1pzXmUdpnWD+xeCG0dg==", + "dependencies": { + "colorbrewer": "1.0.0" + } + }, "node_modules/case-sensitive-paths-webpack-plugin": { "version": "2.4.0", "resolved": "https://registry.npmjs.org/case-sensitive-paths-webpack-plugin/-/case-sensitive-paths-webpack-plugin-2.4.0.tgz", @@ -19743,6 +20215,11 @@ "simple-swizzle": "^0.2.2" } }, + "node_modules/colorbrewer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/colorbrewer/-/colorbrewer-1.0.0.tgz", + "integrity": "sha1-T5czO5abp2Ejgr5LwzlLNB+0yKI=" + }, "node_modules/colorette": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.2.1.tgz", @@ -19779,6 +20256,85 @@ "trim": "0.0.1" } }, + "node_modules/command-line-args": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/command-line-args/-/command-line-args-5.1.1.tgz", + "integrity": "sha512-hL/eG8lrll1Qy1ezvkant+trihbGnaKaeEjj6Scyr3DN+RC7iQ5Rz84IeLERfAWDGo0HBSNAakczwgCilDXnWg==", + "dependencies": { + "array-back": "^3.0.1", + "find-replace": "^3.0.0", + "lodash.camelcase": "^4.3.0", + "typical": "^4.0.0" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/command-line-usage": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/command-line-usage/-/command-line-usage-6.1.1.tgz", + "integrity": "sha512-F59pEuAR9o1SF/bD0dQBDluhpT4jJQNWUHEuVBqpDmCUo6gPjCi+m9fCWnWZVR/oG6cMTUms4h+3NPl74wGXvA==", + "dependencies": { + "array-back": "^4.0.1", + "chalk": "^2.4.2", + "table-layout": "^1.0.1", + "typical": "^5.2.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/command-line-usage/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/command-line-usage/node_modules/array-back": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/array-back/-/array-back-4.0.2.tgz", + "integrity": "sha512-NbdMezxqf94cnNfWLL7V/im0Ub+Anbb0IoZhvzie8+4HJ4nMQuzHuy49FkGYCJK2yAloZ3meiB6AVMClbrI1vg==", + "engines": { + "node": ">=8" + } + }, + "node_modules/command-line-usage/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/command-line-usage/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/command-line-usage/node_modules/typical": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/typical/-/typical-5.2.0.tgz", + "integrity": "sha512-dvdQgNDNJo+8B2uBQoqdb11eUCE1JQXhvjC/CZtgvZseVd5TYMXnq0+vuUemXbd/Se29cTaUuPX3YIc2xgbvIg==", + "engines": { + "node": ">=8" + } + }, "node_modules/commander": { "version": "2.19.0", "resolved": "https://registry.npmjs.org/commander/-/commander-2.19.0.tgz", @@ -21446,9 +22002,9 @@ "integrity": "sha512-ii0/r5f4sjKNTfh84Di+DpztYwqKhEyUlKoPrzUFfeSkWxjW49xU2QzO9qrPrNkpdI0XJkfzvmTu8V2Zylln6A==" }, "node_modules/d3-color": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-1.2.3.tgz", - "integrity": "sha512-x37qq3ChOTLd26hnps36lexMRhNXEtVxZ4B25rL0DVdDsGQIJGB18S7y9XDwlDD6MD/ZBzITCf4JjGMM10TZkw==" + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-1.4.1.tgz", + "integrity": "sha512-p2sTHSLCJI2QKunbGb7ocOh7DgTAn8IrLx21QRc/BSnodXM4sv6aLQlnfpvehFMLZEfBc6g9pH9SWQccFYfJ9Q==" }, "node_modules/d3-dispatch": { "version": "1.0.6", @@ -21799,19 +22355,21 @@ "integrity": "sha512-KaL7+6Fw6i5A2XSnsbhm/6B+NuEA7TZ4vqxnd5tXz9sbKtrN9Srj8ab4vKVdK8YAqZO9P1kg45Y6YLoduPf+kw==" }, "node_modules/deck.gl": { - "version": "7.1.11", - "resolved": "https://registry.npmjs.org/deck.gl/-/deck.gl-7.1.11.tgz", - "integrity": "sha512-OUj9JE544N6Y/DCdfdnsbqKn9o72bWgRfsKhyi8aZ8v76hq7XyelmO2GljBmHGYmuMNVLrKcymNMV0m8EEgpZA==", - "dependencies": { - "@deck.gl/aggregation-layers": "7.1.11", - "@deck.gl/core": "7.1.11", - "@deck.gl/geo-layers": "7.1.11", - "@deck.gl/google-maps": "7.1.11", - "@deck.gl/json": "7.1.11", - "@deck.gl/layers": "7.1.11", - "@deck.gl/mapbox": "7.1.11", - "@deck.gl/mesh-layers": "7.1.11", - "@deck.gl/react": "7.1.11" + "version": "8.5.2", + "resolved": "https://registry.npmjs.org/deck.gl/-/deck.gl-8.5.2.tgz", + "integrity": "sha512-tsEyv62Zzc+GT3By0Y1R2gqEJ8K3tGBDaLprAoeAsg7fvIa5ikFBdWEBFHa1UDbgE2UEmYbcBK/yK4GAL8Ia4A==", + "dependencies": { + "@deck.gl/aggregation-layers": "8.5.2", + "@deck.gl/carto": "8.5.2", + "@deck.gl/core": "8.5.2", + "@deck.gl/extensions": "8.5.2", + "@deck.gl/geo-layers": "8.5.2", + "@deck.gl/google-maps": "8.5.2", + "@deck.gl/json": "8.5.2", + "@deck.gl/layers": "8.5.2", + "@deck.gl/mapbox": "8.5.2", + "@deck.gl/mesh-layers": "8.5.2", + "@deck.gl/react": "8.5.2" } }, "node_modules/decode-uri-component": { @@ -21870,6 +22428,14 @@ "node": ">= 0.4" } }, + "node_modules/deep-extend": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", + "engines": { + "node": ">=4.0.0" + } + }, "node_modules/deep-is": { "version": "0.1.3", "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", @@ -22393,6 +22959,11 @@ "integrity": "sha512-NAnt2iGDXohE5LI7uBnLnqvLQMtzhkiAOLXTmv+qnF9Ky7xAPcX8Up/xWIhxvLVGJvuLiNc4xQLtuqDRzb4fSA==", "dev": true }, + "node_modules/draco3d": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/draco3d/-/draco3d-1.4.1.tgz", + "integrity": "sha512-9Rxonc70xiovBC+Bq1h57SNZIHzWTibU1VfIGp5z3Xx8dPtv4yT5uGhiH7P5uvJRR2jkrvHafRxR7bTANkvfpg==" + }, "node_modules/duplexer": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.1.tgz", @@ -24985,6 +25556,14 @@ "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=", "dev": true }, + "node_modules/expression-eval": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/expression-eval/-/expression-eval-2.1.0.tgz", + "integrity": "sha512-FUJO/Akvl/JOWkvlqZaqbkhsEWlCJWDeZG4tzX96UH68D9FeRgYgtb55C2qtqbORC0Q6x5419EDjWu4IT9kQfg==", + "dependencies": { + "jsep": "^0.3.0" + } + }, "node_modules/extend": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", @@ -25529,6 +26108,17 @@ "node": ">=6" } }, + "node_modules/find-replace": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-replace/-/find-replace-3.0.0.tgz", + "integrity": "sha512-6Tb2myMioCAgv5kfvP5/PkZZ/ntTpVK39fHY7WkWBgvbeE+VHd/tZuZ4mrC+bxh4cfOZeYKVPaJIZtZXV7GNCQ==", + "dependencies": { + "array-back": "^3.0.1" + }, + "engines": { + "node": ">=4.0.0" + } + }, "node_modules/find-root": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/find-root/-/find-root-1.1.0.tgz", @@ -25586,6 +26176,11 @@ "rimraf": "bin.js" } }, + "node_modules/flatbuffers": { + "version": "1.12.0", + "resolved": "https://registry.npmjs.org/flatbuffers/-/flatbuffers-1.12.0.tgz", + "integrity": "sha512-c7CZADjRcl6j0PlvFy0ZqXQ67qSEZfrVPynmnL+2zPc+NtMvrF8Y0QceMo7QqnSPc7+uWjUIAbvCQ5WIKlMVdQ==" + }, "node_modules/flatted": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.1.0.tgz", @@ -26272,9 +26867,9 @@ } }, "node_modules/h3-js": { - "version": "3.7.0", - "resolved": "https://registry.npmjs.org/h3-js/-/h3-js-3.7.0.tgz", - "integrity": "sha512-EcH/qGU4khZsAEG39Uu8MvaCing0JFcuoe3K4Xmg5MofDIu1cNJl7z2AQS8ggvXGxboiLJqsGirhEqFKdd2gAA==", + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/h3-js/-/h3-js-3.7.2.tgz", + "integrity": "sha512-LPjlHSwB9zQZrMqKloCZmmmt3yZzIK7nqPcXqwU93zT3TtYG6jP4tZBzAPouxut7lLjdFbMQ75wRBiKfpsnY7w==", "engines": { "node": ">=4", "npm": ">=3", @@ -29440,6 +30035,7 @@ "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", "dev": true, + "hasInstallScript": true, "optional": true, "os": [ "darwin" @@ -32904,6 +33500,14 @@ "node": ">=10" } }, + "node_modules/jsep": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/jsep/-/jsep-0.3.5.tgz", + "integrity": "sha512-AoRLBDc6JNnKjNcmonituEABS5bcfqDhQAWWXNTFrqu6nVXBpBAGfcoTGZMFlIrh9FjmE1CQyX9CTNwZrXMMDA==", + "engines": { + "node": ">= 6.0.0" + } + }, "node_modules/jsesc": { "version": "2.5.2", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", @@ -32924,6 +33528,14 @@ "bignumber.js": "^9.0.0" } }, + "node_modules/json-bignum": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/json-bignum/-/json-bignum-0.0.3.tgz", + "integrity": "sha1-QRY7UENsdz2CQk28IO1w23YEuNc=", + "engines": { + "node": ">=0.8" + } + }, "node_modules/json-parse-better-errors": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", @@ -33787,12 +34399,11 @@ "integrity": "sha512-L0j0tFVZBQQLeEjmWOvDLoRciIY8gQGWahvkztXUal8jH8R5Rlqo9GCvgqvXcy9LQhEWdQCVvzqAbxgYNt4blQ==" }, "node_modules/math.gl": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/math.gl/-/math.gl-2.3.3.tgz", - "integrity": "sha512-wZhx7574KHUpJVMzkaQ559zfn3R8iB0BOilwNrfL/fOLQfPo2TPWsKX96PdfS4svKA2XIGi3yfizrv2Redcv0g==", + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/math.gl/-/math.gl-3.5.3.tgz", + "integrity": "sha512-cRQRZlc+XvNHd3bIfu3kdPPPAW0vwDelZJmkjn2TDvCyPcmyDtAiZ2Poo1aFoINP7HzN6oHYxapc/0wV3q6Opg==", "dependencies": { - "@babel/runtime": "^7.0.0", - "gl-matrix": "^3.0.0" + "@math.gl/core": "3.5.3" } }, "node_modules/mathfn": { @@ -35577,6 +36188,17 @@ "node": ">=4" } }, + "node_modules/pad-left": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/pad-left/-/pad-left-2.1.0.tgz", + "integrity": "sha1-FuajstRKjhOMsIOMx8tAOk/J6ZQ=", + "dependencies": { + "repeat-string": "^1.5.4" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/pako": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.7.tgz", @@ -38929,12 +39551,12 @@ } }, "node_modules/probe.gl": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/probe.gl/-/probe.gl-3.3.0.tgz", - "integrity": "sha512-59E6AEw4N8sU4PKfAl7S2UBYJCOa064WpEFcXfeFOB/36FJtplYY+261DqLjLAvOqRRHiKVEQUBo63PQ3jKeWA==", + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/probe.gl/-/probe.gl-3.4.0.tgz", + "integrity": "sha512-9CLByZATuhuG/Viq3ckfWU+dAhb7dMmjzsyCy4s7ds9ueTejcVRENxL197/XacOK/AN61YrEERB0QnouB0Qc0Q==", "dependencies": { "@babel/runtime": "^7.0.0", - "@probe.gl/stats": "3.3.0" + "@probe.gl/stats": "3.4.0" } }, "node_modules/process": { @@ -42116,6 +42738,14 @@ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz", "integrity": "sha1-yz8+PHMtwPAe5wtAPzAuYddwmDg=" }, + "node_modules/reduce-flatten": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/reduce-flatten/-/reduce-flatten-2.0.0.tgz", + "integrity": "sha512-EJ4UNY/U1t2P/2k6oqotuX2Cc3T6nxJwsM0N0asT7dhrtH1ltUxDn4NalSYmPE2rCkVpcf/X6R0wDwcFpzhd4w==", + "engines": { + "node": ">=6" + } + }, "node_modules/reduce-function-call": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/reduce-function-call/-/reduce-function-call-1.0.3.tgz", @@ -43211,14 +43841,6 @@ "npm": ">=2.0.0" } }, - "node_modules/s2-geometry": { - "version": "1.2.10", - "resolved": "https://registry.npmjs.org/s2-geometry/-/s2-geometry-1.2.10.tgz", - "integrity": "sha1-xv8i8+zK/Q7qSRtgtEwUG5iHrKs=", - "dependencies": { - "long": "^3.2.0" - } - }, "node_modules/safe-buffer": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", @@ -43315,11 +43937,6 @@ "resolved": "https://registry.npmjs.org/seedrandom/-/seedrandom-3.0.5.tgz", "integrity": "sha512-8OwmbklUNzwezjGInmZ+2clQmExQPvomqjL7LFqOYqtmuxRgQYqOD3mHaU+MvZn5FLUeVxVfQjwLZW/n/JFuqg==" }, - "node_modules/seer": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/seer/-/seer-0.2.5.tgz", - "integrity": "sha512-//0Zwt0x97KQhIWrp4oq9AVNvGA2ctCx4dmFddpkORjRr6bW+hyC8eOhWBVIhiU3uHv1XLU1dekfFKOi28RGHA==" - }, "node_modules/select": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/select/-/select-1.1.2.tgz", @@ -46080,6 +46697,36 @@ "node": ">=10.0.0" } }, + "node_modules/table-layout": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/table-layout/-/table-layout-1.0.2.tgz", + "integrity": "sha512-qd/R7n5rQTRFi+Zf2sk5XVVd9UQl6ZkduPFC3S7WEGJAmetDTjY3qPN50eSKzwuzEyQKy5TN2TiZdkIjos2L6A==", + "dependencies": { + "array-back": "^4.0.1", + "deep-extend": "~0.6.0", + "typical": "^5.2.0", + "wordwrapjs": "^4.0.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/table-layout/node_modules/array-back": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/array-back/-/array-back-4.0.2.tgz", + "integrity": "sha512-NbdMezxqf94cnNfWLL7V/im0Ub+Anbb0IoZhvzie8+4HJ4nMQuzHuy49FkGYCJK2yAloZ3meiB6AVMClbrI1vg==", + "engines": { + "node": ">=8" + } + }, + "node_modules/table-layout/node_modules/typical": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/typical/-/typical-5.2.0.tgz", + "integrity": "sha512-dvdQgNDNJo+8B2uBQoqdb11eUCE1JQXhvjC/CZtgvZseVd5TYMXnq0+vuUemXbd/Se29cTaUuPX3YIc2xgbvIg==", + "engines": { + "node": ">=8" + } + }, "node_modules/table/node_modules/ajv": { "version": "7.0.3", "resolved": "https://registry.npmjs.org/ajv/-/ajv-7.0.3.tgz", @@ -46369,6 +47016,11 @@ "node": "*" } }, + "node_modules/text-encoding-utf-8": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/text-encoding-utf-8/-/text-encoding-utf-8-1.0.2.tgz", + "integrity": "sha512-8bw4MY9WjdsD2aMtO0OzOCY3pXGYNx2d2FfHRVUKkiCPDWjKuOlhLVASS+pD7VkLTVjW268LYJHwsnPFlBpbAg==" + }, "node_modules/text-table": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", @@ -47050,6 +47702,14 @@ "node": ">=4.2.0" } }, + "node_modules/typical": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/typical/-/typical-4.0.0.tgz", + "integrity": "sha512-VAH4IvQ7BDFYglMd7BPRDfLgxZZX4O4TFcRDA6EN5X7erNJJq+McIEp8np9aVtxrCJ6qx4GTYVfOWNjcqwZgRw==", + "engines": { + "node": ">=8" + } + }, "node_modules/ua-parser-js": { "version": "0.7.25", "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.25.tgz", @@ -48774,6 +49434,7 @@ "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", "dev": true, + "hasInstallScript": true, "optional": true, "os": [ "darwin" @@ -49852,6 +50513,26 @@ "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=" }, + "node_modules/wordwrapjs": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/wordwrapjs/-/wordwrapjs-4.0.1.tgz", + "integrity": "sha512-kKlNACbvHrkpIw6oPeYDSmdCTu2hdMHoyXLTcUKala++lx5Y+wjJ/e474Jqv5abnVmwxw08DiTuHmw69lJGksA==", + "dependencies": { + "reduce-flatten": "^2.0.0", + "typical": "^5.2.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/wordwrapjs/node_modules/typical": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/typical/-/typical-5.2.0.tgz", + "integrity": "sha512-dvdQgNDNJo+8B2uBQoqdb11eUCE1JQXhvjC/CZtgvZseVd5TYMXnq0+vuUemXbd/Se29cTaUuPX3YIc2xgbvIg==", + "engines": { + "node": ">=8" + } + }, "node_modules/worker-farm": { "version": "1.7.0", "resolved": "https://registry.npmjs.org/worker-farm/-/worker-farm-1.7.0.tgz", @@ -52837,79 +53518,146 @@ } }, "@deck.gl/aggregation-layers": { - "version": "7.1.11", - "resolved": "https://registry.npmjs.org/@deck.gl/aggregation-layers/-/aggregation-layers-7.1.11.tgz", - "integrity": "sha512-CHsr+UJhf06Mqb/q60iP7ftHQv3ftHUhJbVO4550PRo+QMFFhHfhxo53gQDDgrQ3stxpAcLT3lXRSNghMoU34g==", + "version": "8.5.2", + "resolved": "https://registry.npmjs.org/@deck.gl/aggregation-layers/-/aggregation-layers-8.5.2.tgz", + "integrity": "sha512-oiqXPmyn2v0lX9tWCvgmWs29stHSLS3tje71Ff2FVXDNmvP5FoZItFa8y7O7KSTkej2/rSwZeSte/a9pri6Njg==", "requires": { + "@luma.gl/shadertools": "^8.5.4", + "@math.gl/web-mercator": "^3.5.3", "d3-hexbin": "^0.2.1" } }, - "@deck.gl/core": { - "version": "7.1.11", - "resolved": "https://registry.npmjs.org/@deck.gl/core/-/core-7.1.11.tgz", - "integrity": "sha512-jUi1CcsnF5KPL2sv7Z0H3x+8amee5csqliZXGbXEBYox1l8naC4PhHg5jTgLaB0ZOHfVDsldPwGdPC+Mi4jP/Q==", + "@deck.gl/carto": { + "version": "8.5.2", + "resolved": "https://registry.npmjs.org/@deck.gl/carto/-/carto-8.5.2.tgz", + "integrity": "sha512-Kw/3NUM+2NcHjxH6b7IOUYXEwmJ4SNQujFzAVFW5amG4Lut8074NGSF5XHi+4M/zgk7vXDFsGRxLqspsA/dg8w==", "requires": { - "@luma.gl/core": "^7.1.0", + "@loaders.gl/loader-utils": "^3.0.6", + "@loaders.gl/mvt": "^3.0.6", + "@loaders.gl/tiles": "^3.0.6", + "@math.gl/web-mercator": "^3.5.3", + "cartocolor": "^4.0.2", + "d3-scale": "^3.2.3" + }, + "dependencies": { + "d3-array": { + "version": "2.12.1", + "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-2.12.1.tgz", + "integrity": "sha512-B0ErZK/66mHtEsR1TkPEEkwdy+WDesimkM5gpZr5Dsg54BiTA5RXtYW5qTLIAcekaS9xfZrzBLF/OAkB3Qn1YQ==", + "requires": { + "internmap": "^1.0.0" + } + }, + "d3-scale": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-3.3.0.tgz", + "integrity": "sha512-1JGp44NQCt5d1g+Yy+GeOnZP7xHo0ii8zsQp6PGzd+C1/dl0KGsp9A7Mxwp+1D1o4unbTTxVdU/ZOIEBoeZPbQ==", + "requires": { + "d3-array": "^2.3.0", + "d3-format": "1 - 2", + "d3-interpolate": "1.2.0 - 2", + "d3-time": "^2.1.1", + "d3-time-format": "2 - 3" + } + }, + "d3-time": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-2.1.1.tgz", + "integrity": "sha512-/eIQe/eR4kCQwq7yxi7z4c6qEXf2IYGcjoWB5OOQy4Tq9Uv39/947qlDcN2TLkiTzQWzvnsuYPB9TrWaNfipKQ==", + "requires": { + "d3-array": "2" + } + } + } + }, + "@deck.gl/core": { + "version": "8.5.2", + "resolved": "https://registry.npmjs.org/@deck.gl/core/-/core-8.5.2.tgz", + "integrity": "sha512-SAFv7fKx6k1Rj8R4qTMQO2wEhEfixROzbcoSS6RivxrfES00KYYj6jJ7iNEnq3dFn6qc37LPpxqtYYHO4BcvYA==", + "requires": { + "@loaders.gl/core": "^3.0.6", + "@loaders.gl/images": "^3.0.6", + "@luma.gl/core": "^8.5.4", + "@math.gl/web-mercator": "^3.5.3", "gl-matrix": "^3.0.0", - "math.gl": "^2.3.0", - "mjolnir.js": "^2.1.2", - "probe.gl": "^3.0.1", - "seer": "^0.2.4", - "viewport-mercator-project": "^6.1.0" + "math.gl": "^3.5.3", + "mjolnir.js": "^2.5.0", + "probe.gl": "^3.4.0" } }, - "@deck.gl/geo-layers": { - "version": "7.1.11", - "resolved": "https://registry.npmjs.org/@deck.gl/geo-layers/-/geo-layers-7.1.11.tgz", - "integrity": "sha512-gIJ1K98IFSZ12hB+zHyQC+9pMncb9BKVhJTA7pjUpxwcmEkkroqet9zkYQQMeSInK0a67BR9GXjebb/N0U04qA==", + "@deck.gl/extensions": { + "version": "8.5.2", + "resolved": "https://registry.npmjs.org/@deck.gl/extensions/-/extensions-8.5.2.tgz", + "integrity": "sha512-VhbQsMNPM7RCR/ERwb1u1x0rEWAxgXfcCWttW+gYvbiagW/LrAJ22jhOghlRW/wilEmupHYbXQlWkW2V/mYfsg==", "requires": { - "h3-js": "^3.4.3", + "@luma.gl/shadertools": "^8.5.4" + } + }, + "@deck.gl/geo-layers": { + "version": "8.5.2", + "resolved": "https://registry.npmjs.org/@deck.gl/geo-layers/-/geo-layers-8.5.2.tgz", + "integrity": "sha512-t6+TgAdbKWDw8g9UX1y6D+5twcdJuKaXw4qSib/0yVurWi/Mil5Plihybt1l9uBZuwkr+UcpxPR73zzo+qd9MA==", + "requires": { + "@loaders.gl/3d-tiles": "^3.0.6", + "@loaders.gl/gis": "^3.0.6", + "@loaders.gl/loader-utils": "^3.0.6", + "@loaders.gl/mvt": "^3.0.6", + "@loaders.gl/terrain": "^3.0.6", + "@loaders.gl/tiles": "^3.0.6", + "@luma.gl/experimental": "^8.5.4", + "@math.gl/culling": "^3.5.3", + "@math.gl/web-mercator": "^3.5.3", + "h3-js": "^3.6.0", "long": "^3.2.0", - "s2-geometry": "^1.2.10" + "math.gl": "^3.5.3" } }, "@deck.gl/google-maps": { - "version": "7.1.11", - "resolved": "https://registry.npmjs.org/@deck.gl/google-maps/-/google-maps-7.1.11.tgz", - "integrity": "sha512-gYp3NFIsyT5p65HgKjXFWTDzFf7K8+6ce9d9MIqaNgVWFZdsjUy9JL5TttDMQXshaQ1aZpxtLL6ZO3BiI1w8fw==" + "version": "8.5.2", + "resolved": "https://registry.npmjs.org/@deck.gl/google-maps/-/google-maps-8.5.2.tgz", + "integrity": "sha512-Dk3ozenBWgt9nFSYOT4N82urNW/JhiMszfFq6zLt3jUp0N7EJ9d2XO81hclM59BhjIdGWb6drTe96NvtbabVLQ==", + "requires": {} }, "@deck.gl/json": { - "version": "7.1.11", - "resolved": "https://registry.npmjs.org/@deck.gl/json/-/json-7.1.11.tgz", - "integrity": "sha512-obYAXq5VZ0qCTVS8hopS64aXGicUeBNg0/03AAfo+Q5z62cNqagAktGKVZMUsJ13bV8CPohJ2zRWMXO+mAJtew==", + "version": "8.5.2", + "resolved": "https://registry.npmjs.org/@deck.gl/json/-/json-8.5.2.tgz", + "integrity": "sha512-lVS16bvPfLUSidgBURZvGbWEjgK8GjLWlp1iGuLvua2W6TnWIyiKa6a3XoebgeXd8kqwSbQxhNnuSVPX+Di6Rg==", "requires": { - "d3-dsv": "^1.0.8" + "d3-dsv": "^1.0.8", + "expression-eval": "^2.0.0" } }, "@deck.gl/layers": { - "version": "7.1.11", - "resolved": "https://registry.npmjs.org/@deck.gl/layers/-/layers-7.1.11.tgz", - "integrity": "sha512-hOylm7Pf3CSvqpDoiCJLnqLAU3PAePISskJ5jjhpXtgHBrm1/Gk4boP4/7t7kFZdbSvVIXin13pPRbT0SWCRPw==", + "version": "8.5.2", + "resolved": "https://registry.npmjs.org/@deck.gl/layers/-/layers-8.5.2.tgz", + "integrity": "sha512-HmpE3qf9CI7sU/xa2DMCNg31pzpzK5XuUHyC70dsLq8AV7Sm3vZQz17KMU/CWSZpVr7yQ8uxTeSQARiv/zeOFQ==", "requires": { - "@loaders.gl/core": "^1.0.3", - "@loaders.gl/images": "^1.0.3", + "@loaders.gl/images": "^3.0.6", "@mapbox/tiny-sdf": "^1.1.0", + "@math.gl/polygon": "^3.5.3", "earcut": "^2.0.6" } }, "@deck.gl/mapbox": { - "version": "7.1.11", - "resolved": "https://registry.npmjs.org/@deck.gl/mapbox/-/mapbox-7.1.11.tgz", - "integrity": "sha512-V4cc9vwXzAOBtWV8x+WtvPVXElGChogkvQketeR2uhz6wIHuH+3sBBRg/Ma476w/II+DKjeHg2AzAZeX3SK7yQ==" + "version": "8.5.2", + "resolved": "https://registry.npmjs.org/@deck.gl/mapbox/-/mapbox-8.5.2.tgz", + "integrity": "sha512-nMpzfdPFBVthT+EMgIcKo4YO6bZCqADQtqnxIFtfofZIiKS6R5OSuJ3sXPSNZ9ReCJGzdmndEz7/Qtm9Sia/bA==", + "requires": {} }, "@deck.gl/mesh-layers": { - "version": "7.1.11", - "resolved": "https://registry.npmjs.org/@deck.gl/mesh-layers/-/mesh-layers-7.1.11.tgz", - "integrity": "sha512-rI8ffUNh7ac2GpMcGLEiKyRarOPeLfVRlMRKjl9LXU61Wgx6DaHqsMmeqxzjoXEzgiRlY/XgCjepVg0dY6btlQ==", + "version": "8.5.2", + "resolved": "https://registry.npmjs.org/@deck.gl/mesh-layers/-/mesh-layers-8.5.2.tgz", + "integrity": "sha512-dUfQyGjm5CYQg9AQdRsGtEEXGSGHxifPlws0zWWoj1r757wjqM0aZ663TUJEsJQDTLNOvbBLGTiuFeCBUoKO4Q==", "requires": { - "@loaders.gl/core": "^1.0.3", - "@loaders.gl/images": "^1.0.3" + "@loaders.gl/gltf": "^3.0.6", + "@luma.gl/experimental": "^8.5.4", + "@luma.gl/shadertools": "^8.5.4" } }, "@deck.gl/react": { - "version": "7.1.11", - "resolved": "https://registry.npmjs.org/@deck.gl/react/-/react-7.1.11.tgz", - "integrity": "sha512-WUzxhvM3jZIZkBAQgdQR+tFBAVDm5opLCKMWI9YkJUsdJzdv9uwiWCsk3Se1pCTFIa5Asb8U6YAi1CHl+OOFyA==", + "version": "8.5.2", + "resolved": "https://registry.npmjs.org/@deck.gl/react/-/react-8.5.2.tgz", + "integrity": "sha512-h7AJ9nPY1PTjrAVP7T1fvWDChWZrVOsEfYIoEP4W6ILSjvDqEQfVL0+9RhjUwQV2nKrg0QmpqCmbfOrgKQQbYw==", "requires": { "prop-types": "^15.6.0" } @@ -54803,97 +55551,219 @@ } } }, + "@loaders.gl/3d-tiles": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/@loaders.gl/3d-tiles/-/3d-tiles-3.0.8.tgz", + "integrity": "sha512-jZeOyDPGD2wEkTLW4Do9A4UUQ+OGjhhNXztB0AsttZ69OpkmsxJXb76xxwevf+eThrsTgSTjZ06eC5DHX0kyXA==", + "requires": { + "@loaders.gl/core": "3.0.8", + "@loaders.gl/draco": "3.0.8", + "@loaders.gl/gltf": "3.0.8", + "@loaders.gl/loader-utils": "3.0.8", + "@loaders.gl/math": "3.0.8", + "@loaders.gl/tiles": "3.0.8", + "@math.gl/core": "^3.5.1", + "@math.gl/geospatial": "^3.5.1" + } + }, "@loaders.gl/core": { - "version": "1.3.7", - "resolved": "https://registry.npmjs.org/@loaders.gl/core/-/core-1.3.7.tgz", - "integrity": "sha512-dFZkJQc+i2PoqlBMz/aO8Gnn0y6ICafQp8u6cTpCm96h/HHulE8qDBodQlHGHn9EMJDSgVl/zjni+QhqIK31dg==", + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/@loaders.gl/core/-/core-3.0.8.tgz", + "integrity": "sha512-FIfbhMkoRX2JonEHXHgClC7jwOSsEwvvmjlaTMRAY+gFKvJPGmegkp4VgUZquLFf6GedJt/1TuMMvAX6gdq1pg==", "requires": { - "@babel/runtime": "^7.3.1" + "@babel/runtime": "^7.3.1", + "@loaders.gl/loader-utils": "3.0.8", + "@loaders.gl/worker-utils": "3.0.8", + "probe.gl": "^3.4.0" + } + }, + "@loaders.gl/draco": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/@loaders.gl/draco/-/draco-3.0.8.tgz", + "integrity": "sha512-ZCXzXNHWQ7H0qk/kC+rWzjMWjLzZGzQcDbdpIuy8xJdp4rTpmMkLUseFPby8vhkmIaqxWPwPB6mx/vM7L6JENg==", + "requires": { + "@babel/runtime": "^7.3.1", + "@loaders.gl/loader-utils": "3.0.8", + "@loaders.gl/schema": "3.0.8", + "@loaders.gl/worker-utils": "3.0.8", + "draco3d": "1.4.1" + } + }, + "@loaders.gl/gis": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/@loaders.gl/gis/-/gis-3.0.8.tgz", + "integrity": "sha512-7NL+lIb7NezlMupYskVil6M3RZunXJl+TyaVAW82GLbzPSOq+m/G7h3+z0GBa8iv/U/I+cB5BhSN+GZmvFwqEA==", + "requires": { + "@loaders.gl/loader-utils": "3.0.8", + "@loaders.gl/schema": "3.0.8", + "@mapbox/vector-tile": "^1.3.1", + "pbf": "^3.2.1" + } + }, + "@loaders.gl/gltf": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/@loaders.gl/gltf/-/gltf-3.0.8.tgz", + "integrity": "sha512-4PXWTlqyvlbZE2Vp4iQ+Y87ZO1WuRvSlbImDhygd0hoINfmJ9ObxrFS3yJcpJTu007nWxXorNVEOKyuoo+4Iyw==", + "requires": { + "@loaders.gl/core": "3.0.8", + "@loaders.gl/draco": "3.0.8", + "@loaders.gl/images": "3.0.8", + "@loaders.gl/loader-utils": "3.0.8" } }, "@loaders.gl/images": { - "version": "1.3.7", - "resolved": "https://registry.npmjs.org/@loaders.gl/images/-/images-1.3.7.tgz", - "integrity": "sha512-TKqW94vjvWc4RIChhr0Yx6HaVTe8K6h6GFeXcahsKeCxq9/k2qpcigRkXfmb6/37dkp2Qy5COHp73ECgN/q+NA==" + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/@loaders.gl/images/-/images-3.0.8.tgz", + "integrity": "sha512-rO2cIYJYlMs/uO9YSoF4/BEA4p/9xQ3gHZ1sIJkPYVnDqzpbu8nvUjWTQqIdL/MkQBTW8tz3twCdM+B6G9Fa2w==", + "requires": { + "@loaders.gl/loader-utils": "3.0.8" + } + }, + "@loaders.gl/loader-utils": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/@loaders.gl/loader-utils/-/loader-utils-3.0.8.tgz", + "integrity": "sha512-PW1WyyQ+LXkqoGHBZHsmfNQkKiLAYf1gok+kHnHvY9fCzhJeA1iTNEUKPXGXKgS00m/k5cBTkOWAaOG9KRvBCQ==", + "requires": { + "@babel/runtime": "^7.3.1", + "@loaders.gl/worker-utils": "3.0.8", + "@probe.gl/stats": "^3.4.0" + } + }, + "@loaders.gl/math": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/@loaders.gl/math/-/math-3.0.8.tgz", + "integrity": "sha512-jfFpxxr4Bq5JfOPqLVJc4JJGoGGvVTOCWiJhnTtSAKhaNSwldmNWaZ0w8E2nlgPKPMAHiTRKOQnd9sSY5m66Cw==", + "requires": { + "@loaders.gl/images": "3.0.8", + "@loaders.gl/loader-utils": "3.0.8", + "@math.gl/core": "^3.5.1" + } + }, + "@loaders.gl/mvt": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/@loaders.gl/mvt/-/mvt-3.0.8.tgz", + "integrity": "sha512-Jk1QTHgpxMsUT01w5IJJ2en9qq0yOZcL2wGXVc7CFp2h6inB22rC3drUwq1mUNGe6iy3EWIo7EeJVd9B+5JyTQ==", + "requires": { + "@loaders.gl/gis": "3.0.8", + "@loaders.gl/loader-utils": "3.0.8", + "@math.gl/polygon": "^3.5.1", + "pbf": "^3.2.1" + } + }, + "@loaders.gl/schema": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/@loaders.gl/schema/-/schema-3.0.8.tgz", + "integrity": "sha512-yne5WE7fZZWFl2zF8fzDlYhPVJua6h6mTCSmlQ5pryaMXTZS9mfzXXIFWRL3kswqnQTu/QNFdyFj1mP0haF24w==", + "requires": { + "@types/geojson": "^7946.0.7", + "apache-arrow": "^4.0.0", + "d3-dsv": "^1.2.0" + } + }, + "@loaders.gl/terrain": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/@loaders.gl/terrain/-/terrain-3.0.8.tgz", + "integrity": "sha512-MtOAYEB/xJB4CN4B0YNPkO4v1ZY332joxiOHQI1x37x4sWVAqOrKLr9jB42sZCB8aINi2WMWGiErtf9wh9L5Pg==", + "requires": { + "@babel/runtime": "^7.3.1", + "@loaders.gl/loader-utils": "3.0.8", + "@loaders.gl/schema": "3.0.8", + "@mapbox/martini": "^0.2.0" + } + }, + "@loaders.gl/tiles": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/@loaders.gl/tiles/-/tiles-3.0.8.tgz", + "integrity": "sha512-Rc+yHFdQg2sYmcYkwvszukFWdm9EW354F9HUR7y/oauos6tsdo4YTj31zgytaYR63/EqWQ7kwI29/eePEcutzg==", + "requires": { + "@loaders.gl/core": "3.0.8", + "@loaders.gl/loader-utils": "3.0.8", + "@loaders.gl/math": "3.0.8", + "@math.gl/core": "^3.5.1", + "@math.gl/culling": "^3.5.1", + "@math.gl/geospatial": "^3.5.1", + "@math.gl/web-mercator": "^3.5.1", + "@probe.gl/stats": "^3.4.0" + } + }, + "@loaders.gl/worker-utils": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/@loaders.gl/worker-utils/-/worker-utils-3.0.8.tgz", + "integrity": "sha512-Pg72HuXPcL725TrOlOr83xloVUHj6OMWmno1dI8ccuqfOBsgoRjxNZrcSvwBzfK8tFCzuN2X30I+mHl3BkuYLw==", + "requires": { + "@babel/runtime": "^7.3.1" + } }, "@luma.gl/constants": { - "version": "7.3.2", - "resolved": "https://registry.npmjs.org/@luma.gl/constants/-/constants-7.3.2.tgz", - "integrity": "sha512-hr6JOOwsGPjjoHnil4sQ6AWsc8P6XXYtRL10TwNYfFTcNxrhSrjQvutYoCzXHH5U0vfHBfPMMUyLASK9FqiHOA==" + "version": "8.5.4", + "resolved": "https://registry.npmjs.org/@luma.gl/constants/-/constants-8.5.4.tgz", + "integrity": "sha512-lrA4ja92om/gDHYOvM9itL5S7FVzjKulyknDz6S+Y7gmgHgXk2ln1Xar5zUCsLnhAYx4glHITXGH5Y5rdWgT1Q==" }, "@luma.gl/core": { - "version": "7.3.2", - "resolved": "https://registry.npmjs.org/@luma.gl/core/-/core-7.3.2.tgz", - "integrity": "sha512-XyQPSUJRkZcc//gVX0AgjLLNTkCOO68NRnm7RkIhikRBEUdovb4IOcpmWMCB1/Gyj4hzg/Z1FOAVT4pG1E+agw==", + "version": "8.5.4", + "resolved": "https://registry.npmjs.org/@luma.gl/core/-/core-8.5.4.tgz", + "integrity": "sha512-+saDz1D3mcPd53vgbG60ryg1w5CF9Z2wdakKHzR810VoJLw97t4aNdg/eNgyWOvbOHxaKJBPm8K0sGjej67+jw==", "requires": { "@babel/runtime": "^7.0.0", - "@luma.gl/constants": "7.3.2", - "@luma.gl/shadertools": "7.3.2", - "@luma.gl/webgl": "7.3.2", - "@luma.gl/webgl-state-tracker": "7.3.2", - "@luma.gl/webgl2-polyfill": "7.3.2", - "math.gl": "^3.0.0", - "probe.gl": "^3.1.1", - "seer": "^0.2.4" - }, - "dependencies": { - "math.gl": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/math.gl/-/math.gl-3.4.1.tgz", - "integrity": "sha512-D33ZXryVFcHu1YJ+fgcNp2MkyK+mEfHesHMdQUZBz2hFqIsAwXovM1sJ+0rTcs8IyTFmuRJ2ayHf1igEJEOM2g==", - "requires": { - "@math.gl/core": "3.4.1" - } - } + "@luma.gl/constants": "8.5.4", + "@luma.gl/engine": "8.5.4", + "@luma.gl/gltools": "8.5.4", + "@luma.gl/shadertools": "8.5.4", + "@luma.gl/webgl": "8.5.4" } }, - "@luma.gl/shadertools": { - "version": "7.3.2", - "resolved": "https://registry.npmjs.org/@luma.gl/shadertools/-/shadertools-7.3.2.tgz", - "integrity": "sha512-GiOZTvdEr164zYFy1DNRc7mzduSWLNJ34s+YbkJ/0i07E6tK7gHgM29QNCZ/gROvUDDJ5CHxngZqGkb+XquOMQ==", + "@luma.gl/engine": { + "version": "8.5.4", + "resolved": "https://registry.npmjs.org/@luma.gl/engine/-/engine-8.5.4.tgz", + "integrity": "sha512-Sfv972IzvR9s9kKWugs67XQUh9jC0e/PpBrzvyGVnPU4XvFq42RZVF73pzEklVU6AlpR8Zg5CPtxGdhyOHtT7w==", "requires": { "@babel/runtime": "^7.0.0", - "math.gl": "^3.0.0" - }, - "dependencies": { - "math.gl": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/math.gl/-/math.gl-3.4.1.tgz", - "integrity": "sha512-D33ZXryVFcHu1YJ+fgcNp2MkyK+mEfHesHMdQUZBz2hFqIsAwXovM1sJ+0rTcs8IyTFmuRJ2ayHf1igEJEOM2g==", - "requires": { - "@math.gl/core": "3.4.1" - } - } + "@luma.gl/constants": "8.5.4", + "@luma.gl/gltools": "8.5.4", + "@luma.gl/shadertools": "8.5.4", + "@luma.gl/webgl": "8.5.4", + "@math.gl/core": "^3.5.0", + "probe.gl": "^3.4.0" } }, - "@luma.gl/webgl": { - "version": "7.3.2", - "resolved": "https://registry.npmjs.org/@luma.gl/webgl/-/webgl-7.3.2.tgz", - "integrity": "sha512-eWoPPRJOF5xSpqgggdwspsm8exclwxz20c8vqu8D1b3LJTY7cEpq57CMLvITHcJMMJ834TX/r598efTcF76lpw==", + "@luma.gl/experimental": { + "version": "8.5.4", + "resolved": "https://registry.npmjs.org/@luma.gl/experimental/-/experimental-8.5.4.tgz", + "integrity": "sha512-09waqRhgIrw+Sq0/in4tw4jPag5YsFfV1nEHJaLAg5RFv92S53IEubSJgkuG02HoOBkPxQ7KYvs9VNmriisnYg==", + "requires": { + "@luma.gl/constants": "8.5.4", + "@math.gl/core": "^3.5.0", + "earcut": "^2.0.6" + } + }, + "@luma.gl/gltools": { + "version": "8.5.4", + "resolved": "https://registry.npmjs.org/@luma.gl/gltools/-/gltools-8.5.4.tgz", + "integrity": "sha512-JotiPuymQz2Xc41AYlS2moJC/EHxU+OX/OMKi0+/MeOlEFLsdochgTA0I64j8yofLTXdeiGCneGtD1Ao8fk+bw==", "requires": { "@babel/runtime": "^7.0.0", - "@luma.gl/constants": "7.3.2", - "@luma.gl/webgl-state-tracker": "7.3.2", - "@luma.gl/webgl2-polyfill": "7.3.2", - "probe.gl": "^3.1.1" + "@luma.gl/constants": "8.5.4", + "probe.gl": "^3.4.0" } }, - "@luma.gl/webgl-state-tracker": { - "version": "7.3.2", - "resolved": "https://registry.npmjs.org/@luma.gl/webgl-state-tracker/-/webgl-state-tracker-7.3.2.tgz", - "integrity": "sha512-0LuK3veReSm2UPOiDwC2CRDeE2xk4irqXdhyFO0WSAU1w+YhzbD1hGbjizGczvgfkbz8dFl9h98LbbH75efcKw==", + "@luma.gl/shadertools": { + "version": "8.5.4", + "resolved": "https://registry.npmjs.org/@luma.gl/shadertools/-/shadertools-8.5.4.tgz", + "integrity": "sha512-rwLBLrACi75aWnuJm8rVKCQnJR2sMTCxHuexfjHJ7Uecl0vVcVJZT7c9EnCFaz5LUTNbdupvuhq0SKNckKiKmw==", "requires": { "@babel/runtime": "^7.0.0", - "@luma.gl/constants": "7.3.2" + "@math.gl/core": "^3.5.0" } }, - "@luma.gl/webgl2-polyfill": { - "version": "7.3.2", - "resolved": "https://registry.npmjs.org/@luma.gl/webgl2-polyfill/-/webgl2-polyfill-7.3.2.tgz", - "integrity": "sha512-PMt5xqQ+u7tIqfUaL3s4nuWl604WFNcl1F1ohSUFeEzIIuxFiF6gsdEEvC5VqGoMFxI8T4FOTSeHYIr6uP4+4w==", + "@luma.gl/webgl": { + "version": "8.5.4", + "resolved": "https://registry.npmjs.org/@luma.gl/webgl/-/webgl-8.5.4.tgz", + "integrity": "sha512-dWy4dhTbtvDO9zQBdx1Yb+DxNx/1JWV9rhhJxJUtTKbGZSX0RjkASTT6GBWMl5jrH1JYJefS1wswHmmPVXjK0Q==", "requires": { "@babel/runtime": "^7.0.0", - "@luma.gl/constants": "7.3.2" + "@luma.gl/constants": "8.5.4", + "@luma.gl/gltools": "8.5.4", + "probe.gl": "^3.4.0" } }, "@mapbox/geojson-area": { @@ -54930,15 +55800,20 @@ "resolved": "https://registry.npmjs.org/@mapbox/mapbox-gl-supported/-/mapbox-gl-supported-1.5.0.tgz", "integrity": "sha512-/PT1P6DNf7vjEEiPkVIRJkvibbqWtqnyGaBz3nfRdcxclNSnSdaLU5tfAgcD7I8Yt5i+L19s406YLl1koLnLbg==" }, + "@mapbox/martini": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/@mapbox/martini/-/martini-0.2.0.tgz", + "integrity": "sha512-7hFhtkb0KTLEls+TRw/rWayq5EeHtTaErgm/NskVoXmtgAQu/9D299aeyj6mzAR/6XUnYRp2lU+4IcrYRFjVsQ==" + }, "@mapbox/point-geometry": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/@mapbox/point-geometry/-/point-geometry-0.1.0.tgz", "integrity": "sha1-ioP5M1x4YO/6Lu7KJUMyqgru2PI=" }, "@mapbox/tiny-sdf": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@mapbox/tiny-sdf/-/tiny-sdf-1.1.1.tgz", - "integrity": "sha512-Ihn1nZcGIswJ5XGbgFAvVumOgWpvIjBX9jiRlIl46uQG9vJOF51ViBYHF95rEZupuyQbEmhLaDPLQlU7fUTsBg==" + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/@mapbox/tiny-sdf/-/tiny-sdf-1.2.5.tgz", + "integrity": "sha512-cD8A/zJlm6fdJOk6DqPUV8mcpyJkRz2x2R+/fYcWDYG3oWbG7/L7Yl/WqQ1VZCjnL9OTIMAn6c+BC5Eru4sQEw==" }, "@mapbox/unitbezier": { "version": "0.0.0", @@ -54959,18 +55834,46 @@ "integrity": "sha512-Es6WcD0nO5l+2BOQS4uLfNPYQaNDfbot3X1XUoloz+x0mPDS3eeORZJl06HXjwBG1fOGwCRnzK88LMdxKRrd6Q==" }, "@math.gl/core": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/@math.gl/core/-/core-3.4.1.tgz", - "integrity": "sha512-miAZL/WPU0B5hKrcg1K2nPU2GnOK6X84bwLoD0eTt2n7qT46ffh51Xu21V9kQp/cisE3l1ypukqSV/VHeaNxhQ==", + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/@math.gl/core/-/core-3.5.3.tgz", + "integrity": "sha512-TaSnvG0qFh1VxeNW5L58jSx0nJUMWMpUl6zo6Z3ScQzFySG5cicGOBzk/D40RkIZWPazCKCZ+ZThg5npSK9y3g==", + "requires": { + "@babel/runtime": "^7.12.0", + "gl-matrix": "^3.0.0" + } + }, + "@math.gl/culling": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/@math.gl/culling/-/culling-3.5.3.tgz", + "integrity": "sha512-ABpAcrvoIOLSm1EUkwgDem4RfO28HWPBs/+taZ/ZSpJG6KiVPklpKU1NCK+05HuJStkpFZ+XlWtehWU6FAMCyA==", + "requires": { + "@babel/runtime": "^7.12.0", + "@math.gl/core": "3.5.3", + "gl-matrix": "^3.0.0" + } + }, + "@math.gl/geospatial": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/@math.gl/geospatial/-/geospatial-3.5.3.tgz", + "integrity": "sha512-cnc8VMQrt30JmlG200VDJmmvSjaGW57gY9KEZ+raapxyyFyfDNuAuIrIxe+zbK66FbvFWTbJlDaNmKqVG+ohyw==", "requires": { "@babel/runtime": "^7.12.0", + "@math.gl/core": "3.5.3", "gl-matrix": "^3.0.0" } }, + "@math.gl/polygon": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/@math.gl/polygon/-/polygon-3.5.3.tgz", + "integrity": "sha512-VktscmyQg/Rd56nJk0Nj/UyvnPDbsnZNMWCdl3G5AYenYzLWy6h4FEWhLx8pD+Xw7VuFot8LR4WAK2TPzXzrWw==", + "requires": { + "@math.gl/core": "3.5.3" + } + }, "@math.gl/web-mercator": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/@math.gl/web-mercator/-/web-mercator-3.4.1.tgz", - "integrity": "sha512-5LAVmo5U25GY5YIxbI3D0J7r97B9AM5pAcWxnF9YhJx44DSVAYfMdiSISOfS+ivKuBFX44mFZvV9j75QY5aDkQ==", + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/@math.gl/web-mercator/-/web-mercator-3.5.3.tgz", + "integrity": "sha512-WZE9ALeTS4n3HDgkqTxcNLBU7DL0mjmPXSrcqSZIUeDY00+LCtNvMQWUAwqolpB7nD71vD6HLW8delzVuy4teA==", "requires": { "@babel/runtime": "^7.12.0", "gl-matrix": "^3.0.0" @@ -55457,9 +56360,9 @@ "dev": true }, "@probe.gl/stats": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/@probe.gl/stats/-/stats-3.3.0.tgz", - "integrity": "sha512-CV4c3EgallqZTO88u34/u9L5asL0nCVP1BEkb4qcXlh8Qz2Vmygbyjz1ViQsct6rSi2lJ52lo6W0PnlpZJJvcA==", + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/@probe.gl/stats/-/stats-3.4.0.tgz", + "integrity": "sha512-Gl37r9qGuiKadIvTZdSZvzCNOttJYw6RcY1oT0oDuB8r2uhuZAdSMQRQTy9FTinp6MY6O9wngGnV6EpQ8wSBAw==", "requires": { "@babel/runtime": "^7.0.0" } @@ -60547,20 +61450,20 @@ } }, "@superset-ui/chart-controls": { - "version": "0.17.79", - "resolved": "https://registry.npmjs.org/@superset-ui/chart-controls/-/chart-controls-0.17.79.tgz", - "integrity": "sha512-Mdgi6/ZYZHrDSyA88+JJZGyp2g0ZVM/2n1aNkKk9pQYr4E7W8OcvFX4HksjyWvicEsR8sQR3q3PczHUuwbm5OA==", + "version": "0.17.84", + "resolved": "https://registry.npmjs.org/@superset-ui/chart-controls/-/chart-controls-0.17.84.tgz", + "integrity": "sha512-tLbTdYegaez2D1N3eIHIkfpWyI3i/SoLQfY7asV1YadKcSZfff1BpSBDV2vbGom1hehsftD09sIV3uHm4wjkAg==", "requires": { "@react-icons/all-files": "^4.1.0", - "@superset-ui/core": "0.17.75", + "@superset-ui/core": "0.17.81", "lodash": "^4.17.15", "prop-types": "^15.7.2" } }, "@superset-ui/core": { - "version": "0.17.75", - "resolved": "https://registry.npmjs.org/@superset-ui/core/-/core-0.17.75.tgz", - "integrity": "sha512-9g9YiQzsI4PFi9963DnizVghuejpHKSnbjGyyYkZa3SDSqTMLFkj4tuBd/s+Skayoo1DNoxzD2ZMMw41D81RcA==", + "version": "0.17.81", + "resolved": "https://registry.npmjs.org/@superset-ui/core/-/core-0.17.81.tgz", + "integrity": "sha512-CaDihqqwFnqtO9yWHxPbZh3MKTot66Zd27ifdIYQCVEMQwz5OpP6zUbULekq7NAbPMHwf7Ju3FOzN0uEzWwSmw==", "requires": { "@babel/runtime": "^7.1.2", "@emotion/styled": "^11.3.0", @@ -60680,12 +61583,12 @@ } }, "@superset-ui/legacy-plugin-chart-calendar": { - "version": "0.17.79", - "resolved": "https://registry.npmjs.org/@superset-ui/legacy-plugin-chart-calendar/-/legacy-plugin-chart-calendar-0.17.79.tgz", - "integrity": "sha512-hgKVzR0m0eS6hP2BTk7f3dY/FnWDWKsNDmSie9TbFn04XdOYnf4H6p253rf+sI0TtQ6/G2DM39nKxUehm8wJfQ==", + "version": "0.17.84", + "resolved": "https://registry.npmjs.org/@superset-ui/legacy-plugin-chart-calendar/-/legacy-plugin-chart-calendar-0.17.84.tgz", + "integrity": "sha512-xalLL56JnXPxlDMjLxJqwQMy4Myaq1uOww6dyOBfgxEH1eat+V0tv4Aoh9i5RCYnafXymKTX+oqS0BkUYebwPQ==", "requires": { - "@superset-ui/chart-controls": "0.17.79", - "@superset-ui/core": "0.17.75", + "@superset-ui/chart-controls": "0.17.84", + "@superset-ui/core": "0.17.81", "d3-array": "^2.0.3", "d3-selection": "^1.4.0", "d3-tip": "^0.9.1", @@ -60703,24 +61606,24 @@ } }, "@superset-ui/legacy-plugin-chart-chord": { - "version": "0.17.79", - "resolved": "https://registry.npmjs.org/@superset-ui/legacy-plugin-chart-chord/-/legacy-plugin-chart-chord-0.17.79.tgz", - "integrity": "sha512-okUKLettzXkqkcZ4GpeA8IchK6FMrb9CjuRYNB8U3jdXypNdwbYN1EKkuAm4H0AUvk3oBhr1k/2BTkG1y8UGeg==", + "version": "0.17.84", + "resolved": "https://registry.npmjs.org/@superset-ui/legacy-plugin-chart-chord/-/legacy-plugin-chart-chord-0.17.84.tgz", + "integrity": "sha512-7jhc+/iWrl6brVqQDKxEtNq3btPgGVtidzuz1LBLNz6Nc0EwMvBVAppnZvwvVgBqdZQ2T0C56wZRqwDgmj/Lxw==", "requires": { - "@superset-ui/chart-controls": "0.17.79", - "@superset-ui/core": "0.17.75", + "@superset-ui/chart-controls": "0.17.84", + "@superset-ui/core": "0.17.81", "d3": "^3.5.17", "prop-types": "^15.6.2", "react": "^16.13.1" } }, "@superset-ui/legacy-plugin-chart-country-map": { - "version": "0.17.79", - "resolved": "https://registry.npmjs.org/@superset-ui/legacy-plugin-chart-country-map/-/legacy-plugin-chart-country-map-0.17.79.tgz", - "integrity": "sha512-xQFCQ5Baf14HU/NOCLcCjRobGz+pYrjkz3aYXuj+db6xjz1wVdZUBtLM2atD7TzHM7Yn5jHdpQa8XRUUHQc2cg==", + "version": "0.17.84", + "resolved": "https://registry.npmjs.org/@superset-ui/legacy-plugin-chart-country-map/-/legacy-plugin-chart-country-map-0.17.84.tgz", + "integrity": "sha512-POFH/ZfPKOiNKA1BbeU/5vlwfU6BALph/XsQacP4YfBD7xVFGEZWDYKWH/aZky+GLCZWIp6v7h7EVzyNmC8GJQ==", "requires": { - "@superset-ui/chart-controls": "0.17.79", - "@superset-ui/core": "0.17.75", + "@superset-ui/chart-controls": "0.17.84", + "@superset-ui/core": "0.17.81", "d3": "^3.5.17", "d3-array": "^2.0.3", "prop-types": "^15.6.2" @@ -60737,34 +61640,34 @@ } }, "@superset-ui/legacy-plugin-chart-event-flow": { - "version": "0.17.79", - "resolved": "https://registry.npmjs.org/@superset-ui/legacy-plugin-chart-event-flow/-/legacy-plugin-chart-event-flow-0.17.79.tgz", - "integrity": "sha512-hC0sen6ojNaZ+WIOtzEjEafPK2uJDUP3yF1dx9Z2QuoYATHthz74X5KHKWit/l5qi/R4jEH5ORw4M4qAFytwDw==", + "version": "0.17.84", + "resolved": "https://registry.npmjs.org/@superset-ui/legacy-plugin-chart-event-flow/-/legacy-plugin-chart-event-flow-0.17.84.tgz", + "integrity": "sha512-7zew1e5FRPUt06umJez3+zau/0LXtWWWDyIvy/0DiSu5i/Ds4zhru5ZmLTXhOZ6heU5BEGf/cfIV1G4bF6S00A==", "requires": { "@data-ui/event-flow": "^0.0.84", - "@superset-ui/chart-controls": "0.17.79", - "@superset-ui/core": "0.17.75", + "@superset-ui/chart-controls": "0.17.84", + "@superset-ui/core": "0.17.81", "prop-types": "^15.6.2" } }, "@superset-ui/legacy-plugin-chart-force-directed": { - "version": "0.17.79", - "resolved": "https://registry.npmjs.org/@superset-ui/legacy-plugin-chart-force-directed/-/legacy-plugin-chart-force-directed-0.17.79.tgz", - "integrity": "sha512-nhXyFgXuLqxURu5qFHc66NaD8T/8nBmNQEzDjJ+o7qrrMJeldgzAEjZGjoN1O014qiktA/D+nNKtyVmGeGRbIg==", + "version": "0.17.84", + "resolved": "https://registry.npmjs.org/@superset-ui/legacy-plugin-chart-force-directed/-/legacy-plugin-chart-force-directed-0.17.84.tgz", + "integrity": "sha512-GBfTI+2vfr9Y4vbT0azKqmdUJ32UGTRpw1PmuHTjw/ZQjoRts8Hyyw12o6zs0Ifj+0tIt5bqxbuaZgxuzEd/Pw==", "requires": { - "@superset-ui/chart-controls": "0.17.79", - "@superset-ui/core": "0.17.75", + "@superset-ui/chart-controls": "0.17.84", + "@superset-ui/core": "0.17.81", "d3": "^3.5.17", "prop-types": "^15.7.2" } }, "@superset-ui/legacy-plugin-chart-heatmap": { - "version": "0.17.79", - "resolved": "https://registry.npmjs.org/@superset-ui/legacy-plugin-chart-heatmap/-/legacy-plugin-chart-heatmap-0.17.79.tgz", - "integrity": "sha512-EkcK1d/1F91Eu3+/7RqeUuBJgYebaFATI+nrRmcZ9S80V+iEw9V/9d9dm7UetSxMA2afcK2gNrvTcZ86x5z1Sw==", + "version": "0.17.84", + "resolved": "https://registry.npmjs.org/@superset-ui/legacy-plugin-chart-heatmap/-/legacy-plugin-chart-heatmap-0.17.84.tgz", + "integrity": "sha512-ZJ3BBGRL9jz8SM9UZdKKhHseZ9IZqMVfH4J/IcjeOxvNq2a0Y544WILrzmUR0DgvO++Cy7cV0VSrcSkhy/mrQw==", "requires": { - "@superset-ui/chart-controls": "0.17.79", - "@superset-ui/core": "0.17.75", + "@superset-ui/chart-controls": "0.17.84", + "@superset-ui/core": "0.17.81", "d3": "^3.5.17", "d3-svg-legend": "^1.x", "d3-tip": "^0.9.1", @@ -60772,14 +61675,14 @@ } }, "@superset-ui/legacy-plugin-chart-histogram": { - "version": "0.17.79", - "resolved": "https://registry.npmjs.org/@superset-ui/legacy-plugin-chart-histogram/-/legacy-plugin-chart-histogram-0.17.79.tgz", - "integrity": "sha512-v9j3s11yqv5KgLwn7UIXoDzkBvkCnGt94l8Mh3QMWWfqSt2EENWVQSQ+yc9wV4ytpbIZepY+z8BDC6TWAiZdwg==", + "version": "0.17.84", + "resolved": "https://registry.npmjs.org/@superset-ui/legacy-plugin-chart-histogram/-/legacy-plugin-chart-histogram-0.17.84.tgz", + "integrity": "sha512-GaELpLkP9SFbPQnkzUte+fcKl2F++KEgEBINfS9Ek9pUMD1S/WlbevIEUUUSeAtI5rI89GN+0Qzi8MM0+D2WIw==", "requires": { "@data-ui/histogram": "^0.0.84", "@data-ui/theme": "^0.0.84", - "@superset-ui/chart-controls": "0.17.79", - "@superset-ui/core": "0.17.75", + "@superset-ui/chart-controls": "0.17.84", + "@superset-ui/core": "0.17.81", "@vx/legend": "^0.0.198", "@vx/responsive": "^0.0.199", "@vx/scale": "^0.0.197", @@ -60847,12 +61750,12 @@ } }, "@superset-ui/legacy-plugin-chart-horizon": { - "version": "0.17.79", - "resolved": "https://registry.npmjs.org/@superset-ui/legacy-plugin-chart-horizon/-/legacy-plugin-chart-horizon-0.17.79.tgz", - "integrity": "sha512-rG+PBv6sPkDKQ1ycfusdgq3oUwv6cv1n4hIfoETelsSMqx2PNtwh4gWA4eWqBp2OJR59huAMuUzsvB3xdcNCJA==", + "version": "0.17.84", + "resolved": "https://registry.npmjs.org/@superset-ui/legacy-plugin-chart-horizon/-/legacy-plugin-chart-horizon-0.17.84.tgz", + "integrity": "sha512-9xm91qfW1OXOjTSvNoDXpkUqfsCU9wMttUihs2pdg0hbzpCI65+L5eysV11JzGS0uGOGKLDEOWoSpzmX/xVZvQ==", "requires": { - "@superset-ui/chart-controls": "0.17.79", - "@superset-ui/core": "0.17.75", + "@superset-ui/chart-controls": "0.17.84", + "@superset-ui/core": "0.17.81", "d3-array": "^2.0.3", "d3-scale": "^3.0.1", "prop-types": "^15.6.2" @@ -60881,12 +61784,12 @@ } }, "@superset-ui/legacy-plugin-chart-map-box": { - "version": "0.17.79", - "resolved": "https://registry.npmjs.org/@superset-ui/legacy-plugin-chart-map-box/-/legacy-plugin-chart-map-box-0.17.79.tgz", - "integrity": "sha512-dlO+miiN9jnb3lCY1UwMSws/tr/wO6NBMRHeAzIh+j7I7qcDDtSuNnTG3kBc1LnvP6wqMhgCKU2e63K3aG0gYA==", + "version": "0.17.84", + "resolved": "https://registry.npmjs.org/@superset-ui/legacy-plugin-chart-map-box/-/legacy-plugin-chart-map-box-0.17.84.tgz", + "integrity": "sha512-vllEQe4HFTc5Rduac+klL97dcmPca/VDecos3v2nnkahNl447iuq+M08evfm2VnjXgD0QL4nLcliXwQjaZ2zsA==", "requires": { - "@superset-ui/chart-controls": "0.17.79", - "@superset-ui/core": "0.17.75", + "@superset-ui/chart-controls": "0.17.84", + "@superset-ui/core": "0.17.81", "immutable": "^3.8.2", "mapbox-gl": "^0.53.0", "prop-types": "^15.6.2", @@ -60903,118 +61806,118 @@ } }, "@superset-ui/legacy-plugin-chart-paired-t-test": { - "version": "0.17.79", - "resolved": "https://registry.npmjs.org/@superset-ui/legacy-plugin-chart-paired-t-test/-/legacy-plugin-chart-paired-t-test-0.17.79.tgz", - "integrity": "sha512-KWJvuXyM6viUVrARD33tupIjV2L6UGXkp64o3SnRybCuXFUbrLYrCfRlbv+t0IaSt8QgYvM2qT7pCt8iQ5RzMg==", + "version": "0.17.84", + "resolved": "https://registry.npmjs.org/@superset-ui/legacy-plugin-chart-paired-t-test/-/legacy-plugin-chart-paired-t-test-0.17.84.tgz", + "integrity": "sha512-2e/UsUzRz4VUnb3q8fLNg/ZGm+6044eD3pnyCDL09Nke21BFDV6jwd3H93ryYJo89qKn3uJLPuDAvcsreN5j+w==", "requires": { - "@superset-ui/chart-controls": "0.17.79", - "@superset-ui/core": "0.17.75", + "@superset-ui/chart-controls": "0.17.84", + "@superset-ui/core": "0.17.81", "distributions": "^1.0.0", "prop-types": "^15.6.2", "reactable": "^1.1.0" } }, "@superset-ui/legacy-plugin-chart-parallel-coordinates": { - "version": "0.17.79", - "resolved": "https://registry.npmjs.org/@superset-ui/legacy-plugin-chart-parallel-coordinates/-/legacy-plugin-chart-parallel-coordinates-0.17.79.tgz", - "integrity": "sha512-aliDFjhVuojAXkSeisMZ2uuRK++09A9aCchM1DTiHsI44ZT5GJoUi6Te5Rm/kNRKGyHfFjrXGJmJ3wbJaqxUOA==", + "version": "0.17.84", + "resolved": "https://registry.npmjs.org/@superset-ui/legacy-plugin-chart-parallel-coordinates/-/legacy-plugin-chart-parallel-coordinates-0.17.84.tgz", + "integrity": "sha512-p4OFm5jExsQz0uPMhUJ3K7Yp4mz4q99CMJDHNCWAsyYUmMQYSMcmUHBIBVFG0M8Y8oapnuLYvzJMl+ptbgr22A==", "requires": { - "@superset-ui/chart-controls": "0.17.79", - "@superset-ui/core": "0.17.75", + "@superset-ui/chart-controls": "0.17.84", + "@superset-ui/core": "0.17.81", "d3": "^3.5.17", "prop-types": "^15.7.2" } }, "@superset-ui/legacy-plugin-chart-partition": { - "version": "0.17.79", - "resolved": "https://registry.npmjs.org/@superset-ui/legacy-plugin-chart-partition/-/legacy-plugin-chart-partition-0.17.79.tgz", - "integrity": "sha512-Xh7Ozb+IweXX2SVuQeXlXnVXw2neErTLJ2rFzZz4voyZvcGH93C/rfeKT25QQwButfcfFI6SIXCAXgIwJ0VsRw==", + "version": "0.17.84", + "resolved": "https://registry.npmjs.org/@superset-ui/legacy-plugin-chart-partition/-/legacy-plugin-chart-partition-0.17.84.tgz", + "integrity": "sha512-J+2cyTdIfPmjlSuNaEkdaQrmWU0LEtMoqxalDube9G+cdQrQsrWW99O141LQaaATlxBT88JRfAArN/13WfFieQ==", "requires": { - "@superset-ui/chart-controls": "0.17.79", - "@superset-ui/core": "0.17.75", + "@superset-ui/chart-controls": "0.17.84", + "@superset-ui/core": "0.17.81", "d3": "^3.5.17", "d3-hierarchy": "^1.1.8", "prop-types": "^15.6.2" } }, "@superset-ui/legacy-plugin-chart-pivot-table": { - "version": "0.17.79", - "resolved": "https://registry.npmjs.org/@superset-ui/legacy-plugin-chart-pivot-table/-/legacy-plugin-chart-pivot-table-0.17.79.tgz", - "integrity": "sha512-GsVxldm0sRbd9jjGKmgaQ8uyqwlVBr/CYiifsxVRP3VcHRYaMX+1JgYMeko7mImbOpoo4GR1lnQvbzQCWH0yFg==", + "version": "0.17.84", + "resolved": "https://registry.npmjs.org/@superset-ui/legacy-plugin-chart-pivot-table/-/legacy-plugin-chart-pivot-table-0.17.84.tgz", + "integrity": "sha512-NXcaAzPEllzBYeQQVjexJUThgQxWRHY7mlGY2q3DDVCKq5EMakSucxv5Ma3vpBWD/nmiRTHm7F4ouVoK0b9FhA==", "requires": { - "@superset-ui/chart-controls": "0.17.79", - "@superset-ui/core": "0.17.75", + "@superset-ui/chart-controls": "0.17.84", + "@superset-ui/core": "0.17.81", "d3": "^3.5.17", "datatables.net-bs": "^1.10.15", "prop-types": "^15.6.2" } }, "@superset-ui/legacy-plugin-chart-rose": { - "version": "0.17.79", - "resolved": "https://registry.npmjs.org/@superset-ui/legacy-plugin-chart-rose/-/legacy-plugin-chart-rose-0.17.79.tgz", - "integrity": "sha512-rDT+C+3a8gMnA+QCatETSJ3GL3IPsiZ2aHWCXWdcbZo5exNwLYD8gZfyHf8do6LLBc46tSrErE8bXs5TDV2LYg==", + "version": "0.17.84", + "resolved": "https://registry.npmjs.org/@superset-ui/legacy-plugin-chart-rose/-/legacy-plugin-chart-rose-0.17.84.tgz", + "integrity": "sha512-r0Anl44JaBm4ivHErvpCcPU7RThxPuy7/tGY0jesfxghaPJ/cTMNkL6Tt4rErLQvLo7pVVO0gYpE3mLx+udNPw==", "requires": { - "@superset-ui/chart-controls": "0.17.79", - "@superset-ui/core": "0.17.75", + "@superset-ui/chart-controls": "0.17.84", + "@superset-ui/core": "0.17.81", "d3": "^3.5.17", "nvd3": "1.8.6", "prop-types": "^15.6.2" } }, "@superset-ui/legacy-plugin-chart-sankey": { - "version": "0.17.79", - "resolved": "https://registry.npmjs.org/@superset-ui/legacy-plugin-chart-sankey/-/legacy-plugin-chart-sankey-0.17.79.tgz", - "integrity": "sha512-3AMEH15bOInmSHF87f3lgSS9vwKTMYjo67h4NhIflfXMR3EveXCA8dIIJfgS6xYSmaGEE7OL6aeeQE5+rnj4pQ==", + "version": "0.17.84", + "resolved": "https://registry.npmjs.org/@superset-ui/legacy-plugin-chart-sankey/-/legacy-plugin-chart-sankey-0.17.84.tgz", + "integrity": "sha512-P9ArmxsOONfLEBQ1mlIrRHDDWaM336mZsGfsWpD7gcP7oz4hNMneyR9KwUsPanOqVaIf2rETvdXNL5d5ddFY0w==", "requires": { - "@superset-ui/chart-controls": "0.17.79", - "@superset-ui/core": "0.17.75", + "@superset-ui/chart-controls": "0.17.84", + "@superset-ui/core": "0.17.81", "d3": "^3.5.17", "d3-sankey": "^0.4.2", "prop-types": "^15.6.2" } }, "@superset-ui/legacy-plugin-chart-sankey-loop": { - "version": "0.17.79", - "resolved": "https://registry.npmjs.org/@superset-ui/legacy-plugin-chart-sankey-loop/-/legacy-plugin-chart-sankey-loop-0.17.79.tgz", - "integrity": "sha512-OdFBPQbE+vkN/fw9XqeM7lZ8f0xB2itXiwyOKei6MeC6G1cN45/DUlnTAY436ulRvZFhwLhel7g91TN8djSDoA==", + "version": "0.17.84", + "resolved": "https://registry.npmjs.org/@superset-ui/legacy-plugin-chart-sankey-loop/-/legacy-plugin-chart-sankey-loop-0.17.84.tgz", + "integrity": "sha512-PH+FajOKURiF7h+KMCsrMATBUR2Whiw5a6eMz+SkC3LoHVcWnpiSDh6F8ELBXfc1dhK0iQdrFWdCb8+Atpjvcg==", "requires": { - "@superset-ui/chart-controls": "0.17.79", - "@superset-ui/core": "0.17.75", + "@superset-ui/chart-controls": "0.17.84", + "@superset-ui/core": "0.17.81", "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.79", - "resolved": "https://registry.npmjs.org/@superset-ui/legacy-plugin-chart-sunburst/-/legacy-plugin-chart-sunburst-0.17.79.tgz", - "integrity": "sha512-VmRsKn/XHUlDKrQ2AQ+C1TRXIJ6m6ittKKuXMqz0XxZWs3jn5RUkNv0W8GuYg814abmZl/e1e0/3lgmYX6LyZg==", + "version": "0.17.84", + "resolved": "https://registry.npmjs.org/@superset-ui/legacy-plugin-chart-sunburst/-/legacy-plugin-chart-sunburst-0.17.84.tgz", + "integrity": "sha512-FSLKCWGzVsL+VL1DAD4Gsgt6swW9iqU2h+fW2O4UXIWlVdKCU7Xg012Lsh6QSt7lYJSQ3unnYtfMstYcpiR/HA==", "requires": { - "@superset-ui/chart-controls": "0.17.79", - "@superset-ui/core": "0.17.75", + "@superset-ui/chart-controls": "0.17.84", + "@superset-ui/core": "0.17.81", "d3": "^3.5.17", "prop-types": "^15.6.2" } }, "@superset-ui/legacy-plugin-chart-treemap": { - "version": "0.17.79", - "resolved": "https://registry.npmjs.org/@superset-ui/legacy-plugin-chart-treemap/-/legacy-plugin-chart-treemap-0.17.79.tgz", - "integrity": "sha512-b204bAeVodLiYyzout0a4HXmltptXD/81kX8aA94IIDCAoA7QhbAvb9W9wZcQiDJQwu7MVsS+KPqyyv35Mxo8A==", + "version": "0.17.84", + "resolved": "https://registry.npmjs.org/@superset-ui/legacy-plugin-chart-treemap/-/legacy-plugin-chart-treemap-0.17.84.tgz", + "integrity": "sha512-yxjlWn9RVBw4PI3EKisHb80sLLHAZuVqykzeFebSXW4jlFYzgfQea3k5pCymz5QPDfYjM8c4DULMiffbbrnKmA==", "requires": { - "@superset-ui/chart-controls": "0.17.79", - "@superset-ui/core": "0.17.75", + "@superset-ui/chart-controls": "0.17.84", + "@superset-ui/core": "0.17.81", "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.79", - "resolved": "https://registry.npmjs.org/@superset-ui/legacy-plugin-chart-world-map/-/legacy-plugin-chart-world-map-0.17.79.tgz", - "integrity": "sha512-4iVqpwn4zlI9T4b9venoRLgoEy0+lZKaWbccmUkXPvYL+gpUtkB3z7KuFfp/MWWyruLRCKCd1z2Fedm4wv8ELA==", + "version": "0.17.84", + "resolved": "https://registry.npmjs.org/@superset-ui/legacy-plugin-chart-world-map/-/legacy-plugin-chart-world-map-0.17.84.tgz", + "integrity": "sha512-KJmt2jKXJ/1jade+bO0D36DNFl74oDJsdCr/2wuPRQgFTO8xkqoQKk/y+7on4BDSkHUfTExDuOjnnsS3ijdXjA==", "requires": { - "@superset-ui/chart-controls": "0.17.79", - "@superset-ui/core": "0.17.75", + "@superset-ui/chart-controls": "0.17.84", + "@superset-ui/core": "0.17.81", "d3": "^3.5.17", "d3-array": "^2.4.0", "d3-color": "^1.4.1", @@ -61029,22 +61932,17 @@ "requires": { "internmap": "^1.0.0" } - }, - "d3-color": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-1.4.1.tgz", - "integrity": "sha512-p2sTHSLCJI2QKunbGb7ocOh7DgTAn8IrLx21QRc/BSnodXM4sv6aLQlnfpvehFMLZEfBc6g9pH9SWQccFYfJ9Q==" } } }, "@superset-ui/legacy-preset-chart-big-number": { - "version": "0.17.79", - "resolved": "https://registry.npmjs.org/@superset-ui/legacy-preset-chart-big-number/-/legacy-preset-chart-big-number-0.17.79.tgz", - "integrity": "sha512-+OjEbyYugynYGbnobP6pNI59bMXfsaqgX6z+oz7fxCtb5BWxTiciz9W7aKhAqT6XM+I8gkkHUKFj76cyjawY5g==", + "version": "0.17.84", + "resolved": "https://registry.npmjs.org/@superset-ui/legacy-preset-chart-big-number/-/legacy-preset-chart-big-number-0.17.84.tgz", + "integrity": "sha512-1SotYUwx6BXvXXTHszqpu/+GSQoS2TkQPIXVqlkd4c7bHIZCetwsmOs9F9pCyiaYo9GM3x7DdTWOezgYYORFDw==", "requires": { "@data-ui/xy-chart": "^0.0.84", - "@superset-ui/chart-controls": "0.17.79", - "@superset-ui/core": "0.17.75", + "@superset-ui/chart-controls": "0.17.84", + "@superset-ui/core": "0.17.81", "@types/d3-color": "^1.2.2", "@types/shortid": "^0.0.29", "d3-color": "^1.2.3", @@ -61052,38 +61950,160 @@ } }, "@superset-ui/legacy-preset-chart-deckgl": { - "version": "0.4.9", - "resolved": "https://registry.npmjs.org/@superset-ui/legacy-preset-chart-deckgl/-/legacy-preset-chart-deckgl-0.4.9.tgz", - "integrity": "sha512-eOenl2esuhXN5ONiGWR2sLMqavwkc4F1Q2/n1+JWveUMOOs4qi/XhDnx2VYqaiH3bgq7RgQ7objh/vxMz78j8w==", + "version": "0.4.10", + "resolved": "https://registry.npmjs.org/@superset-ui/legacy-preset-chart-deckgl/-/legacy-preset-chart-deckgl-0.4.10.tgz", + "integrity": "sha512-UGgzzDjy6N+vZvHlaSbihEyblm41jS2eL/41RWAEAABrn8g27V33a1VdVR/5zLUAtjqvP/dZqqkebF0h4ebmXA==", "requires": { "@math.gl/web-mercator": "^3.2.2", "@types/d3-array": "^2.0.0", "bootstrap-slider": "^10.0.0", "d3-array": "^1.2.4", - "d3-color": "^1.2.0", - "d3-scale": "^2.1.2", - "deck.gl": "7.1.11", + "d3-color": "^1.4.1", + "d3-scale": "^3.0.0", + "deck.gl": "8.5.2", "jquery": "^3.4.1", "lodash": "^4.17.15", - "mapbox-gl": "^0.53.0", + "mapbox-gl": "^2.4.0", "moment": "^2.20.1", "mousetrap": "^1.6.1", "prop-types": "^15.6.0", "react-bootstrap-slider": "2.1.5", - "react-map-gl": "^4.0.10", + "react-map-gl": "^6.1.16", "underscore": "^1.8.3", "urijs": "^1.18.10", "xss": "^1.0.6" + }, + "dependencies": { + "@mapbox/geojson-rewind": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/@mapbox/geojson-rewind/-/geojson-rewind-0.5.1.tgz", + "integrity": "sha512-eL7fMmfTBKjrb+VFHXCGv9Ot0zc3C0U+CwXo1IrP+EPwDczLoXv34Tgq3y+2mPSFNVUXgU42ILWJTC7145KPTA==", + "requires": { + "get-stream": "^6.0.1", + "minimist": "^1.2.5" + } + }, + "@mapbox/mapbox-gl-supported": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@mapbox/mapbox-gl-supported/-/mapbox-gl-supported-2.0.0.tgz", + "integrity": "sha512-zu4udqYiBrKMQKwpKJ4hhPON7tz0QR/JZ3iGpHnNWFmH3Sv/ysxlICATUtGCFpsyJf2v1WpFhlzaZ3GhhKmPMA==" + }, + "d3-scale": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-3.3.0.tgz", + "integrity": "sha512-1JGp44NQCt5d1g+Yy+GeOnZP7xHo0ii8zsQp6PGzd+C1/dl0KGsp9A7Mxwp+1D1o4unbTTxVdU/ZOIEBoeZPbQ==", + "requires": { + "d3-array": "^2.3.0", + "d3-format": "1 - 2", + "d3-interpolate": "1.2.0 - 2", + "d3-time": "^2.1.1", + "d3-time-format": "2 - 3" + }, + "dependencies": { + "d3-array": { + "version": "2.12.1", + "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-2.12.1.tgz", + "integrity": "sha512-B0ErZK/66mHtEsR1TkPEEkwdy+WDesimkM5gpZr5Dsg54BiTA5RXtYW5qTLIAcekaS9xfZrzBLF/OAkB3Qn1YQ==", + "requires": { + "internmap": "^1.0.0" + } + } + } + }, + "d3-time": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-2.1.1.tgz", + "integrity": "sha512-/eIQe/eR4kCQwq7yxi7z4c6qEXf2IYGcjoWB5OOQy4Tq9Uv39/947qlDcN2TLkiTzQWzvnsuYPB9TrWaNfipKQ==", + "requires": { + "d3-array": "2" + }, + "dependencies": { + "d3-array": { + "version": "2.12.1", + "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-2.12.1.tgz", + "integrity": "sha512-B0ErZK/66mHtEsR1TkPEEkwdy+WDesimkM5gpZr5Dsg54BiTA5RXtYW5qTLIAcekaS9xfZrzBLF/OAkB3Qn1YQ==", + "requires": { + "internmap": "^1.0.0" + } + } + } + }, + "get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==" + }, + "mapbox-gl": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/mapbox-gl/-/mapbox-gl-2.4.0.tgz", + "integrity": "sha512-oH5fkh209U2Zqvgs1bBS+SQVhrj8rUT9OTgZmg+20GaNthDJFYDCXvGidVAkgacuCHSIALTZKzMV1DFgO+isFQ==", + "requires": { + "@mapbox/geojson-rewind": "^0.5.0", + "@mapbox/geojson-types": "^1.0.2", + "@mapbox/jsonlint-lines-primitives": "^2.0.2", + "@mapbox/mapbox-gl-supported": "^2.0.0", + "@mapbox/point-geometry": "^0.1.0", + "@mapbox/tiny-sdf": "^1.2.5", + "@mapbox/unitbezier": "^0.0.0", + "@mapbox/vector-tile": "^1.3.1", + "@mapbox/whoots-js": "^3.1.0", + "csscolorparser": "~1.0.3", + "earcut": "^2.2.2", + "geojson-vt": "^3.2.1", + "gl-matrix": "^3.3.0", + "grid-index": "^1.1.0", + "minimist": "^1.2.5", + "murmurhash-js": "^1.0.0", + "pbf": "^3.2.1", + "potpack": "^1.0.1", + "quickselect": "^2.0.0", + "rw": "^1.3.3", + "supercluster": "^7.1.3", + "tinyqueue": "^2.0.3", + "vt-pbf": "^3.1.1" + } + }, + "react-map-gl": { + "version": "6.1.16", + "resolved": "https://registry.npmjs.org/react-map-gl/-/react-map-gl-6.1.16.tgz", + "integrity": "sha512-d/4kFMMh2hDeZNeQOUm2wC1/as9q93EZiDmM5mGBx0LIch+9pTFgO6ZINIuUD9Zz4JqWGpthyjoKr3QKgrGiRA==", + "requires": { + "@babel/runtime": "^7.0.0", + "@types/geojson": "^7946.0.7", + "@types/mapbox-gl": "^2.0.3", + "mapbox-gl": "^2.3.0", + "mjolnir.js": "^2.5.0", + "prop-types": "^15.7.2", + "resize-observer-polyfill": "^1.5.1", + "viewport-mercator-project": "^7.0.3" + } + }, + "supercluster": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/supercluster/-/supercluster-7.1.3.tgz", + "integrity": "sha512-7+bR4FbF5SYsmkHfDp61QiwCKtwNDyPsddk9TzfsDA5DQr5Goii5CVD2SXjglweFCxjrzVZf945ahqYfUIk8UA==", + "requires": { + "kdbush": "^3.0.0" + } + }, + "viewport-mercator-project": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/viewport-mercator-project/-/viewport-mercator-project-7.0.3.tgz", + "integrity": "sha512-5nSgVK8jKTSKzOvsa8TSSd2IeQCpHfSNiBOOOMQLvzlxgWD0YoF4xRmyZio3GaLtKSE+50UB892X3R1SAMbaww==", + "requires": { + "@math.gl/web-mercator": "^3.4.3" + } + } } }, "@superset-ui/legacy-preset-chart-nvd3": { - "version": "0.17.79", - "resolved": "https://registry.npmjs.org/@superset-ui/legacy-preset-chart-nvd3/-/legacy-preset-chart-nvd3-0.17.79.tgz", - "integrity": "sha512-hmBof4w5aF6wZag+wnqQCCYjnxul2KBWqRAj0gWQYohUwgqxxuR3CaEwTP62SNVvmnt8R2iCHM9RpIxfcWpjeQ==", + "version": "0.17.84", + "resolved": "https://registry.npmjs.org/@superset-ui/legacy-preset-chart-nvd3/-/legacy-preset-chart-nvd3-0.17.84.tgz", + "integrity": "sha512-U1LAtnwktODasC8nKxVaui3xZn71npbsfUKH/ZKFkDvf3zSuu96qcklGYJLTRiEhFMq6NDT1V4ogEmoIuRjk6w==", "requires": { "@data-ui/xy-chart": "^0.0.84", - "@superset-ui/chart-controls": "0.17.79", - "@superset-ui/core": "0.17.75", + "@superset-ui/chart-controls": "0.17.84", + "@superset-ui/core": "0.17.81", "d3": "^3.5.17", "d3-tip": "^0.9.1", "dompurify": "^2.0.6", @@ -61097,12 +62117,12 @@ } }, "@superset-ui/plugin-chart-echarts": { - "version": "0.17.79", - "resolved": "https://registry.npmjs.org/@superset-ui/plugin-chart-echarts/-/plugin-chart-echarts-0.17.79.tgz", - "integrity": "sha512-+lZO5hbQC47G8dDvyqeI4dBsjD2CRSQDqCGFXoecnhKZTzRw3zLX7TYckCK6ZxvLDbgW0ncjRBdcCJtvFs+MAw==", + "version": "0.17.84", + "resolved": "https://registry.npmjs.org/@superset-ui/plugin-chart-echarts/-/plugin-chart-echarts-0.17.84.tgz", + "integrity": "sha512-KTK5dTri9mJCCWnSijPGZ4+Mf/ZdOkATMoYFQjjNrb2GL9TkI9Utc+61CBfizKk3vz3t3PKoSWWa4TliEeGCgQ==", "requires": { - "@superset-ui/chart-controls": "0.17.79", - "@superset-ui/core": "0.17.75", + "@superset-ui/chart-controls": "0.17.84", + "@superset-ui/core": "0.17.81", "@types/mathjs": "^6.0.7", "d3-array": "^1.2.0", "echarts": "^5.1.2", @@ -61111,23 +62131,23 @@ } }, "@superset-ui/plugin-chart-pivot-table": { - "version": "0.17.79", - "resolved": "https://registry.npmjs.org/@superset-ui/plugin-chart-pivot-table/-/plugin-chart-pivot-table-0.17.79.tgz", - "integrity": "sha512-sz3FfM8Odm+r094rNCRO1DGxMNZl8j0ySnwFYQTbdZNFgqUvcQme9x7QC51IBk3OQ/TOm8oMJG5hTV1/4HrCKA==", + "version": "0.17.84", + "resolved": "https://registry.npmjs.org/@superset-ui/plugin-chart-pivot-table/-/plugin-chart-pivot-table-0.17.84.tgz", + "integrity": "sha512-JGyn9Yd5Wg5ZJSGVQ/PQwPqkwaLZeZK09u0NvCRjoqLEIz9psudLVfTVgsj6WTLJrrEdr4J8yXxlBnnMQ/N3Kw==", "requires": { - "@superset-ui/chart-controls": "0.17.79", - "@superset-ui/core": "0.17.75", - "@superset-ui/react-pivottable": "^0.12.11" + "@superset-ui/chart-controls": "0.17.84", + "@superset-ui/core": "0.17.81", + "@superset-ui/react-pivottable": "^0.12.12" } }, "@superset-ui/plugin-chart-table": { - "version": "0.17.79", - "resolved": "https://registry.npmjs.org/@superset-ui/plugin-chart-table/-/plugin-chart-table-0.17.79.tgz", - "integrity": "sha512-gPXgLJntH72ligPD0V6XNT5Cj6eWzztL154/uhUf8qxXKSBB5wETrFqtIl00S99wJQeaPRN6UGER/eiuGqGOTA==", + "version": "0.17.84", + "resolved": "https://registry.npmjs.org/@superset-ui/plugin-chart-table/-/plugin-chart-table-0.17.84.tgz", + "integrity": "sha512-XUI3vj8m77jH5R1XTjz0UbW8SyVxFDD2xwlxkqtpstWkjmOd3VPGN2/LpQa0dKVpW8KBUpHVNRDByBYL+siVFA==", "requires": { "@react-icons/all-files": "^4.1.0", - "@superset-ui/chart-controls": "0.17.79", - "@superset-ui/core": "0.17.75", + "@superset-ui/chart-controls": "0.17.84", + "@superset-ui/core": "0.17.81", "@types/d3-array": "^2.9.0", "@types/react-table": "^7.0.29", "d3-array": "^2.4.0", @@ -61149,12 +62169,12 @@ } }, "@superset-ui/plugin-chart-word-cloud": { - "version": "0.17.79", - "resolved": "https://registry.npmjs.org/@superset-ui/plugin-chart-word-cloud/-/plugin-chart-word-cloud-0.17.79.tgz", - "integrity": "sha512-EpHMJ1Qd7GnykEjlC+3bOzzBauLTFwZZuFFuCHs8m0exozuFaHQS1VxmpR1h3zJsp6pjF3PRFU05fpQ5LUAbnA==", + "version": "0.17.84", + "resolved": "https://registry.npmjs.org/@superset-ui/plugin-chart-word-cloud/-/plugin-chart-word-cloud-0.17.84.tgz", + "integrity": "sha512-ChuYtfOVlzOZpdavu65kVOoGLjwSQUU6mpJ8ziXqTr36hm8+QVzETX21+LTyJ8rWBFsehYPxOEgOlpmK2ZapUQ==", "requires": { - "@superset-ui/chart-controls": "0.17.79", - "@superset-ui/core": "0.17.75", + "@superset-ui/chart-controls": "0.17.84", + "@superset-ui/core": "0.17.81", "@types/d3-cloud": "^1.2.1", "@types/d3-scale": "^2.0.2", "d3-cloud": "^1.2.5", @@ -61185,14 +62205,14 @@ } }, "@superset-ui/preset-chart-xy": { - "version": "0.17.79", - "resolved": "https://registry.npmjs.org/@superset-ui/preset-chart-xy/-/preset-chart-xy-0.17.79.tgz", - "integrity": "sha512-JisKp00zIVa8VKSBXG1HNDj6hcRf70kHAGuSXHrQ8BUdfhy9Xc20oUMMFKeWSi0cc5NzPkgGg9Vl/vd3fvsO8Q==", + "version": "0.17.84", + "resolved": "https://registry.npmjs.org/@superset-ui/preset-chart-xy/-/preset-chart-xy-0.17.84.tgz", + "integrity": "sha512-Q4+k2k9ZoQUUy1d3S3h6Taj6zMIHnU0XtVaLYIxj1oISfyaKWz1hPR8At1ReC5pOl5qoJSAQv4X61KFOwEMsUw==", "requires": { "@data-ui/theme": "^0.0.84", "@data-ui/xy-chart": "^0.0.84", - "@superset-ui/chart-controls": "0.17.79", - "@superset-ui/core": "0.17.75", + "@superset-ui/chart-controls": "0.17.84", + "@superset-ui/core": "0.17.81", "@vx/axis": "^0.0.198", "@vx/legend": "^0.0.198", "@vx/scale": "^0.0.197", @@ -61311,9 +62331,9 @@ } }, "@superset-ui/react-pivottable": { - "version": "0.12.11", - "resolved": "https://registry.npmjs.org/@superset-ui/react-pivottable/-/react-pivottable-0.12.11.tgz", - "integrity": "sha512-V0ZCqgxf5addssJlJqcUDUJVWH68JCgqWHDSQ8Wy75GdBSRgU4K/E8dogXaTHIWWhFDyrnxDsYW0YJ6TFWOQFQ==", + "version": "0.12.12", + "resolved": "https://registry.npmjs.org/@superset-ui/react-pivottable/-/react-pivottable-0.12.12.tgz", + "integrity": "sha512-4+wx2kQy3IRKoWHTf2bIkXjlzDA0u/eN2k0FfLfJ5bdER2GuqZErWuKtiZzARsn5kSS9hPIrvt77uv52R3FnfQ==", "requires": { "immutability-helper": "^3.1.1", "prop-types": "^15.7.2", @@ -61941,6 +62961,16 @@ "integrity": "sha512-NCEfv49jmDsBAixjMjEHKVgmVQlJ+uK56FOc+2roYPExnXCZDpi6mJOHQ3v23BiO84hBDStND9R2itJr7PNoow==", "dev": true }, + "@types/flatbuffers": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/@types/flatbuffers/-/flatbuffers-1.10.0.tgz", + "integrity": "sha512-7btbphLrKvo5yl/5CC2OCxUSMx1wV1wvGT1qDXkSt7yi00/YW7E8k6qzXqJHsp+WU0eoG7r6MTQQXI9lIvd0qA==" + }, + "@types/geojson": { + "version": "7946.0.8", + "resolved": "https://registry.npmjs.org/@types/geojson/-/geojson-7946.0.8.tgz", + "integrity": "sha512-1rkryxURpr6aWP7R786/UQOkJ3PcpQiWkAXBmdWc7ryFWqN6a4xfK7BtjXvFBKO9LjQ+MWQSWxYeZX1OApnArA==" + }, "@types/glob": { "version": "7.1.1", "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.1.1.tgz", @@ -62082,6 +63112,14 @@ "@types/lodash": "*" } }, + "@types/mapbox-gl": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/@types/mapbox-gl/-/mapbox-gl-2.4.0.tgz", + "integrity": "sha512-Na5vXw6Ez0L5To/+pL78dWPNoG6QlPdEDdnkSmIL5HWxemD+s0pTmTWDbMj7tcqJ2hnVyOyukVIveR9HPi7eeA==", + "requires": { + "@types/geojson": "*" + } + }, "@types/markdown-to-jsx": { "version": "6.11.3", "resolved": "https://registry.npmjs.org/@types/markdown-to-jsx/-/markdown-to-jsx-6.11.3.tgz", @@ -62535,6 +63573,11 @@ "@types/jest": "*" } }, + "@types/text-encoding-utf-8": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@types/text-encoding-utf-8/-/text-encoding-utf-8-1.0.2.tgz", + "integrity": "sha512-AQ6zewa0ucLJvtUi5HsErbOFKAcQfRLt9zFLlUOvcXBy2G36a+ZDpCHSGdzJVUD8aNURtIjh9aSjCStNMRCcRQ==" + }, "@types/uglify-js": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/@types/uglify-js/-/uglify-js-3.0.4.tgz", @@ -64013,6 +65056,35 @@ "normalize-path": "^2.1.1" } }, + "apache-arrow": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/apache-arrow/-/apache-arrow-4.0.1.tgz", + "integrity": "sha512-DyF7GXCbSjsw4P5C8b+qW7OnJKa6w9mJI0mhV0+EfZbVZCmhfiF6ffqcnrI/kzBrRqn9hH/Ft9n5+m4DTbBJpg==", + "requires": { + "@types/flatbuffers": "^1.10.0", + "@types/node": "^14.14.37", + "@types/text-encoding-utf-8": "^1.0.1", + "command-line-args": "5.1.1", + "command-line-usage": "6.1.1", + "flatbuffers": "1.12.0", + "json-bignum": "^0.0.3", + "pad-left": "^2.1.0", + "text-encoding-utf-8": "^1.0.2", + "tslib": "^2.2.0" + }, + "dependencies": { + "@types/node": { + "version": "14.17.9", + "resolved": "https://registry.npmjs.org/@types/node/-/node-14.17.9.tgz", + "integrity": "sha512-CMjgRNsks27IDwI785YMY0KLt3co/c0cQ5foxHYv/shC2w8oOnVwz5Ubq1QG5KzrcW+AXk6gzdnxIkDnTvzu3g==" + }, + "tslib": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.0.tgz", + "integrity": "sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg==" + } + } + }, "aphrodite": { "version": "1.2.5", "resolved": "https://registry.npmjs.org/aphrodite/-/aphrodite-1.2.5.tgz", @@ -64093,6 +65165,11 @@ "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", "dev": true }, + "array-back": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/array-back/-/array-back-3.1.0.tgz", + "integrity": "sha512-TkuxA4UCOvxuDK6NZYXCalszEzj+TLszyASooky+i742l9TqsOdYCMJJupxRic61hwquNtppB3hgcuq9SVSH1Q==" + }, "array-equal": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/array-equal/-/array-equal-1.0.0.tgz", @@ -66502,6 +67579,14 @@ "redeyed": "~0.4.0" } }, + "cartocolor": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/cartocolor/-/cartocolor-4.0.2.tgz", + "integrity": "sha512-+Gh9mb6lFxsDOLQlBLPxAHCnWXlg2W8q3AcVwqRcy95TdBbcOU89Wrb6h2Hd/6Ww1Kc1pzXmUdpnWD+xeCG0dg==", + "requires": { + "colorbrewer": "1.0.0" + } + }, "case-sensitive-paths-webpack-plugin": { "version": "2.4.0", "resolved": "https://registry.npmjs.org/case-sensitive-paths-webpack-plugin/-/case-sensitive-paths-webpack-plugin-2.4.0.tgz", @@ -67552,6 +68637,11 @@ "simple-swizzle": "^0.2.2" } }, + "colorbrewer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/colorbrewer/-/colorbrewer-1.0.0.tgz", + "integrity": "sha1-T5czO5abp2Ejgr5LwzlLNB+0yKI=" + }, "colorette": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.2.1.tgz", @@ -67582,6 +68672,66 @@ "trim": "0.0.1" } }, + "command-line-args": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/command-line-args/-/command-line-args-5.1.1.tgz", + "integrity": "sha512-hL/eG8lrll1Qy1ezvkant+trihbGnaKaeEjj6Scyr3DN+RC7iQ5Rz84IeLERfAWDGo0HBSNAakczwgCilDXnWg==", + "requires": { + "array-back": "^3.0.1", + "find-replace": "^3.0.0", + "lodash.camelcase": "^4.3.0", + "typical": "^4.0.0" + } + }, + "command-line-usage": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/command-line-usage/-/command-line-usage-6.1.1.tgz", + "integrity": "sha512-F59pEuAR9o1SF/bD0dQBDluhpT4jJQNWUHEuVBqpDmCUo6gPjCi+m9fCWnWZVR/oG6cMTUms4h+3NPl74wGXvA==", + "requires": { + "array-back": "^4.0.1", + "chalk": "^2.4.2", + "table-layout": "^1.0.1", + "typical": "^5.2.0" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "requires": { + "color-convert": "^1.9.0" + } + }, + "array-back": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/array-back/-/array-back-4.0.2.tgz", + "integrity": "sha512-NbdMezxqf94cnNfWLL7V/im0Ub+Anbb0IoZhvzie8+4HJ4nMQuzHuy49FkGYCJK2yAloZ3meiB6AVMClbrI1vg==" + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "requires": { + "has-flag": "^3.0.0" + } + }, + "typical": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/typical/-/typical-5.2.0.tgz", + "integrity": "sha512-dvdQgNDNJo+8B2uBQoqdb11eUCE1JQXhvjC/CZtgvZseVd5TYMXnq0+vuUemXbd/Se29cTaUuPX3YIc2xgbvIg==" + } + } + }, "commander": { "version": "2.19.0", "resolved": "https://registry.npmjs.org/commander/-/commander-2.19.0.tgz", @@ -68962,9 +70112,9 @@ "integrity": "sha512-ii0/r5f4sjKNTfh84Di+DpztYwqKhEyUlKoPrzUFfeSkWxjW49xU2QzO9qrPrNkpdI0XJkfzvmTu8V2Zylln6A==" }, "d3-color": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-1.2.3.tgz", - "integrity": "sha512-x37qq3ChOTLd26hnps36lexMRhNXEtVxZ4B25rL0DVdDsGQIJGB18S7y9XDwlDD6MD/ZBzITCf4JjGMM10TZkw==" + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-1.4.1.tgz", + "integrity": "sha512-p2sTHSLCJI2QKunbGb7ocOh7DgTAn8IrLx21QRc/BSnodXM4sv6aLQlnfpvehFMLZEfBc6g9pH9SWQccFYfJ9Q==" }, "d3-dispatch": { "version": "1.0.6", @@ -69282,19 +70432,21 @@ "integrity": "sha512-KaL7+6Fw6i5A2XSnsbhm/6B+NuEA7TZ4vqxnd5tXz9sbKtrN9Srj8ab4vKVdK8YAqZO9P1kg45Y6YLoduPf+kw==" }, "deck.gl": { - "version": "7.1.11", - "resolved": "https://registry.npmjs.org/deck.gl/-/deck.gl-7.1.11.tgz", - "integrity": "sha512-OUj9JE544N6Y/DCdfdnsbqKn9o72bWgRfsKhyi8aZ8v76hq7XyelmO2GljBmHGYmuMNVLrKcymNMV0m8EEgpZA==", - "requires": { - "@deck.gl/aggregation-layers": "7.1.11", - "@deck.gl/core": "7.1.11", - "@deck.gl/geo-layers": "7.1.11", - "@deck.gl/google-maps": "7.1.11", - "@deck.gl/json": "7.1.11", - "@deck.gl/layers": "7.1.11", - "@deck.gl/mapbox": "7.1.11", - "@deck.gl/mesh-layers": "7.1.11", - "@deck.gl/react": "7.1.11" + "version": "8.5.2", + "resolved": "https://registry.npmjs.org/deck.gl/-/deck.gl-8.5.2.tgz", + "integrity": "sha512-tsEyv62Zzc+GT3By0Y1R2gqEJ8K3tGBDaLprAoeAsg7fvIa5ikFBdWEBFHa1UDbgE2UEmYbcBK/yK4GAL8Ia4A==", + "requires": { + "@deck.gl/aggregation-layers": "8.5.2", + "@deck.gl/carto": "8.5.2", + "@deck.gl/core": "8.5.2", + "@deck.gl/extensions": "8.5.2", + "@deck.gl/geo-layers": "8.5.2", + "@deck.gl/google-maps": "8.5.2", + "@deck.gl/json": "8.5.2", + "@deck.gl/layers": "8.5.2", + "@deck.gl/mapbox": "8.5.2", + "@deck.gl/mesh-layers": "8.5.2", + "@deck.gl/react": "8.5.2" } }, "decode-uri-component": { @@ -69351,6 +70503,11 @@ } } }, + "deep-extend": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==" + }, "deep-is": { "version": "0.1.3", "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", @@ -69808,6 +70965,11 @@ } } }, + "draco3d": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/draco3d/-/draco3d-1.4.1.tgz", + "integrity": "sha512-9Rxonc70xiovBC+Bq1h57SNZIHzWTibU1VfIGp5z3Xx8dPtv4yT5uGhiH7P5uvJRR2jkrvHafRxR7bTANkvfpg==" + }, "duplexer": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.1.tgz", @@ -71969,6 +73131,14 @@ } } }, + "expression-eval": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/expression-eval/-/expression-eval-2.1.0.tgz", + "integrity": "sha512-FUJO/Akvl/JOWkvlqZaqbkhsEWlCJWDeZG4tzX96UH68D9FeRgYgtb55C2qtqbORC0Q6x5419EDjWu4IT9kQfg==", + "requires": { + "jsep": "^0.3.0" + } + }, "extend": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", @@ -72448,6 +73618,14 @@ "pkg-dir": "^3.0.0" } }, + "find-replace": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-replace/-/find-replace-3.0.0.tgz", + "integrity": "sha512-6Tb2myMioCAgv5kfvP5/PkZZ/ntTpVK39fHY7WkWBgvbeE+VHd/tZuZ4mrC+bxh4cfOZeYKVPaJIZtZXV7GNCQ==", + "requires": { + "array-back": "^3.0.1" + } + }, "find-root": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/find-root/-/find-root-1.1.0.tgz", @@ -72495,6 +73673,11 @@ } } }, + "flatbuffers": { + "version": "1.12.0", + "resolved": "https://registry.npmjs.org/flatbuffers/-/flatbuffers-1.12.0.tgz", + "integrity": "sha512-c7CZADjRcl6j0PlvFy0ZqXQ67qSEZfrVPynmnL+2zPc+NtMvrF8Y0QceMo7QqnSPc7+uWjUIAbvCQ5WIKlMVdQ==" + }, "flatted": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.1.0.tgz", @@ -73070,9 +74253,9 @@ } }, "h3-js": { - "version": "3.7.0", - "resolved": "https://registry.npmjs.org/h3-js/-/h3-js-3.7.0.tgz", - "integrity": "sha512-EcH/qGU4khZsAEG39Uu8MvaCing0JFcuoe3K4Xmg5MofDIu1cNJl7z2AQS8ggvXGxboiLJqsGirhEqFKdd2gAA==" + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/h3-js/-/h3-js-3.7.2.tgz", + "integrity": "sha512-LPjlHSwB9zQZrMqKloCZmmmt3yZzIK7nqPcXqwU93zT3TtYG6jP4tZBzAPouxut7lLjdFbMQ75wRBiKfpsnY7w==" }, "hammerjs": { "version": "2.0.8", @@ -78435,6 +79618,11 @@ } } }, + "jsep": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/jsep/-/jsep-0.3.5.tgz", + "integrity": "sha512-AoRLBDc6JNnKjNcmonituEABS5bcfqDhQAWWXNTFrqu6nVXBpBAGfcoTGZMFlIrh9FjmE1CQyX9CTNwZrXMMDA==" + }, "jsesc": { "version": "2.5.2", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", @@ -78449,6 +79637,11 @@ "bignumber.js": "^9.0.0" } }, + "json-bignum": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/json-bignum/-/json-bignum-0.0.3.tgz", + "integrity": "sha1-QRY7UENsdz2CQk28IO1w23YEuNc=" + }, "json-parse-better-errors": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", @@ -79201,12 +80394,11 @@ "integrity": "sha512-L0j0tFVZBQQLeEjmWOvDLoRciIY8gQGWahvkztXUal8jH8R5Rlqo9GCvgqvXcy9LQhEWdQCVvzqAbxgYNt4blQ==" }, "math.gl": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/math.gl/-/math.gl-2.3.3.tgz", - "integrity": "sha512-wZhx7574KHUpJVMzkaQ559zfn3R8iB0BOilwNrfL/fOLQfPo2TPWsKX96PdfS4svKA2XIGi3yfizrv2Redcv0g==", + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/math.gl/-/math.gl-3.5.3.tgz", + "integrity": "sha512-cRQRZlc+XvNHd3bIfu3kdPPPAW0vwDelZJmkjn2TDvCyPcmyDtAiZ2Poo1aFoINP7HzN6oHYxapc/0wV3q6Opg==", "requires": { - "@babel/runtime": "^7.0.0", - "gl-matrix": "^3.0.0" + "@math.gl/core": "3.5.3" } }, "mathfn": { @@ -80707,6 +81899,14 @@ "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", "dev": true }, + "pad-left": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/pad-left/-/pad-left-2.1.0.tgz", + "integrity": "sha1-FuajstRKjhOMsIOMx8tAOk/J6ZQ=", + "requires": { + "repeat-string": "^1.5.4" + } + }, "pako": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.7.tgz", @@ -83424,12 +84624,12 @@ "dev": true }, "probe.gl": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/probe.gl/-/probe.gl-3.3.0.tgz", - "integrity": "sha512-59E6AEw4N8sU4PKfAl7S2UBYJCOa064WpEFcXfeFOB/36FJtplYY+261DqLjLAvOqRRHiKVEQUBo63PQ3jKeWA==", + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/probe.gl/-/probe.gl-3.4.0.tgz", + "integrity": "sha512-9CLByZATuhuG/Viq3ckfWU+dAhb7dMmjzsyCy4s7ds9ueTejcVRENxL197/XacOK/AN61YrEERB0QnouB0Qc0Q==", "requires": { "@babel/runtime": "^7.0.0", - "@probe.gl/stats": "3.3.0" + "@probe.gl/stats": "3.4.0" } }, "process": { @@ -86284,6 +87484,11 @@ } } }, + "reduce-flatten": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/reduce-flatten/-/reduce-flatten-2.0.0.tgz", + "integrity": "sha512-EJ4UNY/U1t2P/2k6oqotuX2Cc3T6nxJwsM0N0asT7dhrtH1ltUxDn4NalSYmPE2rCkVpcf/X6R0wDwcFpzhd4w==" + }, "reduce-function-call": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/reduce-function-call/-/reduce-function-call-1.0.3.tgz", @@ -87263,14 +88468,6 @@ "tslib": "^1.9.0" } }, - "s2-geometry": { - "version": "1.2.10", - "resolved": "https://registry.npmjs.org/s2-geometry/-/s2-geometry-1.2.10.tgz", - "integrity": "sha1-xv8i8+zK/Q7qSRtgtEwUG5iHrKs=", - "requires": { - "long": "^3.2.0" - } - }, "safe-buffer": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", @@ -87355,11 +88552,6 @@ "resolved": "https://registry.npmjs.org/seedrandom/-/seedrandom-3.0.5.tgz", "integrity": "sha512-8OwmbklUNzwezjGInmZ+2clQmExQPvomqjL7LFqOYqtmuxRgQYqOD3mHaU+MvZn5FLUeVxVfQjwLZW/n/JFuqg==" }, - "seer": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/seer/-/seer-0.2.5.tgz", - "integrity": "sha512-//0Zwt0x97KQhIWrp4oq9AVNvGA2ctCx4dmFddpkORjRr6bW+hyC8eOhWBVIhiU3uHv1XLU1dekfFKOi28RGHA==" - }, "select": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/select/-/select-1.1.2.tgz", @@ -89782,6 +90974,29 @@ } } }, + "table-layout": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/table-layout/-/table-layout-1.0.2.tgz", + "integrity": "sha512-qd/R7n5rQTRFi+Zf2sk5XVVd9UQl6ZkduPFC3S7WEGJAmetDTjY3qPN50eSKzwuzEyQKy5TN2TiZdkIjos2L6A==", + "requires": { + "array-back": "^4.0.1", + "deep-extend": "~0.6.0", + "typical": "^5.2.0", + "wordwrapjs": "^4.0.0" + }, + "dependencies": { + "array-back": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/array-back/-/array-back-4.0.2.tgz", + "integrity": "sha512-NbdMezxqf94cnNfWLL7V/im0Ub+Anbb0IoZhvzie8+4HJ4nMQuzHuy49FkGYCJK2yAloZ3meiB6AVMClbrI1vg==" + }, + "typical": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/typical/-/typical-5.2.0.tgz", + "integrity": "sha512-dvdQgNDNJo+8B2uBQoqdb11eUCE1JQXhvjC/CZtgvZseVd5TYMXnq0+vuUemXbd/Se29cTaUuPX3YIc2xgbvIg==" + } + } + }, "tapable": { "version": "0.1.10", "resolved": "https://registry.npmjs.org/tapable/-/tapable-0.1.10.tgz", @@ -89966,6 +91181,11 @@ } } }, + "text-encoding-utf-8": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/text-encoding-utf-8/-/text-encoding-utf-8-1.0.2.tgz", + "integrity": "sha512-8bw4MY9WjdsD2aMtO0OzOCY3pXGYNx2d2FfHRVUKkiCPDWjKuOlhLVASS+pD7VkLTVjW268LYJHwsnPFlBpbAg==" + }, "text-table": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", @@ -90511,6 +91731,11 @@ "integrity": "sha512-DqQgihaQ9cUrskJo9kIyW/+g0Vxsk8cDtZ52a3NGh0YNTfpUSArXSohyUGnvbPazEPLu398C0UxmKSOrPumUzA==", "dev": true }, + "typical": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/typical/-/typical-4.0.0.tgz", + "integrity": "sha512-VAH4IvQ7BDFYglMd7BPRDfLgxZZX4O4TFcRDA6EN5X7erNJJq+McIEp8np9aVtxrCJ6qx4GTYVfOWNjcqwZgRw==" + }, "ua-parser-js": { "version": "0.7.25", "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.25.tgz", @@ -92931,6 +94156,22 @@ "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=" }, + "wordwrapjs": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/wordwrapjs/-/wordwrapjs-4.0.1.tgz", + "integrity": "sha512-kKlNACbvHrkpIw6oPeYDSmdCTu2hdMHoyXLTcUKala++lx5Y+wjJ/e474Jqv5abnVmwxw08DiTuHmw69lJGksA==", + "requires": { + "reduce-flatten": "^2.0.0", + "typical": "^5.2.0" + }, + "dependencies": { + "typical": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/typical/-/typical-5.2.0.tgz", + "integrity": "sha512-dvdQgNDNJo+8B2uBQoqdb11eUCE1JQXhvjC/CZtgvZseVd5TYMXnq0+vuUemXbd/Se29cTaUuPX3YIc2xgbvIg==" + } + } + }, "worker-farm": { "version": "1.7.0", "resolved": "https://registry.npmjs.org/worker-farm/-/worker-farm-1.7.0.tgz", diff --git a/superset-frontend/package.json b/superset-frontend/package.json index 338e8ccb92942..746efbebd070e 100644 --- a/superset-frontend/package.json +++ b/superset-frontend/package.json @@ -17,7 +17,7 @@ "prod": "npm run build", "build-dev": "cross-env NODE_OPTIONS=--max_old_space_size=8192 NODE_ENV=development webpack --mode=development --colors", "build-instrumented": "cross-env NODE_ENV=development BABEL_ENV=instrumented webpack --mode=development --colors", - "build": "cross-env NODE_OPTIONS=--max_old_space_size=8192 NODE_ENV=production BABEL_ENV=production webpack --mode=production --colors", + "build": "cross-env NODE_OPTIONS=--max_old_space_size=8192 NODE_ENV=production BABEL_ENV=\"${BABEL_ENV:=production}\" webpack --mode=production --colors", "lint": "eslint --ignore-path=.eslintignore --ext .js,.jsx,.ts,.tsx . && npm run type", "prettier-check": "prettier --check '{src,stylesheets}/**/*.{css,less,sass,scss}'", "lint-fix": "eslint --fix --ignore-path=.eslintignore --ext .js,.jsx,.ts,tsx . && npm run clean-css && npm run type", @@ -67,35 +67,35 @@ "@emotion/babel-preset-css-prop": "^11.2.0", "@emotion/cache": "^11.1.3", "@emotion/react": "^11.1.5", - "@superset-ui/chart-controls": "^0.17.79", - "@superset-ui/core": "^0.17.75", - "@superset-ui/legacy-plugin-chart-calendar": "^0.17.79", - "@superset-ui/legacy-plugin-chart-chord": "^0.17.79", - "@superset-ui/legacy-plugin-chart-country-map": "^0.17.79", - "@superset-ui/legacy-plugin-chart-event-flow": "^0.17.79", - "@superset-ui/legacy-plugin-chart-force-directed": "^0.17.79", - "@superset-ui/legacy-plugin-chart-heatmap": "^0.17.79", - "@superset-ui/legacy-plugin-chart-histogram": "^0.17.79", - "@superset-ui/legacy-plugin-chart-horizon": "^0.17.79", - "@superset-ui/legacy-plugin-chart-map-box": "^0.17.79", - "@superset-ui/legacy-plugin-chart-paired-t-test": "^0.17.79", - "@superset-ui/legacy-plugin-chart-parallel-coordinates": "^0.17.79", - "@superset-ui/legacy-plugin-chart-partition": "^0.17.79", - "@superset-ui/legacy-plugin-chart-pivot-table": "^0.17.79", - "@superset-ui/legacy-plugin-chart-rose": "^0.17.79", - "@superset-ui/legacy-plugin-chart-sankey": "^0.17.79", - "@superset-ui/legacy-plugin-chart-sankey-loop": "^0.17.79", - "@superset-ui/legacy-plugin-chart-sunburst": "^0.17.79", - "@superset-ui/legacy-plugin-chart-treemap": "^0.17.79", - "@superset-ui/legacy-plugin-chart-world-map": "^0.17.79", - "@superset-ui/legacy-preset-chart-big-number": "^0.17.79", - "@superset-ui/legacy-preset-chart-deckgl": "^0.4.9", - "@superset-ui/legacy-preset-chart-nvd3": "^0.17.79", - "@superset-ui/plugin-chart-echarts": "^0.17.79", - "@superset-ui/plugin-chart-pivot-table": "^0.17.79", - "@superset-ui/plugin-chart-table": "^0.17.79", - "@superset-ui/plugin-chart-word-cloud": "^0.17.79", - "@superset-ui/preset-chart-xy": "^0.17.79", + "@superset-ui/chart-controls": "^0.17.84", + "@superset-ui/core": "^0.17.81", + "@superset-ui/legacy-plugin-chart-calendar": "^0.17.84", + "@superset-ui/legacy-plugin-chart-chord": "^0.17.84", + "@superset-ui/legacy-plugin-chart-country-map": "^0.17.84", + "@superset-ui/legacy-plugin-chart-event-flow": "^0.17.84", + "@superset-ui/legacy-plugin-chart-force-directed": "^0.17.84", + "@superset-ui/legacy-plugin-chart-heatmap": "^0.17.84", + "@superset-ui/legacy-plugin-chart-histogram": "^0.17.84", + "@superset-ui/legacy-plugin-chart-horizon": "^0.17.84", + "@superset-ui/legacy-plugin-chart-map-box": "^0.17.84", + "@superset-ui/legacy-plugin-chart-paired-t-test": "^0.17.84", + "@superset-ui/legacy-plugin-chart-parallel-coordinates": "^0.17.84", + "@superset-ui/legacy-plugin-chart-partition": "^0.17.84", + "@superset-ui/legacy-plugin-chart-pivot-table": "^0.17.84", + "@superset-ui/legacy-plugin-chart-rose": "^0.17.84", + "@superset-ui/legacy-plugin-chart-sankey": "^0.17.84", + "@superset-ui/legacy-plugin-chart-sankey-loop": "^0.17.84", + "@superset-ui/legacy-plugin-chart-sunburst": "^0.17.84", + "@superset-ui/legacy-plugin-chart-treemap": "^0.17.84", + "@superset-ui/legacy-plugin-chart-world-map": "^0.17.84", + "@superset-ui/legacy-preset-chart-big-number": "^0.17.84", + "@superset-ui/legacy-preset-chart-deckgl": "^0.4.10", + "@superset-ui/legacy-preset-chart-nvd3": "^0.17.84", + "@superset-ui/plugin-chart-echarts": "^0.17.84", + "@superset-ui/plugin-chart-pivot-table": "^0.17.84", + "@superset-ui/plugin-chart-table": "^0.17.84", + "@superset-ui/plugin-chart-word-cloud": "^0.17.84", + "@superset-ui/preset-chart-xy": "^0.17.84", "@vx/responsive": "^0.0.195", "abortcontroller-polyfill": "^1.1.9", "antd": "^4.9.4", @@ -299,7 +299,6 @@ "storybook-addon-jsx": "^7.3.3", "storybook-addon-paddings": "^3.2.0", "style-loader": "^1.0.0", - "terser-webpack-plugin": "^1.1.0", "thread-loader": "^1.2.0", "transform-loader": "^0.2.3", "ts-jest": "^26.4.2", diff --git a/superset-frontend/spec/javascripts/explore/components/MetricsControl_spec.jsx b/superset-frontend/spec/javascripts/explore/components/MetricsControl_spec.jsx index 188469876c39e..c255e6a62b53a 100644 --- a/superset-frontend/spec/javascripts/explore/components/MetricsControl_spec.jsx +++ b/superset-frontend/spec/javascripts/explore/components/MetricsControl_spec.jsx @@ -67,60 +67,14 @@ const sumValueAdhocMetric = new AdhocMetric({ label: 'SUM(value)', }); -describe('MetricsControl', () => { +// TODO: rewrite the tests to RTL +describe.skip('MetricsControl', () => { it('renders Select', () => { const { component } = setup(); expect(component.find(LabelsContainer)).toExist(); }); describe('constructor', () => { - it('unifies options for the dropdown select with aggregates', () => { - const { component } = setup(); - expect(component.state('options')).toEqual([ - { - optionName: '_col_source', - type: 'VARCHAR(255)', - column_name: 'source', - }, - { - optionName: '_col_target', - type: 'VARCHAR(255)', - column_name: 'target', - }, - { optionName: '_col_value', type: 'DOUBLE', column_name: 'value' }, - ...Object.keys(AGGREGATES).map(aggregate => ({ - aggregate_name: aggregate, - optionName: `_aggregate_${aggregate}`, - })), - { - optionName: 'sum__value', - metric_name: 'sum__value', - expression: 'SUM(energy_usage.value)', - }, - { - optionName: 'avg__value', - metric_name: 'avg__value', - expression: 'AVG(energy_usage.value)', - }, - ]); - }); - - it('does not show aggregates in options if no columns', () => { - const { component } = setup({ columns: [] }); - expect(component.state('options')).toEqual([ - { - optionName: 'sum__value', - metric_name: 'sum__value', - expression: 'SUM(energy_usage.value)', - }, - { - optionName: 'avg__value', - metric_name: 'avg__value', - expression: 'AVG(energy_usage.value)', - }, - ]); - }); - it('coerces Adhoc Metrics from form data into instances of the AdhocMetric class and leaves saved metrics', () => { const { component } = setup({ value: [ @@ -178,194 +132,7 @@ describe('MetricsControl', () => { }); }); - describe('checkIfAggregateInInput', () => { - it('handles an aggregate in the input', () => { - const { component } = setup(); - - expect(component.state('aggregateInInput')).toBeNull(); - component.instance().checkIfAggregateInInput('AVG('); - expect(component.state('aggregateInInput')).toBe(AGGREGATES.AVG); - }); - - it('handles no aggregate in the input', () => { - const { component } = setup(); - - expect(component.state('aggregateInInput')).toBeNull(); - component.instance().checkIfAggregateInInput('colu'); - expect(component.state('aggregateInInput')).toBeNull(); - }); - }); - describe('option filter', () => { - it('includes user defined metrics', () => { - const { component } = setup({ datasourceType: 'druid' }); - - expect( - !!component.instance().selectFilterOption( - { - data: { - metric_name: 'a_metric', - optionName: 'a_metric', - expression: 'SUM(FANCY(metric))', - }, - }, - 'a', - ), - ).toBe(true); - }); - - it('includes auto generated avg metrics for druid', () => { - const { component } = setup({ datasourceType: 'druid' }); - - expect( - !!component.instance().selectFilterOption( - { - data: { - metric_name: 'avg__metric', - optionName: 'avg__metric', - expression: 'AVG(metric)', - }, - }, - 'a', - ), - ).toBe(true); - }); - - it('includes columns and aggregates', () => { - const { component } = setup(); - - expect( - !!component.instance().selectFilterOption( - { - data: { - type: 'VARCHAR(255)', - column_name: 'source', - optionName: '_col_source', - }, - }, - 'sou', - ), - ).toBe(true); - - expect( - !!component - .instance() - .selectFilterOption( - { data: { aggregate_name: 'AVG', optionName: '_aggregate_AVG' } }, - 'av', - ), - ).toBe(true); - }); - - it('includes columns based on verbose_name', () => { - const { component } = setup(); - - expect( - !!component.instance().selectFilterOption( - { - data: { - metric_name: 'sum__num', - verbose_name: 'babies', - optionName: '_col_sum_num', - }, - }, - 'bab', - ), - ).toBe(true); - }); - - it('excludes auto generated avg metrics for sqla', () => { - const { component } = setup(); - - expect( - !!component.instance().selectFilterOption( - { - data: { - metric_name: 'avg__metric', - optionName: 'avg__metric', - expression: 'AVG(metric)', - }, - }, - 'a', - ), - ).toBe(false); - }); - - it('includes custom made simple saved metrics', () => { - const { component } = setup(); - - expect( - !!component.instance().selectFilterOption( - { - data: { - metric_name: 'my_fancy_sum_metric', - optionName: 'my_fancy_sum_metric', - expression: 'SUM(value)', - }, - }, - 'sum', - ), - ).toBe(true); - }); - - it('excludes auto generated metrics', () => { - const { component } = setup(); - - expect( - !!component.instance().selectFilterOption( - { - data: { - metric_name: 'sum__value', - optionName: 'sum__value', - expression: 'SUM(value)', - }, - }, - 'sum', - ), - ).toBe(false); - - expect( - !!component.instance().selectFilterOption( - { - data: { - metric_name: 'sum__value', - optionName: 'sum__value', - expression: 'SUM("table"."value")', - }, - }, - 'sum', - ), - ).toBe(false); - }); - - it('filters out metrics if the input begins with an aggregate', () => { - const { component } = setup(); - component.setState({ aggregateInInput: true }); - - expect( - !!component.instance().selectFilterOption( - { - data: { metric_name: 'metric', expression: 'SUM(FANCY(metric))' }, - }, - 'SUM(', - ), - ).toBe(false); - }); - - it('includes columns if the input begins with an aggregate', () => { - const { component } = setup(); - component.setState({ aggregateInInput: true }); - - expect( - !!component - .instance() - .selectFilterOption( - { data: { type: 'DOUBLE', column_name: 'value' } }, - 'SUM(', - ), - ).toBe(true); - }); - it('Removes metrics if savedMetrics changes', () => { const { props, component, onChange } = setup({ value: [ diff --git a/superset-frontend/spec/javascripts/explore/components/VizTypeControl_spec.jsx b/superset-frontend/spec/javascripts/explore/components/VizTypeControl_spec.jsx index 02cbdac19c575..c027fd0c3dff1 100644 --- a/superset-frontend/spec/javascripts/explore/components/VizTypeControl_spec.jsx +++ b/superset-frontend/spec/javascripts/explore/components/VizTypeControl_spec.jsx @@ -50,7 +50,7 @@ describe('VizTypeControl', () => { new ChartMetadata({ name: 'vis1', thumbnail: '', - tags: ['Highly-used'], + tags: ['Popular'], }), ) .registerValue( diff --git a/superset-frontend/src/addSlice/AddSliceContainer.test.tsx b/superset-frontend/src/addSlice/AddSliceContainer.test.tsx index 2174a6b758ab9..00e7276a5864c 100644 --- a/superset-frontend/src/addSlice/AddSliceContainer.test.tsx +++ b/superset-frontend/src/addSlice/AddSliceContainer.test.tsx @@ -28,11 +28,9 @@ import VizTypeGallery from 'src/explore/components/controls/VizTypeControl/VizTy import { styledMount as mount } from 'spec/helpers/theming'; import { act } from 'spec/helpers/testing-library'; -const defaultProps = { - datasources: [ - { label: 'my first table', value: '1__table' }, - { label: 'another great table', value: '2__table' }, - ], +const datasource = { + value: '1', + label: 'table', }; describe('AddSliceContainer', () => { @@ -43,7 +41,7 @@ describe('AddSliceContainer', () => { >; beforeEach(async () => { - wrapper = mount() as ReactWrapper< + wrapper = mount() as ReactWrapper< AddSliceContainerProps, AddSliceContainerState, AddSliceContainer @@ -68,11 +66,8 @@ describe('AddSliceContainer', () => { }); it('renders an enabled button if datasource and viz type is selected', () => { - const datasourceValue = defaultProps.datasources[0].value; wrapper.setState({ - datasourceValue, - datasourceId: datasourceValue.split('__')[0], - datasourceType: datasourceValue.split('__')[1], + datasource, visType: 'table', }); expect( @@ -81,15 +76,12 @@ describe('AddSliceContainer', () => { }); it('formats explore url', () => { - const datasourceValue = defaultProps.datasources[0].value; wrapper.setState({ - datasourceValue, - datasourceId: datasourceValue.split('__')[0], - datasourceType: datasourceValue.split('__')[1], + datasource, visType: 'table', }); const formattedUrl = - '/superset/explore/?form_data=%7B%22viz_type%22%3A%22table%22%2C%22datasource%22%3A%221__table%22%7D'; + '/superset/explore/?form_data=%7B%22viz_type%22%3A%22table%22%2C%22datasource%22%3A%221%22%7D'; expect(wrapper.instance().exploreUrl()).toBe(formattedUrl); }); }); diff --git a/superset-frontend/src/addSlice/AddSliceContainer.tsx b/superset-frontend/src/addSlice/AddSliceContainer.tsx index b06ceef2df69e..9ef0b03559c09 100644 --- a/superset-frontend/src/addSlice/AddSliceContainer.tsx +++ b/superset-frontend/src/addSlice/AddSliceContainer.tsx @@ -17,28 +17,34 @@ * under the License. */ import React from 'react'; +import rison from 'rison'; import Button from 'src/components/Button'; import { Select } from 'src/components'; -import { css, styled, t } from '@superset-ui/core'; +import { + css, + styled, + t, + SupersetClient, + JsonResponse, +} from '@superset-ui/core'; import { FormLabel } from 'src/components/Form'; +import { Tooltip } from 'src/components/Tooltip'; import VizTypeGallery, { MAX_ADVISABLE_VIZ_GALLERY_WIDTH, } from 'src/explore/components/controls/VizTypeControl/VizTypeGallery'; -interface Datasource { - label: string; - value: string; -} - -export type AddSliceContainerProps = { - datasources: Datasource[]; +type Dataset = { + id: number; + table_name: string; + description: string; + datasource_type: string; }; +export type AddSliceContainerProps = {}; + export type AddSliceContainerState = { - datasourceId?: string; - datasourceType?: string; - datasourceValue?: string; + datasource?: { label: string; value: string }; visType: string | null; }; @@ -81,6 +87,42 @@ const StyledContainer = styled.div` margin-top: ${theme.gridUnit * 6}px; } } + + & .ant-tooltip-open { + display: inline; + } + + &&&& .ant-select-selector { + padding: 0; + } + + &&&& .ant-select-selection-placeholder { + padding-left: ${theme.gridUnit * 3}px; + } + `} +`; + +const TooltipContent = styled.div<{ hasDescription: boolean }>` + ${({ theme, hasDescription }) => ` + .tooltip-header { + font-size: ${ + hasDescription ? theme.typography.sizes.l : theme.typography.sizes.s + }px; + font-weight: ${ + hasDescription + ? theme.typography.weights.bold + : theme.typography.weights.normal + }; + } + + .tooltip-description { + margin-top: ${theme.gridUnit * 2}px; + display: -webkit-box; + -webkit-line-clamp: 20; + -webkit-box-orient: vertical; + overflow: hidden; + text-overflow: ellipsis; + } `} `; @@ -97,6 +139,16 @@ const StyledVizTypeGallery = styled(VizTypeGallery)` `} `; +const StyledLabel = styled.span` + ${({ theme }) => ` + position: absolute; + left: ${theme.gridUnit * 3}px; + right: ${theme.gridUnit * 3}px; + overflow: hidden; + text-overflow: ellipsis; + `} +`; + export default class AddSliceContainer extends React.PureComponent< AddSliceContainerProps, AddSliceContainerState @@ -110,13 +162,16 @@ export default class AddSliceContainer extends React.PureComponent< this.changeDatasource = this.changeDatasource.bind(this); this.changeVisType = this.changeVisType.bind(this); this.gotoSlice = this.gotoSlice.bind(this); + this.newLabel = this.newLabel.bind(this); + this.loadDatasources = this.loadDatasources.bind(this); + this.handleFilterOption = this.handleFilterOption.bind(this); } exploreUrl() { const formData = encodeURIComponent( JSON.stringify({ viz_type: this.state.visType, - datasource: this.state.datasourceValue, + datasource: this.state.datasource?.value, }), ); return `/superset/explore/?form_data=${formData}`; @@ -126,11 +181,8 @@ export default class AddSliceContainer extends React.PureComponent< window.location.href = this.exploreUrl(); } - changeDatasource(value: string) { - this.setState({ - datasourceValue: value, - datasourceId: value.split('__')[0], - }); + changeDatasource(datasource: { label: string; value: string }) { + this.setState({ datasource }); } changeVisType(visType: string | null) { @@ -138,7 +190,57 @@ export default class AddSliceContainer extends React.PureComponent< } isBtnDisabled() { - return !(this.state.datasourceId && this.state.visType); + return !(this.state.datasource?.value && this.state.visType); + } + + newLabel(item: Dataset) { + return ( + +
{item.table_name}
+ {item.description && ( +
{item.description}
+ )} + + } + > + {item.table_name} +
+ ); + } + + loadDatasources(search: string, page: number, pageSize: number) { + const query = rison.encode({ + columns: ['id', 'table_name', 'description', 'datasource_type'], + filter: search, + page, + page_size: pageSize, + }); + return SupersetClient.get({ + endpoint: `/api/v1/dataset?q=${query}`, + }).then((response: JsonResponse) => { + const list = response.json.result.map((item: Dataset) => ({ + value: `${item.id}__${item.datasource_type}`, + label: this.newLabel(item), + labelText: item.table_name, + })); + return { + data: list, + totalCount: response.json.count, + }; + }); + } + + handleFilterOption( + search: string, + option: { label: string; value: number; labelText: string }, + ) { + const searchValue = search.trim().toLowerCase(); + const { labelText } = option; + return labelText.toLowerCase().includes(searchValue); } render() { @@ -151,11 +253,12 @@ export default class AddSliceContainer extends React.PureComponent< ariaLabel={t('Dataset')} name="select-datasource" header={{t('Choose a dataset')}} + filterOption={this.handleFilterOption} onChange={this.changeDatasource} - options={this.props.datasources} + options={this.loadDatasources} placeholder={t('Choose a dataset')} showSearch - value={this.state.datasourceValue} + value={this.state.datasource} /> {t( diff --git a/superset-frontend/src/addSlice/App.tsx b/superset-frontend/src/addSlice/App.tsx index 9602670a08902..900cc36f446c8 100644 --- a/superset-frontend/src/addSlice/App.tsx +++ b/superset-frontend/src/addSlice/App.tsx @@ -39,7 +39,7 @@ initFeatureFlags(bootstrapData.common.feature_flags); const App = () => ( - + ); diff --git a/superset-frontend/src/components/Form/Form.tsx b/superset-frontend/src/components/Form/Form.tsx index 946324549ad33..1fc25e6c498b7 100644 --- a/superset-frontend/src/components/Form/Form.tsx +++ b/superset-frontend/src/components/Form/Form.tsx @@ -32,3 +32,5 @@ const StyledForm = styled(AntDForm)` export default function Form(props: FormProps) { return ; } + +export { FormProps }; diff --git a/superset-frontend/src/components/Form/index.tsx b/superset-frontend/src/components/Form/index.tsx index 7d7a60745df8b..1aa62ae567088 100644 --- a/superset-frontend/src/components/Form/index.tsx +++ b/superset-frontend/src/components/Form/index.tsx @@ -16,9 +16,9 @@ * specific language governing permissions and limitations * under the License. */ -import Form from './Form'; +import Form, { FormProps } from './Form'; import FormItem from './FormItem'; import FormLabel from './FormLabel'; import LabeledErrorBoundInput from './LabeledErrorBoundInput'; -export { Form, FormItem, FormLabel, LabeledErrorBoundInput }; +export { Form, FormItem, FormLabel, LabeledErrorBoundInput, FormProps }; diff --git a/superset-frontend/src/components/ListView/CardCollection.tsx b/superset-frontend/src/components/ListView/CardCollection.tsx index a0a0a98ce9a1e..d91498c91474c 100644 --- a/superset-frontend/src/components/ListView/CardCollection.tsx +++ b/superset-frontend/src/components/ListView/CardCollection.tsx @@ -27,12 +27,21 @@ interface CardCollectionProps { prepareRow: TableInstance['prepareRow']; renderCard?: (row: any) => React.ReactNode; rows: TableInstance['rows']; + showThumbnails?: boolean; } -const CardContainer = styled.div` - display: grid; - grid-template-columns: repeat(auto-fit, minmax(459px, 1fr)); - grid-gap: ${({ theme }) => theme.gridUnit * 8}px; +const CardContainer = styled.div<{ showThumbnails?: boolean }>` + ${({ theme, showThumbnails }) => ` + display: grid; + grid-gap: ${theme.gridUnit * 12}px ${theme.gridUnit * 4}px; + grid-template-columns: repeat(auto-fit, 300px); + margin-top: ${theme.gridUnit * -6}px; + padding: ${ + showThumbnails + ? `${theme.gridUnit * 8 + 3}px ${theme.gridUnit * 9}px` + : `${theme.gridUnit * 8 + 1}px ${theme.gridUnit * 9}px` + }; + `} `; const CardWrapper = styled.div` @@ -51,6 +60,7 @@ export default function CardCollection({ prepareRow, renderCard, rows, + showThumbnails, }: CardCollectionProps) { function handleClick( event: React.MouseEvent, @@ -65,7 +75,7 @@ export default function CardCollection({ if (!renderCard) return null; return ( - + {loading && rows.length === 0 && [...new Array(25)].map((e, i) => ( diff --git a/superset-frontend/src/components/ListView/ListView.tsx b/superset-frontend/src/components/ListView/ListView.tsx index f74e799ee29da..195cae2d465f9 100644 --- a/superset-frontend/src/components/ListView/ListView.tsx +++ b/superset-frontend/src/components/ListView/ListView.tsx @@ -221,6 +221,7 @@ export interface ListViewProps { cardSortSelectOptions?: Array; defaultViewMode?: ViewModeType; highlightRowId?: number; + showThumbnails?: boolean; emptyState?: { message?: string; slot?: React.ReactNode; @@ -242,6 +243,7 @@ function ListView({ disableBulkSelect = () => {}, renderBulkSelectCopy = selected => t('%s Selected', selected.length), renderCard, + showThumbnails, cardSortSelectOptions, defaultViewMode = 'card', highlightRowId, @@ -376,6 +378,7 @@ function ListView({ renderCard={renderCard} rows={rows} loading={loading} + showThumbnails={showThumbnails} /> )} {viewMode === 'table' && ( diff --git a/superset-frontend/src/components/Menu/MenuRight.tsx b/superset-frontend/src/components/Menu/MenuRight.tsx index 86a47846b52cb..35d2cb0fcf3c2 100644 --- a/superset-frontend/src/components/Menu/MenuRight.tsx +++ b/superset-frontend/src/components/Menu/MenuRight.tsx @@ -136,9 +136,11 @@ const RightMenu = ({ {t('Profile')} )} - - {t('Info')} - + {navbarRight.user_info_url && ( + + {t('Info')} + + )} {t('Logout')} diff --git a/superset-frontend/src/components/OmniContainer/OmniContainer.test.tsx b/superset-frontend/src/components/OmniContainer/OmniContainer.test.tsx index 0e46993f45eba..61dd7be394a43 100644 --- a/superset-frontend/src/components/OmniContainer/OmniContainer.test.tsx +++ b/superset-frontend/src/components/OmniContainer/OmniContainer.test.tsx @@ -84,40 +84,6 @@ test('Open Omnibar with ctrl + k with featureflag enabled', () => { ).not.toBeVisible(); }); -test('Open Omnibar with ctrl + s with featureflag enabled', () => { - (isFeatureEnabled as jest.Mock).mockImplementation( - (ff: string) => ff === 'OMNIBAR', - ); - const logEvent = jest.fn(); - render( -
- -
, - ); - - expect( - screen.queryByPlaceholderText('Search all dashboards'), - ).not.toBeInTheDocument(); - - // show Omnibar - fireEvent.keyDown(screen.getByTestId('test'), { - ctrlKey: true, - code: 'KeyS', - }); - expect( - screen.queryByPlaceholderText('Search all dashboards'), - ).toBeInTheDocument(); - - // hide Omnibar - fireEvent.keyDown(screen.getByTestId('test'), { - ctrlKey: true, - code: 'KeyS', - }); - expect( - screen.queryByPlaceholderText('Search all dashboards'), - ).not.toBeVisible(); -}); - test('Open Omnibar with Command + k with featureflag enabled', () => { (isFeatureEnabled as jest.Mock).mockImplementation( (ff: string) => ff === 'OMNIBAR', @@ -152,7 +118,7 @@ test('Open Omnibar with Command + k with featureflag enabled', () => { ).not.toBeVisible(); }); -test('Open Omnibar with Command + s with featureflag enabled', () => { +test('Open Omnibar with Cmd/Ctrl-K and close with ESC', () => { (isFeatureEnabled as jest.Mock).mockImplementation( (ff: string) => ff === 'OMNIBAR', ); @@ -169,17 +135,17 @@ test('Open Omnibar with Command + s with featureflag enabled', () => { // show Omnibar fireEvent.keyDown(screen.getByTestId('test'), { - metaKey: true, - code: 'KeyS', + ctrlKey: true, + code: 'KeyK', }); expect( screen.queryByPlaceholderText('Search all dashboards'), ).toBeInTheDocument(); - // hide Omnibar + // Close Omnibar fireEvent.keyDown(screen.getByTestId('test'), { - metaKey: true, - code: 'KeyS', + key: 'Escape', + code: 'Escape', }); expect( screen.queryByPlaceholderText('Search all dashboards'), diff --git a/superset-frontend/src/components/OmniContainer/index.tsx b/superset-frontend/src/components/OmniContainer/index.tsx index 338661f7a43bd..5a18d5e4e44d0 100644 --- a/superset-frontend/src/components/OmniContainer/index.tsx +++ b/superset-frontend/src/components/OmniContainer/index.tsx @@ -31,6 +31,7 @@ const OmniModal = styled(Modal)` .ant-modal-body { padding: 0; + overflow: visible; } `; @@ -47,7 +48,16 @@ export default function OmniContainer({ logEvent }: Props) { function handleKeydown(event: KeyboardEvent) { if (!isFeatureEnabled(FeatureFlag.OMNIBAR)) return; const controlOrCommand = event.ctrlKey || event.metaKey; - const isOk = ['KeyK', 'KeyS'].includes(event.code); // valid keys "s" or "k" + const isOk = ['KeyK'].includes(event.code); + const isEsc = event.key === 'Escape'; + if (isEsc && showOmni.current) { + logEvent(LOG_ACTIONS_OMNIBAR_TRIGGERED, { + show_omni: false, + }); + showOmni.current = false; + setShowModal(false); + return; + } if (controlOrCommand && isOk) { logEvent(LOG_ACTIONS_OMNIBAR_TRIGGERED, { show_omni: !!showOmni.current, diff --git a/superset-frontend/src/components/ReportModal/index.test.tsx b/superset-frontend/src/components/ReportModal/index.test.tsx index 27488dcdff155..99b1eadcc4970 100644 --- a/superset-frontend/src/components/ReportModal/index.test.tsx +++ b/superset-frontend/src/components/ReportModal/index.test.tsx @@ -38,6 +38,13 @@ const defaultProps = { userEmail: 'test@test.com', dashboardId: 1, creationMethod: 'charts_dashboards', + props: { + chart: { + sliceFormData: { + viz_type: 'table', + }, + }, + }, }; describe('Email Report Modal', () => { diff --git a/superset-frontend/src/components/ReportModal/index.tsx b/superset-frontend/src/components/ReportModal/index.tsx index 148b03376ebc0..fbdb751e3e260 100644 --- a/superset-frontend/src/components/ReportModal/index.tsx +++ b/superset-frontend/src/components/ReportModal/index.tsx @@ -29,22 +29,28 @@ import { bindActionCreators } from 'redux'; import { connect, useDispatch, useSelector } from 'react-redux'; import { addReport, editReport } from 'src/reports/actions/reports'; import { AlertObject } from 'src/views/CRUD/alert/types'; -import LabeledErrorBoundInput from 'src/components/Form/LabeledErrorBoundInput'; + import TimezoneSelector from 'src/components/TimezoneSelector'; +import LabeledErrorBoundInput from 'src/components/Form/LabeledErrorBoundInput'; import Icons from 'src/components/Icons'; import withToasts from 'src/messageToasts/enhancers/withToasts'; -import { CronPicker, CronError } from 'src/components/CronPicker'; +import { CronError } from 'src/components/CronPicker'; +import { RadioChangeEvent } from 'src/common/components'; import { StyledModal, StyledTopSection, StyledBottomSection, StyledIconWrapper, StyledScheduleTitle, + StyledCronPicker, StyledCronError, noBottomMargin, StyledFooterButton, TimezoneHeaderStyle, SectionHeaderStyle, + StyledMessageContentTitle, + StyledRadio, + StyledRadioGroup, } from './styles'; interface ReportObject { @@ -67,6 +73,19 @@ interface ReportObject { creation_method: string; } +interface ChartObject { + id: number; + chartAlert: string; + chartStatus: string; + chartUpdateEndTime: number; + chartUpdateStartTime: number; + latestQueryFormData: object; + queryController: { abort: () => {} }; + queriesResponse: object; + triggerQuery: boolean; + lastRendered: number; +} + interface ReportProps { addDangerToast: (msg: string) => void; addSuccessToast: (msg: string) => void; @@ -77,26 +96,25 @@ interface ReportProps { userId: number; userEmail: string; dashboardId?: number; - chartId?: number; + chart?: ChartObject; creationMethod: string; props: any; } +interface ReportPayloadType { + name: string; + value: string; +} + enum ActionType { - textChange, inputChange, fetched, reset, } -interface ReportPayloadType { - name: string; - value: string; -} - type ReportActionType = | { - type: ActionType.textChange | ActionType.inputChange; + type: ActionType.inputChange; payload: ReportPayloadType; } | { @@ -107,17 +125,26 @@ type ReportActionType = type: ActionType.reset; }; +const DEFAULT_NOTIFICATION_FORMAT = 'TEXT'; +const TEXT_BASED_VISUALIZATION_TYPES = [ + 'pivot_table', + 'pivot_table_v2', + 'table', + 'paired_ttest', +]; + const reportReducer = ( state: Partial | null, action: ReportActionType, ): Partial | null => { const initialState = { name: state?.name || 'Weekly Report', + report_format: state?.report_format || DEFAULT_NOTIFICATION_FORMAT, ...(state || {}), }; switch (action.type) { - case ActionType.textChange: + case ActionType.inputChange: return { ...initialState, [action.payload.name]: action.payload.value, @@ -139,6 +166,7 @@ const ReportModal: FunctionComponent = ({ show = false, ...props }) => { + const vizType = props.props.chart?.sliceFormData?.viz_type; const [currentReport, setCurrentReport] = useReducer< Reducer | null, ReportActionType> >(reportReducer, null); @@ -166,7 +194,6 @@ const ReportModal: FunctionComponent = ({ } }, [reports]); const onClose = () => { - // setLoading(false); onHide(); }; const onSave = async () => { @@ -174,7 +201,7 @@ const ReportModal: FunctionComponent = ({ const newReportValues: Partial = { crontab: currentReport?.crontab, dashboard: props.props.dashboardId, - chart: props.props.chartId, + chart: props.props.chart?.id, description: currentReport?.description, name: currentReport?.name, owners: [props.props.userId], @@ -187,9 +214,9 @@ const ReportModal: FunctionComponent = ({ type: 'Report', creation_method: props.props.creationMethod, active: true, + report_format: currentReport?.report_format, }; - // setLoading(true); if (isEditMode) { await dispatch( editReport(currentReport?.id, newReportValues as ReportObject), @@ -217,7 +244,7 @@ const ReportModal: FunctionComponent = ({ const renderModalFooter = ( <> - Cancel + {t('Cancel')} = ({ onClick={onSave} disabled={!currentReport?.name} > - Add + {isEditMode ? t('Save') : t('Add')} ); + const renderMessageContentSection = ( + <> + +

{t('Message Content')}

+
+
+ { + onChange(ActionType.inputChange, { + name: 'report_format', + value: event.target.value, + }); + }} + value={currentReport?.report_format || DEFAULT_NOTIFICATION_FORMAT} + > + {TEXT_BASED_VISUALIZATION_TYPES.includes(vizType) && ( + + {t('Text embedded in email')} + + )} + + {t('Image (PNG) embedded in email')} + + + {t('Formatted CSV attached in email')} + + +
+ + ); + return ( = ({ required validationMethods={{ onChange: ({ target }: { target: HTMLInputElement }) => - onChange(ActionType.textChange, { + onChange(ActionType.inputChange, { name: target.name, value: target.value, }), @@ -266,7 +324,7 @@ const ReportModal: FunctionComponent = ({ value={currentReport?.description || ''} validationMethods={{ onChange: ({ target }: { target: HTMLInputElement }) => - onChange(ActionType.textChange, { + onChange(ActionType.inputChange, { name: target.name, value: target.value, }), @@ -284,16 +342,16 @@ const ReportModal: FunctionComponent = ({

SectionHeaderStyle(theme)}> - Schedule + {t('Schedule')}

-

Scheduled reports will be sent to your email as a PNG

+

{t('Scheduled reports will be sent to your email as a PNG')}

- { - onChange(ActionType.textChange, { + onChange(ActionType.inputChange, { name: 'crontab', value: newValue, }); @@ -310,12 +368,13 @@ const ReportModal: FunctionComponent = ({ { setCurrentReport({ - type: ActionType.textChange, + type: ActionType.inputChange, payload: { name: 'timezone', value }, }); }} timezone={currentReport?.timezone} /> + {props.props.chart && renderMessageContentSection}
); diff --git a/superset-frontend/src/components/ReportModal/styles.tsx b/superset-frontend/src/components/ReportModal/styles.tsx index d9b7458cc1481..cd68b271ebb4e 100644 --- a/superset-frontend/src/components/ReportModal/styles.tsx +++ b/superset-frontend/src/components/ReportModal/styles.tsx @@ -20,11 +20,17 @@ import { styled, css, SupersetTheme } from '@superset-ui/core'; import Modal from 'src/components/Modal'; import Button from 'src/components/Button'; +import { Radio } from 'src/components/Radio'; +import { CronPicker } from 'src/components/CronPicker'; export const StyledModal = styled(Modal)` .ant-modal-body { padding: 0; } + + h4 { + font-weight: 600; + } `; export const StyledTopSection = styled.div` @@ -61,6 +67,14 @@ export const StyledIconWrapper = styled.span` export const StyledScheduleTitle = styled.div` margin-bottom: ${({ theme }) => theme.gridUnit * 7}px; + + h4 { + margin-bottom: ${({ theme }) => theme.gridUnit * 3}px; + } +`; + +export const StyledCronPicker = styled(CronPicker)` + margin-bottom: ${({ theme }) => theme.gridUnit * 3}px; `; export const StyledCronError = styled.p` @@ -83,3 +97,17 @@ export const SectionHeaderStyle = (theme: SupersetTheme) => css` margin: ${theme.gridUnit * 3}px 0; font-weight: ${theme.typography.weights.bold}; `; + +export const StyledMessageContentTitle = styled.div` + margin: ${({ theme }) => theme.gridUnit * 8}px 0 + ${({ theme }) => theme.gridUnit * 4}px; +`; + +export const StyledRadio = styled(Radio)` + display: block; + line-height: ${({ theme }) => theme.gridUnit * 8}px; +`; + +export const StyledRadioGroup = styled(Radio.Group)` + margin-left: ${({ theme }) => theme.gridUnit * 0.5}px; +`; diff --git a/superset-frontend/src/components/TimezoneSelector/index.tsx b/superset-frontend/src/components/TimezoneSelector/index.tsx index b63bf41eb537e..73c6f1fc86968 100644 --- a/superset-frontend/src/components/TimezoneSelector/index.tsx +++ b/superset-frontend/src/components/TimezoneSelector/index.tsx @@ -23,7 +23,7 @@ import moment from 'moment-timezone'; import { NativeGraySelect as Select } from 'src/components/Select'; const DEFAULT_TIMEZONE = 'GMT Standard Time'; -const MIN_SELECT_WIDTH = '375px'; +const MIN_SELECT_WIDTH = '400px'; const offsetsToName = { '-300-240': ['Eastern Standard Time', 'Eastern Daylight Time'], diff --git a/superset-frontend/src/components/Tooltip/index.tsx b/superset-frontend/src/components/Tooltip/index.tsx index 5ec24bb3a60ff..9267502682809 100644 --- a/superset-frontend/src/components/Tooltip/index.tsx +++ b/superset-frontend/src/components/Tooltip/index.tsx @@ -17,17 +17,32 @@ * under the License. */ import React from 'react'; -import { useTheme } from '@superset-ui/core'; +import { useTheme, css } from '@superset-ui/core'; import { Tooltip as AntdTooltip } from 'antd'; import { TooltipProps } from 'antd/lib/tooltip'; +import { Global } from '@emotion/react'; export const Tooltip = (props: TooltipProps) => { const theme = useTheme(); return ( - + <> + {/* Safari hack to hide browser default tooltips */} + + + ); }; diff --git a/superset-frontend/src/components/dataViewCommon/TableCollection.tsx b/superset-frontend/src/components/dataViewCommon/TableCollection.tsx index b200eb158b702..b8f644fe656fa 100644 --- a/superset-frontend/src/components/dataViewCommon/TableCollection.tsx +++ b/superset-frontend/src/components/dataViewCommon/TableCollection.tsx @@ -187,7 +187,7 @@ export const Table = styled.table` text-overflow: ellipsis; overflow: hidden; white-space: nowrap; - max-width: 300px; + max-width: 320px; line-height: 1; vertical-align: middle; &:first-of-type { diff --git a/superset-frontend/src/dashboard/components/FiltersBadge/DetailsPanel/DetailsPanel.test.tsx b/superset-frontend/src/dashboard/components/FiltersBadge/DetailsPanel/DetailsPanel.test.tsx index 239df0f54d700..12efe2c3e5d67 100644 --- a/superset-frontend/src/dashboard/components/FiltersBadge/DetailsPanel/DetailsPanel.test.tsx +++ b/superset-frontend/src/dashboard/components/FiltersBadge/DetailsPanel/DetailsPanel.test.tsx @@ -96,6 +96,7 @@ test('Should render "appliedCrossFilterIndicators"', () => {
Content
, + { useRedux: true }, ); userEvent.click(screen.getByTestId('details-panel-content')); @@ -129,6 +130,7 @@ test('Should render "appliedIndicators"', () => {
Content
, + { useRedux: true }, ); userEvent.click(screen.getByTestId('details-panel-content')); @@ -160,6 +162,7 @@ test('Should render "incompatibleIndicators"', () => {
Content
, + { useRedux: true }, ); userEvent.click(screen.getByTestId('details-panel-content')); @@ -193,6 +196,7 @@ test('Should render "unsetIndicators"', () => {
Content
, + { useRedux: true }, ); userEvent.click(screen.getByTestId('details-panel-content')); @@ -227,6 +231,7 @@ test('Should render empty', () => {
Content
, + { useRedux: true }, ); expect(screen.getByTestId('details-panel-content')).toBeInTheDocument(); diff --git a/superset-frontend/src/dashboard/components/FiltersBadge/DetailsPanel/index.tsx b/superset-frontend/src/dashboard/components/FiltersBadge/DetailsPanel/index.tsx index 6a311c3bcb3b8..54058236c1d2d 100644 --- a/superset-frontend/src/dashboard/components/FiltersBadge/DetailsPanel/index.tsx +++ b/superset-frontend/src/dashboard/components/FiltersBadge/DetailsPanel/index.tsx @@ -17,6 +17,7 @@ * under the License. */ import React, { useEffect, useState } from 'react'; +import { useSelector } from 'react-redux'; import { Global, css } from '@emotion/react'; import { t, useTheme } from '@superset-ui/core'; import { @@ -35,6 +36,7 @@ import { } from 'src/dashboard/components/FiltersBadge/Styles'; import { Indicator } from 'src/dashboard/components/FiltersBadge/selectors'; import FilterIndicator from 'src/dashboard/components/FiltersBadge/FilterIndicator'; +import { RootState } from 'src/dashboard/types'; export interface DetailsPanelProps { appliedCrossFilterIndicators: Indicator[]; @@ -55,6 +57,9 @@ const DetailsPanelPopover = ({ }: DetailsPanelProps) => { const [visible, setVisible] = useState(false); const theme = useTheme(); + const activeTabs = useSelector( + state => state.dashboardState?.activeTabs, + ); // we don't need to clean up useEffect, setting { once: true } removes the event listener after handle function is called useEffect(() => { @@ -65,6 +70,11 @@ const DetailsPanelPopover = ({ } }, [visible]); + // if tabs change, popover doesn't close automatically + useEffect(() => { + setVisible(false); + }, [activeTabs]); + const getDefaultActivePanel = () => { const result = []; if (appliedCrossFilterIndicators.length) { diff --git a/superset-frontend/src/dashboard/components/FiltersBadge/selectors.ts b/superset-frontend/src/dashboard/components/FiltersBadge/selectors.ts index 48d706fc835e9..34bdfce6d9754 100644 --- a/superset-frontend/src/dashboard/components/FiltersBadge/selectors.ts +++ b/superset-frontend/src/dashboard/components/FiltersBadge/selectors.ts @@ -20,7 +20,12 @@ import { NO_TIME_RANGE, TIME_FILTER_MAP } from 'src/explore/constants'; import { getChartIdsInFilterScope } from 'src/dashboard/util/activeDashboardFilters'; import { ChartConfiguration, Filters } from 'src/dashboard/reducers/types'; import { DataMaskStateWithId, DataMaskType } from 'src/dataMask/types'; -import { FeatureFlag, isFeatureEnabled } from '@superset-ui/core'; +import { + ensureIsArray, + FeatureFlag, + FilterState, + isFeatureEnabled, +} from '@superset-ui/core'; import { Layout } from '../../types'; import { getTreeCheckedItems } from '../nativeFilters/FiltersConfigModal/FiltersConfigForm/FilterScope/utils'; @@ -50,6 +55,16 @@ type Filter = { datasourceId: string; }; +const extractLabel = (filter?: FilterState): string | null => { + if (filter?.label) { + return filter.label; + } + if (filter?.value) { + return ensureIsArray(filter?.value).join(', '); + } + return null; +}; + const selectIndicatorValue = ( columnKey: string, filter: Filter, @@ -182,16 +197,16 @@ export const selectNativeIndicatorsForChart = ( const rejectedColumns = getRejectedColumns(chart); const getStatus = ({ - value, + label, column, type = DataMaskType.NativeFilters, }: { - value: any; + label: string | null; column?: string; type?: DataMaskType; }): IndicatorStatus => { // a filter is only considered unset if it's value is null - const hasValue = value !== null; + const hasValue = label !== null; if (type === DataMaskType.CrossFilters && hasValue) { return IndicatorStatus.CrossFilterApplied; } @@ -220,19 +235,14 @@ export const selectNativeIndicatorsForChart = ( ) .map(nativeFilter => { const column = nativeFilter.targets[0]?.column?.name; - let value = - dataMask[nativeFilter.id]?.filterState?.label ?? - dataMask[nativeFilter.id]?.filterState?.value ?? - null; - if (!Array.isArray(value) && value !== null) { - value = [value]; - } + const filterState = dataMask[nativeFilter.id]?.filterState; + const label = extractLabel(filterState); return { column, name: nativeFilter.name, path: [nativeFilter.id], - status: getStatus({ value, column }), - value, + status: getStatus({ label, column }), + value: label, }; }); } @@ -249,23 +259,26 @@ export const selectNativeIndicatorsForChart = ( ), ) .map(chartConfig => { - let value = - dataMask[chartConfig.id]?.filterState?.label ?? - dataMask[chartConfig.id]?.filterState?.value ?? - null; - if (!Array.isArray(value) && value !== null) { - value = [value]; - } + const filterState = dataMask[chartConfig.id]?.filterState; + const label = extractLabel(filterState); + const filtersState = filterState?.filters; + const column = filtersState && Object.keys(filtersState)[0]; + + const dashboardLayoutItem = Object.values(dashboardLayout).find( + layoutItem => layoutItem?.meta?.chartId === chartConfig.id, + ); return { - name: Object.values(dashboardLayout).find( - layoutItem => layoutItem?.meta?.chartId === chartConfig.id, - )?.meta?.sliceName as string, - path: [`${chartConfig.id}`], + column, + name: dashboardLayoutItem?.meta?.sliceName as string, + path: [ + ...(dashboardLayoutItem?.parents ?? []), + dashboardLayoutItem?.id, + ], status: getStatus({ - value, + label, type: DataMaskType.CrossFilters, }), - value, + value: label, }; }) .filter(filter => filter.status === IndicatorStatus.CrossFilterApplied); diff --git a/superset-frontend/src/dashboard/components/Header/index.jsx b/superset-frontend/src/dashboard/components/Header/index.jsx index 8d396e371ac9d..9198601ae685d 100644 --- a/superset-frontend/src/dashboard/components/Header/index.jsx +++ b/superset-frontend/src/dashboard/components/Header/index.jsx @@ -48,7 +48,9 @@ import { SAVE_TYPE_OVERWRITE, DASHBOARD_POSITION_DATA_LIMIT, } from 'src/dashboard/util/constants'; -import setPeriodicRunner from 'src/dashboard/util/setPeriodicRunner'; +import setPeriodicRunner, { + stopPeriodicRender, +} from 'src/dashboard/util/setPeriodicRunner'; import { options as PeriodicRefreshOptions } from 'src/dashboard/components/RefreshIntervalModal'; const propTypes = { @@ -168,18 +170,20 @@ class Header extends React.PureComponent { componentDidMount() { const { refreshFrequency, user, dashboardInfo } = this.props; this.startPeriodicRender(refreshFrequency * 1000); - if (user && isFeatureEnabled(FeatureFlag.ALERT_REPORTS)) { + if (this.canAddReports()) { // this is in case there is an anonymous user. this.props.fetchUISpecificReport( user.userId, 'dashboard_id', 'dashboards', dashboardInfo.id, + user.email, ); } } UNSAFE_componentWillReceiveProps(nextProps) { + const { user } = this.props; if ( UNDO_LIMIT - nextProps.undoLength <= 0 && !this.state.didNotifyMaxUndoHistoryToast @@ -193,9 +197,24 @@ class Header extends React.PureComponent { ) { this.props.setMaxUndoHistoryExceeded(); } + if ( + this.canAddReports() && + nextProps.dashboardInfo.id !== this.props.dashboardInfo.id + ) { + // this is in case there is an anonymous user. + this.props.fetchUISpecificReport( + user.userId, + 'dashboard_id', + 'dashboards', + nextProps.dashboardInfo.id, + user.email, + ); + } } componentWillUnmount() { + stopPeriodicRender(this.refreshTimer); + this.props.setRefreshFrequency(0); clearTimeout(this.ctrlYTimeout); clearTimeout(this.ctrlZTimeout); } @@ -383,32 +402,31 @@ class Header extends React.PureComponent { renderReportModal() { const attachedReportExists = !!Object.keys(this.props.reports).length; - const canAddReports = isFeatureEnabled(FeatureFlag.ALERT_REPORTS); - return ( - (canAddReports || null) && - (attachedReportExists ? ( - - ) : ( - <> - - - - - )) + return attachedReportExists ? ( + + ) : ( + <> + + + + ); } canAddReports() { + if (!isFeatureEnabled(FeatureFlag.ALERT_REPORTS)) { + return false; + } const { user } = this.props; if (!user) { // this is in the case that there is an anonymous user. @@ -417,7 +435,7 @@ class Header extends React.PureComponent { const roles = Object.keys(user.roles || []); const permissions = roles.map(key => user.roles[key].filter( - perms => perms[0] === 'can_add' && perms[1] === 'AlertModelView', + perms => perms[0] === 'menu_access' && perms[1] === 'Manage', ), ); return permissions[0].length > 0; diff --git a/superset-frontend/src/dashboard/util/setPeriodicRunner.ts b/superset-frontend/src/dashboard/util/setPeriodicRunner.ts index e0207e860598e..c5177edf7187b 100644 --- a/superset-frontend/src/dashboard/util/setPeriodicRunner.ts +++ b/superset-frontend/src/dashboard/util/setPeriodicRunner.ts @@ -16,7 +16,7 @@ * specific language governing permissions and limitations * under the License. */ -const stopPeriodicRender = (refreshTimer?: number) => { +export const stopPeriodicRender = (refreshTimer?: number) => { if (refreshTimer) { clearInterval(refreshTimer); } diff --git a/superset-frontend/src/datasource/DatasourceEditor.jsx b/superset-frontend/src/datasource/DatasourceEditor.jsx index dfd323e1a0b32..c59b6ad70b8fa 100644 --- a/superset-frontend/src/datasource/DatasourceEditor.jsx +++ b/superset-frontend/src/datasource/DatasourceEditor.jsx @@ -16,6 +16,7 @@ * specific language governing permissions and limitations * under the License. */ +import rison from 'rison'; import React from 'react'; import PropTypes from 'prop-types'; import { Row, Col } from 'src/common/components'; @@ -112,7 +113,7 @@ const ColumnButtonWrapper = styled.div` const checkboxGenerator = (d, onChange) => ( ); -const DATA_TYPES = ['STRING', 'NUMERIC', 'DATETIME']; +const DATA_TYPES = ['STRING', 'NUMERIC', 'DATETIME', 'BOOLEAN']; const DATASOURCE_TYPES_ARR = [ { key: 'physical', label: t('Physical (table or view)') }, @@ -485,11 +486,19 @@ class DatasourceEditor extends React.PureComponent { syncMetadata() { const { datasource } = this.state; - const endpoint = `/datasource/external_metadata_by_name/${ - datasource.type || datasource.datasource_type - }/${datasource.database.database_name || datasource.database.name}/${ - datasource.schema - }/${datasource.table_name}/`; + const params = { + datasource_type: datasource.type || datasource.datasource_type, + database_name: + datasource.database.database_name || datasource.database.name, + schema_name: datasource.schema, + table_name: datasource.table_name, + }; + const endpoint = `/datasource/external_metadata_by_name/?q=${rison.encode( + // rison can't encode the undefined value + Object.keys(params).map(key => + params[key] === undefined ? null : params[key], + ), + )}`; this.setState({ metadataLoading: true }); SupersetClient.get({ endpoint }) @@ -616,7 +625,13 @@ class DatasourceEditor extends React.PureComponent { 'values from the table. Typically the intent would be to limit the scan ' + 'by applying a relative time filter on a partitioned or indexed time-related field.', )} - control={} + control={ + + } /> )} {this.state.isSqla && ( diff --git a/superset-frontend/src/explore/components/DatasourcePanel/DatasourcePanelDragWrapper/DatasourcePanelDragWrapper.test.tsx b/superset-frontend/src/explore/components/DatasourcePanel/DatasourcePanelDragOption/DatasourcePanelDragOption.test.tsx similarity index 75% rename from superset-frontend/src/explore/components/DatasourcePanel/DatasourcePanelDragWrapper/DatasourcePanelDragWrapper.test.tsx rename to superset-frontend/src/explore/components/DatasourcePanel/DatasourcePanelDragOption/DatasourcePanelDragOption.test.tsx index 7698f7328ca3d..be8f91eade6aa 100644 --- a/superset-frontend/src/explore/components/DatasourcePanel/DatasourcePanelDragWrapper/DatasourcePanelDragWrapper.test.tsx +++ b/superset-frontend/src/explore/components/DatasourcePanel/DatasourcePanelDragOption/DatasourcePanelDragOption.test.tsx @@ -21,37 +21,33 @@ import { DndProvider } from 'react-dnd'; import { HTML5Backend } from 'react-dnd-html5-backend'; import { render, screen } from 'spec/helpers/testing-library'; import { DndItemType } from 'src/explore/components/DndItemType'; -import DatasourcePanelDragWrapper from '.'; +import DatasourcePanelDragOption from '.'; test('should render', () => { render( - -
- + /> , ); - expect(screen.getByTestId('DatasourcePanelDragWrapper')).toBeInTheDocument(); - expect(screen.getByTestId('children')).toBeInTheDocument(); + expect(screen.getByTestId('DatasourcePanelDragOption')).toBeInTheDocument(); + expect(screen.getByText('test')).toBeInTheDocument(); }); test('should have attribute draggable:true', () => { render( - -
- + /> , ); - expect(screen.getByTestId('DatasourcePanelDragWrapper')).toHaveAttribute( + expect(screen.getByTestId('DatasourcePanelDragOption')).toHaveAttribute( 'draggable', 'true', ); diff --git a/superset-frontend/src/explore/components/DatasourcePanel/DatasourcePanelDragWrapper/index.tsx b/superset-frontend/src/explore/components/DatasourcePanel/DatasourcePanelDragOption/index.tsx similarity index 52% rename from superset-frontend/src/explore/components/DatasourcePanel/DatasourcePanelDragWrapper/index.tsx rename to superset-frontend/src/explore/components/DatasourcePanel/DatasourcePanelDragOption/index.tsx index c4ad3952e2f86..518f7ebabc8be 100644 --- a/superset-frontend/src/explore/components/DatasourcePanel/DatasourcePanelDragWrapper/index.tsx +++ b/superset-frontend/src/explore/components/DatasourcePanel/DatasourcePanelDragOption/index.tsx @@ -16,9 +16,15 @@ * specific language governing permissions and limitations * under the License. */ -import React, { ReactNode } from 'react'; +import React from 'react'; import { useDrag } from 'react-dnd'; -import { styled } from '@superset-ui/core'; +import { Metric, styled } from '@superset-ui/core'; +import { DndItemType } from 'src/explore/components/DndItemType'; +import { + StyledColumnOption, + StyledMetricOption, +} from 'src/explore/components/optionRenderers'; +import { ColumnMeta } from '@superset-ui/chart-controls'; import { DatasourcePanelDndItem } from '../types'; const DatasourceItemContainer = styled.div` @@ -37,23 +43,42 @@ const DatasourceItemContainer = styled.div` } `; -interface DatasourcePanelDragWrapperProps extends DatasourcePanelDndItem { - children?: ReactNode; +interface DatasourcePanelDragOptionProps extends DatasourcePanelDndItem { + labelRef?: React.RefObject; + showTooltip?: boolean; } -export default function DatasourcePanelDragWrapper( - props: DatasourcePanelDragWrapperProps, +type MetricOption = Omit & { + label?: string; +}; + +export default function DatasourcePanelDragOption( + props: DatasourcePanelDragOptionProps, ) { - const [, drag] = useDrag({ + const { labelRef, showTooltip, type, value } = props; + const [{ isDragging }, drag] = useDrag({ item: { value: props.value, type: props.type, }, + collect: monitor => ({ + isDragging: monitor.isDragging(), + }), }); + const optionProps = { + labelRef, + showTooltip: !isDragging && showTooltip, + showType: true, + }; + return ( - - {props.children} + + {type === DndItemType.Column ? ( + + ) : ( + + )} ); } diff --git a/superset-frontend/src/explore/components/DatasourcePanel/index.tsx b/superset-frontend/src/explore/components/DatasourcePanel/index.tsx index 2c5caa6c32f8c..bc436cf66e803 100644 --- a/superset-frontend/src/explore/components/DatasourcePanel/index.tsx +++ b/superset-frontend/src/explore/components/DatasourcePanel/index.tsx @@ -16,7 +16,7 @@ * specific language governing permissions and limitations * under the License. */ -import React, { useEffect, useMemo, useState } from 'react'; +import React, { useEffect, useMemo, useRef, useState } from 'react'; import { styled, t } from '@superset-ui/core'; import Collapse from 'src/components/Collapse'; import { ControlConfig, DatasourceMeta } from '@superset-ui/chart-controls'; @@ -26,7 +26,7 @@ import { FAST_DEBOUNCE } from 'src/constants'; import { FeatureFlag, isFeatureEnabled } from 'src/featureFlags'; import { ExploreActions } from 'src/explore/actions/exploreActions'; import Control from 'src/explore/components/Control'; -import DatasourcePanelDragWrapper from './DatasourcePanelDragWrapper'; +import DatasourcePanelDragOption from './DatasourcePanelDragOption'; import { DndItemType } from '../DndItemType'; import { StyledColumnOption, StyledMetricOption } from '../optionRenderers'; @@ -87,7 +87,7 @@ const DatasourceContainer = styled.div` } `; -const LabelContainer = styled.div` +const LabelWrapper = styled.div` overflow: hidden; text-overflow: ellipsis; @@ -110,6 +110,42 @@ const LabelContainer = styled.div` } `; +const LabelContainer = (props: { + children: React.ReactElement; + className: string; +}) => { + const labelRef = useRef(null); + const [showTooltip, setShowTooltip] = useState(true); + const isLabelTruncated = () => + !!( + labelRef && + labelRef.current && + labelRef.current.scrollWidth > labelRef.current.clientWidth + ); + const handleShowTooltip = () => { + const shouldShowTooltip = isLabelTruncated(); + if (shouldShowTooltip !== showTooltip) { + setShowTooltip(shouldShowTooltip); + } + }; + const handleResetTooltip = () => { + setShowTooltip(true); + }; + const extendedProps = { + labelRef, + showTooltip, + }; + return ( + + {React.cloneElement(props.children, extendedProps)} + + ); +}; + const enableExploreDnd = isFeatureEnabled( FeatureFlag.ENABLE_EXPLORE_DRAG_AND_DROP, ); @@ -245,12 +281,10 @@ export default function DataSourcePanel({ {metricSlice.map(m => ( {enableExploreDnd ? ( - - - + /> ) : ( )} @@ -276,12 +310,10 @@ export default function DataSourcePanel({ {columnSlice.map(col => ( {enableExploreDnd ? ( - - - + /> ) : ( )} diff --git a/superset-frontend/src/explore/components/ExploreChartHeader.jsx b/superset-frontend/src/explore/components/ExploreChartHeader.jsx index 0613f61a586cf..5d057cabaec76 100644 --- a/superset-frontend/src/explore/components/ExploreChartHeader.jsx +++ b/superset-frontend/src/explore/components/ExploreChartHeader.jsx @@ -117,8 +117,8 @@ export class ExploreChartHeader extends React.PureComponent { } componentDidMount() { - const { user, chart } = this.props; - if (user && isFeatureEnabled(FeatureFlag.ALERT_REPORTS)) { + if (this.canAddReports()) { + const { user, chart } = this.props; // this is in the case that there is an anonymous user. this.props.fetchUISpecificReport( user.userId, @@ -165,33 +165,32 @@ export class ExploreChartHeader extends React.PureComponent { renderReportModal() { const attachedReportExists = !!Object.keys(this.props.reports).length; - const canAddReports = isFeatureEnabled(FeatureFlag.ALERT_REPORTS); - return ( - (canAddReports || null) && - (attachedReportExists ? ( - - ) : ( - <> - - - - - )) + return attachedReportExists ? ( + + ) : ( + <> + + + + ); } canAddReports() { + if (!isFeatureEnabled(FeatureFlag.ALERT_REPORTS)) { + return false; + } const { user } = this.props; if (!user) { // this is in the case that there is an anonymous user. @@ -200,7 +199,7 @@ export class ExploreChartHeader extends React.PureComponent { const roles = Object.keys(user.roles || []); const permissions = roles.map(key => user.roles[key].filter( - perms => perms[0] === 'can_add' && perms[1] === 'AlertModelView', + perms => perms[0] === 'menu_access' && perms[1] === 'Manage', ), ); return permissions[0].length > 0; @@ -295,7 +294,7 @@ export class ExploreChartHeader extends React.PureComponent { props={{ userId: this.props.user.userId, userEmail: this.props.user.email, - chartId: this.props.chart.id, + chart: this.props.chart, creationMethod: 'charts', }} /> diff --git a/superset-frontend/src/explore/components/ExploreChartPanel.jsx b/superset-frontend/src/explore/components/ExploreChartPanel.jsx index a8d07ede5652e..82cc0b9fd864b 100644 --- a/superset-frontend/src/explore/components/ExploreChartPanel.jsx +++ b/superset-frontend/src/explore/components/ExploreChartPanel.jsx @@ -132,7 +132,7 @@ const ExploreChartPanel = props => { const { slice } = props; const updateQueryContext = useCallback( async function fetchChartData() { - if (slice && slice.query_context === null) { + if (props.can_overwrite && slice && slice.query_context === null) { const queryContext = buildV1ChartDataPayload({ formData: slice.form_data, force: false, @@ -147,6 +147,7 @@ const ExploreChartPanel = props => { headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ query_context: JSON.stringify(queryContext), + query_context_generation: true, }), }); } diff --git a/superset-frontend/src/explore/components/ExploreViewContainer.jsx b/superset-frontend/src/explore/components/ExploreViewContainer.jsx index ce2b5b382563d..27a6aa25ab9df 100644 --- a/superset-frontend/src/explore/components/ExploreViewContainer.jsx +++ b/superset-frontend/src/explore/components/ExploreViewContainer.jsx @@ -81,7 +81,7 @@ const Styles = styled.div` text-align: left; position: relative; width: 100%; - height: 100%; + max-height: 100%; display: flex; flex-direction: row; flex-wrap: nowrap; @@ -448,6 +448,7 @@ function ExploreViewContainer(props) { margin-bottom: 0; } body { + height: 100vh; max-height: 100vh; overflow: hidden; } @@ -458,7 +459,7 @@ function ExploreViewContainer(props) { #app { flex-basis: 100%; overflow: hidden; - height: 100vh; + height: 100%; } #app-menu { flex-shrink: 0; diff --git a/superset-frontend/src/explore/components/controls/ConditionalFormattingControl/FormattingPopoverContent.tsx b/superset-frontend/src/explore/components/controls/ConditionalFormattingControl/FormattingPopoverContent.tsx index b23b456c4cd65..85f406c08d189 100644 --- a/superset-frontend/src/explore/components/controls/ConditionalFormattingControl/FormattingPopoverContent.tsx +++ b/superset-frontend/src/explore/components/controls/ConditionalFormattingControl/FormattingPopoverContent.tsx @@ -16,9 +16,9 @@ * specific language governing permissions and limitations * under the License. */ -import React, { useCallback, useMemo } from 'react'; +import React from 'react'; import { styled, t } from '@superset-ui/core'; -import { Form, FormItem } from 'src/components/Form'; +import { Form, FormItem, FormProps } from 'src/components/Form'; import { Select } from 'src/components'; import { Col, InputNumber, Row } from 'src/common/components'; import Button from 'src/components/Button'; @@ -57,6 +57,127 @@ const operatorOptions = [ { value: COMPARATOR.BETWEEN_OR_RIGHT_EQUAL, label: '< x ≤' }, ]; +const targetValueValidator = ( + compare: (targetValue: number, compareValue: number) => boolean, + rejectMessage: string, +) => (targetValue: number | string) => ( + _: any, + compareValue: number | string, +) => { + if ( + !targetValue || + !compareValue || + compare(Number(targetValue), Number(compareValue)) + ) { + return Promise.resolve(); + } + return Promise.reject(new Error(rejectMessage)); +}; + +const targetValueLeftValidator = targetValueValidator( + (target: number, val: number) => target > val, + t('This value should be smaller than the right target value'), +); + +const targetValueRightValidator = targetValueValidator( + (target: number, val: number) => target < val, + t('This value should be greater than the left target value'), +); + +const isOperatorMultiValue = (operator?: COMPARATOR) => + operator && MULTIPLE_VALUE_COMPARATORS.includes(operator); + +const isOperatorNone = (operator?: COMPARATOR) => + !operator || operator === COMPARATOR.NONE; + +const rulesRequired = [{ required: true, message: t('Required') }]; + +type GetFieldValue = Pick['form'], 'getFieldValue'>; +const rulesTargetValueLeft = [ + { required: true, message: t('Required') }, + ({ getFieldValue }: GetFieldValue) => ({ + validator: targetValueLeftValidator(getFieldValue('targetValueRight')), + }), +]; + +const rulesTargetValueRight = [ + { required: true, message: t('Required') }, + ({ getFieldValue }: GetFieldValue) => ({ + validator: targetValueRightValidator(getFieldValue('targetValueLeft')), + }), +]; + +const targetValueLeftDeps = ['targetValueRight']; +const targetValueRightDeps = ['targetValueLeft']; + +const shouldFormItemUpdate = ( + prevValues: ConditionalFormattingConfig, + currentValues: ConditionalFormattingConfig, +) => + isOperatorNone(prevValues.operator) !== + isOperatorNone(currentValues.operator) || + isOperatorMultiValue(prevValues.operator) !== + isOperatorMultiValue(currentValues.operator); + +const operatorField = ( + + - - ), - [], - ); - - const targetValueLeftValidator = useCallback( - (rightValue?: number) => (_: any, value?: number) => { - if (!value || !rightValue || rightValue > value) { - return Promise.resolve(); - } - return Promise.reject( - new Error( - t('This value should be smaller than the right target value'), - ), - ); - }, - [], - ); - - const targetValueRightValidator = useCallback( - (leftValue?: number) => (_: any, value?: number) => { - if (!value || !leftValue || leftValue < value) { - return Promise.resolve(); - } - return Promise.reject( - new Error(t('This value should be greater than the left target value')), - ); - }, - [], - ); - - return ( -
- - - - - - - - - isOperatorNone(prevValues.operator) !== - isOperatorNone(currentValues.operator) || - isOperatorMultiValue(prevValues.operator) !== - isOperatorMultiValue(currentValues.operator) - } - > - {({ getFieldValue }) => - isOperatorNone(getFieldValue('operator')) ? ( - - {operatorField} - - ) : isOperatorMultiValue(getFieldValue('operator')) ? ( - - - ({ - validator: targetValueLeftValidator( - getFieldValue('targetValueRight'), - ), - }), - ]} - dependencies={['targetValueRight']} - validateTrigger="onBlur" - trigger="onBlur" - > - - - - {operatorField} - - ({ - validator: targetValueRightValidator( - getFieldValue('targetValueLeft'), - ), - }), - ]} - dependencies={['targetValueLeft']} - validateTrigger="onBlur" - trigger="onBlur" - > - - - - - ) : ( - - {operatorField} - - - - - - - ) - } - - - - - - -
- ); -}; +}) => ( +
+ + + + + + + + + {renderOperatorFields} + + + + + + +
+); diff --git a/superset-frontend/src/explore/components/controls/DndColumnSelectControl/DndColumnSelect.test.tsx b/superset-frontend/src/explore/components/controls/DndColumnSelectControl/DndColumnSelect.test.tsx index 3a1325875cf7f..93d00a70592db 100644 --- a/superset-frontend/src/explore/components/controls/DndColumnSelectControl/DndColumnSelect.test.tsx +++ b/superset-frontend/src/explore/components/controls/DndColumnSelectControl/DndColumnSelect.test.tsx @@ -29,7 +29,7 @@ const defaultProps: LabelProps = { test('renders with default props', () => { render(, { useDnd: true }); - expect(screen.getByText('Drop columns')).toBeInTheDocument(); + expect(screen.getByText('Drop columns here')).toBeInTheDocument(); }); test('renders with value', () => { diff --git a/superset-frontend/src/explore/components/controls/DndColumnSelectControl/DndColumnSelect.tsx b/superset-frontend/src/explore/components/controls/DndColumnSelectControl/DndColumnSelect.tsx index e8f64db146c40..788b4e27cc775 100644 --- a/superset-frontend/src/explore/components/controls/DndColumnSelectControl/DndColumnSelect.tsx +++ b/superset-frontend/src/explore/components/controls/DndColumnSelectControl/DndColumnSelect.tsx @@ -26,7 +26,6 @@ import OptionWrapper from 'src/explore/components/controls/DndColumnSelectContro import { OptionSelector } from 'src/explore/components/controls/DndColumnSelectControl/utils'; import { DatasourcePanelDndItem } from 'src/explore/components/DatasourcePanel/types'; import { DndItemType } from 'src/explore/components/DndItemType'; -import { StyledColumnOption } from 'src/explore/components/optionRenderers'; import { useComponentDidUpdate } from 'src/common/hooks/useComponentDidUpdate'; export const DndColumnSelect = (props: LabelProps) => { @@ -121,9 +120,8 @@ export const DndColumnSelect = (props: LabelProps) => { onShiftOptions={onShiftOptions} type={`${DndItemType.ColumnOption}_${name}_${label}`} canDelete={canDelete} - > - - + column={column} + /> )), [ canDelete, @@ -143,7 +141,8 @@ export const DndColumnSelect = (props: LabelProps) => { accept={DndItemType.Column} displayGhostButton={multi || optionSelector.values.length === 0} ghostButtonText={ - ghostButtonText || tn('Drop column', 'Drop columns', multi ? 2 : 1) + ghostButtonText || + tn('Drop column here', 'Drop columns here', multi ? 2 : 1) } {...props} /> diff --git a/superset-frontend/src/explore/components/controls/DndColumnSelectControl/DndFilterSelect.test.tsx b/superset-frontend/src/explore/components/controls/DndColumnSelectControl/DndFilterSelect.test.tsx index bf7d135b7884d..bddb80a9aa210 100644 --- a/superset-frontend/src/explore/components/controls/DndColumnSelectControl/DndFilterSelect.test.tsx +++ b/superset-frontend/src/explore/components/controls/DndColumnSelectControl/DndFilterSelect.test.tsx @@ -38,7 +38,7 @@ const defaultProps = { test('renders with default props', () => { render(, { useDnd: true }); - expect(screen.getByText('Drop columns or metrics')).toBeInTheDocument(); + expect(screen.getByText('Drop columns or metrics here')).toBeInTheDocument(); }); test('renders with value', () => { @@ -56,7 +56,7 @@ test('renders options with saved metric', () => { render(, { useDnd: true, }); - expect(screen.getByText('Drop columns or metrics')).toBeInTheDocument(); + expect(screen.getByText('Drop columns or metrics here')).toBeInTheDocument(); }); test('renders options with column', () => { @@ -76,7 +76,7 @@ test('renders options with column', () => { useDnd: true, }, ); - expect(screen.getByText('Drop columns or metrics')).toBeInTheDocument(); + expect(screen.getByText('Drop columns or metrics here')).toBeInTheDocument(); }); test('renders options with adhoc metric', () => { @@ -87,5 +87,5 @@ test('renders options with adhoc metric', () => { render(, { useDnd: true, }); - expect(screen.getByText('Drop columns or metrics')).toBeInTheDocument(); + expect(screen.getByText('Drop columns or metrics here')).toBeInTheDocument(); }); diff --git a/superset-frontend/src/explore/components/controls/DndColumnSelectControl/DndFilterSelect.tsx b/superset-frontend/src/explore/components/controls/DndColumnSelectControl/DndFilterSelect.tsx index dc7e892e3fea7..1e2eba8a6b0b0 100644 --- a/superset-frontend/src/explore/components/controls/DndColumnSelectControl/DndFilterSelect.tsx +++ b/superset-frontend/src/explore/components/controls/DndColumnSelectControl/DndFilterSelect.tsx @@ -26,7 +26,6 @@ import { t, } from '@superset-ui/core'; import { ColumnMeta } from '@superset-ui/chart-controls'; -import { Tooltip } from 'src/components/Tooltip'; import { OPERATOR_ENUM_TO_OPERATOR_TYPE, Operators, @@ -299,6 +298,7 @@ export const DndFilterSelect = (props: DndFilterSelectProps) => { () => values.map((adhocFilter: AdhocFilter, index: number) => { const label = adhocFilter.getDefaultLabel(); + const tooltipTitle = adhocFilter.getTooltipTitle(); return ( { - {label} - + /> ); }), @@ -374,7 +374,7 @@ export const DndFilterSelect = (props: DndFilterSelectProps) => { canDrop={canDrop} valuesRenderer={valuesRenderer} accept={DND_ACCEPTED_TYPES} - ghostButtonText={t('Drop columns or metrics')} + ghostButtonText={t('Drop columns or metrics here')} {...props} /> { render(, { useDnd: true }); - expect(screen.getByText('Drop column or metric')).toBeInTheDocument(); + expect(screen.getByText('Drop column or metric here')).toBeInTheDocument(); }); test('renders with default props and multi = true', () => { render(, { useDnd: true }); - expect(screen.getByText('Drop columns or metrics')).toBeInTheDocument(); + expect(screen.getByText('Drop columns or metrics here')).toBeInTheDocument(); }); diff --git a/superset-frontend/src/explore/components/controls/DndColumnSelectControl/DndMetricSelect.tsx b/superset-frontend/src/explore/components/controls/DndColumnSelectControl/DndMetricSelect.tsx index 77dbfa3285d2b..f44934a320139 100644 --- a/superset-frontend/src/explore/components/controls/DndColumnSelectControl/DndMetricSelect.tsx +++ b/superset-frontend/src/explore/components/controls/DndColumnSelectControl/DndMetricSelect.tsx @@ -185,6 +185,9 @@ export const DndMetricSelect = (props: any) => { const onMetricEdit = useCallback( (changedMetric: Metric | AdhocMetric, oldMetric: Metric | AdhocMetric) => { + if (oldMetric instanceof AdhocMetric && oldMetric.equals(changedMetric)) { + return; + } const newValue = value.map(value => { if ( // compare saved metrics @@ -245,7 +248,10 @@ export const DndMetricSelect = (props: any) => { [props.savedMetrics, props.value], ); - const handleDropLabel = useCallback(() => onChange(value), [onChange, value]); + const handleDropLabel = useCallback( + () => onChange(multi ? value : value[0]), + [multi, onChange, value], + ); const valueRenderer = useCallback( (option: Metric | AdhocMetric | string, index: number) => ( @@ -262,12 +268,14 @@ export const DndMetricSelect = (props: any) => { onMoveLabel={moveLabel} onDropLabel={handleDropLabel} type={`${DndItemType.AdhocMetricOption}_${props.name}_${props.label}`} + multi={multi} /> ), [ getSavedMetricOptionsForMetric, handleDropLabel, moveLabel, + multi, onMetricEdit, onRemoveMetric, props.columns, @@ -334,8 +342,8 @@ export const DndMetricSelect = (props: any) => { valuesRenderer={valuesRenderer} accept={DND_ACCEPTED_TYPES} ghostButtonText={tn( - 'Drop column or metric', - 'Drop columns or metrics', + 'Drop column or metric here', + 'Drop columns or metrics here', multi ? 2 : 1, )} displayGhostButton={multi || value.length === 0} diff --git a/superset-frontend/src/explore/components/controls/DndColumnSelectControl/DndSelectLabel.test.tsx b/superset-frontend/src/explore/components/controls/DndColumnSelectControl/DndSelectLabel.test.tsx index d6090e2a269d9..d9689d7e8d235 100644 --- a/superset-frontend/src/explore/components/controls/DndColumnSelectControl/DndSelectLabel.test.tsx +++ b/superset-frontend/src/explore/components/controls/DndColumnSelectControl/DndSelectLabel.test.tsx @@ -33,7 +33,7 @@ const defaultProps = { test('renders with default props', async () => { render(, { useDnd: true }); - expect(await screen.findByText('Drop columns')).toBeInTheDocument(); + expect(await screen.findByText('Drop columns here')).toBeInTheDocument(); }); test('renders ghost button when empty', async () => { diff --git a/superset-frontend/src/explore/components/controls/DndColumnSelectControl/DndSelectLabel.tsx b/superset-frontend/src/explore/components/controls/DndColumnSelectControl/DndSelectLabel.tsx index daaeb91852854..d5d365fa743d4 100644 --- a/superset-frontend/src/explore/components/controls/DndColumnSelectControl/DndSelectLabel.tsx +++ b/superset-frontend/src/explore/components/controls/DndColumnSelectControl/DndSelectLabel.tsx @@ -40,9 +40,11 @@ export default function DndSelectLabel({ drop: (item: DatasourcePanelDndItem) => { props.onDrop(item); + props.onDropValue?.(item.value); }, - canDrop: (item: DatasourcePanelDndItem) => props.canDrop(item), + canDrop: (item: DatasourcePanelDndItem) => + props.canDrop(item) && (props.canDropValue?.(item.value) ?? true), collect: monitor => ({ isOver: monitor.isOver(), @@ -55,7 +57,7 @@ export default function DndSelectLabel({ return ( - {t(props.ghostButtonText || 'Drop columns')} + {t(props.ghostButtonText || 'Drop columns here')} ); } diff --git a/superset-frontend/src/explore/components/controls/DndColumnSelectControl/OptionWrapper.test.tsx b/superset-frontend/src/explore/components/controls/DndColumnSelectControl/OptionWrapper.test.tsx index c46f49be0107e..e237cea989a5c 100644 --- a/superset-frontend/src/explore/components/controls/DndColumnSelectControl/OptionWrapper.test.tsx +++ b/superset-frontend/src/explore/components/controls/DndColumnSelectControl/OptionWrapper.test.tsx @@ -28,9 +28,8 @@ test('renders with default props', () => { clickClose={jest.fn()} type={'Column' as DndItemType} onShiftOptions={jest.fn()} - > - Option - , + label="Option" + />, { useDnd: true }, ); expect(container).toBeInTheDocument(); @@ -46,17 +45,15 @@ test('triggers onShiftOptions on drop', () => { clickClose={jest.fn()} type={'Column' as DndItemType} onShiftOptions={onShiftOptions} - > - Option 1 - + label="Option 1" + /> - Option 2 - + label="Option 2" + /> , { useDnd: true }, ); diff --git a/superset-frontend/src/explore/components/controls/DndColumnSelectControl/OptionWrapper.tsx b/superset-frontend/src/explore/components/controls/DndColumnSelectControl/OptionWrapper.tsx index d624817de3c49..485919099069d 100644 --- a/superset-frontend/src/explore/components/controls/DndColumnSelectControl/OptionWrapper.tsx +++ b/superset-frontend/src/explore/components/controls/DndColumnSelectControl/OptionWrapper.tsx @@ -28,8 +28,19 @@ import { OptionProps, OptionItemInterface, } from 'src/explore/components/controls/DndColumnSelectControl/types'; +import { Tooltip } from 'src/components/Tooltip'; +import { StyledColumnOption } from 'src/explore/components/optionRenderers'; +import { styled } from '@superset-ui/core'; +import { ColumnMeta } from '@superset-ui/chart-controls'; import Option from './Option'; +export const OptionLabel = styled.div` + width: 100%; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +`; + export default function OptionWrapper( props: OptionProps & { type: string; @@ -38,16 +49,19 @@ export default function OptionWrapper( ) { const { index, + label, + tooltipTitle, + column, type, onShiftOptions, clickClose, withCaret, isExtra, canDelete = true, - children, ...rest } = props; const ref = useRef(null); + const labelRef = useRef(null); const item: OptionItemInterface = useMemo( () => ({ @@ -56,7 +70,7 @@ export default function OptionWrapper( }), [index, type], ); - const [, drag] = useDrag({ + const [{ isDragging }, drag] = useDrag({ item, collect: (monitor: DragSourceMonitor) => ({ isDragging: monitor.isDragging(), @@ -107,6 +121,51 @@ export default function OptionWrapper( }, }); + const shouldShowTooltip = + (!isDragging && tooltipTitle && label && tooltipTitle !== label) || + (!isDragging && + labelRef && + labelRef.current && + labelRef.current.scrollWidth > labelRef.current.clientWidth); + + const LabelContent = () => { + if (!shouldShowTooltip) { + return {label}; + } + return ( + + {label} + + ); + }; + + const ColumnOption = () => ( + + ); + + const Label = () => { + if (label) { + return ( + + + + ); + } + if (column) { + return ( + + + + ); + } + return null; + }; + drag(drop(ref)); return ( @@ -118,7 +177,7 @@ export default function OptionWrapper( isExtra={isExtra} canDelete={canDelete} > - {children} +