@bespunky/angular-zen
Version:
The Angular tools you always wished were there.
36 lines • 4.59 kB
JavaScript
import { Directive } from '@angular/core';
import { ObserveBaseDirective } from './observe-base.directive';
import * as i0 from "@angular/core";
/**
* The base class for `*observe` directives combining observables using a map of observable values (i.e. { x: x$, y: y$ }).
*
* Emitted values will be available as the implicit context values but will also be spread into the context by key.
* Meaning, this would work:
* ```html
* <div *observeXXX="{ x: x$, y: y$ } as result">{{result.x}}</div>
* ```
*
* And this also:
* ```
* <div *observeXXX="{ x: x$, y: y$ }; let x = x">{{x}}</div>
* ```
*
* @export
* @abstract
* @class ObserveMapDirective
* @extends {ObserveBaseDirective<TInput, EmittedMapOf<TInput>, TContext>}
* @template TInput The type of observable map.
* @template TContext The the of context the directive will provide to the view.
*/
export class ObserveMapDirective extends ObserveBaseDirective {
createViewContext(data) {
// Spread the values emitted from the observable to allow `let` microsyntax and directly accessing them
return { ...super.createViewContext(data), ...data.value };
}
}
ObserveMapDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: ObserveMapDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive });
ObserveMapDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.2.12", type: ObserveMapDirective, usesInheritance: true, ngImport: i0 });
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: ObserveMapDirective, decorators: [{
type: Directive
}] });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2JzZXJ2ZS1tYXAtYmFzZS5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItemVuL2NvcmUvc3JjL3J4anMvb2JzZXJ2ZS9hYnN0cmFjdGlvbi9vYnNlcnZlLW1hcC1iYXNlLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFHLE1BQU0sZUFBZSxDQUFDO0FBRzNDLE9BQU8sRUFBRSxvQkFBb0IsRUFBNEIsTUFBTSwwQkFBMEIsQ0FBQzs7QUFHMUY7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBb0JHO0FBRUgsTUFBTSxPQUFnQixtQkFDUixTQUFRLG9CQUE0RDtJQUUzRCxpQkFBaUIsQ0FBQyxJQUF5RjtRQUUxSCx1R0FBdUc7UUFDdkcsT0FBTyxFQUFFLEdBQUcsS0FBSyxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxFQUFHLEdBQUcsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ2hFLENBQUM7O2lIQVBpQixtQkFBbUI7cUdBQW5CLG1CQUFtQjs0RkFBbkIsbUJBQW1CO2tCQUR4QyxTQUFTIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlICB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBPYnNlcnZlQmFzZURpcmVjdGl2ZSAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZnJvbSAnLi9vYnNlcnZlLWJhc2UuZGlyZWN0aXZlJztcbmltcG9ydCB7IE9ic2VydmFibGVNYXAsIEVtaXR0ZWRNYXBPZiwgT2JzZXJ2ZU1hcENvbnRleHQgfSBmcm9tICcuL3R5cGVzL21hcHMnO1xuXG4vKipcbiAqIFRoZSBiYXNlIGNsYXNzIGZvciBgKm9ic2VydmVgIGRpcmVjdGl2ZXMgY29tYmluaW5nIG9ic2VydmFibGVzIHVzaW5nIGEgbWFwIG9mIG9ic2VydmFibGUgdmFsdWVzIChpLmUuIHsgeDogeCQsIHk6IHkkIH0pLlxuICpcbiAqIEVtaXR0ZWQgdmFsdWVzIHdpbGwgYmUgYXZhaWxhYmxlIGFzIHRoZSBpbXBsaWNpdCBjb250ZXh0IHZhbHVlcyBidXQgd2lsbCBhbHNvIGJlIHNwcmVhZCBpbnRvIHRoZSBjb250ZXh0IGJ5IGtleS5cbiAqIE1lYW5pbmcsIHRoaXMgd291bGQgd29yazpcbiAqIGBgYGh0bWxcbiAqIDxkaXYgKm9ic2VydmVYWFg9XCJ7IHg6IHgkLCB5OiB5JCB9IGFzIHJlc3VsdFwiPnt7cmVzdWx0Lnh9fTwvZGl2PlxuICogYGBgXG4gKiBcbiAqIEFuZCB0aGlzIGFsc286XG4gKiBgYGBcbiAqIDxkaXYgKm9ic2VydmVYWFg9XCJ7IHg6IHgkLCB5OiB5JCB9OyBsZXQgeCA9IHhcIj57e3h9fTwvZGl2PlxuICogYGBgXG4gKiBcbiAqIEBleHBvcnRcbiAqIEBhYnN0cmFjdFxuICogQGNsYXNzIE9ic2VydmVNYXBEaXJlY3RpdmVcbiAqIEBleHRlbmRzIHtPYnNlcnZlQmFzZURpcmVjdGl2ZTxUSW5wdXQsIEVtaXR0ZWRNYXBPZjxUSW5wdXQ+LCBUQ29udGV4dD59XG4gKiBAdGVtcGxhdGUgVElucHV0IFRoZSB0eXBlIG9mIG9ic2VydmFibGUgbWFwLlxuICogQHRlbXBsYXRlIFRDb250ZXh0IFRoZSB0aGUgb2YgY29udGV4dCB0aGUgZGlyZWN0aXZlIHdpbGwgcHJvdmlkZSB0byB0aGUgdmlldy5cbiAqL1xuQERpcmVjdGl2ZSgpXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgT2JzZXJ2ZU1hcERpcmVjdGl2ZTxUSW5wdXQgZXh0ZW5kcyBPYnNlcnZhYmxlTWFwLCBUQ29udGV4dCBleHRlbmRzIE9ic2VydmVNYXBDb250ZXh0PFRJbnB1dD4+XG4gICAgICAgICAgICAgIGV4dGVuZHMgT2JzZXJ2ZUJhc2VEaXJlY3RpdmU8VElucHV0LCBFbWl0dGVkTWFwT2Y8VElucHV0PiwgVENvbnRleHQ+XG57XG4gICAgcHJvdGVjdGVkIG92ZXJyaWRlIGNyZWF0ZVZpZXdDb250ZXh0KGRhdGE6IHsgdmFsdWU/OiBFbWl0dGVkTWFwT2Y8VElucHV0PiB8IG51bGwgLCBzb3VyY2U/OiBPYnNlcnZhYmxlPEVtaXR0ZWRNYXBPZjxUSW5wdXQ+PiB9KTogVENvbnRleHRcbiAgICB7XG4gICAgICAgIC8vIFNwcmVhZCB0aGUgdmFsdWVzIGVtaXR0ZWQgZnJvbSB0aGUgb2JzZXJ2YWJsZSB0byBhbGxvdyBgbGV0YCBtaWNyb3N5bnRheCBhbmQgZGlyZWN0bHkgYWNjZXNzaW5nIHRoZW1cbiAgICAgICAgcmV0dXJuIHsgLi4uc3VwZXIuY3JlYXRlVmlld0NvbnRleHQoZGF0YSksICAuLi5kYXRhLnZhbHVlIH07XG4gICAgfVxufVxuIl19