{"version":3,"file":"ng-devui-steps-guide.mjs","sources":["../../devui/steps-guide/steps-guide.service.ts","../../devui/steps-guide/steps-guide.component.ts","../../devui/steps-guide/steps-guide.component.html","../../devui/steps-guide/steps-guide.directive.ts","../../devui/steps-guide/steps-guide.module.ts","../../devui/steps-guide/ng-devui-steps-guide.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\nimport { BehaviorSubject, ReplaySubject } from 'rxjs';\n\n@Injectable()\nexport class StepsGuideService {\n  private showGuideSource = new ReplaySubject<any>(1);\n  private currentIndexSource = new BehaviorSubject(0);\n  showGuideObs = this.showGuideSource.asObservable();\n  currentIndex = this.currentIndexSource.asObservable();\n\n  // 引导步骤\n  private steps = [];\n  private currentStep = 0;\n\n  // 切换向导的显示和销毁\n  showGuide(visible: boolean) {\n    this.showGuideSource.next(visible);\n  }\n\n  setCurrentIndex(index: number) {\n    this.currentStep = index;\n    this.currentIndexSource.next(index);\n  }\n\n  getCurrentStep() {\n    return this.currentStep;\n  }\n\n  setSteps(steps) {\n    this.steps = steps;\n  }\n\n  getSteps() {\n    return this.steps;\n  }\n}\n","import { DOCUMENT } from '@angular/common';\r\nimport { AfterViewInit, Component, ElementRef, HostBinding, Inject, OnDestroy, OnInit, Renderer2, TemplateRef } from '@angular/core';\r\nimport { I18nInterface, I18nService } from 'ng-devui/i18n';\r\nimport { PositionService } from 'ng-devui/position';\r\nimport { Subscription, fromEvent } from 'rxjs';\r\nimport { debounceTime, throttleTime } from 'rxjs/operators';\r\nimport { StepsGuideService } from './steps-guide.service';\r\nimport { ExtraConfig } from './steps-guide.types';\r\n\r\n@Component({\r\n  templateUrl: './steps-guide.component.html',\r\n  styleUrls: ['./steps-guide.component.scss'],\r\n  preserveWhitespaces: false,\r\n})\r\nexport class StepsGuideComponent implements OnInit, AfterViewInit, OnDestroy {\r\n  @HostBinding('class')\r\n  get class() {\r\n    return 'devui-step-item ' + this.position;\r\n  }\r\n  @HostBinding('style.display')\r\n  get display() {\r\n    return 'block';\r\n  }\r\n  triggerElement: HTMLElement;\r\n  scrollElement: HTMLElement;\r\n  pageName: string; // 页面名称，用于标记当页帮助信息是否关闭\r\n  title: string; // 引导标题\r\n  content: string | TemplateRef<any>; // 引导介绍内容\r\n  stepsCount: number; // 总步骤数\r\n  stepIndex: number; // 该步骤序号\r\n  position = 'top';\r\n  leftFix: number;\r\n  topFix: number;\r\n  zIndex = 1100;\r\n  extraConfig: ExtraConfig;\r\n  dots: Array<undefined> = [];\r\n  subScriber: Subscription;\r\n  SCROLL_REFRESH_INTERVAL = 100;\r\n  i18nCommonText: I18nInterface['stepsGuide'];\r\n  DOT_HORIZONTAL_MARGIN = 27;\r\n  DOT_VERTICAL_MARGIN = 22;\r\n  document: Document;\r\n\r\n  constructor(\r\n    private stepService: StepsGuideService,\r\n    private renderer: Renderer2,\r\n    private positionService: PositionService,\r\n    private elm: ElementRef,\r\n    private i18n: I18nService,\r\n    @Inject(DOCUMENT) private doc: any\r\n  ) {\r\n    this.document = this.doc;\r\n  }\r\n\r\n  ngOnInit() {\r\n    this.dots = new Array(this.stepsCount);\r\n    this.elm.nativeElement.style.zIndex = this.zIndex;\r\n    this.i18nCommonText = this.i18n.getI18nText().stepsGuide;\r\n    const i18nSubscription = this.i18n.langChange().subscribe((data) => {\r\n      this.i18nCommonText = data.stepsGuide;\r\n    });\r\n\r\n    this.subScriber = fromEvent(window, 'resize')\r\n      .pipe(debounceTime(this.SCROLL_REFRESH_INTERVAL))\r\n      .subscribe(() => {\r\n        this.updatePosition();\r\n      });\r\n    this.subScriber.add(i18nSubscription);\r\n  }\r\n\r\n  ngAfterViewInit() {\r\n    this.updatePosition();\r\n    if (!this.scrollElement) {\r\n      const currentScrollElement = this.positionService.getScrollParent(this.triggerElement);\r\n      this.scrollElement = currentScrollElement === this.document.body ? window : currentScrollElement;\r\n    }\r\n    const scrollSubscriber = fromEvent(this.scrollElement, 'scroll')\r\n      .pipe(throttleTime(this.SCROLL_REFRESH_INTERVAL, undefined, { leading: true, trailing: true }))\r\n      .subscribe(() => {\r\n        this.updatePosition();\r\n      });\r\n    this.subScriber.add(scrollSubscriber);\r\n  }\r\n\r\n  ngOnDestroy() {\r\n    if (this.subScriber) {\r\n      this.subScriber.unsubscribe();\r\n    }\r\n  }\r\n\r\n  updatePosition() {\r\n    const resPosition = this.position === 'right' ? 'right-top' : this.position;\r\n    const calcPosition = this.position === 'left' ? 'left-top' : resPosition;\r\n    const rect = this.positionService.positionElements(this.triggerElement, this.elm.nativeElement, calcPosition, true);\r\n    const targetRect = this.triggerElement.getBoundingClientRect();\r\n    let left = rect.left;\r\n    let top = rect.top;\r\n\r\n    switch (rect.placementPrimary) {\r\n    case 'top':\r\n      left = targetRect.left + this.triggerElement.clientWidth / 2 - this.elm.nativeElement.clientWidth / 2;\r\n      top = top + this.triggerElement.clientHeight / 2 - this.DOT_HORIZONTAL_MARGIN;\r\n      break;\r\n    case 'bottom':\r\n      left = targetRect.left + this.triggerElement.clientWidth / 2 - this.elm.nativeElement.clientWidth / 2;\r\n      top = top + this.DOT_HORIZONTAL_MARGIN / 2;\r\n      break;\r\n    case 'left':\r\n      left = left + this.triggerElement.clientWidth / 2 - this.DOT_HORIZONTAL_MARGIN;\r\n      top = top + this.triggerElement.clientHeight / 2 - this.DOT_VERTICAL_MARGIN;\r\n      break;\r\n    case 'right':\r\n      left = left - this.triggerElement.clientWidth / 2 + this.DOT_HORIZONTAL_MARGIN;\r\n      top = top + this.triggerElement.clientHeight / 2 - this.DOT_VERTICAL_MARGIN;\r\n      break;\r\n    default:\r\n    }\r\n\r\n    switch (rect.placementSecondary) {\r\n    case 'left':\r\n      left = targetRect.left;\r\n      break;\r\n    case 'right':\r\n      left = targetRect.left - this.elm.nativeElement.clientWidth + this.triggerElement.clientWidth;\r\n      break;\r\n    default:\r\n    }\r\n\r\n    this.renderer.setStyle(this.elm.nativeElement, 'left', `${left}px`);\r\n    this.renderer.setStyle(this.elm.nativeElement, 'top', `${top}px`);\r\n\r\n    if (this.leftFix) {\r\n      this.renderer.setStyle(this.elm.nativeElement, 'marginLeft', `${this.leftFix}px`);\r\n    }\r\n    if (this.topFix) {\r\n      this.renderer.setStyle(this.elm.nativeElement, 'marginTop', `${this.topFix}px`);\r\n    }\r\n  }\r\n\r\n  next() {\r\n    const newStep = (this.stepIndex + 1 < this.stepsCount && this.stepIndex + 1) || this.stepsCount - 1;\r\n    this.stepService.setCurrentIndex(newStep);\r\n    this.close(newStep, 'next');\r\n  }\r\n\r\n  prev() {\r\n    const newStep = (this.stepIndex - 1 > 0 && this.stepIndex - 1) || 0;\r\n    this.stepService.setCurrentIndex(newStep);\r\n    this.close(newStep, 'prev');\r\n  }\r\n\r\n  closeAll() {\r\n    try {\r\n      localStorage.setItem(`devui_guide_${this.pageName}`, '0');\r\n    } catch (error) {\r\n      console.error(error);\r\n    }\r\n    this.close(this.stepService.getCurrentStep(), 'close');\r\n  }\r\n\r\n  close(step, type?) {}\r\n}\r\n","<div class=\"devui-shining-dot\"></div>\n<div class=\"devui-shining-plus\"></div>\n<div class=\"devui-arrow\"></div>\n<div class=\"devui-guide-container\">\n  <p class=\"devui-title\">{{ title }}</p>\n  <div class=\"icon icon-close\" (click)=\"closeAll()\"></div>\n  <ng-template [ngTemplateOutlet]=\"content | dIsTemplatePipe : plainText\"></ng-template>\n  <ng-template #plainText>\n    <div class=\"devui-content\" [innerHTML]=\"content | safe : 'html'\"></div>\n  </ng-template>\n  <div class=\"devui-ctrl\">\n    <div *ngIf=\"dots.length > 1 && !extraConfig?.hideStepNav\" class=\"devui-dots\">\n      <em *ngFor=\"let dot of dots; index as i\" class=\"icon icon-dot-status {{ i === stepIndex ? 'devui-active' : '' }}\"></em>\n    </div>\n    <div class=\"devui-guide-btn\">\n      <div *ngIf=\"stepIndex > 0 && !extraConfig?.hidePreStep\" class=\"devui-prev-step\" (click)=\"prev()\">{{ i18nCommonText.previous }}</div>\n      <div *ngIf=\"stepIndex + 1 < stepsCount\" (click)=\"next()\">{{ i18nCommonText.next }}</div>\n      <div *ngIf=\"stepIndex === stepsCount - 1\" (click)=\"closeAll()\">{{ i18nCommonText.finish }}</div>\n    </div>\n  </div>\n</div>\n","import { DOCUMENT } from '@angular/common';\nimport {\n  ComponentFactoryResolver,\n  ComponentRef,\n  Directive,\n  ElementRef,\n  EventEmitter,\n  Inject,\n  Input,\n  OnDestroy,\n  OnInit,\n  Output\n} from '@angular/core';\nimport { OverlayContainerRef } from 'ng-devui/overlay-container';\nimport { throttle } from 'lodash-es';\nimport { Observable, Subscription } from 'rxjs';\nimport { StepsGuideComponent } from './steps-guide.component';\nimport { StepsGuideService } from './steps-guide.service';\nimport {\n  ExtraConfig,\n  GuideOptions,\n  OperateResponse,\n  StepItem,\n  StepsGuidePositionType\n} from './steps-guide.types';\n\n@Directive({\n  selector: '[dStepsGuide]',\n})\nexport class StepsGuideDirective implements OnInit, OnDestroy {\n  // 引导页面标示，用于记录不同页面的引导状态\n  @Input() pageName: string;\n  @Input() steps: Array<StepItem> = [];\n  // 该步骤所属序号\n  @Input() stepIndex: number;\n\n  // 弹出位置 top|bottom|bottom-left|left|right\n  _dStepsGuidePosition: StepsGuidePositionType;\n  @Input() set dStepsGuidePosition(pos: StepsGuidePositionType) {\n    this._dStepsGuidePosition = pos;\n  }\n  get dStepsGuidePosition(): StepsGuidePositionType {\n    return this._dStepsGuidePosition || 'top';\n  }\n\n  /**\n   * @deprecated Use dStepsGuidePosition to replace.\n   */\n  @Input() set position(pos: StepsGuidePositionType) {\n    if (!this._dStepsGuidePosition) {\n      this.dStepsGuidePosition = pos;\n    }\n  }\n\n  // 可选，用于修正引导位置\n  @Input() leftFix = 0;\n  @Input() topFix = 0;\n  @Input() zIndex = 1100;\n  // 引导显示的目标dom,如果指定，不在使用指令所在的dom作为目标dom\n  @Input() targetElement: any;\n  @Input() scrollElement: any;\n  // 是否自动滚动页面至目标\n  @Input() scrollToTargetSwitch = true;\n  // 引导向扩展配置\n  @Input() extraConfig: ExtraConfig;\n  // 允许用户指定一个dom反馈页面变化，通过MutationObserver监听该dom所属节点树变化触发resize事件使引导弹窗自动修正位置\n  @Input() set observerDom(dom: HTMLElement) {\n    if (dom) {\n      this._observerDom = dom;\n      // 创建监听实例，并限制回调方法在500ms内只响应一次，避免多次响应dom变化造成性能负担\n      this.observer = new MutationObserver(\n        throttle(\n          this.mutationCallBack,\n          this.MUTATION_OBSERVER_TIME,\n          { 'leading': false, 'trailing': true }\n        ));\n      this.observer.observe(this._observerDom, this.MUTATION_OBSERVER_CONFIG);\n    } else {\n      this.destroyMutationObserver(true);\n    }\n  }\n  @Input() beforeChange: (currentIndex, targetIndex) => boolean | Promise<boolean> | Observable<boolean>;\n  // 点击引导操作触发，返回当前步骤和当前操作，比如上一步、下一步、关闭\n  @Output() operateChange = new EventEmitter<OperateResponse>();\n  _observerDom: any;\n  stepRef: ComponentRef<StepsGuideComponent>;\n  observer: any;\n  toggle: any;\n  currentIndex: number;\n  sub: Subscription = new Subscription();\n  // 监听dom变化的设置，监听属性变化和dom所属节点树变化\n  MUTATION_OBSERVER_CONFIG = { attributes: true, subtree: true };\n  MUTATION_OBSERVER_TIME = 500;\n  document: Document;\n\n  constructor(\n    private stepService: StepsGuideService,\n    private elm: ElementRef,\n    private componentFactoryResolver: ComponentFactoryResolver,\n    private overlayContainerRef: OverlayContainerRef,\n    @Inject(DOCUMENT) private doc: any\n  ) {\n    this.document = this.doc;\n  }\n\n  ngOnInit() {\n    // 监听当前索引变化，决定显示步骤\n    this.sub.add(this.stepService.currentIndex.subscribe(index => {\n      this.canChange(index).then((change) => {\n        if (!change) {\n          return;\n        }\n      });\n      // 防止服务中的步骤被置空或默认为空\n      const serviceSteps = this.stepService.getSteps() || [];\n      this.steps = serviceSteps.length > 0 ? serviceSteps : this.steps;\n      const state = localStorage.getItem(`devui_guide_${this.pageName}`) || '1';\n      this.toggle = Number(state);\n      this.currentIndex = index;\n      const currentStep = this.steps.length > 0 && this.steps[this.currentIndex];\n      // 当前步骤内容存在且未被屏蔽显示且为当前索引时插入操作指引弹窗\n      if (currentStep && this.toggle && this.stepIndex === this.currentIndex) {\n        const targetDom = this.targetElement || this.elm.nativeElement;\n        if (this.scrollToTargetSwitch) {\n          targetDom.scrollIntoView({ behavior: 'smooth', block: 'nearest', inline: 'nearest' });\n        }\n        // 如果该步骤设置了监听dom和监听实例，重启监听\n        if (this._observerDom && this.observer) {\n          this.observer.disconnect();\n          this.observer.observe(this._observerDom, this.MUTATION_OBSERVER_CONFIG);\n        }\n        setTimeout(() => {\n          this.insert({\n            triggerElement: targetDom,\n            scrollElement: this.scrollElement,\n            pageName: this.pageName,\n            title: currentStep.title,\n            content: currentStep.content,\n            stepsCount: this.steps.length,\n            stepIndex: this.stepIndex,\n            position: this.dStepsGuidePosition,\n            leftFix: this.leftFix,\n            topFix: this.topFix,\n            zIndex: this.zIndex,\n          });\n        });\n      }\n    }));\n\n    // 监听切换显示和隐藏\n    this.sub.add(this.stepService.showGuideObs.subscribe(visible => {\n      if (visible) {\n        const currentIndex = this.stepService.getCurrentStep() || 0;\n        localStorage.removeItem(`devui_guide_${this.pageName}`);\n        this.stepService.setCurrentIndex(currentIndex);\n      } else {\n        try {\n          localStorage.setItem(`devui_guide_${this.pageName}`, '0');\n        } catch (error) {\n          console.error(error);\n        }\n        this.destroyView();\n      }\n    }));\n  }\n\n  ngOnDestroy() {\n    this.sub.unsubscribe();\n    this.destroyView();\n  }\n\n  destroyView() {\n    if (this.stepRef) {\n      this.stepRef.hostView.destroy();\n    }\n    this.destroyMutationObserver();\n  }\n\n  insert(option: GuideOptions) {\n    const hasGuide = this.document.querySelector('body>.devui-step-item');\n    if (!hasGuide) {\n      this.stepRef = this.overlayContainerRef.createComponent(this.componentFactoryResolver.resolveComponentFactory(StepsGuideComponent));\n      Object.assign(this.stepRef.instance, option, { extraConfig: this.extraConfig });\n      this.stepRef.instance.close = (step, type?) => {\n        this.operateChange.emit({ clickType: type, currentIndex: step });\n        this.destroyView();\n      };\n    }\n  }\n\n  // 监听dom变化的回调方法，即dom发生变化时触发resize事件\n  mutationCallBack = () => {\n    if (typeof window === 'undefined') {\n      return;\n    }\n    const resizeEvt = this.document.createEvent('Event');\n    resizeEvt.initEvent('resize', true, true);\n    window.dispatchEvent(resizeEvt);\n  };\n\n  // 断开监听, 清空监听dom和实例\n  destroyMutationObserver(destroyAll?: boolean) {\n    if (this.observer) {\n      this.observer.disconnect();\n    }\n    if (destroyAll) {\n      this._observerDom = undefined;\n      this.observer = undefined;\n    }\n  }\n\n  canChange(index) {\n    let changeResult = Promise.resolve(true);\n    const currentIndex = this.currentIndex >= 0 ? this.currentIndex : this.stepIndex;\n    if (currentIndex === index && this.beforeChange) {\n      const result: any = this.beforeChange(currentIndex, index);\n      if (typeof result !== 'undefined') {\n        if (result.then) {\n          changeResult = result;\n        } else if (result.subscribe) {\n          changeResult = (result as Observable<boolean>).toPromise();\n        } else {\n          changeResult = Promise.resolve(result);\n        }\n      }\n    }\n    return changeResult;\n  }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { OverlayContainerRef } from 'ng-devui/overlay-container';\nimport { PositioningModule } from 'ng-devui/position';\nimport { IsTemplateModule, SafePipeModule } from 'ng-devui/utils';\nimport { StepsGuideComponent } from './steps-guide.component';\nimport { StepsGuideDirective } from './steps-guide.directive';\nimport { StepsGuideService } from './steps-guide.service';\n\n@NgModule({\n  imports: [CommonModule, IsTemplateModule, SafePipeModule, PositioningModule],\n  declarations: [StepsGuideComponent, StepsGuideDirective],\n  exports: [StepsGuideDirective],\n\n  providers: [OverlayContainerRef, StepsGuideService],\n})\nexport class StepsGuideModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}