UNPKG

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
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==