@vimeo/iris
Version:
Vimeo Design System
69 lines (64 loc) • 2.69 kB
JavaScript
;
Object.defineProperty(exports, '__esModule', { value: true });
var tslib_es6 = require('../../../tslib.es6-3ec409b7.js');
var polished = require('polished');
var color_colorUtils = require('../../../color/colorUtils.js');
function reducer(state, _a) {
var type = _a.type, _b = _a.payload, payload = _b === void 0 ? null : _b;
switch (type) {
case 'TOGGLE':
return tslib_es6.__assign(tslib_es6.__assign({}, state), { open: !state.open });
case 'CLOSE':
return tslib_es6.__assign(tslib_es6.__assign({}, state), { open: false });
case 'DRAG_START':
return tslib_es6.__assign(tslib_es6.__assign({}, state), { dragging: true });
case 'DRAG_END':
return tslib_es6.__assign(tslib_es6.__assign({}, state), { dragging: false });
case 'SET_COORDS':
return tslib_es6.__assign(tslib_es6.__assign({}, state), { coords: payload });
case 'SET_COLORSPACE':
return tslib_es6.__assign(tslib_es6.__assign({}, state), { colorSpace: payload });
case 'SET_ERROR':
return tslib_es6.__assign(tslib_es6.__assign({}, state), { error: payload });
case 'SET_EDITING':
return tslib_es6.__assign(tslib_es6.__assign({}, state), { editing: payload });
case 'SET_LAST':
return state;
case 'SET_HEX':
try {
var colorMeta = reduceColorMeta(payload);
return tslib_es6.__assign(tslib_es6.__assign({}, state), { colorMeta: colorMeta });
}
catch (_c) {
return state;
}
case 'SET_RGB':
try {
var colorMeta = reduceColorMeta(payload);
return tslib_es6.__assign(tslib_es6.__assign({}, state), { colorMeta: colorMeta });
}
catch (_d) {
return state;
}
case 'SET_HSL':
try {
var colorMeta = reduceColorMeta(payload);
return tslib_es6.__assign(tslib_es6.__assign({}, state), { colorMeta: colorMeta });
}
catch (_e) {
return state;
}
default:
throw new Error();
}
}
function reduceColorMeta(payload) {
if (typeof payload === 'string')
payload = polished.parseToHsl(payload);
if (payload.red)
payload = polished.parseToHsl(polished.rgb(payload));
var _a = color_colorUtils.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;
}
exports.reducer = reducer;