UNPKG

@angular-redux/store

Version:
124 lines 8.56 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 {?} */ const environment = (/** @type {?} */ ((typeof window !== 'undefined' ? window : {}))); /** * An angular-2-ified version of the Redux DevTools chrome extension. */ export class DevToolsExtension { /** * @hidden * @param {?} appRef * @param {?} ngRedux */ constructor(appRef, ngRedux) { 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 = (options) => { /** @type {?} */ let subscription; if (!this.isEnabled()) { return null; } // Make sure changes from dev tools update angular's view. (/** @type {?} */ (this.getDevTools())).listen(({ type }) => { if (type === 'START') { subscription = this.ngRedux.subscribe(() => { 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 = () => !!this.getDevTools(); /** * Returns the redux devtools enhancer. */ this.getDevTools = () => environment && (environment.__REDUX_DEVTOOLS_EXTENSION__ || environment.devToolsExtension); } } DevToolsExtension.decorators = [ { type: Injectable } ]; /** @nocollapse */ DevToolsExtension.ctorParameters = () => [ { type: ApplicationRef }, { type: NgRedux } ]; 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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGV2LXRvb2xzLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGFuZ3VsYXItcmVkdXgvc3RvcmUvIiwic291cmNlcyI6WyJjb21wb25lbnRzL2Rldi10b29scy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBR25FLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxZQUFZLENBQUM7Ozs7QUFFckMsbUNBTUM7OztJQUpDLCtCQUdVOzs7Ozs7QUFHWixzQ0FHQzs7O0lBRkMsK0RBQTZDOztJQUM3QyxvREFBa0M7OztNQUc5QixXQUFXLEdBQTRCLG1CQUFBLENBQUMsT0FBTyxNQUFNLEtBQUssV0FBVztJQUN6RSxDQUFDLENBQUMsTUFBTTtJQUNSLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBMkI7Ozs7QUFNbEMsTUFBTSxPQUFPLGlCQUFpQjs7Ozs7O0lBRTVCLFlBQW9CLE1BQXNCLEVBQVUsT0FBcUI7UUFBckQsV0FBTSxHQUFOLE1BQU0sQ0FBZ0I7UUFBVSxZQUFPLEdBQVAsT0FBTyxDQUFjOzs7Ozs7Ozs7O1FBV3pFLGFBQVEsR0FBRyxDQUFDLE9BQXlCLEVBQUUsRUFBRTs7Z0JBQ25DLFlBQXlCO1lBQzdCLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLEVBQUU7Z0JBQ3JCLE9BQU8sSUFBSSxDQUFDO2FBQ2I7WUFFRCwwREFBMEQ7WUFDMUQsbUJBQUEsSUFBSSxDQUFDLFdBQVcsRUFBRSxFQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFO2dCQUN0QyxJQUFJLElBQUksS0FBSyxPQUFPLEVBQUU7b0JBQ3BCLFlBQVksR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7d0JBQ3pDLElBQUksQ0FBQyxNQUFNLENBQUMsZUFBZSxFQUFFLEVBQUU7NEJBQzdCLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUM7eUJBQ3BCO29CQUNILENBQUMsQ0FBQyxDQUFDO2lCQUNKO3FCQUFNLElBQUksSUFBSSxLQUFLLE1BQU0sRUFBRTtvQkFDMUIsWUFBWSxFQUFFLENBQUM7aUJBQ2hCO1lBQ0gsQ0FBQyxDQUFDLENBQUM7WUFFSCxPQUFPLG1CQUFBLElBQUksQ0FBQyxXQUFXLEVBQUUsRUFBQyxDQUFDLE9BQU8sSUFBSSxFQUFFLENBQUMsQ0FBQztRQUM1QyxDQUFDLENBQUM7Ozs7UUFLRixjQUFTLEdBQUcsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQzs7OztRQUt2QyxnQkFBVyxHQUFHLEdBQUcsRUFBRSxDQUNqQixXQUFXO1lBQ1gsQ0FBQyxXQUFXLENBQUMsNEJBQTRCLElBQUksV0FBVyxDQUFDLGlCQUFpQixDQUFDLENBQUM7SUEzQ0YsQ0FBQzs7O1lBSDlFLFVBQVU7Ozs7WUF6QkYsY0FBYztZQUdkLE9BQU87Ozs7Ozs7Ozs7Ozs7SUFvQ2QscUNBb0JFOzs7OztJQUtGLHNDQUF1Qzs7Ozs7SUFLdkMsd0NBRThFOzs7OztJQTNDbEUsbUNBQThCOzs7OztJQUFFLG9DQUE2QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFwcGxpY2F0aW9uUmVmLCBJbmplY3RhYmxlLCBOZ1pvbmUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFueUFjdGlvbiwgU3RvcmVFbmhhbmNlciwgVW5zdWJzY3JpYmUgfSBmcm9tICdyZWR1eCc7XG5pbXBvcnQgeyBFbmhhbmNlck9wdGlvbnMgfSBmcm9tICdyZWR1eC1kZXZ0b29scy1leHRlbnNpb24nO1xuaW1wb3J0IHsgTmdSZWR1eCB9IGZyb20gJy4vbmctcmVkdXgnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFJlZHV4RGV2VG9vbHMge1xuICAob3B0aW9uczogRW5oYW5jZXJPcHRpb25zKTogU3RvcmVFbmhhbmNlcjxhbnk+O1xuICBsaXN0ZW46IChcbiAgICBvbk1lc3NhZ2U6IChtZXNzYWdlOiBBbnlBY3Rpb24pID0+IHZvaWQsXG4gICAgaW5zdGFuY2VJZD86IHN0cmluZyxcbiAgKSA9PiB2b2lkO1xufVxuXG5pbnRlcmZhY2UgV2luZG93V2l0aFJlZHV4RGV2VG9vbHMgZXh0ZW5kcyBXaW5kb3cge1xuICBfX1JFRFVYX0RFVlRPT0xTX0VYVEVOU0lPTl9fPzogUmVkdXhEZXZUb29scztcbiAgZGV2VG9vbHNFeHRlbnNpb24/OiBSZWR1eERldlRvb2xzO1xufVxuXG5jb25zdCBlbnZpcm9ubWVudDogV2luZG93V2l0aFJlZHV4RGV2VG9vbHMgPSAodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCdcbiAgPyB3aW5kb3dcbiAgOiB7fSkgYXMgV2luZG93V2l0aFJlZHV4RGV2VG9vbHM7XG5cbi8qKlxuICogQW4gYW5ndWxhci0yLWlmaWVkIHZlcnNpb24gb2YgdGhlIFJlZHV4IERldlRvb2xzIGNocm9tZSBleHRlbnNpb24uXG4gKi9cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBEZXZUb29sc0V4dGVuc2lvbiB7XG4gIC8qKiBAaGlkZGVuICovXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgYXBwUmVmOiBBcHBsaWNhdGlvblJlZiwgcHJpdmF0ZSBuZ1JlZHV4OiBOZ1JlZHV4PGFueT4pIHt9XG5cbiAgLyoqXG4gICAqIEEgd3JhcHBlciBmb3IgdGhlIENocm9tZSBFeHRlbnNpb24gUmVkdXggRGV2VG9vbHMuXG4gICAqIE1ha2VzIHN1cmUgc3RhdGUgY2hhbmdlcyB0cmlnZ2VyZWQgYnkgdGhlIGV4dGVuc2lvblxuICAgKiB0cmlnZ2VyIEFuZ3VsYXIyJ3MgY2hhbmdlIGRldGVjdG9yLlxuICAgKlxuICAgKiBAYXJndW1lbnQgb3B0aW9uczogZGV2IHRvb2wgb3B0aW9uczsgc2FtZVxuICAgKiBmb3JtYXQgYXMgZGVzY3JpYmVkIGhlcmU6XG4gICAqIFt6YWxtb3hpc3VzL3JlZHV4LWRldnRvb2xzLWV4dGVuc2lvbi9ibG9iL21hc3Rlci9kb2NzL0FQSS9Bcmd1bWVudHMubWRdXG4gICAqL1xuICBlbmhhbmNlciA9IChvcHRpb25zPzogRW5oYW5jZXJPcHRpb25zKSA9PiB7XG4gICAgbGV0IHN1YnNjcmlwdGlvbjogVW5zdWJzY3JpYmU7XG4gICAgaWYgKCF0aGlzLmlzRW5hYmxlZCgpKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICAvLyBNYWtlIHN1cmUgY2hhbmdlcyBmcm9tIGRldiB0b29scyB1cGRhdGUgYW5ndWxhcidzIHZpZXcuXG4gICAgdGhpcy5nZXREZXZUb29scygpIS5saXN0ZW4oKHsgdHlwZSB9KSA9PiB7XG4gICAgICBpZiAodHlwZSA9PT0gJ1NUQVJUJykge1xuICAgICAgICBzdWJzY3JpcHRpb24gPSB0aGlzLm5nUmVkdXguc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICBpZiAoIU5nWm9uZS5pc0luQW5ndWxhclpvbmUoKSkge1xuICAgICAgICAgICAgdGhpcy5hcHBSZWYudGljaygpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICdTVE9QJykge1xuICAgICAgICBzdWJzY3JpcHRpb24oKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiB0aGlzLmdldERldlRvb2xzKCkhKG9wdGlvbnMgfHwge30pO1xuICB9O1xuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRydWUgaWYgdGhlIGV4dGVuc2lvbiBpcyBpbnN0YWxsZWQgYW5kIGVuYWJsZWQuXG4gICAqL1xuICBpc0VuYWJsZWQgPSAoKSA9PiAhIXRoaXMuZ2V0RGV2VG9vbHMoKTtcblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgcmVkdXggZGV2dG9vbHMgZW5oYW5jZXIuXG4gICAqL1xuICBnZXREZXZUb29scyA9ICgpID0+XG4gICAgZW52aXJvbm1lbnQgJiZcbiAgICAoZW52aXJvbm1lbnQuX19SRURVWF9ERVZUT09MU19FWFRFTlNJT05fXyB8fCBlbnZpcm9ubWVudC5kZXZUb29sc0V4dGVuc2lvbik7XG59XG4iXX0=