{"version":3,"sources":["src/app/app.component.ts","src/app/app.component.html","src/app/guards/custom-auth.guard.ts","src/app/app.routes.ts","node_modules/@ngrx/store-devtools/fesm2022/ngrx-store-devtools.mjs","src/app/state/auth/auth.state.ts","src/app/state/auth/auth.reducer.ts","node_modules/@ngrx/effects/fesm2022/ngrx-effects.mjs","src/app/state/auth/auth.effects.ts","node_modules/@angular/platform-browser/fesm2022/animations/async.mjs","src/main.ts"],"sourcesContent":["import { Component } from '@angular/core';\nimport { RouterModule } from '@angular/router';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { HomepageComponent } from './homepage/homepage.component';\nimport { routes } from './app.routes';\nimport { HeaderComponent } from './header/header.component';\nimport { FooterComponent } from './footer/footer.component';\nimport { FaqComponent } from './faq/faq.component';\nimport { HomeSalesRefinancingComponent } from './home-sales-refinancing/home-sales-refinancing.component';\nimport { BatterySolutionsComponent } from './battery-solutions/battery-solutions.component';\nimport { FormsComponent } from './forms/forms.component';\nimport { MonitoringComponent } from './monitoring/monitoring.component';\nimport { DashboardComponent } from './dashboard/dashboard.component';\nimport { CareersComponent } from './careers/careers.component';\nimport { LicensesComponent } from './licenses/licenses.component';\nimport { EnvironmentalCommoditiesMarketsComponent } from './environmental-commodities-markets/environmental-commodities-markets.component';\nimport { ServiceChargesComponent } from './service-charges/service-charges.component';\nimport { FleetManagementComponent } from './fleet-management/fleet-management.component';\nimport { AboutComponent } from './about/about.component';\nimport { ProComponent } from './pro/pro.component';\nimport { PortalFaqComponent } from './portal-faq/portal-faq.component';\nimport { SpruceServicingComponent } from './spruce-servicing/spruce-servicing.component';\nimport { PageNotFoundComponent } from './page-not-found/page-not-found.component';\nimport { HttpClient, HttpClientModule } from '@angular/common/http';\nimport { PopUpComponent } from './pop-up/pop-up.component';\nimport { NotificationBannerComponent } from './notification-banner/notification-banner.component';\nimport { CommonModule, NgIf } from '@angular/common';\nimport { LifeEventsComponent } from './life-events/life-events.component';\n\n\n@Component({\n selector: 'app-root',\n standalone: true,\n templateUrl: './app.component.html',\n styleUrl: './app.component.scss',\n imports: [\n HttpClientModule,\n ReactiveFormsModule,\n CommonModule,\n NgIf,\n\n HomepageComponent,\n NotificationBannerComponent,\n PopUpComponent,\n RouterModule,\n HeaderComponent,\n FooterComponent,\n FaqComponent,\n HomeSalesRefinancingComponent,\n BatterySolutionsComponent,\n FormsComponent,\n MonitoringComponent,\n DashboardComponent,\n CareersComponent,\n LicensesComponent,\n EnvironmentalCommoditiesMarketsComponent,\n ServiceChargesComponent,\n AboutComponent,\n ProComponent,\n PortalFaqComponent,\n SpruceServicingComponent,\n LifeEventsComponent\n\n ],\n})\n\nexport class AppComponent {}\n","\n","import { Injectable } from '@angular/core';\nimport { CanActivate, Router } from '@angular/router';\nimport { AuthService } from '@auth0/auth0-angular';\nimport { AuthState } from '../state/auth/auth.state';\nimport { Store } from '@ngrx/store';\nimport { AuthActions } from '../state/auth/auth.actions';\nimport { map, Observable } from 'rxjs';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class CustomAuthGuard implements CanActivate {\n constructor(\n private auth: AuthService,\n private router: Router,\n private store: Store\n ) {}\n\n canActivate(): Observable {\n return this.auth.isAuthenticated$.pipe(\n map((isAuthenticated: any) => {\n if (isAuthenticated) {\n return true;\n } else {\n this.router.navigate(['']);\n return false;\n }\n })\n );\n }\n}\n","import { RouterModule, Routes } from '@angular/router';\nimport { NgModule } from '@angular/core';\nimport { PageNotFoundComponent } from './page-not-found/page-not-found.component';\nimport { CustomAuthGuard } from './guards/custom-auth.guard';\n\nexport const routes: Routes = [\n {\n path: '',\n pathMatch: 'full',\n loadComponent: () =>\n import('./homepage/homepage.component').then(\n (mod) => mod.HomepageComponent\n ),\n },\n {\n path: 'faq',\n loadComponent: () =>\n import('./faq/faq.component').then((mod) => mod.FaqComponent),\n },\n\n {\n path: 'home-sales-refinancing',\n loadComponent: () =>\n import('./home-sales-refinancing/home-sales-refinancing.component').then(\n (mod) => mod.HomeSalesRefinancingComponent\n ),\n canActivate: [CustomAuthGuard],\n },\n\n {\n path: 'battery-solutions',\n loadComponent: () =>\n import('./battery-solutions/battery-solutions.component').then(\n (mod) => mod.BatterySolutionsComponent\n ),\n },\n\n {\n path: 'forms',\n loadComponent: () =>\n import('./forms/forms.component').then((mod) => mod.FormsComponent),\n canActivate: [CustomAuthGuard],\n },\n {\n path: 'privacy-policy',\n loadComponent: () =>\n import('./privacy-policy/privacy-policy.component').then(\n (mod) => mod.PrivacyPolicyComponent\n ),\n },\n {\n path: 'monitoring',\n loadComponent: () =>\n import('./monitoring/monitoring.component').then(\n (mod) => mod.MonitoringComponent\n ),\n canActivate: [CustomAuthGuard],\n },\n {\n path: 'dashboard',\n loadComponent: () =>\n import('./dashboard/dashboard.component').then(\n (mod) => mod.DashboardComponent\n ),\n canActivate: [CustomAuthGuard],\n },\n {\n path: 'careers',\n loadComponent: () =>\n import('./careers/careers.component').then((mod) => mod.CareersComponent),\n },\n {\n path: 'licenses',\n loadComponent: () =>\n import('./licenses/licenses.component').then(\n (mod) => mod.LicensesComponent\n ),\n },\n {\n path: 'get-in-touch',\n loadComponent: () =>\n import('./contact-us/contact-us.component').then(\n (mod) => mod.ContactUsComponent\n ),\n },\n {\n path: 'service-charges',\n loadComponent: () =>\n import('./service-charges/service-charges.component').then(\n (mod) => mod.ServiceChargesComponent\n ),\n },\n {\n path: 'environmental-commodities-markets',\n loadComponent: () =>\n import(\n './environmental-commodities-markets/environmental-commodities-markets.component'\n ).then((mod) => mod.EnvironmentalCommoditiesMarketsComponent),\n },\n {\n path: 'fleet-management',\n loadComponent: () =>\n import('./fleet-management/fleet-management.component').then(\n (mod) => mod.FleetManagementComponent\n ),\n },\n {\n path: 'about',\n loadComponent: () =>\n import('./about/about.component').then((mod) => mod.AboutComponent),\n },\n {\n path: 'pro',\n loadComponent: () =>\n import('./pro/pro.component').then((mod) => mod.ProComponent),\n },\n {\n path: 'spruce-servicing',\n loadComponent: () =>\n import('./spruce-servicing/spruce-servicing.component').then(\n (mod) => mod.SpruceServicingComponent\n ),\n },\n {\n path: 'page-not-found',\n loadComponent: () =>\n import('./page-not-found/page-not-found.component').then(\n (mod) => mod.PageNotFoundComponent\n ),\n },\n\n {\n path: 'portal-faq',\n loadComponent: () =>\n import('./portal-faq/portal-faq.component').then(\n (mod) => mod.PortalFaqComponent\n ),\n },\n\n {\n path: 'user-settings',\n loadComponent: () =>\n import('./user-settings/user-settings.component').then(\n (mod) => mod.UserSettingsComponent\n ),\n canActivate: [CustomAuthGuard],\n },\n {\n path: 'life-events',\n loadComponent: () =>\n import('./life-events/life-events.component').then(\n (mod) => mod.LifeEventsComponent\n ),\n },\n \n {\n path: 'life-events/refinance',\n loadComponent: () =>\n import('./life-events-refinance/life-events-refinance.component').then(\n (mod) => mod.LifeEventsRefinanceComponent\n ),\n },\n\n {\n path: 'life-events/form/solar-agreement-amendment-request',\n loadComponent: () =>\n import('./life-events/forms/solar-agreement-amendment-request/solar-agreement-amendment-request.component').then(\n (mod) => mod.SolarAgreementAmendmentRequestComponent\n ),\n },\n\n {\n path: 'life-events/form/system-purchase-or-prepayment-request',\n loadComponent: () =>\n import('./life-events/forms/system-purchase-or-prepayment-request/system-purchase-or-prepayment-request.component').then(\n (mod) => mod.SystemPurchaseOrPrepaymentRequestComponent\n ),\n },\n\n {\n path: 'life-events/form/refinance-information-request',\n loadComponent: () =>\n import('./life-events/forms/refinance-information-request/refinance-information-request.component').then(\n (mod) => mod.RefinanceInformationRequestComponent\n ),\n },\n\n {\n path: 'life-events/form/home-sale-information/escrow-facilitated-transactions-request',\n loadComponent: () =>\n import('./life-events/forms/home-sale-information/escrow-facilitated-transactions-request/escrow-facilitated-transactions-request.component').then(\n (mod) => mod.EscrowFacilitatedTransactionsRequestComponent\n ),\n },\n\n {\n path: 'life-events/form/home-sale-information/lawyer-facilitated-transactions-request',\n loadComponent: () =>\n import('./life-events/forms/home-sale-information/lawyer-facilitated-transactions-request/lawyer-facilitated-transactions-request.component').then(\n (mod) => mod.LawyerFacilitatedTransactionsRequestComponent\n ),\n },\n\n {\n path: 'life-events/form/success-message',\n loadComponent: () =>\n import('./life-events/forms/success-message/success-message.component').then(\n (mod) => mod.SuccessMessageComponent\n ),\n },\n\n {\n path: '**',\n loadComponent: () =>\n import('./page-not-found/page-not-found.component').then(\n (mod) => mod.PageNotFoundComponent\n ),\n },\n];\n","import * as i0 from '@angular/core';\nimport { InjectionToken, inject, NgZone, Injectable, Inject, makeEnvironmentProviders, NgModule } from '@angular/core';\nimport * as i2 from '@ngrx/store';\nimport { ActionsSubject, UPDATE, INIT, INITIAL_STATE, StateObservable, ReducerManagerDispatcher } from '@ngrx/store';\nimport { EMPTY, Observable, of, merge, queueScheduler, ReplaySubject } from 'rxjs';\nimport { share, filter, map, concatMap, timeout, debounceTime, catchError, take, takeUntil, switchMap, skip, observeOn, withLatestFrom, scan } from 'rxjs/operators';\nimport { toSignal } from '@angular/core/rxjs-interop';\nconst PERFORM_ACTION = 'PERFORM_ACTION';\nconst REFRESH = 'REFRESH';\nconst RESET = 'RESET';\nconst ROLLBACK = 'ROLLBACK';\nconst COMMIT = 'COMMIT';\nconst SWEEP = 'SWEEP';\nconst TOGGLE_ACTION = 'TOGGLE_ACTION';\nconst SET_ACTIONS_ACTIVE = 'SET_ACTIONS_ACTIVE';\nconst JUMP_TO_STATE = 'JUMP_TO_STATE';\nconst JUMP_TO_ACTION = 'JUMP_TO_ACTION';\nconst IMPORT_STATE = 'IMPORT_STATE';\nconst LOCK_CHANGES = 'LOCK_CHANGES';\nconst PAUSE_RECORDING = 'PAUSE_RECORDING';\nclass PerformAction {\n constructor(action, timestamp) {\n this.action = action;\n this.timestamp = timestamp;\n this.type = PERFORM_ACTION;\n if (typeof action.type === 'undefined') {\n throw new Error('Actions may not have an undefined \"type\" property. ' + 'Have you misspelled a constant?');\n }\n }\n}\nclass Refresh {\n constructor() {\n this.type = REFRESH;\n }\n}\nclass Reset {\n constructor(timestamp) {\n this.timestamp = timestamp;\n this.type = RESET;\n }\n}\nclass Rollback {\n constructor(timestamp) {\n this.timestamp = timestamp;\n this.type = ROLLBACK;\n }\n}\nclass Commit {\n constructor(timestamp) {\n this.timestamp = timestamp;\n this.type = COMMIT;\n }\n}\nclass Sweep {\n constructor() {\n this.type = SWEEP;\n }\n}\nclass ToggleAction {\n constructor(id) {\n this.id = id;\n this.type = TOGGLE_ACTION;\n }\n}\nclass SetActionsActive {\n constructor(start, end, active = true) {\n this.start = start;\n this.end = end;\n this.active = active;\n this.type = SET_ACTIONS_ACTIVE;\n }\n}\nclass JumpToState {\n constructor(index) {\n this.index = index;\n this.type = JUMP_TO_STATE;\n }\n}\nclass JumpToAction {\n constructor(actionId) {\n this.actionId = actionId;\n this.type = JUMP_TO_ACTION;\n }\n}\nclass ImportState {\n constructor(nextLiftedState) {\n this.nextLiftedState = nextLiftedState;\n this.type = IMPORT_STATE;\n }\n}\nclass LockChanges {\n constructor(status) {\n this.status = status;\n this.type = LOCK_CHANGES;\n }\n}\nclass PauseRecording {\n constructor(status) {\n this.status = status;\n this.type = PAUSE_RECORDING;\n }\n}\n\n/**\n * Chrome extension documentation\n * @see https://github.com/reduxjs/redux-devtools/blob/main/extension/docs/API/Arguments.md\n * Firefox extension documentation\n * @see https://github.com/zalmoxisus/redux-devtools-extension/blob/master/docs/API/Arguments.md\n */\nclass StoreDevtoolsConfig {\n constructor() {\n /**\n * Maximum allowed actions to be stored in the history tree (default: `false`)\n */\n this.maxAge = false;\n }\n}\nconst STORE_DEVTOOLS_CONFIG = new InjectionToken('@ngrx/store-devtools Options');\n/**\n * Used to provide a `StoreDevtoolsConfig` for the store-devtools.\n */\nconst INITIAL_OPTIONS = new InjectionToken('@ngrx/store-devtools Initial Config');\nfunction noMonitor() {\n return null;\n}\nconst DEFAULT_NAME = 'NgRx Store DevTools';\nfunction createConfig(optionsInput) {\n const DEFAULT_OPTIONS = {\n maxAge: false,\n monitor: noMonitor,\n actionSanitizer: undefined,\n stateSanitizer: undefined,\n name: DEFAULT_NAME,\n serialize: false,\n logOnly: false,\n autoPause: false,\n trace: false,\n traceLimit: 75,\n // Add all features explicitly. This prevent buggy behavior for\n // options like \"lock\" which might otherwise not show up.\n features: {\n pause: true,\n // Start/pause recording of dispatched actions\n lock: true,\n // Lock/unlock dispatching actions and side effects\n persist: true,\n // Persist states on page reloading\n export: true,\n // Export history of actions in a file\n import: 'custom',\n // Import history of actions from a file\n jump: true,\n // Jump back and forth (time travelling)\n skip: true,\n // Skip (cancel) actions\n reorder: true,\n // Drag and drop actions in the history list\n dispatch: true,\n // Dispatch custom actions or action creators\n test: true // Generate tests for the selected actions\n },\n connectInZone: false\n };\n const options = typeof optionsInput === 'function' ? optionsInput() : optionsInput;\n const logOnly = options.logOnly ? {\n pause: true,\n export: true,\n test: true\n } : false;\n const features = options.features || logOnly || DEFAULT_OPTIONS.features;\n if (features.import === true) {\n features.import = 'custom';\n }\n const config = Object.assign({}, DEFAULT_OPTIONS, {\n features\n }, options);\n if (config.maxAge && config.maxAge < 2) {\n throw new Error(`Devtools 'maxAge' cannot be less than 2, got ${config.maxAge}`);\n }\n return config;\n}\nfunction difference(first, second) {\n return first.filter(item => second.indexOf(item) < 0);\n}\n/**\n * Provides an app's view into the state of the lifted store.\n */\nfunction unliftState(liftedState) {\n const {\n computedStates,\n currentStateIndex\n } = liftedState;\n // At start up NgRx dispatches init actions,\n // When these init actions are being filtered out by the predicate or safe/block list options\n // we don't have a complete computed states yet.\n // At this point it could happen that we're out of bounds, when this happens we fall back to the last known state\n if (currentStateIndex >= computedStates.length) {\n const {\n state\n } = computedStates[computedStates.length - 1];\n return state;\n }\n const {\n state\n } = computedStates[currentStateIndex];\n return state;\n}\nfunction unliftAction(liftedState) {\n return liftedState.actionsById[liftedState.nextActionId - 1];\n}\n/**\n * Lifts an app's action into an action on the lifted store.\n */\nfunction liftAction(action) {\n return new PerformAction(action, +Date.now());\n}\n/**\n * Sanitizes given actions with given function.\n */\nfunction sanitizeActions(actionSanitizer, actions) {\n return Object.keys(actions).reduce((sanitizedActions, actionIdx) => {\n const idx = Number(actionIdx);\n sanitizedActions[idx] = sanitizeAction(actionSanitizer, actions[idx], idx);\n return sanitizedActions;\n }, {});\n}\n/**\n * Sanitizes given action with given function.\n */\nfunction sanitizeAction(actionSanitizer, action, actionIdx) {\n return {\n ...action,\n action: actionSanitizer(action.action, actionIdx)\n };\n}\n/**\n * Sanitizes given states with given function.\n */\nfunction sanitizeStates(stateSanitizer, states) {\n return states.map((computedState, idx) => ({\n state: sanitizeState(stateSanitizer, computedState.state, idx),\n error: computedState.error\n }));\n}\n/**\n * Sanitizes given state with given function.\n */\nfunction sanitizeState(stateSanitizer, state, stateIdx) {\n return stateSanitizer(state, stateIdx);\n}\n/**\n * Read the config and tell if actions should be filtered\n */\nfunction shouldFilterActions(config) {\n return config.predicate || config.actionsSafelist || config.actionsBlocklist;\n}\n/**\n * Return a full filtered lifted state\n */\nfunction filterLiftedState(liftedState, predicate, safelist, blocklist) {\n const filteredStagedActionIds = [];\n const filteredActionsById = {};\n const filteredComputedStates = [];\n liftedState.stagedActionIds.forEach((id, idx) => {\n const liftedAction = liftedState.actionsById[id];\n if (!liftedAction) return;\n if (idx && isActionFiltered(liftedState.computedStates[idx], liftedAction, predicate, safelist, blocklist)) {\n return;\n }\n filteredActionsById[id] = liftedAction;\n filteredStagedActionIds.push(id);\n filteredComputedStates.push(liftedState.computedStates[idx]);\n });\n return {\n ...liftedState,\n stagedActionIds: filteredStagedActionIds,\n actionsById: filteredActionsById,\n computedStates: filteredComputedStates\n };\n}\n/**\n * Return true is the action should be ignored\n */\nfunction isActionFiltered(state, action, predicate, safelist, blockedlist) {\n const predicateMatch = predicate && !predicate(state, action.action);\n const safelistMatch = safelist && !action.action.type.match(safelist.map(s => escapeRegExp(s)).join('|'));\n const blocklistMatch = blockedlist && action.action.type.match(blockedlist.map(s => escapeRegExp(s)).join('|'));\n return predicateMatch || safelistMatch || blocklistMatch;\n}\n/**\n * Return string with escaped RegExp special characters\n * https://stackoverflow.com/a/6969486/1337347\n */\nfunction escapeRegExp(s) {\n return s.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n}\nfunction injectZoneConfig(connectInZone) {\n const ngZone = connectInZone ? inject(NgZone) : null;\n return {\n ngZone,\n connectInZone\n };\n}\nlet DevtoolsDispatcher = /*#__PURE__*/(() => {\n class DevtoolsDispatcher extends ActionsSubject {\n /** @nocollapse */static {\n this.ɵfac = /* @__PURE__ */(() => {\n let ɵDevtoolsDispatcher_BaseFactory;\n return function DevtoolsDispatcher_Factory(t) {\n return (ɵDevtoolsDispatcher_BaseFactory || (ɵDevtoolsDispatcher_BaseFactory = i0.ɵɵgetInheritedFactory(DevtoolsDispatcher)))(t || DevtoolsDispatcher);\n };\n })();\n }\n /** @nocollapse */\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: DevtoolsDispatcher,\n factory: DevtoolsDispatcher.ɵfac\n });\n }\n }\n return DevtoolsDispatcher;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nconst ExtensionActionTypes = {\n START: 'START',\n DISPATCH: 'DISPATCH',\n STOP: 'STOP',\n ACTION: 'ACTION'\n};\nconst REDUX_DEVTOOLS_EXTENSION = new InjectionToken('@ngrx/store-devtools Redux Devtools Extension');\nlet DevtoolsExtension = /*#__PURE__*/(() => {\n class DevtoolsExtension {\n constructor(devtoolsExtension, config, dispatcher) {\n this.config = config;\n this.dispatcher = dispatcher;\n this.zoneConfig = injectZoneConfig(this.config.connectInZone);\n this.devtoolsExtension = devtoolsExtension;\n this.createActionStreams();\n }\n notify(action, state) {\n if (!this.devtoolsExtension) {\n return;\n }\n // Check to see if the action requires a full update of the liftedState.\n // If it is a simple action generated by the user's app and the recording\n // is not locked/paused, only send the action and the current state (fast).\n //\n // A full liftedState update (slow: serializes the entire liftedState) is\n // only required when:\n // a) redux-devtools-extension fires the @@Init action (ignored by\n // @ngrx/store-devtools)\n // b) an action is generated by an @ngrx module (e.g. @ngrx/effects/init\n // or @ngrx/store/update-reducers)\n // c) the state has been recomputed due to time-traveling\n // d) any action that is not a PerformAction to err on the side of\n // caution.\n if (action.type === PERFORM_ACTION) {\n if (state.isLocked || state.isPaused) {\n return;\n }\n const currentState = unliftState(state);\n if (shouldFilterActions(this.config) && isActionFiltered(currentState, action, this.config.predicate, this.config.actionsSafelist, this.config.actionsBlocklist)) {\n return;\n }\n const sanitizedState = this.config.stateSanitizer ? sanitizeState(this.config.stateSanitizer, currentState, state.currentStateIndex) : currentState;\n const sanitizedAction = this.config.actionSanitizer ? sanitizeAction(this.config.actionSanitizer, action, state.nextActionId) : action;\n this.sendToReduxDevtools(() => this.extensionConnection.send(sanitizedAction, sanitizedState));\n } else {\n // Requires full state update\n const sanitizedLiftedState = {\n ...state,\n stagedActionIds: state.stagedActionIds,\n actionsById: this.config.actionSanitizer ? sanitizeActions(this.config.actionSanitizer, state.actionsById) : state.actionsById,\n computedStates: this.config.stateSanitizer ? sanitizeStates(this.config.stateSanitizer, state.computedStates) : state.computedStates\n };\n this.sendToReduxDevtools(() => this.devtoolsExtension.send(null, sanitizedLiftedState, this.getExtensionConfig(this.config)));\n }\n }\n createChangesObservable() {\n if (!this.devtoolsExtension) {\n return EMPTY;\n }\n return new Observable(subscriber => {\n const connection = this.zoneConfig.connectInZone ?\n // To reduce change detection cycles, we need to run the `connect` method\n // outside of the Angular zone. The `connect` method adds a `message`\n // event listener to communicate with an extension using `window.postMessage`\n // and handle message events.\n this.zoneConfig.ngZone.runOutsideAngular(() => this.devtoolsExtension.connect(this.getExtensionConfig(this.config))) : this.devtoolsExtension.connect(this.getExtensionConfig(this.config));\n this.extensionConnection = connection;\n connection.init();\n connection.subscribe(change => subscriber.next(change));\n return connection.unsubscribe;\n });\n }\n createActionStreams() {\n // Listens to all changes\n const changes$ = this.createChangesObservable().pipe(share());\n // Listen for the start action\n const start$ = changes$.pipe(filter(change => change.type === ExtensionActionTypes.START));\n // Listen for the stop action\n const stop$ = changes$.pipe(filter(change => change.type === ExtensionActionTypes.STOP));\n // Listen for lifted actions\n const liftedActions$ = changes$.pipe(filter(change => change.type === ExtensionActionTypes.DISPATCH), map(change => this.unwrapAction(change.payload)), concatMap(action => {\n if (action.type === IMPORT_STATE) {\n // State imports may happen in two situations:\n // 1. Explicitly by user\n // 2. User activated the \"persist state accross reloads\" option\n // and now the state is imported during reload.\n // Because of option 2, we need to give possible\n // lazy loaded reducers time to instantiate.\n // As soon as there is no UPDATE action within 1 second,\n // it is assumed that all reducers are loaded.\n return this.dispatcher.pipe(filter(action => action.type === UPDATE), timeout(1000), debounceTime(1000), map(() => action), catchError(() => of(action)), take(1));\n } else {\n return of(action);\n }\n }));\n // Listen for unlifted actions\n const actions$ = changes$.pipe(filter(change => change.type === ExtensionActionTypes.ACTION), map(change => this.unwrapAction(change.payload)));\n const actionsUntilStop$ = actions$.pipe(takeUntil(stop$));\n const liftedUntilStop$ = liftedActions$.pipe(takeUntil(stop$));\n this.start$ = start$.pipe(takeUntil(stop$));\n // Only take the action sources between the start/stop events\n this.actions$ = this.start$.pipe(switchMap(() => actionsUntilStop$));\n this.liftedActions$ = this.start$.pipe(switchMap(() => liftedUntilStop$));\n }\n unwrapAction(action) {\n // indirect eval according to https://esbuild.github.io/content-types/#direct-eval\n return typeof action === 'string' ? (0, eval)(`(${action})`) : action;\n }\n getExtensionConfig(config) {\n const extensionOptions = {\n name: config.name,\n features: config.features,\n serialize: config.serialize,\n autoPause: config.autoPause ?? false,\n trace: config.trace ?? false,\n traceLimit: config.traceLimit ?? 75\n // The action/state sanitizers are not added to the config\n // because sanitation is done in this class already.\n // It is done before sending it to the devtools extension for consistency:\n // - If we call extensionConnection.send(...),\n // the extension would call the sanitizers.\n // - If we call devtoolsExtension.send(...) (aka full state update),\n // the extension would NOT call the sanitizers, so we have to do it ourselves.\n };\n if (config.maxAge !== false /* support === 0 */) {\n extensionOptions.maxAge = config.maxAge;\n }\n return extensionOptions;\n }\n sendToReduxDevtools(send) {\n try {\n send();\n } catch (err) {\n console.warn('@ngrx/store-devtools: something went wrong inside the redux devtools', err);\n }\n }\n /** @nocollapse */\n static {\n this.ɵfac = function DevtoolsExtension_Factory(t) {\n return new (t || DevtoolsExtension)(i0.ɵɵinject(REDUX_DEVTOOLS_EXTENSION), i0.ɵɵinject(STORE_DEVTOOLS_CONFIG), i0.ɵɵinject(DevtoolsDispatcher));\n };\n }\n /** @nocollapse */\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: DevtoolsExtension,\n factory: DevtoolsExtension.ɵfac\n });\n }\n }\n return DevtoolsExtension;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nconst INIT_ACTION = {\n type: INIT\n};\nconst RECOMPUTE = '@ngrx/store-devtools/recompute';\nconst RECOMPUTE_ACTION = {\n type: RECOMPUTE\n};\n/**\n * Computes the next entry in the log by applying an action.\n */\nfunction computeNextEntry(reducer, action, state, error, errorHandler) {\n if (error) {\n return {\n state,\n error: 'Interrupted by an error up the chain'\n };\n }\n let nextState = state;\n let nextError;\n try {\n nextState = reducer(state, action);\n } catch (err) {\n nextError = err.toString();\n errorHandler.handleError(err);\n }\n return {\n state: nextState,\n error: nextError\n };\n}\n/**\n * Runs the reducer on invalidated actions to get a fresh computation log.\n */\nfunction recomputeStates(computedStates, minInvalidatedStateIndex, reducer, committedState, actionsById, stagedActionIds, skippedActionIds, errorHandler, isPaused) {\n // Optimization: exit early and return the same reference\n // if we know nothing could have changed.\n if (minInvalidatedStateIndex >= computedStates.length && computedStates.length === stagedActionIds.length) {\n return computedStates;\n }\n const nextComputedStates = computedStates.slice(0, minInvalidatedStateIndex);\n // If the recording is paused, recompute all states up until the pause state,\n // else recompute all states.\n const lastIncludedActionId = stagedActionIds.length - (isPaused ? 1 : 0);\n for (let i = minInvalidatedStateIndex; i < lastIncludedActionId; i++) {\n const actionId = stagedActionIds[i];\n const action = actionsById[actionId].action;\n const previousEntry = nextComputedStates[i - 1];\n const previousState = previousEntry ? previousEntry.state : committedState;\n const previousError = previousEntry ? previousEntry.error : undefined;\n const shouldSkip = skippedActionIds.indexOf(actionId) > -1;\n const entry = shouldSkip ? previousEntry : computeNextEntry(reducer, action, previousState, previousError, errorHandler);\n nextComputedStates.push(entry);\n }\n // If the recording is paused, the last state will not be recomputed,\n // because it's essentially not part of the state history.\n if (isPaused) {\n nextComputedStates.push(computedStates[computedStates.length - 1]);\n }\n return nextComputedStates;\n}\nfunction liftInitialState(initialCommittedState, monitorReducer) {\n return {\n monitorState: monitorReducer(undefined, {}),\n nextActionId: 1,\n actionsById: {\n 0: liftAction(INIT_ACTION)\n },\n stagedActionIds: [0],\n skippedActionIds: [],\n committedState: initialCommittedState,\n currentStateIndex: 0,\n computedStates: [],\n isLocked: false,\n isPaused: false\n };\n}\n/**\n * Creates a history state reducer from an app's reducer.\n */\nfunction liftReducerWith(initialCommittedState, initialLiftedState, errorHandler, monitorReducer, options = {}) {\n /**\n * Manages how the history actions modify the history state.\n */\n return reducer => (liftedState, liftedAction) => {\n let {\n monitorState,\n actionsById,\n nextActionId,\n stagedActionIds,\n skippedActionIds,\n committedState,\n currentStateIndex,\n computedStates,\n isLocked,\n isPaused\n } = liftedState || initialLiftedState;\n if (!liftedState) {\n // Prevent mutating initialLiftedState\n actionsById = Object.create(actionsById);\n }\n function commitExcessActions(n) {\n // Auto-commits n-number of excess actions.\n let excess = n;\n let idsToDelete = stagedActionIds.slice(1, excess + 1);\n for (let i = 0; i < idsToDelete.length; i++) {\n if (computedStates[i + 1].error) {\n // Stop if error is found. Commit actions up to error.\n excess = i;\n idsToDelete = stagedActionIds.slice(1, excess + 1);\n break;\n } else {\n delete actionsById[idsToDelete[i]];\n }\n }\n skippedActionIds = skippedActionIds.filter(id => idsToDelete.indexOf(id) === -1);\n stagedActionIds = [0, ...stagedActionIds.slice(excess + 1)];\n committedState = computedStates[excess].state;\n computedStates = computedStates.slice(excess);\n currentStateIndex = currentStateIndex > excess ? currentStateIndex - excess : 0;\n }\n function commitChanges() {\n // Consider the last committed state the new starting point.\n // Squash any staged actions into a single committed state.\n actionsById = {\n 0: liftAction(INIT_ACTION)\n };\n nextActionId = 1;\n stagedActionIds = [0];\n skippedActionIds = [];\n committedState = computedStates[currentStateIndex].state;\n currentStateIndex = 0;\n computedStates = [];\n }\n // By default, aggressively recompute every state whatever happens.\n // This has O(n) performance, so we'll override this to a sensible\n // value whenever we feel like we don't have to recompute the states.\n let minInvalidatedStateIndex = 0;\n switch (liftedAction.type) {\n case LOCK_CHANGES:\n {\n isLocked = liftedAction.status;\n minInvalidatedStateIndex = Infinity;\n break;\n }\n case PAUSE_RECORDING:\n {\n isPaused = liftedAction.status;\n if (isPaused) {\n // Add a pause action to signal the devtools-user the recording is paused.\n // The corresponding state will be overwritten on each update to always contain\n // the latest state (see Actions.PERFORM_ACTION).\n stagedActionIds = [...stagedActionIds, nextActionId];\n actionsById[nextActionId] = new PerformAction({\n type: '@ngrx/devtools/pause'\n }, +Date.now());\n nextActionId++;\n minInvalidatedStateIndex = stagedActionIds.length - 1;\n computedStates = computedStates.concat(computedStates[computedStates.length - 1]);\n if (currentStateIndex === stagedActionIds.length - 2) {\n currentStateIndex++;\n }\n minInvalidatedStateIndex = Infinity;\n } else {\n commitChanges();\n }\n break;\n }\n case RESET:\n {\n // Get back to the state the store was created with.\n actionsById = {\n 0: liftAction(INIT_ACTION)\n };\n nextActionId = 1;\n stagedActionIds = [0];\n skippedActionIds = [];\n committedState = initialCommittedState;\n currentStateIndex = 0;\n computedStates = [];\n break;\n }\n case COMMIT:\n {\n commitChanges();\n break;\n }\n case ROLLBACK:\n {\n // Forget about any staged actions.\n // Start again from the last committed state.\n actionsById = {\n 0: liftAction(INIT_ACTION)\n };\n nextActionId = 1;\n stagedActionIds = [0];\n skippedActionIds = [];\n currentStateIndex = 0;\n computedStates = [];\n break;\n }\n case TOGGLE_ACTION:\n {\n // Toggle whether an action with given ID is skipped.\n // Being skipped means it is a no-op during the computation.\n const {\n id: actionId\n } = liftedAction;\n const index = skippedActionIds.indexOf(actionId);\n if (index === -1) {\n skippedActionIds = [actionId, ...skippedActionIds];\n } else {\n skippedActionIds = skippedActionIds.filter(id => id !== actionId);\n }\n // Optimization: we know history before this action hasn't changed\n minInvalidatedStateIndex = stagedActionIds.indexOf(actionId);\n break;\n }\n case SET_ACTIONS_ACTIVE:\n {\n // Toggle whether an action with given ID is skipped.\n // Being skipped means it is a no-op during the computation.\n const {\n start,\n end,\n active\n } = liftedAction;\n const actionIds = [];\n for (let i = start; i < end; i++) actionIds.push(i);\n if (active) {\n skippedActionIds = difference(skippedActionIds, actionIds);\n } else {\n skippedActionIds = [...skippedActionIds, ...actionIds];\n }\n // Optimization: we know history before this action hasn't changed\n minInvalidatedStateIndex = stagedActionIds.indexOf(start);\n break;\n }\n case JUMP_TO_STATE:\n {\n // Without recomputing anything, move the pointer that tell us\n // which state is considered the current one. Useful for sliders.\n currentStateIndex = liftedAction.index;\n // Optimization: we know the history has not changed.\n minInvalidatedStateIndex = Infinity;\n break;\n }\n case JUMP_TO_ACTION:\n {\n // Jumps to a corresponding state to a specific action.\n // Useful when filtering actions.\n const index = stagedActionIds.indexOf(liftedAction.actionId);\n if (index !== -1) currentStateIndex = index;\n minInvalidatedStateIndex = Infinity;\n break;\n }\n case SWEEP:\n {\n // Forget any actions that are currently being skipped.\n stagedActionIds = difference(stagedActionIds, skippedActionIds);\n skippedActionIds = [];\n currentStateIndex = Math.min(currentStateIndex, stagedActionIds.length - 1);\n break;\n }\n case PERFORM_ACTION:\n {\n // Ignore action and return state as is if recording is locked\n if (isLocked) {\n return liftedState || initialLiftedState;\n }\n if (isPaused || liftedState && isActionFiltered(liftedState.computedStates[currentStateIndex], liftedAction, options.predicate, options.actionsSafelist, options.actionsBlocklist)) {\n // If recording is paused or if the action should be ignored, overwrite the last state\n // (corresponds to the pause action) and keep everything else as is.\n // This way, the app gets the new current state while the devtools\n // do not record another action.\n const lastState = computedStates[computedStates.length - 1];\n computedStates = [...computedStates.slice(0, -1), computeNextEntry(reducer, liftedAction.action, lastState.state, lastState.error, errorHandler)];\n minInvalidatedStateIndex = Infinity;\n break;\n }\n // Auto-commit as new actions come in.\n if (options.maxAge && stagedActionIds.length === options.maxAge) {\n commitExcessActions(1);\n }\n if (currentStateIndex === stagedActionIds.length - 1) {\n currentStateIndex++;\n }\n const actionId = nextActionId++;\n // Mutation! This is the hottest path, and we optimize on purpose.\n // It is safe because we set a new key in a cache dictionary.\n actionsById[actionId] = liftedAction;\n stagedActionIds = [...stagedActionIds, actionId];\n // Optimization: we know that only the new action needs computing.\n minInvalidatedStateIndex = stagedActionIds.length - 1;\n break;\n }\n case IMPORT_STATE:\n {\n // Completely replace everything.\n ({\n monitorState,\n actionsById,\n nextActionId,\n stagedActionIds,\n skippedActionIds,\n committedState,\n currentStateIndex,\n computedStates,\n isLocked,\n isPaused\n } = liftedAction.nextLiftedState);\n break;\n }\n case INIT:\n {\n // Always recompute states on hot reload and init.\n minInvalidatedStateIndex = 0;\n if (options.maxAge && stagedActionIds.length > options.maxAge) {\n // States must be recomputed before committing excess.\n computedStates = recomputeStates(computedStates, minInvalidatedStateIndex, reducer, committedState, actionsById, stagedActionIds, skippedActionIds, errorHandler, isPaused);\n commitExcessActions(stagedActionIds.length - options.maxAge);\n // Avoid double computation.\n minInvalidatedStateIndex = Infinity;\n }\n break;\n }\n case UPDATE:\n {\n const stateHasErrors = computedStates.filter(state => state.error).length > 0;\n if (stateHasErrors) {\n // Recompute all states\n minInvalidatedStateIndex = 0;\n if (options.maxAge && stagedActionIds.length > options.maxAge) {\n // States must be recomputed before committing excess.\n computedStates = recomputeStates(computedStates, minInvalidatedStateIndex, reducer, committedState, actionsById, stagedActionIds, skippedActionIds, errorHandler, isPaused);\n commitExcessActions(stagedActionIds.length - options.maxAge);\n // Avoid double computation.\n minInvalidatedStateIndex = Infinity;\n }\n } else {\n // If not paused/locked, add a new action to signal devtools-user\n // that there was a reducer update.\n if (!isPaused && !isLocked) {\n if (currentStateIndex === stagedActionIds.length - 1) {\n currentStateIndex++;\n }\n // Add a new action to only recompute state\n const actionId = nextActionId++;\n actionsById[actionId] = new PerformAction(liftedAction, +Date.now());\n stagedActionIds = [...stagedActionIds, actionId];\n minInvalidatedStateIndex = stagedActionIds.length - 1;\n computedStates = recomputeStates(computedStates, minInvalidatedStateIndex, reducer, committedState, actionsById, stagedActionIds, skippedActionIds, errorHandler, isPaused);\n }\n // Recompute state history with latest reducer and update action\n computedStates = computedStates.map(cmp => ({\n ...cmp,\n state: reducer(cmp.state, RECOMPUTE_ACTION)\n }));\n currentStateIndex = stagedActionIds.length - 1;\n if (options.maxAge && stagedActionIds.length > options.maxAge) {\n commitExcessActions(stagedActionIds.length - options.maxAge);\n }\n // Avoid double computation.\n minInvalidatedStateIndex = Infinity;\n }\n break;\n }\n default:\n {\n // If the action is not recognized, it's a monitor action.\n // Optimization: a monitor action can't change history.\n minInvalidatedStateIndex = Infinity;\n break;\n }\n }\n computedStates = recomputeStates(computedStates, minInvalidatedStateIndex, reducer, committedState, actionsById, stagedActionIds, skippedActionIds, errorHandler, isPaused);\n monitorState = monitorReducer(monitorState, liftedAction);\n return {\n monitorState,\n actionsById,\n nextActionId,\n stagedActionIds,\n skippedActionIds,\n committedState,\n currentStateIndex,\n computedStates,\n isLocked,\n isPaused\n };\n };\n}\nlet StoreDevtools = /*#__PURE__*/(() => {\n class StoreDevtools {\n constructor(dispatcher, actions$, reducers$, extension, scannedActions, errorHandler, initialState, config) {\n const liftedInitialState = liftInitialState(initialState, config.monitor);\n const liftReducer = liftReducerWith(initialState, liftedInitialState, errorHandler, config.monitor, config);\n const liftedAction$ = merge(merge(actions$.asObservable().pipe(skip(1)), extension.actions$).pipe(map(liftAction)), dispatcher, extension.liftedActions$).pipe(observeOn(queueScheduler));\n const liftedReducer$ = reducers$.pipe(map(liftReducer));\n const zoneConfig = injectZoneConfig(config.connectInZone);\n const liftedStateSubject = new ReplaySubject(1);\n this.liftedStateSubscription = liftedAction$.pipe(withLatestFrom(liftedReducer$),\n // The extension would post messages back outside of the Angular zone\n // because we call `connect()` wrapped with `runOutsideAngular`. We run change\n // detection only once at the end after all the required asynchronous tasks have\n // been processed (for instance, `setInterval` scheduled by the `timeout` operator).\n // We have to re-enter the Angular zone before the `scan` since it runs the reducer\n // which must be run within the Angular zone.\n emitInZone(zoneConfig), scan(({\n state: liftedState\n }, [action, reducer]) => {\n let reducedLiftedState = reducer(liftedState, action);\n // On full state update\n // If we have actions filters, we must filter completely our lifted state to be sync with the extension\n if (action.type !== PERFORM_ACTION && shouldFilterActions(config)) {\n reducedLiftedState = filterLiftedState(reducedLiftedState, config.predicate, config.actionsSafelist, config.actionsBlocklist);\n }\n // Extension should be sent the sanitized lifted state\n extension.notify(action, reducedLiftedState);\n return {\n state: reducedLiftedState,\n action\n };\n }, {\n state: liftedInitialState,\n action: null\n })).subscribe(({\n state,\n action\n }) => {\n liftedStateSubject.next(state);\n if (action.type === PERFORM_ACTION) {\n const unliftedAction = action.action;\n scannedActions.next(unliftedAction);\n }\n });\n this.extensionStartSubscription = extension.start$.pipe(emitInZone(zoneConfig)).subscribe(() => {\n this.refresh();\n });\n const liftedState$ = liftedStateSubject.asObservable();\n const state$ = liftedState$.pipe(map(unliftState));\n Object.defineProperty(state$, 'state', {\n value: toSignal(state$, {\n manualCleanup: true,\n requireSync: true\n })\n });\n this.dispatcher = dispatcher;\n this.liftedState = liftedState$;\n this.state = state$;\n }\n ngOnDestroy() {\n // Even though the store devtools plugin is recommended to be\n // used only in development mode, it can still cause a memory leak\n // in microfrontend applications that are being created and destroyed\n // multiple times during development. This results in excessive memory\n // consumption, as it prevents entire apps from being garbage collected.\n this.liftedStateSubscription.unsubscribe();\n this.extensionStartSubscription.unsubscribe();\n }\n dispatch(action) {\n this.dispatcher.next(action);\n }\n next(action) {\n this.dispatcher.next(action);\n }\n error(error) {}\n complete() {}\n performAction(action) {\n this.dispatch(new PerformAction(action, +Date.now()));\n }\n refresh() {\n this.dispatch(new Refresh());\n }\n reset() {\n this.dispatch(new Reset(+Date.now()));\n }\n rollback() {\n this.dispatch(new Rollback(+Date.now()));\n }\n commit() {\n this.dispatch(new Commit(+Date.now()));\n }\n sweep() {\n this.dispatch(new Sweep());\n }\n toggleAction(id) {\n this.dispatch(new ToggleAction(id));\n }\n jumpToAction(actionId) {\n this.dispatch(new JumpToAction(actionId));\n }\n jumpToState(index) {\n this.dispatch(new JumpToState(index));\n }\n importState(nextLiftedState) {\n this.dispatch(new ImportState(nextLiftedState));\n }\n lockChanges(status) {\n this.dispatch(new LockChanges(status));\n }\n pauseRecording(status) {\n this.dispatch(new PauseRecording(status));\n }\n /** @nocollapse */\n static {\n this.ɵfac = function StoreDevtools_Factory(t) {\n return new (t || StoreDevtools)(i0.ɵɵinject(DevtoolsDispatcher), i0.ɵɵinject(i2.ActionsSubject), i0.ɵɵinject(i2.ReducerObservable), i0.ɵɵinject(DevtoolsExtension), i0.ɵɵinject(i2.ScannedActionsSubject), i0.ɵɵinject(i0.ErrorHandler), i0.ɵɵinject(INITIAL_STATE), i0.ɵɵinject(STORE_DEVTOOLS_CONFIG));\n };\n }\n /** @nocollapse */\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: StoreDevtools,\n factory: StoreDevtools.ɵfac\n });\n }\n }\n return StoreDevtools;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n/**\n * If the devtools extension is connected out of the Angular zone,\n * this operator will emit all events within the zone.\n */\nfunction emitInZone({\n ngZone,\n connectInZone\n}) {\n return source => connectInZone ? new Observable(subscriber => source.subscribe({\n next: value => ngZone.run(() => subscriber.next(value)),\n error: error => ngZone.run(() => subscriber.error(error)),\n complete: () => ngZone.run(() => subscriber.complete())\n })) : source;\n}\nconst IS_EXTENSION_OR_MONITOR_PRESENT = new InjectionToken('@ngrx/store-devtools Is Devtools Extension or Monitor Present');\nfunction createIsExtensionOrMonitorPresent(extension, config) {\n return Boolean(extension) || config.monitor !== noMonitor;\n}\nfunction createReduxDevtoolsExtension() {\n const extensionKey = '__REDUX_DEVTOOLS_EXTENSION__';\n if (typeof window === 'object' && typeof window[extensionKey] !== 'undefined') {\n return window[extensionKey];\n } else {\n return null;\n }\n}\n/**\n * Provides developer tools and instrumentation for `Store`.\n *\n * @usageNotes\n *\n * ```ts\n * bootstrapApplication(AppComponent, {\n * providers: [\n * provideStoreDevtools({\n * maxAge: 25,\n * logOnly: !isDevMode(),\n * }),\n * ],\n * });\n * ```\n */\nfunction provideStoreDevtools(options = {}) {\n return makeEnvironmentProviders([DevtoolsExtension, DevtoolsDispatcher, StoreDevtools, {\n provide: INITIAL_OPTIONS,\n useValue: options\n }, {\n provide: IS_EXTENSION_OR_MONITOR_PRESENT,\n deps: [REDUX_DEVTOOLS_EXTENSION, STORE_DEVTOOLS_CONFIG],\n useFactory: createIsExtensionOrMonitorPresent\n }, {\n provide: REDUX_DEVTOOLS_EXTENSION,\n useFactory: createReduxDevtoolsExtension\n }, {\n provide: STORE_DEVTOOLS_CONFIG,\n deps: [INITIAL_OPTIONS],\n useFactory: createConfig\n }, {\n provide: StateObservable,\n deps: [StoreDevtools],\n useFactory: createStateObservable\n }, {\n provide: ReducerManagerDispatcher,\n useExisting: DevtoolsDispatcher\n }]);\n}\nfunction createStateObservable(devtools) {\n return devtools.state;\n}\nlet StoreDevtoolsModule = /*#__PURE__*/(() => {\n class StoreDevtoolsModule {\n static instrument(options = {}) {\n return {\n ngModule: StoreDevtoolsModule,\n providers: [provideStoreDevtools(options)]\n };\n }\n /** @nocollapse */\n static {\n this.ɵfac = function StoreDevtoolsModule_Factory(t) {\n return new (t || StoreDevtoolsModule)();\n };\n }\n /** @nocollapse */\n static {\n this.ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n type: StoreDevtoolsModule\n });\n }\n /** @nocollapse */\n static {\n this.ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({});\n }\n }\n return StoreDevtoolsModule;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * DO NOT EDIT\n *\n * This file is automatically generated at build\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { INITIAL_OPTIONS, RECOMPUTE, REDUX_DEVTOOLS_EXTENSION, StoreDevtools, StoreDevtoolsConfig, StoreDevtoolsModule, provideStoreDevtools };\n","export interface AuthState {\n isLoggedIn: boolean;\n}\n\nexport const initialState: AuthState = {\n isLoggedIn: false,\n};\n","import { createReducer, on } from '@ngrx/store';\nimport { initialState, AuthState } from './auth.state';\nimport { AuthActions } from './auth.actions';\n\nexport const authReducer = createReducer(\n initialState,\n on(AuthActions.loginSuccess, (state: AuthState) => {\n return {\n ...state,\n isLoggedIn: true,\n };\n }),\n on(AuthActions.logoutSuccess, (state: AuthState) => {\n return {\n ...state,\n isLoggedIn: false,\n };\n }),\n on(AuthActions.signupSuccess, (state: AuthState) => {\n return {\n ...state,\n isLoggedIn: true,\n };\n })\n);\n","import * as i1 from 'rxjs';\nimport { merge, Observable, Subject, defer } from 'rxjs';\nimport { ignoreElements, materialize, map, catchError, filter, groupBy, mergeMap, exhaustMap, dematerialize, take, concatMap, finalize } from 'rxjs/operators';\nimport * as i0 from '@angular/core';\nimport { InjectionToken, Injectable, Inject, NgModule, Optional, inject, makeEnvironmentProviders, ENVIRONMENT_INITIALIZER } from '@angular/core';\nimport * as i3 from '@ngrx/store';\nimport { ScannedActionsSubject, createAction, ROOT_STORE_PROVIDER, FEATURE_STATE_PROVIDER, Store } from '@ngrx/store';\nconst DEFAULT_EFFECT_CONFIG = {\n dispatch: true,\n functional: false,\n useEffectsErrorHandler: true\n};\nconst CREATE_EFFECT_METADATA_KEY = '__@ngrx/effects_create__';\n\n/**\n * @description\n *\n * Creates an effect from a source and an `EffectConfig`.\n *\n * @param source A function which returns an observable or observable factory.\n * @param config A `EffectConfig` to configure the effect. By default,\n * `dispatch` is true, `functional` is false, and `useEffectsErrorHandler` is\n * true.\n * @returns If `EffectConfig`#`functional` is true, returns the source function.\n * Else, returns the source function result. When `EffectConfig`#`dispatch` is\n * true, the source function result needs to be `Observable`.\n *\n * @usageNotes\n *\n * ### Class Effects\n *\n * ```ts\n * @Injectable()\n * export class FeatureEffects {\n * // mapping to a different action\n * readonly effect1$ = createEffect(\n * () => this.actions$.pipe(\n * ofType(FeatureActions.actionOne),\n * map(() => FeatureActions.actionTwo())\n * )\n * );\n *\n * // non-dispatching effect\n * readonly effect2$ = createEffect(\n * () => this.actions$.pipe(\n * ofType(FeatureActions.actionTwo),\n * tap(() => console.log('Action Two Dispatched'))\n * ),\n * { dispatch: false } // FeatureActions.actionTwo is not dispatched\n * );\n *\n * constructor(private readonly actions$: Actions) {}\n * }\n * ```\n *\n * ### Functional Effects\n *\n * ```ts\n * // mapping to a different action\n * export const loadUsers = createEffect(\n * (actions$ = inject(Actions), usersService = inject(UsersService)) => {\n * return actions$.pipe(\n * ofType(UsersPageActions.opened),\n * exhaustMap(() => {\n * return usersService.getAll().pipe(\n * map((users) => UsersApiActions.usersLoadedSuccess({ users })),\n * catchError((error) =>\n * of(UsersApiActions.usersLoadedFailure({ error }))\n * )\n * );\n * })\n * );\n * },\n * { functional: true }\n * );\n *\n * // non-dispatching functional effect\n * export const logDispatchedActions = createEffect(\n * () => inject(Actions).pipe(tap(console.log)),\n * { functional: true, dispatch: false }\n * );\n * ```\n */\nfunction createEffect(source, config = {}) {\n const effect = config.functional ? source : source();\n const value = {\n ...DEFAULT_EFFECT_CONFIG,\n ...config // Overrides any defaults if values are provided\n };\n Object.defineProperty(effect, CREATE_EFFECT_METADATA_KEY, {\n value\n });\n return effect;\n}\nfunction getCreateEffectMetadata(instance) {\n const propertyNames = Object.getOwnPropertyNames(instance);\n const metadata = propertyNames.filter(propertyName => {\n if (instance[propertyName] && instance[propertyName].hasOwnProperty(CREATE_EFFECT_METADATA_KEY)) {\n // If the property type has overridden `hasOwnProperty` we need to ensure\n // that the metadata is valid (containing a `dispatch` property)\n // https://github.com/ngrx/platform/issues/2975\n const property = instance[propertyName];\n return property[CREATE_EFFECT_METADATA_KEY].hasOwnProperty('dispatch');\n }\n return false;\n }).map(propertyName => {\n const metaData = instance[propertyName][CREATE_EFFECT_METADATA_KEY];\n return {\n propertyName,\n ...metaData\n };\n });\n return metadata;\n}\nfunction getEffectsMetadata(instance) {\n return getSourceMetadata(instance).reduce((acc, {\n propertyName,\n dispatch,\n useEffectsErrorHandler\n }) => {\n acc[propertyName] = {\n dispatch,\n useEffectsErrorHandler\n };\n return acc;\n }, {});\n}\nfunction getSourceMetadata(instance) {\n return getCreateEffectMetadata(instance);\n}\nfunction getSourceForInstance(instance) {\n return Object.getPrototypeOf(instance);\n}\nfunction isClassInstance(obj) {\n return !!obj.constructor && obj.constructor.name !== 'Object' && obj.constructor.name !== 'Function';\n}\nfunction isClass(classOrRecord) {\n return typeof classOrRecord === 'function';\n}\nfunction getClasses(classesAndRecords) {\n return classesAndRecords.filter(isClass);\n}\nfunction isToken(tokenOrRecord) {\n return tokenOrRecord instanceof InjectionToken || isClass(tokenOrRecord);\n}\nfunction mergeEffects(sourceInstance, globalErrorHandler, effectsErrorHandler) {\n const source = getSourceForInstance(sourceInstance);\n const isClassBasedEffect = !!source && source.constructor.name !== 'Object';\n const sourceName = isClassBasedEffect ? source.constructor.name : null;\n const observables$ = getSourceMetadata(sourceInstance).map(({\n propertyName,\n dispatch,\n useEffectsErrorHandler\n }) => {\n const observable$ = typeof sourceInstance[propertyName] === 'function' ? sourceInstance[propertyName]() : sourceInstance[propertyName];\n const effectAction$ = useEffectsErrorHandler ? effectsErrorHandler(observable$, globalErrorHandler) : observable$;\n if (dispatch === false) {\n return effectAction$.pipe(ignoreElements());\n }\n const materialized$ = effectAction$.pipe(materialize());\n return materialized$.pipe(map(notification => ({\n effect: sourceInstance[propertyName],\n notification,\n propertyName,\n sourceName,\n sourceInstance\n })));\n });\n return merge(...observables$);\n}\nconst MAX_NUMBER_OF_RETRY_ATTEMPTS = 10;\nfunction defaultEffectsErrorHandler(observable$, errorHandler, retryAttemptLeft = MAX_NUMBER_OF_RETRY_ATTEMPTS) {\n return observable$.pipe(catchError(error => {\n if (errorHandler) errorHandler.handleError(error);\n if (retryAttemptLeft <= 1) {\n return observable$; // last attempt\n }\n // Return observable that produces this particular effect\n return defaultEffectsErrorHandler(observable$, errorHandler, retryAttemptLeft - 1);\n }));\n}\nlet Actions = /*#__PURE__*/(() => {\n class Actions extends Observable {\n constructor(source) {\n super();\n if (source) {\n this.source = source;\n }\n }\n lift(operator) {\n const observable = new Actions();\n observable.source = this;\n observable.operator = operator;\n return observable;\n }\n /** @nocollapse */\n static {\n this.ɵfac = function Actions_Factory(t) {\n return new (t || Actions)(i0.ɵɵinject(ScannedActionsSubject));\n };\n }\n /** @nocollapse */\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: Actions,\n factory: Actions.ɵfac,\n providedIn: 'root'\n });\n }\n }\n return Actions;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n/**\n * `ofType` filters an Observable of `Actions` into an Observable of the actions\n * whose type strings are passed to it.\n *\n * For example, if `actions` has type `Actions`, and\n * the type of the `Addition` action is `add`, then\n * `actions.pipe(ofType('add'))` returns an `Observable`.\n *\n * Properly typing this function is hard and requires some advanced TS tricks\n * below.\n *\n * Type narrowing automatically works, as long as your `actions` object\n * starts with a `Actions` instead of generic `Actions`.\n *\n * For backwards compatibility, when one passes a single type argument\n * `ofType('something')` the result is an `Observable`. Note, that `T`\n * completely overrides any possible inference from 'something'.\n *\n * Unfortunately, for unknown 'actions: Actions' these types will produce\n * 'Observable'. In such cases one has to manually set the generic type\n * like `actions.ofType('add')`.\n *\n * @usageNotes\n *\n * Filter the Actions stream on the \"customers page loaded\" action\n *\n * ```ts\n * import { ofType } from '@ngrx/effects';\n * import * fromCustomers from '../customers';\n *\n * this.actions$.pipe(\n * ofType(fromCustomers.pageLoaded)\n * )\n * ```\n */\nfunction ofType(...allowedTypes) {\n return filter(action => allowedTypes.some(typeOrActionCreator => {\n if (typeof typeOrActionCreator === 'string') {\n // Comparing the string to type\n return typeOrActionCreator === action.type;\n }\n // We are filtering by ActionCreator\n return typeOrActionCreator.type === action.type;\n }));\n}\nconst _ROOT_EFFECTS_GUARD = new InjectionToken('@ngrx/effects Internal Root Guard');\nconst USER_PROVIDED_EFFECTS = new InjectionToken('@ngrx/effects User Provided Effects');\nconst _ROOT_EFFECTS = new InjectionToken('@ngrx/effects Internal Root Effects');\nconst _ROOT_EFFECTS_INSTANCES = new InjectionToken('@ngrx/effects Internal Root Effects Instances');\nconst _FEATURE_EFFECTS = new InjectionToken('@ngrx/effects Internal Feature Effects');\nconst _FEATURE_EFFECTS_INSTANCE_GROUPS = new InjectionToken('@ngrx/effects Internal Feature Effects Instance Groups');\nconst EFFECTS_ERROR_HANDLER = new InjectionToken('@ngrx/effects Effects Error Handler', {\n providedIn: 'root',\n factory: () => defaultEffectsErrorHandler\n});\nconst ROOT_EFFECTS_INIT = '@ngrx/effects/init';\nconst rootEffectsInit = createAction(ROOT_EFFECTS_INIT);\nfunction reportInvalidActions(output, reporter) {\n if (output.notification.kind === 'N') {\n const action = output.notification.value;\n const isInvalidAction = !isAction(action);\n if (isInvalidAction) {\n reporter.handleError(new Error(`Effect ${getEffectName(output)} dispatched an invalid action: ${stringify(action)}`));\n }\n }\n}\nfunction isAction(action) {\n return typeof action !== 'function' && action && action.type && typeof action.type === 'string';\n}\nfunction getEffectName({\n propertyName,\n sourceInstance,\n sourceName\n}) {\n const isMethod = typeof sourceInstance[propertyName] === 'function';\n const isClassBasedEffect = !!sourceName;\n return isClassBasedEffect ? `\"${sourceName}.${String(propertyName)}${isMethod ? '()' : ''}\"` : `\"${String(propertyName)}()\"`;\n}\nfunction stringify(action) {\n try {\n return JSON.stringify(action);\n } catch {\n return action;\n }\n}\nconst onIdentifyEffectsKey = 'ngrxOnIdentifyEffects';\nfunction isOnIdentifyEffects(instance) {\n return isFunction(instance, onIdentifyEffectsKey);\n}\nconst onRunEffectsKey = 'ngrxOnRunEffects';\nfunction isOnRunEffects(instance) {\n return isFunction(instance, onRunEffectsKey);\n}\nconst onInitEffects = 'ngrxOnInitEffects';\nfunction isOnInitEffects(instance) {\n return isFunction(instance, onInitEffects);\n}\nfunction isFunction(instance, functionName) {\n return instance && functionName in instance && typeof instance[functionName] === 'function';\n}\nlet EffectSources = /*#__PURE__*/(() => {\n class EffectSources extends Subject {\n constructor(errorHandler, effectsErrorHandler) {\n super();\n this.errorHandler = errorHandler;\n this.effectsErrorHandler = effectsErrorHandler;\n }\n addEffects(effectSourceInstance) {\n this.next(effectSourceInstance);\n }\n /**\n * @internal\n */\n toActions() {\n return this.pipe(groupBy(effectsInstance => isClassInstance(effectsInstance) ? getSourceForInstance(effectsInstance) : effectsInstance), mergeMap(source$ => {\n return source$.pipe(groupBy(effectsInstance));\n }), mergeMap(source$ => {\n const effect$ = source$.pipe(exhaustMap(sourceInstance => {\n return resolveEffectSource(this.errorHandler, this.effectsErrorHandler)(sourceInstance);\n }), map(output => {\n reportInvalidActions(output, this.errorHandler);\n return output.notification;\n }), filter(notification => notification.kind === 'N' && notification.value != null), dematerialize());\n // start the stream with an INIT action\n // do this only for the first Effect instance\n const init$ = source$.pipe(take(1), filter(isOnInitEffects), map(instance => instance.ngrxOnInitEffects()));\n return merge(effect$, init$);\n }));\n }\n /** @nocollapse */\n static {\n this.ɵfac = function EffectSources_Factory(t) {\n return new (t || EffectSources)(i0.ɵɵinject(i0.ErrorHandler), i0.ɵɵinject(EFFECTS_ERROR_HANDLER));\n };\n }\n /** @nocollapse */\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: EffectSources,\n factory: EffectSources.ɵfac,\n providedIn: 'root'\n });\n }\n }\n return EffectSources;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nfunction effectsInstance(sourceInstance) {\n if (isOnIdentifyEffects(sourceInstance)) {\n return sourceInstance.ngrxOnIdentifyEffects();\n }\n return '';\n}\nfunction resolveEffectSource(errorHandler, effectsErrorHandler) {\n return sourceInstance => {\n const mergedEffects$ = mergeEffects(sourceInstance, errorHandler, effectsErrorHandler);\n if (isOnRunEffects(sourceInstance)) {\n return sourceInstance.ngrxOnRunEffects(mergedEffects$);\n }\n return mergedEffects$;\n };\n}\nlet EffectsRunner = /*#__PURE__*/(() => {\n class EffectsRunner {\n get isStarted() {\n return !!this.effectsSubscription;\n }\n constructor(effectSources, store) {\n this.effectSources = effectSources;\n this.store = store;\n this.effectsSubscription = null;\n }\n start() {\n if (!this.effectsSubscription) {\n this.effectsSubscription = this.effectSources.toActions().subscribe(this.store);\n }\n }\n ngOnDestroy() {\n if (this.effectsSubscription) {\n this.effectsSubscription.unsubscribe();\n this.effectsSubscription = null;\n }\n }\n /** @nocollapse */\n static {\n this.ɵfac = function EffectsRunner_Factory(t) {\n return new (t || EffectsRunner)(i0.ɵɵinject(EffectSources), i0.ɵɵinject(i3.Store));\n };\n }\n /** @nocollapse */\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: EffectsRunner,\n factory: EffectsRunner.ɵfac,\n providedIn: 'root'\n });\n }\n }\n return EffectsRunner;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nlet EffectsRootModule = /*#__PURE__*/(() => {\n class EffectsRootModule {\n constructor(sources, runner, store, rootEffectsInstances, storeRootModule, storeFeatureModule, guard) {\n this.sources = sources;\n runner.start();\n for (const effectsInstance of rootEffectsInstances) {\n sources.addEffects(effectsInstance);\n }\n store.dispatch({\n type: ROOT_EFFECTS_INIT\n });\n }\n addEffects(effectsInstance) {\n this.sources.addEffects(effectsInstance);\n }\n /** @nocollapse */\n static {\n this.ɵfac = function EffectsRootModule_Factory(t) {\n return new (t || EffectsRootModule)(i0.ɵɵinject(EffectSources), i0.ɵɵinject(EffectsRunner), i0.ɵɵinject(i3.Store), i0.ɵɵinject(_ROOT_EFFECTS_INSTANCES), i0.ɵɵinject(i3.StoreRootModule, 8), i0.ɵɵinject(i3.StoreFeatureModule, 8), i0.ɵɵinject(_ROOT_EFFECTS_GUARD, 8));\n };\n }\n /** @nocollapse */\n static {\n this.ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n type: EffectsRootModule\n });\n }\n /** @nocollapse */\n static {\n this.ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({});\n }\n }\n return EffectsRootModule;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nlet EffectsFeatureModule = /*#__PURE__*/(() => {\n class EffectsFeatureModule {\n constructor(effectsRootModule, effectsInstanceGroups, storeRootModule, storeFeatureModule) {\n const effectsInstances = effectsInstanceGroups.flat();\n for (const effectsInstance of effectsInstances) {\n effectsRootModule.addEffects(effectsInstance);\n }\n }\n /** @nocollapse */\n static {\n this.ɵfac = function EffectsFeatureModule_Factory(t) {\n return new (t || EffectsFeatureModule)(i0.ɵɵinject(EffectsRootModule), i0.ɵɵinject(_FEATURE_EFFECTS_INSTANCE_GROUPS), i0.ɵɵinject(i3.StoreRootModule, 8), i0.ɵɵinject(i3.StoreFeatureModule, 8));\n };\n }\n /** @nocollapse */\n static {\n this.ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n type: EffectsFeatureModule\n });\n }\n /** @nocollapse */\n static {\n this.ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({});\n }\n }\n return EffectsFeatureModule;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nlet EffectsModule = /*#__PURE__*/(() => {\n class EffectsModule {\n static forFeature(...featureEffects) {\n const effects = featureEffects.flat();\n const effectsClasses = getClasses(effects);\n return {\n ngModule: EffectsFeatureModule,\n providers: [effectsClasses, {\n provide: _FEATURE_EFFECTS,\n multi: true,\n useValue: effects\n }, {\n provide: USER_PROVIDED_EFFECTS,\n multi: true,\n useValue: []\n }, {\n provide: _FEATURE_EFFECTS_INSTANCE_GROUPS,\n multi: true,\n useFactory: createEffectsInstances,\n deps: [_FEATURE_EFFECTS, USER_PROVIDED_EFFECTS]\n }]\n };\n }\n static forRoot(...rootEffects) {\n const effects = rootEffects.flat();\n const effectsClasses = getClasses(effects);\n return {\n ngModule: EffectsRootModule,\n providers: [effectsClasses, {\n provide: _ROOT_EFFECTS,\n useValue: [effects]\n }, {\n provide: _ROOT_EFFECTS_GUARD,\n useFactory: _provideForRootGuard\n }, {\n provide: USER_PROVIDED_EFFECTS,\n multi: true,\n useValue: []\n }, {\n provide: _ROOT_EFFECTS_INSTANCES,\n useFactory: createEffectsInstances,\n deps: [_ROOT_EFFECTS, USER_PROVIDED_EFFECTS]\n }]\n };\n }\n /** @nocollapse */\n static {\n this.ɵfac = function EffectsModule_Factory(t) {\n return new (t || EffectsModule)();\n };\n }\n /** @nocollapse */\n static {\n this.ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n type: EffectsModule\n });\n }\n /** @nocollapse */\n static {\n this.ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({});\n }\n }\n return EffectsModule;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nfunction createEffectsInstances(effectsGroups, userProvidedEffectsGroups) {\n const effects = [];\n for (const effectsGroup of effectsGroups) {\n effects.push(...effectsGroup);\n }\n for (const userProvidedEffectsGroup of userProvidedEffectsGroups) {\n effects.push(...userProvidedEffectsGroup);\n }\n return effects.map(effectsTokenOrRecord => isToken(effectsTokenOrRecord) ? inject(effectsTokenOrRecord) : effectsTokenOrRecord);\n}\nfunction _provideForRootGuard() {\n const runner = inject(EffectsRunner, {\n optional: true,\n skipSelf: true\n });\n const rootEffects = inject(_ROOT_EFFECTS, {\n self: true\n });\n // check whether any effects are actually passed\n const hasEffects = !(rootEffects.length === 1 && rootEffects[0].length === 0);\n if (hasEffects && runner) {\n throw new TypeError(`EffectsModule.forRoot() called twice. Feature modules should use EffectsModule.forFeature() instead.`);\n }\n return 'guarded';\n}\n\n/**\n * Wraps project fn with error handling making it safe to use in Effects.\n * Takes either a config with named properties that represent different possible\n * callbacks or project/error callbacks that are required.\n */\nfunction act( /** Allow to take either config object or project/error functions */\nconfigOrProject, errorFn) {\n const {\n project,\n error,\n complete,\n operator,\n unsubscribe\n } = typeof configOrProject === 'function' ? {\n project: configOrProject,\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n error: errorFn,\n operator: concatMap,\n complete: undefined,\n unsubscribe: undefined\n } : {\n ...configOrProject,\n operator: configOrProject.operator || concatMap\n };\n return source => defer(() => {\n const subject = new Subject();\n return merge(source.pipe(operator((input, index) => defer(() => {\n let completed = false;\n let errored = false;\n let projectedCount = 0;\n return project(input, index).pipe(materialize(), map(notification => {\n switch (notification.kind) {\n case 'E':\n errored = true;\n return {\n kind: 'N',\n value: error(notification.error, input)\n };\n case 'C':\n completed = true;\n return complete ? {\n kind: 'N',\n value: complete(projectedCount, input)\n } : undefined;\n default:\n ++projectedCount;\n return notification;\n }\n }), filter(n => n != null), dematerialize(), finalize(() => {\n if (!completed && !errored && unsubscribe) {\n subject.next(unsubscribe(projectedCount, input));\n }\n }));\n }))), subject);\n });\n}\n\n/**\n * @usageNotes\n *\n * ### Providing effects at the root level\n *\n * ```ts\n * bootstrapApplication(AppComponent, {\n * providers: [provideEffects(RouterEffects)],\n * });\n * ```\n *\n * ### Providing effects at the feature level\n *\n * ```ts\n * const booksRoutes: Route[] = [\n * {\n * path: '',\n * providers: [provideEffects(BooksApiEffects)],\n * children: [\n * { path: '', component: BookListComponent },\n * { path: ':id', component: BookDetailsComponent },\n * ],\n * },\n * ];\n * ```\n */\nfunction provideEffects(...effects) {\n const effectsClassesAndRecords = effects.flat();\n const effectsClasses = getClasses(effectsClassesAndRecords);\n return makeEnvironmentProviders([effectsClasses, {\n provide: ENVIRONMENT_INITIALIZER,\n multi: true,\n useValue: () => {\n inject(ROOT_STORE_PROVIDER);\n inject(FEATURE_STATE_PROVIDER, {\n optional: true\n });\n const effectsRunner = inject(EffectsRunner);\n const effectSources = inject(EffectSources);\n const shouldInitEffects = !effectsRunner.isStarted;\n if (shouldInitEffects) {\n effectsRunner.start();\n }\n for (const effectsClassOrRecord of effectsClassesAndRecords) {\n const effectsInstance = isClass(effectsClassOrRecord) ? inject(effectsClassOrRecord) : effectsClassOrRecord;\n effectSources.addEffects(effectsInstance);\n }\n if (shouldInitEffects) {\n const store = inject(Store);\n store.dispatch(rootEffectsInit());\n }\n }\n }]);\n}\n\n/**\n * DO NOT EDIT\n *\n * This file is automatically generated at build\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { Actions, EFFECTS_ERROR_HANDLER, EffectSources, EffectsFeatureModule, EffectsModule, EffectsRootModule, EffectsRunner, ROOT_EFFECTS_INIT, USER_PROVIDED_EFFECTS, act, createEffect, defaultEffectsErrorHandler, getEffectsMetadata, mergeEffects, ofType, provideEffects, rootEffectsInit };\n","import { AuthService } from '@auth0/auth0-angular';\nimport { Actions, createEffect, ofType } from '@ngrx/effects';\nimport { map, mergeMap } from 'rxjs';\nimport { AuthActions } from './auth.actions';\nimport { Injectable } from '@angular/core';\n\n@Injectable()\nexport class AuthEffects {\n constructor(private actions$: Actions, private authService: AuthService) {}\n\n login$ = createEffect(() =>\n this.actions$.pipe(\n ofType(AuthActions.login),\n mergeMap(() =>\n this.authService\n .loginWithPopup(\n {},\n {\n timeoutInSeconds: 1000,\n }\n )\n .pipe(map(() => AuthActions.loginSuccess()))\n )\n )\n );\n\n logout$ = createEffect(() =>\n this.actions$.pipe(\n ofType(AuthActions.logout),\n mergeMap(() =>\n this.authService\n .logout({\n logoutParams: { returnTo: document.location.origin },\n })\n .pipe(map(() => AuthActions.logoutSuccess()))\n )\n )\n );\n\n signup$ = createEffect(() =>\n this.actions$.pipe(\n ofType(AuthActions.signup),\n mergeMap(() =>\n this.authService\n .loginWithPopup(\n {\n authorizationParams: {\n screen_hint: 'signup',\n },\n },\n {\n timeoutInSeconds: 1000,\n }\n )\n .pipe(map(() => AuthActions.signupSuccess()))\n )\n )\n );\n}\n","/**\n * @license Angular v18.1.0\n * (c) 2010-2024 Google LLC. https://angular.io/\n * License: MIT\n */\n\nimport { DOCUMENT } from '@angular/common';\nimport * as i0 from '@angular/core';\nimport { inject, ɵChangeDetectionScheduler, ɵRuntimeError, Injectable, ɵperformanceMarkFeature, makeEnvironmentProviders, RendererFactory2, NgZone, ANIMATION_MODULE_TYPE } from '@angular/core';\nimport { ɵDomRendererFactory2 } from '@angular/platform-browser';\nconst ANIMATION_PREFIX = '@';\nlet AsyncAnimationRendererFactory = /*#__PURE__*/(() => {\n class AsyncAnimationRendererFactory {\n /**\n *\n * @param moduleImpl allows to provide a mock implmentation (or will load the animation module)\n */\n constructor(doc, delegate, zone, animationType, moduleImpl) {\n this.doc = doc;\n this.delegate = delegate;\n this.zone = zone;\n this.animationType = animationType;\n this.moduleImpl = moduleImpl;\n this._rendererFactoryPromise = null;\n this.scheduler = inject(ɵChangeDetectionScheduler, {\n optional: true\n });\n }\n /** @nodoc */\n ngOnDestroy() {\n // When the root view is removed, the renderer defers the actual work to the\n // `TransitionAnimationEngine` to do this, and the `TransitionAnimationEngine` doesn't actually\n // remove the DOM node, but just calls `markElementAsRemoved()`. The actual DOM node is not\n // removed until `TransitionAnimationEngine` \"flushes\".\n // Note: we already flush on destroy within the `InjectableAnimationEngine`. The injectable\n // engine is not provided when async animations are used.\n this._engine?.flush();\n }\n /**\n * @internal\n */\n loadImpl() {\n // Note on the `.then(m => m)` part below: Closure compiler optimizations in g3 require\n // `.then` to be present for a dynamic import (or an import should be `await`ed) to detect\n // the set of imported symbols.\n const moduleImpl = this.moduleImpl ?? import('@angular/animations/browser').then(m => m);\n return moduleImpl.catch(e => {\n throw new ɵRuntimeError(5300 /* RuntimeErrorCode.ANIMATION_RENDERER_ASYNC_LOADING_FAILURE */, (typeof ngDevMode === 'undefined' || ngDevMode) && 'Async loading for animations package was ' + 'enabled, but loading failed. Angular falls back to using regular rendering. ' + \"No animations will be displayed and their styles won't be applied.\");\n }).then(({\n ɵcreateEngine,\n ɵAnimationRendererFactory\n }) => {\n // We can't create the renderer yet because we might need the hostElement and the type\n // Both are provided in createRenderer().\n this._engine = ɵcreateEngine(this.animationType, this.doc);\n const rendererFactory = new ɵAnimationRendererFactory(this.delegate, this._engine, this.zone);\n this.delegate = rendererFactory;\n return rendererFactory;\n });\n }\n /**\n * This method is delegating the renderer creation to the factories.\n * It uses default factory while the animation factory isn't loaded\n * and will rely on the animation factory once it is loaded.\n *\n * Calling this method will trigger as side effect the loading of the animation module\n * if the renderered component uses animations.\n */\n createRenderer(hostElement, rendererType) {\n const renderer = this.delegate.createRenderer(hostElement, rendererType);\n if (renderer.ɵtype === 0 /* AnimationRendererType.Regular */) {\n // The factory is already loaded, this is an animation renderer\n return renderer;\n }\n // We need to prevent the DomRenderer to throw an error because of synthetic properties\n if (typeof renderer.throwOnSyntheticProps === 'boolean') {\n renderer.throwOnSyntheticProps = false;\n }\n // Using a dynamic renderer to switch the renderer implementation once the module is loaded.\n const dynamicRenderer = new DynamicDelegationRenderer(renderer);\n // Kick off the module loading if the component uses animations but the module hasn't been\n // loaded yet.\n if (rendererType?.data?.['animation'] && !this._rendererFactoryPromise) {\n this._rendererFactoryPromise = this.loadImpl();\n }\n this._rendererFactoryPromise?.then(animationRendererFactory => {\n const animationRenderer = animationRendererFactory.createRenderer(hostElement, rendererType);\n dynamicRenderer.use(animationRenderer);\n this.scheduler?.notify(9 /* NotificationSource.AsyncAnimationsLoaded */);\n }).catch(e => {\n // Permanently use regular renderer when loading fails.\n dynamicRenderer.use(renderer);\n });\n return dynamicRenderer;\n }\n begin() {\n this.delegate.begin?.();\n }\n end() {\n this.delegate.end?.();\n }\n whenRenderingDone() {\n return this.delegate.whenRenderingDone?.() ?? Promise.resolve();\n }\n static {\n this.ɵfac = function AsyncAnimationRendererFactory_Factory(t) {\n i0.ɵɵinvalidFactory();\n };\n }\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: AsyncAnimationRendererFactory,\n factory: AsyncAnimationRendererFactory.ɵfac\n });\n }\n }\n return AsyncAnimationRendererFactory;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n/**\n * The class allows to dynamicly switch between different renderer implementations\n * by changing the delegate renderer.\n */\nclass DynamicDelegationRenderer {\n constructor(delegate) {\n this.delegate = delegate;\n // List of callbacks that need to be replayed on the animation renderer once its loaded\n this.replay = [];\n this.ɵtype = 1 /* AnimationRendererType.Delegated */;\n }\n use(impl) {\n this.delegate = impl;\n if (this.replay !== null) {\n // Replay queued actions using the animation renderer to apply\n // all events and properties collected while loading was in progress.\n for (const fn of this.replay) {\n fn(impl);\n }\n // Set to `null` to indicate that the queue was processed\n // and we no longer need to collect events and properties.\n this.replay = null;\n }\n }\n get data() {\n return this.delegate.data;\n }\n destroy() {\n this.replay = null;\n this.delegate.destroy();\n }\n createElement(name, namespace) {\n return this.delegate.createElement(name, namespace);\n }\n createComment(value) {\n return this.delegate.createComment(value);\n }\n createText(value) {\n return this.delegate.createText(value);\n }\n get destroyNode() {\n return this.delegate.destroyNode;\n }\n appendChild(parent, newChild) {\n this.delegate.appendChild(parent, newChild);\n }\n insertBefore(parent, newChild, refChild, isMove) {\n this.delegate.insertBefore(parent, newChild, refChild, isMove);\n }\n removeChild(parent, oldChild, isHostElement) {\n this.delegate.removeChild(parent, oldChild, isHostElement);\n }\n selectRootElement(selectorOrNode, preserveContent) {\n return this.delegate.selectRootElement(selectorOrNode, preserveContent);\n }\n parentNode(node) {\n return this.delegate.parentNode(node);\n }\n nextSibling(node) {\n return this.delegate.nextSibling(node);\n }\n setAttribute(el, name, value, namespace) {\n this.delegate.setAttribute(el, name, value, namespace);\n }\n removeAttribute(el, name, namespace) {\n this.delegate.removeAttribute(el, name, namespace);\n }\n addClass(el, name) {\n this.delegate.addClass(el, name);\n }\n removeClass(el, name) {\n this.delegate.removeClass(el, name);\n }\n setStyle(el, style, value, flags) {\n this.delegate.setStyle(el, style, value, flags);\n }\n removeStyle(el, style, flags) {\n this.delegate.removeStyle(el, style, flags);\n }\n setProperty(el, name, value) {\n // We need to keep track of animation properties set on default renderer\n // So we can also set them also on the animation renderer\n if (this.shouldReplay(name)) {\n this.replay.push(renderer => renderer.setProperty(el, name, value));\n }\n this.delegate.setProperty(el, name, value);\n }\n setValue(node, value) {\n this.delegate.setValue(node, value);\n }\n listen(target, eventName, callback) {\n // We need to keep track of animation events registred by the default renderer\n // So we can also register them against the animation renderer\n if (this.shouldReplay(eventName)) {\n this.replay.push(renderer => renderer.listen(target, eventName, callback));\n }\n return this.delegate.listen(target, eventName, callback);\n }\n shouldReplay(propOrEventName) {\n //`null` indicates that we no longer need to collect events and properties\n return this.replay !== null && propOrEventName.startsWith(ANIMATION_PREFIX);\n }\n}\n\n/**\n * Returns the set of dependency-injection providers\n * to enable animations in an application. See [animations guide](guide/animations)\n * to learn more about animations in Angular.\n *\n * When you use this function instead of the eager `provideAnimations()`, animations won't be\n * rendered until the renderer is loaded.\n *\n * @usageNotes\n *\n * The function is useful when you want to enable animations in an application\n * bootstrapped using the `bootstrapApplication` function. In this scenario there\n * is no need to import the `BrowserAnimationsModule` NgModule at all, just add\n * providers returned by this function to the `providers` list as show below.\n *\n * ```typescript\n * bootstrapApplication(RootComponent, {\n * providers: [\n * provideAnimationsAsync()\n * ]\n * });\n * ```\n *\n * @param type pass `'noop'` as argument to disable animations.\n *\n * @publicApi\n */\nfunction provideAnimationsAsync(type = 'animations') {\n ɵperformanceMarkFeature('NgAsyncAnimations');\n return makeEnvironmentProviders([{\n provide: RendererFactory2,\n useFactory: (doc, renderer, zone) => {\n return new AsyncAnimationRendererFactory(doc, renderer, zone, type);\n },\n deps: [DOCUMENT, ɵDomRendererFactory2, NgZone]\n }, {\n provide: ANIMATION_MODULE_TYPE,\n useValue: type === 'noop' ? 'NoopAnimations' : 'BrowserAnimations'\n }]);\n}\n\n/**\n * @module\n * @description\n * Entry point for all animation APIs of the animation browser package.\n */\n\n/**\n * @module\n * @description\n * Entry point for all public APIs of this package.\n */\n\n// This file is not used to build this module. It is only used during editing\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { provideAnimationsAsync, AsyncAnimationRendererFactory as ɵAsyncAnimationRendererFactory };\n","import { bootstrapApplication } from '@angular/platform-browser';\nimport { AppComponent } from './app/app.component';\nimport { provideAuth0 } from '@auth0/auth0-angular';\nimport { provideRouter } from '@angular/router';\nimport { routes } from './app/app.routes';\nimport { provideStore } from '@ngrx/store';\nimport { provideStoreDevtools } from '@ngrx/store-devtools';\nimport { isDevMode } from '@angular/core';\nimport { authReducer } from './app/state/auth/auth.reducer';\nimport { provideEffects } from '@ngrx/effects';\nimport { AuthEffects } from './app/state/auth/auth.effects';\nimport { provideHttpClient } from '@angular/common/http';\nimport { provideAnimationsAsync } from '@angular/platform-browser/animations/async';\nimport { environment } from './environments/environment';\n\nbootstrapApplication(AppComponent, {\n providers: [\n provideAuth0({\n domain: environment.auth0Domain,\n clientId: environment.auth0ClientId,\n authorizationParams: {\n redirect_uri: window.location.origin,\n audience: environment.auth0Audience\n },\n httpTimeoutInSeconds:1000,\n }),\n provideRouter(routes),\n provideStore({ auth: authReducer }),\n provideStoreDevtools({\n name: 'Customer Portal',\n maxAge: 25,\n logOnly: !isDevMode(),\n }),\n provideEffects([AuthEffects]),\n provideAnimationsAsync(),\n provideHttpClient(),\n ],\n});\n"],"mappings":"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","names":["AppComponent","selectors","standalone","features","ɵɵStandaloneFeature","decls","vars","template","rf","ctx","ɵɵelement","HttpClientModule","ReactiveFormsModule","CommonModule","RouterModule","RouterOutlet","_AppComponent","CustomAuthGuard","constructor","auth","router","store","canActivate","isAuthenticated$","pipe","map","isAuthenticated","navigate","ɵɵinject","AuthService","Router","Store","factory","ɵfac","providedIn","_CustomAuthGuard","routes","path","pathMatch","loadComponent","then","mod","HomepageComponent","FaqComponent","HomeSalesRefinancingComponent","canActivate","CustomAuthGuard","BatterySolutionsComponent","FormsComponent","PrivacyPolicyComponent","MonitoringComponent","DashboardComponent","CareersComponent","LicensesComponent","ContactUsComponent","ServiceChargesComponent","EnvironmentalCommoditiesMarketsComponent","FleetManagementComponent","AboutComponent","ProComponent","SpruceServicingComponent","PageNotFoundComponent","PortalFaqComponent","UserSettingsComponent","LifeEventsComponent","LifeEventsRefinanceComponent","SolarAgreementAmendmentRequestComponent","SystemPurchaseOrPrepaymentRequestComponent","RefinanceInformationRequestComponent","EscrowFacilitatedTransactionsRequestComponent","LawyerFacilitatedTransactionsRequestComponent","SuccessMessageComponent","PERFORM_ACTION","REFRESH","RESET","ROLLBACK","COMMIT","SWEEP","TOGGLE_ACTION","SET_ACTIONS_ACTIVE","JUMP_TO_STATE","JUMP_TO_ACTION","IMPORT_STATE","LOCK_CHANGES","PAUSE_RECORDING","PerformAction","action","timestamp","Refresh","Reset","Rollback","Commit","Sweep","ToggleAction","id","JumpToState","index","JUMP_TO_STATE","JumpToAction","actionId","JUMP_TO_ACTION","ImportState","nextLiftedState","IMPORT_STATE","LockChanges","status","LOCK_CHANGES","PauseRecording","PAUSE_RECORDING","STORE_DEVTOOLS_CONFIG","InjectionToken","INITIAL_OPTIONS","noMonitor","DEFAULT_NAME","createConfig","optionsInput","DEFAULT_OPTIONS","options","logOnly","features","config","difference","first","second","item","unliftState","liftedState","computedStates","currentStateIndex","state","liftAction","action","PerformAction","sanitizeActions","actionSanitizer","actions","sanitizedActions","actionIdx","idx","sanitizeAction","__spreadProps","__spreadValues","sanitizeStates","stateSanitizer","states","computedState","sanitizeState","state","stateIdx","shouldFilterActions","config","filterLiftedState","liftedState","predicate","safelist","blocklist","filteredStagedActionIds","filteredActionsById","filteredComputedStates","id","liftedAction","isActionFiltered","blockedlist","predicateMatch","safelistMatch","s","escapeRegExp","blocklistMatch","injectZoneConfig","connectInZone","inject","NgZone","DevtoolsDispatcher","_DevtoolsDispatcher","ActionsSubject","ɵDevtoolsDispatcher_BaseFactory","t","ɵɵgetInheritedFactory","ɵɵdefineInjectable","ExtensionActionTypes","REDUX_DEVTOOLS_EXTENSION","InjectionToken","DevtoolsExtension","_DevtoolsExtension","devtoolsExtension","dispatcher","PERFORM_ACTION","currentState","unliftState","sanitizedState","sanitizedAction","sanitizedLiftedState","Observable","subscriber","connection","change","EMPTY","changes$","share","start$","filter","stop$","liftedActions$","map","concatMap","IMPORT_STATE","UPDATE","timeout","debounceTime","catchError","of","take","actionsUntilStop$","takeUntil","liftedUntilStop$","switchMap","extensionOptions","send","err","ɵɵinject","STORE_DEVTOOLS_CONFIG","INIT_ACTION","INIT","RECOMPUTE","RECOMPUTE_ACTION","computeNextEntry","reducer","error","errorHandler","nextState","nextError","recomputeStates","computedStates","minInvalidatedStateIndex","committedState","actionsById","stagedActionIds","skippedActionIds","isPaused","nextComputedStates","lastIncludedActionId","i","actionId","previousEntry","previousState","previousError","entry","liftInitialState","initialCommittedState","monitorReducer","liftReducerWith","initialLiftedState","options","monitorState","nextActionId","currentStateIndex","isLocked","commitExcessActions","n","excess","idsToDelete","commitChanges","LOCK_CHANGES","PAUSE_RECORDING","RESET","COMMIT","ROLLBACK","TOGGLE_ACTION","SET_ACTIONS_ACTIVE","start","end","active","actionIds","difference","JUMP_TO_STATE","JUMP_TO_ACTION","index","SWEEP","lastState","cmp","StoreDevtools","_StoreDevtools","actions$","reducers$","extension","scannedActions","initialState","liftedInitialState","liftReducer","liftedAction$","merge","skip","observeOn","queueScheduler","liftedReducer$","zoneConfig","liftedStateSubject","ReplaySubject","withLatestFrom","emitInZone","scan","reducedLiftedState","unliftedAction","liftedState$","state$","toSignal","Refresh","Reset","Rollback","Commit","Sweep","ToggleAction","JumpToAction","JumpToState","nextLiftedState","ImportState","status","LockChanges","PauseRecording","ReducerObservable","ScannedActionsSubject","ErrorHandler","INITIAL_STATE","ngZone","source","value","IS_EXTENSION_OR_MONITOR_PRESENT","createIsExtensionOrMonitorPresent","noMonitor","createReduxDevtoolsExtension","extensionKey","provideStoreDevtools","makeEnvironmentProviders","INITIAL_OPTIONS","createConfig","StateObservable","createStateObservable","ReducerManagerDispatcher","devtools","initialState","isLoggedIn","authReducer","createReducer","initialState","on","AuthActions","loginSuccess","state","__spreadProps","__spreadValues","isLoggedIn","logoutSuccess","signupSuccess","DEFAULT_EFFECT_CONFIG","CREATE_EFFECT_METADATA_KEY","createEffect","source","config","effect","value","__spreadValues","getCreateEffectMetadata","instance","propertyName","metaData","getSourceMetadata","instance","getCreateEffectMetadata","getSourceForInstance","isClassInstance","obj","isClass","classOrRecord","getClasses","classesAndRecords","mergeEffects","sourceInstance","globalErrorHandler","effectsErrorHandler","source","getSourceForInstance","sourceName","observables$","getSourceMetadata","propertyName","dispatch","useEffectsErrorHandler","observable$","effectAction$","ignoreElements","materialize","map","notification","merge","MAX_NUMBER_OF_RETRY_ATTEMPTS","defaultEffectsErrorHandler","errorHandler","retryAttemptLeft","catchError","error","Actions","_Actions","Observable","operator","observable","t","ɵɵinject","ScannedActionsSubject","ɵɵdefineInjectable","ofType","allowedTypes","filter","action","typeOrActionCreator","_ROOT_EFFECTS_GUARD","InjectionToken","USER_PROVIDED_EFFECTS","_ROOT_EFFECTS","_ROOT_EFFECTS_INSTANCES","_FEATURE_EFFECTS","_FEATURE_EFFECTS_INSTANCE_GROUPS","EFFECTS_ERROR_HANDLER","ROOT_EFFECTS_INIT","rootEffectsInit","createAction","reportInvalidActions","output","reporter","isAction","getEffectName","stringify","isMethod","onIdentifyEffectsKey","isOnIdentifyEffects","instance","isFunction","onRunEffectsKey","isOnRunEffects","onInitEffects","isOnInitEffects","functionName","EffectSources","_EffectSources","Subject","effectSourceInstance","groupBy","effectsInstance","isClassInstance","mergeMap","source$","effect$","exhaustMap","resolveEffectSource","dematerialize","init$","take","ErrorHandler","mergedEffects$","EffectsRunner","_EffectsRunner","effectSources","store","Store","provideEffects","effects","effectsClassesAndRecords","effectsClasses","getClasses","makeEnvironmentProviders","ENVIRONMENT_INITIALIZER","inject","ROOT_STORE_PROVIDER","FEATURE_STATE_PROVIDER","effectsRunner","EffectsRunner","effectSources","EffectSources","shouldInitEffects","effectsClassOrRecord","effectsInstance","isClass","Store","rootEffectsInit","AuthEffects","constructor","actions$","authService","login$","createEffect","pipe","ofType","AuthActions","login","mergeMap","loginWithPopup","timeoutInSeconds","map","loginSuccess","logout$","logout","logoutParams","returnTo","document","location","origin","logoutSuccess","signup$","signup","authorizationParams","screen_hint","signupSuccess","ɵɵinject","Actions","AuthService","factory","ɵfac","_AuthEffects","ANIMATION_PREFIX","AsyncAnimationRendererFactory","_AsyncAnimationRendererFactory","doc","delegate","zone","animationType","moduleImpl","inject","ChangeDetectionScheduler","m","e","RuntimeError","ɵcreateEngine","ɵAnimationRendererFactory","rendererFactory","hostElement","rendererType","renderer","dynamicRenderer","DynamicDelegationRenderer","animationRendererFactory","animationRenderer","t","ɵɵinvalidFactory","ɵɵdefineInjectable","impl","fn","name","namespace","value","parent","newChild","refChild","isMove","oldChild","isHostElement","selectorOrNode","preserveContent","node","el","style","flags","target","eventName","callback","propOrEventName","provideAnimationsAsync","type","performanceMarkFeature","makeEnvironmentProviders","RendererFactory2","DOCUMENT","DomRendererFactory2","NgZone","ANIMATION_MODULE_TYPE","bootstrapApplication","AppComponent","providers","provideAuth0","domain","environment","auth0Domain","clientId","auth0ClientId","authorizationParams","redirect_uri","window","location","origin","audience","auth0Audience","httpTimeoutInSeconds","provideRouter","routes","provideStore","auth","authReducer","provideStoreDevtools","name","maxAge","logOnly","isDevMode","provideEffects","AuthEffects","provideAnimationsAsync","provideHttpClient"],"x_google_ignoreList":[4,7,9]}