UNPKG

@visa/nova-angular

Version:

Visa Product Design System Nova Angular library

72 lines 7.77 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 { Injectable } from '@angular/core'; import * as i0 from "@angular/core"; /** * This unique ID generator service is primarily used internally by the library but can be leveraged directly for custom implementations. */ export class UUIDService { constructor() { /** * Object to store generated IDs. */ this.UUIDs = {}; } /** @ignore */ _getRandomId() { return (Math.floor(Math.random() * 10).toString() + Math.floor(Math.random() * 10).toString() + Math.floor(Math.random() * 10).toString() + Math.floor(Math.random() * 10).toString() + Math.floor(Math.random() * 10).toString() + Math.floor(Math.random() * 10).toString()); } /** * The getUUID method generates a random ID. <br> * Works in tandem with <code>checkUUID</code> until a unique ID is generated. * @param name Optional string to start the ID. * @returns string */ getUUID(prefix) { prefix = prefix ? prefix : ''; const uuid = '' + prefix + this._getRandomId(); return this.checkUUID(uuid, prefix); } /** * The checkUUID method verifies that the ID has not already been generated by the getUUID method. <br> * Works in tandem with <code>getUUID</code> until a unique ID is generated. * @param uuid ID to check. * @param name Optional string to start the ID. * @returns uuid */ checkUUID(uuid, prefix) { if (this.UUIDs[uuid]) { return this.getUUID(prefix); } this.UUIDs[uuid] = 1; return uuid; } static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: UUIDService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); } static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: UUIDService, providedIn: 'root' }); } } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: UUIDService, decorators: [{ type: Injectable, args: [{ providedIn: 'root' }] }] }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXVpZC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9ub3ZhLWxpYi9zcmMvbGliL191dGlsaXRpZXMvc2VydmljZXMvdXVpZC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7SUFlSTtBQUNKLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBRTNDOztHQUVHO0FBSUgsTUFBTSxPQUFPLFdBQVc7SUFIeEI7UUFJRTs7V0FFRztRQUNLLFVBQUssR0FBUSxFQUFFLENBQUM7S0F3Q3pCO0lBdENDLGNBQWM7SUFDTixZQUFZO1FBQ2xCLE9BQU8sQ0FDTCxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxRQUFRLEVBQUU7WUFDekMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsUUFBUSxFQUFFO1lBQ3pDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLFFBQVEsRUFBRTtZQUN6QyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxRQUFRLEVBQUU7WUFDekMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsUUFBUSxFQUFFO1lBQ3pDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUMxQyxDQUFDO0lBQ0osQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsT0FBTyxDQUFDLE1BQWU7UUFDckIsTUFBTSxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDOUIsTUFBTSxJQUFJLEdBQUcsRUFBRSxHQUFHLE1BQU0sR0FBRyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDL0MsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsU0FBUyxDQUFDLElBQVksRUFBRSxNQUFlO1FBQ3JDLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQ3JCLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUM5QixDQUFDO1FBQ0QsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDckIsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDOytHQTNDVSxXQUFXO21IQUFYLFdBQVcsY0FGVixNQUFNOzs0RkFFUCxXQUFXO2tCQUh2QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogICAgICAgICAgICAgIENvcHlyaWdodCAoYykgMjAyNSBWaXNhLCBJbmMuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqXG4gKiovXG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbi8qKlxuICogVGhpcyB1bmlxdWUgSUQgZ2VuZXJhdG9yIHNlcnZpY2UgaXMgcHJpbWFyaWx5IHVzZWQgaW50ZXJuYWxseSBieSB0aGUgbGlicmFyeSBidXQgY2FuIGJlIGxldmVyYWdlZCBkaXJlY3RseSBmb3IgY3VzdG9tIGltcGxlbWVudGF0aW9ucy5cbiAqL1xuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgVVVJRFNlcnZpY2Uge1xuICAvKipcbiAgICogT2JqZWN0IHRvIHN0b3JlIGdlbmVyYXRlZCBJRHMuXG4gICAqL1xuICBwcml2YXRlIFVVSURzOiBhbnkgPSB7fTtcblxuICAvKiogQGlnbm9yZSAqL1xuICBwcml2YXRlIF9nZXRSYW5kb21JZCgpIHtcbiAgICByZXR1cm4gKFxuICAgICAgTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogMTApLnRvU3RyaW5nKCkgK1xuICAgICAgTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogMTApLnRvU3RyaW5nKCkgK1xuICAgICAgTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogMTApLnRvU3RyaW5nKCkgK1xuICAgICAgTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogMTApLnRvU3RyaW5nKCkgK1xuICAgICAgTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogMTApLnRvU3RyaW5nKCkgK1xuICAgICAgTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogMTApLnRvU3RyaW5nKClcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZcKgZ2V0VVVJRMKgbWV0aG9kIGdlbmVyYXRlcyBhIHJhbmRvbSBJRC4gPGJyPlxuICAgKiBXb3JrcyBpbiB0YW5kZW0gd2l0aCA8Y29kZT5jaGVja1VVSUQ8L2NvZGU+IHVudGlsIGEgdW5pcXVlIElEIGlzIGdlbmVyYXRlZC5cbiAgICogQHBhcmFtIG5hbWUgT3B0aW9uYWwgc3RyaW5nIHRvIHN0YXJ0IHRoZSBJRC5cbiAgICogQHJldHVybnMgc3RyaW5nXG4gICAqL1xuICBnZXRVVUlEKHByZWZpeD86IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcHJlZml4ID0gcHJlZml4ID8gcHJlZml4IDogJyc7XG4gICAgY29uc3QgdXVpZCA9ICcnICsgcHJlZml4ICsgdGhpcy5fZ2V0UmFuZG9tSWQoKTtcbiAgICByZXR1cm4gdGhpcy5jaGVja1VVSUQodXVpZCwgcHJlZml4KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGXCoGNoZWNrVVVJRMKgbWV0aG9kIHZlcmlmaWVzIHRoYXQgdGhlIElEIGhhcyBub3QgYWxyZWFkeSBiZWVuIGdlbmVyYXRlZCBieSB0aGXCoGdldFVVSUTCoG1ldGhvZC4gPGJyPlxuICAgKiBXb3JrcyBpbiB0YW5kZW0gd2l0aCA8Y29kZT5nZXRVVUlEPC9jb2RlPiB1bnRpbCBhIHVuaXF1ZSBJRCBpcyBnZW5lcmF0ZWQuXG4gICAqIEBwYXJhbSB1dWlkIElEIHRvIGNoZWNrLlxuICAgKiBAcGFyYW0gbmFtZSBPcHRpb25hbCBzdHJpbmcgdG8gc3RhcnQgdGhlIElELlxuICAgKiBAcmV0dXJucyB1dWlkXG4gICAqL1xuICBjaGVja1VVSUQodXVpZDogc3RyaW5nLCBwcmVmaXg/OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGlmICh0aGlzLlVVSURzW3V1aWRdKSB7XG4gICAgICByZXR1cm4gdGhpcy5nZXRVVUlEKHByZWZpeCk7XG4gICAgfVxuICAgIHRoaXMuVVVJRHNbdXVpZF0gPSAxO1xuICAgIHJldHVybiB1dWlkO1xuICB9XG59XG4iXX0=