UNPKG

@smart-react-components/ui

Version:
78 lines (77 loc) 2.63 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.isLight = exports.isEqual = exports.convertColor = exports.calculateDraggerPosition = exports.colorToString = void 0; const color_picker_1 = require("../types/color-picker"); /** * Converts color to string by given format. */ const colorToString = (color, format) => { if (!color) { return null; } if (format === color_picker_1.ColorPickerFormat.HSL) { return color.hsl().toString(); } if (format === color_picker_1.ColorPickerFormat.RGB || color.valpha < 1) { return color.rgb().toString(); } return color.hex().toString(); }; exports.colorToString = colorToString; /** * Calculates new position of the dragger. */ const calculateDraggerPosition = (e, pickerEl, draggerSize) => { const pickerRect = pickerEl.getBoundingClientRect(); const draggerHalfSize = draggerSize / 2; const eX = e.clientX || e.pageX - window.pageXOffset; const eY = e.clientY || e.pageY - window.pageYOffset; let x = eX - (pickerRect.left + draggerHalfSize); let y = eY - (pickerRect.top + draggerHalfSize); if (x < -draggerHalfSize) { x = -draggerHalfSize; } else if (x > (pickerRect.width - draggerHalfSize)) { x = pickerRect.width - draggerHalfSize; } if (y < -draggerHalfSize) { y = -draggerHalfSize; } else if (y > (pickerRect.height - draggerHalfSize)) { y = pickerRect.height - draggerHalfSize; } return { left: x, top: y, x: x + draggerHalfSize, y: y + draggerHalfSize, }; }; exports.calculateDraggerPosition = calculateDraggerPosition; /** * Converts color to the given format as string. */ const convertColor = (color, format) => { if (!color) { return null; } if (format === color_picker_1.ColorPickerFormat.HSL) { return color.hsl().toString(); } return (format === color_picker_1.ColorPickerFormat.RGB || color.valpha < 1) ? color.rgb().toString() : color.hex().toString(); }; exports.convertColor = convertColor; /** * Checks if two given colors are equal. */ const isEqual = (color1, color2) => ((!color1 && !color2) || ((color1 === null || color1 === void 0 ? void 0 : color1.rgb().toString()) === (color2 === null || color2 === void 0 ? void 0 : color2.rgb().toString()))); exports.isEqual = isEqual; /** * Checks if the given color is light. */ const isLight = (color, hasOpacity) => { const isLight = color.isLight(); return hasOpacity ? (isLight || color.valpha < .4) : isLight; }; exports.isLight = isLight;