@stemy/ngx-utils 17.1.2 → 17.1.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Directive, EventEmitter, HostBinding, HostListener, Inject, Input, Output } from "@angular/core";
|
|
1
|
+
import { ChangeDetectorRef, Directive, EventEmitter, HostBinding, HostListener, Inject, Input, Output } from "@angular/core";
|
|
2
2
|
import { TOASTER_SERVICE } from "../common-types";
|
|
3
3
|
import * as i0 from "@angular/core";
|
|
4
4
|
export class AsyncMethodBase {
|
|
@@ -8,14 +8,18 @@ export class AsyncMethodBase {
|
|
|
8
8
|
get isLoading() {
|
|
9
9
|
return this.loading;
|
|
10
10
|
}
|
|
11
|
-
constructor(toaster) {
|
|
11
|
+
constructor(toaster, cdr) {
|
|
12
12
|
this.toaster = toaster;
|
|
13
|
+
this.cdr = cdr;
|
|
13
14
|
this.onSuccess = new EventEmitter();
|
|
14
15
|
this.onError = new EventEmitter();
|
|
15
16
|
}
|
|
16
17
|
getMethod() {
|
|
17
18
|
return async () => null;
|
|
18
19
|
}
|
|
20
|
+
ngOnChanges() {
|
|
21
|
+
this.cdr.detectChanges();
|
|
22
|
+
}
|
|
19
23
|
click(ev) {
|
|
20
24
|
if (ev) {
|
|
21
25
|
ev.preventDefault();
|
|
@@ -47,11 +51,15 @@ export class AsyncMethodBase {
|
|
|
47
51
|
this.loading = false;
|
|
48
52
|
this.onError.emit(reason);
|
|
49
53
|
this.toaster.error(reason.message, reason.context);
|
|
54
|
+
}).finally(() => {
|
|
55
|
+
if (!this.cdr["destroyed"]) {
|
|
56
|
+
this.cdr.detectChanges();
|
|
57
|
+
}
|
|
50
58
|
});
|
|
51
59
|
return true;
|
|
52
60
|
}
|
|
53
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AsyncMethodBase, deps: [{ token: TOASTER_SERVICE }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
54
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.12", type: AsyncMethodBase, selector: "[__asmb__]", inputs: { disabled: "disabled", context: "context" }, outputs: { onSuccess: "onSuccess", onError: "onError" }, host: { listeners: { "click": "click($event)" }, properties: { "class.disabled": "this.isDisabled", "class.loading": "this.isLoading" } }, ngImport: i0 }); }
|
|
61
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AsyncMethodBase, deps: [{ token: TOASTER_SERVICE }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
62
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.12", type: AsyncMethodBase, selector: "[__asmb__]", inputs: { disabled: "disabled", context: "context" }, outputs: { onSuccess: "onSuccess", onError: "onError" }, host: { listeners: { "click": "click($event)" }, properties: { "class.disabled": "this.isDisabled", "class.loading": "this.isLoading" } }, usesOnChanges: true, ngImport: i0 }); }
|
|
55
63
|
}
|
|
56
64
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AsyncMethodBase, decorators: [{
|
|
57
65
|
type: Directive,
|
|
@@ -61,7 +69,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
61
69
|
}], ctorParameters: () => [{ type: undefined, decorators: [{
|
|
62
70
|
type: Inject,
|
|
63
71
|
args: [TOASTER_SERVICE]
|
|
64
|
-
}] }], propDecorators: { disabled: [{
|
|
72
|
+
}] }, { type: i0.ChangeDetectorRef }], propDecorators: { disabled: [{
|
|
65
73
|
type: Input
|
|
66
74
|
}], context: [{
|
|
67
75
|
type: Input
|
|
@@ -79,4 +87,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
79
87
|
type: HostListener,
|
|
80
88
|
args: ["click", ["$event"]]
|
|
81
89
|
}] } });
|
|
82
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
90
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXN5bmMtbWV0aG9kLmJhc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbmd4LXV0aWxzL2RpcmVjdGl2ZXMvYXN5bmMtbWV0aG9kLmJhc2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsWUFBWSxFQUNaLFdBQVcsRUFDWCxZQUFZLEVBQ1osTUFBTSxFQUNOLEtBQUssRUFDTCxNQUFNLEVBQ1QsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUE4QyxlQUFlLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQzs7QUFLN0YsTUFBTSxPQUFPLGVBQWU7SUFVeEIsSUFDSSxVQUFVO1FBQ1YsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDO0lBQ3pCLENBQUM7SUFFRCxJQUNJLFNBQVM7UUFDVCxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUM7SUFDeEIsQ0FBQztJQUVELFlBQStDLE9BQXdCLEVBQVksR0FBc0I7UUFBMUQsWUFBTyxHQUFQLE9BQU8sQ0FBaUI7UUFBWSxRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQUNyRyxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksWUFBWSxFQUFpQixDQUFDO1FBQ25ELElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxZQUFZLEVBQWlCLENBQUM7SUFDckQsQ0FBQztJQUVTLFNBQVM7UUFDZixPQUFPLEtBQUssSUFBSSxFQUFFLENBQUMsSUFBSSxDQUFDO0lBQzVCLENBQUM7SUFFRCxXQUFXO1FBQ1AsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUM3QixDQUFDO0lBR0QsS0FBSyxDQUFDLEVBQVM7UUFDWCxJQUFJLEVBQUUsRUFBRSxDQUFDO1lBQ0wsRUFBRSxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQ3BCLEVBQUUsQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUN6QixDQUFDO1FBQ0QsSUFBSSxJQUFJLENBQUMsUUFBUTtZQUFFLE9BQU87UUFDMUIsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO0lBQ3RCLENBQUM7SUFFRCxVQUFVO1FBQ04sSUFBSSxJQUFJLENBQUMsT0FBTztZQUFFLE9BQU8sSUFBSSxDQUFDO1FBQzlCLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO1FBQ3BCLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUNoQyxNQUFNLE1BQU0sR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3JELElBQUksQ0FBQyxDQUFDLE1BQU0sWUFBWSxPQUFPLENBQUMsRUFBRSxDQUFDO1lBQy9CLElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO1lBQ3JCLE9BQU8sS0FBSyxDQUFDO1FBQ2pCLENBQUM7UUFDRCxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFO1lBQ2pCLElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO1lBQ3JCLElBQUksTUFBTSxFQUFFLENBQUM7Z0JBQ1QsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7Z0JBQzVCLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ3pELENBQUM7UUFDTCxDQUFDLEVBQUUsTUFBTSxDQUFDLEVBQUU7WUFDUixJQUFJLENBQUMsTUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU87Z0JBQzFCLE1BQU0sSUFBSSxLQUFLLENBQUMsK0NBQStDLENBQUMsQ0FBQztZQUNyRSxJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztZQUNyQixJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUMxQixJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUN2RCxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFO1lBQ1osSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQztnQkFDekIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUM3QixDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7UUFDSCxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDOytHQXRFUSxlQUFlLGtCQW9CSixlQUFlO21HQXBCMUIsZUFBZTs7NEZBQWYsZUFBZTtrQkFIM0IsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsWUFBWTtpQkFDekI7OzBCQXFCZ0IsTUFBTTsyQkFBQyxlQUFlO3lFQWxCMUIsUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBRUksU0FBUztzQkFBbEIsTUFBTTtnQkFDRyxPQUFPO3NCQUFoQixNQUFNO2dCQUtILFVBQVU7c0JBRGIsV0FBVzt1QkFBQyxnQkFBZ0I7Z0JBTXpCLFNBQVM7c0JBRFosV0FBVzt1QkFBQyxlQUFlO2dCQW1CNUIsS0FBSztzQkFESixZQUFZO3VCQUFDLE9BQU8sRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcclxuICAgIERpcmVjdGl2ZSxcclxuICAgIEV2ZW50RW1pdHRlcixcclxuICAgIEhvc3RCaW5kaW5nLFxyXG4gICAgSG9zdExpc3RlbmVyLFxyXG4gICAgSW5qZWN0LFxyXG4gICAgSW5wdXQsIE9uQ2hhbmdlcyxcclxuICAgIE91dHB1dFxyXG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7QXN5bmNNZXRob2QsIElBc3luY01lc3NhZ2UsIElUb2FzdGVyU2VydmljZSwgVE9BU1RFUl9TRVJWSUNFfSBmcm9tIFwiLi4vY29tbW9uLXR5cGVzXCI7XHJcblxyXG5ARGlyZWN0aXZlKHtcclxuICAgIHNlbGVjdG9yOiBcIltfX2FzbWJfX11cIlxyXG59KVxyXG5leHBvcnQgY2xhc3MgQXN5bmNNZXRob2RCYXNlIGltcGxlbWVudHMgT25DaGFuZ2VzIHtcclxuXHJcbiAgICBASW5wdXQoKSBkaXNhYmxlZDogYm9vbGVhbjtcclxuICAgIEBJbnB1dCgpIGNvbnRleHQ6IGFueTtcclxuXHJcbiAgICBAT3V0cHV0KCkgb25TdWNjZXNzOiBFdmVudEVtaXR0ZXI8SUFzeW5jTWVzc2FnZT47XHJcbiAgICBAT3V0cHV0KCkgb25FcnJvcjogRXZlbnRFbWl0dGVyPElBc3luY01lc3NhZ2U+O1xyXG5cclxuICAgIHByb3RlY3RlZCBsb2FkaW5nOiBib29sZWFuO1xyXG5cclxuICAgIEBIb3N0QmluZGluZyhcImNsYXNzLmRpc2FibGVkXCIpXHJcbiAgICBnZXQgaXNEaXNhYmxlZCgpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5kaXNhYmxlZDtcclxuICAgIH1cclxuXHJcbiAgICBASG9zdEJpbmRpbmcoXCJjbGFzcy5sb2FkaW5nXCIpXHJcbiAgICBnZXQgaXNMb2FkaW5nKCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmxvYWRpbmc7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3RydWN0b3IoQEluamVjdChUT0FTVEVSX1NFUlZJQ0UpIHByb3RlY3RlZCB0b2FzdGVyOiBJVG9hc3RlclNlcnZpY2UsIHByb3RlY3RlZCBjZHI6IENoYW5nZURldGVjdG9yUmVmKSB7XHJcbiAgICAgICAgdGhpcy5vblN1Y2Nlc3MgPSBuZXcgRXZlbnRFbWl0dGVyPElBc3luY01lc3NhZ2U+KCk7XHJcbiAgICAgICAgdGhpcy5vbkVycm9yID0gbmV3IEV2ZW50RW1pdHRlcjxJQXN5bmNNZXNzYWdlPigpO1xyXG4gICAgfVxyXG5cclxuICAgIHByb3RlY3RlZCBnZXRNZXRob2QoKTogQXN5bmNNZXRob2Qge1xyXG4gICAgICAgIHJldHVybiBhc3luYyAoKSA9PiBudWxsO1xyXG4gICAgfVxyXG5cclxuICAgIG5nT25DaGFuZ2VzKCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICAgIH1cclxuXHJcbiAgICBASG9zdExpc3RlbmVyKFwiY2xpY2tcIiwgW1wiJGV2ZW50XCJdKVxyXG4gICAgY2xpY2soZXY6IEV2ZW50KTogdm9pZCB7XHJcbiAgICAgICAgaWYgKGV2KSB7XHJcbiAgICAgICAgICAgIGV2LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgICAgIGV2LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodGhpcy5kaXNhYmxlZCkgcmV0dXJuO1xyXG4gICAgICAgIHRoaXMuY2FsbE1ldGhvZCgpO1xyXG4gICAgfVxyXG5cclxuICAgIGNhbGxNZXRob2QoKTogYm9vbGVhbiB7XHJcbiAgICAgICAgaWYgKHRoaXMubG9hZGluZykgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcclxuICAgICAgICBjb25zdCBtZXRob2QgPSB0aGlzLmdldE1ldGhvZCgpO1xyXG4gICAgICAgIGNvbnN0IHJlc3VsdCA9ICFtZXRob2QgPyBudWxsIDogbWV0aG9kKHRoaXMuY29udGV4dCk7XHJcbiAgICAgICAgaWYgKCEocmVzdWx0IGluc3RhbmNlb2YgUHJvbWlzZSkpIHtcclxuICAgICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmVzdWx0LnRoZW4ocmVzdWx0ID0+IHtcclxuICAgICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICAgIGlmIChyZXN1bHQpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMub25TdWNjZXNzLmVtaXQocmVzdWx0KTtcclxuICAgICAgICAgICAgICAgIHRoaXMudG9hc3Rlci5zdWNjZXNzKHJlc3VsdC5tZXNzYWdlLCByZXN1bHQuY29udGV4dCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9LCByZWFzb24gPT4ge1xyXG4gICAgICAgICAgICBpZiAoIXJlYXNvbiB8fCAhcmVhc29uLm1lc3NhZ2UpXHJcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJSZWFzb24gbXVzdCBpbXBsZW1lbnQgSUFzeW5jTWVzc2FnZSBpbnRlcmZhY2VcIik7XHJcbiAgICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLm9uRXJyb3IuZW1pdChyZWFzb24pO1xyXG4gICAgICAgICAgICB0aGlzLnRvYXN0ZXIuZXJyb3IocmVhc29uLm1lc3NhZ2UsIHJlYXNvbi5jb250ZXh0KTtcclxuICAgICAgICB9KS5maW5hbGx5KCgpID0+IHtcclxuICAgICAgICAgICAgaWYgKCF0aGlzLmNkcltcImRlc3Ryb3llZFwiXSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcbn1cclxuIl19
|
|
@@ -4430,14 +4430,18 @@ class AsyncMethodBase {
|
|
|
4430
4430
|
get isLoading() {
|
|
4431
4431
|
return this.loading;
|
|
4432
4432
|
}
|
|
4433
|
-
constructor(toaster) {
|
|
4433
|
+
constructor(toaster, cdr) {
|
|
4434
4434
|
this.toaster = toaster;
|
|
4435
|
+
this.cdr = cdr;
|
|
4435
4436
|
this.onSuccess = new EventEmitter();
|
|
4436
4437
|
this.onError = new EventEmitter();
|
|
4437
4438
|
}
|
|
4438
4439
|
getMethod() {
|
|
4439
4440
|
return async () => null;
|
|
4440
4441
|
}
|
|
4442
|
+
ngOnChanges() {
|
|
4443
|
+
this.cdr.detectChanges();
|
|
4444
|
+
}
|
|
4441
4445
|
click(ev) {
|
|
4442
4446
|
if (ev) {
|
|
4443
4447
|
ev.preventDefault();
|
|
@@ -4469,11 +4473,15 @@ class AsyncMethodBase {
|
|
|
4469
4473
|
this.loading = false;
|
|
4470
4474
|
this.onError.emit(reason);
|
|
4471
4475
|
this.toaster.error(reason.message, reason.context);
|
|
4476
|
+
}).finally(() => {
|
|
4477
|
+
if (!this.cdr["destroyed"]) {
|
|
4478
|
+
this.cdr.detectChanges();
|
|
4479
|
+
}
|
|
4472
4480
|
});
|
|
4473
4481
|
return true;
|
|
4474
4482
|
}
|
|
4475
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AsyncMethodBase, deps: [{ token: TOASTER_SERVICE }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
4476
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.12", type: AsyncMethodBase, selector: "[__asmb__]", inputs: { disabled: "disabled", context: "context" }, outputs: { onSuccess: "onSuccess", onError: "onError" }, host: { listeners: { "click": "click($event)" }, properties: { "class.disabled": "this.isDisabled", "class.loading": "this.isLoading" } }, ngImport: i0 }); }
|
|
4483
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AsyncMethodBase, deps: [{ token: TOASTER_SERVICE }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
4484
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.12", type: AsyncMethodBase, selector: "[__asmb__]", inputs: { disabled: "disabled", context: "context" }, outputs: { onSuccess: "onSuccess", onError: "onError" }, host: { listeners: { "click": "click($event)" }, properties: { "class.disabled": "this.isDisabled", "class.loading": "this.isLoading" } }, usesOnChanges: true, ngImport: i0 }); }
|
|
4477
4485
|
}
|
|
4478
4486
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AsyncMethodBase, decorators: [{
|
|
4479
4487
|
type: Directive,
|
|
@@ -4483,7 +4491,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
4483
4491
|
}], ctorParameters: () => [{ type: undefined, decorators: [{
|
|
4484
4492
|
type: Inject,
|
|
4485
4493
|
args: [TOASTER_SERVICE]
|
|
4486
|
-
}] }], propDecorators: { disabled: [{
|
|
4494
|
+
}] }, { type: i0.ChangeDetectorRef }], propDecorators: { disabled: [{
|
|
4487
4495
|
type: Input
|
|
4488
4496
|
}], context: [{
|
|
4489
4497
|
type: Input
|