right-angled
Version:
Lightweight and easy to use angular data grids. Integrates with your markup and styles rather than generating its own.
114 lines • 12.5 kB
JavaScript
import { Injectable } from '@angular/core';
import * as i0 from "@angular/core";
/**
* Implementation of {@link SubscriptionProxy} to work with any objects with `subscribe/unsubscribe` contracts. This contract is suitable for Observable, for example.
*/
export class PushBasedSubscriptionProxy {
/**
* Returns `true` if this proxy type can subscribe to passed object. `false` otherwise.
*/
static isAcceptable(target) {
return !!target.subscribe;
}
/**
* @inheritdoc
*/
attach(target, completeAction, errorAction) {
return target.subscribe({ error: errorAction, next: completeAction });
}
/**
* @inheritdoc
*/
detach(subscription) {
subscription.unsubscribe();
}
}
/**
* Implementation of {@link SubscriptionProxy} which works with Promise and adds ability to unsubscribe from it.
*/
export class PromiseSubscriptionProxy {
constructor() {
this.isAlive = true;
}
/**
* Returns `true` if this proxy type can subscribe to passed object. `false` otherwise.
*/
static isAcceptable(target) {
return target instanceof Promise;
}
/**
* @inheritdoc
*/
attach(target, completeAction, errorAction) {
return target.then((value) => {
if (this.isAlive) {
completeAction(value);
}
}, (error) => {
if (this.isAlive) {
errorAction(error);
}
});
}
/**
* @inheritdoc
*/
detach(subscription) {
this.isAlive = false;
}
}
/**
* Service to manage async subscriptions which acts as mediator to {@link SubscriptionProxy} contract implementations.
*/
export class AsyncSubscriber {
constructor() {
this.proxy = null;
this.lastTarget = null;
this.subscription = null;
}
/**
* @see {@link SubscriptionProxy.attach}
*/
attach(target, completeAction, errorAction) {
if (this.lastTarget !== null) {
this.destroy();
}
this.lastTarget = target;
this.proxy = this.getProxy(target);
this.subscription = this.proxy.attach(target, completeAction, errorAction);
}
/**
* Detaches from underlying subscription and destroys all internal objects.
*/
destroy() {
if (this.proxy) {
this.proxy.detach(this.subscription);
}
this.proxy = null;
this.lastTarget = null;
this.subscription = null;
}
/**
* @see {@link SubscriptionProxy.detach}
*/
detach() {
if (this.proxy) {
this.proxy.detach(this.subscription);
}
}
getProxy(target) {
if (PromiseSubscriptionProxy.isAcceptable(target)) {
return new PromiseSubscriptionProxy();
}
if (PushBasedSubscriptionProxy.isAcceptable(target)) {
return new PushBasedSubscriptionProxy();
}
throw new Error('Passed object is not subscribable');
}
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AsyncSubscriber, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AsyncSubscriber }); }
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AsyncSubscriber, decorators: [{
type: Injectable
}] });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXN5bmMtc3Vic2NyaWJlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3JpZ2h0LWFuZ2xlZC9zcmMvbGliL2xpc3RzL3Byb3ZpZGVycy9hc3luYy1zdWJzY3JpYmVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBc0IzQzs7R0FFRztBQUNILE1BQU0sT0FBTywwQkFBMEI7SUFDbkM7O09BRUc7SUFDSSxNQUFNLENBQUMsWUFBWSxDQUFDLE1BQVc7UUFDbEMsT0FBTyxDQUFDLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQztJQUM5QixDQUFDO0lBQ0Q7O09BRUc7SUFDSSxNQUFNLENBQUMsTUFBVyxFQUFFLGNBQW1CLEVBQUUsV0FBaUM7UUFDN0UsT0FBTyxNQUFNLENBQUMsU0FBUyxDQUFDLEVBQUUsS0FBSyxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUUsY0FBYyxFQUFFLENBQUMsQ0FBQztJQUMxRSxDQUFDO0lBQ0Q7O09BRUc7SUFDSSxNQUFNLENBQUMsWUFBaUI7UUFDM0IsWUFBWSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQy9CLENBQUM7Q0FDSjtBQUVEOztHQUVHO0FBQ0gsTUFBTSxPQUFPLHdCQUF3QjtJQUFyQztRQUNZLFlBQU8sR0FBRyxJQUFJLENBQUM7SUE4QjNCLENBQUM7SUE3Qkc7O09BRUc7SUFDSSxNQUFNLENBQUMsWUFBWSxDQUFDLE1BQVc7UUFDbEMsT0FBTyxNQUFNLFlBQVksT0FBTyxDQUFDO0lBQ3JDLENBQUM7SUFDRDs7T0FFRztJQUNJLE1BQU0sQ0FBQyxNQUFvQixFQUFFLGNBQW1DLEVBQUUsV0FBaUM7UUFDdEcsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUNkLENBQUMsS0FBVSxFQUFFLEVBQUU7WUFDWCxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUU7Z0JBQ2QsY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDO2FBQ3pCO1FBQ0wsQ0FBQyxFQUNELENBQUMsS0FBVSxFQUFFLEVBQUU7WUFDWCxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUU7Z0JBQ2QsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO2FBQ3RCO1FBQ0wsQ0FBQyxDQUNKLENBQUM7SUFDTixDQUFDO0lBQ0Q7O09BRUc7SUFDSSxNQUFNLENBQUMsWUFBaUI7UUFDM0IsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7SUFDekIsQ0FBQztDQUNKO0FBRUQ7O0dBRUc7QUFFSCxNQUFNLE9BQU8sZUFBZTtJQUQ1QjtRQUVZLFVBQUssR0FBc0IsSUFBSSxDQUFDO1FBQ2hDLGVBQVUsR0FBUSxJQUFJLENBQUM7UUFDdkIsaUJBQVksR0FBUSxJQUFJLENBQUM7S0F5Q3BDO0lBdkNHOztPQUVHO0lBQ0ksTUFBTSxDQUFDLE1BQVcsRUFBRSxjQUFtQyxFQUFFLFdBQWlDO1FBQzdGLElBQUksSUFBSSxDQUFDLFVBQVUsS0FBSyxJQUFJLEVBQUU7WUFDMUIsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1NBQ2xCO1FBQ0QsSUFBSSxDQUFDLFVBQVUsR0FBRyxNQUFNLENBQUM7UUFDekIsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ25DLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLGNBQWMsRUFBRSxXQUFXLENBQUMsQ0FBQztJQUMvRSxDQUFDO0lBQ0Q7O09BRUc7SUFDSSxPQUFPO1FBQ1YsSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFO1lBQ1osSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO1NBQ3hDO1FBQ0QsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7UUFDbEIsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7UUFDdkIsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUM7SUFDN0IsQ0FBQztJQUNEOztPQUVHO0lBQ0ksTUFBTTtRQUNULElBQUksSUFBSSxDQUFDLEtBQUssRUFBRTtZQUNaLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztTQUN4QztJQUNMLENBQUM7SUFDTyxRQUFRLENBQUMsTUFBVztRQUN4QixJQUFJLHdCQUF3QixDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsRUFBRTtZQUMvQyxPQUFPLElBQUksd0JBQXdCLEVBQUUsQ0FBQztTQUN6QztRQUNELElBQUksMEJBQTBCLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxFQUFFO1lBQ2pELE9BQU8sSUFBSSwwQkFBMEIsRUFBRSxDQUFDO1NBQzNDO1FBQ0QsTUFBTSxJQUFJLEtBQUssQ0FBQyxtQ0FBbUMsQ0FBQyxDQUFDO0lBQ3pELENBQUM7K0dBM0NRLGVBQWU7bUhBQWYsZUFBZTs7NEZBQWYsZUFBZTtrQkFEM0IsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuLy8gdHNsaW50OmRpc2FibGU6bWF4LWNsYXNzZXMtcGVyLWZpbGVcclxuXHJcbi8qKlxyXG4gKiBDb250cmFjdCB0byBpbXBsZW1lbnQgYWJzdHJhY3RlZCBzdWJzY3JpcHRpb24gcHJveHkgd2hpY2ggaGlkZXMgYW55IGRldGFpbHMgb2YgdW5kZXJseWluZyBzdWJzY3JpcHRpb25cclxuICovXHJcbmV4cG9ydCBpbnRlcmZhY2UgU3Vic2NyaXB0aW9uUHJveHkge1xyXG4gICAgLyoqXHJcbiAgICAgKiBTdWJzY3JpYmVzIHRvIHBhc3NlZCBvYmplY3RcclxuICAgICAqIEBwYXJhbSB0YXJnZXQgb2JqZWN0IHRvIHN1YnNjcmliZVxyXG4gICAgICogQHBhcmFtIGNvbXBsZXRlQWN0aW9uIGFjdGlvbiB0byBjYWxsIG9uIHVuZGVybHlpbmcgc3Vic2NyaXB0aW9uIHN1Y2Nlc3NmdWwgY29tcGxldGlvblxyXG4gICAgICogQHBhcmFtIGVycm9yQWN0aW9uIGFjdGlvbiB0byBjYWxsIG9uIHVuZGVybHlpbmcgc3Vic2NyaXB0aW9uIGVycm9yXHJcbiAgICAgKi9cclxuXHJcbiAgICBhdHRhY2godGFyZ2V0OiBhbnksIGNvbXBsZXRlQWN0aW9uOiBhbnksIGVycm9yQWN0aW9uOiBhbnkpOiBhbnk7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBEZXRhY2hlcyBmcm9tIHVuZGVybHlpbmcgc3Vic2NyaXB0aW9uXHJcbiAgICAgKi9cclxuICAgIGRldGFjaChzdWJzY3JpcHRpb246IGFueSk6IHZvaWQ7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBJbXBsZW1lbnRhdGlvbiBvZiB7QGxpbmsgU3Vic2NyaXB0aW9uUHJveHl9IHRvIHdvcmsgd2l0aCBhbnkgb2JqZWN0cyB3aXRoIGBzdWJzY3JpYmUvdW5zdWJzY3JpYmVgIGNvbnRyYWN0cy4gVGhpcyBjb250cmFjdCBpcyBzdWl0YWJsZSBmb3IgT2JzZXJ2YWJsZSwgZm9yIGV4YW1wbGUuXHJcbiAqL1xyXG5leHBvcnQgY2xhc3MgUHVzaEJhc2VkU3Vic2NyaXB0aW9uUHJveHkgaW1wbGVtZW50cyBTdWJzY3JpcHRpb25Qcm94eSB7XHJcbiAgICAvKipcclxuICAgICAqIFJldHVybnMgYHRydWVgIGlmIHRoaXMgcHJveHkgdHlwZSBjYW4gc3Vic2NyaWJlIHRvIHBhc3NlZCBvYmplY3QuIGBmYWxzZWAgb3RoZXJ3aXNlLlxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgc3RhdGljIGlzQWNjZXB0YWJsZSh0YXJnZXQ6IGFueSk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiAhIXRhcmdldC5zdWJzY3JpYmU7XHJcbiAgICB9XHJcbiAgICAvKipcclxuICAgICAqIEBpbmhlcml0ZG9jXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBhdHRhY2godGFyZ2V0OiBhbnksIGNvbXBsZXRlQWN0aW9uOiBhbnksIGVycm9yQWN0aW9uPzogKGVycm9yOiBhbnkpID0+IGFueSk6IGFueSB7XHJcbiAgICAgICAgcmV0dXJuIHRhcmdldC5zdWJzY3JpYmUoeyBlcnJvcjogZXJyb3JBY3Rpb24sIG5leHQ6IGNvbXBsZXRlQWN0aW9uIH0pO1xyXG4gICAgfVxyXG4gICAgLyoqXHJcbiAgICAgKiBAaW5oZXJpdGRvY1xyXG4gICAgICovXHJcbiAgICBwdWJsaWMgZGV0YWNoKHN1YnNjcmlwdGlvbjogYW55KTogdm9pZCB7XHJcbiAgICAgICAgc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XHJcbiAgICB9XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBJbXBsZW1lbnRhdGlvbiBvZiB7QGxpbmsgU3Vic2NyaXB0aW9uUHJveHl9IHdoaWNoIHdvcmtzIHdpdGggUHJvbWlzZSBhbmQgYWRkcyBhYmlsaXR5IHRvIHVuc3Vic2NyaWJlIGZyb20gaXQuXHJcbiAqL1xyXG5leHBvcnQgY2xhc3MgUHJvbWlzZVN1YnNjcmlwdGlvblByb3h5IGltcGxlbWVudHMgU3Vic2NyaXB0aW9uUHJveHkge1xyXG4gICAgcHJpdmF0ZSBpc0FsaXZlID0gdHJ1ZTtcclxuICAgIC8qKlxyXG4gICAgICogUmV0dXJucyBgdHJ1ZWAgaWYgdGhpcyBwcm94eSB0eXBlIGNhbiBzdWJzY3JpYmUgdG8gcGFzc2VkIG9iamVjdC4gYGZhbHNlYCBvdGhlcndpc2UuXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBzdGF0aWMgaXNBY2NlcHRhYmxlKHRhcmdldDogYW55KTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIHRhcmdldCBpbnN0YW5jZW9mIFByb21pc2U7XHJcbiAgICB9XHJcbiAgICAvKipcclxuICAgICAqIEBpbmhlcml0ZG9jXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBhdHRhY2godGFyZ2V0OiBQcm9taXNlPGFueT4sIGNvbXBsZXRlQWN0aW9uOiAodmFsdWU6IGFueSkgPT4gYW55LCBlcnJvckFjdGlvbj86IChlcnJvcjogYW55KSA9PiBhbnkpOiBhbnkge1xyXG4gICAgICAgIHJldHVybiB0YXJnZXQudGhlbihcclxuICAgICAgICAgICAgKHZhbHVlOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmlzQWxpdmUpIHtcclxuICAgICAgICAgICAgICAgICAgICBjb21wbGV0ZUFjdGlvbih2YWx1ZSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIChlcnJvcjogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5pc0FsaXZlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgZXJyb3JBY3Rpb24oZXJyb3IpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgKTtcclxuICAgIH1cclxuICAgIC8qKlxyXG4gICAgICogQGluaGVyaXRkb2NcclxuICAgICAqL1xyXG4gICAgcHVibGljIGRldGFjaChzdWJzY3JpcHRpb246IGFueSk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuaXNBbGl2ZSA9IGZhbHNlO1xyXG4gICAgfVxyXG59XHJcblxyXG4vKipcclxuICogU2VydmljZSB0byBtYW5hZ2UgYXN5bmMgc3Vic2NyaXB0aW9ucyB3aGljaCBhY3RzIGFzIG1lZGlhdG9yIHRvIHtAbGluayBTdWJzY3JpcHRpb25Qcm94eX0gY29udHJhY3QgaW1wbGVtZW50YXRpb25zLlxyXG4gKi9cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgQXN5bmNTdWJzY3JpYmVyIHtcclxuICAgIHByaXZhdGUgcHJveHk6IFN1YnNjcmlwdGlvblByb3h5ID0gbnVsbDtcclxuICAgIHByaXZhdGUgbGFzdFRhcmdldDogYW55ID0gbnVsbDtcclxuICAgIHByaXZhdGUgc3Vic2NyaXB0aW9uOiBhbnkgPSBudWxsO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogQHNlZSB7QGxpbmsgU3Vic2NyaXB0aW9uUHJveHkuYXR0YWNofVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgYXR0YWNoKHRhcmdldDogYW55LCBjb21wbGV0ZUFjdGlvbjogKHZhbHVlOiBhbnkpID0+IGFueSwgZXJyb3JBY3Rpb24/OiAoZXJyb3I6IGFueSkgPT4gYW55KTogdm9pZCB7XHJcbiAgICAgICAgaWYgKHRoaXMubGFzdFRhcmdldCAhPT0gbnVsbCkge1xyXG4gICAgICAgICAgICB0aGlzLmRlc3Ryb3koKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5sYXN0VGFyZ2V0ID0gdGFyZ2V0O1xyXG4gICAgICAgIHRoaXMucHJveHkgPSB0aGlzLmdldFByb3h5KHRhcmdldCk7XHJcbiAgICAgICAgdGhpcy5zdWJzY3JpcHRpb24gPSB0aGlzLnByb3h5LmF0dGFjaCh0YXJnZXQsIGNvbXBsZXRlQWN0aW9uLCBlcnJvckFjdGlvbik7XHJcbiAgICB9XHJcbiAgICAvKipcclxuICAgICAqIERldGFjaGVzIGZyb20gdW5kZXJseWluZyBzdWJzY3JpcHRpb24gYW5kIGRlc3Ryb3lzIGFsbCBpbnRlcm5hbCBvYmplY3RzLlxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgZGVzdHJveSgpOiB2b2lkIHtcclxuICAgICAgICBpZiAodGhpcy5wcm94eSkge1xyXG4gICAgICAgICAgICB0aGlzLnByb3h5LmRldGFjaCh0aGlzLnN1YnNjcmlwdGlvbik7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMucHJveHkgPSBudWxsO1xyXG4gICAgICAgIHRoaXMubGFzdFRhcmdldCA9IG51bGw7XHJcbiAgICAgICAgdGhpcy5zdWJzY3JpcHRpb24gPSBudWxsO1xyXG4gICAgfVxyXG4gICAgLyoqXHJcbiAgICAgKiBAc2VlIHtAbGluayBTdWJzY3JpcHRpb25Qcm94eS5kZXRhY2h9XHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBkZXRhY2goKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKHRoaXMucHJveHkpIHtcclxuICAgICAgICAgICAgdGhpcy5wcm94eS5kZXRhY2godGhpcy5zdWJzY3JpcHRpb24pO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHByaXZhdGUgZ2V0UHJveHkodGFyZ2V0OiBhbnkpOiBTdWJzY3JpcHRpb25Qcm94eSB7XHJcbiAgICAgICAgaWYgKFByb21pc2VTdWJzY3JpcHRpb25Qcm94eS5pc0FjY2VwdGFibGUodGFyZ2V0KSkge1xyXG4gICAgICAgICAgICByZXR1cm4gbmV3IFByb21pc2VTdWJzY3JpcHRpb25Qcm94eSgpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoUHVzaEJhc2VkU3Vic2NyaXB0aW9uUHJveHkuaXNBY2NlcHRhYmxlKHRhcmdldCkpIHtcclxuICAgICAgICAgICAgcmV0dXJuIG5ldyBQdXNoQmFzZWRTdWJzY3JpcHRpb25Qcm94eSgpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1Bhc3NlZCBvYmplY3QgaXMgbm90IHN1YnNjcmliYWJsZScpO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==