{"version":3,"file":"ngx-fullscreen-directive.mjs","sources":["../../../projects/ngx-fullscreen-directive/src/lib/ngx-fullscreen.directive.ts","../../../projects/ngx-fullscreen-directive/src/public-api.ts","../../../projects/ngx-fullscreen-directive/src/ngx-fullscreen-directive.ts"],"sourcesContent":["import { DOCUMENT } from \"@angular/common\";\r\nimport {\r\n  Directive,\r\n  ElementRef,\r\n  EventEmitter,\r\n  Inject,\r\n  Input,\r\n  OnDestroy,\r\n  OnInit,\r\n  Output,\r\n} from \"@angular/core\";\r\n\r\nexport interface FullScreenInstance {\r\n  openFullScreen: () => void;\r\n  closeFullScreen: () => void;\r\n}\r\n\r\n@Directive({\r\n  standalone: true,\r\n  selector: \"[fullScreen]\",\r\n  exportAs: \"fullScreen\",\r\n})\r\nexport class FullScreenDirective implements OnInit, OnDestroy {\r\n  /** Styles applied to the container which has the `fullScreen` directive.\r\n   *\r\n   *  These styles are applied when entering in the full screen mode and are roll-backed when exiting it.\r\n   */\r\n  @Input() set fullScreenCtrStyle(style: CSSStyleDeclaration) {\r\n    this._fullScreenCtrStyle = style;\r\n  }\r\n\r\n  /**Emits whether full screen mode is toggled on*/\r\n  @Output() fullScreenEnabled = new EventEmitter<boolean>();\r\n\r\n  /**Allows calling `openFullScreen()` and `closeFullScreen()` from the component .ts file*/\r\n  @Output() fullScreenInit = new EventEmitter<FullScreenInstance>();\r\n\r\n  private _nativeEl;\r\n  private _fullScreenCtrStyle!: Partial<CSSStyleDeclaration>;\r\n  private _prevStyle!: Partial<CSSStyleDeclaration>;\r\n  private _isFullScreen!: boolean;\r\n\r\n  constructor(\r\n    private _el: ElementRef,\r\n    @Inject(DOCUMENT) private _document: any\r\n  ) {\r\n    this._nativeEl = this._el.nativeElement;\r\n    this._manageListeners(\"add\");\r\n  }\r\n\r\n  ngOnInit(): void {\r\n    const { openFullScreen, closeFullScreen } = this;\r\n    this.fullScreenInit.emit({\r\n      openFullScreen,\r\n      closeFullScreen,\r\n    });\r\n  }\r\n\r\n  private _manageListeners(action: \"add\" | \"remove\") {\r\n    [\"fullscreenchange\", \"webkitfullscreenchange\"].forEach((event) =>\r\n      this._nativeEl[action + \"EventListener\"](event, () => {\r\n        this._isFullScreen =\r\n          this._document.fullscreenElement ||\r\n          this._document.webkitFullscreenElement;\r\n\r\n        this._isFullScreen\r\n          ? this._addFullScreenStyle()\r\n          : this._resetFullScreenStyle();\r\n\r\n        this.fullScreenEnabled.emit(!!this._isFullScreen);\r\n      })\r\n    );\r\n  }\r\n\r\n  openFullScreen = () => {\r\n    if (this._isFullScreen) return;\r\n\r\n    if (this._nativeEl.requestFullscreen) {\r\n      this._nativeEl.requestFullscreen();\r\n    } else if (this._nativeEl.webkitRequestFullscreen) {\r\n      this._nativeEl.webkitRequestFullscreen();\r\n    }\r\n  };\r\n\r\n  closeFullScreen = () => {\r\n    if (!this._isFullScreen) return;\r\n\r\n    if (this._document.exitFullscreen) {\r\n      this._document.exitFullscreen();\r\n    } else if (this._document.webkitExitFullscreen) {\r\n      this._document.webkitExitFullscreen();\r\n    }\r\n  };\r\n\r\n  private _addFullScreenStyle() {\r\n    this._prevStyle = { ...this._nativeEl.style };\r\n    this._asignNativeElStyle(this._fullScreenCtrStyle);\r\n  }\r\n\r\n  private _resetFullScreenStyle() {\r\n    this._asignNativeElStyle(this._prevStyle);\r\n  }\r\n\r\n  private _asignNativeElStyle(style: Partial<CSSStyleDeclaration>) {\r\n    for (const key in this._fullScreenCtrStyle) {\r\n      this._nativeEl.style[key] = style[key];\r\n    }\r\n  }\r\n\r\n  ngOnDestroy(): void {\r\n    this._manageListeners(\"remove\");\r\n  }\r\n}\r\n","/*\r\n * Public API Surface of ngx-fullscreen-directive\r\n */\r\n\r\nexport * from \"./lib/ngx-fullscreen.directive\";\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}