UNPKG

devextreme-angular

Version:

Angular UI and visualization components based on DevExtreme widgets

74 lines 8.68 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 { 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=