@storeon/angular
Version:
Storeon for Angular 🅰⚡
52 lines • 4.5 kB
JavaScript
/**
* @fileoverview added by tsickle
* Generated from: lib/storeon.decorator.ts
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
import { ɵɵdirectiveInject as directiveInject } from '@angular/core';
import { StoreonService } from './storeon.service';
/**
*
*
* Experimental feature, works only with Ivy renderer
* Patches the component with keys from storeon store
*
* @template State, Events
* @param {?} config
* @return {?}
*/
export function UseStoreon(config) {
return (/**
* @param {?} cmpType
* @return {?}
*/
(cmpType) => {
/** @type {?} */
const isNg11 = !!cmpType.ɵfac;
/** @type {?} */
const originalFactory = isNg11 ? cmpType.ɵfac : cmpType.ngComponentDef.factory;
/** @type {?} */
const newFactory = (/**
* @return {?}
*/
() => {
/** @type {?} */
const ngCompType = isNg11 ? cmpType.ɵcmp.type : cmpType.ngComponentDef.type;
/** @type {?} */
const cmp = originalFactory(ngCompType);
/** @type {?} */
const storeon = directiveInject(StoreonService);
config.keys.forEach((/**
* @param {?} key
* @return {?}
*/
key => cmp[key] = storeon.useStoreon(key)));
if (config.dispatcher) {
cmp[config.dispatcher] = storeon.dispatch.bind(storeon);
}
return cmp;
});
cmpType.ɵfac = newFactory;
});
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmVvbi5kZWNvcmF0b3IuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Ac3RvcmVvbi9hbmd1bGFyLyIsInNvdXJjZXMiOlsibGliL3N0b3Jlb24uZGVjb3JhdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsT0FBTyxFQUFFLGlCQUFpQixJQUFJLGVBQWUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNyRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7Ozs7Ozs7Ozs7O0FBU25ELE1BQU0sVUFBVSxVQUFVLENBQW1ELE1BRzVFO0lBQ0M7Ozs7SUFBTyxDQUFDLE9BQU8sRUFBRSxFQUFFOztjQUNYLE1BQU0sR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUk7O2NBQ3ZCLGVBQWUsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUMsT0FBTzs7Y0FDeEUsVUFBVTs7O1FBQUcsR0FBRyxFQUFFOztrQkFDaEIsVUFBVSxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUMsSUFBSTs7a0JBQ3JFLEdBQUcsR0FBRyxlQUFlLENBQUMsVUFBVSxDQUFDOztrQkFDakMsT0FBTyxHQUFHLGVBQWUsQ0FBZ0MsY0FBYyxDQUFDO1lBRTlFLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTzs7OztZQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLEVBQUMsQ0FBQztZQUUvRCxJQUFJLE1BQU0sQ0FBQyxVQUFVLEVBQUU7Z0JBQ3JCLEdBQUcsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLEdBQUcsT0FBTyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7YUFDekQ7WUFFRCxPQUFPLEdBQUcsQ0FBQztRQUNiLENBQUMsQ0FBQTtRQUVELE9BQU8sQ0FBQyxJQUFJLEdBQUcsVUFBVSxDQUFDO0lBQzVCLENBQUMsRUFBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyDJtcm1ZGlyZWN0aXZlSW5qZWN0IGFzIGRpcmVjdGl2ZUluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU3RvcmVvblNlcnZpY2UgfSBmcm9tICcuL3N0b3Jlb24uc2VydmljZSc7XG5pbXBvcnQgeyBTdG9yZW9uRXZlbnRzIH0gZnJvbSAnc3RvcmVvbic7XG5cbi8qKipcbiAqXG4gKiBFeHBlcmltZW50YWwgZmVhdHVyZSwgd29ya3Mgb25seSB3aXRoIEl2eSByZW5kZXJlclxuICogUGF0Y2hlcyB0aGUgY29tcG9uZW50IHdpdGgga2V5cyBmcm9tIHN0b3Jlb24gc3RvcmVcbiAqXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBVc2VTdG9yZW9uPFN0YXRlLCBFdmVudHMgZXh0ZW5kcyBTdG9yZW9uRXZlbnRzPFN0YXRlPiA9IGFueT4oY29uZmlnOiB7XG4gIGtleXM6IEFycmF5PGtleW9mIFN0YXRlPixcbiAgZGlzcGF0Y2hlcj86IHN0cmluZ1xufSkge1xuICByZXR1cm4gKGNtcFR5cGUpID0+IHtcbiAgICBjb25zdCBpc05nMTEgPSAhIWNtcFR5cGUuybVmYWM7XG4gICAgY29uc3Qgb3JpZ2luYWxGYWN0b3J5ID0gaXNOZzExID8gY21wVHlwZS7JtWZhYyA6IGNtcFR5cGUubmdDb21wb25lbnREZWYuZmFjdG9yeTtcbiAgICBjb25zdCBuZXdGYWN0b3J5ID0gKCkgPT4ge1xuICAgICAgY29uc3QgbmdDb21wVHlwZSA9IGlzTmcxMSA/IGNtcFR5cGUuybVjbXAudHlwZSA6IGNtcFR5cGUubmdDb21wb25lbnREZWYudHlwZTtcbiAgICAgIGNvbnN0IGNtcCA9IG9yaWdpbmFsRmFjdG9yeShuZ0NvbXBUeXBlKTtcbiAgICAgIGNvbnN0IHN0b3Jlb24gPSBkaXJlY3RpdmVJbmplY3Q8U3RvcmVvblNlcnZpY2U8U3RhdGUsIEV2ZW50cz4+KFN0b3Jlb25TZXJ2aWNlKTtcblxuICAgICAgY29uZmlnLmtleXMuZm9yRWFjaChrZXkgPT4gY21wW2tleV0gPSBzdG9yZW9uLnVzZVN0b3Jlb24oa2V5KSk7XG5cbiAgICAgIGlmIChjb25maWcuZGlzcGF0Y2hlcikge1xuICAgICAgICBjbXBbY29uZmlnLmRpc3BhdGNoZXJdID0gc3RvcmVvbi5kaXNwYXRjaC5iaW5kKHN0b3Jlb24pO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gY21wO1xuICAgIH07XG5cbiAgICBjbXBUeXBlLsm1ZmFjID0gbmV3RmFjdG9yeTtcbiAgfTtcbn1cbiJdfQ==