import { w as withInstall } from "../badge/index2.js";
import { defineComponent, useSlots, ref, computed, watch, openBlock, createElementBlock, toDisplayString, unref, createCommentVNode, createElementVNode, normalizeClass, renderSlot, Fragment, createTextVNode, renderList, withDirectives, vModelSelect, withKeys, vModelText } from "vue";
import { u as useI18n } from "../datePicker/index2.js";
var index = /* @__PURE__ */ (() => ".layui-laypage{display:inline-block;vertical-align:middle;margin:10px 0;font-size:0}.layui-laypage>a:first-child,.layui-laypage>a:first-child em{border-radius:2px 0 0 2px}.layui-laypage>a:last-child,.layui-laypage>a:last-child em{border-radius:0 2px 2px 0}.layui-laypage>:first-child{margin-left:0!important}.layui-laypage>:last-child{margin-right:0!important}.layui-laypage a,.layui-laypage button,.layui-laypage input,.layui-laypage select,.layui-laypage span{border:1px solid var(--global-neutral-color-3)}.layui-laypage a,.layui-laypage span{display:inline-block;vertical-align:middle;padding:0 15px;height:28px;line-height:28px;margin:0 -1px 5px 0;background-color:#fff;color:#333;font-size:12px}.layui-laypage a:hover{color:var(--global-primary-color)}.layui-laypage-a-red:hover{color:#ff5722!important}.layui-laypage-a-orange:hover{color:#ffb800!important}.layui-laypage-a-green:hover{color:#009688!important}.layui-laypage-a-cyan:hover{color:#2f4056!important}.layui-laypage-a-blue:hover{color:#01aaed!important}.layui-laypage-a-black:hover{color:#000!important}.layui-laypage-a-gray:hover{color:#c2c2c2!important}.layui-laypage em{font-style:normal}.layui-laypage .layui-laypage-spr{color:#999;font-weight:700}.layui-laypage a{text-decoration:none}.layui-laypage .layui-laypage-curr{position:relative}.layui-laypage .layui-laypage-curr em{position:relative;color:#fff}.layui-laypage .layui-laypage-curr .layui-laypage-em{position:absolute;left:-1px;top:-1px;padding:1px;width:100%;height:100%;background-color:var(--global-primary-color)}.layui-laypage-em{border-radius:2px}.layui-laypage-next em,.layui-laypage-prev em{font-family:Sim sun;font-size:16px}.layui-laypage .layui-laypage-count,.layui-laypage .layui-laypage-limits,.layui-laypage .layui-laypage-refresh,.layui-laypage .layui-laypage-skip{margin-left:10px;margin-right:10px;padding:0;border:none}.layui-laypage .layui-laypage-limits,.layui-laypage .layui-laypage-refresh{vertical-align:top}.layui-laypage .layui-laypage-refresh i{font-size:18px;cursor:pointer}.layui-laypage select{height:22px;padding:3px;margin-top:4px;border-radius:2px;cursor:pointer}.layui-laypage .layui-laypage-skip{height:30px;line-height:30px;color:#999}.layui-laypage button,.layui-laypage input{height:30px;line-height:30px;border-radius:2px;vertical-align:top;background-color:#fff;box-sizing:border-box}.layui-laypage input{display:inline-block;width:40px;margin:0 10px;padding:0 3px;text-align:center}.layui-laypage input::-webkit-outer-spin-button,.layui-laypage input::-webkit-inner-spin-button{-webkit-appearance:none}.layui-laypage input:focus,.layui-laypage select:focus{border-color:var(--global-primary-color)!important}.layui-laypage button{margin-left:10px;padding:0 10px;cursor:pointer}\n")();
const _hoisted_1 = { class: "layui-laypage layui-laypage-default" };
const _hoisted_2 = {
  key: 0,
  class: "layui-laypage-count"
};
const _hoisted_3 = {
  key: 0,
  class: "layui-laypage-curr"
};
const _hoisted_4 = ["onClick"];
const _hoisted_5 = {
  key: 2,
  class: "layui-laypage-limits"
};
const _hoisted_6 = ["value"];
const _hoisted_7 = /* @__PURE__ */ createElementVNode("i", { class: "layui-icon layui-icon-refresh" }, null, -1);
const _hoisted_8 = [
  _hoisted_7
];
const _hoisted_9 = {
  key: 4,
  class: "layui-laypage-skip"
};
const _hoisted_10 = ["disabled"];
const _hoisted_11 = { key: 5 };
const __default__ = {
  name: "LayPage"
};
const _sfc_main = defineComponent({
  ...__default__,
  props: {
    total: null,
    limit: { default: 10 },
    theme: { default: "green" },
    showPage: { type: Boolean, default: false },
    showSkip: { type: Boolean, default: false },
    showCount: { type: Boolean, default: false },
    showLimit: { type: Boolean, default: true },
    showInput: { type: Boolean, default: false },
    showRefresh: { type: Boolean, default: false },
    pages: { default: 10 },
    limits: { default: () => [10, 20, 30, 40, 50] },
    modelValue: { default: 1 },
    count: null
  },
  emits: ["update:modelValue", "update:limit", "change"],
  setup(__props, { emit }) {
    const props = __props;
    const { t } = useI18n();
    const slots = useSlots();
    const maxPage = ref(0);
    const limits = ref(props.limits);
    const pages = computed(() => Math.floor(props.pages / 2));
    const currentPage = ref(props.modelValue);
    const currentPageShow = ref(currentPage.value);
    const inlimit = ref(props.limit);
    watch(() => props.limit, () => {
      inlimit.value = props.limit;
    });
    const totalPage = computed(() => {
      maxPage.value = Math.ceil(props.total / inlimit.value);
      let r = [];
      let start = maxPage.value <= props.pages ? 1 : currentPage.value > pages.value ? maxPage.value - currentPage.value + 1 < pages.value ? currentPage.value - (pages.value + (pages.value - (maxPage.value - currentPage.value + 1))) : currentPage.value - pages.value : 1;
      for (let i = start; ; i++) {
        if (r.length >= props.pages || i > maxPage.value) {
          break;
        }
        r.push(i);
      }
      return r;
    });
    const prev = () => {
      if (currentPage.value === 1) {
        return;
      }
      currentPage.value--;
      emit("change", { current: currentPage.value, limit: inlimit.value });
    };
    const next = () => {
      if (currentPage.value === maxPage.value || maxPage.value === 0) {
        return;
      }
      currentPage.value++;
      emit("change", { current: currentPage.value, limit: inlimit.value });
    };
    const jump = (page) => {
      currentPage.value = page;
      emit("change", { current: currentPage.value, limit: inlimit.value });
    };
    const jumpPage = () => {
      currentPage.value = currentPageShow.value;
      emit("change", { current: currentPage.value, limit: inlimit.value });
    };
    const changelimit = () => {
      const maxPage2 = Math.ceil(props.total / inlimit.value);
      if (currentPage.value > maxPage2) {
        currentPage.value = maxPage2;
      }
      emit("change", { current: currentPage.value, limit: inlimit.value });
    };
    const refresh = () => {
      emit("change", { current: currentPage.value, limit: inlimit.value });
    };
    watch(inlimit, () => {
      emit("update:limit", inlimit.value);
    });
    watch(currentPage, () => {
      const min = totalPage.value[0];
      const max = totalPage.value[totalPage.value.length - 1];
      if (currentPage.value > max)
        currentPage.value = max;
      if (currentPage.value < min)
        currentPage.value = min;
      currentPageShow.value = currentPage.value;
      emit("update:modelValue", currentPage.value);
    });
    watch(() => props.modelValue, () => {
      currentPage.value = props.modelValue;
      currentPageShow.value = currentPage.value;
    });
    return (_ctx, _cache) => {
      return openBlock(), createElementBlock("div", _hoisted_1, [
        __props.showCount ? (openBlock(), createElementBlock("span", _hoisted_2, toDisplayString(unref(t)("page.total")) + " " + toDisplayString(__props.total) + " " + toDisplayString(unref(t)("page.item")) + " " + toDisplayString(maxPage.value) + " " + toDisplayString(unref(t)("page.page")), 1)) : createCommentVNode("", true),
        createElementVNode("a", {
          href: "javascript:;",
          class: normalizeClass(["layui-laypage-prev", [
            currentPage.value === 1 ? "layui-disabled" : "",
            __props.theme && currentPage.value !== 1 ? "layui-laypage-a-" + __props.theme : ""
          ]]),
          onClick: _cache[0] || (_cache[0] = ($event) => prev())
        }, [
          unref(slots).prev ? renderSlot(_ctx.$slots, "prev", { key: 0 }) : (openBlock(), createElementBlock(Fragment, { key: 1 }, [
            createTextVNode(toDisplayString(unref(t)("page.previous")), 1)
          ], 64))
        ], 2),
        __props.showPage ? (openBlock(true), createElementBlock(Fragment, { key: 1 }, renderList(unref(totalPage), (index2) => {
          return openBlock(), createElementBlock(Fragment, { key: index2 }, [
            index2 === currentPage.value ? (openBlock(), createElementBlock("span", _hoisted_3, [
              createElementVNode("em", {
                class: normalizeClass(["layui-laypage-em", [__props.theme ? "layui-bg-" + __props.theme : ""]])
              }, null, 2),
              createElementVNode("em", null, toDisplayString(index2), 1)
            ])) : (openBlock(), createElementBlock("a", {
              key: 1,
              href: "javascript:;",
              onClick: ($event) => jump(index2),
              class: normalizeClass([__props.theme ? "layui-laypage-a-" + __props.theme : ""])
            }, toDisplayString(index2), 11, _hoisted_4))
          ], 64);
        }), 128)) : createCommentVNode("", true),
        createElementVNode("a", {
          href: "javascript:;",
          class: normalizeClass(["layui-laypage-next", [
            currentPage.value === maxPage.value || maxPage.value === 0 ? "layui-disabled" : "",
            __props.theme && currentPage.value !== maxPage.value && maxPage.value !== 0 ? "layui-laypage-a-" + __props.theme : ""
          ]]),
          onClick: _cache[1] || (_cache[1] = ($event) => next())
        }, [
          unref(slots).next ? renderSlot(_ctx.$slots, "next", { key: 0 }) : (openBlock(), createElementBlock(Fragment, { key: 1 }, [
            createTextVNode(toDisplayString(unref(t)("page.next")), 1)
          ], 64))
        ], 2),
        __props.showLimit ? (openBlock(), createElementBlock("span", _hoisted_5, [
          withDirectives(createElementVNode("select", {
            "onUpdate:modelValue": _cache[2] || (_cache[2] = ($event) => inlimit.value = $event),
            onChange: changelimit
          }, [
            (openBlock(true), createElementBlock(Fragment, null, renderList(limits.value, (val) => {
              return openBlock(), createElementBlock("option", {
                key: val,
                value: val
              }, toDisplayString(val) + " " + toDisplayString(unref(t)("page.item")) + "/" + toDisplayString(unref(t)("page.page")), 9, _hoisted_6);
            }), 128))
          ], 544), [
            [vModelSelect, inlimit.value]
          ])
        ])) : createCommentVNode("", true),
        __props.showRefresh ? (openBlock(), createElementBlock("a", {
          key: 3,
          href: "javascript:;",
          onClick: refresh,
          class: "layui-laypage-refresh"
        }, _hoisted_8)) : createCommentVNode("", true),
        props.showSkip ? (openBlock(), createElementBlock("span", _hoisted_9, [
          createTextVNode(toDisplayString(unref(t)("page.goTo")) + " ", 1),
          withDirectives(createElementVNode("input", {
            "onUpdate:modelValue": _cache[3] || (_cache[3] = ($event) => currentPageShow.value = $event),
            onKeypress: _cache[4] || (_cache[4] = withKeys(($event) => jumpPage(), ["enter"])),
            type: "number",
            class: "layui-input layui-input-number"
          }, null, 544), [
            [vModelText, currentPageShow.value]
          ]),
          createTextVNode(toDisplayString(unref(t)("page.page")) + " ", 1),
          createElementVNode("button", {
            type: "button",
            class: "layui-laypage-btn",
            onClick: _cache[5] || (_cache[5] = ($event) => jumpPage()),
            disabled: currentPageShow.value > maxPage.value || currentPageShow.value == currentPage.value
          }, toDisplayString(unref(t)("page.confirm")), 9, _hoisted_10)
        ])) : createCommentVNode("", true),
        __props.count ? (openBlock(), createElementBlock("span", _hoisted_11, "\u5171" + toDisplayString(__props.count) + "\u6761", 1)) : createCommentVNode("", true)
      ]);
    };
  }
});
const component = withInstall(_sfc_main);
export { _sfc_main as _, component as c };
