devextreme
Version:
HTML5 JavaScript Component Suite for Responsive Web Development
142 lines (138 loc) • 5.31 kB
JavaScript
/**
* DevExtreme (core/options/option_manager.js)
* Version: 20.1.7
* Build date: Tue Aug 25 2020
*
* Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED
* Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/
*/
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.OptionManager = void 0;
var _data = require("../utils/data");
var _common = require("../utils/common");
var _comparator = require("../utils/comparator");
var _extend = require("../utils/extend");
var _type = require("../utils/type");
var _utils = require("./utils");
function _classCallCheck(instance, Constructor) {
if (!(instance instanceof Constructor)) {
throw new TypeError("Cannot call a class as a function")
}
}
function _defineProperties(target, props) {
for (var i = 0; i < props.length; i++) {
var descriptor = props[i];
descriptor.enumerable = descriptor.enumerable || false;
descriptor.configurable = true;
if ("value" in descriptor) {
descriptor.writable = true
}
Object.defineProperty(target, descriptor.key, descriptor)
}
}
function _createClass(Constructor, protoProps, staticProps) {
if (protoProps) {
_defineProperties(Constructor.prototype, protoProps)
}
if (staticProps) {
_defineProperties(Constructor, staticProps)
}
return Constructor
}
var cachedGetters = {};
var cachedSetters = {};
var OptionManager = exports.OptionManager = function() {
function OptionManager(options, optionsByReference) {
_classCallCheck(this, OptionManager);
this._options = options;
this._optionsByReference = optionsByReference;
this._changingCallback;
this._changedCallback;
this._namePreparedCallbacks
}
_createClass(OptionManager, [{
key: "_setByReference",
value: function(options, rulesOptions) {
(0, _extend.extend)(true, options, rulesOptions);
for (var fieldName in this._optionsByReference) {
if (Object.prototype.hasOwnProperty.call(rulesOptions, fieldName)) {
options[fieldName] = rulesOptions[fieldName]
}
}
}
}, {
key: "_setPreparedValue",
value: function(name, value, merge, silent) {
var previousValue = this.get(this._options, name, false);
if (!(0, _comparator.equals)(previousValue, value)) {
var path = name.split(/[.[]/);
!silent && this._changingCallback(name, previousValue, value);
cachedSetters[name] = cachedSetters[name] || (0, _data.compileSetter)(name);
cachedSetters[name](this._options, value, {
functionsAsIs: true,
merge: (0, _type.isDefined)(merge) ? merge : !this._optionsByReference[name],
unwrapObservables: path.length > 1 && !!this._optionsByReference[path[0]]
});
!silent && this._changedCallback(name, value, previousValue)
}
}
}, {
key: "_prepareRelevantNames",
value: function(options, name, value, silent) {
if ((0, _type.isPlainObject)(value)) {
for (var valueName in value) {
this._prepareRelevantNames(options, "".concat(name, ".").concat(valueName), value[valueName])
}
}
this._namePreparedCallbacks(options, name, value, silent)
}
}, {
key: "get",
value: function() {
var options = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : this._options;
var name = arguments.length > 1 ? arguments[1] : void 0;
var unwrapObservables = arguments.length > 2 ? arguments[2] : void 0;
cachedGetters[name] = cachedGetters[name] || (0, _data.compileGetter)(name);
return cachedGetters[name](options, {
functionsAsIs: true,
unwrapObservables: unwrapObservables
})
}
}, {
key: "set",
value: function(options, value, merge, silent) {
options = (0, _utils.normalizeOptions)(options, value);
for (var name in options) {
this._prepareRelevantNames(options, name, options[name], silent)
}
for (var _name in options) {
this._setPreparedValue(_name, options[_name], merge, silent)
}
}
}, {
key: "onRelevantNamesPrepared",
value: function(callBack) {
this._namePreparedCallbacks = callBack
}
}, {
key: "onChanging",
value: function(callBack) {
this._changingCallback = callBack
}
}, {
key: "onChanged",
value: function(callBack) {
this._changedCallback = callBack
}
}, {
key: "dispose",
value: function() {
this._changingCallback = _common.noop;
this._changedCallback = _common.noop
}
}]);
return OptionManager
}();