setChangeFlags()

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;
  }