% Generated by roxygen2: do not edit by hand
% Please edit documentation in R/mermaid.R
\name{mermaid}
\alias{mermaid}
\title{R + mermaid.js}
\usage{
mermaid(diagram = "", ..., width = NULL, height = NULL)
}
\arguments{
\item{diagram}{Diagram in mermaid markdown-like language or file (as a
connection or file name) containing a diagram specification. If no diagram
is provided \code{diagram = ""} then the function will assume that a diagram
will be provided by \code{\link[htmltools:builder]{htmltools::tags()}} and \code{DiagrammeR} is just being used
for dependency injection.}

\item{...}{Other arguments and parameters you would like to send to
JavaScript.}

\item{width}{The width of the resulting graphic in pixels.}

\item{height}{The height of the resulting graphic in pixels.}
}
\value{
An object of class \code{htmlwidget} that will intelligently print itself
into HTML in a variety of contexts including the R console, within R
Markdown documents, and within Shiny output bindings.
}
\description{
Make diagrams in R using
\href{https://github.com/mermaid-js/mermaid/wiki}{mermaid.js} with
infrastructure provided by \href{http://www.htmlwidgets.org/}{htmlwidgets}.
}
\examples{
# Create a simple graph running left to right (note
# that the whitespace is not important)
# DiagrammeR("
#   graph LR
#     A-->B
#     A-->C
#     C-->E
#     B-->D
#     C-->D
#     D-->F
#     E-->F
# ")

# Create the equivalent graph but have it running
# from top to bottom
# DiagrammeR("
#    graph TB
#    A-->B
#    A-->C
#    C-->E
#    B-->D
#    C-->D
#    D-->F
#    E-->F
# ")

# Create a graph with different node shapes and
# provide fill styles for each node
# DiagrammeR("graph LR;A(Rounded)-->B[Squared];B-->C{A Decision};
#  C-->D[Square One];C-->E[Square Two];
#  style A fill:#E5E25F;  style B fill:#87AB51; style C fill:#3C8937;
#  style D fill:#23772C;  style E fill:#B6E6E6;"
# )

# Load in the 'mtcars' dataset
# data(mtcars)
# connections <- sapply(
#  1:ncol(mtcars)
#   ,function(i) {
#      paste0(
#         i
#       ,"(",colnames(mtcars)[i],")---"
#       ,i,"-stats("
#       ,paste0(
#         names(summary(mtcars[,i]))
#         ,": "
#         ,unname(summary(mtcars[,i]))
#         ,collapse="<br/>"
#       )
#       ,")"
#    )
#  }
# )

# Create a diagram using the 'connections' object
# DiagrammeR(
#    paste0(
#      "graph TD;", "\n",
#      paste(connections, collapse = "\n"),"\n",
#      "classDef column fill:#0001CC, stroke:#0D3FF3, stroke-width:1px;" ,"\n",
#      "class ", paste0(1:length(connections), collapse = ","), " column;"
#    )
#  )

# Also with `DiagrammeR()`, you can use tags
# from `htmltools` (just make sure to use
# `class = "mermaid"`)
library(htmltools)
# diagramSpec = "
# graph LR;
#   id1(Start)-->id2(Stop);
#   style id1 fill:#f9f,stroke:#333,stroke-width:4px;
#   style id2 fill:#ccf,stroke:#f66,stroke-width:2px,stroke-dasharray: 5, 5;
# "
# html_print(tagList(
#   tags$h1("R + mermaid.js = Something Special")
#   ,tags$pre(diagramSpec)
#   ,tags$div(class="mermaid", diagramSpec)
#   ,DiagrammeR()
# ))

# Create a sequence diagram
# DiagrammeR("
# sequenceDiagram;
#    customer->>ticket seller: ask for a ticket;
#    ticket seller->>database: seats;
#    alt tickets available
#      database->>ticket seller: ok;
#      ticket seller->>customer: confirm;
#      customer->>ticket seller: ok;
#      ticket seller->>database: book a seat;
#      ticket seller->>printer: print a ticket;
#    else sold out
#      database->>ticket seller: none left;
#      ticket seller->>customer: sorry;
#    end
# ")

}
