@scripty/react-store
Version:
This lightweight global react hook store is inspired by the extjs store architecture. Share your stores through your application with only a few lines of code!
72 lines (58 loc) • 1.55 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.Model = void 0;
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
var Model = /*#__PURE__*/function () {
function Model(model, callback) {
var _this = this;
(0, _classCallCheck2["default"])(this, Model);
this.callback = callback;
model.fields.forEach(function (rec) {
_this[rec.name] = rec["default"] ? rec["default"] : _this.getInitialValue(rec.type);
});
}
(0, _createClass2["default"])(Model, [{
key: "getInitialValue",
value: function getInitialValue(type) {
switch (type) {
case 'string':
return '';
case 'object':
return {};
case 'array':
return [];
case 'number':
return 0;
default:
return '';
}
}
}, {
key: "set",
value: function set(record) {
var _this2 = this;
Object.keys(record).forEach(function (key) {
_this2[key] = record[key];
});
if (this.callback) {
this.callback();
}
}
}, {
key: "setDirty",
value: function setDirty() {
this.dirty = true;
}
}, {
key: "get",
value: function get(field) {
return this[field];
}
}]);
return Model;
}();
exports.Model = Model;