More things

This commit is contained in:
space-nuko
2023-05-08 03:45:22 -05:00
parent e6172b0648
commit dd00cf52b5
5 changed files with 39 additions and 6 deletions

View File

@@ -11,8 +11,7 @@ export class ComfyQueueEvents extends ComfyGraphNode {
static slotLayout: SlotLayout = { static slotLayout: SlotLayout = {
outputs: [ outputs: [
{ name: "beforeQueued", type: BuiltInSlotType.EVENT }, { name: "beforeQueued", type: BuiltInSlotType.EVENT },
{ name: "afterQueued", type: BuiltInSlotType.EVENT }, { name: "afterQueued", type: BuiltInSlotType.EVENT }
{ name: "prompt", type: "*" }
], ],
} }

View File

@@ -51,6 +51,11 @@ export default class ComfyValueControl extends ComfyGraphNode {
} }
} }
delayChangeEvent: boolean = true;
private _aboutToChange: number = 0;
private _aboutToChangeValue: any = null;
constructor(title?: string) { constructor(title?: string) {
super(title); super(title);
} }
@@ -60,6 +65,16 @@ export default class ComfyValueControl extends ComfyGraphNode {
this.setProperty("min", this.getInputData(3)) this.setProperty("min", this.getInputData(3))
this.setProperty("max", this.getInputData(4)) this.setProperty("max", this.getInputData(4))
this.setProperty("step", this.getInputData(5) || 1) this.setProperty("step", this.getInputData(5) || 1)
if (this._aboutToChange > 0) {
this._aboutToChange -= 1;
if (this._aboutToChange <= 0) {
const value = this._aboutToChangeValue;
this._aboutToChange = 0;
this._aboutToChangeValue = null;
this.triggerSlot(1, value)
}
}
} }
override onAction(action: any, param: any) { override onAction(action: any, param: any) {
@@ -95,9 +110,16 @@ export default class ComfyValueControl extends ComfyGraphNode {
v = clamp(v, min, max) v = clamp(v, min, max)
this.setProperty("value", v) this.setProperty("value", v)
this.triggerSlot(1, v)
this.setOutputData(0, v) this.setOutputData(0, v)
if (this.delayChangeEvent) {
this._aboutToChange = 2;
this._aboutToChangeValue = v;
}
else {
this.triggerSlot(1, v)
}
console.debug("ValueControl", v, this.properties) console.debug("ValueControl", v, this.properties)
}; };
} }

View File

@@ -26,6 +26,11 @@ import RadioWidget from "$lib/widgets/RadioWidget.svelte";
* attribute and set `validNodeTypes` to the type of the litegraph node * attribute and set `validNodeTypes` to the type of the litegraph node
* - Add a new entry in the `values` array, like "knob" or "dial" for ComfySliderWidget * - Add a new entry in the `values` array, like "knob" or "dial" for ComfySliderWidget
* - Add an {#if widget.attrs.variant === <...>} statement in the corresponding Svelte component * - Add an {#if widget.attrs.variant === <...>} statement in the corresponding Svelte component
*
* Also, BEWARE of calling setOutputData() and triggerSlot() on the same frame!
* You will have to either implement an internal delay on the event triggering
* or use an Event Delay node to ensure the output slot data can propagate to
* the rest of the graph first (see `delayChangedEvent` for details)
*/ */
export interface ComfyWidgetProperties extends ComfyGraphNodeProperties { export interface ComfyWidgetProperties extends ComfyGraphNodeProperties {

View File

@@ -327,6 +327,13 @@ const ALL_ATTRIBUTES: AttributesSpecList = [
defaultValue: 100, defaultValue: 100,
editable: true editable: true
}, },
{
name: "height",
type: "string",
location: "widget",
defaultValue: "auto",
editable: true
},
{ {
name: "classes", name: "classes",
type: "string", type: "string",

View File

@@ -36,8 +36,8 @@
}; };
let style: Styles = { let style: Styles = {
// grid_cols: [2], grid_cols: [4],
grid: [3], grid_rows: [4],
// object_fit: "cover", // object_fit: "cover",
} }
let element: HTMLDivElement; let element: HTMLDivElement;
@@ -126,7 +126,7 @@
{#if widget && node && nodeValue && $nodeValue != null} {#if widget && node && nodeValue && $nodeValue != null}
{#if widget.attrs.variant === "image"} {#if widget.attrs.variant === "image"}
<div class="wrapper comfy-image-widget" bind:this={element}> <div class="wrapper comfy-image-widget" style="height: {widget.attrs.height || 'auto'}" bind:this={element}>
<Block variant="solid" padding={false}> <Block variant="solid" padding={false}>
{#if widget.attrs.title} {#if widget.attrs.title}
<BlockLabel <BlockLabel