Next.js website for Rocky Mountain Vending company featuring: - Product catalog with Stripe integration - Service areas and parts pages - Admin dashboard with Clerk authentication - SEO optimized pages with JSON-LD structured data Co-authored-by: Cursor <cursoragent@cursor.com>
61 lines
1.8 KiB
Text
61 lines
1.8 KiB
Text
import define, {extend} from "./define.js";
|
|
import {Color, rgbConvert, Rgb, darker, brighter} from "./color.js";
|
|
import {degrees, radians} from "./math.js";
|
|
|
|
var A = -0.14861,
|
|
B = +1.78277,
|
|
C = -0.29227,
|
|
D = -0.90649,
|
|
E = +1.97294,
|
|
ED = E * D,
|
|
EB = E * B,
|
|
BC_DA = B * C - D * A;
|
|
|
|
function cubehelixConvert(o) {
|
|
if (o instanceof Cubehelix) return new Cubehelix(o.h, o.s, o.l, o.opacity);
|
|
if (!(o instanceof Rgb)) o = rgbConvert(o);
|
|
var r = o.r / 255,
|
|
g = o.g / 255,
|
|
b = o.b / 255,
|
|
l = (BC_DA * b + ED * r - EB * g) / (BC_DA + ED - EB),
|
|
bl = b - l,
|
|
k = (E * (g - l) - C * bl) / D,
|
|
s = Math.sqrt(k * k + bl * bl) / (E * l * (1 - l)), // NaN if l=0 or l=1
|
|
h = s ? Math.atan2(k, bl) * degrees - 120 : NaN;
|
|
return new Cubehelix(h < 0 ? h + 360 : h, s, l, o.opacity);
|
|
}
|
|
|
|
export default function cubehelix(h, s, l, opacity) {
|
|
return arguments.length === 1 ? cubehelixConvert(h) : new Cubehelix(h, s, l, opacity == null ? 1 : opacity);
|
|
}
|
|
|
|
export function Cubehelix(h, s, l, opacity) {
|
|
this.h = +h;
|
|
this.s = +s;
|
|
this.l = +l;
|
|
this.opacity = +opacity;
|
|
}
|
|
|
|
define(Cubehelix, cubehelix, extend(Color, {
|
|
brighter(k) {
|
|
k = k == null ? brighter : Math.pow(brighter, k);
|
|
return new Cubehelix(this.h, this.s, this.l * k, this.opacity);
|
|
},
|
|
darker(k) {
|
|
k = k == null ? darker : Math.pow(darker, k);
|
|
return new Cubehelix(this.h, this.s, this.l * k, this.opacity);
|
|
},
|
|
rgb() {
|
|
var h = isNaN(this.h) ? 0 : (this.h + 120) * radians,
|
|
l = +this.l,
|
|
a = isNaN(this.s) ? 0 : this.s * l * (1 - l),
|
|
cosh = Math.cos(h),
|
|
sinh = Math.sin(h);
|
|
return new Rgb(
|
|
255 * (l + a * (A * cosh + B * sinh)),
|
|
255 * (l + a * (C * cosh + D * sinh)),
|
|
255 * (l + a * (E * cosh)),
|
|
this.opacity
|
|
);
|
|
}
|
|
}));
|