20 lines
501 B
JavaScript
20 lines
501 B
JavaScript
import { findClosest } from './lifecycle'
|
|
|
|
let globalIdMemo = {}
|
|
|
|
export function findAndIncrementId(name) {
|
|
if (! globalIdMemo[name]) globalIdMemo[name] = 0
|
|
|
|
return ++globalIdMemo[name]
|
|
}
|
|
|
|
export function closestIdRoot(el, name) {
|
|
return findClosest(el, element => {
|
|
if (element._x_ids && element._x_ids[name]) return true
|
|
})
|
|
}
|
|
|
|
export function setIdRoot(el, name) {
|
|
if (! el._x_ids) el._x_ids = {}
|
|
if (! el._x_ids[name]) el._x_ids[name] = findAndIncrementId(name)
|
|
}
|