@kepler.gl/components 3.1.7 → 3.1.9

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 (37) hide show
  1. package/dist/common/image-preview.d.ts +3 -3
  2. package/dist/common/image-preview.js +17 -13
  3. package/dist/common/loading-spinner.js +2 -2
  4. package/dist/kepler-gl.d.ts +28 -10
  5. package/dist/kepler-gl.js +20 -9
  6. package/dist/map/layer-hover-info.js +38 -15
  7. package/dist/map/map-popover.js +2 -2
  8. package/dist/map-container.js +7 -3
  9. package/dist/modal-container.d.ts +1 -1
  10. package/dist/modals/export-data-modal.js +2 -2
  11. package/dist/modals/export-image-modal.d.ts +1 -1
  12. package/dist/modals/export-image-modal.js +1 -1
  13. package/dist/modals/save-map-modal.d.ts +1 -2
  14. package/dist/modals/save-map-modal.js +1 -1
  15. package/dist/modals/tilesets-modals/common.d.ts +2 -1
  16. package/dist/modals/tilesets-modals/common.js +1 -1
  17. package/dist/modals/tilesets-modals/load-data-footer.d.ts +1 -1
  18. package/dist/modals/tilesets-modals/load-data-footer.js +11 -5
  19. package/dist/modals/tilesets-modals/load-tileset.js +21 -3
  20. package/dist/modals/tilesets-modals/tileset-raster-form.js +20 -14
  21. package/dist/modals/tilesets-modals/tileset-wms-form.d.ts +7 -0
  22. package/dist/modals/tilesets-modals/tileset-wms-form.js +163 -0
  23. package/dist/plot-container.d.ts +9 -7
  24. package/dist/plot-container.js +168 -170
  25. package/dist/side-panel/add-by-dataset-button.d.ts +0 -1
  26. package/dist/side-panel/add-by-dataset-button.js +1 -3
  27. package/dist/side-panel/common/dataset-info.js +2 -2
  28. package/dist/side-panel/filter-panel/add-filter-button.js +1 -2
  29. package/dist/side-panel/layer-manager.js +21 -8
  30. package/dist/side-panel/layer-panel/add-layer-button.js +1 -2
  31. package/dist/side-panel/layer-panel/custom-palette.d.ts +1 -6
  32. package/dist/side-panel/layer-panel/custom-palette.js +132 -88
  33. package/dist/side-panel/layer-panel/custom-picker.js +18 -5
  34. package/dist/side-panel/layer-panel/dataset-layer-section.js +21 -8
  35. package/dist/side-panel/layer-panel/layer-configurator.js +56 -14
  36. package/dist/side-panel/layer-panel/raster-tile-layer-configurator.js +10 -10
  37. package/package.json +16 -15
@@ -57,10 +57,10 @@ var RasterTileForm = function RasterTileForm(_ref3) {
57
57
  _useState2 = (0, _slicedToArray2["default"])(_useState, 2),
58
58
  tileName = _useState2[0],
59
59
  setTileName = _useState2[1];
60
- var _useState3 = (0, _react.useState)(''),
60
+ var _useState3 = (0, _react.useState)(false),
61
61
  _useState4 = (0, _slicedToArray2["default"])(_useState3, 2),
62
- currentUrl = _useState4[0],
63
- setCurrentUrl = _useState4[1];
62
+ tileNameWasModified = _useState4[0],
63
+ setTileNameWasModified = _useState4[1];
64
64
  var _useState5 = (0, _react.useState)(''),
65
65
  _useState6 = (0, _slicedToArray2["default"])(_useState5, 2),
66
66
  metadataUrl = _useState6[0],
@@ -69,31 +69,36 @@ var RasterTileForm = function RasterTileForm(_ref3) {
69
69
  _useState8 = (0, _slicedToArray2["default"])(_useState7, 2),
70
70
  rasterTileServerUrls = _useState8[0],
71
71
  setRasterTileServerUrls = _useState8[1];
72
+
73
+ // Remove trailing slash to prevent issues with raster tile servers
74
+ var clearedMetadataUrl = metadataUrl.endsWith('/') ? metadataUrl.slice(0, -1) : metadataUrl;
72
75
  var onTileNameChange = (0, _react.useCallback)(function (event) {
73
76
  event.preventDefault();
77
+ setTileNameWasModified(true);
74
78
  setTileName(event.target.value);
75
79
  }, [setTileName]);
76
80
  var onMetadataUrlChange = (0, _react.useCallback)(function (event) {
77
81
  event.preventDefault();
78
82
  var value = event.target.value;
79
83
  setMetadataUrl(value);
80
- setTileName(value.split('/').pop() || '');
81
- setCurrentUrl(value);
82
- }, []);
84
+ if (!tileNameWasModified) {
85
+ setTileName(value.split('/').filter(Boolean).pop() || '');
86
+ }
87
+ }, [tileNameWasModified]);
83
88
  var onRasterTileServerUrlsChange = (0, _react.useCallback)(function (event) {
84
89
  event.preventDefault();
85
90
  setRasterTileServerUrls(event.target.value);
86
91
  }, [setRasterTileServerUrls]);
87
92
  var _useFetchJson = (0, _useFetchRasterTileMetadata["default"])({
88
- url: currentUrl,
89
- rasterTileType: (0, _commonUtils.isPMTilesUrl)(currentUrl) ? _constants.RasterTileType.PMTILES : _constants.RasterTileType.STAC,
93
+ url: clearedMetadataUrl,
94
+ rasterTileType: (0, _commonUtils.isPMTilesUrl)(clearedMetadataUrl) ? _constants.RasterTileType.PMTILES : _constants.RasterTileType.STAC,
90
95
  process: parseMetadataAllowCollections
91
96
  }),
92
97
  metadata = _useFetchJson.data,
93
98
  loading = _useFetchJson.loading,
94
99
  metaError = _useFetchJson.error;
95
100
  (0, _react.useEffect)(function () {
96
- if (tileName && metadataUrl) {
101
+ if (tileName && clearedMetadataUrl) {
97
102
  var pmtilesType = metadata === null || metadata === void 0 ? void 0 : metadata.pmtilesType;
98
103
  if (pmtilesType === _constants.PMTilesType.MVT) {
99
104
  return setResponse({
@@ -129,7 +134,7 @@ var RasterTileForm = function RasterTileForm(_ref3) {
129
134
  }
130
135
  var dataset = getDatasetAttributesFromRasterTile({
131
136
  name: tileName,
132
- metadataUrl: metadataUrl,
137
+ metadataUrl: clearedMetadataUrl,
133
138
  rasterTileServerUrls: rasterTileServers
134
139
  });
135
140
  setResponse({
@@ -146,7 +151,8 @@ var RasterTileForm = function RasterTileForm(_ref3) {
146
151
  error: metaError
147
152
  });
148
153
  }
149
- }, [metadata, loading, metaError, currentUrl, tileName, metadataUrl, rasterTileServerUrls, setResponse]);
154
+ }, [metadata, loading, metaError, tileName, clearedMetadataUrl, rasterTileServerUrls, setResponse]);
155
+ var showServerInput = (0, _utils.getApplicationConfig)().rasterServerShowServerInput;
150
156
  return /*#__PURE__*/_react["default"].createElement(TilesetInputContainer, null, /*#__PURE__*/_react["default"].createElement("div", null, /*#__PURE__*/_react["default"].createElement("label", {
151
157
  htmlFor: "tileset-name"
152
158
  }, "Name"), /*#__PURE__*/_react["default"].createElement(_common.InputLight, {
@@ -158,10 +164,10 @@ var RasterTileForm = function RasterTileForm(_ref3) {
158
164
  htmlFor: "tile-metadata"
159
165
  }, "Tileset metadata URL"), /*#__PURE__*/_react["default"].createElement(_common.InputLight, {
160
166
  id: "tile-metadata",
161
- placeholder: "Tileset metadata",
167
+ placeholder: "Tileset metadata URL",
162
168
  value: metadataUrl !== null && metadataUrl !== void 0 ? metadataUrl : undefined,
163
169
  onChange: onMetadataUrlChange
164
- }), /*#__PURE__*/_react["default"].createElement(TilesetInputDescription, null, "Supports raster .pmtiles. Limited support for STAC Items and Collections.")), /*#__PURE__*/_react["default"].createElement("div", null, /*#__PURE__*/_react["default"].createElement("label", {
170
+ }), /*#__PURE__*/_react["default"].createElement(TilesetInputDescription, null, "Supports raster .pmtiles. Limited support for STAC Items and Collections.")), showServerInput && /*#__PURE__*/_react["default"].createElement("div", null, /*#__PURE__*/_react["default"].createElement("label", {
165
171
  htmlFor: "tileset-raster-servers"
166
172
  }, "Raster tile servers"), /*#__PURE__*/_react["default"].createElement(_common.InputLight, {
167
173
  id: "tileset-raster-servers",
@@ -171,4 +177,4 @@ var RasterTileForm = function RasterTileForm(_ref3) {
171
177
  }), /*#__PURE__*/_react["default"].createElement(TilesetInputDescription, null, "Raster tile server URLs for Cloud Optimized GeoTIFF tilesets and elevation.")));
172
178
  };
173
179
  var _default = exports["default"] = RasterTileForm;
174
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfc3R5bGVkQ29tcG9uZW50cyIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfY29tbW9uVXRpbHMiLCJfY29uc3RhbnRzIiwiX3RhYmxlIiwiX3V0aWxzIiwiX3VzZUZldGNoUmFzdGVyVGlsZU1ldGFkYXRhIiwiX2NvbW1vbiIsIl90ZW1wbGF0ZU9iamVjdCIsIl90ZW1wbGF0ZU9iamVjdDIiLCJfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUiLCJlIiwiV2Vha01hcCIsInIiLCJ0IiwiX19lc01vZHVsZSIsIl90eXBlb2YiLCJoYXMiLCJnZXQiLCJuIiwiX19wcm90b19fIiwiYSIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwidSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImkiLCJzZXQiLCJvd25LZXlzIiwia2V5cyIsImdldE93blByb3BlcnR5U3ltYm9scyIsIm8iLCJmaWx0ZXIiLCJlbnVtZXJhYmxlIiwicHVzaCIsImFwcGx5IiwiX29iamVjdFNwcmVhZCIsImFyZ3VtZW50cyIsImxlbmd0aCIsImZvckVhY2giLCJfZGVmaW5lUHJvcGVydHkyIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyIsImRlZmluZVByb3BlcnRpZXMiLCJUaWxlc2V0SW5wdXRDb250YWluZXIiLCJzdHlsZWQiLCJkaXYiLCJfdGFnZ2VkVGVtcGxhdGVMaXRlcmFsMiIsIlRpbGVzZXRJbnB1dERlc2NyaXB0aW9uIiwicHJvcHMiLCJ0aGVtZSIsIkFaVVJFMjAwIiwiZ2V0RGF0YXNldEF0dHJpYnV0ZXNGcm9tUmFzdGVyVGlsZSIsIl9yZWYiLCJuYW1lIiwibWV0YWRhdGFVcmwiLCJyYXN0ZXJUaWxlU2VydmVyVXJscyIsInR5cGUiLCJEYXRhc2V0VHlwZSIsIlJBU1RFUl9USUxFIiwibWV0YWRhdGEiLCJwYXJzZU1ldGFkYXRhQWxsb3dDb2xsZWN0aW9ucyIsIl9yZWYyIiwicmFzdGVyVGlsZVR5cGUiLCJSYXN0ZXJUaWxlVHlwZSIsIlBNVElMRVMiLCJwYXJzZVZlY3Rvck1ldGFkYXRhIiwidGlsZVVybCIsInBhcnNlUmFzdGVyTWV0YWRhdGEiLCJhbGxvd0NvbGxlY3Rpb25zIiwiUmFzdGVyVGlsZUZvcm0iLCJfcmVmMyIsInNldFJlc3BvbnNlIiwiX3VzZVN0YXRlIiwidXNlU3RhdGUiLCJfdXNlU3RhdGUyIiwiX3NsaWNlZFRvQXJyYXkyIiwidGlsZU5hbWUiLCJzZXRUaWxlTmFtZSIsIl91c2VTdGF0ZTMiLCJfdXNlU3RhdGU0IiwiY3VycmVudFVybCIsInNldEN1cnJlbnRVcmwiLCJfdXNlU3RhdGU1IiwiX3VzZVN0YXRlNiIsInNldE1ldGFkYXRhVXJsIiwiX3VzZVN0YXRlNyIsImdldEFwcGxpY2F0aW9uQ29uZmlnIiwicmFzdGVyU2VydmVyVXJscyIsImpvaW4iLCJfdXNlU3RhdGU4Iiwic2V0UmFzdGVyVGlsZVNlcnZlclVybHMiLCJvblRpbGVOYW1lQ2hhbmdlIiwidXNlQ2FsbGJhY2siLCJldmVudCIsInByZXZlbnREZWZhdWx0IiwidGFyZ2V0IiwidmFsdWUiLCJvbk1ldGFkYXRhVXJsQ2hhbmdlIiwic3BsaXQiLCJwb3AiLCJvblJhc3RlclRpbGVTZXJ2ZXJVcmxzQ2hhbmdlIiwiX3VzZUZldGNoSnNvbiIsInVzZUZldGNoSnNvbiIsInVybCIsImlzUE1UaWxlc1VybCIsIlNUQUMiLCJwcm9jZXNzIiwiZGF0YSIsImxvYWRpbmciLCJtZXRhRXJyb3IiLCJlcnJvciIsInVzZUVmZmVjdCIsInBtdGlsZXNUeXBlIiwiUE1UaWxlc1R5cGUiLCJNVlQiLCJkYXRhc2V0IiwiRXJyb3IiLCJyYXN0ZXJUaWxlU2VydmVycyIsIm1hcCIsInNlcnZlciIsInRyaW0iLCJldmVyeSIsInZhbGlkYXRlVXJsIiwiY3JlYXRlRWxlbWVudCIsImh0bWxGb3IiLCJJbnB1dExpZ2h0IiwiaWQiLCJwbGFjZWhvbGRlciIsIm9uQ2hhbmdlIiwidW5kZWZpbmVkIiwiX2RlZmF1bHQiLCJleHBvcnRzIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL21vZGFscy90aWxlc2V0cy1tb2RhbHMvdGlsZXNldC1yYXN0ZXItZm9ybS50c3giXSwic291cmNlc0NvbnRlbnQiOlsiLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVFxuLy8gQ29weXJpZ2h0IGNvbnRyaWJ1dG9ycyB0byB0aGUga2VwbGVyLmdsIHByb2plY3RcblxuaW1wb3J0IFJlYWN0LCB7dXNlQ2FsbGJhY2ssIHVzZUVmZmVjdCwgdXNlU3RhdGV9IGZyb20gJ3JlYWN0JztcbmltcG9ydCBzdHlsZWQgZnJvbSAnc3R5bGVkLWNvbXBvbmVudHMnO1xuXG5pbXBvcnQge1BNVGlsZXNNZXRhZGF0YX0gZnJvbSAnQGxvYWRlcnMuZ2wvcG10aWxlcyc7XG5cbmltcG9ydCB7aXNQTVRpbGVzVXJsLCB2YWxpZGF0ZVVybH0gZnJvbSAnQGtlcGxlci5nbC9jb21tb24tdXRpbHMnO1xuaW1wb3J0IHtEYXRhc2V0VHlwZSwgUmFzdGVyVGlsZVR5cGUsIFBNVGlsZXNUeXBlfSBmcm9tICdAa2VwbGVyLmdsL2NvbnN0YW50cyc7XG5pbXBvcnQge0pzb25PYmplY3RPckFycmF5fSBmcm9tICdAa2VwbGVyLmdsL3R5cGVzJztcbmltcG9ydCB7cGFyc2VSYXN0ZXJNZXRhZGF0YSwgcGFyc2VWZWN0b3JNZXRhZGF0YX0gZnJvbSAnQGtlcGxlci5nbC90YWJsZSc7XG5pbXBvcnQge2dldEFwcGxpY2F0aW9uQ29uZmlnfSBmcm9tICdAa2VwbGVyLmdsL3V0aWxzJztcblxuaW1wb3J0IHtkZWZhdWx0IGFzIHVzZUZldGNoSnNvbn0gZnJvbSAnLi4vLi4vaG9va3MvdXNlLWZldGNoLXJhc3Rlci10aWxlLW1ldGFkYXRhJztcbmltcG9ydCB7RGF0YXNldENyZWF0aW9uQXR0cmlidXRlcywgTWV0YVJlc3BvbnNlfSBmcm9tICcuL2NvbW1vbic7XG5pbXBvcnQge0lucHV0TGlnaHR9IGZyb20gJy4uLy4uL2NvbW1vbic7XG5cbmNvbnN0IFRpbGVzZXRJbnB1dENvbnRhaW5lciA9IHN0eWxlZC5kaXZgXG4gIGRpc3BsYXk6IGdyaWQ7XG4gIGdyaWQtdGVtcGxhdGUtcm93czogcmVwZWF0KDMsIDFmcik7XG4gIHJvdy1nYXA6IDE4cHg7XG4gIGZvbnQtc2l6ZTogMTJweDtcbmA7XG5cbmNvbnN0IFRpbGVzZXRJbnB1dERlc2NyaXB0aW9uID0gc3R5bGVkLmRpdmBcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICBjb2xvcjogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5BWlVSRTIwMH07XG4gIGZvbnQtc2l6ZTogMTFweDtcbmA7XG5cbmV4cG9ydCB0eXBlIFJhc3RlclRpbGVzZXRNZXRhID0ge1xuICBuYW1lOiBzdHJpbmc7XG4gIG1ldGFkYXRhVXJsOiBzdHJpbmc7XG4gIHJhc3RlclRpbGVTZXJ2ZXJVcmxzPzogc3RyaW5nW107XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0RGF0YXNldEF0dHJpYnV0ZXNGcm9tUmFzdGVyVGlsZSh7XG4gIG5hbWUsXG4gIG1ldGFkYXRhVXJsLFxuICByYXN0ZXJUaWxlU2VydmVyVXJsc1xufTogUmFzdGVyVGlsZXNldE1ldGEpOiBEYXRhc2V0Q3JlYXRpb25BdHRyaWJ1dGVzIHtcbiAgcmV0dXJuIHtcbiAgICBuYW1lLFxuICAgIHR5cGU6IERhdGFzZXRUeXBlLlJBU1RFUl9USUxFLFxuICAgIG1ldGFkYXRhOiB7XG4gICAgICBtZXRhZGF0YVVybCxcbiAgICAgIC4uLihyYXN0ZXJUaWxlU2VydmVyVXJscyA/IHtyYXN0ZXJUaWxlU2VydmVyVXJsc30gOiB7fSlcbiAgICB9XG4gIH07XG59XG5cbnR5cGUgUmFzdGVyVGlsZUZvcm1Qcm9wcyA9IHtcbiAgc2V0UmVzcG9uc2U6IChyZXNwb25zZTogTWV0YVJlc3BvbnNlKSA9PiB2b2lkO1xufTtcblxuY29uc3QgcGFyc2VNZXRhZGF0YUFsbG93Q29sbGVjdGlvbnMgPSAoXG4gIG1ldGFkYXRhOiBKc29uT2JqZWN0T3JBcnJheSB8IFBNVGlsZXNNZXRhZGF0YSxcbiAge21ldGFkYXRhVXJsLCByYXN0ZXJUaWxlVHlwZX06IHttZXRhZGF0YVVybDogc3RyaW5nOyByYXN0ZXJUaWxlVHlwZTogUmFzdGVyVGlsZVR5cGV9XG4pID0+IHtcbiAgcmV0dXJuIHJhc3RlclRpbGVUeXBlID09PSBSYXN0ZXJUaWxlVHlwZS5QTVRJTEVTXG4gICAgPyBwYXJzZVZlY3Rvck1ldGFkYXRhKG1ldGFkYXRhIGFzIFBNVGlsZXNNZXRhZGF0YSwge1xuICAgICAgICB0aWxlVXJsOiBtZXRhZGF0YVVybFxuICAgICAgfSlcbiAgICA6IHBhcnNlUmFzdGVyTWV0YWRhdGEobWV0YWRhdGEgYXMgSnNvbk9iamVjdE9yQXJyYXksIHthbGxvd0NvbGxlY3Rpb25zOiB0cnVlfSk7XG59O1xuXG5jb25zdCBSYXN0ZXJUaWxlRm9ybTogUmVhY3QuRkM8UmFzdGVyVGlsZUZvcm1Qcm9wcz4gPSAoe3NldFJlc3BvbnNlfSkgPT4ge1xuICBjb25zdCBbdGlsZU5hbWUsIHNldFRpbGVOYW1lXSA9IHVzZVN0YXRlPHN0cmluZz4oJycpO1xuICBjb25zdCBbY3VycmVudFVybCwgc2V0Q3VycmVudFVybF0gPSB1c2VTdGF0ZTxzdHJpbmc+KCcnKTtcbiAgY29uc3QgW21ldGFkYXRhVXJsLCBzZXRNZXRhZGF0YVVybF0gPSB1c2VTdGF0ZTxzdHJpbmc+KCcnKTtcbiAgY29uc3QgW3Jhc3RlclRpbGVTZXJ2ZXJVcmxzLCBzZXRSYXN0ZXJUaWxlU2VydmVyVXJsc10gPSB1c2VTdGF0ZTxzdHJpbmc+KFxuICAgIChnZXRBcHBsaWNhdGlvbkNvbmZpZygpLnJhc3RlclNlcnZlclVybHMgfHwgW10pLmpvaW4oJywnKVxuICApO1xuXG4gIGNvbnN0IG9uVGlsZU5hbWVDaGFuZ2UgPSB1c2VDYWxsYmFjayhcbiAgICAoZXZlbnQ6IFJlYWN0LkNoYW5nZUV2ZW50PEhUTUxJbnB1dEVsZW1lbnQ+KSA9PiB7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgc2V0VGlsZU5hbWUoZXZlbnQudGFyZ2V0LnZhbHVlKTtcbiAgICB9LFxuICAgIFtzZXRUaWxlTmFtZV1cbiAgKTtcblxuICBjb25zdCBvbk1ldGFkYXRhVXJsQ2hhbmdlID0gdXNlQ2FsbGJhY2soKGV2ZW50OiBSZWFjdC5DaGFuZ2VFdmVudDxIVE1MSW5wdXRFbGVtZW50PikgPT4ge1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgY29uc3Qge3ZhbHVlfSA9IGV2ZW50LnRhcmdldDtcbiAgICBzZXRNZXRhZGF0YVVybCh2YWx1ZSk7XG4gICAgc2V0VGlsZU5hbWUodmFsdWUuc3BsaXQoJy8nKS5wb3AoKSB8fCAnJyk7XG4gICAgc2V0Q3VycmVudFVybCh2YWx1ZSk7XG4gIH0sIFtdKTtcblxuICBjb25zdCBvblJhc3RlclRpbGVTZXJ2ZXJVcmxzQ2hhbmdlID0gdXNlQ2FsbGJhY2soXG4gICAgKGV2ZW50OiBSZWFjdC5DaGFuZ2VFdmVudDxIVE1MSW5wdXRFbGVtZW50PikgPT4ge1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIHNldFJhc3RlclRpbGVTZXJ2ZXJVcmxzKGV2ZW50LnRhcmdldC52YWx1ZSk7XG4gICAgfSxcbiAgICBbc2V0UmFzdGVyVGlsZVNlcnZlclVybHNdXG4gICk7XG5cbiAgY29uc3Qge1xuICAgIGRhdGE6IG1ldGFkYXRhLFxuICAgIGxvYWRpbmcsXG4gICAgZXJyb3I6IG1ldGFFcnJvclxuICB9ID0gdXNlRmV0Y2hKc29uKHtcbiAgICB1cmw6IGN1cnJlbnRVcmwsXG4gICAgcmFzdGVyVGlsZVR5cGU6IGlzUE1UaWxlc1VybChjdXJyZW50VXJsKSA/IFJhc3RlclRpbGVUeXBlLlBNVElMRVMgOiBSYXN0ZXJUaWxlVHlwZS5TVEFDLFxuICAgIHByb2Nlc3M6IHBhcnNlTWV0YWRhdGFBbGxvd0NvbGxlY3Rpb25zXG4gIH0pO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKHRpbGVOYW1lICYmIG1ldGFkYXRhVXJsKSB7XG4gICAgICBjb25zdCBwbXRpbGVzVHlwZSA9IG1ldGFkYXRhPy5wbXRpbGVzVHlwZTtcblxuICAgICAgaWYgKHBtdGlsZXNUeXBlID09PSBQTVRpbGVzVHlwZS5NVlQpIHtcbiAgICAgICAgcmV0dXJuIHNldFJlc3BvbnNlKHtcbiAgICAgICAgICBtZXRhZGF0YSxcbiAgICAgICAgICBkYXRhc2V0OiBudWxsLFxuICAgICAgICAgIGxvYWRpbmcsXG4gICAgICAgICAgZXJyb3I6IG5ldyBFcnJvcignRm9yIC5wbXRpbGVzIGluIG12dCBmb3JtYXQsIHBsZWFzZSB1c2UgdGhlIFZlY3RvciBUaWxlIGZvcm0uJylcbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIGxldCBlcnJvciA9IG1ldGFFcnJvcjtcblxuICAgICAgLy8gY2hlY2sgZm9yIHJhc3RlciB0aWxlIHNlcnZlcnMgZm9yIFNUQUMgaXRlbXMgYW5kIGNvbGxlY3Rpb25zXG4gICAgICBsZXQgcmFzdGVyVGlsZVNlcnZlcnM7XG4gICAgICBpZiAoXG4gICAgICAgICFlcnJvclxuICAgICAgICAvLyBXZSBzdGlsbCBuZWVkIHJhc3RlciB0aWxlIHNlcnZlcnMgZm9yIFBNVGlsZXMgd2hlbiB3ZSBwbGFuIHRvIHVzZSBlbGV2YXRpb25cbiAgICAgICkge1xuICAgICAgICByYXN0ZXJUaWxlU2VydmVycyA9IHJhc3RlclRpbGVTZXJ2ZXJVcmxzXG4gICAgICAgICAgLnNwbGl0KCcsJylcbiAgICAgICAgICAubWFwKHNlcnZlciA9PiBzZXJ2ZXIudHJpbSgpKVxuICAgICAgICAgIC5maWx0ZXIoc2VydmVyID0+IHNlcnZlcik7XG4gICAgICAgIGlmIChcbiAgICAgICAgICByYXN0ZXJUaWxlU2VydmVycy5sZW5ndGggPCAxIHx8XG4gICAgICAgICAgIXJhc3RlclRpbGVTZXJ2ZXJzLmV2ZXJ5KHNlcnZlciA9PiB2YWxpZGF0ZVVybChzZXJ2ZXIpKVxuICAgICAgICApIHtcbiAgICAgICAgICBpZiAocG10aWxlc1R5cGUpIHtcbiAgICAgICAgICAgIC8vIEZvciByYXN0ZXIgdGlsZXMgZWxldmF0aW9uIHN1cHBvcnQgaXMgb3B0aW9uYWxcbiAgICAgICAgICAgIC8vIFRPRE8gZGlzcGxheSBhIHdhcm5pbmcsIGJ1dCBub3QgYSBibG9ja2luZyBlcnJvclxuICAgICAgICAgICAgcmFzdGVyVGlsZVNlcnZlcnMgPSBbXTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZXJyb3IgPSBuZXcgRXJyb3IoXG4gICAgICAgICAgICAgICdQcm92aWRlIHZhbGlkIHJhc3RlciB0aWxlIHNlcnZlciB1cmxzIHRvIHN1cHBvcnQgU1RBQyBhbmQgZWxldmF0aW9ucy4nXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBjb25zdCBkYXRhc2V0ID0gZ2V0RGF0YXNldEF0dHJpYnV0ZXNGcm9tUmFzdGVyVGlsZSh7XG4gICAgICAgIG5hbWU6IHRpbGVOYW1lLFxuICAgICAgICBtZXRhZGF0YVVybCxcbiAgICAgICAgcmFzdGVyVGlsZVNlcnZlclVybHM6IHJhc3RlclRpbGVTZXJ2ZXJzXG4gICAgICB9KTtcblxuICAgICAgc2V0UmVzcG9uc2Uoe1xuICAgICAgICBtZXRhZGF0YSxcbiAgICAgICAgZGF0YXNldCxcbiAgICAgICAgbG9hZGluZyxcbiAgICAgICAgZXJyb3JcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBzZXRSZXNwb25zZSh7XG4gICAgICAgIG1ldGFkYXRhLFxuICAgICAgICBkYXRhc2V0OiBudWxsLFxuICAgICAgICBsb2FkaW5nLFxuICAgICAgICBlcnJvcjogbWV0YUVycm9yXG4gICAgICB9KTtcbiAgICB9XG4gIH0sIFtcbiAgICBtZXRhZGF0YSxcbiAgICBsb2FkaW5nLFxuICAgIG1ldGFFcnJvcixcbiAgICBjdXJyZW50VXJsLFxuICAgIHRpbGVOYW1lLFxuICAgIG1ldGFkYXRhVXJsLFxuICAgIHJhc3RlclRpbGVTZXJ2ZXJVcmxzLFxuICAgIHNldFJlc3BvbnNlXG4gIF0pO1xuXG4gIHJldHVybiAoXG4gICAgPFRpbGVzZXRJbnB1dENvbnRhaW5lcj5cbiAgICAgIDxkaXY+XG4gICAgICAgIDxsYWJlbCBodG1sRm9yPVwidGlsZXNldC1uYW1lXCI+TmFtZTwvbGFiZWw+XG4gICAgICAgIDxJbnB1dExpZ2h0XG4gICAgICAgICAgaWQ9XCJ0aWxlc2V0LW5hbWVcIlxuICAgICAgICAgIHBsYWNlaG9sZGVyPVwiTmFtZSB5b3VyIHRpbGVzZXRcIlxuICAgICAgICAgIHZhbHVlPXt0aWxlTmFtZX1cbiAgICAgICAgICBvbkNoYW5nZT17b25UaWxlTmFtZUNoYW5nZX1cbiAgICAgICAgLz5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdj5cbiAgICAgICAgPGxhYmVsIGh0bWxGb3I9XCJ0aWxlLW1ldGFkYXRhXCI+VGlsZXNldCBtZXRhZGF0YSBVUkw8L2xhYmVsPlxuICAgICAgICA8SW5wdXRMaWdodFxuICAgICAgICAgIGlkPVwidGlsZS1tZXRhZGF0YVwiXG4gICAgICAgICAgcGxhY2Vob2xkZXI9XCJUaWxlc2V0IG1ldGFkYXRhXCJcbiAgICAgICAgICB2YWx1ZT17bWV0YWRhdGFVcmwgPz8gdW5kZWZpbmVkfVxuICAgICAgICAgIG9uQ2hhbmdlPXtvbk1ldGFkYXRhVXJsQ2hhbmdlfVxuICAgICAgICAvPlxuICAgICAgICA8VGlsZXNldElucHV0RGVzY3JpcHRpb24+XG4gICAgICAgICAgU3VwcG9ydHMgcmFzdGVyIC5wbXRpbGVzLiBMaW1pdGVkIHN1cHBvcnQgZm9yIFNUQUMgSXRlbXMgYW5kIENvbGxlY3Rpb25zLlxuICAgICAgICA8L1RpbGVzZXRJbnB1dERlc2NyaXB0aW9uPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2PlxuICAgICAgICA8bGFiZWwgaHRtbEZvcj1cInRpbGVzZXQtcmFzdGVyLXNlcnZlcnNcIj5SYXN0ZXIgdGlsZSBzZXJ2ZXJzPC9sYWJlbD5cbiAgICAgICAgPElucHV0TGlnaHRcbiAgICAgICAgICBpZD1cInRpbGVzZXQtcmFzdGVyLXNlcnZlcnNcIlxuICAgICAgICAgIHBsYWNlaG9sZGVyPVwiUmFzdGVyIHRpbGUgc2VydmVycyAoc2VwYXJhdGVkIGJ5IGNvbW1hcylcIlxuICAgICAgICAgIHZhbHVlPXtyYXN0ZXJUaWxlU2VydmVyVXJsc31cbiAgICAgICAgICBvbkNoYW5nZT17b25SYXN0ZXJUaWxlU2VydmVyVXJsc0NoYW5nZX1cbiAgICAgICAgLz5cbiAgICAgICAgPFRpbGVzZXRJbnB1dERlc2NyaXB0aW9uPlxuICAgICAgICAgIFJhc3RlciB0aWxlIHNlcnZlciBVUkxzIGZvciBDbG91ZCBPcHRpbWl6ZWQgR2VvVElGRiB0aWxlc2V0cyBhbmQgZWxldmF0aW9uLlxuICAgICAgICA8L1RpbGVzZXRJbnB1dERlc2NyaXB0aW9uPlxuICAgICAgPC9kaXY+XG4gICAgPC9UaWxlc2V0SW5wdXRDb250YWluZXI+XG4gICk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBSYXN0ZXJUaWxlRm9ybTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0FBR0EsSUFBQUEsTUFBQSxHQUFBQyx1QkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsaUJBQUEsR0FBQUMsc0JBQUEsQ0FBQUYsT0FBQTtBQUlBLElBQUFHLFlBQUEsR0FBQUgsT0FBQTtBQUNBLElBQUFJLFVBQUEsR0FBQUosT0FBQTtBQUVBLElBQUFLLE1BQUEsR0FBQUwsT0FBQTtBQUNBLElBQUFNLE1BQUEsR0FBQU4sT0FBQTtBQUVBLElBQUFPLDJCQUFBLEdBQUFMLHNCQUFBLENBQUFGLE9BQUE7QUFFQSxJQUFBUSxPQUFBLEdBQUFSLE9BQUE7QUFBd0MsSUFBQVMsZUFBQSxFQUFBQyxnQkFBQSxFQWhCeEM7QUFDQTtBQUFBLFNBQUFDLHlCQUFBQyxDQUFBLDZCQUFBQyxPQUFBLG1CQUFBQyxDQUFBLE9BQUFELE9BQUEsSUFBQUUsQ0FBQSxPQUFBRixPQUFBLFlBQUFGLHdCQUFBLFlBQUFBLHlCQUFBQyxDQUFBLFdBQUFBLENBQUEsR0FBQUcsQ0FBQSxHQUFBRCxDQUFBLEtBQUFGLENBQUE7QUFBQSxTQUFB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Q1Q3QixVQUFVLEVBQ1ZKLFFBQVEsRUFDUnRCLFdBQVcsRUFDWEMsb0JBQW9CLEVBQ3BCZ0IsV0FBVyxDQUNaLENBQUM7RUFFRixvQkFDRTVFLE1BQUEsWUFBQWdJLGFBQUEsQ0FBQ2hGLHFCQUFxQixxQkFDcEJoRCxNQUFBLFlBQUFnSSxhQUFBLDJCQUNFaEksTUFBQSxZQUFBZ0ksYUFBQTtJQUFPQyxPQUFPLEVBQUM7RUFBYyxHQUFDLE1BQVcsQ0FBQyxlQUMxQ2pJLE1BQUEsWUFBQWdJLGFBQUEsQ0FBQ3RILE9BQUEsQ0FBQXdILFVBQVU7SUFDVEMsRUFBRSxFQUFDLGNBQWM7SUFDakJDLFdBQVcsRUFBQyxtQkFBbUI7SUFDL0IvQixLQUFLLEVBQUVwQixRQUFTO0lBQ2hCb0QsUUFBUSxFQUFFckM7RUFBaUIsQ0FDNUIsQ0FDRSxDQUFDLGVBQ05oRyxNQUFBLFlBQUFnSSxhQUFBLDJCQUNFaEksTUFBQSxZQUFBZ0ksYUFBQTtJQUFPQyxPQUFPLEVBQUM7RUFBZSxHQUFDLHNCQUEyQixDQUFDLGVBQzNEakksTUFBQSxZQUFBZ0ksYUFBQSxDQUFDdEgsT0FBQSxDQUFBd0gsVUFBVTtJQUNUQyxFQUFFLEVBQUMsZUFBZTtJQUNsQkMsV0FBVyxFQUFDLGtCQUFrQjtJQUM5Qi9CLEtBQUssRUFBRTFDLFdBQVcsYUFBWEEsV0FBVyxjQUFYQSxXQUFXLEdBQUkyRSxTQUFVO0lBQ2hDRCxRQUFRLEVBQUUvQjtFQUFvQixDQUMvQixDQUFDLGVBQ0Z0RyxNQUFBLFlBQUFnSSxhQUFBLENBQUM1RSx1QkFBdUIsUUFBQywyRUFFQSxDQUN0QixDQUFDLGVBQ05wRCxNQUFBLFlBQUFnSSxhQUFBLDJCQUNFaEksTUFBQSxZQUFBZ0ksYUFBQTtJQUFPQyxPQUFPLEVBQUM7RUFBd0IsR0FBQyxxQkFBMEIsQ0FBQyxlQUNuRWpJLE1BQUEsWUFBQWdJLGFBQUEsQ0FBQ3RILE9BQUEsQ0FBQXdILFVBQVU7SUFDVEMsRUFBRSxFQUFDLHdCQUF3QjtJQUMzQkMsV0FBVyxFQUFDLDJDQUEyQztJQUN2RC9CLEtBQUssRUFBRXpDLG9CQUFxQjtJQUM1QnlFLFFBQVEsRUFBRTVCO0VBQTZCLENBQ3hDLENBQUMsZUFDRnpHLE1BQUEsWUFBQWdJLGFBQUEsQ0FBQzVFLHVCQUF1QixRQUFDLDZFQUVBLENBQ3RCLENBQ2dCLENBQUM7QUFFNUIsQ0FBQztBQUFDLElBQUFtRixRQUFBLEdBQUFDLE9BQUEsY0FFYTlELGNBQWMiLCJpZ25vcmVMaXN0IjpbXX0=
180
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfc3R5bGVkQ29tcG9uZW50cyIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfY29tbW9uVXRpbHMiLCJfY29uc3RhbnRzIiwiX3RhYmxlIiwiX3V0aWxzIiwiX3VzZUZldGNoUmFzdGVyVGlsZU1ldGFkYXRhIiwiX2NvbW1vbiIsIl90ZW1wbGF0ZU9iamVjdCIsIl90ZW1wbGF0ZU9iamVjdDIiLCJfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUiLCJlIiwiV2Vha01hcCIsInIiLCJ0IiwiX19lc01vZHVsZSIsIl90eXBlb2YiLCJoYXMiLCJnZXQiLCJuIiwiX19wcm90b19fIiwiYSIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwidSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImkiLCJzZXQiLCJvd25LZXlzIiwia2V5cyIsImdldE93blByb3BlcnR5U3ltYm9scyIsIm8iLCJmaWx0ZXIiLCJlbnVtZXJhYmxlIiwicHVzaCIsImFwcGx5IiwiX29iamVjdFNwcmVhZCIsImFyZ3VtZW50cyIsImxlbmd0aCIsImZvckVhY2giLCJfZGVmaW5lUHJvcGVydHkyIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyIsImRlZmluZVByb3BlcnRpZXMiLCJUaWxlc2V0SW5wdXRDb250YWluZXIiLCJzdHlsZWQiLCJkaXYiLCJfdGFnZ2VkVGVtcGxhdGVMaXRlcmFsMiIsIlRpbGVzZXRJbnB1dERlc2NyaXB0aW9uIiwicHJvcHMiLCJ0aGVtZSIsIkFaVVJFMjAwIiwiZ2V0RGF0YXNldEF0dHJpYnV0ZXNGcm9tUmFzdGVyVGlsZSIsIl9yZWYiLCJuYW1lIiwibWV0YWRhdGFVcmwiLCJyYXN0ZXJUaWxlU2VydmVyVXJscyIsInR5cGUiLCJEYXRhc2V0VHlwZSIsIlJBU1RFUl9USUxFIiwibWV0YWRhdGEiLCJwYXJzZU1ldGFkYXRhQWxsb3dDb2xsZWN0aW9ucyIsIl9yZWYyIiwicmFzdGVyVGlsZVR5cGUiLCJSYXN0ZXJUaWxlVHlwZSIsIlBNVElMRVMiLCJwYXJzZVZlY3Rvck1ldGFkYXRhIiwidGlsZVVybCIsInBhcnNlUmFzdGVyTWV0YWRhdGEiLCJhbGxvd0NvbGxlY3Rpb25zIiwiUmFzdGVyVGlsZUZvcm0iLCJfcmVmMyIsInNldFJlc3BvbnNlIiwiX3VzZVN0YXRlIiwidXNlU3RhdGUiLCJfdXNlU3RhdGUyIiwiX3NsaWNlZFRvQXJyYXkyIiwidGlsZU5hbWUiLCJzZXRUaWxlTmFtZSIsIl91c2VTdGF0ZTMiLCJfdXNlU3RhdGU0IiwidGlsZU5hbWVXYXNNb2RpZmllZCIsInNldFRpbGVOYW1lV2FzTW9kaWZpZWQiLCJfdXNlU3RhdGU1IiwiX3VzZVN0YXRlNiIsInNldE1ldGFkYXRhVXJsIiwiX3VzZVN0YXRlNyIsImdldEFwcGxpY2F0aW9uQ29uZmlnIiwicmFzdGVyU2VydmVyVXJscyIsImpvaW4iLCJfdXNlU3RhdGU4Iiwic2V0UmFzdGVyVGlsZVNlcnZlclVybHMiLCJjbGVhcmVkTWV0YWRhdGFVcmwiLCJlbmRzV2l0aCIsInNsaWNlIiwib25UaWxlTmFtZUNoYW5nZSIsInVzZUNhbGxiYWNrIiwiZXZlbnQiLCJwcmV2ZW50RGVmYXVsdCIsInRhcmdldCIsInZhbHVlIiwib25NZXRhZGF0YVVybENoYW5nZSIsInNwbGl0IiwiQm9vbGVhbiIsInBvcCIsIm9uUmFzdGVyVGlsZVNlcnZlclVybHNDaGFuZ2UiLCJfdXNlRmV0Y2hKc29uIiwidXNlRmV0Y2hKc29uIiwidXJsIiwiaXNQTVRpbGVzVXJsIiwiU1RBQyIsInByb2Nlc3MiLCJkYXRhIiwibG9hZGluZyIsIm1ldGFFcnJvciIsImVycm9yIiwidXNlRWZmZWN0IiwicG10aWxlc1R5cGUiLCJQTVRpbGVzVHlwZSIsIk1WVCIsImRhdGFzZXQiLCJFcnJvciIsInJhc3RlclRpbGVTZXJ2ZXJzIiwibWFwIiwic2VydmVyIiwidHJpbSIsImV2ZXJ5IiwidmFsaWRhdGVVcmwiLCJzaG93U2VydmVySW5wdXQiLCJyYXN0ZXJTZXJ2ZXJTaG93U2VydmVySW5wdXQiLCJjcmVhdGVFbGVtZW50IiwiaHRtbEZvciIsIklucHV0TGlnaHQiLCJpZCIsInBsYWNlaG9sZGVyIiwib25DaGFuZ2UiLCJ1bmRlZmluZWQiLCJfZGVmYXVsdCIsImV4cG9ydHMiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbW9kYWxzL3RpbGVzZXRzLW1vZGFscy90aWxlc2V0LXJhc3Rlci1mb3JtLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUXG4vLyBDb3B5cmlnaHQgY29udHJpYnV0b3JzIHRvIHRoZSBrZXBsZXIuZ2wgcHJvamVjdFxuXG5pbXBvcnQgUmVhY3QsIHt1c2VDYWxsYmFjaywgdXNlRWZmZWN0LCB1c2VTdGF0ZX0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHN0eWxlZCBmcm9tICdzdHlsZWQtY29tcG9uZW50cyc7XG5cbmltcG9ydCB7UE1UaWxlc01ldGFkYXRhfSBmcm9tICdAbG9hZGVycy5nbC9wbXRpbGVzJztcblxuaW1wb3J0IHtpc1BNVGlsZXNVcmwsIHZhbGlkYXRlVXJsfSBmcm9tICdAa2VwbGVyLmdsL2NvbW1vbi11dGlscyc7XG5pbXBvcnQge0RhdGFzZXRUeXBlLCBSYXN0ZXJUaWxlVHlwZSwgUE1UaWxlc1R5cGV9IGZyb20gJ0BrZXBsZXIuZ2wvY29uc3RhbnRzJztcbmltcG9ydCB7SnNvbk9iamVjdE9yQXJyYXl9IGZyb20gJ0BrZXBsZXIuZ2wvdHlwZXMnO1xuaW1wb3J0IHtwYXJzZVJhc3Rlck1ldGFkYXRhLCBwYXJzZVZlY3Rvck1ldGFkYXRhfSBmcm9tICdAa2VwbGVyLmdsL3RhYmxlJztcbmltcG9ydCB7Z2V0QXBwbGljYXRpb25Db25maWd9IGZyb20gJ0BrZXBsZXIuZ2wvdXRpbHMnO1xuXG5pbXBvcnQge2RlZmF1bHQgYXMgdXNlRmV0Y2hKc29ufSBmcm9tICcuLi8uLi9ob29rcy91c2UtZmV0Y2gtcmFzdGVyLXRpbGUtbWV0YWRhdGEnO1xuaW1wb3J0IHtEYXRhc2V0Q3JlYXRpb25BdHRyaWJ1dGVzLCBNZXRhUmVzcG9uc2V9IGZyb20gJy4vY29tbW9uJztcbmltcG9ydCB7SW5wdXRMaWdodH0gZnJvbSAnLi4vLi4vY29tbW9uJztcblxuY29uc3QgVGlsZXNldElucHV0Q29udGFpbmVyID0gc3R5bGVkLmRpdmBcbiAgZGlzcGxheTogZ3JpZDtcbiAgZ3JpZC10ZW1wbGF0ZS1yb3dzOiByZXBlYXQoMywgMWZyKTtcbiAgcm93LWdhcDogMThweDtcbiAgZm9udC1zaXplOiAxMnB4O1xuYDtcblxuY29uc3QgVGlsZXNldElucHV0RGVzY3JpcHRpb24gPSBzdHlsZWQuZGl2YFxuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIGNvbG9yOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLkFaVVJFMjAwfTtcbiAgZm9udC1zaXplOiAxMXB4O1xuYDtcblxuZXhwb3J0IHR5cGUgUmFzdGVyVGlsZXNldE1ldGEgPSB7XG4gIG5hbWU6IHN0cmluZztcbiAgbWV0YWRhdGFVcmw6IHN0cmluZztcbiAgcmFzdGVyVGlsZVNlcnZlclVybHM/OiBzdHJpbmdbXTtcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXREYXRhc2V0QXR0cmlidXRlc0Zyb21SYXN0ZXJUaWxlKHtcbiAgbmFtZSxcbiAgbWV0YWRhdGFVcmwsXG4gIHJhc3RlclRpbGVTZXJ2ZXJVcmxzXG59OiBSYXN0ZXJUaWxlc2V0TWV0YSk6IERhdGFzZXRDcmVhdGlvbkF0dHJpYnV0ZXMge1xuICByZXR1cm4ge1xuICAgIG5hbWUsXG4gICAgdHlwZTogRGF0YXNldFR5cGUuUkFTVEVSX1RJTEUsXG4gICAgbWV0YWRhdGE6IHtcbiAgICAgIG1ldGFkYXRhVXJsLFxuICAgICAgLi4uKHJhc3RlclRpbGVTZXJ2ZXJVcmxzID8ge3Jhc3RlclRpbGVTZXJ2ZXJVcmxzfSA6IHt9KVxuICAgIH1cbiAgfTtcbn1cblxudHlwZSBSYXN0ZXJUaWxlRm9ybVByb3BzID0ge1xuICBzZXRSZXNwb25zZTogKHJlc3BvbnNlOiBNZXRhUmVzcG9uc2UpID0+IHZvaWQ7XG59O1xuXG5jb25zdCBwYXJzZU1ldGFkYXRhQWxsb3dDb2xsZWN0aW9ucyA9IChcbiAgbWV0YWRhdGE6IEpzb25PYmplY3RPckFycmF5IHwgUE1UaWxlc01ldGFkYXRhLFxuICB7bWV0YWRhdGFVcmwsIHJhc3RlclRpbGVUeXBlfToge21ldGFkYXRhVXJsOiBzdHJpbmc7IHJhc3RlclRpbGVUeXBlOiBSYXN0ZXJUaWxlVHlwZX1cbikgPT4ge1xuICByZXR1cm4gcmFzdGVyVGlsZVR5cGUgPT09IFJhc3RlclRpbGVUeXBlLlBNVElMRVNcbiAgICA/IHBhcnNlVmVjdG9yTWV0YWRhdGEobWV0YWRhdGEgYXMgUE1UaWxlc01ldGFkYXRhLCB7XG4gICAgICAgIHRpbGVVcmw6IG1ldGFkYXRhVXJsXG4gICAgICB9KVxuICAgIDogcGFyc2VSYXN0ZXJNZXRhZGF0YShtZXRhZGF0YSBhcyBKc29uT2JqZWN0T3JBcnJheSwge2FsbG93Q29sbGVjdGlvbnM6IHRydWV9KTtcbn07XG5cbmNvbnN0IFJhc3RlclRpbGVGb3JtOiBSZWFjdC5GQzxSYXN0ZXJUaWxlRm9ybVByb3BzPiA9ICh7c2V0UmVzcG9uc2V9KSA9PiB7XG4gIGNvbnN0IFt0aWxlTmFtZSwgc2V0VGlsZU5hbWVdID0gdXNlU3RhdGU8c3RyaW5nPignJyk7XG4gIGNvbnN0IFt0aWxlTmFtZVdhc01vZGlmaWVkLCBzZXRUaWxlTmFtZVdhc01vZGlmaWVkXSA9IHVzZVN0YXRlPGJvb2xlYW4+KGZhbHNlKTtcbiAgY29uc3QgW21ldGFkYXRhVXJsLCBzZXRNZXRhZGF0YVVybF0gPSB1c2VTdGF0ZTxzdHJpbmc+KCcnKTtcbiAgY29uc3QgW3Jhc3RlclRpbGVTZXJ2ZXJVcmxzLCBzZXRSYXN0ZXJUaWxlU2VydmVyVXJsc10gPSB1c2VTdGF0ZTxzdHJpbmc+KFxuICAgIChnZXRBcHBsaWNhdGlvbkNvbmZpZygpLnJhc3RlclNlcnZlclVybHMgfHwgW10pLmpvaW4oJywnKVxuICApO1xuXG4gIC8vIFJlbW92ZSB0cmFpbGluZyBzbGFzaCB0byBwcmV2ZW50IGlzc3VlcyB3aXRoIHJhc3RlciB0aWxlIHNlcnZlcnNcbiAgY29uc3QgY2xlYXJlZE1ldGFkYXRhVXJsID0gbWV0YWRhdGFVcmwuZW5kc1dpdGgoJy8nKSA/IG1ldGFkYXRhVXJsLnNsaWNlKDAsIC0xKSA6IG1ldGFkYXRhVXJsO1xuXG4gIGNvbnN0IG9uVGlsZU5hbWVDaGFuZ2UgPSB1c2VDYWxsYmFjayhcbiAgICAoZXZlbnQ6IFJlYWN0LkNoYW5nZUV2ZW50PEhUTUxJbnB1dEVsZW1lbnQ+KSA9PiB7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgc2V0VGlsZU5hbWVXYXNNb2RpZmllZCh0cnVlKTtcbiAgICAgIHNldFRpbGVOYW1lKGV2ZW50LnRhcmdldC52YWx1ZSk7XG4gICAgfSxcbiAgICBbc2V0VGlsZU5hbWVdXG4gICk7XG5cbiAgY29uc3Qgb25NZXRhZGF0YVVybENoYW5nZSA9IHVzZUNhbGxiYWNrKFxuICAgIChldmVudDogUmVhY3QuQ2hhbmdlRXZlbnQ8SFRNTElucHV0RWxlbWVudD4pID0+IHtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICBjb25zdCB7dmFsdWV9ID0gZXZlbnQudGFyZ2V0O1xuICAgICAgc2V0TWV0YWRhdGFVcmwodmFsdWUpO1xuXG4gICAgICBpZiAoIXRpbGVOYW1lV2FzTW9kaWZpZWQpIHtcbiAgICAgICAgc2V0VGlsZU5hbWUodmFsdWUuc3BsaXQoJy8nKS5maWx0ZXIoQm9vbGVhbikucG9wKCkgfHwgJycpO1xuICAgICAgfVxuICAgIH0sXG4gICAgW3RpbGVOYW1lV2FzTW9kaWZpZWRdXG4gICk7XG5cbiAgY29uc3Qgb25SYXN0ZXJUaWxlU2VydmVyVXJsc0NoYW5nZSA9IHVzZUNhbGxiYWNrKFxuICAgIChldmVudDogUmVhY3QuQ2hhbmdlRXZlbnQ8SFRNTElucHV0RWxlbWVudD4pID0+IHtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICBzZXRSYXN0ZXJUaWxlU2VydmVyVXJscyhldmVudC50YXJnZXQudmFsdWUpO1xuICAgIH0sXG4gICAgW3NldFJhc3RlclRpbGVTZXJ2ZXJVcmxzXVxuICApO1xuXG4gIGNvbnN0IHtcbiAgICBkYXRhOiBtZXRhZGF0YSxcbiAgICBsb2FkaW5nLFxuICAgIGVycm9yOiBtZXRhRXJyb3JcbiAgfSA9IHVzZUZldGNoSnNvbih7XG4gICAgdXJsOiBjbGVhcmVkTWV0YWRhdGFVcmwsXG4gICAgcmFzdGVyVGlsZVR5cGU6IGlzUE1UaWxlc1VybChjbGVhcmVkTWV0YWRhdGFVcmwpID8gUmFzdGVyVGlsZVR5cGUuUE1USUxFUyA6IFJhc3RlclRpbGVUeXBlLlNUQUMsXG4gICAgcHJvY2VzczogcGFyc2VNZXRhZGF0YUFsbG93Q29sbGVjdGlvbnNcbiAgfSk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAodGlsZU5hbWUgJiYgY2xlYXJlZE1ldGFkYXRhVXJsKSB7XG4gICAgICBjb25zdCBwbXRpbGVzVHlwZSA9IG1ldGFkYXRhPy5wbXRpbGVzVHlwZTtcblxuICAgICAgaWYgKHBtdGlsZXNUeXBlID09PSBQTVRpbGVzVHlwZS5NVlQpIHtcbiAgICAgICAgcmV0dXJuIHNldFJlc3BvbnNlKHtcbiAgICAgICAgICBtZXRhZGF0YSxcbiAgICAgICAgICBkYXRhc2V0OiBudWxsLFxuICAgICAgICAgIGxvYWRpbmcsXG4gICAgICAgICAgZXJyb3I6IG5ldyBFcnJvcignRm9yIC5wbXRpbGVzIGluIG12dCBmb3JtYXQsIHBsZWFzZSB1c2UgdGhlIFZlY3RvciBUaWxlIGZvcm0uJylcbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIGxldCBlcnJvciA9IG1ldGFFcnJvcjtcblxuICAgICAgLy8gY2hlY2sgZm9yIHJhc3RlciB0aWxlIHNlcnZlcnMgZm9yIFNUQUMgaXRlbXMgYW5kIGNvbGxlY3Rpb25zXG4gICAgICBsZXQgcmFzdGVyVGlsZVNlcnZlcnM7XG4gICAgICBpZiAoXG4gICAgICAgICFlcnJvclxuICAgICAgICAvLyBXZSBzdGlsbCBuZWVkIHJhc3RlciB0aWxlIHNlcnZlcnMgZm9yIFBNVGlsZXMgd2hlbiB3ZSBwbGFuIHRvIHVzZSBlbGV2YXRpb25cbiAgICAgICkge1xuICAgICAgICByYXN0ZXJUaWxlU2VydmVycyA9IHJhc3RlclRpbGVTZXJ2ZXJVcmxzXG4gICAgICAgICAgLnNwbGl0KCcsJylcbiAgICAgICAgICAubWFwKHNlcnZlciA9PiBzZXJ2ZXIudHJpbSgpKVxuICAgICAgICAgIC5maWx0ZXIoc2VydmVyID0+IHNlcnZlcik7XG4gICAgICAgIGlmIChcbiAgICAgICAgICByYXN0ZXJUaWxlU2VydmVycy5sZW5ndGggPCAxIHx8XG4gICAgICAgICAgIXJhc3RlclRpbGVTZXJ2ZXJzLmV2ZXJ5KHNlcnZlciA9PiB2YWxpZGF0ZVVybChzZXJ2ZXIpKVxuICAgICAgICApIHtcbiAgICAgICAgICBpZiAocG10aWxlc1R5cGUpIHtcbiAgICAgICAgICAgIC8vIEZvciByYXN0ZXIgdGlsZXMgZWxldmF0aW9uIHN1cHBvcnQgaXMgb3B0aW9uYWxcbiAgICAgICAgICAgIC8vIFRPRE8gZGlzcGxheSBhIHdhcm5pbmcsIGJ1dCBub3QgYSBibG9ja2luZyBlcnJvclxuICAgICAgICAgICAgcmFzdGVyVGlsZVNlcnZlcnMgPSBbXTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZXJyb3IgPSBuZXcgRXJyb3IoXG4gICAgICAgICAgICAgICdQcm92aWRlIHZhbGlkIHJhc3RlciB0aWxlIHNlcnZlciB1cmxzIHRvIHN1cHBvcnQgU1RBQyBhbmQgZWxldmF0aW9ucy4nXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBjb25zdCBkYXRhc2V0ID0gZ2V0RGF0YXNldEF0dHJpYnV0ZXNGcm9tUmFzdGVyVGlsZSh7XG4gICAgICAgIG5hbWU6IHRpbGVOYW1lLFxuICAgICAgICBtZXRhZGF0YVVybDogY2xlYXJlZE1ldGFkYXRhVXJsLFxuICAgICAgICByYXN0ZXJUaWxlU2VydmVyVXJsczogcmFzdGVyVGlsZVNlcnZlcnNcbiAgICAgIH0pO1xuXG4gICAgICBzZXRSZXNwb25zZSh7XG4gICAgICAgIG1ldGFkYXRhLFxuICAgICAgICBkYXRhc2V0LFxuICAgICAgICBsb2FkaW5nLFxuICAgICAgICBlcnJvclxuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHNldFJlc3BvbnNlKHtcbiAgICAgICAgbWV0YWRhdGEsXG4gICAgICAgIGRhdGFzZXQ6IG51bGwsXG4gICAgICAgIGxvYWRpbmcsXG4gICAgICAgIGVycm9yOiBtZXRhRXJyb3JcbiAgICAgIH0pO1xuICAgIH1cbiAgfSwgW1xuICAgIG1ldGFkYXRhLFxuICAgIGxvYWRpbmcsXG4gICAgbWV0YUVycm9yLFxuICAgIHRpbGVOYW1lLFxuICAgIGNsZWFyZWRNZXRhZGF0YVVybCxcbiAgICByYXN0ZXJUaWxlU2VydmVyVXJscyxcbiAgICBzZXRSZXNwb25zZVxuICBdKTtcblxuICBjb25zdCBzaG93U2VydmVySW5wdXQgPSBnZXRBcHBsaWNhdGlvbkNvbmZpZygpLnJhc3RlclNlcnZlclNob3dTZXJ2ZXJJbnB1dDtcblxuICByZXR1cm4gKFxuICAgIDxUaWxlc2V0SW5wdXRDb250YWluZXI+XG4gICAgICA8ZGl2PlxuICAgICAgICA8bGFiZWwgaHRtbEZvcj1cInRpbGVzZXQtbmFtZVwiPk5hbWU8L2xhYmVsPlxuICAgICAgICA8SW5wdXRMaWdodFxuICAgICAgICAgIGlkPVwidGlsZXNldC1uYW1lXCJcbiAgICAgICAgICBwbGFjZWhvbGRlcj1cIk5hbWUgeW91ciB0aWxlc2V0XCJcbiAgICAgICAgICB2YWx1ZT17dGlsZU5hbWV9XG4gICAgICAgICAgb25DaGFuZ2U9e29uVGlsZU5hbWVDaGFuZ2V9XG4gICAgICAgIC8+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXY+XG4gICAgICAgIDxsYWJlbCBodG1sRm9yPVwidGlsZS1tZXRhZGF0YVwiPlRpbGVzZXQgbWV0YWRhdGEgVVJMPC9sYWJlbD5cbiAgICAgICAgPElucHV0TGlnaHRcbiAgICAgICAgICBpZD1cInRpbGUtbWV0YWRhdGFcIlxuICAgICAgICAgIHBsYWNlaG9sZGVyPVwiVGlsZXNldCBtZXRhZGF0YSBVUkxcIlxuICAgICAgICAgIHZhbHVlPXttZXRhZGF0YVVybCA/PyB1bmRlZmluZWR9XG4gICAgICAgICAgb25DaGFuZ2U9e29uTWV0YWRhdGFVcmxDaGFuZ2V9XG4gICAgICAgIC8+XG4gICAgICAgIDxUaWxlc2V0SW5wdXREZXNjcmlwdGlvbj5cbiAgICAgICAgICBTdXBwb3J0cyByYXN0ZXIgLnBtdGlsZXMuIExpbWl0ZWQgc3VwcG9ydCBmb3IgU1RBQyBJdGVtcyBhbmQgQ29sbGVjdGlvbnMuXG4gICAgICAgIDwvVGlsZXNldElucHV0RGVzY3JpcHRpb24+XG4gICAgICA8L2Rpdj5cbiAgICAgIHtzaG93U2VydmVySW5wdXQgJiYgKFxuICAgICAgICA8ZGl2PlxuICAgICAgICAgIDxsYWJlbCBodG1sRm9yPVwidGlsZXNldC1yYXN0ZXItc2VydmVyc1wiPlJhc3RlciB0aWxlIHNlcnZlcnM8L2xhYmVsPlxuICAgICAgICAgIDxJbnB1dExpZ2h0XG4gICAgICAgICAgICBpZD1cInRpbGVzZXQtcmFzdGVyLXNlcnZlcnNcIlxuICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJSYXN0ZXIgdGlsZSBzZXJ2ZXJzIChzZXBhcmF0ZWQgYnkgY29tbWFzKVwiXG4gICAgICAgICAgICB2YWx1ZT17cmFzdGVyVGlsZVNlcnZlclVybHN9XG4gICAgICAgICAgICBvbkNoYW5nZT17b25SYXN0ZXJUaWxlU2VydmVyVXJsc0NoYW5nZX1cbiAgICAgICAgICAvPlxuICAgICAgICAgIDxUaWxlc2V0SW5wdXREZXNjcmlwdGlvbj5cbiAgICAgICAgICAgIFJhc3RlciB0aWxlIHNlcnZlciBVUkxzIGZvciBDbG91ZCBPcHRpbWl6ZWQgR2VvVElGRiB0aWxlc2V0cyBhbmQgZWxldmF0aW9uLlxuICAgICAgICAgIDwvVGlsZXNldElucHV0RGVzY3JpcHRpb24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgKX1cbiAgICA8L1RpbGVzZXRJbnB1dENvbnRhaW5lcj5cbiAgKTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFJhc3RlclRpbGVGb3JtO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7QUFHQSxJQUFBQSxNQUFBLEdBQUFDLHVCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyxpQkFBQSxHQUFBQyxzQkFBQSxDQUFBRixPQUFBO0FBSUEsSUFBQUcsWUFBQSxHQUFBSCxPQUFBO0FBQ0EsSUFBQUksVUFBQSxHQUFBSixPQUFBO0FBRUEsSUFBQUssTUFBQSxHQUFBTCxPQUFBO0FBQ0EsSUFBQU0sTUFBQSxHQUFBTixPQUFBO0FBRUEsSUFBQU8sMkJBQUEsR0FBQUwsc0JBQUEsQ0FBQUYsT0FBQTtBQUVBLElBQUFRLE9BQUEsR0FBQVIsT0FBQTtBQUF3QyxJQUFBUyxlQUFBLEVBQUFDLGdCQUFBLEVBaEJ4QztBQUNBO0FBQUEsU0FBQUMseUJBQUFDLENBQUEsNkJBQUFDLE9BQUEsbUJBQUFDLENBQUEsT0FBQUQsT0FBQSxJQUFBRSxDQUFBLE9BQUFGLE9BQUEsWUFBQUYsd0JBQUEsWUFBQUEseUJBQUFDLENBQUEsV0FBQUEsQ0FBQSxHQUFBRyxDQUFBLEdBQUFELENBQUEsS0FBQUYsQ0FBQTtBQUFBLFNBQUFiLHdCQUFBYSxDQUFBLEVBQUFFLENBQUEsU0FBQUEsQ0FBQSxJQUFBRixDQUFBLElBQUFBLENBQUEsQ0FBQUksVUFBQSxTQUFBSixDQUFBLGVBQUFBLENBQUEsZ0JBQUFLLE9BQUEsQ0FBQUwsQ0FBQSwwQkFBQUEsQ0FBQSxzQkFBQUEsQ0FBQSxRQUFBRyxDQUFBLEdBQUFKLHdCQUFBLENBQUFHLENBQUEsT0FBQUMsQ0FBQSxJQUFBQSxDQUFBLENBQUFHLEdBQUEsQ0FBQU4sQ0FBQSxVQUFBRyxDQUFBLENBQUFJLEdBQUEsQ0FBQVAsQ0FBQSxPQUFBUSxDQUFBLEtBQUFDLFNBQUEsVUFBQUMsQ0FBQSxHQUFBQyxNQUFBLENBQUFDLGNBQUEsSUFBQUQsTUFBQSxDQUFBRSx3QkFBQSxXQUFBQyxDQUFBLElBQUFkLENBQUEsb0JBQUFjLENBQUEsT0FBQUMsY0FBQSxDQUFBQyxJQUFBLENBQUFoQixDQUFBLEVBQUFjLENBQUEsU0FBQUcsQ0FBQSxHQUFBUCxDQUFBLEdBQUFDLE1BQUEsQ0FBQUUsd0JBQUEsQ0FBQWIsQ0FBQSxFQUFBYyxDQUFBLFVBQUFHLENBQUEsS0FBQUEsQ0FBQSxDQUFBVixHQUFBLElBQUFVLENBQUEsQ0FBQUMsR0FBQSxJQUFBUCxNQUFBLENBQUFDLGNBQUEsQ0FBQUosQ0FBQSxFQUFBTSxDQUFBLEVBQUFHLENBQUEsSUFBQVQsQ0FBQSxDQUFBTSxDQUFBLElBQUFkLENBQUEsQ0FBQWMsQ0FBQSxZQUFBTixDQUFBLGNBQUFSLENBQUEsRUFBQUcsQ0FBQSxJQUFBQSxDQUFBLENBQUFlLEdBQUEsQ0FBQWxCLENBQUEsRUFBQVEsQ0FBQSxHQUFBQSxDQUFBO0FBQUEsU0FBQVcsUUFBQW5CLENBQUEsRUFBQUUsQ0FBQSxRQUFBQyxDQUFBLEdBQUFRLE1BQUEsQ0FBQVMsSUFBQSxDQUFBcEIsQ0FBQSxPQUFBVyxNQUFBLENBQUFVLHFCQUFBLFFBQUFDLENBQUEsR0FBQVgsTUFBQSxDQUFBVSxxQkFBQSxDQUFBckIsQ0FBQSxHQUFBRSxDQUFBLEtBQUFvQixDQUFBLEdBQUFBLENBQUEsQ0FBQUMsTUFBQSxXQUFBckIsQ0FBQSxXQUFBUyxNQUFBLENBQUFFLHdCQUFBLENBQUFiLENBQUEsRUFBQUUsQ0FBQSxFQUFBc0IsVUFBQSxPQUFBckIsQ0FBQSxDQUFBc0IsSUFBQSxDQUFBQyxLQUFBLENBQUF2QixDQUFBLEVBQUFtQixDQUFBLFlBQUFuQixDQUFBO0FBQUEsU0FBQXdCLGNBQUEzQixDQUFBLGFBQUFFLENBQUEsTUFBQUEsQ0FBQSxHQUFBMEIsU0FBQSxDQUFBQyxNQUFBLEVBQUEzQixDQUFBLFVBQUFDLENBQUEsV0FBQXlCLFNBQUEsQ0FBQTFCLENBQUEsSUFBQTBCLFNBQUEsQ0FBQTFCLENBQUEsUUFBQUEsQ0FBQSxPQUFBaUIsT0FBQSxDQUFBUixNQUFBLENBQUFSLENBQUEsT0FBQTJCLE9BQUEsV0FBQTVCLENBQUEsUUFBQTZCLGdCQUFBLGFBQUEvQixDQUFBLEVBQUFFLENBQUEsRUFBQUMsQ0FBQSxDQUFBRCxDQUFBLFNBQUFTLE1BQUEsQ0FBQXFCLHlCQUFBLEdBQUFyQixNQUFBLENBQUFzQixnQkFBQSxDQUFBakMsQ0FBQSxFQUFBVyxNQUFBLENBQUFxQix5QkFBQSxDQUFBN0IsQ0FBQSxLQUFBZ0IsT0FBQSxDQUFBUixNQUFBLENBQUFSLENBQUEsR0FBQTJCLE9BQUEsV0FBQTVCLENBQUEsSUFBQVMsTUFBQSxDQUFBQyxjQUFBLENBQUFaLENBQUEsRUFBQUUsQ0FBQSxFQUFBUyxNQUFBLENBQUFFLHdCQUFBLENBQUFWLENBQUEsRUFBQUQsQ0FBQSxpQkFBQUYsQ0FBQTtBQWlCQSxJQUFNa0MscUJBQXFCLEdBQUdDLDRCQUFNLENBQUNDLEdBQUcsQ0FBQXZDLGVBQUEsS0FBQUEsZUFBQSxPQUFBd0MsdUJBQUEscUhBS3ZDO0FBRUQsSUFBTUMsdUJBQXVCLEdBQUdILDRCQUFNLENBQUNDLEdBQUcsQ0FBQXRDLGdCQUFBLEtBQUFBLGdCQUFBLE9BQUF1Qyx1QkFBQSxrRkFFL0IsVUFBQUUsS0FBSztFQUFBLE9BQUlBLEtBQUssQ0FBQ0MsS0FBSyxDQUFDQyxRQUFRO0FBQUEsRUFFdkM7QUFRTSxTQUFTQyxrQ0FBa0NBLENBQUFDLElBQUEsRUFJRDtFQUFBLElBSC9DQyxJQUFJLEdBQUFELElBQUEsQ0FBSkMsSUFBSTtJQUNKQyxXQUFXLEdBQUFGLElBQUEsQ0FBWEUsV0FBVztJQUNYQyxvQkFBb0IsR0FBQUgsSUFBQSxDQUFwQkcsb0JBQW9CO0VBRXBCLE9BQU87SUFDTEYsSUFBSSxFQUFKQSxJQUFJO0lBQ0pHLElBQUksRUFBRUMsc0JBQVcsQ0FBQ0MsV0FBVztJQUM3QkMsUUFBUSxFQUFBdkIsYUFBQTtNQUNOa0IsV0FBVyxFQUFYQTtJQUFXLEdBQ1BDLG9CQUFvQixHQUFHO01BQUNBLG9CQUFvQixFQUFwQkE7SUFBb0IsQ0FBQyxHQUFHLENBQUMsQ0FBQztFQUUxRCxDQUFDO0FBQ0g7QUFNQSxJQUFNSyw2QkFBNkIsR0FBRyxTQUFoQ0EsNkJBQTZCQSxDQUNqQ0QsUUFBNkMsRUFBQUUsS0FBQSxFQUUxQztFQUFBLElBREZQLFdBQVcsR0FBQU8sS0FBQSxDQUFYUCxXQUFXO0lBQUVRLGNBQWMsR0FBQUQsS0FBQSxDQUFkQyxjQUFjO0VBRTVCLE9BQU9BLGNBQWMsS0FBS0MseUJBQWMsQ0FBQ0MsT0FBTyxHQUM1QyxJQUFBQywwQkFBbUIsRUFBQ04sUUFBUSxFQUFxQjtJQUMvQ08sT0FBTyxFQUFFWjtFQUNYLENBQUMsQ0FBQyxHQUNGLElBQUFhLDBCQUFtQixFQUFDUixRQUFRLEVBQXVCO0lBQUNTLGdCQUFnQixFQUFFO0VBQUksQ0FBQyxDQUFDO0FBQ2xGLENBQUM7QUFFRCxJQUFNQyxjQUE2QyxHQUFHLFNBQWhEQSxjQUE2Q0EsQ0FBQUMsS0FBQSxFQUFzQjtFQUFBLElBQWpCQyxXQUFXLEdBQUFELEtBQUEsQ0FBWEMsV0FBVztFQUNqRSxJQUFBQyxTQUFBLEdBQWdDLElBQUFDLGVBQVEsRUFBUyxFQUFFLENBQUM7SUFBQUMsVUFBQSxPQUFBQyxlQUFBLGFBQUFILFNBQUE7SUFBN0NJLFFBQVEsR0FBQUYsVUFBQTtJQUFFRyxXQUFXLEdBQUFILFVBQUE7RUFDNUIsSUFBQUksVUFBQSxHQUFzRCxJQUFBTCxlQUFRLEVBQVUsS0FBSyxDQUFDO0lBQUFNLFVBQUEsT0FBQUosZUFBQSxhQUFBRyxVQUFBO0lBQXZFRSxtQkFBbUIsR0FBQUQsVUFBQTtJQUFFRSxzQkFBc0IsR0FBQUYsVUFBQTtFQUNsRCxJQUFBRyxVQUFBLEdBQXNDLElBQUFULGVBQVEsRUFBUyxFQUFFLENBQUM7SUFBQVUsVUFBQSxPQUFBUixlQUFBLGFBQUFPLFVBQUE7SUFBbkQ1QixXQUFXLEdBQUE2QixVQUFBO0lBQUVDLGNBQWMsR0FBQUQsVUFBQTtFQUNsQyxJQUFBRSxVQUFBLEdBQXdELElBQUFaLGVBQVEsRUFDOUQsQ0FBQyxJQUFBYSwyQkFBb0IsRUFBQyxDQUFDLENBQUNDLGdCQUFnQixJQUFJLEVBQUUsRUFBRUMsSUFBSSxDQUFDLEdBQUcsQ0FDMUQsQ0FBQztJQUFBQyxVQUFBLE9BQUFkLGVBQUEsYUFBQVUsVUFBQTtJQUZNOUIsb0JBQW9CLEdBQUFrQyxVQUFBO0lBQUVDLHVCQUF1QixHQUFBRCxVQUFBOztFQUlwRDtFQUNBLElBQU1FLGtCQUFrQixHQUFHckMsV0FBVyxDQUFDc0MsUUFBUSxDQUFDLEdBQUcsQ0FBQyxHQUFHdEMsV0FBVyxDQUFDdUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHdkMsV0FBVztFQUU3RixJQUFNd0MsZ0JBQWdCLEdBQUcsSUFBQUMsa0JBQVcsRUFDbEMsVUFBQ0MsS0FBMEMsRUFBSztJQUM5Q0EsS0FBSyxDQUFDQyxjQUFjLENBQUMsQ0FBQztJQUN0QmhCLHNCQUFzQixDQUFDLElBQUksQ0FBQztJQUM1QkosV0FBVyxDQUFDbUIsS0FBSyxDQUFDRSxNQUFNLENBQUNDLEtBQUssQ0FBQztFQUNqQyxDQUFDLEVBQ0QsQ0FBQ3RCLFdBQVcsQ0FDZCxDQUFDO0VBRUQsSUFBTXVCLG1CQUFtQixHQUFHLElBQUFMLGtCQUFXLEVBQ3JDLFVBQUNDLEtBQTBDLEVBQUs7SUFDOUNBLEtBQUssQ0FBQ0MsY0FBYyxDQUFDLENBQUM7SUFDdEIsSUFBT0UsS0FBSyxHQUFJSCxLQUFLLENBQUNFLE1BQU0sQ0FBckJDLEtBQUs7SUFDWmYsY0FBYyxDQUFDZSxLQUFLLENBQUM7SUFFckIsSUFBSSxDQUFDbkIsbUJBQW1CLEVBQUU7TUFDeEJILFdBQVcsQ0FBQ3NCLEtBQUssQ0FBQ0UsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDckUsTUFBTSxDQUFDc0UsT0FBTyxDQUFDLENBQUNDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQzNEO0VBQ0YsQ0FBQyxFQUNELENBQUN2QixtQkFBbUIsQ0FDdEIsQ0FBQztFQUVELElBQU13Qiw0QkFBNEIsR0FBRyxJQUFBVCxrQkFBVyxFQUM5QyxVQUFDQyxLQUEwQyxFQUFLO0lBQzlDQSxLQUFLLENBQUNDLGNBQWMsQ0FBQyxDQUFDO0lBQ3RCUCx1QkFBdUIsQ0FBQ00sS0FBSyxDQUFDRSxNQUFNLENBQUNDLEtBQUssQ0FBQztFQUM3QyxDQUFDLEVBQ0QsQ0FBQ1QsdUJBQXVCLENBQzFCLENBQUM7RUFFRCxJQUFBZSxhQUFBLEdBSUksSUFBQUMsc0NBQVksRUFBQztNQUNmQyxHQUFHLEVBQUVoQixrQkFBa0I7TUFDdkI3QixjQUFjLEVBQUUsSUFBQThDLHlCQUFZLEVBQUNqQixrQkFBa0IsQ0FBQyxHQUFHNUIseUJBQWMsQ0FBQ0MsT0FBTyxHQUFHRCx5QkFBYyxDQUFDOEMsSUFBSTtNQUMvRkMsT0FBTyxFQUFFbEQ7SUFDWCxDQUFDLENBQUM7SUFQTUQsUUFBUSxHQUFBOEMsYUFBQSxDQUFkTSxJQUFJO0lBQ0pDLE9BQU8sR0FBQVAsYUFBQSxDQUFQTyxPQUFPO0lBQ0FDLFNBQVMsR0FBQVIsYUFBQSxDQUFoQlMsS0FBSztFQU9QLElBQUFDLGdCQUFTLEVBQUMsWUFBTTtJQUNkLElBQUl2QyxRQUFRLElBQUllLGtCQUFrQixFQUFFO01BQ2xDLElBQU15QixXQUFXLEdBQUd6RCxRQUFRLGFBQVJBLFFBQVEsdUJBQVJBLFFBQVEsQ0FBRXlELFdBQVc7TUFFekMsSUFBSUEsV0FBVyxLQUFLQyxzQkFBVyxDQUFDQyxHQUFHLEVBQUU7UUFDbkMsT0FBTy9DLFdBQVcsQ0FBQztVQUNqQlosUUFBUSxFQUFSQSxRQUFRO1VBQ1I0RCxPQUFPLEVBQUUsSUFBSTtVQUNiUCxPQUFPLEVBQVBBLE9BQU87VUFDUEUsS0FBSyxFQUFFLElBQUlNLEtBQUssQ0FBQyw4REFBOEQ7UUFDakYsQ0FBQyxDQUFDO01BQ0o7TUFFQSxJQUFJTixLQUFLLEdBQUdELFNBQVM7O01BRXJCO01BQ0EsSUFBSVEsaUJBQWlCO01BQ3JCLElBQ0UsQ0FBQ1A7TUFDRDtNQUFBLEVBQ0E7UUFDQU8saUJBQWlCLEdBQUdsRSxvQkFBb0IsQ0FDckM4QyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQ1ZxQixHQUFHLENBQUMsVUFBQUMsTUFBTTtVQUFBLE9BQUlBLE1BQU0sQ0FBQ0MsSUFBSSxDQUFDLENBQUM7UUFBQSxFQUFDLENBQzVCNUYsTUFBTSxDQUFDLFVBQUEyRixNQUFNO1VBQUEsT0FBSUEsTUFBTTtRQUFBLEVBQUM7UUFDM0IsSUFDRUYsaUJBQWlCLENBQUNuRixNQUFNLEdBQUcsQ0FBQyxJQUM1QixDQUFDbUYsaUJBQWlCLENBQUNJLEtBQUssQ0FBQyxVQUFBRixNQUFNO1VBQUEsT0FBSSxJQUFBRyx3QkFBVyxFQUFDSCxNQUFNLENBQUM7UUFBQSxFQUFDLEVBQ3ZEO1VBQ0EsSUFBSVAsV0FBVyxFQUFFO1lBQ2Y7WUFDQTtZQUNBSyxpQkFBaUIsR0FBRyxFQUFFO1VBQ3hCLENBQUMsTUFBTTtZQUNMUCxLQUFLLEdBQUcsSUFBSU0sS0FBSyxDQUNmLHVFQUNGLENBQUM7VUFDSDtRQUNGO01BQ0Y7TUFFQSxJQUFNRCxPQUFPLEdBQUdwRSxrQ0FBa0MsQ0FBQztRQUNqREUsSUFBSSxFQUFFdUIsUUFBUTtRQUNkdEIsV0FBVyxFQUFFcUMsa0JBQWtCO1FBQy9CcEMsb0JBQW9CLEVBQUVrRTtNQUN4QixDQUFDLENBQUM7TUFFRmxELFdBQVcsQ0FBQztRQUNWWixRQUFRLEVBQVJBLFFBQVE7UUFDUjRELE9BQU8sRUFBUEEsT0FBTztRQUNQUCxPQUFPLEVBQVBBLE9BQU87UUFDUEUsS0FBSyxFQUFMQTtNQUNGLENBQUMsQ0FBQztJQUNKLENBQUMsTUFBTTtNQUNMM0MsV0FBVyxDQUFDO1FBQ1ZaLFFBQVEsRUFBUkEsUUFBUTtRQUNSNEQsT0FBTyxFQUFFLElBQUk7UUFDYlAsT0FBTyxFQUFQQSxPQUFPO1FBQ1BFLEtBQUssRUFBRUQ7TUFDVCxDQUFDLENBQUM7SUFDSjtFQUNGLENBQUMsRUFBRSxDQUNEdEQsUUFBUSxFQUNScUQsT0FBTyxFQUNQQyxTQUFTLEVBQ1RyQyxRQUFRLEVBQ1JlLGtCQUFrQixFQUNsQnBDLG9CQUFvQixFQUNwQmdCLFdBQVcsQ0FDWixDQUFDO0VBRUYsSUFBTXdELGVBQWUsR0FBRyxJQUFBekMsMkJBQW9CLEVBQUMsQ0FBQyxDQUFDMEMsMkJBQTJCO0VBRTFFLG9CQUNFckksTUFBQSxZQUFBc0ksYUFBQSxDQUFDdEYscUJBQXFCLHFCQUNwQmhELE1BQUEsWUFBQXNJLGFBQUEsMkJBQ0V0SSxNQUFBLFlBQUFzSSxhQUFBO0lBQU9DLE9BQU8sRUFBQztFQUFjLEdBQUMsTUFBVyxDQUFDLGVBQzFDdkksTUFBQSxZQUFBc0ksYUFBQSxDQUFDNUgsT0FBQSxDQUFBOEgsVUFBVTtJQUNUQyxFQUFFLEVBQUMsY0FBYztJQUNqQkMsV0FBVyxFQUFDLG1CQUFtQjtJQUMvQmxDLEtBQUssRUFBRXZCLFFBQVM7SUFDaEIwRCxRQUFRLEVBQUV4QztFQUFpQixDQUM1QixDQUNFLENBQUMsZUFDTm5HLE1BQUEsWUFBQXNJLGFBQUEsMkJBQ0V0SSxNQUFBLFlBQUFzSSxhQUFBO0lBQU9DLE9BQU8sRUFBQztFQUFlLEdBQUMsc0JBQTJCLENBQUMsZUFDM0R2SSxNQUFBLFlBQUFzSSxhQUFBLENBQUM1SCxPQUFBLENBQUE4SCxVQUFVO0lBQ1RDLEVBQUUsRUFBQyxlQUFlO0lBQ2xCQyxXQUFXLEVBQUMsc0JBQXNCO0lBQ2xDbEMsS0FBSyxFQUFFN0MsV0FBVyxhQUFYQSxXQUFXLGNBQVhBLFdBQVcsR0FBSWlGLFNBQVU7SUFDaENELFFBQVEsRUFBRWxDO0VBQW9CLENBQy9CLENBQUMsZUFDRnpHLE1BQUEsWUFBQXNJLGFBQUEsQ0FBQ2xGLHVCQUF1QixRQUFDLDJFQUVBLENBQ3RCLENBQUMsRUFDTGdGLGVBQWUsaUJBQ2RwSSxNQUFBLFlBQUFzSSxhQUFBLDJCQUNFdEksTUFBQSxZQUFBc0ksYUFBQTtJQUFPQyxPQUFPLEVBQUM7RUFBd0IsR0FBQyxxQkFBMEIsQ0FBQyxlQUNuRXZJLE1BQUEsWUFBQXNJLGFBQUEsQ0FBQzVILE9BQUEsQ0FBQThILFVBQVU7SUFDVEMsRUFBRSxFQUFDLHdCQUF3QjtJQUMzQkMsV0FBVyxFQUFDLDJDQUEyQztJQUN2RGxDLEtBQUssRUFBRTVDLG9CQUFxQjtJQUM1QitFLFFBQVEsRUFBRTlCO0VBQTZCLENBQ3hDLENBQUMsZUFDRjdHLE1BQUEsWUFBQXNJLGFBQUEsQ0FBQ2xGLHVCQUF1QixRQUFDLDZFQUVBLENBQ3RCLENBRWMsQ0FBQztBQUU1QixDQUFDO0FBQUMsSUFBQXlGLFFBQUEsR0FBQUMsT0FBQSxjQUVhcEUsY0FBYyIsImlnbm9yZUxpc3QiOltdfQ==
@@ -0,0 +1,7 @@
1
+ import React from 'react';
2
+ import { MetaResponse } from './common';
3
+ declare type WMSTileFormProps = {
4
+ setResponse: (response: MetaResponse) => void;
5
+ };
6
+ declare const TilesetWMSForm: React.FC<WMSTileFormProps>;
7
+ export default TilesetWMSForm;
@@ -0,0 +1,163 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ var _typeof = require("@babel/runtime/helpers/typeof");
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports["default"] = void 0;
9
+ var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
10
+ var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
11
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
12
+ var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
13
+ var _react = _interopRequireWildcard(require("react"));
14
+ var _styledComponents = _interopRequireDefault(require("styled-components"));
15
+ var _commonUtils = require("@kepler.gl/common-utils");
16
+ var _constants = require("@kepler.gl/constants");
17
+ var _table = require("@kepler.gl/table");
18
+ var _common = require("../../common");
19
+ var _templateObject, _templateObject2, _templateObject3; // SPDX-License-Identifier: MIT
20
+ // Copyright contributors to the kepler.gl project
21
+ function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
22
+ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { "default": e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n["default"] = e, t && t.set(e, n), n; }
23
+ var TilesetInputContainer = _styledComponents["default"].div(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n display: grid;\n grid-template-rows: repeat(3, auto);\n row-gap: 18px;\n font-size: 12px;\n"])));
24
+ var TilesetInputDescription = _styledComponents["default"].div(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2["default"])(["\n text-align: center;\n color: ", ";\n font-size: 11px;\n"])), function (props) {
25
+ return props.theme.AZURE200;
26
+ });
27
+ var ExampleUrlsContainer = _styledComponents["default"].div(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2["default"])(["\n text-align: left;\n color: ", ";\n font-size: 11px;\n\n .example-url {\n margin-top: 8px;\n display: block;\n }\n"])), function (props) {
28
+ return props.theme.AZURE200;
29
+ });
30
+ var TilesetWMSForm = function TilesetWMSForm(_ref) {
31
+ var setResponse = _ref.setResponse;
32
+ var _useState = (0, _react.useState)(''),
33
+ _useState2 = (0, _slicedToArray2["default"])(_useState, 2),
34
+ layerName = _useState2[0],
35
+ setLayerName = _useState2[1];
36
+ var _useState3 = (0, _react.useState)(''),
37
+ _useState4 = (0, _slicedToArray2["default"])(_useState3, 2),
38
+ wmsUrl = _useState4[0],
39
+ setWmsUrl = _useState4[1];
40
+ var _useState5 = (0, _react.useState)(false),
41
+ _useState6 = (0, _slicedToArray2["default"])(_useState5, 2),
42
+ loading = _useState6[0],
43
+ setLoading = _useState6[1];
44
+ var _useState7 = (0, _react.useState)(null),
45
+ _useState8 = (0, _slicedToArray2["default"])(_useState7, 2),
46
+ error = _useState8[0],
47
+ setError = _useState8[1];
48
+ var _useState9 = (0, _react.useState)(null),
49
+ _useState10 = (0, _slicedToArray2["default"])(_useState9, 2),
50
+ wmsData = _useState10[0],
51
+ setWMSData = _useState10[1];
52
+ var onLayerNameChange = (0, _react.useCallback)(function (event) {
53
+ event.preventDefault();
54
+ setLayerName(event.target.value);
55
+ }, [setLayerName]);
56
+ var onWmsUrlChange = (0, _react.useCallback)( /*#__PURE__*/function () {
57
+ var _ref2 = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee(event) {
58
+ var newWmsUrl, data, datasetMetadata, serviceTitle;
59
+ return _regenerator["default"].wrap(function _callee$(_context) {
60
+ while (1) switch (_context.prev = _context.next) {
61
+ case 0:
62
+ event.preventDefault();
63
+ newWmsUrl = event.target.value;
64
+ setWmsUrl(newWmsUrl);
65
+ if ((0, _commonUtils.validateUrl)(newWmsUrl)) {
66
+ _context.next = 6;
67
+ break;
68
+ }
69
+ setWMSData(null);
70
+ return _context.abrupt("return");
71
+ case 6:
72
+ _context.prev = 6;
73
+ setLoading(true);
74
+ setError(null);
75
+ _context.next = 11;
76
+ return (0, _table.getWMSCapabilities)(newWmsUrl);
77
+ case 11:
78
+ data = _context.sent;
79
+ datasetMetadata = (0, _table.wmsCapabilitiesToDatasetMetadata)(data); // Extract name or title from GetCapabilities response
80
+ serviceTitle = (data === null || data === void 0 ? void 0 : data.title) || (data === null || data === void 0 ? void 0 : data.name);
81
+ if (serviceTitle && !layerName) {
82
+ setLayerName(serviceTitle);
83
+ }
84
+ setWMSData({
85
+ metadata: data,
86
+ layers: datasetMetadata.layers,
87
+ version: datasetMetadata.version
88
+ });
89
+ _context.next = 22;
90
+ break;
91
+ case 18:
92
+ _context.prev = 18;
93
+ _context.t0 = _context["catch"](6);
94
+ setError(_context.t0 instanceof Error ? _context.t0 : new Error('Unknown error'));
95
+ setWMSData(null);
96
+ case 22:
97
+ _context.prev = 22;
98
+ setLoading(false);
99
+ return _context.finish(22);
100
+ case 25:
101
+ case "end":
102
+ return _context.stop();
103
+ }
104
+ }, _callee, null, [[6, 18, 22, 25]]);
105
+ }));
106
+ return function (_x) {
107
+ return _ref2.apply(this, arguments);
108
+ };
109
+ }(), [layerName]);
110
+ (0, _react.useEffect)(function () {
111
+ if (layerName && wmsUrl) {
112
+ var _wmsData$metadata;
113
+ var dataset = {
114
+ name: layerName,
115
+ type: _constants.DatasetType.WMS_TILE,
116
+ metadata: {
117
+ type: _constants.REMOTE_TILE,
118
+ remoteTileFormat: _constants.RemoteTileFormat.WMS,
119
+ tilesetDataUrl: wmsUrl,
120
+ tilesetMetadataUrl: "".concat(wmsUrl, "?service=WMS&request=GetCapabilities"),
121
+ layers: (wmsData === null || wmsData === void 0 ? void 0 : wmsData.layers) || [],
122
+ wmsVersion: (wmsData === null || wmsData === void 0 ? void 0 : wmsData.version) || '1.3.0'
123
+ }
124
+ };
125
+ setResponse({
126
+ metadata: (_wmsData$metadata = wmsData === null || wmsData === void 0 ? void 0 : wmsData.metadata) !== null && _wmsData$metadata !== void 0 ? _wmsData$metadata : null,
127
+ dataset: dataset,
128
+ loading: loading,
129
+ error: error
130
+ });
131
+ } else {
132
+ setResponse({
133
+ metadata: null,
134
+ dataset: null,
135
+ loading: loading,
136
+ error: error
137
+ });
138
+ }
139
+ }, [setResponse, layerName, wmsUrl, wmsData, loading, error]);
140
+ return /*#__PURE__*/_react["default"].createElement(TilesetInputContainer, null, /*#__PURE__*/_react["default"].createElement("div", null, /*#__PURE__*/_react["default"].createElement("label", {
141
+ htmlFor: "layer-name"
142
+ }, "Name"), /*#__PURE__*/_react["default"].createElement(_common.InputLight, {
143
+ id: "layer-name",
144
+ placeholder: "Name your WMS layer",
145
+ value: layerName,
146
+ onChange: onLayerNameChange
147
+ })), /*#__PURE__*/_react["default"].createElement("div", null, /*#__PURE__*/_react["default"].createElement("label", {
148
+ htmlFor: "wms-url"
149
+ }, "WMS URL"), /*#__PURE__*/_react["default"].createElement(_common.InputLight, {
150
+ id: "wms-url",
151
+ placeholder: "Enter WMS URL",
152
+ value: wmsUrl,
153
+ onChange: onWmsUrlChange
154
+ }), /*#__PURE__*/_react["default"].createElement(TilesetInputDescription, null, "Provide a valid WMS service URL.")), /*#__PURE__*/_react["default"].createElement("div", null, /*#__PURE__*/_react["default"].createElement(TilesetInputDescription, null, "For example, try a public WMS URL:"), /*#__PURE__*/_react["default"].createElement(ExampleUrlsContainer, null, /*#__PURE__*/_react["default"].createElement("div", {
155
+ className: "example-url"
156
+ }, "\u2022 https://ows.terrestris.de/osm/service"), /*#__PURE__*/_react["default"].createElement("div", {
157
+ className: "example-url"
158
+ }, "\u2022 https://opengeo.ncep.noaa.gov/geoserver/conus/conus_cref_qcd/ows"), /*#__PURE__*/_react["default"].createElement("div", {
159
+ className: "example-url"
160
+ }, "\u2022 https://gibs.earthdata.nasa.gov/wms/epsg4326/best/wms.cgi"))));
161
+ };
162
+ var _default = exports["default"] = TilesetWMSForm;
163
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfc3R5bGVkQ29tcG9uZW50cyIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfY29tbW9uVXRpbHMiLCJfY29uc3RhbnRzIiwiX3RhYmxlIiwiX2NvbW1vbiIsIl90ZW1wbGF0ZU9iamVjdCIsIl90ZW1wbGF0ZU9iamVjdDIiLCJfdGVtcGxhdGVPYmplY3QzIiwiX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlIiwiZSIsIldlYWtNYXAiLCJyIiwidCIsIl9fZXNNb2R1bGUiLCJfdHlwZW9mIiwiaGFzIiwiZ2V0IiwibiIsIl9fcHJvdG9fXyIsImEiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsInUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJpIiwic2V0IiwiVGlsZXNldElucHV0Q29udGFpbmVyIiwic3R5bGVkIiwiZGl2IiwiX3RhZ2dlZFRlbXBsYXRlTGl0ZXJhbDIiLCJUaWxlc2V0SW5wdXREZXNjcmlwdGlvbiIsInByb3BzIiwidGhlbWUiLCJBWlVSRTIwMCIsIkV4YW1wbGVVcmxzQ29udGFpbmVyIiwiVGlsZXNldFdNU0Zvcm0iLCJfcmVmIiwic2V0UmVzcG9uc2UiLCJfdXNlU3RhdGUiLCJ1c2VTdGF0ZSIsIl91c2VTdGF0ZTIiLCJfc2xpY2VkVG9BcnJheTIiLCJsYXllck5hbWUiLCJzZXRMYXllck5hbWUiLCJfdXNlU3RhdGUzIiwiX3VzZVN0YXRlNCIsIndtc1VybCIsInNldFdtc1VybCIsIl91c2VTdGF0ZTUiLCJfdXNlU3RhdGU2IiwibG9hZGluZyIsInNldExvYWRpbmciLCJfdXNlU3RhdGU3IiwiX3VzZVN0YXRlOCIsImVycm9yIiwic2V0RXJyb3IiLCJfdXNlU3RhdGU5IiwiX3VzZVN0YXRlMTAiLCJ3bXNEYXRhIiwic2V0V01TRGF0YSIsIm9uTGF5ZXJOYW1lQ2hhbmdlIiwidXNlQ2FsbGJhY2siLCJldmVudCIsInByZXZlbnREZWZhdWx0IiwidGFyZ2V0IiwidmFsdWUiLCJvbldtc1VybENoYW5nZSIsIl9yZWYyIiwiX2FzeW5jVG9HZW5lcmF0b3IyIiwiX3JlZ2VuZXJhdG9yIiwibWFyayIsIl9jYWxsZWUiLCJuZXdXbXNVcmwiLCJkYXRhIiwiZGF0YXNldE1ldGFkYXRhIiwic2VydmljZVRpdGxlIiwid3JhcCIsIl9jYWxsZWUkIiwiX2NvbnRleHQiLCJwcmV2IiwibmV4dCIsInZhbGlkYXRlVXJsIiwiYWJydXB0IiwiZ2V0V01TQ2FwYWJpbGl0aWVzIiwic2VudCIsIndtc0NhcGFiaWxpdGllc1RvRGF0YXNldE1ldGFkYXRhIiwidGl0bGUiLCJuYW1lIiwibWV0YWRhdGEiLCJsYXllcnMiLCJ2ZXJzaW9uIiwidDAiLCJFcnJvciIsImZpbmlzaCIsInN0b3AiLCJfeCIsImFwcGx5IiwiYXJndW1lbnRzIiwidXNlRWZmZWN0IiwiX3dtc0RhdGEkbWV0YWRhdGEiLCJkYXRhc2V0IiwidHlwZSIsIkRhdGFzZXRUeXBlIiwiV01TX1RJTEUiLCJSRU1PVEVfVElMRSIsInJlbW90ZVRpbGVGb3JtYXQiLCJSZW1vdGVUaWxlRm9ybWF0IiwiV01TIiwidGlsZXNldERhdGFVcmwiLCJ0aWxlc2V0TWV0YWRhdGFVcmwiLCJjb25jYXQiLCJ3bXNWZXJzaW9uIiwiY3JlYXRlRWxlbWVudCIsImh0bWxGb3IiLCJJbnB1dExpZ2h0IiwiaWQiLCJwbGFjZWhvbGRlciIsIm9uQ2hhbmdlIiwiY2xhc3NOYW1lIiwiX2RlZmF1bHQiLCJleHBvcnRzIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL21vZGFscy90aWxlc2V0cy1tb2RhbHMvdGlsZXNldC13bXMtZm9ybS50c3giXSwic291cmNlc0NvbnRlbnQiOlsiLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVFxuLy8gQ29weXJpZ2h0IGNvbnRyaWJ1dG9ycyB0byB0aGUga2VwbGVyLmdsIHByb2plY3RcblxuaW1wb3J0IFJlYWN0LCB7dXNlQ2FsbGJhY2ssIHVzZUVmZmVjdCwgdXNlU3RhdGV9IGZyb20gJ3JlYWN0JztcbmltcG9ydCBzdHlsZWQgZnJvbSAnc3R5bGVkLWNvbXBvbmVudHMnO1xuaW1wb3J0IHtXTVNDYXBhYmlsaXRpZXN9IGZyb20gJ0Bsb2FkZXJzLmdsL3dtcyc7XG5cbmltcG9ydCB7dmFsaWRhdGVVcmx9IGZyb20gJ0BrZXBsZXIuZ2wvY29tbW9uLXV0aWxzJztcbmltcG9ydCB7RGF0YXNldFR5cGUsIFJFTU9URV9USUxFLCBSZW1vdGVUaWxlRm9ybWF0LCBXTVNEYXRhc2V0TWV0YWRhdGF9IGZyb20gJ0BrZXBsZXIuZ2wvY29uc3RhbnRzJztcbmltcG9ydCB7Z2V0V01TQ2FwYWJpbGl0aWVzLCB3bXNDYXBhYmlsaXRpZXNUb0RhdGFzZXRNZXRhZGF0YX0gZnJvbSAnQGtlcGxlci5nbC90YWJsZSc7XG5cbmltcG9ydCB7TWV0YVJlc3BvbnNlfSBmcm9tICcuL2NvbW1vbic7XG5pbXBvcnQge0lucHV0TGlnaHR9IGZyb20gJy4uLy4uL2NvbW1vbic7XG5cbmNvbnN0IFRpbGVzZXRJbnB1dENvbnRhaW5lciA9IHN0eWxlZC5kaXZgXG4gIGRpc3BsYXk6IGdyaWQ7XG4gIGdyaWQtdGVtcGxhdGUtcm93czogcmVwZWF0KDMsIGF1dG8pO1xuICByb3ctZ2FwOiAxOHB4O1xuICBmb250LXNpemU6IDEycHg7XG5gO1xuXG5jb25zdCBUaWxlc2V0SW5wdXREZXNjcmlwdGlvbiA9IHN0eWxlZC5kaXZgXG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgY29sb3I6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuQVpVUkUyMDB9O1xuICBmb250LXNpemU6IDExcHg7XG5gO1xuXG5jb25zdCBFeGFtcGxlVXJsc0NvbnRhaW5lciA9IHN0eWxlZC5kaXZgXG4gIHRleHQtYWxpZ246IGxlZnQ7XG4gIGNvbG9yOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLkFaVVJFMjAwfTtcbiAgZm9udC1zaXplOiAxMXB4O1xuXG4gIC5leGFtcGxlLXVybCB7XG4gICAgbWFyZ2luLXRvcDogOHB4O1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICB9XG5gO1xuXG50eXBlIFdNU1RpbGVGb3JtUHJvcHMgPSB7XG4gIHNldFJlc3BvbnNlOiAocmVzcG9uc2U6IE1ldGFSZXNwb25zZSkgPT4gdm9pZDtcbn07XG5cbnR5cGUgV01TRGF0YSA9IHtcbiAgbWV0YWRhdGE6IFdNU0NhcGFiaWxpdGllcyB8IG51bGw7XG4gIGxheWVyczogV01TRGF0YXNldE1ldGFkYXRhWydsYXllcnMnXTtcbiAgdmVyc2lvbjogc3RyaW5nO1xufTtcblxuY29uc3QgVGlsZXNldFdNU0Zvcm06IFJlYWN0LkZDPFdNU1RpbGVGb3JtUHJvcHM+ID0gKHtzZXRSZXNwb25zZX0pID0+IHtcbiAgY29uc3QgW2xheWVyTmFtZSwgc2V0TGF5ZXJOYW1lXSA9IHVzZVN0YXRlPHN0cmluZz4oJycpO1xuICBjb25zdCBbd21zVXJsLCBzZXRXbXNVcmxdID0gdXNlU3RhdGU8c3RyaW5nPignJyk7XG4gIGNvbnN0IFtsb2FkaW5nLCBzZXRMb2FkaW5nXSA9IHVzZVN0YXRlPGJvb2xlYW4+KGZhbHNlKTtcbiAgY29uc3QgW2Vycm9yLCBzZXRFcnJvcl0gPSB1c2VTdGF0ZTxFcnJvciB8IG51bGw+KG51bGwpO1xuICBjb25zdCBbd21zRGF0YSwgc2V0V01TRGF0YV0gPSB1c2VTdGF0ZTxXTVNEYXRhIHwgbnVsbD4obnVsbCk7XG5cbiAgY29uc3Qgb25MYXllck5hbWVDaGFuZ2UgPSB1c2VDYWxsYmFjayhcbiAgICAoZXZlbnQ6IFJlYWN0LkNoYW5nZUV2ZW50PEhUTUxJbnB1dEVsZW1lbnQ+KSA9PiB7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgc2V0TGF5ZXJOYW1lKGV2ZW50LnRhcmdldC52YWx1ZSk7XG4gICAgfSxcbiAgICBbc2V0TGF5ZXJOYW1lXVxuICApO1xuXG4gIGNvbnN0IG9uV21zVXJsQ2hhbmdlID0gdXNlQ2FsbGJhY2soXG4gICAgYXN5bmMgKGV2ZW50OiBSZWFjdC5DaGFuZ2VFdmVudDxIVE1MSW5wdXRFbGVtZW50PikgPT4ge1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIGNvbnN0IG5ld1dtc1VybCA9IGV2ZW50LnRhcmdldC52YWx1ZTtcbiAgICAgIHNldFdtc1VybChuZXdXbXNVcmwpO1xuXG4gICAgICBpZiAoIXZhbGlkYXRlVXJsKG5ld1dtc1VybCkpIHtcbiAgICAgICAgc2V0V01TRGF0YShudWxsKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICAvLyBGZXRjaCBXTVMgR2V0Q2FwYWJpbGl0aWVzXG4gICAgICB0cnkge1xuICAgICAgICBzZXRMb2FkaW5nKHRydWUpO1xuICAgICAgICBzZXRFcnJvcihudWxsKTtcblxuICAgICAgICBjb25zdCBkYXRhID0gYXdhaXQgZ2V0V01TQ2FwYWJpbGl0aWVzKG5ld1dtc1VybCk7XG5cbiAgICAgICAgY29uc3QgZGF0YXNldE1ldGFkYXRhID0gd21zQ2FwYWJpbGl0aWVzVG9EYXRhc2V0TWV0YWRhdGEoZGF0YSk7XG5cbiAgICAgICAgLy8gRXh0cmFjdCBuYW1lIG9yIHRpdGxlIGZyb20gR2V0Q2FwYWJpbGl0aWVzIHJlc3BvbnNlXG4gICAgICAgIGNvbnN0IHNlcnZpY2VUaXRsZSA9IGRhdGE/LnRpdGxlIHx8IGRhdGE/Lm5hbWU7XG4gICAgICAgIGlmIChzZXJ2aWNlVGl0bGUgJiYgIWxheWVyTmFtZSkge1xuICAgICAgICAgIHNldExheWVyTmFtZShzZXJ2aWNlVGl0bGUpO1xuICAgICAgICB9XG5cbiAgICAgICAgc2V0V01TRGF0YSh7XG4gICAgICAgICAgbWV0YWRhdGE6IGRhdGEsXG4gICAgICAgICAgbGF5ZXJzOiBkYXRhc2V0TWV0YWRhdGEubGF5ZXJzLFxuICAgICAgICAgIHZlcnNpb246IGRhdGFzZXRNZXRhZGF0YS52ZXJzaW9uXG4gICAgICAgIH0pO1xuICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgIHNldEVycm9yKGVyciBpbnN0YW5jZW9mIEVycm9yID8gZXJyIDogbmV3IEVycm9yKCdVbmtub3duIGVycm9yJykpO1xuICAgICAgICBzZXRXTVNEYXRhKG51bGwpO1xuICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgc2V0TG9hZGluZyhmYWxzZSk7XG4gICAgICB9XG4gICAgfSxcbiAgICBbbGF5ZXJOYW1lXVxuICApO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGxheWVyTmFtZSAmJiB3bXNVcmwpIHtcbiAgICAgIGNvbnN0IGRhdGFzZXQgPSB7XG4gICAgICAgIG5hbWU6IGxheWVyTmFtZSxcbiAgICAgICAgdHlwZTogRGF0YXNldFR5cGUuV01TX1RJTEUsXG4gICAgICAgIG1ldGFkYXRhOiB7XG4gICAgICAgICAgdHlwZTogUkVNT1RFX1RJTEUsXG4gICAgICAgICAgcmVtb3RlVGlsZUZvcm1hdDogUmVtb3RlVGlsZUZvcm1hdC5XTVMsXG4gICAgICAgICAgdGlsZXNldERhdGFVcmw6IHdtc1VybCxcbiAgICAgICAgICB0aWxlc2V0TWV0YWRhdGFVcmw6IGAke3dtc1VybH0/c2VydmljZT1XTVMmcmVxdWVzdD1HZXRDYXBhYmlsaXRpZXNgLFxuICAgICAgICAgIGxheWVyczogd21zRGF0YT8ubGF5ZXJzIHx8IFtdLFxuICAgICAgICAgIHdtc1ZlcnNpb246IHdtc0RhdGE/LnZlcnNpb24gfHwgJzEuMy4wJ1xuICAgICAgICB9XG4gICAgICB9O1xuICAgICAgc2V0UmVzcG9uc2Uoe1xuICAgICAgICBtZXRhZGF0YTogd21zRGF0YT8ubWV0YWRhdGEgPz8gbnVsbCxcbiAgICAgICAgZGF0YXNldCxcbiAgICAgICAgbG9hZGluZyxcbiAgICAgICAgZXJyb3JcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBzZXRSZXNwb25zZSh7XG4gICAgICAgIG1ldGFkYXRhOiBudWxsLFxuICAgICAgICBkYXRhc2V0OiBudWxsLFxuICAgICAgICBsb2FkaW5nLFxuICAgICAgICBlcnJvclxuICAgICAgfSk7XG4gICAgfVxuICB9LCBbc2V0UmVzcG9uc2UsIGxheWVyTmFtZSwgd21zVXJsLCB3bXNEYXRhLCBsb2FkaW5nLCBlcnJvcl0pO1xuXG4gIHJldHVybiAoXG4gICAgPFRpbGVzZXRJbnB1dENvbnRhaW5lcj5cbiAgICAgIDxkaXY+XG4gICAgICAgIDxsYWJlbCBodG1sRm9yPVwibGF5ZXItbmFtZVwiPk5hbWU8L2xhYmVsPlxuICAgICAgICA8SW5wdXRMaWdodFxuICAgICAgICAgIGlkPVwibGF5ZXItbmFtZVwiXG4gICAgICAgICAgcGxhY2Vob2xkZXI9XCJOYW1lIHlvdXIgV01TIGxheWVyXCJcbiAgICAgICAgICB2YWx1ZT17bGF5ZXJOYW1lfVxuICAgICAgICAgIG9uQ2hhbmdlPXtvbkxheWVyTmFtZUNoYW5nZX1cbiAgICAgICAgLz5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdj5cbiAgICAgICAgPGxhYmVsIGh0bWxGb3I9XCJ3bXMtdXJsXCI+V01TIFVSTDwvbGFiZWw+XG4gICAgICAgIDxJbnB1dExpZ2h0XG4gICAgICAgICAgaWQ9XCJ3bXMtdXJsXCJcbiAgICAgICAgICBwbGFjZWhvbGRlcj1cIkVudGVyIFdNUyBVUkxcIlxuICAgICAgICAgIHZhbHVlPXt3bXNVcmx9XG4gICAgICAgICAgb25DaGFuZ2U9e29uV21zVXJsQ2hhbmdlfVxuICAgICAgICAvPlxuICAgICAgICA8VGlsZXNldElucHV0RGVzY3JpcHRpb24+UHJvdmlkZSBhIHZhbGlkIFdNUyBzZXJ2aWNlIFVSTC48L1RpbGVzZXRJbnB1dERlc2NyaXB0aW9uPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2PlxuICAgICAgICA8VGlsZXNldElucHV0RGVzY3JpcHRpb24+Rm9yIGV4YW1wbGUsIHRyeSBhIHB1YmxpYyBXTVMgVVJMOjwvVGlsZXNldElucHV0RGVzY3JpcHRpb24+XG4gICAgICAgIDxFeGFtcGxlVXJsc0NvbnRhaW5lcj5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImV4YW1wbGUtdXJsXCI+4oCiIGh0dHBzOi8vb3dzLnRlcnJlc3RyaXMuZGUvb3NtL3NlcnZpY2U8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImV4YW1wbGUtdXJsXCI+XG4gICAgICAgICAgICDigKIgaHR0cHM6Ly9vcGVuZ2VvLm5jZXAubm9hYS5nb3YvZ2Vvc2VydmVyL2NvbnVzL2NvbnVzX2NyZWZfcWNkL293c1xuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZXhhbXBsZS11cmxcIj5cbiAgICAgICAgICAgIOKAoiBodHRwczovL2dpYnMuZWFydGhkYXRhLm5hc2EuZ292L3dtcy9lcHNnNDMyNi9iZXN0L3dtcy5jZ2lcbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9FeGFtcGxlVXJsc0NvbnRhaW5lcj5cbiAgICAgIDwvZGl2PlxuICAgIDwvVGlsZXNldElucHV0Q29udGFpbmVyPlxuICApO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgVGlsZXNldFdNU0Zvcm07XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztBQUdBLElBQUFBLE1BQUEsR0FBQUMsdUJBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFDLGlCQUFBLEdBQUFDLHNCQUFBLENBQUFGLE9BQUE7QUFHQSxJQUFBRyxZQUFBLEdBQUFILE9BQUE7QUFDQSxJQUFBSSxVQUFBLEdBQUFKLE9BQUE7QUFDQSxJQUFBSyxNQUFBLEdBQUFMLE9BQUE7QUFHQSxJQUFBTSxPQUFBLEdBQUFOLE9BQUE7QUFBd0MsSUFBQU8sZUFBQSxFQUFBQyxnQkFBQSxFQUFBQyxnQkFBQSxFQVp4QztBQUNBO0FBQUEsU0FBQUMseUJBQUFDLENBQUEsNkJBQUFDLE9BQUEsbUJBQUFDLENBQUEsT0FBQUQsT0FBQSxJQUFBRSxDQUFBLE9BQUFGLE9BQUEsWUFBQUYsd0JBQUEsWUFBQUEseUJBQUFDLENBQUEsV0FBQUEsQ0FBQSxHQUFBRyxDQUFBLEdBQUFELENBQUEsS0FBQUYsQ0FBQTtBQUFBLFNBQUFaLHdCQUFBWSxDQUFBLEVBQUFFLENBQUEsU0FBQUEsQ0FBQSxJQUFBRixDQUFBLElBQUFBLENBQUEsQ0FBQUksVUFBQSxTQUFBSixDQUFBLGVBQUFBLENBQUEsZ0JBQUFLLE9BQUEsQ0FBQUwsQ0FBQSwwQkFBQUEsQ0FBQSxzQkFBQUEsQ0FBQSxRQUFBRyxDQUFBLEdBQUFKLHdCQUFBLENBQUFHLENBQUEsT0FBQUMsQ0FBQSxJQUFBQSxDQUFBLENBQUFHLEdBQUEsQ0FBQU4sQ0FBQSxVQUFBRyxDQUFBLENBQUFJLEdBQUEsQ0FBQVAsQ0FBQSxPQUFBUSxDQUFBLEtBQUFDLFNBQUEsVUFBQUMsQ0FBQSxHQUFBQyxNQUFBLENBQUFDLGNBQUEsSUFBQUQsTUFBQSxDQUFBRSx3QkFBQSxXQUFBQyxDQUFBLElBQUFkLENBQUEsb0JBQUFjLENBQUEsT0FBQUMsY0FBQSxDQUFBQyxJQUFBLENBQUFoQixDQUFBLEVBQUFjLENBQUEsU0FBQUcsQ0FBQSxHQUFBUCxDQUFBLEdBQUFDLE1BQUEsQ0FBQUUsd0JBQUEsQ0FBQWIsQ0FBQSxFQUFBYyxDQUFBLFVBQUFHLENBQUEsS0FBQUEsQ0FBQSxDQUFBVixHQUFBLElBQUFVLENBQUEsQ0FBQUMsR0FBQSxJQUFBUCxNQUFBLENBQUFDLGNBQUEsQ0FBQUosQ0FBQSxFQUFBTSxDQUFBLEVBQUFHLENBQUEsSUFBQVQsQ0FBQSxDQUFBTSxDQUFBLElBQUFkLENBQUEsQ0FBQWMsQ0FBQSxZQUFBTixDQUFBLGNBQUFSLENBQUEsRUFBQUcsQ0FBQSxJQUFBQSxDQUFBLENBQUFlLEdBQUEsQ0FBQWxCLENBQUEsRUFBQVEsQ0FBQSxHQUFBQSxDQUFBO0FBYUEsSUFBTVcscUJBQXFCLEdBQUdDLDRCQUFNLENBQUNDLEdBQUcsQ0FBQXpCLGVBQUEsS0FBQUEsZUFBQSxPQUFBMEIsdUJBQUEsc0hBS3ZDO0FBRUQsSUFBTUMsdUJBQXVCLEdBQUdILDRCQUFNLENBQUNDLEdBQUcsQ0FBQXhCLGdCQUFBLEtBQUFBLGdCQUFBLE9BQUF5Qix1QkFBQSxrRkFFL0IsVUFBQUUsS0FBSztFQUFBLE9BQUlBLEtBQUssQ0FBQ0MsS0FBSyxDQUFDQyxRQUFRO0FBQUEsRUFFdkM7QUFFRCxJQUFNQyxvQkFBb0IsR0FBR1AsNEJBQU0sQ0FBQ0MsR0FBRyxDQUFBdkIsZ0JBQUEsS0FBQUEsZ0JBQUEsT0FBQXdCLHVCQUFBLG9KQUU1QixVQUFBRSxLQUFLO0VBQUEsT0FBSUEsS0FBSyxDQUFDQyxLQUFLLENBQUNDLFFBQVE7QUFBQSxFQU92QztBQVlELElBQU1FLGNBQTBDLEdBQUcsU0FBN0NBLGNBQTBDQSxDQUFBQyxJQUFBLEVBQXNCO0VBQUEsSUFBakJDLFdBQVcsR0FBQUQsSUFBQSxDQUFYQyxXQUFXO0VBQzlELElBQUFDLFNBQUEsR0FBa0MsSUFBQUMsZUFBUSxFQUFTLEVBQUUsQ0FBQztJQUFBQyxVQUFBLE9BQUFDLGVBQUEsYUFBQUgsU0FBQTtJQUEvQ0ksU0FBUyxHQUFBRixVQUFBO0lBQUVHLFlBQVksR0FBQUgsVUFBQTtFQUM5QixJQUFBSSxVQUFBLEdBQTRCLElBQUFMLGVBQVEsRUFBUyxFQUFFLENBQUM7SUFBQU0sVUFBQSxPQUFBSixlQUFBLGFBQUFHLFVBQUE7SUFBekNFLE1BQU0sR0FBQUQsVUFBQTtJQUFFRSxTQUFTLEdBQUFGLFVBQUE7RUFDeEIsSUFBQUcsVUFBQSxHQUE4QixJQUFBVCxlQUFRLEVBQVUsS0FBSyxDQUFDO0lBQUFVLFVBQUEsT0FBQVIsZUFBQSxhQUFBTyxVQUFBO0lBQS9DRSxPQUFPLEdBQUFELFVBQUE7SUFBRUUsVUFBVSxHQUFBRixVQUFBO0VBQzFCLElBQUFHLFVBQUEsR0FBMEIsSUFBQWIsZUFBUSxFQUFlLElBQUksQ0FBQztJQUFBYyxVQUFBLE9BQUFaLGVBQUEsYUFBQVcsVUFBQTtJQUEvQ0UsS0FBSyxHQUFBRCxVQUFBO0lBQUVFLFFBQVEsR0FBQUYsVUFBQTtFQUN0QixJQUFBRyxVQUFBLEdBQThCLElBQUFqQixlQUFRLEVBQWlCLElBQUksQ0FBQztJQUFBa0IsV0FBQSxPQUFBaEIsZUFBQSxhQUFBZSxVQUFBO0lBQXJERSxPQUFPLEdBQUFELFdBQUE7SUFBRUUsVUFBVSxHQUFBRixXQUFBO0VBRTFCLElBQU1HLGlCQUFpQixHQUFHLElBQUFDLGtCQUFXLEVBQ25DLFVBQUNDLEtBQTBDLEVBQUs7SUFDOUNBLEtBQUssQ0FBQ0MsY0FBYyxDQUFDLENBQUM7SUFDdEJwQixZQUFZLENBQUNtQixLQUFLLENBQUNFLE1BQU0sQ0FBQ0MsS0FBSyxDQUFDO0VBQ2xDLENBQUMsRUFDRCxDQUFDdEIsWUFBWSxDQUNmLENBQUM7RUFFRCxJQUFNdUIsY0FBYyxHQUFHLElBQUFMLGtCQUFXO0lBQUEsSUFBQU0sS0FBQSxPQUFBQyxrQkFBQSwyQkFBQUMsWUFBQSxZQUFBQyxJQUFBLENBQ2hDLFNBQUFDLFFBQU9ULEtBQTBDO01BQUEsSUFBQVUsU0FBQSxFQUFBQyxJQUFBLEVBQUFDLGVBQUEsRUFBQUMsWUFBQTtNQUFBLE9BQUFOLFlBQUEsWUFBQU8sSUFBQSxVQUFBQyxTQUFBQyxRQUFBO1FBQUEsa0JBQUFBLFFBQUEsQ0FBQUMsSUFBQSxHQUFBRCxRQUFBLENBQUFFLElBQUE7VUFBQTtZQUMvQ2xCLEtBQUssQ0FBQ0MsY0FBYyxDQUFDLENBQUM7WUFDaEJTLFNBQVMsR0FBR1YsS0FBSyxDQUFDRSxNQUFNLENBQUNDLEtBQUs7WUFDcENsQixTQUFTLENBQUN5QixTQUFTLENBQUM7WUFBQyxJQUVoQixJQUFBUyx3QkFBVyxFQUFDVCxTQUFTLENBQUM7Y0FBQU0sUUFBQSxDQUFBRSxJQUFBO2NBQUE7WUFBQTtZQUN6QnJCLFVBQVUsQ0FBQyxJQUFJLENBQUM7WUFBQyxPQUFBbUIsUUFBQSxDQUFBSSxNQUFBO1VBQUE7WUFBQUosUUFBQSxDQUFBQyxJQUFBO1lBTWpCNUIsVUFBVSxDQUFDLElBQUksQ0FBQztZQUNoQkksUUFBUSxDQUFDLElBQUksQ0FBQztZQUFDdUIsUUFBQSxDQUFBRSxJQUFBO1lBQUEsT0FFSSxJQUFBRyx5QkFBa0IsRUFBQ1gsU0FBUyxDQUFDO1VBQUE7WUFBMUNDLElBQUksR0FBQUssUUFBQSxDQUFBTSxJQUFBO1lBRUpWLGVBQWUsR0FBRyxJQUFBVyx1Q0FBZ0MsRUFBQ1osSUFBSSxDQUFDLEVBRTlEO1lBQ01FLFlBQVksR0FBRyxDQUFBRixJQUFJLGFBQUpBLElBQUksdUJBQUpBLElBQUksQ0FBRWEsS0FBSyxNQUFJYixJQUFJLGFBQUpBLElBQUksdUJBQUpBLElBQUksQ0FBRWMsSUFBSTtZQUM5QyxJQUFJWixZQUFZLElBQUksQ0FBQ2pDLFNBQVMsRUFBRTtjQUM5QkMsWUFBWSxDQUFDZ0MsWUFBWSxDQUFDO1lBQzVCO1lBRUFoQixVQUFVLENBQUM7Y0FDVDZCLFFBQVEsRUFBRWYsSUFBSTtjQUNkZ0IsTUFBTSxFQUFFZixlQUFlLENBQUNlLE1BQU07Y0FDOUJDLE9BQU8sRUFBRWhCLGVBQWUsQ0FBQ2dCO1lBQzNCLENBQUMsQ0FBQztZQUFDWixRQUFBLENBQUFFLElBQUE7WUFBQTtVQUFBO1lBQUFGLFFBQUEsQ0FBQUMsSUFBQTtZQUFBRCxRQUFBLENBQUFhLEVBQUEsR0FBQWIsUUFBQTtZQUVIdkIsUUFBUSxDQUFDdUIsUUFBQSxDQUFBYSxFQUFBLFlBQWVDLEtBQUssR0FBQWQsUUFBQSxDQUFBYSxFQUFBLEdBQVMsSUFBSUMsS0FBSyxDQUFDLGVBQWUsQ0FBQyxDQUFDO1lBQ2pFakMsVUFBVSxDQUFDLElBQUksQ0FBQztVQUFDO1lBQUFtQixRQUFBLENBQUFDLElBQUE7WUFFakI1QixVQUFVLENBQUMsS0FBSyxDQUFDO1lBQUMsT0FBQTJCLFFBQUEsQ0FBQWUsTUFBQTtVQUFBO1VBQUE7WUFBQSxPQUFBZixRQUFBLENBQUFnQixJQUFBO1FBQUE7TUFBQSxHQUFBdkIsT0FBQTtJQUFBLENBRXJCO0lBQUEsaUJBQUF3QixFQUFBO01BQUEsT0FBQTVCLEtBQUEsQ0FBQTZCLEtBQUEsT0FBQUMsU0FBQTtJQUFBO0VBQUEsS0FDRCxDQUFDdkQsU0FBUyxDQUNaLENBQUM7RUFFRCxJQUFBd0QsZ0JBQVMsRUFBQyxZQUFNO0lBQ2QsSUFBSXhELFNBQVMsSUFBSUksTUFBTSxFQUFFO01BQUEsSUFBQXFELGlCQUFBO01BQ3ZCLElBQU1DLE9BQU8sR0FBRztRQUNkYixJQUFJLEVBQUU3QyxTQUFTO1FBQ2YyRCxJQUFJLEVBQUVDLHNCQUFXLENBQUNDLFFBQVE7UUFDMUJmLFFBQVEsRUFBRTtVQUNSYSxJQUFJLEVBQUVHLHNCQUFXO1VBQ2pCQyxnQkFBZ0IsRUFBRUMsMkJBQWdCLENBQUNDLEdBQUc7VUFDdENDLGNBQWMsRUFBRTlELE1BQU07VUFDdEIrRCxrQkFBa0IsS0FBQUMsTUFBQSxDQUFLaEUsTUFBTSx5Q0FBc0M7VUFDbkUyQyxNQUFNLEVBQUUsQ0FBQS9CLE9BQU8sYUFBUEEsT0FBTyx1QkFBUEEsT0FBTyxDQUFFK0IsTUFBTSxLQUFJLEVBQUU7VUFDN0JzQixVQUFVLEVBQUUsQ0FBQXJELE9BQU8sYUFBUEEsT0FBTyx1QkFBUEEsT0FBTyxDQUFFZ0MsT0FBTyxLQUFJO1FBQ2xDO01BQ0YsQ0FBQztNQUNEckQsV0FBVyxDQUFDO1FBQ1ZtRCxRQUFRLEdBQUFXLGlCQUFBLEdBQUV6QyxPQUFPLGFBQVBBLE9BQU8sdUJBQVBBLE9BQU8sQ0FBRThCLFFBQVEsY0FBQVcsaUJBQUEsY0FBQUEsaUJBQUEsR0FBSSxJQUFJO1FBQ25DQyxPQUFPLEVBQVBBLE9BQU87UUFDUGxELE9BQU8sRUFBUEEsT0FBTztRQUNQSSxLQUFLLEVBQUxBO01BQ0YsQ0FBQyxDQUFDO0lBQ0osQ0FBQyxNQUFNO01BQ0xqQixXQUFXLENBQUM7UUFDVm1ELFFBQVEsRUFBRSxJQUFJO1FBQ2RZLE9BQU8sRUFBRSxJQUFJO1FBQ2JsRCxPQUFPLEVBQVBBLE9BQU87UUFDUEksS0FBSyxFQUFMQTtNQUNGLENBQUMsQ0FBQztJQUNKO0VBQ0YsQ0FBQyxFQUFFLENBQUNqQixXQUFXLEVBQUVLLFNBQVMsRUFBRUksTUFBTSxFQUFFWSxPQUFPLEVBQUVSLE9BQU8sRUFBRUksS0FBSyxDQUFDLENBQUM7RUFFN0Qsb0JBQ0U1RCxNQUFBLFlBQUFzSCxhQUFBLENBQUN0RixxQkFBcUIscUJBQ3BCaEMsTUFBQSxZQUFBc0gsYUFBQSwyQkFDRXRILE1BQUEsWUFBQXNILGFBQUE7SUFBT0MsT0FBTyxFQUFDO0VBQVksR0FBQyxNQUFXLENBQUMsZUFDeEN2SCxNQUFBLFlBQUFzSCxhQUFBLENBQUM5RyxPQUFBLENBQUFnSCxVQUFVO0lBQ1RDLEVBQUUsRUFBQyxZQUFZO0lBQ2ZDLFdBQVcsRUFBQyxxQkFBcUI7SUFDakNuRCxLQUFLLEVBQUV2QixTQUFVO0lBQ2pCMkUsUUFBUSxFQUFFekQ7RUFBa0IsQ0FDN0IsQ0FDRSxDQUFDLGVBQ05sRSxNQUFBLFlBQUFzSCxhQUFBLDJCQUNFdEgsTUFBQSxZQUFBc0gsYUFBQTtJQUFPQyxPQUFPLEVBQUM7RUFBUyxHQUFDLFNBQWMsQ0FBQyxlQUN4Q3ZILE1BQUEsWUFBQXNILGFBQUEsQ0FBQzlHLE9BQUEsQ0FBQWdILFVBQVU7SUFDVEMsRUFBRSxFQUFDLFNBQVM7SUFDWkMsV0FBVyxFQUFDLGVBQWU7SUFDM0JuRCxLQUFLLEVBQUVuQixNQUFPO0lBQ2R1RSxRQUFRLEVBQUVuRDtFQUFlLENBQzFCLENBQUMsZUFDRnhFLE1BQUEsWUFBQXNILGFBQUEsQ0FBQ2xGLHVCQUF1QixRQUFDLGtDQUF5RCxDQUMvRSxDQUFDLGVBQ05wQyxNQUFBLFlBQUFzSCxhQUFBLDJCQUNFdEgsTUFBQSxZQUFBc0gsYUFBQSxDQUFDbEYsdUJBQXVCLFFBQUMsb0NBQTJELENBQUMsZUFDckZwQyxNQUFBLFlBQUFzSCxhQUFBLENBQUM5RSxvQkFBb0IscUJBQ25CeEMsTUFBQSxZQUFBc0gsYUFBQTtJQUFLTSxTQUFTLEVBQUM7RUFBYSxHQUFDLDhDQUE0QyxDQUFDLGVBQzFFNUgsTUFBQSxZQUFBc0gsYUFBQTtJQUFLTSxTQUFTLEVBQUM7RUFBYSxHQUFDLHlFQUV4QixDQUFDLGVBQ041SCxNQUFBLFlBQUFzSCxhQUFBO0lBQUtNLFNBQVMsRUFBQztFQUFhLEdBQUMsa0VBRXhCLENBQ2UsQ0FDbkIsQ0FDZ0IsQ0FBQztBQUU1QixDQUFDO0FBQUMsSUFBQUMsUUFBQSxHQUFBQyxPQUFBLGNBRWFyRixjQUFjIiwiaWdub3JlTGlzdCI6W119
@@ -1,20 +1,22 @@
1
1
  import React from 'react';
2
2
  import MapContainerFactory from './map-container';
3
3
  import MapsLayoutFactory from './maps-layout';
4
- import { ExportImage } from '@kepler.gl/constants';
5
- import { SplitMap } from '@kepler.gl/types';
4
+ import { SplitMap, ExportImage } from '@kepler.gl/types';
6
5
  import { ActionHandler, addNotification, setExportImageDataUri, setExportImageError, setExportImageSetting } from '@kepler.gl/actions';
7
6
  import { mapFieldsSelector } from './kepler-gl';
8
7
  interface PlotContainerProps {
9
- width?: number;
10
- height?: number;
11
- exportImageSetting: ExportImage;
12
- addNotification: ActionHandler<typeof addNotification>;
8
+ ratio?: string;
9
+ resolution?: string;
10
+ legend?: boolean;
11
+ center?: boolean;
12
+ imageSize: ExportImage['imageSize'];
13
+ escapeXhtmlForWebpack?: boolean;
13
14
  mapFields: ReturnType<typeof mapFieldsSelector>;
15
+ splitMaps?: SplitMap[];
14
16
  setExportImageSetting: typeof setExportImageSetting;
15
17
  setExportImageDataUri: typeof setExportImageDataUri;
16
18
  setExportImageError: typeof setExportImageError;
17
- splitMaps?: SplitMap[];
19
+ addNotification: ActionHandler<typeof addNotification>;
18
20
  enableErrorNotification?: boolean;
19
21
  }
20
22
  declare function PlotContainerFactory(MapContainer: ReturnType<typeof MapContainerFactory>, MapsLayout: ReturnType<typeof MapsLayoutFactory>): React.ComponentType<PlotContainerProps>;