UNPKG

@ui-tool/core

Version:
45 lines 5.19 kB
import { isPlatformBrowser } from '@angular/common'; import { PLATFORM_ID } from '@angular/core'; import { WINDOW } from '../../constants/injectors/injectors'; /* Define abstract class for obtaining reference to the global window object. */ export class WindowRef { // tslint:disable-next-line:ban-types get nativeWindow() { throw new Error('Not implemented.'); } } /* Define class that implements the abstract class and returns the native window object. */ export class BrowserWindowRef extends WindowRef { constructor() { super(); } // tslint:disable-next-line:ban-types get nativeWindow() { return window; } } /* Create an factory function that returns the native window object. */ // tslint:disable-next-line:ban-types export function windowFactory(browserWindowRef, platformId) { if (isPlatformBrowser(platformId)) { return browserWindowRef.nativeWindow; } return {}; } /* Create a injectable provider for the WindowRef token that uses the BrowserWindowRef class. */ const browserWindowProvider = { provide: WindowRef, useValue: new BrowserWindowRef() }; /* Create an injectable provider that uses the windowFactory function for returning the native window object. */ const windowProvider = { provide: WINDOW, useFactory: windowFactory, deps: [WindowRef, PLATFORM_ID] }; /* Create an array of providers. */ export const WINDOW_PROVIDERS = [ browserWindowProvider, windowProvider ]; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2luZG93LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvcmUvc3JjL3NlcnZpY2VzL2ltcGxlbWVudGF0aW9ucy93aW5kb3cuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUNsRCxPQUFPLEVBQThCLFdBQVcsRUFBZ0IsTUFBTSxlQUFlLENBQUM7QUFDdEYsT0FBTyxFQUFDLE1BQU0sRUFBQyxNQUFNLHFDQUFxQyxDQUFDO0FBRTNELGdGQUFnRjtBQUNoRixNQUFNLE9BQWdCLFNBQVM7SUFFN0IscUNBQXFDO0lBQ3JDLElBQUksWUFBWTtRQUNkLE1BQU0sSUFBSSxLQUFLLENBQUMsa0JBQWtCLENBQUMsQ0FBQztJQUN0QyxDQUFDO0NBRUY7QUFFRCwyRkFBMkY7QUFDM0YsTUFBTSxPQUFPLGdCQUFpQixTQUFRLFNBQVM7SUFFN0M7UUFDRSxLQUFLLEVBQUUsQ0FBQztJQUNWLENBQUM7SUFFRCxxQ0FBcUM7SUFDckMsSUFBSSxZQUFZO1FBQ2QsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQztDQUVGO0FBRUQsdUVBQXVFO0FBRXZFLHFDQUFxQztBQUNyQyxNQUFNLFVBQVUsYUFBYSxDQUFDLGdCQUFrQyxFQUFFLFVBQWtCO0lBQ2xGLElBQUksaUJBQWlCLENBQUMsVUFBVSxDQUFDLEVBQUU7UUFDakMsT0FBTyxnQkFBZ0IsQ0FBQyxZQUFZLENBQUM7S0FDdEM7SUFDRCxPQUFPLEVBQUUsQ0FBQztBQUNaLENBQUM7QUFFRCxnR0FBZ0c7QUFDaEcsTUFBTSxxQkFBcUIsR0FBa0I7SUFDM0MsT0FBTyxFQUFFLFNBQVM7SUFDbEIsUUFBUSxFQUFFLElBQUksZ0JBQWdCLEVBQUU7Q0FDakMsQ0FBQztBQUVGLGdIQUFnSDtBQUNoSCxNQUFNLGNBQWMsR0FBb0I7SUFDdEMsT0FBTyxFQUFFLE1BQU07SUFDZixVQUFVLEVBQUUsYUFBYTtJQUN6QixJQUFJLEVBQUUsQ0FBQyxTQUFTLEVBQUUsV0FBVyxDQUFDO0NBQy9CLENBQUM7QUFFRixtQ0FBbUM7QUFDbkMsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQUc7SUFDOUIscUJBQXFCO0lBQ3JCLGNBQWM7Q0FDZixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtpc1BsYXRmb3JtQnJvd3Nlcn0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7RmFjdG9yeVByb3ZpZGVyLCBJbmplY3RhYmxlLCBQTEFURk9STV9JRCwgVmFsdWVQcm92aWRlcn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1dJTkRPV30gZnJvbSAnLi4vLi4vY29uc3RhbnRzL2luamVjdG9ycy9pbmplY3RvcnMnO1xuXG4vKiBEZWZpbmUgYWJzdHJhY3QgY2xhc3MgZm9yIG9idGFpbmluZyByZWZlcmVuY2UgdG8gdGhlIGdsb2JhbCB3aW5kb3cgb2JqZWN0LiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFdpbmRvd1JlZiB7XG5cbiAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOmJhbi10eXBlc1xuICBnZXQgbmF0aXZlV2luZG93KCk6IFdpbmRvdyB8IE9iamVjdCB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdOb3QgaW1wbGVtZW50ZWQuJyk7XG4gIH1cblxufVxuXG4vKiBEZWZpbmUgY2xhc3MgdGhhdCBpbXBsZW1lbnRzIHRoZSBhYnN0cmFjdCBjbGFzcyBhbmQgcmV0dXJucyB0aGUgbmF0aXZlIHdpbmRvdyBvYmplY3QuICovXG5leHBvcnQgY2xhc3MgQnJvd3NlcldpbmRvd1JlZiBleHRlbmRzIFdpbmRvd1JlZiB7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoKTtcbiAgfVxuXG4gIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpiYW4tdHlwZXNcbiAgZ2V0IG5hdGl2ZVdpbmRvdygpOiBXaW5kb3cgfCBPYmplY3Qge1xuICAgIHJldHVybiB3aW5kb3c7XG4gIH1cblxufVxuXG4vKiBDcmVhdGUgYW4gZmFjdG9yeSBmdW5jdGlvbiB0aGF0IHJldHVybnMgdGhlIG5hdGl2ZSB3aW5kb3cgb2JqZWN0LiAqL1xuXG4vLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6YmFuLXR5cGVzXG5leHBvcnQgZnVuY3Rpb24gd2luZG93RmFjdG9yeShicm93c2VyV2luZG93UmVmOiBCcm93c2VyV2luZG93UmVmLCBwbGF0Zm9ybUlkOiBPYmplY3QpOiBXaW5kb3cgfCBPYmplY3Qge1xuICBpZiAoaXNQbGF0Zm9ybUJyb3dzZXIocGxhdGZvcm1JZCkpIHtcbiAgICByZXR1cm4gYnJvd3NlcldpbmRvd1JlZi5uYXRpdmVXaW5kb3c7XG4gIH1cbiAgcmV0dXJuIHt9O1xufVxuXG4vKiBDcmVhdGUgYSBpbmplY3RhYmxlIHByb3ZpZGVyIGZvciB0aGUgV2luZG93UmVmIHRva2VuIHRoYXQgdXNlcyB0aGUgQnJvd3NlcldpbmRvd1JlZiBjbGFzcy4gKi9cbmNvbnN0IGJyb3dzZXJXaW5kb3dQcm92aWRlcjogVmFsdWVQcm92aWRlciA9IHtcbiAgcHJvdmlkZTogV2luZG93UmVmLFxuICB1c2VWYWx1ZTogbmV3IEJyb3dzZXJXaW5kb3dSZWYoKVxufTtcblxuLyogQ3JlYXRlIGFuIGluamVjdGFibGUgcHJvdmlkZXIgdGhhdCB1c2VzIHRoZSB3aW5kb3dGYWN0b3J5IGZ1bmN0aW9uIGZvciByZXR1cm5pbmcgdGhlIG5hdGl2ZSB3aW5kb3cgb2JqZWN0LiAqL1xuY29uc3Qgd2luZG93UHJvdmlkZXI6IEZhY3RvcnlQcm92aWRlciA9IHtcbiAgcHJvdmlkZTogV0lORE9XLFxuICB1c2VGYWN0b3J5OiB3aW5kb3dGYWN0b3J5LFxuICBkZXBzOiBbV2luZG93UmVmLCBQTEFURk9STV9JRF1cbn07XG5cbi8qIENyZWF0ZSBhbiBhcnJheSBvZiBwcm92aWRlcnMuICovXG5leHBvcnQgY29uc3QgV0lORE9XX1BST1ZJREVSUyA9IFtcbiAgYnJvd3NlcldpbmRvd1Byb3ZpZGVyLFxuICB3aW5kb3dQcm92aWRlclxuXTtcbiJdfQ==