IPluginSettings
w
[ int, required ]
Width of the expand panel.
h
[ int, required ]
Height of the expand panel.
nodeConstraint
[ NodeConstraints | None, default: None ]
Specify when the plugin will be shown.
- If set to 
none, the plugin will always be shown. - If set to 
anyNode, the plugin will be shown when any node is selected. - If set to 
singleNode, the plugin will be shown when only one node is selected. - If set to 
multiNode, the plugin will be shown when more than one node is selected. - Otherwise, the plugin will be shown when the selected node is of the specified type.
 
class NodeConstraints(str, Enum):
    # single node
    SVG = "svg"
    TEXT = "text"
    IMAGE = "image"
    PATH = "path"
    NOLI_FRAME = "noliFrame"
    NOLI_TEXT_FRAME = "noliTextFrame"
    # group
    GROUP = "group"
    # special
    NONE = "none"
    ANY_NODE = "anyNode"
    SINGLE_NODE = "singleNode"
    MULTI_NODE = "multiNode"
nodeConstraintRules
[ NodeConstraintRules | None, default: None ]
Specify the complex rule of the node constraint.
Will work together with nodeConstraint, but it is often not necessary to use nodeConstraint when this field is set.
NodeConstraintRules
some[ List[NodeConstraints] | None, default:
None]Some of the constraints must be satisfied.
every[ NodeConstraints] | None, default:
None]Every constraint must be satisfied.
exactly[ NodeConstraints] | None, default:
None]The exact constraints. This is useful when we want to constrain certain number of nodes as well as their types.
nodeConstraintValidator
[ str | None, default: None ]
The universal fallback.
It specifies the name of the validator registered by register_node_validator. This is used when the nodeConstraint and nodeConstraintRules cannot represent the desired constraint.
For example, if we want to display the plugin only if the selected Node is a Text and its text is "Hello World", we can do the following:
@register_node_validator("hello_world")
def validate_variation(data: ISocketRequest) -> bool:
    if data.nodeData.type != SingleNodeType.TEXT:
        return False
    return data.nodeData.text == "Hello World"
class Plugin(IFieldsPlugin):
    @property
    def settings(self) -> IPluginSettings:
        return IPluginSettings(
            ...,
            nodeConstraintValidator="hello_world",
        )
Check here for the API reference of SingleNodeType.
src
[ str | None, default: None ]
The image url that will be shown for the plugin.
If not specified, we will use a default plugin-ish image.
tooltip
[ str | None, default: None ]
The tooltip that will be shown for the plugin.
It is recommended to specify an informative tooltip, but it's also OK to leave it as None, in which case we will not show any tooltip for the plugin.
pivot
[ PivotType | None, default: None ]
Pivot of the plugin.
- If 
followis set totrue, the plugin will be shown at the pivot of the selected node. - Otherwise, the plugin will be shown at the pivot of the entire drawboard 🎨.
 
class PivotType(str, Enum):
    LT = "lt"
    TOP = "top"
    RT = "rt"
    LEFT = "left"
    CENTER = "center"
    RIGHT = "right"
    LB = "lb"
    BOTTOM = "bottom"
    RB = "rb"
See Pivot for more details.
follow
[ bool, default: False ]
Whether the plugin follows the selecting Node.
expandOffsetX
[ int | None, default: None ]
X offset of the expand panel.
expandOffsetY
[ int | None, default: None ]
Y offset of the expand panel.
iconW
[ int | None, default: None ]
Width of the plugin button.
iconH
[ int | None, default: None ]
Height of the plugin button.
offsetX
[ int | None, default: None ]
X offset of the plugin button.
offsetY
[ int | None, default: None ]
Y offset of the plugin button.
bgOpacity
[ float | None, default: None ]
Background opacity of the plugin button.
useModal
[ bool, default: False ]
Whether the expand panel should be a modal.
keepOpen
[ bool, default: False ]
Whether should we keep the expand panel of the plugin open, even when users already clicked on the drawboard.
expandOpacity
[ float | None, default: None ]
Background opacity of the expand panel.
expandProps
[ IChakra | None, default: None ]
Extra chakra props of the expand panel.
pluginInfo
[ IPluginInfo, default: IPluginInfo() ]
Plugin info.
Check here for the detailed API reference.
buttonProps
[ Dict[str, Any] | None, default: None ]
Extra (chakra) props of the plugin button.
no_offload
[ bool, default: False ]
Whether not to offload the plugin to sub-thread when it is executed, useful when you know the plugin is fast enough.
This is introduced mainly because some libraries (e.g., matplotlib) need to be executed in the main thread.