UNPKG

devextreme

Version:

HTML5 JavaScript Component Suite for Responsive Web Development

93 lines (92 loc) 3.93 kB
/** * DevExtreme (cjs/core/options/option_manager.js) * Version: 23.2.6 * Build date: Wed May 01 2024 * * Copyright (c) 2012 - 2024 Developer Express Inc. ALL RIGHTS RESERVED * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/ */ "use strict"; 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"); const cachedGetters = {}; const cachedSetters = {}; let OptionManager = function() { function OptionManager(options, optionsByReference) { this._options = options; this._optionsByReference = optionsByReference; this._changingCallback; this._changedCallback; this._namePreparedCallbacks } var _proto = OptionManager.prototype; _proto._setByReference = function(options, rulesOptions) { (0, _extend.extend)(true, options, rulesOptions); for (const fieldName in this._optionsByReference) { if (Object.prototype.hasOwnProperty.call(rulesOptions, fieldName)) { options[fieldName] = rulesOptions[fieldName] } } }; _proto._setPreparedValue = function(name, value, merge, silent) { const previousValue = this.get(this._options, name, false); if (!(0, _comparator.equals)(previousValue, value)) { const path = (0, _data.getPathParts)(name); !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) } }; _proto._prepareRelevantNames = function(options, name, value, silent) { if ((0, _type.isPlainObject)(value)) { for (const valueName in value) { this._prepareRelevantNames(options, "".concat(name, ".").concat(valueName), value[valueName]) } } this._namePreparedCallbacks(options, name, value, silent) }; _proto.get = function() { let options = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : this._options; let name = arguments.length > 1 ? arguments[1] : void 0; let unwrapObservables = arguments.length > 2 ? arguments[2] : void 0; cachedGetters[name] = cachedGetters[name] || (0, _data.compileGetter)(name); return cachedGetters[name](options, { functionsAsIs: true, unwrapObservables: unwrapObservables }) }; _proto.set = function(options, value, merge, silent) { options = (0, _utils.normalizeOptions)(options, value); for (const name in options) { this._prepareRelevantNames(options, name, options[name], silent) } for (const name in options) { this._setPreparedValue(name, options[name], merge, silent) } }; _proto.onRelevantNamesPrepared = function(callBack) { this._namePreparedCallbacks = callBack }; _proto.onChanging = function(callBack) { this._changingCallback = callBack }; _proto.onChanged = function(callBack) { this._changedCallback = callBack }; _proto.dispose = function() { this._changingCallback = _common.noop; this._changedCallback = _common.noop }; return OptionManager }(); exports.OptionManager = OptionManager;