UNPKG

use-luminance

Version:

A React hook for using luminance,support React18

31 lines 1.37 kB
import { useCallback, useEffect, useState, useDeferredValue } from "react"; function useLuminance(bgColor) { var _a = useState(0), luminance = _a[0], setLuminance = _a[1]; var deferredColor = useDeferredValue(bgColor); var hexToRgb = useCallback(function (bgColor) { var result = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(bgColor); if (result) { var r = parseInt(result[1], 16); var g = parseInt(result[2], 16); var b = parseInt(result[3], 16); return [r, g, b]; } else { return [255, 255, 255]; } }, []); useEffect(function () { var _a; var rgb = []; if (deferredColor === null || deferredColor === void 0 ? void 0 : deferredColor.includes("rgb")) { rgb = (_a = deferredColor === null || deferredColor === void 0 ? void 0 : deferredColor.match(/\d+(\.\d+)?/g)) === null || _a === void 0 ? void 0 : _a.slice(0, 3); } else if (deferredColor === null || deferredColor === void 0 ? void 0 : deferredColor.includes("#")) { rgb = hexToRgb(deferredColor); } setLuminance(+rgb[0] * 0.212656 + +rgb[1] * 0.715158 + +rgb[2] * 0.072186); }, [deferredColor, hexToRgb]); return luminance / 255; } export default useLuminance; //# sourceMappingURL=useLuminance.js.map