{"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","/**\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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"}