{"version":3,"file":"ng-devui-back-top.mjs","sources":["../../devui/back-top/back-top.component.ts","../../devui/back-top/back-top.component.html","../../devui/back-top/back-top.module.ts","../../devui/back-top/ng-devui-back-top.ts"],"sourcesContent":["import { DOCUMENT } from '@angular/common';\r\nimport {\r\n  AfterViewInit,\r\n  ChangeDetectionStrategy,\r\n  ChangeDetectorRef,\r\n  Component,\r\n  ElementRef,\r\n  EventEmitter,\r\n  HostListener,\r\n  Inject,\r\n  Input,\r\n  OnChanges,\r\n  OnDestroy,\r\n  OnInit,\r\n  Output,\r\n  SimpleChanges,\r\n  TemplateRef,\r\n} from '@angular/core';\r\nimport { Subscription, fromEvent } from 'rxjs';\r\nimport { debounceTime } from 'rxjs/operators';\r\n\r\n@Component({\r\n  selector: 'd-back-top',\r\n  templateUrl: './back-top.component.html',\r\n  styleUrls: ['./back-top.component.scss'],\r\n  changeDetection: ChangeDetectionStrategy.OnPush,\r\n  preserveWhitespaces: false,\r\n})\r\nexport class BackTopComponent implements OnChanges, OnInit, OnDestroy, AfterViewInit {\r\n  @Input() customTemplate: TemplateRef<any>;\r\n  @Input() visibleHeight = 300;\r\n  @Input() bottom = '50px';\r\n  @Input() right = '30px';\r\n  @Input() scrollTarget: HTMLElement;\r\n  @Input() draggable = false;\r\n  @Output() backTopEvent = new EventEmitter<boolean>();\r\n  @Output() dragEvent = new EventEmitter<boolean>();\r\n\r\n  currScrollTop = 0;\r\n  duration = 0;\r\n  cursorTimer: any;\r\n  dragBoundary: any;\r\n  moveCursor = false;\r\n  moveToggle = false;\r\n  isVisible = false;\r\n  target: HTMLElement | Window;\r\n  subs: Subscription = new Subscription();\r\n  document: Document;\r\n\r\n  SCROLL_REFRESH_INTERVAL = 100;\r\n  MOUSEDOWN_DELAY = 180;\r\n  RESIZE_DELAY = 300;\r\n\r\n  constructor(private cdr: ChangeDetectorRef, private el: ElementRef, @Inject(DOCUMENT) private doc: any) {\r\n    this.document = this.doc;\r\n  }\r\n\r\n  ngOnChanges(changes: SimpleChanges): void {\r\n    if (changes.scrollTarget) {\r\n      if (this.subs) {\r\n        this.subs.unsubscribe();\r\n      }\r\n      this.subs = new Subscription();\r\n      this.addScrollEvent();\r\n    }\r\n  }\r\n\r\n  ngOnInit(): void {\r\n    this.addScrollEvent();\r\n    this.showButton();\r\n  }\r\n\r\n  ngAfterViewInit(): void {\r\n    if (this.draggable) {\r\n      // 窗口大小改变时，如缩放比例或组件超出显示范围重置到默认位置\r\n      this.subs.add(\r\n        fromEvent(window, 'resize')\r\n          .pipe(debounceTime(this.RESIZE_DELAY))\r\n          .subscribe(() => {\r\n            const dom = this.dragBoundary?.dom || this.el.nativeElement.querySelector('div.devui-backtop');\r\n            if (dom) {\r\n              // 不显示时无法获取getBoundingClientRect,使用style获取\r\n              const style = getComputedStyle(dom);\r\n              const left = parseInt(style.left, 10) || 0;\r\n              const top = parseInt(style.top, 10) || 0;\r\n              if (window.devicePixelRatio !== 1 || left > window.innerWidth || top > window.innerHeight) {\r\n                this.onMouseUp();\r\n                this.duration = 0;\r\n                dom.style.left = 'unset';\r\n                dom.style.top = 'unset';\r\n              }\r\n            }\r\n          })\r\n      );\r\n    }\r\n  }\r\n\r\n  ngOnDestroy(): void {\r\n    if (this.subs) {\r\n      this.subs.unsubscribe();\r\n    }\r\n  }\r\n\r\n  addScrollEvent() {\r\n    this.subs.add(\r\n      fromEvent(this.getScrollTarget(), 'scroll')\r\n        .pipe(debounceTime(this.SCROLL_REFRESH_INTERVAL))\r\n        .subscribe(() => {\r\n          this.showButton();\r\n          this.cdr.detectChanges();\r\n        })\r\n    );\r\n  }\r\n\r\n  getScrollTarget() {\r\n    if (this.scrollTarget) {\r\n      this.el.nativeElement.querySelector('.devui-backtop').style.position = 'absolute';\r\n      this.scrollTarget.parentElement.style.position = 'relative';\r\n    }\r\n    this.target = this.scrollTarget || window;\r\n    return this.target;\r\n  }\r\n\r\n  showButton() {\r\n    this.currScrollTop =\r\n      this.target === window\r\n        ? window.pageYOffset || this.document.documentElement.scrollTop || this.document.body.scrollTop\r\n        : this.scrollTarget.scrollTop;\r\n    if (this.isVisible !== this.currScrollTop >= this.visibleHeight) {\r\n      this.isVisible = !this.isVisible;\r\n    }\r\n  }\r\n\r\n  goTop() {\r\n    if (this.draggable && this.duration > this.MOUSEDOWN_DELAY) {\r\n      this.duration = 0;\r\n      return;\r\n    }\r\n    if (this.target === window) {\r\n      this.document.documentElement.scrollIntoView({ behavior: 'smooth', block: 'start', inline: 'nearest' });\r\n      this.document.body.scrollIntoView({ behavior: 'smooth', block: 'start', inline: 'nearest' });\r\n    } else {\r\n      this.scrollTarget.style.scrollBehavior = 'smooth';\r\n      this.scrollTarget.scrollTop = 0;\r\n    }\r\n    this.duration = 0;\r\n    this.backTopEvent.emit(true);\r\n  }\r\n\r\n  setDragBoundary() {\r\n    const dom = this.el.nativeElement.querySelector('div.devui-backtop');\r\n    let boxRect;\r\n    let minLeft;\r\n    let minTop;\r\n    let maxLeft;\r\n    let maxTop;\r\n    if (dom) {\r\n      const { width, height } = dom.getBoundingClientRect();\r\n      if (this.scrollTarget) {\r\n        boxRect = this.scrollTarget.getBoundingClientRect();\r\n        minLeft = -1 * boxRect.x;\r\n        minTop = -1 * boxRect.y;\r\n        maxLeft = window.innerWidth - boxRect.x - width;\r\n        maxTop = window.innerHeight - boxRect.y - height;\r\n      } else {\r\n        boxRect = { x: 0, y: 0 };\r\n        minLeft = 0;\r\n        minTop = 0;\r\n        maxLeft = window.innerWidth - width;\r\n        maxTop = window.innerHeight - height;\r\n      }\r\n      this.dragBoundary = { dom, boxRect, minLeft, minTop, maxLeft, maxTop };\r\n    }\r\n  }\r\n\r\n  // mousedown mouseup click 按顺序触发且前一个结束触发下一个\r\n  mousedownEvent(event: MouseEvent) {\r\n    if (this.draggable) {\r\n      event.preventDefault();\r\n      this.setDragBoundary();\r\n      this.duration = new Date().getTime();\r\n      this.moveToggle = true;\r\n      this.cursorTimer = setTimeout(() => {\r\n        this.moveCursor = true;\r\n        this.dragEvent.emit(true);\r\n      }, this.MOUSEDOWN_DELAY);\r\n    }\r\n  }\r\n\r\n  mouseleaveEvent() {\r\n    if (this.draggable && this.cursorTimer) {\r\n      clearTimeout(this.cursorTimer);\r\n    }\r\n  }\r\n\r\n  @HostListener('document:mouseup', [])\r\n  onMouseUp() {\r\n    if (this.draggable) {\r\n      if (this.cursorTimer) {\r\n        clearTimeout(this.cursorTimer);\r\n      }\r\n      if (this.moveToggle) {\r\n        this.moveToggle = false;\r\n        this.moveCursor = false;\r\n        this.dragEvent.emit(false);\r\n      }\r\n      this.duration = this.duration && new Date().getTime() - this.duration;\r\n    }\r\n  }\r\n\r\n  @HostListener('document:mousemove', ['$event'])\r\n  onMouseMove(event: MouseEvent) {\r\n    if (this.draggable && this.moveToggle && this.dragBoundary) {\r\n      // 先判断再执行阻止默认事件，否则可能影响鼠标拖选功能\r\n      event.preventDefault();\r\n      this.moveCursor = true;\r\n      const posX = event.movementX;\r\n      const posY = event.movementY;\r\n      const rect = this.dragBoundary.dom.getBoundingClientRect();\r\n      const left = rect.x - this.dragBoundary.boxRect.x + posX;\r\n      const top = rect.y - this.dragBoundary.boxRect.y + posY;\r\n      const isLeft = left < this.dragBoundary.minLeft;\r\n      const isRight = left > this.dragBoundary.maxLeft;\r\n      const isTop = top < this.dragBoundary.minTop;\r\n      const isBottom = top > this.dragBoundary.maxTop;\r\n      const leftResult = isLeft ? this.dragBoundary.minLeft : left;\r\n      const topResult = isTop ? this.dragBoundary.minTop : top;\r\n      this.dragBoundary.dom.style.left = `${isRight ? this.dragBoundary.maxLeft : leftResult}px`;\r\n      this.dragBoundary.dom.style.top = `${isBottom ? this.dragBoundary.maxTop : topResult}px`;\r\n      // 如到达边界释放拖拽动作，避免鼠标偏移较大距离后返回主视窗仍可拖拽\r\n      if ([isLeft, isRight, isTop, isBottom].includes(true)) {\r\n        this.onMouseUp();\r\n        this.duration = 0;\r\n      }\r\n    }\r\n  }\r\n}\r\n","<div\n  class=\"devui-backtop\"\n  [ngStyle]=\"{\n    display: isVisible ? 'block' : 'none',\n    bottom: bottom,\n    right: right,\n    cursor: moveCursor && draggable ? 'move' : 'pointer'\n  }\"\n  (click)=\"goTop()\"\n>\n  <div class=\"devui-backtop-drag-handle\" (mousedown)=\"mousedownEvent($event)\" (mouseleave)=\"mouseleaveEvent()\">\n    <ng-template [ngTemplateOutlet]=\"customTemplate ? customTemplate : default\"></ng-template>\n    <ng-template #default>\n      <div class=\"devui-backtop-content\">\n        <svg\n          width=\"16px\"\n          height=\"16px\"\n          viewBox=\"0 0 16 16\"\n          version=\"1.1\"\n          xmlns=\"http://www.w3.org/2000/svg\"\n          xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n        >\n          <g stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\n            <path\n              d=\"M8.71335931,15.2865297 C8.61179683,16.2090609 7.32293758,16.1267953 7.27304695,15.2865297 C7.27175008,14.6475142 7.27175008,5.26479636 7.27175008,5.26479636 L2.83675052,9.54548344 C2.14185995,10.1440615 1.3143288,9.18731159 1.83135998,8.55773353 C3.79557855,6.65310872 7.3202657,3.24515592 7.40179694,3.16632781 C7.72696878,2.81306222 8.23887498,2.79476534 8.58495308,3.16632781 C9.23193739,3.7919215 14.0334057,8.42146792 14.1791557,8.58804603 C14.66614,9.19338972 13.8787807,10.0892021 13.2066089,9.58451469 C13.0329683,9.43717095 8.71468744,5.26462448 8.71468744,5.26462448 L8.71335931,15.2865297 Z M1.81868811,-8.54871729e-14 L14.1075619,-8.54871729e-14 L14.1075619,1.39509361 L1.81868811,1.39509361 L1.81868811,-8.54871729e-14 Z\"\n              fill=\"#FFFFFF\"\n              fill-rule=\"nonzero\"\n            ></path>\n          </g>\n        </svg>\n      </div>\n    </ng-template>\n  </div>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { BackTopComponent } from './back-top.component';\n\n@NgModule({\n  imports: [\n    CommonModule\n  ],\n  exports: [BackTopComponent],\n  declarations: [BackTopComponent]\n})\nexport class BackTopModule {\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}