pretur.navigation
Version:
SPA navigation helper using react and redux
103 lines • 15.9 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
var tslib_1 = require("tslib");
var pageInstance_1 = require("./pageInstance");
var buildDescriptorsFromTree_1 = require("./buildDescriptorsFromTree");
var actions_1 = require("./actions");
function folder(title, contents) {
return { title: title, contents: contents };
}
exports.folder = folder;
function buildPage(component, node, options) {
if (options === void 0) { options = {}; }
var page = tslib_1.__assign({ hidden: false, persistent: true }, options, { component: component,
node: node,
open: open,
replace: replace });
function open(dispatch, navigator, opt) {
if (opt === void 0) { opt = {}; }
dispatch(actions_1.NAVIGATION_OPEN_PAGE.create.unicast(navigator.identifier, tslib_1.__assign({}, opt, { mutex: opt.mutex ? page.path + "/" + opt.mutex : page.path, path: page.path })));
}
function replace(dispatch, navigator, target, opt) {
if (opt === void 0) { opt = {}; }
dispatch(actions_1.NAVIGATION_REPLACE_PAGE.create.unicast(navigator.identifier, tslib_1.__assign({}, opt, { toRemoveMutex: target, mutex: opt.mutex ? page.path + "/" + opt.mutex : page.path, path: page.path })));
}
return page;
}
exports.buildPage = buildPage;
var Pages = /** @class */ (function () {
function Pages(prefix, root) {
var descriptors = buildDescriptorsFromTree_1.buildDescriptorsFromTree(root);
this.prefix = prefix;
this.tree = root;
this.pages = {};
for (var _i = 0, _a = descriptors.pages; _i < _a.length; _i++) {
var p = _a[_i];
this.pages[p.path] = p;
}
this.folders = {};
for (var _b = 0, _c = descriptors.folders; _b < _c.length; _b++) {
var f = _c[_b];
this.folders[f.path] = f;
}
this.calculatedPathTree = descriptors.pathTree;
this.calculatedFolderContents = descriptors.folderContents;
this.calculatedFilteredPathTree = descriptors.filteredPathTree;
this.calculatedFilteredFolderContents = descriptors.filteredFolderContents;
}
Pages.prototype.hasPage = function (path) {
return !!this.pages[path];
};
Pages.prototype.getPage = function (path) {
return this.pages[path];
};
Pages.prototype.hasFolder = function (path) {
return !!this.folders[path];
};
Pages.prototype.getFolder = function (path) {
return this.folders[path];
};
Pages.prototype.isHidden = function (path) {
if (this.hasPage(path)) {
return this.getPage(path).hidden;
}
return false;
};
Object.defineProperty(Pages.prototype, "pathTree", {
get: function () {
return this.calculatedPathTree;
},
enumerable: true,
configurable: true
});
Object.defineProperty(Pages.prototype, "folderContents", {
get: function () {
return this.calculatedFolderContents;
},
enumerable: true,
configurable: true
});
Object.defineProperty(Pages.prototype, "filteredPathTree", {
get: function () {
return this.calculatedFilteredPathTree;
},
enumerable: true,
configurable: true
});
Object.defineProperty(Pages.prototype, "filteredFolderContents", {
get: function () {
return this.calculatedFilteredFolderContents;
},
enumerable: true,
configurable: true
});
Pages.prototype.buildInstance = function (occurrence) {
if (!this.hasPage(occurrence.path)) {
throw new Error("No descriptor exists for the provided path (" + occurrence.path + ")");
}
return new pageInstance_1.PageInstance(this.pages[occurrence.path], occurrence);
};
return Pages;
}());
exports.Pages = Pages;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvcGFnZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBRUEsK0NBQThDO0FBQzlDLHVFQUFzRTtBQUV0RSxxQ0FBMEU7QUFZMUUsZ0JBQ0UsS0FBYSxFQUNiLFFBQXlCO0lBRXpCLE1BQU0sQ0FBZ0IsRUFBRSxLQUFLLE9BQUEsRUFBRSxRQUFRLFVBQUEsRUFBRSxDQUFDO0FBQzVDLENBQUM7QUFMRCx3QkFLQztBQXFDRCxtQkFDRSxTQUF3RCxFQUN4RCxJQUEyQixFQUMzQixPQUE4QjtJQUE5Qix3QkFBQSxFQUFBLFlBQThCO0lBRTlCLElBQU0sSUFBSSxHQUFHLG1CQUNYLE1BQU0sRUFBRSxLQUFLLEVBQ2IsVUFBVSxFQUFFLElBQUksSUFDYixPQUFPLElBQ1YsU0FBUyxXQUFBO1FBQ1QsSUFBSSxNQUFBO1FBQ0osSUFBSSxNQUFBO1FBQ0osT0FBTyxTQUFBLEdBQ1IsQ0FBQztJQUVGLGNBQWMsUUFBa0IsRUFBRSxTQUFvQixFQUFFLEdBQThCO1FBQTlCLG9CQUFBLEVBQUEsUUFBOEI7UUFDcEYsUUFBUSxDQUFDLDhCQUFvQixDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLFVBQVUsdUJBQzVELEdBQUcsSUFDTixLQUFLLEVBQUUsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUksSUFBSSxDQUFDLElBQUksU0FBSSxHQUFHLENBQUMsS0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUMxRCxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksSUFDZixDQUFDLENBQUM7SUFDTixDQUFDO0lBRUQsaUJBQ0UsUUFBa0IsRUFDbEIsU0FBb0IsRUFDcEIsTUFBYyxFQUNkLEdBQWlDO1FBQWpDLG9CQUFBLEVBQUEsUUFBaUM7UUFFakMsUUFBUSxDQUFDLGlDQUF1QixDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLFVBQVUsdUJBQy9E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Ozs7T0FBQTtJQUVELHNCQUFXLHlDQUFzQjthQUFqQztZQUNFLE1BQU0sQ0FBQyxJQUFJLENBQUMsZ0NBQWdDLENBQUM7UUFDL0MsQ0FBQzs7O09BQUE7SUFFTSw2QkFBYSxHQUFwQixVQUNFLFVBQStDO1FBRS9DLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ25DLE1BQU0sSUFBSSxLQUFLLENBQUMsaURBQStDLFVBQVUsQ0FBQyxJQUFJLE1BQUcsQ0FBQyxDQUFDO1FBQ3JGLENBQUM7UUFFRCxNQUFNLENBQUMsSUFBSSwyQkFBWSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxFQUFFLFVBQVUsQ0FBQyxDQUFDO0lBQ25FLENBQUM7SUFDSCxZQUFDO0FBQUQsQ0FBQyxBQWxGRCxJQWtGQztBQWxGWSxzQkFBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudENsYXNzLCBTdGF0ZWxlc3NDb21wb25lbnQgfSBmcm9tICdyZWFjdCc7XHJcbmltcG9ydCB7IERpc3BhdGNoLCBSZWR1Y2libGVOb2RlIH0gZnJvbSAncmVkdWNpYmxlLW5vZGUnO1xyXG5pbXBvcnQgeyBQYWdlSW5zdGFuY2UgfSBmcm9tICcuL3BhZ2VJbnN0YW5jZSc7XHJcbmltcG9ydCB7IGJ1aWxkRGVzY3JpcHRvcnNGcm9tVHJlZSB9IGZyb20gJy4vYnVpbGREZXNjcmlwdG9yc0Zyb21UcmVlJztcclxuaW1wb3J0IHsgTmF2aWdhdG9yIH0gZnJvbSAnLi9uYXZpZ2F0b3InO1xyXG5pbXBvcnQgeyBOQVZJR0FUSU9OX09QRU5fUEFHRSwgTkFWSUdBVElPTl9SRVBMQUNFX1BBR0UgfSBmcm9tICcuL2FjdGlvbnMnO1xyXG5cclxuZXhwb3J0IHR5cGUgVmFsaWRUcmVlTm9kZSA9IHsgW3BhdGg6IHN0cmluZ106IFBhZ2VGb2xkZXIgfCBQYWdlIH07XHJcblxyXG5leHBvcnQgdHlwZSBQYWdlVHJlZU5vZGU8VCBleHRlbmRzIFZhbGlkVHJlZU5vZGUgPSB7fT4gPSBUO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBQYWdlRm9sZGVyPFQgZXh0ZW5kcyBWYWxpZFRyZWVOb2RlID0ge30+IHtcclxuICBwYXRoOiBzdHJpbmc7XHJcbiAgdGl0bGU6IHN0cmluZztcclxuICBjb250ZW50czogUGFnZVRyZWVOb2RlPFQ+O1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gZm9sZGVyPFQgZXh0ZW5kcyBWYWxpZFRyZWVOb2RlID0ge30+KFxyXG4gIHRpdGxlOiBzdHJpbmcsXHJcbiAgY29udGVudHM6IFBhZ2VUcmVlTm9kZTxUPixcclxuKTogUGFnZUZvbGRlcjxUPiB7XHJcbiAgcmV0dXJuIDxQYWdlRm9sZGVyPFQ+PnsgdGl0bGUsIGNvbnRlbnRzIH07XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgUmVwbGFjZU9wdGlvbnM8VFBhcmFtcz4ge1xyXG4gIG11dGV4Pzogc3RyaW5nO1xyXG4gIHBhcmFtcz86IFRQYXJhbXM7XHJcbiAgdGl0bGU/OiBzdHJpbmc7XHJcbiAgcGFyZW50Pzogc3RyaW5nO1xyXG4gIG9wZW5lZEZyb20/OiBzdHJpbmc7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgT3Blbk9wdGlvbnM8VFBhcmFtcz4gZXh0ZW5kcyBSZXBsYWNlT3B0aW9uczxUUGFyYW1zPiB7XHJcbiAgaW5zZXJ0QWZ0ZXJNdXRleD86IHN0cmluZztcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBQYWdlPFRQYXJhbXMgPSBhbnksIFRTdGF0ZSA9IGFueT4ge1xyXG4gIHJlYWRvbmx5IHR5cGU6IHsgcGFyYW1zOiBUUGFyYW1zLCBzdGF0ZTogVFN0YXRlIH07XHJcbiAgdGl0bGU/OiBzdHJpbmc7XHJcbiAgcGF0aDogc3RyaW5nO1xyXG4gIGhpZGRlbjogYm9vbGVhbjtcclxuICBwZXJzaXN0ZW50OiBib29sZWFuO1xyXG4gIGNvbXBvbmVudDogQ29tcG9uZW50Q2xhc3M8YW55PiB8IFN0YXRlbGVzc0NvbXBvbmVudDxhbnk+O1xyXG4gIG5vZGU6IFJlZHVjaWJsZU5vZGU8VFN0YXRlPjtcclxuICBvcGVuOiAoZGlzcGF0Y2g6IERpc3BhdGNoLCBuYXZpZ2F0b3I6IE5hdmlnYXRvciwgb3B0PzogT3Blbk9wdGlvbnM8VFBhcmFtcz4pID0+IHZvaWQ7XHJcbiAgcmVwbGFjZTogKFxyXG4gICAgZGlzcGF0Y2g6IERpc3BhdGNoLFxyXG4gICAgbmF2aWdhdG9yOiBOYXZpZ2F0b3IsXHJcbiAgICB0YXJnZXQ6IHN0cmluZyxcclxuICAgIG9wdD86IFJlcGxhY2VPcHRpb25zPFRQYXJhbXM+LFxyXG4gICkgPT4gdm9pZDtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBCdWlsZFBhZ2VPcHRpb25zIHtcclxuICB0aXRsZT86IHN0cmluZztcclxuICBoaWRkZW4/OiBib29sZWFuO1xyXG4gIHBlcnNpc3RlbnQ/OiBib29sZWFuO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gYnVpbGRQYWdlPFRQYXJhbXMsIFRTdGF0ZT4oXHJcbiAgY29tcG9uZW50OiBDb21wb25lbnRDbGFzczxhbnk+IHwgU3RhdGVsZXNzQ29tcG9uZW50PGFueT4sXHJcbiAgbm9kZTogUmVkdWNpYmxlTm9kZTxUU3RhdGU+LFxyXG4gIG9wdGlvbnM6IEJ1aWxkUGFnZU9wdGlvbnMgPSB7fSxcclxuKTogUGFnZTxUUGFyYW1zLCBUU3RhdGU+IHtcclxuICBjb25zdCBwYWdlID0gPFBhZ2U8VFBhcmFtcywgVFN0YXRlPj57XHJcbiAgICBoaWRkZW46IGZhbHNlLFxyXG4gICAgcGVyc2lzdGVudDogdHJ1ZSxcclxuICAgIC4uLm9wdGlvbnMsXHJcbiAgICBjb21wb25lbnQsXHJcbiAgICBub2RlLFxyXG4gICAgb3BlbixcclxuICAgIHJlcGxhY2UsXHJcbiAgfTtcclxuXHJcbiAgZnVuY3Rpb24gb3BlbihkaXNwYXRjaDogRGlzcGF0Y2gsIG5hdmlnYXRvcjogTmF2aWdhdG9yLCBvcHQ6IE9wZW5PcHRpb25zPFRQYXJhbXM+ID0ge30pIHtcclxuICAgIGRpc3BhdGNoKE5BVklHQVRJT05fT1BFTl9QQUdFLmNyZWF0ZS51bmljYXN0KG5hdmlnYXRvci5pZGVudGlmaWVyLCB7XHJcbiAgICAgIC4uLm9wdCxcclxuICAgICAgbXV0ZXg6IG9wdC5tdXRleCA/IGAke3BhZ2UucGF0aH0vJHtvcHQubXV0ZXh9YCA6IHBhZ2UucGF0aCxcclxuICAgICAgcGF0aDogcGFnZS5wYXRoLFxyXG4gICAgfSkpO1xyXG4gIH1cclxuXHJcbiAgZnVuY3Rpb24gcmVwbGFjZShcclxuICAgIGRpc3BhdGNoOiBEaXNwYXRjaCxcclxuICAgIG5hdmlnYXRvcjogTmF2aWdhdG9yLFxyXG4gICAgdGFyZ2V0OiBzdHJpbmcsXHJcbiAgICBvcHQ6IFJlcGxhY2VPcHRpb25zPFRQYXJhbXM+ID0ge30sXHJcbiAgKSB7XHJcbiAgICBkaXNwYXRjaChOQVZJR0FUSU9OX1JFUExBQ0VfUEFHRS5jcmVhdGUudW5pY2FzdChuYXZpZ2F0b3IuaWRlbnRpZmllciwge1xyXG4gICAgICAuLi5vcHQsXHJcbiAgICAgIHRvUmVtb3ZlTXV0ZXg6IHRhcmdldCxcclxuICAgICAgbXV0ZXg6IG9wdC5tdXRleCA/IGAke3BhZ2UucGF0aH0vJHtvcHQubXV0ZXh9YCA6IHBhZ2UucGF0aCxcclxuICAgICAgcGF0aDogcGFnZS5wYXRoLFxyXG4gICAgfSkpO1xyXG4gIH1cclxuXHJcbiAgcmV0dXJuIHBhZ2U7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgUGFnZU9jY3VycmVuY2U8VFBhcmFtcyA9IHt9PiB7XHJcbiAgcGF0aDogc3RyaW5nO1xyXG4gIG11dGV4OiBzdHJpbmc7XHJcbiAgcGFyYW1zPzogVFBhcmFtcztcclxuICB0aXRsZT86IHN0cmluZztcclxuICBwYXJlbnQ/OiBzdHJpbmc7XHJcbiAgb3BlbmVkRnJvbT86IHN0cmluZztcclxufVxyXG5cclxuZXhwb3J0IHR5cGUgUGF0aFRyZWVOb2RlID0gc3RyaW5nIHwgUGF0aFRyZWU7XHJcbmV4cG9ydCBpbnRlcmZhY2UgUGF0aFRyZWUgZXh0ZW5kcyBBcnJheTxQYXRoVHJlZU5vZGU+IHsgfVxyXG5cclxuZXhwb3J0IGNsYXNzIFBhZ2VzPFQgZXh0ZW5kcyBWYWxpZFRyZWVOb2RlID0gYW55PiB7XHJcbiAgcHJpdmF0ZSBwYWdlczogeyBbcGFnZTogc3RyaW5nXTogUGFnZTxhbnksIGFueT4gfTtcclxuICBwcml2YXRlIGZvbGRlcnM6IHsgW3BhZ2U6IHN0cmluZ106IFBhZ2VGb2xkZXIgfTtcclxuICBwcml2YXRlIGNhbGN1bGF0ZWRQYXRoVHJlZTogUGF0aFRyZWU7XHJcbiAgcHJpdmF0ZSBjYWxjdWxhdGVkRm9sZGVyQ29udGVudHM6IHsgW2ZvbGRlcjogc3RyaW5nXTogc3RyaW5nW10gfTtcclxuICBwcml2YXRlIGNhbGN1bGF0ZWRGaWx0ZXJlZFBhdGhUcmVlOiBQYXRoVHJlZTtcclxuICBwcml2YXRlIGNhbGN1bGF0ZWRGaWx0ZXJlZEZvbGRlckNvbnRlbnRzOiB7IFtmb2xkZXI6IHN0cmluZ106IHN0cmluZ1tdIH07XHJcblxyXG4gIHB1YmxpYyByZWFkb25seSBwcmVmaXg6IHN0cmluZztcclxuICBwdWJsaWMgcmVhZG9ubHkgdHJlZTogUGFnZVRyZWVOb2RlPFQ+O1xyXG5cclxuICBjb25zdHJ1Y3RvcihwcmVmaXg6IHN0cmluZywgcm9vdDogUGFnZVRyZWVOb2RlPFQ+KSB7XHJcbiAgICBjb25zdCBkZXNjcmlwdG9ycyA9IGJ1aWxkRGVzY3JpcHRvcnNGcm9tVHJlZShyb290KTtcclxuXHJcbiAgICB0aGlzLnByZWZpeCA9IHByZWZpeDtcclxuICAgIHRoaXMudHJlZSA9IHJvb3Q7XHJcblxyXG4gICAgdGhpcy5wYWdlcyA9IHt9O1xyXG4gICAgZm9yIChjb25zdCBwIG9mIGRlc2NyaXB0b3JzLnBhZ2VzKSB7XHJcbiAgICAgIHRoaXMucGFnZXNbcC5wYXRoXSA9IHA7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5mb2xkZXJzID0ge307XHJcbiAgICBmb3IgKGNvbnN0IGYgb2YgZGVzY3JpcHRvcnMuZm9sZGVycykge1xyXG4gICAgICB0aGlzLmZvbGRlcnNbZi5wYXRoXSA9IGY7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5jYWxjdWxhdGVkUGF0aFRyZWUgPSBkZXNjcmlwdG9ycy5wYXRoVHJlZTtcclxuICAgIHRoaXMuY2FsY3VsYXRlZEZvbGRlckNvbnRlbnRzID0gZGVzY3JpcHRvcnMuZm9sZGVyQ29udGVudHM7XHJcbiAgICB0aGlzLmNhbGN1bGF0ZWRGaWx0ZXJlZFBhdGhUcmVlID0gZGVzY3JpcHRvcnMuZmlsdGVyZWRQYXRoVHJlZTtcclxuICAgIHRoaXMuY2FsY3VsYXRlZEZpbHRlcmVkRm9sZGVyQ29udGVudHMgPSBkZXNjcmlwdG9ycy5maWx0ZXJlZEZvbGRlckNvbnRlbnRzO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGhhc1BhZ2UocGF0aDogc3RyaW5nKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gISF0aGlzLnBhZ2VzW3BhdGhdO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldFBhZ2UocGF0aDogc3RyaW5nKTogUGFnZSB7XHJcbiAgICByZXR1cm4gdGhpcy5wYWdlc1twYXRoXTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBoYXNGb2xkZXIocGF0aDogc3RyaW5nKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gISF0aGlzLmZvbGRlcnNbcGF0aF07XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0Rm9sZGVyKHBhdGg6IHN0cmluZyk6IFBhZ2VGb2xkZXIge1xyXG4gICAgcmV0dXJuIHRoaXMuZm9sZGVyc1twYXRoXTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBpc0hpZGRlbihwYXRoOiBzdHJpbmcpOiBib29sZWFuIHtcclxuICAgIGlmICh0aGlzLmhhc1BhZ2UocGF0aCkpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuZ2V0UGFnZShwYXRoKS5oaWRkZW47XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBwYXRoVHJlZSgpOiBQYXRoVHJlZSB7XHJcbiAgICByZXR1cm4gdGhpcy5jYWxjdWxhdGVkUGF0aFRyZWU7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IGZvbGRlckNvbnRlbnRzKCk6IHsgW2ZvbGRlcjogc3RyaW5nXTogc3RyaW5nW10gfSB7XHJcbiAgICByZXR1cm4gdGhpcy5jYWxjdWxhdGVkRm9sZGVyQ29udGVudHM7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IGZpbHRlcmVkUGF0aFRyZWUoKTogUGF0aFRyZWUge1xyXG4gICAgcmV0dXJuIHRoaXMuY2FsY3VsYXRlZEZpbHRlcmVkUGF0aFRyZWU7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IGZpbHRlcmVkRm9sZGVyQ29udGVudHMoKTogeyBbZm9sZGVyOiBzdHJpbmddOiBzdHJpbmdbXSB9IHtcclxuICAgIHJldHVybiB0aGlzLmNhbGN1bGF0ZWRGaWx0ZXJlZEZvbGRlckNvbnRlbnRzO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGJ1aWxkSW5zdGFuY2U8VFN0YXRlLCBUUmVkdWNlckJ1aWxkZXJEYXRhPihcclxuICAgIG9jY3VycmVuY2U6IFBhZ2VPY2N1cnJlbmNlPFRSZWR1Y2VyQnVpbGRlckRhdGE+LFxyXG4gICk6IFBhZ2VJbnN0YW5jZTxUU3RhdGUsIFRSZWR1Y2VyQnVpbGRlckRhdGE+IHtcclxuICAgIGlmICghdGhpcy5oYXNQYWdlKG9jY3VycmVuY2UucGF0aCkpIHtcclxuICAgICAgdGhyb3cgbmV3IEVycm9yKGBObyBkZXNjcmlwdG9yIGV4aXN0cyBmb3IgdGhlIHByb3ZpZGVkIHBhdGggKCR7b2NjdXJyZW5jZS5wYXRofSlgKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gbmV3IFBhZ2VJbnN0YW5jZSh0aGlzLnBhZ2VzW29jY3VycmVuY2UucGF0aF0sIG9jY3VycmVuY2UpO1xyXG4gIH1cclxufVxyXG4iXX0=