|
|
|
@ -36,14 +36,23 @@ module.exports = function createObject(options) {
|
|
|
|
|
transformedProperties = properties;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
Object.assign(this, transformedProperties);
|
|
|
|
|
|
|
|
|
|
if (Object.keys(transformedProperties).some(property => this.sizeBustingProperties.includes(property))) {
|
|
|
|
|
/* If the size changes, the cache should also be implicitly busted. */
|
|
|
|
|
this.bustSize();
|
|
|
|
|
this.bustCache();
|
|
|
|
|
} else if (Object.keys(transformedProperties).some(property => this.cacheBustingProperties.includes(property))) {
|
|
|
|
|
this.bustCache();
|
|
|
|
|
Object.keys(transformedProperties).forEach((property) => {
|
|
|
|
|
/* Don't apply unchanged properties, to prevent unnecessary cache or size busting. */
|
|
|
|
|
if (this[property] === transformedProperties[property]) {
|
|
|
|
|
delete transformedProperties[property];
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
if (Object.keys(transformedProperties).length > 0) {
|
|
|
|
|
Object.assign(this, transformedProperties);
|
|
|
|
|
|
|
|
|
|
if (Object.keys(transformedProperties).some(property => this.sizeBustingProperties.includes(property))) {
|
|
|
|
|
/* If the size changes, the cache should also be implicitly busted. */
|
|
|
|
|
this.bustSize();
|
|
|
|
|
this.bustCache();
|
|
|
|
|
} else if (Object.keys(transformedProperties).some(property => this.cacheBustingProperties.includes(property))) {
|
|
|
|
|
this.bustCache();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
render: function renderObject(context, options = {}) {
|
|
|
|
|