gitextract_dlltgrd3/ ├── .dockerignore ├── .editorconfig ├── .eslintrc.js ├── .github/ │ ├── ISSUE_TEMPLATE/ │ │ ├── bug-report--jupyter-widget.md │ │ ├── bug_report.md │ │ ├── feature-request--jupyter-widget.md │ │ └── feature_request.md │ ├── SECURITY.md │ └── workflows/ │ ├── build-publish-pypi.yml │ ├── npmpublish.yml │ └── test.yml ├── .gitignore ├── .nvmrc ├── .prettierrc.js ├── .stylelintrc ├── .yarnrc.yml ├── CHANGELOG.md ├── FILE-HEADER ├── LICENSE ├── README.md ├── SUMMARY.md ├── TODO.md ├── UPGRADE-GUIDE.md ├── babel-register.js ├── babel.config.js ├── bindings/ │ ├── kepler.gl-jupyter/ │ │ ├── .gitignore │ │ ├── Dockerfile │ │ ├── MANIFEST.in │ │ ├── README.md │ │ ├── RELEASE.md │ │ ├── js/ │ │ │ ├── .gitignore │ │ │ ├── README.md │ │ │ ├── babel.config.js │ │ │ ├── lib/ │ │ │ │ ├── embed.js │ │ │ │ ├── extension.js │ │ │ │ ├── index.js │ │ │ │ ├── keplergl/ │ │ │ │ │ ├── components/ │ │ │ │ │ │ ├── app.js │ │ │ │ │ │ ├── config-panel.js │ │ │ │ │ │ ├── panel-header.js │ │ │ │ │ │ ├── root.js │ │ │ │ │ │ └── side-bar.js │ │ │ │ │ ├── kepler.gl.js │ │ │ │ │ ├── main.js │ │ │ │ │ ├── store.js │ │ │ │ │ └── utils.js │ │ │ │ ├── keplergl-plugin.js │ │ │ │ ├── labplugin.js │ │ │ │ └── log.js │ │ │ ├── package.json │ │ │ ├── template/ │ │ │ │ └── keplergl-html.ejs │ │ │ └── webpack/ │ │ │ ├── build-html.js │ │ │ ├── build.js │ │ │ ├── config.js │ │ │ └── dev.js │ │ ├── keplergl/ │ │ │ ├── __init__.py │ │ │ ├── _version.py │ │ │ └── keplergl.py │ │ ├── keplergl-jupyter.json │ │ ├── notebooks/ │ │ │ ├── DataFrame.ipynb │ │ │ ├── GeoDataFrame.ipynb │ │ │ ├── GeoJSON.ipynb │ │ │ ├── Load kepler.gl.ipynb │ │ │ ├── geojson-data.json │ │ │ ├── hex-data.csv │ │ │ ├── hex_config.py │ │ │ └── sf_zip_geo.json │ │ ├── pyproject.toml │ │ ├── requirements.txt │ │ ├── setup.cfg │ │ └── setup.py │ └── python/ │ ├── DEVELOPMENT.md │ ├── README.md │ ├── esbuild.config.mjs │ ├── keplergl/ │ │ ├── __init__.py │ │ ├── _version.py │ │ ├── serializers.py │ │ └── widget.py │ ├── notebooks/ │ │ ├── DataFrame.ipynb │ │ ├── GeoDataFrame.ipynb │ │ ├── GeoJSON.ipynb │ │ ├── Load kepler.gl.ipynb │ │ ├── geojson-data.json │ │ ├── hex-data.csv │ │ ├── hex_config.py │ │ └── sf_zip_geo.json │ ├── package.json │ ├── pyproject.toml │ ├── src/ │ │ ├── components/ │ │ │ └── App.tsx │ │ ├── index.ts │ │ ├── process-shim.js │ │ ├── store.ts │ │ ├── styles.css │ │ ├── types.ts │ │ ├── utils/ │ │ │ ├── data.ts │ │ │ └── serialization.ts │ │ └── widget.ts │ ├── tests/ │ │ ├── conftest.py │ │ ├── test_serializers.py │ │ └── test_widget.py │ └── tsconfig.json ├── contributing/ │ ├── CODE_OF_CONDUCT.md │ ├── DEVELOPERS.md │ └── README.md ├── docs/ │ ├── README.md │ ├── RFC/ │ │ └── table-class.md │ ├── api-reference/ │ │ ├── README.md │ │ ├── actions/ │ │ │ ├── README.md │ │ │ └── actions.md │ │ ├── advanced-usages/ │ │ │ ├── custom-initial-state.md │ │ │ ├── custom-map-styles.md │ │ │ ├── custom-mapbox-host.md │ │ │ ├── forward-actions.md │ │ │ ├── reducer-plugin.md │ │ │ ├── replace-ui-component.md │ │ │ ├── saving-loading-w-schema.md │ │ │ └── using-updaters.md │ │ ├── cloud-providers/ │ │ │ ├── README.md │ │ │ └── cloud-provider.md │ │ ├── components/ │ │ │ └── README.md │ │ ├── custom-theme/ │ │ │ └── README.md │ │ ├── ecosystem.md │ │ ├── get-started.md │ │ ├── localization/ │ │ │ └── README.md │ │ ├── processors/ │ │ │ ├── README.md │ │ │ └── processors.md │ │ ├── reducers/ │ │ │ ├── README.md │ │ │ ├── combine.md │ │ │ ├── map-state.md │ │ │ ├── map-style.md │ │ │ ├── reducers.md │ │ │ ├── ui-state.md │ │ │ └── vis-state.md │ │ └── schemas/ │ │ └── README.md │ ├── keplergl-jupyter/ │ │ └── README.md │ ├── release-notes.md │ ├── spatial-analysis-tutorial/ │ │ ├── README.md │ │ ├── basic-mapping.md │ │ ├── get-started.md │ │ ├── rate-mapping.md │ │ ├── spatial-data-gis.md │ │ └── spatial-data-wrangling.md │ ├── table-of-contents.json │ └── user-guides/ │ ├── README.md │ ├── ai-assistant.md │ ├── b-kepler-gl-workflow/ │ │ ├── README.md │ │ ├── a-add-data-to-the-map.md │ │ └── b-add-data-layers/ │ │ ├── a-adding-data-layers.md │ │ ├── b-create-a-layer.md │ │ ├── c-hide-edit-and-delete-layers.md │ │ └── d-blend-and-rearrange-layers.md │ ├── c-types-of-layers/ │ │ ├── README.md │ │ ├── a-point.md │ │ ├── b-arc.md │ │ ├── c-line.md │ │ ├── d-grid.md │ │ ├── e-polygon.md │ │ ├── f-cluster.md │ │ ├── g-icon.md │ │ ├── h-hexbin.md │ │ ├── i-heatmap.md │ │ ├── j-h3.md │ │ ├── k-trip.md │ │ ├── l-s2.md │ │ ├── m-vector-tile-layer.md │ │ ├── n-raster-tile-layer.md │ │ ├── o-wms-layer.md │ │ └── vector.md │ ├── d-layer-attributes.md │ ├── e-filters.md │ ├── f-map-styles.md │ ├── g-interactions.md │ ├── h-playback.md │ ├── i-FAQ.md │ ├── j-get-started.md │ ├── k-save-and-export.md │ ├── l-color-attributes.md │ ├── m-map-settings.md │ └── sql-data-explorer.md ├── esbuild/ │ └── umd-esbuild.config.mjs ├── examples/ │ ├── README.md │ ├── custom-map-style/ │ │ ├── .babelrc │ │ ├── README.md │ │ ├── esbuild.config.mjs │ │ ├── index.html │ │ ├── package.json │ │ └── src/ │ │ ├── app.tsx │ │ ├── main.tsx │ │ └── store.ts │ ├── custom-reducer/ │ │ ├── .babelrc │ │ ├── README.md │ │ ├── esbuild.config.mjs │ │ ├── index.html │ │ ├── package.json │ │ └── src/ │ │ ├── app-reducer.js │ │ ├── app.js │ │ ├── configurations/ │ │ │ └── config.js │ │ ├── data/ │ │ │ └── sample-data.js │ │ ├── main.js │ │ └── store.js │ ├── custom-theme/ │ │ ├── .babelrc │ │ ├── README.md │ │ ├── esbuild.config.mjs │ │ ├── index.html │ │ ├── package.json │ │ └── src/ │ │ ├── actions.js │ │ ├── app.js │ │ ├── main.js │ │ ├── reducers/ │ │ │ └── index.js │ │ └── store.js │ ├── demo-app/ │ │ ├── .yarnrc.yml │ │ ├── README.md │ │ ├── esbuild.config.mjs │ │ ├── package.json │ │ ├── src/ │ │ │ ├── actions.js │ │ │ ├── app.tsx │ │ │ ├── cloud-providers/ │ │ │ │ ├── carto/ │ │ │ │ │ ├── carto-icon.js │ │ │ │ │ └── carto-provider.js │ │ │ │ ├── dropbox/ │ │ │ │ │ ├── dropbox-error-modal.js │ │ │ │ │ ├── dropbox-icon.js │ │ │ │ │ └── dropbox-provider.js │ │ │ │ ├── foursquare/ │ │ │ │ │ ├── foursquare-icon.js │ │ │ │ │ └── foursquare-provider.js │ │ │ │ └── index.js │ │ │ ├── components/ │ │ │ │ ├── announcement.js │ │ │ │ ├── banner.js │ │ │ │ ├── load-data-modal/ │ │ │ │ │ ├── load-remote-map.js │ │ │ │ │ ├── sample-data-viewer.js │ │ │ │ │ └── sample-maps-tab.js │ │ │ │ └── map-control/ │ │ │ │ ├── map-control.js │ │ │ │ └── sql-panel-control.tsx │ │ │ ├── constants/ │ │ │ │ ├── default-settings.js │ │ │ │ └── localization.js │ │ │ ├── data/ │ │ │ │ ├── sample-animate-trip-data.js │ │ │ │ ├── sample-geojson-config.js │ │ │ │ ├── sample-geojson-points.js │ │ │ │ ├── sample-gps-data.js │ │ │ │ ├── sample-hex-id-csv.js │ │ │ │ ├── sample-icon-csv.js │ │ │ │ ├── sample-row-data.js │ │ │ │ ├── sample-s2-data.js │ │ │ │ ├── sample-small-geojson.js │ │ │ │ └── sample-trip-data.js │ │ │ ├── factories/ │ │ │ │ ├── load-data-modal.js │ │ │ │ ├── map-control.js │ │ │ │ └── panel-header.js │ │ │ ├── main.js │ │ │ ├── reducers/ │ │ │ │ └── index.js │ │ │ ├── store.js │ │ │ └── utils/ │ │ │ ├── routes.js │ │ │ └── strings.js │ │ └── yarn.lock │ ├── get-started/ │ │ ├── .yarnrc.yml │ │ ├── esbuild.config.mjs │ │ ├── package.json │ │ ├── src/ │ │ │ ├── app.tsx │ │ │ └── index.html │ │ └── tsconfig.json │ ├── get-started-vite/ │ │ ├── README.md │ │ ├── eslint.config.js │ │ ├── index.html │ │ ├── package.json │ │ ├── src/ │ │ │ └── main.tsx │ │ ├── tsconfig.json │ │ ├── tsconfig.node.json │ │ └── vite.config.ts │ ├── node-app/ │ │ ├── .babelrc │ │ ├── README.md │ │ ├── esbuild.config.mjs │ │ ├── index.html │ │ ├── package.json │ │ ├── server.js │ │ └── src/ │ │ ├── app-reducer.js │ │ ├── app.js │ │ ├── main.js │ │ └── store.js │ ├── open-modal/ │ │ ├── .babelrc │ │ ├── README.md │ │ ├── esbuild.config.mjs │ │ ├── index.html │ │ ├── package.json │ │ └── src/ │ │ ├── app-reducer.js │ │ ├── app.js │ │ ├── components/ │ │ │ ├── fresh-map.js │ │ │ └── saved-map.js │ │ ├── configurations/ │ │ │ └── config.js │ │ ├── data/ │ │ │ └── sample-data.js │ │ ├── main.js │ │ └── store.js │ ├── replace-component/ │ │ ├── .babelrc │ │ ├── README.md │ │ ├── esbuild.config.mjs │ │ ├── index.html │ │ ├── package.json │ │ └── src/ │ │ ├── actions.js │ │ ├── app-reducer.js │ │ ├── app.js │ │ ├── components/ │ │ │ ├── custom-map-popover.js │ │ │ ├── custom-panel.js │ │ │ ├── panel-header.js │ │ │ ├── panel-toggle.js │ │ │ └── side-bar.js │ │ ├── data/ │ │ │ └── sample-data.js │ │ ├── main.js │ │ └── store.js │ └── umd-client/ │ ├── README.md │ └── index.html ├── jest.config.js ├── jest.setup.js ├── jsconfig.json ├── package.json ├── scripts/ │ ├── action-table-maker.js │ ├── ast-helper.js │ ├── documentation.js │ ├── edit-version.js │ ├── fix-dependencies.sh │ ├── install-and-start.js │ ├── license-header/ │ │ ├── README.md │ │ ├── bin.mjs │ │ └── license-fixer.mjs │ ├── log.js │ └── ts-smoosh/ │ ├── README.md │ ├── bin.js │ ├── smoosh.js │ ├── test.js │ └── tests/ │ ├── 01-functions/ │ │ ├── a.d.ts │ │ ├── a.js │ │ └── a.tsx │ ├── 02-imports/ │ │ ├── b.d.ts │ │ ├── c.js │ │ └── c.tsx │ └── 03-const/ │ ├── e.d.ts │ ├── e.js │ └── e.tsx ├── src/ │ ├── actions/ │ │ ├── babel.config.js │ │ ├── package.json │ │ ├── src/ │ │ │ ├── action-types.ts │ │ │ ├── action-wrapper.ts │ │ │ ├── actions.ts │ │ │ ├── identity-actions.ts │ │ │ ├── index.ts │ │ │ ├── map-state-actions.ts │ │ │ ├── map-style-actions.ts │ │ │ ├── provider-actions.ts │ │ │ ├── ui-state-actions.ts │ │ │ └── vis-state-actions.ts │ │ └── tsconfig.production.json │ ├── ai-assistant/ │ │ ├── README.md │ │ ├── babel.config.js │ │ ├── package.json │ │ ├── src/ │ │ │ ├── actions.ts │ │ │ ├── components/ │ │ │ │ ├── ai-assistant-component.tsx │ │ │ │ ├── ai-assistant-config.tsx │ │ │ │ └── ai-assistant-manager.tsx │ │ │ ├── config/ │ │ │ │ └── models.ts │ │ │ ├── constants.ts │ │ │ ├── icons/ │ │ │ │ ├── ai-star.tsx │ │ │ │ └── api-key.tsx │ │ │ ├── index.ts │ │ │ ├── localization.ts │ │ │ ├── map/ │ │ │ │ └── ai-assistant-control.tsx │ │ │ ├── plugin.ts │ │ │ ├── reducers/ │ │ │ │ └── index.ts │ │ │ └── tools/ │ │ │ ├── echarts-tools.tsx │ │ │ ├── geo-tools.tsx │ │ │ ├── kepler-tools/ │ │ │ │ ├── basemap-tool.tsx │ │ │ │ ├── boundary-tool.tsx │ │ │ │ ├── index.ts │ │ │ │ ├── layer-creation-tool.tsx │ │ │ │ ├── layer-style-tool.tsx │ │ │ │ ├── loaddata-tool.tsx │ │ │ │ ├── save-data-tool.tsx │ │ │ │ └── table-tool.tsx │ │ │ ├── lisa-tool.tsx │ │ │ ├── query-tool.tsx │ │ │ ├── tools.tsx │ │ │ └── utils.ts │ │ └── tsconfig.production.json │ ├── cloud-providers/ │ │ ├── babel.config.js │ │ ├── package.json │ │ ├── src/ │ │ │ ├── base.tsx │ │ │ ├── index.ts │ │ │ ├── provider.ts │ │ │ └── upload.tsx │ │ ├── tsconfig.production.json │ │ └── webpack/ │ │ └── umd.js │ ├── common-utils/ │ │ ├── babel.config.js │ │ ├── package.json │ │ ├── src/ │ │ │ ├── data-type.ts │ │ │ ├── data.ts │ │ │ ├── h3-utils.ts │ │ │ ├── index.ts │ │ │ ├── promise.ts │ │ │ ├── string.ts │ │ │ └── url.ts │ │ └── tsconfig.production.json │ ├── components/ │ │ ├── babel.config.js │ │ ├── package.json │ │ ├── src/ │ │ │ ├── bottom-widget.tsx │ │ │ ├── common/ │ │ │ │ ├── action-panel.tsx │ │ │ │ ├── animation-control/ │ │ │ │ │ ├── animation-control.tsx │ │ │ │ │ ├── animation-controller.ts │ │ │ │ │ ├── animation-speed-slider.tsx │ │ │ │ │ ├── animation-window-control.tsx │ │ │ │ │ ├── floating-time-display.tsx │ │ │ │ │ ├── play-control.tsx │ │ │ │ │ ├── playback-controls.tsx │ │ │ │ │ ├── reset-control.tsx │ │ │ │ │ ├── speed-control.tsx │ │ │ │ │ └── window-action-control.tsx │ │ │ │ ├── checkbox.tsx │ │ │ │ ├── color-legend.tsx │ │ │ │ ├── column-stats-chart.tsx │ │ │ │ ├── data-table/ │ │ │ │ │ ├── button.tsx │ │ │ │ │ ├── canvas.tsx │ │ │ │ │ ├── cell-size.ts │ │ │ │ │ ├── display-format.tsx │ │ │ │ │ ├── grid.tsx │ │ │ │ │ ├── header-cell.tsx │ │ │ │ │ ├── index.tsx │ │ │ │ │ └── option-dropdown.tsx │ │ │ │ ├── dataset-label.tsx │ │ │ │ ├── dnd-layer-items.ts │ │ │ │ ├── error-boundary.tsx │ │ │ │ ├── field-selector.tsx │ │ │ │ ├── field-token.tsx │ │ │ │ ├── file-uploader/ │ │ │ │ │ ├── file-drop.tsx │ │ │ │ │ ├── file-upload-progress.tsx │ │ │ │ │ ├── file-upload.tsx │ │ │ │ │ └── upload-button.tsx │ │ │ │ ├── flex-container.ts │ │ │ │ ├── histogram-plot.tsx │ │ │ │ ├── icon-button.tsx │ │ │ │ ├── icons/ │ │ │ │ │ ├── add.tsx │ │ │ │ │ ├── anchor_window.tsx │ │ │ │ │ ├── arrow-down-alt.tsx │ │ │ │ │ ├── arrow-down-full.tsx │ │ │ │ │ ├── arrow-down-small.tsx │ │ │ │ │ ├── arrow-down-solid.tsx │ │ │ │ │ ├── arrow-down.tsx │ │ │ │ │ ├── arrow-left.tsx │ │ │ │ │ ├── arrow-right.tsx │ │ │ │ │ ├── arrow-up-alt.tsx │ │ │ │ │ ├── arrow-up-solid.tsx │ │ │ │ │ ├── arrow-up.tsx │ │ │ │ │ ├── base-map.tsx │ │ │ │ │ ├── base.tsx │ │ │ │ │ ├── bug.tsx │ │ │ │ │ ├── calendar.tsx │ │ │ │ │ ├── cancel.tsx │ │ │ │ │ ├── checkmark.tsx │ │ │ │ │ ├── clipboard.tsx │ │ │ │ │ ├── clock.tsx │ │ │ │ │ ├── close.tsx │ │ │ │ │ ├── cloud.tsx │ │ │ │ │ ├── code-alt.tsx │ │ │ │ │ ├── copy.tsx │ │ │ │ │ ├── crosshairs.tsx │ │ │ │ │ ├── cube-3d.tsx │ │ │ │ │ ├── cursor-click.tsx │ │ │ │ │ ├── cursor-point.tsx │ │ │ │ │ ├── data-table.tsx │ │ │ │ │ ├── db.tsx │ │ │ │ │ ├── delete.tsx │ │ │ │ │ ├── docs.tsx │ │ │ │ │ ├── docs2.tsx │ │ │ │ │ ├── drag-n-drop.tsx │ │ │ │ │ ├── draggable-dots.tsx │ │ │ │ │ ├── draw-polygon.tsx │ │ │ │ │ ├── edit.tsx │ │ │ │ │ ├── effects/ │ │ │ │ │ │ ├── brightness-contrast.tsx │ │ │ │ │ │ ├── color-halftone.tsx │ │ │ │ │ │ ├── dot-screen.tsx │ │ │ │ │ │ ├── edge-work.tsx │ │ │ │ │ │ ├── hexagonal-pixelate.tsx │ │ │ │ │ │ ├── hue-saturation.tsx │ │ │ │ │ │ ├── ink.tsx │ │ │ │ │ │ ├── light-and-shadow.tsx │ │ │ │ │ │ ├── magic-wand.tsx │ │ │ │ │ │ ├── magnify.tsx │ │ │ │ │ │ ├── noise.tsx │ │ │ │ │ │ ├── sepia.tsx │ │ │ │ │ │ ├── tilt-shift.tsx │ │ │ │ │ │ ├── triangle-blur.tsx │ │ │ │ │ │ ├── vibrance.tsx │ │ │ │ │ │ ├── vignette.tsx │ │ │ │ │ │ └── zoom-blur.tsx │ │ │ │ │ ├── email.tsx │ │ │ │ │ ├── expand.tsx │ │ │ │ │ ├── eye-seen.tsx │ │ │ │ │ ├── eye-unseen.tsx │ │ │ │ │ ├── file-type.tsx │ │ │ │ │ ├── file.tsx │ │ │ │ │ ├── files.tsx │ │ │ │ │ ├── filter-funnel.tsx │ │ │ │ │ ├── free-window.tsx │ │ │ │ │ ├── gear.tsx │ │ │ │ │ ├── globe.tsx │ │ │ │ │ ├── hash.tsx │ │ │ │ │ ├── help.tsx │ │ │ │ │ ├── histogram.tsx │ │ │ │ │ ├── horizontal-resize-handle.tsx │ │ │ │ │ ├── index.tsx │ │ │ │ │ ├── info.tsx │ │ │ │ │ ├── layers.tsx │ │ │ │ │ ├── left-arrow.tsx │ │ │ │ │ ├── legend.tsx │ │ │ │ │ ├── line-chart.tsx │ │ │ │ │ ├── location-marker.tsx │ │ │ │ │ ├── login.tsx │ │ │ │ │ ├── logout.tsx │ │ │ │ │ ├── map-icon.tsx │ │ │ │ │ ├── map-pin.tsx │ │ │ │ │ ├── messages.tsx │ │ │ │ │ ├── minus.tsx │ │ │ │ │ ├── moon.tsx │ │ │ │ │ ├── order-by-dataset.tsx │ │ │ │ │ ├── order-by-list.tsx │ │ │ │ │ ├── pause.tsx │ │ │ │ │ ├── picture.tsx │ │ │ │ │ ├── pin.tsx │ │ │ │ │ ├── play.tsx │ │ │ │ │ ├── pointer-click.tsx │ │ │ │ │ ├── polygon.tsx │ │ │ │ │ ├── rectangle.tsx │ │ │ │ │ ├── reduce.tsx │ │ │ │ │ ├── reset.tsx │ │ │ │ │ ├── save.tsx │ │ │ │ │ ├── save2.tsx │ │ │ │ │ ├── search.tsx │ │ │ │ │ ├── settings.tsx │ │ │ │ │ ├── share.tsx │ │ │ │ │ ├── speed.tsx │ │ │ │ │ ├── split.tsx │ │ │ │ │ ├── square-select.tsx │ │ │ │ │ ├── sun.tsx │ │ │ │ │ ├── sunrise.tsx │ │ │ │ │ ├── sunset.tsx │ │ │ │ │ ├── timeline-marker.tsx │ │ │ │ │ ├── trash.tsx │ │ │ │ │ ├── vert-dots.tsx │ │ │ │ │ ├── vert-three-dots.tsx │ │ │ │ │ ├── warning-sign.tsx │ │ │ │ │ ├── warning.tsx │ │ │ │ │ ├── zoom-in.tsx │ │ │ │ │ └── zoom-out.tsx │ │ │ │ ├── image-preview.tsx │ │ │ │ ├── index.ts │ │ │ │ ├── info-helper.tsx │ │ │ │ ├── item-selector/ │ │ │ │ │ ├── accessor.ts │ │ │ │ │ ├── chickleted-input.tsx │ │ │ │ │ ├── dropdown-list.tsx │ │ │ │ │ ├── dropdown-select.tsx │ │ │ │ │ ├── item-selector.tsx │ │ │ │ │ └── typeahead.tsx │ │ │ │ ├── line-chart.tsx │ │ │ │ ├── link-renderer.tsx │ │ │ │ ├── loading-spinner.tsx │ │ │ │ ├── logo.tsx │ │ │ │ ├── map-layer-selector.tsx │ │ │ │ ├── modal.tsx │ │ │ │ ├── portaled.tsx │ │ │ │ ├── progress-bar.tsx │ │ │ │ ├── radius-legend.tsx │ │ │ │ ├── range-brush.tsx │ │ │ │ ├── range-plot.tsx │ │ │ │ ├── range-slider-timeline-panel.tsx │ │ │ │ ├── range-slider-timeline.tsx │ │ │ │ ├── range-slider.tsx │ │ │ │ ├── slider/ │ │ │ │ │ ├── mouse-event.ts │ │ │ │ │ ├── slider-bar-handle.tsx │ │ │ │ │ ├── slider-handle.tsx │ │ │ │ │ └── slider.tsx │ │ │ │ ├── styled-components.tsx │ │ │ │ ├── switch.tsx │ │ │ │ ├── sync-timeline-control.tsx │ │ │ │ ├── time-range-slider-time-title.tsx │ │ │ │ ├── time-range-slider.tsx │ │ │ │ ├── time-slider-marker.tsx │ │ │ │ ├── timeline-slider.tsx │ │ │ │ ├── tippy-tooltip.tsx │ │ │ │ ├── toolbar-item.tsx │ │ │ │ ├── toolbar.tsx │ │ │ │ └── vertical-toolbar.tsx │ │ │ ├── connect/ │ │ │ │ ├── keplergl-connect.ts │ │ │ │ └── with-local-selector.tsx │ │ │ ├── container.tsx │ │ │ ├── context.tsx │ │ │ ├── dnd-context.tsx │ │ │ ├── editor/ │ │ │ │ ├── editor.tsx │ │ │ │ └── feature-action-panel.tsx │ │ │ ├── effects/ │ │ │ │ ├── compact-color-picker.tsx │ │ │ │ ├── effect-configurator.tsx │ │ │ │ ├── effect-list.tsx │ │ │ │ ├── effect-manager.tsx │ │ │ │ ├── effect-panel-header.tsx │ │ │ │ ├── effect-panel.tsx │ │ │ │ ├── effect-time-configurator.tsx │ │ │ │ ├── effect-time-selector.tsx │ │ │ │ ├── effect-time-slider.tsx │ │ │ │ ├── effect-type-dropdown-list.tsx │ │ │ │ ├── effect-type-list-item.tsx │ │ │ │ ├── effect-type-selector.tsx │ │ │ │ ├── side-panel-title.tsx │ │ │ │ └── timezone-selector.tsx │ │ │ ├── filter-animation-controller.tsx │ │ │ ├── filters/ │ │ │ │ ├── components.ts │ │ │ │ ├── filter-panels/ │ │ │ │ │ ├── filter-panel-with-field-select.tsx │ │ │ │ │ ├── filter-synced-dataset-panel.tsx │ │ │ │ │ ├── multi-select-filter-panel.tsx │ │ │ │ │ ├── new-filter-panel.tsx │ │ │ │ │ ├── polygon-filter-panel.tsx │ │ │ │ │ ├── range-filter-panel.tsx │ │ │ │ │ ├── single-select-filter-panel.tsx │ │ │ │ │ ├── time-range-filter-panel.tsx │ │ │ │ │ ├── time-synced-field-selector.tsx │ │ │ │ │ └── types.ts │ │ │ │ ├── index.ts │ │ │ │ ├── multi-select-filter.tsx │ │ │ │ ├── polygon-filter.tsx │ │ │ │ ├── range-filter.tsx │ │ │ │ ├── single-select-filter.tsx │ │ │ │ ├── time-range-filter.tsx │ │ │ │ ├── time-widget-top.tsx │ │ │ │ ├── time-widget.tsx │ │ │ │ └── types.ts │ │ │ ├── geocoder/ │ │ │ │ └── geocoder.tsx │ │ │ ├── geocoder-panel.tsx │ │ │ ├── hooks/ │ │ │ │ ├── use-cloud-list-provider.tsx │ │ │ │ ├── use-dnd-effects.tsx │ │ │ │ ├── use-dnd-layers.tsx │ │ │ │ ├── use-feature-flags.tsx │ │ │ │ ├── use-fetch-raster-tile-metadata.ts │ │ │ │ ├── use-fetch-vector-tile-metadata.ts │ │ │ │ ├── use-legend-position.ts │ │ │ │ └── use-on-click-outside.tsx │ │ │ ├── index.ts │ │ │ ├── injector.tsx │ │ │ ├── kepler-gl.tsx │ │ │ ├── layer-animation-controller.tsx │ │ │ ├── loading-indicator.tsx │ │ │ ├── map/ │ │ │ │ ├── coordinate-info.tsx │ │ │ │ ├── effects/ │ │ │ │ │ └── effect-control.tsx │ │ │ │ ├── layer-hover-info.tsx │ │ │ │ ├── layer-selector-panel.tsx │ │ │ │ ├── lazy-tippy.tsx │ │ │ │ ├── locale-panel.tsx │ │ │ │ ├── map-control-panel.tsx │ │ │ │ ├── map-control-toolbar.tsx │ │ │ │ ├── map-control-tooltip.tsx │ │ │ │ ├── map-control.tsx │ │ │ │ ├── map-draw-panel.tsx │ │ │ │ ├── map-legend-panel.tsx │ │ │ │ ├── map-legend.tsx │ │ │ │ ├── map-popover-content.tsx │ │ │ │ ├── map-popover.tsx │ │ │ │ ├── split-map-button.tsx │ │ │ │ └── toggle-3d-button.tsx │ │ │ ├── map-container.tsx │ │ │ ├── map-view-state-context.tsx │ │ │ ├── maps-layout.tsx │ │ │ ├── modal-container.tsx │ │ │ ├── modals/ │ │ │ │ ├── add-map-style-modal.tsx │ │ │ │ ├── cloud-components/ │ │ │ │ │ ├── cloud-header.tsx │ │ │ │ │ ├── cloud-item.spec.tsx │ │ │ │ │ ├── cloud-item.tsx │ │ │ │ │ ├── cloud-maps.spec.tsx │ │ │ │ │ ├── cloud-maps.tsx │ │ │ │ │ ├── provider-loading.tsx │ │ │ │ │ └── provider-select.tsx │ │ │ │ ├── cloud-tile.tsx │ │ │ │ ├── data-table-modal.tsx │ │ │ │ ├── delete-data-modal.tsx │ │ │ │ ├── error-display.tsx │ │ │ │ ├── export-data-modal.tsx │ │ │ │ ├── export-image-modal.tsx │ │ │ │ ├── export-map-modal/ │ │ │ │ │ ├── components.tsx │ │ │ │ │ ├── export-html-map.tsx │ │ │ │ │ ├── export-json-map.tsx │ │ │ │ │ └── export-map-modal.tsx │ │ │ │ ├── image-modal-container.tsx │ │ │ │ ├── load-data-modal.tsx │ │ │ │ ├── load-storage-map.spec.tsx │ │ │ │ ├── load-storage-map.tsx │ │ │ │ ├── loading-dialog.tsx │ │ │ │ ├── modal-dialog.tsx │ │ │ │ ├── modal-tabs.tsx │ │ │ │ ├── overwrite-map-modal.tsx │ │ │ │ ├── save-map-modal.spec.tsx │ │ │ │ ├── save-map-modal.tsx │ │ │ │ ├── share-map-modal.spec.tsx │ │ │ │ ├── share-map-modal.tsx │ │ │ │ ├── status-panel.tsx │ │ │ │ ├── storage-map-viewer.tsx │ │ │ │ └── tilesets-modals/ │ │ │ │ ├── common.tsx │ │ │ │ ├── load-data-footer.tsx │ │ │ │ ├── load-tileset.tsx │ │ │ │ ├── tileset-icon.tsx │ │ │ │ ├── tileset-raster-form.tsx │ │ │ │ ├── tileset-vector-form.tsx │ │ │ │ └── tileset-wms-form.tsx │ │ │ ├── notification-panel/ │ │ │ │ └── notification-item.tsx │ │ │ ├── notification-panel.tsx │ │ │ ├── plot-container.tsx │ │ │ ├── side-panel/ │ │ │ │ ├── add-by-dataset-button.tsx │ │ │ │ ├── cloud-storage-dropdown.tsx │ │ │ │ ├── common/ │ │ │ │ │ ├── dataset-info.tsx │ │ │ │ │ ├── dataset-tag.tsx │ │ │ │ │ ├── dataset-title.tsx │ │ │ │ │ ├── source-data-catalog.tsx │ │ │ │ │ ├── source-data-selector-content.tsx │ │ │ │ │ ├── source-data-selector.tsx │ │ │ │ │ ├── source-selector.tsx │ │ │ │ │ └── types.ts │ │ │ │ ├── custom-panel.tsx │ │ │ │ ├── filter-manager.tsx │ │ │ │ ├── filter-panel/ │ │ │ │ │ ├── add-filter-button.tsx │ │ │ │ │ ├── filter-panel-header.tsx │ │ │ │ │ └── filter-panel.tsx │ │ │ │ ├── interaction-manager.tsx │ │ │ │ ├── interaction-panel/ │ │ │ │ │ ├── brush-config.tsx │ │ │ │ │ ├── interaction-panel.tsx │ │ │ │ │ ├── tooltip-config/ │ │ │ │ │ │ └── tooltip-chicklet.tsx │ │ │ │ │ └── tooltip-config.tsx │ │ │ │ ├── layer-manager.tsx │ │ │ │ ├── layer-panel/ │ │ │ │ │ ├── add-layer-button.tsx │ │ │ │ │ ├── aggr-scale-selector.tsx │ │ │ │ │ ├── channel-by-value-selector.tsx │ │ │ │ │ ├── color-breaks-panel.tsx │ │ │ │ │ ├── color-palette-preset.tsx │ │ │ │ │ ├── color-palette.tsx │ │ │ │ │ ├── color-range-selector.tsx │ │ │ │ │ ├── color-scale-selector.tsx │ │ │ │ │ ├── color-selector.tsx │ │ │ │ │ ├── column-selector.tsx │ │ │ │ │ ├── custom-palette.tsx │ │ │ │ │ ├── custom-picker.tsx │ │ │ │ │ ├── dataset-layer-group.tsx │ │ │ │ │ ├── dataset-layer-section.tsx │ │ │ │ │ ├── dataset-section.tsx │ │ │ │ │ ├── dimension-scale-selector.tsx │ │ │ │ │ ├── how-to-button.tsx │ │ │ │ │ ├── layer-color-selector.tsx │ │ │ │ │ ├── layer-column-config.tsx │ │ │ │ │ ├── layer-column-mode-config.tsx │ │ │ │ │ ├── layer-config-group.tsx │ │ │ │ │ ├── layer-configurator.tsx │ │ │ │ │ ├── layer-error-message.tsx │ │ │ │ │ ├── layer-list.tsx │ │ │ │ │ ├── layer-panel-header.tsx │ │ │ │ │ ├── layer-panel.tsx │ │ │ │ │ ├── layer-type-dropdown-list.tsx │ │ │ │ │ ├── layer-type-list-item.tsx │ │ │ │ │ ├── layer-type-selector.tsx │ │ │ │ │ ├── radius-by-zoom-input.tsx │ │ │ │ │ ├── raster-tile-colormap-list-item.tsx │ │ │ │ │ ├── raster-tile-layer-configurator.tsx │ │ │ │ │ ├── single-color-palette.tsx │ │ │ │ │ ├── text-label-panel.tsx │ │ │ │ │ ├── vector-tile-layer-configurator.tsx │ │ │ │ │ ├── vis-config-by-field-selector.tsx │ │ │ │ │ ├── vis-config-slider.tsx │ │ │ │ │ └── vis-config-switch.tsx │ │ │ │ ├── map-manager.tsx │ │ │ │ ├── map-style-panel/ │ │ │ │ │ ├── map-layer-group-color-picker.tsx │ │ │ │ │ ├── map-layer-group-item.tsx │ │ │ │ │ ├── map-layer-selector.tsx │ │ │ │ │ └── map-style-selector.tsx │ │ │ │ ├── panel-header-action.tsx │ │ │ │ ├── panel-header.tsx │ │ │ │ ├── panel-tab.tsx │ │ │ │ ├── panel-title.tsx │ │ │ │ ├── panel-toggle.tsx │ │ │ │ ├── panel-view-list-toggle.tsx │ │ │ │ └── side-bar.tsx │ │ │ ├── side-panel.tsx │ │ │ └── types.ts │ │ └── tsconfig.production.json │ ├── constants/ │ │ ├── babel.config.js │ │ ├── package.json │ │ ├── src/ │ │ │ ├── color-palettes.ts │ │ │ ├── colors-by-theme.ts │ │ │ ├── dataset.ts │ │ │ ├── default-settings.ts │ │ │ ├── index.ts │ │ │ ├── keyevent.ts │ │ │ ├── layers.ts │ │ │ ├── plot.ts │ │ │ ├── time.ts │ │ │ ├── tooltip.ts │ │ │ ├── user-feedbacks.ts │ │ │ └── user-guides.ts │ │ ├── tsconfig.production.json │ │ └── webpack/ │ │ └── umd.js │ ├── deckgl-arrow-layers/ │ │ ├── babel.config.js │ │ ├── package.json │ │ ├── src/ │ │ │ ├── constants.ts │ │ │ ├── index.ts │ │ │ ├── layers/ │ │ │ │ ├── geo-arrow-arc-layer.ts │ │ │ │ ├── geo-arrow-scatterplot-layer.ts │ │ │ │ └── geo-arrow-text-layer.ts │ │ │ ├── types.ts │ │ │ └── utils/ │ │ │ ├── picking.ts │ │ │ ├── utils.ts │ │ │ └── validate.ts │ │ ├── tsconfig.production.json │ │ └── webpack/ │ │ └── umd.js │ ├── deckgl-layers/ │ │ ├── babel.config.js │ │ ├── package.json │ │ ├── src/ │ │ │ ├── 3d-building-layer/ │ │ │ │ ├── 3d-building-layer.ts │ │ │ │ ├── 3d-building-utils.ts │ │ │ │ └── types.ts │ │ │ ├── cluster-layer/ │ │ │ │ └── cluster-layer.ts │ │ │ ├── column-layer/ │ │ │ │ └── enhanced-column-layer.ts │ │ │ ├── deckgl-extensions/ │ │ │ │ ├── filter-arrow-layer.ts │ │ │ │ └── filter-shader-module.ts │ │ │ ├── grid-layer/ │ │ │ │ └── enhanced-cpu-grid-layer.ts │ │ │ ├── hexagon-layer/ │ │ │ │ └── enhanced-hexagon-layer.ts │ │ │ ├── index.ts │ │ │ ├── layer-utils/ │ │ │ │ ├── cluster-utils.ts │ │ │ │ ├── cpu-aggregator.ts │ │ │ │ └── shader-utils.ts │ │ │ ├── line-layer/ │ │ │ │ └── line-layer.ts │ │ │ ├── raster/ │ │ │ │ ├── images.ts │ │ │ │ ├── raster-layer/ │ │ │ │ │ ├── raster-layer-webgl1.fs.ts │ │ │ │ │ ├── raster-layer-webgl1.vs.ts │ │ │ │ │ ├── raster-layer-webgl2.fs.ts │ │ │ │ │ ├── raster-layer-webgl2.vs.ts │ │ │ │ │ └── raster-layer.ts │ │ │ │ ├── raster-mesh-layer/ │ │ │ │ │ ├── matrix.ts │ │ │ │ │ ├── raster-mesh-layer-webgl1.fs.ts │ │ │ │ │ ├── raster-mesh-layer-webgl1.vs.ts │ │ │ │ │ ├── raster-mesh-layer-webgl2.fs.ts │ │ │ │ │ ├── raster-mesh-layer-webgl2.vs.ts │ │ │ │ │ └── raster-mesh-layer.ts │ │ │ │ ├── types.ts │ │ │ │ ├── util.ts │ │ │ │ └── webgl/ │ │ │ │ ├── color/ │ │ │ │ │ ├── colormap.ts │ │ │ │ │ ├── filter.ts │ │ │ │ │ ├── gamma-contrast.ts │ │ │ │ │ ├── linear-rescale.ts │ │ │ │ │ ├── saturation.ts │ │ │ │ │ └── sigmoidal-contrast.ts │ │ │ │ ├── index.ts │ │ │ │ ├── pansharpen/ │ │ │ │ │ └── pansharpen-brovey.ts │ │ │ │ ├── spectral-indices/ │ │ │ │ │ ├── evi.ts │ │ │ │ │ ├── msavi.ts │ │ │ │ │ ├── normalized-difference.ts │ │ │ │ │ └── savi.ts │ │ │ │ ├── texture/ │ │ │ │ │ ├── combine-bands.ts │ │ │ │ │ ├── mask.ts │ │ │ │ │ ├── reorder-bands.ts │ │ │ │ │ └── rgba-image.ts │ │ │ │ └── types.ts │ │ │ ├── svg-icon-layer/ │ │ │ │ ├── scatterplot-icon-layer.ts │ │ │ │ └── svg-icon-layer.ts │ │ │ ├── typedefs/ │ │ │ │ └── deckgl.d.ts │ │ │ └── wms/ │ │ │ └── wms-layer.ts │ │ ├── tsconfig.production.json │ │ └── webpack/ │ │ └── umd.js │ ├── duckdb/ │ │ ├── babel.config.js │ │ ├── package.json │ │ ├── src/ │ │ │ ├── adapters/ │ │ │ │ └── duckdb-wasm-adapter.ts │ │ │ ├── components/ │ │ │ │ ├── index.tsx │ │ │ │ ├── monaco-editor.tsx │ │ │ │ ├── preview-data-panel.tsx │ │ │ │ ├── schema-panel.tsx │ │ │ │ ├── sql-panel.tsx │ │ │ │ └── tree.tsx │ │ │ ├── index.ts │ │ │ ├── plugin.ts │ │ │ ├── processors/ │ │ │ │ └── data-processor.ts │ │ │ ├── table/ │ │ │ │ ├── duckdb-table-utils.ts │ │ │ │ ├── duckdb-table.ts │ │ │ │ └── index.ts │ │ │ └── utils/ │ │ │ └── perf.ts │ │ └── tsconfig.production.json │ ├── effects/ │ │ ├── babel.config.js │ │ ├── package.json │ │ ├── src/ │ │ │ ├── custom-deck-lighting-effect.ts │ │ │ ├── effect.ts │ │ │ ├── index.ts │ │ │ ├── lighting-effect.ts │ │ │ ├── post-processing-effect.ts │ │ │ └── utils.ts │ │ ├── tsconfig.production.json │ │ └── webpack/ │ │ └── umd.js │ ├── index.d.ts │ ├── index.js │ ├── layers/ │ │ ├── babel.config.js │ │ ├── package.json │ │ ├── src/ │ │ │ ├── aggregation-layer.ts │ │ │ ├── arc-layer/ │ │ │ │ ├── arc-layer-icon.tsx │ │ │ │ └── arc-layer.ts │ │ │ ├── base-layer.ts │ │ │ ├── base.tsx │ │ │ ├── cluster-layer/ │ │ │ │ ├── cluster-layer-icon.tsx │ │ │ │ └── cluster-layer.ts │ │ │ ├── default-layer-icon.tsx │ │ │ ├── editor-layer/ │ │ │ │ ├── constants.ts │ │ │ │ ├── editor-layer-utils.ts │ │ │ │ ├── editor-layer.ts │ │ │ │ ├── feature-styles.ts │ │ │ │ └── modify-mode-extended.ts │ │ │ ├── example-table.tsx │ │ │ ├── geojson-layer/ │ │ │ │ ├── geojson-info-modal.tsx │ │ │ │ ├── geojson-layer-icon.tsx │ │ │ │ ├── geojson-layer.ts │ │ │ │ └── geojson-utils.ts │ │ │ ├── grid-layer/ │ │ │ │ ├── grid-layer-icon.tsx │ │ │ │ ├── grid-layer.ts │ │ │ │ └── grid-utils.ts │ │ │ ├── h3-hexagon-layer/ │ │ │ │ ├── h3-hexagon-layer-icon.tsx │ │ │ │ ├── h3-hexagon-layer.ts │ │ │ │ └── index.ts │ │ │ ├── heatmap-layer/ │ │ │ │ ├── heatmap-layer-icon.tsx │ │ │ │ └── heatmap-layer.ts │ │ │ ├── hexagon-layer/ │ │ │ │ ├── hexagon-layer-icon.tsx │ │ │ │ ├── hexagon-layer.ts │ │ │ │ └── hexagon-utils.ts │ │ │ ├── icon-layer/ │ │ │ │ ├── icon-info-modal.tsx │ │ │ │ ├── icon-layer-icon.tsx │ │ │ │ └── icon-layer.ts │ │ │ ├── index.ts │ │ │ ├── layer-text-label.ts │ │ │ ├── layer-update.ts │ │ │ ├── layer-utils.ts │ │ │ ├── line-layer/ │ │ │ │ ├── line-layer-icon.tsx │ │ │ │ └── line-layer.ts │ │ │ ├── mapbox-utils.ts │ │ │ ├── mapboxgl-layer.ts │ │ │ ├── point-layer/ │ │ │ │ ├── point-layer-icon.tsx │ │ │ │ └── point-layer.ts │ │ │ ├── raster-tile/ │ │ │ │ ├── config.ts │ │ │ │ ├── gpu-utils.ts │ │ │ │ ├── image.ts │ │ │ │ ├── raster-tile-icon.tsx │ │ │ │ ├── raster-tile-layer-schema.ts │ │ │ │ ├── raster-tile-layer.ts │ │ │ │ ├── raster-tile-utils.ts │ │ │ │ ├── request-throttle.ts │ │ │ │ ├── types.ts │ │ │ │ └── url.ts │ │ │ ├── s2-geometry-layer/ │ │ │ │ ├── s2-geometry-layer.ts │ │ │ │ ├── s2-layer-icon.tsx │ │ │ │ └── s2-utils.ts │ │ │ ├── scenegraph-layer/ │ │ │ │ ├── scenegraph-info-modal.tsx │ │ │ │ ├── scenegraph-layer-icon.tsx │ │ │ │ └── scenegraph-layer.ts │ │ │ ├── table.tsx │ │ │ ├── trip-layer/ │ │ │ │ ├── trip-info-modal.tsx │ │ │ │ ├── trip-layer-icon.tsx │ │ │ │ ├── trip-layer.ts │ │ │ │ └── trip-utils.ts │ │ │ ├── typedefs/ │ │ │ │ └── deckgl.d.ts │ │ │ ├── vector-tile/ │ │ │ │ ├── abstract-tile-layer.ts │ │ │ │ ├── common-tile/ │ │ │ │ │ ├── iterable-tile-set.ts │ │ │ │ │ ├── tile-dataset.ts │ │ │ │ │ └── tile-utils.ts │ │ │ │ ├── loading-counter.ts │ │ │ │ ├── mvt-layer.ts │ │ │ │ ├── vector-tile-icon.tsx │ │ │ │ └── vector-tile-layer.ts │ │ │ └── wms-layer/ │ │ │ ├── wms-layer-icon.tsx │ │ │ └── wms-layer.ts │ │ └── tsconfig.production.json │ ├── localization/ │ │ ├── TRANSLATION_GUIDE.md │ │ ├── babel.config.js │ │ ├── package.json │ │ ├── src/ │ │ │ ├── formatted-message.tsx │ │ │ ├── index.ts │ │ │ ├── locales.ts │ │ │ ├── messages.ts │ │ │ └── translations/ │ │ │ ├── ca.ts │ │ │ ├── cn.ts │ │ │ ├── en.ts │ │ │ ├── es.ts │ │ │ ├── fi.ts │ │ │ ├── ja.ts │ │ │ ├── pt.ts │ │ │ └── ru.ts │ │ ├── tsconfig.production.json │ │ └── webpack/ │ │ └── umd.js │ ├── processors/ │ │ ├── babel.config.js │ │ ├── package.json │ │ ├── src/ │ │ │ ├── data-processor.ts │ │ │ ├── file-handler.ts │ │ │ ├── index.ts │ │ │ ├── typedefs/ │ │ │ │ └── deckgl.d.ts │ │ │ └── types.ts │ │ ├── tsconfig.production.json │ │ └── webpack/ │ │ └── umd.js │ ├── reducers/ │ │ ├── UPGRADE-data-container.md │ │ ├── babel.config.js │ │ ├── package.json │ │ ├── src/ │ │ │ ├── combined-updaters.ts │ │ │ ├── composer-helpers.ts │ │ │ ├── composers.ts │ │ │ ├── core.ts │ │ │ ├── data-utils.ts │ │ │ ├── export-utils.ts │ │ │ ├── index.ts │ │ │ ├── interaction-utils.ts │ │ │ ├── layer-utils.ts │ │ │ ├── map-state-updaters.ts │ │ │ ├── map-state.ts │ │ │ ├── map-style-updaters.ts │ │ │ ├── map-style.ts │ │ │ ├── merger-handler.ts │ │ │ ├── middleware.ts │ │ │ ├── provider-state-updaters.ts │ │ │ ├── provider-state.ts │ │ │ ├── root.ts │ │ │ ├── ui-state-updaters.ts │ │ │ ├── ui-state.ts │ │ │ ├── vis-state-merger.ts │ │ │ ├── vis-state-selectors.ts │ │ │ ├── vis-state-updaters.ts │ │ │ └── vis-state.ts │ │ └── tsconfig.production.json │ ├── schemas/ │ │ ├── babel.config.js │ │ ├── package.json │ │ ├── src/ │ │ │ ├── dataset-schema.ts │ │ │ ├── index.ts │ │ │ ├── map-state-schema.ts │ │ │ ├── map-style-schema.ts │ │ │ ├── schema-manager.ts │ │ │ ├── schema-utils.ts │ │ │ ├── schema.ts │ │ │ ├── ui-state-schema.ts │ │ │ ├── versions.ts │ │ │ └── vis-state-schema.ts │ │ ├── tsconfig.production.json │ │ └── webpack/ │ │ └── umd.js │ ├── styles/ │ │ ├── babel.config.js │ │ ├── package.json │ │ ├── src/ │ │ │ ├── base.ts │ │ │ ├── index.ts │ │ │ └── media-breakpoints.ts │ │ ├── tsconfig.production.json │ │ └── webpack/ │ │ └── umd.js │ ├── table/ │ │ ├── UPGRADE-data-container.md │ │ ├── babel.config.js │ │ ├── package.json │ │ ├── src/ │ │ │ ├── dataset-utils.ts │ │ │ ├── gpu-filter-utils.ts │ │ │ ├── index.ts │ │ │ ├── kepler-table.ts │ │ │ └── tileset/ │ │ │ ├── raster-tile-utils.ts │ │ │ ├── tileset-utils.ts │ │ │ ├── vector-tile-utils.spec.ts │ │ │ └── vector-tile-utils.ts │ │ └── tsconfig.production.json │ ├── tasks/ │ │ ├── babel.config.js │ │ ├── package.json │ │ ├── src/ │ │ │ └── index.ts │ │ └── tsconfig.production.json │ ├── types/ │ │ ├── actions.d.ts │ │ ├── components.d.ts │ │ ├── datasets.d.ts │ │ ├── effects.d.ts │ │ ├── index.d.ts │ │ ├── layers.d.ts │ │ ├── package.json │ │ ├── reducers.d.ts │ │ ├── schemas.d.ts │ │ ├── stac.d.ts │ │ └── types.d.ts │ └── utils/ │ ├── babel.config.js │ ├── map-utils.spec.js │ ├── package.json │ ├── src/ │ │ ├── aggregation.ts │ │ ├── application-config-types.ts │ │ ├── application-config.ts │ │ ├── arrow-data-container.ts │ │ ├── browser-utils.ts │ │ ├── color-utils.ts │ │ ├── data-container-interface.ts │ │ ├── data-container-utils.ts │ │ ├── data-row.ts │ │ ├── data-scale-utils.ts │ │ ├── data-utils.ts │ │ ├── dataset-utils.ts │ │ ├── dom-to-image.ts │ │ ├── dom-utils.ts │ │ ├── effect-utils.ts │ │ ├── export-map-html.ts │ │ ├── export-utils.ts │ │ ├── filter-utils.ts │ │ ├── format.ts │ │ ├── gl-utils.ts │ │ ├── index.ts │ │ ├── indexed-data-container.ts │ │ ├── locale-utils.ts │ │ ├── map-info-utils.ts │ │ ├── map-style-utils/ │ │ │ ├── mapbox-gl-style-editor.ts │ │ │ └── mapbox-utils.ts │ │ ├── map-utils.ts │ │ ├── mapbox-utils.ts │ │ ├── noop.ts │ │ ├── notifications-utils.ts │ │ ├── observe-dimensions.ts │ │ ├── plot.ts │ │ ├── position-utils.ts │ │ ├── projection-utils.ts │ │ ├── quick-insertion-sort.ts │ │ ├── row-data-container.ts │ │ ├── searcher-utils.ts │ │ ├── split-map-utils.ts │ │ ├── strings.ts │ │ ├── time.ts │ │ ├── types.ts │ │ └── utils.ts │ └── tsconfig.production.json ├── test/ │ ├── browser/ │ │ ├── components/ │ │ │ ├── bottom-widget-test.js │ │ │ ├── common/ │ │ │ │ ├── animation-control-test.js │ │ │ │ ├── color-legend-test.js │ │ │ │ ├── column-stats-chart-test.js │ │ │ │ ├── file-uploader-test.js │ │ │ │ ├── index.js │ │ │ │ ├── item-selector-test.js │ │ │ │ ├── range-plot-test.js │ │ │ │ └── range-slider-test.js │ │ │ ├── container-test.js │ │ │ ├── editor/ │ │ │ │ ├── feature-action-panel-test.js │ │ │ │ └── index.js │ │ │ ├── effects/ │ │ │ │ ├── effect-configurator-test.js │ │ │ │ ├── effect-manager-test.js │ │ │ │ ├── effect-time-configurator-test.js │ │ │ │ └── index.js │ │ │ ├── filters/ │ │ │ │ ├── index.js │ │ │ │ └── time-widget-test.js │ │ │ ├── geocoder-panel-test.js │ │ │ ├── helpers.js │ │ │ ├── hooks/ │ │ │ │ ├── use-dnd-effects.spec.js │ │ │ │ ├── use-dnd-layers.spec.js │ │ │ │ └── use-legend-position.spec.js │ │ │ ├── index.js │ │ │ ├── injector-test.js │ │ │ ├── kepler-gl-test.js │ │ │ ├── map/ │ │ │ │ ├── index.js │ │ │ │ ├── map-control-test.js │ │ │ │ ├── map-legend-test.js │ │ │ │ └── map-popover-test.js │ │ │ ├── map-container-test.js │ │ │ ├── modals/ │ │ │ │ ├── data-table-modal-test.js │ │ │ │ ├── export-image-modal-test.js │ │ │ │ ├── index.js │ │ │ │ └── load-data-modal-test.js │ │ │ ├── notifications/ │ │ │ │ ├── index.js │ │ │ │ ├── notification-item.spec.js │ │ │ │ └── notification-panel-test.js │ │ │ ├── plot-container-test.js │ │ │ ├── side-panel/ │ │ │ │ ├── channel-by-value-selctor-test.js │ │ │ │ ├── color-selector-test.js │ │ │ │ ├── filter-manager-test.js │ │ │ │ ├── index.js │ │ │ │ ├── layer-configurator-test.js │ │ │ │ ├── layer-list.spec.js │ │ │ │ ├── layer-manager-test.js │ │ │ │ ├── layer-panel-header-test.js │ │ │ │ ├── save-export-dropdown-test.js │ │ │ │ └── side-panel-test.js │ │ │ └── tooltip-config-test.js │ │ ├── file-handler-test.js │ │ ├── index.js │ │ ├── layer-tests/ │ │ │ ├── arc-layer-specs.js │ │ │ ├── base-layer-specs.js │ │ │ ├── cluster-layer-specs.js │ │ │ ├── geojson-layer-specs.js │ │ │ ├── grid-layer-specs.js │ │ │ ├── h3-hexagon-layer-specs.js │ │ │ ├── heatmap-layer-specs.js │ │ │ ├── hexagon-layer-specs.js │ │ │ ├── icon-layer-specs.js │ │ │ ├── index.js │ │ │ ├── line-layer-specs.js │ │ │ ├── point-layer-specs.js │ │ │ ├── raster-tile-layer-specs.js │ │ │ ├── s2-geometry-layer-specs.js │ │ │ ├── scenegraph-layer-specs.js │ │ │ ├── trip-layer-specs.js │ │ │ └── wms-layer-specs.js │ │ └── reducers/ │ │ └── index.js │ ├── browser-debug.js │ ├── browser-drive.js │ ├── browser-headless/ │ │ ├── component/ │ │ │ └── map-container-test.js │ │ └── index.js │ ├── browser-headless.js │ ├── fixtures/ │ │ ├── config_v0_arc_cluster_point.js │ │ ├── config_v0_geojson_point.js │ │ ├── config_v0_geojson_poly_fill_ele.js │ │ ├── config_v0_geojson_polygon.js │ │ ├── geojson-style.js │ │ ├── geojson.js │ │ ├── points-with-polygon-filter-map.js │ │ ├── polygon-filter-map.js │ │ ├── polygon.js │ │ ├── row-object.js │ │ ├── s2-geometry.js │ │ ├── state-saved-v0.js │ │ ├── state-saved-v1-1.js │ │ ├── state-saved-v1-2.js │ │ ├── state-saved-v1-3.js │ │ ├── state-saved-v1-4.js │ │ ├── state-saved-v1-5.js │ │ ├── state-saved-v1-6.js │ │ ├── state-saved-v1-7.js │ │ ├── synced-filter-with-trip-layer.js │ │ ├── test-arc-data.js │ │ ├── test-csv-data.js │ │ ├── test-csv-object.js │ │ ├── test-hex-id-data.js │ │ ├── test-layer-data.js │ │ ├── test-trip-csv-data.js │ │ ├── test-trip-data.js │ │ ├── tile-metadata.ts │ │ └── trip-geojson.js │ ├── helpers/ │ │ ├── comparison-utils.js │ │ ├── component-jest-utils.js │ │ ├── component-utils.js │ │ ├── layer-utils.js │ │ ├── mock-map-styles.js │ │ ├── mock-provider.js │ │ ├── mock-state-utils.js │ │ ├── mock-state.js │ │ ├── raw-states.js │ │ ├── table-utils.js │ │ └── utils.js │ ├── js-dom.js │ ├── node/ │ │ ├── index.js │ │ ├── processors/ │ │ │ ├── file-handler-fixtures.js │ │ │ ├── file-handler-test.js │ │ │ └── index.js │ │ ├── reducers/ │ │ │ ├── composer-state-test.js │ │ │ ├── index.js │ │ │ ├── map-state-test.js │ │ │ ├── map-style-test.js │ │ │ ├── provider-state-test.js │ │ │ ├── root-test.js │ │ │ ├── ui-state-test.js │ │ │ ├── vis-state-merger-combine-configs-test.spec.js │ │ │ ├── vis-state-merger-test.js │ │ │ └── vis-state-test.js │ │ ├── schemas/ │ │ │ ├── dataset-schema-test.js │ │ │ ├── index.js │ │ │ ├── map-state-schema-test.js │ │ │ ├── map-style-schema-test.js │ │ │ ├── schema-conversion-test.js │ │ │ └── vis-state-schema-test.js │ │ └── utils/ │ │ ├── aggregation-test.js │ │ ├── color-util-test.js │ │ ├── composer-helpers-test.js │ │ ├── data-container-test.js │ │ ├── data-processor-test.js │ │ ├── data-scale-utils-test.js │ │ ├── data-utils-test.js │ │ ├── dataset-utils-test.js │ │ ├── dom-to-image.js │ │ ├── duckdb-utils-test.js │ │ ├── editor-utils-test.js │ │ ├── effect-utils-test.js │ │ ├── export-utils-test.js │ │ ├── filter-utils-test.js │ │ ├── gpu-filter-utils-test.js │ │ ├── index.js │ │ ├── interaction-utils-test.js │ │ ├── kepler-gl-utils-test.js │ │ ├── kepler-table-test.js │ │ ├── kepler-table-utils-test.js │ │ ├── layer-utils-test.js │ │ ├── map-info-utils-test.js │ │ ├── mapbox-gl-style-editor-test.js │ │ ├── mapbox-utils-test.js │ │ ├── notifications-utils-test.js │ │ ├── plot-test.js │ │ ├── s2-utils-test.js │ │ ├── timeline-test.js │ │ └── util-test.js │ ├── node.js │ ├── setup-browser-env.js │ └── webpack.config.js ├── tsconfig.json ├── tsconfig.production.json ├── webpack/ │ ├── build_types.js │ ├── bundle.js │ ├── shared-webpack-configuration.js │ └── umd.js ├── website/ │ ├── .babelrc │ ├── .yarnrc.yml │ ├── README.md │ ├── esbuild.config.mjs │ ├── package.json │ ├── src/ │ │ ├── README.md │ │ ├── components/ │ │ │ ├── app.js │ │ │ ├── common/ │ │ │ │ ├── card.js │ │ │ │ ├── carousel.js │ │ │ │ ├── section.js │ │ │ │ ├── slideshow.js │ │ │ │ ├── staggered-scroll-animation.js │ │ │ │ ├── styled-components.js │ │ │ │ ├── styles.js │ │ │ │ └── swipeable.js │ │ │ ├── desktop.js │ │ │ ├── ecosystems.js │ │ │ ├── examples.js │ │ │ ├── features.js │ │ │ ├── footer.js │ │ │ ├── foursquare-logo.js │ │ │ ├── header.js │ │ │ ├── hero.js │ │ │ ├── home.js │ │ │ ├── mapbox-logo.js │ │ │ ├── netlify-logo.js │ │ │ ├── policy.js │ │ │ ├── showcase.js │ │ │ ├── studio.js │ │ │ ├── tutorials.js │ │ │ └── walkthrough.js │ │ ├── constants.js │ │ ├── content.js │ │ ├── main.js │ │ ├── reducers/ │ │ │ ├── analytics.js │ │ │ ├── app.js │ │ │ └── index.js │ │ ├── routes.js │ │ ├── static/ │ │ │ ├── _redirects │ │ │ └── index.html │ │ ├── styles.js │ │ └── utils.js │ └── webpack.config.js └── website-gatsby/ ├── .eslintignore ├── .gitignore ├── gatsby-browser.js ├── gatsby-config.js ├── gatsby-node.js ├── gatsby-ssr.js ├── package.json ├── src/ │ ├── components/ │ │ ├── app.js │ │ ├── common/ │ │ │ ├── card.js │ │ │ ├── carousel.js │ │ │ ├── section.js │ │ │ ├── slideshow.js │ │ │ ├── staggered-scroll-animation.js │ │ │ ├── styled-components.js │ │ │ ├── styles.js │ │ │ └── swipeable.js │ │ ├── examples.js │ │ ├── features.js │ │ ├── footer.js │ │ ├── header.js │ │ ├── hero.js │ │ ├── home.js │ │ ├── info-panel.jsx │ │ ├── mapbox-logo.js │ │ ├── policy.js │ │ ├── showcase.js │ │ ├── tutorials.js │ │ └── walkthrough.js │ ├── constants.js │ ├── content.js │ ├── state/ │ │ ├── analytics.js │ │ ├── app.js │ │ ├── index.js │ │ ├── redux-wrapper.js │ │ └── test.js │ ├── styles.js │ └── utils.js ├── static/ │ └── CNAME └── templates/ ├── index.jsx └── style.css