UNPKG

antd

Version:

An enterprise-class UI design language and React components implementation

46 lines (45 loc) 1.27 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _react = require("react"); var _util = require("../util"); function hasValue(value) { return value !== undefined; } const useColorState = (defaultStateValue, option) => { const { defaultValue, value } = option; const prevColor = (0, _react.useRef)((0, _util.generateColor)('')); const [colorValue, _setColorValue] = (0, _react.useState)(() => { let mergedState; if (hasValue(value)) { mergedState = value; } else if (hasValue(defaultValue)) { mergedState = defaultValue; } else { mergedState = defaultStateValue; } const color = (0, _util.generateColor)(mergedState || ''); prevColor.current = color; return color; }); const setColorValue = color => { _setColorValue(color); prevColor.current = color; }; (0, _react.useEffect)(() => { if (hasValue(value)) { const newColor = (0, _util.generateColor)(value || ''); if (prevColor.current.cleared === true) { newColor.cleared = 'controlled'; } setColorValue(newColor); } }, [value]); return [colorValue, setColorValue, prevColor]; }; var _default = exports.default = useColorState;