@bespunky/angular-zen
Version:
The Angular tools you always wished were there.
48 lines • 6.21 kB
JavaScript
import { Inject, Injectable, InjectionToken } from '@angular/core';
import { DOCUMENT as ANGULAR_DOCUMENT } from '@angular/common';
import * as i0 from "@angular/core";
/** A token used to provide the native document implementation for `DocumentRef`. By default, `CoreModule` will provide angular's DOCUMENT token. */
export const DOCUMENT = new InjectionToken('DocumentToken');
/**
* Provides an injectable wrapper for the `document` object.
* Inject this in your services/components and you will be able to easily mock or spy on the native `document` object in your tests.
*
* By default, the `nativeDocument` property will point to angular's DOM adapter, thus facilitating DOM access and manipulation
* on the different platforms.
* To mock the native document, provide a value for the `DOCUMENT` token from `@bespunky/angular-zen/core`.
* You will safely mock it without trashing angular's `DOCUMENT` provider.
*
* @see document-ref.service.spec.ts for examples.
*/
export class DocumentRef {
// Treating native document as `any` save users typecasting everytime and deducing if the object is of type `Document` or `object`.
/**
* Creates an instance of `DocumentRef`.
*
* @param {*} nativeDocument The native document provided by the `DOCUMENT` token of `@bespunky/angular-zen/core`. See `DocumentRef` for details.
*/
constructor(nativeDocument) {
this.nativeDocument = nativeDocument;
}
}
DocumentRef.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: DocumentRef, deps: [{ token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Injectable });
DocumentRef.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: DocumentRef, providedIn: 'root' });
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: DocumentRef, decorators: [{
type: Injectable,
args: [{ providedIn: 'root' }]
}], ctorParameters: function () { return [{ type: undefined, decorators: [{
type: Inject,
args: [DOCUMENT]
}] }]; } });
/**
* The default provider for the `DOCUMENT` token. Uses angular's DOM adapters which will be injected according to the platform.
*/
export const DocumentProvider = {
provide: DOCUMENT,
useExisting: ANGULAR_DOCUMENT
};
/**
* A bundle of all providers needed for DocumentRef to work.
*/
export const DocumentRefProviders = [DocumentProvider];
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9jdW1lbnQtcmVmLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItemVuL2NvcmUvc3JjL2RvY3VtZW50LXJlZi9kb2N1bWVudC1yZWYuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQW9CLE1BQU0sRUFBRSxVQUFVLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3JGLE9BQU8sRUFBRSxRQUFRLElBQUksZ0JBQWdCLEVBQTBCLE1BQU0saUJBQWlCLENBQUM7O0FBRXZGLG9KQUFvSjtBQUNwSixNQUFNLENBQUMsTUFBTSxRQUFRLEdBQUcsSUFBSSxjQUFjLENBQVcsZUFBZSxDQUFDLENBQUM7QUFFdEU7Ozs7Ozs7Ozs7R0FVRztBQUVILE1BQU0sT0FBTyxXQUFXO0lBRXBCLG1JQUFtSTtJQUNuSTs7OztPQUlHO0lBQ0gsWUFBOEMsY0FBbUI7UUFBbkIsbUJBQWMsR0FBZCxjQUFjLENBQUs7SUFBSSxDQUFDOzt5R0FSN0QsV0FBVyxrQkFRQSxRQUFROzZHQVJuQixXQUFXLGNBREUsTUFBTTs0RkFDbkIsV0FBVztrQkFEdkIsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUU7OzBCQVNqQixNQUFNOzJCQUFDLFFBQVE7O0FBR2hDOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQXFCO0lBQzlDLE9BQU8sRUFBTSxRQUFRO0lBQ3JCLFdBQVcsRUFBRSxnQkFBZ0I7Q0FDaEMsQ0FBQztBQUVGOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sb0JBQW9CLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRXhpc3RpbmdQcm92aWRlciwgSW5qZWN0LCBJbmplY3RhYmxlLCBJbmplY3Rpb25Ub2tlbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRE9DVU1FTlQgYXMgQU5HVUxBUl9ET0NVTUVOVCAgICAgICAgICAgICAgICAgICAgICAgICB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5cbi8qKiBBIHRva2VuIHVzZWQgdG8gcHJvdmlkZSB0aGUgbmF0aXZlIGRvY3VtZW50IGltcGxlbWVudGF0aW9uIGZvciBgRG9jdW1lbnRSZWZgLiBCeSBkZWZhdWx0LCBgQ29yZU1vZHVsZWAgd2lsbCBwcm92aWRlIGFuZ3VsYXIncyBET0NVTUVOVCB0b2tlbi4gKi9cbmV4cG9ydCBjb25zdCBET0NVTUVOVCA9IG5ldyBJbmplY3Rpb25Ub2tlbjxEb2N1bWVudD4oJ0RvY3VtZW50VG9rZW4nKTtcblxuLyoqXG4gKiBQcm92aWRlcyBhbiBpbmplY3RhYmxlIHdyYXBwZXIgZm9yIHRoZSBgZG9jdW1lbnRgIG9iamVjdC5cbiAqIEluamVjdCB0aGlzIGluIHlvdXIgc2VydmljZXMvY29tcG9uZW50cyBhbmQgeW91IHdpbGwgYmUgYWJsZSB0byBlYXNpbHkgbW9jayBvciBzcHkgb24gdGhlIG5hdGl2ZSBgZG9jdW1lbnRgIG9iamVjdCBpbiB5b3VyIHRlc3RzLlxuICogXG4gKiBCeSBkZWZhdWx0LCB0aGUgYG5hdGl2ZURvY3VtZW50YCBwcm9wZXJ0eSB3aWxsIHBvaW50IHRvIGFuZ3VsYXIncyBET00gYWRhcHRlciwgdGh1cyBmYWNpbGl0YXRpbmcgRE9NIGFjY2VzcyBhbmQgbWFuaXB1bGF0aW9uXG4gKiBvbiB0aGUgZGlmZmVyZW50IHBsYXRmb3Jtcy5cbiAqIFRvIG1vY2sgdGhlIG5hdGl2ZSBkb2N1bWVudCwgcHJvdmlkZSBhIHZhbHVlIGZvciB0aGUgYERPQ1VNRU5UYCB0b2tlbiBmcm9tIGBAYmVzcHVua3kvYW5ndWxhci16ZW4vY29yZWAuXG4gKiBZb3Ugd2lsbCBzYWZlbHkgbW9jayBpdCB3aXRob3V0IHRyYXNoaW5nIGFuZ3VsYXIncyBgRE9DVU1FTlRgIHByb3ZpZGVyLlxuICogXG4gKiBAc2VlIGRvY3VtZW50LXJlZi5zZXJ2aWNlLnNwZWMudHMgZm9yIGV4YW1wbGVzLlxuICovXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIERvY3VtZW50UmVmXG57XG4gICAgLy8gVHJlYXRpbmcgbmF0aXZlIGRvY3VtZW50IGFzIGBhbnlgIHNhdmUgdXNlcnMgdHlwZWNhc3RpbmcgZXZlcnl0aW1lIGFuZCBkZWR1Y2luZyBpZiB0aGUgb2JqZWN0IGlzIG9mIHR5cGUgYERvY3VtZW50YCBvciBgb2JqZWN0YC5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGFuIGluc3RhbmNlIG9mIGBEb2N1bWVudFJlZmAuXG4gICAgICogXG4gICAgICogQHBhcmFtIHsqfSBuYXRpdmVEb2N1bWVudCBUaGUgbmF0aXZlIGRvY3VtZW50IHByb3ZpZGVkIGJ5IHRoZSBgRE9DVU1FTlRgIHRva2VuIG9mIGBAYmVzcHVua3kvYW5ndWxhci16ZW4vY29yZWAuIFNlZSBgRG9jdW1lbnRSZWZgIGZvciBkZXRhaWxzLiBcbiAgICAgKi9cbiAgICBjb25zdHJ1Y3RvcihASW5qZWN0KERPQ1VNRU5UKSBwdWJsaWMgcmVhZG9ubHkgbmF0aXZlRG9jdW1lbnQ6IGFueSkgeyB9XG59XG5cbi8qKlxuICogVGhlIGRlZmF1bHQgcHJvdmlkZXIgZm9yIHRoZSBgRE9DVU1FTlRgIHRva2VuLiBVc2VzIGFuZ3VsYXIncyBET00gYWRhcHRlcnMgd2hpY2ggd2lsbCBiZSBpbmplY3RlZCBhY2NvcmRpbmcgdG8gdGhlIHBsYXRmb3JtLlxuICovXG5leHBvcnQgY29uc3QgRG9jdW1lbnRQcm92aWRlcjogRXhpc3RpbmdQcm92aWRlciA9IHtcbiAgICBwcm92aWRlICAgIDogRE9DVU1FTlQsXG4gICAgdXNlRXhpc3Rpbmc6IEFOR1VMQVJfRE9DVU1FTlRcbn07XG5cbi8qKlxuICogQSBidW5kbGUgb2YgYWxsIHByb3ZpZGVycyBuZWVkZWQgZm9yIERvY3VtZW50UmVmIHRvIHdvcmsuXG4gKi9cbmV4cG9ydCBjb25zdCBEb2N1bWVudFJlZlByb3ZpZGVycyA9IFtEb2N1bWVudFByb3ZpZGVyXTtcbiJdfQ==