Spaces:
Configuration error
Configuration error
import { app } from "../../../scripts/app.js"; | |
app.registerExtension({ | |
name: "easy bookmark", | |
registerCustomNodes() { | |
class Bookmark { | |
type = 'easy bookmark' | |
title = "π"; | |
slot_start_y = -20; | |
___collapsed_width = 0; | |
get _collapsed_width() { | |
return this.___collapsed_width; | |
} | |
set _collapsed_width(width){ | |
const canvas = app.canvas ; | |
const ctx = canvas.canvas.getContext('2d'); | |
if(ctx){ | |
const oldFont = ctx.font; | |
ctx.font = canvas.title_text_font; | |
this.___collapsed_width = 40 + ctx.measureText(this.title).width; | |
ctx.font = oldFont; | |
} | |
} | |
isVirtualNode = true; | |
serialize_widgets = true; | |
keypressBound = null; | |
constructor() { | |
this.addWidget('text', 'shortcut_key', '1', (value) => { | |
value = value.trim()[0] || '1'; | |
if(value !== ''){ | |
this.title = "π " + value; | |
} | |
},{ | |
y: 8, | |
}); | |
this.addWidget('number', 'zoom', 1, (value) => {}, { | |
y: 8 + LiteGraph.NODE_WIDGET_HEIGHT + 4, | |
max: 2, | |
min: 0.5, | |
precision: 2, | |
}); | |
this.keypressBound = this.onKeypress.bind(this); | |
} | |
onAdded(){ | |
setTimeout(_=>{ | |
const value = this.widgets[0].value | |
if(value){ | |
this.title = "π " + value; | |
} | |
},1) | |
window.addEventListener("keydown", this.keypressBound); | |
} | |
onRemoved() { | |
window.removeEventListener("keydown", this.keypressBound); | |
} | |
onKeypress(event){ | |
const target = event.target; | |
if (['input','textarea'].includes(target.localName)) { | |
return; | |
} | |
if (this.widgets[0] && event.key.toLocaleLowerCase() === this.widgets[0].value.toLocaleLowerCase()) { | |
this.canvasToBookmark(); | |
} | |
} | |
canvasToBookmark() { | |
const canvas = app.canvas; | |
// ComfyUI seemed to break us again, but couldn't repro. No reason to not check, I guess. | |
// https://github.com/rgthree/rgthree-comfy/issues/71 | |
if (canvas?.ds?.offset) { | |
canvas.ds.offset[0] = -this.pos[0] + 16; | |
canvas.ds.offset[1] = -this.pos[1] + 40; | |
} | |
if (canvas?.ds?.scale != null) { | |
canvas.ds.scale = Number(this.widgets[1].value || 1); | |
} | |
canvas.setDirty(true, true); | |
} | |
} | |
LiteGraph.registerNodeType( | |
"easy bookmark", | |
Object.assign(Bookmark,{ | |
title: "Bookmark π", | |
}) | |
); | |
Bookmark.category = "EasyUse/Util" | |
} | |
}) |