@visa/nova-angular
Version:
Visa Product Design System Nova Angular library
81 lines • 8.4 kB
JavaScript
/**
* © 2025 Visa
*
* 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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLXN0YWJsZS1jaGVjay5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9ub3ZhLWxpYi9zcmMvbGliL191dGlsaXRpZXMvc2VydmljZXMvYXBwLXN0YWJsZS1jaGVjay5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7SUFlSTtBQUNKLE9BQU8sRUFBRSxjQUFjLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxXQUFXLEVBQUUsTUFBTSxFQUFrQixNQUFNLGVBQWUsQ0FBQztBQUN4RyxPQUFPLEVBQUUsUUFBUSxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUJBQWlCLENBQUM7O0FBQzlEOzs7R0FHRztBQUlILE1BQU0sT0FBTyxlQUFlO0lBUTFCLFlBQ1UsTUFBc0IsRUFDSixRQUFrQixFQUNmLFVBQWtCO1FBRnZDLFdBQU0sR0FBTixNQUFNLENBQWdCO1FBQ0osYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQUNmLGVBQVUsR0FBVixVQUFVLENBQVE7UUFWakQ7O1dBRUc7UUFDSCxjQUFTLEdBQTRCLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNuRCxjQUFjO1FBQ2Qsd0JBQW1CLEdBQUcsS0FBSyxDQUFDO1FBTzFCLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFO1lBQzFDLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQy9CLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVEOztPQUVHO0lBQ0gsbUJBQW1CO1FBQ2pCLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ2xCLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQztRQUN2QixDQUFDOztZQUFNLE9BQU8sS0FBSyxDQUFDO0lBQ3RCLENBQUM7SUFFRDs7O09BR0c7SUFDSCxzQkFBc0I7UUFDcEIsT0FBTyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDNUMsQ0FBQztJQUVEOzs7T0FHRztJQUNILHdCQUF3QjtRQUN0QixJQUFJLElBQUksQ0FBQyxtQkFBbUI7WUFBRSxPQUFPLElBQUksQ0FBQyxDQUFDLDJDQUEyQztRQUN0RixJQUFJLENBQUMsbUJBQW1CLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixFQUFFLElBQUksSUFBSSxDQUFDLHNCQUFzQixFQUFFLENBQUM7UUFDdkYsT0FBTyxJQUFJLENBQUMsbUJBQW1CLENBQUM7SUFDbEMsQ0FBQzsrR0EzQ1UsZUFBZSxnREFVaEIsUUFBUSxhQUNSLFdBQVc7bUhBWFYsZUFBZSxjQUZkLE1BQU07OzRGQUVQLGVBQWU7a0JBSDNCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25COzswQkFXSSxNQUFNOzJCQUFDLFFBQVE7OzBCQUNmLE1BQU07MkJBQUMsV0FBVyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogICAgICAgICAgICAgIMKpIDIwMjUgVmlzYVxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKlxuICoqL1xuaW1wb3J0IHsgQXBwbGljYXRpb25SZWYsIEluamVjdGFibGUsIEluamVjdCwgUExBVEZPUk1fSUQsIHNpZ25hbCwgV3JpdGFibGVTaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IERPQ1VNRU5ULCBpc1BsYXRmb3JtQnJvd3NlciB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG4vKipcbiAqIFRoaXMgc2VydmljZSBpcyB1c2VkIGludGVybmFsbHkgYnkgdGhlIGxpYnJhcnkgYW5kIGNhbiBvcHRpb25hbGx5IGJlIHVzZWQgZGlyZWN0bHkuIDxiciAvPlxuICogSXTigJlzIHJlcXVpcmVkIGZvciBTU1IgaW50ZWdyYXRpb24gYnV0IG5vdCBuZWNlc3NhcnkgZm9yIGZ1bmN0aW9ucyBiZWhpbmQgQW5ndWxhcidzIHJlbmRlcmVyLlxuICovXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBBcHBSZWFkeVNlcnZpY2Uge1xuICAvKipcbiAgICogU2lnbmFsIHRvIGluZGljYXRlIGlmIHRoZSBhcHBsaWNhdGlvbiBpcyBzdGFibGUuXG4gICAqL1xuICBhcHBTdGFibGU6IFdyaXRhYmxlU2lnbmFsPGJvb2xlYW4+ID0gc2lnbmFsKGZhbHNlKTtcbiAgLyoqIEBpZ25vcmUgKi9cbiAgX2Jyb3dzZXJBbmREb21SZWFkeSA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgYXBwUmVmOiBBcHBsaWNhdGlvblJlZixcbiAgICBASW5qZWN0KERPQ1VNRU5UKSBwcml2YXRlIGRvY3VtZW50OiBEb2N1bWVudCxcbiAgICBASW5qZWN0KFBMQVRGT1JNX0lEKSBwcml2YXRlIHBsYXRmb3JtSWQ6IG9iamVjdFxuICApIHtcbiAgICB0aGlzLmFwcFJlZi5pc1N0YWJsZS5zdWJzY3JpYmUoKGlzU3RhYmxlKSA9PiB7XG4gICAgICB0aGlzLmFwcFN0YWJsZS5zZXQoaXNTdGFibGUpO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBjaGVja0RvY3VtZW50RXhpc3RzIG1ldGhvZCBjaGVja3MgYW5kIHJldHVybnMgdGhlIGRvY3VtZW50IG9iamVjdCBpZiBhcHBsaWNhYmxlLlxuICAgKi9cbiAgY2hlY2tEb2N1bWVudEV4aXN0cygpOiBEb2N1bWVudCB8IGJvb2xlYW4ge1xuICAgIGlmICh0aGlzLmRvY3VtZW50KSB7XG4gICAgICByZXR1cm4gdGhpcy5kb2N1bWVudDtcbiAgICB9IGVsc2UgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBjaGVja0lzUGxhdGZvcm1Ccm93c2VyIG1ldGhvZCBjaGVja3MgaWYgdGhlIHBsYXRmb3JtIGlzIGEgYnJvd3NlciAoYXMgb3Bwb3NlZCB0byBzZXJ2ZXIpLlxuICAgKiBAcmV0dXJucyBib29sZWFuXG4gICAqL1xuICBjaGVja0lzUGxhdGZvcm1Ccm93c2VyKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBpc0Jyb3dzZXJBbmREb21BdmFpbGFibGUgbWV0aG9kIGNoZWNrcyBmb3IgYm90aCB0aGUgZG9jdW1lbnQgYW5kIHRoZSBicm93c2VyIHBsYXRmb3JtLlxuICAgKiBAcmV0dXJucyBib29sZWFuXG4gICAqL1xuICBpc0Jyb3dzZXJBbmREb21BdmFpbGFibGUoKTogYm9vbGVhbiB7XG4gICAgaWYgKHRoaXMuX2Jyb3dzZXJBbmREb21SZWFkeSkgcmV0dXJuIHRydWU7IC8vIHByZXZlbnQgY2FsbGluZyB0aGUgZnVuY3Rpb25zIGV2ZXJ5IHRpbWVcbiAgICB0aGlzLl9icm93c2VyQW5kRG9tUmVhZHkgPSB0aGlzLmNoZWNrRG9jdW1lbnRFeGlzdHMoKSAmJiB0aGlzLmNoZWNrSXNQbGF0Zm9ybUJyb3dzZXIoKTtcbiAgICByZXR1cm4gdGhpcy5fYnJvd3NlckFuZERvbVJlYWR5O1xuICB9XG59XG4iXX0=