kepler.gl.geoiq
Version:
kepler.gl is a webgl based application to visualize large scale location data in the browser
167 lines (131 loc) • 20.6 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
var _typeof = require("@babel/runtime/helpers/typeof");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports["default"] = exports.StyledLayerConfigGroupLabel = exports.StyledLayerConfigGroupAction = exports.StyledLayerConfigGroup = exports.StyledConfigGroupHeader = exports.ConfigGroupCollapsibleContent = void 0;
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
var _react = _interopRequireWildcard(require("react"));
var _styledComponents = _interopRequireDefault(require("styled-components"));
var _classnames = _interopRequireDefault(require("classnames"));
var _switch = _interopRequireDefault(require("../../common/switch"));
var _icons = require("../../common/icons");
var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6;
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2["default"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2["default"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2["default"])(this, result); }; }
function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
var StyledLayerConfigGroupLabel = exports.StyledLayerConfigGroupLabel = _styledComponents["default"].div(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n border-left: 2px solid ", ";\n color: ", ";\n font-size: 12px;\n font-weight: 500;\n line-height: 12px;\n margin-left: -12px;\n padding-left: 10px;\n text-transform: capitalize;\n letter-spacing: 0.2px;\n"])), function (props) {
return props.theme.labelColor;
}, function (props) {
return props.theme.textColor;
});
var StyledLayerConfigGroupAction = exports.StyledLayerConfigGroupAction = _styledComponents["default"].div(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n align-items: center;\n color: ", ";\n"])), function (props) {
return props.theme.textColor;
});
var ConfigGroupCollapsibleContent = exports.ConfigGroupCollapsibleContent = _styledComponents["default"].div.attrs({
className: 'layer-config-group__content__collapsible'
})(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2["default"])(["\n overflow: visible;\n transition: max-height 0.3s ease-out;\n height: max-content;\n max-height: 600px;\n"])));
var StyledLayerConfigGroup = exports.StyledLayerConfigGroup = _styledComponents["default"].div(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteral2["default"])(["\n padding-left: 18px;\n margin-bottom: 12px;\n\n &.collapsed {\n .layer-config-group__content {\n\n .layer-config-group__content__collapsible {\n /* display: none; */\n /* flex: 0; */\n overflow: hidden;\n max-height: 0;\n }\n }\n }\n"])));
var StyledConfigGroupHeader = exports.StyledConfigGroupHeader = _styledComponents["default"].div(_templateObject5 || (_templateObject5 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n align-items: center;\n justify-content: space-between;\n margin-bottom: 12px;\n\n :hover {\n cursor: pointer;\n .layer-config-group__label {\n color: ", ";\n border-left: 2px solid ", ";\n }\n\n .layer-config-group__action {\n color: ", ";\n }\n }\n"])), function (props) {
return props.theme.textColorHl;
}, function (props) {
return props.theme.textColorHl;
}, function (props) {
return props.theme.textColorHl;
});
var ConfigGroupContent = _styledComponents["default"].div(_templateObject6 || (_templateObject6 = (0, _taggedTemplateLiteral2["default"])(["\n &.disabled {\n opacity: 0.3;\n pointer-events: none;\n * {\n pointer-events: none;\n }\n }\n"])));
var LayerConfigGroup = exports["default"] = /*#__PURE__*/function (_Component) {
(0, _inherits2["default"])(LayerConfigGroup, _Component);
var _super = _createSuper(LayerConfigGroup);
function LayerConfigGroup() {
var _this;
(0, _classCallCheck2["default"])(this, LayerConfigGroup);
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
args[_key] = arguments[_key];
}
_this = _super.call.apply(_super, [this].concat(args));
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "state", {
collapsed: true
});
return _this;
}
(0, _createClass2["default"])(LayerConfigGroup, [{
key: "componentDidMount",
value: function componentDidMount() {
this._setCollapseState(this.props.expanded);
}
}, {
key: "componentWillReceiveProps",
value: function componentWillReceiveProps(nextProps) {
this._setCollapseState(nextProps.expanded);
}
}, {
key: "_setCollapseState",
value: function _setCollapseState(expanded) {
// if props,expanded, and state collapsed, set collapsed to be false
if (expanded && this.state.collapsed) {
this.setState({
collapsed: false
});
}
}
}, {
key: "render",
value: function render() {
var _this2 = this;
var _this$props = this.props,
label = _this$props.label,
children = _this$props.children,
property = _this$props.property,
layer = _this$props.layer,
_onChange2 = _this$props.onChange,
collapsible = _this$props.collapsible;
var collapsed = this.state.collapsed;
return (/*#__PURE__*/_react["default"].createElement(StyledLayerConfigGroup, {
className: (0, _classnames["default"])('layer-config-group', {
collapsed: collapsed
})
}, /*#__PURE__*/_react["default"].createElement(StyledConfigGroupHeader, {
className: "layer-config-group__header",
onClick: function onClick() {
return _this2.setState({
collapsed: !_this2.state.collapsed
});
}
}, /*#__PURE__*/_react["default"].createElement(StyledLayerConfigGroupLabel, {
className: "layer-config-group__label"
}, label), /*#__PURE__*/_react["default"].createElement(StyledLayerConfigGroupAction, {
className: "layer-config-group__action"
}, property ? /*#__PURE__*/_react["default"].createElement(_switch["default"], {
checked: layer.config.visConfig[property],
id: "".concat(layer.id, "-").concat(property),
onChange: function onChange() {
return _onChange2((0, _defineProperty2["default"])({}, property, !layer.config.visConfig[property]));
}
}) : null, collapsible ? /*#__PURE__*/_react["default"].createElement(_icons.VertThreeDots, {
height: "18px"
}) : null)), /*#__PURE__*/_react["default"].createElement(ConfigGroupContent, {
className: (0, _classnames["default"])('layer-config-group__content', {
disabled: property && !layer.config.visConfig[property]
})
}, children))
);
}
}]);
return LayerConfigGroup;
}(_react.Component);
(0, _defineProperty2["default"])(LayerConfigGroup, "defaultProps", {
collapsible: false,
expanded: false,
onChange: function onChange() {}
});
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL3NpZGUtcGFuZWwvd2lkZ2V0LXBhbmVsL2xheWVyLWNvbmZpZy1ncm91cC5qcyJdLCJuYW1lcyI6WyJTdHlsZWRMYXllckNvbmZpZ0dyb3VwTGFiZWwiLCJzdHlsZWQiLCJkaXYiLCJwcm9wcyIsInRoZW1lIiwibGFiZWxDb2xvciIsInRleHRDb2xvciIsIlN0eWxlZExheWVyQ29uZmlnR3JvdXBBY3Rpb24iLCJDb25maWdHcm91cENvbGxhcHNpYmxlQ29udGVudCIsImF0dHJzIiwiY2xhc3NOYW1lIiwiU3R5bGVkTGF5ZXJDb25maWdHcm91cCIsIlN0eWxlZENvbmZpZ0dyb3VwSGVhZGVyIiwidGV4dENvbG9ySGwiLCJDb25maWdHcm91cENvbnRlbnQiLCJMYXllckNvbmZpZ0dyb3VwIiwiY29sbGFwc2VkIiwiX3NldENvbGxhcHNlU3RhdGUiLCJleHBhbmRlZCIsIm5leHRQcm9wcyIsInN0YXRlIiwic2V0U3RhdGUiLCJsYWJlbCIsImNoaWxkcmVuIiwicHJvcGVydHkiLCJsYXllciIsIm9uQ2hhbmdlIiwiY29sbGFwc2libGUiLCJjb25maWciLCJ2aXNDb25maWciLCJpZCIsImRpc2FibGVkIiwiQ29tcG9uZW50Il0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFvQkE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7Ozs7Ozs7Ozs7OztBQUVPLElBQU1BLDJCQUEyQix5Q0FBR0MsNkJBQU9DLEdBQVYsK1NBQ2IsVUFBQUMsS0FBSztBQUFBLFNBQUlBLEtBQUssQ0FBQ0MsS0FBTixDQUFZQyxVQUFoQjtBQUFBLENBRFEsRUFFN0IsVUFBQUYsS0FBSztBQUFBLFNBQUlBLEtBQUssQ0FBQ0MsS0FBTixDQUFZRSxTQUFoQjtBQUFBLENBRndCLENBQWpDOztBQVlBLElBQU1DLDRCQUE0QiwwQ0FBR04sNkJBQU9DLEdBQVYscUpBRzlCLFVBQUFDLEtBQUs7QUFBQSxTQUFJQSxLQUFLLENB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QW9DLElBVmxELENBTkYsQ0FERixlQW9CRSxnQ0FBQyxrQkFBRDtBQUNFLFVBQUEsU0FBUyxFQUFFLDRCQUFXLDZCQUFYLEVBQTBDO0FBQ25ESSxZQUFBQSxRQUFRLEVBQUVQLFFBQVEsSUFBSSxDQUFDQyxLQUFLLENBQUNHLE1BQU4sQ0FBYUMsU0FBYixDQUF1QkwsUUFBdkI7QUFENEIsV0FBMUM7QUFEYixXQUtHRCxRQUxILENBcEJGO0FBREY7QUE4QkQ7OztFQXJFMkNTLGdCOztpQ0FBekJqQixnQixrQkFFRztBQUNwQlksRUFBQUEsV0FBVyxFQUFFLEtBRE87QUFFcEJULEVBQUFBLFFBQVEsRUFBRSxLQUZVO0FBR3BCUSxFQUFBQSxRQUFRLEVBQUUsb0JBQU0sQ0FBRTtBQUhFLEMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgKGMpIDIwMjMgVWJlciBUZWNobm9sb2dpZXMsIEluYy5cbi8vXG4vLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5XG4vLyBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSBcIlNvZnR3YXJlXCIpLCB0byBkZWFsXG4vLyBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzXG4vLyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsXG4vLyBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXNcbi8vIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4vL1xuLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW5cbi8vIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuLy9cbi8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1Jcbi8vIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLFxuLy8gRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFXG4vLyBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSXG4vLyBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLFxuLy8gT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTlxuLy8gVEhFIFNPRlRXQVJFLlxuXG5pbXBvcnQgUmVhY3QsIHtDb21wb25lbnR9IGZyb20gJ3JlYWN0JztcbmltcG9ydCBzdHlsZWQgZnJvbSAnc3R5bGVkLWNvbXBvbmVudHMnO1xuaW1wb3J0IGNsYXNzbmFtZXMgZnJvbSAnY2xhc3NuYW1lcyc7XG5pbXBvcnQgU3dpdGNoIGZyb20gJ2NvbXBvbmVudHMvY29tbW9uL3N3aXRjaCc7XG5pbXBvcnQge1ZlcnRUaHJlZURvdHN9IGZyb20gJ2NvbXBvbmVudHMvY29tbW9uL2ljb25zJztcblxuZXhwb3J0IGNvbnN0IFN0eWxlZExheWVyQ29uZmlnR3JvdXBMYWJlbCA9IHN0eWxlZC5kaXZgXG4gIGJvcmRlci1sZWZ0OiAycHggc29saWQgJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5sYWJlbENvbG9yfTtcbiAgY29sb3I6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUudGV4dENvbG9yfTtcbiAgZm9udC1zaXplOiAxMnB4O1xuICBmb250LXdlaWdodDogNTAwO1xuICBsaW5lLWhlaWdodDogMTJweDtcbiAgbWFyZ2luLWxlZnQ6IC0xMnB4O1xuICBwYWRkaW5nLWxlZnQ6IDEwcHg7XG4gIHRleHQtdHJhbnNmb3JtOiBjYXBpdGFsaXplO1xuICBsZXR0ZXItc3BhY2luZzogMC4ycHg7XG5gO1xuXG5leHBvcnQgY29uc3QgU3R5bGVkTGF5ZXJDb25maWdHcm91cEFjdGlvbiA9IHN0eWxlZC5kaXZgXG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGNvbG9yOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLnRleHRDb2xvcn07XG5gO1xuXG5leHBvcnQgY29uc3QgQ29uZmlnR3JvdXBDb2xsYXBzaWJsZUNvbnRlbnQgPSBzdHlsZWQuZGl2LmF0dHJzKHtcbiAgY2xhc3NOYW1lOiAnbGF5ZXItY29uZmlnLWdyb3VwX19jb250ZW50X19jb2xsYXBzaWJsZSdcbn0pYFxuICBvdmVyZmxvdzogdmlzaWJsZTtcbiAgdHJhbnNpdGlvbjogbWF4LWhlaWdodCAwLjNzIGVhc2Utb3V0O1xuICBoZWlnaHQ6IG1heC1jb250ZW50O1xuICBtYXgtaGVpZ2h0OiA2MDBweDtcbmA7XG5cbmV4cG9ydCBjb25zdCBTdHlsZWRMYXllckNvbmZpZ0dyb3VwID0gc3R5bGVkLmRpdmBcbiAgcGFkZGluZy1sZWZ0OiAxOHB4O1xuICBtYXJnaW4tYm90dG9tOiAxMnB4O1xuXG4gICYuY29sbGFwc2VkIHtcbiAgICAubGF5ZXItY29uZmlnLWdyb3VwX19jb250ZW50IHtcblxuICAgICAgLmxheWVyLWNvbmZpZy1ncm91cF9fY29udGVudF9fY29sbGFwc2libGUge1xuICAgICAgICAvKiBkaXNwbGF5OiBub25lOyAqL1xuICAgICAgICAvKiBmbGV4OiAwOyAqL1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICBtYXgtaGVpZ2h0OiAwO1xuICAgICAgfVxuICAgIH1cbiAgfVxuYDtcblxuZXhwb3J0IGNvbnN0IFN0eWxlZENvbmZpZ0dyb3VwSGVhZGVyID0gc3R5bGVkLmRpdmBcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICBtYXJnaW4tYm90dG9tOiAxMnB4O1xuXG4gIDpob3ZlciB7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIC5sYXllci1jb25maWctZ3JvdXBfX2xhYmVsIHtcbiAgICAgIGNvbG9yOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLnRleHRDb2xvckhsfTtcbiAgICAgIGJvcmRlci1sZWZ0OiAycHggc29saWQgJHtwcm9wcyA9PiBwcm9wcy50aGVtZS50ZXh0Q29sb3JIbH07XG4gICAgfVxuXG4gICAgLmxheWVyLWNvbmZpZy1ncm91cF9fYWN0aW9uIHtcbiAgICAgIGNvbG9yOiAgJHtwcm9wcyA9PiBwcm9wcy50aGVtZS50ZXh0Q29sb3JIbH07XG4gICAgfVxuICB9XG5gO1xuXG5jb25zdCBDb25maWdHcm91cENvbnRlbnQgPSBzdHlsZWQuZGl2YFxuICAmLmRpc2FibGVkIHtcbiAgICBvcGFjaXR5OiAwLjM7XG4gICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gICAgKiB7XG4gICAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgICB9XG4gIH1cbmA7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIExheWVyQ29uZmlnR3JvdXAgZXh0ZW5kcyBDb21wb25lbnQge1xuXG4gIHN0YXRpYyBkZWZhdWx0UHJvcHMgPSB7XG4gICAgY29sbGFwc2libGU6IGZhbHNlLFxuICAgIGV4cGFuZGVkOiBmYWxzZSxcbiAgICBvbkNoYW5nZTogKCkgPT4ge31cbiAgfTtcblxuICBzdGF0ZSA9IHtcbiAgICBjb2xsYXBzZWQ6IHRydWVcbiAgfTtcblxuICBjb21wb25lbnREaWRNb3VudCgpIHtcbiAgICB0aGlzLl9zZXRDb2xsYXBzZVN0YXRlKHRoaXMucHJvcHMuZXhwYW5kZWQpO1xuICB9XG5cbiAgY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wcyhuZXh0UHJvcHMpIHtcbiAgICB0aGlzLl9zZXRDb2xsYXBzZVN0YXRlKG5leHRQcm9wcy5leHBhbmRlZCk7XG4gIH1cblxuICBfc2V0Q29sbGFwc2VTdGF0ZShleHBhbmRlZCkge1xuICAgIC8vIGlmIHByb3BzLGV4cGFuZGVkLCBhbmQgc3RhdGUgY29sbGFwc2VkLCBzZXQgY29sbGFwc2VkIHRvIGJlIGZhbHNlXG4gICAgaWYgKGV4cGFuZGVkICYmIHRoaXMuc3RhdGUuY29sbGFwc2VkKSB7XG4gICAgICB0aGlzLnNldFN0YXRlKHtjb2xsYXBzZWQ6IGZhbHNlfSk7XG4gICAgfVxuICB9XG5cbiAgcmVuZGVyKCkge1xuICAgIGNvbnN0IHtcbiAgICAgIGxhYmVsLFxuICAgICAgY2hpbGRyZW4sXG4gICAgICBwcm9wZXJ0eSxcbiAgICAgIGxheWVyLFxuICAgICAgb25DaGFuZ2UsXG4gICAgICBjb2xsYXBzaWJsZVxuICAgIH0gPSB0aGlzLnByb3BzO1xuXG4gICAgY29uc3Qge2NvbGxhcHNlZH0gPSB0aGlzLnN0YXRlO1xuXG4gICAgcmV0dXJuIChcbiAgICAgIDxTdHlsZWRMYXllckNvbmZpZ0dyb3VwIGNsYXNzTmFtZT17Y2xhc3NuYW1lcygnbGF5ZXItY29uZmlnLWdyb3VwJywge2NvbGxhcHNlZH0pfT5cbiAgICAgICAgPFN0eWxlZENvbmZpZ0dyb3VwSGVhZGVyIGNsYXNzTmFtZT1cImxheWVyLWNvbmZpZy1ncm91cF9faGVhZGVyXCJcbiAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB0aGlzLnNldFN0YXRlKHtjb2xsYXBzZWQ6ICF0aGlzLnN0YXRlLmNvbGxhcHNlZH0pfVxuICAgICAgICA+XG4gICAgICAgICAgPFN0eWxlZExheWVyQ29uZmlnR3JvdXBMYWJlbCBjbGFzc05hbWU9XCJsYXllci1jb25maWctZ3JvdXBfX2xhYmVsXCI+XG4gICAgICAgICAgICB7bGFiZWx9XG4gICAgICAgICAgPC9TdHlsZWRMYXllckNvbmZpZ0dyb3VwTGFiZWw+XG4gICAgICAgICAgPFN0eWxlZExheWVyQ29uZmlnR3JvdXBBY3Rpb24gY2xhc3NOYW1lPVwibGF5ZXItY29uZmlnLWdyb3VwX19hY3Rpb25cIj5cbiAgICAgICAgICAgIHtwcm9wZXJ0eSA/IChcbiAgICAgICAgICAgICAgPFN3aXRjaFxuICAgICAgICAgICAgICAgIGNoZWNrZWQ9e2xheWVyLmNvbmZpZy52aXNDb25maWdbcHJvcGVydHldfVxuICAgICAgICAgICAgICAgIGlkPXtgJHtsYXllci5pZH0tJHtwcm9wZXJ0eX1gfVxuICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsoKSA9PlxuICAgICAgICAgICAgICAgICAgb25DaGFuZ2Uoe1twcm9wZXJ0eV06ICFsYXllci5jb25maWcudmlzQ29uZmlnW3Byb3BlcnR5XX0pXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgICAgICB7Y29sbGFwc2libGUgPyA8VmVydFRocmVlRG90cyBoZWlnaHQ9XCIxOHB4XCIvPiA6IG51bGx9XG4gICAgICAgICAgPC9TdHlsZWRMYXllckNvbmZpZ0dyb3VwQWN0aW9uPlxuICAgICAgICA8L1N0eWxlZENvbmZpZ0dyb3VwSGVhZGVyPlxuICAgICAgICA8Q29uZmlnR3JvdXBDb250ZW50XG4gICAgICAgICAgY2xhc3NOYW1lPXtjbGFzc25hbWVzKCdsYXllci1jb25maWctZ3JvdXBfX2NvbnRlbnQnLCB7XG4gICAgICAgICAgICBkaXNhYmxlZDogcHJvcGVydHkgJiYgIWxheWVyLmNvbmZpZy52aXNDb25maWdbcHJvcGVydHldXG4gICAgICAgICAgfSl9XG4gICAgICAgID5cbiAgICAgICAgICB7Y2hpbGRyZW59XG4gICAgICAgIDwvQ29uZmlnR3JvdXBDb250ZW50PlxuICAgICAgPC9TdHlsZWRMYXllckNvbmZpZ0dyb3VwPlxuICAgICk7XG4gIH1cbn1cblxuIl19