<commit_before>import { createElement, Component } from 'react'
import { setDisplayName, wrapDisplayName } from 'recompose'

const withCallbackOnChangeWhile = (propName, shouldCall, callback) => (Target) => {
  class WithCallbackOnChangeWhile extends Component {
    componentWillReceiveProps (nextProps) {
      if (
        this.props[propName] !== nextProps[propName] &&
        shouldCall(nextProps) === true
      ) {
        callback(nextProps)
      }
    }

    render () {
      return createElement(Target, this.props)
    }
  }

  if (process.env.NODE_ENV !== 'production') {<commit_msg>🛠️ with-callback-on-change-while: refactor using `getDerivedStateFromProps`<commit_after>import { createElement, Component } from 'react'
import { setDisplayName, wrapDisplayName } from 'recompose'

const withCallbackOnChangeWhile = (propName, shouldCall, callback) => (Target) => {
  class WithCallbackOnChangeWhile extends Component {
    static getDerivedStateFromProps (nextProps, prevState) {
      if (prevState[propName] !== nextProps[propName] && shouldCall(nextProps) === true) {
        callback(nextProps)
      }

      return null
    }

    constructor (props, context) {
      super(props, context)

      this.state = {
        [propName]: props[propName]
      }
    }

    render () {
      return createElement(Target, this.props)
    }
  }

  if (process.env.NODE_ENV !== 'production') {
{'fraction_non_alphanumeric': 0.11814946619217082, 'fraction_numerical': 0.0, 'mean_word_length': 3.4634920634920636, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 7, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '5758552', 'n_tokens_mistral': 416, 'n_tokens_neox': 406, 'n_words': 86}