{"version":3,"file":"use-tab-mixin.mjs","sources":["../../../../../../../packages/components/cron-expression-builder/src/config/use-tab-mixin.ts"],"sourcesContent":["// 主要用于日和星期的互斥使用\r\nimport { buildProps, createNamespace } from '@ll-plus/utils'\r\nimport { computed, reactive, ref, unref, watch } from 'vue'\r\nimport { cronExpressionBuilderEmits } from './'\r\nexport enum TypeEnum {\r\n  unset = 'UNSET',\r\n  every = 'EVERY',\r\n  range = 'RANGE',\r\n  loop = 'LOOP',\r\n  work = 'WORK',\r\n  last = 'LAST',\r\n  specify = 'SPECIFY',\r\n}\r\n\r\n// use 公共 props\r\nexport function useTabProps(options) {\r\n  const defaultValue = options?.defaultValue ?? '?'\r\n  return buildProps({\r\n    value: {\r\n      type: String,\r\n      default: defaultValue,\r\n    },\r\n    disabled: {\r\n      type: Boolean,\r\n      default: false,\r\n    },\r\n    ...options?.props,\r\n  } as const)\r\n}\r\n\r\n// use 公共 emits\r\nexport function useTabEmits() {\r\n  return cronExpressionBuilderEmits\r\n}\r\n\r\n// use 公共 setup\r\nexport function useTabSetup(props, context, options) {\r\n  const { emit } = context\r\n  const bem = createNamespace('cron-config-list')\r\n  const defaultValue = ref(options?.defaultValue ?? '?')\r\n  // 类型\r\n  const type = ref(options.defaultType ?? TypeEnum.every)\r\n  const valueList = ref<any[]>([])\r\n  // 对于不同的类型，所定义的值也有所不同\r\n  const valueRange = reactive(options.valueRange)\r\n  const valueLoop = reactive(options.valueLoop)\r\n  const valueWeek = reactive(options.valueWeek || {})\r\n  const valueWork = ref(options.valueWork)\r\n  const maxValue = ref(options.maxValue)\r\n  const minValue = ref(options.minValue)\r\n\r\n  // 根据不同的类型计算出的value\r\n  const computeValue = computed(() => {\r\n    const valueArray: any[] = []\r\n    switch (type.value) {\r\n      case TypeEnum.unset:\r\n        valueArray.push('?')\r\n        break\r\n      case TypeEnum.every:\r\n        valueArray.push('*')\r\n        break\r\n      case TypeEnum.range:\r\n        valueArray.push(`${valueRange.start}-${valueRange.end}`)\r\n        break\r\n      case TypeEnum.loop:\r\n        valueArray.push(`${valueLoop.start}/${valueLoop.interval}`)\r\n        break\r\n      case TypeEnum.work:\r\n        valueArray.push(`${valueWork.value}W`)\r\n        break\r\n      case TypeEnum.last:\r\n        valueArray.push('L')\r\n        break\r\n      case TypeEnum.specify:\r\n        if (valueList.value.length === 0) {\r\n          valueList.value.push(minValue.value)\r\n        }\r\n        valueArray.push(valueList.value.join(','))\r\n        break\r\n      default:\r\n        valueArray.push(defaultValue.value)\r\n        break\r\n    }\r\n    return valueArray.length > 0 ? valueArray.join('') : defaultValue.value\r\n  })\r\n  // 指定值范围区间，介于最小值和最大值之间\r\n  const specifyRange = computed(() => {\r\n    const range: number[] = []\r\n    if (maxValue.value != null) {\r\n      for (let i = minValue.value; i <= maxValue.value; i++) {\r\n        range.push(i)\r\n      }\r\n    }\r\n    return range\r\n  })\r\n\r\n  watch(\r\n    () => props.value,\r\n    (val) => {\r\n      if (val !== computeValue.value) {\r\n        parseValue(val)\r\n      }\r\n    },\r\n    { immediate: true }\r\n  )\r\n\r\n  watch(computeValue, (v) => updateValue(v))\r\n\r\n  function updateValue(value) {\r\n    emit('change', value)\r\n    emit('update:value', value)\r\n  }\r\n\r\n  /**\r\n   * parseValue\r\n   * @param value\r\n   */\r\n  function parseValue(value) {\r\n    if (value === computeValue.value) {\r\n      return\r\n    }\r\n    try {\r\n      if (!value || value === defaultValue.value) {\r\n        type.value = TypeEnum.every\r\n      } else if (value.indexOf('?') >= 0) {\r\n        type.value = TypeEnum.unset\r\n      } else if (value.indexOf('-') >= 0) {\r\n        type.value = TypeEnum.range\r\n        const values = value.split('-')\r\n        if (values.length >= 2) {\r\n          valueRange.start = parseInt(values[0])\r\n          valueRange.end = parseInt(values[1])\r\n        }\r\n      } else if (value.indexOf('/') >= 0) {\r\n        type.value = TypeEnum.loop\r\n        const values = value.split('/')\r\n        if (values.length >= 2) {\r\n          valueLoop.start = value[0] === '*' ? 0 : parseInt(values[0])\r\n          valueLoop.interval = parseInt(values[1])\r\n        }\r\n      } else if (value.indexOf('W') >= 0) {\r\n        type.value = TypeEnum.work\r\n        const values = value.split('W')\r\n        if (!values[0] && !isNaN(values[0])) {\r\n          valueWork.value = parseInt(values[0])\r\n        }\r\n      } else if (value.indexOf('L') >= 0) {\r\n        type.value = TypeEnum.last\r\n      } else if (value.indexOf(',') >= 0 || !isNaN(value)) {\r\n        type.value = TypeEnum.specify\r\n        valueList.value = value.split(',').map((item) => parseInt(item))\r\n      } else {\r\n        type.value = TypeEnum.every\r\n      }\r\n    } catch (e) {\r\n      type.value = TypeEnum.every\r\n    }\r\n  }\r\n\r\n  const beforeRadioAttrs = computed(() => ({\r\n    class: ['choice'],\r\n    disabled: props.disabled || unref(options.disabled),\r\n  }))\r\n  const inputNumberAttrs = computed(() => ({\r\n    class: ['w100'],\r\n    max: maxValue.value,\r\n    min: minValue.value,\r\n    precision: 0,\r\n  }))\r\n  const typeRangeAttrs = computed(() => ({\r\n    disabled:\r\n      type.value !== TypeEnum.range ||\r\n      props.disabled ||\r\n      unref(options.disabled),\r\n    ...inputNumberAttrs.value,\r\n  }))\r\n  const typeLoopAttrs = computed(() => ({\r\n    disabled:\r\n      type.value !== TypeEnum.loop || props.disabled || unref(options.disabled),\r\n    ...inputNumberAttrs.value,\r\n  }))\r\n  const typeSpecifyAttrs = computed(() => ({\r\n    disabled:\r\n      type.value !== TypeEnum.specify ||\r\n      props.disabled ||\r\n      unref(options.disabled),\r\n    class: ['list-check-item'],\r\n  }))\r\n\r\n  return {\r\n    type,\r\n    bem,\r\n    TypeEnum,\r\n    defaultValue,\r\n    valueRange,\r\n    valueLoop,\r\n    valueWeek,\r\n    valueList,\r\n    valueWork,\r\n    maxValue,\r\n    minValue,\r\n    computeValue,\r\n    specifyRange,\r\n    updateValue,\r\n    parseValue,\r\n    beforeRadioAttrs,\r\n    inputNumberAttrs,\r\n    typeRangeAttrs,\r\n    typeLoopAttrs,\r\n    typeSpecifyAttrs,\r\n  }\r\n}\r\n"],"names":["TypeEnum"],"mappings":"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"}