applyActions(newComponent, actions, result, row, data) {
    data = data || this.rootValue;
    row = row || this.data;

    return actions.reduce((changed, action) => {
      switch (action.type) {
        case 'property': {
          FormioUtils.setActionProperty(newComponent, action, result, row, data, this);

          const property = action.property.value;
          if (!_.isEqual(_.get(this.component, property), _.get(newComponent, property))) {
            // Advanced Logic can modify the component's hidden property; because we track conditionally hidden state
            // separately from the component's hidden property, and technically this Advanced Logic conditionally hides
            // a component, we need to set a temporary variable to the new value
            if (property === 'hidden') {
              this._logicallyHidden = newComponent.hidden;
            }
            changed = true;
          }

          break;
        }
        case 'value': {
          const oldValue = this.getValue();
          const newValue = this.defineActionValue(
            action,
            {
              value: _.clone(oldValue),
              data,
              row,
              component: newComponent,
              result,
            }
          );

          if (!_.isEqual(oldValue, newValue) && !this.shouldConditionallyClear()) {
            this.setValue(newValue);

            if (this.viewOnly) {
              this.dataValue = newValue;
            }

            changed = true;
          }

          break;
        }
        case 'mergeComponentSchema': {
          const schema = this.evaluate(
            action.schemaDefinition,
            {
              value: _.clone(this.getValue()),
              data,
              row,
              component: newComponent,
              result,
            },
            'schema',
          );

          _.assign(newComponent, schema);

          if (!_.isEqual(this.component, newComponent)) {
            changed = true;
          }

          break;
        }
        case 'customAction': {
          const oldValue = this.getValue();
          const newValue = this.evaluate(action.customAction, {
            value: _.clone(oldValue),
            data,
            row,
			input: oldValue,
            component: newComponent,
            result,
          },
          'value');

          if (!_.isEqual(oldValue, newValue) && !this.shouldConditionallyClear()) {
            this.setValue(newValue);

            if (this.viewOnly) {
              this.dataValue = newValue;
            }

            changed = true;
          }

          break;
        }
      }

      return changed;
    }, false);
  }
Apply the actions of Logic for a component once the conditions have been met.
@param {object} newComponent - The new component to apply the actions to.
@param {Array<object>} actions - An array of actions
@param {any} result - The result of the conditional check in order to evaluate the actions.
@param {any} row - The contextual row data for this component.
@param {any} data - The global data object for the submission.
@returns {boolean} - TRUE if the component was altered.