@netgrif/components-core
Version:
Netgrif Application engine frontend core Angular library
34 lines • 3.69 kB
JavaScript
/**
* Wrapper for a scheduled event
*/
export class QueuedEvent {
_isRelevant;
_execute;
_revert;
/**
* @param _isRelevant a method that determines if the event is still relevant at the time of its execution.
* Returns `true` if the event is still relevant (e.g. the set field is still editable). Returns `false` otherwise.
* @param _execute executes the scheduled event and then performs the provided after action
* @param _revert reverts the scheduled event and then performs the provided after action
*/
constructor(_isRelevant, _execute, _revert = (a) => {
a.resolve(true);
}) {
this._isRelevant = _isRelevant;
this._execute = _execute;
this._revert = _revert;
}
/**
* Executes the event if it is still relevant, or reverts it if it is not.
* Performs the provided after action, once the event is resolved.
*/
resolve(afterAction) {
if (this._isRelevant()) {
this._execute(afterAction);
}
else {
this._revert(afterAction);
}
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVldWVkLWV2ZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmV0Z3JpZi1jb21wb25lbnRzLWNvcmUvc3JjL2xpYi9ldmVudC1xdWV1ZS9tb2RlbC9xdWV1ZWQtZXZlbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUE7O0dBRUc7QUFDSCxNQUFNLE9BQU8sV0FBVztJQVFFO0lBQ0E7SUFDQTtJQVJ0Qjs7Ozs7T0FLRztJQUNILFlBQXNCLFdBQTBCLEVBQzFCLFFBQTRDLEVBQzVDLFVBQThDLENBQUMsQ0FBQyxFQUFFLEVBQUU7UUFDMUQsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNwQixDQUFDO1FBSlMsZ0JBQVcsR0FBWCxXQUFXLENBQWU7UUFDMUIsYUFBUSxHQUFSLFFBQVEsQ0FBb0M7UUFDNUMsWUFBTyxHQUFQLE9BQU8sQ0FFaEI7SUFDYixDQUFDO0lBRUQ7OztPQUdHO0lBQ0ksT0FBTyxDQUFDLFdBQXdCO1FBQ25DLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRSxFQUFFO1lBQ3BCLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLENBQUM7U0FDOUI7YUFBTTtZQUNILElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLENBQUM7U0FDN0I7SUFDTCxDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0FmdGVyQWN0aW9ufSBmcm9tICcuLi8uLi91dGlsaXR5L2NhbGwtY2hhaW4vYWZ0ZXItYWN0aW9uJztcblxuLyoqXG4gKiBXcmFwcGVyIGZvciBhIHNjaGVkdWxlZCBldmVudFxuICovXG5leHBvcnQgY2xhc3MgUXVldWVkRXZlbnQge1xuXG4gICAgLyoqXG4gICAgICogQHBhcmFtIF9pc1JlbGV2YW50IGEgbWV0aG9kIHRoYXQgZGV0ZXJtaW5lcyBpZiB0aGUgZXZlbnQgaXMgc3RpbGwgcmVsZXZhbnQgYXQgdGhlIHRpbWUgb2YgaXRzIGV4ZWN1dGlvbi5cbiAgICAgKiBSZXR1cm5zIGB0cnVlYCBpZiB0aGUgZXZlbnQgaXMgc3RpbGwgcmVsZXZhbnQgKGUuZy4gdGhlIHNldCBmaWVsZCBpcyBzdGlsbCBlZGl0YWJsZSkuIFJldHVybnMgYGZhbHNlYCBvdGhlcndpc2UuXG4gICAgICogQHBhcmFtIF9leGVjdXRlIGV4ZWN1dGVzIHRoZSBzY2hlZHVsZWQgZXZlbnQgYW5kIHRoZW4gcGVyZm9ybXMgdGhlIHByb3ZpZGVkIGFmdGVyIGFjdGlvblxuICAgICAqIEBwYXJhbSBfcmV2ZXJ0IHJldmVydHMgdGhlIHNjaGVkdWxlZCBldmVudCBhbmQgdGhlbiBwZXJmb3JtcyB0aGUgcHJvdmlkZWQgYWZ0ZXIgYWN0aW9uXG4gICAgICovXG4gICAgY29uc3RydWN0b3IocHJvdGVjdGVkIF9pc1JlbGV2YW50OiAoKSA9PiBib29sZWFuLFxuICAgICAgICAgICAgICAgIHByb3RlY3RlZCBfZXhlY3V0ZTogKGFmdGVyQWN0aW9uOiBBZnRlckFjdGlvbikgPT4gdm9pZCxcbiAgICAgICAgICAgICAgICBwcm90ZWN0ZWQgX3JldmVydDogKGFmdGVyQWN0aW9uOiBBZnRlckFjdGlvbikgPT4gdm9pZCA9IChhKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGEucmVzb2x2ZSh0cnVlKTtcbiAgICAgICAgICAgICAgICB9KSB7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRXhlY3V0ZXMgdGhlIGV2ZW50IGlmIGl0IGlzIHN0aWxsIHJlbGV2YW50LCBvciByZXZlcnRzIGl0IGlmIGl0IGlzIG5vdC5cbiAgICAgKiBQZXJmb3JtcyB0aGUgcHJvdmlkZWQgYWZ0ZXIgYWN0aW9uLCBvbmNlIHRoZSBldmVudCBpcyByZXNvbHZlZC5cbiAgICAgKi9cbiAgICBwdWJsaWMgcmVzb2x2ZShhZnRlckFjdGlvbjogQWZ0ZXJBY3Rpb24pOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuX2lzUmVsZXZhbnQoKSkge1xuICAgICAgICAgICAgdGhpcy5fZXhlY3V0ZShhZnRlckFjdGlvbik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl9yZXZlcnQoYWZ0ZXJBY3Rpb24pO1xuICAgICAgICB9XG4gICAgfVxufVxuIl19