@carto/kepler.gl 0.0.1-alpha.map-libre
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +939 -0
- package/LICENSE +19 -0
- package/README.md +63 -0
- package/actions.js +21 -0
- package/cloud-providers.js +21 -0
- package/components.js +21 -0
- package/constants.js +21 -0
- package/dist/actions/action-wrapper.js +218 -0
- package/dist/actions/actions.js +198 -0
- package/dist/actions/identity-actions.js +105 -0
- package/dist/actions/index.js +161 -0
- package/dist/actions/map-state-actions.js +112 -0
- package/dist/actions/map-style-actions.js +167 -0
- package/dist/actions/provider-actions.js +129 -0
- package/dist/actions/ui-state-actions.js +316 -0
- package/dist/actions/vis-state-actions.js +1045 -0
- package/dist/cloud-providers/index.js +22 -0
- package/dist/cloud-providers/provider.js +386 -0
- package/dist/components/bottom-widget.js +215 -0
- package/dist/components/common/action-panel.js +134 -0
- package/dist/components/common/animation-control/animation-control.js +126 -0
- package/dist/components/common/animation-control/animation-controller.js +273 -0
- package/dist/components/common/animation-control/animation-speed-slider.js +101 -0
- package/dist/components/common/animation-control/floating-time-display.js +157 -0
- package/dist/components/common/animation-control/playback-controls.js +278 -0
- package/dist/components/common/animation-control/speed-control.js +68 -0
- package/dist/components/common/checkbox.js +155 -0
- package/dist/components/common/color-legend.js +249 -0
- package/dist/components/common/data-table/button.js +46 -0
- package/dist/components/common/data-table/canvas.js +32 -0
- package/dist/components/common/data-table/cell-size.js +174 -0
- package/dist/components/common/data-table/grid.js +84 -0
- package/dist/components/common/data-table/index.js +514 -0
- package/dist/components/common/data-table/option-dropdown.js +103 -0
- package/dist/components/common/dataset-label.js +36 -0
- package/dist/components/common/error-boundary.js +83 -0
- package/dist/components/common/field-selector.js +282 -0
- package/dist/components/common/field-token.js +42 -0
- package/dist/components/common/file-uploader/file-drop.js +227 -0
- package/dist/components/common/file-uploader/file-upload-progress.js +102 -0
- package/dist/components/common/file-uploader/file-upload.js +304 -0
- package/dist/components/common/file-uploader/upload-button.js +111 -0
- package/dist/components/common/histogram-plot.js +102 -0
- package/dist/components/common/icons/add.js +64 -0
- package/dist/components/common/icons/anchor_window.js +62 -0
- package/dist/components/common/icons/arrow-down-alt.js +64 -0
- package/dist/components/common/icons/arrow-down-solid .js +64 -0
- package/dist/components/common/icons/arrow-down.js +64 -0
- package/dist/components/common/icons/arrow-left.js +67 -0
- package/dist/components/common/icons/arrow-right.js +64 -0
- package/dist/components/common/icons/arrow-up-alt.js +65 -0
- package/dist/components/common/icons/arrow-up-solid.js +64 -0
- package/dist/components/common/icons/arrow-up.js +64 -0
- package/dist/components/common/icons/base.js +110 -0
- package/dist/components/common/icons/bug.js +66 -0
- package/dist/components/common/icons/cancel.js +64 -0
- package/dist/components/common/icons/checkmark.js +71 -0
- package/dist/components/common/icons/chevron-right.js +69 -0
- package/dist/components/common/icons/clipboard.js +65 -0
- package/dist/components/common/icons/clock.js +66 -0
- package/dist/components/common/icons/close.js +69 -0
- package/dist/components/common/icons/code-alt.js +68 -0
- package/dist/components/common/icons/copy.js +70 -0
- package/dist/components/common/icons/crosshairs.js +68 -0
- package/dist/components/common/icons/cube-3d.js +68 -0
- package/dist/components/common/icons/cursor-click.js +68 -0
- package/dist/components/common/icons/data-table.js +65 -0
- package/dist/components/common/icons/db.js +65 -0
- package/dist/components/common/icons/delete.js +65 -0
- package/dist/components/common/icons/docs.js +80 -0
- package/dist/components/common/icons/drag-n-drop.js +66 -0
- package/dist/components/common/icons/draw-polygon.js +87 -0
- package/dist/components/common/icons/email.js +68 -0
- package/dist/components/common/icons/expand.js +66 -0
- package/dist/components/common/icons/eye-seen.js +66 -0
- package/dist/components/common/icons/eye-unseen.js +66 -0
- package/dist/components/common/icons/file-type.js +45 -0
- package/dist/components/common/icons/file.js +64 -0
- package/dist/components/common/icons/files.js +66 -0
- package/dist/components/common/icons/filter-funnel.js +64 -0
- package/dist/components/common/icons/free-window.js +62 -0
- package/dist/components/common/icons/gear.js +66 -0
- package/dist/components/common/icons/hash.js +64 -0
- package/dist/components/common/icons/histogram.js +64 -0
- package/dist/components/common/icons/index.js +612 -0
- package/dist/components/common/icons/info.js +78 -0
- package/dist/components/common/icons/layers.js +64 -0
- package/dist/components/common/icons/left-arrow.js +68 -0
- package/dist/components/common/icons/legend.js +64 -0
- package/dist/components/common/icons/line-chart.js +63 -0
- package/dist/components/common/icons/login.js +66 -0
- package/dist/components/common/icons/logout.js +65 -0
- package/dist/components/common/icons/map-icon.js +73 -0
- package/dist/components/common/icons/map.js +73 -0
- package/dist/components/common/icons/messages.js +64 -0
- package/dist/components/common/icons/minus.js +64 -0
- package/dist/components/common/icons/pause.js +64 -0
- package/dist/components/common/icons/picture.js +66 -0
- package/dist/components/common/icons/pin.js +64 -0
- package/dist/components/common/icons/play.js +64 -0
- package/dist/components/common/icons/polygon.js +89 -0
- package/dist/components/common/icons/rectangle.js +90 -0
- package/dist/components/common/icons/reduce.js +67 -0
- package/dist/components/common/icons/reset.js +64 -0
- package/dist/components/common/icons/rocket.js +64 -0
- package/dist/components/common/icons/save.js +66 -0
- package/dist/components/common/icons/save2.js +70 -0
- package/dist/components/common/icons/search.js +66 -0
- package/dist/components/common/icons/settings.js +66 -0
- package/dist/components/common/icons/share.js +64 -0
- package/dist/components/common/icons/split.js +92 -0
- package/dist/components/common/icons/square-select.js +66 -0
- package/dist/components/common/icons/swap-horizontal.js +68 -0
- package/dist/components/common/icons/table.js +63 -0
- package/dist/components/common/icons/trash.js +66 -0
- package/dist/components/common/icons/upload.js +65 -0
- package/dist/components/common/icons/vert-dots.js +102 -0
- package/dist/components/common/icons/vert-three-dots.js +77 -0
- package/dist/components/common/icons/warning.js +79 -0
- package/dist/components/common/image-preview.js +73 -0
- package/dist/components/common/info-helper.js +84 -0
- package/dist/components/common/item-selector/accessor.js +56 -0
- package/dist/components/common/item-selector/chickleted-input.js +118 -0
- package/dist/components/common/item-selector/dropdown-list.js +316 -0
- package/dist/components/common/item-selector/item-selector-submenu.js +99 -0
- package/dist/components/common/item-selector/item-selector.js +363 -0
- package/dist/components/common/item-selector/typeahead.js +496 -0
- package/dist/components/common/line-chart.js +125 -0
- package/dist/components/common/loading-spinner.js +58 -0
- package/dist/components/common/logo.js +92 -0
- package/dist/components/common/map-layer-selector.js +50 -0
- package/dist/components/common/modal.js +204 -0
- package/dist/components/common/portaled.js +317 -0
- package/dist/components/common/progress-bar.js +56 -0
- package/dist/components/common/range-brush.js +319 -0
- package/dist/components/common/range-plot.js +148 -0
- package/dist/components/common/range-slider.js +346 -0
- package/dist/components/common/slider/mouse-event.js +136 -0
- package/dist/components/common/slider/slider-bar-handle.js +122 -0
- package/dist/components/common/slider/slider-handle.js +167 -0
- package/dist/components/common/slider/slider.js +268 -0
- package/dist/components/common/styled-components.js +395 -0
- package/dist/components/common/switch.js +47 -0
- package/dist/components/common/time-range-slider-time-title.js +74 -0
- package/dist/components/common/time-range-slider.js +131 -0
- package/dist/components/common/time-slider-marker.js +141 -0
- package/dist/components/common/toolbar-item.js +67 -0
- package/dist/components/common/toolbar.js +33 -0
- package/dist/components/common/vertical-toolbar.js +22 -0
- package/dist/components/container.js +217 -0
- package/dist/components/context.js +42 -0
- package/dist/components/editor/constants.js +47 -0
- package/dist/components/editor/editor.js +274 -0
- package/dist/components/editor/feature-action-panel.js +154 -0
- package/dist/components/editor/feature-styles.js +72 -0
- package/dist/components/editor/handle-style.js +80 -0
- package/dist/components/filters/components.js +20 -0
- package/dist/components/filters/filter-panels/filter-panel-with-field-select.js +110 -0
- package/dist/components/filters/filter-panels/multi-select-filter-panel.js +80 -0
- package/dist/components/filters/filter-panels/new-filter-panel.js +101 -0
- package/dist/components/filters/filter-panels/polygon-filter-panel.js +102 -0
- package/dist/components/filters/filter-panels/range-filter-panel.js +80 -0
- package/dist/components/filters/filter-panels/single-select-filter-panel.js +80 -0
- package/dist/components/filters/filter-panels/time-range-filter-panel.js +92 -0
- package/dist/components/filters/index.js +48 -0
- package/dist/components/filters/multi-select-filter.js +54 -0
- package/dist/components/filters/polygon-filter.js +96 -0
- package/dist/components/filters/range-filter.js +53 -0
- package/dist/components/filters/single-select-filter.js +63 -0
- package/dist/components/filters/time-range-filter.js +86 -0
- package/dist/components/filters/time-widget.js +173 -0
- package/dist/components/geocoder/geocoder.js +315 -0
- package/dist/components/geocoder-panel.js +224 -0
- package/dist/components/index.js +1485 -0
- package/dist/components/injector.js +178 -0
- package/dist/components/kepler-gl.js +563 -0
- package/dist/components/map/coordinate-info.js +68 -0
- package/dist/components/map/layer-hover-info.js +176 -0
- package/dist/components/map/layer-selector-panel.js +116 -0
- package/dist/components/map/locale-panel.js +113 -0
- package/dist/components/map/map-control-panel.js +79 -0
- package/dist/components/map/map-control-toolbar.js +25 -0
- package/dist/components/map/map-control-tooltip.js +55 -0
- package/dist/components/map/map-control.js +80 -0
- package/dist/components/map/map-draw-panel.js +142 -0
- package/dist/components/map/map-legend-panel.js +124 -0
- package/dist/components/map/map-legend.js +244 -0
- package/dist/components/map/map-popover.js +204 -0
- package/dist/components/map/split-map-button.js +98 -0
- package/dist/components/map/toggle-3d-button.js +86 -0
- package/dist/components/map-container.js +562 -0
- package/dist/components/maps-layout.js +58 -0
- package/dist/components/modal-container.js +536 -0
- package/dist/components/modals/add-map-style-modal.js +288 -0
- package/dist/components/modals/cloud-tile.js +124 -0
- package/dist/components/modals/data-table-modal.js +249 -0
- package/dist/components/modals/delete-data-modal.js +54 -0
- package/dist/components/modals/error-display.js +51 -0
- package/dist/components/modals/export-data-modal.js +227 -0
- package/dist/components/modals/export-image-modal.js +136 -0
- package/dist/components/modals/export-map-modal/components.js +51 -0
- package/dist/components/modals/export-map-modal/export-html-map.js +141 -0
- package/dist/components/modals/export-map-modal/export-json-map.js +87 -0
- package/dist/components/modals/export-map-modal/export-map-modal.js +133 -0
- package/dist/components/modals/image-modal-container.js +90 -0
- package/dist/components/modals/load-data-modal.js +97 -0
- package/dist/components/modals/load-storage-map.js +288 -0
- package/dist/components/modals/loading-dialog.js +48 -0
- package/dist/components/modals/modal-dialog.js +37 -0
- package/dist/components/modals/modal-tabs.js +99 -0
- package/dist/components/modals/overwrite-map-modal.js +80 -0
- package/dist/components/modals/provider-modal-container.js +84 -0
- package/dist/components/modals/save-map-modal.js +207 -0
- package/dist/components/modals/share-map-modal.js +202 -0
- package/dist/components/modals/status-panel.js +83 -0
- package/dist/components/modals/storage-map-viewer.js +135 -0
- package/dist/components/notification-panel/notification-item.js +164 -0
- package/dist/components/notification-panel.js +87 -0
- package/dist/components/performance.js +134 -0
- package/dist/components/plot-container.js +275 -0
- package/dist/components/side-panel/cloud-storage-dropdown.js +63 -0
- package/dist/components/side-panel/common/dataset-info.js +43 -0
- package/dist/components/side-panel/common/dataset-tag.js +42 -0
- package/dist/components/side-panel/common/dataset-title.js +170 -0
- package/dist/components/side-panel/common/source-data-catalog.js +60 -0
- package/dist/components/side-panel/common/source-data-selector.js +120 -0
- package/dist/components/side-panel/custom-panel.js +60 -0
- package/dist/components/side-panel/filter-manager.js +132 -0
- package/dist/components/side-panel/filter-panel/filter-panel-header.js +70 -0
- package/dist/components/side-panel/filter-panel/filter-panel.js +145 -0
- package/dist/components/side-panel/interaction-manager.js +58 -0
- package/dist/components/side-panel/interaction-panel/brush-config.js +54 -0
- package/dist/components/side-panel/interaction-panel/interaction-panel.js +168 -0
- package/dist/components/side-panel/interaction-panel/tooltip-config/tooltip-chicklet.js +250 -0
- package/dist/components/side-panel/interaction-panel/tooltip-config.js +163 -0
- package/dist/components/side-panel/layer-manager.js +321 -0
- package/dist/components/side-panel/layer-panel/color-dimension-scale-selector.js +45 -0
- package/dist/components/side-panel/layer-panel/color-palette.js +83 -0
- package/dist/components/side-panel/layer-panel/color-range-selector.js +370 -0
- package/dist/components/side-panel/layer-panel/color-selector.js +226 -0
- package/dist/components/side-panel/layer-panel/column-selector.js +65 -0
- package/dist/components/side-panel/layer-panel/custom-markers-config-group.js +40 -0
- package/dist/components/side-panel/layer-panel/custom-palette.js +318 -0
- package/dist/components/side-panel/layer-panel/custom-picker.js +128 -0
- package/dist/components/side-panel/layer-panel/dimension-scale-selector.js +61 -0
- package/dist/components/side-panel/layer-panel/layer-aggregation-resolution.js +26 -0
- package/dist/components/side-panel/layer-panel/layer-column-config.js +93 -0
- package/dist/components/side-panel/layer-panel/layer-config-group.js +245 -0
- package/dist/components/side-panel/layer-panel/layer-configurator.js +977 -0
- package/dist/components/side-panel/layer-panel/layer-panel-header.js +222 -0
- package/dist/components/side-panel/layer-panel/layer-panel.js +201 -0
- package/dist/components/side-panel/layer-panel/layer-type-dropdown-list.js +89 -0
- package/dist/components/side-panel/layer-panel/layer-type-list-item.js +71 -0
- package/dist/components/side-panel/layer-panel/layer-type-selector.js +96 -0
- package/dist/components/side-panel/layer-panel/layer-visibility-by-zoom.js +111 -0
- package/dist/components/side-panel/layer-panel/single-color-palette.js +109 -0
- package/dist/components/side-panel/layer-panel/text-label-panel.js +175 -0
- package/dist/components/side-panel/layer-panel/vis-config-by-field-selector.js +174 -0
- package/dist/components/side-panel/layer-panel/vis-config-slider.js +90 -0
- package/dist/components/side-panel/layer-panel/vis-config-switch.js +84 -0
- package/dist/components/side-panel/map-manager.js +155 -0
- package/dist/components/side-panel/map-style-panel/map-layer-selector.js +106 -0
- package/dist/components/side-panel/map-style-panel/map-style-selector.js +78 -0
- package/dist/components/side-panel/panel-dropdown.js +86 -0
- package/dist/components/side-panel/panel-header-action.js +121 -0
- package/dist/components/side-panel/panel-header.js +351 -0
- package/dist/components/side-panel/panel-tab.js +68 -0
- package/dist/components/side-panel/panel-title.js +28 -0
- package/dist/components/side-panel/panel-toggle.js +69 -0
- package/dist/components/side-panel/side-bar.js +164 -0
- package/dist/components/side-panel.js +242 -0
- package/dist/connect/keplergl-connect.js +68 -0
- package/dist/connect/with-local-selector.js +110 -0
- package/dist/constants/action-types.js +180 -0
- package/dist/constants/color-palette.js +547 -0
- package/dist/constants/color-ranges.js +70 -0
- package/dist/constants/custom-color-ranges.js +415 -0
- package/dist/constants/default-settings.js +902 -0
- package/dist/constants/index.js +370 -0
- package/dist/constants/keyevent.js +47 -0
- package/dist/constants/tooltip.js +205 -0
- package/dist/constants/user-feedbacks.js +33 -0
- package/dist/constants/user-guides.js +44 -0
- package/dist/deckgl-layers/3d-building-layer/3d-building-layer.js +88 -0
- package/dist/deckgl-layers/3d-building-layer/3d-building-utils.js +214 -0
- package/dist/deckgl-layers/cluster-layer/cluster-layer.js +334 -0
- package/dist/deckgl-layers/column-layer/enhanced-column-layer.js +78 -0
- package/dist/deckgl-layers/grid-layer/enhanced-cpu-grid-layer.js +96 -0
- package/dist/deckgl-layers/hexagon-layer/enhanced-hexagon-layer.js +96 -0
- package/dist/deckgl-layers/layer-utils/cluster-utils.js +119 -0
- package/dist/deckgl-layers/layer-utils/cpu-aggregator.js +643 -0
- package/dist/deckgl-layers/layer-utils/shader-utils.js +50 -0
- package/dist/deckgl-layers/line-layer/line-layer.js +111 -0
- package/dist/deckgl-layers/svg-icon-layer/scatterplot-icon-layer.js +78 -0
- package/dist/deckgl-layers/svg-icon-layer/svg-icon-layer.js +120 -0
- package/dist/index.js +155 -0
- package/dist/layers/aggregation-layer.js +416 -0
- package/dist/layers/arc-layer/arc-layer-icon.js +77 -0
- package/dist/layers/arc-layer/arc-layer.js +275 -0
- package/dist/layers/base-layer.js +1688 -0
- package/dist/layers/cluster-layer/cluster-layer-icon.js +80 -0
- package/dist/layers/cluster-layer/cluster-layer.js +151 -0
- package/dist/layers/default-layer-icon.js +87 -0
- package/dist/layers/geojson-layer/geojson-layer-icon.js +91 -0
- package/dist/layers/geojson-layer/geojson-layer.js +446 -0
- package/dist/layers/geojson-layer/geojson-utils.js +183 -0
- package/dist/layers/grid-layer/grid-layer-icon.js +136 -0
- package/dist/layers/grid-layer/grid-layer.js +115 -0
- package/dist/layers/grid-layer/grid-utils.js +62 -0
- package/dist/layers/h3-hexagon-layer/h3-hexagon-layer-icon.js +71 -0
- package/dist/layers/h3-hexagon-layer/h3-hexagon-layer.js +346 -0
- package/dist/layers/h3-hexagon-layer/h3-utils.js +97 -0
- package/dist/layers/heatmap-layer/heatmap-layer-icon.js +88 -0
- package/dist/layers/heatmap-layer/heatmap-layer.js +269 -0
- package/dist/layers/hexagon-layer/hexagon-layer-icon.js +100 -0
- package/dist/layers/hexagon-layer/hexagon-layer.js +120 -0
- package/dist/layers/hexagon-layer/hexagon-utils.js +74 -0
- package/dist/layers/icon-layer/icon-info-modal.js +117 -0
- package/dist/layers/icon-layer/icon-layer-icon.js +73 -0
- package/dist/layers/icon-layer/icon-layer.js +392 -0
- package/dist/layers/index.js +97 -0
- package/dist/layers/layer-factory.js +499 -0
- package/dist/layers/layer-text-label.js +72 -0
- package/dist/layers/layer-update.js +85 -0
- package/dist/layers/line-layer/line-layer-icon.js +79 -0
- package/dist/layers/line-layer/line-layer.js +209 -0
- package/dist/layers/mapbox-utils.js +204 -0
- package/dist/layers/mapboxgl-layer.js +210 -0
- package/dist/layers/point-layer/point-layer-icon.js +94 -0
- package/dist/layers/point-layer/point-layer.js +475 -0
- package/dist/layers/s2-geometry-layer/s2-geometry-layer.js +334 -0
- package/dist/layers/s2-geometry-layer/s2-layer-icon.js +70 -0
- package/dist/layers/s2-geometry-layer/s2-utils.js +51 -0
- package/dist/layers/scenegraph-layer/scenegraph-info-modal.js +48 -0
- package/dist/layers/scenegraph-layer/scenegraph-layer-icon.js +151 -0
- package/dist/layers/scenegraph-layer/scenegraph-layer.js +250 -0
- package/dist/layers/trip-layer/trip-info-modal.js +54 -0
- package/dist/layers/trip-layer/trip-layer-icon.js +89 -0
- package/dist/layers/trip-layer/trip-layer.js +403 -0
- package/dist/layers/trip-layer/trip-utils.js +204 -0
- package/dist/layers/types.js +47 -0
- package/dist/localization/en.js +480 -0
- package/dist/localization/formatted-message.js +45 -0
- package/dist/localization/index.js +60 -0
- package/dist/localization/locales.js +64 -0
- package/dist/middleware/index.js +47 -0
- package/dist/processors/data-processor.js +784 -0
- package/dist/processors/file-handler.js +432 -0
- package/dist/processors/index.js +106 -0
- package/dist/reducers/combined-updaters.js +195 -0
- package/dist/reducers/composer-helpers.js +110 -0
- package/dist/reducers/composers.js +27 -0
- package/dist/reducers/core.js +156 -0
- package/dist/reducers/index.js +139 -0
- package/dist/reducers/map-state-updaters.js +239 -0
- package/dist/reducers/map-state.js +47 -0
- package/dist/reducers/map-style-updaters.js +531 -0
- package/dist/reducers/map-style.js +46 -0
- package/dist/reducers/provider-state-updaters.js +541 -0
- package/dist/reducers/provider-state.js +46 -0
- package/dist/reducers/root.js +218 -0
- package/dist/reducers/ui-state-updaters.js +855 -0
- package/dist/reducers/ui-state.js +47 -0
- package/dist/reducers/vis-state-merger.js +615 -0
- package/dist/reducers/vis-state-selectors.js +52 -0
- package/dist/reducers/vis-state-updaters.js +2433 -0
- package/dist/reducers/vis-state.js +46 -0
- package/dist/schemas/dataset-schema.js +189 -0
- package/dist/schemas/index.js +132 -0
- package/dist/schemas/map-state-schema.js +49 -0
- package/dist/schemas/map-style-schema.js +122 -0
- package/dist/schemas/schema-manager.js +262 -0
- package/dist/schemas/schema-utils.js +62 -0
- package/dist/schemas/schema.js +114 -0
- package/dist/schemas/versions.js +38 -0
- package/dist/schemas/vis-state-schema.js +1071 -0
- package/dist/styles/base.js +1570 -0
- package/dist/styles/index.js +32 -0
- package/dist/styles/media-breakpoints.js +39 -0
- package/dist/tasks/tasks.js +122 -0
- package/dist/templates/export-map-html.js +45 -0
- package/dist/utils/aggregate-utils.js +75 -0
- package/dist/utils/color-utils.js +135 -0
- package/dist/utils/data-scale-utils.js +84 -0
- package/dist/utils/data-utils.js +491 -0
- package/dist/utils/dataset-utils.js +254 -0
- package/dist/utils/dom-to-image.js +557 -0
- package/dist/utils/dom-utils.js +425 -0
- package/dist/utils/export-utils.js +297 -0
- package/dist/utils/filter-utils.js +1286 -0
- package/dist/utils/gl-utils.js +35 -0
- package/dist/utils/gpu-filter-utils.js +261 -0
- package/dist/utils/index.js +226 -0
- package/dist/utils/interaction-utils.js +201 -0
- package/dist/utils/layer-utils.js +205 -0
- package/dist/utils/locale-utils.js +54 -0
- package/dist/utils/map-info-utils.js +32 -0
- package/dist/utils/map-style-utils/mapbox-gl-style-editor.js +212 -0
- package/dist/utils/map-style-utils/mapbox-utils.js +35 -0
- package/dist/utils/mapbox-utils.js +39 -0
- package/dist/utils/notifications-utils.js +89 -0
- package/dist/utils/observe-dimensions.js +147 -0
- package/dist/utils/projection-utils.js +83 -0
- package/dist/utils/searcher-utils.js +45 -0
- package/dist/utils/split-map-utils.js +108 -0
- package/dist/utils/table-utils/data-container-utils.js +69 -0
- package/dist/utils/table-utils/data-row.js +82 -0
- package/dist/utils/table-utils/index.js +20 -0
- package/dist/utils/table-utils/indexed-data-container.js +241 -0
- package/dist/utils/table-utils/kepler-table.js +544 -0
- package/dist/utils/table-utils/row-data-container.js +242 -0
- package/dist/utils/utils.js +234 -0
- package/layers.js +21 -0
- package/localization.js +21 -0
- package/middleware.js +21 -0
- package/package.json +281 -0
- package/processors.js +21 -0
- package/reducers.js +21 -0
- package/schemas.js +21 -0
- package/src/actions/action-wrapper.js +183 -0
- package/src/actions/actions.d.ts +104 -0
- package/src/actions/actions.js +178 -0
- package/src/actions/identity-actions.d.ts +53 -0
- package/src/actions/identity-actions.js +83 -0
- package/src/actions/index.d.ts +23 -0
- package/src/actions/index.js +42 -0
- package/src/actions/map-state-actions.d.ts +46 -0
- package/src/actions/map-state-actions.js +90 -0
- package/src/actions/map-style-actions.d.ts +116 -0
- package/src/actions/map-style-actions.js +135 -0
- package/src/actions/provider-actions.d.ts +203 -0
- package/src/actions/provider-actions.js +94 -0
- package/src/actions/ui-state-actions.d.ts +200 -0
- package/src/actions/ui-state-actions.js +272 -0
- package/src/actions/vis-state-actions.d.ts +502 -0
- package/src/actions/vis-state-actions.js +919 -0
- package/src/cloud-providers/index.d.ts +53 -0
- package/src/cloud-providers/index.js +21 -0
- package/src/cloud-providers/provider.js +233 -0
- package/src/components/bottom-widget.d.ts +33 -0
- package/src/components/bottom-widget.js +235 -0
- package/src/components/common/action-panel.d.ts +24 -0
- package/src/components/common/action-panel.js +177 -0
- package/src/components/common/animation-control/animation-control.js +155 -0
- package/src/components/common/animation-control/animation-controller.js +224 -0
- package/src/components/common/animation-control/animation-speed-slider.js +79 -0
- package/src/components/common/animation-control/floating-time-display.js +192 -0
- package/src/components/common/animation-control/playback-controls.js +278 -0
- package/src/components/common/animation-control/speed-control.js +71 -0
- package/src/components/common/checkbox.js +128 -0
- package/src/components/common/color-legend.js +198 -0
- package/src/components/common/data-table/button.js +47 -0
- package/src/components/common/data-table/canvas.js +43 -0
- package/src/components/common/data-table/cell-size.js +180 -0
- package/src/components/common/data-table/grid.js +55 -0
- package/src/components/common/data-table/index.js +620 -0
- package/src/components/common/data-table/option-dropdown.js +110 -0
- package/src/components/common/dataset-label.js +40 -0
- package/src/components/common/error-boundary.js +43 -0
- package/src/components/common/field-selector.js +233 -0
- package/src/components/common/field-token.js +56 -0
- package/src/components/common/file-uploader/file-drop.d.ts +19 -0
- package/src/components/common/file-uploader/file-drop.js +196 -0
- package/src/components/common/file-uploader/file-upload-progress.d.ts +11 -0
- package/src/components/common/file-uploader/file-upload-progress.js +110 -0
- package/src/components/common/file-uploader/file-upload.d.ts +22 -0
- package/src/components/common/file-uploader/file-upload.js +301 -0
- package/src/components/common/file-uploader/upload-button.d.ts.wip +11 -0
- package/src/components/common/file-uploader/upload-button.js +83 -0
- package/src/components/common/histogram-plot.js +102 -0
- package/src/components/common/icons/add.js +43 -0
- package/src/components/common/icons/anchor_window.js +53 -0
- package/src/components/common/icons/arrow-down-alt.js +43 -0
- package/src/components/common/icons/arrow-down-solid .js +43 -0
- package/src/components/common/icons/arrow-down.js +46 -0
- package/src/components/common/icons/arrow-left.js +48 -0
- package/src/components/common/icons/arrow-right.js +46 -0
- package/src/components/common/icons/arrow-up-alt.js +46 -0
- package/src/components/common/icons/arrow-up-solid.js +43 -0
- package/src/components/common/icons/arrow-up.js +46 -0
- package/src/components/common/icons/base.js +90 -0
- package/src/components/common/icons/bug.js +46 -0
- package/src/components/common/icons/cancel.js +43 -0
- package/src/components/common/icons/checkmark.js +45 -0
- package/src/components/common/icons/chevron-right.js +47 -0
- package/src/components/common/icons/clipboard.js +46 -0
- package/src/components/common/icons/clock.js +44 -0
- package/src/components/common/icons/close.js +49 -0
- package/src/components/common/icons/code-alt.js +43 -0
- package/src/components/common/icons/copy.js +44 -0
- package/src/components/common/icons/crosshairs.js +43 -0
- package/src/components/common/icons/cube-3d.js +45 -0
- package/src/components/common/icons/cursor-click.js +49 -0
- package/src/components/common/icons/data-table.js +45 -0
- package/src/components/common/icons/db.js +45 -0
- package/src/components/common/icons/delete.js +44 -0
- package/src/components/common/icons/docs.js +46 -0
- package/src/components/common/icons/drag-n-drop.js +44 -0
- package/src/components/common/icons/draw-polygon.js +60 -0
- package/src/components/common/icons/email.js +45 -0
- package/src/components/common/icons/expand.js +45 -0
- package/src/components/common/icons/eye-seen.js +44 -0
- package/src/components/common/icons/eye-unseen.js +44 -0
- package/src/components/common/icons/file-type.js +57 -0
- package/src/components/common/icons/file.js +43 -0
- package/src/components/common/icons/files.js +42 -0
- package/src/components/common/icons/filter-funnel.js +43 -0
- package/src/components/common/icons/free-window.js +53 -0
- package/src/components/common/icons/gear.js +45 -0
- package/src/components/common/icons/hash.js +43 -0
- package/src/components/common/icons/histogram.js +47 -0
- package/src/components/common/icons/index.js +96 -0
- package/src/components/common/icons/info.js +54 -0
- package/src/components/common/icons/layers.js +43 -0
- package/src/components/common/icons/left-arrow.js +43 -0
- package/src/components/common/icons/legend.js +43 -0
- package/src/components/common/icons/line-chart.js +45 -0
- package/src/components/common/icons/login.js +46 -0
- package/src/components/common/icons/logout.js +43 -0
- package/src/components/common/icons/map-icon.js +69 -0
- package/src/components/common/icons/map.js +69 -0
- package/src/components/common/icons/messages.js +43 -0
- package/src/components/common/icons/minus.js +45 -0
- package/src/components/common/icons/pause.js +43 -0
- package/src/components/common/icons/picture.js +43 -0
- package/src/components/common/icons/pin.js +43 -0
- package/src/components/common/icons/play.js +43 -0
- package/src/components/common/icons/polygon.js +74 -0
- package/src/components/common/icons/rectangle.js +75 -0
- package/src/components/common/icons/reduce.js +48 -0
- package/src/components/common/icons/reset.js +43 -0
- package/src/components/common/icons/rocket.js +43 -0
- package/src/components/common/icons/save.js +44 -0
- package/src/components/common/icons/save2.js +47 -0
- package/src/components/common/icons/search.js +44 -0
- package/src/components/common/icons/settings.js +45 -0
- package/src/components/common/icons/share.js +43 -0
- package/src/components/common/icons/split.js +63 -0
- package/src/components/common/icons/square-select.js +44 -0
- package/src/components/common/icons/swap-horizontal.js +43 -0
- package/src/components/common/icons/table.js +46 -0
- package/src/components/common/icons/trash.js +51 -0
- package/src/components/common/icons/upload.js +44 -0
- package/src/components/common/icons/vert-dots.js +50 -0
- package/src/components/common/icons/vert-three-dots.js +45 -0
- package/src/components/common/icons/warning.js +46 -0
- package/src/components/common/image-preview.js +111 -0
- package/src/components/common/info-helper.js +84 -0
- package/src/components/common/item-selector/accessor.js +45 -0
- package/src/components/common/item-selector/chickleted-input.js +143 -0
- package/src/components/common/item-selector/dropdown-list.js +250 -0
- package/src/components/common/item-selector/item-selector-submenu.js +68 -0
- package/src/components/common/item-selector/item-selector.d.ts +34 -0
- package/src/components/common/item-selector/item-selector.js +360 -0
- package/src/components/common/item-selector/typeahead.js +507 -0
- package/src/components/common/line-chart.js +134 -0
- package/src/components/common/loading-spinner.js +64 -0
- package/src/components/common/logo.js +92 -0
- package/src/components/common/map-layer-selector.d.ts +10 -0
- package/src/components/common/map-layer-selector.js +54 -0
- package/src/components/common/modal.js +233 -0
- package/src/components/common/portaled.js +264 -0
- package/src/components/common/progress-bar.d.ts +13 -0
- package/src/components/common/progress-bar.js +49 -0
- package/src/components/common/range-brush.js +256 -0
- package/src/components/common/range-plot.js +139 -0
- package/src/components/common/range-slider.js +299 -0
- package/src/components/common/slider/mouse-event.js +97 -0
- package/src/components/common/slider/slider-bar-handle.js +97 -0
- package/src/components/common/slider/slider-handle.js +181 -0
- package/src/components/common/slider/slider.js +213 -0
- package/src/components/common/styled-components.js +657 -0
- package/src/components/common/switch.js +50 -0
- package/src/components/common/time-range-slider-time-title.js +76 -0
- package/src/components/common/time-range-slider.js +163 -0
- package/src/components/common/time-slider-marker.js +168 -0
- package/src/components/common/toolbar-item.d.ts +14 -0
- package/src/components/common/toolbar-item.js +83 -0
- package/src/components/common/toolbar.js +45 -0
- package/src/components/common/vertical-toolbar.js +35 -0
- package/src/components/container.js +173 -0
- package/src/components/context.d.ts +10 -0
- package/src/components/context.js +32 -0
- package/src/components/editor/constants.js +39 -0
- package/src/components/editor/editor.js +218 -0
- package/src/components/editor/feature-action-panel.js +143 -0
- package/src/components/editor/feature-styles.js +75 -0
- package/src/components/editor/handle-style.js +89 -0
- package/src/components/filters/components.js +28 -0
- package/src/components/filters/filter-panels/filter-panel-types.d.ts +28 -0
- package/src/components/filters/filter-panels/filter-panel-with-field-select.js +124 -0
- package/src/components/filters/filter-panels/multi-select-filter-panel.js +75 -0
- package/src/components/filters/filter-panels/new-filter-panel.js +99 -0
- package/src/components/filters/filter-panels/polygon-filter-panel.js +96 -0
- package/src/components/filters/filter-panels/range-filter-panel.js +75 -0
- package/src/components/filters/filter-panels/single-select-filter-panel.js +75 -0
- package/src/components/filters/filter-panels/time-range-filter-panel.js +95 -0
- package/src/components/filters/index.js +25 -0
- package/src/components/filters/multi-select-filter.js +36 -0
- package/src/components/filters/polygon-filter.d.ts +13 -0
- package/src/components/filters/polygon-filter.js +73 -0
- package/src/components/filters/range-filter.js +43 -0
- package/src/components/filters/single-select-filter.js +49 -0
- package/src/components/filters/time-range-filter.js +68 -0
- package/src/components/filters/time-widget.js +228 -0
- package/src/components/geocoder/geocoder.d.ts +33 -0
- package/src/components/geocoder/geocoder.js +272 -0
- package/src/components/geocoder-panel.js +191 -0
- package/src/components/index.js +247 -0
- package/src/components/injector.js +161 -0
- package/src/components/kepler-gl.d.ts +60 -0
- package/src/components/kepler-gl.js +525 -0
- package/src/components/map/coordinate-info.js +53 -0
- package/src/components/map/layer-hover-info.d.ts +12 -0
- package/src/components/map/layer-hover-info.js +185 -0
- package/src/components/map/layer-selector-panel.d.ts +16 -0
- package/src/components/map/layer-selector-panel.js +106 -0
- package/src/components/map/locale-panel.d.ts +12 -0
- package/src/components/map/locale-panel.js +91 -0
- package/src/components/map/map-control-panel.d.ts +11 -0
- package/src/components/map/map-control-panel.js +98 -0
- package/src/components/map/map-control-toolbar.js +33 -0
- package/src/components/map/map-control-tooltip.d.ts +8 -0
- package/src/components/map/map-control-tooltip.js +40 -0
- package/src/components/map/map-control.d.ts +37 -0
- package/src/components/map/map-control.js +100 -0
- package/src/components/map/map-draw-panel.d.ts +16 -0
- package/src/components/map/map-draw-panel.js +125 -0
- package/src/components/map/map-legend-panel.d.ts +20 -0
- package/src/components/map/map-legend-panel.js +100 -0
- package/src/components/map/map-legend.d.ts +58 -0
- package/src/components/map/map-legend.js +228 -0
- package/src/components/map/map-popover.d.ts +28 -0
- package/src/components/map/map-popover.js +250 -0
- package/src/components/map/split-map-button.d.ts +19 -0
- package/src/components/map/split-map-button.js +82 -0
- package/src/components/map/toggle-3d-button.d.ts +16 -0
- package/src/components/map/toggle-3d-button.js +75 -0
- package/src/components/map-container.d.ts +18 -0
- package/src/components/map-container.js +502 -0
- package/src/components/maps-layout.d.ts +5 -0
- package/src/components/maps-layout.js +40 -0
- package/src/components/modal-container.d.ts +38 -0
- package/src/components/modal-container.js +545 -0
- package/src/components/modals/add-map-style-modal.js +301 -0
- package/src/components/modals/cloud-tile.js +147 -0
- package/src/components/modals/data-table-modal.js +217 -0
- package/src/components/modals/delete-data-modal.js +48 -0
- package/src/components/modals/error-display.js +39 -0
- package/src/components/modals/export-data-modal.js +193 -0
- package/src/components/modals/export-image-modal.d.ts +21 -0
- package/src/components/modals/export-image-modal.js +144 -0
- package/src/components/modals/export-map-modal/components.js +42 -0
- package/src/components/modals/export-map-modal/export-html-map.d.ts +21 -0
- package/src/components/modals/export-map-modal/export-html-map.js +145 -0
- package/src/components/modals/export-map-modal/export-json-map.js +100 -0
- package/src/components/modals/export-map-modal/export-map-modal.js +114 -0
- package/src/components/modals/image-modal-container.d.ts +13 -0
- package/src/components/modals/image-modal-container.js +76 -0
- package/src/components/modals/load-data-modal.d.ts +30 -0
- package/src/components/modals/load-data-modal.js +94 -0
- package/src/components/modals/load-storage-map.js +381 -0
- package/src/components/modals/loading-dialog.js +69 -0
- package/src/components/modals/modal-dialog.js +25 -0
- package/src/components/modals/modal-tabs.js +126 -0
- package/src/components/modals/overwrite-map-modal.d.ts +18 -0
- package/src/components/modals/overwrite-map-modal.js +97 -0
- package/src/components/modals/provider-modal-container.d.ts +12 -0
- package/src/components/modals/provider-modal-container.js +60 -0
- package/src/components/modals/save-map-modal.d.ts +32 -0
- package/src/components/modals/save-map-modal.js +244 -0
- package/src/components/modals/share-map-modal.js +208 -0
- package/src/components/modals/status-panel.js +95 -0
- package/src/components/modals/storage-map-viewer.js +177 -0
- package/src/components/notification-panel/notification-item.js +132 -0
- package/src/components/notification-panel.js +72 -0
- package/src/components/performance.js +103 -0
- package/src/components/plot-container.js +228 -0
- package/src/components/side-panel/cloud-storage-dropdown.js +52 -0
- package/src/components/side-panel/common/dataset-info.js +45 -0
- package/src/components/side-panel/common/dataset-tag.js +55 -0
- package/src/components/side-panel/common/dataset-title.js +146 -0
- package/src/components/side-panel/common/source-data-catalog.js +61 -0
- package/src/components/side-panel/common/source-data-selector.js +79 -0
- package/src/components/side-panel/custom-panel.js +50 -0
- package/src/components/side-panel/filter-manager.js +105 -0
- package/src/components/side-panel/filter-panel/filter-panel-header.js +83 -0
- package/src/components/side-panel/filter-panel/filter-panel.js +126 -0
- package/src/components/side-panel/interaction-manager.js +46 -0
- package/src/components/side-panel/interaction-panel/brush-config.js +51 -0
- package/src/components/side-panel/interaction-panel/interaction-panel.js +115 -0
- package/src/components/side-panel/interaction-panel/tooltip-config/tooltip-chicklet.js +199 -0
- package/src/components/side-panel/interaction-panel/tooltip-config.js +190 -0
- package/src/components/side-panel/layer-manager.js +290 -0
- package/src/components/side-panel/layer-panel/color-dimension-scale-selector.js +33 -0
- package/src/components/side-panel/layer-panel/color-palette.js +90 -0
- package/src/components/side-panel/layer-panel/color-range-selector.js +322 -0
- package/src/components/side-panel/layer-panel/color-selector.js +193 -0
- package/src/components/side-panel/layer-panel/column-selector.js +70 -0
- package/src/components/side-panel/layer-panel/custom-markers-config-group.js +30 -0
- package/src/components/side-panel/layer-panel/custom-palette.js +296 -0
- package/src/components/side-panel/layer-panel/custom-picker.js +88 -0
- package/src/components/side-panel/layer-panel/dimension-scale-selector.js +48 -0
- package/src/components/side-panel/layer-panel/layer-aggregation-resolution.js +13 -0
- package/src/components/side-panel/layer-panel/layer-column-config.js +113 -0
- package/src/components/side-panel/layer-panel/layer-config-group.js +237 -0
- package/src/components/side-panel/layer-panel/layer-configurator.js +1317 -0
- package/src/components/side-panel/layer-panel/layer-panel-header.js +236 -0
- package/src/components/side-panel/layer-panel/layer-panel.js +171 -0
- package/src/components/side-panel/layer-panel/layer-type-dropdown-list.js +105 -0
- package/src/components/side-panel/layer-panel/layer-type-list-item.js +83 -0
- package/src/components/side-panel/layer-panel/layer-type-selector.js +89 -0
- package/src/components/side-panel/layer-panel/layer-visibility-by-zoom.js +123 -0
- package/src/components/side-panel/layer-panel/single-color-palette.js +98 -0
- package/src/components/side-panel/layer-panel/text-label-panel.js +179 -0
- package/src/components/side-panel/layer-panel/vis-config-by-field-selector.js +163 -0
- package/src/components/side-panel/layer-panel/vis-config-slider.js +82 -0
- package/src/components/side-panel/layer-panel/vis-config-switch.js +87 -0
- package/src/components/side-panel/map-manager.js +114 -0
- package/src/components/side-panel/map-style-panel/map-layer-selector.js +128 -0
- package/src/components/side-panel/map-style-panel/map-style-selector.js +111 -0
- package/src/components/side-panel/panel-dropdown.js +53 -0
- package/src/components/side-panel/panel-header-action.js +106 -0
- package/src/components/side-panel/panel-header.js +321 -0
- package/src/components/side-panel/panel-tab.js +62 -0
- package/src/components/side-panel/panel-title.js +32 -0
- package/src/components/side-panel/panel-toggle.js +70 -0
- package/src/components/side-panel/side-bar.js +136 -0
- package/src/components/side-panel.d.ts +33 -0
- package/src/components/side-panel.js +253 -0
- package/src/connect/keplergl-connect.js +47 -0
- package/src/connect/with-local-selector.d.ts +11 -0
- package/src/connect/with-local-selector.js +67 -0
- package/src/constants/action-types.d.ts +135 -0
- package/src/constants/action-types.js +184 -0
- package/src/constants/color-palette.js +553 -0
- package/src/constants/color-ranges.js +63 -0
- package/src/constants/custom-color-ranges.js +551 -0
- package/src/constants/default-settings.js +991 -0
- package/src/constants/index.js +80 -0
- package/src/constants/keyevent.js +36 -0
- package/src/constants/tooltip.js +198 -0
- package/src/constants/user-feedbacks.js +32 -0
- package/src/constants/user-guides.js +32 -0
- package/src/deckgl-layers/3d-building-layer/3d-building-layer.js +56 -0
- package/src/deckgl-layers/3d-building-layer/3d-building-utils.js +192 -0
- package/src/deckgl-layers/cluster-layer/cluster-layer.js +255 -0
- package/src/deckgl-layers/column-layer/enhanced-column-layer.js +63 -0
- package/src/deckgl-layers/grid-layer/enhanced-cpu-grid-layer.js +70 -0
- package/src/deckgl-layers/hexagon-layer/enhanced-hexagon-layer.js +70 -0
- package/src/deckgl-layers/layer-utils/cluster-utils.js +76 -0
- package/src/deckgl-layers/layer-utils/cpu-aggregator.js +583 -0
- package/src/deckgl-layers/layer-utils/shader-utils.js +41 -0
- package/src/deckgl-layers/line-layer/line-layer.js +122 -0
- package/src/deckgl-layers/svg-icon-layer/scatterplot-icon-layer.js +57 -0
- package/src/deckgl-layers/svg-icon-layer/svg-icon-layer.js +85 -0
- package/src/index.js +52 -0
- package/src/layers/aggregation-layer.js +356 -0
- package/src/layers/arc-layer/arc-layer-icon.js +67 -0
- package/src/layers/arc-layer/arc-layer.js +221 -0
- package/src/layers/base-layer.js +1439 -0
- package/src/layers/cluster-layer/cluster-layer-icon.js +71 -0
- package/src/layers/cluster-layer/cluster-layer.js +125 -0
- package/src/layers/default-layer-icon.js +50 -0
- package/src/layers/geojson-layer/geojson-layer-icon.js +68 -0
- package/src/layers/geojson-layer/geojson-layer.js +344 -0
- package/src/layers/geojson-layer/geojson-utils.js +179 -0
- package/src/layers/grid-layer/grid-layer-icon.js +53 -0
- package/src/layers/grid-layer/grid-layer.js +95 -0
- package/src/layers/grid-layer/grid-utils.js +71 -0
- package/src/layers/h3-hexagon-layer/h3-hexagon-layer-icon.js +48 -0
- package/src/layers/h3-hexagon-layer/h3-hexagon-layer.js +264 -0
- package/src/layers/h3-hexagon-layer/h3-utils.js +65 -0
- package/src/layers/heatmap-layer/heatmap-layer-icon.js +64 -0
- package/src/layers/heatmap-layer/heatmap-layer.js +226 -0
- package/src/layers/hexagon-layer/hexagon-layer-icon.js +74 -0
- package/src/layers/hexagon-layer/hexagon-layer.js +95 -0
- package/src/layers/hexagon-layer/hexagon-utils.js +63 -0
- package/src/layers/icon-layer/icon-info-modal.js +155 -0
- package/src/layers/icon-layer/icon-layer-icon.js +56 -0
- package/src/layers/icon-layer/icon-layer.js +324 -0
- package/src/layers/index.d.ts +126 -0
- package/src/layers/index.js +72 -0
- package/src/layers/layer-factory.d.ts +148 -0
- package/src/layers/layer-factory.js +480 -0
- package/src/layers/layer-text-label.js +62 -0
- package/src/layers/layer-update.js +71 -0
- package/src/layers/line-layer/line-layer-icon.js +69 -0
- package/src/layers/line-layer/line-layer.js +161 -0
- package/src/layers/mapbox-utils.js +195 -0
- package/src/layers/mapboxgl-layer.js +154 -0
- package/src/layers/point-layer/point-layer-icon.js +51 -0
- package/src/layers/point-layer/point-layer.js +414 -0
- package/src/layers/s2-geometry-layer/s2-geometry-layer.js +265 -0
- package/src/layers/s2-geometry-layer/s2-layer-icon.js +47 -0
- package/src/layers/s2-geometry-layer/s2-utils.js +36 -0
- package/src/layers/scenegraph-layer/scenegraph-info-modal.js +97 -0
- package/src/layers/scenegraph-layer/scenegraph-layer-icon.js +144 -0
- package/src/layers/scenegraph-layer/scenegraph-layer.js +182 -0
- package/src/layers/trip-layer/trip-info-modal.js +82 -0
- package/src/layers/trip-layer/trip-layer-icon.js +62 -0
- package/src/layers/trip-layer/trip-layer.js +295 -0
- package/src/layers/trip-layer/trip-utils.js +169 -0
- package/src/layers/types.js +37 -0
- package/src/localization/en.js +501 -0
- package/src/localization/formatted-message.js +33 -0
- package/src/localization/index.js +32 -0
- package/src/localization/locales.js +46 -0
- package/src/middleware/index.js +34 -0
- package/src/processors/data-processor.d.ts +57 -0
- package/src/processors/data-processor.js +684 -0
- package/src/processors/file-handler.d.ts +46 -0
- package/src/processors/file-handler.js +220 -0
- package/src/processors/index.js +44 -0
- package/src/reducers/combined-updaters.d.ts +26 -0
- package/src/reducers/combined-updaters.js +198 -0
- package/src/reducers/composer-helpers.d.ts +32 -0
- package/src/reducers/composer-helpers.js +70 -0
- package/src/reducers/composers.js +33 -0
- package/src/reducers/core.d.ts +25 -0
- package/src/reducers/core.js +97 -0
- package/src/reducers/index.d.ts +118 -0
- package/src/reducers/index.js +53 -0
- package/src/reducers/map-state-updaters.d.ts +64 -0
- package/src/reducers/map-state-updaters.js +224 -0
- package/src/reducers/map-state.js +47 -0
- package/src/reducers/map-style-updaters.d.ts +76 -0
- package/src/reducers/map-style-updaters.js +541 -0
- package/src/reducers/map-style.js +53 -0
- package/src/reducers/provider-state-updaters.d.ts +88 -0
- package/src/reducers/provider-state-updaters.js +428 -0
- package/src/reducers/provider-state.js +53 -0
- package/src/reducers/root.js +230 -0
- package/src/reducers/types.d.ts +10 -0
- package/src/reducers/ui-state-updaters.d.ts +198 -0
- package/src/reducers/ui-state-updaters.js +766 -0
- package/src/reducers/ui-state.js +73 -0
- package/src/reducers/vis-state-merger.d.ts +78 -0
- package/src/reducers/vis-state-merger.js +545 -0
- package/src/reducers/vis-state-selectors.js +35 -0
- package/src/reducers/vis-state-updaters.d.ts +534 -0
- package/src/reducers/vis-state-updaters.js +2137 -0
- package/src/reducers/vis-state.js +155 -0
- package/src/schemas/dataset-schema.js +141 -0
- package/src/schemas/index.d.ts +24 -0
- package/src/schemas/index.js +42 -0
- package/src/schemas/map-state-schema.js +52 -0
- package/src/schemas/map-style-schema.js +95 -0
- package/src/schemas/schema-manager.d.ts +229 -0
- package/src/schemas/schema-manager.js +228 -0
- package/src/schemas/schema-utils.js +54 -0
- package/src/schemas/schema.d.ts +47 -0
- package/src/schemas/schema.js +90 -0
- package/src/schemas/versions.d.ts +23 -0
- package/src/schemas/versions.js +28 -0
- package/src/schemas/vis-state-schema.js +731 -0
- package/src/styles/base.js +1620 -0
- package/src/styles/index.js +22 -0
- package/src/styles/media-breakpoints.js +47 -0
- package/src/tasks/tasks.js +92 -0
- package/src/templates/export-map-html.js +262 -0
- package/src/typedefs/README.md +3 -0
- package/src/typedefs/deck.gl__core.d.ts +64 -0
- package/src/typedefs/deck.gl__mesh-layers.d.ts +33 -0
- package/src/utils/aggregate-utils.js +71 -0
- package/src/utils/color-utils.js +106 -0
- package/src/utils/data-scale-utils.d.ts +26 -0
- package/src/utils/data-scale-utils.js +61 -0
- package/src/utils/data-utils.d.ts +45 -0
- package/src/utils/data-utils.js +428 -0
- package/src/utils/dataset-utils.d.ts +10 -0
- package/src/utils/dataset-utils.js +255 -0
- package/src/utils/dom-to-image.js +533 -0
- package/src/utils/dom-utils.js +354 -0
- package/src/utils/export-utils.js +247 -0
- package/src/utils/filter-utils.d.ts +192 -0
- package/src/utils/filter-utils.js +1114 -0
- package/src/utils/gl-utils.js +42 -0
- package/src/utils/gpu-filter-utils.d.ts +28 -0
- package/src/utils/gpu-filter-utils.js +253 -0
- package/src/utils/index.d.ts +5 -0
- package/src/utils/index.js +55 -0
- package/src/utils/interaction-utils.d.ts +36 -0
- package/src/utils/interaction-utils.js +185 -0
- package/src/utils/layer-utils.d.ts +78 -0
- package/src/utils/layer-utils.js +205 -0
- package/src/utils/locale-utils.js +59 -0
- package/src/utils/map-info-utils.js +29 -0
- package/src/utils/map-style-utils/mapbox-gl-style-editor.js +201 -0
- package/src/utils/map-style-utils/mapbox-utils.js +28 -0
- package/src/utils/mapbox-utils.js +27 -0
- package/src/utils/notifications-utils.js +83 -0
- package/src/utils/observe-dimensions.d.ts +18 -0
- package/src/utils/observe-dimensions.js +115 -0
- package/src/utils/projection-utils.js +72 -0
- package/src/utils/searcher-utils.js +37 -0
- package/src/utils/split-map-utils.js +104 -0
- package/src/utils/table-utils/UPGRADE-data-container.md +38 -0
- package/src/utils/table-utils/data-container-interface.d.ts +140 -0
- package/src/utils/table-utils/data-container-utils.d.ts +43 -0
- package/src/utils/table-utils/data-container-utils.js +61 -0
- package/src/utils/table-utils/data-row.d.ts +65 -0
- package/src/utils/table-utils/data-row.js +54 -0
- package/src/utils/table-utils/index.d.ts +1 -0
- package/src/utils/table-utils/index.js +21 -0
- package/src/utils/table-utils/indexed-data-container.d.ts +26 -0
- package/src/utils/table-utils/indexed-data-container.js +152 -0
- package/src/utils/table-utils/kepler-table.d.ts +114 -0
- package/src/utils/table-utils/kepler-table.js +486 -0
- package/src/utils/table-utils/row-data-container.d.ts +30 -0
- package/src/utils/table-utils/row-data-container.js +151 -0
- package/src/utils/utils.js +202 -0
- package/styles.js +21 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
Copyright (c) 2018 Uber Technologies, Inc.
|
|
2
|
+
|
|
3
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
4
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
5
|
+
in the Software without restriction, including without limitation the rights
|
|
6
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
7
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
8
|
+
furnished to do so, subject to the following conditions:
|
|
9
|
+
|
|
10
|
+
The above copyright notice and this permission notice shall be included in
|
|
11
|
+
all copies or substantial portions of the Software.
|
|
12
|
+
|
|
13
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
14
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
15
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
16
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
17
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
18
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
19
|
+
THE SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
# CARTO fork of [Kepler.gl](http://www.kepler.gl/)
|
|
2
|
+
|
|
3
|
+
Published as [`@carto/kepler.gl`](https://www.npmjs.com/package/@carto/kepler.gl), used by the Cloud Native app.
|
|
4
|
+
|
|
5
|
+
## Development process
|
|
6
|
+
|
|
7
|
+
### Pull request
|
|
8
|
+
|
|
9
|
+
- Each development should be done in its own feature branch
|
|
10
|
+
- The pull request should be diff-ed with the `main` branch
|
|
11
|
+
- Apart from code changes, the PR should include an entry in the "Not released" section of `CHANGELOG.md` with a link to itself (if the section is not present, re-create it at the top of the file). This facilitates the release process by keeping the changelog always up-to-date with `main`.
|
|
12
|
+
|
|
13
|
+
Ex:
|
|
14
|
+
|
|
15
|
+
```md
|
|
16
|
+
## Not released
|
|
17
|
+
|
|
18
|
+
- Support for count aggregation [141](https://github.com/CartoDB/carto-kepler/pull/141)
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
- After review, merge into the `main` branch by squashing commits, to keep a clean history.
|
|
22
|
+
|
|
23
|
+
### Developing with Cloud Native
|
|
24
|
+
|
|
25
|
+
When developing locally, you can use symlinks to connect your local Cloud Native to your local CARTO Kepler:
|
|
26
|
+
|
|
27
|
+
1. in carto-kepler: `yarn link`
|
|
28
|
+
1. in cloud-native: `yarn link @carto/kepler.gl`
|
|
29
|
+
1. in carto-kepler: `yarn build:watch`
|
|
30
|
+
1. in cloud-native: `yarn start`
|
|
31
|
+
|
|
32
|
+
### Dev prerelease
|
|
33
|
+
|
|
34
|
+
To be able to test a dev version of carto-kepler from cloud-native on a remote environment (ex: dedicated environments for QA), you need to publish an alpha version of carto-kepler.
|
|
35
|
+
|
|
36
|
+
1. Switch to the branch you want to publish. You can use any unmerged dev branch, but make sure it's based on the latest `main` to avoid behavior changes outside the branch scope.
|
|
37
|
+
1. Manually change the version in `package.json`. Use this pattern: `<next-version>-alpha.<feature>`.
|
|
38
|
+
|
|
39
|
+
Ex: `0.0.47-alpha.custom-markers`
|
|
40
|
+
|
|
41
|
+
1. Build the project with `yarn build`, and ensure there is no error.
|
|
42
|
+
1. Publish the package to NPM as alpha. You need to have the proper rights on the NPM organization.
|
|
43
|
+
```
|
|
44
|
+
npm publish --tag alpha
|
|
45
|
+
```
|
|
46
|
+
1. If the package has been correctly published, then in `cloud-native` install the new version with `yarn add @carto/kepler.gl@<alpha-version-number>`, and open a PR.
|
|
47
|
+
|
|
48
|
+
If you need to change some things later in the code, you will need to republish. Repeat the process by simply adding a suffix to the version number.
|
|
49
|
+
|
|
50
|
+
Ex: `0.0.47-alpha.custom-markers.2`
|
|
51
|
+
|
|
52
|
+
## Stable release process
|
|
53
|
+
|
|
54
|
+
1. Create a branch `release-<next-version>` from the latest changes on `main`.
|
|
55
|
+
1. Modify the `CHANGELOG.md` file, by creating a new section `<next-version>` and moving contents from "Not released" to it. Keep the empty "Not released" section at the top of the file.
|
|
56
|
+
1. Increase version in `package.json` to `<next-version>`
|
|
57
|
+
1. Build the project with `yarn build`, and ensure there is no error.
|
|
58
|
+
1. Commit the changes (`git commit -am "release <next-version>"`), push, open a PR, ask for review and merge.
|
|
59
|
+
1. Finally change to the `main` branch and publish to NPM
|
|
60
|
+
|
|
61
|
+
```
|
|
62
|
+
npm publish --access public
|
|
63
|
+
```
|
package/actions.js
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
// Copyright (c) 2022 Uber Technologies, Inc.
|
|
2
|
+
//
|
|
3
|
+
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
4
|
+
// of this software and associated documentation files (the "Software"), to deal
|
|
5
|
+
// in the Software without restriction, including without limitation the rights
|
|
6
|
+
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
7
|
+
// copies of the Software, and to permit persons to whom the Software is
|
|
8
|
+
// furnished to do so, subject to the following conditions:
|
|
9
|
+
//
|
|
10
|
+
// The above copyright notice and this permission notice shall be included in
|
|
11
|
+
// all copies or substantial portions of the Software.
|
|
12
|
+
//
|
|
13
|
+
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
14
|
+
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
15
|
+
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
16
|
+
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
17
|
+
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
18
|
+
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
19
|
+
// THE SOFTWARE.
|
|
20
|
+
|
|
21
|
+
module.exports = require('./dist/actions');
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
// Copyright (c) 2022 Uber Technologies, Inc.
|
|
2
|
+
//
|
|
3
|
+
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
4
|
+
// of this software and associated documentation files (the "Software"), to deal
|
|
5
|
+
// in the Software without restriction, including without limitation the rights
|
|
6
|
+
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
7
|
+
// copies of the Software, and to permit persons to whom the Software is
|
|
8
|
+
// furnished to do so, subject to the following conditions:
|
|
9
|
+
//
|
|
10
|
+
// The above copyright notice and this permission notice shall be included in
|
|
11
|
+
// all copies or substantial portions of the Software.
|
|
12
|
+
//
|
|
13
|
+
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
14
|
+
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
15
|
+
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
16
|
+
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
17
|
+
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
18
|
+
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
19
|
+
// THE SOFTWARE.
|
|
20
|
+
|
|
21
|
+
module.exports = require('./dist/cloud-providers');
|
package/components.js
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
// Copyright (c) 2022 Uber Technologies, Inc.
|
|
2
|
+
//
|
|
3
|
+
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
4
|
+
// of this software and associated documentation files (the "Software"), to deal
|
|
5
|
+
// in the Software without restriction, including without limitation the rights
|
|
6
|
+
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
7
|
+
// copies of the Software, and to permit persons to whom the Software is
|
|
8
|
+
// furnished to do so, subject to the following conditions:
|
|
9
|
+
//
|
|
10
|
+
// The above copyright notice and this permission notice shall be included in
|
|
11
|
+
// all copies or substantial portions of the Software.
|
|
12
|
+
//
|
|
13
|
+
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
14
|
+
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
15
|
+
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
16
|
+
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
17
|
+
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
18
|
+
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
19
|
+
// THE SOFTWARE.
|
|
20
|
+
|
|
21
|
+
module.exports = require('./dist/components');
|
package/constants.js
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
// Copyright (c) 2022 Uber Technologies, Inc.
|
|
2
|
+
//
|
|
3
|
+
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
4
|
+
// of this software and associated documentation files (the "Software"), to deal
|
|
5
|
+
// in the Software without restriction, including without limitation the rights
|
|
6
|
+
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
7
|
+
// copies of the Software, and to permit persons to whom the Software is
|
|
8
|
+
// furnished to do so, subject to the following conditions:
|
|
9
|
+
//
|
|
10
|
+
// The above copyright notice and this permission notice shall be included in
|
|
11
|
+
// all copies or substantial portions of the Software.
|
|
12
|
+
//
|
|
13
|
+
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
14
|
+
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
15
|
+
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
16
|
+
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
17
|
+
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
18
|
+
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
19
|
+
// THE SOFTWARE.
|
|
20
|
+
|
|
21
|
+
module.exports = require('./dist/constants');
|
|
@@ -0,0 +1,218 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports._updateProperty = exports.forwardTo = exports._actionFor = exports.unwrap = exports.isForwardAction = exports.wrapTo = exports.getActionForwardAddress = exports.ADDRESS_PREFIX = exports.FORWARD = void 0;
|
|
9
|
+
|
|
10
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
11
|
+
|
|
12
|
+
var _lodash = _interopRequireDefault(require("lodash.curry"));
|
|
13
|
+
|
|
14
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
|
|
15
|
+
|
|
16
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
|
|
17
|
+
|
|
18
|
+
// Copyright (c) 2022 Uber Technologies, Inc.
|
|
19
|
+
//
|
|
20
|
+
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
21
|
+
// of this software and associated documentation files (the "Software"), to deal
|
|
22
|
+
// in the Software without restriction, including without limitation the rights
|
|
23
|
+
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
24
|
+
// copies of the Software, and to permit persons to whom the Software is
|
|
25
|
+
// furnished to do so, subject to the following conditions:
|
|
26
|
+
//
|
|
27
|
+
// The above copyright notice and this permission notice shall be included in
|
|
28
|
+
// all copies or substantial portions of the Software.
|
|
29
|
+
//
|
|
30
|
+
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
31
|
+
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
32
|
+
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
33
|
+
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
34
|
+
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
35
|
+
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
36
|
+
// THE SOFTWARE.
|
|
37
|
+
var FORWARD = '@redux-forward/FORWARD';
|
|
38
|
+
exports.FORWARD = FORWARD;
|
|
39
|
+
var ADDRESS_PREFIX = '@@KG_';
|
|
40
|
+
exports.ADDRESS_PREFIX = ADDRESS_PREFIX;
|
|
41
|
+
|
|
42
|
+
var getActionForwardAddress = function getActionForwardAddress(id) {
|
|
43
|
+
return "".concat(ADDRESS_PREFIX).concat(id.toUpperCase());
|
|
44
|
+
};
|
|
45
|
+
/**
|
|
46
|
+
* Wrap an action into a forward action that only modify the state of a specific
|
|
47
|
+
* kepler.gl instance. kepler.gl reducer will look for signatures in the action to
|
|
48
|
+
* determine whether it needs to be forwarded to a specific instance reducer.
|
|
49
|
+
*
|
|
50
|
+
* wrapTo can be curried. You can create a curried action wrapper by only supply the `id` argument
|
|
51
|
+
*
|
|
52
|
+
* A forward action looks like this
|
|
53
|
+
* ```js
|
|
54
|
+
* {
|
|
55
|
+
* type: "@@kepler.gl/LAYER_CONFIG_CHANGE",
|
|
56
|
+
* payload: {
|
|
57
|
+
* type: '@@kepler.gl/LAYER_CONFIG_CHANGE',
|
|
58
|
+
* payload: {},
|
|
59
|
+
* meta: {
|
|
60
|
+
* // id of instance
|
|
61
|
+
* _id_: id
|
|
62
|
+
* // other meta
|
|
63
|
+
* }
|
|
64
|
+
* },
|
|
65
|
+
* meta: {
|
|
66
|
+
* _forward_: '@redux-forward/FORWARD',
|
|
67
|
+
* _addr_: '@@KG_id'
|
|
68
|
+
* }
|
|
69
|
+
* };
|
|
70
|
+
* ```
|
|
71
|
+
*
|
|
72
|
+
* @memberof forwardActions
|
|
73
|
+
* @param {string} id - The id to forward to
|
|
74
|
+
* @param {Object} action - the action object {type: string, payload: *}
|
|
75
|
+
* @returns {{type: string, payload: {type: string, payload: *, meta: {_id_: string}, meta: {_forward_: string, _addr_: string}}}}
|
|
76
|
+
* @public
|
|
77
|
+
* @example
|
|
78
|
+
*
|
|
79
|
+
* import {wrapTo, togglePerspective} from 'kepler.gl/actions';
|
|
80
|
+
*
|
|
81
|
+
* // This action will only dispatch to the KeplerGl instance with `id: map_1`
|
|
82
|
+
* this.props.dispatch(wrapTo('map_1', togglePerspective()));
|
|
83
|
+
*
|
|
84
|
+
* // You can also create a curried action for each instance
|
|
85
|
+
* const wrapToMap1 = wrapTo('map_1');
|
|
86
|
+
* this.props.dispatch(wrapToMap1(togglePerspective()));
|
|
87
|
+
*/
|
|
88
|
+
|
|
89
|
+
|
|
90
|
+
exports.getActionForwardAddress = getActionForwardAddress;
|
|
91
|
+
var wrapTo = (0, _lodash["default"])(function (id, action) {
|
|
92
|
+
return {
|
|
93
|
+
// keep original action.type
|
|
94
|
+
type: action.type,
|
|
95
|
+
// actual action
|
|
96
|
+
payload: _objectSpread(_objectSpread({}, action), {}, {
|
|
97
|
+
meta: _objectSpread(_objectSpread({}, action.meta), {}, {
|
|
98
|
+
_id_: id
|
|
99
|
+
})
|
|
100
|
+
}),
|
|
101
|
+
// add forward signature to meta
|
|
102
|
+
meta: _objectSpread(_objectSpread({}, action.meta || {}), {}, {
|
|
103
|
+
_forward_: FORWARD,
|
|
104
|
+
_addr_: getActionForwardAddress(id)
|
|
105
|
+
})
|
|
106
|
+
};
|
|
107
|
+
});
|
|
108
|
+
/**
|
|
109
|
+
* Whether an action is a forward action
|
|
110
|
+
* @memberof forwardActions
|
|
111
|
+
* @param {Object} action - the action object
|
|
112
|
+
* @returns {boolean} boolean - whether the action is a forward action
|
|
113
|
+
* @public
|
|
114
|
+
*/
|
|
115
|
+
|
|
116
|
+
exports.wrapTo = wrapTo;
|
|
117
|
+
|
|
118
|
+
var isForwardAction = function isForwardAction(action) {
|
|
119
|
+
return Boolean(action && action.meta && action.meta._forward_ === FORWARD);
|
|
120
|
+
};
|
|
121
|
+
/**
|
|
122
|
+
* Unwrap an action
|
|
123
|
+
* @memberof forwardActions
|
|
124
|
+
* @param {Object} action - the action object
|
|
125
|
+
* @returns {Object} - unwrapped action
|
|
126
|
+
* @public
|
|
127
|
+
*/
|
|
128
|
+
|
|
129
|
+
|
|
130
|
+
exports.isForwardAction = isForwardAction;
|
|
131
|
+
|
|
132
|
+
var unwrap = function unwrap(action) {
|
|
133
|
+
return isForwardAction(action) ? unwrap(action.payload) : action;
|
|
134
|
+
};
|
|
135
|
+
/**
|
|
136
|
+
* Given an id, returns the action for that id.
|
|
137
|
+
* If the action is not a forward action, return the action
|
|
138
|
+
* @memberof forwardActions
|
|
139
|
+
* @param {String} id
|
|
140
|
+
* @param {Object} action
|
|
141
|
+
* @private
|
|
142
|
+
*/
|
|
143
|
+
|
|
144
|
+
|
|
145
|
+
exports.unwrap = unwrap;
|
|
146
|
+
|
|
147
|
+
var _actionFor = function _actionFor(id, action) {
|
|
148
|
+
return isForwardAction(action) ? action.meta._addr_ === getActionForwardAddress(id) ? action.payload : {} : action;
|
|
149
|
+
};
|
|
150
|
+
/**
|
|
151
|
+
* Returns an action dispatcher that wraps and forwards the actions to a specific instance
|
|
152
|
+
* @memberof forwardActions
|
|
153
|
+
* @param {string} id - instance id
|
|
154
|
+
* @param {Function} dispatch - action dispatcher
|
|
155
|
+
* @public
|
|
156
|
+
* @example
|
|
157
|
+
*
|
|
158
|
+
* // action and forward dispatcher
|
|
159
|
+
* import {toggleSplitMap, forwardTo} from 'kepler.gl/actions';
|
|
160
|
+
* import {connect} from 'react-redux';
|
|
161
|
+
*
|
|
162
|
+
* const MapContainer = props => (
|
|
163
|
+
* <div>
|
|
164
|
+
* <button onClick={() => props.keplerGlDispatch(toggleSplitMap())}/>
|
|
165
|
+
* </div>
|
|
166
|
+
* )
|
|
167
|
+
*
|
|
168
|
+
* const mapDispatchToProps = (dispatch, props) => ({
|
|
169
|
+
* dispatch,
|
|
170
|
+
* keplerGlDispatch: forwardTo(‘foo’, dispatch)
|
|
171
|
+
* });
|
|
172
|
+
*
|
|
173
|
+
* export default connect(
|
|
174
|
+
* state => state,
|
|
175
|
+
* mapDispatchToProps
|
|
176
|
+
* )(MapContainer);
|
|
177
|
+
*/
|
|
178
|
+
|
|
179
|
+
|
|
180
|
+
exports._actionFor = _actionFor;
|
|
181
|
+
|
|
182
|
+
var forwardTo = function forwardTo(id, dispatch) {
|
|
183
|
+
return function (action) {
|
|
184
|
+
return dispatch(wrapTo(id, action));
|
|
185
|
+
};
|
|
186
|
+
};
|
|
187
|
+
/**
|
|
188
|
+
* Update the state of a kepler.gl instance
|
|
189
|
+
* @memberof forwardActions
|
|
190
|
+
* @param {Object} state
|
|
191
|
+
* @param {string} id
|
|
192
|
+
* @param {Object} nextState
|
|
193
|
+
* @private
|
|
194
|
+
*/
|
|
195
|
+
|
|
196
|
+
|
|
197
|
+
exports.forwardTo = forwardTo;
|
|
198
|
+
|
|
199
|
+
var _updateProperty = function _updateProperty(state, id, nextState) {
|
|
200
|
+
return state[id] === nextState ? state : _objectSpread(_objectSpread({}, state), {}, (0, _defineProperty2["default"])({}, id, nextState));
|
|
201
|
+
};
|
|
202
|
+
/**
|
|
203
|
+
* This declaration is needed to group actions in docs
|
|
204
|
+
*/
|
|
205
|
+
|
|
206
|
+
/**
|
|
207
|
+
* A set of helpers to forward dispatch actions to a specific instance reducer
|
|
208
|
+
* @public
|
|
209
|
+
*/
|
|
210
|
+
|
|
211
|
+
/* eslint-disable no-unused-vars */
|
|
212
|
+
// @ts-ignore
|
|
213
|
+
|
|
214
|
+
|
|
215
|
+
exports._updateProperty = _updateProperty;
|
|
216
|
+
var forwardActions = null;
|
|
217
|
+
/* eslint-enable no-unused-vars */
|
|
218
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hY3Rpb25zL2FjdGlvbi13cmFwcGVyLmpzIl0sIm5hbWVzIjpbIkZPUldBUkQiLCJBRERSRVNTX1BSRUZJWCIsImdldEFjdGlvbkZvcndhcmRBZGRyZXNzIiwiaWQiLCJ0b1VwcGVyQ2FzZSIsIndyYXBUbyIsImFjdGlvbiIsInR5cGUiLCJwYXlsb2FkIiwibWV0YSIsIl9pZF8iLCJfZm9yd2FyZF8iLCJfYWRkcl8iLCJpc0ZvcndhcmRBY3Rpb24iLCJCb29sZWFuIiwidW53cmFwIiwiX2FjdGlvbkZvciIsImZvcndhcmRUbyIsImRpc3BhdGNoIiwiX3VwZGF0ZVByb3BlcnR5Iiwic3RhdGUiLCJuZXh0U3RhdGUiLCJmb3J3YXJkQWN0aW9ucyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUF1QkE7Ozs7OztBQXZCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVPLElBQU1BLE9BQU8sR0FBRyx3QkFBaEI7O0FBQ0EsSUFBTUMsY0FBYyxHQUFHLE9BQXZCOzs7QUFJQSxJQUFNQyx1QkFBdUIsR0FBRyxTQUExQkEsdUJBQTBCLENBQUFDLEVBQUU7QUFBQSxtQkFBT0YsY0FBUCxTQUF3QkUsRUFBRSxDQUFDQyxXQUFILEVBQXhCO0FBQUEsQ0FBbEM7QUFFUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7OztBQUNPLElBQU1DLE1BQU0sR0FBRyx3QkFBTSxVQUFDRixFQUFELEVBQUtHLE1BQUw7QUFBQSxTQUFpQjtBQUMzQztBQUNBQyxJQUFBQSxJQUFJLEVBQUVELE1BQU0sQ0FBQ0MsSUFGOEI7QUFJM0M7QUFDQUMsSUFBQUEsT0FBTyxrQ0FDRkYsTUFERTtBQUVMRyxNQUFBQSxJQUFJLGtDQUNDSCxNQUFNLENBQUNHLElBRFI7QUFFRkMsUUFBQUEsSUFBSSxFQUFFUDtBQUZKO0FBRkMsTUFMb0M7QUFhM0M7QUFDQU0sSUFBQUEsSUFBSSxrQ0FDRUgsTUFBTSxDQUFDRyxJQUFQLElBQWUsRUFEakI7QUFFRkUsTUFBQUEsU0FBUyxFQUFFWCxPQUZUO0FBR0ZZLE1BQUFBLE1BQU0sRUFBRVYsdUJBQXVCLENBQUNDLEVBQUQ7QUFIN0I7QUFkdUMsR0FBakI7QUFBQSxDQUFOLENBQWY7QUFxQlA7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7QUFDTyxJQUFNVSxlQUFlLEdBQUcsU0FBbEJBLGVBQWtCLENBQUFQLE1BQU0sRUFBSTtBQUN2QyxTQUFPUSxPQUFPLENBQUNSLE1BQU0sSUFBSUEsTUFBTSxDQUFDRyxJQUFqQixJQUF5QkgsTUFBTSxDQUFDRyxJQUFQLENBQVlFLFNBQVosS0FBMEJYLE9BQXBELENBQWQ7QUFDRCxDQUZNO0FBSVA7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7O0FBQ08sSUFBTWUsTUFBTSxHQUFHLFNBQVRBLE1BQVMsQ0FBQVQsTUFBTTtBQUFBLFNBQUtPLGVBQWUsQ0FBQ1AsTUFBRCxDQUFmLEdBQTBCUyxNQUFNLENBQUNULE1BQU0sQ0FBQ0UsT0FBUixDQUFoQyxHQUFtREYsTUFBeEQ7QUFBQSxDQUFyQjtBQUVQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7O0FBQ08sSUFBTVUsVUFBVSxHQUFHLFNBQWJBLFVBQWEsQ0FBQ2IsRUFBRCxFQUFLRyxNQUFMO0FBQUEsU0FDeEJPLGVBQWUsQ0FBQ1AsTUFBRCxDQUFmLEdBQ0lBLE1BQU0sQ0FBQ0csSUFBUCxDQUFZRyxNQUFaLEtBQXVCVix1QkFBdUIsQ0FBQ0MsRUFBRCxDQUE5QyxHQUNFRyxNQUFNLENBQUNFLE9BRFQsR0FFRSxFQUhOLEdBSUlGLE1BTG9CO0FBQUEsQ0FBbkI7QUFPUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7QUFDTyxJQUFNVyxTQUFTLEdBQUcsU0FBWkEsU0FBWSxDQUFDZCxFQUFELEVBQUtlLFFBQUw7QUFBQSxTQUFrQixVQUFBWixNQUFNO0FBQUEsV0FBSVksUUFBUSxDQUFDYixNQUFNLENBQUNGLEVBQUQsRUFBS0csTUFBTCxDQUFQLENBQVo7QUFBQSxHQUF4QjtBQUFBLENBQWxCO0FBRVA7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7QUFDTyxJQUFNYSxlQUFlLEdBQUcsU0FBbEJBLGVBQWtCLENBQUNDLEtBQUQsRUFBUWpCLEVBQVIsRUFBWWtCLFNBQVo7QUFBQSxTQUM3QkQsS0FBSyxDQUFDakIsRUFBRCxDQUFMLEtBQWNrQixTQUFkLEdBQ0lELEtBREosbUNBR1NBLEtBSFQsNENBSU9qQixFQUpQLEVBSVlrQixTQUpaLEVBRDZCO0FBQUEsQ0FBeEI7QUFRUDtBQUNBO0FBQ0E7O0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBQ0E7QUFDQTs7OztBQUNBLElBQU1DLGNBQWMsR0FBRyxJQUF2QjtBQUNBIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IChjKSAyMDIyIFViZXIgVGVjaG5vbG9naWVzLCBJbmMuXG4vL1xuLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weVxuLy8gb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbFxuLy8gaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0c1xuLy8gdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbFxuLy8gY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzXG4vLyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuLy9cbi8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluXG4vLyBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbi8vXG4vLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4vLyBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbi8vIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRVxuLy8gQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuLy8gTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSxcbi8vIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU5cbi8vIFRIRSBTT0ZUV0FSRS5cblxuZXhwb3J0IGNvbnN0IEZPUldBUkQgPSAnQHJlZHV4LWZvcndhcmQvRk9SV0FSRCc7XG5leHBvcnQgY29uc3QgQUREUkVTU19QUkVGSVggPSAnQEBLR18nO1xuXG5pbXBvcnQgY3VycnkgZnJvbSAnbG9kYXNoLmN1cnJ5JztcblxuZXhwb3J0IGNvbnN0IGdldEFjdGlvbkZvcndhcmRBZGRyZXNzID0gaWQgPT4gYCR7QUREUkVTU19QUkVGSVh9JHtpZC50b1VwcGVyQ2FzZSgpfWA7XG5cbi8qKlxuICogV3JhcCBhbiBhY3Rpb24gaW50byBhIGZvcndhcmQgYWN0aW9uIHRoYXQgb25seSBtb2RpZnkgdGhlIHN0YXRlIG9mIGEgc3BlY2lmaWNcbiAqIGtlcGxlci5nbCBpbnN0YW5jZS4ga2VwbGVyLmdsIHJlZHVjZXIgd2lsbCBsb29rIGZvciBzaWduYXR1cmVzIGluIHRoZSBhY3Rpb24gdG9cbiAqIGRldGVybWluZSB3aGV0aGVyIGl0IG5lZWRzIHRvIGJlIGZvcndhcmRlZCB0byBhIHNwZWNpZmljIGluc3RhbmNlIHJlZHVjZXIuXG4gKlxuICogd3JhcFRvIGNhbiBiZSBjdXJyaWVkLiBZb3UgY2FuIGNyZWF0ZSBhIGN1cnJpZWQgYWN0aW9uIHdyYXBwZXIgYnkgb25seSBzdXBwbHkgdGhlIGBpZGAgYXJndW1lbnRcbiAqXG4gKiBBIGZvcndhcmQgYWN0aW9uIGxvb2tzIGxpa2UgdGhpc1xuICogYGBganNcbiAqICB7XG4gKiAgICB0eXBlOiBcIkBAa2VwbGVyLmdsL0xBWUVSX0NPTkZJR19DSEFOR0VcIixcbiAqICAgIHBheWxvYWQ6IHtcbiAqICAgICAgdHlwZTogJ0BAa2VwbGVyLmdsL0xBWUVSX0NPTkZJR19DSEFOR0UnLFxuICogICAgICBwYXlsb2FkOiB7fSxcbiAqICAgICAgbWV0YToge1xuICogICAgICAgLy8gaWQgb2YgaW5zdGFuY2VcbiAqICAgICAgICBfaWRfOiBpZFxuICogICAgICAgLy8gb3RoZXIgbWV0YVxuICogICAgICB9XG4gKiAgICB9LFxuICogICAgbWV0YToge1xuICogICAgICBfZm9yd2FyZF86ICdAcmVkdXgtZm9yd2FyZC9GT1JXQVJEJyxcbiAqICAgICAgX2FkZHJfOiAnQEBLR19pZCdcbiAqICAgIH1cbiAqICB9O1xuICogYGBgXG4gKlxuICogQG1lbWJlcm9mIGZvcndhcmRBY3Rpb25zXG4gKiBAcGFyYW0ge3N0cmluZ30gaWQgLSBUaGUgaWQgdG8gZm9yd2FyZCB0b1xuICogQHBhcmFtIHtPYmplY3R9IGFjdGlvbiAtIHRoZSBhY3Rpb24gb2JqZWN0IHt0eXBlOiBzdHJpbmcsIHBheWxvYWQ6ICp9XG4gKiBAcmV0dXJucyB7e3R5cGU6IHN0cmluZywgcGF5bG9hZDoge3R5cGU6IHN0cmluZywgcGF5bG9hZDogKiwgbWV0YToge19pZF86IHN0cmluZ30sIG1ldGE6IHtfZm9yd2FyZF86IHN0cmluZywgX2FkZHJfOiBzdHJpbmd9fX19XG4gKiBAcHVibGljXG4gKiBAZXhhbXBsZVxuICpcbiAqIGltcG9ydCB7d3JhcFRvLCB0b2dnbGVQZXJzcGVjdGl2ZX0gZnJvbSAna2VwbGVyLmdsL2FjdGlvbnMnO1xuICpcbiAqIC8vIFRoaXMgYWN0aW9uIHdpbGwgb25seSBkaXNwYXRjaCB0byB0aGUgS2VwbGVyR2wgaW5zdGFuY2Ugd2l0aCBgaWQ6IG1hcF8xYFxuICogdGhpcy5wcm9wcy5kaXNwYXRjaCh3cmFwVG8oJ21hcF8xJywgdG9nZ2xlUGVyc3BlY3RpdmUoKSkpO1xuICpcbiAqIC8vIFlvdSBjYW4gYWxzbyBjcmVhdGUgYSBjdXJyaWVkIGFjdGlvbiBmb3IgZWFjaCBpbnN0YW5jZVxuICogY29uc3Qgd3JhcFRvTWFwMSA9IHdyYXBUbygnbWFwXzEnKTtcbiAqIHRoaXMucHJvcHMuZGlzcGF0Y2god3JhcFRvTWFwMSh0b2dnbGVQZXJzcGVjdGl2ZSgpKSk7XG4gKi9cbmV4cG9ydCBjb25zdCB3cmFwVG8gPSBjdXJyeSgoaWQsIGFjdGlvbikgPT4gKHtcbiAgLy8ga2VlcCBvcmlnaW5hbCBhY3Rpb24udHlwZVxuICB0eXBlOiBhY3Rpb24udHlwZSxcblxuICAvLyBhY3R1YWwgYWN0aW9uXG4gIHBheWxvYWQ6IHtcbiAgICAuLi5hY3Rpb24sXG4gICAgbWV0YToge1xuICAgICAgLi4uYWN0aW9uLm1ldGEsXG4gICAgICBfaWRfOiBpZFxuICAgIH1cbiAgfSxcblxuICAvLyBhZGQgZm9yd2FyZCBzaWduYXR1cmUgdG8gbWV0YVxuICBtZXRhOiB7XG4gICAgLi4uKGFjdGlvbi5tZXRhIHx8IHt9KSxcbiAgICBfZm9yd2FyZF86IEZPUldBUkQsXG4gICAgX2FkZHJfOiBnZXRBY3Rpb25Gb3J3YXJkQWRkcmVzcyhpZClcbiAgfVxufSkpO1xuXG4vKipcbiAqIFdoZXRoZXIgYW4gYWN0aW9uIGlzIGEgZm9yd2FyZCBhY3Rpb25cbiAqIEBtZW1iZXJvZiBmb3J3YXJkQWN0aW9uc1xuICogQHBhcmFtIHtPYmplY3R9IGFjdGlvbiAtIHRoZSBhY3Rpb24gb2JqZWN0XG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gYm9vbGVhbiAtIHdoZXRoZXIgdGhlIGFjdGlvbiBpcyBhIGZvcndhcmQgYWN0aW9uXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBpc0ZvcndhcmRBY3Rpb24gPSBhY3Rpb24gPT4ge1xuICByZXR1cm4gQm9vbGVhbihhY3Rpb24gJiYgYWN0aW9uLm1ldGEgJiYgYWN0aW9uLm1ldGEuX2ZvcndhcmRfID09PSBGT1JXQVJEKTtcbn07XG5cbi8qKlxuICogVW53cmFwIGFuIGFjdGlvblxuICogQG1lbWJlcm9mIGZvcndhcmRBY3Rpb25zXG4gKiBAcGFyYW0ge09iamVjdH0gYWN0aW9uIC0gdGhlIGFjdGlvbiBvYmplY3RcbiAqIEByZXR1cm5zIHtPYmplY3R9IC0gdW53cmFwcGVkIGFjdGlvblxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3QgdW53cmFwID0gYWN0aW9uID0+IChpc0ZvcndhcmRBY3Rpb24oYWN0aW9uKSA/IHVud3JhcChhY3Rpb24ucGF5bG9hZCkgOiBhY3Rpb24pO1xuXG4vKipcbiAqIEdpdmVuIGFuIGlkLCByZXR1cm5zIHRoZSBhY3Rpb24gZm9yIHRoYXQgaWQuXG4gKiBJZiB0aGUgYWN0aW9uIGlzIG5vdCBhIGZvcndhcmQgYWN0aW9uLCByZXR1cm4gdGhlIGFjdGlvblxuICogQG1lbWJlcm9mIGZvcndhcmRBY3Rpb25zXG4gKiBAcGFyYW0ge1N0cmluZ30gaWRcbiAqIEBwYXJhbSB7T2JqZWN0fSBhY3Rpb25cbiAqIEBwcml2YXRlXG4gKi9cbmV4cG9ydCBjb25zdCBfYWN0aW9uRm9yID0gKGlkLCBhY3Rpb24pID0+XG4gIGlzRm9yd2FyZEFjdGlvbihhY3Rpb24pXG4gICAgPyBhY3Rpb24ubWV0YS5fYWRkcl8gPT09IGdldEFjdGlvbkZvcndhcmRBZGRyZXNzKGlkKVxuICAgICAgPyBhY3Rpb24ucGF5bG9hZFxuICAgICAgOiB7fVxuICAgIDogYWN0aW9uO1xuXG4vKipcbiAqIFJldHVybnMgYW4gYWN0aW9uIGRpc3BhdGNoZXIgdGhhdCB3cmFwcyBhbmQgZm9yd2FyZHMgdGhlIGFjdGlvbnMgdG8gYSBzcGVjaWZpYyBpbnN0YW5jZVxuICogQG1lbWJlcm9mIGZvcndhcmRBY3Rpb25zXG4gKiBAcGFyYW0ge3N0cmluZ30gaWQgLSBpbnN0YW5jZSBpZFxuICogQHBhcmFtIHtGdW5jdGlvbn0gZGlzcGF0Y2ggLSBhY3Rpb24gZGlzcGF0Y2hlclxuICogQHB1YmxpY1xuICogQGV4YW1wbGVcbiAqXG4gKiAvLyBhY3Rpb24gYW5kIGZvcndhcmQgZGlzcGF0Y2hlclxuICogaW1wb3J0IHt0b2dnbGVTcGxpdE1hcCwgZm9yd2FyZFRvfSBmcm9tICdrZXBsZXIuZ2wvYWN0aW9ucyc7XG4gKiBpbXBvcnQge2Nvbm5lY3R9IGZyb20gJ3JlYWN0LXJlZHV4JztcbiAqXG4gKiBjb25zdCBNYXBDb250YWluZXIgPSBwcm9wcyA9PiAoXG4gKiAgPGRpdj5cbiAqICAgPGJ1dHRvbiBvbkNsaWNrPXsoKSA9PiBwcm9wcy5rZXBsZXJHbERpc3BhdGNoKHRvZ2dsZVNwbGl0TWFwKCkpfS8+XG4gKiAgPC9kaXY+XG4gKiApXG4gKlxuICogY29uc3QgbWFwRGlzcGF0Y2hUb1Byb3BzID0gKGRpc3BhdGNoLCBwcm9wcykgPT4gKHtcbiAqICBkaXNwYXRjaCxcbiAqICBrZXBsZXJHbERpc3BhdGNoOiBmb3J3YXJkVG8o4oCYZm9v4oCZLCBkaXNwYXRjaClcbiAqIH0pO1xuICpcbiAqIGV4cG9ydCBkZWZhdWx0IGNvbm5lY3QoXG4gKiAgc3RhdGUgPT4gc3RhdGUsXG4gKiAgbWFwRGlzcGF0Y2hUb1Byb3BzXG4gKiApKE1hcENvbnRhaW5lcik7XG4gKi9cbmV4cG9ydCBjb25zdCBmb3J3YXJkVG8gPSAoaWQsIGRpc3BhdGNoKSA9PiBhY3Rpb24gPT4gZGlzcGF0Y2god3JhcFRvKGlkLCBhY3Rpb24pKTtcblxuLyoqXG4gKiBVcGRhdGUgdGhlIHN0YXRlIG9mIGEga2VwbGVyLmdsIGluc3RhbmNlXG4gKiBAbWVtYmVyb2YgZm9yd2FyZEFjdGlvbnNcbiAqIEBwYXJhbSB7T2JqZWN0fSBzdGF0ZVxuICogQHBhcmFtIHtzdHJpbmd9IGlkXG4gKiBAcGFyYW0ge09iamVjdH0gbmV4dFN0YXRlXG4gKiBAcHJpdmF0ZVxuICovXG5leHBvcnQgY29uc3QgX3VwZGF0ZVByb3BlcnR5ID0gKHN0YXRlLCBpZCwgbmV4dFN0YXRlKSA9PlxuICBzdGF0ZVtpZF0gPT09IG5leHRTdGF0ZVxuICAgID8gc3RhdGVcbiAgICA6IHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIFtpZF06IG5leHRTdGF0ZVxuICAgICAgfTtcblxuLyoqXG4gKiBUaGlzIGRlY2xhcmF0aW9uIGlzIG5lZWRlZCB0byBncm91cCBhY3Rpb25zIGluIGRvY3NcbiAqL1xuLyoqXG4gKiBBIHNldCBvZiBoZWxwZXJzIHRvIGZvcndhcmQgZGlzcGF0Y2ggYWN0aW9ucyB0byBhIHNwZWNpZmljIGluc3RhbmNlIHJlZHVjZXJcbiAqIEBwdWJsaWNcbiAqL1xuLyogZXNsaW50LWRpc2FibGUgbm8tdW51c2VkLXZhcnMgKi9cbi8vIEB0cy1pZ25vcmVcbmNvbnN0IGZvcndhcmRBY3Rpb25zID0gbnVsbDtcbi8qIGVzbGludC1lbmFibGUgbm8tdW51c2VkLXZhcnMgKi9cbiJdfQ==
|
|
@@ -0,0 +1,198 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports.keplerGlInit = exports.receiveMapConfig = exports.resetMapConfig = exports.addDataToMap = void 0;
|
|
9
|
+
|
|
10
|
+
var _actionTypes = _interopRequireDefault(require("../constants/action-types"));
|
|
11
|
+
|
|
12
|
+
var _reduxActions = require("redux-actions");
|
|
13
|
+
|
|
14
|
+
// Copyright (c) 2022 Uber Technologies, Inc.
|
|
15
|
+
//
|
|
16
|
+
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
17
|
+
// of this software and associated documentation files (the "Software"), to deal
|
|
18
|
+
// in the Software without restriction, including without limitation the rights
|
|
19
|
+
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
20
|
+
// copies of the Software, and to permit persons to whom the Software is
|
|
21
|
+
// furnished to do so, subject to the following conditions:
|
|
22
|
+
//
|
|
23
|
+
// The above copyright notice and this permission notice shall be included in
|
|
24
|
+
// all copies or substantial portions of the Software.
|
|
25
|
+
//
|
|
26
|
+
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
27
|
+
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
28
|
+
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
29
|
+
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
30
|
+
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
31
|
+
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
32
|
+
// THE SOFTWARE.
|
|
33
|
+
|
|
34
|
+
/**
|
|
35
|
+
* Add data to kepler.gl reducer, prepare map with preset configuration if config is passed.
|
|
36
|
+
* Kepler.gl provides a handy set of utils to parse data from different formats to the `data` object required in dataset. You rarely need to manually format the data obejct.
|
|
37
|
+
*
|
|
38
|
+
* Use `KeplerGlSchema.getConfigToSave` to generate a json blob of the currents instance config.
|
|
39
|
+
* The config object value will always have higher precedence than the options properties.
|
|
40
|
+
*
|
|
41
|
+
* Kepler.gl uses `dataId` in the config to match with loaded dataset. If you pass a config object, you need
|
|
42
|
+
* to match the `info.id` of your dataset to the `dataId` in each `layer`, `filter` and `interactionConfig.tooltips.fieldsToShow`
|
|
43
|
+
*
|
|
44
|
+
* @memberof main
|
|
45
|
+
* @param {Object} data
|
|
46
|
+
* @param {Array<Object>|Object} data.datasets - ***required** datasets can be a dataset or an array of datasets
|
|
47
|
+
* Each dataset object needs to have `info` and `data` property.
|
|
48
|
+
* @param {Object} data.datasets.info -info of a dataset
|
|
49
|
+
* @param {string} data.datasets.info.id - id of this dataset. If config is defined, `id` should matches the `dataId` in config.
|
|
50
|
+
* @param {string} data.datasets.info.label - A display name of this dataset
|
|
51
|
+
* @param {Object} data.datasets.data - ***required** The data object, in a tabular format with 2 properties `fields` and `rows`
|
|
52
|
+
* @param {Array<Object>} data.datasets.data.fields - ***required** Array of fields,
|
|
53
|
+
* @param {string} data.datasets.data.fields.name - ***required** Name of the field,
|
|
54
|
+
* @param {Array<Array>} data.datasets.data.rows - ***required** Array of rows, in a tabular format with `fields` and `rows`
|
|
55
|
+
*
|
|
56
|
+
* @param {Object} data.options
|
|
57
|
+
* @param {boolean} data.options.centerMap `default: true` if `centerMap` is set to `true` kepler.gl will
|
|
58
|
+
* place the map view within the data points boundaries. `options.centerMap` will override `config.mapState` if passed in.
|
|
59
|
+
* @param {boolean} data.options.readOnly `default: false` if `readOnly` is set to `true`
|
|
60
|
+
* the left setting panel will be hidden
|
|
61
|
+
* @param {boolean} data.options.keepExistingConfig whether to keep exiting map data and associated layer filter interaction config `default: false`.
|
|
62
|
+
* @param {Object} data.config this object will contain the full kepler.gl instance configuration {mapState, mapStyle, visState}
|
|
63
|
+
* @public
|
|
64
|
+
* @example
|
|
65
|
+
*
|
|
66
|
+
* // app.js
|
|
67
|
+
* import {addDataToMap} from 'kepler.gl/actions';
|
|
68
|
+
*
|
|
69
|
+
* const sampleTripData = {
|
|
70
|
+
* fields: [
|
|
71
|
+
* {name: 'tpep_pickup_datetime', format: 'YYYY-M-D H:m:s', type: 'timestamp'},
|
|
72
|
+
* {name: 'pickup_longitude', format: '', type: 'real'},
|
|
73
|
+
* {name: 'pickup_latitude', format: '', type: 'real'}
|
|
74
|
+
* ],
|
|
75
|
+
* rows: [
|
|
76
|
+
* ['2015-01-15 19:05:39 +00:00', -73.99389648, 40.75011063],
|
|
77
|
+
* ['2015-01-15 19:05:39 +00:00', -73.97642517, 40.73981094],
|
|
78
|
+
* ['2015-01-15 19:05:40 +00:00', -73.96870422, 40.75424576],
|
|
79
|
+
* ]
|
|
80
|
+
* };
|
|
81
|
+
*
|
|
82
|
+
* const sampleConfig = {
|
|
83
|
+
* visState: {
|
|
84
|
+
* filters: [
|
|
85
|
+
* {
|
|
86
|
+
* id: 'me',
|
|
87
|
+
* dataId: 'test_trip_data',
|
|
88
|
+
* name: 'tpep_pickup_datetime',
|
|
89
|
+
* type: 'timeRange',
|
|
90
|
+
* enlarged: true
|
|
91
|
+
* }
|
|
92
|
+
* ]
|
|
93
|
+
* }
|
|
94
|
+
* }
|
|
95
|
+
*
|
|
96
|
+
* this.props.dispatch(
|
|
97
|
+
* addDataToMap({
|
|
98
|
+
* datasets: {
|
|
99
|
+
* info: {
|
|
100
|
+
* label: 'Sample Taxi Trips in New York City',
|
|
101
|
+
* id: 'test_trip_data'
|
|
102
|
+
* },
|
|
103
|
+
* data: sampleTripData
|
|
104
|
+
* },
|
|
105
|
+
* options: {
|
|
106
|
+
* centerMap: true,
|
|
107
|
+
* readOnly: false,
|
|
108
|
+
* keepExistingConfig: false
|
|
109
|
+
* },
|
|
110
|
+
* info: {
|
|
111
|
+
* title: 'Taro and Blue',
|
|
112
|
+
* description: 'This is my map'
|
|
113
|
+
* },
|
|
114
|
+
* config: sampleConfig
|
|
115
|
+
* })
|
|
116
|
+
* );
|
|
117
|
+
*/
|
|
118
|
+
var addDataToMap = (0, _reduxActions.createAction)(_actionTypes["default"].ADD_DATA_TO_MAP, function (data) {
|
|
119
|
+
return data;
|
|
120
|
+
});
|
|
121
|
+
/**
|
|
122
|
+
* Reset all sub-reducers to its initial state. This can be used to clear out all configuration in the reducer.
|
|
123
|
+
* @memberof main
|
|
124
|
+
* @public
|
|
125
|
+
*/
|
|
126
|
+
|
|
127
|
+
exports.addDataToMap = addDataToMap;
|
|
128
|
+
var resetMapConfig = (0, _reduxActions.createAction)(_actionTypes["default"].RESET_MAP_CONFIG);
|
|
129
|
+
/**
|
|
130
|
+
* Pass config to kepler.gl instance, prepare the state with preset configs.
|
|
131
|
+
* Calling `KeplerGlSchema.parseSavedConfig` to convert saved config before passing it in is required.
|
|
132
|
+
*
|
|
133
|
+
* You can call `receiveMapConfig` before passing in any data. The reducer will store layer and filter config, waiting for
|
|
134
|
+
* data to come in. When data arrives, you can call `addDataToMap` without passing any config, and the reducer will try to match
|
|
135
|
+
* preloaded configs. This behavior is designed to allow asynchronous data loading.
|
|
136
|
+
*
|
|
137
|
+
* It is also useful when you want to prepare the kepler.gl instance with some preset layer and filter settings.
|
|
138
|
+
* **Note** Sequence is important, `receiveMapConfig` needs to be called __before__ data is loaded. Currently kepler.gl doesn't allow calling `receiveMapConfig` after data is loaded.
|
|
139
|
+
* It will reset current configuration first then apply config to it.
|
|
140
|
+
* @memberof main
|
|
141
|
+
* @param {Object} config - ***required** The Config Object
|
|
142
|
+
* @param {Object} options - ***optional** The Option object
|
|
143
|
+
* @param {boolean} options.centerMap `default: true` if `centerMap` is set to `true` kepler.gl will
|
|
144
|
+
* place the map view within the data points boundaries
|
|
145
|
+
* @param {boolean} options.readOnly `default: false` if `readOnly` is set to `true`
|
|
146
|
+
* the left setting panel will be hidden
|
|
147
|
+
* @param {boolean} options.keepExistingConfig whether to keep exiting layer filter and interaction config `default: false`.
|
|
148
|
+
* @param {boolean} options.autoCreateLayers whether to automatically create layers based on dataset columns `default: true`.
|
|
149
|
+
* @public
|
|
150
|
+
* @example
|
|
151
|
+
* import {receiveMapConfig} from 'kepler.gl/actions';
|
|
152
|
+
* import KeplerGlSchema from 'kepler.gl/schemas';
|
|
153
|
+
*
|
|
154
|
+
* const parsedConfig = KeplerGlSchema.parseSavedConfig(config);
|
|
155
|
+
* this.props.dispatch(receiveMapConfig(parsedConfig));
|
|
156
|
+
*/
|
|
157
|
+
|
|
158
|
+
exports.resetMapConfig = resetMapConfig;
|
|
159
|
+
var receiveMapConfig = (0, _reduxActions.createAction)(_actionTypes["default"].RECEIVE_MAP_CONFIG, function (config, options) {
|
|
160
|
+
return {
|
|
161
|
+
config: config,
|
|
162
|
+
options: options
|
|
163
|
+
};
|
|
164
|
+
});
|
|
165
|
+
/**
|
|
166
|
+
* Initialize kepler.gl reducer. It is used to pass in `mapboxApiAccessToken` to `mapStyle` reducer.
|
|
167
|
+
* @memberof main
|
|
168
|
+
* @param {object} payload
|
|
169
|
+
* @param payload.mapboxApiAccessToken - mapboxApiAccessToken to be saved to mapStyle reducer
|
|
170
|
+
* @param payload.mapboxApiUrl - mapboxApiUrl to be saved to mapStyle reducer.
|
|
171
|
+
* @param payload.mapStylesReplaceDefault - mapStylesReplaceDefault to be saved to mapStyle reducer
|
|
172
|
+
* @param payload.initialUiState - initial ui state
|
|
173
|
+
* @type {typeof import('./actions').keplerGlInit}
|
|
174
|
+
* @public
|
|
175
|
+
*/
|
|
176
|
+
|
|
177
|
+
exports.receiveMapConfig = receiveMapConfig;
|
|
178
|
+
var keplerGlInit = (0, _reduxActions.createAction)(_actionTypes["default"].INIT, // @ts-ignore
|
|
179
|
+
function (payload) {
|
|
180
|
+
return payload;
|
|
181
|
+
});
|
|
182
|
+
/**
|
|
183
|
+
* This declaration is needed to group actions in docs
|
|
184
|
+
*/
|
|
185
|
+
|
|
186
|
+
/**
|
|
187
|
+
* Main kepler.gl actions, these actions handles loading data and config into kepler.gl reducer. These actions
|
|
188
|
+
* is listened by all subreducers,
|
|
189
|
+
* @public
|
|
190
|
+
*/
|
|
191
|
+
|
|
192
|
+
/* eslint-disable no-unused-vars */
|
|
193
|
+
// @ts-ignore
|
|
194
|
+
|
|
195
|
+
exports.keplerGlInit = keplerGlInit;
|
|
196
|
+
var main = null;
|
|
197
|
+
/* eslint-enable no-unused-vars */
|
|
198
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hY3Rpb25zL2FjdGlvbnMuanMiXSwibmFtZXMiOlsiYWRkRGF0YVRvTWFwIiwiQWN0aW9uVHlwZXMiLCJBRERfREFUQV9UT19NQVAiLCJkYXRhIiwicmVzZXRNYXBDb25maWciLCJSRVNFVF9NQVBfQ09ORklHIiwicmVjZWl2ZU1hcENvbmZpZyIsIlJFQ0VJVkVfTUFQX0NPTkZJRyIsImNvbmZpZyIsIm9wdGlvbnMiLCJrZXBsZXJHbEluaXQiLCJJTklUIiwicGF5bG9hZCIsIm1haW4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQW9CQTs7QUFDQTs7QUFyQkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ08sSUFBTUEsWUFBWSxHQUFHLGdDQUFhQyx3QkFBWUMsZUFBekIsRUFBMEMsVUFBQUMsSUFBSTtBQUFBLFNBQUlBLElBQUo7QUFBQSxDQUE5QyxDQUFyQjtBQUVQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUNPLElBQU1DLGNBQWMsR0FBRyxnQ0FBYUgsd0JBQVlJLGdCQUF6QixDQUF2QjtBQUVQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFDTyxJQUFNQyxnQkFBZ0IsR0FBRyxnQ0FBYUwsd0JBQVlNLGtCQUF6QixFQUE2QyxVQUFDQyxNQUFELEVBQVNDLE9BQVQ7QUFBQSxTQUFzQjtBQUNqR0QsSUFBQUEsTUFBTSxFQUFOQSxNQURpRztBQUVqR0MsSUFBQUEsT0FBTyxFQUFQQTtBQUZpRyxHQUF0QjtBQUFBLENBQTdDLENBQXpCO0FBS1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBQ08sSUFBTUMsWUFBWSxHQUFHLGdDQUMxQlQsd0JBQVlVLElBRGMsRUFFMUI7QUFDQSxVQUFBQyxPQUFPO0FBQUEsU0FBSUEsT0FBSjtBQUFBLENBSG1CLENBQXJCO0FBTVA7QUFDQTtBQUNBOztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBQ0E7QUFDQTs7O0FBQ0EsSUFBTUMsSUFBSSxHQUFHLElBQWI7QUFDQSIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAoYykgMjAyMiBVYmVyIFRlY2hub2xvZ2llcywgSW5jLlxuLy9cbi8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHlcbi8vIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlIFwiU29mdHdhcmVcIiksIHRvIGRlYWxcbi8vIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHNcbi8vIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGxcbi8vIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpc1xuLy8gZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpcbi8vXG4vLyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpblxuLy8gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4vL1xuLy8gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUlxuLy8gSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksXG4vLyBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEVcbi8vIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVJcbi8vIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sXG4vLyBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOXG4vLyBUSEUgU09GVFdBUkUuXG5cbmltcG9ydCBBY3Rpb25UeXBlcyBmcm9tICdjb25zdGFudHMvYWN0aW9uLXR5cGVzJztcbmltcG9ydCB7Y3JlYXRlQWN0aW9ufSBmcm9tICdyZWR1eC1hY3Rpb25zJztcblxuLyoqXG4gKiBBZGQgZGF0YSB0byBrZXBsZXIuZ2wgcmVkdWNlciwgcHJlcGFyZSBtYXAgd2l0aCBwcmVzZXQgY29uZmlndXJhdGlvbiBpZiBjb25maWcgaXMgcGFzc2VkLlxuICogS2VwbGVyLmdsIHByb3ZpZGVzIGEgaGFuZHkgc2V0IG9mIHV0aWxzIHRvIHBhcnNlIGRhdGEgZnJvbSBkaWZmZXJlbnQgZm9ybWF0cyB0byB0aGUgYGRhdGFgIG9iamVjdCByZXF1aXJlZCBpbiBkYXRhc2V0LiBZb3UgcmFyZWx5IG5lZWQgdG8gbWFudWFsbHkgZm9ybWF0IHRoZSBkYXRhIG9iZWpjdC5cbiAqXG4gKiBVc2UgYEtlcGxlckdsU2NoZW1hLmdldENvbmZpZ1RvU2F2ZWAgdG8gZ2VuZXJhdGUgYSBqc29uIGJsb2Igb2YgdGhlIGN1cnJlbnRzIGluc3RhbmNlIGNvbmZpZy5cbiAqIFRoZSBjb25maWcgb2JqZWN0IHZhbHVlIHdpbGwgYWx3YXlzIGhhdmUgaGlnaGVyIHByZWNlZGVuY2UgdGhhbiB0aGUgb3B0aW9ucyBwcm9wZXJ0aWVzLlxuICpcbiAqIEtlcGxlci5nbCB1c2VzIGBkYXRhSWRgIGluIHRoZSBjb25maWcgdG8gbWF0Y2ggd2l0aCBsb2FkZWQgZGF0YXNldC4gSWYgeW91IHBhc3MgYSBjb25maWcgb2JqZWN0LCB5b3UgbmVlZFxuICogdG8gbWF0Y2ggdGhlIGBpbmZvLmlkYCBvZiB5b3VyIGRhdGFzZXQgdG8gdGhlIGBkYXRhSWRgIGluIGVhY2ggYGxheWVyYCwgYGZpbHRlcmAgYW5kIGBpbnRlcmFjdGlvbkNvbmZpZy50b29sdGlwcy5maWVsZHNUb1Nob3dgXG4gKlxuICogQG1lbWJlcm9mIG1haW5cbiAqIEBwYXJhbSB7T2JqZWN0fSBkYXRhXG4gKiBAcGFyYW0ge0FycmF5PE9iamVjdD58T2JqZWN0fSBkYXRhLmRhdGFzZXRzIC0gKioqcmVxdWlyZWQqKiBkYXRhc2V0cyBjYW4gYmUgYSBkYXRhc2V0IG9yIGFuIGFycmF5IG9mIGRhdGFzZXRzXG4gKiBFYWNoIGRhdGFzZXQgb2JqZWN0IG5lZWRzIHRvIGhhdmUgYGluZm9gIGFuZCBgZGF0YWAgcHJvcGVydHkuXG4gKiBAcGFyYW0ge09iamVjdH0gZGF0YS5kYXRhc2V0cy5pbmZvIC1pbmZvIG9mIGEgZGF0YXNldFxuICogQHBhcmFtIHtzdHJpbmd9IGRhdGEuZGF0YXNldHMuaW5mby5pZCAtIGlkIG9mIHRoaXMgZGF0YXNldC4gSWYgY29uZmlnIGlzIGRlZmluZWQsIGBpZGAgc2hvdWxkIG1hdGNoZXMgdGhlIGBkYXRhSWRgIGluIGNvbmZpZy5cbiAqIEBwYXJhbSB7c3RyaW5nfSBkYXRhLmRhdGFzZXRzLmluZm8ubGFiZWwgLSBBIGRpc3BsYXkgbmFtZSBvZiB0aGlzIGRhdGFzZXRcbiAqIEBwYXJhbSB7T2JqZWN0fSBkYXRhLmRhdGFzZXRzLmRhdGEgLSAqKipyZXF1aXJlZCoqIFRoZSBkYXRhIG9iamVjdCwgaW4gYSB0YWJ1bGFyIGZvcm1hdCB3aXRoIDIgcHJvcGVydGllcyBgZmllbGRzYCBhbmQgYHJvd3NgXG4gKiBAcGFyYW0ge0FycmF5PE9iamVjdD59IGRhdGEuZGF0YXNldHMuZGF0YS5maWVsZHMgLSAqKipyZXF1aXJlZCoqIEFycmF5IG9mIGZpZWxkcyxcbiAqIEBwYXJhbSB7c3RyaW5nfSBkYXRhLmRhdGFzZXRzLmRhdGEuZmllbGRzLm5hbWUgLSAqKipyZXF1aXJlZCoqIE5hbWUgb2YgdGhlIGZpZWxkLFxuICogQHBhcmFtIHtBcnJheTxBcnJheT59IGRhdGEuZGF0YXNldHMuZGF0YS5yb3dzIC0gKioqcmVxdWlyZWQqKiBBcnJheSBvZiByb3dzLCBpbiBhIHRhYnVsYXIgZm9ybWF0IHdpdGggYGZpZWxkc2AgYW5kIGByb3dzYFxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBkYXRhLm9wdGlvbnNcbiAqIEBwYXJhbSB7Ym9vbGVhbn0gZGF0YS5vcHRpb25zLmNlbnRlck1hcCBgZGVmYXVsdDogdHJ1ZWAgaWYgYGNlbnRlck1hcGAgaXMgc2V0IHRvIGB0cnVlYCBrZXBsZXIuZ2wgd2lsbFxuICogcGxhY2UgdGhlIG1hcCB2aWV3IHdpdGhpbiB0aGUgZGF0YSBwb2ludHMgYm91bmRhcmllcy4gIGBvcHRpb25zLmNlbnRlck1hcGAgd2lsbCBvdmVycmlkZSBgY29uZmlnLm1hcFN0YXRlYCBpZiBwYXNzZWQgaW4uXG4gKiBAcGFyYW0ge2Jvb2xlYW59IGRhdGEub3B0aW9ucy5yZWFkT25seSBgZGVmYXVsdDogZmFsc2VgIGlmIGByZWFkT25seWAgaXMgc2V0IHRvIGB0cnVlYFxuICogdGhlIGxlZnQgc2V0dGluZyBwYW5lbCB3aWxsIGJlIGhpZGRlblxuICogQHBhcmFtIHtib29sZWFufSBkYXRhLm9wdGlvbnMua2VlcEV4aXN0aW5nQ29uZmlnIHdoZXRoZXIgdG8ga2VlcCBleGl0aW5nIG1hcCBkYXRhIGFuZCBhc3NvY2lhdGVkIGxheWVyIGZpbHRlciAgaW50ZXJhY3Rpb24gY29uZmlnIGBkZWZhdWx0OiBmYWxzZWAuXG4gKiBAcGFyYW0ge09iamVjdH0gZGF0YS5jb25maWcgdGhpcyBvYmplY3Qgd2lsbCBjb250YWluIHRoZSBmdWxsIGtlcGxlci5nbCBpbnN0YW5jZSBjb25maWd1cmF0aW9uIHttYXBTdGF0ZSwgbWFwU3R5bGUsIHZpc1N0YXRlfVxuICogQHB1YmxpY1xuICogQGV4YW1wbGVcbiAqXG4gKiAvLyBhcHAuanNcbiAqIGltcG9ydCB7YWRkRGF0YVRvTWFwfSBmcm9tICdrZXBsZXIuZ2wvYWN0aW9ucyc7XG4gKlxuICogY29uc3Qgc2FtcGxlVHJpcERhdGEgPSB7XG4gKiAgZmllbGRzOiBbXG4gKiAgICB7bmFtZTogJ3RwZXBfcGlja3VwX2RhdGV0aW1lJywgZm9ybWF0OiAnWVlZWS1NLUQgSDptOnMnLCB0eXBlOiAndGltZXN0YW1wJ30sXG4gKiAgICB7bmFtZTogJ3BpY2t1cF9sb25naXR1ZGUnLCBmb3JtYXQ6ICcnLCB0eXBlOiAncmVhbCd9LFxuICogICAge25hbWU6ICdwaWNrdXBfbGF0aXR1ZGUnLCBmb3JtYXQ6ICcnLCB0eXBlOiAncmVhbCd9XG4gKiAgXSxcbiAqICByb3dzOiBbXG4gKiAgICBbJzIwMTUtMDEtMTUgMTk6MDU6MzkgKzAwOjAwJywgLTczLjk5Mzg5NjQ4LCA0MC43NTAxMTA2M10sXG4gKiAgICBbJzIwMTUtMDEtMTUgMTk6MDU6MzkgKzAwOjAwJywgLTczLjk3NjQyNTE3LCA0MC43Mzk4MTA5NF0sXG4gKiAgICBbJzIwMTUtMDEtMTUgMTk6MDU6NDAgKzAwOjAwJywgLTczLjk2ODcwNDIyLCA0MC43NTQyNDU3Nl0sXG4gKiAgXVxuICogfTtcbiAqXG4gKiBjb25zdCBzYW1wbGVDb25maWcgPSB7XG4gKiAgIHZpc1N0YXRlOiB7XG4gKiAgICAgZmlsdGVyczogW1xuICogICAgICAge1xuICogICAgICAgICBpZDogJ21lJyxcbiAqICAgICAgICAgZGF0YUlkOiAndGVzdF90cmlwX2RhdGEnLFxuICogICAgICAgICBuYW1lOiAndHBlcF9waWNrdXBfZGF0ZXRpbWUnLFxuICogICAgICAgICB0eXBlOiAndGltZVJhbmdlJyxcbiAqICAgICAgICAgZW5sYXJnZWQ6IHRydWVcbiAqICAgICAgIH1cbiAqICAgICBdXG4gKiAgIH1cbiAqIH1cbiAqXG4gKiB0aGlzLnByb3BzLmRpc3BhdGNoKFxuICogICBhZGREYXRhVG9NYXAoe1xuICogICAgIGRhdGFzZXRzOiB7XG4gKiAgICAgICBpbmZvOiB7XG4gKiAgICAgICAgIGxhYmVsOiAnU2FtcGxlIFRheGkgVHJpcHMgaW4gTmV3IFlvcmsgQ2l0eScsXG4gKiAgICAgICAgIGlkOiAndGVzdF90cmlwX2RhdGEnXG4gKiAgICAgICB9LFxuICogICAgICAgZGF0YTogc2FtcGxlVHJpcERhdGFcbiAqICAgICB9LFxuICogICAgIG9wdGlvbnM6IHtcbiAqICAgICAgIGNlbnRlck1hcDogdHJ1ZSxcbiAqICAgICAgIHJlYWRPbmx5OiBmYWxzZSxcbiAqICAgICAgIGtlZXBFeGlzdGluZ0NvbmZpZzogZmFsc2VcbiAqICAgICB9LFxuICogICAgIGluZm86IHtcbiAqICAgICAgIHRpdGxlOiAnVGFybyBhbmQgQmx1ZScsXG4gKiAgICAgICBkZXNjcmlwdGlvbjogJ1RoaXMgaXMgbXkgbWFwJ1xuICogICAgIH0sXG4gKiAgICAgY29uZmlnOiBzYW1wbGVDb25maWdcbiAqICAgfSlcbiAqICk7XG4gKi9cbmV4cG9ydCBjb25zdCBhZGREYXRhVG9NYXAgPSBjcmVhdGVBY3Rpb24oQWN0aW9uVHlwZXMuQUREX0RBVEFfVE9fTUFQLCBkYXRhID0+IGRhdGEpO1xuXG4vKipcbiAqIFJlc2V0IGFsbCBzdWItcmVkdWNlcnMgdG8gaXRzIGluaXRpYWwgc3RhdGUuIFRoaXMgY2FuIGJlIHVzZWQgdG8gY2xlYXIgb3V0IGFsbCBjb25maWd1cmF0aW9uIGluIHRoZSByZWR1Y2VyLlxuICogQG1lbWJlcm9mIG1haW5cbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IHJlc2V0TWFwQ29uZmlnID0gY3JlYXRlQWN0aW9uKEFjdGlvblR5cGVzLlJFU0VUX01BUF9DT05GSUcpO1xuXG4vKipcbiAqIFBhc3MgY29uZmlnIHRvIGtlcGxlci5nbCBpbnN0YW5jZSwgcHJlcGFyZSB0aGUgc3RhdGUgd2l0aCBwcmVzZXQgY29uZmlncy5cbiAqIENhbGxpbmcgYEtlcGxlckdsU2NoZW1hLnBhcnNlU2F2ZWRDb25maWdgIHRvIGNvbnZlcnQgc2F2ZWQgY29uZmlnIGJlZm9yZSBwYXNzaW5nIGl0IGluIGlzIHJlcXVpcmVkLlxuICpcbiAqIFlvdSBjYW4gY2FsbCBgcmVjZWl2ZU1hcENvbmZpZ2AgYmVmb3JlIHBhc3NpbmcgaW4gYW55IGRhdGEuIFRoZSByZWR1Y2VyIHdpbGwgc3RvcmUgbGF5ZXIgYW5kIGZpbHRlciBjb25maWcsIHdhaXRpbmcgZm9yXG4gKiBkYXRhIHRvIGNvbWUgaW4uIFdoZW4gZGF0YSBhcnJpdmVzLCB5b3UgY2FuIGNhbGwgYGFkZERhdGFUb01hcGAgd2l0aG91dCBwYXNzaW5nIGFueSBjb25maWcsIGFuZCB0aGUgcmVkdWNlciB3aWxsIHRyeSB0byBtYXRjaFxuICogcHJlbG9hZGVkIGNvbmZpZ3MuIFRoaXMgYmVoYXZpb3IgaXMgZGVzaWduZWQgdG8gYWxsb3cgYXN5bmNocm9ub3VzIGRhdGEgbG9hZGluZy5cbiAqXG4gKiBJdCBpcyBhbHNvIHVzZWZ1bCB3aGVuIHlvdSB3YW50IHRvIHByZXBhcmUgdGhlIGtlcGxlci5nbCBpbnN0YW5jZSB3aXRoIHNvbWUgcHJlc2V0IGxheWVyIGFuZCBmaWx0ZXIgc2V0dGluZ3MuXG4gKiAqKk5vdGUqKiBTZXF1ZW5jZSBpcyBpbXBvcnRhbnQsIGByZWNlaXZlTWFwQ29uZmlnYCBuZWVkcyB0byBiZSBjYWxsZWQgX19iZWZvcmVfXyBkYXRhIGlzIGxvYWRlZC4gQ3VycmVudGx5IGtlcGxlci5nbCBkb2Vzbid0IGFsbG93IGNhbGxpbmcgYHJlY2VpdmVNYXBDb25maWdgIGFmdGVyIGRhdGEgaXMgbG9hZGVkLlxuICogSXQgd2lsbCByZXNldCBjdXJyZW50IGNvbmZpZ3VyYXRpb24gZmlyc3QgdGhlbiBhcHBseSBjb25maWcgdG8gaXQuXG4gKiBAbWVtYmVyb2YgbWFpblxuICogQHBhcmFtIHtPYmplY3R9IGNvbmZpZyAtICoqKnJlcXVpcmVkKiogVGhlIENvbmZpZyBPYmplY3RcbiAqIEBwYXJhbSB7T2JqZWN0fSBvcHRpb25zIC0gKioqb3B0aW9uYWwqKiBUaGUgT3B0aW9uIG9iamVjdFxuICogQHBhcmFtIHtib29sZWFufSBvcHRpb25zLmNlbnRlck1hcCBgZGVmYXVsdDogdHJ1ZWAgaWYgYGNlbnRlck1hcGAgaXMgc2V0IHRvIGB0cnVlYCBrZXBsZXIuZ2wgd2lsbFxuICogcGxhY2UgdGhlIG1hcCB2aWV3IHdpdGhpbiB0aGUgZGF0YSBwb2ludHMgYm91bmRhcmllc1xuICogQHBhcmFtIHtib29sZWFufSBvcHRpb25zLnJlYWRPbmx5IGBkZWZhdWx0OiBmYWxzZWAgaWYgYHJlYWRPbmx5YCBpcyBzZXQgdG8gYHRydWVgXG4gKiB0aGUgbGVmdCBzZXR0aW5nIHBhbmVsIHdpbGwgYmUgaGlkZGVuXG4gKiBAcGFyYW0ge2Jvb2xlYW59IG9wdGlvbnMua2VlcEV4aXN0aW5nQ29uZmlnIHdoZXRoZXIgdG8ga2VlcCBleGl0aW5nIGxheWVyIGZpbHRlciBhbmQgaW50ZXJhY3Rpb24gY29uZmlnIGBkZWZhdWx0OiBmYWxzZWAuXG4gKiBAcGFyYW0ge2Jvb2xlYW59IG9wdGlvbnMuYXV0b0NyZWF0ZUxheWVycyB3aGV0aGVyIHRvIGF1dG9tYXRpY2FsbHkgY3JlYXRlIGxheWVycyBiYXNlZCBvbiBkYXRhc2V0IGNvbHVtbnMgYGRlZmF1bHQ6IHRydWVgLlxuICogQHB1YmxpY1xuICogQGV4YW1wbGVcbiAqIGltcG9ydCB7cmVjZWl2ZU1hcENvbmZpZ30gZnJvbSAna2VwbGVyLmdsL2FjdGlvbnMnO1xuICogaW1wb3J0IEtlcGxlckdsU2NoZW1hIGZyb20gJ2tlcGxlci5nbC9zY2hlbWFzJztcbiAqXG4gKiBjb25zdCBwYXJzZWRDb25maWcgPSBLZXBsZXJHbFNjaGVtYS5wYXJzZVNhdmVkQ29uZmlnKGNvbmZpZyk7XG4gKiB0aGlzLnByb3BzLmRpc3BhdGNoKHJlY2VpdmVNYXBDb25maWcocGFyc2VkQ29uZmlnKSk7XG4gKi9cbmV4cG9ydCBjb25zdCByZWNlaXZlTWFwQ29uZmlnID0gY3JlYXRlQWN0aW9uKEFjdGlvblR5cGVzLlJFQ0VJVkVfTUFQX0NPTkZJRywgKGNvbmZpZywgb3B0aW9ucykgPT4gKHtcbiAgY29uZmlnLFxuICBvcHRpb25zXG59KSk7XG5cbi8qKlxuICogSW5pdGlhbGl6ZSBrZXBsZXIuZ2wgcmVkdWNlci4gSXQgaXMgdXNlZCB0byBwYXNzIGluIGBtYXBib3hBcGlBY2Nlc3NUb2tlbmAgdG8gYG1hcFN0eWxlYCByZWR1Y2VyLlxuICogQG1lbWJlcm9mIG1haW5cbiAqIEBwYXJhbSB7b2JqZWN0fSBwYXlsb2FkXG4gKiBAcGFyYW0gcGF5bG9hZC5tYXBib3hBcGlBY2Nlc3NUb2tlbiAtIG1hcGJveEFwaUFjY2Vzc1Rva2VuIHRvIGJlIHNhdmVkIHRvIG1hcFN0eWxlIHJlZHVjZXJcbiAqIEBwYXJhbSBwYXlsb2FkLm1hcGJveEFwaVVybCAtIG1hcGJveEFwaVVybCB0byBiZSBzYXZlZCB0byBtYXBTdHlsZSByZWR1Y2VyLlxuICogQHBhcmFtIHBheWxvYWQubWFwU3R5bGVzUmVwbGFjZURlZmF1bHQgLSBtYXBTdHlsZXNSZXBsYWNlRGVmYXVsdCB0byBiZSBzYXZlZCB0byBtYXBTdHlsZSByZWR1Y2VyXG4gKiBAcGFyYW0gcGF5bG9hZC5pbml0aWFsVWlTdGF0ZSAtIGluaXRpYWwgdWkgc3RhdGVcbiAqIEB0eXBlIHt0eXBlb2YgaW1wb3J0KCcuL2FjdGlvbnMnKS5rZXBsZXJHbEluaXR9XG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBrZXBsZXJHbEluaXQgPSBjcmVhdGVBY3Rpb24oXG4gIEFjdGlvblR5cGVzLklOSVQsXG4gIC8vIEB0cy1pZ25vcmVcbiAgcGF5bG9hZCA9PiBwYXlsb2FkXG4pO1xuXG4vKipcbiAqIFRoaXMgZGVjbGFyYXRpb24gaXMgbmVlZGVkIHRvIGdyb3VwIGFjdGlvbnMgaW4gZG9jc1xuICovXG4vKipcbiAqIE1haW4ga2VwbGVyLmdsIGFjdGlvbnMsIHRoZXNlIGFjdGlvbnMgaGFuZGxlcyBsb2FkaW5nIGRhdGEgYW5kIGNvbmZpZyBpbnRvIGtlcGxlci5nbCByZWR1Y2VyLiBUaGVzZSBhY3Rpb25zXG4gKiBpcyBsaXN0ZW5lZCBieSBhbGwgc3VicmVkdWNlcnMsXG4gKiBAcHVibGljXG4gKi9cbi8qIGVzbGludC1kaXNhYmxlIG5vLXVudXNlZC12YXJzICovXG4vLyBAdHMtaWdub3JlXG5jb25zdCBtYWluID0gbnVsbDtcbi8qIGVzbGludC1lbmFibGUgbm8tdW51c2VkLXZhcnMgKi9cbiJdfQ==
|