@angular/cdk
Version:
Angular Material Component Development Kit
38 lines (35 loc) • 1.65 kB
JavaScript
import * as i0 from '@angular/core';
import { inject, APP_ID, Injectable } from '@angular/core';
/**
* Keeps track of the ID count per prefix. This helps us make the IDs a bit more deterministic
* like they were before the service was introduced. Note that ideally we wouldn't have to do
* this, but there are some internal tests that rely on the IDs.
*/
const counters = {};
/** Service that generates unique IDs for DOM nodes. */
class _IdGenerator {
_appId = inject(APP_ID);
/**
* Generates a unique ID with a specific prefix.
* @param prefix Prefix to add to the ID.
*/
getId(prefix) {
// Omit the app ID if it's the default `ng`. Since the vast majority of pages have one
// Angular app on them, we can reduce the amount of breakages by not adding it.
if (this._appId !== 'ng') {
prefix += this._appId;
}
if (!counters.hasOwnProperty(prefix)) {
counters[prefix] = 0;
}
return `${prefix}${counters[prefix]++}`;
}
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.0", ngImport: i0, type: _IdGenerator, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.0", ngImport: i0, type: _IdGenerator, providedIn: 'root' });
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.0", ngImport: i0, type: _IdGenerator, decorators: [{
type: Injectable,
args: [{ providedIn: 'root' }]
}] });
export { _IdGenerator as _ };
//# sourceMappingURL=id-generator-0b91c6f7.mjs.map