ng2-json-editor
Version:
Angular2 component for editing large json documents
74 lines • 3.2 kB
JavaScript
/*
* This file is part of ng2-json-editor.
* Copyright (C) 2016 CERN.
*
* ng2-json-editor is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
* published by the Free Software Foundation; either version 2 of the
* License, or (at your option) any later version.
*
* ng2-json-editor is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with ng2-json-editor; if not, write to the Free Software Foundation, Inc.,
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
* In applying this license, CERN does not
* waive the privileges and immunities granted to it by virtue of its status
* as an Intergovernmental Organization or submit itself to any jurisdiction.
*/
import { Injectable } from '@angular/core';
import { ReplaySubject } from 'rxjs/ReplaySubject';
import { PathUtilService } from './path-util.service';
var TabsUtilService = (function () {
function TabsUtilService(pathUtilService) {
this.pathUtilService = pathUtilService;
this.activeTabName$ = new ReplaySubject(1);
}
TabsUtilService.prototype.getTabNames = function (tabsConfig) {
var tabNames = tabsConfig.tabs.map(function (tab) { return tab.name; });
// insert default tab name at the beginning
return [tabsConfig.defaultTabName]
.concat(tabNames);
};
TabsUtilService.prototype.getSchemaKeyToTabName = function (tabsConfig, schema) {
if (!this.schemaKeyToTabName) {
// set tab.name for configured keys
var keyToTabName_1 = tabsConfig.tabs
.map(function (tab) {
var keysWithTabName = {};
tab.properties.forEach(function (key) {
keysWithTabName[key] = tab.name;
});
return keysWithTabName;
}).reduce(function (pre, cur) { return Object.assign(pre, cur); });
// set defaultTabName for all other keys in the schema
Object.keys(schema.properties)
.filter(function (key) { return !keyToTabName_1[key]; })
.forEach(function (key) {
keyToTabName_1[key] = tabsConfig.defaultTabName;
});
this.schemaKeyToTabName = keyToTabName_1;
}
return this.schemaKeyToTabName;
};
// TODO: maybe this could be a decorator
TabsUtilService.prototype.selectTabIfNeeded = function (path) {
if (this.schemaKeyToTabName && path !== '') {
var tabName = this.schemaKeyToTabName[this.pathUtilService.toPathArray(path)[0]];
this.activeTabName$.next(tabName);
}
};
return TabsUtilService;
}());
export { TabsUtilService };
TabsUtilService.decorators = [
{ type: Injectable },
];
/** @nocollapse */
TabsUtilService.ctorParameters = function () { return [
{ type: PathUtilService, },
]; };
//# sourceMappingURL=tabs-util.service.js.map