FQiao's picture
Upload 70 files
3324de2 verified
import { app } from "../../../scripts/app.js";
import { api } from "../../../scripts/api.js";
app.registerExtension({
name: "TangoFlux.playAudio",
async beforeRegisterNodeDef(nodeType, nodeData, app) {
if (nodeData.name === "TangoFluxVAEDecodeAndPlay") {
const originalNodeCreated = nodeType.prototype.onNodeCreated;
nodeType.prototype.onNodeCreated = async function () {
originalNodeCreated?.apply(this, arguments);
this.widgets_count = this.widgets?.length || 0;
this.addAudioWidgets = (audios) => {
if (this.widgets) {
for (let i = 0; i < this.widgets.length; i++) {
if (this.widgets[i].name.startsWith("_playaudio")) {
this.widgets[i].onRemove?.();
}
}
this.widgets.length = this.widgets_count;
}
let index = 0
for (const params of audios) {
const audioElement = document.createElement("audio");
audioElement.controls = true;
this.addDOMWidget("_playaudio" + index, "playaudio", audioElement, {
serialize: false,
hideOnZoom: false,
});
audioElement.src = api.apiURL(
`/tangoflux/playaudio?${new URLSearchParams(params)}`
);
index++
}
requestAnimationFrame(() => {
const newSize = this.computeSize();
newSize[0] = Math.max(newSize[0], this.size[0]);
newSize[1] = Math.max(newSize[1], this.size[1]);
this.onResize?.(newSize);
app.graph.setDirtyCanvas(true, false);
});
};
};
const originalNodeExecuted = nodeType.prototype.onExecuted;
nodeType.prototype.onExecuted = async function (message) {
originalNodeExecuted?.apply(this, arguments);
if (message?.audios) {
this.addAudioWidgets(message.audios);
}
};
}
},
});