import cloneDeepWith_1 from "../../../../../../lodash@4.17.21/node_modules/lodash/cloneDeepWith.js";
import set_1 from "../../../../../../lodash@4.17.21/node_modules/lodash/set.js";
import { Schema } from "../../../../../../b-validate@1.4.2/node_modules/b-validate/es/index.js";
import React__default from "react";
import { isObject, isArray, isFunction } from "../_util/is.js";
var __assign = globalThis && globalThis.__assign || function() {
  __assign = Object.assign || function(t) {
    for (var s, i = 1, n = arguments.length; i < n; i++) {
      s = arguments[i];
      for (var p in s)
        if (Object.prototype.hasOwnProperty.call(s, p))
          t[p] = s[p];
    }
    return t;
  };
  return __assign.apply(this, arguments);
};
var __awaiter = globalThis && globalThis.__awaiter || function(thisArg, _arguments, P, generator) {
  function adopt(value) {
    return value instanceof P ? value : new P(function(resolve) {
      resolve(value);
    });
  }
  return new (P || (P = Promise))(function(resolve, reject) {
    function fulfilled(value) {
      try {
        step(generator.next(value));
      } catch (e) {
        reject(e);
      }
    }
    function rejected(value) {
      try {
        step(generator["throw"](value));
      } catch (e) {
        reject(e);
      }
    }
    function step(result) {
      result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);
    }
    step((generator = generator.apply(thisArg, _arguments || [])).next());
  });
};
var __generator = globalThis && globalThis.__generator || function(thisArg, body) {
  var _ = { label: 0, sent: function() {
    if (t[0] & 1)
      throw t[1];
    return t[1];
  }, trys: [], ops: [] }, f, y, t, g;
  return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() {
    return this;
  }), g;
  function verb(n) {
    return function(v) {
      return step([n, v]);
    };
  }
  function step(op) {
    if (f)
      throw new TypeError("Generator is already executing.");
    while (_)
      try {
        if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done)
          return t;
        if (y = 0, t)
          op = [op[0] & 2, t.value];
        switch (op[0]) {
          case 0:
          case 1:
            t = op;
            break;
          case 4:
            _.label++;
            return { value: op[1], done: false };
          case 5:
            _.label++;
            y = op[1];
            op = [0];
            continue;
          case 7:
            op = _.ops.pop();
            _.trys.pop();
            continue;
          default:
            if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {
              _ = 0;
              continue;
            }
            if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {
              _.label = op[1];
              break;
            }
            if (op[0] === 6 && _.label < t[1]) {
              _.label = t[1];
              t = op;
              break;
            }
            if (t && _.label < t[2]) {
              _.label = t[2];
              _.ops.push(op);
              break;
            }
            if (t[2])
              _.ops.pop();
            _.trys.pop();
            continue;
        }
        op = body.call(thisArg, _);
      } catch (e) {
        op = [6, e];
        y = 0;
      } finally {
        f = t = 0;
      }
    if (op[0] & 5)
      throw op[1];
    return { value: op[0] ? op[1] : void 0, done: true };
  }
};
var __read = globalThis && globalThis.__read || function(o, n) {
  var m = typeof Symbol === "function" && o[Symbol.iterator];
  if (!m)
    return o;
  var i = m.call(o), r, ar = [], e;
  try {
    while ((n === void 0 || n-- > 0) && !(r = i.next()).done)
      ar.push(r.value);
  } catch (error) {
    e = { error };
  } finally {
    try {
      if (r && !r.done && (m = i["return"]))
        m.call(i);
    } finally {
      if (e)
        throw e.error;
    }
  }
  return ar;
};
var __spreadArray = globalThis && globalThis.__spreadArray || function(to, from, pack) {
  if (pack || arguments.length === 2)
    for (var i = 0, l = from.length, ar; i < l; i++) {
      if (ar || !(i in from)) {
        if (!ar)
          ar = Array.prototype.slice.call(from, 0, i);
        ar[i] = from[i];
      }
    }
  return to.concat(ar || Array.prototype.slice.call(from));
};
function cloneDeep(value) {
  return cloneDeepWith_1(value, function(val) {
    if (!isObject(val) && !isArray(val)) {
      return val;
    }
  });
}
var formatValidateMsg = function(validateMessages, info) {
  return cloneDeepWith_1(validateMessages, function(val) {
    if (isFunction(val)) {
      return function(data) {
        return val(data, info);
      };
    }
  });
};
function set(target, field, value) {
  set_1(target, field, cloneDeep(value));
  return target;
}
function iterativelyGetKeys(_obj, _prefix) {
  if (_prefix === void 0) {
    _prefix = "";
  }
  var processed = /* @__PURE__ */ new Set();
  var getKeys = function(obj, prefix) {
    if (prefix === void 0) {
      prefix = "";
    }
    if (!obj) {
      return [];
    }
    if (processed.has(obj)) {
      return [];
    }
    processed.add(obj);
    return Object.keys(obj).reduce(function(res, el) {
      if ((isObject(obj[el]) || isArray(obj[el])) && Object.keys(obj[el]).length && !React__default.isValidElement(obj[el])) {
        return __spreadArray(__spreadArray([], __read(res), false), __read(getKeys(obj[el], prefix + el + ".")), false);
      }
      return __spreadArray(__spreadArray([], __read(res), false), [prefix + el], false);
    }, []);
  };
  return getKeys(_obj, _prefix);
}
function isSyntheticEvent(e) {
  var _a;
  return ((_a = e === null || e === void 0 ? void 0 : e.constructor) === null || _a === void 0 ? void 0 : _a.name) === "SyntheticEvent" || (e === null || e === void 0 ? void 0 : e.nativeEvent) instanceof Event;
}
function schemaValidate(field, value, _rules, validateMessages) {
  return __awaiter(this, void 0, void 0, function() {
    var rules, current;
    var _this = this;
    return __generator(this, function(_a) {
      rules = __spreadArray([], __read(_rules), false);
      current = 0;
      return [2, new Promise(function(resolve) {
        return __awaiter(_this, void 0, void 0, function() {
          var warning, validate;
          var _this2 = this;
          return __generator(this, function(_a2) {
            warning = [];
            validate = function(rule) {
              return __awaiter(_this2, void 0, void 0, function() {
                var next, _rule, schema;
                var _a3, _b;
                return __generator(this, function(_c) {
                  next = function() {
                    if (current < rules.length - 1) {
                      current++;
                      return validate(rules[current]);
                    }
                    return resolve({ error: null, warning });
                  };
                  if (!rule) {
                    return [2, next()];
                  }
                  _rule = __assign({}, rule);
                  if (!_rule.type && !_rule.validator) {
                    _rule.type = "string";
                  }
                  schema = new Schema((_a3 = {}, _a3[field] = [_rule], _a3), {
                    ignoreEmptyString: true,
                    validateMessages
                  });
                  schema.validate((_b = {}, _b[field] = value, _b), function(error) {
                    if (error) {
                      if (rule.validateLevel === "warning") {
                        warning.push(error[field].message);
                      } else {
                        return resolve({
                          error,
                          warning
                        });
                      }
                    }
                    return next();
                  });
                  return [2];
                });
              });
            };
            validate(rules[current]);
            return [2];
          });
        });
      })];
    });
  });
}
var ID_SUFFIX = "_input";
export {
  ID_SUFFIX,
  cloneDeep,
  formatValidateMsg,
  isSyntheticEvent,
  iterativelyGetKeys,
  schemaValidate,
  set
};
//# sourceMappingURL=utils.js.map
