kepler.gl
Version:
kepler.gl is a webgl based application to visualize large scale location data in the browser
144 lines (143 loc) • 25.3 kB
JavaScript
"use strict";
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
var _typeof = require("@babel/runtime/helpers/typeof");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports["default"] = DatasetTitleFactory;
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
var _react = _interopRequireWildcard(require("react"));
var _styledComponents = _interopRequireDefault(require("styled-components"));
var _localization = require("@kepler.gl/localization");
var _layers = require("@kepler.gl/layers");
var _styledComponents2 = require("../../common/styled-components");
var _icons = require("../../common/icons");
var _datasetTag = _interopRequireDefault(require("./dataset-tag"));
var _customPicker = _interopRequireDefault(require("../layer-panel/custom-picker"));
var _ = require("../..");
var _utils = require("@kepler.gl/utils");
var _templateObject, _templateObject2; // SPDX-License-Identifier: MIT
// Copyright contributors to the kepler.gl project
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); }
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; }
var StyledDatasetTitle = _styledComponents["default"].div(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n color: ", ";\n display: flex;\n align-items: center;\n\n .source-data-arrow {\n height: 16px;\n }\n &:hover {\n cursor: ", ";\n\n .dataset-name {\n color: ", ";\n }\n\n .dataset-action {\n color: ", ";\n opacity: 1;\n }\n\n .dataset-action:hover {\n color: ", ";\n }\n }\n"])), function (props) {
return props.theme.textColor;
}, function (props) {
return props.$clickable ? 'pointer' : 'auto';
}, function (props) {
return props.$clickable ? props.theme.textColorHl : props.theme.textColor;
}, function (props) {
return props.theme.textColor;
}, function (props) {
return props.theme.textColorHl;
});
var DataTagAction = _styledComponents["default"].div(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2["default"])(["\n margin-left: 12px;\n height: 16px;\n opacity: 0;\n"])));
var ShowDataTable = function ShowDataTable(_ref) {
var id = _ref.id,
showDatasetTable = _ref.showDatasetTable;
return /*#__PURE__*/_react["default"].createElement(DataTagAction, {
className: "dataset-action show-data-table",
"data-tip": true,
"data-for": "data-table-".concat(id)
}, /*#__PURE__*/_react["default"].createElement(_layers.Table, {
height: "16px",
onClick: function onClick(e) {
e.stopPropagation();
showDatasetTable === null || showDatasetTable === void 0 || showDatasetTable(id);
}
}), /*#__PURE__*/_react["default"].createElement(_styledComponents2.Tooltip, {
id: "data-table-".concat(id),
effect: "solid"
}, /*#__PURE__*/_react["default"].createElement("span", null, /*#__PURE__*/_react["default"].createElement(_localization.FormattedMessage, {
id: 'datasetTitle.showDataTable'
}))));
};
var RemoveDataset = function RemoveDataset(_ref2) {
var datasetKey = _ref2.datasetKey,
removeDataset = _ref2.removeDataset;
return /*#__PURE__*/_react["default"].createElement(DataTagAction, {
className: "dataset-action remove-dataset",
"data-tip": true,
"data-for": "delete-".concat(datasetKey)
}, /*#__PURE__*/_react["default"].createElement(_icons.Trash, {
height: "16px",
onClick: function onClick(e) {
e.stopPropagation();
removeDataset === null || removeDataset === void 0 || removeDataset(datasetKey);
}
}), /*#__PURE__*/_react["default"].createElement(_styledComponents2.Tooltip, {
id: "delete-".concat(datasetKey),
effect: "solid",
type: "error"
}, /*#__PURE__*/_react["default"].createElement("span", null, /*#__PURE__*/_react["default"].createElement(_localization.FormattedMessage, {
id: 'datasetTitle.removeDataset'
}))));
};
DatasetTitleFactory.deps = [_datasetTag["default"]];
function DatasetTitleFactory(DatasetTag) {
var DatasetTitle = function DatasetTitle(_ref3) {
var showDatasetTable = _ref3.showDatasetTable,
showDeleteDataset = _ref3.showDeleteDataset,
onTitleClick = _ref3.onTitleClick,
removeDataset = _ref3.removeDataset,
dataset = _ref3.dataset,
updateTableColor = _ref3.updateTableColor;
var _useState = (0, _react.useState)(false),
_useState2 = (0, _slicedToArray2["default"])(_useState, 2),
displayColorPicker = _useState2[0],
setDisplayColorPicker = _useState2[1];
var root = (0, _react.useRef)(null);
var datasetId = dataset.id;
var _handleClick = (0, _react.useCallback)(function () {
setDisplayColorPicker(!displayColorPicker);
}, [setDisplayColorPicker, displayColorPicker]);
var _handleClosePicker = (0, _react.useCallback)(function () {
setDisplayColorPicker(false);
}, [setDisplayColorPicker]);
var _handleCustomPicker = (0, _react.useCallback)(function (color) {
updateTableColor(datasetId, [color.rgb.r, color.rgb.g, color.rgb.b]);
}, [updateTableColor, datasetId]);
var _onClickTitle = (0, _react.useCallback)(function (e) {
e.stopPropagation();
if (typeof onTitleClick === 'function') {
onTitleClick();
} else if (typeof showDatasetTable === 'function') {
if (dataset.disableDataOperation) return;
showDatasetTable(datasetId);
}
}, [onTitleClick, showDatasetTable, datasetId, dataset.disableDataOperation]);
return /*#__PURE__*/_react["default"].createElement("div", {
className: "custom-palette-panel",
ref: root
}, /*#__PURE__*/_react["default"].createElement(StyledDatasetTitle, {
className: "source-data-title",
$clickable: Boolean(showDatasetTable || onTitleClick)
}, /*#__PURE__*/_react["default"].createElement(DatasetTag, {
dataset: dataset,
onClick: _onClickTitle,
updateTableColor: updateTableColor,
onClickSquare: _handleClick
}), /*#__PURE__*/_react["default"].createElement(_.Portaled, {
isOpened: displayColorPicker !== false,
left: 110,
top: -50,
onClose: _handleClosePicker
}, /*#__PURE__*/_react["default"].createElement(_customPicker["default"], {
color: (0, _utils.rgbToHex)(dataset.color),
onChange: _handleCustomPicker
})), showDatasetTable ? /*#__PURE__*/_react["default"].createElement(_styledComponents2.CenterFlexbox, {
className: "source-data-arrow"
}, /*#__PURE__*/_react["default"].createElement(_icons.ArrowRight, {
height: "12px"
})) : null, showDatasetTable && !dataset.disableDataOperation ? /*#__PURE__*/_react["default"].createElement(ShowDataTable, {
id: datasetId,
showDatasetTable: showDatasetTable
}) : null, showDeleteDataset ? /*#__PURE__*/_react["default"].createElement(RemoveDataset, {
datasetKey: datasetId,
removeDataset: removeDataset
}) : null));
};
return DatasetTitle;
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfc3R5bGVkQ29tcG9uZW50cyIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfbG9jYWxpemF0aW9uIiwiX2xheWVycyIsIl9zdHlsZWRDb21wb25lbnRzMiIsIl9pY29ucyIsIl9kYXRhc2V0VGFnIiwiX2N1c3RvbVBpY2tlciIsIl8iLCJfdXRpbHMiLCJfdGVtcGxhdGVPYmplY3QiLCJfdGVtcGxhdGVPYmplY3QyIiwiX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlIiwiZSIsIldlYWtNYXAiLCJyIiwidCIsIl9fZXNNb2R1bGUiLCJfdHlwZW9mIiwiaGFzIiwiZ2V0IiwibiIsIl9fcHJvdG9fXyIsImEiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsInUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJpIiwic2V0IiwiU3R5bGVkRGF0YXNldFRpdGxlIiwic3R5bGVkIiwiZGl2IiwiX3RhZ2dlZFRlbXBsYXRlTGl0ZXJhbDIiLCJwcm9wcyIsInRoZW1lIiwidGV4dENvbG9yIiwiJGNsaWNrYWJsZSIsInRleHRDb2xvckhsIiwiRGF0YVRhZ0FjdGlvbiIsIlNob3dEYXRhVGFibGUiLCJfcmVmIiwiaWQiLCJzaG93RGF0YXNldFRhYmxlIiwiY3JlYXRlRWxlbWVudCIsImNsYXNzTmFtZSIsImNvbmNhdCIsIlRhYmxlIiwiaGVpZ2h0Iiwib25DbGljayIsInN0b3BQcm9wYWdhdGlvbiIsIlRvb2x0aXAiLCJlZmZlY3QiLCJGb3JtYXR0ZWRNZXNzYWdlIiwiUmVtb3ZlRGF0YXNldCIsIl9yZWYyIiwiZGF0YXNldEtleSIsInJlbW92ZURhdGFzZXQiLCJUcmFzaCIsInR5cGUiLCJEYXRhc2V0VGl0bGVGYWN0b3J5IiwiZGVwcyIsIkRhdGFzZXRUYWdGYWN0b3J5IiwiRGF0YXNldFRhZyIsIkRhdGFzZXRUaXRsZSIsIl9yZWYzIiwic2hvd0RlbGV0ZURhdGFzZXQiLCJvblRpdGxlQ2xpY2siLCJkYXRhc2V0IiwidXBkYXRlVGFibGVDb2xvciIsIl91c2VTdGF0ZSIsInVzZVN0YXRlIiwiX3VzZVN0YXRlMiIsIl9zbGljZWRUb0FycmF5MiIsImRpc3BsYXlDb2xvclBpY2tlciIsInNldERpc3BsYXlDb2xvclBpY2tlciIsInJvb3QiLCJ1c2VSZWYiLCJkYXRhc2V0SWQiLCJfaGFuZGxlQ2xpY2siLCJ1c2VDYWxsYmFjayIsIl9oYW5kbGVDbG9zZVBpY2tlciIsIl9oYW5kbGVDdXN0b21QaWNrZXIiLCJjb2xvciIsInJnYiIsImciLCJiIiwiX29uQ2xpY2tUaXRsZSIsImRpc2FibGVEYXRhT3BlcmF0aW9uIiwicmVmIiwiQm9vbGVhbiIsIm9uQ2xpY2tTcXVhcmUiLCJQb3J0YWxlZCIsImlzT3BlbmVkIiwibGVmdCIsInRvcCIsIm9uQ2xvc2UiLCJyZ2JUb0hleCIsIm9uQ2hhbmdlIiwiQ2VudGVyRmxleGJveCIsIkFycm93UmlnaHQiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc2lkZS1wYW5lbC9jb21tb24vZGF0YXNldC10aXRsZS50c3giXSwic291cmNlc0NvbnRlbnQiOlsiLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVFxuLy8gQ29weXJpZ2h0IGNvbnRyaWJ1dG9ycyB0byB0aGUga2VwbGVyLmdsIHByb2plY3RcblxuaW1wb3J0IFJlYWN0LCB7dXNlQ2FsbGJhY2ssIHVzZVJlZiwgdXNlU3RhdGV9IGZyb20gJ3JlYWN0JztcbmltcG9ydCBzdHlsZWQgZnJvbSAnc3R5bGVkLWNvbXBvbmVudHMnO1xuaW1wb3J0IHtGb3JtYXR0ZWRNZXNzYWdlfSBmcm9tICdAa2VwbGVyLmdsL2xvY2FsaXphdGlvbic7XG5cbmltcG9ydCB7VGFibGV9IGZyb20gJ0BrZXBsZXIuZ2wvbGF5ZXJzJztcbmltcG9ydCB7Q2VudGVyRmxleGJveCwgVG9vbHRpcH0gZnJvbSAnLi4vLi4vY29tbW9uL3N0eWxlZC1jb21wb25lbnRzJztcbmltcG9ydCB7QXJyb3dSaWdodCwgVHJhc2h9IGZyb20gJy4uLy4uL2NvbW1vbi9pY29ucyc7XG5pbXBvcnQgRGF0YXNldFRhZ0ZhY3RvcnkgZnJvbSAnLi9kYXRhc2V0LXRhZyc7XG5pbXBvcnQgQ3VzdG9tUGlja2VyIGZyb20gJy4uL2xheWVyLXBhbmVsL2N1c3RvbS1waWNrZXInO1xuaW1wb3J0IHtQb3J0YWxlZH0gZnJvbSAnLi4vLi4nO1xuaW1wb3J0IHtyZ2JUb0hleH0gZnJvbSAnQGtlcGxlci5nbC91dGlscyc7XG5pbXBvcnQge29wZW5EZWxldGVNb2RhbCwgVmlzU3RhdGVBY3Rpb25zLCBBY3Rpb25IYW5kbGVyfSBmcm9tICdAa2VwbGVyLmdsL2FjdGlvbnMnO1xuaW1wb3J0IHtSR0JDb2xvcn0gZnJvbSAnQGtlcGxlci5nbC90eXBlcyc7XG5pbXBvcnQge1N0eWxlZERhdGFzZXRUaXRsZVByb3BzLCBSZW1vdmVEYXRhc2V0UHJvcHMsIFNob3dEYXRhVGFibGVQcm9wc30gZnJvbSAnLi90eXBlcyc7XG5cbmNvbnN0IFN0eWxlZERhdGFzZXRUaXRsZSA9IHN0eWxlZC5kaXY8U3R5bGVkRGF0YXNldFRpdGxlUHJvcHM+YFxuICBjb2xvcjogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS50ZXh0Q29sb3J9O1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuXG4gIC5zb3VyY2UtZGF0YS1hcnJvdyB7XG4gICAgaGVpZ2h0OiAxNnB4O1xuICB9XG4gICY6aG92ZXIge1xuICAgIGN1cnNvcjogJHtwcm9wcyA9PiAocHJvcHMuJGNsaWNrYWJsZSA/ICdwb2ludGVyJyA6ICdhdXRvJyl9O1xuXG4gICAgLmRhdGFzZXQtbmFtZSB7XG4gICAgICBjb2xvcjogJHtwcm9wcyA9PiAocHJvcHMuJGNsaWNrYWJsZSA/IHByb3BzLnRoZW1lLnRleHRDb2xvckhsIDogcHJvcHMudGhlbWUudGV4dENvbG9yKX07XG4gICAgfVxuXG4gICAgLmRhdGFzZXQtYWN0aW9uIHtcbiAgICAgIGNvbG9yOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLnRleHRDb2xvcn07XG4gICAgICBvcGFjaXR5OiAxO1xuICAgIH1cblxuICAgIC5kYXRhc2V0LWFjdGlvbjpob3ZlciB7XG4gICAgICBjb2xvcjogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS50ZXh0Q29sb3JIbH07XG4gICAgfVxuICB9XG5gO1xuXG5jb25zdCBEYXRhVGFnQWN0aW9uID0gc3R5bGVkLmRpdmBcbiAgbWFyZ2luLWxlZnQ6IDEycHg7XG4gIGhlaWdodDogMTZweDtcbiAgb3BhY2l0eTogMDtcbmA7XG5cbnR5cGUgTWluaURhdGFzZXQgPSB7XG4gIGlkOiBzdHJpbmc7XG4gIGNvbG9yOiBSR0JDb2xvcjtcbiAgbGFiZWw/OiBzdHJpbmc7XG4gIGRpc2FibGVEYXRhT3BlcmF0aW9uPzogYm9vbGVhbjtcbn07XG5cbmV4cG9ydCB0eXBlIERhdGFzZXRUaXRsZVByb3BzID0ge1xuICBkYXRhc2V0OiBNaW5pRGF0YXNldDtcbiAgc2hvd0RlbGV0ZURhdGFzZXQ6IGJvb2xlYW47XG4gIG9uVGl0bGVDbGljaz86ICgpID0+IHZvaWQ7XG4gIHNob3dEYXRhc2V0VGFibGU/OiBBY3Rpb25IYW5kbGVyPHR5cGVvZiBWaXNTdGF0ZUFjdGlvbnMuc2hvd0RhdGFzZXRUYWJsZT47XG4gIHVwZGF0ZVRhYmxlQ29sb3I6IEFjdGlvbkhhbmRsZXI8dHlwZW9mIFZpc1N0YXRlQWN0aW9ucy51cGRhdGVUYWJsZUNvbG9yPjtcbiAgcmVtb3ZlRGF0YXNldD86IEFjdGlvbkhhbmRsZXI8dHlwZW9mIG9wZW5EZWxldGVNb2RhbD47XG59O1xuXG5jb25zdCBTaG93RGF0YVRhYmxlID0gKHtpZCwgc2hvd0RhdGFzZXRUYWJsZX06IFNob3dEYXRhVGFibGVQcm9wcykgPT4gKFxuICA8RGF0YVRhZ0FjdGlvbiBjbGFzc05hbWU9XCJkYXRhc2V0LWFjdGlvbiBzaG93LWRhdGEtdGFibGVcIiBkYXRhLXRpcCBkYXRhLWZvcj17YGRhdGEtdGFibGUtJHtpZH1gfT5cbiAgICA8VGFibGVcbiAgICAgIGhlaWdodD1cIjE2cHhcIlxuICAgICAgb25DbGljaz17ZSA9PiB7XG4gICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIHNob3dEYXRhc2V0VGFibGU/LihpZCk7XG4gICAgICB9fVxuICAgIC8+XG4gICAgPFRvb2x0aXAgaWQ9e2BkYXRhLXRhYmxlLSR7aWR9YH0gZWZmZWN0PVwic29saWRcIj5cbiAgICAgIDxzcGFuPlxuICAgICAgICA8Rm9ybWF0dGVkTWVzc2FnZSBpZD17J2RhdGFzZXRUaXRsZS5zaG93RGF0YVRhYmxlJ30gLz5cbiAgICAgIDwvc3Bhbj5cbiAgICA8L1Rvb2x0aXA+XG4gIDwvRGF0YVRhZ0FjdGlvbj5cbik7XG5cbmNvbnN0IFJlbW92ZURhdGFzZXQgPSAoe2RhdGFzZXRLZXksIHJlbW92ZURhdGFzZXR9OiBSZW1vdmVEYXRhc2V0UHJvcHMpID0+IChcbiAgPERhdGFUYWdBY3Rpb25cbiAgICBjbGFzc05hbWU9XCJkYXRhc2V0LWFjdGlvbiByZW1vdmUtZGF0YXNldFwiXG4gICAgZGF0YS10aXBcbiAgICBkYXRhLWZvcj17YGRlbGV0ZS0ke2RhdGFzZXRLZXl9YH1cbiAgPlxuICAgIDxUcmFzaFxuICAgICAgaGVpZ2h0PVwiMTZweFwiXG4gICAgICBvbkNsaWNrPXtlID0+IHtcbiAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgcmVtb3ZlRGF0YXNldD8uKGRhdGFzZXRLZXkpO1xuICAgICAgfX1cbiAgICAvPlxuICAgIDxUb29sdGlwIGlkPXtgZGVsZXRlLSR7ZGF0YXNldEtleX1gfSBlZmZlY3Q9XCJzb2xpZFwiIHR5cGU9XCJlcnJvclwiPlxuICAgICAgPHNwYW4+XG4gICAgICAgIDxGb3JtYXR0ZWRNZXNzYWdlIGlkPXsnZGF0YXNldFRpdGxlLnJlbW92ZURhdGFzZXQnfSAvPlxuICAgICAgPC9zcGFuPlxuICAgIDwvVG9vbHRpcD5cbiAgPC9EYXRhVGFnQWN0aW9uPlxuKTtcblxuRGF0YXNldFRpdGxlRmFjdG9yeS5kZXBzID0gW0RhdGFzZXRUYWdGYWN0b3J5XTtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gRGF0YXNldFRpdGxlRmFjdG9yeShcbiAgRGF0YXNldFRhZzogUmV0dXJuVHlwZTx0eXBlb2YgRGF0YXNldFRhZ0ZhY3Rvcnk+XG4pOiBSZWFjdC5GQzxEYXRhc2V0VGl0bGVQcm9wcz4ge1xuICBjb25zdCBEYXRhc2V0VGl0bGU6IFJlYWN0LkZDPERhdGFzZXRUaXRsZVByb3BzPiA9ICh7XG4gICAgc2hvd0RhdGFzZXRUYWJsZSxcbiAgICBzaG93RGVsZXRlRGF0YXNldCxcbiAgICBvblRpdGxlQ2xpY2ssXG4gICAgcmVtb3ZlRGF0YXNldCxcbiAgICBkYXRhc2V0LFxuICAgIHVwZGF0ZVRhYmxlQ29sb3JcbiAgfSkgPT4ge1xuICAgIGNvbnN0IFtkaXNwbGF5Q29sb3JQaWNrZXIsIHNldERpc3BsYXlDb2xvclBpY2tlcl0gPSB1c2VTdGF0ZShmYWxzZSk7XG4gICAgY29uc3Qgcm9vdCA9IHVzZVJlZihudWxsKTtcbiAgICBjb25zdCBkYXRhc2V0SWQgPSBkYXRhc2V0LmlkO1xuICAgIGNvbnN0IF9oYW5kbGVDbGljayA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICAgIHNldERpc3BsYXlDb2xvclBpY2tlcighZGlzcGxheUNvbG9yUGlja2VyKTtcbiAgICB9LCBbc2V0RGlzcGxheUNvbG9yUGlja2VyLCBkaXNwbGF5Q29sb3JQaWNrZXJdKTtcblxuICAgIGNvbnN0IF9oYW5kbGVDbG9zZVBpY2tlciA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICAgIHNldERpc3BsYXlDb2xvclBpY2tlcihmYWxzZSk7XG4gICAgfSwgW3NldERpc3BsYXlDb2xvclBpY2tlcl0pO1xuICAgIGNvbnN0IF9oYW5kbGVDdXN0b21QaWNrZXIgPSB1c2VDYWxsYmFjayhcbiAgICAgIChjb2xvcjoge3JnYjogUmVjb3JkPHN0cmluZywgbnVtYmVyPn0pID0+IHtcbiAgICAgICAgdXBkYXRlVGFibGVDb2xvcihkYXRhc2V0SWQsIFtjb2xvci5yZ2IuciwgY29sb3IucmdiLmcsIGNvbG9yLnJnYi5iXSk7XG4gICAgICB9LFxuICAgICAgW3VwZGF0ZVRhYmxlQ29sb3IsIGRhdGFzZXRJZF1cbiAgICApO1xuXG4gICAgY29uc3QgX29uQ2xpY2tUaXRsZSA9IHVzZUNhbGxiYWNrKFxuICAgICAgKGU6IFJlYWN0Lk1vdXNlRXZlbnQ8SFRNTERpdkVsZW1lbnQ+KSA9PiB7XG4gICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIGlmICh0eXBlb2Ygb25UaXRsZUNsaWNrID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgb25UaXRsZUNsaWNrKCk7XG4gICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHNob3dEYXRhc2V0VGFibGUgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICBpZiAoZGF0YXNldC5kaXNhYmxlRGF0YU9wZXJhdGlvbikgcmV0dXJuO1xuICAgICAgICAgIHNob3dEYXRhc2V0VGFibGUoZGF0YXNldElkKTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIFtvblRpdGxlQ2xpY2ssIHNob3dEYXRhc2V0VGFibGUsIGRhdGFzZXRJZCwgZGF0YXNldC5kaXNhYmxlRGF0YU9wZXJhdGlvbl1cbiAgICApO1xuXG4gICAgcmV0dXJuIChcbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwiY3VzdG9tLXBhbGV0dGUtcGFuZWxcIiByZWY9e3Jvb3R9PlxuICAgICAgICA8U3R5bGVkRGF0YXNldFRpdGxlXG4gICAgICAgICAgY2xhc3NOYW1lPVwic291cmNlLWRhdGEtdGl0bGVcIlxuICAgICAgICAgICRjbGlja2FibGU9e0Jvb2xlYW4oc2hvd0RhdGFzZXRUYWJsZSB8fCBvblRpdGxlQ2xpY2spfVxuICAgICAgICA+XG4gICAgICAgICAgPERhdGFzZXRUYWdcbiAgICAgICAgICAgIGRhdGFzZXQ9e2RhdGFzZXR9XG4gICAgICAgICAgICBvbkNsaWNrPXtfb25DbGlja1RpdGxlfVxuICAgICAgICAgICAgdXBkYXRlVGFibGVDb2xvcj17dXBkYXRlVGFibGVDb2xvcn1cbiAgICAgICAgICAgIG9uQ2xpY2tTcXVhcmU9e19oYW5kbGVDbGlja31cbiAgICAgICAgICAvPlxuICAgICAgICAgIDxQb3J0YWxlZFxuICAgICAgICAgICAgaXNPcGVuZWQ9e2Rpc3BsYXlDb2xvclBpY2tlciAhPT0gZmFsc2V9XG4gICAgICAgICAgICBsZWZ0PXsxMTB9XG4gICAgICAgICAgICB0b3A9ey01MH1cbiAgICAgICAgICAgIG9uQ2xvc2U9e19oYW5kbGVDbG9zZVBpY2tlcn1cbiAgICAgICAgICA+XG4gICAgICAgICAgICA8Q3VzdG9tUGlja2VyIGNvbG9yPXtyZ2JUb0hleChkYXRhc2V0LmNvbG9yKX0gb25DaGFuZ2U9e19oYW5kbGVDdXN0b21QaWNrZXJ9IC8+XG4gICAgICAgICAgPC9Qb3J0YWxlZD5cbiAgICAgICAgICB7c2hvd0RhdGFzZXRUYWJsZSA/IChcbiAgICAgICAgICAgIDxDZW50ZXJGbGV4Ym94IGNsYXNzTmFtZT1cInNvdXJjZS1kYXRhLWFycm93XCI+XG4gICAgICAgICAgICAgIDxBcnJvd1JpZ2h0IGhlaWdodD1cIjEycHhcIiAvPlxuICAgICAgICAgICAgPC9DZW50ZXJGbGV4Ym94PlxuICAgICAgICAgICkgOiBudWxsfVxuICAgICAgICAgIHtzaG93RGF0YXNldFRhYmxlICYmICFkYXRhc2V0LmRpc2FibGVEYXRhT3BlcmF0aW9uID8gKFxuICAgICAgICAgICAgPFNob3dEYXRhVGFibGUgaWQ9e2RhdGFzZXRJZH0gc2hvd0RhdGFzZXRUYWJsZT17c2hvd0RhdGFzZXRUYWJsZX0gLz5cbiAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICB7c2hvd0RlbGV0ZURhdGFzZXQgPyAoXG4gICAgICAgICAgICA8UmVtb3ZlRGF0YXNldCBkYXRhc2V0S2V5PXtkYXRhc2V0SWR9IHJlbW92ZURhdGFzZXQ9e3JlbW92ZURhdGFzZXR9IC8+XG4gICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgIDwvU3R5bGVkRGF0YXNldFRpdGxl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