UNPKG

kepler.gl.geoiq

Version:

kepler.gl is a webgl based application to visualize large scale location data in the browser

180 lines (143 loc) 22 kB
"use strict"; 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 _infoHelper = _interopRequireDefault(require("../../common/info-helper")); 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 .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, widget = _this$props.widget, _onChange2 = _this$props.onChange, collapsible = _this$props.collapsible, description = _this$props.description; 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("div", { style: { display: 'flex' } }, /*#__PURE__*/_react["default"].createElement(StyledLayerConfigGroupLabel, { className: "layer-config-group__label", style: { marginTop: '2px' } }, label), description && /*#__PURE__*/_react["default"].createElement(_infoHelper["default"], { description: description, id: "".concat(this.props.id, "-").concat(property) })), /*#__PURE__*/_react["default"].createElement(StyledLayerConfigGroupAction, { className: "layer-config-group__action" }, property ? /*#__PURE__*/_react["default"].createElement(_switch["default"], { checked: widget.config[property], id: "".concat(widget.id, "-").concat(property), onChange: function onChange() { return _onChange2((0, _defineProperty2["default"])({}, property, !widget.config[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 && !widget.config[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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL3NpZGUtcGFuZWwvd2lkZ2V0LXBhbmVsL3dpZGdldC1jb25maWctZ3JvdXAuanMiXSwibmFtZXMiOlsiU3R5bGVkTGF5ZXJDb25maWdHcm91cExhYmVsIiwic3R5bGVkIiwiZGl2IiwicHJvcHMiLCJ0aGVtZSIsImxhYmVsQ29sb3IiLCJ0ZXh0Q29sb3IiLCJTdHlsZWRMYXllckNvbmZpZ0dyb3VwQWN0aW9uIiwiQ29uZmlnR3JvdXBDb2xsYXBzaWJsZUNvbnRlbnQiLCJhdHRycyIsImNsYXNzTmFtZSIsIlN0eWxlZExheWVyQ29uZmlnR3JvdXAiLCJTdHlsZWRDb25maWdHcm91cEhlYWRlciIsInRleHRDb2xvckhsIiwiQ29uZmlnR3JvdXBDb250ZW50IiwiTGF5ZXJDb25maWdHcm91cCIsImNvbGxhcHNlZCIsIl9zZXRDb2xsYXBzZVN0YXRlIiwiZXhwYW5kZWQiLCJuZXh0UHJvcHMiLCJzdGF0ZSIsInNldFN0YXRlIiwibGFiZWwiLCJjaGlsZHJlbiIsInByb3BlcnR5Iiwid2lkZ2V0Iiwib25DaGFuZ2UiLCJjb2xsYXBzaWJsZSIsImRlc2NyaXB0aW9uIiwiZGlzcGxheSIsIm1hcmdpblRvcCIsImlkIiwiY29uZmlnIiwiZGlzYWJsZWQiLCJDb21wb25lbnQiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQW9CQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7Ozs7Ozs7Ozs7O0FBRU8sSUFBTUEsMkJBQTJCLHlDQUFHQyw2QkFBT0MsR0FBViwrU0FDYixVQUFBQyxLQUFLO0FBQUEsU0FBSUEsS0FBSyxDQUFDQyxLQUFOLENBQVlDLFVBQWhCO0FBQUEsQ0FEUSxFQUU3QixVQUFBRixLQUFLO0FBQUEsU0FBSUEsS0FBSyxDQUFDQyxLQUFOLENBQVlFLFNBQWhCO0FBQUEsQ0FGd0IsQ0FBakM7O0FBWUEsSUFBTUMsNEJBQTRCLDBDQUFHTiw2QkFBT0MsR0FBVixxSkFH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TSxDQUFDTyxNQUFQLENBQWNSLFFBQWQsQ0FEWDtBQUVFLFVBQUEsRUFBRSxZQUFLQyxNQUFNLENBQUNNLEVBQVosY0FBa0JQLFFBQWxCLENBRko7QUFHRSxVQUFBLFFBQVEsRUFBRTtBQUFBLG1CQUNSRSxVQUFRLHNDQUFHRixRQUFILEVBQWMsQ0FBQ0MsTUFBTSxDQUFDTyxNQUFQLENBQWNSLFFBQWQsQ0FBZixFQURBO0FBQUE7QUFIWixVQURPLEdBUUwsSUFUTixFQVVHRyxXQUFXLGdCQUFHLGdDQUFDLG9CQUFEO0FBQWUsVUFBQSxNQUFNLEVBQUM7QUFBdEIsVUFBSCxHQUFxQyxJQVZuRCxDQWxCRixDQUhGLGVBa0NFLGdDQUFDLGtCQUFEO0FBQ0UsVUFBQSxTQUFTLEVBQUUsNEJBQVcsNkJBQVgsRUFBMEM7QUFDbkRNLFlBQUFBLFFBQVEsRUFBRVQsUUFBUSxJQUFJLENBQUNDLE1BQU0sQ0FBQ08sTUFBUCxDQUFjUixRQUFkO0FBRDRCLFdBQTFDO0FBRGIsV0FLR0QsUUFMSCxDQWxDRjtBQURGO0FBNENEOzs7RUFsRjJDVyxnQjs7aUNBQXpCbkIsZ0Isa0JBQ0c7QUFDcEJZLEVBQUFBLFdBQVcsRUFBRSxLQURPO0FBRXBCVCxFQUFBQSxRQUFRLEVBQUUsS0FGVTtBQUdwQlEsRUFBQUEsUUFBUSxFQUFFLG9CQUFNLENBQUU7QUFIRSxDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IChjKSAyMDIzIFViZXIgVGVjaG5vbG9naWVzLCBJbmMuXG4vL1xuLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weVxuLy8gb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbFxuLy8gaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0c1xuLy8gdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbFxuLy8gY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzXG4vLyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuLy9cbi8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluXG4vLyBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbi8vXG4vLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4vLyBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbi8vIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRVxuLy8gQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuLy8gTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSxcbi8vIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU5cbi8vIFRIRSBTT0ZUV0FSRS5cblxuaW1wb3J0IFJlYWN0LCB7Q29tcG9uZW50fSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgc3R5bGVkIGZyb20gJ3N0eWxlZC1jb21wb25lbnRzJztcbmltcG9ydCBjbGFzc25hbWVzIGZyb20gJ2NsYXNzbmFtZXMnO1xuaW1wb3J0IFN3aXRjaCBmcm9tICdjb21wb25lbnRzL2NvbW1vbi9zd2l0Y2gnO1xuaW1wb3J0IHtWZXJ0VGhyZWVEb3RzfSBmcm9tICdjb21wb25lbnRzL2NvbW1vbi9pY29ucyc7XG5pbXBvcnQgSW5mb0hlbHBlciBmcm9tICdjb21wb25lbnRzL2NvbW1vbi9pbmZvLWhlbHBlcic7XG5cbmV4cG9ydCBjb25zdCBTdHlsZWRMYXllckNvbmZpZ0dyb3VwTGFiZWwgPSBzdHlsZWQuZGl2YFxuICBib3JkZXItbGVmdDogMnB4IHNvbGlkICR7cHJvcHMgPT4gcHJvcHMudGhlbWUubGFiZWxDb2xvcn07XG4gIGNvbG9yOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLnRleHRDb2xvcn07XG4gIGZvbnQtc2l6ZTogMTJweDtcbiAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgbGluZS1oZWlnaHQ6IDEycHg7XG4gIG1hcmdpbi1sZWZ0OiAtMTJweDtcbiAgcGFkZGluZy1sZWZ0OiAxMHB4O1xuICB0ZXh0LXRyYW5zZm9ybTogY2FwaXRhbGl6ZTtcbiAgbGV0dGVyLXNwYWNpbmc6IDAuMnB4O1xuYDtcblxuZXhwb3J0IGNvbnN0IFN0eWxlZExheWVyQ29uZmlnR3JvdXBBY3Rpb24gPSBzdHlsZWQuZGl2YFxuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBjb2xvcjogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS50ZXh0Q29sb3J9O1xuYDtcblxuZXhwb3J0IGNvbnN0IENvbmZpZ0dyb3VwQ29sbGFwc2libGVDb250ZW50ID0gc3R5bGVkLmRpdi5hdHRycyh7XG4gIGNsYXNzTmFtZTogJ2xheWVyLWNvbmZpZy1ncm91cF9fY29udGVudF9fY29sbGFwc2libGUnXG59KWBcbiAgb3ZlcmZsb3c6IHZpc2libGU7XG4gIHRyYW5zaXRpb246IG1heC1oZWlnaHQgMC4zcyBlYXNlLW91dDtcbiAgaGVpZ2h0OiBtYXgtY29udGVudDtcbiAgbWF4LWhlaWdodDogNjAwcHg7XG5gO1xuXG5leHBvcnQgY29uc3QgU3R5bGVkTGF5ZXJDb25maWdHcm91cCA9IHN0eWxlZC5kaXZgXG4gIHBhZGRpbmctbGVmdDogMThweDtcbiAgbWFyZ2luLWJvdHRvbTogMTJweDtcblxuICAmLmNvbGxhcHNlZCB7XG4gICAgLmxheWVyLWNvbmZpZy1ncm91cF9fY29udGVudCB7XG4gICAgICAubGF5ZXItY29uZmlnLWdyb3VwX19jb250ZW50X19jb2xsYXBzaWJsZSB7XG4gICAgICAgIC8qIGRpc3BsYXk6IG5vbmU7ICovXG4gICAgICAgIC8qIGZsZXg6IDA7ICovXG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICAgIG1heC1oZWlnaHQ6IDA7XG4gICAgICB9XG4gICAgfVxuICB9XG5gO1xuXG5leHBvcnQgY29uc3QgU3R5bGVkQ29uZmlnR3JvdXBIZWFkZXIgPSBzdHlsZWQuZGl2YFxuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gIG1hcmdpbi1ib3R0b206IDEycHg7XG5cbiAgOmhvdmVyIHtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgLmxheWVyLWNvbmZpZy1ncm91cF9fbGFiZWwge1xuICAgICAgY29sb3I6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUudGV4dENvbG9ySGx9O1xuICAgICAgYm9yZGVyLWxlZnQ6IDJweCBzb2xpZCAke3Byb3BzID0+IHByb3BzLnRoZW1lLnRleHRDb2xvckhsfTtcbiAgICB9XG5cbiAgICAubGF5ZXItY29uZmlnLWdyb3VwX19hY3Rpb24ge1xuICAgICAgY29sb3I6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUudGV4dENvbG9ySGx9O1xuICAgIH1cbiAgfVxuYDtcblxuY29uc3QgQ29uZmlnR3JvdXBDb250ZW50ID0gc3R5bGVkLmRpdmBcbiAgJi5kaXNhYmxlZCB7XG4gICAgb3BhY2l0eTogMC4zO1xuICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICAgICoge1xuICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gICAgfVxuICB9XG5gO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBMYXllckNvbmZpZ0dyb3VwIGV4dGVuZHMgQ29tcG9uZW50IHtcbiAgc3RhdGljIGRlZmF1bHRQcm9wcyA9IHtcbiAgICBjb2xsYXBzaWJsZTogZmFsc2UsXG4gICAgZXhwYW5kZWQ6IGZhbHNlLFxuICAgIG9uQ2hhbmdlOiAoKSA9PiB7fVxuICB9O1xuXG4gIHN0YXRlID0ge1xuICAgIGNvbGxhcHNlZDogdHJ1ZVxuICB9O1xuXG4gIGNvbXBvbmVudERpZE1vdW50KCkge1xuICAgIHRoaXMuX3NldENvbGxhcHNlU3RhdGUodGhpcy5wcm9wcy5leHBhbmRlZCk7XG4gIH1cblxuICBjb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzKG5leHRQcm9wcykge1xuICAgIHRoaXMuX3NldENvbGxhcHNlU3RhdGUobmV4dFByb3BzLmV4cGFuZGVkKTtcbiAgfVxuXG4gIF9zZXRDb2xsYXBzZVN0YXRlKGV4cGFuZGVkKSB7XG4gICAgLy8gaWYgcHJvcHMsZXhwYW5kZWQsIGFuZCBzdGF0ZSBjb2xsYXBzZWQsIHNldCBjb2xsYXBzZWQgdG8gYmUgZmFsc2VcbiAgICBpZiAoZXhwYW5kZWQgJiYgdGhpcy5zdGF0ZS5jb2xsYXBzZWQpIHtcbiAgICAgIHRoaXMuc2V0U3RhdGUoe2NvbGxhcHNlZDogZmFsc2V9KTtcbiAgICB9XG4gIH1cblxuICByZW5kZXIoKSB7XG4gICAgY29uc3Qge1xuICAgICAgbGFiZWwsXG4gICAgICBjaGlsZHJlbixcbiAgICAgIHByb3BlcnR5LFxuICAgICAgd2lkZ2V0LFxuICAgICAgb25DaGFuZ2UsXG4gICAgICBjb2xsYXBzaWJsZSxcbiAgICAgIGRlc2NyaXB0aW9uXG4gICAgfSA9IHRoaXMucHJvcHM7XG5cbiAgICBjb25zdCB7Y29sbGFwc2VkfSA9IHRoaXMuc3RhdGU7XG4gICAgcmV0dXJuIChcbiAgICAgIDxTdHlsZWRMYXllckNvbmZpZ0dyb3VwXG4gICAgICAgIGNsYXNzTmFtZT17Y2xhc3NuYW1lcygnbGF5ZXItY29uZmlnLWdyb3VwJywge2NvbGxhcHNlZH0pfVxuICAgICAgPlxuICAgICAgICA8U3R5bGVkQ29uZmlnR3JvdXBIZWFkZXJcbiAgICAgICAgICBjbGFzc05hbWU9XCJsYXllci1jb25maWctZ3JvdXBfX2hlYWRlclwiXG4gICAgICAgICAgb25DbGljaz17KCkgPT4gdGhpcy5zZXRTdGF0ZSh7Y29sbGFwc2VkOiAhdGhpcy5zdGF0ZS5jb2xsYXBzZWR9KX1cbiAgICAgICAgPlxuICAgICAgICAgIDxkaXYgc3R5bGU9e3tkaXNwbGF5OiAnZmxleCd9fT5cbiAgICAgICAgICAgIDxTdHlsZWRMYXllckNvbmZpZ0dyb3VwTGFiZWxcbiAgICAgICAgICAgICAgY2xhc3NOYW1lPVwibGF5ZXItY29uZmlnLWdyb3VwX19sYWJlbFwiXG4gICAgICAgICAgICAgIHN0eWxlPXt7bWFyZ2luVG9wOiAnMnB4J319XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHtsYWJlbH1cbiAgICAgICAgICAgIDwvU3R5bGVkTGF5ZXJDb25maWdHcm91cExhYmVsPlxuICAgICAgICAgICAge2Rlc2NyaXB0aW9uICYmIChcbiAgICAgICAgICAgICAgPEluZm9IZWxwZXJcbiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbj17ZGVzY3JpcHRpb259XG4gICAgICAgICAgICAgICAgaWQ9e2Ake3RoaXMucHJvcHMuaWR9LSR7cHJvcGVydHl9YH1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICl9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPFN0eWxlZExheWVyQ29uZmlnR3JvdXBBY3Rpb24gY2xhc3NOYW1lPVwibGF5ZXItY29uZmlnLWdyb3VwX19hY3Rpb25cIj5cbiAgICAgICAgICAgIHtwcm9wZXJ0eSA/IChcbiAgICAgICAgICAgICAgPFN3aXRjaFxuICAgICAgICAgICAgICAgIGNoZWNrZWQ9e3dpZGdldC5jb25maWdbcHJvcGVydHldfVxuICAgICAgICAgICAgICAgIGlkPXtgJHt3aWRnZXQuaWR9LSR7cHJvcGVydHl9YH1cbiAgICAgICAgICAgICAgICBvbkNoYW5nZT17KCkgPT5cbiAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlKHtbcHJvcGVydHldOiAhd2lkZ2V0LmNvbmZpZ1twcm9wZXJ0eV19KVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICkgOiBudWxsfVxuICAgICAgICAgICAge2NvbGxhcHNpYmxlID8gPFZlcnRUaHJlZURvdHMgaGVpZ2h0PVwiMThweFwiIC8+IDogbnVsbH1cbiAgICAgICAgICA8L1N0eWxlZExheWVyQ29uZmlnR3JvdXBBY3Rpb24+XG4gICAgICAgIDwvU3R5bGVkQ29uZmlnR3JvdXBIZWFkZXI+XG4gICAgICAgIDxDb25maWdHcm91cENvbnRlbnRcbiAgICAgICAgICBjbGFzc05hbWU9e2NsYXNzbmFtZXMoJ2xheWVyLWNvbmZpZy1ncm91cF9fY29udGVudCcsIHtcbiAgICAgICAgICAgIGRpc2FibGVkOiBwcm9wZXJ0eSAmJiAhd2lkZ2V0LmNvbmZpZ1twcm9wZXJ0eV1cbiAgICAgICAgICB9KX1cbiAgICAgICAgPlxuICAgICAgICAgIHtjaGlsZHJlbn1cbiAgICAgICAgPC9Db25maWdHcm91cENvbnRlbnQ+XG4gICAgICA8L1N0eWxlZExheWVyQ29uZmlnR3JvdXA+XG4gICAgKTtcbiAgfVxufVxuIl19