{"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/lib/bdc-walk.module.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 {\n  AfterContentInit,\n  Component,\n  EventEmitter,\n  Input,\n  OnChanges,\n  OnDestroy,\n  Output,\n  TemplateRef,\n  ViewChild, ViewEncapsulation\n} 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 {\n  Component,\n  ContentChild,\n  EventEmitter, HostBinding,\n  Input,\n  OnChanges,\n  OnInit,\n  Output,\n  TemplateRef,\n  ViewChild,\n  ViewEncapsulation\n} from '@angular/core';\nimport {MatMenu, MenuPositionX, MenuPositionY} from '@angular/material/menu';\nimport {BdcWalkService} from '../bdc-walk.service';\nimport {BdcWalkTriggerDirective} from './tutorial-trigger.directive';\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})\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 {\n  ConnectionPositionPair,\n  FlexibleConnectedPositionStrategy,\n  HorizontalConnectionPos,\n  Overlay,\n  OverlayConfig,\n  OverlayRef,\n  ScrollStrategy,\n  VerticalConnectionPos,\n} from '@angular/cdk/overlay';\nimport {TemplatePortal} from '@angular/cdk/portal';\nimport {\n  AfterContentChecked,\n  AfterContentInit,\n  Directive,\n  ElementRef,\n  EventEmitter, HostListener,\n  Inject,\n  InjectionToken,\n  Input,\n  NgZone, OnChanges,\n  OnDestroy,\n  Optional,\n  Output,\n  Self,\n  ViewContainerRef,\n} from '@angular/core';\nimport {merge, Observable, of as observableOf, Subscription} from 'rxjs';\nimport {delay, filter, take, takeUntil} from 'rxjs/operators';\nimport {MatMenu, MAT_MENU_SCROLL_STRATEGY, MatMenuPanel, MenuPositionX, MenuPositionY} from '@angular/material/menu';\nimport {BdcWalkPopupComponent} from './tutorial-popup.component';\nimport {BdcDisplayEventAction, BdcWalkService} from '../bdc-walk.service';\n\n@Directive({\n  selector: '[bdcWalkTriggerFor]'\n})\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._startAnimation();\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._resetAnimation();\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 => event.toState === 'void'),\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","import { NgModule } from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatDialogModule } from '@angular/material/dialog';\nimport { MatMenuModule } from '@angular/material/menu';\nimport {BdcWalkDialogComponent} from './tutorial-dialog/tutorial-dialog.component';\nimport {BdcWalkPopupComponent} from './tutorial-popup/tutorial-popup.component';\nimport {BdcWalkTriggerDirective} from './tutorial-popup/tutorial-trigger.directive';\n\n@NgModule({\n  declarations: [BdcWalkDialogComponent, BdcWalkPopupComponent, BdcWalkTriggerDirective],\n  imports: [\n    CommonModule, MatButtonModule, MatDialogModule, MatMenuModule\n  ],\n  exports: [BdcWalkDialogComponent, BdcWalkPopupComponent, BdcWalkTriggerDirective]\n})\nexport class BdcWalkModule { }\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';\nexport * from './lib/bdc-walk.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i2.BdcWalkService","i1.BdcWalkService","observableOf","i3"],"mappings":"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"}