UNPKG

@future-grid/fgp-graph

Version:

fgp-graph is a chart lib based on Dygraphs

221 lines (156 loc) 24.9 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports["default"] = void 0; var _Badges = _interopRequireDefault(require("./widgets/Badges")); var _Exports = _interopRequireDefault(require("./widgets/Exports")); var _Series = _interopRequireDefault(require("./widgets/Series")); var _Intervals = _interopRequireDefault(require("./widgets/Intervals")); var _View = _interopRequireDefault(require("./widgets/View")); var _Filter = _interopRequireDefault(require("./widgets/Filter")); var _Extra = _interopRequireDefault(require("./widgets/Extra")); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } var Toolbar = function Toolbar(view, views, collectionSelectionListener, intervalSelectionListener, viewChangeListener, reactSelectionListener, colorFilterListener) { var _this = this; _classCallCheck(this, Toolbar); this.collectionSelectionListener = collectionSelectionListener; this.intervalSelectionListener = intervalSelectionListener; this.viewChangeListener = viewChangeListener; this.reactSelectionListener = reactSelectionListener; this.colorFilterListener = colorFilterListener; _defineProperty(this, "g", void 0); _defineProperty(this, "collectionOpts", void 0); _defineProperty(this, "viewConfig", void 0); _defineProperty(this, "badges", void 0); _defineProperty(this, "exports", void 0); _defineProperty(this, "series", void 0); _defineProperty(this, "intervals", void 0); _defineProperty(this, "view", void 0); _defineProperty(this, "filter", void 0); _defineProperty(this, "extra", void 0); _defineProperty(this, "graphHeader", void 0); _defineProperty(this, "graphDiv", void 0); _defineProperty(this, "views", void 0); _defineProperty(this, "activate", function (graph) { _this.g = graph; // only add once var graphDiv = graph.graphDiv; _this.graphDiv = graphDiv; // create div var fullHide = false; if (_this.viewConfig.graphConfig.hideHeader && _this.viewConfig.graphConfig.hideHeader === true) { fullHide = true; } else { if (_this.viewConfig.graphConfig.hideHeader) { var hideHeader = _this.viewConfig.graphConfig.hideHeader; var div = document.createElement("div"); div.style.width = "100%"; div.style.height = "30px;"; div.setAttribute("class", "fgp-graph-header"); graphDiv === null || graphDiv === void 0 ? void 0 : graphDiv.appendChild(div); _this.graphHeader = div; if (_this.viewConfig.graphConfig.features.exports) { _this.createExportBtns(graph, _this.viewConfig.graphConfig.features.exports); } if (!hideHeader.toolbar && _this.viewConfig.graphConfig.features.toolbar) { _this.createExtraToolbar(); } if (_this.viewConfig.graphConfig.filters) { _this.createFilter(); } if (!hideHeader.views) { _this.createView(); } if (!hideHeader.intervals) { _this.createInterval(); } if (!hideHeader.series) { _this.createSeries(); } _this.createCollectionBadges(_this.collectionOpts); } else { var _div = document.createElement("div"); _div.style.width = "100%"; _div.style.height = "30px;"; _div.setAttribute("class", "fgp-graph-header"); graphDiv === null || graphDiv === void 0 ? void 0 : graphDiv.appendChild(_div); _this.graphHeader = _div; _this.createExportBtns(graph, _this.viewConfig.graphConfig.features.exports); _this.createExtraToolbar(); _this.createFilter(); _this.createView(); _this.createInterval(); _this.createSeries(); _this.createCollectionBadges(_this.collectionOpts); } } return { layout: fullHide ? _this.reserveSpaceTop0 : _this.reserveSpaceTop }; }); _defineProperty(this, "reserveSpaceTop", function (e) { e.reserveSpaceTop(30); }); _defineProperty(this, "reserveSpaceTop0", function (e) { e.reserveSpaceTop(0); }); _defineProperty(this, "createExportBtns", function (graph, config) { if (_this.graphHeader && config) { _this.exports = new _Exports["default"](_this.graphHeader, graph, config, _this.graphDiv, _this.reactSelectionListener); } }); _defineProperty(this, "createView", function () { if (_this.graphHeader) { _this.view = new _View["default"](_this.graphHeader, _this.views, _this.viewChangeListener); } }); _defineProperty(this, "createInterval", function () { if (_this.graphHeader) { _this.intervals = new _Intervals["default"](_this.graphHeader, _this.viewConfig, _this.g, _this.intervalSelectionListener); } }); _defineProperty(this, "createSeries", function () { if (_this.graphHeader) { _this.series = new _Series["default"](_this.graphHeader, _this.viewConfig, _this.g); // check if filter exist if (_this.filter) { // _this.filter.setSeriesWidget(_this.series); } } }); _defineProperty(this, "createFilter", function () { if (_this.graphHeader) { _this.filter = new _Filter["default"](_this.graphHeader, _this.viewConfig, _this.g, _this.colorFilterListener); } }); _defineProperty(this, "createExtraToolbar", function () { if (_this.graphHeader) { _this.extra = new _Extra["default"](_this.graphHeader, _this.viewConfig); } }); _defineProperty(this, "createCollectionBadges", function (collections) { if (_this.graphHeader) { _this.badges = new _Badges["default"](_this.graphHeader, collections, _this.collectionSelectionListener); } }); _defineProperty(this, "updateDateWindow", function (dateWindow, dateRange) { var _this$badges, _this$intervals; // update dateWindow for badges (_this$badges = _this.badges) === null || _this$badges === void 0 ? void 0 : _this$badges.setDateWindow(dateWindow); (_this$intervals = _this.intervals) === null || _this$intervals === void 0 ? void 0 : _this$intervals.setDateWindow(dateWindow, dateRange); }); _defineProperty(this, "updateData", function (collection, labels, data) { var _this$badges2, _this$exports, _this$series, _this$filter; console.log("current collection is ", collection); (_this$badges2 = _this.badges) === null || _this$badges2 === void 0 ? void 0 : _this$badges2.autoSelect(collection); (_this$exports = _this.exports) === null || _this$exports === void 0 ? void 0 : _this$exports.setData(data, labels, collection); (_this$series = _this.series) === null || _this$series === void 0 ? void 0 : _this$series.setData(data, labels, collection); (_this$filter = _this.filter) === null || _this$filter === void 0 ? void 0 : _this$filter.setData(collection); }); this.collectionOpts = view.graphConfig.collections; this.views = views; this.viewConfig = view; }; exports["default"] = Toolbar; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9leHRyYXMvdG9vbGJhci9Ub29sYmFyLnRzIl0sIm5hbWVzIjpbIlRvb2xiYXIiLCJ2aWV3Iiwidmlld3MiLCJjb2xsZWN0aW9uU2VsZWN0aW9uTGlzdGVuZXIiLCJpbnRlcnZhbFNlbGVjdGlvbkxpc3RlbmVyIiwidmlld0NoYW5nZUxpc3RlbmVyIiwicmVhY3RTZWxlY3Rpb25MaXN0ZW5lciIsImNvbG9yRmlsdGVyTGlzdGVuZXIiLCJncmFwaCIsImciLCJncmFwaERpdiIsImZ1bGxIaWRlIiwidmlld0NvbmZpZyIsImdyYXBoQ29uZmlnIiwiaGlkZUhlYWRlciIsImRpdiIsImRvY3VtZW50IiwiY3JlYXRlRWxlbWVudCIsInN0eWxlIiwid2lkdGgiLCJoZWlnaHQiLCJzZXRBdHRyaWJ1dGUiLCJhcHBlbmRDaGlsZCIsImdyYXBoSGVhZGVyIiwiZmVhdHVyZXMiLCJleHBvcnRzIiwiY3JlYXRlRXhwb3J0QnRucyIsInRvb2xiYXIiLCJjcmVhdGVFeHRyYVRvb2xiYXIiLCJmaWx0ZXJzIiwiY3JlYXRlRmlsdGVyIiwiY3JlYXRlVmlldyIsImludGVydmFscyIsImNyZWF0ZUludGVydmFsIiwic2VyaWVzIiwiY3JlYXRlU2VyaWVzIiwiY3JlYXRlQ29sbGVjdGlvbkJhZGdlcyIsImNvbGxlY3Rpb25PcHRzIiwibGF5b3V0IiwicmVzZXJ2ZVNwYWNlVG9wMCIsInJlc2VydmVTcGFjZVRvcCIsImUiLCJjb25maWciLCJFeHBvcnRzIiwiVmlldyIsIkludGVydmFscyIsIlNlcmllcyIsImZpbHRlciIsInNldFNlcmllc1dpZGdldCIsIkZpbHRlciIsImV4dHJhIiwiRXh0cmEiLCJjb2xsZWN0aW9ucyIsImJhZGdlcyIsIkJhZGdlcyIsImRhdGVXaW5kb3ciLCJkYXRlUmFuZ2UiLCJzZXREYXRlV2luZG93IiwiY29sbGVjdGlvbiIsImxhYmVscyIsImRhdGEiLCJjb25zb2xlIiwibG9nIiwiYXV0b1NlbGVjdCIsInNldERhdGEiXSwibWFw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Q0FBQ3ZCLFNBQUwsb0VBQWdCeUIsYUFBaEIsQ0FBOEJGLFVBQTlCLEVBQTBDQyxTQUExQztBQUNILEdBdkowWjs7QUFBQSxzQ0F5SnZZLFVBQUNFLFVBQUQsRUFBOEJDLE1BQTlCLEVBQWdEQyxJQUFoRCxFQUFnRTtBQUFBOztBQUNoRkMsSUFBQUEsT0FBTyxDQUFDQyxHQUFSLDJCQUFzQ0osVUFBdEM7QUFDQSxxQkFBQSxLQUFJLENBQUNMLE1BQUwsZ0VBQWFVLFVBQWIsQ0FBd0JMLFVBQXhCO0FBQ0EscUJBQUEsS0FBSSxDQUFDakMsT0FBTCxnRUFBY3VDLE9BQWQsQ0FBc0JKLElBQXRCLEVBQTRCRCxNQUE1QixFQUFvQ0QsVUFBcEM7QUFDQSxvQkFBQSxLQUFJLENBQUN4QixNQUFMLDhEQUFhOEIsT0FBYixDQUFxQkosSUFBckIsRUFBMkJELE1BQTNCLEVBQW1DRCxVQUFuQztBQUNBLG9CQUFBLEtBQUksQ0FBQ1gsTUFBTCw4REFBYWlCLE9BQWIsQ0FBcUJOLFVBQXJCO0FBQ0gsR0EvSjBaOztBQUN2WixPQUFLckIsY0FBTCxHQUFzQnBDLElBQUksQ0FBQ1ksV0FBTCxDQUFpQnVDLFdBQXZDO0FBQ0EsT0FBS2xELEtBQUwsR0FBYUEsS0FBYjtBQUNBLE9BQUtVLFVBQUwsR0FBa0JYLElBQWxCO0FBQ0gsQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBEeWdyYXBoIGZyb20gXCJkeWdyYXBoc1wiO1xuaW1wb3J0IHtHcmFwaENvbGxlY3Rpb24sIEdyYXBoRXhwb3J0cywgVmlld0NvbmZpZ30gZnJvbSBcIi4uLy4uL21ldGFkYXRhL2NvbmZpZ3VyYXRpb25zXCI7XG5pbXBvcnQgQmFkZ2VzIGZyb20gXCIuL3dpZGdldHMvQmFkZ2VzXCI7XG5pbXBvcnQgRXhwb3J0cyBmcm9tIFwiLi93aWRnZXRzL0V4cG9ydHNcIjtcbmltcG9ydCBTZXJpZXMgZnJvbSBcIi4vd2lkZ2V0cy9TZXJpZXNcIjtcbmltcG9ydCBJbnRlcnZhbHMgZnJvbSBcIi4vd2lkZ2V0cy9JbnRlcnZhbHNcIjtcbmltcG9ydCBWaWV3IGZyb20gXCIuL3dpZGdldHMvVmlld1wiO1xuaW1wb3J0IEZpbHRlciBmcm9tIFwiLi93aWRnZXRzL0ZpbHRlclwiO1xuaW1wb3J0IEV4dHJhIGZyb20gXCIuL3dpZGdldHMvRXh0cmFcIjtcbmltcG9ydCBGZ3BHcmFwaCBmcm9tIFwiLi4vLi5cIjtcblxuZXhwb3J0IGludGVyZmFjZSBSZXNlcnZlU3BhY2Uge1xuICAgIHg6IG51bWJlcjtcbiAgICB5OiBudW1iZXI7XG4gICAgdzogbnVtYmVyO1xuICAgIGg6IG51bWJlclxufVxuXG5cbmV4cG9ydCBpbnRlcmZhY2UgTGF5b3V0IHtcbiAgICBjaGFydF9kaXY6IEhUTUxEaXZFbGVtZW50LFxuXG4gICAgcmVzZXJ2ZVNwYWNlTGVmdChweDogbnVtYmVyKTogUmVzZXJ2ZVNwYWNlO1xuXG4gICAgcmVzZXJ2ZVNwYWNlUmlnaHQocHg6IG51bWJlcik6IFJlc2VydmVTcGFjZTtcblxuICAgIHJlc2VydmVTcGFjZVRvcChweDogbnVtYmVyKTogUmVzZXJ2ZVNwYWNlO1xuXG4gICAgcmVzZXJ2ZVNwYWNlQm90dG9tKHB4OiBudW1iZXIpOiBSZXNlcnZlU3BhY2U7XG5cbiAgICBjaGFydFJlY3QoKTogUmVzZXJ2ZVNwYWNlO1xuXG59XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFRvb2xiYXIge1xuXG4gICAgcHJpdmF0ZSBnPzogRHlncmFwaDtcblxuICAgIHByaXZhdGUgcmVhZG9ubHkgY29sbGVjdGlvbk9wdHM6IGFueTtcblxuICAgIHByaXZhdGUgcmVhZG9ubHkgdmlld0NvbmZpZzogVmlld0NvbmZpZztcblxuICAgIHByaXZhdGUgYmFkZ2VzPzogQmFkZ2VzO1xuICAgIHByaXZhdGUgZXhwb3J0cz86IEV4cG9ydHM7XG4gICAgcHJpdmF0ZSBzZXJpZXM/OiBTZXJpZXM7XG4gICAgcHJpdmF0ZSBpbnRlcnZhbHM/OiBJbnRlcnZhbHM7XG4gICAgcHJpdmF0ZSB2aWV3PzogVmlldztcbiAgICBwcml2YXRlIGZpbHRlcj86IEZpbHRlcjtcbiAgICBwcml2YXRlIGV4dHJhPzogRXh0cmE7XG5cbiAgICBwcml2YXRlIGdyYXBoSGVhZGVyPzogRWxlbWVudDtcblxuICAgIHByaXZhdGUgZ3JhcGhEaXY/OiBFbGVtZW50O1xuXG4gICAgcHJpdmF0ZSByZWFkb25seSB2aWV3czogQXJyYXk8Vmlld0NvbmZpZz47XG5cbiAgICBjb25zdHJ1Y3Rvcih2aWV3OiBWaWV3Q29uZmlnLCB2aWV3czogQXJyYXk8Vmlld0NvbmZpZz4sIHB1YmxpYyBjb2xsZWN0aW9uU2VsZWN0aW9uTGlzdGVuZXI6IChjb2xsZWN0aW9uczogQXJyYXk8R3JhcGhDb2xsZWN0aW9uPikgPT4gdm9pZCwgcHVibGljIGludGVydmFsU2VsZWN0aW9uTGlzdGVuZXI6IChjb2xsZWN0aW9uOiBHcmFwaENvbGxlY3Rpb24sIGRhdGVXaW5kb3c6IFtudW1iZXIsIG51bWJlcl0pID0+IHZvaWQsIHB1YmxpYyB2aWV3Q2hhbmdlTGlzdGVuZXI6ICh2aWV3OiBWaWV3Q29uZmlnKSA9PiB2b2lkLCBwdWJsaWMgcmVhY3RTZWxlY3Rpb25MaXN0ZW5lcj86IChhY3RpdmU6IGJvb2xlYW4pID0+IHZvaWQsIHB1YmxpYyBjb2xvckZpbHRlckxpc3RlbmVyPzogKGlzTG9jazpib29sZWFuKSA9PiB2b2lkKSB7XG4gICAgICAgIHRoaXMuY29sbGVjdGlvbk9wdHMgPSB2aWV3LmdyYXBoQ29uZmlnLmNvbGxlY3Rpb25zO1xuICAgICAgICB0aGlzLnZpZXdzID0gdmlld3M7XG4gICAgICAgIHRoaXMudmlld0NvbmZpZyA9IHZpZXc7XG4gICAgfVxuXG4gICAgYWN0aXZhdGUgPSAoZ3JhcGg6IER5Z3JhcGgpID0+IHtcbiAgICAgICAgdGhpcy5nID0gZ3JhcGg7XG4gICAgICAgIC8vIG9ubHkgYWRkIG9uY2VcbiAgICAgICAgY29uc3QgZ3JhcGhEaXYgPSAoPGFueT5ncmFwaCkuZ3JhcGhEaXY7XG5cbiAgICAgICAgdGhpcy5ncmFwaERpdiA9IGdyYXBoRGl2O1xuICAgICAgICAvLyBjcmVhdGUgZGl2XG4gICAgICAgIGxldCBmdWxsSGlkZSA9IGZhbHNlO1xuICAgICAgICBpZiAodGhpcy52aWV3Q29uZmlnLmdyYXBoQ29uZmlnLmhpZGVIZWFkZXIgJiYgdGhpcy52aWV3Q29uZmlnLmdyYXBoQ29uZmlnLmhpZGVIZWFkZXIgPT09IHRydWUpIHtcbiAgICAgICAgICAgIGZ1bGxIaWRlID0gdHJ1ZTtcbiAgICAgICAgfSBlbHNlIHtcblxuICAgICAgICAgICAgaWYgKHRoaXMudmlld0NvbmZpZy5ncmFwaENvbmZpZy5oaWRlSGVhZGVyKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgaGlkZUhlYWRlciA9IHRoaXMudmlld0NvbmZpZy5ncmFwaENvbmZpZy5oaWRlSGVhZGVyO1xuXG4gICAgICAgICAgICAgICAgbGV0IGRpdjogSFRNTEVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpO1xuICAgICAgICAgICAgICAgIGRpdi5zdHlsZS53aWR0aCA9IFwiMTAwJVwiO1xuICAgICAgICAgICAgICAgIGRpdi5zdHlsZS5oZWlnaHQgPSBcIjMwcHg7XCI7XG4gICAgICAgICAgICAgICAgZGl2LnNldEF0dHJpYnV0ZShcImNsYXNzXCIsIFwiZmdwLWdyYXBoLWhlYWRlclwiKTtcbiAgICAgICAgICAgICAgICBncmFwaERpdj8uYXBwZW5kQ2hpbGQoZGl2KTtcbiAgICAgICAgICAgICAgICB0aGlzLmdyYXBoSGVhZGVyID0gZGl2O1xuXG5cbiAgICAgICAgICAgICAgICBpZiAodGhpcy52aWV3Q29uZmlnLmdyYXBoQ29uZmlnLmZlYXR1cmVzLmV4cG9ydHMpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jcmVhdGVFeHBvcnRCdG5zKGdyYXBoLCB0aGlzLnZpZXdDb25maWcuZ3JhcGhDb25maWcuZmVhdHVyZXMuZXhwb3J0cyk7XG4gICAgICAgICAgICAgICAgfVxuXG5cbiAgICAgICAgICAgICAgICBpZiAoIWhpZGVIZWFkZXIudG9vbGJhciAmJiB0aGlzLnZpZXdDb25maWcuZ3JhcGhDb25maWcuZmVhdHVyZXMudG9vbGJhcikge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmNyZWF0ZUV4dHJhVG9vbGJhcigpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmICh0aGlzLnZpZXdDb25maWcuZ3JhcGhDb25maWcuZmlsdGVycykge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmNyZWF0ZUZpbHRlcigpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmICghaGlkZUhlYWRlci52aWV3cykge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmNyZWF0ZVZpZXcoKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAoIWhpZGVIZWFkZXIuaW50ZXJ2YWxzKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY3JlYXRlSW50ZXJ2YWwoKTtcbiAgICAgICAgICAgICAgICB9XG5cblxuICAgICAgICAgICAgICAgIGlmICghaGlkZUhlYWRlci5zZXJpZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jcmVhdGVTZXJpZXMoKTtcbiAgICAgICAgICAgICAgICB9XG5cblxuICAgICAgICAgICAgICAgIHRoaXMuY3JlYXRlQ29sbGVjdGlvbkJhZGdlcyh0aGlzLmNvbGxlY3Rpb25PcHRzKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgbGV0IGRpdjogSFRNTEVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpO1xuICAgICAgICAgICAgICAgIGRpdi5zdHlsZS53aWR0aCA9IFwiMTAwJVwiO1xuICAgICAgICAgICAgICAgIGRpdi5zdHlsZS5oZWlnaHQgPSBcIjMwcHg7XCI7XG4gICAgICAgICAgICAgICAgZGl2LnNldEF0dHJpYnV0ZShcImNsYXNzXCIsIFwiZmdwLWdyYXBoLWhlYWRlclwiKTtcbiAgICAgICAgICAgICAgICBncmFwaERpdj8uYXBwZW5kQ2hpbGQoZGl2KTtcbiAgICAgICAgICAgICAgICB0aGlzLmdyYXBoSGVhZGVyID0gZGl2O1xuXG4gICAgICAgICAgICAgICAgdGhpcy5jcmVhdGVFeHBvcnRCdG5zKCBncmFwaCwgdGhpcy52aWV3Q29uZmlnLmdyYXBoQ29uZmlnLmZlYXR1cmVzLmV4cG9ydHMpO1xuICAgICAgICAgICAgICAgIHRoaXMuY3JlYXRlRXh0cmFUb29sYmFyKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5jcmVhdGVGaWx0ZXIoKTtcbiAgICAgICAgICAgICAgICB0aGlzLmNyZWF0ZVZpZXcoKTtcbiAgICAgICAgICAgICAgICB0aGlzLmNyZWF0ZUludGVydmFsKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5jcmVhdGVTZXJpZXMoKTtcbiAgICAgICAgICAgICAgICB0aGlzLmNyZWF0ZUNvbGxlY3Rpb25CYWRnZXModGhpcy5jb2xsZWN0aW9uT3B0cyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBsYXlvdXQ6IGZ1bGxIaWRlID8gdGhpcy5yZXNlcnZlU3BhY2VUb3AwIDogdGhpcy5yZXNlcnZlU3BhY2VUb3BcbiAgICAgICAgfTtcbiAgICB9O1xuXG5cbiAgICBwcml2YXRlIHJlc2VydmVTcGFjZVRvcCA9IChlOiBMYXlvdXQpID0+IHtcbiAgICAgICAgZS5yZXNlcnZlU3BhY2VUb3AoMzApO1xuICAgIH07XG5cbiAgICBwcml2YXRlIHJlc2VydmVTcGFjZVRvcDAgPSAoZTogTGF5b3V0KSA9PiB7XG4gICAgICAgIGUucmVzZXJ2ZVNwYWNlVG9wKDApO1xuICAgIH07XG5cblxuICAgIHByaXZhdGUgY3JlYXRlRXhwb3J0QnRucyA9ICggZ3JhcGg6IER5Z3JhcGgsIGNvbmZpZz86IEdyYXBoRXhwb3J0c1tdKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLmdyYXBoSGVhZGVyICYmIGNvbmZpZykge1xuICAgICAgICAgICAgdGhpcy5leHBvcnRzID0gbmV3IEV4cG9ydHModGhpcy5ncmFwaEhlYWRlciwgZ3JhcGgsIGNvbmZpZywgdGhpcy5ncmFwaERpdiwgdGhpcy5yZWFjdFNlbGVjdGlvbkxpc3RlbmVyKTtcbiAgICAgICAgfVxuICAgIH07XG5cblxuICAgIHByaXZhdGUgY3JlYXRlVmlldyA9ICgpID0+IHtcbiAgICAgICAgaWYgKHRoaXMuZ3JhcGhIZWFkZXIpIHtcbiAgICAgICAgICAgIHRoaXMudmlldyA9IG5ldyBWaWV3KHRoaXMuZ3JhcGhIZWFkZXIsIHRoaXMudmlld3MsIHRoaXMudmlld0NoYW5nZUxpc3RlbmVyKTtcbiAgICAgICAgfVxuICAgIH07XG5cbiAgICBwcml2YXRlIGNyZWF0ZUludGVydmFsID0gKCkgPT4ge1xuICAgICAgICBpZiAodGhpcy5ncmFwaEhlYWRlcikge1xuICAgICAgICAgICAgdGhpcy5pbnRlcnZhbHMgPSBuZXcgSW50ZXJ2YWxzKHRoaXMuZ3JhcGhIZWFkZXIsIHRoaXMudmlld0NvbmZpZywgdGhpcy5nLCB0aGlzLmludGVydmFsU2VsZWN0aW9uTGlzdGVuZXIpO1xuICAgICAgICB9XG4gICAgfTtcblxuICAgIHByaXZhdGUgY3JlYXRlU2VyaWVzID0gKCkgPT4ge1xuICAgICAgICBpZiAodGhpcy5ncmFwaEhlYWRlcikge1xuICAgICAgICAgICAgdGhpcy5zZXJpZXMgPSBuZXcgU2VyaWVzKHRoaXMuZ3JhcGhIZWFkZXIsIHRoaXMudmlld0NvbmZpZywgdGhpcy5nKTtcbiAgICAgICAgICAgIC8vIGNoZWNrIGlmIGZpbHRlciBleGlzdFxuICAgICAgICAgICAgaWYodGhpcy5maWx0ZXIpe1xuICAgICAgICAgICAgICAgIC8vXG4gICAgICAgICAgICAgICAgdGhpcy5maWx0ZXIuc2V0U2VyaWVzV2lkZ2V0KHRoaXMuc2VyaWVzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH07XG5cbiAgICBwcml2YXRlIGNyZWF0ZUZpbHRlciA9ICgpID0+IHtcbiAgICAgICAgaWYgKHRoaXMuZ3JhcGhIZWFkZXIpIHtcbiAgICAgICAgICAgIHRoaXMuZmlsdGVyID0gbmV3IEZpbHRlcih0aGlzLmdyYXBoSGVhZGVyLCB0aGlzLnZpZXdDb25maWcsIHRoaXMuZywgdGhpcy5jb2xvckZpbHRlckxpc3RlbmVyKTtcbiAgICAgICAgfVxuICAgIH07XG5cbiAgICBwcml2YXRlIGNyZWF0ZUV4dHJhVG9vbGJhciA9ICgpID0+IHtcbiAgICAgICAgaWYgKHRoaXMuZ3JhcGhIZWFkZXIpIHtcbiAgICAgICAgICAgIHRoaXMuZXh0cmEgPSBuZXcgRXh0cmEodGhpcy5ncmFwaEhlYWRlciwgdGhpcy52aWV3Q29uZmlnKTtcbiAgICAgICAgfVxuICAgIH07XG5cbiAgICAvKipcbiAgICAgKiBBZGQgY29sbGVjdGlvbiBiYWRnZSBvbiBncmFwaC5cbiAgICAgKiBAcGFyYW0gZyAgXCJkeWdyYXBoXCIgaW5zdGFuY2VcbiAgICAgKiBAcGFyYW0gY29sbGVjdGlvbnNcbiAgICAgKi9cbiAgICBwcml2YXRlIGNyZWF0ZUNvbGxlY3Rpb25CYWRnZXMgPSAoY29sbGVjdGlvbnM6IEFycmF5PEdyYXBoQ29sbGVjdGlvbj4pID0+IHtcbiAgICAgICAgaWYgKHRoaXMuZ3JhcGhIZWFkZXIpIHtcbiAgICAgICAgICAgIHRoaXMuYmFkZ2VzID0gbmV3IEJhZGdlcyh0aGlzLmdyYXBoSGVhZGVyLCBjb2xsZWN0aW9ucywgdGhpcy5jb2xsZWN0aW9uU2VsZWN0aW9uTGlzdGVuZXIpO1xuICAgICAgICB9XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBjYWxsIHRoaXMgZnVuY3Rpb24gdG8gdXBkYXRlIGFsbCB0b29sYmFyIHdpZGdldHNcbiAgICAgKiBAcGFyYW0gZGF0ZVdpbmRvd1xuICAgICAqL1xuICAgIHB1YmxpYyB1cGRhdGVEYXRlV2luZG93ID0gKGRhdGVXaW5kb3c6IEFycmF5PG51bWJlcj4sIGRhdGVSYW5nZTogQXJyYXk8bnVtYmVyPikgPT4ge1xuICAgICAgICAvLyB1cGRhdGUgZGF0ZVdpbmRvdyBmb3IgYmFkZ2VzXG4gICAgICAgIHRoaXMuYmFkZ2VzPy5zZXREYXRlV2luZG93KGRhdGVXaW5kb3cpO1xuICAgICAgICB0aGlzLmludGVydmFscz8uc2V0RGF0ZVdpbmRvdyhkYXRlV2luZG93LCBkYXRlUmFuZ2UpO1xuICAgIH07XG5cbiAgICBwdWJsaWMgdXBkYXRlRGF0YSA9IChjb2xsZWN0aW9uOiBHcmFwaENvbGxlY3Rpb24sIGxhYmVsczogc3RyaW5nW10sIGRhdGE6IGFueVtdKSA9PiB7XG4gICAgICAgIGNvbnNvbGUubG9nKGBjdXJyZW50IGNvbGxlY3Rpb24gaXMgYCwgY29sbGVjdGlvbik7XG4gICAgICAgIHRoaXMuYmFkZ2VzPy5hdXRvU2VsZWN0KGNvbGxlY3Rpb24pO1xuICAgICAgICB0aGlzLmV4cG9ydHM/LnNldERhdGEoZGF0YSwgbGFiZWxzLCBjb2xsZWN0aW9uKTtcbiAgICAgICAgdGhpcy5zZXJpZXM/LnNldERhdGEoZGF0YSwgbGFiZWxzLCBjb2xsZWN0aW9uKTtcbiAgICAgICAgdGhpcy5maWx0ZXI/LnNldERhdGEoY29sbGVjdGlvbik7XG4gICAgfTtcblxuXG59Il19