{"version":3,"file":"imng-kendo-ngrx-idle.mjs","sources":["../../../../libs/imng-kendo-ngrx-idle/src/lib/+state/idle.actions.ts","../../../../libs/imng-kendo-ngrx-idle/src/lib/idle-config.ts","../../../../libs/imng-kendo-ngrx-idle/src/lib/+state/idle.reducer.ts","../../../../libs/imng-kendo-ngrx-idle/src/lib/+state/idle.selectors.ts","../../../../libs/imng-kendo-ngrx-idle/src/lib/+state/idle.effects.ts","../../../../libs/imng-kendo-ngrx-idle/src/lib/+state/idle.facade.ts","../../../../libs/imng-kendo-ngrx-idle/src/lib/idle-warning/idle-warning.component.ts","../../../../libs/imng-kendo-ngrx-idle/src/lib/imng-ngrx-idle.module.ts","../../../../libs/imng-kendo-ngrx-idle/src/imng-kendo-ngrx-idle.ts"],"sourcesContent":["import { createAction } from '@ngrx/store';\nimport { IdleConfig } from '../idle-config';\nimport { createPayloadAction } from 'imng-ngrx-utils';\n\nexport const onSessionExtended = createAction(\n  '[Idle] Session Extended'\n);\nexport const onSessionTimingOut = createPayloadAction<IdleConfig>(\n  '[Idle] Session Timing Out'\n);\nexport const signOutRedirect = createAction('[Oidc] sign out redirect');\n","import { InjectionToken } from '@angular/core';\n\nexport interface IdleConfig {\n  timeoutWarningInMs: number;\n  autoLogoutInMs: number;\n}\nexport const IDLE_CONFIG = new InjectionToken<IdleConfig>('idle-config');\n","import { createFeature, createReducer, on } from '@ngrx/store';\nimport * as idleActions from './idle.actions';\n\nexport const IDLE_FEATURE_KEY = 'idle';\n\nexport interface IdleState {\n  isTimingOut: boolean;\n  timeoutSpanInMs: number | undefined;\n}\n\nexport const initialState: IdleState = {\n  isTimingOut: false,\n  timeoutSpanInMs: undefined,\n};\n\nexport const idleFeature = createFeature({\n  name: IDLE_FEATURE_KEY,\n  reducer: createReducer(\n    initialState,\n    on(idleActions.onSessionTimingOut,\n      (state, { payload }): IdleState => ({\n        ...state,\n        isTimingOut: true,\n        timeoutSpanInMs: payload.autoLogoutInMs - payload.timeoutWarningInMs,\n      })),\n    on(idleActions.onSessionExtended, idleActions.signOutRedirect,\n      (state): IdleState => ({\n        ...state,\n        isTimingOut: false,\n        timeoutSpanInMs: undefined,\n      })),\n  )\n});\n","import { createSelector } from '@ngrx/store';\nimport { oidcFeature } from 'imng-oidc-client';\nimport { idleFeature } from './idle.reducer';\n\nconst getIsTimingOut = idleFeature.selectIsTimingOut;\nconst getTimeoutSpanInMs = idleFeature.selectTimeoutSpanInMs;\n\nconst selectLoggedInAndIsNotTimingOut = createSelector(\n  oidcFeature.selectIsLoggedIn,\n  idleFeature.selectIsTimingOut,\n  (isLoggedIn, IsTimingOut) => isLoggedIn && !IsTimingOut,\n);\n\nexport const idleQuery = { getIsTimingOut, getTimeoutSpanInMs, selectLoggedInAndIsNotTimingOut };\n","import { Injectable, inject } from '@angular/core';\nimport { Actions, createEffect } from '@ngrx/effects';\nimport { map, filter, switchMap } from 'rxjs/operators';\nimport { timer, Observable } from 'rxjs';\n\nimport { Store } from '@ngrx/store';\nimport { signOutRedirect, onSessionTimingOut } from './idle.actions';\nimport { IDLE_CONFIG, IdleConfig } from '../idle-config';\nimport { idleQuery } from './idle.selectors';\n\n@Injectable({ providedIn: 'root' })\nexport class IdleEffects {\n  private readonly idleConfig = inject<IdleConfig>(IDLE_CONFIG);\n  private readonly store = inject(Store);\n  private readonly actions$ = inject(Actions);\n\n  public signOutRedirect$ = createEffect(() => {\n    return this.getLoggedInActionPipe().pipe(\n      switchMap(() => timer(this.idleConfig.autoLogoutInMs)),\n      map(() => signOutRedirect()),\n    );\n  });\n\n  public timingOut$ = createEffect(() => {\n    return this.getLoggedInActionPipe().pipe(\n      switchMap(() => timer(this.idleConfig.timeoutWarningInMs)),\n      map(() => onSessionTimingOut(this.idleConfig)),\n    );\n  });\n\n  public getLoggedInActionPipe(): Observable<boolean> {\n    return this.actions$.pipe(\n      switchMap(() =>\n        this.store\n          .select(idleQuery.selectLoggedInAndIsNotTimingOut)\n          .pipe(filter((val) => val)),\n      ),\n    );\n  }\n}\n","import { Injectable, inject } from '@angular/core';\nimport { Store } from '@ngrx/store';\nimport { idleQuery } from './idle.selectors';\nimport { Observable } from 'rxjs';\nimport { onSessionExtended } from './idle.actions';\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class IdleFacade {\n  private readonly store = inject(Store);\n\n\n  isTimingOut$: Observable<boolean> = this.store.select(\n    idleQuery.getIsTimingOut\n  );\n  timeOutSpanInMs$: Observable<number | undefined> = this.store.select(\n    idleQuery.getTimeoutSpanInMs\n  );\n\n  public extendSession(): void {\n    this.store.dispatch(onSessionExtended());\n  }\n}\n","import { Component, OnInit, OnDestroy, inject } from '@angular/core';\nimport { IdleFacade } from '../+state/idle.facade';\nimport { BehaviorSubject, Subscription, interval, Observable } from 'rxjs';\nimport { tap, filter, switchMap, map } from 'rxjs/operators';\nimport { KENDO_DIALOG } from '@progress/kendo-angular-dialog';\nimport { AsyncPipe } from '@angular/common';\nimport { KENDO_BUTTON } from '@progress/kendo-angular-buttons';\n\n@Component({\n  selector: 'imng-idle-warning',\n  imports: [AsyncPipe, KENDO_DIALOG, KENDO_BUTTON],\n  template: `@if (isSessionTimingOut$ | async) {\n    <kendo-dialog\n      title=\"Idle Session Warning\"\n      (close)=\"close()\"\n      [minWidth]=\"250\"\n      [width]=\"450\">\n      <p class=\"warn-msg\">Do you wish to extend your session?</p>\n      <p class=\"warn-msg\">{{ secondsRemaining$ | async }} Seconds remaining</p>\n      <kendo-dialog-actions>\n        <button kendoButton (click)=\"close()\">No</button>\n        <button kendoButton (click)=\"extend()\" themeColor=\"primary\">Yes</button>\n      </kendo-dialog-actions>\n    </kendo-dialog>\n  }`,\n  styles: [\n    `\n      .warn-msg {\n        margin: 30px;\n        text-align: center;\n      }\n    `,\n  ],\n})\nexport class IMNG_KENDO_IDLE_WARNING implements OnInit, OnDestroy {\n  readonly idleFacade = inject(IdleFacade);\n\n  public readonly isSessionTimingOut$ = new BehaviorSubject<boolean>(false);\n  public secondsRemaining$?: Observable<number>;\n  private timeoutSub?: Subscription;\n\n  public ngOnInit(): void {\n    let timeOutSpan = 0;\n    const msInSec = 1000;\n    this.timeoutSub = this.idleFacade.isTimingOut$\n      .pipe(tap((value) => this.isSessionTimingOut$.next(value)))\n      .subscribe();\n    this.secondsRemaining$ = this.idleFacade.timeOutSpanInMs$.pipe(\n      filter((t) => (t ?? 0) > 0),\n      tap((t) => (timeOutSpan = t as number)),\n      switchMap(() => interval(msInSec)),\n      map(() => Math.floor(timeOutSpan / msInSec)),\n      tap(() => (timeOutSpan -= msInSec)),\n    );\n  }\n\n  public ngOnDestroy(): void {\n    this.timeoutSub?.unsubscribe();\n  }\n\n  public close(): void {\n    this.isSessionTimingOut$.next(false);\n  }\n\n  public extend(): void {\n    this.idleFacade.extendSession();\n  }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule, ModuleWithProviders } from '@angular/core';\nimport { EffectsModule } from '@ngrx/effects';\nimport { StoreModule } from '@ngrx/store';\nimport { IdleEffects } from './+state/idle.effects';\nimport { IdleFacade } from './+state/idle.facade';\nimport { idleFeature } from './+state/idle.reducer';\nimport { IdleConfig, IDLE_CONFIG } from './idle-config';\nimport { IMNG_KENDO_IDLE_WARNING } from './idle-warning/idle-warning.component';\n\n@NgModule({\n  imports: [\n    CommonModule,\n    StoreModule.forFeature(idleFeature),\n    EffectsModule.forFeature([IdleEffects]),\n    IMNG_KENDO_IDLE_WARNING,\n  ],\n  exports: [IMNG_KENDO_IDLE_WARNING],\n})\nexport class ImngNgrxIdleModule {\n  static forRoot(\n    idleConfig: IdleConfig,\n  ): ModuleWithProviders<ImngNgrxIdleModule> {\n    return {\n      ngModule: ImngNgrxIdleModule,\n      providers: [{ provide: IDLE_CONFIG, useValue: idleConfig }, IdleFacade],\n    };\n  }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["idleActions.onSessionTimingOut","idleActions.onSessionExtended","idleActions.signOutRedirect","i1","i2"],"mappings":"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"}