File size: 1,913 Bytes
028694a
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
import { app } from '../../../scripts/app.js'

function addResizeHook(node, padding, useOldMin=false) {
    let origOnCreated = node.onNodeCreated
    node.onNodeCreated = function() {
        let r = origOnCreated?.apply(this, arguments)
        let size = this.computeSize();
        size[0] += padding || 0;
        if (useOldMin) {
            //equal to LiteGraph.NODE_WIDTH*1.5*1.5
            size[0] = Math.max(size[0], 315)
        }
        this.setSize(size);
        return r
    }
}

app.registerExtension({
    name: "AdvancedControlNet.autosize",
    async beforeRegisterNodeDef(nodeType, nodeData, app) {
        //since python_module is based off folder path,
        //it could be changed by users and should only be used as fallback
        if (nodeData?.name?.startsWith("ACN_")
            || nodeData.python_module == 'custom_nodes.ComfyUI-Advanced-ControlNet') {
            if (nodeData?.input?.hidden?.autosize) {
                addResizeHook(nodeType.prototype, nodeData.input.hidden.autosize[1]?.padding)
            } else if (!nodeData?.input?.optional?.autosize) {
                addResizeHook(nodeType.prototype, 0, true)
            }
        }
    },
    async getCustomWidgets() {
        return {
            ACNAUTOSIZE(node, inputName, inputData) {
                let w = {
                    name : inputName,
                    type : "ACN.AUTOSIZE",
                    value : "",
                    options : {"serialize": false},
                    computeSize : function(width) {
                        return [0, -4];
                    }
                }
                if (!node.widgets) {
                    node.widgets = []
                }
                node.widgets.push(w)
                addResizeHook(node, inputData[1].padding);
                return w;
            }
        }
    }
});