{"version":3,"sources":["jsdelivr-header.js","/npm/saiyan-ui@1.2.4/src/button/Button.tsx","/npm/saiyan-ui@1.2.4/src/input/Input.tsx","/npm/saiyan-ui@1.2.4/src/popover/Popover.tsx","/npm/saiyan-ui@1.2.4/src/tooltips/Tooltips.vue","/npm/saiyan-ui@1.2.4/src/date/basic/utils.ts","/npm/saiyan-ui@1.2.4/src/date/basic/date-table.vue","/npm/saiyan-ui@1.2.4/src/date/Date.tsx","/npm/saiyan-ui@1.2.4/src/SFCButton.vue","/npm/saiyan-ui@1.2.4/src/JSXButton.tsx","/npm/saiyan-ui@1.2.4/src/entry.ts"],"names":[],"mappings":"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","file":"/npm/saiyan-ui@1.2.4/dist/saiyan-ui.esm.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.39.0.\n * Original file: /npm/saiyan-ui@1.2.4/dist/saiyan-ui.esm.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","import { defineComponent, PropType, defineEmits } from \"vue\";\n// import \"uno.css\";\n\nexport type ISize = \"small\" | \"medium\" | \"large\";\nexport type IColor =\n  | \"black\"\n  | \"gray\"\n  | \"red\"\n  | \"yellow\"\n  | \"green\"\n  | \"blue\"\n  | \"indigo\"\n  | \"purple\"\n  | \"pink\";\n\nexport const props = {\n  // 新增\n  size: {\n    type: String as PropType<ISize>,\n    default: \"medium\",\n  },\n\n  color: {\n    type: String as PropType<IColor>,\n    default: \"blue\",\n  },\n\n  round: {\n    type: Boolean,\n    default: false,\n  },\n\n  plain: {\n    type: Boolean,\n    default: false,\n  },\n\n  icon: {\n    type: String,\n    default: \"\",\n  },\n\n  disabled: {\n    type: Boolean,\n    default: false,\n  },\n} as const;\n\nexport default defineComponent({\n  name: \"SButton\",\n  props,\n  emits: ['click'],\n  setup(props, ctx) {\n    const { slots } = ctx\n    // console.log(`html`, document.querySelector(`#app`)?.innerHTML);\n\n\n    const size = {\n      small: {\n        x: \"2\",\n        y: \"1\",\n        text: \"xs\",\n      },\n      medium: {\n        x: \"3\",\n        y: \"1.5\",\n        text: \"sm\",\n      },\n      large: {\n        x: \"4\",\n        y: \"2\",\n        text: \"base\",\n      },\n    };\n\n    const handleClick = (e) => {\n      ctx.emit('click', e)\n    }\n\n    return () => (\n      <button\n        class={`\n          py-${size[props.size].y}\n          px-${size[props.size].x}\n          ${props.round ? \"rounded-full\" : \"rounded-lg\"}\n          border-solid\n          text-${size[props.size].text}\n          mx-1\n          ${!props.disabled\n            ? `\n            bg-${props.color}-${props.plain ? \"100\" : \"500\"}\n            hover:bg-${props.color}-400\n            border-${props.color}-${props.plain ? \"100\" : \"500\"}\n            text-${props.plain ? props.color + \"-500\" : \"white\"}\n            cursor-pointer\n            hover:text-white`\n            : `\n            bg-${props.color}-${props.plain ? \"50\" : \"200\"}\n            text-${props.plain ? props.color + \"-300\" : \"white\"}\n            border-${props.color}-${props.plain ? \"100\" : \"200\"}\n            cursor-not-allowed\n            `\n          }\n          `}\n          disabled={ props.disabled }\n          onClick={ handleClick }\n      >\n        {props.icon !== \"\" ? (\n          <i class={`i-ic-baseline-${props.icon} p-3`}></i>\n        ) : (\n          \"\"\n        )}\n        {slots.default ? slots.default() : \"\"}\n      </button>\n    );\n  },\n});","import { defineComponent, ref, computed, PropType } from \"vue\";\n// import \"uno.css\";\n\nexport type ISize = \"small\" | \"medium\" | \"large\";\nexport type TargetElement = HTMLInputElement | HTMLTextAreaElement;\n\nexport const props = {\n  modelValue: {\n    type: String,\n    default: \"\",\n  },\n  placeholder: {\n    type: String,\n    default: \"请输入内容\",\n  },\n  disabled: {\n    type: Boolean,\n    default: false,\n  },\n  clearable: {\n    type: Boolean,\n    default: false,\n  },\n  size: {\n    type: String as PropType<ISize>,\n    default: \"large\",\n  },\n} as const;\n\nexport default defineComponent({\n  name: \"SInput\",\n  props,\n  emits: [\n    \"clear\",\n    \"change\",\n    \"input\",\n    \"focus\",\n    \"focusout\",\n    \"mousein\",\n    \"mouseout\",\n    \"update:modelValue\",\n  ],\n  setup(props, ctx) {\n    const size = {\n      small: {\n        y: \"1\",\n        t: \"0.16rem\",\n      },\n      medium: {\n        y: \"2\",\n        t: \"0.33rem\",\n      },\n      large: {\n        y: \"3\",\n        t: \"0.5rem\",\n      },\n      mini: {\n        y: \"0\",\n        t: \"0rem\",\n      },\n    };\n\n    const focus = ref<Boolean>(false);\n    const mouse = ref<Boolean>(false);\n\n    const iconFocus = ref<Boolean>(false);\n\n    const showClear = computed(() => {\n      if (props.clearable) {\n        return !!(\n          (props.modelValue && focus.value) ||\n          (props.modelValue && mouse.value) ||\n          (props.modelValue && iconFocus.value)\n        );\n      } else {\n        return false;\n      }\n    });\n\n    const handleChange = (event: Event) => {\n      const { value } = event.target as TargetElement;\n      ctx.emit(\"update:modelValue\", value);\n      ctx.emit(\"change\", value);\n    };\n\n    const handleInput = (event: Event) => {\n      const { value } = event.target as TargetElement;\n      ctx.emit(\"update:modelValue\", value);\n      ctx.emit(\"input\", value);\n    };\n\n    const handleClear = (event: Event) => {\n      event.preventDefault();\n      ctx.emit(\"update:modelValue\", \"\");\n      ctx.emit(\"clear\");\n    };\n\n    const handleFocus = (event: Event) => {\n      focus.value = true;\n      ctx.emit(\"focus\", event);\n    };\n    const handleFocusout = (event: Event) => {\n      focus.value = false;\n      ctx.emit(\"focusout\", event);\n    };\n    const handleMouseenter = (event: Event) => {\n      mouse.value = true;\n      ctx.emit(\"mousein\", event);\n    };\n    const handleMouseout = (event: Event) => {\n      setTimeout(() => {\n        mouse.value = false;\n        ctx.emit(\"mouseout\", event);\n      }, 500);\n    };\n    const handleMouseenterIcon = (event: Event) => {\n      iconFocus.value = true;\n    };\n    const handleMouseoutIcon = (event: Event) => {\n      iconFocus.value = false;\n    };\n    // console.log(`html`, document.querySelector(`#app`)?.innerHTML);\n\n    return () => (\n      <div\n        style=\"width: max-content;position: relative\"\n        class={`\n        `}\n      >\n        <input\n          class={`\n            w-xs\n            py-${size[props.size].y}\n            px-3\n            border-1\n            border-gray\n            rounded-lg\n            focus-outline-unset\n            focus-border-blue\n            ${props.disabled ? \"bg-gray-100\" : \"\"}\n          `}\n          type=\"text\"\n          value={props.modelValue}\n          onChange={handleChange}\n          onInput={handleInput}\n          onFocusin={handleFocus}\n          onFocusout={handleFocusout}\n          onMouseenter={handleMouseenter}\n          onMouseout={handleMouseout}\n          placeholder={props.placeholder}\n          disabled={props.disabled}\n        ></input>\n        {showClear.value ? (\n          <span\n            class={`py-1 cursor-pointer`}\n            style={`position: absolute;right: 5px;top: 0;height: 100%;padding-top: ${\n              size[props.size].t\n            }`}\n            onMousedown={handleClear}\n            onMouseenter={handleMouseenterIcon}\n            onMouseout={handleMouseoutIcon}\n          >\n            <i class={`i-ic-baseline-clear px-3 color-gray-500`}></i>\n          </span>\n        ) : (\n          \"\"\n        )}\n      </div>\n    );\n  },\n});\n","import { defineComponent, onMounted, ref, onBeforeUnmount, watch } from \"vue\";\n\nimport \"./popper.css\";\n// import \"uno.css\";\n\nexport const props = {\n  modelValue: {\n    type: Boolean,\n    default: false,\n  },\n  trigger: {\n    type: String,\n    default: \"click\",\n    validator: (value) => [\"click\", \"hover\", \"manual\"].indexOf(value) > -1,\n  },\n  placement: {\n    type: String,\n    default: \"top\",\n  },\n  title: {\n    type: String,\n    default: \"标题\",\n  },\n  content: {\n    type: String,\n    default: \"这里是内容\",\n  },\n  closePopover: {\n    type: Boolean,\n    default: false,\n  },\n} as const;\n\nexport default defineComponent({\n  name: \"SPopover\",\n  emits: [],\n  props,\n  setup(props, ctx) {\n    const visible = ref(false);\n    const thisEl = ref(null);\n    const thisPopEl = ref(null);\n    const { slots } = ctx;\n\n    const position = ref(\"\");\n\n    onMounted(() => {\n      if (props.trigger === \"click\") {\n        document.addEventListener(\"click\", handleClick);\n      } else if (props.trigger === \"manual\") {\n        watch(\n          () => props.modelValue,\n          (val) => {\n            visible.value = val;\n          }\n        );\n      }\n    });\n    onBeforeUnmount(() => {\n      document.removeEventListener(\"click\", handleClick);\n    });\n    const handleClick = (event: Event) => {\n      if (props.closePopover) {\n        thisPopEl.value = null;\n        visible.value = false;\n      }\n      if (\n        (thisEl.value && thisEl.value.contains(event.target)) ||\n        (thisPopEl.value && thisPopEl.value.contains(event.target))\n      ) {\n        return;\n      }\n      thisPopEl.value = null;\n      visible.value = false;\n    };\n\n    const getPoint = (obj) => {\n      //获取某元素以浏览器左上角为原点的坐标\n      var t = obj.offsetTop; //获取该元素对应父容器的上边距\n      var l = obj.offsetLeft; //对应父容器的上边距\n      //判断是否有父容器，如果存在则累加其边距\n      while ((obj = obj.offsetParent)) {\n        //等效 obj = obj.offsetParent;while (obj != undefined)\n        t += obj.offsetTop; //叠加父容器的上边距\n        l += obj.offsetLeft; //叠加父容器的左边距\n      }\n      return {\n        top: t,\n        left: l,\n      };\n    };\n\n    const getSizeAttr = (elementSelector, attrName) => {\n      // 获取display:none元素的宽高\n      let oDiv = document.querySelector(elementSelector);\n      oDiv.style.cssText = `visibility:hidden`;\n      let attr = {\n        height: oDiv.offsetHeight,\n        width: oDiv.offsetWidth,\n        offsetLeft: oDiv.offsetLeft,\n        offsetTop: oDiv.offsetTop,\n      };\n      oDiv.style.cssText = `display:none`;\n      return attr[attrName];\n    };\n\n    const positionFix = (event: Event) => {\n      const width = (event.currentTarget as HTMLElement).offsetWidth;\n      const height = (event.currentTarget as HTMLElement).offsetHeight;\n      // console.log(width, height);\n      // const domrect = (\n      //   event.currentTarget as HTMLElement\n      // ).getBoundingClientRect(); // Element.getBoundingClientRect() 方法返回元素的大小及其相对于视口的位置\n      const domrect = getPoint(event.currentTarget as HTMLElement);\n      thisEl.value = event.currentTarget as HTMLElement;\n      console.log(thisEl.value);\n      console.log(event.currentTarget);\n      const bodyheight = getSizeAttr(\".s-popper__body\", \"height\");\n      const bodywidth = getSizeAttr(\".s-popper__body\", \"width\");\n      const { placement } = props;\n      console.log(bodyheight, bodywidth);\n      if (placement === \"top\") {\n        position.value = `top:${domrect.top - bodyheight}px;left:${\n          domrect.left\n        }px`;\n      } else if (placement === \"right\") {\n        let right = domrect.left + width; // 点击元素距离body左边的距离 - 弹出框的宽度\n        position.value = `left: ${right}px;top: ${domrect.top}px;`;\n      } else if (placement === \"bottom\") {\n        position.value = `top: ${domrect.top + height}px;left:${\n          domrect.left\n        }px`;\n      } else if (placement === \"left\") {\n        let left = domrect.left - bodywidth; // 点击元素距离body左边的距离 - 弹出框的宽度\n        if (left < 0) {\n          left = domrect.left + width;\n        }\n        position.value = `left: ${left}px;top: ${domrect.top}px;`;\n      }\n    };\n    const onPopperMouseEnter = (event: Event) => {\n      if (props.trigger !== \"hover\") return;\n      positionFix(event);\n      visible.value = true;\n    };\n    const onPopperMouseleave = () => {\n      if (props.trigger !== \"hover\") return;\n      visible.value = false;\n    };\n    const onPopperClick = (event: Event) => {\n      if (props.trigger === \"click\") {\n        visible.value = !visible.value;\n        positionFix(event);\n\n        thisPopEl.value = document.querySelector(\".s-popper__body_content\");\n        console.log(thisPopEl.value);\n        // event.stopPropagation();\n      } else if (props.trigger === \"manual\") {\n        positionFix(event);\n      }\n    };\n\n    // console.log(`html`, document.querySelector(`#app`)?.innerHTML);\n\n    return () => (\n      <div ref=\"poppver\">\n        <s-tooltips>\n          <div\n            v-show={visible.value}\n            class={`\n              s-popper__body`}\n            style={`${position.value}`}\n          >\n            <div>{props.title}</div>\n            <div>{slots.content ? slots.content() : props.content}</div>\n          </div>\n        </s-tooltips>\n        <div\n          style=\"width: max-content;position: relative\"\n          onMouseenter={onPopperMouseEnter}\n          onMouseleave={onPopperMouseleave}\n          onClick={onPopperClick}\n        >\n          {slots.reference ? slots.reference() : null}\n        </div>\n      </div>\n    );\n  },\n});\n","<template>\n  <div ref=\"tooltips\" class=\"s-tooltips\">\n    <transition name=\"fade\">\n      <slot>{{ content }}</slot>\n    </transition>\n    <!-- <slot></slot> -->\n  </div>\n</template>\n\n<script lang=\"ts\">\nimport { onMounted, onBeforeUnmount, ref } from \"vue\";\nexport default {\n  name: \"STooltips\",\n\n  props: {\n    // show: {\n    //   type: Boolean,\n    //   default: false,\n    // },\n    content: {\n      type: String,\n      default: \"zsdasdas\",\n    },\n  },\n\n  setup(props, ctx) {\n    console.log(props, ctx);\n    const tooltips = ref(null);\n    const show = ref(true);\n    onMounted(() => {\n      const body = document.body;\n      body.appendChild(tooltips.value);\n      // console.log(tooltips);\n    });\n    onBeforeUnmount(() => {\n      const body = document.body;\n      body.removeChild(tooltips.value);\n    });\n    return {\n      tooltips,\n      show,\n    };\n  },\n};\n</script>\n\n<style scoped>\n.fade-enter-active,\n.fade-leave-active {\n  transition: opacity 0.5s ease;\n}\n\n.fade-enter-from,\n.fade-leave-to {\n  opacity: 0;\n}\n</style>\n","export const clearTime = function (date) {\n  return new Date(date.getFullYear(), date.getMonth(), date.getDate());\n};\n\nexport const isDate = function (date) {\n  if (date === null || date === undefined) return false;\n  if (isNaN(new Date(date).getTime())) return false;\n  if (Array.isArray(date)) return false; // deal with `new Date([ new Date() ]) -> new Date()`\n  return true;\n};\nexport const prevDate = function (date, amount = 1) {\n  return new Date(date.getFullYear(), date.getMonth(), date.getDate() - amount);\n};\nexport const nextDate = function (date, amount = 1) {\n  return new Date(date.getFullYear(), date.getMonth(), date.getDate() + amount);\n};\nexport const getWeekNumber = function (src) {\n  if (!isDate(src)) return null;\n  const date = new Date(src.getTime());\n  date.setHours(0, 0, 0, 0);\n  // Thursday in current week decides the year.\n  date.setDate(date.getDate() + 3 - ((date.getDay() + 6) % 7));\n  // January 4 is always in week 1.\n  const week1 = new Date(date.getFullYear(), 0, 4);\n  // Adjust to Thursday in week 1 and count number of weeks from date to week 1.\n  // Rounding should be fine for Daylight Saving Time. Its shift should never be more than 12 hours.\n  return (\n    1 +\n    Math.round(\n      ((date.getTime() - week1.getTime()) / 86400000 -\n        3 +\n        ((week1.getDay() + 6) % 7)) /\n        7\n    )\n  );\n};\nexport const getStartDateOfMonth = function (year, month) {\n  const result = new Date(year, month, 1);\n  const day = result.getDay();\n\n  if (day === 0) {\n    return prevDate(result, 7);\n  } else {\n    return prevDate(result, day);\n  }\n};\nexport const getFirstDayOfMonth = function (date) {\n  const temp = new Date(date.getTime());\n  temp.setDate(1);\n  return temp.getDay();\n};\nexport const getDayCountOfMonth = function (year, month) {\n  if (month === 3 || month === 5 || month === 8 || month === 10) {\n    return 30;\n  }\n\n  if (month === 1) {\n    if ((year % 4 === 0 && year % 100 !== 0) || year % 400 === 0) {\n      return 29;\n    } else {\n      return 28;\n    }\n  }\n\n  return 31;\n};\nexport const modifyDate = function (date, y, m, d) {\n  return new Date(\n    y,\n    m,\n    d,\n    date.getHours(),\n    date.getMinutes(),\n    date.getSeconds(),\n    date.getMilliseconds()\n  );\n};\n\nexport const changeYearMonthAndClampDate = function (date, year, month) {\n  // clamp date to the number of days in `year`, `month`\n  // eg: (2010-1-31, 2010, 2) => 2010-2-28\n  const monthDate = Math.min(date.getDate(), getDayCountOfMonth(year, month));\n  return modifyDate(date, year, month, monthDate);\n};\nexport const prevMonth = function (date) {\n  const year = date.getFullYear();\n  const month = date.getMonth();\n  return month === 0\n    ? changeYearMonthAndClampDate(date, year - 1, 11)\n    : changeYearMonthAndClampDate(date, year, month - 1);\n};\nexport const nextMonth = function (date) {\n  const year = date.getFullYear();\n  const month = date.getMonth();\n  return month === 11\n    ? changeYearMonthAndClampDate(date, year + 1, 0)\n    : changeYearMonthAndClampDate(date, year, month + 1);\n};\n\nexport const prevYear = function (date, amount = 1) {\n  const year = date.getFullYear();\n  const month = date.getMonth();\n  return changeYearMonthAndClampDate(date, year - amount, month);\n};\n\nexport const nextYear = function (date, amount = 1) {\n  const year = date.getFullYear();\n  const month = date.getMonth();\n  return changeYearMonthAndClampDate(date, year + amount, month);\n};\n","<template>\n  <table\n    class=\"saiyan-date-table\"\n    cellspacing=\"0\"\n    cellpadding=\"0\"\n    @click=\"handleClick\"\n  >\n    <tbody>\n      <tr>\n        <th class=\"thcell\" v-for=\"(week, key) in WEEKS\" :key=\"key\">\n          {{ week }}\n        </th>\n      </tr>\n      <tr v-for=\"(row, key) in rows\" :key=\"key\">\n        <td :class=\"getCellClasses(cell)\" v-for=\"(cell, key) in row\" :key=\"key\">\n          {{ cell.text }}\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</template>\n\n<script lang=\"ts\">\nconst _WEEKS = [\"一\", \"二\", \"三\", \"四\", \"五\", \"六\", \"日\"];\nconst getDateTimestamp = function (time) {\n  if (typeof time === \"number\" || typeof time === \"string\") {\n    return _clearTime(new Date(time)).getTime();\n  } else if (time instanceof Date) {\n    return _clearTime(time).getTime();\n  } else {\n    return NaN;\n  }\n};\nimport { computed } from \"vue\";\nimport {\n  getStartDateOfMonth,\n  getFirstDayOfMonth,\n  getDayCountOfMonth,\n  getWeekNumber,\n  nextDate,\n  isDate,\n  clearTime as _clearTime,\n} from \"./utils\";\nexport default {\n  name: \"DateTable\",\n  props: {\n    firstDayOfWeek: {\n      type: Number,\n      default: 7,\n      validator: (val) => val >= 1 && val <= 7,\n    },\n    date: {\n      type: Date,\n      default: () => new Date(),\n    },\n    showWeekNumber: {\n      type: Boolean,\n      default: false,\n    },\n    disabledDate: {\n      type: Function,\n      default: () => false,\n    },\n    selectionMode: {\n      type: String,\n      default: \"day\",\n    },\n    defaultValue: {\n      type: Date,\n      validator(val) {\n        // either: null, valid Date object, Array of valid Date objects\n        return (\n          val === null ||\n          isDate(val) ||\n          (Array.isArray(val) && val.every(isDate))\n        );\n      },\n    },\n  },\n  setup(props, ctx) {\n    const tableRows = [[], [], [], [], [], []];\n\n    const offsetDay = computed(() => {\n      const week = props.firstDayOfWeek;\n\n      // 周日为界限，左右偏移的天数，3217654 例如周一就是 -1，目的是调整前两行日期的位置\n      return week > 3 ? 7 - week : -week;\n    });\n    const thisYear = computed(() => {\n      return props.date.getFullYear();\n    });\n    const thisMonth = computed(() => {\n      return props.date.getMonth();\n    });\n    const startDate = computed(() => {\n      return getStartDateOfMonth(thisYear.value, thisMonth.value);\n    });\n\n    const cellMatchesDate = (cell, date) => {\n      const value = new Date(date);\n      return (\n        thisYear.value === value.getFullYear() &&\n        thisMonth.value === value.getMonth() &&\n        Number(cell.text) === value.getDate()\n      );\n    };\n\n    const getDateOfCell = (row, column) => {\n      const offsetFromStart =\n        row * 7 + (column - (props.showWeekNumber ? 1 : 0)) - offsetDay.value;\n      return nextDate(startDate.value, offsetFromStart);\n    };\n    const handleClick = (event) => {\n      let target = event.target;\n      if (target.tagName === \"SPAN\") {\n        target = target.parentNode.parentNode;\n      }\n      if (target.tagName === \"DIV\") {\n        target = target.parentNode;\n      }\n\n      if (target.tagName !== \"TD\") return;\n\n      const row = target.parentNode.rowIndex - 1;\n      const column = props.selectionMode === \"week\" ? 1 : target.cellIndex;\n      const cell = rows.value[row][column];\n\n      if (cell.disabled || cell.type === \"week\") return;\n      const newDate = getDateOfCell(row, column);\n      console.log(\"newDate\", newDate);\n      if (props.selectionMode === \"day\") {\n        ctx.emit(\"pick\", newDate);\n      }\n      // console.log(e);\n    };\n    const WEEKS = computed(() => {\n      const firstDayOfWeek = props.firstDayOfWeek || 7;\n      console.log(\"firstDayOfWeek\", firstDayOfWeek);\n      console.log(\"props.firstDayOfWeek\", props.firstDayOfWeek);\n      const weeks = _WEEKS.slice(firstDayOfWeek - 1);\n      return weeks.concat(_WEEKS.slice(0, firstDayOfWeek - 1));\n    });\n\n    const rows = computed(() => {\n      const date = new Date(thisYear.value, thisMonth.value, 1);\n      let day = getFirstDayOfMonth(date);\n      const dateCountOfMonth = getDayCountOfMonth(\n        date.getFullYear(),\n        date.getMonth()\n      );\n      const dateCountOfLastMonth = getDayCountOfMonth(\n        date.getFullYear(),\n        date.getMonth() === 0 ? 11 : date.getMonth() - 1\n      );\n\n      day = day === 0 ? 7 : day;\n\n      const offset = offsetDay.value;\n      const rows = tableRows;\n      let count = 1;\n\n      const _startDate = startDate.value;\n      const _disabledDate = props.disabledDate;\n      const now = getDateTimestamp(new Date());\n      for (let i = 0; i < 6; i++) {\n        const row = rows[i];\n\n        if (props.showWeekNumber) {\n          if (!row[0]) {\n            row[0] = {\n              text: getWeekNumber(nextDate(_startDate, i * 7 + 1)),\n              type: \"week\",\n            };\n          }\n        }\n        for (let j = 0; j < 7; j++) {\n          let cell = row[props.showWeekNumber ? j + 1 : j];\n          if (!cell) {\n            cell = {\n              row: i,\n              column: j,\n              type: \"normal\",\n              inRange: false,\n              start: false,\n              end: false,\n            };\n          }\n          cell.type = \"normal\";\n\n          const index = i * 7 + j;\n          const time = nextDate(_startDate, index - offset).getTime();\n          const isToday = time === now;\n\n          if (isToday) {\n            cell.type = \"today\";\n          }\n\n          if (i >= 0 && i <= 1) {\n            const numberOfDaysFromPreviousMonth =\n              day + offset < 0 ? 7 + day + offset : day + offset;\n\n            if (j + i * 7 >= numberOfDaysFromPreviousMonth) {\n              cell.text = count++;\n            } else {\n              cell.text =\n                dateCountOfLastMonth -\n                numberOfDaysFromPreviousMonth +\n                j +\n                i * 7 +\n                1;\n              cell.type = \"prev-month\";\n            }\n          } else {\n            if (count <= dateCountOfMonth) {\n              cell.text = count++;\n            } else {\n              cell.text = count++ - dateCountOfMonth;\n              cell.type = \"next-month\";\n            }\n          }\n\n          let cellDate = new Date(time);\n          cell.disabled =\n            typeof _disabledDate === \"function\" && _disabledDate(cellDate);\n\n          row[props.showWeekNumber ? j + 1 : j] = cell;\n        }\n      }\n      return rows;\n    });\n\n    const getCellClasses = (cell) => {\n      const defaultValue = props.defaultValue\n        ? Array.isArray(props.defaultValue)\n          ? props.defaultValue\n          : [props.defaultValue]\n        : [];\n      let classes = [\"cell\"];\n      if (cell.type === \"normal\") {\n        classes.push(\"normal\");\n      } else if (cell.type === \"today\") {\n        classes.push(\"today\");\n      } else if (cell.type === \"prev-month\") {\n        classes.push(\"prev-month\");\n      } else if (cell.type === \"next-month\") {\n        classes.push(\"next-month\");\n      } else if (cell.type === \"week\") {\n        classes.push(\"week\");\n      }\n      if (\n        cell.type === \"normal\" &&\n        defaultValue.some((date) => cellMatchesDate(cell, date))\n      ) {\n        classes.push(\"default\");\n      }\n      return classes.join(\" \");\n    };\n    return {\n      handleClick,\n      WEEKS,\n      thisYear,\n      thisMonth,\n      startDate,\n      rows,\n      getCellClasses,\n    };\n  },\n};\n</script>\n\n<style>\n.next-month,\n.prev-month {\n  color: #c0c4cc;\n}\n.today {\n  color: #409eff;\n}\n.saiyan-date-table {\n  width: 100%;\n  border-collapse: collapse;\n  border-spacing: 0;\n  font-size: 12px;\n  background-color: #fff;\n  border-radius: 4px;\n  overflow: hidden;\n}\n.thcell {\n  padding: 5px;\n  color: #606266;\n  font-weight: 400;\n  border-bottom: 1px solid #ebeef5;\n}\n.cell {\n  width: 42px;\n  height: 30px;\n  padding: 4px 0;\n  box-sizing: border-box;\n  text-align: center;\n  cursor: pointer;\n  position: relative;\n}\n.default {\n  background-color: #409eff;\n  color: #fff;\n}\ntr:nth-child(2n) {\n  background-color: unset;\n}\ntr {\n  border-top: unset;\n}\nth,\ntd {\n  border: unset;\n}\n</style>\n","import { defineComponent, ref } from \"vue\";\nimport DateTable from \"./basic/date-table.vue\";\nimport \"./date.css\";\nimport {\n  prevMonth as _prevMonth,\n  nextMonth as _nextMonth,\n  prevYear as _prevYear,\n  nextYear as _nextYear,\n} from \"./basic/utils\";\nexport const props = {\n  modelValue: {\n    type: String,\n  },\n  defaultValue: {\n    type: String,\n  },\n} as const;\nexport default defineComponent({\n  name: \"SDatePicker\",\n  props,\n  emits: [\"update:modelValue\"],\n  setup(props, ctx) {\n    const date = ref(new Date());\n    const showDate = ref(\"\");\n    const _defaultValue = ref(new Date(props.defaultValue));\n    const selectionMode = ref(\"day\");\n    const closePopover = ref(false);\n    const hasTime = ref(false);\n    const prevMonth = () => {\n      date.value = _prevMonth(date.value);\n    };\n    const nextMonth = () => {\n      date.value = _nextMonth(date.value);\n    };\n    const prevYear = () => {\n      date.value = _prevYear(date.value);\n    };\n    const nextYear = () => {\n      date.value = _nextYear(date.value);\n    };\n    const handleDatePick = (value) => {\n      if (selectionMode.value === \"day\") {\n        showDate.value = `${value.getFullYear()}-${\n          value.getMonth() + 1\n        }-${value.getDate()}`;\n        _defaultValue.value = value;\n      }\n      closePopover.value = true;\n      hasTime.value = true;\n      ctx.emit(\"update:modelValue\", showDate.value);\n    };\n\n    const dateClear = () => {\n      _defaultValue.value = null;\n      hasTime.value = false;\n      ctx.emit(\"update:modelValue\", \"\");\n    };\n\n    const slots = {\n      content: () => (\n        <div class=\"s-popper__body_content\">\n          <div class=\"s-popper__body_content-title\">\n            <i\n              onClick={prevYear}\n              class=\"i-ic-outline-keyboard-double-arrow-left s-popper__body_content-title-icon\"\n            ></i>\n            <i\n              onClick={prevMonth}\n              class=\"i-ic-outline-keyboard-arrow-left s-popper__body_content-title-icon\"\n            ></i>\n            <span>\n              {date.value.getFullYear()}年{date.value.getMonth() + 1}月\n            </span>\n            <i\n              onClick={nextMonth}\n              class=\"i-ic-outline-keyboard-arrow-right s-popper__body_content-title-icon\"\n            ></i>\n            <i\n              onClick={nextYear}\n              class=\"i-ic-outline-keyboard-double-arrow-right s-popper__body_content-title-icon\"\n            ></i>\n          </div>\n          <DateTable\n            v-model:date={date.value}\n            onPick={handleDatePick}\n            default-value={\n              props.defaultValue || hasTime.value ? _defaultValue.value : null\n            }\n          ></DateTable>\n        </div>\n      ),\n      reference: () => (\n        <s-input\n          placeholder=\"请选择日期\"\n          v-model={showDate.value}\n          onFocus={() => {\n            closePopover.value = false;\n          }}\n          clearable\n          onClear={dateClear}\n        ></s-input>\n      ),\n    };\n    return () => (\n      <div>\n        <s-popover\n          placement=\"bottom\"\n          trigger=\"click\"\n          title=\"\"\n          v-model:closePopover={closePopover.value}\n          v-slots={slots}\n        ></s-popover>\n      </div>\n    );\n  },\n});\n","<template>\n  <button @click=\"clickBtn\">SFC Button</button>\n</template>\n\n<script lang=\"ts\">\nexport default {\n  name: \"SFCButton\",\n\n  setup() {\n    const clickBtn = () => {\n      console.log(\"SFC Button\");\n    };\n\n    return {\n      clickBtn,\n    };\n  },\n};\n</script>\n","import { defineComponent, h } from \"vue\";\n\nexport default defineComponent({\n\n  name: \"JSXButton\",\n  render() {\n    return <button>JSX Button</button>;\n  },\n\n});","import { App } from \"vue\";\nimport { Button } from \"./button\";\nimport { Input } from \"./input\";\nimport { Popover } from \"./popover\";\nimport { Tooltips } from \"./tooltips\";\nimport { Date } from \"./date\";\nimport SFCButton from \"./SFCButton.vue\";\nimport JSXButton from \"./JSXButton\";\nimport \"uno.css\";\n\n// 导出单独组件\nexport { Button, Input, Popover, Tooltips, SFCButton, JSXButton };\n\n// 编写一个插件，实现一个install方法\n\nexport default {\n  install(app: App): void {\n    app.component(Button.name, Button);\n    app.component(Input.name, Input);\n    app.component(Popover.name, Popover);\n    app.component(Tooltips.name, Tooltips);\n    app.component(Date.name, Date);\n    app.component(SFCButton.name, SFCButton);\n    app.component(JSXButton.name, JSXButton);\n  },\n};\n"]}