{"version":3,"file":"utils.mjs","sources":["../../../../../../../packages/components/date-select/src/utils.ts"],"sourcesContent":["import { clamp, extend, makeArrayProp, padZero } from '@xzx-design/utils'\nimport { selectSharedProps } from '../../select'\nimport type { PropType } from 'vue'\nimport type { SelectOption } from '../../select'\n\ntype Filter = (\n  columnType: string,\n  options: SelectOption[],\n  values: string[]\n) => SelectOption[]\ntype Formatter = (type: string, option: SelectOption) => SelectOption\n\nexport const sharedProps = extend({}, selectSharedProps, {\n  modelValue: makeArrayProp<string>(),\n  filter: Function as PropType<Filter>,\n  formatter: {\n    type: Function as PropType<Formatter>,\n    default: (type: string, option: SelectOption) => option,\n  },\n})\n\nexport const selectInheritKeys = Object.keys(selectSharedProps) as Array<\n  keyof typeof selectSharedProps\n>\n\nexport function times<T>(n: number, iteratee: (index: number) => T) {\n  if (n < 0) {\n    return []\n  }\n\n  const result: T[] = Array.from({ length: n })\n\n  let index = -1\n  while (++index < n) {\n    result[index] = iteratee(index)\n  }\n\n  return result\n}\n\nexport const getMonthEndDay = (year: number, month: number): number =>\n  32 - new Date(year, month - 1, 32).getDate()\n\nexport const genOptions = <T extends string>(\n  min: number,\n  max: number,\n  type: T,\n  formatter: Formatter,\n  filter: Filter | undefined,\n  values: string[]\n) => {\n  const options = times(max - min + 1, (index) => {\n    const value = padZero(min + index)\n    return formatter(type, {\n      text: value,\n      value,\n    })\n  })\n  return filter ? filter(type, options, values) : options\n}\n\nexport const formatValueRange = (values: string[], columns: SelectOption[][]) =>\n  values.map((value, index) => {\n    const column = columns[index]\n    if (column.length) {\n      const minValue = +column[0].value!\n      const maxValue = +column[column.length - 1].value!\n      return padZero(clamp(+value, minValue, maxValue))\n    }\n    return value\n  })\n"],"names":[],"mappings":";;;;;;;;AAYO,MAAM,WAAc,GAAA,MAAA,CAAO,EAAC,EAAG,iBAAmB,EAAA;AAAA,EACvD,YAAY,aAAsB,EAAA;AAAA,EAClC,MAAQ,EAAA,QAAA;AAAA,EACR,SAAW,EAAA;AAAA,IACT,IAAM,EAAA,QAAA;AAAA,IACN,OAAA,EAAS,CAAC,IAAA,EAAc,MAAyB,KAAA,MAAA;AAAA,GACnD;AACF,CAAC,EAAA;AAEY,MAAA,iBAAA,GAAoB,MAAO,CAAA,IAAA,CAAK,iBAAiB,EAAA;AAI9C,SAAA,KAAA,CAAS,GAAW,QAAgC,EAAA;AAClE,EAAA,IAAI,IAAI,CAAG,EAAA;AACT,IAAA,OAAO,EAAC,CAAA;AAAA,GACV;AAEA,EAAA,MAAM,SAAc,KAAM,CAAA,IAAA,CAAK,EAAE,MAAA,EAAQ,GAAG,CAAA,CAAA;AAE5C,EAAA,IAAI,KAAQ,GAAA,CAAA,CAAA,CAAA;AACZ,EAAO,OAAA,EAAE,QAAQ,CAAG,EAAA;AAClB,IAAO,MAAA,CAAA,KAAA,CAAA,GAAS,SAAS,KAAK,CAAA,CAAA;AAAA,GAChC;AAEA,EAAO,OAAA,MAAA,CAAA;AACT,CAAA;AAEO,MAAM,cAAiB,GAAA,CAAC,IAAc,EAAA,KAAA,KAC3C,EAAK,GAAA,IAAI,IAAK,CAAA,IAAA,EAAM,KAAQ,GAAA,CAAA,EAAG,EAAE,CAAA,CAAE,OAAQ,GAAA;AAEtC,MAAM,aAAa,CACxB,GAAA,EACA,KACA,IACA,EAAA,SAAA,EACA,QACA,MACG,KAAA;AACH,EAAA,MAAM,UAAU,KAAM,CAAA,GAAA,GAAM,GAAM,GAAA,CAAA,EAAG,CAAC,KAAU,KAAA;AAC9C,IAAM,MAAA,KAAA,GAAQ,OAAQ,CAAA,GAAA,GAAM,KAAK,CAAA,CAAA;AACjC,IAAA,OAAO,UAAU,IAAM,EAAA;AAAA,MACrB,IAAM,EAAA,KAAA;AAAA,MACN,KAAA;AAAA,KACD,CAAA,CAAA;AAAA,GACF,CAAA,CAAA;AACD,EAAA,OAAO,MAAS,GAAA,MAAA,CAAO,IAAM,EAAA,OAAA,EAAS,MAAM,CAAI,GAAA,OAAA,CAAA;AAClD,EAAA;AAEa,MAAA,gBAAA,GAAmB,CAAC,MAAkB,EAAA,OAAA,KACjD,OAAO,GAAI,CAAA,CAAC,OAAO,KAAU,KAAA;AAC3B,EAAA,MAAM,SAAS,OAAQ,CAAA,KAAA,CAAA,CAAA;AACvB,EAAA,IAAI,OAAO,MAAQ,EAAA;AACjB,IAAM,MAAA,QAAA,GAAW,CAAC,MAAA,CAAO,CAAG,CAAA,CAAA,KAAA,CAAA;AAC5B,IAAA,MAAM,QAAW,GAAA,CAAC,MAAO,CAAA,MAAA,CAAO,SAAS,CAAG,CAAA,CAAA,KAAA,CAAA;AAC5C,IAAA,OAAO,QAAQ,KAAM,CAAA,CAAC,KAAO,EAAA,QAAA,EAAU,QAAQ,CAAC,CAAA,CAAA;AAAA,GAClD;AACA,EAAO,OAAA,KAAA,CAAA;AACT,CAAC;;;;"}