cables_dev/cables/src/core/core_port_switch.js
import { Port } from "./core_port.js";
class SwitchPort extends Port
{
constructor(__parent, name, type, uiAttribs, indexPort)
{
super(__parent, name, type, uiAttribs);
this.get = () =>
{
let s = super.get();
if (CABLES.UI)
{
if (
s === "" ||
s === null ||
s === undefined ||
(uiAttribs.values && uiAttribs.values.indexOf(String(s)) === -1)
)
{
this.op.setUiError("invalidswitch", "Invalid Value [" + this.name + "]: \"" + s + "\"", 1);
}
else this.op.setUiError("invalidswitch", null);
}
if (s === null || s === undefined)s = "";
return s;
};
this.indexPort = indexPort;
this.indexPort.set = (value) =>
{
const values = uiAttribs.values;
if (!values)
{
// console.log("switch port has no values", this);
return;
}
let intValue = Math.floor(value);
intValue = Math.min(intValue, values.length - 1);
intValue = Math.max(intValue, 0);
this.indexPort.setValue(intValue);
this.set(values[intValue]);
if (this.op.patch.isEditorMode() && performance.now() - (this.lastTime || 0) > 100 && window.gui && gui.patchView.isCurrentOp(this.op))
{
gui.opParams.show(this.op);
this.lastTime = performance.now();
}
};
}
setUiAttribs(attribs)
{
const hidePort = attribs.hidePort;
attribs.hidePort = true;
super.setUiAttribs(attribs);
if (typeof hidePort !== "undefined")
{
this.indexPort.setUiAttribs({ hidePort });
}
}
}
export { SwitchPort };