devextreme
Version:
HTML5 JavaScript Component Suite for Responsive Web Development
157 lines (155 loc) • 5.05 kB
JavaScript
/**
* DevExtreme (cjs/__internal/ui/form/m_form.items_runtime_info.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.default = void 0;
var _guid = _interopRequireDefault(require("../../../core/guid"));
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
}
}
class FormItemsRunTimeInfo {
constructor() {
this._map = {}
}
_findWidgetInstance(condition) {
let result;
(0, _iterator.each)(this._map, ((guid, _ref) => {
let {
widgetInstance: widgetInstance,
item: item
} = _ref;
if (condition(item)) {
result = widgetInstance;
return false
}
}));
return result
}
_findFieldByCondition(callback, valueExpr) {
let result;
(0, _iterator.each)(this._map, ((key, value) => {
if (callback(value)) {
result = "guid" === valueExpr ? key : value[valueExpr];
return false
}
}));
return result
}
clear() {
this._map = {}
}
removeItemsByItems(itemsRunTimeInfo) {
(0, _iterator.each)(itemsRunTimeInfo.getItems(), (guid => this.removeItemByKey(guid)))
}
removeItemByKey(key) {
delete this._map[key]
}
add(options) {
const key = options.guid || new _guid.default;
this._map[key] = options;
return key
}
addItemsOrExtendFrom(itemsRunTimeInfo) {
itemsRunTimeInfo.each(((key, itemRunTimeInfo) => {
if (this._map[key]) {
if (itemRunTimeInfo.widgetInstance) {
this._map[key].widgetInstance = itemRunTimeInfo.widgetInstance
}
this._map[key].$itemContainer = itemRunTimeInfo.$itemContainer
} else {
this.add({
item: itemRunTimeInfo.item,
widgetInstance: itemRunTimeInfo.widgetInstance,
guid: key,
$itemContainer: itemRunTimeInfo.$itemContainer
})
}
}))
}
extendRunTimeItemInfoByKey(key, options) {
if (this._map[key]) {
this._map[key] = (0, _extend.extend)(this._map[key], options)
}
}
findWidgetInstanceByItem(item) {
return this._findWidgetInstance((storedItem => storedItem === item))
}
findGroupOrTabLayoutManagerByPath(targetPath) {
return this._findFieldByCondition((_ref2 => {
let {
path: path
} = _ref2;
return path === targetPath
}), "layoutManager")
}
findKeyByPath(targetPath) {
return this._findFieldByCondition((_ref3 => {
let {
path: path
} = _ref3;
return path === targetPath
}), "guid")
}
findWidgetInstanceByName(name) {
return this._findWidgetInstance((item => name === item.name))
}
findWidgetInstanceByDataField(dataField) {
return this._findWidgetInstance((item => dataField === ((0, _type.isString)(item) ? item : item.dataField)))
}
findItemContainerByItem(item) {
for (const key in this._map) {
if (this._map[key].item === item) {
return this._map[key].$itemContainer
}
}
return null
}
findItemIndexByItem(targetItem) {
return this._findFieldByCondition((_ref4 => {
let {
item: item
} = _ref4;
return item === targetItem
}), "itemIndex")
}
findPreparedItemByItem(item) {
return this._findFieldByCondition((_ref5 => {
let {
item: currentItem
} = _ref5;
return currentItem === item
}), "preparedItem")
}
getItems() {
return this._map
}
each(handler) {
(0, _iterator.each)(this._map, ((key, itemRunTimeInfo) => {
handler(key, itemRunTimeInfo)
}))
}
removeItemsByPathStartWith(path) {
const keys = Object.keys(this._map);
const filteredKeys = keys.filter((key => {
if (this._map[key].path) {
return this._map[key].path.indexOf(path, 0) > -1
}
return false
}));
filteredKeys.forEach((key => this.removeItemByKey(key)))
}
}
exports.default = FormItemsRunTimeInfo;