@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
|
@@ -0,0 +1,215 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
5
|
+
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard");
|
|
6
|
+
|
|
7
|
+
Object.defineProperty(exports, "__esModule", {
|
|
8
|
+
value: true
|
|
9
|
+
});
|
|
10
|
+
exports.FilterAnimationControllerFactory = FilterAnimationControllerFactory;
|
|
11
|
+
exports.LayerAnimationControllerFactory = LayerAnimationControllerFactory;
|
|
12
|
+
exports["default"] = BottomWidgetFactory;
|
|
13
|
+
|
|
14
|
+
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
15
|
+
|
|
16
|
+
var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
|
|
17
|
+
|
|
18
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
19
|
+
|
|
20
|
+
var _styledComponents = _interopRequireDefault(require("styled-components"));
|
|
21
|
+
|
|
22
|
+
var _timeWidget = _interopRequireDefault(require("./filters/time-widget"));
|
|
23
|
+
|
|
24
|
+
var _animationControl = _interopRequireDefault(require("./common/animation-control/animation-control"));
|
|
25
|
+
|
|
26
|
+
var _animationController = _interopRequireDefault(require("./common/animation-control/animation-controller"));
|
|
27
|
+
|
|
28
|
+
var _defaultSettings = require("../constants/default-settings");
|
|
29
|
+
|
|
30
|
+
var _filterUtils = require("../utils/filter-utils");
|
|
31
|
+
|
|
32
|
+
var _mediaBreakpoints = require("../styles/media-breakpoints");
|
|
33
|
+
|
|
34
|
+
var _templateObject, _templateObject2;
|
|
35
|
+
|
|
36
|
+
var maxWidth = 1080;
|
|
37
|
+
|
|
38
|
+
var BottomWidgetContainer = _styledComponents["default"].div(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n flex-direction: column;\n padding-top: ", "px;\n padding-right: ", "px;\n padding-bottom: ", "px;\n padding-left: ", "px;\n pointer-events: none !important; /* prevent padding from blocking input */\n & > * {\n /* all children should allow input */\n pointer-events: all;\n }\n width: ", "px;\n z-index: 1;\n ", "\n"])), function (props) {
|
|
39
|
+
return props.hasPadding ? props.theme.bottomWidgetPaddingTop : 0;
|
|
40
|
+
}, function (props) {
|
|
41
|
+
return props.hasPadding ? props.theme.bottomWidgetPaddingRight : 0;
|
|
42
|
+
}, function (props) {
|
|
43
|
+
return props.hasPadding ? props.theme.bottomWidgetPaddingBottom : 0;
|
|
44
|
+
}, function (props) {
|
|
45
|
+
return props.hasPadding ? props.theme.bottomWidgetPaddingLeft : 0;
|
|
46
|
+
}, function (props) {
|
|
47
|
+
return props.width;
|
|
48
|
+
}, _mediaBreakpoints.media.portable(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2["default"])(["padding: 0;"]))));
|
|
49
|
+
|
|
50
|
+
FilterAnimationControllerFactory.deps = [_animationController["default"]];
|
|
51
|
+
|
|
52
|
+
function FilterAnimationControllerFactory(AnimationController) {
|
|
53
|
+
var FilterAnimationController = function FilterAnimationController(_ref) {
|
|
54
|
+
var filter = _ref.filter,
|
|
55
|
+
filterIdx = _ref.filterIdx,
|
|
56
|
+
setFilterAnimationTime = _ref.setFilterAnimationTime,
|
|
57
|
+
children = _ref.children;
|
|
58
|
+
var intervalBins = (0, _react.useMemo)(function () {
|
|
59
|
+
return (0, _filterUtils.getIntervalBins)(filter);
|
|
60
|
+
}, [filter]);
|
|
61
|
+
var steps = (0, _react.useMemo)(function () {
|
|
62
|
+
return intervalBins ? intervalBins.map(function (x) {
|
|
63
|
+
return x.x0;
|
|
64
|
+
}) : null;
|
|
65
|
+
}, [intervalBins]);
|
|
66
|
+
var updateAnimation = (0, _react.useCallback)(function (value) {
|
|
67
|
+
switch (filter.animationWindow) {
|
|
68
|
+
case _defaultSettings.ANIMATION_WINDOW.interval:
|
|
69
|
+
var idx = value[1];
|
|
70
|
+
setFilterAnimationTime(filterIdx, 'value', [intervalBins[idx].x0, intervalBins[idx].x1 - 1]);
|
|
71
|
+
break;
|
|
72
|
+
|
|
73
|
+
default:
|
|
74
|
+
setFilterAnimationTime(filterIdx, 'value', value);
|
|
75
|
+
break;
|
|
76
|
+
}
|
|
77
|
+
}, [filterIdx, intervalBins, filter.animationWindow, setFilterAnimationTime]);
|
|
78
|
+
return /*#__PURE__*/_react["default"].createElement(AnimationController, {
|
|
79
|
+
key: "filter-control",
|
|
80
|
+
value: filter.value,
|
|
81
|
+
domain: filter.domain,
|
|
82
|
+
speed: filter.speed,
|
|
83
|
+
isAnimating: filter.isAnimating,
|
|
84
|
+
animationWindow: filter.animationWindow,
|
|
85
|
+
steps: steps,
|
|
86
|
+
updateAnimation: updateAnimation,
|
|
87
|
+
children: children
|
|
88
|
+
});
|
|
89
|
+
};
|
|
90
|
+
|
|
91
|
+
return FilterAnimationController;
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
LayerAnimationControllerFactory.deps = [_animationController["default"]];
|
|
95
|
+
|
|
96
|
+
function LayerAnimationControllerFactory(AnimationController) {
|
|
97
|
+
var LayerAnimationController = function LayerAnimationController(_ref2) {
|
|
98
|
+
var animationConfig = _ref2.animationConfig,
|
|
99
|
+
setLayerAnimationTime = _ref2.setLayerAnimationTime,
|
|
100
|
+
children = _ref2.children;
|
|
101
|
+
return /*#__PURE__*/_react["default"].createElement(AnimationController, {
|
|
102
|
+
key: "layer-control",
|
|
103
|
+
value: animationConfig.currentTime,
|
|
104
|
+
domain: animationConfig.domain,
|
|
105
|
+
speed: animationConfig.speed,
|
|
106
|
+
isAnimating: animationConfig.isAnimating,
|
|
107
|
+
updateAnimation: setLayerAnimationTime,
|
|
108
|
+
steps: animationConfig.timeSteps,
|
|
109
|
+
animationWindow: animationConfig.timeSteps ? _defaultSettings.ANIMATION_WINDOW.interval : _defaultSettings.ANIMATION_WINDOW.point,
|
|
110
|
+
children: children
|
|
111
|
+
});
|
|
112
|
+
};
|
|
113
|
+
|
|
114
|
+
return LayerAnimationController;
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
BottomWidgetFactory.deps = [_timeWidget["default"], _animationControl["default"], FilterAnimationControllerFactory, LayerAnimationControllerFactory];
|
|
118
|
+
/* eslint-disable complexity */
|
|
119
|
+
|
|
120
|
+
function BottomWidgetFactory(TimeWidget, AnimationControl, FilterAnimationController, LayerAnimationController) {
|
|
121
|
+
var BottomWidget = function BottomWidget(props) {
|
|
122
|
+
var datasets = props.datasets,
|
|
123
|
+
filters = props.filters,
|
|
124
|
+
animationConfig = props.animationConfig,
|
|
125
|
+
visStateActions = props.visStateActions,
|
|
126
|
+
containerW = props.containerW,
|
|
127
|
+
uiState = props.uiState,
|
|
128
|
+
sidePanelWidth = props.sidePanelWidth,
|
|
129
|
+
layers = props.layers;
|
|
130
|
+
var activeSidePanel = uiState.activeSidePanel,
|
|
131
|
+
readOnly = uiState.readOnly;
|
|
132
|
+
var isOpen = Boolean(activeSidePanel);
|
|
133
|
+
var enlargedFilterIdx = (0, _react.useMemo)(function () {
|
|
134
|
+
return filters.findIndex(function (f) {
|
|
135
|
+
return f.enlarged && f.type === _defaultSettings.FILTER_TYPES.timeRange;
|
|
136
|
+
});
|
|
137
|
+
}, [filters]);
|
|
138
|
+
var animatedFilterIdx = (0, _react.useMemo)(function () {
|
|
139
|
+
return filters.findIndex(function (f) {
|
|
140
|
+
return f.isAnimating;
|
|
141
|
+
});
|
|
142
|
+
}, [filters]);
|
|
143
|
+
var animatedFilter = animatedFilterIdx > -1 ? filters[animatedFilterIdx] : null;
|
|
144
|
+
var enlargedFilterWidth = isOpen ? containerW - sidePanelWidth : containerW; // show playback control if layers contain trip layer & at least one trip layer is visible
|
|
145
|
+
|
|
146
|
+
var animatableLayer = (0, _react.useMemo)(function () {
|
|
147
|
+
return layers.filter(function (l) {
|
|
148
|
+
return l.config.animation && l.config.animation.enabled && l.config.isVisible;
|
|
149
|
+
});
|
|
150
|
+
}, [layers]);
|
|
151
|
+
var readyToAnimation = Array.isArray(animationConfig.domain) && Number.isFinite(animationConfig.currentTime); // if animation control is showing, hide time display in time slider
|
|
152
|
+
|
|
153
|
+
var showFloatingTimeDisplay = !animatableLayer.length;
|
|
154
|
+
var showAnimationControl = animatableLayer.length && readyToAnimation && !animationConfig.hideControl;
|
|
155
|
+
var showTimeWidget = enlargedFilterIdx > -1 && Object.keys(datasets).length > 0; // if filter is not animating, pass in enlarged filter here because
|
|
156
|
+
// animation controller needs to call reset on it
|
|
157
|
+
|
|
158
|
+
var filter = animatedFilter || filters[enlargedFilterIdx];
|
|
159
|
+
return /*#__PURE__*/_react["default"].createElement(BottomWidgetContainer, {
|
|
160
|
+
width: Math.min(maxWidth, enlargedFilterWidth),
|
|
161
|
+
className: "bottom-widget--container",
|
|
162
|
+
hasPadding: showAnimationControl || showTimeWidget
|
|
163
|
+
}, /*#__PURE__*/_react["default"].createElement(LayerAnimationController, {
|
|
164
|
+
animationConfig: animationConfig,
|
|
165
|
+
setLayerAnimationTime: visStateActions.setLayerAnimationTime
|
|
166
|
+
}, function (isAnimating, start, pause, reset) {
|
|
167
|
+
return showAnimationControl ? /*#__PURE__*/_react["default"].createElement(AnimationControl, {
|
|
168
|
+
animationConfig: animationConfig,
|
|
169
|
+
setLayerAnimationTime: visStateActions.setLayerAnimationTime,
|
|
170
|
+
updateAnimationSpeed: visStateActions.updateLayerAnimationSpeed,
|
|
171
|
+
toggleAnimation: visStateActions.toggleLayerAnimation,
|
|
172
|
+
isAnimatable: !animatedFilter,
|
|
173
|
+
isAnimating: isAnimating,
|
|
174
|
+
resetAnimation: reset
|
|
175
|
+
}) : null;
|
|
176
|
+
}), filter && /*#__PURE__*/_react["default"].createElement(FilterAnimationController, {
|
|
177
|
+
filter: filter,
|
|
178
|
+
filterIdx: animatedFilterIdx > -1 ? animatedFilterIdx : enlargedFilterIdx,
|
|
179
|
+
setFilterAnimationTime: visStateActions.setFilterAnimationTime
|
|
180
|
+
}, function (isAnimating, start, pause, resetAnimation) {
|
|
181
|
+
return showTimeWidget ? /*#__PURE__*/_react["default"].createElement(TimeWidget // TimeWidget uses React.memo, here we pass width
|
|
182
|
+
// even though it doesnt use it, to force rerender
|
|
183
|
+
, {
|
|
184
|
+
width: enlargedFilterWidth,
|
|
185
|
+
filter: filters[enlargedFilterIdx],
|
|
186
|
+
index: enlargedFilterIdx,
|
|
187
|
+
isAnyFilterAnimating: Boolean(animatedFilter),
|
|
188
|
+
datasets: datasets,
|
|
189
|
+
readOnly: readOnly,
|
|
190
|
+
showTimeDisplay: showFloatingTimeDisplay,
|
|
191
|
+
setFilterPlot: visStateActions.setFilterPlot,
|
|
192
|
+
setFilter: visStateActions.setFilter,
|
|
193
|
+
setFilterAnimationTime: visStateActions.setFilterAnimationTime,
|
|
194
|
+
setFilterAnimationWindow: visStateActions.setFilterAnimationWindow,
|
|
195
|
+
toggleAnimation: visStateActions.toggleFilterAnimation,
|
|
196
|
+
updateAnimationSpeed: visStateActions.updateFilterAnimationSpeed,
|
|
197
|
+
enlargeFilter: visStateActions.enlargeFilter,
|
|
198
|
+
resetAnimation: resetAnimation,
|
|
199
|
+
isAnimatable: !animationConfig || !animationConfig.isAnimating
|
|
200
|
+
}) : null;
|
|
201
|
+
}));
|
|
202
|
+
};
|
|
203
|
+
/* eslint-disable react/display-name */
|
|
204
|
+
// @ts-ignore
|
|
205
|
+
|
|
206
|
+
|
|
207
|
+
return /*#__PURE__*/(0, _react.forwardRef)(function (props, ref) {
|
|
208
|
+
return /*#__PURE__*/_react["default"].createElement(BottomWidget, (0, _extends2["default"])({}, props, {
|
|
209
|
+
rootRef: ref
|
|
210
|
+
}));
|
|
211
|
+
});
|
|
212
|
+
/* eslint-enable react/display-name */
|
|
213
|
+
}
|
|
214
|
+
/* eslint-enable complexity */
|
|
215
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb21wb25lbnRzL2JvdHRvbS13aWRnZXQuanMiXSwibmFtZXMiOlsibWF4V2lkdGgiLCJCb3R0b21XaWRnZXRDb250YWluZXIiLCJzdHlsZWQiLCJkaXYiLCJwcm9wcyIsImhhc1BhZGRpbmciLCJ0aGVtZSIsImJvdHRvbVdpZGdldFBhZGRpbmdUb3AiLCJib3R0b21XaWRnZXRQYWRkaW5nUmlnaHQiLCJib3R0b21XaWRnZXRQYWRkaW5nQm90dG9tIiwiYm90dG9tV2lkZ2V0UGFkZGluZ0xlZnQiLCJ3aWR0aCIsIm1lZGlhIiwicG9ydGFibGUiLCJGaWx0ZXJBbmltYXRpb25Db250cm9sbGVyRmFjdG9yeSIsImRlcHMiLCJBbmltYXRpb25Db250cm9sbGVyRmFjdG9yeSIsIkFuaW1hdGlvbkNvbnRyb2xsZXIiLCJGaWx0ZXJBbmltYXRpb25Db250cm9sbGVyIiwiZmlsdGVyIiwiZmlsdGVySWR4Iiwic2V0RmlsdGVyQW5pbWF0aW9uVGltZSIsImNoaWxkcmVuIiwiaW50ZXJ2YWxCaW5zIiwic3RlcHMiLCJtYXAiLCJ4IiwieDAiLCJ1cGRhdGVBbmltYXRpb24iLCJ2YWx1ZSIsImFuaW1hdGlvbldpbmRvdyIsIkFOSU1BVElPTl9XSU5ET1ciLCJpbnRlcnZhbCIsImlkeCIsIngxIiwiZG9tYWluIiwic3BlZWQiLCJpc0FuaW1hdGluZyIsIkxheWVyQW5pbWF0aW9uQ29udHJvbGxlckZhY3RvcnkiLCJMYXllckFuaW1hdGlvbkNvbnRyb2xsZXIiLCJhbmltYXRpb25Db25maWciLCJzZXRMYXllckFuaW1hdGlvblRpbWUiLCJjdXJyZW50VGltZSIsInRpbWVTdGVwcyIsInBvaW50IiwiQm90dG9tV2lkZ2V0RmFjdG9yeSIsIlRpbWVXaWRnZXRGYWN0b3J5IiwiQW5pbWF0aW9uQ29udHJvbEZhY3RvcnkiLCJUaW1lV2lkZ2V0IiwiQW5pbWF0aW9uQ29udHJvbCIsIkJvdHRvbVdpZGdldCIsImRhdGFzZXRzIiwiZmlsdGVycyIsInZpc1N0YXRlQWN0aW9ucyIsImNvbnRhaW5lclciLCJ1aVN0YXRlIiwic2lkZVBhbmVsV2lkdGgiLCJsYXllcnMiLCJhY3RpdmVTaWRlUGFuZWwiLCJyZWFkT25seSIsImlzT3BlbiIsIkJvb2xlYW4iLCJlbmxhcmdlZEZpbHRlcklkeCIsImZpbmRJbmRleCIsImYiLCJlbmxhcmdlZCIsInR5cGUiLCJGSUxURVJfVFlQRVMiLCJ0aW1lUmFuZ2UiLCJhbmltYXRlZEZpbHRlcklkeCIsImFuaW1hdGVkRmlsdGVyIiwiZW5sYXJnZWRGaWx0ZXJXaWR0aCIsImFuaW1hdGFibGVMYXllciIsImwiLCJjb25maWciLCJhbmltYXRpb24iLCJlbmFibGVkIiwiaXNWaXNpYmxlIiwicmVhZHlUb0FuaW1hdGlvbiIsIkFycmF5IiwiaXNBcnJheSIsIk51bWJlciIsImlzRmluaXRlIiwic2hvd0Zsb2F0aW5nVGltZURpc3BsYXkiLCJsZW5ndGgiLCJzaG93QW5pbWF0aW9uQ29udHJvbCIsImhpZGVDb250cm9sIiwic2hvd1RpbWVXaWRnZXQiLCJPYmplY3QiLCJrZXlzIiwiTWF0aCIsIm1pbiIsInN0YXJ0IiwicGF1c2UiLCJyZXNldCIsInVwZGF0ZUxheWVyQW5pbWF0aW9uU3BlZWQiLCJ0b2dnbGVMYXllckFuaW1hdGlvbiIsInJlc2V0QW5pbWF0aW9uIiwic2V0RmlsdGVyUGxvdCIsInNldEZpbHRlciIsInNldEZpbHRlckFuaW1hdGlvbldpbmRvdyIsInRvZ2dsZUZpbHRlckFuaW1hdGlvbiIsInVwZGF0ZUZpbHRlckFuaW1hdGlvblNwZWVkIiwiZW5sYXJnZUZpbHRlciIsInJlZiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFvQkE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7Ozs7QUFFQSxJQUFNQSxRQUFRLEdBQUcsSUFBakI7O0FBRUEsSUFBTUMscUJBQXFCLEdBQUdDLDZCQUFPQyxHQUFWLHdiQUdWLFVBQUFDLEtBQUs7QUFBQSxTQUFLQSxLQUFLLENBQUNDLFVBQU4sR0FB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QUFELENBTi9CO0FBT0UsUUFBQSxRQUFRLEVBQUVuQixRQVBaO0FBUUUsUUFBQSxRQUFRLEVBQUVRLFFBUlo7QUFTRSxRQUFBLGVBQWUsRUFBRXdCLHVCQVRuQjtBQVVFLFFBQUEsYUFBYSxFQUFFOUIsZUFBZSxDQUFDNkMsYUFWakM7QUFXRSxRQUFBLFNBQVMsRUFBRTdDLGVBQWUsQ0FBQzhDLFNBWDdCO0FBWUUsUUFBQSxzQkFBc0IsRUFBRTlDLGVBQWUsQ0FBQ2hDLHNCQVoxQztBQWFFLFFBQUEsd0JBQXdCLEVBQUVnQyxlQUFlLENBQUMrQyx3QkFiNUM7QUFjRSxRQUFBLGVBQWUsRUFBRS9DLGVBQWUsQ0FBQ2dELHFCQWRuQztBQWVFLFFBQUEsb0JBQW9CLEVBQUVoRCxlQUFlLENBQUNpRCwwQkFmeEM7QUFnQkUsUUFBQSxhQUFhLEVBQUVqRCxlQUFlLENBQUNrRCxhQWhCakM7QUFpQkUsUUFBQSxjQUFjLEVBQUVOLGNBakJsQjtBQWtCRSxRQUFBLFlBQVksRUFBRSxDQUFDekQsZUFBRCxJQUFvQixDQUFDQSxlQUFlLENBQUNIO0FBbEJyRCxRQURZLEdBcUJWLElBdEJMO0FBQUEsS0FMSCxDQXhCSixDQURGO0FBMERELEdBckdEO0FBdUdBO0FBQ0E7OztBQUNBLHNCQUFPLHVCQUFXLFVBQUNqQyxLQUFELEVBQVFvRyxHQUFSO0FBQUEsd0JBQWdCLGdDQUFDLFlBQUQsZ0NBQWtCcEcsS0FBbEI7QUFBeUIsTUFBQSxPQUFPLEVBQUVvRztBQUFsQyxPQUFoQjtBQUFBLEdBQVgsQ0FBUDtBQUNBO0FBQ0Q7QUFDRCIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAoYykgMjAyMiBVYmVyIFRlY2hub2xvZ2llcywgSW5jLlxuLy9cbi8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHlcbi8vIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlIFwiU29mdHdhcmVcIiksIHRvIGRlYWxcbi8vIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHNcbi8vIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGxcbi8vIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpc1xuLy8gZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpcbi8vXG4vLyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpblxuLy8gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4vL1xuLy8gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUlxuLy8gSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksXG4vLyBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEVcbi8vIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVJcbi8vIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sXG4vLyBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOXG4vLyBUSEUgU09GVFdBUkUuXG5cbmltcG9ydCBSZWFjdCwge3VzZUNhbGxiYWNrLCBmb3J3YXJkUmVmLCB1c2VNZW1vfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgc3R5bGVkIGZyb20gJ3N0eWxlZC1jb21wb25lbnRzJztcbmltcG9ydCBUaW1lV2lkZ2V0RmFjdG9yeSBmcm9tICcuL2ZpbHRlcnMvdGltZS13aWRnZXQnO1xuaW1wb3J0IEFuaW1hdGlvbkNvbnRyb2xGYWN0b3J5IGZyb20gJy4vY29tbW9uL2FuaW1hdGlvbi1jb250cm9sL2FuaW1hdGlvbi1jb250cm9sJztcbmltcG9ydCBBbmltYXRpb25Db250cm9sbGVyRmFjdG9yeSBmcm9tICcuL2NvbW1vbi9hbmltYXRpb24tY29udHJvbC9hbmltYXRpb24tY29udHJvbGxlcic7XG5pbXBvcnQge0FOSU1BVElPTl9XSU5ET1csIEZJTFRFUl9UWVBFU30gZnJvbSAnY29uc3RhbnRzL2RlZmF1bHQtc2V0dGluZ3MnO1xuaW1wb3J0IHtnZXRJbnRlcnZhbEJpbnN9IGZyb20gJ3V0aWxzL2ZpbHRlci11dGlscyc7XG5pbXBvcnQge21lZGlhfSBmcm9tICdzdHlsZXMvbWVkaWEtYnJlYWtwb2ludHMnO1xuXG5jb25zdCBtYXhXaWR0aCA9IDEwODA7XG5cbmNvbnN0IEJvdHRvbVdpZGdldENvbnRhaW5lciA9IHN0eWxlZC5kaXZgXG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIHBhZGRpbmctdG9wOiAke3Byb3BzID0+IChwcm9wcy5oYXNQYWRkaW5nID8gcHJvcHMudGhlbWUuYm90dG9tV2lkZ2V0UGFkZGluZ1RvcCA6IDApfXB4O1xuICBwYWRkaW5nLXJpZ2h0OiAke3Byb3BzID0+IChwcm9wcy5oYXNQYWRkaW5nID8gcHJvcHMudGhlbWUuYm90dG9tV2lkZ2V0UGFkZGluZ1JpZ2h0IDogMCl9cHg7XG4gIHBhZGRpbmctYm90dG9tOiAke3Byb3BzID0+IChwcm9wcy5oYXNQYWRkaW5nID8gcHJvcHMudGhlbWUuYm90dG9tV2lkZ2V0UGFkZGluZ0JvdHRvbSA6IDApfXB4O1xuICBwYWRkaW5nLWxlZnQ6ICR7cHJvcHMgPT4gKHByb3BzLmhhc1BhZGRpbmcgPyBwcm9wcy50aGVtZS5ib3R0b21XaWRnZXRQYWRkaW5nTGVmdCA6IDApfXB4O1xuICBwb2ludGVyLWV2ZW50czogbm9uZSAhaW1wb3J0YW50OyAvKiBwcmV2ZW50IHBhZGRpbmcgZnJvbSBibG9ja2luZyBpbnB1dCAqL1xuICAmID4gKiB7XG4gICAgLyogYWxsIGNoaWxkcmVuIHNob3VsZCBhbGxvdyBpbnB1dCAqL1xuICAgIHBvaW50ZXItZXZlbnRzOiBhbGw7XG4gIH1cbiAgd2lkdGg6ICR7cHJvcHMgPT4gcHJvcHMud2lkdGh9cHg7XG4gIHotaW5kZXg6IDE7XG4gICR7bWVkaWEucG9ydGFibGVgcGFkZGluZzogMDtgfVxuYDtcblxuRmlsdGVyQW5pbWF0aW9uQ29udHJvbGxlckZhY3RvcnkuZGVwcyA9IFtBbmltYXRpb25Db250cm9sbGVyRmFjdG9yeV07XG5leHBvcnQgZnVuY3Rpb24gRmlsdGVyQW5pbWF0aW9uQ29udHJvbGxlckZhY3RvcnkoQW5pbWF0aW9uQ29udHJvbGxlcikge1xuICBjb25zdCBGaWx0ZXJBbmltYXRpb25Db250cm9sbGVyID0gKHtmaWx0ZXIsIGZpbHRlcklkeCwgc2V0RmlsdGVyQW5pbWF0aW9uVGltZSwgY2hpbGRyZW59KSA9PiB7XG4gICAgY29uc3QgaW50ZXJ2YWxCaW5zID0gdXNlTWVtbygoKSA9PiBnZXRJbnRlcnZhbEJpbnMoZmlsdGVyKSwgW2ZpbHRlcl0pO1xuXG4gICAgY29uc3Qgc3RlcHMgPSB1c2VNZW1vKCgpID0+IChpbnRlcnZhbEJpbnMgPyBpbnRlcnZhbEJpbnMubWFwKHggPT4geC54MCkgOiBudWxsKSwgW1xuICAgICAgaW50ZXJ2YWxCaW5zXG4gICAgXSk7XG5cbiAgICBjb25zdCB1cGRhdGVBbmltYXRpb24gPSB1c2VDYWxsYmFjayhcbiAgICAgIHZhbHVlID0+IHtcbiAgICAgICAgc3dpdGNoIChmaWx0ZXIuYW5pbWF0aW9uV2luZG93KSB7XG4gICAgICAgICAgY2FzZSBBTklNQVRJT05fV0lORE9XLmludGVydmFsOlxuICAgICAgICAgICAgY29uc3QgaWR4ID0gdmFsdWVbMV07XG4gICAgICAgICAgICBzZXRGaWx0ZXJBbmltYXRpb25UaW1lKGZpbHRlcklkeCwgJ3ZhbHVlJywgW1xuICAgICAgICAgICAgICBpbnRlcnZhbEJpbnNbaWR4XS54MCxcbiAgICAgICAgICAgICAgaW50ZXJ2YWxCaW5zW2lkeF0ueDEgLSAxXG4gICAgICAgICAgICBdKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICBzZXRGaWx0ZXJBbmltYXRpb25UaW1lKGZpbHRlcklkeCwgJ3ZhbHVlJywgdmFsdWUpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBbZmlsdGVySWR4LCBpbnRlcnZhbEJpbnMsIGZpbHRlci5hbmltYXRpb25XaW5kb3csIHNldEZpbHRlckFuaW1hdGlvblRpbWVdXG4gICAgKTtcblxuICAgIHJldHVybiAoXG4gICAgICA8QW5pbWF0aW9uQ29udHJvbGxlclxuICAgICAgICBrZXk9XCJmaWx0ZXItY29udHJvbFwiXG4gICAgICAgIHZhbHVlPXtmaWx0ZXIudmFsdWV9XG4gICAgICAgIGRvbWFpbj17ZmlsdGVyLmRvbWFpbn1cbiAgICAgICAgc3BlZWQ9e2ZpbHRlci5zcGVlZH1cbiAgICAgICAgaXNBbmltYXRpbmc9e2ZpbHRlci5pc0FuaW1hdGluZ31cbiAgICAgICAgYW5pbWF0aW9uV2luZG93PXtmaWx0ZXIuYW5pbWF0aW9uV2luZG93fVxuICAgICAgICBzdGVwcz17c3RlcHN9XG4gICAgICAgIHVwZGF0ZUFuaW1hdGlvbj17dXBkYXRlQW5pbWF0aW9ufVxuICAgICAgICBjaGlsZHJlbj17Y2hpbGRyZW59XG4gICAgICAvPlxuICAgICk7XG4gIH07XG4gIHJldHVybiBGaWx0ZXJBbmltYXRpb25Db250cm9sbGVyO1xufVxuXG5MYXllckFuaW1hdGlvbkNvbnRyb2xsZXJGYWN0b3J5LmRlcHMgPSBbQW5pbWF0aW9uQ29udHJvbGxlckZhY3RvcnldO1xuZXhwb3J0IGZ1bmN0aW9uIExheWVyQW5pbWF0aW9uQ29udHJvbGxlckZhY3RvcnkoQW5pbWF0aW9uQ29udHJvbGxlcikge1xuICBjb25zdCBMYXllckFuaW1hdGlvbkNvbnRyb2xsZXIgPSAoe2FuaW1hdGlvbkNvbmZpZywgc2V0TGF5ZXJBbmltYXRpb25UaW1lLCBjaGlsZHJlbn0pID0+IChcbiAgICA8QW5pbWF0aW9uQ29udHJvbGxlclxuICAgICAga2V5PVwibGF5ZXItY29udHJvbFwiXG4gICAgICB2YWx1ZT17YW5pbWF0aW9uQ29uZmlnLmN1cnJlbnRUaW1lfVxuICAgICAgZG9tYWluPXthbmltYXRpb25Db25maWcuZG9tYWlufVxuICAgICAgc3BlZWQ9e2FuaW1hdGlvbkNvbmZpZy5zcGVlZH1cbiAgICAgIGlzQW5pbWF0aW5nPXthbmltYXRpb25Db25maWcuaXNBbmltYXRpbmd9XG4gICAgICB1cGRhdGVBbmltYXRpb249e3NldExheWVyQW5pbWF0aW9uVGltZX1cbiAgICAgIHN0ZXBzPXthbmltYXRpb25Db25maWcudGltZVN0ZXBzfVxuICAgICAgYW5pbWF0aW9uV2luZG93PXtcbiAgICAgICAgYW5pbWF0aW9uQ29uZmlnLnRpbWVTdGVwcyA/IEFOSU1BVElPTl9XSU5ET1cuaW50ZXJ2YWwgOiBBTklNQVRJT05fV0lORE9XLnBvaW50XG4gICAgICB9XG4gICAgICBjaGlsZHJlbj17Y2hpbGRyZW59XG4gICAgLz5cbiAgKTtcbiAgcmV0dXJuIExheWVyQW5pbWF0aW9uQ29udHJvbGxlcjtcbn1cblxuQm90dG9tV2lkZ2V0RmFjdG9yeS5kZXBzID0gW1xuICBUaW1lV2lkZ2V0RmFjdG9yeSxcbiAgQW5pbWF0aW9uQ29udHJvbEZhY3RvcnksXG4gIEZpbHRlckFuaW1hdGlvbkNvbnRyb2xsZXJGYWN0b3J5LFxuICBMYXllckFuaW1hdGlvbkNvbnRyb2xsZXJGYWN0b3J5XG5dO1xuXG4vKiBlc2xpbnQtZGlzYWJsZSBjb21wbGV4aXR5ICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBCb3R0b21XaWRnZXRGYWN0b3J5KFxuICBUaW1lV2lkZ2V0LFxuICBBbmltYXRpb25Db250cm9sLFxuICBGaWx0ZXJBbmltYXRpb25Db250cm9sbGVyLFxuICBMYXllckFuaW1hdGlvbkNvbnRyb2xsZXJcbikge1xuICBjb25zdCBCb3R0b21XaWRnZXQgPSBwcm9wcyA9PiB7XG4gICAgY29uc3Qge1xuICAgICAgZGF0YXNldHMsXG4gICAgICBmaWx0ZXJzLFxuICAgICAgYW5pbWF0aW9uQ29uZmlnLFxuICAgICAgdmlzU3RhdGVBY3Rpb25zLFxuICAgICAgY29udGFpbmVyVyxcbiAgICAgIHVpU3RhdGUsXG4gICAgICBzaWRlUGFuZWxXaWR0aCxcbiAgICAgIGxheWVyc1xuICAgIH0gPSBwcm9wcztcblxuICAgIGNvbnN0IHthY3RpdmVTaWRlUGFuZWwsIHJlYWRPbmx5fSA9IHVpU3RhdGU7XG4gICAgY29uc3QgaXNPcGVuID0gQm9vbGVhbihhY3RpdmVTaWRlUGFuZWwpO1xuXG4gICAgY29uc3QgZW5sYXJnZWRGaWx0ZXJJZHggPSB1c2VNZW1vKFxuICAgICAgKCkgPT4gZmlsdGVycy5maW5kSW5kZXgoZiA9PiBmLmVubGFyZ2VkICYmIGYudHlwZSA9PT0gRklMVEVSX1RZUEVTLnRpbWVSYW5nZSksXG4gICAgICBbZmlsdGVyc11cbiAgICApO1xuICAgIGNvbnN0IGFuaW1hdGVkRmlsdGVySWR4ID0gdXNlTWVtbygoKSA9PiBmaWx0ZXJzLmZpbmRJbmRleChmID0+IGYuaXNBbmltYXRpbmcpLCBbZmlsdGVyc10pO1xuICAgIGNvbnN0IGFuaW1hdGVkRmlsdGVyID0gYW5pbWF0ZWRGaWx0ZXJJZHggPiAtMSA/IGZpbHRlcnNbYW5pbWF0ZWRGaWx0ZXJJZHhdIDogbnVsbDtcblxuICAgIGNvbnN0IGVubGFyZ2VkRmlsdGVyV2lkdGggPSBpc09wZW4gPyBjb250YWluZXJXIC0gc2lkZVBhbmVsV2lkdGggOiBjb250YWluZXJXO1xuXG4gICAgLy8gc2hvdyBwbGF5YmFjayBjb250cm9sIGlmIGxheWVycyBjb250YWluIHRyaXAgbGF5ZXIgJiBhdCBsZWFzdCBvbmUgdHJpcCBsYXllciBpcyB2aXNpYmxlXG4gICAgY29uc3QgYW5pbWF0YWJsZUxheWVyID0gdXNlTWVtbyhcbiAgICAgICgpID0+XG4gICAgICAgIGxheWVycy5maWx0ZXIobCA9PiBsLmNvbmZpZy5hbmltYXRpb24gJiYgbC5jb25maWcuYW5pbWF0aW9uLmVuYWJsZWQgJiYgbC5jb25maWcuaXNWaXNpYmxlKSxcbiAgICAgIFtsYXllcnNdXG4gICAgKTtcblxuICAgIGNvbnN0IHJlYWR5VG9BbmltYXRpb24gPVxuICAgICAgQXJyYXkuaXNBcnJheShhbmltYXRpb25Db25maWcuZG9tYWluKSAmJiBOdW1iZXIuaXNGaW5pdGUoYW5pbWF0aW9uQ29uZmlnLmN1cnJlbnRUaW1lKTtcbiAgICAvLyBpZiBhbmltYXRpb24gY29udHJvbCBpcyBzaG93aW5nLCBoaWRlIHRpbWUgZGlzcGxheSBpbiB0aW1lIHNsaWRlclxuICAgIGNvbnN0IHNob3dGbG9hdGluZ1RpbWVEaXNwbGF5ID0gIWFuaW1hdGFibGVMYXllci5sZW5ndGg7XG4gICAgY29uc3Qgc2hvd0FuaW1hdGlvbkNvbnRyb2wgPVxuICAgICAgYW5pbWF0YWJsZUxheWVyLmxlbmd0aCAmJiByZWFkeVRvQW5pbWF0aW9uICYmICFhbmltYXRpb25Db25maWcuaGlkZUNvbnRyb2w7XG4gICAgY29uc3Qgc2hvd1RpbWVXaWRnZXQgPSBlbmxhcmdlZEZpbHRlcklkeCA+IC0xICYmIE9iamVjdC5rZXlzKGRhdGFzZXRzKS5sZW5ndGggPiAwO1xuXG4gICAgLy8gaWYgZmlsdGVyIGlzIG5vdCBhbmltYXRpbmcsIHBhc3MgaW4gZW5sYXJnZWQgZmlsdGVyIGhlcmUgYmVjYXVzZVxuICAgIC8vIGFuaW1hdGlvbiBjb250cm9sbGVyIG5lZWRzIHRvIGNhbGwgcmVzZXQgb24gaXRcbiAgICBjb25zdCBmaWx0ZXIgPSBhbmltYXRlZEZpbHRlciB8fCBmaWx0ZXJzW2VubGFyZ2VkRmlsdGVySWR4XTtcblxuICAgIHJldHVybiAoXG4gICAgICA8Qm90dG9tV2lkZ2V0Q29udGFpbmVyXG4gICAgICAgIHdpZHRoPXtNYXRoLm1pbihtYXhXaWR0aCwgZW5sYXJnZWRGaWx0ZXJXaWR0aCl9XG4gICAgICAgIGNsYXNzTmFtZT1cImJvdHRvbS13aWRnZXQtLWNvbnRhaW5lclwiXG4gICAgICAgIGhhc1BhZGRpbmc9e3Nob3dBbmltYXRpb25Db250cm9sIHx8IHNob3dUaW1lV2lkZ2V0fVxuICAgICAgPlxuICAgICAgICA8TGF5ZXJBbmltYXRpb25Db250cm9sbGVyXG4gICAgICAgICAgYW5pbWF0aW9uQ29uZmlnPXthbmltYXRpb25Db25maWd9XG4gICAgICAgICAgc2V0TGF5ZXJBbmltYXRpb25UaW1lPXt2aXNTdGF0ZUFjdGlvbnMuc2V0TGF5ZXJBbmltYXRpb25UaW1lfVxuICAgICAgICA+XG4gICAgICAgICAgeyhpc0FuaW1hdGluZywgc3RhcnQsIHBhdXNlLCByZXNldCkgPT5cbiAgICAgICAgICAgIHNob3dBbmltYXRpb25Db250cm9sID8gKFxuICAgICAgICAgICAgICA8QW5pbWF0aW9uQ29udHJvbFxuICAgICAgICAgICAgICAgIGFuaW1hdGlvbkNvbmZpZz17YW5pbWF0aW9uQ29uZmlnfVxuICAgICAgICAgICAgICAgIHNldExheWVyQW5pbWF0aW9uVGltZT17dmlzU3RhdGVBY3Rpb25zLnNldExheWVyQW5pbWF0aW9uVGltZX1cbiAgICAgICAgICAgICAgICB1cGRhdGVBbmltYXRpb25TcGVlZD17dmlzU3RhdGVBY3Rpb25zLnVwZGF0ZUxheWVyQW5pbWF0aW9uU3BlZWR9XG4gICAgICAgICAgICAgICAgdG9nZ2xlQW5pbWF0aW9uPXt2aXNTdGF0ZUFjdGlvbnMudG9nZ2xlTGF5ZXJBbmltYXRpb259XG4gICAgICAgICAgICAgICAgaXNBbmltYXRhYmxlPXshYW5pbWF0ZWRGaWx0ZXJ9XG4gICAgICAgICAgICAgICAgaXNBbmltYXRpbmc9e2lzQW5pbWF0aW5nfVxuICAgICAgICAgICAgICAgIHJlc2V0QW5pbWF0aW9uPXtyZXNldH1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICkgOiBudWxsXG4gICAgICAgICAgfVxuICAgICAgICA8L0xheWVyQW5pbWF0aW9uQ29udHJvbGxlcj5cbiAgICAgICAge2ZpbHRlciAmJiAoXG4gICAgICAgICAgPEZpbHRlckFuaW1hdGlvbkNvbnRyb2xsZXJcbiAgICAgICAgICAgIGZpbHRlcj17ZmlsdGVyfVxuICAgICAgICAgICAgZmlsdGVySWR4PXthbmltYXRlZEZpbHRlcklkeCA+IC0xID8gYW5pbWF0ZWRGaWx0ZXJJZHggOiBlbmxhcmdlZEZpbHRlcklkeH1cbiAgICAgICAgICAgIHNldEZpbHRlckFuaW1hdGlvblRpbWU9e3Zpc1N0YXRlQWN0aW9ucy5zZXRGaWx0ZXJBbmltYXRpb25UaW1lfVxuICAgICAgICAgID5cbiAgICAgICAgICAgIHsoaXNBbmltYXRpbmcsIHN0YXJ0LCBwYXVzZSwgcmVzZXRBbmltYXRpb24pID0+XG4gICAgICAgICAgICAgIHNob3dUaW1lV2lkZ2V0ID8gKFxuICAgICAgICAgICAgICAgIDxUaW1lV2lkZ2V0XG4gICAgICAgICAgICAgICAgICAvLyBUaW1lV2lkZ2V0IHVzZXMgUmVhY3QubWVtbywgaGVyZSB3ZSBwYXNzIHdpZHRoXG4gICAgICAgICAgICAgICAgICAvLyBldmVuIHRob3VnaCBpdCBkb2VzbnQgdXNlIGl0LCB0byBmb3JjZSByZXJlbmRlclxuICAgICAgICAgICAgICAgICAgd2lkdGg9e2VubGFyZ2VkRmlsdGVyV2lkdGh9XG4gICAgICAgICAgICAgICAgICBmaWx0ZXI9e2ZpbHRlcnNbZW5sYXJnZWRGaWx0ZXJJZHhdfVxuICAgICAgICAgICAgICAgICAgaW5kZXg9e2VubGFyZ2VkRmlsdGVySWR4fVxuICAgICAgICAgICAgICAgICAgaXNBbnlGaWx0ZXJBbmltYXRpbmc9e0Jvb2xlYW4oYW5pbWF0ZWRGaWx0ZXIpfVxuICAgICAgICAgICAgICAgICAgZGF0YXNldHM9e2RhdGFzZXRzfVxuICAgICAgICAgICAgICAgICAgcmVhZE9ubHk9e3JlYWRPbmx5fVxuICAgICAgICAgICAgICAgICAgc2hvd1RpbWVEaXNwbGF5PXtzaG93RmxvYXRpbmdUaW1lRGlzcGxheX1cbiAgICAgICAgICAgICAgICAgIHNldEZpbHRlclBsb3Q9e3Zpc1N0YXRlQWN0aW9ucy5zZXRGaWx0ZXJQbG90fVxuICAgICAgICAgICAgICAgICAgc2V0RmlsdGVyPXt2aXNTdGF0ZUFjdGlvbnMuc2V0RmlsdGVyfVxuICAgICAgICAgICAgICAgICAgc2V0RmlsdGVyQW5pbWF0aW9uVGltZT17dmlzU3RhdGVBY3Rpb25zLnNldEZpbHRlckFuaW1hdGlvblRpbWV9XG4gICAgICAgICAgICAgICAgICBzZXRGaWx0ZXJBbmltYXRpb25XaW5kb3c9e3Zpc1N0YXRlQWN0aW9ucy5zZXRGaWx0ZXJBbmltYXRpb25XaW5kb3d9XG4gICAgICAgICAgICAgICAgICB0b2dnbGVBbmltYXRpb249e3Zpc1N0YXRlQWN0aW9ucy50b2dnbGVGaWx0ZXJBbmltYXRpb259XG4gICAgICAgICAgICAgICAgICB1cGRhdGVBbmltYXRpb25TcGVlZD17dmlzU3RhdGVBY3Rpb25zLnVwZGF0ZUZpbHRlckFuaW1hdGlvblNwZWVkfVxuICAgICAgICAgICAgICAgICAgZW5sYXJnZUZpbHRlcj17dmlzU3RhdGVBY3Rpb25zLmVubGFyZ2VGaWx0ZXJ9XG4gICAgICAgICAgICAgICAgICByZXNldEFuaW1hdGlvbj17cmVzZXRBbmltYXRpb259XG4gICAgICAgICAgICAgICAgICBpc0FuaW1hdGFibGU9eyFhbmltYXRpb25Db25maWcgfHwgIWFuaW1hdGlvbkNvbmZpZy5pc0FuaW1hdGluZ31cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICApIDogbnVsbFxuICAgICAgICAgICAgfVxuICAgICAgICAgIDwvRmlsdGVyQW5pbWF0aW9uQ29udHJvbGxlcj5cbiAgICAgICAgKX1cbiAgICAgIDwvQm90dG9tV2lkZ2V0Q29udGFpbmVyPlxuICAgICk7XG4gIH07XG5cbiAgLyogZXNsaW50LWRpc2FibGUgcmVhY3QvZGlzcGxheS1uYW1lICovXG4gIC8vIEB0cy1pZ25vcmVcbiAgcmV0dXJuIGZvcndhcmRSZWYoKHByb3BzLCByZWYpID0+IDxCb3R0b21XaWRnZXQgey4uLnByb3BzfSByb290UmVmPXtyZWZ9IC8+KTtcbiAgLyogZXNsaW50LWVuYWJsZSByZWFjdC9kaXNwbGF5LW5hbWUgKi9cbn1cbi8qIGVzbGludC1lbmFibGUgY29tcGxleGl0eSAqL1xuIl19
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
5
|
+
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard");
|
|
6
|
+
|
|
7
|
+
Object.defineProperty(exports, "__esModule", {
|
|
8
|
+
value: true
|
|
9
|
+
});
|
|
10
|
+
exports["default"] = exports.ActionPanelItem = void 0;
|
|
11
|
+
|
|
12
|
+
var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
|
|
13
|
+
|
|
14
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
15
|
+
|
|
16
|
+
var _styledComponents = _interopRequireDefault(require("styled-components"));
|
|
17
|
+
|
|
18
|
+
var _classnames = _interopRequireDefault(require("classnames"));
|
|
19
|
+
|
|
20
|
+
var _icons = require("./icons");
|
|
21
|
+
|
|
22
|
+
var _switch = _interopRequireDefault(require("./switch"));
|
|
23
|
+
|
|
24
|
+
var _templateObject, _templateObject2, _templateObject3;
|
|
25
|
+
|
|
26
|
+
var StyledItem = _styledComponents["default"].div(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n flex-direction: row;\n align-items: center;\n font-size: 12px;\n line-height: 14px;\n padding: 8px;\n min-height: ", "px;\n text-transform: capitalize;\n background-color: ", ";\n max-width: 200px;\n position: relative;\n\n ", " :hover {\n cursor: pointer;\n color: ", ";\n .nested-group {\n display: block;\n }\n }\n\n .label {\n margin-left: 8px;\n white-space: nowrap;\n text-overflow: ellipsis;\n }\n\n .label-icon {\n margin-left: auto;\n }\n\n .nested-group {\n max-width: 200px;\n overflow: hidden;\n display: none;\n color: ", ";\n position: absolute;\n left: 100%;\n top: 0px;\n padding-left: 4px;\n\n label {\n white-space: nowrap;\n text-overflow: ellipsis;\n }\n }\n"])), function (props) {
|
|
27
|
+
return props.theme.actionPanelHeight;
|
|
28
|
+
}, function (props) {
|
|
29
|
+
return props.theme.dropdownListBgd;
|
|
30
|
+
}, function (props) {
|
|
31
|
+
return props.color ? "border-left: 3px solid rgb(".concat(props.color, ");") : '';
|
|
32
|
+
}, function (props) {
|
|
33
|
+
return props.theme.textColorHl;
|
|
34
|
+
}, function (props) {
|
|
35
|
+
return props.theme.textColor;
|
|
36
|
+
});
|
|
37
|
+
|
|
38
|
+
var StyledCheckedbox = (0, _styledComponents["default"])(_switch["default"])(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2["default"])(["\n label {\n margin-bottom: 0;\n color: ", ";\n padding-left: 20px;\n line-height: 12px;\n\n &:before {\n width: 12px;\n height: 12px;\n background-color: ", ";\n }\n &:hover {\n color: ", ";\n }\n }\n"])), function (props) {
|
|
39
|
+
return props.theme.textColor;
|
|
40
|
+
}, function (props) {
|
|
41
|
+
return props.theme.dropdownListBgd;
|
|
42
|
+
}, function (props) {
|
|
43
|
+
return props.theme.textColorHl;
|
|
44
|
+
});
|
|
45
|
+
|
|
46
|
+
var renderChildren = function renderChildren(child, index) {
|
|
47
|
+
return /*#__PURE__*/_react["default"].cloneElement(child, {
|
|
48
|
+
onClick: function onClick() {
|
|
49
|
+
if ( /*#__PURE__*/_react["default"].isValidElement(child)) {
|
|
50
|
+
if (child.props.onClick) {
|
|
51
|
+
child.props.onClick(index);
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
},
|
|
55
|
+
className: (0, _classnames["default"])('action-panel-item', child.props.className)
|
|
56
|
+
});
|
|
57
|
+
};
|
|
58
|
+
/** @type {typeof import('./action-panel').ActionPanelItem} */
|
|
59
|
+
|
|
60
|
+
|
|
61
|
+
var ActionPanelItem = /*#__PURE__*/_react["default"].memo(function (_ref) {
|
|
62
|
+
var children = _ref.children,
|
|
63
|
+
color = _ref.color,
|
|
64
|
+
className = _ref.className,
|
|
65
|
+
Icon = _ref.Icon,
|
|
66
|
+
label = _ref.label,
|
|
67
|
+
onClick = _ref.onClick,
|
|
68
|
+
isSelection = _ref.isSelection,
|
|
69
|
+
isActive = _ref.isActive,
|
|
70
|
+
style = _ref.style;
|
|
71
|
+
var onClickCallback = (0, _react.useCallback)(function (event) {
|
|
72
|
+
event.preventDefault();
|
|
73
|
+
event.stopPropagation();
|
|
74
|
+
onClick === null || onClick === void 0 ? void 0 : onClick();
|
|
75
|
+
}, [onClick]);
|
|
76
|
+
return /*#__PURE__*/_react["default"].createElement(StyledItem, {
|
|
77
|
+
className: className,
|
|
78
|
+
onClick: onClickCallback,
|
|
79
|
+
color: color,
|
|
80
|
+
style: style
|
|
81
|
+
}, Icon ? /*#__PURE__*/_react["default"].createElement("div", {
|
|
82
|
+
className: "icon"
|
|
83
|
+
}, /*#__PURE__*/_react["default"].createElement(Icon, {
|
|
84
|
+
height: "16px"
|
|
85
|
+
})) : null, isSelection ? /*#__PURE__*/_react["default"].createElement(StyledCheckedbox, {
|
|
86
|
+
type: "checkbox",
|
|
87
|
+
checked: Boolean(isActive),
|
|
88
|
+
id: "switch-".concat(label),
|
|
89
|
+
secondary: true,
|
|
90
|
+
label: label
|
|
91
|
+
}) : /*#__PURE__*/_react["default"].createElement("span", {
|
|
92
|
+
className: "label"
|
|
93
|
+
}, label), children ? /*#__PURE__*/_react["default"].createElement("div", null, /*#__PURE__*/_react["default"].createElement("div", {
|
|
94
|
+
className: "label-icon"
|
|
95
|
+
}, /*#__PURE__*/_react["default"].createElement(_icons.ArrowRight, {
|
|
96
|
+
height: "16px"
|
|
97
|
+
})), /*#__PURE__*/_react["default"].createElement("div", {
|
|
98
|
+
className: "nested-group"
|
|
99
|
+
}, _react["default"].Children.map(children, renderChildren))) : null);
|
|
100
|
+
});
|
|
101
|
+
|
|
102
|
+
exports.ActionPanelItem = ActionPanelItem;
|
|
103
|
+
ActionPanelItem.displayName = 'ActionPanelItem';
|
|
104
|
+
|
|
105
|
+
var StyledActionPanel = _styledComponents["default"].div(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n flex-direction: ", ";\n box-shadow: ", ";\n transition: ", ";\n color: ", ";\n\n .action-panel-item {\n ", " &:last-of-type {\n border-bottom: 0;\n }\n }\n"])), function (props) {
|
|
106
|
+
return props.direction;
|
|
107
|
+
}, function (props) {
|
|
108
|
+
return props.theme.dropdownListShadow;
|
|
109
|
+
}, function (props) {
|
|
110
|
+
return props.theme.transitionSlow;
|
|
111
|
+
}, function (props) {
|
|
112
|
+
return props.theme.textColor;
|
|
113
|
+
}, function (props) {
|
|
114
|
+
return props.direction === 'column' ? "border-bottom: 1px solid ".concat(props.theme.panelHeaderIcon) : "border-right: 1px solid ".concat(props.theme.panelHeaderIcon);
|
|
115
|
+
}); // React compound element https://medium.com/@Dane_s/react-js-compound-components-a6e54b5c9992
|
|
116
|
+
|
|
117
|
+
/** @type {typeof import('./action-panel').ActionPanel} */
|
|
118
|
+
|
|
119
|
+
|
|
120
|
+
var ActionPanel = function ActionPanel(_ref2) {
|
|
121
|
+
var children = _ref2.children,
|
|
122
|
+
className = _ref2.className,
|
|
123
|
+
_ref2$direction = _ref2.direction,
|
|
124
|
+
direction = _ref2$direction === void 0 ? 'column' : _ref2$direction;
|
|
125
|
+
return /*#__PURE__*/_react["default"].createElement(StyledActionPanel, {
|
|
126
|
+
className: className,
|
|
127
|
+
direction: direction
|
|
128
|
+
}, _react["default"].Children.map(children, renderChildren));
|
|
129
|
+
};
|
|
130
|
+
|
|
131
|
+
ActionPanel.displayName = 'ActionPanel';
|
|
132
|
+
var _default = ActionPanel;
|
|
133
|
+
exports["default"] = _default;
|
|
134
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL2NvbW1vbi9hY3Rpb24tcGFuZWwuanMiXSwibmFtZXMiOlsiU3R5bGVkSXRlbSIsInN0eWxlZCIsImRpdiIsInByb3BzIiwidGhlbWUiLCJhY3Rpb25QYW5lbEhlaWdodCIsImRyb3Bkb3duTGlzdEJnZCIsImNvbG9yIiwidGV4dENvbG9ySGwiLCJ0ZXh0Q29sb3IiLCJTdHlsZWRDaGVja2VkYm94IiwiQ2hlY2tib3giLCJyZW5kZXJDaGlsZHJlbiIsImNoaWxkIiwiaW5kZXgiLCJSZWFjdCIsImNsb25lRWxlbWVudCIsIm9uQ2xpY2siLCJpc1ZhbGlkRWxlbWVudCIsImNsYXNzTmFtZSIsIkFjdGlvblBhbmVsSXRlbSIsIm1lbW8iLCJjaGlsZHJlbiIsIkljb24iLCJsYWJlbCIsImlzU2VsZWN0aW9uIiwiaXNBY3RpdmUiLCJzdHlsZSIsIm9uQ2xpY2tDYWxsYmFjayIsImV2ZW50IiwicHJldmVudERlZmF1bHQiLCJzdG9wUHJvcGFnYXRpb24iLCJCb29sZWFuIiwiQ2hpbGRyZW4iLCJtYXAiLCJkaXNwbGF5TmFtZSIsIlN0eWxlZEFjdGlvblBhbmVsIiwiZGlyZWN0aW9uIiwiZHJvcGRvd25MaXN0U2hhZG93IiwidHJhbnNpdGlvblNsb3ciLCJwYW5lbEhlYWRlckljb24iLCJBY3Rpb25QYW5lbCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7OztBQW9CQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7OztBQUVBLElBQU1BLFVBQVUsR0FBR0MsNkJBQU9DLEdBQVYseTJCQU9BLFVBQUFDLEtBQUs7QUFBQSxTQUFJQSxLQUFLLENBQUNDLEtBQU4sQ0FBWUMsaUJBQWhCO0FBQUEsQ0FQTCxFQVNNLFVBQUFGLEtBQUs7QUFBQSxTQUFJQSxLQUFLLENBQUNDLEtBQU4sQ0FBWUUsZUFBaEI7QUFBQSxDQVRYLEVBYVosVUFBQUgsS0FBSztBQUFBLFNBQUtBLEtBQUssQ0FBQ0ksS0FBTix3Q0FBNENKLEtBQUssQ0FBQ0ks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QUFEO0FBQW1CLElBQUEsU0FBUyxFQUFFbEIsU0FBOUI7QUFBeUMsSUFBQSxTQUFTLEVBQUVrQjtBQUFwRCxLQUNHdEIsa0JBQU1rQixRQUFOLENBQWVDLEdBQWYsQ0FBbUJaLFFBQW5CLEVBQTZCVixjQUE3QixDQURILENBRGtCO0FBQUEsQ0FBcEI7O0FBTUE2QixXQUFXLENBQUNOLFdBQVosR0FBMEIsYUFBMUI7ZUFFZU0sVyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAoYykgMjAyMiBVYmVyIFRlY2hub2xvZ2llcywgSW5jLlxuLy9cbi8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHlcbi8vIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlIFwiU29mdHdhcmVcIiksIHRvIGRlYWxcbi8vIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHNcbi8vIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGxcbi8vIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpc1xuLy8gZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpcbi8vXG4vLyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpblxuLy8gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4vL1xuLy8gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUlxuLy8gSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksXG4vLyBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEVcbi8vIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVJcbi8vIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sXG4vLyBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOXG4vLyBUSEUgU09GVFdBUkUuXG5cbmltcG9ydCBSZWFjdCwge3VzZUNhbGxiYWNrfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgc3R5bGVkIGZyb20gJ3N0eWxlZC1jb21wb25lbnRzJztcbmltcG9ydCBjbGFzc25hbWVzIGZyb20gJ2NsYXNzbmFtZXMnO1xuaW1wb3J0IHtBcnJvd1JpZ2h0fSBmcm9tICdjb21wb25lbnRzL2NvbW1vbi9pY29ucyc7XG5pbXBvcnQgQ2hlY2tib3ggZnJvbSAnY29tcG9uZW50cy9jb21tb24vc3dpdGNoJztcblxuY29uc3QgU3R5bGVkSXRlbSA9IHN0eWxlZC5kaXZgXG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiByb3c7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGZvbnQtc2l6ZTogMTJweDtcbiAgbGluZS1oZWlnaHQ6IDE0cHg7XG4gIHBhZGRpbmc6IDhweDtcbiAgbWluLWhlaWdodDogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5hY3Rpb25QYW5lbEhlaWdodH1weDtcbiAgdGV4dC10cmFuc2Zvcm06IGNhcGl0YWxpemU7XG4gIGJhY2tncm91bmQtY29sb3I6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuZHJvcGRvd25MaXN0QmdkfTtcbiAgbWF4LXdpZHRoOiAyMDBweDtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuXG4gICR7cHJvcHMgPT4gKHByb3BzLmNvbG9yID8gYGJvcmRlci1sZWZ0OiAzcHggc29saWQgcmdiKCR7cHJvcHMuY29sb3J9KTtgIDogJycpfSA6aG92ZXIge1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICBjb2xvcjogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS50ZXh0Q29sb3JIbH07XG4gICAgLm5lc3RlZC1ncm91cCB7XG4gICAgICBkaXNwbGF5OiBibG9jaztcbiAgICB9XG4gIH1cblxuICAubGFiZWwge1xuICAgIG1hcmdpbi1sZWZ0OiA4cHg7XG4gICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgfVxuXG4gIC5sYWJlbC1pY29uIHtcbiAgICBtYXJnaW4tbGVmdDogYXV0bztcbiAgfVxuXG4gIC5uZXN0ZWQtZ3JvdXAge1xuICAgIG1heC13aWR0aDogMjAwcHg7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICBkaXNwbGF5OiBub25lO1xuICAgIGNvbG9yOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLnRleHRDb2xvcn07XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIGxlZnQ6IDEwMCU7XG4gICAgdG9wOiAwcHg7XG4gICAgcGFkZGluZy1sZWZ0OiA0cHg7XG5cbiAgICBsYWJlbCB7XG4gICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4gICAgfVxuICB9XG5gO1xuXG5jb25zdCBTdHlsZWRDaGVja2VkYm94ID0gc3R5bGVkKENoZWNrYm94KWBcbiAgbGFiZWwge1xuICAgIG1hcmdpbi1ib3R0b206IDA7XG4gICAgY29sb3I6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUudGV4dENvbG9yfTtcbiAgICBwYWRkaW5nLWxlZnQ6IDIwcHg7XG4gICAgbGluZS1oZWlnaHQ6IDEycHg7XG5cbiAgICAmOmJlZm9yZSB7XG4gICAgICB3aWR0aDogMTJweDtcbiAgICAgIGhlaWdodDogMTJweDtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuZHJvcGRvd25MaXN0QmdkfTtcbiAgICB9XG4gICAgJjpob3ZlciB7XG4gICAgICBjb2xvcjogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS50ZXh0Q29sb3JIbH07XG4gICAgfVxuICB9XG5gO1xuXG5jb25zdCByZW5kZXJDaGlsZHJlbiA9IChjaGlsZCwgaW5kZXgpID0+XG4gIFJlYWN0LmNsb25lRWxlbWVudChjaGlsZCwge1xuICAgIG9uQ2xpY2s6ICgpID0+IHtcbiAgICAgIGlmIChSZWFjdC5pc1ZhbGlkRWxlbWVudChjaGlsZCkpIHtcbiAgICAgICAgaWYgKGNoaWxkLnByb3BzLm9uQ2xpY2spIHtcbiAgICAgICAgICBjaGlsZC5wcm9wcy5vbkNsaWNrKGluZGV4KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG4gICAgY2xhc3NOYW1lOiBjbGFzc25hbWVzKCdhY3Rpb24tcGFuZWwtaXRlbScsIGNoaWxkLnByb3BzLmNsYXNzTmFtZSlcbiAgfSk7XG5cbi8qKiBAdHlwZSB7dHlwZW9mIGltcG9ydCgnLi9hY3Rpb24tcGFuZWwnKS5BY3Rpb25QYW5lbEl0ZW19ICovXG5leHBvcnQgY29uc3QgQWN0aW9uUGFuZWxJdGVtID0gUmVhY3QubWVtbyhcbiAgKHtjaGlsZHJlbiwgY29sb3IsIGNsYXNzTmFtZSwgSWNvbiwgbGFiZWwsIG9uQ2xpY2ssIGlzU2VsZWN0aW9uLCBpc0FjdGl2ZSwgc3R5bGV9KSA9PiB7XG4gICAgY29uc3Qgb25DbGlja0NhbGxiYWNrID0gdXNlQ2FsbGJhY2soXG4gICAgICBldmVudCA9PiB7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICBvbkNsaWNrPy4oKTtcbiAgICAgIH0sXG4gICAgICBbb25DbGlja11cbiAgICApO1xuXG4gICAgcmV0dXJuIChcbiAgICAgIDxTdHlsZWRJdGVtIGNsYXNzTmFtZT17Y2xhc3NOYW1lfSBvbkNsaWNrPXtvbkNsaWNrQ2FsbGJhY2t9IGNvbG9yPXtjb2xvcn0gc3R5bGU9e3N0eWxlfT5cbiAgICAgICAge0ljb24gPyAoXG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJpY29uXCI+XG4gICAgICAgICAgICA8SWNvbiBoZWlnaHQ9XCIxNnB4XCIgLz5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgKSA6IG51bGx9XG4gICAgICAgIHtpc1NlbGVjdGlvbiA/IChcbiAgICAgICAgICA8U3R5bGVkQ2hlY2tlZGJveFxuICAgICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcbiAgICAgICAgICAgIGNoZWNrZWQ9e0Jvb2xlYW4oaXNBY3RpdmUpfVxuICAgICAgICAgICAgaWQ9e2Bzd2l0Y2gtJHtsYWJlbH1gfVxuICAgICAgICAgICAgc2Vjb25kYXJ5XG4gICAgICAgICAgICBsYWJlbD17bGFiZWx9XG4gICAgICAgICAgLz5cbiAgICAgICAgKSA6IChcbiAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJsYWJlbFwiPntsYWJlbH08L3NwYW4+XG4gICAgICAgICl9XG4gICAgICAgIHtjaGlsZHJlbiA/IChcbiAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJsYWJlbC1pY29uXCI+XG4gICAgICAgICAgICAgIDxBcnJvd1JpZ2h0IGhlaWdodD1cIjE2cHhcIiAvPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm5lc3RlZC1ncm91cFwiPntSZWFjdC5DaGlsZHJlbi5tYXAoY2hpbGRyZW4sIHJlbmRlckNoaWxkcmVuKX08L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgKSA6IG51bGx9XG4gICAgICA8L1N0eWxlZEl0ZW0+XG4gICAgKTtcbiAgfVxuKTtcblxuQWN0aW9uUGFuZWxJdGVtLmRpc3BsYXlOYW1lID0gJ0FjdGlvblBhbmVsSXRlbSc7XG5cbmNvbnN0IFN0eWxlZEFjdGlvblBhbmVsID0gc3R5bGVkLmRpdmBcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246ICR7cHJvcHMgPT4gcHJvcHMuZGlyZWN0aW9ufTtcbiAgYm94LXNoYWRvdzogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5kcm9wZG93bkxpc3RTaGFkb3d9O1xuICB0cmFuc2l0aW9uOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLnRyYW5zaXRpb25TbG93fTtcbiAgY29sb3I6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUudGV4dENvbG9yfTtcblxuICAuYWN0aW9uLXBhbmVsLWl0ZW0ge1xuICAgICR7cHJvcHMgPT5cbiAgICAgIHByb3BzLmRpcmVjdGlvbiA9PT0gJ2NvbHVtbidcbiAgICAgICAgPyBgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICR7cHJvcHMudGhlbWUucGFuZWxIZWFkZXJJY29ufWBcbiAgICAgICAgOiBgYm9yZGVyLXJpZ2h0OiAxcHggc29saWQgJHtwcm9wcy50aGVtZS5wYW5lbEhlYWRlckljb259YH0gJjpsYXN0LW9mLXR5cGUge1xuICAgICAgYm9yZGVyLWJvdHRvbTogMDtcbiAgICB9XG4gIH1cbmA7XG5cbi8vIFJlYWN0IGNvbXBvdW5kIGVsZW1lbnQgaHR0cHM6Ly9tZWRpdW0uY29tL0BEYW5lX3MvcmVhY3QtanMtY29tcG91bmQtY29tcG9uZW50cy1hNmU1NGI1Yzk5OTJcbi8qKiBAdHlwZSB7dHlwZW9mIGltcG9ydCgnLi9hY3Rpb24tcGFuZWwnKS5BY3Rpb25QYW5lbH0gKi9cbmNvbnN0IEFjdGlvblBhbmVsID0gKHtjaGlsZHJlbiwgY2xhc3NOYW1lLCBkaXJlY3Rpb24gPSAnY29sdW1uJ30pID0+IChcbiAgPFN0eWxlZEFjdGlvblBhbmVsIGNsYXNzTmFtZT17Y2xhc3NOYW1lfSBkaXJlY3Rpb249e2RpcmVjdGlvbn0+XG4gICAge1JlYWN0LkNoaWxkcmVuLm1hcChjaGlsZHJlbiwgcmVuZGVyQ2hpbGRyZW4pfVxuICA8L1N0eWxlZEFjdGlvblBhbmVsPlxuKTtcblxuQWN0aW9uUGFuZWwuZGlzcGxheU5hbWUgPSAnQWN0aW9uUGFuZWwnO1xuXG5leHBvcnQgZGVmYXVsdCBBY3Rpb25QYW5lbDtcbiJdfQ==
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
5
|
+
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard");
|
|
6
|
+
|
|
7
|
+
Object.defineProperty(exports, "__esModule", {
|
|
8
|
+
value: true
|
|
9
|
+
});
|
|
10
|
+
exports["default"] = void 0;
|
|
11
|
+
|
|
12
|
+
var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
|
|
13
|
+
|
|
14
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
15
|
+
|
|
16
|
+
var _styledComponents = _interopRequireDefault(require("styled-components"));
|
|
17
|
+
|
|
18
|
+
var _slider = _interopRequireDefault(require("../slider/slider"));
|
|
19
|
+
|
|
20
|
+
var _styledComponents2 = require("../styled-components");
|
|
21
|
+
|
|
22
|
+
var _playbackControls = _interopRequireDefault(require("./playback-controls"));
|
|
23
|
+
|
|
24
|
+
var _floatingTimeDisplay = _interopRequireDefault(require("./floating-time-display"));
|
|
25
|
+
|
|
26
|
+
var _dataUtils = require("../../../utils/data-utils");
|
|
27
|
+
|
|
28
|
+
var _defaultSettings = require("../../../constants/default-settings");
|
|
29
|
+
|
|
30
|
+
var _templateObject, _templateObject2, _templateObject3;
|
|
31
|
+
|
|
32
|
+
var SliderWrapper = _styledComponents["default"].div(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n position: relative;\n flex-grow: 1;\n margin-right: 24px;\n margin-left: 24px;\n"])));
|
|
33
|
+
|
|
34
|
+
var AnimationWidgetInner = _styledComponents["default"].div(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2["default"])(["\n position: relative;\n display: flex;\n align-items: center;\n height: 32px;\n\n .playback-controls {\n margin-left: -8px;\n margin-right: 16px;\n }\n"])));
|
|
35
|
+
|
|
36
|
+
var StyledDomain = _styledComponents["default"].div.attrs({
|
|
37
|
+
className: 'animation-control__time-domain'
|
|
38
|
+
})(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2["default"])(["\n color: ", ";\n font-weight: 400;\n font-size: 10px;\n"])), function (props) {
|
|
39
|
+
return props.theme.titleTextColor;
|
|
40
|
+
});
|
|
41
|
+
|
|
42
|
+
AnimationControlFactory.deps = [_playbackControls["default"], _floatingTimeDisplay["default"]];
|
|
43
|
+
|
|
44
|
+
function AnimationControlFactory(PlaybackControls, FloatingTimeDisplay) {
|
|
45
|
+
var AnimationControl = function AnimationControl(_ref) {
|
|
46
|
+
var isAnimatable = _ref.isAnimatable,
|
|
47
|
+
isAnimating = _ref.isAnimating,
|
|
48
|
+
resetAnimation = _ref.resetAnimation,
|
|
49
|
+
toggleAnimation = _ref.toggleAnimation,
|
|
50
|
+
setLayerAnimationTime = _ref.setLayerAnimationTime,
|
|
51
|
+
updateAnimationSpeed = _ref.updateAnimationSpeed,
|
|
52
|
+
animationConfig = _ref.animationConfig;
|
|
53
|
+
var currentTime = animationConfig.currentTime,
|
|
54
|
+
domain = animationConfig.domain,
|
|
55
|
+
speed = animationConfig.speed,
|
|
56
|
+
step = animationConfig.step,
|
|
57
|
+
timeSteps = animationConfig.timeSteps,
|
|
58
|
+
timeFormat = animationConfig.timeFormat,
|
|
59
|
+
timezone = animationConfig.timezone,
|
|
60
|
+
defaultTimeFormat = animationConfig.defaultTimeFormat;
|
|
61
|
+
var onSlider1Change = (0, _react.useCallback)(function (val) {
|
|
62
|
+
if (Array.isArray(timeSteps)) {
|
|
63
|
+
setLayerAnimationTime((0, _dataUtils.snapToMarks)(val, timeSteps)); // TODO: merge slider in to avoid this step
|
|
64
|
+
} else if (val >= domain[0] && val <= domain[1]) {
|
|
65
|
+
setLayerAnimationTime(val);
|
|
66
|
+
}
|
|
67
|
+
}, [domain, timeSteps, setLayerAnimationTime]);
|
|
68
|
+
var dateFunc = (0, _react.useMemo)(function () {
|
|
69
|
+
var hasUserFormat = typeof timeFormat === 'string';
|
|
70
|
+
var currentFormat = (hasUserFormat ? timeFormat : defaultTimeFormat) || _defaultSettings.DEFAULT_TIME_FORMAT;
|
|
71
|
+
return (0, _dataUtils.datetimeFormatter)(timezone)(currentFormat);
|
|
72
|
+
}, [timeFormat, defaultTimeFormat, timezone]);
|
|
73
|
+
var timeStart = (0, _react.useMemo)(function () {
|
|
74
|
+
return domain ? dateFunc(domain[0]) : '';
|
|
75
|
+
}, [domain, dateFunc]);
|
|
76
|
+
var timeEnd = (0, _react.useMemo)(function () {
|
|
77
|
+
return domain ? dateFunc(domain[1]) : '';
|
|
78
|
+
}, [domain, dateFunc]);
|
|
79
|
+
return /*#__PURE__*/_react["default"].createElement(_styledComponents2.BottomWidgetInner, {
|
|
80
|
+
className: "bottom-widget--inner"
|
|
81
|
+
}, /*#__PURE__*/_react["default"].createElement(AnimationWidgetInner, {
|
|
82
|
+
className: "animation-widget--inner"
|
|
83
|
+
}, /*#__PURE__*/_react["default"].createElement(PlaybackControls, {
|
|
84
|
+
className: "animation-control-playpause",
|
|
85
|
+
startAnimation: toggleAnimation,
|
|
86
|
+
isAnimating: isAnimating,
|
|
87
|
+
pauseAnimation: toggleAnimation,
|
|
88
|
+
resetAnimation: resetAnimation,
|
|
89
|
+
speed: speed,
|
|
90
|
+
isAnimatable: isAnimatable,
|
|
91
|
+
updateAnimationSpeed: updateAnimationSpeed
|
|
92
|
+
}), /*#__PURE__*/_react["default"].createElement(StyledDomain, {
|
|
93
|
+
className: "domain-start"
|
|
94
|
+
}, /*#__PURE__*/_react["default"].createElement("span", null, timeStart)), /*#__PURE__*/_react["default"].createElement(SliderWrapper, {
|
|
95
|
+
className: "animation-control__slider"
|
|
96
|
+
}, /*#__PURE__*/_react["default"].createElement(_slider["default"], {
|
|
97
|
+
showValues: false,
|
|
98
|
+
isRanged: false,
|
|
99
|
+
step: step,
|
|
100
|
+
minValue: domain ? domain[0] : 0,
|
|
101
|
+
maxValue: domain ? domain[1] : 1,
|
|
102
|
+
value1: currentTime,
|
|
103
|
+
onSlider1Change: onSlider1Change,
|
|
104
|
+
enableBarDrag: true
|
|
105
|
+
})), /*#__PURE__*/_react["default"].createElement(StyledDomain, {
|
|
106
|
+
className: "domain-end"
|
|
107
|
+
}, /*#__PURE__*/_react["default"].createElement("span", null, timeEnd))), /*#__PURE__*/_react["default"].createElement(FloatingTimeDisplay, {
|
|
108
|
+
currentTime: currentTime,
|
|
109
|
+
defaultTimeFormat: defaultTimeFormat,
|
|
110
|
+
timeFormat: timeFormat,
|
|
111
|
+
timezone: timezone
|
|
112
|
+
}));
|
|
113
|
+
};
|
|
114
|
+
|
|
115
|
+
AnimationControl.defaultProps = {
|
|
116
|
+
toggleAnimation: function toggleAnimation() {},
|
|
117
|
+
updateAnimationSpeed: function updateAnimationSpeed() {},
|
|
118
|
+
animationControlProps: {},
|
|
119
|
+
animationConfig: {}
|
|
120
|
+
};
|
|
121
|
+
return AnimationControl;
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
var _default = AnimationControlFactory;
|
|
125
|
+
exports["default"] = _default;
|
|
126
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL2NvbW1vbi9hbmltYXRpb24tY29udHJvbC9hbmltYXRpb24tY29udHJvbC5qcyJdLCJuYW1lcyI6WyJTbGlkZXJXcmFwcGVyIiwic3R5bGVkIiwiZGl2IiwiQW5pbWF0aW9uV2lkZ2V0SW5uZXIiLCJTdHlsZWREb21haW4iLCJhdHRycyIsImNsYXNzTmFtZSIsInByb3BzIiwidGhlbWUiLCJ0aXRsZVRleHRDb2xvciIsIkFuaW1hdGlvbkNvbnRyb2xGYWN0b3J5IiwiZGVwcyIsIlBsYXliYWNrQ29udHJvbHNGYWN0b3J5IiwiRmxvYXRpbmdUaW1lRGlzcGxheUZhY3RvcnkiLCJQbGF5YmFja0NvbnRyb2xzIiwiRmxvYXRpbmdUaW1lRGlzcGxheSIsIkFuaW1hdGlvbkNvbnRyb2wiLCJpc0FuaW1hdGFibGUiLCJpc0FuaW1hdGluZyIsInJlc2V0QW5pbWF0aW9uIiwidG9nZ2xlQW5pbWF0aW9uIiwic2V0TGF5ZXJBbmltYXRpb25UaW1lIiwidXBkYXRlQW5pbWF0aW9uU3BlZWQiLCJhbmltYXRpb25Db25maWciLCJjdXJyZW50VGltZSIsImRvbWFpbiIsInNwZWVkIiwic3RlcCIsInRpbWVTdGVwcyIsInRpbWVGb3JtYXQiLCJ0aW1lem9uZSIsImRlZmF1bHRUaW1lRm9ybWF0Iiwib25TbGlkZXIxQ2hhbmdlIiwidmFsIiwiQXJyYXkiLCJpc0FycmF5IiwiZGF0ZUZ1bmMiLCJoYXNVc2VyRm9ybWF0IiwiY3VycmVudEZvcm1hdCIsIkRFRkFVTFRfVElNRV9GT1JNQVQiLCJ0aW1lU3RhcnQiLCJ0aW1lRW5kIiwiZGVmYXVsdFByb3BzIiwiYW5pbWF0aW9uQ29udHJvbFByb3BzIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7O0FBb0JBOztBQUNBOztBQUVBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOzs7O0FBRUEsSUFBTUEsYUFBYSxHQUFHQyw2QkFBT0MsR0FBViwrTEFBbkI7O0FBUUEsSUFBTUMs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RixVQUhkO0FBSUUsTUFBQSxRQUFRLEVBQUVDO0FBSlosTUEvQkYsQ0FERjtBQXdDRCxHQWpGRDs7QUFtRkFkLEVBQUFBLGdCQUFnQixDQUFDMEIsWUFBakIsR0FBZ0M7QUFDOUJ0QixJQUFBQSxlQUFlLEVBQUUsMkJBQU0sQ0FBRSxDQURLO0FBRTlCRSxJQUFBQSxvQkFBb0IsRUFBRSxnQ0FBTSxDQUFFLENBRkE7QUFHOUJxQixJQUFBQSxxQkFBcUIsRUFBRSxFQUhPO0FBSTlCcEIsSUFBQUEsZUFBZSxFQUFFO0FBSmEsR0FBaEM7QUFPQSxTQUFPUCxnQkFBUDtBQUNEOztlQUVjTix1QiIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAoYykgMjAyMiBVYmVyIFRlY2hub2xvZ2llcywgSW5jLlxuLy9cbi8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHlcbi8vIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlIFwiU29mdHdhcmVcIiksIHRvIGRlYWxcbi8vIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHNcbi8vIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGxcbi8vIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpc1xuLy8gZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpcbi8vXG4vLyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpblxuLy8gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4vL1xuLy8gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUlxuLy8gSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksXG4vLyBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEVcbi8vIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVJcbi8vIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sXG4vLyBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOXG4vLyBUSEUgU09GVFdBUkUuXG5cbmltcG9ydCBSZWFjdCwge3VzZUNhbGxiYWNrLCB1c2VNZW1vfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgc3R5bGVkIGZyb20gJ3N0eWxlZC1jb21wb25lbnRzJztcblxuaW1wb3J0IFNsaWRlciBmcm9tICdjb21wb25lbnRzL2NvbW1vbi9zbGlkZXIvc2xpZGVyJztcbmltcG9ydCB7Qm90dG9tV2lkZ2V0SW5uZXJ9IGZyb20gJ2NvbXBvbmVudHMvY29tbW9uL3N0eWxlZC1jb21wb25lbnRzJztcbmltcG9ydCBQbGF5YmFja0NvbnRyb2xzRmFjdG9yeSBmcm9tICcuL3BsYXliYWNrLWNvbnRyb2xzJztcbmltcG9ydCBGbG9hdGluZ1RpbWVEaXNwbGF5RmFjdG9yeSBmcm9tICcuL2Zsb2F0aW5nLXRpbWUtZGlzcGxheSc7XG5pbXBvcnQge3NuYXBUb01hcmtzLCBkYXRldGltZUZvcm1hdHRlcn0gZnJvbSAndXRpbHMvZGF0YS11dGlscyc7XG5pbXBvcnQge0RFRkFVTFRfVElNRV9GT1JNQVR9IGZyb20gJ2NvbnN0YW50cy9kZWZhdWx0LXNldHRpbmdzJztcblxuY29uc3QgU2xpZGVyV3JhcHBlciA9IHN0eWxlZC5kaXZgXG4gIGRpc3BsYXk6IGZsZXg7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgZmxleC1ncm93OiAxO1xuICBtYXJnaW4tcmlnaHQ6IDI0cHg7XG4gIG1hcmdpbi1sZWZ0OiAyNHB4O1xuYDtcblxuY29uc3QgQW5pbWF0aW9uV2lkZ2V0SW5uZXIgPSBzdHlsZWQuZGl2YFxuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGhlaWdodDogMzJweDtcblxuICAucGxheWJhY2stY29udHJvbHMge1xuICAgIG1hcmdpbi1sZWZ0OiAtOHB4O1xuICAgIG1hcmdpbi1yaWdodDogMTZweDtcbiAgfVxuYDtcblxuY29uc3QgU3R5bGVkRG9tYWluID0gc3R5bGVkLmRpdi5hdHRycyh7XG4gIGNsYXNzTmFtZTogJ2FuaW1hdGlvbi1jb250cm9sX190aW1lLWRvbWFpbidcbn0pYFxuICBjb2xvcjogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS50aXRsZVRleHRDb2xvcn07XG4gIGZvbnQtd2VpZ2h0OiA0MDA7XG4gIGZvbnQtc2l6ZTogMTBweDtcbmA7XG5cbkFuaW1hdGlvbkNvbnRyb2xGYWN0b3J5LmRlcHMgPSBbUGxheWJhY2tDb250cm9sc0ZhY3RvcnksIEZsb2F0aW5nVGltZURpc3BsYXlGYWN0b3J5XTtcblxuZnVuY3Rpb24gQW5pbWF0aW9uQ29udHJvbEZhY3RvcnkoUGxheWJhY2tDb250cm9scywgRmxvYXRpbmdUaW1lRGlzcGxheSkge1xuICBjb25zdCBBbmltYXRpb25Db250cm9sID0gKHtcbiAgICBpc0FuaW1hdGFibGUsXG4gICAgaXNBbmltYXRpbmcsXG4gICAgcmVzZXRBbmltYXRpb24sXG4gICAgdG9nZ2xlQW5pbWF0aW9uLFxuICAgIHNldExheWVyQW5pbWF0aW9uVGltZSxcbiAgICB1cGRhdGVBbmltYXRpb25TcGVlZCxcbiAgICBhbmltYXRpb25Db25maWdcbiAgfSkgPT4ge1xuICAgIGNvbnN0IHtcbiAgICAgIGN1cnJlbnRUaW1lLFxuICAgICAgZG9tYWluLFxuICAgICAgc3BlZWQsXG4gICAgICBzdGVwLFxuICAgICAgdGltZVN0ZXBzLFxuICAgICAgdGltZUZvcm1hdCxcbiAgICAgIHRpbWV6b25lLFxuICAgICAgZGVmYXVsdFRpbWVGb3JtYXRcbiAgICB9ID0gYW5pbWF0aW9uQ29uZmlnO1xuICAgIGNvbnN0IG9uU2xpZGVyMUNoYW5nZSA9IHVzZUNhbGxiYWNrKFxuICAgICAgdmFsID0+IHtcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkodGltZVN0ZXBzKSkge1xuICAgICAgICAgIHNldExheWVyQW5pbWF0aW9uVGltZShzbmFwVG9NYXJrcyh2YWwsIHRpbWVTdGVwcykpO1xuXG4gICAgICAgICAgLy8gVE9ETzogbWVyZ2Ugc2xpZGVyIGluIHRvIGF2b2lkIHRoaXMgc3RlcFxuICAgICAgICB9IGVsc2UgaWYgKHZhbCA+PSBkb21haW5bMF0gJiYgdmFsIDw9IGRvbWFpblsxXSkge1xuICAgICAgICAgIHNldExheWVyQW5pbWF0aW9uVGltZSh2YWwpO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgW2RvbWFpbiwgdGltZVN0ZXBzLCBzZXRMYXllckFuaW1hdGlvblRpbWVdXG4gICAgKTtcblxuICAgIGNvbnN0IGRhdGVGdW5jID0gdXNlTWVtbygoKSA9PiB7XG4gICAgICBjb25zdCBoYXNVc2VyRm9ybWF0ID0gdHlwZW9mIHRpbWVGb3JtYXQgPT09ICdzdHJpbmcnO1xuICAgICAgY29uc3QgY3VycmVudEZvcm1hdCA9IChoYXNVc2VyRm9ybWF0ID8gdGltZUZvcm1hdCA6IGRlZmF1bHRUaW1lRm9ybWF0KSB8fCBERUZBVUxUX1RJTUVfRk9STUFUO1xuICAgICAgcmV0dXJuIGRhdGV0aW1lRm9ybWF0dGVyKHRpbWV6b25lKShjdXJyZW50Rm9ybWF0KTtcbiAgICB9LCBbdGltZUZvcm1hdCwgZGVmYXVsdFRpbWVGb3JtYXQsIHRpbWV6b25lXSk7XG5cbiAgICBjb25zdCB0aW1lU3RhcnQgPSB1c2VNZW1vKCgpID0+IChkb21haW4gPyBkYXRlRnVuYyhkb21haW5bMF0pIDogJycpLCBbZG9tYWluLCBkYXRlRnVuY10pO1xuICAgIGNvbnN0IHRpbWVFbmQgPSB1c2VNZW1vKCgpID0+IChkb21haW4gPyBkYXRlRnVuYyhkb21haW5bMV0pIDogJycpLCBbZG9tYWluLCBkYXRlRnVuY10pO1xuXG4gICAgcmV0dXJuIChcbiAgICAgIDxCb3R0b21XaWRnZXRJbm5lciBjbGFzc05hbWU9XCJib3R0b20td2lkZ2V0LS1pbm5lclwiPlxuICAgICAgICA8QW5pbWF0aW9uV2lkZ2V0SW5uZXIgY2xhc3NOYW1lPVwiYW5pbWF0aW9uLXdpZGdldC0taW5uZXJcIj5cbiAgICAgICAgICA8UGxheWJhY2tDb250cm9sc1xuICAgICAgICAgICAgY2xhc3NOYW1lPVwiYW5pbWF0aW9uLWNvbnRyb2wtcGxheXBhdXNlXCJcbiAgICAgICAgICAgIHN0YXJ0QW5pbWF0aW9uPXt0b2dnbGVBbmltYXRpb259XG4gICAgICAgICAgICBpc0FuaW1hdGluZz17aXNBbmltYXRpbmd9XG4gICAgICAgICAgICBwYXVzZUFuaW1hdGlvbj17dG9nZ2xlQW5pbWF0aW9ufVxuICAgICAgICAgICAgcmVzZXRBbmltYXRpb249e3Jlc2V0QW5pbWF0aW9ufVxuICAgICAgICAgICAgc3BlZWQ9e3NwZWVkfVxuICAgICAgICAgICAgaXNBbmltYXRhYmxlPXtpc0FuaW1hdGFibGV9XG4gICAgICAgICAgICB1cGRhdGVBbmltYXRpb25TcGVlZD17dXBkYXRlQW5pbWF0aW9uU3BlZWR9XG4gICAgICAgICAgLz5cbiAgICAgICAgICA8U3R5bGVkRG9tYWluIGNsYXNzTmFtZT1cImRvbWFpbi1zdGFydFwiPlxuICAgICAgICAgICAgPHNwYW4+e3RpbWVTdGFydH08L3NwYW4+XG4gICAgICAgICAgPC9TdHlsZWREb21haW4+XG4gICAgICAgICAgPFNsaWRlcldyYXBwZXIgY2xhc3NOYW1lPVwiYW5pbWF0aW9uLWNvbnRyb2xfX3NsaWRlclwiPlxuICAgICAgICAgICAgPFNsaWRlclxuICAgICAgICAgICAgICBzaG93VmFsdWVzPXtmYWxzZX1cbiAgICAgICAgICAgICAgaXNSYW5nZWQ9e2ZhbHNlfVxuICAgICAgICAgICAgICBzdGVwPXtzdGVwfVxuICAgICAgICAgICAgICBtaW5WYWx1ZT17ZG9tYWluID8gZG9tYWluWzBdIDogMH1cbiAgICAgICAgICAgICAgbWF4VmFsdWU9e2RvbWFpbiA/IGRvbWFpblsxXSA6IDF9XG4gICAgICAgICAgICAgIHZhbHVlMT17Y3VycmVudFRpbWV9XG4gICAgICAgICAgICAgIG9uU2xpZGVyMUNoYW5nZT17b25TbGlkZXIxQ2hhbmdlfVxuICAgICAgICAgICAgICBlbmFibGVCYXJEcmFnPXt0cnVlfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L1NsaWRlcldyYXBwZXI+XG4gICAgICAgICAgPFN0eWxlZERvbWFpbiBjbGFzc05hbWU9XCJkb21haW4tZW5kXCI+XG4gICAgICAgICAgICA8c3Bhbj57dGltZUVuZH08L3NwYW4+XG4gICAgICAgICAgPC9TdHlsZWREb21haW4+XG4gICAgICAgIDwvQW5pbWF0aW9uV2lkZ2V0SW5uZXI+XG4gICAgICAgIDxGbG9hdGluZ1RpbWVEaXNwbGF5XG4gICAgICAgICAgY3VycmVudFRpbWU9e2N1cnJlbnRUaW1lfVxuICAgICAgICAgIGRlZmF1bHRUaW1lRm9ybWF0PXtkZWZhdWx0VGltZUZvcm1hdH1cbiAgICAgICAgICB0aW1lRm9ybWF0PXt0aW1lRm9ybWF0fVxuICAgICAgICAgIHRpbWV6b25lPXt0aW1lem9uZX1cbiAgICAgICAgLz5cbiAgICAgIDwvQm90dG9tV2lkZ2V0SW5uZXI+XG4gICAgKTtcbiAgfTtcblxuICBBbmltYXRpb25Db250cm9sLmRlZmF1bHRQcm9wcyA9IHtcbiAgICB0b2dnbGVBbmltYXRpb246ICgpID0+IHt9LFxuICAgIHVwZGF0ZUFuaW1hdGlvblNwZWVkOiAoKSA9PiB7fSxcbiAgICBhbmltYXRpb25Db250cm9sUHJvcHM6IHt9LFxuICAgIGFuaW1hdGlvbkNvbmZpZzoge31cbiAgfTtcblxuICByZXR1cm4gQW5pbWF0aW9uQ29udHJvbDtcbn1cblxuZXhwb3J0IGRlZmF1bHQgQW5pbWF0aW9uQ29udHJvbEZhY3Rvcnk7XG4iXX0=
|