{"version":3,"file":"ng-zorro-antd-mobile-pull-to-refresh.mjs","sources":["../../components/pull-to-refresh/pull-to-refresh.component.ts","../../components/pull-to-refresh/pull-to-refresh.component.html","../../components/pull-to-refresh/pull-to-refresh.module.ts","../../components/pull-to-refresh/ng-zorro-antd-mobile-pull-to-refresh.ts"],"sourcesContent":["import {\n  Input,\n  Output,\n  Component,\n  ViewChild,\n  forwardRef,\n  TemplateRef,\n  HostBinding,\n  EventEmitter,\n  HostListener,\n  ViewContainerRef,\n  ViewEncapsulation,\n  ElementRef\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nexport interface Indicator {\n  activate?: any;\n  deactivate?: any;\n  release?: any;\n  finish?: any;\n}\n\n@Component({\n  selector: 'PullToRefresh, nzm-pull-to-refresh',\n  templateUrl: './pull-to-refresh.component.html',\n  encapsulation: ViewEncapsulation.None,\n  providers: [\n    {\n      provide: NG_VALUE_ACCESSOR,\n      useExisting: forwardRef(() => PullToRefreshComponent),\n      multi: true\n    }\n  ]\n})\nexport class PullToRefreshComponent implements ControlValueAccessor {\n  transtionCls: any = {};\n  style: object = {\n    '-webkit-transform': 'translate3d( 0, 0, 0 )',\n    transform: 'translate3d( 0, 0, 0 )'\n  };\n  startY: number;\n  state: any = {\n    currentState: 'deactivate',\n    drag: false\n  };\n\n  private _headerIndicator: Indicator = {\n    activate: '松开立即刷新',\n    deactivate: '下拉可以刷新',\n    release: '刷新中。。。',\n    finish: '完成刷新'\n  };\n\n  private _footerIndicator: Indicator = {\n    activate: '松开立即刷新',\n    deactivate: '上拉可以刷新',\n    release: '刷新中。。。',\n    finish: '完成刷新'\n  };\n\n  private _startTime: number = 0;\n  private _endTime: number = 0;\n  private _endReach: boolean = false;\n  private _direction: string = '';\n  private _clientHeight: number = 0;\n  private _currentContentHeight: number = 0;\n  private _lastContentOffset: number = 0;\n  private _ngModelOnChange: (value: object) => {};\n  private _ngModelOnTouched: () => {};\n\n  @ViewChild('pullToRefresh', { read: ViewContainerRef, static: true })\n  private _pullToRefresh: ViewContainerRef;\n\n  @Input()\n  distanceToRefresh: number = 25; //触发刷新距离\n  @Input()\n  damping: number = 100; // 下拉的最大距离\n  @Input()\n  endReachedRefresh: boolean = false;\n  @Input()\n  refreshing: boolean = false;\n  @Input()\n  get direction(): string {\n    return this._direction;\n  }\n  set direction(value: string) {\n    this._direction = value;\n    this.refreshUp = this._direction === 'up' || this._direction === '';\n    this.refreshDown = this._direction === 'down' || this._direction === '';\n  }\n  @Input()\n  get headerIndicator(): Indicator {\n    return this._headerIndicator;\n  }\n  set headerIndicator(value: Indicator) {\n    Object.assign(this._headerIndicator, value);\n  }\n  @Input()\n  get footerIndicator(): Indicator {\n    return this._footerIndicator;\n  }\n  set footerIndicator(value: Indicator) {\n    Object.assign(this._footerIndicator, value);\n  }\n  @Output()\n  onRefresh: EventEmitter<any> = new EventEmitter();\n\n  @HostBinding('class.am-pull-to-refresh')\n  refresh: boolean = true;\n  @HostBinding('class.super-container')\n  container: boolean = true;\n  @HostBinding('class.am-pull-to-refresh-up')\n  refreshUp: boolean = this._direction === 'up' || this._direction === '';\n  @HostBinding('class.am-pull-to-refresh-down')\n  refreshDown: boolean = this._direction === 'down' || this._direction === '';\n\n  @HostListener('touchstart', ['$event'])\n  touchstart(e) {\n    this._startTime = Date.now();\n    if (this._direction === 'down' || (this._direction === '' && !this._endReach)) {\n      if (this.ele.nativeElement.scrollTop > 0) {\n        this.startY = undefined;\n        return;\n      }\n      this.startY = e && e.changedTouches && e.changedTouches[0] && e.changedTouches[0].clientY;\n      this.state.drag = undefined;\n    } else {\n      this.startY = e && e.changedTouches && e.changedTouches[0] && e.changedTouches[0].clientY;\n      this._clientHeight = this._pullToRefresh.element.nativeElement.clientHeight;\n      this._currentContentHeight = this.ele.nativeElement.clientHeight;\n    }\n    this.transtionCls = '';\n  }\n  @HostListener('touchmove', ['$event'])\n  touchmove(e) {\n    if (this._direction === 'down' || (this._direction === '' && !this._endReach)) {\n      if (this.ele.nativeElement.scrollTop > 0) {\n        return;\n      }\n      let distanceY = e.changedTouches[0].clientY - this.startY;\n      this.state.drag = distanceY >= 0;\n      if (this.state.drag) {\n        // 禁止滚动\n        if (e.cancelable) {\n          e.preventDefault();\n        }\n      } else {\n        return;\n      }\n      if (distanceY > this.damping) {\n        //当超过设定阈值是，缓慢增加\n        distanceY = (distanceY / (distanceY + this.damping)) * this.damping * 2;\n      } else if (distanceY < 0) {\n        distanceY = 0;\n      }\n      if (distanceY > this.distanceToRefresh) {\n        this.state.currentState = 'activate';\n        if (this._ngModelOnChange) {\n          this._ngModelOnChange(this.state);\n        }\n      }\n      this.style = {\n        '-webkit-transform': 'translate3d( 0, ' + distanceY + 'px, 0 )',\n        transform: 'translate3d( 0, ' + distanceY + 'px, 0 )'\n      };\n    } else {\n      let distanceY = e.changedTouches[0].clientY - this.startY;\n      //向上拉动的时候，如果当前窗口内容没有滚到最后，则不实现拖动的动作；向下滚动不实现拖动动作\n      if (\n        Math.abs(this._lastContentOffset) < this._clientHeight - this._currentContentHeight - this.distanceToRefresh ||\n        distanceY > 0\n      ) {\n        // 滚动\n        this.state.drag = false;\n      } else {\n        // 上拉\n        this.state.drag = true;\n      }\n      if (this.state.drag) {\n        // 禁止滚动\n        if (e.cancelable) {\n          e.preventDefault();\n        }\n      } else {\n        return;\n      }\n      //如果滑动到底部了，滑动距离随着拉动的距离增加缓慢增加\n      distanceY = -(distanceY / (distanceY - this.damping)) * this.damping;\n      if (Math.abs(distanceY) > this.distanceToRefresh) {\n        this.state.currentState = 'activate';\n        if (this._ngModelOnChange) {\n          this._ngModelOnChange(this.state);\n        }\n      }\n      this.style = {\n        '-webkit-transform': 'translate3d( 0, ' + distanceY + 'px, 0 )',\n        transform: 'translate3d( 0, ' + distanceY + 'px, 0 )'\n      };\n    }\n  }\n  @HostListener('touchend', ['$event'])\n  touchend(e) {\n    if (!this.startY || this.state.drag === false) {\n      return;\n    }\n    const distanceY = e.changedTouches[0].clientY - this.startY;\n    if (Math.abs(distanceY) >= this.distanceToRefresh) {\n      this.state.currentState = 'release';\n      if (this._direction === 'down' || (this._direction === '' && !this._endReach)) {\n        this.translateY(this.distanceToRefresh + 1);\n      } else {\n        this.translateY(-this.distanceToRefresh - 1);\n      }\n      if (this._ngModelOnChange) {\n        this._ngModelOnChange(this.state);\n      }\n      setTimeout(() => {\n        this.state.currentState = 'finish';\n        if (this._ngModelOnChange) {\n          this._ngModelOnChange(this.state);\n        }\n        if (this._direction === 'down' || (this._direction === '' && !this._endReach)) {\n          this.onRefresh.emit('down');\n        } else {\n          this.translateY(-this.distanceToRefresh - 1);\n          this.onRefresh.emit('up');\n        }\n        setTimeout(() => {\n          this.state.currentState = 'deactivate';\n          if (this._ngModelOnChange) {\n            this._ngModelOnChange(this.state);\n          }\n          this.translateY(0);\n        }, 0);\n      }, 500);\n    } else {\n      this.translateY(0);\n    }\n  }\n  @HostListener('touchcancel')\n  touchcancel() {\n    this.translateY(0);\n  }\n  @HostListener('scroll', ['$event'])\n  scroll(evt) {\n    this._endTime = Date.now();\n    const contentOffset = evt.target.scrollTop;\n    this._lastContentOffset = contentOffset;\n    if (this._direction === '') {\n      if (contentOffset > 0 && evt.target.scrollTop + this.ele.nativeElement.clientHeight === evt.target.scrollHeight) {\n        setTimeout(() => {\n          this._endReach = true;\n        }, 100);\n      } else {\n        this._endReach = false;\n      }\n    }\n    if (!this.endReachedRefresh || this._direction !== 'down') {\n      return;\n    }\n    if (\n      contentOffset > 0 &&\n      evt.target.scrollTop + this.ele.nativeElement.clientHeight > evt.target.scrollHeight - this.distanceToRefresh &&\n      this._endTime - this._startTime >= 100\n    ) {\n      this._startTime = this._endTime;\n      if (this.refreshing) {\n        this.state.currentState = 'release';\n        if (this._ngModelOnChange) {\n          this._ngModelOnChange(this.state);\n        }\n      }\n      setTimeout(() => {\n        if (this.endReachedRefresh) {\n          this.onRefresh.emit('endReachedRefresh');\n        }\n        if (this.refreshing) {\n          this.state.currentState = 'finish';\n          if (this._ngModelOnChange) {\n            this._ngModelOnChange(this.state);\n          }\n        }\n      }, 500);\n    } else {\n      setTimeout(() => {\n        if (this.refreshing) {\n          this.state.currentState = 'finish';\n          if (this._ngModelOnChange) {\n            this._ngModelOnChange(this.state);\n          }\n        }\n      }, 500);\n    }\n  }\n\n  constructor(private ele: ElementRef) {}\n\n  isTemplateRef(value) {\n    return value instanceof TemplateRef;\n  }\n\n  translateY(distanceY) {\n    this.transtionCls = 'am-pull-to-refresh-transition';\n    this.style = {\n      '-webkit-transform': 'translate3d( 0, ' + distanceY + 'px, 0 )',\n      transform: 'translate3d( 0, ' + distanceY + 'px, 0 )'\n    };\n  }\n\n  writeValue(value: object): void {\n    if (value !== null) {\n      this.state = value;\n    }\n  }\n\n  registerOnChange(fn: (_: object) => {}): void {\n    this._ngModelOnChange = fn;\n  }\n\n  registerOnTouched(fn: () => {}): void {\n    this._ngModelOnTouched = fn;\n  }\n}\n","<div class=\"am-pull-to-refresh-content-wrapper\">\n  <div class=\"am-pull-to-refresh-content\" [ngClass]=\"transtionCls\" [ngStyle]=\"style\">\n    <div *ngIf=\"refreshDown\" class=\"am-pull-to-refresh-indicator am-pull-to-refresh-header-indicator\">\n      <ng-template\n        *ngIf=\"isTemplateRef(headerIndicator[state.currentState])\"\n        [ngTemplateOutlet]=\"headerIndicator[state.currentState]\"\n      ></ng-template>\n      <ng-container *ngIf=\"!isTemplateRef(headerIndicator[state.currentState])\">{{\n        headerIndicator[state.currentState]\n      }}</ng-container>\n    </div>\n    <div #pullToRefresh>\n      <ng-content></ng-content>\n      <div\n        *ngIf=\"direction === 'down' && endReachedRefresh\"\n        class=\"am-pull-to-refresh-indicator am-pull-to-refresh-footer-indicator\"\n      >\n        <ng-template\n          *ngIf=\"isTemplateRef(footerIndicator[state.currentState])\"\n          [ngTemplateOutlet]=\"footerIndicator[state.currentState]\"\n        ></ng-template>\n        <ng-container *ngIf=\"!isTemplateRef(footerIndicator[state.currentState])\">{{\n          footerIndicator[state.currentState]\n        }}</ng-container>\n      </div>\n    </div>\n    <div *ngIf=\"refreshUp\" class=\"am-pull-to-refresh-indicator am-pull-to-refresh-footer-indicator\">\n      <ng-template\n        *ngIf=\"isTemplateRef(footerIndicator[state.currentState])\"\n        [ngTemplateOutlet]=\"footerIndicator[state.currentState]\"\n      ></ng-template>\n      <ng-container *ngIf=\"!isTemplateRef(footerIndicator[state.currentState])\">{{\n        footerIndicator[state.currentState]\n      }}</ng-container>\n    </div>\n  </div>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { PullToRefreshComponent } from './pull-to-refresh.component';\nimport { IconModule } from 'ng-zorro-antd-mobile/icon';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\n\n@NgModule({\n  imports: [CommonModule, IconModule, FormsModule, ReactiveFormsModule],\n  exports: [PullToRefreshComponent],\n  declarations: [PullToRefreshComponent]\n})\nexport class PullToRefreshModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}