@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.
Files changed (224) hide show
  1. package/dist/bottom-widget.d.ts +4 -4
  2. package/dist/common/action-panel.d.ts +3 -3
  3. package/dist/common/animation-control/animation-control.d.ts +1 -1
  4. package/dist/common/animation-control/playback-controls.d.ts +1 -1
  5. package/dist/common/color-legend.d.ts +4 -4
  6. package/dist/common/column-stats-chart.d.ts +3 -3
  7. package/dist/common/data-table/button.d.ts +1 -1
  8. package/dist/common/data-table/canvas.d.ts +0 -1
  9. package/dist/common/data-table/cell-size.d.ts +2 -2
  10. package/dist/common/data-table/display-format.d.ts +1 -1
  11. package/dist/common/data-table/header-cell.d.ts +2 -2
  12. package/dist/common/data-table/index.d.ts +7 -9
  13. package/dist/common/data-table/index.js +1 -1
  14. package/dist/common/data-table/option-dropdown.d.ts +1 -1
  15. package/dist/common/field-selector.d.ts +5 -5
  16. package/dist/common/field-token.d.ts +1 -1
  17. package/dist/common/file-uploader/file-drop.d.ts +1 -1
  18. package/dist/common/file-uploader/file-upload-progress.d.ts +1 -1
  19. package/dist/common/file-uploader/file-upload.d.ts +1 -1
  20. package/dist/common/flex-container.d.ts +2 -3
  21. package/dist/common/histogram-plot.d.ts +1 -1
  22. package/dist/common/icon-button.d.ts +16 -16
  23. package/dist/common/icons/base.d.ts +1 -1
  24. package/dist/common/icons/close.js +7 -6
  25. package/dist/common/icons/effects/distance-fog.d.ts +14 -0
  26. package/dist/common/icons/effects/distance-fog.js +79 -0
  27. package/dist/common/icons/effects/surface-fog.d.ts +14 -0
  28. package/dist/common/icons/effects/surface-fog.js +86 -0
  29. package/dist/common/icons/index.d.ts +3 -0
  30. package/dist/common/icons/index.js +22 -1
  31. package/dist/common/icons/zoom-out.d.ts +10 -0
  32. package/dist/common/icons/zoom-out.js +48 -0
  33. package/dist/common/item-selector/chickleted-input.d.ts +4 -4
  34. package/dist/common/item-selector/dropdown-list.d.ts +3 -3
  35. package/dist/common/item-selector/dropdown-select.d.ts +7 -7
  36. package/dist/common/item-selector/item-selector.d.ts +2 -2
  37. package/dist/common/item-selector/typeahead.d.ts +3 -3
  38. package/dist/common/loading-spinner.d.ts +2 -2
  39. package/dist/common/modal.d.ts +5 -5
  40. package/dist/common/portaled.d.ts +8 -25
  41. package/dist/common/progress-bar.d.ts +1 -1
  42. package/dist/common/radius-legend.d.ts +1 -1
  43. package/dist/common/range-brush.d.ts +1 -1
  44. package/dist/common/range-plot.d.ts +1 -1
  45. package/dist/common/slider/mouse-event.d.ts +1 -1
  46. package/dist/common/slider/slider-bar-handle.d.ts +2 -2
  47. package/dist/common/slider/slider-handle.d.ts +3 -3
  48. package/dist/common/slider/slider.d.ts +2 -2
  49. package/dist/common/styled-components.d.ts +157 -158
  50. package/dist/common/sync-timeline-control.d.ts +3 -3
  51. package/dist/common/time-range-slider-time-title.d.ts +1 -1
  52. package/dist/common/time-range-slider.d.ts +2 -2
  53. package/dist/common/timeline-slider.d.ts +1 -1
  54. package/dist/common/tippy-tooltip.d.ts +1 -1
  55. package/dist/common/toolbar-item.d.ts +1 -1
  56. package/dist/common/toolbar.d.ts +1 -1
  57. package/dist/common/vertical-toolbar.d.ts +2 -3
  58. package/dist/container.d.ts +6 -6
  59. package/dist/context.d.ts +3 -3
  60. package/dist/dnd-context.d.ts +2 -2
  61. package/dist/editor/editor.d.ts +1 -1
  62. package/dist/editor/editor.js +1 -1
  63. package/dist/editor/feature-action-panel.d.ts +1 -1
  64. package/dist/editor/feature-action-panel.js +1 -1
  65. package/dist/effects/compact-color-picker.d.ts +1 -1
  66. package/dist/effects/effect-configurator.d.ts +2 -2
  67. package/dist/effects/effect-configurator.js +52 -14
  68. package/dist/effects/effect-list.d.ts +1 -1
  69. package/dist/effects/effect-manager.d.ts +3 -3
  70. package/dist/effects/effect-manager.js +9 -2
  71. package/dist/effects/effect-panel-header.d.ts +2 -2
  72. package/dist/effects/effect-panel-header.js +2 -2
  73. package/dist/effects/effect-panel.d.ts +2 -2
  74. package/dist/effects/effect-time-configurator.d.ts +1 -1
  75. package/dist/effects/effect-time-selector.d.ts +1 -1
  76. package/dist/effects/effect-time-slider.d.ts +3 -3
  77. package/dist/effects/effect-type-dropdown-list.d.ts +2 -2
  78. package/dist/effects/effect-type-list-item.d.ts +1 -1
  79. package/dist/effects/effect-type-selector.d.ts +2 -2
  80. package/dist/effects/side-panel-title.d.ts +1 -1
  81. package/dist/effects/timezone-selector.d.ts +1 -1
  82. package/dist/filters/components.d.ts +2 -3
  83. package/dist/filters/filter-panels/types.d.ts +4 -4
  84. package/dist/filters/types.d.ts +8 -8
  85. package/dist/geocoder/geocoder.d.ts +3 -3
  86. package/dist/geocoder/geocoder.js +5 -1
  87. package/dist/geocoder-panel.d.ts +10 -2
  88. package/dist/geocoder-panel.js +3 -3
  89. package/dist/hooks/use-cloud-list-provider.d.ts +1 -1
  90. package/dist/hooks/use-dnd-effects.d.ts +1 -1
  91. package/dist/hooks/use-dnd-layers.d.ts +1 -1
  92. package/dist/hooks/use-feature-flags.d.ts +1 -1
  93. package/dist/hooks/use-fetch-raster-tile-metadata.d.ts +3 -3
  94. package/dist/hooks/use-fetch-vector-tile-metadata.d.ts +2 -2
  95. package/dist/hooks/use-legend-position.d.ts +8 -6
  96. package/dist/hooks/use-legend-position.js +27 -4
  97. package/dist/injector.d.ts +5 -5
  98. package/dist/kepler-gl.d.ts +55 -64
  99. package/dist/loading-indicator.d.ts +4 -4
  100. package/dist/loading-indicator.js +33 -8
  101. package/dist/map/effects/effect-control.d.ts +1 -1
  102. package/dist/map/layer-hover-info.d.ts +3 -3
  103. package/dist/map/layer-hover-info.js +8 -3
  104. package/dist/map/layer-selector-panel.d.ts +1 -1
  105. package/dist/map/lazy-tippy.js +3 -3
  106. package/dist/map/locale-panel.d.ts +1 -1
  107. package/dist/map/map-control-panel.d.ts +1 -1
  108. package/dist/map/map-control-toolbar.d.ts +6 -7
  109. package/dist/map/map-control-tooltip.d.ts +1 -1
  110. package/dist/map/map-control.d.ts +3 -2
  111. package/dist/map/map-control.js +1 -1
  112. package/dist/map/map-draw-panel.d.ts +1 -1
  113. package/dist/map/map-legend-panel.d.ts +4 -3
  114. package/dist/map/map-legend-panel.js +22 -9
  115. package/dist/map/map-legend.d.ts +10 -8
  116. package/dist/map/map-legend.js +37 -7
  117. package/dist/map/map-popover-content.d.ts +2 -2
  118. package/dist/map/map-popover.d.ts +2 -2
  119. package/dist/map/split-map-button.d.ts +1 -1
  120. package/dist/map/toggle-3d-button.d.ts +1 -1
  121. package/dist/map-container.d.ts +2 -2
  122. package/dist/map-container.js +50 -25
  123. package/dist/map-view-state-context.d.ts +9 -2
  124. package/dist/map-view-state-context.js +1 -1
  125. package/dist/modal-container.d.ts +3 -6
  126. package/dist/modals/cloud-components/cloud-header.d.ts +1 -1
  127. package/dist/modals/cloud-components/provider-select.d.ts +1 -1
  128. package/dist/modals/cloud-tile.d.ts +1 -1
  129. package/dist/modals/data-table-modal.d.ts +1 -1
  130. package/dist/modals/export-data-modal.js +2 -2
  131. package/dist/modals/export-image-modal.d.ts +1 -1
  132. package/dist/modals/export-image-modal.js +75 -7
  133. package/dist/modals/export-map-modal/components.d.ts +1 -1
  134. package/dist/modals/export-map-modal/export-html-map.d.ts +1 -1
  135. package/dist/modals/export-map-modal/export-html-map.js +3 -1
  136. package/dist/modals/export-map-modal/export-json-map.d.ts +1 -1
  137. package/dist/modals/image-modal-container.d.ts +1 -1
  138. package/dist/modals/load-data-modal.d.ts +2 -2
  139. package/dist/modals/modal-dialog.d.ts +0 -2
  140. package/dist/modals/overwrite-map-modal.d.ts +1 -1
  141. package/dist/modals/save-map-modal.d.ts +3 -3
  142. package/dist/modals/share-map-modal.d.ts +1 -1
  143. package/dist/modals/tilesets-modals/common.d.ts +3 -3
  144. package/dist/modals/tilesets-modals/common.js +1 -1
  145. package/dist/modals/tilesets-modals/load-data-footer.d.ts +1 -1
  146. package/dist/modals/tilesets-modals/load-tileset.d.ts +1 -1
  147. package/dist/modals/tilesets-modals/load-tileset.js +8 -2
  148. package/dist/modals/tilesets-modals/tileset-icon.d.ts +1 -1
  149. package/dist/modals/tilesets-modals/tileset-raster-form.d.ts +2 -2
  150. package/dist/modals/tilesets-modals/tileset-tile3d-form.d.ts +12 -0
  151. package/dist/modals/tilesets-modals/tileset-tile3d-form.js +388 -0
  152. package/dist/modals/tilesets-modals/tileset-vector-form.d.ts +3 -3
  153. package/dist/modals/tilesets-modals/tileset-wms-form.d.ts +1 -1
  154. package/dist/modals/tilesets-modals/tileset-wms-form.js +53 -10
  155. package/dist/plot-container.js +82 -11
  156. package/dist/side-panel/add-by-dataset-button.d.ts +1 -1
  157. package/dist/side-panel/common/dataset-info.d.ts +2 -2
  158. package/dist/side-panel/common/dataset-info.js +2 -2
  159. package/dist/side-panel/common/dataset-tag.d.ts +2 -2
  160. package/dist/side-panel/common/dataset-title.d.ts +2 -2
  161. package/dist/side-panel/common/source-data-catalog.d.ts +3 -3
  162. package/dist/side-panel/common/types.d.ts +8 -8
  163. package/dist/side-panel/custom-panel.d.ts +2 -2
  164. package/dist/side-panel/filter-manager.d.ts +3 -3
  165. package/dist/side-panel/filter-panel/add-filter-button.d.ts +1 -1
  166. package/dist/side-panel/filter-panel/filter-panel-header.d.ts +2 -2
  167. package/dist/side-panel/interaction-manager.d.ts +1 -1
  168. package/dist/side-panel/interaction-panel/brush-config.d.ts +1 -1
  169. package/dist/side-panel/interaction-panel/tooltip-config/tooltip-chicklet.d.ts +3 -3
  170. package/dist/side-panel/interaction-panel/tooltip-config.d.ts +1 -1
  171. package/dist/side-panel/layer-manager.d.ts +2 -2
  172. package/dist/side-panel/layer-panel/add-layer-button.d.ts +1 -1
  173. package/dist/side-panel/layer-panel/channel-by-value-selector.d.ts +1 -1
  174. package/dist/side-panel/layer-panel/color-breaks-panel.d.ts +4 -4
  175. package/dist/side-panel/layer-panel/color-palette-preset.d.ts +1 -1
  176. package/dist/side-panel/layer-panel/color-palette.d.ts +2 -2
  177. package/dist/side-panel/layer-panel/color-range-selector.d.ts +3 -3
  178. package/dist/side-panel/layer-panel/color-scale-selector.d.ts +4 -4
  179. package/dist/side-panel/layer-panel/color-selector.d.ts +3 -3
  180. package/dist/side-panel/layer-panel/column-selector.d.ts +1 -1
  181. package/dist/side-panel/layer-panel/custom-palette.d.ts +10 -10
  182. package/dist/side-panel/layer-panel/custom-picker.d.ts +1 -1
  183. package/dist/side-panel/layer-panel/dataset-layer-group.d.ts +1 -1
  184. package/dist/side-panel/layer-panel/dataset-layer-section.d.ts +1 -1
  185. package/dist/side-panel/layer-panel/dataset-section.d.ts +2 -2
  186. package/dist/side-panel/layer-panel/dimension-scale-selector.d.ts +1 -1
  187. package/dist/side-panel/layer-panel/how-to-button.d.ts +1 -1
  188. package/dist/side-panel/layer-panel/layer-color-selector.d.ts +3 -3
  189. package/dist/side-panel/layer-panel/layer-column-config.d.ts +1 -1
  190. package/dist/side-panel/layer-panel/layer-column-mode-config.d.ts +3 -3
  191. package/dist/side-panel/layer-panel/layer-config-group.d.ts +5 -5
  192. package/dist/side-panel/layer-panel/layer-configurator.d.ts +2 -2
  193. package/dist/side-panel/layer-panel/layer-configurator.js +27 -17
  194. package/dist/side-panel/layer-panel/layer-error-message.d.ts +1 -1
  195. package/dist/side-panel/layer-panel/layer-list.d.ts +2 -2
  196. package/dist/side-panel/layer-panel/layer-panel-header.d.ts +6 -5
  197. package/dist/side-panel/layer-panel/layer-panel-header.js +15 -5
  198. package/dist/side-panel/layer-panel/layer-panel.d.ts +1 -1
  199. package/dist/side-panel/layer-panel/layer-type-dropdown-list.d.ts +2 -2
  200. package/dist/side-panel/layer-panel/layer-type-list-item.d.ts +2 -2
  201. package/dist/side-panel/layer-panel/layer-type-selector.d.ts +1 -1
  202. package/dist/side-panel/layer-panel/radius-by-zoom-input.d.ts +1 -1
  203. package/dist/side-panel/layer-panel/raster-tile-layer-configurator.d.ts +1 -1
  204. package/dist/side-panel/layer-panel/single-color-palette.d.ts +1 -1
  205. package/dist/side-panel/layer-panel/text-label-panel.d.ts +1 -1
  206. package/dist/side-panel/layer-panel/vector-tile-layer-configurator.d.ts +2 -2
  207. package/dist/side-panel/layer-panel/vis-config-by-field-selector.d.ts +1 -1
  208. package/dist/side-panel/layer-panel/vis-config-slider.d.ts +1 -1
  209. package/dist/side-panel/layer-panel/vis-config-switch.d.ts +1 -1
  210. package/dist/side-panel/map-manager.d.ts +1 -1
  211. package/dist/side-panel/map-style-panel/map-layer-group-color-picker.d.ts +1 -1
  212. package/dist/side-panel/map-style-panel/map-layer-group-item.d.ts +2 -2
  213. package/dist/side-panel/map-style-panel/map-layer-selector.d.ts +1 -1
  214. package/dist/side-panel/map-style-panel/map-style-selector.d.ts +1 -1
  215. package/dist/side-panel/panel-header-action.d.ts +1 -1
  216. package/dist/side-panel/panel-header.d.ts +12 -12
  217. package/dist/side-panel/panel-tab.d.ts +4 -4
  218. package/dist/side-panel/panel-title.d.ts +1 -1
  219. package/dist/side-panel/panel-toggle.d.ts +1 -1
  220. package/dist/side-panel/panel-view-list-toggle.d.ts +3 -3
  221. package/dist/side-panel/side-bar.d.ts +2 -2
  222. package/dist/side-panel.d.ts +1 -1
  223. package/dist/types.d.ts +3 -3
  224. package/package.json +23 -22
@@ -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 _typed = require("@deck.gl/core/typed");
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 _typed.FlyToInterpolator()
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
- declare type CloudListProviderProps = PropsWithChildren<{
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
- declare type DndEffectsHook = {
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
- declare type DndEffectsHook = {
3
+ type DndEffectsHook = {
4
4
  activeLayer: Layer | undefined;
5
5
  onDragStart: (event: DragStartEvent) => void;
6
6
  onDragEnd: (event: DragEndEvent) => void;
@@ -1,4 +1,4 @@
1
- declare type FeatureFlags = {
1
+ type FeatureFlags = {
2
2
  [flagName: string]: boolean;
3
3
  };
4
4
  declare const useFeatureFlags: () => FeatureFlags;
@@ -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
- declare type RasterMetadataResponse = VectorTileMetadata | StacTypes.CompleteSTACObject | null;
6
- export declare type FetchJsonProps = {
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 declare type UseFetchJsonReturn = {
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
- declare type FetchVectorTileMetadataProps = {
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
- declare type FetchVectorTileMetadataReturn = {
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
- declare type Params = {
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
- declare type ReturnType = {
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 declare type UseCalcLegendPositionProps = {
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['position'];
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 nextHeight = Math.min(mapRootBounds.bottom - (legendRect.top + MAP_CONTROL_HEADER_FULL_HEIGHT + MARGIN.bottom), Math.max(MIN_CONTENT_HEIGHT, startHeightRef.current + deltaY));
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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
@@ -1,10 +1,10 @@
1
1
  import React from 'react';
2
2
  import { MapStateToPropsParam, MapDispatchToPropsParam, InferableComponentEnhancerWithProps } from 'react-redux';
3
- export declare type FactoryElement = (...args: any[]) => React.ComponentType;
4
- export declare type Factory = FactoryElement & {
3
+ export type FactoryElement = (...args: any[]) => React.ComponentType;
4
+ export type Factory = FactoryElement & {
5
5
  deps: FactoryElement[];
6
6
  };
7
- export declare type InjectorType = {
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?: React.Context<import("react-redux").ReactReduxContextValue<any, import("redux").AnyAction>> | undefined;
28
- store?: import("redux").Store<any, import("redux").AnyAction> | undefined;
27
+ context?: import("react-redux/es/components/Context").ReactReduxContextInstance | undefined;
28
+ store?: import("redux").Store | undefined;
29
29
  }>;
@@ -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
- declare type KeplerGlActions = {
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
- declare type MapStateProps = {
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/dist/base-layer").default[];
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: "CUSTOM" | "SCREEN" | "FOUR_BY_THREE" | "SIXTEEN_BY_NINE";
108
- resolution: "ONE_X" | "TWO_X";
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: object) => {
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: Partial<import("@kepler.gl/types").ExportImage>) => {
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: string) => {
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: 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/dist/base-layer").default[];
167
+ layers: import("@kepler.gl/layers").Layer[];
171
168
  animationConfig: import("@kepler.gl/types").AnimationConfig;
172
169
  visStateActions: typeof VisStateActions;
173
- toggleModal: (id: string | null) => {
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 | undefined) => {
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: string) => {
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
- declare type KeplerGLBasicProps = {
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
- declare type KeplerGLProps = KeplerGlState & KeplerGlActions & KeplerGLBasicProps;
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 | undefined;
317
+ mapboxApiUrl?: string;
327
318
  id: string;
328
- width?: number | undefined;
329
- height?: number | undefined;
319
+ width?: number;
320
+ height?: number;
330
321
  appWebsite?: any;
331
- onSaveMap?: (() => void) | undefined;
332
- onViewStateChange?: ((viewState: Viewport) => void) | undefined;
333
- onDeckInitialized?: (() => void) | undefined;
334
- onKeplerGlInitialized?: (() => void) | undefined;
335
- getMapboxRef?: (() => React.RefObject<any>) | undefined;
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 | undefined;
339
- }[] | undefined;
340
- mapStylesReplaceDefault?: boolean | undefined;
341
- appName?: string | undefined;
342
- version?: string | undefined;
343
- sidePanelWidth?: number | undefined;
344
- theme?: object | undefined;
345
- cloudProviders?: Provider[] | undefined;
346
- deckGlProps?: object | undefined;
347
- onLoadCloudMapSuccess?: OnSuccessCallBack | undefined;
348
- onLoadCloudMapError?: OnErrorCallBack | undefined;
349
- onMouseMove?: ((event: React.MouseEvent<Element, MouseEvent> & {
350
- lngLat?: [number, number] | undefined;
351
- }) => void) | undefined;
352
- onExportToCloudSuccess?: OnSuccessCallBack | undefined;
353
- onExportToCloudError?: OnErrorCallBack | undefined;
354
- readOnly?: boolean | undefined;
355
- featureFlags?: FeatureFlags | undefined;
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
- } | undefined;
361
- dispatch: React.Dispatch<any>;
362
- topMapContainerProps?: object | undefined;
363
- bottomMapContainerProps?: object | undefined;
364
- transformRequest?: ((url: string) => {
351
+ };
352
+ dispatch: Dispatch<any>;
353
+ topMapContainerProps?: object;
354
+ bottomMapContainerProps?: object;
355
+ transformRequest?: (url: string) => {
365
356
  url: string;
366
- }) | undefined;
357
+ };
367
358
  };
368
359
  /** @type {() => import('reselect').OutputParametricSelector<any, any, any, any>} */
369
360
  export declare function makeGetActionCreators(): ((state: any, props: any) => {