in modules/core/src/lib/layer.js [737:776]
setChangeFlags(flags) {
const {changeFlags} = this.internalState;
/* eslint-disable no-fallthrough, max-depth */
for (const key in flags) {
if (flags[key]) {
let flagChanged = false;
switch (key) {
case 'dataChanged':
// changeFlags.dataChanged may be `false`, a string (reason) or an array of ranges
if (Array.isArray(changeFlags[key])) {
changeFlags[key] = Array.isArray(flags[key])
? changeFlags[key].concat(flags[key])
: flags[key];
flagChanged = true;
}
default:
if (!changeFlags[key]) {
changeFlags[key] = flags[key];
flagChanged = true;
}
}
if (flagChanged) {
debug(TRACE_CHANGE_FLAG, this, key, flags);
}
}
}
/* eslint-enable no-fallthrough, max-depth */
// Update composite flags
const propsOrDataChanged =
changeFlags.dataChanged ||
changeFlags.updateTriggersChanged ||
changeFlags.propsChanged ||
changeFlags.extensionsChanged;
changeFlags.propsOrDataChanged = propsOrDataChanged;
changeFlags.somethingChanged =
propsOrDataChanged || flags.viewportChanged || flags.stateChanged;
}