UNPKG

@visa/nova-angular

Version:

Visa Product Design System Nova Angular library

81 lines 8.45 kB
/** * Copyright (c) 2025 Visa, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * **/ import { ApplicationRef, Injectable, Inject, PLATFORM_ID, signal } from '@angular/core'; import { DOCUMENT, isPlatformBrowser } from '@angular/common'; import * as i0 from "@angular/core"; /** * This service is used internally by the library and can optionally be used directly. <br /> * It’s required for SSR integration but not necessary for functions behind Angular's renderer. */ export class AppReadyService { constructor(appRef, document, platformId) { this.appRef = appRef; this.document = document; this.platformId = platformId; /** * Signal to indicate if the application is stable. */ this.appStable = signal(false); /** @ignore */ this._browserAndDomReady = false; this.appRef.isStable.subscribe((isStable) => { this.appStable.set(isStable); }); } /** * The checkDocumentExists method checks and returns the document object if applicable. */ checkDocumentExists() { if (this.document) { return this.document; } else return false; } /** * The checkIsPlatformBrowser method checks if the platform is a browser (as opposed to server). * @returns boolean */ checkIsPlatformBrowser() { return isPlatformBrowser(this.platformId); } /** * The isBrowserAndDomAvailable method checks for both the document and the browser platform. * @returns boolean */ isBrowserAndDomAvailable() { if (this._browserAndDomReady) return true; // prevent calling the functions every time this._browserAndDomReady = this.checkDocumentExists() && this.checkIsPlatformBrowser(); return this._browserAndDomReady; } static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AppReadyService, deps: [{ token: i0.ApplicationRef }, { token: DOCUMENT }, { token: PLATFORM_ID }], target: i0.ɵɵFactoryTarget.Injectable }); } static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AppReadyService, providedIn: 'root' }); } } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AppReadyService, decorators: [{ type: Injectable, args: [{ providedIn: 'root' }] }], ctorParameters: () => [{ type: i0.ApplicationRef }, { type: Document, decorators: [{ type: Inject, args: [DOCUMENT] }] }, { type: undefined, decorators: [{ type: Inject, args: [PLATFORM_ID] }] }] }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLXN0YWJsZS1jaGVjay5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9ub3ZhLWxpYi9zcmMvbGliL191dGlsaXRpZXMvc2VydmljZXMvYXBwLXN0YWJsZS1jaGVjay5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7SUFlSTtBQUNKLE9BQU8sRUFBRSxjQUFjLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxXQUFXLEVBQUUsTUFBTSxFQUFrQixNQUFNLGVBQWUsQ0FBQztBQUN4RyxPQUFPLEVBQUUsUUFBUSxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUJBQWlCLENBQUM7O0FBQzlEOzs7R0FHRztBQUlILE1BQU0sT0FBTyxlQUFlO0lBUTFCLFlBQ1UsTUFBc0IsRUFDSixRQUFrQixFQUNmLFVBQWtCO1FBRnZDLFdBQU0sR0FBTixNQUFNLENBQWdCO1FBQ0osYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQUNmLGVBQVUsR0FBVixVQUFVLENBQVE7UUFWakQ7O1dBRUc7UUFDSCxjQUFTLEdBQTRCLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNuRCxjQUFjO1FBQ2Qsd0JBQW1CLEdBQUcsS0FBSyxDQUFDO1FBTzFCLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFO1lBQzFDLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQy9CLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVEOztPQUVHO0lBQ0gsbUJBQW1CO1FBQ2pCLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ2xCLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQztRQUN2QixDQUFDOztZQUFNLE9BQU8sS0FBSyxDQUFDO0lBQ3RCLENBQUM7SUFFRDs7O09BR0c7SUFDSCxzQkFBc0I7UUFDcEIsT0FBTyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDNUMsQ0FBQztJQUVEOzs7T0FHRztJQUNILHdCQUF3QjtRQUN0QixJQUFJLElBQUksQ0FBQyxtQkFBbUI7WUFBRSxPQUFPLElBQUksQ0FBQyxDQUFDLDJDQUEyQztRQUN0RixJQUFJLENBQUMsbUJBQW1CLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixFQUFFLElBQUksSUFBSSxDQUFDLHNCQUFzQixFQUFFLENBQUM7UUFDdkYsT0FBTyxJQUFJLENBQUMsbUJBQW1CLENBQUM7SUFDbEMsQ0FBQzsrR0EzQ1UsZUFBZSxnREFVaEIsUUFBUSxhQUNSLFdBQVc7bUhBWFYsZUFBZSxjQUZkLE1BQU07OzRGQUVQLGVBQWU7a0JBSDNCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25COzswQkFXSSxNQUFNOzJCQUFDLFFBQVE7OzBCQUNmLE1BQU07MkJBQUMsV0FBVyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogICAgICAgICAgICAgIENvcHlyaWdodCAoYykgMjAyNSBWaXNhLCBJbmMuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqXG4gKiovXG5pbXBvcnQgeyBBcHBsaWNhdGlvblJlZiwgSW5qZWN0YWJsZSwgSW5qZWN0LCBQTEFURk9STV9JRCwgc2lnbmFsLCBXcml0YWJsZVNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRE9DVU1FTlQsIGlzUGxhdGZvcm1Ccm93c2VyIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbi8qKlxuICogVGhpcyBzZXJ2aWNlIGlzIHVzZWQgaW50ZXJuYWxseSBieSB0aGUgbGlicmFyeSBhbmQgY2FuIG9wdGlvbmFsbHkgYmUgdXNlZCBkaXJlY3RseS4gPGJyIC8+XG4gKiBJdOKAmXMgcmVxdWlyZWQgZm9yIFNTUiBpbnRlZ3JhdGlvbiBidXQgbm90IG5lY2Vzc2FyeSBmb3IgZnVuY3Rpb25zIGJlaGluZCBBbmd1bGFyJ3MgcmVuZGVyZXIuXG4gKi9cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIEFwcFJlYWR5U2VydmljZSB7XG4gIC8qKlxuICAgKiBTaWduYWwgdG8gaW5kaWNhdGUgaWYgdGhlIGFwcGxpY2F0aW9uIGlzIHN0YWJsZS5cbiAgICovXG4gIGFwcFN0YWJsZTogV3JpdGFibGVTaWduYWw8Ym9vbGVhbj4gPSBzaWduYWwoZmFsc2UpO1xuICAvKiogQGlnbm9yZSAqL1xuICBfYnJvd3NlckFuZERvbVJlYWR5ID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBhcHBSZWY6IEFwcGxpY2F0aW9uUmVmLFxuICAgIEBJbmplY3QoRE9DVU1FTlQpIHByaXZhdGUgZG9jdW1lbnQ6IERvY3VtZW50LFxuICAgIEBJbmplY3QoUExBVEZPUk1fSUQpIHByaXZhdGUgcGxhdGZvcm1JZDogb2JqZWN0XG4gICkge1xuICAgIHRoaXMuYXBwUmVmLmlzU3RhYmxlLnN1YnNjcmliZSgoaXNTdGFibGUpID0+IHtcbiAgICAgIHRoaXMuYXBwU3RhYmxlLnNldChpc1N0YWJsZSk7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogVGhlIGNoZWNrRG9jdW1lbnRFeGlzdHMgbWV0aG9kIGNoZWNrcyBhbmQgcmV0dXJucyB0aGUgZG9jdW1lbnQgb2JqZWN0IGlmIGFwcGxpY2FibGUuXG4gICAqL1xuICBjaGVja0RvY3VtZW50RXhpc3RzKCk6IERvY3VtZW50IHwgYm9vbGVhbiB7XG4gICAgaWYgKHRoaXMuZG9jdW1lbnQpIHtcbiAgICAgIHJldHVybiB0aGlzLmRvY3VtZW50O1xuICAgIH0gZWxzZSByZXR1cm4gZmFsc2U7XG4gIH1cblxuICAvKipcbiAgICogVGhlIGNoZWNrSXNQbGF0Zm9ybUJyb3dzZXIgbWV0aG9kIGNoZWNrcyBpZiB0aGUgcGxhdGZvcm0gaXMgYSBicm93c2VyIChhcyBvcHBvc2VkIHRvIHNlcnZlcikuXG4gICAqIEByZXR1cm5zIGJvb2xlYW5cbiAgICovXG4gIGNoZWNrSXNQbGF0Zm9ybUJyb3dzZXIoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JZCk7XG4gIH1cblxuICAvKipcbiAgICogVGhlIGlzQnJvd3NlckFuZERvbUF2YWlsYWJsZSBtZXRob2QgY2hlY2tzIGZvciBib3RoIHRoZSBkb2N1bWVudCBhbmQgdGhlIGJyb3dzZXIgcGxhdGZvcm0uXG4gICAqIEByZXR1cm5zIGJvb2xlYW5cbiAgICovXG4gIGlzQnJvd3NlckFuZERvbUF2YWlsYWJsZSgpOiBib29sZWFuIHtcbiAgICBpZiAodGhpcy5fYnJvd3NlckFuZERvbVJlYWR5KSByZXR1cm4gdHJ1ZTsgLy8gcHJldmVudCBjYWxsaW5nIHRoZSBmdW5jdGlvbnMgZXZlcnkgdGltZVxuICAgIHRoaXMuX2Jyb3dzZXJBbmREb21SZWFkeSA9IHRoaXMuY2hlY2tEb2N1bWVudEV4aXN0cygpICYmIHRoaXMuY2hlY2tJc1BsYXRmb3JtQnJvd3NlcigpO1xuICAgIHJldHVybiB0aGlzLl9icm93c2VyQW5kRG9tUmVhZHk7XG4gIH1cbn1cbiJdfQ==