UNPKG

devextreme

Version:

HTML5 JavaScript Component Suite for Responsive Web Development

59 lines (56 loc) 1.97 kB
/** * DevExtreme (cjs/__internal/core/utils/m_dependency_injector.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/ */ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.injector = injector; var _class = _interopRequireDefault(require("../../../core/class")); var _extend = require("../../../core/utils/extend"); var _iterator = require("../../../core/utils/iterator"); var _type = require("../../../core/utils/type"); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } function injector(object) { const BaseClass = _class.default.inherit(object); let InjectedClass = BaseClass; let instance = new InjectedClass(object); const initialFields = {}; const injectFields = function(injectionObject, initial) { (0, _iterator.each)(injectionObject, (function(key) { if ((0, _type.isFunction)(instance[key])) { if (initial || !object[key]) { object[key] = function() { return instance[key].apply(object, arguments) } } } else { if (initial) { initialFields[key] = object[key] } object[key] = instance[key] } })) }; injectFields(object, true); object.inject = function(injectionObject) { InjectedClass = InjectedClass.inherit(injectionObject); instance = new InjectedClass; injectFields(injectionObject) }; object.resetInjection = function() { (0, _extend.extend)(object, initialFields); InjectedClass = BaseClass; instance = new BaseClass }; return object }