UNPKG

ng-antd-color-picker

Version:

The angular version of the color-picker component based on antd styles.

69 lines 9.63 kB
import { Color } from '../interfaces/color'; export const generateColor = (color) => { if (color instanceof Color) { return color; } return new Color(color); }; export const defaultColor = generateColor('#1677ff'); export function calculateColor(offset, containerRef, targetRef, color, type) { const { width, height } = containerRef.getBoundingClientRect(); const { width: targetWidth, height: targetHeight } = targetRef.getBoundingClientRect(); const centerOffsetX = targetWidth / 2; const centerOffsetY = targetHeight / 2; const saturation = (offset.x + centerOffsetX) / width; const bright = 1 - (offset.y + centerOffsetY) / height; const hsb = color?.toHsb() || { a: 0, h: 0, s: 0, b: 0 }; const alphaOffset = saturation; const hueOffset = ((offset.x + centerOffsetX) / width) * 360; if (type) { switch (type) { case 'hue': return generateColor({ ...hsb, h: hueOffset <= 0 ? 0 : hueOffset }); case 'alpha': return generateColor({ ...hsb, a: alphaOffset <= 0 ? 0 : alphaOffset }); } } return generateColor({ h: hsb.h, s: saturation <= 0 ? 0 : saturation, b: bright >= 1 ? 1 : bright, a: hsb.a }); } export const calculateOffset = (containerRef, targetRef, color, type) => { const { width, height } = containerRef.getBoundingClientRect(); const { width: targetWidth, height: targetHeight } = targetRef.getBoundingClientRect(); const centerOffsetX = targetWidth / 2; const centerOffsetY = targetHeight / 2; const hsb = color?.toHsb() || { a: 0, h: 0, s: 0, b: 0 }; // Exclusion of boundary cases if ((targetWidth === 0 && targetHeight === 0) || targetWidth !== targetHeight) { return null; } if (type) { switch (type) { case 'hue': return { x: (hsb.h / 360) * width - centerOffsetX, y: -centerOffsetY / 3 }; case 'alpha': return { x: hsb.a * width - centerOffsetX, y: -centerOffsetY / 3 }; } } return { x: hsb.s * width - centerOffsetX, y: (1 - hsb.b) * height - centerOffsetY }; }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWFudGQtY29sb3ItcGlja2VyL3NyYy9saWIvdXRpbC91dGlsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUc1QyxNQUFNLENBQUMsTUFBTSxhQUFhLEdBQUcsQ0FBQyxLQUFvQixFQUFTLEVBQUU7SUFDM0QsSUFBSSxLQUFLLFlBQVksS0FBSyxFQUFFO1FBQzFCLE9BQU8sS0FBSyxDQUFDO0tBQ2Q7SUFDRCxPQUFPLElBQUksS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQzFCLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBRyxhQUFhLENBQUMsU0FBUyxDQUFDLENBQUM7QUFFckQsTUFBTSxVQUFVLGNBQWMsQ0FDNUIsTUFBdUIsRUFDdkIsWUFBNEIsRUFDNUIsU0FBeUIsRUFDekIsS0FBb0IsRUFDcEIsSUFBb0I7SUFFcEIsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsR0FBRyxZQUFZLENBQUMscUJBQXFCLEVBQUUsQ0FBQztJQUMvRCxNQUFNLEVBQUUsS0FBSyxFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLEdBQUcsU0FBUyxDQUFDLHFCQUFxQixFQUFFLENBQUM7SUFDdkYsTUFBTSxhQUFhLEdBQUcsV0FBVyxHQUFHLENBQUMsQ0FBQztJQUN0QyxNQUFNLGFBQWEsR0FBRyxZQUFZLEdBQUcsQ0FBQyxDQUFDO0lBQ3ZDLE1BQU0sVUFBVSxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxhQUFhLENBQUMsR0FBRyxLQUFLLENBQUM7SUFDdEQsTUFBTSxNQUFNLEdBQUcsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxhQUFhLENBQUMsR0FBRyxNQUFNLENBQUM7SUFDdkQsTUFBTSxHQUFHLEdB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LENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxNQUFNLEdBQUcsYUFBYTtLQUN4QyxDQUFDO0FBQ0osQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29sb3IgfSBmcm9tICcuLi9pbnRlcmZhY2VzL2NvbG9yJztcbmltcG9ydCB0eXBlIHsgQ29sb3JHZW5JbnB1dCwgSHNiYUNvbG9yVHlwZSwgVHJhbnNmb3JtT2Zmc2V0IH0gZnJvbSAnLi4vaW50ZXJmYWNlcy90eXBlJztcblxuZXhwb3J0IGNvbnN0IGdlbmVyYXRlQ29sb3IgPSAoY29sb3I6IENvbG9yR2VuSW5wdXQpOiBDb2xvciA9PiB7XG4gIGlmIChjb2xvciBpbnN0YW5jZW9mIENvbG9yKSB7XG4gICAgcmV0dXJuIGNvbG9yO1xuICB9XG4gIHJldHVybiBuZXcgQ29sb3IoY29sb3IpO1xufTtcblxuZXhwb3J0IGNvbnN0IGRlZmF1bHRDb2xvciA9IGdlbmVyYXRlQ29sb3IoJyMxNjc3ZmYnKTtcblxuZXhwb3J0IGZ1bmN0aW9uIGNhbGN1bGF0ZUNvbG9yKFxuICBvZmZzZXQ6IFRyYW5zZm9ybU9mZnNldCxcbiAgY29udGFpbmVyUmVmOiBIVE1MRGl2RWxlbWVudCxcbiAgdGFyZ2V0UmVmOiBIVE1MRGl2RWxlbWVudCxcbiAgY29sb3I/OiBDb2xvciB8IG51bGwsXG4gIHR5cGU/OiBIc2JhQ29sb3JUeXBlXG4pOiBDb2xvciB7XG4gIGNvbnN0IHsgd2lkdGgsIGhlaWdodCB9ID0gY29udGFpbmVyUmVmLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICBjb25zdCB7IHdpZHRoOiB0YXJnZXRXaWR0aCwgaGVpZ2h0OiB0YXJnZXRIZWlnaHQgfSA9IHRhcmdldFJlZi5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgY29uc3QgY2VudGVyT2Zmc2V0WCA9IHRhcmdldFdpZHRoIC8gMjtcbiAgY29uc3QgY2VudGVyT2Zmc2V0WSA9IHRhcmdldEhlaWdodCAvIDI7XG4gIGNvbnN0IHNhdHVyYXRpb24gPSAob2Zmc2V0LnggKyBjZW50ZXJPZmZzZXRYKSAvIHdpZHRoO1xuICBjb25zdCBicmlnaHQgPSAxIC0gKG9mZnNldC55ICsgY2VudGVyT2Zmc2V0WSkgLyBoZWlnaHQ7XG4gIGNvbnN0IGhzYiA9IGNvbG9yPy50b0hzYigpIHx8IHsgYTogMCwgaDogMCwgczogMCwgYjogMCB9O1xuICBjb25zdCBhbHBoYU9mZnNldCA9IHNhdHVyYXRpb247XG4gIGNvbnN0IGh1ZU9mZnNldCA9ICgob2Zmc2V0LnggKyBjZW50ZXJPZmZzZXRYKSAvIHdpZHRoKSAqIDM2MDtcblxuICBpZiAodHlwZSkge1xuICAgIHN3aXRjaCAodHlwZSkge1xuICAgICAgY2FzZSAnaHVlJzpcbiAgICAgICAgcmV0dXJuIGdlbmVyYXRlQ29sb3Ioe1xuICAgICAgICAgIC4uLmhzYixcbiAgICAgICAgICBoOiBodWVPZmZzZXQgPD0gMCA/IDAgOiBodWVPZmZzZXRcbiAgICAgICAgfSk7XG4gICAgICBjYXNlICdhbHBoYSc6XG4gICAgICAgIHJldHVybiBnZW5lcmF0ZUNvbG9yKHtcbiAgICAgICAgICAuLi5oc2IsXG4gICAgICAgICAgYTogYWxwaGFPZmZzZXQgPD0gMCA/IDAgOiBhbHBoYU9mZnNldFxuICAgICAgICB9KTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gZ2VuZXJhdGVDb2xvcih7XG4gICAgaDogaHNiLmgsXG4gICAgczogc2F0dXJhdGlvbiA8PSAwID8gMCA6IHNhdHVyYXRpb24sXG4gICAgYjogYnJpZ2h0ID49IDEgPyAxIDogYnJpZ2h0LFxuICAgIGE6IGhzYi5hXG4gIH0pO1xufVxuXG5leHBvcnQgY29uc3QgY2FsY3VsYXRlT2Zmc2V0ID0gKFxuICBjb250YWluZXJSZWY6IEhUTUxEaXZFbGVtZW50LFxuICB0YXJnZXRSZWY6IEhUTUxEaXZFbGVtZW50LFxuICBjb2xvcj86IENvbG9yIHwgbnVsbCxcbiAgdHlwZT86IEhzYmFDb2xvclR5cGVcbik6IFRyYW5zZm9ybU9mZnNldCB8IG51bGwgPT4ge1xuICBjb25zdCB7IHdpZHRoLCBoZWlnaHQgfSA9IGNvbnRhaW5lclJlZi5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgY29uc3QgeyB3aWR0aDogdGFyZ2V0V2lkdGgsIGhlaWdodDogdGFyZ2V0SGVpZ2h0IH0gPSB0YXJnZXRSZWYuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gIGNvbnN0IGNlbnRlck9mZnNldFggPSB0YXJnZXRXaWR0aCAvIDI7XG4gIGNvbnN0IGNlbnRlck9mZnNldFkgPSB0YXJnZXRIZWlnaHQgLyAyO1xuICBjb25zdCBoc2IgPSBjb2xvcj8udG9Ic2IoKSB8fCB7IGE6IDAsIGg6IDAsIHM6IDAsIGI6IDAgfTtcblxuICAvLyBFeGNsdXNpb24gb2YgYm91bmRhcnkgY2FzZXNcbiAgaWYgKCh0YXJnZXRXaWR0aCA9PT0gMCAmJiB0YXJnZXRIZWlnaHQgPT09IDApIHx8IHRhcmdldFdpZHRoICE9PSB0YXJnZXRIZWlnaHQpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGlmICh0eXBlKSB7XG4gICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICBjYXNlICdodWUnOlxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHg6IChoc2IuaCAvIDM2MCkgKiB3aWR0aCAtIGNlbnRlck9mZnNldFgsXG4gICAgICAgICAgeTogLWNlbnRlck9mZnNldFkgLyAzXG4gICAgICAgIH07XG4gICAgICBjYXNlICdhbHBoYSc6XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgeDogaHNiLmEgKiB3aWR0aCAtIGNlbnRlck9mZnNldFgsXG4gICAgICAgICAgeTogLWNlbnRlck9mZnNldFkgLyAzXG4gICAgICAgIH07XG4gICAgfVxuICB9XG4gIHJldHVybiB7XG4gICAgeDogaHNiLnMgKiB3aWR0aCAtIGNlbnRlck9mZnNldFgsXG4gICAgeTogKDEgLSBoc2IuYikgKiBoZWlnaHQgLSBjZW50ZXJPZmZzZXRZXG4gIH07XG59O1xuIl19