kepler.gl 3.1.0 → 3.1.1

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 (234) hide show
  1. package/README.md +27 -132
  2. package/dist/src/common-utils/src/data-type.d.ts +9 -1
  3. package/dist/src/components/src/common/data-table/header-cell.d.ts +1 -0
  4. package/dist/src/components/src/common/data-table/index.d.ts +1 -0
  5. package/dist/src/components/src/common/file-uploader/file-drop.d.ts +1 -32
  6. package/dist/src/components/src/common/item-selector/dropdown-list.d.ts +2 -2
  7. package/dist/src/components/src/common/item-selector/item-selector.d.ts +1 -1
  8. package/dist/src/components/src/common/item-selector/typeahead.d.ts +1 -1
  9. package/dist/src/components/src/geocoder/geocoder.d.ts +7 -0
  10. package/dist/src/components/src/geocoder-panel.d.ts +2 -2
  11. package/dist/src/components/src/hooks/use-fetch-vector-tile-metadata.d.ts +4 -3
  12. package/dist/src/constants/src/default-settings.d.ts +14 -1
  13. package/dist/src/deckgl-arrow-layers/src/constants.d.ts +0 -12
  14. package/dist/src/deckgl-arrow-layers/src/index.d.ts +0 -1
  15. package/dist/src/deckgl-arrow-layers/src/utils/utils.d.ts +12 -1
  16. package/dist/src/duckdb/src/components/preview-data-panel.d.ts +7 -2
  17. package/dist/src/duckdb/src/components/schema-panel.d.ts +12 -3
  18. package/dist/src/duckdb/src/processors/data-processor.d.ts +1 -0
  19. package/dist/src/duckdb/src/table/duckdb-table-utils.d.ts +106 -0
  20. package/dist/src/duckdb/src/table/duckdb-table.d.ts +5 -3
  21. package/dist/src/processors/src/data-processor.d.ts +15 -1
  22. package/dist/src/reducers/src/provider-state-updaters.d.ts +1 -0
  23. package/dist/src/reducers/src/vis-state-updaters.d.ts +1 -1
  24. package/dist/src/table/src/dataset-utils.d.ts +1 -1
  25. package/dist/src/table/src/tileset/vector-tile-utils.d.ts +17 -1
  26. package/dist/src/utils/src/application-config.d.ts +4 -3
  27. package/dist/src/utils/src/data-utils.d.ts +9 -3
  28. package/dist/src/utils/src/indexed-data-container.d.ts +2 -2
  29. package/dist/src/utils/src/map-style-utils/mapbox-utils.d.ts +1 -1
  30. package/dist/src/utils/src/map-utils.d.ts +1 -1
  31. package/dist/src/utils/src/plot.d.ts +2 -2
  32. package/package.json +5 -5
  33. package/src/actions/package.json +8 -8
  34. package/src/ai-assistant/dist/components/ai-assistant-component.js +2 -1
  35. package/src/ai-assistant/package.json +7 -7
  36. package/src/ai-assistant/src/components/ai-assistant-component.tsx +1 -0
  37. package/src/cloud-providers/package.json +2 -2
  38. package/src/common-utils/dist/data-type.d.ts +9 -1
  39. package/src/common-utils/dist/data-type.js +50 -1
  40. package/src/common-utils/package.json +3 -3
  41. package/src/common-utils/src/data-type.ts +49 -1
  42. package/src/components/dist/common/data-table/header-cell.d.ts +1 -0
  43. package/src/components/dist/common/data-table/header-cell.js +2 -2
  44. package/src/components/dist/common/data-table/index.d.ts +1 -0
  45. package/src/components/dist/common/data-table/index.js +5 -1
  46. package/src/components/dist/common/file-uploader/file-drop.d.ts +1 -32
  47. package/src/components/dist/common/file-uploader/file-drop.js +152 -167
  48. package/src/components/dist/common/item-selector/dropdown-list.d.ts +2 -2
  49. package/src/components/dist/common/item-selector/dropdown-list.js +2 -3
  50. package/src/components/dist/common/item-selector/item-selector.d.ts +1 -1
  51. package/src/components/dist/common/item-selector/typeahead.d.ts +1 -1
  52. package/src/components/dist/common/range-brush.js +3 -3
  53. package/src/components/dist/geocoder/geocoder.d.ts +7 -0
  54. package/src/components/dist/geocoder/geocoder.js +19 -11
  55. package/src/components/dist/geocoder-panel.d.ts +2 -2
  56. package/src/components/dist/geocoder-panel.js +64 -91
  57. package/src/components/dist/hooks/use-fetch-vector-tile-metadata.d.ts +4 -3
  58. package/src/components/dist/hooks/use-fetch-vector-tile-metadata.js +35 -26
  59. package/src/components/dist/hooks/use-legend-position.js +8 -4
  60. package/src/components/dist/map/map-legend-panel.js +2 -3
  61. package/src/components/dist/modal-container.js +8 -8
  62. package/src/components/dist/modals/tilesets-modals/tileset-vector-form.js +31 -12
  63. package/src/components/dist/side-panel/layer-panel/color-palette-preset.js +2 -2
  64. package/src/components/dist/side-panel/layer-panel/color-range-selector.js +10 -11
  65. package/src/components/dist/side-panel/layer-panel/color-selector.js +3 -3
  66. package/src/components/dist/side-panel/layer-panel/custom-palette.js +1 -2
  67. package/src/components/dist/side-panel/layer-panel/layer-configurator.js +6 -8
  68. package/src/components/dist/side-panel/layer-panel/vector-tile-layer-configurator.js +1 -2
  69. package/src/components/package.json +16 -16
  70. package/src/components/src/common/data-table/header-cell.tsx +2 -1
  71. package/src/components/src/common/data-table/index.tsx +4 -0
  72. package/src/components/src/common/file-uploader/file-drop.tsx +186 -161
  73. package/src/components/src/common/item-selector/dropdown-list.tsx +1 -6
  74. package/src/components/src/common/range-brush.tsx +2 -2
  75. package/src/components/src/geocoder/geocoder.tsx +16 -8
  76. package/src/components/src/geocoder-panel.tsx +95 -85
  77. package/src/components/src/hooks/use-fetch-vector-tile-metadata.ts +27 -25
  78. package/src/components/src/hooks/use-legend-position.ts +5 -2
  79. package/src/components/src/map/map-legend-panel.tsx +1 -2
  80. package/src/components/src/modal-container.tsx +7 -7
  81. package/src/components/src/modals/tilesets-modals/tileset-vector-form.tsx +12 -3
  82. package/src/components/src/side-panel/layer-panel/color-palette-preset.tsx +1 -1
  83. package/src/components/src/side-panel/layer-panel/color-range-selector.tsx +6 -11
  84. package/src/components/src/side-panel/layer-panel/color-selector.tsx +2 -2
  85. package/src/components/src/side-panel/layer-panel/custom-palette.tsx +0 -1
  86. package/src/components/src/side-panel/layer-panel/layer-configurator.tsx +23 -33
  87. package/src/components/src/side-panel/layer-panel/vector-tile-layer-configurator.tsx +0 -1
  88. package/src/constants/dist/default-settings.d.ts +14 -1
  89. package/src/constants/dist/default-settings.js +20 -5
  90. package/src/constants/node_modules/.cache/terser-webpack-plugin/content-v2/sha512/91/4f/6c65f3a1eba584ffd2d892cabc25ab5804d4a9ef53694c98707372a83e56343a274bec04f15927a6fe7602615f0f23f73ccf599f524ef97ad6c77c8832ea +1 -0
  91. package/src/constants/node_modules/.cache/terser-webpack-plugin/index-v5/a6/b2/5424aa4477192fb44cc90fd80892efdc96731f2ff0f48e8f28abf64243cc +2 -0
  92. package/src/constants/package.json +2 -2
  93. package/src/constants/src/default-settings.ts +16 -1
  94. package/src/constants/umd/keplergl.min.js +2 -2
  95. package/src/deckgl-arrow-layers/dist/constants.d.ts +0 -12
  96. package/src/deckgl-arrow-layers/dist/constants.js +4 -15
  97. package/src/deckgl-arrow-layers/dist/index.d.ts +0 -1
  98. package/src/deckgl-arrow-layers/dist/index.js +1 -8
  99. package/src/deckgl-arrow-layers/dist/layers/geo-arrow-scatterplot-layer.js +4 -4
  100. package/src/deckgl-arrow-layers/dist/layers/geo-arrow-text-layer.js +5 -5
  101. package/src/deckgl-arrow-layers/dist/utils/utils.d.ts +12 -1
  102. package/src/deckgl-arrow-layers/dist/utils/utils.js +7 -5
  103. package/src/deckgl-arrow-layers/package.json +2 -1
  104. package/src/deckgl-arrow-layers/src/constants.ts +0 -13
  105. package/src/deckgl-arrow-layers/src/index.ts +0 -2
  106. package/src/deckgl-arrow-layers/src/layers/geo-arrow-scatterplot-layer.ts +5 -3
  107. package/src/deckgl-arrow-layers/src/layers/geo-arrow-text-layer.ts +8 -4
  108. package/src/deckgl-arrow-layers/src/utils/utils.ts +7 -5
  109. package/src/deckgl-layers/dist/deckgl-extensions/filter-arrow-layer.d.ts +1 -1
  110. package/src/deckgl-layers/dist/deckgl-extensions/filter-shader-module.d.ts +1 -1
  111. package/src/deckgl-layers/dist/deckgl-extensions/filter-shader-module.js +3 -3
  112. package/src/deckgl-layers/package.json +5 -5
  113. package/src/deckgl-layers/src/deckgl-extensions/filter-shader-module.ts +4 -3
  114. package/src/duckdb/dist/components/monaco-editor.js +4 -5
  115. package/src/duckdb/dist/components/preview-data-panel.d.ts +7 -2
  116. package/src/duckdb/dist/components/preview-data-panel.js +7 -8
  117. package/src/duckdb/dist/components/schema-panel.d.ts +12 -3
  118. package/src/duckdb/dist/components/schema-panel.js +41 -24
  119. package/src/duckdb/dist/components/sql-panel.js +245 -56
  120. package/src/duckdb/dist/init.js +20 -14
  121. package/src/duckdb/dist/processors/data-processor.d.ts +1 -0
  122. package/src/duckdb/dist/processors/data-processor.js +4 -4
  123. package/src/duckdb/dist/table/duckdb-table-utils.d.ts +106 -0
  124. package/src/duckdb/dist/table/duckdb-table-utils.js +493 -2
  125. package/src/duckdb/dist/table/duckdb-table.d.ts +5 -3
  126. package/src/duckdb/dist/table/duckdb-table.js +153 -261
  127. package/src/duckdb/package.json +6 -6
  128. package/src/duckdb/src/components/monaco-editor.tsx +3 -3
  129. package/src/duckdb/src/components/preview-data-panel.tsx +15 -8
  130. package/src/duckdb/src/components/schema-panel.tsx +92 -21
  131. package/src/duckdb/src/components/sql-panel.tsx +160 -22
  132. package/src/duckdb/src/init.ts +4 -1
  133. package/src/duckdb/src/processors/data-processor.ts +2 -2
  134. package/src/duckdb/src/table/duckdb-table-utils.ts +407 -1
  135. package/src/duckdb/src/table/duckdb-table.ts +61 -92
  136. package/src/effects/package.json +5 -5
  137. package/src/layers/dist/arc-layer/arc-layer.d.ts +1 -1
  138. package/src/layers/dist/arc-layer/arc-layer.js +2 -3
  139. package/src/layers/dist/base-layer.d.ts +7 -6
  140. package/src/layers/dist/base-layer.js +36 -19
  141. package/src/layers/dist/geojson-layer/geojson-layer.js +4 -2
  142. package/src/layers/dist/geojson-layer/geojson-utils.js +10 -3
  143. package/src/layers/dist/heatmap-layer/heatmap-layer.d.ts +2 -0
  144. package/src/layers/dist/heatmap-layer/heatmap-layer.js +16 -9
  145. package/src/layers/dist/icon-layer/icon-layer.d.ts +6 -3
  146. package/src/layers/dist/icon-layer/icon-layer.js +19 -11
  147. package/src/layers/dist/index.d.ts +1 -1
  148. package/src/layers/dist/index.js +1 -1
  149. package/src/layers/dist/layer-text-label.d.ts +9 -0
  150. package/src/layers/dist/layer-text-label.js +51 -6
  151. package/src/layers/dist/layer-utils.d.ts +39 -30
  152. package/src/layers/dist/layer-utils.js +69 -9
  153. package/src/layers/dist/line-layer/line-layer.d.ts +1 -1
  154. package/src/layers/dist/line-layer/line-layer.js +2 -3
  155. package/src/layers/dist/point-layer/point-layer.d.ts +10 -7
  156. package/src/layers/dist/point-layer/point-layer.js +16 -8
  157. package/src/layers/dist/trip-layer/trip-layer.d.ts +2 -2
  158. package/src/layers/dist/trip-layer/trip-layer.js +4 -2
  159. package/src/layers/dist/vector-tile/abstract-tile-layer.d.ts +3 -7
  160. package/src/layers/dist/vector-tile/abstract-tile-layer.js +7 -6
  161. package/src/layers/dist/vector-tile/vector-tile-layer.d.ts +5 -7
  162. package/src/layers/dist/vector-tile/vector-tile-layer.js +23 -2
  163. package/src/layers/package.json +11 -10
  164. package/src/layers/src/arc-layer/arc-layer.ts +1 -1
  165. package/src/layers/src/base-layer.ts +50 -9
  166. package/src/layers/src/geojson-layer/geojson-layer.ts +3 -1
  167. package/src/layers/src/geojson-layer/geojson-utils.ts +4 -1
  168. package/src/layers/src/heatmap-layer/heatmap-layer.ts +17 -12
  169. package/src/layers/src/icon-layer/icon-layer.ts +7 -3
  170. package/src/layers/src/index.ts +1 -2
  171. package/src/layers/src/layer-text-label.ts +53 -4
  172. package/src/layers/src/layer-utils.ts +88 -9
  173. package/src/layers/src/line-layer/line-layer.ts +1 -1
  174. package/src/layers/src/point-layer/point-layer.ts +15 -11
  175. package/src/layers/src/trip-layer/trip-layer.ts +4 -2
  176. package/src/layers/src/vector-tile/abstract-tile-layer.ts +11 -5
  177. package/src/layers/src/vector-tile/vector-tile-layer.ts +33 -4
  178. package/src/localization/package.json +1 -1
  179. package/src/processors/dist/data-processor.d.ts +15 -1
  180. package/src/processors/dist/data-processor.js +104 -11
  181. package/src/processors/package.json +8 -7
  182. package/src/processors/src/data-processor.ts +116 -13
  183. package/src/reducers/dist/export-utils.js +2 -2
  184. package/src/reducers/dist/layer-utils.js +1 -1
  185. package/src/reducers/dist/provider-state-updaters.d.ts +1 -0
  186. package/src/reducers/dist/provider-state-updaters.js +5 -2
  187. package/src/reducers/dist/vis-state-updaters.d.ts +1 -1
  188. package/src/reducers/dist/vis-state-updaters.js +23 -12
  189. package/src/reducers/package.json +16 -16
  190. package/src/reducers/src/export-utils.ts +1 -1
  191. package/src/reducers/src/layer-utils.ts +2 -1
  192. package/src/reducers/src/provider-state-updaters.ts +4 -1
  193. package/src/reducers/src/vis-state-updaters.ts +45 -10
  194. package/src/schemas/dist/dataset-schema.js +35 -6
  195. package/src/schemas/package.json +7 -7
  196. package/src/schemas/src/dataset-schema.ts +36 -8
  197. package/src/styles/node_modules/.cache/terser-webpack-plugin/content-v2/sha512/a3/a9/7f26bbc52905b0e21e9366a30ef0ba98f4ccf9aa8dd8326d90ba90191ba2e305323f505bf134c825356156c793bf9386ed2cef2aeb48eb327c26d106f69a +1 -0
  198. package/src/styles/node_modules/.cache/terser-webpack-plugin/index-v5/7e/51/b8756555a0e2e696d944445ac23f7febf769006013fbc8419f39a701649d +2 -0
  199. package/src/styles/package.json +2 -2
  200. package/src/styles/umd/keplergl.min.js +2 -2
  201. package/src/table/dist/dataset-utils.js +23 -14
  202. package/src/table/dist/src/table/src/dataset-utils.d.ts +1 -1
  203. package/src/table/dist/src/table/src/tileset/vector-tile-utils.d.ts +17 -1
  204. package/src/table/dist/tileset/vector-tile-utils.js +122 -2
  205. package/src/table/package.json +5 -5
  206. package/src/table/src/dataset-utils.ts +16 -6
  207. package/src/table/src/tileset/vector-tile-utils.ts +131 -8
  208. package/src/tasks/package.json +2 -2
  209. package/src/types/actions.d.ts +1 -0
  210. package/src/types/layers.d.ts +1 -0
  211. package/src/types/package.json +1 -1
  212. package/src/types/types.d.ts +17 -0
  213. package/src/utils/dist/application-config.d.ts +4 -3
  214. package/src/utils/dist/application-config.js +3 -2
  215. package/src/utils/dist/data-scale-utils.js +4 -4
  216. package/src/utils/dist/data-utils.d.ts +9 -3
  217. package/src/utils/dist/data-utils.js +40 -7
  218. package/src/utils/dist/dataset-utils.js +23 -8
  219. package/src/utils/dist/indexed-data-container.d.ts +2 -2
  220. package/src/utils/dist/indexed-data-container.js +1 -1
  221. package/src/utils/dist/map-style-utils/mapbox-utils.d.ts +1 -1
  222. package/src/utils/dist/map-style-utils/mapbox-utils.js +3 -3
  223. package/src/utils/dist/plot.d.ts +2 -2
  224. package/src/utils/dist/plot.js +6 -6
  225. package/src/utils/map-utils.spec.js +1 -2
  226. package/src/utils/package.json +5 -4
  227. package/src/utils/src/application-config.ts +11 -8
  228. package/src/utils/src/data-scale-utils.ts +3 -3
  229. package/src/utils/src/data-utils.ts +36 -7
  230. package/src/utils/src/dataset-utils.ts +41 -9
  231. package/src/utils/src/indexed-data-container.ts +1 -1
  232. package/src/utils/src/map-style-utils/mapbox-utils.ts +2 -2
  233. package/src/utils/src/plot.ts +5 -5
  234. package/umd/keplergl.min.js +1279 -1295
@@ -5,7 +5,7 @@ var _typeof = require("@babel/runtime/helpers/typeof");
5
5
  Object.defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
8
- exports.SchemaPanel = void 0;
8
+ exports.SchemaPanelDropMessage = exports.SchemaPanel = void 0;
9
9
  var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
10
10
  var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
11
11
  var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
@@ -13,55 +13,60 @@ var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/hel
13
13
  var _react = _interopRequireWildcard(require("react"));
14
14
  var _reactRedux = require("react-redux");
15
15
  var _styledComponents = _interopRequireDefault(require("styled-components"));
16
- var _utils = require("@kepler.gl/utils");
17
- var _constants = require("@kepler.gl/constants");
16
+ var _components = require("@kepler.gl/components");
17
+ var _processors = require("@kepler.gl/processors");
18
18
  var _tree = require("./tree");
19
19
  var _init = require("../init");
20
- var _templateObject; // SPDX-License-Identifier: MIT
20
+ var _duckdbTableUtils = require("../table/duckdb-table-utils");
21
+ var _templateObject, _templateObject2, _templateObject3, _templateObject4; // SPDX-License-Identifier: MIT
21
22
  // Copyright contributors to the kepler.gl project
22
23
  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); }
23
24
  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; }
24
25
  // TODO note that demo state is available in demo-app, but not when add modules to dependencies in a custom map
25
26
 
26
- var StyledSchemaPanel = _styledComponents["default"].div(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n color: ", ";\n font-size: 12px;\n padding: 12px;\n font-family: ", ";\n"])), function (props) {
27
+ var StyledSchemaPanel = _styledComponents["default"].div(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n color: ", ";\n font-size: 12px;\n padding: 12px;\n font-family: ", ";\n height: 100%;\n"])), function (props) {
27
28
  return props.theme.textColor;
28
29
  }, function (props) {
29
30
  return props.theme.fontFamily;
30
31
  });
32
+ var StyledLoadingSpinnerWrapper = _styledComponents["default"].div(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n justify-content: center;\n align-items: center;\n height: 100%;\n"])));
31
33
  function getColumnSchema(_x, _x2) {
32
34
  return _getColumnSchema.apply(this, arguments);
33
35
  }
34
36
  function _getColumnSchema() {
35
- _getColumnSchema = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee2(c, name) {
36
- var columnResult;
37
+ _getColumnSchema = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee2(connection, tableName) {
38
+ var columnResult, columnDescribe, keplerFields;
37
39
  return _regenerator["default"].wrap(function _callee2$(_context2) {
38
40
  while (1) switch (_context2.prev = _context2.next) {
39
41
  case 0:
40
42
  _context2.next = 2;
41
- return c.query("Select * from '".concat(name, "' LIMIT 1;"));
43
+ return connection.query("Select * from '".concat(tableName, "' LIMIT 1;"));
42
44
  case 2:
43
45
  columnResult = _context2.sent;
46
+ _context2.next = 5;
47
+ return (0, _duckdbTableUtils.getDuckDBColumnTypes)(connection, tableName);
48
+ case 5:
49
+ columnDescribe = _context2.sent;
50
+ keplerFields = (0, _processors.arrowSchemaToFields)(columnResult, (0, _duckdbTableUtils.getDuckDBColumnTypesMap)(columnDescribe));
44
51
  return _context2.abrupt("return", {
45
- key: name,
52
+ key: tableName,
46
53
  object: {
47
54
  type: 'dataset',
48
- tableName: name
55
+ tableName: tableName
49
56
  },
50
- children: columnResult.schema.fields.map(function (field) {
51
- var _field$metadata$get;
52
- var isGeoArrowColumn = (_field$metadata$get = field.metadata.get('ARROW:extension:name')) === null || _field$metadata$get === void 0 ? void 0 : _field$metadata$get.startsWith('geoarrow');
57
+ children: columnResult.schema.fields.map(function (field, fieldIndex) {
53
58
  return {
54
59
  key: field.name,
55
60
  object: {
56
61
  type: 'column',
57
62
  name: field.name,
58
63
  arrowType: field.type,
59
- fieldType: isGeoArrowColumn ? _constants.ALL_FIELD_TYPES.geoarrow : (0, _utils.arrowDataTypeToFieldType)(field.type)
64
+ fieldType: keplerFields[fieldIndex].type
60
65
  }
61
66
  };
62
67
  })
63
68
  });
64
- case 4:
69
+ case 8:
65
70
  case "end":
66
71
  return _context2.stop();
67
72
  }
@@ -80,8 +85,19 @@ function getSchemaSuggestion(result) {
80
85
  return accu.concat(columns);
81
86
  }, []);
82
87
  }
88
+ var StyledSchemaPanelDropMessage = _styledComponents["default"].div(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n justify-content: center;\n align-items: center;\n height: 100%;\n flex-direction: column;\n text-align: center;\n\n div {\n margin: 5px;\n }\n .header {\n font-size: 15px;\n }\n .bold {\n font-weight: 700;\n }\n"])));
89
+ var StyledAddIcon = (0, _styledComponents["default"])(_components.Icons.Add)(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteral2["default"])(["\n display: inline;\n margin-top: -3px;\n"])));
90
+ var SchemaPanelDropMessage = exports.SchemaPanelDropMessage = function SchemaPanelDropMessage() {
91
+ return /*#__PURE__*/_react["default"].createElement(StyledSchemaPanelDropMessage, null, /*#__PURE__*/_react["default"].createElement("div", {
92
+ className: "header"
93
+ }, /*#__PURE__*/_react["default"].createElement(StyledAddIcon, null), " Add files to DuckDB"), /*#__PURE__*/_react["default"].createElement("div", {
94
+ className: "bold"
95
+ }, "Supported formats: "), /*#__PURE__*/_react["default"].createElement("div", null, ".csv, .json, .geojson, .parquet, .arrow"), /*#__PURE__*/_react["default"].createElement("div", null, "Files you add will stay local to your browser."));
96
+ };
83
97
  var SchemaPanel = exports.SchemaPanel = function SchemaPanel(_ref) {
84
- var setTableSchema = _ref.setTableSchema;
98
+ var setTableSchema = _ref.setTableSchema,
99
+ droppedFile = _ref.droppedFile,
100
+ schemaUpdateTrigger = _ref.schemaUpdateTrigger;
85
101
  var _useState = (0, _react.useState)([]),
86
102
  _useState2 = (0, _slicedToArray2["default"])(_useState, 2),
87
103
  columnSchemas = _useState2[0],
@@ -90,9 +106,6 @@ var SchemaPanel = exports.SchemaPanel = function SchemaPanel(_ref) {
90
106
  var _state$demo;
91
107
  return state === null || state === void 0 || (_state$demo = state.demo) === null || _state$demo === void 0 || (_state$demo = _state$demo.keplerGl) === null || _state$demo === void 0 || (_state$demo = _state$demo.map) === null || _state$demo === void 0 ? void 0 : _state$demo.visState.datasets;
92
108
  });
93
- (0, _react.useEffect)(function () {
94
- getTableSchema();
95
- }, [datasets]);
96
109
  var getTableSchema = (0, _react.useCallback)( /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee() {
97
110
  var _tableResult$getChild, _ref3;
98
111
  var db, c, tableResult, tableNames, result, tableSchema;
@@ -121,13 +134,17 @@ var SchemaPanel = exports.SchemaPanel = function SchemaPanel(_ref) {
121
134
  tableSchema = getSchemaSuggestion(result);
122
135
  setColumnSchemas(result);
123
136
  setTableSchema(tableSchema);
124
- c.close();
125
- case 17:
137
+ _context.next = 18;
138
+ return c.close();
139
+ case 18:
126
140
  case "end":
127
141
  return _context.stop();
128
142
  }
129
143
  }, _callee);
130
- })), [setColumnSchemas, setTableSchema]);
144
+ })), [setColumnSchemas, setTableSchema, schemaUpdateTrigger]);
145
+ (0, _react.useEffect)(function () {
146
+ getTableSchema();
147
+ }, [datasets, droppedFile, getTableSchema]);
131
148
  return /*#__PURE__*/_react["default"].createElement(StyledSchemaPanel, null, columnSchemas !== null && columnSchemas !== void 0 && columnSchemas.length ? columnSchemas.map(function (data) {
132
149
  return /*#__PURE__*/_react["default"].createElement(_tree.Tree, {
133
150
  key: data.key,
@@ -145,6 +162,6 @@ var SchemaPanel = exports.SchemaPanel = function SchemaPanel(_ref) {
145
162
  return null;
146
163
  }
147
164
  });
148
- }) : /*#__PURE__*/_react["default"].createElement("div", null, "No tables found"));
165
+ }) : droppedFile ? /*#__PURE__*/_react["default"].createElement(StyledLoadingSpinnerWrapper, null, /*#__PURE__*/_react["default"].createElement(_components.LoadingSpinner, null)) : /*#__PURE__*/_react["default"].createElement(SchemaPanelDropMessage, null));
149
166
  };
150
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfcmVhY3RSZWR1eCIsIl9zdHlsZWRDb21wb25lbnRzIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsIl91dGlscyIsIl9jb25zdGFudHMiLCJfdHJlZSIsIl9pbml0IiwiX3RlbXBsYXRlT2JqZWN0IiwiX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlIiwiZSIsIldlYWtNYXAiLCJyIiwidCIsIl9fZXNNb2R1bGUiLCJfdHlwZW9mIiwiaGFzIiwiZ2V0IiwibiIsIl9fcHJvdG9fXyIsImEiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsInUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJpIiwic2V0IiwiU3R5bGVkU2NoZW1hUGFuZWwiLCJzdHlsZWQiLCJkaXYiLCJfdGFnZ2VkVGVtcGxhdGVMaXRlcmFsMiIsInByb3BzIiwidGhlbWUiLCJ0ZXh0Q29sb3IiLCJmb250RmFtaWx5IiwiZ2V0Q29sdW1uU2NoZW1hIiwiX3giLCJfeDIiLCJfZ2V0Q29sdW1uU2NoZW1hIiwiYXBwbHkiLCJhcmd1bWVudHMiLCJfYXN5bmNUb0dlbmVyYXRvcjIiLCJfcmVnZW5lcmF0b3IiLCJtYXJrIiwiX2NhbGxlZTIiLCJjIiwibmFtZSIsImNvbHVtblJlc3VsdCIsIndyYXAiLCJfY2FsbGVlMiQiLCJfY29udGV4dDIiLCJwcmV2IiwibmV4dCIsInF1ZXJ5IiwiY29uY2F0Iiwic2VudCIsImFicnVwdCIsImtleSIsIm9iamVjdCIsInR5cGUiLCJ0YWJsZU5hbWUiLCJjaGlsZHJlbiIsInNjaGVtYSIsImZpZWxkcyIsIm1hcCIsImZpZWxkIiwiX2ZpZWxkJG1ldGFkYXRhJGdldCIsImlzR2VvQXJyb3dDb2x1bW4iLCJtZXRhZGF0YSIsInN0YXJ0c1dpdGgiLCJhcnJvd1R5cGUiLCJmaWVsZFR5cGUiLCJBTExfRklFTERfVFlQRVMiLCJnZW9hcnJvdyIsImFycm93RGF0YVR5cGVUb0ZpZWxkVHlwZSIsInN0b3AiLCJnZXRTY2hlbWFTdWdnZXN0aW9uIiwicmVzdWx0IiwicmVkdWNlIiwiYWNjdSIsImRhdGEiLCJjb2x1bW5zIiwiY2hpbGQiLCJjb2x1bW5fbmFtZSIsInRhYmxlX25hbWUiLCJTY2hlbWFQYW5lbCIsImV4cG9ydHMiLCJfcmVmIiwic2V0VGFibGVTY2hlbWEiLCJfdXNlU3RhdGUiLCJ1c2VTdGF0ZSIsIl91c2VTdGF0ZTIiLCJfc2xpY2VkVG9BcnJheTIiLCJjb2x1bW5TY2hlbWFzIiwic2V0Q29sdW1uU2NoZW1hcyIsImRhdGFzZXRzIiwidXNlU2VsZWN0b3IiLCJzdGF0ZSIsIl9zdGF0ZSRkZW1vIiwiZGVtbyIsImtlcGxlckdsIiwidmlzU3RhdGUiLCJ1c2VFZmZlY3QiLCJnZXRUYWJsZVNjaGVtYSIsInVzZUNhbGxiYWNrIiwiX2NhbGxlZSIsIl90YWJsZVJlc3VsdCRnZXRDaGlsZCIsIl9yZWYzIiwiZGIiLCJ0YWJsZVJlc3VsdCIsInRhYmxlTmFtZXMiLCJ0YWJsZVNjaGVtYSIsIl9jYWxsZWUkIiwiX2NvbnRleHQiLCJnZXREdWNrREIiLCJjb25uZWN0IiwiZ2V0Q2hpbGRBdCIsInRvSlNPTiIsIlByb21pc2UiLCJhbGwiLCJjbG9zZSIsImNyZWF0ZUVsZW1lbnQiLCJsZW5ndGgiLCJUcmVlIiwidHJlZURhdGEiLCJyZW5kZXJOb2RlIiwibm9kZSIsIkRhdGFzZXROb2RlIiwiQ29sdW1uTm9kZSJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb21wb25lbnRzL3NjaGVtYS1wYW5lbC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVFxuLy8gQ29weXJpZ2h0IGNvbnRyaWJ1dG9ycyB0byB0aGUga2VwbGVyLmdsIHByb2plY3RcblxuaW1wb3J0IFJlYWN0LCB7dXNlQ2FsbGJhY2ssIHVzZUVmZmVjdCwgdXNlU3RhdGV9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7dXNlU2VsZWN0b3J9IGZyb20gJ3JlYWN0LXJlZHV4JztcbmltcG9ydCBzdHlsZWQgZnJvbSAnc3R5bGVkLWNvbXBvbmVudHMnO1xuaW1wb3J0IHthcnJvd0RhdGFUeXBlVG9GaWVsZFR5cGV9IGZyb20gJ0BrZXBsZXIuZ2wvdXRpbHMnO1xuaW1wb3J0IHtBTExfRklFTERfVFlQRVN9IGZyb20gJ0BrZXBsZXIuZ2wvY29uc3RhbnRzJztcbmltcG9ydCB7VmlzU3RhdGV9IGZyb20gJ0BrZXBsZXIuZ2wvc2NoZW1hcyc7XG5pbXBvcnQge1RyZWUsIERhdGFzZXROb2RlLCBDb2x1bW5Ob2RlLCBUcmVlTm9kZURhdGF9IGZyb20gJy4vdHJlZSc7XG5pbXBvcnQge2dldER1Y2tEQn0gZnJvbSAnLi4vaW5pdCc7XG5cbi8vIFRPRE8gbm90ZSB0aGF0IGRlbW8gc3RhdGUgaXMgYXZhaWxhYmxlIGluIGRlbW8tYXBwLCBidXQgbm90IHdoZW4gYWRkIG1vZHVsZXMgdG8gZGVwZW5kZW5jaWVzIGluIGEgY3VzdG9tIG1hcFxudHlwZSBTdGF0ZSA9IHtcbiAgZGVtbz86IHtcbiAgICBrZXBsZXJHbDoge1xuICAgICAgbWFwOiB7XG4gICAgICAgIHZpc1N0YXRlOiBWaXNTdGF0ZTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbn07XG5cbmNvbnN0IFN0eWxlZFNjaGVtYVBhbmVsID0gc3R5bGVkLmRpdmBcbiAgY29sb3I6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUudGV4dENvbG9yfTtcbiAgZm9udC1zaXplOiAxMnB4O1xuICBwYWRkaW5nOiAxMnB4O1xuICBmb250LWZhbWlseTogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5mb250RmFtaWx5fTtcbmA7XG5cbmFzeW5jIGZ1bmN0aW9uIGdldENvbHVtblNjaGVtYShjLCBuYW1lKSB7XG4gIGNvbnN0IGNvbHVtblJlc3VsdCA9IGF3YWl0IGMucXVlcnkoYFNlbGVjdCAqIGZyb20gJyR7bmFtZX0nIExJTUlUIDE7YCk7XG5cbiAgcmV0dXJuIHtcbiAgICBrZXk6IG5hbWUsXG4gICAgb2JqZWN0OiB7XG4gICAgICB0eXBlOiAnZGF0YXNldCcsXG4gICAgICB0YWJsZU5hbWU6IG5hbWVcbiAgICB9LFxuICAgIGNoaWxkcmVuOiBjb2x1bW5SZXN1bHQuc2NoZW1hLmZpZWxkcy5tYXAoZmllbGQgPT4ge1xuICAgICAgY29uc3QgaXNHZW9BcnJvd0NvbHVtbiA9IGZpZWxkLm1ldGFkYXRhLmdldCgnQVJST1c6ZXh0ZW5zaW9uOm5hbWUnKT8uc3RhcnRzV2l0aCgnZ2VvYXJyb3cnKTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGtleTogZmllbGQubmFtZSxcbiAgICAgICAgb2JqZWN0OiB7XG4gICAgICAgICAgdHlwZTogJ2NvbHVtbicsXG4gICAgICAgICAgbmFtZTogZmllbGQubmFtZSxcbiAgICAgICAgICBhcnJvd1R5cGU6IGZpZWxkLnR5cGUsXG4gICAgICAgICAgZmllbGRUeXBlOiBpc0dlb0Fycm93Q29sdW1uXG4gICAgICAgICAgICA/IEFMTF9GSUVMRF9UWVBFUy5nZW9hcnJvd1xuICAgICAgICAgICAgOiBhcnJvd0RhdGFUeXBlVG9GaWVsZFR5cGUoZmllbGQudHlwZSlcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICB9KVxuICB9O1xufVxuXG5mdW5jdGlvbiBnZXRTY2hlbWFTdWdnZXN0aW9uKHJlc3VsdCkge1xuICByZXR1cm4gcmVzdWx0LnJlZHVjZSgoYWNjdSwgZGF0YSkgPT4ge1xuICAgIGNvbnN0IGNvbHVtbnMgPSBkYXRhLmNoaWxkcmVuLm1hcChjaGlsZCA9PiAoe1xuICAgICAgY29sdW1uX25hbWU6IGNoaWxkLmtleSxcbiAgICAgIHRhYmxlX25hbWU6IGRhdGEua2V5XG4gICAgfSkpO1xuICAgIHJldHVybiBhY2N1LmNvbmNhdChjb2x1bW5zKTtcbiAgfSwgW10pO1xufVxuZXhwb3J0IGNvbnN0IFNjaGVtYVBhbmVsID0gKHtzZXRUYWJsZVNjaGVtYX0pID0+IHtcbiAgY29uc3QgW2NvbHVtblNjaGVtYXMsIHNldENvbHVtblNjaGVtYXNdID0gdXNlU3RhdGU8VHJlZU5vZGVEYXRhPHt0eXBlOiBzdHJpbmd9PltdPihbXSk7XG4gIGNvbnN0IGRhdGFzZXRzID0gdXNlU2VsZWN0b3IoKHN0YXRlOiBTdGF0ZSkgPT4gc3RhdGU/LmRlbW8/LmtlcGxlckdsPy5tYXA/LnZpc1N0YXRlLmRhdGFzZXRzKTtcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBnZXRUYWJsZVNjaGVtYSgpO1xuICB9LCBbZGF0YXNldHNdKTtcbiAgY29uc3QgZ2V0VGFibGVTY2hlbWEgPSB1c2VDYWxsYmFjayhhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgZGIgPSBhd2FpdCBnZXREdWNrREIoKTtcbiAgICBjb25zdCBjID0gYXdhaXQgZGIuY29ubmVjdCgpO1xuXG4gICAgY29uc3QgdGFibGVSZXN1bHQgPSBhd2FpdCBjLnF1ZXJ5KCdTSE9XIFRBQkxFUzsnKTtcblxuICAgIGNvbnN0IHRhYmxlTmFtZXMgPSB0YWJsZVJlc3VsdC5nZXRDaGlsZEF0KDApPy50b0pTT04oKTtcblxuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IFByb21pc2UuYWxsKCh0YWJsZU5hbWVzIHx8IFtdKT8ubWFwKG5hbWUgPT4gZ2V0Q29sdW1uU2NoZW1hKGMsIG5hbWUpKSk7XG4gICAgY29uc3QgdGFibGVTY2hlbWEgPSBnZXRTY2hlbWFTdWdnZXN0aW9uKHJlc3VsdCk7XG5cbiAgICBzZXRDb2x1bW5TY2hlbWFzKHJlc3VsdCk7XG4gICAgc2V0VGFibGVTY2hlbWEodGFibGVTY2hlbWEpO1xuICAgIGMuY2xvc2UoKTtcbiAgfSwgW3NldENvbHVtblNjaGVtYXMsIHNldFRhYmxlU2NoZW1hXSk7XG5cbiAgcmV0dXJuIChcbiAgICA8U3R5bGVkU2NoZW1hUGFuZWw+XG4gICAgICB7Y29sdW1uU2NoZW1hcz8ubGVuZ3RoID8gKFxuICAgICAgICBjb2x1bW5TY2hlbWFzLm1hcChkYXRhID0+IChcbiAgICAgICAgICA8VHJlZVxuICAgICAgICAgICAga2V5PXtkYXRhLmtleX1cbiAgICAgICAgICAgIHRyZWVEYXRhPXtkYXRhfVxuICAgICAgICAgICAgcmVuZGVyTm9kZT17bm9kZSA9PiB7XG4gICAgICAgICAgICAgIGlmIChub2RlLm9iamVjdC50eXBlID09PSAnZGF0YXNldCcpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gPERhdGFzZXROb2RlIG5vZGU9e25vZGV9IC8+O1xuICAgICAgICAgICAgICB9IGVsc2UgaWYgKG5vZGUub2JqZWN0LnR5cGUgPT09ICdjb2x1bW4nKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIDxDb2x1bW5Ob2RlIG5vZGU9e25vZGV9IC8+O1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgfX1cbiAgICAgICAgICAvPlxuICAgICAgICApKVxuICAgICAgKSA6IChcbiAgICAgICAgPGRpdj5ObyB0YWJsZXMgZm91bmQ8L2Rpdj5cbiAgICAgICl9XG4gICAgPC9TdHlsZWRTY2hlbWFQYW5lbD5cbiAgKTtcbn07XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztBQUdBLElBQUFBLE1BQUEsR0FBQUMsdUJBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFDLFdBQUEsR0FBQUQsT0FBQTtBQUNBLElBQUFFLGlCQUFBLEdBQUFDLHNCQUFBLENBQUFILE9BQUE7QUFDQSxJQUFBSSxNQUFBLEdBQUFKLE9BQUE7QUFDQSxJQUFBSyxVQUFBLEdBQUFMLE9BQUE7QUFFQSxJQUFBTSxLQUFBLEdBQUFOLE9BQUE7QUFDQSxJQUFBTyxLQUFBLEdBQUFQLE9BQUE7QUFBa0MsSUFBQVEsZUFBQSxFQVZsQztBQUNBO0FBQUEsU0FBQUMseUJBQUFDLENBQUEsNkJBQUFDLE9BQUEsbUJBQUFDLENBQUEsT0FBQUQsT0FBQSxJQUFBRSxDQUFBLE9BQUFGLE9BQUEsWUFBQUYsd0JBQUEsWUFBQUEseUJBQUFDLENBQUEsV0FBQUEsQ0FBQSxHQUFBRyxDQUFBLEdBQUFELENBQUEsS0FBQUYsQ0FBQTtBQUFBLFNBQUFYLHdCQUFBVyxDQUFBLEVBQUFFLENBQUEsU0FBQUEsQ0FB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
167
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfcmVhY3RSZWR1eCIsIl9zdHlsZWRDb21wb25lbnRzIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsIl9jb21wb25lbnRzIiwiX3Byb2Nlc3NvcnMiLCJfdHJlZSIsIl9pbml0IiwiX2R1Y2tkYlRhYmxlVXRpbHMiLCJfdGVtcGxhdGVPYmplY3QiLCJfdGVtcGxhdGVPYmplY3QyIiwiX3RlbXBsYXRlT2JqZWN0MyIsIl90ZW1wbGF0ZU9iamVjdDQiLCJfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUiLCJlIiwiV2Vha01hcCIsInIiLCJ0IiwiX19lc01vZHVsZSIsIl90eXBlb2YiLCJoYXMiLCJnZXQiLCJuIiwiX19wcm90b19fIiwiYSIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwidSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImkiLCJzZXQiLCJTdHlsZWRTY2hlbWFQYW5lbCIsInN0eWxlZCIsImRpdiIsIl90YWdnZWRUZW1wbGF0ZUxpdGVyYWwyIiwicHJvcHMiLCJ0aGVtZSIsInRleHRDb2xvciIsImZvbnRGYW1pbHkiLCJTdHlsZWRMb2FkaW5nU3Bpbm5lcldyYXBwZXIiLCJnZXRDb2x1bW5TY2hlbWEiLCJfeCIsIl94MiIsIl9nZXRDb2x1bW5TY2hlbWEiLCJhcHBseSIsImFyZ3VtZW50cyIsIl9hc3luY1RvR2VuZXJhdG9yMiIsIl9yZWdlbmVyYXRvciIsIm1hcmsiLCJfY2FsbGVlMiIsImNvbm5lY3Rpb24iLCJ0YWJsZU5hbWUiLCJjb2x1bW5SZXN1bHQiLCJjb2x1bW5EZXNjcmliZSIsImtlcGxlckZpZWxkcyIsIndyYXAiLCJfY2FsbGVlMiQiLCJfY29udGV4dDIiLCJwcmV2IiwibmV4dCIsInF1ZXJ5IiwiY29uY2F0Iiwic2VudCIsImdldER1Y2tEQkNvbHVtblR5cGVzIiwiYXJyb3dTY2hlbWFUb0ZpZWxkcyIsImdldER1Y2tEQkNvbHVtblR5cGVzTWFwIiwiYWJydXB0Iiwia2V5Iiwib2JqZWN0IiwidHlwZSIsImNoaWxkcmVuIiwic2NoZW1hIiwiZmllbGRzIiwibWFwIiwiZmllbGQiLCJmaWVsZEluZGV4IiwibmFtZSIsImFycm93VHlwZSIsImZpZWxkVHlwZSIsInN0b3AiLCJnZXRTY2hlbWFTdWdnZXN0aW9uIiwicmVzdWx0IiwicmVkdWNlIiwiYWNjdSIsImRhdGEiLCJjb2x1bW5zIiwiY2hpbGQiLCJjb2x1bW5fbmFtZSIsInRhYmxlX25hbWUiLCJTdHlsZWRTY2hlbWFQYW5lbERyb3BNZXNzYWdlIiwiU3R5bGVkQWRkSWNvbiIsIkljb25zIiwiQWRkIiwiU2NoZW1hUGFuZWxEcm9wTWVzc2FnZSIsImV4cG9ydHMiLCJjcmVhdGVFbGVtZW50IiwiY2xhc3NOYW1lIiwiU2NoZW1hUGFuZWwiLCJfcmVmIiwic2V0VGFibGVTY2hlbWEiLCJkcm9wcGVkRmlsZSIsInNjaGVtYVVwZGF0ZVRyaWdnZXIiLCJfdXNlU3RhdGUiLCJ1c2VTdGF0ZSIsIl91c2VTdGF0ZTIiLCJfc2xpY2VkVG9BcnJheTIiLCJjb2x1bW5TY2hlbWFzIiwic2V0Q29sdW1uU2NoZW1hcyIsImRhdGFzZXRzIiwidXNlU2VsZWN0b3IiLCJzdGF0ZSIsIl9zdGF0ZSRkZW1vIiwiZGVtbyIsImtlcGxlckdsIiwidmlzU3RhdGUiLCJnZXRUYWJsZVNjaGVtYSIsInVzZUNhbGxiYWNrIiwiX2NhbGxlZSIsIl90YWJsZVJlc3VsdCRnZXRDaGlsZCIsIl9yZWYzIiwiZGIiLCJjIiwidGFibGVSZXN1bHQiLCJ0YWJsZU5hbWVzIiwidGFibGVTY2hlbWEiLCJfY2FsbGVlJCIsIl9jb250ZXh0IiwiZ2V0RHVja0RCIiwiY29ubmVjdCIsImdldENoaWxkQXQiLCJ0b0pTT04iLCJQcm9taXNlIiwiYWxsIiwiY2xvc2UiLCJ1c2VFZmZlY3QiLCJsZW5ndGgiLCJUcmVlIiwidHJlZURhdGEiLCJyZW5kZXJOb2RlIiwibm9kZSIsIkRhdGFzZXROb2RlIiwiQ29sdW1uTm9kZSIsIkxvYWRpbmdTcGlubmVyIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbXBvbmVudHMvc2NoZW1hLXBhbmVsLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUXG4vLyBDb3B5cmlnaHQgY29udHJpYnV0b3JzIHRvIHRoZSBrZXBsZXIuZ2wgcHJvamVjdFxuXG5pbXBvcnQgUmVhY3QsIHt1c2VDYWxsYmFjaywgdXNlRWZmZWN0LCB1c2VTdGF0ZX0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHt1c2VTZWxlY3Rvcn0gZnJvbSAncmVhY3QtcmVkdXgnO1xuaW1wb3J0IHN0eWxlZCBmcm9tICdzdHlsZWQtY29tcG9uZW50cyc7XG5pbXBvcnQge0FzeW5jRHVja0RCQ29ubmVjdGlvbn0gZnJvbSAnQGR1Y2tkYi9kdWNrZGItd2FzbSc7XG5cbmltcG9ydCB7TG9hZGluZ1NwaW5uZXIsIEljb25zfSBmcm9tICdAa2VwbGVyLmdsL2NvbXBvbmVudHMnO1xuaW1wb3J0IHthcnJvd1NjaGVtYVRvRmllbGRzfSBmcm9tICdAa2VwbGVyLmdsL3Byb2Nlc3NvcnMnO1xuaW1wb3J0IHtWaXNTdGF0ZX0gZnJvbSAnQGtlcGxlci5nbC9zY2hlbWFzJztcblxuaW1wb3J0IHtUcmVlLCBEYXRhc2V0Tm9kZSwgQ29sdW1uTm9kZSwgVHJlZU5vZGVEYXRhfSBmcm9tICcuL3RyZWUnO1xuaW1wb3J0IHtnZXREdWNrREJ9IGZyb20gJy4uL2luaXQnO1xuaW1wb3J0IHtnZXREdWNrREJDb2x1bW5UeXBlcywgZ2V0RHVja0RCQ29sdW1uVHlwZXNNYXB9IGZyb20gJy4uL3RhYmxlL2R1Y2tkYi10YWJsZS11dGlscyc7XG5cbi8vIFRPRE8gbm90ZSB0aGF0IGRlbW8gc3RhdGUgaXMgYXZhaWxhYmxlIGluIGRlbW8tYXBwLCBidXQgbm90IHdoZW4gYWRkIG1vZHVsZXMgdG8gZGVwZW5kZW5jaWVzIGluIGEgY3VzdG9tIG1hcFxudHlwZSBTdGF0ZSA9IHtcbiAgZGVtbz86IHtcbiAgICBrZXBsZXJHbDoge1xuICAgICAgbWFwOiB7XG4gICAgICAgIHZpc1N0YXRlOiBWaXNTdGF0ZTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbn07XG5cbmNvbnN0IFN0eWxlZFNjaGVtYVBhbmVsID0gc3R5bGVkLmRpdmBcbiAgY29sb3I6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUudGV4dENvbG9yfTtcbiAgZm9udC1zaXplOiAxMnB4O1xuICBwYWRkaW5nOiAxMnB4O1xuICBmb250LWZhbWlseTogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5mb250RmFtaWx5fTtcbiAgaGVpZ2h0OiAxMDAlO1xuYDtcblxuY29uc3QgU3R5bGVkTG9hZGluZ1NwaW5uZXJXcmFwcGVyID0gc3R5bGVkLmRpdmBcbiAgZGlzcGxheTogZmxleDtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGhlaWdodDogMTAwJTtcbmA7XG5cbmFzeW5jIGZ1bmN0aW9uIGdldENvbHVtblNjaGVtYShjb25uZWN0aW9uOiBBc3luY0R1Y2tEQkNvbm5lY3Rpb24sIHRhYmxlTmFtZTogc3RyaW5nKSB7XG4gIGNvbnN0IGNvbHVtblJlc3VsdCA9IGF3YWl0IGNvbm5lY3Rpb24ucXVlcnkoYFNlbGVjdCAqIGZyb20gJyR7dGFibGVOYW1lfScgTElNSVQgMTtgKTtcblxuICBjb25zdCBjb2x1bW5EZXNjcmliZSA9IGF3YWl0IGdldER1Y2tEQkNvbHVtblR5cGVzKGNvbm5lY3Rpb24sIHRhYmxlTmFtZSk7XG4gIGNvbnN0IGtlcGxlckZpZWxkcyA9IGFycm93U2NoZW1hVG9GaWVsZHMoY29sdW1uUmVzdWx0LCBnZXREdWNrREJDb2x1bW5UeXBlc01hcChjb2x1bW5EZXNjcmliZSkpO1xuXG4gIHJldHVybiB7XG4gICAga2V5OiB0YWJsZU5hbWUsXG4gICAgb2JqZWN0OiB7XG4gICAgICB0eXBlOiAnZGF0YXNldCcsXG4gICAgICB0YWJsZU5hbWU6IHRhYmxlTmFtZVxuICAgIH0sXG4gICAgY2hpbGRyZW46IGNvbHVtblJlc3VsdC5zY2hlbWEuZmllbGRzLm1hcCgoZmllbGQsIGZpZWxkSW5kZXgpID0+IHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGtleTogZmllbGQubmFtZSxcbiAgICAgICAgb2JqZWN0OiB7XG4gICAgICAgICAgdHlwZTogJ2NvbHVtbicsXG4gICAgICAgICAgbmFtZTogZmllbGQubmFtZSxcbiAgICAgICAgICBhcnJvd1R5cGU6IGZpZWxkLnR5cGUsXG4gICAgICAgICAgZmllbGRUeXBlOiBrZXBsZXJGaWVsZHNbZmllbGRJbmRleF0udHlwZVxuICAgICAgICB9XG4gICAgICB9O1xuICAgIH0pXG4gIH07XG59XG5cbmV4cG9ydCB0eXBlIFNjaGVtYVN1Z2dlc3Rpb24gPSB7Y29sdW1uX25hbWU6IHN0cmluZzsgdGFibGVfbmFtZTogc3RyaW5nfTtcblxuZnVuY3Rpb24gZ2V0U2NoZW1hU3VnZ2VzdGlvbihyZXN1bHQ6IHtrZXk6IHN0cmluZzsgY2hpbGRyZW46IHtrZXk6IHN0cmluZ31bXX1bXSkge1xuICByZXR1cm4gcmVzdWx0LnJlZHVjZSgoYWNjdSwgZGF0YSkgPT4ge1xuICAgIGNvbnN0IGNvbHVtbnMgPSBkYXRhLmNoaWxkcmVuLm1hcChjaGlsZCA9PiAoe1xuICAgICAgY29sdW1uX25hbWU6IGNoaWxkLmtleSxcbiAgICAgIHRhYmxlX25hbWU6IGRhdGEua2V5XG4gICAgfSkpO1xuICAgIHJldHVybiBhY2N1LmNvbmNhdChjb2x1bW5zKTtcbiAgfSwgW10gYXMgU2NoZW1hU3VnZ2VzdGlvbltdKTtcbn1cblxudHlwZSBTY2hlbWFQYW5lbFByb3BzID0ge1xuICBzZXRUYWJsZVNjaGVtYTogKHRhYmxlU2NoZW1hOiBTY2hlbWFTdWdnZXN0aW9uW10pID0+IHZvaWQ7XG4gIGRyb3BwZWRGaWxlOiBGaWxlIHwgbnVsbDtcbiAgc2NoZW1hVXBkYXRlVHJpZ2dlcjogbnVtYmVyO1xufTtcblxuY29uc3QgU3R5bGVkU2NoZW1hUGFuZWxEcm9wTWVzc2FnZSA9IHN0eWxlZC5kaXZgXG4gIGRpc3BsYXk6IGZsZXg7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBoZWlnaHQ6IDEwMCU7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcblxuICBkaXYge1xuICAgIG1hcmdpbjogNXB4O1xuICB9XG4gIC5oZWFkZXIge1xuICAgIGZvbnQtc2l6ZTogMTVweDtcbiAgfVxuICAuYm9sZCB7XG4gICAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgfVxuYDtcblxuY29uc3QgU3R5bGVkQWRkSWNvbiA9IHN0eWxlZChJY29ucy5BZGQpYFxuICBkaXNwbGF5OiBpbmxpbmU7XG4gIG1hcmdpbi10b3A6IC0zcHg7XG5gO1xuXG5leHBvcnQgY29uc3QgU2NoZW1hUGFuZWxEcm9wTWVzc2FnZSA9ICgpID0+IHtcbiAgcmV0dXJuIChcbiAgICA8U3R5bGVkU2NoZW1hUGFuZWxEcm9wTWVzc2FnZT5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwiaGVhZGVyXCI+XG4gICAgICAgIDxTdHlsZWRBZGRJY29uIC8+IEFkZCBmaWxlcyB0byBEdWNrREJcbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJib2xkXCI+U3VwcG9ydGVkIGZvcm1hdHM6IDwvZGl2PlxuICAgICAgPGRpdj4uY3N2LCAuanNvbiwgLmdlb2pzb24sIC5wYXJxdWV0LCAuYXJyb3c8L2Rpdj5cbiAgICAgIDxkaXY+RmlsZXMgeW91IGFkZCB3aWxsIHN0YXkgbG9jYWwgdG8geW91ciBicm93c2VyLjwvZGl2PlxuICAgIDwvU3R5bGVkU2NoZW1hUGFuZWxEcm9wTWVzc2FnZT5cbiAgKTtcbn07XG5cbmV4cG9ydCBjb25zdCBTY2hlbWFQYW5lbCA9ICh7XG4gIHNldFRhYmxlU2NoZW1hLFxuICBkcm9wcGVkRmlsZSxcbiAgc2NoZW1hVXBkYXRlVHJpZ2dlclxufTogU2NoZW1hUGFuZWxQcm9wcykgPT4ge1xuICBjb25zdCBbY29sdW1uU2NoZW1hcywgc2V0Q29sdW1uU2NoZW1hc10gPSB1c2VTdGF0ZTxUcmVlTm9kZURhdGE8e3R5cGU6IHN0cmluZ30+W10+KFtdKTtcbiAgY29uc3QgZGF0YXNldHMgPSB1c2VTZWxlY3Rvcigoc3RhdGU6IFN0YXRlKSA9PiBzdGF0ZT8uZGVtbz8ua2VwbGVyR2w/Lm1hcD8udmlzU3RhdGUuZGF0YXNldHMpO1xuXG4gIGNvbnN0IGdldFRhYmxlU2NoZW1hID0gdXNlQ2FsbGJhY2soYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IGRiID0gYXdhaXQgZ2V0RHVja0RCKCk7XG4gICAgY29uc3QgYyA9IGF3YWl0IGRiLmNvbm5lY3QoKTtcblxuICAgIGNvbnN0IHRhYmxlUmVzdWx0ID0gYXdhaXQgYy5xdWVyeSgnU0hPVyBUQUJMRVM7Jyk7XG5cbiAgICBjb25zdCB0YWJsZU5hbWVzOiBzdHJpbmdbXSB8IHVuZGVmaW5lZCA9IHRhYmxlUmVzdWx0LmdldENoaWxkQXQoMCk/LnRvSlNPTigpO1xuXG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgUHJvbWlzZS5hbGwoKHRhYmxlTmFtZXMgfHwgW10pPy5tYXAobmFtZSA9PiBnZXRDb2x1bW5TY2hlbWEoYywgbmFtZSkpKTtcbiAgICBjb25zdCB0YWJsZVNjaGVtYSA9IGdldFNjaGVtYVN1Z2dlc3Rpb24ocmVzdWx0KTtcblxuICAgIHNldENvbHVtblNjaGVtYXMocmVzdWx0KTtcbiAgICBzZXRUYWJsZVNjaGVtYSh0YWJsZVNjaGVtYSk7XG4gICAgYXdhaXQgYy5jbG9zZSgpO1xuXG4gICAgLy8gc2NoZW1hVXBkYXRlVHJpZ2dlciBpbmRpY2F0ZXMgcG9zc2libGUgY2hhbmdlIGluIER1Y2tEQlxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC1ob29rcy9leGhhdXN0aXZlLWRlcHNcbiAgfSwgW3NldENvbHVtblNjaGVtYXMsIHNldFRhYmxlU2NoZW1hLCBzY2hlbWFVcGRhdGVUcmlnZ2VyXSk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBnZXRUYWJsZVNjaGVtYSgpO1xuICB9LCBbZGF0YXNldHMsIGRyb3BwZWRGaWxlLCBnZXRUYWJsZVNjaGVtYV0pO1xuXG4gIHJldHVybiAoXG4gICAgPFN0eWxlZFNjaGVtYVBhbmVsPlxuICAgICAge2NvbHVtblNjaGVtYXM/Lmxlbmd0aCA/IChcbiAgICAgICAgY29sdW1uU2NoZW1hcy5tYXAoZGF0YSA9PiAoXG4gICAgICAgICAgPFRyZWVcbiAgICAgICAgICAgIGtleT17ZGF0YS5rZXl9XG4gICAgICAgICAgICB0cmVlRGF0YT17ZGF0YX1cbiAgICAgICAgICAgIHJlbmRlck5vZGU9e25vZGUgPT4ge1xuICAgICAgICAgICAgICBpZiAobm9kZS5vYmplY3QudHlwZSA9PT0gJ2RhdGFzZXQnKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIDxEYXRhc2V0Tm9kZSBub2RlPXtub2RlfSAvPjtcbiAgICAgICAgICAgICAgfSBlbHNlIGlmIChub2RlLm9iamVjdC50eXBlID09PSAnY29sdW1uJykge1xuICAgICAgICAgICAgICAgIHJldHVybiA8Q29sdW1uTm9kZSBub2RlPXtub2RlfSAvPjtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgLz5cbiAgICAgICAgKSlcbiAgICAgICkgOiBkcm9wcGVkRmlsZSA/IChcbiAgICAgICAgPFN0eWxlZExvYWRpbmdTcGlubmVyV3JhcHBlcj5cbiAgICAgICAgICA8TG9hZGluZ1NwaW5uZXIgLz5cbiAgICAgICAgPC9TdHlsZWRMb2FkaW5nU3Bpbm5lcldyYXBwZXI+XG4gICAgICApIDogKFxuICAgICAgICA8U2NoZW1hUGFuZWxEcm9wTWVzc2FnZSAvPlxuICAgICAgKX1cbiAgICA8L1N0eWxlZFNjaGVtYVBhbmVsPlxuICApO1xufTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0FBR0EsSUFBQUEsTUFBQSxHQUFBQyx1QkFBQSxDQUFBQyxPQUFB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