@carto/kepler.gl 0.0.42 → 0.0.43
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +711 -0
- package/dist/components/common/field-selector.js +62 -17
- package/dist/components/common/field-token.js +4 -12
- package/dist/components/common/icons/chevron-right.js +69 -0
- package/dist/components/common/icons/index.js +9 -1
- package/dist/components/common/item-selector/dropdown-list.js +137 -21
- package/dist/components/common/item-selector/item-selector-submenu.js +133 -0
- package/dist/components/common/item-selector/item-selector.js +7 -4
- package/dist/components/common/item-selector/typeahead.js +16 -16
- package/dist/components/side-panel/layer-panel/layer-configurator.js +11 -4
- package/dist/components/side-panel/layer-panel/vis-config-by-field-selector.js +7 -3
- package/dist/constants/default-settings.js +33 -3
- package/dist/constants/index.js +7 -1
- package/dist/styles/base.js +4 -4
- package/package.json +1 -1
- package/src/components/common/field-selector.js +62 -21
- package/src/components/common/field-token.js +13 -14
- package/src/components/common/icons/chevron-right.js +47 -0
- package/src/components/common/icons/index.js +1 -0
- package/src/components/common/item-selector/dropdown-list.js +135 -36
- package/src/components/common/item-selector/item-selector-submenu.js +88 -0
- package/src/components/common/item-selector/item-selector.d.ts +2 -1
- package/src/components/common/item-selector/item-selector.js +5 -2
- package/src/components/common/item-selector/typeahead.js +27 -21
- package/src/components/side-panel/layer-panel/layer-configurator.js +17 -1
- package/src/components/side-panel/layer-panel/vis-config-by-field-selector.js +5 -1
- package/src/constants/default-settings.js +51 -0
- package/src/constants/index.js +2 -1
- package/src/styles/base.js +4 -0
- package/umd/keplergl.min.js +25 -25
|
@@ -9,10 +9,14 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
9
9
|
});
|
|
10
10
|
exports["default"] = exports.ListItem = exports.classList = void 0;
|
|
11
11
|
|
|
12
|
+
var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
|
|
13
|
+
|
|
12
14
|
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
13
15
|
|
|
14
16
|
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
15
17
|
|
|
18
|
+
var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
|
|
19
|
+
|
|
16
20
|
var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
|
|
17
21
|
|
|
18
22
|
var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
|
|
@@ -31,7 +35,17 @@ var _classnames = _interopRequireDefault(require("classnames"));
|
|
|
31
35
|
|
|
32
36
|
var _styledComponents = _interopRequireDefault(require("styled-components"));
|
|
33
37
|
|
|
34
|
-
var
|
|
38
|
+
var _itemSelectorSubmenu = _interopRequireDefault(require("./item-selector-submenu"));
|
|
39
|
+
|
|
40
|
+
var _icons = require("../icons");
|
|
41
|
+
|
|
42
|
+
var _defaultSettings = require("../../../constants/default-settings");
|
|
43
|
+
|
|
44
|
+
var _templateObject, _templateObject2, _templateObject3;
|
|
45
|
+
|
|
46
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
|
|
47
|
+
|
|
48
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
|
|
35
49
|
|
|
36
50
|
function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2["default"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2["default"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2["default"])(this, result); }; }
|
|
37
51
|
|
|
@@ -69,26 +83,96 @@ var DropdownListWrapper = _styledComponents["default"].div(_templateObject || (_
|
|
|
69
83
|
return props.light ? props.theme.dropdownListLT : props.theme.dropdownList;
|
|
70
84
|
});
|
|
71
85
|
|
|
86
|
+
var DropdownListContainer = _styledComponents["default"].div(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2["default"])(["\n position: relative;\n"])));
|
|
87
|
+
|
|
88
|
+
var Item = _styledComponents["default"].div(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2["default"])(["\n position: relative;\n padding-right: 25px;\n display: flex;\n align-items: center;\n justify-content: space-between;\n svg {\n position: absolute;\n right: 0;\n top: 50%;\n transform: translateY(-50%);\n opacity: 0.6;\n }\n &:hover, &.hover {\n svg {\n opacity: 1;\n }\n }\n"])));
|
|
89
|
+
|
|
72
90
|
var DropdownList = /*#__PURE__*/function (_Component) {
|
|
73
91
|
(0, _inherits2["default"])(DropdownList, _Component);
|
|
74
92
|
|
|
75
93
|
var _super = _createSuper(DropdownList);
|
|
76
94
|
|
|
77
95
|
function DropdownList() {
|
|
96
|
+
var _this;
|
|
97
|
+
|
|
78
98
|
(0, _classCallCheck2["default"])(this, DropdownList);
|
|
79
|
-
|
|
99
|
+
|
|
100
|
+
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
101
|
+
args[_key] = arguments[_key];
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
_this = _super.call.apply(_super, [this].concat(args));
|
|
105
|
+
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "state", {
|
|
106
|
+
currentOption: {},
|
|
107
|
+
submenuVisible: false,
|
|
108
|
+
submenuPosition: {}
|
|
109
|
+
});
|
|
110
|
+
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "hasSubOptions", !!_this.props.subOptions);
|
|
111
|
+
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "ref", /*#__PURE__*/(0, _react.createRef)());
|
|
112
|
+
return _this;
|
|
80
113
|
}
|
|
81
114
|
|
|
82
115
|
(0, _createClass2["default"])(DropdownList, [{
|
|
116
|
+
key: "_resetState",
|
|
117
|
+
value: function _resetState(callback) {
|
|
118
|
+
this.setState({
|
|
119
|
+
currentOption: {},
|
|
120
|
+
submenuVisible: false,
|
|
121
|
+
submenuPosition: {}
|
|
122
|
+
}, callback);
|
|
123
|
+
}
|
|
124
|
+
}, {
|
|
83
125
|
key: "_onClick",
|
|
84
|
-
value: function _onClick(
|
|
85
|
-
|
|
86
|
-
|
|
126
|
+
value: function _onClick(option, subOption, event) {
|
|
127
|
+
var optionSelected = (0, _typeof2["default"])(option) !== 'object' ? option : _objectSpread(_objectSpread({}, option), {}, {
|
|
128
|
+
selectedAggregator: subOption === null || subOption === void 0 ? void 0 : subOption.id
|
|
129
|
+
});
|
|
130
|
+
|
|
131
|
+
if (this.props.withSubOptions && (subOption !== null && subOption !== void 0 && subOption.id || !option.aggregators) || !this.props.withSubOptions) {
|
|
132
|
+
this.props.onOptionSelected(optionSelected, event);
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
}, {
|
|
136
|
+
key: "_onMouseOver",
|
|
137
|
+
value: function _onMouseOver(option, event) {
|
|
138
|
+
var _this2 = this;
|
|
139
|
+
|
|
140
|
+
var el = event.target;
|
|
141
|
+
this.setState(function (previousState) {
|
|
142
|
+
var _this2$ref$current;
|
|
143
|
+
|
|
144
|
+
return {
|
|
145
|
+
currentOption: option,
|
|
146
|
+
submenuVisible: true,
|
|
147
|
+
submenuPosition: {
|
|
148
|
+
top: el.getBoundingClientRect().top,
|
|
149
|
+
left: previousState.submenuPosition.left ? previousState.submenuPosition.left : (_this2$ref$current = _this2.ref.current) === null || _this2$ref$current === void 0 ? void 0 : _this2$ref$current.getBoundingClientRect().right
|
|
150
|
+
}
|
|
151
|
+
};
|
|
152
|
+
});
|
|
153
|
+
}
|
|
154
|
+
}, {
|
|
155
|
+
key: "componentDidUpdate",
|
|
156
|
+
value: function componentDidUpdate(prevProps) {
|
|
157
|
+
if (prevProps.searchEntryValue !== this.props.searchEntryValue) {
|
|
158
|
+
this._resetState();
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
}, {
|
|
162
|
+
key: "componentDidMount",
|
|
163
|
+
value: function componentDidMount() {
|
|
164
|
+
var _this$ref$current;
|
|
165
|
+
|
|
166
|
+
this.setState({
|
|
167
|
+
subMenuPosition: {
|
|
168
|
+
left: (_this$ref$current = this.ref.current) === null || _this$ref$current === void 0 ? void 0 : _this$ref$current.getBoundingClientRect().right
|
|
169
|
+
}
|
|
170
|
+
});
|
|
87
171
|
}
|
|
88
172
|
}, {
|
|
89
173
|
key: "render",
|
|
90
174
|
value: function render() {
|
|
91
|
-
var
|
|
175
|
+
var _this3 = this;
|
|
92
176
|
|
|
93
177
|
var _this$props = this.props,
|
|
94
178
|
fixedOptions = _this$props.fixedOptions,
|
|
@@ -102,46 +186,74 @@ var DropdownList = /*#__PURE__*/function (_Component) {
|
|
|
102
186
|
var valueOffset = Array.isArray(fixedOptions) ? fixedOptions.length : 0; // For some reason onClick is not fired when clicked on an option
|
|
103
187
|
// onMouseDown is used here as a workaround of #205 and other
|
|
104
188
|
|
|
105
|
-
return /*#__PURE__*/_react["default"].createElement(
|
|
189
|
+
return /*#__PURE__*/_react["default"].createElement(DropdownListContainer, {
|
|
190
|
+
onMouseLeave: function onMouseLeave() {
|
|
191
|
+
return _this3._resetState();
|
|
192
|
+
}
|
|
193
|
+
}, /*#__PURE__*/_react["default"].createElement(DropdownListWrapper, {
|
|
106
194
|
className: classList.list,
|
|
107
195
|
light: light
|
|
108
196
|
}, this.props.customListHeaderComponent ? /*#__PURE__*/_react["default"].createElement("div", {
|
|
109
197
|
className: classList.listHeader
|
|
110
|
-
}, /*#__PURE__*/_react["default"].createElement(this.props.customListHeaderComponent, null)) : null,
|
|
198
|
+
}, /*#__PURE__*/_react["default"].createElement(this.props.customListHeaderComponent, null)) : null, /*#__PURE__*/_react["default"].createElement("div", {
|
|
199
|
+
ref: this.ref
|
|
200
|
+
}, valueOffset > 0 ? /*#__PURE__*/_react["default"].createElement("div", {
|
|
111
201
|
className: classList.listSection
|
|
112
202
|
}, fixedOptions.map(function (value, i) {
|
|
203
|
+
var _this3$state$currentO;
|
|
204
|
+
|
|
113
205
|
return /*#__PURE__*/_react["default"].createElement("div", {
|
|
114
206
|
className: (0, _classnames["default"])(classList.listItem, {
|
|
115
|
-
|
|
207
|
+
active: _this3.props.selectionIndex === i,
|
|
208
|
+
hover: value.id && ((_this3$state$currentO = _this3.state.currentOption) === null || _this3$state$currentO === void 0 ? void 0 : _this3$state$currentO.id) === value.id,
|
|
116
209
|
fixed: true
|
|
117
210
|
}),
|
|
118
211
|
key: "".concat(display(value), "_").concat(i),
|
|
119
212
|
onMouseDown: function onMouseDown(e) {
|
|
120
|
-
return
|
|
213
|
+
return !_this3.hasSubOptions && _this3._onClick(value, null, e);
|
|
121
214
|
},
|
|
122
215
|
onClick: function onClick(e) {
|
|
123
|
-
return
|
|
216
|
+
return !_this3.hasSubOptions && _this3._onClick(value, null, e);
|
|
217
|
+
},
|
|
218
|
+
onMouseEnter: function onMouseEnter(e) {
|
|
219
|
+
return _this3._onMouseOver(value, e);
|
|
124
220
|
}
|
|
125
|
-
}, /*#__PURE__*/_react["default"].createElement(
|
|
221
|
+
}, /*#__PURE__*/_react["default"].createElement(_this3.props.customListItemComponent, {
|
|
126
222
|
value: value,
|
|
127
223
|
displayOption: display
|
|
128
224
|
}));
|
|
129
225
|
})) : null, this.props.options.map(function (value, i) {
|
|
130
|
-
|
|
226
|
+
var _this3$state$currentO2;
|
|
227
|
+
|
|
228
|
+
return /*#__PURE__*/_react["default"].createElement(Item, {
|
|
131
229
|
className: (0, _classnames["default"])(classList.listItem, {
|
|
132
|
-
|
|
230
|
+
active: _this3.props.selectionIndex === i + valueOffset,
|
|
231
|
+
hover: value.id && ((_this3$state$currentO2 = _this3.state.currentOption) === null || _this3$state$currentO2 === void 0 ? void 0 : _this3$state$currentO2.id) === value.id
|
|
133
232
|
}),
|
|
134
233
|
key: "".concat(display(value), "_").concat(i),
|
|
135
234
|
onMouseDown: function onMouseDown(e) {
|
|
136
|
-
return
|
|
235
|
+
return !_this3.hasSubOptions && _this3._onClick(value, null, e);
|
|
137
236
|
},
|
|
138
237
|
onClick: function onClick(e) {
|
|
139
|
-
return
|
|
238
|
+
return !_this3.hasSubOptions && _this3._onClick(value, null, e);
|
|
239
|
+
},
|
|
240
|
+
onMouseEnter: function onMouseEnter(e) {
|
|
241
|
+
return _this3._onMouseOver(value, e);
|
|
140
242
|
}
|
|
141
|
-
}, /*#__PURE__*/_react["default"].createElement(
|
|
243
|
+
}, /*#__PURE__*/_react["default"].createElement(_this3.props.customListItemComponent, {
|
|
142
244
|
value: value,
|
|
143
245
|
displayOption: display
|
|
144
|
-
}));
|
|
246
|
+
}), _this3.props.withSubOptions && value.aggregators && /*#__PURE__*/_react["default"].createElement(_icons.ChevronRight, null));
|
|
247
|
+
}))), this.props.withSubOptions && this.state.currentOption && this.state.currentOption.aggregators && /*#__PURE__*/_react["default"].createElement(_itemSelectorSubmenu["default"], {
|
|
248
|
+
position: this.state.submenuPosition,
|
|
249
|
+
options: this.state.currentOption.aggregators.map(function (a) {
|
|
250
|
+
return _defaultSettings.FIELD_AGGREGATORS.find(function (am) {
|
|
251
|
+
return am.id === a;
|
|
252
|
+
});
|
|
253
|
+
}),
|
|
254
|
+
onClick: function onClick(aggregator, e) {
|
|
255
|
+
return _this3._onClick(_this3.state.currentOption, aggregator, e);
|
|
256
|
+
}
|
|
145
257
|
}));
|
|
146
258
|
}
|
|
147
259
|
}]);
|
|
@@ -151,6 +263,7 @@ var DropdownList = /*#__PURE__*/function (_Component) {
|
|
|
151
263
|
exports["default"] = DropdownList;
|
|
152
264
|
(0, _defineProperty2["default"])(DropdownList, "propTypes", {
|
|
153
265
|
options: _propTypes["default"].arrayOf(_propTypes["default"].any),
|
|
266
|
+
subOptions: _propTypes["default"].arrayOf(_propTypes["default"].any),
|
|
154
267
|
allowCustomValues: _propTypes["default"].number,
|
|
155
268
|
customClasses: _propTypes["default"].object,
|
|
156
269
|
customValues: _propTypes["default"].arrayOf(_propTypes["default"].any),
|
|
@@ -162,7 +275,9 @@ exports["default"] = DropdownList;
|
|
|
162
275
|
defaultClassNames: _propTypes["default"].bool,
|
|
163
276
|
areResultsTruncated: _propTypes["default"].bool,
|
|
164
277
|
resultsTruncatedMessage: _propTypes["default"].string,
|
|
165
|
-
listItemComponent: _propTypes["default"].func
|
|
278
|
+
listItemComponent: _propTypes["default"].func,
|
|
279
|
+
searchEntryValue: _propTypes["default"].string,
|
|
280
|
+
withSubOptions: _propTypes["default"].bool
|
|
166
281
|
});
|
|
167
282
|
(0, _defineProperty2["default"])(DropdownList, "defaultProps", {
|
|
168
283
|
customClasses: {},
|
|
@@ -173,6 +288,7 @@ exports["default"] = DropdownList;
|
|
|
173
288
|
displayOption: defaultDisplay,
|
|
174
289
|
onOptionSelected: function onOptionSelected() {},
|
|
175
290
|
defaultClassNames: true,
|
|
176
|
-
selectionIndex: null
|
|
291
|
+
selectionIndex: null,
|
|
292
|
+
withSubOptions: false
|
|
177
293
|
});
|
|
178
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL2NvbW1vbi9pdGVtLXNlbGVjdG9yL2Ryb3Bkb3duLWxpc3QuanMiXSwibmFtZXMiOlsiY2xhc3NMaXN0IiwibGlzdCIsImxpc3RIZWFkZXIiLCJsaXN0U2VjdGlvbiIsImxpc3RJdGVtIiwibGlzdEl0ZW1BbmNob3IiLCJkZWZhdWx0RGlzcGxheSIsImQiLCJMaXN0SXRlbSIsInZhbHVlIiwiZGlzcGxheU9wdGlvbiIsIkRyb3Bkb3duTGlzdFdyYXBwZXIiLCJzdHlsZWQiLCJkaXYiLCJwcm9wcyIsImxpZ2h0IiwidGhlbWUiLCJkcm9wZG93bkxpc3RCZ2RMVCIsImRyb3Bkb3duTGlzdEJnZCIsImRyb3Bkb3duTGlzdEJvcmRlclRvcExUIiwiZHJvcGRvd25MaXN0Qm9yZGVyVG9wIiwiZHJvcGRvd25MaXN0TFQiLCJkcm9wZG93bkxpc3QiLCJEcm9wZG93bkxpc3QiLCJyZXN1bHQiLCJldmVudCIsInByZXZlbnREZWZhdWx0Iiwib25PcHRpb25TZWxlY3RlZCIsImZpeGVkT3B0aW9ucyIsImRpc3BsYXkiLCJvcHRpb25zIiwibGVuZ3RoIiwiYWxsb3dDdXN0b21WYWx1ZXMiLCJ2YWx1ZU9mZnNldCIsIkFycmF5IiwiaXNBcnJheSIsImN1c3RvbUxpc3RIZWFkZXJDb21wb25lbnQiLCJtYXAiLCJpIiwiaG92ZXIiLCJzZWxlY3Rpb25JbmRleCIsImZpeGVkIiwiZSIsIl9vbkNsaWNrIiwiQ29tcG9uZW50IiwiUHJvcFR5cGVzIiwiYXJyYXlPZiIsImFueSIsIm51bWJlciIsImN1c3RvbUNsYXNzZXMiLCJvYmplY3QiLCJjdXN0b21WYWx1ZXMiLCJjdXN0b21MaXN0SXRlbUNvbXBvbmVudCIsIm9uZU9mVHlwZSIsImVsZW1lbnQiLCJmdW5jIiwiaXNSZXF1aXJlZCIsImRlZmF1bHRDbGFzc05hbWVzIiwiYm9vbCIsImFyZVJlc3VsdHNUcnVuY2F0ZWQiLCJyZXN1bHRzVHJ1bmNhdGVkTWVzc2FnZSIsInN0cmlu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QUFFZCxzQkFBVWEsSUFYZDtBQVlqQkUsRUFBQUEsdUJBQXVCLEVBQUVmLHNCQUFVZ0IsTUFabEI7QUFhakJDLEVBQUFBLGlCQUFpQixFQUFFakIsc0JBQVVVO0FBYlosQztpQ0FEQWhDLFksa0JBaUJHO0FBQ3BCMEIsRUFBQUEsYUFBYSxFQUFFLEVBREs7QUFFcEJHLEVBQUFBLHVCQUF1QixFQUFFNUMsUUFGTDtBQUdwQjRCLEVBQUFBLHlCQUF5QixFQUFFLElBSFA7QUFJcEJKLEVBQUFBLGlCQUFpQixFQUFFLENBSkM7QUFLcEJtQixFQUFBQSxZQUFZLEVBQUUsRUFMTTtBQU1wQnpDLEVBQUFBLGFBQWEsRUFBRUosY0FOSztBQU9wQnFCLEVBQUFBLGdCQUFnQixFQUFFLDRCQUFNLENBQUUsQ0FQTjtBQVFwQjhCLEVBQUFBLGlCQUFpQixFQUFFLElBUkM7QUFTcEJqQixFQUFBQSxjQUFjLEVBQUU7QUFUSSxDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IChjKSAyMDIyIFViZXIgVGVjaG5vbG9naWVzLCBJbmMuXG4vL1xuLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weVxuLy8gb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbFxuLy8gaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0c1xuLy8gdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbFxuLy8gY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzXG4vLyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuLy9cbi8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluXG4vLyBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbi8vXG4vLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4vLyBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbi8vIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRVxuLy8gQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuLy8gTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSxcbi8vIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU5cbi8vIFRIRSBTT0ZUV0FSRS5cblxuaW1wb3J0IFJlYWN0LCB7Q29tcG9uZW50fSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnO1xuaW1wb3J0IGNsYXNzTmFtZXMgZnJvbSAnY2xhc3NuYW1lcyc7XG5pbXBvcnQgc3R5bGVkIGZyb20gJ3N0eWxlZC1jb21wb25lbnRzJztcblxuZXhwb3J0IGNvbnN0IGNsYXNzTGlzdCA9IHtcbiAgbGlzdDogJ2xpc3Qtc2VsZWN0b3InLFxuICBsaXN0SGVhZGVyOiAnbGlzdF9faGVhZGVyJyxcbiAgbGlzdFNlY3Rpb246ICdsaXN0X19zZWN0aW9uJyxcbiAgbGlzdEl0ZW06ICdsaXN0X19pdGVtJyxcbiAgbGlzdEl0ZW1BbmNob3I6ICdsaXN0X19pdGVtX19hbmNob3InXG59O1xuXG5jb25zdCBkZWZhdWx0RGlzcGxheSA9IGQgPT4gZDtcbmV4cG9ydCBjb25zdCBMaXN0SXRlbSA9ICh7dmFsdWUsIGRpc3BsYXlPcHRpb24gPSBkZWZhdWx0RGlzcGxheX0pID0+IChcbiAgPHNwYW4gY2xhc3NOYW1lPXtjbGFzc0xpc3QubGlzdEl0ZW1BbmNob3J9PntkaXNwbGF5T3B0aW9uKHZhbHVlKX08L3NwYW4+XG4pO1xuXG5jb25zdCBEcm9wZG93bkxpc3RXcmFwcGVyID0gc3R5bGVkLmRpdmBcbiAgYmFja2dyb3VuZC1jb2xvcjogJHtwcm9wcyA9PlxuICAgIHByb3BzLmxpZ2h0ID8gcHJvcHMudGhlbWUuZHJvcGRvd25MaXN0QmdkTFQgOiBwcm9wcy50aGVtZS5kcm9wZG93bkxpc3RCZ2R9O1xuICBib3JkZXItdG9wOiAxcHggc29saWRcbiAgICAke3Byb3BzID0+XG4gICAgICBwcm9wcy5saWdodCA/IHByb3BzLnRoZW1lLmRyb3Bkb3duTGlzdEJvcmRlclRvcExUIDogcHJvcHMudGhlbWUuZHJvcGRvd25MaXN0Qm9yZGVyVG9wfTtcbiAgJHtwcm9wcyA9PiAocHJvcHMubGlnaHQgPyBwcm9wcy50aGVtZS5kcm9wZG93bkxpc3RMVCA6IHByb3BzLnRoZW1lLmRyb3Bkb3duTGlzdCl9O1xuYDtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRHJvcGRvd25MaXN0IGV4dGVuZHMgQ29tcG9uZW50IHtcbiAgc3RhdGljIHByb3BUeXBlcyA9IHtcbiAgICBvcHRpb25zOiBQcm9wVHlwZXMuYXJyYXlPZihQcm9wVHlwZXMuYW55KSxcbiAgICBhbGxvd0N1c3RvbVZhbHVlczogUHJvcFR5cGVzLm51bWJlcixcbiAgICBjdXN0b21DbGFzc2VzOiBQcm9wVHlwZXMub2JqZWN0LFxuICAgIGN1c3RvbVZhbHVlczogUHJvcFR5cGVzLmFycmF5T2YoUHJvcFR5cGVzLmFueSksXG4gICAgY3VzdG9tTGlzdEl0ZW1Db21wb25lbnQ6IFByb3BUeXBlcy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5lbGVtZW50LCBQcm9wVHlwZXMuZnVuY10pLFxuICAgIGN1c3RvbUxpc3RIZWFkZXJDb21wb25lbnQ6IFByb3BUeXBlcy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5lbGVtZW50LCBQcm9wVHlwZXMuZnVuY10pLFxuICAgIHNlbGVjdGlvbkluZGV4OiBQcm9wVHlwZXMubnVtYmVyLFxuICAgIG9uT3B0aW9uU2VsZWN0ZWQ6IFByb3BUeXBlcy5mdW5jLFxuICAgIGRpc3BsYXlPcHRpb246IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gICAgZGVmYXVsdENsYXNzTmFtZXM6IFByb3BUeXBlcy5ib29sLFxuICAgIGFyZVJlc3VsdHNUcnVuY2F0ZWQ6IFByb3BUeXBlcy5ib29sLFxuICAgIHJlc3VsdHNUcnVuY2F0ZWRNZXNzYWdlOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAgIGxpc3RJdGVtQ29tcG9uZW50OiBQcm9wVHlwZXMuZnVuY1xuICB9O1xuXG4gIHN0YXRpYyBkZWZhdWx0UHJvcHMgPSB7XG4gICAgY3VzdG9tQ2xhc3Nlczoge30sXG4gICAgY3VzdG9tTGlzdEl0ZW1Db21wb25lbnQ6IExpc3RJdGVtLFxuICAgIGN1c3RvbUxpc3RIZWFkZXJDb21wb25lbnQ6IG51bGwsXG4gICAgYWxsb3dDdXN0b21WYWx1ZXM6IDAsXG4gICAgY3VzdG9tVmFsdWVzOiBbXSxcbiAgICBkaXNwbGF5T3B0aW9uOiBkZWZhdWx0RGlzcGxheSxcbiAgICBvbk9wdGlvblNlbGVjdGVkOiAoKSA9PiB7fSxcbiAgICBkZWZhdWx0Q2xhc3NOYW1lczogdHJ1ZSxcbiAgICBzZWxlY3Rpb25JbmRleDogbnVsbFxuICB9O1xuXG4gIF9vbkNsaWNrKHJlc3VsdCwgZXZlbnQpIHtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIHRoaXMucHJvcHMub25PcHRpb25TZWxlY3RlZChyZXN1bHQsIGV2ZW50KTtcbiAgfVxuXG4gIHJlbmRlcigpIHtcbiAgICBjb25zdCB7Zml4ZWRPcHRpb25zLCBsaWdodH0gPSB0aGlzLnByb3BzO1xuICAgIGNvbnN0IGRpc3BsYXkgPSB0aGlzLnByb3BzLmRpc3BsYXlPcHRpb247XG5cbiAgICAvLyBEb24ndCByZW5kZXIgaWYgdGhlcmUgYXJlIG5vIG9wdGlvbnMgdG8gZGlzcGxheVxuICAgIGlmICghdGhpcy5wcm9wcy5vcHRpb25zLmxlbmd0aCAmJiB0aGlzLnByb3BzLmFsbG93Q3VzdG9tVmFsdWVzIDw9IDApIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBjb25zdCB2YWx1ZU9mZnNldCA9IEFycmF5LmlzQXJyYXkoZml4ZWRPcHRpb25zKSA/IGZpeGVkT3B0aW9ucy5sZW5ndGggOiAwO1xuXG4gICAgLy8gRm9yIHNvbWUgcmVhc29uIG9uQ2xpY2sgaXMgbm90IGZpcmVkIHdoZW4gY2xpY2tlZCBvbiBhbiBvcHRpb25cbiAgICAvLyBvbk1vdXNlRG93biBpcyB1c2VkIGhlcmUgYXMgYSB3b3JrYXJvdW5kIG9mICMyMDUgYW5kIG90aGVyXG4gICAgcmV0dXJuIChcbiAgICAgIDxEcm9wZG93bkxpc3RXcmFwcGVyIGNsYXNzTmFtZT17Y2xhc3NMaXN0Lmxpc3R9IGxpZ2h0PXtsaWdodH0+XG4gICAgICAgIHt0aGlzLnByb3BzLmN1c3RvbUxpc3RIZWFkZXJDb21wb25lbnQgPyAoXG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2NsYXNzTGlzdC5saXN0SGVhZGVyfT5cbiAgICAgICAgICAgIDx0aGlzLnByb3BzLmN1c3RvbUxpc3RIZWFkZXJDb21wb25lbnQgLz5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgKSA6IG51bGx9XG5cbiAgICAgICAge3ZhbHVlT2Zmc2V0ID4gMCA/IChcbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Y2xhc3NMaXN0Lmxpc3RTZWN0aW9ufT5cbiAgICAgICAgICAgIHtmaXhlZE9wdGlvbnMubWFwKCh2YWx1ZSwgaSkgPT4gKFxuICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbGFzc05hbWVzKGNsYXNzTGlzdC5saXN0SXRlbSwge1xuICAgICAgICAgICAgICAgICAgaG92ZXI6IHRoaXMucHJvcHMuc2VsZWN0aW9uSW5kZXggPT09IGksXG4gICAgICAgICAgICAgICAgICBmaXhlZDogdHJ1ZVxuICAgICAgICAgICAgICAgIH0pfVxuICAgICAgICAgICAgICAgIGtleT17YCR7ZGlzcGxheSh2YWx1ZSl9XyR7aX1gfVxuICAgICAgICAgICAgICAgIG9uTW91c2VEb3duPXtlID0+IHRoaXMuX29uQ2xpY2sodmFsdWUsIGUpfVxuICAgICAgICAgICAgICAgIG9uQ2xpY2s9e2UgPT4gdGhpcy5fb25DbGljayh2YWx1ZSwgZSl9XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8dGhpcy5wcm9wcy5jdXN0b21MaXN0SXRlbUNvbXBvbmVudCB2YWx1ZT17dmFsdWV9IGRpc3BsYXlPcHRpb249e2Rpc3BsYXl9IC8+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgKSl9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICkgOiBudWxsfVxuXG4gICAgICAgIHt0aGlzLnByb3BzLm9wdGlvbnMubWFwKCh2YWx1ZSwgaSkgPT4gKFxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xhc3NOYW1lcyhjbGFzc0xpc3QubGlzdEl0ZW0sIHtcbiAgICAgICAgICAgICAgaG92ZXI6IHRoaXMucHJvcHMuc2VsZWN0aW9uSW5kZXggPT09IGkgKyB2YWx1ZU9mZnNldFxuICAgICAgICAgICAgfSl9XG4gICAgICAgICAgICBrZXk9e2Ake2Rpc3BsYXkodmFsdWUpfV8ke2l9YH1cbiAgICAgICAgICAgIG9uTW91c2VEb3duPXtlID0+IHRoaXMuX29uQ2xpY2sodmFsdWUsIGUpfVxuICAgICAgICAgICAgb25DbGljaz17ZSA9PiB0aGlzLl9vbkNsaWNrKHZhbHVlLCBlKX1cbiAgICAgICAgICA+XG4gICAgICAgICAgICA8dGhpcy5wcm9wcy5jdXN0b21MaXN0SXRlbUNvbXBvbmVudCB2YWx1ZT17dmFsdWV9IGRpc3BsYXlPcHRpb249e2Rpc3BsYXl9IC8+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICkpfVxuICAgICAgPC9Ecm9wZG93bkxpc3RXcmFwcGVyPlxuICAgICk7XG4gIH1cbn1cbiJdfQ==
|
|
294
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL2NvbW1vbi9pdGVtLXNlbGVjdG9yL2Ryb3Bkb3duLWxpc3QuanMiXSwibmFtZXMiOlsiY2xhc3NMaXN0IiwibGlzdCIsImxpc3RIZWFkZXIiLCJsaXN0U2VjdGlvbiIsImxpc3RJdGVtIiwibGlzdEl0ZW1BbmNob3IiLCJkZWZhdWx0RGlzcGxheSIsImQiLCJMaXN0SXRlbSIsInZhbHVlIiwiZGlzcGxheU9wdGlvbiIsIkRyb3Bkb3duTGlzdFdyYXBwZXIiLCJzdHlsZWQiLCJkaXYiLCJwcm9wcyIsImxpZ2h0IiwidGhlbWUiLCJkcm9wZG93bkxpc3RCZ2RMVCIsImRyb3Bkb3duTGlzdEJnZCIsImRyb3Bkb3duTGlzdEJvcmRlclRvcExUIiwiZHJvcGRvd25MaXN0Qm9yZGVyVG9wIiwiZHJvcGRvd25MaXN0TFQiLCJkcm9wZG93bkxpc3QiLCJEcm9wZG93bkxpc3RDb250YWluZXIiLCJJdGVtIiwiRHJvcGRvd25MaXN0IiwiY3VycmVudE9wdGlvbiIsInN1Ym1lbnVWaXNpYmxlIiwic3VibWVudVBvc2l0aW9uIiwic3ViT3B0aW9ucyIsImNhbGxiYWNrIiwic2V0U3RhdGUiLCJvcHRpb24iLCJzdWJPcHRpb24iLCJldmVudCIsIm9wdGlvblNlbGVjdGVkIiwic2VsZWN0ZWRBZ2dyZWdhdG9yIiwiaWQiLCJ3aXRoU3ViT3B0aW9ucyIsImFnZ3JlZ2F0b3JzIiwib25PcHRpb25TZWxlY3RlZCIsImVsIiwidGFyZ2V0IiwicHJldmlvdXNTdGF0ZSIsInRvcCIsImdldEJvdW5kaW5nQ2xpZW50UmVjdCIsImxlZnQiLCJyZWYiLCJjdXJyZW50IiwicmlnaHQiLCJwcmV2UHJvcHMiLCJzZWFyY2hFbnRyeVZhbHVlIiwiX3Jlc2V0U3RhdGUiLCJzdWJNZW51UG9zaXRpb24iLCJmaXhlZE9wdGlvbnMiLCJkaXNwbGF5Iiwib3B0aW9ucyIsImxlbmd0aCIsImFsbG93Q3VzdG9tVmFsdWVzIiwidmFsdWVPZmZzZXQiLCJBcnJheSIsImlzQXJyYXkiLCJjdXN0b21MaXN0SGVhZGVyQ29tcG9uZW50IiwibWFwIiwiaSIsImFjdGl2ZSIsInNlbGVjdGlvbkluZGV4IiwiaG92ZXIiLCJzdGF0ZSIsImZpeGVkIiwiZSIsImhhc1N1Yk9wdGlvbnMiLCJfb25DbGljayIsIl9vbk1vdXNlT3ZlciIsImEiLCJGSUVMRF9BR0dSRUdBVE9SUyIsImZpbmQiLCJhbSIsImFnZ3JlZ2F0b3IiLCJDb21wb25lbnQiLCJQcm9wVHlwZXMiLCJhcnJheU9mIiwiYW55IiwibnVtYmVyIiwiY3VzdG9tQ2xhc3NlcyIsIm9iamVjdCIsImN1c3RvbVZhbHVlcyIsImN1c3RvbUxpc3RJdGVtQ29tcG9uZW50Iiwib25lT2ZUeXBlIiwiZWxlbWVudCIsImZ1bmMiLCJpc1JlcXVpcmVkIiwiZGVmYXVsdENsYXNzTmFtZXMiLCJib29sIiwiYXJlUmVzdWx0c1RydW5jYXRlZCIsInJlc3VsdHNUcnVuY2F0ZWRNZXNzYWdlIiwic3RyaW5nIiwibGlzdEl0ZW1Db21wb25lbnQiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBb0JBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOzs7Ozs7Ozs7Ozs7QUFFTyxJQUFNQSxTQUFTLEdBQUc7QUFDdkJDLEVBQUFBLElBQUksRUFBRSxlQURpQjtBQUV2QkMsRUFBQUEsVUFBVSxFQUFFLGNBRlc7QUFHdkJDLEVBQUFBLFdBQVcsRUFBRSxlQUhVO0FBSXZCQyxFQUFBQSxRQUFRLEVBQUUsWUFKYTtBQUt2QkMsRUFBQUEsY0FBYyxFQUFFO0FBTE8sQ0FBbEI7OztBQVFQLElBQU1DLGNBQWMsR0FBRyxTQUFqQkEsY0FBaUIsQ0FBQUMsQ0FBQztBQUFBLFNBQUlBLENBQUo7QUFBQSxDQUF4Qjs7QUFDTyxJQUFNQyxRQUFRLEdBQUcsU0FBWEEsUUFBVztBQUFBLE1BQUVDLEtBQUYsUUFBRUEsS0FBRjtBQUFBLGdDQUFTQyxhQUFUO0FBQUEsTUFBU0EsYUFBVCxtQ0FBeUJKLGNB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QixFQUFFLElBSFA7QUFJcEJKLEVBQUFBLGlCQUFpQixFQUFFLENBSkM7QUFLcEI0QixFQUFBQSxZQUFZLEVBQUUsRUFMTTtBQU1wQjVFLEVBQUFBLGFBQWEsRUFBRUosY0FOSztBQU9wQmtDLEVBQUFBLGdCQUFnQixFQUFFLDRCQUFNLENBQUUsQ0FQTjtBQVFwQm9ELEVBQUFBLGlCQUFpQixFQUFFLElBUkM7QUFTcEIxQixFQUFBQSxjQUFjLEVBQUUsSUFUSTtBQVVwQjVCLEVBQUFBLGNBQWMsRUFBRTtBQVZJLEMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgKGMpIDIwMjIgVWJlciBUZWNobm9sb2dpZXMsIEluYy5cbi8vXG4vLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5XG4vLyBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSBcIlNvZnR3YXJlXCIpLCB0byBkZWFsXG4vLyBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzXG4vLyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsXG4vLyBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXNcbi8vIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4vL1xuLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW5cbi8vIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuLy9cbi8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1Jcbi8vIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLFxuLy8gRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFXG4vLyBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSXG4vLyBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLFxuLy8gT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTlxuLy8gVEhFIFNPRlRXQVJFLlxuXG5pbXBvcnQgUmVhY3QsIHtDb21wb25lbnQsIGNyZWF0ZVJlZn0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJztcbmltcG9ydCBjbGFzc05hbWVzIGZyb20gJ2NsYXNzbmFtZXMnO1xuaW1wb3J0IHN0eWxlZCBmcm9tICdzdHlsZWQtY29tcG9uZW50cyc7XG5pbXBvcnQgSXRlbVNlbGVjdG9yU3VibWVudSBmcm9tICcuL2l0ZW0tc2VsZWN0b3Itc3VibWVudSc7XG5pbXBvcnQge0NoZXZyb25SaWdodH0gZnJvbSAnY29tcG9uZW50cy9jb21tb24vaWNvbnMnO1xuaW1wb3J0IHtGSUVMRF9BR0dSRUdBVE9SU30gZnJvbSAnY29uc3RhbnRzL2RlZmF1bHQtc2V0dGluZ3MnO1xuXG5leHBvcnQgY29uc3QgY2xhc3NMaXN0ID0ge1xuICBsaXN0OiAnbGlzdC1zZWxlY3RvcicsXG4gIGxpc3RIZWFkZXI6ICdsaXN0X19oZWFkZXInLFxuICBsaXN0U2VjdGlvbjogJ2xpc3RfX3NlY3Rpb24nLFxuICBsaXN0SXRlbTogJ2xpc3RfX2l0ZW0nLFxuICBsaXN0SXRlbUFuY2hvcjogJ2xpc3RfX2l0ZW1fX2FuY2hvcidcbn07XG5cbmNvbnN0IGRlZmF1bHREaXNwbGF5ID0gZCA9PiBkO1xuZXhwb3J0IGNvbnN0IExpc3RJdGVtID0gKHt2YWx1ZSwgZGlzcGxheU9wdGlvbiA9IGRlZmF1bHREaXNwbGF5fSkgPT4gKFxuICA8c3BhbiBjbGFzc05hbWU9e2NsYXNzTGlzdC5saXN0SXRlbUFuY2hvcn0+e2Rpc3BsYXlPcHRpb24odmFsdWUpfTwvc3Bhbj5cbik7XG5cbmNvbnN0IERyb3Bkb3duTGlzdFdyYXBwZXIgPSBzdHlsZWQuZGl2YFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAke3Byb3BzID0+XG4gICAgcHJvcHMubGlnaHQgPyBwcm9wcy50aGVtZS5kcm9wZG93bkxpc3RCZ2RMVCA6IHByb3BzLnRoZW1lLmRyb3Bkb3duTGlzdEJnZH07XG4gIGJvcmRlci10b3A6IDFweCBzb2xpZFxuICAgICR7cHJvcHMgPT5cbiAgICAgIHByb3BzLmxpZ2h0ID8gcHJvcHMudGhlbWUuZHJvcGRvd25MaXN0Qm9yZGVyVG9wTFQgOiBwcm9wcy50aGVtZS5kcm9wZG93bkxpc3RCb3JkZXJUb3B9O1xuICAke3Byb3BzID0+IChwcm9wcy5saWdodCA/IHByb3BzLnRoZW1lLmRyb3Bkb3duTGlzdExUIDogcHJvcHMudGhlbWUuZHJvcGRvd25MaXN0KX07XG5gO1xuXG5jb25zdCBEcm9wZG93bkxpc3RDb250YWluZXIgPSBzdHlsZWQuZGl2YFxuICBwb3NpdGlvbjogcmVsYXRpdmU7XG5gO1xuXG5jb25zdCBJdGVtID0gc3R5bGVkLmRpdmBcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBwYWRkaW5nLXJpZ2h0OiAyNXB4O1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gIHN2ZyB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHJpZ2h0OiAwO1xuICAgIHRvcDogNTAlO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTtcbiAgICBvcGFjaXR5OiAwLjY7XG4gIH1cbiAgJjpob3ZlciwgJi5ob3ZlciB7XG4gICAgc3ZnIHtcbiAgICAgIG9wYWNpdHk6IDE7XG4gICAgfVxuICB9XG5gO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBEcm9wZG93bkxpc3QgZXh0ZW5kcyBDb21wb25lbnQge1xuICBzdGF0aWMgcHJvcFR5cGVzID0ge1xuICAgIG9wdGlvbnM6IFByb3BUeXBlcy5hcnJheU9mKFByb3BUeXBlcy5hbnkpLFxuICAgIHN1Yk9wdGlvbnM6IFByb3BUeXBlcy5hcnJheU9mKFByb3BUeXBlcy5hbnkpLFxuICAgIGFsbG93Q3VzdG9tVmFsdWVzOiBQcm9wVHlwZXMubnVtYmVyLFxuICAgIGN1c3RvbUNsYXNzZXM6IFByb3BUeXBlcy5vYmplY3QsXG4gICAgY3VzdG9tVmFsdWVzOiBQcm9wVHlwZXMuYXJyYXlPZihQcm9wVHlwZXMuYW55KSxcbiAgICBjdXN0b21MaXN0SXRlbUNvbXBvbmVudDogUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLmVsZW1lbnQsIFByb3BUeXBlcy5mdW5jXSksXG4gICAgY3VzdG9tTGlzdEhlYWRlckNvbXBvbmVudDogUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLmVsZW1lbnQsIFByb3BUeXBlcy5mdW5jXSksXG4gICAgc2VsZWN0aW9uSW5kZXg6IFByb3BUeXBlcy5udW1iZXIsXG4gICAgb25PcHRpb25TZWxlY3RlZDogUHJvcFR5cGVzLmZ1bmMsXG4gICAgZGlzcGxheU9wdGlvbjogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgICBkZWZhdWx0Q2xhc3NOYW1lczogUHJvcFR5cGVzLmJvb2wsXG4gICAgYXJlUmVzdWx0c1RydW5jYXRlZDogUHJvcFR5cGVzLmJvb2wsXG4gICAgcmVzdWx0c1RydW5jYXRlZE1lc3NhZ2U6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgbGlzdEl0ZW1Db21wb25lbnQ6IFByb3BUeXBlcy5mdW5jLFxuICAgIHNlYXJjaEVudHJ5VmFsdWU6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgd2l0aFN1Yk9wdGlvbnM6IFByb3BUeXBlcy5ib29sXG4gIH07XG5cbiAgc3RhdGljIGRlZmF1bHRQcm9wcyA9IHtcbiAgICBjdXN0b21DbGFzc2VzOiB7fSxcbiAgICBjdXN0b21MaXN0SXRlbUNvbXBvbmVudDogTGlzdEl0ZW0sXG4gICAgY3VzdG9tTGlzdEhlYWRlckNvbXBvbmVudDogbnVsbCxcbiAgICBhbGxvd0N1c3RvbVZhbHVlczogMCxcbiAgICBjdXN0b21WYWx1ZXM6IFtdLFxuICAgIGRpc3BsYXlPcHRpb246IGRlZmF1bHREaXNwbGF5LFxuICAgIG9uT3B0aW9uU2VsZWN0ZWQ6ICgpID0+IHt9LFxuICAgIGRlZmF1bHRDbGFzc05hbWVzOiB0cnVlLFxuICAgIHNlbGVjdGlvbkluZGV4OiBudWxsLFxuICAgIHdpdGhTdWJPcHRpb25zOiBmYWxzZVxuICB9O1xuXG4gIHN0YXRlID0ge1xuICAgIGN1cnJlbnRPcHRpb246IHt9LFxuICAgIHN1Ym1lbnVWaXNpYmxlOiBmYWxzZSxcbiAgICBzdWJtZW51UG9zaXRpb246IHt9XG4gIH07XG5cbiAgaGFzU3ViT3B0aW9ucyA9ICEhdGhpcy5wcm9wcy5zdWJPcHRpb25zXG5cbiAgcmVmID0gY3JlYXRlUmVmKCk7XG5cbiAgX3Jlc2V0U3RhdGUoY2FsbGJhY2spIHtcbiAgICB0aGlzLnNldFN0YXRlKHtjdXJyZW50T3B0aW9uOiB7fSwgc3VibWVudVZpc2libGU6IGZhbHNlLCBzdWJtZW51UG9zaXRpb246IHt9fSwgY2FsbGJhY2spO1xuICB9XG5cbiAgX29uQ2xpY2sob3B0aW9uLCBzdWJPcHRpb24sIGV2ZW50KSB7XG4gICAgY29uc3Qgb3B0aW9uU2VsZWN0ZWQgPVxuICAgICAgdHlwZW9mIG9wdGlvbiAhPT0gJ29iamVjdCdcbiAgICAgICAgPyBvcHRpb25cbiAgICAgICAgOiB7XG4gICAgICAgICAgICAuLi5vcHRpb24sXG4gICAgICAgICAgICBzZWxlY3RlZEFnZ3JlZ2F0b3I6IHN1Yk9wdGlvbj8uaWRcbiAgICAgICAgICB9O1xuICAgIGlmIChcbiAgICAgICh0aGlzLnByb3BzLndpdGhTdWJPcHRpb25zICYmIChzdWJPcHRpb24/LmlkIHx8ICFvcHRpb24uYWdncmVnYXRvcnMpKSB8fFxuICAgICAgIXRoaXMucHJvcHMud2l0aFN1Yk9wdGlvbnNcbiAgICApIHtcbiAgICAgIHRoaXMucHJvcHMub25PcHRpb25TZWxlY3RlZChvcHRpb25TZWxlY3RlZCwgZXZlbnQpO1xuICAgIH1cbiAgfVxuXG4gIF9vbk1vdXNlT3ZlcihvcHRpb24sIGV2ZW50KSB7XG4gICAgY29uc3QgZWwgPSBldmVudC50YXJnZXRcbiAgICB0aGlzLnNldFN0YXRlKChwcmV2aW91c1N0YXRlKSA9PiAoe1xuICAgICAgY3VycmVudE9wdGlvbjogb3B0aW9uLFxuICAgICAgc3VibWVudVZpc2libGU6IHRydWUsXG4gICAgICBzdWJtZW51UG9zaXRpb246IHtcbiAgICAgICAgdG9wOiBlbC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS50b3AsXG4gICAgICAgIGxlZnQ6IHByZXZpb3VzU3RhdGUuc3VibWVudVBvc2l0aW9uLmxlZnQgP3ByZXZpb3VzU3RhdGUuc3VibWVudVBvc2l0aW9uLmxlZnQgOiB0aGlzLnJlZi5jdXJyZW50Py5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5yaWdodFxuICAgICAgfVxuICAgIH0pKTtcbiAgfVxuXG4gIGNvbXBvbmVudERpZFVwZGF0ZShwcmV2UHJvcHMpIHtcbiAgICBpZiAocHJldlByb3BzLnNlYXJjaEVudHJ5VmFsdWUgIT09IHRoaXMucHJvcHMuc2VhcmNoRW50cnlWYWx1ZSkge1xuICAgICAgdGhpcy5fcmVzZXRTdGF0ZSgpO1xuICAgIH1cbiAgfVxuXG4gIGNvbXBvbmVudERpZE1vdW50KCkge1xuICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgc3ViTWVudVBvc2l0aW9uOiB7IGxlZnQ6IHRoaXMucmVmLmN1cnJlbnQ/LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnJpZ2h0IH1cbiAgICB9KVxuICB9XG5cbiAgcmVuZGVyKCkge1xuICAgIGNvbnN0IHtmaXhlZE9wdGlvbnMsIGxpZ2h0fSA9IHRoaXMucHJvcHM7XG4gICAgY29uc3QgZGlzcGxheSA9IHRoaXMucHJvcHMuZGlzcGxheU9wdGlvbjtcblxuICAgIC8vIERvbid0IHJlbmRlciBpZiB0aGVyZSBhcmUgbm8gb3B0aW9ucyB0byBkaXNwbGF5XG4gICAgaWYgKCF0aGlzLnByb3BzLm9wdGlvbnMubGVuZ3RoICYmIHRoaXMucHJvcHMuYWxsb3dDdXN0b21WYWx1ZXMgPD0gMCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGNvbnN0IHZhbHVlT2Zmc2V0ID0gQXJyYXkuaXNBcnJheShmaXhlZE9wdGlvbnMpID8gZml4ZWRPcHRpb25zLmxlbmd0aCA6IDA7XG5cbiAgICAvLyBGb3Igc29tZSByZWFzb24gb25DbGljayBpcyBub3QgZmlyZWQgd2hlbiBjbGlja2VkIG9uIGFuIG9wdGlvblxuICAgIC8vIG9uTW91c2VEb3duIGlzIHVzZWQgaGVyZSBhcyBhIHdvcmthcm91bmQgb2YgIzIwNSBhbmQgb3RoZXJcbiAgICByZXR1cm4gKFxuICAgICAgPERyb3Bkb3duTGlzdENvbnRhaW5lciBvbk1vdXNlTGVhdmU9eygpID0+IHRoaXMuX3Jlc2V0U3RhdGUoKX0+XG4gICAgICAgIDxEcm9wZG93bkxpc3RXcmFwcGVyIGNsYXNzTmFtZT17Y2xhc3NMaXN0Lmxpc3R9IGxpZ2h0PXtsaWdodH0+XG4gICAgICAgICAge3RoaXMucHJvcHMuY3VzdG9tTGlzdEhlYWRlckNvbXBvbmVudCA/IChcbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtjbGFzc0xpc3QubGlzdEhlYWRlcn0+XG4gICAgICAgICAgICAgIDx0aGlzLnByb3BzLmN1c3RvbUxpc3RIZWFkZXJDb21wb25lbnQgLz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICkgOiBudWxsfVxuICAgICAgICAgIDxkaXYgcmVmPXt0aGlzLnJlZn0+XG4gICAgICAgICAgICB7dmFsdWVPZmZzZXQgPiAwID8gKFxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Y2xhc3NMaXN0Lmxpc3RTZWN0aW9ufT5cbiAgICAgICAgICAgICAgICB7Zml4ZWRPcHRpb25zLm1hcCgodmFsdWUsIGkpID0+IChcbiAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbGFzc05hbWVzKGNsYXNzTGlzdC5saXN0SXRlbSwge1xuICAgICAgICAgICAgICAgICAgICAgIGFjdGl2ZTogdGhpcy5wcm9wcy5zZWxlY3Rpb25JbmRleCA9PT0gaSxcbiAgICAgICAgICAgICAgICAgICAgICBob3ZlcjogdmFsdWUuaWQgJiYgKHRoaXMuc3RhdGUuY3VycmVudE9wdGlvbj8uaWQgPT09IHZhbHVlLmlkKSxcbiAgICAgICAgICAgICAgICAgICAgICBmaXhlZDogdHJ1ZVxuICAgICAgICAgICAgICAgICAgICB9KX1cbiAgICAgICAgICAgICAgICAgICAga2V5PXtgJHtkaXNwbGF5KHZhbHVlKX1fJHtpfWB9XG4gICAgICAgICAgICAgICAgICAgIG9uTW91c2VEb3duPXtlID0+ICF0aGlzLmhhc1N1Yk9wdGlvbnMgJiYgdGhpcy5fb25DbGljayh2YWx1ZSwgbnVsbCwgZSl9XG4gICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9e2UgPT4gIXRoaXMuaGFzU3ViT3B0aW9ucyAmJiB0aGlzLl9vbkNsaWNrKHZhbHVlLCBudWxsLCBlKX1cbiAgICAgICAgICAgICAgICAgICAgb25Nb3VzZUVudGVyPXtlID0+IHRoaXMuX29uTW91c2VPdmVyKHZhbHVlLCBlKX1cbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPHRoaXMucHJvcHMuY3VzdG9tTGlzdEl0ZW1Db21wb25lbnQgdmFsdWU9e3ZhbHVlfSBkaXNwbGF5T3B0aW9uPXtkaXNwbGF5fSAvPlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgKSA6IG51bGx9XG5cbiAgICAgICAgICAgIHt0aGlzLnByb3BzLm9wdGlvbnMubWFwKCh2YWx1ZSwgaSkgPT4gKFxuICAgICAgICAgICAgICA8SXRlbVxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xhc3NOYW1lcyhjbGFzc0xpc3QubGlzdEl0ZW0sIHtcbiAgICAgICAgICAgICAgICAgIGFjdGl2ZTogdGhpcy5wcm9wcy5zZWxlY3Rpb25JbmRleCA9PT0gaSArIHZhbHVlT2Zmc2V0LFxuICAgICAgICAgICAgICAgICAgaG92ZXI6IHZhbHVlLmlkICYmICh0aGlzLnN0YXRlLmN1cnJlbnRPcHRpb24/LmlkID09PSB2YWx1ZS5pZClcbiAgICAgICAgICAgICAgICB9KX1cbiAgICAgICAgICAgICAgICBrZXk9e2Ake2Rpc3BsYXkodmFsdWUpfV8ke2l9YH1cbiAgICAgICAgICAgICAgICBvbk1vdXNlRG93bj17ZSA9PiAhdGhpcy5oYXNTdWJPcHRpb25zICYmIHRoaXMuX29uQ2xpY2sodmFsdWUsIG51bGwsIGUpfVxuICAgICAgICAgICAgICAgIG9uQ2xpY2s9e2UgPT4gIXRoaXMuaGFzU3ViT3B0aW9ucyAmJiB0aGlzLl9vbkNsaWNrKHZhbHVlLCBudWxsLCBlKX1cbiAgICAgICAgICAgICAgICBvbk1vdXNlRW50ZXI9e2UgPT4gdGhpcy5fb25Nb3VzZU92ZXIodmFsdWUsIGUpfVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPHRoaXMucHJvcHMuY3VzdG9tTGlzdEl0ZW1Db21wb25lbnQgdmFsdWU9e3ZhbHVlfSBkaXNwbGF5T3B0aW9uPXtkaXNwbGF5fSAvPlxuICAgICAgICAgICAgICAgIHt0aGlzLnByb3BzLndpdGhTdWJPcHRpb25zICYmIHZhbHVlLmFnZ3JlZ2F0b3JzICYmIDxDaGV2cm9uUmlnaHQgLz59XG4gICAgICAgICAgICAgIDwvSXRlbT5cbiAgICAgICAgICAgICkpfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L0Ryb3Bkb3duTGlzdFdyYXBwZXI+XG4gICAgICAgIHt0aGlzLnByb3BzLndpdGhTdWJPcHRpb25zICYmXG4gICAgICAgICAgdGhpcy5zdGF0ZS5jdXJyZW50T3B0aW9uICYmXG4gICAgICAgICAgdGhpcy5zdGF0ZS5jdXJyZW50T3B0aW9uLmFnZ3JlZ2F0b3JzICYmIChcbiAgICAgICAgICAgIDxJdGVtU2VsZWN0b3JTdWJtZW51XG4gICAgICAgICAgICAgIHBvc2l0aW9uPXt0aGlzLnN0YXRlLnN1Ym1lbnVQb3NpdGlvbn1cbiAgICAgICAgICAgICAgb3B0aW9ucz17dGhpcy5zdGF0ZS5jdXJyZW50T3B0aW9uLmFnZ3JlZ2F0b3JzLm1hcChhID0+XG4gICAgICAgICAgICAgICAgRklFTERfQUdHUkVHQVRPUlMuZmluZChhbSA9PiBhbS5pZCA9PT0gYSlcbiAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgb25DbGljaz17KGFnZ3JlZ2F0b3IsIGUpID0+IHRoaXMuX29uQ2xpY2sodGhpcy5zdGF0ZS5jdXJyZW50T3B0aW9uLCBhZ2dyZWdhdG9yLCBlKX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgKX1cbiAgICAgIDwvRHJvcGRvd25MaXN0Q29udGFpbmVyPlxuICAgICk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
5
|
+
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard");
|
|
6
|
+
|
|
7
|
+
Object.defineProperty(exports, "__esModule", {
|
|
8
|
+
value: true
|
|
9
|
+
});
|
|
10
|
+
exports["default"] = void 0;
|
|
11
|
+
|
|
12
|
+
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
13
|
+
|
|
14
|
+
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
15
|
+
|
|
16
|
+
var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
|
|
17
|
+
|
|
18
|
+
var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
|
|
19
|
+
|
|
20
|
+
var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
|
|
21
|
+
|
|
22
|
+
var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
|
|
23
|
+
|
|
24
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
25
|
+
|
|
26
|
+
var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
|
|
27
|
+
|
|
28
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
29
|
+
|
|
30
|
+
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
31
|
+
|
|
32
|
+
var _styledComponents = _interopRequireDefault(require("styled-components"));
|
|
33
|
+
|
|
34
|
+
var _templateObject;
|
|
35
|
+
|
|
36
|
+
function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2["default"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2["default"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2["default"])(this, result); }; }
|
|
37
|
+
|
|
38
|
+
function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
|
|
39
|
+
|
|
40
|
+
var ItemSelectorSubmenuStyled = _styledComponents["default"].div(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n padding: 5px 0;\n position: fixed;\n min-width: 100px;\n top: ", "px;\n left: ", "px;\n z-index: 999;\n font-weight: 500;\n transform: translateY(", "px);\n ", ";\n background-color: ", ";\n"])), function (props) {
|
|
41
|
+
return props.position.top;
|
|
42
|
+
}, function (props) {
|
|
43
|
+
return props.position.left;
|
|
44
|
+
}, function (props) {
|
|
45
|
+
return props.verticalTranslation;
|
|
46
|
+
}, function (props) {
|
|
47
|
+
return props.light ? props.theme.dropdownListLT : props.theme.dropdownList;
|
|
48
|
+
}, function (props) {
|
|
49
|
+
return props.light ? props.theme.dropdownListBgdLT : props.theme.dropdownListBgd;
|
|
50
|
+
});
|
|
51
|
+
|
|
52
|
+
var ItemSelectorSubmenu = /*#__PURE__*/function (_Component) {
|
|
53
|
+
(0, _inherits2["default"])(ItemSelectorSubmenu, _Component);
|
|
54
|
+
|
|
55
|
+
var _super = _createSuper(ItemSelectorSubmenu);
|
|
56
|
+
|
|
57
|
+
function ItemSelectorSubmenu() {
|
|
58
|
+
var _this;
|
|
59
|
+
|
|
60
|
+
(0, _classCallCheck2["default"])(this, ItemSelectorSubmenu);
|
|
61
|
+
|
|
62
|
+
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
63
|
+
args[_key] = arguments[_key];
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
_this = _super.call.apply(_super, [this].concat(args));
|
|
67
|
+
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "state", {
|
|
68
|
+
verticalTranslation: 0
|
|
69
|
+
});
|
|
70
|
+
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "container", /*#__PURE__*/(0, _react.createRef)());
|
|
71
|
+
return _this;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
(0, _createClass2["default"])(ItemSelectorSubmenu, [{
|
|
75
|
+
key: "_adjustPosition",
|
|
76
|
+
value: function _adjustPosition() {
|
|
77
|
+
var _this2 = this;
|
|
78
|
+
|
|
79
|
+
this.setState({
|
|
80
|
+
verticalTranslation: 0
|
|
81
|
+
}, function () {
|
|
82
|
+
var containerOffsetBottom = window.innerHeight - _this2.container.current.getBoundingClientRect().bottom;
|
|
83
|
+
|
|
84
|
+
if (containerOffsetBottom < 0) {
|
|
85
|
+
_this2.setState({
|
|
86
|
+
verticalTranslation: containerOffsetBottom
|
|
87
|
+
});
|
|
88
|
+
}
|
|
89
|
+
});
|
|
90
|
+
}
|
|
91
|
+
}, {
|
|
92
|
+
key: "componentDidMount",
|
|
93
|
+
value: function componentDidMount() {
|
|
94
|
+
this._adjustPosition();
|
|
95
|
+
}
|
|
96
|
+
}, {
|
|
97
|
+
key: "componentDidUpdate",
|
|
98
|
+
value: function componentDidUpdate(prevProps) {
|
|
99
|
+
if (this.props.position.top !== prevProps.position.top) {
|
|
100
|
+
this._adjustPosition();
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
}, {
|
|
104
|
+
key: "render",
|
|
105
|
+
value: function render() {
|
|
106
|
+
var _this3 = this;
|
|
107
|
+
|
|
108
|
+
return /*#__PURE__*/_react["default"].createElement(ItemSelectorSubmenuStyled, {
|
|
109
|
+
position: this.props.position,
|
|
110
|
+
ref: this.container,
|
|
111
|
+
verticalTranslation: this.state.verticalTranslation
|
|
112
|
+
}, this.props.options.map(function (option, i) {
|
|
113
|
+
return /*#__PURE__*/_react["default"].createElement("div", {
|
|
114
|
+
className: "list__item",
|
|
115
|
+
key: i,
|
|
116
|
+
onClick: function onClick(e) {
|
|
117
|
+
return _this3.props.onClick(option, e);
|
|
118
|
+
}
|
|
119
|
+
}, option.displayName);
|
|
120
|
+
}));
|
|
121
|
+
}
|
|
122
|
+
}]);
|
|
123
|
+
return ItemSelectorSubmenu;
|
|
124
|
+
}(_react.Component);
|
|
125
|
+
|
|
126
|
+
(0, _defineProperty2["default"])(ItemSelectorSubmenu, "propTypes", {
|
|
127
|
+
position: _propTypes["default"].object,
|
|
128
|
+
options: _propTypes["default"].array,
|
|
129
|
+
onClick: _propTypes["default"].func
|
|
130
|
+
});
|
|
131
|
+
var _default = ItemSelectorSubmenu;
|
|
132
|
+
exports["default"] = _default;
|
|
133
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL2NvbW1vbi9pdGVtLXNlbGVjdG9yL2l0ZW0tc2VsZWN0b3Itc3VibWVudS5qcyJdLCJuYW1lcyI6WyJJdGVtU2VsZWN0b3JTdWJtZW51U3R5bGVkIiwic3R5bGVkIiwiZGl2IiwicHJvcHMiLCJwb3NpdGlvbiIsInRvcCIsImxlZnQiLCJ2ZXJ0aWNhbFRyYW5zbGF0aW9uIiwibGlnaHQiLCJ0aGVtZSIsImRyb3Bkb3duTGlzdExUIiwiZHJvcGRvd25MaXN0IiwiZHJvcGRvd25MaXN0QmdkTFQiLCJkcm9wZG93bkxpc3RCZ2QiLCJJdGVtU2VsZWN0b3JTdWJtZW51Iiwic2V0U3RhdGUiLCJjb250YWluZXJPZmZzZXRCb3R0b20iLCJ3aW5kb3ciLCJpbm5lckhlaWdodCIsImNvbnRhaW5lciIsImN1cnJlbnQiLCJnZXRCb3VuZGluZ0NsaWVudFJlY3QiLCJib3R0b20iLCJfYWRqdXN0UG9zaXRpb24iLCJwcmV2UHJvcHMiLCJzdGF0ZSIsIm9wdGlvbnMiLCJtYXAiLCJvcHRpb24iLCJpIiwiZSIsIm9uQ2xpY2siLCJkaXNwbGF5TmFtZSIsIkNvbXBvbmVudCIsIlByb3BUeXBlcyIsIm9iamVjdCIsImFycmF5IiwiZnVuYyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBb0JBOztBQUNBOztBQUNBOzs7Ozs7OztBQUVBLElBQU1BLHlCQUF5QixHQUFHQyw2QkFBT0MsR0FBVixrU0FJdEIsVUFBQUMsS0FBSztBQUFBLFNBQUlBLEtBQUssQ0FBQ0MsUUFBTixDQUFlQyxHQUFuQjtBQUFBLENBSmlCLEVBS3JCLFVBQUFGLEtBQUs7QUFBQSxTQUFJQSxLQUFLLENBQUNDLFFBQU4sQ0FBZUUsSUFBbkI7QUFBQSxDQUxnQixFQVFMLFVBQUFILEtBQUs7QUFBQSxTQUFJQSxLQUFLLENBQUNJLG1CQUFWO0FBQUEsQ0FSQSxFQVMzQixVQUFBSixLQUFLO0FBQUEsU0FBS0EsS0FBSyxDQUFDSyxLQUFOLEdBQWNMLEtBQUssQ0FBQ00sS0FBTixDQUFZQyxjQUExQixHQUEyQ1AsS0FBSyxDQUFDTSxLQUFOLENBQVlFLFlBQTVEO0FBQUEsQ0FUc0IsRUFVVCxVQUFBUixLQUFLO0FBQUEsU0FDdkJBLEtBQUssQ0FBQ0ssS0FBTixHQUFjTCxLQUFLLENBQUNNLEtBQU4sQ0FBWUcsaUJBQTFCLEdBQThDVCxLQUFLLENBQUNNLEtBQU4sQ0FBWUksZUFEbkM7QUFBQSxDQVZJLENBQS9COztJQWNNQyxtQjs7Ozs7Ozs7Ozs7Ozs7OzhGQU9JO0FBQ05QLE1BQUFBLG1CQUFtQixFQUFFO0FBRGYsSzsrR0FJSSx1Qjs7Ozs7O1dBRVosMkJBQWtCO0FBQUE7O0FBQ2hCLFdBQUtRLFFBQUwsQ0FBYztBQUFFUixRQUFBQSxtQkFBbUIsRUFBRTtBQUF2QixPQUFkLEVBQTBDLFlBQU07QUFDOUMsWUFBTVMscUJBQXFCLEdBQUdDLE1BQU0sQ0FBQ0MsV0FBUCxHQUFxQixNQUFJLENBQUNDLFNBQUwsQ0FBZUMsT0FBZixDQUF1QkMscUJBQXZCLEdBQStDQyxNQUFsRzs7QUFDQSxZQUFJTixxQkFBcUIsR0FBRyxDQUE1QixFQUErQjtBQUM3QixVQUFBLE1BQUksQ0FBQ0QsUUFBTCxDQUFjO0FBQUVSLFlBQUFBLG1CQUFtQixFQUFFUztBQUF2QixXQUFkO0FBQ0Q7QUFDRixPQUxEO0FBTUQ7OztXQUVELDZCQUFvQjtBQUNsQixXQUFLTyxlQUFMO0FBQ0Q7OztXQUVELDRCQUFtQkMsU0FBbkIsRUFBOEI7QUFDNUIsVUFBSSxLQUFLckIsS0FBTCxDQUFXQyxRQUFYLENBQW9CQyxHQUFwQixLQUE0Qm1CLFNBQVMsQ0FBQ3BCLFFBQVYsQ0FBbUJDLEdBQW5ELEVBQXdEO0FBQ3RELGFBQUtrQixlQUFMO0FBQ0Q7QUFDRjs7O1dBRUQsa0JBQVM7QUFBQTs7QUFDUCwwQkFDRSxnQ0FBQyx5QkFBRDtBQUNFLFFBQUEsUUFBUSxFQUFFLEtBQUtwQixLQUFMLENBQVdDLFFBRHZCO0FBRUUsUUFBQSxHQUFHLEVBQUUsS0FBS2UsU0FGWjtBQUdFLFFBQUEsbUJBQW1CLEVBQUUsS0FBS00sS0FBTCxDQUFXbEI7QUFIbEMsU0FLRyxLQUFLSixLQUFMLENBQVd1QixPQUFYLENBQW1CQyxHQUFuQixDQUF1QixVQUFDQyxNQUFELEVBQVNDLENBQVQ7QUFBQSw0QkFDdEI7QUFBSyxVQUFBLFNBQVMsRUFBQyxZQUFmO0FBQTRCLFVBQUEsR0FBRyxFQUFFQSxDQUFqQztBQUFvQyxVQUFBLE9BQU8sRUFBRSxpQkFBQUMsQ0FBQztBQUFBLG1CQUFJLE1BQUksQ0FBQzNCLEtBQUwsQ0FBVzRCLE9BQVgsQ0FBbUJILE1BQW5CLEVBQTJCRSxDQUEzQixDQUFKO0FBQUE7QUFBOUMsV0FDR0YsTUFBTSxDQUFDSSxXQURWLENBRHNCO0FBQUEsT0FBdkIsQ0FMSCxDQURGO0FBYUQ7OztFQTlDK0JDLGdCOztpQ0FBNUJuQixtQixlQUNlO0FBQ2pCVixFQUFBQSxRQUFRLEVBQUU4QixzQkFBVUMsTUFESDtBQUVqQlQsRUFBQUEsT0FBTyxFQUFFUSxzQkFBVUUsS0FGRjtBQUdqQkwsRUFBQUEsT0FBTyxFQUFFRyxzQkFBVUc7QUFIRixDO2VBZ0ROdkIsbUIiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgKGMpIDIwMjIgVWJlciBUZWNobm9sb2dpZXMsIEluYy5cbi8vXG4vLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5XG4vLyBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSBcIlNvZnR3YXJlXCIpLCB0byBkZWFsXG4vLyBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzXG4vLyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsXG4vLyBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXNcbi8vIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4vL1xuLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW5cbi8vIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuLy9cbi8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1Jcbi8vIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLFxuLy8gRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFXG4vLyBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSXG4vLyBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLFxuLy8gT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTlxuLy8gVEhFIFNPRlRXQVJFLlxuXG5pbXBvcnQgUmVhY3QsIHtDb21wb25lbnQsIGNyZWF0ZVJlZn0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJztcbmltcG9ydCBzdHlsZWQgZnJvbSAnc3R5bGVkLWNvbXBvbmVudHMnO1xuXG5jb25zdCBJdGVtU2VsZWN0b3JTdWJtZW51U3R5bGVkID0gc3R5bGVkLmRpdmBcbiAgcGFkZGluZzogNXB4IDA7XG4gIHBvc2l0aW9uOiBmaXhlZDtcbiAgbWluLXdpZHRoOiAxMDBweDtcbiAgdG9wOiAke3Byb3BzID0+IHByb3BzLnBvc2l0aW9uLnRvcH1weDtcbiAgbGVmdDogJHtwcm9wcyA9PiBwcm9wcy5wb3NpdGlvbi5sZWZ0fXB4O1xuICB6LWluZGV4OiA5OTk7XG4gIGZvbnQtd2VpZ2h0OiA1MDA7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgke3Byb3BzID0+IHByb3BzLnZlcnRpY2FsVHJhbnNsYXRpb259cHgpO1xuICAke3Byb3BzID0+IChwcm9wcy5saWdodCA/IHByb3BzLnRoZW1lLmRyb3Bkb3duTGlzdExUIDogcHJvcHMudGhlbWUuZHJvcGRvd25MaXN0KX07XG4gIGJhY2tncm91bmQtY29sb3I6ICR7cHJvcHMgPT5cbiAgICBwcm9wcy5saWdodCA/IHByb3BzLnRoZW1lLmRyb3Bkb3duTGlzdEJnZExUIDogcHJvcHMudGhlbWUuZHJvcGRvd25MaXN0QmdkfTtcbmBcblxuY2xhc3MgSXRlbVNlbGVjdG9yU3VibWVudSBleHRlbmRzIENvbXBvbmVudCB7XG4gIHN0YXRpYyBwcm9wVHlwZXMgPSB7XG4gICAgcG9zaXRpb246IFByb3BUeXBlcy5vYmplY3QsXG4gICAgb3B0aW9uczogUHJvcFR5cGVzLmFycmF5LFxuICAgIG9uQ2xpY2s6IFByb3BUeXBlcy5mdW5jXG4gIH1cblxuICBzdGF0ZSA9IHtcbiAgICB2ZXJ0aWNhbFRyYW5zbGF0aW9uOiAwXG4gIH1cblxuICBjb250YWluZXIgPSBjcmVhdGVSZWYoKVxuXG4gIF9hZGp1c3RQb3NpdGlvbigpIHtcbiAgICB0aGlzLnNldFN0YXRlKHsgdmVydGljYWxUcmFuc2xhdGlvbjogMCB9LCAoKSA9PiB7XG4gICAgICBjb25zdCBjb250YWluZXJPZmZzZXRCb3R0b20gPSB3aW5kb3cuaW5uZXJIZWlnaHQgLSB0aGlzLmNvbnRhaW5lci5jdXJyZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmJvdHRvbTtcbiAgICAgIGlmIChjb250YWluZXJPZmZzZXRCb3R0b20gPCAwKSB7XG4gICAgICAgIHRoaXMuc2V0U3RhdGUoeyB2ZXJ0aWNhbFRyYW5zbGF0aW9uOiBjb250YWluZXJPZmZzZXRCb3R0b20gfSlcbiAgICAgIH1cbiAgICB9KVxuICB9XG5cbiAgY29tcG9uZW50RGlkTW91bnQoKSB7XG4gICAgdGhpcy5fYWRqdXN0UG9zaXRpb24oKVxuICB9XG5cbiAgY29tcG9uZW50RGlkVXBkYXRlKHByZXZQcm9wcykge1xuICAgIGlmICh0aGlzLnByb3BzLnBvc2l0aW9uLnRvcCAhPT0gcHJldlByb3BzLnBvc2l0aW9uLnRvcCkge1xuICAgICAgdGhpcy5fYWRqdXN0UG9zaXRpb24oKVxuICAgIH1cbiAgfVxuXG4gIHJlbmRlcigpIHtcbiAgICByZXR1cm4gKFxuICAgICAgPEl0ZW1TZWxlY3RvclN1Ym1lbnVTdHlsZWRcbiAgICAgICAgcG9zaXRpb249e3RoaXMucHJvcHMucG9zaXRpb259XG4gICAgICAgIHJlZj17dGhpcy5jb250YWluZXJ9XG4gICAgICAgIHZlcnRpY2FsVHJhbnNsYXRpb249e3RoaXMuc3RhdGUudmVydGljYWxUcmFuc2xhdGlvbn1cbiAgICAgID5cbiAgICAgICAge3RoaXMucHJvcHMub3B0aW9ucy5tYXAoKG9wdGlvbiwgaSkgPT4gKFxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibGlzdF9faXRlbVwiIGtleT17aX0gb25DbGljaz17ZSA9PiB0aGlzLnByb3BzLm9uQ2xpY2sob3B0aW9uLCBlKX0+XG4gICAgICAgICAgICB7b3B0aW9uLmRpc3BsYXlOYW1lfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICApKX1cbiAgICAgIDwvSXRlbVNlbGVjdG9yU3VibWVudVN0eWxlZD5cbiAgICApXG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgSXRlbVNlbGVjdG9yU3VibWVudTtcbiJdfQ==
|