import { w as withInstall } from "../badge/index2.js";
import { openBlock, createElementBlock, createElementVNode, defineComponent, useSlots, ref, computed, watch, normalizeClass, unref, renderSlot, createCommentVNode, createBlock, createVNode, withModifiers } from "vue";
import { _ as _sfc_main$2E } from "../checkbox/index2.js";
import { _ as _export_sfc } from "../dropdownMenu/index2.js";
var index = /* @__PURE__ */ (() => ":root{--input-border-radius: var(--global-border-radius);--input-border-color: var(--global-neutral-color-3)}.layui-input{width:100%;height:38px;line-height:38px;border-width:1px;border-style:solid;border-color:var(--input-border-color);border-radius:var(--input-border-radius);display:inline-flex}.layui-input input{height:38px;line-height:38px;background-color:#fff;color:#000000d9;padding-left:10px;display:inline-block;border:none;height:100%;width:100%}.layui-input-append{background-color:#fafafa;border-left:1px solid var(--input-border-color);display:flex;padding:0 15px;flex:none;align-items:center}.layui-input-prepend{background-color:#fafafa;border-right:1px solid var(--input-border-color);display:flex;padding:0 15px;flex:none;align-items:center}.layui-input-wrapper{width:100%;display:inline-flex;border:none}.layui-input:hover,.layui-input:focus-within{border-color:#d2d2d2}.layui-input-clear,.layui-input-prefix,.layui-input-suffix,.layui-input-password{background-color:#fff}.layui-input-clear,.layui-input-password,.layui-input-prefix,.layui-input-suffix{display:flex;flex:none;align-items:center;padding:0 10px}.layui-input-has-prefix input{padding:0}.layui-input-clear,.layui-input-password{color:#00000073}.layui-input-clear:hover{opacity:.6}.layui-input input::-webkit-input-placeholder{line-height:1.3}.layui-input input::-ms-reveal{display:none}.layui-input-disabled{border-color:var(--input-border-color)!important}.layui-input-disabled{opacity:.6}.layui-input-disabled,.layui-input-disabled *{cursor:not-allowed!important}.layui-input[size=lg]{height:44px}.layui-input[size=lg] .layui-input{height:44px;line-height:44px}.layui-input[size=md]{height:38px}.layui-input[size=md] .layui-input{height:38px;line-height:38px}.layui-input[size=sm]{height:32px}.layui-input[size=sm] .layui-input{height:32px;line-height:32px}.layui-input[size=xs]{height:26px}.layui-input[size=xs] .layui-input{height:26px;line-height:26px}\n")();
const _sfc_main$2 = {};
const _hoisted_1$2 = {
  focusable: "false",
  class: "",
  "data-icon": "eye-invisible",
  width: "1em",
  height: "1em",
  fill: "currentColor",
  "aria-hidden": "true",
  viewBox: "64 64 896 896"
};
const _hoisted_2$2 = /* @__PURE__ */ createElementVNode("path", { d: "M942.2 486.2Q889.47 375.11 816.7 305l-50.88 50.88C807.31 395.53 843.45 447.4 874.7 512 791.5 684.2 673.4 766 512 766q-72.67 0-133.87-22.38L323 798.75Q408 838 512 838q288.3 0 430.2-300.3a60.29 60.29 0 000-51.5zm-63.57-320.64L836 122.88a8 8 0 00-11.32 0L715.31 232.2Q624.86 186 512 186q-288.3 0-430.2 300.3a60.3 60.3 0 000 51.5q56.69 119.4 136.5 191.41L112.48 835a8 8 0 000 11.31L155.17 889a8 8 0 0011.31 0l712.15-712.12a8 8 0 000-11.32zM149.3 512C232.6 339.8 350.7 258 512 258c54.54 0 104.13 9.36 149.12 28.39l-70.3 70.3a176 176 0 00-238.13 238.13l-83.42 83.42C223.1 637.49 183.3 582.28 149.3 512zm246.7 0a112.11 112.11 0 01146.2-106.69L401.31 546.2A112 112 0 01396 512z" }, null, -1);
const _hoisted_3$2 = /* @__PURE__ */ createElementVNode("path", { d: "M508 624c-3.46 0-6.87-.16-10.25-.47l-52.82 52.82a176.09 176.09 0 00227.42-227.42l-52.82 52.82c.31 3.38.47 6.79.47 10.25a111.94 111.94 0 01-112 112z" }, null, -1);
const _hoisted_4$1 = [
  _hoisted_2$2,
  _hoisted_3$2
];
function _sfc_render$1(_ctx, _cache) {
  return openBlock(), createElementBlock("svg", _hoisted_1$2, _hoisted_4$1);
}
var PasswordIcon = /* @__PURE__ */ _export_sfc(_sfc_main$2, [["render", _sfc_render$1]]);
const _sfc_main$1 = {};
const _hoisted_1$1 = {
  focusable: "false",
  class: "",
  "data-icon": "eye",
  width: "1em",
  height: "1em",
  fill: "currentColor",
  "aria-hidden": "true",
  viewBox: "64 64 896 896"
};
const _hoisted_2$1 = /* @__PURE__ */ createElementVNode("path", { d: "M942.2 486.2C847.4 286.5 704.1 186 512 186c-192.2 0-335.4 100.5-430.2 300.3a60.3 60.3 0 000 51.5C176.6 737.5 319.9 838 512 838c192.2 0 335.4-100.5 430.2-300.3 7.7-16.2 7.7-35 0-51.5zM512 766c-161.3 0-279.4-81.8-362.7-254C232.6 339.8 350.7 258 512 258c161.3 0 279.4 81.8 362.7 254C791.5 684.2 673.4 766 512 766zm-4-430c-97.2 0-176 78.8-176 176s78.8 176 176 176 176-78.8 176-176-78.8-176-176-176zm0 288c-61.9 0-112-50.1-112-112s50.1-112 112-112 112 50.1 112 112-50.1 112-112 112z" }, null, -1);
const _hoisted_3$1 = [
  _hoisted_2$1
];
function _sfc_render(_ctx, _cache) {
  return openBlock(), createElementBlock("svg", _hoisted_1$1, _hoisted_3$1);
}
var UnPasswordIcon = /* @__PURE__ */ _export_sfc(_sfc_main$1, [["render", _sfc_render]]);
const _hoisted_1 = ["size"];
const _hoisted_2 = {
  key: 0,
  class: "layui-input-prepend"
};
const _hoisted_3 = { class: "layui-input-wrapper" };
const _hoisted_4 = {
  key: 0,
  class: "layui-input-prefix"
};
const _hoisted_5 = ["type", "name", "disabled", "placeholder", "autofocus", "autocomplete", "maxlength", "max", "min", "readonly", "value"];
const _hoisted_6 = {
  key: 2,
  class: "layui-input-clear"
};
const _hoisted_7 = {
  key: 3,
  class: "layui-input-suffix"
};
const _hoisted_8 = {
  key: 1,
  class: "layui-input-append"
};
const __default__ = {
  name: "LayInput"
};
const _sfc_main = defineComponent({
  ...__default__,
  props: {
    name: null,
    type: null,
    prefixIcon: null,
    suffixIcon: null,
    modelValue: { default: "" },
    allowClear: { type: Boolean, default: false },
    autocomplete: null,
    placeholder: null,
    autofocus: { type: Boolean, default: false },
    disabled: { type: Boolean, default: false },
    readonly: { type: Boolean, default: false },
    password: { type: Boolean, default: false },
    size: { default: "md" },
    maxlength: null,
    max: null,
    min: null,
    qfw: { type: Boolean, default: false }
  },
  emits: ["blur", "input", "update:modelValue", "change", "focus", "clear"],
  setup(__props, { emit }) {
    const props = __props;
    const slots = useSlots();
    const type = ref(props.type);
    const currentValue = ref(String(props.modelValue == null ? "" : props.modelValue));
    const hasContent = computed(() => {
      var _a;
      return ((_a = props.modelValue) == null ? void 0 : _a.length) > 0;
    });
    const isPassword = computed(() => type.value == "password");
    const composing = ref(false);
    const formatMoney = function(s) {
      var noNegative = true;
      s = parseFloat((s + "").replace(/[^\d\.-]/g, "")) + "";
      if (parseFloat(s) < 0) {
        s = Math.abs(s) + "";
        noNegative = false;
      }
      var l = s.split(".")[0].split("").reverse(), r = s.split(".")[1];
      var t = "";
      for (let i = 0; i < l.length; i++) {
        if (i % 3 == 2 && i != l.length - 1) {
          t += l[i] + ",";
        } else {
          t += l[i] + "";
        }
      }
      let z = (noNegative ? "" : "-") + t.split("").reverse().join("");
      z = isNaN(z) ? 0 : z;
      if (r) {
        return z + "." + r;
      } else {
        return z;
      }
    };
    watch(() => props.type, () => {
      type.value = props.type;
    });
    const input = ref();
    watch(() => props.modelValue, () => {
      console.log(input);
      if (!(input.value == document.activeElement) && props.qfw) {
        currentValue.value = formatMoney(props.modelValue.toString());
        return;
      }
      currentValue.value = String(props.modelValue == null ? "" : props.modelValue);
    });
    const onInput = function(event) {
      const inputElement = event.target;
      let value = inputElement.value;
      emit("input", value);
      if (composing.value)
        return;
      if (props.qfw) {
        value = value.replace(/,/g, "");
      }
      emit("update:modelValue", value);
    };
    const onClear = () => {
      emit("update:modelValue", "");
      emit("clear");
    };
    const onFocus = (event) => {
      currentValue.value = new String(props.modelValue).replace(/,/g, "");
      emit("focus", event);
    };
    const onChange = (event) => {
      const inputElement = event.target;
      let value = inputElement.value;
      if (props.qfw) {
        value = value.replace(/,/g, "");
      }
      emit("change", value);
    };
    const onBlur = (event) => {
      if (props.type === "number") {
        onNumberBlur(event);
      }
      if (props.qfw) {
        try {
          let reg = /\d{1,3}(?=(\d{3})+$)/g;
          console.log("\u6DFB\u52A0\uFF0C", formatMoney(props.modelValue.toString()));
          currentValue.value = formatMoney(props.modelValue.toString());
        } catch {
          currentValue.value = "\u8F93\u5165\u9519\u8BEF";
        }
      }
      emit("blur", event);
    };
    const onNumberBlur = (event) => {
      let value = event.target.value;
      if (value === "") {
        value = props.min ? String(props.min) : "0";
      } else {
        if (props.max && props.max < Number(value))
          value = props.max.toString();
        if (props.min && props.min > Number(value))
          value = props.min.toString();
      }
      if (props.qfw) {
        value = value.replace(/,/g, "");
      }
      emit("update:modelValue", value);
    };
    const onCompositionstart = () => {
      composing.value = true;
    };
    const onCompositionend = (event) => {
      composing.value = false;
      onInput(event);
    };
    const classes = computed(() => {
      return {
        "layui-input-disabled": props.disabled,
        "layui-input-has-prefix": slots.prefix || props.prefixIcon
      };
    });
    const showPassword = () => {
      if (isPassword.value) {
        type.value = "text";
      } else {
        type.value = "password";
      }
    };
    return (_ctx, _cache) => {
      return openBlock(), createElementBlock("div", {
        class: normalizeClass(["layui-input", unref(classes)]),
        size: __props.size
      }, [
        unref(slots).prepend ? (openBlock(), createElementBlock("div", _hoisted_2, [
          renderSlot(_ctx.$slots, "prepend")
        ])) : createCommentVNode("", true),
        createElementVNode("div", _hoisted_3, [
          unref(slots).prefix || props.prefixIcon ? (openBlock(), createElementBlock("span", _hoisted_4, [
            unref(slots).prefix ? renderSlot(_ctx.$slots, "prefix", { key: 0 }) : (openBlock(), createBlock(unref(_sfc_main$2E), {
              key: 1,
              type: props.prefixIcon,
              class: "layui-input-prefix-icon"
            }, null, 8, ["type"]))
          ])) : createCommentVNode("", true),
          createElementVNode("input", {
            type: type.value,
            name: __props.name,
            disabled: __props.disabled,
            placeholder: __props.placeholder,
            autofocus: __props.autofocus,
            autocomplete: __props.autocomplete,
            maxlength: __props.maxlength,
            max: __props.max,
            min: __props.min,
            readonly: __props.readonly,
            value: currentValue.value,
            onInput,
            onChange,
            onFocus,
            onBlur,
            onCompositionstart,
            onCompositionend,
            ref_key: "input",
            ref: input
          }, null, 40, _hoisted_5),
          __props.password && unref(hasContent) ? (openBlock(), createElementBlock("span", {
            key: 1,
            class: "layui-input-password",
            onClick: showPassword
          }, [
            unref(isPassword) ? (openBlock(), createBlock(PasswordIcon, { key: 0 })) : (openBlock(), createBlock(UnPasswordIcon, { key: 1 }))
          ])) : createCommentVNode("", true),
          __props.allowClear && unref(hasContent) && !__props.disabled ? (openBlock(), createElementBlock("span", _hoisted_6, [
            createVNode(unref(_sfc_main$2E), {
              type: "layui-icon-close-fill",
              onClick: withModifiers(onClear, ["stop"])
            }, null, 8, ["onClick"])
          ])) : createCommentVNode("", true),
          unref(slots).suffix || props.suffixIcon ? (openBlock(), createElementBlock("span", _hoisted_7, [
            unref(slots).suffix ? renderSlot(_ctx.$slots, "suffix", { key: 0 }) : (openBlock(), createBlock(unref(_sfc_main$2E), {
              key: 1,
              type: props.suffixIcon,
              class: "layui-input-suffix-icon"
            }, null, 8, ["type"]))
          ])) : createCommentVNode("", true)
        ]),
        unref(slots).append ? (openBlock(), createElementBlock("div", _hoisted_8, [
          renderSlot(_ctx.$slots, "append")
        ])) : createCommentVNode("", true)
      ], 10, _hoisted_1);
    };
  }
});
const component = withInstall(_sfc_main);
export { _sfc_main as _, component as c };
