UNPKG

devextreme

Version:

HTML5 JavaScript Component Suite for Responsive Web Development

232 lines (228 loc) • 8.82 kB
/** * DevExtreme (cjs/core/options/index.js) * Version: 21.2.4 * Build date: Mon Dec 06 2021 * * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/ */ "use strict"; exports.Options = void 0; var _type = require("../utils/type"); var _common = require("../utils/common"); var _option_manager = require("./option_manager"); var _data = require("../utils/data"); var _utils = require("./utils"); var _extend = require("../utils/extend"); function _extends() { _extends = Object.assign || function(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key] } } } return target }; return _extends.apply(this, arguments) } 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 Options = function() { function Options(options, defaultOptions, optionsByReference, deprecatedOptions) { var _this = this; this._deprecatedCallback; this._startChangeCallback; this._endChangeCallback; this._default = defaultOptions; this._deprecated = deprecatedOptions; this._deprecatedNames = []; this._initDeprecatedNames(); this._optionManager = new _option_manager.OptionManager(options, optionsByReference); this._optionManager.onRelevantNamesPrepared((function(options, name, value, silent) { return _this._setRelevantNames(options, name, value, silent) })); this._cachedOptions = {}; this._rules = [] } var _proto = Options.prototype; _proto._initDeprecatedNames = function() { for (var optionName in this._deprecated) { this._deprecatedNames.push(optionName) } }; _proto._getByRules = function(rules) { rules = Array.isArray(rules) ? this._rules.concat(rules) : this._rules; return (0, _utils.convertRulesToOptions)(rules) }; _proto._notifyDeprecated = function(option) { var info = this._deprecated[option]; if (info) { this._deprecatedCallback(option, info) } }; _proto._setRelevantNames = function(options, name, value, silent) { if (name) { var normalizedName = this._normalizeName(name, silent); if (normalizedName && normalizedName !== name) { this._setField(options, normalizedName, value); this._clearField(options, name) } } }; _proto._setField = function(options, fullName, value) { var fieldName = ""; var fieldObject = null; do { fieldName = fieldName ? ".".concat(fieldName) : ""; fieldName = (0, _utils.getFieldName)(fullName) + fieldName; fullName = (0, _utils.getParentName)(fullName); fieldObject = fullName ? this._optionManager.get(options, fullName, false) : options } while (!fieldObject); fieldObject[fieldName] = value }; _proto._clearField = function(options, name) { delete options[name]; var previousFieldName = (0, _utils.getParentName)(name); var fieldObject = previousFieldName ? this._optionManager.get(options, previousFieldName, false) : options; if (fieldObject) { delete fieldObject[(0, _utils.getFieldName)(name)] } }; _proto._normalizeName = function(name, silent) { if (this._deprecatedNames.length && name) { for (var i = 0; i < this._deprecatedNames.length; i++) { if (this._deprecatedNames[i] === name) { var deprecate = this._deprecated[name]; if (deprecate) { !silent && this._notifyDeprecated(name); return deprecate.alias || name } } } } return name }; _proto.addRules = function(rules) { this._rules = rules.concat(this._rules) }; _proto.applyRules = function(rules) { var options = this._getByRules(rules); this.silent(options) }; _proto.dispose = function() { this._deprecatedCallback = _common.noop; this._startChangeCallback = _common.noop; this._endChangeCallback = _common.noop; this._optionManager.dispose() }; _proto.onChanging = function(callBack) { this._optionManager.onChanging(callBack) }; _proto.onChanged = function(callBack) { this._optionManager.onChanged(callBack) }; _proto.onDeprecated = function(callBack) { this._deprecatedCallback = callBack }; _proto.onStartChange = function(callBack) { this._startChangeCallback = callBack }; _proto.onEndChange = function(callBack) { this._endChangeCallback = callBack }; _proto.isInitial = function(name) { var value = this.silent(name); var initialValue = this.initial(name); var areFunctions = (0, _type.isFunction)(value) && (0, _type.isFunction)(initialValue); return areFunctions ? value.toString() === initialValue.toString() : (0, _common.equalByValue)(value, initialValue) }; _proto.initial = function(name) { return (0, _utils.getNestedOptionValue)(this._initial, name) }; _proto.option = function(options, value) { var isGetter = arguments.length < 2 && "object" !== (0, _type.type)(options); if (isGetter) { return this._optionManager.get(void 0, this._normalizeName(options)) } else { this._startChangeCallback(); try { this._optionManager.set(options, value) } finally { this._endChangeCallback() } } }; _proto.silent = function(options, value) { var isGetter = arguments.length < 2 && "object" !== (0, _type.type)(options); if (isGetter) { return this._optionManager.get(void 0, options, void 0, true) } else { this._optionManager.set(options, value, void 0, true) } }; _proto.reset = function(name) { var _this2 = this; if (name) { var fullPath = (0, _data.getPathParts)(name); var value = fullPath.reduce((function(value, field) { return value ? value[field] : _this2.initial(field) }), null); var defaultValue = (0, _type.isObject)(value) ? _extends({}, value) : value; this._optionManager.set(name, defaultValue, false) } }; _proto.getAliasesByName = function(name) { var _this3 = this; return Object.keys(this._deprecated).filter((function(aliasName) { return name === _this3._deprecated[aliasName].alias })) }; _proto.isDeprecated = function(name) { return Object.prototype.hasOwnProperty.call(this._deprecated, name) }; _proto.cache = function(name, options) { var isGetter = arguments.length < 2; if (isGetter) { return this._cachedOptions[name] } else { this._cachedOptions[name] = (0, _extend.extend)(this._cachedOptions[name], options) } }; _createClass(Options, [{ key: "_initial", get: function() { if (!this._initialOptions) { var rulesOptions = this._getByRules(this.silent("defaultOptionsRules")); this._initialOptions = this._default; this._optionManager._setByReference(this._initialOptions, rulesOptions) } return this._initialOptions }, set: function(value) { this._initialOptions = value } }]); return Options }(); exports.Options = Options;