{"version":3,"file":"bdc-walkthrough.mjs","sources":["../../../projects/bdc-walkthrough/src/lib/bdc-walk.service.ts","../../../projects/bdc-walkthrough/src/lib/tutorial-dialog/tutorial-dialog.component.ts","../../../projects/bdc-walkthrough/src/lib/tutorial-dialog/tutorial-dialog.component.html","../../../projects/bdc-walkthrough/src/lib/tutorial-popup/tutorial-popup.component.ts","../../../projects/bdc-walkthrough/src/lib/tutorial-popup/tutorial-popup.component.html","../../../projects/bdc-walkthrough/src/lib/tutorial-popup/tutorial-trigger.directive.ts","../../../projects/bdc-walkthrough/src/public-api.ts","../../../projects/bdc-walkthrough/src/bdc-walkthrough.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\nimport { BehaviorSubject, Subject } from 'rxjs';\nimport * as _ from 'lodash';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class BdcWalkService {\n  private _notify = new BehaviorSubject<void>(null);\n  private _notifyDisplaying = new Subject<BdcDisplayEvent>();\n  private _values: TaskList;\n  private _displaying: {[id: string]: boolean} = {};\n  private _version = 1;\n  private _key = 'bdcWalkthrough';\n  private _disabled = false;\n\n  changes = this._notify.asObservable();\n  changesDisplaying = this._notifyDisplaying.asObservable();\n\n  get disabled() {\n    return this._disabled;\n  }\n\n  constructor() {\n    this._values = JSON.parse(localStorage.getItem(this._key)) || {};\n\n    // reset all values if version is different\n    if (this._values.version !== this._version) {\n      this.reset();\n    }\n  }\n\n  migrate(migrations: BdcWalkMigration[]) {\n    const version = this._values.migrationVersion || 0;\n\n    migrations.filter(migration => migration.version > version).forEach(migration => {\n      console.log(`Running bdc-migration version ${migration.version}`);\n\n      migration.operations.forEach(operation => {\n        if (this.evalMustCompleted(operation.condition)) {\n          Object.entries(operation.then).forEach(([id, data]) => {\n            if (data) {\n              this._values[id] = data;\n            } else {\n              delete this._values[id];\n            }\n          });\n        }\n      });\n\n      this._values.migrationVersion = migration.version;\n    });\n\n    this.save();\n  }\n\n  getIsDisplaying(id: string): boolean {\n    return this._displaying[id] || false;\n  }\n\n  setIsDisplaying(id: string, visible: boolean) {\n    if (this._displaying[id] !== visible) {\n      if (visible) {\n        this._displaying[id] = visible;\n      } else {\n        delete this._displaying[id];\n      }\n\n      this._notify.next();\n      this._notifyDisplaying.next({id, visible, action: BdcDisplayEventAction.VisibilityChanged});\n    }\n  }\n\n  logUserAction(id: string, action: BdcDisplayEventAction) {\n    this._notifyDisplaying.next({id, visible: false, action});\n  }\n\n  getTaskCompleted(id: string): any | boolean {\n    return this._values[id] || false;\n  }\n\n  setTaskCompleted(id: string, value: any | boolean = true) {\n    if (this._values[id] !== value && value) {\n      this._values[id] = value;\n      this.save();\n    } else if (this._values.hasOwnProperty(id) && !value) {\n      delete this._values[id];\n      this.save();\n    }\n  }\n\n  setTasks(tasks: TaskList) {\n    let changed = false;\n\n    Object.entries(tasks).forEach(([id, data]) => {\n      if (this._values[id] !== data && data) {\n        this._values[id] = data;\n        changed = true;\n      } else if (this._values.hasOwnProperty(id) && !data) {\n        delete this._values[id];\n        changed = true;\n      }\n    });\n\n    if (changed) {\n      this.save();\n    }\n  }\n\n  getTasks() {\n    return {...this._values};\n  }\n\n  reset(prefix?: string) {\n    if (prefix) {\n      // remove only keys prefixed with param\n      Object.keys(this._values).filter(key => key.startsWith(prefix)).forEach(keyToRemove => delete this._values[keyToRemove]);\n    } else {\n      // remove all keys\n      this._values = {version: this._version};\n    }\n\n    this.save();\n  }\n\n  disableAll(disabled = true) {\n    this._disabled = disabled;\n    this._notify.next();\n  }\n\n  private _isCompleteMatch(name: string, value: any) {\n    const src = this.getTaskCompleted(name);\n    return this._isEqual(src, value) || (typeof(value) === 'object' && _.isMatch(src, value));\n  }\n\n  private _isEqual(src: any, value: any) {\n    if (src === value) {\n      return true;\n    } else if (src !== false && value === true) {\n      // we can compare value of true with any source\n      return true;\n    } else if (typeof(value) === 'string') {\n      // support not (!) less than (<) or greater than (>) comparisons\n      const op = value[0];\n      const compValue = value.substr(1);\n\n      if ((op === '!' && compValue != src) || (op === '<' && src < compValue) || (op === '>' && src > compValue)) {\n        return true;\n      }\n    }\n  }\n\n  evalMustCompleted(mustCompleted: TaskList) {\n    return Object.entries(mustCompleted).find(([name, value]) => !this._isCompleteMatch(name, value)) === undefined;\n  }\n\n  evalMustNotDisplaying(mustNotDisplaying: string[]) {\n    // allow using prefix in task names\n    const displaying = Object.keys(this._displaying);\n    return mustNotDisplaying.find(prefix => displaying.find(key => key.startsWith(prefix))) === undefined;\n  }\n\n  private save() {\n    localStorage.setItem(this._key, JSON.stringify(this._values));\n    this._notify.next();\n  }\n}\n\nexport interface TaskList { [taskName: string]: any | boolean; }\n\nexport interface BdcWalkMigration {\n  version: number;\n  operations: {\n    condition: TaskList,\n    then: TaskList\n  }[];\n}\n\nexport interface BdcDisplayEvent {\n  id: string;\n  visible: boolean;\n  action: BdcDisplayEventAction;\n}\n\nexport enum BdcDisplayEventAction {\n  VisibilityChanged,\n  UserClosed,\n  ButtonClicked\n}\n","import { AfterContentInit, Component, EventEmitter, Input, OnChanges, OnDestroy, Output, TemplateRef, ViewChild, ViewEncapsulation } from '@angular/core';\nimport { MatDialog, MatDialogRef } from '@angular/material/dialog';\nimport { Subscription } from 'rxjs';\nimport { BdcDisplayEventAction, BdcWalkService } from '../bdc-walk.service';\n\n@Component({\n    selector: 'bdc-walk-dialog',\n    templateUrl: './tutorial-dialog.component.html',\n    styleUrls: ['./tutorial-dialog.component.scss'],\n    encapsulation: ViewEncapsulation.None\n})\nexport class BdcWalkDialogComponent implements AfterContentInit, OnDestroy, OnChanges {\n  @Input() name: string;\n  @Input() mustCompleted: { [taskName: string]: any | boolean } = {};\n  @Input() mustNotDisplaying: string[] = [];\n  @Input() width = '500px';\n  @Output() opened = new EventEmitter<void>();\n  @Output() closed = new EventEmitter<void>();\n  @ViewChild(TemplateRef, {static: true}) templateRef: TemplateRef<any>;\n\n  dialogRef: MatDialogRef<any>;\n  componentSubscription: Subscription;\n\n  constructor(private dialog: MatDialog,\n              private tutorialService: BdcWalkService) { }\n\n  ngAfterContentInit() {\n    this.componentSubscription = this.tutorialService.changes.subscribe(() => this._sync());\n  }\n\n  ngOnChanges(): void {\n    this._sync();\n  }\n\n  ngOnDestroy() {\n    if (this.componentSubscription) {\n      this.componentSubscription.unsubscribe();\n    }\n\n    this._close();\n  }\n\n  getValue(taskName: string): any {\n    return this.tutorialService.getTaskCompleted(taskName);\n  }\n\n  close(setTasks: { [taskName: string]: any | boolean } = {}) {\n    this.tutorialService.logUserAction(this.name, BdcDisplayEventAction.UserClosed);\n    this.tutorialService.setTaskCompleted(this.name);\n    this.tutorialService.setTasks(setTasks);\n  }\n\n  private _open() {\n    this.dialogRef = this.dialog.open(this.templateRef, {width: this.width, disableClose: true, restoreFocus: false, panelClass: 'bdc-walk-dialog'});\n    this.opened.emit();\n  }\n\n  private _close() {\n    if (this.dialogRef) {\n      this.dialogRef.close();\n      this.dialogRef = null;\n      this.closed.emit();\n    }\n  }\n\n  private _sync() {\n    if (this.name) {\n      if (!this.tutorialService.getTaskCompleted(this.name) &&\n        !this.tutorialService.disabled &&\n        this.tutorialService.evalMustCompleted(this.mustCompleted) &&\n        this.tutorialService.evalMustNotDisplaying(this.mustNotDisplaying)) {\n\n        if (!this.dialogRef) {\n          this._open();\n          this.tutorialService.setIsDisplaying(this.name, true);\n        }\n      } else if (this.dialogRef) {\n        this._close();\n        this.tutorialService.setIsDisplaying(this.name, false);\n      }\n    }\n  }\n}\n","<ng-template>\n  <div class=\"container\">\n    <ng-content></ng-content>\n  </div>\n</ng-template>\n","import { Component, ContentChild, EventEmitter, HostBinding, Input, OnChanges, OnInit, Output, TemplateRef, ViewChild, ViewEncapsulation } from '@angular/core';\nimport { MatMenu, MenuPositionX, MenuPositionY } from '@angular/material/menu';\nimport { BdcWalkService } from '../bdc-walk.service';\nimport { BdcWalkTriggerDirective } from './tutorial-trigger.directive';\nimport { NgIf, NgTemplateOutlet } from '@angular/common';\nimport { MatButton } from '@angular/material/button';\n\n@Component({\n    selector: 'bdc-walk-popup',\n    templateUrl: './tutorial-popup.component.html',\n    styleUrls: ['./tutorial-popup.component.scss'],\n    encapsulation: ViewEncapsulation.None,\n    imports: [MatMenu, NgIf, NgTemplateOutlet, MatButton]\n})\nexport class BdcWalkPopupComponent implements OnInit, OnChanges {\n  @Input() name: string;\n  @Input() header: string;\n  @Input() xPosition: MenuPositionX = 'before';\n  @Input() yPosition: MenuPositionY = 'below';\n  @Input() arrow = true;\n  @Input() horizontal = false;\n  @Input() closeOnClick = false;\n  @Input() alignCenter: boolean | undefined; // by default only if size < 70 it will auto-align to center\n  @Input() offsetX = 0;\n  @Input() offsetY = 0;\n  @Input() class = '';\n  @Input() showCloseButton = true;\n  @Input() showButton = false;\n  @Input() buttonText = 'Got it';\n  @Input() sideNoteText: string;\n  @Input() mustCompleted: { [taskName: string]: any | boolean } = {};\n  @Input() mustNotDisplaying: string[] = [];\n  @Input() onCloseCompleteTask: { [taskName: string]: any | boolean } = {};\n  @Input() onButtonCompleteTask: { [taskName: string]: any | boolean } = {};\n  @Output() opened = new EventEmitter<void>();\n  @Output() closed = new EventEmitter<void>();\n  @HostBinding('attr.class') className = undefined;\n\n  @ViewChild(MatMenu, { static: true }) menu: MatMenu;\n  @ContentChild(TemplateRef) templateRef: TemplateRef<any>;\n\n  trigger: BdcWalkTriggerDirective;\n  data: any;\n\n  constructor(private tutorialService: BdcWalkService) { }\n\n  ngOnInit() {\n  }\n\n  ngOnChanges() {\n    if (this.trigger) {\n      this.trigger.reposition();\n    }\n  }\n\n  _getClass() {\n    return `bdc-walk-popup ${this.class} ` + (this.arrow ? ' arrow' : '') + (this.horizontal ? ' horizontal' : '');\n  }\n\n  getValue(taskName: string): any {\n    return this.tutorialService.getTaskCompleted(taskName);\n  }\n}\n","<mat-menu [overlapTrigger]=\"false\" [xPosition]=\"xPosition\" [yPosition]=\"yPosition\" [hasBackdrop]=\"false\" [class]=\"_getClass()\">\n  <div class=\"container\" (click)=\"$event.stopPropagation()\" (keydown)=\"$event.stopPropagation()\" tabindex=\"-1\">\n    <div class=\"title\">\n      <div class=\"header\">{{ header }}</div>\n\n      <a *ngIf=\"showCloseButton\" (click)=\"$event.preventDefault(); trigger.close(false)\" class=\"close\" href=\"\"></a>\n    </div>\n\n    <ng-content></ng-content>\n\n    <ng-container *ngIf=\"templateRef && trigger\">\n      <ng-container *ngTemplateOutlet=\"templateRef; context: {$implicit: data}\"></ng-container>\n    </ng-container>\n\n    <div *ngIf=\"showButton\" class=\"buttons\">\n      <div class=\"sideNote\">{{ sideNoteText }}</div>\n      <button (click)=\"trigger.close(true)\" type=\"button\" mat-stroked-button>{{ buttonText }}</button>\n    </div>\n  </div>\n</mat-menu>\n","import { Direction, Directionality } from '@angular/cdk/bidi';\nimport { ConnectionPositionPair, FlexibleConnectedPositionStrategy, HorizontalConnectionPos, Overlay, OverlayConfig, OverlayRef, ScrollStrategy, VerticalConnectionPos, } from '@angular/cdk/overlay';\nimport { TemplatePortal } from '@angular/cdk/portal';\nimport { AfterContentChecked, AfterContentInit, Directive, ElementRef, HostListener, Inject, Input, NgZone, OnChanges, OnDestroy, Optional, ViewContainerRef, } from '@angular/core';\nimport { merge, Observable, of as observableOf, Subscription } from 'rxjs';\nimport { filter, take, takeUntil } from 'rxjs/operators';\nimport { MAT_MENU_SCROLL_STRATEGY, MatMenu, MatMenuPanel, MenuPositionX, MenuPositionY } from '@angular/material/menu';\nimport { BdcWalkPopupComponent } from './tutorial-popup.component';\nimport { BdcDisplayEventAction, BdcWalkService } from '../bdc-walk.service';\n\n@Directive({ selector: '[bdcWalkTriggerFor]' })\nexport class BdcWalkTriggerDirective implements OnDestroy, OnChanges, AfterContentInit, AfterContentChecked {\n  private _portal: TemplatePortal;\n  private _overlayRef: OverlayRef | null = null;\n  private _menuOpen = false;\n  private _closingActionsSubscription = Subscription.EMPTY;\n  private _hoverSubscription = Subscription.EMPTY;\n  private _menuCloseSubscription = Subscription.EMPTY;\n  private _scrollStrategy: () => ScrollStrategy;\n\n  private _componentSubscription: Subscription;\n  private _lastPosition: ConnectionPositionPair;\n  private _initialized = false;\n  private _timer: any;\n  private _contentInited = false;\n  private _isTriggerVisible = true;\n\n  @Input() enabled = true;\n  @Input() mustCompleted: { [taskName: string]: any | boolean } = {};\n  @Input() data: any;\n\n  /** References the popup instance that the trigger is associated with. */\n  @Input('bdcWalkTriggerFor')\n  get popup(): BdcWalkPopupComponent {\n    return this._popup;\n  }\n  set popup(popup: BdcWalkPopupComponent) {\n    if (popup === this._popup) {\n      return;\n    }\n\n    this._popup = popup;\n    this._menu = popup.menu;\n    this._menuCloseSubscription.unsubscribe();\n\n    if (popup) {\n      this._menuCloseSubscription = popup.menu.closed.subscribe(() => {\n        this._destroyMenu();\n      });\n    }\n  }\n\n  private _menu: MatMenuPanel | null;\n  private _popup: BdcWalkPopupComponent;\n\n  constructor(\n    private tutorialService: BdcWalkService,\n    private _overlay: Overlay,\n    private _element: ElementRef<HTMLElement>,\n    private _viewContainerRef: ViewContainerRef,\n    @Inject(MAT_MENU_SCROLL_STRATEGY) scrollStrategy: any,\n    @Optional() private _dir: Directionality,\n    private _ngZone?: NgZone,\n  ) {\n    this._scrollStrategy = scrollStrategy;\n  }\n\n  ngAfterContentInit() {\n    this._contentInited = true;\n    this._componentSubscription = this.tutorialService.changes.subscribe(() => this._sync());\n  }\n\n  ngAfterContentChecked() {\n    // detect changes if trigger visibility changed\n    const isTriggerVisible = !!this._element.nativeElement.offsetParent;\n\n    if (isTriggerVisible !== this._isTriggerVisible && this._contentInited) {\n      this._isTriggerVisible = isTriggerVisible;\n      this._sync();\n    }\n  }\n\n  ngOnChanges(): void {\n    if (this._contentInited) {\n      this._sync();\n    }\n  }\n\n  ngOnDestroy() {\n    if (this._componentSubscription) {\n      this._componentSubscription.unsubscribe();\n    }\n\n    // must disable auto-init and release popup so others may use it\n    clearTimeout(this._timer);\n\n    if (this._initialized) {\n      this.popup.trigger = null;\n      this.popup.data = null;\n      this.tutorialService.setIsDisplaying(this.popup.name, false);\n    }\n\n    if (this._overlayRef) {\n      this._overlayRef.dispose();\n      this._overlayRef = null;\n    }\n\n    this._menuCloseSubscription.unsubscribe();\n    this._closingActionsSubscription.unsubscribe();\n    this._hoverSubscription.unsubscribe();\n  }\n\n  /** Whether the menu is open. */\n  get menuOpen(): boolean {\n    return this._menuOpen;\n  }\n\n  /** The text direction of the containing app. */\n  get dir(): Direction {\n    return this._dir && this._dir.value === 'rtl' ? 'rtl' : 'ltr';\n  }\n\n  /** Opens the menu. */\n  openMenu(): void {\n    const menu = this._menu;\n\n    if (this._menuOpen || !menu) {\n      return;\n    }\n\n    const overlayRef = this._createOverlay(menu);\n    const overlayConfig = overlayRef.getConfig();\n    const positionStrategy = overlayConfig.positionStrategy as FlexibleConnectedPositionStrategy;\n\n    this._setPosition(menu, positionStrategy);\n    overlayConfig.hasBackdrop = menu.hasBackdrop;\n    overlayRef.attach(this._getPortal(menu));\n\n    if (menu.lazyContent) {\n      menu.lazyContent.attach();\n    }\n\n    this._closingActionsSubscription = this._menuClosingActions().subscribe(() => this.closeMenu());\n    this._initMenu(menu);\n\n    if (menu instanceof MatMenu) {\n      menu._setIsOpen(true);\n      menu._directDescendantItems.changes.pipe(takeUntil(menu.close)).subscribe(() => {\n        // Re-adjust the position without locking when the amount of items\n        // changes so that the overlay is allowed to pick a new optimal position.\n        positionStrategy.withLockedPosition(false).reapplyLastPosition();\n        positionStrategy.withLockedPosition(true);\n      });\n    }\n  }\n\n  /** Closes the menu. */\n  closeMenu(): void {\n    this._menu?.close.emit();\n  }\n\n  /**\n   * Updates the position of the menu to ensure that it fits all options within the viewport.\n   */\n  updatePosition(): void {\n    this._overlayRef?.updatePosition();\n  }\n\n  /** Closes the menu and does the necessary cleanup. */\n  private _destroyMenu() {\n    if (!this._overlayRef || !this.menuOpen) {\n      return;\n    }\n\n    const menu = this._menu;\n    this._closingActionsSubscription.unsubscribe();\n    this._overlayRef.detach();\n\n    if (menu instanceof MatMenu) {\n      menu._setIsOpen(false);\n\n      if (menu.lazyContent) {\n        // Wait for the exit animation to finish before detaching the content.\n        menu._animationDone\n          .pipe(\n            filter(event => {\n              return event === 'void';\n            }),\n            take(1),\n            // Interrupt if the content got re-attached.\n            takeUntil(menu.lazyContent._attached),\n          )\n          .subscribe({\n            next: () => menu.lazyContent!.detach(),\n            // No matter whether the content got re-attached, reset the menu.\n            complete: () => this._setIsMenuOpen(false),\n          });\n      } else {\n        this._setIsMenuOpen(false);\n      }\n    } else {\n      this._setIsMenuOpen(false);\n      menu?.lazyContent?.detach();\n    }\n  }\n\n  /**\n   * This method sets the menu state to open and focuses the first item if\n   * the menu was opened via the keyboard.\n   */\n  private _initMenu(menu: MatMenuPanel): void {\n    menu.direction = this.dir;\n    this._setIsMenuOpen(true);\n  }\n\n  // set state rather than toggle to support triggers sharing a menu\n  private _setIsMenuOpen(isOpen: boolean): void {\n    this._menuOpen = isOpen;\n  }\n\n  /**\n   * This method creates the overlay from the provided menu's template and saves its\n   * OverlayRef so that it can be attached to the DOM when openMenu is called.\n   */\n  private _createOverlay(menu: MatMenuPanel): OverlayRef {\n    if (!this._overlayRef) {\n      const config = this._getOverlayConfig(menu);\n      this._subscribeToPositions(\n        menu,\n        config.positionStrategy as FlexibleConnectedPositionStrategy,\n      );\n      this._overlayRef = this._overlay.create(config);\n    }\n\n    return this._overlayRef;\n  }\n\n  /**\n   * This method builds the configuration object needed to create the overlay, the OverlayState.\n   * @returns OverlayConfig\n   */\n  private _getOverlayConfig(menu: MatMenuPanel): OverlayConfig {\n    // override overlay to avoid resizing of popups\n    const positionStrategy = this._overlay.position()\n      .flexibleConnectedTo(this._element)\n      .withPush(true)\n      .withFlexibleDimensions(false)\n      .withTransformOriginOn('.mat-menu-panel, .mat-mdc-menu-panel');\n\n    // patch positionStrategy to disable push for Y axis\n    const curGetExactOverlayY = positionStrategy['_getExactOverlayY'];\n\n    positionStrategy['_getExactOverlayY'] = (...args) => {\n      const curIsPushed = positionStrategy['_isPushed'];\n      positionStrategy['_isPushed'] = false;\n      const value = curGetExactOverlayY.call(positionStrategy, ...args);\n      positionStrategy['_isPushed'] = curIsPushed;\n      return value;\n    };\n\n    return new OverlayConfig({\n      positionStrategy,\n      scrollStrategy: this._scrollStrategy(),\n      direction: this._dir\n    });\n  }\n\n  /**\n   * Listens to changes in the position of the overlay and sets the correct classes\n   * on the menu based on the new position. This ensures the animation origin is always\n   * correct, even if a fallback position is used for the overlay.\n   */\n  private _subscribeToPositions(menu: MatMenuPanel, position: FlexibleConnectedPositionStrategy) {\n    if (menu.setPositionClasses) {\n      position.positionChanges.subscribe(change => {\n        const posX: MenuPositionX = change.connectionPair.overlayX === 'start' ? 'after' : 'before';\n        const posY: MenuPositionY = change.connectionPair.overlayY === 'top' ? 'below' : 'above';\n\n        if (!this._lastPosition || this._lastPosition.originX !== change.connectionPair.originX ||\n          this._lastPosition.originY !== change.connectionPair.originY) {\n          // selected position changed, we must run detect changes to update arrow css\n          this._lastPosition = change.connectionPair;\n          // this._ngZone.run(() => setTimeout(() => {}));\n          this._ngZone.run(() => menu.setPositionClasses(posX, posY));\n        }\n      });\n    }\n  }\n\n  /**\n   * Sets the appropriate positions on a position strategy\n   * so the overlay connects with the trigger correctly.\n   */\n  private _setPosition(menu: MatMenuPanel, positionStrategy: FlexibleConnectedPositionStrategy) {\n    // override position strategy to support open to the sides\n    let [originX, originFallbackX]: HorizontalConnectionPos[] =\n      menu.xPosition === 'before' ? ['end', 'start'] : ['start', 'end'];\n\n    const [overlayY, overlayFallbackY]: VerticalConnectionPos[] =\n      menu.yPosition === 'above' ? ['bottom', 'top'] : ['top', 'bottom'];\n\n    let [originY, originFallbackY] = [overlayY, overlayFallbackY];\n    let [overlayX, overlayFallbackX] = [originX, originFallbackX];\n\n    // align popup's arrow to center of attached element if element size < 70\n    const offsetX = this.popup.offsetX || ((this.popup.alignCenter || (this._element.nativeElement.offsetWidth < 130 &&\n      this.popup.alignCenter === undefined)) && !this.popup.horizontal ? (this._element.nativeElement.offsetWidth / -2 + 29) *\n      (menu.xPosition === 'before' ? 1 : -1) : 0);\n\n    const offsetY = this.popup.offsetY || ((this.popup.alignCenter || (this._element.nativeElement.offsetHeight < 80 &&\n      this.popup.alignCenter === undefined)) && this.popup.horizontal ? (this._element.nativeElement.offsetHeight / 2 - 29) *\n      (menu.yPosition === 'below' ? 1 : -1) : 0);\n\n    if (this.popup.horizontal) {\n      // When the menu is a sub-menu, it should always align itself\n      // to the edges of the trigger, instead of overlapping it.\n      overlayFallbackX = originX = menu.xPosition === 'before' ? 'start' : 'end';\n      originFallbackX = overlayX = originX === 'end' ? 'start' : 'end';\n    } else if (!menu.overlapTrigger) {\n      originY = overlayY === 'top' ? 'bottom' : 'top';\n      originFallbackY = overlayFallbackY === 'top' ? 'bottom' : 'top';\n    }\n\n    const original = {originX, originY, overlayX, overlayY, offsetX, offsetY};\n    const flipX = {originX: originFallbackX, originY, overlayX: overlayFallbackX, overlayY, offsetX: -offsetX, offsetY};\n    const flipY = {originX, originY: originFallbackY, overlayX, overlayY: overlayFallbackY, offsetX, offsetY: -offsetY};\n    const flipXY = {originX: originFallbackX, originY: originFallbackY, overlayX: overlayFallbackX, overlayY: overlayFallbackY,\n      offsetX: -offsetX, offsetY: -offsetY};\n\n    positionStrategy.withPositions(this.popup.horizontal ? [original, flipX] : [original, flipY, flipXY]);\n  }\n\n  /** Returns a stream that emits whenever an action that should close the menu occurs. */\n  private _menuClosingActions() {\n    const backdrop = this._overlayRef!.backdropClick();\n    const detachments = this._overlayRef!.detachments();\n    const parentClose = observableOf();\n    const hover = observableOf();\n\n    return merge(backdrop, parentClose as Observable<void>, hover, detachments);\n  }\n\n  /** Gets the portal that should be attached to the overlay. */\n  private _getPortal(menu: MatMenuPanel): TemplatePortal {\n    // Note that we can avoid this check by keeping the portal on the menu panel.\n    // While it would be cleaner, we'd have to introduce another required method on\n    // `MatMenuPanel`, making it harder to consume.\n    if (!this._portal || this._portal.templateRef !== menu.templateRef) {\n      this._portal = new TemplatePortal(menu.templateRef, this._viewContainerRef);\n    }\n\n    return this._portal;\n  }\n\n  /// custom code\n\n  @HostListener('click')\n  _click() {\n    // element click\n    if (this._initialized && this.popup.closeOnClick) {\n      this.close(false);\n    }\n  }\n\n  private _sync() {\n    const isTriggerVisible = !!this._element.nativeElement.offsetParent;\n\n    if (this._menu && this.popup.name) {\n      if (this.enabled && isTriggerVisible && !this.tutorialService.getTaskCompleted(this.popup.name) &&\n        !this.tutorialService.disabled &&\n        this.tutorialService.evalMustCompleted(this.mustCompleted) &&\n        this.tutorialService.evalMustCompleted(this.popup.mustCompleted) &&\n        this.tutorialService.evalMustNotDisplaying(this.popup.mustNotDisplaying)) {\n\n        // should be visible, but let's check if popup not already in use by other trigger (in table or ngFor)\n        if (!this.popup.trigger) {\n          this._initialized = true;\n          this.popup.trigger = this;\n          this.popup.data = this.data;\n          clearTimeout(this._timer);\n          this._timer = setTimeout(() => this.openMenu(), 500);\n          this.tutorialService.setIsDisplaying(this.popup.name, true);\n          this.popup.opened.emit();\n        }\n      } else if (this._initialized) {\n        // only close if this is our popup (initialized)\n        this._initialized = false;\n        this.popup.trigger = null;\n        this.popup.data = null;\n        clearTimeout(this._timer);\n        this.closeMenu();\n        this.tutorialService.setIsDisplaying(this.popup.name, false);\n        this.popup.closed.emit();\n      }\n    }\n  }\n\n  reposition() {\n    if (this._initialized && this._componentSubscription) {\n      this.closeMenu();\n      this.openMenu();\n    }\n  }\n\n  close(buttonClicked: boolean) {\n    this.tutorialService.logUserAction(this.popup.name, buttonClicked ? BdcDisplayEventAction.ButtonClicked :\n      BdcDisplayEventAction.UserClosed);\n    this.tutorialService.setTaskCompleted(this.popup.name);\n    this.tutorialService.setTasks(this.popup.onCloseCompleteTask);\n\n    if (buttonClicked) {\n      this.tutorialService.setTasks(this.popup.onButtonCompleteTask);\n    }\n  }\n}\n","/*\n * Public API Surface of bdc-walkthrough\n */\n\nexport * from './lib/bdc-walk.service';\nexport * from './lib/tutorial-dialog/tutorial-dialog.component';\nexport * from './lib/tutorial-popup/tutorial-popup.component';\nexport * from './lib/tutorial-popup/tutorial-trigger.directive';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i2.BdcWalkService","i1.BdcWalkService","observableOf"],"mappings":"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"}