UNPKG

@bespunky/angular-zen

Version:

The Angular tools you always wished were there.

66 lines 8.08 kB
import { Directive, Input } from '@angular/core'; import { ObserveBaseDirective } from '../abstraction/observe-base.directive'; import * as i0 from "@angular/core"; /** * Documentation in {@link ObserveDirective.observe} to allow in-template tooltips. * * @export * @class ObserveDirective * @extends {ObserveBaseDirective<T, EmittedTypeOf<T>, ObserveContext<T>>} * @template T The type of observable received by the directive. */ export class ObserveDirective extends ObserveBaseDirective { constructor() { super(...arguments); this.selector = 'observe'; } /** * Tracks an observable and updates the template with its emitted value on each emission. * * Any template assigned with the directive will render immediately, and its view context will be updated with the emitted value on * each emission. The directive will be responsible for subscribing on init and unsubscribing on destroy. * * ## Features * * #### Shared observable * The watched observable will automatically be multicasted so that any child observables created by the template will use the same * stream. * * The shared observable can be accessed using the `let source = source` microsyntax. * * #### Observer events * Whenever the observable changes state or emits a value, the corresponding event is emitted: * `nextCalled` - A value has been emitted. `$event` will be the emitted value. * `errorCalled` - An error has occured in the pipeline. `$event` will be the error. * `completeCalled` - The observable has completed. `$event` will be void. * * > Because of limitations to Angular's Structural Directives, in order to bind the events the desugared syntax must be used. * This, for example, **will trigger** the event: * > ```html * ><ng-template [observe]="x$" let-source="source" (nextCalled)="onNext($event)"> * > ... * ></ng-template> * > ``` * > * >This **will NOT trigger** the event: * >```html * > <div *observe="x$; let source = source" (nextCalled)="onNext($event)">...</div> * >``` */ set observe(value) { this.input.next(value); } static ngTemplateContextGuard(directive, context) { return true; } observeInput(input) { return input; } } ObserveDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: ObserveDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive }); ObserveDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.2.12", type: ObserveDirective, selector: "[observe]", inputs: { observe: "observe" }, usesInheritance: true, ngImport: i0 }); i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: ObserveDirective, decorators: [{ type: Directive, args: [{ selector: '[observe]' }] }], propDecorators: { observe: [{ type: Input }] } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2JzZXJ2ZS5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItemVuL2NvcmUvc3JjL3J4anMvb2JzZXJ2ZS9kaXJlY3RpdmVzL29ic2VydmUuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRWpELE9BQU8sRUFBRSxvQkFBb0IsRUFBbUIsTUFBTSx1Q0FBdUMsQ0FBQzs7QUFPOUY7Ozs7Ozs7R0FPRztBQUlILE1BQU0sT0FBTyxnQkFDUixTQUFRLG9CQUE0RDtJQUp6RTs7UUFNYyxhQUFRLEdBQUcsU0FBUyxDQUFDO0tBMkNsQztJQXpDRzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7T0FnQ0c7SUFDSCxJQUFvQixPQUFPLENBQUMsS0FBUSxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUVqRSxNQUFNLENBQUMsc0JBQXNCLENBQWdDLFNBQThCLEVBQUUsT0FBZ0IsSUFBa0MsT0FBTyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBRW5KLFlBQVksQ0FBQyxLQUFRO1FBRTNCLE9BQU8sS0FBcUMsQ0FBQztJQUNqRCxDQUFDOzs4R0E3Q1EsZ0JBQWdCO2tHQUFoQixnQkFBZ0I7NEZBQWhCLGdCQUFnQjtrQkFINUIsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsV0FBVztpQkFDeEI7OEJBdUN1QixPQUFPO3NCQUExQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgT2JzZXJ2YWJsZSAgICAgICB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgRGlyZWN0aXZlLCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBPYnNlcnZlQmFzZURpcmVjdGl2ZSAgICAgICAgICAgICAgICAgIH0gZnJvbSAnLi4vYWJzdHJhY3Rpb24vb2JzZXJ2ZS1iYXNlLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBFbWl0dGVkVHlwZU9mLCBSZXNvbHZlZE9ic2VydmVDb250ZXh0IH0gZnJvbSAnLi4vYWJzdHJhY3Rpb24vdHlwZXMvZ2VuZXJhbCc7XG5cbnR5cGUgT2JzZXJ2ZUNvbnRleHQ8VCBleHRlbmRzIE9ic2VydmFibGU8dW5rbm93bj4+ID0gUmVzb2x2ZWRPYnNlcnZlQ29udGV4dDxFbWl0dGVkVHlwZU9mPFQ+PiAmIHtcbiAgICBvYnNlcnZlOiBFbWl0dGVkVHlwZU9mPFQ+XG59O1xuXG4vKipcbiAqIERvY3VtZW50YXRpb24gaW4ge0BsaW5rIE9ic2VydmVEaXJlY3RpdmUub2JzZXJ2ZX0gdG8gYWxsb3cgaW4tdGVtcGxhdGUgdG9vbHRpcHMuXG4gKlxuICogQGV4cG9ydFxuICogQGNsYXNzIE9ic2VydmVEaXJlY3RpdmVcbiAqIEBleHRlbmRzIHtPYnNlcnZlQmFzZURpcmVjdGl2ZTxULCBFbWl0dGVkVHlwZU9mPFQ+LCBPYnNlcnZlQ29udGV4dDxUPj59XG4gKiBAdGVtcGxhdGUgVCBUaGUgdHlwZSBvZiBvYnNlcnZhYmxlIHJlY2VpdmVkIGJ5IHRoZSBkaXJlY3RpdmUuXG4gKi9cbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiAnW29ic2VydmVdJ1xufSlcbmV4cG9ydCBjbGFzcyBPYnNlcnZlRGlyZWN0aXZlPFQgZXh0ZW5kcyBPYnNlcnZhYmxlPHVua25vd24+PlxuICAgICBleHRlbmRzIE9ic2VydmVCYXNlRGlyZWN0aXZlPFQsIEVtaXR0ZWRUeXBlT2Y8VD4sIE9ic2VydmVDb250ZXh0PFQ+Plxue1xuICAgIHByb3RlY3RlZCBzZWxlY3RvciA9ICdvYnNlcnZlJztcblxuICAgIC8qKlxuICAgICAqIFRyYWNrcyBhbiBvYnNlcnZhYmxlIGFuZCB1cGRhdGVzIHRoZSB0ZW1wbGF0ZSB3aXRoIGl0cyBlbWl0dGVkIHZhbHVlIG9uIGVhY2ggZW1pc3Npb24uXG4gICAgICpcbiAgICAgKiBBbnkgdGVtcGxhdGUgYXNzaWduZWQgd2l0aCB0aGUgZGlyZWN0aXZlIHdpbGwgcmVuZGVyIGltbWVkaWF0ZWx5LCBhbmQgaXRzIHZpZXcgY29udGV4dCB3aWxsIGJlIHVwZGF0ZWQgd2l0aCB0aGUgZW1pdHRlZCB2YWx1ZSBvblxuICAgICAqIGVhY2ggZW1pc3Npb24uIFRoZSBkaXJlY3RpdmUgd2lsbCBiZSByZXNwb25zaWJsZSBmb3Igc3Vic2NyaWJpbmcgb24gaW5pdCBhbmQgdW5zdWJzY3JpYmluZyBvbiBkZXN0cm95LlxuICAgICAqIFxuICAgICAqICMjIEZlYXR1cmVzXG4gICAgICogXG4gICAgICogIyMjIyBTaGFyZWQgb2JzZXJ2YWJsZVxuICAgICAqIFRoZSB3YXRjaGVkIG9ic2VydmFibGUgd2lsbCBhdXRvbWF0aWNhbGx5IGJlIG11bHRpY2FzdGVkIHNvIHRoYXQgYW55IGNoaWxkIG9ic2VydmFibGVzIGNyZWF0ZWQgYnkgdGhlIHRlbXBsYXRlIHdpbGwgdXNlIHRoZSBzYW1lXG4gICAgICogc3RyZWFtLlxuICAgICAqIFxuICAgICAqIFRoZSBzaGFyZWQgb2JzZXJ2YWJsZSBjYW4gYmUgYWNjZXNzZWQgdXNpbmcgdGhlIGBsZXQgc291cmNlID0gc291cmNlYCBtaWNyb3N5bnRheC5cbiAgICAgKiBcbiAgICAgKiAjIyMjIE9ic2VydmVyIGV2ZW50c1xuICAgICAqIFdoZW5ldmVyIHRoZSBvYnNlcnZhYmxlIGNoYW5nZXMgc3RhdGUgb3IgZW1pdHMgYSB2YWx1ZSwgdGhlIGNvcnJlc3BvbmRpbmcgZXZlbnQgaXMgZW1pdHRlZDogIFxuICAgICAqIGBuZXh0Q2FsbGVkYCAtIEEgdmFsdWUgaGFzIGJlZW4gZW1pdHRlZC4gYCRldmVudGAgd2lsbCBiZSB0aGUgZW1pdHRlZCB2YWx1ZS4gIFxuICAgICAqIGBlcnJvckNhbGxlZGAgLSBBbiBlcnJvciBoYXMgb2NjdXJlZCBpbiB0aGUgcGlwZWxpbmUuIGAkZXZlbnRgIHdpbGwgYmUgdGhlIGVycm9yLiAgXG4gICAgICogYGNvbXBsZXRlQ2FsbGVkYCAtIFRoZSBvYnNlcnZhYmxlIGhhcyBjb21wbGV0ZWQuIGAkZXZlbnRgIHdpbGwgYmUgdm9pZC5cbiAgICAgKlxuICAgICAqID4gQmVjYXVzZSBvZiBsaW1pdGF0aW9ucyB0byBBbmd1bGFyJ3MgU3RydWN0dXJhbCBEaXJlY3RpdmVzLCBpbiBvcmRlciB0byBiaW5kIHRoZSBldmVudHMgdGhlIGRlc3VnYXJlZCBzeW50YXggbXVzdCBiZSB1c2VkLlxuICAgICAqIFRoaXMsIGZvciBleGFtcGxlLCAqKndpbGwgdHJpZ2dlcioqIHRoZSBldmVudDpcbiAgICAgKiA+IGBgYGh0bWxcbiAgICAgKiA+PG5nLXRlbXBsYXRlIFtvYnNlcnZlXT1cIngkXCIgbGV0LXNvdXJjZT1cInNvdXJjZVwiIChuZXh0Q2FsbGVkKT1cIm9uTmV4dCgkZXZlbnQpXCI+XG4gICAgICogPiAgICAuLi5cbiAgICAgKiA+PC9uZy10ZW1wbGF0ZT5cbiAgICAgKiA+IGBgYFxuICAgICAqID5cbiAgICAgKiA+VGhpcyAqKndpbGwgTk9UIHRyaWdnZXIqKiB0aGUgZXZlbnQ6XG4gICAgICogPmBgYGh0bWxcbiAgICAgKiA+IDxkaXYgKm9ic2VydmU9XCJ4JDsgbGV0IHNvdXJjZSA9IHNvdXJjZVwiIChuZXh0Q2FsbGVkKT1cIm9uTmV4dCgkZXZlbnQpXCI+Li4uPC9kaXY+XG4gICAgICogPmBgYFxuICAgICAqL1xuICAgIEBJbnB1dCgpIHB1YmxpYyBzZXQgb2JzZXJ2ZSh2YWx1ZTogVCkgeyB0aGlzLmlucHV0Lm5leHQodmFsdWUpOyB9XG4gICAgXG4gICAgc3RhdGljIG5nVGVtcGxhdGVDb250ZXh0R3VhcmQ8VCBleHRlbmRzIE9ic2VydmFibGU8dW5rbm93bj4+KGRpcmVjdGl2ZTogT2JzZXJ2ZURpcmVjdGl2ZTxUPiwgY29udGV4dDogdW5rbm93bik6IGNvbnRleHQgaXMgT2JzZXJ2ZUNvbnRleHQ8VD4geyByZXR1cm4gdHJ1ZTsgfVxuICAgIFxuICAgIHByb3RlY3RlZCBvYnNlcnZlSW5wdXQoaW5wdXQ6IFQpOiBPYnNlcnZhYmxlPEVtaXR0ZWRUeXBlT2Y8VD4+XG4gICAge1xuICAgICAgICByZXR1cm4gaW5wdXQgYXMgT2JzZXJ2YWJsZTxFbWl0dGVkVHlwZU9mPFQ+PjtcbiAgICB9XG59XG4iXX0=