/** * @file Default settings: behavior */ import type { SettingDefinition } from "../types"; export const behaviorSettings = [ { key: "behavior.doubleClickToEdit", label: "Double Click to Edit", description: "Double click nodes to edit properties", category: "behavior", type: "boolean", defaultValue: true, order: 1, }, { key: "behavior.autoConnect", label: "Auto Connect", description: "Automatically connect compatible ports when dragging", category: "behavior", type: "boolean", defaultValue: true, order: 2, }, { key: "behavior.smoothAnimations", label: "Smooth Animations", description: "Enable smooth animations for transitions", category: "behavior", type: "boolean", defaultValue: true, order: 3, }, { key: "behavior.dragThreshold", label: "Drag Threshold", description: "Minimum distance to start dragging (pixels)", category: "behavior", type: "number", defaultValue: 5, min: 1, max: 20, order: 4, }, { key: "behavior.connectionStyle", label: "Connection Style", description: "Style of connection lines", category: "behavior", type: "select", defaultValue: "curved", options: [ { value: "straight", label: "Straight" }, { value: "curved", label: "Curved" }, { value: "orthogonal", label: "Orthogonal" }, ], order: 5, }, { key: "behavior.connectionControlPointRounding", label: "Connection Control Point Rounding", description: "How connection curves choose their initial direction from ports", category: "behavior", type: "select", defaultValue: "port-side", options: [ { value: "snap-90", label: "Snap 90° (dominant axis)" }, { value: "port-side", label: "Port side (fixed direction)" }, { value: "horizontal", label: "Horizontal" }, { value: "vertical", label: "Vertical" }, { value: "vector", label: "Vector (no snapping)" }, ], order: 6, }, { key: "behavior.connectionHandleOffsetMin", label: "Connection Handle Offset Min", description: "Minimum handle offset distance for bezier connections (pixels)", category: "behavior", type: "number", defaultValue: 40, min: 0, max: 400, step: 1, order: 7, }, { key: "behavior.connectionHandleOffsetMax", label: "Connection Handle Offset Max", description: "Maximum handle offset distance for bezier connections (pixels)", category: "behavior", type: "number", defaultValue: 120, min: 0, max: 600, step: 1, order: 8, }, { key: "behavior.selectionMode", label: "Selection Mode", description: "How to select multiple nodes", category: "behavior", type: "select", defaultValue: "click", options: [ { value: "click", label: "Click with Modifier" }, { value: "drag", label: "Drag Selection Box" }, ], order: 9, }, { key: "behavior.wheelZoomSensitivity", label: "Zoom Sensitivity", description: "Mouse wheel zoom sensitivity", category: "behavior", type: "range", defaultValue: 1, min: 0.1, max: 3, step: 0.1, order: 10, }, { key: "behavior.nodeSearchViewMode", label: "Node Search View Mode", description: "View mode for the node search menu", category: "behavior", type: "select", defaultValue: "list", options: [ { value: "list", label: "List" }, { value: "split", label: "Split Pane" }, ], order: 11, }, { key: "behavior.nodeSearchFilterMode", label: "Node Search Filter Mode", description: "How to display search results: filter hides non-matching nodes, highlight shows all with matches emphasized", category: "behavior", type: "select", defaultValue: "filter", options: [ { value: "filter", label: "Filter (hide non-matching)" }, { value: "highlight", label: "Highlight (show all, emphasize matches)" }, ], order: 12, }, { key: "behavior.nodeSearchMenuWidth", label: "Node Search Menu Width", description: "Minimum width of the node search menu in pixels", category: "behavior", type: "number", defaultValue: 360, min: 280, max: 800, order: 13, }, ] as const satisfies readonly SettingDefinition[];