@felixgeelhaar/govee-api-client
Version:
Enterprise-grade TypeScript client library for the Govee Developer REST API
69 lines • 1.69 kB
JavaScript
export class Brightness {
constructor(level) {
this.validateLevel(level);
this._level = Math.round(level);
}
validateLevel(value) {
if (!Number.isFinite(value)) {
throw new Error('Brightness level must be a finite number');
}
if (value < 0 || value > 100) {
throw new Error(`Brightness level must be between 0 and 100, got ${value}`);
}
}
get level() {
return this._level;
}
equals(other) {
return this._level === other._level;
}
toString() {
return `${this._level}%`;
}
toObject() {
return { level: this._level };
}
static fromObject(obj) {
return new Brightness(obj.level);
}
static min() {
return new Brightness(0);
}
static max() {
return new Brightness(100);
}
static dim() {
return new Brightness(25);
}
static medium() {
return new Brightness(50);
}
static bright() {
return new Brightness(75);
}
isDim() {
return this._level <= 25;
}
isBright() {
return this._level >= 75;
}
isMedium() {
return this._level > 25 && this._level < 75;
}
isOff() {
return this._level === 0;
}
isMax() {
return this._level === 100;
}
asPercent() {
return this._level / 100;
}
static fromPercent(percent) {
if (!Number.isFinite(percent) || percent < 0 || percent > 1) {
throw new Error(`Percent must be between 0 and 1, got ${percent}`);
}
return new Brightness(percent * 100);
}
}
//# sourceMappingURL=Brightness.js.map