UNPKG

@angular-redux/store

Version:
126 lines 8.82 kB
/** * @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