{"version":3,"file":"ng-devui-drawer.mjs","sources":["../../devui/drawer/drawer.component.ts","../../devui/drawer/drawer.component.html","../../devui/drawer/drawer.service.ts","../../devui/drawer/drawer.moudule.ts","../../devui/drawer/ng-devui-drawer.ts"],"sourcesContent":["import { AnimationEvent } from '@angular/animations';\r\nimport { DOCUMENT } from '@angular/common';\r\nimport {\r\n  ChangeDetectorRef,\r\n  Component,\r\n  Directive,\r\n  ElementRef,\r\n  HostListener,\r\n  Inject,\r\n  Input,\r\n  OnDestroy,\r\n  OnInit,\r\n  Renderer2,\r\n  TemplateRef,\r\n  ViewChild,\r\n  ViewContainerRef,\r\n} from '@angular/core';\r\nimport { ResizeDirective } from 'ng-devui/splitter';\r\nimport { backdropFadeInOut, flyInOut } from 'ng-devui/utils';\r\nimport { isNumber, parseInt, trim } from 'lodash-es';\r\nimport { Observable, Subject, Subscription, fromEvent } from 'rxjs';\r\nimport { debounceTime, distinctUntilChanged, filter, map, switchMap, takeUntil, tap } from 'rxjs/operators';\r\n\r\n@Directive({\r\n  selector: '[dDrawerContentHost]',\r\n})\r\nexport class DrawerContentDirective {\r\n  constructor(public viewContainerRef: ViewContainerRef) {}\r\n}\r\n\r\n@Component({\r\n  selector: 'd-drawer',\r\n  templateUrl: './drawer.component.html',\r\n  styleUrls: ['./drawer.component.scss'],\r\n  animations: [backdropFadeInOut, flyInOut],\r\n  preserveWhitespaces: false,\r\n})\r\nexport class DrawerComponent implements OnInit, OnDestroy {\r\n  animateState = 'void';\r\n  @Input() id: string;\r\n  @Input() width = '300px';\r\n  @Input() zIndex: number;\r\n  @Input() isCover = true;\r\n  /**\r\n   * @deprecated\r\n   */\r\n  @Input() fullScreen = false;\r\n  @Input() showAnimation = true;\r\n  @ViewChild(DrawerContentDirective, { static: true }) drawerContentHost: DrawerContentDirective;\r\n  @Input() backdropCloseable: boolean;\r\n  @Input() escKeyCloseable: boolean;\r\n  @Input() beforeHidden: () => boolean | Promise<boolean> | Observable<boolean>;\r\n  @Input() clickDoms: any = [];\r\n  // Will overwrite by drawer service\r\n  @Input() afterOpened: Function;\r\n  @Input() position: 'right' | 'left' = 'right';\r\n  @Input() bodyScrollable = true; // drawer打开body是否可滚动\r\n  @Input() resizable = false;\r\n  @ViewChild('drawerContainer', { static: true }) drawerContainer: ElementRef;\r\n  @ViewChild('resizeBar', { read: ResizeDirective }) resizeCmp: ResizeDirective;\r\n  _width: string;\r\n  // 全屏时用来记录之前的宽度，因为没遮罩的情况下width不能是百分比\r\n  oldWidth: string;\r\n  _isCover: boolean;\r\n  subscription: Subscription;\r\n  isFullScreen: boolean;\r\n\r\n  animationDone = new Subject<AnimationEvent>();\r\n  animationDoneSub: Subscription;\r\n  resizeSub: Subscription;\r\n  windowResizeSub: Subscription;\r\n  documentOverFlow: boolean;\r\n  scrollTop: number;\r\n  scrollLeft: number;\r\n  document: Document;\r\n\r\n  contentTemplate: TemplateRef<any>;\r\n  _right: string;\r\n  _curWidth;\r\n\r\n  constructor(\r\n    private elementRef: ElementRef,\r\n    private renderer: Renderer2,\r\n    @Inject(DOCUMENT) private doc: any,\r\n    private cdr: ChangeDetectorRef\r\n  ) {\r\n    this.document = this.doc;\r\n  }\r\n\r\n  ngOnInit() {\r\n    this.setWidth(this.width);\r\n    this._isCover = this.isCover === undefined ? true : this.isCover;\r\n\r\n    // some browsers(ie11 & edge) fire the animation done event twice\r\n    this.animationDoneSub = this.animationDone\r\n      .pipe(\r\n        distinctUntilChanged((x, y) => {\r\n          return x.fromState === y.fromState && x.toState === y.toState;\r\n        })\r\n      )\r\n      .subscribe((event) => {\r\n        this.onAnimationEnd(event);\r\n      });\r\n  }\r\n  setWidth(width: string) {\r\n    if (typeof window === 'undefined') {\r\n      return;\r\n    }\r\n    if (width.indexOf('%') >= 0) {\r\n      const widthStr = trim(width, '%');\r\n      const widthNum = parseInt(widthStr, 10);\r\n      this._width = isNumber(widthNum) ? (widthNum * window.innerWidth) / 100 + 'px' : '0px';\r\n      if (!this.windowResizeSub) {\r\n        this.windowResizeSub = fromEvent(window, 'resize')\r\n          .pipe(debounceTime(100))\r\n          .subscribe(() => {\r\n            if (!this.isFullScreen) {\r\n              this.setWidth(this.width);\r\n            }\r\n          });\r\n      }\r\n    } else {\r\n      this._width = width;\r\n    }\r\n    this._right = parseInt(this._width) > window.innerWidth ? -(parseInt(this._width) - (window.innerWidth - 100)) + 'px' : '0px';\r\n    this.oldWidth = this._width;\r\n  }\r\n\r\n  ngOnDestroy() {\r\n    if (this.animationDoneSub) {\r\n      this.animationDoneSub.unsubscribe();\r\n    }\r\n    if (this.resizeSub) {\r\n      this.resizeSub.unsubscribe();\r\n    }\r\n\r\n    if (this.windowResizeSub) {\r\n      this.windowResizeSub.unsubscribe();\r\n    }\r\n  }\r\n\r\n  @HostListener('document:keydown.escape', ['$event']) keydownHandler(event: KeyboardEvent) {\r\n    event.stopPropagation();\r\n    if (this.escKeyCloseable && !this.isHaveDialogOrUpload()) {\r\n      this.hide();\r\n    }\r\n  }\r\n\r\n  onAnimationEnd(event) {\r\n    if (this.animateState === 'void') {\r\n      this.onHidden();\r\n    }\r\n    if (this.animateState === 'in' && this.afterOpened) {\r\n      this.afterOpened();\r\n    }\r\n  }\r\n\r\n  // Will overwrite by drawer service\r\n  onHidden() {}\r\n\r\n  show() {\r\n    if (this.document.documentElement.scrollHeight > this.document.documentElement.clientHeight) {\r\n      this.documentOverFlow = true;\r\n      this.scrollTop = this.document.documentElement.scrollTop || this.document.body.scrollTop;\r\n      this.scrollLeft = this.document.documentElement.scrollLeft || this.document.body.scrollLeft;\r\n      this.renderer.addClass(this.document.body, 'devui-body-scrollblock');\r\n      this.renderer.setStyle(this.document.body, 'top', `-${this.scrollTop}px`);\r\n      this.renderer.setStyle(this.document.body, 'left', `-${this.scrollLeft}px`);\r\n    }\r\n    if (!this.bodyScrollable && this.documentOverFlow) {\r\n      this.renderer.addClass(this.document.body, 'devui-body-overflow-hidden');\r\n    }\r\n    this.animateState = 'in';\r\n    const activeElement = this.document.activeElement;\r\n    if (activeElement && typeof (activeElement as any).blur === 'function') {\r\n      (activeElement as any).blur();\r\n    }\r\n    setTimeout(() => {\r\n      this.handleResizeWidth();\r\n    }, 0);\r\n    this.isCover = this.isCover === undefined ? true : this.isCover;\r\n    if (!this.backdropCloseable || this.isCover) {\r\n      return;\r\n    }\r\n    const documentClick = fromEvent<KeyboardEvent>(document, 'click');\r\n    setTimeout(() => {\r\n      this.subscription = documentClick.subscribe((event: Event) => {\r\n        if (this.clickDoms && this.clickDoms.length > 0) {\r\n          this.clickDoms.forEach((dom) => {\r\n            if (dom !== null && dom.contains(event.target)) {\r\n              this.hide();\r\n              return;\r\n            }\r\n          });\r\n        } else {\r\n          const target: any = event.target;\r\n          // 一定要document.contains(event.target)，因为event.target可能已经不在document里了，这个时候就不能进hide了\r\n          if (\r\n            this.animateState === 'in' &&\r\n            !this.elementRef.nativeElement.contains(target) &&\r\n            this.document.body.contains(target) &&\r\n            !this.isHaveDialogOrUpload()\r\n          ) {\r\n            this.hide();\r\n          }\r\n        }\r\n      });\r\n    });\r\n  }\r\n\r\n  hide() {\r\n    this.canHideModel().then((canHide) => {\r\n      if (!canHide) {\r\n        return;\r\n      }\r\n      this.hideOperation();\r\n    });\r\n  }\r\n\r\n  hideDirectly() {\r\n    this.hideOperation();\r\n  }\r\n\r\n  private hideOperation() {\r\n    if (this.documentOverFlow) {\r\n      this.renderer.removeStyle(this.document.body, 'top');\r\n      this.renderer.removeStyle(this.document.body, 'left');\r\n      this.renderer.removeClass(this.document.body, 'devui-body-scrollblock');\r\n      this.renderer.removeClass(this.document.body, 'devui-body-overflow-hidden');\r\n      this.document.documentElement.scrollTop = this.scrollTop;\r\n      this.document.body.scrollTop = this.scrollTop;\r\n      this.document.documentElement.scrollLeft = this.scrollLeft;\r\n      this.document.body.scrollLeft = this.scrollLeft;\r\n    }\r\n    this.animateState = 'void';\r\n    if (this.subscription) {\r\n      this.subscription.unsubscribe();\r\n      this.subscription = undefined;\r\n    }\r\n  }\r\n\r\n  // Will overwrite by drawer service\r\n  destroy() {}\r\n\r\n  isHaveDialogOrUpload() {\r\n    const dialog: any = this.document.getElementsByClassName('modal-dialog');\r\n    const upload: any = this.document.getElementById('d-upload-temp');\r\n    return (dialog && dialog.length > 0) || upload;\r\n  }\r\n\r\n  canHideModel() {\r\n    let hiddenResult = Promise.resolve(true);\r\n\r\n    if (this.beforeHidden) {\r\n      const result: any = this.beforeHidden();\r\n      if (typeof result !== 'undefined') {\r\n        if (result.then) {\r\n          hiddenResult = result;\r\n        } else if (result.subscribe) {\r\n          hiddenResult = (result as Observable<boolean>).toPromise();\r\n        } else {\r\n          hiddenResult = Promise.resolve(result);\r\n        }\r\n      }\r\n    }\r\n\r\n    return hiddenResult;\r\n  }\r\n\r\n  private _setFullScreen(fullScreen?: boolean) {\r\n    if (typeof window === 'undefined') {\r\n      return;\r\n    }\r\n    const drawerContainerEle = this.drawerContainer.nativeElement;\r\n    if (this._width === this.oldWidth) {\r\n      if (fullScreen === true || fullScreen === undefined) {\r\n        this.isFullScreen = true;\r\n        this._width = this._isCover ? '100%' : window.innerWidth + 'px';\r\n        this.renderer.setStyle(\r\n          drawerContainerEle,\r\n          'transition',\r\n          this.showAnimation ? `width .3s cubic-bezier(0.5, 0.05, 0.5, 0.95)` : 'none'\r\n        );\r\n        if (!this._isCover) {\r\n          const resizeEv = fromEvent(window, 'resize');\r\n          const result = resizeEv.pipe(debounceTime(100));\r\n          this.resizeSub = result.subscribe((ev) => {\r\n            this._width = window.innerWidth + 'px';\r\n          });\r\n        }\r\n      }\r\n    } else {\r\n      if (!fullScreen) {\r\n        this.isFullScreen = false;\r\n        this._width = this.oldWidth;\r\n        if (this.resizeSub) {\r\n          this.resizeSub.unsubscribe();\r\n        }\r\n      }\r\n    }\r\n  }\r\n\r\n  public toggleFullScreen() {\r\n    this._setFullScreen();\r\n  }\r\n\r\n  public setFullScreen(fullScreen: boolean) {\r\n    this._setFullScreen(fullScreen);\r\n  }\r\n\r\n  private stopPropagation = ({ originalEvent: event }) => {\r\n    event.stopPropagation();\r\n    if (event.cancelable) {\r\n      event.preventDefault();\r\n    }\r\n  };\r\n\r\n  private moveStream = (resize) => (mouseDown) =>\r\n    resize.dragEvent.pipe(\r\n      takeUntil(resize.releaseEvent),\r\n      map(({ pageX, pageY }) => ({\r\n        originalX: mouseDown.pageX,\r\n        originalY: mouseDown.pageY,\r\n        pageX,\r\n        pageY,\r\n      }))\r\n    );\r\n\r\n  public handleResizeWidth() {\r\n    if (this.resizable) {\r\n      this.resizeCmp.pressEvent\r\n        .pipe(\r\n          tap(this.stopPropagation),\r\n          filter(() => {\r\n            this._curWidth = this._width;\r\n            return this.resizable;\r\n          }),\r\n          switchMap(this.moveStream(this.resizeCmp))\r\n        )\r\n        .subscribe(({ pageX, originalX }) => {\r\n          this.showAnimation = false;\r\n          let tmpWidth;\r\n          if (this.position === 'left') {\r\n            tmpWidth = parseInt(this._curWidth, 10) + pageX - originalX + 'px';\r\n          } else {\r\n            tmpWidth = parseInt(this._curWidth, 10) + originalX - pageX + 'px';\r\n          }\r\n          this.setWidth(tmpWidth);\r\n\r\n          this.cdr.detectChanges();\r\n        });\r\n\r\n      this.resizeCmp.releaseEvent.subscribe(() => {\r\n        this.showAnimation = true;\r\n      });\r\n    }\r\n  }\r\n}\r\n","<div\n  class=\"drawer\"\n  [attr.id]=\"id\"\n  [ngStyle]=\"{ 'z-index': zIndex }\"\n  [ngClass]=\"{ 'display-width': _isCover && animateState === 'in' }\"\n  [style.left]=\"position === 'left' ? 0 : null\"\n  [style.right]=\"position === 'right' ? 0 : null\"\n>\n  <div\n    class=\"overlay-wrapper\"\n    [ngClass]=\"{ 'display-width': _isCover && animateState === 'in' }\"\n    [style.left]=\"position === 'left' ? 0 : null\"\n    [style.right]=\"position === 'right' ? 0 : null\"\n  >\n    <div\n      class=\"overlay-backdrop\"\n      [ngClass]=\"{ 'display-width': _isCover && animateState === 'in' }\"\n      [@backdropAnimation]=\"animateState\"\n      [@.disabled]=\"!showAnimation\"\n      (click)=\"backdropCloseable && hide()\"\n    ></div>\n    <div\n      #drawerContainer\n      class=\"drawer-nav\"\n      [ngStyle]=\"{ width: _width }\"\n      [@flyInOut]=\"position + '-' + animateState\"\n      (@flyInOut.done)=\"animationDone.next($event)\"\n      [@.disabled]=\"!showAnimation\"\n      [style.left]=\"position === 'left' ? 0 : null\"\n      [style.right]=\"position === 'right' ? _right : null\"\n    >\n      <div class=\"drawer-content\" cdkScrollable>\n        <ng-template dDrawerContentHost></ng-template>\n      </div>\n      <div *ngIf=\"contentTemplate\" class=\"drawer-content\" cdkScrollable>\n        <ng-template [ngTemplateOutlet]=\"contentTemplate\"></ng-template>\n      </div>\n      <div\n        #resizeBar\n        dResize\n        class=\"devui-drawer-resize-bar\"\n        [ngClass]=\"{\n          'devui-drawer-can-hover': resizable,\n          'devui-drawer-resize-bar-left': position === 'left',\n          'devui-drawer-resize-bar-right': position === 'right'\n        }\"\n      ></div>\n    </div>\n  </div>\n</div>\n","import { ComponentFactoryResolver, Injectable } from '@angular/core';\nimport { OverlayContainerRef } from 'ng-devui/overlay-container';\nimport { assign, isUndefined } from 'lodash-es';\nimport { DrawerComponent } from './drawer.component';\nimport { IDrawerOpenResult, IDrawerOptions } from './drawer.types';\n\n@Injectable()\nexport class DrawerService {\n  constructor(\n    private overlayContainerRef: OverlayContainerRef,\n    private componentFactoryResolver: ComponentFactoryResolver\n  ) { }\n\n  open({\n    drawerContentComponent,\n    injector,\n    componentFactoryResolver,\n    id,\n    zIndex,\n    width,\n    fullScreen, // @deprecated\n    data,\n    isCover,\n    clickDoms,\n    onClose,\n    afterOpened,\n    backdropCloseable,\n    escKeyCloseable,\n    beforeHidden,\n    destroyOnHide = true,\n    position = 'right',\n    bodyScrollable = true,\n    showAnimation = true,\n    contentTemplate,\n    resizable = false\n  }: IDrawerOptions): IDrawerOpenResult {\n    const componentFactoryResolver_ = componentFactoryResolver || this.componentFactoryResolver;\n    const drawerRef = this.overlayContainerRef.createComponent(\n      componentFactoryResolver_.resolveComponentFactory(DrawerComponent),\n      injector\n    );\n    assign(drawerRef.instance, {\n      id,\n      width,\n      zIndex,\n      isCover,\n      clickDoms,\n      fullScreen,\n      beforeHidden,\n      afterOpened,\n      escKeyCloseable,\n      position,\n      backdropCloseable: isUndefined(backdropCloseable) ? true : backdropCloseable,\n      bodyScrollable,\n      showAnimation,\n      contentTemplate,\n      resizable\n    });\n\n    let drawerContentRef;\n    if (drawerContentComponent) {\n      drawerContentRef = drawerRef.instance.drawerContentHost.viewContainerRef.createComponent(\n        componentFactoryResolver_.resolveComponentFactory(drawerContentComponent),\n        0,\n        injector\n      );\n      assign(drawerContentRef.instance, data);\n    }\n\n    drawerRef.instance.onHidden = () => {\n      if (onClose) {\n        onClose();\n      }\n      if (destroyOnHide) {\n        setTimeout(() => {\n          drawerRef.hostView.destroy();\n        });\n      }\n    };\n\n    drawerRef.instance.destroy = () => {\n      if (!destroyOnHide && drawerRef.instance.animateState === 'void') {\n        drawerRef.hostView.destroy();\n      }\n    };\n\n    drawerRef.instance.show();\n    return {\n      drawerInstance: drawerRef.instance,\n      drawerContentInstance: drawerContentRef ? drawerContentRef.instance : null\n    };\n  }\n}\n","import { ScrollingModule } from '@angular/cdk/scrolling';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { OverlayContainerModule } from 'ng-devui/overlay-container';\nimport { PortalModule } from 'ng-devui/portal';\nimport { SplitterModule } from 'ng-devui/splitter';\nimport { DrawerComponent, DrawerContentDirective } from './drawer.component';\nimport { DrawerService } from './drawer.service';\n\n@NgModule({\n  imports: [\n    CommonModule,\n    ScrollingModule,\n    SplitterModule,\n    PortalModule,\n    OverlayContainerModule\n  ],\n  exports: [DrawerComponent],\n  declarations: [\n    DrawerComponent,\n    DrawerContentDirective\n  ],\n  providers: [DrawerService],\n\n})\nexport class DrawerModule {\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1"],"mappings":"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"}