devextreme-react
Version:
DevExtreme React UI and Visualization Components
68 lines (66 loc) • 1.81 kB
JavaScript
/*!
* devextreme-react
* Version: 24.2.6
* Build date: Mon Mar 17 2025
*
* Copyright (c) 2012 - 2025 Developer Express Inc. ALL RIGHTS RESERVED
*
* This software may be modified and distributed under the terms
* of the MIT license. See the LICENSE file in the root of the project for details.
*
* https://github.com/DevExpress/devextreme-react
*/
export function generateID() {
return Math.random().toString(36).substring(2);
}
export class DoubleKeyMap {
constructor() {
this._map = new Map();
}
set({ key1, key2 }, value) {
let innerMap = this._map.get(key1);
if (!innerMap) {
innerMap = new Map();
this._map.set(key1, innerMap);
}
innerMap.set(key2, value);
}
get({ key1, key2 }) {
const innerMap = this._map.get(key1);
return innerMap ? innerMap.get(key2) : undefined;
}
delete({ key1, key2 }) {
const innerMap = this._map.get(key1);
if (!innerMap) {
return;
}
innerMap.delete(key2);
if (innerMap.size === 0) {
this._map.delete(key1);
}
}
clear() {
this._map.clear();
}
get empty() {
return this._map.size === 0;
}
*[Symbol.iterator]() {
for (const [key1, innerMap] of this._map) {
for (const [key2, value] of innerMap) {
yield [{ key1, key2 }, value];
}
}
}
}
export class TemplateInstantiationModels extends DoubleKeyMap {
}
export function capitalizeFirstLetter(text) {
if (text.length) {
return `${text[0].toUpperCase()}${text.substr(1)}`;
}
return '';
}
export function hasExpectedChildren(elementDescriptor) {
return !!Object.keys(elementDescriptor.ExpectedChildren || {}).length;
}