diff --git a/ref.js b/ref.js new file mode 100644 index 0000000..1bbfd7d --- /dev/null +++ b/ref.js @@ -0,0 +1,18 @@ +/** 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 } +} diff --git a/skooma.js b/skooma.js index 5be4037..702d983 100644 --- a/skooma.js +++ b/skooma.js @@ -152,25 +152,6 @@ 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