Add Ref class to follow reactive elements
This commit is contained in:
parent
d53e6c7fd5
commit
6d4e398336
1 changed files with 19 additions and 0 deletions
19
skooma.js
19
skooma.js
|
@ -152,6 +152,25 @@ export const reactiveElement = observable => {
|
|||
return element
|
||||
}
|
||||
|
||||
/** A reference to a reactive element that follows it around through changes */
|
||||
export class Ref {
|
||||
#current
|
||||
/** @param {Element|Text} target A reactive element to follow */
|
||||
constructor(target) {
|
||||
this.#current = target
|
||||
this.follow(target)
|
||||
}
|
||||
|
||||
follow(target) {
|
||||
target.addEventListener("replaced", ({next}) => {
|
||||
this.#current = next
|
||||
this.follow(next)
|
||||
})
|
||||
}
|
||||
|
||||
deref() { return this.#current }
|
||||
}
|
||||
|
||||
/** Set an attribute on an element
|
||||
* @param {Element} element
|
||||
* @param {string} attribute
|
||||
|
|
Loading…
Reference in a new issue