JSFiddle - React, Tailwind, and code Playground
by Jason Green
JavaScript
function Facet(owner, config) {
this.name = _.firstLowerCase(this.constructor.name);
this.owner = owner;
this.config = config || {};
this.init.apply(this, arguments);
}
Facet.prototype.init = function Facet$init() {};
function FacetedObject() {
var facetsConfig = this.facetsConfig || {};
var facetsDescriptors = {}
, facets = {};
if (this.facetsClasses) {
for (var facetName in this.facetsClasses) {
var FacetClass = this.facetsClasses[facetName];
var fctConfig = facetsConfig[facetName];
facets[facetName] = new FacetClass(this, fctConfig);
facetsDescriptors[facetName] = {
enumerable: true,
value: facets[facetName]
};
}
}
Object.defineProperties(this, facetsDescriptors);
_.defineProperty(this, 'facets', facets);
if (this.init)
this.init.apply(this, arguments);
}