@ngxs/devtools-plugin 3.7.3 → 3.7.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -2,10 +2,22 @@
2
2
  * @fileoverview added by tsickle
3
3
  * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
4
4
  */
5
- import { Inject, Injectable, Injector } from '@angular/core';
5
+ import { Inject, Injectable, Injector, NgZone, ɵglobal } from '@angular/core';
6
6
  import { getActionTypeFromInstance, Store } from '@ngxs/store';
7
7
  import { tap, catchError } from 'rxjs/operators';
8
8
  import { NGXS_DEVTOOLS_OPTIONS } from './symbols';
9
+ /** @enum {string} */
10
+ const ReduxDevtoolsActionType = {
11
+ Dispatch: 'DISPATCH',
12
+ Action: 'ACTION',
13
+ };
14
+ /** @enum {string} */
15
+ const ReduxDevtoolsPayloadType = {
16
+ JumpToAction: 'JUMP_TO_ACTION',
17
+ JumpToState: 'JUMP_TO_STATE',
18
+ ToggleAction: 'TOGGLE_ACTION',
19
+ ImportState: 'IMPORT_STATE',
20
+ };
9
21
  /**
10
22
  * Adds support for the Redux Devtools extension:
11
23
  * http://extension.remotedev.io/
@@ -14,21 +26,26 @@ export class NgxsReduxDevtoolsPlugin {
14
26
  /**
15
27
  * @param {?} _options
16
28
  * @param {?} _injector
29
+ * @param {?} _ngZone
17
30
  */
18
- constructor(_options, _injector) {
31
+ constructor(_options, _injector, _ngZone) {
19
32
  this._options = _options;
20
33
  this._injector = _injector;
34
+ this._ngZone = _ngZone;
21
35
  this.devtoolsExtension = null;
22
- this.windowObj = typeof window !== 'undefined' ? window : {};
23
- /** @type {?} */
24
- const globalDevtools = this.windowObj['__REDUX_DEVTOOLS_EXTENSION__'] || this.windowObj['devToolsExtension'];
25
- if (globalDevtools) {
26
- this.devtoolsExtension = (/** @type {?} */ (globalDevtools.connect(_options)));
27
- this.devtoolsExtension.subscribe((/**
28
- * @param {?} a
29
- * @return {?}
30
- */
31
- a => this.dispatched(a)));
36
+ this.globalDevtools = ɵglobal['__REDUX_DEVTOOLS_EXTENSION__'] || ɵglobal['devToolsExtension'];
37
+ this.unsubscribe = null;
38
+ this.connect();
39
+ }
40
+ /**
41
+ * @return {?}
42
+ */
43
+ ngOnDestroy() {
44
+ if (this.unsubscribe !== null) {
45
+ this.unsubscribe();
46
+ }
47
+ if (this.globalDevtools) {
48
+ this.globalDevtools.disconnect();
32
49
  }
33
50
  }
34
51
  /**
@@ -47,9 +64,7 @@ export class NgxsReduxDevtoolsPlugin {
47
64
  * @return {?}
48
65
  */
49
66
  handle(state, action, next) {
50
- /** @type {?} */
51
- const isDisabled = this._options && this._options.disabled;
52
- if (!this.devtoolsExtension || isDisabled) {
67
+ if (!this.devtoolsExtension || this._options.disabled) {
53
68
  return next(state, action);
54
69
  }
55
70
  return next(state, action).pipe(catchError((/**
@@ -95,17 +110,17 @@ export class NgxsReduxDevtoolsPlugin {
95
110
  * @return {?}
96
111
  */
97
112
  dispatched(action) {
98
- if (action.type === 'DISPATCH') {
99
- if (action.payload.type === 'JUMP_TO_ACTION' ||
100
- action.payload.type === 'JUMP_TO_STATE') {
113
+ if (action.type === "DISPATCH" /* Dispatch */) {
114
+ if (action.payload.type === "JUMP_TO_ACTION" /* JumpToAction */ ||
115
+ action.payload.type === "JUMP_TO_STATE" /* JumpToState */) {
101
116
  /** @type {?} */
102
117
  const prevState = JSON.parse(action.state);
103
118
  this.store.reset(prevState);
104
119
  }
105
- else if (action.payload.type === 'TOGGLE_ACTION') {
120
+ else if (action.payload.type === "TOGGLE_ACTION" /* ToggleAction */) {
106
121
  console.warn('Skip is not supported at this time.');
107
122
  }
108
- else if (action.payload.type === 'IMPORT_STATE') {
123
+ else if (action.payload.type === "IMPORT_STATE" /* ImportState */) {
109
124
  const { actionsById, computedStates, currentStateIndex } = action.payload.nextLiftedState;
110
125
  (/** @type {?} */ (this.devtoolsExtension)).init(computedStates[0].state);
111
126
  Object.keys(actionsById)
@@ -122,12 +137,44 @@ export class NgxsReduxDevtoolsPlugin {
122
137
  this.store.reset(computedStates[currentStateIndex].state);
123
138
  }
124
139
  }
125
- else if (action.type === 'ACTION') {
140
+ else if (action.type === "ACTION" /* Action */) {
126
141
  /** @type {?} */
127
142
  const actionPayload = JSON.parse(action.payload);
128
143
  this.store.dispatch(actionPayload);
129
144
  }
130
145
  }
146
+ /**
147
+ * @private
148
+ * @return {?}
149
+ */
150
+ connect() {
151
+ if (!this.globalDevtools || this._options.disabled) {
152
+ return;
153
+ }
154
+ // The `connect` method adds `message` event listener since it communicates
155
+ // with an extension through `window.postMessage` and message events.
156
+ // We handle only 2 events; thus, we don't want to run many change detections
157
+ // because the extension sends events that we don't have to handle.
158
+ this.devtoolsExtension = this._ngZone.runOutsideAngular((/**
159
+ * @return {?}
160
+ */
161
+ () => (/** @type {?} */ (this.globalDevtools.connect(this._options)))));
162
+ this.unsubscribe = this.devtoolsExtension.subscribe((/**
163
+ * @param {?} action
164
+ * @return {?}
165
+ */
166
+ action => {
167
+ if (action.type === "DISPATCH" /* Dispatch */ ||
168
+ action.type === "ACTION" /* Action */) {
169
+ this._ngZone.run((/**
170
+ * @return {?}
171
+ */
172
+ () => {
173
+ this.dispatched(action);
174
+ }));
175
+ }
176
+ }));
177
+ }
131
178
  }
132
179
  NgxsReduxDevtoolsPlugin.decorators = [
133
180
  { type: Injectable }
@@ -135,7 +182,8 @@ NgxsReduxDevtoolsPlugin.decorators = [
135
182
  /** @nocollapse */
136
183
  NgxsReduxDevtoolsPlugin.ctorParameters = () => [
137
184
  { type: undefined, decorators: [{ type: Inject, args: [NGXS_DEVTOOLS_OPTIONS,] }] },
138
- { type: Injector }
185
+ { type: Injector },
186
+ { type: NgZone }
139
187
  ];
140
188
  if (false) {
141
189
  /**
@@ -147,7 +195,12 @@ if (false) {
147
195
  * @type {?}
148
196
  * @private
149
197
  */
150
- NgxsReduxDevtoolsPlugin.prototype.windowObj;
198
+ NgxsReduxDevtoolsPlugin.prototype.globalDevtools;
199
+ /**
200
+ * @type {?}
201
+ * @private
202
+ */
203
+ NgxsReduxDevtoolsPlugin.prototype.unsubscribe;
151
204
  /**
152
205
  * @type {?}
153
206
  * @private
@@ -158,5 +211,10 @@ if (false) {
158
211
  * @private
159
212
  */
160
213
  NgxsReduxDevtoolsPlugin.prototype._injector;
214
+ /**
215
+ * @type {?}
216
+ * @private
217
+ */
218
+ NgxsReduxDevtoolsPlugin.prototype._ngZone;
161
219
  }
162
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGV2dG9vbHMucGx1Z2luLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQG5neHMvZGV2dG9vbHMtcGx1Z2luLyIsInNvdXJjZXMiOlsic3JjL2RldnRvb2xzLnBsdWdpbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzdELE9BQU8sRUFBRSx5QkFBeUIsRUFBZ0MsS0FBSyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzdGLE9BQU8sRUFBRSxHQUFHLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFakQsT0FBTyxFQUNMLHFCQUFxQixFQUl0QixNQUFNLFdBQVcsQ0FBQzs7Ozs7QUFPbkIsTUFBTSxPQUFPLHVCQUF1Qjs7Ozs7SUFJbEMsWUFDeUMsUUFBNkIsRUFDNUQsU0FBbUI7UUFEWSxhQUFRLEdBQVIsUUFBUSxDQUFxQjtRQUM1RCxjQUFTLEdBQVQsU0FBUyxDQUFVO1FBTFosc0JBQWlCLEdBQWlDLElBQUksQ0FBQztRQUN2RCxjQUFTLEdBQVEsT0FBTyxNQUFNLEtBQUssV0FBVyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQzs7Y0FNdEUsY0FBYyxHQUNsQixJQUFJLENBQUMsU0FBUyxDQUFDLDhCQUE4QixDQUFDLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxtQkFBbUIsQ0FBQztRQUN2RixJQUFJLGNBQWMsRUFBRTtZQUNsQixJQUFJLENBQUMsaUJBQWlCLEdBQUcsbUJBQUEsY0FBYyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsRUFBeUIsQ0FBQztZQUNuRixJQUFJLENBQUMsaUJBQWlCLENBQUMsU0FBUzs7OztZQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDO1NBQzNEO0lBQ0gsQ0FBQzs7Ozs7O0lBS0QsSUFBWSxLQUFL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SyxDQUFDLEVBQ3BGLENBQUM7Z0JBQ0osSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDLGlCQUFpQixDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7YUFDM0Q7U0FDRjthQUFNLElBQUksTUFBTSxDQUFDLElBQUksS0FBSyxRQUFRLEVBQUU7O2tCQUM3QixhQUFhLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDO1lBQ2hELElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1NBQ3BDO0lBQ0gsQ0FBQzs7O1lBdkZGLFVBQVU7Ozs7NENBTU4sTUFBTSxTQUFDLHFCQUFxQjtZQXJCSixRQUFROzs7Ozs7O0lBaUJuQyxvREFBd0U7Ozs7O0lBQ3hFLDRDQUE4RTs7Ozs7SUFHNUUsMkNBQW9FOzs7OztJQUNwRSw0Q0FBMkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUsIEluamVjdG9yIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IGdldEFjdGlvblR5cGVGcm9tSW5zdGFuY2UsIE5neHNOZXh0UGx1Z2luRm4sIE5neHNQbHVnaW4sIFN0b3JlIH0gZnJvbSAnQG5neHMvc3RvcmUnO1xyXG5pbXBvcnQgeyB0YXAsIGNhdGNoRXJyb3IgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcblxyXG5pbXBvcnQge1xyXG4gIE5HWFNfREVWVE9PTFNfT1BUSU9OUyxcclxuICBOZ3hzRGV2dG9vbHNBY3Rpb24sXHJcbiAgTmd4c0RldnRvb2xzRXh0ZW5zaW9uLFxyXG4gIE5neHNEZXZ0b29sc09wdGlvbnNcclxufSBmcm9tICcuL3N5bWJvbHMnO1xyXG5cclxuLyoqXHJcbiAqIEFkZHMgc3VwcG9ydCBmb3IgdGhlIFJlZHV4IERldnRvb2xzIGV4dGVuc2lvbjpcclxuICogaHR0cDovL2V4dGVuc2lvbi5yZW1vdGVkZXYuaW8vXHJcbiAqL1xyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBjbGFzcyBOZ3hzUmVkdXhEZXZ0b29sc1BsdWdpbiBpbXBsZW1lbnRzIE5neHNQbHVnaW4ge1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgZGV2dG9vbHNFeHRlbnNpb246IE5neHNEZXZ0b29sc0V4dGVuc2lvbiB8IG51bGwgPSBudWxsO1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgd2luZG93T2JqOiBhbnkgPSB0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyA/IHdpbmRvdyA6IHt9O1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIEBJbmplY3QoTkdYU19ERVZUT09MU19PUFRJT05TKSBwcml2YXRlIF9vcHRpb25zOiBOZ3hzRGV2dG9vbHNPcHRpb25zLFxyXG4gICAgcHJpdmF0ZSBfaW5qZWN0b3I6IEluamVjdG9yXHJcbiAgKSB7XHJcbiAgICBjb25zdCBnbG9iYWxEZXZ0b29scyA9XHJcbiAgICAgIHRoaXMud2luZG93T2JqWydfX1JFRFVYX0RFVlRPT0xTX0VYVEVOU0lPTl9fJ10gfHwgdGhpcy53aW5kb3dPYmpbJ2RldlRvb2xzRXh0ZW5zaW9uJ107XHJcbiAgICBpZiAoZ2xvYmFsRGV2dG9vbHMpIHtcclxuICAgICAgdGhpcy5kZXZ0b29sc0V4dGVuc2lvbiA9IGdsb2JhbERldnRvb2xzLmNvbm5lY3QoX29wdGlvbnMpIGFzIE5neHNEZXZ0b29sc0V4dGVuc2lvbjtcclxuICAgICAgdGhpcy5kZXZ0b29sc0V4dGVuc2lvbi5zdWJzY3JpYmUoYSA9PiB0aGlzLmRpc3BhdGNoZWQoYSkpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogTGF6eSBnZXQgdGhlIHN0b3JlIGZvciBjaXJjdWxhciBkZXBlbmRlbmN5IGlzc3Vlc1xyXG4gICAqL1xyXG4gIHByaXZhdGUgZ2V0IHN0b3JlKCk6IFN0b3JlIHtcclxuICAgIHJldHVybiB0aGlzLl9pbmplY3Rvci5nZXQ8U3RvcmU+KFN0b3JlKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE1pZGRsZXdhcmUgaGFuZGxlIGZ1bmN0aW9uXHJcbiAgICovXHJcbiAgaGFuZGxlKHN0YXRlOiBhbnksIGFjdGlvbjogYW55LCBuZXh0OiBOZ3hzTmV4dFBsdWdpbkZuKSB7XHJcbiAgICBjb25zdCBpc0Rpc2FibGVkID0gdGhpcy5fb3B0aW9ucyAmJiB0aGlzLl9vcHRpb25zLmRpc2FibGVkO1xyXG4gICAgaWYgKCF0aGlzLmRldnRvb2xzRXh0ZW5zaW9uIHx8IGlzRGlzYWJsZWQpIHtcclxuICAgICAgcmV0dXJuIG5leHQoc3RhdGUsIGFjdGlvbik7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIG5leHQoc3RhdGUsIGFjdGlvbikucGlwZShcclxuICAgICAgY2F0Y2hFcnJvcihlcnJvciA9PiB7XHJcbiAgICAgICAgY29uc3QgbmV3U3RhdGUgPSB0aGlzLnN0b3JlLnNuYXBzaG90KCk7XHJcbiAgICAgICAgdGhpcy5zZW5kVG9EZXZUb29scyhzdGF0ZSwgYWN0aW9uLCBuZXdTdGF0ZSk7XHJcbiAgICAgICAgdGhyb3cgZXJyb3I7XHJcbiAgICAgIH0pLFxyXG4gICAgICB0YXAobmV3U3RhdGUgPT4ge1xyXG4gICAgICAgIHRoaXMuc2VuZFRvRGV2VG9vbHMoc3RhdGUsIGFjdGlvbiwgbmV3U3RhdGUpO1xyXG4gICAgICB9KVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2VuZFRvRGV2VG9vbHMoc3RhdGU6IGFueSwgYWN0aW9uOiBhbnksIG5ld1N0YXRlOiBhbnkpIHtcclxuICAgIGNvbnN0IHR5cGUgPSBnZXRBY3Rpb25UeXBlRnJvbUluc3RhbmNlKGFjdGlvbik7XHJcbiAgICAvLyBpZiBpbml0IGFjdGlvbiwgc2VuZCBpbml0aWFsIHN0YXRlIHRvIGRldiB0b29sc1xyXG4gICAgY29uc3QgaXNJbml0QWN0aW9uID0gdHlwZSA9PT0gJ0BASU5JVCc7XHJcbiAgICBpZiAoaXNJbml0QWN0aW9uKSB7XHJcbiAgICAgIHRoaXMuZGV2dG9vbHNFeHRlbnNpb24hLmluaXQoc3RhdGUpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5kZXZ0b29sc0V4dGVuc2lvbiEuc2VuZCh7IC4uLmFjdGlvbiwgYWN0aW9uOiBudWxsLCB0eXBlIH0sIG5ld1N0YXRlKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEhhbmRsZSB0aGUgYWN0aW9uIGZyb20gdGhlIGRldiB0b29scyBzdWJzY3JpcHRpb25cclxuICAgKi9cclxuICBkaXNwYXRjaGVkKGFjdGlvbjogTmd4c0RldnRvb2xzQWN0aW9uKSB7XHJcbiAgICBpZiAoYWN0aW9uLnR5cGUgPT09ICdESVNQQVRDSCcpIHtcclxuICAgICAgaWYgKFxyXG4gICAgICAgIGFjdGlvbi5wYXlsb2FkLnR5cGUgPT09ICdKVU1QX1RPX0FDVElPTicgfHxcclxuICAgICAgICBhY3Rpb24ucGF5bG9hZC50eXBlID09PSAnSlVNUF9UT19TVEFURSdcclxuICAgICAgKSB7XHJcbiAgICAgICAgY29uc3QgcHJldlN0YXRlID0gSlNPTi5wYXJzZShhY3Rpb24uc3RhdGUpO1xyXG4gICAgICAgIHRoaXMuc3RvcmUucmVzZXQocHJldlN0YXRlKTtcclxuICAgICAgfSBlbHNlIGlmIChhY3Rpb24ucGF5bG9hZC50eXBlID09PSAnVE9HR0xFX0FDVElPTicpIHtcclxuICAgICAgICBjb25zb2xlLndhcm4oJ1NraXAgaXMgbm90IHN1cHBvcnRlZCBhdCB0aGlzIHRpbWUuJyk7XHJcbiAgICAgIH0gZWxzZSBpZiAoYWN0aW9uLnBheWxvYWQudHlwZSA9PT0gJ0lNUE9SVF9TVEFURScpIHtcclxuICAgICAgICBjb25zdCB7XHJcbiAgICAgICAgICBhY3Rpb25zQnlJZCxcclxuICAgICAgICAgIGNvbXB1dGVkU3RhdGVzLFxyXG4gICAgICAgICAgY3VycmVudFN0YXRlSW5kZXhcclxuICAgICAgICB9ID0gYWN0aW9uLnBheWxvYWQubmV4dExpZnRlZFN0YXRlO1xyXG4gICAgICAgIHRoaXMuZGV2dG9vbHNFeHRlbnNpb24hLmluaXQoY29tcHV0ZWRTdGF0ZXNbMF0uc3RhdGUpO1xyXG4gICAgICAgIE9iamVjdC5rZXlzKGFjdGlvbnNCeUlkKVxyXG4gICAgICAgICAgLmZpbHRlcihhY3Rpb25JZCA9PiBhY3Rpb25JZCAhPT0gJzAnKVxyXG4gICAgICAgICAgLmZvckVhY2goYWN0aW9uSWQgPT5cclxuICAgICAgICAgICAgdGhpcy5kZXZ0b29sc0V4dGVuc2lvbiEuc2VuZChhY3Rpb25zQnlJZFthY3Rpb25JZF0sIGNvbXB1dGVkU3RhdGVzW2FjdGlvbklkXS5zdGF0ZSlcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgdGhpcy5zdG9yZS5yZXNldChjb21wdXRlZFN0YXRlc1tjdXJyZW50U3RhdGVJbmRleF0uc3RhdGUpO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2UgaWYgKGFjdGlvbi50eXBlID09PSAnQUNUSU9OJykge1xyXG4gICAgICBjb25zdCBhY3Rpb25QYXlsb2FkID0gSlNPTi5wYXJzZShhY3Rpb24ucGF5bG9hZCk7XHJcbiAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goYWN0aW9uUGF5bG9hZCk7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiJdfQ==
220
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGV2dG9vbHMucGx1Z2luLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQG5neHMvZGV2dG9vbHMtcGx1Z2luLyIsInNvdXJjZXMiOlsic3JjL2RldnRvb2xzLnBsdWdpbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBYSxPQUFPLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekYsT0FBTyxFQUFFLHlCQUF5QixFQUFnQyxLQUFLLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDN0YsT0FBTyxFQUFFLEdBQUcsRUFBRSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVqRCxPQUFPLEVBQ0wscUJBQXFCLEVBSXRCLE1BQU0sV0FBVyxDQUFDOzs7SUFHakIsVUFBVyxVQUFVO0lBQ3JCLFFBQVMsUUFBUTs7OztJQUlqQixjQUFlLGdCQUFnQjtJQUMvQixhQUFjLGVBQWU7SUFDN0IsY0FBZSxlQUFlO0lBQzlCLGFBQWMsY0FBYzs7Ozs7O0FBUTlCLE1BQU0sT0FBTyx1QkFBdUI7Ozs7OztJQU9sQyxZQUN5QyxRQUE2QixFQUM1RCxTQUFtQixFQUNuQixPQUFlO1FBRmdCLGFBQVEsR0FBUixRQUFRLENBQXFCO1FBQzVELGNBQVMsR0FBVCxTQUFTLENBQVU7UUFDbkIsWUFBTyxHQUFQLE9BQU8sQ0FBUTtRQVRqQixzQkFBaUIsR0FBaUMsSUFBSSxDQUFDO1FBQzlDLG1CQUFjLEdBQzdCLE9BQU8sQ0FBQyw4QkFBOEIsQ0FBQyxJQUFJLE9BQU8sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1FBRWxFLGdCQUFXLEdBQXdCLElBQUksQ0FBQztRQU85QyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDakIsQ0FBQzs7OztJQUVELFdBQVc7UUFDVCxJQUFJLElBQUksQ0FBQyxXQUFXLEtBQUssSUFBSSxFQUFFO1lBQzdCLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztTQUNwQjtRQUNE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OztZQXZIRixVQUFVOzs7OzRDQVNOLE1BQU0sU0FBQyxxQkFBcUI7WUFwQ0osUUFBUTtZQUFFLE1BQU07Ozs7Ozs7SUE2QjNDLG9EQUErRDs7Ozs7SUFDL0QsaURBQzBFOzs7OztJQUUxRSw4Q0FBZ0Q7Ozs7O0lBRzlDLDJDQUFvRTs7Ozs7SUFDcEUsNENBQTJCOzs7OztJQUMzQiwwQ0FBdUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUsIEluamVjdG9yLCBOZ1pvbmUsIE9uRGVzdHJveSwgybVnbG9iYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgZ2V0QWN0aW9uVHlwZUZyb21JbnN0YW5jZSwgTmd4c05leHRQbHVnaW5GbiwgTmd4c1BsdWdpbiwgU3RvcmUgfSBmcm9tICdAbmd4cy9zdG9yZSc7XHJcbmltcG9ydCB7IHRhcCwgY2F0Y2hFcnJvciB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuXHJcbmltcG9ydCB7XHJcbiAgTkdYU19ERVZUT09MU19PUFRJT05TLFxyXG4gIE5neHNEZXZ0b29sc0FjdGlvbixcclxuICBOZ3hzRGV2dG9vbHNFeHRlbnNpb24sXHJcbiAgTmd4c0RldnRvb2xzT3B0aW9uc1xyXG59IGZyb20gJy4vc3ltYm9scyc7XHJcblxyXG5jb25zdCBlbnVtIFJlZHV4RGV2dG9vbHNBY3Rpb25UeXBlIHtcclxuICBEaXNwYXRjaCA9ICdESVNQQVRDSCcsXHJcbiAgQWN0aW9uID0gJ0FDVElPTidcclxufVxyXG5cclxuY29uc3QgZW51bSBSZWR1eERldnRvb2xzUGF5bG9hZFR5cGUge1xyXG4gIEp1bXBUb0FjdGlvbiA9ICdKVU1QX1RPX0FDVElPTicsXHJcbiAgSnVtcFRvU3RhdGUgPSAnSlVNUF9UT19TVEFURScsXHJcbiAgVG9nZ2xlQWN0aW9uID0gJ1RPR0dMRV9BQ1RJT04nLFxyXG4gIEltcG9ydFN0YXRlID0gJ0lNUE9SVF9TVEFURSdcclxufVxyXG5cclxuLyoqXHJcbiAqIEFkZHMgc3VwcG9ydCBmb3IgdGhlIFJlZHV4IERldnRvb2xzIGV4dGVuc2lvbjpcclxuICogaHR0cDovL2V4dGVuc2lvbi5yZW1vdGVkZXYuaW8vXHJcbiAqL1xyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBjbGFzcyBOZ3hzUmVkdXhEZXZ0b29sc1BsdWdpbiBpbXBsZW1lbnRzIE9uRGVzdHJveSwgTmd4c1BsdWdpbiB7XHJcbiAgcHJpdmF0ZSBkZXZ0b29sc0V4dGVuc2lvbjogTmd4c0RldnRvb2xzRXh0ZW5zaW9uIHwgbnVsbCA9IG51bGw7XHJcbiAgcHJpdmF0ZSByZWFkb25seSBnbG9iYWxEZXZ0b29scyA9XHJcbiAgICDJtWdsb2JhbFsnX19SRURVWF9ERVZUT09MU19FWFRFTlNJT05fXyddIHx8IMm1Z2xvYmFsWydkZXZUb29sc0V4dGVuc2lvbiddO1xyXG5cclxuICBwcml2YXRlIHVuc3Vic2NyaWJlOiBWb2lkRnVuY3Rpb24gfCBudWxsID0gbnVsbDtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBASW5qZWN0KE5HWFNfREVWVE9PTFNfT1BUSU9OUykgcHJpdmF0ZSBfb3B0aW9uczogTmd4c0RldnRvb2xzT3B0aW9ucyxcclxuICAgIHByaXZhdGUgX2luamVjdG9yOiBJbmplY3RvcixcclxuICAgIHByaXZhdGUgX25nWm9uZTogTmdab25lXHJcbiAgKSB7XHJcbiAgICB0aGlzLmNvbm5lY3QoKTtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMudW5zdWJzY3JpYmUgIT09IG51bGwpIHtcclxuICAgICAgdGhpcy51bnN1YnNjcmliZSgpO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuZ2xvYmFsRGV2dG9vbHMpIHtcclxuICAgICAgdGhpcy5nbG9iYWxEZXZ0b29scy5kaXNjb25uZWN0KCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBMYXp5IGdldCB0aGUgc3RvcmUgZm9yIGNpcmN1bGFyIGRlcGVuZGVuY3kgaXNzdWVzXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBnZXQgc3RvcmUoKTogU3RvcmUge1xyXG4gICAgcmV0dXJuIHRoaXMuX2luamVjdG9yLmdldDxTdG9yZT4oU3RvcmUpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogTWlkZGxld2FyZSBoYW5kbGUgZnVuY3Rpb25cclxuICAgKi9cclxuICBoYW5kbGUoc3RhdGU6IGFueSwgYWN0aW9uOiBhbnksIG5leHQ6IE5neHNOZXh0UGx1Z2luRm4pIHtcclxuICAgIGlmICghdGhpcy5kZXZ0b29sc0V4dGVuc2lvbiB8fCB0aGlzLl9vcHRpb25zLmRpc2FibGVkKSB7XHJcbiAgICAgIHJldHVybiBuZXh0KHN0YXRlLCBhY3Rpb24pO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBuZXh0KHN0YXRlLCBhY3Rpb24pLnBpcGUoXHJcbiAgICAgIGNhdGNoRXJyb3IoZXJyb3IgPT4ge1xyXG4gICAgICAgIGNvbnN0IG5ld1N0YXRlID0gdGhpcy5zdG9yZS5zbmFwc2hvdCgpO1xyXG4gICAgICAgIHRoaXMuc2VuZFRvRGV2VG9vbHMoc3RhdGUsIGFjdGlvbiwgbmV3U3RhdGUpO1xyXG4gICAgICAgIHRocm93IGVycm9yO1xyXG4gICAgICB9KSxcclxuICAgICAgdGFwKG5ld1N0YXRlID0+IHtcclxuICAgICAgICB0aGlzLnNlbmRUb0RldlRvb2xzKHN0YXRlLCBhY3Rpb24sIG5ld1N0YXRlKTtcclxuICAgICAgfSlcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNlbmRUb0RldlRvb2xzKHN0YXRlOiBhbnksIGFjdGlvbjogYW55LCBuZXdTdGF0ZTogYW55KSB7XHJcbiAgICBjb25zdCB0eXBlID0gZ2V0QWN0aW9uVHlwZUZyb21JbnN0YW5jZShhY3Rpb24pO1xyXG4gICAgLy8gaWYgaW5pdCBhY3Rpb24sIHNlbmQgaW5pdGlhbCBzdGF0ZSB0byBkZXYgdG9vbHNcclxuICAgIGNvbnN0IGlzSW5pdEFjdGlvbiA9IHR5cGUgPT09ICdAQElOSVQnO1xyXG4gICAgaWYgKGlzSW5pdEFjdGlvbikge1xyXG4gICAgICB0aGlzLmRldnRvb2xzRXh0ZW5zaW9uIS5pbml0KHN0YXRlKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuZGV2dG9vbHNFeHRlbnNpb24hLnNlbmQoeyAuLi5hY3Rpb24sIGFjdGlvbjogbnVsbCwgdHlwZSB9LCBuZXdTdGF0ZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBIYW5kbGUgdGhlIGFjdGlvbiBmcm9tIHRoZSBkZXYgdG9vbHMgc3Vic2NyaXB0aW9uXHJcbiAgICovXHJcbiAgZGlzcGF0Y2hlZChhY3Rpb246IE5neHNEZXZ0b29sc0FjdGlvbikge1xyXG4gICAgaWYgKGFjdGlvbi50eXBlID09PSBSZWR1eERldnRvb2xzQWN0aW9uVHlwZS5EaXNwYXRjaCkge1xyXG4gICAgICBpZiAoXHJcbiAgICAgICAgYWN0aW9uLnBheWxvYWQudHlwZSA9PT0gUmVkdXhEZXZ0b29sc1BheWxvYWRUeXBlLkp1bXBUb0FjdGlvbiB8fFxyXG4gICAgICAgIGFjdGlvbi5wYXlsb2FkLnR5cGUgPT09IFJlZHV4RGV2dG9vbHNQYXlsb2FkVHlwZS5KdW1wVG9TdGF0ZVxyXG4gICAgICApIHtcclxuICAgICAgICBjb25zdCBwcmV2U3RhdGUgPSBKU09OLnBhcnNlKGFjdGlvbi5zdGF0ZSk7XHJcbiAgICAgICAgdGhpcy5zdG9yZS5yZXNldChwcmV2U3RhdGUpO1xyXG4gICAgICB9IGVsc2UgaWYgKGFjdGlvbi5wYXlsb2FkLnR5cGUgPT09IFJlZHV4RGV2dG9vbHNQYXlsb2FkVHlwZS5Ub2dnbGVBY3Rpb24pIHtcclxuICAgICAgICBjb25zb2xlLndhcm4oJ1NraXAgaXMgbm90IHN1cHBvcnRlZCBhdCB0aGlzIHRpbWUuJyk7XHJcbiAgICAgIH0gZWxzZSBpZiAoYWN0aW9uLnBheWxvYWQudHlwZSA9PT0gUmVkdXhEZXZ0b29sc1BheWxvYWRUeXBlLkltcG9ydFN0YXRlKSB7XHJcbiAgICAgICAgY29uc3Qge1xyXG4gICAgICAgICAgYWN0aW9uc0J5SWQsXHJcbiAgICAgICAgICBjb21wdXRlZFN0YXRlcyxcclxuICAgICAgICAgIGN1cnJlbnRTdGF0ZUluZGV4XHJcbiAgICAgICAgfSA9IGFjdGlvbi5wYXlsb2FkLm5leHRMaWZ0ZWRTdGF0ZTtcclxuICAgICAgICB0aGlzLmRldnRvb2xzRXh0ZW5zaW9uIS5pbml0KGNvbXB1dGVkU3RhdGVzWzBdLnN0YXRlKTtcclxuICAgICAgICBPYmplY3Qua2V5cyhhY3Rpb25zQnlJZClcclxuICAgICAgICAgIC5maWx0ZXIoYWN0aW9uSWQgPT4gYWN0aW9uSWQgIT09ICcwJylcclxuICAgICAgICAgIC5mb3JFYWNoKGFjdGlvbklkID0+XHJcbiAgICAgICAgICAgIHRoaXMuZGV2dG9vbHNFeHRlbnNpb24hLnNlbmQoYWN0aW9uc0J5SWRbYWN0aW9uSWRdLCBjb21wdXRlZFN0YXRlc1thY3Rpb25JZF0uc3RhdGUpXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIHRoaXMuc3RvcmUucmVzZXQoY29tcHV0ZWRTdGF0ZXNbY3VycmVudFN0YXRlSW5kZXhdLnN0YXRlKTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIGlmIChhY3Rpb24udHlwZSA9PT0gUmVkdXhEZXZ0b29sc0FjdGlvblR5cGUuQWN0aW9uKSB7XHJcbiAgICAgIGNvbnN0IGFjdGlvblBheWxvYWQgPSBKU09OLnBhcnNlKGFjdGlvbi5wYXlsb2FkKTtcclxuICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChhY3Rpb25QYXlsb2FkKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgY29ubmVjdCgpOiB2b2lkIHtcclxuICAgIGlmICghdGhpcy5nbG9iYWxEZXZ0b29scyB8fCB0aGlzLl9vcHRpb25zLmRpc2FibGVkKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICAvLyBUaGUgYGNvbm5lY3RgIG1ldGhvZCBhZGRzIGBtZXNzYWdlYCBldmVudCBsaXN0ZW5lciBzaW5jZSBpdCBjb21tdW5pY2F0ZXNcclxuICAgIC8vIHdpdGggYW4gZXh0ZW5zaW9uIHRocm91Z2ggYHdpbmRvdy5wb3N0TWVzc2FnZWAgYW5kIG1lc3NhZ2UgZXZlbnRzLlxyXG4gICAgLy8gV2UgaGFuZGxlIG9ubHkgMiBldmVudHM7IHRodXMsIHdlIGRvbid0IHdhbnQgdG8gcnVuIG1hbnkgY2hhbmdlIGRldGVjdGlvbnNcclxuICAgIC8vIGJlY2F1c2UgdGhlIGV4dGVuc2lvbiBzZW5kcyBldmVudHMgdGhhdCB3ZSBkb24ndCBoYXZlIHRvIGhhbmRsZS5cclxuICAgIHRoaXMuZGV2dG9vbHNFeHRlbnNpb24gPSB0aGlzLl9uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoXHJcbiAgICAgICgpID0+IDxOZ3hzRGV2dG9vbHNFeHRlbnNpb24+dGhpcy5nbG9iYWxEZXZ0b29scy5jb25uZWN0KHRoaXMuX29wdGlvbnMpXHJcbiAgICApO1xyXG5cclxuICAgIHRoaXMudW5zdWJzY3JpYmUgPSB0aGlzLmRldnRvb2xzRXh0ZW5zaW9uLnN1YnNjcmliZShhY3Rpb24gPT4ge1xyXG4gICAgICBpZiAoXHJcbiAgICAgICAgYWN0aW9uLnR5cGUgPT09IFJlZHV4RGV2dG9vbHNBY3Rpb25UeXBlLkRpc3BhdGNoIHx8XHJcbiAgICAgICAgYWN0aW9uLnR5cGUgPT09IFJlZHV4RGV2dG9vbHNBY3Rpb25UeXBlLkFjdGlvblxyXG4gICAgICApIHtcclxuICAgICAgICB0aGlzLl9uZ1pvbmUucnVuKCgpID0+IHtcclxuICAgICAgICAgIHRoaXMuZGlzcGF0Y2hlZChhY3Rpb24pO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcbn1cclxuIl19
@@ -75,4 +75,4 @@ if (false) {
75
75
  }
76
76
  /** @type {?} */
77
77
  export const NGXS_DEVTOOLS_OPTIONS = new InjectionToken('NGXS_DEVTOOLS_OPTIONS');
78
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3ltYm9scy5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BuZ3hzL2RldnRvb2xzLXBsdWdpbi8iLCJzb3VyY2VzIjpbInNyYy9zeW1ib2xzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7OztBQU0vQywyQ0FJQzs7Ozs7O0lBSEMsNERBQXVCOzs7Ozs7SUFDdkIsb0VBQXFDOzs7OztJQUNyQyw4REFBbUU7Ozs7O0FBR3JFLHdDQU1DOzs7SUFMQyxrQ0FBYTs7SUFDYixxQ0FBYTs7SUFDYixtQ0FBVzs7SUFDWCxnQ0FBVzs7SUFDWCxvQ0FBZTs7Ozs7QUFHakIseUNBeUJDOzs7Ozs7SUFyQkMsbUNBQWM7Ozs7O0lBS2QsdUNBQW1COzs7OztJQUtuQixxQ0FBZ0I7Ozs7O0lBS2hCLDhDQUF3Qzs7Ozs7SUFLeEMsNkNBQXNDOzs7QUFHeEMsTUFBTSxPQUFPLHFCQUFxQixHQUFHLElBQUksY0FBYyxDQUFDLHVCQUF1QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0aW9uVG9rZW4gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XHJcblxyXG4vKipcclxuICogSW50ZXJmYWNlIGZvciB0aGUgcmVkdXgtZGV2dG9vbHMtZXh0ZW5zaW9uIEFQSS5cclxuICovXHJcbmV4cG9ydCBpbnRlcmZhY2UgTmd4c0RldnRvb2xzRXh0ZW5zaW9uIHtcclxuICBpbml0KHN0YXRlOiBhbnkpOiB2b2lkO1xyXG4gIHNlbmQoYWN0aW9uOiBhbnksIHN0YXRlPzogYW55KTogdm9pZDtcclxuICBzdWJzY3JpYmUoZm46IChtZXNzYWdlOiBOZ3hzRGV2dG9vbHNBY3Rpb24pID0+IHZvaWQpOiBTdWJzY3JpcHRpb247XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgTmd4c0RldnRvb2xzQWN0aW9uIHtcclxuICB0eXBlOiBzdHJpbmc7XHJcbiAgcGF5bG9hZDogYW55O1xyXG4gIHN0YXRlOiBhbnk7XHJcbiAgaWQ6IG51bWJlcjtcclxuICBzb3VyY2U6IHN0cmluZztcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBOZ3hzRGV2dG9vbHNPcHRpb25zIHtcclxuICAvKipcclxuICAgKiBUaGUgbmFtZSBvZiB0aGUgZXh0ZW5zaW9uXHJcbiAgICovXHJcbiAgbmFtZT86IHN0cmluZztcclxuXHJcbiAgLyoqXHJcbiAgICogV2hldGhlciB0aGUgZGV2IHRvb2xzIGlzIGVuYWJsZWQgb3Igbm90ZS4gVXNlZnVsIGZvciBzZXR0aW5nIGR1cmluZyBwcm9kdWN0aW9uLlxyXG4gICAqL1xyXG4gIGRpc2FibGVkPzogYm9vbGVhbjtcclxuXHJcbiAgLyoqXHJcbiAgICogTWF4IG51bWJlciBvZiBlbnRpcmllcyB0byBrZWVwLlxyXG4gICAqL1xyXG4gIG1heEFnZT86IG51bWJlcjtcclxuXHJcbiAgLyoqXHJcbiAgICogUmVmb3JtYXQgYWN0aW9ucyBiZWZvcmUgc2VuZGluZyB0byBkZXYgdG9vbHNcclxuICAgKi9cclxuICBhY3Rpb25TYW5pdGl6ZXI/OiAoYWN0aW9uOiBhbnkpID0+IHZvaWQ7XHJcblxyXG4gIC8qKlxyXG4gICAqIFJlZm9ybWF0IHN0YXRlIGJlZm9yZSBzZW5kaW5nIHRvIGRldnRvb2xzXHJcbiAgICovXHJcbiAgc3RhdGVTYW5pdGl6ZXI/OiAoc3RhdGU6IGFueSkgPT4gdm9pZDtcclxufVxyXG5cclxuZXhwb3J0IGNvbnN0IE5HWFNfREVWVE9PTFNfT1BUSU9OUyA9IG5ldyBJbmplY3Rpb25Ub2tlbignTkdYU19ERVZUT09MU19PUFRJT05TJyk7XHJcbiJdfQ==
78
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3ltYm9scy5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BuZ3hzL2RldnRvb2xzLXBsdWdpbi8iLCJzb3VyY2VzIjpbInNyYy9zeW1ib2xzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7OztBQUsvQywyQ0FJQzs7Ozs7O0lBSEMsNERBQXVCOzs7Ozs7SUFDdkIsb0VBQXFDOzs7OztJQUNyQyw4REFBbUU7Ozs7O0FBR3JFLHdDQU1DOzs7SUFMQyxrQ0FBYTs7SUFDYixxQ0FBYTs7SUFDYixtQ0FBVzs7SUFDWCxnQ0FBVzs7SUFDWCxvQ0FBZTs7Ozs7QUFHakIseUNBeUJDOzs7Ozs7SUFyQkMsbUNBQWM7Ozs7O0lBS2QsdUNBQW1COzs7OztJQUtuQixxQ0FBZ0I7Ozs7O0lBS2hCLDhDQUF3Qzs7Ozs7SUFLeEMsNkNBQXNDOzs7QUFHeEMsTUFBTSxPQUFPLHFCQUFxQixHQUFHLElBQUksY0FBYyxDQUFDLHVCQUF1QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0aW9uVG9rZW4gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbi8qKlxyXG4gKiBJbnRlcmZhY2UgZm9yIHRoZSByZWR1eC1kZXZ0b29scy1leHRlbnNpb24gQVBJLlxyXG4gKi9cclxuZXhwb3J0IGludGVyZmFjZSBOZ3hzRGV2dG9vbHNFeHRlbnNpb24ge1xyXG4gIGluaXQoc3RhdGU6IGFueSk6IHZvaWQ7XHJcbiAgc2VuZChhY3Rpb246IGFueSwgc3RhdGU/OiBhbnkpOiB2b2lkO1xyXG4gIHN1YnNjcmliZShmbjogKG1lc3NhZ2U6IE5neHNEZXZ0b29sc0FjdGlvbikgPT4gdm9pZCk6IFZvaWRGdW5jdGlvbjtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBOZ3hzRGV2dG9vbHNBY3Rpb24ge1xyXG4gIHR5cGU6IHN0cmluZztcclxuICBwYXlsb2FkOiBhbnk7XHJcbiAgc3RhdGU6IGFueTtcclxuICBpZDogbnVtYmVyO1xyXG4gIHNvdXJjZTogc3RyaW5nO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIE5neHNEZXZ0b29sc09wdGlvbnMge1xyXG4gIC8qKlxyXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBleHRlbnNpb25cclxuICAgKi9cclxuICBuYW1lPzogc3RyaW5nO1xyXG5cclxuICAvKipcclxuICAgKiBXaGV0aGVyIHRoZSBkZXYgdG9vbHMgaXMgZW5hYmxlZCBvciBub3RlLiBVc2VmdWwgZm9yIHNldHRpbmcgZHVyaW5nIHByb2R1Y3Rpb24uXHJcbiAgICovXHJcbiAgZGlzYWJsZWQ/OiBib29sZWFuO1xyXG5cclxuICAvKipcclxuICAgKiBNYXggbnVtYmVyIG9mIGVudGlyaWVzIHRvIGtlZXAuXHJcbiAgICovXHJcbiAgbWF4QWdlPzogbnVtYmVyO1xyXG5cclxuICAvKipcclxuICAgKiBSZWZvcm1hdCBhY3Rpb25zIGJlZm9yZSBzZW5kaW5nIHRvIGRldiB0b29sc1xyXG4gICAqL1xyXG4gIGFjdGlvblNhbml0aXplcj86IChhY3Rpb246IGFueSkgPT4gdm9pZDtcclxuXHJcbiAgLyoqXHJcbiAgICogUmVmb3JtYXQgc3RhdGUgYmVmb3JlIHNlbmRpbmcgdG8gZGV2dG9vbHNcclxuICAgKi9cclxuICBzdGF0ZVNhbml0aXplcj86IChzdGF0ZTogYW55KSA9PiB2b2lkO1xyXG59XHJcblxyXG5leHBvcnQgY29uc3QgTkdYU19ERVZUT09MU19PUFRJT05TID0gbmV3IEluamVjdGlvblRva2VuKCdOR1hTX0RFVlRPT0xTX09QVElPTlMnKTtcclxuIl19
@@ -3,32 +3,50 @@
3
3
  * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
4
4
  */
5
5
  import * as tslib_1 from "tslib";
6
- import { Inject, Injectable, Injector } from '@angular/core';
6
+ import { Inject, Injectable, Injector, NgZone, ɵglobal } from '@angular/core';
7
7
  import { getActionTypeFromInstance, Store } from '@ngxs/store';
8
8
  import { tap, catchError } from 'rxjs/operators';
9
9
  import { NGXS_DEVTOOLS_OPTIONS } from './symbols';
10
+ /** @enum {string} */
11
+ var ReduxDevtoolsActionType = {
12
+ Dispatch: 'DISPATCH',
13
+ Action: 'ACTION',
14
+ };
15
+ /** @enum {string} */
16
+ var ReduxDevtoolsPayloadType = {
17
+ JumpToAction: 'JUMP_TO_ACTION',
18
+ JumpToState: 'JUMP_TO_STATE',
19
+ ToggleAction: 'TOGGLE_ACTION',
20
+ ImportState: 'IMPORT_STATE',
21
+ };
10
22
  /**
11
23
  * Adds support for the Redux Devtools extension:
12
24
  * http://extension.remotedev.io/
13
25
  */
14
26
  var NgxsReduxDevtoolsPlugin = /** @class */ (function () {
15
- function NgxsReduxDevtoolsPlugin(_options, _injector) {
16
- var _this = this;
27
+ function NgxsReduxDevtoolsPlugin(_options, _injector, _ngZone) {
17
28
  this._options = _options;
18
29
  this._injector = _injector;
30
+ this._ngZone = _ngZone;
19
31
  this.devtoolsExtension = null;
20
- this.windowObj = typeof window !== 'undefined' ? window : {};
21
- /** @type {?} */
22
- var globalDevtools = this.windowObj['__REDUX_DEVTOOLS_EXTENSION__'] || this.windowObj['devToolsExtension'];
23
- if (globalDevtools) {
24
- this.devtoolsExtension = (/** @type {?} */ (globalDevtools.connect(_options)));
25
- this.devtoolsExtension.subscribe((/**
26
- * @param {?} a
27
- * @return {?}
28
- */
29
- function (a) { return _this.dispatched(a); }));
30
- }
32
+ this.globalDevtools = ɵglobal['__REDUX_DEVTOOLS_EXTENSION__'] || ɵglobal['devToolsExtension'];
33
+ this.unsubscribe = null;
34
+ this.connect();
31
35
  }
36
+ /**
37
+ * @return {?}
38
+ */
39
+ NgxsReduxDevtoolsPlugin.prototype.ngOnDestroy = /**
40
+ * @return {?}
41
+ */
42
+ function () {
43
+ if (this.unsubscribe !== null) {
44
+ this.unsubscribe();
45
+ }
46
+ if (this.globalDevtools) {
47
+ this.globalDevtools.disconnect();
48
+ }
49
+ };
32
50
  Object.defineProperty(NgxsReduxDevtoolsPlugin.prototype, "store", {
33
51
  /**
34
52
  * Lazy get the store for circular dependency issues
@@ -63,9 +81,7 @@ var NgxsReduxDevtoolsPlugin = /** @class */ (function () {
63
81
  */
64
82
  function (state, action, next) {
65
83
  var _this = this;
66
- /** @type {?} */
67
- var isDisabled = this._options && this._options.disabled;
68
- if (!this.devtoolsExtension || isDisabled) {
84
+ if (!this.devtoolsExtension || this._options.disabled) {
69
85
  return next(state, action);
70
86
  }
71
87
  return next(state, action).pipe(catchError((/**
@@ -127,17 +143,17 @@ var NgxsReduxDevtoolsPlugin = /** @class */ (function () {
127
143
  */
128
144
  function (action) {
129
145
  var _this = this;
130
- if (action.type === 'DISPATCH') {
131
- if (action.payload.type === 'JUMP_TO_ACTION' ||
132
- action.payload.type === 'JUMP_TO_STATE') {
146
+ if (action.type === "DISPATCH" /* Dispatch */) {
147
+ if (action.payload.type === "JUMP_TO_ACTION" /* JumpToAction */ ||
148
+ action.payload.type === "JUMP_TO_STATE" /* JumpToState */) {
133
149
  /** @type {?} */
134
150
  var prevState = JSON.parse(action.state);
135
151
  this.store.reset(prevState);
136
152
  }
137
- else if (action.payload.type === 'TOGGLE_ACTION') {
153
+ else if (action.payload.type === "TOGGLE_ACTION" /* ToggleAction */) {
138
154
  console.warn('Skip is not supported at this time.');
139
155
  }
140
- else if (action.payload.type === 'IMPORT_STATE') {
156
+ else if (action.payload.type === "IMPORT_STATE" /* ImportState */) {
141
157
  var _a = action.payload.nextLiftedState, actionsById_1 = _a.actionsById, computedStates_1 = _a.computedStates, currentStateIndex = _a.currentStateIndex;
142
158
  (/** @type {?} */ (this.devtoolsExtension)).init(computedStates_1[0].state);
143
159
  Object.keys(actionsById_1)
@@ -156,19 +172,57 @@ var NgxsReduxDevtoolsPlugin = /** @class */ (function () {
156
172
  this.store.reset(computedStates_1[currentStateIndex].state);
157
173
  }
158
174
  }
159
- else if (action.type === 'ACTION') {
175
+ else if (action.type === "ACTION" /* Action */) {
160
176
  /** @type {?} */
161
177
  var actionPayload = JSON.parse(action.payload);
162
178
  this.store.dispatch(actionPayload);
163
179
  }
164
180
  };
181
+ /**
182
+ * @private
183
+ * @return {?}
184
+ */
185
+ NgxsReduxDevtoolsPlugin.prototype.connect = /**
186
+ * @private
187
+ * @return {?}
188
+ */
189
+ function () {
190
+ var _this = this;
191
+ if (!this.globalDevtools || this._options.disabled) {
192
+ return;
193
+ }
194
+ // The `connect` method adds `message` event listener since it communicates
195
+ // with an extension through `window.postMessage` and message events.
196
+ // We handle only 2 events; thus, we don't want to run many change detections
197
+ // because the extension sends events that we don't have to handle.
198
+ this.devtoolsExtension = this._ngZone.runOutsideAngular((/**
199
+ * @return {?}
200
+ */
201
+ function () { return (/** @type {?} */ (_this.globalDevtools.connect(_this._options))); }));
202
+ this.unsubscribe = this.devtoolsExtension.subscribe((/**
203
+ * @param {?} action
204
+ * @return {?}
205
+ */
206
+ function (action) {
207
+ if (action.type === "DISPATCH" /* Dispatch */ ||
208
+ action.type === "ACTION" /* Action */) {
209
+ _this._ngZone.run((/**
210
+ * @return {?}
211
+ */
212
+ function () {
213
+ _this.dispatched(action);
214
+ }));
215
+ }
216
+ }));
217
+ };
165
218
  NgxsReduxDevtoolsPlugin.decorators = [
166
219
  { type: Injectable }
167
220
  ];
168
221
  /** @nocollapse */
169
222
  NgxsReduxDevtoolsPlugin.ctorParameters = function () { return [
170
223
  { type: undefined, decorators: [{ type: Inject, args: [NGXS_DEVTOOLS_OPTIONS,] }] },
171
- { type: Injector }
224
+ { type: Injector },
225
+ { type: NgZone }
172
226
  ]; };
173
227
  return NgxsReduxDevtoolsPlugin;
174
228
  }());
@@ -183,7 +237,12 @@ if (false) {
183
237
  * @type {?}
184
238
  * @private
185
239
  */
186
- NgxsReduxDevtoolsPlugin.prototype.windowObj;
240
+ NgxsReduxDevtoolsPlugin.prototype.globalDevtools;
241
+ /**
242
+ * @type {?}
243
+ * @private
244
+ */
245
+ NgxsReduxDevtoolsPlugin.prototype.unsubscribe;
187
246
  /**
188
247
  * @type {?}
189
248
  * @private
@@ -194,5 +253,10 @@ if (false) {
194
253
  * @private
195
254
  */
196
255
  NgxsReduxDevtoolsPlugin.prototype._injector;
256
+ /**
257
+ * @type {?}
258
+ * @private
259
+ */
260
+ NgxsReduxDevtoolsPlugin.prototype._ngZone;
197
261
  }
198
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGV2dG9vbHMucGx1Z2luLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQG5neHMvZGV2dG9vbHMtcGx1Z2luLyIsInNvdXJjZXMiOlsic3JjL2RldnRvb2xzLnBsdWdpbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM3RCxPQUFPLEVBQUUseUJBQXlCLEVBQWdDLEtBQUssRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUM3RixPQUFPLEVBQUUsR0FBRyxFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRWpELE9BQU8sRUFDTCxxQkFBcUIsRUFJdEIsTUFBTSxXQUFXLENBQUM7Ozs7O0FBTW5CO0lBS0UsaUNBQ3lDLFFBQTZCLEVBQzVELFNBQW1CO1FBRjdCLGlCQVVDO1FBVHdDLGFBQVEsR0FBUixRQUFRLENBQXFCO1FBQzVELGNBQVMsR0FBVCxTQUFTLENBQVU7UUFMWixzQkFBaUIsR0FBaUMsSUFBSSxDQUFDO1FBQ3ZELGNBQVMsR0FBUSxPQUFPLE1BQU0sS0FBSyxXQUFXLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDOztZQU10RSxjQUFjLEdBQ2xCLElBQUksQ0FBQyxTQUFTLENBQUMsOEJBQThCLENBQUMsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLG1CQUFtQixDQUFDO1FBQ3ZGLElBQUksY0FBYyxFQUFFO1lBQ2xCLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxtQkFBQSxjQUFjLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxFQUF5QixDQUFDO1lBQ25GLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxTQUFTOzs7O1lBQUMsVUFBQSxDQUFDLElBQUksT0FBQSxLQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxFQUFsQixDQUFrQixFQUFDLENBQUM7U0FDM0Q7SUFDSCxDQUFDO0lBS0Qsc0JBQVksMENB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T0FBQSxtQkFBQSxLQUFJLENBQUMsaUJBQWlCLEVBQUMsQ0FBQyxJQUFJLENBQUMsYUFBVyxDQUFDLFFBQVEsQ0FBQyxFQUFFLGdCQUFjLENBQUMsUUFBUSxDQUFDLENBQUMsS0FBSyxDQUFDO2dCQUFuRixDQUFtRixFQUNwRixDQUFDO2dCQUNKLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLGdCQUFjLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQzthQUMzRDtTQUNGO2FBQU0sSUFBSSxNQUFNLENBQUMsSUFBSSxLQUFLLFFBQVEsRUFBRTs7Z0JBQzdCLGFBQWEsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUM7WUFDaEQsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLENBQUM7U0FDcEM7SUFDSCxDQUFDOztnQkF2RkYsVUFBVTs7OztnREFNTixNQUFNLFNBQUMscUJBQXFCO2dCQXJCSixRQUFROztJQXVHckMsOEJBQUM7Q0FBQSxBQXhGRCxJQXdGQztTQXZGWSx1QkFBdUI7Ozs7OztJQUNsQyxvREFBd0U7Ozs7O0lBQ3hFLDRDQUE4RTs7Ozs7SUFHNUUsMkNBQW9FOzs7OztJQUNwRSw0Q0FBMkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUsIEluamVjdG9yIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IGdldEFjdGlvblR5cGVGcm9tSW5zdGFuY2UsIE5neHNOZXh0UGx1Z2luRm4sIE5neHNQbHVnaW4sIFN0b3JlIH0gZnJvbSAnQG5neHMvc3RvcmUnO1xyXG5pbXBvcnQgeyB0YXAsIGNhdGNoRXJyb3IgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcblxyXG5pbXBvcnQge1xyXG4gIE5HWFNfREVWVE9PTFNfT1BUSU9OUyxcclxuICBOZ3hzRGV2dG9vbHNBY3Rpb24sXHJcbiAgTmd4c0RldnRvb2xzRXh0ZW5zaW9uLFxyXG4gIE5neHNEZXZ0b29sc09wdGlvbnNcclxufSBmcm9tICcuL3N5bWJvbHMnO1xyXG5cclxuLyoqXHJcbiAqIEFkZHMgc3VwcG9ydCBmb3IgdGhlIFJlZHV4IERldnRvb2xzIGV4dGVuc2lvbjpcclxuICogaHR0cDovL2V4dGVuc2lvbi5yZW1vdGVkZXYuaW8vXHJcbiAqL1xyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBjbGFzcyBOZ3hzUmVkdXhEZXZ0b29sc1BsdWdpbiBpbXBsZW1lbnRzIE5neHNQbHVnaW4ge1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgZGV2dG9vbHNFeHRlbnNpb246IE5neHNEZXZ0b29sc0V4dGVuc2lvbiB8IG51bGwgPSBudWxsO1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgd2luZG93T2JqOiBhbnkgPSB0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyA/IHdpbmRvdyA6IHt9O1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIEBJbmplY3QoTkdYU19ERVZUT09MU19PUFRJT05TKSBwcml2YXRlIF9vcHRpb25zOiBOZ3hzRGV2dG9vbHNPcHRpb25zLFxyXG4gICAgcHJpdmF0ZSBfaW5qZWN0b3I6IEluamVjdG9yXHJcbiAgKSB7XHJcbiAgICBjb25zdCBnbG9iYWxEZXZ0b29scyA9XHJcbiAgICAgIHRoaXMud2luZG93T2JqWydfX1JFRFVYX0RFVlRPT0xTX0VYVEVOU0lPTl9fJ10gfHwgdGhpcy53aW5kb3dPYmpbJ2RldlRvb2xzRXh0ZW5zaW9uJ107XHJcbiAgICBpZiAoZ2xvYmFsRGV2dG9vbHMpIHtcclxuICAgICAgdGhpcy5kZXZ0b29sc0V4dGVuc2lvbiA9IGdsb2JhbERldnRvb2xzLmNvbm5lY3QoX29wdGlvbnMpIGFzIE5neHNEZXZ0b29sc0V4dGVuc2lvbjtcclxuICAgICAgdGhpcy5kZXZ0b29sc0V4dGVuc2lvbi5zdWJzY3JpYmUoYSA9PiB0aGlzLmRpc3BhdGNoZWQoYSkpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogTGF6eSBnZXQgdGhlIHN0b3JlIGZvciBjaXJjdWxhciBkZXBlbmRlbmN5IGlzc3Vlc1xyXG4gICAqL1xyXG4gIHByaXZhdGUgZ2V0IHN0b3JlKCk6IFN0b3JlIHtcclxuICAgIHJldHVybiB0aGlzLl9pbmplY3Rvci5nZXQ8U3RvcmU+KFN0b3JlKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE1pZGRsZXdhcmUgaGFuZGxlIGZ1bmN0aW9uXHJcbiAgICovXHJcbiAgaGFuZGxlKHN0YXRlOiBhbnksIGFjdGlvbjogYW55LCBuZXh0OiBOZ3hzTmV4dFBsdWdpbkZuKSB7XHJcbiAgICBjb25zdCBpc0Rpc2FibGVkID0gdGhpcy5fb3B0aW9ucyAmJiB0aGlzLl9vcHRpb25zLmRpc2FibGVkO1xyXG4gICAgaWYgKCF0aGlzLmRldnRvb2xzRXh0ZW5zaW9uIHx8IGlzRGlzYWJsZWQpIHtcclxuICAgICAgcmV0dXJuIG5leHQoc3RhdGUsIGFjdGlvbik7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIG5leHQoc3RhdGUsIGFjdGlvbikucGlwZShcclxuICAgICAgY2F0Y2hFcnJvcihlcnJvciA9PiB7XHJcbiAgICAgICAgY29uc3QgbmV3U3RhdGUgPSB0aGlzLnN0b3JlLnNuYXBzaG90KCk7XHJcbiAgICAgICAgdGhpcy5zZW5kVG9EZXZUb29scyhzdGF0ZSwgYWN0aW9uLCBuZXdTdGF0ZSk7XHJcbiAgICAgICAgdGhyb3cgZXJyb3I7XHJcbiAgICAgIH0pLFxyXG4gICAgICB0YXAobmV3U3RhdGUgPT4ge1xyXG4gICAgICAgIHRoaXMuc2VuZFRvRGV2VG9vbHMoc3RhdGUsIGFjdGlvbiwgbmV3U3RhdGUpO1xyXG4gICAgICB9KVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2VuZFRvRGV2VG9vbHMoc3RhdGU6IGFueSwgYWN0aW9uOiBhbnksIG5ld1N0YXRlOiBhbnkpIHtcclxuICAgIGNvbnN0IHR5cGUgPSBnZXRBY3Rpb25UeXBlRnJvbUluc3RhbmNlKGFjdGlvbik7XHJcbiAgICAvLyBpZiBpbml0IGFjdGlvbiwgc2VuZCBpbml0aWFsIHN0YXRlIHRvIGRldiB0b29sc1xyXG4gICAgY29uc3QgaXNJbml0QWN0aW9uID0gdHlwZSA9PT0gJ0BASU5JVCc7XHJcbiAgICBpZiAoaXNJbml0QWN0aW9uKSB7XHJcbiAgICAgIHRoaXMuZGV2dG9vbHNFeHRlbnNpb24hLmluaXQoc3RhdGUpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5kZXZ0b29sc0V4dGVuc2lvbiEuc2VuZCh7IC4uLmFjdGlvbiwgYWN0aW9uOiBudWxsLCB0eXBlIH0sIG5ld1N0YXRlKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEhhbmRsZSB0aGUgYWN0aW9uIGZyb20gdGhlIGRldiB0b29scyBzdWJzY3JpcHRpb25cclxuICAgKi9cclxuICBkaXNwYXRjaGVkKGFjdGlvbjogTmd4c0RldnRvb2xzQWN0aW9uKSB7XHJcbiAgICBpZiAoYWN0aW9uLnR5cGUgPT09ICdESVNQQVRDSCcpIHtcclxuICAgICAgaWYgKFxyXG4gICAgICAgIGFjdGlvbi5wYXlsb2FkLnR5cGUgPT09ICdKVU1QX1RPX0FDVElPTicgfHxcclxuICAgICAgICBhY3Rpb24ucGF5bG9hZC50eXBlID09PSAnSlVNUF9UT19TVEFURSdcclxuICAgICAgKSB7XHJcbiAgICAgICAgY29uc3QgcHJldlN0YXRlID0gSlNPTi5wYXJzZShhY3Rpb24uc3RhdGUpO1xyXG4gICAgICAgIHRoaXMuc3RvcmUucmVzZXQocHJldlN0YXRlKTtcclxuICAgICAgfSBlbHNlIGlmIChhY3Rpb24ucGF5bG9hZC50eXBlID09PSAnVE9HR0xFX0FDVElPTicpIHtcclxuICAgICAgICBjb25zb2xlLndhcm4oJ1NraXAgaXMgbm90IHN1cHBvcnRlZCBhdCB0aGlzIHRpbWUuJyk7XHJcbiAgICAgIH0gZWxzZSBpZiAoYWN0aW9uLnBheWxvYWQudHlwZSA9PT0gJ0lNUE9SVF9TVEFURScpIHtcclxuICAgICAgICBjb25zdCB7XHJcbiAgICAgICAgICBhY3Rpb25zQnlJZCxcclxuICAgICAgICAgIGNvbXB1dGVkU3RhdGVzLFxyXG4gICAgICAgICAgY3VycmVudFN0YXRlSW5kZXhcclxuICAgICAgICB9ID0gYWN0aW9uLnBheWxvYWQubmV4dExpZnRlZFN0YXRlO1xyXG4gICAgICAgIHRoaXMuZGV2dG9vbHNFeHRlbnNpb24hLmluaXQoY29tcHV0ZWRTdGF0ZXNbMF0uc3RhdGUpO1xyXG4gICAgICAgIE9iamVjdC5rZXlzKGFjdGlvbnNCeUlkKVxyXG4gICAgICAgICAgLmZpbHRlcihhY3Rpb25JZCA9PiBhY3Rpb25JZCAhPT0gJzAnKVxyXG4gICAgICAgICAgLmZvckVhY2goYWN0aW9uSWQgPT5cclxuICAgICAgICAgICAgdGhpcy5kZXZ0b29sc0V4dGVuc2lvbiEuc2VuZChhY3Rpb25zQnlJZFthY3Rpb25JZF0sIGNvbXB1dGVkU3RhdGVzW2FjdGlvbklkXS5zdGF0ZSlcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgdGhpcy5zdG9yZS5yZXNldChjb21wdXRlZFN0YXRlc1tjdXJyZW50U3RhdGVJbmRleF0uc3RhdGUpO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2UgaWYgKGFjdGlvbi50eXBlID09PSAnQUNUSU9OJykge1xyXG4gICAgICBjb25zdCBhY3Rpb25QYXlsb2FkID0gSlNPTi5wYXJzZShhY3Rpb24ucGF5bG9hZCk7XHJcbiAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goYWN0aW9uUGF5bG9hZCk7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiJdfQ==
262
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGV2dG9vbHMucGx1Z2luLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQG5neHMvZGV2dG9vbHMtcGx1Z2luLyIsInNvdXJjZXMiOlsic3JjL2RldnRvb2xzLnBsdWdpbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQWEsT0FBTyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pGLE9BQU8sRUFBRSx5QkFBeUIsRUFBZ0MsS0FBSyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzdGLE9BQU8sRUFBRSxHQUFHLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFakQsT0FBTyxFQUNMLHFCQUFxQixFQUl0QixNQUFNLFdBQVcsQ0FBQzs7O0lBR2pCLFVBQVcsVUFBVTtJQUNyQixRQUFTLFFBQVE7Ozs7SUFJakIsY0FBZSxnQkFBZ0I7SUFDL0IsYUFBYyxlQUFlO0lBQzdCLGNBQWUsZUFBZTtJQUM5QixhQUFjLGNBQWM7Ozs7OztBQU85QjtJQVFFLGlDQUN5QyxRQUE2QixFQUM1RCxTQUFtQixFQUNuQixPQUFlO1FBRmdCLGFBQVEsR0FBUixRQUFRLENBQXFCO1FBQzVELGNBQVMsR0FBVCxTQUFTLENBQVU7UUFDbkIsWUFBTyxHQUFQLE9BQU8sQ0FBUTtRQVRqQixzQkFBaUIsR0FBaUMsSUFBSSxDQUFDO1FBQzlDLG1CQUFjLEdBQzdCLE9BQU8sQ0FBQyw4QkFBOEIsQ0FBQyxJQUFJLE9BQU8sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1FBRWxFLGdCQUFXLEdBQXdCLElBQUksQ0FBQztRQU85QyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDakIsQ0FBQzs7OztJQUVELDZDQUFXOzs7SUFBWDtRQUNFLElBQUksSUFBSSxDQUFDLFdBQVcsS0FBSyxJQUFJLEVBQUU7WUFDN0IsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1NBQ3BCO1FBQ0QsSUFBSSxJQUFJLENB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O29CQUNmLEtBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUM7Z0JBQzFCLENBQUMsRUFBQyxDQUFDO2FBQ0o7UUFDSCxDQUFDLEVBQUMsQ0FBQztJQUNMLENBQUM7O2dCQXZIRixVQUFVOzs7O2dEQVNOLE1BQU0sU0FBQyxxQkFBcUI7Z0JBcENKLFFBQVE7Z0JBQUUsTUFBTTs7SUFtSjdDLDhCQUFDO0NBQUEsQUF4SEQsSUF3SEM7U0F2SFksdUJBQXVCOzs7Ozs7SUFDbEMsb0RBQStEOzs7OztJQUMvRCxpREFDMEU7Ozs7O0lBRTFFLDhDQUFnRDs7Ozs7SUFHOUMsMkNBQW9FOzs7OztJQUNwRSw0Q0FBMkI7Ozs7O0lBQzNCLDBDQUF1QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSwgSW5qZWN0b3IsIE5nWm9uZSwgT25EZXN0cm95LCDJtWdsb2JhbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBnZXRBY3Rpb25UeXBlRnJvbUluc3RhbmNlLCBOZ3hzTmV4dFBsdWdpbkZuLCBOZ3hzUGx1Z2luLCBTdG9yZSB9IGZyb20gJ0BuZ3hzL3N0b3JlJztcclxuaW1wb3J0IHsgdGFwLCBjYXRjaEVycm9yIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5cclxuaW1wb3J0IHtcclxuICBOR1hTX0RFVlRPT0xTX09QVElPTlMsXHJcbiAgTmd4c0RldnRvb2xzQWN0aW9uLFxyXG4gIE5neHNEZXZ0b29sc0V4dGVuc2lvbixcclxuICBOZ3hzRGV2dG9vbHNPcHRpb25zXHJcbn0gZnJvbSAnLi9zeW1ib2xzJztcclxuXHJcbmNvbnN0IGVudW0gUmVkdXhEZXZ0b29sc0FjdGlvblR5cGUge1xyXG4gIERpc3BhdGNoID0gJ0RJU1BBVENIJyxcclxuICBBY3Rpb24gPSAnQUNUSU9OJ1xyXG59XHJcblxyXG5jb25zdCBlbnVtIFJlZHV4RGV2dG9vbHNQYXlsb2FkVHlwZSB7XHJcbiAgSnVtcFRvQWN0aW9uID0gJ0pVTVBfVE9fQUNUSU9OJyxcclxuICBKdW1wVG9TdGF0ZSA9ICdKVU1QX1RPX1NUQVRFJyxcclxuICBUb2dnbGVBY3Rpb24gPSAnVE9HR0xFX0FDVElPTicsXHJcbiAgSW1wb3J0U3RhdGUgPSAnSU1QT1JUX1NUQVRFJ1xyXG59XHJcblxyXG4vKipcclxuICogQWRkcyBzdXBwb3J0IGZvciB0aGUgUmVkdXggRGV2dG9vbHMgZXh0ZW5zaW9uOlxyXG4gKiBodHRwOi8vZXh0ZW5zaW9uLnJlbW90ZWRldi5pby9cclxuICovXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIE5neHNSZWR1eERldnRvb2xzUGx1Z2luIGltcGxlbWVudHMgT25EZXN0cm95LCBOZ3hzUGx1Z2luIHtcclxuICBwcml2YXRlIGRldnRvb2xzRXh0ZW5zaW9uOiBOZ3hzRGV2dG9vbHNFeHRlbnNpb24gfCBudWxsID0gbnVsbDtcclxuICBwcml2YXRlIHJlYWRvbmx5IGdsb2JhbERldnRvb2xzID1cclxuICAgIMm1Z2xvYmFsWydfX1JFRFVYX0RFVlRPT0xTX0VYVEVOU0lPTl9fJ10gfHwgybVnbG9iYWxbJ2RldlRvb2xzRXh0ZW5zaW9uJ107XHJcblxyXG4gIHByaXZhdGUgdW5zdWJzY3JpYmU6IFZvaWRGdW5jdGlvbiB8IG51bGwgPSBudWxsO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIEBJbmplY3QoTkdYU19ERVZUT09MU19PUFRJT05TKSBwcml2YXRlIF9vcHRpb25zOiBOZ3hzRGV2dG9vbHNPcHRpb25zLFxyXG4gICAgcHJpdmF0ZSBfaW5qZWN0b3I6IEluamVjdG9yLFxyXG4gICAgcHJpdmF0ZSBfbmdab25lOiBOZ1pvbmVcclxuICApIHtcclxuICAgIHRoaXMuY29ubmVjdCgpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy51bnN1YnNjcmliZSAhPT0gbnVsbCkge1xyXG4gICAgICB0aGlzLnVuc3Vic2NyaWJlKCk7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5nbG9iYWxEZXZ0b29scykge1xyXG4gICAgICB0aGlzLmdsb2JhbERldnRvb2xzLmRpc2Nvbm5lY3QoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIExhenkgZ2V0IHRoZSBzdG9yZSBmb3IgY2lyY3VsYXIgZGVwZW5kZW5jeSBpc3N1ZXNcclxuICAgKi9cclxuICBwcml2YXRlIGdldCBzdG9yZSgpOiBTdG9yZSB7XHJcbiAgICByZXR1cm4gdGhpcy5faW5qZWN0b3IuZ2V0PFN0b3JlPihTdG9yZSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBNaWRkbGV3YXJlIGhhbmRsZSBmdW5jdGlvblxyXG4gICAqL1xyXG4gIGhhbmRsZShzdGF0ZTogYW55LCBhY3Rpb246IGFueSwgbmV4dDogTmd4c05leHRQbHVnaW5Gbikge1xyXG4gICAgaWYgKCF0aGlzLmRldnRvb2xzRXh0ZW5zaW9uIHx8IHRoaXMuX29wdGlvbnMuZGlzYWJsZWQpIHtcclxuICAgICAgcmV0dXJuIG5leHQoc3RhdGUsIGFjdGlvbik7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIG5leHQoc3RhdGUsIGFjdGlvbikucGlwZShcclxuICAgICAgY2F0Y2hFcnJvcihlcnJvciA9PiB7XHJcbiAgICAgICAgY29uc3QgbmV3U3RhdGUgPSB0aGlzLnN0b3JlLnNuYXBzaG90KCk7XHJcbiAgICAgICAgdGhpcy5zZW5kVG9EZXZUb29scyhzdGF0ZSwgYWN0aW9uLCBuZXdTdGF0ZSk7XHJcbiAgICAgICAgdGhyb3cgZXJyb3I7XHJcbiAgICAgIH0pLFxyXG4gICAgICB0YXAobmV3U3RhdGUgPT4ge1xyXG4gICAgICAgIHRoaXMuc2VuZFRvRGV2VG9vbHMoc3RhdGUsIGFjdGlvbiwgbmV3U3RhdGUpO1xyXG4gICAgICB9KVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2VuZFRvRGV2VG9vbHMoc3RhdGU6IGFueSwgYWN0aW9uOiBhbnksIG5ld1N0YXRlOiBhbnkpIHtcclxuICAgIGNvbnN0IHR5cGUgPSBnZXRBY3Rpb25UeXBlRnJvbUluc3RhbmNlKGFjdGlvbik7XHJcbiAgICAvLyBpZiBpbml0IGFjdGlvbiwgc2VuZCBpbml0aWFsIHN0YXRlIHRvIGRldiB0b29sc1xyXG4gICAgY29uc3QgaXNJbml0QWN0aW9uID0gdHlwZSA9PT0gJ0BASU5JVCc7XHJcbiAgICBpZiAoaXNJbml0QWN0aW9uKSB7XHJcbiAgICAgIHRoaXMuZGV2dG9vbHNFeHRlbnNpb24hLmluaXQoc3RhdGUpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5kZXZ0b29sc0V4dGVuc2lvbiEuc2VuZCh7IC4uLmFjdGlvbiwgYWN0aW9uOiBudWxsLCB0eXBlIH0sIG5ld1N0YXRlKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEhhbmRsZSB0aGUgYWN0aW9uIGZyb20gdGhlIGRldiB0b29scyBzdWJzY3JpcHRpb25cclxuICAgKi9cclxuICBkaXNwYXRjaGVkKGFjdGlvbjogTmd4c0RldnRvb2xzQWN0aW9uKSB7XHJcbiAgICBpZiAoYWN0aW9uLnR5cGUgPT09IFJlZHV4RGV2dG9vbHNBY3Rpb25UeXBlLkRpc3BhdGNoKSB7XHJcbiAgICAgIGlmIChcclxuICAgICAgICBhY3Rpb24ucGF5bG9hZC50eXBlID09PSBSZWR1eERldnRvb2xzUGF5bG9hZFR5cGUuSnVtcFRvQWN0aW9uIHx8XHJcbiAgICAgICAgYWN0aW9uLnBheWxvYWQudHlwZSA9PT0gUmVkdXhEZXZ0b29sc1BheWxvYWRUeXBlLkp1bXBUb1N0YXRlXHJcbiAgICAgICkge1xyXG4gICAgICAgIGNvbnN0IHByZXZTdGF0ZSA9IEpTT04ucGFyc2UoYWN0aW9uLnN0YXRlKTtcclxuICAgICAgICB0aGlzLnN0b3JlLnJlc2V0KHByZXZTdGF0ZSk7XHJcbiAgICAgIH0gZWxzZSBpZiAoYWN0aW9uLnBheWxvYWQudHlwZSA9PT0gUmVkdXhEZXZ0b29sc1BheWxvYWRUeXBlLlRvZ2dsZUFjdGlvbikge1xyXG4gICAgICAgIGNvbnNvbGUud2FybignU2tpcCBpcyBub3Qgc3VwcG9ydGVkIGF0IHRoaXMgdGltZS4nKTtcclxuICAgICAgfSBlbHNlIGlmIChhY3Rpb24ucGF5bG9hZC50eXBlID09PSBSZWR1eERldnRvb2xzUGF5bG9hZFR5cGUuSW1wb3J0U3RhdGUpIHtcclxuICAgICAgICBjb25zdCB7XHJcbiAgICAgICAgICBhY3Rpb25zQnlJZCxcclxuICAgICAgICAgIGNvbXB1dGVkU3RhdGVzLFxyXG4gICAgICAgICAgY3VycmVudFN0YXRlSW5kZXhcclxuICAgICAgICB9ID0gYWN0aW9uLnBheWxvYWQubmV4dExpZnRlZFN0YXRlO1xyXG4gICAgICAgIHRoaXMuZGV2dG9vbHNFeHRlbnNpb24hLmluaXQoY29tcHV0ZWRTdGF0ZXNbMF0uc3RhdGUpO1xyXG4gICAgICAgIE9iamVjdC5rZXlzKGFjdGlvbnNCeUlkKVxyXG4gICAgICAgICAgLmZpbHRlcihhY3Rpb25JZCA9PiBhY3Rpb25JZCAhPT0gJzAnKVxyXG4gICAgICAgICAgLmZvckVhY2goYWN0aW9uSWQgPT5cclxuICAgICAgICAgICAgdGhpcy5kZXZ0b29sc0V4dGVuc2lvbiEuc2VuZChhY3Rpb25zQnlJZFthY3Rpb25JZF0sIGNvbXB1dGVkU3RhdGVzW2FjdGlvbklkXS5zdGF0ZSlcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgdGhpcy5zdG9yZS5yZXNldChjb21wdXRlZFN0YXRlc1tjdXJyZW50U3RhdGVJbmRleF0uc3RhdGUpO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2UgaWYgKGFjdGlvbi50eXBlID09PSBSZWR1eERldnRvb2xzQWN0aW9uVHlwZS5BY3Rpb24pIHtcclxuICAgICAgY29uc3QgYWN0aW9uUGF5bG9hZCA9IEpTT04ucGFyc2UoYWN0aW9uLnBheWxvYWQpO1xyXG4gICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKGFjdGlvblBheWxvYWQpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjb25uZWN0KCk6IHZvaWQge1xyXG4gICAgaWYgKCF0aGlzLmdsb2JhbERldnRvb2xzIHx8IHRoaXMuX29wdGlvbnMuZGlzYWJsZWQpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIFRoZSBgY29ubmVjdGAgbWV0aG9kIGFkZHMgYG1lc3NhZ2VgIGV2ZW50IGxpc3RlbmVyIHNpbmNlIGl0IGNvbW11bmljYXRlc1xyXG4gICAgLy8gd2l0aCBhbiBleHRlbnNpb24gdGhyb3VnaCBgd2luZG93LnBvc3RNZXNzYWdlYCBhbmQgbWVzc2FnZSBldmVudHMuXHJcbiAgICAvLyBXZSBoYW5kbGUgb25seSAyIGV2ZW50czsgdGh1cywgd2UgZG9uJ3Qgd2FudCB0byBydW4gbWFueSBjaGFuZ2UgZGV0ZWN0aW9uc1xyXG4gICAgLy8gYmVjYXVzZSB0aGUgZXh0ZW5zaW9uIHNlbmRzIGV2ZW50cyB0aGF0IHdlIGRvbid0IGhhdmUgdG8gaGFuZGxlLlxyXG4gICAgdGhpcy5kZXZ0b29sc0V4dGVuc2lvbiA9IHRoaXMuX25nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcihcclxuICAgICAgKCkgPT4gPE5neHNEZXZ0b29sc0V4dGVuc2lvbj50aGlzLmdsb2JhbERldnRvb2xzLmNvbm5lY3QodGhpcy5fb3B0aW9ucylcclxuICAgICk7XHJcblxyXG4gICAgdGhpcy51bnN1YnNjcmliZSA9IHRoaXMuZGV2dG9vbHNFeHRlbnNpb24uc3Vic2NyaWJlKGFjdGlvbiA9PiB7XHJcbiAgICAgIGlmIChcclxuICAgICAgICBhY3Rpb24udHlwZSA9PT0gUmVkdXhEZXZ0b29sc0FjdGlvblR5cGUuRGlzcGF0Y2ggfHxcclxuICAgICAgICBhY3Rpb24udHlwZSA9PT0gUmVkdXhEZXZ0b29sc0FjdGlvblR5cGUuQWN0aW9uXHJcbiAgICAgICkge1xyXG4gICAgICAgIHRoaXMuX25nWm9uZS5ydW4oKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5kaXNwYXRjaGVkKGFjdGlvbik7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxufVxyXG4iXX0=
@@ -75,4 +75,4 @@ if (false) {
75
75
  }
76
76
  /** @type {?} */
77
77
  export var NGXS_DEVTOOLS_OPTIONS = new InjectionToken('NGXS_DEVTOOLS_OPTIONS');
78
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3ltYm9scy5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BuZ3hzL2RldnRvb2xzLXBsdWdpbi8iLCJzb3VyY2VzIjpbInNyYy9zeW1ib2xzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7OztBQU0vQywyQ0FJQzs7Ozs7O0lBSEMsNERBQXVCOzs7Ozs7SUFDdkIsb0VBQXFDOzs7OztJQUNyQyw4REFBbUU7Ozs7O0FBR3JFLHdDQU1DOzs7SUFMQyxrQ0FBYTs7SUFDYixxQ0FBYTs7SUFDYixtQ0FBVzs7SUFDWCxnQ0FBVzs7SUFDWCxvQ0FBZTs7Ozs7QUFHakIseUNBeUJDOzs7Ozs7SUFyQkMsbUNBQWM7Ozs7O0lBS2QsdUNBQW1COzs7OztJQUtuQixxQ0FBZ0I7Ozs7O0lBS2hCLDhDQUF3Qzs7Ozs7SUFLeEMsNkNBQXNDOzs7QUFHeEMsTUFBTSxLQUFPLHFCQUFxQixHQUFHLElBQUksY0FBYyxDQUFDLHVCQUF1QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0aW9uVG9rZW4gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XHJcblxyXG4vKipcclxuICogSW50ZXJmYWNlIGZvciB0aGUgcmVkdXgtZGV2dG9vbHMtZXh0ZW5zaW9uIEFQSS5cclxuICovXHJcbmV4cG9ydCBpbnRlcmZhY2UgTmd4c0RldnRvb2xzRXh0ZW5zaW9uIHtcclxuICBpbml0KHN0YXRlOiBhbnkpOiB2b2lkO1xyXG4gIHNlbmQoYWN0aW9uOiBhbnksIHN0YXRlPzogYW55KTogdm9pZDtcclxuICBzdWJzY3JpYmUoZm46IChtZXNzYWdlOiBOZ3hzRGV2dG9vbHNBY3Rpb24pID0+IHZvaWQpOiBTdWJzY3JpcHRpb247XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgTmd4c0RldnRvb2xzQWN0aW9uIHtcclxuICB0eXBlOiBzdHJpbmc7XHJcbiAgcGF5bG9hZDogYW55O1xyXG4gIHN0YXRlOiBhbnk7XHJcbiAgaWQ6IG51bWJlcjtcclxuICBzb3VyY2U6IHN0cmluZztcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBOZ3hzRGV2dG9vbHNPcHRpb25zIHtcclxuICAvKipcclxuICAgKiBUaGUgbmFtZSBvZiB0aGUgZXh0ZW5zaW9uXHJcbiAgICovXHJcbiAgbmFtZT86IHN0cmluZztcclxuXHJcbiAgLyoqXHJcbiAgICogV2hldGhlciB0aGUgZGV2IHRvb2xzIGlzIGVuYWJsZWQgb3Igbm90ZS4gVXNlZnVsIGZvciBzZXR0aW5nIGR1cmluZyBwcm9kdWN0aW9uLlxyXG4gICAqL1xyXG4gIGRpc2FibGVkPzogYm9vbGVhbjtcclxuXHJcbiAgLyoqXHJcbiAgICogTWF4IG51bWJlciBvZiBlbnRpcmllcyB0byBrZWVwLlxyXG4gICAqL1xyXG4gIG1heEFnZT86IG51bWJlcjtcclxuXHJcbiAgLyoqXHJcbiAgICogUmVmb3JtYXQgYWN0aW9ucyBiZWZvcmUgc2VuZGluZyB0byBkZXYgdG9vbHNcclxuICAgKi9cclxuICBhY3Rpb25TYW5pdGl6ZXI/OiAoYWN0aW9uOiBhbnkpID0+IHZvaWQ7XHJcblxyXG4gIC8qKlxyXG4gICAqIFJlZm9ybWF0IHN0YXRlIGJlZm9yZSBzZW5kaW5nIHRvIGRldnRvb2xzXHJcbiAgICovXHJcbiAgc3RhdGVTYW5pdGl6ZXI/OiAoc3RhdGU6IGFueSkgPT4gdm9pZDtcclxufVxyXG5cclxuZXhwb3J0IGNvbnN0IE5HWFNfREVWVE9PTFNfT1BUSU9OUyA9IG5ldyBJbmplY3Rpb25Ub2tlbignTkdYU19ERVZUT09MU19PUFRJT05TJyk7XHJcbiJdfQ==
78
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3ltYm9scy5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BuZ3hzL2RldnRvb2xzLXBsdWdpbi8iLCJzb3VyY2VzIjpbInNyYy9zeW1ib2xzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7OztBQUsvQywyQ0FJQzs7Ozs7O0lBSEMsNERBQXVCOzs7Ozs7SUFDdkIsb0VBQXFDOzs7OztJQUNyQyw4REFBbUU7Ozs7O0FBR3JFLHdDQU1DOzs7SUFMQyxrQ0FBYTs7SUFDYixxQ0FBYTs7SUFDYixtQ0FBVzs7SUFDWCxnQ0FBVzs7SUFDWCxvQ0FBZTs7Ozs7QUFHakIseUNBeUJDOzs7Ozs7SUFyQkMsbUNBQWM7Ozs7O0lBS2QsdUNBQW1COzs7OztJQUtuQixxQ0FBZ0I7Ozs7O0lBS2hCLDhDQUF3Qzs7Ozs7SUFLeEMsNkNBQXNDOzs7QUFHeEMsTUFBTSxLQUFPLHFCQUFxQixHQUFHLElBQUksY0FBYyxDQUFDLHVCQUF1QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0aW9uVG9rZW4gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbi8qKlxyXG4gKiBJbnRlcmZhY2UgZm9yIHRoZSByZWR1eC1kZXZ0b29scy1leHRlbnNpb24gQVBJLlxyXG4gKi9cclxuZXhwb3J0IGludGVyZmFjZSBOZ3hzRGV2dG9vbHNFeHRlbnNpb24ge1xyXG4gIGluaXQoc3RhdGU6IGFueSk6IHZvaWQ7XHJcbiAgc2VuZChhY3Rpb246IGFueSwgc3RhdGU/OiBhbnkpOiB2b2lkO1xyXG4gIHN1YnNjcmliZShmbjogKG1lc3NhZ2U6IE5neHNEZXZ0b29sc0FjdGlvbikgPT4gdm9pZCk6IFZvaWRGdW5jdGlvbjtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBOZ3hzRGV2dG9vbHNBY3Rpb24ge1xyXG4gIHR5cGU6IHN0cmluZztcclxuICBwYXlsb2FkOiBhbnk7XHJcbiAgc3RhdGU6IGFueTtcclxuICBpZDogbnVtYmVyO1xyXG4gIHNvdXJjZTogc3RyaW5nO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIE5neHNEZXZ0b29sc09wdGlvbnMge1xyXG4gIC8qKlxyXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBleHRlbnNpb25cclxuICAgKi9cclxuICBuYW1lPzogc3RyaW5nO1xyXG5cclxuICAvKipcclxuICAgKiBXaGV0aGVyIHRoZSBkZXYgdG9vbHMgaXMgZW5hYmxlZCBvciBub3RlLiBVc2VmdWwgZm9yIHNldHRpbmcgZHVyaW5nIHByb2R1Y3Rpb24uXHJcbiAgICovXHJcbiAgZGlzYWJsZWQ/OiBib29sZWFuO1xyXG5cclxuICAvKipcclxuICAgKiBNYXggbnVtYmVyIG9mIGVudGlyaWVzIHRvIGtlZXAuXHJcbiAgICovXHJcbiAgbWF4QWdlPzogbnVtYmVyO1xyXG5cclxuICAvKipcclxuICAgKiBSZWZvcm1hdCBhY3Rpb25zIGJlZm9yZSBzZW5kaW5nIHRvIGRldiB0b29sc1xyXG4gICAqL1xyXG4gIGFjdGlvblNhbml0aXplcj86IChhY3Rpb246IGFueSkgPT4gdm9pZDtcclxuXHJcbiAgLyoqXHJcbiAgICogUmVmb3JtYXQgc3RhdGUgYmVmb3JlIHNlbmRpbmcgdG8gZGV2dG9vbHNcclxuICAgKi9cclxuICBzdGF0ZVNhbml0aXplcj86IChzdGF0ZTogYW55KSA9PiB2b2lkO1xyXG59XHJcblxyXG5leHBvcnQgY29uc3QgTkdYU19ERVZUT09MU19PUFRJT05TID0gbmV3IEluamVjdGlvblRva2VuKCdOR1hTX0RFVlRPT0xTX09QVElPTlMnKTtcclxuIl19
@@ -1,4 +1,4 @@
1
- import { InjectionToken, Injectable, Inject, Injector, NgModule } from '@angular/core';
1
+ import { InjectionToken, ɵglobal, Injectable, Inject, Injector, NgZone, NgModule } from '@angular/core';
2
2
  import { Store, getActionTypeFromInstance, NGXS_PLUGINS } from '@ngxs/store';
3
3
  import { catchError, tap } from 'rxjs/operators';
4
4
 
@@ -83,6 +83,18 @@ const NGXS_DEVTOOLS_OPTIONS = new InjectionToken('NGXS_DEVTOOLS_OPTIONS');
83
83
  * @fileoverview added by tsickle
84
84
  * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
85
85
  */
86
+ /** @enum {string} */
87
+ const ReduxDevtoolsActionType = {
88
+ Dispatch: 'DISPATCH',
89
+ Action: 'ACTION',
90
+ };
91
+ /** @enum {string} */
92
+ const ReduxDevtoolsPayloadType = {
93
+ JumpToAction: 'JUMP_TO_ACTION',
94
+ JumpToState: 'JUMP_TO_STATE',
95
+ ToggleAction: 'TOGGLE_ACTION',
96
+ ImportState: 'IMPORT_STATE',
97
+ };
86
98
  /**
87
99
  * Adds support for the Redux Devtools extension:
88
100
  * http://extension.remotedev.io/
@@ -91,21 +103,26 @@ class NgxsReduxDevtoolsPlugin {
91
103
  /**
92
104
  * @param {?} _options
93
105
  * @param {?} _injector
106
+ * @param {?} _ngZone
94
107
  */
95
- constructor(_options, _injector) {
108
+ constructor(_options, _injector, _ngZone) {
96
109
  this._options = _options;
97
110
  this._injector = _injector;
111
+ this._ngZone = _ngZone;
98
112
  this.devtoolsExtension = null;
99
- this.windowObj = typeof window !== 'undefined' ? window : {};
100
- /** @type {?} */
101
- const globalDevtools = this.windowObj['__REDUX_DEVTOOLS_EXTENSION__'] || this.windowObj['devToolsExtension'];
102
- if (globalDevtools) {
103
- this.devtoolsExtension = (/** @type {?} */ (globalDevtools.connect(_options)));
104
- this.devtoolsExtension.subscribe((/**
105
- * @param {?} a
106
- * @return {?}
107
- */
108
- a => this.dispatched(a)));
113
+ this.globalDevtools = ɵglobal['__REDUX_DEVTOOLS_EXTENSION__'] || ɵglobal['devToolsExtension'];
114
+ this.unsubscribe = null;
115
+ this.connect();
116
+ }
117
+ /**
118
+ * @return {?}
119
+ */
120
+ ngOnDestroy() {
121
+ if (this.unsubscribe !== null) {
122
+ this.unsubscribe();
123
+ }
124
+ if (this.globalDevtools) {
125
+ this.globalDevtools.disconnect();
109
126
  }
110
127
  }
111
128
  /**
@@ -124,9 +141,7 @@ class NgxsReduxDevtoolsPlugin {
124
141
  * @return {?}
125
142
  */
126
143
  handle(state, action, next) {
127
- /** @type {?} */
128
- const isDisabled = this._options && this._options.disabled;
129
- if (!this.devtoolsExtension || isDisabled) {
144
+ if (!this.devtoolsExtension || this._options.disabled) {
130
145
  return next(state, action);
131
146
  }
132
147
  return next(state, action).pipe(catchError((/**
@@ -172,17 +187,17 @@ class NgxsReduxDevtoolsPlugin {
172
187
  * @return {?}
173
188
  */
174
189
  dispatched(action) {
175
- if (action.type === 'DISPATCH') {
176
- if (action.payload.type === 'JUMP_TO_ACTION' ||
177
- action.payload.type === 'JUMP_TO_STATE') {
190
+ if (action.type === "DISPATCH" /* Dispatch */) {
191
+ if (action.payload.type === "JUMP_TO_ACTION" /* JumpToAction */ ||
192
+ action.payload.type === "JUMP_TO_STATE" /* JumpToState */) {
178
193
  /** @type {?} */
179
194
  const prevState = JSON.parse(action.state);
180
195
  this.store.reset(prevState);
181
196
  }
182
- else if (action.payload.type === 'TOGGLE_ACTION') {
197
+ else if (action.payload.type === "TOGGLE_ACTION" /* ToggleAction */) {
183
198
  console.warn('Skip is not supported at this time.');
184
199
  }
185
- else if (action.payload.type === 'IMPORT_STATE') {
200
+ else if (action.payload.type === "IMPORT_STATE" /* ImportState */) {
186
201
  const { actionsById, computedStates, currentStateIndex } = action.payload.nextLiftedState;
187
202
  (/** @type {?} */ (this.devtoolsExtension)).init(computedStates[0].state);
188
203
  Object.keys(actionsById)
@@ -199,12 +214,44 @@ class NgxsReduxDevtoolsPlugin {
199
214
  this.store.reset(computedStates[currentStateIndex].state);
200
215
  }
201
216
  }
202
- else if (action.type === 'ACTION') {
217
+ else if (action.type === "ACTION" /* Action */) {
203
218
  /** @type {?} */
204
219
  const actionPayload = JSON.parse(action.payload);
205
220
  this.store.dispatch(actionPayload);
206
221
  }
207
222
  }
223
+ /**
224
+ * @private
225
+ * @return {?}
226
+ */
227
+ connect() {
228
+ if (!this.globalDevtools || this._options.disabled) {
229
+ return;
230
+ }
231
+ // The `connect` method adds `message` event listener since it communicates
232
+ // with an extension through `window.postMessage` and message events.
233
+ // We handle only 2 events; thus, we don't want to run many change detections
234
+ // because the extension sends events that we don't have to handle.
235
+ this.devtoolsExtension = this._ngZone.runOutsideAngular((/**
236
+ * @return {?}
237
+ */
238
+ () => (/** @type {?} */ (this.globalDevtools.connect(this._options)))));
239
+ this.unsubscribe = this.devtoolsExtension.subscribe((/**
240
+ * @param {?} action
241
+ * @return {?}
242
+ */
243
+ action => {
244
+ if (action.type === "DISPATCH" /* Dispatch */ ||
245
+ action.type === "ACTION" /* Action */) {
246
+ this._ngZone.run((/**
247
+ * @return {?}
248
+ */
249
+ () => {
250
+ this.dispatched(action);
251
+ }));
252
+ }
253
+ }));
254
+ }
208
255
  }
209
256
  NgxsReduxDevtoolsPlugin.decorators = [
210
257
  { type: Injectable }
@@ -212,7 +259,8 @@ NgxsReduxDevtoolsPlugin.decorators = [
212
259
  /** @nocollapse */
213
260
  NgxsReduxDevtoolsPlugin.ctorParameters = () => [
214
261
  { type: undefined, decorators: [{ type: Inject, args: [NGXS_DEVTOOLS_OPTIONS,] }] },
215
- { type: Injector }
262
+ { type: Injector },
263
+ { type: NgZone }
216
264
  ];
217
265
  if (false) {
218
266
  /**
@@ -224,7 +272,12 @@ if (false) {
224
272
  * @type {?}
225
273
  * @private
226
274
  */
227
- NgxsReduxDevtoolsPlugin.prototype.windowObj;
275
+ NgxsReduxDevtoolsPlugin.prototype.globalDevtools;
276
+ /**
277
+ * @type {?}
278
+ * @private
279
+ */
280
+ NgxsReduxDevtoolsPlugin.prototype.unsubscribe;
228
281
  /**
229
282
  * @type {?}
230
283
  * @private
@@ -235,6 +288,11 @@ if (false) {
235
288
  * @private
236
289
  */
237
290
  NgxsReduxDevtoolsPlugin.prototype._injector;
291
+ /**
292
+ * @type {?}
293
+ * @private
294
+ */
295
+ NgxsReduxDevtoolsPlugin.prototype._ngZone;
238
296
  }
239
297
 
240
298
  /**