(ctx context.Context, data wshrpc.CommandCreateBlockData)
| 223 | } |
| 224 | |
| 225 | func (ws *WshServer) CreateBlockCommand(ctx context.Context, data wshrpc.CommandCreateBlockData) (*waveobj.ORef, error) { |
| 226 | ctx = waveobj.ContextWithUpdates(ctx) |
| 227 | tabId := data.TabId |
| 228 | blockData, err := wcore.CreateBlock(ctx, tabId, data.BlockDef, data.RtOpts) |
| 229 | if err != nil { |
| 230 | return nil, fmt.Errorf("error creating block: %w", err) |
| 231 | } |
| 232 | var layoutAction *waveobj.LayoutActionData |
| 233 | if data.TargetBlockId != "" { |
| 234 | switch data.TargetAction { |
| 235 | case "replace": |
| 236 | layoutAction = &waveobj.LayoutActionData{ |
| 237 | ActionType: wcore.LayoutActionDataType_Replace, |
| 238 | TargetBlockId: data.TargetBlockId, |
| 239 | BlockId: blockData.OID, |
| 240 | Focused: data.Focused, |
| 241 | } |
| 242 | err = wcore.DeleteBlock(ctx, data.TargetBlockId, false) |
| 243 | if err != nil { |
| 244 | return nil, fmt.Errorf("error deleting block (trying to do block replace): %w", err) |
| 245 | } |
| 246 | case "splitright": |
| 247 | layoutAction = &waveobj.LayoutActionData{ |
| 248 | ActionType: wcore.LayoutActionDataType_SplitHorizontal, |
| 249 | BlockId: blockData.OID, |
| 250 | TargetBlockId: data.TargetBlockId, |
| 251 | Position: "after", |
| 252 | Focused: data.Focused, |
| 253 | } |
| 254 | case "splitleft": |
| 255 | layoutAction = &waveobj.LayoutActionData{ |
| 256 | ActionType: wcore.LayoutActionDataType_SplitHorizontal, |
| 257 | BlockId: blockData.OID, |
| 258 | TargetBlockId: data.TargetBlockId, |
| 259 | Position: "before", |
| 260 | Focused: data.Focused, |
| 261 | } |
| 262 | case "splitup": |
| 263 | layoutAction = &waveobj.LayoutActionData{ |
| 264 | ActionType: wcore.LayoutActionDataType_SplitVertical, |
| 265 | BlockId: blockData.OID, |
| 266 | TargetBlockId: data.TargetBlockId, |
| 267 | Position: "before", |
| 268 | Focused: data.Focused, |
| 269 | } |
| 270 | case "splitdown": |
| 271 | layoutAction = &waveobj.LayoutActionData{ |
| 272 | ActionType: wcore.LayoutActionDataType_SplitVertical, |
| 273 | BlockId: blockData.OID, |
| 274 | TargetBlockId: data.TargetBlockId, |
| 275 | Position: "after", |
| 276 | Focused: data.Focused, |
| 277 | } |
| 278 | default: |
| 279 | return nil, fmt.Errorf("invalid target action: %s", data.TargetAction) |
| 280 | } |
| 281 | } else { |
| 282 | layoutAction = &waveobj.LayoutActionData{ |
no test coverage detected