@angular-redux/form
Version:
Build Angular 2+ forms with Redux
90 lines • 5.6 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
import { Injectable } from '@angular/core';
import { NgRedux } from '@angular-redux/store';
/**
* @record
* @template RootState
*/
export function AbstractStore() { }
if (false) {
/**
* @param {?} action
* @return {?}
*/
AbstractStore.prototype.dispatch = function (action) { };
/**
* @return {?}
*/
AbstractStore.prototype.getState = function () { };
/**
* @param {?} fn
* @return {?}
*/
AbstractStore.prototype.subscribe = function (fn) { };
}
/** @type {?} */
export const FORM_CHANGED = '@@angular-redux/form/FORM_CHANGED';
export class FormStore {
/// NOTE(cbond): The declaration of store is misleading. This class is
/// actually capable of taking a plain Redux store or an NgRedux instance.
/// But in order to make the ng dependency injector work properly, we
/// declare it as an NgRedux type, since the @angular-redux/store use case involves
/// calling the constructor of this class manually (from configure.ts),
/// where a plain store can be cast to an NgRedux. (For our purposes, they
/// have almost identical shapes.)
/**
* @param {?} store
*/
constructor(store) {
this.store = store;
}
/**
* @return {?}
*/
getState() {
return this.store.getState();
}
/**
* @param {?} fn
* @return {?}
*/
subscribe(fn) {
return this.store.subscribe(() => fn(this.getState()));
}
/**
* @template T
* @param {?} path
* @param {?} form
* @param {?} value
* @return {?}
*/
valueChanged(path, form, value) {
this.store.dispatch({
type: FORM_CHANGED,
payload: {
path,
form,
valid: form.valid === true,
value,
},
});
}
}
FormStore.decorators = [
{ type: Injectable }
];
/** @nocollapse */
FormStore.ctorParameters = () => [
{ type: NgRedux }
];
if (false) {
/**
* @type {?}
* @private
*/
FormStore.prototype.store;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1zdG9yZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0Bhbmd1bGFyLXJlZHV4L2Zvcm0vIiwic291cmNlcyI6WyJmb3JtLXN0b3JlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBSTNDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQzs7Ozs7QUFJL0MsbUNBU0M7Ozs7OztJQVBDLHlEQUFrRDs7OztJQUdsRCxtREFBc0I7Ozs7O0lBR3RCLHNEQUF1RDs7O0FBR3pELE1BQU0sT0FBTyxZQUFZLEdBQUcsbUNBQW1DO0FBRy9ELE1BQU0sT0FBTyxTQUFTOzs7Ozs7Ozs7OztJQVFwQixZQUFvQixLQUFtQjtRQUFuQixVQUFLLEdBQUwsS0FBSyxDQUFjO0lBQUcsQ0FBQzs7OztJQUUzQyxRQUFRO1FBQ04sT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQy9CLENBQUM7Ozs7O0lBRUQsU0FBUyxDQUFDLEVBQXdCO1FBQ2hDLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDekQsQ0FBQzs7Ozs7Ozs7SUFFRCxZQUFZLENBQUksSUFBYyxFQUFFLElBQVksRUFBRSxLQUFRO1FBQ3BELElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDO1lBQ2xCLElBQUksRUFBRSxZQUFZO1lBQ2xCLE9BQU8sRUFBRTtnQkFDUCxJQUFJO2dCQUNKLElBQUk7Z0JBQ0osS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLLEtBQUssSUFBSTtnQkFDMUIsS0FBSzthQUNOO1NBQ0YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs7O1lBN0JGLFVBQVU7Ozs7WUFqQkYsT0FBTzs7Ozs7OztJQTBCRiwwQkFBMkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IE5nRm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuaW1wb3J0IHsgTmdSZWR1eCB9IGZyb20gJ0Bhbmd1bGFyLXJlZHV4L3N0b3JlJztcblxuaW1wb3J0IHsgQWN0aW9uLCBVbnN1YnNjcmliZSB9IGZyb20gJ3JlZHV4JztcblxuZXhwb3J0IGludGVyZmFjZSBBYnN0cmFjdFN0b3JlPFJvb3RTdGF0ZT4ge1xuICAvLy8gRGlzcGF0Y2ggYW4gYWN0aW9uXG4gIGRpc3BhdGNoKGFjdGlvbjogQWN0aW9uICYgeyBwYXlsb2FkOiBhbnkgfSk6IHZvaWQ7XG5cbiAgLy8vIFJldHJpZXZlIHRoZSBjdXJyZW50IGFwcGxpY2F0aW9uIHN0YXRlXG4gIGdldFN0YXRlKCk6IFJvb3RTdGF0ZTtcblxuICAvLy8gU3Vic2NyaWJlIHRvIGNoYW5nZXMgaW4gdGhlIHN0b3JlXG4gIHN1YnNjcmliZShmbjogKHN0YXRlOiBSb290U3RhdGUpID0+IHZvaWQpOiBVbnN1YnNjcmliZTtcbn1cblxuZXhwb3J0IGNvbnN0IEZPUk1fQ0hBTkdFRCA9ICdAQGFuZ3VsYXItcmVkdXgvZm9ybS9GT1JNX0NIQU5HRUQnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgRm9ybVN0b3JlIHtcbiAgLy8vIE5PVEUoY2JvbmQpOiBUaGUgZGVjbGFyYXRpb24gb2Ygc3RvcmUgaXMgbWlzbGVhZGluZy4gVGhpcyBjbGFzcyBpc1xuICAvLy8gYWN0dWFsbHkgY2FwYWJsZSBvZiB0YWtpbmcgYSBwbGFpbiBSZWR1eCBzdG9yZSBvciBhbiBOZ1JlZHV4IGluc3RhbmNlLlxuICAvLy8gQnV0IGluIG9yZGVyIHRvIG1ha2UgdGhlIG5nIGRlcGVuZGVuY3kgaW5qZWN0b3Igd29yayBwcm9wZXJseSwgd2VcbiAgLy8vIGRlY2xhcmUgaXQgYXMgYW4gTmdSZWR1eCB0eXBlLCBzaW5jZSB0aGUgQGFuZ3VsYXItcmVkdXgvc3RvcmUgdXNlIGNhc2UgaW52b2x2ZXNcbiAgLy8vIGNhbGxpbmcgdGhlIGNvbnN0cnVjdG9yIG9mIHRoaXMgY2xhc3MgbWFudWFsbHkgKGZyb20gY29uZmlndXJlLnRzKSxcbiAgLy8vIHdoZXJlIGEgcGxhaW4gc3RvcmUgY2FuIGJlIGNhc3QgdG8gYW4gTmdSZWR1eC4gKEZvciBvdXIgcHVycG9zZXMsIHRoZXlcbiAgLy8vIGhhdmUgYWxtb3N0IGlkZW50aWNhbCBzaGFwZXMuKVxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHN0b3JlOiBOZ1JlZHV4PGFueT4pIHt9XG5cbiAgZ2V0U3RhdGUoKSB7XG4gICAgcmV0dXJuIHRoaXMuc3RvcmUuZ2V0U3RhdGUoKTtcbiAgfVxuXG4gIHN1YnNjcmliZShmbjogKHN0YXRlOiBhbnkpID0+IHZvaWQpOiBVbnN1YnNjcmliZSB7XG4gICAgcmV0dXJuIHRoaXMuc3RvcmUuc3Vic2NyaWJlKCgpID0+IGZuKHRoaXMuZ2V0U3RhdGUoKSkpO1xuICB9XG5cbiAgdmFsdWVDaGFuZ2VkPFQ+KHBhdGg6IHN0cmluZ1tdLCBmb3JtOiBOZ0Zvcm0sIHZhbHVlOiBUKSB7XG4gICAgdGhpcy5zdG9yZS5kaXNwYXRjaCh7XG4gICAgICB0eXBlOiBGT1JNX0NIQU5HRUQsXG4gICAgICBwYXlsb2FkOiB7XG4gICAgICAgIHBhdGgsXG4gICAgICAgIGZvcm0sXG4gICAgICAgIHZhbGlkOiBmb3JtLnZhbGlkID09PSB0cnVlLFxuICAgICAgICB2YWx1ZSxcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==