/**
 * @module ApDeepPureMixin
 */
'use strict'

const deepEqual = require('deep-equal')

/** @lends ApPureMixin */
const ApPureMixin = {

  // --------------------
  // Custom
  // --------------------

  $apDeepPureMixin: true,

  // --------------------
  // Specs
  // --------------------

  shouldComponentUpdate (nextProps, nextState) {
    const s = this
    let { props, state } = s
    return !deepEqual(props, nextProps) || !deepEqual(state, nextState)
  }
}

export default ApPureMixin
