Spaces:
Paused
Paused
| import { app } from "../../scripts/app.js"; | |
| import { RgthreeBaseServerNode } from "./base_node.js"; | |
| import { NodeTypesString } from "./constants.js"; | |
| class ImageInsetCrop extends RgthreeBaseServerNode { | |
| constructor(title = ImageInsetCrop.title) { | |
| super(title); | |
| } | |
| onAdded(graph) { | |
| const measurementWidget = this.widgets[0]; | |
| let callback = measurementWidget.callback; | |
| measurementWidget.callback = (...args) => { | |
| this.setWidgetStep(); | |
| callback && callback.apply(measurementWidget, [...args]); | |
| }; | |
| this.setWidgetStep(); | |
| } | |
| configure(info) { | |
| super.configure(info); | |
| this.setWidgetStep(); | |
| } | |
| setWidgetStep() { | |
| const measurementWidget = this.widgets[0]; | |
| for (let i = 1; i <= 4; i++) { | |
| if (measurementWidget.value === "Pixels") { | |
| this.widgets[i].options.step = 80; | |
| this.widgets[i].options.max = ImageInsetCrop.maxResolution; | |
| } | |
| else { | |
| this.widgets[i].options.step = 10; | |
| this.widgets[i].options.max = 99; | |
| } | |
| } | |
| } | |
| async handleAction(action) { | |
| if (action === "Reset Crop") { | |
| for (const widget of this.widgets) { | |
| if (["left", "right", "top", "bottom"].includes(widget.name)) { | |
| widget.value = 0; | |
| } | |
| } | |
| } | |
| } | |
| static setUp(comfyClass, nodeData) { | |
| RgthreeBaseServerNode.registerForOverride(comfyClass, nodeData, ImageInsetCrop); | |
| } | |
| } | |
| ImageInsetCrop.title = NodeTypesString.IMAGE_INSET_CROP; | |
| ImageInsetCrop.type = NodeTypesString.IMAGE_INSET_CROP; | |
| ImageInsetCrop.comfyClass = NodeTypesString.IMAGE_INSET_CROP; | |
| ImageInsetCrop.exposedActions = ["Reset Crop"]; | |
| ImageInsetCrop.maxResolution = 8192; | |
| app.registerExtension({ | |
| name: "rgthree.ImageInsetCrop", | |
| async beforeRegisterNodeDef(nodeType, nodeData, _app) { | |
| if (nodeData.name === NodeTypesString.IMAGE_INSET_CROP) { | |
| ImageInsetCrop.setUp(nodeType, nodeData); | |
| } | |
| }, | |
| }); | |