UNPKG

@vimeo/iris

Version:
59 lines (56 loc) 2.06 kB
import { c as __assign } from '../../../tslib.es6-7f0e734f.js'; import { parseToHsl, rgb } from 'polished'; import { colorSpaces } from '../../../color/colorUtils.esm.js'; function reducer(state, _a) { var type = _a.type, _b = _a.payload, payload = _b === void 0 ? null : _b; switch (type) { case 'TOGGLE': return __assign(__assign({}, state), { open: !state.open }); case 'CLOSE': return __assign(__assign({}, state), { open: false }); case 'SET_COLORSPACE': return __assign(__assign({}, state), { colorSpace: payload }); case 'SET_ERROR': return __assign(__assign({}, state), { error: payload }); case 'SET_EDITING': return __assign(__assign({}, state), { editing: payload }); case 'SET_LAST': return state; case 'SET_HEX': try { var colorMeta = reduceColorMeta(payload); return __assign(__assign({}, state), { colorMeta: colorMeta }); } catch (_c) { return state; } case 'SET_RGB': try { var colorMeta = reduceColorMeta(payload); return __assign(__assign({}, state), { colorMeta: colorMeta }); } catch (_d) { return state; } case 'SET_HSL': try { var colorMeta = reduceColorMeta(payload); return __assign(__assign({}, state), { colorMeta: colorMeta }); } catch (_e) { return state; } default: throw new Error(); } } function reduceColorMeta(payload) { if (typeof payload === 'string') payload = parseToHsl(payload); if (payload.red) payload = parseToHsl(rgb(payload)); var _a = colorSpaces(payload), HSL = _a.HSL, HSV = _a.HSV, HEX = _a.HEX, RGB = _a.RGB; var colorMeta = { HSL: HSL, HSV: HSV, HEX: HEX, RGB: RGB }; return colorMeta; } export { reducer };