theme-lib
Version:
This is a simple example Angular Library published to npm.
161 lines • 14 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
/*
* @license
* Copyright Akveo. All Rights Reserved.
* Licensed under the MIT License. See License.txt in the project root for license information.
*/
import { Inject, Injectable } from '@angular/core';
import { DEFAULT_THEME } from './js-themes/default.theme';
import { COSMIC_THEME } from './js-themes/cosmic.theme';
import { CORPORATE_THEME } from './js-themes/corporate.theme';
import { NB_BUILT_IN_JS_THEMES, NB_JS_THEMES } from '../theme.options';
/** @type {?} */
export const BUILT_IN_THEMES = [
DEFAULT_THEME,
COSMIC_THEME,
CORPORATE_THEME,
];
/*
* Js Themes registry - provides access to the JS themes' variables.
* Usually shouldn't be used directly, but through the NbThemeService class methods (getJsTheme).
*/
export class NbJSThemesRegistry {
/**
* @param {?} builtInThemes
* @param {?=} newThemes
*/
constructor(builtInThemes, newThemes = []) {
this.themes = {};
/** @type {?} */
const themes = this.combineByNames(newThemes, builtInThemes);
themes.forEach((theme) => {
this.register(theme, theme.name, theme.base);
});
}
/*
* Registers a new JS theme
* @param config any
* @param themeName string
* @param baseTheme string
*/
/**
* @param {?} config
* @param {?} themeName
* @param {?} baseTheme
* @return {?}
*/
register(config, themeName, baseTheme) {
/** @type {?} */
const base = this.has(baseTheme) ? this.get(baseTheme) : {};
this.themes[themeName] = this.mergeDeep({}, base, config);
}
/*
* Checks whether the theme is registered
* @param themeName
* @returns boolean
*/
/**
* @param {?} themeName
* @return {?}
*/
has(themeName) {
return !!this.themes[themeName];
}
/*
* Return a theme
* @param themeName
* @returns NbJSThemeOptions
*/
/**
* @param {?} themeName
* @return {?}
*/
get(themeName) {
if (!this.themes[themeName]) {
throw Error(`NbThemeConfig: no theme '${themeName}' found registered.`);
}
return JSON.parse(JSON.stringify(this.themes[themeName]));
}
/**
* @private
* @param {?} newThemes
* @param {?} oldThemes
* @return {?}
*/
combineByNames(newThemes, oldThemes) {
if (newThemes) {
/** @type {?} */
const mergedThemes = [];
newThemes.forEach((theme) => {
/** @type {?} */
const sameOld = oldThemes.find((tm) => tm.name === theme.name)
|| (/** @type {?} */ ({}));
/** @type {?} */
const mergedTheme = this.mergeDeep({}, sameOld, theme);
mergedThemes.push(mergedTheme);
});
oldThemes.forEach((theme) => {
if (!mergedThemes.find((tm) => tm.name === theme.name)) {
mergedThemes.push(theme);
}
});
return mergedThemes;
}
return oldThemes;
}
/**
* @private
* @param {?} item
* @return {?}
*/
isObject(item) {
return item && typeof item === 'object' && !Array.isArray(item);
}
// TODO: move to helpers
/**
* @private
* @param {?} target
* @param {...?} sources
* @return {?}
*/
mergeDeep(target, ...sources) {
if (!sources.length) {
return target;
}
/** @type {?} */
const source = sources.shift();
if (this.isObject(target) && this.isObject(source)) {
for (const key in source) {
if (this.isObject(source[key])) {
if (!target[key]) {
Object.assign(target, { [key]: {} });
}
this.mergeDeep(target[key], source[key]);
}
else {
Object.assign(target, { [key]: source[key] });
}
}
}
return this.mergeDeep(target, ...sources);
}
}
NbJSThemesRegistry.decorators = [
{ type: Injectable }
];
/** @nocollapse */
NbJSThemesRegistry.ctorParameters = () => [
{ type: Array, decorators: [{ type: Inject, args: [NB_BUILT_IN_JS_THEMES,] }] },
{ type: Array, decorators: [{ type: Inject, args: [NB_JS_THEMES,] }] }
];
if (false) {
/**
* @type {?}
* @private
*/
NbJSThemesRegistry.prototype.themes;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianMtdGhlbWVzLXJlZ2lzdHJ5LnNlcnZpY2UuanMiLCJzb3VyY2VSb290Ijoibmc6Ly90aGVtZS1saWIvIiwic291cmNlcyI6WyJsaWIvc2VydmljZXMvanMtdGhlbWVzLXJlZ2lzdHJ5LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBTUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFJbkQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzFELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDOUQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLFlBQVksRUFBRSxNQUFNLGtCQUFrQixDQUFDOztBQUV2RSxNQUFNLE9BQU8sZUFBZSxHQUF1QjtJQUNqRCxhQUFhO0lBQ2IsWUFBWTtJQUNaLGVBQWU7Q0FDaEI7Ozs7O0FBT0QsTUFBTSxPQUFPLGtCQUFrQjs7Ozs7SUFJN0IsWUFBMkMsYUFBaUMsRUFDMUMsWUFBZ0MsRUFBRTtRQUg1RCxXQUFNLEdBQVEsRUFBRSxDQUFDOztjQUtqQixNQUFNLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxTQUFTLEVBQUUsYUFBYSxDQUFDO1FBRTVELE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxLQUFVLEVBQUUsRUFBRTtZQUM1QixJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMvQyxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7Ozs7Ozs7Ozs7Ozs7SUFRRCxRQUFRLENBQUMsTUFBVyxFQUFFLFNBQWlCLEVBQUUsU0FBaUI7O2NBQ2xELElBQUksR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENB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QyxDQUFDLENBQUM7aUJBQzFDO3FCQUFNO29CQUNMLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO2lCQUMvQzthQUNGO1NBQ0Y7UUFDRCxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUFFLEdBQUcsT0FBTyxDQUFDLENBQUM7SUFDNUMsQ0FBQzs7O1lBN0ZGLFVBQVU7Ozs7d0NBS0ksTUFBTSxTQUFDLHFCQUFxQjt3Q0FDNUIsTUFBTSxTQUFDLFlBQVk7Ozs7Ozs7SUFIaEMsb0NBQXlCIiwic291cmNlc0NvbnRlbnQiOlsiLypcclxuICogQGxpY2Vuc2VcclxuICogQ29weXJpZ2h0IEFrdmVvLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxyXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuIFNlZSBMaWNlbnNlLnR4dCBpbiB0aGUgcHJvamVjdCByb290IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLlxyXG4gKi9cclxuXHJcbmltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuXHJcbmltcG9ydCB7IE5iSlNUaGVtZU9wdGlvbnMgfSBmcm9tICcuL2pzLXRoZW1lcy90aGVtZS5vcHRpb25zJztcclxuaW1wb3J0IHsgREVGQVVMVF9USEVNRSB9IGZyb20gJy4vanMtdGhlbWVzL2RlZmF1bHQudGhlbWUnO1xyXG5pbXBvcnQgeyBDT1NNSUNfVEhFTUUgfSBmcm9tICcuL2pzLXRoZW1lcy9jb3NtaWMudGhlbWUnO1xyXG5pbXBvcnQgeyBDT1JQT1JBVEVfVEhFTUUgfSBmcm9tICcuL2pzLXRoZW1lcy9jb3Jwb3JhdGUudGhlbWUnO1xyXG5pbXBvcnQgeyBOQl9CVUlMVF9JTl9KU19USEVNRVMsIE5CX0pTX1RIRU1FUyB9IGZyb20gJy4uL3RoZW1lLm9wdGlvbnMnO1xyXG5cclxuZXhwb3J0IGNvbnN0IEJVSUxUX0lOX1RIRU1FUzogTmJKU1RoZW1lT3B0aW9uc1tdID0gW1xyXG4gIERFRkFVTFRfVEhFTUUsXHJcbiAgQ09TTUlDX1RIRU1FLFxyXG4gIENPUlBPUkFURV9USEVNRSxcclxuXTtcclxuXHJcbi8qXHJcbiAqIEpzIFRoZW1lcyByZWdpc3RyeSAtIHByb3ZpZGVzIGFjY2VzcyB0byB0aGUgSlMgdGhlbWVzJyB2YXJpYWJsZXMuXHJcbiAqIFVzdWFsbHkgc2hvdWxkbid0IGJlIHVzZWQgZGlyZWN0bHksIGJ1dCB0aHJvdWdoIHRoZSBOYlRoZW1lU2VydmljZSBjbGFzcyBtZXRob2RzIChnZXRKc1RoZW1lKS5cclxuICovXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIE5iSlNUaGVtZXNSZWdpc3RyeSB7XHJcblxyXG4gIHByaXZhdGUgdGhlbWVzOiBhbnkgPSB7fTtcclxuXHJcbiAgY29uc3RydWN0b3IoQEluamVjdChOQl9CVUlMVF9JTl9KU19USEVNRVMpIGJ1aWx0SW5UaGVtZXM6IE5iSlNUaGVtZU9wdGlvbnNbXSxcclxuICAgICAgICAgICAgICBASW5qZWN0KE5CX0pTX1RIRU1FUykgbmV3VGhlbWVzOiBOYkpTVGhlbWVPcHRpb25zW10gPSBbXSkge1xyXG5cclxuICAgIGNvbnN0IHRoZW1lcyA9IHRoaXMuY29tYmluZUJ5TmFtZXMobmV3VGhlbWVzLCBidWlsdEluVGhlbWVzKTtcclxuXHJcbiAgICB0aGVtZXMuZm9yRWFjaCgodGhlbWU6IGFueSkgPT4ge1xyXG4gICAgICB0aGlzLnJlZ2lzdGVyKHRoZW1lLCB0aGVtZS5uYW1lLCB0aGVtZS5iYXNlKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLypcclxuICAgKiBSZWdpc3RlcnMgYSBuZXcgSlMgdGhlbWVcclxuICAgKiBAcGFyYW0gY29uZmlnIGFueVxyXG4gICAqIEBwYXJhbSB0aGVtZU5hbWUgc3RyaW5nXHJcbiAgICogQHBhcmFtIGJhc2VUaGVtZSBzdHJpbmdcclxuICAgKi9cclxuICByZWdpc3Rlcihjb25maWc6IGFueSwgdGhlbWVOYW1lOiBzdHJpbmcsIGJhc2VUaGVtZTogc3RyaW5nKSB7XHJcbiAgICBjb25zdCBiYXNlID0gdGhpcy5oYXMoYmFzZVRoZW1lKSA/IHRoaXMuZ2V0KGJhc2VUaGVtZSkgOiB7fTtcclxuICAgIHRoaXMudGhlbWVzW3RoZW1lTmFtZV0gPSB0aGlzLm1lcmdlRGVlcCh7fSwgYmFzZSwgY29uZmlnKTtcclxuICB9XHJcblxyXG4gIC8qXHJcbiAgICogQ2hlY2tzIHdoZXRoZXIgdGhlIHRoZW1lIGlzIHJlZ2lzdGVyZWRcclxuICAgKiBAcGFyYW0gdGhlbWVOYW1lXHJcbiAgICogQHJldHVybnMgYm9vbGVhblxyXG4gICAqL1xyXG4gIGhhcyh0aGVtZU5hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuICEhdGhpcy50aGVtZXNbdGhlbWVOYW1lXTtcclxuICB9XHJcblxyXG4gIC8qXHJcbiAgICogUmV0dXJuIGEgdGhlbWVcclxuICAgKiBAcGFyYW0gdGhlbWVOYW1lXHJcbiAgICogQHJldHVybnMgTmJKU1RoZW1lT3B0aW9uc1xyXG4gICAqL1xyXG4gIGdldCh0aGVtZU5hbWU6IHN0cmluZyk6IE5iSlNUaGVtZU9wdGlvbnMge1xyXG4gICAgaWYgKCF0aGlzLnRoZW1lc1t0aGVtZU5hbWVdKSB7XHJcbiAgICAgIHRocm93IEVycm9yKGBOYlRoZW1lQ29uZmlnOiBubyB0aGVtZSAnJHt0aGVtZU5hbWV9JyBmb3VuZCByZWdpc3RlcmVkLmApO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkodGhpcy50aGVtZXNbdGhlbWVOYW1lXSkpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjb21iaW5lQnlOYW1lcyhuZXdUaGVtZXM6IE5iSlNUaGVtZU9wdGlvbnNbXSwgb2xkVGhlbWVzOiBOYkpTVGhlbWVPcHRpb25zW10pOiBOYkpTVGhlbWVPcHRpb25zW10ge1xyXG4gICAgaWYgKG5ld1RoZW1lcykge1xyXG4gICAgICBjb25zdCBtZXJnZWRUaGVtZXM6IE5iSlNUaGVtZU9wdGlvbnNbXSA9IFtdO1xyXG4gICAgICBuZXdUaGVtZXMuZm9yRWFjaCgodGhlbWU6IE5iSlNUaGVtZU9wdGlvbnMpID0+IHtcclxuICAgICAgICBjb25zdCBzYW1lT2xkOiBOYkpTVGhlbWVPcHRpb25zID0gb2xkVGhlbWVzLmZpbmQoKHRtOiBOYkpTVGhlbWVPcHRpb25zKSA9PiB0bS5uYW1lID09PSB0aGVtZS5uYW1lKVxyXG4gICAgICAgICAgfHwgPE5iSlNUaGVtZU9wdGlvbnM+e307XHJcblxyXG4gICAgICAgIGNvbnN0IG1lcmdlZFRoZW1lID0gdGhpcy5tZXJnZURlZXAoe30sIHNhbWVPbGQsIHRoZW1lKTtcclxuICAgICAgICBtZXJnZWRUaGVtZXMucHVzaChtZXJnZWRUaGVtZSk7XHJcbiAgICAgIH0pO1xyXG5cclxuICAgICAgb2xkVGhlbWVzLmZvckVhY2goKHRoZW1lOiBOYkpTVGhlbWVPcHRpb25zKSA9PiB7XHJcbiAgICAgICAgaWYgKCFtZXJnZWRUaGVtZXMuZmluZCgodG06IE5iSlNUaGVtZU9wdGlvbnMpID0+IHRtLm5hbWUgPT09IHRoZW1lLm5hbWUpKSB7XHJcbiAgICAgICAgICBtZXJnZWRUaGVtZXMucHVzaCh0aGVtZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgICAgcmV0dXJuIG1lcmdlZFRoZW1lcztcclxuICAgIH1cclxuICAgIHJldHVybiBvbGRUaGVtZXM7XHJcbiAgfVxyXG5cclxuXHJcbiAgcHJpdmF0ZSBpc09iamVjdChpdGVtKSB7XHJcbiAgICByZXR1cm4gaXRlbSAmJiB0eXBlb2YgaXRlbSA9PT0gJ29iamVjdCcgJiYgIUFycmF5LmlzQXJyYXkoaXRlbSk7XHJcbiAgfVxyXG5cclxuICAvLyBUT0RPOiBtb3ZlIHRvIGhlbHBlcnNcclxuICBwcml2YXRlIG1lcmdlRGVlcCh0YXJnZXQsIC4uLnNvdXJjZXMpIHtcclxuICAgIGlmICghc291cmNlcy5sZW5ndGgpIHtcclxuICAgICAgcmV0dXJuIHRhcmdldDtcclxuICAgIH1cclxuICAgIGNvbnN0IHNvdXJjZSA9IHNvdXJjZXMuc2hpZnQoKTtcclxuXHJcbiAgICBpZiAodGhpcy5pc09iamVjdCh0YXJnZXQpICYmIHRoaXMuaXNPYmplY3Qoc291cmNlKSkge1xyXG4gICAgICBmb3IgKGNvbnN0IGtleSBpbiBzb3VyY2UpIHtcclxuICAgICAgICBpZiAodGhpcy5pc09iamVjdChzb3VyY2Vba2V5XSkpIHtcclxuICAgICAgICAgIGlmICghdGFyZ2V0W2tleV0pIHtcclxuICAgICAgICAgICAgT2JqZWN0LmFzc2lnbih0YXJnZXQsIHsgW2tleV06IHt9IH0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdGhpcy5tZXJnZURlZXAodGFyZ2V0W2tleV0sIHNvdXJjZVtrZXldKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgT2JqZWN0LmFzc2lnbih0YXJnZXQsIHsgW2tleV06IHNvdXJjZVtrZXldIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRoaXMubWVyZ2VEZWVwKHRhcmdldCwgLi4uc291cmNlcyk7XHJcbiAgfVxyXG59XHJcbiJdfQ==