Buckets:
| /** | |
| * @license | |
| * Copyright 2021 Google LLC | |
| * SPDX-License-Identifier: BSD-3-Clause | |
| */ | |
| /** | |
| * A simple class which stores a value, and triggers registered callbacks when | |
| * the value is changed via its setter. | |
| * | |
| * An implementor might use other observable patterns such as MobX or Redux to | |
| * get behavior like this. But this is a pretty minimal approach that will | |
| * likely work for a number of use cases. | |
| */ | |
| export class ValueNotifier { | |
| get value() { | |
| return this._value; | |
| } | |
| set value(v) { | |
| this.setValue(v); | |
| } | |
| setValue(v, force = false) { | |
| const update = force || !Object.is(v, this._value); | |
| this._value = v; | |
| if (update) { | |
| this.updateObservers(); | |
| } | |
| } | |
| constructor(defaultValue) { | |
| this.subscriptions = new Map(); | |
| this.updateObservers = () => { | |
| for (const [callback, { disposer }] of this.subscriptions) { | |
| callback(this._value, disposer); | |
| } | |
| }; | |
| if (defaultValue !== undefined) { | |
| this.value = defaultValue; | |
| } | |
| } | |
| addCallback(callback, consumerHost, subscribe) { | |
| if (!subscribe) { | |
| // just call the callback once and we're done | |
| callback(this.value); | |
| return; | |
| } | |
| if (!this.subscriptions.has(callback)) { | |
| this.subscriptions.set(callback, { | |
| disposer: () => { | |
| this.subscriptions.delete(callback); | |
| }, | |
| consumerHost, | |
| }); | |
| } | |
| const { disposer } = this.subscriptions.get(callback); | |
| callback(this.value, disposer); | |
| } | |
| clearCallbacks() { | |
| this.subscriptions.clear(); | |
| } | |
| } | |
| //# sourceMappingURL=value-notifier.js.map |
Xet Storage Details
- Size:
- 1.78 kB
- Xet hash:
- 9447fe5909e299a3ebac9c0383ee23447cc59d96160ce7124ac9b13d2fb1d0d2
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.