{"version":3,"file":"rate.vue2.mjs","sources":["../../../../../packages/components/rate/src/rate.vue"],"sourcesContent":["<template>\n  <div\n    :class=\"rateKls\"\n    role=\"slider\"\n    :aria-valuenow=\"currentValue\"\n    :aria-valuetext=\"text\"\n    aria-valuemin=\"0\"\n    :aria-valuemax=\"max\"\n    tabindex=\"0\"\n    @keydown=\"handleKey\"\n  >\n    <span\n      v-for=\"(item, key) in max\"\n      :key=\"key\"\n      :class=\"ns.e('item')\"\n      :style=\"{ cursor: rateDisabled ? 'auto' : 'pointer' }\"\n      @mousemove=\"setCurrentValue(item, $event)\"\n      @mouseleave=\"resetCurrentValue\"\n      @click=\"selectValue(item)\"\n    >\n      <el-icon\n        :class=\"[ns.e('icon'), { hover: hoverIndex === item }]\"\n        :style=\"getIconStyle(item)\"\n      >\n        <component\n          :is=\"iconComponents[item - 1]\"\n          v-if=\"!showDecimalIcon(item)\"\n        />\n        <el-icon\n          v-if=\"showDecimalIcon(item)\"\n          :style=\"decimalStyle\"\n          :class=\"[ns.e('icon'), ns.e('decimal')]\"\n        >\n          <component :is=\"decimalIconComponent\" />\n        </el-icon>\n      </el-icon>\n    </span>\n    <span\n      v-if=\"showText || showScore\"\n      :class=\"ns.e('text')\"\n      :style=\"{ color: textColor }\"\n    >\n      {{ text }}\n    </span>\n  </div>\n</template>\n<script lang=\"ts\">\nimport { defineComponent, inject, computed, ref, watch } from 'vue'\nimport { isObject, isArray } from '@vue/shared'\nimport { formKey } from '@element-ultra/tokens'\nimport { hasClass } from '@element-ultra/utils'\nimport { EVENT_CODE, UPDATE_MODEL_EVENT } from '@element-ultra/shared'\nimport { ElIcon } from '@element-ultra/components/icon'\nimport { StarFilled, Star } from 'icon-ultra'\nimport { useFormItem, useNamespace, useSize } from '@element-ultra/hooks'\nimport { rateProps, rateEmits } from './rate'\nimport type { FormContext } from '@element-ultra/tokens'\n\nfunction getValueFromMap<T>(\n  value: number,\n  map: Record<string, T | { excluded?: boolean; value: T }>\n) {\n  const isExcludedObject = (\n    val: unknown\n  ): val is { excluded?: boolean } & Record<any, unknown> => isObject(val)\n\n  const matchedKeys = Object.keys(map)\n    .map(key => +key)\n    .filter(key => {\n      const val = map[key]\n      const excluded = isExcludedObject(val) ? val.excluded : false\n      return excluded ? value < key : value <= key\n    })\n    .sort((a, b) => a - b)\n  const matchedValue = map[matchedKeys[0]]\n  return (isExcludedObject(matchedValue) && matchedValue.value) || matchedValue\n}\n\nexport default defineComponent({\n  name: 'ElRate',\n  components: {\n    ElIcon,\n    StarFilled,\n    Star\n  },\n  props: rateProps,\n  emits: rateEmits,\n\n  setup(props, { emit }) {\n    const rateSize = useSize({ props })\n    const ns = useNamespace('rate')\n    const { form } = useFormItem()\n\n    const currentValue = ref(props.modelValue)\n    const hoverIndex = ref(-1)\n    const pointerAtLeftHalf = ref(true)\n\n    const rateKls = computed(() => [ns.b(), ns.m(rateSize.value)])\n\n    const rateDisabled = computed(() => props.disabled || form?.props.disabled)\n    const text = computed(() => {\n      let result = ''\n      if (props.showScore) {\n        result = props.scoreTemplate.replace(\n          /\\{\\s*value\\s*\\}/,\n          rateDisabled.value ? `${props.modelValue}` : `${currentValue.value}`\n        )\n      } else if (props.showText) {\n        result = props.texts[Math.ceil(currentValue.value) - 1]\n      }\n      return result\n    })\n    const valueDecimal = computed(\n      () => props.modelValue * 100 - Math.floor(props.modelValue) * 100\n    )\n    const colorMap = computed(() =>\n      isArray(props.colors)\n        ? {\n            [props.lowThreshold]: props.colors[0],\n            [props.highThreshold]: { value: props.colors[1], excluded: true },\n            [props.max]: props.colors[2]\n          }\n        : props.colors\n    )\n    const activeColor = computed(() =>\n      getValueFromMap(currentValue.value, colorMap.value)\n    )\n    const decimalStyle = computed(() => {\n      let width = ''\n      if (rateDisabled.value) {\n        width = `${valueDecimal.value}%`\n      } else if (props.allowHalf) {\n        width = '50%'\n      }\n      return {\n        color: activeColor.value,\n        width\n      }\n    })\n    const componentMap = computed(() =>\n      isArray(props.icons)\n        ? {\n            [props.lowThreshold]: props.icons[0],\n            [props.highThreshold]: {\n              value: props.icons[1],\n              excluded: true\n            },\n            [props.max]: props.icons[2]\n          }\n        : props.icons\n    )\n    const decimalIconComponent = computed(() =>\n      getValueFromMap(props.modelValue, componentMap.value)\n    )\n    const voidComponent = computed(() =>\n      rateDisabled.value ? props.disabledvoidIcon : props.voidIcon\n    )\n    const activeComponent = computed(() =>\n      getValueFromMap(currentValue.value, componentMap.value)\n    )\n    const iconComponents = computed(() => {\n      const result = Array(props.max)\n      const threshold = currentValue.value\n      result.fill(activeComponent.value, 0, threshold)\n      result.fill(voidComponent.value, threshold, props.max)\n      return result\n    })\n\n    function showDecimalIcon(item: number) {\n      const showWhenDisabled =\n        rateDisabled.value &&\n        valueDecimal.value > 0 &&\n        item - 1 < props.modelValue &&\n        item > props.modelValue\n      const showWhenAllowHalf =\n        props.allowHalf &&\n        pointerAtLeftHalf.value &&\n        item - 0.5 <= currentValue.value &&\n        item > currentValue.value\n      return showWhenDisabled || showWhenAllowHalf\n    }\n\n    function getIconStyle(item: number) {\n      const voidColor = rateDisabled.value\n        ? props.disabledVoidColor\n        : props.voidColor\n      return {\n        color: item <= currentValue.value ? activeColor.value : voidColor\n      }\n    }\n\n    function selectValue(value: number) {\n      if (rateDisabled.value) {\n        return\n      }\n      if (props.allowHalf && pointerAtLeftHalf.value) {\n        emit(UPDATE_MODEL_EVENT, currentValue.value)\n        if (props.modelValue !== currentValue.value) {\n          emit('change', currentValue.value)\n        }\n      } else {\n        emit(UPDATE_MODEL_EVENT, value)\n        if (props.modelValue !== value) {\n          emit('change', value)\n        }\n      }\n    }\n\n    function handleKey(e: KeyboardEvent) {\n      if (rateDisabled.value) {\n        return\n      }\n      let _currentValue = currentValue.value\n      const code = e.code\n      if (code === EVENT_CODE.up || code === EVENT_CODE.right) {\n        if (props.allowHalf) {\n          _currentValue += 0.5\n        } else {\n          _currentValue += 1\n        }\n        e.stopPropagation()\n        e.preventDefault()\n      } else if (code === EVENT_CODE.left || code === EVENT_CODE.down) {\n        if (props.allowHalf) {\n          _currentValue -= 0.5\n        } else {\n          _currentValue -= 1\n        }\n        e.stopPropagation()\n        e.preventDefault()\n      }\n      _currentValue = _currentValue < 0 ? 0 : _currentValue\n      _currentValue = _currentValue > props.max ? props.max : _currentValue\n      emit(UPDATE_MODEL_EVENT, _currentValue)\n      emit('change', _currentValue)\n      return _currentValue\n    }\n\n    function setCurrentValue(value: number, event: MouseEvent) {\n      if (rateDisabled.value) {\n        return\n      }\n      if (props.allowHalf) {\n        // TODO: use cache via computed https://github.com/element-plus/element-plus/pull/5456#discussion_r786472092\n        let target = event.target as HTMLElement\n        if (hasClass(target, ns.e('item'))) {\n          target = target.querySelector(`.${ns.e('icon')}`)!\n        }\n        if (target.clientWidth === 0 || hasClass(target, ns.e('decimal'))) {\n          target = target.parentNode as HTMLElement\n        }\n        pointerAtLeftHalf.value = event.offsetX * 2 <= target.clientWidth\n        currentValue.value = pointerAtLeftHalf.value ? value - 0.5 : value\n      } else {\n        currentValue.value = value\n      }\n      hoverIndex.value = value\n    }\n\n    function resetCurrentValue() {\n      if (rateDisabled.value) {\n        return\n      }\n      if (props.allowHalf) {\n        pointerAtLeftHalf.value =\n          props.modelValue !== Math.floor(props.modelValue)\n      }\n      currentValue.value = props.modelValue\n      hoverIndex.value = -1\n    }\n\n    watch(\n      () => props.modelValue,\n      val => {\n        currentValue.value = val\n        pointerAtLeftHalf.value =\n          props.modelValue !== Math.floor(props.modelValue)\n      }\n    )\n\n    if (!props.modelValue) {\n      emit(UPDATE_MODEL_EVENT, 0)\n    }\n\n    return {\n      ns,\n      hoverIndex,\n      currentValue,\n      rateDisabled,\n      text,\n      decimalStyle,\n      decimalIconComponent,\n      iconComponents,\n      rateKls,\n\n      showDecimalIcon,\n      getIconStyle,\n      selectValue,\n      handleKey,\n      setCurrentValue,\n      resetCurrentValue\n    }\n  }\n})\n</script>\n"],"names":[],"mappings":"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"}