{"version":3,"file":"sourceloop-user-onboarding-client.mjs","sources":["../../src/lib/user-onboarding-lib.module.ts","../../src/models/video-model.ts","../../src/models/status.ts","../../src/models/index.ts","../../src/models/constants.ts","../../src/commands/StateCommands.ts","../../src/commands/TourCommands.ts","../../src/lib/tour-store-service.service.ts","../../src/lib/tour-service.service.ts","../../src/commands/index.ts","../../src/public-api.ts","../../src/sourceloop-user-onboarding-client.ts"],"sourcesContent":["// Copyright (c) 2023 Sourcefuse Technologies\n//\n// This software is released under the MIT License.\n// https://opensource.org/licenses/MIT\nimport { NgModule } from '@angular/core';\n\nimport { StorageServiceModule } from 'ngx-webstorage-service';\nimport {VgCoreModule} from '@videogular/ngx-videogular/core';\nimport {VgControlsModule} from '@videogular/ngx-videogular/controls';\nimport {VgOverlayPlayModule} from '@videogular/ngx-videogular/overlay-play';\nimport {VgBufferingModule} from '@videogular/ngx-videogular/buffering';\n\n@NgModule({\n  declarations: [\n\n  ],\n  imports: [\n    StorageServiceModule,\n    VgCoreModule,\n    VgControlsModule,\n    VgOverlayPlayModule,\n    VgBufferingModule\n  ],\n  exports: [\n  ]\n})\nexport class UserOnboardingLibModule { }\n","// Copyright (c) 2023 Sourcefuse Technologies\n//\n// This software is released under the MIT License.\n// https://opensource.org/licenses/MIT\nexport const prefix = `<vg-player><vg-overlay-play>\n</vg-overlay-play>\n<vg-buffering>\n</vg-buffering>\n<vg-scrub-bar>\n<vg-scrub-bar-current-time>\n</vg-scrub-bar-current-time>\n<vg-scrub-bar-buffering-time>\n</vg-scrub-bar-buffering-time>\n</vg-scrub-bar>\n<vg-controls><vg-play-pause>\n</vg-play-pause>\n <vg-playback-button>\n </vg-playback-button>\n <vg-time-display vgProperty=\"current\" vgFormat=\"mm:ss\">\n</vg-time-display>\n<vg-scrub-bar style=\"pointer-events: none;\">\n</vg-scrub-bar>\n<vg-time-display vgProperty=\"left\" vgFormat=\"mm:ss\">\n</vg-time-display>\n<vg-time-display vgProperty=\"total\" vgFormat=\"mm:ss\">\n</vg-time-display><vg-track-selector>\n</vg-track-selector>\n<vg-mute ></vg-mute>\n<vg-volume>\n</vg-volume>\n<vg-fullscreen>\n</vg-fullscreen>\n</vg-controls>\n<video width=\"100%\"\n controls disablepictureinpicture controlslist=\"nodownload\"\n  [vgMedia]=\"$any(media)\"\n   #media id= \"singleVideo\" \n   preload=\"auto\" controls>\n   <source src = \"`;\nexport const suffix =\n  '\"type = video/webm type=\"video/mp4\"> </video></vg-player>';\n","// Copyright (c) 2023 Sourcefuse Technologies\n//\n// This software is released under the MIT License.\n// https://opensource.org/licenses/MIT\nexport enum Status {\n  InProgress = 'inProgress',\n  Complete = 'complete',\n}\n","// Copyright (c) 2023 Sourcefuse Technologies\n//\n// This software is released under the MIT License.\n// https://opensource.org/licenses/MIT\nexport * from './state-parameters';\nexport * from './tour';\nexport * from './tour-button';\nexport * from './tour-parameters';\nexport * from './tour-step';\nexport * from './parameter-model';\nexport * from './video-model';\nexport * from './filter-function';\nexport * from './props';\nexport * from './status';\nexport * from './tour-step-change';\nexport * from './tour-complete';\nexport * from './tour-cancel';\n","// Copyright (c) 2023 Sourcefuse Technologies\n//\n// This software is released under the MIT License.\n// https://opensource.org/licenses/MIT\nexport const INTERVAL = 100;\nexport const DEFAULT_MAX_WAIT_TIME = 3000;\n","﻿// CCopyright (c) 2023Sourcefuse Technologies\n//\n// This software is released under the MIT License.\n// https://opensource.org/licenses/MIT\nimport {Observable, of} from 'rxjs';\nimport {\n  DeleteStateParameters,\n  LoadStateParameters,\n  SaveStateParameters,\n  TourState,\n} from '../models';\nimport {DeleteStateCommand, LoadStateCommand, SaveStateCommand} from './types';\nimport {StorageService} from 'ngx-webstorage-service';\n\nexport class SaveSCommand implements SaveStateCommand {\n  constructor(private readonly storage: StorageService) {}\n  public parameters: SaveStateParameters;\n  execute(): Observable<TourState> {\n    const newTourState = this.parameters.state;\n    this.storage.set(\n      `${newTourState.sessionId}_${this.parameters.tourId}`,\n      newTourState,\n    );\n    return of(newTourState);\n  }\n}\n\nexport class LoadSCommand implements LoadStateCommand {\n  constructor(private readonly storage: StorageService) {}\n  public parameters: LoadStateParameters;\n  execute(): Observable<TourState> {\n    const currentState = this.storage.get(\n      `${this.parameters.sessionId}_${this.parameters.tourId}`,\n    );\n    return of(currentState);\n  }\n}\n\nexport class DeleteSCommand implements DeleteStateCommand {\n  constructor(private readonly storage: StorageService) {}\n  public parameters: DeleteStateParameters;\n  execute() {\n    this.storage.remove(\n      `${this.parameters.sessionId}_${this.parameters.tourId}`,\n    );\n  }\n}\n","// Copyright (c) 2023 Sourcefuse Technologies\n//\n// This software is released under the MIT License.\n// https://opensource.org/licenses/MIT\nimport {Observable, of} from 'rxjs';\nimport {\n  DeleteTourParameters,\n  LoadTourParameters,\n  SaveTourParameters,\n  Tour,\n} from '../models';\nimport {DeleteTourCommand, LoadTourCommand, SaveTourCommand} from './types';\nimport {StorageService} from 'ngx-webstorage-service';\n\nexport class SaveTCommand implements SaveTourCommand {\n  constructor(private readonly storage: StorageService) {}\n  public parameters: SaveTourParameters;\n  execute(): Observable<Tour> {\n    const newTour: Tour = {\n      tourId: this.parameters.tourId,\n      tourSteps: this.parameters.tourSteps,\n      styleSheet: this.parameters.styleSheet,\n    };\n    this.storage.set(this.parameters.tourId, newTour);\n    return of(newTour);\n  }\n}\n\nexport class LoadTCommand implements LoadTourCommand {\n  constructor(private readonly storage: StorageService) {}\n  public parameters: LoadTourParameters;\n  execute(): Observable<Tour> {\n    const existingTour = this.storage.get(this.parameters.tourId);\n    return of(existingTour);\n  }\n}\n\nexport class DeleteTCommand implements DeleteTourCommand {\n  constructor(private readonly storage: StorageService) {}\n  public parameters: DeleteTourParameters;\n  execute(): void {\n    this.storage.remove(this.parameters.tourId);\n  }\n}\n","// Copyright (c) 2023 Sourcefuse Technologies\n//\n// This software is released under the MIT License.\n// https://opensource.org/licenses/MIT\nimport {Inject, Injectable, Type} from '@angular/core';\nimport {\n  DeleteStateParameters,\n  DeleteTourParameters,\n  LoadStateParameters,\n  LoadTourParameters,\n  SaveStateParameters,\n  SaveTourParameters,\n  Tour,\n  TourState,\n} from '../models';\nimport {\n  DeleteSCommand,\n  LoadSCommand,\n  SaveSCommand,\n} from '../commands/StateCommands';\nimport {\n  DeleteTCommand,\n  LoadTCommand,\n  SaveTCommand,\n} from '../commands/TourCommands';\nimport {\n  BaseCommand,\n  DeleteStateCommand,\n  DeleteTourCommand,\n  LoadStateCommand,\n  LoadTourCommand,\n  SaveStateCommand,\n  SaveTourCommand,\n} from '../commands/types';\nimport {LOCAL_STORAGE, StorageService} from 'ngx-webstorage-service';\nimport {Observable} from 'rxjs';\nimport {v4 as uuidv4} from 'uuid';\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class TourStoreServiceService {\n  private readonly commandMap = new Map<string, BaseCommand>();\n  private readonly functionMap = new Map();\n  private readonly componentMap = new Map();\n  private sessionId: string;\n  private readonly defaultSSCommand = new SaveSCommand(this.storage);\n  private readonly defaultSTCommand = new SaveTCommand(this.storage);\n  private readonly defaultLSCommand = new LoadSCommand(this.storage);\n  private readonly defaultLTCommand = new LoadTCommand(this.storage);\n  private readonly defaultDSCommand = new DeleteSCommand(this.storage);\n  private readonly defaultDTCommand = new DeleteTCommand(this.storage);\n  private sessionGenerator: () => string = () => uuidv4();\n  constructor(@Inject(LOCAL_STORAGE) private readonly storage: StorageService) {\n    this.commandMap.set('SaveTourCommand', this.defaultSTCommand);\n    this.commandMap.set('LoadTourCommand', this.defaultLTCommand);\n    this.commandMap.set('SaveStateCommand', this.defaultSSCommand);\n    this.commandMap.set('LoadStateCommand', this.defaultLSCommand);\n    this.commandMap.set('DeleteStateCommand', this.defaultDSCommand);\n    this.commandMap.set('DeleteTourCommand', this.defaultDTCommand);\n  }\n  registerSaveTourCommand(cmd): void {\n    this.commandMap.set('SaveTourCommand', cmd);\n  }\n  registerLoadTourCommand(cmd): void {\n    this.commandMap.set('LoadTourCommand', cmd);\n  }\n  registerSaveStateCommand(cmd): void {\n    this.commandMap.set('SaveStateCommand', cmd);\n  }\n  registerLoadStateCommand(cmd): void {\n    this.commandMap.set('LoadStateCommand', cmd);\n  }\n  registerDeleteStateCommand(cmd): void {\n    this.commandMap.set('DeleteStateCommand', cmd);\n  }\n  registerDeleteTourCommand(cmd): void {\n    this.commandMap.set('DeleteTourCommand', cmd);\n  }\n\n  public saveTour(parameters: SaveTourParameters): Observable<Tour> {\n    const command = this.commandMap.get('SaveTourCommand') as SaveTourCommand;\n    command.parameters = parameters;\n\n    return command.execute();\n  }\n\n  public loadTour(parameters: LoadTourParameters): Observable<Tour> {\n    const command = this.commandMap.get('LoadTourCommand') as LoadTourCommand;\n    command.parameters = parameters;\n    return command.execute();\n  }\n\n  public deleteTour(parameters: DeleteTourParameters): void {\n    const command = this.commandMap.get(\n      'DeleteTourCommand',\n    ) as DeleteTourCommand;\n    command.parameters = parameters;\n    return command.execute();\n  }\n\n  public saveState(parameters: SaveStateParameters): Observable<TourState> {\n    const command = this.commandMap.get('SaveStateCommand') as SaveStateCommand;\n    command.parameters = parameters;\n    return command.execute();\n  }\n\n  public loadState(parameters: LoadStateParameters): Observable<TourState> {\n    const command = this.commandMap.get('LoadStateCommand') as LoadStateCommand;\n    command.parameters = parameters;\n    return command.execute();\n  }\n\n  public deleteState(parameters: DeleteStateParameters): void {\n    const command = this.commandMap.get(\n      'DeleteStateCommand',\n    ) as DeleteStateCommand;\n    command.parameters = parameters;\n    return command.execute();\n  }\n\n  public registerFnRef(key, fn: () => void): void {\n    this.functionMap.set(key, fn);\n  }\n\n  public registerComponent(key, component: Type<unknown>) {\n    this.componentMap.set(key, component);\n  }\n\n  public getFnByKey(key): Function {\n    return this.functionMap.get(key);\n  }\n\n  public getComponentByKey(key): Type<unknown> {\n    return this.componentMap.get(key);\n  }\n\n  public generateSessionId(): void {\n    this.sessionId = this.sessionGenerator();\n    this.storage.set('TOUR_SESSION_ID', this.sessionId);\n  }\n\n  public getSessionId(): string {\n    return this.storage.get('TOUR_SESSION_ID');\n  }\n\n  public setSessionIdGenerator(fn: () => string) {\n    this.sessionGenerator = fn;\n  }\n}\n","// Copyright (c) 2023 Sourcefuse Technologies\n//\n// This software is released under the MIT License.\n// https://opensource.org/licenses/MIT\nimport {TourStoreServiceService} from './tour-store-service.service';\nimport {\n  ApplicationRef,\n  ComponentFactoryResolver,\n  Injectable,\n  Injector,\n} from '@angular/core';\nimport Shepherd from 'shepherd.js';\nimport {\n  Tour,\n  TourButton,\n  TourStep,\n  TourState,\n  FilterFunction,\n  Props,\n  Status,\n  TourStepChange,\n  TourComplete,\n  TourCancel,\n  ComponentStep,\n} from '../models';\nimport {Router, NavigationEnd, Event as NavigationEvent} from '@angular/router';\nimport {Subject} from 'rxjs';\nimport {DEFAULT_MAX_WAIT_TIME, INTERVAL} from '../models/constants';\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class TourServiceService {\n  private readonly tourComplete = new Subject<TourComplete>();\n  tourComplete$ = this.tourComplete.asObservable();\n  private readonly tourStepChange = new Subject<TourStepChange>();\n  tourStepChange$ = this.tourStepChange.asObservable();\n  private readonly tourCancel = new Subject<TourCancel>();\n  tourCancel$ = this.tourCancel.asObservable();\n  private readonly interval = INTERVAL;\n  private _maxWaitTime = DEFAULT_MAX_WAIT_TIME;\n  private _exitOnEsc = true;\n  private readonly tourFailed = new Subject<{\n    tourId: string;\n    message: string;\n  }>();\n  tourFailed$ = this.tourFailed.asObservable();\n\n  private tour: Shepherd.Tour;\n\n  constructor(\n    private readonly tourStoreService: TourStoreServiceService,\n    private readonly router: Router,\n    private readonly componentFactory: ComponentFactoryResolver,\n    private readonly injector: Injector,\n    private readonly appRef: ApplicationRef,\n  ) {}\n\n  public set maxWaitTime(maxTime: number) {\n    if (maxTime > 0) {\n      this._maxWaitTime = maxTime;\n    }\n  }\n\n  public get maxWaitTime() {\n    return this._maxWaitTime;\n  }\n\n  public set exitOnEsc(esc: boolean) {\n    this._exitOnEsc = esc;\n  }\n\n  public get exitOnEsc() {\n    return this._exitOnEsc;\n  }\n  private addRemovedSteps(removedSteps): void {\n    const count = removedSteps.length;\n    for (let i = 0; i < count; i++) {\n      this.tour.steps.splice(0, 0, this.tour.steps.pop());\n    }\n  }\n\n  getTour() {\n    return this.tour;\n  }\n\n  private actionAssignment(\n    e: TourStep,\n    b: TourButton,\n    wrapperNormalNext,\n    wrapperNormalPrev,\n    wrapperNext,\n    wrapperPrev,\n    func,\n    tourId: string,\n    props: Props,\n  ): void {\n    if (b.key === 'prevAction') {\n      b.action =\n        e.prevRoute === e.currentRoute ? wrapperNormalPrev : wrapperPrev;\n    } else if (b.key === 'nextAction') {\n      b.action =\n        e.nextRoute === e.currentRoute ? wrapperNormalNext : wrapperNext;\n    } else {\n      b.action = func.bind({tour: this.tour, tourId, props});\n    }\n  }\n\n  private waitForElement(\n    tourStep: TourStep,\n    tourId: string,\n  ): Promise<Element | ''> {\n    if (tourStep.attachTo === undefined) {\n      return Promise.resolve('');\n    } else {\n      const startTime = new Date().getTime();\n      return new Promise<Element | ''>((resolve, reject) => {\n        const timer = setInterval(() => {\n          const now = new Date().getTime();\n          const element = this.checkElement(tourStep.attachTo);\n          if (element) {\n            clearInterval(timer);\n            resolve(element);\n          } else if (now - startTime >= this._maxWaitTime) {\n            clearInterval(timer);\n            reject({tourId, message: `Error in loading tour`});\n          } else {\n            // do nothing\n          }\n        }, this.interval);\n      });\n    }\n  }\n\n  private triggerTour(tourInstance: Tour, props: Props): void {\n    let removedSteps: TourStep[] = [];\n    const sessionId = this.tourStoreService.getSessionId();\n    if (!sessionId) {\n      this.tourStoreService.generateSessionId();\n    }\n    this.tourStoreService\n      .loadState({tourId: tourInstance.tourId, sessionId})\n      .subscribe(tourState => {\n        if (tourState && Object.keys(tourState).length) {\n          if (tourState.status === Status.Complete) {\n            return;\n          }\n          removedSteps = this.getRemovedSteps(\n            tourInstance.tourSteps,\n            tourState,\n          );\n          tourInstance.tourSteps = this.getTourSteps(\n            tourInstance.tourSteps,\n            tourState,\n          );\n        } else {\n          tourState = {\n            sessionId: this.tourStoreService.getSessionId(),\n            step: tourInstance.tourSteps[0].id,\n            props,\n            status: Status.InProgress,\n          };\n          this.tourStoreService\n            .saveState({\n              tourId: tourInstance.tourId,\n              state: tourState,\n            })\n            .subscribe();\n        }\n        tourInstance.tourSteps.forEach((e, index) => {\n          e.buttons.forEach(b => {\n            const key = b.key;\n            const func = this.tourStoreService.getFnByKey(key);\n            const wrapperNext = () => {\n              this.navigateAndMoveToNextStep(e, tourInstance, tourState, index);\n            };\n            const wrapperPrev = () => {\n              this.navigateAndMoveToPrevStep(\n                e,\n                tourInstance,\n                tourState,\n                index,\n                removedSteps,\n              );\n            };\n            const wrapperNormalNext = () => {\n              this.moveToNextStep(tourInstance, tourState, e, index);\n            };\n            const wrapperNormalPrev = () => {\n              this.moveToPrevStep(\n                tourInstance,\n                tourState,\n                e,\n                index,\n                removedSteps,\n              );\n            };\n            this.actionAssignment(\n              e,\n              b,\n              wrapperNormalNext,\n              wrapperNormalPrev,\n              wrapperNext,\n              wrapperPrev,\n              func,\n              tourInstance.tourId,\n              tourState.props,\n            );\n          });\n        });\n        this.tour.addSteps(tourInstance.tourSteps);\n        this.waitForElement(\n          tourInstance.tourSteps[0],\n          tourInstance.tourId,\n        ).then(\n          element => {\n            if (element) {\n              element.scrollIntoView(true);\n            }\n            this.tour.start();\n            if (removedSteps.length) {\n              removedSteps.forEach((er, index) => {\n                er.buttons.forEach(br => {\n                  const k = br.key;\n                  const funcRemoved = this.tourStoreService.getFnByKey(k);\n                  const wrapperNextRemoved = () => {\n                    this.navigateAndMoveToNextStepRemoved(\n                      er,\n                      tourInstance,\n                      tourState,\n                      index,\n                      removedSteps,\n                    );\n                  };\n                  const wrapperPrevRemoved = () => {\n                    this.navigateAndMoveToPrevStepRemoved(\n                      er,\n                      tourInstance,\n                      tourState,\n                      index,\n                      removedSteps,\n                    );\n                  };\n                  const wrapperNormalNextRemoved = () => {\n                    this.moveToNextStepRemoved(\n                      tourInstance,\n                      tourState,\n                      er,\n                      index,\n                      removedSteps,\n                    );\n                  };\n                  const wrapperNormalPrevRemoved = () => {\n                    this.moveToPrevStepRemoved(\n                      tourInstance,\n                      tourState,\n                      er,\n                      index,\n                      removedSteps,\n                    );\n                  };\n                  this.actionAssignment(\n                    er,\n                    br,\n                    wrapperNormalNextRemoved,\n                    wrapperNormalPrevRemoved,\n                    wrapperNextRemoved,\n                    wrapperPrevRemoved,\n                    funcRemoved,\n                    tourInstance.tourId,\n                    tourState.props,\n                  );\n                });\n              });\n              this.tour.addSteps(removedSteps);\n              this.addRemovedSteps(removedSteps);\n            }\n          },\n          err => {\n            this.tourFailed.next(err);\n          },\n        );\n      });\n  }\n\n  public run(\n    tourId: string,\n    params?: {[key: string]: string},\n    props?: Props,\n    filterFn?: FilterFunction,\n    inputs?: object,\n  ): void {\n    this.tourStoreService\n      .loadTour({\n        tourId,\n        sessionId: this.tourStoreService.getSessionId(),\n      })\n      .subscribe(tourInstance => {\n        this.checkAndThrowError(tourInstance);\n        if (params) {\n          let steps = JSON.stringify(tourInstance.tourSteps);\n\n          Object.keys(params).forEach(key => {\n            steps = steps.replace(\n              new RegExp(`\\\\{\\\\{${key}\\\\}\\\\}`),\n              params[key],\n            );\n          });\n          tourInstance.tourSteps = JSON.parse(steps);\n        }\n        this.tour = new Shepherd.Tour({\n          useModalOverlay: true,\n          exitOnEsc: this._exitOnEsc,\n          defaultStepOptions: {\n            cancelIcon: {\n              enabled: true,\n            },\n            scrollTo: {behavior: 'smooth', block: 'center'},\n          },\n        });\n        this.tour.on('complete', (event: TourComplete) => {\n          event.tourId = tourInstance.tourId;\n          this.tourComplete.next(event);\n        });\n\n        // on pressing esc cancel event is emitted by shepherd\n        this.tour.on('cancel', (event: TourCancel) => {\n          event.tourId = tourInstance.tourId;\n          this.tourCancel.next(event);\n        });\n\n        if (filterFn) {\n          tourInstance.tourSteps = filterFn(tourInstance.tourSteps);\n        }\n        if (tourInstance.tourSteps[0].attachTo) {\n          tourInstance.tourSteps[0].attachTo.scrollTo = false;\n        }\n        this.checkComponents(tourInstance, inputs).then(() => {\n          this.triggerTour(tourInstance, props);\n        });\n      });\n  }\n  private async checkComponents(tourInstance: Tour, inputs: object) {\n    for (const step of tourInstance.tourSteps) {\n      if (typeof step.text !== 'string' && typeof step.text !== 'function') {\n        const htmlStep = await this.parseComponent(\n          {\n            forStep: step.id,\n            component: this.tourStoreService.getComponentByKey(\n              step.text.component,\n            ),\n          },\n          inputs,\n        );\n        step.text = htmlStep.html;\n      }\n    }\n  }\n  private checkElement(attachTo: TourStep['attachTo']) {\n    switch (attachTo.type) {\n      case 'string':\n        return document.querySelector(attachTo.element as string);\n\n      case 'element':\n        return attachTo.element as Element;\n\n      case 'function':\n        const fn = this.tourStoreService.getFnByKey(attachTo.element);\n        return fn() as Element;\n\n      default:\n        return false;\n    }\n  }\n  private getRemovedSteps(tourSteps: TourStep[], tourState: TourState) {\n    let f = true;\n    return tourSteps.filter(e => {\n      if (e.id === tourState.step || !f) {\n        f = false;\n      }\n      return f;\n    });\n  }\n  private getTourSteps(tourSteps: TourStep[], tourState: TourState) {\n    let flag = false;\n    return tourSteps.filter(e => {\n      if (e.id === tourState.step || flag) {\n        flag = true;\n      }\n      return flag;\n    });\n  }\n  private pauseAllVideos() {\n    document.querySelectorAll('video').forEach(vid => vid.pause());\n  }\n  setTourComplete(tourId: string, props: Props) {\n    this.tourStoreService\n      .saveState({\n        tourId,\n        state: {\n          sessionId: this.tourStoreService.getSessionId(),\n          step: '',\n          props,\n          status: Status.Complete,\n        },\n      })\n      .subscribe();\n  }\n  private checkAndThrowError(tourInstance: Tour) {\n    if (!tourInstance) {\n      throw new Error(`No Tour Present`);\n    } else if (tourInstance.tourSteps.length === 0) {\n      throw new Error(`No Tour Steps Found`);\n    } else if (tourInstance.tourSteps[0].buttons) {\n      tourInstance.tourSteps[0].buttons.forEach(button => {\n        if (button.key === `prevAction`) {\n          throw new Error(`Step 1 can't have a previous button`);\n        }\n      });\n    } else {\n      //do nothing\n    }\n  }\n  private moveToNextStep(\n    tourInstance: Tour,\n    tourState: TourState,\n    step: TourStep,\n    index: number,\n  ) {\n    if (index === tourInstance.tourSteps.length - 1) {\n      this.setTourComplete(tourInstance.tourId, tourState.props);\n      this.tour.next();\n    } else {\n      this.waitForElement(\n        tourInstance.tourSteps[index + 1],\n        tourInstance.tourId,\n      ).then(\n        () => {\n          this.tourStoreService\n            .saveState({\n              tourId: tourInstance.tourId,\n              state: {\n                sessionId: this.tourStoreService.getSessionId(),\n                step: step.nextStepId,\n                props: tourState.props,\n                status: Status.InProgress,\n              },\n            })\n            .subscribe();\n\n          this.tour.show(step.nextStepId);\n          this.tourStepChange.next({\n            tourId: tourInstance.tourId,\n            currentStepId: step.nextStepId,\n            previousStepId: step.id,\n            moveForward: true,\n          });\n          this.pauseAllVideos();\n        },\n        err => {\n          this.tourFailed.next(err);\n        },\n      );\n    }\n  }\n\n  private moveToPrevStep(\n    tourInstance: Tour,\n    tourState: TourState,\n    step: TourStep,\n    index: number,\n    removedSteps: TourStep[],\n  ) {\n    let waitForLastElementOfRemovedSteps = false;\n    if (index === 0 && removedSteps.length) {\n      waitForLastElementOfRemovedSteps = true;\n    }\n    this.waitForElement(\n      waitForLastElementOfRemovedSteps\n        ? removedSteps[removedSteps.length - 1]\n        : tourInstance.tourSteps[index - 1],\n      tourInstance.tourId,\n    ).then(\n      () => {\n        this.tourStoreService\n          .saveState({\n            tourId: tourInstance.tourId,\n            state: {\n              sessionId: this.tourStoreService.getSessionId(),\n              step: waitForLastElementOfRemovedSteps\n                ? removedSteps[removedSteps.length - 1].id\n                : step.prevStepId,\n              props: tourState.props,\n              status: Status.InProgress,\n            },\n          })\n          .subscribe();\n        if (waitForLastElementOfRemovedSteps) {\n          this.tour.show(removedSteps[removedSteps.length - 1].id);\n        } else {\n          this.tour.show(step.prevStepId);\n        }\n        this.tourStepChange.next({\n          tourId: tourInstance.tourId,\n          currentStepId: waitForLastElementOfRemovedSteps\n            ? removedSteps[removedSteps.length - 1].id\n            : step.prevStepId,\n          previousStepId: step.id,\n          moveForward: false,\n        });\n        this.pauseAllVideos();\n      },\n      err => {\n        this.tourFailed.next(err);\n      },\n    );\n  }\n\n  private moveToNextStepRemoved(\n    tourInstance: Tour,\n    tourState: TourState,\n    step: TourStep,\n    index: number,\n    removedSteps: TourStep[],\n  ) {\n    let waitForFirstElementOfSteps = false;\n\n    if (index === removedSteps.length - 1) {\n      waitForFirstElementOfSteps = true;\n    }\n    this.waitForElement(\n      waitForFirstElementOfSteps\n        ? tourInstance.tourSteps[0]\n        : removedSteps[index + 1],\n      tourInstance.tourId,\n    ).then(\n      () => {\n        this.tourStoreService\n          .saveState({\n            tourId: tourInstance.tourId,\n            state: {\n              sessionId: this.tourStoreService.getSessionId(),\n              step: waitForFirstElementOfSteps\n                ? tourInstance.tourSteps[0].id\n                : step.nextStepId,\n              props: tourState.props,\n              status: Status.InProgress,\n            },\n          })\n          .subscribe();\n        if (waitForFirstElementOfSteps) {\n          this.tour.show(tourInstance.tourSteps[0].id);\n        } else {\n          this.tour.show(step.nextStepId);\n        }\n        this.tourStepChange.next({\n          tourId: tourInstance.tourId,\n          currentStepId: waitForFirstElementOfSteps\n            ? tourInstance.tourSteps[0].id\n            : step.nextStepId,\n          previousStepId: step.id,\n          moveForward: true,\n        });\n        this.pauseAllVideos();\n      },\n      err => {\n        this.tourFailed.next(err);\n      },\n    );\n  }\n\n  private moveToPrevStepRemoved(\n    tourInstance: Tour,\n    tourState: TourState,\n    step: TourStep,\n    index: number,\n    removedSteps: TourStep[],\n  ) {\n    this.waitForElement(removedSteps[index - 1], tourInstance.tourId).then(\n      () => {\n        this.tourStoreService\n          .saveState({\n            tourId: tourInstance.tourId,\n            state: {\n              sessionId: this.tourStoreService.getSessionId(),\n              step: step.prevStepId,\n              props: tourState.props,\n              status: Status.InProgress,\n            },\n          })\n          .subscribe();\n        this.tour.show(step.prevStepId);\n        this.tourStepChange.next({\n          tourId: tourInstance.tourId,\n          currentStepId: step.prevStepId,\n          previousStepId: step.id,\n          moveForward: false,\n        });\n        this.pauseAllVideos();\n      },\n      err => {\n        this.tourFailed.next(err);\n      },\n    );\n  }\n  private navigateAndMoveToNextStep(\n    currentStep: TourStep,\n    tourInstance: Tour,\n    tourState: TourState,\n    index: number,\n  ) {\n    if (index < tourInstance.tourSteps.length - 1) {\n      this.router.navigate([currentStep.nextRoute]);\n      this.router.events.subscribe((event: NavigationEvent) => {\n        const nextStep = tourInstance.tourSteps.filter(\n          ts => ts.id === currentStep.nextStepId,\n        )[0];\n        if (\n          event instanceof NavigationEnd &&\n          event.url === nextStep.currentRoute\n        ) {\n          this.moveToNextStep(tourInstance, tourState, currentStep, index);\n        }\n      });\n    } else {\n      this.moveToNextStep(tourInstance, tourState, currentStep, index);\n    }\n  }\n  private navigateAndMoveToPrevStep(\n    currentStep: TourStep,\n    tourInstance: Tour,\n    tourState: TourState,\n    index: number,\n    removedSteps: TourStep[],\n  ) {\n    let moveToLastRemovedStep = false;\n    if (index === 0 && removedSteps.length) {\n      moveToLastRemovedStep = true;\n    }\n    const prevRoute = moveToLastRemovedStep\n      ? removedSteps[removedSteps.length - 1].prevRoute\n      : currentStep.prevRoute;\n    this.router.navigate([prevRoute]);\n    this.router.events.subscribe((event: NavigationEvent) => {\n      let prevStep: TourStep;\n      if (moveToLastRemovedStep) {\n        prevStep = removedSteps[removedSteps.length - 1];\n      } else {\n        prevStep = tourInstance.tourSteps.filter(\n          ts => ts.id === currentStep.prevStepId,\n        )[0];\n      }\n\n      if (\n        event instanceof NavigationEnd &&\n        event.url === prevStep.currentRoute\n      ) {\n        this.moveToPrevStep(\n          tourInstance,\n          tourState,\n          currentStep,\n          index,\n          removedSteps,\n        );\n      }\n    });\n  }\n  private navigateAndMoveToNextStepRemoved(\n    currentStep: TourStep,\n    tourInstance: Tour,\n    tourState: TourState,\n    index: number,\n    removedSteps: TourStep[],\n  ) {\n    let moveToFirstStep = false;\n\n    if (index === removedSteps.length - 1) {\n      moveToFirstStep = true;\n    }\n    const nextRoute = moveToFirstStep\n      ? tourInstance.tourSteps[0].nextRoute\n      : currentStep.nextRoute;\n    this.router.navigate([nextRoute]);\n    this.router.events.subscribe((event: NavigationEvent) => {\n      let nextStep: TourStep;\n      if (moveToFirstStep) {\n        nextStep = tourInstance.tourSteps[0];\n      } else {\n        nextStep = tourInstance.tourSteps.filter(\n          ts => ts.id === currentStep.nextStepId,\n        )[0];\n      }\n\n      if (\n        event instanceof NavigationEnd &&\n        event.url === nextStep.currentRoute\n      ) {\n        this.moveToNextStepRemoved(\n          tourInstance,\n          tourState,\n          currentStep,\n          index,\n          removedSteps,\n        );\n      }\n    });\n  }\n  private navigateAndMoveToPrevStepRemoved(\n    currentStep: TourStep,\n    tourInstance: Tour,\n    tourState: TourState,\n    index: number,\n    removedSteps: TourStep[],\n  ) {\n    this.router.navigate([currentStep.prevRoute]);\n    this.router.events.subscribe((event: NavigationEvent) => {\n      const prevStep = tourInstance.tourSteps.filter(\n        ts => ts.id === currentStep.prevStepId,\n      )[0];\n      if (\n        event instanceof NavigationEnd &&\n        event.url === prevStep.currentRoute\n      ) {\n        this.moveToPrevStepRemoved(\n          tourInstance,\n          tourState,\n          currentStep,\n          index,\n          removedSteps,\n        );\n      }\n    });\n  }\n  private parseComponent(step: ComponentStep, input: object) {\n    return Promise.resolve({\n      forStep: step.forStep,\n      html: () => {\n        const factory = this.componentFactory.resolveComponentFactory(\n          step.component,\n        );\n        const constructedComponent = factory.create(this.injector);\n        Object.keys(input ?? {}).forEach(k => {\n          constructedComponent.instance[k] = input[k];\n        });\n        constructedComponent.instance['tour'] = this.tour;\n        this.appRef.attachView(constructedComponent.hostView);\n        return constructedComponent.location.nativeElement;\n      },\n    });\n  }\n}\n","// Copyright (c) 2023 Sourcefuse Technologies\n//\n// This software is released under the MIT License.\n// https://opensource.org/licenses/MIT\nexport * from './types';\n","// Copyright (c) 2023 Sourcefuse Technologies\n//\n// This software is released under the MIT License.\n// https://opensource.org/licenses/MIT\n/*\n * Public API Surface of user-onboarding-lib\n */\nexport * from './lib/user-onboarding-lib.module';\nexport * from './lib/tour-service.service';\nexport * from './lib/tour-store-service.service';\nexport * from './commands';\nexport * from './models';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["uuidv4","i1.TourStoreServiceService"],"mappings":"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"}