@kepler.gl/components 3.3.0-alpha.1 → 3.3.0-alpha.2

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 (126) hide show
  1. package/dist/common/action-panel.js +1 -1
  2. package/dist/common/color-legend.d.ts +1 -1
  3. package/dist/common/data-table/canvas.d.ts +1 -1
  4. package/dist/common/data-table/index.d.ts +1 -1
  5. package/dist/common/dnd-layer-items.d.ts +4 -0
  6. package/dist/common/dnd-layer-items.js +6 -2
  7. package/dist/common/error-boundary.d.ts +1 -1
  8. package/dist/common/file-uploader/file-upload.d.ts +1 -1
  9. package/dist/common/flex-container.d.ts +15 -7
  10. package/dist/common/icon-button.d.ts +53 -6
  11. package/dist/common/icons/arrow-down-full.d.ts +2 -1
  12. package/dist/common/icons/arrow-down-full.js +1 -1
  13. package/dist/common/icons/folder.d.ts +10 -0
  14. package/dist/common/icons/folder.js +51 -0
  15. package/dist/common/icons/index.d.ts +1 -0
  16. package/dist/common/icons/index.js +8 -1
  17. package/dist/common/icons/timeline-marker.d.ts +2 -1
  18. package/dist/common/icons/timeline-marker.js +1 -1
  19. package/dist/common/item-selector/dropdown-list.d.ts +1 -1
  20. package/dist/common/item-selector/dropdown-list.js +1 -1
  21. package/dist/common/item-selector/dropdown-select.d.ts +13 -7
  22. package/dist/common/item-selector/item-selector.d.ts +1 -1
  23. package/dist/common/item-selector/item-selector.js +1 -1
  24. package/dist/common/item-selector/typeahead.d.ts +4 -4
  25. package/dist/common/item-selector/typeahead.js +1 -3
  26. package/dist/common/layout-splitter.d.ts +45 -0
  27. package/dist/common/layout-splitter.js +231 -0
  28. package/dist/common/line-chart.d.ts +7 -3
  29. package/dist/common/line-chart.js +179 -59
  30. package/dist/common/modal.d.ts +11 -5
  31. package/dist/common/modal.js +1 -1
  32. package/dist/common/portaled.d.ts +17 -17
  33. package/dist/common/range-slider.js +1 -3
  34. package/dist/common/slider/mouse-event.d.ts +1 -1
  35. package/dist/common/slider/mouse-event.js +1 -2
  36. package/dist/common/slider/slider-bar-handle.d.ts +1 -1
  37. package/dist/common/slider/slider-bar-handle.js +1 -1
  38. package/dist/common/slider/slider-handle.d.ts +3 -3
  39. package/dist/common/slider/slider-handle.js +1 -1
  40. package/dist/common/slider/slider.d.ts +4 -4
  41. package/dist/common/slider/slider.js +1 -1
  42. package/dist/common/styled-components.d.ts +627 -177
  43. package/dist/common/vertical-toolbar.d.ts +12 -2
  44. package/dist/container.d.ts +3 -2
  45. package/dist/container.js +2 -2
  46. package/dist/context.d.ts +1 -1
  47. package/dist/context.js +1 -1
  48. package/dist/dnd-context.d.ts +4 -3
  49. package/dist/dnd-context.js +64 -9
  50. package/dist/effects/compact-color-picker.d.ts +1 -1
  51. package/dist/effects/effect-configurator.d.ts +2 -4
  52. package/dist/effects/effect-time-configurator.js +1 -1
  53. package/dist/effects/effect-type-list-item.d.ts +1 -1
  54. package/dist/filters/components.d.ts +7 -5
  55. package/dist/filters/filter-panels/filter-synced-dataset-panel.d.ts +6 -2
  56. package/dist/geocoder-panel.d.ts +2 -2
  57. package/dist/geocoder-panel.js +6 -7
  58. package/dist/hooks/use-dnd-layers.d.ts +4 -3
  59. package/dist/hooks/use-dnd-layers.js +103 -42
  60. package/dist/index.d.ts +3 -2
  61. package/dist/index.js +38 -9
  62. package/dist/injector.d.ts +1 -1
  63. package/dist/kepler-gl.d.ts +167 -27
  64. package/dist/kepler-gl.js +3 -2
  65. package/dist/loading-indicator.d.ts +1 -1
  66. package/dist/map/layer-hover-info.d.ts +7 -3
  67. package/dist/map/layer-hover-info.js +58 -22
  68. package/dist/map/map-control-panel.js +3 -2
  69. package/dist/map/map-control-toolbar.d.ts +29 -4
  70. package/dist/map/map-control.d.ts +11 -4
  71. package/dist/map/map-control.js +7 -6
  72. package/dist/map/map-legend-panel.d.ts +11 -2
  73. package/dist/map/map-legend-panel.js +19 -2
  74. package/dist/map/map-legend.d.ts +19 -2
  75. package/dist/map/map-legend.js +141 -27
  76. package/dist/map/split-map-button.d.ts +6 -1
  77. package/dist/map/split-map-button.js +113 -19
  78. package/dist/map-container.js +20 -3
  79. package/dist/maps-layout.d.ts +3 -0
  80. package/dist/maps-layout.js +86 -26
  81. package/dist/modal-container.d.ts +1 -1
  82. package/dist/modals/cloud-tile.d.ts +1 -2
  83. package/dist/modals/export-map-modal/components.d.ts +9 -5
  84. package/dist/modals/export-video-modal.d.ts +3 -0
  85. package/dist/modals/export-video-modal.js +79 -46
  86. package/dist/modals/export-video-modal.spec.js +2 -2
  87. package/dist/modals/hubble-utils.d.ts +16 -0
  88. package/dist/modals/hubble-utils.js +98 -1
  89. package/dist/modals/modal-dialog.d.ts +1 -1
  90. package/dist/modals/share-map-modal.d.ts +2 -4
  91. package/dist/modals/swipe-composite-utils.d.ts +10 -0
  92. package/dist/modals/swipe-composite-utils.js +108 -0
  93. package/dist/modals/swipe-export-settings.d.ts +24 -0
  94. package/dist/modals/swipe-export-settings.js +370 -0
  95. package/dist/modals/swipe-export-video-container.d.ts +122 -0
  96. package/dist/modals/swipe-export-video-container.js +630 -0
  97. package/dist/modals/swipe-export-video-preview.d.ts +68 -0
  98. package/dist/modals/swipe-export-video-preview.js +339 -0
  99. package/dist/modals/tilesets-modals/tileset-raster-form.js +1 -5
  100. package/dist/side-panel/filter-panel/filter-panel-header.d.ts +7 -3
  101. package/dist/side-panel/layer-manager.d.ts +5 -4
  102. package/dist/side-panel/layer-manager.js +16 -4
  103. package/dist/side-panel/layer-panel/color-selector.d.ts +6 -4
  104. package/dist/side-panel/layer-panel/custom-palette.d.ts +3 -5
  105. package/dist/side-panel/layer-panel/dataset-layer-group.d.ts +2 -1
  106. package/dist/side-panel/layer-panel/dataset-layer-group.js +1 -1
  107. package/dist/side-panel/layer-panel/dataset-layer-section.d.ts +2 -1
  108. package/dist/side-panel/layer-panel/dataset-layer-section.js +1 -1
  109. package/dist/side-panel/layer-panel/layer-config-group.d.ts +5 -11
  110. package/dist/side-panel/layer-panel/layer-configurator.js +130 -82
  111. package/dist/side-panel/layer-panel/layer-group-header.d.ts +15 -0
  112. package/dist/side-panel/layer-panel/layer-group-header.js +179 -0
  113. package/dist/side-panel/layer-panel/layer-list.d.ts +9 -4
  114. package/dist/side-panel/layer-panel/layer-list.js +197 -40
  115. package/dist/side-panel/layer-panel/vector-tile-layer-configurator.js +2 -10
  116. package/dist/side-panel/panel-tab.d.ts +1 -3
  117. package/dist/side-panel/panel-view-list-toggle.d.ts +4 -4
  118. package/dist/side-panel/side-bar.d.ts +1 -6
  119. package/dist/side-panel.d.ts +1 -1
  120. package/dist/types.d.ts +2 -2
  121. package/dist/types.js +1 -1
  122. package/package.json +29 -35
  123. package/dist/map/layer-selector-panel.d.ts +0 -21
  124. package/dist/map/layer-selector-panel.js +0 -85
  125. package/dist/side-panel/layer-panel/radius-by-zoom-input.d.ts +0 -11
  126. package/dist/side-panel/layer-panel/radius-by-zoom-input.js +0 -220
@@ -0,0 +1,15 @@
1
+ import React from 'react';
2
+ import { LayerOrderGroup } from '@kepler.gl/types';
3
+ import PanelHeaderActionFactory from '../panel-header-action';
4
+ export type LayerGroupHeaderProps = {
5
+ layerGroup: LayerOrderGroup;
6
+ isLayerGroupContentOpen?: boolean;
7
+ onToggleLayerGroupContent?: () => void;
8
+ listeners?: any;
9
+ className?: string;
10
+ };
11
+ declare function LayerGroupHeaderFactory(PanelHeaderAction: ReturnType<typeof PanelHeaderActionFactory>): React.FC<LayerGroupHeaderProps>;
12
+ declare namespace LayerGroupHeaderFactory {
13
+ var deps: (typeof PanelHeaderActionFactory)[];
14
+ }
15
+ export default LayerGroupHeaderFactory;
@@ -0,0 +1,179 @@
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 _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
10
+ var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
11
+ var _react = _interopRequireWildcard(require("react"));
12
+ var _reactRedux = require("react-redux");
13
+ var _styledComponents = _interopRequireDefault(require("styled-components"));
14
+ var _actions = require("@kepler.gl/actions");
15
+ var _reducers = require("@kepler.gl/reducers");
16
+ var _styledComponents2 = require("../../common/styled-components");
17
+ var _layerPanelHeader = require("./layer-panel-header");
18
+ var _icons = require("../../common/icons");
19
+ var _panelHeaderAction = _interopRequireDefault(require("../panel-header-action"));
20
+ var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7, _templateObject8; // SPDX-License-Identifier: MIT
21
+ // Copyright contributors to the kepler.gl project
22
+ 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
+ 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
+ var GROUP_COLORS = ['#4BA9C9', '#E8A838', '#8BC58B', '#D67AB1', '#7B8FF7', '#F2726F', '#56C4A0', '#C9A84B'];
25
+ function getGroupColor(id) {
26
+ var hash = 0;
27
+ for (var i = 0; i < id.length; i++) {
28
+ hash = (hash << 5) - hash + id.charCodeAt(i) | 0;
29
+ }
30
+ return GROUP_COLORS[Math.abs(hash) % GROUP_COLORS.length];
31
+ }
32
+ var RemoveAction = _styledComponents["default"].div(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n opacity: 0;\n transition: opacity 0.15s ease;\n .panel--header__action {\n height: 16px;\n }\n"])));
33
+ var Container = (0, _styledComponents["default"])(_styledComponents2.StyledPanelHeader)(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2["default"])(["\n position: relative;\n height: ", "px;\n justify-content: space-between;\n color: ", ";\n padding-right: 10px;\n align-items: center;\n overflow: hidden;\n\n border: 1px solid ", ";\n\n &:hover {\n cursor: pointer;\n background-color: ", ";\n .layer__drag-handle {\n opacity: 1;\n }\n ", " {\n opacity: 1;\n }\n }\n"])), function (props) {
34
+ return props.theme.layerPanelHeaderHeight;
35
+ }, function (props) {
36
+ return props.theme.textColor;
37
+ }, function (props) {
38
+ return props.theme.panelBackgroundHover;
39
+ }, function (props) {
40
+ return props.theme.panelBackgroundHover;
41
+ }, RemoveAction);
42
+ var CornerTriangle = _styledComponents["default"].div(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2["default"])(["\n position: absolute;\n top: 0;\n left: 0;\n width: 0;\n height: 0;\n border-style: solid;\n border-width: ", "px\n ", "px 0 0;\n border-color: ", " transparent transparent transparent;\n"])), function (props) {
43
+ return Math.round(props.theme.layerPanelHeaderHeight / 3);
44
+ }, function (props) {
45
+ return Math.round(props.theme.layerPanelHeaderHeight / 3);
46
+ }, function (props) {
47
+ return props.$color;
48
+ });
49
+ var Actions = _styledComponents["default"].div(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n align-items: center;\n gap: 0;\n height: 16px;\n .panel--header__action {\n height: 16px;\n }\n"])));
50
+ var LeftSection = _styledComponents["default"].div(_templateObject5 || (_templateObject5 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n align-items: center;\n flex-grow: 1;\n overflow: hidden;\n"])));
51
+ var GroupLabelInput = (0, _styledComponents["default"])(_styledComponents2.InlineInput)(_templateObject6 || (_templateObject6 = (0, _taggedTemplateLiteral2["default"])(["\n margin-left: 4px;\n font-weight: 500;\n"])));
52
+ var ConfirmationBar = _styledComponents["default"].div(_templateObject7 || (_templateObject7 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 6px 12px;\n background-color: ", ";\n border: 1px solid ", ";\n border-top: none;\n font-size: 11px;\n color: ", ";\n gap: 8px;\n"])), function (props) {
53
+ return props.theme.panelBackgroundHover;
54
+ }, function (props) {
55
+ return props.theme.panelBackgroundHover;
56
+ }, function (props) {
57
+ return props.theme.textColor;
58
+ });
59
+ var ConfirmButton = _styledComponents["default"].button(_templateObject8 || (_templateObject8 = (0, _taggedTemplateLiteral2["default"])(["\n background: ", ";\n color: ", ";\n border: none;\n border-radius: 2px;\n padding: 3px 8px;\n font-size: 11px;\n cursor: pointer;\n &:hover {\n background: ", ";\n }\n"])), function (props) {
60
+ return props.theme.secondaryBtnBgd;
61
+ }, function (props) {
62
+ return props.theme.secondaryBtnColor;
63
+ }, function (props) {
64
+ return props.theme.secondaryBtnBgdHover;
65
+ });
66
+ LayerGroupHeaderFactory.deps = [_panelHeaderAction["default"]];
67
+ function LayerGroupHeaderFactory(PanelHeaderAction) {
68
+ var LayerGroupHeader = function LayerGroupHeader(_ref) {
69
+ var layerGroup = _ref.layerGroup,
70
+ onToggleLayerGroupContent = _ref.onToggleLayerGroupContent,
71
+ isLayerGroupContentOpen = _ref.isLayerGroupContentOpen,
72
+ listeners = _ref.listeners,
73
+ className = _ref.className;
74
+ var id = layerGroup.id,
75
+ label = layerGroup.label;
76
+ var dispatch = (0, _reactRedux.useDispatch)();
77
+ var _useState = (0, _react.useState)(false),
78
+ _useState2 = (0, _slicedToArray2["default"])(_useState, 2),
79
+ showConfirmation = _useState2[0],
80
+ setShowConfirmation = _useState2[1];
81
+ var confirmRef = (0, _react.useRef)(null);
82
+ var layerCount = (0, _reducers.getFlatLayerOrder)(layerGroup.layerOrder).length;
83
+ (0, _react.useEffect)(function () {
84
+ if (!showConfirmation) return;
85
+ var handleClickOutside = function handleClickOutside(e) {
86
+ if (confirmRef.current && !confirmRef.current.contains(e.target)) {
87
+ setShowConfirmation(false);
88
+ }
89
+ };
90
+ document.addEventListener('mousedown', handleClickOutside);
91
+ return function () {
92
+ return document.removeEventListener('mousedown', handleClickOutside);
93
+ };
94
+ }, [showConfirmation]);
95
+ var onUpdateLabel = (0, _react.useCallback)(function (event) {
96
+ dispatch((0, _actions.updateLayerGroup)({
97
+ id: id,
98
+ options: {
99
+ label: event.target.value
100
+ }
101
+ }));
102
+ }, [dispatch, id]);
103
+ var onToggleVisibility = (0, _react.useCallback)(function () {
104
+ dispatch((0, _actions.updateLayerGroup)({
105
+ id: id,
106
+ options: {
107
+ isVisible: !layerGroup.isVisible
108
+ }
109
+ }));
110
+ }, [dispatch, id, layerGroup.isVisible]);
111
+ var onDelete = (0, _react.useCallback)(function (e) {
112
+ e.stopPropagation();
113
+ if (layerCount > 0) {
114
+ setShowConfirmation(true);
115
+ } else {
116
+ dispatch((0, _actions.removeLayerGroup)({
117
+ id: id
118
+ }));
119
+ }
120
+ }, [dispatch, id, layerCount]);
121
+ var onConfirmDelete = (0, _react.useCallback)(function (e) {
122
+ e.stopPropagation();
123
+ dispatch((0, _actions.removeLayerGroup)({
124
+ id: id
125
+ }));
126
+ setShowConfirmation(false);
127
+ }, [dispatch, id]);
128
+ var VisibilityIcon = layerGroup.isVisible ? _icons.EyeSeen : _icons.EyeUnseen;
129
+ var CollapseIcon = isLayerGroupContentOpen ? _icons.ArrowDown : _icons.ArrowRight;
130
+ var stopPropagation = (0, _react.useCallback)(function (e) {
131
+ e.stopPropagation();
132
+ }, []);
133
+ return /*#__PURE__*/_react["default"].createElement("div", null, /*#__PURE__*/_react["default"].createElement(Container, {
134
+ className: className,
135
+ onClick: onToggleLayerGroupContent
136
+ }, /*#__PURE__*/_react["default"].createElement(CornerTriangle, {
137
+ $color: getGroupColor(id)
138
+ }), /*#__PURE__*/_react["default"].createElement(LeftSection, null, /*#__PURE__*/_react["default"].createElement(_layerPanelHeader.DragHandle, {
139
+ className: "layer__drag-handle",
140
+ listeners: listeners
141
+ }, /*#__PURE__*/_react["default"].createElement(_icons.VertDots, {
142
+ height: "20px"
143
+ })), /*#__PURE__*/_react["default"].createElement(GroupLabelInput, {
144
+ type: "text",
145
+ value: label,
146
+ onClick: stopPropagation,
147
+ onChange: onUpdateLabel,
148
+ id: "".concat(id, ":input-group-label")
149
+ })), /*#__PURE__*/_react["default"].createElement(Actions, {
150
+ onClick: stopPropagation
151
+ }, /*#__PURE__*/_react["default"].createElement(RemoveAction, null, /*#__PURE__*/_react["default"].createElement(PanelHeaderAction, {
152
+ className: "layer-group__delete",
153
+ id: "".concat(id, "-delete"),
154
+ tooltip: "Remove group",
155
+ onClick: onDelete,
156
+ IconComponent: _icons.Trash
157
+ })), /*#__PURE__*/_react["default"].createElement(PanelHeaderAction, {
158
+ className: "layer-group__visibility-toggle",
159
+ id: "".concat(id, "-visibility"),
160
+ tooltip: "Toggle group visibility",
161
+ onClick: onToggleVisibility,
162
+ IconComponent: VisibilityIcon
163
+ }), /*#__PURE__*/_react["default"].createElement(PanelHeaderAction, {
164
+ className: "layer-group__section-toggle",
165
+ id: "".concat(id, "-collapse"),
166
+ tooltip: "Toggle group content",
167
+ onClick: onToggleLayerGroupContent,
168
+ IconComponent: CollapseIcon
169
+ }))), showConfirmation ? /*#__PURE__*/_react["default"].createElement(ConfirmationBar, {
170
+ ref: confirmRef,
171
+ onClick: stopPropagation
172
+ }, /*#__PURE__*/_react["default"].createElement("span", null, "Remove group with layers?"), /*#__PURE__*/_react["default"].createElement(ConfirmButton, {
173
+ onClick: onConfirmDelete
174
+ }, "Remove")) : null);
175
+ };
176
+ return LayerGroupHeader;
177
+ }
178
+ var _default = exports["default"] = LayerGroupHeaderFactory;
179
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfcmVhY3RSZWR1eCIsIl9zdHlsZWRDb21wb25lbnRzIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsIl9hY3Rpb25zIiwiX3JlZHVjZXJzIiwiX3N0eWxlZENvbXBvbmVudHMyIiwiX2xheWVyUGFuZWxIZWFkZXIiLCJfaWNvbnMiLCJfcGFuZWxIZWFkZXJBY3Rpb24iLCJfdGVtcGxhdGVPYmplY3QiLCJfdGVtcGxhdGVPYmplY3QyIiwiX3RlbXBsYXRlT2JqZWN0MyIsIl90ZW1wbGF0ZU9iamVjdDQiLCJfdGVtcGxhdGVPYmplY3Q1IiwiX3RlbXBsYXRlT2JqZWN0NiIsIl90ZW1wbGF0ZU9iamVjdDciLCJfdGVtcGxhdGVPYmplY3Q4IiwiX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlIiwiZSIsIldlYWtNYXAiLCJyIiwidCIsIl9fZXNNb2R1bGUiLCJfdHlwZW9mIiwiaGFzIiwiZ2V0IiwibiIsIl9fcHJvdG9fXyIsImEiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsInUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJpIiwic2V0IiwiR1JPVVBfQ09MT1JTIiwiZ2V0R3JvdXBDb2xvciIsImlkIiwiaGFzaCIsImxlbmd0aCIsImNoYXJDb2RlQXQiLCJNYXRoIiwiYWJzIiwiUmVtb3ZlQWN0aW9uIiwic3R5bGVkIiwiZGl2IiwiX3RhZ2dlZFRlbXBsYXRlTGl0ZXJhbDIiLCJDb250YWluZXIiLCJTdHlsZWRQYW5lbEhlYWRlciIsInByb3BzIiwidGhlbWUiLCJsYXllclBhbmVsSGVhZGVySGVpZ2h0IiwidGV4dENvbG9yIiwicGFuZWxCYWNrZ3JvdW5kSG92ZXIiLCJDb3JuZXJUcmlhbmdsZSIsInJvdW5kIiwiJGNvbG9yIiwiQWN0aW9ucyIsIkxlZnRTZWN0aW9uIiwiR3JvdXBMYWJlbElucHV0IiwiSW5saW5lSW5wdXQiLCJDb25maXJtYXRpb25CYXIiLCJDb25maXJtQnV0dG9uIiwiYnV0dG9uIiwic2Vjb25kYXJ5QnRuQmdkIiwic2Vjb25kYXJ5QnRuQ29sb3IiLCJzZWNvbmRhcnlCdG5CZ2RIb3ZlciIsIkxheWVyR3JvdXBIZWFkZXJGYWN0b3J5IiwiZGVwcyIsIlBhbmVsSGVhZGVyQWN0aW9uRmFjdG9yeSIsIlBhbmVsSGVhZGVyQWN0aW9uIiwiTGF5ZXJHcm91cEhlYWRlciIsIl9yZWYiLCJsYXllckdyb3VwIiwib25Ub2dnbGVMYXllckdyb3VwQ29udGVudCIsImlzTGF5ZXJHcm91cENvbnRlbnRPcGVuIiwibGlzdGVuZXJzIiwiY2xhc3NOYW1lIiwibGFiZWwiLCJkaXNwYXRjaCIsInVzZURpc3BhdGNoIiwiX3VzZVN0YXRlIiwidXNlU3RhdGUiLCJfdXNlU3RhdGUyIiwiX3NsaWNlZFRvQXJyYXkyIiwic2hvd0NvbmZpcm1hdGlvbiIsInNldFNob3dDb25maXJtYXRpb24iLCJjb25maXJtUmVmIiwidXNlUmVmIiwibGF5ZXJDb3VudCIsImdldEZsYXRMYXllck9yZGVyIiwibGF5ZXJPcmRlciIsInVzZUVmZmVjdCIsImhhbmRsZUNsaWNrT3V0c2lkZSIsImN1cnJlbnQiLCJjb250YWlucyIsInRhcmdldCIsImRvY3VtZW50IiwiYWRkRXZlbnRMaXN0ZW5lciIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJvblVwZGF0ZUxhYmVsIiwidXNlQ2FsbGJhY2siLCJldmVudCIsInVwZGF0ZUxheWVyR3JvdXAiLCJvcHRpb25zIiwidmFsdWUiLCJvblRvZ2dsZVZpc2liaWxpdHkiLCJpc1Zpc2libGUiLCJvbkRlbGV0ZSIsInN0b3BQcm9wYWdhdGlvbiIsInJlbW92ZUxheWVyR3JvdXAiLCJvbkNvbmZpcm1EZWxldGUiLCJWaXNpYmlsaXR5SWNvbiIsIkV5ZVNlZW4iLCJFeWVVbnNlZW4iLCJDb2xsYXBzZUljb24iLCJBcnJvd0Rvd24iLCJBcnJvd1JpZ2h0IiwiY3JlYXRlRWxlbWVudCIsIm9uQ2xpY2siLCJEcmFnSGFuZGxlIiwiVmVydERvdHMiLCJoZWlnaHQiLCJ0eXBlIiwib25DaGFuZ2UiLCJjb25jYXQiLCJ0b29sdGlwIiwiSWNvbkNvbXBvbmVudCIsIlRyYXNoIiwicmVmIiwiX2RlZmF1bHQiLCJleHBvcnRzIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3NpZGUtcGFuZWwvbGF5ZXItcGFuZWwvbGF5ZXItZ3JvdXAtaGVhZGVyLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUXG4vLyBDb3B5cmlnaHQgY29udHJpYnV0b3JzIHRvIHRoZSBrZXBsZXIuZ2wgcHJvamVjdFxuXG5pbXBvcnQgUmVhY3QsIHt1c2VDYWxsYmFjaywgdXNlU3RhdGUsIHVzZUVmZmVjdCwgdXNlUmVmfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQge3VzZURpc3BhdGNofSBmcm9tICdyZWFjdC1yZWR1eCc7XG5pbXBvcnQgc3R5bGVkIGZyb20gJ3N0eWxlZC1jb21wb25lbnRzJztcblxuaW1wb3J0IHt1cGRhdGVMYXllckdyb3VwLCByZW1vdmVMYXllckdyb3VwfSBmcm9tICdAa2VwbGVyLmdsL2FjdGlvbnMnO1xuaW1wb3J0IHtMYXllck9yZGVyR3JvdXB9IGZyb20gJ0BrZXBsZXIuZ2wvdHlwZXMnO1xuaW1wb3J0IHtnZXRGbGF0TGF5ZXJPcmRlcn0gZnJvbSAnQGtlcGxlci5nbC9yZWR1Y2Vycyc7XG5cbmltcG9ydCB7U3R5bGVkUGFuZWxIZWFkZXIsIElubGluZUlucHV0fSBmcm9tICcuLi8uLi9jb21tb24vc3R5bGVkLWNvbXBvbmVudHMnO1xuaW1wb3J0IHtEcmFnSGFuZGxlfSBmcm9tICcuL2xheWVyLXBhbmVsLWhlYWRlcic7XG5pbXBvcnQge1ZlcnREb3RzLCBFeWVTZWVuLCBFeWVVbnNlZW4sIFRyYXNoLCBBcnJvd0Rvd24sIEFycm93UmlnaHR9IGZyb20gJy4uLy4uL2NvbW1vbi9pY29ucyc7XG5pbXBvcnQgUGFuZWxIZWFkZXJBY3Rpb25GYWN0b3J5IGZyb20gJy4uL3BhbmVsLWhlYWRlci1hY3Rpb24nO1xuXG5jb25zdCBHUk9VUF9DT0xPUlMgPSBbXG4gICcjNEJBOUM5JyxcbiAgJyNFOEE4MzgnLFxuICAnIzhCQzU4QicsXG4gICcjRDY3QUIxJyxcbiAgJyM3QjhGRjcnLFxuICAnI0YyNzI2RicsXG4gICcjNTZDNEEwJyxcbiAgJyNDOUE4NEInXG5dO1xuXG5mdW5jdGlvbiBnZXRHcm91cENvbG9yKGlkOiBzdHJpbmcpOiBzdHJpbmcge1xuICBsZXQgaGFzaCA9IDA7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgaWQubGVuZ3RoOyBpKyspIHtcbiAgICBoYXNoID0gKChoYXNoIDw8IDUpIC0gaGFzaCArIGlkLmNoYXJDb2RlQXQoaSkpIHwgMDtcbiAgfVxuICByZXR1cm4gR1JPVVBfQ09MT1JTW01hdGguYWJzKGhhc2gpICUgR1JPVVBfQ09MT1JTLmxlbmd0aF07XG59XG5cbmNvbnN0IFJlbW92ZUFjdGlvbiA9IHN0eWxlZC5kaXZgXG4gIGRpc3BsYXk6IGZsZXg7XG4gIG9wYWNpdHk6IDA7XG4gIHRyYW5zaXRpb246IG9wYWNpdHkgMC4xNXMgZWFzZTtcbiAgLnBhbmVsLS1oZWFkZXJfX2FjdGlvbiB7XG4gICAgaGVpZ2h0OiAxNnB4O1xuICB9XG5gO1xuXG5jb25zdCBDb250YWluZXIgPSBzdHlsZWQoU3R5bGVkUGFuZWxIZWFkZXIpYFxuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGhlaWdodDogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5sYXllclBhbmVsSGVhZGVySGVpZ2h0fXB4O1xuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gIGNvbG9yOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLnRleHRDb2xvcn07XG4gIHBhZGRpbmctcmlnaHQ6IDEwcHg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIG92ZXJmbG93OiBoaWRkZW47XG5cbiAgYm9yZGVyOiAxcHggc29saWQgJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5wYW5lbEJhY2tncm91bmRIb3Zlcn07XG5cbiAgJjpob3ZlciB7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIGJhY2tncm91bmQtY29sb3I6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUucGFuZWxCYWNrZ3JvdW5kSG92ZXJ9O1xuICAgIC5sYXllcl9fZHJhZy1oYW5kbGUge1xuICAgICAgb3BhY2l0eTogMTtcbiAgICB9XG4gICAgJHtSZW1vdmVBY3Rpb259IHtcbiAgICAgIG9wYWNpdHk6IDE7XG4gICAgfVxuICB9XG5gO1xuXG5jb25zdCBDb3JuZXJUcmlhbmdsZSA9IHN0eWxlZC5kaXY8eyRjb2xvcjogc3RyaW5nfT5gXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiAwO1xuICBsZWZ0OiAwO1xuICB3aWR0aDogMDtcbiAgaGVpZ2h0OiAwO1xuICBib3JkZXItc3R5bGU6IHNvbGlkO1xuICBib3JkZXItd2lkdGg6ICR7cHJvcHMgPT4gTWF0aC5yb3VuZChwcm9wcy50aGVtZS5sYXllclBhbmVsSGVhZGVySGVpZ2h0IC8gMyl9cHhcbiAgICAke3Byb3BzID0+IE1hdGgucm91bmQocHJvcHMudGhlbWUubGF5ZXJQYW5lbEhlYWRlckhlaWdodCAvIDMpfXB4IDAgMDtcbiAgYm9yZGVyLWNvbG9yOiAke3Byb3BzID0+IHByb3BzLiRjb2xvcn0gdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQ7XG5gO1xuXG5jb25zdCBBY3Rpb25zID0gc3R5bGVkLmRpdmBcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgZ2FwOiAwO1xuICBoZWlnaHQ6IDE2cHg7XG4gIC5wYW5lbC0taGVhZGVyX19hY3Rpb24ge1xuICAgIGhlaWdodDogMTZweDtcbiAgfVxuYDtcblxuY29uc3QgTGVmdFNlY3Rpb24gPSBzdHlsZWQuZGl2YFxuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBmbGV4LWdyb3c6IDE7XG4gIG92ZXJmbG93OiBoaWRkZW47XG5gO1xuXG5jb25zdCBHcm91cExhYmVsSW5wdXQgPSBzdHlsZWQoSW5saW5lSW5wdXQpYFxuICBtYXJnaW4tbGVmdDogNHB4O1xuICBmb250LXdlaWdodDogNTAwO1xuYDtcblxuY29uc3QgQ29uZmlybWF0aW9uQmFyID0gc3R5bGVkLmRpdmBcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICBwYWRkaW5nOiA2cHggMTJweDtcbiAgYmFja2dyb3VuZC1jb2xvcjogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5wYW5lbEJhY2tncm91bmRIb3Zlcn07XG4gIGJvcmRlcjogMXB4IHNvbGlkICR7cHJvcHMgPT4gcHJvcHMudGhlbWUucGFuZWxCYWNrZ3JvdW5kSG92ZXJ9O1xuICBib3JkZXItdG9wOiBub25lO1xuICBmb250LXNpemU6IDExcHg7XG4gIGNvbG9yOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLnRleHRDb2xvcn07XG4gIGdhcDogOHB4O1xuYDtcblxuY29uc3QgQ29uZmlybUJ1dHRvbiA9IHN0eWxlZC5idXR0b25gXG4gIGJhY2tncm91bmQ6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuc2Vjb25kYXJ5QnRuQmdkfTtcbiAgY29sb3I6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuc2Vjb25kYXJ5QnRuQ29sb3J9O1xuICBib3JkZXI6IG5vbmU7XG4gIGJvcmRlci1yYWRpdXM6IDJweDtcbiAgcGFkZGluZzogM3B4IDhweDtcbiAgZm9udC1zaXplOiAxMXB4O1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gICY6aG92ZXIge1xuICAgIGJhY2tncm91bmQ6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuc2Vjb25kYXJ5QnRuQmdkSG92ZXJ9O1xuICB9XG5gO1xuXG5leHBvcnQgdHlwZSBMYXllckdyb3VwSGVhZGVyUHJvcHMgPSB7XG4gIGxheWVyR3JvdXA6IExheWVyT3JkZXJHcm91cDtcbiAgaXNMYXllckdyb3VwQ29udGVudE9wZW4/OiBib29sZWFuO1xuICBvblRvZ2dsZUxheWVyR3JvdXBDb250ZW50PzogKCkgPT4gdm9pZDtcbiAgbGlzdGVuZXJzPzogYW55O1xuICBjbGFzc05hbWU/OiBzdHJpbmc7XG59O1xuXG5MYXllckdyb3VwSGVhZGVyRmFjdG9yeS5kZXBzID0gW1BhbmVsSGVhZGVyQWN0aW9uRmFjdG9yeV07XG5cbmZ1bmN0aW9uIExheWVyR3JvdXBIZWFkZXJGYWN0b3J5KFxuICBQYW5lbEhlYWRlckFjdGlvbjogUmV0dXJuVHlwZTx0eXBlb2YgUGFuZWxIZWFkZXJBY3Rpb25GYWN0b3J5PlxuKTogUmVhY3QuRkM8TGF5ZXJHcm91cEhlYWRlclByb3BzPiB7XG4gIGNvbnN0IExheWVyR3JvdXBIZWFkZXI6IFJlYWN0LkZDPExheWVyR3JvdXBIZWFkZXJQcm9wcz4gPSAoe1xuICAgIGxheWVyR3JvdXAsXG4gICAgb25Ub2dnbGVMYXllckdyb3VwQ29udGVudCxcbiAgICBpc0xheWVyR3JvdXBDb250ZW50T3BlbixcbiAgICBsaXN0ZW5lcnMsXG4gICAgY2xhc3NOYW1lXG4gIH0pID0+IHtcbiAgICBjb25zdCB7aWQsIGxhYmVsfSA9IGxheWVyR3JvdXA7XG4gICAgY29uc3QgZGlzcGF0Y2ggPSB1c2VEaXNwYXRjaCgpO1xuICAgIGNvbnN0IFtzaG93Q29uZmlybWF0aW9uLCBzZXRTaG93Q29uZmlybWF0aW9uXSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgICBjb25zdCBjb25maXJtUmVmID0gdXNlUmVmPEhUTUxEaXZFbGVtZW50PihudWxsKTtcblxuICAgIGNvbnN0IGxheWVyQ291bnQgPSBnZXRGbGF0TGF5ZXJPcmRlcihsYXllckdyb3VwLmxheWVyT3JkZXIpLmxlbmd0aDtcblxuICAgIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICBpZiAoIXNob3dDb25maXJtYXRpb24pIHJldHVybjtcbiAgICAgIGNvbnN0IGhhbmRsZUNsaWNrT3V0c2lkZSA9IChlOiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgICAgIGlmIChjb25maXJtUmVmLmN1cnJlbnQgJiYgIWNvbmZpcm1SZWYuY3VycmVudC5jb250YWlucyhlLnRhcmdldCBhcyBOb2RlKSkge1xuICAgICAgICAgIHNldFNob3dDb25maXJtYXRpb24oZmFsc2UpO1xuICAgICAgICB9XG4gICAgICB9O1xuICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbW91c2Vkb3duJywgaGFuZGxlQ2xpY2tPdXRzaWRlKTtcbiAgICAgIHJldHVybiAoKSA9PiBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZWRvd24nLCBoYW5kbGVDbGlja091dHNpZGUpO1xuICAgIH0sIFtzaG93Q29uZmlybWF0aW9uXSk7XG5cbiAgICBjb25zdCBvblVwZGF0ZUxhYmVsID0gdXNlQ2FsbGJhY2soXG4gICAgICBldmVudCA9PiB7XG4gICAgICAgIGRpc3BhdGNoKHVwZGF0ZUxheWVyR3JvdXAoe2lkLCBvcHRpb25zOiB7bGFiZWw6IGV2ZW50LnRhcmdldC52YWx1ZX19KSk7XG4gICAgICB9LFxuICAgICAgW2Rpc3BhdGNoLCBpZF1cbiAgICApO1xuXG4gICAgY29uc3Qgb25Ub2dnbGVWaXNpYmlsaXR5ID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgICAgZGlzcGF0Y2godXBkYXRlTGF5ZXJHcm91cCh7aWQsIG9wdGlvbnM6IHtpc1Zpc2libGU6ICFsYXllckdyb3VwLmlzVmlzaWJsZX19KSk7XG4gICAgfSwgW2Rpc3BhdGNoLCBpZCwgbGF5ZXJHcm91cC5pc1Zpc2libGVdKTtcblxuICAgIGNvbnN0IG9uRGVsZXRlID0gdXNlQ2FsbGJhY2soXG4gICAgICAoZTogUmVhY3QuTW91c2VFdmVudCkgPT4ge1xuICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICBpZiAobGF5ZXJDb3VudCA+IDApIHtcbiAgICAgICAgICBzZXRTaG93Q29uZmlybWF0aW9uKHRydWUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGRpc3BhdGNoKHJlbW92ZUxheWVyR3JvdXAoe2lkfSkpO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgW2Rpc3BhdGNoLCBpZCwgbGF5ZXJDb3VudF1cbiAgICApO1xuXG4gICAgY29uc3Qgb25Db25maXJtRGVsZXRlID0gdXNlQ2FsbGJhY2soXG4gICAgICAoZTogUmVhY3QuTW91c2VFdmVudCkgPT4ge1xuICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICBkaXNwYXRjaChyZW1vdmVMYXllckdyb3VwKHtpZH0pKTtcbiAgICAgICAgc2V0U2hvd0NvbmZpcm1hdGlvbihmYWxzZSk7XG4gICAgICB9LFxuICAgICAgW2Rpc3BhdGNoLCBpZF1cbiAgICApO1xuXG4gICAgY29uc3QgVmlzaWJpbGl0eUljb24gPSBsYXllckdyb3VwLmlzVmlzaWJsZSA/IEV5ZVNlZW4gOiBFeWVVbnNlZW47XG4gICAgY29uc3QgQ29sbGFwc2VJY29uID0gaXNMYXllckdyb3VwQ29udGVudE9wZW4gPyBBcnJvd0Rvd24gOiBBcnJvd1JpZ2h0O1xuXG4gICAgY29uc3Qgc3RvcFByb3BhZ2F0aW9uID0gdXNlQ2FsbGJhY2soKGU6IFJlYWN0Lk1vdXNlRXZlbnQpID0+IHtcbiAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgfSwgW10pO1xuXG4gICAgcmV0dXJuIChcbiAgICAgIDxkaXY+XG4gICAgICAgIDxDb250YWluZXIgY2xhc3NOYW1lPXtjbGFzc05hbWV9IG9uQ2xpY2s9e29uVG9nZ2xlTGF5ZXJHcm91cENvbnRlbnR9PlxuICAgICAgICAgIDxDb3JuZXJUcmlhbmdsZSAkY29sb3I9e2dldEdyb3VwQ29sb3IoaWQpfSAvPlxuICAgICAgICAgIDxMZWZ0U2VjdGlvbj5cbiAgICAgICAgICAgIDxEcmFnSGFuZGxlIGNsYXNzTmFtZT1cImxheWVyX19kcmFnLWhhbmRsZVwiIGxpc3RlbmVycz17bGlzdGVuZXJzfT5cbiAgICAgICAgICAgICAgPFZlcnREb3RzIGhlaWdodD1cIjIwcHhcIiAvPlxuICAgICAgICAgICAgPC9EcmFnSGFuZGxlPlxuICAgICAgICAgICAgPEdyb3VwTGFiZWxJbnB1dFxuICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgIHZhbHVlPXtsYWJlbH1cbiAgICAgICAgICAgICAgb25DbGljaz17c3RvcFByb3BhZ2F0aW9ufVxuICAgICAgICAgICAgICBvbkNoYW5nZT17b25VcGRhdGVMYWJlbH1cbiAgICAgICAgICAgICAgaWQ9e2Ake2lkfTppbnB1dC1ncm91cC1sYWJlbGB9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvTGVmdFNlY3Rpb24+XG4gICAgICAgICAgPEFjdGlvbnMgb25DbGljaz17c3RvcFByb3BhZ2F0aW9ufT5cbiAgICAgICAgICAgIDxSZW1vdmVBY3Rpb24+XG4gICAgICAgICAgICAgIDxQYW5lbEhlYWRlckFjdGlvblxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImxheWVyLWdyb3VwX19kZWxldGVcIlxuICAgICAgICAgICAgICAgIGlkPXtgJHtpZH0tZGVsZXRlYH1cbiAgICAgICAgICAgICAgICB0b29sdGlwPVwiUmVtb3ZlIGdyb3VwXCJcbiAgICAgICAgICAgICAgICBvbkNsaWNrPXtvbkRlbGV0ZX1cbiAgICAgICAgICAgICAgICBJY29uQ29tcG9uZW50PXtUcmFzaH1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDwvUmVtb3ZlQWN0aW9uPlxuICAgICAgICAgICAgPFBhbmVsSGVhZGVyQWN0aW9uXG4gICAgICAgICAgICAgIGNsYXNzTmFtZT1cImxheWVyLWdyb3VwX192aXNpYmlsaXR5LXRvZ2dsZVwiXG4gICAgICAgICAgICAgIGlkPXtgJHtpZH0tdmlzaWJpbGl0eWB9XG4gICAgICAgICAgICAgIHRvb2x0aXA9XCJUb2dnbGUgZ3JvdXAgdmlzaWJpbGl0eVwiXG4gICAgICAgICAgICAgIG9uQ2xpY2s9e29uVG9nZ2xlVmlzaWJpbGl0eX1cbiAgICAgICAgICAgICAgSWNvbkNvbXBvbmVudD17VmlzaWJpbGl0eUljb259XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPFBhbmVsSGVhZGVyQWN0aW9uXG4gICAgICAgICAgICAgIGNsYXNzTmFtZT1cImxheWVyLWdyb3VwX19zZWN0aW9uLXRvZ2dsZVwiXG4gICAgICAgICAgICAgIGlkPXtgJHtpZH0tY29sbGFwc2VgfVxuICAgICAgICAgICAgICB0b29sdGlwPVwiVG9nZ2xlIGdyb3VwIGNvbnRlbnRcIlxuICAgICAgICAgICAgICBvbkNsaWNrPXtvblRvZ2dsZUxheWVyR3JvdXBDb250ZW50fVxuICAgICAgICAgICAgICBJY29uQ29tcG9uZW50PXtDb2xsYXBzZUljb259XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvQWN0aW9ucz5cbiAgICAgICAgPC9Db250YWluZXI+XG4gICAgICAgIHtzaG93Q29uZmlybWF0aW9uID8gKFxuICAgICAgICAgIDxDb25maXJtYXRpb25CYXIgcmVmPXtjb25maXJtUmVmfSBvbkNsaWNrPXtzdG9wUHJvcGFnYXRpb259PlxuICAgICAgICAgICAgPHNwYW4+UmVtb3ZlIGdyb3VwIHdpdGggbGF5ZXJzPzwvc3Bhbj5cbiAgICAgICAgICAgIDxDb25maXJtQnV0dG9uIG9uQ2xpY2s9e29uQ29uZmlybURlbGV0ZX0+UmVtb3ZlPC9Db25maXJtQnV0dG9uPlxuICAgICAgICAgIDwvQ29uZmlybWF0aW9uQmFyPlxuICAgICAgICApIDogbnVsbH1cbiAgICAgIDwvZGl2PlxuICAgICk7XG4gIH07XG5cbiAgcmV0dXJuIExheWVyR3JvdXBIZWFkZXI7XG59XG5cbmV4cG9ydCBkZWZhdWx0IExheWVyR3JvdXBIZWFkZXJGYWN0b3J5O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBR0EsSUFBQUEsTUFBQSxHQUFBQyx1QkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsV0FBQSxHQUFBRCxPQUFBO0FBQ0EsSUFBQUUsaUJBQUEsR0FBQUMsc0JBQUEsQ0FBQUgsT0FBQTtBQUVBLElBQUFJLFFBQUEsR0FBQUosT0FBQTtBQUVBLElBQUFLLFNBQUEsR0FBQUwsT0FBQTtBQUVB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
@@ -2,12 +2,14 @@ import React from 'react';
2
2
  import { Layer, LayerClassesType } from '@kepler.gl/layers';
3
3
  import { Datasets } from '@kepler.gl/table';
4
4
  import { UIStateActions, VisStateActions, MapStateActions } from '@kepler.gl/actions';
5
+ import { LayerOrder } from '@kepler.gl/types';
5
6
  import LayerPanelFactory from './layer-panel';
7
+ import LayerGroupHeaderFactory from './layer-group-header';
6
8
  import { SplitMap } from '@kepler.gl/types';
7
9
  export type LayerListProps = {
8
10
  datasets: Datasets;
9
11
  layers: Layer[];
10
- layerOrder: string[];
12
+ layerOrder: LayerOrder;
11
13
  layerClasses: LayerClassesType;
12
14
  isSortable?: boolean;
13
15
  splitMap?: SplitMap;
@@ -15,9 +17,12 @@ export type LayerListProps = {
15
17
  visStateActions: typeof VisStateActions;
16
18
  mapStateActions: typeof MapStateActions;
17
19
  };
18
- export type LayerListFactoryDeps = [typeof LayerPanelFactory];
19
- declare function LayerListFactory(LayerPanel: ReturnType<typeof LayerPanelFactory>): React.FC<LayerListProps>;
20
+ export type LayerListFactoryDeps = [
21
+ typeof LayerPanelFactory,
22
+ typeof LayerGroupHeaderFactory
23
+ ];
24
+ declare function LayerListFactory(LayerPanel: ReturnType<typeof LayerPanelFactory>, LayerGroupHeader: ReturnType<typeof LayerGroupHeaderFactory>): React.FC<LayerListProps>;
20
25
  declare namespace LayerListFactory {
21
- var deps: (typeof LayerPanelFactory)[];
26
+ var deps: (typeof LayerGroupHeaderFactory | typeof LayerPanelFactory)[];
22
27
  }
23
28
  export default LayerListFactory;