@angular-redux/store
Version:
Angular bindings for Redux
126 lines • 8.82 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
import { ApplicationRef, Injectable, NgZone } from '@angular/core';
import { NgRedux } from './ng-redux';
/**
* @record
*/
export function ReduxDevTools() { }
if (false) {
/** @type {?} */
ReduxDevTools.prototype.listen;
/* Skipping unhandled member: (options: EnhancerOptions): StoreEnhancer<any>;*/
}
/**
* @record
*/
function WindowWithReduxDevTools() { }
if (false) {
/** @type {?|undefined} */
WindowWithReduxDevTools.prototype.__REDUX_DEVTOOLS_EXTENSION__;
/** @type {?|undefined} */
WindowWithReduxDevTools.prototype.devToolsExtension;
}
/** @type {?} */
var environment = (/** @type {?} */ ((typeof window !== 'undefined'
? window
: {})));
/**
* An angular-2-ified version of the Redux DevTools chrome extension.
*/
var DevToolsExtension = /** @class */ (function () {
/** @hidden */
function DevToolsExtension(appRef, ngRedux) {
var _this = this;
this.appRef = appRef;
this.ngRedux = ngRedux;
/**
* A wrapper for the Chrome Extension Redux DevTools.
* Makes sure state changes triggered by the extension
* trigger Angular2's change detector.
*
* @argument options: dev tool options; same
* format as described here:
* [zalmoxisus/redux-devtools-extension/blob/master/docs/API/Arguments.md]
*/
this.enhancer = function (options) {
/** @type {?} */
var subscription;
if (!_this.isEnabled()) {
return null;
}
// Make sure changes from dev tools update angular's view.
(/** @type {?} */ (_this.getDevTools())).listen(function (_a) {
var type = _a.type;
if (type === 'START') {
subscription = _this.ngRedux.subscribe(function () {
if (!NgZone.isInAngularZone()) {
_this.appRef.tick();
}
});
}
else if (type === 'STOP') {
subscription();
}
});
return (/** @type {?} */ (_this.getDevTools()))(options || {});
};
/**
* Returns true if the extension is installed and enabled.
*/
this.isEnabled = function () { return !!_this.getDevTools(); };
/**
* Returns the redux devtools enhancer.
*/
this.getDevTools = function () {
return environment &&
(environment.__REDUX_DEVTOOLS_EXTENSION__ || environment.devToolsExtension);
};
}
DevToolsExtension.decorators = [
{ type: Injectable }
];
/** @nocollapse */
DevToolsExtension.ctorParameters = function () { return [
{ type: ApplicationRef },
{ type: NgRedux }
]; };
return DevToolsExtension;
}());
export { DevToolsExtension };
if (false) {
/**
* A wrapper for the Chrome Extension Redux DevTools.
* Makes sure state changes triggered by the extension
* trigger Angular2's change detector.
*
* @argument options: dev tool options; same
* format as described here:
* [zalmoxisus/redux-devtools-extension/blob/master/docs/API/Arguments.md]
* @type {?}
*/
DevToolsExtension.prototype.enhancer;
/**
* Returns true if the extension is installed and enabled.
* @type {?}
*/
DevToolsExtension.prototype.isEnabled;
/**
* Returns the redux devtools enhancer.
* @type {?}
*/
DevToolsExtension.prototype.getDevTools;
/**
* @type {?}
* @private
*/
DevToolsExtension.prototype.appRef;
/**
* @type {?}
* @private
*/
DevToolsExtension.prototype.ngRedux;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGV2LXRvb2xzLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGFuZ3VsYXItcmVkdXgvc3RvcmUvIiwic291cmNlcyI6WyJjb21wb25lbnRzL2Rldi10b29scy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBR25FLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxZQUFZLENBQUM7Ozs7QUFFckMsbUNBTUM7OztJQUpDLCtCQUdVOzs7Ozs7QUFHWixzQ0FHQzs7O0lBRkMsK0RBQTZDOztJQUM3QyxvREFBa0M7OztJQUc5QixXQUFXLEdBQTRCLG1CQUFBLENBQUMsT0FBTyxNQUFNLEtBQUssV0FBVztJQUN6RSxDQUFDLENBQUMsTUFBTTtJQUNSLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBMkI7Ozs7QUFLbEM7SUFFRSxjQUFjO0lBQ2QsMkJBQW9CLE1BQXNCLEVBQVUsT0FBcUI7UUFBekUsaUJBQTZFO1FBQXpELFdBQU0sR0FBTixNQUFNLENBQWdCO1FBQVUsWUFBTyxHQUFQLE9BQU8sQ0FBYzs7Ozs7Ozs7OztRQVd6RSxhQUFRLEdBQUcsVUFBQyxPQUF5Qjs7Z0JBQy9CLFlBQXlCO1lBQzdCLElBQUksQ0FBQyxLQUFJLENBQUMsU0FBUyxFQUFFLEVBQUU7Z0JBQ3JCLE9BQU8sSUFBSSxDQUFDO2FBQ2I7WUFFRCwwREFBMEQ7WUFDMUQsbUJBQUEsS0FBSSxDQUFDLFdBQVcsRUFBRSxFQUFDLENBQUMsTUFBTSxDQUFDLFVBQUMsRUFBUTtvQkFBTixjQUFJO2dCQUNoQyxJQUFJLElBQUksS0FBSyxPQUFPLEVBQUU7b0JBQ3BCLFlBQVksR0FBRyxLQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQzt3QkFDcEMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxlQUFlLEVBQUUsRUFBRTs0QkFDN0IsS0FBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQzt5QkFDcEI7b0JBQ0gsQ0FBQyxDQUFDLENBQUM7aUJBQ0o7cUJBQU0sSUFBSSxJQUFJLEtBQUssTUFBTSxFQUFFO29CQUMxQixZQUFZLEVBQUUsQ0FBQztpQkFDaEI7WUFDSCxDQUFDLENBQUMsQ0FBQztZQUVILE9BQU8sbUJBQUEsS0FBSSxDQUFDLFdBQVcsRUFBRSxFQUFDLENBQUMsT0FBTyxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQzVDLENBQUMsQ0FBQzs7OztRQUtGLGNBQVMsR0FBRyxjQUFNLE9BQUEsQ0FBQyxDQUFDLEtBQUksQ0FBQyxXQUFXLEVBQUUsRUFBcEIsQ0FBb0IsQ0FBQzs7OztRQUt2QyxnQkFBVyxHQUFHO1lBQ1osT0FBQSxXQUFXO2dCQUNYLENBQUMsV0FBVyxDQUFDLDRCQUE0QixJQUFJLFdBQVcsQ0FBQyxpQkFBaUIsQ0FBQztRQUQzRSxDQUMyRSxDQUFDO0lBM0NGLENBQUM7O2dCQUg5RSxVQUFVOzs7O2dCQXpCRixjQUFjO2dCQUdkLE9BQU87O0lBcUVoQix3QkFBQztDQUFBLEFBL0NELElBK0NDO1NBOUNZLGlCQUFpQjs7Ozs7Ozs7Ozs7O0lBYTVCLHFDQW9CRTs7Ozs7SUFLRixzQ0FBdUM7Ozs7O0lBS3ZDLHdDQUU4RTs7Ozs7SUEzQ2xFLG1DQUE4Qjs7Ozs7SUFBRSxvQ0FBNkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBcHBsaWNhdGlvblJlZiwgSW5qZWN0YWJsZSwgTmdab25lIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBbnlBY3Rpb24sIFN0b3JlRW5oYW5jZXIsIFVuc3Vic2NyaWJlIH0gZnJvbSAncmVkdXgnO1xuaW1wb3J0IHsgRW5oYW5jZXJPcHRpb25zIH0gZnJvbSAncmVkdXgtZGV2dG9vbHMtZXh0ZW5zaW9uJztcbmltcG9ydCB7IE5nUmVkdXggfSBmcm9tICcuL25nLXJlZHV4JztcblxuZXhwb3J0IGludGVyZmFjZSBSZWR1eERldlRvb2xzIHtcbiAgKG9wdGlvbnM6IEVuaGFuY2VyT3B0aW9ucyk6IFN0b3JlRW5oYW5jZXI8YW55PjtcbiAgbGlzdGVuOiAoXG4gICAgb25NZXNzYWdlOiAobWVzc2FnZTogQW55QWN0aW9uKSA9PiB2b2lkLFxuICAgIGluc3RhbmNlSWQ/OiBzdHJpbmcsXG4gICkgPT4gdm9pZDtcbn1cblxuaW50ZXJmYWNlIFdpbmRvd1dpdGhSZWR1eERldlRvb2xzIGV4dGVuZHMgV2luZG93IHtcbiAgX19SRURVWF9ERVZUT09MU19FWFRFTlNJT05fXz86IFJlZHV4RGV2VG9vbHM7XG4gIGRldlRvb2xzRXh0ZW5zaW9uPzogUmVkdXhEZXZUb29scztcbn1cblxuY29uc3QgZW52aXJvbm1lbnQ6IFdpbmRvd1dpdGhSZWR1eERldlRvb2xzID0gKHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnXG4gID8gd2luZG93XG4gIDoge30pIGFzIFdpbmRvd1dpdGhSZWR1eERldlRvb2xzO1xuXG4vKipcbiAqIEFuIGFuZ3VsYXItMi1pZmllZCB2ZXJzaW9uIG9mIHRoZSBSZWR1eCBEZXZUb29scyBjaHJvbWUgZXh0ZW5zaW9uLlxuICovXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgRGV2VG9vbHNFeHRlbnNpb24ge1xuICAvKiogQGhpZGRlbiAqL1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGFwcFJlZjogQXBwbGljYXRpb25SZWYsIHByaXZhdGUgbmdSZWR1eDogTmdSZWR1eDxhbnk+KSB7fVxuXG4gIC8qKlxuICAgKiBBIHdyYXBwZXIgZm9yIHRoZSBDaHJvbWUgRXh0ZW5zaW9uIFJlZHV4IERldlRvb2xzLlxuICAgKiBNYWtlcyBzdXJlIHN0YXRlIGNoYW5nZXMgdHJpZ2dlcmVkIGJ5IHRoZSBleHRlbnNpb25cbiAgICogdHJpZ2dlciBBbmd1bGFyMidzIGNoYW5nZSBkZXRlY3Rvci5cbiAgICpcbiAgICogQGFyZ3VtZW50IG9wdGlvbnM6IGRldiB0b29sIG9wdGlvbnM7IHNhbWVcbiAgICogZm9ybWF0IGFzIGRlc2NyaWJlZCBoZXJlOlxuICAgKiBbemFsbW94aXN1cy9yZWR1eC1kZXZ0b29scy1leHRlbnNpb24vYmxvYi9tYXN0ZXIvZG9jcy9BUEkvQXJndW1lbnRzLm1kXVxuICAgKi9cbiAgZW5oYW5jZXIgPSAob3B0aW9ucz86IEVuaGFuY2VyT3B0aW9ucykgPT4ge1xuICAgIGxldCBzdWJzY3JpcHRpb246IFVuc3Vic2NyaWJlO1xuICAgIGlmICghdGhpcy5pc0VuYWJsZWQoKSkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgLy8gTWFrZSBzdXJlIGNoYW5nZXMgZnJvbSBkZXYgdG9vbHMgdXBkYXRlIGFuZ3VsYXIncyB2aWV3LlxuICAgIHRoaXMuZ2V0RGV2VG9vbHMoKSEubGlzdGVuKCh7IHR5cGUgfSkgPT4ge1xuICAgICAgaWYgKHR5cGUgPT09ICdTVEFSVCcpIHtcbiAgICAgICAgc3Vic2NyaXB0aW9uID0gdGhpcy5uZ1JlZHV4LnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgaWYgKCFOZ1pvbmUuaXNJbkFuZ3VsYXJab25lKCkpIHtcbiAgICAgICAgICAgIHRoaXMuYXBwUmVmLnRpY2soKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIGlmICh0eXBlID09PSAnU1RPUCcpIHtcbiAgICAgICAgc3Vic2NyaXB0aW9uKCk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gdGhpcy5nZXREZXZUb29scygpIShvcHRpb25zIHx8IHt9KTtcbiAgfTtcblxuICAvKipcbiAgICogUmV0dXJucyB0cnVlIGlmIHRoZSBleHRlbnNpb24gaXMgaW5zdGFsbGVkIGFuZCBlbmFibGVkLlxuICAgKi9cbiAgaXNFbmFibGVkID0gKCkgPT4gISF0aGlzLmdldERldlRvb2xzKCk7XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIHJlZHV4IGRldnRvb2xzIGVuaGFuY2VyLlxuICAgKi9cbiAgZ2V0RGV2VG9vbHMgPSAoKSA9PlxuICAgIGVudmlyb25tZW50ICYmXG4gICAgKGVudmlyb25tZW50Ll9fUkVEVVhfREVWVE9PTFNfRVhURU5TSU9OX18gfHwgZW52aXJvbm1lbnQuZGV2VG9vbHNFeHRlbnNpb24pO1xufVxuIl19