UNPKG

@storeon/angular

Version:
52 lines 4.5 kB
/** * @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==