{"version":3,"file":"onboarding.mjs","sources":["../../../../packages/abc/onboarding/onboarding.component.ts","../../../../packages/abc/onboarding/onboarding.storage.ts","../../../../packages/abc/onboarding/onboarding.service.ts","../../../../packages/abc/onboarding/onboarding.module.ts","../../../../packages/abc/onboarding/onboarding.ts"],"sourcesContent":["import { Direction } from '@angular/cdk/bidi';\nimport { Platform } from '@angular/cdk/platform';\nimport { DOCUMENT } from '@angular/common';\nimport {\n  ChangeDetectionStrategy,\n  Component,\n  ElementRef,\n  EventEmitter,\n  Injector,\n  OnDestroy,\n  ViewEncapsulation,\n  afterNextRender,\n  effect,\n  inject,\n  runInInjectionContext,\n  signal,\n  viewChild\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { debounceTime, fromEvent } from 'rxjs';\n\nimport { NzButtonComponent } from 'ng-zorro-antd/button';\nimport { NzNoAnimationDirective } from 'ng-zorro-antd/core/animation';\nimport { NzStringTemplateOutletDirective } from 'ng-zorro-antd/core/outlet';\nimport { NzPopoverDirective } from 'ng-zorro-antd/popover';\n\nimport { OnboardingConfig, OnboardingItem, OnboardingOpType } from './onboarding.types';\n\ninterface OnboardingLightData {\n  el: HTMLElement;\n  top: number;\n  left: number;\n  width: number;\n  height: number;\n  clientHeight: number;\n  clientWidth: number;\n}\n\n@Component({\n  selector: 'onboarding',\n  template: `\n    @if (!running() && config.mask) {\n      <div class=\"onboarding__mask\" (click)=\"handleMask()\"></div>\n    }\n    <div\n      class=\"onboarding__light\"\n      [class.onboarding__light-hide]=\"running()\"\n      [attr.style]=\"item.lightStyle\"\n      nz-popover\n      [nzPopoverTitle]=\"item.title\"\n      [nzPopoverContent]=\"content\"\n      [nzPopoverVisible]=\"!running()\"\n      [nzPopoverTrigger]=\"null\"\n      [nzPopoverPlacement]=\"item.position\"\n      [nzPopoverOverlayClassName]=\"item.className\"\n      [nzPopoverOverlayStyle]=\"{ 'max-width.px': item.width, direction: dir }\"\n      [nzNoAnimation]=\"true\"\n    ></div>\n    <ng-template #content>\n      <ng-container *nzStringTemplateOutlet=\"item.content\">\n        <div [innerHTML]=\"item.content\"></div>\n      </ng-container>\n      <div class=\"flex-center-between onboarding__footer\">\n        <span class=\"onboarding__total\">\n          @if (config.showTotal) {\n            {{ active + 1 }}/{{ max }}\n          }\n        </span>\n        <div class=\"onboarding__btns\">\n          @if (!last && item.skip !== null && item.skip !== undefined) {\n            <a nz-button nzType=\"link\" (click)=\"to('skip')\" nzSize=\"small\" data-btnType=\"skip\">\n              <ng-container *nzStringTemplateOutlet=\"item.skip\">{{ item.skip }}</ng-container>\n            </a>\n          }\n          @if (!first && item.prev !== null) {\n            <a nz-button (click)=\"to('prev')\" nzSize=\"small\" data-btnType=\"prev\">\n              <ng-container *nzStringTemplateOutlet=\"item.prev\">{{ item.prev }}</ng-container>\n            </a>\n          }\n          @if (!last && item.next !== null && item.next !== undefined) {\n            <a nz-button (click)=\"to('next')\" nzType=\"primary\" nzSize=\"small\" data-btnType=\"next\">\n              <ng-container *nzStringTemplateOutlet=\"item.next\">{{ item.next }}</ng-container>\n            </a>\n          }\n          @if (last && item.done !== null && item.done !== undefined) {\n            <a nz-button (click)=\"to('done')\" nzType=\"primary\" nzSize=\"small\" data-btnType=\"done\">\n              <ng-container *nzStringTemplateOutlet=\"item.done\">{{ item.done }}</ng-container>\n            </a>\n          }\n        </div>\n      </div>\n    </ng-template>\n  `,\n  host: {\n    class: 'onboarding',\n    '[class.onboarding-rtl]': `dir === 'rtl'`,\n    '[attr.data-onboarding-active]': `active`\n  },\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  encapsulation: ViewEncapsulation.None,\n  imports: [NzPopoverDirective, NzStringTemplateOutletDirective, NzButtonComponent, NzNoAnimationDirective]\n})\nexport class OnboardingComponent implements OnDestroy {\n  private readonly el: HTMLElement = inject(ElementRef).nativeElement;\n  private readonly injector = inject(Injector);\n  private readonly platform = inject(Platform);\n  private readonly doc = inject(DOCUMENT);\n\n  private prevSelectorEl?: HTMLElement;\n  config!: OnboardingConfig;\n  item!: OnboardingItem;\n  active = 0;\n  max = 0;\n  readonly op = new EventEmitter<OnboardingOpType>();\n  running = signal(false);\n  dir: Direction = 'ltr';\n  popover = viewChild.required(NzPopoverDirective);\n\n  protected get first(): boolean {\n    return this.active === 0;\n  }\n\n  protected get last(): boolean {\n    return this.active === this.max - 1;\n  }\n\n  private get _getWin(): Window {\n    return this.doc.defaultView ?? window;\n  }\n\n  private getLightData(): OnboardingLightData | null {\n    const doc = this.doc;\n    const win = this._getWin;\n    const el = doc.querySelector(this.item.selectors) as HTMLElement;\n    if (!el) {\n      return null;\n    }\n\n    const scrollTop = win.scrollY ?? doc.documentElement.scrollTop ?? doc.body.scrollTop;\n    const scrollLeft = win.scrollX ?? doc.documentElement.scrollLeft ?? doc.body.scrollLeft;\n    const rect = el.getBoundingClientRect();\n    const top = rect.top + scrollTop;\n    const left = rect.left + scrollLeft;\n    const padding = 8;\n    const needPadding = top > padding && left > padding;\n    const offsetPos = needPadding ? padding : 0;\n    const offsetWH = needPadding ? padding * 2 : 0;\n    return {\n      top: top - offsetPos,\n      left: left - offsetPos,\n      width: rect.width + offsetWH,\n      height: rect.height + offsetWH,\n      el,\n      clientWidth: doc.body.clientWidth,\n      clientHeight: doc.body.clientHeight\n    };\n  }\n\n  constructor() {\n    afterNextRender(() => {\n      // Waiting https://github.com/NG-ZORRO/ng-zorro-antd/issues/6491\n      this.popover().component!.onClickOutside = () => {};\n    });\n    effect(() => {\n      const running = this.running();\n      if (!running) {\n        runInInjectionContext(this.injector, () => {\n          afterNextRender(() => {\n            this.updatePosition();\n          });\n        });\n      }\n    });\n\n    // when window resize\n    fromEvent(window, 'resize')\n      .pipe(takeUntilDestroyed(), debounceTime(100))\n      .subscribe(() => this.updatePosition());\n  }\n\n  private scroll(pos: OnboardingLightData): void {\n    this.prevSelectorEl = pos.el;\n    const scrollY = pos.top - (pos.clientHeight - pos.height) / 2;\n    this._getWin.scrollTo({ top: scrollY });\n    this.updatePrevElStatus(true);\n  }\n\n  updateRunning(status: boolean): void {\n    this.running.set(status);\n  }\n\n  private updatePosition(): void {\n    if (!this.platform.isBrowser) {\n      return;\n    }\n\n    const pos = this.getLightData();\n    if (pos == null) {\n      if (typeof ngDevMode === 'undefined' || ngDevMode) {\n        console.warn(`Did not matches selectors [${this.item.selectors}]`);\n      }\n      return;\n    }\n\n    const lightStyle = (this.el.querySelector('.onboarding__light') as HTMLElement).style;\n    lightStyle.top = `${pos.top}px`;\n    lightStyle.left = `${pos.left}px`;\n    lightStyle.width = `${pos.width}px`;\n    lightStyle.height = `${pos.height}px`;\n\n    this.updatePrevElStatus(false);\n    this.scroll(pos);\n  }\n\n  private updatePrevElStatus(status: boolean): void {\n    if (this.prevSelectorEl) {\n      this.prevSelectorEl.classList[status ? 'add' : 'remove']('onboarding__light-el');\n    }\n  }\n\n  to(type: OnboardingOpType): void {\n    this.op.emit(type);\n  }\n\n  handleMask(): void {\n    if (this.config.maskClosable === true) {\n      this.popover().component?.hide();\n      this.to('done');\n    }\n  }\n\n  ngOnDestroy(): void {\n    this.updatePrevElStatus(false);\n  }\n}\n","import { InjectionToken } from '@angular/core';\n\nexport interface OnBoardingKeyStore {\n  get(key: string): unknown;\n\n  set(key: string, version: unknown): void;\n}\n\nexport const ONBOARDING_STORE_TOKEN = new InjectionToken<OnBoardingKeyStore>('ONBOARDING_STORE_TOKEN', {\n  providedIn: 'root',\n  factory: ONBOARDING_STORE_TOKEN_FACTORY\n});\n\nexport function ONBOARDING_STORE_TOKEN_FACTORY(): OnBoardingKeyStore {\n  return new LocalStorageStore();\n}\n\nexport class LocalStorageStore implements OnBoardingKeyStore {\n  get(key: string): unknown {\n    return localStorage.getItem(key);\n  }\n\n  set(key: string, version: unknown): void {\n    localStorage.setItem(key, `${version}`);\n  }\n}\n","import { Directionality } from '@angular/cdk/bidi';\nimport { DOCUMENT } from '@angular/common';\nimport {\n  ApplicationRef,\n  ComponentRef,\n  EmbeddedViewRef,\n  Injectable,\n  OnDestroy,\n  createComponent,\n  inject\n} from '@angular/core';\nimport { Router } from '@angular/router';\nimport { of, pipe, Subscription, delay, switchMap } from 'rxjs';\n\nimport { DelonLocaleService } from '@delon/theme';\nimport { AlainConfigService } from '@delon/util/config';\nimport type { NzSafeAny } from 'ng-zorro-antd/core/types';\n\nimport { OnboardingComponent } from './onboarding.component';\nimport { ONBOARDING_STORE_TOKEN } from './onboarding.storage';\nimport { OnboardingConfig, OnboardingItem, OnboardingOpType } from './onboarding.types';\n\n@Injectable({ providedIn: 'root' })\nexport class OnboardingService implements OnDestroy {\n  private readonly appRef = inject(ApplicationRef);\n  private readonly router = inject(Router);\n  private readonly doc = inject(DOCUMENT);\n  private readonly configSrv = inject(AlainConfigService);\n  private readonly keyStoreSrv = inject(ONBOARDING_STORE_TOKEN);\n  private readonly directionality = inject(Directionality);\n\n  private compRef!: ComponentRef<OnboardingComponent>;\n  private op$!: Subscription;\n  private config?: OnboardingConfig;\n  private active = 0;\n  private running$: Subscription | null = null;\n  private _running = false;\n  private type: OnboardingOpType | null = null;\n  private locale = inject(DelonLocaleService).valueSignal('onboarding');\n\n  private _getDoc(): Document {\n    return this.doc;\n  }\n\n  /**\n   * Get whether it is booting\n   *\n   * 获取是否正在引导中\n   */\n  get running(): boolean {\n    return this._running;\n  }\n\n  private attach(): void {\n    const compRef = createComponent(OnboardingComponent, {\n      environmentInjector: this.appRef.injector\n    });\n    this.compRef = compRef;\n    this.appRef.attachView(compRef.hostView);\n    const compNode = (compRef.hostView as EmbeddedViewRef<NzSafeAny>).rootNodes[0];\n    const doc = this._getDoc();\n    const cdk = doc.querySelector('.cdk-overlay-container') as HTMLElement;\n    if (cdk) {\n      doc.body.insertBefore(compNode, cdk);\n    } else {\n      doc.body.appendChild(compNode);\n    }\n    this.op$ = this.compRef.instance.op.subscribe((type: OnboardingOpType) => {\n      switch (type) {\n        case 'next':\n          this.next();\n          break;\n        case 'prev':\n          this.prev();\n          break;\n        default:\n          this.done();\n          break;\n      }\n    });\n  }\n\n  private cancelRunning(): this {\n    if (this.running$) {\n      this.running$.unsubscribe();\n      this.running$ = null;\n    }\n    return this;\n  }\n\n  private updateRunning(status: boolean): this {\n    this._running = status;\n    this.compRef!.instance.updateRunning(status);\n    return this;\n  }\n\n  private destroy(): void {\n    const storeKey = this.config?.key;\n    if (storeKey != null) {\n      this.keyStoreSrv.set(storeKey, this.config?.keyVersion);\n    }\n    this.cancelRunning();\n    if (this.compRef) {\n      this.appRef.detachView(this.compRef.hostView);\n      this.compRef.destroy();\n      this.op$.unsubscribe();\n    }\n  }\n\n  private showItem(isStart: boolean = false): void {\n    const items = this.config!.items!;\n    const item = {\n      position: 'bottomLeft',\n      before: of(true),\n      after: of(true),\n      ...this.locale(),\n      ...items[this.active]\n    } as OnboardingItem;\n    const dir = this.configSrv.get('onboarding')!.direction ?? this.directionality.value;\n    Object.assign(this.compRef.instance, { item, config: this.config, active: this.active, max: items.length, dir });\n    const pipes = [\n      switchMap(() => (item.url ? this.router.navigateByUrl(item.url) : of(true))),\n      switchMap(() => {\n        const obs = this.type === 'prev' ? item.after! : item.before!;\n        return typeof obs === 'number' ? of(true).pipe(delay(obs)) : obs;\n      })\n    ];\n    if (!isStart) {\n      pipes.push(delay(1));\n    }\n\n    this.updateRunning(true);\n\n    this.running$ = of(true)\n      .pipe(pipe.apply(this, pipes as NzSafeAny) as NzSafeAny)\n      .subscribe({\n        next: () => this.cancelRunning().updateRunning(false),\n        error: () => this.done()\n      });\n  }\n\n  /**\n   * Start a new user guidance\n   *\n   * 开启新的用户引导流程\n   */\n  start(config: OnboardingConfig): void {\n    const cog: OnboardingConfig = {\n      keyVersion: '',\n      items: [],\n      mask: true,\n      maskClosable: true,\n      showTotal: false,\n      ...config\n    };\n    const storeKey = cog?.key;\n    if (storeKey != null && this.keyStoreSrv.get(storeKey) === cog.keyVersion) {\n      return;\n    }\n    if (this.running) {\n      return;\n    }\n    this.destroy();\n    this.config = cog;\n    this.active = 0;\n    this.type = null;\n    this.attach();\n    this.showItem(true);\n  }\n\n  /**\n   * Next\n   *\n   * 下一步\n   */\n  next(): void {\n    if (this._running || this.active + 1 >= this.config!.items!.length) {\n      this.done();\n      return;\n    }\n    this.type = 'next';\n    ++this.active;\n    this.showItem();\n  }\n\n  /**\n   * Prev\n   *\n   * 上一步\n   */\n  prev(): void {\n    if (this._running || this.active - 1 < 0) {\n      return;\n    }\n    this.type = 'prev';\n    --this.active;\n    this.showItem();\n  }\n\n  /**\n   * Done\n   *\n   * 完成\n   */\n  done(): void {\n    this.type = 'done';\n    this.destroy();\n  }\n\n  ngOnDestroy(): void {\n    this.destroy();\n  }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { DelonLocaleModule } from '@delon/theme';\nimport { NzButtonModule } from 'ng-zorro-antd/button';\nimport { provideNzNoAnimation } from 'ng-zorro-antd/core/animation';\nimport { NzOutletModule } from 'ng-zorro-antd/core/outlet';\nimport { NzPopoverModule } from 'ng-zorro-antd/popover';\n\nimport { OnboardingComponent } from './onboarding.component';\n\nconst COMPONENTS = [OnboardingComponent];\n\n@NgModule({\n  providers: [provideNzNoAnimation()],\n  imports: [CommonModule, DelonLocaleModule, NzPopoverModule, NzOutletModule, NzButtonModule, COMPONENTS],\n  exports: COMPONENTS\n})\nexport class OnboardingModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}