UNPKG

devextreme-angular

Version:

Angular UI and visualization components based on DevExtreme widgets

69 lines 8.56 kB
/*! * devextreme-angular * Version: 25.2.3 * Build date: Fri Dec 12 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-angular */ import { DEPRECATED_CONFIG_COMPONENTS } from './deprecated-config-map'; import WARNING_CODES from './warning-codes'; import { logWarning } from './warning-helper'; const warnedUsages = new Set(); const NESTED_CLASS_NAME_REGEXP = /^(Dx[io][A-Z]\w+)Component$/; function getLegacySelector(nestedOption) { const className = nestedOption?.constructor?.name; if (!className) { return undefined; } const match = NESTED_CLASS_NAME_REGEXP.exec(className); if (!match) { return undefined; } const [, legacyName] = match; return toKebabCase(legacyName); } function getHostMapping(host) { const visited = new Set(); let current = host; while (current && !visited.has(current)) { visited.add(current); const ctorName = current.constructor?.name; if (ctorName && Object.prototype.hasOwnProperty.call(DEPRECATED_CONFIG_COMPONENTS, ctorName)) { return DEPRECATED_CONFIG_COMPONENTS[ctorName]; } current = current._host; } return undefined; } export function warnIfLegacyNestedComponent(nestedOption, host) { const legacySelector = getLegacySelector(nestedOption); if (!legacySelector) { return; } const mappingEntry = getHostMapping(host); if (!mappingEntry) { return; } const replacement = mappingEntry[legacySelector]; if (!replacement) { return; } const cacheKey = `${legacySelector}|${replacement}`; if (warnedUsages.has(cacheKey)) { return; } warnedUsages.add(cacheKey); logWarning(WARNING_CODES.LEGACY_CONFIG_COMPONENT_USED, { legacySelector, replacement }); } function toKebabCase(value) { return value .replace(/([a-z0-9])([A-Z])/g, '$1-$2') .replace(/([A-Z])([A-Z][a-z])/g, '$1-$2') .toLowerCase(); } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVwcmVjYXRlZC1jb25maWctd2FybmluZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2Rpc3QvY29yZS9kZXByZWNhdGVkLWNvbmZpZy13YXJuaW5nLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7OztHQVdHO0FBR0gsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDdkUsT0FBTyxhQUFhLE1BQU0saUJBQWlCLENBQUM7QUFDNUMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRTlDLE1BQU0sWUFBWSxHQUFHLElBQUksR0FBRyxFQUFVLENBQUM7QUFFdkMsTUFBTSx3QkFBd0IsR0FBRyw2QkFBNkIsQ0FBQztBQUkvRCxTQUFTLGlCQUFpQixDQUFDLFlBQThCO0lBQ3ZELE1BQU0sU0FBUyxHQUFHLFlBQVksRUFBRSxXQUFXLEVBQUUsSUFBSSxDQUFDO0lBQ2xELElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUNmLE9BQU8sU0FBUyxDQUFDO0lBQ25CLENBQUM7SUFFRCxNQUFNLEtBQUssR0FBRyx3QkFBd0IsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDdkQsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ1gsT0FBTyxTQUFTLENBQUM7SUFDbkIsQ0FBQztJQUVELE1BQU0sQ0FBQyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEtBQUssQ0FBQztJQUU3QixPQUFPLFdBQVcsQ0FBQyxVQUFVLENBQUMsQ0FBQztBQUNqQyxDQUFDO0FBRUQsU0FBUyxjQUFjLENBQUMsSUFBd0M7SUFDOUQsTUFBTSxPQUFPLEdBQUcsSUFBSSxHQUFHLEVBQTBCLENBQUM7SUFDbEQsSUFBSSxPQUFPLEdBQUcsSUFBSSxDQUFDO0lBRW5CLE9BQU8sT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1FBQ3hDLE9BQU8sQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFckIsTUFBTSxRQUFRLEdBQUcsT0FBTyxDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUM7UUFDM0MsSUFBSSxRQUFRLElBQUksTUFBTSxDQUFDLFNBQVMsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLDRCQUE0QixFQUFFLFFBQVEsQ0FBQyxFQUFFLENBQUM7WUFDN0YsT0FBTyw0QkFBNEIsQ0FBQyxRQUFRLENBQTBCLENBQUM7UUFDekUsQ0FBQztRQUVELE9BQU8sR0FBSSxPQUE4QyxDQUFDLEtBQUssQ0FBQztJQUNsRSxDQUFDO0lBRUQsT0FBTyxTQUFTLENBQUM7QUFDbkIsQ0FBQztBQUVELE1BQU0sVUFBVSwyQkFBMkIsQ0FBQyxZQUE4QixFQUFFLElBQXdDO0lBQ2xILE1BQU0sY0FBYyxHQUFHLGlCQUFpQixDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQ3ZELElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUNwQixPQUFPO0lBQ1QsQ0FBQztJQUVELE1BQU0sWUFBWSxHQUFHLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMxQyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDbEIsT0FBTztJQUNULENBQUM7SUFFRCxNQUFNLFdBQVcsR0FBRyxZQUFZLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDakQsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ2pCLE9BQU87SUFDVCxDQUFDO0lBRUQsTUFBTSxRQUFRLEdBQUcsR0FBRyxjQUFjLElBQUksV0FBVyxFQUFFLENBQUM7SUFDcEQsSUFBSSxZQUFZLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7UUFDL0IsT0FBTztJQUNULENBQUM7SUFFRCxZQUFZLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBRTNCLFVBQVUsQ0FDUixhQUFhLENBQUMsNEJBQTRCLEVBQzFDLEVBQUUsY0FBYyxFQUFFLFdBQVcsRUFBRSxDQUNoQyxDQUFDO0FBQ0osQ0FBQztBQUVELFNBQVMsV0FBVyxDQUFDLEtBQWE7SUFDaEMsT0FBTyxLQUFLO1NBQ1QsT0FBTyxDQUFDLG9CQUFvQixFQUFFLE9BQU8sQ0FBQztTQUN0QyxPQUFPLENBQUMsc0JBQXNCLEVBQUUsT0FBTyxDQUFDO1NBQ3hDLFdBQVcsRUFBRSxDQUFDO0FBQ25CLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiFcbiAqIGRldmV4dHJlbWUtYW5ndWxhclxuICogVmVyc2lvbjogMjUuMi4zXG4gKiBCdWlsZCBkYXRlOiBGcmkgRGVjIDEyIDIwMjVcbiAqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTIgLSAyMDI1IERldmVsb3BlciBFeHByZXNzIEluYy4gQUxMIFJJR0hUUyBSRVNFUlZFRFxuICpcbiAqIFRoaXMgc29mdHdhcmUgbWF5IGJlIG1vZGlmaWVkIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXNcbiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gU2VlIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHByb2plY3QgZm9yIGRldGFpbHMuXG4gKlxuICogaHR0cHM6Ly9naXRodWIuY29tL0RldkV4cHJlc3MvZGV2ZXh0cmVtZS1hbmd1bGFyXG4gKi9cblxuaW1wb3J0IHR5cGUgeyBCYXNlTmVzdGVkT3B0aW9uLCBJTmVzdGVkT3B0aW9uQ29udGFpbmVyIH0gZnJvbSAnLi9uZXN0ZWQtb3B0aW9uJztcclxuaW1wb3J0IHsgREVQUkVDQVRFRF9DT05GSUdfQ09NUE9ORU5UUyB9IGZyb20gJy4vZGVwcmVjYXRlZC1jb25maWctbWFwJztcclxuaW1wb3J0IFdBUk5JTkdfQ09ERVMgZnJvbSAnLi93YXJuaW5nLWNvZGVzJztcclxuaW1wb3J0IHsgbG9nV2FybmluZyB9IGZyb20gJy4vd2FybmluZy1oZWxwZXInO1xyXG5cclxuY29uc3Qgd2FybmVkVXNhZ2VzID0gbmV3IFNldDxzdHJpbmc+KCk7XHJcblxyXG5jb25zdCBORVNURURfQ0xBU1NfTkFNRV9SRUdFWFAgPSAvXihEeFtpb11bQS1aXVxcdyspQ29tcG9uZW50JC87XHJcblxyXG50eXBlIERlcHJlY2F0ZWRDb25maWdFbnRyeSA9IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XHJcblxyXG5mdW5jdGlvbiBnZXRMZWdhY3lTZWxlY3RvcihuZXN0ZWRPcHRpb246IEJhc2VOZXN0ZWRPcHRpb24pOiBzdHJpbmcgfCB1bmRlZmluZWQge1xyXG4gIGNvbnN0IGNsYXNzTmFtZSA9IG5lc3RlZE9wdGlvbj8uY29uc3RydWN0b3I/Lm5hbWU7XHJcbiAgaWYgKCFjbGFzc05hbWUpIHtcclxuICAgIHJldHVybiB1bmRlZmluZWQ7XHJcbiAgfVxyXG5cclxuICBjb25zdCBtYXRjaCA9IE5FU1RFRF9DTEFTU19OQU1FX1JFR0VYUC5leGVjKGNsYXNzTmFtZSk7XHJcbiAgaWYgKCFtYXRjaCkge1xyXG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcclxuICB9XHJcblxyXG4gIGNvbnN0IFssIGxlZ2FjeU5hbWVdID0gbWF0Y2g7XHJcblxyXG4gIHJldHVybiB0b0tlYmFiQ2FzZShsZWdhY3lOYW1lKTtcclxufVxyXG5cclxuZnVuY3Rpb24gZ2V0SG9zdE1hcHBpbmcoaG9zdDogSU5lc3RlZE9wdGlvbkNvbnRhaW5lciB8IHVuZGVmaW5lZCk6IERlcHJlY2F0ZWRDb25maWdFbnRyeSB8IHVuZGVmaW5lZCB7XHJcbiAgY29uc3QgdmlzaXRlZCA9IG5ldyBTZXQ8SU5lc3RlZE9wdGlvbkNvbnRhaW5lcj4oKTtcclxuICBsZXQgY3VycmVudCA9IGhvc3Q7XHJcblxyXG4gIHdoaWxlIChjdXJyZW50ICYmICF2aXNpdGVkLmhhcyhjdXJyZW50KSkge1xyXG4gICAgdmlzaXRlZC5hZGQoY3VycmVudCk7XHJcblxyXG4gICAgY29uc3QgY3Rvck5hbWUgPSBjdXJyZW50LmNvbnN0cnVjdG9yPy5uYW1lO1xyXG4gICAgaWYgKGN0b3JOYW1lICYmIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChERVBSRUNBVEVEX0NPTkZJR19DT01QT05FTlRTLCBjdG9yTmFtZSkpIHtcclxuICAgICAgcmV0dXJuIERFUFJFQ0FURURfQ09ORklHX0NPTVBPTkVOVFNbY3Rvck5hbWVdIGFzIERlcHJlY2F0ZWRDb25maWdFbnRyeTtcclxuICAgIH1cclxuXHJcbiAgICBjdXJyZW50ID0gKGN1cnJlbnQgYXMgeyBfaG9zdD86IElOZXN0ZWRPcHRpb25Db250YWluZXIgfSkuX2hvc3Q7XHJcbiAgfVxyXG5cclxuICByZXR1cm4gdW5kZWZpbmVkO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gd2FybklmTGVnYWN5TmVzdGVkQ29tcG9uZW50KG5lc3RlZE9wdGlvbjogQmFzZU5lc3RlZE9wdGlvbiwgaG9zdDogSU5lc3RlZE9wdGlvbkNvbnRhaW5lciB8IHVuZGVmaW5lZCk6IHZvaWQge1xyXG4gIGNvbnN0IGxlZ2FjeVNlbGVjdG9yID0gZ2V0TGVnYWN5U2VsZWN0b3IobmVzdGVkT3B0aW9uKTtcclxuICBpZiAoIWxlZ2FjeVNlbGVjdG9yKSB7XHJcbiAgICByZXR1cm47XHJcbiAgfVxyXG5cclxuICBjb25zdCBtYXBwaW5nRW50cnkgPSBnZXRIb3N0TWFwcGluZyhob3N0KTtcclxuICBpZiAoIW1hcHBpbmdFbnRyeSkge1xyXG4gICAgcmV0dXJuO1xyXG4gIH1cclxuXHJcbiAgY29uc3QgcmVwbGFjZW1lbnQgPSBtYXBwaW5nRW50cnlbbGVnYWN5U2VsZWN0b3JdO1xyXG4gIGlmICghcmVwbGFjZW1lbnQpIHtcclxuICAgIHJldHVybjtcclxuICB9XHJcblxyXG4gIGNvbnN0IGNhY2hlS2V5ID0gYCR7bGVnYWN5U2VsZWN0b3J9fCR7cmVwbGFjZW1lbnR9YDtcclxuICBpZiAod2FybmVkVXNhZ2VzLmhhcyhjYWNoZUtleSkpIHtcclxuICAgIHJldHVybjtcclxuICB9XHJcblxyXG4gIHdhcm5lZFVzYWdlcy5hZGQoY2FjaGVLZXkpO1xyXG5cclxuICBsb2dXYXJuaW5nKFxyXG4gICAgV0FSTklOR19DT0RFUy5MRUdBQ1lfQ09ORklHX0NPTVBPTkVOVF9VU0VELFxyXG4gICAgeyBsZWdhY3lTZWxlY3RvciwgcmVwbGFjZW1lbnQgfSxcclxuICApO1xyXG59XHJcblxyXG5mdW5jdGlvbiB0b0tlYmFiQ2FzZSh2YWx1ZTogc3RyaW5nKTogc3RyaW5nIHtcclxuICByZXR1cm4gdmFsdWVcclxuICAgIC5yZXBsYWNlKC8oW2EtejAtOV0pKFtBLVpdKS9nLCAnJDEtJDInKVxyXG4gICAgLnJlcGxhY2UoLyhbQS1aXSkoW0EtWl1bYS16XSkvZywgJyQxLSQyJylcclxuICAgIC50b0xvd2VyQ2FzZSgpO1xyXG59XHJcbiJdfQ==