@gechiui/components
Version:
UI components for GeChiUI.
73 lines (63 loc) • 2.02 kB
JavaScript
/**
* External dependencies
*/
import { colord } from 'colord'; // eslint-disable-next-line no-restricted-imports
import memoize from 'memize';
/**
* GeChiUI dependencies
*/
import { useCallback, useMemo } from '@gechiui/element';
/**
* Internal dependencies
*/
function isLegacyProps(props) {
var _props$color;
return typeof props.onChangeComplete !== 'undefined' || typeof props.disableAlpha !== 'undefined' || typeof ((_props$color = props.color) === null || _props$color === void 0 ? void 0 : _props$color.hex) === 'string';
}
function getColorFromLegacyProps(props) {
if (typeof (props === null || props === void 0 ? void 0 : props.color) === 'undefined') {
return undefined;
}
if (typeof props.color === 'string') {
return props.color;
}
if (props.color.hex) {
return props.color.hex;
}
}
const transformColorStringToLegacyColor = memoize(color => {
const colordColor = colord(color);
const hex = colordColor.toHex();
const rgb = colordColor.toRgb();
const hsv = colordColor.toHsv();
const hsl = colordColor.toHsl();
return {
hex,
rgb,
hsv,
hsl,
source: 'hex',
oldHue: hsl.h
};
});
export function useDeprecatedProps(props) {
const onChange = useCallback(color => {
var _props$onChange;
if (isLegacyProps(props)) {
return props.onChangeComplete(transformColorStringToLegacyColor(color));
}
return (_props$onChange = props.onChange) === null || _props$onChange === void 0 ? void 0 : _props$onChange.call(props, color);
}, [props.onChangeComplete, props.onChange]);
const color = useMemo(() => {
return isLegacyProps(props) ? getColorFromLegacyProps(props) : props.color;
}, [props.color]);
const enableAlpha = useMemo(() => {
return isLegacyProps(props) ? !props.disableAlpha : props.enableAlpha;
}, [props.disableAlpha, props.enableAlpha]);
return { ...(isLegacyProps(props) ? {} : props),
onChange,
color,
enableAlpha
};
}
//# sourceMappingURL=use-deprecated-props.js.map