2 * Created by onvelocity on 2/12/16.
6 import guid
from './guid'
7 import DescriptorModel
from './model/DescriptorModel'
8 export default class UID
{
10 static get propertyName() {
19 if (!obj
|| /undefined|null/.test(obj
)) {
22 if (obj
instanceof DescriptorModel
) {
23 // a descriptor instance
26 if (obj
.dataset
&& obj
.dataset
.uid
) {
28 obj
= obj
.dataset
.uid
;
29 } else if (obj
.__data__
&& obj
.__data__
.uid
) {
31 obj
= obj
.__data__
.uid
;
32 } else if (obj
instanceof Element
) {
33 obj
= d3
.select(obj
).attr('data-uid');
35 if (!obj
|| /undefined|null/.test(obj
)) {
38 const uid
= typeof obj
=== 'object' ? obj
[UID
.propertyName
] || (obj
.uiState
&& obj
.uiState
[UID
.propertyName
]) : obj
;
39 if (typeof uid
=== 'string') {
44 static hasUniqueId(obj
) {
45 return !!UID
.from(obj
);
48 static assignUniqueId(obj
) {
49 return obj
[UID
.propertyName
] = UID
.create();