UNPKG

997 BJavaScriptView Raw
1import globalize from './internal/globalize';
2
3var uniqueID;
4var uniqueIDstring;
5var uniqueIDcounter = 0;
6
7/**
8 * Generate a unique ID string, checking the ID is not present in the DOM before
9 * returning. Note uniqueID, uniqueIDstring, uniqueIDcounter = 0; set at top of
10 * file.
11 *
12 * @param {String} [prefix] String to prepend to ID instead of default AUI prefix.
13 *
14 * @returns {String}
15 */
16function generateUniqueId (prefix) {
17 uniqueID = uniqueIDcounter++ + '';
18 uniqueIDstring = prefix ? prefix + uniqueID : 'aui-uid-' + uniqueID;
19
20 if (!document.getElementById(uniqueIDstring)) {
21 return uniqueIDstring;
22 } else {
23 uniqueIDstring = uniqueIDstring + '-' + new Date().getTime();
24
25 if (!document.getElementById(uniqueIDstring)) {
26 return uniqueIDstring;
27 } else {
28 throw new Error('Timestamped fallback ID "' + uniqueIDstring + '" exists.');
29 }
30 }
31}
32
33globalize('id', generateUniqueId);
34
35export default generateUniqueId;