devextreme-angular
Version:
Angular UI and visualization components based on DevExtreme widgets
69 lines • 8.05 kB
JavaScript
/*!
* devextreme-angular
* Version: 22.1.14
* Build date: Mon Apr 29 2024
*
* Copyright (c) 2012 - 2024 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 } from '@angular/core';
import * as i0 from "@angular/core";
export class IterableDifferHelper {
constructor(_differs) {
this._differs = _differs;
this._propertyDiffers = {};
}
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;
}
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]) {
let hostValue = this._host[prop], isChangedOption = this.checkChangedOptions(prop, hostValue);
const changes = this.getChanges(prop, hostValue);
if (changes && this._host.instance && !isChangedOption) {
this._host.lockWidgetUpdate();
this._host.instance.option(prop, hostValue);
}
}
}
}
/** @nocollapse */ IterableDifferHelper.ɵfac = function IterableDifferHelper_Factory(t) { return new (t || IterableDifferHelper)(i0.ɵɵinject(i0.IterableDiffers)); };
/** @nocollapse */ IterableDifferHelper.ɵprov = /** @pureOrBreakMyCode */ i0.ɵɵdefineInjectable({ token: IterableDifferHelper, factory: IterableDifferHelper.ɵfac });
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(IterableDifferHelper, [{
type: Injectable
}], function () { return [{ type: i0.IterableDiffers }]; }, null); })();
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXRlcmFibGUtZGlmZmVyLWhlbHBlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2Rpc3QvY29yZS9pdGVyYWJsZS1kaWZmZXItaGVscGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7OztHQVdHO0FBRUgsT0FBTyxFQUNILFVBQVUsRUFHYixNQUFNLGVBQWUsQ0FBQzs7QUFPdkIsTUFBTSxPQUFPLG9CQUFvQjtJQUs3QixZQUFvQixRQUF5QjtRQUF6QixhQUFRLEdBQVIsUUFBUSxDQUFpQjtRQUZyQyxxQkFBZ0IsR0FBMkIsRUFBRSxDQUFDO0lBRUwsQ0FBQztJQUVsRCxPQUFPLENBQUMsSUFBaUI7UUFDckIsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7SUFDdEIsQ0FBQztJQUVELEtBQUssQ0FBQyxJQUFZLEVBQUUsT0FBc0I7UUFDdEMsSUFBSSxJQUFJLElBQUksT0FBTyxFQUFFO1lBQ2pCLE1BQU0sS0FBSyxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxZQUFZLENBQUM7WUFDekMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7U0FDakM7SUFDTCxDQUFDO0lBRUQsV0FBVyxDQUFDLElBQVksRUFBRSxLQUFVO1FBQ2hDLElBQUksS0FBSyxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDL0IsSUFBSSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsRUFBRTtnQkFDOUIsSUFBSTtvQkFDQSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO29CQUNyRSxPQUFPLElBQUksQ0FBQztpQkFDZjtnQkFBQyxPQUFPLENBQUMsRUFBRSxHQUFHO2FBQ2xCO1NBQ0o7YUFBTTtZQUNILE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxDQUFDO1NBQ3RDO1FBRUQsT0FBTyxLQUFLLENBQUM7SUFDakIsQ0FBQztJQUVELFVBQVUsQ0FBQyxJQUFZLEVBQUUsS0FBVTtRQUMvQixJQUFJLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUM3QixPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDbEQ7SUFDTCxDQUFDO0lBRUQsbUJBQW1CLENBQUMsUUFBZ0IsRUFBRSxTQUFjO1FBQ2hELE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLEtBQUssU0FBUyxDQUFDO0lBQzdELENBQUM7SUFBQSxDQUFDO0lBRUYsT0FBTyxDQUFDLElBQVk7UUFDaEIsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDN0IsSUFBSSxTQUFTLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFDNUIsZUFBZSxHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLEVBQUUsU0FBUyxDQUFDLENBQUM7WUFFaEUsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsU0FBUyxDQUFDLENBQUM7WUFDakQsSUFBSSxPQUFPLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLElBQUksQ0FBQyxlQUFlLEVBQUU7Z0JBQ3BELElBQUksQ0FBQyxLQUFLLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztnQkFDOUIsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxTQUFTLENBQUMsQ0FBQzthQUMvQztTQUNKO0lBQ0wsQ0FBQzs7MkdBdERRLG9CQUFvQjt5R0FBcEIsb0JBQW9CLFdBQXBCLG9CQUFvQjt1RkFBcEIsb0JBQW9CO2NBRGhDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyIvKiFcbiAqIGRldmV4dHJlbWUtYW5ndWxhclxuICogVmVyc2lvbjogMjIuMS4xNFxuICogQnVpbGQgZGF0ZTogTW9uIEFwciAyOSAyMDI0XG4gKlxuICogQ29weXJpZ2h0IChjKSAyMDEyIC0gMjAyNCBEZXZlbG9wZXIgRXhwcmVzcyBJbmMuIEFMTCBSSUdIVFMgUkVTRVJWRURcbiAqXG4gKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zXG4gKiBvZiB0aGUgTUlUIGxpY2Vuc2UuIFNlZSB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBwcm9qZWN0IGZvciBkZXRhaWxzLlxuICpcbiAqIGh0dHBzOi8vZ2l0aHViLmNvbS9EZXZFeHByZXNzL2RldmV4dHJlbWUtYW5ndWxhclxuICovXG5cbmltcG9ydCB7XG4gICAgSW5qZWN0YWJsZSxcbiAgICBTaW1wbGVDaGFuZ2VzLFxuICAgIEl0ZXJhYmxlRGlmZmVyc1xufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHtcbiAgICBEeENvbXBvbmVudFxufSBmcm9tICcuL2NvbXBvbmVudCc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBJdGVyYWJsZURpZmZlckhlbHBlciB7XG5cbiAgICBwcml2YXRlIF9ob3N0OiBEeENvbXBvbmVudDtcbiAgICBwcml2YXRlIF9wcm9wZXJ0eURpZmZlcnM6IHsgW2lkOiBzdHJpbmddOiBhbnk7IH0gPSB7fTtcblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgX2RpZmZlcnM6IEl0ZXJhYmxlRGlmZmVycykgeyB9XG5cbiAgICBzZXRIb3N0KGhvc3Q6IER4Q29tcG9uZW50KSB7XG4gICAgICAgIHRoaXMuX2hvc3QgPSBob3N0O1xuICAgIH1cblxuICAgIHNldHVwKHByb3A6IHN0cmluZywgY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xuICAgICAgICBpZiAocHJvcCBpbiBjaGFuZ2VzKSB7XG4gICAgICAgICAgICBjb25zdCB2YWx1ZSA9IGNoYW5nZXNbcHJvcF0uY3VycmVudFZhbHVlO1xuICAgICAgICAgICAgdGhpcy5zZXR1cFNpbmdsZShwcm9wLCB2YWx1ZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBzZXR1cFNpbmdsZShwcm9wOiBzdHJpbmcsIHZhbHVlOiBhbnkpIHtcbiAgICAgICAgaWYgKHZhbHVlICYmIEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICAgICAgICBpZiAoIXRoaXMuX3Byb3BlcnR5RGlmZmVyc1twcm9wXSkge1xuICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3Byb3BlcnR5RGlmZmVyc1twcm9wXSA9IHRoaXMuX2RpZmZlcnMuZmluZCh2YWx1ZSkuY3JlYXRlKG51bGwpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7IH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGRlbGV0ZSB0aGlzLl9wcm9wZXJ0eURpZmZlcnNbcHJvcF07XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgZ2V0Q2hhbmdlcyhwcm9wOiBzdHJpbmcsIHZhbHVlOiBhbnkpIHtcbiAgICAgICAgaWYgKHRoaXMuX3Byb3BlcnR5RGlmZmVyc1twcm9wXSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3Byb3BlcnR5RGlmZmVyc1twcm9wXS5kaWZmKHZhbHVlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGNoZWNrQ2hhbmdlZE9wdGlvbnMocHJvcE5hbWU6IHN0cmluZywgaG9zdFZhbHVlOiBhbnkpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2hvc3QuY2hhbmdlZE9wdGlvbnNbcHJvcE5hbWVdID09PSBob3N0VmFsdWU7XG4gICAgfTtcblxuICAgIGRvQ2hlY2socHJvcDogc3RyaW5nKSB7XG4gICAgICAgIGlmICh0aGlzLl9wcm9wZXJ0eURpZmZlcnNbcHJvcF0pIHtcbiAgICAgICAgICAgIGxldCBob3N0VmFsdWUgPSB0aGlzLl9ob3N0W3Byb3BdLFxuICAgICAgICAgICAgICAgIGlzQ2hhbmdlZE9wdGlvbiA9IHRoaXMuY2hlY2tDaGFuZ2VkT3B0aW9ucyhwcm9wLCBob3N0VmFsdWUpO1xuXG4gICAgICAgICAgICBjb25zdCBjaGFuZ2VzID0gdGhpcy5nZXRDaGFuZ2VzKHByb3AsIGhvc3RWYWx1ZSk7XG4gICAgICAgICAgICBpZiAoY2hhbmdlcyAmJiB0aGlzLl9ob3N0Lmluc3RhbmNlICYmICFpc0NoYW5nZWRPcHRpb24pIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9ob3N0LmxvY2tXaWRnZXRVcGRhdGUoKTtcbiAgICAgICAgICAgICAgICB0aGlzLl9ob3N0Lmluc3RhbmNlLm9wdGlvbihwcm9wLCBob3N0VmFsdWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG59XG4iXX0=