@kepler.gl/components 3.2.5 → 3.3.0-alpha.0
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/dist/bottom-widget.d.ts +4 -4
- package/dist/common/action-panel.d.ts +3 -3
- package/dist/common/animation-control/animation-control.d.ts +1 -1
- package/dist/common/animation-control/playback-controls.d.ts +1 -1
- package/dist/common/color-legend.d.ts +4 -4
- package/dist/common/column-stats-chart.d.ts +3 -3
- package/dist/common/data-table/button.d.ts +1 -1
- package/dist/common/data-table/canvas.d.ts +0 -1
- package/dist/common/data-table/cell-size.d.ts +2 -2
- package/dist/common/data-table/display-format.d.ts +1 -1
- package/dist/common/data-table/header-cell.d.ts +2 -2
- package/dist/common/data-table/index.d.ts +7 -9
- package/dist/common/data-table/index.js +1 -1
- package/dist/common/data-table/option-dropdown.d.ts +1 -1
- package/dist/common/field-selector.d.ts +5 -5
- package/dist/common/field-token.d.ts +1 -1
- package/dist/common/file-uploader/file-drop.d.ts +1 -1
- package/dist/common/file-uploader/file-upload-progress.d.ts +1 -1
- package/dist/common/file-uploader/file-upload.d.ts +1 -1
- package/dist/common/flex-container.d.ts +2 -3
- package/dist/common/histogram-plot.d.ts +1 -1
- package/dist/common/icon-button.d.ts +16 -16
- package/dist/common/icons/base.d.ts +1 -1
- package/dist/common/icons/close.js +7 -6
- package/dist/common/icons/effects/distance-fog.d.ts +14 -0
- package/dist/common/icons/effects/distance-fog.js +79 -0
- package/dist/common/icons/effects/surface-fog.d.ts +14 -0
- package/dist/common/icons/effects/surface-fog.js +86 -0
- package/dist/common/icons/index.d.ts +3 -0
- package/dist/common/icons/index.js +22 -1
- package/dist/common/icons/zoom-out.d.ts +10 -0
- package/dist/common/icons/zoom-out.js +48 -0
- package/dist/common/item-selector/chickleted-input.d.ts +4 -4
- package/dist/common/item-selector/dropdown-list.d.ts +3 -3
- package/dist/common/item-selector/dropdown-select.d.ts +7 -7
- package/dist/common/item-selector/item-selector.d.ts +2 -2
- package/dist/common/item-selector/typeahead.d.ts +3 -3
- package/dist/common/loading-spinner.d.ts +2 -2
- package/dist/common/modal.d.ts +5 -5
- package/dist/common/portaled.d.ts +8 -25
- package/dist/common/progress-bar.d.ts +1 -1
- package/dist/common/radius-legend.d.ts +1 -1
- package/dist/common/range-brush.d.ts +1 -1
- package/dist/common/range-plot.d.ts +1 -1
- package/dist/common/slider/mouse-event.d.ts +1 -1
- package/dist/common/slider/slider-bar-handle.d.ts +2 -2
- package/dist/common/slider/slider-handle.d.ts +3 -3
- package/dist/common/slider/slider.d.ts +2 -2
- package/dist/common/styled-components.d.ts +157 -158
- package/dist/common/sync-timeline-control.d.ts +3 -3
- package/dist/common/time-range-slider-time-title.d.ts +1 -1
- package/dist/common/time-range-slider.d.ts +2 -2
- package/dist/common/timeline-slider.d.ts +1 -1
- package/dist/common/tippy-tooltip.d.ts +1 -1
- package/dist/common/toolbar-item.d.ts +1 -1
- package/dist/common/toolbar.d.ts +1 -1
- package/dist/common/vertical-toolbar.d.ts +2 -3
- package/dist/container.d.ts +6 -6
- package/dist/context.d.ts +3 -3
- package/dist/dnd-context.d.ts +2 -2
- package/dist/editor/editor.d.ts +1 -1
- package/dist/editor/editor.js +1 -1
- package/dist/editor/feature-action-panel.d.ts +1 -1
- package/dist/editor/feature-action-panel.js +1 -1
- package/dist/effects/compact-color-picker.d.ts +1 -1
- package/dist/effects/effect-configurator.d.ts +2 -2
- package/dist/effects/effect-configurator.js +52 -14
- package/dist/effects/effect-list.d.ts +1 -1
- package/dist/effects/effect-manager.d.ts +3 -3
- package/dist/effects/effect-manager.js +9 -2
- package/dist/effects/effect-panel-header.d.ts +2 -2
- package/dist/effects/effect-panel-header.js +2 -2
- package/dist/effects/effect-panel.d.ts +2 -2
- package/dist/effects/effect-time-configurator.d.ts +1 -1
- package/dist/effects/effect-time-selector.d.ts +1 -1
- package/dist/effects/effect-time-slider.d.ts +3 -3
- package/dist/effects/effect-type-dropdown-list.d.ts +2 -2
- package/dist/effects/effect-type-list-item.d.ts +1 -1
- package/dist/effects/effect-type-selector.d.ts +2 -2
- package/dist/effects/side-panel-title.d.ts +1 -1
- package/dist/effects/timezone-selector.d.ts +1 -1
- package/dist/filters/components.d.ts +2 -3
- package/dist/filters/filter-panels/types.d.ts +4 -4
- package/dist/filters/types.d.ts +8 -8
- package/dist/geocoder/geocoder.d.ts +3 -3
- package/dist/geocoder/geocoder.js +5 -1
- package/dist/geocoder-panel.d.ts +10 -2
- package/dist/geocoder-panel.js +3 -3
- package/dist/hooks/use-cloud-list-provider.d.ts +1 -1
- package/dist/hooks/use-dnd-effects.d.ts +1 -1
- package/dist/hooks/use-dnd-layers.d.ts +1 -1
- package/dist/hooks/use-feature-flags.d.ts +1 -1
- package/dist/hooks/use-fetch-raster-tile-metadata.d.ts +3 -3
- package/dist/hooks/use-fetch-vector-tile-metadata.d.ts +2 -2
- package/dist/hooks/use-legend-position.d.ts +8 -6
- package/dist/hooks/use-legend-position.js +27 -4
- package/dist/injector.d.ts +5 -5
- package/dist/kepler-gl.d.ts +55 -64
- package/dist/loading-indicator.d.ts +4 -4
- package/dist/loading-indicator.js +33 -8
- package/dist/map/effects/effect-control.d.ts +1 -1
- package/dist/map/layer-hover-info.d.ts +3 -3
- package/dist/map/layer-hover-info.js +8 -3
- package/dist/map/layer-selector-panel.d.ts +1 -1
- package/dist/map/lazy-tippy.js +3 -3
- package/dist/map/locale-panel.d.ts +1 -1
- package/dist/map/map-control-panel.d.ts +1 -1
- package/dist/map/map-control-toolbar.d.ts +6 -7
- package/dist/map/map-control-tooltip.d.ts +1 -1
- package/dist/map/map-control.d.ts +3 -2
- package/dist/map/map-control.js +1 -1
- package/dist/map/map-draw-panel.d.ts +1 -1
- package/dist/map/map-legend-panel.d.ts +4 -3
- package/dist/map/map-legend-panel.js +22 -9
- package/dist/map/map-legend.d.ts +10 -8
- package/dist/map/map-legend.js +37 -7
- package/dist/map/map-popover-content.d.ts +2 -2
- package/dist/map/map-popover.d.ts +2 -2
- package/dist/map/split-map-button.d.ts +1 -1
- package/dist/map/toggle-3d-button.d.ts +1 -1
- package/dist/map-container.d.ts +2 -2
- package/dist/map-container.js +50 -25
- package/dist/map-view-state-context.d.ts +9 -2
- package/dist/map-view-state-context.js +1 -1
- package/dist/modal-container.d.ts +3 -6
- package/dist/modals/cloud-components/cloud-header.d.ts +1 -1
- package/dist/modals/cloud-components/provider-select.d.ts +1 -1
- package/dist/modals/cloud-tile.d.ts +1 -1
- package/dist/modals/data-table-modal.d.ts +1 -1
- package/dist/modals/export-data-modal.js +2 -2
- package/dist/modals/export-image-modal.d.ts +1 -1
- package/dist/modals/export-image-modal.js +75 -7
- package/dist/modals/export-map-modal/components.d.ts +1 -1
- package/dist/modals/export-map-modal/export-html-map.d.ts +1 -1
- package/dist/modals/export-map-modal/export-html-map.js +3 -1
- package/dist/modals/export-map-modal/export-json-map.d.ts +1 -1
- package/dist/modals/image-modal-container.d.ts +1 -1
- package/dist/modals/load-data-modal.d.ts +2 -2
- package/dist/modals/modal-dialog.d.ts +0 -2
- package/dist/modals/overwrite-map-modal.d.ts +1 -1
- package/dist/modals/save-map-modal.d.ts +3 -3
- package/dist/modals/share-map-modal.d.ts +1 -1
- package/dist/modals/tilesets-modals/common.d.ts +3 -3
- package/dist/modals/tilesets-modals/common.js +1 -1
- package/dist/modals/tilesets-modals/load-data-footer.d.ts +1 -1
- package/dist/modals/tilesets-modals/load-tileset.d.ts +1 -1
- package/dist/modals/tilesets-modals/load-tileset.js +8 -2
- package/dist/modals/tilesets-modals/tileset-icon.d.ts +1 -1
- package/dist/modals/tilesets-modals/tileset-raster-form.d.ts +2 -2
- package/dist/modals/tilesets-modals/tileset-tile3d-form.d.ts +12 -0
- package/dist/modals/tilesets-modals/tileset-tile3d-form.js +388 -0
- package/dist/modals/tilesets-modals/tileset-vector-form.d.ts +3 -3
- package/dist/modals/tilesets-modals/tileset-wms-form.d.ts +1 -1
- package/dist/modals/tilesets-modals/tileset-wms-form.js +53 -10
- package/dist/plot-container.js +82 -11
- package/dist/side-panel/add-by-dataset-button.d.ts +1 -1
- package/dist/side-panel/common/dataset-info.d.ts +2 -2
- package/dist/side-panel/common/dataset-info.js +2 -2
- package/dist/side-panel/common/dataset-tag.d.ts +2 -2
- package/dist/side-panel/common/dataset-title.d.ts +2 -2
- package/dist/side-panel/common/source-data-catalog.d.ts +3 -3
- package/dist/side-panel/common/types.d.ts +8 -8
- package/dist/side-panel/custom-panel.d.ts +2 -2
- package/dist/side-panel/filter-manager.d.ts +3 -3
- package/dist/side-panel/filter-panel/add-filter-button.d.ts +1 -1
- package/dist/side-panel/filter-panel/filter-panel-header.d.ts +2 -2
- package/dist/side-panel/interaction-manager.d.ts +1 -1
- package/dist/side-panel/interaction-panel/brush-config.d.ts +1 -1
- package/dist/side-panel/interaction-panel/tooltip-config/tooltip-chicklet.d.ts +3 -3
- package/dist/side-panel/interaction-panel/tooltip-config.d.ts +1 -1
- package/dist/side-panel/layer-manager.d.ts +2 -2
- package/dist/side-panel/layer-panel/add-layer-button.d.ts +1 -1
- package/dist/side-panel/layer-panel/channel-by-value-selector.d.ts +1 -1
- package/dist/side-panel/layer-panel/color-breaks-panel.d.ts +4 -4
- package/dist/side-panel/layer-panel/color-palette-preset.d.ts +1 -1
- package/dist/side-panel/layer-panel/color-palette.d.ts +2 -2
- package/dist/side-panel/layer-panel/color-range-selector.d.ts +3 -3
- package/dist/side-panel/layer-panel/color-scale-selector.d.ts +4 -4
- package/dist/side-panel/layer-panel/color-selector.d.ts +3 -3
- package/dist/side-panel/layer-panel/column-selector.d.ts +1 -1
- package/dist/side-panel/layer-panel/custom-palette.d.ts +10 -10
- package/dist/side-panel/layer-panel/custom-picker.d.ts +1 -1
- package/dist/side-panel/layer-panel/dataset-layer-group.d.ts +1 -1
- package/dist/side-panel/layer-panel/dataset-layer-section.d.ts +1 -1
- package/dist/side-panel/layer-panel/dataset-section.d.ts +2 -2
- package/dist/side-panel/layer-panel/dimension-scale-selector.d.ts +1 -1
- package/dist/side-panel/layer-panel/how-to-button.d.ts +1 -1
- package/dist/side-panel/layer-panel/layer-color-selector.d.ts +3 -3
- package/dist/side-panel/layer-panel/layer-column-config.d.ts +1 -1
- package/dist/side-panel/layer-panel/layer-column-mode-config.d.ts +3 -3
- package/dist/side-panel/layer-panel/layer-config-group.d.ts +5 -5
- package/dist/side-panel/layer-panel/layer-configurator.d.ts +2 -2
- package/dist/side-panel/layer-panel/layer-configurator.js +27 -17
- package/dist/side-panel/layer-panel/layer-error-message.d.ts +1 -1
- package/dist/side-panel/layer-panel/layer-list.d.ts +2 -2
- package/dist/side-panel/layer-panel/layer-panel-header.d.ts +6 -5
- package/dist/side-panel/layer-panel/layer-panel-header.js +15 -5
- package/dist/side-panel/layer-panel/layer-panel.d.ts +1 -1
- package/dist/side-panel/layer-panel/layer-type-dropdown-list.d.ts +2 -2
- package/dist/side-panel/layer-panel/layer-type-list-item.d.ts +2 -2
- package/dist/side-panel/layer-panel/layer-type-selector.d.ts +1 -1
- package/dist/side-panel/layer-panel/radius-by-zoom-input.d.ts +1 -1
- package/dist/side-panel/layer-panel/raster-tile-layer-configurator.d.ts +1 -1
- package/dist/side-panel/layer-panel/single-color-palette.d.ts +1 -1
- package/dist/side-panel/layer-panel/text-label-panel.d.ts +1 -1
- package/dist/side-panel/layer-panel/vector-tile-layer-configurator.d.ts +2 -2
- package/dist/side-panel/layer-panel/vis-config-by-field-selector.d.ts +1 -1
- package/dist/side-panel/layer-panel/vis-config-slider.d.ts +1 -1
- package/dist/side-panel/layer-panel/vis-config-switch.d.ts +1 -1
- package/dist/side-panel/map-manager.d.ts +1 -1
- package/dist/side-panel/map-style-panel/map-layer-group-color-picker.d.ts +1 -1
- package/dist/side-panel/map-style-panel/map-layer-group-item.d.ts +2 -2
- package/dist/side-panel/map-style-panel/map-layer-selector.d.ts +1 -1
- package/dist/side-panel/map-style-panel/map-style-selector.d.ts +1 -1
- package/dist/side-panel/panel-header-action.d.ts +1 -1
- package/dist/side-panel/panel-header.d.ts +12 -12
- package/dist/side-panel/panel-tab.d.ts +4 -4
- package/dist/side-panel/panel-title.d.ts +1 -1
- package/dist/side-panel/panel-toggle.d.ts +1 -1
- package/dist/side-panel/panel-view-list-toggle.d.ts +3 -3
- package/dist/side-panel/side-bar.d.ts +2 -2
- package/dist/side-panel.d.ts +1 -1
- package/dist/types.d.ts +3 -3
- package/package.json +23 -22
package/dist/geocoder-panel.js
CHANGED
|
@@ -15,7 +15,7 @@ var _react = _interopRequireWildcard(require("react"));
|
|
|
15
15
|
var _styledComponents = _interopRequireDefault(require("styled-components"));
|
|
16
16
|
var _classnames = _interopRequireDefault(require("classnames"));
|
|
17
17
|
var _processors = require("@kepler.gl/processors");
|
|
18
|
-
var
|
|
18
|
+
var _core = require("@deck.gl/core");
|
|
19
19
|
var _utils = require("@kepler.gl/utils");
|
|
20
20
|
var _constants = require("@kepler.gl/constants");
|
|
21
21
|
var _geocoder = _interopRequireDefault(require("./geocoder/geocoder"));
|
|
@@ -147,7 +147,7 @@ function GeocoderPanelFactory() {
|
|
|
147
147
|
pitch: 0,
|
|
148
148
|
bearing: 0,
|
|
149
149
|
transitionDuration: transitionDuration,
|
|
150
|
-
transitionInterpolator: new
|
|
150
|
+
transitionInterpolator: new _core.FlyToInterpolator()
|
|
151
151
|
}), index);
|
|
152
152
|
}, [index, layerOrder, mapState, removeGeocoderDataset, transitionDuration, updateMap, updateVisData]);
|
|
153
153
|
return /*#__PURE__*/_react["default"].createElement(StyledGeocoderPanel, {
|
|
@@ -167,4 +167,4 @@ function GeocoderPanelFactory() {
|
|
|
167
167
|
};
|
|
168
168
|
return GeocoderPanel;
|
|
169
169
|
}
|
|
170
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfc3R5bGVkQ29tcG9uZW50cyIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfY2xhc3NuYW1lcyIsIl9wcm9jZXNzb3JzIiwiX3R5cGVkIiwiX3V0aWxzIiwiX2NvbnN0YW50cyIsIl9nZW9jb2RlciIsIl90ZW1wbGF0ZU9iamVjdCIsIl9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSIsImUiLCJXZWFrTWFwIiwiciIsInQiLCJfX2VzTW9kdWxlIiwiX3R5cGVvZiIsImhhcyIsImdldCIsIm4iLCJfX3Byb3RvX18iLCJhIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJ1IiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiaSIsInNldCIsIm93bktleXMiLCJrZXlzIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwibyIsImZpbHRlciIsImVudW1lcmFibGUiLCJwdXNoIiwiYXBwbHkiLCJfb2JqZWN0U3ByZWFkIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwiZm9yRWFjaCIsIl9kZWZpbmVQcm9wZXJ0eTIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzIiwiZGVmaW5lUHJvcGVydGllcyIsIklDT05fTEFZRVIiLCJpZCIsIkdFT0NPREVSX0xBWUVSX0lEIiwidHlwZSIsImNvbmZpZyIsImxhYmVsIiwiY29sb3IiLCJHRU9DT0RFUl9JQ09OX0NPTE9SIiwiZGF0YUlkIiwiR0VPQ09ERVJfREFUQVNFVF9OQU1FIiwiY29sdW1ucyIsImxhdCIsImxuZyIsImljb24iLCJpc1Zpc2libGUiLCJoaWRkZW4iLCJ2aXNDb25maWciLCJyYWRpdXMiLCJHRU9DT0RFUl9JQ09OX1NJWkUiLCJnZW5lcmF0ZUNvbmZpZyIsImxheWVyT3JkZXIiLCJ2aXNTdGF0ZSIsImxheWVycyIsImNvbmNhdCIsIl90b0NvbnN1bWFibGVBcnJheTIiLCJTdHlsZWRHZW9jb2RlclBhbmVsIiwic3R5bGVkIiwiZGl2IiwiX3RhZ2dlZFRlbXBsYXRlTGl0ZXJhbDIiLCJwcm9wcyIsInRoZW1lIiwiZ2VvY29kZXJUb3AiLCJ1bnN5bmNlZFZpZXdwb3J0cyIsIk51bWJlciIsImlzRmluaXRlIiwiaW5kZXgiLCJnZW9jb2RlclJpZ2h0Iiwid2lkdGgiLCJnZW9jb2RlcldpZHRoIiwiYm94U2hhZG93IiwiZ2VuZXJhdGVHZW9jb2RlckRhdGFzZXQiLCJsb24iLCJ0ZXh0IiwiZGF0YSIsInByb2Nlc3NSb3dPYmplY3QiLCJsdCIsImxuIiwiaW5mbyIsImlzVmFsaWQiLCJrZXkiLCJ0ZXN0IiwiZ2V0VXBkYXRlVmlzRGF0YVBheWxvYWQiLCJkYXRhc2V0Iiwia2VlcEV4aXN0aW5nQ29uZmlnIiwiR2VvY29kZXJQYW5lbEZhY3RvcnkiLCJHZW9jb2RlclBhbmVsIiwiX3JlZiIsImlzR2VvY29kZXJFbmFibGVkIiwibWFwU3RhdGUiLCJtYXBib3hBcGlBY2Nlc3NUb2tlbiIsInVwZGF0ZVZpc0RhdGEiLCJyZW1vdmVEYXRhc2V0IiwidXBkYXRlTWFwIiwiX3JlZiR0cmFuc2l0aW9uRHVyYXRpIiwidHJhbnNpdGlvbkR1cmF0aW9uIiwiY2xhc3NOYW1lIiwicmVtb3ZlR2VvY29kZXJEYXRhc2V0IiwidXNlQ2FsbGJhY2siLCJvblNlbGVjdGVkIiwiX3ZpZXdwb3J0IiwidW5kZWZpbmVkIiwiZ2VvSXRlbSIsIl9nZW9JdGVtJGNlbnRlciIsIl9zbGljZWRUb0FycmF5MiIsImNlbnRlciIsImJib3giLCJ1cGRhdGVWaXNEYXRhUGF5bG9hZCIsImJvdW5kcyIsIkdFT0NPREVSX0dFT19PRkZTRVQiLCJjZW50ZXJBbmRab29tIiwiZ2V0Q2VudGVyQW5kWm9vbUZyb21Cb3VuZHMiLCJoZWlnaHQiLCJsYXRpdHVkZSIsImxvbmdpdHVkZSIsInpvb20iLCJwaXRjaCIsImJlYXJpbmciLCJ0cmFuc2l0aW9uSW50ZXJwb2xhdG9yIiwiRmx5VG9JbnRlcnBvbGF0b3IiLCJjcmVhdGVFbGVtZW50IiwiY2xhc3NuYW1lcyIsInN0eWxlIiwiZGlzcGxheSIsIm9uRGVsZXRlTWFya2VyIl0sInNvdXJjZXMiOlsiLi4vc3JjL2dlb2NvZGVyLXBhbmVsLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUXG4vLyBDb3B5cmlnaHQgY29udHJpYnV0b3JzIHRvIHRoZSBrZXBsZXIuZ2wgcHJvamVjdFxuXG5pbXBvcnQgUmVhY3QsIHt1c2VDYWxsYmFja30gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHN0eWxlZCwge0lTdHlsZWRDb21wb25lbnR9IGZyb20gJ3N0eWxlZC1jb21wb25lbnRzJztcbmltcG9ydCBjbGFzc25hbWVzIGZyb20gJ2NsYXNzbmFtZXMnO1xuaW1wb3J0IHtwcm9jZXNzUm93T2JqZWN0fSBmcm9tICdAa2VwbGVyLmdsL3Byb2Nlc3NvcnMnO1xuaW1wb3J0IHtGbHlUb0ludGVycG9sYXRvcn0gZnJvbSAnQGRlY2suZ2wvY29yZS90eXBlZCc7XG5pbXBvcnQge2dldENlbnRlckFuZFpvb21Gcm9tQm91bmRzfSBmcm9tICdAa2VwbGVyLmdsL3V0aWxzJztcbmltcG9ydCB7XG4gIEdFT0NPREVSX0RBVEFTRVRfTkFNRSxcbiAgR0VPQ09ERVJfTEFZRVJfSUQsXG4gIEdFT0NPREVSX0dFT19PRkZTRVQsXG4gIEdFT0NPREVSX0lDT05fQ09MT1IsXG4gIEdFT0NPREVSX0lDT05fU0laRVxufSBmcm9tICdAa2VwbGVyLmdsL2NvbnN0YW50cyc7XG5pbXBvcnQge0FkZERhdGFUb01hcE9wdGlvbnMsIE1hcFN0YXRlLCBQcm90b0RhdGFzZXQsIFVpU3RhdGUsIFZpZXdwb3J0fSBmcm9tICdAa2VwbGVyLmdsL3R5cGVzJztcbmltcG9ydCB7QWN0aW9uSGFuZGxlciwgcmVtb3ZlRGF0YXNldCwgdXBkYXRlTWFwLCB1cGRhdGVWaXNEYXRhfSBmcm9tICdAa2VwbGVyLmdsL2FjdGlvbnMnO1xuXG5pbXBvcnQgR2VvY29kZXIsIHtSZXN1bHR9IGZyb20gJy4vZ2VvY29kZXIvZ2VvY29kZXInO1xuaW1wb3J0IHtNYXBWaWV3U3RhdGV9IGZyb20gJ0BkZWNrLmdsL2NvcmUvdHlwZWQnO1xuXG5pbXBvcnQge0Jhc2VDb21wb25lbnRQcm9wc30gZnJvbSAnLi90eXBlcyc7XG5cbmNvbnN0IElDT05fTEFZRVIgPSB7XG4gIGlkOiBHRU9DT0RFUl9MQVlFUl9JRCxcbiAgdHlwZTogJ2ljb24nLFxuICBjb25maWc6IHtcbiAgICBsYWJlbDogJ0dlb2NvZGVyIExheWVyJyxcbiAgICBjb2xvcjogR0VPQ09ERVJfSUNPTl9DT0xPUixcbiAgICBkYXRhSWQ6IEdFT0NPREVSX0RBVEFTRVRfTkFNRSxcbiAgICBjb2x1bW5zOiB7XG4gICAgICBsYXQ6ICdsdCcsXG4gICAgICBsbmc6ICdsbicsXG4gICAgICBpY29uOiAnaWNvbicsXG4gICAgICBsYWJlbDogJ3RleHQnXG4gICAgfSxcbiAgICBpc1Zpc2libGU6IHRydWUsXG4gICAgaGlkZGVuOiB0cnVlLFxuICAgIHZpc0NvbmZpZzoge1xuICAgICAgcmFkaXVzOiBHRU9DT0RFUl9JQ09OX1NJWkVcbiAgICB9XG4gIH1cbn07XG5cbmZ1bmN0aW9uIGdlbmVyYXRlQ29uZmlnKGxheWVyT3JkZXIpIHtcbiAgcmV0dXJuIHtcbiAgICB2aXNTdGF0ZToge1xuICAgICAgbGF5ZXJzOiBbSUNPTl9MQVlFUl0sXG4gICAgICBsYXllck9yZGVyOiBbSUNPTl9MQVlFUi5pZCwgLi4ubGF5ZXJPcmRlcl1cbiAgICB9XG4gIH07XG59XG5cbmV4cG9ydCB0eXBlIFN0eWxlZEdlb2NvZGVyUGFuZWxQcm9wcyA9IEJhc2VDb21wb25lbnRQcm9wcyAmIHtcbiAgdW5zeW5jZWRWaWV3cG9ydHM/OiBib29sZWFuO1xuICBpbmRleD86IG51bWJlcjtcbiAgd2lkdGg/OiBudW1iZXI7XG59O1xuXG5jb25zdCBTdHlsZWRHZW9jb2RlclBhbmVsOiBJU3R5bGVkQ29tcG9uZW50PFxuICAnd2ViJyxcbiAgU3R5bGVkR2VvY29kZXJQYW5lbFByb3BzXG4+ID0gc3R5bGVkLmRpdjxTdHlsZWRHZW9jb2RlclBhbmVsUHJvcHM+YFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5nZW9jb2RlclRvcH1weDtcbiAgcmlnaHQ6ICR7cHJvcHMgPT5cbiAgICBwcm9wcy51bnN5bmNlZFZpZXdwb3J0c1xuICAgICAgPyAvLyAyIGdlb2NvZGVyczogc3BsaXQgbW9kZSBhbmQgdW5zeW5jZWQgdmlld3BvcnRzXG4gICAgICAgIE51bWJlci5pc0Zpbml0ZShwcm9wcy5pbmRleCkgJiYgcHJvcHMuaW5kZXggPT09IDBcbiAgICAgICAgPyBgY2FsYyg1MCUgKyAke3Byb3BzLnRoZW1lLmdlb2NvZGVyUmlnaHR9cHgpYCAvLyB1bnN5bmNlZCBsZWZ0IGdlb2NvZGVyIChpbmRleCAwKVxuICAgICAgICA6IGAke3Byb3BzLnRoZW1lLmdlb2NvZGVyUmlnaHR9cHhgIC8vIHVuc3luY2VkIHJpZ2h0IGdlb2NvZGVyIChpbmRleCAxKVxuICAgICAgOiAvLyAxIGdlb2NvZGVyOiBzaW5nbGUgbW9kZSBPUiBzcGxpdCBtb2RlIGFuZCBzeW5jZWQgdmlld3BvcnRzXG4gICAgICAgIGAke3Byb3BzLnRoZW1lLmdlb2NvZGVyUmlnaHR9cHhgfTtcbiAgd2lkdGg6ICR7cHJvcHMgPT4gKE51bWJlci5pc0Zpbml0ZShwcm9wcy53aWR0aCkgPyBwcm9wcy53aWR0aCA6IHByb3BzLnRoZW1lLmdlb2NvZGVyV2lkdGgpfXB4O1xuICBib3gtc2hhZG93OiAke3Byb3BzID0+IHByb3BzLnRoZW1lLmJveFNoYWRvd307XG4gIHotaW5kZXg6IDEwMDtcbmA7XG5cbmZ1bmN0aW9uIGdlbmVyYXRlR2VvY29kZXJEYXRhc2V0KGxhdDogbnVtYmVyLCBsb246IG51bWJlciwgdGV4dD86IHN0cmluZyk6IFByb3RvRGF0YXNldCB8IG51bGwge1xuICBjb25zdCBkYXRhID0gcHJvY2Vzc1Jvd09iamVjdChbXG4gICAge1xuICAgICAgbHQ6IGxhdCxcbiAgICAgIGxuOiBsb24sXG4gICAgICBpY29uOiAncGxhY2UnLFxuICAgICAgdGV4dFxuICAgIH1cbiAgXSk7XG4gIGlmICghZGF0YSkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBkYXRhLFxuICAgIGluZm86IHtcbiAgICAgIGhpZGRlbjogdHJ1ZSxcbiAgICAgIGlkOiBHRU9DT0RFUl9EQVRBU0VUX05BTUUsXG4gICAgICBsYWJlbDogR0VPQ09ERVJfREFUQVNFVF9OQU1FXG4gICAgfVxuICB9O1xufVxuXG5mdW5jdGlvbiBpc1ZhbGlkKGtleSkge1xuICByZXR1cm4gL3BrXFwuLipcXC4uKi8udGVzdChrZXkpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0VXBkYXRlVmlzRGF0YVBheWxvYWQoXG4gIGxhdDogbnVtYmVyLFxuICBsb246IG51bWJlcixcbiAgdGV4dD86IHN0cmluZ1xuKTogW1Byb3RvRGF0YXNldFtdLCBBZGREYXRhVG9NYXBPcHRpb25zXSB8IG51bGwge1xuICBjb25zdCBkYXRhc2V0ID0gZ2VuZXJhdGVHZW9jb2RlckRhdGFzZXQobGF0LCBsb24sIHRleHQpO1xuICBpZiAoIWRhdGFzZXQpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICByZXR1cm4gW1xuICAgIFtkYXRhc2V0XSxcbiAgICB7XG4gICAgICBrZWVwRXhpc3RpbmdDb25maWc6IHRydWVcbiAgICB9XG4gIF07XG59XG5cbmludGVyZmFjZSBHZW9jb2RlclBhbmVsUHJvcHMge1xuICBpc0dlb2NvZGVyRW5hYmxlZDogYm9vbGVhbjtcbiAgbWFwU3RhdGU6IE1hcFN0YXRlO1xuICB1aVN0YXRlOiBVaVN0YXRlO1xuICBtYXBib3hBcGlBY2Nlc3NUb2tlbjogc3RyaW5nO1xuICB1cGRhdGVWaXNEYXRhOiBBY3Rpb25IYW5kbGVyPHR5cGVvZiB1cGRhdGVWaXNEYXRhPjtcbiAgcmVtb3ZlRGF0YXNldDogQWN0aW9uSGFuZGxlcjx0eXBlb2YgcmVtb3ZlRGF0YXNldD47XG4gIHVwZGF0ZU1hcDogQWN0aW9uSGFuZGxlcjx0eXBlb2YgdXBkYXRlTWFwPjtcbiAgbGF5ZXJPcmRlcjogc3RyaW5nW107XG5cbiAgdHJhbnNpdGlvbkR1cmF0aW9uPzogTWFwVmlld1N0YXRlWyd0cmFuc2l0aW9uRHVyYXRpb24nXTtcbiAgd2lkdGg/OiBudW1iZXI7XG4gIGNsYXNzTmFtZT86IHN0cmluZztcbiAgaW5kZXg6IG51bWJlcjtcbiAgdW5zeW5jZWRWaWV3cG9ydHM6IGJvb2xlYW47XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIEdlb2NvZGVyUGFuZWxGYWN0b3J5KCk6IFJlYWN0LkZDPEdlb2NvZGVyUGFuZWxQcm9wcz4ge1xuICBjb25zdCBHZW9jb2RlclBhbmVsID0gKHtcbiAgICBpc0dlb2NvZGVyRW5hYmxlZCxcbiAgICBtYXBTdGF0ZSxcbiAgICBtYXBib3hBcGlBY2Nlc3NUb2tlbixcbiAgICB1cGRhdGVWaXNEYXRhLFxuICAgIHJlbW92ZURhdGFzZXQsXG4gICAgdXBkYXRlTWFwLFxuICAgIGxheWVyT3JkZXIsXG4gICAgdHJhbnNpdGlvbkR1cmF0aW9uID0gMzAwMCxcbiAgICB3aWR0aCxcbiAgICBjbGFzc05hbWUsXG4gICAgaW5kZXgsXG4gICAgdW5zeW5jZWRWaWV3cG9ydHNcbiAgfTogR2VvY29kZXJQYW5lbFByb3BzKSA9PiB7XG4gICAgY29uc3QgcmVtb3ZlR2VvY29kZXJEYXRhc2V0ID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgICAgcmVtb3ZlRGF0YXNldChHRU9DT0RFUl9EQVRBU0VUX05BTUUpO1xuICAgIH0sIFtyZW1vdmVEYXRhc2V0XSk7XG5cbiAgICBjb25zdCBvblNlbGVjdGVkID0gdXNlQ2FsbGJhY2soXG4gICAgICAoX3ZpZXdwb3J0OiBWaWV3cG9ydCB8IG51bGwgPSBudWxsLCBnZW9JdGVtOiBSZXN1bHQpID0+IHtcbiAgICAgICAgY29uc3Qge1xuICAgICAgICAgIGNlbnRlcjogW2xvbiwgbGF0XSxcbiAgICAgICAgICB0ZXh0LFxuICAgICAgICAgIGJib3hcbiAgICAgICAgfSA9IGdlb0l0ZW07XG5cbiAgICAgICAgY29uc3QgdXBkYXRlVmlzRGF0YVBheWxvYWQgPSBnZXRVcGRhdGVWaXNEYXRhUGF5bG9hZChsYXQsIGxvbiwgdGV4dCk7XG4gICAgICAgIGlmICh1cGRhdGVWaXNEYXRhUGF5bG9hZCkge1xuICAgICAgICAgIHJlbW92ZUdlb2NvZGVyRGF0YXNldCgpO1xuICAgICAgICAgIHVwZGF0ZVZpc0RhdGEoLi4udXBkYXRlVmlzRGF0YVBheWxvYWQsIGdlbmVyYXRlQ29uZmlnKGxheWVyT3JkZXIpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGJvdW5kcyA9IGJib3ggfHwgW1xuICAgICAgICAgIGxvbiAtIEdFT0NPREVSX0dFT19PRkZTRVQsXG4gICAgICAgICAgbGF0IC0gR0VPQ09ERVJfR0VPX09GRlNFVCxcbiAgICAgICAgICBsb24gKyBHRU9DT0RFUl9HRU9fT0ZGU0VULFxuICAgICAgICAgIGxhdCArIEdFT0NPREVSX0dFT19PRkZTRVRcbiAgICAgICAgXTtcbiAgICAgICAgY29uc3QgY2VudGVyQW5kWm9vbSA9IGdldENlbnRlckFuZFpvb21Gcm9tQm91bmRzKGJvdW5kcywge1xuICAgICAgICAgIHdpZHRoOiBtYXBTdGF0ZS53aWR0aCxcbiAgICAgICAgICBoZWlnaHQ6IG1hcFN0YXRlLmhlaWdodFxuICAgICAgICB9KTtcblxuICAgICAgICBpZiAoIWNlbnRlckFuZFpvb20pIHtcbiAgICAgICAgICAvLyBmYWlsZWQgdG8gZml0IGJvdW5kc1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHVwZGF0ZU1hcChcbiAgICAgICAgICB7XG4gICAgICAgICAgICBsYXRpdHVkZTogY2VudGVyQW5kWm9vbS5jZW50ZXJbMV0sXG4gICAgICAgICAgICBsb25naXR1ZGU6IGNlbnRlckFuZFpvb20uY2VudGVyWzBdLFxuICAgICAgICAgICAgLy8gRm9yIG1hcmdpbmFsIG9yIGludmFsaWQgYm91bmRzLCB6b29tIG1heSBiZSBOYU4uIE1ha2Ugc3VyZSB0byBwcm92aWRlIGEgdmFsaWQgdmFsdWUgaW4gb3JkZXJcbiAgICAgICAgICAgIC8vIHRvIGF2b2lkIGNvcnJ1cHQgc3RhdGUgYW5kIHBvdGVudGlhbCBjcmFzaGVzIGFzIHpvb20gaXMgZXhwZWN0ZWQgdG8gYmUgYSBudW1iZXJcbiAgICAgICAgICAgIC4uLihOdW1iZXIuaXNGaW5pdGUoY2VudGVyQW5kWm9vbS56b29tKSA/IHt6b29tOiBjZW50ZXJBbmRab29tLnpvb219IDoge30pLFxuICAgICAgICAgICAgcGl0Y2g6IDAsXG4gICAgICAgICAgICBiZWFyaW5nOiAwLFxuICAgICAgICAgICAgdHJhbnNpdGlvbkR1cmF0aW9uLFxuICAgICAgICAgICAgdHJhbnNpdGlvbkludGVycG9sYXRvcjogbmV3IEZseVRvSW50ZXJwb2xhdG9yKClcbiAgICAgICAgICB9LFxuICAgICAgICAgIGluZGV4XG4gICAgICAgICk7XG4gICAgICB9LFxuICAgICAgW1xuICAgICAgICBpbmRleCxcbiAgICAgICAgbGF5ZXJPcmRlcixcbiAgICAgICAgbWFwU3RhdGUsXG4gICAgICAgIHJlbW92ZUdlb2NvZGVyRGF0YXNldCxcbiAgICAgICAgdHJhbnNpdGlvbkR1cmF0aW9uLFxuICAgICAgICB1cGRhdGVNYXAsXG4gICAgICAgIHVwZGF0ZVZpc0RhdGFcbiAgICAgIF1cbiAgICApO1xuXG4gICAgcmV0dXJuIChcbiAgICAgIDxTdHlsZWRHZW9jb2RlclBhbmVsXG4gICAgICAgIGNsYXNzTmFtZT17Y2xhc3NuYW1lcygnZ2VvY29kZXItcGFuZWwnLCBjbGFzc05hbWUpfVxuICAgICAgICB3aWR0aD17d2lkdGh9XG4gICAgICAgIGluZGV4PXtpbmRleH1cbiAgICAgICAgdW5zeW5jZWRWaWV3cG9ydHM9e3Vuc3luY2VkVmlld3BvcnRzfVxuICAgICAgICBzdHlsZT17e2Rpc3BsYXk6IGlzR2VvY29kZXJFbmFibGVkID8gJ2Jsb2NrJyA6ICdub25lJ319XG4gICAgICA+XG4gICAgICAgIHtpc1ZhbGlkKG1hcGJveEFwaUFjY2Vzc1Rva2VuKSAmJiAoXG4gICAgICAgICAgPEdlb2NvZGVyXG4gICAgICAgICAgICBtYXBib3hBcGlBY2Nlc3NUb2tlbj17bWFwYm94QXBpQWNjZXNzVG9rZW59XG4gICAgICAgICAgICBvblNlbGVjdGVkPXtvblNlbGVjdGVkfVxuICAgICAgICAgICAgb25EZWxldGVNYXJrZXI9e3JlbW92ZUdlb2NvZGVyRGF0YXNldH1cbiAgICAgICAgICAgIHdpZHRoPXt3aWR0aH1cbiAgICAgICAgICAvPlxuICAgICAgICApfVxuICAgICAgPC9TdHlsZWRHZW9jb2RlclBhbmVsPlxuICAgICk7XG4gIH07XG5cbiAgcmV0dXJuIEdlb2NvZGVyUGFuZWw7XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7QUFHQSxJQUFBQSxNQUFBLEdBQUFDLHVCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyxpQkFBQSxHQUFBQyxzQkFBQSxDQUFBRixPQUFBO0FBQ0EsSUFBQUcsV0FBQSxHQUFBRCxzQkFBQSxDQUFBRixPQUFBO0FBQ0EsSUFBQUksV0FBQSxHQUFBSixPQUFBO0FBQ0EsSUFBQUssTUFBQSxHQUFBTCxPQUFBO0FBQ0EsSUFBQU0sTUFBQSxHQUFBTixPQUFBO0FBQ0EsSUFBQU8sVUFBQSxHQUFBUCxPQUFBO0FBVUEsSUFBQVEsU0FBQSxHQUFBTixzQkFBQSxDQUFBRixPQUFBO0FBQXFELElBQUFTLGVBQUEsRUFuQnJEO0FBQ0E7QUFBQSxTQUFBQyx5QkFBQUMsQ0FBQSw2QkFBQUMsT0FBQSxtQkFBQUMsQ0FBQSxPQUFBRCxPQUFBLElBQUFFLENBQUEsT0FBQUYsT0FBQSxZQUFBRix3QkFBQSxZQUFBQSx5QkFBQUMsQ0FBQSxXQUFBQSxDQUFBLEdBQUFHLENBQUEsR0FBQUQsQ0FBQSxLQUFBRixDQUFBO0FBQUEsU0FBQVosd0JBQUFZLENBQUEsRUFBQUUsQ0FBQSxTQUFBQSxDQUFBLElBQUFGLENBQUEsSUFBQUEsQ0FBQSxDQUFBSSxVQUFBLFNBQUFKLENBQUEsZUFB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
|
|
170
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfc3R5bGVkQ29tcG9uZW50cyIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfY2xhc3NuYW1lcyIsIl9wcm9jZXNzb3JzIiwiX2NvcmUiLCJfdXRpbHMiLCJfY29uc3RhbnRzIiwiX2dlb2NvZGVyIiwiX3RlbXBsYXRlT2JqZWN0IiwiX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlIiwiZSIsIldlYWtNYXAiLCJyIiwidCIsIl9fZXNNb2R1bGUiLCJfdHlwZW9mIiwiaGFzIiwiZ2V0IiwibiIsIl9fcHJvdG9fXyIsImEiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsInUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJpIiwic2V0Iiwib3duS2V5cyIsImtleXMiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJvIiwiZmlsdGVyIiwiZW51bWVyYWJsZSIsInB1c2giLCJhcHBseSIsIl9vYmplY3RTcHJlYWQiLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJmb3JFYWNoIiwiX2RlZmluZVByb3BlcnR5MiIsImdldE93blByb3BlcnR5RGVzY3JpcHRvcnMiLCJkZWZpbmVQcm9wZXJ0aWVzIiwiSUNPTl9MQVlFUiIsImlkIiwiR0VPQ09ERVJfTEFZRVJfSUQiLCJ0eXBlIiwiY29uZmlnIiwibGFiZWwiLCJjb2xvciIsIkdFT0NPREVSX0lDT05fQ09MT1IiLCJkYXRhSWQiLCJHRU9DT0RFUl9EQVRBU0VUX05BTUUiLCJjb2x1bW5zIiwibGF0IiwibG5nIiwiaWNvbiIsImlzVmlzaWJsZSIsImhpZGRlbiIsInZpc0NvbmZpZyIsInJhZGl1cyIsIkdFT0NPREVSX0lDT05fU0laRSIsImdlbmVyYXRlQ29uZmlnIiwibGF5ZXJPcmRlciIsInZpc1N0YXRlIiwibGF5ZXJzIiwiY29uY2F0IiwiX3RvQ29uc3VtYWJsZUFycmF5MiIsIlN0eWxlZEdlb2NvZGVyUGFuZWwiLCJzdHlsZWQiLCJkaXYiLCJfdGFnZ2VkVGVtcGxhdGVMaXRlcmFsMiIsInByb3BzIiwidGhlbWUiLCJnZW9jb2RlclRvcCIsInVuc3luY2VkVmlld3BvcnRzIiwiTnVtYmVyIiwiaXNGaW5pdGUiLCJpbmRleCIsImdlb2NvZGVyUmlnaHQiLCJ3aWR0aCIsImdlb2NvZGVyV2lkdGgiLCJib3hTaGFkb3ciLCJnZW5lcmF0ZUdlb2NvZGVyRGF0YXNldCIsImxvbiIsInRleHQiLCJkYXRhIiwicHJvY2Vzc1Jvd09iamVjdCIsImx0IiwibG4iLCJpbmZvIiwiaXNWYWxpZCIsImtleSIsInRlc3QiLCJnZXRVcGRhdGVWaXNEYXRhUGF5bG9hZCIsImRhdGFzZXQiLCJrZWVwRXhpc3RpbmdDb25maWciLCJHZW9jb2RlclBhbmVsRmFjdG9yeSIsIkdlb2NvZGVyUGFuZWwiLCJfcmVmIiwiaXNHZW9jb2RlckVuYWJsZWQiLCJtYXBTdGF0ZSIsIm1hcGJveEFwaUFjY2Vzc1Rva2VuIiwidXBkYXRlVmlzRGF0YSIsInJlbW92ZURhdGFzZXQiLCJ1cGRhdGVNYXAiLCJfcmVmJHRyYW5zaXRpb25EdXJhdGkiLCJ0cmFuc2l0aW9uRHVyYXRpb24iLCJjbGFzc05hbWUiLCJyZW1vdmVHZW9jb2RlckRhdGFzZXQiLCJ1c2VDYWxsYmFjayIsIm9uU2VsZWN0ZWQiLCJfdmlld3BvcnQiLCJ1bmRlZmluZWQiLCJnZW9JdGVtIiwiX2dlb0l0ZW0kY2VudGVyIiwiX3NsaWNlZFRvQXJyYXkyIiwiY2VudGVyIiwiYmJveCIsInVwZGF0ZVZpc0RhdGFQYXlsb2FkIiwiYm91bmRzIiwiR0VPQ09ERVJfR0VPX09GRlNFVCIsImNlbnRlckFuZFpvb20iLCJnZXRDZW50ZXJBbmRab29tRnJvbUJvdW5kcyIsImhlaWdodCIsImxhdGl0dWRlIiwibG9uZ2l0dWRlIiwiem9vbSIsInBpdGNoIiwiYmVhcmluZyIsInRyYW5zaXRpb25JbnRlcnBvbGF0b3IiLCJGbHlUb0ludGVycG9sYXRvciIsImNyZWF0ZUVsZW1lbnQiLCJjbGFzc25hbWVzIiwic3R5bGUiLCJkaXNwbGF5Iiwib25EZWxldGVNYXJrZXIiXSwic291cmNlcyI6WyIuLi9zcmMvZ2VvY29kZXItcGFuZWwudHN4Il0sInNvdXJjZXNDb250ZW50IjpbIi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVRcbi8vIENvcHlyaWdodCBjb250cmlidXRvcnMgdG8gdGhlIGtlcGxlci5nbCBwcm9qZWN0XG5cbmltcG9ydCBSZWFjdCwge3VzZUNhbGxiYWNrfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgc3R5bGVkLCB7SVN0eWxlZENvbXBvbmVudH0gZnJvbSAnc3R5bGVkLWNvbXBvbmVudHMnO1xuaW1wb3J0IGNsYXNzbmFtZXMgZnJvbSAnY2xhc3NuYW1lcyc7XG5pbXBvcnQge3Byb2Nlc3NSb3dPYmplY3R9IGZyb20gJ0BrZXBsZXIuZ2wvcHJvY2Vzc29ycyc7XG5pbXBvcnQge0ZseVRvSW50ZXJwb2xhdG9yfSBmcm9tICdAZGVjay5nbC9jb3JlJztcbmltcG9ydCB7Z2V0Q2VudGVyQW5kWm9vbUZyb21Cb3VuZHN9IGZyb20gJ0BrZXBsZXIuZ2wvdXRpbHMnO1xuaW1wb3J0IHtcbiAgR0VPQ09ERVJfREFUQVNFVF9OQU1FLFxuICBHRU9DT0RFUl9MQVlFUl9JRCxcbiAgR0VPQ09ERVJfR0VPX09GRlNFVCxcbiAgR0VPQ09ERVJfSUNPTl9DT0xPUixcbiAgR0VPQ09ERVJfSUNPTl9TSVpFXG59IGZyb20gJ0BrZXBsZXIuZ2wvY29uc3RhbnRzJztcbmltcG9ydCB7QWRkRGF0YVRvTWFwT3B0aW9ucywgTWFwU3RhdGUsIFByb3RvRGF0YXNldCwgVWlTdGF0ZSwgVmlld3BvcnR9IGZyb20gJ0BrZXBsZXIuZ2wvdHlwZXMnO1xuaW1wb3J0IHtBY3Rpb25IYW5kbGVyLCByZW1vdmVEYXRhc2V0LCB1cGRhdGVNYXAsIHVwZGF0ZVZpc0RhdGF9IGZyb20gJ0BrZXBsZXIuZ2wvYWN0aW9ucyc7XG5cbmltcG9ydCBHZW9jb2Rlciwge1Jlc3VsdH0gZnJvbSAnLi9nZW9jb2Rlci9nZW9jb2Rlcic7XG50eXBlIE1hcFZpZXdTdGF0ZSA9IHtcbiAgbGF0aXR1ZGU6IG51bWJlcjtcbiAgbG9uZ2l0dWRlOiBudW1iZXI7XG4gIHpvb206IG51bWJlcjtcbiAgYmVhcmluZz86IG51bWJlcjtcbiAgcGl0Y2g/OiBudW1iZXI7XG4gIHRyYW5zaXRpb25EdXJhdGlvbj86IG51bWJlcjtcbiAgdHJhbnNpdGlvbkludGVycG9sYXRvcj86IG9iamVjdDtcbn07XG5cbmltcG9ydCB7QmFzZUNvbXBvbmVudFByb3BzfSBmcm9tICcuL3R5cGVzJztcblxuY29uc3QgSUNPTl9MQVlFUiA9IHtcbiAgaWQ6IEdFT0NPREVSX0xBWUVSX0lELFxuICB0eXBlOiAnaWNvbicsXG4gIGNvbmZpZzoge1xuICAgIGxhYmVsOiAnR2VvY29kZXIgTGF5ZXInLFxuICAgIGNvbG9yOiBHRU9DT0RFUl9JQ09OX0NPTE9SLFxuICAgIGRhdGFJZDogR0VPQ09ERVJfREFUQVNFVF9OQU1FLFxuICAgIGNvbHVtbnM6IHtcbiAgICAgIGxhdDogJ2x0JyxcbiAgICAgIGxuZzogJ2xuJyxcbiAgICAgIGljb246ICdpY29uJyxcbiAgICAgIGxhYmVsOiAndGV4dCdcbiAgICB9LFxuICAgIGlzVmlzaWJsZTogdHJ1ZSxcbiAgICBoaWRkZW46IHRydWUsXG4gICAgdmlzQ29uZmlnOiB7XG4gICAgICByYWRpdXM6IEdFT0NPREVSX0lDT05fU0laRVxuICAgIH1cbiAgfVxufTtcblxuZnVuY3Rpb24gZ2VuZXJhdGVDb25maWcobGF5ZXJPcmRlcikge1xuICByZXR1cm4ge1xuICAgIHZpc1N0YXRlOiB7XG4gICAgICBsYXllcnM6IFtJQ09OX0xBWUVSXSxcbiAgICAgIGxheWVyT3JkZXI6IFtJQ09OX0xBWUVSLmlkLCAuLi5sYXllck9yZGVyXVxuICAgIH1cbiAgfTtcbn1cblxuZXhwb3J0IHR5cGUgU3R5bGVkR2VvY29kZXJQYW5lbFByb3BzID0gQmFzZUNvbXBvbmVudFByb3BzICYge1xuICB1bnN5bmNlZFZpZXdwb3J0cz86IGJvb2xlYW47XG4gIGluZGV4PzogbnVtYmVyO1xuICB3aWR0aD86IG51bWJlcjtcbn07XG5cbmNvbnN0IFN0eWxlZEdlb2NvZGVyUGFuZWw6IElTdHlsZWRDb21wb25lbnQ8XG4gICd3ZWInLFxuICBTdHlsZWRHZW9jb2RlclBhbmVsUHJvcHNcbj4gPSBzdHlsZWQuZGl2PFN0eWxlZEdlb2NvZGVyUGFuZWxQcm9wcz5gXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLmdlb2NvZGVyVG9wfXB4O1xuICByaWdodDogJHtwcm9wcyA9PlxuICAgIHByb3BzLnVuc3luY2VkVmlld3BvcnRzXG4gICAgICA/IC8vIDIgZ2VvY29kZXJzOiBzcGxpdCBtb2RlIGFuZCB1bnN5bmNlZCB2aWV3cG9ydHNcbiAgICAgICAgTnVtYmVyLmlzRmluaXRlKHByb3BzLmluZGV4KSAmJiBwcm9wcy5pbmRleCA9PT0gMFxuICAgICAgICA/IGBjYWxjKDUwJSArICR7cHJvcHMudGhlbWUuZ2VvY29kZXJSaWdodH1weClgIC8vIHVuc3luY2VkIGxlZnQgZ2VvY29kZXIgKGluZGV4IDApXG4gICAgICAgIDogYCR7cHJvcHMudGhlbWUuZ2VvY29kZXJSaWdodH1weGAgLy8gdW5zeW5jZWQgcmlnaHQgZ2VvY29kZXIgKGluZGV4IDEpXG4gICAgICA6IC8vIDEgZ2VvY29kZXI6IHNpbmdsZSBtb2RlIE9SIHNwbGl0IG1vZGUgYW5kIHN5bmNlZCB2aWV3cG9ydHNcbiAgICAgICAgYCR7cHJvcHMudGhlbWUuZ2VvY29kZXJSaWdodH1weGB9O1xuICB3aWR0aDogJHtwcm9wcyA9PiAoTnVtYmVyLmlzRmluaXRlKHByb3BzLndpZHRoKSA/IHByb3BzLndpZHRoIDogcHJvcHMudGhlbWUuZ2VvY29kZXJXaWR0aCl9cHg7XG4gIGJveC1zaGFkb3c6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuYm94U2hhZG93fTtcbiAgei1pbmRleDogMTAwO1xuYDtcblxuZnVuY3Rpb24gZ2VuZXJhdGVHZW9jb2RlckRhdGFzZXQobGF0OiBudW1iZXIsIGxvbjogbnVtYmVyLCB0ZXh0Pzogc3RyaW5nKTogUHJvdG9EYXRhc2V0IHwgbnVsbCB7XG4gIGNvbnN0IGRhdGEgPSBwcm9jZXNzUm93T2JqZWN0KFtcbiAgICB7XG4gICAgICBsdDogbGF0LFxuICAgICAgbG46IGxvbixcbiAgICAgIGljb246ICdwbGFjZScsXG4gICAgICB0ZXh0XG4gICAgfVxuICBdKTtcbiAgaWYgKCFkYXRhKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIGRhdGEsXG4gICAgaW5mbzoge1xuICAgICAgaGlkZGVuOiB0cnVlLFxuICAgICAgaWQ6IEdFT0NPREVSX0RBVEFTRVRfTkFNRSxcbiAgICAgIGxhYmVsOiBHRU9DT0RFUl9EQVRBU0VUX05BTUVcbiAgICB9XG4gIH07XG59XG5cbmZ1bmN0aW9uIGlzVmFsaWQoa2V5KSB7XG4gIHJldHVybiAvcGtcXC4uKlxcLi4qLy50ZXN0KGtleSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRVcGRhdGVWaXNEYXRhUGF5bG9hZChcbiAgbGF0OiBudW1iZXIsXG4gIGxvbjogbnVtYmVyLFxuICB0ZXh0Pzogc3RyaW5nXG4pOiBbUHJvdG9EYXRhc2V0W10sIEFkZERhdGFUb01hcE9wdGlvbnNdIHwgbnVsbCB7XG4gIGNvbnN0IGRhdGFzZXQgPSBnZW5lcmF0ZUdlb2NvZGVyRGF0YXNldChsYXQsIGxvbiwgdGV4dCk7XG4gIGlmICghZGF0YXNldCkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG4gIHJldHVybiBbXG4gICAgW2RhdGFzZXRdLFxuICAgIHtcbiAgICAgIGtlZXBFeGlzdGluZ0NvbmZpZzogdHJ1ZVxuICAgIH1cbiAgXTtcbn1cblxuaW50ZXJmYWNlIEdlb2NvZGVyUGFuZWxQcm9wcyB7XG4gIGlzR2VvY29kZXJFbmFibGVkOiBib29sZWFuO1xuICBtYXBTdGF0ZTogTWFwU3RhdGU7XG4gIHVpU3RhdGU6IFVpU3RhdGU7XG4gIG1hcGJveEFwaUFjY2Vzc1Rva2VuOiBzdHJpbmc7XG4gIHVwZGF0ZVZpc0RhdGE6IEFjdGlvbkhhbmRsZXI8dHlwZW9mIHVwZGF0ZVZpc0RhdGE+O1xuICByZW1vdmVEYXRhc2V0OiBBY3Rpb25IYW5kbGVyPHR5cGVvZiByZW1vdmVEYXRhc2V0PjtcbiAgdXBkYXRlTWFwOiBBY3Rpb25IYW5kbGVyPHR5cGVvZiB1cGRhdGVNYXA+O1xuICBsYXllck9yZGVyOiBzdHJpbmdbXTtcblxuICB0cmFuc2l0aW9uRHVyYXRpb24/OiBNYXBWaWV3U3RhdGVbJ3RyYW5zaXRpb25EdXJhdGlvbiddO1xuICB3aWR0aD86IG51bWJlcjtcbiAgY2xhc3NOYW1lPzogc3RyaW5nO1xuICBpbmRleDogbnVtYmVyO1xuICB1bnN5bmNlZFZpZXdwb3J0czogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gR2VvY29kZXJQYW5lbEZhY3RvcnkoKTogUmVhY3QuRkM8R2VvY29kZXJQYW5lbFByb3BzPiB7XG4gIGNvbnN0IEdlb2NvZGVyUGFuZWwgPSAoe1xuICAgIGlzR2VvY29kZXJFbmFibGVkLFxuICAgIG1hcFN0YXRlLFxuICAgIG1hcGJveEFwaUFjY2Vzc1Rva2VuLFxuICAgIHVwZGF0ZVZpc0RhdGEsXG4gICAgcmVtb3ZlRGF0YXNldCxcbiAgICB1cGRhdGVNYXAsXG4gICAgbGF5ZXJPcmRlcixcbiAgICB0cmFuc2l0aW9uRHVyYXRpb24gPSAzMDAwLFxuICAgIHdpZHRoLFxuICAgIGNsYXNzTmFtZSxcbiAgICBpbmRleCxcbiAgICB1bnN5bmNlZFZpZXdwb3J0c1xuICB9OiBHZW9jb2RlclBhbmVsUHJvcHMpID0+IHtcbiAgICBjb25zdCByZW1vdmVHZW9jb2RlckRhdGFzZXQgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgICByZW1vdmVEYXRhc2V0KEdFT0NPREVSX0RBVEFTRVRfTkFNRSk7XG4gICAgfSwgW3JlbW92ZURhdGFzZXRdKTtcblxuICAgIGNvbnN0IG9uU2VsZWN0ZWQgPSB1c2VDYWxsYmFjayhcbiAgICAgIChfdmlld3BvcnQ6IFZpZXdwb3J0IHwgbnVsbCA9IG51bGwsIGdlb0l0ZW06IFJlc3VsdCkgPT4ge1xuICAgICAgICBjb25zdCB7XG4gICAgICAgICAgY2VudGVyOiBbbG9uLCBsYXRdLFxuICAgICAgICAgIHRleHQsXG4gICAgICAgICAgYmJveFxuICAgICAgICB9ID0gZ2VvSXRlbTtcblxuICAgICAgICBjb25zdCB1cGRhdGVWaXNEYXRhUGF5bG9hZCA9IGdldFVwZGF0ZVZpc0RhdGFQYXlsb2FkKGxhdCwgbG9uLCB0ZXh0KTtcbiAgICAgICAgaWYgKHVwZGF0ZVZpc0RhdGFQYXlsb2FkKSB7XG4gICAgICAgICAgcmVtb3ZlR2VvY29kZXJEYXRhc2V0KCk7XG4gICAgICAgICAgdXBkYXRlVmlzRGF0YSguLi51cGRhdGVWaXNEYXRhUGF5bG9hZCwgZ2VuZXJhdGVDb25maWcobGF5ZXJPcmRlcikpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgYm91bmRzID0gYmJveCB8fCBbXG4gICAgICAgICAgbG9uIC0gR0VPQ09ERVJfR0VPX09GRlNFVCxcbiAgICAgICAgICBsYXQgLSBHRU9DT0RFUl9HRU9fT0ZGU0VULFxuICAgICAgICAgIGxvbiArIEdFT0NPREVSX0dFT19PRkZTRVQsXG4gICAgICAgICAgbGF0ICsgR0VPQ09ERVJfR0VPX09GRlNFVFxuICAgICAgICBdO1xuICAgICAgICBjb25zdCBjZW50ZXJBbmRab29tID0gZ2V0Q2VudGVyQW5kWm9vbUZyb21Cb3VuZHMoYm91bmRzLCB7XG4gICAgICAgICAgd2lkdGg6IG1hcFN0YXRlLndpZHRoLFxuICAgICAgICAgIGhlaWdodDogbWFwU3RhdGUuaGVpZ2h0XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmICghY2VudGVyQW5kWm9vbSkge1xuICAgICAgICAgIC8vIGZhaWxlZCB0byBmaXQgYm91bmRzXG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdXBkYXRlTWFwKFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGxhdGl0dWRlOiBjZW50ZXJBbmRab29tLmNlbnRlclsxXSxcbiAgICAgICAgICAgIGxvbmdpdHVkZTogY2VudGVyQW5kWm9vbS5jZW50ZXJbMF0sXG4gICAgICAgICAgICAvLyBGb3IgbWFyZ2luYWwgb3IgaW52YWxpZCBib3VuZHMsIHpvb20gbWF5IGJlIE5hTi4gTWFrZSBzdXJlIHRvIHByb3ZpZGUgYSB2YWxpZCB2YWx1ZSBpbiBvcmRlclxuICAgICAgICAgICAgLy8gdG8gYXZvaWQgY29ycnVwdCBzdGF0ZSBhbmQgcG90ZW50aWFsIGNyYXNoZXMgYXMgem9vbSBpcyBleHBlY3RlZCB0byBiZSBhIG51bWJlclxuICAgICAgICAgICAgLi4uKE51bWJlci5pc0Zpbml0ZShjZW50ZXJBbmRab29tLnpvb20pID8ge3pvb206IGNlbnRlckFuZFpvb20uem9vbX0gOiB7fSksXG4gICAgICAgICAgICBwaXRjaDogMCxcbiAgICAgICAgICAgIGJlYXJpbmc6IDAsXG4gICAgICAgICAgICB0cmFuc2l0aW9uRHVyYXRpb24sXG4gICAgICAgICAgICB0cmFuc2l0aW9uSW50ZXJwb2xhdG9yOiBuZXcgRmx5VG9JbnRlcnBvbGF0b3IoKVxuICAgICAgICAgIH0sXG4gICAgICAgICAgaW5kZXhcbiAgICAgICAgKTtcbiAgICAgIH0sXG4gICAgICBbXG4gICAgICAgIGluZGV4LFxuICAgICAgICBsYXllck9yZGVyLFxuICAgICAgICBtYXBTdGF0ZSxcbiAgICAgICAgcmVtb3ZlR2VvY29kZXJEYXRhc2V0LFxuICAgICAgICB0cmFuc2l0aW9uRHVyYXRpb24sXG4gICAgICAgIHVwZGF0ZU1hcCxcbiAgICAgICAgdXBkYXRlVmlzRGF0YVxuICAgICAgXVxuICAgICk7XG5cbiAgICByZXR1cm4gKFxuICAgICAgPFN0eWxlZEdlb2NvZGVyUGFuZWxcbiAgICAgICAgY2xhc3NOYW1lPXtjbGFzc25hbWVzKCdnZW9jb2Rlci1wYW5lbCcsIGNsYXNzTmFtZSl9XG4gICAgICAgIHdpZHRoPXt3aWR0aH1cbiAgICAgICAgaW5kZXg9e2luZGV4fVxuICAgICAgICB1bnN5bmNlZFZpZXdwb3J0cz17dW5zeW5jZWRWaWV3cG9ydHN9XG4gICAgICAgIHN0eWxlPXt7ZGlzcGxheTogaXNHZW9jb2RlckVuYWJsZWQgPyAnYmxvY2snIDogJ25vbmUnfX1cbiAgICAgID5cbiAgICAgICAge2lzVmFsaWQobWFwYm94QXBpQWNjZXNzVG9rZW4pICYmIChcbiAgICAgICAgICA8R2VvY29kZXJcbiAgICAgICAgICAgIG1hcGJveEFwaUFjY2Vzc1Rva2VuPXttYXBib3hBcGlBY2Nlc3NUb2tlbn1cbiAgICAgICAgICAgIG9uU2VsZWN0ZWQ9e29uU2VsZWN0ZWR9XG4gICAgICAgICAgICBvbkRlbGV0ZU1hcmtlcj17cmVtb3ZlR2VvY29kZXJEYXRhc2V0fVxuICAgICAgICAgICAgd2lkdGg9e3dpZHRofVxuICAgICAgICAgIC8+XG4gICAgICAgICl9XG4gICAgICA8L1N0eWxlZEdlb2NvZGVyUGFuZWw+XG4gICAgKTtcbiAgfTtcblxuICByZXR1cm4gR2VvY29kZXJQYW5lbDtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7OztBQUdBLElBQUFBLE1BQUEsR0FBQUMsdUJBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFDLGlCQUFBLEdBQUFDLHNCQUFBLENBQUFGLE9BQUE7QUFDQSxJQUFBRyxXQUFBLEdBQUFELHNCQUFBLENBQUFGLE9BQUE7QUFDQSxJQUFBSSxXQUFBLEdBQUFKLE9BQUE7QUFDQSxJQUFBSyxLQUFBLEdBQUFMLE9BQUE7QUFDQSxJQUFBTSxNQUFBLEdBQUFOLE9BQUE7QUFDQSxJQUFBTyxVQUFBLEdBQUFQLE9BQUE7QUFVQSxJQUFBUSxTQUFBLEdBQUFOLHNCQUFBLENBQUFGLE9BQUE7QUFBcUQsSUFBQVMsZUFBQSxFQW5CckQ7QUFDQTtBQUFBLFNBQUFDLHlCQUFBQyxDQUFBLDZCQUFBQyxPQUFBLG1CQUFBQyxDQUFBLE9BQUFELE9BQUEsSUFBQUUsQ0FBQSxPQUFBRixPQUFBLFlBQUFGLHdCQUFBLFlBQUFBLHlCQUFBQyxDQUFB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
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import React, { PropsWithChildren } from 'react';
|
|
2
2
|
import { Provider } from '@kepler.gl/cloud-providers';
|
|
3
|
-
|
|
3
|
+
type CloudListProviderProps = PropsWithChildren<{
|
|
4
4
|
providers: Provider[];
|
|
5
5
|
}>;
|
|
6
6
|
export declare const CloudListProvider: React.FC<CloudListProviderProps>;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { DragEndEvent, DragStartEvent } from '@dnd-kit/core';
|
|
2
2
|
import { Effect } from '@kepler.gl/types';
|
|
3
|
-
|
|
3
|
+
type DndEffectsHook = {
|
|
4
4
|
activeEffect: Effect | undefined;
|
|
5
5
|
onDragStart: (event: DragStartEvent) => void;
|
|
6
6
|
onDragEnd: (event: DragEndEvent) => void;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { DragEndEvent, DragStartEvent } from '@dnd-kit/core';
|
|
2
2
|
import { Layer } from '@kepler.gl/layers';
|
|
3
|
-
|
|
3
|
+
type DndEffectsHook = {
|
|
4
4
|
activeLayer: Layer | undefined;
|
|
5
5
|
onDragStart: (event: DragStartEvent) => void;
|
|
6
6
|
onDragEnd: (event: DragEndEvent) => void;
|
|
@@ -2,8 +2,8 @@ import { PMTilesMetadata } from '@loaders.gl/pmtiles';
|
|
|
2
2
|
import { VectorTileMetadata } from '@kepler.gl/table';
|
|
3
3
|
import { JsonObjectOrArray, StacTypes } from '@kepler.gl/types';
|
|
4
4
|
import { RasterTileType } from '@kepler.gl/constants';
|
|
5
|
-
|
|
6
|
-
export
|
|
5
|
+
type RasterMetadataResponse = VectorTileMetadata | StacTypes.CompleteSTACObject | null;
|
|
6
|
+
export type FetchJsonProps = {
|
|
7
7
|
url: string | null;
|
|
8
8
|
rasterTileType: RasterTileType;
|
|
9
9
|
options?: JsonObjectOrArray;
|
|
@@ -12,7 +12,7 @@ export declare type FetchJsonProps = {
|
|
|
12
12
|
rasterTileType: RasterTileType;
|
|
13
13
|
}) => RasterMetadataResponse | Error;
|
|
14
14
|
};
|
|
15
|
-
export
|
|
15
|
+
export type UseFetchJsonReturn = {
|
|
16
16
|
data: RasterMetadataResponse;
|
|
17
17
|
loading: boolean;
|
|
18
18
|
error: Error | null;
|
|
@@ -2,13 +2,13 @@ import { TileJSON } from '@loaders.gl/mvt';
|
|
|
2
2
|
import { PMTilesMetadata } from '@loaders.gl/pmtiles';
|
|
3
3
|
import { RemoteTileFormat } from '@kepler.gl/constants';
|
|
4
4
|
import { VectorTileMetadata } from '@kepler.gl/table';
|
|
5
|
-
|
|
5
|
+
type FetchVectorTileMetadataProps = {
|
|
6
6
|
metadataUrl: string | null;
|
|
7
7
|
tilesetUrl: string | null;
|
|
8
8
|
remoteTileFormat: RemoteTileFormat;
|
|
9
9
|
process?: (json: PMTilesMetadata | TileJSON) => VectorTileMetadata | Error | null;
|
|
10
10
|
};
|
|
11
|
-
|
|
11
|
+
type FetchVectorTileMetadataReturn = {
|
|
12
12
|
data: VectorTileMetadata | null;
|
|
13
13
|
loading: boolean;
|
|
14
14
|
error: Error | null;
|
|
@@ -1,28 +1,30 @@
|
|
|
1
|
-
/// <reference types="react" />
|
|
2
1
|
import { MapLegendControlSettings } from '@kepler.gl/types';
|
|
3
|
-
|
|
2
|
+
type Params = {
|
|
4
3
|
legendContentRef: React.MutableRefObject<HTMLElement | null>;
|
|
5
4
|
isSidePanelShown: boolean;
|
|
6
5
|
settings?: MapLegendControlSettings;
|
|
7
6
|
onChangeSettings: (settings: Partial<MapLegendControlSettings>) => void;
|
|
8
7
|
theme: Record<string, any>;
|
|
8
|
+
mapHeight?: number;
|
|
9
|
+
mapWidth?: number;
|
|
9
10
|
};
|
|
10
|
-
|
|
11
|
+
type ReturnType = {
|
|
11
12
|
positionStyles: Record<string, unknown>;
|
|
12
13
|
updatePosition: () => void;
|
|
13
14
|
contentHeight: number;
|
|
15
|
+
maxContentHeight?: number;
|
|
14
16
|
startResize: () => void;
|
|
15
17
|
resize: (deltaY: number) => void;
|
|
16
18
|
};
|
|
17
|
-
export
|
|
19
|
+
export type UseCalcLegendPositionProps = {
|
|
18
20
|
legendContentRef: React.MutableRefObject<HTMLElement | null>;
|
|
19
21
|
isSidePanelShown: boolean;
|
|
20
22
|
sidePanelWidth: number;
|
|
21
23
|
};
|
|
22
|
-
export declare function useCalcLegendPosition({ legendContentRef, isSidePanelShown, sidePanelWidth }: UseCalcLegendPositionProps): () => MapLegendControlSettings[
|
|
24
|
+
export declare function useCalcLegendPosition({ legendContentRef, isSidePanelShown, sidePanelWidth }: UseCalcLegendPositionProps): () => MapLegendControlSettings["position"];
|
|
23
25
|
/**
|
|
24
26
|
* Returns a function that calculates the anchored position of the map legend
|
|
25
27
|
* that is being dragged.
|
|
26
28
|
*/
|
|
27
|
-
export default function useLegendPosition({ legendContentRef, isSidePanelShown, settings, onChangeSettings, theme }: Params): ReturnType;
|
|
29
|
+
export default function useLegendPosition({ legendContentRef, isSidePanelShown, settings, onChangeSettings, theme, mapHeight, mapWidth }: Params): ReturnType;
|
|
28
30
|
export {};
|
|
@@ -70,7 +70,9 @@ function useLegendPosition(_ref2) {
|
|
|
70
70
|
isSidePanelShown = _ref2.isSidePanelShown,
|
|
71
71
|
settings = _ref2.settings,
|
|
72
72
|
onChangeSettings = _ref2.onChangeSettings,
|
|
73
|
-
theme = _ref2.theme
|
|
73
|
+
theme = _ref2.theme,
|
|
74
|
+
mapHeight = _ref2.mapHeight,
|
|
75
|
+
mapWidth = _ref2.mapWidth;
|
|
74
76
|
var pos = (_settings$position = settings === null || settings === void 0 ? void 0 : settings.position) !== null && _settings$position !== void 0 ? _settings$position : DEFAULT_POSITION;
|
|
75
77
|
var contentHeight = (_settings$contentHeig = settings === null || settings === void 0 ? void 0 : settings.contentHeight) !== null && _settings$contentHeig !== void 0 ? _settings$contentHeig : -1;
|
|
76
78
|
var positionStyles = (0, _react.useMemo)(function () {
|
|
@@ -78,6 +80,13 @@ function useLegendPosition(_ref2) {
|
|
|
78
80
|
}, [pos]);
|
|
79
81
|
var startHeightRef = (0, _react.useRef)(0);
|
|
80
82
|
var sidePanelWidth = ((_theme$sidePanel = theme.sidePanel) === null || _theme$sidePanel === void 0 ? void 0 : _theme$sidePanel.width) || 0;
|
|
83
|
+
|
|
84
|
+
// Calculate dynamic max content height based on map root dimensions
|
|
85
|
+
var maxContentHeight = (0, _react.useMemo)(function () {
|
|
86
|
+
if (!mapHeight) return undefined;
|
|
87
|
+
// Available height minus margins and header
|
|
88
|
+
return mapHeight - MARGIN.top - MARGIN.bottom - MAP_CONTROL_HEADER_FULL_HEIGHT;
|
|
89
|
+
}, [mapHeight]);
|
|
81
90
|
var calcPosition = useCalcLegendPosition({
|
|
82
91
|
legendContentRef: legendContentRef,
|
|
83
92
|
isSidePanelShown: isSidePanelShown,
|
|
@@ -103,7 +112,10 @@ function useLegendPosition(_ref2) {
|
|
|
103
112
|
if (root instanceof HTMLElement && legendContent) {
|
|
104
113
|
var mapRootBounds = root.getBoundingClientRect();
|
|
105
114
|
var legendRect = legendContent.getBoundingClientRect();
|
|
106
|
-
var
|
|
115
|
+
var remainingHeight = mapRootBounds.bottom - (legendRect.top + MAP_CONTROL_HEADER_FULL_HEIGHT + MARGIN.bottom);
|
|
116
|
+
// Use maxContentHeight if available, otherwise fall back to viewport-based calculation
|
|
117
|
+
var maxHeight = maxContentHeight ? Math.min(maxContentHeight, remainingHeight) : remainingHeight;
|
|
118
|
+
var nextHeight = Math.min(maxHeight, Math.max(MIN_CONTENT_HEIGHT, startHeightRef.current + deltaY));
|
|
107
119
|
onChangeSettings({
|
|
108
120
|
contentHeight: nextHeight
|
|
109
121
|
});
|
|
@@ -117,7 +129,7 @@ function useLegendPosition(_ref2) {
|
|
|
117
129
|
}
|
|
118
130
|
},
|
|
119
131
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
120
|
-
[contentHeight, pos, onChangeSettings]);
|
|
132
|
+
[contentHeight, pos, onChangeSettings, maxContentHeight]);
|
|
121
133
|
|
|
122
134
|
// Shift when side panel is shown/hidden
|
|
123
135
|
var posRef = (0, _react.useRef)(pos);
|
|
@@ -142,12 +154,23 @@ function useLegendPosition(_ref2) {
|
|
|
142
154
|
}
|
|
143
155
|
}
|
|
144
156
|
}, [isSidePanelShown, onChangeSettings, sidePanelWidth]);
|
|
157
|
+
|
|
158
|
+
// Clamp contentHeight when map resizes to ensure legend stays within available space
|
|
159
|
+
(0, _react.useEffect)(function () {
|
|
160
|
+
if (!mapWidth || !mapHeight || !legendContentRef.current) return;
|
|
161
|
+
if (maxContentHeight && contentHeight > 0 && contentHeight > maxContentHeight) {
|
|
162
|
+
onChangeSettings({
|
|
163
|
+
contentHeight: maxContentHeight
|
|
164
|
+
});
|
|
165
|
+
}
|
|
166
|
+
}, [mapWidth, mapHeight, contentHeight, onChangeSettings, maxContentHeight, legendContentRef]);
|
|
145
167
|
return {
|
|
146
168
|
positionStyles: positionStyles,
|
|
147
169
|
updatePosition: updatePosition,
|
|
148
170
|
contentHeight: contentHeight,
|
|
171
|
+
maxContentHeight: maxContentHeight,
|
|
149
172
|
startResize: startResize,
|
|
150
173
|
resize: resize
|
|
151
174
|
};
|
|
152
175
|
}
|
|
153
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJyZXF1aXJlIiwib3duS2V5cyIsImUiLCJyIiwidCIsIk9iamVjdCIsImtleXMiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJvIiwiZmlsdGVyIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwiZW51bWVyYWJsZSIsInB1c2giLCJhcHBseSIsIl9vYmplY3RTcHJlYWQiLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJmb3JFYWNoIiwiX2RlZmluZVByb3BlcnR5MiIsImdldE93blByb3BlcnR5RGVzY3JpcHRvcnMiLCJkZWZpbmVQcm9wZXJ0aWVzIiwiZGVmaW5lUHJvcGVydHkiLCJNQVJHSU4iLCJsZWZ0IiwidG9wIiwicmlnaHQiLCJib3R0b20iLCJERUZBVUxUX1BPU0lUSU9OIiwieCIsInkiLCJhbmNob3JYIiwiYW5jaG9yWSIsIk1JTl9DT05URU5UX0hFSUdIVCIsIk1BUF9DT05UUk9MX0hFQURFUl9GVUxMX0hFSUdIVCIsInVzZUNhbGNMZWdlbmRQb3NpdGlvbiIsIl9yZWYiLCJsZWdlbmRDb250ZW50UmVmIiwiaXNTaWRlUGFuZWxTaG93biIsInNpZGVQYW5lbFdpZHRoIiwidXNlQ2FsbGJhY2siLCJfbGVnZW5kQ29udGVudFJlZiRjdXIiLCJyb290IiwiY3VycmVudCIsImNsb3Nlc3QiLCJsZWdlbmRDb250ZW50IiwiSFRNTEVsZW1lbnQiLCJsZWdlbmRSZWN0IiwiZ2V0Qm91bmRpbmdDbGllbnRSZWN0IiwibWFwUm9vdEJvdW5kcyIsImxlZnRTaWRlYmFyT2Zmc2V0IiwibGVmdE9mZnNldCIsIk1hdGgiLCJtYXgiLCJyaWdodE9mZnNldCIsInRvcE9mZnNldCIsImJvdHRvbU9mZnNldCIsInVzZUxlZ2VuZFBvc2l0aW9uIiwiX3JlZjIiLCJfc2V0dGluZ3MkcG9zaXRpb24iLCJfc2V0dGluZ3MkY29udGVudEhlaWciLCJfdGhlbWUkc2lkZVBhbmVsIiwic2V0dGluZ3MiLCJvbkNoYW5nZVNldHRpbmdzIiwidGhlbWUiLCJwb3MiLCJwb3NpdGlvbiIsImNvbnRlbnRIZWlnaHQiLCJwb3NpdGlvblN0eWxlcyIsInVzZU1lbW8iLCJzdGFydEhlaWdodFJlZiIsInVzZVJlZiIsInNpZGVQYW5lbCIsIndpZHRoIiwiY2FsY1Bvc2l0aW9uIiwidXBkYXRlUG9zaXRpb24iLCJzdGFydFJlc2l6ZSIsIl9sZWdlbmRDb250ZW50UmVmJGN1cjIiLCJjb250ZW50IiwicXVlcnlTZWxlY3RvciIsIm9mZnNldEhlaWdodCIsInJlc2l6ZSIsImRlbHRhWSIsIl9sZWdlbmRDb250ZW50UmVmJGN1cjMiLCJuZXh0SGVpZ2h0IiwibWluIiwicG9zUmVmIiwidXNlRWZmZWN0IiwiY3VycmVudFBvcyJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ob29rcy91c2UtbGVnZW5kLXBvc2l0aW9uLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVRcbi8vIENvcHlyaWdodCBjb250cmlidXRvcnMgdG8gdGhlIGtlcGxlci5nbCBwcm9qZWN0XG5cbmltcG9ydCB7dXNlTWVtbywgdXNlUmVmLCB1c2VDYWxsYmFjaywgdXNlRWZmZWN0fSBmcm9tICdyZWFjdCc7XG5cbmltcG9ydCB7TWFwTGVnZW5kQ29udHJvbFNldHRpbmdzfSBmcm9tICdAa2VwbGVyLmdsL3R5cGVzJztcblxudHlwZSBQYXJhbXMgPSB7XG4gIGxlZ2VuZENvbnRlbnRSZWY6IFJlYWN0Lk11dGFibGVSZWZPYmplY3Q8SFRNTEVsZW1lbnQgfCBudWxsPjtcbiAgaXNTaWRlUGFuZWxTaG93bjogYm9vbGVhbjtcbiAgc2V0dGluZ3M/OiBNYXBMZWdlbmRDb250cm9sU2V0dGluZ3M7XG4gIG9uQ2hhbmdlU2V0dGluZ3M6IChzZXR0aW5nczogUGFydGlhbDxNYXBMZWdlbmRDb250cm9sU2V0dGluZ3M+KSA9PiB2b2lkO1xuICB0aGVtZTogUmVjb3JkPHN0cmluZywgYW55Pjtcbn07XG5cbnR5cGUgUmV0dXJuVHlwZSA9IHtcbiAgcG9zaXRpb25TdHlsZXM6IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICB1cGRhdGVQb3NpdGlvbjogKCkgPT4gdm9pZDtcbiAgY29udGVudEhlaWdodDogbnVtYmVyO1xuICBzdGFydFJlc2l6ZTogKCkgPT4gdm9pZDtcbiAgcmVzaXplOiAoZGVsdGFZOiBudW1iZXIpID0+IHZvaWQ7XG59O1xuXG5jb25zdCBNQVJHSU4gPSB7XG4gIGxlZnQ6IDEwLFxuICB0b3A6IDEwLFxuICByaWdodDogMTAsXG4gIGJvdHRvbTogMzBcbn07XG5jb25zdCBERUZBVUxUX1BPU0lUSU9OOiBNYXBMZWdlbmRDb250cm9sU2V0dGluZ3NbJ3Bvc2l0aW9uJ10gPSB7XG4gIHg6IE1BUkdJTi5yaWdodCxcbiAgeTogTUFSR0lOLmJvdHRvbSxcbiAgYW5jaG9yWDogJ3JpZ2h0JyxcbiAgYW5jaG9yWTogJ2JvdHRvbSdcbn07XG5jb25zdCBNSU5fQ09OVEVOVF9IRUlHSFQgPSAxMDA7XG5jb25zdCBNQVBfQ09OVFJPTF9IRUFERVJfRlVMTF9IRUlHSFQgPSAzNDtcblxuZXhwb3J0IHR5cGUgVXNlQ2FsY0xlZ2VuZFBvc2l0aW9uUHJvcHMgPSB7XG4gIGxlZ2VuZENvbnRlbnRSZWY6IFJlYWN0Lk11dGFibGVSZWZPYmplY3Q8SFRNTEVsZW1lbnQgfCBudWxsPjtcbiAgaXNTaWRlUGFuZWxTaG93bjogYm9vbGVhbjtcbiAgc2lkZVBhbmVsV2lkdGg6IG51bWJlcjtcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiB1c2VDYWxjTGVnZW5kUG9zaXRpb24oe1xuICBsZWdlbmRDb250ZW50UmVmLFxuICBpc1NpZGVQYW5lbFNob3duLFxuICBzaWRlUGFuZWxXaWR0aFxufTogVXNlQ2FsY0xlZ2VuZFBvc2l0aW9uUHJvcHMpIHtcbiAgcmV0dXJuIHVzZUNhbGxiYWNrKCgpOiBNYXBMZWdlbmRDb250cm9sU2V0dGluZ3NbJ3Bvc2l0aW9uJ10gPT4ge1xuICAgIGNvbnN0IHJvb3QgPSBsZWdlbmRDb250ZW50UmVmLmN1cnJlbnQ/LmNsb3Nlc3QoJy5rZXBsZXItZ2wnKTtcbiAgICBjb25zdCBsZWdlbmRDb250ZW50ID0gbGVnZW5kQ29udGVudFJlZi5jdXJyZW50O1xuICAgIGlmICghbGVnZW5kQ29udGVudCB8fCAhKHJvb3QgaW5zdGFuY2VvZiBIVE1MRWxlbWVudCkpIHtcbiAgICAgIHJldHVybiBERUZBVUxUX1BPU0lUSU9OO1xuICAgIH1cbiAgICBjb25zdCBsZWdlbmRSZWN0ID0gbGVnZW5kQ29udGVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICBjb25zdCBtYXBSb290Qm91bmRzID0gcm9vdC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICBjb25zdCBsZWZ0U2lkZWJhck9mZnNldCA9IGlzU2lkZVBhbmVsU2hvd24gPyBzaWRlUGFuZWxXaWR0aCA6IDA7XG5cbiAgICBjb25zdCBsZWZ0T2Zmc2V0ID0gTWF0aC5tYXgoXG4gICAgICBNQVJHSU4ubGVmdCxcbiAgICAgIGxlZ2VuZFJlY3QubGVmdCAtIG1hcFJvb3RCb3VuZHMubGVmdCAtIGxlZnRTaWRlYmFyT2Zmc2V0XG4gICAgKTtcbiAgICBjb25zdCByaWdodE9mZnNldCA9IE1hdGgubWF4KE1BUkdJTi5yaWdodCwgbWFwUm9vdEJvdW5kcy5yaWdodCAtIGxlZ2VuZFJlY3QucmlnaHQpO1xuXG4gICAgY29uc3QgdG9wT2Zmc2V0ID0gTWF0aC5tYXgoTUFSR0lOLnRvcCwgbGVnZW5kUmVjdC50b3AgLSBtYXBSb290Qm91bmRzLnRvcCk7XG4gICAgY29uc3QgYm90dG9tT2Zmc2V0ID0gTWF0aC5tYXgoTUFSR0lOLmJvdHRvbSwgbWFwUm9vdEJvdW5kcy5ib3R0b20gLSBsZWdlbmRSZWN0LmJvdHRvbSk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgLi4uKGxlZnRPZmZzZXQgPCByaWdodE9mZnNldFxuICAgICAgICA/IHt4OiBsZWZ0T2Zmc2V0ICsgbGVmdFNpZGViYXJPZmZzZXQsIGFuY2hvclg6ICdsZWZ0J31cbiAgICAgICAgOiB7eDogcmlnaHRPZmZzZXQsIGFuY2hvclg6ICdyaWdodCd9KSxcbiAgICAgIC4uLih0b3BPZmZzZXQgPCBib3R0b21PZmZzZXRcbiAgICAgICAgPyB7eTogdG9wT2Zmc2V0LCBhbmNob3JZOiAndG9wJ31cbiAgICAgICAgOiB7eTogYm90dG9tT2Zmc2V0LCBhbmNob3JZOiAnYm90dG9tJ30pXG4gICAgfTtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QtaG9va3MvZXhoYXVzdGl2ZS1kZXBzXG4gIH0sIFtpc1NpZGVQYW5lbFNob3duLCBzaWRlUGFuZWxXaWR0aF0pO1xufVxuXG4vKipcbiAqIFJldHVybnMgYSBmdW5jdGlvbiB0aGF0IGNhbGN1bGF0ZXMgdGhlIGFuY2hvcmVkIHBvc2l0aW9uIG9mIHRoZSBtYXAgbGVnZW5kXG4gKiB0aGF0IGlzIGJlaW5nIGRyYWdnZWQuXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHVzZUxlZ2VuZFBvc2l0aW9uKHtcbiAgbGVnZW5kQ29udGVudFJlZixcbiAgaXNTaWRlUGFuZWxTaG93bixcbiAgc2V0dGluZ3MsXG4gIG9uQ2hhbmdlU2V0dGluZ3MsXG4gIHRoZW1lXG59OiBQYXJhbXMpOiBSZXR1cm5UeXBlIHtcbiAgY29uc3QgcG9zID0gc2V0dGluZ3M/LnBvc2l0aW9uID8/IERFRkFVTFRfUE9TSVRJT047XG4gIGNvbnN0IGNvbnRlbnRIZWlnaHQgPSBzZXR0aW5ncz8uY29udGVudEhlaWdodCA/PyAtMTtcbiAgY29uc3QgcG9zaXRpb25TdHlsZXMgPSB1c2VNZW1vKCgpID0+ICh7W3Bvcy5hbmNob3JYXTogcG9zLngsIFtwb3MuYW5jaG9yWV06IHBvcy55fSksIFtwb3NdKTtcbiAgY29uc3Qgc3RhcnRIZWlnaHRSZWYgPSB1c2VSZWYoMCk7XG4gIGNvbnN0IHNpZGVQYW5lbFdpZHRoID0gdGhlbWUuc2lkZVBhbmVsPy53aWR0aCB8fCAwO1xuXG4gIGNvbnN0IGNhbGNQb3NpdGlvbiA9IHVzZUNhbGNMZWdlbmRQb3NpdGlvbih7XG4gICAgbGVnZW5kQ29udGVudFJlZixcbiAgICBpc1NpZGVQYW5lbFNob3duLFxuICAgIHNpZGVQYW5lbFdpZHRoXG4gIH0pO1xuICBjb25zdCB1cGRhdGVQb3NpdGlvbiA9IHVzZUNhbGxiYWNrKFxuICAgICgpID0+IG9uQ2hhbmdlU2V0dGluZ3Moe3Bvc2l0aW9uOiBjYWxjUG9zaXRpb24oKX0pLFxuICAgIFtjYWxjUG9zaXRpb24sIG9uQ2hhbmdlU2V0dGluZ3NdXG4gICk7XG5cbiAgY29uc3Qgc3RhcnRSZXNpemUgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgY29uc3QgY29udGVudCA9IGxlZ2VuZENvbnRlbnRSZWYuY3VycmVudD8ucXVlcnlTZWxlY3RvcignLm1hcC1jb250cm9sX19wYW5lbC1jb250ZW50Jyk7XG4gICAgaWYgKGNvbnRlbnQgaW5zdGFuY2VvZiBIVE1MRWxlbWVudCkge1xuICAgICAgc3RhcnRIZWlnaHRSZWYuY3VycmVudCA9IGNvbnRlbnQub2Zmc2V0SGVpZ2h0O1xuICAgIH1cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QtaG9va3MvZXhoYXVzdGl2ZS1kZXBzXG4gIH0sIFtdKTtcbiAgY29uc3QgcmVzaXplID0gdXNlQ2FsbGJhY2soXG4gICAgZGVsdGFZID0+IHtcbiAgICAgIGNvbnN0IHJvb3QgPSBsZWdlbmRDb250ZW50UmVmLmN1cnJlbnQ/LmNsb3Nlc3QoJy5rZXBsZXItZ2wnKTtcbiAgICAgIGNvbnN0IGxlZ2VuZENvbnRlbnQgPSBsZWdlbmRDb250ZW50UmVmLmN1cnJlbnQ7XG4gICAgICBpZiAocm9vdCBpbnN0YW5jZW9mIEhUTUxFbGVtZW50ICYmIGxlZ2VuZENvbnRlbnQpIHtcbiAgICAgICAgY29uc3QgbWFwUm9vdEJvdW5kcyA9IHJvb3QuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICAgIGNvbnN0IGxlZ2VuZFJlY3QgPSBsZWdlbmRDb250ZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgICBjb25zdCBuZXh0SGVpZ2h0ID0gTWF0aC5taW4oXG4gICAgICAgICAgbWFwUm9vdEJvdW5kcy5ib3R0b20gLSAobGVnZW5kUmVjdC50b3AgKyBNQVBfQ09OVFJPTF9IRUFERVJfRlVMTF9IRUlHSFQgKyBNQVJHSU4uYm90dG9tKSxcbiAgICAgICAgICBNYXRoLm1heChNSU5fQ09OVEVOVF9IRUlHSFQsIHN0YXJ0SGVpZ2h0UmVmLmN1cnJlbnQgKyBkZWx0YVkpXG4gICAgICAgICk7XG4gICAgICAgIG9uQ2hhbmdlU2V0dGluZ3Moe2NvbnRlbnRIZWlnaHQ6IG5leHRIZWlnaHR9KTtcbiAgICAgICAgaWYgKGNvbnRlbnRIZWlnaHQgPiAwICYmIHBvcy5hbmNob3JZID09PSAnYm90dG9tJykge1xuICAgICAgICAgIG9uQ2hhbmdlU2V0dGluZ3Moe3Bvc2l0aW9uOiB7Li4ucG9zLCB5OiBwb3MueSAtIChuZXh0SGVpZ2h0IC0gY29udGVudEhlaWdodCl9fSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC1ob29rcy9leGhhdXN0aXZlLWRlcHNcbiAgICBbY29udGVudEhlaWdodCwgcG9zLCBvbkNoYW5nZVNldHRpbmdzXVxuICApO1xuXG4gIC8vIFNoaWZ0IHdoZW4gc2lkZSBwYW5lbCBpcyBzaG93bi9oaWRkZW5cbiAgY29uc3QgcG9zUmVmID0gdXNlUmVmKHBvcyk7XG4gIHBvc1JlZi5jdXJyZW50ID0gcG9zO1xuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IGN1cnJlbnRQb3MgPSBwb3NSZWYuY3VycmVudDtcbiAgICBpZiAoY3VycmVudFBvcy5hbmNob3JYID09PSAnbGVmdCcpIHtcbiAgICAgIGlmIChpc1NpZGVQYW5lbFNob3duKSB7XG4gICAgICAgIGlmIChjdXJyZW50UG9zLnggPD0gc2lkZVBhbmVsV2lkdGggKyBNQVJHSU4ubGVmdCkge1xuICAgICAgICAgIG9uQ2hhbmdlU2V0dGluZ3Moe3Bvc2l0aW9uOiB7Li4uY3VycmVudFBvcywgeDogc2lkZVBhbmVsV2lkdGggKyBNQVJHSU4ubGVmdH19KTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgb25DaGFuZ2VTZXR0aW5ncyh7XG4gICAgICAgICAgcG9zaXRpb246IHsuLi5jdXJyZW50UG9zLCB4OiBNYXRoLm1heChNQVJHSU4ubGVmdCwgY3VycmVudFBvcy54IC0gc2lkZVBhbmVsV2lkdGgpfVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gIH0sIFtpc1NpZGVQYW5lbFNob3duLCBvbkNoYW5nZVNldHRpbmdzLCBzaWRlUGFuZWxXaWR0aF0pO1xuXG4gIHJldHVybiB7cG9zaXRpb25TdHlsZXMsIHVwZGF0ZVBvc2l0aW9uLCBjb250ZW50SGVpZ2h0LCBzdGFydFJlc2l6ZSwgcmVzaXplfTtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBR0EsSUFBQUEsTUFBQSxHQUFBQyxPQUFBO0FBQThELFNBQUFDLFFBQUFDLENBQUEsRUFBQUMsQ0FBQSxRQUFBQyxDQUFBLEdBQUFDLE1BQUEsQ0FBQUMsSUFBQSxDQUFBSixDQUFBLE9BQUFHLE1BQUEsQ0FBQUUscUJBQUEsUUFBQUMsQ0FBQSxHQUFBSCxNQUFBLENBQUFFLHFCQUFBLENBQUFMLENBQUEsR0FBQUMsQ0FBQSxLQUFBSyxDQUFBLEdBQUFBLENBQUEsQ0FBQUMsTUFBQSxXQUFBTixDQUFBLFdBQUFFLE1BQUEsQ0FBQUssd0JBQUEsQ0FBQVIsQ0FBQSxFQUFBQyxDQUFBLEVBQUFRLFVBQUEsT0FBQVAsQ0FBQSxDQUFBUSxJQUFBLENBQUFDLEtBQUEsQ0FBQVQsQ0FBQSxFQUFBSSxDQUFBLFlBQUFKLENBQUE7QUFBQSxTQUFBVSxjQUFBWixDQUFBLGFBQUFDLENBQUEsTUFBQUEsQ0FBQSxHQUFBWSxTQUFBLENBQUFDLE1BQUEsRUFBQWIsQ0FBQSxVQUFBQyxDQUFBLFdBQUFXLFNBQUEsQ0FBQVosQ0FBQSxJQUFBWSxTQUFBLENBQUFaLENBQUEsUUFBQUEsQ0FBQSxPQUFBRixPQUFBLENBQUFJLE1BQUEsQ0FBQUQsQ0FBQSxPQUFBYSxPQUFBLFdB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
|
|
176
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJyZXF1aXJlIiwib3duS2V5cyIsImUiLCJyIiwidCIsIk9iamVjdCIsImtleXMiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJvIiwiZmlsdGVyIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwiZW51bWVyYWJsZSIsInB1c2giLCJhcHBseSIsIl9vYmplY3RTcHJlYWQiLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJmb3JFYWNoIiwiX2RlZmluZVByb3BlcnR5MiIsImdldE93blByb3BlcnR5RGVzY3JpcHRvcnMiLCJkZWZpbmVQcm9wZXJ0aWVzIiwiZGVmaW5lUHJvcGVydHkiLCJNQVJHSU4iLCJsZWZ0IiwidG9wIiwicmlnaHQiLCJib3R0b20iLCJERUZBVUxUX1BPU0lUSU9OIiwieCIsInkiLCJhbmNob3JYIiwiYW5jaG9yWSIsIk1JTl9DT05URU5UX0hFSUdIVCIsIk1BUF9DT05UUk9MX0hFQURFUl9GVUxMX0hFSUdIVCIsInVzZUNhbGNMZWdlbmRQb3NpdGlvbiIsIl9yZWYiLCJsZWdlbmRDb250ZW50UmVmIiwiaXNTaWRlUGFuZWxTaG93biIsInNpZGVQYW5lbFdpZHRoIiwidXNlQ2FsbGJhY2siLCJfbGVnZW5kQ29udGVudFJlZiRjdXIiLCJyb290IiwiY3VycmVudCIsImNsb3Nlc3QiLCJsZWdlbmRDb250ZW50IiwiSFRNTEVsZW1lbnQiLCJsZWdlbmRSZWN0IiwiZ2V0Qm91bmRpbmdDbGllbnRSZWN0IiwibWFwUm9vdEJvdW5kcyIsImxlZnRTaWRlYmFyT2Zmc2V0IiwibGVmdE9mZnNldCIsIk1hdGgiLCJtYXgiLCJyaWdodE9mZnNldCIsInRvcE9mZnNldCIsImJvdHRvbU9mZnNldCIsInVzZUxlZ2VuZFBvc2l0aW9uIiwiX3JlZjIiLCJfc2V0dGluZ3MkcG9zaXRpb24iLCJfc2V0dGluZ3MkY29udGVudEhlaWciLCJfdGhlbWUkc2lkZVBhbmVsIiwic2V0dGluZ3MiLCJvbkNoYW5nZVNldHRpbmdzIiwidGhlbWUiLCJtYXBIZWlnaHQiLCJtYXBXaWR0aCIsInBvcyIsInBvc2l0aW9uIiwiY29udGVudEhlaWdodCIsInBvc2l0aW9uU3R5bGVzIiwidXNlTWVtbyIsInN0YXJ0SGVpZ2h0UmVmIiwidXNlUmVmIiwic2lkZVBhbmVsIiwid2lkdGgiLCJtYXhDb250ZW50SGVpZ2h0IiwidW5kZWZpbmVkIiwiY2FsY1Bvc2l0aW9uIiwidXBkYXRlUG9zaXRpb24iLCJzdGFydFJlc2l6ZSIsIl9sZWdlbmRDb250ZW50UmVmJGN1cjIiLCJjb250ZW50IiwicXVlcnlTZWxlY3RvciIsIm9mZnNldEhlaWdodCIsInJlc2l6ZSIsImRlbHRhWSIsIl9sZWdlbmRDb250ZW50UmVmJGN1cjMiLCJyZW1haW5pbmdIZWlnaHQiLCJtYXhIZWlnaHQiLCJtaW4iLCJuZXh0SGVpZ2h0IiwicG9zUmVmIiwidXNlRWZmZWN0IiwiY3VycmVudFBvcyJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ob29rcy91c2UtbGVnZW5kLXBvc2l0aW9uLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVRcbi8vIENvcHlyaWdodCBjb250cmlidXRvcnMgdG8gdGhlIGtlcGxlci5nbCBwcm9qZWN0XG5cbmltcG9ydCB7dXNlTWVtbywgdXNlUmVmLCB1c2VDYWxsYmFjaywgdXNlRWZmZWN0fSBmcm9tICdyZWFjdCc7XG5cbmltcG9ydCB7TWFwTGVnZW5kQ29udHJvbFNldHRpbmdzfSBmcm9tICdAa2VwbGVyLmdsL3R5cGVzJztcblxudHlwZSBQYXJhbXMgPSB7XG4gIGxlZ2VuZENvbnRlbnRSZWY6IFJlYWN0Lk11dGFibGVSZWZPYmplY3Q8SFRNTEVsZW1lbnQgfCBudWxsPjtcbiAgaXNTaWRlUGFuZWxTaG93bjogYm9vbGVhbjtcbiAgc2V0dGluZ3M/OiBNYXBMZWdlbmRDb250cm9sU2V0dGluZ3M7XG4gIG9uQ2hhbmdlU2V0dGluZ3M6IChzZXR0aW5nczogUGFydGlhbDxNYXBMZWdlbmRDb250cm9sU2V0dGluZ3M+KSA9PiB2b2lkO1xuICB0aGVtZTogUmVjb3JkPHN0cmluZywgYW55PjtcbiAgbWFwSGVpZ2h0PzogbnVtYmVyO1xuICBtYXBXaWR0aD86IG51bWJlcjtcbn07XG5cbnR5cGUgUmV0dXJuVHlwZSA9IHtcbiAgcG9zaXRpb25TdHlsZXM6IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICB1cGRhdGVQb3NpdGlvbjogKCkgPT4gdm9pZDtcbiAgY29udGVudEhlaWdodDogbnVtYmVyO1xuICBtYXhDb250ZW50SGVpZ2h0PzogbnVtYmVyO1xuICBzdGFydFJlc2l6ZTogKCkgPT4gdm9pZDtcbiAgcmVzaXplOiAoZGVsdGFZOiBudW1iZXIpID0+IHZvaWQ7XG59O1xuXG5jb25zdCBNQVJHSU4gPSB7XG4gIGxlZnQ6IDEwLFxuICB0b3A6IDEwLFxuICByaWdodDogMTAsXG4gIGJvdHRvbTogMzBcbn07XG5jb25zdCBERUZBVUxUX1BPU0lUSU9OOiBNYXBMZWdlbmRDb250cm9sU2V0dGluZ3NbJ3Bvc2l0aW9uJ10gPSB7XG4gIHg6IE1BUkdJTi5yaWdodCxcbiAgeTogTUFSR0lOLmJvdHRvbSxcbiAgYW5jaG9yWDogJ3JpZ2h0JyxcbiAgYW5jaG9yWTogJ2JvdHRvbSdcbn07XG5jb25zdCBNSU5fQ09OVEVOVF9IRUlHSFQgPSAxMDA7XG5jb25zdCBNQVBfQ09OVFJPTF9IRUFERVJfRlVMTF9IRUlHSFQgPSAzNDtcblxuZXhwb3J0IHR5cGUgVXNlQ2FsY0xlZ2VuZFBvc2l0aW9uUHJvcHMgPSB7XG4gIGxlZ2VuZENvbnRlbnRSZWY6IFJlYWN0Lk11dGFibGVSZWZPYmplY3Q8SFRNTEVsZW1lbnQgfCBudWxsPjtcbiAgaXNTaWRlUGFuZWxTaG93bjogYm9vbGVhbjtcbiAgc2lkZVBhbmVsV2lkdGg6IG51bWJlcjtcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiB1c2VDYWxjTGVnZW5kUG9zaXRpb24oe1xuICBsZWdlbmRDb250ZW50UmVmLFxuICBpc1NpZGVQYW5lbFNob3duLFxuICBzaWRlUGFuZWxXaWR0aFxufTogVXNlQ2FsY0xlZ2VuZFBvc2l0aW9uUHJvcHMpIHtcbiAgcmV0dXJuIHVzZUNhbGxiYWNrKCgpOiBNYXBMZWdlbmRDb250cm9sU2V0dGluZ3NbJ3Bvc2l0aW9uJ10gPT4ge1xuICAgIGNvbnN0IHJvb3QgPSBsZWdlbmRDb250ZW50UmVmLmN1cnJlbnQ/LmNsb3Nlc3QoJy5rZXBsZXItZ2wnKTtcbiAgICBjb25zdCBsZWdlbmRDb250ZW50ID0gbGVnZW5kQ29udGVudFJlZi5jdXJyZW50O1xuICAgIGlmICghbGVnZW5kQ29udGVudCB8fCAhKHJvb3QgaW5zdGFuY2VvZiBIVE1MRWxlbWVudCkpIHtcbiAgICAgIHJldHVybiBERUZBVUxUX1BPU0lUSU9OO1xuICAgIH1cbiAgICBjb25zdCBsZWdlbmRSZWN0ID0gbGVnZW5kQ29udGVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICBjb25zdCBtYXBSb290Qm91bmRzID0gcm9vdC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICBjb25zdCBsZWZ0U2lkZWJhck9mZnNldCA9IGlzU2lkZVBhbmVsU2hvd24gPyBzaWRlUGFuZWxXaWR0aCA6IDA7XG5cbiAgICBjb25zdCBsZWZ0T2Zmc2V0ID0gTWF0aC5tYXgoXG4gICAgICBNQVJHSU4ubGVmdCxcbiAgICAgIGxlZ2VuZFJlY3QubGVmdCAtIG1hcFJvb3RCb3VuZHMubGVmdCAtIGxlZnRTaWRlYmFyT2Zmc2V0XG4gICAgKTtcbiAgICBjb25zdCByaWdodE9mZnNldCA9IE1hdGgubWF4KE1BUkdJTi5yaWdodCwgbWFwUm9vdEJvdW5kcy5yaWdodCAtIGxlZ2VuZFJlY3QucmlnaHQpO1xuXG4gICAgY29uc3QgdG9wT2Zmc2V0ID0gTWF0aC5tYXgoTUFSR0lOLnRvcCwgbGVnZW5kUmVjdC50b3AgLSBtYXBSb290Qm91bmRzLnRvcCk7XG4gICAgY29uc3QgYm90dG9tT2Zmc2V0ID0gTWF0aC5tYXgoTUFSR0lOLmJvdHRvbSwgbWFwUm9vdEJvdW5kcy5ib3R0b20gLSBsZWdlbmRSZWN0LmJvdHRvbSk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgLi4uKGxlZnRPZmZzZXQgPCByaWdodE9mZnNldFxuICAgICAgICA/IHt4OiBsZWZ0T2Zmc2V0ICsgbGVmdFNpZGViYXJPZmZzZXQsIGFuY2hvclg6ICdsZWZ0J31cbiAgICAgICAgOiB7eDogcmlnaHRPZmZzZXQsIGFuY2hvclg6ICdyaWdodCd9KSxcbiAgICAgIC4uLih0b3BPZmZzZXQgPCBib3R0b21PZmZzZXRcbiAgICAgICAgPyB7eTogdG9wT2Zmc2V0LCBhbmNob3JZOiAndG9wJ31cbiAgICAgICAgOiB7eTogYm90dG9tT2Zmc2V0LCBhbmNob3JZOiAnYm90dG9tJ30pXG4gICAgfTtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QtaG9va3MvZXhoYXVzdGl2ZS1kZXBzXG4gIH0sIFtpc1NpZGVQYW5lbFNob3duLCBzaWRlUGFuZWxXaWR0aF0pO1xufVxuXG4vKipcbiAqIFJldHVybnMgYSBmdW5jdGlvbiB0aGF0IGNhbGN1bGF0ZXMgdGhlIGFuY2hvcmVkIHBvc2l0aW9uIG9mIHRoZSBtYXAgbGVnZW5kXG4gKiB0aGF0IGlzIGJlaW5nIGRyYWdnZWQuXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHVzZUxlZ2VuZFBvc2l0aW9uKHtcbiAgbGVnZW5kQ29udGVudFJlZixcbiAgaXNTaWRlUGFuZWxTaG93bixcbiAgc2V0dGluZ3MsXG4gIG9uQ2hhbmdlU2V0dGluZ3MsXG4gIHRoZW1lLFxuICBtYXBIZWlnaHQsXG4gIG1hcFdpZHRoXG59OiBQYXJhbXMpOiBSZXR1cm5UeXBlIHtcbiAgY29uc3QgcG9zID0gc2V0dGluZ3M/LnBvc2l0aW9uID8/IERFRkFVTFRfUE9TSVRJT047XG4gIGNvbnN0IGNvbnRlbnRIZWlnaHQgPSBzZXR0aW5ncz8uY29udGVudEhlaWdodCA/PyAtMTtcbiAgY29uc3QgcG9zaXRpb25TdHlsZXMgPSB1c2VNZW1vKCgpID0+ICh7W3Bvcy5hbmNob3JYXTogcG9zLngsIFtwb3MuYW5jaG9yWV06IHBvcy55fSksIFtwb3NdKTtcbiAgY29uc3Qgc3RhcnRIZWlnaHRSZWYgPSB1c2VSZWYoMCk7XG4gIGNvbnN0IHNpZGVQYW5lbFdpZHRoID0gdGhlbWUuc2lkZVBhbmVsPy53aWR0aCB8fCAwO1xuXG4gIC8vIENhbGN1bGF0ZSBkeW5hbWljIG1heCBjb250ZW50IGhlaWdodCBiYXNlZCBvbiBtYXAgcm9vdCBkaW1lbnNpb25zXG4gIGNvbnN0IG1heENvbnRlbnRIZWlnaHQgPSB1c2VNZW1vKCgpID0+IHtcbiAgICBpZiAoIW1hcEhlaWdodCkgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAvLyBBdmFpbGFibGUgaGVpZ2h0IG1pbnVzIG1hcmdpbnMgYW5kIGhlYWRlclxuICAgIHJldHVybiBtYXBIZWlnaHQgLSBNQVJHSU4udG9wIC0gTUFSR0lOLmJvdHRvbSAtIE1BUF9DT05UUk9MX0hFQURFUl9GVUxMX0hFSUdIVDtcbiAgfSwgW21hcEhlaWdodF0pO1xuXG4gIGNvbnN0IGNhbGNQb3NpdGlvbiA9IHVzZUNhbGNMZWdlbmRQb3NpdGlvbih7XG4gICAgbGVnZW5kQ29udGVudFJlZixcbiAgICBpc1NpZGVQYW5lbFNob3duLFxuICAgIHNpZGVQYW5lbFdpZHRoXG4gIH0pO1xuICBjb25zdCB1cGRhdGVQb3NpdGlvbiA9IHVzZUNhbGxiYWNrKFxuICAgICgpID0+IG9uQ2hhbmdlU2V0dGluZ3Moe3Bvc2l0aW9uOiBjYWxjUG9zaXRpb24oKX0pLFxuICAgIFtjYWxjUG9zaXRpb24sIG9uQ2hhbmdlU2V0dGluZ3NdXG4gICk7XG5cbiAgY29uc3Qgc3RhcnRSZXNpemUgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgY29uc3QgY29udGVudCA9IGxlZ2VuZENvbnRlbnRSZWYuY3VycmVudD8ucXVlcnlTZWxlY3RvcignLm1hcC1jb250cm9sX19wYW5lbC1jb250ZW50Jyk7XG4gICAgaWYgKGNvbnRlbnQgaW5zdGFuY2VvZiBIVE1MRWxlbWVudCkge1xuICAgICAgc3RhcnRIZWlnaHRSZWYuY3VycmVudCA9IGNvbnRlbnQub2Zmc2V0SGVpZ2h0O1xuICAgIH1cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QtaG9va3MvZXhoYXVzdGl2ZS1kZXBzXG4gIH0sIFtdKTtcbiAgY29uc3QgcmVzaXplID0gdXNlQ2FsbGJhY2soXG4gICAgZGVsdGFZID0+IHtcbiAgICAgIGNvbnN0IHJvb3QgPSBsZWdlbmRDb250ZW50UmVmLmN1cnJlbnQ/LmNsb3Nlc3QoJy5rZXBsZXItZ2wnKTtcbiAgICAgIGNvbnN0IGxlZ2VuZENvbnRlbnQgPSBsZWdlbmRDb250ZW50UmVmLmN1cnJlbnQ7XG4gICAgICBpZiAocm9vdCBpbnN0YW5jZW9mIEhUTUxFbGVtZW50ICYmIGxlZ2VuZENvbnRlbnQpIHtcbiAgICAgICAgY29uc3QgbWFwUm9vdEJvdW5kcyA9IHJvb3QuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICAgIGNvbnN0IGxlZ2VuZFJlY3QgPSBsZWdlbmRDb250ZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgICBjb25zdCByZW1haW5pbmdIZWlnaHQgPVxuICAgICAgICAgIG1hcFJvb3RCb3VuZHMuYm90dG9tIC0gKGxlZ2VuZFJlY3QudG9wICsgTUFQX0NPTlRST0xfSEVBREVSX0ZVTExfSEVJR0hUICsgTUFSR0lOLmJvdHRvbSk7XG4gICAgICAgIC8vIFVzZSBtYXhDb250ZW50SGVpZ2h0IGlmIGF2YWlsYWJsZSwgb3RoZXJ3aXNlIGZhbGwgYmFjayB0byB2aWV3cG9ydC1iYXNlZCBjYWxjdWxhdGlvblxuICAgICAgICBjb25zdCBtYXhIZWlnaHQgPSBtYXhDb250ZW50SGVpZ2h0XG4gICAgICAgICAgPyBNYXRoLm1pbihtYXhDb250ZW50SGVpZ2h0LCByZW1haW5pbmdIZWlnaHQpXG4gICAgICAgICAgOiByZW1haW5pbmdIZWlnaHQ7XG4gICAgICAgIGNvbnN0IG5leHRIZWlnaHQgPSBNYXRoLm1pbihcbiAgICAgICAgICBtYXhIZWlnaHQsXG4gICAgICAgICAgTWF0aC5tYXgoTUlOX0NPTlRFTlRfSEVJR0hULCBzdGFydEhlaWdodFJlZi5jdXJyZW50ICsgZGVsdGFZKVxuICAgICAgICApO1xuICAgICAgICBvbkNoYW5nZVNldHRpbmdzKHtjb250ZW50SGVpZ2h0OiBuZXh0SGVpZ2h0fSk7XG4gICAgICAgIGlmIChjb250ZW50SGVpZ2h0ID4gMCAmJiBwb3MuYW5jaG9yWSA9PT0gJ2JvdHRvbScpIHtcbiAgICAgICAgICBvbkNoYW5nZVNldHRpbmdzKHtwb3NpdGlvbjogey4uLnBvcywgeTogcG9zLnkgLSAobmV4dEhlaWdodCAtIGNvbnRlbnRIZWlnaHQpfX0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QtaG9va3MvZXhoYXVzdGl2ZS1kZXBzXG4gICAgW2NvbnRlbnRIZWlnaHQsIHBvcywgb25DaGFuZ2VTZXR0aW5ncywgbWF4Q29udGVudEhlaWdodF1cbiAgKTtcblxuICAvLyBTaGlmdCB3aGVuIHNpZGUgcGFuZWwgaXMgc2hvd24vaGlkZGVuXG4gIGNvbnN0IHBvc1JlZiA9IHVzZVJlZihwb3MpO1xuICBwb3NSZWYuY3VycmVudCA9IHBvcztcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBjdXJyZW50UG9zID0gcG9zUmVmLmN1cnJlbnQ7XG4gICAgaWYgKGN1cnJlbnRQb3MuYW5jaG9yWCA9PT0gJ2xlZnQnKSB7XG4gICAgICBpZiAoaXNTaWRlUGFuZWxTaG93bikge1xuICAgICAgICBpZiAoY3VycmVudFBvcy54IDw9IHNpZGVQYW5lbFdpZHRoICsgTUFSR0lOLmxlZnQpIHtcbiAgICAgICAgICBvbkNoYW5nZVNldHRpbmdzKHtwb3NpdGlvbjogey4uLmN1cnJlbnRQb3MsIHg6IHNpZGVQYW5lbFdpZHRoICsgTUFSR0lOLmxlZnR9fSk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG9uQ2hhbmdlU2V0dGluZ3Moe1xuICAgICAgICAgIHBvc2l0aW9uOiB7Li4uY3VycmVudFBvcywgeDogTWF0aC5tYXgoTUFSR0lOLmxlZnQsIGN1cnJlbnRQb3MueCAtIHNpZGVQYW5lbFdpZHRoKX1cbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICB9LCBbaXNTaWRlUGFuZWxTaG93biwgb25DaGFuZ2VTZXR0aW5ncywgc2lkZVBhbmVsV2lkdGhdKTtcblxuICAvLyBDbGFtcCBjb250ZW50SGVpZ2h0IHdoZW4gbWFwIHJlc2l6ZXMgdG8gZW5zdXJlIGxlZ2VuZCBzdGF5cyB3aXRoaW4gYXZhaWxhYmxlIHNwYWNlXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFtYXBXaWR0aCB8fCAhbWFwSGVpZ2h0IHx8ICFsZWdlbmRDb250ZW50UmVmLmN1cnJlbnQpIHJldHVybjtcbiAgICBpZiAobWF4Q29udGVudEhlaWdodCAmJiBjb250ZW50SGVpZ2h0ID4gMCAmJiBjb250ZW50SGVpZ2h0ID4gbWF4Q29udGVudEhlaWdodCkge1xuICAgICAgb25DaGFuZ2VTZXR0aW5ncyh7Y29udGVudEhlaWdodDogbWF4Q29udGVudEhlaWdodH0pO1xuICAgIH1cbiAgfSwgW21hcFdpZHRoLCBtYXBIZWlnaHQsIGNvbnRlbnRIZWlnaHQsIG9uQ2hhbmdlU2V0dGluZ3MsIG1heENvbnRlbnRIZWlnaHQsIGxlZ2VuZENvbnRlbnRSZWZdKTtcblxuICByZXR1cm4ge3Bvc2l0aW9uU3R5bGVzLCB1cGRhdGVQb3NpdGlvbiwgY29udGVudEhlaWdodCwgbWF4Q29udGVudEhlaWdodCwgc3RhcnRSZXNpemUsIHJlc2l6ZX07XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUdBLElBQUFBLE1BQUEsR0FBQUMsT0FBQTtBQUE4RCxTQUFBQyxRQUFBQyxDQUFBLEVBQUFDLENBQUEsUUFBQUMsQ0FBQSxHQUFBQyxNQUFBLENBQUFDLElBQUEsQ0FBQUosQ0FBQSxPQUFBRyxNQUFBLENBQUFFLHFCQUFBLFFBQUFDLENBQUEsR0FBQUgsTUFBQSxDQUFBRSxxQkFBQSxDQUFBTCxDQUFBLEdBQUFDLENBQUEsS0FB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
|
package/dist/injector.d.ts
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { MapStateToPropsParam, MapDispatchToPropsParam, InferableComponentEnhancerWithProps } from 'react-redux';
|
|
3
|
-
export
|
|
4
|
-
export
|
|
3
|
+
export type FactoryElement = (...args: any[]) => React.ComponentType;
|
|
4
|
+
export type Factory = FactoryElement & {
|
|
5
5
|
deps: FactoryElement[];
|
|
6
6
|
};
|
|
7
|
-
export
|
|
7
|
+
export type InjectorType = {
|
|
8
8
|
provide: (factory: any, replacement: any) => InjectorType;
|
|
9
9
|
get: (fac: any, parent?: any) => any;
|
|
10
10
|
};
|
|
@@ -24,6 +24,6 @@ export declare function withState(lenses?: any[], mapStateToProps?: (state: any)
|
|
|
24
24
|
[x: string]: any;
|
|
25
25
|
state: any;
|
|
26
26
|
}) => React.JSX.Element, {
|
|
27
|
-
context?:
|
|
28
|
-
store?: import("redux").Store
|
|
27
|
+
context?: import("react-redux/es/components/Context").ReactReduxContextInstance | undefined;
|
|
28
|
+
store?: import("redux").Store | undefined;
|
|
29
29
|
}>;
|
package/dist/kepler-gl.d.ts
CHANGED
|
@@ -2,7 +2,7 @@ import React, { Dispatch } from 'react';
|
|
|
2
2
|
import { FeatureFlags } from './context';
|
|
3
3
|
import { AttributionWithStyle, DatasetAttribution, OnErrorCallBack, OnSuccessCallBack, Viewport, MapState } from '@kepler.gl/types';
|
|
4
4
|
import { MapStateActions, MapStyleActions, ProviderActions, UIStateActions, VisStateActions } from '@kepler.gl/actions';
|
|
5
|
-
|
|
5
|
+
type KeplerGlActions = {
|
|
6
6
|
visStateActions: typeof VisStateActions;
|
|
7
7
|
mapStateActions: typeof MapStateActions;
|
|
8
8
|
mapStyleActions: typeof MapStyleActions;
|
|
@@ -22,7 +22,7 @@ import DndContextFactory from './dnd-context';
|
|
|
22
22
|
import { KeplerGlState } from '@kepler.gl/reducers';
|
|
23
23
|
import { Provider } from '@kepler.gl/cloud-providers';
|
|
24
24
|
export declare const isViewportDisjointed: (props: any) => any;
|
|
25
|
-
|
|
25
|
+
type MapStateProps = {
|
|
26
26
|
mapState: MapState;
|
|
27
27
|
};
|
|
28
28
|
export declare const mapStateSelector: ((state: MapStateProps, index?: number | undefined) => MapState) & import("reselect").OutputSelectorFields<(args_0: MapState, args_1: number | undefined) => MapState, {
|
|
@@ -73,7 +73,7 @@ export declare const sidePanelSelector: (props: KeplerGLProps, availableProvider
|
|
|
73
73
|
mapStateActions: typeof MapStateActions;
|
|
74
74
|
datasets: any;
|
|
75
75
|
filters: import("@kepler.gl/types").Filter[];
|
|
76
|
-
layers: import("@kepler.gl/layers
|
|
76
|
+
layers: import("@kepler.gl/layers").Layer[];
|
|
77
77
|
layerOrder: string[];
|
|
78
78
|
layerClasses: {
|
|
79
79
|
point: typeof import("@kepler.gl/layers/dist/point-layer/point-layer").default;
|
|
@@ -92,6 +92,7 @@ export declare const sidePanelSelector: (props: KeplerGLProps, availableProvider
|
|
|
92
92
|
vectorTile: typeof import("@kepler.gl/layers").VectorTileLayer;
|
|
93
93
|
rasterTile: typeof import("@kepler.gl/layers").RasterTileLayer;
|
|
94
94
|
wms: typeof import("@kepler.gl/layers/dist/wms-layer/wms-layer").default;
|
|
95
|
+
tile3d: typeof import("@kepler.gl/layers").Tile3DLayer;
|
|
95
96
|
};
|
|
96
97
|
interactionConfig: import("@kepler.gl/types").InteractionConfig;
|
|
97
98
|
mapInfo: import("@kepler.gl/types").MapInfo;
|
|
@@ -104,8 +105,8 @@ export declare const sidePanelSelector: (props: KeplerGLProps, availableProvider
|
|
|
104
105
|
export declare const plotContainerSelector: (props: KeplerGLProps) => {
|
|
105
106
|
width: number | undefined;
|
|
106
107
|
height: number | undefined;
|
|
107
|
-
ratio:
|
|
108
|
-
resolution: "
|
|
108
|
+
ratio: EXPORT_IMG_RATIOS;
|
|
109
|
+
resolution: import("@kepler.gl/constants").ExportResolutionOption;
|
|
109
110
|
legend: boolean;
|
|
110
111
|
center: boolean;
|
|
111
112
|
imageSize: {
|
|
@@ -144,22 +145,18 @@ export declare const plotContainerSelector: (props: KeplerGLProps) => {
|
|
|
144
145
|
url: string;
|
|
145
146
|
}) | undefined;
|
|
146
147
|
};
|
|
147
|
-
addNotification: (notification:
|
|
148
|
-
payload: object;
|
|
148
|
+
addNotification: (notification: UIStateActions.AddNotificationUpdaterAction["payload"]) => import("@kepler.gl/types").Merge<UIStateActions.AddNotificationUpdaterAction, {
|
|
149
149
|
type: "@@kepler.gl/ADD_NOTIFICATION";
|
|
150
|
-
}
|
|
151
|
-
setExportImageSetting: (newSetting:
|
|
152
|
-
payload: Partial<import("@kepler.gl/types").ExportImage>;
|
|
150
|
+
}>;
|
|
151
|
+
setExportImageSetting: (newSetting: UIStateActions.SetExportImageSettingUpdaterAction["payload"]) => import("@kepler.gl/types").Merge<UIStateActions.SetExportImageSettingUpdaterAction, {
|
|
153
152
|
type: "@@kepler.gl/SET_EXPORT_IMAGE_SETTING";
|
|
154
|
-
}
|
|
155
|
-
setExportImageDataUri: (dataUri:
|
|
156
|
-
payload: string;
|
|
153
|
+
}>;
|
|
154
|
+
setExportImageDataUri: (dataUri: UIStateActions.SetExportImageDataUriUpdaterAction["payload"]) => import("@kepler.gl/types").Merge<UIStateActions.SetExportImageDataUriUpdaterAction, {
|
|
157
155
|
type: "@@kepler.gl/SET_EXPORT_IMAGE_DATA_URI";
|
|
158
|
-
}
|
|
159
|
-
setExportImageError: (error:
|
|
160
|
-
payload: Error;
|
|
156
|
+
}>;
|
|
157
|
+
setExportImageError: (error: UIStateActions.SetExportImageErrorUpdaterAction["payload"]) => import("@kepler.gl/types").Merge<UIStateActions.SetExportImageErrorUpdaterAction, {
|
|
161
158
|
type: "@@kepler.gl/SET_EXPORT_IMAGE_ERROR";
|
|
162
|
-
}
|
|
159
|
+
}>;
|
|
163
160
|
splitMaps: import("@kepler.gl/types").SplitMap[];
|
|
164
161
|
};
|
|
165
162
|
export declare const isSplitSelector: (props: KeplerGLProps) => boolean;
|
|
@@ -167,13 +164,12 @@ export declare const bottomWidgetSelector: (props: KeplerGLProps, theme: any) =>
|
|
|
167
164
|
filters: import("@kepler.gl/types").Filter[];
|
|
168
165
|
datasets: import("@kepler.gl/table").Datasets;
|
|
169
166
|
uiState: import("@kepler.gl/types").UiState;
|
|
170
|
-
layers: import("@kepler.gl/layers
|
|
167
|
+
layers: import("@kepler.gl/layers").Layer[];
|
|
171
168
|
animationConfig: import("@kepler.gl/types").AnimationConfig;
|
|
172
169
|
visStateActions: typeof VisStateActions;
|
|
173
|
-
toggleModal: (id:
|
|
174
|
-
payload: string | null;
|
|
170
|
+
toggleModal: (id: UIStateActions.ToggleModalUpdaterAction["payload"]) => import("@kepler.gl/types").Merge<UIStateActions.ToggleModalUpdaterAction, {
|
|
175
171
|
type: "@@kepler.gl/TOGGLE_MODAL";
|
|
176
|
-
}
|
|
172
|
+
}>;
|
|
177
173
|
sidePanelWidth: any;
|
|
178
174
|
};
|
|
179
175
|
export declare const modalContainerSelector: (props: KeplerGLProps, rootNode: any) => {
|
|
@@ -207,13 +203,9 @@ export declare const geoCoderPanelSelector: (props: KeplerGLProps, dimensions: {
|
|
|
207
203
|
layerOrder: string[];
|
|
208
204
|
updateVisData: typeof VisStateActions.updateVisData;
|
|
209
205
|
removeDataset: typeof VisStateActions.removeDataset;
|
|
210
|
-
updateMap: (viewport: Viewport, mapIndex?: number
|
|
211
|
-
payload: {
|
|
212
|
-
viewport: Viewport;
|
|
213
|
-
mapIndex?: number | undefined;
|
|
214
|
-
};
|
|
206
|
+
updateMap: (viewport: Viewport, mapIndex?: number) => import("@kepler.gl/types").Merge<MapStateActions.UpdateMapUpdaterAction, {
|
|
215
207
|
type: "@@kepler.gl/UPDATE_MAP";
|
|
216
|
-
}
|
|
208
|
+
}>;
|
|
217
209
|
appWidth: number;
|
|
218
210
|
};
|
|
219
211
|
/**
|
|
@@ -240,10 +232,9 @@ export declare const attributionSelector: ((state: any) => {
|
|
|
240
232
|
clearCache: () => void;
|
|
241
233
|
};
|
|
242
234
|
export declare const notificationPanelSelector: (props: KeplerGLProps) => {
|
|
243
|
-
removeNotification: (id:
|
|
244
|
-
payload: string;
|
|
235
|
+
removeNotification: (id: UIStateActions.RemoveNotificationUpdaterAction["payload"]) => import("@kepler.gl/types").Merge<UIStateActions.RemoveNotificationUpdaterAction, {
|
|
245
236
|
type: "@@kepler.gl/REMOVE_NOTIFICATION";
|
|
246
|
-
}
|
|
237
|
+
}>;
|
|
247
238
|
notifications: import("@kepler.gl/types").Notifications[];
|
|
248
239
|
};
|
|
249
240
|
export declare const DEFAULT_KEPLER_GL_PROPS: {
|
|
@@ -260,7 +251,7 @@ export declare const DEFAULT_KEPLER_GL_PROPS: {
|
|
|
260
251
|
readOnly: boolean;
|
|
261
252
|
featureFlags: {};
|
|
262
253
|
};
|
|
263
|
-
|
|
254
|
+
type KeplerGLBasicProps = {
|
|
264
255
|
mapboxApiAccessToken: string;
|
|
265
256
|
mapboxApiUrl?: string;
|
|
266
257
|
id: string;
|
|
@@ -304,7 +295,7 @@ declare type KeplerGLBasicProps = {
|
|
|
304
295
|
url: string;
|
|
305
296
|
};
|
|
306
297
|
};
|
|
307
|
-
|
|
298
|
+
type KeplerGLProps = KeplerGlState & KeplerGlActions & KeplerGLBasicProps;
|
|
308
299
|
declare function KeplerGlFactory(BottomWidget: ReturnType<typeof BottomWidgetFactory>, GeoCoderPanel: ReturnType<typeof GeoCoderPanelFactory>, MapContainer: ReturnType<typeof MapContainerFactory>, MapsLayout: ReturnType<typeof MapsLayoutFactory>, ModalContainer: ReturnType<typeof ModalContainerFactory>, SidePanel: ReturnType<typeof SidePanelFactory>, PlotContainer: ReturnType<typeof PlotContainerFactory>, NotificationPanel: ReturnType<typeof NotificationPanelFactory>, DndContext: ReturnType<typeof DndContextFactory>): React.ComponentType<KeplerGLBasicProps & {
|
|
309
300
|
selector: (...args: any[]) => KeplerGlState;
|
|
310
301
|
}>;
|
|
@@ -323,47 +314,47 @@ export declare function mapStateToProps(state: KeplerGlState, props: KeplerGLPro
|
|
|
323
314
|
uiStateActions: typeof UIStateActions;
|
|
324
315
|
providerActions: typeof ProviderActions;
|
|
325
316
|
mapboxApiAccessToken: string;
|
|
326
|
-
mapboxApiUrl?: string
|
|
317
|
+
mapboxApiUrl?: string;
|
|
327
318
|
id: string;
|
|
328
|
-
width?: number
|
|
329
|
-
height?: number
|
|
319
|
+
width?: number;
|
|
320
|
+
height?: number;
|
|
330
321
|
appWebsite?: any;
|
|
331
|
-
onSaveMap?: (
|
|
332
|
-
onViewStateChange?: (
|
|
333
|
-
onDeckInitialized?: (
|
|
334
|
-
onKeplerGlInitialized?: (
|
|
335
|
-
getMapboxRef?: (
|
|
322
|
+
onSaveMap?: () => void;
|
|
323
|
+
onViewStateChange?: (viewState: Viewport) => void;
|
|
324
|
+
onDeckInitialized?: () => void;
|
|
325
|
+
onKeplerGlInitialized?: () => void;
|
|
326
|
+
getMapboxRef?: () => React.RefObject<any>;
|
|
336
327
|
mapStyles?: {
|
|
337
328
|
id: string;
|
|
338
|
-
style?: object
|
|
339
|
-
}[]
|
|
340
|
-
mapStylesReplaceDefault?: boolean
|
|
341
|
-
appName?: string
|
|
342
|
-
version?: string
|
|
343
|
-
sidePanelWidth?: number
|
|
344
|
-
theme?: object
|
|
345
|
-
cloudProviders?: Provider[]
|
|
346
|
-
deckGlProps?: object
|
|
347
|
-
onLoadCloudMapSuccess?: OnSuccessCallBack
|
|
348
|
-
onLoadCloudMapError?: OnErrorCallBack
|
|
349
|
-
onMouseMove?: (
|
|
350
|
-
lngLat?: [number, number]
|
|
351
|
-
}) => void
|
|
352
|
-
onExportToCloudSuccess?: OnSuccessCallBack
|
|
353
|
-
onExportToCloudError?: OnErrorCallBack
|
|
354
|
-
readOnly?: boolean
|
|
355
|
-
featureFlags?: FeatureFlags
|
|
329
|
+
style?: object;
|
|
330
|
+
}[];
|
|
331
|
+
mapStylesReplaceDefault?: boolean;
|
|
332
|
+
appName?: string;
|
|
333
|
+
version?: string;
|
|
334
|
+
sidePanelWidth?: number;
|
|
335
|
+
theme?: object;
|
|
336
|
+
cloudProviders?: Provider[];
|
|
337
|
+
deckGlProps?: object;
|
|
338
|
+
onLoadCloudMapSuccess?: OnSuccessCallBack;
|
|
339
|
+
onLoadCloudMapError?: OnErrorCallBack;
|
|
340
|
+
onMouseMove?: (event: React.MouseEvent & {
|
|
341
|
+
lngLat?: [number, number];
|
|
342
|
+
}) => void;
|
|
343
|
+
onExportToCloudSuccess?: OnSuccessCallBack;
|
|
344
|
+
onExportToCloudError?: OnErrorCallBack;
|
|
345
|
+
readOnly?: boolean;
|
|
346
|
+
featureFlags?: FeatureFlags;
|
|
356
347
|
localeMessages?: {
|
|
357
348
|
[key: string]: {
|
|
358
349
|
[key: string]: string;
|
|
359
350
|
};
|
|
360
|
-
}
|
|
361
|
-
dispatch:
|
|
362
|
-
topMapContainerProps?: object
|
|
363
|
-
bottomMapContainerProps?: object
|
|
364
|
-
transformRequest?: (
|
|
351
|
+
};
|
|
352
|
+
dispatch: Dispatch<any>;
|
|
353
|
+
topMapContainerProps?: object;
|
|
354
|
+
bottomMapContainerProps?: object;
|
|
355
|
+
transformRequest?: (url: string) => {
|
|
365
356
|
url: string;
|
|
366
|
-
}
|
|
357
|
+
};
|
|
367
358
|
};
|
|
368
359
|
/** @type {() => import('reselect').OutputParametricSelector<any, any, any, any>} */
|
|
369
360
|
export declare function makeGetActionCreators(): ((state: any, props: any) => {
|