{"version":3,"file":"ng-devui-fullscreen.mjs","sources":["../../devui/fullscreen/fullscreen.config.ts","../../devui/fullscreen/fullscreen.component.ts","../../devui/fullscreen/fullscreen.component.html","../../devui/fullscreen/fullscreen.module.ts","../../devui/fullscreen/ng-devui-fullscreen.ts"],"sourcesContent":["export const DEFAULT_MODE = 'immersive';\nexport const DEFAULT_ZINDEX = 10;\nexport const ESC_KEYCODE = 27;\n","import { DOCUMENT } from '@angular/common';\nimport { AfterViewInit, Component, ElementRef, EventEmitter, Inject, Input, OnDestroy, OnInit, Output, Renderer2 } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { DEFAULT_MODE, DEFAULT_ZINDEX, ESC_KEYCODE } from './fullscreen.config';\nimport { FullscreenMode } from './fullscreen.type';\n\n@Component({\n  selector: 'd-fullscreen',\n  templateUrl: './fullscreen.component.html',\n  styleUrls: ['./fullscreen.component.scss'],\n  preserveWhitespaces: false,\n})\nexport class FullscreenComponent implements OnInit, OnDestroy, AfterViewInit {\n  @Input() mode: FullscreenMode = DEFAULT_MODE;\n  @Input() zIndex = DEFAULT_ZINDEX;\n  /**\n   * @deprecated\n   */\n  @Input() target: HTMLElement;\n  @Input() container: HTMLElement;\n  @Input() beforeChange: (isFullscreen: boolean, trigger: string) => boolean | Promise<boolean> | Observable<boolean>;\n  @Output() fullscreenLaunch: EventEmitter<any> = new EventEmitter<any>();\n  document: Document;\n  private currentTarget: HTMLElement;\n  private isFullscreen = false;\n\n  constructor(@Inject(DOCUMENT) private doc: any, private elementRef: ElementRef, private render: Renderer2) {\n    this.document = this.doc;\n  }\n\n  ngOnInit() {\n    this.document.addEventListener('fullscreenchange', this.onFullScreenChange);\n    this.document.addEventListener('MSFullscreenChange', this.onFullScreenChange);\n    this.document.addEventListener('webkitfullscreenchange', this.onFullScreenChange);\n    this.document.addEventListener('keydown', this.handleKeyDown);\n  }\n\n  ngAfterViewInit() {\n    const btnLaunch = this.elementRef.nativeElement.querySelector('[fullscreen-launch]');\n    if (btnLaunch) {\n      btnLaunch.addEventListener('click', this.handleFullscreen);\n    }\n  }\n\n  ngOnDestroy() {\n    this.document.removeEventListener('fullscreenchange', this.onFullScreenChange);\n    this.document.removeEventListener('MSFullscreenChange', this.onFullScreenChange);\n    this.document.removeEventListener('webkitfullscreenchange', this.onFullScreenChange);\n    this.document.removeEventListener('keydown', this.handleKeyDown);\n    const btnLaunch = this.elementRef.nativeElement.querySelector('[fullscreen-launch]');\n    if (btnLaunch) {\n      btnLaunch.removeEventListener('click', this.handleFullscreen);\n    }\n  }\n\n  private launchNormalFullscreen(targetElement: HTMLElement) {\n    targetElement.classList.add('fullscreen');\n    if (this.zIndex) {\n      targetElement.setAttribute('style', `z-index: ${this.zIndex}`);\n    }\n  }\n\n  private exitNormalFullscreen(targetElement: HTMLElement) {\n    targetElement.classList.remove('fullscreen');\n    targetElement.style.zIndex = null;\n  }\n\n  private async launchImmersiveFullScreen(docElement: any) {\n    let fullscreenLaunch;\n    if (docElement.requestFullscreen) {\n      fullscreenLaunch = docElement.requestFullscreen();\n    } else if (docElement.mozRequestFullScreen) {\n      fullscreenLaunch = docElement.mozRequestFullScreen();\n    } else if (docElement.webkitRequestFullScreen) {\n      fullscreenLaunch = Promise.resolve(docElement.webkitRequestFullScreen());\n    } else if (docElement.msRequestFullscreen) {\n      fullscreenLaunch = Promise.resolve(docElement.msRequestFullscreen());\n    }\n    return await fullscreenLaunch.then(() => !!this.doc.fullscreenElement);\n  }\n\n  private async exitImmersiveFullScreen(doc: any) {\n    let fullscreenExit;\n    if (doc.exitFullscreen) {\n      fullscreenExit = doc.exitFullscreen();\n    } else if (doc.mozCancelFullScreen) {\n      fullscreenExit = doc.mozCancelFullScreen();\n    } else if (doc.webkitCancelFullScreen) {\n      fullscreenExit = Promise.resolve(doc.webkitCancelFullScreen());\n    } else if (doc.msExitFullscreen) {\n      fullscreenExit = Promise.resolve(doc.msExitFullscreen());\n    }\n    return await fullscreenExit.then(() => !!this.doc.fullscreenElement);\n  }\n\n  private canChange(isFullscreen: boolean, trigger: string) {\n    let changeResult = Promise.resolve(true);\n\n    if (this.beforeChange) {\n      const result: any = this.beforeChange(isFullscreen, trigger);\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\n    return changeResult;\n  }\n\n  private beforeChangeCheck(fullscreen: boolean, trigger: string, func: Function) {\n    this.canChange(fullscreen, trigger).then((permission: boolean) => permission && func());\n  }\n\n  private onFullScreenChange = (event) => {\n    if (this.currentTarget) {\n      const targetElement: HTMLElement = this.currentTarget;\n      if (this.doc.fullscreenElement || this.doc.msFullscreenElement || this.doc.webkitFullscreenElement) {\n        this.addFullScreenStyle();\n        this.launchNormalFullscreen(targetElement);\n      } else {\n        this.removeFullScreenStyle();\n        this.currentTarget = null;\n        this.exitNormalFullscreen(targetElement);\n      }\n      // F11退出全屏时，需要将全屏状态传出去\n      const isFullscreen = !!(this.doc.fullscreenElement || this.doc.msFullscreenElement || this.doc.webkitFullscreenElement);\n      this.fullscreenLaunch.emit({ isFullscreen });\n      this.isFullscreen = isFullscreen;\n    }\n  };\n\n  public handleFullscreen = () => {\n    const targetElement = this.elementRef.nativeElement.querySelector('[fullscreen-target]');\n    const fullscreen =\n      this.mode === 'normal'\n        ? targetElement.classList.contains('fullscreen')\n        : !!(this.doc.fullscreenElement || this.doc.msFullscreenElement || this.doc.webkitFullscreenElement);\n    this.beforeChangeCheck(fullscreen, 'click', async () => {\n      this.isFullscreen =\n        this.mode === 'normal'\n          ? this.normalFullscreenCallback(fullscreen, targetElement)\n          : await this.immersiveFullScreenCallback(fullscreen, targetElement);\n      this.fullscreenLaunch.emit({ isFullscreen: this.isFullscreen });\n    });\n  };\n\n  normalFullscreenCallback(fullscreen: boolean, targetElement: HTMLElement) {\n    if (fullscreen) {\n      this.removeFullScreenStyle();\n      this.exitNormalFullscreen(targetElement);\n      return false;\n    } else {\n      this.addFullScreenStyle();\n      this.launchNormalFullscreen(targetElement);\n      return true;\n    }\n  }\n\n  async immersiveFullScreenCallback(fullscreen: boolean, targetElement: HTMLElement) {\n    this.currentTarget = targetElement;\n    return fullscreen ? await this.exitImmersiveFullScreen(this.doc) : await this.launchImmersiveFullScreen(this.doc.documentElement);\n  }\n\n  private handleKeyDown = (event) => {\n    // 按ESC键退出全屏\n    if (event.keyCode === ESC_KEYCODE && this.isFullscreen) {\n      this.beforeChangeCheck(this.isFullscreen, 'esc', () => {\n        const targetElement = this.elementRef.nativeElement.querySelector('[fullscreen-target]');\n        if (this.mode === 'normal') {\n          this.removeFullScreenStyle();\n          this.exitNormalFullscreen(targetElement);\n        } else if (this.doc.fullscreenElement) {\n          this.exitImmersiveFullScreen(this.doc);\n        }\n\n        this.isFullscreen = false;\n        this.fullscreenLaunch.emit({ isFullscreen: false });\n      });\n    }\n  };\n\n  private addFullScreenStyle() {\n    if (this.container) {\n      this.render.addClass(this.container, 'devui-container-fullscreen');\n    } else {\n      this.render.addClass(this.document.getElementsByTagName('html')[0], 'devui-fullscreen');\n    }\n  }\n\n  private removeFullScreenStyle() {\n    if (this.container) {\n      this.render.removeClass(this.container, 'devui-container-fullscreen');\n    } else {\n      this.render.removeClass(this.document.getElementsByTagName('html')[0], 'devui-fullscreen');\n    }\n  }\n}\n","<div class=\"fullscreen-container\">\n  <ng-content select=\"[fullscreen-launch]\"></ng-content>\n  <ng-content select=\"[fullscreen-target]\"></ng-content>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { ButtonModule } from 'ng-devui/button';\nimport { FullscreenComponent } from './fullscreen.component';\n\n@NgModule({\n  imports: [\n    CommonModule,\n    ButtonModule\n  ],\n  exports: [\n    FullscreenComponent\n  ],\n  declarations: [\n    FullscreenComponent\n  ]\n})\nexport class FullscreenModule {\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}