Liferay.Loader.define('data-engine-taglib$value-equal@1.0.1/esm/value-equal', ['module', 'exports', 'require'], function (module, exports, require) {
  var define = undefined;
  var global = window;
  {
    function valueOf(obj) {
      return obj.valueOf ? obj.valueOf() : Object.prototype.valueOf.call(obj);
    }

    function valueEqual(a, b) {
      // Test for strict equality first.
      if (a === b) return true;

      // Otherwise, if either of them == null they are not equal.
      if (a == null || b == null) return false;

      if (Array.isArray(a)) {
        return Array.isArray(b) && a.length === b.length && a.every(function (item, index) {
          return valueEqual(item, b[index]);
        });
      }

      if (typeof a === 'object' || typeof b === 'object') {
        var aValue = valueOf(a);
        var bValue = valueOf(b);

        if (aValue !== a || bValue !== b) return valueEqual(aValue, bValue);

        return Object.keys(Object.assign({}, a, b)).every(function (key) {
          return valueEqual(a[key], b[key]);
        });
      }

      return false;
    }

    export default valueEqual;
  }
});
//# sourceMappingURL=value-equal.js.map