UNPKG

@visa/nova-angular

Version:

Visa Product Design System Nova Angular library

72 lines 7.73 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 { 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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXVpZC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9ub3ZhLWxpYi9zcmMvbGliL191dGlsaXRpZXMvc2VydmljZXMvdXVpZC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7SUFlSTtBQUNKLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBRTNDOztHQUVHO0FBSUgsTUFBTSxPQUFPLFdBQVc7SUFIeEI7UUFJRTs7V0FFRztRQUNLLFVBQUssR0FBUSxFQUFFLENBQUM7S0F3Q3pCO0lBdENDLGNBQWM7SUFDTixZQUFZO1FBQ2xCLE9BQU8sQ0FDTCxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxRQUFRLEVBQUU7WUFDekMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsUUFBUSxFQUFFO1lBQ3pDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLFFBQVEsRUFBRTtZQUN6QyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxRQUFRLEVBQUU7WUFDekMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsUUFBUSxFQUFFO1lBQ3pDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUMxQyxDQUFDO0lBQ0osQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsT0FBTyxDQUFDLE1BQWU7UUFDckIsTUFBTSxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDOUIsTUFBTSxJQUFJLEdBQUcsRUFBRSxHQUFHLE1BQU0sR0FBRyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDL0MsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsU0FBUyxDQUFDLElBQVksRUFBRSxNQUFlO1FBQ3JDLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQ3JCLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUM5QixDQUFDO1FBQ0QsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDckIsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDOytHQTNDVSxXQUFXO21IQUFYLFdBQVcsY0FGVixNQUFNOzs0RkFFUCxXQUFXO2tCQUh2QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogICAgICAgICAgICAgIMKpIDIwMjUgVmlzYVxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKlxuICoqL1xuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG4vKipcbiAqIFRoaXMgdW5pcXVlIElEIGdlbmVyYXRvciBzZXJ2aWNlIGlzIHByaW1hcmlseSB1c2VkIGludGVybmFsbHkgYnkgdGhlIGxpYnJhcnkgYnV0IGNhbiBiZSBsZXZlcmFnZWQgZGlyZWN0bHkgZm9yIGN1c3RvbSBpbXBsZW1lbnRhdGlvbnMuXG4gKi9cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIFVVSURTZXJ2aWNlIHtcbiAgLyoqXG4gICAqIE9iamVjdCB0byBzdG9yZSBnZW5lcmF0ZWQgSURzLlxuICAgKi9cbiAgcHJpdmF0ZSBVVUlEczogYW55ID0ge307XG5cbiAgLyoqIEBpZ25vcmUgKi9cbiAgcHJpdmF0ZSBfZ2V0UmFuZG9tSWQoKSB7XG4gICAgcmV0dXJuIChcbiAgICAgIE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIDEwKS50b1N0cmluZygpICtcbiAgICAgIE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIDEwKS50b1N0cmluZygpICtcbiAgICAgIE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIDEwKS50b1N0cmluZygpICtcbiAgICAgIE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIDEwKS50b1N0cmluZygpICtcbiAgICAgIE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIDEwKS50b1N0cmluZygpICtcbiAgICAgIE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIDEwKS50b1N0cmluZygpXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGXCoGdldFVVSUTCoG1ldGhvZCBnZW5lcmF0ZXMgYSByYW5kb20gSUQuIDxicj5cbiAgICogV29ya3MgaW4gdGFuZGVtIHdpdGggPGNvZGU+Y2hlY2tVVUlEPC9jb2RlPiB1bnRpbCBhIHVuaXF1ZSBJRCBpcyBnZW5lcmF0ZWQuXG4gICAqIEBwYXJhbSBuYW1lIE9wdGlvbmFsIHN0cmluZyB0byBzdGFydCB0aGUgSUQuXG4gICAqIEByZXR1cm5zIHN0cmluZ1xuICAgKi9cbiAgZ2V0VVVJRChwcmVmaXg/OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHByZWZpeCA9IHByZWZpeCA/IHByZWZpeCA6ICcnO1xuICAgIGNvbnN0IHV1aWQgPSAnJyArIHByZWZpeCArIHRoaXMuX2dldFJhbmRvbUlkKCk7XG4gICAgcmV0dXJuIHRoaXMuY2hlY2tVVUlEKHV1aWQsIHByZWZpeCk7XG4gIH1cblxuICAvKipcbiAgICogVGhlwqBjaGVja1VVSUTCoG1ldGhvZCB2ZXJpZmllcyB0aGF0IHRoZSBJRCBoYXMgbm90IGFscmVhZHkgYmVlbiBnZW5lcmF0ZWQgYnkgdGhlwqBnZXRVVUlEwqBtZXRob2QuIDxicj5cbiAgICogV29ya3MgaW4gdGFuZGVtIHdpdGggPGNvZGU+Z2V0VVVJRDwvY29kZT4gdW50aWwgYSB1bmlxdWUgSUQgaXMgZ2VuZXJhdGVkLlxuICAgKiBAcGFyYW0gdXVpZCBJRCB0byBjaGVjay5cbiAgICogQHBhcmFtIG5hbWUgT3B0aW9uYWwgc3RyaW5nIHRvIHN0YXJ0IHRoZSBJRC5cbiAgICogQHJldHVybnMgdXVpZFxuICAgKi9cbiAgY2hlY2tVVUlEKHV1aWQ6IHN0cmluZywgcHJlZml4Pzogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBpZiAodGhpcy5VVUlEc1t1dWlkXSkge1xuICAgICAgcmV0dXJuIHRoaXMuZ2V0VVVJRChwcmVmaXgpO1xuICAgIH1cbiAgICB0aGlzLlVVSURzW3V1aWRdID0gMTtcbiAgICByZXR1cm4gdXVpZDtcbiAgfVxufVxuIl19