JSFiddle - React, Tailwind, and code Playground
by Graham Dixon
Babel + JSX
class Primitive {
constructor (val) {
var self = this;
// all items defined against .value with getter/setter
this.field = "value";
// set given value against value store
this.value = val;
// initial modification time
this.modified = (new Date()).getTime();
// internally store values against __data
this.__data = {};
// set the given value from the this.value to this.__data.value
self.__data[self.field] = self[self.field];
// define a getter to skip getting from .value
Object.defineProperty (self, self.field, {
get: function () {
// this will keep moving and getting against the next layer -- could we collect callbacks here Proxyesque? Or can we still use a light weight Proxy to achieve what we was doing before?
return (self.__data[self.field] instanceof Primitive ? self.__data[self.field][self.field] : self.__data[self.field]);
},
set: function (new_value) {
// setting value to a target, but where is it? (end of Primitive nest)
let target = false;
// set against this one or the next leyer? Next layer will check if it should be next layer again
if (self.__data[self.field][self.field] instanceof Primitive) {
target = self.__data[self.field][self.field];
} else if (self.__data[self.field] instanceof Primitive) {
target = self.__data[self.field];
} else {
target = self.__data;
}
// set values against targeted Primitive obj
target[self.field] = new_value;
// align modified time
target["modified"] = (new Date()).getTime();
}
});
};
// one position above raw
aboveRaw() {
return (this.__data[this.field] instanceof Primitive ?...