{"version":3,"file":"slider.mjs","sources":["../../../../../components/color-picker/components/panel/slider.tsx"],"sourcesContent":["import { computed, defineComponent, onBeforeUnmount, onMounted, PropType, reactive, ref } from 'vue';\nimport { SLIDER_DEFAULT_WIDTH } from '@tdesign/common-js/color-picker/constants';\nimport { Draggable, Coordinate } from '../../utils';\nimport { useBaseClassName } from '../../hooks';\nimport baseProps from './base-props';\n\nexport default defineComponent({\n  name: 'ColorSlider',\n  props: {\n    ...baseProps,\n    className: {\n      type: String,\n      default: '',\n    },\n    value: {\n      type: Number,\n      default: 0,\n    },\n    maxValue: {\n      type: Number,\n      default: 360,\n    },\n    railStyle: {\n      type: Object as PropType<any>,\n    },\n    type: {\n      type: String as PropType<'hue' | 'alpha'>,\n      default: 'hue',\n    },\n  },\n  setup(props) {\n    const baseClassName = useBaseClassName();\n    const refPanel = ref<HTMLElement>();\n    const refThumb = ref<HTMLElement>(null);\n    const dragInstance = ref<Draggable>(null);\n    const panelRect = reactive({\n      width: SLIDER_DEFAULT_WIDTH,\n    });\n    const styles = computed(() => {\n      const { width } = panelRect;\n      if (!width) {\n        return;\n      }\n      const left = Math.round((props.value / props.maxValue) * 100);\n      const color = props.type === 'hue' ? `hsl(${props.color.hue}, 100%, 50%)` : props.color.rgba;\n      return {\n        left: `${left}%`,\n        color,\n      };\n    });\n\n    const handleDrag = (coordinate: Coordinate, isEnded?: boolean) => {\n      if (props.disabled) {\n        return;\n      }\n      const { width } = panelRect;\n      const { x } = coordinate;\n      const value = Math.round((x / width) * props.maxValue * 100) / 100;\n      props.onChange(value, isEnded);\n    };\n\n    const handleDragEnd = (coordinate: Coordinate) => {\n      if (props.disabled) {\n        return;\n      }\n      handleDrag(coordinate, true);\n    };\n\n    onMounted(() => {\n      panelRect.width = refPanel.value.offsetWidth || SLIDER_DEFAULT_WIDTH;\n      dragInstance.value = new Draggable(refPanel.value, {\n        start: () => {\n          // pop模式下由于是隐藏显示，这个宽度让其每次点击的时候重新计算\n          panelRect.width = refPanel.value.offsetWidth;\n        },\n        drag: (coordinate: Coordinate) => {\n          handleDrag(coordinate);\n        },\n        end: handleDragEnd,\n      });\n    });\n\n    onBeforeUnmount(() => {\n      dragInstance.value.destroy();\n    });\n\n    return () => {\n      const paddingStyle = {\n        background: `linear-gradient(90deg, rgba(0,0,0,.0) 0%, rgba(0,0,0,.0) 93%, ${props.color.rgb} 93%, ${props.color.rgb} 100%)`,\n      };\n      return (\n        <div\n          class={[\n            `${baseClassName.value}__slider-wrapper`,\n            `${baseClassName.value}__slider-wrapper--${props.type}-type`,\n          ]}\n        >\n          {props.type === 'alpha' && <div class={`${baseClassName.value}__slider-padding`} style={paddingStyle} />}\n          <div class={[`${baseClassName.value}__slider`, props.className]} ref={refPanel}>\n            <div class={`${baseClassName.value}__rail`} style={props.railStyle}></div>\n            <span\n              class={[`${baseClassName.value}__thumb`]}\n              role=\"slider\"\n              tabindex={0}\n              ref={refThumb}\n              style={styles.value}\n            ></span>\n          </div>\n        </div>\n      );\n    };\n  },\n});\n"],"names":["defineComponent","name","props","_objectSpread","baseProps","className","type","String","value","Number","maxValue","railStyle","Object","setup","baseClassName","useBaseClassName","refPanel","ref","refThumb","dragInstance","panelRect","reactive","width","SLIDER_DEFAULT_WIDTH","styles","computed","left","Math","round","color","concat","hue","rgba","handleDrag","coordinate","isEnded","disabled","x","onChange","handleDragEnd","onMounted","offsetWidth","Draggable","start","drag","end","onBeforeUnmount","destroy","paddingStyle","background","rgb","_createVNode"],"mappings":"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"}