--- title: "Toolbar Items" output: rmarkdown::html_vignette vignette: > %\VignetteIndexEntry{Toolbar Items} %\VignetteEngine{quarto::html} %\VignetteEncoding{UTF-8} --- ```{r, include = FALSE} knitr::opts_chunk$set( collapse = TRUE, comment = "#>", eval = FALSE ) ``` ```{r setup} library(blockr.dag) ``` The __toolbar__ provides quick access to common graph operations. ## Available Actions The toolbar includes several default operations: - **Zoom in/out** - Navigate large workflows. - **Auto fit** - Fit entire graph to view. - **Layout** - Reset graph layout. - **Add block** - Trigger create new blocks. - **Add stack** - Trigger create stack. - **Remove selected** - Delete selected elements (can be stacks, blocks and links) ## Creating Toolbar Items Toolbar items are declared via `new_toolbar_item()`: ```{r} # Toolbar item item <- new_toolbar_item( id = "custom_tool", icon = "icon-custom", js = "console.log('Custom tool clicked')", action = function(board, update, ...) { # Server-side logic } ) ``` `js` can be a string representing a JavaScript function or an R function that takes the namespace `ns` as input and returns a string: ```r function(ns) { sprintf( "(value, target, current) => { Shiny.setInputValue('%s', true, {priority: 'event'}); }", ns("add_block") ) } ``` Any new item has to go inside `toolbar_items.dag_extension` for registration: ```r toolbar_items.dag_extension <- function(x) { list( item ) ```