@kepler.gl/components 3.3.0-alpha.7 → 3.3.0-alpha.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/common/data-table/grid.js +2 -2
- package/dist/cjs/common/data-table/index.js +3 -3
- package/dist/cjs/common/file-uploader/file-upload.js +251 -40
- package/dist/cjs/common/icons/circle.js +54 -0
- package/dist/cjs/common/icons/index.js +8 -1
- package/dist/cjs/common/item-selector/item-selector.js +2 -2
- package/dist/cjs/common/portaled.js +3 -3
- package/dist/cjs/common/time-range-slider.js +2 -2
- package/dist/cjs/common/timeline-slider.js +2 -2
- package/dist/cjs/editor/editor.js +2 -2
- package/dist/cjs/effects/effect-configurator.js +2 -2
- package/dist/cjs/effects/effect-manager.js +32 -17
- package/dist/cjs/effects/effect-time-configurator.js +110 -42
- package/dist/cjs/filters/filter-panels/polygon-filter-panel.js +2 -2
- package/dist/cjs/filters/time-widget.js +2 -2
- package/dist/cjs/kepler-gl.js +6 -2
- package/dist/cjs/map/layer-hover-info.js +2 -2
- package/dist/cjs/map/map-control.js +2 -2
- package/dist/cjs/map/map-draw-panel.js +10 -1
- package/dist/cjs/map-container.js +2 -2
- package/dist/cjs/map-view-state-context.js +3 -3
- package/dist/cjs/modal-container.js +2 -2
- package/dist/cjs/modals/cloud-components/cloud-storage-disclaimer.js +24 -0
- package/dist/cjs/modals/cloud-tile.js +39 -10
- package/dist/cjs/modals/export-map-modal/components.js +16 -7
- package/dist/cjs/modals/export-map-modal/export-html-map.js +5 -9
- package/dist/cjs/modals/export-map-modal/export-json-map.js +4 -8
- package/dist/cjs/modals/export-map-modal/export-map-modal.js +21 -16
- package/dist/cjs/modals/image-modal-container.js +2 -2
- package/dist/cjs/modals/load-data-modal.js +3 -3
- package/dist/cjs/modals/load-storage-map.js +9 -6
- package/dist/cjs/modals/save-map-modal.js +4 -3
- package/dist/cjs/modals/share-map-modal.js +5 -4
- package/dist/cjs/modals/swipe-export-video-preview.js +2 -2
- package/dist/cjs/notification-panel/notification-item.js +58 -12
- package/dist/cjs/plot-container.js +12 -5
- package/dist/cjs/remote-dataset-refresh-controller.js +50 -0
- package/dist/cjs/side-panel/common/dataset-info.js +187 -8
- package/dist/cjs/side-panel/common/dataset-refresh-progress.js +63 -0
- package/dist/cjs/side-panel/common/dataset-title.js +76 -13
- package/dist/cjs/side-panel/common/source-data-catalog.js +31 -6
- package/dist/cjs/side-panel/filter-manager.js +7 -3
- package/dist/cjs/side-panel/filter-panel/filter-panel.js +2 -2
- package/dist/cjs/side-panel/layer-manager.js +14 -4
- package/dist/cjs/side-panel/layer-panel/custom-palette.js +2 -2
- package/dist/cjs/side-panel/layer-panel/dataset-layer-section.js +14 -4
- package/dist/cjs/side-panel/layer-panel/dataset-section.js +7 -3
- package/dist/cjs/side-panel/layer-panel/layer-configurator.js +49 -35
- package/dist/cjs/side-panel/layer-panel/vector-tile-layer-configurator.js +4 -3
- package/dist/common/icons/circle.d.ts +10 -0
- package/dist/common/icons/index.d.ts +1 -0
- package/dist/effects/effect-manager.d.ts +1 -1
- package/dist/esm/common/data-table/grid.js +2 -2
- package/dist/esm/common/data-table/index.js +3 -3
- package/dist/esm/common/file-uploader/file-upload.js +252 -41
- package/dist/esm/common/icons/circle.js +48 -0
- package/dist/esm/common/icons/index.js +2 -1
- package/dist/esm/common/item-selector/item-selector.js +2 -2
- package/dist/esm/common/portaled.js +3 -3
- package/dist/esm/common/time-range-slider.js +2 -2
- package/dist/esm/common/timeline-slider.js +2 -2
- package/dist/esm/editor/editor.js +2 -2
- package/dist/esm/effects/effect-configurator.js +2 -2
- package/dist/esm/effects/effect-manager.js +34 -19
- package/dist/esm/effects/effect-time-configurator.js +111 -43
- package/dist/esm/filters/filter-panels/polygon-filter-panel.js +2 -2
- package/dist/esm/filters/time-widget.js +2 -2
- package/dist/esm/kepler-gl.js +6 -2
- package/dist/esm/map/layer-hover-info.js +2 -2
- package/dist/esm/map/map-control.js +2 -2
- package/dist/esm/map/map-draw-panel.js +11 -2
- package/dist/esm/map-container.js +2 -2
- package/dist/esm/map-view-state-context.js +3 -3
- package/dist/esm/modal-container.js +2 -2
- package/dist/esm/modals/cloud-components/cloud-storage-disclaimer.js +19 -0
- package/dist/esm/modals/cloud-tile.js +39 -10
- package/dist/esm/modals/export-map-modal/components.js +16 -7
- package/dist/esm/modals/export-map-modal/export-html-map.js +6 -10
- package/dist/esm/modals/export-map-modal/export-json-map.js +5 -9
- package/dist/esm/modals/export-map-modal/export-map-modal.js +21 -14
- package/dist/esm/modals/image-modal-container.js +2 -2
- package/dist/esm/modals/load-data-modal.js +3 -3
- package/dist/esm/modals/load-storage-map.js +8 -3
- package/dist/esm/modals/save-map-modal.js +4 -3
- package/dist/esm/modals/share-map-modal.js +5 -4
- package/dist/esm/modals/swipe-export-video-preview.js +2 -2
- package/dist/esm/notification-panel/notification-item.js +60 -14
- package/dist/esm/plot-container.js +12 -5
- package/dist/esm/remote-dataset-refresh-controller.js +44 -0
- package/dist/esm/side-panel/common/dataset-info.js +186 -9
- package/dist/esm/side-panel/common/dataset-refresh-progress.js +56 -0
- package/dist/esm/side-panel/common/dataset-title.js +77 -14
- package/dist/esm/side-panel/common/source-data-catalog.js +29 -6
- package/dist/esm/side-panel/filter-manager.js +7 -3
- package/dist/esm/side-panel/filter-panel/filter-panel.js +2 -2
- package/dist/esm/side-panel/layer-manager.js +14 -4
- package/dist/esm/side-panel/layer-panel/custom-palette.js +2 -2
- package/dist/esm/side-panel/layer-panel/dataset-layer-section.js +14 -4
- package/dist/esm/side-panel/layer-panel/dataset-section.js +7 -3
- package/dist/esm/side-panel/layer-panel/layer-configurator.js +49 -35
- package/dist/esm/side-panel/layer-panel/vector-tile-layer-configurator.js +4 -3
- package/dist/kepler-gl.d.ts +1 -0
- package/dist/modals/cloud-components/cloud-storage-disclaimer.d.ts +2 -0
- package/dist/modals/export-map-modal/components.d.ts +14 -0
- package/dist/remote-dataset-refresh-controller.d.ts +11 -0
- package/dist/side-panel/common/dataset-info.d.ts +10 -0
- package/dist/side-panel/common/dataset-refresh-progress.d.ts +11 -0
- package/dist/side-panel/common/dataset-title.d.ts +5 -0
- package/dist/side-panel/common/source-data-catalog.d.ts +3 -0
- package/dist/side-panel/layer-panel/dataset-section.d.ts +2 -0
- package/package.json +17 -18
|
@@ -10,11 +10,12 @@ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/sli
|
|
|
10
10
|
var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
|
|
11
11
|
var _react = _interopRequireWildcard(require("react"));
|
|
12
12
|
var _styledComponents = _interopRequireDefault(require("styled-components"));
|
|
13
|
+
var _copyToClipboard = _interopRequireDefault(require("copy-to-clipboard"));
|
|
13
14
|
var _icons = require("../common/icons");
|
|
14
15
|
var _markdownToJsx = _interopRequireDefault(require("markdown-to-jsx"));
|
|
15
16
|
var _constants = require("@kepler.gl/constants");
|
|
16
17
|
var _linkRenderer = _interopRequireDefault(require("../common/link-renderer"));
|
|
17
|
-
var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6; // SPDX-License-Identifier: MIT
|
|
18
|
+
var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7, _templateObject8, _templateObject9, _templateObject0; // SPDX-License-Identifier: MIT
|
|
18
19
|
// Copyright contributors to the kepler.gl project
|
|
19
20
|
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, "default": e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
|
|
20
21
|
var NotificationItemContentBlock = _styledComponents["default"].div.attrs({
|
|
@@ -22,7 +23,7 @@ var NotificationItemContentBlock = _styledComponents["default"].div.attrs({
|
|
|
22
23
|
})(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n display: block;\n position: relative;\n width: ", "px;\n margin-left: auto;\n"])), function (props) {
|
|
23
24
|
return props.theme.notificationPanelItemWidth * (1 + Number(props.isExpanded));
|
|
24
25
|
});
|
|
25
|
-
var NotificationItemContent = _styledComponents["default"].div(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2["default"])(["\n background-color: ", ";\n color: #fff;\n display: flex;\n flex-direction: row;\n width: ", "px;\n height: ", "px;\n font-size: 11px;\n margin-bottom: 1rem;\n padding: 1em;\n border-radius: 4px;\n box-shadow: ", ";\n cursor: pointer;\n"])), function (props) {
|
|
26
|
+
var NotificationItemContent = _styledComponents["default"].div(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2["default"])(["\n background-color: ", ";\n color: #fff;\n display: flex;\n flex-direction: row;\n width: ", "px;\n height: ", "px;\n font-size: 11px;\n margin-bottom: 1rem;\n padding: 1em;\n border-radius: 4px;\n box-shadow: ", ";\n cursor: pointer;\n\n &:hover .notification-item--copy {\n opacity: 1;\n pointer-events: auto;\n }\n"])), function (props) {
|
|
26
27
|
return props.theme.notificationColors[props.type] || '#000';
|
|
27
28
|
}, function (props) {
|
|
28
29
|
return props.theme.notificationPanelItemWidth * (1 + Number(props.isExpanded));
|
|
@@ -31,10 +32,22 @@ var NotificationItemContent = _styledComponents["default"].div(_templateObject2
|
|
|
31
32
|
}, function (props) {
|
|
32
33
|
return props.theme.boxShadow;
|
|
33
34
|
});
|
|
34
|
-
var
|
|
35
|
+
var NotificationActions = _styledComponents["default"].div.attrs({
|
|
36
|
+
className: 'notification-item--action'
|
|
37
|
+
})(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n flex-direction: row;\n align-items: flex-start;\n flex-shrink: 0;\n position: relative;\n"])));
|
|
38
|
+
var ActionIconButton = _styledComponents["default"].div.attrs({
|
|
39
|
+
className: 'notification-item--copy'
|
|
40
|
+
})(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n cursor: pointer;\n line-height: 0;\n position: absolute;\n right: calc(100% + 6px);\n top: 0;\n z-index: 1;\n opacity: ", ";\n pointer-events: ", ";\n"])), function (props) {
|
|
41
|
+
return props.$copied ? 1 : 0;
|
|
42
|
+
}, function (props) {
|
|
43
|
+
return props.$copied ? 'auto' : 'none';
|
|
44
|
+
});
|
|
45
|
+
var DeleteIcon = (0, _styledComponents["default"])(_icons.Delete)(_templateObject5 || (_templateObject5 = (0, _taggedTemplateLiteral2["default"])(["\n cursor: pointer;\n width: 13px;\n height: 13px;\n"])));
|
|
46
|
+
var CopyIcon = (0, _styledComponents["default"])(_icons.Copy)(_templateObject6 || (_templateObject6 = (0, _taggedTemplateLiteral2["default"])(["\n cursor: pointer;\n width: 13px;\n height: 13px;\n"])));
|
|
47
|
+
var CopiedIcon = (0, _styledComponents["default"])(_icons.Checkmark)(_templateObject7 || (_templateObject7 = (0, _taggedTemplateLiteral2["default"])(["\n cursor: pointer;\n width: 13px;\n height: 13px;\n"])));
|
|
35
48
|
var NotificationCounter = _styledComponents["default"].div.attrs({
|
|
36
49
|
className: 'notification-item--counter'
|
|
37
|
-
})(
|
|
50
|
+
})(_templateObject8 || (_templateObject8 = (0, _taggedTemplateLiteral2["default"])(["\n position: absolute;\n font-size: 11px;\n font-weight: bold;\n text-align: center;\n left: -4px;\n bottom: -4px;\n border-radius: 50%;\n width: 20px;\n height: 20px;\n background-color: #ffffff;\n border: 1px solid ", ";\n color: ", ";\n box-shadow: ", ";\n"])), function (props) {
|
|
38
51
|
return props.theme.notificationColors[props.type] || '#000';
|
|
39
52
|
}, function (props) {
|
|
40
53
|
return props.theme.notificationColors[props.type] || '#000';
|
|
@@ -43,14 +56,14 @@ var NotificationCounter = _styledComponents["default"].div.attrs({
|
|
|
43
56
|
});
|
|
44
57
|
var NotificationMessage = _styledComponents["default"].div.attrs({
|
|
45
58
|
className: 'notification-item--message'
|
|
46
|
-
})(
|
|
59
|
+
})(_templateObject9 || (_templateObject9 = (0, _taggedTemplateLiteral2["default"])(["\n flex-grow: 2;\n width: ", "px;\n margin: 0 1em;\n overflow: ", ";\n padding-right: ", ";\n\n p {\n margin-top: 0;\n a {\n color: #fff;\n text-decoration: underline;\n }\n }\n"])), function (props) {
|
|
47
60
|
return props.theme.notificationPanelItemWidth;
|
|
48
61
|
}, function (props) {
|
|
49
62
|
return props.isExpanded ? 'auto' : 'hidden';
|
|
50
63
|
}, function (props) {
|
|
51
64
|
return props.isExpanded ? '1em' : 0;
|
|
52
65
|
});
|
|
53
|
-
var NotificationIcon = _styledComponents["default"].div(
|
|
66
|
+
var NotificationIcon = _styledComponents["default"].div(_templateObject0 || (_templateObject0 = (0, _taggedTemplateLiteral2["default"])(["\n svg {\n vertical-align: text-top;\n }\n"])));
|
|
54
67
|
var icons = {
|
|
55
68
|
info: /*#__PURE__*/_react["default"].createElement(_icons.Info, {
|
|
56
69
|
"data-testid": _constants.dataTestIds.infoIcon
|
|
@@ -75,11 +88,33 @@ function NotificationItemFactory() {
|
|
|
75
88
|
_useState2 = (0, _slicedToArray2["default"])(_useState, 2),
|
|
76
89
|
isExpanded = _useState2[0],
|
|
77
90
|
setIsExpanded = _useState2[1];
|
|
91
|
+
var _useState3 = (0, _react.useState)(false),
|
|
92
|
+
_useState4 = (0, _slicedToArray2["default"])(_useState3, 2),
|
|
93
|
+
copied = _useState4[0],
|
|
94
|
+
setCopied = _useState4[1];
|
|
78
95
|
(0, _react.useEffect)(function () {
|
|
79
96
|
if (initialIsExpanded) {
|
|
80
97
|
setIsExpanded(true);
|
|
81
98
|
}
|
|
82
99
|
}, [initialIsExpanded]);
|
|
100
|
+
(0, _react.useEffect)(function () {
|
|
101
|
+
if (!copied) {
|
|
102
|
+
return;
|
|
103
|
+
}
|
|
104
|
+
var timeoutId = window.setTimeout(function () {
|
|
105
|
+
return setCopied(false);
|
|
106
|
+
}, 1500);
|
|
107
|
+
return function () {
|
|
108
|
+
return window.clearTimeout(timeoutId);
|
|
109
|
+
};
|
|
110
|
+
}, [copied]);
|
|
111
|
+
var onCopy = (0, _react.useCallback)(function (event) {
|
|
112
|
+
event.stopPropagation();
|
|
113
|
+
if (notification.message) {
|
|
114
|
+
(0, _copyToClipboard["default"])(notification.message);
|
|
115
|
+
setCopied(true);
|
|
116
|
+
}
|
|
117
|
+
}, [notification.message]);
|
|
83
118
|
return /*#__PURE__*/_react["default"].createElement(NotificationItemContentBlock, {
|
|
84
119
|
isExpanded: isExpanded,
|
|
85
120
|
theme: theme
|
|
@@ -87,7 +122,7 @@ function NotificationItemFactory() {
|
|
|
87
122
|
type: notification.type,
|
|
88
123
|
theme: theme
|
|
89
124
|
}, notification.count) : null, /*#__PURE__*/_react["default"].createElement(NotificationItemContent, {
|
|
90
|
-
className: "notification-item",
|
|
125
|
+
className: "notification-item".concat(isExpanded ? ' notification-item--expanded' : ''),
|
|
91
126
|
type: notification.type,
|
|
92
127
|
isExpanded: isExpanded,
|
|
93
128
|
onClick: function onClick() {
|
|
@@ -106,14 +141,25 @@ function NotificationItemFactory() {
|
|
|
106
141
|
}
|
|
107
142
|
}
|
|
108
143
|
}
|
|
109
|
-
}, notification.message)),
|
|
110
|
-
|
|
111
|
-
|
|
144
|
+
}, notification.message)), /*#__PURE__*/_react["default"].createElement(NotificationActions, {
|
|
145
|
+
onClick: function onClick(event) {
|
|
146
|
+
return event.stopPropagation();
|
|
147
|
+
}
|
|
148
|
+
}, /*#__PURE__*/_react["default"].createElement(ActionIconButton, {
|
|
149
|
+
$copied: copied,
|
|
150
|
+
"data-testid": _constants.dataTestIds.copyNotificationIcon,
|
|
151
|
+
title: copied ? 'Copied' : 'Copy to clipboard',
|
|
152
|
+
onClick: onCopy
|
|
153
|
+
}, copied ? /*#__PURE__*/_react["default"].createElement(CopiedIcon, {
|
|
154
|
+
height: "10px"
|
|
155
|
+
}) : /*#__PURE__*/_react["default"].createElement(CopyIcon, {
|
|
156
|
+
height: "10px"
|
|
157
|
+
})), typeof removeNotification === 'function' ? /*#__PURE__*/_react["default"].createElement(DeleteIcon, {
|
|
112
158
|
height: "10px",
|
|
113
159
|
onClick: function onClick() {
|
|
114
160
|
return removeNotification(notification.id);
|
|
115
161
|
}
|
|
116
|
-
})
|
|
162
|
+
}) : null)));
|
|
117
163
|
};
|
|
118
164
|
}
|
|
119
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfc3R5bGVkQ29tcG9uZW50cyIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfaWNvbnMiLCJfbWFya2Rvd25Ub0pzeCIsIl9jb25zdGFudHMiLCJfbGlua1JlbmRlcmVyIiwiX3RlbXBsYXRlT2JqZWN0IiwiX3RlbXBsYXRlT2JqZWN0MiIsIl90ZW1wbGF0ZU9iamVjdDMiLCJfdGVtcGxhdGVPYmplY3Q0IiwiX3RlbXBsYXRlT2JqZWN0NSIsIl90ZW1wbGF0ZU9iamVjdDYiLCJlIiwidCIsIldlYWtNYXAiLCJyIiwibiIsIl9fZXNNb2R1bGUiLCJvIiwiaSIsImYiLCJfX3Byb3RvX18iLCJfdHlwZW9mIiwiaGFzIiwiZ2V0Iiwic2V0IiwiX3QiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsIk5vdGlmaWNhdGlvbkl0ZW1Db250ZW50QmxvY2siLCJzdHlsZWQiLCJkaXYiLCJhdHRycyIsImNsYXNzTmFtZSIsIl90YWdnZWRUZW1wbGF0ZUxpdGVyYWwyIiwicHJvcHMiLCJ0aGVtZSIsIm5vdGlmaWNhdGlvblBhbmVsSXRlbVdpZHRoIiwiTnVtYmVyIiwiaXNFeHBhbmRlZCIsIk5vdGlmaWNhdGlvbkl0ZW1Db250ZW50Iiwibm90aWZpY2F0aW9uQ29sb3JzIiwidHlwZSIsIm5vdGlmaWNhdGlvblBhbmVsSXRlbUhlaWdodCIsImJveFNoYWRvdyIsIkRlbGV0ZUljb24iLCJEZWxldGUiLCJOb3RpZmljYXRpb25Db3VudGVyIiwiTm90aWZpY2F0aW9uTWVzc2FnZSIsIk5vdGlmaWNhdGlvbkljb24iLCJpY29ucyIsImluZm8iLCJjcmVhdGVFbGVtZW50IiwiSW5mbyIsImRhdGFUZXN0SWRzIiwiaW5mb0ljb24iLCJ3YXJuaW5nIiwiV2FybmluZyIsIndhcm5pbmdJY29uIiwiZXJyb3IiLCJlcnJvckljb24iLCJzdWNjZXNzIiwiQ2hlY2ttYXJrIiwic3VjY2Vzc0ljb24iLCJOb3RpZmljYXRpb25JdGVtRmFjdG9yeSIsIk5vdGlmaWNhdGlvbkl0ZW0iLCJfcmVmIiwibm90aWZpY2F0aW9uIiwicmVtb3ZlTm90aWZpY2F0aW9uIiwiaW5pdGlhbElzRXhwYW5kZWQiLCJfdXNlU3RhdGUiLCJ1c2VTdGF0ZSIsIl91c2VTdGF0ZTIiLCJfc2xpY2VkVG9BcnJheTIiLCJzZXRJc0V4cGFuZGVkIiwidXNlRWZmZWN0IiwiY291bnQiLCJvbkNsaWNrIiwib3B0aW9ucyIsIm92ZXJyaWRlcyIsImEiLCJjb21wb25lbnQiLCJMaW5rUmVuZGVyZXIiLCJtZXNzYWdlIiwiaGVpZ2h0IiwiaWQiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbm90aWZpY2F0aW9uLXBhbmVsL25vdGlmaWNhdGlvbi1pdGVtLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUXG4vLyBDb3B5cmlnaHQgY29udHJpYnV0b3JzIHRvIHRoZSBrZXBsZXIuZ2wgcHJvamVjdFxuXG5pbXBvcnQgUmVhY3QsIHt1c2VTdGF0ZSwgdXNlRWZmZWN0fSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgc3R5bGVkIGZyb20gJ3N0eWxlZC1jb21wb25lbnRzJztcbmltcG9ydCB7RGVsZXRlLCBJbmZvLCBXYXJuaW5nLCBDaGVja21hcmt9IGZyb20gJy4uL2NvbW1vbi9pY29ucyc7XG5pbXBvcnQgTWFya2Rvd24gZnJvbSAnbWFya2Rvd24tdG8tanN4JztcbmltcG9ydCB7ZGF0YVRlc3RJZHN9IGZyb20gJ0BrZXBsZXIuZ2wvY29uc3RhbnRzJztcbmltcG9ydCB7QWN0aW9uSGFuZGxlciwgcmVtb3ZlTm90aWZpY2F0aW9uIGFzIHJlbW92ZU5vdGlmaWNhdGlvbkFjdGlvbnN9IGZyb20gJ0BrZXBsZXIuZ2wvYWN0aW9ucyc7XG5cbmltcG9ydCBMaW5rUmVuZGVyZXIgZnJvbSAnLi4vY29tbW9uL2xpbmstcmVuZGVyZXInO1xuaW50ZXJmYWNlIE5vdGlmaWNhdGlvbkl0ZW1Db250ZW50QmxvY2tQcm9wcyB7XG4gIGlzRXhwYW5kZWQ/OiBib29sZWFuO1xufVxuXG5jb25zdCBOb3RpZmljYXRpb25JdGVtQ29udGVudEJsb2NrID0gc3R5bGVkLmRpdi5hdHRycyh7XG4gIGNsYXNzTmFtZTogJ25vdGlmaWNhdGlvbi1pdGVtLS1jb250ZW50LWJsb2NrJ1xufSk8Tm90aWZpY2F0aW9uSXRlbUNvbnRlbnRCbG9ja1Byb3BzPmBcbiAgZGlzcGxheTogYmxvY2s7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgd2lkdGg6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUubm90aWZpY2F0aW9uUGFuZWxJdGVtV2lkdGggKiAoMSArIE51bWJlcihwcm9wcy5pc0V4cGFuZGVkKSl9cHg7XG4gIG1hcmdpbi1sZWZ0OiBhdXRvO1xuYDtcblxuaW50ZXJmYWNlIE5vdGlmaWNhdGlvbkl0ZW1Db250ZW50UHJvcHMge1xuICB0eXBlOiBzdHJpbmc7XG4gIGlzRXhwYW5kZWQ/OiBib29sZWFuO1xufVxuXG5jb25zdCBOb3RpZmljYXRpb25JdGVtQ29udGVudCA9IHN0eWxlZC5kaXY8Tm90aWZpY2F0aW9uSXRlbUNvbnRlbnRQcm9wcz5gXG4gIGJhY2tncm91bmQtY29sb3I6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUubm90aWZpY2F0aW9uQ29sb3JzW3Byb3BzLnR5cGVdIHx8ICcjMDAwJ307XG4gIGNvbG9yOiAjZmZmO1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogcm93O1xuICB3aWR0aDogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5ub3RpZmljYXRpb25QYW5lbEl0ZW1XaWR0aCAqICgxICsgTnVtYmVyKHByb3BzLmlzRXhwYW5kZWQpKX1weDtcbiAgaGVpZ2h0OiAke3Byb3BzID0+IHByb3BzLnRoZW1lLm5vdGlmaWNhdGlvblBhbmVsSXRlbUhlaWdodCAqICgxICsgTnVtYmVyKHByb3BzLmlzRXhwYW5kZWQpKX1weDtcbiAgZm9udC1zaXplOiAxMXB4O1xuICBtYXJnaW4tYm90dG9tOiAxcmVtO1xuICBwYWRkaW5nOiAxZW07XG4gIGJvcmRlci1yYWRpdXM6IDRweDtcbiAgYm94LXNoYWRvdzogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5ib3hTaGFkb3d9O1xuICBjdXJzb3I6IHBvaW50ZXI7XG5gO1xuXG5jb25zdCBEZWxldGVJY29uID0gc3R5bGVkKERlbGV0ZSlgXG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgd2lkdGg6IDEzcHg7XG4gIGhlaWdodDogMTNweDtcbmA7XG5cbmludGVyZmFjZSBOb3RpZmljYXRpb25Db3VudGVyUHJvcHMge1xuICB0eXBlOiBzdHJpbmc7XG59XG5cbmNvbnN0IE5vdGlmaWNhdGlvbkNvdW50ZXIgPSBzdHlsZWQuZGl2LmF0dHJzKHtcbiAgY2xhc3NOYW1lOiAnbm90aWZpY2F0aW9uLWl0ZW0tLWNvdW50ZXInXG59KTxOb3RpZmljYXRpb25Db3VudGVyUHJvcHM+YFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIGZvbnQtc2l6ZTogMTFweDtcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgbGVmdDogLTRweDtcbiAgYm90dG9tOiAtNHB4O1xuICBib3JkZXItcmFkaXVzOiA1MCU7XG4gIHdpZHRoOiAyMHB4O1xuICBoZWlnaHQ6IDIwcHg7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmZmZmY7XG4gIGJvcmRlcjogMXB4IHNvbGlkICR7cHJvcHMgPT4gcHJvcHMudGhlbWUubm90aWZpY2F0aW9uQ29sb3JzW3Byb3BzLnR5cGVdIHx8ICcjMDAwJ307XG4gIGNvbG9yOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLm5vdGlmaWNhdGlvbkNvbG9yc1twcm9wcy50eXBlXSB8fCAnIzAwMCd9O1xuICBib3gtc2hhZG93OiAke3Byb3BzID0+IHByb3BzLnRoZW1lLmJveFNoYWRvd307XG5gO1xuXG5pbnRlcmZhY2UgTm90aWZpY2F0aW9uTWVzc2FnZVByb3BzIHtcbiAgaXNFeHBhbmRlZD86IGJvb2xlYW47XG59XG5cbmNvbnN0IE5vdGlmaWNhdGlvbk1lc3NhZ2UgPSBzdHlsZWQuZGl2LmF0dHJzKHtcbiAgY2xhc3NOYW1lOiAnbm90aWZpY2F0aW9uLWl0ZW0tLW1lc3NhZ2UnXG59KTxOb3RpZmljYXRpb25NZXNzYWdlUHJvcHM+YFxuICBmbGV4LWdyb3c6IDI7XG4gIHdpZHRoOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLm5vdGlmaWNhdGlvblBhbmVsSXRlbVdpZHRofXB4O1xuICBtYXJnaW46IDAgMWVtO1xuICBvdmVyZmxvdzogJHtwcm9wcyA9PiAocHJvcHMuaXNFeHBhbmRlZCA/ICdhdXRvJyA6ICdoaWRkZW4nKX07XG4gIHBhZGRpbmctcmlnaHQ6ICR7cHJvcHMgPT4gKHByb3BzLmlzRXhwYW5kZWQgPyAnMWVtJyA6IDApfTtcblxuICBwIHtcbiAgICBtYXJnaW4tdG9wOiAwO1xuICAgIGEge1xuICAgICAgY29sb3I6ICNmZmY7XG4gICAgICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTtcbiAgICB9XG4gIH1cbmA7XG5cbmNvbnN0IE5vdGlmaWNhdGlvbkljb24gPSBzdHlsZWQuZGl2YFxuICBzdmcge1xuICAgIHZlcnRpY2FsLWFsaWduOiB0ZXh0LXRvcDtcbiAgfVxuYDtcblxuY29uc3QgaWNvbnMgPSB7XG4gIGluZm86IDxJbmZvIGRhdGEtdGVzdGlkPXtkYXRhVGVzdElkcy5pbmZvSWNvbn0gLz4sXG4gIHdhcm5pbmc6IDxXYXJuaW5nIGRhdGEtdGVzdGlkPXtkYXRhVGVzdElkcy53YXJuaW5nSWNvbn0gLz4sXG4gIGVycm9yOiA8V2FybmluZyBkYXRhLXRlc3RpZD17ZGF0YVRlc3RJZHMuZXJyb3JJY29ufSAvPixcbiAgc3VjY2VzczogPENoZWNrbWFyayBkYXRhLXRlc3RpZD17ZGF0YVRlc3RJZHMuc3VjY2Vzc0ljb259IC8+XG59O1xuXG5pbnRlcmZhY2UgTm90aWZpY2F0aW9uSXRlbVByb3BzIHtcbiAgbm90aWZpY2F0aW9uOiB7XG4gICAgaWQ6IHN0cmluZztcbiAgICB0eXBlOiBzdHJpbmc7XG4gICAgbWVzc2FnZTogc3RyaW5nO1xuICAgIGNvdW50PzogbnVtYmVyO1xuICB9O1xuICBpc0V4cGFuZGVkPzogYm9vbGVhbjtcbiAgcmVtb3ZlTm90aWZpY2F0aW9uPzogQWN0aW9uSGFuZGxlcjx0eXBlb2YgcmVtb3ZlTm90aWZpY2F0aW9uQWN0aW9ucz47XG4gIHRoZW1lPzogYW55O1xufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBOb3RpZmljYXRpb25JdGVtRmFjdG9yeSgpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIE5vdGlmaWNhdGlvbkl0ZW0oe1xuICAgIG5vdGlmaWNhdGlvbixcbiAgICByZW1vdmVOb3RpZmljYXRpb24sXG4gICAgaXNFeHBhbmRlZDogaW5pdGlhbElzRXhwYW5kZWQsXG4gICAgdGhlbWVcbiAgfTogTm90aWZpY2F0aW9uSXRlbVByb3BzKSB7XG4gICAgY29uc3QgW2lzRXhwYW5kZWQsIHNldElzRXhwYW5kZWRdID0gdXNlU3RhdGUoZmFsc2UpO1xuXG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgIGlmIChpbml0aWFsSXNFeHBhbmRlZCkge1xuICAgICAgICBzZXRJc0V4cGFuZGVkKHRydWUpO1xuICAgICAgfVxuICAgIH0sIFtpbml0aWFsSXNFeHBhbmRlZF0pO1xuXG4gICAgcmV0dXJuIChcbiAgICAgIDxOb3RpZmljYXRpb25JdGVtQ29udGVudEJsb2NrIGlzRXhwYW5kZWQ9e2lzRXhwYW5kZWR9IHRoZW1lPXt0aGVtZX0+XG4gICAgICAgIHsobm90aWZpY2F0aW9uLmNvdW50IHx8IDApID4gMSA/IChcbiAgICAgICAgICA8Tm90aWZpY2F0aW9uQ291bnRlciB0eXBlPXtub3RpZmljYXRpb24udHlwZX0gdGhlbWU9e3RoZW1lfT5cbiAgICAgICAgICAgIHtub3RpZmljYXRpb24uY291bnR9XG4gICAgICAgICAgPC9Ob3RpZmljYXRpb25Db3VudGVyPlxuICAgICAgICApIDogbnVsbH1cbiAgICAgICAgPE5vdGlmaWNhdGlvbkl0ZW1Db250ZW50XG4gICAgICAgICAgY2xhc3NOYW1lPVwibm90aWZpY2F0aW9uLWl0ZW1cIlxuICAgICAgICAgIHR5cGU9e25vdGlmaWNhdGlvbi50eXBlfVxuICAgICAgICAgIGlzRXhwYW5kZWQ9e2lzRXhwYW5kZWR9XG4gICAgICAgICAgb25DbGljaz17KCkgPT4gc2V0SXNFeHBhbmRlZCghaXNFeHBhbmRlZCl9XG4gICAgICAgID5cbiAgICAgICAgICA8Tm90aWZpY2F0aW9uSWNvbiBjbGFzc05hbWU9XCJub3RpZmljYXRpb24taXRlbS0taWNvblwiPlxuICAgICAgICAgICAge2ljb25zW25vdGlmaWNhdGlvbi50eXBlXX1cbiAgICAgICAgICA8L05vdGlmaWNhdGlvbkljb24+XG4gICAgICAgICAgPE5vdGlmaWNhdGlvbk1lc3NhZ2UgaXNFeHBhbmRlZD17aXNFeHBhbmRlZH0gdGhlbWU9e3RoZW1lfT5cbiAgICAgICAgICAgIDxNYXJrZG93blxuICAgICAgICAgICAgICBvcHRpb25zPXt7XG4gICAgICAgICAgICAgICAgb3ZlcnJpZGVzOiB7XG4gICAgICAgICAgICAgICAgICBhOiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudDogTGlua1JlbmRlcmVyXG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7bm90aWZpY2F0aW9uLm1lc3NhZ2V9XG4gICAgICAgICAgICA8L01hcmtkb3duPlxuICAgICAgICAgIDwvTm90aWZpY2F0aW9uTWVzc2FnZT5cbiAgICAgICAgICB7dHlwZW9mIHJlbW92ZU5vdGlmaWNhdGlvbiA9PT0gJ2Z1bmN0aW9uJyA/IChcbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibm90aWZpY2F0aW9uLWl0ZW0tLWFjdGlvblwiPlxuICAgICAgICAgICAgICA8RGVsZXRlSWNvbiBoZWlnaHQ9XCIxMHB4XCIgb25DbGljaz17KCkgPT4gcmVtb3ZlTm90aWZpY2F0aW9uKG5vdGlmaWNhdGlvbi5pZCl9IC8+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgPC9Ob3RpZmljYXRpb25JdGVtQ29udGVudD5cbiAgICAgIDwvTm90aWZpY2F0aW9uSXRlbUNvbnRlbnRCbG9jaz5cbiAgICApO1xuICB9O1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBR0EsSUFBQUEsTUFBQSxHQUFBQyx1QkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsaUJBQUEsR0FBQUMsc0JBQUEsQ0FBQUYsT0FBQTtBQUNBLElBQUFHLE1BQUEsR0FBQUgsT0FBQTtBQUNBLElBQUFJLGNBQUEsR0FBQUYsc0JBQUEsQ0FBQUYsT0FBQTtBQUNBLElBQUFLLFVBQUEsR0FBQUwsT0FBQTtBQUdBLElBQUFNLGFBQUEsR0FBQUosc0JBQUEsQ0FBQUYsT0FBQTtBQUFtRCxJQUFBTyxlQUFBLEVBQUFDLGdCQUFBLEVBQUFDLGdCQUFBLEVBQUFDLGdCQUFBLEVBQUFDLGdCQUFBLEVBQUFDLGdCQUFBLEVBVm5EO0FBQ0E7QUFBQSxTQUFBYix3QkFBQWMsQ0FBQSxFQUFBQyxDQUFBLDZCQUFBQyxPQUFBLE1BQUFDLENBQUEsT0FBQUQsT0FBQSxJQUFBRSxDQUFBLE9BQUFGLE9BQUEsWUFBQWhCLHVCQUFBLFlBQUFBLHdCQUFBYyxDQUFBLEVBQUFDLENBQUEsU0FBQUEsQ0FBQSxJQUFBRCxDQUFBLElBQUFBLENBQUEsQ0FBQUssVUFBQSxTQUFBTCxDQUFBLE1BQUFNLENBQUEsRUFBQUMsQ0FBQSxFQUFBQyxDQUFBLEtBQUFDLFNBQUEsbUJBQUFULENBQUEsaUJBQUFBLENBQUEsZ0JBQUFVLE9BQUEsQ0FBQVYsQ0FBQSwwQkFBQUEsQ0FBQSxTQUFBUSxDQUFBLE1BQUFGLENBQUEsR0FBQUwsQ0FBQSxHQUFBRyxDQUFBLEdBQUFELENBQUEsUUFBQUcsQ0FBQSxDQUFBSyxHQUFBLENBQUFYLENBQUEsVUFBQU0sQ0FBQSxD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
|
|
165
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfc3R5bGVkQ29tcG9uZW50cyIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfY29weVRvQ2xpcGJvYXJkIiwiX2ljb25zIiwiX21hcmtkb3duVG9Kc3giLCJfY29uc3RhbnRzIiwiX2xpbmtSZW5kZXJlciIsIl90ZW1wbGF0ZU9iamVjdCIsIl90ZW1wbGF0ZU9iamVjdDIiLCJfdGVtcGxhdGVPYmplY3QzIiwiX3RlbXBsYXRlT2JqZWN0NCIsIl90ZW1wbGF0ZU9iamVjdDUiLCJfdGVtcGxhdGVPYmplY3Q2IiwiX3RlbXBsYXRlT2JqZWN0NyIsIl90ZW1wbGF0ZU9iamVjdDgiLCJfdGVtcGxhdGVPYmplY3Q5IiwiX3RlbXBsYXRlT2JqZWN0MCIsImUiLCJ0IiwiV2Vha01hcCIsInIiLCJuIiwiX19lc01vZHVsZSIsIm8iLCJpIiwiZiIsIl9fcHJvdG9fXyIsIl90eXBlb2YiLCJoYXMiLCJnZXQiLCJzZXQiLCJfdCIsImhhc093blByb3BlcnR5IiwiY2FsbCIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwiTm90aWZpY2F0aW9uSXRlbUNvbnRlbnRCbG9jayIsInN0eWxlZCIsImRpdiIsImF0dHJzIiwiY2xhc3NOYW1lIiwiX3RhZ2dlZFRlbXBsYXRlTGl0ZXJhbDIiLCJwcm9wcyIsInRoZW1lIiwibm90aWZpY2F0aW9uUGFuZWxJdGVtV2lkdGgiLCJOdW1iZXIiLCJpc0V4cGFuZGVkIiwiTm90aWZpY2F0aW9uSXRlbUNvbnRlbnQiLCJub3RpZmljYXRpb25Db2xvcnMiLCJ0eXBlIiwibm90aWZpY2F0aW9uUGFuZWxJdGVtSGVpZ2h0IiwiYm94U2hhZG93IiwiTm90aWZpY2F0aW9uQWN0aW9ucyIsIkFjdGlvbkljb25CdXR0b24iLCIkY29waWVkIiwiRGVsZXRlSWNvbiIsIkRlbGV0ZSIsIkNvcHlJY29uIiwiQ29weSIsIkNvcGllZEljb24iLCJDaGVja21hcmsiLCJOb3RpZmljYXRpb25Db3VudGVyIiwiTm90aWZpY2F0aW9uTWVzc2FnZSIsIk5vdGlmaWNhdGlvbkljb24iLCJpY29ucyIsImluZm8iLCJjcmVhdGVFbGVtZW50IiwiSW5mbyIsImRhdGFUZXN0SWRzIiwiaW5mb0ljb24iLCJ3YXJuaW5nIiwiV2FybmluZyIsIndhcm5pbmdJY29uIiwiZXJyb3IiLCJlcnJvckljb24iLCJzdWNjZXNzIiwic3VjY2Vzc0ljb24iLCJOb3RpZmljYXRpb25JdGVtRmFjdG9yeSIsIk5vdGlmaWNhdGlvbkl0ZW0iLCJfcmVmIiwibm90aWZpY2F0aW9uIiwicmVtb3ZlTm90aWZpY2F0aW9uIiwiaW5pdGlhbElzRXhwYW5kZWQiLCJfdXNlU3RhdGUiLCJ1c2VTdGF0ZSIsIl91c2VTdGF0ZTIiLCJfc2xpY2VkVG9BcnJheTIiLCJzZXRJc0V4cGFuZGVkIiwiX3VzZVN0YXRlMyIsIl91c2VTdGF0ZTQiLCJjb3BpZWQiLCJzZXRDb3BpZWQiLCJ1c2VFZmZlY3QiLCJ0aW1lb3V0SWQiLCJ3aW5kb3ciLCJzZXRUaW1lb3V0IiwiY2xlYXJUaW1lb3V0Iiwib25Db3B5IiwidXNlQ2FsbGJhY2siLCJldmVudCIsInN0b3BQcm9wYWdhdGlvbiIsIm1lc3NhZ2UiLCJjb3B5IiwiY291bnQiLCJjb25jYXQiLCJvbkNsaWNrIiwib3B0aW9ucyIsIm92ZXJyaWRlcyIsImEiLCJjb21wb25lbnQiLCJMaW5rUmVuZGVyZXIiLCJjb3B5Tm90aWZpY2F0aW9uSWNvbiIsInRpdGxlIiwiaGVpZ2h0IiwiaWQiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbm90aWZpY2F0aW9uLXBhbmVsL25vdGlmaWNhdGlvbi1pdGVtLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUXG4vLyBDb3B5cmlnaHQgY29udHJpYnV0b3JzIHRvIHRoZSBrZXBsZXIuZ2wgcHJvamVjdFxuXG5pbXBvcnQgUmVhY3QsIHt1c2VTdGF0ZSwgdXNlRWZmZWN0LCB1c2VDYWxsYmFja30gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHN0eWxlZCBmcm9tICdzdHlsZWQtY29tcG9uZW50cyc7XG5pbXBvcnQgY29weSBmcm9tICdjb3B5LXRvLWNsaXBib2FyZCc7XG5pbXBvcnQge0RlbGV0ZSwgSW5mbywgV2FybmluZywgQ2hlY2ttYXJrLCBDb3B5fSBmcm9tICcuLi9jb21tb24vaWNvbnMnO1xuaW1wb3J0IE1hcmtkb3duIGZyb20gJ21hcmtkb3duLXRvLWpzeCc7XG5pbXBvcnQge2RhdGFUZXN0SWRzfSBmcm9tICdAa2VwbGVyLmdsL2NvbnN0YW50cyc7XG5pbXBvcnQge0FjdGlvbkhhbmRsZXIsIHJlbW92ZU5vdGlmaWNhdGlvbiBhcyByZW1vdmVOb3RpZmljYXRpb25BY3Rpb25zfSBmcm9tICdAa2VwbGVyLmdsL2FjdGlvbnMnO1xuXG5pbXBvcnQgTGlua1JlbmRlcmVyIGZyb20gJy4uL2NvbW1vbi9saW5rLXJlbmRlcmVyJztcbmludGVyZmFjZSBOb3RpZmljYXRpb25JdGVtQ29udGVudEJsb2NrUHJvcHMge1xuICBpc0V4cGFuZGVkPzogYm9vbGVhbjtcbn1cblxuY29uc3QgTm90aWZpY2F0aW9uSXRlbUNvbnRlbnRCbG9jayA9IHN0eWxlZC5kaXYuYXR0cnMoe1xuICBjbGFzc05hbWU6ICdub3RpZmljYXRpb24taXRlbS0tY29udGVudC1ibG9jaydcbn0pPE5vdGlmaWNhdGlvbkl0ZW1Db250ZW50QmxvY2tQcm9wcz5gXG4gIGRpc3BsYXk6IGJsb2NrO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIHdpZHRoOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLm5vdGlmaWNhdGlvblBhbmVsSXRlbVdpZHRoICogKDEgKyBOdW1iZXIocHJvcHMuaXNFeHBhbmRlZCkpfXB4O1xuICBtYXJnaW4tbGVmdDogYXV0bztcbmA7XG5cbmludGVyZmFjZSBOb3RpZmljYXRpb25JdGVtQ29udGVudFByb3BzIHtcbiAgdHlwZTogc3RyaW5nO1xuICBpc0V4cGFuZGVkPzogYm9vbGVhbjtcbn1cblxuY29uc3QgTm90aWZpY2F0aW9uSXRlbUNvbnRlbnQgPSBzdHlsZWQuZGl2PE5vdGlmaWNhdGlvbkl0ZW1Db250ZW50UHJvcHM+YFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLm5vdGlmaWNhdGlvbkNvbG9yc1twcm9wcy50eXBlXSB8fCAnIzAwMCd9O1xuICBjb2xvcjogI2ZmZjtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IHJvdztcbiAgd2lkdGg6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUubm90aWZpY2F0aW9uUGFuZWxJdGVtV2lkdGggKiAoMSArIE51bWJlcihwcm9wcy5pc0V4cGFuZGVkKSl9cHg7XG4gIGhlaWdodDogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5ub3RpZmljYXRpb25QYW5lbEl0ZW1IZWlnaHQgKiAoMSArIE51bWJlcihwcm9wcy5pc0V4cGFuZGVkKSl9cHg7XG4gIGZvbnQtc2l6ZTogMTFweDtcbiAgbWFyZ2luLWJvdHRvbTogMXJlbTtcbiAgcGFkZGluZzogMWVtO1xuICBib3JkZXItcmFkaXVzOiA0cHg7XG4gIGJveC1zaGFkb3c6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuYm94U2hhZG93fTtcbiAgY3Vyc29yOiBwb2ludGVyO1xuXG4gICY6aG92ZXIgLm5vdGlmaWNhdGlvbi1pdGVtLS1jb3B5IHtcbiAgICBvcGFjaXR5OiAxO1xuICAgIHBvaW50ZXItZXZlbnRzOiBhdXRvO1xuICB9XG5gO1xuXG5jb25zdCBOb3RpZmljYXRpb25BY3Rpb25zID0gc3R5bGVkLmRpdi5hdHRycyh7XG4gIGNsYXNzTmFtZTogJ25vdGlmaWNhdGlvbi1pdGVtLS1hY3Rpb24nXG59KWBcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IHJvdztcbiAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XG4gIGZsZXgtc2hyaW5rOiAwO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG5gO1xuXG5jb25zdCBBY3Rpb25JY29uQnV0dG9uID0gc3R5bGVkLmRpdi5hdHRycyh7XG4gIGNsYXNzTmFtZTogJ25vdGlmaWNhdGlvbi1pdGVtLS1jb3B5J1xufSk8eyRjb3BpZWQ/OiBib29sZWFufT5gXG4gIGRpc3BsYXk6IGZsZXg7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgbGluZS1oZWlnaHQ6IDA7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgcmlnaHQ6IGNhbGMoMTAwJSArIDZweCk7XG4gIHRvcDogMDtcbiAgei1pbmRleDogMTtcbiAgb3BhY2l0eTogJHtwcm9wcyA9PiAocHJvcHMuJGNvcGllZCA/IDEgOiAwKX07XG4gIHBvaW50ZXItZXZlbnRzOiAke3Byb3BzID0+IChwcm9wcy4kY29waWVkID8gJ2F1dG8nIDogJ25vbmUnKX07XG5gO1xuXG5jb25zdCBEZWxldGVJY29uID0gc3R5bGVkKERlbGV0ZSlgXG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgd2lkdGg6IDEzcHg7XG4gIGhlaWdodDogMTNweDtcbmA7XG5cbmNvbnN0IENvcHlJY29uID0gc3R5bGVkKENvcHkpYFxuICBjdXJzb3I6IHBvaW50ZXI7XG4gIHdpZHRoOiAxM3B4O1xuICBoZWlnaHQ6IDEzcHg7XG5gO1xuXG5jb25zdCBDb3BpZWRJY29uID0gc3R5bGVkKENoZWNrbWFyaylgXG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgd2lkdGg6IDEzcHg7XG4gIGhlaWdodDogMTNweDtcbmA7XG5cbmludGVyZmFjZSBOb3RpZmljYXRpb25Db3VudGVyUHJvcHMge1xuICB0eXBlOiBzdHJpbmc7XG59XG5cbmNvbnN0IE5vdGlmaWNhdGlvbkNvdW50ZXIgPSBzdHlsZWQuZGl2LmF0dHJzKHtcbiAgY2xhc3NOYW1lOiAnbm90aWZpY2F0aW9uLWl0ZW0tLWNvdW50ZXInXG59KTxOb3RpZmljYXRpb25Db3VudGVyUHJvcHM+YFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIGZvbnQtc2l6ZTogMTFweDtcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgbGVmdDogLTRweDtcbiAgYm90dG9tOiAtNHB4O1xuICBib3JkZXItcmFkaXVzOiA1MCU7XG4gIHdpZHRoOiAyMHB4O1xuICBoZWlnaHQ6IDIwcHg7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmZmZmY7XG4gIGJvcmRlcjogMXB4IHNvbGlkICR7cHJvcHMgPT4gcHJvcHMudGhlbWUubm90aWZpY2F0aW9uQ29sb3JzW3Byb3BzLnR5cGVdIHx8ICcjMDAwJ307XG4gIGNvbG9yOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLm5vdGlmaWNhdGlvbkNvbG9yc1twcm9wcy50eXBlXSB8fCAnIzAwMCd9O1xuICBib3gtc2hhZG93OiAke3Byb3BzID0+IHByb3BzLnRoZW1lLmJveFNoYWRvd307XG5gO1xuXG5pbnRlcmZhY2UgTm90aWZpY2F0aW9uTWVzc2FnZVByb3BzIHtcbiAgaXNFeHBhbmRlZD86IGJvb2xlYW47XG59XG5cbmNvbnN0IE5vdGlmaWNhdGlvbk1lc3NhZ2UgPSBzdHlsZWQuZGl2LmF0dHJzKHtcbiAgY2xhc3NOYW1lOiAnbm90aWZpY2F0aW9uLWl0ZW0tLW1lc3NhZ2UnXG59KTxOb3RpZmljYXRpb25NZXNzYWdlUHJvcHM+YFxuICBmbGV4LWdyb3c6IDI7XG4gIHdpZHRoOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLm5vdGlmaWNhdGlvblBhbmVsSXRlbVdpZHRofXB4O1xuICBtYXJnaW46IDAgMWVtO1xuICBvdmVyZmxvdzogJHtwcm9wcyA9PiAocHJvcHMuaXNFeHBhbmRlZCA/ICdhdXRvJyA6ICdoaWRkZW4nKX07XG4gIHBhZGRpbmctcmlnaHQ6ICR7cHJvcHMgPT4gKHByb3BzLmlzRXhwYW5kZWQgPyAnMWVtJyA6IDApfTtcblxuICBwIHtcbiAgICBtYXJnaW4tdG9wOiAwO1xuICAgIGEge1xuICAgICAgY29sb3I6ICNmZmY7XG4gICAgICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTtcbiAgICB9XG4gIH1cbmA7XG5cbmNvbnN0IE5vdGlmaWNhdGlvbkljb24gPSBzdHlsZWQuZGl2YFxuICBzdmcge1xuICAgIHZlcnRpY2FsLWFsaWduOiB0ZXh0LXRvcDtcbiAgfVxuYDtcblxuY29uc3QgaWNvbnMgPSB7XG4gIGluZm86IDxJbmZvIGRhdGEtdGVzdGlkPXtkYXRhVGVzdElkcy5pbmZvSWNvbn0gLz4sXG4gIHdhcm5pbmc6IDxXYXJuaW5nIGRhdGEtdGVzdGlkPXtkYXRhVGVzdElkcy53YXJuaW5nSWNvbn0gLz4sXG4gIGVycm9yOiA8V2FybmluZyBkYXRhLXRlc3RpZD17ZGF0YVRlc3RJZHMuZXJyb3JJY29ufSAvPixcbiAgc3VjY2VzczogPENoZWNrbWFyayBkYXRhLXRlc3RpZD17ZGF0YVRlc3RJZHMuc3VjY2Vzc0ljb259IC8+XG59O1xuXG5pbnRlcmZhY2UgTm90aWZpY2F0aW9uSXRlbVByb3BzIHtcbiAgbm90aWZpY2F0aW9uOiB7XG4gICAgaWQ6IHN0cmluZztcbiAgICB0eXBlOiBzdHJpbmc7XG4gICAgbWVzc2FnZTogc3RyaW5nO1xuICAgIGNvdW50PzogbnVtYmVyO1xuICB9O1xuICBpc0V4cGFuZGVkPzogYm9vbGVhbjtcbiAgcmVtb3ZlTm90aWZpY2F0aW9uPzogQWN0aW9uSGFuZGxlcjx0eXBlb2YgcmVtb3ZlTm90aWZpY2F0aW9uQWN0aW9ucz47XG4gIHRoZW1lPzogYW55O1xufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBOb3RpZmljYXRpb25JdGVtRmFjdG9yeSgpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIE5vdGlmaWNhdGlvbkl0ZW0oe1xuICAgIG5vdGlmaWNhdGlvbixcbiAgICByZW1vdmVOb3RpZmljYXRpb24sXG4gICAgaXNFeHBhbmRlZDogaW5pdGlhbElzRXhwYW5kZWQsXG4gICAgdGhlbWVcbiAgfTogTm90aWZpY2F0aW9uSXRlbVByb3BzKSB7XG4gICAgY29uc3QgW2lzRXhwYW5kZWQsIHNldElzRXhwYW5kZWRdID0gdXNlU3RhdGUoZmFsc2UpO1xuICAgIGNvbnN0IFtjb3BpZWQsIHNldENvcGllZF0gPSB1c2VTdGF0ZShmYWxzZSk7XG5cbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgaWYgKGluaXRpYWxJc0V4cGFuZGVkKSB7XG4gICAgICAgIHNldElzRXhwYW5kZWQodHJ1ZSk7XG4gICAgICB9XG4gICAgfSwgW2luaXRpYWxJc0V4cGFuZGVkXSk7XG5cbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgaWYgKCFjb3BpZWQpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgY29uc3QgdGltZW91dElkID0gd2luZG93LnNldFRpbWVvdXQoKCkgPT4gc2V0Q29waWVkKGZhbHNlKSwgMTUwMCk7XG4gICAgICByZXR1cm4gKCkgPT4gd2luZG93LmNsZWFyVGltZW91dCh0aW1lb3V0SWQpO1xuICAgIH0sIFtjb3BpZWRdKTtcblxuICAgIGNvbnN0IG9uQ29weSA9IHVzZUNhbGxiYWNrKFxuICAgICAgKGV2ZW50OiBSZWFjdC5Nb3VzZUV2ZW50KSA9PiB7XG4gICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICBpZiAobm90aWZpY2F0aW9uLm1lc3NhZ2UpIHtcbiAgICAgICAgICBjb3B5KG5vdGlmaWNhdGlvbi5tZXNzYWdlKTtcbiAgICAgICAgICBzZXRDb3BpZWQodHJ1ZSk7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBbbm90aWZpY2F0aW9uLm1lc3NhZ2VdXG4gICAgKTtcblxuICAgIHJldHVybiAoXG4gICAgICA8Tm90aWZpY2F0aW9uSXRlbUNvbnRlbnRCbG9jayBpc0V4cGFuZGVkPXtpc0V4cGFuZGVkfSB0aGVtZT17dGhlbWV9PlxuICAgICAgICB7KG5vdGlmaWNhdGlvbi5jb3VudCB8fCAwKSA+IDEgPyAoXG4gICAgICAgICAgPE5vdGlmaWNhdGlvbkNvdW50ZXIgdHlwZT17bm90aWZpY2F0aW9uLnR5cGV9IHRoZW1lPXt0aGVtZX0+XG4gICAgICAgICAgICB7bm90aWZpY2F0aW9uLmNvdW50fVxuICAgICAgICAgIDwvTm90aWZpY2F0aW9uQ291bnRlcj5cbiAgICAgICAgKSA6IG51bGx9XG4gICAgICAgIDxOb3RpZmljYXRpb25JdGVtQ29udGVudFxuICAgICAgICAgIGNsYXNzTmFtZT17YG5vdGlmaWNhdGlvbi1pdGVtJHtpc0V4cGFuZGVkID8gJyBub3RpZmljYXRpb24taXRlbS0tZXhwYW5kZWQnIDogJyd9YH1cbiAgICAgICAgICB0eXBlPXtub3RpZmljYXRpb24udHlwZX1cbiAgICAgICAgICBpc0V4cGFuZGVkPXtpc0V4cGFuZGVkfVxuICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHNldElzRXhwYW5kZWQoIWlzRXhwYW5kZWQpfVxuICAgICAgICA+XG4gICAgICAgICAgPE5vdGlmaWNhdGlvbkljb24gY2xhc3NOYW1lPVwibm90aWZpY2F0aW9uLWl0ZW0tLWljb25cIj5cbiAgICAgICAgICAgIHtpY29uc1tub3RpZmljYXRpb24udHlwZV19XG4gICAgICAgICAgPC9Ob3RpZmljYXRpb25JY29uPlxuICAgICAgICAgIDxOb3RpZmljYXRpb25NZXNzYWdlIGlzRXhwYW5kZWQ9e2lzRXhwYW5kZWR9IHRoZW1lPXt0aGVtZX0+XG4gICAgICAgICAgICA8TWFya2Rvd25cbiAgICAgICAgICAgICAgb3B0aW9ucz17e1xuICAgICAgICAgICAgICAgIG92ZXJyaWRlczoge1xuICAgICAgICAgICAgICAgICAgYToge1xuICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQ6IExpbmtSZW5kZXJlclxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge25vdGlmaWNhdGlvbi5tZXNzYWdlfVxuICAgICAgICAgICAgPC9NYXJrZG93bj5cbiAgICAgICAgICA8L05vdGlmaWNhdGlvbk1lc3NhZ2U+XG4gICAgICAgICAgPE5vdGlmaWNhdGlvbkFjdGlvbnMgb25DbGljaz17ZXZlbnQgPT4gZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCl9PlxuICAgICAgICAgICAgPEFjdGlvbkljb25CdXR0b25cbiAgICAgICAgICAgICAgJGNvcGllZD17Y29waWVkfVxuICAgICAgICAgICAgICBkYXRhLXRlc3RpZD17ZGF0YVRlc3RJZHMuY29weU5vdGlmaWNhdGlvbkljb259XG4gICAgICAgICAgICAgIHRpdGxlPXtjb3BpZWQgPyAnQ29waWVkJyA6ICdDb3B5IHRvIGNsaXBib2FyZCd9XG4gICAgICAgICAgICAgIG9uQ2xpY2s9e29uQ29weX1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge2NvcGllZCA/IDxDb3BpZWRJY29uIGhlaWdodD1cIjEwcHhcIiAvPiA6IDxDb3B5SWNvbiBoZWlnaHQ9XCIxMHB4XCIgLz59XG4gICAgICAgICAgICA8L0FjdGlvbkljb25CdXR0b24+XG4gICAgICAgICAgICB7dHlwZW9mIHJlbW92ZU5vdGlmaWNhdGlvbiA9PT0gJ2Z1bmN0aW9uJyA/IChcbiAgICAgICAgICAgICAgPERlbGV0ZUljb24gaGVpZ2h0PVwiMTBweFwiIG9uQ2xpY2s9eygpID0+IHJlbW92ZU5vdGlmaWNhdGlvbihub3RpZmljYXRpb24uaWQpfSAvPlxuICAgICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgICAgPC9Ob3RpZmljYXRpb25BY3Rpb25zPlxuICAgICAgICA8L05vdGlmaWNhdGlvbkl0ZW1Db250ZW50PlxuICAgICAgPC9Ob3RpZmljYXRpb25JdGVtQ29udGVudEJsb2NrPlxuICAgICk7XG4gIH07XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFHQSxJQUFBQSxNQUFBLEdBQUFDLHVCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyxpQkFBQSxHQUFBQyxzQkFBQSxDQUFBRixPQUFBO0FBQ0EsSUFBQUcsZ0JBQUEsR0FBQUQsc0JBQUEsQ0FBQUYsT0FBQTtBQUNBLElBQUFJLE1BQUEsR0FBQUosT0FBQTtBQUNBLElBQUFLLGNBQUEsR0FBQUgsc0JBQUEsQ0FBQUYsT0FBQTtBQUNBLElBQUFNLFVBQUEsR0FBQU4sT0FBQTtBQUdBLElBQUFPLGFB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
|
|
@@ -12,7 +12,7 @@ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/sli
|
|
|
12
12
|
var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
|
|
13
13
|
var _react = _interopRequireWildcard(require("react"));
|
|
14
14
|
var _styledComponents = _interopRequireDefault(require("styled-components"));
|
|
15
|
-
var _debounce = _interopRequireDefault(require("
|
|
15
|
+
var _debounce = _interopRequireDefault(require("es-toolkit/compat/debounce"));
|
|
16
16
|
var _utils = require("@kepler.gl/utils");
|
|
17
17
|
var _reducers = require("@kepler.gl/reducers");
|
|
18
18
|
var _mapContainer = _interopRequireDefault(require("./map-container"));
|
|
@@ -25,9 +25,16 @@ var _templateObject, _templateObject2; // SPDX-License-Identifier: MIT
|
|
|
25
25
|
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, "default": e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
|
|
26
26
|
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
27
27
|
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2["default"])(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
28
|
-
var CLASS_FILTER = ['maplibregl-control-container', 'mapboxgl-control-container', 'attrition-link', 'attrition-logo', 'map-control__panel-split-viewport-tools'];
|
|
28
|
+
var CLASS_FILTER = ['maplibregl-control-container', 'mapboxgl-control-container', 'attrition-link', 'attrition-logo', 'map-control__panel-split-viewport-tools', 'map-navigation-control'];
|
|
29
29
|
var DOM_FILTER_FUNC = function DOM_FILTER_FUNC(node) {
|
|
30
|
-
|
|
30
|
+
var className = typeof node.className === 'string' ? node.className : '';
|
|
31
|
+
if (!className) {
|
|
32
|
+
return true;
|
|
33
|
+
}
|
|
34
|
+
var classes = className.split(/\s+/);
|
|
35
|
+
return !CLASS_FILTER.some(function (cls) {
|
|
36
|
+
return classes.includes(cls);
|
|
37
|
+
});
|
|
31
38
|
};
|
|
32
39
|
var OUT_OF_SCREEN_POSITION = -9999;
|
|
33
40
|
|
|
@@ -57,7 +64,7 @@ PlotContainerFactory.deps = [_mapContainer["default"], _mapsLayout["default"]];
|
|
|
57
64
|
// Remove mapbox logo in exported map, because it contains non-ascii characters
|
|
58
65
|
// Remove split viewport UI controls from exported images when the legend is shown
|
|
59
66
|
|
|
60
|
-
var StyledPlotContainer = _styledComponents["default"].div(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n .maplibregl-ctrl-bottom-left,\n .maplibregl-ctrl-bottom-right,\n .maplibre-attribution-container,\n .mapboxgl-ctrl-bottom-left,\n .mapboxgl-ctrl-bottom-right,\n .mapbox-attribution-container,\n .map-control__panel-split-viewport-tools {\n display: none;\n }\n\n position: absolute;\n top: ", "px;\n left: ", "px;\n\n /* Apply zoom to legend panel based on export height */\n .map-control-panel {\n zoom: ", " !important;\n }\n"])), OUT_OF_SCREEN_POSITION, OUT_OF_SCREEN_POSITION, function (props) {
|
|
67
|
+
var StyledPlotContainer = _styledComponents["default"].div(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n .maplibregl-ctrl-bottom-left,\n .maplibregl-ctrl-bottom-right,\n .maplibre-attribution-container,\n .mapboxgl-ctrl-bottom-left,\n .mapboxgl-ctrl-bottom-right,\n .mapbox-attribution-container,\n .map-control__panel-split-viewport-tools,\n .map-navigation-control {\n display: none;\n }\n\n position: absolute;\n top: ", "px;\n left: ", "px;\n\n /* Apply zoom to legend panel based on export height */\n .map-control-panel {\n zoom: ", " !important;\n }\n"])), OUT_OF_SCREEN_POSITION, OUT_OF_SCREEN_POSITION, function (props) {
|
|
61
68
|
return props.$legendZoom || 1;
|
|
62
69
|
});
|
|
63
70
|
var StyledMapContainer = _styledComponents["default"].div(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2["default"])(["\n width: ", "px;\n height: ", "px;\n display: flex;\n"])), function (props) {
|
|
@@ -308,4 +315,4 @@ function PlotContainerFactory(MapContainer, MapsLayout) {
|
|
|
308
315
|
}
|
|
309
316
|
return /*#__PURE__*/_react["default"].memo(PlotContainer);
|
|
310
317
|
}
|
|
311
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfc3R5bGVkQ29tcG9uZW50cyIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfZGVib3VuY2UiLCJfdXRpbHMiLCJfcmVkdWNlcnMiLCJfbWFwQ29udGFpbmVyIiwiX21hcHNMYXlvdXQiLCJfbWFwVmlld1N0YXRlQ29udGV4dCIsIl9jb25zdGFudHMiLCJfdGVtcGxhdGVPYmplY3QiLCJfdGVtcGxhdGVPYmplY3QyIiwiZSIsInQiLCJXZWFrTWFwIiwiciIsIm4iLCJfX2VzTW9kdWxlIiwibyIsImkiLCJmIiwiX19wcm90b19fIiwiX3R5cGVvZiIsImhhcyIsImdldCIsInNldCIsIl90IiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJvd25LZXlzIiwia2V5cyIsImdldE93blByb3BlcnR5U3ltYm9scyIsImZpbHRlciIsImVudW1lcmFibGUiLCJwdXNoIiwiYXBwbHkiLCJfb2JqZWN0U3ByZWFkIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwiZm9yRWFjaCIsIl9kZWZpbmVQcm9wZXJ0eTIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzIiwiZGVmaW5lUHJvcGVydGllcyIsIkNMQVNTX0ZJTFRFUiIsIkRPTV9GSUxURVJfRlVOQyIsIm5vZGUiLCJpbmNsdWRlcyIsImNsYXNzTmFtZSIsIk9VVF9PRl9TQ1JFRU5fUE9TSVRJT04iLCJjYWxjdWxhdGVMZWdlbmRab29tIiwiaGVpZ2h0IiwiYmFzZUhlaWdodCIsIm1pblpvb20iLCJtYXhab29tIiwiTnVtYmVyIiwiaXNGaW5pdGUiLCJ6b29tRmFjdG9yIiwiTWF0aCIsIm1heCIsIm1pbiIsIlBsb3RDb250YWluZXJGYWN0b3J5IiwiZGVwcyIsIk1hcENvbnRhaW5lckZhY3RvcnkiLCJNYXBzTGF5b3V0RmFjdG9yeSIsIlN0eWxlZFBsb3RDb250YWluZXIiLCJzdHlsZWQiLCJkaXYiLCJfdGFnZ2VkVGVtcGxhdGVMaXRlcmFsMiIsInByb3BzIiwiJGxlZ2VuZFpvb20iLCJTdHlsZWRNYXBDb250YWluZXIiLCJ3aWR0aCIsIk1hcENvbnRhaW5lciIsIk1hcHNMYXlvdXQiLCJQbG90Q29udGFpbmVyIiwiX3JlZiIsInJhdGlvIiwicmVzb2x1dGlvbiIsIl9yZWYkbGVnZW5kIiwibGVnZW5kIiwiY2VudGVyIiwiaW1hZ2VTaXplIiwiZXNjYXBlWGh0bWxGb3JXZWJwYWNrIiwibWFwRmllbGRzIiwiX3JlZiRzcGxpdE1hcHMiLCJzcGxpdE1hcHMiLCJzZXRFeHBvcnRJbWFnZVNldHRpbmciLCJzZXRFeHBvcnRJbWFnZURhdGFVcmkiLCJzZXRFeHBvcnRJbWFnZUVycm9yIiwiYWRkTm90aWZpY2F0aW9uIiwiZW5hYmxlRXJyb3JOb3RpZmljYXRpb24iLCJsb2dvQ29tcG9uZW50IiwicGxvdHRpbmdBcmVhUmVmIiwidXNlUmVmIiwiX3VzZVN0YXRlIiwidXNlU3RhdGUiLCJ2aXNTdGF0ZSIsImVmZmVjdHMiLCJtYXAiLCJlZmZlY3QiLCJjbG9uZSIsIl91c2VTdGF0ZTIiLCJfc2xpY2VkVG9BcnJheTIiLCJwbG90RWZmZWN0cyIsIm1hcFN0YXRlIiwiZGVja0xheWVyc0xvYWRpbmdSZWYiLCJtYXBTdHlsZUxvYWRlZFJlZiIsInNjcmVlbnNob3RUYWtlblJlZiIsInNjYWxlIiwidXNlTWVtbyIsImNhbGN1bGF0ZWRTY2FsZSIsImdldFNjYWxlRnJvbUltYWdlU2l6ZSIsImltYWdlVyIsImltYWdlSCIsImlzU3BsaXQiLCJsZWdlbmRab29tIiwic2NhbGVkTWFwU3R5bGUiLCJtYXBTdHlsZSIsImJvdHRvbU1hcFN0eWxlIiwic2NhbGVNYXBTdHlsZUJ5UmVzb2x1dGlvbiIsInRvcE1hcFN0eWxlIiwiZGVib3VuY2VkU2NyZWVuc2hvdCIsImRlYm91bmNlIiwiY3VycmVudCIsImNvbnZlcnRUb1BuZyIsInRoZW4iLCJlcnIiLCJleHBvcnRJbWFnZUVycm9yIiwicmV0cmlldmVOZXdTY3JlZW5zaG90IiwidXNlQ2FsbGJhY2siLCJ0cnlTY3JlZW5zaG90IiwidXNlRWZmZWN0IiwidGltZXIiLCJzZXRUaW1lb3V0IiwiY2xlYXJUaW1lb3V0IiwiZGVib3VuY2VkTWFwUmVuZGVyIiwiaXNTdHlsZUxvYWRlZCIsIm9uTWFwUmVuZGVyIiwiZGVja1JlbmRlckNhbGxiYWNrcyIsIm9uRGVja0FmdGVyUmVuZGVyIiwiZGVja1Byb3BzIiwibGF5ZXJzIiwic3RpbGxMb2FkaW5nIiwiYXJlQW55RGVja0xheWVyc0xvYWRpbmciLCJwcm9jZXNzaW5nIiwidW5kZWZpbmVkIiwiX3VzZU1lbW8iLCJzaXplIiwibmV3TWFwU3RhdGUiLCJ6b29tT2Zmc2V0IiwibG9nMiIsImJhc2VNYXBTdGF0ZSIsInpvb20iLCJyZW5kZXJlZExheWVycyIsImxheWVyIiwiaWR4IiwiaWQiLCJHRU9DT0RFUl9MQVlFUl9JRCIsInNob3VsZFJlbmRlckxheWVyIiwibGF5ZXJEYXRhIiwiYm91bmRzIiwiZmluZE1hcEJvdW5kcyIsImNlbnRlckFuZFpvb20iLCJnZXRDZW50ZXJBbmRab29tRnJvbUJvdW5kcyIsImxvbmdpdHVkZSIsImxhdGl0dWRlIiwibWFwUHJvcHMiLCJfbWFwRmllbGRzJG1hcENvbnRyb2wiLCJtYXBDb250cm9scyIsIm1hcExlZ2VuZCIsInNob3ciLCJCb29sZWFuIiwiYWN0aXZlIiwic2V0dGluZ3MiLCJpc0V4cG9ydCIsImRlY2tHbFByb3BzIiwiX2lzRXhwb3J0IiwidXNlRGV2aWNlUGl4ZWxzIiwiZGV2aWNlUHJvcHMiLCJ3ZWJnbCIsInByZXNlcnZlRHJhd2luZ0J1ZmZlciIsIm1hcENvbnRhaW5lcnMiLCJjcmVhdGVFbGVtZW50IiwiX2V4dGVuZHMyIiwiaW5kZXgiLCJwcmltYXJ5Iiwia2V5IiwicmVmIiwiTWFwVmlld1N0YXRlQ29udGV4dFByb3ZpZGVyIiwiUmVhY3QiLCJtZW1vIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3Bsb3QtY29udGFpbmVyLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUXG4vLyBDb3B5cmlnaHQgY29udHJpYnV0b3JzIHRvIHRoZSBrZXBsZXIuZ2wgcHJvamVjdFxuXG4vLyBsaWJyYXJpZXNcbmltcG9ydCBSZWFjdCwge3VzZVJlZiwgdXNlRWZmZWN0LCB1c2VTdGF0ZSwgdXNlQ2FsbGJhY2ssIHVzZU1lbW99IGZyb20gJ3JlYWN0JztcbmltcG9ydCBzdHlsZWQgZnJvbSAnc3R5bGVkLWNvbXBvbmVudHMnO1xuaW1wb3J0IGRlYm91bmNlIGZyb20gJ2xvZGFzaC9kZWJvdW5jZSc7XG5pbXBvcnQge1xuICBleHBvcnRJbWFnZUVycm9yLFxuICBzY2FsZU1hcFN0eWxlQnlSZXNvbHV0aW9uLFxuICBnZXRDZW50ZXJBbmRab29tRnJvbUJvdW5kcyxcbiAgY29udmVydFRvUG5nLFxuICBnZXRTY2FsZUZyb21JbWFnZVNpemVcbn0gZnJvbSAnQGtlcGxlci5nbC91dGlscyc7XG5pbXBvcnQge2ZpbmRNYXBCb3VuZHMsIGFyZUFueURlY2tMYXllcnNMb2FkaW5nfSBmcm9tICdAa2VwbGVyLmdsL3JlZHVjZXJzJztcbmltcG9ydCBNYXBDb250YWluZXJGYWN0b3J5IGZyb20gJy4vbWFwLWNvbnRhaW5lcic7XG5pbXBvcnQgTWFwc0xheW91dEZhY3RvcnkgZnJvbSAnLi9tYXBzLWxheW91dCc7XG5pbXBvcnQge01hcFZpZXdTdGF0ZUNvbnRleHRQcm92aWRlcn0gZnJvbSAnLi9tYXAtdmlldy1zdGF0ZS1jb250ZXh0JztcblxuaW1wb3J0IHtHRU9DT0RFUl9MQVlFUl9JRH0gZnJvbSAnQGtlcGxlci5nbC9jb25zdGFudHMnO1xuaW1wb3J0IHtFZmZlY3QsIFNwbGl0TWFwLCBFeHBvcnRJbWFnZX0gZnJvbSAnQGtlcGxlci5nbC90eXBlcyc7XG5pbXBvcnQge1xuICBBY3Rpb25IYW5kbGVyLFxuICBhZGROb3RpZmljYXRpb24sXG4gIHNldEV4cG9ydEltYWdlRGF0YVVyaSxcbiAgc2V0RXhwb3J0SW1hZ2VFcnJvcixcbiAgc2V0RXhwb3J0SW1hZ2VTZXR0aW5nXG59IGZyb20gJ0BrZXBsZXIuZ2wvYWN0aW9ucyc7XG5pbXBvcnQge21hcEZpZWxkc1NlbGVjdG9yfSBmcm9tICcuL2tlcGxlci1nbCc7XG5cbmNvbnN0IENMQVNTX0ZJTFRFUiA9IFtcbiAgJ21hcGxpYnJlZ2wtY29udHJvbC1jb250YWluZXInLFxuICAnbWFwYm94Z2wtY29udHJvbC1jb250YWluZXInLFxuICAnYXR0cml0aW9uLWxpbmsnLFxuICAnYXR0cml0aW9uLWxvZ28nLFxuICAnbWFwLWNvbnRyb2xfX3BhbmVsLXNwbGl0LXZpZXdwb3J0LXRvb2xzJ1xuXTtcbmNvbnN0IERPTV9GSUxURVJfRlVOQyA9IG5vZGUgPT4gIUNMQVNTX0ZJTFRFUi5pbmNsdWRlcyhub2RlLmNsYXNzTmFtZSk7XG5jb25zdCBPVVRfT0ZfU0NSRUVOX1BPU0lUSU9OID0gLTk5OTk7XG5cbi8qKlxuICogQ2FsY3VsYXRlcyBsZWdlbmQgem9vbSBiYXNlZCBvbiBleHBvcnQgaGVpZ2h0XG4gKiBNYXBzIGV4cG9ydCBoZWlnaHQgdG8gYSB6b29tIGZhY3RvciBiZXR3ZWVuIDAuNSBhbmQgM1xuICogQHBhcmFtIGhlaWdodCAtIGV4cG9ydCBoZWlnaHQgaW4gcGl4ZWxzXG4gKiBAcmV0dXJucyB6b29tIGZhY3RvciBmb3IgbGVnZW5kIHBhbmVsXG4gKi9cbmZ1bmN0aW9uIGNhbGN1bGF0ZUxlZ2VuZFpvb20oaGVpZ2h0OiBudW1iZXIpOiBudW1iZXIge1xuICBjb25zdCBiYXNlSGVpZ2h0ID0gMTA4MDsgLy8gMXggem9vbSByZWZlcmVuY2UgaGVpZ2h0XG4gIGNvbnN0IG1pblpvb20gPSAwLjU7XG4gIGNvbnN0IG1heFpvb20gPSAzO1xuXG4gIC8vIEZvciBpbml0aWFsL2ludmFsaWQgaGVpZ2h0cywgYXZvaWQgc2hyaW5raW5nIHRoZSBsZWdlbmQ7IHVzZSBubyBzY2FsaW5nLlxuICBpZiAoIU51bWJlci5pc0Zpbml0ZShoZWlnaHQpIHx8IGhlaWdodCA8PSAwKSB7XG4gICAgcmV0dXJuIDE7XG4gIH1cblxuICAvLyBMaW5lYXIgbWFwcGluZzogaGVpZ2h0IC8gYmFzZUhlaWdodCBnaXZlcyB1cyB0aGUgc2NhbGVcbiAgY29uc3Qgem9vbUZhY3RvciA9IGhlaWdodCAvIGJhc2VIZWlnaHQ7XG4gIC8vIENsYW1wIGJldHdlZW4gbWluIGFuZCBtYXhcbiAgcmV0dXJuIE1hdGgubWF4KG1pblpvb20sIE1hdGgubWluKG1heFpvb20sIHpvb21GYWN0b3IpKTtcbn1cblxuUGxvdENvbnRhaW5lckZhY3RvcnkuZGVwcyA9IFtNYXBDb250YWluZXJGYWN0b3J5LCBNYXBzTGF5b3V0RmFjdG9yeV07XG5cbi8vIFJlbW92ZSBtYXBib3ggbG9nbyBpbiBleHBvcnRlZCBtYXAsIGJlY2F1c2UgaXQgY29udGFpbnMgbm9uLWFzY2lpIGNoYXJhY3RlcnNcbi8vIFJlbW92ZSBzcGxpdCB2aWV3cG9ydCBVSSBjb250cm9scyBmcm9tIGV4cG9ydGVkIGltYWdlcyB3aGVuIHRoZSBsZWdlbmQgaXMgc2hvd25cbmludGVyZmFjZSBTdHlsZWRQbG90Q29udGFpbmVyUHJvcHMge1xuICAkbGVnZW5kWm9vbT86IG51bWJlcjtcbn1cblxuY29uc3QgU3R5bGVkUGxvdENvbnRhaW5lciA9IHN0eWxlZC5kaXY8U3R5bGVkUGxvdENvbnRhaW5lclByb3BzPmBcbiAgLm1hcGxpYnJlZ2wtY3RybC1ib3R0b20tbGVmdCxcbiAgLm1hcGxpYnJlZ2wtY3RybC1ib3R0b20tcmlnaHQsXG4gIC5tYXBsaWJyZS1hdHRyaWJ1dGlvbi1jb250YWluZXIsXG4gIC5tYXBib3hnbC1jdHJsLWJvdHRvbS1sZWZ0LFxuICAubWFwYm94Z2wtY3RybC1ib3R0b20tcmlnaHQsXG4gIC5tYXBib3gtYXR0cmlidXRpb24tY29udGFpbmVyLFxuICAubWFwLWNvbnRyb2xfX3BhbmVsLXNwbGl0LXZpZXdwb3J0LXRvb2xzIHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG5cbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6ICR7T1VUX09GX1NDUkVFTl9QT1NJVElPTn1weDtcbiAgbGVmdDogJHtPVVRfT0ZfU0NSRUVOX1BPU0lUSU9OfXB4O1xuXG4gIC8qIEFwcGx5IHpvb20gdG8gbGVnZW5kIHBhbmVsIGJhc2VkIG9uIGV4cG9ydCBoZWlnaHQgKi9cbiAgLm1hcC1jb250cm9sLXBhbmVsIHtcbiAgICB6b29tOiAke3Byb3BzID0+IHByb3BzLiRsZWdlbmRab29tIHx8IDF9ICFpbXBvcnRhbnQ7XG4gIH1cbmA7XG5cbmludGVyZmFjZSBTdHlsZWRNYXBDb250YWluZXJQcm9wcyB7XG4gIHdpZHRoPzogbnVtYmVyO1xuICBoZWlnaHQ/OiBudW1iZXI7XG59XG5cbmNvbnN0IFN0eWxlZE1hcENvbnRhaW5lciA9IHN0eWxlZC5kaXY8U3R5bGVkTWFwQ29udGFpbmVyUHJvcHM+YFxuICB3aWR0aDogJHtwcm9wcyA9PiBwcm9wcy53aWR0aH1weDtcbiAgaGVpZ2h0OiAke3Byb3BzID0+IHByb3BzLmhlaWdodH1weDtcbiAgZGlzcGxheTogZmxleDtcbmA7XG5cbmludGVyZmFjZSBQbG90Q29udGFpbmVyUHJvcHMge1xuICAvLyBJbWFnZSBleHBvcnQgc2V0dGluZ3NcbiAgcmF0aW8/OiBzdHJpbmc7XG4gIHJlc29sdXRpb24/OiBzdHJpbmc7XG4gIGxlZ2VuZD86IGJvb2xlYW47XG4gIGNlbnRlcj86IGJvb2xlYW47XG4gIGltYWdlU2l6ZTogRXhwb3J0SW1hZ2VbJ2ltYWdlU2l6ZSddO1xuICBlc2NhcGVYaHRtbEZvcldlYnBhY2s/OiBib29sZWFuO1xuXG4gIC8vIE1hcCBzZXR0aW5nc1xuICBtYXBGaWVsZHM6IFJldHVyblR5cGU8dHlwZW9mIG1hcEZpZWxkc1NlbGVjdG9yPjtcbiAgc3BsaXRNYXBzPzogU3BsaXRNYXBbXTtcblxuICAvLyBDYWxsYmFja3NcbiAgc2V0RXhwb3J0SW1hZ2VTZXR0aW5nOiB0eXBlb2Ygc2V0RXhwb3J0SW1hZ2VTZXR0aW5nO1xuICBzZXRFeHBvcnRJbWFnZURhdGFVcmk6IHR5cGVvZiBzZXRFeHBvcnRJbWFnZURhdGFVcmk7XG4gIHNldEV4cG9ydEltYWdlRXJyb3I6IHR5cGVvZiBzZXRFeHBvcnRJbWFnZUVycm9yO1xuICBhZGROb3RpZmljYXRpb246IEFjdGlvbkhhbmRsZXI8dHlwZW9mIGFkZE5vdGlmaWNhdGlvbj47XG5cbiAgLy8gRmxhZ3NcbiAgZW5hYmxlRXJyb3JOb3RpZmljYXRpb24/OiBib29sZWFuO1xuXG4gIC8vIE9wdGlvbmFsOiBvdmVycmlkZSBsZWdlbmQgaGVhZGVyIGxvZ28gZHVyaW5nIGV4cG9ydFxuICBsb2dvQ29tcG9uZW50PzogUmVhY3QuUmVhY3ROb2RlO1xufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBQbG90Q29udGFpbmVyRmFjdG9yeShcbiAgTWFwQ29udGFpbmVyOiBSZXR1cm5UeXBlPHR5cGVvZiBNYXBDb250YWluZXJGYWN0b3J5PixcbiAgTWFwc0xheW91dDogUmV0dXJuVHlwZTx0eXBlb2YgTWFwc0xheW91dEZhY3Rvcnk+XG4pOiBSZWFjdC5Db21wb25lbnRUeXBlPFBsb3RDb250YWluZXJQcm9wcz4ge1xuICBmdW5jdGlvbiBQbG90Q29udGFpbmVyKHtcbiAgICAvLyBJbWFnZSBleHBvcnQgc2V0dGluZ3NcbiAgICByYXRpbyxcbiAgICByZXNvbHV0aW9uLFxuICAgIGxlZ2VuZCA9IGZhbHNlLFxuICAgIGNlbnRlcixcbiAgICBpbWFnZVNpemUsXG4gICAgZXNjYXBlWGh0bWxGb3JXZWJwYWNrLFxuXG4gICAgLy8gTWFwIHNldHRpbmdzXG4gICAgbWFwRmllbGRzLFxuICAgIHNwbGl0TWFwcyA9IFtdLFxuXG4gICAgLy8gQ2FsbGJhY2tzXG4gICAgc2V0RXhwb3J0SW1hZ2VTZXR0aW5nLFxuICAgIHNldEV4cG9ydEltYWdlRGF0YVVyaSxcbiAgICBzZXRFeHBvcnRJbWFnZUVycm9yLFxuICAgIGFkZE5vdGlmaWNhdGlvbixcblxuICAgIC8vIEZsYWdzXG4gICAgZW5hYmxlRXJyb3JOb3RpZmljYXRpb24sXG4gICAgbG9nb0NvbXBvbmVudFxuICB9OiBQbG90Q29udGFpbmVyUHJvcHMpIHtcbiAgICBjb25zdCBwbG90dGluZ0FyZWFSZWYgPSB1c2VSZWY8SFRNTERpdkVsZW1lbnQ+KG51bGwpO1xuICAgIGNvbnN0IFtwbG90RWZmZWN0c10gPSB1c2VTdGF0ZTxFZmZlY3RbXT4oKCkgPT5cbiAgICAgIG1hcEZpZWxkcy52aXNTdGF0ZS5lZmZlY3RzLm1hcChlZmZlY3QgPT4gZWZmZWN0LmNsb25lKCkpXG4gICAgKTtcblxuICAgIGNvbnN0IHttYXBTdGF0ZX0gPSBtYXBGaWVsZHM7XG5cbiAgICBjb25zdCBkZWNrTGF5ZXJzTG9hZGluZ1JlZiA9IHVzZVJlZih0cnVlKTtcbiAgICBjb25zdCBtYXBTdHlsZUxvYWRlZFJlZiA9IHVzZVJlZihmYWxzZSk7XG4gICAgY29uc3Qgc2NyZWVuc2hvdFRha2VuUmVmID0gdXNlUmVmKGZhbHNlKTtcblxuICAgIC8vIE1lbW9pemUgdGhlIHNjYWxlIGNhbGN1bGF0aW9uXG4gICAgY29uc3Qgc2NhbGUgPSB1c2VNZW1vKCgpID0+IHtcbiAgICAgIGlmIChpbWFnZVNpemUuc2NhbGUpIHtcbiAgICAgICAgcmV0dXJuIGltYWdlU2l6ZS5zY2FsZTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgY2FsY3VsYXRlZFNjYWxlID0gZ2V0U2NhbGVGcm9tSW1hZ2VTaXplKFxuICAgICAgICBpbWFnZVNpemUuaW1hZ2VXLFxuICAgICAgICBpbWFnZVNpemUuaW1hZ2VILFxuICAgICAgICBtYXBTdGF0ZS53aWR0aCAqIChtYXBTdGF0ZS5pc1NwbGl0ID8gMiA6IDEpLFxuICAgICAgICBtYXBTdGF0ZS5oZWlnaHRcbiAgICAgICk7XG5cbiAgICAgIHJldHVybiBjYWxjdWxhdGVkU2NhbGUgPiAwID8gY2FsY3VsYXRlZFNjYWxlIDogMTtcbiAgICB9LCBbXG4gICAgICBpbWFnZVNpemUuc2NhbGUsXG4gICAgICBpbWFnZVNpemUuaW1hZ2VXLFxuICAgICAgaW1hZ2VTaXplLmltYWdlSCxcbiAgICAgIG1hcFN0YXRlLndpZHRoLFxuICAgICAgbWFwU3RhdGUuaGVpZ2h0LFxuICAgICAgbWFwU3RhdGUuaXNTcGxpdFxuICAgIF0pO1xuXG4gICAgLy8gTWVtb2l6ZSB0aGUgbGVnZW5kIHpvb20gY2FsY3VsYXRpb24gYmFzZWQgb24gZXhwb3J0IGhlaWdodFxuICAgIGNvbnN0IGxlZ2VuZFpvb20gPSB1c2VNZW1vKCgpID0+IHtcbiAgICAgIHJldHVybiBjYWxjdWxhdGVMZWdlbmRab29tKGltYWdlU2l6ZS5pbWFnZUgpO1xuICAgIH0sIFtpbWFnZVNpemUuaW1hZ2VIXSk7XG5cbiAgICAvLyBNZW1vaXplIHRoZSBtYXAgc3R5bGVcbiAgICBjb25zdCBzY2FsZWRNYXBTdHlsZSA9IHVzZU1lbW8oKCkgPT4ge1xuICAgICAgY29uc3QgbWFwU3R5bGUgPSBtYXBGaWVsZHMubWFwU3R5bGU7XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5tYXBTdHlsZSxcbiAgICAgICAgYm90dG9tTWFwU3R5bGU6IHNjYWxlTWFwU3R5bGVCeVJlc29sdXRpb24obWFwU3R5bGUuYm90dG9tTWFwU3R5bGUsIHNjYWxlKSxcbiAgICAgICAgdG9wTWFwU3R5bGU6IHNjYWxlTWFwU3R5bGVCeVJlc29sdXRpb24obWFwU3R5bGUudG9wTWFwU3R5bGUsIHNjYWxlKVxuICAgICAgfTtcbiAgICB9LCBbbWFwRmllbGRzLm1hcFN0eWxlLCBzY2FsZV0pO1xuXG4gICAgLy8gTWVtb2l6ZSB0aGUgcmV0cmlldmVOZXdTY3JlZW5zaG90IGNhbGxiYWNrXG4gICAgY29uc3QgZGVib3VuY2VkU2NyZWVuc2hvdCA9IHVzZU1lbW8oXG4gICAgICAoKSA9PlxuICAgICAgICBkZWJvdW5jZSgoKSA9PiB7XG4gICAgICAgICAgaWYgKHBsb3R0aW5nQXJlYVJlZi5jdXJyZW50KSB7XG4gICAgICAgICAgICBjb252ZXJ0VG9QbmcocGxvdHRpbmdBcmVhUmVmLmN1cnJlbnQsIHtcbiAgICAgICAgICAgICAgZmlsdGVyOiBET01fRklMVEVSX0ZVTkMsXG4gICAgICAgICAgICAgIHdpZHRoOiBpbWFnZVNpemUuaW1hZ2VXLFxuICAgICAgICAgICAgICBoZWlnaHQ6IGltYWdlU2l6ZS5pbWFnZUgsXG4gICAgICAgICAgICAgIGVzY2FwZVhodG1sRm9yV2VicGFja1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgLnRoZW4oc2V0RXhwb3J0SW1hZ2VEYXRhVXJpKVxuICAgICAgICAgICAgICAuY2F0Y2goZXJyID0+IHtcbiAgICAgICAgICAgICAgICBzZXRFeHBvcnRJbWFnZUVycm9yKGVycik7XG4gICAgICAgICAgICAgICAgaWYgKGVuYWJsZUVycm9yTm90aWZpY2F0aW9uKSB7XG4gICAgICAgICAgICAgICAgICBhZGROb3RpZmljYXRpb24oZXhwb3J0SW1hZ2VFcnJvcih7ZXJyfSkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9LCA1MDApLFxuICAgICAgW1xuICAgICAgICBpbWFnZVNpemUuaW1hZ2VXLFxuICAgICAgICBpbWFnZVNpemUuaW1hZ2VILFxuICAgICAgICBlc2NhcGVYaHRtbEZvcldlYnBhY2ssXG4gICAgICAgIHNldEV4cG9ydEltYWdlRGF0YVVyaSxcbiAgICAgICAgc2V0RXhwb3J0SW1hZ2VFcnJvcixcbiAgICAgICAgZW5hYmxlRXJyb3JOb3RpZmljYXRpb24sXG4gICAgICAgIGFkZE5vdGlmaWNhdGlvblxuICAgICAgXVxuICAgICk7XG5cbiAgICBjb25zdCByZXRyaWV2ZU5ld1NjcmVlbnNob3QgPSB1c2VDYWxsYmFjayhkZWJvdW5jZWRTY3JlZW5zaG90LCBbZGVib3VuY2VkU2NyZWVuc2hvdF0pO1xuXG4gICAgY29uc3QgdHJ5U2NyZWVuc2hvdCA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICAgIGlmIChtYXBTdHlsZUxvYWRlZFJlZi5jdXJyZW50ICYmICFkZWNrTGF5ZXJzTG9hZGluZ1JlZi5jdXJyZW50KSB7XG4gICAgICAgIHNjcmVlbnNob3RUYWtlblJlZi5jdXJyZW50ID0gdHJ1ZTtcbiAgICAgICAgcmV0cmlldmVOZXdTY3JlZW5zaG90KCk7XG4gICAgICB9XG4gICAgfSwgW3JldHJpZXZlTmV3U2NyZWVuc2hvdF0pO1xuXG4gICAgLy8gRmFsbGJhY2s6IGlmIGxheWVycyBuZXZlciBmaW5pc2ggbG9hZGluZywgY2FwdHVyZSBhZnRlciB0aW1lb3V0XG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgIGNvbnN0IHRpbWVyID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIGlmICghc2NyZWVuc2hvdFRha2VuUmVmLmN1cnJlbnQpIHtcbiAgICAgICAgICBkZWNrTGF5ZXJzTG9hZGluZ1JlZi5jdXJyZW50ID0gZmFsc2U7XG4gICAgICAgICAgdHJ5U2NyZWVuc2hvdCgpO1xuICAgICAgICB9XG4gICAgICB9LCAzMDAwMCk7XG4gICAgICByZXR1cm4gKCkgPT4gY2xlYXJUaW1lb3V0KHRpbWVyKTtcbiAgICB9LCBbdHJ5U2NyZWVuc2hvdF0pO1xuXG4gICAgLy8gTWVtb2l6ZSB0aGUgb25NYXBSZW5kZXIgY2FsbGJhY2tcbiAgICBjb25zdCBkZWJvdW5jZWRNYXBSZW5kZXIgPSB1c2VNZW1vKFxuICAgICAgKCkgPT5cbiAgICAgICAgZGVib3VuY2UobWFwID0+IHtcbiAgICAgICAgICBpZiAobWFwLmlzU3R5bGVMb2FkZWQoKSkge1xuICAgICAgICAgICAgbWFwU3R5bGVMb2FkZWRSZWYuY3VycmVudCA9IHRydWU7XG4gICAgICAgICAgICB0cnlTY3JlZW5zaG90KCk7XG4gICAgICAgICAgfVxuICAgICAgICB9LCA1MDApLFxuICAgICAgW3RyeVNjcmVlbnNob3RdXG4gICAgKTtcblxuICAgIGNvbnN0IG9uTWFwUmVuZGVyID0gdXNlQ2FsbGJhY2soZGVib3VuY2VkTWFwUmVuZGVyLCBbZGVib3VuY2VkTWFwUmVuZGVyXSk7XG5cbiAgICBjb25zdCBkZWNrUmVuZGVyQ2FsbGJhY2tzID0gdXNlTWVtbyhcbiAgICAgICgpID0+ICh7XG4gICAgICAgIG9uRGVja0FmdGVyUmVuZGVyOiAoZGVja1Byb3BzOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPikgPT4ge1xuICAgICAgICAgIGNvbnN0IGxheWVycyA9IGRlY2tQcm9wcy5sYXllcnMgYXMgYW55W107XG4gICAgICAgICAgaWYgKCFsYXllcnMpIHJldHVybjtcbiAgICAgICAgICBjb25zdCBzdGlsbExvYWRpbmcgPSBhcmVBbnlEZWNrTGF5ZXJzTG9hZGluZyhsYXllcnMpO1xuICAgICAgICAgIGlmIChkZWNrTGF5ZXJzTG9hZGluZ1JlZi5jdXJyZW50ICYmICFzdGlsbExvYWRpbmcpIHtcbiAgICAgICAgICAgIGRlY2tMYXllcnNMb2FkaW5nUmVmLmN1cnJlbnQgPSBmYWxzZTtcbiAgICAgICAgICAgIHRyeVNjcmVlbnNob3QoKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgZGVja0xheWVyc0xvYWRpbmdSZWYuY3VycmVudCA9IHN0aWxsTG9hZGluZztcbiAgICAgICAgfVxuICAgICAgfSksXG4gICAgICBbdHJ5U2NyZWVuc2hvdF1cbiAgICApO1xuXG4gICAgLy8gSW5pdGlhbCBzZXR1cCBlZmZlY3RcbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgc2V0RXhwb3J0SW1hZ2VTZXR0aW5nKHtwcm9jZXNzaW5nOiB0cnVlfSk7XG4gICAgfSwgW3NldEV4cG9ydEltYWdlU2V0dGluZ10pO1xuXG4gICAgLy8gU2NyZWVuc2hvdCB1cGRhdGUgZWZmZWN0XG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgIGlmIChyYXRpbyAhPT0gdW5kZWZpbmVkIHx8IHJlc29sdXRpb24gIT09IHVuZGVmaW5lZCB8fCBsZWdlbmQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBzZXRFeHBvcnRJbWFnZVNldHRpbmcoe3Byb2Nlc3Npbmc6IHRydWV9KTtcbiAgICAgICAgdHJ5U2NyZWVuc2hvdCgpO1xuICAgICAgfVxuICAgIH0sIFtyYXRpbywgcmVzb2x1dGlvbiwgbGVnZW5kLCBzZXRFeHBvcnRJbWFnZVNldHRpbmcsIHRyeVNjcmVlbnNob3RdKTtcblxuICAgIC8vIE1lbW9pemUgc2l6ZSBjYWxjdWxhdGlvbnNcbiAgICBjb25zdCB7c2l6ZSwgd2lkdGgsIGhlaWdodH0gPSB1c2VNZW1vKCgpID0+IHtcbiAgICAgIGNvbnN0IHNpemUgPSB7XG4gICAgICAgIHdpZHRoOiBpbWFnZVNpemUuaW1hZ2VXIHx8IDEsXG4gICAgICAgIGhlaWdodDogaW1hZ2VTaXplLmltYWdlSCB8fCAxXG4gICAgICB9O1xuICAgICAgY29uc3QgaXNTcGxpdCA9IHNwbGl0TWFwcy5sZW5ndGggPiAxO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgc2l6ZSxcbiAgICAgICAgd2lkdGg6IHNpemUud2lkdGggLyAoaXNTcGxpdCA/IDIgOiAxKSxcbiAgICAgICAgaGVpZ2h0OiBzaXplLmhlaWdodFxuICAgICAgfTtcbiAgICB9LCBbaW1hZ2VTaXplLmltYWdlVywgaW1hZ2VTaXplLmltYWdlSCwgc3BsaXRNYXBzLmxlbmd0aF0pO1xuXG4gICAgLy8gTWVtb2l6ZSBtYXAgc3RhdGVcbiAgICBjb25zdCBuZXdNYXBTdGF0ZSA9IHVzZU1lbW8oKCkgPT4ge1xuICAgICAgY29uc3Qgem9vbU9mZnNldCA9IE1hdGgubG9nMihzY2FsZSkgfHwgMDtcbiAgICAgIGNvbnN0IGJhc2VNYXBTdGF0ZSA9IHtcbiAgICAgICAgLi4ubWFwU3RhdGUsXG4gICAgICAgIHdpZHRoLFxuICAgICAgICBoZWlnaHQsXG4gICAgICAgIHpvb206IG1hcFN0YXRlLnpvb20gKyB6b29tT2Zmc2V0LFxuICAgICAgICB6b29tT2Zmc2V0XG4gICAgICB9O1xuXG4gICAgICBpZiAoY2VudGVyKSB7XG4gICAgICAgIGNvbnN0IHJlbmRlcmVkTGF5ZXJzID0gbWFwRmllbGRzLnZpc1N0YXRlLmxheWVycy5maWx0ZXIoXG4gICAgICAgICAgKGxheWVyLCBpZHgpID0+XG4gICAgICAgICAgICBsYXllci5pZCAhPT0gR0VPQ09ERVJfTEFZRVJfSUQgJiZcbiAgICAgICAgICAgIGxheWVyLnNob3VsZFJlbmRlckxheWVyKG1hcEZpZWxkcy52aXNTdGF0ZS5sYXllckRhdGFbaWR4XSlcbiAgICAgICAgKTtcbiAgICAgICAgY29uc3QgYm91bmRzID0gZmluZE1hcEJvdW5kcyhyZW5kZXJlZExheWVycyk7XG4gICAgICAgIGNvbnN0IGNlbnRlckFuZFpvb20gPSBnZXRDZW50ZXJBbmRab29tRnJvbUJvdW5kcyhib3VuZHMsIHt3aWR0aCwgaGVpZ2h0fSk7XG4gICAgICAgIGlmIChjZW50ZXJBbmRab29tKSB7XG4gICAgICAgICAgY29uc3Qgem9vbSA9IE51bWJlci5pc0Zpbml0ZShjZW50ZXJBbmRab29tLnpvb20pID8gY2VudGVyQW5kWm9vbS56b29tIDogbWFwU3RhdGUuem9vbTtcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgLi4uYmFzZU1hcFN0YXRlLFxuICAgICAgICAgICAgbG9uZ2l0dWRlOiBjZW50ZXJBbmRab29tLmNlbnRlclswXSxcbiAgICAgICAgICAgIGxhdGl0dWRlOiBjZW50ZXJBbmRab29tLmNlbnRlclsxXSxcbiAgICAgICAgICAgIHpvb206IHpvb20gKyBOdW1iZXIoTWF0aC5sb2cyKHNjYWxlKSB8fCAwKVxuICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGJhc2VNYXBTdGF0ZTtcbiAgICB9LCBbbWFwU3RhdGUsIHdpZHRoLCBoZWlnaHQsIHNjYWxlLCBjZW50ZXIsIG1hcEZpZWxkcy52aXNTdGF0ZV0pO1xuXG4gICAgLy8gTWVtb2l6ZSBtYXAgcHJvcHNcbiAgICBjb25zdCBtYXBQcm9wcyA9IHVzZU1lbW8oXG4gICAgICAoKSA9PiAoe1xuICAgICAgICAuLi5tYXBGaWVsZHMsXG4gICAgICAgIG1hcFN0eWxlOiBzY2FsZWRNYXBTdHlsZSxcbiAgICAgICAgbWFwU3RhdGU6IG5ld01hcFN0YXRlLFxuICAgICAgICBtYXBDb250cm9sczoge1xuICAgICAgICAgIG1hcExlZ2VuZDoge1xuICAgICAgICAgICAgc2hvdzogQm9vbGVhbihsZWdlbmQpLFxuICAgICAgICAgICAgYWN0aXZlOiB0cnVlLFxuICAgICAgICAgICAgc2V0dGluZ3M6IG1hcEZpZWxkcy5tYXBDb250cm9scz8ubWFwTGVnZW5kPy5zZXR0aW5nc1xuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgb25NYXBSZW5kZXIsXG4gICAgICAgIGlzRXhwb3J0OiB0cnVlLFxuICAgICAgICBkZWNrR2xQcm9wczoge1xuICAgICAgICAgIC4uLm1hcEZpZWxkcy5kZWNrR2xQcm9wcyxcbiAgICAgICAgICBfaXNFeHBvcnQ6IHRydWUsXG4gICAgICAgICAgdXNlRGV2aWNlUGl4ZWxzOiBmYWxzZSxcbiAgICAgICAgICBkZXZpY2VQcm9wczoge1xuICAgICAgICAgICAgd2ViZ2w6IHtcbiAgICAgICAgICAgICAgcHJlc2VydmVEcmF3aW5nQnVmZmVyOiB0cnVlXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBkZWNrUmVuZGVyQ2FsbGJhY2tzLFxuICAgICAgICB2aXNTdGF0ZToge1xuICAgICAgICAgIC4uLm1hcEZpZWxkcy52aXNTdGF0ZSxcbiAgICAgICAgICBlZmZlY3RzOiBwbG90RWZmZWN0c1xuICAgICAgICB9LFxuICAgICAgICAvLyBhbGxvdyBvdmVycmlkaW5nIHRoZSBsZWdlbmQgcGFuZWwgbG9nbyBpbiBleHBvcnRcbiAgICAgICAgbG9nb0NvbXBvbmVudFxuICAgICAgfSksXG4gICAgICBbXG4gICAgICAgIG1hcEZpZWxkcyxcbiAgICAgICAgc2NhbGVkTWFwU3R5bGUsXG4gICAgICAgIG5ld01hcFN0YXRlLFxuICAgICAgICBsZWdlbmQsXG4gICAgICAgIG9uTWFwUmVuZGVyLFxuICAgICAgICBkZWNrUmVuZGVyQ2FsbGJhY2tzLFxuICAgICAgICBwbG90RWZmZWN0cyxcbiAgICAgICAgbG9nb0NvbXBvbmVudFxuICAgICAgXVxuICAgICk7XG5cbiAgICBjb25zdCBpc1NwbGl0ID0gc3BsaXRNYXBzLmxlbmd0aCA+IDE7XG4gICAgY29uc3QgbWFwQ29udGFpbmVycyA9ICFpc1NwbGl0ID8gKFxuICAgICAgPE1hcENvbnRhaW5lciBpbmRleD17MH0gcHJpbWFyeT17dHJ1ZX0gey4uLm1hcFByb3BzfSAvPlxuICAgICkgOiAoXG4gICAgICA8TWFwc0xheW91dCBjbGFzc05hbWU9XCJwbG90LWNvbnRhaW5lci1tYXBzXCIgbWFwU3RhdGU9e25ld01hcFN0YXRlfT5cbiAgICAgICAge3NwbGl0TWFwcy5tYXAoKHNldHRpbmdzLCBpbmRleCkgPT4gKFxuICAgICAgICAgIDxNYXBDb250YWluZXIga2V5PXtpbmRleH0gaW5kZXg9e2luZGV4fSBwcmltYXJ5PXtpbmRleCA9PT0gMX0gey4uLm1hcFByb3BzfSAvPlxuICAgICAgICApKX1cbiAgICAgIDwvTWFwc0xheW91dD5cbiAgICApO1xuXG4gICAgcmV0dXJuIChcbiAgICAgIDxTdHlsZWRQbG90Q29udGFpbmVyIGNsYXNzTmFtZT1cImV4cG9ydC1tYXAtaW5zdGFuY2VcIiAkbGVnZW5kWm9vbT17bGVnZW5kWm9vbX0+XG4gICAgICAgIDxTdHlsZWRNYXBDb250YWluZXIgcmVmPXtwbG90dGluZ0FyZWFSZWZ9IHdpZHRoPXtzaXplLndpZHRofSBoZWlnaHQ9e3NpemUuaGVpZ2h0fT5cbiAgICAgICAgICA8TWFwVmlld1N0YXRlQ29udGV4dFByb3ZpZGVyIG1hcFN0YXRlPXtuZXdNYXBTdGF0ZX0+XG4gICAgICAgICAgICB7bWFwQ29udGFpbmVyc31cbiAgICAgICAgICA8L01hcFZpZXdTdGF0ZUNvbnRleHRQcm92aWRlcj5cbiAgICAgICAgPC9TdHlsZWRNYXBDb250YWluZXI+XG4gICAgICA8L1N0eWxlZFBsb3RDb250YWluZXI+XG4gICAgKTtcbiAgfVxuXG4gIHJldHVybiBSZWFjdC5tZW1vKFBsb3RDb250YWluZXIpO1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7QUFJQSxJQUFBQSxNQUFBLEdBQUFDLHVCQUFBLENB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
|
|
318
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfc3R5bGVkQ29tcG9uZW50cyIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfZGVib3VuY2UiLCJfdXRpbHMiLCJfcmVkdWNlcnMiLCJfbWFwQ29udGFpbmVyIiwiX21hcHNMYXlvdXQiLCJfbWFwVmlld1N0YXRlQ29udGV4dCIsIl9jb25zdGFudHMiLCJfdGVtcGxhdGVPYmplY3QiLCJfdGVtcGxhdGVPYmplY3QyIiwiZSIsInQiLCJXZWFrTWFwIiwiciIsIm4iLCJfX2VzTW9kdWxlIiwibyIsImkiLCJmIiwiX19wcm90b19fIiwiX3R5cGVvZiIsImhhcyIsImdldCIsInNldCIsIl90IiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJvd25LZXlzIiwia2V5cyIsImdldE93blByb3BlcnR5U3ltYm9scyIsImZpbHRlciIsImVudW1lcmFibGUiLCJwdXNoIiwiYXBwbHkiLCJfb2JqZWN0U3ByZWFkIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwiZm9yRWFjaCIsIl9kZWZpbmVQcm9wZXJ0eTIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzIiwiZGVmaW5lUHJvcGVydGllcyIsIkNMQVNTX0ZJTFRFUiIsIkRPTV9GSUxURVJfRlVOQyIsIm5vZGUiLCJjbGFzc05hbWUiLCJjbGFzc2VzIiwic3BsaXQiLCJzb21lIiwiY2xzIiwiaW5jbHVkZXMiLCJPVVRfT0ZfU0NSRUVOX1BPU0lUSU9OIiwiY2FsY3VsYXRlTGVnZW5kWm9vbSIsImhlaWdodCIsImJhc2VIZWlnaHQiLCJtaW5ab29tIiwibWF4Wm9vbSIsIk51bWJlciIsImlzRmluaXRlIiwiem9vbUZhY3RvciIsIk1hdGgiLCJtYXgiLCJtaW4iLCJQbG90Q29udGFpbmVyRmFjdG9yeSIsImRlcHMiLCJNYXBDb250YWluZXJGYWN0b3J5IiwiTWFwc0xheW91dEZhY3RvcnkiLCJTdHlsZWRQbG90Q29udGFpbmVyIiwic3R5bGVkIiwiZGl2IiwiX3RhZ2dlZFRlbXBsYXRlTGl0ZXJhbDIiLCJwcm9wcyIsIiRsZWdlbmRab29tIiwiU3R5bGVkTWFwQ29udGFpbmVyIiwid2lkdGgiLCJNYXBDb250YWluZXIiLCJNYXBzTGF5b3V0IiwiUGxvdENvbnRhaW5lciIsIl9yZWYiLCJyYXRpbyIsInJlc29sdXRpb24iLCJfcmVmJGxlZ2VuZCIsImxlZ2VuZCIsImNlbnRlciIsImltYWdlU2l6ZSIsImVzY2FwZVhodG1sRm9yV2VicGFjayIsIm1hcEZpZWxkcyIsIl9yZWYkc3BsaXRNYXBzIiwic3BsaXRNYXBzIiwic2V0RXhwb3J0SW1hZ2VTZXR0aW5nIiwic2V0RXhwb3J0SW1hZ2VEYXRhVXJpIiwic2V0RXhwb3J0SW1hZ2VFcnJvciIsImFkZE5vdGlmaWNhdGlvbiIsImVuYWJsZUVycm9yTm90aWZpY2F0aW9uIiwibG9nb0NvbXBvbmVudCIsInBsb3R0aW5nQXJlYVJlZiIsInVzZVJlZiIsIl91c2VTdGF0ZSIsInVzZVN0YXRlIiwidmlzU3RhdGUiLCJlZmZlY3RzIiwibWFwIiwiZWZmZWN0IiwiY2xvbmUiLCJfdXNlU3RhdGUyIiwiX3NsaWNlZFRvQXJyYXkyIiwicGxvdEVmZmVjdHMiLCJtYXBTdGF0ZSIsImRlY2tMYXllcnNMb2FkaW5nUmVmIiwibWFwU3R5bGVMb2FkZWRSZWYiLCJzY3JlZW5zaG90VGFrZW5SZWYiLCJzY2FsZSIsInVzZU1lbW8iLCJjYWxjdWxhdGVkU2NhbGUiLCJnZXRTY2FsZUZyb21JbWFnZVNpemUiLCJpbWFnZVciLCJpbWFnZUgiLCJpc1NwbGl0IiwibGVnZW5kWm9vbSIsInNjYWxlZE1hcFN0eWxlIiwibWFwU3R5bGUiLCJib3R0b21NYXBTdHlsZSIsInNjYWxlTWFwU3R5bGVCeVJlc29sdXRpb24iLCJ0b3BNYXBTdHlsZSIsImRlYm91bmNlZFNjcmVlbnNob3QiLCJkZWJvdW5jZSIsImN1cnJlbnQiLCJjb252ZXJ0VG9QbmciLCJ0aGVuIiwiZXJyIiwiZXhwb3J0SW1hZ2VFcnJvciIsInJldHJpZXZlTmV3U2NyZWVuc2hvdCIsInVzZUNhbGxiYWNrIiwidHJ5U2NyZWVuc2hvdCIsInVzZUVmZmVjdCIsInRpbWVyIiwic2V0VGltZW91dCIsImNsZWFyVGltZW91dCIsImRlYm91bmNlZE1hcFJlbmRlciIsImlzU3R5bGVMb2FkZWQiLCJvbk1hcFJlbmRlciIsImRlY2tSZW5kZXJDYWxsYmFja3MiLCJvbkRlY2tBZnRlclJlbmRlciIsImRlY2tQcm9wcyIsImxheWVycyIsInN0aWxsTG9hZGluZyIsImFyZUFueURlY2tMYXllcnNMb2FkaW5nIiwicHJvY2Vzc2luZyIsInVuZGVmaW5lZCIsIl91c2VNZW1vIiwic2l6ZSIsIm5ld01hcFN0YXRlIiwiem9vbU9mZnNldCIsImxvZzIiLCJiYXNlTWFwU3RhdGUiLCJ6b29tIiwicmVuZGVyZWRMYXllcnMiLCJsYXllciIsImlkeCIsImlkIiwiR0VPQ09ERVJfTEFZRVJfSUQiLCJzaG91bGRSZW5kZXJMYXllciIsImxheWVyRGF0YSIsImJvdW5kcyIsImZpbmRNYXBCb3VuZHMiLCJjZW50ZXJBbmRab29tIiwiZ2V0Q2VudGVyQW5kWm9vbUZyb21Cb3VuZHMiLCJsb25naXR1ZGUiLCJsYXRpdHVkZSIsIm1hcFByb3BzIiwiX21hcEZpZWxkcyRtYXBDb250cm9sIiwibWFwQ29udHJvbHMiLCJtYXBMZWdlbmQiLCJzaG93IiwiQm9vbGVhbiIsImFjdGl2ZSIsInNldHRpbmdzIiwiaXNFeHBvcnQiLCJkZWNrR2xQcm9wcyIsIl9pc0V4cG9ydCIsInVzZURldmljZVBpeGVscyIsImRldmljZVByb3BzIiwid2ViZ2wiLCJwcmVzZXJ2ZURyYXdpbmdCdWZmZXIiLCJtYXBDb250YWluZXJzIiwiY3JlYXRlRWxlbWVudCIsIl9leHRlbmRzMiIsImluZGV4IiwicHJpbWFyeSIsImtleSIsInJlZiIsIk1hcFZpZXdTdGF0ZUNvbnRleHRQcm92aWRlciIsIlJlYWN0IiwibWVtbyJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wbG90LWNvbnRhaW5lci50c3giXSwic291cmNlc0NvbnRlbnQiOlsiLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVFxuLy8gQ29weXJpZ2h0IGNvbnRyaWJ1dG9ycyB0byB0aGUga2VwbGVyLmdsIHByb2plY3RcblxuLy8gbGlicmFyaWVzXG5pbXBvcnQgUmVhY3QsIHt1c2VSZWYsIHVzZUVmZmVjdCwgdXNlU3RhdGUsIHVzZUNhbGxiYWNrLCB1c2VNZW1vfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgc3R5bGVkIGZyb20gJ3N0eWxlZC1jb21wb25lbnRzJztcbmltcG9ydCBkZWJvdW5jZSBmcm9tICdlcy10b29sa2l0L2NvbXBhdC9kZWJvdW5jZSc7XG5pbXBvcnQge1xuICBleHBvcnRJbWFnZUVycm9yLFxuICBzY2FsZU1hcFN0eWxlQnlSZXNvbHV0aW9uLFxuICBnZXRDZW50ZXJBbmRab29tRnJvbUJvdW5kcyxcbiAgY29udmVydFRvUG5nLFxuICBnZXRTY2FsZUZyb21JbWFnZVNpemVcbn0gZnJvbSAnQGtlcGxlci5nbC91dGlscyc7XG5pbXBvcnQge2ZpbmRNYXBCb3VuZHMsIGFyZUFueURlY2tMYXllcnNMb2FkaW5nfSBmcm9tICdAa2VwbGVyLmdsL3JlZHVjZXJzJztcbmltcG9ydCBNYXBDb250YWluZXJGYWN0b3J5IGZyb20gJy4vbWFwLWNvbnRhaW5lcic7XG5pbXBvcnQgTWFwc0xheW91dEZhY3RvcnkgZnJvbSAnLi9tYXBzLWxheW91dCc7XG5pbXBvcnQge01hcFZpZXdTdGF0ZUNvbnRleHRQcm92aWRlcn0gZnJvbSAnLi9tYXAtdmlldy1zdGF0ZS1jb250ZXh0JztcblxuaW1wb3J0IHtHRU9DT0RFUl9MQVlFUl9JRH0gZnJvbSAnQGtlcGxlci5nbC9jb25zdGFudHMnO1xuaW1wb3J0IHtFZmZlY3QsIFNwbGl0TWFwLCBFeHBvcnRJbWFnZX0gZnJvbSAnQGtlcGxlci5nbC90eXBlcyc7XG5pbXBvcnQge1xuICBBY3Rpb25IYW5kbGVyLFxuICBhZGROb3RpZmljYXRpb24sXG4gIHNldEV4cG9ydEltYWdlRGF0YVVyaSxcbiAgc2V0RXhwb3J0SW1hZ2VFcnJvcixcbiAgc2V0RXhwb3J0SW1hZ2VTZXR0aW5nXG59IGZyb20gJ0BrZXBsZXIuZ2wvYWN0aW9ucyc7XG5pbXBvcnQge21hcEZpZWxkc1NlbGVjdG9yfSBmcm9tICcuL2tlcGxlci1nbCc7XG5cbmNvbnN0IENMQVNTX0ZJTFRFUiA9IFtcbiAgJ21hcGxpYnJlZ2wtY29udHJvbC1jb250YWluZXInLFxuICAnbWFwYm94Z2wtY29udHJvbC1jb250YWluZXInLFxuICAnYXR0cml0aW9uLWxpbmsnLFxuICAnYXR0cml0aW9uLWxvZ28nLFxuICAnbWFwLWNvbnRyb2xfX3BhbmVsLXNwbGl0LXZpZXdwb3J0LXRvb2xzJyxcbiAgJ21hcC1uYXZpZ2F0aW9uLWNvbnRyb2wnXG5dO1xuY29uc3QgRE9NX0ZJTFRFUl9GVU5DID0gbm9kZSA9PiB7XG4gIGNvbnN0IGNsYXNzTmFtZSA9IHR5cGVvZiBub2RlLmNsYXNzTmFtZSA9PT0gJ3N0cmluZycgPyBub2RlLmNsYXNzTmFtZSA6ICcnO1xuICBpZiAoIWNsYXNzTmFtZSkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG4gIGNvbnN0IGNsYXNzZXMgPSBjbGFzc05hbWUuc3BsaXQoL1xccysvKTtcbiAgcmV0dXJuICFDTEFTU19GSUxURVIuc29tZShjbHMgPT4gY2xhc3Nlcy5pbmNsdWRlcyhjbHMpKTtcbn07XG5jb25zdCBPVVRfT0ZfU0NSRUVOX1BPU0lUSU9OID0gLTk5OTk7XG5cbi8qKlxuICogQ2FsY3VsYXRlcyBsZWdlbmQgem9vbSBiYXNlZCBvbiBleHBvcnQgaGVpZ2h0XG4gKiBNYXBzIGV4cG9ydCBoZWlnaHQgdG8gYSB6b29tIGZhY3RvciBiZXR3ZWVuIDAuNSBhbmQgM1xuICogQHBhcmFtIGhlaWdodCAtIGV4cG9ydCBoZWlnaHQgaW4gcGl4ZWxzXG4gKiBAcmV0dXJucyB6b29tIGZhY3RvciBmb3IgbGVnZW5kIHBhbmVsXG4gKi9cbmZ1bmN0aW9uIGNhbGN1bGF0ZUxlZ2VuZFpvb20oaGVpZ2h0OiBudW1iZXIpOiBudW1iZXIge1xuICBjb25zdCBiYXNlSGVpZ2h0ID0gMTA4MDsgLy8gMXggem9vbSByZWZlcmVuY2UgaGVpZ2h0XG4gIGNvbnN0IG1pblpvb20gPSAwLjU7XG4gIGNvbnN0IG1heFpvb20gPSAzO1xuXG4gIC8vIEZvciBpbml0aWFsL2ludmFsaWQgaGVpZ2h0cywgYXZvaWQgc2hyaW5raW5nIHRoZSBsZWdlbmQ7IHVzZSBubyBzY2FsaW5nLlxuICBpZiAoIU51bWJlci5pc0Zpbml0ZShoZWlnaHQpIHx8IGhlaWdodCA8PSAwKSB7XG4gICAgcmV0dXJuIDE7XG4gIH1cblxuICAvLyBMaW5lYXIgbWFwcGluZzogaGVpZ2h0IC8gYmFzZUhlaWdodCBnaXZlcyB1cyB0aGUgc2NhbGVcbiAgY29uc3Qgem9vbUZhY3RvciA9IGhlaWdodCAvIGJhc2VIZWlnaHQ7XG4gIC8vIENsYW1wIGJldHdlZW4gbWluIGFuZCBtYXhcbiAgcmV0dXJuIE1hdGgubWF4KG1pblpvb20sIE1hdGgubWluKG1heFpvb20sIHpvb21GYWN0b3IpKTtcbn1cblxuUGxvdENvbnRhaW5lckZhY3RvcnkuZGVwcyA9IFtNYXBDb250YWluZXJGYWN0b3J5LCBNYXBzTGF5b3V0RmFjdG9yeV07XG5cbi8vIFJlbW92ZSBtYXBib3ggbG9nbyBpbiBleHBvcnRlZCBtYXAsIGJlY2F1c2UgaXQgY29udGFpbnMgbm9uLWFzY2lpIGNoYXJhY3RlcnNcbi8vIFJlbW92ZSBzcGxpdCB2aWV3cG9ydCBVSSBjb250cm9scyBmcm9tIGV4cG9ydGVkIGltYWdlcyB3aGVuIHRoZSBsZWdlbmQgaXMgc2hvd25cbmludGVyZmFjZSBTdHlsZWRQbG90Q29udGFpbmVyUHJvcHMge1xuICAkbGVnZW5kWm9vbT86IG51bWJlcjtcbn1cblxuY29uc3QgU3R5bGVkUGxvdENvbnRhaW5lciA9IHN0eWxlZC5kaXY8U3R5bGVkUGxvdENvbnRhaW5lclByb3BzPmBcbiAgLm1hcGxpYnJlZ2wtY3RybC1ib3R0b20tbGVmdCxcbiAgLm1hcGxpYnJlZ2wtY3RybC1ib3R0b20tcmlnaHQsXG4gIC5tYXBsaWJyZS1hdHRyaWJ1dGlvbi1jb250YWluZXIsXG4gIC5tYXBib3hnbC1jdHJsLWJvdHRvbS1sZWZ0LFxuICAubWFwYm94Z2wtY3RybC1ib3R0b20tcmlnaHQsXG4gIC5tYXBib3gtYXR0cmlidXRpb24tY29udGFpbmVyLFxuICAubWFwLWNvbnRyb2xfX3BhbmVsLXNwbGl0LXZpZXdwb3J0LXRvb2xzLFxuICAubWFwLW5hdmlnYXRpb24tY29udHJvbCB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgfVxuXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiAke09VVF9PRl9TQ1JFRU5fUE9TSVRJT059cHg7XG4gIGxlZnQ6ICR7T1VUX09GX1NDUkVFTl9QT1NJVElPTn1weDtcblxuICAvKiBBcHBseSB6b29tIHRvIGxlZ2VuZCBwYW5lbCBiYXNlZCBvbiBleHBvcnQgaGVpZ2h0ICovXG4gIC5tYXAtY29udHJvbC1wYW5lbCB7XG4gICAgem9vbTogJHtwcm9wcyA9PiBwcm9wcy4kbGVnZW5kWm9vbSB8fCAxfSAhaW1wb3J0YW50O1xuICB9XG5gO1xuXG5pbnRlcmZhY2UgU3R5bGVkTWFwQ29udGFpbmVyUHJvcHMge1xuICB3aWR0aD86IG51bWJlcjtcbiAgaGVpZ2h0PzogbnVtYmVyO1xufVxuXG5jb25zdCBTdHlsZWRNYXBDb250YWluZXIgPSBzdHlsZWQuZGl2PFN0eWxlZE1hcENvbnRhaW5lclByb3BzPmBcbiAgd2lkdGg6ICR7cHJvcHMgPT4gcHJvcHMud2lkdGh9cHg7XG4gIGhlaWdodDogJHtwcm9wcyA9PiBwcm9wcy5oZWlnaHR9cHg7XG4gIGRpc3BsYXk6IGZsZXg7XG5gO1xuXG5pbnRlcmZhY2UgUGxvdENvbnRhaW5lclByb3BzIHtcbiAgLy8gSW1hZ2UgZXhwb3J0IHNldHRpbmdzXG4gIHJhdGlvPzogc3RyaW5nO1xuICByZXNvbHV0aW9uPzogc3RyaW5nO1xuICBsZWdlbmQ/OiBib29sZWFuO1xuICBjZW50ZXI/OiBib29sZWFuO1xuICBpbWFnZVNpemU6IEV4cG9ydEltYWdlWydpbWFnZVNpemUnXTtcbiAgZXNjYXBlWGh0bWxGb3JXZWJwYWNrPzogYm9vbGVhbjtcblxuICAvLyBNYXAgc2V0dGluZ3NcbiAgbWFwRmllbGRzOiBSZXR1cm5UeXBlPHR5cGVvZiBtYXBGaWVsZHNTZWxlY3Rvcj47XG4gIHNwbGl0TWFwcz86IFNwbGl0TWFwW107XG5cbiAgLy8gQ2FsbGJhY2tzXG4gIHNldEV4cG9ydEltYWdlU2V0dGluZzogdHlwZW9mIHNldEV4cG9ydEltYWdlU2V0dGluZztcbiAgc2V0RXhwb3J0SW1hZ2VEYXRhVXJpOiB0eXBlb2Ygc2V0RXhwb3J0SW1hZ2VEYXRhVXJpO1xuICBzZXRFeHBvcnRJbWFnZUVycm9yOiB0eXBlb2Ygc2V0RXhwb3J0SW1hZ2VFcnJvcjtcbiAgYWRkTm90aWZpY2F0aW9uOiBBY3Rpb25IYW5kbGVyPHR5cGVvZiBhZGROb3RpZmljYXRpb24+O1xuXG4gIC8vIEZsYWdzXG4gIGVuYWJsZUVycm9yTm90aWZpY2F0aW9uPzogYm9vbGVhbjtcblxuICAvLyBPcHRpb25hbDogb3ZlcnJpZGUgbGVnZW5kIGhlYWRlciBsb2dvIGR1cmluZyBleHBvcnRcbiAgbG9nb0NvbXBvbmVudD86IFJlYWN0LlJlYWN0Tm9kZTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gUGxvdENvbnRhaW5lckZhY3RvcnkoXG4gIE1hcENvbnRhaW5lcjogUmV0dXJuVHlwZTx0eXBlb2YgTWFwQ29udGFpbmVyRmFjdG9yeT4sXG4gIE1hcHNMYXlvdXQ6IFJldHVyblR5cGU8dHlwZW9mIE1hcHNMYXlvdXRGYWN0b3J5PlxuKTogUmVhY3QuQ29tcG9uZW50VHlwZTxQbG90Q29udGFpbmVyUHJvcHM+IHtcbiAgZnVuY3Rpb24gUGxvdENvbnRhaW5lcih7XG4gICAgLy8gSW1hZ2UgZXhwb3J0IHNldHRpbmdzXG4gICAgcmF0aW8sXG4gICAgcmVzb2x1dGlvbixcbiAgICBsZWdlbmQgPSBmYWxzZSxcbiAgICBjZW50ZXIsXG4gICAgaW1hZ2VTaXplLFxuICAgIGVzY2FwZVhodG1sRm9yV2VicGFjayxcblxuICAgIC8vIE1hcCBzZXR0aW5nc1xuICAgIG1hcEZpZWxkcyxcbiAgICBzcGxpdE1hcHMgPSBbXSxcblxuICAgIC8vIENhbGxiYWNrc1xuICAgIHNldEV4cG9ydEltYWdlU2V0dGluZyxcbiAgICBzZXRFeHBvcnRJbWFnZURhdGFVcmksXG4gICAgc2V0RXhwb3J0SW1hZ2VFcnJvcixcbiAgICBhZGROb3RpZmljYXRpb24sXG5cbiAgICAvLyBGbGFnc1xuICAgIGVuYWJsZUVycm9yTm90aWZpY2F0aW9uLFxuICAgIGxvZ29Db21wb25lbnRcbiAgfTogUGxvdENvbnRhaW5lclByb3BzKSB7XG4gICAgY29uc3QgcGxvdHRpbmdBcmVhUmVmID0gdXNlUmVmPEhUTUxEaXZFbGVtZW50PihudWxsKTtcbiAgICBjb25zdCBbcGxvdEVmZmVjdHNdID0gdXNlU3RhdGU8RWZmZWN0W10+KCgpID0+XG4gICAgICBtYXBGaWVsZHMudmlzU3RhdGUuZWZmZWN0cy5tYXAoZWZmZWN0ID0+IGVmZmVjdC5jbG9uZSgpKVxuICAgICk7XG5cbiAgICBjb25zdCB7bWFwU3RhdGV9ID0gbWFwRmllbGRzO1xuXG4gICAgY29uc3QgZGVja0xheWVyc0xvYWRpbmdSZWYgPSB1c2VSZWYodHJ1ZSk7XG4gICAgY29uc3QgbWFwU3R5bGVMb2FkZWRSZWYgPSB1c2VSZWYoZmFsc2UpO1xuICAgIGNvbnN0IHNjcmVlbnNob3RUYWtlblJlZiA9IHVzZVJlZihmYWxzZSk7XG5cbiAgICAvLyBNZW1vaXplIHRoZSBzY2FsZSBjYWxjdWxhdGlvblxuICAgIGNvbnN0IHNjYWxlID0gdXNlTWVtbygoKSA9PiB7XG4gICAgICBpZiAoaW1hZ2VTaXplLnNjYWxlKSB7XG4gICAgICAgIHJldHVybiBpbWFnZVNpemUuc2NhbGU7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGNhbGN1bGF0ZWRTY2FsZSA9IGdldFNjYWxlRnJvbUltYWdlU2l6ZShcbiAgICAgICAgaW1hZ2VTaXplLmltYWdlVyxcbiAgICAgICAgaW1hZ2VTaXplLmltYWdlSCxcbiAgICAgICAgbWFwU3RhdGUud2lkdGggKiAobWFwU3RhdGUuaXNTcGxpdCA/IDIgOiAxKSxcbiAgICAgICAgbWFwU3RhdGUuaGVpZ2h0XG4gICAgICApO1xuXG4gICAgICByZXR1cm4gY2FsY3VsYXRlZFNjYWxlID4gMCA/IGNhbGN1bGF0ZWRTY2FsZSA6IDE7XG4gICAgfSwgW1xuICAgICAgaW1hZ2VTaXplLnNjYWxlLFxuICAgICAgaW1hZ2VTaXplLmltYWdlVyxcbiAgICAgIGltYWdlU2l6ZS5pbWFnZUgsXG4gICAgICBtYXBTdGF0ZS53aWR0aCxcbiAgICAgIG1hcFN0YXRlLmhlaWdodCxcbiAgICAgIG1hcFN0YXRlLmlzU3BsaXRcbiAgICBdKTtcblxuICAgIC8vIE1lbW9pemUgdGhlIGxlZ2VuZCB6b29tIGNhbGN1bGF0aW9uIGJhc2VkIG9uIGV4cG9ydCBoZWlnaHRcbiAgICBjb25zdCBsZWdlbmRab29tID0gdXNlTWVtbygoKSA9PiB7XG4gICAgICByZXR1cm4gY2FsY3VsYXRlTGVnZW5kWm9vbShpbWFnZVNpemUuaW1hZ2VIKTtcbiAgICB9LCBbaW1hZ2VTaXplLmltYWdlSF0pO1xuXG4gICAgLy8gTWVtb2l6ZSB0aGUgbWFwIHN0eWxlXG4gICAgY29uc3Qgc2NhbGVkTWFwU3R5bGUgPSB1c2VNZW1vKCgpID0+IHtcbiAgICAgIGNvbnN0IG1hcFN0eWxlID0gbWFwRmllbGRzLm1hcFN0eWxlO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4ubWFwU3R5bGUsXG4gICAgICAgIGJvdHRvbU1hcFN0eWxlOiBzY2FsZU1hcFN0eWxlQnlSZXNvbHV0aW9uKG1hcFN0eWxlLmJvdHRvbU1hcFN0eWxlLCBzY2FsZSksXG4gICAgICAgIHRvcE1hcFN0eWxlOiBzY2FsZU1hcFN0eWxlQnlSZXNvbHV0aW9uKG1hcFN0eWxlLnRvcE1hcFN0eWxlLCBzY2FsZSlcbiAgICAgIH07XG4gICAgfSwgW21hcEZpZWxkcy5tYXBTdHlsZSwgc2NhbGVdKTtcblxuICAgIC8vIE1lbW9pemUgdGhlIHJldHJpZXZlTmV3U2NyZWVuc2hvdCBjYWxsYmFja1xuICAgIGNvbnN0IGRlYm91bmNlZFNjcmVlbnNob3QgPSB1c2VNZW1vKFxuICAgICAgKCkgPT5cbiAgICAgICAgZGVib3VuY2UoKCkgPT4ge1xuICAgICAgICAgIGlmIChwbG90dGluZ0FyZWFSZWYuY3VycmVudCkge1xuICAgICAgICAgICAgY29udmVydFRvUG5nKHBsb3R0aW5nQXJlYVJlZi5jdXJyZW50LCB7XG4gICAgICAgICAgICAgIGZpbHRlcjogRE9NX0ZJTFRFUl9GVU5DLFxuICAgICAgICAgICAgICB3aWR0aDogaW1hZ2VTaXplLmltYWdlVyxcbiAgICAgICAgICAgICAgaGVpZ2h0OiBpbWFnZVNpemUuaW1hZ2VILFxuICAgICAgICAgICAgICBlc2NhcGVYaHRtbEZvcldlYnBhY2tcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgIC50aGVuKHNldEV4cG9ydEltYWdlRGF0YVVyaSlcbiAgICAgICAgICAgICAgLmNhdGNoKGVyciA9PiB7XG4gICAgICAgICAgICAgICAgc2V0RXhwb3J0SW1hZ2VFcnJvcihlcnIpO1xuICAgICAgICAgICAgICAgIGlmIChlbmFibGVFcnJvck5vdGlmaWNhdGlvbikge1xuICAgICAgICAgICAgICAgICAgYWRkTm90aWZpY2F0aW9uKGV4cG9ydEltYWdlRXJyb3Ioe2Vycn0pKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfSwgNTAwKSxcbiAgICAgIFtcbiAgICAgICAgaW1hZ2VTaXplLmltYWdlVyxcbiAgICAgICAgaW1hZ2VTaXplLmltYWdlSCxcbiAgICAgICAgZXNjYXBlWGh0bWxGb3JXZWJwYWNrLFxuICAgICAgICBzZXRFeHBvcnRJbWFnZURhdGFVcmksXG4gICAgICAgIHNldEV4cG9ydEltYWdlRXJyb3IsXG4gICAgICAgIGVuYWJsZUVycm9yTm90aWZpY2F0aW9uLFxuICAgICAgICBhZGROb3RpZmljYXRpb25cbiAgICAgIF1cbiAgICApO1xuXG4gICAgY29uc3QgcmV0cmlldmVOZXdTY3JlZW5zaG90ID0gdXNlQ2FsbGJhY2soZGVib3VuY2VkU2NyZWVuc2hvdCwgW2RlYm91bmNlZFNjcmVlbnNob3RdKTtcblxuICAgIGNvbnN0IHRyeVNjcmVlbnNob3QgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgICBpZiAobWFwU3R5bGVMb2FkZWRSZWYuY3VycmVudCAmJiAhZGVja0xheWVyc0xvYWRpbmdSZWYuY3VycmVudCkge1xuICAgICAgICBzY3JlZW5zaG90VGFrZW5SZWYuY3VycmVudCA9IHRydWU7XG4gICAgICAgIHJldHJpZXZlTmV3U2NyZWVuc2hvdCgpO1xuICAgICAgfVxuICAgIH0sIFtyZXRyaWV2ZU5ld1NjcmVlbnNob3RdKTtcblxuICAgIC8vIEZhbGxiYWNrOiBpZiBsYXllcnMgbmV2ZXIgZmluaXNoIGxvYWRpbmcsIGNhcHR1cmUgYWZ0ZXIgdGltZW91dFxuICAgIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICBjb25zdCB0aW1lciA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICBpZiAoIXNjcmVlbnNob3RUYWtlblJlZi5jdXJyZW50KSB7XG4gICAgICAgICAgZGVja0xheWVyc0xvYWRpbmdSZWYuY3VycmVudCA9IGZhbHNlO1xuICAgICAgICAgIHRyeVNjcmVlbnNob3QoKTtcbiAgICAgICAgfVxuICAgICAgfSwgMzAwMDApO1xuICAgICAgcmV0dXJuICgpID0+IGNsZWFyVGltZW91dCh0aW1lcik7XG4gICAgfSwgW3RyeVNjcmVlbnNob3RdKTtcblxuICAgIC8vIE1lbW9pemUgdGhlIG9uTWFwUmVuZGVyIGNhbGxiYWNrXG4gICAgY29uc3QgZGVib3VuY2VkTWFwUmVuZGVyID0gdXNlTWVtbyhcbiAgICAgICgpID0+XG4gICAgICAgIGRlYm91bmNlKG1hcCA9PiB7XG4gICAgICAgICAgaWYgKG1hcC5pc1N0eWxlTG9hZGVkKCkpIHtcbiAgICAgICAgICAgIG1hcFN0eWxlTG9hZGVkUmVmLmN1cnJlbnQgPSB0cnVlO1xuICAgICAgICAgICAgdHJ5U2NyZWVuc2hvdCgpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSwgNTAwKSxcbiAgICAgIFt0cnlTY3JlZW5zaG90XVxuICAgICk7XG5cbiAgICBjb25zdCBvbk1hcFJlbmRlciA9IHVzZUNhbGxiYWNrKGRlYm91bmNlZE1hcFJlbmRlciwgW2RlYm91bmNlZE1hcFJlbmRlcl0pO1xuXG4gICAgY29uc3QgZGVja1JlbmRlckNhbGxiYWNrcyA9IHVzZU1lbW8oXG4gICAgICAoKSA9PiAoe1xuICAgICAgICBvbkRlY2tBZnRlclJlbmRlcjogKGRlY2tQcm9wczogUmVjb3JkPHN0cmluZywgdW5rbm93bj4pID0+IHtcbiAgICAgICAgICBjb25zdCBsYXllcnMgPSBkZWNrUHJvcHMubGF5ZXJzIGFzIGFueVtdO1xuICAgICAgICAgIGlmICghbGF5ZXJzKSByZXR1cm47XG4gICAgICAgICAgY29uc3Qgc3RpbGxMb2FkaW5nID0gYXJlQW55RGVja0xheWVyc0xvYWRpbmcobGF5ZXJzKTtcbiAgICAgICAgICBpZiAoZGVja0xheWVyc0xvYWRpbmdSZWYuY3VycmVudCAmJiAhc3RpbGxMb2FkaW5nKSB7XG4gICAgICAgICAgICBkZWNrTGF5ZXJzTG9hZGluZ1JlZi5jdXJyZW50ID0gZmFsc2U7XG4gICAgICAgICAgICB0cnlTY3JlZW5zaG90KCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGRlY2tMYXllcnNMb2FkaW5nUmVmLmN1cnJlbnQgPSBzdGlsbExvYWRpbmc7XG4gICAgICAgIH1cbiAgICAgIH0pLFxuICAgICAgW3RyeVNjcmVlbnNob3RdXG4gICAgKTtcblxuICAgIC8vIEluaXRpYWwgc2V0dXAgZWZmZWN0XG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgIHNldEV4cG9ydEltYWdlU2V0dGluZyh7cHJvY2Vzc2luZzogdHJ1ZX0pO1xuICAgIH0sIFtzZXRFeHBvcnRJbWFnZVNldHRpbmddKTtcblxuICAgIC8vIFNjcmVlbnNob3QgdXBkYXRlIGVmZmVjdFxuICAgIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICBpZiAocmF0aW8gIT09IHVuZGVmaW5lZCB8fCByZXNvbHV0aW9uICE9PSB1bmRlZmluZWQgfHwgbGVnZW5kICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgc2V0RXhwb3J0SW1hZ2VTZXR0aW5nKHtwcm9jZXNzaW5nOiB0cnVlfSk7XG4gICAgICAgIHRyeVNjcmVlbnNob3QoKTtcbiAgICAgIH1cbiAgICB9LCBbcmF0aW8sIHJlc29sdXRpb24sIGxlZ2VuZCwgc2V0RXhwb3J0SW1hZ2VTZXR0aW5nLCB0cnlTY3JlZW5zaG90XSk7XG5cbiAgICAvLyBNZW1vaXplIHNpemUgY2FsY3VsYXRpb25zXG4gICAgY29uc3Qge3NpemUsIHdpZHRoLCBoZWlnaHR9ID0gdXNlTWVtbygoKSA9PiB7XG4gICAgICBjb25zdCBzaXplID0ge1xuICAgICAgICB3aWR0aDogaW1hZ2VTaXplLmltYWdlVyB8fCAxLFxuICAgICAgICBoZWlnaHQ6IGltYWdlU2l6ZS5pbWFnZUggfHwgMVxuICAgICAgfTtcbiAgICAgIGNvbnN0IGlzU3BsaXQgPSBzcGxpdE1hcHMubGVuZ3RoID4gMTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHNpemUsXG4gICAgICAgIHdpZHRoOiBzaXplLndpZHRoIC8gKGlzU3BsaXQgPyAyIDogMSksXG4gICAgICAgIGhlaWdodDogc2l6ZS5oZWlnaHRcbiAgICAgIH07XG4gICAgfSwgW2ltYWdlU2l6ZS5pbWFnZVcsIGltYWdlU2l6ZS5pbWFnZUgsIHNwbGl0TWFwcy5sZW5ndGhdKTtcblxuICAgIC8vIE1lbW9pemUgbWFwIHN0YXRlXG4gICAgY29uc3QgbmV3TWFwU3RhdGUgPSB1c2VNZW1vKCgpID0+IHtcbiAgICAgIGNvbnN0IHpvb21PZmZzZXQgPSBNYXRoLmxvZzIoc2NhbGUpIHx8IDA7XG4gICAgICBjb25zdCBiYXNlTWFwU3RhdGUgPSB7XG4gICAgICAgIC4uLm1hcFN0YXRlLFxuICAgICAgICB3aWR0aCxcbiAgICAgICAgaGVpZ2h0LFxuICAgICAgICB6b29tOiBtYXBTdGF0ZS56b29tICsgem9vbU9mZnNldCxcbiAgICAgICAgem9vbU9mZnNldFxuICAgICAgfTtcblxuICAgICAgaWYgKGNlbnRlcikge1xuICAgICAgICBjb25zdCByZW5kZXJlZExheWVycyA9IG1hcEZpZWxkcy52aXNTdGF0ZS5sYXllcnMuZmlsdGVyKFxuICAgICAgICAgIChsYXllciwgaWR4KSA9PlxuICAgICAgICAgICAgbGF5ZXIuaWQgIT09IEdFT0NPREVSX0xBWUVSX0lEICYmXG4gICAgICAgICAgICBsYXllci5zaG91bGRSZW5kZXJMYXllcihtYXBGaWVsZHMudmlzU3RhdGUubGF5ZXJEYXRhW2lkeF0pXG4gICAgICAgICk7XG4gICAgICAgIGNvbnN0IGJvdW5kcyA9IGZpbmRNYXBCb3VuZHMocmVuZGVyZWRMYXllcnMpO1xuICAgICAgICBjb25zdCBjZW50ZXJBbmRab29tID0gZ2V0Q2VudGVyQW5kWm9vbUZyb21Cb3VuZHMoYm91bmRzLCB7d2lkdGgsIGhlaWdodH0pO1xuICAgICAgICBpZiAoY2VudGVyQW5kWm9vbSkge1xuICAgICAgICAgIGNvbnN0IHpvb20gPSBOdW1iZXIuaXNGaW5pdGUoY2VudGVyQW5kWm9vbS56b29tKSA/IGNlbnRlckFuZFpvb20uem9vbSA6IG1hcFN0YXRlLnpvb207XG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIC4uLmJhc2VNYXBTdGF0ZSxcbiAgICAgICAgICAgIGxvbmdpdHVkZTogY2VudGVyQW5kWm9vbS5jZW50ZXJbMF0sXG4gICAgICAgICAgICBsYXRpdHVkZTogY2VudGVyQW5kWm9vbS5jZW50ZXJbMV0sXG4gICAgICAgICAgICB6b29tOiB6b29tICsgTnVtYmVyKE1hdGgubG9nMihzY2FsZSkgfHwgMClcbiAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBiYXNlTWFwU3RhdGU7XG4gICAgfSwgW21hcFN0YXRlLCB3aWR0aCwgaGVpZ2h0LCBzY2FsZSwgY2VudGVyLCBtYXBGaWVsZHMudmlzU3RhdGVdKTtcblxuICAgIC8vIE1lbW9pemUgbWFwIHByb3BzXG4gICAgY29uc3QgbWFwUHJvcHMgPSB1c2VNZW1vKFxuICAgICAgKCkgPT4gKHtcbiAgICAgICAgLi4ubWFwRmllbGRzLFxuICAgICAgICBtYXBTdHlsZTogc2NhbGVkTWFwU3R5bGUsXG4gICAgICAgIG1hcFN0YXRlOiBuZXdNYXBTdGF0ZSxcbiAgICAgICAgbWFwQ29udHJvbHM6IHtcbiAgICAgICAgICBtYXBMZWdlbmQ6IHtcbiAgICAgICAgICAgIHNob3c6IEJvb2xlYW4obGVnZW5kKSxcbiAgICAgICAgICAgIGFjdGl2ZTogdHJ1ZSxcbiAgICAgICAgICAgIHNldHRpbmdzOiBtYXBGaWVsZHMubWFwQ29udHJvbHM/Lm1hcExlZ2VuZD8uc2V0dGluZ3NcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIG9uTWFwUmVuZGVyLFxuICAgICAgICBpc0V4cG9ydDogdHJ1ZSxcbiAgICAgICAgZGVja0dsUHJvcHM6IHtcbiAgICAgICAgICAuLi5tYXBGaWVsZHMuZGVja0dsUHJvcHMsXG4gICAgICAgICAgX2lzRXhwb3J0OiB0cnVlLFxuICAgICAgICAgIHVzZURldmljZVBpeGVsczogZmFsc2UsXG4gICAgICAgICAgZGV2aWNlUHJvcHM6IHtcbiAgICAgICAgICAgIHdlYmdsOiB7XG4gICAgICAgICAgICAgIHByZXNlcnZlRHJhd2luZ0J1ZmZlcjogdHJ1ZVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgZGVja1JlbmRlckNhbGxiYWNrcyxcbiAgICAgICAgdmlzU3RhdGU6IHtcbiAgICAgICAgICAuLi5tYXBGaWVsZHMudmlzU3RhdGUsXG4gICAgICAgICAgZWZmZWN0czogcGxvdEVmZmVjdHNcbiAgICAgICAgfSxcbiAgICAgICAgLy8gYWxsb3cgb3ZlcnJpZGluZyB0aGUgbGVnZW5kIHBhbmVsIGxvZ28gaW4gZXhwb3J0XG4gICAgICAgIGxvZ29Db21wb25lbnRcbiAgICAgIH0pLFxuICAgICAgW1xuICAgICAgICBtYXBGaWVsZHMsXG4gICAgICAgIHNjYWxlZE1hcFN0eWxlLFxuICAgICAgICBuZXdNYXBTdGF0ZSxcbiAgICAgICAgbGVnZW5kLFxuICAgICAgICBvbk1hcFJlbmRlcixcbiAgICAgICAgZGVja1JlbmRlckNhbGxiYWNrcyxcbiAgICAgICAgcGxvdEVmZmVjdHMsXG4gICAgICAgIGxvZ29Db21wb25lbnRcbiAgICAgIF1cbiAgICApO1xuXG4gICAgY29uc3QgaXNTcGxpdCA9IHNwbGl0TWFwcy5sZW5ndGggPiAxO1xuICAgIGNvbnN0IG1hcENvbnRhaW5lcnMgPSAhaXNTcGxpdCA/IChcbiAgICAgIDxNYXBDb250YWluZXIgaW5kZXg9ezB9IHByaW1hcnk9e3RydWV9IHsuLi5tYXBQcm9wc30gLz5cbiAgICApIDogKFxuICAgICAgPE1hcHNMYXlvdXQgY2xhc3NOYW1lPVwicGxvdC1jb250YWluZXItbWFwc1wiIG1hcFN0YXRlPXtuZXdNYXBTdGF0ZX0+XG4gICAgICAgIHtzcGxpdE1hcHMubWFwKChzZXR0aW5ncywgaW5kZXgpID0+IChcbiAgICAgICAgICA8TWFwQ29udGFpbmVyIGtleT17aW5kZXh9IGluZGV4PXtpbmRleH0gcHJpbWFyeT17aW5kZXggPT09IDF9IHsuLi5tYXBQcm9wc30gLz5cbiAgICAgICAgKSl9XG4gICAgICA8L01hcHNMYXlvdXQ+XG4gICAgKTtcblxuICAgIHJldHVybiAoXG4gICAgICA8U3R5bGVkUGxvdENvbnRhaW5lciBjbGFzc05hbWU9XCJleHBvcnQtbWFwLWluc3RhbmNlXCIgJGxlZ2VuZFpvb209e2xlZ2VuZFpvb219PlxuICAgICAgICA8U3R5bGVkTWFwQ29udGFpbmVyIHJlZj17cGxvdHRpbmdBcmVhUmVmfSB3aWR0aD17c2l6ZS53aWR0aH0gaGVpZ2h0PXtzaXplLmhlaWdodH0+XG4gICAgICAgICAgPE1hcFZpZXdTdGF0ZUNvbnRleHRQcm92aWRlciBtYXBTdGF0ZT17bmV3TWFwU3RhdGV9PlxuICAgICAgICAgICAge21hcENvbnRhaW5lcnN9XG4gICAgICAgICAgPC9NYXBWaWV3U3RhdGVDb250ZXh0UHJvdmlkZXI+XG4gICAgICAgIDwvU3R5bGVkTWFwQ29udGFpbmVyPlxuICAgICAgPC9TdHlsZWRQbG90Q29udGFpbmVyPlxuICAgICk7XG4gIH1cblxuICByZXR1cm4gUmVhY3QubWVtbyhQbG90Q29udGFpbmVyKTtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0FBSUEsSUFBQUEsTUFBQSxHQUFBQyx1QkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsaUJBQUEsR0FBQUMsc0JBQUEsQ0FBQUYsT0FBQTtBQUNBLElBQUFHLFNBQUEsR0FBQUQsc0JBQUEsQ0FBQUYsT0FBQTtBQUNBLElBQUFJLE1BQUEsR0FBQUosT0FBQTtBQU9BLElBQUFLLFNBQUEsR0FBQUwsT0FBQTtBQUNBLElBQUFNLGFBQUEsR0FBQUosc0JBQUEsQ0FBQUYsT0FBQTtBQUNBLElBQUFPLFdBQUEsR0FBQUwsc0JBQUEsQ0FBQUYsT0FBQTtBQUNBLElBQUFRLG9CQUFBLEdBQUFSLE9BQUE7QUFFQSxJQUFBUyxVQUFBLEdBQUFULE9BQUE7QUFBdUQsSUFBQVUsZUFBQSxFQUFBQyxnQkFBQSxFQW5CdkQ7QUFDQTtBQUVBO0FBQUEsU0FBQVosd0JBQUFhLENBQUEsRUFBQUMsQ0FBQSw2QkFBQUMsT0FBQSxNQUFBQyxDQUFBLE9BQUFELE9BQUEsSUFBQUUsQ0FBQSxPQUFBRixPQUFBLFlBQUFmLHVCQUFBLFlBQUFBLHdCQUFBYSxDQUFBLEVBQUFDLENBQUEsU0FBQUEsQ0FBQSxJQUFBRCxDQUFBLElBQUFBLENBQUEsQ0FBQUssVUFBQSxTQUFBTCxDQUFBLE1BQUFNLENBQUEsRUFBQUMsQ0FBQSxFQUFBQyxDQUFBLEtBQUFDLFNBQUEsbUJBQUFULENBQUEsaUJBQUFBLENBQUEsZ0JBQUFVLE9BQUEsQ0FBQVYsQ0FBQSwwQkFBQUEsQ0FB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
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports["default"] = RemoteDatasetRefreshController;
|
|
7
|
+
var _react = require("react");
|
|
8
|
+
var _constants = require("@kepler.gl/constants");
|
|
9
|
+
// SPDX-License-Identifier: MIT
|
|
10
|
+
// Copyright contributors to the kepler.gl project
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* Polls remotely hosted datasets that have metadata.refreshIntervalMs set.
|
|
14
|
+
* Lives on KeplerGl so polling continues when the side panel is closed.
|
|
15
|
+
*/
|
|
16
|
+
function RemoteDatasetRefreshController(_ref) {
|
|
17
|
+
var datasets = _ref.datasets,
|
|
18
|
+
refreshDataset = _ref.refreshDataset;
|
|
19
|
+
var pollTargets = (0, _react.useMemo)(function () {
|
|
20
|
+
return Object.values(datasets).filter(function (dataset) {
|
|
21
|
+
return dataset.type === _constants.DatasetType.EXTERNALLY_HOSTED && (0, _constants.getDatasetRefreshIntervalMs)(dataset.metadata) > 0;
|
|
22
|
+
}).map(function (dataset) {
|
|
23
|
+
return {
|
|
24
|
+
id: dataset.id,
|
|
25
|
+
intervalMs: (0, _constants.getDatasetRefreshIntervalMs)(dataset.metadata)
|
|
26
|
+
};
|
|
27
|
+
});
|
|
28
|
+
}, [datasets]);
|
|
29
|
+
var pollKey = JSON.stringify(pollTargets.slice().sort(function (a, b) {
|
|
30
|
+
return a.id < b.id ? -1 : a.id > b.id ? 1 : 0;
|
|
31
|
+
}));
|
|
32
|
+
(0, _react.useEffect)(function () {
|
|
33
|
+
var targets = JSON.parse(pollKey);
|
|
34
|
+
if (!refreshDataset || !targets.length) {
|
|
35
|
+
return undefined;
|
|
36
|
+
}
|
|
37
|
+
var timers = targets.map(function (target) {
|
|
38
|
+
return window.setInterval(function () {
|
|
39
|
+
return refreshDataset(target.id);
|
|
40
|
+
}, target.intervalMs);
|
|
41
|
+
});
|
|
42
|
+
return function () {
|
|
43
|
+
timers.forEach(function (timer) {
|
|
44
|
+
return window.clearInterval(timer);
|
|
45
|
+
});
|
|
46
|
+
};
|
|
47
|
+
}, [pollKey, refreshDataset]);
|
|
48
|
+
return null;
|
|
49
|
+
}
|
|
50
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJyZXF1aXJlIiwiX2NvbnN0YW50cyIsIlJlbW90ZURhdGFzZXRSZWZyZXNoQ29udHJvbGxlciIsIl9yZWYiLCJkYXRhc2V0cyIsInJlZnJlc2hEYXRhc2V0IiwicG9sbFRhcmdldHMiLCJ1c2VNZW1vIiwiT2JqZWN0IiwidmFsdWVzIiwiZmlsdGVyIiwiZGF0YXNldCIsInR5cGUiLCJEYXRhc2V0VHlwZSIsIkVYVEVSTkFMTFlfSE9TVEVEIiwiZ2V0RGF0YXNldFJlZnJlc2hJbnRlcnZhbE1zIiwibWV0YWRhdGEiLCJtYXAiLCJpZCIsImludGVydmFsTXMiLCJwb2xsS2V5IiwiSlNPTiIsInN0cmluZ2lmeSIsInNsaWNlIiwic29ydCIsImEiLCJiIiwidXNlRWZmZWN0IiwidGFyZ2V0cyIsInBhcnNlIiwibGVuZ3RoIiwidW5kZWZpbmVkIiwidGltZXJzIiwidGFyZ2V0Iiwid2luZG93Iiwic2V0SW50ZXJ2YWwiLCJmb3JFYWNoIiwidGltZXIiLCJjbGVhckludGVydmFsIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3JlbW90ZS1kYXRhc2V0LXJlZnJlc2gtY29udHJvbGxlci50c3giXSwic291cmNlc0NvbnRlbnQiOlsiLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVFxuLy8gQ29weXJpZ2h0IGNvbnRyaWJ1dG9ycyB0byB0aGUga2VwbGVyLmdsIHByb2plY3RcblxuaW1wb3J0IHt1c2VFZmZlY3QsIHVzZU1lbW99IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7RGF0YXNldFR5cGUsIGdldERhdGFzZXRSZWZyZXNoSW50ZXJ2YWxNc30gZnJvbSAnQGtlcGxlci5nbC9jb25zdGFudHMnO1xuaW1wb3J0IHtEYXRhc2V0c30gZnJvbSAnQGtlcGxlci5nbC90YWJsZSc7XG5cbnR5cGUgUmVtb3RlRGF0YXNldFJlZnJlc2hDb250cm9sbGVyUHJvcHMgPSB7XG4gIGRhdGFzZXRzOiBEYXRhc2V0cztcbiAgcmVmcmVzaERhdGFzZXQ/OiAoZGF0YUlkOiBzdHJpbmcpID0+IHZvaWQ7XG59O1xuXG4vKipcbiAqIFBvbGxzIHJlbW90ZWx5IGhvc3RlZCBkYXRhc2V0cyB0aGF0IGhhdmUgbWV0YWRhdGEucmVmcmVzaEludGVydmFsTXMgc2V0LlxuICogTGl2ZXMgb24gS2VwbGVyR2wgc28gcG9sbGluZyBjb250aW51ZXMgd2hlbiB0aGUgc2lkZSBwYW5lbCBpcyBjbG9zZWQuXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIFJlbW90ZURhdGFzZXRSZWZyZXNoQ29udHJvbGxlcih7XG4gIGRhdGFzZXRzLFxuICByZWZyZXNoRGF0YXNldFxufTogUmVtb3RlRGF0YXNldFJlZnJlc2hDb250cm9sbGVyUHJvcHMpIHtcbiAgY29uc3QgcG9sbFRhcmdldHMgPSB1c2VNZW1vKFxuICAgICgpID0+XG4gICAgICBPYmplY3QudmFsdWVzKGRhdGFzZXRzKVxuICAgICAgICAuZmlsdGVyKFxuICAgICAgICAgIGRhdGFzZXQgPT5cbiAgICAgICAgICAgIGRhdGFzZXQudHlwZSA9PT0gRGF0YXNldFR5cGUuRVhURVJOQUxMWV9IT1NURUQgJiZcbiAgICAgICAgICAgIGdldERhdGFzZXRSZWZyZXNoSW50ZXJ2YWxNcyhkYXRhc2V0Lm1ldGFkYXRhKSA+IDBcbiAgICAgICAgKVxuICAgICAgICAubWFwKGRhdGFzZXQgPT4gKHtcbiAgICAgICAgICBpZDogZGF0YXNldC5pZCxcbiAgICAgICAgICBpbnRlcnZhbE1zOiBnZXREYXRhc2V0UmVmcmVzaEludGVydmFsTXMoZGF0YXNldC5tZXRhZGF0YSlcbiAgICAgICAgfSkpLFxuICAgIFtkYXRhc2V0c11cbiAgKTtcblxuICBjb25zdCBwb2xsS2V5ID0gSlNPTi5zdHJpbmdpZnkoXG4gICAgcG9sbFRhcmdldHMuc2xpY2UoKS5zb3J0KChhLCBiKSA9PiAoYS5pZCA8IGIuaWQgPyAtMSA6IGEuaWQgPiBiLmlkID8gMSA6IDApKVxuICApO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgdGFyZ2V0czoge2lkOiBzdHJpbmc7IGludGVydmFsTXM6IG51bWJlcn1bXSA9IEpTT04ucGFyc2UocG9sbEtleSk7XG4gICAgaWYgKCFyZWZyZXNoRGF0YXNldCB8fCAhdGFyZ2V0cy5sZW5ndGgpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuICAgIGNvbnN0IHRpbWVycyA9IHRhcmdldHMubWFwKHRhcmdldCA9PlxuICAgICAgd2luZG93LnNldEludGVydmFsKCgpID0+IHJlZnJlc2hEYXRhc2V0KHRhcmdldC5pZCksIHRhcmdldC5pbnRlcnZhbE1zKVxuICAgICk7XG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIHRpbWVycy5mb3JFYWNoKHRpbWVyID0+IHdpbmRvdy5jbGVhckludGVydmFsKHRpbWVyKSk7XG4gICAgfTtcbiAgfSwgW3BvbGxLZXksIHJlZnJlc2hEYXRhc2V0XSk7XG5cbiAgcmV0dXJuIG51bGw7XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUdBLElBQUFBLE1BQUEsR0FBQUMsT0FBQTtBQUNBLElBQUFDLFVBQUEsR0FBQUQsT0FBQTtBQUpBO0FBQ0E7O0FBV0E7QUFDQTtBQUNBO0FBQ0E7QUFDZSxTQUFTRSw4QkFBOEJBLENBQUFDLElBQUEsRUFHZDtFQUFBLElBRnRDQyxRQUFRLEdBQUFELElBQUEsQ0FBUkMsUUFBUTtJQUNSQyxjQUFjLEdBQUFGLElBQUEsQ0FBZEUsY0FBYztFQUVkLElBQU1DLFdBQVcsR0FBRyxJQUFBQyxjQUFPLEVBQ3pCO0lBQUEsT0FDRUMsTUFBTSxDQUFDQyxNQUFNLENBQUNMLFFBQVEsQ0FBQyxDQUNwQk0sTUFBTSxDQUNMLFVBQUFDLE9BQU87TUFBQSxPQUNMQSxPQUFPLENBQUNDLElBQUksS0FBS0Msc0JBQVcsQ0FBQ0MsaUJBQWlCLElBQzlDLElBQUFDLHNDQUEyQixFQUFDSixPQUFPLENBQUNLLFFBQVEsQ0FBQyxHQUFHLENBQUM7SUFBQSxDQUNyRCxDQUFDLENBQ0FDLEdBQUcsQ0FBQyxVQUFBTixPQUFPO01BQUEsT0FBSztRQUNmTyxFQUFFLEVBQUVQLE9BQU8sQ0FBQ08sRUFBRTtRQUNkQyxVQUFVLEVBQUUsSUFBQUosc0NBQTJCLEVBQUNKLE9BQU8sQ0FBQ0ssUUFBUTtNQUMxRCxDQUFDO0lBQUEsQ0FBQyxDQUFDO0VBQUEsR0FDUCxDQUFDWixRQUFRLENBQ1gsQ0FBQztFQUVELElBQU1nQixPQUFPLEdBQUdDLElBQUksQ0FBQ0MsU0FBUyxDQUM1QmhCLFdBQVcsQ0FBQ2lCLEtBQUssQ0FBQyxDQUFDLENBQUNDLElBQUksQ0FBQyxVQUFDQyxDQUFDLEVBQUVDLENBQUM7SUFBQSxPQUFNRCxDQUFDLENBQUNQLEVBQUUsR0FBR1EsQ0FBQyxDQUFDUixFQUFFLEdBQUcsQ0FBQyxDQUFDLEdBQUdPLENBQUMsQ0FBQ1AsRUFBRSxHQUFHUSxDQUFDLENBQUNSLEVBQUUsR0FBRyxDQUFDLEdBQUcsQ0FBQztFQUFBLENBQUMsQ0FDN0UsQ0FBQztFQUVELElBQUFTLGdCQUFTLEVBQUMsWUFBTTtJQUNkLElBQU1DLE9BQTJDLEdBQUdQLElBQUksQ0FBQ1EsS0FBSyxDQUFDVCxPQUFPLENBQUM7SUFDdkUsSUFBSSxDQUFDZixjQUFjLElBQUksQ0FBQ3VCLE9BQU8sQ0FBQ0UsTUFBTSxFQUFFO01BQ3RDLE9BQU9DLFNBQVM7SUFDbEI7SUFDQSxJQUFNQyxNQUFNLEdBQUdKLE9BQU8sQ0FBQ1gsR0FBRyxDQUFDLFVBQUFnQixNQUFNO01BQUEsT0FDL0JDLE1BQU0sQ0FBQ0MsV0FBVyxDQUFDO1FBQUEsT0FBTTlCLGNBQWMsQ0FBQzRCLE1BQU0sQ0FBQ2YsRUFBRSxDQUFDO01BQUEsR0FBRWUsTUFBTSxDQUFDZCxVQUFVLENBQUM7SUFBQSxDQUN4RSxDQUFDO0lBQ0QsT0FBTyxZQUFNO01BQ1hhLE1BQU0sQ0FBQ0ksT0FBTyxDQUFDLFVBQUFDLEtBQUs7UUFBQSxPQUFJSCxNQUFNLENBQUNJLGFBQWEsQ0FBQ0QsS0FBSyxDQUFDO01BQUEsRUFBQztJQUN0RCxDQUFDO0VBQ0gsQ0FBQyxFQUFFLENBQUNqQixPQUFPLEVBQUVmLGNBQWMsQ0FBQyxDQUFDO0VBRTdCLE9BQU8sSUFBSTtBQUNiIiwiaWdub3JlTGlzdCI6W119
|