UNPKG

973 BJavaScriptView Raw
1/**
2 * generates a UID factory
3 * @internal
4 * @example
5 * const uid = generateUID();
6 * uid(object) = 1;
7 * uid(object) = 1;
8 * uid(anotherObject) = 2;
9 */
10export var generateUID = function () {
11 var counter = 1;
12 var map = new WeakMap();
13 /**
14 * @borrows {uid}
15 */
16 var uid = function (item, index) {
17 if (typeof item === 'number' || typeof item === 'string') {
18 return index ? "idx-".concat(index) : "val-".concat(item);
19 }
20 if (!map.has(item)) {
21 map.set(item, counter++);
22 return uid(item);
23 }
24 return 'uid' + map.get(item);
25 };
26 return uid;
27};
28/**
29 * @name uid
30 * returns an UID associated with {item}
31 * @param {Object} item - object to generate UID for
32 * @param {Number} index, a fallback index
33 * @example
34 * uid(object) == 1;
35 * uid(object) == 1;
36 * uid(anotherObject) == 2;
37 * uid("not object", 42) == 42
38 *
39 * @see {@link useUID}
40 */
41export var uid = generateUID();