"use strict";
const HTMLElementImpl = require("./HTMLElement-impl").implementation;
const { getLabelsForLabelable } = require("../helpers/form-controls");
const { parseFloatingPointNumber } = require("../helpers/strings");
class HTMLProgressElementImpl extends HTMLElementImpl {
constructor(args, privateData) {
super(args, privateData);
this._labels = null;
}
get value() {
const parsedValue = parseFloatingPointNumber(this.getAttributeNS(null, "value"));
if (!isNaN(parsedValue) && parsedValue > 0) {
return parsedValue > this.max ? this.max : parsedValue;
}
return 0;
}
set value(value) {
this.setAttributeNS(null, "value", value);
}
get max() {
const parsedMax = parseFloatingPointNumber(this.getAttributeNS(null, "max"));
if (!isNaN(parsedMax) && parsedMax > 0) {
return parsedMax;
}
return 1.0;
}
set max(value) {
this.setAttributeNS(null, "max", value);
}
get position() {
if (!this.hasAttributeNS(null, "value")) {
return -1;
}
return this.value / this.max;
}
get labels() {
return getLabelsForLabelable(this);
}
}
module.exports = {
implementation: HTMLProgressElementImpl
};