devextreme
Version:
HTML5 JavaScript Component Suite for Responsive Web Development
103 lines (100 loc) • 3.62 kB
JavaScript
/**
* DevExtreme (cjs/viz/core/base_theme_manager.js)
* Version: 24.2.6
* Build date: Mon Mar 17 2025
*
* Copyright (c) 2012 - 2025 Developer Express Inc. ALL RIGHTS RESERVED
* Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/
*/
;
exports.BaseThemeManager = void 0;
var _class = _interopRequireDefault(require("../../core/class"));
var _extend2 = require("../../core/utils/extend");
var _type = require("../../core/utils/type");
var _iterator = require("../../core/utils/iterator");
var _palette = require("../palette");
var _utils = require("./utils");
var _themes = require("../themes");
function _interopRequireDefault(e) {
return e && e.__esModule ? e : {
default: e
}
}
const _getTheme = _themes.getTheme;
const _addCacheItem = _themes.addCacheItem;
const _removeCacheItem = _themes.removeCacheItem;
const _extend = _extend2.extend;
const _each = _iterator.each;
function getThemePart(theme, path) {
let _theme = theme;
path && _each(path.split("."), (function(_, pathItem) {
return _theme = _theme[pathItem]
}));
return _theme
}
const BaseThemeManager = exports.BaseThemeManager = _class.default.inherit({
ctor: function(options) {
this._themeSection = options.themeSection;
this._fontFields = options.fontFields || [];
_addCacheItem(this)
},
dispose: function() {
_removeCacheItem(this);
this._callback = this._theme = this._font = null;
return this
},
setCallback: function(callback) {
this._callback = callback;
return this
},
setTheme: function(theme, rtl) {
this._current = theme;
this._rtl = rtl;
return this.refresh()
},
refresh: function() {
const that = this;
const current = that._current || {};
let theme = _getTheme(current.name || current);
that._themeName = theme.name;
that._defaultPalette = theme.defaultPalette;
that._font = _extend({}, theme.font, current.font);
that._themeSection && _each(that._themeSection.split("."), (function(_, path) {
theme = _extend(true, {}, theme[path])
}));
that._theme = _extend(true, {}, theme, (0, _type.isString)(current) ? {} : current);
that._initializeTheme();
if ((0, _utils.parseScalar)(that._rtl, that._theme.rtlEnabled)) {
_extend(true, that._theme, that._theme._rtl)
}
that._callback();
return that
},
theme: function(path) {
return getThemePart(this._theme, path)
},
themeName: function() {
return this._themeName
},
createPalette: function(palette, options) {
return (0, _palette.createPalette)(palette, options, this._defaultPalette)
},
createDiscretePalette: function(palette, count) {
return (0, _palette.getDiscretePalette)(palette, count, this._defaultPalette)
},
createGradientPalette: function(palette) {
return (0, _palette.getGradientPalette)(palette, this._defaultPalette)
},
getAccentColor: function(palette) {
return (0, _palette.getAccentColor)(palette, this._defaultPalette)
},
_initializeTheme: function() {
const that = this;
_each(that._fontFields || [], (function(_, path) {
that._initializeFont(getThemePart(that._theme, path))
}))
},
_initializeFont: function(font) {
_extend(font, this._font, _extend({}, font))
}
});