@future-grid/fgp-graph
Version:
fgp-graph is a chart lib based on Dygraphs
221 lines (156 loc) • 24.9 kB
JavaScript
;
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