@uppy/store-default
Version:
The default simple object-based store for Uppy.
55 lines • 1.73 kB
JavaScript
function _classPrivateFieldLooseBase(e, t) { if (!{}.hasOwnProperty.call(e, t)) throw new TypeError("attempted to use private field on non-instance"); return e; }
var id = 0;
function _classPrivateFieldLooseKey(e) { return "__private_" + id++ + "_" + e; }
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
// @ts-ignore We don't want TS to generate types for the package.json
const packageJson = {
"version": "4.2.0"
};
var _callbacks = /*#__PURE__*/_classPrivateFieldLooseKey("callbacks");
var _publish = /*#__PURE__*/_classPrivateFieldLooseKey("publish");
/**
* Default store that keeps state in a simple object.
*/
class DefaultStore {
constructor() {
Object.defineProperty(this, _publish, {
value: _publish2
});
this.state = {};
Object.defineProperty(this, _callbacks, {
writable: true,
value: new Set()
});
}
getState() {
return this.state;
}
setState(patch) {
const prevState = {
...this.state
};
const nextState = {
...this.state,
...patch
};
this.state = nextState;
_classPrivateFieldLooseBase(this, _publish)[_publish](prevState, nextState, patch);
}
subscribe(listener) {
_classPrivateFieldLooseBase(this, _callbacks)[_callbacks].add(listener);
return () => {
_classPrivateFieldLooseBase(this, _callbacks)[_callbacks].delete(listener);
};
}
}
function _publish2() {
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
args[_key] = arguments[_key];
}
_classPrivateFieldLooseBase(this, _callbacks)[_callbacks].forEach(listener => {
listener(...args);
});
}
DefaultStore.VERSION = packageJson.version;
export default DefaultStore;