| 65 | registerCustomNodes() { |
| 66 | class PresetTextNode extends LiteGraph.LGraphNode { |
| 67 | constructor() { |
| 68 | super(); |
| 69 | this.title = "Preset Text 🐍"; |
| 70 | this.isVirtualNode = true; |
| 71 | this.serialize_widgets = true; |
| 72 | this.addOutput("text", "STRING"); |
| 73 | |
| 74 | const widget = this.addWidget("combo", "value", presets[0].name, () => {}, { |
| 75 | values: presets.map((p) => p.name), |
| 76 | }); |
| 77 | this.addWidget("button", "Manage", "Manage", () => { |
| 78 | const container = document.createElement("div"); |
| 79 | Object.assign(container.style, { |
| 80 | display: "grid", |
| 81 | gridTemplateColumns: "1fr 1fr", |
| 82 | gap: "10px", |
| 83 | }); |
| 84 | |
| 85 | const addNew = document.createElement("button"); |
| 86 | addNew.textContent = "Add New"; |
| 87 | addNew.classList.add("pysssss-presettext-addnew"); |
| 88 | Object.assign(addNew.style, { |
| 89 | fontSize: "13px", |
| 90 | gridColumn: "1 / 3", |
| 91 | color: "dodgerblue", |
| 92 | width: "auto", |
| 93 | textAlign: "center", |
| 94 | }); |
| 95 | addNew.onclick = () => { |
| 96 | addRow({ name: "", value: "" }); |
| 97 | }; |
| 98 | container.append(addNew); |
| 99 | |
| 100 | function addRow(p) { |
| 101 | const name = document.createElement("input"); |
| 102 | const nameLbl = document.createElement("label"); |
| 103 | name.value = p.name; |
| 104 | nameLbl.textContent = "Name:"; |
| 105 | nameLbl.append(name); |
| 106 | |
| 107 | const value = document.createElement("input"); |
| 108 | const valueLbl = document.createElement("label"); |
| 109 | value.value = p.value; |
| 110 | valueLbl.textContent = "Value:"; |
| 111 | valueLbl.append(value); |
| 112 | |
| 113 | addNew.before(nameLbl, valueLbl); |
| 114 | } |
| 115 | for (const p of presets) { |
| 116 | addRow(p); |
| 117 | } |
| 118 | |
| 119 | const help = document.createElement("span"); |
| 120 | help.textContent = "To remove a preset set the name or value to blank"; |
| 121 | help.style.gridColumn = "1 / 3"; |
| 122 | container.append(help); |
| 123 | |
| 124 | dialog.show(""); |