Minor refactor & documentation
This commit is contained in:
parent
74de53874b
commit
8de5303550
1 changed files with 21 additions and 4 deletions
|
@ -361,7 +361,11 @@ export class ObservableElement extends Observable {
|
||||||
#value
|
#value
|
||||||
#changedValue = false
|
#changedValue = false
|
||||||
|
|
||||||
constructor(target, {get, equal, ...options}={}) {
|
/**
|
||||||
|
* @param {HTMLElement} target
|
||||||
|
*/
|
||||||
|
constructor(target, {get=undefined, equal=undefined, ...options}={}) {
|
||||||
|
// @ts-ignore
|
||||||
super(options)
|
super(options)
|
||||||
this[target] = target
|
this[target] = target
|
||||||
|
|
||||||
|
@ -385,19 +389,19 @@ export class ObservableElement extends Observable {
|
||||||
get value() { return this.#value }
|
get value() { return this.#value }
|
||||||
|
|
||||||
update() {
|
update() {
|
||||||
const current = this.#getValue(this[target])
|
const current = this.#getValue(this.target)
|
||||||
|
|
||||||
if (this.#equal(this.#value, current)) return
|
if (this.#equal(this.#value, current)) return
|
||||||
|
|
||||||
this.#value = current
|
this.#value = current
|
||||||
|
|
||||||
if (this.synchronous) {
|
if (this.synchronous) {
|
||||||
this.dispatchEvent(new MultiChangeEvent(["value", current]))
|
this.dispatchEvent(new ValueChangeEvent(["value", current]))
|
||||||
} else {
|
} else {
|
||||||
if (!this.#changedValue) {
|
if (!this.#changedValue) {
|
||||||
queueMicrotask(() => {
|
queueMicrotask(() => {
|
||||||
this.#changedValue = false
|
this.#changedValue = false
|
||||||
this.dispatchEvent(new MultiChangeEvent(["value", this.#changedValue]))
|
this.dispatchEvent(new ValueChangeEvent(["value", this.#changedValue]))
|
||||||
})
|
})
|
||||||
this.#changedValue = current
|
this.#changedValue = current
|
||||||
}
|
}
|
||||||
|
@ -407,18 +411,31 @@ export class ObservableElement extends Observable {
|
||||||
|
|
||||||
export class MapStorage extends Storage {
|
export class MapStorage extends Storage {
|
||||||
#map = new Map()
|
#map = new Map()
|
||||||
|
/**
|
||||||
|
* @param {number} index
|
||||||
|
* @return {string}
|
||||||
|
*/
|
||||||
key(index) {
|
key(index) {
|
||||||
return [...this.#map.keys()][index]
|
return [...this.#map.keys()][index]
|
||||||
}
|
}
|
||||||
|
/**
|
||||||
|
* @param {string} keyName
|
||||||
|
* @return {any}
|
||||||
|
*/
|
||||||
getItem(keyName) {
|
getItem(keyName) {
|
||||||
if (this.#map.has(keyName))
|
if (this.#map.has(keyName))
|
||||||
return this.#map.get(keyName)
|
return this.#map.get(keyName)
|
||||||
else
|
else
|
||||||
return null
|
return null
|
||||||
}
|
}
|
||||||
|
/**
|
||||||
|
* @param {string} keyName
|
||||||
|
* @param {any} keyValue
|
||||||
|
*/
|
||||||
setItem(keyName, keyValue) {
|
setItem(keyName, keyValue) {
|
||||||
this.#map.set(keyName, String(keyValue))
|
this.#map.set(keyName, String(keyValue))
|
||||||
}
|
}
|
||||||
|
/** @param {string} keyName */
|
||||||
removeItem(keyName) {
|
removeItem(keyName) {
|
||||||
this.#map.delete(keyName)
|
this.#map.delete(keyName)
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue