@covalent/guided-tour 10.4.0-beta.3 → 11.0.0-beta.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"covalent-guided-tour.mjs","sources":["../../../../libs/angular-guided-tour/src/lib/guided.tour.ts","../../../../libs/angular-guided-tour/src/lib/guided-tour.service.ts","../../../../libs/angular-guided-tour/src/lib/guided-tour.module.ts","../../../../libs/angular-guided-tour/src/covalent-guided-tour.ts"],"sourcesContent":["import Shepherd from 'shepherd.js';\nimport {\n timer,\n Subject,\n BehaviorSubject,\n merge,\n Subscription,\n fromEvent,\n forkJoin,\n} from 'rxjs';\nimport { takeUntil, skipWhile, filter, skip, first } from 'rxjs/operators';\n\nexport type TourStep = Shepherd.Step.StepOptions;\nexport type TourStepButton = Shepherd.Step.StepOptionsButton;\n\nexport enum ITourEvent {\n 'click' = 'click',\n 'pointerover' = 'pointerover',\n 'keyup' = 'keyup',\n 'added' = 'added', // added to DOM\n 'removed' = 'removed', // removed from DOM\n}\n\nexport interface ITourEventOn {\n selector?: string; // css selector\n event?: keyof typeof ITourEvent; // click, pointerover, keyup, added, removed\n}\n\nexport interface ITourEventOnOptions {\n timeBeforeShow?: number; // delay before step is displayed\n interval?: number; // time between searches for element, defaults to 500ms\n}\n\nexport interface ITourOptions extends Shepherd.Tour.TourOptions {\n abortOn?: ITourEventOn[]; // events to abort on\n}\n\nexport interface ITourStepAttachToOptions extends ITourEventOnOptions {\n highlight?: boolean;\n retries?: number; // # num of attempts to find element\n skipIfNotFound?: boolean; // if element is not found after n retries, move on to next step\n else?: string; // if element is not found, go to step with this id\n goBackTo?: string; // back button goes back to step with this id\n skipFromStepCount?: boolean; // show/hide progress on step\n}\n\nexport interface ITourStepAdvanceOnOptions extends ITourEventOnOptions {\n jumpTo?: string; // next button will jump to step with this id\n allowGoBack?: boolean; // allow back within this step\n}\n\nexport interface ITourStep extends TourStep {\n attachToOptions?: ITourStepAttachToOptions;\n advanceOnOptions?: ITourStepAdvanceOnOptions;\n advanceOn?: ITourEventOn[] | ITourEventOn | any;\n abortOn?: ITourEventOn[];\n count?: number;\n}\n\nabstract class TourButtonsActions {\n abstract next(): void;\n\n abstract back(): void;\n\n abstract cancel(): void;\n\n abstract finish(): void;\n}\n\nconst SHEPHERD_DEFAULT_FIND_TIME_BEFORE_SHOW = 100;\nconst SHEPHERD_DEFAULT_FIND_INTERVAL = 500;\nconst SHEPHERD_DEFAULT_FIND_ATTEMPTS = 20;\n\nconst overriddenEvents: string[] = [\n ITourEvent.click,\n ITourEvent.pointerover,\n ITourEvent.removed,\n ITourEvent.added,\n ITourEvent.keyup,\n];\n\nconst keyEvents: Map<number, string> = new Map<number, string>([\n [13, 'enter'],\n [27, 'esc'],\n]);\n\nconst defaultStepOptions: TourStep = {\n scrollTo: { behavior: 'smooth', block: 'center' },\n cancelIcon: {\n enabled: true,\n },\n};\n\nconst MAT_ICON_BUTTON =\n 'mdc-icon-button material-icons mat-mdc-icon-button mat-mdc-button-base';\nconst MAT_BUTTON = 'mdc-button mat-mdc-button mat-mdc-button-base';\nconst MAT_BUTTON_INVISIBLE = 'shepherd-void-button';\n\nexport class CovalentGuidedTour extends TourButtonsActions {\n private _destroyedEvent$!: Subject<void>;\n\n shepherdTour!: Shepherd.Tour;\n stepOptions: ITourStep;\n\n constructor(stepOptions: ITourStep = defaultStepOptions) {\n super();\n\n this.stepOptions = stepOptions;\n this.newTour();\n }\n\n newTour(opts?: ITourOptions): void {\n this.shepherdTour = new Shepherd.Tour(\n Object.assign(\n {\n defaultStepOptions: this.stepOptions,\n },\n opts\n )\n );\n\n this._destroyedEvent$ = new Subject<void>();\n // listen to cancel and complete to clean up abortOn events\n merge(\n fromEvent(this.shepherdTour, 'cancel'),\n fromEvent(this.shepherdTour, 'complete')\n )\n .pipe(first())\n .subscribe(() => {\n this._destroyedEvent$.next();\n this._destroyedEvent$.complete();\n });\n\n // if abortOn was passed, we bind the event and execute complete\n if (opts && opts.abortOn) {\n const abortArr$: Subject<void>[] = [];\n opts.abortOn.forEach((abortOn: ITourEventOn) => {\n const abortEvent$: Subject<void> = new Subject<void>();\n abortArr$.push(abortEvent$);\n this._bindEvent(abortOn, undefined, abortEvent$, this._destroyedEvent$);\n });\n\n const abortSubs: Subscription = merge(...abortArr$)\n .pipe(takeUntil(this._destroyedEvent$))\n .subscribe(() => {\n this.shepherdTour.complete();\n abortSubs.unsubscribe();\n });\n }\n }\n\n back(): void {\n this.shepherdTour.back();\n }\n\n cancel(): void {\n this.shepherdTour.cancel();\n }\n\n next(): void {\n this.shepherdTour.next();\n }\n\n finish(): void {\n this.shepherdTour.complete();\n }\n\n addSteps(steps: ITourStep[]): void {\n this.shepherdTour.addSteps(this._prepareTour(steps));\n }\n\n start(): void {\n this.shepherdTour.start();\n }\n\n protected _prepareTour(\n originalSteps: ITourStep[],\n finishLabel = 'finish'\n ): ITourStep[] {\n // create Subjects for back and forward events\n const backEvent$: Subject<void> = new Subject<void>();\n const forwardEvent$: Subject<void> = new Subject<void>();\n let _backFlow = false;\n // create Subject for your end\n const destroyedEvent$: Subject<void> = new Subject<void>();\n /**\n * This function adds the step progress in the footer of the shepherd tooltip\n */\n const appendProgressFunc = function (this: any): void {\n // get all the footers that are available in the DOM\n const footers: Element[] = Array.from<Element>(\n document.querySelectorAll('.shepherd-footer')\n );\n // get the last footer since Shepherd always puts the active one at the end\n const footer: Element = footers[footers.length - 1];\n // generate steps html element\n const progress: HTMLSpanElement = document.createElement('span');\n progress.className = 'shepherd-progress';\n progress.innerText = `${this.shepherdTour.currentStep.options.count}/${stepTotal}`;\n // insert into the footer before the first button\n footer.insertBefore(progress, footer.querySelector('.shepherd-button'));\n };\n\n let stepTotal = 0;\n const steps: ITourStep[] = originalSteps.map((step: ITourStep) => {\n let showProgress: () => void = () => {\n //\n };\n if (step.attachToOptions?.skipFromStepCount === true) {\n showProgress = function (): void {\n return;\n };\n } else if (\n step.attachToOptions?.skipFromStepCount === undefined ||\n step.attachToOptions?.skipFromStepCount === false\n ) {\n step.count = ++stepTotal;\n showProgress = appendProgressFunc.bind(this);\n }\n return Object.assign({}, step, {\n when: {\n show: showProgress,\n },\n });\n });\n\n const finishButton: TourStepButton = {\n text: finishLabel,\n action: this['finish'].bind(this),\n classes: MAT_BUTTON,\n };\n\n const voidButton: TourStepButton = {\n text: '',\n action(): void {\n return;\n },\n classes: MAT_BUTTON_INVISIBLE,\n };\n\n // listen to the destroyed event to clean up all the streams\n this._destroyedEvent$.pipe(first()).subscribe(() => {\n backEvent$.complete();\n forwardEvent$.complete();\n destroyedEvent$.next();\n destroyedEvent$.complete();\n });\n\n const totalSteps: number = steps.length;\n steps.forEach((step: ITourStep, index: number) => {\n // create buttons specific for the step\n // this is done to create more control on events\n const nextButton: TourStepButton = {\n text: 'chevron_right',\n action: () => {\n // intercept the next action and trigger event\n forwardEvent$.next();\n this.shepherdTour.next();\n },\n classes: MAT_ICON_BUTTON,\n };\n const backButton: TourStepButton = {\n text: 'chevron_left',\n action: () => {\n // intercept the back action and trigger event\n backEvent$.next();\n _backFlow = true;\n // check if 'goBackTo' is set to jump to a particular step, else just go back\n if (step.attachToOptions && step.attachToOptions.goBackTo) {\n this.shepherdTour.show(step.attachToOptions.goBackTo, false);\n } else {\n this.shepherdTour.back();\n }\n },\n classes:\n step.advanceOnOptions?.allowGoBack === false\n ? MAT_BUTTON_INVISIBLE\n : MAT_ICON_BUTTON,\n };\n\n // check if highlight was provided for the step, else fallback into shepherds usage\n step.highlightClass =\n step.attachToOptions && step.attachToOptions.highlight\n ? 'shepherd-highlight'\n : step.highlightClass;\n\n // Adding buttons in the steps if no buttons are defined\n if (!step.buttons || step.buttons.length === 0) {\n if (index === 0) {\n // first step\n step.buttons = [nextButton];\n } else if (index === totalSteps - 1) {\n // last step\n step.buttons = [backButton, finishButton];\n } else {\n step.buttons = [backButton, nextButton];\n }\n }\n\n // checks \"advanceOn\" to override listeners\n let advanceOn: ITourEventOn[] | ITourEventOn = step.advanceOn;\n // remove the shepherd \"advanceOn\" infavor of ours if the event is part of our list\n if (\n (typeof advanceOn === 'object' &&\n !Array.isArray(advanceOn) &&\n advanceOn.event &&\n overriddenEvents.indexOf(advanceOn.event.split('.')[0]) > -1) ||\n advanceOn instanceof Array\n ) {\n step.advanceOn = undefined;\n step.buttons =\n step.advanceOnOptions && step.advanceOnOptions.allowGoBack\n ? [backButton, voidButton]\n : [voidButton];\n }\n // adds a default beforeShowPromise function\n step.beforeShowPromise = () => {\n return new Promise((resolve: (value?: any) => void) => {\n const additionalCapabilitiesSetup: () => void = () => {\n if (advanceOn && !step.advanceOn) {\n if (!Array.isArray(advanceOn)) {\n advanceOn = [advanceOn];\n }\n\n const advanceArr$: Subject<void>[] = [];\n advanceOn.forEach((_: any) => {\n const advanceEvent$: Subject<void> = new Subject<void>();\n advanceArr$.push(advanceEvent$);\n\n // we start a timer of attempts to find an element in the dom\n this._bindEvent(\n _,\n step.advanceOnOptions,\n advanceEvent$,\n destroyedEvent$\n );\n });\n const advanceSubs: Subscription = forkJoin(...advanceArr$)\n .pipe(takeUntil(merge(destroyedEvent$, backEvent$)))\n .subscribe(() => {\n // check if we need to advance to a specific step, else advance to next step\n if (step.advanceOnOptions && step.advanceOnOptions.jumpTo) {\n this.shepherdTour.show(step.advanceOnOptions.jumpTo);\n } else {\n this.shepherdTour.next();\n }\n forwardEvent$.next();\n advanceSubs.unsubscribe();\n });\n }\n\n // if abortOn was passed on the step, we bind the event and execute complete\n if (step.abortOn) {\n const abortArr$: Subject<void>[] = [];\n step.abortOn.forEach((abortOn: ITourEventOn) => {\n const abortEvent$: Subject<void> = new Subject<void>();\n abortArr$.push(abortEvent$);\n this._bindEvent(\n abortOn,\n undefined,\n abortEvent$,\n destroyedEvent$\n );\n });\n\n const abortSubs: Subscription = merge(...abortArr$)\n .pipe(\n takeUntil(merge(destroyedEvent$, backEvent$, forwardEvent$))\n )\n .subscribe(() => {\n this.shepherdTour.complete();\n abortSubs.unsubscribe();\n });\n }\n };\n\n const _stopTimer$: Subject<void> = new Subject<void>();\n const _retriesReached$: Subject<number> = new Subject<number>();\n const _retryAttempts$: BehaviorSubject<number> =\n new BehaviorSubject<number>(-1);\n\n let id: string | undefined;\n // checks if \"attachTo\" is a string or an object to get the id of an element\n if (typeof step.attachTo === 'string') {\n id = step.attachTo;\n } else if (\n typeof step.attachTo === 'object' &&\n typeof step.attachTo.element === 'string'\n ) {\n id = step.attachTo.element;\n }\n // if we have an id as a string in either case, we use it (we ignore it if its HTMLElement)\n if (id) {\n // if current step is the first step of the tour, we set the buttons to be only \"next\"\n // we had to use `any` since the tour doesnt expose the steps in any fashion nor a way to check if we have modified them at all\n if (\n this.shepherdTour.getCurrentStep() ===\n (<any>this.shepherdTour).steps[0]\n ) {\n this.shepherdTour.getCurrentStep()?.updateStepOptions({\n buttons: originalSteps[index].advanceOn\n ? [voidButton]\n : [nextButton],\n });\n }\n // register to the attempts observable to notify deeveloper when number has been reached\n _retryAttempts$\n .pipe(\n skip(1),\n skipWhile((val: number) => {\n if (\n step.attachToOptions &&\n step.attachToOptions.retries !== undefined\n ) {\n return val < step.attachToOptions.retries;\n }\n return val < SHEPHERD_DEFAULT_FIND_ATTEMPTS;\n }),\n takeUntil(merge(_stopTimer$.asObservable(), destroyedEvent$))\n )\n .subscribe((attempts: number) => {\n _retriesReached$.next(1);\n _retriesReached$.complete();\n // if attempts have been reached, we check \"skipIfNotFound\" to move on to the next step\n if (\n step.attachToOptions &&\n step.attachToOptions.skipIfNotFound\n ) {\n // if we get to this step coming back from a step and it wasnt found\n // then we either check if its the first step and try going forward\n // or we keep going back until we find a step that actually exists\n if (_backFlow) {\n if (\n (<any>this.shepherdTour).steps.indexOf(\n this.shepherdTour.getCurrentStep()\n ) === 0\n ) {\n this.shepherdTour.next();\n } else {\n this.shepherdTour.back();\n }\n _backFlow = false;\n } else {\n // destroys current step if we need to skip it to remove it from the tour\n const currentStep = this.shepherdTour.getCurrentStep();\n currentStep?.destroy();\n this.shepherdTour.next();\n this.shepherdTour.removeStep(currentStep?.id ?? '');\n }\n } else if (step.attachToOptions && step.attachToOptions.else) {\n // if \"skipIfNotFound\" is not true, then we check if \"else\" has been set to jump to a specific step\n this.shepherdTour.show(step.attachToOptions.else);\n } else {\n // tslint:disable-next-line:no-console\n console.warn(\n `Retries reached trying to find ${id}. Retried ${attempts} times.`\n );\n // else we show the step regardless\n resolve();\n }\n });\n\n // we start a timer of attempts to find an element in the dom\n timer(\n (step.attachToOptions && step.attachToOptions.timeBeforeShow) ||\n SHEPHERD_DEFAULT_FIND_TIME_BEFORE_SHOW,\n (step.attachToOptions && step.attachToOptions.interval) ||\n SHEPHERD_DEFAULT_FIND_INTERVAL\n )\n .pipe(\n // the timer will continue either until we find the element or the number of attempts has been reached\n takeUntil(merge(_stopTimer$, _retriesReached$, destroyedEvent$))\n )\n .subscribe(() => {\n const element = document.querySelector(id ?? '');\n // if the element has been found, we stop the timer and resolve the promise\n if (element) {\n _stopTimer$.next();\n _stopTimer$.complete();\n additionalCapabilitiesSetup();\n resolve();\n } else {\n _retryAttempts$.next(_retryAttempts$.value + 1);\n }\n });\n\n // stop find interval if user stops the tour\n destroyedEvent$.subscribe(() => {\n _stopTimer$.next();\n _stopTimer$.complete();\n _retriesReached$.next(1);\n _retriesReached$.complete();\n });\n } else {\n // resolve observable until the timeBeforeShow has passsed or use default\n timer(\n (step.attachToOptions && step.attachToOptions.timeBeforeShow) ||\n SHEPHERD_DEFAULT_FIND_TIME_BEFORE_SHOW\n )\n .pipe(takeUntil(merge(destroyedEvent$)))\n .subscribe(() => {\n resolve();\n });\n }\n });\n };\n });\n return steps;\n }\n\n private _bindEvent(\n eventOn: ITourEventOn,\n eventOnOptions: ITourEventOnOptions | undefined,\n event$: Subject<void>,\n destroyedEvent$: Subject<void>\n ): void {\n const selector = eventOn.selector ?? '';\n const event = eventOn.event;\n // we start a timer of attempts to find an element in the dom\n const timerSubs: Subscription = timer(\n (eventOnOptions && eventOnOptions.timeBeforeShow) ||\n SHEPHERD_DEFAULT_FIND_TIME_BEFORE_SHOW,\n (eventOnOptions && eventOnOptions.interval) ||\n SHEPHERD_DEFAULT_FIND_INTERVAL\n )\n .pipe(takeUntil(destroyedEvent$))\n .subscribe(() => {\n const element = document.querySelector(selector);\n // if the element has been found, we stop the timer and resolve the promise\n if (element) {\n timerSubs.unsubscribe();\n\n if (event === ITourEvent.added) {\n // if event is \"Added\" trigger a soon as this is attached.\n event$.next();\n event$.complete();\n } else if (\n event === ITourEvent.click ||\n event === ITourEvent.pointerover ||\n (event && event.indexOf(ITourEvent.keyup) > -1)\n ) {\n // we use normal listeners for mouseevents\n const mainEvent = event?.split('.')[0];\n const subEvent = event?.split('.')[1];\n fromEvent(element, mainEvent)\n .pipe(\n filter(($event: Event) => {\n // only trigger if the event is a keyboard event and part of out list\n if ($event instanceof KeyboardEvent) {\n if (keyEvents.get($event.keyCode) === subEvent) {\n return true;\n }\n return false;\n } else {\n return true;\n }\n }),\n takeUntil(merge(event$.asObservable(), destroyedEvent$))\n )\n .subscribe(() => {\n event$.next();\n event$.complete();\n });\n } else if (event === ITourEvent.removed) {\n // and we will use MutationObserver for DOM events\n const observer: MutationObserver = new MutationObserver(() => {\n if (!document.body.contains(element)) {\n event$.next();\n event$.complete();\n observer.disconnect();\n }\n });\n\n // stop listenining if tour is closed\n destroyedEvent$.subscribe(() => {\n observer.disconnect();\n });\n // observe for any DOM interaction in the element\n observer.observe(element, {\n childList: true,\n subtree: true,\n attributes: true,\n });\n }\n }\n });\n }\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport {\n Router,\n ActivatedRoute,\n ParamMap,\n NavigationExtras,\n NavigationStart,\n Event as NavigationEvent,\n} from '@angular/router';\nimport Shepherd from 'shepherd.js';\nimport { tap, map, filter } from 'rxjs/operators';\nimport { Observable, fromEvent } from 'rxjs';\nimport { debounceTime } from 'rxjs/operators';\nimport {\n CovalentGuidedTour,\n ITourStep,\n ITourOptions,\n TourStepButton,\n} from './guided.tour';\n\nexport interface IGuidedTour extends ITourOptions {\n steps: IGuidedTourStep[];\n finishButtonText?: string;\n}\n\nexport interface IGuidedTourStep extends ITourStep {\n routing?: {\n route: string;\n extras?: NavigationExtras;\n };\n}\n\n/**\n * Router enabled Shepherd tour\n */\nexport enum TourEvents {\n complete = 'complete',\n cancel = 'cancel',\n hide = 'hide',\n show = 'show',\n start = 'start',\n active = 'active',\n inactive = 'inactive',\n}\n\nexport interface IGuidedTourEvent {\n step: any;\n previous: any;\n tour: any;\n}\n\n@Injectable()\nexport class CovalentGuidedTourService extends CovalentGuidedTour {\n private _toursMap: Map<string, IGuidedTour> = new Map<string, IGuidedTour>();\n private _tourStepURLs: Map<string, string> = new Map<string, string>();\n constructor(\n private _router: Router,\n private _route: ActivatedRoute,\n private _httpClient: HttpClient\n ) {\n super();\n _router.events\n .pipe(\n filter(\n (event: NavigationEvent) =>\n event instanceof NavigationStart &&\n event.navigationTrigger === 'popstate'\n )\n )\n .subscribe(() => {\n if (this.shepherdTour.isActive()) {\n this.shepherdTour.cancel();\n }\n });\n }\n\n tourEvent$(str: TourEvents): Observable<IGuidedTourEvent> {\n return fromEvent(this.shepherdTour, str);\n }\n\n async registerTour(\n tourName: string,\n tour: IGuidedTour | string\n ): Promise<void> {\n const guidedTour: IGuidedTour =\n typeof tour === 'string' ? await this._loadTour(tour) : tour;\n this._toursMap.set(tourName, guidedTour);\n }\n\n startTour(tourName: string): Shepherd.Tour | undefined {\n const guidedTour = this._getTour(tourName);\n this.finish();\n if (guidedTour && guidedTour.steps && guidedTour.steps.length) {\n // remove steps from tour since we need to preprocess them first\n this.newTour(Object.assign({}, guidedTour, { steps: undefined }));\n const tourInstance: Shepherd.Tour = this.shepherdTour.addSteps(\n this._configureRoutesForSteps(\n this._prepareTour(guidedTour.steps, guidedTour.finishButtonText)\n )\n );\n // init route transition if step URL is different then the current location.\n this.tourEvent$(TourEvents.show).subscribe(\n (tourEvent: IGuidedTourEvent) => {\n const currentURL: string = this._router.url.split(/[?#]/)[0];\n const {\n step: { id, options },\n } = tourEvent;\n if (this._tourStepURLs.has(id)) {\n const stepRoute = this._tourStepURLs.get(id);\n if (stepRoute !== currentURL) {\n this._router.navigate([stepRoute]);\n }\n } else {\n if (options && options.routing) {\n this._tourStepURLs.set(id, options.routing.route);\n } else {\n this._tourStepURLs.set(id, currentURL);\n }\n }\n }\n );\n this.start();\n return tourInstance;\n } else {\n // tslint:disable-next-line:no-console\n console.warn(`Tour ${tourName} does not exist. Please try another tour.`);\n return undefined;\n }\n }\n\n // Finds the right registered tour by using queryParams\n // finishes any other tour and starts the new one.\n initializeOnQueryParams(queryParam = 'tour'): Observable<ParamMap> {\n return this._route.queryParamMap.pipe(\n debounceTime(100),\n tap((params: ParamMap) => {\n const tourParam = params.get(queryParam);\n if (tourParam) {\n this.startTour(tourParam);\n // get current search parameters\n const searchParams: URLSearchParams = new URLSearchParams(\n window.location.search\n );\n // delete tour queryParam\n searchParams.delete(queryParam);\n // build new URL string without it\n let url: string =\n window.location.protocol +\n '//' +\n window.location.host +\n window.location.pathname;\n if (searchParams.toString()) {\n url += '?' + searchParams.toString();\n }\n // replace state in history without triggering a navigation\n window.history.replaceState({ path: url }, '', url);\n }\n })\n );\n }\n\n setNextBtnDisability(stepId: string, isDisabled: boolean): void {\n if (this.shepherdTour.getById(stepId)) {\n const stepOptions: ITourStep = (this.shepherdTour.getById(stepId) as any)\n .options;\n stepOptions.buttons?.forEach((button: TourStepButton) => {\n if (button.text === 'chevron_right') {\n button.disabled = isDisabled;\n }\n });\n this.shepherdTour.getById(stepId)?.updateStepOptions(stepOptions);\n }\n }\n\n private async _loadTour(tourUrl: string): Promise<any> {\n const request: Observable<object> = this._httpClient.get(tourUrl);\n try {\n return await request\n .pipe(\n map((resultSet: any) => {\n return JSON.parse(JSON.stringify(resultSet));\n })\n )\n .toPromise();\n } catch {\n return undefined;\n }\n }\n\n private _getTour(key: string): IGuidedTour | undefined {\n return this._toursMap.get(key);\n }\n\n private _configureRoutesForSteps(\n routedSteps: IGuidedTourStep[]\n ): IGuidedTourStep[] {\n routedSteps.forEach((step: IGuidedTourStep) => {\n if (step.routing) {\n const route: string = step.routing.route;\n // if there is a beforeShowPromise, then we save it and call it after the navigation\n if (step.beforeShowPromise) {\n const beforeShowPromise: () => Promise<void> = step.beforeShowPromise;\n step.beforeShowPromise = () => {\n return this._router\n .navigate([route], step.routing?.extras)\n .then(() => {\n return beforeShowPromise();\n });\n };\n } else {\n step.beforeShowPromise = () => this._router.navigate([route]);\n }\n }\n });\n\n return routedSteps;\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { CovalentGuidedTourService } from './guided-tour.service';\n\n@NgModule({\n imports: [CommonModule],\n providers: [CovalentGuidedTourService],\n declarations: [],\n exports: [],\n})\nexport class CovalentGuidedTourModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":";;;;;;;;;;IAeY;AAAZ,CAAA,UAAY,UAAU,EAAA;AACpB,IAAA,UAAA,CAAA,OAAA,CAAA,GAAA,OAAiB;AACjB,IAAA,UAAA,CAAA,aAAA,CAAA,GAAA,aAA6B;AAC7B,IAAA,UAAA,CAAA,OAAA,CAAA,GAAA,OAAiB;AACjB,IAAA,UAAA,CAAA,OAAA,CAAA,GAAA,OAAiB;AACjB,IAAA,UAAA,CAAA,SAAA,CAAA,GAAA,SAAqB;AACvB,CAAC,EANW,UAAU,KAAV,UAAU,GAMrB,EAAA,CAAA,CAAA;AAsCD,MAAe,kBAAkB,CAAA;AAQhC;AAED,MAAM,sCAAsC,GAAG,GAAG;AAClD,MAAM,8BAA8B,GAAG,GAAG;AAC1C,MAAM,8BAA8B,GAAG,EAAE;AAEzC,MAAM,gBAAgB,GAAa;AACjC,IAAA,UAAU,CAAC,KAAK;AAChB,IAAA,UAAU,CAAC,WAAW;AACtB,IAAA,UAAU,CAAC,OAAO;AAClB,IAAA,UAAU,CAAC,KAAK;AAChB,IAAA,UAAU,CAAC,KAAK;CACjB;AAED,MAAM,SAAS,GAAwB,IAAI,GAAG,CAAiB;IAC7D,CAAC,EAAE,EAAE,OAAO,CAAC;IACb,CAAC,EAAE,EAAE,KAAK,CAAC;AACZ,CAAA,CAAC;AAEF,MAAM,kBAAkB,GAAa;IACnC,QAAQ,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE;AACjD,IAAA,UAAU,EAAE;AACV,QAAA,OAAO,EAAE,IAAI;AACd,KAAA;CACF;AAED,MAAM,eAAe,GACnB,wEAAwE;AAC1E,MAAM,UAAU,GAAG,+CAA+C;AAClE,MAAM,oBAAoB,GAAG,sBAAsB;AAE7C,MAAO,kBAAmB,SAAQ,kBAAkB,CAAA;AAChD,IAAA,gBAAgB;AAExB,IAAA,YAAY;AACZ,IAAA,WAAW;AAEX,IAAA,WAAA,CAAY,cAAyB,kBAAkB,EAAA;AACrD,QAAA,KAAK,EAAE;AAEP,QAAA,IAAI,CAAC,WAAW,GAAG,WAAW;QAC9B,IAAI,CAAC,OAAO,EAAE;;AAGhB,IAAA,OAAO,CAAC,IAAmB,EAAA;QACzB,IAAI,CAAC,YAAY,GAAG,IAAI,QAAQ,CAAC,IAAI,CACnC,MAAM,CAAC,MAAM,CACX;YACE,kBAAkB,EAAE,IAAI,CAAC,WAAW;SACrC,EACD,IAAI,CACL,CACF;AAED,QAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI,OAAO,EAAQ;;AAE3C,QAAA,KAAK,CACH,SAAS,CAAC,IAAI,CAAC,YAAY,EAAE,QAAQ,CAAC,EACtC,SAAS,CAAC,IAAI,CAAC,YAAY,EAAE,UAAU,CAAC;aAEvC,IAAI,CAAC,KAAK,EAAE;aACZ,SAAS,CAAC,MAAK;AACd,YAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE;AAC5B,YAAA,IAAI,CAAC,gBAAgB,CAAC,QAAQ,EAAE;AAClC,SAAC,CAAC;;AAGJ,QAAA,IAAI,IAAI,IAAI,IAAI,CAAC,OAAO,EAAE;YACxB,MAAM,SAAS,GAAoB,EAAE;YACrC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,OAAqB,KAAI;AAC7C,gBAAA,MAAM,WAAW,GAAkB,IAAI,OAAO,EAAQ;AACtD,gBAAA,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC;AAC3B,gBAAA,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,IAAI,CAAC,gBAAgB,CAAC;AACzE,aAAC,CAAC;AAEF,YAAA,MAAM,SAAS,GAAiB,KAAK,CAAC,GAAG,SAAS;AAC/C,iBAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,gBAAgB,CAAC;iBACrC,SAAS,CAAC,MAAK;AACd,gBAAA,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE;gBAC5B,SAAS,CAAC,WAAW,EAAE;AACzB,aAAC,CAAC;;;IAIR,IAAI,GAAA;AACF,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE;;IAG1B,MAAM,GAAA;AACJ,QAAA,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE;;IAG5B,IAAI,GAAA;AACF,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE;;IAG1B,MAAM,GAAA;AACJ,QAAA,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE;;AAG9B,IAAA,QAAQ,CAAC,KAAkB,EAAA;AACzB,QAAA,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;;IAGtD,KAAK,GAAA;AACH,QAAA,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE;;AAGjB,IAAA,YAAY,CACpB,aAA0B,EAC1B,WAAW,GAAG,QAAQ,EAAA;;AAGtB,QAAA,MAAM,UAAU,GAAkB,IAAI,OAAO,EAAQ;AACrD,QAAA,MAAM,aAAa,GAAkB,IAAI,OAAO,EAAQ;QACxD,IAAI,SAAS,GAAG,KAAK;;AAErB,QAAA,MAAM,eAAe,GAAkB,IAAI,OAAO,EAAQ;AAC1D;;AAEG;AACH,QAAA,MAAM,kBAAkB,GAAG,YAAA;;AAEzB,YAAA,MAAM,OAAO,GAAc,KAAK,CAAC,IAAI,CACnC,QAAQ,CAAC,gBAAgB,CAAC,kBAAkB,CAAC,CAC9C;;YAED,MAAM,MAAM,GAAY,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;;YAEnD,MAAM,QAAQ,GAAoB,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC;AAChE,YAAA,QAAQ,CAAC,SAAS,GAAG,mBAAmB;AACxC,YAAA,QAAQ,CAAC,SAAS,GAAG,CAAG,EAAA,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,OAAO,CAAC,KAAK,CAAI,CAAA,EAAA,SAAS,EAAE;;AAElF,YAAA,MAAM,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,aAAa,CAAC,kBAAkB,CAAC,CAAC;AACzE,SAAC;QAED,IAAI,SAAS,GAAG,CAAC;QACjB,MAAM,KAAK,GAAgB,aAAa,CAAC,GAAG,CAAC,CAAC,IAAe,KAAI;YAC/D,IAAI,YAAY,GAAe,MAAK;;AAEpC,aAAC;YACD,IAAI,IAAI,CAAC,eAAe,EAAE,iBAAiB,KAAK,IAAI,EAAE;AACpD,gBAAA,YAAY,GAAG,YAAA;oBACb;AACF,iBAAC;;AACI,iBAAA,IACL,IAAI,CAAC,eAAe,EAAE,iBAAiB,KAAK,SAAS;AACrD,gBAAA,IAAI,CAAC,eAAe,EAAE,iBAAiB,KAAK,KAAK,EACjD;AACA,gBAAA,IAAI,CAAC,KAAK,GAAG,EAAE,SAAS;AACxB,gBAAA,YAAY,GAAG,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC;;AAE9C,YAAA,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,EAAE;AAC7B,gBAAA,IAAI,EAAE;AACJ,oBAAA,IAAI,EAAE,YAAY;AACnB,iBAAA;AACF,aAAA,CAAC;AACJ,SAAC,CAAC;AAEF,QAAA,MAAM,YAAY,GAAmB;AACnC,YAAA,IAAI,EAAE,WAAW;YACjB,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;AACjC,YAAA,OAAO,EAAE,UAAU;SACpB;AAED,QAAA,MAAM,UAAU,GAAmB;AACjC,YAAA,IAAI,EAAE,EAAE;YACR,MAAM,GAAA;gBACJ;aACD;AACD,YAAA,OAAO,EAAE,oBAAoB;SAC9B;;AAGD,QAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,SAAS,CAAC,MAAK;YACjD,UAAU,CAAC,QAAQ,EAAE;YACrB,aAAa,CAAC,QAAQ,EAAE;YACxB,eAAe,CAAC,IAAI,EAAE;YACtB,eAAe,CAAC,QAAQ,EAAE;AAC5B,SAAC,CAAC;AAEF,QAAA,MAAM,UAAU,GAAW,KAAK,CAAC,MAAM;QACvC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAe,EAAE,KAAa,KAAI;;;AAG/C,YAAA,MAAM,UAAU,GAAmB;AACjC,gBAAA,IAAI,EAAE,eAAe;gBACrB,MAAM,EAAE,MAAK;;oBAEX,aAAa,CAAC,IAAI,EAAE;AACpB,oBAAA,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE;iBACzB;AACD,gBAAA,OAAO,EAAE,eAAe;aACzB;AACD,YAAA,MAAM,UAAU,GAAmB;AACjC,gBAAA,IAAI,EAAE,cAAc;gBACpB,MAAM,EAAE,MAAK;;oBAEX,UAAU,CAAC,IAAI,EAAE;oBACjB,SAAS,GAAG,IAAI;;oBAEhB,IAAI,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE;AACzD,wBAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE,KAAK,CAAC;;yBACvD;AACL,wBAAA,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE;;iBAE3B;AACD,gBAAA,OAAO,EACL,IAAI,CAAC,gBAAgB,EAAE,WAAW,KAAK;AACrC,sBAAE;AACF,sBAAE,eAAe;aACtB;;AAGD,YAAA,IAAI,CAAC,cAAc;AACjB,gBAAA,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,eAAe,CAAC;AAC3C,sBAAE;AACF,sBAAE,IAAI,CAAC,cAAc;;AAGzB,YAAA,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE;AAC9C,gBAAA,IAAI,KAAK,KAAK,CAAC,EAAE;;AAEf,oBAAA,IAAI,CAAC,OAAO,GAAG,CAAC,UAAU,CAAC;;AACtB,qBAAA,IAAI,KAAK,KAAK,UAAU,GAAG,CAAC,EAAE;;oBAEnC,IAAI,CAAC,OAAO,GAAG,CAAC,UAAU,EAAE,YAAY,CAAC;;qBACpC;oBACL,IAAI,CAAC,OAAO,GAAG,CAAC,UAAU,EAAE,UAAU,CAAC;;;;AAK3C,YAAA,IAAI,SAAS,GAAkC,IAAI,CAAC,SAAS;;AAE7D,YAAA,IACE,CAAC,OAAO,SAAS,KAAK,QAAQ;AAC5B,gBAAA,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC;AACzB,gBAAA,SAAS,CAAC,KAAK;AACf,gBAAA,gBAAgB,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;gBAC9D,SAAS,YAAY,KAAK,EAC1B;AACA,gBAAA,IAAI,CAAC,SAAS,GAAG,SAAS;AAC1B,gBAAA,IAAI,CAAC,OAAO;AACV,oBAAA,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC,gBAAgB,CAAC;AAC7C,0BAAE,CAAC,UAAU,EAAE,UAAU;AACzB,0BAAE,CAAC,UAAU,CAAC;;;AAGpB,YAAA,IAAI,CAAC,iBAAiB,GAAG,MAAK;AAC5B,gBAAA,OAAO,IAAI,OAAO,CAAC,CAAC,OAA8B,KAAI;oBACpD,MAAM,2BAA2B,GAAe,MAAK;AACnD,wBAAA,IAAI,SAAS,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;4BAChC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE;AAC7B,gCAAA,SAAS,GAAG,CAAC,SAAS,CAAC;;4BAGzB,MAAM,WAAW,GAAoB,EAAE;AACvC,4BAAA,SAAS,CAAC,OAAO,CAAC,CAAC,CAAM,KAAI;AAC3B,gCAAA,MAAM,aAAa,GAAkB,IAAI,OAAO,EAAQ;AACxD,gCAAA,WAAW,CAAC,IAAI,CAAC,aAAa,CAAC;;AAG/B,gCAAA,IAAI,CAAC,UAAU,CACb,CAAC,EACD,IAAI,CAAC,gBAAgB,EACrB,aAAa,EACb,eAAe,CAChB;AACH,6BAAC,CAAC;AACF,4BAAA,MAAM,WAAW,GAAiB,QAAQ,CAAC,GAAG,WAAW;iCACtD,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,eAAe,EAAE,UAAU,CAAC,CAAC;iCAClD,SAAS,CAAC,MAAK;;gCAEd,IAAI,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE;oCACzD,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC;;qCAC/C;AACL,oCAAA,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE;;gCAE1B,aAAa,CAAC,IAAI,EAAE;gCACpB,WAAW,CAAC,WAAW,EAAE;AAC3B,6BAAC,CAAC;;;AAIN,wBAAA,IAAI,IAAI,CAAC,OAAO,EAAE;4BAChB,MAAM,SAAS,GAAoB,EAAE;4BACrC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,OAAqB,KAAI;AAC7C,gCAAA,MAAM,WAAW,GAAkB,IAAI,OAAO,EAAQ;AACtD,gCAAA,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC;gCAC3B,IAAI,CAAC,UAAU,CACb,OAAO,EACP,SAAS,EACT,WAAW,EACX,eAAe,CAChB;AACH,6BAAC,CAAC;AAEF,4BAAA,MAAM,SAAS,GAAiB,KAAK,CAAC,GAAG,SAAS;AAC/C,iCAAA,IAAI,CACH,SAAS,CAAC,KAAK,CAAC,eAAe,EAAE,UAAU,EAAE,aAAa,CAAC,CAAC;iCAE7D,SAAS,CAAC,MAAK;AACd,gCAAA,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE;gCAC5B,SAAS,CAAC,WAAW,EAAE;AACzB,6BAAC,CAAC;;AAER,qBAAC;AAED,oBAAA,MAAM,WAAW,GAAkB,IAAI,OAAO,EAAQ;AACtD,oBAAA,MAAM,gBAAgB,GAAoB,IAAI,OAAO,EAAU;oBAC/D,MAAM,eAAe,GACnB,IAAI,eAAe,CAAS,CAAC,CAAC,CAAC;AAEjC,oBAAA,IAAI,EAAsB;;AAE1B,oBAAA,IAAI,OAAO,IAAI,CAAC,QAAQ,KAAK,QAAQ,EAAE;AACrC,wBAAA,EAAE,GAAG,IAAI,CAAC,QAAQ;;AACb,yBAAA,IACL,OAAO,IAAI,CAAC,QAAQ,KAAK,QAAQ;wBACjC,OAAO,IAAI,CAAC,QAAQ,CAAC,OAAO,KAAK,QAAQ,EACzC;AACA,wBAAA,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO;;;oBAG5B,IAAI,EAAE,EAAE;;;AAGN,wBAAA,IACE,IAAI,CAAC,YAAY,CAAC,cAAc,EAAE;4BAC5B,IAAI,CAAC,YAAa,CAAC,KAAK,CAAC,CAAC,CAAC,EACjC;AACA,4BAAA,IAAI,CAAC,YAAY,CAAC,cAAc,EAAE,EAAE,iBAAiB,CAAC;AACpD,gCAAA,OAAO,EAAE,aAAa,CAAC,KAAK,CAAC,CAAC;sCAC1B,CAAC,UAAU;sCACX,CAAC,UAAU,CAAC;AACjB,6BAAA,CAAC;;;wBAGJ;6BACG,IAAI,CACH,IAAI,CAAC,CAAC,CAAC,EACP,SAAS,CAAC,CAAC,GAAW,KAAI;4BACxB,IACE,IAAI,CAAC,eAAe;AACpB,gCAAA,IAAI,CAAC,eAAe,CAAC,OAAO,KAAK,SAAS,EAC1C;AACA,gCAAA,OAAO,GAAG,GAAG,IAAI,CAAC,eAAe,CAAC,OAAO;;4BAE3C,OAAO,GAAG,GAAG,8BAA8B;AAC7C,yBAAC,CAAC,EACF,SAAS,CAAC,KAAK,CAAC,WAAW,CAAC,YAAY,EAAE,EAAE,eAAe,CAAC,CAAC;AAE9D,6BAAA,SAAS,CAAC,CAAC,QAAgB,KAAI;AAC9B,4BAAA,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC;4BACxB,gBAAgB,CAAC,QAAQ,EAAE;;4BAE3B,IACE,IAAI,CAAC,eAAe;AACpB,gCAAA,IAAI,CAAC,eAAe,CAAC,cAAc,EACnC;;;;gCAIA,IAAI,SAAS,EAAE;AACb,oCAAA,IACQ,IAAI,CAAC,YAAa,CAAC,KAAK,CAAC,OAAO,CACpC,IAAI,CAAC,YAAY,CAAC,cAAc,EAAE,CACnC,KAAK,CAAC,EACP;AACA,wCAAA,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE;;yCACnB;AACL,wCAAA,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE;;oCAE1B,SAAS,GAAG,KAAK;;qCACZ;;oCAEL,MAAM,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,cAAc,EAAE;oCACtD,WAAW,EAAE,OAAO,EAAE;AACtB,oCAAA,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE;oCACxB,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,WAAW,EAAE,EAAE,IAAI,EAAE,CAAC;;;iCAEhD,IAAI,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE;;gCAE5D,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC;;iCAC5C;;gCAEL,OAAO,CAAC,IAAI,CACV,CAAA,+BAAA,EAAkC,EAAE,CAAc,WAAA,EAAA,QAAQ,CAAS,OAAA,CAAA,CACpE;;AAED,gCAAA,OAAO,EAAE;;AAEb,yBAAC,CAAC;;wBAGJ,KAAK,CACH,CAAC,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,eAAe,CAAC,cAAc;4BAC1D,sCAAsC,EACxC,CAAC,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,eAAe,CAAC,QAAQ;AACpD,4BAAA,8BAA8B;6BAE/B,IAAI;;wBAEH,SAAS,CAAC,KAAK,CAAC,WAAW,EAAE,gBAAgB,EAAE,eAAe,CAAC,CAAC;6BAEjE,SAAS,CAAC,MAAK;4BACd,MAAM,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,EAAE,IAAI,EAAE,CAAC;;4BAEhD,IAAI,OAAO,EAAE;gCACX,WAAW,CAAC,IAAI,EAAE;gCAClB,WAAW,CAAC,QAAQ,EAAE;AACtB,gCAAA,2BAA2B,EAAE;AAC7B,gCAAA,OAAO,EAAE;;iCACJ;gCACL,eAAe,CAAC,IAAI,CAAC,eAAe,CAAC,KAAK,GAAG,CAAC,CAAC;;AAEnD,yBAAC,CAAC;;AAGJ,wBAAA,eAAe,CAAC,SAAS,CAAC,MAAK;4BAC7B,WAAW,CAAC,IAAI,EAAE;4BAClB,WAAW,CAAC,QAAQ,EAAE;AACtB,4BAAA,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC;4BACxB,gBAAgB,CAAC,QAAQ,EAAE;AAC7B,yBAAC,CAAC;;yBACG;;wBAEL,KAAK,CACH,CAAC,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,eAAe,CAAC,cAAc;AAC1D,4BAAA,sCAAsC;6BAEvC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;6BACtC,SAAS,CAAC,MAAK;AACd,4BAAA,OAAO,EAAE;AACX,yBAAC,CAAC;;AAER,iBAAC,CAAC;AACJ,aAAC;AACH,SAAC,CAAC;AACF,QAAA,OAAO,KAAK;;AAGN,IAAA,UAAU,CAChB,OAAqB,EACrB,cAA+C,EAC/C,MAAqB,EACrB,eAA8B,EAAA;AAE9B,QAAA,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,EAAE;AACvC,QAAA,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK;;QAE3B,MAAM,SAAS,GAAiB,KAAK,CACnC,CAAC,cAAc,IAAI,cAAc,CAAC,cAAc;AAC9C,YAAA,sCAAsC,EACxC,CAAC,cAAc,IAAI,cAAc,CAAC,QAAQ;AACxC,YAAA,8BAA8B;AAE/B,aAAA,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC;aAC/B,SAAS,CAAC,MAAK;YACd,MAAM,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC;;YAEhD,IAAI,OAAO,EAAE;gBACX,SAAS,CAAC,WAAW,EAAE;AAEvB,gBAAA,IAAI,KAAK,KAAK,UAAU,CAAC,KAAK,EAAE;;oBAE9B,MAAM,CAAC,IAAI,EAAE;oBACb,MAAM,CAAC,QAAQ,EAAE;;AACZ,qBAAA,IACL,KAAK,KAAK,UAAU,CAAC,KAAK;oBAC1B,KAAK,KAAK,UAAU,CAAC,WAAW;AAChC,qBAAC,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAC/C;;oBAEA,MAAM,SAAS,GAAG,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;oBACtC,MAAM,QAAQ,GAAG,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACrC,oBAAA,SAAS,CAAC,OAAO,EAAE,SAAS;AACzB,yBAAA,IAAI,CACH,MAAM,CAAC,CAAC,MAAa,KAAI;;AAEvB,wBAAA,IAAI,MAAM,YAAY,aAAa,EAAE;4BACnC,IAAI,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,QAAQ,EAAE;AAC9C,gCAAA,OAAO,IAAI;;AAEb,4BAAA,OAAO,KAAK;;6BACP;AACL,4BAAA,OAAO,IAAI;;AAEf,qBAAC,CAAC,EACF,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,YAAY,EAAE,EAAE,eAAe,CAAC,CAAC;yBAEzD,SAAS,CAAC,MAAK;wBACd,MAAM,CAAC,IAAI,EAAE;wBACb,MAAM,CAAC,QAAQ,EAAE;AACnB,qBAAC,CAAC;;AACC,qBAAA,IAAI,KAAK,KAAK,UAAU,CAAC,OAAO,EAAE;;AAEvC,oBAAA,MAAM,QAAQ,GAAqB,IAAI,gBAAgB,CAAC,MAAK;wBAC3D,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE;4BACpC,MAAM,CAAC,IAAI,EAAE;4BACb,MAAM,CAAC,QAAQ,EAAE;4BACjB,QAAQ,CAAC,UAAU,EAAE;;AAEzB,qBAAC,CAAC;;AAGF,oBAAA,eAAe,CAAC,SAAS,CAAC,MAAK;wBAC7B,QAAQ,CAAC,UAAU,EAAE;AACvB,qBAAC,CAAC;;AAEF,oBAAA,QAAQ,CAAC,OAAO,CAAC,OAAO,EAAE;AACxB,wBAAA,SAAS,EAAE,IAAI;AACf,wBAAA,OAAO,EAAE,IAAI;AACb,wBAAA,UAAU,EAAE,IAAI;AACjB,qBAAA,CAAC;;;AAGR,SAAC,CAAC;;AAEP;;AC1iBD;;AAEG;IACS;AAAZ,CAAA,UAAY,UAAU,EAAA;AACpB,IAAA,UAAA,CAAA,UAAA,CAAA,GAAA,UAAqB;AACrB,IAAA,UAAA,CAAA,QAAA,CAAA,GAAA,QAAiB;AACjB,IAAA,UAAA,CAAA,MAAA,CAAA,GAAA,MAAa;AACb,IAAA,UAAA,CAAA,MAAA,CAAA,GAAA,MAAa;AACb,IAAA,UAAA,CAAA,OAAA,CAAA,GAAA,OAAe;AACf,IAAA,UAAA,CAAA,QAAA,CAAA,GAAA,QAAiB;AACjB,IAAA,UAAA,CAAA,UAAA,CAAA,GAAA,UAAqB;AACvB,CAAC,EARW,UAAU,KAAV,UAAU,GAQrB,EAAA,CAAA,CAAA;AASK,MAAO,yBAA0B,SAAQ,kBAAkB,CAAA;AAIrD,IAAA,OAAA;AACA,IAAA,MAAA;AACA,IAAA,WAAA;AALF,IAAA,SAAS,GAA6B,IAAI,GAAG,EAAuB;AACpE,IAAA,aAAa,GAAwB,IAAI,GAAG,EAAkB;AACtE,IAAA,WAAA,CACU,OAAe,EACf,MAAsB,EACtB,WAAuB,EAAA;AAE/B,QAAA,KAAK,EAAE;QAJC,IAAO,CAAA,OAAA,GAAP,OAAO;QACP,IAAM,CAAA,MAAA,GAAN,MAAM;QACN,IAAW,CAAA,WAAA,GAAX,WAAW;AAGnB,QAAA,OAAO,CAAC;aACL,IAAI,CACH,MAAM,CACJ,CAAC,KAAsB,KACrB,KAAK,YAAY,eAAe;AAChC,YAAA,KAAK,CAAC,iBAAiB,KAAK,UAAU,CACzC;aAEF,SAAS,CAAC,MAAK;AACd,YAAA,IAAI,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,EAAE;AAChC,gBAAA,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE;;AAE9B,SAAC,CAAC;;AAGN,IAAA,UAAU,CAAC,GAAe,EAAA;QACxB,OAAO,SAAS,CAAC,IAAI,CAAC,YAAY,EAAE,GAAG,CAAC;;AAG1C,IAAA,MAAM,YAAY,CAChB,QAAgB,EAChB,IAA0B,EAAA;QAE1B,MAAM,UAAU,GACd,OAAO,IAAI,KAAK,QAAQ,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,IAAI;QAC9D,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,EAAE,UAAU,CAAC;;AAG1C,IAAA,SAAS,CAAC,QAAgB,EAAA;QACxB,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC;QAC1C,IAAI,CAAC,MAAM,EAAE;AACb,QAAA,IAAI,UAAU,IAAI,UAAU,CAAC,KAAK,IAAI,UAAU,CAAC,KAAK,CAAC,MAAM,EAAE;;AAE7D,YAAA,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,UAAU,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;YACjE,MAAM,YAAY,GAAkB,IAAI,CAAC,YAAY,CAAC,QAAQ,CAC5D,IAAI,CAAC,wBAAwB,CAC3B,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,KAAK,EAAE,UAAU,CAAC,gBAAgB,CAAC,CACjE,CACF;;AAED,YAAA,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,SAAS,CACxC,CAAC,SAA2B,KAAI;AAC9B,gBAAA,MAAM,UAAU,GAAW,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;gBAC5D,MAAM,EACJ,IAAI,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,GACtB,GAAG,SAAS;gBACb,IAAI,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE;oBAC9B,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC;AAC5C,oBAAA,IAAI,SAAS,KAAK,UAAU,EAAE;wBAC5B,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,CAAC;;;qBAE/B;AACL,oBAAA,IAAI,OAAO,IAAI,OAAO,CAAC,OAAO,EAAE;AAC9B,wBAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,EAAE,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC;;yBAC5C;wBACL,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,EAAE,UAAU,CAAC;;;AAG5C,aAAC,CACF;YACD,IAAI,CAAC,KAAK,EAAE;AACZ,YAAA,OAAO,YAAY;;aACd;;AAEL,YAAA,OAAO,CAAC,IAAI,CAAC,QAAQ,QAAQ,CAAA,yCAAA,CAA2C,CAAC;AACzE,YAAA,OAAO,SAAS;;;;;IAMpB,uBAAuB,CAAC,UAAU,GAAG,MAAM,EAAA;AACzC,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,CACnC,YAAY,CAAC,GAAG,CAAC,EACjB,GAAG,CAAC,CAAC,MAAgB,KAAI;YACvB,MAAM,SAAS,GAAG,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC;YACxC,IAAI,SAAS,EAAE;AACb,gBAAA,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC;;gBAEzB,MAAM,YAAY,GAAoB,IAAI,eAAe,CACvD,MAAM,CAAC,QAAQ,CAAC,MAAM,CACvB;;AAED,gBAAA,YAAY,CAAC,MAAM,CAAC,UAAU,CAAC;;AAE/B,gBAAA,IAAI,GAAG,GACL,MAAM,CAAC,QAAQ,CAAC,QAAQ;oBACxB,IAAI;oBACJ,MAAM,CAAC,QAAQ,CAAC,IAAI;AACpB,oBAAA,MAAM,CAAC,QAAQ,CAAC,QAAQ;AAC1B,gBAAA,IAAI,YAAY,CAAC,QAAQ,EAAE,EAAE;AAC3B,oBAAA,GAAG,IAAI,GAAG,GAAG,YAAY,CAAC,QAAQ,EAAE;;;AAGtC,gBAAA,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC;;SAEtD,CAAC,CACH;;IAGH,oBAAoB,CAAC,MAAc,EAAE,UAAmB,EAAA;QACtD,IAAI,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;YACrC,MAAM,WAAW,GAAe,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,MAAM;AAC7D,iBAAA,OAAO;YACV,WAAW,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,MAAsB,KAAI;AACtD,gBAAA,IAAI,MAAM,CAAC,IAAI,KAAK,eAAe,EAAE;AACnC,oBAAA,MAAM,CAAC,QAAQ,GAAG,UAAU;;AAEhC,aAAC,CAAC;AACF,YAAA,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,iBAAiB,CAAC,WAAW,CAAC;;;IAI7D,MAAM,SAAS,CAAC,OAAe,EAAA;QACrC,MAAM,OAAO,GAAuB,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC;AACjE,QAAA,IAAI;AACF,YAAA,OAAO,MAAM;AACV,iBAAA,IAAI,CACH,GAAG,CAAC,CAAC,SAAc,KAAI;gBACrB,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;AAC9C,aAAC,CAAC;AAEH,iBAAA,SAAS,EAAE;;AACd,QAAA,MAAM;AACN,YAAA,OAAO,SAAS;;;AAIZ,IAAA,QAAQ,CAAC,GAAW,EAAA;QAC1B,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC;;AAGxB,IAAA,wBAAwB,CAC9B,WAA8B,EAAA;AAE9B,QAAA,WAAW,CAAC,OAAO,CAAC,CAAC,IAAqB,KAAI;AAC5C,YAAA,IAAI,IAAI,CAAC,OAAO,EAAE;AAChB,gBAAA,MAAM,KAAK,GAAW,IAAI,CAAC,OAAO,CAAC,KAAK;;AAExC,gBAAA,IAAI,IAAI,CAAC,iBAAiB,EAAE;AAC1B,oBAAA,MAAM,iBAAiB,GAAwB,IAAI,CAAC,iBAAiB;AACrE,oBAAA,IAAI,CAAC,iBAAiB,GAAG,MAAK;wBAC5B,OAAO,IAAI,CAAC;6BACT,QAAQ,CAAC,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,OAAO,EAAE,MAAM;6BACtC,IAAI,CAAC,MAAK;4BACT,OAAO,iBAAiB,EAAE;AAC5B,yBAAC,CAAC;AACN,qBAAC;;qBACI;AACL,oBAAA,IAAI,CAAC,iBAAiB,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,CAAC;;;AAGnE,SAAC,CAAC;AAEF,QAAA,OAAO,WAAW;;mHAnKT,yBAAyB,EAAA,EAAA,CAAA,QAAA,CAAA,EAAA,CAAA,MAAA,CAAA,EAAA,EAAA,CAAA,QAAA,CAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,CAAA,QAAA,CAAA,EAAA,CAAA,UAAA,CAAA,CAAA,CAAA,EAAA;AAAzB,IAAA,OAAA,KAAA,iBAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,KAAA,EAAA,yBAAyB,WAAzB,yBAAyB,CAAA,IAAA,EAAA,CAAA;;iFAAzB,yBAAyB,EAAA,CAAA;cADrC;;;MC1CY,wBAAwB,CAAA;kHAAxB,wBAAwB,GAAA,CAAA,EAAA;4DAAxB,wBAAwB,EAAA,CAAA;iEAJxB,CAAC,yBAAyB,CAAC,EAAA,OAAA,EAAA,CAD5B,YAAY,CAAA,EAAA,CAAA;;iFAKX,wBAAwB,EAAA,CAAA;cANpC,QAAQ;AAAC,QAAA,IAAA,EAAA,CAAA;gBACR,OAAO,EAAE,CAAC,YAAY,CAAC;gBACvB,SAAS,EAAE,CAAC,yBAAyB,CAAC;AACtC,gBAAA,YAAY,EAAE,EAAE;AAChB,gBAAA,OAAO,EAAE,EAAE;AACZ,aAAA;;AACY,CAAA,YAAA,EAAA,CAAA,OAAA,SAAA,KAAA,WAAA,IAAA,SAAA,KAAA,EAAA,CAAA,kBAAA,CAAA,wBAAwB,cALzB,YAAY,CAAA,EAAA,CAAA,CAAA,EAAA,GAAA;;ACLxB;;AAEG;;;;"}
1
+ {"version":3,"file":"covalent-guided-tour.mjs","sources":["../tmp-esm2022/lib/guided.tour.js","../tmp-esm2022/lib/guided-tour.service.js","../tmp-esm2022/lib/guided-tour.module.js","../tmp-esm2022/covalent-guided-tour.js"],"sourcesContent":["import Shepherd from 'shepherd.js';\nimport { timer, Subject, BehaviorSubject, merge, fromEvent, forkJoin, } from 'rxjs';\nimport { takeUntil, skipWhile, filter, skip, first } from 'rxjs/operators';\nexport var ITourEvent;\n(function (ITourEvent) {\n ITourEvent[\"click\"] = \"click\";\n ITourEvent[\"pointerover\"] = \"pointerover\";\n ITourEvent[\"keyup\"] = \"keyup\";\n ITourEvent[\"added\"] = \"added\";\n ITourEvent[\"removed\"] = \"removed\";\n})(ITourEvent || (ITourEvent = {}));\nclass TourButtonsActions {\n}\nconst SHEPHERD_DEFAULT_FIND_TIME_BEFORE_SHOW = 100;\nconst SHEPHERD_DEFAULT_FIND_INTERVAL = 500;\nconst SHEPHERD_DEFAULT_FIND_ATTEMPTS = 20;\nconst overriddenEvents = [\n ITourEvent.click,\n ITourEvent.pointerover,\n ITourEvent.removed,\n ITourEvent.added,\n ITourEvent.keyup,\n];\nconst keyEvents = new Map([\n [13, 'enter'],\n [27, 'esc'],\n]);\nconst defaultStepOptions = {\n scrollTo: { behavior: 'smooth', block: 'center' },\n cancelIcon: {\n enabled: true,\n },\n};\nconst MAT_ICON_BUTTON = 'mdc-icon-button material-icons mat-mdc-icon-button mat-mdc-button-base';\nconst MAT_BUTTON = 'mdc-button mat-mdc-button mat-mdc-button-base';\nconst MAT_BUTTON_INVISIBLE = 'shepherd-void-button';\nexport class CovalentGuidedTour extends TourButtonsActions {\n _destroyedEvent$;\n shepherdTour;\n stepOptions;\n constructor(stepOptions = defaultStepOptions) {\n super();\n this.stepOptions = stepOptions;\n this.newTour();\n }\n newTour(opts) {\n this.shepherdTour = new Shepherd.Tour(Object.assign({\n defaultStepOptions: this.stepOptions,\n }, opts));\n this._destroyedEvent$ = new Subject();\n // listen to cancel and complete to clean up abortOn events\n merge(fromEvent(this.shepherdTour, 'cancel'), fromEvent(this.shepherdTour, 'complete'))\n .pipe(first())\n .subscribe(() => {\n this._destroyedEvent$.next();\n this._destroyedEvent$.complete();\n });\n // if abortOn was passed, we bind the event and execute complete\n if (opts && opts.abortOn) {\n const abortArr$ = [];\n opts.abortOn.forEach((abortOn) => {\n const abortEvent$ = new Subject();\n abortArr$.push(abortEvent$);\n this._bindEvent(abortOn, undefined, abortEvent$, this._destroyedEvent$);\n });\n const abortSubs = merge(...abortArr$)\n .pipe(takeUntil(this._destroyedEvent$))\n .subscribe(() => {\n this.shepherdTour.complete();\n abortSubs.unsubscribe();\n });\n }\n }\n back() {\n this.shepherdTour.back();\n }\n cancel() {\n this.shepherdTour.cancel();\n }\n next() {\n this.shepherdTour.next();\n }\n finish() {\n this.shepherdTour.complete();\n }\n addSteps(steps) {\n this.shepherdTour.addSteps(this._prepareTour(steps));\n }\n start() {\n this.shepherdTour.start();\n }\n _prepareTour(originalSteps, finishLabel = 'finish') {\n // create Subjects for back and forward events\n const backEvent$ = new Subject();\n const forwardEvent$ = new Subject();\n let _backFlow = false;\n // create Subject for your end\n const destroyedEvent$ = new Subject();\n /**\n * This function adds the step progress in the footer of the shepherd tooltip\n */\n const appendProgressFunc = function () {\n // get all the footers that are available in the DOM\n const footers = Array.from(document.querySelectorAll('.shepherd-footer'));\n // get the last footer since Shepherd always puts the active one at the end\n const footer = footers[footers.length - 1];\n // generate steps html element\n const progress = document.createElement('span');\n progress.className = 'shepherd-progress';\n progress.innerText = `${this.shepherdTour.currentStep.options.count}/${stepTotal}`;\n // insert into the footer before the first button\n footer.insertBefore(progress, footer.querySelector('.shepherd-button'));\n };\n let stepTotal = 0;\n const steps = originalSteps.map((step) => {\n let showProgress = () => {\n //\n };\n if (step.attachToOptions?.skipFromStepCount === true) {\n showProgress = function () {\n return;\n };\n }\n else if (step.attachToOptions?.skipFromStepCount === undefined ||\n step.attachToOptions?.skipFromStepCount === false) {\n step.count = ++stepTotal;\n showProgress = appendProgressFunc.bind(this);\n }\n return Object.assign({}, step, {\n when: {\n show: showProgress,\n },\n });\n });\n const finishButton = {\n text: finishLabel,\n action: this['finish'].bind(this),\n classes: MAT_BUTTON,\n };\n const voidButton = {\n text: '',\n action() {\n return;\n },\n classes: MAT_BUTTON_INVISIBLE,\n };\n // listen to the destroyed event to clean up all the streams\n this._destroyedEvent$.pipe(first()).subscribe(() => {\n backEvent$.complete();\n forwardEvent$.complete();\n destroyedEvent$.next();\n destroyedEvent$.complete();\n });\n const totalSteps = steps.length;\n steps.forEach((step, index) => {\n // create buttons specific for the step\n // this is done to create more control on events\n const nextButton = {\n text: 'chevron_right',\n action: () => {\n // intercept the next action and trigger event\n forwardEvent$.next();\n this.shepherdTour.next();\n },\n classes: MAT_ICON_BUTTON,\n };\n const backButton = {\n text: 'chevron_left',\n action: () => {\n // intercept the back action and trigger event\n backEvent$.next();\n _backFlow = true;\n // check if 'goBackTo' is set to jump to a particular step, else just go back\n if (step.attachToOptions && step.attachToOptions.goBackTo) {\n this.shepherdTour.show(step.attachToOptions.goBackTo, false);\n }\n else {\n this.shepherdTour.back();\n }\n },\n classes: step.advanceOnOptions?.allowGoBack === false\n ? MAT_BUTTON_INVISIBLE\n : MAT_ICON_BUTTON,\n };\n // check if highlight was provided for the step, else fallback into shepherds usage\n step.highlightClass =\n step.attachToOptions && step.attachToOptions.highlight\n ? 'shepherd-highlight'\n : step.highlightClass;\n // Adding buttons in the steps if no buttons are defined\n if (!step.buttons || step.buttons.length === 0) {\n if (index === 0) {\n // first step\n step.buttons = [nextButton];\n }\n else if (index === totalSteps - 1) {\n // last step\n step.buttons = [backButton, finishButton];\n }\n else {\n step.buttons = [backButton, nextButton];\n }\n }\n // checks \"advanceOn\" to override listeners\n let advanceOn = step.advanceOn;\n // remove the shepherd \"advanceOn\" infavor of ours if the event is part of our list\n if ((typeof advanceOn === 'object' &&\n !Array.isArray(advanceOn) &&\n advanceOn.event &&\n overriddenEvents.indexOf(advanceOn.event.split('.')[0]) > -1) ||\n advanceOn instanceof Array) {\n step.advanceOn = undefined;\n step.buttons =\n step.advanceOnOptions && step.advanceOnOptions.allowGoBack\n ? [backButton, voidButton]\n : [voidButton];\n }\n // adds a default beforeShowPromise function\n step.beforeShowPromise = () => {\n return new Promise((resolve) => {\n const additionalCapabilitiesSetup = () => {\n if (advanceOn && !step.advanceOn) {\n if (!Array.isArray(advanceOn)) {\n advanceOn = [advanceOn];\n }\n const advanceArr$ = [];\n advanceOn.forEach((_) => {\n const advanceEvent$ = new Subject();\n advanceArr$.push(advanceEvent$);\n // we start a timer of attempts to find an element in the dom\n this._bindEvent(_, step.advanceOnOptions, advanceEvent$, destroyedEvent$);\n });\n const advanceSubs = forkJoin(...advanceArr$)\n .pipe(takeUntil(merge(destroyedEvent$, backEvent$)))\n .subscribe(() => {\n // check if we need to advance to a specific step, else advance to next step\n if (step.advanceOnOptions && step.advanceOnOptions.jumpTo) {\n this.shepherdTour.show(step.advanceOnOptions.jumpTo);\n }\n else {\n this.shepherdTour.next();\n }\n forwardEvent$.next();\n advanceSubs.unsubscribe();\n });\n }\n // if abortOn was passed on the step, we bind the event and execute complete\n if (step.abortOn) {\n const abortArr$ = [];\n step.abortOn.forEach((abortOn) => {\n const abortEvent$ = new Subject();\n abortArr$.push(abortEvent$);\n this._bindEvent(abortOn, undefined, abortEvent$, destroyedEvent$);\n });\n const abortSubs = merge(...abortArr$)\n .pipe(takeUntil(merge(destroyedEvent$, backEvent$, forwardEvent$)))\n .subscribe(() => {\n this.shepherdTour.complete();\n abortSubs.unsubscribe();\n });\n }\n };\n const _stopTimer$ = new Subject();\n const _retriesReached$ = new Subject();\n const _retryAttempts$ = new BehaviorSubject(-1);\n let id;\n // checks if \"attachTo\" is a string or an object to get the id of an element\n if (typeof step.attachTo === 'string') {\n id = step.attachTo;\n }\n else if (typeof step.attachTo === 'object' &&\n typeof step.attachTo.element === 'string') {\n id = step.attachTo.element;\n }\n // if we have an id as a string in either case, we use it (we ignore it if its HTMLElement)\n if (id) {\n // if current step is the first step of the tour, we set the buttons to be only \"next\"\n // we had to use `any` since the tour doesnt expose the steps in any fashion nor a way to check if we have modified them at all\n if (this.shepherdTour.getCurrentStep() ===\n this.shepherdTour.steps[0]) {\n this.shepherdTour.getCurrentStep()?.updateStepOptions({\n buttons: originalSteps[index].advanceOn\n ? [voidButton]\n : [nextButton],\n });\n }\n // register to the attempts observable to notify deeveloper when number has been reached\n _retryAttempts$\n .pipe(skip(1), skipWhile((val) => {\n if (step.attachToOptions &&\n step.attachToOptions.retries !== undefined) {\n return val < step.attachToOptions.retries;\n }\n return val < SHEPHERD_DEFAULT_FIND_ATTEMPTS;\n }), takeUntil(merge(_stopTimer$.asObservable(), destroyedEvent$)))\n .subscribe((attempts) => {\n _retriesReached$.next(1);\n _retriesReached$.complete();\n // if attempts have been reached, we check \"skipIfNotFound\" to move on to the next step\n if (step.attachToOptions &&\n step.attachToOptions.skipIfNotFound) {\n // if we get to this step coming back from a step and it wasnt found\n // then we either check if its the first step and try going forward\n // or we keep going back until we find a step that actually exists\n if (_backFlow) {\n if (this.shepherdTour.steps.indexOf(this.shepherdTour.getCurrentStep()) === 0) {\n this.shepherdTour.next();\n }\n else {\n this.shepherdTour.back();\n }\n _backFlow = false;\n }\n else {\n // destroys current step if we need to skip it to remove it from the tour\n const currentStep = this.shepherdTour.getCurrentStep();\n currentStep?.destroy();\n this.shepherdTour.next();\n this.shepherdTour.removeStep(currentStep?.id ?? '');\n }\n }\n else if (step.attachToOptions && step.attachToOptions.else) {\n // if \"skipIfNotFound\" is not true, then we check if \"else\" has been set to jump to a specific step\n this.shepherdTour.show(step.attachToOptions.else);\n }\n else {\n // tslint:disable-next-line:no-console\n console.warn(`Retries reached trying to find ${id}. Retried ${attempts} times.`);\n // else we show the step regardless\n resolve();\n }\n });\n // we start a timer of attempts to find an element in the dom\n timer((step.attachToOptions && step.attachToOptions.timeBeforeShow) ||\n SHEPHERD_DEFAULT_FIND_TIME_BEFORE_SHOW, (step.attachToOptions && step.attachToOptions.interval) ||\n SHEPHERD_DEFAULT_FIND_INTERVAL)\n .pipe(\n // the timer will continue either until we find the element or the number of attempts has been reached\n takeUntil(merge(_stopTimer$, _retriesReached$, destroyedEvent$)))\n .subscribe(() => {\n const element = document.querySelector(id ?? '');\n // if the element has been found, we stop the timer and resolve the promise\n if (element) {\n _stopTimer$.next();\n _stopTimer$.complete();\n additionalCapabilitiesSetup();\n resolve();\n }\n else {\n _retryAttempts$.next(_retryAttempts$.value + 1);\n }\n });\n // stop find interval if user stops the tour\n destroyedEvent$.subscribe(() => {\n _stopTimer$.next();\n _stopTimer$.complete();\n _retriesReached$.next(1);\n _retriesReached$.complete();\n });\n }\n else {\n // resolve observable until the timeBeforeShow has passsed or use default\n timer((step.attachToOptions && step.attachToOptions.timeBeforeShow) ||\n SHEPHERD_DEFAULT_FIND_TIME_BEFORE_SHOW)\n .pipe(takeUntil(merge(destroyedEvent$)))\n .subscribe(() => {\n resolve();\n });\n }\n });\n };\n });\n return steps;\n }\n _bindEvent(eventOn, eventOnOptions, event$, destroyedEvent$) {\n const selector = eventOn.selector ?? '';\n const event = eventOn.event;\n // we start a timer of attempts to find an element in the dom\n const timerSubs = timer((eventOnOptions && eventOnOptions.timeBeforeShow) ||\n SHEPHERD_DEFAULT_FIND_TIME_BEFORE_SHOW, (eventOnOptions && eventOnOptions.interval) ||\n SHEPHERD_DEFAULT_FIND_INTERVAL)\n .pipe(takeUntil(destroyedEvent$))\n .subscribe(() => {\n const element = document.querySelector(selector);\n // if the element has been found, we stop the timer and resolve the promise\n if (element) {\n timerSubs.unsubscribe();\n if (event === ITourEvent.added) {\n // if event is \"Added\" trigger a soon as this is attached.\n event$.next();\n event$.complete();\n }\n else if (event === ITourEvent.click ||\n event === ITourEvent.pointerover ||\n (event && event.indexOf(ITourEvent.keyup) > -1)) {\n // we use normal listeners for mouseevents\n const mainEvent = event?.split('.')[0];\n const subEvent = event?.split('.')[1];\n fromEvent(element, mainEvent)\n .pipe(filter(($event) => {\n // only trigger if the event is a keyboard event and part of out list\n if ($event instanceof KeyboardEvent) {\n if (keyEvents.get($event.keyCode) === subEvent) {\n return true;\n }\n return false;\n }\n else {\n return true;\n }\n }), takeUntil(merge(event$.asObservable(), destroyedEvent$)))\n .subscribe(() => {\n event$.next();\n event$.complete();\n });\n }\n else if (event === ITourEvent.removed) {\n // and we will use MutationObserver for DOM events\n const observer = new MutationObserver(() => {\n if (!document.body.contains(element)) {\n event$.next();\n event$.complete();\n observer.disconnect();\n }\n });\n // stop listenining if tour is closed\n destroyedEvent$.subscribe(() => {\n observer.disconnect();\n });\n // observe for any DOM interaction in the element\n observer.observe(element, {\n childList: true,\n subtree: true,\n attributes: true,\n });\n }\n }\n });\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3VpZGVkLnRvdXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItZ3VpZGVkLXRvdXIvc3JjL2xpYi9ndWlkZWQudG91ci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLFFBQVEsTUFBTSxhQUFhLENBQUM7QUFDbkMsT0FBTyxFQUNMLEtBQUssRUFDTCxPQUFPLEVBQ1AsZUFBZSxFQUNmLEtBQUssRUFFTCxTQUFTLEVBQ1QsUUFBUSxHQUNULE1BQU0sTUFBTSxDQUFDO0FBQ2QsT0FBTyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUszRSxNQUFNLENBQU4sSUFBWSxVQU1YO0FBTkQsV0FBWSxVQUFVO0lBQ3BCLDZCQUFpQixDQUFBO0lBQ2pCLHlDQUE2QixDQUFBO0lBQzdCLDZCQUFpQixDQUFBO0lBQ2pCLDZCQUFpQixDQUFBO0lBQ2pCLGlDQUFxQixDQUFBO0FBQ3ZCLENBQUMsRUFOVyxVQUFVLEtBQVYsVUFBVSxRQU1yQjtBQXNDRCxNQUFlLGtCQUFrQjtDQVFoQztBQUVELE1BQU0sc0NBQXNDLEdBQUcsR0FBRyxDQUFDO0FBQ25ELE1BQU0sOEJBQThCLEdBQUcsR0FBRyxDQUFDO0FBQzNDLE1BQU0sOEJBQThCLEdBQUcsRUFBRSxDQUFDO0FBRTFDLE1BQU0sZ0JBQWdCLEdBQWE7SUFDakMsVUFBVSxDQUFDLEtBQUs7SUFDaEIsVUFBVSxDQUFDLFdBQVc7SUFDdEIsVUFBVSxDQUFDLE9BQU87SUFDbEIsVUFBVSxDQUFDLEtBQUs7SUFDaEIsVUFBVSxDQUFDLEtBQUs7Q0FDakIsQ0FBQztBQUVGLE1BQU0sU0FBUyxHQUF3QixJQUFJLEdBQUcsQ0FBaUI7SUFDN0QsQ0FBQyxFQUFFLEVBQUUsT0FBTyxDQUFDO0lBQ2IsQ0FBQyxFQUFFLEVBQUUsS0FBSyxDQUFDO0NBQ1osQ0FBQyxDQUFDO0FB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Q0FBQyxDQUFDLENBQUM7b0JBQ0gsaURBQWlEO29CQUNqRCxRQUFRLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRTt3QkFDeEIsU0FBUyxFQUFFLElBQUk7d0JBQ2YsT0FBTyxFQUFFLElBQUk7d0JBQ2IsVUFBVSxFQUFFLElBQUk7cUJBQ2pCLENBQUMsQ0FBQztnQkFDTCxDQUFDO1lBQ0gsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFNoZXBoZXJkIGZyb20gJ3NoZXBoZXJkLmpzJztcbmltcG9ydCB7XG4gIHRpbWVyLFxuICBTdWJqZWN0LFxuICBCZWhhdmlvclN1YmplY3QsXG4gIG1lcmdlLFxuICBTdWJzY3JpcHRpb24sXG4gIGZyb21FdmVudCxcbiAgZm9ya0pvaW4sXG59IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdGFrZVVudGlsLCBza2lwV2hpbGUsIGZpbHRlciwgc2tpcCwgZmlyc3QgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmV4cG9ydCB0eXBlIFRvdXJTdGVwID0gU2hlcGhlcmQuU3RlcC5TdGVwT3B0aW9ucztcbmV4cG9ydCB0eXBlIFRvdXJTdGVwQnV0dG9uID0gU2hlcGhlcmQuU3RlcC5TdGVwT3B0aW9uc0J1dHRvbjtcblxuZXhwb3J0IGVudW0gSVRvdXJFdmVudCB7XG4gICdjbGljaycgPSAnY2xpY2snLFxuICAncG9pbnRlcm92ZXInID0gJ3BvaW50ZXJvdmVyJyxcbiAgJ2tleXVwJyA9ICdrZXl1cCcsXG4gICdhZGRlZCcgPSAnYWRkZWQnLCAvLyBhZGRlZCB0byBET01cbiAgJ3JlbW92ZWQnID0gJ3JlbW92ZWQnLCAvLyByZW1vdmVkIGZyb20gRE9NXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVRvdXJFdmVudE9uIHtcbiAgc2VsZWN0b3I/OiBzdHJpbmc7IC8vIGNzcyBzZWxlY3RvclxuICBldmVudD86IGtleW9mIHR5cGVvZiBJVG91ckV2ZW50OyAvLyBjbGljaywgcG9pbnRlcm92ZXIsIGtleXVwLCBhZGRlZCwgcmVtb3ZlZFxufVxuXG5leHBvcnQgaW50ZXJmYWNlIElUb3VyRXZlbnRPbk9wdGlvbnMge1xuICB0aW1lQmVmb3JlU2hvdz86IG51bWJlcjsgLy8gZGVsYXkgYmVmb3JlIHN0ZXAgaXMgZGlzcGxheWVkXG4gIGludGVydmFsPzogbnVtYmVyOyAvLyB0aW1lIGJldHdlZW4gc2VhcmNoZXMgZm9yIGVsZW1lbnQsIGRlZmF1bHRzIHRvIDUwMG1zXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVRvdXJPcHRpb25zIGV4dGVuZHMgU2hlcGhlcmQuVG91ci5Ub3VyT3B0aW9ucyB7XG4gIGFib3J0T24/OiBJVG91ckV2ZW50T25bXTsgLy8gZXZlbnRzIHRvIGFib3J0IG9uXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVRvdXJTdGVwQXR0YWNoVG9PcHRpb25zIGV4dGVuZHMgSVRvdXJFdmVudE9uT3B0aW9ucyB7XG4gIGhpZ2hsaWdodD86IGJvb2xlYW47XG4gIHJldHJpZXM/OiBudW1iZXI7IC8vICMgbnVtIG9mIGF0dGVtcHRzIHRvIGZpbmQgZWxlbWVudFxuICBza2lwSWZOb3RGb3VuZD86IGJvb2xlYW47IC8vIGlmIGVsZW1lbnQgaXMgbm90IGZvdW5kIGFmdGVyIG4gcmV0cmllcywgbW92ZSBvbiB0byBuZXh0IHN0ZXBcbiAgZWxzZT86IHN0cmluZzsgLy8gaWYgZWxlbWVudCBpcyBub3QgZm91bmQsIGdvIHRvIHN0ZXAgd2l0aCB0aGlzIGlkXG4gIGdvQmFja1RvPzogc3RyaW5nOyAvLyBiYWNrIGJ1dHRvbiBnb2VzIGJhY2sgdG8gc3RlcCB3aXRoIHRoaXMgaWRcbiAgc2tpcEZyb21TdGVwQ291bnQ/OiBib29sZWFuOyAvLyBzaG93L2hpZGUgcHJvZ3Jlc3Mgb24gc3RlcFxufVxuXG5leHBvcnQgaW50ZXJmYWNlIElUb3VyU3RlcEFkdmFuY2VPbk9wdGlvbnMgZXh0ZW5kcyBJVG91ckV2ZW50T25PcHRpb25zIHtcbiAganVtcFRvPzogc3RyaW5nOyAvLyBuZXh0IGJ1dHRvbiB3aWxsIGp1bXAgdG8gc3RlcCB3aXRoIHRoaXMgaWRcbiAgYWxsb3dHb0JhY2s/OiBib29sZWFuOyAvLyBhbGxvdyBiYWNrIHdpdGhpbiB0aGlzIHN0ZXBcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJVG91clN0ZXAgZXh0ZW5kcyBUb3VyU3RlcCB7XG4gIGF0dGFjaFRvT3B0aW9ucz86IElUb3VyU3RlcEF0dGFjaFRvT3B0aW9ucztcbiAgYWR2YW5jZU9uT3B0aW9ucz86IElUb3VyU3RlcEFkdmFuY2VPbk9wdGlvbnM7XG4gIGFkdmFuY2VPbj86IElUb3VyRXZlbnRPbltdIHwgSVRvdXJFdmVudE9uIHwgYW55O1xuICBhYm9ydE9uPzogSVRvdXJFdmVudE9uW107XG4gIGNvdW50PzogbnVtYmVyO1xufVxuXG5hYnN0cmFjdCBjbGFzcyBUb3VyQnV0dG9uc0FjdGlvbnMge1xuICBhYnN0cmFjdCBuZXh0KCk6IHZvaWQ7XG5cbiAgYWJzdHJhY3QgYmFjaygpOiB2b2lkO1xuXG4gIGFic3RyYWN0IGNhbmNlbCgpOiB2b2lkO1xuXG4gIGFic3RyYWN0IGZpbmlzaCgpOiB2b2lkO1xufVxuXG5jb25zdCBTSEVQSEVSRF9ERUZBVUxUX0ZJTkRfVElNRV9CRUZPUkVfU0hPVyA9IDEwMDtcbmNvbnN0IFNIRVBIRVJEX0RFRkFVTFRfRklORF9JTlRFUlZBTCA9IDUwMDtcbmNvbnN0IFNIRVBIRVJEX0RFRkFVTFRfRklORF9BVFRFTVBUUyA9IDIwO1xuXG5jb25zdCBvdmVycmlkZGVuRXZlbnRzOiBzdHJpbmdbXSA9IFtcbiAgSVRvdXJFdmVudC5jbGljayxcbiAgSVRvdXJFdmVudC5wb2ludGVyb3ZlcixcbiAgSVRvdXJFdmVudC5yZW1vdmVkLFxuICBJVG91ckV2ZW50LmFkZGVkLFxuICBJVG91ckV2ZW50LmtleXVwLFxuXTtcblxuY29uc3Qga2V5RXZlbnRzOiBNYXA8bnVtYmVyLCBzdHJpbmc+ID0gbmV3IE1hcDxudW1iZXIsIHN0cmluZz4oW1xuICBbMTMsICdlbnRlciddLFxuICBbMjcsICdlc2MnXSxcbl0pO1xuXG5jb25zdCBkZWZhdWx0U3RlcE9wdGlvbnM6IFRvdXJTdGVwID0ge1xuICBzY3JvbGxUbzogeyBiZWhhdmlvcjogJ3Ntb290aCcsIGJsb2NrOiAnY2VudGVyJyB9LFxuICBjYW5jZWxJY29uOiB7XG4gICAgZW5hYmxlZDogdHJ1ZSxcbiAgfSxcbn07XG5cbmNvbnN0IE1BVF9JQ09OX0JVVFRPTiA9XG4gICdtZGMtaWNvbi1idXR0b24gbWF0ZXJpYWwtaWNvbnMgbWF0LW1kYy1pY29uLWJ1dHRvbiBtYXQtbWRjLWJ1dHRvbi1iYXNlJztcbmNvbnN0IE1BVF9CVVRUT04gPSAnbWRjLWJ1dHRvbiBtYXQtbWRjLWJ1dHRvbiBtYXQtbWRjLWJ1dHRvbi1iYXNlJztcbmNvbnN0IE1BVF9CVVRUT05fSU5WSVNJQkxFID0gJ3NoZXBoZXJkLXZvaWQtYnV0dG9uJztcblxuZXhwb3J0IGNsYXNzIENvdmFsZW50R3VpZGVkVG91ciBleHRlbmRzIFRvdXJCdXR0b25zQWN0aW9ucyB7XG4gIHByaXZhdGUgX2Rlc3Ryb3llZEV2ZW50JCE6IFN1YmplY3Q8dm9pZD47XG5cbiAgc2hlcGhlcmRUb3VyITogU2hlcGhlcmQuVG91cjtcbiAgc3RlcE9wdGlvbnM6IElUb3VyU3RlcDtcblxuICBjb25zdHJ1Y3RvcihzdGVwT3B0aW9uczogSVRvdXJTdGVwID0gZGVmYXVsdFN0ZXBPcHRpb25zKSB7XG4gICAgc3VwZXIoKTtcblxuICAgIHRoaXMuc3RlcE9wdGlvbnMgPSBzdGVwT3B0aW9ucztcbiAgICB0aGlzLm5ld1RvdXIoKTtcbiAgfVxuXG4gIG5ld1RvdXIob3B0cz86IElUb3VyT3B0aW9ucyk6IHZvaWQge1xuICAgIHRoaXMuc2hlcGhlcmRUb3VyID0gbmV3IFNoZXBoZXJkLlRvdXIoXG4gICAgICBPYmplY3QuYXNzaWduKFxuICAgICAgICB7XG4gICAgICAgICAgZGVmYXVsdFN0ZXBPcHRpb25zOiB0aGlzLnN0ZXBPcHRpb25zLFxuICAgICAgICB9LFxuICAgICAgICBvcHRzXG4gICAgICApXG4gICAgKTtcblxuICAgIHRoaXMuX2Rlc3Ryb3llZEV2ZW50JCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gICAgLy8gbGlzdGVuIHRvIGNhbmNlbCBhbmQgY29tcGxldGUgdG8gY2xlYW4gdXAgYWJvcnRPbiBldmVudHNcbiAgICBtZXJnZShcbiAgICAgIGZyb21FdmVudCh0aGlzLnNoZXBoZXJkVG91ciwgJ2NhbmNlbCcpLFxuICAgICAgZnJvbUV2ZW50KHRoaXMuc2hlcGhlcmRUb3VyLCAnY29tcGxldGUnKVxuICAgIClcbiAgICAgIC5waXBlKGZpcnN0KCkpXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy5fZGVzdHJveWVkRXZlbnQkLm5leHQoKTtcbiAgICAgICAgdGhpcy5fZGVzdHJveWVkRXZlbnQkLmNvbXBsZXRlKCk7XG4gICAgICB9KTtcblxuICAgIC8vIGlmIGFib3J0T24gd2FzIHBhc3NlZCwgd2UgYmluZCB0aGUgZXZlbnQgYW5kIGV4ZWN1dGUgY29tcGxldGVcbiAgICBpZiAob3B0cyAmJiBvcHRzLmFib3J0T24pIHtcbiAgICAgIGNvbnN0IGFib3J0QXJyJDogU3ViamVjdDx2b2lkPltdID0gW107XG4gICAgICBvcHRzLmFib3J0T24uZm9yRWFjaCgoYWJvcnRPbjogSVRvdXJFdmVudE9uKSA9PiB7XG4gICAgICAgIGNvbnN0IGFib3J0RXZlbnQkOiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgICAgICAgYWJvcnRBcnIkLnB1c2goYWJvcnRFdmVudCQpO1xuICAgICAgICB0aGlzLl9iaW5kRXZlbnQoYWJvcnRPbiwgdW5kZWZpbmVkLCBhYm9ydEV2ZW50JCwgdGhpcy5fZGVzdHJveWVkRXZlbnQkKTtcbiAgICAgIH0pO1xuXG4gICAgICBjb25zdCBhYm9ydFN1YnM6IFN1YnNjcmlwdGlvbiA9IG1lcmdlKC4uLmFib3J0QXJyJClcbiAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3llZEV2ZW50JCkpXG4gICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgIHRoaXMuc2hlcGhlcmRUb3VyLmNvbXBsZXRlKCk7XG4gICAgICAgICAgYWJvcnRTdWJzLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIGJhY2soKTogdm9pZCB7XG4gICAgdGhpcy5zaGVwaGVyZFRvdXIuYmFjaygpO1xuICB9XG5cbiAgY2FuY2VsKCk6IHZvaWQge1xuICAgIHRoaXMuc2hlcGhlcmRUb3VyLmNhbmNlbCgpO1xuICB9XG5cbiAgbmV4dCgpOiB2b2lkIHtcbiAgICB0aGlzLnNoZXBoZXJkVG91ci5uZXh0KCk7XG4gIH1cblxuICBmaW5pc2goKTogdm9pZCB7XG4gICAgdGhpcy5zaGVwaGVyZFRvdXIuY29tcGxldGUoKTtcbiAgfVxuXG4gIGFkZFN0ZXBzKHN0ZXBzOiBJVG91clN0ZXBbXSk6IHZvaWQge1xuICAgIHRoaXMuc2hlcGhlcmRUb3VyLmFkZFN0ZXBzKHRoaXMuX3ByZXBhcmVUb3VyKHN0ZXBzKSk7XG4gIH1cblxuICBzdGFydCgpOiB2b2lkIHtcbiAgICB0aGlzLnNoZXBoZXJkVG91ci5zdGFydCgpO1xuICB9XG5cbiAgcHJvdGVjdGVkIF9wcmVwYXJlVG91cihcbiAgICBvcmlnaW5hbFN0ZXBzOiBJVG91clN0ZXBbXSxcbiAgICBmaW5pc2hMYWJlbCA9ICdmaW5pc2gnXG4gICk6IElUb3VyU3RlcFtdIHtcbiAgICAvLyBjcmVhdGUgU3ViamVjdHMgZm9yIGJhY2sgYW5kIGZvcndhcmQgZXZlbnRzXG4gICAgY29uc3QgYmFja0V2ZW50JDogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gICAgY29uc3QgZm9yd2FyZEV2ZW50JDogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gICAgbGV0IF9iYWNrRmxvdyA9IGZhbHNlO1xuICAgIC8vIGNyZWF0ZSBTdWJqZWN0IGZvciB5b3VyIGVuZFxuICAgIGNvbnN0IGRlc3Ryb3llZEV2ZW50JDogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gICAgLyoqXG4gICAgICogVGhpcyBmdW5jdGlvbiBhZGRzIHRoZSBzdGVwIHByb2dyZXNzIGluIHRoZSBmb290ZXIgb2YgdGhlIHNoZXBoZXJkIHRvb2x0aXBcbiAgICAgKi9cbiAgICBjb25zdCBhcHBlbmRQcm9ncmVzc0Z1bmMgPSBmdW5jdGlvbiAodGhpczogYW55KTogdm9pZCB7XG4gICAgICAvLyBnZXQgYWxsIHRoZSBmb290ZXJzIHRoYXQgYXJlIGF2YWlsYWJsZSBpbiB0aGUgRE9NXG4gICAgICBjb25zdCBmb290ZXJzOiBFbGVtZW50W10gPSBBcnJheS5mcm9tPEVsZW1lbnQ+KFxuICAgICAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcuc2hlcGhlcmQtZm9vdGVyJylcbiAgICAgICk7XG4gICAgICAvLyBnZXQgdGhlIGxhc3QgZm9vdGVyIHNpbmNlIFNoZXBoZXJkIGFsd2F5cyBwdXRzIHRoZSBhY3RpdmUgb25lIGF0IHRoZSBlbmRcbiAgICAgIGNvbnN0IGZvb3RlcjogRWxlbWVudCA9IGZvb3RlcnNbZm9vdGVycy5sZW5ndGggLSAxXTtcbiAgICAgIC8vIGdlbmVyYXRlIHN0ZXBzIGh0bWwgZWxlbWVudFxuICAgICAgY29uc3QgcHJvZ3Jlc3M6IEhUTUxTcGFuRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKTtcbiAgICAgIHByb2dyZXNzLmNsYXNzTmFtZSA9ICdzaGVwaGVyZC1wcm9ncmVzcyc7XG4gICAgICBwcm9ncmVzcy5pbm5lclRleHQgPSBgJHt0aGlzLnNoZXBoZXJkVG91ci5jdXJyZW50U3RlcC5vcHRpb25zLmNvdW50fS8ke3N0ZXBUb3RhbH1gO1xuICAgICAgLy8gaW5zZXJ0IGludG8gdGhlIGZvb3RlciBiZWZvcmUgdGhlIGZpcnN0IGJ1dHRvblxuICAgICAgZm9vdGVyLmluc2VydEJlZm9yZShwcm9ncmVzcywgZm9vdGVyLnF1ZXJ5U2VsZWN0b3IoJy5zaGVwaGVyZC1idXR0b24nKSk7XG4gICAgfTtcblxuICAgIGxldCBzdGVwVG90YWwgPSAwO1xuICAgIGNvbnN0IHN0ZXBzOiBJVG91clN0ZXBbXSA9IG9yaWdpbmFsU3RlcHMubWFwKChzdGVwOiBJVG91clN0ZXApID0+IHtcbiAgICAgIGxldCBzaG93UHJvZ3Jlc3M6ICgpID0+IHZvaWQgPSAoKSA9PiB7XG4gICAgICAgIC8vXG4gICAgICB9O1xuICAgICAgaWYgKHN0ZXAuYXR0YWNoVG9PcHRpb25zPy5za2lwRnJvbVN0ZXBDb3VudCA9PT0gdHJ1ZSkge1xuICAgICAgICBzaG93UHJvZ3Jlc3MgPSBmdW5jdGlvbiAoKTogdm9pZCB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9O1xuICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgc3RlcC5hdHRhY2hUb09wdGlvbnM/LnNraXBGcm9tU3RlcENvdW50ID09PSB1bmRlZmluZWQgfHxcbiAgICAgICAgc3RlcC5hdHRhY2hUb09wdGlvbnM/LnNraXBGcm9tU3RlcENvdW50ID09PSBmYWxzZVxuICAgICAgKSB7XG4gICAgICAgIHN0ZXAuY291bnQgPSArK3N0ZXBUb3RhbDtcbiAgICAgICAgc2hvd1Byb2dyZXNzID0gYXBwZW5kUHJvZ3Jlc3NGdW5jLmJpbmQodGhpcyk7XG4gICAgICB9XG4gICAgICByZXR1cm4gT2JqZWN0LmFzc2lnbih7fSwgc3RlcCwge1xuICAgICAgICB3aGVuOiB7XG4gICAgICAgICAgc2hvdzogc2hvd1Byb2dyZXNzLFxuICAgICAgICB9LFxuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBjb25zdCBmaW5pc2hCdXR0b246IFRvdXJTdGVwQnV0dG9uID0ge1xuICAgICAgdGV4dDogZmluaXNoTGFiZWwsXG4gICAgICBhY3Rpb246IHRoaXNbJ2ZpbmlzaCddLmJpbmQodGhpcyksXG4gICAgICBjbGFzc2VzOiBNQVRfQlVUVE9OLFxuICAgIH07XG5cbiAgICBjb25zdCB2b2lkQnV0dG9uOiBUb3VyU3RlcEJ1dHRvbiA9IHtcbiAgICAgIHRleHQ6ICcnLFxuICAgICAgYWN0aW9uKCk6IHZvaWQge1xuICAgICAgICByZXR1cm47XG4gICAgICB9LFxuICAgICAgY2xhc3NlczogTUFUX0JVVFRPTl9JTlZJU0lCTEUsXG4gICAgfTtcblxuICAgIC8vIGxpc3RlbiB0byB0aGUgZGVzdHJveWVkIGV2ZW50IHRvIGNsZWFuIHVwIGFsbCB0aGUgc3RyZWFtc1xuICAgIHRoaXMuX2Rlc3Ryb3llZEV2ZW50JC5waXBlKGZpcnN0KCkpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICBiYWNrRXZlbnQkLmNvbXBsZXRlKCk7XG4gICAgICBmb3J3YXJkRXZlbnQkLmNvbXBsZXRlKCk7XG4gICAgICBkZXN0cm95ZWRFdmVudCQubmV4dCgpO1xuICAgICAgZGVzdHJveWVkRXZlbnQkLmNvbXBsZXRlKCk7XG4gICAgfSk7XG5cbiAgICBjb25zdCB0b3RhbFN0ZXBzOiBudW1iZXIgPSBzdGVwcy5sZW5ndGg7XG4gICAgc3RlcHMuZm9yRWFjaCgoc3RlcDogSVRvdXJTdGVwLCBpbmRleDogbnVtYmVyKSA9PiB7XG4gICAgICAvLyBjcmVhdGUgYnV0dG9ucyBzcGVjaWZpYyBmb3IgdGhlIHN0ZXBcbiAgICAgIC8vIHRoaXMgaXMgZG9uZSB0byBjcmVhdGUgbW9yZSBjb250cm9sIG9uIGV2ZW50c1xuICAgICAgY29uc3QgbmV4dEJ1dHRvbjogVG91clN0ZXBCdXR0b24gPSB7XG4gICAgICAgIHRleHQ6ICdjaGV2cm9uX3JpZ2h0JyxcbiAgICAgICAgYWN0aW9uOiAoKSA9PiB7XG4gICAgICAgICAgLy8gaW50ZXJjZXB0IHRoZSBuZXh0IGFjdGlvbiBhbmQgdHJpZ2dlciBldmVudFxuICAgICAgICAgIGZvcndhcmRFdmVudCQubmV4dCgpO1xuICAgICAgICAgIHRoaXMuc2hlcGhlcmRUb3VyLm5leHQoKTtcbiAgICAgICAgfSxcbiAgICAgICAgY2xhc3NlczogTUFUX0lDT05fQlVUVE9OLFxuICAgICAgfTtcbiAgICAgIGNvbnN0IGJhY2tCdXR0b246IFRvdXJTdGVwQnV0dG9uID0ge1xuICAgICAgICB0ZXh0OiAnY2hldnJvbl9sZWZ0JyxcbiAgICAgICAgYWN0aW9uOiAoKSA9PiB7XG4gICAgICAgICAgLy8gaW50ZXJjZXB0IHRoZSBiYWNrIGFjdGlvbiBhbmQgdHJpZ2dlciBldmVudFxuICAgICAgICAgIGJhY2tFdmVudCQubmV4dCgpO1xuICAgICAgICAgIF9iYWNrRmxvdyA9IHRydWU7XG4gICAgICAgICAgLy8gY2hlY2sgaWYgJ2dvQmFja1RvJyBpcyBzZXQgdG8ganVtcCB0byBhIHBhcnRpY3VsYXIgc3RlcCwgZWxzZSBqdXN0IGdvIGJhY2tcbiAgICAgICAgICBpZiAoc3RlcC5hdHRhY2hUb09wdGlvbnMgJiYgc3RlcC5hdHRhY2hUb09wdGlvbnMuZ29CYWNrVG8pIHtcbiAgICAgICAgICAgIHRoaXMuc2hlcGhlcmRUb3VyLnNob3coc3RlcC5hdHRhY2hUb09wdGlvbnMuZ29CYWNrVG8sIGZhbHNlKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5zaGVwaGVyZFRvdXIuYmFjaygpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgY2xhc3NlczpcbiAgICAgICAgICBzdGVwLmFkdmFuY2VPbk9wdGlvbnM/LmFsbG93R29CYWNrID09PSBmYWxzZVxuICAgICAgICAgICAgPyBNQVRfQlVUVE9OX0lOVklTSUJMRVxuICAgICAgICAgICAgOiBNQVRfSUNPTl9CVVRUT04sXG4gICAgICB9O1xuXG4gICAgICAvLyBjaGVjayBpZiBoaWdobGlnaHQgd2FzIHByb3ZpZGVkIGZvciB0aGUgc3RlcCwgZWxzZSBmYWxsYmFjayBpbnRvIHNoZXBoZXJkcyB1c2FnZVxuICAgICAgc3RlcC5oaWdobGlnaHRDbGFzcyA9XG4gICAgICAgIHN0ZXAuYXR0YWNoVG9PcHRpb25zICYmIHN0ZXAuYXR0YWNoVG9PcHRpb25zLmhpZ2hsaWdodFxuICAgICAgICAgID8gJ3NoZXBoZXJkLWhpZ2hsaWdodCdcbiAgICAgICAgICA6IHN0ZXAuaGlnaGxpZ2h0Q2xhc3M7XG5cbiAgICAgIC8vIEFkZGluZyBidXR0b25zIGluIHRoZSBzdGVwcyBpZiBubyBidXR0b25zIGFyZSBkZWZpbmVkXG4gICAgICBpZiAoIXN0ZXAuYnV0dG9ucyB8fCBzdGVwLmJ1dHRvbnMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIGlmIChpbmRleCA9PT0gMCkge1xuICAgICAgICAgIC8vIGZpcnN0IHN0ZXBcbiAgICAgICAgICBzdGVwLmJ1dHRvbnMgPSBbbmV4dEJ1dHRvbl07XG4gICAgICAgIH0gZWxzZSBpZiAoaW5kZXggPT09IHRvdGFsU3RlcHMgLSAxKSB7XG4gICAgICAgICAgLy8gbGFzdCBzdGVwXG4gICAgICAgICAgc3RlcC5idXR0b25zID0gW2JhY2tCdXR0b24sIGZpbmlzaEJ1dHRvbl07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgc3RlcC5idXR0b25zID0gW2JhY2tCdXR0b24sIG5leHRCdXR0b25dO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8vIGNoZWNrcyBcImFkdmFuY2VPblwiIHRvIG92ZXJyaWRlIGxpc3RlbmVyc1xuICAgICAgbGV0IGFkdmFuY2VPbjogSVRvdXJFdmVudE9uW10gfCBJVG91ckV2ZW50T24gPSBzdGVwLmFkdmFuY2VPbjtcbiAgICAgIC8vIHJlbW92ZSB0aGUgc2hlcGhlcmQgXCJhZHZhbmNlT25cIiBpbmZhdm9yIG9mIG91cnMgaWYgdGhlIGV2ZW50IGlzIHBhcnQgb2Ygb3VyIGxpc3RcbiAgICAgIGlmIChcbiAgICAgICAgKHR5cGVvZiBhZHZhbmNlT24gPT09ICdvYmplY3QnICYmXG4gICAgICAgICAgIUFycmF5LmlzQXJyYXkoYWR2YW5jZU9uKSAmJlxuICAgICAgICAgIGFkdmFuY2VPbi5ldmVudCAmJlxuICAgICAgICAgIG92ZXJyaWRkZW5FdmVudHMuaW5kZXhPZihhZHZhbmNlT24uZXZlbnQuc3BsaXQoJy4nKVswXSkgPiAtMSkgfHxcbiAgICAgICAgYWR2YW5jZU9uIGluc3RhbmNlb2YgQXJyYXlcbiAgICAgICkge1xuICAgICAgICBzdGVwLmFkdmFuY2VPbiA9IHVuZGVmaW5lZDtcbiAgICAgICAgc3RlcC5idXR0b25zID1cbiAgICAgICAgICBzdGVwLmFkdmFuY2VPbk9wdGlvbnMgJiYgc3RlcC5hZHZhbmNlT25PcHRpb25zLmFsbG93R29CYWNrXG4gICAgICAgICAgICA/IFtiYWNrQnV0dG9uLCB2b2lkQnV0dG9uXVxuICAgICAgICAgICAgOiBbdm9pZEJ1dHRvbl07XG4gICAgICB9XG4gICAgICAvLyBhZGRzIGEgZGVmYXVsdCBiZWZvcmVTaG93UHJvbWlzZSBmdW5jdGlvblxuICAgICAgc3RlcC5iZWZvcmVTaG93UHJvbWlzZSA9ICgpID0+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlOiAodmFsdWU/OiBhbnkpID0+IHZvaWQpID0+IHtcbiAgICAgICAgICBjb25zdCBhZGRpdGlvbmFsQ2FwYWJpbGl0aWVzU2V0dXA6ICgpID0+IHZvaWQgPSAoKSA9PiB7XG4gICAgICAgICAgICBpZiAoYWR2YW5jZU9uICYmICFzdGVwLmFkdmFuY2VPbikge1xuICAgICAgICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkoYWR2YW5jZU9uKSkge1xuICAgICAgICAgICAgICAgIGFkdmFuY2VPbiA9IFthZHZhbmNlT25dO1xuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgY29uc3QgYWR2YW5jZUFyciQ6IFN1YmplY3Q8dm9pZD5bXSA9IFtdO1xuICAgICAgICAgICAgICBhZHZhbmNlT24uZm9yRWFjaCgoXzogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgYWR2YW5jZUV2ZW50JDogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gICAgICAgICAgICAgICAgYWR2YW5jZUFyciQucHVzaChhZHZhbmNlRXZlbnQkKTtcblxuICAgICAgICAgICAgICAgIC8vIHdlIHN0YXJ0IGEgdGltZXIgb2YgYXR0ZW1wdHMgdG8gZmluZCBhbiBlbGVtZW50IGluIHRoZSBkb21cbiAgICAgICAgICAgICAgICB0aGlzLl9iaW5kRXZlbnQoXG4gICAgICAgICAgICAgICAgICBfLFxuICAgICAgICAgICAgICAgICAgc3RlcC5hZHZhbmNlT25PcHRpb25zLFxuICAgICAgICAgICAgICAgICAgYWR2YW5jZUV2ZW50JCxcbiAgICAgICAgICAgICAgICAgIGRlc3Ryb3llZEV2ZW50JFxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICBjb25zdCBhZHZhbmNlU3ViczogU3Vic2NyaXB0aW9uID0gZm9ya0pvaW4oLi4uYWR2YW5jZUFyciQpXG4gICAgICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsKG1lcmdlKGRlc3Ryb3llZEV2ZW50JCwgYmFja0V2ZW50JCkpKVxuICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgLy8gY2hlY2sgaWYgd2UgbmVlZCB0byBhZHZhbmNlIHRvIGEgc3BlY2lmaWMgc3RlcCwgZWxzZSBhZHZhbmNlIHRvIG5leHQgc3RlcFxuICAgICAgICAgICAgICAgICAgaWYgKHN0ZXAuYWR2YW5jZU9uT3B0aW9ucyAmJiBzdGVwLmFkdmFuY2VPbk9wdGlvbnMuanVtcFRvKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2hlcGhlcmRUb3VyLnNob3coc3RlcC5hZHZhbmNlT25PcHRpb25zLmp1bXBUbyk7XG4gICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNoZXBoZXJkVG91ci5uZXh0KCk7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICBmb3J3YXJkRXZlbnQkLm5leHQoKTtcbiAgICAgICAgICAgICAgICAgIGFkdmFuY2VTdWJzLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIGlmIGFib3J0T24gd2FzIHBhc3NlZCBvbiB0aGUgc3RlcCwgd2UgYmluZCB0aGUgZXZlbnQgYW5kIGV4ZWN1dGUgY29tcGxldGVcbiAgICAgICAgICAgIGlmIChzdGVwLmFib3J0T24pIHtcbiAgICAgICAgICAgICAgY29uc3QgYWJvcnRBcnIkOiBTdWJqZWN0PHZvaWQ+W10gPSBbXTtcbiAgICAgICAgICAgICAgc3RlcC5hYm9ydE9uLmZvckVhY2goKGFib3J0T246IElUb3VyRXZlbnRPbikgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGFib3J0RXZlbnQkOiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgICAgICAgICAgICAgICBhYm9ydEFyciQucHVzaChhYm9ydEV2ZW50JCk7XG4gICAgICAgICAgICAgICAgdGhpcy5fYmluZEV2ZW50KFxuICAgICAgICAgICAgICAgICAgYWJvcnRPbixcbiAgICAgICAgICAgICAgICAgIHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgIGFib3J0RXZlbnQkLFxuICAgICAgICAgICAgICAgICAgZGVzdHJveWVkRXZlbnQkXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgY29uc3QgYWJvcnRTdWJzOiBTdWJzY3JpcHRpb24gPSBtZXJnZSguLi5hYm9ydEFyciQpXG4gICAgICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgICB0YWtlVW50aWwobWVyZ2UoZGVzdHJveWVkRXZlbnQkLCBiYWNrRXZlbnQkLCBmb3J3YXJkRXZlbnQkKSlcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICB0aGlzLnNoZXBoZXJkVG91ci5jb21wbGV0ZSgpO1xuICAgICAgICAgICAgICAgICAgYWJvcnRTdWJzLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfTtcblxuICAgICAgICAgIGNvbnN0IF9zdG9wVGltZXIkOiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgICAgICAgICBjb25zdCBfcmV0cmllc1JlYWNoZWQkOiBTdWJqZWN0PG51bWJlcj4gPSBuZXcgU3ViamVjdDxudW1iZXI+KCk7XG4gICAgICAgICAgY29uc3QgX3JldHJ5QXR0ZW1wdHMkOiBCZWhhdmlvclN1YmplY3Q8bnVtYmVyPiA9XG4gICAgICAgICAgICBuZXcgQmVoYXZpb3JTdWJqZWN0PG51bWJlcj4oLTEpO1xuXG4gICAgICAgICAgbGV0IGlkOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgICAgICAgLy8gY2hlY2tzIGlmIFwiYXR0YWNoVG9cIiBpcyBhIHN0cmluZyBvciBhbiBvYmplY3QgdG8gZ2V0IHRoZSBpZCBvZiBhbiBlbGVtZW50XG4gICAgICAgICAgaWYgKHR5cGVvZiBzdGVwLmF0dGFjaFRvID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgaWQgPSBzdGVwLmF0dGFjaFRvO1xuICAgICAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgICAgICB0eXBlb2Ygc3RlcC5hdHRhY2hUbyA9PT0gJ29iamVjdCcgJiZcbiAgICAgICAgICAgIHR5cGVvZiBzdGVwLmF0dGFjaFRvLmVsZW1lbnQgPT09ICdzdHJpbmcnXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICBpZCA9IHN0ZXAuYXR0YWNoVG8uZWxlbWVudDtcbiAgICAgICAgICB9XG4gICAgICAgICAgLy8gaWYgd2UgaGF2ZSBhbiBpZCBhcyBhIHN0cmluZyBpbiBlaXRoZXIgY2FzZSwgd2UgdXNlIGl0ICh3ZSBpZ25vcmUgaXQgaWYgaXRzIEhUTUxFbGVtZW50KVxuICAgICAgICAgIGlmIChpZCkge1xuICAgICAgICAgICAgLy8gaWYgY3VycmVudCBzdGVwIGlzIHRoZSBmaXJzdCBzdGVwIG9mIHRoZSB0b3VyLCB3ZSBzZXQgdGhlIGJ1dHRvbnMgdG8gYmUgb25seSBcIm5leHRcIlxuICAgICAgICAgICAgLy8gd2UgaGFkIHRvIHVzZSBgYW55YCBzaW5jZSB0aGUgdG91ciBkb2VzbnQgZXhwb3NlIHRoZSBzdGVwcyBpbiBhbnkgZmFzaGlvbiBub3IgYSB3YXkgdG8gY2hlY2sgaWYgd2UgaGF2ZSBtb2RpZmllZCB0aGVtIGF0IGFsbFxuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICB0aGlzLnNoZXBoZXJkVG91ci5nZXRDdXJyZW50U3RlcCgpID09PVxuICAgICAgICAgICAgICAoPGFueT50aGlzLnNoZXBoZXJkVG91cikuc3RlcHNbMF1cbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICB0aGlzLnNoZXBoZXJkVG91ci5nZXRDdXJyZW50U3RlcCgpPy51cGRhdGVTdGVwT3B0aW9ucyh7XG4gICAgICAgICAgICAgICAgYnV0dG9uczogb3JpZ2luYWxTdGVwc1tpbmRleF0uYWR2YW5jZU9uXG4gICAgICAgICAgICAgICAgICA/IFt2b2lkQnV0dG9uXVxuICAgICAgICAgICAgICAgICAgOiBbbmV4dEJ1dHRvbl0sXG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gcmVnaXN0ZXIgdG8gdGhlIGF0dGVtcHRzIG9ic2VydmFibGUgdG8gbm90aWZ5IGRlZXZlbG9wZXIgd2hlbiBudW1iZXIgaGFzIGJlZW4gcmVhY2hlZFxuICAgICAgICAgICAgX3JldHJ5QXR0ZW1wdHMkXG4gICAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIHNraXAoMSksXG4gICAgICAgICAgICAgICAgc2tpcFdoaWxlKCh2YWw6IG51bWJlcikgPT4ge1xuICAgICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICBzdGVwLmF0dGFjaFRvT3B0aW9ucyAmJlxuICAgICAgICAgICAgICAgICAgICBzdGVwLmF0dGFjaFRvT3B0aW9ucy5yZXRyaWVzICE9PSB1bmRlZmluZWRcbiAgICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdmFsIDwgc3RlcC5hdHRhY2hUb09wdGlvbnMucmV0cmllcztcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIHJldHVybiB2YWwgPCBTSEVQSEVSRF9ERUZBVUxUX0ZJTkRfQVRURU1QVFM7XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgdGFrZVVudGlsKG1lcmdlKF9zdG9wVGltZXIkLmFzT2JzZXJ2YWJsZSgpLCBkZXN0cm95ZWRFdmVudCQpKVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIC5zdWJzY3JpYmUoKGF0dGVtcHRzOiBudW1iZXIpID0+IHtcbiAgICAgICAgICAgICAgICBfcmV0cmllc1JlYWNoZWQkLm5leHQoMSk7XG4gICAgICAgICAgICAgICAgX3JldHJpZXNSZWFjaGVkJC5jb21wbGV0ZSgpO1xuICAgICAgICAgICAgICAgIC8vIGlmIGF0dGVtcHRzIGhhdmUgYmVlbiByZWFjaGVkLCB3ZSBjaGVjayBcInNraXBJZk5vdEZvdW5kXCIgdG8gbW92ZSBvbiB0byB0aGUgbmV4dCBzdGVwXG4gICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgc3RlcC5hdHRhY2hUb09wdGlvbnMgJiZcbiAgICAgICAgICAgICAgICAgIHN0ZXAuYXR0YWNoVG9PcHRpb25zLnNraXBJZk5vdEZvdW5kXG4gICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAvLyBpZiB3ZSBnZXQgdG8gdGhpcyBzdGVwIGNvbWluZyBiYWNrIGZyb20gYSBzdGVwIGFuZCBpdCB3YXNudCBmb3VuZFxuICAgICAgICAgICAgICAgICAgLy8gdGhlbiB3ZSBlaXRoZXIgY2hlY2sgaWYgaXRzIHRoZSBmaXJzdCBzdGVwIGFuZCB0cnkgZ29pbmcgZm9yd2FyZFxuICAgICAgICAgICAgICAgICAgLy8gb3Igd2Uga2VlcCBnb2luZyBiYWNrIHVudGlsIHdlIGZpbmQgYSBzdGVwIHRoYXQgYWN0dWFsbHkgZXhpc3RzXG4gICAgICAgICAgICAgICAgICBpZiAoX2JhY2tGbG93KSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgICAoPGFueT50aGlzLnNoZXBoZXJkVG91cikuc3RlcHMuaW5kZXhPZihcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2hlcGhlcmRUb3VyLmdldEN1cnJlbnRTdGVwKClcbiAgICAgICAgICAgICAgICAgICAgICApID09PSAwXG4gICAgICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2hlcGhlcmRUb3VyLm5leHQoKTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNoZXBoZXJkVG91ci5iYWNrKCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgX2JhY2tGbG93ID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAvLyBkZXN0cm95cyBjdXJyZW50IHN0ZXAgaWYgd2UgbmVlZCB0byBza2lwIGl0IHRvIHJlbW92ZSBpdCBmcm9tIHRoZSB0b3VyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRTdGVwID0gdGhpcy5zaGVwaGVyZFRvdXIuZ2V0Q3VycmVudFN0ZXAoKTtcbiAgICAgICAgICAgICAgICAgICAgY3VycmVudFN0ZXA/LmRlc3Ryb3koKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zaGVwaGVyZFRvdXIubmV4dCgpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNoZXBoZXJkVG91ci5yZW1vdmVTdGVwKGN1cnJlbnRTdGVwPy5pZCA/PyAnJyk7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChzdGVwLmF0dGFjaFRvT3B0aW9ucyAmJiBzdGVwLmF0dGFjaFRvT3B0aW9ucy5lbHNlKSB7XG4gICAgICAgICAgICAgICAgICAvLyBpZiBcInNraXBJZk5vdEZvdW5kXCIgaXMgbm90IHRydWUsIHRoZW4gd2UgY2hlY2sgaWYgXCJlbHNlXCIgaGFzIGJlZW4gc2V0IHRvIGp1bXAgdG8gYSBzcGVjaWZpYyBzdGVwXG4gICAgICAgICAgICAgICAgICB0aGlzLnNoZXBoZXJkVG91ci5zaG93KHN0ZXAuYXR0YWNoVG9PcHRpb25zLmVsc2UpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bm8tY29uc29sZVxuICAgICAgICAgICAgICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICAgICAgICAgICAgICBgUmV0cmllcyByZWFjaGVkIHRyeWluZyB0byBmaW5kICR7aWR9LiBSZXRyaWVkICAke2F0dGVtcHRzfSB0aW1lcy5gXG4gICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgLy8gZWxzZSB3ZSBzaG93IHRoZSBzdGVwIHJlZ2FyZGxlc3NcbiAgICAgICAgICAgICAgICAgIHJlc29sdmUoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAvLyB3ZSBzdGFydCBhIHRpbWVyIG9mIGF0dGVtcHRzIHRvIGZpbmQgYW4gZWxlbWVudCBpbiB0aGUgZG9tXG4gICAgICAgICAgICB0aW1lcihcbiAgICAgICAgICAgICAgKHN0ZXAuYXR0YWNoVG9PcHRpb25zICYmIHN0ZXAuYXR0YWNoVG9PcHRpb25zLnRpbWVCZWZvcmVTaG93KSB8fFxuICAgICAgICAgICAgICAgIFNIRVBIRVJEX0RFRkFVTFRfRklORF9USU1FX0JFRk9SRV9TSE9XLFxuICAgICAgICAgICAgICAoc3RlcC5hdHRhY2hUb09wdGlvbnMgJiYgc3RlcC5hdHRhY2hUb09wdGlvbnMuaW50ZXJ2YWwpIHx8XG4gICAgICAgICAgICAgICAgU0hFUEhFUkRfREVGQVVMVF9GSU5EX0lOVEVSVkFMXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIC8vIHRoZSB0aW1lciB3aWxsIGNvbnRpbnVlIGVpdGhlciB1bnRpbCB3ZSBmaW5kIHRoZSBlbGVtZW50IG9yIHRoZSBudW1iZXIgb2YgYXR0ZW1wdHMgaGFzIGJlZW4gcmVhY2hlZFxuICAgICAgICAgICAgICAgIHRha2VVbnRpbChtZXJnZShfc3RvcFRpbWVyJCwgX3JldHJpZXNSZWFjaGVkJCwgZGVzdHJveWVkRXZlbnQkKSlcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBlbGVtZW50ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihpZCA/PyAnJyk7XG4gICAgICAgICAgICAgICAgLy8gaWYgdGhlIGVsZW1lbnQgaGFzIGJlZW4gZm91bmQsIHdlIHN0b3AgdGhlIHRpbWVyIGFuZCByZXNvbHZlIHRoZSBwcm9taXNlXG4gICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQpIHtcbiAgICAgICAgICAgICAgICAgIF9zdG9wVGltZXIkLm5leHQoKTtcbiAgICAgICAgICAgICAgICAgIF9zdG9wVGltZXIkLmNvbXBsZXRlKCk7XG4gICAgICAgICAgICAgICAgICBhZGRpdGlvbmFsQ2FwYWJpbGl0aWVzU2V0dXAoKTtcbiAgICAgICAgICAgICAgICAgIHJlc29sdmUoKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgX3JldHJ5QXR0ZW1wdHMkLm5leHQoX3JldHJ5QXR0ZW1wdHMkLnZhbHVlICsgMSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgLy8gc3RvcCBmaW5kIGludGVydmFsIGlmIHVzZXIgc3RvcHMgdGhlIHRvdXJcbiAgICAgICAgICAgIGRlc3Ryb3llZEV2ZW50JC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICBfc3RvcFRpbWVyJC5uZXh0KCk7XG4gICAgICAgICAgICAgIF9zdG9wVGltZXIkLmNvbXBsZXRlKCk7XG4gICAgICAgICAgICAgIF9yZXRyaWVzUmVhY2hlZCQubmV4dCgxKTtcbiAgICAgICAgICAgICAgX3JldHJpZXNSZWFjaGVkJC5jb21wbGV0ZSgpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIHJlc29sdmUgb2JzZXJ2YWJsZSB1bnRpbCB0aGUgdGltZUJlZm9yZVNob3cgaGFzIHBhc3NzZWQgb3IgdXNlIGRlZmF1bHRcbiAgICAgICAgICAgIHRpbWVyKFxuICAgICAgICAgICAgICAoc3RlcC5hdHRhY2hUb09wdGlvbnMgJiYgc3RlcC5hdHRhY2hUb09wdGlvbnMudGltZUJlZm9yZVNob3cpIHx8XG4gICAgICAgICAgICAgICAgU0hFUEhFUkRfREVGQVVMVF9GSU5EX1RJTUVfQkVGT1JFX1NIT1dcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsKG1lcmdlKGRlc3Ryb3llZEV2ZW50JCkpKVxuICAgICAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICByZXNvbHZlKCk7XG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9O1xuICAgIH0pO1xuICAgIHJldHVybiBzdGVwcztcbiAgfVxuXG4gIHByaXZhdGUgX2JpbmRFdmVudChcbiAgICBldmVudE9uOiBJVG91ckV2ZW50T24sXG4gICAgZXZlbnRPbk9wdGlvbnM6IElUb3VyRXZlbnRPbk9wdGlvbnMgfCB1bmRlZmluZWQsXG4gICAgZXZlbnQkOiBTdWJqZWN0PHZvaWQ+LFxuICAgIGRlc3Ryb3llZEV2ZW50JDogU3ViamVjdDx2b2lkPlxuICApOiB2b2lkIHtcbiAgICBjb25zdCBzZWxlY3RvciA9IGV2ZW50T24uc2VsZWN0b3IgPz8gJyc7XG4gICAgY29uc3QgZXZlbnQgPSBldmVudE9uLmV2ZW50O1xuICAgIC8vIHdlIHN0YXJ0IGEgdGltZXIgb2YgYXR0ZW1wdHMgdG8gZmluZCBhbiBlbGVtZW50IGluIHRoZSBkb21cbiAgICBjb25zdCB0aW1lclN1YnM6IFN1YnNjcmlwdGlvbiA9IHRpbWVyKFxuICAgICAgKGV2ZW50T25PcHRpb25zICYmIGV2ZW50T25PcHRpb25zLnRpbWVCZWZvcmVTaG93KSB8fFxuICAgICAgICBTSEVQSEVSRF9ERUZBVUxUX0ZJTkRfVElNRV9CRUZPUkVfU0hPVyxcbiAgICAgIChldmVudE9uT3B0aW9ucyAmJiBldmVudE9uT3B0aW9ucy5pbnRlcnZhbCkgfHxcbiAgICAgICAgU0hFUEhFUkRfREVGQVVMVF9GSU5EX0lOVEVSVkFMXG4gICAgKVxuICAgICAgLnBpcGUodGFrZVVudGlsKGRlc3Ryb3llZEV2ZW50JCkpXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgY29uc3QgZWxlbWVudCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3Ioc2VsZWN0b3IpO1xuICAgICAgICAvLyBpZiB0aGUgZWxlbWVudCBoYXMgYmVlbiBmb3VuZCwgd2Ugc3RvcCB0aGUgdGltZXIgYW5kIHJlc29sdmUgdGhlIHByb21pc2VcbiAgICAgICAgaWYgKGVsZW1lbnQpIHtcbiAgICAgICAgICB0aW1lclN1YnMudW5zdWJzY3JpYmUoKTtcblxuICAgICAgICAgIGlmIChldmVudCA9PT0gSVRvdXJFdmVudC5hZGRlZCkge1xuICAgICAgICAgICAgLy8gaWYgZXZlbnQgaXMgXCJBZGRlZFwiIHRyaWdnZXIgYSBzb29uIGFzIHRoaXMgaXMgYXR0YWNoZWQuXG4gICAgICAgICAgICBldmVudCQubmV4dCgpO1xuICAgICAgICAgICAgZXZlbnQkLmNvbXBsZXRlKCk7XG4gICAgICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgICAgIGV2ZW50ID09PSBJVG91ckV2ZW50LmNsaWNrIHx8XG4gICAgICAgICAgICBldmVudCA9PT0gSVRvdXJFdmVudC5wb2ludGVyb3ZlciB8fFxuICAgICAgICAgICAgKGV2ZW50ICYmIGV2ZW50LmluZGV4T2YoSVRvdXJFdmVudC5rZXl1cCkgPiAtMSlcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIC8vIHdlIHVzZSBub3JtYWwgbGlzdGVuZXJzIGZvciBtb3VzZWV2ZW50c1xuICAgICAgICAgICAgY29uc3QgbWFpbkV2ZW50ID0gZXZlbnQ/LnNwbGl0KCcuJylbMF07XG4gICAgICAgICAgICBjb25zdCBzdWJFdmVudCA9IGV2ZW50Py5zcGxpdCgnLicpWzFdO1xuICAgICAgICAgICAgZnJvbUV2ZW50KGVsZW1lbnQsIG1haW5FdmVudClcbiAgICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgZmlsdGVyKCgkZXZlbnQ6IEV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgICAvLyBvbmx5IHRyaWdnZXIgaWYgdGhlIGV2ZW50IGlzIGEga2V5Ym9hcmQgZXZlbnQgYW5kIHBhcnQgb2Ygb3V0IGxpc3RcbiAgICAgICAgICAgICAgICAgIGlmICgkZXZlbnQgaW5zdGFuY2VvZiBLZXlib2FyZEV2ZW50KSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChrZXlFdmVudHMuZ2V0KCRldmVudC5rZXlDb2RlKSA9PT0gc3ViRXZlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICB0YWtlVW50aWwobWVyZ2UoZXZlbnQkLmFzT2JzZXJ2YWJsZSgpLCBkZXN0cm95ZWRFdmVudCQpKVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgIGV2ZW50JC5uZXh0KCk7XG4gICAgICAgICAgICAgICAgZXZlbnQkLmNvbXBsZXRlKCk7XG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0gZWxzZSBpZiAoZXZlbnQgPT09IElUb3VyRXZlbnQucmVtb3ZlZCkge1xuICAgICAgICAgICAgLy8gYW5kIHdlIHdpbGwgdXNlIE11dGF0aW9uT2JzZXJ2ZXIgZm9yIERPTSBldmVudHNcbiAgICAgICAgICAgIGNvbnN0IG9ic2VydmVyOiBNdXRhdGlvbk9ic2VydmVyID0gbmV3IE11dGF0aW9uT2JzZXJ2ZXIoKCkgPT4ge1xuICAgICAgICAgICAgICBpZiAoIWRvY3VtZW50LmJvZHkuY29udGFpbnMoZWxlbWVudCkpIHtcbiAgICAgICAgICAgICAgICBldmVudCQubmV4dCgpO1xuICAgICAgICAgICAgICAgIGV2ZW50JC5jb21wbGV0ZSgpO1xuICAgICAgICAgICAgICAgIG9ic2VydmVyLmRpc2Nvbm5lY3QoKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIC8vIHN0b3AgbGlzdGVuaW5pbmcgaWYgdG91ciBpcyBjbG9zZWRcbiAgICAgICAgICAgIGRlc3Ryb3llZEV2ZW50JC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICBvYnNlcnZlci5kaXNjb25uZWN0KCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIC8vIG9ic2VydmUgZm9yIGFueSBET00gaW50ZXJhY3Rpb24gaW4gdGhlIGVsZW1lbnRcbiAgICAgICAgICAgIG9ic2VydmVyLm9ic2VydmUoZWxlbWVudCwge1xuICAgICAgICAgICAgICBjaGlsZExpc3Q6IHRydWUsXG4gICAgICAgICAgICAgIHN1YnRyZWU6IHRydWUsXG4gICAgICAgICAgICAgIGF0dHJpYnV0ZXM6IHRydWUsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICB9XG59XG4iXX0=","import { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { Router, ActivatedRoute, NavigationStart, } from '@angular/router';\nimport { tap, map, filter } from 'rxjs/operators';\nimport { fromEvent } from 'rxjs';\nimport { debounceTime } from 'rxjs/operators';\nimport { CovalentGuidedTour, } from './guided.tour';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@angular/router\";\nimport * as i2 from \"@angular/common/http\";\n/**\n * Router enabled Shepherd tour\n */\nexport var TourEvents;\n(function (TourEvents) {\n TourEvents[\"complete\"] = \"complete\";\n TourEvents[\"cancel\"] = \"cancel\";\n TourEvents[\"hide\"] = \"hide\";\n TourEvents[\"show\"] = \"show\";\n TourEvents[\"start\"] = \"start\";\n TourEvents[\"active\"] = \"active\";\n TourEvents[\"inactive\"] = \"inactive\";\n})(TourEvents || (TourEvents = {}));\nexport class CovalentGuidedTourService extends CovalentGuidedTour {\n _router;\n _route;\n _httpClient;\n _toursMap = new Map();\n _tourStepURLs = new Map();\n constructor(_router, _route, _httpClient) {\n super();\n this._router = _router;\n this._route = _route;\n this._httpClient = _httpClient;\n _router.events\n .pipe(filter((event) => event instanceof NavigationStart &&\n event.navigationTrigger === 'popstate'))\n .subscribe(() => {\n if (this.shepherdTour.isActive()) {\n this.shepherdTour.cancel();\n }\n });\n }\n tourEvent$(str) {\n return fromEvent(this.shepherdTour, str);\n }\n async registerTour(tourName, tour) {\n const guidedTour = typeof tour === 'string' ? await this._loadTour(tour) : tour;\n this._toursMap.set(tourName, guidedTour);\n }\n startTour(tourName) {\n const guidedTour = this._getTour(tourName);\n this.finish();\n if (guidedTour && guidedTour.steps && guidedTour.steps.length) {\n // remove steps from tour since we need to preprocess them first\n this.newTour(Object.assign({}, guidedTour, { steps: undefined }));\n const tourInstance = this.shepherdTour.addSteps(this._configureRoutesForSteps(this._prepareTour(guidedTour.steps, guidedTour.finishButtonText)));\n // init route transition if step URL is different then the current location.\n this.tourEvent$(TourEvents.show).subscribe((tourEvent) => {\n const currentURL = this._router.url.split(/[?#]/)[0];\n const { step: { id, options }, } = tourEvent;\n if (this._tourStepURLs.has(id)) {\n const stepRoute = this._tourStepURLs.get(id);\n if (stepRoute !== currentURL) {\n this._router.navigate([stepRoute]);\n }\n }\n else {\n if (options && options.routing) {\n this._tourStepURLs.set(id, options.routing.route);\n }\n else {\n this._tourStepURLs.set(id, currentURL);\n }\n }\n });\n this.start();\n return tourInstance;\n }\n else {\n // tslint:disable-next-line:no-console\n console.warn(`Tour ${tourName} does not exist. Please try another tour.`);\n return undefined;\n }\n }\n // Finds the right registered tour by using queryParams\n // finishes any other tour and starts the new one.\n initializeOnQueryParams(queryParam = 'tour') {\n return this._route.queryParamMap.pipe(debounceTime(100), tap((params) => {\n const tourParam = params.get(queryParam);\n if (tourParam) {\n this.startTour(tourParam);\n // get current search parameters\n const searchParams = new URLSearchParams(window.location.search);\n // delete tour queryParam\n searchParams.delete(queryParam);\n // build new URL string without it\n let url = window.location.protocol +\n '//' +\n window.location.host +\n window.location.pathname;\n if (searchParams.toString()) {\n url += '?' + searchParams.toString();\n }\n // replace state in history without triggering a navigation\n window.history.replaceState({ path: url }, '', url);\n }\n }));\n }\n setNextBtnDisability(stepId, isDisabled) {\n if (this.shepherdTour.getById(stepId)) {\n const stepOptions = this.shepherdTour.getById(stepId)\n .options;\n stepOptions.buttons?.forEach((button) => {\n if (button.text === 'chevron_right') {\n button.disabled = isDisabled;\n }\n });\n this.shepherdTour.getById(stepId)?.updateStepOptions(stepOptions);\n }\n }\n async _loadTour(tourUrl) {\n const request = this._httpClient.get(tourUrl);\n try {\n return await request\n .pipe(map((resultSet) => {\n return JSON.parse(JSON.stringify(resultSet));\n }))\n .toPromise();\n }\n catch {\n return undefined;\n }\n }\n _getTour(key) {\n return this._toursMap.get(key);\n }\n _configureRoutesForSteps(routedSteps) {\n routedSteps.forEach((step) => {\n if (step.routing) {\n const route = step.routing.route;\n // if there is a beforeShowPromise, then we save it and call it after the navigation\n if (step.beforeShowPromise) {\n const beforeShowPromise = step.beforeShowPromise;\n step.beforeShowPromise = () => {\n return this._router\n .navigate([route], step.routing?.extras)\n .then(() => {\n return beforeShowPromise();\n });\n };\n }\n else {\n step.beforeShowPromise = () => this._router.navigate([route]);\n }\n }\n });\n return routedSteps;\n }\n static ɵfac = function CovalentGuidedTourService_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || CovalentGuidedTourService)(i0.ɵɵinject(i1.Router), i0.ɵɵinject(i1.ActivatedRoute), i0.ɵɵinject(i2.HttpClient)); };\n static ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: CovalentGuidedTourService, factory: CovalentGuidedTourService.ɵfac });\n}\n(() => { (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(CovalentGuidedTourService, [{\n type: Injectable\n }], () => [{ type: i1.Router }, { type: i1.ActivatedRoute }, { type: i2.HttpClient }], null); })();\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3VpZGVkLXRvdXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci1ndWlkZWQtdG91ci9zcmMvbGliL2d1aWRlZC10b3VyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbEQsT0FBTyxFQUNMLE1BQU0sRUFDTixjQUFjLEVBR2QsZUFBZSxHQUVoQixNQUFNLGlCQUFpQixDQUFDO0FBRXpCLE9BQU8sRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2xELE9BQU8sRUFBYyxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDN0MsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzlDLE9BQU8sRUFDTCxrQkFBa0IsR0FJbkIsTUFBTSxlQUFlLENBQUM7Ozs7QUFjdkI7O0dBRUc7QUFDSCxNQUFNLENBQU4sSUFBWSxVQVFYO0FBUkQsV0FBWSxVQUFVO0lBQ3BCLG1DQUFxQixDQUFBO0lBQ3JCLCtCQUFpQixDQUFBO0lBQ2pCLDJCQUFhLENBQUE7SUFDYiwyQkFBYSxDQUFBO0lBQ2IsNkJBQWUsQ0FBQTtJQUNmLCtCQUFpQixDQUFBO0lBQ2pCLG1DQUFxQixDQUFBO0FBQ3ZCLENBQUMsRUFSVyxVQUFVLEtBQVYsVUFBVSxRQVFyQjtBQVNELE1BQU0sT0FBTyx5QkFBMEIsU0FBUSxrQkFBa0I7SUFJckQ7SUFDQTtJQUNBO0lBTEYsU0FBUyxHQUE2QixJQUFJLEdBQUcsRUFBdUIsQ0FBQztJQUNyRSxhQUFhLEdBQXdCLElBQUksR0FBRyxFQUFrQixDQUFDO0lBQ3ZFLFlBQ1UsT0FBZSxFQUNmLE1BQXNCLEVBQ3RCLFdBQXVCO1FBRS9CLEtBQUssRUFBRSxD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O21IQXBLVSx5QkFBeUI7Z0VBQXpCLHlCQUF5QixXQUF6Qix5QkFBeUI7O2lGQUF6Qix5QkFBeUI7Y0FEckMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQge1xuICBSb3V0ZXIsXG4gIEFjdGl2YXRlZFJvdXRlLFxuICBQYXJhbU1hcCxcbiAgTmF2aWdhdGlvbkV4dHJhcyxcbiAgTmF2aWdhdGlvblN0YXJ0LFxuICBFdmVudCBhcyBOYXZpZ2F0aW9uRXZlbnQsXG59IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgU2hlcGhlcmQgZnJvbSAnc2hlcGhlcmQuanMnO1xuaW1wb3J0IHsgdGFwLCBtYXAsIGZpbHRlciB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IE9ic2VydmFibGUsIGZyb21FdmVudCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHtcbiAgQ292YWxlbnRHdWlkZWRUb3VyLFxuICBJVG91clN0ZXAsXG4gIElUb3VyT3B0aW9ucyxcbiAgVG91clN0ZXBCdXR0b24sXG59IGZyb20gJy4vZ3VpZGVkLnRvdXInO1xuXG5leHBvcnQgaW50ZXJmYWNlIElHdWlkZWRUb3VyIGV4dGVuZHMgSVRvdXJPcHRpb25zIHtcbiAgc3RlcHM6IElHdWlkZWRUb3VyU3RlcFtdO1xuICBmaW5pc2hCdXR0b25UZXh0Pzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElHdWlkZWRUb3VyU3RlcCBleHRlbmRzIElUb3VyU3RlcCB7XG4gIHJvdXRpbmc/OiB7XG4gICAgcm91dGU6IHN0cmluZztcbiAgICBleHRyYXM/OiBOYXZpZ2F0aW9uRXh0cmFzO1xuICB9O1xufVxuXG4vKipcbiAqICBSb3V0ZXIgZW5hYmxlZCBTaGVwaGVyZCB0b3VyXG4gKi9cbmV4cG9ydCBlbnVtIFRvdXJFdmVudHMge1xuICBjb21wbGV0ZSA9ICdjb21wbGV0ZScsXG4gIGNhbmNlbCA9ICdjYW5jZWwnLFxuICBoaWRlID0gJ2hpZGUnLFxuICBzaG93ID0gJ3Nob3cnLFxuICBzdGFydCA9ICdzdGFydCcsXG4gIGFjdGl2ZSA9ICdhY3RpdmUnLFxuICBpbmFjdGl2ZSA9ICdpbmFjdGl2ZScsXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUd1aWRlZFRvdXJFdmVudCB7XG4gIHN0ZXA6IGFueTtcbiAgcHJldmlvdXM6IGFueTtcbiAgdG91cjogYW55O1xufVxuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQ292YWxlbnRHdWlkZWRUb3VyU2VydmljZSBleHRlbmRzIENvdmFsZW50R3VpZGVkVG91ciB7XG4gIHByaXZhdGUgX3RvdXJzTWFwOiBNYXA8c3RyaW5nLCBJR3VpZGVkVG91cj4gPSBuZXcgTWFwPHN0cmluZywgSUd1aWRlZFRvdXI+KCk7XG4gIHByaXZhdGUgX3RvdXJTdGVwVVJMczogTWFwPHN0cmluZywgc3RyaW5nPiA9IG5ldyBNYXA8c3RyaW5nLCBzdHJpbmc+KCk7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgX3JvdXRlcjogUm91dGVyLFxuICAgIHByaXZhdGUgX3JvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcbiAgICBwcml2YXRlIF9odHRwQ2xpZW50OiBIdHRwQ2xpZW50XG4gICkge1xuICAgIHN1cGVyKCk7XG4gICAgX3JvdXRlci5ldmVudHNcbiAgICAgIC5waXBlKFxuICAgICAgICBmaWx0ZXIoXG4gICAgICAgICAgKGV2ZW50OiBOYXZpZ2F0aW9uRXZlbnQpID0+XG4gICAgICAgICAgICBldmVudCBpbnN0YW5jZW9mIE5hdmlnYXRpb25TdGFydCAmJlxuICAgICAgICAgICAgZXZlbnQubmF2aWdhdGlvblRyaWdnZXIgPT09ICdwb3BzdGF0ZSdcbiAgICAgICAgKVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLnNoZXBoZXJkVG91ci5pc0FjdGl2ZSgpKSB7XG4gICAgICAgICAgdGhpcy5zaGVwaGVyZFRvdXIuY2FuY2VsKCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICB9XG5cbiAgdG91ckV2ZW50JChzdHI6IFRvdXJFdmVudHMpOiBPYnNlcnZhYmxlPElHdWlkZWRUb3VyRXZlbnQ+IHtcbiAgICByZXR1cm4gZnJvbUV2ZW50KHRoaXMuc2hlcGhlcmRUb3VyLCBzdHIpO1xuICB9XG5cbiAgYXN5bmMgcmVnaXN0ZXJUb3VyKFxuICAgIHRvdXJOYW1lOiBzdHJpbmcsXG4gICAgdG91cjogSUd1aWRlZFRvdXIgfCBzdHJpbmdcbiAgKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgZ3VpZGVkVG91cjogSUd1aWRlZFRvdXIgPVxuICAgICAgdHlwZW9mIHRvdXIgPT09ICdzdHJpbmcnID8gYXdhaXQgdGhpcy5fbG9hZFRvdXIodG91cikgOiB0b3VyO1xuICAgIHRoaXMuX3RvdXJzTWFwLnNldCh0b3VyTmFtZSwgZ3VpZGVkVG91cik7XG4gIH1cblxuICBzdGFydFRvdXIodG91ck5hbWU6IHN0cmluZyk6IFNoZXBoZXJkLlRvdXIgfCB1bmRlZmluZWQge1xuICAgIGNvbnN0IGd1aWRlZFRvdXIgPSB0aGlzLl9nZXRUb3VyKHRvdXJOYW1lKTtcbiAgICB0aGlzLmZpbmlzaCgpO1xuICAgIGlmIChndWlkZWRUb3VyICYmIGd1aWRlZFRvdXIuc3RlcHMgJiYgZ3VpZGVkVG91ci5zdGVwcy5sZW5ndGgpIHtcbiAgICAgIC8vIHJlbW92ZSBzdGVwcyBmcm9tIHRvdXIgc2luY2Ugd2UgbmVlZCB0byBwcmVwcm9jZXNzIHRoZW0gZmlyc3RcbiAgICAgIHRoaXMubmV3VG91cihPYmplY3QuYXNzaWduKHt9LCBndWlkZWRUb3VyLCB7IHN0ZXBzOiB1bmRlZmluZWQgfSkpO1xuICAgICAgY29uc3QgdG91ckluc3RhbmNlOiBTaGVwaGVyZC5Ub3VyID0gdGhpcy5zaGVwaGVyZFRvdXIuYWRkU3RlcHMoXG4gICAgICAgIHRoaXMuX2NvbmZpZ3VyZVJvdXRlc0ZvclN0ZXBzKFxuICAgICAgICAgIHRoaXMuX3ByZXBhcmVUb3VyKGd1aWRlZFRvdXIuc3RlcHMsIGd1aWRlZFRvdXIuZmluaXNoQnV0dG9uVGV4dClcbiAgICAgICAgKVxuICAgICAgKTtcbiAgICAgIC8vIGluaXQgcm91dGUgdHJhbnNpdGlvbiBpZiBzdGVwIFVSTCBpcyBkaWZmZXJlbnQgdGhlbiB0aGUgY3VycmVudCBsb2NhdGlvbi5cbiAgICAgIHRoaXMudG91ckV2ZW50JChUb3VyRXZlbnRzLnNob3cpLnN1YnNjcmliZShcbiAgICAgICAgKHRvdXJFdmVudDogSUd1aWRlZFRvdXJFdmVudCkgPT4ge1xuICAgICAgICAgIGNvbnN0IGN1cnJlbnRVUkw6IHN0cmluZyA9IHRoaXMuX3JvdXRlci51cmwuc3BsaXQoL1s/I10vKVswXTtcbiAgICAgICAgICBjb25zdCB7XG4gICAgICAgICAgICBzdGVwOiB7IGlkLCBvcHRpb25zIH0sXG4gICAgICAgICAgfSA9IHRvdXJFdmVudDtcbiAgICAgICAgICBpZiAodGhpcy5fdG91clN0ZXBVUkxzLmhhcyhpZCkpIHtcbiAgICAgICAgICAgIGNvbnN0IHN0ZXBSb3V0ZSA9IHRoaXMuX3RvdXJTdGVwVVJMcy5nZXQoaWQpO1xuICAgICAgICAgICAgaWYgKHN0ZXBSb3V0ZSAhPT0gY3VycmVudFVSTCkge1xuICAgICAgICAgICAgICB0aGlzLl9yb3V0ZXIubmF2aWdhdGUoW3N0ZXBSb3V0ZV0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAob3B0aW9ucyAmJiBvcHRpb25zLnJvdXRpbmcpIHtcbiAgICAgICAgICAgICAgdGhpcy5fdG91clN0ZXBVUkxzLnNldChpZCwgb3B0aW9ucy5yb3V0aW5nLnJvdXRlKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHRoaXMuX3RvdXJTdGVwVVJMcy5zZXQoaWQsIGN1cnJlbnRVUkwpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgKTtcbiAgICAgIHRoaXMuc3RhcnQoKTtcbiAgICAgIHJldHVybiB0b3VySW5zdGFuY2U7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1jb25zb2xlXG4gICAgICBjb25zb2xlLndhcm4oYFRvdXIgJHt0b3VyTmFtZX0gZG9lcyBub3QgZXhpc3QuIFBsZWFzZSB0cnkgYW5vdGhlciB0b3VyLmApO1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gIH1cblxuICAvLyBGaW5kcyB0aGUgcmlnaHQgcmVnaXN0ZXJlZCB0b3VyIGJ5IHVzaW5nIHF1ZXJ5UGFyYW1zXG4gIC8vIGZpbmlzaGVzIGFueSBvdGhlciB0b3VyIGFuZCBzdGFydHMgdGhlIG5ldyBvbmUuXG4gIGluaXRpYWxpemVPblF1ZXJ5UGFyYW1zKHF1ZXJ5UGFyYW0gPSAndG91cicpOiBPYnNlcnZhYmxlPFBhcmFtTWFwPiB7XG4gICAgcmV0dXJuIHRoaXMuX3JvdXRlLnF1ZXJ5UGFyYW1NYXAucGlwZShcbiAgICAgIGRlYm91bmNlVGltZSgxMDApLFxuICAgICAgdGFwKChwYXJhbXM6IFBhcmFtTWFwKSA9PiB7XG4gICAgICAgIGNvbnN0IHRvdXJQYXJhbSA9IHBhcmFtcy5nZXQocXVlcnlQYXJhbSk7XG4gICAgICAgIGlmICh0b3VyUGFyYW0pIHtcbiAgICAgICAgICB0aGlzLnN0YXJ0VG91cih0b3VyUGFyYW0pO1xuICAgICAgICAgIC8vIGdldCBjdXJyZW50IHNlYXJjaCBwYXJhbWV0ZXJzXG4gICAgICAgICAgY29uc3Qgc2VhcmNoUGFyYW1zOiBVUkxTZWFyY2hQYXJhbXMgPSBuZXcgVVJMU2VhcmNoUGFyYW1zKFxuICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uLnNlYXJjaFxuICAgICAgICAgICk7XG4gICAgICAgICAgLy8gZGVsZXRlIHRvdXIgcXVlcnlQYXJhbVxuICAgICAgICAgIHNlYXJjaFBhcmFtcy5kZWxldGUocXVlcnlQYXJhbSk7XG4gICAgICAgICAgLy8gYnVpbGQgbmV3IFVSTCBzdHJpbmcgd2l0aG91dCBpdFxuICAgICAgICAgIGxldCB1cmw6IHN0cmluZyA9XG4gICAgICAgICAgICB3aW5kb3cubG9jYXRpb24ucHJvdG9jb2wgK1xuICAgICAgICAgICAgJy8vJyArXG4gICAgICAgICAgICB3aW5kb3cubG9jYXRpb24uaG9zdCArXG4gICAgICAgICAgICB3aW5kb3cubG9jYXRpb24ucGF0aG5hbWU7XG4gICAgICAgICAgaWYgKHNlYXJjaFBhcmFtcy50b1N0cmluZygpKSB7XG4gICAgICAgICAgICB1cmwgKz0gJz8nICsgc2VhcmNoUGFyYW1zLnRvU3RyaW5nKCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIC8vIHJlcGxhY2Ugc3RhdGUgaW4gaGlzdG9yeSB3aXRob3V0IHRyaWdnZXJpbmcgYSBuYXZpZ2F0aW9uXG4gICAgICAgICAgd2luZG93Lmhpc3RvcnkucmVwbGFjZVN0YXRlKHsgcGF0aDogdXJsIH0sICcnLCB1cmwpO1xuICAgICAgICB9XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBzZXROZXh0QnRuRGlzYWJpbGl0eShzdGVwSWQ6IHN0cmluZywgaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xuICAgIGlmICh0aGlzLnNoZXBoZXJkVG91ci5nZXRCeUlkKHN0ZXBJZCkpIHtcbiAgICAgIGNvbnN0IHN0ZXBPcHRpb25zOiBJVG91clN0ZXAgPSAodGhpcy5zaGVwaGVyZFRvdXIuZ2V0QnlJZChzdGVwSWQpIGFzIGFueSlcbiAgICAgICAgLm9wdGlvbnM7XG4gICAgICBzdGVwT3B0aW9ucy5idXR0b25zPy5mb3JFYWNoKChidXR0b246IFRvdXJTdGVwQnV0dG9uKSA9PiB7XG4gICAgICAgIGlmIChidXR0b24udGV4dCA9PT0gJ2NoZXZyb25fcmlnaHQnKSB7XG4gICAgICAgICAgYnV0dG9uLmRpc2FibGVkID0gaXNEaXNhYmxlZDtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICB0aGlzLnNoZXBoZXJkVG91ci5nZXRCeUlkKHN0ZXBJZCk/LnVwZGF0ZVN0ZXBPcHRpb25zKHN0ZXBPcHRpb25zKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIF9sb2FkVG91cih0b3VyVXJsOiBzdHJpbmcpOiBQcm9taXNlPGFueT4ge1xuICAgIGNvbnN0IHJlcXVlc3Q6IE9ic2VydmFibGU8b2JqZWN0PiA9IHRoaXMuX2h0dHBDbGllbnQuZ2V0KHRvdXJVcmwpO1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gYXdhaXQgcmVxdWVzdFxuICAgICAgICAucGlwZShcbiAgICAgICAgICBtYXAoKHJlc3VsdFNldDogYW55KSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShyZXN1bHRTZXQpKTtcbiAgICAgICAgICB9KVxuICAgICAgICApXG4gICAgICAgIC50b1Byb21pc2UoKTtcbiAgICB9IGNhdGNoIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfZ2V0VG91cihrZXk6IHN0cmluZyk6IElHdWlkZWRUb3VyIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5fdG91cnNNYXAuZ2V0KGtleSk7XG4gIH1cblxuICBwcml2YXRlIF9jb25maWd1cmVSb3V0ZXNGb3JTdGVwcyhcbiAgICByb3V0ZWRTdGVwczogSUd1aWRlZFRvdXJTdGVwW11cbiAgKTogSUd1aWRlZFRvdXJTdGVwW10ge1xuICAgIHJvdXRlZFN0ZXBzLmZvckVhY2goKHN0ZXA6IElHdWlkZWRUb3VyU3RlcCkgPT4ge1xuICAgICAgaWYgKHN0ZXAucm91dGluZykge1xuICAgICAgICBjb25zdCByb3V0ZTogc3RyaW5nID0gc3RlcC5yb3V0aW5nLnJvdXRlO1xuICAgICAgICAvLyBpZiB0aGVyZSBpcyBhIGJlZm9yZVNob3dQcm9taXNlLCB0aGVuIHdlIHNhdmUgaXQgYW5kIGNhbGwgaXQgYWZ0ZXIgdGhlIG5hdmlnYXRpb25cbiAgICAgICAgaWYgKHN0ZXAuYmVmb3JlU2hvd1Byb21pc2UpIHtcbiAgICAgICAgICBjb25zdCBiZWZvcmVTaG93UHJvbWlzZTogKCkgPT4gUHJvbWlzZTx2b2lkPiA9IHN0ZXAuYmVmb3JlU2hvd1Byb21pc2U7XG4gICAgICAgICAgc3RlcC5iZWZvcmVTaG93UHJvbWlzZSA9ICgpID0+IHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9yb3V0ZXJcbiAgICAgICAgICAgICAgLm5hdmlnYXRlKFtyb3V0ZV0sIHN0ZXAucm91dGluZz8uZXh0cmFzKVxuICAgICAgICAgICAgICAudGhlbigoKSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGJlZm9yZVNob3dQcm9taXNlKCk7XG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgc3RlcC5iZWZvcmVTaG93UHJvbWlzZSA9ICgpID0+IHRoaXMuX3JvdXRlci5uYXZpZ2F0ZShbcm91dGVdKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHJvdXRlZFN0ZXBzO1xuICB9XG59XG4iXX0=","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { CovalentGuidedTourService } from './guided-tour.service';\nimport * as i0 from \"@angular/core\";\nexport class CovalentGuidedTourModule {\n static ɵfac = function CovalentGuidedTourModule_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || CovalentGuidedTourModule)(); };\n static ɵmod = /*@__PURE__*/ i0.ɵɵdefineNgModule({ type: CovalentGuidedTourModule });\n static ɵinj = /*@__PURE__*/ i0.ɵɵdefineInjector({ providers: [CovalentGuidedTourService], imports: [CommonModule] });\n}\n(() => { (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(CovalentGuidedTourModule, [{\n type: NgModule,\n args: [{\n imports: [CommonModule],\n providers: [CovalentGuidedTourService],\n declarations: [],\n exports: [],\n }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && i0.ɵɵsetNgModuleScope(CovalentGuidedTourModule, { imports: [CommonModule] }); })();\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3VpZGVkLXRvdXIubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyLWd1aWRlZC10b3VyL3NyYy9saWIvZ3VpZGVkLXRvdXIubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDOztBQVFsRSxNQUFNLE9BQU8sd0JBQXdCO2tIQUF4Qix3QkFBd0I7NERBQXhCLHdCQUF3QjtpRUFKeEIsQ0FBQyx5QkFBeUIsQ0FBQyxZQUQ1QixZQUFZOztpRkFLWCx3QkFBd0I7Y0FOcEMsUUFBUTtlQUFDO2dCQUNSLE9BQU8sRUFBRSxDQUFDLFlBQVksQ0FBQztnQkFDdkIsU0FBUyxFQUFFLENBQUMseUJBQXlCLENBQUM7Z0JBQ3RDLFlBQVksRUFBRSxFQUFFO2dCQUNoQixPQUFPLEVBQUUsRUFBRTthQUNaOzt3RkFDWSx3QkFBd0IsY0FMekIsWUFBWSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ292YWxlbnRHdWlkZWRUb3VyU2VydmljZSB9IGZyb20gJy4vZ3VpZGVkLXRvdXIuc2VydmljZSc7XG5cbkBOZ01vZHVsZSh7XG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGVdLFxuICBwcm92aWRlcnM6IFtDb3ZhbGVudEd1aWRlZFRvdXJTZXJ2aWNlXSxcbiAgZGVjbGFyYXRpb25zOiBbXSxcbiAgZXhwb3J0czogW10sXG59KVxuZXhwb3J0IGNsYXNzIENvdmFsZW50R3VpZGVkVG91ck1vZHVsZSB7fVxuIl19","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './public_api';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY292YWxlbnQtZ3VpZGVkLXRvdXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItZ3VpZGVkLXRvdXIvc3JjL2NvdmFsZW50LWd1aWRlZC10b3VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vcHVibGljX2FwaSc7XG4iXX0="],"names":[],"mappings":"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"}
package/index.d.ts CHANGED
@@ -1,5 +1,122 @@
1
+ import * as i0 from '@angular/core';
2
+ import * as i1 from '@angular/common';
3
+ import { HttpClient } from '@angular/common/http';
4
+ import { NavigationExtras, Router, ActivatedRoute, ParamMap } from '@angular/router';
5
+ import Shepherd from 'shepherd.js';
6
+ import { Observable } from 'rxjs';
7
+
8
+ declare class CovalentGuidedTourModule {
9
+ static ɵfac: i0.ɵɵFactoryDeclaration<CovalentGuidedTourModule, never>;
10
+ static ɵmod: i0.ɵɵNgModuleDeclaration<CovalentGuidedTourModule, never, [typeof i1.CommonModule], never>;
11
+ static ɵinj: i0.ɵɵInjectorDeclaration<CovalentGuidedTourModule>;
12
+ }
13
+
14
+ type TourStep = Shepherd.Step.StepOptions;
15
+ type TourStepButton = Shepherd.Step.StepOptionsButton;
16
+ declare enum ITourEvent {
17
+ 'click' = "click",
18
+ 'pointerover' = "pointerover",
19
+ 'keyup' = "keyup",
20
+ 'added' = "added",// added to DOM
21
+ 'removed' = "removed"
22
+ }
23
+ interface ITourEventOn {
24
+ selector?: string;
25
+ event?: keyof typeof ITourEvent;
26
+ }
27
+ interface ITourEventOnOptions {
28
+ timeBeforeShow?: number;
29
+ interval?: number;
30
+ }
31
+ interface ITourOptions extends Shepherd.Tour.TourOptions {
32
+ abortOn?: ITourEventOn[];
33
+ }
34
+ interface ITourStepAttachToOptions extends ITourEventOnOptions {
35
+ highlight?: boolean;
36
+ retries?: number;
37
+ skipIfNotFound?: boolean;
38
+ else?: string;
39
+ goBackTo?: string;
40
+ skipFromStepCount?: boolean;
41
+ }
42
+ interface ITourStepAdvanceOnOptions extends ITourEventOnOptions {
43
+ jumpTo?: string;
44
+ allowGoBack?: boolean;
45
+ }
46
+ interface ITourStep extends TourStep {
47
+ attachToOptions?: ITourStepAttachToOptions;
48
+ advanceOnOptions?: ITourStepAdvanceOnOptions;
49
+ advanceOn?: ITourEventOn[] | ITourEventOn | any;
50
+ abortOn?: ITourEventOn[];
51
+ count?: number;
52
+ }
53
+ declare abstract class TourButtonsActions {
54
+ abstract next(): void;
55
+ abstract back(): void;
56
+ abstract cancel(): void;
57
+ abstract finish(): void;
58
+ }
59
+ declare class CovalentGuidedTour extends TourButtonsActions {
60
+ private _destroyedEvent$;
61
+ shepherdTour: Shepherd.Tour;
62
+ stepOptions: ITourStep;
63
+ constructor(stepOptions?: ITourStep);
64
+ newTour(opts?: ITourOptions): void;
65
+ back(): void;
66
+ cancel(): void;
67
+ next(): void;
68
+ finish(): void;
69
+ addSteps(steps: ITourStep[]): void;
70
+ start(): void;
71
+ protected _prepareTour(originalSteps: ITourStep[], finishLabel?: string): ITourStep[];
72
+ private _bindEvent;
73
+ }
74
+
75
+ interface IGuidedTour extends ITourOptions {
76
+ steps: IGuidedTourStep[];
77
+ finishButtonText?: string;
78
+ }
79
+ interface IGuidedTourStep extends ITourStep {
80
+ routing?: {
81
+ route: string;
82
+ extras?: NavigationExtras;
83
+ };
84
+ }
1
85
  /**
2
- * Generated bundle index. Do not edit.
86
+ * Router enabled Shepherd tour
3
87
  */
4
- /// <amd-module name="@covalent/guided-tour" />
5
- export * from './public_api';
88
+ declare enum TourEvents {
89
+ complete = "complete",
90
+ cancel = "cancel",
91
+ hide = "hide",
92
+ show = "show",
93
+ start = "start",
94
+ active = "active",
95
+ inactive = "inactive"
96
+ }
97
+ interface IGuidedTourEvent {
98
+ step: any;
99
+ previous: any;
100
+ tour: any;
101
+ }
102
+ declare class CovalentGuidedTourService extends CovalentGuidedTour {
103
+ private _router;
104
+ private _route;
105
+ private _httpClient;
106
+ private _toursMap;
107
+ private _tourStepURLs;
108
+ constructor(_router: Router, _route: ActivatedRoute, _httpClient: HttpClient);
109
+ tourEvent$(str: TourEvents): Observable<IGuidedTourEvent>;
110
+ registerTour(tourName: string, tour: IGuidedTour | string): Promise<void>;
111
+ startTour(tourName: string): Shepherd.Tour | undefined;
112
+ initializeOnQueryParams(queryParam?: string): Observable<ParamMap>;
113
+ setNextBtnDisability(stepId: string, isDisabled: boolean): void;
114
+ private _loadTour;
115
+ private _getTour;
116
+ private _configureRoutesForSteps;
117
+ static ɵfac: i0.ɵɵFactoryDeclaration<CovalentGuidedTourService, never>;
118
+ static ɵprov: i0.ɵɵInjectableDeclaration<CovalentGuidedTourService>;
119
+ }
120
+
121
+ export { CovalentGuidedTour, CovalentGuidedTourModule, CovalentGuidedTourService, ITourEvent, TourEvents };
122
+ export type { IGuidedTour, IGuidedTourEvent, IGuidedTourStep, ITourEventOn, ITourEventOnOptions, ITourOptions, ITourStep, ITourStepAdvanceOnOptions, ITourStepAttachToOptions, TourStep, TourStepButton };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@covalent/guided-tour",
3
- "version": "10.4.0-beta.3",
3
+ "version": "11.0.0-beta.2",
4
4
  "description": "Covalent Guided Tour Module",
5
5
  "keywords": [
6
6
  "angular",
@@ -19,8 +19,8 @@
19
19
  },
20
20
  "license": "MIT",
21
21
  "peerDependencies": {
22
- "@angular/common": "19.x.x",
23
- "@angular/core": "19.x.x",
22
+ "@angular/common": "20.x.x",
23
+ "@angular/core": "20.x.x",
24
24
  "shepherd.js": "^9.0.0"
25
25
  },
26
26
  "dependencies": {
@@ -39,6 +39,6 @@
39
39
  },
40
40
  "sideEffects": false,
41
41
  "scripts": {
42
- "prepublishOnly": "node --eval \"console.error('ERROR: Trying to publish a package that has been compiled by Ivy in full compilation mode. This is not allowed.\\nPlease delete and rebuild the package with Ivy partial compilation mode, before attempting to publish.\\n')\" && exit 1"
42
+ "prepublishOnly": "node --eval \"console.error('ERROR: Trying to publish a package that has been compiled in full compilation mode. This is not allowed.\\nPlease delete and rebuild the package with partial compilation mode, before attempting to publish.\\n')\" && exit 1"
43
43
  }
44
44
  }
@@ -1,7 +0,0 @@
1
- import * as i0 from "@angular/core";
2
- import * as i1 from "@angular/common";
3
- export declare class CovalentGuidedTourModule {
4
- static ɵfac: i0.ɵɵFactoryDeclaration<CovalentGuidedTourModule, never>;
5
- static ɵmod: i0.ɵɵNgModuleDeclaration<CovalentGuidedTourModule, never, [typeof i1.CommonModule], never>;
6
- static ɵinj: i0.ɵɵInjectorDeclaration<CovalentGuidedTourModule>;
7
- }
@@ -1,51 +0,0 @@
1
- import { HttpClient } from '@angular/common/http';
2
- import { Router, ActivatedRoute, ParamMap, NavigationExtras } from '@angular/router';
3
- import Shepherd from 'shepherd.js';
4
- import { Observable } from 'rxjs';
5
- import { CovalentGuidedTour, ITourStep, ITourOptions } from './guided.tour';
6
- import * as i0 from "@angular/core";
7
- export interface IGuidedTour extends ITourOptions {
8
- steps: IGuidedTourStep[];
9
- finishButtonText?: string;
10
- }
11
- export interface IGuidedTourStep extends ITourStep {
12
- routing?: {
13
- route: string;
14
- extras?: NavigationExtras;
15
- };
16
- }
17
- /**
18
- * Router enabled Shepherd tour
19
- */
20
- export declare enum TourEvents {
21
- complete = "complete",
22
- cancel = "cancel",
23
- hide = "hide",
24
- show = "show",
25
- start = "start",
26
- active = "active",
27
- inactive = "inactive"
28
- }
29
- export interface IGuidedTourEvent {
30
- step: any;
31
- previous: any;
32
- tour: any;
33
- }
34
- export declare class CovalentGuidedTourService extends CovalentGuidedTour {
35
- private _router;
36
- private _route;
37
- private _httpClient;
38
- private _toursMap;
39
- private _tourStepURLs;
40
- constructor(_router: Router, _route: ActivatedRoute, _httpClient: HttpClient);
41
- tourEvent$(str: TourEvents): Observable<IGuidedTourEvent>;
42
- registerTour(tourName: string, tour: IGuidedTour | string): Promise<void>;
43
- startTour(tourName: string): Shepherd.Tour | undefined;
44
- initializeOnQueryParams(queryParam?: string): Observable<ParamMap>;
45
- setNextBtnDisability(stepId: string, isDisabled: boolean): void;
46
- private _loadTour;
47
- private _getTour;
48
- private _configureRoutesForSteps;
49
- static ɵfac: i0.ɵɵFactoryDeclaration<CovalentGuidedTourService, never>;
50
- static ɵprov: i0.ɵɵInjectableDeclaration<CovalentGuidedTourService>;
51
- }
@@ -1,62 +0,0 @@
1
- import Shepherd from 'shepherd.js';
2
- export type TourStep = Shepherd.Step.StepOptions;
3
- export type TourStepButton = Shepherd.Step.StepOptionsButton;
4
- export declare enum ITourEvent {
5
- 'click' = "click",
6
- 'pointerover' = "pointerover",
7
- 'keyup' = "keyup",
8
- 'added' = "added",// added to DOM
9
- 'removed' = "removed"
10
- }
11
- export interface ITourEventOn {
12
- selector?: string;
13
- event?: keyof typeof ITourEvent;
14
- }
15
- export interface ITourEventOnOptions {
16
- timeBeforeShow?: number;
17
- interval?: number;
18
- }
19
- export interface ITourOptions extends Shepherd.Tour.TourOptions {
20
- abortOn?: ITourEventOn[];
21
- }
22
- export interface ITourStepAttachToOptions extends ITourEventOnOptions {
23
- highlight?: boolean;
24
- retries?: number;
25
- skipIfNotFound?: boolean;
26
- else?: string;
27
- goBackTo?: string;
28
- skipFromStepCount?: boolean;
29
- }
30
- export interface ITourStepAdvanceOnOptions extends ITourEventOnOptions {
31
- jumpTo?: string;
32
- allowGoBack?: boolean;
33
- }
34
- export interface ITourStep extends TourStep {
35
- attachToOptions?: ITourStepAttachToOptions;
36
- advanceOnOptions?: ITourStepAdvanceOnOptions;
37
- advanceOn?: ITourEventOn[] | ITourEventOn | any;
38
- abortOn?: ITourEventOn[];
39
- count?: number;
40
- }
41
- declare abstract class TourButtonsActions {
42
- abstract next(): void;
43
- abstract back(): void;
44
- abstract cancel(): void;
45
- abstract finish(): void;
46
- }
47
- export declare class CovalentGuidedTour extends TourButtonsActions {
48
- private _destroyedEvent$;
49
- shepherdTour: Shepherd.Tour;
50
- stepOptions: ITourStep;
51
- constructor(stepOptions?: ITourStep);
52
- newTour(opts?: ITourOptions): void;
53
- back(): void;
54
- cancel(): void;
55
- next(): void;
56
- finish(): void;
57
- addSteps(steps: ITourStep[]): void;
58
- start(): void;
59
- protected _prepareTour(originalSteps: ITourStep[], finishLabel?: string): ITourStep[];
60
- private _bindEvent;
61
- }
62
- export {};
package/public_api.d.ts DELETED
@@ -1,3 +0,0 @@
1
- export * from './lib/guided-tour.module';
2
- export * from './lib/guided-tour.service';
3
- export * from './lib/guided.tour';