@kepler.gl/components 3.3.0-alpha.0 → 3.3.0-alpha.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/annotations/annotation-node.d.ts +11 -0
- package/dist/annotations/annotation-node.js +145 -0
- package/dist/annotations/annotation-overlay.d.ts +16 -0
- package/dist/annotations/annotation-overlay.js +166 -0
- package/dist/annotations/annotation-panel.d.ts +24 -0
- package/dist/annotations/annotation-panel.js +362 -0
- package/dist/annotations/annotation-text.d.ts +16 -0
- package/dist/annotations/annotation-text.js +150 -0
- package/dist/annotations/annotation-utils.d.ts +39 -0
- package/dist/annotations/annotation-utils.js +156 -0
- package/dist/annotations/index.d.ts +7 -0
- package/dist/annotations/index.js +53 -0
- package/dist/annotations/lexical-editor/clickable-link-plugin.d.ts +3 -0
- package/dist/annotations/lexical-editor/clickable-link-plugin.js +71 -0
- package/dist/annotations/lexical-editor/floating-link-editor.d.ts +1 -0
- package/dist/annotations/lexical-editor/floating-link-editor.js +194 -0
- package/dist/annotations/lexical-editor/index.d.ts +7 -0
- package/dist/annotations/lexical-editor/index.js +78 -0
- package/dist/annotations/lexical-editor/lexical-constants.d.ts +12 -0
- package/dist/annotations/lexical-editor/lexical-constants.js +22 -0
- package/dist/annotations/lexical-editor/lexical-nodes.d.ts +3 -0
- package/dist/annotations/lexical-editor/lexical-nodes.js +13 -0
- package/dist/annotations/lexical-editor/lexical-rich-text-editor.d.ts +15 -0
- package/dist/annotations/lexical-editor/lexical-rich-text-editor.js +122 -0
- package/dist/annotations/lexical-editor/lexical-theme.d.ts +15 -0
- package/dist/annotations/lexical-editor/lexical-theme.js +25 -0
- package/dist/annotations/lexical-editor/lexical-toolbar.d.ts +7 -0
- package/dist/annotations/lexical-editor/lexical-toolbar.js +293 -0
- package/dist/annotations/lexical-editor/lexical-utils.d.ts +4 -0
- package/dist/annotations/lexical-editor/lexical-utils.js +45 -0
- package/dist/annotations/lexical-editor/use-lexical-toolbar.d.ts +36 -0
- package/dist/annotations/lexical-editor/use-lexical-toolbar.js +253 -0
- package/dist/bottom-widget.d.ts +1 -1
- package/dist/bottom-widget.js +12 -6
- package/dist/common/animation-control/animation-control.d.ts +1 -0
- package/dist/common/animation-control/animation-control.js +3 -1
- package/dist/common/animation-control/animation-controller.js +8 -6
- package/dist/common/animation-control/export-video-control.d.ts +9 -0
- package/dist/common/animation-control/export-video-control.js +43 -0
- package/dist/common/animation-control/playback-controls.d.ts +4 -2
- package/dist/common/animation-control/playback-controls.js +7 -4
- package/dist/common/checkbox.d.ts +5 -21
- package/dist/common/checkbox.js +58 -70
- package/dist/common/color-legend.js +3 -3
- package/dist/common/data-table/index.d.ts +1 -1
- package/dist/common/data-table/index.js +3 -3
- package/dist/common/file-uploader/file-upload.js +4 -4
- package/dist/common/histogram-plot.js +102 -53
- package/dist/common/icons/3d-models/airplane.d.ts +14 -0
- package/dist/common/icons/3d-models/airplane.js +104 -0
- package/dist/common/icons/3d-models/bicycle.d.ts +14 -0
- package/dist/common/icons/3d-models/bicycle.js +426 -0
- package/dist/common/icons/3d-models/boeing.d.ts +14 -0
- package/dist/common/icons/3d-models/boeing.js +119 -0
- package/dist/common/icons/3d-models/car.d.ts +14 -0
- package/dist/common/icons/3d-models/car.js +110 -0
- package/dist/common/icons/3d-models/cargoship.d.ts +14 -0
- package/dist/common/icons/3d-models/cargoship.js +246 -0
- package/dist/common/icons/3d-models/evtol.d.ts +14 -0
- package/dist/common/icons/3d-models/evtol.js +134 -0
- package/dist/common/icons/3d-models/glider.d.ts +14 -0
- package/dist/common/icons/3d-models/glider.js +62 -0
- package/dist/common/icons/3d-models/helicopter.d.ts +14 -0
- package/dist/common/icons/3d-models/helicopter.js +110 -0
- package/dist/common/icons/3d-models/scooter.d.ts +14 -0
- package/dist/common/icons/3d-models/scooter.js +159 -0
- package/dist/common/icons/3d-models/semitruck.d.ts +14 -0
- package/dist/common/icons/3d-models/semitruck.js +177 -0
- package/dist/common/icons/3d-models/truck.d.ts +14 -0
- package/dist/common/icons/3d-models/truck.js +122 -0
- package/dist/common/icons/anchor_window.d.ts +1 -8
- package/dist/common/icons/anchor_window.js +17 -10
- package/dist/common/icons/annotation-text.d.ts +9 -0
- package/dist/common/icons/annotation-text.js +56 -0
- package/dist/common/icons/index.d.ts +1 -0
- package/dist/common/icons/index.js +8 -1
- package/dist/common/item-selector/chickleted-input.d.ts +1 -1
- package/dist/common/item-selector/chickleted-input.js +5 -5
- package/dist/common/line-chart.d.ts +4 -1
- package/dist/common/line-chart.js +59 -12
- package/dist/common/range-plot.js +4 -2
- package/dist/common/range-slider.d.ts +2 -0
- package/dist/common/range-slider.js +108 -43
- package/dist/common/slider/slider.d.ts +4 -0
- package/dist/common/slider/slider.js +78 -35
- package/dist/common/styled-components.d.ts +1 -1
- package/dist/common/styled-components.js +2 -2
- package/dist/common/time-range-slider-time-title.d.ts +1 -1
- package/dist/common/time-range-slider-time-title.js +5 -5
- package/dist/common/time-range-slider.d.ts +2 -1
- package/dist/common/time-range-slider.js +19 -7
- package/dist/common/timeline-helpers.d.ts +3 -0
- package/dist/common/timeline-helpers.js +57 -0
- package/dist/common/timeline-slider.js +21 -12
- package/dist/common/toolbar-item.js +5 -5
- package/dist/common/toolbar.d.ts +1 -1
- package/dist/common/toolbar.js +4 -4
- package/dist/common/vertical-toolbar.d.ts +1 -1
- package/dist/effects/effect-configurator.d.ts +3 -2
- package/dist/effects/effect-configurator.js +213 -52
- package/dist/effects/effect-manager.js +3 -3
- package/dist/effects/effect-panel-header.js +34 -17
- package/dist/effects/effect-panel.d.ts +4 -4
- package/dist/effects/effect-panel.js +61 -86
- package/dist/effects/effect-time-configurator.js +10 -10
- package/dist/effects/effect-type-dropdown-list.d.ts +1 -0
- package/dist/effects/effect-type-dropdown-list.js +1 -1
- package/dist/effects/effect-type-list-item.d.ts +1 -0
- package/dist/effects/effect-type-list-item.js +23 -7
- package/dist/effects/effect-type-selector.d.ts +1 -0
- package/dist/effects/effect-type-selector.js +2 -2
- package/dist/effects/surface-fog-section.d.ts +14 -0
- package/dist/effects/surface-fog-section.js +263 -0
- package/dist/filters/index.d.ts +1 -0
- package/dist/filters/index.js +8 -1
- package/dist/filters/polygon-filter.js +2 -2
- package/dist/filters/time-range-filter.js +3 -1
- package/dist/filters/time-widget-settings.d.ts +14 -0
- package/dist/filters/time-widget-settings.js +312 -0
- package/dist/filters/time-widget-top.d.ts +2 -3
- package/dist/filters/time-widget-top.js +32 -39
- package/dist/filters/time-widget.d.ts +3 -2
- package/dist/filters/time-widget.js +285 -9
- package/dist/filters/types.d.ts +3 -3
- package/dist/filters/types.js +1 -1
- package/dist/geocoder/geocoder.d.ts +4 -1
- package/dist/geocoder/geocoder.js +61 -14
- package/dist/geocoder-panel.d.ts +1 -0
- package/dist/geocoder-panel.js +6 -2
- package/dist/index.d.ts +14 -0
- package/dist/index.js +124 -1
- package/dist/kepler-gl.d.ts +17 -5
- package/dist/kepler-gl.js +89 -11
- package/dist/loading-indicator.d.ts +2 -0
- package/dist/loading-indicator.js +6 -3
- package/dist/map/annotations/annotation-control.d.ts +16 -0
- package/dist/map/annotations/annotation-control.js +56 -0
- package/dist/map/layer-hover-info.js +68 -35
- package/dist/map/layer-selector-panel.d.ts +1 -1
- package/dist/map/locale-panel.d.ts +1 -1
- package/dist/map/locale-panel.js +2 -2
- package/dist/map/map-control-toolbar.d.ts +4 -4
- package/dist/map/map-control.d.ts +5 -2
- package/dist/map/map-control.js +16 -7
- package/dist/map/map-draw-panel.d.ts +1 -1
- package/dist/map/map-draw-panel.js +7 -4
- package/dist/map/map-legend-panel.d.ts +1 -1
- package/dist/map/map-legend-panel.js +7 -7
- package/dist/map/map-legend.d.ts +1 -1
- package/dist/map/map-legend.js +6 -6
- package/dist/map/map-navigation-control.d.ts +13 -0
- package/dist/map/map-navigation-control.js +143 -0
- package/dist/map/map-popover.js +2 -2
- package/dist/map-container.d.ts +13 -3
- package/dist/map-container.js +250 -57
- package/dist/map-view-state-context.d.ts +1 -0
- package/dist/map-view-state-context.js +1 -1
- package/dist/modal-container.d.ts +3 -2
- package/dist/modal-container.js +28 -6
- package/dist/modals/add-map-style-modal.js +173 -200
- package/dist/modals/data-table-modal.d.ts +1 -1
- package/dist/modals/data-table-modal.js +146 -194
- package/dist/modals/export-data-modal.js +117 -139
- package/dist/modals/export-video-modal.d.ts +25 -0
- package/dist/modals/export-video-modal.js +338 -0
- package/dist/modals/export-video-modal.spec.d.ts +1 -0
- package/dist/modals/export-video-modal.spec.js +686 -0
- package/dist/modals/fog-height-animation.d.ts +8 -0
- package/dist/modals/fog-height-animation.js +97 -0
- package/dist/modals/hubble-utils.d.ts +25 -0
- package/dist/modals/hubble-utils.js +197 -0
- package/dist/modals/hubble-utils.spec.d.ts +1 -0
- package/dist/modals/hubble-utils.spec.js +397 -0
- package/dist/modals/tilesets-modals/load-data-footer.js +2 -2
- package/dist/modals/tilesets-modals/load-tileset.js +21 -10
- package/dist/modals/tilesets-modals/tileset-bitmap-form.d.ts +14 -0
- package/dist/modals/tilesets-modals/tileset-bitmap-form.js +284 -0
- package/dist/modals/tilesets-modals/tileset-raster-form.js +94 -11
- package/dist/modals/tilesets-modals/tileset-tile3d-form.js +3 -2
- package/dist/modals/tilesets-modals/tileset-vector-form.js +58 -4
- package/dist/modals/tilesets-modals/tileset-wms-form.js +4 -3
- package/dist/notification-panel/notification-item.d.ts +1 -53
- package/dist/notification-panel/notification-item.js +47 -75
- package/dist/notification-panel.d.ts +1 -1
- package/dist/notification-panel.js +20 -42
- package/dist/plot-container.js +7 -6
- package/dist/side-panel/add-by-dataset-button.js +3 -3
- package/dist/side-panel/common/dataset-info.js +2 -2
- package/dist/side-panel/interaction-panel/geocoder-config.d.ts +11 -0
- package/dist/side-panel/interaction-panel/geocoder-config.js +45 -0
- package/dist/side-panel/interaction-panel/interaction-panel.d.ts +3 -2
- package/dist/side-panel/interaction-panel/interaction-panel.js +10 -3
- package/dist/side-panel/layer-manager.js +11 -3
- package/dist/side-panel/layer-panel/color-scale-selector.d.ts +1 -1
- package/dist/side-panel/layer-panel/color-scale-selector.js +1 -1
- package/dist/side-panel/layer-panel/custom-palette.js +5 -5
- package/dist/side-panel/layer-panel/dataset-layer-section.js +19 -3
- package/dist/side-panel/layer-panel/layer-configurator.d.ts +4 -2
- package/dist/side-panel/layer-panel/layer-configurator.js +402 -76
- package/dist/side-panel/layer-panel/layer-panel-header.js +2 -2
- package/dist/side-panel/layer-panel/raster-tile-layer-configurator.d.ts +1 -1
- package/dist/side-panel/layer-panel/raster-tile-layer-configurator.js +127 -27
- package/dist/side-panel/layer-panel/scenegraph-model-selector.d.ts +24 -0
- package/dist/side-panel/layer-panel/scenegraph-model-selector.js +123 -0
- package/dist/side-panel/layer-panel/text-label-panel.d.ts +1 -1
- package/dist/side-panel/layer-panel/text-label-panel.js +11 -2
- package/dist/side-panel/layer-panel/vector-tile-layer-configurator.d.ts +1 -1
- package/dist/side-panel/layer-panel/vis-config-slider.d.ts +2 -0
- package/dist/side-panel/layer-panel/vis-config-slider.js +7 -3
- package/dist/side-panel/panel-header.d.ts +1 -0
- package/dist/side-panel/panel-header.js +9 -2
- package/dist/side-panel/panel-tab.d.ts +1 -1
- package/dist/side-panel/panel-tab.js +4 -4
- package/dist/side-panel.js +5 -1
- package/package.json +39 -28
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { FC } from 'react';
|
|
2
|
+
import { Annotation } from '@kepler.gl/types';
|
|
3
|
+
import { MapViewport } from './annotation-utils';
|
|
4
|
+
export type AnnotationNodeProps = {
|
|
5
|
+
annotation: Annotation;
|
|
6
|
+
viewport: MapViewport;
|
|
7
|
+
isEditing: boolean;
|
|
8
|
+
isSelected: boolean;
|
|
9
|
+
};
|
|
10
|
+
declare const AnnotationNode: FC<AnnotationNodeProps>;
|
|
11
|
+
export default AnnotationNode;
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports["default"] = void 0;
|
|
8
|
+
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
9
|
+
var _react = _interopRequireDefault(require("react"));
|
|
10
|
+
var _core = require("@dnd-kit/core");
|
|
11
|
+
var _constants = require("@kepler.gl/constants");
|
|
12
|
+
var _annotationUtils = require("./annotation-utils");
|
|
13
|
+
// SPDX-License-Identifier: MIT
|
|
14
|
+
// Copyright contributors to the kepler.gl project
|
|
15
|
+
|
|
16
|
+
var HANDLE_RADIUS = 6;
|
|
17
|
+
var MoveHandle = function MoveHandle(_ref) {
|
|
18
|
+
var id = _ref.id,
|
|
19
|
+
x = _ref.x,
|
|
20
|
+
y = _ref.y;
|
|
21
|
+
var _useDraggable = (0, _core.useDraggable)({
|
|
22
|
+
id: id
|
|
23
|
+
}),
|
|
24
|
+
attributes = _useDraggable.attributes,
|
|
25
|
+
listeners = _useDraggable.listeners,
|
|
26
|
+
setNodeRef = _useDraggable.setNodeRef;
|
|
27
|
+
return /*#__PURE__*/_react["default"].createElement("circle", (0, _extends2["default"])({
|
|
28
|
+
ref: setNodeRef
|
|
29
|
+
}, listeners, attributes, {
|
|
30
|
+
cx: x,
|
|
31
|
+
cy: y,
|
|
32
|
+
r: HANDLE_RADIUS,
|
|
33
|
+
fill: "transparent",
|
|
34
|
+
stroke: "rgba(255,255,255,0.6)",
|
|
35
|
+
strokeWidth: 1,
|
|
36
|
+
cursor: "move",
|
|
37
|
+
style: {
|
|
38
|
+
pointerEvents: 'all'
|
|
39
|
+
}
|
|
40
|
+
}));
|
|
41
|
+
};
|
|
42
|
+
var ResizeHandle = function ResizeHandle(_ref2) {
|
|
43
|
+
var id = _ref2.id,
|
|
44
|
+
x = _ref2.x,
|
|
45
|
+
y = _ref2.y;
|
|
46
|
+
var _useDraggable2 = (0, _core.useDraggable)({
|
|
47
|
+
id: id
|
|
48
|
+
}),
|
|
49
|
+
attributes = _useDraggable2.attributes,
|
|
50
|
+
listeners = _useDraggable2.listeners,
|
|
51
|
+
setNodeRef = _useDraggable2.setNodeRef;
|
|
52
|
+
return /*#__PURE__*/_react["default"].createElement("circle", (0, _extends2["default"])({
|
|
53
|
+
ref: setNodeRef
|
|
54
|
+
}, listeners, attributes, {
|
|
55
|
+
cx: x,
|
|
56
|
+
cy: y,
|
|
57
|
+
r: HANDLE_RADIUS,
|
|
58
|
+
fill: "transparent",
|
|
59
|
+
stroke: "rgba(255,255,255,0.6)",
|
|
60
|
+
strokeWidth: 1,
|
|
61
|
+
cursor: "ew-resize",
|
|
62
|
+
style: {
|
|
63
|
+
pointerEvents: 'all'
|
|
64
|
+
}
|
|
65
|
+
}));
|
|
66
|
+
};
|
|
67
|
+
var AnnotationNode = function AnnotationNode(_ref3) {
|
|
68
|
+
var annotation = _ref3.annotation,
|
|
69
|
+
viewport = _ref3.viewport,
|
|
70
|
+
isEditing = _ref3.isEditing,
|
|
71
|
+
isSelected = _ref3.isSelected;
|
|
72
|
+
var lineColor = annotation.lineColor,
|
|
73
|
+
lineWidth = annotation.lineWidth;
|
|
74
|
+
var marker = (0, _annotationUtils.makeMarker)(annotation, viewport);
|
|
75
|
+
var kind = marker.kind,
|
|
76
|
+
x = marker.x,
|
|
77
|
+
y = marker.y,
|
|
78
|
+
tx = marker.tx,
|
|
79
|
+
ty = marker.ty;
|
|
80
|
+
var arrW = 3 + lineWidth * 2;
|
|
81
|
+
var isArm = 'armLength' in annotation;
|
|
82
|
+
var moveHandle = isEditing ? /*#__PURE__*/_react["default"].createElement(MoveHandle, {
|
|
83
|
+
id: "".concat(annotation.id, ":MOVE_POINT"),
|
|
84
|
+
x: 0,
|
|
85
|
+
y: 0
|
|
86
|
+
}) : null;
|
|
87
|
+
var selectionHighlight = isEditing && isSelected ? /*#__PURE__*/_react["default"].createElement("circle", {
|
|
88
|
+
r: HANDLE_RADIUS + 2,
|
|
89
|
+
fill: "none",
|
|
90
|
+
stroke: "rgba(64,169,255,0.6)",
|
|
91
|
+
strokeWidth: 2
|
|
92
|
+
}) : null;
|
|
93
|
+
var body = null;
|
|
94
|
+
switch (kind) {
|
|
95
|
+
case _constants.AnnotationKind.CIRCLE:
|
|
96
|
+
{
|
|
97
|
+
var circleMarker = marker;
|
|
98
|
+
body = /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement("circle", (0, _extends2["default"])({
|
|
99
|
+
r: circleMarker.r,
|
|
100
|
+
fill: "none",
|
|
101
|
+
stroke: lineColor,
|
|
102
|
+
strokeWidth: lineWidth
|
|
103
|
+
}, isSelected && isEditing ? {
|
|
104
|
+
strokeDasharray: '6 3'
|
|
105
|
+
} : {})), /*#__PURE__*/_react["default"].createElement("path", {
|
|
106
|
+
d: "M".concat(circleMarker.ax, ",").concat(circleMarker.ay, " L").concat(tx, ",").concat(ty),
|
|
107
|
+
stroke: lineColor,
|
|
108
|
+
strokeWidth: lineWidth,
|
|
109
|
+
fill: "none",
|
|
110
|
+
strokeLinecap: "round"
|
|
111
|
+
}), isEditing ? /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, moveHandle, selectionHighlight, /*#__PURE__*/_react["default"].createElement(ResizeHandle, {
|
|
112
|
+
id: "".concat(annotation.id, ":RESIZE"),
|
|
113
|
+
x: circleMarker.r,
|
|
114
|
+
y: 0
|
|
115
|
+
})) : null);
|
|
116
|
+
break;
|
|
117
|
+
}
|
|
118
|
+
case _constants.AnnotationKind.POINT:
|
|
119
|
+
case _constants.AnnotationKind.ARROW:
|
|
120
|
+
body = /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement("path", {
|
|
121
|
+
d: "M0,0 L".concat(tx, ",").concat(ty),
|
|
122
|
+
stroke: lineColor,
|
|
123
|
+
fill: "none",
|
|
124
|
+
strokeWidth: lineWidth,
|
|
125
|
+
strokeLinecap: "round"
|
|
126
|
+
}), kind === _constants.AnnotationKind.ARROW ? /*#__PURE__*/_react["default"].createElement("path", {
|
|
127
|
+
transform: isArm ? "rotate(".concat(90 + annotation.angle, ")") : undefined,
|
|
128
|
+
d: "M0,".concat(lineWidth, " L").concat(-arrW, ",").concat(-arrW, " L").concat(arrW, ",").concat(-arrW, " Z"),
|
|
129
|
+
stroke: "none",
|
|
130
|
+
fill: lineColor
|
|
131
|
+
}) : null, kind === _constants.AnnotationKind.POINT ? /*#__PURE__*/_react["default"].createElement("circle", {
|
|
132
|
+
r: lineWidth * 1.5,
|
|
133
|
+
fill: lineColor,
|
|
134
|
+
stroke: "none"
|
|
135
|
+
}) : null, moveHandle, selectionHighlight);
|
|
136
|
+
break;
|
|
137
|
+
default:
|
|
138
|
+
body = /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, moveHandle, selectionHighlight);
|
|
139
|
+
}
|
|
140
|
+
return /*#__PURE__*/_react["default"].createElement("g", {
|
|
141
|
+
transform: "translate(".concat(x, ",").concat(y, ")")
|
|
142
|
+
}, body);
|
|
143
|
+
};
|
|
144
|
+
var _default = exports["default"] = AnnotationNode;
|
|
145
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9jb3JlIiwiX2NvbnN0YW50cyIsIl9hbm5vdGF0aW9uVXRpbHMiLCJIQU5ETEVfUkFESVVTIiwiTW92ZUhhbmRsZSIsIl9yZWYiLCJpZCIsIngiLCJ5IiwiX3VzZURyYWdnYWJsZSIsInVzZURyYWdnYWJsZSIsImF0dHJpYnV0ZXMiLCJsaXN0ZW5lcnMiLCJzZXROb2RlUmVmIiwiY3JlYXRlRWxlbWVudCIsIl9leHRlbmRzMiIsInJlZiIsImN4IiwiY3kiLCJyIiwiZmlsbCIsInN0cm9rZSIsInN0cm9rZVdpZHRoIiwiY3Vyc29yIiwic3R5bGUiLCJwb2ludGVyRXZlbnRzIiwiUmVzaXplSGFuZGxlIiwiX3JlZjIiLCJfdXNlRHJhZ2dhYmxlMiIsIkFubm90YXRpb25Ob2RlIiwiX3JlZjMiLCJhbm5vdGF0aW9uIiwidmlld3BvcnQiLCJpc0VkaXRpbmciLCJpc1NlbGVjdGVkIiwibGluZUNvbG9yIiwibGluZVdpZHRoIiwibWFya2VyIiwibWFrZU1hcmtlciIsImtpbmQiLCJ0eCIsInR5IiwiYXJyVyIsImlzQXJtIiwibW92ZUhhbmRsZSIsImNvbmNhdCIsInNlbGVjdGlvbkhpZ2hsaWdodCIsImJvZHkiLCJBbm5vdGF0aW9uS2luZCIsIkNJUkNMRSIsImNpcmNsZU1hcmtlciIsIkZyYWdtZW50Iiwic3Ryb2tlRGFzaGFycmF5IiwiZCIsImF4IiwiYXkiLCJzdHJva2VMaW5lY2FwIiwiUE9JTlQiLCJBUlJPVyIsInRyYW5zZm9ybSIsImFuZ2xlIiwidW5kZWZpbmVkIiwiX2RlZmF1bHQiLCJleHBvcnRzIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL2Fubm90YXRpb25zL2Fubm90YXRpb24tbm9kZS50c3giXSwic291cmNlc0NvbnRlbnQiOlsiLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVFxuLy8gQ29weXJpZ2h0IGNvbnRyaWJ1dG9ycyB0byB0aGUga2VwbGVyLmdsIHByb2plY3RcblxuaW1wb3J0IFJlYWN0LCB7RkN9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7dXNlRHJhZ2dhYmxlfSBmcm9tICdAZG5kLWtpdC9jb3JlJztcbmltcG9ydCB7QW5ub3RhdGlvbiwgQW5ub3RhdGlvbldpdGhBcm19IGZyb20gJ0BrZXBsZXIuZ2wvdHlwZXMnO1xuaW1wb3J0IHtBbm5vdGF0aW9uS2luZH0gZnJvbSAnQGtlcGxlci5nbC9jb25zdGFudHMnO1xuaW1wb3J0IHttYWtlTWFya2VyLCBNYXBWaWV3cG9ydCwgQ2lyY2xlQW5ub3RhdGlvbk1hcmtlcn0gZnJvbSAnLi9hbm5vdGF0aW9uLXV0aWxzJztcblxuY29uc3QgSEFORExFX1JBRElVUyA9IDY7XG5cbmNvbnN0IE1vdmVIYW5kbGU6IEZDPHtpZDogc3RyaW5nOyB4OiBudW1iZXI7IHk6IG51bWJlcn0+ID0gKHtpZCwgeCwgeX0pID0+IHtcbiAgY29uc3Qge2F0dHJpYnV0ZXMsIGxpc3RlbmVycywgc2V0Tm9kZVJlZn0gPSB1c2VEcmFnZ2FibGUoe2lkfSk7XG4gIHJldHVybiAoXG4gICAgPGNpcmNsZVxuICAgICAgcmVmPXtzZXROb2RlUmVmIGFzIGFueX1cbiAgICAgIHsuLi5saXN0ZW5lcnN9XG4gICAgICB7Li4uYXR0cmlidXRlc31cbiAgICAgIGN4PXt4fVxuICAgICAgY3k9e3l9XG4gICAgICByPXtIQU5ETEVfUkFESVVTfVxuICAgICAgZmlsbD1cInRyYW5zcGFyZW50XCJcbiAgICAgIHN0cm9rZT1cInJnYmEoMjU1LDI1NSwyNTUsMC42KVwiXG4gICAgICBzdHJva2VXaWR0aD17MX1cbiAgICAgIGN1cnNvcj1cIm1vdmVcIlxuICAgICAgc3R5bGU9e3twb2ludGVyRXZlbnRzOiAnYWxsJ319XG4gICAgLz5cbiAgKTtcbn07XG5cbmNvbnN0IFJlc2l6ZUhhbmRsZTogRkM8e2lkOiBzdHJpbmc7IHg6IG51bWJlcjsgeTogbnVtYmVyfT4gPSAoe2lkLCB4LCB5fSkgPT4ge1xuICBjb25zdCB7YXR0cmlidXRlcywgbGlzdGVuZXJzLCBzZXROb2RlUmVmfSA9IHVzZURyYWdnYWJsZSh7aWR9KTtcbiAgcmV0dXJuIChcbiAgICA8Y2lyY2xlXG4gICAgICByZWY9e3NldE5vZGVSZWYgYXMgYW55fVxuICAgICAgey4uLmxpc3RlbmVyc31cbiAgICAgIHsuLi5hdHRyaWJ1dGVzfVxuICAgICAgY3g9e3h9XG4gICAgICBjeT17eX1cbiAgICAgIHI9e0hBTkRMRV9SQURJVVN9XG4gICAgICBmaWxsPVwidHJhbnNwYXJlbnRcIlxuICAgICAgc3Ryb2tlPVwicmdiYSgyNTUsMjU1LDI1NSwwLjYpXCJcbiAgICAgIHN0cm9rZVdpZHRoPXsxfVxuICAgICAgY3Vyc29yPVwiZXctcmVzaXplXCJcbiAgICAgIHN0eWxlPXt7cG9pbnRlckV2ZW50czogJ2FsbCd9fVxuICAgIC8+XG4gICk7XG59O1xuXG5leHBvcnQgdHlwZSBBbm5vdGF0aW9uTm9kZVByb3BzID0ge1xuICBhbm5vdGF0aW9uOiBBbm5vdGF0aW9uO1xuICB2aWV3cG9ydDogTWFwVmlld3BvcnQ7XG4gIGlzRWRpdGluZzogYm9vbGVhbjtcbiAgaXNTZWxlY3RlZDogYm9vbGVhbjtcbn07XG5cbmNvbnN0IEFubm90YXRpb25Ob2RlOiBGQzxBbm5vdGF0aW9uTm9kZVByb3BzPiA9ICh7YW5ub3RhdGlvbiwgdmlld3BvcnQsIGlzRWRpdGluZywgaXNTZWxlY3RlZH0pID0+IHtcbiAgY29uc3Qge2xpbmVDb2xvciwgbGluZVdpZHRofSA9IGFubm90YXRpb247XG4gIGNvbnN0IG1hcmtlciA9IG1ha2VNYXJrZXIoYW5ub3RhdGlvbiwgdmlld3BvcnQpO1xuICBjb25zdCB7a2luZCwgeCwgeSwgdHgsIHR5fSA9IG1hcmtlcjtcbiAgY29uc3QgYXJyVyA9IDMgKyBsaW5lV2lkdGggKiAyO1xuICBjb25zdCBpc0FybSA9ICdhcm1MZW5ndGgnIGluIGFubm90YXRpb247XG5cbiAgY29uc3QgbW92ZUhhbmRsZSA9IGlzRWRpdGluZyA/IChcbiAgICA8TW92ZUhhbmRsZSBpZD17YCR7YW5ub3RhdGlvbi5pZH06TU9WRV9QT0lOVGB9IHg9ezB9IHk9ezB9IC8+XG4gICkgOiBudWxsO1xuXG4gIGNvbnN0IHNlbGVjdGlvbkhpZ2hsaWdodCA9XG4gICAgaXNFZGl0aW5nICYmIGlzU2VsZWN0ZWQgPyAoXG4gICAgICA8Y2lyY2xlIHI9e0hBTkRMRV9SQURJVVMgKyAyfSBmaWxsPVwibm9uZVwiIHN0cm9rZT1cInJnYmEoNjQsMTY5LDI1NSwwLjYpXCIgc3Ryb2tlV2lkdGg9ezJ9IC8+XG4gICAgKSA6IG51bGw7XG5cbiAgbGV0IGJvZHk6IFJlYWN0LlJlYWN0Tm9kZSA9IG51bGw7XG5cbiAgc3dpdGNoIChraW5kKSB7XG4gICAgY2FzZSBBbm5vdGF0aW9uS2luZC5DSVJDTEU6IHtcbiAgICAgIGNvbnN0IGNpcmNsZU1hcmtlciA9IG1hcmtlciBhcyBDaXJjbGVBbm5vdGF0aW9uTWFya2VyO1xuICAgICAgYm9keSA9IChcbiAgICAgICAgPD5cbiAgICAgICAgICA8Y2lyY2xlXG4gICAgICAgICAgICByPXtjaXJjbGVNYXJrZXIucn1cbiAgICAgICAgICAgIGZpbGw9XCJub25lXCJcbiAgICAgICAgICAgIHN0cm9rZT17bGluZUNvbG9yfVxuICAgICAgICAgICAgc3Ryb2tlV2lkdGg9e2xpbmVXaWR0aH1cbiAgICAgICAgICAgIHsuLi4oaXNTZWxlY3RlZCAmJiBpc0VkaXRpbmcgPyB7c3Ryb2tlRGFzaGFycmF5OiAnNiAzJ30gOiB7fSl9XG4gICAgICAgICAgLz5cbiAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgZD17YE0ke2NpcmNsZU1hcmtlci5heH0sJHtjaXJjbGVNYXJrZXIuYXl9IEwke3R4fSwke3R5fWB9XG4gICAgICAgICAgICBzdHJva2U9e2xpbmVDb2xvcn1cbiAgICAgICAgICAgIHN0cm9rZVdpZHRoPXtsaW5lV2lkdGh9XG4gICAgICAgICAgICBmaWxsPVwibm9uZVwiXG4gICAgICAgICAgICBzdHJva2VMaW5lY2FwPVwicm91bmRcIlxuICAgICAgICAgIC8+XG4gICAgICAgICAge2lzRWRpdGluZyA/IChcbiAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgIHttb3ZlSGFuZGxlfVxuICAgICAgICAgICAgICB7c2VsZWN0aW9uSGlnaGxpZ2h0fVxuICAgICAgICAgICAgICA8UmVzaXplSGFuZGxlIGlkPXtgJHthbm5vdGF0aW9uLmlkfTpSRVNJWkVgfSB4PXtjaXJjbGVNYXJrZXIucn0geT17MH0gLz5cbiAgICAgICAgICAgIDwvPlxuICAgICAgICAgICkgOiBudWxsfVxuICAgICAgICA8Lz5cbiAgICAgICk7XG4gICAgICBicmVhaztcbiAgICB9XG4gICAgY2FzZSBBbm5vdGF0aW9uS2luZC5QT0lOVDpcbiAgICBjYXNlIEFubm90YXRpb25LaW5kLkFSUk9XOlxuICAgICAgYm9keSA9IChcbiAgICAgICAgPD5cbiAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgZD17YE0wLDAgTCR7dHh9LCR7dHl9YH1cbiAgICAgICAgICAgIHN0cm9rZT17bGluZUNvbG9yfVxuICAgICAgICAgICAgZmlsbD1cIm5vbmVcIlxuICAgICAgICAgICAgc3Ryb2tlV2lkdGg9e2xpbmVXaWR0aH1cbiAgICAgICAgICAgIHN0cm9rZUxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICAgICAgLz5cbiAgICAgICAgICB7a2luZCA9PT0gQW5ub3RhdGlvbktpbmQuQVJST1cgPyAoXG4gICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICB0cmFuc2Zvcm09e1xuICAgICAgICAgICAgICAgIGlzQXJtID8gYHJvdGF0ZSgkezkwICsgKGFubm90YXRpb24gYXMgQW5ub3RhdGlvbldpdGhBcm0pLmFuZ2xlfSlgIDogdW5kZWZpbmVkXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgZD17YE0wLCR7bGluZVdpZHRofSBMJHstYXJyV30sJHstYXJyV30gTCR7YXJyV30sJHstYXJyV30gWmB9XG4gICAgICAgICAgICAgIHN0cm9rZT1cIm5vbmVcIlxuICAgICAgICAgICAgICBmaWxsPXtsaW5lQ29sb3J9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICkgOiBudWxsfVxuICAgICAgICAgIHtraW5kID09PSBBbm5vdGF0aW9uS2luZC5QT0lOVCA/IChcbiAgICAgICAgICAgIDxjaXJjbGUgcj17bGluZVdpZHRoICogMS41fSBmaWxsPXtsaW5lQ29sb3J9IHN0cm9rZT1cIm5vbmVcIiAvPlxuICAgICAgICAgICkgOiBudWxsfVxuICAgICAgICAgIHttb3ZlSGFuZGxlfVxuICAgICAgICAgIHtzZWxlY3Rpb25IaWdobGlnaHR9XG4gICAgICAgIDwvPlxuICAgICAgKTtcbiAgICAgIGJyZWFrO1xuICAgIGRlZmF1bHQ6XG4gICAgICBib2R5ID0gKFxuICAgICAgICA8PlxuICAgICAgICAgIHttb3ZlSGFuZGxlfVxuICAgICAgICAgIHtzZWxlY3Rpb25IaWdobGlnaHR9XG4gICAgICAgIDwvPlxuICAgICAgKTtcbiAgfVxuXG4gIHJldHVybiA8ZyB0cmFuc2Zvcm09e2B0cmFuc2xhdGUoJHt4fSwke3l9KWB9Pntib2R5fTwvZz47XG59O1xuXG5leHBvcnQgZGVmYXVsdCBBbm5vdGF0aW9uTm9kZTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFHQSxJQUFBQSxNQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyxLQUFBLEdBQUFELE9BQUE7QUFFQSxJQUFBRSxVQUFBLEdBQUFGLE9BQUE7QUFDQSxJQUFBRyxnQkFBQSxHQUFBSCxPQUFBO0FBUEE7QUFDQTs7QUFRQSxJQUFNSSxhQUFhLEdBQUcsQ0FBQztBQUV2QixJQUFNQyxVQUFrRCxHQUFHLFNBQXJEQSxVQUFrREEsQ0FBQUMsSUFBQSxFQUFtQjtFQUFBLElBQWRDLEVBQUUsR0FBQUQsSUFBQSxDQUFGQyxFQUFFO0lBQUVDLENBQUMsR0FBQUYsSUFBQSxDQUFERSxDQUFDO0lBQUVDLENBQUMsR0FBQUgsSUFBQSxDQUFERyxDQUFDO0VBQ25FLElBQUFDLGFBQUEsR0FBNEMsSUFBQUMsa0JBQVksRUFBQztNQUFDSixFQUFFLEVBQUZBO0lBQUUsQ0FBQyxDQUFDO0lBQXZESyxVQUFVLEdBQUFGLGFBQUEsQ0FBVkUsVUFBVTtJQUFFQyxTQUFTLEdBQUFILGFBQUEsQ0FBVEcsU0FBUztJQUFFQyxVQUFVLEdBQUFKLGFBQUEsQ0FBVkksVUFBVTtFQUN4QyxvQkFDRWhCLE1BQUEsWUFBQWlCLGFBQUEsZUFBQUMsU0FBQTtJQUNFQyxHQUFHLEVBQUVIO0VBQWtCLEdBQ25CRCxTQUFTLEVBQ1RELFVBQVU7SUFDZE0sRUFBRSxFQUFFVixDQUFFO0lBQ05XLEVBQUUsRUFBRVYsQ0FBRTtJQUNOVyxDQUFDLEVBQUVoQixhQUFjO0lBQ2pCaUIsSUFBSSxFQUFDLGFBQWE7SUFDbEJDLE1BQU0sRUFBQyx1QkFBdUI7SUFDOUJDLFdBQVcsRUFBRSxDQUFFO0lBQ2ZDLE1BQU0sRUFBQyxNQUFNO0lBQ2JDLEtBQUssRUFBRTtNQUFDQyxhQUFhLEVBQUU7SUFBSztFQUFFLEVBQy9CLENBQUM7QUFFTixDQUFDO0FBRUQsSUFBTUMsWUFBb0QsR0FBRyxTQUF2REEsWUFBb0RBLENBQUFDLEtBQUEsRUFBbUI7RUFBQSxJQUFkckIsRUFBRSxHQUFBcUIsS0FBQSxDQUFGckIsRUFBRTtJQUFFQyxDQUFDLEdBQUFvQixLQUFBLENBQURwQixDQUFDO0lBQUVDLENBQUMsR0FBQW1CLEtBQUEsQ0FBRG5CLENBQUM7RUFDckUsSUFBQW9CLGNBQUEsR0FBNEMsSUFBQWxCLGtCQUFZLEVBQUM7TUFBQ0osRUFBRSxFQUFGQTtJQUFFLENBQUMsQ0FBQztJQUF2REssVUFBVSxHQUFBaUIsY0FBQSxDQUFWakIsVUFBVTtJQUFFQyxTQUFTLEdBQUFnQixjQUFBLENBQVRoQixTQUFTO0lBQUVDLFVBQVUsR0FBQWUsY0FBQSxDQUFWZixVQUFVO0VBQ3hDLG9CQUNFaEIsTUFBQSxZQUFBaUIsYUFBQSxlQUFBQyxTQUFBO0lBQ0VDLEdBQUcsRUFBRUg7RUFBa0IsR0FDbkJELFNBQVMsRUFDVEQsVUFBVTtJQUNkTSxFQUFFLEVBQUVWLENBQUU7SUFDTlcsRUFBRSxFQUFFVixDQUFFO0lBQ05XLENBQUMsRUFBRWhCLGFBQWM7SUFDakJpQixJQUFJLEVBQUMsYUFBYTtJQUNsQkMsTUFBTSxFQUFDLHVCQUF1QjtJQUM5QkMsV0FBVyxFQUFFLENBQUU7SUFDZkMsTUFBTSxFQUFDLFdBQVc7SUFDbEJDLEtBQUssRUFBRTtNQUFDQyxhQUFhLEVBQUU7SUFBSztFQUFFLEVBQy9CLENBQUM7QUFFTixDQUFDO0FBU0QsSUFBTUksY0FBdUMsR0FBRyxTQUExQ0EsY0FBdUNBLENBQUFDLEtBQUEsRUFBc0Q7RUFBQSxJQUFqREMsVUFBVSxHQUFBRCxLQUFBLENBQVZDLFVBQVU7SUFBRUMsUUFBUSxHQUFBRixLQUFBLENBQVJFLFFBQVE7SUFBRUMsU0FBUyxHQUFBSCxLQUFBLENBQVRHLFNBQVM7SUFBRUMsVUFBVSxHQUFBSixLQUFBLENBQVZJLFVBQVU7RUFDM0YsSUFBT0MsU0FBUyxHQUFlSixVQUFVLENBQWxDSSxTQUFTO0lBQUVDLFNBQVMsR0FBSUwsVUFBVSxDQUF2QkssU0FBUztFQUMzQixJQUFNQyxNQUFNLEdBQUcsSUFBQUMsMkJBQVUsRUFBQ1AsVUFBVSxFQUFFQyxRQUFRLENBQUM7RUFDL0MsSUFBT08sSUFBSSxHQUFrQkYsTUFBTSxDQUE1QkUsSUFBSTtJQUFFaEMsQ0FBQyxHQUFlOEIsTUFBTSxDQUF0QjlCLENBQUM7SUFBRUMsQ0FBQyxHQUFZNkIsTUFBTSxDQUFuQjdCLENBQUM7SUFBRWdDLEVBQUUsR0FBUUgsTUFBTSxDQUFoQkcsRUFBRTtJQUFFQyxFQUFFLEdBQUlKLE1BQU0sQ0FBWkksRUFBRTtFQUN6QixJQUFNQyxJQUFJLEdBQUcsQ0FBQyxHQUFHTixTQUFTLEdBQUcsQ0FBQztFQUM5QixJQUFNTyxLQUFLLEdBQUcsV0FBVyxJQUFJWixVQUFVO0VBRXZDLElBQU1hLFVBQVUsR0FBR1gsU0FBUyxnQkFDMUJwQyxNQUFBLFlBQUFpQixhQUFBLENBQUNWLFVBQVU7SUFBQ0UsRUFBRSxLQUFBdUMsTUFBQSxDQUFLZCxVQUFVLENBQUN6QixFQUFFLGdCQUFjO0lBQUNDLENBQUMsRUFBRSxDQUFFO0lBQUNDLENBQUMsRUFBRTtFQUFFLENBQUUsQ0FBQyxHQUMzRCxJQUFJO0VBRVIsSUFBTXNDLGtCQUFrQixHQUN0QmIsU0FBUyxJQUFJQyxVQUFVLGdCQUNyQnJDLE1BQUEsWUFBQWlCLGFBQUE7SUFBUUssQ0FBQyxFQUFFaEIsYUFBYSxHQUFHLENBQUU7SUFBQ2lCLElBQUksRUFBQyxNQUFNO0lBQUNDLE1BQU0sRUFBQyxzQkFBc0I7SUFBQ0MsV0FBVyxFQUFFO0VBQUUsQ0FBRSxDQUFDLEdBQ3hGLElBQUk7RUFFVixJQUFJeUIsSUFBcUIsR0FBRyxJQUFJO0VBRWhDLFFBQVFSLElBQUk7SUFDVixLQUFLUyx5QkFBYyxDQUFDQyxNQUFNO01BQUU7UUFDMUIsSUFBTUMsWUFBWSxHQUFHYixNQUFnQztRQUNyRFUsSUFBSSxnQkFDRmxELE1BQUEsWUFBQWlCLGFBQUEsQ0FBQWpCLE1BQUEsWUFBQXNELFFBQUEscUJBQ0V0RCxNQUFBLFlBQUFpQixhQUFBLGVBQUFDLFNBQUE7VUFDRUksQ0FBQyxFQUFFK0IsWUFBWSxDQUFDL0IsQ0FBRTtVQUNsQkMsSUFBSSxFQUFDLE1BQU07VUFDWEMsTUFBTSxFQUFFYyxTQUFVO1VBQ2xCYixXQUFXLEVBQUVjO1FBQVUsR0FDbEJGLFVBQVUsSUFBSUQsU0FBUyxHQUFHO1VBQUNtQixlQUFlLEVBQUU7UUFBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQzdELENBQUMsZUFDRnZELE1BQUEsWUFBQWlCLGFBQUE7VUFDRXVDLENBQUMsTUFBQVIsTUFBQSxDQUFNSyxZQUFZLENBQUNJLEVBQUUsT0FBQVQsTUFBQSxDQUFJSyxZQUFZLENBQUNLLEVBQUUsUUFBQVYsTUFBQSxDQUFLTCxFQUFFLE9BQUFLLE1BQUEsQ0FBSUosRUFBRSxDQUFHO1VBQ3pEcEIsTUFBTSxFQUFFYyxTQUFVO1VBQ2xCYixXQUFXLEVBQUVjLFNBQVU7VUFDdkJoQixJQUFJLEVBQUMsTUFBTTtVQUNYb0MsYUFBYSxFQUFDO1FBQU8sQ0FDdEIsQ0FBQyxFQUNEdkIsU0FBUyxnQkFDUnBDLE1BQUEsWUFBQWlCLGFBQUEsQ0FBQWpCLE1BQUEsWUFBQXNELFFBQUEsUUFDR1AsVUFBVSxFQUNWRSxrQkFBa0IsZUFDbkJqRCxNQUFBLFlBQUFpQixhQUFBLENBQUNZLFlBQVk7VUFBQ3BCLEVBQUUsS0FBQXVDLE1BQUEsQ0FBS2QsVUFBVSxDQUFDekIsRUFBRSxZQUFVO1VBQUNDLENBQUMsRUFBRTJDLFlBQVksQ0FBQy9CLENBQUU7VUFBQ1gsQ0FBQyxFQUFFO1FBQUUsQ0FBRSxDQUN2RSxDQUFDLEdBQ0QsSUFDSixDQUNIO1FBQ0Q7TUFDRjtJQUNBLEtBQUt3Qyx5QkFBYyxDQUFDUyxLQUFLO0lBQ3pCLEtBQUtULHlCQUFjLENBQUNVLEtBQUs7TUFDdkJYLElBQUksZ0JBQ0ZsRCxNQUFBLFlBQUFpQixhQUFBLENBQUFqQixNQUFBLFlBQUFzRCxRQUFBLHFCQUNFdEQsTUFBQSxZQUFBaUIsYUFBQTtRQUNFdUMsQ0FBQyxXQUFBUixNQUFBLENBQVdMLEVBQUUsT0FBQUssTUFBQSxDQUFJSixFQUFFLENBQUc7UUFDdkJwQixNQUFNLEVBQUVjLFNBQVU7UUFDbEJmLElBQUksRUFBQyxNQUFNO1FBQ1hFLFdBQVcsRUFBRWMsU0FBVTtRQUN2Qm9CLGFBQWEsRUFBQztNQUFPLENBQ3RCLENBQUMsRUFDRGpCLElBQUksS0FBS1MseUJBQWMsQ0FBQ1UsS0FBSyxnQkFDNUI3RCxNQUFBLFlBQUFpQixhQUFBO1FBQ0U2QyxTQUFTLEVBQ1BoQixLQUFLLGFBQUFFLE1BQUEsQ0FBYSxFQUFFLEdBQUlkLFVBQVUsQ0FBdUI2QixLQUFLLFNBQU1DLFNBQ3JFO1FBQ0RSLENBQUMsUUFBQVIsTUFBQSxDQUFRVCxTQUFTLFFBQUFTLE1BQUEsQ0FBSyxDQUFDSCxJQUFJLE9BQUFHLE1BQUEsQ0FBSSxDQUFDSCxJQUFJLFFBQUFHLE1BQUEsQ0FBS0gsSUFBSSxPQUFBRyxNQUFBLENBQUksQ0FBQ0gsSUFBSSxPQUFLO1FBQzVEckIsTUFBTSxFQUFDLE1BQU07UUFDYkQsSUFBSSxFQUFFZTtNQUFVLENBQ2pCLENBQUMsR0FDQSxJQUFJLEVBQ1BJLElBQUksS0FBS1MseUJBQWMsQ0FBQ1MsS0FBSyxnQkFDNUI1RCxNQUFBLFlBQUFpQixhQUFBO1FBQVFLLENBQUMsRUFBRWlCLFNBQVMsR0FBRyxHQUFJO1FBQUNoQixJQUFJLEVBQUVlLFNBQVU7UUFBQ2QsTUFBTSxFQUFDO01BQU0sQ0FBRSxDQUFDLEdBQzNELElBQUksRUFDUHVCLFVBQVUsRUFDVkUsa0JBQ0QsQ0FDSDtNQUNEO0lBQ0Y7TUFDRUMsSUFBSSxnQkFDRmxELE1BQUEsWUFBQWlCLGFBQUEsQ0FBQWpCLE1BQUEsWUFBQXNELFFBQUEsUUFDR1AsVUFBVSxFQUNWRSxrQkFDRCxDQUNIO0VBQ0w7RUFFQSxvQkFBT2pELE1BQUEsWUFBQWlCLGFBQUE7SUFBRzZDLFNBQVMsZUFBQWQsTUFBQSxDQUFldEMsQ0FBQyxPQUFBc0MsTUFBQSxDQUFJckMsQ0FBQztFQUFJLEdBQUV1QyxJQUFRLENBQUM7QUFDekQsQ0FBQztBQUFDLElBQUFlLFFBQUEsR0FBQUMsT0FBQSxjQUVhbEMsY0FBYyIsImlnbm9yZUxpc3QiOltdfQ==
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { FC } from 'react';
|
|
2
|
+
import { Annotation } from '@kepler.gl/types';
|
|
3
|
+
import { ActionHandler, updateAnnotation, setSelectedAnnotation } from '@kepler.gl/actions';
|
|
4
|
+
import { MapViewport } from './annotation-utils';
|
|
5
|
+
export type AnnotationOverlayProps = {
|
|
6
|
+
annotations: Annotation[];
|
|
7
|
+
selectedAnnotationId: string | null;
|
|
8
|
+
isEditingAnnotationText: boolean;
|
|
9
|
+
isAnnotationMode: boolean;
|
|
10
|
+
mapIndex: number;
|
|
11
|
+
viewport: MapViewport;
|
|
12
|
+
updateAnnotation: ActionHandler<typeof updateAnnotation>;
|
|
13
|
+
setSelectedAnnotation: ActionHandler<typeof setSelectedAnnotation>;
|
|
14
|
+
};
|
|
15
|
+
declare const AnnotationOverlay: FC<AnnotationOverlayProps>;
|
|
16
|
+
export default AnnotationOverlay;
|
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
var _typeof = require("@babel/runtime/helpers/typeof");
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports["default"] = void 0;
|
|
9
|
+
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
10
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
11
|
+
var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
|
|
12
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
13
|
+
var _styledComponents = _interopRequireDefault(require("styled-components"));
|
|
14
|
+
var _core = require("@dnd-kit/core");
|
|
15
|
+
var _annotationNode = _interopRequireDefault(require("./annotation-node"));
|
|
16
|
+
var _annotationText = _interopRequireDefault(require("./annotation-text"));
|
|
17
|
+
var _annotationUtils = require("./annotation-utils");
|
|
18
|
+
var _templateObject, _templateObject2, _templateObject3; // SPDX-License-Identifier: MIT
|
|
19
|
+
// Copyright contributors to the kepler.gl project
|
|
20
|
+
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
|
|
21
|
+
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { "default": e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n["default"] = e, t && t.set(e, n), n; }
|
|
22
|
+
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; }
|
|
23
|
+
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; }
|
|
24
|
+
var AnnotationOverlayContainer = _styledComponents["default"].div(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n pointer-events: none;\n overflow: hidden;\n z-index: 0;\n"])));
|
|
25
|
+
var AnnotationSvgContainer = _styledComponents["default"].svg(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2["default"])(["\n position: absolute;\n top: 0;\n left: 0;\n pointer-events: none;\n"])));
|
|
26
|
+
var AnnotationTextContainer = _styledComponents["default"].div(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2["default"])(["\n position: absolute;\n top: 0;\n left: 0;\n pointer-events: none;\n"])));
|
|
27
|
+
var AnnotationOverlay = function AnnotationOverlay(_ref) {
|
|
28
|
+
var annotations = _ref.annotations,
|
|
29
|
+
selectedAnnotationId = _ref.selectedAnnotationId,
|
|
30
|
+
isEditingAnnotationText = _ref.isEditingAnnotationText,
|
|
31
|
+
isAnnotationMode = _ref.isAnnotationMode,
|
|
32
|
+
mapIndex = _ref.mapIndex,
|
|
33
|
+
viewport = _ref.viewport,
|
|
34
|
+
_onUpdateAnnotation = _ref.updateAnnotation,
|
|
35
|
+
onSetSelectedAnnotation = _ref.setSelectedAnnotation;
|
|
36
|
+
var annotationsToRender = (0, _react.useMemo)(function () {
|
|
37
|
+
return annotations.filter(function (ann) {
|
|
38
|
+
var _ann$mapIndex;
|
|
39
|
+
return ((_ann$mapIndex = ann.mapIndex) !== null && _ann$mapIndex !== void 0 ? _ann$mapIndex : 0) === mapIndex && ann.isVisible;
|
|
40
|
+
}).reverse();
|
|
41
|
+
}, [annotations, mapIndex]);
|
|
42
|
+
var draggedAnnotationRef = _react["default"].useRef(null);
|
|
43
|
+
var sensors = (0, _core.useSensors)((0, _core.useSensor)(_core.PointerSensor, {
|
|
44
|
+
activationConstraint: {
|
|
45
|
+
distance: 3
|
|
46
|
+
}
|
|
47
|
+
}));
|
|
48
|
+
var accessibility = (0, _react.useMemo)(function () {
|
|
49
|
+
return _objectSpread({
|
|
50
|
+
announcements: {
|
|
51
|
+
onDragStart: function onDragStart() {
|
|
52
|
+
return '';
|
|
53
|
+
},
|
|
54
|
+
onDragOver: function onDragOver() {
|
|
55
|
+
return '';
|
|
56
|
+
},
|
|
57
|
+
onDragEnd: function onDragEnd() {
|
|
58
|
+
return '';
|
|
59
|
+
},
|
|
60
|
+
onDragCancel: function onDragCancel() {
|
|
61
|
+
return '';
|
|
62
|
+
}
|
|
63
|
+
},
|
|
64
|
+
screenReaderInstructions: {
|
|
65
|
+
draggable: ''
|
|
66
|
+
}
|
|
67
|
+
}, typeof document !== 'undefined' ? {
|
|
68
|
+
container: document.body
|
|
69
|
+
} : {});
|
|
70
|
+
}, []);
|
|
71
|
+
var handleDragStart = (0, _react.useCallback)(function (ev) {
|
|
72
|
+
var _annotations$find;
|
|
73
|
+
var annId = "".concat(ev.active.id).split(':')[0];
|
|
74
|
+
var ann = (_annotations$find = annotations.find(function (a) {
|
|
75
|
+
return a.id === annId;
|
|
76
|
+
})) !== null && _annotations$find !== void 0 ? _annotations$find : null;
|
|
77
|
+
draggedAnnotationRef.current = ann;
|
|
78
|
+
if (ann) {
|
|
79
|
+
onSetSelectedAnnotation(ann.id, false);
|
|
80
|
+
}
|
|
81
|
+
}, [annotations, onSetSelectedAnnotation]);
|
|
82
|
+
var handleDragMove = (0, _react.useCallback)(function (ev) {
|
|
83
|
+
var _split = "".concat(ev.active.id).split(':'),
|
|
84
|
+
_split2 = (0, _slicedToArray2["default"])(_split, 2),
|
|
85
|
+
annId = _split2[0],
|
|
86
|
+
handleKind = _split2[1];
|
|
87
|
+
var draggedAnn = draggedAnnotationRef.current;
|
|
88
|
+
if (!draggedAnn || draggedAnn.id !== annId) return;
|
|
89
|
+
var changes = {};
|
|
90
|
+
switch (handleKind) {
|
|
91
|
+
case 'MOVE_POINT':
|
|
92
|
+
changes = (0, _annotationUtils.movePoint)(draggedAnn, ev.delta, viewport);
|
|
93
|
+
break;
|
|
94
|
+
case 'MOVE_TEXT':
|
|
95
|
+
changes = (0, _annotationUtils.moveText)(draggedAnn, ev.delta, viewport);
|
|
96
|
+
break;
|
|
97
|
+
case 'RESIZE':
|
|
98
|
+
changes = (0, _annotationUtils.resizeCircle)(draggedAnn, ev.delta, viewport);
|
|
99
|
+
break;
|
|
100
|
+
}
|
|
101
|
+
if (Object.keys(changes).length > 0) {
|
|
102
|
+
_onUpdateAnnotation(annId, changes);
|
|
103
|
+
}
|
|
104
|
+
}, [viewport, _onUpdateAnnotation]);
|
|
105
|
+
var handleDragEnd = (0, _react.useCallback)(function (_ev) {
|
|
106
|
+
draggedAnnotationRef.current = null;
|
|
107
|
+
}, []);
|
|
108
|
+
var handleSelectAnnotation = (0, _react.useCallback)(function (id, isEditingText) {
|
|
109
|
+
onSetSelectedAnnotation(id, isEditingText);
|
|
110
|
+
}, [onSetSelectedAnnotation]);
|
|
111
|
+
var handleChangeText = (0, _react.useCallback)(function (id, text, editorState) {
|
|
112
|
+
_onUpdateAnnotation(id, _objectSpread({
|
|
113
|
+
label: text
|
|
114
|
+
}, editorState ? {
|
|
115
|
+
editorState: editorState
|
|
116
|
+
} : {}));
|
|
117
|
+
}, [_onUpdateAnnotation]);
|
|
118
|
+
if (!annotationsToRender.length) {
|
|
119
|
+
return null;
|
|
120
|
+
}
|
|
121
|
+
var width = viewport.width,
|
|
122
|
+
height = viewport.height;
|
|
123
|
+
return /*#__PURE__*/_react["default"].createElement(AnnotationOverlayContainer, null, /*#__PURE__*/_react["default"].createElement(_core.DndContext, {
|
|
124
|
+
sensors: sensors,
|
|
125
|
+
accessibility: accessibility,
|
|
126
|
+
onDragStart: handleDragStart,
|
|
127
|
+
onDragMove: handleDragMove,
|
|
128
|
+
onDragEnd: handleDragEnd
|
|
129
|
+
}, /*#__PURE__*/_react["default"].createElement(AnnotationSvgContainer, {
|
|
130
|
+
width: width,
|
|
131
|
+
height: height
|
|
132
|
+
}, annotationsToRender.map(function (annotation) {
|
|
133
|
+
return /*#__PURE__*/_react["default"].createElement(_annotationNode["default"], {
|
|
134
|
+
key: annotation.id,
|
|
135
|
+
annotation: annotation,
|
|
136
|
+
viewport: viewport,
|
|
137
|
+
isEditing: isAnnotationMode,
|
|
138
|
+
isSelected: annotation.id === selectedAnnotationId
|
|
139
|
+
});
|
|
140
|
+
})), /*#__PURE__*/_react["default"].createElement(AnnotationTextContainer, {
|
|
141
|
+
style: {
|
|
142
|
+
width: width,
|
|
143
|
+
height: height
|
|
144
|
+
}
|
|
145
|
+
}, annotationsToRender.map(function (annotation) {
|
|
146
|
+
return /*#__PURE__*/_react["default"].createElement(_annotationText["default"], {
|
|
147
|
+
key: annotation.id,
|
|
148
|
+
annotation: annotation,
|
|
149
|
+
viewport: viewport,
|
|
150
|
+
isEditing: isAnnotationMode,
|
|
151
|
+
isSelected: annotation.id === selectedAnnotationId,
|
|
152
|
+
isEditingText: annotation.id === selectedAnnotationId && isEditingAnnotationText,
|
|
153
|
+
onSelect: function onSelect(isEditingText) {
|
|
154
|
+
return handleSelectAnnotation(annotation.id, isEditingText);
|
|
155
|
+
},
|
|
156
|
+
onChangeText: function onChangeText(text, editorState) {
|
|
157
|
+
return handleChangeText(annotation.id, text, editorState);
|
|
158
|
+
},
|
|
159
|
+
onUpdateAnnotation: function onUpdateAnnotation(config) {
|
|
160
|
+
return _onUpdateAnnotation(annotation.id, config);
|
|
161
|
+
}
|
|
162
|
+
});
|
|
163
|
+
}))));
|
|
164
|
+
};
|
|
165
|
+
var _default = exports["default"] = AnnotationOverlay;
|
|
166
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfc3R5bGVkQ29tcG9uZW50cyIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfY29yZSIsIl9hbm5vdGF0aW9uTm9kZSIsIl9hbm5vdGF0aW9uVGV4dCIsIl9hbm5vdGF0aW9uVXRpbHMiLCJfdGVtcGxhdGVPYmplY3QiLCJfdGVtcGxhdGVPYmplY3QyIiwiX3RlbXBsYXRlT2JqZWN0MyIsIl9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSIsImUiLCJXZWFrTWFwIiwiciIsInQiLCJfX2VzTW9kdWxlIiwiX3R5cGVvZiIsImhhcyIsImdldCIsIm4iLCJfX3Byb3RvX18iLCJhIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJ1IiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiaSIsInNldCIsIm93bktleXMiLCJrZXlzIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwibyIsImZpbHRlciIsImVudW1lcmFibGUiLCJwdXNoIiwiYXBwbHkiLCJfb2JqZWN0U3ByZWFkIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwiZm9yRWFjaCIsIl9kZWZpbmVQcm9wZXJ0eTIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzIiwiZGVmaW5lUHJvcGVydGllcyIsIkFubm90YXRpb25PdmVybGF5Q29udGFpbmVyIiwic3R5bGVkIiwiZGl2IiwiX3RhZ2dlZFRlbXBsYXRlTGl0ZXJhbDIiLCJBbm5vdGF0aW9uU3ZnQ29udGFpbmVyIiwic3ZnIiwiQW5ub3RhdGlvblRleHRDb250YWluZXIiLCJBbm5vdGF0aW9uT3ZlcmxheSIsIl9yZWYiLCJhbm5vdGF0aW9ucyIsInNlbGVjdGVkQW5ub3RhdGlvbklkIiwiaXNFZGl0aW5nQW5ub3RhdGlvblRleHQiLCJpc0Fubm90YXRpb25Nb2RlIiwibWFwSW5kZXgiLCJ2aWV3cG9ydCIsIm9uVXBkYXRlQW5ub3RhdGlvbiIsInVwZGF0ZUFubm90YXRpb24iLCJvblNldFNlbGVjdGVkQW5ub3RhdGlvbiIsInNldFNlbGVjdGVkQW5ub3RhdGlvbiIsImFubm90YXRpb25zVG9SZW5kZXIiLCJ1c2VNZW1vIiwiYW5uIiwiX2FubiRtYXBJbmRleCIsImlzVmlzaWJsZSIsInJldmVyc2UiLCJkcmFnZ2VkQW5ub3RhdGlvblJlZiIsIlJlYWN0IiwidXNlUmVmIiwic2Vuc29ycyIsInVzZVNlbnNvcnMiLCJ1c2VTZW5zb3IiLCJQb2ludGVyU2Vuc29yIiwiYWN0aXZhdGlvbkNvbnN0cmFpbnQiLCJkaXN0YW5jZSIsImFjY2Vzc2liaWxpdHkiLCJhbm5vdW5jZW1lbnRzIiwib25EcmFnU3RhcnQiLCJvbkRyYWdPdmVyIiwib25EcmFnRW5kIiwib25EcmFnQ2FuY2VsIiwic2NyZWVuUmVhZGVySW5zdHJ1Y3Rpb25zIiwiZHJhZ2dhYmxlIiwiZG9jdW1lbnQiLCJjb250YWluZXIiLCJib2R5IiwiaGFuZGxlRHJhZ1N0YXJ0IiwidXNlQ2FsbGJhY2siLCJldiIsIl9hbm5vdGF0aW9ucyRmaW5kIiwiYW5uSWQiLCJjb25jYXQiLCJhY3RpdmUiLCJpZCIsInNwbGl0IiwiZmluZCIsImN1cnJlbnQiLCJoYW5kbGVEcmFnTW92ZSIsIl9zcGxpdCIsIl9zcGxpdDIiLCJfc2xpY2VkVG9BcnJheTIiLCJoYW5kbGVLaW5kIiwiZHJhZ2dlZEFubiIsImNoYW5nZXMiLCJtb3ZlUG9pbnQiLCJkZWx0YSIsIm1vdmVUZXh0IiwicmVzaXplQ2lyY2xlIiwiaGFuZGxlRHJhZ0VuZCIsIl9ldiIsImhhbmRsZVNlbGVjdEFubm90YXRpb24iLCJpc0VkaXRpbmdUZXh0IiwiaGFuZGxlQ2hhbmdlVGV4dCIsInRleHQiLCJlZGl0b3JTdGF0ZSIsImxhYmVsIiwid2lkdGgiLCJoZWlnaHQiLCJjcmVhdGVFbGVtZW50IiwiRG5kQ29udGV4dCIsIm9uRHJhZ01vdmUiLCJtYXAiLCJhbm5vdGF0aW9uIiwia2V5IiwiaXNFZGl0aW5nIiwiaXNTZWxlY3RlZCIsInN0eWxlIiwib25TZWxlY3QiLCJvbkNoYW5nZVRleHQiLCJjb25maWciLCJfZGVmYXVsdCIsImV4cG9ydHMiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvYW5ub3RhdGlvbnMvYW5ub3RhdGlvbi1vdmVybGF5LnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUXG4vLyBDb3B5cmlnaHQgY29udHJpYnV0b3JzIHRvIHRoZSBrZXBsZXIuZ2wgcHJvamVjdFxuXG5pbXBvcnQgUmVhY3QsIHtGQywgdXNlQ2FsbGJhY2ssIHVzZU1lbW99IGZyb20gJ3JlYWN0JztcbmltcG9ydCBzdHlsZWQgZnJvbSAnc3R5bGVkLWNvbXBvbmVudHMnO1xuaW1wb3J0IHtcbiAgRG5kQ29udGV4dCxcbiAgRHJhZ01vdmVFdmVudCxcbiAgRHJhZ1N0YXJ0RXZlbnQsXG4gIERyYWdFbmRFdmVudCxcbiAgUG9pbnRlclNlbnNvcixcbiAgdXNlU2Vuc29yLFxuICB1c2VTZW5zb3JzXG59IGZyb20gJ0BkbmQta2l0L2NvcmUnO1xuaW1wb3J0IHtBbm5vdGF0aW9ufSBmcm9tICdAa2VwbGVyLmdsL3R5cGVzJztcbmltcG9ydCB7QWN0aW9uSGFuZGxlciwgdXBkYXRlQW5ub3RhdGlvbiwgc2V0U2VsZWN0ZWRBbm5vdGF0aW9ufSBmcm9tICdAa2VwbGVyLmdsL2FjdGlvbnMnO1xuaW1wb3J0IEFubm90YXRpb25Ob2RlIGZyb20gJy4vYW5ub3RhdGlvbi1ub2RlJztcbmltcG9ydCBBbm5vdGF0aW9uVGV4dCBmcm9tICcuL2Fubm90YXRpb24tdGV4dCc7XG5pbXBvcnQge01hcFZpZXdwb3J0LCBtb3ZlUG9pbnQsIG1vdmVUZXh0LCByZXNpemVDaXJjbGV9IGZyb20gJy4vYW5ub3RhdGlvbi11dGlscyc7XG5cbmNvbnN0IEFubm90YXRpb25PdmVybGF5Q29udGFpbmVyID0gc3R5bGVkLmRpdmBcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDA7XG4gIGxlZnQ6IDA7XG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IDEwMCU7XG4gIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICB6LWluZGV4OiAwO1xuYDtcblxuY29uc3QgQW5ub3RhdGlvblN2Z0NvbnRhaW5lciA9IHN0eWxlZC5zdmdgXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiAwO1xuICBsZWZ0OiAwO1xuICBwb2ludGVyLWV2ZW50czogbm9uZTtcbmA7XG5cbmNvbnN0IEFubm90YXRpb25UZXh0Q29udGFpbmVyID0gc3R5bGVkLmRpdmBcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDA7XG4gIGxlZnQ6IDA7XG4gIHBvaW50ZXItZXZlbnRzOiBub25lO1xuYDtcblxuZXhwb3J0IHR5cGUgQW5ub3RhdGlvbk92ZXJsYXlQcm9wcyA9IHtcbiAgYW5ub3RhdGlvbnM6IEFubm90YXRpb25bXTtcbiAgc2VsZWN0ZWRBbm5vdGF0aW9uSWQ6IHN0cmluZyB8IG51bGw7XG4gIGlzRWRpdGluZ0Fubm90YXRpb25UZXh0OiBib29sZWFuO1xuICBpc0Fubm90YXRpb25Nb2RlOiBib29sZWFuO1xuICBtYXBJbmRleDogbnVtYmVyO1xuICB2aWV3cG9ydDogTWFwVmlld3BvcnQ7XG4gIHVwZGF0ZUFubm90YXRpb246IEFjdGlvbkhhbmRsZXI8dHlwZW9mIHVwZGF0ZUFubm90YXRpb24+O1xuICBzZXRTZWxlY3RlZEFubm90YXRpb246IEFjdGlvbkhhbmRsZXI8dHlwZW9mIHNldFNlbGVjdGVkQW5ub3RhdGlvbj47XG59O1xuXG5jb25zdCBBbm5vdGF0aW9uT3ZlcmxheTogRkM8QW5ub3RhdGlvbk92ZXJsYXlQcm9wcz4gPSAoe1xuICBhbm5vdGF0aW9ucyxcbiAgc2VsZWN0ZWRBbm5vdGF0aW9uSWQsXG4gIGlzRWRpdGluZ0Fubm90YXRpb25UZXh0LFxuICBpc0Fubm90YXRpb25Nb2RlLFxuICBtYXBJbmRleCxcbiAgdmlld3BvcnQsXG4gIHVwZGF0ZUFubm90YXRpb246IG9uVXBkYXRlQW5ub3RhdGlvbixcbiAgc2V0U2VsZWN0ZWRBbm5vdGF0aW9uOiBvblNldFNlbGVjdGVkQW5ub3RhdGlvblxufSkgPT4ge1xuICBjb25zdCBhbm5vdGF0aW9uc1RvUmVuZGVyID0gdXNlTWVtbyhcbiAgICAoKSA9PiBhbm5vdGF0aW9ucy5maWx0ZXIoYW5uID0+IChhbm4ubWFwSW5kZXggPz8gMCkgPT09IG1hcEluZGV4ICYmIGFubi5pc1Zpc2libGUpLnJldmVyc2UoKSxcbiAgICBbYW5ub3RhdGlvbnMsIG1hcEluZGV4XVxuICApO1xuXG4gIGNvbnN0IGRyYWdnZWRBbm5vdGF0aW9uUmVmID0gUmVhY3QudXNlUmVmPEFubm90YXRpb24gfCBudWxsPihudWxsKTtcblxuICBjb25zdCBzZW5zb3JzID0gdXNlU2Vuc29ycyhcbiAgICB1c2VTZW5zb3IoUG9pbnRlclNlbnNvciwge1xuICAgICAgYWN0aXZhdGlvbkNvbnN0cmFpbnQ6IHtkaXN0YW5jZTogM31cbiAgICB9KVxuICApO1xuXG4gIGNvbnN0IGFjY2Vzc2liaWxpdHkgPSB1c2VNZW1vKFxuICAgICgpID0+ICh7XG4gICAgICBhbm5vdW5jZW1lbnRzOiB7XG4gICAgICAgIG9uRHJhZ1N0YXJ0KCkge1xuICAgICAgICAgIHJldHVybiAnJztcbiAgICAgICAgfSxcbiAgICAgICAgb25EcmFnT3ZlcigpIHtcbiAgICAgICAgICByZXR1cm4gJyc7XG4gICAgICAgIH0sXG4gICAgICAgIG9uRHJhZ0VuZCgpIHtcbiAgICAgICAgICByZXR1cm4gJyc7XG4gICAgICAgIH0sXG4gICAgICAgIG9uRHJhZ0NhbmNlbCgpIHtcbiAgICAgICAgICByZXR1cm4gJyc7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBzY3JlZW5SZWFkZXJJbnN0cnVjdGlvbnM6IHtkcmFnZ2FibGU6ICcnfSxcbiAgICAgIC4uLih0eXBlb2YgZG9jdW1lbnQgIT09ICd1bmRlZmluZWQnID8ge2NvbnRhaW5lcjogZG9jdW1lbnQuYm9keX0gOiB7fSlcbiAgICB9KSxcbiAgICBbXVxuICApO1xuXG4gIGNvbnN0IGhhbmRsZURyYWdTdGFydCA9IHVzZUNhbGxiYWNrKFxuICAgIChldjogRHJhZ1N0YXJ0RXZlbnQpID0+IHtcbiAgICAgIGNvbnN0IGFubklkID0gYCR7ZXYuYWN0aXZlLmlkfWAuc3BsaXQoJzonKVswXTtcbiAgICAgIGNvbnN0IGFubiA9IGFubm90YXRpb25zLmZpbmQoYSA9PiBhLmlkID09PSBhbm5JZCkgPz8gbnVsbDtcbiAgICAgIGRyYWdnZWRBbm5vdGF0aW9uUmVmLmN1cnJlbnQgPSBhbm47XG4gICAgICBpZiAoYW5uKSB7XG4gICAgICAgIG9uU2V0U2VsZWN0ZWRBbm5vdGF0aW9uKGFubi5pZCwgZmFsc2UpO1xuICAgICAgfVxuICAgIH0sXG4gICAgW2Fubm90YXRpb25zLCBvblNldFNlbGVjdGVkQW5ub3RhdGlvbl1cbiAgKTtcblxuICBjb25zdCBoYW5kbGVEcmFnTW92ZSA9IHVzZUNhbGxiYWNrKFxuICAgIChldjogRHJhZ01vdmVFdmVudCkgPT4ge1xuICAgICAgY29uc3QgW2FubklkLCBoYW5kbGVLaW5kXSA9IGAke2V2LmFjdGl2ZS5pZH1gLnNwbGl0KCc6Jyk7XG4gICAgICBjb25zdCBkcmFnZ2VkQW5uID0gZHJhZ2dlZEFubm90YXRpb25SZWYuY3VycmVudDtcbiAgICAgIGlmICghZHJhZ2dlZEFubiB8fCBkcmFnZ2VkQW5uLmlkICE9PSBhbm5JZCkgcmV0dXJuO1xuXG4gICAgICBsZXQgY2hhbmdlczogUGFydGlhbDxBbm5vdGF0aW9uPiA9IHt9O1xuICAgICAgc3dpdGNoIChoYW5kbGVLaW5kKSB7XG4gICAgICAgIGNhc2UgJ01PVkVfUE9JTlQnOlxuICAgICAgICAgIGNoYW5nZXMgPSBtb3ZlUG9pbnQoZHJhZ2dlZEFubiwgZXYuZGVsdGEsIHZpZXdwb3J0KTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnTU9WRV9URVhUJzpcbiAgICAgICAgICBjaGFuZ2VzID0gbW92ZVRleHQoZHJhZ2dlZEFubiwgZXYuZGVsdGEsIHZpZXdwb3J0KTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnUkVTSVpFJzpcbiAgICAgICAgICBjaGFuZ2VzID0gcmVzaXplQ2lyY2xlKGRyYWdnZWRBbm4sIGV2LmRlbHRhLCB2aWV3cG9ydCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBpZiAoT2JqZWN0LmtleXMoY2hhbmdlcykubGVuZ3RoID4gMCkge1xuICAgICAgICBvblVwZGF0ZUFubm90YXRpb24oYW5uSWQsIGNoYW5nZXMpO1xuICAgICAgfVxuICAgIH0sXG4gICAgW3ZpZXdwb3J0LCBvblVwZGF0ZUFubm90YXRpb25dXG4gICk7XG5cbiAgY29uc3QgaGFuZGxlRHJhZ0VuZCA9IHVzZUNhbGxiYWNrKChfZXY6IERyYWdFbmRFdmVudCkgPT4ge1xuICAgIGRyYWdnZWRBbm5vdGF0aW9uUmVmLmN1cnJlbnQgPSBudWxsO1xuICB9LCBbXSk7XG5cbiAgY29uc3QgaGFuZGxlU2VsZWN0QW5ub3RhdGlvbiA9IHVzZUNhbGxiYWNrKFxuICAgIChpZDogc3RyaW5nLCBpc0VkaXRpbmdUZXh0OiBib29sZWFuKSA9PiB7XG4gICAgICBvblNldFNlbGVjdGVkQW5ub3RhdGlvbihpZCwgaXNFZGl0aW5nVGV4dCk7XG4gICAgfSxcbiAgICBbb25TZXRTZWxlY3RlZEFubm90YXRpb25dXG4gICk7XG5cbiAgY29uc3QgaGFuZGxlQ2hhbmdlVGV4dCA9IHVzZUNhbGxiYWNrKFxuICAgIChpZDogc3RyaW5nLCB0ZXh0OiBzdHJpbmcsIGVkaXRvclN0YXRlPzogUmVjb3JkPHN0cmluZywgYW55PikgPT4ge1xuICAgICAgb25VcGRhdGVBbm5vdGF0aW9uKGlkLCB7bGFiZWw6IHRleHQsIC4uLihlZGl0b3JTdGF0ZSA/IHtlZGl0b3JTdGF0ZX0gOiB7fSl9KTtcbiAgICB9LFxuICAgIFtvblVwZGF0ZUFubm90YXRpb25dXG4gICk7XG5cbiAgaWYgKCFhbm5vdGF0aW9uc1RvUmVuZGVyLmxlbmd0aCkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgY29uc3Qge3dpZHRoLCBoZWlnaHR9ID0gdmlld3BvcnQ7XG5cbiAgcmV0dXJuIChcbiAgICA8QW5ub3RhdGlvbk92ZXJsYXlDb250YWluZXI+XG4gICAgICA8RG5kQ29udGV4dFxuICAgICAgICBzZW5zb3JzPXtzZW5zb3JzfVxuICAgICAgICBhY2Nlc3NpYmlsaXR5PXthY2Nlc3NpYmlsaXR5fVxuICAgICAgICBvbkRyYWdTdGFydD17aGFuZGxlRHJhZ1N0YXJ0fVxuICAgICAgICBvbkRyYWdNb3ZlPXtoYW5kbGVEcmFnTW92ZX1cbiAgICAgICAgb25EcmFnRW5kPXtoYW5kbGVEcmFnRW5kfVxuICAgICAgPlxuICAgICAgICA8QW5ub3RhdGlvblN2Z0NvbnRhaW5lciB3aWR0aD17d2lkdGh9IGhlaWdodD17aGVpZ2h0fT5cbiAgICAgICAgICB7YW5ub3RhdGlvbnNUb1JlbmRlci5tYXAoYW5ub3RhdGlvbiA9PiAoXG4gICAgICAgICAgICA8QW5ub3RhdGlvbk5vZGVcbiAgICAgICAgICAgICAga2V5PXthbm5vdGF0aW9uLmlkfVxuICAgICAgICAgICAgICBhbm5vdGF0aW9uPXthbm5vdGF0aW9ufVxuICAgICAgICAgICAgICB2aWV3cG9ydD17dmlld3BvcnR9XG4gICAgICAgICAgICAgIGlzRWRpdGluZz17aXNBbm5vdGF0aW9uTW9kZX1cbiAgICAgICAgICAgICAgaXNTZWxlY3RlZD17YW5ub3RhdGlvbi5pZCA9PT0gc2VsZWN0ZWRBbm5vdGF0aW9uSWR9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICkpfVxuICAgICAgICA8L0Fubm90YXRpb25TdmdDb250YWluZXI+XG4gICAgICAgIDxBbm5vdGF0aW9uVGV4dENvbnRhaW5lciBzdHlsZT17e3dpZHRoLCBoZWlnaHR9fT5cbiAgICAgICAgICB7YW5ub3RhdGlvbnNUb1JlbmRlci5tYXAoYW5ub3RhdGlvbiA9PiAoXG4gICAgICAgICAgICA8QW5ub3RhdGlvblRleHRcbiAgICAgICAgICAgICAga2V5PXthbm5vdGF0aW9uLmlkfVxuICAgICAgICAgICAgICBhbm5vdGF0aW9uPXthbm5vdGF0aW9ufVxuICAgICAgICAgICAgICB2aWV3cG9ydD17dmlld3BvcnR9XG4gICAgICAgICAgICAgIGlzRWRpdGluZz17aXNBbm5vdGF0aW9uTW9kZX1cbiAgICAgICAgICAgICAgaXNTZWxlY3RlZD17YW5ub3RhdGlvbi5pZCA9PT0gc2VsZWN0ZWRBbm5vdGF0aW9uSWR9XG4gICAgICAgICAgICAgIGlzRWRpdGluZ1RleHQ9e2Fubm90YXRpb24uaWQgPT09IHNlbGVjdGVkQW5ub3RhdGlvbklkICYmIGlzRWRpdGluZ0Fubm90YXRpb25UZXh0fVxuICAgICAgICAgICAgICBvblNlbGVjdD17aXNFZGl0aW5nVGV4dCA9PiBoYW5kbGVTZWxlY3RBbm5vdGF0aW9uKGFubm90YXRpb24uaWQsIGlzRWRpdGluZ1RleHQpfVxuICAgICAgICAgICAgICBvbkNoYW5nZVRleHQ9eyh0ZXh0LCBlZGl0b3JTdGF0ZSkgPT5cbiAgICAgICAgICAgICAgICBoYW5kbGVDaGFuZ2VUZXh0KGFubm90YXRpb24uaWQsIHRleHQsIGVkaXRvclN0YXRlKVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIG9uVXBkYXRlQW5ub3RhdGlvbj17Y29uZmlnID0+IG9uVXBkYXRlQW5ub3RhdGlvbihhbm5vdGF0aW9uLmlkLCBjb25maWcpfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICApKX1cbiAgICAgICAgPC9Bbm5vdGF0aW9uVGV4dENvbnRhaW5lcj5cbiAgICAgIDwvRG5kQ29udGV4dD5cbiAgICA8L0Fubm90YXRpb25PdmVybGF5Q29udGFpbmVyPlxuICApO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgQW5ub3RhdGlvbk92ZXJsYXk7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBR0EsSUFBQUEsTUFBQSxHQUFBQyx1QkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsaUJBQUEsR0FBQUMsc0JBQUEsQ0FBQUYsT0FBQTtBQUNBLElBQUFHLEtBQUEsR0FBQUgsT0FBQTtBQVdBLElBQUFJLGVBQUEsR0FBQUYsc0JBQUEsQ0FBQUYsT0FBQTtBQUNBLElBQUFLLGVBQUEsR0FBQUgsc0JBQUEsQ0FBQUYsT0FBQTtBQUNBLElBQUFNLGdCQUFBLEdBQUFOLE9BQUE7QUFBa0YsSUFBQU8sZUFBQSxFQUFBQyxnQkFBQSxFQUFBQyxnQkFBQSxFQWxCbEY7QUFDQTtBQUFBLFNBQUFDLHlCQUFBQyxDQUFBLDZCQUFBQyxPQUFBLG1CQUFBQyxDQUFBLE9BQUFELE9BQUEsSUFBQUUsQ0FBQSxPQUFBRixPQUFBLFlBQUFGLHdCQUFBLFlBQUFBLHlCQUFBQyxDQUFBLFdBQUFBLENBQUEsR0FBQUcsQ0FBQSxHQUFBRCxDQUFBLEtBQUFGLENBQUE7QUFBQSxTQUFBWix3QkFBQVksQ0FBQSxFQUFBRSxDQUFBLFNBQUFBLENBQUEsSUFBQUYsQ0FBQSxJQUFBQSxDQUFBLENBQUFJLFVBQUEsU0FBQUosQ0FBQSxlQUFBQSxDQUFBLGdCQUFBSyxPQUFBLENBQUFMLENBQUEsMEJBQUFBLENBQUEsc0JBQUFBLENBQUEsUUFBQUcsQ0FBQSxHQUFBSix3QkFBQSxDQUFBRyxDQUFBLE9BQUFDLENBQUEsSUFBQUEsQ0FBQSxDQUFBRyxHQUFBLENBQUFOLENBQUEsVUFBQUcsQ0FBQSxDQUFBSSxHQUFBLENBQUFQLENBQUEsT0FBQVEsQ0FBQSxLQUFBQyxTQUFBLFVBQUFDLENBQUEsR0FBQUMsTUFBQSxDQUFBQyxjQUFBLElBQUFELE1BQUEsQ0FBQUUsd0JBQUEsV0FBQUMsQ0FBQSxJQUFBZCxDQUFBLG9CQUFBYyxDQUFBLE9BQUFDLGNBQUEsQ0FBQUMsSUFBQSxDQUFBaEIsQ0FBQSxFQUFBYyxDQUFBLFNBQUFHLENBQUEsR0FBQVAsQ0FBQSxHQUFBQyxNQUFBLENBQUFFLHdCQUFBLENBQUFiLENBQUEsRUFBQWMsQ0FBQSxVQUFBRyxDQUFBLEtBQUFBLENBQUEsQ0FBQVYsR0FBQSxJQUFBVSxDQUFBLENBQUFDLEdBQUEsSUFBQVAsTUFBQSxDQUFBQyxjQUFBLENBQUFKLENBQUEsRUFBQU0sQ0FBQSxFQUFBRyxDQUFBLElBQUFULENBQUEsQ0FBQU0sQ0FBQSxJQUFBZCxDQUFBLENBQUFjLENBQUEsWUFBQU4sQ0FBQSxjQUFBUixDQUFBLEVBQUFHLENBQUEsSUFBQUEsQ0FBQSxDQUFBZSxHQUFBLENBQUFsQixDQUFBLEVBQUFRLENBQUEsR0FBQUEsQ0FBQTtBQUFBLFNBQUFXLFFBQUFuQixDQUFBLEVBQUFFLENBQUEsUUFBQUMsQ0FBQSxHQUFBUSxNQUFBLENBQUFTLElBQUEsQ0FBQXBCLENBQUEsT0FBQVcsTUFBQSxDQUFBVSxxQkFBQSxRQUFBQyxDQUFBLEdBQUFYLE1BQUEsQ0FBQVUscUJBQUEsQ0FBQXJCLENBQUEsR0FBQUUsQ0FBQSxLQUFBb0IsQ0FBQSxHQUFBQSxDQUFBLENBQUFDLE1BQUEsV0FBQXJCLENBQUEsV0FBQVMsTUFBQSxDQUFBRSx3QkFBQSxDQUFBYixDQUFBLEVBQUFFLENBQUEsRUFBQXNCLFVBQUEsT0FBQXJCLENBQUEsQ0FBQXNCLElBQUEsQ0FBQUMsS0FBQSxDQUFBdkIsQ0FBQSxFQUFBbUIsQ0FBQSxZQUFBbkIsQ0FBQTtBQUFBLFNBQUF3QixjQUFBM0IsQ0FBQSxhQUFBRSxDQUFBLE1BQUFBLENBQUEsR0FBQTBCLFNBQUEsQ0FBQUMsTUFBQSxFQUFBM0IsQ0FBQSxVQUFBQyxDQUFBLFdBQUF5QixTQUFBLENBQUExQixDQUFBLElBQUEwQixTQUFBLENBQUExQixDQUFBLFFBQUFBLENBQUEsT0FBQWlCLE9BQUEsQ0FBQVIsTUFBQSxDQUFBUixDQUFBLE9BQUEyQixPQUFBLFdBQUE1QixDQUFBLFFBQUE2QixnQkFBQSxhQUFBL0IsQ0FBQSxFQUFBRSxDQUFBLEVBQUFDLENBQUEsQ0FBQUQsQ0FBQSxTQUFBUyxNQUFBLENBQUFxQix5QkFBQSxHQUFBckIsTUFBQSxDQUFBc0IsZ0JBQUEsQ0FBQWpDLENBQUEsRUFBQVcsTUFBQSxDQUFBcUIseUJBQUEsQ0FBQTdCLENBQUEsS0FBQWdCLE9BQUEsQ0FBQVIsTUFBQSxDQUFBUixDQUFBLEdBQUEyQixPQUFBLFdBQUE1QixDQUFBLElBQUFTLE1BQUEsQ0FBQUMsY0FBQSxDQUFBWixDQUFBLEVBQUFFLENBQUEsRUFBQVMsTUFBQSxDQUFBRSx3QkFBQSxDQUFBVixDQUFBLEVBQUFELENBQUEsaUJBQUFGLENBQUE7QUFtQkEsSUFBTWtDLDBCQUEwQixHQUFHQyw0QkFBTSxDQUFDQyxHQUFHLENBQUF4QyxlQUFBLEtBQUFBLGVBQUEsT0FBQXlDLHVCQUFBLGtLQVM1QztBQUVELElBQU1DLHNCQUFzQixHQUFHSCw0QkFBTSxDQUFDSSxHQUFHLENBQUExQyxnQkFBQSxLQUFBQSxnQkFBQSxPQUFBd0MsdUJBQUEsNkZBS3hDO0FBRUQsSUFBTUcsdUJBQXVCLEdBQUdMLDRCQUFNLENBQUNDLEdBQUcsQ0FBQXRDLGdCQUFBLEtBQUFBLGdCQUFBLE9BQUF1Qyx1QkFBQSw2RkFLekM7QUFhRCxJQUFNSSxpQkFBNkMsR0FBRyxTQUFoREEsaUJBQTZDQSxDQUFBQyxJQUFBLEVBUzdDO0VBQUEsSUFSSkMsV0FBVyxHQUFBRCxJQUFBLENBQVhDLFdBQVc7SUFDWEMsb0JBQW9CLEdBQUFGLElBQUEsQ0FBcEJFLG9CQUFvQjtJQUNwQkMsdUJBQXVCLEdBQUFILElBQUEsQ0FBdkJHLHVCQUF1QjtJQUN2QkMsZ0JBQWdCLEdBQUFKLElBQUEsQ0FBaEJJLGdCQUFnQjtJQUNoQkMsUUFBUSxHQUFBTCxJQUFBLENBQVJLLFFBQVE7SUFDUkMsUUFBUSxHQUFBTixJQUFBLENBQVJNLFFBQVE7SUFDVUMsbUJBQWtCLEdBQUFQLElBQUEsQ0FBcENRLGdCQUFnQjtJQUNPQyx1QkFBdUIsR0FBQVQsSUFBQSxDQUE5Q1UscUJBQXFCO0VBRXJCLElBQU1DLG1CQUFtQixHQUFHLElBQUFDLGNBQU8sRUFDakM7SUFBQSxPQUFNWCxXQUFXLENBQUNwQixNQUFNLENBQUMsVUFBQWdDLEdBQUc7TUFBQSxJQUFBQyxhQUFBO01BQUEsT0FBSSxFQUFBQSxhQUFBLEdBQUNELEdBQUcsQ0FBQ1IsUUFBUSxjQUFBUyxhQUFBLGNBQUFBLGFBQUEsR0FBSSxDQUFDLE1BQU1ULFFBQVEsSUFBSVEsR0FBRyxDQUFDRSxTQUFTO0lBQUEsRUFBQyxDQUFDQyxPQUFPLENBQUMsQ0FBQztFQUFBLEdBQzVGLENBQUNmLFdBQVcsRUFBRUksUUFBUSxDQUN4QixDQUFDO0VBRUQsSUFBTVksb0JBQW9CLEdBQUdDLGlCQUFLLENBQUNDLE1BQU0sQ0FBb0IsSUFBSSxDQUFDO0VBRWxFLElBQU1DLE9BQU8sR0FBRyxJQUFBQyxnQkFBVSxFQUN4QixJQUFBQyxlQUFTLEVBQUNDLG1CQUFhLEVBQUU7SUFDdkJDLG9CQUFvQixFQUFFO01BQUNDLFFBQVEsRUFBRTtJQUFDO0VBQ3BDLENBQUMsQ0FDSCxDQUFDO0VBRUQsSUFBTUMsYUFBYSxHQUFHLElBQUFkLGNBQU8sRUFDM0I7SUFBQSxPQUFBM0IsYUFBQTtNQUNFMEMsYUFBYSxFQUFFO1FBQ2JDLFdBQVcsV0FBWEEsV0FBV0EsQ0FBQSxFQUFHO1VBQ1osT0FBTyxFQUFFO1FBQ1gsQ0FBQztRQUNEQyxVQUFVLFdBQVZBLFVBQVVBLENBQUEsRUFBRztVQUNYLE9BQU8sRUFBRTtRQUNYLENBQUM7UUFDREMsU0FBUyxXQUFUQSxTQUFTQSxDQUFBLEVBQUc7VUFDVixPQUFPLEVBQUU7UUFDWCxDQUFDO1FBQ0RDLFlBQVksV0FBWkEsWUFBWUEsQ0FBQSxFQUFHO1VBQ2IsT0FBTyxFQUFFO1FBQ1g7TUFDRixDQUFDO01BQ0RDLHdCQUF3QixFQUFFO1FBQUNDLFNBQVMsRUFBRTtNQUFFO0lBQUMsR0FDckMsT0FBT0MsUUFBUSxLQUFLLFdBQVcsR0FBRztNQUFDQyxTQUFTLEVBQUVELFFBQVEsQ0FBQ0U7SUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0VBQUEsQ0FDckUsRUFDRixFQUNGLENBQUM7RUFFRCxJQUFNQyxlQUFlLEdBQUcsSUFBQUMsa0JBQVcsRUFDakMsVUFBQ0MsRUFBa0IsRUFBSztJQUFBLElBQUFDLGlCQUFBO0lBQ3RCLElBQU1DLEtBQUssR0FBRyxHQUFBQyxNQUFBLENBQUdILEVBQUUsQ0FBQ0ksTUFBTSxDQUFDQyxFQUFFLEVBQUdDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDN0MsSUFBTWhDLEdBQUcsSUFBQTJCLGlCQUFBLEdBQUd2QyxXQUFXLENBQUM2QyxJQUFJLENBQUMsVUFBQTlFLENBQUM7TUFBQSxPQUFJQSxDQUFDLENBQUM0RSxFQUFFLEtBQUtILEtBQUs7SUFBQSxFQUFDLGNBQUFELGlCQUFBLGNBQUFBLGlCQUFBLEdBQUksSUFBSTtJQUN6RHZCLG9CQUFvQixDQUFDOEIsT0FBTyxHQUFHbEMsR0FBRztJQUNsQyxJQUFJQSxHQUFHLEVBQUU7TUFDUEosdUJBQXVCLENBQUNJLEdBQUcsQ0FBQytCLEVBQUUsRUFBRSxLQUFLLENBQUM7SUFDeEM7RUFDRixDQUFDLEVBQ0QsQ0FBQzNDLFdBQVcsRUFBRVEsdUJBQXVCLENBQ3ZDLENBQUM7RUFFRCxJQUFNdUMsY0FBYyxHQUFHLElBQUFWLGtCQUFXLEVBQ2hDLFVBQUNDLEVBQWlCLEVBQUs7SUFDckIsSUFBQVUsTUFBQSxHQUE0QixHQUFBUCxNQUFBLENBQUdILEVBQUUsQ0FBQ0ksTUFBTSxDQUFDQyxFQUFFLEVBQUdDLEtBQUssQ0FBQyxHQUFHLENBQUM7TUFBQUssT0FBQSxPQUFBQyxlQUFBLGFBQUFGLE1BQUE7TUFBakRSLEtBQUssR0FBQVMsT0FBQTtNQUFFRSxVQUFVLEdBQUFGLE9BQUE7SUFDeEIsSUFBTUcsVUFBVSxHQUFHcEMsb0JBQW9CLENBQUM4QixPQUFPO0lBQy9DLElBQUksQ0FBQ00sVUFBVSxJQUFJQSxVQUFVLENBQUNULEVBQUUsS0FBS0gsS0FBSyxFQUFFO0lBRTVDLElBQUlhLE9BQTRCLEdBQUcsQ0FBQyxDQUFDO0lBQ3JDLFFBQVFGLFVBQVU7TUFDaEIsS0FBSyxZQUFZO1FBQ2ZFLE9BQU8sR0FBRyxJQUFBQywwQkFBUyxFQUFDRixVQUFVLEVBQUVkLEVBQUUsQ0FBQ2lCLEtBQUssRUFBRWxELFFBQVEsQ0FBQztRQUNuRDtNQUNGLEtBQUssV0FBVztRQUNkZ0QsT0FBTyxHQUFHLElBQUFHLHlCQUFRLEVBQUNKLFVBQVUsRUFBRWQsRUFBRSxDQUFDaUIsS0FBSyxFQUFFbEQsUUFBUSxDQUFDO1FBQ2xEO01BQ0YsS0FBSyxRQUFRO1FBQ1hnRCxPQUFPLEdBQUcsSUFBQUksNkJBQVksRUFBQ0wsVUFBVSxFQUFFZCxFQUFFLENBQUNpQixLQUFLLEVBQUVsRCxRQUFRLENBQUM7UUFDdEQ7SUFDSjtJQUNBLElBQUlyQyxNQUFNLENBQUNTLElBQUksQ0FBQzRFLE9BQU8sQ0FBQyxDQUFDbkUsTUFBTSxHQUFHLENBQUMsRUFBRTtNQUNuQ29CLG1CQUFrQixDQUFDa0MsS0FBSyxFQUFFYSxPQUFPLENBQUM7SUFDcEM7RUFDRixDQUFDLEVBQ0QsQ0FBQ2hELFFBQVEsRUFBRUMsbUJBQWtCLENBQy9CLENBQUM7RUFFRCxJQUFNb0QsYUFBYSxHQUFHLElBQUFyQixrQkFBVyxFQUFDLFVBQUNzQixHQUFpQixFQUFLO0lBQ3ZEM0Msb0JBQW9CLENBQUM4QixPQUFPLEdBQUcsSUFBSTtFQUNyQyxDQUFDLEVBQUUsRUFBRSxDQUFDO0VBRU4sSUFBTWMsc0JBQXNCLEdBQUcsSUFBQXZCLGtCQUFXLEVBQ3hDLFVBQUNNLEVBQVUsRUFBRWtCLGFBQXNCLEVBQUs7SUFDdENyRCx1QkFBdUIsQ0FBQ21DLEVBQUUsRUFBRWtCLGFBQWEsQ0FBQztFQUM1QyxDQUFDLEVBQ0QsQ0FBQ3JELHVCQUF1QixDQUMxQixDQUFDO0VBRUQsSUFBTXNELGdCQUFnQixHQUFHLElBQUF6QixrQkFBVyxFQUNsQyxVQUFDTSxFQUFVLEVBQUVvQixJQUFZLEVBQUVDLFdBQWlDLEVBQUs7SUFDL0QxRCxtQkFBa0IsQ0FBQ3FDLEVBQUUsRUFBQTNELGFBQUE7TUFBR2lGLEtBQUssRUFBRUY7SUFBSSxHQUFNQyxXQUFXLEdBQUc7TUFBQ0EsV0FBVyxFQUFYQTtJQUFXLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBRSxDQUFDO0VBQzlFLENBQUMsRUFDRCxDQUFDMUQsbUJBQWtCLENBQ3JCLENBQUM7RUFFRCxJQUFJLENBQUNJLG1CQUFtQixDQUFDeEIsTUFBTSxFQUFFO0lBQy9CLE9BQU8sSUFBSTtFQUNiO0VBRUEsSUFBT2dGLEtBQUssR0FBWTdELFFBQVEsQ0FBekI2RCxLQUFLO0lBQUVDLE1BQU0sR0FBSTlELFFBQVEsQ0FBbEI4RCxNQUFNO0VBRXBCLG9CQUNFM0gsTUFBQSxZQUFBNEgsYUFBQSxDQUFDN0UsMEJBQTBCLHFCQUN6Qi9DLE1BQUEsWUFBQTRILGFBQUEsQ0FBQ3ZILEtBQUEsQ0FBQXdILFVBQVU7SUFDVGxELE9BQU8sRUFBRUEsT0FBUTtJQUNqQk0sYUFBYSxFQUFFQSxhQUFjO0lBQzdCRSxXQUFXLEVBQUVTLGVBQWdCO0lBQzdCa0MsVUFBVSxFQUFFdkIsY0FBZTtJQUMzQmxCLFNBQVMsRUFBRTZCO0VBQWMsZ0JBRXpCbEgsTUFBQSxZQUFBNEgsYUFBQSxDQUFDekUsc0JBQXNCO0lBQUN1RSxLQUFLLEVBQUVBLEtBQU07SUFBQ0MsTUFBTSxFQUFFQTtFQUFPLEdBQ2xEekQsbUJBQW1CLENBQUM2RCxHQUFHLENBQUMsVUFBQUMsVUFBVTtJQUFBLG9CQUNqQ2hJLE1BQUEsWUFBQTRILGFBQUEsQ0FBQ3RILGVBQUEsV0FBYztNQUNiMkgsR0FBRyxFQUFFRCxVQUFVLENBQUM3QixFQUFHO01BQ25CNkIsVUFBVSxFQUFFQSxVQUFXO01BQ3ZCbkUsUUFBUSxFQUFFQSxRQUFTO01BQ25CcUUsU0FBUyxFQUFFdkUsZ0JBQWlCO01BQzVCd0UsVUFBVSxFQUFFSCxVQUFVLENBQUM3QixFQUFFLEtBQUsxQztJQUFxQixDQUNwRCxDQUFDO0VBQUEsQ0FDSCxDQUNxQixDQUFDLGVBQ3pCekQsTUFBQSxZQUFBNEgsYUFBQSxDQUFDdkUsdUJBQXVCO0lBQUMrRSxLQUFLLEVBQUU7TUFBQ1YsS0FBSyxFQUFMQSxLQUFLO01BQUVDLE1BQU0sRUFBTkE7SUFBTTtFQUFFLEdBQzdDekQsbUJBQW1CLENBQUM2RCxHQUFHLENBQUMsVUFBQUMsVUFBVTtJQUFBLG9CQUNqQ2hJLE1BQUEsWUFBQTRILGFBQUEsQ0FBQ3JILGVBQUEsV0FBYztNQUNiMEgsR0FBRyxFQUFFRCxVQUFVLENBQUM3QixFQUFHO01BQ25CNkIsVUFBVSxFQUFFQSxVQUFXO01BQ3ZCbkUsUUFBUSxFQUFFQSxRQUFTO01BQ25CcUUsU0FBUyxFQUFFdkUsZ0JBQWlCO01BQzVCd0UsVUFBVSxFQUFFSCxVQUFVLENBQUM3QixFQUFFLEtBQUsxQyxvQkFBcUI7TUFDbkQ0RCxhQUFhLEVBQUVXLFVBQVUsQ0FBQzdCLEVBQUUsS0FBSzFDLG9CQUFvQixJQUFJQyx1QkFBd0I7TUFDakYyRSxRQUFRLEVBQUUsU0FBVkEsUUFBUUEsQ0FBRWhCLGFBQWE7UUFBQSxPQUFJRCxzQkFBc0IsQ0FBQ1ksVUFBVSxDQUFDN0IsRUFBRSxFQUFFa0IsYUFBYSxDQUFDO01BQUEsQ0FBQztNQUNoRmlCLFlBQVksRUFBRSxTQUFkQSxZQUFZQSxDQUFHZixJQUFJLEVBQUVDLFdBQVc7UUFBQSxPQUM5QkYsZ0JBQWdCLENBQUNVLFVBQVUsQ0FBQzdCLEVBQUUsRUFBRW9CLElBQUksRUFBRUMsV0FBVyxDQUFDO01BQUEsQ0FDbkQ7TUFDRDFELGtCQUFrQixFQUFFLFNBQXBCQSxrQkFBa0JBLENBQUV5RSxNQUFNO1FBQUEsT0FBSXpFLG1CQUFrQixDQUFDa0UsVUFBVSxDQUFDN0IsRUFBRSxFQUFFb0MsTUFBTSxDQUFDO01BQUE7SUFBQyxDQUN6RSxDQUFDO0VBQUEsQ0FDSCxDQUNzQixDQUNmLENBQ2MsQ0FBQztBQUVqQyxDQUFDO0FBQUMsSUFBQUMsUUFBQSxHQUFBQyxPQUFBLGNBRWFuRixpQkFBaUIiLCJpZ25vcmVMaXN0IjpbXX0=
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { IntlShape } from 'react-intl';
|
|
3
|
+
import { addAnnotation, removeAnnotation, updateAnnotation, duplicateAnnotation, setSelectedAnnotation, ActionHandler } from '@kepler.gl/actions';
|
|
4
|
+
import { VisState } from '@kepler.gl/schemas';
|
|
5
|
+
import { MapState } from '@kepler.gl/types';
|
|
6
|
+
export type AnnotationManagerState = {
|
|
7
|
+
visState: VisState;
|
|
8
|
+
mapState: MapState;
|
|
9
|
+
visStateActions: {
|
|
10
|
+
addAnnotation: ActionHandler<typeof addAnnotation>;
|
|
11
|
+
removeAnnotation: ActionHandler<typeof removeAnnotation>;
|
|
12
|
+
updateAnnotation: ActionHandler<typeof updateAnnotation>;
|
|
13
|
+
duplicateAnnotation: ActionHandler<typeof duplicateAnnotation>;
|
|
14
|
+
setSelectedAnnotation: ActionHandler<typeof setSelectedAnnotation>;
|
|
15
|
+
};
|
|
16
|
+
};
|
|
17
|
+
export type AnnotationManagerProps = {
|
|
18
|
+
intl: IntlShape;
|
|
19
|
+
} & AnnotationManagerState;
|
|
20
|
+
declare function AnnotationManagerFactory(): React.FC<any>;
|
|
21
|
+
declare namespace AnnotationManagerFactory {
|
|
22
|
+
var deps: any[];
|
|
23
|
+
}
|
|
24
|
+
export default AnnotationManagerFactory;
|