39 lines
860 B
TypeScript
39 lines
860 B
TypeScript
|
import { Inject, Injectable, PLATFORM_ID } from "@angular/core";
|
||
|
import { isPlatformBrowser } from "@angular/common";
|
||
|
|
||
|
function getWindow(): any {
|
||
|
return window;
|
||
|
}
|
||
|
|
||
|
function getMockWindow(): any {
|
||
|
return {
|
||
|
innerWidth: 0,
|
||
|
innerHeight: 0,
|
||
|
scrollY: 0,
|
||
|
scrollX: 0,
|
||
|
pageYOffset: 0,
|
||
|
pageXOffset: 0,
|
||
|
scroll: () => {},
|
||
|
scrollTo: () => {},
|
||
|
addEventListener: () => {},
|
||
|
removeEventListener: () => {},
|
||
|
}
|
||
|
}
|
||
|
|
||
|
@Injectable()
|
||
|
export class WindowRefService {
|
||
|
private readonly isBrowser: boolean = false;
|
||
|
|
||
|
get nativeWindow(): any {
|
||
|
if (this.isBrowser) {
|
||
|
return getWindow();
|
||
|
} else {
|
||
|
return getMockWindow();
|
||
|
}
|
||
|
}
|
||
|
|
||
|
constructor(@Inject(PLATFORM_ID) platformId) {
|
||
|
this.isBrowser = isPlatformBrowser(platformId);
|
||
|
}
|
||
|
}
|