devextreme-angular
Version:
Angular UI and visualization components based on DevExtreme widgets
74 lines • 8.68 kB
JavaScript
/*!
* 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 { Injectable, IterableDiffers, } from '@angular/core';
import * as i0 from "@angular/core";
function isIterable(value) {
return value && (typeof value[Symbol.iterator] === 'function');
}
export class IterableDifferHelper {
_differs;
_host;
_propertyDiffers = {};
constructor(_differs) {
this._differs = _differs;
}
setHost(host) {
this._host = host;
}
setup(prop, changes) {
if (prop in changes) {
const value = changes[prop].currentValue;
this.setupSingle(prop, value);
}
}
setupSingle(prop, value) {
if (value && Array.isArray(value)) {
if (!this._propertyDiffers[prop]) {
try {
this._propertyDiffers[prop] = this._differs.find(value).create(null);
return true;
// eslint-disable-next-line @typescript-eslint/no-unused-vars
}
catch (e) { }
}
}
else {
delete this._propertyDiffers[prop];
}
return false;
}
getChanges(prop, value) {
if (this._propertyDiffers[prop]) {
return this._propertyDiffers[prop].diff(value);
}
}
checkChangedOptions(propName, hostValue) {
return this._host.changedOptions[propName] === hostValue;
}
doCheck(prop) {
if (this._propertyDiffers[prop] && this._host.instance) {
const hostValue = this._host[prop];
const changes = isIterable(hostValue) && this.getChanges(prop, hostValue);
if (changes && !this.checkChangedOptions(prop, hostValue)) {
this._host.lockWidgetUpdate();
this._host.instance.option(prop, hostValue);
}
}
}
/** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: IterableDifferHelper, deps: [{ token: i0.IterableDiffers }], target: i0.ɵɵFactoryTarget.Injectable });
/** @nocollapse */ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: IterableDifferHelper });
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: IterableDifferHelper, decorators: [{
type: Injectable
}], ctorParameters: () => [{ type: i0.IterableDiffers }] });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXRlcmFibGUtZGlmZmVyLWhlbHBlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2Rpc3QvY29yZS9pdGVyYWJsZS1kaWZmZXItaGVscGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7OztHQVdHO0FBRUgsT0FBTyxFQUNMLFVBQVUsRUFFVixlQUFlLEdBQ2hCLE1BQU0sZUFBZSxDQUFDOztBQU12QixTQUFTLFVBQVUsQ0FBQyxLQUFLO0lBQ3ZCLE9BQU8sS0FBSyxJQUFJLENBQUMsT0FBTyxLQUFLLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxLQUFLLFVBQVUsQ0FBQyxDQUFDO0FBQ2pFLENBQUM7QUFFRCxNQUFNLE9BQU8sb0JBQW9CO0lBS0Y7SUFKckIsS0FBSyxDQUFjO0lBRW5CLGdCQUFnQixHQUEwQixFQUFFLENBQUM7SUFFckQsWUFBNkIsUUFBeUI7UUFBekIsYUFBUSxHQUFSLFFBQVEsQ0FBaUI7SUFBSSxDQUFDO0lBRTNELE9BQU8sQ0FBQyxJQUFpQjtRQUN2QixJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztJQUNwQixDQUFDO0lBRUQsS0FBSyxDQUFDLElBQVksRUFBRSxPQUFzQjtRQUN4QyxJQUFJLElBQUksSUFBSSxPQUFPLEVBQUUsQ0FBQztZQUNwQixNQUFNLEtBQUssR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsWUFBWSxDQUFDO1lBQ3pDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ2hDLENBQUM7SUFDSCxDQUFDO0lBRUQsV0FBVyxDQUFDLElBQVksRUFBRSxLQUFVO1FBQ2xDLElBQUksS0FBSyxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUNsQyxJQUFJLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7Z0JBQ2pDLElBQUksQ0FBQztvQkFDSCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO29CQUNyRSxPQUFPLElBQUksQ0FBQztvQkFDWiw2REFBNkQ7Z0JBQy9ELENBQUM7Z0JBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDakIsQ0FBQztRQUNILENBQUM7YUFBTSxDQUFDO1lBQ04sT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDckMsQ0FBQztRQUVELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVELFVBQVUsQ0FBQyxJQUFZLEVBQUUsS0FBVTtRQUNqQyxJQUFJLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQ2hDLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNqRCxDQUFDO0lBQ0gsQ0FBQztJQUVELG1CQUFtQixDQUFDLFFBQWdCLEVBQUUsU0FBYztRQUNsRCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxLQUFLLFNBQVMsQ0FBQztJQUMzRCxDQUFDO0lBRUQsT0FBTyxDQUFDLElBQVk7UUFDbEIsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUN2RCxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ25DLE1BQU0sT0FBTyxHQUFHLFVBQVUsQ0FBQyxTQUFTLENBQUMsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxTQUFTLENBQUMsQ0FBQztZQUUxRSxJQUFJLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLEVBQUUsU0FBUyxDQUFDLEVBQUUsQ0FBQztnQkFDMUQsSUFBSSxDQUFDLEtBQUssQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO2dCQUM5QixJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLFNBQVMsQ0FBQyxDQUFDO1lBQzlDLENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQzsySEF0RFUsb0JBQW9COytIQUFwQixvQkFBb0I7OzRGQUFwQixvQkFBb0I7a0JBRGhDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyIvKiFcbiAqIGRldmV4dHJlbWUtYW5ndWxhclxuICogVmVyc2lvbjogMjUuMi4zXG4gKiBCdWlsZCBkYXRlOiBGcmkgRGVjIDEyIDIwMjVcbiAqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTIgLSAyMDI1IERldmVsb3BlciBFeHByZXNzIEluYy4gQUxMIFJJR0hUUyBSRVNFUlZFRFxuICpcbiAqIFRoaXMgc29mdHdhcmUgbWF5IGJlIG1vZGlmaWVkIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXNcbiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gU2VlIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHByb2plY3QgZm9yIGRldGFpbHMuXG4gKlxuICogaHR0cHM6Ly9naXRodWIuY29tL0RldkV4cHJlc3MvZGV2ZXh0cmVtZS1hbmd1bGFyXG4gKi9cblxuaW1wb3J0IHtcclxuICBJbmplY3RhYmxlLFxyXG4gIFNpbXBsZUNoYW5nZXMsXHJcbiAgSXRlcmFibGVEaWZmZXJzLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuaW1wb3J0IHtcclxuICBEeENvbXBvbmVudCxcclxufSBmcm9tICcuL2NvbXBvbmVudCc7XHJcblxyXG5mdW5jdGlvbiBpc0l0ZXJhYmxlKHZhbHVlKSB7XHJcbiAgcmV0dXJuIHZhbHVlICYmICh0eXBlb2YgdmFsdWVbU3ltYm9sLml0ZXJhdG9yXSA9PT0gJ2Z1bmN0aW9uJyk7XHJcbn1cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgSXRlcmFibGVEaWZmZXJIZWxwZXIge1xyXG4gIHByaXZhdGUgX2hvc3Q6IER4Q29tcG9uZW50O1xyXG5cclxuICBwcml2YXRlIF9wcm9wZXJ0eURpZmZlcnM6IHsgW2lkOiBzdHJpbmddOiBhbnkgfSA9IHt9O1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IF9kaWZmZXJzOiBJdGVyYWJsZURpZmZlcnMpIHsgfVxyXG5cclxuICBzZXRIb3N0KGhvc3Q6IER4Q29tcG9uZW50KSB7XHJcbiAgICB0aGlzLl9ob3N0ID0gaG9zdDtcclxuICB9XHJcblxyXG4gIHNldHVwKHByb3A6IHN0cmluZywgY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xyXG4gICAgaWYgKHByb3AgaW4gY2hhbmdlcykge1xyXG4gICAgICBjb25zdCB2YWx1ZSA9IGNoYW5nZXNbcHJvcF0uY3VycmVudFZhbHVlO1xyXG4gICAgICB0aGlzLnNldHVwU2luZ2xlKHByb3AsIHZhbHVlKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNldHVwU2luZ2xlKHByb3A6IHN0cmluZywgdmFsdWU6IGFueSkge1xyXG4gICAgaWYgKHZhbHVlICYmIEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XHJcbiAgICAgIGlmICghdGhpcy5fcHJvcGVydHlEaWZmZXJzW3Byb3BdKSB7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgIHRoaXMuX3Byb3BlcnR5RGlmZmVyc1twcm9wXSA9IHRoaXMuX2RpZmZlcnMuZmluZCh2YWx1ZSkuY3JlYXRlKG51bGwpO1xyXG4gICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXHJcbiAgICAgICAgfSBjYXRjaCAoZSkgeyB9XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGRlbGV0ZSB0aGlzLl9wcm9wZXJ0eURpZmZlcnNbcHJvcF07XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgZ2V0Q2hhbmdlcyhwcm9wOiBzdHJpbmcsIHZhbHVlOiBhbnkpIHtcclxuICAgIGlmICh0aGlzLl9wcm9wZXJ0eURpZmZlcnNbcHJvcF0pIHtcclxuICAgICAgcmV0dXJuIHRoaXMuX3Byb3BlcnR5RGlmZmVyc1twcm9wXS5kaWZmKHZhbHVlKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNoZWNrQ2hhbmdlZE9wdGlvbnMocHJvcE5hbWU6IHN0cmluZywgaG9zdFZhbHVlOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLl9ob3N0LmNoYW5nZWRPcHRpb25zW3Byb3BOYW1lXSA9PT0gaG9zdFZhbHVlO1xyXG4gIH1cclxuXHJcbiAgZG9DaGVjayhwcm9wOiBzdHJpbmcpIHtcclxuICAgIGlmICh0aGlzLl9wcm9wZXJ0eURpZmZlcnNbcHJvcF0gJiYgdGhpcy5faG9zdC5pbnN0YW5jZSkge1xyXG4gICAgICBjb25zdCBob3N0VmFsdWUgPSB0aGlzLl9ob3N0W3Byb3BdO1xyXG4gICAgICBjb25zdCBjaGFuZ2VzID0gaXNJdGVyYWJsZShob3N0VmFsdWUpICYmIHRoaXMuZ2V0Q2hhbmdlcyhwcm9wLCBob3N0VmFsdWUpO1xyXG5cclxuICAgICAgaWYgKGNoYW5nZXMgJiYgIXRoaXMuY2hlY2tDaGFuZ2VkT3B0aW9ucyhwcm9wLCBob3N0VmFsdWUpKSB7XHJcbiAgICAgICAgdGhpcy5faG9zdC5sb2NrV2lkZ2V0VXBkYXRlKCk7XHJcbiAgICAgICAgdGhpcy5faG9zdC5pbnN0YW5jZS5vcHRpb24ocHJvcCwgaG9zdFZhbHVlKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iXX0=