devextreme
Version:
HTML5 JavaScript Component Suite for Responsive Web Development
155 lines (151 loc) • 5.54 kB
JavaScript
/**
* DevExtreme (cjs/__internal/data/data_source/m_utils.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/
*/
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.normalizeStoreLoadOptionAccessorArguments = exports.normalizeLoadResult = exports.normalizeDataSourceOptions = exports.mapDataRespectingGrouping = exports.isPending = exports.CANCELED_TOKEN = void 0;
var _array_store = _interopRequireDefault(require("../../../common/data/array_store"));
var _custom_store = require("../../../common/data/custom_store");
var _utils = require("../../../common/data/utils");
var _ajax = _interopRequireDefault(require("../../../core/utils/ajax"));
var _extend = require("../../../core/utils/extend");
var _iterator = require("../../../core/utils/iterator");
var _type = require("../../../core/utils/type");
var _abstract_store = _interopRequireDefault(require("../../../data/abstract_store"));
const _excluded = ["items"];
function _interopRequireDefault(e) {
return e && e.__esModule ? e : {
default: e
}
}
function _extends() {
return _extends = Object.assign ? Object.assign.bind() : function(n) {
for (var e = 1; e < arguments.length; e++) {
var t = arguments[e];
for (var r in t) {
({}).hasOwnProperty.call(t, r) && (n[r] = t[r])
}
}
return n
}, _extends.apply(null, arguments)
}
function _objectWithoutPropertiesLoose(r, e) {
if (null == r) {
return {}
}
var t = {};
for (var n in r) {
if ({}.hasOwnProperty.call(r, n)) {
if (e.includes(n)) {
continue
}
t[n] = r[n]
}
}
return t
}
const CANCELED_TOKEN = exports.CANCELED_TOKEN = "canceled";
const isPending = deferred => "pending" === deferred.state();
exports.isPending = isPending;
const normalizeStoreLoadOptionAccessorArguments = originalArguments => {
switch (originalArguments.length) {
case 0:
return;
case 1:
return originalArguments[0]
}
return [].slice.call(originalArguments)
};
exports.normalizeStoreLoadOptionAccessorArguments = normalizeStoreLoadOptionAccessorArguments;
const mapGroup = (group, level, mapper) => (0, _iterator.map)(group, (item => {
const restItem = _objectWithoutPropertiesLoose(item, _excluded);
return _extends({}, restItem, {
items: mapRecursive(item.items, level - 1, mapper)
})
}));
const mapRecursive = (items, level, mapper) => {
if (!Array.isArray(items)) {
return items
}
return level ? mapGroup(items, level, mapper) : (0, _iterator.map)(items, mapper)
};
const mapDataRespectingGrouping = (items, mapper, groupInfo) => {
const level = groupInfo ? (0, _utils.normalizeSortingInfo)(groupInfo).length : 0;
return mapRecursive(items, level, mapper)
};
exports.mapDataRespectingGrouping = mapDataRespectingGrouping;
const normalizeLoadResult = (data, extra) => {
var _data;
if (null !== (_data = data) && void 0 !== _data && _data.data) {
extra = data;
data = data.data
}
if (!Array.isArray(data)) {
data = [data]
}
return {
data: data,
extra: extra
}
};
exports.normalizeLoadResult = normalizeLoadResult;
const createCustomStoreFromLoadFunc = options => {
const storeConfig = {};
(0, _iterator.each)(["useDefaultSearch", "key", "load", "loadMode", "cacheRawData", "byKey", "lookup", "totalCount", "insert", "update", "remove"], (function() {
storeConfig[this] = options[this];
delete options[this]
}));
return new _custom_store.CustomStore(storeConfig)
};
const createStoreFromConfig = storeConfig => {
const alias = storeConfig.type;
delete storeConfig.type;
return _abstract_store.default.create(alias, storeConfig)
};
const createCustomStoreFromUrl = (url, normalizationOptions) => new _custom_store.CustomStore({
load: () => _ajax.default.sendRequest({
url: url,
dataType: "json"
}),
loadMode: null === normalizationOptions || void 0 === normalizationOptions ? void 0 : normalizationOptions.fromUrlLoadMode
});
const normalizeDataSourceOptions = (options, normalizationOptions) => {
let store;
if ("string" === typeof options) {
options = {
paginate: false,
store: createCustomStoreFromUrl(options, normalizationOptions)
}
}
if (void 0 === options) {
options = []
}
if (Array.isArray(options) || options instanceof _abstract_store.default) {
options = {
store: options
}
} else {
options = (0, _extend.extend)({}, options)
}
if (void 0 === options.store) {
options.store = []
}
store = options.store;
if ("load" in options) {
store = createCustomStoreFromLoadFunc(options)
} else if (Array.isArray(store)) {
store = new _array_store.default(store)
} else if ((0, _type.isPlainObject)(store)) {
store = createStoreFromConfig((0, _extend.extend)({}, store))
}
options.store = store;
return options
};
exports.normalizeDataSourceOptions = normalizeDataSourceOptions;