{"version":3,"file":"abbasmgz-ngx-web-tour.mjs","sources":["../../../projects/ngx-web-tour/src/lib/components/tour-tooltip/tour-tooltip.component.ts","../../../projects/ngx-web-tour/src/lib/components/tour-tooltip/tour-tooltip.component.html","../../../projects/ngx-web-tour/src/lib/components/tour-backdrop/tour-backdrop.component.ts","../../../projects/ngx-web-tour/src/lib/components/tour-backdrop/tour-backdrop.component.html","../../../projects/ngx-web-tour/src/lib/models/tour-i18n.model.ts","../../../projects/ngx-web-tour/src/lib/services/tour-i18n.service.ts","../../../projects/ngx-web-tour/src/lib/services/tour.service.ts","../../../projects/ngx-web-tour/src/lib/directives/tour.directive.ts","../../../projects/ngx-web-tour/src/lib/ngx-web-tour.module.ts","../../../projects/ngx-web-tour/src/public-api.ts","../../../projects/ngx-web-tour/src/abbasmgz-ngx-web-tour.ts"],"sourcesContent":["import {\n  Component,\n  Input,\n  Output,\n  EventEmitter,\n  OnInit,\n  OnDestroy,\n  ElementRef,\n  ViewChild,\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n} from '@angular/core';\nimport { TourStep } from '../../models/tour-step.model';\n\n@Component({\n  selector: 'ngx-tour-tooltip',\n  templateUrl: './tour-tooltip.component.html',\n  styleUrls: ['./tour-tooltip.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class TourTooltipComponent implements OnInit, OnDestroy {\n  @Input() step!: TourStep;\n  @Input() currentIndex = 0;\n  @Input() totalSteps = 0;\n  @Input() showProgress = true;\n  @Input() allowClose = true;\n\n  @Output() next = new EventEmitter<void>();\n  @Output() prev = new EventEmitter<void>();\n  @Output() done = new EventEmitter<void>();\n  @Output() close = new EventEmitter<void>();\n\n  @ViewChild('tooltip', { static: false }) tooltipEl!: ElementRef<HTMLElement>;\n\n  position = { top: '0px', left: '0px' };\n  arrowPosition: 'top' | 'bottom' | 'left' | 'right' = 'top';\n  isVisible = false;\n\n  constructor(private cdr: ChangeDetectorRef) {}\n\n  ngOnInit(): void {\n    this.calculatePosition();\n    setTimeout(() => {\n      this.isVisible = true;\n      this.cdr.markForCheck();\n    }, 50);\n  }\n\n  ngOnDestroy(): void {\n    this.isVisible = false;\n  }\n\n  get isFirstStep(): boolean {\n    return this.currentIndex === 0;\n  }\n\n  get isLastStep(): boolean {\n    return this.currentIndex === this.totalSteps - 1;\n  }\n\n  get progressPercentage(): number {\n    return ((this.currentIndex + 1) / this.totalSteps) * 100;\n  }\n\n  onNext(): void {\n    this.next.emit();\n  }\n\n  onPrev(): void {\n    this.prev.emit();\n  }\n\n  onDone(): void {\n    this.done.emit();\n  }\n\n  onClose(): void {\n    this.close.emit();\n  }\n\n  private calculatePosition(): void {\n    if (!this.step?.element) return;\n\n    const targetRect = this.step.element.getBoundingClientRect();\n    const tooltipWidth = 320;\n    const tooltipHeight = 200;\n    const offset = 20;\n\n    const preferredPosition = this.step.position || 'auto';\n    let position = preferredPosition;\n\n    // Auto-detect best position\n    if (position === 'auto') {\n      const spaceTop = targetRect.top;\n      const spaceBottom = window.innerHeight - targetRect.bottom;\n      const spaceLeft = targetRect.left;\n      const spaceRight = window.innerWidth - targetRect.right;\n\n      if (spaceBottom >= tooltipHeight + offset) {\n        position = 'bottom';\n      } else if (spaceTop >= tooltipHeight + offset) {\n        position = 'top';\n      } else if (spaceRight >= tooltipWidth + offset) {\n        position = 'right';\n      } else if (spaceLeft >= tooltipWidth + offset) {\n        position = 'left';\n      } else {\n        position = 'bottom';\n      }\n    }\n\n    let top = 0;\n    let left = 0;\n\n    switch (position) {\n      case 'bottom':\n        top = targetRect.bottom + offset;\n        left = targetRect.left + targetRect.width / 2 - tooltipWidth / 2;\n        this.arrowPosition = 'top';\n        break;\n      case 'top':\n        top = targetRect.top - tooltipHeight - offset;\n        left = targetRect.left + targetRect.width / 2 - tooltipWidth / 2;\n        this.arrowPosition = 'bottom';\n        break;\n      case 'right':\n        top = targetRect.top + targetRect.height / 2 - tooltipHeight / 2;\n        left = targetRect.right + offset;\n        this.arrowPosition = 'left';\n        break;\n      case 'left':\n        top = targetRect.top + targetRect.height / 2 - tooltipHeight / 2;\n        left = targetRect.left - tooltipWidth - offset;\n        this.arrowPosition = 'right';\n        break;\n    }\n\n    // Keep tooltip within viewport\n    const padding = 10;\n    top = Math.max(padding, Math.min(top, window.innerHeight - tooltipHeight - padding));\n    left = Math.max(padding, Math.min(left, window.innerWidth - tooltipWidth - padding));\n\n    this.position = {\n      top: `${top}px`,\n      left: `${left}px`,\n    };\n\n    this.cdr.markForCheck();\n  }\n}\n","<div\n  #tooltip\n  class=\"ngx-tour-tooltip\"\n  [class.visible]=\"isVisible\"\n  [class.arrow-top]=\"arrowPosition === 'top'\"\n  [class.arrow-bottom]=\"arrowPosition === 'bottom'\"\n  [class.arrow-left]=\"arrowPosition === 'left'\"\n  [class.arrow-right]=\"arrowPosition === 'right'\"\n  [style.top]=\"position.top\"\n  [style.left]=\"position.left\"\n>\n  <div class=\"ngx-tour-tooltip-arrow\"></div>\n  \n  <button\n    *ngIf=\"allowClose\"\n    class=\"ngx-tour-close\"\n    (click)=\"onClose()\"\n    aria-label=\"Close tour\"\n  >\n    <svg width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\">\n      <path d=\"M1 1L13 13M13 1L1 13\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\"/>\n    </svg>\n  </button>\n\n  <div class=\"ngx-tour-content\">\n    <h3 *ngIf=\"step.title\" class=\"ngx-tour-title\">{{ step.title }}</h3>\n    <p class=\"ngx-tour-text\">{{ step.text }}</p>\n  </div>\n\n  <div class=\"ngx-tour-footer\">\n    <div *ngIf=\"showProgress\" class=\"ngx-tour-progress\">\n      <div class=\"ngx-tour-progress-bar\">\n        <div\n          class=\"ngx-tour-progress-fill\"\n          [style.width.%]=\"progressPercentage\"\n        ></div>\n      </div>\n      <span class=\"ngx-tour-progress-text\">\n        {{ currentIndex + 1 }} / {{ totalSteps }}\n      </span>\n    </div>\n\n    <div class=\"ngx-tour-actions\">\n      <button\n        *ngIf=\"!isFirstStep\"\n        class=\"ngx-tour-btn ngx-tour-btn-secondary\"\n        (click)=\"onPrev()\"\n      >\n        {{ step.prevBtnText || 'Previous' }}\n      </button>\n      \n      <button\n        *ngIf=\"!isLastStep\"\n        class=\"ngx-tour-btn ngx-tour-btn-primary\"\n        (click)=\"onNext()\"\n      >\n        {{ step.nextBtnText || 'Next' }}\n      </button>\n      \n      <button\n        *ngIf=\"isLastStep\"\n        class=\"ngx-tour-btn ngx-tour-btn-primary\"\n        (click)=\"onDone()\"\n      >\n        {{ step.doneBtnText || 'Done' }}\n      </button>\n    </div>\n  </div>\n</div>\n","import {\n  Component,\n  Input,\n  Output,\n  EventEmitter,\n  OnInit,\n  OnDestroy,\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  AfterViewInit,\n} from '@angular/core';\n\n@Component({\n  selector: 'ngx-tour-backdrop',\n  templateUrl: './tour-backdrop.component.html',\n  styleUrls: ['./tour-backdrop.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class TourBackdropComponent implements OnInit, AfterViewInit, OnDestroy {\n  @Input() targetElement!: HTMLElement;\n  @Input() color = 'rgba(0, 0, 0, 0.7)';\n  @Input() padding = 8;\n\n  @Output() backdropClick = new EventEmitter<void>();\n\n  isVisible = false;\n  highlightStyle = {\n    top: 0,\n    left: 0,\n    width: 0,\n    height: 0,\n  };\n\n  private resizeObserver?: ResizeObserver;\n  private mutationObserver?: MutationObserver;\n\n  constructor(private cdr: ChangeDetectorRef) {}\n\n  ngOnInit(): void {\n    this.updateHighlightPosition();\n    this.setupObservers();\n  }\n\n  ngAfterViewInit(): void {\n    setTimeout(() => {\n      this.isVisible = true;\n      this.cdr.markForCheck();\n    }, 50);\n  }\n\n  ngOnDestroy(): void {\n    this.cleanupObservers();\n  }\n\n  onBackdropClick(): void {\n    this.backdropClick.emit();\n  }\n\n  private updateHighlightPosition(): void {\n    if (!this.targetElement) return;\n\n    const rect = this.targetElement.getBoundingClientRect();\n\n    this.highlightStyle = {\n      top: Math.max(0, rect.top - this.padding),\n      left: Math.max(0, rect.left - this.padding),\n      width: rect.width + this.padding * 2,\n      height: rect.height + this.padding * 2,\n    };\n\n    this.cdr.markForCheck();\n  }\n\n  private setupObservers(): void {\n    // Watch for element resize\n    if (typeof ResizeObserver !== 'undefined') {\n      this.resizeObserver = new ResizeObserver(() => {\n        this.updateHighlightPosition();\n      });\n      this.resizeObserver.observe(this.targetElement);\n    }\n\n    // Watch for DOM changes\n    if (typeof MutationObserver !== 'undefined') {\n      this.mutationObserver = new MutationObserver(() => {\n        this.updateHighlightPosition();\n      });\n      this.mutationObserver.observe(document.body, {\n        attributes: true,\n        childList: true,\n        subtree: true,\n      });\n    }\n\n    // Watch for scroll and resize\n    window.addEventListener('scroll', this.handleScroll, true);\n    window.addEventListener('resize', this.handleResize);\n  }\n\n  private cleanupObservers(): void {\n    if (this.resizeObserver) {\n      this.resizeObserver.disconnect();\n    }\n\n    if (this.mutationObserver) {\n      this.mutationObserver.disconnect();\n    }\n\n    window.removeEventListener('scroll', this.handleScroll, true);\n    window.removeEventListener('resize', this.handleResize);\n  }\n\n  private handleScroll = (): void => {\n    this.updateHighlightPosition();\n  };\n\n  private handleResize = (): void => {\n    this.updateHighlightPosition();\n  };\n}\n","<div\n  class=\"ngx-tour-backdrop\"\n  [class.visible]=\"isVisible\"\n  (click)=\"onBackdropClick()\"\n>\n  <svg class=\"backdrop-mask\" width=\"100%\" height=\"100%\">\n    <defs>\n      <mask id=\"backdrop-mask\">\n        <rect width=\"100%\" height=\"100%\" fill=\"white\"/>\n        <rect\n          [attr.x]=\"highlightStyle.left\"\n          [attr.y]=\"highlightStyle.top\"\n          [attr.width]=\"highlightStyle.width\"\n          [attr.height]=\"highlightStyle.height\"\n          [attr.rx]=\"8\"\n          fill=\"black\"\n        />\n      </mask>\n    </defs>\n    <rect\n      width=\"100%\"\n      height=\"100%\"\n      [attr.fill]=\"color\"\n      mask=\"url(#backdrop-mask)\"\n    />\n  </svg>\n</div>\n","export interface TourTranslations {\n  nextBtn?: string;\n  prevBtn?: string;\n  doneBtn?: string;\n  skipBtn?: string;\n  closeBtn?: string;\n  stepIndicator?: string; // e.g., \"Step {current} of {total}\"\n}\n\nexport interface TourLanguageConfig {\n  [languageCode: string]: TourTranslations;\n}\n\nexport const DEFAULT_TRANSLATIONS: TourLanguageConfig = {\n  en: {\n    nextBtn: 'Next',\n    prevBtn: 'Previous',\n    doneBtn: 'Done',\n    skipBtn: 'Skip',\n    closeBtn: 'Close',\n    stepIndicator: '{current} / {total}',\n  },\n  fa: {\n    nextBtn: 'بعدی',\n    prevBtn: 'قبلی',\n    doneBtn: 'پایان',\n    skipBtn: 'رد شدن',\n    closeBtn: 'بستن',\n    stepIndicator: '{current} از {total}',\n  },\n  ar: {\n    nextBtn: 'التالي',\n    prevBtn: 'السابق',\n    doneBtn: 'تم',\n    skipBtn: 'تخطي',\n    closeBtn: 'إغلاق',\n    stepIndicator: '{current} من {total}',\n  },\n  es: {\n    nextBtn: 'Siguiente',\n    prevBtn: 'Anterior',\n    doneBtn: 'Hecho',\n    skipBtn: 'Saltar',\n    closeBtn: 'Cerrar',\n    stepIndicator: '{current} de {total}',\n  },\n  fr: {\n    nextBtn: 'Suivant',\n    prevBtn: 'Précédent',\n    doneBtn: 'Terminé',\n    skipBtn: 'Passer',\n    closeBtn: 'Fermer',\n    stepIndicator: '{current} sur {total}',\n  },\n  de: {\n    nextBtn: 'Weiter',\n    prevBtn: 'Zurück',\n    doneBtn: 'Fertig',\n    skipBtn: 'Überspringen',\n    closeBtn: 'Schließen',\n    stepIndicator: '{current} von {total}',\n  },\n  tr: {\n    nextBtn: 'İleri',\n    prevBtn: 'Geri',\n    doneBtn: 'Tamamla',\n    skipBtn: 'Atla',\n    closeBtn: 'Kapat',\n    stepIndicator: '{current} / {total}',\n  },\n  ru: {\n    nextBtn: 'Далее',\n    prevBtn: 'Назад',\n    doneBtn: 'Готово',\n    skipBtn: 'Пропустить',\n    closeBtn: 'Закрыть',\n    stepIndicator: '{current} из {total}',\n  },\n  zh: {\n    nextBtn: '下一步',\n    prevBtn: '上一步',\n    doneBtn: '完成',\n    skipBtn: '跳过',\n    closeBtn: '关闭',\n    stepIndicator: '{current} / {total}',\n  },\n  ja: {\n    nextBtn: '次へ',\n    prevBtn: '前へ',\n    doneBtn: '完了',\n    skipBtn: 'スキップ',\n    closeBtn: '閉じる',\n    stepIndicator: '{current} / {total}',\n  },\n  ko: {\n    nextBtn: '다음',\n    prevBtn: '이전',\n    doneBtn: '완료',\n    skipBtn: '건너뛰기',\n    closeBtn: '닫기',\n    stepIndicator: '{current} / {total}',\n  },\n  pt: {\n    nextBtn: 'Próximo',\n    prevBtn: 'Anterior',\n    doneBtn: 'Concluído',\n    skipBtn: 'Pular',\n    closeBtn: 'Fechar',\n    stepIndicator: '{current} de {total}',\n  },\n  it: {\n    nextBtn: 'Avanti',\n    prevBtn: 'Indietro',\n    doneBtn: 'Fatto',\n    skipBtn: 'Salta',\n    closeBtn: 'Chiudi',\n    stepIndicator: '{current} di {total}',\n  },\n};\n","import { Injectable } from '@angular/core';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { TourTranslations, TourLanguageConfig, DEFAULT_TRANSLATIONS } from '../models/tour-i18n.model';\n\n@Injectable({ providedIn: 'root' })\nexport class TourI18nService {\n  private currentLanguage = 'en';\n  private customTranslations: TourLanguageConfig = {};\n  private translations: TourLanguageConfig = { ...DEFAULT_TRANSLATIONS };\n\n  private languageSubject = new BehaviorSubject<string>(this.currentLanguage);\n  public language$: Observable<string> = this.languageSubject.asObservable();\n\n  constructor() {\n    // Try to detect browser language\n    this.detectBrowserLanguage();\n  }\n\n  /**\n   * Set the current language\n   */\n  setLanguage(languageCode: string): void {\n    if (this.translations[languageCode]) {\n      this.currentLanguage = languageCode;\n      this.languageSubject.next(languageCode);\n    } else {\n      console.warn(`Language \"${languageCode}\" not found. Falling back to English.`);\n      this.currentLanguage = 'en';\n      this.languageSubject.next('en');\n    }\n  }\n\n  /**\n   * Get the current language code\n   */\n  getCurrentLanguage(): string {\n    return this.currentLanguage;\n  }\n\n  /**\n   * Get current language translations\n   */\n  getCurrentTranslations(): TourTranslations {\n    return this.translations[this.currentLanguage] || this.translations['en'];\n  }\n\n  /**\n   * Get a specific translation\n   */\n  translate(key: keyof TourTranslations): string {\n    const translations = this.getCurrentTranslations();\n    return translations[key] || DEFAULT_TRANSLATIONS['en'][key] || '';\n  }\n\n  /**\n   * Get translated text with variable replacement\n   */\n  translateWithParams(key: keyof TourTranslations, params: { [key: string]: any }): string {\n    let text = this.translate(key);\n    \n    Object.keys(params).forEach(paramKey => {\n      text = text.replace(`{${paramKey}}`, params[paramKey]);\n    });\n    \n    return text;\n  }\n\n  /**\n   * Add or update custom translations for a language\n   */\n  addTranslations(languageCode: string, translations: TourTranslations): void {\n    if (!this.translations[languageCode]) {\n      this.translations[languageCode] = { ...DEFAULT_TRANSLATIONS['en'] };\n    }\n    \n    this.translations[languageCode] = {\n      ...this.translations[languageCode],\n      ...translations,\n    };\n    \n    this.customTranslations[languageCode] = translations;\n  }\n\n  /**\n   * Add multiple language translations at once\n   */\n  addMultipleTranslations(translations: TourLanguageConfig): void {\n    Object.keys(translations).forEach(lang => {\n      this.addTranslations(lang, translations[lang]);\n    });\n  }\n\n  /**\n   * Get all available languages\n   */\n  getAvailableLanguages(): string[] {\n    return Object.keys(this.translations);\n  }\n\n  /**\n   * Check if a language is supported\n   */\n  isLanguageSupported(languageCode: string): boolean {\n    return !!this.translations[languageCode];\n  }\n\n  /**\n   * Reset to default translations\n   */\n  resetTranslations(): void {\n    this.translations = { ...DEFAULT_TRANSLATIONS };\n    this.customTranslations = {};\n  }\n\n  /**\n   * Detect and set browser language\n   */\n  private detectBrowserLanguage(): void {\n    if (typeof window !== 'undefined' && window.navigator) {\n      const browserLang = window.navigator.language.split('-')[0]; // e.g., 'en-US' -> 'en'\n      \n      if (this.isLanguageSupported(browserLang)) {\n        this.setLanguage(browserLang);\n      }\n    }\n  }\n\n  /**\n   * Get RTL (Right-to-Left) status for current language\n   */\n  isRTL(): boolean {\n    const rtlLanguages = ['ar', 'fa', 'he', 'ur'];\n    return rtlLanguages.includes(this.currentLanguage);\n  }\n}\n","import { Injectable, ComponentRef, ApplicationRef, Injector, ViewContainerRef, ComponentFactoryResolver } from '@angular/core';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { TourStep, TourConfig, TourState } from '../models/tour-step.model';\nimport { TourTooltipComponent } from '../components/tour-tooltip/tour-tooltip.component';\nimport { TourBackdropComponent } from '../components/tour-backdrop/tour-backdrop.component';\nimport { TourI18nService } from './tour-i18n.service';\n\n@Injectable({ providedIn: 'root' })\nexport class TourService {\n  private tours = new Map<string, TourStep[]>();\n  private currentSteps: TourStep[] = [];\n  private currentIndex = 0;\n  private currentTourName: string | null = null;\n\n  private tooltipRef: ComponentRef<TourTooltipComponent> | null = null;\n  private backdropRef: ComponentRef<TourBackdropComponent> | null = null;\n\n  private stateSubject = new BehaviorSubject<TourState>({\n    isActive: false,\n    currentStep: 0,\n    totalSteps: 0,\n    tourName: null,\n  });\n\n  public state$: Observable<TourState> = this.stateSubject.asObservable();\n\n  private defaultConfig: TourConfig = {\n    backdrop: true,\n    backdropColor: 'rgba(0, 0, 0, 0.7)',\n    closeOnBackdropClick: true,\n    showProgress: true,\n    allowClose: true,\n    nextBtnText: undefined,\n    prevBtnText: undefined,\n    doneBtnText: undefined,\n    skipBtnText: undefined,\n    animationDuration: 300,\n    useI18n: true,\n  };\n\n  private config: TourConfig = { ...this.defaultConfig };\n\n  constructor(\n    private appRef: ApplicationRef,\n    private injector: Injector,\n    private componentFactoryResolver: ComponentFactoryResolver,\n    private i18nService: TourI18nService\n  ) {}\n\n  register(name: string, step: TourStep): void {\n    if (!this.tours.has(name)) {\n      this.tours.set(name, []);\n    }\n    this.tours.get(name)!.push(step);\n  }\n\n  unregister(name: string, stepId: string): void {\n    const steps = this.tours.get(name);\n    if (steps) {\n      const index = steps.findIndex((s) => s.id === stepId);\n      if (index !== -1) {\n        steps.splice(index, 1);\n      }\n    }\n  }\n\n  configure(config: Partial<TourConfig>): void {\n    this.config = { ...this.defaultConfig, ...config };\n  }\n\n  start(name: string, config?: Partial<TourConfig>): void {\n    if (config) {\n      this.configure(config);\n    }\n\n    if (this.config.language) {\n      this.i18nService.setLanguage(this.config.language);\n    }\n\n    const steps = this.tours.get(name);\n    if (!steps || !steps.length) {\n      console.warn(`Tour \"${name}\" not found or has no steps`);\n      return;\n    }\n\n    this.currentSteps = [...steps].sort((a, b) => a.priority - b.priority);\n    this.currentIndex = 0;\n    this.currentTourName = name;\n\n    this.updateState();\n    this.showStep();\n  }\n\n  next(): void {\n    if (this.currentIndex < this.currentSteps.length - 1) {\n      this.currentIndex++;\n      this.updateState();\n      this.showStep();\n    }\n  }\n\n  previous(): void {\n    if (this.currentIndex > 0) {\n      this.currentIndex--;\n      this.updateState();\n      this.showStep();\n    }\n  }\n\n  end(): void {\n    this.cleanup();\n    this.currentSteps = [];\n    this.currentIndex = 0;\n    this.currentTourName = null;\n    this.updateState();\n  }\n\n  private showStep(): void {\n    const step = this.currentSteps[this.currentIndex];\n    if (!step) return;\n\n    this.cleanup();\n\n    if (this.config.backdrop) {\n      this.createBackdrop(step.element);\n    }\n\n    step.element.scrollIntoView({\n      behavior: 'smooth',\n      block: 'center',\n      inline: 'center',\n    });\n\n    setTimeout(() => {\n      this.createTooltip(step);\n    }, this.config.animationDuration || 300);\n  }\n\n  private createBackdrop(targetElement: HTMLElement): void {\n    const factory = this.componentFactoryResolver.resolveComponentFactory(TourBackdropComponent);\n    const componentRef = factory.create(this.injector);\n    \n    componentRef.instance.targetElement = targetElement;\n    componentRef.instance.color = this.config.backdropColor || 'rgba(0, 0, 0, 0.7)';\n    componentRef.instance.backdropClick.subscribe(() => {\n      if (this.config.closeOnBackdropClick) {\n        this.end();\n      }\n    });\n\n    this.appRef.attachView(componentRef.hostView);\n    const domElem = componentRef.location.nativeElement as HTMLElement;\n    document.body.appendChild(domElem);\n\n    this.backdropRef = componentRef;\n  }\n\n  private createTooltip(step: TourStep): void {\n    const factory = this.componentFactoryResolver.resolveComponentFactory(TourTooltipComponent);\n    const componentRef = factory.create(this.injector);\n\n    const useI18n = this.config.useI18n !== false;\n    const nextBtnText = step.nextBtnText || this.config.nextBtnText || (useI18n ? this.i18nService.translate('nextBtn') : 'Next');\n    const prevBtnText = step.prevBtnText || this.config.prevBtnText || (useI18n ? this.i18nService.translate('prevBtn') : 'Previous');\n    const doneBtnText = step.doneBtnText || this.config.doneBtnText || (useI18n ? this.i18nService.translate('doneBtn') : 'Done');\n\n    const stepWithTranslations = {\n      ...step,\n      nextBtnText,\n      prevBtnText,\n      doneBtnText,\n    };\n\n    componentRef.instance.step = stepWithTranslations;\n    componentRef.instance.currentIndex = this.currentIndex;\n    componentRef.instance.totalSteps = this.currentSteps.length;\n    componentRef.instance.showProgress = this.config.showProgress ?? step.showProgress ?? true;\n    componentRef.instance.allowClose = this.config.allowClose ?? step.allowClose ?? true;\n\n    componentRef.instance.next.subscribe(() => this.next());\n    componentRef.instance.prev.subscribe(() => this.previous());\n    componentRef.instance.done.subscribe(() => this.end());\n    componentRef.instance.close.subscribe(() => this.end());\n\n    this.appRef.attachView(componentRef.hostView);\n    const domElem = componentRef.location.nativeElement as HTMLElement;\n    document.body.appendChild(domElem);\n\n    this.tooltipRef = componentRef;\n  }\n\n  private cleanup(): void {\n    if (this.tooltipRef) {\n      this.appRef.detachView(this.tooltipRef.hostView);\n      this.tooltipRef.destroy();\n      this.tooltipRef = null;\n    }\n\n    if (this.backdropRef) {\n      this.appRef.detachView(this.backdropRef.hostView);\n      this.backdropRef.destroy();\n      this.backdropRef = null;\n    }\n  }\n\n  private updateState(): void {\n    this.stateSubject.next({\n      isActive: this.currentSteps.length > 0 && this.currentIndex >= 0,\n      currentStep: this.currentIndex,\n      totalSteps: this.currentSteps.length,\n      tourName: this.currentTourName,\n    });\n  }\n\n  getTourSteps(name: string): TourStep[] {\n    return this.tours.get(name) || [];\n  }\n\n  hasTour(name: string): boolean {\n    return this.tours.has(name) && this.tours.get(name)!.length > 0;\n  }\n}\n","import {\n  Directive,\n  Input,\n  ElementRef,\n  AfterViewInit,\n  OnDestroy,\n} from '@angular/core';\nimport { TourService } from '../services/tour.service';\n\n@Directive({\n  selector: '[tour]'\n})\nexport class TourDirective implements AfterViewInit, OnDestroy {\n  @Input() tour!: string;\n  @Input() tourText!: string;\n  @Input() tourTitle?: string;\n  @Input() tourPriority = 0;\n  @Input() tourPosition: 'top' | 'bottom' | 'left' | 'right' | 'auto' = 'auto';\n  @Input() tourShowProgress?: boolean;\n  @Input() tourAllowClose?: boolean;\n  @Input() tourNextBtnText?: string;\n  @Input() tourPrevBtnText?: string;\n  @Input() tourDoneBtnText?: string;\n\n  private stepId: string;\n\n  constructor(\n    private el: ElementRef<HTMLElement>,\n    private tourService: TourService\n  ) {\n    this.stepId = this.generateUUID();\n  }\n\n  private generateUUID(): string {\n    return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, (c) => {\n      const r = Math.random() * 16 | 0;\n      const v = c === 'x' ? r : (r & 0x3 | 0x8);\n      return v.toString(16);\n    });\n  }\n\n  ngAfterViewInit(): void {\n    this.tourService.register(this.tour, {\n      id: this.stepId,\n      element: this.el.nativeElement,\n      title: this.tourTitle,\n      text: this.tourText,\n      priority: this.tourPriority,\n      position: this.tourPosition,\n      showProgress: this.tourShowProgress,\n      allowClose: this.tourAllowClose,\n      nextBtnText: this.tourNextBtnText,\n      prevBtnText: this.tourPrevBtnText,\n      doneBtnText: this.tourDoneBtnText,\n    });\n  }\n\n  ngOnDestroy(): void {\n    this.tourService.unregister(this.tour, this.stepId);\n  }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TourDirective } from './directives/tour.directive';\nimport { TourTooltipComponent } from './components/tour-tooltip/tour-tooltip.component';\nimport { TourBackdropComponent } from './components/tour-backdrop/tour-backdrop.component';\n\n@NgModule({\n  declarations: [TourDirective, TourTooltipComponent, TourBackdropComponent],\n  imports: [CommonModule],\n  exports: [TourDirective, TourTooltipComponent, TourBackdropComponent],\n})\nexport class NgxWebTourModule {}\n","/*\n * Public API Surface of ngx-web-tour\n */\n\nexport * from './lib/services/tour.service';\nexport * from './lib/services/tour-i18n.service';\nexport * from './lib/directives/tour.directive';\nexport * from './lib/components/tour-tooltip/tour-tooltip.component';\nexport * from './lib/components/tour-backdrop/tour-backdrop.component';\nexport * from './lib/models/tour-step.model';\nexport * from './lib/models/tour-i18n.model';\nexport * from './lib/ngx-web-tour.module';","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.TourI18nService","i1.TourService"],"mappings":"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"}