UNPKG

tdesign-mobile-vue

Version:
1 lines 28.1 kB
{"version":3,"file":"color-picker.mjs","sources":["../../src/color-picker/color-picker.tsx"],"sourcesContent":["import { defineComponent, ref, watch, computed, onMounted, nextTick, toRefs } from 'vue';\nimport props from './props';\nimport config from '../config';\nimport { Popup as TPopup } from '../popup';\nimport type { ColorPickerChangeTrigger } from './type';\nimport { useTNodeJSX } from '../hooks/tnode';\nimport { usePrefixClass } from '../hooks/useClass';\nimport useVModel from '../hooks/useVModel';\nimport { getFormatList, genSwatchList, getCoordinate } from './helper';\nimport { Color, getColorObject } from '../_common/js/color-picker';\nimport { DEFAULT_COLOR } from '../_common/js/color-picker/constants';\nimport { ALPHA_MAX, HUE_MAX } from './constants';\n\nconst { prefix } = config;\n\nexport default defineComponent({\n name: `${prefix}-color-picker`,\n components: {\n TPopup,\n },\n props,\n setup(props) {\n const colorPickerClass = usePrefixClass('color-picker');\n const panelRect = ref<HTMLElement>();\n const hueSliderRect = ref<HTMLElement>();\n const alphaSliderRect = ref<HTMLElement>();\n const { value, modelValue } = toRefs(props);\n\n const [innerValue = ref(DEFAULT_COLOR), setPickerValue] = useVModel(\n value,\n modelValue,\n props.defaultValue,\n props.onChange,\n );\n\n const saturationThumbStyle = ref({\n left: '0',\n top: '0',\n });\n const hueSliderStyle = ref({\n left: '0',\n color: '',\n });\n const alphaSliderStyle = ref({\n left: '0',\n color: '',\n });\n const sliderInfo = ref({\n value: 0,\n });\n const color = new Color(props.defaultValue || props.value || DEFAULT_COLOR);\n const formatList = ref(getFormatList(props.format, color));\n const innerSwatchList = computed(() => genSwatchList(props.swatchColors));\n\n const renderTNodeJSX = useTNodeJSX();\n\n const getSliderThumbStyle = ({\n value,\n maxValue,\n isAlpha,\n }: {\n value: number;\n maxValue: number;\n isAlpha?: boolean;\n }) => {\n const dom = isAlpha ? alphaSliderRect.value : hueSliderRect.value;\n const { width } = dom.getBoundingClientRect();\n if (!width) {\n return;\n }\n\n const left = Math.round((value / maxValue) * 100);\n\n return {\n left: `${left}%`,\n color: color.rgb,\n };\n };\n\n const getSaturationThumbStyle = ({ saturation, value }: { saturation: number; value: number }) => {\n const { width, height } = panelRect.value.getBoundingClientRect();\n const top = Math.round((1 - value) * height);\n const left = Math.round(saturation * width);\n\n return {\n color: color.rgb,\n left: `${left}px`,\n top: `${top}px`,\n };\n };\n\n const setCoreStyle = () => {\n sliderInfo.value = { value: color.hue };\n formatList.value = getFormatList(props.format, color);\n if (isMultiple.value) {\n const hue = getSliderThumbStyle({ value: color.hue, maxValue: HUE_MAX, isAlpha: false });\n if (hue) {\n hueSliderStyle.value = hue;\n }\n const alpha = getSliderThumbStyle({ value: color.alpha * 100, maxValue: ALPHA_MAX, isAlpha: false });\n if (alpha) {\n alphaSliderStyle.value = alpha;\n }\n\n saturationThumbStyle.value = getSaturationThumbStyle({\n saturation: color.saturation,\n value: color.value,\n });\n }\n };\n const formatValue = () => {\n return color.getFormatsColorMap()[props.format] || color.css;\n };\n\n const emitColorChange = (trigger: ColorPickerChangeTrigger) => {\n setPickerValue?.(formatValue(), {\n trigger,\n color: getColorObject(color),\n });\n };\n\n const clickSwatch = (swatch: string) => {\n color.update(swatch);\n emitColorChange('preset');\n setCoreStyle();\n };\n const isMultiple = computed(() => {\n return props.type === 'multiple';\n });\n\n const getSaturationAndValueByCoordinate = (coordinate: { x: number; y: number }) => {\n const { width, height } = panelRect.value.getBoundingClientRect();\n const { x, y } = coordinate;\n let saturation = x / width;\n let value = 1 - y / height;\n saturation = Math.min(1, Math.max(0, saturation));\n value = Math.min(1, Math.max(0, value));\n\n return {\n saturation,\n value,\n };\n };\n\n const onChangeSaturation = ({ saturation, value }: { saturation: number; value: number }) => {\n const { saturation: sat, value: val } = color;\n if (value !== val && saturation !== sat) {\n color.saturation = saturation;\n color.value = value;\n } else if (saturation !== sat) {\n color.saturation = saturation;\n } else if (value !== val) {\n color.value = value;\n } else {\n return;\n }\n\n props.onPaletteBarChange?.({\n color: getColorObject(color),\n });\n\n setCoreStyle();\n };\n\n const handleSaturationDrag = (e: TouchEvent) => {\n const coordinate = getCoordinate(e, panelRect.value.getBoundingClientRect(), props.fixed);\n\n const { saturation, value } = getSaturationAndValueByCoordinate(coordinate);\n\n onChangeSaturation({ saturation, value });\n };\n\n const onChangeSlider = ({ value, isAlpha }: { value: number; isAlpha: boolean }) => {\n if (isAlpha) {\n color.alpha = value / 100;\n } else {\n color.hue = value;\n }\n\n emitColorChange(isAlpha ? 'palette-alpha-bar' : 'palette-hue-bar');\n\n setCoreStyle();\n };\n\n const handleSliderDrag = (e: TouchEvent, isAlpha = false) => {\n const dom = isAlpha ? alphaSliderRect.value : hueSliderRect.value;\n const rect = dom.getBoundingClientRect();\n\n const { width } = rect;\n const coordinate = getCoordinate(e, rect);\n const { x } = coordinate;\n const maxValue = isAlpha ? ALPHA_MAX : HUE_MAX;\n\n let value = Math.round((x / width) * maxValue * 100) / 100;\n if (value < 0) value = 0;\n if (value > maxValue) value = maxValue;\n onChangeSlider({ value, isAlpha });\n };\n\n const handleDiffDrag = (e: TouchEvent, dragType: string) => {\n e.preventDefault();\n e.stopPropagation();\n\n switch (dragType) {\n case 'saturation':\n handleSaturationDrag(e);\n break;\n case 'hue-slider':\n handleSliderDrag(e);\n break;\n case 'alpha-slider':\n handleSliderDrag(e, true);\n break;\n default:\n break;\n }\n };\n\n const onTouchStart = (e: TouchEvent, dragType: string) => {\n handleDiffDrag(e, dragType);\n };\n\n const onTouchMove = (e: TouchEvent, dragType: string) => {\n handleDiffDrag(e, dragType);\n };\n\n const onTouchEnd = (e: TouchEvent, dragType: string) => {\n handleDiffDrag(e, dragType);\n };\n\n const updateColor = () => {\n const result = innerValue.value || DEFAULT_COLOR;\n color.update(result);\n };\n\n const init = () => {\n updateColor();\n setCoreStyle();\n };\n\n onMounted(() => {\n init();\n });\n\n return () => {\n const { type, format, enableAlpha } = props;\n\n const header = renderTNodeJSX('header');\n const footer = renderTNodeJSX('footer');\n\n const inner = (\n <div class={`${colorPickerClass.value}__panel`}>\n <div class={`${colorPickerClass.value}__body ${colorPickerClass.value}__body--${type}`}>\n {isMultiple.value && (\n <div\n ref={panelRect}\n class={`${colorPickerClass.value}__saturation`}\n style={{ background: `hsl(${sliderInfo.value.value}, 100%, 50%)` }}\n onTouchstart={(e) => onTouchStart(e, 'saturation')}\n onTouchmove={(e) => onTouchMove(e, 'saturation')}\n onTouchend={(e) => onTouchEnd(e, 'saturation')}\n >\n <div class={`${colorPickerClass.value}__thumb`} style={saturationThumbStyle.value}></div>\n </div>\n )}\n\n {isMultiple.value && (\n <div class={`${colorPickerClass.value}__sliders-wrapper`}>\n <div class={`${colorPickerClass.value}__sliders`}>\n <div\n class={`${colorPickerClass.value}__slider-wrapper ${colorPickerClass.value}__slider-wrapper--hue-type`}\n >\n <div\n class={`${colorPickerClass.value}__slider`}\n ref={hueSliderRect}\n onTouchstart={(e) => onTouchStart(e, 'hue-slider')}\n onTouchmove={(e) => onTouchMove(e, 'hue-slider')}\n onTouchend={(e) => onTouchEnd(e, 'hue-slider')}\n >\n <div class={`${colorPickerClass.value}__rail`}></div>\n <div class={`${colorPickerClass.value}__thumb`} style={hueSliderStyle.value}></div>\n </div>\n </div>\n\n {enableAlpha && (\n <div\n class={`${colorPickerClass.value}__slider-wrapper ${colorPickerClass.value}__slider-wrapper--alpha-type`}\n >\n <div class={`${colorPickerClass.value}__slider-padding `}></div>\n <div\n class={`${colorPickerClass.value}__slider`}\n ref={alphaSliderRect}\n onTouchstart={(e) => onTouchStart(e, 'alpha-slider')}\n onTouchmove={(e) => onTouchMove(e, 'alpha-slider')}\n onTouchend={(e) => onTouchEnd(e, 'alpha-slider')}\n >\n <div\n class={`${colorPickerClass.value}__rail`}\n style={{\n background: `linear-gradient(to right, rgba(0, 0, 0, 0), ${alphaSliderStyle.value?.color})`,\n }}\n ></div>\n <div class={`${colorPickerClass.value}__thumb`} style={alphaSliderStyle.value}></div>\n </div>\n </div>\n )}\n </div>\n </div>\n )}\n\n {isMultiple.value && (\n <div class={`${colorPickerClass.value}__format`}>\n <div class={`${colorPickerClass.value}__format-item ${colorPickerClass.value}__format-item--first`}>\n {format}\n </div>\n <div class={`${colorPickerClass.value}__format-item ${colorPickerClass.value}__format-item--second`}>\n <div class={`${colorPickerClass.value}__format-inputs`}>\n {formatList.value.map((formatItem, formatIndex) => (\n <div\n class={`${colorPickerClass.value}__format-input ${colorPickerClass.value}__format-input--${formatIndex === formatList.value.length - 1 && formatList.value.length === 2 ? 'fixed' : 'base'}`}\n key={formatIndex}\n >\n {formatItem}\n </div>\n ))}\n </div>\n </div>\n </div>\n )}\n\n {innerSwatchList.value.length && (\n <div class={`${colorPickerClass.value}__swatches-wrap`}>\n <div class={`${colorPickerClass.value}__swatches`}>\n {isMultiple.value && <div class={`${colorPickerClass.value}__swatches-title`}>系统预设色彩</div>}\n <div class={`${colorPickerClass.value}__swatches-items`}>\n {innerSwatchList.value.map((swatch) => (\n <div\n class={`${colorPickerClass.value}__swatches-item`}\n key={swatch}\n onClick={() => clickSwatch(swatch)}\n >\n <div\n class={`${colorPickerClass.value}__swatches-inner`}\n style={{ backgroundColor: swatch }}\n ></div>\n </div>\n ))}\n </div>\n </div>\n </div>\n )}\n </div>\n </div>\n );\n return inner;\n };\n },\n});\n"],"names":["prefix","config","defineComponent","name","components","TPopup","props","setup","colorPickerClass","usePrefixClass","panelRect","ref","hueSliderRect","alphaSliderRect","_toRefs","toRefs","value","modelValue","_useVModel","useVModel","defaultValue","onChange","_useVModel2","_slicedToArray","_useVModel2$","innerValue","DEFAULT_COLOR","setPickerValue","saturationThumbStyle","left","top","hueSliderStyle","color","alphaSliderStyle","sliderInfo","Color","formatList","getFormatList","format","innerSwatchList","computed","genSwatchList","swatchColors","renderTNodeJSX","useTNodeJSX","getSliderThumbStyle","maxValue","_ref","isAlpha","dom","_dom$getBoundingClien","getBoundingClientRect","width","Math","round","rgb","getSaturationThumbStyle","saturation","_ref2","_panelRect$value$getB","height","setCoreStyle","hue","isMultiple","HUE_MAX","alpha","ALPHA_MAX","formatValue","getFormatsColorMap","css","emitColorChange","trigger","getColorObject","clickSwatch","swatch","update","type","getSaturationAndValueByCoordinate","coordinate","_panelRect$value$getB2","x","y","min","max","onChangeSaturation","_props2$onPaletteBarC","_ref3","sat","val","onPaletteBarChange","handleSaturationDrag","e","getCoordinate","fixed","_getSaturationAndValu","onChangeSlider","handleSliderDrag","arguments","length","undefined","rect","handleDiffDrag","dragType","preventDefault","stopPropagation","onTouchStart","onTouchMove","onTouchEnd","updateColor","result","init","onMounted","_alphaSliderStyle$val","enableAlpha","header","footer","inner","_createVNode","concat","background","onTouchstart","onTouchmove","onTouchend","map","formatItem","formatIndex","onClick","backgroundColor"],"mappings":"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"}