UNPKG

@visa/nova-angular

Version:

Visa Product Design System Nova Angular library

81 lines 8.4 kB
/** * © 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=