{"version":3,"file":"rate.mjs","sources":["../../src/rate/rate.tsx"],"sourcesContent":["import { computed, defineComponent, ref, h } from 'vue';\nimport { StarFilledIcon } from 'tdesign-icons-vue-next';\nimport { onClickOutside } from '@vueuse/core';\nimport props from './props';\nimport config from '../config';\nimport { TdRateProps } from './type';\nimport { useDefault } from '../shared';\nimport { useFormDisabled } from '../form/hooks';\nimport { usePrefixClass, useConfig } from '../hooks/useClass';\n\nconst { prefix } = config;\n\nexport default defineComponent({\n  name: `${prefix}-rate`,\n  props,\n  setup(props, context) {\n    const rateClass = usePrefixClass('rate');\n    const { t, globalConfig } = useConfig('rate');\n    const isDisabled = useFormDisabled();\n\n    const rateWrapper = ref<HTMLElement>();\n    const [actualVal] = useDefault<number, TdRateProps>(props, context.emit, 'value', 'change');\n    const rateText = computed(() => {\n      if (Array.isArray(props.texts) && props.texts.length > 0) {\n        return props.texts[actualVal.value - 1];\n      }\n\n      return actualVal.value > 0\n        ? t(globalConfig.value.valueText, { value: actualVal.value })\n        : globalConfig.value.noValueText;\n    });\n    const colors = computed(() => {\n      const { color } = props;\n      if (Array.isArray(color) && color.length === 2) {\n        return {\n          '--td-rate-selected-color': color[0],\n          '--td-rate-unselected-color': color[1],\n        };\n      }\n      if (typeof color === 'string') {\n        return {\n          '--td-rate-selected-color': color,\n        };\n      }\n      return {};\n    });\n\n    const regSize = (val: string | number) => {\n      return `${val}`.includes('px') ? val : `${val}px`;\n    };\n    const unitConvert = (value: number | string): number => {\n      if (typeof value === 'string') {\n        return parseInt(value, 10);\n      }\n      return value;\n    };\n\n    const icon = (isSelect: boolean) => {\n      const { icon } = props;\n      const startComponent = StarFilledIcon;\n      let select = startComponent;\n      let unSelect = startComponent;\n\n      if (Array.isArray(icon)) {\n        const [_select, _unSelect] = icon;\n        if (typeof _select === 'function') {\n          select = _select(h);\n        } else {\n          select = _select;\n        }\n        if (typeof _unSelect === 'function') {\n          unSelect = _unSelect(h);\n        } else {\n          unSelect = _unSelect;\n        }\n      }\n      if (isSelect) {\n        return select || startComponent;\n      }\n      return unSelect || startComponent;\n    };\n\n    const rootClasses = computed(() => [`${rateClass.value}`, { [`${rateClass.value}--disabled`]: isDisabled.value }]);\n\n    const classes = (n: number) => {\n      const classPrefix = `${rateClass.value}__icon`;\n\n      return {\n        [classPrefix]: true,\n        [`${classPrefix}--current`]: scaleIndex.value === Math.ceil(n),\n        [`${classPrefix}--${actualVal.value >= n ? 'selected' : 'unselected'}`]: true,\n      };\n    };\n\n    const ratePopoverRef = ref<HTMLElement>();\n    const scaleIndex = ref(-1);\n    const popoverValue = ref(0);\n    const timer = ref<any>(null);\n    const touchEnd = ref(false);\n    const tipsVisible = ref(false);\n    const tipsLeft = ref(0);\n    const actionType = ref<'move' | 'tap'>('tap');\n    const touchStartTime = ref(0);\n\n    onClickOutside(ratePopoverRef, (event) => {\n      hideTips();\n    });\n\n    const hideTips = (delay = false) => {\n      if (delay) {\n        timer.value = setTimeout(() => {\n          handleCloseTips();\n        }, 3000);\n      } else {\n        handleCloseTips();\n      }\n    };\n\n    const handleCloseTips = () => {\n      tipsVisible.value = false;\n      scaleIndex.value = -1;\n      if (timer.value) {\n        clearTimeout(timer.value);\n      }\n    };\n\n    const onClick = (event: MouseEvent) => {\n      if (isDisabled.value) return;\n      // if (Date.now() - touchStartTime.value > 200) return;\n      getRect(event, 'tap');\n    };\n\n    const onTouch = (e: TouchEvent, eventType: 'move') => {\n      const [touch] = e.touches;\n      getRect(touch, eventType);\n    };\n\n    const onTouchstart = (e: TouchEvent) => {\n      if (isDisabled.value) return;\n      touchStartTime.value = Date.now();\n      touchEnd.value = false;\n    };\n\n    const onTouchmove = (e: TouchEvent) => {\n      if (isDisabled.value) return;\n      if (Date.now() - touchStartTime.value <= 200) return;\n      onTouch(e, 'move');\n    };\n\n    const onTouchEnd = (e: TouchEvent) => {\n      if (isDisabled.value) return;\n      touchEnd.value = true;\n      hideTips();\n    };\n\n    const getRect = (event: Touch | MouseEvent, eventType: 'move' | 'tap') => {\n      if (rateWrapper.value) {\n        const { count, allowHalf, gap, value: currentValue, size } = props;\n        const margin = unitConvert(gap);\n        const { width, left } = rateWrapper.value.getBoundingClientRect();\n        const starWidth = (width - (count - 1) * margin) / count;\n        const offsetX = event.pageX - left;\n        const num = (offsetX + margin) / (starWidth + margin);\n        const remainder = num % 1;\n        const integral = num - remainder;\n        let value = remainder <= 0.5 && allowHalf ? integral + 0.5 : integral + 1;\n\n        if (value > count) {\n          value = count;\n        } else if (value < 0) {\n          value = 0;\n        }\n\n        popoverValue.value = value;\n        const fontSize = size || getComputedStyle(rateWrapper.value).getPropertyValue('font-size');\n        const leftDis = Math.ceil(value - 1) * (unitConvert(gap) + unitConvert(fontSize)) + unitConvert(fontSize) * 0.5;\n        tipsVisible.value = true;\n        tipsLeft.value = Math.max(leftDis, unitConvert(fontSize) * 0.5);\n        scaleIndex.value = Math.ceil(value);\n        actionType.value = eventType;\n\n        if (value !== currentValue) {\n          actualVal.value = value;\n        }\n\n        if (touchEnd.value) {\n          hideTips(true);\n        }\n      }\n    };\n\n    const onSelect = (value: number) => {\n      actualVal.value = value;\n      hideTips();\n    };\n\n    return () => {\n      const iconComponent = (n: number, value: number) => {\n        const classPrefix = `${rateClass.value}__icon-left`;\n        const select = value >= n;\n        const selectHalf = Math.ceil(value) >= n;\n        const SelectIcon = icon(select);\n        const SelectHalfIcon = icon(selectHalf);\n        return (\n          <div style={{ fontSize: regSize(props.size) }}>\n            {props.allowHalf ? (\n              <div class={`${classPrefix} ${selectHalf ? `${classPrefix}--selected` : `${classPrefix}--unselected`}`}>\n                {<SelectHalfIcon />}\n              </div>\n            ) : null}\n            {<SelectIcon />}\n          </div>\n        );\n      };\n\n      const renderRateWrapper = () => {\n        const countList = Array.from(Array(props.count), (_, k) => k + 1);\n        return (\n          <div\n            ref={rateWrapper}\n            class={`${rateClass.value}__wrapper`}\n            onTouchstart={onTouchstart}\n            onTouchmove={onTouchmove}\n            onTouchend={onTouchEnd}\n            onTouchcancel={onTouchEnd}\n          >\n            {countList.map((n) => {\n              // 这里没有好的代替component组件的方法，用h函数代替\n              return h(iconComponent(n, actualVal.value), {\n                key: n,\n                class: classes(n),\n                style: { marginRight: `${props.count > n ? props.gap : 0}px`, ...colors.value },\n                onClick,\n              });\n            })}\n          </div>\n        );\n      };\n\n      const renderRateText = () => {\n        if (!props.showText) return null;\n        return (\n          <span\n            class={{ [`${rateClass.value}__text`]: true, [`${rateClass.value}__text--active`]: actualVal.value > 0 }}\n          >\n            {rateText.value}\n          </span>\n        );\n      };\n\n      const renderRateTips = () => {\n        if (!tipsVisible.value || props.placement === '') return null;\n        return (\n          <div\n            ref={ratePopoverRef}\n            class={{\n              [`${rateClass.value}__tips`]: true,\n              [`${rateClass.value}__tips--${props.placement}`]: props.placement,\n            }}\n            style={{ left: `${tipsLeft.value}px` }}\n          >\n            {actionType.value === 'tap' ? (\n              <div style=\"display: flex\">\n                {props.allowHalf && (\n                  <div\n                    class={{\n                      [`${rateClass.value}__tips-item`]: true,\n                      [`${rateClass.value}__tips-item--active`]:\n                        actualVal.value === Math.ceil(popoverValue.value) - 0.5,\n                    }}\n                    onClick={() => onSelect(Math.ceil(popoverValue.value) - 0.5)}\n                  >\n                    {h(iconComponent(Math.ceil(popoverValue.value), Math.ceil(popoverValue.value) - 0.5), {\n                      style: { ...colors.value },\n                      class: `${rateClass.value}__icon ${rateClass.value}__icon--unselected`,\n                    })}\n                    <span class={`${rateClass.value}__tips-text`}>{Math.ceil(popoverValue.value) - 0.5}</span>\n                  </div>\n                )}\n                <div\n                  class={{\n                    [`${rateClass.value}__tips-item`]: true,\n                    [`${rateClass.value}__tips-item--active`]:\n                      props.allowHalf && actualVal.value === Math.ceil(popoverValue.value),\n                  }}\n                  onClick={() => onSelect(Math.ceil(popoverValue.value))}\n                >\n                  {h(iconComponent(Math.ceil(popoverValue.value), Math.ceil(popoverValue.value)), {\n                    style: { ...colors.value },\n                    class: `${rateClass.value}__icon ${rateClass.value}__icon--selected`,\n                  })}\n                  <span class={`${rateClass.value}__tips-text`}>{Math.ceil(popoverValue.value)}</span>\n                </div>\n              </div>\n            ) : (\n              <div class={`${rateClass.value}__tips-item`} onClick={() => onSelect(popoverValue.value)}>\n                {h(iconComponent(Math.ceil(popoverValue.value), popoverValue.value), {\n                  style: { ...colors.value },\n                  class: {\n                    [`${rateClass.value}__icon`]: true,\n                    [`${rateClass.value}__icon--selected`]: Math.ceil(popoverValue.value) === popoverValue.value,\n                    [`${rateClass.value}__icon--unselected`]: Math.ceil(popoverValue.value) !== popoverValue.value,\n                  },\n                })}\n                <span class={`${rateClass.value}__tips-text`}>{popoverValue.value}</span>\n              </div>\n            )}\n          </div>\n        );\n      };\n\n      return (\n        <div class={rootClasses.value}>\n          {renderRateWrapper()}\n          {renderRateText()}\n          {renderRateTips()}\n        </div>\n      );\n    };\n  },\n});\n"],"names":["prefix","config","defineComponent","name","props","setup","context","rateClass","usePrefixClass","_useConfig","useConfig","t","globalConfig","isDisabled","useFormDisabled","rateWrapper","ref","_useDefault","useDefault","emit","_useDefault2","_slicedToArray","actualVal","rateText","computed","Array","isArray","texts","length","value","valueText","noValueText","colors","color","regSize","val","concat","includes","unitConvert","parseInt","icon","isSelect","startComponent","StarFilledIcon","select","unSelect","_icon","_select","_unSelect","h","rootClasses","_defineProperty","classes","n","classPrefix","scaleIndex","Math","ceil","ratePopoverRef","popoverValue","timer","touchEnd","tipsVisible","tipsLeft","actionType","touchStartTime","onClickOutside","event","hideTips","delay","arguments","undefined","setTimeout","handleCloseTips","clearTimeout","onClick","getRect","onTouch","e","eventType","_e$touches","touches","touch","onTouchstart","Date","now","onTouchmove","onTouchEnd","count","allowHalf","gap","currentValue","size","margin","_rateWrapper$value$ge","getBoundingClientRect","width","left","starWidth","offsetX","pageX","num","remainder","integral","fontSize","getComputedStyle","getPropertyValue","leftDis","max","onSelect","iconComponent","selectHalf","SelectIcon","SelectHalfIcon","_createVNode","renderRateWrapper","countList","from","_","k","map","key","class","style","_objectSpread","marginRight","renderRateText","showText","renderRateTips","placement"],"mappings":"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"}