[
  {
    "path": ".Rbuildignore",
    "content": "^CRAN-RELEASE$\n^node_modules$\n^js-tests$\n^srcjs$\n^pkgdown$\n^assets$\n^.*\\.Rproj$\n^CONDUCT\\.md$\n^README\\.Rmd$\n^\\.Rproj\\.user$\n^buildupdate$\n^docs$\n^cran-comments\\.md$\n^logo.svg$\n^package\\.json$\n^vite\\.config\\.js$\n^package-lock\\.json$\n^logo\\.svg$\n^\\.github$\n^CRAN-SUBMISSION$\n"
  },
  {
    "path": ".gitattributes",
    "content": "/inst/www/react-tools/react-tools.js binary\n/inst/www/react-tools/react-tools.js.map binary\n"
  },
  {
    "path": ".github/.gitignore",
    "content": "*.html\n"
  },
  {
    "path": ".github/workflows/R-CMD-check.yaml",
    "content": "# Workflow derived from https://github.com/r-lib/actions/tree/v2/examples\n# Need help debugging build failures? Start at https://github.com/r-lib/actions#where-to-find-help\non:\n  push:\n    branches: [main, master]\n  pull_request:\n    branches: [main, master]\n\nname: R-CMD-check\n\njobs:\n  R-CMD-check:\n    runs-on: ${{ matrix.config.os }}\n\n    name: ${{ matrix.config.os }} (${{ matrix.config.r }})\n\n    strategy:\n      fail-fast: false\n      matrix:\n        config:\n          - {os: macos-latest,   r: 'release'}\n          - {os: windows-latest, r: 'release'}\n          - {os: ubuntu-latest,   r: 'devel', http-user-agent: 'release'}\n          - {os: ubuntu-latest,   r: 'release'}\n          - {os: ubuntu-latest,   r: 'oldrel-1'}\n\n    env:\n      GITHUB_PAT: ${{ secrets.GITHUB_TOKEN }}\n      R_KEEP_PKG_SOURCE: yes\n\n    steps:\n      - uses: actions/checkout@v3\n\n      - uses: r-lib/actions/setup-pandoc@v2\n\n      - uses: r-lib/actions/setup-r@v2\n        with:\n          r-version: ${{ matrix.config.r }}\n          http-user-agent: ${{ matrix.config.http-user-agent }}\n          use-public-rspm: true\n\n      - uses: r-lib/actions/setup-r-dependencies@v2\n        with:\n          extra-packages: any::rcmdcheck\n          needs: check\n\n      - uses: r-lib/actions/check-r-package@v2\n        with:\n          upload-snapshots: true\n"
  },
  {
    "path": ".gitignore",
    "content": "Meta\ndoc\n.Rproj.user\n.Rhistory\n.RData\n.Ruserdata\ninst/doc\nnode_modules\nreactR.Rcheck\nreactR_*.tar.gz\n*.swp\n.DS_Store\n"
  },
  {
    "path": "CONDUCT.md",
    "content": "# Contributor Code of Conduct\n\nAs contributors and maintainers of this project, we pledge to respect all people who \ncontribute through reporting issues, posting feature requests, updating documentation,\nsubmitting pull requests or patches, and other activities.\n\nWe are committed to making participation in this project a harassment-free experience for\neveryone, regardless of level of experience, gender, gender identity and expression,\nsexual orientation, disability, personal appearance, body size, race, ethnicity, age, or religion.\n\nExamples of unacceptable behavior by participants include the use of sexual language or\nimagery, derogatory comments or personal attacks, trolling, public or private harassment,\ninsults, or other unprofessional conduct.\n\nProject maintainers have the right and responsibility to remove, edit, or reject comments,\ncommits, code, wiki edits, issues, and other contributions that are not aligned to this \nCode of Conduct. Project maintainers who do not follow the Code of Conduct may be removed \nfrom the project team.\n\nInstances of abusive, harassing, or otherwise unacceptable behavior may be reported by \nopening an issue or contacting one or more of the project maintainers.\n\nThis Code of Conduct is adapted from the Contributor Covenant \n(http:contributor-covenant.org), version 1.0.0, available at \nhttp://contributor-covenant.org/version/1/0/0/\n"
  },
  {
    "path": "DESCRIPTION",
    "content": "Package: reactR\nType: Package\nTitle: React Helpers\nVersion: 0.6.1\nDate: 2024-09-14\nAuthors@R: c(\n      person(\n        \"Facebook\", \"Inc\"\n        , role = c(\"aut\", \"cph\")\n        , comment = \"React library in lib, https://reactjs.org/; see AUTHORS for full list of contributors\"\n      ),\n      person(\n        \"Michel\",\"Weststrate\",\n        , role = c(\"aut\", \"cph\")\n        , comment = \"mobx library in lib, https://github.com/mobxjs\"\n      ),\n      person(\n        \"Kent\", \"Russell\"\n        , role = c(\"aut\", \"cre\")\n        , comment = \"R interface\"\n        , email = \"kent.russell@timelyportfolio.com\"\n      ),\n      person(\n        \"Alan\", \"Dipert\"\n        , role = c(\"aut\")\n        , comment = \"R interface\"\n        , email = \"alan@rstudio.com\"\n      ),\n      person(\n        \"Greg\", \"Lin\"\n        , role = c(\"aut\")\n        , comment = \"R interface\"\n        , email = \"glin@glin.io\"\n      )\n    )\nMaintainer: Kent Russell <kent.russell@timelyportfolio.com>\nDescription: Make it easy to use 'React' in R with 'htmlwidget' scaffolds,\n              helper dependency functions, an embedded 'Babel' 'transpiler',\n              and examples.\nURL: https://github.com/react-R/reactR\nBugReports: https://github.com/react-R/reactR/issues\nLicense: MIT + file LICENSE\nLazyData: TRUE\nEncoding: UTF-8\nImports:\n    htmltools\nSuggests:\n    htmlwidgets (>= 1.5.3),\n    rmarkdown,\n    shiny,\n    V8,\n    knitr,\n    usethis,\n    jsonlite\nRoxygenNote: 7.3.2\nVignetteBuilder: knitr\n"
  },
  {
    "path": "LICENSE",
    "content": "YEAR: 2018\nCOPYRIGHT HOLDER: Kent Russell\n"
  },
  {
    "path": "NAMESPACE",
    "content": "# Generated by roxygen2: do not edit by hand\n\nS3method(\"$\",react_component_builder)\nS3method(\"$<-\",react_component_builder)\nS3method(\"[[\",react_component_builder)\nS3method(\"[[<-\",react_component_builder)\nexport(React)\nexport(babel_transform)\nexport(component)\nexport(createReactShinyInput)\nexport(html_dependency_corejs)\nexport(html_dependency_mobx)\nexport(html_dependency_react)\nexport(html_dependency_reacttools)\nexport(reactMarkup)\nexport(scaffoldReactShinyInput)\nexport(scaffoldReactWidget)\nimportFrom(htmltools,htmlDependency)\n"
  },
  {
    "path": "NEWS.md",
    "content": "# reactR 0.6.1\n\n* Fix issue where the `react-tools.umd.cjs` script could be blocked by the browser in some cases, such as apps deployed on shinyapps.io [#86](https://github.com/react-R/reactR/issues/86)\n\n# reactR 0.6.0\n\n* retain `list` in `reactR::component` classes [#82](https://github.com/react-R/reactR/issues/82)\n* hydrate props/attribs that are tags assuming tag-like props/attribs should be slots[#67](https://github.com/react-R/reactR/issues/67) [#61](https://github.com/react-R/reactR/issues/61)\n* update build tools to `vite` from `webpack`\n* update js testing library from `karma` to `vitest`\n\n\n# reactR 0.5.0\n\n* Update react to `18.2.0`\n\n# reactR 0.4.4\n\n* Update react to `16.12.0`\n\n* Add `style-loader` and `css-loader` to webpack config [pull 50](https://github.com/react-R/reactR/pull/50)\n\n* Update to `PACKAGE::widget_html.WIDGETNAME` for new `htmlwidgets` convention [pull 49](https://github.com/react-R/reactR/pull/49)\n\n* Clean up template [pull 45](https://github.com/react-R/reactR/pull/45)\n\n# reactR 0.4.3\n\n* Add element to Shiny input [pull 41](https://github.com/react-R/reactR/pull/41)\n\n* Upgrade npm dependencies\n\n# reactR 0.4.2\n\n* Update react to `16.12.0`\n\n* Update core-js to `2.6.11`\n\n# reactR 0.4.1\n\n* Add support for `shiny::registerInputHandler` in Shiny inputs; [pull 28](https://github.com/react-R/reactR/pull/28)\n\n* Add support for Shiny rate limit [pull 29](https://github.com/react-R/reactR/pull/29)\n\n* Update react to `16.8.6`\n\n* Add `mobx` dependencies available through `html_dependency_mobx()`\n\n# reactR 0.4.0\n\n* Add Shiny input scaffold and functionality; [tutorial](https://react-r.github.io/reactR/articles/intro_inputs.html) and [pull 22](https://github.com/react-R/reactR/pull/22) thanks @alandipert\n\n# reactR 0.3.1\n\n* Update react and react-dom to 16.8.1\n* Add `usethis` R dependency\n* Ignore node_modules in `.Rbuildignore` and `.gitignore`\n* Set `{modules:false}` in `babel_transform` to avoid `\"use strict\"`; [pull 15](https://github.com/react-R/reactR/pull/15)\n* Use webpack to build `react-tools.js`; [pull 16](https://github.com/react-R/reactR/pull/16)\n* Attach component to the htmlwidget\n\n# reactR 0.3.0\n\n* Add htmlwidget scaffold and helpers (see [tutorial](https://react-r.github.io/reactR/articles/intro_htmlwidgets.html))\n* Update react and react-dom to 16.6.7\n\n# reactR 0.2.1\n\n* Update react and react-dom to 16.6.0\n\n# reactR 0.2.0\n\n* Update react and react-dom to 16.2.0\n* Add core-js shim so that React will show up in RStudio Viewer\n\n# reactR 0.1.4\n\n* Update react and react-dom to 16.1.1\n\n# reactR 0.1.3\n\n* Update react and react-dom to 16.0.0\n* Update babel to 6.26.0\n\n# reactR 0.1.2\n\n* Update to react `15.5.0`\n* Update to babel `6.24.0`\n* Add fluent-ui(fabric) example\n* Build doc site with `pkgdown`\n\n# reactR 0.1.1\n\n* Added a `NEWS.md` file to track changes to the package.\n* Provide offline babel-standalone for babel_transform\n\n# reactR 0.1.0\n\n* Initial release\n\n\n\n"
  },
  {
    "path": "R/babel.R",
    "content": "#' Transform Code with Babel\n#'\n#' Helper function to use \\code{V8} with \\code{Babel} so we can\n#' avoid a JSX transformer with using \\code{reactR}.\n#'\n#' @param code \\code{character}\n#'\n#' @return transformed \\code{character}\n#' @export\n#'\n#' @examples\n#' \\dontrun{\n#' library(reactR)\n#' babel_transform('<div>react div</div>')\n#' }\nbabel_transform <- function(code=\"\"){\n  stopifnot(requireNamespace(\"V8\"), is.character(code))\n\n  ctx <- V8::v8()\n  ctx$source(\n    system.file(\n      \"www/babel/babel.min.js\",\n      package = \"reactR\"\n    )\n  )\n  ctx$assign('code', code)\n  ctx$get('Babel.transform(code,{ presets: [[\"es2015\", {modules: false}],\"react\"] }).code')\n}\n"
  },
  {
    "path": "R/dependencies.R",
    "content": "#' Dependencies for React\n#'\n#' Add JavaScript 'React' dependency.  For this to work in RStudio Viewer, also include\n#' \\code{\\link{html_dependency_corejs}}.\n#'\n#' @param offline \\code{logical} to use local file dependencies.  If \\code{FALSE},\n#'          then the dependencies use the Facebook cdn as its \\code{src}.\n#'          To use with \\code{JSX} see \\code{\\link{babel_transform}}.\n#'\n#' @return \\code{\\link[htmltools]{htmlDependency}}\n#' @importFrom htmltools htmlDependency\n#' @export\n#'\n#' @examples\n#' library(reactR)\n#' library(htmltools)\n#'\n#' tagList(\n#'   tags$script(\n#'   \"\n#'     ReactDOM.render(\n#'       React.createElement(\n#'         'h1',\n#'         null,\n#'         'Powered by React'\n#'       ),\n#'       document.body\n#'     )\n#'   \"\n#'   ),\n#'    #add core-js first to work in RStudio Viewer\n#'   html_dependency_corejs(),\n#'   html_dependency_react() #offline=FALSE for CDN\n#' )\nhtml_dependency_react <- function(offline=TRUE){\n  hd <- htmltools::htmlDependency(\n    name = \"react\",\n    version = react_version(),\n    src = system.file(\"www/react\",package=\"reactR\"),\n    script = c(\"react.min.js\", \"react-dom.min.js\")\n  )\n\n  if(!offline) {\n    hd$src <- list(href=\"//unpkg.com\")\n\n    hd$script <- c(\n      \"react/umd/react.production.min.js\",\n      \"react-dom/umd/react-dom.production.min.js\"\n    )\n  }\n\n  hd\n}\n\n\n#' Shim Dependency for React in RStudio Viewer\n#'\n#' Add this first for 'React' to work in RStudio Viewer.\n#'\n#' @return \\code{\\link[htmltools]{htmlDependency}}\n#' @importFrom htmltools htmlDependency\n#' @export\nhtml_dependency_corejs <- function() {\n  #shim/polyfill for ES5 and ES6 so react will show up in RStudio Viewer\n  #https://unpkg.com/core-js@2.5.3/\n  htmltools::htmlDependency(\n    name = \"core-js\",\n    version = \"2.5.3\",\n    src = c(file=system.file(\"www/core-js/\", package=\"reactR\")),\n    script = \"shim.min.js\"\n  )\n}\n\n#' Adds window.reactR.exposeComponents and window.reactR.hydrate\n#'\n#' @return \\code{\\link[htmltools]{htmlDependency}}\n#' @importFrom htmltools htmlDependency\n#' @export\nhtml_dependency_reacttools <- function(){\n  htmltools::htmlDependency(\n    name = \"reactwidget\",\n    src = \"www/react-tools\",\n    version = \"2.0.0\",\n    package = \"reactR\",\n    script = c(\"react-tools.js\")\n  )\n}\n\n#' Dependencies for 'mobx'\n#'\n#' Add JavaScript 'mobx' and 'mobx-react' dependency.  When using with 'react', the order\n#' of the dependencies is important, so please add \\code{html_dependency_react()} before\n#' \\code{html_dependency_mobx()}.\n#'\n#' @param react \\code{logical} to add react 'mobx' dependencies.\n#'\n#' @return \\code{\\link[htmltools]{htmlDependency}}\n#' @importFrom htmltools htmlDependency\n#' @export\n#'\n#' @examples\n#' if(interactive()) {\n#'\n#' library(htmltools)\n#' library(reactR)\n#'\n#' browsable(\n#'   tagList(\n#'     html_dependency_mobx(react = FALSE),\n#'     div(id=\"test\"),\n#'     tags$script(HTML(\n#' \"\n#'   var obs = mobx.observable({val: null})\n#'   mobx.autorun(function() {\n#'     document.querySelector('#test').innerText = obs.val\n#'   })\n#'   setInterval(\n#'     function() {obs.val++},\n#'     1000\n#'   )\n#' \"\n#'     ))\n#'   )\n#' )\n#' }\n#'\n#' \\dontrun{\n#' # use with react\n#' library(htmltools)\n#' library(reactR)\n#'\n#' browsable(\n#'   tagList(\n#'     html_dependency_react(),\n#'     html_dependency_mobx(),\n#'     div(id=\"test\"),\n#'     tags$script(HTML(babel_transform(\n#' \"\n#'   var obs = mobx.observable({val: null})\n#'   var App = mobxReact.observer((props) => <div>{props.obs.val}</div>)\n#'\n#'   ReactDOM.render(<App obs = {obs}/>, document.querySelector('#test'))\n#'\n#'   setInterval(\n#'     function() {obs.val++},\n#'     1000\n#'   )\n#' \"\n#'     )))\n#'   )\n#' )\n#' }\n\nhtml_dependency_mobx <- function(react = TRUE){\n  hd <- htmltools::htmlDependency(\n    name = \"mobx\",\n    version = \"4.11.0\",\n    src = system.file(\"www/mobx\",package=\"reactR\"),\n    script = c(\"mobx.umd.min.js\")\n  )\n\n  if(react) {\n     hd$script <- c(hd$script,\"mobx-react-lite.js\", \"mobx-react.umd.js\")\n  }\n\n  hd\n}\n"
  },
  {
    "path": "R/meta.R",
    "content": "#'@keywords internal\nreact_version <- function(){'18.2.0'}\nbabel_version <- function(){'6.26.0'}"
  },
  {
    "path": "R/reacttools.R",
    "content": "# A robust name string is a valid\n# - CSS class\n# - JavaScript variable name\n# - R variable name\nrobustName <- \"^[[:alpha:]_][[:alnum:]_]*$\"\n\nisUpper <- function(s) {\n  grepl(\"^[[:upper:]]+$\", s)\n}\n\n#' Create a React component\n#'\n#' @param name Name of the React component, which must start with an upper-case\n#'   character.\n#' @param varArgs Attributes and children of the element to pass along to\n#'   \\code{\\link[htmltools]{tag}} as \\code{varArgs}.\n#'\n#' @return An htmltools \\code{\\link[htmltools]{tag}} object\n#' @export\n#'\n#' @examples\n#' component(\"ParentComponent\",\n#'   list(\n#'     x = 1,\n#'     y = 2,\n#'     component(\"ChildComponent\"),\n#'     component(\"OtherChildComponent\")\n#'   )\n#' )\ncomponent <- function(name, varArgs = list()) {\n  if (length(name) == 0 || !isUpper(substring(name, 1, 1))) {\n    stop(\"Component name must be specified and start with an upper case character\")\n  }\n  component <- htmltools::tag(name, varArgs)\n  structure(component, class = c(\"reactR_component\", oldClass(component), \"list\"))\n}\n\n#' React component builder.\n#'\n#' \\code{React} is a syntactically-convenient way to create instances of React\n#' components that can be sent to the browser for display. It is a list for\n#' which \\link[=InternalMethods]{extract methods} are defined, allowing\n#' object creation syntax like \\code{React$MyComponent(x = 1)} where\n#' \\code{MyComponent} is a React component you have exposed to Shiny in\n#' JavaScript.\n#'\n#' Internally, the \\code{\\link{component}} function is used to create the\n#' component instance.\n#'\n#' @examples\n#' # Create an instance of ParentComponent with two children,\n#' # ChildComponent and OtherChildComponent.\n#' React$ParentComponent(\n#'   x = 1,\n#'   y = 2,\n#'   React$ChildComponent(),\n#'   React$OtherChildComponent()\n#' )\n#' @export\nReact <- structure(\n  list(),\n  class = \"react_component_builder\"\n)\n\n#' @export\n`$.react_component_builder` <- function(x, name) {\n  function(...) {\n    component(name, list(...))\n  }\n}\n\n#' @export\n`[[.react_component_builder` <- `$.react_component_builder`\n\n#' @export\n`$<-.react_component_builder` <- function(x, name, value) {\n  stop(\"Assigning to a component constructor is not allowed\")\n}\n\n#' @export\n`[[<-.react_component_builder` <- `$<-.react_component_builder`\n\n#' Prepare data that represents a single-element character vector, a React\n#' component, or an htmltools tag for sending to the client.\n#'\n#' Tag lists as returned by \\code{htmltools tagList} are not currently\n#' supported.\n#'\n#' @param tag character vector or React component or\n#'   \\code{\\link[htmltools]{tag}}\n#'\n#' @return A reactR markup object suitable for being passed to\n#'   \\code{\\link[htmlwidgets]{createWidget}} as widget instance data.\n#' @export\nreactMarkup <- function(tag) {\n  stopifnot(inherits(tag, \"shiny.tag\")\n            || (is.character(tag) && length(tag) == 1))\n  list(tag = tag, class = \"reactR_markup\")\n}\n\n#' Create a React-based input\n#'\n#' @param inputId The \\code{input} slot that will be used to access the value.\n#' @param class Space-delimited list of CSS class names that should identify\n#'   this input type in the browser.\n#' @param dependencies HTML dependencies to include in addition to those\n#'   supporting React. Must contain at least one dependency, that of the input's\n#'   implementation.\n#' @param default Initial value.\n#' @param configuration Static configuration data.\n#' @param container Function to generate an HTML element to contain the input.\n#'\n#' @return Shiny input suitable for inclusion in a UI.\n#' @export\n#'\n#' @examples\n#' myInput <- function(inputId, default = \"\") {\n#'   # The value of createReactShinyInput should be returned from input constructor functions.\n#'   createReactShinyInput(\n#'     inputId,\n#'     \"myinput\",\n#'     # At least one htmlDependency must be provided -- the JavaScript implementation of the input.\n#'     htmlDependency(\n#'       name = \"my-input\",\n#'       version = \"1.0.0\",\n#'       src = \"www/mypackage/myinput\",\n#'       package = \"mypackage\",\n#'       script = \"myinput.js\"\n#'     ),\n#'     default\n#'   )\n#' }\ncreateReactShinyInput <- function(inputId,\n                             class,\n                             dependencies,\n                             default = NULL,\n                             configuration = list(),\n                             container = htmltools::tags$div) {\n  if(length(dependencies) < 1) stop(\"Must include at least one HTML dependency.\")\n  value <- shiny::restoreInput(id = inputId, default = default)\n  htmltools::tagList(\n    html_dependency_corejs(),\n    html_dependency_react(),\n    html_dependency_reacttools(),\n    container(id = inputId, class = class),\n    htmltools::tags$script(id = sprintf(\"%s_value\", inputId),\n                           type = \"application/json\",\n                           jsonlite::toJSON(value, auto_unbox = TRUE, null = \"null\", force = TRUE)),\n    htmltools::tags$script(id = sprintf(\"%s_configuration\", inputId),\n                           type = \"application/json\",\n                           jsonlite::toJSON(configuration, auto_unbox = TRUE, null = \"null\", force = TRUE)),\n    dependencies\n  )\n}\n"
  },
  {
    "path": "R/scaffold_input.R",
    "content": "#' Create implementation scaffolding for a React.js-based Shiny input.\n#'\n#' Add the minimal code required to implement a React.js-based Shiny input to an\n#' R package.\n#'\n#' @param name Name of input\n#' @param npmPkgs Optional \\href{https://www.npmjs.com/}{NPM} packages upon which\n#'   this input is based which will be used to populate \\code{package.json}.\n#'   Should be a named list of names to\n#'   \\href{https://docs.npmjs.com/files/package.json/}{versions}.\n#' @param edit Automatically open the input's source files after creating the\n#'   scaffolding.\n#'\n#' @note This function must be executed from the root directory of the package\n#'   you wish to add the input to.\n#'\n#' @export\nscaffoldReactShinyInput <- function(name, npmPkgs = NULL, edit = interactive()) {\n  assertNameValid(name)\n  package <- getPackage()\n\n  file <- renderFile(\n    sprintf(\"R/%s.R\", name),\n    \"templates/input_r.txt\",\n    \"boilerplate for input constructor\",\n    list(\n      name = name,\n      capName = capitalize(name),\n      package = package\n    )\n  )\n  if (edit) fileEdit(file)\n\n  renderFile(\n    'package.json',\n    'templates/package.json.txt',\n    'project metadata',\n    list(npmPkgs = toDepJSON(npmPkgs))\n  )\n\n  renderFile(\n    'webpack.config.js',\n    'templates/webpack.config.js.txt',\n    'webpack configuration',\n    list(\n      name = name,\n      outputPath = sprintf(\"inst/www/%s/%s\", package, name)\n    )\n  )\n\n  renderFile(\n    sprintf('srcjs/%s.jsx', name),\n    'templates/input_js.txt',\n    'JavaScript implementation',\n    list(\n      name = name,\n      package = package\n    )\n  )\n\n  renderFile(\n    'app.R',\n    'templates/input_app.R.txt',\n    'example app',\n    list(\n      name = name,\n      package = package\n    )\n  )\n\n  usethis::use_build_ignore(c(\"node_modules\", \"srcjs\", \"app.R\", \"package.json\", \"webpack.config.js\", \"yarn.lock\"))\n  usethis::use_git_ignore(c(\"node_modules\"))\n  lapply(c(\"htmltools\", \"shiny\", \"reactR\"), usethis::use_package)\n\n  message(\"To install dependencies from npm run: yarn install\")\n  message(\"To build JavaScript run: yarn run webpack --mode=development\")\n}\n\n"
  },
  {
    "path": "R/scaffold_utils.R",
    "content": "slurp <- function(file) {\n  paste(readLines(\n    system.file(file, package = 'reactR')\n  ), collapse = \"\\n\")\n}\n\n# invoke file.edit in a way that will bind to the RStudio editor\n# when running inside RStudio\nfileEdit <- function(file) {\n  fileEditFunc <- eval(parse(text = \"file.edit\"), envir = globalenv())\n  fileEditFunc(file)\n}\n\n# Perform a series of pattern replacements on str.\n# Example: renderTemplate(\"foo ${x} bar ${y} baz ${x}\", list(x = 1, y = 2))\n# Produces: \"foo 1 bar 2 baz 1\"\nrenderTemplate <- function(str, substitutions) {\n  Reduce(function(str, name) {\n    gsub(paste0(\"\\\\$\\\\{\", name, \"\\\\}\"), substitutions[[name]], str)\n  }, names(substitutions), str)\n}\n\ncapitalize <- function(s) {\n  gsub(\"^(.)\", perl = TRUE, replacement = '\\\\U\\\\1', s)\n}\n\ntoDepJSON <- function(npmPkgs) {\n  if (is.null(npmPkgs)) {\n    \"\"\n  } else if (!length(names(npmPkgs))) {\n    stop(\"Must specify npm package names in the names attributes of npmPkgs\")\n  } else {\n    paste0(sprintf('\"%s\": \"%s\"', names(npmPkgs), npmPkgs), collapse = \",\\n\")\n  }\n}\n\n# Wraps renderTemplate for convenient use from scaffold functions.\nrenderFile <- function(outputFile, templateFile, description = '', substitutions = list()) {\n  if (!file.exists(outputFile)) {\n    dir.create(dirname(outputFile), recursive = TRUE, showWarnings = FALSE)\n    cat(renderTemplate(slurp(templateFile), substitutions), file = outputFile)\n    message(\"Created \", description, \" \", outputFile)\n  } else {\n    message(outputFile, \" already exists\")\n  }\n  outputFile\n}\n\ngetPackage <- function() {\n  if (!file.exists('DESCRIPTION')) {\n    stop(\"The current directory doesn't contain a package. You're either in the wrong directory, or need to create a package to house your widget.\", call. = FALSE)\n  }\n  read.dcf('DESCRIPTION')[[1,\"Package\"]]\n}\n\n# Constraining names prevents the user from encountering obscure CSS problems\n# and JavaScript errors after scaffolding.\nassertNameValid <- function(name) {\n  if (!grepl(robustName, name)) {\n    msg <- sprintf(\"Name '%s' is invalid, names must begin with an alphabetic character and must contain only alphabetic and numeric characters\", name)\n    stop(msg, call. = FALSE)\n  }\n}\n"
  },
  {
    "path": "R/scaffold_widget.R",
    "content": "#' Create implementation scaffolding for a React.js-based HTML widget\n#'\n#' Add the minimal code required to implement a React.js-based HTML widget to an\n#' R package.\n#'\n#' @param name Name of widget\n#' @param npmPkgs Optional \\href{https://www.npmjs.com/}{NPM} packages upon which\n#'   this widget is based which will be used to populate \\code{package.json}.\n#'   Should be a named list of names to\n#'   \\href{https://docs.npmjs.com/files/package.json/}{versions}.\n#' @param edit Automatically open the widget's JavaScript source file after\n#'   creating the scaffolding.\n#'\n#' @note This function must be executed from the root directory of the package\n#'   you wish to add the widget to.\n#'\n#' @export\nscaffoldReactWidget <- function(name, npmPkgs = NULL, edit = interactive()){\n  assertNameValid(name)\n  package <- getPackage()\n\n  addWidgetConstructor(name, package, edit)\n  addWidgetYAML(name, edit)\n  addPackageJSON(toDepJSON(npmPkgs))\n  addWebpackConfig(name)\n  addWidgetJS(name, edit)\n  addExampleApp(name)\n\n  usethis::use_build_ignore(c(\"node_modules\", \"srcjs\", \"app.R\", \"package.json\", \"webpack.config.js\", \"yarn.lock\"))\n  usethis::use_git_ignore(c(\"node_modules\"))\n  lapply(c(\"htmltools\", \"htmlwidgets\", \"reactR\"), usethis::use_package)\n\n  message(\"To install dependencies from npm run: yarn install\")\n  message(\"To build JavaScript run: yarn run webpack --mode=development\")\n}\n\naddWidgetConstructor <- function(name, package, edit){\n  file <- renderFile(\n    sprintf(\"R/%s.R\", name),\n    \"templates/widget_r.txt\",\n    \"boilerplate for widget constructor\",\n    list(\n      name = name,\n      package = package,\n      capName = capitalize(name)\n    )\n  )\n  if (edit) fileEdit(file)\n}\n\naddWidgetYAML <- function(name, edit){\n  file <- renderFile(\n    sprintf('inst/htmlwidgets/%s.yaml', name),\n    \"templates/widget_yaml.txt\",\n    \"boilerplate for widget dependencies\"\n  )\n  if (edit) fileEdit(file)\n}\n\naddPackageJSON <- function(npmPkgs) {\n  renderFile(\n    'package.json',\n    'templates/package.json.txt',\n    'project metadata',\n    list(npmPkgs = npmPkgs)\n  )\n}\n\naddWebpackConfig <- function(name) {\n  renderFile(\n    'webpack.config.js',\n    'templates/webpack.config.js.txt',\n    'webpack configuration',\n    list(\n      name = name,\n      outputPath = 'inst/htmlwidgets'\n    )\n  )\n}\n\naddWidgetJS <- function(name, edit){\n  file <- renderFile(\n    sprintf('srcjs/%s.jsx', name),\n    'templates/widget_js.txt',\n    'boilerplate for widget JavaScript bindings',\n    list(name = name)\n  )\n  if (edit) fileEdit(file)\n}\n\naddExampleApp <- function(name) {\n  renderFile(\n    'app.R',\n    'templates/widget_app.R.txt',\n    'example app',\n    list(\n      name = name,\n      capName = capitalize(name)\n    )\n  )\n}\n"
  },
  {
    "path": "README.Rmd",
    "content": "---\noutput: github_document\n---\n\n# reactR <img src=\"vignettes/logo.svg\" alt=\"reactR logo\" width=\"100px\" />\n\n<!-- README.md is generated from README.Rmd. Please edit that file -->\n\n```{r setup, include = FALSE}\nknitr::opts_chunk$set(\n  collapse = TRUE,\n  comment = \"#>\",\n  fig.path = \"man/figures/README-\",\n  out.width = \"100%\"\n)\n```\n\n[![CRAN_Status_Badge](https://www.r-pkg.org/badges/version/reactR)](https://cran.r-project.org/package=reactR)\n[![R-CMD-check](https://github.com/react-R/reactR/actions/workflows/R-CMD-check.yaml/badge.svg)](https://github.com/react-R/reactR/actions/workflows/R-CMD-check.yaml)\n\n`reactR` provides a set of convenience functions for using [`React`](https://reactjs.org/) in `R` with `htmlwidget` constructor templates and local JavaScript dependencies.  The `React` ecosystem is rich with components that can enhance `R` web and Shiny apps.  `scaffoldReactWidget()` helps build `htmlwidgets` to integrate these `React` components as `R` `htmlwidgets`.  `scaffoldReactShinyInput()` does the same for `Shiny` inputs.  The local dependency functions are modeled after the `html_dependency_*` functions from RStudio's [`rmarkdown`](https://github.com/rstudio/rmarkdown) package.\n\n## Installation\n\nYou can install reactR from CRAN with `install.packages(\"reactR\")`.  For the development version, please use `devtools` as shown below.\n\n```R\n# install.packages(\"devtools\")\ndevtools::install_github(\"react-R/reactR\")\n```\n\n## Creating htmlwidgets with React Components\n\nTo wrap a `React` component as an `htmlwidget`, please see the tutorial [htmlwidgets with reactR](https://react-r.github.io/reactR/articles/intro_htmlwidgets.html).  Also, there are a variety of examples in the [react-R Github organization](https://github.com/react-R).\n\n\n[`reactable`](https://github.com/glin/reactable) is a very well-built `htmlwidget` leveraging this functionality.\n\n## Shiny Outputs and Inputs\n\n`htmlwidgets` built with `reactR` work well in Shiny as outputs.  In version `0.4.0` Alan Dipert has added the ability to easily create React-based official `Shiny` inputs with helpers and scaffolds.  Please see the [tutorial](https://react-r.github.io/reactR/articles/intro_inputs.html) for more details.\n\n## Examples\n\nBelow are examples of using `reactR` directly.\n\n```R\nlibrary(reactR)\nlibrary(htmltools)\n\nbrowsable(tagList(\n  tags$div(id = \"app\"),\n  tags$script(\n  \"\n    ReactDOM.render(\n      React.createElement(\n        'h1',\n        null,\n        'Powered by React'\n      ),\n      document.getElementById('app')\n    )\n  \"\n  ),\n  #add core-js first to work in RStudio Viewer\n  html_dependency_corejs(),\n  html_dependency_react()\n))\n```\n\n`reactR` uses the `V8` package if available to transform `JSX` and `ES2015` code with `babel`.\n\n```R\nlibrary(reactR)\nlibrary(htmltools)\n\nbrowsable(\n  tagList(\n    tags$div(id = \"app\"),\n    tags$script(\n      babel_transform('ReactDOM.render(<h1>Powered By React/JSX</h1>,document.getElementById(\"app\"))')\n    ),\n    # add core-js shim first for React in older versions of RStudio Viewer\n    #html_dependency_corejs(),\n    html_dependency_react()\n  )\n)\n```\n\n## Contributing and Code of Conduct\n\nWe welcome contributors and would love your participation.  Please note that this project is released with a [Contributor Code of Conduct](https://github.com/react-R/reactR/blob/master/CONDUCT.md). By participating in this project you agree to abide by the terms.\n"
  },
  {
    "path": "README.md",
    "content": "\n# reactR <img src=\"vignettes/logo.svg\" alt=\"reactR logo\" width=\"100px\" />\n\n<!-- README.md is generated from README.Rmd. Please edit that file -->\n\n[![CRAN_Status_Badge](https://www.r-pkg.org/badges/version/reactR)](https://cran.r-project.org/package=reactR)\n[![R-CMD-check](https://github.com/react-R/reactR/actions/workflows/R-CMD-check.yaml/badge.svg)](https://github.com/react-R/reactR/actions/workflows/R-CMD-check.yaml)\n\n`reactR` provides a set of convenience functions for using\n[`React`](https://reactjs.org/) in `R` with `htmlwidget` constructor\ntemplates and local JavaScript dependencies. The `React` ecosystem is\nrich with components that can enhance `R` web and Shiny apps.\n`scaffoldReactWidget()` helps build `htmlwidgets` to integrate these\n`React` components as `R` `htmlwidgets`. `scaffoldReactShinyInput()`\ndoes the same for `Shiny` inputs. The local dependency functions are\nmodeled after the `html_dependency_*` functions from RStudio’s\n[`rmarkdown`](https://github.com/rstudio/rmarkdown) package.\n\n## Installation\n\nYou can install reactR from CRAN with `install.packages(\"reactR\")`. For\nthe development version, please use `devtools` as shown below.\n\n``` r\n# install.packages(\"devtools\")\ndevtools::install_github(\"react-R/reactR\")\n```\n\n## Creating htmlwidgets with React Components\n\nTo wrap a `React` component as an `htmlwidget`, please see the tutorial\n[htmlwidgets with\nreactR](https://react-r.github.io/reactR/articles/intro_htmlwidgets.html).\nAlso, there are a variety of examples in the [react-R Github\norganization](https://github.com/react-R).\n\n[`reactable`](https://github.com/glin/reactable) is a very well-built\n`htmlwidget` leveraging this functionality.\n\n## Shiny Outputs and Inputs\n\n`htmlwidgets` built with `reactR` work well in Shiny as outputs. In\nversion `0.4.0` Alan Dipert has added the ability to easily create\nReact-based official `Shiny` inputs with helpers and scaffolds. Please\nsee the\n[tutorial](https://react-r.github.io/reactR/articles/intro_inputs.html)\nfor more details.\n\n## Examples\n\nBelow are examples of using `reactR` directly.\n\n``` r\nlibrary(reactR)\nlibrary(htmltools)\n\nbrowsable(tagList(\n  tags$div(id = \"app\"),\n  tags$script(\n  \"\n    ReactDOM.render(\n      React.createElement(\n        'h1',\n        null,\n        'Powered by React'\n      ),\n      document.getElementById('app')\n    )\n  \"\n  ),\n  #add core-js first to work in RStudio Viewer\n  html_dependency_corejs(),\n  html_dependency_react()\n))\n```\n\n`reactR` uses the `V8` package if available to transform `JSX` and\n`ES2015` code with `babel`.\n\n``` r\nlibrary(reactR)\nlibrary(htmltools)\n\nbrowsable(\n  tagList(\n    tags$div(id = \"app\"),\n    tags$script(\n      babel_transform('ReactDOM.render(<h1>Powered By React/JSX</h1>,document.getElementById(\"app\"))')\n    ),\n    # add core-js shim first for React in older versions of RStudio Viewer\n    #html_dependency_corejs(),\n    html_dependency_react()\n  )\n)\n```\n\n## Contributing and Code of Conduct\n\nWe welcome contributors and would love your participation. Please note\nthat this project is released with a [Contributor Code of\nConduct](https://github.com/react-R/reactR/blob/master/CONDUCT.md). By\nparticipating in this project you agree to abide by the terms.\n"
  },
  {
    "path": "buildupdate/getreact.R",
    "content": "# use the very nice rgithub\n# devtools::install_github(\"cscheid/rgithub\")\n\nget_react_latest <- function(){\n  gsub(\n    x=github::get.latest.release(\"facebook\", \"react\")$content$tag_name,\n    pattern=\"v\",\n    replacement=\"\"\n  )\n}\n\nget_babel_latest <- function(){\n  gsub(\n    x=github::get.latest.release(\"babel\", \"babel-standalone\")$content$tag_name,\n    pattern=\"release-\",\n    replacement=\"\"\n  )\n}\n\n# get newest react\ndownload.file(\n  url=sprintf(\n    \"https://unpkg.com/react@%s/umd/react.production.min.js\",\n    get_react_latest()\n  ),\n  destfile=\"./inst/www/react/react.min.js\"\n)\n\n# get newest react dom\ndownload.file(\n  url=sprintf(\n    \"https://unpkg.com/react-dom@%s/umd/react-dom.production.min.js\",\n    get_react_latest()\n  ),\n  destfile=\"./inst/www/react/react-dom.min.js\"\n)\n\n# get newest babel\ndownload.file(\n  url=sprintf(\n    \"https://unpkg.com/babel-standalone@%s/babel.min.js\",\n    get_babel_latest()\n  ),\n  destfile=\"./inst/www/babel/babel.min.js\"\n)\n\n# write function with newest version\n#  for use when creating dependencies\ncat(\n  sprintf(\n    \"#'@keywords internal\\nreact_version <- function(){'%s'}\\nbabel_version <- function(){'%s'}\",\n    get_react_latest(),\n    get_babel_latest()\n  ),\n  file = \"./R/meta.R\"\n)\n"
  },
  {
    "path": "cran-comments.md",
    "content": "## Test environments\n* local Windows 10 install, R 4.3.1\n* rhub check_for_cran\n* winbuilder\n* github actions check for cran - ubuntu, mac, windows\n\n## R CMD check results\n\n0 errors | 0 warnings | 0 note\n\n## Reverse dependencies\n\nreactable - consulted with author who has tested and approved the changes\n"
  },
  {
    "path": "docs/404.html",
    "content": "<!DOCTYPE html>\n<!-- Generated by pkgdown: do not edit by hand --><html lang=\"en\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\">\n<meta charset=\"utf-8\">\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\">\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n<title>Page not found (404) • reactR</title>\n<!-- favicons --><link rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"favicon-16x16.png\">\n<link rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"favicon-32x32.png\">\n<link rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"apple-touch-icon.png\">\n<link rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"120x120\" href=\"apple-touch-icon-120x120.png\">\n<link rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"76x76\" href=\"apple-touch-icon-76x76.png\">\n<link rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"60x60\" href=\"apple-touch-icon-60x60.png\">\n<!-- jquery --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js\" integrity=\"sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo=\" crossorigin=\"anonymous\"></script><!-- Bootstrap --><link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.4.1/css/bootstrap.min.css\" integrity=\"sha256-bZLfwXAP04zRMK2BjiO8iu9pf4FbLqX6zitd+tIvLhE=\" crossorigin=\"anonymous\">\n<script src=\"https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.4.1/js/bootstrap.min.js\" integrity=\"sha256-nuL8/2cJ5NDSSwnKD8VqreErSWHtnEP9E7AySL+1ev4=\" crossorigin=\"anonymous\"></script><!-- bootstrap-toc --><link rel=\"stylesheet\" href=\"bootstrap-toc.css\">\n<script src=\"bootstrap-toc.js\"></script><!-- Font Awesome icons --><link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/all.min.css\" integrity=\"sha256-mmgLkCYLUQbXn0B1SRqzHar6dCnv9oZFPEC1g1cwlkk=\" crossorigin=\"anonymous\">\n<link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/v4-shims.min.css\" integrity=\"sha256-wZjR52fzng1pJHwx4aV2AO3yyTOXrcDW7jBpJtTwVxw=\" crossorigin=\"anonymous\">\n<!-- clipboard.js --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.6/clipboard.min.js\" integrity=\"sha256-inc5kl9MA1hkeYUt+EC3BhlIgyp/2jDIyBLS6k3UxPI=\" crossorigin=\"anonymous\"></script><!-- headroom.js --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/headroom.min.js\" integrity=\"sha256-AsUX4SJE1+yuDu5+mAVzJbuYNPHj/WroHuZ8Ir/CkE0=\" crossorigin=\"anonymous\"></script><script src=\"https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/jQuery.headroom.min.js\" integrity=\"sha256-ZX/yNShbjqsohH1k95liqY9Gd8uOiE1S4vZc+9KQ1K4=\" crossorigin=\"anonymous\"></script><!-- pkgdown --><link href=\"pkgdown.css\" rel=\"stylesheet\">\n<script src=\"pkgdown.js\"></script><meta property=\"og:title\" content=\"Page not found (404)\">\n<!-- mathjax --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js\" integrity=\"sha256-nvJJv9wWKEm88qvoQl9ekL2J+k/RWIsaSScxxlsrv8k=\" crossorigin=\"anonymous\"></script><script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/config/TeX-AMS-MML_HTMLorMML.js\" integrity=\"sha256-84DKXVJXs0/F8OTMzX4UR909+jtl4G7SPypPavF+GfA=\" crossorigin=\"anonymous\"></script><!--[if lt IE 9]>\n<script src=\"https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js\"></script>\n<script src=\"https://oss.maxcdn.com/respond/1.4.2/respond.min.js\"></script>\n<![endif]-->\n</head>\n<body data-spy=\"scroll\" data-target=\"#toc\">\n    \n\n    <div class=\"container template-title-body\">\n      <header><div class=\"navbar navbar-default navbar-fixed-top\" role=\"navigation\">\n  <div class=\"container\">\n    <div class=\"navbar-header\">\n      <button type=\"button\" class=\"navbar-toggle collapsed\" data-toggle=\"collapse\" data-target=\"#navbar\" aria-expanded=\"false\">\n        <span class=\"sr-only\">Toggle navigation</span>\n        <span class=\"icon-bar\"></span>\n        <span class=\"icon-bar\"></span>\n        <span class=\"icon-bar\"></span>\n      </button>\n      <span class=\"navbar-brand\">\n        <a class=\"navbar-link\" href=\"index.html\">reactR</a>\n        <span class=\"version label label-default\" data-toggle=\"tooltip\" data-placement=\"bottom\" title=\"\">0.6.1</span>\n      </span>\n    </div>\n\n    <div id=\"navbar\" class=\"navbar-collapse collapse\">\n      <ul class=\"nav navbar-nav\">\n<li>\n  <a href=\"reference/index.html\">Reference</a>\n</li>\n<li class=\"dropdown\">\n  <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\" role=\"button\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\n    Articles\n     \n    <span class=\"caret\"></span>\n  </a>\n  <ul class=\"dropdown-menu\" role=\"menu\">\n<li>\n      <a href=\"articles/intro_htmlwidgets.html\">Authoring htmlwidgets powered by React with reactR</a>\n    </li>\n    <li>\n      <a href=\"articles/intro_inputs.html\">Authoring inputs powered by React with reactR</a>\n    </li>\n    <li>\n      <a href=\"articles/intro_reactR.html\">Intro to reactR</a>\n    </li>\n  </ul>\n</li>\n<li>\n  <a href=\"news/index.html\">Changelog</a>\n</li>\n      </ul>\n<ul class=\"nav navbar-nav navbar-right\">\n<li>\n  <a href=\"https://github.com/react-R/reactR/\" class=\"external-link\">\n    <span class=\"fab fa-github fa-lg\"></span>\n     \n  </a>\n</li>\n      </ul>\n</div>\n<!--/.nav-collapse -->\n  </div>\n<!--/.container -->\n</div>\n<!--/.navbar -->\n\n      \n\n      </header><div class=\"row\">\n  <div class=\"contents col-md-9\">\n    <div class=\"page-header\">\n      <h1>Page not found (404)</h1>\n    </div>\n\nContent not found. Please use links in the navbar.\n\n  </div>\n\n  <div class=\"col-md-3 hidden-xs hidden-sm\" id=\"pkgdown-sidebar\">\n    <nav id=\"toc\" data-toggle=\"toc\" class=\"sticky-top\"><h2 data-toc-skip>Contents</h2>\n    </nav>\n</div>\n\n</div>\n\n\n\n      <footer><div class=\"copyright\">\n  <p></p>\n<p>Developed by Facebook Inc, Michel Weststrate, Kent Russell, Alan Dipert, Greg Lin.</p>\n</div>\n\n<div class=\"pkgdown\">\n  <p></p>\n<p>Site built with <a href=\"https://pkgdown.r-lib.org/\" class=\"external-link\">pkgdown</a> 2.0.7.</p>\n</div>\n\n      </footer>\n</div>\n\n  \n\n\n  \n\n  </body>\n</html>\n"
  },
  {
    "path": "docs/CONDUCT.html",
    "content": "<!DOCTYPE html>\n<!-- Generated by pkgdown: do not edit by hand --><html lang=\"en\"><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"><meta charset=\"utf-8\"><meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\"><meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"><title>Contributor Code of Conduct • reactR</title><!-- favicons --><link rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"favicon-16x16.png\"><link rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"favicon-32x32.png\"><link rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"apple-touch-icon.png\"><link rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"120x120\" href=\"apple-touch-icon-120x120.png\"><link rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"76x76\" href=\"apple-touch-icon-76x76.png\"><link rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"60x60\" href=\"apple-touch-icon-60x60.png\"><!-- jquery --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js\" integrity=\"sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo=\" crossorigin=\"anonymous\"></script><!-- Bootstrap --><link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.4.1/css/bootstrap.min.css\" integrity=\"sha256-bZLfwXAP04zRMK2BjiO8iu9pf4FbLqX6zitd+tIvLhE=\" crossorigin=\"anonymous\"><script src=\"https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.4.1/js/bootstrap.min.js\" integrity=\"sha256-nuL8/2cJ5NDSSwnKD8VqreErSWHtnEP9E7AySL+1ev4=\" crossorigin=\"anonymous\"></script><!-- bootstrap-toc --><link rel=\"stylesheet\" href=\"bootstrap-toc.css\"><script src=\"bootstrap-toc.js\"></script><!-- Font Awesome icons --><link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/all.min.css\" integrity=\"sha256-mmgLkCYLUQbXn0B1SRqzHar6dCnv9oZFPEC1g1cwlkk=\" crossorigin=\"anonymous\"><link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/v4-shims.min.css\" integrity=\"sha256-wZjR52fzng1pJHwx4aV2AO3yyTOXrcDW7jBpJtTwVxw=\" crossorigin=\"anonymous\"><!-- clipboard.js --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.6/clipboard.min.js\" integrity=\"sha256-inc5kl9MA1hkeYUt+EC3BhlIgyp/2jDIyBLS6k3UxPI=\" crossorigin=\"anonymous\"></script><!-- headroom.js --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/headroom.min.js\" integrity=\"sha256-AsUX4SJE1+yuDu5+mAVzJbuYNPHj/WroHuZ8Ir/CkE0=\" crossorigin=\"anonymous\"></script><script src=\"https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/jQuery.headroom.min.js\" integrity=\"sha256-ZX/yNShbjqsohH1k95liqY9Gd8uOiE1S4vZc+9KQ1K4=\" crossorigin=\"anonymous\"></script><!-- pkgdown --><link href=\"pkgdown.css\" rel=\"stylesheet\"><script src=\"pkgdown.js\"></script><meta property=\"og:title\" content=\"Contributor Code of Conduct\"><!-- mathjax --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js\" integrity=\"sha256-nvJJv9wWKEm88qvoQl9ekL2J+k/RWIsaSScxxlsrv8k=\" crossorigin=\"anonymous\"></script><script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/config/TeX-AMS-MML_HTMLorMML.js\" integrity=\"sha256-84DKXVJXs0/F8OTMzX4UR909+jtl4G7SPypPavF+GfA=\" crossorigin=\"anonymous\"></script><!--[if lt IE 9]>\n<script src=\"https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js\"></script>\n<script src=\"https://oss.maxcdn.com/respond/1.4.2/respond.min.js\"></script>\n<![endif]--></head><body data-spy=\"scroll\" data-target=\"#toc\">\n    \n\n    <div class=\"container template-title-body\">\n      <header><div class=\"navbar navbar-default navbar-fixed-top\" role=\"navigation\">\n  <div class=\"container\">\n    <div class=\"navbar-header\">\n      <button type=\"button\" class=\"navbar-toggle collapsed\" data-toggle=\"collapse\" data-target=\"#navbar\" aria-expanded=\"false\">\n        <span class=\"sr-only\">Toggle navigation</span>\n        <span class=\"icon-bar\"></span>\n        <span class=\"icon-bar\"></span>\n        <span class=\"icon-bar\"></span>\n      </button>\n      <span class=\"navbar-brand\">\n        <a class=\"navbar-link\" href=\"index.html\">reactR</a>\n        <span class=\"version label label-default\" data-toggle=\"tooltip\" data-placement=\"bottom\" title=\"\">0.6.1</span>\n      </span>\n    </div>\n\n    <div id=\"navbar\" class=\"navbar-collapse collapse\">\n      <ul class=\"nav navbar-nav\"><li>\n  <a href=\"reference/index.html\">Reference</a>\n</li>\n<li class=\"dropdown\">\n  <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\" role=\"button\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\n    Articles\n     \n    <span class=\"caret\"></span>\n  </a>\n  <ul class=\"dropdown-menu\" role=\"menu\"><li>\n      <a href=\"articles/intro_htmlwidgets.html\">Authoring htmlwidgets powered by React with reactR</a>\n    </li>\n    <li>\n      <a href=\"articles/intro_inputs.html\">Authoring inputs powered by React with reactR</a>\n    </li>\n    <li>\n      <a href=\"articles/intro_reactR.html\">Intro to reactR</a>\n    </li>\n  </ul></li>\n<li>\n  <a href=\"news/index.html\">Changelog</a>\n</li>\n      </ul><ul class=\"nav navbar-nav navbar-right\"><li>\n  <a href=\"https://github.com/react-R/reactR/\" class=\"external-link\">\n    <span class=\"fab fa-github fa-lg\"></span>\n     \n  </a>\n</li>\n      </ul></div><!--/.nav-collapse -->\n  </div><!--/.container -->\n</div><!--/.navbar -->\n\n      \n\n      </header><div class=\"row\">\n  <div class=\"contents col-md-9\">\n    <div class=\"page-header\">\n      <h1>Contributor Code of Conduct</h1>\n    </div>\n\n<div id=\"contributor-code-of-conduct\" class=\"section level1\">\n\n<p>As contributors and maintainers of this project, we pledge to respect all people who contribute through reporting issues, posting feature requests, updating documentation, submitting pull requests or patches, and other activities.</p>\n<p>We are committed to making participation in this project a harassment-free experience for everyone, regardless of level of experience, gender, gender identity and expression, sexual orientation, disability, personal appearance, body size, race, ethnicity, age, or religion.</p>\n<p>Examples of unacceptable behavior by participants include the use of sexual language or imagery, derogatory comments or personal attacks, trolling, public or private harassment, insults, or other unprofessional conduct.</p>\n<p>Project maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct. Project maintainers who do not follow the Code of Conduct may be removed from the project team.</p>\n<p>Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by opening an issue or contacting one or more of the project maintainers.</p>\n<p>This Code of Conduct is adapted from the Contributor Covenant (<a href=\"http:contributor-covenant.org\" class=\"uri\">http:contributor-covenant.org</a>), version 1.0.0, available at <a href=\"http://contributor-covenant.org/version/1/0/0/\" class=\"external-link uri\">http://contributor-covenant.org/version/1/0/0/</a></p>\n</div>\n\n  </div>\n\n  <div class=\"col-md-3 hidden-xs hidden-sm\" id=\"pkgdown-sidebar\">\n    <nav id=\"toc\" data-toggle=\"toc\" class=\"sticky-top\"><h2 data-toc-skip>Contents</h2>\n    </nav></div>\n\n</div>\n\n\n\n      <footer><div class=\"copyright\">\n  <p></p><p>Developed by Facebook Inc, Michel Weststrate, Kent Russell, Alan Dipert, Greg Lin.</p>\n</div>\n\n<div class=\"pkgdown\">\n  <p></p><p>Site built with <a href=\"https://pkgdown.r-lib.org/\" class=\"external-link\">pkgdown</a> 2.0.7.</p>\n</div>\n\n      </footer></div>\n\n  \n\n\n  \n\n  </body></html>\n\n"
  },
  {
    "path": "docs/LICENSE-text.html",
    "content": "<!DOCTYPE html>\n<!-- Generated by pkgdown: do not edit by hand --><html lang=\"en\"><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"><meta charset=\"utf-8\"><meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\"><meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"><title>License • reactR</title><!-- favicons --><link rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"favicon-16x16.png\"><link rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"favicon-32x32.png\"><link rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"apple-touch-icon.png\"><link rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"120x120\" href=\"apple-touch-icon-120x120.png\"><link rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"76x76\" href=\"apple-touch-icon-76x76.png\"><link rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"60x60\" href=\"apple-touch-icon-60x60.png\"><!-- jquery --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js\" integrity=\"sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo=\" crossorigin=\"anonymous\"></script><!-- Bootstrap --><link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.4.1/css/bootstrap.min.css\" integrity=\"sha256-bZLfwXAP04zRMK2BjiO8iu9pf4FbLqX6zitd+tIvLhE=\" crossorigin=\"anonymous\"><script src=\"https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.4.1/js/bootstrap.min.js\" integrity=\"sha256-nuL8/2cJ5NDSSwnKD8VqreErSWHtnEP9E7AySL+1ev4=\" crossorigin=\"anonymous\"></script><!-- bootstrap-toc --><link rel=\"stylesheet\" href=\"bootstrap-toc.css\"><script src=\"bootstrap-toc.js\"></script><!-- Font Awesome icons --><link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/all.min.css\" integrity=\"sha256-mmgLkCYLUQbXn0B1SRqzHar6dCnv9oZFPEC1g1cwlkk=\" crossorigin=\"anonymous\"><link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/v4-shims.min.css\" integrity=\"sha256-wZjR52fzng1pJHwx4aV2AO3yyTOXrcDW7jBpJtTwVxw=\" crossorigin=\"anonymous\"><!-- clipboard.js --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.6/clipboard.min.js\" integrity=\"sha256-inc5kl9MA1hkeYUt+EC3BhlIgyp/2jDIyBLS6k3UxPI=\" crossorigin=\"anonymous\"></script><!-- headroom.js --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/headroom.min.js\" integrity=\"sha256-AsUX4SJE1+yuDu5+mAVzJbuYNPHj/WroHuZ8Ir/CkE0=\" crossorigin=\"anonymous\"></script><script src=\"https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/jQuery.headroom.min.js\" integrity=\"sha256-ZX/yNShbjqsohH1k95liqY9Gd8uOiE1S4vZc+9KQ1K4=\" crossorigin=\"anonymous\"></script><!-- pkgdown --><link href=\"pkgdown.css\" rel=\"stylesheet\"><script src=\"pkgdown.js\"></script><meta property=\"og:title\" content=\"License\"><!-- mathjax --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js\" integrity=\"sha256-nvJJv9wWKEm88qvoQl9ekL2J+k/RWIsaSScxxlsrv8k=\" crossorigin=\"anonymous\"></script><script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/config/TeX-AMS-MML_HTMLorMML.js\" integrity=\"sha256-84DKXVJXs0/F8OTMzX4UR909+jtl4G7SPypPavF+GfA=\" crossorigin=\"anonymous\"></script><!--[if lt IE 9]>\n<script src=\"https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js\"></script>\n<script src=\"https://oss.maxcdn.com/respond/1.4.2/respond.min.js\"></script>\n<![endif]--></head><body data-spy=\"scroll\" data-target=\"#toc\">\n    \n\n    <div class=\"container template-title-body\">\n      <header><div class=\"navbar navbar-default navbar-fixed-top\" role=\"navigation\">\n  <div class=\"container\">\n    <div class=\"navbar-header\">\n      <button type=\"button\" class=\"navbar-toggle collapsed\" data-toggle=\"collapse\" data-target=\"#navbar\" aria-expanded=\"false\">\n        <span class=\"sr-only\">Toggle navigation</span>\n        <span class=\"icon-bar\"></span>\n        <span class=\"icon-bar\"></span>\n        <span class=\"icon-bar\"></span>\n      </button>\n      <span class=\"navbar-brand\">\n        <a class=\"navbar-link\" href=\"index.html\">reactR</a>\n        <span class=\"version label label-default\" data-toggle=\"tooltip\" data-placement=\"bottom\" title=\"\">0.6.1</span>\n      </span>\n    </div>\n\n    <div id=\"navbar\" class=\"navbar-collapse collapse\">\n      <ul class=\"nav navbar-nav\"><li>\n  <a href=\"reference/index.html\">Reference</a>\n</li>\n<li class=\"dropdown\">\n  <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\" role=\"button\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\n    Articles\n     \n    <span class=\"caret\"></span>\n  </a>\n  <ul class=\"dropdown-menu\" role=\"menu\"><li>\n      <a href=\"articles/intro_htmlwidgets.html\">Authoring htmlwidgets powered by React with reactR</a>\n    </li>\n    <li>\n      <a href=\"articles/intro_inputs.html\">Authoring inputs powered by React with reactR</a>\n    </li>\n    <li>\n      <a href=\"articles/intro_reactR.html\">Intro to reactR</a>\n    </li>\n  </ul></li>\n<li>\n  <a href=\"news/index.html\">Changelog</a>\n</li>\n      </ul><ul class=\"nav navbar-nav navbar-right\"><li>\n  <a href=\"https://github.com/react-R/reactR/\" class=\"external-link\">\n    <span class=\"fab fa-github fa-lg\"></span>\n     \n  </a>\n</li>\n      </ul></div><!--/.nav-collapse -->\n  </div><!--/.container -->\n</div><!--/.navbar -->\n\n      \n\n      </header><div class=\"row\">\n  <div class=\"contents col-md-9\">\n    <div class=\"page-header\">\n      <h1>License</h1>\n    </div>\n\n<pre>YEAR: 2018\nCOPYRIGHT HOLDER: Kent Russell\n</pre>\n\n  </div>\n\n  <div class=\"col-md-3 hidden-xs hidden-sm\" id=\"pkgdown-sidebar\">\n    <nav id=\"toc\" data-toggle=\"toc\" class=\"sticky-top\"><h2 data-toc-skip>Contents</h2>\n    </nav></div>\n\n</div>\n\n\n\n      <footer><div class=\"copyright\">\n  <p></p><p>Developed by Facebook Inc, Michel Weststrate, Kent Russell, Alan Dipert, Greg Lin.</p>\n</div>\n\n<div class=\"pkgdown\">\n  <p></p><p>Site built with <a href=\"https://pkgdown.r-lib.org/\" class=\"external-link\">pkgdown</a> 2.0.7.</p>\n</div>\n\n      </footer></div>\n\n  \n\n\n  \n\n  </body></html>\n\n"
  },
  {
    "path": "docs/articles/index.html",
    "content": "<!DOCTYPE html>\n<!-- Generated by pkgdown: do not edit by hand --><html lang=\"en\"><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"><meta charset=\"utf-8\"><meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\"><meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"><title>Articles • reactR</title><!-- favicons --><link rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"../favicon-16x16.png\"><link rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"../favicon-32x32.png\"><link rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"../apple-touch-icon.png\"><link rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"120x120\" href=\"../apple-touch-icon-120x120.png\"><link rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"76x76\" href=\"../apple-touch-icon-76x76.png\"><link rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"60x60\" href=\"../apple-touch-icon-60x60.png\"><!-- jquery --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js\" integrity=\"sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo=\" crossorigin=\"anonymous\"></script><!-- Bootstrap --><link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.4.1/css/bootstrap.min.css\" integrity=\"sha256-bZLfwXAP04zRMK2BjiO8iu9pf4FbLqX6zitd+tIvLhE=\" crossorigin=\"anonymous\"><script src=\"https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.4.1/js/bootstrap.min.js\" integrity=\"sha256-nuL8/2cJ5NDSSwnKD8VqreErSWHtnEP9E7AySL+1ev4=\" crossorigin=\"anonymous\"></script><!-- bootstrap-toc --><link rel=\"stylesheet\" href=\"../bootstrap-toc.css\"><script src=\"../bootstrap-toc.js\"></script><!-- Font Awesome icons --><link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/all.min.css\" integrity=\"sha256-mmgLkCYLUQbXn0B1SRqzHar6dCnv9oZFPEC1g1cwlkk=\" crossorigin=\"anonymous\"><link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/v4-shims.min.css\" integrity=\"sha256-wZjR52fzng1pJHwx4aV2AO3yyTOXrcDW7jBpJtTwVxw=\" crossorigin=\"anonymous\"><!-- clipboard.js --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.6/clipboard.min.js\" integrity=\"sha256-inc5kl9MA1hkeYUt+EC3BhlIgyp/2jDIyBLS6k3UxPI=\" crossorigin=\"anonymous\"></script><!-- headroom.js --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/headroom.min.js\" integrity=\"sha256-AsUX4SJE1+yuDu5+mAVzJbuYNPHj/WroHuZ8Ir/CkE0=\" crossorigin=\"anonymous\"></script><script src=\"https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/jQuery.headroom.min.js\" integrity=\"sha256-ZX/yNShbjqsohH1k95liqY9Gd8uOiE1S4vZc+9KQ1K4=\" crossorigin=\"anonymous\"></script><!-- pkgdown --><link href=\"../pkgdown.css\" rel=\"stylesheet\"><script src=\"../pkgdown.js\"></script><meta property=\"og:title\" content=\"Articles\"><!-- mathjax --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js\" integrity=\"sha256-nvJJv9wWKEm88qvoQl9ekL2J+k/RWIsaSScxxlsrv8k=\" crossorigin=\"anonymous\"></script><script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/config/TeX-AMS-MML_HTMLorMML.js\" integrity=\"sha256-84DKXVJXs0/F8OTMzX4UR909+jtl4G7SPypPavF+GfA=\" crossorigin=\"anonymous\"></script><!--[if lt IE 9]>\n<script src=\"https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js\"></script>\n<script src=\"https://oss.maxcdn.com/respond/1.4.2/respond.min.js\"></script>\n<![endif]--></head><body data-spy=\"scroll\" data-target=\"#toc\">\n    \n\n    <div class=\"container template-article-index\">\n      <header><div class=\"navbar navbar-default navbar-fixed-top\" role=\"navigation\">\n  <div class=\"container\">\n    <div class=\"navbar-header\">\n      <button type=\"button\" class=\"navbar-toggle collapsed\" data-toggle=\"collapse\" data-target=\"#navbar\" aria-expanded=\"false\">\n        <span class=\"sr-only\">Toggle navigation</span>\n        <span class=\"icon-bar\"></span>\n        <span class=\"icon-bar\"></span>\n        <span class=\"icon-bar\"></span>\n      </button>\n      <span class=\"navbar-brand\">\n        <a class=\"navbar-link\" href=\"../index.html\">reactR</a>\n        <span class=\"version label label-default\" data-toggle=\"tooltip\" data-placement=\"bottom\" title=\"\">0.6.1</span>\n      </span>\n    </div>\n\n    <div id=\"navbar\" class=\"navbar-collapse collapse\">\n      <ul class=\"nav navbar-nav\"><li>\n  <a href=\"../reference/index.html\">Reference</a>\n</li>\n<li class=\"dropdown\">\n  <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\" role=\"button\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\n    Articles\n     \n    <span class=\"caret\"></span>\n  </a>\n  <ul class=\"dropdown-menu\" role=\"menu\"><li>\n      <a href=\"../articles/intro_htmlwidgets.html\">Authoring htmlwidgets powered by React with reactR</a>\n    </li>\n    <li>\n      <a href=\"../articles/intro_inputs.html\">Authoring inputs powered by React with reactR</a>\n    </li>\n    <li>\n      <a href=\"../articles/intro_reactR.html\">Intro to reactR</a>\n    </li>\n  </ul></li>\n<li>\n  <a href=\"../news/index.html\">Changelog</a>\n</li>\n      </ul><ul class=\"nav navbar-nav navbar-right\"><li>\n  <a href=\"https://github.com/react-R/reactR/\" class=\"external-link\">\n    <span class=\"fab fa-github fa-lg\"></span>\n     \n  </a>\n</li>\n      </ul></div><!--/.nav-collapse -->\n  </div><!--/.container -->\n</div><!--/.navbar -->\n\n      \n\n      </header><div class=\"row\">\n  <div class=\"col-md-9 contents\">\n    <div class=\"page-header\">\n      <h1>Articles</h1>\n    </div>\n\n    <div class=\"section \">\n      <h3>All vignettes</h3>\n      <p class=\"section-desc\"></p>\n\n      <dl><dt><a href=\"intro_htmlwidgets.html\">Authoring htmlwidgets powered by React with reactR</a></dt>\n        <dd>\n        </dd><dt><a href=\"intro_inputs.html\">Authoring inputs powered by React with reactR</a></dt>\n        <dd>\n        </dd><dt><a href=\"intro_reactR.html\">Intro to reactR</a></dt>\n        <dd>\n      </dd></dl></div>\n  </div>\n</div>\n\n\n      <footer><div class=\"copyright\">\n  <p></p><p>Developed by Facebook Inc, Michel Weststrate, Kent Russell, Alan Dipert, Greg Lin.</p>\n</div>\n\n<div class=\"pkgdown\">\n  <p></p><p>Site built with <a href=\"https://pkgdown.r-lib.org/\" class=\"external-link\">pkgdown</a> 2.0.7.</p>\n</div>\n\n      </footer></div>\n\n  \n\n\n  \n\n  </body></html>\n\n"
  },
  {
    "path": "docs/articles/intro_htmlwidgets.html",
    "content": "<!DOCTYPE html>\n<!-- Generated by pkgdown: do not edit by hand --><html lang=\"en\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\">\n<meta charset=\"utf-8\">\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\">\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n<title>Authoring htmlwidgets powered by React with reactR • reactR</title>\n<!-- favicons --><link rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"../favicon-16x16.png\">\n<link rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"../favicon-32x32.png\">\n<link rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"../apple-touch-icon.png\">\n<link rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"120x120\" href=\"../apple-touch-icon-120x120.png\">\n<link rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"76x76\" href=\"../apple-touch-icon-76x76.png\">\n<link rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"60x60\" href=\"../apple-touch-icon-60x60.png\">\n<!-- jquery --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js\" integrity=\"sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo=\" crossorigin=\"anonymous\"></script><!-- Bootstrap --><link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.4.1/css/bootstrap.min.css\" integrity=\"sha256-bZLfwXAP04zRMK2BjiO8iu9pf4FbLqX6zitd+tIvLhE=\" crossorigin=\"anonymous\">\n<script src=\"https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.4.1/js/bootstrap.min.js\" integrity=\"sha256-nuL8/2cJ5NDSSwnKD8VqreErSWHtnEP9E7AySL+1ev4=\" crossorigin=\"anonymous\"></script><!-- bootstrap-toc --><link rel=\"stylesheet\" href=\"../bootstrap-toc.css\">\n<script src=\"../bootstrap-toc.js\"></script><!-- Font Awesome icons --><link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/all.min.css\" integrity=\"sha256-mmgLkCYLUQbXn0B1SRqzHar6dCnv9oZFPEC1g1cwlkk=\" crossorigin=\"anonymous\">\n<link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/v4-shims.min.css\" integrity=\"sha256-wZjR52fzng1pJHwx4aV2AO3yyTOXrcDW7jBpJtTwVxw=\" crossorigin=\"anonymous\">\n<!-- clipboard.js --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.6/clipboard.min.js\" integrity=\"sha256-inc5kl9MA1hkeYUt+EC3BhlIgyp/2jDIyBLS6k3UxPI=\" crossorigin=\"anonymous\"></script><!-- headroom.js --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/headroom.min.js\" integrity=\"sha256-AsUX4SJE1+yuDu5+mAVzJbuYNPHj/WroHuZ8Ir/CkE0=\" crossorigin=\"anonymous\"></script><script src=\"https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/jQuery.headroom.min.js\" integrity=\"sha256-ZX/yNShbjqsohH1k95liqY9Gd8uOiE1S4vZc+9KQ1K4=\" crossorigin=\"anonymous\"></script><!-- pkgdown --><link href=\"../pkgdown.css\" rel=\"stylesheet\">\n<script src=\"../pkgdown.js\"></script><meta property=\"og:title\" content=\"Authoring htmlwidgets powered by React with reactR\">\n<meta property=\"og:description\" content=\"reactR\">\n<!-- mathjax --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js\" integrity=\"sha256-nvJJv9wWKEm88qvoQl9ekL2J+k/RWIsaSScxxlsrv8k=\" crossorigin=\"anonymous\"></script><script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/config/TeX-AMS-MML_HTMLorMML.js\" integrity=\"sha256-84DKXVJXs0/F8OTMzX4UR909+jtl4G7SPypPavF+GfA=\" crossorigin=\"anonymous\"></script><!--[if lt IE 9]>\n<script src=\"https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js\"></script>\n<script src=\"https://oss.maxcdn.com/respond/1.4.2/respond.min.js\"></script>\n<![endif]-->\n</head>\n<body data-spy=\"scroll\" data-target=\"#toc\">\n    \n\n    <div class=\"container template-article\">\n      <header><div class=\"navbar navbar-default navbar-fixed-top\" role=\"navigation\">\n  <div class=\"container\">\n    <div class=\"navbar-header\">\n      <button type=\"button\" class=\"navbar-toggle collapsed\" data-toggle=\"collapse\" data-target=\"#navbar\" aria-expanded=\"false\">\n        <span class=\"sr-only\">Toggle navigation</span>\n        <span class=\"icon-bar\"></span>\n        <span class=\"icon-bar\"></span>\n        <span class=\"icon-bar\"></span>\n      </button>\n      <span class=\"navbar-brand\">\n        <a class=\"navbar-link\" href=\"../index.html\">reactR</a>\n        <span class=\"version label label-default\" data-toggle=\"tooltip\" data-placement=\"bottom\" title=\"\">0.6.1</span>\n      </span>\n    </div>\n\n    <div id=\"navbar\" class=\"navbar-collapse collapse\">\n      <ul class=\"nav navbar-nav\">\n<li>\n  <a href=\"../reference/index.html\">Reference</a>\n</li>\n<li class=\"dropdown\">\n  <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\" role=\"button\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\n    Articles\n     \n    <span class=\"caret\"></span>\n  </a>\n  <ul class=\"dropdown-menu\" role=\"menu\">\n<li>\n      <a href=\"../articles/intro_htmlwidgets.html\">Authoring htmlwidgets powered by React with reactR</a>\n    </li>\n    <li>\n      <a href=\"../articles/intro_inputs.html\">Authoring inputs powered by React with reactR</a>\n    </li>\n    <li>\n      <a href=\"../articles/intro_reactR.html\">Intro to reactR</a>\n    </li>\n  </ul>\n</li>\n<li>\n  <a href=\"../news/index.html\">Changelog</a>\n</li>\n      </ul>\n<ul class=\"nav navbar-nav navbar-right\">\n<li>\n  <a href=\"https://github.com/react-R/reactR/\" class=\"external-link\">\n    <span class=\"fab fa-github fa-lg\"></span>\n     \n  </a>\n</li>\n      </ul>\n</div>\n<!--/.nav-collapse -->\n  </div>\n<!--/.container -->\n</div>\n<!--/.navbar -->\n\n      \n\n      </header><div class=\"row\">\n  <div class=\"col-md-9 contents\">\n    <div class=\"page-header toc-ignore\">\n      <h1 data-toc-skip>Authoring htmlwidgets powered by React with\nreactR</h1>\n                        <h4 data-toc-skip class=\"author\">Alan\nDipert</h4>\n                        <h4 data-toc-skip class=\"author\">Carson\nSievert</h4>\n            \n            <h4 data-toc-skip class=\"date\">2024-09-14</h4>\n      \n      <small class=\"dont-index\">Source: <a href=\"https://github.com/react-R/reactR/blob/HEAD/vignettes/intro_htmlwidgets.Rmd\" class=\"external-link\"><code>vignettes/intro_htmlwidgets.Rmd</code></a></small>\n      <div class=\"hidden name\"><code>intro_htmlwidgets.Rmd</code></div>\n\n    </div>\n\n    \n    \n<p>The <a href=\"https://www.htmlwidgets.org\" class=\"external-link\">htmlwidgets</a> package\nprovides a framework for creating R bindings to JavaScript libraries.\nUsing the <strong>htmlwidgets</strong> package alone, it’s not\nnecessarily straight-forward to create an R binding to a <a href=\"https://reactjs.org/\" class=\"external-link\">React</a>-powered JavaScript library. The\n<strong>reactR</strong> package builds on the\n<strong>htmlwidgets</strong> framework to make it much easier to author\n<strong>htmlwidgets</strong> that are powered by React. This vignette\nwill show you how to effectively leverage <strong>reactR</strong> to\nbuild an <strong>htmlwidgets</strong> package that interfaces with <a href=\"https://github.com/borisyankov/react-sparklines\" class=\"external-link\">react-sparklines</a>\nReact JavaScript library.</p>\n<div class=\"section level2\">\n<h2 id=\"software-pre-requisites\">Software pre-requisites<a class=\"anchor\" aria-label=\"anchor\" href=\"#software-pre-requisites\"></a>\n</h2>\n<p>In order to develop a <strong>reactR</strong> widget, you’ll need to\ninstall R and optionally RStudio. If you’re on Windows, you should also\ninstall <a href=\"https://cran.r-project.org/bin/windows/Rtools/\" class=\"external-link\">Rtools</a>.</p>\n<blockquote>\n<p>For an excellent general introduction to R package concepts, check\nout the <a href=\"https://r-pkgs.org/\" class=\"external-link\">R packages</a> online book.</p>\n</blockquote>\n<p>In addition, you’ll need to install the following JavaScript tools on\nyour machine:</p>\n<ul>\n<li>\n<a href=\"https://nodejs.org\" class=\"external-link\">Node.js</a>: JavaScript engine and\nruntime for development outside of browsers. Provides the\n<code>node</code> and <code>npm</code> commands.</li>\n<li>\n<a href=\"https://classic.yarnpkg.com/en/\" class=\"external-link\">Yarn</a>: Command-line\ndependency management tool, provides the <code>yarn</code> command.</li>\n</ul>\n<p>To follow along in this vignette, you’ll also need the following R\npackages:</p>\n<div class=\"sourceCode\" id=\"cb1\"><pre class=\"downlit sourceCode r\">\n<code class=\"sourceCode R\"><span><span class=\"fu\"><a href=\"https://rdrr.io/r/utils/install.packages.html\" class=\"external-link\">install.packages</a></span><span class=\"op\">(</span><span class=\"fu\"><a href=\"https://rdrr.io/r/base/c.html\" class=\"external-link\">c</a></span><span class=\"op\">(</span><span class=\"st\">\"shiny\"</span>, <span class=\"st\">\"devtools\"</span>, <span class=\"st\">\"usethis\"</span>, <span class=\"st\">\"htmlwidgets\"</span>, <span class=\"st\">\"reactR\"</span><span class=\"op\">)</span><span class=\"op\">)</span></span></code></pre></div>\n</div>\n<div class=\"section level2\">\n<h2 id=\"scaffolding\">Scaffolding<a class=\"anchor\" aria-label=\"anchor\" href=\"#scaffolding\"></a>\n</h2>\n<p>To create a new widget you can call <code>scaffoldReactWidget</code>\nto generate the basic structure and build configuration. This function\nwill:</p>\n<ul>\n<li>Create the .R, .js, .yaml, and .json files required by your\nwidget;</li>\n<li>If provided, take an <a href=\"https://www.npmjs.com/\" class=\"external-link\">npm</a>\npackage name and version as a named list with <code>name</code> and\n<code>version</code> elements. For example, the npm package\n<code>foo</code> at version <code>^1.2.0</code> would be expressed as\n<code>list(name = \"foo\", version = \"^1.2.0\")</code>. The package, if\nprovided, will be added to the new widget’s <code>package.json</code> as\na build dependency.</li>\n</ul>\n<p>The following R code will create an R package named\n<strong>sparklines</strong>, then provide the templating for creating an\nhtmlwidget powered by the <code>react-sparklines</code> npm package:</p>\n<div class=\"sourceCode\" id=\"cb2\"><pre class=\"downlit sourceCode r\">\n<code class=\"sourceCode R\"><span><span class=\"co\"># Create the R package</span></span>\n<span><span class=\"fu\">usethis</span><span class=\"fu\">::</span><span class=\"fu\"><a href=\"https://usethis.r-lib.org/reference/create_package.html\" class=\"external-link\">create_package</a></span><span class=\"op\">(</span><span class=\"st\">\"~/sparklines\"</span><span class=\"op\">)</span></span>\n<span><span class=\"co\"># Inject the widget templating</span></span>\n<span><span class=\"fu\">withr</span><span class=\"fu\">::</span><span class=\"fu\"><a href=\"https://withr.r-lib.org/reference/with_dir.html\" class=\"external-link\">with_dir</a></span><span class=\"op\">(</span></span>\n<span>  <span class=\"st\">\"~/sparklines\"</span>, </span>\n<span>  <span class=\"fu\">reactR</span><span class=\"fu\">::</span><span class=\"fu\"><a href=\"../reference/scaffoldReactWidget.html\">scaffoldReactWidget</a></span><span class=\"op\">(</span><span class=\"st\">\"sparklines\"</span>, <span class=\"fu\"><a href=\"https://rdrr.io/r/base/list.html\" class=\"external-link\">list</a></span><span class=\"op\">(</span><span class=\"st\">\"react-sparklines\"</span> <span class=\"op\">=</span> <span class=\"st\">\"^1.7.0\"</span><span class=\"op\">)</span>, edit <span class=\"op\">=</span> <span class=\"cn\">FALSE</span><span class=\"op\">)</span></span>\n<span><span class=\"op\">)</span></span></code></pre></div>\n</div>\n<div class=\"section level2\">\n<h2 id=\"building-and-installing\">Building and installing<a class=\"anchor\" aria-label=\"anchor\" href=\"#building-and-installing\"></a>\n</h2>\n<div class=\"section level3\">\n<h3 id=\"building-the-javascript\">Building the JavaScript<a class=\"anchor\" aria-label=\"anchor\" href=\"#building-the-javascript\"></a>\n</h3>\n<p>The next step is to navigate to the newly-created\n<code>sparklines</code> project and run the following R commands:</p>\n<div class=\"sourceCode\" id=\"cb3\"><pre class=\"downlit sourceCode r\">\n<code class=\"sourceCode R\"><span><span class=\"fu\"><a href=\"https://rdrr.io/r/base/system.html\" class=\"external-link\">system</a></span><span class=\"op\">(</span><span class=\"st\">\"yarn install\"</span><span class=\"op\">)</span></span>\n<span><span class=\"fu\"><a href=\"https://rdrr.io/r/base/system.html\" class=\"external-link\">system</a></span><span class=\"op\">(</span><span class=\"st\">\"yarn run webpack\"</span><span class=\"op\">)</span></span></code></pre></div>\n<ul>\n<li><p><code>yarn install</code> downloads all of the dependencies\nlisted in <code>package.json</code> and creates a new file,\n<code>yarn.lock</code>. You should add this file to revision control. It\nwill be updated whenever you change dependencies and run\n<code>yarn install</code>. <strong>Note: you only need to run it after\nmodifying package.json</strong>. For further documentation on\n<code>yarn install</code>, see the <a href=\"https://classic.yarnpkg.com/en/docs/cli/install/\" class=\"external-link\">yarn\ndocumentation</a>.</p></li>\n<li><p><code>yarn run webpack</code> compiles the <a href=\"https://babeljs.io/docs/en/learn/\" class=\"external-link\">ES2015</a> JavaScript source\nfile at <code>srcjs/sparklines.js</code> into\n<code>inst/htmlwidgets/sparklines.js</code>. The later file is one\nactually used by the R package and includes all the relevant JavaScript\ndependencies in a version of JavaScript that most browsers understand.\nNote that, if you add <code>--mode=development</code> to the end of this\ncommand, it will include a <a href=\"https://firefox-source-docs.mozilla.org/devtools-user/debugger/how_to/use_a_source_map/index.html\" class=\"external-link\">source\nmap</a> is included with the compiled JavaScript, which makes JavaScript\ndebugging much easier, but hopefully you won’t need to do much of any\nJavaScript debugging.</p></li>\n</ul>\n<p><code>yarn run webpack</code> is not strictly a <code>yarn</code>\ncommand. In fact, <code>yarn run</code> simply delegates to the <a href=\"https://webpack.js.org/\" class=\"external-link\">webpack</a> program. Webpack’s\nconfiguration is generated by <code>scaffoldReactWidget</code> in the\nfile <code>webpack.config.js</code>, but you can always change this\nconfiguration and/or modify the <code>yarn run webpack</code> command to\nsuit your needs.</p>\n</div>\n<div class=\"section level3\">\n<h3 id=\"installing-the-r-package\">Installing the R package<a class=\"anchor\" aria-label=\"anchor\" href=\"#installing-the-r-package\"></a>\n</h3>\n<p>Now that the widget’s JavaScript is compiled, go ahead and install\nthe R package:</p>\n<div class=\"sourceCode\" id=\"cb4\"><pre class=\"downlit sourceCode r\">\n<code class=\"sourceCode R\"><span><span class=\"fu\">devtools</span><span class=\"fu\">::</span><span class=\"fu\"><a href=\"https://devtools.r-lib.org/reference/document.html\" class=\"external-link\">document</a></span><span class=\"op\">(</span><span class=\"op\">)</span></span>\n<span><span class=\"fu\">devtools</span><span class=\"fu\">::</span><span class=\"fu\"><a href=\"https://devtools.r-lib.org/reference/install.html\" class=\"external-link\">install</a></span><span class=\"op\">(</span>quick <span class=\"op\">=</span> <span class=\"cn\">TRUE</span><span class=\"op\">)</span></span></code></pre></div>\n<p>Alternatively, in RStudio, you can use the keyboard shortcuts\n<code>Ctrl+Shift+D</code> and <code>Ctrl-Shift-B</code> to document and\nbuild the package. (On macOS, the shortcuts are <code>Cmd+Shift+D</code>\nand <code>Cmd+Shift+B</code>)</p>\n</div>\n</div>\n<div class=\"section level2\">\n<h2 id=\"run-the-included-demo\">Run the included demo<a class=\"anchor\" aria-label=\"anchor\" href=\"#run-the-included-demo\"></a>\n</h2>\n<p>Now that the widget’s JavaScript is compiled, and the R package is\ninstalled, run <code>app.R</code> to see a demo in action:</p>\n<div class=\"sourceCode\" id=\"cb5\"><pre class=\"downlit sourceCode r\">\n<code class=\"sourceCode R\"><span><span class=\"fu\">shiny</span><span class=\"fu\">::</span><span class=\"fu\"><a href=\"https://rdrr.io/pkg/shiny/man/runApp.html\" class=\"external-link\">runApp</a></span><span class=\"op\">(</span><span class=\"op\">)</span></span></code></pre></div>\n<p>Alternatively, in RStudio, you can open <code>app.R</code> and press\n<code>Ctrl-Shift-Enter</code> (<code>Cmd-Shift-Enter</code> on macOS).\nYou should see something like the following appear in the Viewer\npane:</p>\n<p><img src=\"widget_app.jpg\"></p>\n</div>\n<div class=\"section level2\">\n<h2 id=\"authoring-a-react-binding\">Authoring a React binding<a class=\"anchor\" aria-label=\"anchor\" href=\"#authoring-a-react-binding\"></a>\n</h2>\n<p>At this point, we’ve built some scaffolding for an htmlwidget powered\nby React. Let’s modify it to create an interface to the\n<code>react-sparklines</code> library. Authoring the interface requires\nsome changes on both the JavaScript and R side, but most of the hard\nthinking will be in figuring how best to design your interface. To give\nyou an example of how this could work, let’s build an interface to the\n<code>Sparklines</code> component of the react-sparklines library.</p>\n<div class=\"section level3\">\n<h3 id=\"first-outline-an-interface\">First, outline an interface<a class=\"anchor\" aria-label=\"anchor\" href=\"#first-outline-an-interface\"></a>\n</h3>\n<blockquote>\n<p>Note that the examples in this section are just to demonstrate API\npossibilities and need not be pasted into any file.</p>\n</blockquote>\n<p>Consider the following example taken from the <a href=\"http://borisyankov.github.io/react-sparklines/\" class=\"external-link\">react-sparklines\ndocumentation</a>.</p>\n<div class=\"sourceCode\" id=\"cb6\"><pre class=\"sourceCode js\"><code class=\"sourceCode javascript\"><span id=\"cb6-1\"><a href=\"#cb6-1\" tabindex=\"-1\"></a><span class=\"im\">import</span> React <span class=\"im\">from</span> <span class=\"st\">'react'</span><span class=\"op\">;</span></span>\n<span id=\"cb6-2\"><a href=\"#cb6-2\" tabindex=\"-1\"></a><span class=\"im\">import</span> { Sparklines } <span class=\"im\">from</span> <span class=\"st\">'react-sparklines'</span><span class=\"op\">;</span></span>\n<span id=\"cb6-3\"><a href=\"#cb6-3\" tabindex=\"-1\"></a></span>\n<span id=\"cb6-4\"><a href=\"#cb6-4\" tabindex=\"-1\"></a><span class=\"op\">&lt;</span>Sparklines data<span class=\"op\">=</span>{sampleData}<span class=\"op\">&gt;</span></span>\n<span id=\"cb6-5\"><a href=\"#cb6-5\" tabindex=\"-1\"></a>  <span class=\"op\">&lt;</span>SparklinesLine color<span class=\"op\">=</span><span class=\"st\">\"#56b45d\"</span> <span class=\"op\">/&gt;</span></span>\n<span id=\"cb6-6\"><a href=\"#cb6-6\" tabindex=\"-1\"></a>  <span class=\"op\">&lt;</span>SparklinesSpots style<span class=\"op\">=</span>{{ <span class=\"dt\">fill</span><span class=\"op\">:</span> <span class=\"st\">\"#56b45d\"</span> }} <span class=\"op\">/&gt;</span></span>\n<span id=\"cb6-7\"><a href=\"#cb6-7\" tabindex=\"-1\"></a><span class=\"op\">&lt;/</span>Sparklines<span class=\"op\">&gt;</span></span></code></pre></div>\n<p>You have some choice in terms of how to design an R interface to this\nsort of React library, but usually it makes sense to have one function\nper component and have the arguments to that function feed into the\nproperties of that React component. In other words, our goal is to\ncreate an R function that allows users of our package to recreate this\nexample with the following code:</p>\n<div class=\"sourceCode\" id=\"cb7\"><pre class=\"downlit sourceCode r\">\n<code class=\"sourceCode R\"><span><span class=\"kw\"><a href=\"https://rdrr.io/r/base/library.html\" class=\"external-link\">library</a></span><span class=\"op\">(</span><span class=\"va\">sparklines</span><span class=\"op\">)</span></span>\n<span><span class=\"fu\">sparklines</span><span class=\"op\">(</span></span>\n<span>  data <span class=\"op\">=</span> <span class=\"va\">sampleData</span>,</span>\n<span>  <span class=\"fu\">sparklinesLine</span><span class=\"op\">(</span>color <span class=\"op\">=</span> <span class=\"st\">\"#56b45d\"</span><span class=\"op\">)</span>,</span>\n<span>  <span class=\"fu\">sparklinesSpots</span><span class=\"op\">(</span>style <span class=\"op\">=</span> <span class=\"fu\"><a href=\"https://rdrr.io/r/base/list.html\" class=\"external-link\">list</a></span><span class=\"op\">(</span>fill <span class=\"op\">=</span> <span class=\"st\">\"#56b45d\"</span><span class=\"op\">)</span><span class=\"op\">)</span></span>\n<span><span class=\"op\">)</span></span></code></pre></div>\n<p>The following sections show how to implement this R interface from\nour scaffolded widget.</p>\n</div>\n<div class=\"section level3\">\n<h3 id=\"r-implementation\">R implementation<a class=\"anchor\" aria-label=\"anchor\" href=\"#r-implementation\"></a>\n</h3>\n<p>Consider the template that <code><a href=\"../reference/scaffoldReactWidget.html\">reactR::scaffoldReactWidget()</a></code>\nprovided for us:</p>\n<div class=\"sourceCode\" id=\"cb8\"><pre class=\"downlit sourceCode r\">\n<code class=\"sourceCode R\"><span><span class=\"va\">sparklines</span> <span class=\"op\">&lt;-</span> <span class=\"kw\">function</span><span class=\"op\">(</span><span class=\"va\">message</span>, <span class=\"va\">width</span> <span class=\"op\">=</span> <span class=\"cn\">NULL</span>, <span class=\"va\">height</span> <span class=\"op\">=</span> <span class=\"cn\">NULL</span>, <span class=\"va\">elementId</span> <span class=\"op\">=</span> <span class=\"cn\">NULL</span><span class=\"op\">)</span> <span class=\"op\">{</span></span>\n<span>  </span>\n<span>  <span class=\"co\"># describe a React component to send to the browser for rendering.</span></span>\n<span>  <span class=\"va\">content</span> <span class=\"op\">&lt;-</span> <span class=\"fu\">htmltools</span><span class=\"fu\">::</span><span class=\"fu\"><a href=\"https://rstudio.github.io/htmltools/reference/builder.html\" class=\"external-link\">tag</a></span><span class=\"op\">(</span><span class=\"st\">\"div\"</span>, <span class=\"fu\"><a href=\"https://rdrr.io/r/base/list.html\" class=\"external-link\">list</a></span><span class=\"op\">(</span><span class=\"va\">message</span><span class=\"op\">)</span><span class=\"op\">)</span></span>\n<span>  </span>\n<span>  <span class=\"co\"># create widget</span></span>\n<span>  <span class=\"fu\">htmlwidgets</span><span class=\"fu\">::</span><span class=\"fu\"><a href=\"https://rdrr.io/pkg/htmlwidgets/man/createWidget.html\" class=\"external-link\">createWidget</a></span><span class=\"op\">(</span></span>\n<span>    name <span class=\"op\">=</span> <span class=\"st\">'sparklines'</span>,</span>\n<span>    <span class=\"fu\">reactR</span><span class=\"fu\">::</span><span class=\"fu\"><a href=\"../reference/reactMarkup.html\">reactMarkup</a></span><span class=\"op\">(</span><span class=\"va\">content</span><span class=\"op\">)</span>,</span>\n<span>    width <span class=\"op\">=</span> <span class=\"va\">width</span>,</span>\n<span>    height <span class=\"op\">=</span> <span class=\"va\">height</span>,</span>\n<span>    package <span class=\"op\">=</span> <span class=\"st\">'sparklines'</span>,</span>\n<span>    elementId <span class=\"op\">=</span> <span class=\"va\">elementId</span></span>\n<span>  <span class=\"op\">)</span></span>\n<span><span class=\"op\">}</span></span></code></pre></div>\n<p>This function is designed to simply display a message within an HTML\ndiv using <strong>reactR</strong> and <strong>htmlwidgets</strong>. The\ncritical piece here that makes it all work is\n<code><a href=\"../reference/reactMarkup.html\">reactR::reactMarkup()</a></code>. This function can prepare a payload\ncontaining a mix of HTML tags (constructed via\n<code><a href=\"https://rstudio.github.io/htmltools/reference/builder.html\" class=\"external-link\">htmltools::tag()</a></code>), React components (constructed via\n<code><a href=\"../reference/component.html\">reactR::component()</a></code>), or character vectors in a such way\nthat the <strong>reactR</strong> and <strong>htmlwidgets</strong>\ntoolchain will understand and know how to render in the browser\n(assuming we’ve imported our React component appropriately, as we cover\nlater). Thus, to send a <code>&lt;Sparklines&gt;</code> react component\ninstead of an HTML <code>&lt;div&gt;</code>, we could simply change:</p>\n<div class=\"sourceCode\" id=\"cb9\"><pre class=\"downlit sourceCode r\">\n<code class=\"sourceCode R\"><span><span class=\"va\">content</span> <span class=\"op\">&lt;-</span> <span class=\"fu\">htmltools</span><span class=\"fu\">::</span><span class=\"fu\"><a href=\"https://rstudio.github.io/htmltools/reference/builder.html\" class=\"external-link\">tag</a></span><span class=\"op\">(</span><span class=\"st\">\"div\"</span>, <span class=\"fu\"><a href=\"https://rdrr.io/r/base/list.html\" class=\"external-link\">list</a></span><span class=\"op\">(</span><span class=\"va\">message</span><span class=\"op\">)</span><span class=\"op\">)</span></span></code></pre></div>\n<p>to</p>\n<div class=\"sourceCode\" id=\"cb10\"><pre class=\"downlit sourceCode r\">\n<code class=\"sourceCode R\"><span><span class=\"fu\">reactR</span><span class=\"fu\">::</span><span class=\"fu\"><a href=\"../reference/component.html\">component</a></span><span class=\"op\">(</span><span class=\"st\">\"Sparklines\"</span>, <span class=\"fu\"><a href=\"https://rdrr.io/r/base/list.html\" class=\"external-link\">list</a></span><span class=\"op\">(</span><span class=\"va\">message</span><span class=\"op\">)</span><span class=\"op\">)</span></span></code></pre></div>\n<p>Remember, though, that we’d like <code>&lt;Sparklines&gt;</code> to\nconsume a <code>data</code> property and also accept other valid\ncomponents (e.g., <code>&lt;SparklinesLine&gt;</code>,\n<code>&lt;SparklinesSpot&gt;</code>, etc) from this library as children.\nSo, we could change the body and signature of <code>sparklines()</code>\nin the following way:</p>\n<div class=\"sourceCode\" id=\"cb11\"><pre class=\"downlit sourceCode r\">\n<code class=\"sourceCode R\"><span><span class=\"va\">sparklines</span> <span class=\"op\">&lt;-</span> <span class=\"kw\">function</span><span class=\"op\">(</span><span class=\"va\">data</span>, <span class=\"va\">...</span>, <span class=\"va\">width</span> <span class=\"op\">=</span> <span class=\"cn\">NULL</span>, <span class=\"va\">height</span> <span class=\"op\">=</span> <span class=\"cn\">NULL</span><span class=\"op\">)</span> <span class=\"op\">{</span></span>\n<span>  </span>\n<span>  <span class=\"co\"># describe a React component to send to the browser for rendering.</span></span>\n<span>  <span class=\"va\">content</span> <span class=\"op\">&lt;-</span> <span class=\"fu\">reactR</span><span class=\"fu\">::</span><span class=\"fu\"><a href=\"../reference/component.html\">component</a></span><span class=\"op\">(</span></span>\n<span>    <span class=\"st\">\"Sparklines\"</span>,</span>\n<span>    <span class=\"fu\"><a href=\"https://rdrr.io/r/base/list.html\" class=\"external-link\">list</a></span><span class=\"op\">(</span>data <span class=\"op\">=</span> <span class=\"va\">data</span>, <span class=\"va\">...</span><span class=\"op\">)</span></span>\n<span>  <span class=\"op\">)</span></span>\n<span>  </span>\n<span>  <span class=\"co\"># create widget</span></span>\n<span>  <span class=\"fu\">htmlwidgets</span><span class=\"fu\">::</span><span class=\"fu\"><a href=\"https://rdrr.io/pkg/htmlwidgets/man/createWidget.html\" class=\"external-link\">createWidget</a></span><span class=\"op\">(</span></span>\n<span>    name <span class=\"op\">=</span> <span class=\"st\">'sparklines'</span>,</span>\n<span>    <span class=\"fu\">reactR</span><span class=\"fu\">::</span><span class=\"fu\"><a href=\"../reference/reactMarkup.html\">reactMarkup</a></span><span class=\"op\">(</span><span class=\"va\">content</span><span class=\"op\">)</span>,</span>\n<span>    width <span class=\"op\">=</span> <span class=\"va\">width</span>,</span>\n<span>    height <span class=\"op\">=</span> <span class=\"va\">height</span>,</span>\n<span>    package <span class=\"op\">=</span> <span class=\"st\">'sparklines'</span></span>\n<span>  <span class=\"op\">)</span></span>\n<span><span class=\"op\">}</span></span></code></pre></div>\n<p>At this point, we define functions that make it easy for the user to\ncreate the other components by adding these to\n<code>R/sparklines.R</code></p>\n<div class=\"sourceCode\" id=\"cb12\"><pre class=\"downlit sourceCode r\">\n<code class=\"sourceCode R\"><span><span class=\"co\">#' @export</span></span>\n<span><span class=\"va\">sparklinesLine</span> <span class=\"op\">&lt;-</span> <span class=\"kw\">function</span><span class=\"op\">(</span><span class=\"va\">...</span><span class=\"op\">)</span> <span class=\"op\">{</span></span>\n<span>  <span class=\"fu\">reactR</span><span class=\"fu\">::</span><span class=\"va\"><a href=\"../reference/React.html\">React</a></span><span class=\"op\">$</span><span class=\"fu\">SparklinesLine</span><span class=\"op\">(</span><span class=\"va\">...</span><span class=\"op\">)</span></span>\n<span><span class=\"op\">}</span></span>\n<span></span>\n<span><span class=\"co\">#' @export</span></span>\n<span><span class=\"va\">sparklinesSpots</span> <span class=\"op\">&lt;-</span> <span class=\"kw\">function</span><span class=\"op\">(</span><span class=\"va\">...</span><span class=\"op\">)</span> <span class=\"op\">{</span></span>\n<span>  <span class=\"fu\">reactR</span><span class=\"fu\">::</span><span class=\"va\"><a href=\"../reference/React.html\">React</a></span><span class=\"op\">$</span><span class=\"fu\">SparklinesSpots</span><span class=\"op\">(</span><span class=\"va\">...</span><span class=\"op\">)</span></span>\n<span><span class=\"op\">}</span></span></code></pre></div>\n</div>\n<div class=\"section level3\">\n<h3 id=\"javascript-changes\">JavaScript changes<a class=\"anchor\" aria-label=\"anchor\" href=\"#javascript-changes\"></a>\n</h3>\n<p>In order for the <strong>reactR</strong> toolchain to know how to\nrender components from the ‘react-sparklines’ library, we need to\nregister the React components on the JavaScript side. This can be done\nin the <code>srcjs/sparklines.js</code> file which currently looks like\nthis:</p>\n<div class=\"sourceCode\" id=\"cb13\"><pre class=\"sourceCode js\"><code class=\"sourceCode javascript\"><span id=\"cb13-1\"><a href=\"#cb13-1\" tabindex=\"-1\"></a><span class=\"im\">import</span> { reactWidget } <span class=\"im\">from</span> <span class=\"st\">'reactR'</span><span class=\"op\">;</span></span>\n<span id=\"cb13-2\"><a href=\"#cb13-2\" tabindex=\"-1\"></a></span>\n<span id=\"cb13-3\"><a href=\"#cb13-3\" tabindex=\"-1\"></a><span class=\"fu\">reactWidget</span>(<span class=\"st\">'sparklines'</span><span class=\"op\">,</span> <span class=\"st\">'output'</span><span class=\"op\">,</span> {})<span class=\"op\">;</span></span></code></pre></div>\n<p>First, <code>reactWidget</code> is <a href=\"https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/import\" class=\"external-link\">imported</a>\nfrom the <code>'reactR'</code> JavaScript module. This function will\nregister the React components we want within the <strong>reactR</strong>\nand <strong>htmlwidgets</strong> toolchain. Note that the\n<code>'reactR'</code> JavaScript is an html dependency, but webpack is\nconfigured in <code>webpack.config.js</code> to consider it a module, so\nit’s available to us here via <code>import</code> syntax.</p>\n<p>Then, there’s a call to <code>reactWidget</code>, and we pass it\nthree arguments:</p>\n<ol style=\"list-style-type: decimal\">\n<li>The name of the widget (<code>'sparklines'</code>)</li>\n<li>The type of the widget (<code>'output'</code>)</li>\n<li>The React components that should be exposed to the widget. In this\ntemplate, we didn’t have to include any because it’s just rendering an\nHTML div.</li>\n</ol>\n<p>Instead of passing an empty object (<code><a href=\"https://rdrr.io/r/base/Paren.html\" class=\"external-link\">{}</a></code>) as the React\ncomponents, we provide an object with all the components we need from\nthe ‘react-sparklines’ module:</p>\n<div class=\"sourceCode\" id=\"cb14\"><pre class=\"sourceCode js\"><code class=\"sourceCode javascript\"><span id=\"cb14-1\"><a href=\"#cb14-1\" tabindex=\"-1\"></a><span class=\"im\">import</span> { Sparklines<span class=\"op\">,</span> SparklinesLine<span class=\"op\">,</span> SparklinesSpots } <span class=\"im\">from</span> <span class=\"st\">'react-sparklines'</span><span class=\"op\">;</span></span>\n<span id=\"cb14-2\"><a href=\"#cb14-2\" tabindex=\"-1\"></a><span class=\"im\">import</span> { reactWidget } <span class=\"im\">from</span> <span class=\"st\">'reactR'</span><span class=\"op\">;</span></span>\n<span id=\"cb14-3\"><a href=\"#cb14-3\" tabindex=\"-1\"></a></span>\n<span id=\"cb14-4\"><a href=\"#cb14-4\" tabindex=\"-1\"></a><span class=\"fu\">reactWidget</span>(<span class=\"st\">'sparklines'</span><span class=\"op\">,</span> <span class=\"st\">'output'</span><span class=\"op\">,</span> {</span>\n<span id=\"cb14-5\"><a href=\"#cb14-5\" tabindex=\"-1\"></a>  <span class=\"dt\">Sparklines</span><span class=\"op\">:</span> Sparklines<span class=\"op\">,</span></span>\n<span id=\"cb14-6\"><a href=\"#cb14-6\" tabindex=\"-1\"></a>  <span class=\"dt\">SparklinesLine</span><span class=\"op\">:</span> SparklinesLine<span class=\"op\">,</span></span>\n<span id=\"cb14-7\"><a href=\"#cb14-7\" tabindex=\"-1\"></a>  <span class=\"dt\">SparklinesSpots</span><span class=\"op\">:</span> SparklinesSpots</span>\n<span id=\"cb14-8\"><a href=\"#cb14-8\" tabindex=\"-1\"></a>})<span class=\"op\">;</span></span></code></pre></div>\n</div>\n<div class=\"section level3\">\n<h3 id=\"go-for-a-spin\">Go for a spin<a class=\"anchor\" aria-label=\"anchor\" href=\"#go-for-a-spin\"></a>\n</h3>\n<p>Now that we’ve made the necessary changes to the JavaScript and R\nsource code, it’s time to compile the JavaScript and install the R\npackage:</p>\n<div class=\"sourceCode\" id=\"cb15\"><pre class=\"downlit sourceCode r\">\n<code class=\"sourceCode R\"><span><span class=\"fu\"><a href=\"https://rdrr.io/r/base/system.html\" class=\"external-link\">system</a></span><span class=\"op\">(</span><span class=\"st\">\"yarn install\"</span><span class=\"op\">)</span></span>\n<span><span class=\"fu\"><a href=\"https://rdrr.io/r/base/system.html\" class=\"external-link\">system</a></span><span class=\"op\">(</span><span class=\"st\">\"yarn run webpack\"</span><span class=\"op\">)</span></span>\n<span><span class=\"fu\">devtools</span><span class=\"fu\">::</span><span class=\"fu\"><a href=\"https://devtools.r-lib.org/reference/document.html\" class=\"external-link\">document</a></span><span class=\"op\">(</span><span class=\"op\">)</span></span>\n<span><span class=\"fu\">devtools</span><span class=\"fu\">::</span><span class=\"fu\"><a href=\"https://devtools.r-lib.org/reference/install.html\" class=\"external-link\">install</a></span><span class=\"op\">(</span><span class=\"op\">)</span></span>\n<span><span class=\"kw\"><a href=\"https://rdrr.io/r/base/library.html\" class=\"external-link\">library</a></span><span class=\"op\">(</span><span class=\"va\">sparklines</span><span class=\"op\">)</span></span>\n<span><span class=\"fu\">sparklines</span><span class=\"op\">(</span><span class=\"fu\"><a href=\"https://rdrr.io/r/stats/Normal.html\" class=\"external-link\">rnorm</a></span><span class=\"op\">(</span><span class=\"fl\">10</span><span class=\"op\">)</span>, <span class=\"fu\">sparklinesLine</span><span class=\"op\">(</span><span class=\"op\">)</span><span class=\"op\">)</span></span></code></pre></div>\n<p>This should open up the <code>sparklines()</code> widget in your\nbrowser. If it does, congratulations, you created a React-based\nhtmlwidget!</p>\n</div>\n<div class=\"section level3\">\n<h3 id=\"shiny-integration\">Shiny integration<a class=\"anchor\" aria-label=\"anchor\" href=\"#shiny-integration\"></a>\n</h3>\n<p>The scaffolding template already provides the glue you need to get\nyour <strong>reactR</strong> widget to render in <strong>Shiny</strong>.\nThe two relevant functions are <code>renderSparklines()</code> and\n<code>sparklinesOutput()</code>. You shouldn’t need to modify these\nfunctions — they should work out of the box. You will, however, want to\nmodify the example <strong>Shiny</strong> app in the <code>app.R</code>\nfile:</p>\n<div class=\"sourceCode\" id=\"cb16\"><pre class=\"downlit sourceCode r\">\n<code class=\"sourceCode R\"><span><span class=\"kw\"><a href=\"https://rdrr.io/r/base/library.html\" class=\"external-link\">library</a></span><span class=\"op\">(</span><span class=\"va\"><a href=\"https://shiny.posit.co/\" class=\"external-link\">shiny</a></span><span class=\"op\">)</span></span>\n<span><span class=\"kw\"><a href=\"https://rdrr.io/r/base/library.html\" class=\"external-link\">library</a></span><span class=\"op\">(</span><span class=\"va\">sparklines</span><span class=\"op\">)</span></span>\n<span></span>\n<span><span class=\"va\">ui</span> <span class=\"op\">&lt;-</span> <span class=\"fu\"><a href=\"https://rdrr.io/pkg/shiny/man/fluidPage.html\" class=\"external-link\">fluidPage</a></span><span class=\"op\">(</span></span>\n<span>  <span class=\"fu\"><a href=\"https://rdrr.io/pkg/shiny/man/titlePanel.html\" class=\"external-link\">titlePanel</a></span><span class=\"op\">(</span><span class=\"st\">\"Sparklines library\"</span><span class=\"op\">)</span>,</span>\n<span>  <span class=\"fu\"><a href=\"https://rdrr.io/pkg/shiny/man/sliderInput.html\" class=\"external-link\">sliderInput</a></span><span class=\"op\">(</span><span class=\"st\">\"n\"</span>, label <span class=\"op\">=</span> <span class=\"st\">\"Number of samples\"</span>, min <span class=\"op\">=</span> <span class=\"fl\">2</span>, max <span class=\"op\">=</span> <span class=\"fl\">1000</span>, value <span class=\"op\">=</span> <span class=\"fl\">100</span><span class=\"op\">)</span>,</span>\n<span>  <span class=\"fu\">sparklinesOutput</span><span class=\"op\">(</span><span class=\"st\">\"myWidget\"</span><span class=\"op\">)</span></span>\n<span><span class=\"op\">)</span></span>\n<span></span>\n<span><span class=\"va\">server</span> <span class=\"op\">&lt;-</span> <span class=\"kw\">function</span><span class=\"op\">(</span><span class=\"va\">input</span>, <span class=\"va\">output</span>, <span class=\"va\">session</span><span class=\"op\">)</span> <span class=\"op\">{</span></span>\n<span>    <span class=\"va\">output</span><span class=\"op\">$</span><span class=\"va\">myWidget</span> <span class=\"op\">&lt;-</span> <span class=\"fu\">renderSparklines</span><span class=\"op\">(</span><span class=\"op\">{</span></span>\n<span>        <span class=\"fu\">sparklines</span><span class=\"op\">(</span></span>\n<span>            <span class=\"fu\"><a href=\"https://rdrr.io/r/stats/Normal.html\" class=\"external-link\">rnorm</a></span><span class=\"op\">(</span><span class=\"va\">input</span><span class=\"op\">$</span><span class=\"va\">n</span><span class=\"op\">)</span>,</span>\n<span>            <span class=\"fu\">sparklinesLine</span><span class=\"op\">(</span><span class=\"op\">)</span></span>\n<span>        <span class=\"op\">)</span></span>\n<span>    <span class=\"op\">}</span><span class=\"op\">)</span></span>\n<span><span class=\"op\">}</span></span>\n<span></span>\n<span><span class=\"fu\"><a href=\"https://rdrr.io/pkg/shiny/man/shinyApp.html\" class=\"external-link\">shinyApp</a></span><span class=\"op\">(</span><span class=\"va\">ui</span>, <span class=\"va\">server</span><span class=\"op\">)</span></span></code></pre></div>\n<p>Now, when you run <code><a href=\"https://rdrr.io/pkg/shiny/man/runApp.html\" class=\"external-link\">shiny::runApp()</a></code>, you should see your\nreact-based htmlwidget rendering in <strong>shiny</strong> app!</p>\n<p><img src=\"widget_app_improved.jpg\"></p>\n</div>\n</div>\n<div class=\"section level2\">\n<h2 id=\"further-learning\">Further learning<a class=\"anchor\" aria-label=\"anchor\" href=\"#further-learning\"></a>\n</h2>\n<p>This tutorial walked you through the steps taken you create an R\ninterface to the react-sparklines library. The full example package is\naccessible at <a href=\"https://github.com/react-R/sparklines-example\" class=\"external-link uri\">https://github.com/react-R/sparklines-example</a>. Our\nintention is keep creating example packages under the <a href=\"https://github.com/react-R\" class=\"external-link uri\">https://github.com/react-R</a> organization, so head there\nif you’d like to see other examples of interfacing with React.</p>\n</div>\n  </div>\n\n  <div class=\"col-md-3 hidden-xs hidden-sm\" id=\"pkgdown-sidebar\">\n\n        <nav id=\"toc\" data-toggle=\"toc\"><h2 data-toc-skip>Contents</h2>\n    </nav>\n</div>\n\n</div>\n\n\n\n      <footer><div class=\"copyright\">\n  <p></p>\n<p>Developed by Facebook Inc, Michel Weststrate, Kent Russell, Alan Dipert, Greg Lin.</p>\n</div>\n\n<div class=\"pkgdown\">\n  <p></p>\n<p>Site built with <a href=\"https://pkgdown.r-lib.org/\" class=\"external-link\">pkgdown</a> 2.0.7.</p>\n</div>\n\n      </footer>\n</div>\n\n  \n\n\n  \n\n  </body>\n</html>\n"
  },
  {
    "path": "docs/articles/intro_htmlwidgets_files/accessible-code-block-0.0.1/empty-anchor.js",
    "content": "// Hide empty <a> tag within highlighted CodeBlock for screen reader accessibility (see https://github.com/jgm/pandoc/issues/6352#issuecomment-626106786) -->\n// v0.0.1\n// Written by JooYoung Seo (jooyoung@psu.edu) and Atsushi Yasumoto on June 1st, 2020.\n\ndocument.addEventListener('DOMContentLoaded', function() {\n  const codeList = document.getElementsByClassName(\"sourceCode\");\n  for (var i = 0; i < codeList.length; i++) {\n    var linkList = codeList[i].getElementsByTagName('a');\n    for (var j = 0; j < linkList.length; j++) {\n      if (linkList[j].innerHTML === \"\") {\n        linkList[j].setAttribute('aria-hidden', 'true');\n      }\n    }\n  }\n});\n"
  },
  {
    "path": "docs/articles/intro_inputs.html",
    "content": "<!DOCTYPE html>\n<!-- Generated by pkgdown: do not edit by hand --><html lang=\"en\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\">\n<meta charset=\"utf-8\">\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\">\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n<title>Authoring inputs powered by React with reactR • reactR</title>\n<!-- favicons --><link rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"../favicon-16x16.png\">\n<link rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"../favicon-32x32.png\">\n<link rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"../apple-touch-icon.png\">\n<link rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"120x120\" href=\"../apple-touch-icon-120x120.png\">\n<link rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"76x76\" href=\"../apple-touch-icon-76x76.png\">\n<link rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"60x60\" href=\"../apple-touch-icon-60x60.png\">\n<!-- jquery --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js\" integrity=\"sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo=\" crossorigin=\"anonymous\"></script><!-- Bootstrap --><link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.4.1/css/bootstrap.min.css\" integrity=\"sha256-bZLfwXAP04zRMK2BjiO8iu9pf4FbLqX6zitd+tIvLhE=\" crossorigin=\"anonymous\">\n<script src=\"https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.4.1/js/bootstrap.min.js\" integrity=\"sha256-nuL8/2cJ5NDSSwnKD8VqreErSWHtnEP9E7AySL+1ev4=\" crossorigin=\"anonymous\"></script><!-- bootstrap-toc --><link rel=\"stylesheet\" href=\"../bootstrap-toc.css\">\n<script src=\"../bootstrap-toc.js\"></script><!-- Font Awesome icons --><link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/all.min.css\" integrity=\"sha256-mmgLkCYLUQbXn0B1SRqzHar6dCnv9oZFPEC1g1cwlkk=\" crossorigin=\"anonymous\">\n<link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/v4-shims.min.css\" integrity=\"sha256-wZjR52fzng1pJHwx4aV2AO3yyTOXrcDW7jBpJtTwVxw=\" crossorigin=\"anonymous\">\n<!-- clipboard.js --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.6/clipboard.min.js\" integrity=\"sha256-inc5kl9MA1hkeYUt+EC3BhlIgyp/2jDIyBLS6k3UxPI=\" crossorigin=\"anonymous\"></script><!-- headroom.js --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/headroom.min.js\" integrity=\"sha256-AsUX4SJE1+yuDu5+mAVzJbuYNPHj/WroHuZ8Ir/CkE0=\" crossorigin=\"anonymous\"></script><script src=\"https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/jQuery.headroom.min.js\" integrity=\"sha256-ZX/yNShbjqsohH1k95liqY9Gd8uOiE1S4vZc+9KQ1K4=\" crossorigin=\"anonymous\"></script><!-- pkgdown --><link href=\"../pkgdown.css\" rel=\"stylesheet\">\n<script src=\"../pkgdown.js\"></script><meta property=\"og:title\" content=\"Authoring inputs powered by React with reactR\">\n<meta property=\"og:description\" content=\"reactR\">\n<!-- mathjax --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js\" integrity=\"sha256-nvJJv9wWKEm88qvoQl9ekL2J+k/RWIsaSScxxlsrv8k=\" crossorigin=\"anonymous\"></script><script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/config/TeX-AMS-MML_HTMLorMML.js\" integrity=\"sha256-84DKXVJXs0/F8OTMzX4UR909+jtl4G7SPypPavF+GfA=\" crossorigin=\"anonymous\"></script><!--[if lt IE 9]>\n<script src=\"https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js\"></script>\n<script src=\"https://oss.maxcdn.com/respond/1.4.2/respond.min.js\"></script>\n<![endif]-->\n</head>\n<body data-spy=\"scroll\" data-target=\"#toc\">\n    \n\n    <div class=\"container template-article\">\n      <header><div class=\"navbar navbar-default navbar-fixed-top\" role=\"navigation\">\n  <div class=\"container\">\n    <div class=\"navbar-header\">\n      <button type=\"button\" class=\"navbar-toggle collapsed\" data-toggle=\"collapse\" data-target=\"#navbar\" aria-expanded=\"false\">\n        <span class=\"sr-only\">Toggle navigation</span>\n        <span class=\"icon-bar\"></span>\n        <span class=\"icon-bar\"></span>\n        <span class=\"icon-bar\"></span>\n      </button>\n      <span class=\"navbar-brand\">\n        <a class=\"navbar-link\" href=\"../index.html\">reactR</a>\n        <span class=\"version label label-default\" data-toggle=\"tooltip\" data-placement=\"bottom\" title=\"\">0.6.1</span>\n      </span>\n    </div>\n\n    <div id=\"navbar\" class=\"navbar-collapse collapse\">\n      <ul class=\"nav navbar-nav\">\n<li>\n  <a href=\"../reference/index.html\">Reference</a>\n</li>\n<li class=\"dropdown\">\n  <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\" role=\"button\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\n    Articles\n     \n    <span class=\"caret\"></span>\n  </a>\n  <ul class=\"dropdown-menu\" role=\"menu\">\n<li>\n      <a href=\"../articles/intro_htmlwidgets.html\">Authoring htmlwidgets powered by React with reactR</a>\n    </li>\n    <li>\n      <a href=\"../articles/intro_inputs.html\">Authoring inputs powered by React with reactR</a>\n    </li>\n    <li>\n      <a href=\"../articles/intro_reactR.html\">Intro to reactR</a>\n    </li>\n  </ul>\n</li>\n<li>\n  <a href=\"../news/index.html\">Changelog</a>\n</li>\n      </ul>\n<ul class=\"nav navbar-nav navbar-right\">\n<li>\n  <a href=\"https://github.com/react-R/reactR/\" class=\"external-link\">\n    <span class=\"fab fa-github fa-lg\"></span>\n     \n  </a>\n</li>\n      </ul>\n</div>\n<!--/.nav-collapse -->\n  </div>\n<!--/.container -->\n</div>\n<!--/.navbar -->\n\n      \n\n      </header><div class=\"row\">\n  <div class=\"col-md-9 contents\">\n    <div class=\"page-header toc-ignore\">\n      <h1 data-toc-skip>Authoring inputs powered by React with\nreactR</h1>\n                        <h4 data-toc-skip class=\"author\">Alan Dipert and\nCarson Sievert</h4>\n            \n            <h4 data-toc-skip class=\"date\">2024-09-14</h4>\n      \n      <small class=\"dont-index\">Source: <a href=\"https://github.com/react-R/reactR/blob/HEAD/vignettes/intro_inputs.Rmd\" class=\"external-link\"><code>vignettes/intro_inputs.Rmd</code></a></small>\n      <div class=\"hidden name\"><code>intro_inputs.Rmd</code></div>\n\n    </div>\n\n    \n    \n<p><a href=\"https://shiny.posit.co/\" class=\"external-link\">Shiny</a> comes with a large\nlibrary of input <a href=\"https://shiny.posit.co/r/gallery/widgets/widget-gallery/\" class=\"external-link\">widgets</a>\nfor collecting input from the user and conveying input data to R.</p>\n<p>If you want a kind of input <em>not</em> provided by Shiny — like a\ncolor picker, or a different kind of slider — you’ve always been able to\nbuild your own. Shiny’s input system is <a href=\"https://shiny.rstudio.com/articles/building-inputs.html\" class=\"external-link\">extensible</a>.\nAll that’s required is an understanding of certain conventions and a\nlittle custom JavaScript.</p>\n<p>reactR provides additional tools to ease the creation of new Shiny\ninputs implemented using React. In the following tutorial, we will\ndemonstrate these tools by implementing a new Shiny color picker input\nthat wraps the <a href=\"https://github.com/casesandberg/react-color\" class=\"external-link\">react-color</a>\nlibrary.</p>\n<div class=\"section level2\">\n<h2 id=\"software-pre-requisites\">Software pre-requisites<a class=\"anchor\" aria-label=\"anchor\" href=\"#software-pre-requisites\"></a>\n</h2>\n<p>In order to develop a <strong>reactR</strong> Shiny input, you’ll\nneed to install R and optionally RStudio. If you’re on Windows, you\nshould also install <a href=\"https://cran.r-project.org/bin/windows/Rtools/\" class=\"external-link\">Rtools</a>.</p>\n<blockquote>\n<p>For an excellent general introduction to R package concepts, check\nout the <a href=\"https://r-pkgs.org/\" class=\"external-link\">R packages</a> online book.</p>\n</blockquote>\n<p>In addition, you’ll need to install the following JavaScript tools on\nyour machine:</p>\n<ul>\n<li>\n<a href=\"https://nodejs.org\" class=\"external-link\">Node.js</a>: JavaScript engine and\nruntime for development outside of browsers. Provides the\n<code>node</code> and <code>npm</code> commands.</li>\n<li>\n<a href=\"https://classic.yarnpkg.com/en/\" class=\"external-link\">Yarn</a>: Command-line\ndependency management tool, provides the <code>yarn</code> command.</li>\n</ul>\n<p>To follow along in this vignette, you’ll also need the following R\npackages:</p>\n<div class=\"sourceCode\" id=\"cb1\"><pre class=\"downlit sourceCode r\">\n<code class=\"sourceCode R\"><span><span class=\"fu\"><a href=\"https://rdrr.io/r/utils/install.packages.html\" class=\"external-link\">install.packages</a></span><span class=\"op\">(</span><span class=\"fu\"><a href=\"https://rdrr.io/r/base/c.html\" class=\"external-link\">c</a></span><span class=\"op\">(</span><span class=\"st\">\"shiny\"</span>, <span class=\"st\">\"devtools\"</span>, <span class=\"st\">\"usethis\"</span>, <span class=\"st\">\"reactR\"</span><span class=\"op\">)</span><span class=\"op\">)</span></span></code></pre></div>\n</div>\n<div class=\"section level2\">\n<h2 id=\"scaffolding\">Scaffolding<a class=\"anchor\" aria-label=\"anchor\" href=\"#scaffolding\"></a>\n</h2>\n<p>To create a new widget you can call\n<code>scaffoldReactShinyInput</code> to generate the basic structure and\nbuild configuration. This function will:</p>\n<ul>\n<li>Create the .R, .js, and .json files required by your input;</li>\n<li>If provided, take an <a href=\"https://www.npmjs.com/\" class=\"external-link\">npm</a>\npackage name and version as a named list with <code>name</code> and\n<code>version</code> elements. For example, the npm package\n<code>foo</code> at version <code>^1.2.0</code> would be expressed as\n<code>list(name = \"foo\", version =   \"^1.2.0\")</code>. The package, if\nprovided, will be added to the new widget’s <code>package.json</code> as\na build dependency.</li>\n</ul>\n<p>The following R code will create an R package named\n<strong>colorpicker</strong>, then provide the templating for creating\nan input powered by the <code>react-color</code> library on npm:</p>\n<div class=\"sourceCode\" id=\"cb2\"><pre class=\"downlit sourceCode r\">\n<code class=\"sourceCode R\"><span><span class=\"co\"># Create the R package (rstudio=TRUE is recommended if you're not already comfortable with your terminal)</span></span>\n<span><span class=\"fu\">usethis</span><span class=\"fu\">::</span><span class=\"fu\"><a href=\"https://usethis.r-lib.org/reference/create_package.html\" class=\"external-link\">create_package</a></span><span class=\"op\">(</span><span class=\"st\">\"~/colorpicker\"</span>, rstudio <span class=\"op\">=</span> <span class=\"cn\">TRUE</span><span class=\"op\">)</span></span>\n<span><span class=\"co\"># Scaffold initial input implementation files</span></span>\n<span><span class=\"fu\">withr</span><span class=\"fu\">::</span><span class=\"fu\"><a href=\"https://withr.r-lib.org/reference/with_dir.html\" class=\"external-link\">with_dir</a></span><span class=\"op\">(</span></span>\n<span>  <span class=\"st\">\"~/colorpicker\"</span>,</span>\n<span>  <span class=\"fu\">reactR</span><span class=\"fu\">::</span><span class=\"fu\"><a href=\"../reference/scaffoldReactShinyInput.html\">scaffoldReactShinyInput</a></span><span class=\"op\">(</span><span class=\"st\">\"colorpicker\"</span>, <span class=\"fu\"><a href=\"https://rdrr.io/r/base/list.html\" class=\"external-link\">list</a></span><span class=\"op\">(</span><span class=\"st\">\"react-color\"</span> <span class=\"op\">=</span> <span class=\"st\">\"^2.17.0\"</span><span class=\"op\">)</span>, edit <span class=\"op\">=</span> <span class=\"cn\">FALSE</span><span class=\"op\">)</span></span>\n<span><span class=\"op\">)</span></span></code></pre></div>\n</div>\n<div class=\"section level2\">\n<h2 id=\"building-and-installing\">Building and installing<a class=\"anchor\" aria-label=\"anchor\" href=\"#building-and-installing\"></a>\n</h2>\n<div class=\"section level3\">\n<h3 id=\"building-the-javascript\">Building the JavaScript<a class=\"anchor\" aria-label=\"anchor\" href=\"#building-the-javascript\"></a>\n</h3>\n<p>The next step is to navigate to the newly-created\n<code>colorpicker</code> project and run the following commands in the\nterminal. If you’re new the terminal, we recommend opening your newly\ncreated RStudio <code>~/colorpicker/colorpicker.Rproj</code> project\nfile, then running the following in the RStudio terminal tab:</p>\n<pre><code>yarn install\nyarn run webpack</code></pre>\n<ul>\n<li><p><code>yarn install</code> downloads all of the dependencies\nlisted in <code>package.json</code> and creates a new file,\n<code>yarn.lock</code>. You should add this file to revision control. It\nwill be updated whenever you change dependencies and run\n<code>yarn install</code>. <strong>Note: you only need to run it after\nmodifying package.json</strong>. For further documentation on\n<code>yarn install</code>, see the <a href=\"https://classic.yarnpkg.com/en/docs/cli/install/\" class=\"external-link\">yarn\ndocumentation</a>.</p></li>\n<li><p><code>yarn run webpack</code> compiles the <a href=\"https://babeljs.io/docs/en/babel-preset-env\" class=\"external-link\">modern JavaScript</a>\nwith <a href=\"https://babeljs.io/docs/en/babel-preset-react\" class=\"external-link\">JSX</a>\nsource file at <code>srcjs/colorpicker.jsx</code> into\n<code>www/colorpicker/colorpicker/colorpicker.js</code>. The latter file\nis the one actually used by the R package and includes all the relevant\nJavaScript dependencies in a dialect of JavaScript that most browsers\nunderstand.</p></li>\n</ul>\n<p><code>yarn run webpack</code> is not strictly a <code>yarn</code>\ncommand. In fact, <code>yarn run</code> simply delegates to the <a href=\"https://webpack.js.org/\" class=\"external-link\">webpack</a> program. Webpack’s\nconfiguration is generated by <code>scaffoldReactShinyInput</code> in\nthe file <code>webpack.config.js</code>, but you can always change this\nconfiguration and/or modify the <code>yarn run webpack</code> command to\nsuit your needs.</p>\n</div>\n<div class=\"section level3\">\n<h3 id=\"installing-the-r-package\">Installing the R package<a class=\"anchor\" aria-label=\"anchor\" href=\"#installing-the-r-package\"></a>\n</h3>\n<p>Now that the input’s JavaScript is compiled, go ahead and install the\nR package:</p>\n<div class=\"sourceCode\" id=\"cb4\"><pre class=\"downlit sourceCode r\">\n<code class=\"sourceCode R\"><span><span class=\"fu\">devtools</span><span class=\"fu\">::</span><span class=\"fu\"><a href=\"https://devtools.r-lib.org/reference/document.html\" class=\"external-link\">document</a></span><span class=\"op\">(</span><span class=\"op\">)</span></span>\n<span><span class=\"fu\">devtools</span><span class=\"fu\">::</span><span class=\"fu\"><a href=\"https://devtools.r-lib.org/reference/install.html\" class=\"external-link\">install</a></span><span class=\"op\">(</span>quick <span class=\"op\">=</span> <span class=\"cn\">TRUE</span><span class=\"op\">)</span></span></code></pre></div>\n<p>In RStudio, you can use the keyboard shortcuts\n<code>Ctrl-Shift-D</code> and <code>Ctrl-Shift-B</code> to document and\nbuild the package. (On macOS, the shortcuts are <code>Cmd-Shift-D</code>\nand <code>Cmd-Shift-B</code>)</p>\n</div>\n</div>\n<div class=\"section level2\">\n<h2 id=\"run-the-included-demo\">Run the included demo<a class=\"anchor\" aria-label=\"anchor\" href=\"#run-the-included-demo\"></a>\n</h2>\n<p>Now that the input’s JavaScript is compiled, and the R package is\ninstalled, run <code>app.R</code> to see a demo in action:</p>\n<div class=\"sourceCode\" id=\"cb5\"><pre class=\"downlit sourceCode r\">\n<code class=\"sourceCode R\"><span><span class=\"fu\">shiny</span><span class=\"fu\">::</span><span class=\"fu\"><a href=\"https://rdrr.io/pkg/shiny/man/runApp.html\" class=\"external-link\">runApp</a></span><span class=\"op\">(</span><span class=\"op\">)</span></span></code></pre></div>\n<p>In RStudio, you can open <code>app.R</code> and press\n<code>Ctrl-Shift-Enter</code> (<code>Cmd-Shift-Enter</code> on macOS).\nYou should see something like the following appear in the Viewer\npane:</p>\n<p><img src=\"input_app.jpg\"></p>\n</div>\n<div class=\"section level2\">\n<h2 id=\"authoring-a-react-input\">Authoring a React input<a class=\"anchor\" aria-label=\"anchor\" href=\"#authoring-a-react-input\"></a>\n</h2>\n<p>At this point, we have a working (if simple) React-powered text\ninput. Let’s modify it to create an interface to the\n<code>react-color</code> library.</p>\n<div class=\"section level3\">\n<h3 id=\"connecting-shiny-with-react\">Connecting Shiny with React<a class=\"anchor\" aria-label=\"anchor\" href=\"#connecting-shiny-with-react\"></a>\n</h3>\n<p>Consider the following example taken from the <a href=\"http://casesandberg.github.io/react-color/\" class=\"external-link\">react-color\ndocumentation</a>.</p>\n<div class=\"sourceCode\" id=\"cb6\"><pre class=\"sourceCode js\"><code class=\"sourceCode javascript\"><span id=\"cb6-1\"><a href=\"#cb6-1\" tabindex=\"-1\"></a><span class=\"im\">import</span> React <span class=\"im\">from</span> <span class=\"st\">'react'</span><span class=\"op\">;</span></span>\n<span id=\"cb6-2\"><a href=\"#cb6-2\" tabindex=\"-1\"></a><span class=\"im\">import</span> { SketchPicker } <span class=\"im\">from</span> <span class=\"st\">'react-color'</span><span class=\"op\">;</span></span>\n<span id=\"cb6-3\"><a href=\"#cb6-3\" tabindex=\"-1\"></a></span>\n<span id=\"cb6-4\"><a href=\"#cb6-4\" tabindex=\"-1\"></a><span class=\"kw\">class</span> Component <span class=\"kw\">extends</span> React<span class=\"op\">.</span><span class=\"at\">Component</span> {</span>\n<span id=\"cb6-5\"><a href=\"#cb6-5\" tabindex=\"-1\"></a></span>\n<span id=\"cb6-6\"><a href=\"#cb6-6\" tabindex=\"-1\"></a>  <span class=\"fu\">render</span>() {</span>\n<span id=\"cb6-7\"><a href=\"#cb6-7\" tabindex=\"-1\"></a>    <span class=\"cf\">return</span> <span class=\"op\">&lt;</span>SketchPicker <span class=\"op\">/&gt;;</span></span>\n<span id=\"cb6-8\"><a href=\"#cb6-8\" tabindex=\"-1\"></a>  }</span>\n<span id=\"cb6-9\"><a href=\"#cb6-9\" tabindex=\"-1\"></a>}</span></code></pre></div>\n<p>That JavaScript code produces a <code>SketchPicker</code>-type\ninterface that looks like this:</p>\n<p><img src=\"input_sketchpicker.jpg\"></p>\n<p>However, that example doesn’t demonstrate a way to default to a\nparticular color, or a way to cause something to happen when the color\nchanges. To accomplish these, <code>react-color</code> components can <a href=\"http://casesandberg.github.io/react-color/#api\" class=\"external-link\">optionally\ntake</a> the following <a href=\"https://reactjs.org/docs/components-and-props.html\" class=\"external-link\">props</a>:</p>\n<ul>\n<li>\n<a href=\"http://casesandberg.github.io/react-color/#api-color\" class=\"external-link\"><code>color</code></a>:\naccepts a string of a hex color like <code>'#333'</code>\n</li>\n<li>\n<a href=\"http://casesandberg.github.io/react-color/#api-onChangeComplete\" class=\"external-link\"><code>onChangeComplete</code></a>:\naccepts a JavaScript function taking a single argument, the new\n<code>color</code>, that will be called when the new color is\nselected</li>\n</ul>\n<p>Since this React component calls a configurable function (i.e.,\n<code>onChangeComplete</code>) when the input (i.e., color) value\nchanges, we can supply a function to inform Shiny about these changes.\nYou could, in theory, do this by writing your own custom Shiny input\nwrapper around this component, but <code>reactR</code> provides some\nconventions to make it much easier. These conventions have two main\nparts (R and JavaScript):</p>\n<ol style=\"list-style-type: decimal\">\n<li>Use <code><a href=\"../reference/createReactShinyInput.html\">reactR::createReactShinyInput()</a></code> to construct the\nuser-facing R input and route any user-supplied options (e.g., the\n<code>default</code> input value and other <code>configuration</code>)\nto the React component. This part was already done for us in the\n<code>R/colorpicker.R</code> file of our colorpicker project:</li>\n</ol>\n<div class=\"sourceCode\" id=\"cb7\"><pre class=\"downlit sourceCode r\">\n<code class=\"sourceCode R\"><span><span class=\"va\">colorpickerInput</span> <span class=\"op\">&lt;-</span> <span class=\"kw\">function</span><span class=\"op\">(</span><span class=\"va\">inputId</span>, <span class=\"va\">default</span> <span class=\"op\">=</span> <span class=\"st\">\"\"</span><span class=\"op\">)</span> <span class=\"op\">{</span></span>\n<span>  <span class=\"fu\">reactR</span><span class=\"fu\">::</span><span class=\"fu\"><a href=\"../reference/createReactShinyInput.html\">createReactShinyInput</a></span><span class=\"op\">(</span></span>\n<span>    inputId <span class=\"op\">=</span> <span class=\"va\">inputId</span>,</span>\n<span>    class <span class=\"op\">=</span> <span class=\"st\">\"colorpicker\"</span>,</span>\n<span>    dependencies <span class=\"op\">=</span> <span class=\"fu\">htmltools</span><span class=\"fu\">::</span><span class=\"fu\"><a href=\"https://rstudio.github.io/htmltools/reference/htmlDependency.html\" class=\"external-link\">htmlDependency</a></span><span class=\"op\">(</span></span>\n<span>      name <span class=\"op\">=</span> <span class=\"st\">\"colorpicker-input\"</span>,</span>\n<span>      version <span class=\"op\">=</span> <span class=\"st\">\"1.0.0\"</span>,</span>\n<span>      src <span class=\"op\">=</span> <span class=\"st\">\"www/colorpicker/colorpicker\"</span>,</span>\n<span>      package <span class=\"op\">=</span> <span class=\"st\">\"colorpicker\"</span>,</span>\n<span>      script <span class=\"op\">=</span> <span class=\"st\">\"colorpicker.js\"</span></span>\n<span>    <span class=\"op\">)</span>,</span>\n<span>    default <span class=\"op\">=</span> <span class=\"va\">default</span>,</span>\n<span>    configuration <span class=\"op\">=</span> <span class=\"fu\"><a href=\"https://rdrr.io/r/base/list.html\" class=\"external-link\">list</a></span><span class=\"op\">(</span><span class=\"op\">)</span>,</span>\n<span>    container <span class=\"op\">=</span> <span class=\"fu\">htmltools</span><span class=\"fu\">::</span><span class=\"va\"><a href=\"https://rstudio.github.io/htmltools/reference/builder.html\" class=\"external-link\">tags</a></span><span class=\"op\">$</span><span class=\"va\">span</span></span>\n<span>  <span class=\"op\">)</span></span>\n<span><span class=\"op\">}</span></span></code></pre></div>\n<ol start=\"2\" style=\"list-style-type: decimal\">\n<li>Design an <em>intermediate</em> React component that routes\ninformation from <code>colorpickerInput()</code> to the\n<code>&lt;SketchPicker&gt;</code> component and also inform Shiny when a\nnew color is chosen. This intermediate component should be a <a href=\"https://reactjs.org/docs/components-and-props.html#function-and-class-components\" class=\"external-link\">functional\ncomponent</a> with three arguments:</li>\n</ol>\n<ul>\n<li>\n<code>configuration</code>: The JSON equivalent of the\n<code>configuration</code> argument from\n<code><a href=\"../reference/createReactShinyInput.html\">reactR::createReactShinyInput()</a></code>. In this particular\nexample, <code>configuration</code> isn’t used.</li>\n<li>\n<code>value</code>: The input’s values over time, beginning with the\n<code>default</code> supplied from\n<code><a href=\"../reference/createReactShinyInput.html\">reactR::createReactShinyInput()</a></code>.</li>\n<li>\n<code>setValue</code>: A JavaScript function to call with the\ninput’s new value when one is created. This function is not user\nsupplied, but rather an internal hook for informing Shiny about changes\nto the component’s current state (i.e. value).</li>\n</ul>\n<p>Consider the following intermediate component,\n<code>PickerInput</code>. Note how this intermediate component allows\none to set the default <code>value</code> from R and also calls\n<code>setValue()</code> inside <code>onChangeComplete</code> in order to\ninform Shiny about new color values. Finally,\n<code>reactR.reactShinyInput()</code> registers this intermediate\ncomponent as a custom Shiny input binding named\n<code>colorpicker</code>.</p>\n<div class=\"sourceCode\" id=\"cb8\"><pre class=\"sourceCode js\"><code class=\"sourceCode javascript\"><span id=\"cb8-1\"><a href=\"#cb8-1\" tabindex=\"-1\"></a><span class=\"im\">import</span> { reactShinyInput } <span class=\"im\">from</span> <span class=\"st\">'reactR'</span><span class=\"op\">;</span></span>\n<span id=\"cb8-2\"><a href=\"#cb8-2\" tabindex=\"-1\"></a><span class=\"im\">import</span> { SketchPicker } <span class=\"im\">from</span> <span class=\"st\">'react-color'</span><span class=\"op\">;</span></span>\n<span id=\"cb8-3\"><a href=\"#cb8-3\" tabindex=\"-1\"></a></span>\n<span id=\"cb8-4\"><a href=\"#cb8-4\" tabindex=\"-1\"></a><span class=\"kw\">const</span> PickerInput <span class=\"op\">=</span> ({ configuration<span class=\"op\">,</span> value<span class=\"op\">,</span> setValue }) <span class=\"kw\">=&gt;</span> {</span>\n<span id=\"cb8-5\"><a href=\"#cb8-5\" tabindex=\"-1\"></a>  <span class=\"cf\">return</span> (</span>\n<span id=\"cb8-6\"><a href=\"#cb8-6\" tabindex=\"-1\"></a>    <span class=\"op\">&lt;</span>SketchPicker</span>\n<span id=\"cb8-7\"><a href=\"#cb8-7\" tabindex=\"-1\"></a>      color<span class=\"op\">=</span>{ value }</span>\n<span id=\"cb8-8\"><a href=\"#cb8-8\" tabindex=\"-1\"></a>      onChangeComplete<span class=\"op\">=</span>{ color <span class=\"kw\">=&gt;</span> <span class=\"fu\">setValue</span>(color<span class=\"op\">.</span><span class=\"at\">hex</span>) }</span>\n<span id=\"cb8-9\"><a href=\"#cb8-9\" tabindex=\"-1\"></a>    <span class=\"op\">/&gt;</span></span>\n<span id=\"cb8-10\"><a href=\"#cb8-10\" tabindex=\"-1\"></a>  )<span class=\"op\">;</span></span>\n<span id=\"cb8-11\"><a href=\"#cb8-11\" tabindex=\"-1\"></a>}<span class=\"op\">;</span></span>\n<span id=\"cb8-12\"><a href=\"#cb8-12\" tabindex=\"-1\"></a></span>\n<span id=\"cb8-13\"><a href=\"#cb8-13\" tabindex=\"-1\"></a><span class=\"co\">// Note the first argument here should match the `class` </span></span>\n<span id=\"cb8-14\"><a href=\"#cb8-14\" tabindex=\"-1\"></a><span class=\"co\">// argument of the reactR::createReactShinyInput() from step 1</span></span>\n<span id=\"cb8-15\"><a href=\"#cb8-15\" tabindex=\"-1\"></a><span class=\"fu\">reactShinyInput</span>(<span class=\"st\">'.colorpicker'</span><span class=\"op\">,</span> <span class=\"st\">'colorpicker'</span><span class=\"op\">,</span> PickerInput)<span class=\"op\">;</span></span></code></pre></div>\n<p>Open the <code>srcjs/colorpicker.jsx</code> file in your colorpicker\nproject and paste this code into it. After saving the file, run\n<code>yarn run webpack</code> in the terminal, re-install the package,\nthen run <code><a href=\"https://rdrr.io/pkg/shiny/man/runApp.html\" class=\"external-link\">shiny::runApp()</a></code> again</p>\n<video autoplay muted><source src=\"./input_sketchpicker.mp4\"></source></video><p>When you select new colors, you should see the\n<code>textOutput</code> update accordingly.</p>\n<p>You might have noticed that the input showed up initially without a\ncolor selected. That’s because in <code>app.R</code> we didn’t supply a\n<code>default</code> argument to the <code>colorpickerInput</code>\nfunction inside our <code>ui</code>.</p>\n<p>Try replacing the call to <code>colorpickerInput</code> with this:\n<code>colorpickerInput(\"textInput\", default = \"#a76161\")</code></p>\n<p>Now when you run the app, the color should start as a shade of\nred.</p>\n</div>\n</div>\n<div class=\"section level2\">\n<h2 id=\"further-learning\">Further learning<a class=\"anchor\" aria-label=\"anchor\" href=\"#further-learning\"></a>\n</h2>\n<p>This tutorial walked you through the steps taken to wrap the\n<code>react-color</code> library in a Shiny input. The full example\npackage is accessible at <a href=\"https://github.com/react-R/colorpicker-example\" class=\"external-link uri\">https://github.com/react-R/colorpicker-example</a>. Our\nintention is keep creating example packages under the <a href=\"https://github.com/react-R\" class=\"external-link uri\">https://github.com/react-R</a> organization, so head there\nif you’d like to see other examples of interfacing with React.</p>\n</div>\n  </div>\n\n  <div class=\"col-md-3 hidden-xs hidden-sm\" id=\"pkgdown-sidebar\">\n\n        <nav id=\"toc\" data-toggle=\"toc\"><h2 data-toc-skip>Contents</h2>\n    </nav>\n</div>\n\n</div>\n\n\n\n      <footer><div class=\"copyright\">\n  <p></p>\n<p>Developed by Facebook Inc, Michel Weststrate, Kent Russell, Alan Dipert, Greg Lin.</p>\n</div>\n\n<div class=\"pkgdown\">\n  <p></p>\n<p>Site built with <a href=\"https://pkgdown.r-lib.org/\" class=\"external-link\">pkgdown</a> 2.0.7.</p>\n</div>\n\n      </footer>\n</div>\n\n  \n\n\n  \n\n  </body>\n</html>\n"
  },
  {
    "path": "docs/articles/intro_inputs_files/accessible-code-block-0.0.1/empty-anchor.js",
    "content": "// Hide empty <a> tag within highlighted CodeBlock for screen reader accessibility (see https://github.com/jgm/pandoc/issues/6352#issuecomment-626106786) -->\n// v0.0.1\n// Written by JooYoung Seo (jooyoung@psu.edu) and Atsushi Yasumoto on June 1st, 2020.\n\ndocument.addEventListener('DOMContentLoaded', function() {\n  const codeList = document.getElementsByClassName(\"sourceCode\");\n  for (var i = 0; i < codeList.length; i++) {\n    var linkList = codeList[i].getElementsByTagName('a');\n    for (var j = 0; j < linkList.length; j++) {\n      if (linkList[j].innerHTML === \"\") {\n        linkList[j].setAttribute('aria-hidden', 'true');\n      }\n    }\n  }\n});\n"
  },
  {
    "path": "docs/articles/intro_reactR.html",
    "content": "<!DOCTYPE html>\n<!-- Generated by pkgdown: do not edit by hand --><html lang=\"en\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\">\n<meta charset=\"utf-8\">\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\">\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n<title>Intro to reactR • reactR</title>\n<!-- favicons --><link rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"../favicon-16x16.png\">\n<link rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"../favicon-32x32.png\">\n<link rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"../apple-touch-icon.png\">\n<link rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"120x120\" href=\"../apple-touch-icon-120x120.png\">\n<link rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"76x76\" href=\"../apple-touch-icon-76x76.png\">\n<link rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"60x60\" href=\"../apple-touch-icon-60x60.png\">\n<!-- jquery --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js\" integrity=\"sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo=\" crossorigin=\"anonymous\"></script><!-- Bootstrap --><link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.4.1/css/bootstrap.min.css\" integrity=\"sha256-bZLfwXAP04zRMK2BjiO8iu9pf4FbLqX6zitd+tIvLhE=\" crossorigin=\"anonymous\">\n<script src=\"https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.4.1/js/bootstrap.min.js\" integrity=\"sha256-nuL8/2cJ5NDSSwnKD8VqreErSWHtnEP9E7AySL+1ev4=\" crossorigin=\"anonymous\"></script><!-- bootstrap-toc --><link rel=\"stylesheet\" href=\"../bootstrap-toc.css\">\n<script src=\"../bootstrap-toc.js\"></script><!-- Font Awesome icons --><link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/all.min.css\" integrity=\"sha256-mmgLkCYLUQbXn0B1SRqzHar6dCnv9oZFPEC1g1cwlkk=\" crossorigin=\"anonymous\">\n<link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/v4-shims.min.css\" integrity=\"sha256-wZjR52fzng1pJHwx4aV2AO3yyTOXrcDW7jBpJtTwVxw=\" crossorigin=\"anonymous\">\n<!-- clipboard.js --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.6/clipboard.min.js\" integrity=\"sha256-inc5kl9MA1hkeYUt+EC3BhlIgyp/2jDIyBLS6k3UxPI=\" crossorigin=\"anonymous\"></script><!-- headroom.js --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/headroom.min.js\" integrity=\"sha256-AsUX4SJE1+yuDu5+mAVzJbuYNPHj/WroHuZ8Ir/CkE0=\" crossorigin=\"anonymous\"></script><script src=\"https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/jQuery.headroom.min.js\" integrity=\"sha256-ZX/yNShbjqsohH1k95liqY9Gd8uOiE1S4vZc+9KQ1K4=\" crossorigin=\"anonymous\"></script><!-- pkgdown --><link href=\"../pkgdown.css\" rel=\"stylesheet\">\n<script src=\"../pkgdown.js\"></script><meta property=\"og:title\" content=\"Intro to reactR\">\n<meta property=\"og:description\" content=\"reactR\">\n<!-- mathjax --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js\" integrity=\"sha256-nvJJv9wWKEm88qvoQl9ekL2J+k/RWIsaSScxxlsrv8k=\" crossorigin=\"anonymous\"></script><script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/config/TeX-AMS-MML_HTMLorMML.js\" integrity=\"sha256-84DKXVJXs0/F8OTMzX4UR909+jtl4G7SPypPavF+GfA=\" crossorigin=\"anonymous\"></script><!--[if lt IE 9]>\n<script src=\"https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js\"></script>\n<script src=\"https://oss.maxcdn.com/respond/1.4.2/respond.min.js\"></script>\n<![endif]-->\n</head>\n<body data-spy=\"scroll\" data-target=\"#toc\">\n    \n\n    <div class=\"container template-article\">\n      <header><div class=\"navbar navbar-default navbar-fixed-top\" role=\"navigation\">\n  <div class=\"container\">\n    <div class=\"navbar-header\">\n      <button type=\"button\" class=\"navbar-toggle collapsed\" data-toggle=\"collapse\" data-target=\"#navbar\" aria-expanded=\"false\">\n        <span class=\"sr-only\">Toggle navigation</span>\n        <span class=\"icon-bar\"></span>\n        <span class=\"icon-bar\"></span>\n        <span class=\"icon-bar\"></span>\n      </button>\n      <span class=\"navbar-brand\">\n        <a class=\"navbar-link\" href=\"../index.html\">reactR</a>\n        <span class=\"version label label-default\" data-toggle=\"tooltip\" data-placement=\"bottom\" title=\"\">0.6.1</span>\n      </span>\n    </div>\n\n    <div id=\"navbar\" class=\"navbar-collapse collapse\">\n      <ul class=\"nav navbar-nav\">\n<li>\n  <a href=\"../reference/index.html\">Reference</a>\n</li>\n<li class=\"dropdown\">\n  <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\" role=\"button\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\n    Articles\n     \n    <span class=\"caret\"></span>\n  </a>\n  <ul class=\"dropdown-menu\" role=\"menu\">\n<li>\n      <a href=\"../articles/intro_htmlwidgets.html\">Authoring htmlwidgets powered by React with reactR</a>\n    </li>\n    <li>\n      <a href=\"../articles/intro_inputs.html\">Authoring inputs powered by React with reactR</a>\n    </li>\n    <li>\n      <a href=\"../articles/intro_reactR.html\">Intro to reactR</a>\n    </li>\n  </ul>\n</li>\n<li>\n  <a href=\"../news/index.html\">Changelog</a>\n</li>\n      </ul>\n<ul class=\"nav navbar-nav navbar-right\">\n<li>\n  <a href=\"https://github.com/react-R/reactR/\" class=\"external-link\">\n    <span class=\"fab fa-github fa-lg\"></span>\n     \n  </a>\n</li>\n      </ul>\n</div>\n<!--/.nav-collapse -->\n  </div>\n<!--/.container -->\n</div>\n<!--/.navbar -->\n\n      \n\n      </header><script src=\"intro_reactR_files/react-18.2.0/react.min.js\"></script><script src=\"intro_reactR_files/react-18.2.0/react-dom.min.js\"></script><div class=\"row\">\n  <div class=\"col-md-9 contents\">\n    <div class=\"page-header toc-ignore\">\n      <h1 data-toc-skip>Intro to reactR</h1>\n                        <h4 data-toc-skip class=\"author\">Kent\nRussell</h4>\n            \n            <h4 data-toc-skip class=\"date\">2024-09-14</h4>\n      \n      <small class=\"dont-index\">Source: <a href=\"https://github.com/react-R/reactR/blob/HEAD/vignettes/intro_reactR.Rmd\" class=\"external-link\"><code>vignettes/intro_reactR.Rmd</code></a></small>\n      <div class=\"hidden name\"><code>intro_reactR.Rmd</code></div>\n\n    </div>\n\n    \n    \n<div class=\"section level2\">\n<h2 id=\"why-reactr\">Why reactR?<a class=\"anchor\" aria-label=\"anchor\" href=\"#why-reactr\"></a>\n</h2>\n<p><a href=\"https://reactjs.org/\" class=\"external-link\"><code>react</code></a> has become\nincredibly popular, and the ecosystem around <code>react</code> is\nrobust. <code>reactR</code> aims to allow <code>R</code> users to more\neasily incorporate <code>react</code> and <code>JSX</code>.</p>\n</div>\n<div class=\"section level2\">\n<h2 id=\"install\">Install<a class=\"anchor\" aria-label=\"anchor\" href=\"#install\"></a>\n</h2>\n<pre><code><span><span class=\"fu\"><a href=\"https://rdrr.io/r/utils/install.packages.html\" class=\"external-link\">install.packages</a></span><span class=\"op\">(</span><span class=\"st\">\"reactR\"</span><span class=\"op\">)</span></span>\n<span></span>\n<span><span class=\"co\"># for the latest development version</span></span>\n<span><span class=\"co\">#  install from Github</span></span>\n<span><span class=\"co\"># devtools::install_github(\"timelyportfolio/reactR\")</span></span></code></pre>\n</div>\n<div class=\"section level2\">\n<h2 id=\"quick-example\">Quick Example<a class=\"anchor\" aria-label=\"anchor\" href=\"#quick-example\"></a>\n</h2>\n<p>Let’s use <code>react</code> to render a simple <code>h1</code> HTML\nelement below.</p>\n<div id=\"react-heading-here\">\n\n</div>\n<div class=\"sourceCode\" id=\"cb2\"><pre class=\"downlit sourceCode r\">\n<code class=\"sourceCode R\"><span><span class=\"kw\"><a href=\"https://rdrr.io/r/base/library.html\" class=\"external-link\">library</a></span><span class=\"op\">(</span><span class=\"va\"><a href=\"https://github.com/react-R/reactR\" class=\"external-link\">reactR</a></span><span class=\"op\">)</span></span>\n<span><span class=\"kw\"><a href=\"https://rdrr.io/r/base/library.html\" class=\"external-link\">library</a></span><span class=\"op\">(</span><span class=\"va\"><a href=\"https://github.com/rstudio/htmltools\" class=\"external-link\">htmltools</a></span><span class=\"op\">)</span></span></code></pre></div>\n<pre><code><span><span class=\"co\">## Warning: package 'htmltools' was built under R version 4.3.3</span></span></code></pre>\n<div class=\"sourceCode\" id=\"cb4\"><pre class=\"downlit sourceCode r\">\n<code class=\"sourceCode R\"><span><span class=\"fu\"><a href=\"https://rstudio.github.io/htmltools/reference/htmlDependencies.html\" class=\"external-link\">attachDependencies</a></span><span class=\"op\">(</span></span>\n<span>  <span class=\"va\">tags</span><span class=\"op\">$</span><span class=\"fu\">script</span><span class=\"op\">(</span></span>\n<span>  <span class=\"st\">\"</span></span>\n<span><span class=\"st\">    ReactDOM.render(</span></span>\n<span><span class=\"st\">      React.createElement(</span></span>\n<span><span class=\"st\">        'h1',</span></span>\n<span><span class=\"st\">        null,</span></span>\n<span><span class=\"st\">        'Powered by React'</span></span>\n<span><span class=\"st\">      ),</span></span>\n<span><span class=\"st\">      document.getElementById('react-heading-here')</span></span>\n<span><span class=\"st\">    )</span></span>\n<span><span class=\"st\">  \"</span></span>\n<span>  <span class=\"op\">)</span>,</span>\n<span>  <span class=\"fu\"><a href=\"../reference/html_dependency_react.html\">html_dependency_react</a></span><span class=\"op\">(</span><span class=\"op\">)</span></span>\n<span><span class=\"op\">)</span></span></code></pre></div>\n<script>\n    ReactDOM.render(\n      React.createElement(\n        'h1',\n        null,\n        'Powered by React'\n      ),\n      document.getElementById('react-heading-here')\n    )\n  </script>\n</div>\n<div class=\"section level2\">\n<h2 id=\"blog-post\">Blog Post<a class=\"anchor\" aria-label=\"anchor\" href=\"#blog-post\"></a>\n</h2>\n<p>For more on how we can use R and React, see the blog post <a href=\"https://www.jsinr.me/2017/11/19/react-in-r/\" class=\"external-link\">React in R</a>. Also,\nthere are many more examples in the Github repo at <a href=\"https://github.com/react-R/reactR/tree/master/inst/examples\" class=\"external-link\">inst/examples</a>.</p>\n</div>\n<div class=\"section level2\">\n<h2 id=\"using-jsx\">Using JSX<a class=\"anchor\" aria-label=\"anchor\" href=\"#using-jsx\"></a>\n</h2>\n<p><a href=\"https://reactjs.org/docs/jsx-in-depth.html\" class=\"external-link\"><code>JSX</code></a>\nhelps ease some of the burden caused by\n<code>React.createElement</code>. <code>reactR</code> provides a\n<code><a href=\"../reference/babel_transform.html\">babel_transform()</a></code> function to use <code>JSX</code>.\nHopefully, in the future, we can convince RStudio to modify\n<code>htmltools</code> to work directly with <code>JSX</code> (see <a href=\"https://github.com/rstudio/htmltools/pull/72\" class=\"external-link\">issue</a>).</p>\n</div>\n  </div>\n\n  <div class=\"col-md-3 hidden-xs hidden-sm\" id=\"pkgdown-sidebar\">\n\n        <nav id=\"toc\" data-toggle=\"toc\"><h2 data-toc-skip>Contents</h2>\n    </nav>\n</div>\n\n</div>\n\n\n\n      <footer><div class=\"copyright\">\n  <p></p>\n<p>Developed by Facebook Inc, Michel Weststrate, Kent Russell, Alan Dipert, Greg Lin.</p>\n</div>\n\n<div class=\"pkgdown\">\n  <p></p>\n<p>Site built with <a href=\"https://pkgdown.r-lib.org/\" class=\"external-link\">pkgdown</a> 2.0.7.</p>\n</div>\n\n      </footer>\n</div>\n\n  \n\n\n  \n\n  </body>\n</html>\n"
  },
  {
    "path": "docs/articles/intro_reactR_files/accessible-code-block-0.0.1/empty-anchor.js",
    "content": "// Hide empty <a> tag within highlighted CodeBlock for screen reader accessibility (see https://github.com/jgm/pandoc/issues/6352#issuecomment-626106786) -->\n// v0.0.1\n// Written by JooYoung Seo (jooyoung@psu.edu) and Atsushi Yasumoto on June 1st, 2020.\n\ndocument.addEventListener('DOMContentLoaded', function() {\n  const codeList = document.getElementsByClassName(\"sourceCode\");\n  for (var i = 0; i < codeList.length; i++) {\n    var linkList = codeList[i].getElementsByTagName('a');\n    for (var j = 0; j < linkList.length; j++) {\n      if (linkList[j].innerHTML === \"\") {\n        linkList[j].setAttribute('aria-hidden', 'true');\n      }\n    }\n  }\n});\n"
  },
  {
    "path": "docs/articles/intro_reactR_files/react-16.12.0/AUTHORS",
    "content": "39 <8398a7@gmail.com>\nAaron Franks <aaron.franks@gmail.com>\nAaron Gelter <aaron.gelter@harman.com>\nAdam Bloomston <adam@glitterfram.es>\nAdam Krebs <amk528@cs.nyu.edu>\nAdam Mark <adammark75@gmail.com>\nAdam Solove <asolove@gmail.com>\nAdam Timberlake <adam.timberlake@gmail.com>\nAdam Zapletal <adamzap@gmail.com>\nAhmad Wali Sidiqi <wali-s@users.noreply.github.com>\nAlan Plum <me@pluma.io>\nAlan Souza <alansouzati@gmail.com>\nAlan deLevie <adelevie@gmail.com>\nAlastair Hole <afhole@gmail.com>\nAlex <ultrafez@users.noreply.github.com>\nAlex Boatwright <drdelambre@gmail.com>\nAlex Boyd <alex@opengroove.org>\nAlex Dajani <xelad1@gmail.com>\nAlex Lopatin <alex@alexlopatin.com>\nAlex Mykyta <dancingwithcows@gmail.com>\nAlex Pien <alexpien@gmail.com>\nAlex Smith <iqwz@ya.ru>\nAlex Zelenskiy <azelenskiy@fb.com>\nAlexander Shtuchkin <ashtuchkin@gmail.com>\nAlexander Solovyov <alexander@solovyov.net>\nAlexander Tseung <alextsg@gmail.com>\nAlexandre Gaudencio <shahor@shahor.fr>\nAlexey Raspopov <avenger7x13@gmail.com>\nAlexey Shamrin <shamrin@gmail.com>\nAli Ukani <ali.ukani@gmail.com>\nAndre Z Sanchez <andrezacsanchez@gmail.com>\nAndreas Savvides <asavvides@twitter.com>\nAndreas Svensson <andreas@syranide.com>\nAndres Kalle <mjomble@gmail.com>\nAndres Suarez <zertosh@gmail.com>\nAndrew Clark <acdlite@me.com>\nAndrew Cobby <cobbweb@users.noreply.github.com>\nAndrew Davey <andrew@equin.co.uk>\nAndrew Henderson <andrew.m.henderson@gmail.com>\nAndrew Kulakov <avk@8xx8.ru>\nAndrew Rasmussen <andras@fb.com>\nAndrew Sokolov <asokolov@atlassian.com>\nAndrew Zich <azich@fb.com>\nAndrey Popp <8mayday@gmail.com>\nAnthony van der Hoorn <anthony.vanderhoorn@gmail.com>\nAnto Aravinth <anto.aravinth.cse@gmail.com>\nAntonio Ruberto <anto.ruberto@gmail.com>\nAntti Ahti <antti.ahti@gmail.com>\nAnuj Tomar <ankuto@gmail.com>\nAoDev <AoDev@users.noreply.github.com>\nApril Arcus <april.arcus@gmail.com>\nAreeb Malik <areeb.malik91@gmail.com>\nAria Buckles <aria@khanacademy.org>\nAria Stewart <aredridel@dinhe.net>\nArian Faurtosh <arian@icloud.com>\nArtem Nezvigin <artem@artnez.com>\nAustin Wright <aaa@bzfx.net>\nAyman Osman <aymano.osman@gmail.com>\nBaraa Hamodi <bhamodi@uwaterloo.ca>\nBartosz Kaszubowski <gosimek@gmail.com>\nBasarat Ali Syed <basaratali@gmail.com>\nBattaile Fauber <battaile@gmail.com>\nBeau Smith <beau@beausmith.com>\nBen Alpert <ben@benalpert.com>\nBen Anderson <banderson@constantcontact.com>\nBen Brooks <ben@benbrooks.net>\nBen Foxall <benfoxall@gmail.com>\nBen Halpern <bendhalpern@gmail.com>\nBen Jaffe <jaffe.ben@gmail.com>\nBen Moss <ben@mossity.com>\nBen Newman <bn@cs.stanford.edu>\nBen Ripkens <bripkens.dev@gmail.com>\nBenjamin Keen <ben.keen@gmail.com>\nBenjamin Leiken <benleiken@gmail.com>\nBenjamin Woodruff <github@benjam.info>\nBenjy Cui <benjytrys@gmail.com>\nBill Blanchard <bill@plumbdev.com>\nBill Fisher <fisherwebdev@gmail.com>\nBlaine Hatab <jbhatab@gmail.com>\nBlaine Kasten <blainekasten@gmail.com>\nBob Eagan <bob@synapsestudios.com>\nBob Ralian <bob.ralian@gmail.com>\nBob Renwick <bob.renwick@gmail.com>\nBobby <puppybytes@gmail.com>\nBojan Mihelac <bmihelac@mihelac.org>\nBradley Spaulding <brad.spaulding@gmail.com>\nBrandon Bloom <brandon@brandonbloom.name>\nBrandon Tilley <brandon@brandontilley.com>\nBrenard Cubacub <bcbcb@users.noreply.github.com>\nBrian Cooke <bri@bricooke.com>\nBrian Holt <btholt@gmail.com>\nBrian Hsu <brianhsu@Brians-MacBook-Pro.local>\nBrian Kim <briankimpossible@gmail.com>\nBrian Kung <brian@callmekung.com>\nBrian Reavis <brian@thirdroute.com>\nBrian Rue <brian@rollbar.com>\nBruno Škvorc <bruno@skvorc.me>\nCam Song <neosoyn@gmail.com>\nCam Spiers <camspiers@gmail.com>\nCameron Chamberlain <git@camjc.com>\nCameron Matheson <cameron@instructure.com>\nCarter Chung <carterchung@users.noreply.github.com>\nCassus Adam Banko <banko.adam@gmail.com>\nCat Chen <catchen@fb.com>\nCedric Sohrauer <cedric.sohrauer@infopark.de>\nCesar William Alvarenga <cesarwbr@gmail.com>\nChangsoon Bok <winmain@gmail.com>\nCharles Marsh <charlie@khanacademy.org>\nChase Adams <realchaseadams@gmail.com>\nCheng Lou <chenglou92@gmail.com>\nChitharanjan Das <das.chitharanjan@gmail.com>\nChris Bolin <bolin.chris@gmail.com>\nChris Grovers <chrisgrovers@users.noreply.github.com>\nChris Ha <chriskevinha@gmail.com>\nChris Rebert <github@rebertia.com>\nChris Sciolla <csciolla1@gmail.com>\nChristian Alfoni <christianalfoni@gmail.com>\nChristian Oliff <christianoliff@yahoo.com>\nChristian Roman <chroman16@gmail.com>\nChristoffer Sawicki <christoffer.sawicki@gmail.com>\nChristoph Pojer <christoph.pojer@gmail.com>\nChristopher Monsanto <chris@monsan.to>\nClay Allsopp <clay.allsopp@gmail.com>\nConnor McSheffrey <c@conr.me>\nConor Hastings <hastings.conorm@gmail.com>\nCory House <housecor@gmail.com>\nCotton Hou <himcotton@gmail.com>\nCraig Akimoto <strawbrary@users.noreply.github.com>\nCristovao Verstraeten <cristovao@apleasantview.com>\nDamien Pellier <dpellier@leadformance.com>\nDan Abramov <dan.abramov@gmail.com>\nDan Fox <iamdanfox@gmail.com>\nDan Schafer <dschafer@fb.com>\nDaniel Carlsson <daniel.carlsson.1987@gmail.com>\nDaniel Cousens <dcousens@users.noreply.github.com>\nDaniel Friesen <daniel@nadir-seen-fire.com>\nDaniel Gasienica <daniel@gasienica.ch>\nDaniel Hejl <daniel.hejl@hotmail.com>\nDaniel Hejl <hejldaniel@gmail.com>\nDaniel Lo Nigro <daniel@dan.cx>\nDaniel Mané <danmane@gmail.com>\nDaniel Miladinov <dmiladinov@wingspan.com>\nDaniel Rodgers-Pryor <djrodgerspryor@gmail.com>\nDaniel Schonfeld <daniel@schonfeld.org>\nDanny Ben-David <dannybd@fb.com>\nDarcy <smadad@me.com>\nDaryl Lau <daryl@weak.io>\nDarío Javier Cravero <dario@uxtemple.com>\nDave Galbraith <dave@jut.io>\nDavid Baker <djbaker2@gmail.com>\nDavid Ed Mellum <david@edmellum.com>\nDavid Goldberg <gberg1@users.noreply.github.com>\nDavid Granado <davidjgranado@gmail.com>\nDavid Greenspan <dgreenspan@alum.mit.edu>\nDavid Hellsing <david@aino.se>\nDavid Hu <davidhu91@gmail.com>\nDavid Khourshid <davidkpiano@gmail.com>\nDavid Mininger <dmininger@gmail.com>\nDavid Neubauer <davidneub@gmail.com>\nDavid Percy <davetp425@gmail.com>\nDean Shi <dnshi@users.noreply.github.com>\nDenis Sokolov <denis@sokolov.cc>\nDeniss Jacenko <deniss.jacenko+github@gmail.com>\nDennis Johnson <djohnson@rallydev.com>\nDevon Blandin <dblandin@gmail.com>\nDevon Harvey <devonharvey@gmail.com>\nDmitrii Abramov <dmitrii@rheia.us>\nDmitriy Rozhkov <dmitriy.rozhkov@xing.com>\nDmitry Blues <dmitri.blyus@gmail.com>\nDmitry Mazuro <dmitry.mazuro@icloud.com>\nDomenico Matteo <matteo.domenico@gmail.com>\nDon Abrams <donabrams@gmail.com>\nDongsheng Liu <bellanchor@gmail.com>\nDustan Kasten <dustan.kasten@gmail.com>\nDustin Getz <dgetz@wingspan.com>\nDylan Harrington <dylanharrington@gmail.com>\nEduardo Garcia <emumaniacx@gmail.com>\nEdvin Erikson <edvin@rocketblast.com>\nElaine Fang <elainefang@Elaines-MacBook-Pro.local>\nEnguerran <engcolson@gmail.com>\nEric Clemmons <eric@smarterspam.com>\nEric Eastwood <contact@ericeastwood.com>\nEric Florenzano <floguy@gmail.com>\nEric O'Connell <eric.oconnell@idealist.org>\nEric Schoffstall <contra@wearefractal.com>\nErik Harper <eharper@mixpo.com>\nEspen Hovlandsdal <rexxars@gmail.com>\nEvan Coonrod <evan@paloalto.com>\nEvan Vosberg <evanvosberg@urban.to>\nFabio M. Costa <fabiomcosta@gmail.com>\nFederico Rampazzo <frampone@gmail.com>\nFelipe Oliveira Carvalho <felipekde@gmail.com>\nFelix Gnass <fgnass@gmail.com>\nFelix Kling <felix.kling@gmx.net>\nFernando Correia <fernando@servicero.com>\nFrankie Bagnardi <f.bagnardi@gmail.com>\nFrançois-Xavier Bois <fxbois@gmail.com>\nFred Zhao <fredz@fb.com>\nFreddy Rangel <frederick.rangel@gmail.com>\nFyodor Ivanishchev <cbrwizard@gmail.com>\nG Scott Olson <gscottolson@gmail.com>\nG. Kay Lee <balancetraveller+github@gmail.com>\nGabe Levi <gabelevi@gmail.com>\nGajus Kuizinas <g.kuizinas@anuary.com>\nGareth Nicholson <gareth.nic@gmail.com>\nGarren Smith <garren.smith@gmail.com>\nGavin McQuistin <gavin@kickfiredesign.com>\nGeert Pasteels <geert.pasteels@gmail.com>\nGeert-Jan Brits <gbrits@gmail.com>\nGeorge A Sisco III <george.sisco@gmail.com>\nGeorgii Dolzhykov <thorn.mailbox@gmail.com>\nGilbert <gilbertbgarza@gmail.com>\nGlen Mailer <glenjamin@gmail.com>\nGrant Timmerman <granttimmerman@gmail.com>\nGreg Hurrell <glh@fb.com>\nGreg Perkins <gregrperkins@fb.com>\nGreg Roodt <groodt@gmail.com>\nGregory <g.marcilhacy@gmail.com>\nGuangqiang Dong <gqdong@fb.com>\nGuido Bouman <m@guido.vc>\nHarry Hull <harry.hull1@gmail.com>\nHarry Marr <harry.marr@gmail.com>\nHarry Moreno <morenoh149@gmail.com>\nHarshad Sabne <harshadsabne@users.noreply.github.com>\nHekar Khani <hekark@gmail.com>\nHendrik Swanepoel <hendrik.swanepoel@gmail.com>\nHenrik Nyh <henrik@nyh.se>\nHenry Wong <henryw4k@gmail.com>\nHenry Zhu <hi@henryzoo.com>\nHideo Matsumoto <hideo-m@pekeq.com>\nHou Chia <kchia87@gmail.com>\nHuang-Wei Chang <chang.huangwei.01@gmail.com>\nHugo Agbonon <hugo@agbonon.fr>\nHugo Jobling <me@thisishugo.com>\nHyeock Kwon <doublus@gmail.com>\nHéliton Nordt <hnordt@hnordt.com>\nIan Obermiller <ian@obermillers.com>\nIgnacio Carbajo <icarbajop@gmail.com>\nIgor Scekic <igorscekic2@gmail.com>\nIlia Pavlenkov <dortonway@gmail.com>\nIlya Shuklin <ilya.shuklin@gmail.com>\nIlyá Belsky <gelias.gbelsky@gmail.com>\nIngvar Stepanyan <me@rreverser.com>\nIrae Carvalho <irae@irae.pro.br>\nIsaac Salier-Hellendag <isaac@fb.com>\nIurii Kucherov <yuyokk@gmail.com>\nIvan Kozik <ivan@ludios.org>\nIvan Krechetov <ikr@ikr.su>\nIvan Vergiliev <ivan.vergiliev@gmail.com>\nJ. Andrew Brassington <jabbrass@zoho.com>\nJ. Renée Beach <splendidnoise@gmail.com>\nJD Isaacks <jd@jisaacks.com>\nJJ Weber <jj.weber@gmail.com>\nJW <JW00000@gmail.com>\nJack Zhang <jzhang31191@gmail.com>\nJackie Wung <jacquelinewung@gmail.com>\nJacob Gable <jacob.gable@gmail.com>\nJacob Greenleaf <jake@imgur.com>\nJae Hun Ro <jhr24@duke.edu>\nJaeho Lee <me@jaeholee.org>\nJaime Mingo <j.mingov@3boll.com>\nJake Worth <jakeworth82@gmail.com>\nJakub Malinowski <jakubmal@gmail.com>\nJames <james@mystrata.com>\nJames Brantly <james@jbrantly.com>\nJames Burnett <jtburnett@tribune.com>\nJames Friend <james@jsdf.co>\nJames Ide <ide@fb.com>\nJames Long <longster@gmail.com>\nJames Pearce <jpearce@fb.com>\nJames Seppi <james.seppi@gmail.com>\nJames South <james_south@hotmail.com>\nJames Wen <jrw2175@columbia.edu>\nJamie Wong <jamie.lf.wong@gmail.com>\nJamis Charles <jacharles@paypal.com>\nJamison Dance <jergason@gmail.com>\nJan Hancic <jan.hancic@gmail.com>\nJan Kassens <jan@kassens.net>\nJan Raasch <jan@janraasch.com>\nJared Forsyth <jared@jaredforsyth.com>\nJason <usaman2010us@gmail.com>\nJason Bonta <jbonta@gmail.com>\nJason Ly <jason.ly@gmail.com>\nJason Miller <aidenn0@geocities.com>\nJason Quense <monastic.panic@gmail.com>\nJason Trill <jason@jasontrill.com>\nJason Webster <jason@metalabdesign.com>\nJay Jaeho Lee <jay@spoqa.com>\nJean Lauliac <lauliacj@gmail.com>\nJed Watson <jed.watson@me.com>\nJeff Barczewski <jeff.barczewski@gmail.com>\nJeff Carpenter <gcarpenterv@gmail.com>\nJeff Chan <jefftchan@gmail.com>\nJeff Hicken <jhicken@gmail.com>\nJeff Kolesky <github@kolesky.com>\nJeff Morrison <jeff@anafx.com>\nJeff Welch <whatthejeff@gmail.com>\nJeffrey Lin <lin.jeffrey@gmail.com>\nJeremy Fairbank <elpapapollo@gmail.com>\nJesse Skinner <jesse@thefutureoftheweb.com>\nJignesh Kakadiya <jigneshhk1992@gmail.com>\nJim OBrien <jimobrien930@gmail.com>\nJim Sproch <jsproch@fb.com>\nJimmy Jea <jimjea@gmail.com>\nJing Chen <jingc@fb.com>\nJinwoo Oh <arkist@gmail.com>\nJinxiu Lee <lee.jinxiu@gmail.com>\nJiyeon Seo <zzzeons@gmail.com>\nJody McIntyre <scjody@modernduck.com>\nJoe Critchley <joecritch@gmail.com>\nJoe Stein <joeaarons@gmail.com>\nJoel Auterson <joel.auterson@googlemail.com>\nJohannes Baiter <johannes.baiter@gmail.com>\nJohannes Emerich <johannes@emerich.de>\nJohannes Lumpe <johannes@johanneslumpe.de>\nJohn Heroy <johnheroy@users.noreply.github.com>\nJohn Ryan <tjfryan@fb.com>\nJohn Watson <jwatson@fb.com>\nJohn-David Dalton <john.david.dalton@gmail.com>\nJon Beebe <jon.beebe@daveramsey.com>\nJon Chester <jonchester@fb.com>\nJon Hester <jon.d.hester@gmail.com>\nJon Madison <jon@tfftech.com>\nJon Scott Clark <jonscottclark@gmail.com>\nJon Tewksbury <jontewks@gmail.com>\nJonas Enlund <jonas.enlund@gmail.com>\nJonas Gebhardt <jonas@instagram.com>\nJonathan Hsu <jhiswin@gmail.com>\nJonathan Persson <persson.jonathan@gmail.com>\nJordan Harband <ljharb@gmail.com>\nJordan Walke <jordojw@gmail.com>\nJorrit Schippers <jorrit@ncode.nl>\nJoseph Nudell <joenudell@gmail.com>\nJoseph Savona <joesavona@fb.com>\nJosh Bassett <josh.bassett@gmail.com>\nJosh Duck <josh@fb.com>\nJosh Perez <josh.perez@airbnb.com>\nJosh Yudaken <yud@instagram.com>\nJoshua Evans <joshua.evans@quantified.co>\nJoshua Go <joshuago@gmail.com>\nJoshua Goldberg <jsgoldberg90@gmail.com>\nJoshua Ma <me@joshma.com>\nJoão Valente <filipevalente@gmail.com>\nJuan Serrano <germ13@users.noreply.github.com>\nJulen Ruiz Aizpuru <julenx@gmail.com>\nJulian Viereck <julian.viereck@gmail.com>\nJulien Bordellier <git@julienbordellier.com>\nJulio Lopez <ljuliom@gmail.com>\nJun Wu <quark@lihdd.net>\nJuraj Dudak <jdudak@fb.com>\nJustas Brazauskas <brazauskasjustas@gmail.com>\nJustin Jaffray <justinjaffray@khanacademy.org>\nJustin Robison <jrobison151@gmail.com>\nJustin Woo <moomoowoo@gmail.com>\nKale <krydrogen@gmail.com>\nKamron Batman <kamronbatman@users.noreply.github.com>\nKarl Mikkelsen <karl@kingkarl.com>\nKarpich Dmitry <karpich@gollard.ru>\nKeito Uchiyama <projects@keito.me>\nKen Powers <ken@kenpowers.net>\nKent C. Dodds <kent@doddsfamily.us>\nKevin Cheng <09chengk@gmail.com>\nKevin Coughlin <kevintcoughlin@gmail.com>\nKevin Huang <huang.kev@gmail.com>\nKevin Lau <thekevlau@gmail.com>\nKevin Old <kevin@kevinold.com>\nKevin Robinson <krobinson@twitter.com>\nKewei Jiang <jkewei328@hotmail.com>\nKier Borromeo <seraphipod@gmail.com>\nKimCoding <jeokrang@hanmail.net>\nKirk Steven Hansen <hanski07@kirk-hansens-macbook.local>\nKit Randel <kit@nocturne.net.nz>\nKohei TAKATA <kt.koheitakata@gmail.com>\nKoo Youngmin <youngmin@youngminz.kr>\nKrystian Karczewski <karcz.k@gmail.com>\nKunal Mehta <k.mehta@berkeley.edu>\nKurt Ruppel <me@kurtruppel.com>\nKyle Kelley <rgbkrk@gmail.com>\nKyle Mathews <mathews.kyle@gmail.com>\nLaurence Rowe <l@lrowe.co.uk>\nLaurent Etiemble <laurent.etiemble@monobjc.net>\nLee Byron <lee@leebyron.com>\nLee Jaeyoung <jaeyoung@monodiary.net>\nLei <tendant@gmail.com>\nLeland Richardson <leland.m.richardson@gmail.com>\nLeon Fedotov <LeonFedotov@users.noreply.github.com>\nLeon Yip <lyip1992@users.noreply.github.com>\nLeonardo YongUk Kim <dalinaum@gmail.com>\nLevi Buzolic <levibuzolic@gmail.com>\nLevi McCallum <levi@levimccallum.com>\nLily <qvang.j@gmail.com>\nLogan Allen <loganfynne@gmail.com>\nLovisa Svallingson <lovisasvallingson@gmail.com>\nLudovico Fischer <livrerie@gmail.com>\nLuigy Leon <luichi.19@gmail.com>\nLuke Horvat <lukehorvat@gmail.com>\nMIKAMI Yoshiyuki <yoshuki@saikyoline.jp>\nMaher Beg <maherbeg@gmail.com>\nManas <prometheansacrifice@gmail.com>\nMarcin K. <katzoo@github.mail>\nMarcin Kwiatkowski <marcin.kwiatkowski@hotmail.com>\nMarcin Szczepanski <marcins@gmail.com>\nMariano Desanze <protronm@gmail.com>\nMarjan <marjan.georgiev@gmail.com>\nMark Anderson <undernewmanagement@users.noreply.github.com>\nMark Funk <mfunk86@gmail.com>\nMark Hintz <markohintz@gmail.com>\nMark IJbema <markijbema@gmail.com>\nMark Murphy <murphy.mark@live.ca>\nMark Richardson <echo@fb.com>\nMark Rushakoff <mark@influxdb.com>\nMark Sun <sunmark14@gmail.com>\nMarlon Landaverde <milanlandaverde@gmail.com>\nMarshall Roch <mroch@fb.com>\nMartin Andert <mandert@gmail.com>\nMartin Hujer <mhujer@gmail.com>\nMartin Jul <martin@mjul.com>\nMartin Konicek <mkonicek@fb.com>\nMartin Mihaylov <martomi@users.noreply.github.com>\nMasaki KOBAYASHI <makky.4d6b.3f5@gmail.com>\nMathieu M-Gosselin <mathieumg@gmail.com>\nMathieu Savy <savy.mathieu@gmail.com>\nMatias Singers <mail@matiassingers.com>\nMatsunoki <himkt@klis.tsukuba.ac.jp>\nMatt Brookes <matt@brookes.net>\nMatt Dunn-Rankin <mdunnrankin@gmail.com>\nMatt Harrison <mt.harrison86@gmail.com>\nMatt Huggins <matt.huggins@gmail.com>\nMatt Stow <matt.stow@foxsports.com.au>\nMatt Zabriskie <mzabriskie@gmail.com>\nMatthew Dapena-Tretter <m@tthewwithanm.com>\nMatthew Herbst <mherbst@chegg.com>\nMatthew Hodgson <matthew@matrix.org>\nMatthew Johnston <matthewjohnston4@outlook.com>\nMatthew King <mking@users.noreply.github.com>\nMatthew Looi <looi.matthew@gmail.com>\nMatthew Miner <matthew@matthewminer.com>\nMatthias Le Brun <mlbli@me.com>\nMatti Nelimarkka <matti.nelimarkka@hiit.fi>\nMattijs Kneppers <mattijs@arttech.nl>\nMax F. Albrecht <1@178.is>\nMax Heiber <max.heiber@gmail.com>\nMax Stoiber <contact@mstoiber.com>\nMaxi Ferreira <charca@gmail.com>\nMaxim Abramchuk <MaximAbramchuck@gmail.com>\nMerrick Christensen <merrick.christensen@gmail.com>\nMert Kahyaoğlu <mertkahyaoglu93@gmail.com>\nMichael Chan <mijoch@gmail.com>\nMichael McDermott <michael@mgmcdermott.com>\nMichael Randers-Pehrson <michael.rp@gmail.com>\nMichael Ridgway <mridgway@yahoo-inc.com>\nMichael Warner <MichaelJWarner@hotmail.com>\nMichael Wiencek <mwtuea@gmail.com>\nMichael Ziwisky <mikezx@gmail.com>\nMichal Srb <xixixao@seznam.cz>\nMichelle Todd <himichelletodd@gmail.com>\nMihai Parparita <mihai.parparita@gmail.com>\nMike D Pilsbury <mike.pilsbury@gmail.com>\nMike Groseclose <mike.groseclose@gmail.com>\nMike Nordick <mnordick>\nMikolaj Dadela <mikolaj.dadela@hgv-online.de>\nMiles Johnson <mileswjohnson@gmail.com>\nMinwe LUO <minwe@yunshipei.com>\nMiorel Palii <miorel@fb.com>\nMorhaus <alexandre.kirszenberg@gmail.com>\nMoshe Kolodny <kolodny.github@gmail.com>\nMouad Debbar <mdebbar@fb.com>\nMurad <rogozhnikoff@users.noreply.github.com>\nMurray M. Moss <murray@mmoss.name>\nNadeesha Cabral <nadeesha.cabral@gmail.com>\nNaman Goel <naman34@gmail.com>\nNate Hunzaker <nate.hunzaker@gmail.com>\nNate Lee <nathaniel.jy.lee88@gmail.com>\nNathan Smith <NogsMPLS@users.noreply.github.com>\nNathan White <nw@nwhite.net>\nNee <944316342@qq.com>\nNeri Marschik <marschik_neri@cyberagent.co.jp>\nNguyen Truong Duy <truongduy134@yahoo.com>\nNicholas Bergson-Shilcock <me@nicholasbs.net>\nNicholas Clawson <nickclaw@users.noreply.github.com>\nNick Balestra <nickbalestra@users.noreply.github.com>\nNick Fitzgerald <fitzgen@gmail.com>\nNick Gavalas <njg57@cornell.edu>\nNick Merwin <nick@lemurheavy.com>\nNick Presta <nick@nickpresta.ca>\nNick Raienko <enaqxx@gmail.com>\nNick Thompson <ncthom91@gmail.com>\nNick Williams <WickyNilliams@users.noreply.github.com>\nNiklas Boström <nbostrom@gmail.com>\nNing Xia <ning-github@users.noreply.github.com>\nNiole Nelson <niolenelson@gmail.com>\nOiva Eskola <oiva.eskola@gmail.com>\nOleg <o.yanchinskiy@gmail.com>\nOleksii Markhovskyi <olexiy.markhovsky@gmail.com>\nOliver Zeigermann <oliver.zeigermann@gmail.com>\nOlivier Tassinari <Olivier.tassinari@gmail.com>\nOwen Coutts <owenc@fb.com>\nPablo Lacerda de Miranda <pablolm@yahoo-inc.com>\nPaolo Moretti <moretti@users.noreply.github.com>\nPascal Hartig <passy@twitter.com>\nPatrick <info@telepark.de>\nPatrick Laughlin <patrick@laughl.info>\nPatrick Stapleton <github@gdi2290.com>\nPaul Benigeri <me@benigeri.com>\nPaul Harper <benekastah@gmail.com>\nPaul O’Shannessy <paul@oshannessy.com>\nPaul Seiffert <paul.seiffert@gmail.com>\nPaul Shen <paul@mnml0.com>\nPedro Nauck <pedronauck@gmail.com>\nPete Hunt <floydophone@gmail.com>\nPeter Blazejewicz <peter.blazejewicz@gmail.com>\nPeter Cottle <pcottle@fb.com>\nPeter Jaros <peter.a.jaros@gmail.com>\nPeter Newnham <peter.newnham@appsbroker.com>\nPetri Lehtinen <petri@digip.org>\nPetri Lievonen <plievone@cc.hut.fi>\nPieter Vanderwerff <me@pieter.io>\nPouja Nikray <poujanik@gmail.com>\nPrathamesh Sonpatki <csonpatki@gmail.com>\nPrayag Verma <prayag.verma@gmail.com>\nPreston Parry <ClimbsRocks@users.noreply.github.com>\nRafael <rafael.garcia@clever.com>\nRafal Dittwald <rafal.dittwald@gmail.com>\nRainer Oviir <roviir@gmail.com>\nRajat Sehgal <rajatsehgal1988@gmail.com>\nRajiv Tirumalareddy <rajivtreddy@gmail.com>\nRam Kaniyur <quadrupleslap@users.noreply.github.com>\nRandall Randall <randall@randallsquared.com>\nRay <ray@tomo.im>\nRaymond Ha <raymond@shraymonks.com>\nReed Loden <reed@reedloden.com>\nRemko Tronçon <git@el-tramo.be>\nRichard D. Worth <rdworth@gmail.com>\nRichard Feldman <richard.t.feldman@gmail.com>\nRichard Kho <hello@richardkho.com>\nRichard Littauer <richard.littauer@gmail.com>\nRichard Livesey <Livesey7@hotmail.co.uk>\nRichard Wood <rwoodnz@gmail.com>\nRick Beerendonk <rick@beerendonk.com>\nRick Ford <rickfordrick@gmail.com>\nRiley Tomasek <riley.tomasek@gmail.com>\nRob Arnold <robarnold@cs.cmu.edu>\nRobert Binna <rbinna@gmail.com>\nRobert Knight <robert.knight@mendeley.com>\nRobert Sedovsek <robert.sedovsek@gmail.com>\nRobin Berjon <robin@berjon.com>\nRobin Frischmann <robin@rofrischmann.de>\nRoman Pominov <rpominov+github@gmail.com>\nRoman Vanesyan <roman.vanesyan@gmail.com>\nRuss <russwirtz@gmail.com>\nRyan Seddon <seddon.ryan@gmail.com>\nSahat Yalkabov <sakhat@gmail.com>\nSaif Hakim <saif@benchling.com>\nSaiichi Hashimoto <saiichihashimoto@gmail.com>\nSam Beveridge <sbeveridge@saltstack.com>\nSam Saccone <samccone@gmail.com>\nSam Selikoff <sam.selikoff@gmail.com>\nSamy Al Zahrani <samy@sadeem.net>\nSander Spies <sandermail@gmail.com>\nScott Burch <scott@bulldoginfo.com>\nScott Feeney <scott@oceanbase.org>\nSean Kinsey <oyvind@fb.com>\nSebastian Markbåge <sebastian@calyptus.eu>\nSebastian McKenzie <sebmck@gmail.com>\nSeoh Char <devthewild@gmail.com>\nSercan Eraslan <sercan.eraslan@sahibinden.com>\nSerg <undrdog@yandex.ru>\nSergey Generalov <sergey@genbit.ru>\nSergey Rubanov <chi187@gmail.com>\nSeyi Adebajo <hello@seyinanigans.com>\nShane O'Sullivan <shaneosullivan1@gmail.com>\nShaun Trennery <shaun.trennery@gmail.com>\nShihChi Huang <hhuang@netflix.com>\nShim Won <marocchino@gmail.com>\nShinnosuke Watanabe <snnskwtnb@gmail.com>\nShogun Sea <shogunsea08@gmail.com>\nShota Kubota <kubosho@users.noreply.github.com>\nShripad K <assortmentofsorts@gmail.com>\nSibi <psibi2000@gmail.com>\nSimen Bekkhus <sbekkhus91@gmail.com>\nSimon Højberg <r.hackr@gmail.com>\nSimon Welsh <simon@simon.geek.nz>\nSimone Vittori <hello@simonewebdesign.it>\nSoichiro Kawamura <mail@w-st.com>\nSophia Westwood <sophia@quip.com>\nSota Ohara <ohrst.18@gmail.com>\nSpencer Handley <spencerhandley@gmail.com>\nStefan Dombrowski <sdo451@gmail.com>\nStephen Murphy <smurphy3@apple.com>\nSterling Cobb <sterlingcobb@gmail.com>\nSteve Baker <_steve_@outlook.com>\nSteven Luscher <react@steveluscher.com>\nSteven Vachon <contact@svachon.com>\nStoyan Stefanov <ssttoo@ymail.com>\nSundeep Malladi <sundeep.malladi@gmail.com>\nSunny Juneja <me@sunnyjuneja.com>\nSven Helmberger <fforw@gmx.de>\nSverre Johansen <sverre.johansen@gmail.com>\nSébastien Lorber <lorber.sebastien@gmail.com>\nSławomir Laskowski <laskowski.box@gmail.com>\nTaeho Kim <dittos@gmail.com>\nTay Yang Shun <tay.yang.shun@gmail.com>\nTed Kim <ted@vcnc.co.kr>\nTengfei Guo <terryr3rd@yeah.net>\nTeodor Szente <teodor98sz@gmail.com>\nThomas Aylott <oblivious@subtlegradient.com>\nThomas Boyt <thomas.boyt@venmo.com>\nThomas Broadley <buriedunderbooks@hotmail.com>\nThomas Reggi <socialtr@gmail.com>\nThomas Röggla <t.roggla@cwi.nl>\nThomas Shaddox <thomas@heyzap.com>\nThomas Shafer <thomasjshafer@gmail.com>\nThomasCrvsr <crevoisier.thomas@gmail.com>\nTienchai Wirojsaksaree <tienchai@fb.com>\nTim Routowicz <troutowicz@gmail.com>\nTim Schaub <tschaub@users.noreply.github.com>\nTimothy Yung <yungsters@gmail.com>\nTimur Carpeev <timuric@users.noreply.github.com>\nTobias Reiss <tag+github@basecode.de>\nTom Duncalf <tom@tomduncalf.com>\nTom Haggie <thaggie@gmail.com>\nTom Hauburger <thauburger@gmail.com>\nTom MacWright <tom@macwright.org>\nTom Occhino <tomocchino@gmail.com>\nTomasz Kołodziejski <tkolodziejski@gmail.com>\nTomoya Suzuki <tmysz.dev@gmail.com>\nTony Spiro <tspiro@tonyspiro.com>\nToru Kobayashi <koba0004@gmail.com>\nTrinh Hoang Nhu <trinhhoangnhu@gmail.com>\nTsung Hung <thung@me.com>\nTyler Brock <tyler.brock@gmail.com>\nUstin Zarubin <ustin.zarubin@campusbellhops.com>\nVadim Chernysh <chernysh.vadim@gmail.com>\nVarun Rau <varunrau@gmail.com>\nVasiliy Loginevskiy <Yeti.or@gmail.com>\nVictor Alvarez <v.alvarez312@gmail.com>\nVictor Homyakov <vkhomyackov@gmail.com>\nVictor Koenders <victor.koenders@gmail.com>\nVille Immonen <ville.immonen@iki.fi>\nVincent Riemer <vincentriemer@gmail.com>\nVincent Siao <vincent@asana.com>\nVipul A M <vipulnsward@gmail.com>\nVitaly Kramskikh <vkramskikh@gmail.com>\nVitor Balocco <vitorbal@gmail.com>\nVjeux <vjeuxx@gmail.com>\nVolkan Unsal <spocksplanet@gmail.com>\nWander Wang <wander.wang@ismole.com>\nWayne Larsen <wayne@larsen.st>\nWickyNilliams <WickyNilliams@MBA>\nWincent Colaiuta <win@wincent.com>\nWout Mertens <Wout.Mertens@gmail.com>\nXavier Morel <xmo-odoo@users.noreply.github.com>\nXuefengWu <benewu@gmail.com>\nYakov Dalinchuk <murashki@users.noreply.github.com>\nYasar icli <hello@yasaricli.com>\nYouBao Nong <noyobo@gmail.com>\nYuichi Hagio <yhagio87@gmail.com>\nYuriy Dybskiy <yuriy@dybskiy.com>\nYutaka Nakajima <nakazye@gmail.com>\nYuval Dekel <thedekel@fb.com>\nZach Bruggeman <mail@bruggie.com>\nZach Ramaekers <zramaekers@gmail.com>\nZacharias <zachasme@users.noreply.github.com>\nZeke Sikelianos <zeke@sikelianos.com>\nZhangjd <zhang.jd@qq.com>\nadraeth <jerzy.mirecki@gmail.com>\narush <arush@ilovebrands.net>\nbrafdlog <brafdlog@gmail.com>\nchen <kikyous@163.com>\nclariroid <clarinette.uranus@gmail.com>\nclaudiopro <claudio.procida@gmail.com>\ncutbko <kutsenko.eugene@hotmail.com>\ndavidxi <davidgraycn@gmail.com>\ndongmeng.ldm <dongmeng.ldm@alibaba-inc.com>\niamchenxin <iamchenxin@gmail.com>\niamdoron <doronpagot@gmail.com>\niawia002 <z2d@jifangcheng.com>\nimagentleman <imagentlemail@gmail.com>\nkoh-taka <koh-taka@users.noreply.github.com>\nkohashi85 <hako584@gmail.com>\nlaiso <laiso@lai.so>\nleeyoungalias <leeyoungalias@qq.com>\nli.li <li.li@ele.me>\nmaxprafferty <maxprafferty@gmail.com>\nrgarifullin <ringarifullin@gmail.com>\nsongawee <dennis@songawee.com>\nsugarshin <shinsugar@gmail.com>\nwali-s <ahmad3y2k@hotmail.com>\nyiminghe <yiminghe@gmail.com>\nyoumoo <youmoolee@gmail.com>\nzhangjg <jinguozhang@qq.com>\nzwhitchcox <zwhitchcox@gmail.com>\nÁrni Hermann Reynisson <arnihr@gmail.com>\n元彦 <yuanyan@users.noreply.github.com>\n凌恒 <jiakun.dujk@alibaba-inc.com>\n张敏 <cookfront@gmail.com>\n"
  },
  {
    "path": "docs/articles/intro_reactR_files/react-16.12.0/LICENSE.txt",
    "content": "MIT License\n\nCopyright (c) 2013-present, Facebook, Inc.\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"
  },
  {
    "path": "docs/articles/intro_reactR_files/react-16.7.0/AUTHORS",
    "content": "39 <8398a7@gmail.com>\nAaron Franks <aaron.franks@gmail.com>\nAaron Gelter <aaron.gelter@harman.com>\nAdam Bloomston <adam@glitterfram.es>\nAdam Krebs <amk528@cs.nyu.edu>\nAdam Mark <adammark75@gmail.com>\nAdam Solove <asolove@gmail.com>\nAdam Timberlake <adam.timberlake@gmail.com>\nAdam Zapletal <adamzap@gmail.com>\nAhmad Wali Sidiqi <wali-s@users.noreply.github.com>\nAlan Plum <me@pluma.io>\nAlan Souza <alansouzati@gmail.com>\nAlan deLevie <adelevie@gmail.com>\nAlastair Hole <afhole@gmail.com>\nAlex <ultrafez@users.noreply.github.com>\nAlex Boatwright <drdelambre@gmail.com>\nAlex Boyd <alex@opengroove.org>\nAlex Dajani <xelad1@gmail.com>\nAlex Lopatin <alex@alexlopatin.com>\nAlex Mykyta <dancingwithcows@gmail.com>\nAlex Pien <alexpien@gmail.com>\nAlex Smith <iqwz@ya.ru>\nAlex Zelenskiy <azelenskiy@fb.com>\nAlexander Shtuchkin <ashtuchkin@gmail.com>\nAlexander Solovyov <alexander@solovyov.net>\nAlexander Tseung <alextsg@gmail.com>\nAlexandre Gaudencio <shahor@shahor.fr>\nAlexey Raspopov <avenger7x13@gmail.com>\nAlexey Shamrin <shamrin@gmail.com>\nAli Ukani <ali.ukani@gmail.com>\nAndre Z Sanchez <andrezacsanchez@gmail.com>\nAndreas Savvides <asavvides@twitter.com>\nAndreas Svensson <andreas@syranide.com>\nAndres Kalle <mjomble@gmail.com>\nAndres Suarez <zertosh@gmail.com>\nAndrew Clark <acdlite@me.com>\nAndrew Cobby <cobbweb@users.noreply.github.com>\nAndrew Davey <andrew@equin.co.uk>\nAndrew Henderson <andrew.m.henderson@gmail.com>\nAndrew Kulakov <avk@8xx8.ru>\nAndrew Rasmussen <andras@fb.com>\nAndrew Sokolov <asokolov@atlassian.com>\nAndrew Zich <azich@fb.com>\nAndrey Popp <8mayday@gmail.com>\nAnthony van der Hoorn <anthony.vanderhoorn@gmail.com>\nAnto Aravinth <anto.aravinth.cse@gmail.com>\nAntonio Ruberto <anto.ruberto@gmail.com>\nAntti Ahti <antti.ahti@gmail.com>\nAnuj Tomar <ankuto@gmail.com>\nAoDev <AoDev@users.noreply.github.com>\nApril Arcus <april.arcus@gmail.com>\nAreeb Malik <areeb.malik91@gmail.com>\nAria Buckles <aria@khanacademy.org>\nAria Stewart <aredridel@dinhe.net>\nArian Faurtosh <arian@icloud.com>\nArtem Nezvigin <artem@artnez.com>\nAustin Wright <aaa@bzfx.net>\nAyman Osman <aymano.osman@gmail.com>\nBaraa Hamodi <bhamodi@uwaterloo.ca>\nBartosz Kaszubowski <gosimek@gmail.com>\nBasarat Ali Syed <basaratali@gmail.com>\nBattaile Fauber <battaile@gmail.com>\nBeau Smith <beau@beausmith.com>\nBen Alpert <ben@benalpert.com>\nBen Anderson <banderson@constantcontact.com>\nBen Brooks <ben@benbrooks.net>\nBen Foxall <benfoxall@gmail.com>\nBen Halpern <bendhalpern@gmail.com>\nBen Jaffe <jaffe.ben@gmail.com>\nBen Moss <ben@mossity.com>\nBen Newman <bn@cs.stanford.edu>\nBen Ripkens <bripkens.dev@gmail.com>\nBenjamin Keen <ben.keen@gmail.com>\nBenjamin Leiken <benleiken@gmail.com>\nBenjamin Woodruff <github@benjam.info>\nBenjy Cui <benjytrys@gmail.com>\nBill Blanchard <bill@plumbdev.com>\nBill Fisher <fisherwebdev@gmail.com>\nBlaine Hatab <jbhatab@gmail.com>\nBlaine Kasten <blainekasten@gmail.com>\nBob Eagan <bob@synapsestudios.com>\nBob Ralian <bob.ralian@gmail.com>\nBob Renwick <bob.renwick@gmail.com>\nBobby <puppybytes@gmail.com>\nBojan Mihelac <bmihelac@mihelac.org>\nBradley Spaulding <brad.spaulding@gmail.com>\nBrandon Bloom <brandon@brandonbloom.name>\nBrandon Tilley <brandon@brandontilley.com>\nBrenard Cubacub <bcbcb@users.noreply.github.com>\nBrian Cooke <bri@bricooke.com>\nBrian Holt <btholt@gmail.com>\nBrian Hsu <brianhsu@Brians-MacBook-Pro.local>\nBrian Kim <briankimpossible@gmail.com>\nBrian Kung <brian@callmekung.com>\nBrian Reavis <brian@thirdroute.com>\nBrian Rue <brian@rollbar.com>\nBruno Škvorc <bruno@skvorc.me>\nCam Song <neosoyn@gmail.com>\nCam Spiers <camspiers@gmail.com>\nCameron Chamberlain <git@camjc.com>\nCameron Matheson <cameron@instructure.com>\nCarter Chung <carterchung@users.noreply.github.com>\nCassus Adam Banko <banko.adam@gmail.com>\nCat Chen <catchen@fb.com>\nCedric Sohrauer <cedric.sohrauer@infopark.de>\nCesar William Alvarenga <cesarwbr@gmail.com>\nChangsoon Bok <winmain@gmail.com>\nCharles Marsh <charlie@khanacademy.org>\nChase Adams <realchaseadams@gmail.com>\nCheng Lou <chenglou92@gmail.com>\nChitharanjan Das <das.chitharanjan@gmail.com>\nChris Bolin <bolin.chris@gmail.com>\nChris Grovers <chrisgrovers@users.noreply.github.com>\nChris Ha <chriskevinha@gmail.com>\nChris Rebert <github@rebertia.com>\nChris Sciolla <csciolla1@gmail.com>\nChristian Alfoni <christianalfoni@gmail.com>\nChristian Oliff <christianoliff@yahoo.com>\nChristian Roman <chroman16@gmail.com>\nChristoffer Sawicki <christoffer.sawicki@gmail.com>\nChristoph Pojer <christoph.pojer@gmail.com>\nChristopher Monsanto <chris@monsan.to>\nClay Allsopp <clay.allsopp@gmail.com>\nConnor McSheffrey <c@conr.me>\nConor Hastings <hastings.conorm@gmail.com>\nCory House <housecor@gmail.com>\nCotton Hou <himcotton@gmail.com>\nCraig Akimoto <strawbrary@users.noreply.github.com>\nCristovao Verstraeten <cristovao@apleasantview.com>\nDamien Pellier <dpellier@leadformance.com>\nDan Abramov <dan.abramov@gmail.com>\nDan Fox <iamdanfox@gmail.com>\nDan Schafer <dschafer@fb.com>\nDaniel Carlsson <daniel.carlsson.1987@gmail.com>\nDaniel Cousens <dcousens@users.noreply.github.com>\nDaniel Friesen <daniel@nadir-seen-fire.com>\nDaniel Gasienica <daniel@gasienica.ch>\nDaniel Hejl <daniel.hejl@hotmail.com>\nDaniel Hejl <hejldaniel@gmail.com>\nDaniel Lo Nigro <daniel@dan.cx>\nDaniel Mané <danmane@gmail.com>\nDaniel Miladinov <dmiladinov@wingspan.com>\nDaniel Rodgers-Pryor <djrodgerspryor@gmail.com>\nDaniel Schonfeld <daniel@schonfeld.org>\nDanny Ben-David <dannybd@fb.com>\nDarcy <smadad@me.com>\nDaryl Lau <daryl@weak.io>\nDarío Javier Cravero <dario@uxtemple.com>\nDave Galbraith <dave@jut.io>\nDavid Baker <djbaker2@gmail.com>\nDavid Ed Mellum <david@edmellum.com>\nDavid Goldberg <gberg1@users.noreply.github.com>\nDavid Granado <davidjgranado@gmail.com>\nDavid Greenspan <dgreenspan@alum.mit.edu>\nDavid Hellsing <david@aino.se>\nDavid Hu <davidhu91@gmail.com>\nDavid Khourshid <davidkpiano@gmail.com>\nDavid Mininger <dmininger@gmail.com>\nDavid Neubauer <davidneub@gmail.com>\nDavid Percy <davetp425@gmail.com>\nDean Shi <dnshi@users.noreply.github.com>\nDenis Sokolov <denis@sokolov.cc>\nDeniss Jacenko <deniss.jacenko+github@gmail.com>\nDennis Johnson <djohnson@rallydev.com>\nDevon Blandin <dblandin@gmail.com>\nDevon Harvey <devonharvey@gmail.com>\nDmitrii Abramov <dmitrii@rheia.us>\nDmitriy Rozhkov <dmitriy.rozhkov@xing.com>\nDmitry Blues <dmitri.blyus@gmail.com>\nDmitry Mazuro <dmitry.mazuro@icloud.com>\nDomenico Matteo <matteo.domenico@gmail.com>\nDon Abrams <donabrams@gmail.com>\nDongsheng Liu <bellanchor@gmail.com>\nDustan Kasten <dustan.kasten@gmail.com>\nDustin Getz <dgetz@wingspan.com>\nDylan Harrington <dylanharrington@gmail.com>\nEduardo Garcia <emumaniacx@gmail.com>\nEdvin Erikson <edvin@rocketblast.com>\nElaine Fang <elainefang@Elaines-MacBook-Pro.local>\nEnguerran <engcolson@gmail.com>\nEric Clemmons <eric@smarterspam.com>\nEric Eastwood <contact@ericeastwood.com>\nEric Florenzano <floguy@gmail.com>\nEric O'Connell <eric.oconnell@idealist.org>\nEric Schoffstall <contra@wearefractal.com>\nErik Harper <eharper@mixpo.com>\nEspen Hovlandsdal <rexxars@gmail.com>\nEvan Coonrod <evan@paloalto.com>\nEvan Vosberg <evanvosberg@urban.to>\nFabio M. Costa <fabiomcosta@gmail.com>\nFederico Rampazzo <frampone@gmail.com>\nFelipe Oliveira Carvalho <felipekde@gmail.com>\nFelix Gnass <fgnass@gmail.com>\nFelix Kling <felix.kling@gmx.net>\nFernando Correia <fernando@servicero.com>\nFrankie Bagnardi <f.bagnardi@gmail.com>\nFrançois-Xavier Bois <fxbois@gmail.com>\nFred Zhao <fredz@fb.com>\nFreddy Rangel <frederick.rangel@gmail.com>\nFyodor Ivanishchev <cbrwizard@gmail.com>\nG Scott Olson <gscottolson@gmail.com>\nG. Kay Lee <balancetraveller+github@gmail.com>\nGabe Levi <gabelevi@gmail.com>\nGajus Kuizinas <g.kuizinas@anuary.com>\nGareth Nicholson <gareth.nic@gmail.com>\nGarren Smith <garren.smith@gmail.com>\nGavin McQuistin <gavin@kickfiredesign.com>\nGeert Pasteels <geert.pasteels@gmail.com>\nGeert-Jan Brits <gbrits@gmail.com>\nGeorge A Sisco III <george.sisco@gmail.com>\nGeorgii Dolzhykov <thorn.mailbox@gmail.com>\nGilbert <gilbertbgarza@gmail.com>\nGlen Mailer <glenjamin@gmail.com>\nGrant Timmerman <granttimmerman@gmail.com>\nGreg Hurrell <glh@fb.com>\nGreg Perkins <gregrperkins@fb.com>\nGreg Roodt <groodt@gmail.com>\nGregory <g.marcilhacy@gmail.com>\nGuangqiang Dong <gqdong@fb.com>\nGuido Bouman <m@guido.vc>\nHarry Hull <harry.hull1@gmail.com>\nHarry Marr <harry.marr@gmail.com>\nHarry Moreno <morenoh149@gmail.com>\nHarshad Sabne <harshadsabne@users.noreply.github.com>\nHekar Khani <hekark@gmail.com>\nHendrik Swanepoel <hendrik.swanepoel@gmail.com>\nHenrik Nyh <henrik@nyh.se>\nHenry Wong <henryw4k@gmail.com>\nHenry Zhu <hi@henryzoo.com>\nHideo Matsumoto <hideo-m@pekeq.com>\nHou Chia <kchia87@gmail.com>\nHuang-Wei Chang <chang.huangwei.01@gmail.com>\nHugo Agbonon <hugo@agbonon.fr>\nHugo Jobling <me@thisishugo.com>\nHyeock Kwon <doublus@gmail.com>\nHéliton Nordt <hnordt@hnordt.com>\nIan Obermiller <ian@obermillers.com>\nIgnacio Carbajo <icarbajop@gmail.com>\nIgor Scekic <igorscekic2@gmail.com>\nIlia Pavlenkov <dortonway@gmail.com>\nIlya Shuklin <ilya.shuklin@gmail.com>\nIlyá Belsky <gelias.gbelsky@gmail.com>\nIngvar Stepanyan <me@rreverser.com>\nIrae Carvalho <irae@irae.pro.br>\nIsaac Salier-Hellendag <isaac@fb.com>\nIurii Kucherov <yuyokk@gmail.com>\nIvan Kozik <ivan@ludios.org>\nIvan Krechetov <ikr@ikr.su>\nIvan Vergiliev <ivan.vergiliev@gmail.com>\nJ. Andrew Brassington <jabbrass@zoho.com>\nJ. Renée Beach <splendidnoise@gmail.com>\nJD Isaacks <jd@jisaacks.com>\nJJ Weber <jj.weber@gmail.com>\nJW <JW00000@gmail.com>\nJack Zhang <jzhang31191@gmail.com>\nJackie Wung <jacquelinewung@gmail.com>\nJacob Gable <jacob.gable@gmail.com>\nJacob Greenleaf <jake@imgur.com>\nJae Hun Ro <jhr24@duke.edu>\nJaeho Lee <me@jaeholee.org>\nJaime Mingo <j.mingov@3boll.com>\nJake Worth <jakeworth82@gmail.com>\nJakub Malinowski <jakubmal@gmail.com>\nJames <james@mystrata.com>\nJames Brantly <james@jbrantly.com>\nJames Burnett <jtburnett@tribune.com>\nJames Friend <james@jsdf.co>\nJames Ide <ide@fb.com>\nJames Long <longster@gmail.com>\nJames Pearce <jpearce@fb.com>\nJames Seppi <james.seppi@gmail.com>\nJames South <james_south@hotmail.com>\nJames Wen <jrw2175@columbia.edu>\nJamie Wong <jamie.lf.wong@gmail.com>\nJamis Charles <jacharles@paypal.com>\nJamison Dance <jergason@gmail.com>\nJan Hancic <jan.hancic@gmail.com>\nJan Kassens <jan@kassens.net>\nJan Raasch <jan@janraasch.com>\nJared Forsyth <jared@jaredforsyth.com>\nJason <usaman2010us@gmail.com>\nJason Bonta <jbonta@gmail.com>\nJason Ly <jason.ly@gmail.com>\nJason Miller <aidenn0@geocities.com>\nJason Quense <monastic.panic@gmail.com>\nJason Trill <jason@jasontrill.com>\nJason Webster <jason@metalabdesign.com>\nJay Jaeho Lee <jay@spoqa.com>\nJean Lauliac <lauliacj@gmail.com>\nJed Watson <jed.watson@me.com>\nJeff Barczewski <jeff.barczewski@gmail.com>\nJeff Carpenter <gcarpenterv@gmail.com>\nJeff Chan <jefftchan@gmail.com>\nJeff Hicken <jhicken@gmail.com>\nJeff Kolesky <github@kolesky.com>\nJeff Morrison <jeff@anafx.com>\nJeff Welch <whatthejeff@gmail.com>\nJeffrey Lin <lin.jeffrey@gmail.com>\nJeremy Fairbank <elpapapollo@gmail.com>\nJesse Skinner <jesse@thefutureoftheweb.com>\nJignesh Kakadiya <jigneshhk1992@gmail.com>\nJim OBrien <jimobrien930@gmail.com>\nJim Sproch <jsproch@fb.com>\nJimmy Jea <jimjea@gmail.com>\nJing Chen <jingc@fb.com>\nJinwoo Oh <arkist@gmail.com>\nJinxiu Lee <lee.jinxiu@gmail.com>\nJiyeon Seo <zzzeons@gmail.com>\nJody McIntyre <scjody@modernduck.com>\nJoe Critchley <joecritch@gmail.com>\nJoe Stein <joeaarons@gmail.com>\nJoel Auterson <joel.auterson@googlemail.com>\nJohannes Baiter <johannes.baiter@gmail.com>\nJohannes Emerich <johannes@emerich.de>\nJohannes Lumpe <johannes@johanneslumpe.de>\nJohn Heroy <johnheroy@users.noreply.github.com>\nJohn Ryan <tjfryan@fb.com>\nJohn Watson <jwatson@fb.com>\nJohn-David Dalton <john.david.dalton@gmail.com>\nJon Beebe <jon.beebe@daveramsey.com>\nJon Chester <jonchester@fb.com>\nJon Hester <jon.d.hester@gmail.com>\nJon Madison <jon@tfftech.com>\nJon Scott Clark <jonscottclark@gmail.com>\nJon Tewksbury <jontewks@gmail.com>\nJonas Enlund <jonas.enlund@gmail.com>\nJonas Gebhardt <jonas@instagram.com>\nJonathan Hsu <jhiswin@gmail.com>\nJonathan Persson <persson.jonathan@gmail.com>\nJordan Harband <ljharb@gmail.com>\nJordan Walke <jordojw@gmail.com>\nJorrit Schippers <jorrit@ncode.nl>\nJoseph Nudell <joenudell@gmail.com>\nJoseph Savona <joesavona@fb.com>\nJosh Bassett <josh.bassett@gmail.com>\nJosh Duck <josh@fb.com>\nJosh Perez <josh.perez@airbnb.com>\nJosh Yudaken <yud@instagram.com>\nJoshua Evans <joshua.evans@quantified.co>\nJoshua Go <joshuago@gmail.com>\nJoshua Goldberg <jsgoldberg90@gmail.com>\nJoshua Ma <me@joshma.com>\nJoão Valente <filipevalente@gmail.com>\nJuan Serrano <germ13@users.noreply.github.com>\nJulen Ruiz Aizpuru <julenx@gmail.com>\nJulian Viereck <julian.viereck@gmail.com>\nJulien Bordellier <git@julienbordellier.com>\nJulio Lopez <ljuliom@gmail.com>\nJun Wu <quark@lihdd.net>\nJuraj Dudak <jdudak@fb.com>\nJustas Brazauskas <brazauskasjustas@gmail.com>\nJustin Jaffray <justinjaffray@khanacademy.org>\nJustin Robison <jrobison151@gmail.com>\nJustin Woo <moomoowoo@gmail.com>\nKale <krydrogen@gmail.com>\nKamron Batman <kamronbatman@users.noreply.github.com>\nKarl Mikkelsen <karl@kingkarl.com>\nKarpich Dmitry <karpich@gollard.ru>\nKeito Uchiyama <projects@keito.me>\nKen Powers <ken@kenpowers.net>\nKent C. Dodds <kent@doddsfamily.us>\nKevin Cheng <09chengk@gmail.com>\nKevin Coughlin <kevintcoughlin@gmail.com>\nKevin Huang <huang.kev@gmail.com>\nKevin Lau <thekevlau@gmail.com>\nKevin Old <kevin@kevinold.com>\nKevin Robinson <krobinson@twitter.com>\nKewei Jiang <jkewei328@hotmail.com>\nKier Borromeo <seraphipod@gmail.com>\nKimCoding <jeokrang@hanmail.net>\nKirk Steven Hansen <hanski07@kirk-hansens-macbook.local>\nKit Randel <kit@nocturne.net.nz>\nKohei TAKATA <kt.koheitakata@gmail.com>\nKoo Youngmin <youngmin@youngminz.kr>\nKrystian Karczewski <karcz.k@gmail.com>\nKunal Mehta <k.mehta@berkeley.edu>\nKurt Ruppel <me@kurtruppel.com>\nKyle Kelley <rgbkrk@gmail.com>\nKyle Mathews <mathews.kyle@gmail.com>\nLaurence Rowe <l@lrowe.co.uk>\nLaurent Etiemble <laurent.etiemble@monobjc.net>\nLee Byron <lee@leebyron.com>\nLee Jaeyoung <jaeyoung@monodiary.net>\nLei <tendant@gmail.com>\nLeland Richardson <leland.m.richardson@gmail.com>\nLeon Fedotov <LeonFedotov@users.noreply.github.com>\nLeon Yip <lyip1992@users.noreply.github.com>\nLeonardo YongUk Kim <dalinaum@gmail.com>\nLevi Buzolic <levibuzolic@gmail.com>\nLevi McCallum <levi@levimccallum.com>\nLily <qvang.j@gmail.com>\nLogan Allen <loganfynne@gmail.com>\nLovisa Svallingson <lovisasvallingson@gmail.com>\nLudovico Fischer <livrerie@gmail.com>\nLuigy Leon <luichi.19@gmail.com>\nLuke Horvat <lukehorvat@gmail.com>\nMIKAMI Yoshiyuki <yoshuki@saikyoline.jp>\nMaher Beg <maherbeg@gmail.com>\nManas <prometheansacrifice@gmail.com>\nMarcin K. <katzoo@github.mail>\nMarcin Kwiatkowski <marcin.kwiatkowski@hotmail.com>\nMarcin Szczepanski <marcins@gmail.com>\nMariano Desanze <protronm@gmail.com>\nMarjan <marjan.georgiev@gmail.com>\nMark Anderson <undernewmanagement@users.noreply.github.com>\nMark Funk <mfunk86@gmail.com>\nMark Hintz <markohintz@gmail.com>\nMark IJbema <markijbema@gmail.com>\nMark Murphy <murphy.mark@live.ca>\nMark Richardson <echo@fb.com>\nMark Rushakoff <mark@influxdb.com>\nMark Sun <sunmark14@gmail.com>\nMarlon Landaverde <milanlandaverde@gmail.com>\nMarshall Roch <mroch@fb.com>\nMartin Andert <mandert@gmail.com>\nMartin Hujer <mhujer@gmail.com>\nMartin Jul <martin@mjul.com>\nMartin Konicek <mkonicek@fb.com>\nMartin Mihaylov <martomi@users.noreply.github.com>\nMasaki KOBAYASHI <makky.4d6b.3f5@gmail.com>\nMathieu M-Gosselin <mathieumg@gmail.com>\nMathieu Savy <savy.mathieu@gmail.com>\nMatias Singers <mail@matiassingers.com>\nMatsunoki <himkt@klis.tsukuba.ac.jp>\nMatt Brookes <matt@brookes.net>\nMatt Dunn-Rankin <mdunnrankin@gmail.com>\nMatt Harrison <mt.harrison86@gmail.com>\nMatt Huggins <matt.huggins@gmail.com>\nMatt Stow <matt.stow@foxsports.com.au>\nMatt Zabriskie <mzabriskie@gmail.com>\nMatthew Dapena-Tretter <m@tthewwithanm.com>\nMatthew Herbst <mherbst@chegg.com>\nMatthew Hodgson <matthew@matrix.org>\nMatthew Johnston <matthewjohnston4@outlook.com>\nMatthew King <mking@users.noreply.github.com>\nMatthew Looi <looi.matthew@gmail.com>\nMatthew Miner <matthew@matthewminer.com>\nMatthias Le Brun <mlbli@me.com>\nMatti Nelimarkka <matti.nelimarkka@hiit.fi>\nMattijs Kneppers <mattijs@arttech.nl>\nMax F. Albrecht <1@178.is>\nMax Heiber <max.heiber@gmail.com>\nMax Stoiber <contact@mstoiber.com>\nMaxi Ferreira <charca@gmail.com>\nMaxim Abramchuk <MaximAbramchuck@gmail.com>\nMerrick Christensen <merrick.christensen@gmail.com>\nMert Kahyaoğlu <mertkahyaoglu93@gmail.com>\nMichael Chan <mijoch@gmail.com>\nMichael McDermott <michael@mgmcdermott.com>\nMichael Randers-Pehrson <michael.rp@gmail.com>\nMichael Ridgway <mridgway@yahoo-inc.com>\nMichael Warner <MichaelJWarner@hotmail.com>\nMichael Wiencek <mwtuea@gmail.com>\nMichael Ziwisky <mikezx@gmail.com>\nMichal Srb <xixixao@seznam.cz>\nMichelle Todd <himichelletodd@gmail.com>\nMihai Parparita <mihai.parparita@gmail.com>\nMike D Pilsbury <mike.pilsbury@gmail.com>\nMike Groseclose <mike.groseclose@gmail.com>\nMike Nordick <mnordick>\nMikolaj Dadela <mikolaj.dadela@hgv-online.de>\nMiles Johnson <mileswjohnson@gmail.com>\nMinwe LUO <minwe@yunshipei.com>\nMiorel Palii <miorel@fb.com>\nMorhaus <alexandre.kirszenberg@gmail.com>\nMoshe Kolodny <kolodny.github@gmail.com>\nMouad Debbar <mdebbar@fb.com>\nMurad <rogozhnikoff@users.noreply.github.com>\nMurray M. Moss <murray@mmoss.name>\nNadeesha Cabral <nadeesha.cabral@gmail.com>\nNaman Goel <naman34@gmail.com>\nNate Hunzaker <nate.hunzaker@gmail.com>\nNate Lee <nathaniel.jy.lee88@gmail.com>\nNathan Smith <NogsMPLS@users.noreply.github.com>\nNathan White <nw@nwhite.net>\nNee <944316342@qq.com>\nNeri Marschik <marschik_neri@cyberagent.co.jp>\nNguyen Truong Duy <truongduy134@yahoo.com>\nNicholas Bergson-Shilcock <me@nicholasbs.net>\nNicholas Clawson <nickclaw@users.noreply.github.com>\nNick Balestra <nickbalestra@users.noreply.github.com>\nNick Fitzgerald <fitzgen@gmail.com>\nNick Gavalas <njg57@cornell.edu>\nNick Merwin <nick@lemurheavy.com>\nNick Presta <nick@nickpresta.ca>\nNick Raienko <enaqxx@gmail.com>\nNick Thompson <ncthom91@gmail.com>\nNick Williams <WickyNilliams@users.noreply.github.com>\nNiklas Boström <nbostrom@gmail.com>\nNing Xia <ning-github@users.noreply.github.com>\nNiole Nelson <niolenelson@gmail.com>\nOiva Eskola <oiva.eskola@gmail.com>\nOleg <o.yanchinskiy@gmail.com>\nOleksii Markhovskyi <olexiy.markhovsky@gmail.com>\nOliver Zeigermann <oliver.zeigermann@gmail.com>\nOlivier Tassinari <Olivier.tassinari@gmail.com>\nOwen Coutts <owenc@fb.com>\nPablo Lacerda de Miranda <pablolm@yahoo-inc.com>\nPaolo Moretti <moretti@users.noreply.github.com>\nPascal Hartig <passy@twitter.com>\nPatrick <info@telepark.de>\nPatrick Laughlin <patrick@laughl.info>\nPatrick Stapleton <github@gdi2290.com>\nPaul Benigeri <me@benigeri.com>\nPaul Harper <benekastah@gmail.com>\nPaul O’Shannessy <paul@oshannessy.com>\nPaul Seiffert <paul.seiffert@gmail.com>\nPaul Shen <paul@mnml0.com>\nPedro Nauck <pedronauck@gmail.com>\nPete Hunt <floydophone@gmail.com>\nPeter Blazejewicz <peter.blazejewicz@gmail.com>\nPeter Cottle <pcottle@fb.com>\nPeter Jaros <peter.a.jaros@gmail.com>\nPeter Newnham <peter.newnham@appsbroker.com>\nPetri Lehtinen <petri@digip.org>\nPetri Lievonen <plievone@cc.hut.fi>\nPieter Vanderwerff <me@pieter.io>\nPouja Nikray <poujanik@gmail.com>\nPrathamesh Sonpatki <csonpatki@gmail.com>\nPrayag Verma <prayag.verma@gmail.com>\nPreston Parry <ClimbsRocks@users.noreply.github.com>\nRafael <rafael.garcia@clever.com>\nRafal Dittwald <rafal.dittwald@gmail.com>\nRainer Oviir <roviir@gmail.com>\nRajat Sehgal <rajatsehgal1988@gmail.com>\nRajiv Tirumalareddy <rajivtreddy@gmail.com>\nRam Kaniyur <quadrupleslap@users.noreply.github.com>\nRandall Randall <randall@randallsquared.com>\nRay <ray@tomo.im>\nRaymond Ha <raymond@shraymonks.com>\nReed Loden <reed@reedloden.com>\nRemko Tronçon <git@el-tramo.be>\nRichard D. Worth <rdworth@gmail.com>\nRichard Feldman <richard.t.feldman@gmail.com>\nRichard Kho <hello@richardkho.com>\nRichard Littauer <richard.littauer@gmail.com>\nRichard Livesey <Livesey7@hotmail.co.uk>\nRichard Wood <rwoodnz@gmail.com>\nRick Beerendonk <rick@beerendonk.com>\nRick Ford <rickfordrick@gmail.com>\nRiley Tomasek <riley.tomasek@gmail.com>\nRob Arnold <robarnold@cs.cmu.edu>\nRobert Binna <rbinna@gmail.com>\nRobert Knight <robert.knight@mendeley.com>\nRobert Sedovsek <robert.sedovsek@gmail.com>\nRobin Berjon <robin@berjon.com>\nRobin Frischmann <robin@rofrischmann.de>\nRoman Pominov <rpominov+github@gmail.com>\nRoman Vanesyan <roman.vanesyan@gmail.com>\nRuss <russwirtz@gmail.com>\nRyan Seddon <seddon.ryan@gmail.com>\nSahat Yalkabov <sakhat@gmail.com>\nSaif Hakim <saif@benchling.com>\nSaiichi Hashimoto <saiichihashimoto@gmail.com>\nSam Beveridge <sbeveridge@saltstack.com>\nSam Saccone <samccone@gmail.com>\nSam Selikoff <sam.selikoff@gmail.com>\nSamy Al Zahrani <samy@sadeem.net>\nSander Spies <sandermail@gmail.com>\nScott Burch <scott@bulldoginfo.com>\nScott Feeney <scott@oceanbase.org>\nSean Kinsey <oyvind@fb.com>\nSebastian Markbåge <sebastian@calyptus.eu>\nSebastian McKenzie <sebmck@gmail.com>\nSeoh Char <devthewild@gmail.com>\nSercan Eraslan <sercan.eraslan@sahibinden.com>\nSerg <undrdog@yandex.ru>\nSergey Generalov <sergey@genbit.ru>\nSergey Rubanov <chi187@gmail.com>\nSeyi Adebajo <hello@seyinanigans.com>\nShane O'Sullivan <shaneosullivan1@gmail.com>\nShaun Trennery <shaun.trennery@gmail.com>\nShihChi Huang <hhuang@netflix.com>\nShim Won <marocchino@gmail.com>\nShinnosuke Watanabe <snnskwtnb@gmail.com>\nShogun Sea <shogunsea08@gmail.com>\nShota Kubota <kubosho@users.noreply.github.com>\nShripad K <assortmentofsorts@gmail.com>\nSibi <psibi2000@gmail.com>\nSimen Bekkhus <sbekkhus91@gmail.com>\nSimon Højberg <r.hackr@gmail.com>\nSimon Welsh <simon@simon.geek.nz>\nSimone Vittori <hello@simonewebdesign.it>\nSoichiro Kawamura <mail@w-st.com>\nSophia Westwood <sophia@quip.com>\nSota Ohara <ohrst.18@gmail.com>\nSpencer Handley <spencerhandley@gmail.com>\nStefan Dombrowski <sdo451@gmail.com>\nStephen Murphy <smurphy3@apple.com>\nSterling Cobb <sterlingcobb@gmail.com>\nSteve Baker <_steve_@outlook.com>\nSteven Luscher <react@steveluscher.com>\nSteven Vachon <contact@svachon.com>\nStoyan Stefanov <ssttoo@ymail.com>\nSundeep Malladi <sundeep.malladi@gmail.com>\nSunny Juneja <me@sunnyjuneja.com>\nSven Helmberger <fforw@gmx.de>\nSverre Johansen <sverre.johansen@gmail.com>\nSébastien Lorber <lorber.sebastien@gmail.com>\nSławomir Laskowski <laskowski.box@gmail.com>\nTaeho Kim <dittos@gmail.com>\nTay Yang Shun <tay.yang.shun@gmail.com>\nTed Kim <ted@vcnc.co.kr>\nTengfei Guo <terryr3rd@yeah.net>\nTeodor Szente <teodor98sz@gmail.com>\nThomas Aylott <oblivious@subtlegradient.com>\nThomas Boyt <thomas.boyt@venmo.com>\nThomas Broadley <buriedunderbooks@hotmail.com>\nThomas Reggi <socialtr@gmail.com>\nThomas Röggla <t.roggla@cwi.nl>\nThomas Shaddox <thomas@heyzap.com>\nThomas Shafer <thomasjshafer@gmail.com>\nThomasCrvsr <crevoisier.thomas@gmail.com>\nTienchai Wirojsaksaree <tienchai@fb.com>\nTim Routowicz <troutowicz@gmail.com>\nTim Schaub <tschaub@users.noreply.github.com>\nTimothy Yung <yungsters@gmail.com>\nTimur Carpeev <timuric@users.noreply.github.com>\nTobias Reiss <tag+github@basecode.de>\nTom Duncalf <tom@tomduncalf.com>\nTom Haggie <thaggie@gmail.com>\nTom Hauburger <thauburger@gmail.com>\nTom MacWright <tom@macwright.org>\nTom Occhino <tomocchino@gmail.com>\nTomasz Kołodziejski <tkolodziejski@gmail.com>\nTomoya Suzuki <tmysz.dev@gmail.com>\nTony Spiro <tspiro@tonyspiro.com>\nToru Kobayashi <koba0004@gmail.com>\nTrinh Hoang Nhu <trinhhoangnhu@gmail.com>\nTsung Hung <thung@me.com>\nTyler Brock <tyler.brock@gmail.com>\nUstin Zarubin <ustin.zarubin@campusbellhops.com>\nVadim Chernysh <chernysh.vadim@gmail.com>\nVarun Rau <varunrau@gmail.com>\nVasiliy Loginevskiy <Yeti.or@gmail.com>\nVictor Alvarez <v.alvarez312@gmail.com>\nVictor Homyakov <vkhomyackov@gmail.com>\nVictor Koenders <victor.koenders@gmail.com>\nVille Immonen <ville.immonen@iki.fi>\nVincent Riemer <vincentriemer@gmail.com>\nVincent Siao <vincent@asana.com>\nVipul A M <vipulnsward@gmail.com>\nVitaly Kramskikh <vkramskikh@gmail.com>\nVitor Balocco <vitorbal@gmail.com>\nVjeux <vjeuxx@gmail.com>\nVolkan Unsal <spocksplanet@gmail.com>\nWander Wang <wander.wang@ismole.com>\nWayne Larsen <wayne@larsen.st>\nWickyNilliams <WickyNilliams@MBA>\nWincent Colaiuta <win@wincent.com>\nWout Mertens <Wout.Mertens@gmail.com>\nXavier Morel <xmo-odoo@users.noreply.github.com>\nXuefengWu <benewu@gmail.com>\nYakov Dalinchuk <murashki@users.noreply.github.com>\nYasar icli <hello@yasaricli.com>\nYouBao Nong <noyobo@gmail.com>\nYuichi Hagio <yhagio87@gmail.com>\nYuriy Dybskiy <yuriy@dybskiy.com>\nYutaka Nakajima <nakazye@gmail.com>\nYuval Dekel <thedekel@fb.com>\nZach Bruggeman <mail@bruggie.com>\nZach Ramaekers <zramaekers@gmail.com>\nZacharias <zachasme@users.noreply.github.com>\nZeke Sikelianos <zeke@sikelianos.com>\nZhangjd <zhang.jd@qq.com>\nadraeth <jerzy.mirecki@gmail.com>\narush <arush@ilovebrands.net>\nbrafdlog <brafdlog@gmail.com>\nchen <kikyous@163.com>\nclariroid <clarinette.uranus@gmail.com>\nclaudiopro <claudio.procida@gmail.com>\ncutbko <kutsenko.eugene@hotmail.com>\ndavidxi <davidgraycn@gmail.com>\ndongmeng.ldm <dongmeng.ldm@alibaba-inc.com>\niamchenxin <iamchenxin@gmail.com>\niamdoron <doronpagot@gmail.com>\niawia002 <z2d@jifangcheng.com>\nimagentleman <imagentlemail@gmail.com>\nkoh-taka <koh-taka@users.noreply.github.com>\nkohashi85 <hako584@gmail.com>\nlaiso <laiso@lai.so>\nleeyoungalias <leeyoungalias@qq.com>\nli.li <li.li@ele.me>\nmaxprafferty <maxprafferty@gmail.com>\nrgarifullin <ringarifullin@gmail.com>\nsongawee <dennis@songawee.com>\nsugarshin <shinsugar@gmail.com>\nwali-s <ahmad3y2k@hotmail.com>\nyiminghe <yiminghe@gmail.com>\nyoumoo <youmoolee@gmail.com>\nzhangjg <jinguozhang@qq.com>\nzwhitchcox <zwhitchcox@gmail.com>\nÁrni Hermann Reynisson <arnihr@gmail.com>\n元彦 <yuanyan@users.noreply.github.com>\n凌恒 <jiakun.dujk@alibaba-inc.com>\n张敏 <cookfront@gmail.com>\n"
  },
  {
    "path": "docs/articles/intro_reactR_files/react-16.7.0/LICENSE.txt",
    "content": "MIT License\n\nCopyright (c) 2013-present, Facebook, Inc.\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"
  },
  {
    "path": "docs/articles/intro_reactR_files/react-16.8.1/AUTHORS",
    "content": "39 <8398a7@gmail.com>\nAaron Franks <aaron.franks@gmail.com>\nAaron Gelter <aaron.gelter@harman.com>\nAdam Bloomston <adam@glitterfram.es>\nAdam Krebs <amk528@cs.nyu.edu>\nAdam Mark <adammark75@gmail.com>\nAdam Solove <asolove@gmail.com>\nAdam Timberlake <adam.timberlake@gmail.com>\nAdam Zapletal <adamzap@gmail.com>\nAhmad Wali Sidiqi <wali-s@users.noreply.github.com>\nAlan Plum <me@pluma.io>\nAlan Souza <alansouzati@gmail.com>\nAlan deLevie <adelevie@gmail.com>\nAlastair Hole <afhole@gmail.com>\nAlex <ultrafez@users.noreply.github.com>\nAlex Boatwright <drdelambre@gmail.com>\nAlex Boyd <alex@opengroove.org>\nAlex Dajani <xelad1@gmail.com>\nAlex Lopatin <alex@alexlopatin.com>\nAlex Mykyta <dancingwithcows@gmail.com>\nAlex Pien <alexpien@gmail.com>\nAlex Smith <iqwz@ya.ru>\nAlex Zelenskiy <azelenskiy@fb.com>\nAlexander Shtuchkin <ashtuchkin@gmail.com>\nAlexander Solovyov <alexander@solovyov.net>\nAlexander Tseung <alextsg@gmail.com>\nAlexandre Gaudencio <shahor@shahor.fr>\nAlexey Raspopov <avenger7x13@gmail.com>\nAlexey Shamrin <shamrin@gmail.com>\nAli Ukani <ali.ukani@gmail.com>\nAndre Z Sanchez <andrezacsanchez@gmail.com>\nAndreas Savvides <asavvides@twitter.com>\nAndreas Svensson <andreas@syranide.com>\nAndres Kalle <mjomble@gmail.com>\nAndres Suarez <zertosh@gmail.com>\nAndrew Clark <acdlite@me.com>\nAndrew Cobby <cobbweb@users.noreply.github.com>\nAndrew Davey <andrew@equin.co.uk>\nAndrew Henderson <andrew.m.henderson@gmail.com>\nAndrew Kulakov <avk@8xx8.ru>\nAndrew Rasmussen <andras@fb.com>\nAndrew Sokolov <asokolov@atlassian.com>\nAndrew Zich <azich@fb.com>\nAndrey Popp <8mayday@gmail.com>\nAnthony van der Hoorn <anthony.vanderhoorn@gmail.com>\nAnto Aravinth <anto.aravinth.cse@gmail.com>\nAntonio Ruberto <anto.ruberto@gmail.com>\nAntti Ahti <antti.ahti@gmail.com>\nAnuj Tomar <ankuto@gmail.com>\nAoDev <AoDev@users.noreply.github.com>\nApril Arcus <april.arcus@gmail.com>\nAreeb Malik <areeb.malik91@gmail.com>\nAria Buckles <aria@khanacademy.org>\nAria Stewart <aredridel@dinhe.net>\nArian Faurtosh <arian@icloud.com>\nArtem Nezvigin <artem@artnez.com>\nAustin Wright <aaa@bzfx.net>\nAyman Osman <aymano.osman@gmail.com>\nBaraa Hamodi <bhamodi@uwaterloo.ca>\nBartosz Kaszubowski <gosimek@gmail.com>\nBasarat Ali Syed <basaratali@gmail.com>\nBattaile Fauber <battaile@gmail.com>\nBeau Smith <beau@beausmith.com>\nBen Alpert <ben@benalpert.com>\nBen Anderson <banderson@constantcontact.com>\nBen Brooks <ben@benbrooks.net>\nBen Foxall <benfoxall@gmail.com>\nBen Halpern <bendhalpern@gmail.com>\nBen Jaffe <jaffe.ben@gmail.com>\nBen Moss <ben@mossity.com>\nBen Newman <bn@cs.stanford.edu>\nBen Ripkens <bripkens.dev@gmail.com>\nBenjamin Keen <ben.keen@gmail.com>\nBenjamin Leiken <benleiken@gmail.com>\nBenjamin Woodruff <github@benjam.info>\nBenjy Cui <benjytrys@gmail.com>\nBill Blanchard <bill@plumbdev.com>\nBill Fisher <fisherwebdev@gmail.com>\nBlaine Hatab <jbhatab@gmail.com>\nBlaine Kasten <blainekasten@gmail.com>\nBob Eagan <bob@synapsestudios.com>\nBob Ralian <bob.ralian@gmail.com>\nBob Renwick <bob.renwick@gmail.com>\nBobby <puppybytes@gmail.com>\nBojan Mihelac <bmihelac@mihelac.org>\nBradley Spaulding <brad.spaulding@gmail.com>\nBrandon Bloom <brandon@brandonbloom.name>\nBrandon Tilley <brandon@brandontilley.com>\nBrenard Cubacub <bcbcb@users.noreply.github.com>\nBrian Cooke <bri@bricooke.com>\nBrian Holt <btholt@gmail.com>\nBrian Hsu <brianhsu@Brians-MacBook-Pro.local>\nBrian Kim <briankimpossible@gmail.com>\nBrian Kung <brian@callmekung.com>\nBrian Reavis <brian@thirdroute.com>\nBrian Rue <brian@rollbar.com>\nBruno Škvorc <bruno@skvorc.me>\nCam Song <neosoyn@gmail.com>\nCam Spiers <camspiers@gmail.com>\nCameron Chamberlain <git@camjc.com>\nCameron Matheson <cameron@instructure.com>\nCarter Chung <carterchung@users.noreply.github.com>\nCassus Adam Banko <banko.adam@gmail.com>\nCat Chen <catchen@fb.com>\nCedric Sohrauer <cedric.sohrauer@infopark.de>\nCesar William Alvarenga <cesarwbr@gmail.com>\nChangsoon Bok <winmain@gmail.com>\nCharles Marsh <charlie@khanacademy.org>\nChase Adams <realchaseadams@gmail.com>\nCheng Lou <chenglou92@gmail.com>\nChitharanjan Das <das.chitharanjan@gmail.com>\nChris Bolin <bolin.chris@gmail.com>\nChris Grovers <chrisgrovers@users.noreply.github.com>\nChris Ha <chriskevinha@gmail.com>\nChris Rebert <github@rebertia.com>\nChris Sciolla <csciolla1@gmail.com>\nChristian Alfoni <christianalfoni@gmail.com>\nChristian Oliff <christianoliff@yahoo.com>\nChristian Roman <chroman16@gmail.com>\nChristoffer Sawicki <christoffer.sawicki@gmail.com>\nChristoph Pojer <christoph.pojer@gmail.com>\nChristopher Monsanto <chris@monsan.to>\nClay Allsopp <clay.allsopp@gmail.com>\nConnor McSheffrey <c@conr.me>\nConor Hastings <hastings.conorm@gmail.com>\nCory House <housecor@gmail.com>\nCotton Hou <himcotton@gmail.com>\nCraig Akimoto <strawbrary@users.noreply.github.com>\nCristovao Verstraeten <cristovao@apleasantview.com>\nDamien Pellier <dpellier@leadformance.com>\nDan Abramov <dan.abramov@gmail.com>\nDan Fox <iamdanfox@gmail.com>\nDan Schafer <dschafer@fb.com>\nDaniel Carlsson <daniel.carlsson.1987@gmail.com>\nDaniel Cousens <dcousens@users.noreply.github.com>\nDaniel Friesen <daniel@nadir-seen-fire.com>\nDaniel Gasienica <daniel@gasienica.ch>\nDaniel Hejl <daniel.hejl@hotmail.com>\nDaniel Hejl <hejldaniel@gmail.com>\nDaniel Lo Nigro <daniel@dan.cx>\nDaniel Mané <danmane@gmail.com>\nDaniel Miladinov <dmiladinov@wingspan.com>\nDaniel Rodgers-Pryor <djrodgerspryor@gmail.com>\nDaniel Schonfeld <daniel@schonfeld.org>\nDanny Ben-David <dannybd@fb.com>\nDarcy <smadad@me.com>\nDaryl Lau <daryl@weak.io>\nDarío Javier Cravero <dario@uxtemple.com>\nDave Galbraith <dave@jut.io>\nDavid Baker <djbaker2@gmail.com>\nDavid Ed Mellum <david@edmellum.com>\nDavid Goldberg <gberg1@users.noreply.github.com>\nDavid Granado <davidjgranado@gmail.com>\nDavid Greenspan <dgreenspan@alum.mit.edu>\nDavid Hellsing <david@aino.se>\nDavid Hu <davidhu91@gmail.com>\nDavid Khourshid <davidkpiano@gmail.com>\nDavid Mininger <dmininger@gmail.com>\nDavid Neubauer <davidneub@gmail.com>\nDavid Percy <davetp425@gmail.com>\nDean Shi <dnshi@users.noreply.github.com>\nDenis Sokolov <denis@sokolov.cc>\nDeniss Jacenko <deniss.jacenko+github@gmail.com>\nDennis Johnson <djohnson@rallydev.com>\nDevon Blandin <dblandin@gmail.com>\nDevon Harvey <devonharvey@gmail.com>\nDmitrii Abramov <dmitrii@rheia.us>\nDmitriy Rozhkov <dmitriy.rozhkov@xing.com>\nDmitry Blues <dmitri.blyus@gmail.com>\nDmitry Mazuro <dmitry.mazuro@icloud.com>\nDomenico Matteo <matteo.domenico@gmail.com>\nDon Abrams <donabrams@gmail.com>\nDongsheng Liu <bellanchor@gmail.com>\nDustan Kasten <dustan.kasten@gmail.com>\nDustin Getz <dgetz@wingspan.com>\nDylan Harrington <dylanharrington@gmail.com>\nEduardo Garcia <emumaniacx@gmail.com>\nEdvin Erikson <edvin@rocketblast.com>\nElaine Fang <elainefang@Elaines-MacBook-Pro.local>\nEnguerran <engcolson@gmail.com>\nEric Clemmons <eric@smarterspam.com>\nEric Eastwood <contact@ericeastwood.com>\nEric Florenzano <floguy@gmail.com>\nEric O'Connell <eric.oconnell@idealist.org>\nEric Schoffstall <contra@wearefractal.com>\nErik Harper <eharper@mixpo.com>\nEspen Hovlandsdal <rexxars@gmail.com>\nEvan Coonrod <evan@paloalto.com>\nEvan Vosberg <evanvosberg@urban.to>\nFabio M. Costa <fabiomcosta@gmail.com>\nFederico Rampazzo <frampone@gmail.com>\nFelipe Oliveira Carvalho <felipekde@gmail.com>\nFelix Gnass <fgnass@gmail.com>\nFelix Kling <felix.kling@gmx.net>\nFernando Correia <fernando@servicero.com>\nFrankie Bagnardi <f.bagnardi@gmail.com>\nFrançois-Xavier Bois <fxbois@gmail.com>\nFred Zhao <fredz@fb.com>\nFreddy Rangel <frederick.rangel@gmail.com>\nFyodor Ivanishchev <cbrwizard@gmail.com>\nG Scott Olson <gscottolson@gmail.com>\nG. Kay Lee <balancetraveller+github@gmail.com>\nGabe Levi <gabelevi@gmail.com>\nGajus Kuizinas <g.kuizinas@anuary.com>\nGareth Nicholson <gareth.nic@gmail.com>\nGarren Smith <garren.smith@gmail.com>\nGavin McQuistin <gavin@kickfiredesign.com>\nGeert Pasteels <geert.pasteels@gmail.com>\nGeert-Jan Brits <gbrits@gmail.com>\nGeorge A Sisco III <george.sisco@gmail.com>\nGeorgii Dolzhykov <thorn.mailbox@gmail.com>\nGilbert <gilbertbgarza@gmail.com>\nGlen Mailer <glenjamin@gmail.com>\nGrant Timmerman <granttimmerman@gmail.com>\nGreg Hurrell <glh@fb.com>\nGreg Perkins <gregrperkins@fb.com>\nGreg Roodt <groodt@gmail.com>\nGregory <g.marcilhacy@gmail.com>\nGuangqiang Dong <gqdong@fb.com>\nGuido Bouman <m@guido.vc>\nHarry Hull <harry.hull1@gmail.com>\nHarry Marr <harry.marr@gmail.com>\nHarry Moreno <morenoh149@gmail.com>\nHarshad Sabne <harshadsabne@users.noreply.github.com>\nHekar Khani <hekark@gmail.com>\nHendrik Swanepoel <hendrik.swanepoel@gmail.com>\nHenrik Nyh <henrik@nyh.se>\nHenry Wong <henryw4k@gmail.com>\nHenry Zhu <hi@henryzoo.com>\nHideo Matsumoto <hideo-m@pekeq.com>\nHou Chia <kchia87@gmail.com>\nHuang-Wei Chang <chang.huangwei.01@gmail.com>\nHugo Agbonon <hugo@agbonon.fr>\nHugo Jobling <me@thisishugo.com>\nHyeock Kwon <doublus@gmail.com>\nHéliton Nordt <hnordt@hnordt.com>\nIan Obermiller <ian@obermillers.com>\nIgnacio Carbajo <icarbajop@gmail.com>\nIgor Scekic <igorscekic2@gmail.com>\nIlia Pavlenkov <dortonway@gmail.com>\nIlya Shuklin <ilya.shuklin@gmail.com>\nIlyá Belsky <gelias.gbelsky@gmail.com>\nIngvar Stepanyan <me@rreverser.com>\nIrae Carvalho <irae@irae.pro.br>\nIsaac Salier-Hellendag <isaac@fb.com>\nIurii Kucherov <yuyokk@gmail.com>\nIvan Kozik <ivan@ludios.org>\nIvan Krechetov <ikr@ikr.su>\nIvan Vergiliev <ivan.vergiliev@gmail.com>\nJ. Andrew Brassington <jabbrass@zoho.com>\nJ. Renée Beach <splendidnoise@gmail.com>\nJD Isaacks <jd@jisaacks.com>\nJJ Weber <jj.weber@gmail.com>\nJW <JW00000@gmail.com>\nJack Zhang <jzhang31191@gmail.com>\nJackie Wung <jacquelinewung@gmail.com>\nJacob Gable <jacob.gable@gmail.com>\nJacob Greenleaf <jake@imgur.com>\nJae Hun Ro <jhr24@duke.edu>\nJaeho Lee <me@jaeholee.org>\nJaime Mingo <j.mingov@3boll.com>\nJake Worth <jakeworth82@gmail.com>\nJakub Malinowski <jakubmal@gmail.com>\nJames <james@mystrata.com>\nJames Brantly <james@jbrantly.com>\nJames Burnett <jtburnett@tribune.com>\nJames Friend <james@jsdf.co>\nJames Ide <ide@fb.com>\nJames Long <longster@gmail.com>\nJames Pearce <jpearce@fb.com>\nJames Seppi <james.seppi@gmail.com>\nJames South <james_south@hotmail.com>\nJames Wen <jrw2175@columbia.edu>\nJamie Wong <jamie.lf.wong@gmail.com>\nJamis Charles <jacharles@paypal.com>\nJamison Dance <jergason@gmail.com>\nJan Hancic <jan.hancic@gmail.com>\nJan Kassens <jan@kassens.net>\nJan Raasch <jan@janraasch.com>\nJared Forsyth <jared@jaredforsyth.com>\nJason <usaman2010us@gmail.com>\nJason Bonta <jbonta@gmail.com>\nJason Ly <jason.ly@gmail.com>\nJason Miller <aidenn0@geocities.com>\nJason Quense <monastic.panic@gmail.com>\nJason Trill <jason@jasontrill.com>\nJason Webster <jason@metalabdesign.com>\nJay Jaeho Lee <jay@spoqa.com>\nJean Lauliac <lauliacj@gmail.com>\nJed Watson <jed.watson@me.com>\nJeff Barczewski <jeff.barczewski@gmail.com>\nJeff Carpenter <gcarpenterv@gmail.com>\nJeff Chan <jefftchan@gmail.com>\nJeff Hicken <jhicken@gmail.com>\nJeff Kolesky <github@kolesky.com>\nJeff Morrison <jeff@anafx.com>\nJeff Welch <whatthejeff@gmail.com>\nJeffrey Lin <lin.jeffrey@gmail.com>\nJeremy Fairbank <elpapapollo@gmail.com>\nJesse Skinner <jesse@thefutureoftheweb.com>\nJignesh Kakadiya <jigneshhk1992@gmail.com>\nJim OBrien <jimobrien930@gmail.com>\nJim Sproch <jsproch@fb.com>\nJimmy Jea <jimjea@gmail.com>\nJing Chen <jingc@fb.com>\nJinwoo Oh <arkist@gmail.com>\nJinxiu Lee <lee.jinxiu@gmail.com>\nJiyeon Seo <zzzeons@gmail.com>\nJody McIntyre <scjody@modernduck.com>\nJoe Critchley <joecritch@gmail.com>\nJoe Stein <joeaarons@gmail.com>\nJoel Auterson <joel.auterson@googlemail.com>\nJohannes Baiter <johannes.baiter@gmail.com>\nJohannes Emerich <johannes@emerich.de>\nJohannes Lumpe <johannes@johanneslumpe.de>\nJohn Heroy <johnheroy@users.noreply.github.com>\nJohn Ryan <tjfryan@fb.com>\nJohn Watson <jwatson@fb.com>\nJohn-David Dalton <john.david.dalton@gmail.com>\nJon Beebe <jon.beebe@daveramsey.com>\nJon Chester <jonchester@fb.com>\nJon Hester <jon.d.hester@gmail.com>\nJon Madison <jon@tfftech.com>\nJon Scott Clark <jonscottclark@gmail.com>\nJon Tewksbury <jontewks@gmail.com>\nJonas Enlund <jonas.enlund@gmail.com>\nJonas Gebhardt <jonas@instagram.com>\nJonathan Hsu <jhiswin@gmail.com>\nJonathan Persson <persson.jonathan@gmail.com>\nJordan Harband <ljharb@gmail.com>\nJordan Walke <jordojw@gmail.com>\nJorrit Schippers <jorrit@ncode.nl>\nJoseph Nudell <joenudell@gmail.com>\nJoseph Savona <joesavona@fb.com>\nJosh Bassett <josh.bassett@gmail.com>\nJosh Duck <josh@fb.com>\nJosh Perez <josh.perez@airbnb.com>\nJosh Yudaken <yud@instagram.com>\nJoshua Evans <joshua.evans@quantified.co>\nJoshua Go <joshuago@gmail.com>\nJoshua Goldberg <jsgoldberg90@gmail.com>\nJoshua Ma <me@joshma.com>\nJoão Valente <filipevalente@gmail.com>\nJuan Serrano <germ13@users.noreply.github.com>\nJulen Ruiz Aizpuru <julenx@gmail.com>\nJulian Viereck <julian.viereck@gmail.com>\nJulien Bordellier <git@julienbordellier.com>\nJulio Lopez <ljuliom@gmail.com>\nJun Wu <quark@lihdd.net>\nJuraj Dudak <jdudak@fb.com>\nJustas Brazauskas <brazauskasjustas@gmail.com>\nJustin Jaffray <justinjaffray@khanacademy.org>\nJustin Robison <jrobison151@gmail.com>\nJustin Woo <moomoowoo@gmail.com>\nKale <krydrogen@gmail.com>\nKamron Batman <kamronbatman@users.noreply.github.com>\nKarl Mikkelsen <karl@kingkarl.com>\nKarpich Dmitry <karpich@gollard.ru>\nKeito Uchiyama <projects@keito.me>\nKen Powers <ken@kenpowers.net>\nKent C. Dodds <kent@doddsfamily.us>\nKevin Cheng <09chengk@gmail.com>\nKevin Coughlin <kevintcoughlin@gmail.com>\nKevin Huang <huang.kev@gmail.com>\nKevin Lau <thekevlau@gmail.com>\nKevin Old <kevin@kevinold.com>\nKevin Robinson <krobinson@twitter.com>\nKewei Jiang <jkewei328@hotmail.com>\nKier Borromeo <seraphipod@gmail.com>\nKimCoding <jeokrang@hanmail.net>\nKirk Steven Hansen <hanski07@kirk-hansens-macbook.local>\nKit Randel <kit@nocturne.net.nz>\nKohei TAKATA <kt.koheitakata@gmail.com>\nKoo Youngmin <youngmin@youngminz.kr>\nKrystian Karczewski <karcz.k@gmail.com>\nKunal Mehta <k.mehta@berkeley.edu>\nKurt Ruppel <me@kurtruppel.com>\nKyle Kelley <rgbkrk@gmail.com>\nKyle Mathews <mathews.kyle@gmail.com>\nLaurence Rowe <l@lrowe.co.uk>\nLaurent Etiemble <laurent.etiemble@monobjc.net>\nLee Byron <lee@leebyron.com>\nLee Jaeyoung <jaeyoung@monodiary.net>\nLei <tendant@gmail.com>\nLeland Richardson <leland.m.richardson@gmail.com>\nLeon Fedotov <LeonFedotov@users.noreply.github.com>\nLeon Yip <lyip1992@users.noreply.github.com>\nLeonardo YongUk Kim <dalinaum@gmail.com>\nLevi Buzolic <levibuzolic@gmail.com>\nLevi McCallum <levi@levimccallum.com>\nLily <qvang.j@gmail.com>\nLogan Allen <loganfynne@gmail.com>\nLovisa Svallingson <lovisasvallingson@gmail.com>\nLudovico Fischer <livrerie@gmail.com>\nLuigy Leon <luichi.19@gmail.com>\nLuke Horvat <lukehorvat@gmail.com>\nMIKAMI Yoshiyuki <yoshuki@saikyoline.jp>\nMaher Beg <maherbeg@gmail.com>\nManas <prometheansacrifice@gmail.com>\nMarcin K. <katzoo@github.mail>\nMarcin Kwiatkowski <marcin.kwiatkowski@hotmail.com>\nMarcin Szczepanski <marcins@gmail.com>\nMariano Desanze <protronm@gmail.com>\nMarjan <marjan.georgiev@gmail.com>\nMark Anderson <undernewmanagement@users.noreply.github.com>\nMark Funk <mfunk86@gmail.com>\nMark Hintz <markohintz@gmail.com>\nMark IJbema <markijbema@gmail.com>\nMark Murphy <murphy.mark@live.ca>\nMark Richardson <echo@fb.com>\nMark Rushakoff <mark@influxdb.com>\nMark Sun <sunmark14@gmail.com>\nMarlon Landaverde <milanlandaverde@gmail.com>\nMarshall Roch <mroch@fb.com>\nMartin Andert <mandert@gmail.com>\nMartin Hujer <mhujer@gmail.com>\nMartin Jul <martin@mjul.com>\nMartin Konicek <mkonicek@fb.com>\nMartin Mihaylov <martomi@users.noreply.github.com>\nMasaki KOBAYASHI <makky.4d6b.3f5@gmail.com>\nMathieu M-Gosselin <mathieumg@gmail.com>\nMathieu Savy <savy.mathieu@gmail.com>\nMatias Singers <mail@matiassingers.com>\nMatsunoki <himkt@klis.tsukuba.ac.jp>\nMatt Brookes <matt@brookes.net>\nMatt Dunn-Rankin <mdunnrankin@gmail.com>\nMatt Harrison <mt.harrison86@gmail.com>\nMatt Huggins <matt.huggins@gmail.com>\nMatt Stow <matt.stow@foxsports.com.au>\nMatt Zabriskie <mzabriskie@gmail.com>\nMatthew Dapena-Tretter <m@tthewwithanm.com>\nMatthew Herbst <mherbst@chegg.com>\nMatthew Hodgson <matthew@matrix.org>\nMatthew Johnston <matthewjohnston4@outlook.com>\nMatthew King <mking@users.noreply.github.com>\nMatthew Looi <looi.matthew@gmail.com>\nMatthew Miner <matthew@matthewminer.com>\nMatthias Le Brun <mlbli@me.com>\nMatti Nelimarkka <matti.nelimarkka@hiit.fi>\nMattijs Kneppers <mattijs@arttech.nl>\nMax F. Albrecht <1@178.is>\nMax Heiber <max.heiber@gmail.com>\nMax Stoiber <contact@mstoiber.com>\nMaxi Ferreira <charca@gmail.com>\nMaxim Abramchuk <MaximAbramchuck@gmail.com>\nMerrick Christensen <merrick.christensen@gmail.com>\nMert Kahyaoğlu <mertkahyaoglu93@gmail.com>\nMichael Chan <mijoch@gmail.com>\nMichael McDermott <michael@mgmcdermott.com>\nMichael Randers-Pehrson <michael.rp@gmail.com>\nMichael Ridgway <mridgway@yahoo-inc.com>\nMichael Warner <MichaelJWarner@hotmail.com>\nMichael Wiencek <mwtuea@gmail.com>\nMichael Ziwisky <mikezx@gmail.com>\nMichal Srb <xixixao@seznam.cz>\nMichelle Todd <himichelletodd@gmail.com>\nMihai Parparita <mihai.parparita@gmail.com>\nMike D Pilsbury <mike.pilsbury@gmail.com>\nMike Groseclose <mike.groseclose@gmail.com>\nMike Nordick <mnordick>\nMikolaj Dadela <mikolaj.dadela@hgv-online.de>\nMiles Johnson <mileswjohnson@gmail.com>\nMinwe LUO <minwe@yunshipei.com>\nMiorel Palii <miorel@fb.com>\nMorhaus <alexandre.kirszenberg@gmail.com>\nMoshe Kolodny <kolodny.github@gmail.com>\nMouad Debbar <mdebbar@fb.com>\nMurad <rogozhnikoff@users.noreply.github.com>\nMurray M. Moss <murray@mmoss.name>\nNadeesha Cabral <nadeesha.cabral@gmail.com>\nNaman Goel <naman34@gmail.com>\nNate Hunzaker <nate.hunzaker@gmail.com>\nNate Lee <nathaniel.jy.lee88@gmail.com>\nNathan Smith <NogsMPLS@users.noreply.github.com>\nNathan White <nw@nwhite.net>\nNee <944316342@qq.com>\nNeri Marschik <marschik_neri@cyberagent.co.jp>\nNguyen Truong Duy <truongduy134@yahoo.com>\nNicholas Bergson-Shilcock <me@nicholasbs.net>\nNicholas Clawson <nickclaw@users.noreply.github.com>\nNick Balestra <nickbalestra@users.noreply.github.com>\nNick Fitzgerald <fitzgen@gmail.com>\nNick Gavalas <njg57@cornell.edu>\nNick Merwin <nick@lemurheavy.com>\nNick Presta <nick@nickpresta.ca>\nNick Raienko <enaqxx@gmail.com>\nNick Thompson <ncthom91@gmail.com>\nNick Williams <WickyNilliams@users.noreply.github.com>\nNiklas Boström <nbostrom@gmail.com>\nNing Xia <ning-github@users.noreply.github.com>\nNiole Nelson <niolenelson@gmail.com>\nOiva Eskola <oiva.eskola@gmail.com>\nOleg <o.yanchinskiy@gmail.com>\nOleksii Markhovskyi <olexiy.markhovsky@gmail.com>\nOliver Zeigermann <oliver.zeigermann@gmail.com>\nOlivier Tassinari <Olivier.tassinari@gmail.com>\nOwen Coutts <owenc@fb.com>\nPablo Lacerda de Miranda <pablolm@yahoo-inc.com>\nPaolo Moretti <moretti@users.noreply.github.com>\nPascal Hartig <passy@twitter.com>\nPatrick <info@telepark.de>\nPatrick Laughlin <patrick@laughl.info>\nPatrick Stapleton <github@gdi2290.com>\nPaul Benigeri <me@benigeri.com>\nPaul Harper <benekastah@gmail.com>\nPaul O’Shannessy <paul@oshannessy.com>\nPaul Seiffert <paul.seiffert@gmail.com>\nPaul Shen <paul@mnml0.com>\nPedro Nauck <pedronauck@gmail.com>\nPete Hunt <floydophone@gmail.com>\nPeter Blazejewicz <peter.blazejewicz@gmail.com>\nPeter Cottle <pcottle@fb.com>\nPeter Jaros <peter.a.jaros@gmail.com>\nPeter Newnham <peter.newnham@appsbroker.com>\nPetri Lehtinen <petri@digip.org>\nPetri Lievonen <plievone@cc.hut.fi>\nPieter Vanderwerff <me@pieter.io>\nPouja Nikray <poujanik@gmail.com>\nPrathamesh Sonpatki <csonpatki@gmail.com>\nPrayag Verma <prayag.verma@gmail.com>\nPreston Parry <ClimbsRocks@users.noreply.github.com>\nRafael <rafael.garcia@clever.com>\nRafal Dittwald <rafal.dittwald@gmail.com>\nRainer Oviir <roviir@gmail.com>\nRajat Sehgal <rajatsehgal1988@gmail.com>\nRajiv Tirumalareddy <rajivtreddy@gmail.com>\nRam Kaniyur <quadrupleslap@users.noreply.github.com>\nRandall Randall <randall@randallsquared.com>\nRay <ray@tomo.im>\nRaymond Ha <raymond@shraymonks.com>\nReed Loden <reed@reedloden.com>\nRemko Tronçon <git@el-tramo.be>\nRichard D. Worth <rdworth@gmail.com>\nRichard Feldman <richard.t.feldman@gmail.com>\nRichard Kho <hello@richardkho.com>\nRichard Littauer <richard.littauer@gmail.com>\nRichard Livesey <Livesey7@hotmail.co.uk>\nRichard Wood <rwoodnz@gmail.com>\nRick Beerendonk <rick@beerendonk.com>\nRick Ford <rickfordrick@gmail.com>\nRiley Tomasek <riley.tomasek@gmail.com>\nRob Arnold <robarnold@cs.cmu.edu>\nRobert Binna <rbinna@gmail.com>\nRobert Knight <robert.knight@mendeley.com>\nRobert Sedovsek <robert.sedovsek@gmail.com>\nRobin Berjon <robin@berjon.com>\nRobin Frischmann <robin@rofrischmann.de>\nRoman Pominov <rpominov+github@gmail.com>\nRoman Vanesyan <roman.vanesyan@gmail.com>\nRuss <russwirtz@gmail.com>\nRyan Seddon <seddon.ryan@gmail.com>\nSahat Yalkabov <sakhat@gmail.com>\nSaif Hakim <saif@benchling.com>\nSaiichi Hashimoto <saiichihashimoto@gmail.com>\nSam Beveridge <sbeveridge@saltstack.com>\nSam Saccone <samccone@gmail.com>\nSam Selikoff <sam.selikoff@gmail.com>\nSamy Al Zahrani <samy@sadeem.net>\nSander Spies <sandermail@gmail.com>\nScott Burch <scott@bulldoginfo.com>\nScott Feeney <scott@oceanbase.org>\nSean Kinsey <oyvind@fb.com>\nSebastian Markbåge <sebastian@calyptus.eu>\nSebastian McKenzie <sebmck@gmail.com>\nSeoh Char <devthewild@gmail.com>\nSercan Eraslan <sercan.eraslan@sahibinden.com>\nSerg <undrdog@yandex.ru>\nSergey Generalov <sergey@genbit.ru>\nSergey Rubanov <chi187@gmail.com>\nSeyi Adebajo <hello@seyinanigans.com>\nShane O'Sullivan <shaneosullivan1@gmail.com>\nShaun Trennery <shaun.trennery@gmail.com>\nShihChi Huang <hhuang@netflix.com>\nShim Won <marocchino@gmail.com>\nShinnosuke Watanabe <snnskwtnb@gmail.com>\nShogun Sea <shogunsea08@gmail.com>\nShota Kubota <kubosho@users.noreply.github.com>\nShripad K <assortmentofsorts@gmail.com>\nSibi <psibi2000@gmail.com>\nSimen Bekkhus <sbekkhus91@gmail.com>\nSimon Højberg <r.hackr@gmail.com>\nSimon Welsh <simon@simon.geek.nz>\nSimone Vittori <hello@simonewebdesign.it>\nSoichiro Kawamura <mail@w-st.com>\nSophia Westwood <sophia@quip.com>\nSota Ohara <ohrst.18@gmail.com>\nSpencer Handley <spencerhandley@gmail.com>\nStefan Dombrowski <sdo451@gmail.com>\nStephen Murphy <smurphy3@apple.com>\nSterling Cobb <sterlingcobb@gmail.com>\nSteve Baker <_steve_@outlook.com>\nSteven Luscher <react@steveluscher.com>\nSteven Vachon <contact@svachon.com>\nStoyan Stefanov <ssttoo@ymail.com>\nSundeep Malladi <sundeep.malladi@gmail.com>\nSunny Juneja <me@sunnyjuneja.com>\nSven Helmberger <fforw@gmx.de>\nSverre Johansen <sverre.johansen@gmail.com>\nSébastien Lorber <lorber.sebastien@gmail.com>\nSławomir Laskowski <laskowski.box@gmail.com>\nTaeho Kim <dittos@gmail.com>\nTay Yang Shun <tay.yang.shun@gmail.com>\nTed Kim <ted@vcnc.co.kr>\nTengfei Guo <terryr3rd@yeah.net>\nTeodor Szente <teodor98sz@gmail.com>\nThomas Aylott <oblivious@subtlegradient.com>\nThomas Boyt <thomas.boyt@venmo.com>\nThomas Broadley <buriedunderbooks@hotmail.com>\nThomas Reggi <socialtr@gmail.com>\nThomas Röggla <t.roggla@cwi.nl>\nThomas Shaddox <thomas@heyzap.com>\nThomas Shafer <thomasjshafer@gmail.com>\nThomasCrvsr <crevoisier.thomas@gmail.com>\nTienchai Wirojsaksaree <tienchai@fb.com>\nTim Routowicz <troutowicz@gmail.com>\nTim Schaub <tschaub@users.noreply.github.com>\nTimothy Yung <yungsters@gmail.com>\nTimur Carpeev <timuric@users.noreply.github.com>\nTobias Reiss <tag+github@basecode.de>\nTom Duncalf <tom@tomduncalf.com>\nTom Haggie <thaggie@gmail.com>\nTom Hauburger <thauburger@gmail.com>\nTom MacWright <tom@macwright.org>\nTom Occhino <tomocchino@gmail.com>\nTomasz Kołodziejski <tkolodziejski@gmail.com>\nTomoya Suzuki <tmysz.dev@gmail.com>\nTony Spiro <tspiro@tonyspiro.com>\nToru Kobayashi <koba0004@gmail.com>\nTrinh Hoang Nhu <trinhhoangnhu@gmail.com>\nTsung Hung <thung@me.com>\nTyler Brock <tyler.brock@gmail.com>\nUstin Zarubin <ustin.zarubin@campusbellhops.com>\nVadim Chernysh <chernysh.vadim@gmail.com>\nVarun Rau <varunrau@gmail.com>\nVasiliy Loginevskiy <Yeti.or@gmail.com>\nVictor Alvarez <v.alvarez312@gmail.com>\nVictor Homyakov <vkhomyackov@gmail.com>\nVictor Koenders <victor.koenders@gmail.com>\nVille Immonen <ville.immonen@iki.fi>\nVincent Riemer <vincentriemer@gmail.com>\nVincent Siao <vincent@asana.com>\nVipul A M <vipulnsward@gmail.com>\nVitaly Kramskikh <vkramskikh@gmail.com>\nVitor Balocco <vitorbal@gmail.com>\nVjeux <vjeuxx@gmail.com>\nVolkan Unsal <spocksplanet@gmail.com>\nWander Wang <wander.wang@ismole.com>\nWayne Larsen <wayne@larsen.st>\nWickyNilliams <WickyNilliams@MBA>\nWincent Colaiuta <win@wincent.com>\nWout Mertens <Wout.Mertens@gmail.com>\nXavier Morel <xmo-odoo@users.noreply.github.com>\nXuefengWu <benewu@gmail.com>\nYakov Dalinchuk <murashki@users.noreply.github.com>\nYasar icli <hello@yasaricli.com>\nYouBao Nong <noyobo@gmail.com>\nYuichi Hagio <yhagio87@gmail.com>\nYuriy Dybskiy <yuriy@dybskiy.com>\nYutaka Nakajima <nakazye@gmail.com>\nYuval Dekel <thedekel@fb.com>\nZach Bruggeman <mail@bruggie.com>\nZach Ramaekers <zramaekers@gmail.com>\nZacharias <zachasme@users.noreply.github.com>\nZeke Sikelianos <zeke@sikelianos.com>\nZhangjd <zhang.jd@qq.com>\nadraeth <jerzy.mirecki@gmail.com>\narush <arush@ilovebrands.net>\nbrafdlog <brafdlog@gmail.com>\nchen <kikyous@163.com>\nclariroid <clarinette.uranus@gmail.com>\nclaudiopro <claudio.procida@gmail.com>\ncutbko <kutsenko.eugene@hotmail.com>\ndavidxi <davidgraycn@gmail.com>\ndongmeng.ldm <dongmeng.ldm@alibaba-inc.com>\niamchenxin <iamchenxin@gmail.com>\niamdoron <doronpagot@gmail.com>\niawia002 <z2d@jifangcheng.com>\nimagentleman <imagentlemail@gmail.com>\nkoh-taka <koh-taka@users.noreply.github.com>\nkohashi85 <hako584@gmail.com>\nlaiso <laiso@lai.so>\nleeyoungalias <leeyoungalias@qq.com>\nli.li <li.li@ele.me>\nmaxprafferty <maxprafferty@gmail.com>\nrgarifullin <ringarifullin@gmail.com>\nsongawee <dennis@songawee.com>\nsugarshin <shinsugar@gmail.com>\nwali-s <ahmad3y2k@hotmail.com>\nyiminghe <yiminghe@gmail.com>\nyoumoo <youmoolee@gmail.com>\nzhangjg <jinguozhang@qq.com>\nzwhitchcox <zwhitchcox@gmail.com>\nÁrni Hermann Reynisson <arnihr@gmail.com>\n元彦 <yuanyan@users.noreply.github.com>\n凌恒 <jiakun.dujk@alibaba-inc.com>\n张敏 <cookfront@gmail.com>\n"
  },
  {
    "path": "docs/articles/intro_reactR_files/react-16.8.1/LICENSE.txt",
    "content": "MIT License\n\nCopyright (c) 2013-present, Facebook, Inc.\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"
  },
  {
    "path": "docs/articles/intro_reactR_files/react-16.8.6/AUTHORS",
    "content": "39 <8398a7@gmail.com>\nAaron Franks <aaron.franks@gmail.com>\nAaron Gelter <aaron.gelter@harman.com>\nAdam Bloomston <adam@glitterfram.es>\nAdam Krebs <amk528@cs.nyu.edu>\nAdam Mark <adammark75@gmail.com>\nAdam Solove <asolove@gmail.com>\nAdam Timberlake <adam.timberlake@gmail.com>\nAdam Zapletal <adamzap@gmail.com>\nAhmad Wali Sidiqi <wali-s@users.noreply.github.com>\nAlan Plum <me@pluma.io>\nAlan Souza <alansouzati@gmail.com>\nAlan deLevie <adelevie@gmail.com>\nAlastair Hole <afhole@gmail.com>\nAlex <ultrafez@users.noreply.github.com>\nAlex Boatwright <drdelambre@gmail.com>\nAlex Boyd <alex@opengroove.org>\nAlex Dajani <xelad1@gmail.com>\nAlex Lopatin <alex@alexlopatin.com>\nAlex Mykyta <dancingwithcows@gmail.com>\nAlex Pien <alexpien@gmail.com>\nAlex Smith <iqwz@ya.ru>\nAlex Zelenskiy <azelenskiy@fb.com>\nAlexander Shtuchkin <ashtuchkin@gmail.com>\nAlexander Solovyov <alexander@solovyov.net>\nAlexander Tseung <alextsg@gmail.com>\nAlexandre Gaudencio <shahor@shahor.fr>\nAlexey Raspopov <avenger7x13@gmail.com>\nAlexey Shamrin <shamrin@gmail.com>\nAli Ukani <ali.ukani@gmail.com>\nAndre Z Sanchez <andrezacsanchez@gmail.com>\nAndreas Savvides <asavvides@twitter.com>\nAndreas Svensson <andreas@syranide.com>\nAndres Kalle <mjomble@gmail.com>\nAndres Suarez <zertosh@gmail.com>\nAndrew Clark <acdlite@me.com>\nAndrew Cobby <cobbweb@users.noreply.github.com>\nAndrew Davey <andrew@equin.co.uk>\nAndrew Henderson <andrew.m.henderson@gmail.com>\nAndrew Kulakov <avk@8xx8.ru>\nAndrew Rasmussen <andras@fb.com>\nAndrew Sokolov <asokolov@atlassian.com>\nAndrew Zich <azich@fb.com>\nAndrey Popp <8mayday@gmail.com>\nAnthony van der Hoorn <anthony.vanderhoorn@gmail.com>\nAnto Aravinth <anto.aravinth.cse@gmail.com>\nAntonio Ruberto <anto.ruberto@gmail.com>\nAntti Ahti <antti.ahti@gmail.com>\nAnuj Tomar <ankuto@gmail.com>\nAoDev <AoDev@users.noreply.github.com>\nApril Arcus <april.arcus@gmail.com>\nAreeb Malik <areeb.malik91@gmail.com>\nAria Buckles <aria@khanacademy.org>\nAria Stewart <aredridel@dinhe.net>\nArian Faurtosh <arian@icloud.com>\nArtem Nezvigin <artem@artnez.com>\nAustin Wright <aaa@bzfx.net>\nAyman Osman <aymano.osman@gmail.com>\nBaraa Hamodi <bhamodi@uwaterloo.ca>\nBartosz Kaszubowski <gosimek@gmail.com>\nBasarat Ali Syed <basaratali@gmail.com>\nBattaile Fauber <battaile@gmail.com>\nBeau Smith <beau@beausmith.com>\nBen Alpert <ben@benalpert.com>\nBen Anderson <banderson@constantcontact.com>\nBen Brooks <ben@benbrooks.net>\nBen Foxall <benfoxall@gmail.com>\nBen Halpern <bendhalpern@gmail.com>\nBen Jaffe <jaffe.ben@gmail.com>\nBen Moss <ben@mossity.com>\nBen Newman <bn@cs.stanford.edu>\nBen Ripkens <bripkens.dev@gmail.com>\nBenjamin Keen <ben.keen@gmail.com>\nBenjamin Leiken <benleiken@gmail.com>\nBenjamin Woodruff <github@benjam.info>\nBenjy Cui <benjytrys@gmail.com>\nBill Blanchard <bill@plumbdev.com>\nBill Fisher <fisherwebdev@gmail.com>\nBlaine Hatab <jbhatab@gmail.com>\nBlaine Kasten <blainekasten@gmail.com>\nBob Eagan <bob@synapsestudios.com>\nBob Ralian <bob.ralian@gmail.com>\nBob Renwick <bob.renwick@gmail.com>\nBobby <puppybytes@gmail.com>\nBojan Mihelac <bmihelac@mihelac.org>\nBradley Spaulding <brad.spaulding@gmail.com>\nBrandon Bloom <brandon@brandonbloom.name>\nBrandon Tilley <brandon@brandontilley.com>\nBrenard Cubacub <bcbcb@users.noreply.github.com>\nBrian Cooke <bri@bricooke.com>\nBrian Holt <btholt@gmail.com>\nBrian Hsu <brianhsu@Brians-MacBook-Pro.local>\nBrian Kim <briankimpossible@gmail.com>\nBrian Kung <brian@callmekung.com>\nBrian Reavis <brian@thirdroute.com>\nBrian Rue <brian@rollbar.com>\nBruno Škvorc <bruno@skvorc.me>\nCam Song <neosoyn@gmail.com>\nCam Spiers <camspiers@gmail.com>\nCameron Chamberlain <git@camjc.com>\nCameron Matheson <cameron@instructure.com>\nCarter Chung <carterchung@users.noreply.github.com>\nCassus Adam Banko <banko.adam@gmail.com>\nCat Chen <catchen@fb.com>\nCedric Sohrauer <cedric.sohrauer@infopark.de>\nCesar William Alvarenga <cesarwbr@gmail.com>\nChangsoon Bok <winmain@gmail.com>\nCharles Marsh <charlie@khanacademy.org>\nChase Adams <realchaseadams@gmail.com>\nCheng Lou <chenglou92@gmail.com>\nChitharanjan Das <das.chitharanjan@gmail.com>\nChris Bolin <bolin.chris@gmail.com>\nChris Grovers <chrisgrovers@users.noreply.github.com>\nChris Ha <chriskevinha@gmail.com>\nChris Rebert <github@rebertia.com>\nChris Sciolla <csciolla1@gmail.com>\nChristian Alfoni <christianalfoni@gmail.com>\nChristian Oliff <christianoliff@yahoo.com>\nChristian Roman <chroman16@gmail.com>\nChristoffer Sawicki <christoffer.sawicki@gmail.com>\nChristoph Pojer <christoph.pojer@gmail.com>\nChristopher Monsanto <chris@monsan.to>\nClay Allsopp <clay.allsopp@gmail.com>\nConnor McSheffrey <c@conr.me>\nConor Hastings <hastings.conorm@gmail.com>\nCory House <housecor@gmail.com>\nCotton Hou <himcotton@gmail.com>\nCraig Akimoto <strawbrary@users.noreply.github.com>\nCristovao Verstraeten <cristovao@apleasantview.com>\nDamien Pellier <dpellier@leadformance.com>\nDan Abramov <dan.abramov@gmail.com>\nDan Fox <iamdanfox@gmail.com>\nDan Schafer <dschafer@fb.com>\nDaniel Carlsson <daniel.carlsson.1987@gmail.com>\nDaniel Cousens <dcousens@users.noreply.github.com>\nDaniel Friesen <daniel@nadir-seen-fire.com>\nDaniel Gasienica <daniel@gasienica.ch>\nDaniel Hejl <daniel.hejl@hotmail.com>\nDaniel Hejl <hejldaniel@gmail.com>\nDaniel Lo Nigro <daniel@dan.cx>\nDaniel Mané <danmane@gmail.com>\nDaniel Miladinov <dmiladinov@wingspan.com>\nDaniel Rodgers-Pryor <djrodgerspryor@gmail.com>\nDaniel Schonfeld <daniel@schonfeld.org>\nDanny Ben-David <dannybd@fb.com>\nDarcy <smadad@me.com>\nDaryl Lau <daryl@weak.io>\nDarío Javier Cravero <dario@uxtemple.com>\nDave Galbraith <dave@jut.io>\nDavid Baker <djbaker2@gmail.com>\nDavid Ed Mellum <david@edmellum.com>\nDavid Goldberg <gberg1@users.noreply.github.com>\nDavid Granado <davidjgranado@gmail.com>\nDavid Greenspan <dgreenspan@alum.mit.edu>\nDavid Hellsing <david@aino.se>\nDavid Hu <davidhu91@gmail.com>\nDavid Khourshid <davidkpiano@gmail.com>\nDavid Mininger <dmininger@gmail.com>\nDavid Neubauer <davidneub@gmail.com>\nDavid Percy <davetp425@gmail.com>\nDean Shi <dnshi@users.noreply.github.com>\nDenis Sokolov <denis@sokolov.cc>\nDeniss Jacenko <deniss.jacenko+github@gmail.com>\nDennis Johnson <djohnson@rallydev.com>\nDevon Blandin <dblandin@gmail.com>\nDevon Harvey <devonharvey@gmail.com>\nDmitrii Abramov <dmitrii@rheia.us>\nDmitriy Rozhkov <dmitriy.rozhkov@xing.com>\nDmitry Blues <dmitri.blyus@gmail.com>\nDmitry Mazuro <dmitry.mazuro@icloud.com>\nDomenico Matteo <matteo.domenico@gmail.com>\nDon Abrams <donabrams@gmail.com>\nDongsheng Liu <bellanchor@gmail.com>\nDustan Kasten <dustan.kasten@gmail.com>\nDustin Getz <dgetz@wingspan.com>\nDylan Harrington <dylanharrington@gmail.com>\nEduardo Garcia <emumaniacx@gmail.com>\nEdvin Erikson <edvin@rocketblast.com>\nElaine Fang <elainefang@Elaines-MacBook-Pro.local>\nEnguerran <engcolson@gmail.com>\nEric Clemmons <eric@smarterspam.com>\nEric Eastwood <contact@ericeastwood.com>\nEric Florenzano <floguy@gmail.com>\nEric O'Connell <eric.oconnell@idealist.org>\nEric Schoffstall <contra@wearefractal.com>\nErik Harper <eharper@mixpo.com>\nEspen Hovlandsdal <rexxars@gmail.com>\nEvan Coonrod <evan@paloalto.com>\nEvan Vosberg <evanvosberg@urban.to>\nFabio M. Costa <fabiomcosta@gmail.com>\nFederico Rampazzo <frampone@gmail.com>\nFelipe Oliveira Carvalho <felipekde@gmail.com>\nFelix Gnass <fgnass@gmail.com>\nFelix Kling <felix.kling@gmx.net>\nFernando Correia <fernando@servicero.com>\nFrankie Bagnardi <f.bagnardi@gmail.com>\nFrançois-Xavier Bois <fxbois@gmail.com>\nFred Zhao <fredz@fb.com>\nFreddy Rangel <frederick.rangel@gmail.com>\nFyodor Ivanishchev <cbrwizard@gmail.com>\nG Scott Olson <gscottolson@gmail.com>\nG. Kay Lee <balancetraveller+github@gmail.com>\nGabe Levi <gabelevi@gmail.com>\nGajus Kuizinas <g.kuizinas@anuary.com>\nGareth Nicholson <gareth.nic@gmail.com>\nGarren Smith <garren.smith@gmail.com>\nGavin McQuistin <gavin@kickfiredesign.com>\nGeert Pasteels <geert.pasteels@gmail.com>\nGeert-Jan Brits <gbrits@gmail.com>\nGeorge A Sisco III <george.sisco@gmail.com>\nGeorgii Dolzhykov <thorn.mailbox@gmail.com>\nGilbert <gilbertbgarza@gmail.com>\nGlen Mailer <glenjamin@gmail.com>\nGrant Timmerman <granttimmerman@gmail.com>\nGreg Hurrell <glh@fb.com>\nGreg Perkins <gregrperkins@fb.com>\nGreg Roodt <groodt@gmail.com>\nGregory <g.marcilhacy@gmail.com>\nGuangqiang Dong <gqdong@fb.com>\nGuido Bouman <m@guido.vc>\nHarry Hull <harry.hull1@gmail.com>\nHarry Marr <harry.marr@gmail.com>\nHarry Moreno <morenoh149@gmail.com>\nHarshad Sabne <harshadsabne@users.noreply.github.com>\nHekar Khani <hekark@gmail.com>\nHendrik Swanepoel <hendrik.swanepoel@gmail.com>\nHenrik Nyh <henrik@nyh.se>\nHenry Wong <henryw4k@gmail.com>\nHenry Zhu <hi@henryzoo.com>\nHideo Matsumoto <hideo-m@pekeq.com>\nHou Chia <kchia87@gmail.com>\nHuang-Wei Chang <chang.huangwei.01@gmail.com>\nHugo Agbonon <hugo@agbonon.fr>\nHugo Jobling <me@thisishugo.com>\nHyeock Kwon <doublus@gmail.com>\nHéliton Nordt <hnordt@hnordt.com>\nIan Obermiller <ian@obermillers.com>\nIgnacio Carbajo <icarbajop@gmail.com>\nIgor Scekic <igorscekic2@gmail.com>\nIlia Pavlenkov <dortonway@gmail.com>\nIlya Shuklin <ilya.shuklin@gmail.com>\nIlyá Belsky <gelias.gbelsky@gmail.com>\nIngvar Stepanyan <me@rreverser.com>\nIrae Carvalho <irae@irae.pro.br>\nIsaac Salier-Hellendag <isaac@fb.com>\nIurii Kucherov <yuyokk@gmail.com>\nIvan Kozik <ivan@ludios.org>\nIvan Krechetov <ikr@ikr.su>\nIvan Vergiliev <ivan.vergiliev@gmail.com>\nJ. Andrew Brassington <jabbrass@zoho.com>\nJ. Renée Beach <splendidnoise@gmail.com>\nJD Isaacks <jd@jisaacks.com>\nJJ Weber <jj.weber@gmail.com>\nJW <JW00000@gmail.com>\nJack Zhang <jzhang31191@gmail.com>\nJackie Wung <jacquelinewung@gmail.com>\nJacob Gable <jacob.gable@gmail.com>\nJacob Greenleaf <jake@imgur.com>\nJae Hun Ro <jhr24@duke.edu>\nJaeho Lee <me@jaeholee.org>\nJaime Mingo <j.mingov@3boll.com>\nJake Worth <jakeworth82@gmail.com>\nJakub Malinowski <jakubmal@gmail.com>\nJames <james@mystrata.com>\nJames Brantly <james@jbrantly.com>\nJames Burnett <jtburnett@tribune.com>\nJames Friend <james@jsdf.co>\nJames Ide <ide@fb.com>\nJames Long <longster@gmail.com>\nJames Pearce <jpearce@fb.com>\nJames Seppi <james.seppi@gmail.com>\nJames South <james_south@hotmail.com>\nJames Wen <jrw2175@columbia.edu>\nJamie Wong <jamie.lf.wong@gmail.com>\nJamis Charles <jacharles@paypal.com>\nJamison Dance <jergason@gmail.com>\nJan Hancic <jan.hancic@gmail.com>\nJan Kassens <jan@kassens.net>\nJan Raasch <jan@janraasch.com>\nJared Forsyth <jared@jaredforsyth.com>\nJason <usaman2010us@gmail.com>\nJason Bonta <jbonta@gmail.com>\nJason Ly <jason.ly@gmail.com>\nJason Miller <aidenn0@geocities.com>\nJason Quense <monastic.panic@gmail.com>\nJason Trill <jason@jasontrill.com>\nJason Webster <jason@metalabdesign.com>\nJay Jaeho Lee <jay@spoqa.com>\nJean Lauliac <lauliacj@gmail.com>\nJed Watson <jed.watson@me.com>\nJeff Barczewski <jeff.barczewski@gmail.com>\nJeff Carpenter <gcarpenterv@gmail.com>\nJeff Chan <jefftchan@gmail.com>\nJeff Hicken <jhicken@gmail.com>\nJeff Kolesky <github@kolesky.com>\nJeff Morrison <jeff@anafx.com>\nJeff Welch <whatthejeff@gmail.com>\nJeffrey Lin <lin.jeffrey@gmail.com>\nJeremy Fairbank <elpapapollo@gmail.com>\nJesse Skinner <jesse@thefutureoftheweb.com>\nJignesh Kakadiya <jigneshhk1992@gmail.com>\nJim OBrien <jimobrien930@gmail.com>\nJim Sproch <jsproch@fb.com>\nJimmy Jea <jimjea@gmail.com>\nJing Chen <jingc@fb.com>\nJinwoo Oh <arkist@gmail.com>\nJinxiu Lee <lee.jinxiu@gmail.com>\nJiyeon Seo <zzzeons@gmail.com>\nJody McIntyre <scjody@modernduck.com>\nJoe Critchley <joecritch@gmail.com>\nJoe Stein <joeaarons@gmail.com>\nJoel Auterson <joel.auterson@googlemail.com>\nJohannes Baiter <johannes.baiter@gmail.com>\nJohannes Emerich <johannes@emerich.de>\nJohannes Lumpe <johannes@johanneslumpe.de>\nJohn Heroy <johnheroy@users.noreply.github.com>\nJohn Ryan <tjfryan@fb.com>\nJohn Watson <jwatson@fb.com>\nJohn-David Dalton <john.david.dalton@gmail.com>\nJon Beebe <jon.beebe@daveramsey.com>\nJon Chester <jonchester@fb.com>\nJon Hester <jon.d.hester@gmail.com>\nJon Madison <jon@tfftech.com>\nJon Scott Clark <jonscottclark@gmail.com>\nJon Tewksbury <jontewks@gmail.com>\nJonas Enlund <jonas.enlund@gmail.com>\nJonas Gebhardt <jonas@instagram.com>\nJonathan Hsu <jhiswin@gmail.com>\nJonathan Persson <persson.jonathan@gmail.com>\nJordan Harband <ljharb@gmail.com>\nJordan Walke <jordojw@gmail.com>\nJorrit Schippers <jorrit@ncode.nl>\nJoseph Nudell <joenudell@gmail.com>\nJoseph Savona <joesavona@fb.com>\nJosh Bassett <josh.bassett@gmail.com>\nJosh Duck <josh@fb.com>\nJosh Perez <josh.perez@airbnb.com>\nJosh Yudaken <yud@instagram.com>\nJoshua Evans <joshua.evans@quantified.co>\nJoshua Go <joshuago@gmail.com>\nJoshua Goldberg <jsgoldberg90@gmail.com>\nJoshua Ma <me@joshma.com>\nJoão Valente <filipevalente@gmail.com>\nJuan Serrano <germ13@users.noreply.github.com>\nJulen Ruiz Aizpuru <julenx@gmail.com>\nJulian Viereck <julian.viereck@gmail.com>\nJulien Bordellier <git@julienbordellier.com>\nJulio Lopez <ljuliom@gmail.com>\nJun Wu <quark@lihdd.net>\nJuraj Dudak <jdudak@fb.com>\nJustas Brazauskas <brazauskasjustas@gmail.com>\nJustin Jaffray <justinjaffray@khanacademy.org>\nJustin Robison <jrobison151@gmail.com>\nJustin Woo <moomoowoo@gmail.com>\nKale <krydrogen@gmail.com>\nKamron Batman <kamronbatman@users.noreply.github.com>\nKarl Mikkelsen <karl@kingkarl.com>\nKarpich Dmitry <karpich@gollard.ru>\nKeito Uchiyama <projects@keito.me>\nKen Powers <ken@kenpowers.net>\nKent C. Dodds <kent@doddsfamily.us>\nKevin Cheng <09chengk@gmail.com>\nKevin Coughlin <kevintcoughlin@gmail.com>\nKevin Huang <huang.kev@gmail.com>\nKevin Lau <thekevlau@gmail.com>\nKevin Old <kevin@kevinold.com>\nKevin Robinson <krobinson@twitter.com>\nKewei Jiang <jkewei328@hotmail.com>\nKier Borromeo <seraphipod@gmail.com>\nKimCoding <jeokrang@hanmail.net>\nKirk Steven Hansen <hanski07@kirk-hansens-macbook.local>\nKit Randel <kit@nocturne.net.nz>\nKohei TAKATA <kt.koheitakata@gmail.com>\nKoo Youngmin <youngmin@youngminz.kr>\nKrystian Karczewski <karcz.k@gmail.com>\nKunal Mehta <k.mehta@berkeley.edu>\nKurt Ruppel <me@kurtruppel.com>\nKyle Kelley <rgbkrk@gmail.com>\nKyle Mathews <mathews.kyle@gmail.com>\nLaurence Rowe <l@lrowe.co.uk>\nLaurent Etiemble <laurent.etiemble@monobjc.net>\nLee Byron <lee@leebyron.com>\nLee Jaeyoung <jaeyoung@monodiary.net>\nLei <tendant@gmail.com>\nLeland Richardson <leland.m.richardson@gmail.com>\nLeon Fedotov <LeonFedotov@users.noreply.github.com>\nLeon Yip <lyip1992@users.noreply.github.com>\nLeonardo YongUk Kim <dalinaum@gmail.com>\nLevi Buzolic <levibuzolic@gmail.com>\nLevi McCallum <levi@levimccallum.com>\nLily <qvang.j@gmail.com>\nLogan Allen <loganfynne@gmail.com>\nLovisa Svallingson <lovisasvallingson@gmail.com>\nLudovico Fischer <livrerie@gmail.com>\nLuigy Leon <luichi.19@gmail.com>\nLuke Horvat <lukehorvat@gmail.com>\nMIKAMI Yoshiyuki <yoshuki@saikyoline.jp>\nMaher Beg <maherbeg@gmail.com>\nManas <prometheansacrifice@gmail.com>\nMarcin K. <katzoo@github.mail>\nMarcin Kwiatkowski <marcin.kwiatkowski@hotmail.com>\nMarcin Szczepanski <marcins@gmail.com>\nMariano Desanze <protronm@gmail.com>\nMarjan <marjan.georgiev@gmail.com>\nMark Anderson <undernewmanagement@users.noreply.github.com>\nMark Funk <mfunk86@gmail.com>\nMark Hintz <markohintz@gmail.com>\nMark IJbema <markijbema@gmail.com>\nMark Murphy <murphy.mark@live.ca>\nMark Richardson <echo@fb.com>\nMark Rushakoff <mark@influxdb.com>\nMark Sun <sunmark14@gmail.com>\nMarlon Landaverde <milanlandaverde@gmail.com>\nMarshall Roch <mroch@fb.com>\nMartin Andert <mandert@gmail.com>\nMartin Hujer <mhujer@gmail.com>\nMartin Jul <martin@mjul.com>\nMartin Konicek <mkonicek@fb.com>\nMartin Mihaylov <martomi@users.noreply.github.com>\nMasaki KOBAYASHI <makky.4d6b.3f5@gmail.com>\nMathieu M-Gosselin <mathieumg@gmail.com>\nMathieu Savy <savy.mathieu@gmail.com>\nMatias Singers <mail@matiassingers.com>\nMatsunoki <himkt@klis.tsukuba.ac.jp>\nMatt Brookes <matt@brookes.net>\nMatt Dunn-Rankin <mdunnrankin@gmail.com>\nMatt Harrison <mt.harrison86@gmail.com>\nMatt Huggins <matt.huggins@gmail.com>\nMatt Stow <matt.stow@foxsports.com.au>\nMatt Zabriskie <mzabriskie@gmail.com>\nMatthew Dapena-Tretter <m@tthewwithanm.com>\nMatthew Herbst <mherbst@chegg.com>\nMatthew Hodgson <matthew@matrix.org>\nMatthew Johnston <matthewjohnston4@outlook.com>\nMatthew King <mking@users.noreply.github.com>\nMatthew Looi <looi.matthew@gmail.com>\nMatthew Miner <matthew@matthewminer.com>\nMatthias Le Brun <mlbli@me.com>\nMatti Nelimarkka <matti.nelimarkka@hiit.fi>\nMattijs Kneppers <mattijs@arttech.nl>\nMax F. Albrecht <1@178.is>\nMax Heiber <max.heiber@gmail.com>\nMax Stoiber <contact@mstoiber.com>\nMaxi Ferreira <charca@gmail.com>\nMaxim Abramchuk <MaximAbramchuck@gmail.com>\nMerrick Christensen <merrick.christensen@gmail.com>\nMert Kahyaoğlu <mertkahyaoglu93@gmail.com>\nMichael Chan <mijoch@gmail.com>\nMichael McDermott <michael@mgmcdermott.com>\nMichael Randers-Pehrson <michael.rp@gmail.com>\nMichael Ridgway <mridgway@yahoo-inc.com>\nMichael Warner <MichaelJWarner@hotmail.com>\nMichael Wiencek <mwtuea@gmail.com>\nMichael Ziwisky <mikezx@gmail.com>\nMichal Srb <xixixao@seznam.cz>\nMichelle Todd <himichelletodd@gmail.com>\nMihai Parparita <mihai.parparita@gmail.com>\nMike D Pilsbury <mike.pilsbury@gmail.com>\nMike Groseclose <mike.groseclose@gmail.com>\nMike Nordick <mnordick>\nMikolaj Dadela <mikolaj.dadela@hgv-online.de>\nMiles Johnson <mileswjohnson@gmail.com>\nMinwe LUO <minwe@yunshipei.com>\nMiorel Palii <miorel@fb.com>\nMorhaus <alexandre.kirszenberg@gmail.com>\nMoshe Kolodny <kolodny.github@gmail.com>\nMouad Debbar <mdebbar@fb.com>\nMurad <rogozhnikoff@users.noreply.github.com>\nMurray M. Moss <murray@mmoss.name>\nNadeesha Cabral <nadeesha.cabral@gmail.com>\nNaman Goel <naman34@gmail.com>\nNate Hunzaker <nate.hunzaker@gmail.com>\nNate Lee <nathaniel.jy.lee88@gmail.com>\nNathan Smith <NogsMPLS@users.noreply.github.com>\nNathan White <nw@nwhite.net>\nNee <944316342@qq.com>\nNeri Marschik <marschik_neri@cyberagent.co.jp>\nNguyen Truong Duy <truongduy134@yahoo.com>\nNicholas Bergson-Shilcock <me@nicholasbs.net>\nNicholas Clawson <nickclaw@users.noreply.github.com>\nNick Balestra <nickbalestra@users.noreply.github.com>\nNick Fitzgerald <fitzgen@gmail.com>\nNick Gavalas <njg57@cornell.edu>\nNick Merwin <nick@lemurheavy.com>\nNick Presta <nick@nickpresta.ca>\nNick Raienko <enaqxx@gmail.com>\nNick Thompson <ncthom91@gmail.com>\nNick Williams <WickyNilliams@users.noreply.github.com>\nNiklas Boström <nbostrom@gmail.com>\nNing Xia <ning-github@users.noreply.github.com>\nNiole Nelson <niolenelson@gmail.com>\nOiva Eskola <oiva.eskola@gmail.com>\nOleg <o.yanchinskiy@gmail.com>\nOleksii Markhovskyi <olexiy.markhovsky@gmail.com>\nOliver Zeigermann <oliver.zeigermann@gmail.com>\nOlivier Tassinari <Olivier.tassinari@gmail.com>\nOwen Coutts <owenc@fb.com>\nPablo Lacerda de Miranda <pablolm@yahoo-inc.com>\nPaolo Moretti <moretti@users.noreply.github.com>\nPascal Hartig <passy@twitter.com>\nPatrick <info@telepark.de>\nPatrick Laughlin <patrick@laughl.info>\nPatrick Stapleton <github@gdi2290.com>\nPaul Benigeri <me@benigeri.com>\nPaul Harper <benekastah@gmail.com>\nPaul O’Shannessy <paul@oshannessy.com>\nPaul Seiffert <paul.seiffert@gmail.com>\nPaul Shen <paul@mnml0.com>\nPedro Nauck <pedronauck@gmail.com>\nPete Hunt <floydophone@gmail.com>\nPeter Blazejewicz <peter.blazejewicz@gmail.com>\nPeter Cottle <pcottle@fb.com>\nPeter Jaros <peter.a.jaros@gmail.com>\nPeter Newnham <peter.newnham@appsbroker.com>\nPetri Lehtinen <petri@digip.org>\nPetri Lievonen <plievone@cc.hut.fi>\nPieter Vanderwerff <me@pieter.io>\nPouja Nikray <poujanik@gmail.com>\nPrathamesh Sonpatki <csonpatki@gmail.com>\nPrayag Verma <prayag.verma@gmail.com>\nPreston Parry <ClimbsRocks@users.noreply.github.com>\nRafael <rafael.garcia@clever.com>\nRafal Dittwald <rafal.dittwald@gmail.com>\nRainer Oviir <roviir@gmail.com>\nRajat Sehgal <rajatsehgal1988@gmail.com>\nRajiv Tirumalareddy <rajivtreddy@gmail.com>\nRam Kaniyur <quadrupleslap@users.noreply.github.com>\nRandall Randall <randall@randallsquared.com>\nRay <ray@tomo.im>\nRaymond Ha <raymond@shraymonks.com>\nReed Loden <reed@reedloden.com>\nRemko Tronçon <git@el-tramo.be>\nRichard D. Worth <rdworth@gmail.com>\nRichard Feldman <richard.t.feldman@gmail.com>\nRichard Kho <hello@richardkho.com>\nRichard Littauer <richard.littauer@gmail.com>\nRichard Livesey <Livesey7@hotmail.co.uk>\nRichard Wood <rwoodnz@gmail.com>\nRick Beerendonk <rick@beerendonk.com>\nRick Ford <rickfordrick@gmail.com>\nRiley Tomasek <riley.tomasek@gmail.com>\nRob Arnold <robarnold@cs.cmu.edu>\nRobert Binna <rbinna@gmail.com>\nRobert Knight <robert.knight@mendeley.com>\nRobert Sedovsek <robert.sedovsek@gmail.com>\nRobin Berjon <robin@berjon.com>\nRobin Frischmann <robin@rofrischmann.de>\nRoman Pominov <rpominov+github@gmail.com>\nRoman Vanesyan <roman.vanesyan@gmail.com>\nRuss <russwirtz@gmail.com>\nRyan Seddon <seddon.ryan@gmail.com>\nSahat Yalkabov <sakhat@gmail.com>\nSaif Hakim <saif@benchling.com>\nSaiichi Hashimoto <saiichihashimoto@gmail.com>\nSam Beveridge <sbeveridge@saltstack.com>\nSam Saccone <samccone@gmail.com>\nSam Selikoff <sam.selikoff@gmail.com>\nSamy Al Zahrani <samy@sadeem.net>\nSander Spies <sandermail@gmail.com>\nScott Burch <scott@bulldoginfo.com>\nScott Feeney <scott@oceanbase.org>\nSean Kinsey <oyvind@fb.com>\nSebastian Markbåge <sebastian@calyptus.eu>\nSebastian McKenzie <sebmck@gmail.com>\nSeoh Char <devthewild@gmail.com>\nSercan Eraslan <sercan.eraslan@sahibinden.com>\nSerg <undrdog@yandex.ru>\nSergey Generalov <sergey@genbit.ru>\nSergey Rubanov <chi187@gmail.com>\nSeyi Adebajo <hello@seyinanigans.com>\nShane O'Sullivan <shaneosullivan1@gmail.com>\nShaun Trennery <shaun.trennery@gmail.com>\nShihChi Huang <hhuang@netflix.com>\nShim Won <marocchino@gmail.com>\nShinnosuke Watanabe <snnskwtnb@gmail.com>\nShogun Sea <shogunsea08@gmail.com>\nShota Kubota <kubosho@users.noreply.github.com>\nShripad K <assortmentofsorts@gmail.com>\nSibi <psibi2000@gmail.com>\nSimen Bekkhus <sbekkhus91@gmail.com>\nSimon Højberg <r.hackr@gmail.com>\nSimon Welsh <simon@simon.geek.nz>\nSimone Vittori <hello@simonewebdesign.it>\nSoichiro Kawamura <mail@w-st.com>\nSophia Westwood <sophia@quip.com>\nSota Ohara <ohrst.18@gmail.com>\nSpencer Handley <spencerhandley@gmail.com>\nStefan Dombrowski <sdo451@gmail.com>\nStephen Murphy <smurphy3@apple.com>\nSterling Cobb <sterlingcobb@gmail.com>\nSteve Baker <_steve_@outlook.com>\nSteven Luscher <react@steveluscher.com>\nSteven Vachon <contact@svachon.com>\nStoyan Stefanov <ssttoo@ymail.com>\nSundeep Malladi <sundeep.malladi@gmail.com>\nSunny Juneja <me@sunnyjuneja.com>\nSven Helmberger <fforw@gmx.de>\nSverre Johansen <sverre.johansen@gmail.com>\nSébastien Lorber <lorber.sebastien@gmail.com>\nSławomir Laskowski <laskowski.box@gmail.com>\nTaeho Kim <dittos@gmail.com>\nTay Yang Shun <tay.yang.shun@gmail.com>\nTed Kim <ted@vcnc.co.kr>\nTengfei Guo <terryr3rd@yeah.net>\nTeodor Szente <teodor98sz@gmail.com>\nThomas Aylott <oblivious@subtlegradient.com>\nThomas Boyt <thomas.boyt@venmo.com>\nThomas Broadley <buriedunderbooks@hotmail.com>\nThomas Reggi <socialtr@gmail.com>\nThomas Röggla <t.roggla@cwi.nl>\nThomas Shaddox <thomas@heyzap.com>\nThomas Shafer <thomasjshafer@gmail.com>\nThomasCrvsr <crevoisier.thomas@gmail.com>\nTienchai Wirojsaksaree <tienchai@fb.com>\nTim Routowicz <troutowicz@gmail.com>\nTim Schaub <tschaub@users.noreply.github.com>\nTimothy Yung <yungsters@gmail.com>\nTimur Carpeev <timuric@users.noreply.github.com>\nTobias Reiss <tag+github@basecode.de>\nTom Duncalf <tom@tomduncalf.com>\nTom Haggie <thaggie@gmail.com>\nTom Hauburger <thauburger@gmail.com>\nTom MacWright <tom@macwright.org>\nTom Occhino <tomocchino@gmail.com>\nTomasz Kołodziejski <tkolodziejski@gmail.com>\nTomoya Suzuki <tmysz.dev@gmail.com>\nTony Spiro <tspiro@tonyspiro.com>\nToru Kobayashi <koba0004@gmail.com>\nTrinh Hoang Nhu <trinhhoangnhu@gmail.com>\nTsung Hung <thung@me.com>\nTyler Brock <tyler.brock@gmail.com>\nUstin Zarubin <ustin.zarubin@campusbellhops.com>\nVadim Chernysh <chernysh.vadim@gmail.com>\nVarun Rau <varunrau@gmail.com>\nVasiliy Loginevskiy <Yeti.or@gmail.com>\nVictor Alvarez <v.alvarez312@gmail.com>\nVictor Homyakov <vkhomyackov@gmail.com>\nVictor Koenders <victor.koenders@gmail.com>\nVille Immonen <ville.immonen@iki.fi>\nVincent Riemer <vincentriemer@gmail.com>\nVincent Siao <vincent@asana.com>\nVipul A M <vipulnsward@gmail.com>\nVitaly Kramskikh <vkramskikh@gmail.com>\nVitor Balocco <vitorbal@gmail.com>\nVjeux <vjeuxx@gmail.com>\nVolkan Unsal <spocksplanet@gmail.com>\nWander Wang <wander.wang@ismole.com>\nWayne Larsen <wayne@larsen.st>\nWickyNilliams <WickyNilliams@MBA>\nWincent Colaiuta <win@wincent.com>\nWout Mertens <Wout.Mertens@gmail.com>\nXavier Morel <xmo-odoo@users.noreply.github.com>\nXuefengWu <benewu@gmail.com>\nYakov Dalinchuk <murashki@users.noreply.github.com>\nYasar icli <hello@yasaricli.com>\nYouBao Nong <noyobo@gmail.com>\nYuichi Hagio <yhagio87@gmail.com>\nYuriy Dybskiy <yuriy@dybskiy.com>\nYutaka Nakajima <nakazye@gmail.com>\nYuval Dekel <thedekel@fb.com>\nZach Bruggeman <mail@bruggie.com>\nZach Ramaekers <zramaekers@gmail.com>\nZacharias <zachasme@users.noreply.github.com>\nZeke Sikelianos <zeke@sikelianos.com>\nZhangjd <zhang.jd@qq.com>\nadraeth <jerzy.mirecki@gmail.com>\narush <arush@ilovebrands.net>\nbrafdlog <brafdlog@gmail.com>\nchen <kikyous@163.com>\nclariroid <clarinette.uranus@gmail.com>\nclaudiopro <claudio.procida@gmail.com>\ncutbko <kutsenko.eugene@hotmail.com>\ndavidxi <davidgraycn@gmail.com>\ndongmeng.ldm <dongmeng.ldm@alibaba-inc.com>\niamchenxin <iamchenxin@gmail.com>\niamdoron <doronpagot@gmail.com>\niawia002 <z2d@jifangcheng.com>\nimagentleman <imagentlemail@gmail.com>\nkoh-taka <koh-taka@users.noreply.github.com>\nkohashi85 <hako584@gmail.com>\nlaiso <laiso@lai.so>\nleeyoungalias <leeyoungalias@qq.com>\nli.li <li.li@ele.me>\nmaxprafferty <maxprafferty@gmail.com>\nrgarifullin <ringarifullin@gmail.com>\nsongawee <dennis@songawee.com>\nsugarshin <shinsugar@gmail.com>\nwali-s <ahmad3y2k@hotmail.com>\nyiminghe <yiminghe@gmail.com>\nyoumoo <youmoolee@gmail.com>\nzhangjg <jinguozhang@qq.com>\nzwhitchcox <zwhitchcox@gmail.com>\nÁrni Hermann Reynisson <arnihr@gmail.com>\n元彦 <yuanyan@users.noreply.github.com>\n凌恒 <jiakun.dujk@alibaba-inc.com>\n张敏 <cookfront@gmail.com>\n"
  },
  {
    "path": "docs/articles/intro_reactR_files/react-16.8.6/LICENSE.txt",
    "content": "MIT License\n\nCopyright (c) 2013-present, Facebook, Inc.\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"
  },
  {
    "path": "docs/articles/intro_reactR_files/react-17.0.0/AUTHORS",
    "content": "39 <8398a7@gmail.com>\nAaron Franks <aaron.franks@gmail.com>\nAaron Gelter <aaron.gelter@harman.com>\nAdam Bloomston <adam@glitterfram.es>\nAdam Krebs <amk528@cs.nyu.edu>\nAdam Mark <adammark75@gmail.com>\nAdam Solove <asolove@gmail.com>\nAdam Timberlake <adam.timberlake@gmail.com>\nAdam Zapletal <adamzap@gmail.com>\nAhmad Wali Sidiqi <wali-s@users.noreply.github.com>\nAlan Plum <me@pluma.io>\nAlan Souza <alansouzati@gmail.com>\nAlan deLevie <adelevie@gmail.com>\nAlastair Hole <afhole@gmail.com>\nAlex <ultrafez@users.noreply.github.com>\nAlex Boatwright <drdelambre@gmail.com>\nAlex Boyd <alex@opengroove.org>\nAlex Dajani <xelad1@gmail.com>\nAlex Lopatin <alex@alexlopatin.com>\nAlex Mykyta <dancingwithcows@gmail.com>\nAlex Pien <alexpien@gmail.com>\nAlex Smith <iqwz@ya.ru>\nAlex Zelenskiy <azelenskiy@fb.com>\nAlexander Shtuchkin <ashtuchkin@gmail.com>\nAlexander Solovyov <alexander@solovyov.net>\nAlexander Tseung <alextsg@gmail.com>\nAlexandre Gaudencio <shahor@shahor.fr>\nAlexey Raspopov <avenger7x13@gmail.com>\nAlexey Shamrin <shamrin@gmail.com>\nAli Ukani <ali.ukani@gmail.com>\nAndre Z Sanchez <andrezacsanchez@gmail.com>\nAndreas Savvides <asavvides@twitter.com>\nAndreas Svensson <andreas@syranide.com>\nAndres Kalle <mjomble@gmail.com>\nAndres Suarez <zertosh@gmail.com>\nAndrew Clark <acdlite@me.com>\nAndrew Cobby <cobbweb@users.noreply.github.com>\nAndrew Davey <andrew@equin.co.uk>\nAndrew Henderson <andrew.m.henderson@gmail.com>\nAndrew Kulakov <avk@8xx8.ru>\nAndrew Rasmussen <andras@fb.com>\nAndrew Sokolov <asokolov@atlassian.com>\nAndrew Zich <azich@fb.com>\nAndrey Popp <8mayday@gmail.com>\nAnthony van der Hoorn <anthony.vanderhoorn@gmail.com>\nAnto Aravinth <anto.aravinth.cse@gmail.com>\nAntonio Ruberto <anto.ruberto@gmail.com>\nAntti Ahti <antti.ahti@gmail.com>\nAnuj Tomar <ankuto@gmail.com>\nAoDev <AoDev@users.noreply.github.com>\nApril Arcus <april.arcus@gmail.com>\nAreeb Malik <areeb.malik91@gmail.com>\nAria Buckles <aria@khanacademy.org>\nAria Stewart <aredridel@dinhe.net>\nArian Faurtosh <arian@icloud.com>\nArtem Nezvigin <artem@artnez.com>\nAustin Wright <aaa@bzfx.net>\nAyman Osman <aymano.osman@gmail.com>\nBaraa Hamodi <bhamodi@uwaterloo.ca>\nBartosz Kaszubowski <gosimek@gmail.com>\nBasarat Ali Syed <basaratali@gmail.com>\nBattaile Fauber <battaile@gmail.com>\nBeau Smith <beau@beausmith.com>\nBen Alpert <ben@benalpert.com>\nBen Anderson <banderson@constantcontact.com>\nBen Brooks <ben@benbrooks.net>\nBen Foxall <benfoxall@gmail.com>\nBen Halpern <bendhalpern@gmail.com>\nBen Jaffe <jaffe.ben@gmail.com>\nBen Moss <ben@mossity.com>\nBen Newman <bn@cs.stanford.edu>\nBen Ripkens <bripkens.dev@gmail.com>\nBenjamin Keen <ben.keen@gmail.com>\nBenjamin Leiken <benleiken@gmail.com>\nBenjamin Woodruff <github@benjam.info>\nBenjy Cui <benjytrys@gmail.com>\nBill Blanchard <bill@plumbdev.com>\nBill Fisher <fisherwebdev@gmail.com>\nBlaine Hatab <jbhatab@gmail.com>\nBlaine Kasten <blainekasten@gmail.com>\nBob Eagan <bob@synapsestudios.com>\nBob Ralian <bob.ralian@gmail.com>\nBob Renwick <bob.renwick@gmail.com>\nBobby <puppybytes@gmail.com>\nBojan Mihelac <bmihelac@mihelac.org>\nBradley Spaulding <brad.spaulding@gmail.com>\nBrandon Bloom <brandon@brandonbloom.name>\nBrandon Tilley <brandon@brandontilley.com>\nBrenard Cubacub <bcbcb@users.noreply.github.com>\nBrian Cooke <bri@bricooke.com>\nBrian Holt <btholt@gmail.com>\nBrian Hsu <brianhsu@Brians-MacBook-Pro.local>\nBrian Kim <briankimpossible@gmail.com>\nBrian Kung <brian@callmekung.com>\nBrian Reavis <brian@thirdroute.com>\nBrian Rue <brian@rollbar.com>\nBruno Škvorc <bruno@skvorc.me>\nCam Song <neosoyn@gmail.com>\nCam Spiers <camspiers@gmail.com>\nCameron Chamberlain <git@camjc.com>\nCameron Matheson <cameron@instructure.com>\nCarter Chung <carterchung@users.noreply.github.com>\nCassus Adam Banko <banko.adam@gmail.com>\nCat Chen <catchen@fb.com>\nCedric Sohrauer <cedric.sohrauer@infopark.de>\nCesar William Alvarenga <cesarwbr@gmail.com>\nChangsoon Bok <winmain@gmail.com>\nCharles Marsh <charlie@khanacademy.org>\nChase Adams <realchaseadams@gmail.com>\nCheng Lou <chenglou92@gmail.com>\nChitharanjan Das <das.chitharanjan@gmail.com>\nChris Bolin <bolin.chris@gmail.com>\nChris Grovers <chrisgrovers@users.noreply.github.com>\nChris Ha <chriskevinha@gmail.com>\nChris Rebert <github@rebertia.com>\nChris Sciolla <csciolla1@gmail.com>\nChristian Alfoni <christianalfoni@gmail.com>\nChristian Oliff <christianoliff@yahoo.com>\nChristian Roman <chroman16@gmail.com>\nChristoffer Sawicki <christoffer.sawicki@gmail.com>\nChristoph Pojer <christoph.pojer@gmail.com>\nChristopher Monsanto <chris@monsan.to>\nClay Allsopp <clay.allsopp@gmail.com>\nConnor McSheffrey <c@conr.me>\nConor Hastings <hastings.conorm@gmail.com>\nCory House <housecor@gmail.com>\nCotton Hou <himcotton@gmail.com>\nCraig Akimoto <strawbrary@users.noreply.github.com>\nCristovao Verstraeten <cristovao@apleasantview.com>\nDamien Pellier <dpellier@leadformance.com>\nDan Abramov <dan.abramov@gmail.com>\nDan Fox <iamdanfox@gmail.com>\nDan Schafer <dschafer@fb.com>\nDaniel Carlsson <daniel.carlsson.1987@gmail.com>\nDaniel Cousens <dcousens@users.noreply.github.com>\nDaniel Friesen <daniel@nadir-seen-fire.com>\nDaniel Gasienica <daniel@gasienica.ch>\nDaniel Hejl <daniel.hejl@hotmail.com>\nDaniel Hejl <hejldaniel@gmail.com>\nDaniel Lo Nigro <daniel@dan.cx>\nDaniel Mané <danmane@gmail.com>\nDaniel Miladinov <dmiladinov@wingspan.com>\nDaniel Rodgers-Pryor <djrodgerspryor@gmail.com>\nDaniel Schonfeld <daniel@schonfeld.org>\nDanny Ben-David <dannybd@fb.com>\nDarcy <smadad@me.com>\nDaryl Lau <daryl@weak.io>\nDarío Javier Cravero <dario@uxtemple.com>\nDave Galbraith <dave@jut.io>\nDavid Baker <djbaker2@gmail.com>\nDavid Ed Mellum <david@edmellum.com>\nDavid Goldberg <gberg1@users.noreply.github.com>\nDavid Granado <davidjgranado@gmail.com>\nDavid Greenspan <dgreenspan@alum.mit.edu>\nDavid Hellsing <david@aino.se>\nDavid Hu <davidhu91@gmail.com>\nDavid Khourshid <davidkpiano@gmail.com>\nDavid Mininger <dmininger@gmail.com>\nDavid Neubauer <davidneub@gmail.com>\nDavid Percy <davetp425@gmail.com>\nDean Shi <dnshi@users.noreply.github.com>\nDenis Sokolov <denis@sokolov.cc>\nDeniss Jacenko <deniss.jacenko+github@gmail.com>\nDennis Johnson <djohnson@rallydev.com>\nDevon Blandin <dblandin@gmail.com>\nDevon Harvey <devonharvey@gmail.com>\nDmitrii Abramov <dmitrii@rheia.us>\nDmitriy Rozhkov <dmitriy.rozhkov@xing.com>\nDmitry Blues <dmitri.blyus@gmail.com>\nDmitry Mazuro <dmitry.mazuro@icloud.com>\nDomenico Matteo <matteo.domenico@gmail.com>\nDon Abrams <donabrams@gmail.com>\nDongsheng Liu <bellanchor@gmail.com>\nDustan Kasten <dustan.kasten@gmail.com>\nDustin Getz <dgetz@wingspan.com>\nDylan Harrington <dylanharrington@gmail.com>\nEduardo Garcia <emumaniacx@gmail.com>\nEdvin Erikson <edvin@rocketblast.com>\nElaine Fang <elainefang@Elaines-MacBook-Pro.local>\nEnguerran <engcolson@gmail.com>\nEric Clemmons <eric@smarterspam.com>\nEric Eastwood <contact@ericeastwood.com>\nEric Florenzano <floguy@gmail.com>\nEric O'Connell <eric.oconnell@idealist.org>\nEric Schoffstall <contra@wearefractal.com>\nErik Harper <eharper@mixpo.com>\nEspen Hovlandsdal <rexxars@gmail.com>\nEvan Coonrod <evan@paloalto.com>\nEvan Vosberg <evanvosberg@urban.to>\nFabio M. Costa <fabiomcosta@gmail.com>\nFederico Rampazzo <frampone@gmail.com>\nFelipe Oliveira Carvalho <felipekde@gmail.com>\nFelix Gnass <fgnass@gmail.com>\nFelix Kling <felix.kling@gmx.net>\nFernando Correia <fernando@servicero.com>\nFrankie Bagnardi <f.bagnardi@gmail.com>\nFrançois-Xavier Bois <fxbois@gmail.com>\nFred Zhao <fredz@fb.com>\nFreddy Rangel <frederick.rangel@gmail.com>\nFyodor Ivanishchev <cbrwizard@gmail.com>\nG Scott Olson <gscottolson@gmail.com>\nG. Kay Lee <balancetraveller+github@gmail.com>\nGabe Levi <gabelevi@gmail.com>\nGajus Kuizinas <g.kuizinas@anuary.com>\nGareth Nicholson <gareth.nic@gmail.com>\nGarren Smith <garren.smith@gmail.com>\nGavin McQuistin <gavin@kickfiredesign.com>\nGeert Pasteels <geert.pasteels@gmail.com>\nGeert-Jan Brits <gbrits@gmail.com>\nGeorge A Sisco III <george.sisco@gmail.com>\nGeorgii Dolzhykov <thorn.mailbox@gmail.com>\nGilbert <gilbertbgarza@gmail.com>\nGlen Mailer <glenjamin@gmail.com>\nGrant Timmerman <granttimmerman@gmail.com>\nGreg Hurrell <glh@fb.com>\nGreg Perkins <gregrperkins@fb.com>\nGreg Roodt <groodt@gmail.com>\nGregory <g.marcilhacy@gmail.com>\nGuangqiang Dong <gqdong@fb.com>\nGuido Bouman <m@guido.vc>\nHarry Hull <harry.hull1@gmail.com>\nHarry Marr <harry.marr@gmail.com>\nHarry Moreno <morenoh149@gmail.com>\nHarshad Sabne <harshadsabne@users.noreply.github.com>\nHekar Khani <hekark@gmail.com>\nHendrik Swanepoel <hendrik.swanepoel@gmail.com>\nHenrik Nyh <henrik@nyh.se>\nHenry Wong <henryw4k@gmail.com>\nHenry Zhu <hi@henryzoo.com>\nHideo Matsumoto <hideo-m@pekeq.com>\nHou Chia <kchia87@gmail.com>\nHuang-Wei Chang <chang.huangwei.01@gmail.com>\nHugo Agbonon <hugo@agbonon.fr>\nHugo Jobling <me@thisishugo.com>\nHyeock Kwon <doublus@gmail.com>\nHéliton Nordt <hnordt@hnordt.com>\nIan Obermiller <ian@obermillers.com>\nIgnacio Carbajo <icarbajop@gmail.com>\nIgor Scekic <igorscekic2@gmail.com>\nIlia Pavlenkov <dortonway@gmail.com>\nIlya Shuklin <ilya.shuklin@gmail.com>\nIlyá Belsky <gelias.gbelsky@gmail.com>\nIngvar Stepanyan <me@rreverser.com>\nIrae Carvalho <irae@irae.pro.br>\nIsaac Salier-Hellendag <isaac@fb.com>\nIurii Kucherov <yuyokk@gmail.com>\nIvan Kozik <ivan@ludios.org>\nIvan Krechetov <ikr@ikr.su>\nIvan Vergiliev <ivan.vergiliev@gmail.com>\nJ. Andrew Brassington <jabbrass@zoho.com>\nJ. Renée Beach <splendidnoise@gmail.com>\nJD Isaacks <jd@jisaacks.com>\nJJ Weber <jj.weber@gmail.com>\nJW <JW00000@gmail.com>\nJack Zhang <jzhang31191@gmail.com>\nJackie Wung <jacquelinewung@gmail.com>\nJacob Gable <jacob.gable@gmail.com>\nJacob Greenleaf <jake@imgur.com>\nJae Hun Ro <jhr24@duke.edu>\nJaeho Lee <me@jaeholee.org>\nJaime Mingo <j.mingov@3boll.com>\nJake Worth <jakeworth82@gmail.com>\nJakub Malinowski <jakubmal@gmail.com>\nJames <james@mystrata.com>\nJames Brantly <james@jbrantly.com>\nJames Burnett <jtburnett@tribune.com>\nJames Friend <james@jsdf.co>\nJames Ide <ide@fb.com>\nJames Long <longster@gmail.com>\nJames Pearce <jpearce@fb.com>\nJames Seppi <james.seppi@gmail.com>\nJames South <james_south@hotmail.com>\nJames Wen <jrw2175@columbia.edu>\nJamie Wong <jamie.lf.wong@gmail.com>\nJamis Charles <jacharles@paypal.com>\nJamison Dance <jergason@gmail.com>\nJan Hancic <jan.hancic@gmail.com>\nJan Kassens <jan@kassens.net>\nJan Raasch <jan@janraasch.com>\nJared Forsyth <jared@jaredforsyth.com>\nJason <usaman2010us@gmail.com>\nJason Bonta <jbonta@gmail.com>\nJason Ly <jason.ly@gmail.com>\nJason Miller <aidenn0@geocities.com>\nJason Quense <monastic.panic@gmail.com>\nJason Trill <jason@jasontrill.com>\nJason Webster <jason@metalabdesign.com>\nJay Jaeho Lee <jay@spoqa.com>\nJean Lauliac <lauliacj@gmail.com>\nJed Watson <jed.watson@me.com>\nJeff Barczewski <jeff.barczewski@gmail.com>\nJeff Carpenter <gcarpenterv@gmail.com>\nJeff Chan <jefftchan@gmail.com>\nJeff Hicken <jhicken@gmail.com>\nJeff Kolesky <github@kolesky.com>\nJeff Morrison <jeff@anafx.com>\nJeff Welch <whatthejeff@gmail.com>\nJeffrey Lin <lin.jeffrey@gmail.com>\nJeremy Fairbank <elpapapollo@gmail.com>\nJesse Skinner <jesse@thefutureoftheweb.com>\nJignesh Kakadiya <jigneshhk1992@gmail.com>\nJim OBrien <jimobrien930@gmail.com>\nJim Sproch <jsproch@fb.com>\nJimmy Jea <jimjea@gmail.com>\nJing Chen <jingc@fb.com>\nJinwoo Oh <arkist@gmail.com>\nJinxiu Lee <lee.jinxiu@gmail.com>\nJiyeon Seo <zzzeons@gmail.com>\nJody McIntyre <scjody@modernduck.com>\nJoe Critchley <joecritch@gmail.com>\nJoe Stein <joeaarons@gmail.com>\nJoel Auterson <joel.auterson@googlemail.com>\nJohannes Baiter <johannes.baiter@gmail.com>\nJohannes Emerich <johannes@emerich.de>\nJohannes Lumpe <johannes@johanneslumpe.de>\nJohn Heroy <johnheroy@users.noreply.github.com>\nJohn Ryan <tjfryan@fb.com>\nJohn Watson <jwatson@fb.com>\nJohn-David Dalton <john.david.dalton@gmail.com>\nJon Beebe <jon.beebe@daveramsey.com>\nJon Chester <jonchester@fb.com>\nJon Hester <jon.d.hester@gmail.com>\nJon Madison <jon@tfftech.com>\nJon Scott Clark <jonscottclark@gmail.com>\nJon Tewksbury <jontewks@gmail.com>\nJonas Enlund <jonas.enlund@gmail.com>\nJonas Gebhardt <jonas@instagram.com>\nJonathan Hsu <jhiswin@gmail.com>\nJonathan Persson <persson.jonathan@gmail.com>\nJordan Harband <ljharb@gmail.com>\nJordan Walke <jordojw@gmail.com>\nJorrit Schippers <jorrit@ncode.nl>\nJoseph Nudell <joenudell@gmail.com>\nJoseph Savona <joesavona@fb.com>\nJosh Bassett <josh.bassett@gmail.com>\nJosh Duck <josh@fb.com>\nJosh Perez <josh.perez@airbnb.com>\nJosh Yudaken <yud@instagram.com>\nJoshua Evans <joshua.evans@quantified.co>\nJoshua Go <joshuago@gmail.com>\nJoshua Goldberg <jsgoldberg90@gmail.com>\nJoshua Ma <me@joshma.com>\nJoão Valente <filipevalente@gmail.com>\nJuan Serrano <germ13@users.noreply.github.com>\nJulen Ruiz Aizpuru <julenx@gmail.com>\nJulian Viereck <julian.viereck@gmail.com>\nJulien Bordellier <git@julienbordellier.com>\nJulio Lopez <ljuliom@gmail.com>\nJun Wu <quark@lihdd.net>\nJuraj Dudak <jdudak@fb.com>\nJustas Brazauskas <brazauskasjustas@gmail.com>\nJustin Jaffray <justinjaffray@khanacademy.org>\nJustin Robison <jrobison151@gmail.com>\nJustin Woo <moomoowoo@gmail.com>\nKale <krydrogen@gmail.com>\nKamron Batman <kamronbatman@users.noreply.github.com>\nKarl Mikkelsen <karl@kingkarl.com>\nKarpich Dmitry <karpich@gollard.ru>\nKeito Uchiyama <projects@keito.me>\nKen Powers <ken@kenpowers.net>\nKent C. Dodds <kent@doddsfamily.us>\nKevin Cheng <09chengk@gmail.com>\nKevin Coughlin <kevintcoughlin@gmail.com>\nKevin Huang <huang.kev@gmail.com>\nKevin Lau <thekevlau@gmail.com>\nKevin Old <kevin@kevinold.com>\nKevin Robinson <krobinson@twitter.com>\nKewei Jiang <jkewei328@hotmail.com>\nKier Borromeo <seraphipod@gmail.com>\nKimCoding <jeokrang@hanmail.net>\nKirk Steven Hansen <hanski07@kirk-hansens-macbook.local>\nKit Randel <kit@nocturne.net.nz>\nKohei TAKATA <kt.koheitakata@gmail.com>\nKoo Youngmin <youngmin@youngminz.kr>\nKrystian Karczewski <karcz.k@gmail.com>\nKunal Mehta <k.mehta@berkeley.edu>\nKurt Ruppel <me@kurtruppel.com>\nKyle Kelley <rgbkrk@gmail.com>\nKyle Mathews <mathews.kyle@gmail.com>\nLaurence Rowe <l@lrowe.co.uk>\nLaurent Etiemble <laurent.etiemble@monobjc.net>\nLee Byron <lee@leebyron.com>\nLee Jaeyoung <jaeyoung@monodiary.net>\nLei <tendant@gmail.com>\nLeland Richardson <leland.m.richardson@gmail.com>\nLeon Fedotov <LeonFedotov@users.noreply.github.com>\nLeon Yip <lyip1992@users.noreply.github.com>\nLeonardo YongUk Kim <dalinaum@gmail.com>\nLevi Buzolic <levibuzolic@gmail.com>\nLevi McCallum <levi@levimccallum.com>\nLily <qvang.j@gmail.com>\nLogan Allen <loganfynne@gmail.com>\nLovisa Svallingson <lovisasvallingson@gmail.com>\nLudovico Fischer <livrerie@gmail.com>\nLuigy Leon <luichi.19@gmail.com>\nLuke Horvat <lukehorvat@gmail.com>\nMIKAMI Yoshiyuki <yoshuki@saikyoline.jp>\nMaher Beg <maherbeg@gmail.com>\nManas <prometheansacrifice@gmail.com>\nMarcin K. <katzoo@github.mail>\nMarcin Kwiatkowski <marcin.kwiatkowski@hotmail.com>\nMarcin Szczepanski <marcins@gmail.com>\nMariano Desanze <protronm@gmail.com>\nMarjan <marjan.georgiev@gmail.com>\nMark Anderson <undernewmanagement@users.noreply.github.com>\nMark Funk <mfunk86@gmail.com>\nMark Hintz <markohintz@gmail.com>\nMark IJbema <markijbema@gmail.com>\nMark Murphy <murphy.mark@live.ca>\nMark Richardson <echo@fb.com>\nMark Rushakoff <mark@influxdb.com>\nMark Sun <sunmark14@gmail.com>\nMarlon Landaverde <milanlandaverde@gmail.com>\nMarshall Roch <mroch@fb.com>\nMartin Andert <mandert@gmail.com>\nMartin Hujer <mhujer@gmail.com>\nMartin Jul <martin@mjul.com>\nMartin Konicek <mkonicek@fb.com>\nMartin Mihaylov <martomi@users.noreply.github.com>\nMasaki KOBAYASHI <makky.4d6b.3f5@gmail.com>\nMathieu M-Gosselin <mathieumg@gmail.com>\nMathieu Savy <savy.mathieu@gmail.com>\nMatias Singers <mail@matiassingers.com>\nMatsunoki <himkt@klis.tsukuba.ac.jp>\nMatt Brookes <matt@brookes.net>\nMatt Dunn-Rankin <mdunnrankin@gmail.com>\nMatt Harrison <mt.harrison86@gmail.com>\nMatt Huggins <matt.huggins@gmail.com>\nMatt Stow <matt.stow@foxsports.com.au>\nMatt Zabriskie <mzabriskie@gmail.com>\nMatthew Dapena-Tretter <m@tthewwithanm.com>\nMatthew Herbst <mherbst@chegg.com>\nMatthew Hodgson <matthew@matrix.org>\nMatthew Johnston <matthewjohnston4@outlook.com>\nMatthew King <mking@users.noreply.github.com>\nMatthew Looi <looi.matthew@gmail.com>\nMatthew Miner <matthew@matthewminer.com>\nMatthias Le Brun <mlbli@me.com>\nMatti Nelimarkka <matti.nelimarkka@hiit.fi>\nMattijs Kneppers <mattijs@arttech.nl>\nMax F. Albrecht <1@178.is>\nMax Heiber <max.heiber@gmail.com>\nMax Stoiber <contact@mstoiber.com>\nMaxi Ferreira <charca@gmail.com>\nMaxim Abramchuk <MaximAbramchuck@gmail.com>\nMerrick Christensen <merrick.christensen@gmail.com>\nMert Kahyaoğlu <mertkahyaoglu93@gmail.com>\nMichael Chan <mijoch@gmail.com>\nMichael McDermott <michael@mgmcdermott.com>\nMichael Randers-Pehrson <michael.rp@gmail.com>\nMichael Ridgway <mridgway@yahoo-inc.com>\nMichael Warner <MichaelJWarner@hotmail.com>\nMichael Wiencek <mwtuea@gmail.com>\nMichael Ziwisky <mikezx@gmail.com>\nMichal Srb <xixixao@seznam.cz>\nMichelle Todd <himichelletodd@gmail.com>\nMihai Parparita <mihai.parparita@gmail.com>\nMike D Pilsbury <mike.pilsbury@gmail.com>\nMike Groseclose <mike.groseclose@gmail.com>\nMike Nordick <mnordick>\nMikolaj Dadela <mikolaj.dadela@hgv-online.de>\nMiles Johnson <mileswjohnson@gmail.com>\nMinwe LUO <minwe@yunshipei.com>\nMiorel Palii <miorel@fb.com>\nMorhaus <alexandre.kirszenberg@gmail.com>\nMoshe Kolodny <kolodny.github@gmail.com>\nMouad Debbar <mdebbar@fb.com>\nMurad <rogozhnikoff@users.noreply.github.com>\nMurray M. Moss <murray@mmoss.name>\nNadeesha Cabral <nadeesha.cabral@gmail.com>\nNaman Goel <naman34@gmail.com>\nNate Hunzaker <nate.hunzaker@gmail.com>\nNate Lee <nathaniel.jy.lee88@gmail.com>\nNathan Smith <NogsMPLS@users.noreply.github.com>\nNathan White <nw@nwhite.net>\nNee <944316342@qq.com>\nNeri Marschik <marschik_neri@cyberagent.co.jp>\nNguyen Truong Duy <truongduy134@yahoo.com>\nNicholas Bergson-Shilcock <me@nicholasbs.net>\nNicholas Clawson <nickclaw@users.noreply.github.com>\nNick Balestra <nickbalestra@users.noreply.github.com>\nNick Fitzgerald <fitzgen@gmail.com>\nNick Gavalas <njg57@cornell.edu>\nNick Merwin <nick@lemurheavy.com>\nNick Presta <nick@nickpresta.ca>\nNick Raienko <enaqxx@gmail.com>\nNick Thompson <ncthom91@gmail.com>\nNick Williams <WickyNilliams@users.noreply.github.com>\nNiklas Boström <nbostrom@gmail.com>\nNing Xia <ning-github@users.noreply.github.com>\nNiole Nelson <niolenelson@gmail.com>\nOiva Eskola <oiva.eskola@gmail.com>\nOleg <o.yanchinskiy@gmail.com>\nOleksii Markhovskyi <olexiy.markhovsky@gmail.com>\nOliver Zeigermann <oliver.zeigermann@gmail.com>\nOlivier Tassinari <Olivier.tassinari@gmail.com>\nOwen Coutts <owenc@fb.com>\nPablo Lacerda de Miranda <pablolm@yahoo-inc.com>\nPaolo Moretti <moretti@users.noreply.github.com>\nPascal Hartig <passy@twitter.com>\nPatrick <info@telepark.de>\nPatrick Laughlin <patrick@laughl.info>\nPatrick Stapleton <github@gdi2290.com>\nPaul Benigeri <me@benigeri.com>\nPaul Harper <benekastah@gmail.com>\nPaul O’Shannessy <paul@oshannessy.com>\nPaul Seiffert <paul.seiffert@gmail.com>\nPaul Shen <paul@mnml0.com>\nPedro Nauck <pedronauck@gmail.com>\nPete Hunt <floydophone@gmail.com>\nPeter Blazejewicz <peter.blazejewicz@gmail.com>\nPeter Cottle <pcottle@fb.com>\nPeter Jaros <peter.a.jaros@gmail.com>\nPeter Newnham <peter.newnham@appsbroker.com>\nPetri Lehtinen <petri@digip.org>\nPetri Lievonen <plievone@cc.hut.fi>\nPieter Vanderwerff <me@pieter.io>\nPouja Nikray <poujanik@gmail.com>\nPrathamesh Sonpatki <csonpatki@gmail.com>\nPrayag Verma <prayag.verma@gmail.com>\nPreston Parry <ClimbsRocks@users.noreply.github.com>\nRafael <rafael.garcia@clever.com>\nRafal Dittwald <rafal.dittwald@gmail.com>\nRainer Oviir <roviir@gmail.com>\nRajat Sehgal <rajatsehgal1988@gmail.com>\nRajiv Tirumalareddy <rajivtreddy@gmail.com>\nRam Kaniyur <quadrupleslap@users.noreply.github.com>\nRandall Randall <randall@randallsquared.com>\nRay <ray@tomo.im>\nRaymond Ha <raymond@shraymonks.com>\nReed Loden <reed@reedloden.com>\nRemko Tronçon <git@el-tramo.be>\nRichard D. Worth <rdworth@gmail.com>\nRichard Feldman <richard.t.feldman@gmail.com>\nRichard Kho <hello@richardkho.com>\nRichard Littauer <richard.littauer@gmail.com>\nRichard Livesey <Livesey7@hotmail.co.uk>\nRichard Wood <rwoodnz@gmail.com>\nRick Beerendonk <rick@beerendonk.com>\nRick Ford <rickfordrick@gmail.com>\nRiley Tomasek <riley.tomasek@gmail.com>\nRob Arnold <robarnold@cs.cmu.edu>\nRobert Binna <rbinna@gmail.com>\nRobert Knight <robert.knight@mendeley.com>\nRobert Sedovsek <robert.sedovsek@gmail.com>\nRobin Berjon <robin@berjon.com>\nRobin Frischmann <robin@rofrischmann.de>\nRoman Pominov <rpominov+github@gmail.com>\nRoman Vanesyan <roman.vanesyan@gmail.com>\nRuss <russwirtz@gmail.com>\nRyan Seddon <seddon.ryan@gmail.com>\nSahat Yalkabov <sakhat@gmail.com>\nSaif Hakim <saif@benchling.com>\nSaiichi Hashimoto <saiichihashimoto@gmail.com>\nSam Beveridge <sbeveridge@saltstack.com>\nSam Saccone <samccone@gmail.com>\nSam Selikoff <sam.selikoff@gmail.com>\nSamy Al Zahrani <samy@sadeem.net>\nSander Spies <sandermail@gmail.com>\nScott Burch <scott@bulldoginfo.com>\nScott Feeney <scott@oceanbase.org>\nSean Kinsey <oyvind@fb.com>\nSebastian Markbåge <sebastian@calyptus.eu>\nSebastian McKenzie <sebmck@gmail.com>\nSeoh Char <devthewild@gmail.com>\nSercan Eraslan <sercan.eraslan@sahibinden.com>\nSerg <undrdog@yandex.ru>\nSergey Generalov <sergey@genbit.ru>\nSergey Rubanov <chi187@gmail.com>\nSeyi Adebajo <hello@seyinanigans.com>\nShane O'Sullivan <shaneosullivan1@gmail.com>\nShaun Trennery <shaun.trennery@gmail.com>\nShihChi Huang <hhuang@netflix.com>\nShim Won <marocchino@gmail.com>\nShinnosuke Watanabe <snnskwtnb@gmail.com>\nShogun Sea <shogunsea08@gmail.com>\nShota Kubota <kubosho@users.noreply.github.com>\nShripad K <assortmentofsorts@gmail.com>\nSibi <psibi2000@gmail.com>\nSimen Bekkhus <sbekkhus91@gmail.com>\nSimon Højberg <r.hackr@gmail.com>\nSimon Welsh <simon@simon.geek.nz>\nSimone Vittori <hello@simonewebdesign.it>\nSoichiro Kawamura <mail@w-st.com>\nSophia Westwood <sophia@quip.com>\nSota Ohara <ohrst.18@gmail.com>\nSpencer Handley <spencerhandley@gmail.com>\nStefan Dombrowski <sdo451@gmail.com>\nStephen Murphy <smurphy3@apple.com>\nSterling Cobb <sterlingcobb@gmail.com>\nSteve Baker <_steve_@outlook.com>\nSteven Luscher <react@steveluscher.com>\nSteven Vachon <contact@svachon.com>\nStoyan Stefanov <ssttoo@ymail.com>\nSundeep Malladi <sundeep.malladi@gmail.com>\nSunny Juneja <me@sunnyjuneja.com>\nSven Helmberger <fforw@gmx.de>\nSverre Johansen <sverre.johansen@gmail.com>\nSébastien Lorber <lorber.sebastien@gmail.com>\nSławomir Laskowski <laskowski.box@gmail.com>\nTaeho Kim <dittos@gmail.com>\nTay Yang Shun <tay.yang.shun@gmail.com>\nTed Kim <ted@vcnc.co.kr>\nTengfei Guo <terryr3rd@yeah.net>\nTeodor Szente <teodor98sz@gmail.com>\nThomas Aylott <oblivious@subtlegradient.com>\nThomas Boyt <thomas.boyt@venmo.com>\nThomas Broadley <buriedunderbooks@hotmail.com>\nThomas Reggi <socialtr@gmail.com>\nThomas Röggla <t.roggla@cwi.nl>\nThomas Shaddox <thomas@heyzap.com>\nThomas Shafer <thomasjshafer@gmail.com>\nThomasCrvsr <crevoisier.thomas@gmail.com>\nTienchai Wirojsaksaree <tienchai@fb.com>\nTim Routowicz <troutowicz@gmail.com>\nTim Schaub <tschaub@users.noreply.github.com>\nTimothy Yung <yungsters@gmail.com>\nTimur Carpeev <timuric@users.noreply.github.com>\nTobias Reiss <tag+github@basecode.de>\nTom Duncalf <tom@tomduncalf.com>\nTom Haggie <thaggie@gmail.com>\nTom Hauburger <thauburger@gmail.com>\nTom MacWright <tom@macwright.org>\nTom Occhino <tomocchino@gmail.com>\nTomasz Kołodziejski <tkolodziejski@gmail.com>\nTomoya Suzuki <tmysz.dev@gmail.com>\nTony Spiro <tspiro@tonyspiro.com>\nToru Kobayashi <koba0004@gmail.com>\nTrinh Hoang Nhu <trinhhoangnhu@gmail.com>\nTsung Hung <thung@me.com>\nTyler Brock <tyler.brock@gmail.com>\nUstin Zarubin <ustin.zarubin@campusbellhops.com>\nVadim Chernysh <chernysh.vadim@gmail.com>\nVarun Rau <varunrau@gmail.com>\nVasiliy Loginevskiy <Yeti.or@gmail.com>\nVictor Alvarez <v.alvarez312@gmail.com>\nVictor Homyakov <vkhomyackov@gmail.com>\nVictor Koenders <victor.koenders@gmail.com>\nVille Immonen <ville.immonen@iki.fi>\nVincent Riemer <vincentriemer@gmail.com>\nVincent Siao <vincent@asana.com>\nVipul A M <vipulnsward@gmail.com>\nVitaly Kramskikh <vkramskikh@gmail.com>\nVitor Balocco <vitorbal@gmail.com>\nVjeux <vjeuxx@gmail.com>\nVolkan Unsal <spocksplanet@gmail.com>\nWander Wang <wander.wang@ismole.com>\nWayne Larsen <wayne@larsen.st>\nWickyNilliams <WickyNilliams@MBA>\nWincent Colaiuta <win@wincent.com>\nWout Mertens <Wout.Mertens@gmail.com>\nXavier Morel <xmo-odoo@users.noreply.github.com>\nXuefengWu <benewu@gmail.com>\nYakov Dalinchuk <murashki@users.noreply.github.com>\nYasar icli <hello@yasaricli.com>\nYouBao Nong <noyobo@gmail.com>\nYuichi Hagio <yhagio87@gmail.com>\nYuriy Dybskiy <yuriy@dybskiy.com>\nYutaka Nakajima <nakazye@gmail.com>\nYuval Dekel <thedekel@fb.com>\nZach Bruggeman <mail@bruggie.com>\nZach Ramaekers <zramaekers@gmail.com>\nZacharias <zachasme@users.noreply.github.com>\nZeke Sikelianos <zeke@sikelianos.com>\nZhangjd <zhang.jd@qq.com>\nadraeth <jerzy.mirecki@gmail.com>\narush <arush@ilovebrands.net>\nbrafdlog <brafdlog@gmail.com>\nchen <kikyous@163.com>\nclariroid <clarinette.uranus@gmail.com>\nclaudiopro <claudio.procida@gmail.com>\ncutbko <kutsenko.eugene@hotmail.com>\ndavidxi <davidgraycn@gmail.com>\ndongmeng.ldm <dongmeng.ldm@alibaba-inc.com>\niamchenxin <iamchenxin@gmail.com>\niamdoron <doronpagot@gmail.com>\niawia002 <z2d@jifangcheng.com>\nimagentleman <imagentlemail@gmail.com>\nkoh-taka <koh-taka@users.noreply.github.com>\nkohashi85 <hako584@gmail.com>\nlaiso <laiso@lai.so>\nleeyoungalias <leeyoungalias@qq.com>\nli.li <li.li@ele.me>\nmaxprafferty <maxprafferty@gmail.com>\nrgarifullin <ringarifullin@gmail.com>\nsongawee <dennis@songawee.com>\nsugarshin <shinsugar@gmail.com>\nwali-s <ahmad3y2k@hotmail.com>\nyiminghe <yiminghe@gmail.com>\nyoumoo <youmoolee@gmail.com>\nzhangjg <jinguozhang@qq.com>\nzwhitchcox <zwhitchcox@gmail.com>\nÁrni Hermann Reynisson <arnihr@gmail.com>\n元彦 <yuanyan@users.noreply.github.com>\n凌恒 <jiakun.dujk@alibaba-inc.com>\n张敏 <cookfront@gmail.com>\n"
  },
  {
    "path": "docs/articles/intro_reactR_files/react-17.0.0/LICENSE.txt",
    "content": "MIT License\n\nCopyright (c) 2013-present, Facebook, Inc.\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"
  },
  {
    "path": "docs/articles/intro_reactR_files/react-18.2.0/AUTHORS",
    "content": "39 <8398a7@gmail.com>\nAaron Franks <aaron.franks@gmail.com>\nAaron Gelter <aaron.gelter@harman.com>\nAdam Bloomston <adam@glitterfram.es>\nAdam Krebs <amk528@cs.nyu.edu>\nAdam Mark <adammark75@gmail.com>\nAdam Solove <asolove@gmail.com>\nAdam Timberlake <adam.timberlake@gmail.com>\nAdam Zapletal <adamzap@gmail.com>\nAhmad Wali Sidiqi <wali-s@users.noreply.github.com>\nAlan Plum <me@pluma.io>\nAlan Souza <alansouzati@gmail.com>\nAlan deLevie <adelevie@gmail.com>\nAlastair Hole <afhole@gmail.com>\nAlex <ultrafez@users.noreply.github.com>\nAlex Boatwright <drdelambre@gmail.com>\nAlex Boyd <alex@opengroove.org>\nAlex Dajani <xelad1@gmail.com>\nAlex Lopatin <alex@alexlopatin.com>\nAlex Mykyta <dancingwithcows@gmail.com>\nAlex Pien <alexpien@gmail.com>\nAlex Smith <iqwz@ya.ru>\nAlex Zelenskiy <azelenskiy@fb.com>\nAlexander Shtuchkin <ashtuchkin@gmail.com>\nAlexander Solovyov <alexander@solovyov.net>\nAlexander Tseung <alextsg@gmail.com>\nAlexandre Gaudencio <shahor@shahor.fr>\nAlexey Raspopov <avenger7x13@gmail.com>\nAlexey Shamrin <shamrin@gmail.com>\nAli Ukani <ali.ukani@gmail.com>\nAndre Z Sanchez <andrezacsanchez@gmail.com>\nAndreas Savvides <asavvides@twitter.com>\nAndreas Svensson <andreas@syranide.com>\nAndres Kalle <mjomble@gmail.com>\nAndres Suarez <zertosh@gmail.com>\nAndrew Clark <acdlite@me.com>\nAndrew Cobby <cobbweb@users.noreply.github.com>\nAndrew Davey <andrew@equin.co.uk>\nAndrew Henderson <andrew.m.henderson@gmail.com>\nAndrew Kulakov <avk@8xx8.ru>\nAndrew Rasmussen <andras@fb.com>\nAndrew Sokolov <asokolov@atlassian.com>\nAndrew Zich <azich@fb.com>\nAndrey Popp <8mayday@gmail.com>\nAnthony van der Hoorn <anthony.vanderhoorn@gmail.com>\nAnto Aravinth <anto.aravinth.cse@gmail.com>\nAntonio Ruberto <anto.ruberto@gmail.com>\nAntti Ahti <antti.ahti@gmail.com>\nAnuj Tomar <ankuto@gmail.com>\nAoDev <AoDev@users.noreply.github.com>\nApril Arcus <april.arcus@gmail.com>\nAreeb Malik <areeb.malik91@gmail.com>\nAria Buckles <aria@khanacademy.org>\nAria Stewart <aredridel@dinhe.net>\nArian Faurtosh <arian@icloud.com>\nArtem Nezvigin <artem@artnez.com>\nAustin Wright <aaa@bzfx.net>\nAyman Osman <aymano.osman@gmail.com>\nBaraa Hamodi <bhamodi@uwaterloo.ca>\nBartosz Kaszubowski <gosimek@gmail.com>\nBasarat Ali Syed <basaratali@gmail.com>\nBattaile Fauber <battaile@gmail.com>\nBeau Smith <beau@beausmith.com>\nBen Alpert <ben@benalpert.com>\nBen Anderson <banderson@constantcontact.com>\nBen Brooks <ben@benbrooks.net>\nBen Foxall <benfoxall@gmail.com>\nBen Halpern <bendhalpern@gmail.com>\nBen Jaffe <jaffe.ben@gmail.com>\nBen Moss <ben@mossity.com>\nBen Newman <bn@cs.stanford.edu>\nBen Ripkens <bripkens.dev@gmail.com>\nBenjamin Keen <ben.keen@gmail.com>\nBenjamin Leiken <benleiken@gmail.com>\nBenjamin Woodruff <github@benjam.info>\nBenjy Cui <benjytrys@gmail.com>\nBill Blanchard <bill@plumbdev.com>\nBill Fisher <fisherwebdev@gmail.com>\nBlaine Hatab <jbhatab@gmail.com>\nBlaine Kasten <blainekasten@gmail.com>\nBob Eagan <bob@synapsestudios.com>\nBob Ralian <bob.ralian@gmail.com>\nBob Renwick <bob.renwick@gmail.com>\nBobby <puppybytes@gmail.com>\nBojan Mihelac <bmihelac@mihelac.org>\nBradley Spaulding <brad.spaulding@gmail.com>\nBrandon Bloom <brandon@brandonbloom.name>\nBrandon Tilley <brandon@brandontilley.com>\nBrenard Cubacub <bcbcb@users.noreply.github.com>\nBrian Cooke <bri@bricooke.com>\nBrian Holt <btholt@gmail.com>\nBrian Hsu <brianhsu@Brians-MacBook-Pro.local>\nBrian Kim <briankimpossible@gmail.com>\nBrian Kung <brian@callmekung.com>\nBrian Reavis <brian@thirdroute.com>\nBrian Rue <brian@rollbar.com>\nBruno Škvorc <bruno@skvorc.me>\nCam Song <neosoyn@gmail.com>\nCam Spiers <camspiers@gmail.com>\nCameron Chamberlain <git@camjc.com>\nCameron Matheson <cameron@instructure.com>\nCarter Chung <carterchung@users.noreply.github.com>\nCassus Adam Banko <banko.adam@gmail.com>\nCat Chen <catchen@fb.com>\nCedric Sohrauer <cedric.sohrauer@infopark.de>\nCesar William Alvarenga <cesarwbr@gmail.com>\nChangsoon Bok <winmain@gmail.com>\nCharles Marsh <charlie@khanacademy.org>\nChase Adams <realchaseadams@gmail.com>\nCheng Lou <chenglou92@gmail.com>\nChitharanjan Das <das.chitharanjan@gmail.com>\nChris Bolin <bolin.chris@gmail.com>\nChris Grovers <chrisgrovers@users.noreply.github.com>\nChris Ha <chriskevinha@gmail.com>\nChris Rebert <github@rebertia.com>\nChris Sciolla <csciolla1@gmail.com>\nChristian Alfoni <christianalfoni@gmail.com>\nChristian Oliff <christianoliff@yahoo.com>\nChristian Roman <chroman16@gmail.com>\nChristoffer Sawicki <christoffer.sawicki@gmail.com>\nChristoph Pojer <christoph.pojer@gmail.com>\nChristopher Monsanto <chris@monsan.to>\nClay Allsopp <clay.allsopp@gmail.com>\nConnor McSheffrey <c@conr.me>\nConor Hastings <hastings.conorm@gmail.com>\nCory House <housecor@gmail.com>\nCotton Hou <himcotton@gmail.com>\nCraig Akimoto <strawbrary@users.noreply.github.com>\nCristovao Verstraeten <cristovao@apleasantview.com>\nDamien Pellier <dpellier@leadformance.com>\nDan Abramov <dan.abramov@gmail.com>\nDan Fox <iamdanfox@gmail.com>\nDan Schafer <dschafer@fb.com>\nDaniel Carlsson <daniel.carlsson.1987@gmail.com>\nDaniel Cousens <dcousens@users.noreply.github.com>\nDaniel Friesen <daniel@nadir-seen-fire.com>\nDaniel Gasienica <daniel@gasienica.ch>\nDaniel Hejl <daniel.hejl@hotmail.com>\nDaniel Hejl <hejldaniel@gmail.com>\nDaniel Lo Nigro <daniel@dan.cx>\nDaniel Mané <danmane@gmail.com>\nDaniel Miladinov <dmiladinov@wingspan.com>\nDaniel Rodgers-Pryor <djrodgerspryor@gmail.com>\nDaniel Schonfeld <daniel@schonfeld.org>\nDanny Ben-David <dannybd@fb.com>\nDarcy <smadad@me.com>\nDaryl Lau <daryl@weak.io>\nDarío Javier Cravero <dario@uxtemple.com>\nDave Galbraith <dave@jut.io>\nDavid Baker <djbaker2@gmail.com>\nDavid Ed Mellum <david@edmellum.com>\nDavid Goldberg <gberg1@users.noreply.github.com>\nDavid Granado <davidjgranado@gmail.com>\nDavid Greenspan <dgreenspan@alum.mit.edu>\nDavid Hellsing <david@aino.se>\nDavid Hu <davidhu91@gmail.com>\nDavid Khourshid <davidkpiano@gmail.com>\nDavid Mininger <dmininger@gmail.com>\nDavid Neubauer <davidneub@gmail.com>\nDavid Percy <davetp425@gmail.com>\nDean Shi <dnshi@users.noreply.github.com>\nDenis Sokolov <denis@sokolov.cc>\nDeniss Jacenko <deniss.jacenko+github@gmail.com>\nDennis Johnson <djohnson@rallydev.com>\nDevon Blandin <dblandin@gmail.com>\nDevon Harvey <devonharvey@gmail.com>\nDmitrii Abramov <dmitrii@rheia.us>\nDmitriy Rozhkov <dmitriy.rozhkov@xing.com>\nDmitry Blues <dmitri.blyus@gmail.com>\nDmitry Mazuro <dmitry.mazuro@icloud.com>\nDomenico Matteo <matteo.domenico@gmail.com>\nDon Abrams <donabrams@gmail.com>\nDongsheng Liu <bellanchor@gmail.com>\nDustan Kasten <dustan.kasten@gmail.com>\nDustin Getz <dgetz@wingspan.com>\nDylan Harrington <dylanharrington@gmail.com>\nEduardo Garcia <emumaniacx@gmail.com>\nEdvin Erikson <edvin@rocketblast.com>\nElaine Fang <elainefang@Elaines-MacBook-Pro.local>\nEnguerran <engcolson@gmail.com>\nEric Clemmons <eric@smarterspam.com>\nEric Eastwood <contact@ericeastwood.com>\nEric Florenzano <floguy@gmail.com>\nEric O'Connell <eric.oconnell@idealist.org>\nEric Schoffstall <contra@wearefractal.com>\nErik Harper <eharper@mixpo.com>\nEspen Hovlandsdal <rexxars@gmail.com>\nEvan Coonrod <evan@paloalto.com>\nEvan Vosberg <evanvosberg@urban.to>\nFabio M. Costa <fabiomcosta@gmail.com>\nFederico Rampazzo <frampone@gmail.com>\nFelipe Oliveira Carvalho <felipekde@gmail.com>\nFelix Gnass <fgnass@gmail.com>\nFelix Kling <felix.kling@gmx.net>\nFernando Correia <fernando@servicero.com>\nFrankie Bagnardi <f.bagnardi@gmail.com>\nFrançois-Xavier Bois <fxbois@gmail.com>\nFred Zhao <fredz@fb.com>\nFreddy Rangel <frederick.rangel@gmail.com>\nFyodor Ivanishchev <cbrwizard@gmail.com>\nG Scott Olson <gscottolson@gmail.com>\nG. Kay Lee <balancetraveller+github@gmail.com>\nGabe Levi <gabelevi@gmail.com>\nGajus Kuizinas <g.kuizinas@anuary.com>\nGareth Nicholson <gareth.nic@gmail.com>\nGarren Smith <garren.smith@gmail.com>\nGavin McQuistin <gavin@kickfiredesign.com>\nGeert Pasteels <geert.pasteels@gmail.com>\nGeert-Jan Brits <gbrits@gmail.com>\nGeorge A Sisco III <george.sisco@gmail.com>\nGeorgii Dolzhykov <thorn.mailbox@gmail.com>\nGilbert <gilbertbgarza@gmail.com>\nGlen Mailer <glenjamin@gmail.com>\nGrant Timmerman <granttimmerman@gmail.com>\nGreg Hurrell <glh@fb.com>\nGreg Perkins <gregrperkins@fb.com>\nGreg Roodt <groodt@gmail.com>\nGregory <g.marcilhacy@gmail.com>\nGuangqiang Dong <gqdong@fb.com>\nGuido Bouman <m@guido.vc>\nHarry Hull <harry.hull1@gmail.com>\nHarry Marr <harry.marr@gmail.com>\nHarry Moreno <morenoh149@gmail.com>\nHarshad Sabne <harshadsabne@users.noreply.github.com>\nHekar Khani <hekark@gmail.com>\nHendrik Swanepoel <hendrik.swanepoel@gmail.com>\nHenrik Nyh <henrik@nyh.se>\nHenry Wong <henryw4k@gmail.com>\nHenry Zhu <hi@henryzoo.com>\nHideo Matsumoto <hideo-m@pekeq.com>\nHou Chia <kchia87@gmail.com>\nHuang-Wei Chang <chang.huangwei.01@gmail.com>\nHugo Agbonon <hugo@agbonon.fr>\nHugo Jobling <me@thisishugo.com>\nHyeock Kwon <doublus@gmail.com>\nHéliton Nordt <hnordt@hnordt.com>\nIan Obermiller <ian@obermillers.com>\nIgnacio Carbajo <icarbajop@gmail.com>\nIgor Scekic <igorscekic2@gmail.com>\nIlia Pavlenkov <dortonway@gmail.com>\nIlya Shuklin <ilya.shuklin@gmail.com>\nIlyá Belsky <gelias.gbelsky@gmail.com>\nIngvar Stepanyan <me@rreverser.com>\nIrae Carvalho <irae@irae.pro.br>\nIsaac Salier-Hellendag <isaac@fb.com>\nIurii Kucherov <yuyokk@gmail.com>\nIvan Kozik <ivan@ludios.org>\nIvan Krechetov <ikr@ikr.su>\nIvan Vergiliev <ivan.vergiliev@gmail.com>\nJ. Andrew Brassington <jabbrass@zoho.com>\nJ. Renée Beach <splendidnoise@gmail.com>\nJD Isaacks <jd@jisaacks.com>\nJJ Weber <jj.weber@gmail.com>\nJW <JW00000@gmail.com>\nJack Zhang <jzhang31191@gmail.com>\nJackie Wung <jacquelinewung@gmail.com>\nJacob Gable <jacob.gable@gmail.com>\nJacob Greenleaf <jake@imgur.com>\nJae Hun Ro <jhr24@duke.edu>\nJaeho Lee <me@jaeholee.org>\nJaime Mingo <j.mingov@3boll.com>\nJake Worth <jakeworth82@gmail.com>\nJakub Malinowski <jakubmal@gmail.com>\nJames <james@mystrata.com>\nJames Brantly <james@jbrantly.com>\nJames Burnett <jtburnett@tribune.com>\nJames Friend <james@jsdf.co>\nJames Ide <ide@fb.com>\nJames Long <longster@gmail.com>\nJames Pearce <jpearce@fb.com>\nJames Seppi <james.seppi@gmail.com>\nJames South <james_south@hotmail.com>\nJames Wen <jrw2175@columbia.edu>\nJamie Wong <jamie.lf.wong@gmail.com>\nJamis Charles <jacharles@paypal.com>\nJamison Dance <jergason@gmail.com>\nJan Hancic <jan.hancic@gmail.com>\nJan Kassens <jan@kassens.net>\nJan Raasch <jan@janraasch.com>\nJared Forsyth <jared@jaredforsyth.com>\nJason <usaman2010us@gmail.com>\nJason Bonta <jbonta@gmail.com>\nJason Ly <jason.ly@gmail.com>\nJason Miller <aidenn0@geocities.com>\nJason Quense <monastic.panic@gmail.com>\nJason Trill <jason@jasontrill.com>\nJason Webster <jason@metalabdesign.com>\nJay Jaeho Lee <jay@spoqa.com>\nJean Lauliac <lauliacj@gmail.com>\nJed Watson <jed.watson@me.com>\nJeff Barczewski <jeff.barczewski@gmail.com>\nJeff Carpenter <gcarpenterv@gmail.com>\nJeff Chan <jefftchan@gmail.com>\nJeff Hicken <jhicken@gmail.com>\nJeff Kolesky <github@kolesky.com>\nJeff Morrison <jeff@anafx.com>\nJeff Welch <whatthejeff@gmail.com>\nJeffrey Lin <lin.jeffrey@gmail.com>\nJeremy Fairbank <elpapapollo@gmail.com>\nJesse Skinner <jesse@thefutureoftheweb.com>\nJignesh Kakadiya <jigneshhk1992@gmail.com>\nJim OBrien <jimobrien930@gmail.com>\nJim Sproch <jsproch@fb.com>\nJimmy Jea <jimjea@gmail.com>\nJing Chen <jingc@fb.com>\nJinwoo Oh <arkist@gmail.com>\nJinxiu Lee <lee.jinxiu@gmail.com>\nJiyeon Seo <zzzeons@gmail.com>\nJody McIntyre <scjody@modernduck.com>\nJoe Critchley <joecritch@gmail.com>\nJoe Stein <joeaarons@gmail.com>\nJoel Auterson <joel.auterson@googlemail.com>\nJohannes Baiter <johannes.baiter@gmail.com>\nJohannes Emerich <johannes@emerich.de>\nJohannes Lumpe <johannes@johanneslumpe.de>\nJohn Heroy <johnheroy@users.noreply.github.com>\nJohn Ryan <tjfryan@fb.com>\nJohn Watson <jwatson@fb.com>\nJohn-David Dalton <john.david.dalton@gmail.com>\nJon Beebe <jon.beebe@daveramsey.com>\nJon Chester <jonchester@fb.com>\nJon Hester <jon.d.hester@gmail.com>\nJon Madison <jon@tfftech.com>\nJon Scott Clark <jonscottclark@gmail.com>\nJon Tewksbury <jontewks@gmail.com>\nJonas Enlund <jonas.enlund@gmail.com>\nJonas Gebhardt <jonas@instagram.com>\nJonathan Hsu <jhiswin@gmail.com>\nJonathan Persson <persson.jonathan@gmail.com>\nJordan Harband <ljharb@gmail.com>\nJordan Walke <jordojw@gmail.com>\nJorrit Schippers <jorrit@ncode.nl>\nJoseph Nudell <joenudell@gmail.com>\nJoseph Savona <joesavona@fb.com>\nJosh Bassett <josh.bassett@gmail.com>\nJosh Duck <josh@fb.com>\nJosh Perez <josh.perez@airbnb.com>\nJosh Yudaken <yud@instagram.com>\nJoshua Evans <joshua.evans@quantified.co>\nJoshua Go <joshuago@gmail.com>\nJoshua Goldberg <jsgoldberg90@gmail.com>\nJoshua Ma <me@joshma.com>\nJoão Valente <filipevalente@gmail.com>\nJuan Serrano <germ13@users.noreply.github.com>\nJulen Ruiz Aizpuru <julenx@gmail.com>\nJulian Viereck <julian.viereck@gmail.com>\nJulien Bordellier <git@julienbordellier.com>\nJulio Lopez <ljuliom@gmail.com>\nJun Wu <quark@lihdd.net>\nJuraj Dudak <jdudak@fb.com>\nJustas Brazauskas <brazauskasjustas@gmail.com>\nJustin Jaffray <justinjaffray@khanacademy.org>\nJustin Robison <jrobison151@gmail.com>\nJustin Woo <moomoowoo@gmail.com>\nKale <krydrogen@gmail.com>\nKamron Batman <kamronbatman@users.noreply.github.com>\nKarl Mikkelsen <karl@kingkarl.com>\nKarpich Dmitry <karpich@gollard.ru>\nKeito Uchiyama <projects@keito.me>\nKen Powers <ken@kenpowers.net>\nKent C. Dodds <kent@doddsfamily.us>\nKevin Cheng <09chengk@gmail.com>\nKevin Coughlin <kevintcoughlin@gmail.com>\nKevin Huang <huang.kev@gmail.com>\nKevin Lau <thekevlau@gmail.com>\nKevin Old <kevin@kevinold.com>\nKevin Robinson <krobinson@twitter.com>\nKewei Jiang <jkewei328@hotmail.com>\nKier Borromeo <seraphipod@gmail.com>\nKimCoding <jeokrang@hanmail.net>\nKirk Steven Hansen <hanski07@kirk-hansens-macbook.local>\nKit Randel <kit@nocturne.net.nz>\nKohei TAKATA <kt.koheitakata@gmail.com>\nKoo Youngmin <youngmin@youngminz.kr>\nKrystian Karczewski <karcz.k@gmail.com>\nKunal Mehta <k.mehta@berkeley.edu>\nKurt Ruppel <me@kurtruppel.com>\nKyle Kelley <rgbkrk@gmail.com>\nKyle Mathews <mathews.kyle@gmail.com>\nLaurence Rowe <l@lrowe.co.uk>\nLaurent Etiemble <laurent.etiemble@monobjc.net>\nLee Byron <lee@leebyron.com>\nLee Jaeyoung <jaeyoung@monodiary.net>\nLei <tendant@gmail.com>\nLeland Richardson <leland.m.richardson@gmail.com>\nLeon Fedotov <LeonFedotov@users.noreply.github.com>\nLeon Yip <lyip1992@users.noreply.github.com>\nLeonardo YongUk Kim <dalinaum@gmail.com>\nLevi Buzolic <levibuzolic@gmail.com>\nLevi McCallum <levi@levimccallum.com>\nLily <qvang.j@gmail.com>\nLogan Allen <loganfynne@gmail.com>\nLovisa Svallingson <lovisasvallingson@gmail.com>\nLudovico Fischer <livrerie@gmail.com>\nLuigy Leon <luichi.19@gmail.com>\nLuke Horvat <lukehorvat@gmail.com>\nMIKAMI Yoshiyuki <yoshuki@saikyoline.jp>\nMaher Beg <maherbeg@gmail.com>\nManas <prometheansacrifice@gmail.com>\nMarcin K. <katzoo@github.mail>\nMarcin Kwiatkowski <marcin.kwiatkowski@hotmail.com>\nMarcin Szczepanski <marcins@gmail.com>\nMariano Desanze <protronm@gmail.com>\nMarjan <marjan.georgiev@gmail.com>\nMark Anderson <undernewmanagement@users.noreply.github.com>\nMark Funk <mfunk86@gmail.com>\nMark Hintz <markohintz@gmail.com>\nMark IJbema <markijbema@gmail.com>\nMark Murphy <murphy.mark@live.ca>\nMark Richardson <echo@fb.com>\nMark Rushakoff <mark@influxdb.com>\nMark Sun <sunmark14@gmail.com>\nMarlon Landaverde <milanlandaverde@gmail.com>\nMarshall Roch <mroch@fb.com>\nMartin Andert <mandert@gmail.com>\nMartin Hujer <mhujer@gmail.com>\nMartin Jul <martin@mjul.com>\nMartin Konicek <mkonicek@fb.com>\nMartin Mihaylov <martomi@users.noreply.github.com>\nMasaki KOBAYASHI <makky.4d6b.3f5@gmail.com>\nMathieu M-Gosselin <mathieumg@gmail.com>\nMathieu Savy <savy.mathieu@gmail.com>\nMatias Singers <mail@matiassingers.com>\nMatsunoki <himkt@klis.tsukuba.ac.jp>\nMatt Brookes <matt@brookes.net>\nMatt Dunn-Rankin <mdunnrankin@gmail.com>\nMatt Harrison <mt.harrison86@gmail.com>\nMatt Huggins <matt.huggins@gmail.com>\nMatt Stow <matt.stow@foxsports.com.au>\nMatt Zabriskie <mzabriskie@gmail.com>\nMatthew Dapena-Tretter <m@tthewwithanm.com>\nMatthew Herbst <mherbst@chegg.com>\nMatthew Hodgson <matthew@matrix.org>\nMatthew Johnston <matthewjohnston4@outlook.com>\nMatthew King <mking@users.noreply.github.com>\nMatthew Looi <looi.matthew@gmail.com>\nMatthew Miner <matthew@matthewminer.com>\nMatthias Le Brun <mlbli@me.com>\nMatti Nelimarkka <matti.nelimarkka@hiit.fi>\nMattijs Kneppers <mattijs@arttech.nl>\nMax F. Albrecht <1@178.is>\nMax Heiber <max.heiber@gmail.com>\nMax Stoiber <contact@mstoiber.com>\nMaxi Ferreira <charca@gmail.com>\nMaxim Abramchuk <MaximAbramchuck@gmail.com>\nMerrick Christensen <merrick.christensen@gmail.com>\nMert Kahyaoğlu <mertkahyaoglu93@gmail.com>\nMichael Chan <mijoch@gmail.com>\nMichael McDermott <michael@mgmcdermott.com>\nMichael Randers-Pehrson <michael.rp@gmail.com>\nMichael Ridgway <mridgway@yahoo-inc.com>\nMichael Warner <MichaelJWarner@hotmail.com>\nMichael Wiencek <mwtuea@gmail.com>\nMichael Ziwisky <mikezx@gmail.com>\nMichal Srb <xixixao@seznam.cz>\nMichelle Todd <himichelletodd@gmail.com>\nMihai Parparita <mihai.parparita@gmail.com>\nMike D Pilsbury <mike.pilsbury@gmail.com>\nMike Groseclose <mike.groseclose@gmail.com>\nMike Nordick <mnordick>\nMikolaj Dadela <mikolaj.dadela@hgv-online.de>\nMiles Johnson <mileswjohnson@gmail.com>\nMinwe LUO <minwe@yunshipei.com>\nMiorel Palii <miorel@fb.com>\nMorhaus <alexandre.kirszenberg@gmail.com>\nMoshe Kolodny <kolodny.github@gmail.com>\nMouad Debbar <mdebbar@fb.com>\nMurad <rogozhnikoff@users.noreply.github.com>\nMurray M. Moss <murray@mmoss.name>\nNadeesha Cabral <nadeesha.cabral@gmail.com>\nNaman Goel <naman34@gmail.com>\nNate Hunzaker <nate.hunzaker@gmail.com>\nNate Lee <nathaniel.jy.lee88@gmail.com>\nNathan Smith <NogsMPLS@users.noreply.github.com>\nNathan White <nw@nwhite.net>\nNee <944316342@qq.com>\nNeri Marschik <marschik_neri@cyberagent.co.jp>\nNguyen Truong Duy <truongduy134@yahoo.com>\nNicholas Bergson-Shilcock <me@nicholasbs.net>\nNicholas Clawson <nickclaw@users.noreply.github.com>\nNick Balestra <nickbalestra@users.noreply.github.com>\nNick Fitzgerald <fitzgen@gmail.com>\nNick Gavalas <njg57@cornell.edu>\nNick Merwin <nick@lemurheavy.com>\nNick Presta <nick@nickpresta.ca>\nNick Raienko <enaqxx@gmail.com>\nNick Thompson <ncthom91@gmail.com>\nNick Williams <WickyNilliams@users.noreply.github.com>\nNiklas Boström <nbostrom@gmail.com>\nNing Xia <ning-github@users.noreply.github.com>\nNiole Nelson <niolenelson@gmail.com>\nOiva Eskola <oiva.eskola@gmail.com>\nOleg <o.yanchinskiy@gmail.com>\nOleksii Markhovskyi <olexiy.markhovsky@gmail.com>\nOliver Zeigermann <oliver.zeigermann@gmail.com>\nOlivier Tassinari <Olivier.tassinari@gmail.com>\nOwen Coutts <owenc@fb.com>\nPablo Lacerda de Miranda <pablolm@yahoo-inc.com>\nPaolo Moretti <moretti@users.noreply.github.com>\nPascal Hartig <passy@twitter.com>\nPatrick <info@telepark.de>\nPatrick Laughlin <patrick@laughl.info>\nPatrick Stapleton <github@gdi2290.com>\nPaul Benigeri <me@benigeri.com>\nPaul Harper <benekastah@gmail.com>\nPaul O’Shannessy <paul@oshannessy.com>\nPaul Seiffert <paul.seiffert@gmail.com>\nPaul Shen <paul@mnml0.com>\nPedro Nauck <pedronauck@gmail.com>\nPete Hunt <floydophone@gmail.com>\nPeter Blazejewicz <peter.blazejewicz@gmail.com>\nPeter Cottle <pcottle@fb.com>\nPeter Jaros <peter.a.jaros@gmail.com>\nPeter Newnham <peter.newnham@appsbroker.com>\nPetri Lehtinen <petri@digip.org>\nPetri Lievonen <plievone@cc.hut.fi>\nPieter Vanderwerff <me@pieter.io>\nPouja Nikray <poujanik@gmail.com>\nPrathamesh Sonpatki <csonpatki@gmail.com>\nPrayag Verma <prayag.verma@gmail.com>\nPreston Parry <ClimbsRocks@users.noreply.github.com>\nRafael <rafael.garcia@clever.com>\nRafal Dittwald <rafal.dittwald@gmail.com>\nRainer Oviir <roviir@gmail.com>\nRajat Sehgal <rajatsehgal1988@gmail.com>\nRajiv Tirumalareddy <rajivtreddy@gmail.com>\nRam Kaniyur <quadrupleslap@users.noreply.github.com>\nRandall Randall <randall@randallsquared.com>\nRay <ray@tomo.im>\nRaymond Ha <raymond@shraymonks.com>\nReed Loden <reed@reedloden.com>\nRemko Tronçon <git@el-tramo.be>\nRichard D. Worth <rdworth@gmail.com>\nRichard Feldman <richard.t.feldman@gmail.com>\nRichard Kho <hello@richardkho.com>\nRichard Littauer <richard.littauer@gmail.com>\nRichard Livesey <Livesey7@hotmail.co.uk>\nRichard Wood <rwoodnz@gmail.com>\nRick Beerendonk <rick@beerendonk.com>\nRick Ford <rickfordrick@gmail.com>\nRiley Tomasek <riley.tomasek@gmail.com>\nRob Arnold <robarnold@cs.cmu.edu>\nRobert Binna <rbinna@gmail.com>\nRobert Knight <robert.knight@mendeley.com>\nRobert Sedovsek <robert.sedovsek@gmail.com>\nRobin Berjon <robin@berjon.com>\nRobin Frischmann <robin@rofrischmann.de>\nRoman Pominov <rpominov+github@gmail.com>\nRoman Vanesyan <roman.vanesyan@gmail.com>\nRuss <russwirtz@gmail.com>\nRyan Seddon <seddon.ryan@gmail.com>\nSahat Yalkabov <sakhat@gmail.com>\nSaif Hakim <saif@benchling.com>\nSaiichi Hashimoto <saiichihashimoto@gmail.com>\nSam Beveridge <sbeveridge@saltstack.com>\nSam Saccone <samccone@gmail.com>\nSam Selikoff <sam.selikoff@gmail.com>\nSamy Al Zahrani <samy@sadeem.net>\nSander Spies <sandermail@gmail.com>\nScott Burch <scott@bulldoginfo.com>\nScott Feeney <scott@oceanbase.org>\nSean Kinsey <oyvind@fb.com>\nSebastian Markbåge <sebastian@calyptus.eu>\nSebastian McKenzie <sebmck@gmail.com>\nSeoh Char <devthewild@gmail.com>\nSercan Eraslan <sercan.eraslan@sahibinden.com>\nSerg <undrdog@yandex.ru>\nSergey Generalov <sergey@genbit.ru>\nSergey Rubanov <chi187@gmail.com>\nSeyi Adebajo <hello@seyinanigans.com>\nShane O'Sullivan <shaneosullivan1@gmail.com>\nShaun Trennery <shaun.trennery@gmail.com>\nShihChi Huang <hhuang@netflix.com>\nShim Won <marocchino@gmail.com>\nShinnosuke Watanabe <snnskwtnb@gmail.com>\nShogun Sea <shogunsea08@gmail.com>\nShota Kubota <kubosho@users.noreply.github.com>\nShripad K <assortmentofsorts@gmail.com>\nSibi <psibi2000@gmail.com>\nSimen Bekkhus <sbekkhus91@gmail.com>\nSimon Højberg <r.hackr@gmail.com>\nSimon Welsh <simon@simon.geek.nz>\nSimone Vittori <hello@simonewebdesign.it>\nSoichiro Kawamura <mail@w-st.com>\nSophia Westwood <sophia@quip.com>\nSota Ohara <ohrst.18@gmail.com>\nSpencer Handley <spencerhandley@gmail.com>\nStefan Dombrowski <sdo451@gmail.com>\nStephen Murphy <smurphy3@apple.com>\nSterling Cobb <sterlingcobb@gmail.com>\nSteve Baker <_steve_@outlook.com>\nSteven Luscher <react@steveluscher.com>\nSteven Vachon <contact@svachon.com>\nStoyan Stefanov <ssttoo@ymail.com>\nSundeep Malladi <sundeep.malladi@gmail.com>\nSunny Juneja <me@sunnyjuneja.com>\nSven Helmberger <fforw@gmx.de>\nSverre Johansen <sverre.johansen@gmail.com>\nSébastien Lorber <lorber.sebastien@gmail.com>\nSławomir Laskowski <laskowski.box@gmail.com>\nTaeho Kim <dittos@gmail.com>\nTay Yang Shun <tay.yang.shun@gmail.com>\nTed Kim <ted@vcnc.co.kr>\nTengfei Guo <terryr3rd@yeah.net>\nTeodor Szente <teodor98sz@gmail.com>\nThomas Aylott <oblivious@subtlegradient.com>\nThomas Boyt <thomas.boyt@venmo.com>\nThomas Broadley <buriedunderbooks@hotmail.com>\nThomas Reggi <socialtr@gmail.com>\nThomas Röggla <t.roggla@cwi.nl>\nThomas Shaddox <thomas@heyzap.com>\nThomas Shafer <thomasjshafer@gmail.com>\nThomasCrvsr <crevoisier.thomas@gmail.com>\nTienchai Wirojsaksaree <tienchai@fb.com>\nTim Routowicz <troutowicz@gmail.com>\nTim Schaub <tschaub@users.noreply.github.com>\nTimothy Yung <yungsters@gmail.com>\nTimur Carpeev <timuric@users.noreply.github.com>\nTobias Reiss <tag+github@basecode.de>\nTom Duncalf <tom@tomduncalf.com>\nTom Haggie <thaggie@gmail.com>\nTom Hauburger <thauburger@gmail.com>\nTom MacWright <tom@macwright.org>\nTom Occhino <tomocchino@gmail.com>\nTomasz Kołodziejski <tkolodziejski@gmail.com>\nTomoya Suzuki <tmysz.dev@gmail.com>\nTony Spiro <tspiro@tonyspiro.com>\nToru Kobayashi <koba0004@gmail.com>\nTrinh Hoang Nhu <trinhhoangnhu@gmail.com>\nTsung Hung <thung@me.com>\nTyler Brock <tyler.brock@gmail.com>\nUstin Zarubin <ustin.zarubin@campusbellhops.com>\nVadim Chernysh <chernysh.vadim@gmail.com>\nVarun Rau <varunrau@gmail.com>\nVasiliy Loginevskiy <Yeti.or@gmail.com>\nVictor Alvarez <v.alvarez312@gmail.com>\nVictor Homyakov <vkhomyackov@gmail.com>\nVictor Koenders <victor.koenders@gmail.com>\nVille Immonen <ville.immonen@iki.fi>\nVincent Riemer <vincentriemer@gmail.com>\nVincent Siao <vincent@asana.com>\nVipul A M <vipulnsward@gmail.com>\nVitaly Kramskikh <vkramskikh@gmail.com>\nVitor Balocco <vitorbal@gmail.com>\nVjeux <vjeuxx@gmail.com>\nVolkan Unsal <spocksplanet@gmail.com>\nWander Wang <wander.wang@ismole.com>\nWayne Larsen <wayne@larsen.st>\nWickyNilliams <WickyNilliams@MBA>\nWincent Colaiuta <win@wincent.com>\nWout Mertens <Wout.Mertens@gmail.com>\nXavier Morel <xmo-odoo@users.noreply.github.com>\nXuefengWu <benewu@gmail.com>\nYakov Dalinchuk <murashki@users.noreply.github.com>\nYasar icli <hello@yasaricli.com>\nYouBao Nong <noyobo@gmail.com>\nYuichi Hagio <yhagio87@gmail.com>\nYuriy Dybskiy <yuriy@dybskiy.com>\nYutaka Nakajima <nakazye@gmail.com>\nYuval Dekel <thedekel@fb.com>\nZach Bruggeman <mail@bruggie.com>\nZach Ramaekers <zramaekers@gmail.com>\nZacharias <zachasme@users.noreply.github.com>\nZeke Sikelianos <zeke@sikelianos.com>\nZhangjd <zhang.jd@qq.com>\nadraeth <jerzy.mirecki@gmail.com>\narush <arush@ilovebrands.net>\nbrafdlog <brafdlog@gmail.com>\nchen <kikyous@163.com>\nclariroid <clarinette.uranus@gmail.com>\nclaudiopro <claudio.procida@gmail.com>\ncutbko <kutsenko.eugene@hotmail.com>\ndavidxi <davidgraycn@gmail.com>\ndongmeng.ldm <dongmeng.ldm@alibaba-inc.com>\niamchenxin <iamchenxin@gmail.com>\niamdoron <doronpagot@gmail.com>\niawia002 <z2d@jifangcheng.com>\nimagentleman <imagentlemail@gmail.com>\nkoh-taka <koh-taka@users.noreply.github.com>\nkohashi85 <hako584@gmail.com>\nlaiso <laiso@lai.so>\nleeyoungalias <leeyoungalias@qq.com>\nli.li <li.li@ele.me>\nmaxprafferty <maxprafferty@gmail.com>\nrgarifullin <ringarifullin@gmail.com>\nsongawee <dennis@songawee.com>\nsugarshin <shinsugar@gmail.com>\nwali-s <ahmad3y2k@hotmail.com>\nyiminghe <yiminghe@gmail.com>\nyoumoo <youmoolee@gmail.com>\nzhangjg <jinguozhang@qq.com>\nzwhitchcox <zwhitchcox@gmail.com>\nÁrni Hermann Reynisson <arnihr@gmail.com>\n元彦 <yuanyan@users.noreply.github.com>\n凌恒 <jiakun.dujk@alibaba-inc.com>\n张敏 <cookfront@gmail.com>\n"
  },
  {
    "path": "docs/articles/intro_reactR_files/react-18.2.0/LICENSE.txt",
    "content": "MIT License\n\nCopyright (c) 2013-present, Facebook, Inc.\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"
  },
  {
    "path": "docs/authors.html",
    "content": "<!DOCTYPE html>\n<!-- Generated by pkgdown: do not edit by hand --><html lang=\"en\"><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"><meta charset=\"utf-8\"><meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\"><meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"><title>Authors and Citation • reactR</title><!-- favicons --><link rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"favicon-16x16.png\"><link rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"favicon-32x32.png\"><link rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"apple-touch-icon.png\"><link rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"120x120\" href=\"apple-touch-icon-120x120.png\"><link rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"76x76\" href=\"apple-touch-icon-76x76.png\"><link rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"60x60\" href=\"apple-touch-icon-60x60.png\"><!-- jquery --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js\" integrity=\"sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo=\" crossorigin=\"anonymous\"></script><!-- Bootstrap --><link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.4.1/css/bootstrap.min.css\" integrity=\"sha256-bZLfwXAP04zRMK2BjiO8iu9pf4FbLqX6zitd+tIvLhE=\" crossorigin=\"anonymous\"><script src=\"https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.4.1/js/bootstrap.min.js\" integrity=\"sha256-nuL8/2cJ5NDSSwnKD8VqreErSWHtnEP9E7AySL+1ev4=\" crossorigin=\"anonymous\"></script><!-- bootstrap-toc --><link rel=\"stylesheet\" href=\"bootstrap-toc.css\"><script src=\"bootstrap-toc.js\"></script><!-- Font Awesome icons --><link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/all.min.css\" integrity=\"sha256-mmgLkCYLUQbXn0B1SRqzHar6dCnv9oZFPEC1g1cwlkk=\" crossorigin=\"anonymous\"><link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/v4-shims.min.css\" integrity=\"sha256-wZjR52fzng1pJHwx4aV2AO3yyTOXrcDW7jBpJtTwVxw=\" crossorigin=\"anonymous\"><!-- clipboard.js --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.6/clipboard.min.js\" integrity=\"sha256-inc5kl9MA1hkeYUt+EC3BhlIgyp/2jDIyBLS6k3UxPI=\" crossorigin=\"anonymous\"></script><!-- headroom.js --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/headroom.min.js\" integrity=\"sha256-AsUX4SJE1+yuDu5+mAVzJbuYNPHj/WroHuZ8Ir/CkE0=\" crossorigin=\"anonymous\"></script><script src=\"https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/jQuery.headroom.min.js\" integrity=\"sha256-ZX/yNShbjqsohH1k95liqY9Gd8uOiE1S4vZc+9KQ1K4=\" crossorigin=\"anonymous\"></script><!-- pkgdown --><link href=\"pkgdown.css\" rel=\"stylesheet\"><script src=\"pkgdown.js\"></script><meta property=\"og:title\" content=\"Authors and Citation\"><!-- mathjax --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js\" integrity=\"sha256-nvJJv9wWKEm88qvoQl9ekL2J+k/RWIsaSScxxlsrv8k=\" crossorigin=\"anonymous\"></script><script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/config/TeX-AMS-MML_HTMLorMML.js\" integrity=\"sha256-84DKXVJXs0/F8OTMzX4UR909+jtl4G7SPypPavF+GfA=\" crossorigin=\"anonymous\"></script><!--[if lt IE 9]>\n<script src=\"https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js\"></script>\n<script src=\"https://oss.maxcdn.com/respond/1.4.2/respond.min.js\"></script>\n<![endif]--></head><body data-spy=\"scroll\" data-target=\"#toc\">\n    \n\n    <div class=\"container template-citation-authors\">\n      <header><div class=\"navbar navbar-default navbar-fixed-top\" role=\"navigation\">\n  <div class=\"container\">\n    <div class=\"navbar-header\">\n      <button type=\"button\" class=\"navbar-toggle collapsed\" data-toggle=\"collapse\" data-target=\"#navbar\" aria-expanded=\"false\">\n        <span class=\"sr-only\">Toggle navigation</span>\n        <span class=\"icon-bar\"></span>\n        <span class=\"icon-bar\"></span>\n        <span class=\"icon-bar\"></span>\n      </button>\n      <span class=\"navbar-brand\">\n        <a class=\"navbar-link\" href=\"index.html\">reactR</a>\n        <span class=\"version label label-default\" data-toggle=\"tooltip\" data-placement=\"bottom\" title=\"\">0.6.1</span>\n      </span>\n    </div>\n\n    <div id=\"navbar\" class=\"navbar-collapse collapse\">\n      <ul class=\"nav navbar-nav\"><li>\n  <a href=\"reference/index.html\">Reference</a>\n</li>\n<li class=\"dropdown\">\n  <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\" role=\"button\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\n    Articles\n     \n    <span class=\"caret\"></span>\n  </a>\n  <ul class=\"dropdown-menu\" role=\"menu\"><li>\n      <a href=\"articles/intro_htmlwidgets.html\">Authoring htmlwidgets powered by React with reactR</a>\n    </li>\n    <li>\n      <a href=\"articles/intro_inputs.html\">Authoring inputs powered by React with reactR</a>\n    </li>\n    <li>\n      <a href=\"articles/intro_reactR.html\">Intro to reactR</a>\n    </li>\n  </ul></li>\n<li>\n  <a href=\"news/index.html\">Changelog</a>\n</li>\n      </ul><ul class=\"nav navbar-nav navbar-right\"><li>\n  <a href=\"https://github.com/react-R/reactR/\" class=\"external-link\">\n    <span class=\"fab fa-github fa-lg\"></span>\n     \n  </a>\n</li>\n      </ul></div><!--/.nav-collapse -->\n  </div><!--/.container -->\n</div><!--/.navbar -->\n\n      \n\n      </header><div class=\"row\">\n  <div class=\"contents col-md-9\">\n    <div class=\"section level2 authors-section\">\n      <div class=\"page-header\">\n        <h1>Authors</h1>\n      </div>\n\n      \n      <ul class=\"list-unstyled\"><li>\n          <p><strong>Facebook Inc</strong>. Author, copyright holder. \n          <br><small>React library in lib, https://reactjs.org/; see AUTHORS for full list of contributors</small></p>\n        </li>\n        <li>\n          <p><strong>Michel Weststrate</strong>. Author, copyright holder. \n          <br><small>mobx library in lib, https://github.com/mobxjs</small></p>\n        </li>\n        <li>\n          <p><strong>Kent Russell</strong>. Author, maintainer. \n          <br><small>R interface</small></p>\n        </li>\n        <li>\n          <p><strong>Alan Dipert</strong>. Author. \n          <br><small>R interface</small></p>\n        </li>\n        <li>\n          <p><strong>Greg Lin</strong>. Author. \n          <br><small>R interface</small></p>\n        </li>\n      </ul></div>\n    <div class=\"section level2 citation-section\">\n    <div>\n      <h1 id=\"citation\">Citation</h1>\n      <small class=\"dont-index\">Source: <a href=\"https://github.com/react-R/reactR/blob/HEAD/DESCRIPTION\" class=\"external-link\"><code>DESCRIPTION</code></a></small>\n    </div>\n    </div>\n\n\n    <p>Inc F, Weststrate M, Russell K, Dipert A, Lin G (2024).\n<em>reactR: React Helpers</em>.\nR package version 0.6.1, <a href=\"https://github.com/react-R/reactR\" class=\"external-link\">https://github.com/react-R/reactR</a>. \n</p>\n    <pre>@Manual{,\n  title = {reactR: React Helpers},\n  author = {Facebook Inc and Michel Weststrate and Kent Russell and Alan Dipert and Greg Lin},\n  year = {2024},\n  note = {R package version 0.6.1},\n  url = {https://github.com/react-R/reactR},\n}</pre>\n\n  </div>\n\n</div>\n\n\n\n      <footer><div class=\"copyright\">\n  <p></p><p>Developed by Facebook Inc, Michel Weststrate, Kent Russell, Alan Dipert, Greg Lin.</p>\n</div>\n\n<div class=\"pkgdown\">\n  <p></p><p>Site built with <a href=\"https://pkgdown.r-lib.org/\" class=\"external-link\">pkgdown</a> 2.0.7.</p>\n</div>\n\n      </footer></div>\n\n  \n\n\n  \n\n  </body></html>\n\n"
  },
  {
    "path": "docs/bootstrap-toc.css",
    "content": "/*!\n * Bootstrap Table of Contents v0.4.1 (http://afeld.github.io/bootstrap-toc/)\n * Copyright 2015 Aidan Feldman\n * Licensed under MIT (https://github.com/afeld/bootstrap-toc/blob/gh-pages/LICENSE.md) */\n\n/* modified from https://github.com/twbs/bootstrap/blob/94b4076dd2efba9af71f0b18d4ee4b163aa9e0dd/docs/assets/css/src/docs.css#L548-L601 */\n\n/* All levels of nav */\nnav[data-toggle='toc'] .nav > li > a {\n  display: block;\n  padding: 4px 20px;\n  font-size: 13px;\n  font-weight: 500;\n  color: #767676;\n}\nnav[data-toggle='toc'] .nav > li > a:hover,\nnav[data-toggle='toc'] .nav > li > a:focus {\n  padding-left: 19px;\n  color: #563d7c;\n  text-decoration: none;\n  background-color: transparent;\n  border-left: 1px solid #563d7c;\n}\nnav[data-toggle='toc'] .nav > .active > a,\nnav[data-toggle='toc'] .nav > .active:hover > a,\nnav[data-toggle='toc'] .nav > .active:focus > a {\n  padding-left: 18px;\n  font-weight: bold;\n  color: #563d7c;\n  background-color: transparent;\n  border-left: 2px solid #563d7c;\n}\n\n/* Nav: second level (shown on .active) */\nnav[data-toggle='toc'] .nav .nav {\n  display: none; /* Hide by default, but at >768px, show it */\n  padding-bottom: 10px;\n}\nnav[data-toggle='toc'] .nav .nav > li > a {\n  padding-top: 1px;\n  padding-bottom: 1px;\n  padding-left: 30px;\n  font-size: 12px;\n  font-weight: normal;\n}\nnav[data-toggle='toc'] .nav .nav > li > a:hover,\nnav[data-toggle='toc'] .nav .nav > li > a:focus {\n  padding-left: 29px;\n}\nnav[data-toggle='toc'] .nav .nav > .active > a,\nnav[data-toggle='toc'] .nav .nav > .active:hover > a,\nnav[data-toggle='toc'] .nav .nav > .active:focus > a {\n  padding-left: 28px;\n  font-weight: 500;\n}\n\n/* from https://github.com/twbs/bootstrap/blob/e38f066d8c203c3e032da0ff23cd2d6098ee2dd6/docs/assets/css/src/docs.css#L631-L634 */\nnav[data-toggle='toc'] .nav > .active > ul {\n  display: block;\n}\n"
  },
  {
    "path": "docs/bootstrap-toc.js",
    "content": "/*!\n * Bootstrap Table of Contents v0.4.1 (http://afeld.github.io/bootstrap-toc/)\n * Copyright 2015 Aidan Feldman\n * Licensed under MIT (https://github.com/afeld/bootstrap-toc/blob/gh-pages/LICENSE.md) */\n(function() {\n  'use strict';\n\n  window.Toc = {\n    helpers: {\n      // return all matching elements in the set, or their descendants\n      findOrFilter: function($el, selector) {\n        // http://danielnouri.org/notes/2011/03/14/a-jquery-find-that-also-finds-the-root-element/\n        // http://stackoverflow.com/a/12731439/358804\n        var $descendants = $el.find(selector);\n        return $el.filter(selector).add($descendants).filter(':not([data-toc-skip])');\n      },\n\n      generateUniqueIdBase: function(el) {\n        var text = $(el).text();\n        var anchor = text.trim().toLowerCase().replace(/[^A-Za-z0-9]+/g, '-');\n        return anchor || el.tagName.toLowerCase();\n      },\n\n      generateUniqueId: function(el) {\n        var anchorBase = this.generateUniqueIdBase(el);\n        for (var i = 0; ; i++) {\n          var anchor = anchorBase;\n          if (i > 0) {\n            // add suffix\n            anchor += '-' + i;\n          }\n          // check if ID already exists\n          if (!document.getElementById(anchor)) {\n            return anchor;\n          }\n        }\n      },\n\n      generateAnchor: function(el) {\n        if (el.id) {\n          return el.id;\n        } else {\n          var anchor = this.generateUniqueId(el);\n          el.id = anchor;\n          return anchor;\n        }\n      },\n\n      createNavList: function() {\n        return $('<ul class=\"nav\"></ul>');\n      },\n\n      createChildNavList: function($parent) {\n        var $childList = this.createNavList();\n        $parent.append($childList);\n        return $childList;\n      },\n\n      generateNavEl: function(anchor, text) {\n        var $a = $('<a></a>');\n        $a.attr('href', '#' + anchor);\n        $a.text(text);\n        var $li = $('<li></li>');\n        $li.append($a);\n        return $li;\n      },\n\n      generateNavItem: function(headingEl) {\n        var anchor = this.generateAnchor(headingEl);\n        var $heading = $(headingEl);\n        var text = $heading.data('toc-text') || $heading.text();\n        return this.generateNavEl(anchor, text);\n      },\n\n      // Find the first heading level (`<h1>`, then `<h2>`, etc.) that has more than one element. Defaults to 1 (for `<h1>`).\n      getTopLevel: function($scope) {\n        for (var i = 1; i <= 6; i++) {\n          var $headings = this.findOrFilter($scope, 'h' + i);\n          if ($headings.length > 1) {\n            return i;\n          }\n        }\n\n        return 1;\n      },\n\n      // returns the elements for the top level, and the next below it\n      getHeadings: function($scope, topLevel) {\n        var topSelector = 'h' + topLevel;\n\n        var secondaryLevel = topLevel + 1;\n        var secondarySelector = 'h' + secondaryLevel;\n\n        return this.findOrFilter($scope, topSelector + ',' + secondarySelector);\n      },\n\n      getNavLevel: function(el) {\n        return parseInt(el.tagName.charAt(1), 10);\n      },\n\n      populateNav: function($topContext, topLevel, $headings) {\n        var $context = $topContext;\n        var $prevNav;\n\n        var helpers = this;\n        $headings.each(function(i, el) {\n          var $newNav = helpers.generateNavItem(el);\n          var navLevel = helpers.getNavLevel(el);\n\n          // determine the proper $context\n          if (navLevel === topLevel) {\n            // use top level\n            $context = $topContext;\n          } else if ($prevNav && $context === $topContext) {\n            // create a new level of the tree and switch to it\n            $context = helpers.createChildNavList($prevNav);\n          } // else use the current $context\n\n          $context.append($newNav);\n\n          $prevNav = $newNav;\n        });\n      },\n\n      parseOps: function(arg) {\n        var opts;\n        if (arg.jquery) {\n          opts = {\n            $nav: arg\n          };\n        } else {\n          opts = arg;\n        }\n        opts.$scope = opts.$scope || $(document.body);\n        return opts;\n      }\n    },\n\n    // accepts a jQuery object, or an options object\n    init: function(opts) {\n      opts = this.helpers.parseOps(opts);\n\n      // ensure that the data attribute is in place for styling\n      opts.$nav.attr('data-toggle', 'toc');\n\n      var $topContext = this.helpers.createChildNavList(opts.$nav);\n      var topLevel = this.helpers.getTopLevel(opts.$scope);\n      var $headings = this.helpers.getHeadings(opts.$scope, topLevel);\n      this.helpers.populateNav($topContext, topLevel, $headings);\n    }\n  };\n\n  $(function() {\n    $('nav[data-toggle=\"toc\"]').each(function(i, el) {\n      var $nav = $(el);\n      Toc.init($nav);\n    });\n  });\n})();\n"
  },
  {
    "path": "docs/docsearch.css",
    "content": "/* Docsearch -------------------------------------------------------------- */\n/*\n  Source: https://github.com/algolia/docsearch/\n  License: MIT\n*/\n\n.algolia-autocomplete {\n  display: block;\n  -webkit-box-flex: 1;\n  -ms-flex: 1;\n  flex: 1\n}\n\n.algolia-autocomplete .ds-dropdown-menu {\n  width: 100%;\n  min-width: none;\n  max-width: none;\n  padding: .75rem 0;\n  background-color: #fff;\n  background-clip: padding-box;\n  border: 1px solid rgba(0, 0, 0, .1);\n  box-shadow: 0 .5rem 1rem rgba(0, 0, 0, .175);\n}\n\n@media (min-width:768px) {\n  .algolia-autocomplete .ds-dropdown-menu {\n      width: 175%\n  }\n}\n\n.algolia-autocomplete .ds-dropdown-menu::before {\n  display: none\n}\n\n.algolia-autocomplete .ds-dropdown-menu [class^=ds-dataset-] {\n  padding: 0;\n  background-color: rgb(255,255,255);\n  border: 0;\n  max-height: 80vh;\n}\n\n.algolia-autocomplete .ds-dropdown-menu .ds-suggestions {\n  margin-top: 0\n}\n\n.algolia-autocomplete .algolia-docsearch-suggestion {\n  padding: 0;\n  overflow: visible\n}\n\n.algolia-autocomplete .algolia-docsearch-suggestion--category-header {\n  padding: .125rem 1rem;\n  margin-top: 0;\n  font-size: 1.3em;\n  font-weight: 500;\n  color: #00008B;\n  border-bottom: 0\n}\n\n.algolia-autocomplete .algolia-docsearch-suggestion--wrapper {\n    float: none;\n    padding-top: 0\n}\n\n.algolia-autocomplete .algolia-docsearch-suggestion--subcategory-column {\n  float: none;\n  width: auto;\n  padding: 0;\n  text-align: left\n}\n\n.algolia-autocomplete .algolia-docsearch-suggestion--content {\n  float: none;\n  width: auto;\n  padding: 0\n}\n\n.algolia-autocomplete .algolia-docsearch-suggestion--content::before {\n  display: none\n}\n\n.algolia-autocomplete .ds-suggestion:not(:first-child) .algolia-docsearch-suggestion--category-header {\n  padding-top: .75rem;\n  margin-top: .75rem;\n  border-top: 1px solid rgba(0, 0, 0, .1)\n}\n\n.algolia-autocomplete .ds-suggestion .algolia-docsearch-suggestion--subcategory-column {\n  display: block;\n  padding: .1rem 1rem;\n  margin-bottom: 0.1;\n  font-size: 1.0em;\n  font-weight: 400\n  /* display: none */\n}\n\n.algolia-autocomplete .algolia-docsearch-suggestion--title {\n  display: block;\n  padding: .25rem 1rem;\n  margin-bottom: 0;\n  font-size: 0.9em;\n  font-weight: 400\n}\n\n.algolia-autocomplete .algolia-docsearch-suggestion--text {\n  padding: 0 1rem .5rem;\n  margin-top: -.25rem;\n  font-size: 0.8em;\n  font-weight: 400;\n  line-height: 1.25\n}\n\n.algolia-autocomplete .algolia-docsearch-footer {\n  width: 110px;\n  height: 20px;\n  z-index: 3;\n  margin-top: 10.66667px;\n  float: right;\n  font-size: 0;\n  line-height: 0;\n}\n\n.algolia-autocomplete .algolia-docsearch-footer--logo {\n  background-image: url(\"data:image/svg+xml;utf8,<svg viewBox='0 0 130 18' xmlns='http://www.w3.org/2000/svg'><defs><linearGradient x1='-36.868%' y1='134.936%' x2='129.432%' y2='-27.7%' id='a'><stop stop-color='%2300AEFF' offset='0%'/><stop stop-color='%233369E7' offset='100%'/></linearGradient></defs><g fill='none' fill-rule='evenodd'><path d='M59.399.022h13.299a2.372 2.372 0 0 1 2.377 2.364V15.62a2.372 2.372 0 0 1-2.377 2.364H59.399a2.372 2.372 0 0 1-2.377-2.364V2.381A2.368 2.368 0 0 1 59.399.022z' fill='url(%23a)'/><path d='M66.257 4.56c-2.815 0-5.1 2.272-5.1 5.078 0 2.806 2.284 5.072 5.1 5.072 2.815 0 5.1-2.272 5.1-5.078 0-2.806-2.279-5.072-5.1-5.072zm0 8.652c-1.983 0-3.593-1.602-3.593-3.574 0-1.972 1.61-3.574 3.593-3.574 1.983 0 3.593 1.602 3.593 3.574a3.582 3.582 0 0 1-3.593 3.574zm0-6.418v2.664c0 .076.082.131.153.093l2.377-1.226c.055-.027.071-.093.044-.147a2.96 2.96 0 0 0-2.465-1.487c-.055 0-.11.044-.11.104l.001-.001zm-3.33-1.956l-.312-.311a.783.783 0 0 0-1.106 0l-.372.37a.773.773 0 0 0 0 1.101l.307.305c.049.049.121.038.164-.011.181-.245.378-.479.597-.697.225-.223.455-.42.707-.599.055-.033.06-.109.016-.158h-.001zm5.001-.806v-.616a.781.781 0 0 0-.783-.779h-1.824a.78.78 0 0 0-.783.779v.632c0 .071.066.12.137.104a5.736 5.736 0 0 1 1.588-.223c.52 0 1.035.071 1.534.207a.106.106 0 0 0 .131-.104z' fill='%23FFF'/><path d='M102.162 13.762c0 1.455-.372 2.517-1.123 3.193-.75.676-1.895 1.013-3.44 1.013-.564 0-1.736-.109-2.673-.316l.345-1.689c.783.163 1.819.207 2.361.207.86 0 1.473-.174 1.84-.523.367-.349.548-.866.548-1.553v-.349a6.374 6.374 0 0 1-.838.316 4.151 4.151 0 0 1-1.194.158 4.515 4.515 0 0 1-1.616-.278 3.385 3.385 0 0 1-1.254-.817 3.744 3.744 0 0 1-.811-1.351c-.192-.539-.29-1.504-.29-2.212 0-.665.104-1.498.307-2.054a3.925 3.925 0 0 1 .904-1.433 4.124 4.124 0 0 1 1.441-.926 5.31 5.31 0 0 1 1.945-.365c.696 0 1.337.087 1.961.191a15.86 15.86 0 0 1 1.588.332v8.456h-.001zm-5.954-4.206c0 .893.197 1.885.592 2.299.394.414.904.621 1.528.621.34 0 .663-.049.964-.142a2.75 2.75 0 0 0 .734-.332v-5.29a8.531 8.531 0 0 0-1.413-.18c-.778-.022-1.369.294-1.786.801-.411.507-.619 1.395-.619 2.223zm16.12 0c0 .719-.104 1.264-.318 1.858a4.389 4.389 0 0 1-.904 1.52c-.389.42-.854.746-1.402.975-.548.229-1.391.36-1.813.36-.422-.005-1.26-.125-1.802-.36a4.088 4.088 0 0 1-1.397-.975 4.486 4.486 0 0 1-.909-1.52 5.037 5.037 0 0 1-.329-1.858c0-.719.099-1.411.318-1.999.219-.588.526-1.09.92-1.509.394-.42.865-.741 1.402-.97a4.547 4.547 0 0 1 1.786-.338 4.69 4.69 0 0 1 1.791.338c.548.229 1.019.55 1.402.97.389.42.69.921.909 1.509.23.588.345 1.28.345 1.999h.001zm-2.191.005c0-.921-.203-1.689-.597-2.223-.394-.539-.948-.806-1.654-.806-.707 0-1.26.267-1.654.806-.394.539-.586 1.302-.586 2.223 0 .932.197 1.558.592 2.098.394.545.948.812 1.654.812.707 0 1.26-.272 1.654-.812.394-.545.592-1.166.592-2.098h-.001zm6.962 4.707c-3.511.016-3.511-2.822-3.511-3.274L113.583.926l2.142-.338v10.003c0 .256 0 1.88 1.375 1.885v1.792h-.001zm3.774 0h-2.153V5.072l2.153-.338v9.534zm-1.079-10.542c.718 0 1.304-.578 1.304-1.291 0-.714-.581-1.291-1.304-1.291-.723 0-1.304.578-1.304 1.291 0 .714.586 1.291 1.304 1.291zm6.431 1.013c.707 0 1.304.087 1.786.262.482.174.871.42 1.156.73.285.311.488.735.608 1.182.126.447.186.937.186 1.476v5.481a25.24 25.24 0 0 1-1.495.251c-.668.098-1.419.147-2.251.147a6.829 6.829 0 0 1-1.517-.158 3.213 3.213 0 0 1-1.178-.507 2.455 2.455 0 0 1-.761-.904c-.181-.37-.274-.893-.274-1.438 0-.523.104-.855.307-1.215.208-.36.487-.654.838-.883a3.609 3.609 0 0 1 1.227-.49 7.073 7.073 0 0 1 2.202-.103c.263.027.537.076.833.147v-.349c0-.245-.027-.479-.088-.697a1.486 1.486 0 0 0-.307-.583c-.148-.169-.34-.3-.581-.392a2.536 2.536 0 0 0-.915-.163c-.493 0-.942.06-1.353.131-.411.071-.75.153-1.008.245l-.257-1.749c.268-.093.668-.185 1.183-.278a9.335 9.335 0 0 1 1.66-.142l-.001-.001zm.181 7.731c.657 0 1.145-.038 1.484-.104v-2.168a5.097 5.097 0 0 0-1.978-.104c-.241.033-.46.098-.652.191a1.167 1.167 0 0 0-.466.392c-.121.169-.175.267-.175.523 0 .501.175.79.493.981.323.196.75.289 1.293.289h.001zM84.109 4.794c.707 0 1.304.087 1.786.262.482.174.871.42 1.156.73.29.316.487.735.608 1.182.126.447.186.937.186 1.476v5.481a25.24 25.24 0 0 1-1.495.251c-.668.098-1.419.147-2.251.147a6.829 6.829 0 0 1-1.517-.158 3.213 3.213 0 0 1-1.178-.507 2.455 2.455 0 0 1-.761-.904c-.181-.37-.274-.893-.274-1.438 0-.523.104-.855.307-1.215.208-.36.487-.654.838-.883a3.609 3.609 0 0 1 1.227-.49 7.073 7.073 0 0 1 2.202-.103c.257.027.537.076.833.147v-.349c0-.245-.027-.479-.088-.697a1.486 1.486 0 0 0-.307-.583c-.148-.169-.34-.3-.581-.392a2.536 2.536 0 0 0-.915-.163c-.493 0-.942.06-1.353.131-.411.071-.75.153-1.008.245l-.257-1.749c.268-.093.668-.185 1.183-.278a8.89 8.89 0 0 1 1.66-.142l-.001-.001zm.186 7.736c.657 0 1.145-.038 1.484-.104v-2.168a5.097 5.097 0 0 0-1.978-.104c-.241.033-.46.098-.652.191a1.167 1.167 0 0 0-.466.392c-.121.169-.175.267-.175.523 0 .501.175.79.493.981.318.191.75.289 1.293.289h.001zm8.682 1.738c-3.511.016-3.511-2.822-3.511-3.274L89.461.926l2.142-.338v10.003c0 .256 0 1.88 1.375 1.885v1.792h-.001z' fill='%23182359'/><path d='M5.027 11.025c0 .698-.252 1.246-.757 1.644-.505.397-1.201.596-2.089.596-.888 0-1.615-.138-2.181-.414v-1.214c.358.168.739.301 1.141.397.403.097.778.145 1.125.145.508 0 .884-.097 1.125-.29a.945.945 0 0 0 .363-.779.978.978 0 0 0-.333-.747c-.222-.204-.68-.446-1.375-.725-.716-.29-1.221-.621-1.515-.994-.294-.372-.44-.82-.44-1.343 0-.655.233-1.171.698-1.547.466-.376 1.09-.564 1.875-.564.752 0 1.5.165 2.245.494l-.408 1.047c-.698-.294-1.321-.44-1.869-.44-.415 0-.73.09-.945.271a.89.89 0 0 0-.322.717c0 .204.043.379.129.524.086.145.227.282.424.411.197.129.551.299 1.063.51.577.24.999.464 1.268.671.269.208.466.442.591.704.125.261.188.569.188.924l-.001.002zm3.98 2.24c-.924 0-1.646-.269-2.167-.808-.521-.539-.782-1.281-.782-2.226 0-.97.242-1.733.725-2.288.483-.555 1.148-.833 1.993-.833.784 0 1.404.238 1.858.714.455.476.682 1.132.682 1.966v.682H7.357c.018.577.174 1.02.467 1.329.294.31.707.465 1.241.465.351 0 .678-.033.98-.099a5.1 5.1 0 0 0 .975-.33v1.026a3.865 3.865 0 0 1-.935.312 5.723 5.723 0 0 1-1.08.091l.002-.001zm-.231-5.199c-.401 0-.722.127-.964.381s-.386.625-.432 1.112h2.696c-.007-.491-.125-.862-.354-1.115-.229-.252-.544-.379-.945-.379l-.001.001zm7.692 5.092l-.252-.827h-.043c-.286.362-.575.608-.865.739-.29.131-.662.196-1.117.196-.584 0-1.039-.158-1.367-.473-.328-.315-.491-.761-.491-1.337 0-.612.227-1.074.682-1.386.455-.312 1.148-.482 2.079-.51l1.026-.032v-.317c0-.38-.089-.663-.266-.851-.177-.188-.452-.282-.824-.282-.304 0-.596.045-.876.134a6.68 6.68 0 0 0-.806.317l-.408-.902a4.414 4.414 0 0 1 1.058-.384 4.856 4.856 0 0 1 1.085-.132c.756 0 1.326.165 1.711.494.385.329.577.847.577 1.552v4.002h-.902l-.001-.001zm-1.88-.859c.458 0 .826-.128 1.104-.384.278-.256.416-.615.416-1.077v-.516l-.763.032c-.594.021-1.027.121-1.297.298s-.406.448-.406.814c0 .265.079.47.236.615.158.145.394.218.709.218h.001zm7.557-5.189c.254 0 .464.018.628.054l-.124 1.176a2.383 2.383 0 0 0-.559-.064c-.505 0-.914.165-1.227.494-.313.329-.47.757-.47 1.284v3.105h-1.262V7.218h.988l.167 1.047h.064c.197-.354.454-.636.771-.843a1.83 1.83 0 0 1 1.023-.312h.001zm4.125 6.155c-.899 0-1.582-.262-2.049-.787-.467-.525-.701-1.277-.701-2.259 0-.999.244-1.767.733-2.304.489-.537 1.195-.806 2.119-.806.627 0 1.191.116 1.692.349l-.381 1.015c-.534-.208-.974-.312-1.321-.312-1.028 0-1.542.682-1.542 2.046 0 .666.128 1.166.384 1.501.256.335.631.502 1.125.502a3.23 3.23 0 0 0 1.595-.419v1.101a2.53 2.53 0 0 1-.722.285 4.356 4.356 0 0 1-.932.086v.002zm8.277-.107h-1.268V9.506c0-.458-.092-.8-.277-1.026-.184-.226-.477-.338-.878-.338-.53 0-.919.158-1.168.475-.249.317-.373.848-.373 1.593v2.949h-1.262V4.801h1.262v2.122c0 .34-.021.704-.064 1.09h.081a1.76 1.76 0 0 1 .717-.666c.306-.158.663-.236 1.072-.236 1.439 0 2.159.725 2.159 2.175v3.873l-.001-.001zm7.649-6.048c.741 0 1.319.269 1.732.806.414.537.62 1.291.62 2.261 0 .974-.209 1.732-.628 2.275-.419.542-1.001.814-1.746.814-.752 0-1.336-.27-1.751-.811h-.086l-.231.704h-.945V4.801h1.262v1.987l-.021.655-.032.553h.054c.401-.591.992-.886 1.772-.886zm-.328 1.031c-.508 0-.875.149-1.098.448-.224.299-.339.799-.346 1.501v.086c0 .723.115 1.247.344 1.571.229.324.603.486 1.123.486.448 0 .787-.177 1.018-.532.231-.354.346-.867.346-1.536 0-1.35-.462-2.025-1.386-2.025l-.001.001zm3.244-.924h1.375l1.209 3.368c.183.48.304.931.365 1.354h.043c.032-.197.091-.436.177-.717.086-.281.541-1.616 1.364-4.004h1.364l-2.541 6.73c-.462 1.235-1.232 1.853-2.31 1.853-.279 0-.551-.03-.816-.091v-.999c.19.043.406.064.65.064.609 0 1.037-.353 1.284-1.058l.22-.559-2.385-5.941h.001z' fill='%231D3657'/></g></svg>\");\n  background-repeat: no-repeat;\n  background-position: 50%;\n  background-size: 100%;\n  overflow: hidden;\n  text-indent: -9000px;\n  width: 100%;\n  height: 100%;\n  display: block;\n  transform: translate(-8px);\n}\n\n.algolia-autocomplete .algolia-docsearch-suggestion--highlight {\n  color: #FF8C00;\n  background: rgba(232, 189, 54, 0.1)\n}\n\n\n.algolia-autocomplete .algolia-docsearch-suggestion--text .algolia-docsearch-suggestion--highlight {\n  box-shadow: inset 0 -2px 0 0 rgba(105, 105, 105, .5)\n}\n\n.algolia-autocomplete .ds-suggestion.ds-cursor .algolia-docsearch-suggestion--content {\n  background-color: rgba(192, 192, 192, .15)\n}\n"
  },
  {
    "path": "docs/docsearch.js",
    "content": "$(function() {\n\n  // register a handler to move the focus to the search bar\n  // upon pressing shift + \"/\" (i.e. \"?\")\n  $(document).on('keydown', function(e) {\n    if (e.shiftKey && e.keyCode == 191) {\n      e.preventDefault();\n      $(\"#search-input\").focus();\n    }\n  });\n\n  $(document).ready(function() {\n    // do keyword highlighting\n    /* modified from https://jsfiddle.net/julmot/bL6bb5oo/ */\n    var mark = function() {\n\n      var referrer = document.URL ;\n      var paramKey = \"q\" ;\n\n      if (referrer.indexOf(\"?\") !== -1) {\n        var qs = referrer.substr(referrer.indexOf('?') + 1);\n        var qs_noanchor = qs.split('#')[0];\n        var qsa = qs_noanchor.split('&');\n        var keyword = \"\";\n\n        for (var i = 0; i < qsa.length; i++) {\n          var currentParam = qsa[i].split('=');\n\n          if (currentParam.length !== 2) {\n            continue;\n          }\n\n          if (currentParam[0] == paramKey) {\n            keyword = decodeURIComponent(currentParam[1].replace(/\\+/g, \"%20\"));\n          }\n        }\n\n        if (keyword !== \"\") {\n          $(\".contents\").unmark({\n            done: function() {\n              $(\".contents\").mark(keyword);\n            }\n          });\n        }\n      }\n    };\n\n    mark();\n  });\n});\n\n/* Search term highlighting ------------------------------*/\n\nfunction matchedWords(hit) {\n  var words = [];\n\n  var hierarchy = hit._highlightResult.hierarchy;\n  // loop to fetch from lvl0, lvl1, etc.\n  for (var idx in hierarchy) {\n    words = words.concat(hierarchy[idx].matchedWords);\n  }\n\n  var content = hit._highlightResult.content;\n  if (content) {\n    words = words.concat(content.matchedWords);\n  }\n\n  // return unique words\n  var words_uniq = [...new Set(words)];\n  return words_uniq;\n}\n\nfunction updateHitURL(hit) {\n\n  var words = matchedWords(hit);\n  var url = \"\";\n\n  if (hit.anchor) {\n    url = hit.url_without_anchor + '?q=' + escape(words.join(\" \")) + '#' + hit.anchor;\n  } else {\n    url = hit.url + '?q=' + escape(words.join(\" \"));\n  }\n\n  return url;\n}\n"
  },
  {
    "path": "docs/index.html",
    "content": "<!DOCTYPE html>\n<!-- Generated by pkgdown: do not edit by hand --><html lang=\"en\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\">\n<meta charset=\"utf-8\">\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\">\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n<title>React Helpers • reactR</title>\n<!-- favicons --><link rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"favicon-16x16.png\">\n<link rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"favicon-32x32.png\">\n<link rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"apple-touch-icon.png\">\n<link rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"120x120\" href=\"apple-touch-icon-120x120.png\">\n<link rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"76x76\" href=\"apple-touch-icon-76x76.png\">\n<link rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"60x60\" href=\"apple-touch-icon-60x60.png\">\n<!-- jquery --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js\" integrity=\"sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo=\" crossorigin=\"anonymous\"></script><!-- Bootstrap --><link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.4.1/css/bootstrap.min.css\" integrity=\"sha256-bZLfwXAP04zRMK2BjiO8iu9pf4FbLqX6zitd+tIvLhE=\" crossorigin=\"anonymous\">\n<script src=\"https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.4.1/js/bootstrap.min.js\" integrity=\"sha256-nuL8/2cJ5NDSSwnKD8VqreErSWHtnEP9E7AySL+1ev4=\" crossorigin=\"anonymous\"></script><!-- bootstrap-toc --><link rel=\"stylesheet\" href=\"bootstrap-toc.css\">\n<script src=\"bootstrap-toc.js\"></script><!-- Font Awesome icons --><link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/all.min.css\" integrity=\"sha256-mmgLkCYLUQbXn0B1SRqzHar6dCnv9oZFPEC1g1cwlkk=\" crossorigin=\"anonymous\">\n<link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/v4-shims.min.css\" integrity=\"sha256-wZjR52fzng1pJHwx4aV2AO3yyTOXrcDW7jBpJtTwVxw=\" crossorigin=\"anonymous\">\n<!-- clipboard.js --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.6/clipboard.min.js\" integrity=\"sha256-inc5kl9MA1hkeYUt+EC3BhlIgyp/2jDIyBLS6k3UxPI=\" crossorigin=\"anonymous\"></script><!-- headroom.js --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/headroom.min.js\" integrity=\"sha256-AsUX4SJE1+yuDu5+mAVzJbuYNPHj/WroHuZ8Ir/CkE0=\" crossorigin=\"anonymous\"></script><script src=\"https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/jQuery.headroom.min.js\" integrity=\"sha256-ZX/yNShbjqsohH1k95liqY9Gd8uOiE1S4vZc+9KQ1K4=\" crossorigin=\"anonymous\"></script><!-- pkgdown --><link href=\"pkgdown.css\" rel=\"stylesheet\">\n<script src=\"pkgdown.js\"></script><meta property=\"og:title\" content=\"React Helpers\">\n<meta property=\"og:description\" content=\"Make it easy to use React in R with htmlwidget scaffolds,\n              helper dependency functions, an embedded Babel transpiler,\n              and examples.\">\n<!-- mathjax --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js\" integrity=\"sha256-nvJJv9wWKEm88qvoQl9ekL2J+k/RWIsaSScxxlsrv8k=\" crossorigin=\"anonymous\"></script><script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/config/TeX-AMS-MML_HTMLorMML.js\" integrity=\"sha256-84DKXVJXs0/F8OTMzX4UR909+jtl4G7SPypPavF+GfA=\" crossorigin=\"anonymous\"></script><!--[if lt IE 9]>\n<script src=\"https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js\"></script>\n<script src=\"https://oss.maxcdn.com/respond/1.4.2/respond.min.js\"></script>\n<![endif]-->\n</head>\n<body data-spy=\"scroll\" data-target=\"#toc\">\n    \n\n    <div class=\"container template-home\">\n      <header><div class=\"navbar navbar-default navbar-fixed-top\" role=\"navigation\">\n  <div class=\"container\">\n    <div class=\"navbar-header\">\n      <button type=\"button\" class=\"navbar-toggle collapsed\" data-toggle=\"collapse\" data-target=\"#navbar\" aria-expanded=\"false\">\n        <span class=\"sr-only\">Toggle navigation</span>\n        <span class=\"icon-bar\"></span>\n        <span class=\"icon-bar\"></span>\n        <span class=\"icon-bar\"></span>\n      </button>\n      <span class=\"navbar-brand\">\n        <a class=\"navbar-link\" href=\"index.html\">reactR</a>\n        <span class=\"version label label-default\" data-toggle=\"tooltip\" data-placement=\"bottom\" title=\"\">0.6.1</span>\n      </span>\n    </div>\n\n    <div id=\"navbar\" class=\"navbar-collapse collapse\">\n      <ul class=\"nav navbar-nav\">\n<li>\n  <a href=\"reference/index.html\">Reference</a>\n</li>\n<li class=\"dropdown\">\n  <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\" role=\"button\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\n    Articles\n     \n    <span class=\"caret\"></span>\n  </a>\n  <ul class=\"dropdown-menu\" role=\"menu\">\n<li>\n      <a href=\"articles/intro_htmlwidgets.html\">Authoring htmlwidgets powered by React with reactR</a>\n    </li>\n    <li>\n      <a href=\"articles/intro_inputs.html\">Authoring inputs powered by React with reactR</a>\n    </li>\n    <li>\n      <a href=\"articles/intro_reactR.html\">Intro to reactR</a>\n    </li>\n  </ul>\n</li>\n<li>\n  <a href=\"news/index.html\">Changelog</a>\n</li>\n      </ul>\n<ul class=\"nav navbar-nav navbar-right\">\n<li>\n  <a href=\"https://github.com/react-R/reactR/\" class=\"external-link\">\n    <span class=\"fab fa-github fa-lg\"></span>\n     \n  </a>\n</li>\n      </ul>\n</div>\n<!--/.nav-collapse -->\n  </div>\n<!--/.container -->\n</div>\n<!--/.navbar -->\n\n      \n\n      </header><div class=\"row\">\n  <div class=\"contents col-md-9\">\n<div class=\"section level1\">\n<div class=\"page-header\"><h1 id=\"reactr-\">reactR <img src=\"articles/logo.svg\" alt=\"reactR logo\" width=\"100px\"><a class=\"anchor\" aria-label=\"anchor\" href=\"#reactr-\"></a>\n</h1></div>\n<!-- README.md is generated from README.Rmd. Please edit that file -->\n<p><a href=\"https://cran.r-project.org/package=reactR\" class=\"external-link\"><img src=\"https://www.r-pkg.org/badges/version/reactR\" alt=\"CRAN_Status_Badge\"></a> <a href=\"https://github.com/react-R/reactR/actions/workflows/R-CMD-check.yaml\" class=\"external-link\"><img src=\"https://github.com/react-R/reactR/actions/workflows/R-CMD-check.yaml/badge.svg\" alt=\"R-CMD-check\"></a></p>\n<p><code>reactR</code> provides a set of convenience functions for using <a href=\"https://reactjs.org/\" class=\"external-link\"><code>React</code></a> in <code>R</code> with <code>htmlwidget</code> constructor templates and local JavaScript dependencies. The <code>React</code> ecosystem is rich with components that can enhance <code>R</code> web and Shiny apps. <code><a href=\"reference/scaffoldReactWidget.html\">scaffoldReactWidget()</a></code> helps build <code>htmlwidgets</code> to integrate these <code>React</code> components as <code>R</code> <code>htmlwidgets</code>. <code><a href=\"reference/scaffoldReactShinyInput.html\">scaffoldReactShinyInput()</a></code> does the same for <code>Shiny</code> inputs. The local dependency functions are modeled after the <code>html_dependency_*</code> functions from RStudio’s <a href=\"https://github.com/rstudio/rmarkdown\" class=\"external-link\"><code>rmarkdown</code></a> package.</p>\n<div class=\"section level2\">\n<h2 id=\"installation\">Installation<a class=\"anchor\" aria-label=\"anchor\" href=\"#installation\"></a>\n</h2>\n<p>You can install reactR from CRAN with <code>install.packages(\"reactR\")</code>. For the development version, please use <code>devtools</code> as shown below.</p>\n<div class=\"sourceCode\" id=\"cb1\"><pre class=\"downlit sourceCode r\">\n<code class=\"sourceCode R\"><span><span class=\"co\"># install.packages(\"devtools\")</span></span>\n<span><span class=\"fu\">devtools</span><span class=\"fu\">::</span><span class=\"fu\"><a href=\"https://remotes.r-lib.org/reference/install_github.html\" class=\"external-link\">install_github</a></span><span class=\"op\">(</span><span class=\"st\">\"react-R/reactR\"</span><span class=\"op\">)</span></span></code></pre></div>\n</div>\n<div class=\"section level2\">\n<h2 id=\"creating-htmlwidgets-with-react-components\">Creating htmlwidgets with React Components<a class=\"anchor\" aria-label=\"anchor\" href=\"#creating-htmlwidgets-with-react-components\"></a>\n</h2>\n<p>To wrap a <code>React</code> component as an <code>htmlwidget</code>, please see the tutorial <a href=\"https://react-r.github.io/reactR/articles/intro_htmlwidgets.html\" class=\"external-link\">htmlwidgets with reactR</a>. Also, there are a variety of examples in the <a href=\"https://github.com/react-R\" class=\"external-link\">react-R Github organization</a>.</p>\n<p><a href=\"https://github.com/glin/reactable\" class=\"external-link\"><code>reactable</code></a> is a very well-built <code>htmlwidget</code> leveraging this functionality.</p>\n</div>\n<div class=\"section level2\">\n<h2 id=\"shiny-outputs-and-inputs\">Shiny Outputs and Inputs<a class=\"anchor\" aria-label=\"anchor\" href=\"#shiny-outputs-and-inputs\"></a>\n</h2>\n<p><code>htmlwidgets</code> built with <code>reactR</code> work well in Shiny as outputs. In version <code>0.4.0</code> Alan Dipert has added the ability to easily create React-based official <code>Shiny</code> inputs with helpers and scaffolds. Please see the <a href=\"https://react-r.github.io/reactR/articles/intro_inputs.html\" class=\"external-link\">tutorial</a> for more details.</p>\n</div>\n<div class=\"section level2\">\n<h2 id=\"examples\">Examples<a class=\"anchor\" aria-label=\"anchor\" href=\"#examples\"></a>\n</h2>\n<p>Below are examples of using <code>reactR</code> directly.</p>\n<div class=\"sourceCode\" id=\"cb2\"><pre class=\"downlit sourceCode r\">\n<code class=\"sourceCode R\"><span><span class=\"kw\"><a href=\"https://rdrr.io/r/base/library.html\" class=\"external-link\">library</a></span><span class=\"op\">(</span><span class=\"va\"><a href=\"https://github.com/react-R/reactR\" class=\"external-link\">reactR</a></span><span class=\"op\">)</span></span>\n<span><span class=\"kw\"><a href=\"https://rdrr.io/r/base/library.html\" class=\"external-link\">library</a></span><span class=\"op\">(</span><span class=\"va\"><a href=\"https://github.com/rstudio/htmltools\" class=\"external-link\">htmltools</a></span><span class=\"op\">)</span></span>\n<span></span>\n<span><span class=\"fu\"><a href=\"https://rstudio.github.io/htmltools/reference/browsable.html\" class=\"external-link\">browsable</a></span><span class=\"op\">(</span><span class=\"fu\"><a href=\"https://rstudio.github.io/htmltools/reference/tagList.html\" class=\"external-link\">tagList</a></span><span class=\"op\">(</span></span>\n<span>  <span class=\"va\">tags</span><span class=\"op\">$</span><span class=\"fu\">div</span><span class=\"op\">(</span>id <span class=\"op\">=</span> <span class=\"st\">\"app\"</span><span class=\"op\">)</span>,</span>\n<span>  <span class=\"va\">tags</span><span class=\"op\">$</span><span class=\"fu\">script</span><span class=\"op\">(</span></span>\n<span>  <span class=\"st\">\"</span></span>\n<span><span class=\"st\">    ReactDOM.render(</span></span>\n<span><span class=\"st\">      React.createElement(</span></span>\n<span><span class=\"st\">        'h1',</span></span>\n<span><span class=\"st\">        null,</span></span>\n<span><span class=\"st\">        'Powered by React'</span></span>\n<span><span class=\"st\">      ),</span></span>\n<span><span class=\"st\">      document.getElementById('app')</span></span>\n<span><span class=\"st\">    )</span></span>\n<span><span class=\"st\">  \"</span></span>\n<span>  <span class=\"op\">)</span>,</span>\n<span>  <span class=\"co\">#add core-js first to work in RStudio Viewer</span></span>\n<span>  <span class=\"fu\"><a href=\"reference/html_dependency_corejs.html\">html_dependency_corejs</a></span><span class=\"op\">(</span><span class=\"op\">)</span>,</span>\n<span>  <span class=\"fu\"><a href=\"reference/html_dependency_react.html\">html_dependency_react</a></span><span class=\"op\">(</span><span class=\"op\">)</span></span>\n<span><span class=\"op\">)</span><span class=\"op\">)</span></span></code></pre></div>\n<p><code>reactR</code> uses the <code>V8</code> package if available to transform <code>JSX</code> and <code>ES2015</code> code with <code>babel</code>.</p>\n<div class=\"sourceCode\" id=\"cb3\"><pre class=\"downlit sourceCode r\">\n<code class=\"sourceCode R\"><span><span class=\"kw\"><a href=\"https://rdrr.io/r/base/library.html\" class=\"external-link\">library</a></span><span class=\"op\">(</span><span class=\"va\"><a href=\"https://github.com/react-R/reactR\" class=\"external-link\">reactR</a></span><span class=\"op\">)</span></span>\n<span><span class=\"kw\"><a href=\"https://rdrr.io/r/base/library.html\" class=\"external-link\">library</a></span><span class=\"op\">(</span><span class=\"va\"><a href=\"https://github.com/rstudio/htmltools\" class=\"external-link\">htmltools</a></span><span class=\"op\">)</span></span>\n<span></span>\n<span><span class=\"fu\"><a href=\"https://rstudio.github.io/htmltools/reference/browsable.html\" class=\"external-link\">browsable</a></span><span class=\"op\">(</span></span>\n<span>  <span class=\"fu\"><a href=\"https://rstudio.github.io/htmltools/reference/tagList.html\" class=\"external-link\">tagList</a></span><span class=\"op\">(</span></span>\n<span>    <span class=\"va\">tags</span><span class=\"op\">$</span><span class=\"fu\">div</span><span class=\"op\">(</span>id <span class=\"op\">=</span> <span class=\"st\">\"app\"</span><span class=\"op\">)</span>,</span>\n<span>    <span class=\"va\">tags</span><span class=\"op\">$</span><span class=\"fu\">script</span><span class=\"op\">(</span></span>\n<span>      <span class=\"fu\"><a href=\"reference/babel_transform.html\">babel_transform</a></span><span class=\"op\">(</span><span class=\"st\">'ReactDOM.render(&lt;h1&gt;Powered By React/JSX&lt;/h1&gt;,document.getElementById(\"app\"))'</span><span class=\"op\">)</span></span>\n<span>    <span class=\"op\">)</span>,</span>\n<span>    <span class=\"co\"># add core-js shim first for React in older versions of RStudio Viewer</span></span>\n<span>    <span class=\"co\">#html_dependency_corejs(),</span></span>\n<span>    <span class=\"fu\"><a href=\"reference/html_dependency_react.html\">html_dependency_react</a></span><span class=\"op\">(</span><span class=\"op\">)</span></span>\n<span>  <span class=\"op\">)</span></span>\n<span><span class=\"op\">)</span></span></code></pre></div>\n</div>\n<div class=\"section level2\">\n<h2 id=\"contributing-and-code-of-conduct\">Contributing and Code of Conduct<a class=\"anchor\" aria-label=\"anchor\" href=\"#contributing-and-code-of-conduct\"></a>\n</h2>\n<p>We welcome contributors and would love your participation. Please note that this project is released with a <a href=\"https://github.com/react-R/reactR/blob/master/CONDUCT.md\" class=\"external-link\">Contributor Code of Conduct</a>. By participating in this project you agree to abide by the terms.</p>\n</div>\n</div>\n  </div>\n\n  <div class=\"col-md-3 hidden-xs hidden-sm\" id=\"pkgdown-sidebar\">\n    <div class=\"links\">\n<h2 data-toc-skip>Links</h2>\n<ul class=\"list-unstyled\">\n<li><a href=\"https://cloud.r-project.org/package=reactR\" class=\"external-link\">View on CRAN</a></li>\n<li><a href=\"https://github.com/react-R/reactR/\" class=\"external-link\">Browse source code</a></li>\n<li><a href=\"https://github.com/react-R/reactR/issues\" class=\"external-link\">Report a bug</a></li>\n</ul>\n</div>\n\n<div class=\"license\">\n<h2 data-toc-skip>License</h2>\n<ul class=\"list-unstyled\">\n<li>\n<a href=\"https://opensource.org/licenses/mit-license.php\" class=\"external-link\">MIT</a> + file <a href=\"LICENSE-text.html\">LICENSE</a>\n</li>\n</ul>\n</div>\n\n\n<div class=\"citation\">\n<h2 data-toc-skip>Citation</h2>\n<ul class=\"list-unstyled\">\n<li><a href=\"authors.html#citation\">Citing reactR</a></li>\n</ul>\n</div>\n\n<div class=\"developers\">\n<h2 data-toc-skip>Developers</h2>\n<ul class=\"list-unstyled\">\n<li>Facebook Inc <br><small class=\"roles\"> Author, copyright holder </small>  </li>\n<li>Michel Weststrate <br><small class=\"roles\"> Author, copyright holder </small>  </li>\n<li>Kent Russell <br><small class=\"roles\"> Author, maintainer </small>  </li>\n<li>Alan Dipert <br><small class=\"roles\"> Author </small>  </li>\n<li>Greg Lin <br><small class=\"roles\"> Author </small>  </li>\n<li><a href=\"authors.html\">More about authors...</a></li>\n</ul>\n</div>\n\n\n\n  </div>\n</div>\n\n\n      <footer><div class=\"copyright\">\n  <p></p>\n<p>Developed by Facebook Inc, Michel Weststrate, Kent Russell, Alan Dipert, Greg Lin.</p>\n</div>\n\n<div class=\"pkgdown\">\n  <p></p>\n<p>Site built with <a href=\"https://pkgdown.r-lib.org/\" class=\"external-link\">pkgdown</a> 2.0.7.</p>\n</div>\n\n      </footer>\n</div>\n\n  \n\n\n  \n\n  </body>\n</html>\n"
  },
  {
    "path": "docs/news/index.html",
    "content": "<!DOCTYPE html>\n<!-- Generated by pkgdown: do not edit by hand --><html lang=\"en\"><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"><meta charset=\"utf-8\"><meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\"><meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"><title>Changelog • reactR</title><!-- favicons --><link rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"../favicon-16x16.png\"><link rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"../favicon-32x32.png\"><link rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"../apple-touch-icon.png\"><link rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"120x120\" href=\"../apple-touch-icon-120x120.png\"><link rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"76x76\" href=\"../apple-touch-icon-76x76.png\"><link rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"60x60\" href=\"../apple-touch-icon-60x60.png\"><!-- jquery --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js\" integrity=\"sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo=\" crossorigin=\"anonymous\"></script><!-- Bootstrap --><link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.4.1/css/bootstrap.min.css\" integrity=\"sha256-bZLfwXAP04zRMK2BjiO8iu9pf4FbLqX6zitd+tIvLhE=\" crossorigin=\"anonymous\"><script src=\"https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.4.1/js/bootstrap.min.js\" integrity=\"sha256-nuL8/2cJ5NDSSwnKD8VqreErSWHtnEP9E7AySL+1ev4=\" crossorigin=\"anonymous\"></script><!-- bootstrap-toc --><link rel=\"stylesheet\" href=\"../bootstrap-toc.css\"><script src=\"../bootstrap-toc.js\"></script><!-- Font Awesome icons --><link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/all.min.css\" integrity=\"sha256-mmgLkCYLUQbXn0B1SRqzHar6dCnv9oZFPEC1g1cwlkk=\" crossorigin=\"anonymous\"><link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/v4-shims.min.css\" integrity=\"sha256-wZjR52fzng1pJHwx4aV2AO3yyTOXrcDW7jBpJtTwVxw=\" crossorigin=\"anonymous\"><!-- clipboard.js --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.6/clipboard.min.js\" integrity=\"sha256-inc5kl9MA1hkeYUt+EC3BhlIgyp/2jDIyBLS6k3UxPI=\" crossorigin=\"anonymous\"></script><!-- headroom.js --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/headroom.min.js\" integrity=\"sha256-AsUX4SJE1+yuDu5+mAVzJbuYNPHj/WroHuZ8Ir/CkE0=\" crossorigin=\"anonymous\"></script><script src=\"https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/jQuery.headroom.min.js\" integrity=\"sha256-ZX/yNShbjqsohH1k95liqY9Gd8uOiE1S4vZc+9KQ1K4=\" crossorigin=\"anonymous\"></script><!-- pkgdown --><link href=\"../pkgdown.css\" rel=\"stylesheet\"><script src=\"../pkgdown.js\"></script><meta property=\"og:title\" content=\"Changelog\"><!-- mathjax --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js\" integrity=\"sha256-nvJJv9wWKEm88qvoQl9ekL2J+k/RWIsaSScxxlsrv8k=\" crossorigin=\"anonymous\"></script><script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/config/TeX-AMS-MML_HTMLorMML.js\" integrity=\"sha256-84DKXVJXs0/F8OTMzX4UR909+jtl4G7SPypPavF+GfA=\" crossorigin=\"anonymous\"></script><!--[if lt IE 9]>\n<script src=\"https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js\"></script>\n<script src=\"https://oss.maxcdn.com/respond/1.4.2/respond.min.js\"></script>\n<![endif]--></head><body data-spy=\"scroll\" data-target=\"#toc\">\n    \n\n    <div class=\"container template-news\">\n      <header><div class=\"navbar navbar-default navbar-fixed-top\" role=\"navigation\">\n  <div class=\"container\">\n    <div class=\"navbar-header\">\n      <button type=\"button\" class=\"navbar-toggle collapsed\" data-toggle=\"collapse\" data-target=\"#navbar\" aria-expanded=\"false\">\n        <span class=\"sr-only\">Toggle navigation</span>\n        <span class=\"icon-bar\"></span>\n        <span class=\"icon-bar\"></span>\n        <span class=\"icon-bar\"></span>\n      </button>\n      <span class=\"navbar-brand\">\n        <a class=\"navbar-link\" href=\"../index.html\">reactR</a>\n        <span class=\"version label label-default\" data-toggle=\"tooltip\" data-placement=\"bottom\" title=\"\">0.6.1</span>\n      </span>\n    </div>\n\n    <div id=\"navbar\" class=\"navbar-collapse collapse\">\n      <ul class=\"nav navbar-nav\"><li>\n  <a href=\"../reference/index.html\">Reference</a>\n</li>\n<li class=\"dropdown\">\n  <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\" role=\"button\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\n    Articles\n     \n    <span class=\"caret\"></span>\n  </a>\n  <ul class=\"dropdown-menu\" role=\"menu\"><li>\n      <a href=\"../articles/intro_htmlwidgets.html\">Authoring htmlwidgets powered by React with reactR</a>\n    </li>\n    <li>\n      <a href=\"../articles/intro_inputs.html\">Authoring inputs powered by React with reactR</a>\n    </li>\n    <li>\n      <a href=\"../articles/intro_reactR.html\">Intro to reactR</a>\n    </li>\n  </ul></li>\n<li>\n  <a href=\"../news/index.html\">Changelog</a>\n</li>\n      </ul><ul class=\"nav navbar-nav navbar-right\"><li>\n  <a href=\"https://github.com/react-R/reactR/\" class=\"external-link\">\n    <span class=\"fab fa-github fa-lg\"></span>\n     \n  </a>\n</li>\n      </ul></div><!--/.nav-collapse -->\n  </div><!--/.container -->\n</div><!--/.navbar -->\n\n      \n\n      </header><div class=\"row\">\n  <div class=\"col-md-9 contents\">\n    <div class=\"page-header\">\n      <h1 data-toc-skip>Changelog <small></small></h1>\n      <small>Source: <a href=\"https://github.com/react-R/reactR/blob/HEAD/NEWS.md\" class=\"external-link\"><code>NEWS.md</code></a></small>\n    </div>\n\n    <div class=\"section level2\">\n<h2 class=\"page-header\" data-toc-text=\"0.6.1\" id=\"reactr-061\">reactR 0.6.1<a class=\"anchor\" aria-label=\"anchor\" href=\"#reactr-061\"></a></h2>\n<ul><li>Fix issue where the <code>react-tools.umd.cjs</code> script could be blocked by the browser in some cases, such as apps deployed on shinyapps.io <a href=\"https://github.com/react-R/reactR/issues/86\" class=\"external-link\">#86</a>\n</li>\n</ul></div>\n    <div class=\"section level2\">\n<h2 class=\"page-header\" data-toc-text=\"0.6.0\" id=\"reactr-060\">reactR 0.6.0<small>2024-06-26</small><a class=\"anchor\" aria-label=\"anchor\" href=\"#reactr-060\"></a></h2>\n<ul><li>retain <code>list</code> in <code><a href=\"../reference/component.html\">reactR::component</a></code> classes <a href=\"https://github.com/react-R/reactR/issues/82\" class=\"external-link\">#82</a>\n</li>\n<li>hydrate props/attribs that are tags assuming tag-like props/attribs should be slots<a href=\"https://github.com/react-R/reactR/issues/67\" class=\"external-link\">#67</a> <a href=\"https://github.com/react-R/reactR/issues/61\" class=\"external-link\">#61</a>\n</li>\n<li>update build tools to <code>vite</code> from <code>webpack</code>\n</li>\n<li>update js testing library from <code>karma</code> to <code>vitest</code>\n</li>\n</ul></div>\n    <div class=\"section level2\">\n<h2 class=\"page-header\" data-toc-text=\"0.5.0\" id=\"reactr-050\">reactR 0.5.0<small>2023-10-11</small><a class=\"anchor\" aria-label=\"anchor\" href=\"#reactr-050\"></a></h2>\n<ul><li>Update react to <code>18.2.0</code>\n</li>\n</ul></div>\n    <div class=\"section level2\">\n<h2 class=\"page-header\" data-toc-text=\"0.4.4\" id=\"reactr-044\">reactR 0.4.4<small>2021-02-22</small><a class=\"anchor\" aria-label=\"anchor\" href=\"#reactr-044\"></a></h2>\n<ul><li><p>Update react to <code>16.12.0</code></p></li>\n<li><p>Add <code>style-loader</code> and <code>css-loader</code> to webpack config <a href=\"https://github.com/react-R/reactR/pull/50\" class=\"external-link\">pull 50</a></p></li>\n<li><p>Update to <code>PACKAGE::widget_html.WIDGETNAME</code> for new <code>htmlwidgets</code> convention <a href=\"https://github.com/react-R/reactR/pull/49\" class=\"external-link\">pull 49</a></p></li>\n<li><p>Clean up template <a href=\"https://github.com/react-R/reactR/pull/45\" class=\"external-link\">pull 45</a></p></li>\n</ul></div>\n    <div class=\"section level2\">\n<h2 class=\"page-header\" data-toc-text=\"0.4.3\" id=\"reactr-043\">reactR 0.4.3<small>2020-07-12</small><a class=\"anchor\" aria-label=\"anchor\" href=\"#reactr-043\"></a></h2>\n<ul><li><p>Add element to Shiny input <a href=\"https://github.com/react-R/reactR/pull/41\" class=\"external-link\">pull 41</a></p></li>\n<li><p>Upgrade npm dependencies</p></li>\n</ul></div>\n    <div class=\"section level2\">\n<h2 class=\"page-header\" data-toc-text=\"0.4.2\" id=\"reactr-042\">reactR 0.4.2<small>2020-01-24</small><a class=\"anchor\" aria-label=\"anchor\" href=\"#reactr-042\"></a></h2>\n<ul><li><p>Update react to <code>16.12.0</code></p></li>\n<li><p>Update core-js to <code>2.6.11</code></p></li>\n</ul></div>\n    <div class=\"section level2\">\n<h2 class=\"page-header\" data-toc-text=\"0.4.1\" id=\"reactr-041\">reactR 0.4.1<small>2019-07-07</small><a class=\"anchor\" aria-label=\"anchor\" href=\"#reactr-041\"></a></h2>\n<ul><li><p>Add support for <code><a href=\"https://rdrr.io/pkg/shiny/man/registerInputHandler.html\" class=\"external-link\">shiny::registerInputHandler</a></code> in Shiny inputs; <a href=\"https://github.com/react-R/reactR/pull/28\" class=\"external-link\">pull 28</a></p></li>\n<li><p>Add support for Shiny rate limit <a href=\"https://github.com/react-R/reactR/pull/29\" class=\"external-link\">pull 29</a></p></li>\n<li><p>Update react to <code>16.8.6</code></p></li>\n<li><p>Add <code>mobx</code> dependencies available through <code><a href=\"../reference/html_dependency_mobx.html\">html_dependency_mobx()</a></code></p></li>\n</ul></div>\n    <div class=\"section level2\">\n<h2 class=\"page-header\" data-toc-text=\"0.4.0\" id=\"reactr-040\">reactR 0.4.0<small>2019-04-17</small><a class=\"anchor\" aria-label=\"anchor\" href=\"#reactr-040\"></a></h2>\n<ul><li>Add Shiny input scaffold and functionality; <a href=\"https://react-r.github.io/reactR/articles/intro_inputs.html\" class=\"external-link\">tutorial</a> and <a href=\"https://github.com/react-R/reactR/pull/22\" class=\"external-link\">pull 22</a> thanks <a href=\"https://github.com/alandipert\" class=\"external-link\">@alandipert</a></li>\n</ul></div>\n    <div class=\"section level2\">\n<h2 class=\"page-header\" data-toc-text=\"0.3.1\" id=\"reactr-031\">reactR 0.3.1<a class=\"anchor\" aria-label=\"anchor\" href=\"#reactr-031\"></a></h2>\n<ul><li>Update react and react-dom to 16.8.1</li>\n<li>Add <code>usethis</code> R dependency</li>\n<li>Ignore node_modules in <code>.Rbuildignore</code> and <code>.gitignore</code>\n</li>\n<li>Set <code>{modules:false}</code> in <code>babel_transform</code> to avoid <code>\"use strict\"</code>; <a href=\"https://github.com/react-R/reactR/pull/15\" class=\"external-link\">pull 15</a>\n</li>\n<li>Use webpack to build <code>react-tools.js</code>; <a href=\"https://github.com/react-R/reactR/pull/16\" class=\"external-link\">pull 16</a>\n</li>\n<li>Attach component to the htmlwidget</li>\n</ul></div>\n    <div class=\"section level2\">\n<h2 class=\"page-header\" data-toc-text=\"0.3.0\" id=\"reactr-030\">reactR 0.3.0<small>2019-01-15</small><a class=\"anchor\" aria-label=\"anchor\" href=\"#reactr-030\"></a></h2>\n<ul><li>Add htmlwidget scaffold and helpers (see <a href=\"https://react-r.github.io/reactR/articles/intro_htmlwidgets.html\" class=\"external-link\">tutorial</a>)</li>\n<li>Update react and react-dom to 16.6.7</li>\n</ul></div>\n    <div class=\"section level2\">\n<h2 class=\"page-header\" data-toc-text=\"0.2.1\" id=\"reactr-021\">reactR 0.2.1<small>2018-10-25</small><a class=\"anchor\" aria-label=\"anchor\" href=\"#reactr-021\"></a></h2>\n<ul><li>Update react and react-dom to 16.6.0</li>\n</ul></div>\n    <div class=\"section level2\">\n<h2 class=\"page-header\" data-toc-text=\"0.2.0\" id=\"reactr-020\">reactR 0.2.0<small>2018-02-21</small><a class=\"anchor\" aria-label=\"anchor\" href=\"#reactr-020\"></a></h2>\n<ul><li>Update react and react-dom to 16.2.0</li>\n<li>Add core-js shim so that React will show up in RStudio Viewer</li>\n</ul></div>\n    <div class=\"section level2\">\n<h2 class=\"page-header\" data-toc-text=\"0.1.4\" id=\"reactr-014\">reactR 0.1.4<small>2017-11-22</small><a class=\"anchor\" aria-label=\"anchor\" href=\"#reactr-014\"></a></h2>\n<ul><li>Update react and react-dom to 16.1.1</li>\n</ul></div>\n    <div class=\"section level2\">\n<h2 class=\"page-header\" data-toc-text=\"0.1.3\" id=\"reactr-013\">reactR 0.1.3<small>2017-10-12</small><a class=\"anchor\" aria-label=\"anchor\" href=\"#reactr-013\"></a></h2>\n<ul><li>Update react and react-dom to 16.0.0</li>\n<li>Update babel to 6.26.0</li>\n</ul></div>\n    <div class=\"section level2\">\n<h2 class=\"page-header\" data-toc-text=\"0.1.2\" id=\"reactr-012\">reactR 0.1.2<small>2017-04-10</small><a class=\"anchor\" aria-label=\"anchor\" href=\"#reactr-012\"></a></h2>\n<ul><li>Update to react <code>15.5.0</code>\n</li>\n<li>Update to babel <code>6.24.0</code>\n</li>\n<li>Add fluent-ui(fabric) example</li>\n<li>Build doc site with <code>pkgdown</code>\n</li>\n</ul></div>\n    <div class=\"section level2\">\n<h2 class=\"page-header\" data-toc-text=\"0.1.1\" id=\"reactr-011\">reactR 0.1.1<a class=\"anchor\" aria-label=\"anchor\" href=\"#reactr-011\"></a></h2>\n<ul><li>Added a <code>NEWS.md</code> file to track changes to the package.</li>\n<li>Provide offline babel-standalone for babel_transform</li>\n</ul></div>\n    <div class=\"section level2\">\n<h2 class=\"page-header\" data-toc-text=\"0.1.0\" id=\"reactr-010\">reactR 0.1.0<small>2016-11-05</small><a class=\"anchor\" aria-label=\"anchor\" href=\"#reactr-010\"></a></h2>\n<ul><li>Initial release</li>\n</ul></div>\n  </div>\n\n  <div class=\"col-md-3 hidden-xs hidden-sm\" id=\"pkgdown-sidebar\">\n    <nav id=\"toc\" data-toggle=\"toc\" class=\"sticky-top\"><h2 data-toc-skip>Contents</h2>\n    </nav></div>\n\n</div>\n\n\n      <footer><div class=\"copyright\">\n  <p></p><p>Developed by Facebook Inc, Michel Weststrate, Kent Russell, Alan Dipert, Greg Lin.</p>\n</div>\n\n<div class=\"pkgdown\">\n  <p></p><p>Site built with <a href=\"https://pkgdown.r-lib.org/\" class=\"external-link\">pkgdown</a> 2.0.7.</p>\n</div>\n\n      </footer></div>\n\n  \n\n\n  \n\n  </body></html>\n\n"
  },
  {
    "path": "docs/pkgdown.css",
    "content": "/* Sticky footer */\n\n/**\n * Basic idea: https://philipwalton.github.io/solved-by-flexbox/demos/sticky-footer/\n * Details: https://github.com/philipwalton/solved-by-flexbox/blob/master/assets/css/components/site.css\n *\n * .Site -> body > .container\n * .Site-content -> body > .container .row\n * .footer -> footer\n *\n * Key idea seems to be to ensure that .container and __all its parents__\n * have height set to 100%\n *\n */\n\nhtml, body {\n  height: 100%;\n}\n\nbody {\n  position: relative;\n}\n\nbody > .container {\n  display: flex;\n  height: 100%;\n  flex-direction: column;\n}\n\nbody > .container .row {\n  flex: 1 0 auto;\n}\n\nfooter {\n  margin-top: 45px;\n  padding: 35px 0 36px;\n  border-top: 1px solid #e5e5e5;\n  color: #666;\n  display: flex;\n  flex-shrink: 0;\n}\nfooter p {\n  margin-bottom: 0;\n}\nfooter div {\n  flex: 1;\n}\nfooter .pkgdown {\n  text-align: right;\n}\nfooter p {\n  margin-bottom: 0;\n}\n\nimg.icon {\n  float: right;\n}\n\n/* Ensure in-page images don't run outside their container */\n.contents img {\n  max-width: 100%;\n  height: auto;\n}\n\n/* Fix bug in bootstrap (only seen in firefox) */\nsummary {\n  display: list-item;\n}\n\n/* Typographic tweaking ---------------------------------*/\n\n.contents .page-header {\n  margin-top: calc(-60px + 1em);\n}\n\ndd {\n  margin-left: 3em;\n}\n\n/* Section anchors ---------------------------------*/\n\na.anchor {\n  display: none;\n  margin-left: 5px;\n  width: 20px;\n  height: 20px;\n\n  background-image: url(./link.svg);\n  background-repeat: no-repeat;\n  background-size: 20px 20px;\n  background-position: center center;\n}\n\nh1:hover .anchor,\nh2:hover .anchor,\nh3:hover .anchor,\nh4:hover .anchor,\nh5:hover .anchor,\nh6:hover .anchor {\n  display: inline-block;\n}\n\n/* Fixes for fixed navbar --------------------------*/\n\n.contents h1, .contents h2, .contents h3, .contents h4 {\n  padding-top: 60px;\n  margin-top: -40px;\n}\n\n/* Navbar submenu --------------------------*/\n\n.dropdown-submenu {\n  position: relative;\n}\n\n.dropdown-submenu>.dropdown-menu {\n  top: 0;\n  left: 100%;\n  margin-top: -6px;\n  margin-left: -1px;\n  border-radius: 0 6px 6px 6px;\n}\n\n.dropdown-submenu:hover>.dropdown-menu {\n  display: block;\n}\n\n.dropdown-submenu>a:after {\n  display: block;\n  content: \" \";\n  float: right;\n  width: 0;\n  height: 0;\n  border-color: transparent;\n  border-style: solid;\n  border-width: 5px 0 5px 5px;\n  border-left-color: #cccccc;\n  margin-top: 5px;\n  margin-right: -10px;\n}\n\n.dropdown-submenu:hover>a:after {\n  border-left-color: #ffffff;\n}\n\n.dropdown-submenu.pull-left {\n  float: none;\n}\n\n.dropdown-submenu.pull-left>.dropdown-menu {\n  left: -100%;\n  margin-left: 10px;\n  border-radius: 6px 0 6px 6px;\n}\n\n/* Sidebar --------------------------*/\n\n#pkgdown-sidebar {\n  margin-top: 30px;\n  position: -webkit-sticky;\n  position: sticky;\n  top: 70px;\n}\n\n#pkgdown-sidebar h2 {\n  font-size: 1.5em;\n  margin-top: 1em;\n}\n\n#pkgdown-sidebar h2:first-child {\n  margin-top: 0;\n}\n\n#pkgdown-sidebar .list-unstyled li {\n  margin-bottom: 0.5em;\n}\n\n/* bootstrap-toc tweaks ------------------------------------------------------*/\n\n/* All levels of nav */\n\nnav[data-toggle='toc'] .nav > li > a {\n  padding: 4px 20px 4px 6px;\n  font-size: 1.5rem;\n  font-weight: 400;\n  color: inherit;\n}\n\nnav[data-toggle='toc'] .nav > li > a:hover,\nnav[data-toggle='toc'] .nav > li > a:focus {\n  padding-left: 5px;\n  color: inherit;\n  border-left: 1px solid #878787;\n}\n\nnav[data-toggle='toc'] .nav > .active > a,\nnav[data-toggle='toc'] .nav > .active:hover > a,\nnav[data-toggle='toc'] .nav > .active:focus > a {\n  padding-left: 5px;\n  font-size: 1.5rem;\n  font-weight: 400;\n  color: inherit;\n  border-left: 2px solid #878787;\n}\n\n/* Nav: second level (shown on .active) */\n\nnav[data-toggle='toc'] .nav .nav {\n  display: none; /* Hide by default, but at >768px, show it */\n  padding-bottom: 10px;\n}\n\nnav[data-toggle='toc'] .nav .nav > li > a {\n  padding-left: 16px;\n  font-size: 1.35rem;\n}\n\nnav[data-toggle='toc'] .nav .nav > li > a:hover,\nnav[data-toggle='toc'] .nav .nav > li > a:focus {\n  padding-left: 15px;\n}\n\nnav[data-toggle='toc'] .nav .nav > .active > a,\nnav[data-toggle='toc'] .nav .nav > .active:hover > a,\nnav[data-toggle='toc'] .nav .nav > .active:focus > a {\n  padding-left: 15px;\n  font-weight: 500;\n  font-size: 1.35rem;\n}\n\n/* orcid ------------------------------------------------------------------- */\n\n.orcid {\n  font-size: 16px;\n  color: #A6CE39;\n  /* margins are required by official ORCID trademark and display guidelines */\n  margin-left:4px;\n  margin-right:4px;\n  vertical-align: middle;\n}\n\n/* Reference index & topics ----------------------------------------------- */\n\n.ref-index th {font-weight: normal;}\n\n.ref-index td {vertical-align: top; min-width: 100px}\n.ref-index .icon {width: 40px;}\n.ref-index .alias {width: 40%;}\n.ref-index-icons .alias {width: calc(40% - 40px);}\n.ref-index .title {width: 60%;}\n\n.ref-arguments th {text-align: right; padding-right: 10px;}\n.ref-arguments th, .ref-arguments td {vertical-align: top; min-width: 100px}\n.ref-arguments .name {width: 20%;}\n.ref-arguments .desc {width: 80%;}\n\n/* Nice scrolling for wide elements --------------------------------------- */\n\ntable {\n  display: block;\n  overflow: auto;\n}\n\n/* Syntax highlighting ---------------------------------------------------- */\n\npre, code, pre code {\n  background-color: #f8f8f8;\n  color: #333;\n}\npre, pre code {\n  white-space: pre-wrap;\n  word-break: break-all;\n  overflow-wrap: break-word;\n}\n\npre {\n  border: 1px solid #eee;\n}\n\npre .img, pre .r-plt {\n  margin: 5px 0;\n}\n\npre .img img, pre .r-plt img {\n  background-color: #fff;\n}\n\ncode a, pre a {\n  color: #375f84;\n}\n\na.sourceLine:hover {\n  text-decoration: none;\n}\n\n.fl      {color: #1514b5;}\n.fu      {color: #000000;} /* function */\n.ch,.st  {color: #036a07;} /* string */\n.kw      {color: #264D66;} /* keyword */\n.co      {color: #888888;} /* comment */\n\n.error   {font-weight: bolder;}\n.warning {font-weight: bolder;}\n\n/* Clipboard --------------------------*/\n\n.hasCopyButton {\n  position: relative;\n}\n\n.btn-copy-ex {\n  position: absolute;\n  right: 0;\n  top: 0;\n  visibility: hidden;\n}\n\n.hasCopyButton:hover button.btn-copy-ex {\n  visibility: visible;\n}\n\n/* headroom.js ------------------------ */\n\n.headroom {\n  will-change: transform;\n  transition: transform 200ms linear;\n}\n.headroom--pinned {\n  transform: translateY(0%);\n}\n.headroom--unpinned {\n  transform: translateY(-100%);\n}\n\n/* mark.js ----------------------------*/\n\nmark {\n  background-color: rgba(255, 255, 51, 0.5);\n  border-bottom: 2px solid rgba(255, 153, 51, 0.3);\n  padding: 1px;\n}\n\n/* vertical spacing after htmlwidgets */\n.html-widget {\n  margin-bottom: 10px;\n}\n\n/* fontawesome ------------------------ */\n\n.fab {\n    font-family: \"Font Awesome 5 Brands\" !important;\n}\n\n/* don't display links in code chunks when printing */\n/* source: https://stackoverflow.com/a/10781533 */\n@media print {\n  code a:link:after, code a:visited:after {\n    content: \"\";\n  }\n}\n\n/* Section anchors ---------------------------------\n   Added in pandoc 2.11: https://github.com/jgm/pandoc-templates/commit/9904bf71\n*/\n\ndiv.csl-bib-body { }\ndiv.csl-entry {\n  clear: both;\n}\n.hanging-indent div.csl-entry {\n  margin-left:2em;\n  text-indent:-2em;\n}\ndiv.csl-left-margin {\n  min-width:2em;\n  float:left;\n}\ndiv.csl-right-inline {\n  margin-left:2em;\n  padding-left:1em;\n}\ndiv.csl-indent {\n  margin-left: 2em;\n}\n"
  },
  {
    "path": "docs/pkgdown.js",
    "content": "/* http://gregfranko.com/blog/jquery-best-practices/ */\n(function($) {\n  $(function() {\n\n    $('.navbar-fixed-top').headroom();\n\n    $('body').css('padding-top', $('.navbar').height() + 10);\n    $(window).resize(function(){\n      $('body').css('padding-top', $('.navbar').height() + 10);\n    });\n\n    $('[data-toggle=\"tooltip\"]').tooltip();\n\n    var cur_path = paths(location.pathname);\n    var links = $(\"#navbar ul li a\");\n    var max_length = -1;\n    var pos = -1;\n    for (var i = 0; i < links.length; i++) {\n      if (links[i].getAttribute(\"href\") === \"#\")\n        continue;\n      // Ignore external links\n      if (links[i].host !== location.host)\n        continue;\n\n      var nav_path = paths(links[i].pathname);\n\n      var length = prefix_length(nav_path, cur_path);\n      if (length > max_length) {\n        max_length = length;\n        pos = i;\n      }\n    }\n\n    // Add class to parent <li>, and enclosing <li> if in dropdown\n    if (pos >= 0) {\n      var menu_anchor = $(links[pos]);\n      menu_anchor.parent().addClass(\"active\");\n      menu_anchor.closest(\"li.dropdown\").addClass(\"active\");\n    }\n  });\n\n  function paths(pathname) {\n    var pieces = pathname.split(\"/\");\n    pieces.shift(); // always starts with /\n\n    var end = pieces[pieces.length - 1];\n    if (end === \"index.html\" || end === \"\")\n      pieces.pop();\n    return(pieces);\n  }\n\n  // Returns -1 if not found\n  function prefix_length(needle, haystack) {\n    if (needle.length > haystack.length)\n      return(-1);\n\n    // Special case for length-0 haystack, since for loop won't run\n    if (haystack.length === 0) {\n      return(needle.length === 0 ? 0 : -1);\n    }\n\n    for (var i = 0; i < haystack.length; i++) {\n      if (needle[i] != haystack[i])\n        return(i);\n    }\n\n    return(haystack.length);\n  }\n\n  /* Clipboard --------------------------*/\n\n  function changeTooltipMessage(element, msg) {\n    var tooltipOriginalTitle=element.getAttribute('data-original-title');\n    element.setAttribute('data-original-title', msg);\n    $(element).tooltip('show');\n    element.setAttribute('data-original-title', tooltipOriginalTitle);\n  }\n\n  if(ClipboardJS.isSupported()) {\n    $(document).ready(function() {\n      var copyButton = \"<button type='button' class='btn btn-primary btn-copy-ex' type = 'submit' title='Copy to clipboard' aria-label='Copy to clipboard' data-toggle='tooltip' data-placement='left auto' data-trigger='hover' data-clipboard-copy><i class='fa fa-copy'></i></button>\";\n\n      $(\"div.sourceCode\").addClass(\"hasCopyButton\");\n\n      // Insert copy buttons:\n      $(copyButton).prependTo(\".hasCopyButton\");\n\n      // Initialize tooltips:\n      $('.btn-copy-ex').tooltip({container: 'body'});\n\n      // Initialize clipboard:\n      var clipboardBtnCopies = new ClipboardJS('[data-clipboard-copy]', {\n        text: function(trigger) {\n          return trigger.parentNode.textContent.replace(/\\n#>[^\\n]*/g, \"\");\n        }\n      });\n\n      clipboardBtnCopies.on('success', function(e) {\n        changeTooltipMessage(e.trigger, 'Copied!');\n        e.clearSelection();\n      });\n\n      clipboardBtnCopies.on('error', function() {\n        changeTooltipMessage(e.trigger,'Press Ctrl+C or Command+C to copy');\n      });\n    });\n  }\n})(window.jQuery || window.$)\n"
  },
  {
    "path": "docs/pkgdown.yml",
    "content": "pandoc: 3.1.11\npkgdown: 2.0.7\npkgdown_sha: ~\narticles:\n  intro_htmlwidgets: intro_htmlwidgets.html\n  intro_inputs: intro_inputs.html\n  intro_reactR: intro_reactR.html\nlast_built: 2024-09-14T13:01Z\n\n"
  },
  {
    "path": "docs/reference/React.html",
    "content": "<!DOCTYPE html>\n<!-- Generated by pkgdown: do not edit by hand --><html lang=\"en\"><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"><meta charset=\"utf-8\"><meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\"><meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"><title>React component builder. — React • reactR</title><!-- favicons --><link rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"../favicon-16x16.png\"><link rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"../favicon-32x32.png\"><link rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"../apple-touch-icon.png\"><link rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"120x120\" href=\"../apple-touch-icon-120x120.png\"><link rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"76x76\" href=\"../apple-touch-icon-76x76.png\"><link rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"60x60\" href=\"../apple-touch-icon-60x60.png\"><!-- jquery --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js\" integrity=\"sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo=\" crossorigin=\"anonymous\"></script><!-- Bootstrap --><link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.4.1/css/bootstrap.min.css\" integrity=\"sha256-bZLfwXAP04zRMK2BjiO8iu9pf4FbLqX6zitd+tIvLhE=\" crossorigin=\"anonymous\"><script src=\"https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.4.1/js/bootstrap.min.js\" integrity=\"sha256-nuL8/2cJ5NDSSwnKD8VqreErSWHtnEP9E7AySL+1ev4=\" crossorigin=\"anonymous\"></script><!-- bootstrap-toc --><link rel=\"stylesheet\" href=\"../bootstrap-toc.css\"><script src=\"../bootstrap-toc.js\"></script><!-- Font Awesome icons --><link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/all.min.css\" integrity=\"sha256-mmgLkCYLUQbXn0B1SRqzHar6dCnv9oZFPEC1g1cwlkk=\" crossorigin=\"anonymous\"><link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/v4-shims.min.css\" integrity=\"sha256-wZjR52fzng1pJHwx4aV2AO3yyTOXrcDW7jBpJtTwVxw=\" crossorigin=\"anonymous\"><!-- clipboard.js --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.6/clipboard.min.js\" integrity=\"sha256-inc5kl9MA1hkeYUt+EC3BhlIgyp/2jDIyBLS6k3UxPI=\" crossorigin=\"anonymous\"></script><!-- headroom.js --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/headroom.min.js\" integrity=\"sha256-AsUX4SJE1+yuDu5+mAVzJbuYNPHj/WroHuZ8Ir/CkE0=\" crossorigin=\"anonymous\"></script><script src=\"https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/jQuery.headroom.min.js\" integrity=\"sha256-ZX/yNShbjqsohH1k95liqY9Gd8uOiE1S4vZc+9KQ1K4=\" crossorigin=\"anonymous\"></script><!-- pkgdown --><link href=\"../pkgdown.css\" rel=\"stylesheet\"><script src=\"../pkgdown.js\"></script><meta property=\"og:title\" content=\"React component builder. — React\"><meta property=\"og:description\" content=\"React is a syntactically-convenient way to create instances of React\ncomponents that can be sent to the browser for display. It is a list for\nwhich extract methods are defined, allowing\nobject creation syntax like React$MyComponent(x = 1) where\nMyComponent is a React component you have exposed to Shiny in\nJavaScript.\"><!-- mathjax --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js\" integrity=\"sha256-nvJJv9wWKEm88qvoQl9ekL2J+k/RWIsaSScxxlsrv8k=\" crossorigin=\"anonymous\"></script><script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/config/TeX-AMS-MML_HTMLorMML.js\" integrity=\"sha256-84DKXVJXs0/F8OTMzX4UR909+jtl4G7SPypPavF+GfA=\" crossorigin=\"anonymous\"></script><!--[if lt IE 9]>\n<script src=\"https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js\"></script>\n<script src=\"https://oss.maxcdn.com/respond/1.4.2/respond.min.js\"></script>\n<![endif]--></head><body data-spy=\"scroll\" data-target=\"#toc\">\n    \n\n    <div class=\"container template-reference-topic\">\n      <header><div class=\"navbar navbar-default navbar-fixed-top\" role=\"navigation\">\n  <div class=\"container\">\n    <div class=\"navbar-header\">\n      <button type=\"button\" class=\"navbar-toggle collapsed\" data-toggle=\"collapse\" data-target=\"#navbar\" aria-expanded=\"false\">\n        <span class=\"sr-only\">Toggle navigation</span>\n        <span class=\"icon-bar\"></span>\n        <span class=\"icon-bar\"></span>\n        <span class=\"icon-bar\"></span>\n      </button>\n      <span class=\"navbar-brand\">\n        <a class=\"navbar-link\" href=\"../index.html\">reactR</a>\n        <span class=\"version label label-default\" data-toggle=\"tooltip\" data-placement=\"bottom\" title=\"\">0.6.1</span>\n      </span>\n    </div>\n\n    <div id=\"navbar\" class=\"navbar-collapse collapse\">\n      <ul class=\"nav navbar-nav\"><li>\n  <a href=\"../reference/index.html\">Reference</a>\n</li>\n<li class=\"dropdown\">\n  <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\" role=\"button\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\n    Articles\n     \n    <span class=\"caret\"></span>\n  </a>\n  <ul class=\"dropdown-menu\" role=\"menu\"><li>\n      <a href=\"../articles/intro_htmlwidgets.html\">Authoring htmlwidgets powered by React with reactR</a>\n    </li>\n    <li>\n      <a href=\"../articles/intro_inputs.html\">Authoring inputs powered by React with reactR</a>\n    </li>\n    <li>\n      <a href=\"../articles/intro_reactR.html\">Intro to reactR</a>\n    </li>\n  </ul></li>\n<li>\n  <a href=\"../news/index.html\">Changelog</a>\n</li>\n      </ul><ul class=\"nav navbar-nav navbar-right\"><li>\n  <a href=\"https://github.com/react-R/reactR/\" class=\"external-link\">\n    <span class=\"fab fa-github fa-lg\"></span>\n     \n  </a>\n</li>\n      </ul></div><!--/.nav-collapse -->\n  </div><!--/.container -->\n</div><!--/.navbar -->\n\n      \n\n      </header><div class=\"row\">\n  <div class=\"col-md-9 contents\">\n    <div class=\"page-header\">\n    <h1>React component builder.</h1>\n    <small class=\"dont-index\">Source: <a href=\"https://github.com/react-R/reactR/blob/HEAD/R/reacttools.R\" class=\"external-link\"><code>R/reacttools.R</code></a></small>\n    <div class=\"hidden name\"><code>React.Rd</code></div>\n    </div>\n\n    <div class=\"ref-description\">\n    <p><code>React</code> is a syntactically-convenient way to create instances of React\ncomponents that can be sent to the browser for display. It is a list for\nwhich <a href=\"https://rdrr.io/r/base/InternalMethods.html\" class=\"external-link\">extract methods</a> are defined, allowing\nobject creation syntax like <code>React$MyComponent(x = 1)</code> where\n<code>MyComponent</code> is a React component you have exposed to Shiny in\nJavaScript.</p>\n    </div>\n\n    <div id=\"ref-usage\">\n    <div class=\"sourceCode\"><pre class=\"sourceCode r\"><code><span><span class=\"va\">React</span></span></code></pre></div>\n    </div>\n\n    <div id=\"format\">\n    <h2>Format</h2>\n    <p>An object of class <code>react_component_builder</code> of length 0.</p>\n    </div>\n    <div id=\"details\">\n    <h2>Details</h2>\n    <p>Internally, the <code><a href=\"component.html\">component</a></code> function is used to create the\ncomponent instance.</p>\n    </div>\n\n    <div id=\"ref-examples\">\n    <h2>Examples</h2>\n    <div class=\"sourceCode\"><pre class=\"sourceCode r\"><code><span class=\"r-in\"><span><span class=\"co\"># Create an instance of ParentComponent with two children,</span></span></span>\n<span class=\"r-in\"><span><span class=\"co\"># ChildComponent and OtherChildComponent.</span></span></span>\n<span class=\"r-in\"><span><span class=\"va\">React</span><span class=\"op\">$</span><span class=\"fu\">ParentComponent</span><span class=\"op\">(</span></span></span>\n<span class=\"r-in\"><span>  x <span class=\"op\">=</span> <span class=\"fl\">1</span>,</span></span>\n<span class=\"r-in\"><span>  y <span class=\"op\">=</span> <span class=\"fl\">2</span>,</span></span>\n<span class=\"r-in\"><span>  <span class=\"va\">React</span><span class=\"op\">$</span><span class=\"fu\">ChildComponent</span><span class=\"op\">(</span><span class=\"op\">)</span>,</span></span>\n<span class=\"r-in\"><span>  <span class=\"va\">React</span><span class=\"op\">$</span><span class=\"fu\">OtherChildComponent</span><span class=\"op\">(</span><span class=\"op\">)</span></span></span>\n<span class=\"r-in\"><span><span class=\"op\">)</span></span></span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> &lt;ParentComponent x=\"1\" y=\"2\"&gt;</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span>   &lt;ChildComponent&gt;&lt;/ChildComponent&gt;</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span>   &lt;OtherChildComponent&gt;&lt;/OtherChildComponent&gt;</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> &lt;/ParentComponent&gt;</span>\n</code></pre></div>\n    </div>\n  </div>\n  <div class=\"col-md-3 hidden-xs hidden-sm\" id=\"pkgdown-sidebar\">\n    <nav id=\"toc\" data-toggle=\"toc\" class=\"sticky-top\"><h2 data-toc-skip>Contents</h2>\n    </nav></div>\n</div>\n\n\n      <footer><div class=\"copyright\">\n  <p></p><p>Developed by Facebook Inc, Michel Weststrate, Kent Russell, Alan Dipert, Greg Lin.</p>\n</div>\n\n<div class=\"pkgdown\">\n  <p></p><p>Site built with <a href=\"https://pkgdown.r-lib.org/\" class=\"external-link\">pkgdown</a> 2.0.7.</p>\n</div>\n\n      </footer></div>\n\n  \n\n\n  \n\n  </body></html>\n\n"
  },
  {
    "path": "docs/reference/babel_transform.html",
    "content": "<!DOCTYPE html>\n<!-- Generated by pkgdown: do not edit by hand --><html lang=\"en\"><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"><meta charset=\"utf-8\"><meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\"><meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"><title>Transform Code with Babel — babel_transform • reactR</title><!-- favicons --><link rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"../favicon-16x16.png\"><link rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"../favicon-32x32.png\"><link rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"../apple-touch-icon.png\"><link rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"120x120\" href=\"../apple-touch-icon-120x120.png\"><link rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"76x76\" href=\"../apple-touch-icon-76x76.png\"><link rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"60x60\" href=\"../apple-touch-icon-60x60.png\"><!-- jquery --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js\" integrity=\"sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo=\" crossorigin=\"anonymous\"></script><!-- Bootstrap --><link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.4.1/css/bootstrap.min.css\" integrity=\"sha256-bZLfwXAP04zRMK2BjiO8iu9pf4FbLqX6zitd+tIvLhE=\" crossorigin=\"anonymous\"><script src=\"https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.4.1/js/bootstrap.min.js\" integrity=\"sha256-nuL8/2cJ5NDSSwnKD8VqreErSWHtnEP9E7AySL+1ev4=\" crossorigin=\"anonymous\"></script><!-- bootstrap-toc --><link rel=\"stylesheet\" href=\"../bootstrap-toc.css\"><script src=\"../bootstrap-toc.js\"></script><!-- Font Awesome icons --><link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/all.min.css\" integrity=\"sha256-mmgLkCYLUQbXn0B1SRqzHar6dCnv9oZFPEC1g1cwlkk=\" crossorigin=\"anonymous\"><link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/v4-shims.min.css\" integrity=\"sha256-wZjR52fzng1pJHwx4aV2AO3yyTOXrcDW7jBpJtTwVxw=\" crossorigin=\"anonymous\"><!-- clipboard.js --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.6/clipboard.min.js\" integrity=\"sha256-inc5kl9MA1hkeYUt+EC3BhlIgyp/2jDIyBLS6k3UxPI=\" crossorigin=\"anonymous\"></script><!-- headroom.js --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/headroom.min.js\" integrity=\"sha256-AsUX4SJE1+yuDu5+mAVzJbuYNPHj/WroHuZ8Ir/CkE0=\" crossorigin=\"anonymous\"></script><script src=\"https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/jQuery.headroom.min.js\" integrity=\"sha256-ZX/yNShbjqsohH1k95liqY9Gd8uOiE1S4vZc+9KQ1K4=\" crossorigin=\"anonymous\"></script><!-- pkgdown --><link href=\"../pkgdown.css\" rel=\"stylesheet\"><script src=\"../pkgdown.js\"></script><meta property=\"og:title\" content=\"Transform Code with Babel — babel_transform\"><meta property=\"og:description\" content=\"Helper function to use V8 with Babel so we can\navoid a JSX transformer with using reactR.\"><!-- mathjax --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js\" integrity=\"sha256-nvJJv9wWKEm88qvoQl9ekL2J+k/RWIsaSScxxlsrv8k=\" crossorigin=\"anonymous\"></script><script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/config/TeX-AMS-MML_HTMLorMML.js\" integrity=\"sha256-84DKXVJXs0/F8OTMzX4UR909+jtl4G7SPypPavF+GfA=\" crossorigin=\"anonymous\"></script><!--[if lt IE 9]>\n<script src=\"https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js\"></script>\n<script src=\"https://oss.maxcdn.com/respond/1.4.2/respond.min.js\"></script>\n<![endif]--></head><body data-spy=\"scroll\" data-target=\"#toc\">\n    \n\n    <div class=\"container template-reference-topic\">\n      <header><div class=\"navbar navbar-default navbar-fixed-top\" role=\"navigation\">\n  <div class=\"container\">\n    <div class=\"navbar-header\">\n      <button type=\"button\" class=\"navbar-toggle collapsed\" data-toggle=\"collapse\" data-target=\"#navbar\" aria-expanded=\"false\">\n        <span class=\"sr-only\">Toggle navigation</span>\n        <span class=\"icon-bar\"></span>\n        <span class=\"icon-bar\"></span>\n        <span class=\"icon-bar\"></span>\n      </button>\n      <span class=\"navbar-brand\">\n        <a class=\"navbar-link\" href=\"../index.html\">reactR</a>\n        <span class=\"version label label-default\" data-toggle=\"tooltip\" data-placement=\"bottom\" title=\"\">0.6.1</span>\n      </span>\n    </div>\n\n    <div id=\"navbar\" class=\"navbar-collapse collapse\">\n      <ul class=\"nav navbar-nav\"><li>\n  <a href=\"../reference/index.html\">Reference</a>\n</li>\n<li class=\"dropdown\">\n  <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\" role=\"button\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\n    Articles\n     \n    <span class=\"caret\"></span>\n  </a>\n  <ul class=\"dropdown-menu\" role=\"menu\"><li>\n      <a href=\"../articles/intro_htmlwidgets.html\">Authoring htmlwidgets powered by React with reactR</a>\n    </li>\n    <li>\n      <a href=\"../articles/intro_inputs.html\">Authoring inputs powered by React with reactR</a>\n    </li>\n    <li>\n      <a href=\"../articles/intro_reactR.html\">Intro to reactR</a>\n    </li>\n  </ul></li>\n<li>\n  <a href=\"../news/index.html\">Changelog</a>\n</li>\n      </ul><ul class=\"nav navbar-nav navbar-right\"><li>\n  <a href=\"https://github.com/react-R/reactR/\" class=\"external-link\">\n    <span class=\"fab fa-github fa-lg\"></span>\n     \n  </a>\n</li>\n      </ul></div><!--/.nav-collapse -->\n  </div><!--/.container -->\n</div><!--/.navbar -->\n\n      \n\n      </header><div class=\"row\">\n  <div class=\"col-md-9 contents\">\n    <div class=\"page-header\">\n    <h1>Transform Code with Babel</h1>\n    <small class=\"dont-index\">Source: <a href=\"https://github.com/react-R/reactR/blob/HEAD/R/babel.R\" class=\"external-link\"><code>R/babel.R</code></a></small>\n    <div class=\"hidden name\"><code>babel_transform.Rd</code></div>\n    </div>\n\n    <div class=\"ref-description\">\n    <p>Helper function to use <code>V8</code> with <code>Babel</code> so we can\navoid a JSX transformer with using <code>reactR</code>.</p>\n    </div>\n\n    <div id=\"ref-usage\">\n    <div class=\"sourceCode\"><pre class=\"sourceCode r\"><code><span><span class=\"fu\">babel_transform</span><span class=\"op\">(</span>code <span class=\"op\">=</span> <span class=\"st\">\"\"</span><span class=\"op\">)</span></span></code></pre></div>\n    </div>\n\n    <div id=\"arguments\">\n    <h2>Arguments</h2>\n    <dl><dt>code</dt>\n<dd><p><code>character</code></p></dd>\n\n</dl></div>\n    <div id=\"value\">\n    <h2>Value</h2>\n    \n\n<p>transformed <code>character</code></p>\n\n\n    </div>\n\n    <div id=\"ref-examples\">\n    <h2>Examples</h2>\n    <div class=\"sourceCode\"><pre class=\"sourceCode r\"><code><span class=\"r-in\"><span><span class=\"kw\">if</span> <span class=\"op\">(</span><span class=\"cn\">FALSE</span><span class=\"op\">)</span> <span class=\"op\">{</span></span></span>\n<span class=\"r-in\"><span><span class=\"kw\"><a href=\"https://rdrr.io/r/base/library.html\" class=\"external-link\">library</a></span><span class=\"op\">(</span><span class=\"va\"><a href=\"https://github.com/react-R/reactR\" class=\"external-link\">reactR</a></span><span class=\"op\">)</span></span></span>\n<span class=\"r-in\"><span><span class=\"fu\">babel_transform</span><span class=\"op\">(</span><span class=\"st\">'&lt;div&gt;react div&lt;/div&gt;'</span><span class=\"op\">)</span></span></span>\n<span class=\"r-in\"><span><span class=\"op\">}</span></span></span>\n</code></pre></div>\n    </div>\n  </div>\n  <div class=\"col-md-3 hidden-xs hidden-sm\" id=\"pkgdown-sidebar\">\n    <nav id=\"toc\" data-toggle=\"toc\" class=\"sticky-top\"><h2 data-toc-skip>Contents</h2>\n    </nav></div>\n</div>\n\n\n      <footer><div class=\"copyright\">\n  <p></p><p>Developed by Facebook Inc, Michel Weststrate, Kent Russell, Alan Dipert, Greg Lin.</p>\n</div>\n\n<div class=\"pkgdown\">\n  <p></p><p>Site built with <a href=\"https://pkgdown.r-lib.org/\" class=\"external-link\">pkgdown</a> 2.0.7.</p>\n</div>\n\n      </footer></div>\n\n  \n\n\n  \n\n  </body></html>\n\n"
  },
  {
    "path": "docs/reference/component.html",
    "content": "<!DOCTYPE html>\n<!-- Generated by pkgdown: do not edit by hand --><html lang=\"en\"><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"><meta charset=\"utf-8\"><meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\"><meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"><title>Create a React component — component • reactR</title><!-- favicons --><link rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"../favicon-16x16.png\"><link rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"../favicon-32x32.png\"><link rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"../apple-touch-icon.png\"><link rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"120x120\" href=\"../apple-touch-icon-120x120.png\"><link rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"76x76\" href=\"../apple-touch-icon-76x76.png\"><link rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"60x60\" href=\"../apple-touch-icon-60x60.png\"><!-- jquery --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js\" integrity=\"sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo=\" crossorigin=\"anonymous\"></script><!-- Bootstrap --><link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.4.1/css/bootstrap.min.css\" integrity=\"sha256-bZLfwXAP04zRMK2BjiO8iu9pf4FbLqX6zitd+tIvLhE=\" crossorigin=\"anonymous\"><script src=\"https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.4.1/js/bootstrap.min.js\" integrity=\"sha256-nuL8/2cJ5NDSSwnKD8VqreErSWHtnEP9E7AySL+1ev4=\" crossorigin=\"anonymous\"></script><!-- bootstrap-toc --><link rel=\"stylesheet\" href=\"../bootstrap-toc.css\"><script src=\"../bootstrap-toc.js\"></script><!-- Font Awesome icons --><link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/all.min.css\" integrity=\"sha256-mmgLkCYLUQbXn0B1SRqzHar6dCnv9oZFPEC1g1cwlkk=\" crossorigin=\"anonymous\"><link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/v4-shims.min.css\" integrity=\"sha256-wZjR52fzng1pJHwx4aV2AO3yyTOXrcDW7jBpJtTwVxw=\" crossorigin=\"anonymous\"><!-- clipboard.js --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.6/clipboard.min.js\" integrity=\"sha256-inc5kl9MA1hkeYUt+EC3BhlIgyp/2jDIyBLS6k3UxPI=\" crossorigin=\"anonymous\"></script><!-- headroom.js --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/headroom.min.js\" integrity=\"sha256-AsUX4SJE1+yuDu5+mAVzJbuYNPHj/WroHuZ8Ir/CkE0=\" crossorigin=\"anonymous\"></script><script src=\"https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/jQuery.headroom.min.js\" integrity=\"sha256-ZX/yNShbjqsohH1k95liqY9Gd8uOiE1S4vZc+9KQ1K4=\" crossorigin=\"anonymous\"></script><!-- pkgdown --><link href=\"../pkgdown.css\" rel=\"stylesheet\"><script src=\"../pkgdown.js\"></script><meta property=\"og:title\" content=\"Create a React component — component\"><meta property=\"og:description\" content=\"Create a React component\"><!-- mathjax --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js\" integrity=\"sha256-nvJJv9wWKEm88qvoQl9ekL2J+k/RWIsaSScxxlsrv8k=\" crossorigin=\"anonymous\"></script><script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/config/TeX-AMS-MML_HTMLorMML.js\" integrity=\"sha256-84DKXVJXs0/F8OTMzX4UR909+jtl4G7SPypPavF+GfA=\" crossorigin=\"anonymous\"></script><!--[if lt IE 9]>\n<script src=\"https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js\"></script>\n<script src=\"https://oss.maxcdn.com/respond/1.4.2/respond.min.js\"></script>\n<![endif]--></head><body data-spy=\"scroll\" data-target=\"#toc\">\n    \n\n    <div class=\"container template-reference-topic\">\n      <header><div class=\"navbar navbar-default navbar-fixed-top\" role=\"navigation\">\n  <div class=\"container\">\n    <div class=\"navbar-header\">\n      <button type=\"button\" class=\"navbar-toggle collapsed\" data-toggle=\"collapse\" data-target=\"#navbar\" aria-expanded=\"false\">\n        <span class=\"sr-only\">Toggle navigation</span>\n        <span class=\"icon-bar\"></span>\n        <span class=\"icon-bar\"></span>\n        <span class=\"icon-bar\"></span>\n      </button>\n      <span class=\"navbar-brand\">\n        <a class=\"navbar-link\" href=\"../index.html\">reactR</a>\n        <span class=\"version label label-default\" data-toggle=\"tooltip\" data-placement=\"bottom\" title=\"\">0.6.1</span>\n      </span>\n    </div>\n\n    <div id=\"navbar\" class=\"navbar-collapse collapse\">\n      <ul class=\"nav navbar-nav\"><li>\n  <a href=\"../reference/index.html\">Reference</a>\n</li>\n<li class=\"dropdown\">\n  <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\" role=\"button\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\n    Articles\n     \n    <span class=\"caret\"></span>\n  </a>\n  <ul class=\"dropdown-menu\" role=\"menu\"><li>\n      <a href=\"../articles/intro_htmlwidgets.html\">Authoring htmlwidgets powered by React with reactR</a>\n    </li>\n    <li>\n      <a href=\"../articles/intro_inputs.html\">Authoring inputs powered by React with reactR</a>\n    </li>\n    <li>\n      <a href=\"../articles/intro_reactR.html\">Intro to reactR</a>\n    </li>\n  </ul></li>\n<li>\n  <a href=\"../news/index.html\">Changelog</a>\n</li>\n      </ul><ul class=\"nav navbar-nav navbar-right\"><li>\n  <a href=\"https://github.com/react-R/reactR/\" class=\"external-link\">\n    <span class=\"fab fa-github fa-lg\"></span>\n     \n  </a>\n</li>\n      </ul></div><!--/.nav-collapse -->\n  </div><!--/.container -->\n</div><!--/.navbar -->\n\n      \n\n      </header><div class=\"row\">\n  <div class=\"col-md-9 contents\">\n    <div class=\"page-header\">\n    <h1>Create a React component</h1>\n    <small class=\"dont-index\">Source: <a href=\"https://github.com/react-R/reactR/blob/HEAD/R/reacttools.R\" class=\"external-link\"><code>R/reacttools.R</code></a></small>\n    <div class=\"hidden name\"><code>component.Rd</code></div>\n    </div>\n\n    <div class=\"ref-description\">\n    <p>Create a React component</p>\n    </div>\n\n    <div id=\"ref-usage\">\n    <div class=\"sourceCode\"><pre class=\"sourceCode r\"><code><span><span class=\"fu\">component</span><span class=\"op\">(</span><span class=\"va\">name</span>, varArgs <span class=\"op\">=</span> <span class=\"fu\"><a href=\"https://rdrr.io/r/base/list.html\" class=\"external-link\">list</a></span><span class=\"op\">(</span><span class=\"op\">)</span><span class=\"op\">)</span></span></code></pre></div>\n    </div>\n\n    <div id=\"arguments\">\n    <h2>Arguments</h2>\n    <dl><dt>name</dt>\n<dd><p>Name of the React component, which must start with an upper-case\ncharacter.</p></dd>\n\n\n<dt>varArgs</dt>\n<dd><p>Attributes and children of the element to pass along to\n<code><a href=\"https://rstudio.github.io/htmltools/reference/builder.html\" class=\"external-link\">tag</a></code> as <code>varArgs</code>.</p></dd>\n\n</dl></div>\n    <div id=\"value\">\n    <h2>Value</h2>\n    \n\n<p>An htmltools <code><a href=\"https://rstudio.github.io/htmltools/reference/builder.html\" class=\"external-link\">tag</a></code> object</p>\n    </div>\n\n    <div id=\"ref-examples\">\n    <h2>Examples</h2>\n    <div class=\"sourceCode\"><pre class=\"sourceCode r\"><code><span class=\"r-in\"><span><span class=\"fu\">component</span><span class=\"op\">(</span><span class=\"st\">\"ParentComponent\"</span>,</span></span>\n<span class=\"r-in\"><span>  <span class=\"fu\"><a href=\"https://rdrr.io/r/base/list.html\" class=\"external-link\">list</a></span><span class=\"op\">(</span></span></span>\n<span class=\"r-in\"><span>    x <span class=\"op\">=</span> <span class=\"fl\">1</span>,</span></span>\n<span class=\"r-in\"><span>    y <span class=\"op\">=</span> <span class=\"fl\">2</span>,</span></span>\n<span class=\"r-in\"><span>    <span class=\"fu\">component</span><span class=\"op\">(</span><span class=\"st\">\"ChildComponent\"</span><span class=\"op\">)</span>,</span></span>\n<span class=\"r-in\"><span>    <span class=\"fu\">component</span><span class=\"op\">(</span><span class=\"st\">\"OtherChildComponent\"</span><span class=\"op\">)</span></span></span>\n<span class=\"r-in\"><span>  <span class=\"op\">)</span></span></span>\n<span class=\"r-in\"><span><span class=\"op\">)</span></span></span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> &lt;ParentComponent x=\"1\" y=\"2\"&gt;</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span>   &lt;ChildComponent&gt;&lt;/ChildComponent&gt;</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span>   &lt;OtherChildComponent&gt;&lt;/OtherChildComponent&gt;</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> &lt;/ParentComponent&gt;</span>\n</code></pre></div>\n    </div>\n  </div>\n  <div class=\"col-md-3 hidden-xs hidden-sm\" id=\"pkgdown-sidebar\">\n    <nav id=\"toc\" data-toggle=\"toc\" class=\"sticky-top\"><h2 data-toc-skip>Contents</h2>\n    </nav></div>\n</div>\n\n\n      <footer><div class=\"copyright\">\n  <p></p><p>Developed by Facebook Inc, Michel Weststrate, Kent Russell, Alan Dipert, Greg Lin.</p>\n</div>\n\n<div class=\"pkgdown\">\n  <p></p><p>Site built with <a href=\"https://pkgdown.r-lib.org/\" class=\"external-link\">pkgdown</a> 2.0.7.</p>\n</div>\n\n      </footer></div>\n\n  \n\n\n  \n\n  </body></html>\n\n"
  },
  {
    "path": "docs/reference/createReactShinyInput.html",
    "content": "<!DOCTYPE html>\n<!-- Generated by pkgdown: do not edit by hand --><html lang=\"en\"><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"><meta charset=\"utf-8\"><meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\"><meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"><title>Create a React-based input — createReactShinyInput • reactR</title><!-- favicons --><link rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"../favicon-16x16.png\"><link rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"../favicon-32x32.png\"><link rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"../apple-touch-icon.png\"><link rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"120x120\" href=\"../apple-touch-icon-120x120.png\"><link rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"76x76\" href=\"../apple-touch-icon-76x76.png\"><link rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"60x60\" href=\"../apple-touch-icon-60x60.png\"><!-- jquery --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js\" integrity=\"sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo=\" crossorigin=\"anonymous\"></script><!-- Bootstrap --><link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.4.1/css/bootstrap.min.css\" integrity=\"sha256-bZLfwXAP04zRMK2BjiO8iu9pf4FbLqX6zitd+tIvLhE=\" crossorigin=\"anonymous\"><script src=\"https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.4.1/js/bootstrap.min.js\" integrity=\"sha256-nuL8/2cJ5NDSSwnKD8VqreErSWHtnEP9E7AySL+1ev4=\" crossorigin=\"anonymous\"></script><!-- bootstrap-toc --><link rel=\"stylesheet\" href=\"../bootstrap-toc.css\"><script src=\"../bootstrap-toc.js\"></script><!-- Font Awesome icons --><link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/all.min.css\" integrity=\"sha256-mmgLkCYLUQbXn0B1SRqzHar6dCnv9oZFPEC1g1cwlkk=\" crossorigin=\"anonymous\"><link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/v4-shims.min.css\" integrity=\"sha256-wZjR52fzng1pJHwx4aV2AO3yyTOXrcDW7jBpJtTwVxw=\" crossorigin=\"anonymous\"><!-- clipboard.js --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.6/clipboard.min.js\" integrity=\"sha256-inc5kl9MA1hkeYUt+EC3BhlIgyp/2jDIyBLS6k3UxPI=\" crossorigin=\"anonymous\"></script><!-- headroom.js --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/headroom.min.js\" integrity=\"sha256-AsUX4SJE1+yuDu5+mAVzJbuYNPHj/WroHuZ8Ir/CkE0=\" crossorigin=\"anonymous\"></script><script src=\"https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/jQuery.headroom.min.js\" integrity=\"sha256-ZX/yNShbjqsohH1k95liqY9Gd8uOiE1S4vZc+9KQ1K4=\" crossorigin=\"anonymous\"></script><!-- pkgdown --><link href=\"../pkgdown.css\" rel=\"stylesheet\"><script src=\"../pkgdown.js\"></script><meta property=\"og:title\" content=\"Create a React-based input — createReactShinyInput\"><meta property=\"og:description\" content=\"Create a React-based input\"><!-- mathjax --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js\" integrity=\"sha256-nvJJv9wWKEm88qvoQl9ekL2J+k/RWIsaSScxxlsrv8k=\" crossorigin=\"anonymous\"></script><script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/config/TeX-AMS-MML_HTMLorMML.js\" integrity=\"sha256-84DKXVJXs0/F8OTMzX4UR909+jtl4G7SPypPavF+GfA=\" crossorigin=\"anonymous\"></script><!--[if lt IE 9]>\n<script src=\"https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js\"></script>\n<script src=\"https://oss.maxcdn.com/respond/1.4.2/respond.min.js\"></script>\n<![endif]--></head><body data-spy=\"scroll\" data-target=\"#toc\">\n    \n\n    <div class=\"container template-reference-topic\">\n      <header><div class=\"navbar navbar-default navbar-fixed-top\" role=\"navigation\">\n  <div class=\"container\">\n    <div class=\"navbar-header\">\n      <button type=\"button\" class=\"navbar-toggle collapsed\" data-toggle=\"collapse\" data-target=\"#navbar\" aria-expanded=\"false\">\n        <span class=\"sr-only\">Toggle navigation</span>\n        <span class=\"icon-bar\"></span>\n        <span class=\"icon-bar\"></span>\n        <span class=\"icon-bar\"></span>\n      </button>\n      <span class=\"navbar-brand\">\n        <a class=\"navbar-link\" href=\"../index.html\">reactR</a>\n        <span class=\"version label label-default\" data-toggle=\"tooltip\" data-placement=\"bottom\" title=\"\">0.6.1</span>\n      </span>\n    </div>\n\n    <div id=\"navbar\" class=\"navbar-collapse collapse\">\n      <ul class=\"nav navbar-nav\"><li>\n  <a href=\"../reference/index.html\">Reference</a>\n</li>\n<li class=\"dropdown\">\n  <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\" role=\"button\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\n    Articles\n     \n    <span class=\"caret\"></span>\n  </a>\n  <ul class=\"dropdown-menu\" role=\"menu\"><li>\n      <a href=\"../articles/intro_htmlwidgets.html\">Authoring htmlwidgets powered by React with reactR</a>\n    </li>\n    <li>\n      <a href=\"../articles/intro_inputs.html\">Authoring inputs powered by React with reactR</a>\n    </li>\n    <li>\n      <a href=\"../articles/intro_reactR.html\">Intro to reactR</a>\n    </li>\n  </ul></li>\n<li>\n  <a href=\"../news/index.html\">Changelog</a>\n</li>\n      </ul><ul class=\"nav navbar-nav navbar-right\"><li>\n  <a href=\"https://github.com/react-R/reactR/\" class=\"external-link\">\n    <span class=\"fab fa-github fa-lg\"></span>\n     \n  </a>\n</li>\n      </ul></div><!--/.nav-collapse -->\n  </div><!--/.container -->\n</div><!--/.navbar -->\n\n      \n\n      </header><div class=\"row\">\n  <div class=\"col-md-9 contents\">\n    <div class=\"page-header\">\n    <h1>Create a React-based input</h1>\n    <small class=\"dont-index\">Source: <a href=\"https://github.com/react-R/reactR/blob/HEAD/R/reacttools.R\" class=\"external-link\"><code>R/reacttools.R</code></a></small>\n    <div class=\"hidden name\"><code>createReactShinyInput.Rd</code></div>\n    </div>\n\n    <div class=\"ref-description\">\n    <p>Create a React-based input</p>\n    </div>\n\n    <div id=\"ref-usage\">\n    <div class=\"sourceCode\"><pre class=\"sourceCode r\"><code><span><span class=\"fu\">createReactShinyInput</span><span class=\"op\">(</span></span>\n<span>  <span class=\"va\">inputId</span>,</span>\n<span>  <span class=\"va\">class</span>,</span>\n<span>  <span class=\"va\">dependencies</span>,</span>\n<span>  default <span class=\"op\">=</span> <span class=\"cn\">NULL</span>,</span>\n<span>  configuration <span class=\"op\">=</span> <span class=\"fu\"><a href=\"https://rdrr.io/r/base/list.html\" class=\"external-link\">list</a></span><span class=\"op\">(</span><span class=\"op\">)</span>,</span>\n<span>  container <span class=\"op\">=</span> <span class=\"fu\">htmltools</span><span class=\"fu\">::</span><span class=\"va\"><a href=\"https://rstudio.github.io/htmltools/reference/builder.html\" class=\"external-link\">tags</a></span><span class=\"op\">$</span><span class=\"va\">div</span></span>\n<span><span class=\"op\">)</span></span></code></pre></div>\n    </div>\n\n    <div id=\"arguments\">\n    <h2>Arguments</h2>\n    <dl><dt>inputId</dt>\n<dd><p>The <code>input</code> slot that will be used to access the value.</p></dd>\n\n\n<dt>class</dt>\n<dd><p>Space-delimited list of CSS class names that should identify\nthis input type in the browser.</p></dd>\n\n\n<dt>dependencies</dt>\n<dd><p>HTML dependencies to include in addition to those\nsupporting React. Must contain at least one dependency, that of the input's\nimplementation.</p></dd>\n\n\n<dt>default</dt>\n<dd><p>Initial value.</p></dd>\n\n\n<dt>configuration</dt>\n<dd><p>Static configuration data.</p></dd>\n\n\n<dt>container</dt>\n<dd><p>Function to generate an HTML element to contain the input.</p></dd>\n\n</dl></div>\n    <div id=\"value\">\n    <h2>Value</h2>\n    \n\n<p>Shiny input suitable for inclusion in a UI.</p>\n    </div>\n\n    <div id=\"ref-examples\">\n    <h2>Examples</h2>\n    <div class=\"sourceCode\"><pre class=\"sourceCode r\"><code><span class=\"r-in\"><span><span class=\"va\">myInput</span> <span class=\"op\">&lt;-</span> <span class=\"kw\">function</span><span class=\"op\">(</span><span class=\"va\">inputId</span>, <span class=\"va\">default</span> <span class=\"op\">=</span> <span class=\"st\">\"\"</span><span class=\"op\">)</span> <span class=\"op\">{</span></span></span>\n<span class=\"r-in\"><span>  <span class=\"co\"># The value of createReactShinyInput should be returned from input constructor functions.</span></span></span>\n<span class=\"r-in\"><span>  <span class=\"fu\">createReactShinyInput</span><span class=\"op\">(</span></span></span>\n<span class=\"r-in\"><span>    <span class=\"va\">inputId</span>,</span></span>\n<span class=\"r-in\"><span>    <span class=\"st\">\"myinput\"</span>,</span></span>\n<span class=\"r-in\"><span>    <span class=\"co\"># At least one htmlDependency must be provided -- the JavaScript implementation of the input.</span></span></span>\n<span class=\"r-in\"><span>    <span class=\"fu\"><a href=\"https://rstudio.github.io/htmltools/reference/htmlDependency.html\" class=\"external-link\">htmlDependency</a></span><span class=\"op\">(</span></span></span>\n<span class=\"r-in\"><span>      name <span class=\"op\">=</span> <span class=\"st\">\"my-input\"</span>,</span></span>\n<span class=\"r-in\"><span>      version <span class=\"op\">=</span> <span class=\"st\">\"1.0.0\"</span>,</span></span>\n<span class=\"r-in\"><span>      src <span class=\"op\">=</span> <span class=\"st\">\"www/mypackage/myinput\"</span>,</span></span>\n<span class=\"r-in\"><span>      package <span class=\"op\">=</span> <span class=\"st\">\"mypackage\"</span>,</span></span>\n<span class=\"r-in\"><span>      script <span class=\"op\">=</span> <span class=\"st\">\"myinput.js\"</span></span></span>\n<span class=\"r-in\"><span>    <span class=\"op\">)</span>,</span></span>\n<span class=\"r-in\"><span>    <span class=\"va\">default</span></span></span>\n<span class=\"r-in\"><span>  <span class=\"op\">)</span></span></span>\n<span class=\"r-in\"><span><span class=\"op\">}</span></span></span>\n</code></pre></div>\n    </div>\n  </div>\n  <div class=\"col-md-3 hidden-xs hidden-sm\" id=\"pkgdown-sidebar\">\n    <nav id=\"toc\" data-toggle=\"toc\" class=\"sticky-top\"><h2 data-toc-skip>Contents</h2>\n    </nav></div>\n</div>\n\n\n      <footer><div class=\"copyright\">\n  <p></p><p>Developed by Facebook Inc, Michel Weststrate, Kent Russell, Alan Dipert, Greg Lin.</p>\n</div>\n\n<div class=\"pkgdown\">\n  <p></p><p>Site built with <a href=\"https://pkgdown.r-lib.org/\" class=\"external-link\">pkgdown</a> 2.0.7.</p>\n</div>\n\n      </footer></div>\n\n  \n\n\n  \n\n  </body></html>\n\n"
  },
  {
    "path": "docs/reference/html_dependency_corejs.html",
    "content": "<!DOCTYPE html>\n<!-- Generated by pkgdown: do not edit by hand --><html lang=\"en\"><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"><meta charset=\"utf-8\"><meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\"><meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"><title>Shim Dependency for React in RStudio Viewer — html_dependency_corejs • reactR</title><!-- favicons --><link rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"../favicon-16x16.png\"><link rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"../favicon-32x32.png\"><link rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"../apple-touch-icon.png\"><link rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"120x120\" href=\"../apple-touch-icon-120x120.png\"><link rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"76x76\" href=\"../apple-touch-icon-76x76.png\"><link rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"60x60\" href=\"../apple-touch-icon-60x60.png\"><!-- jquery --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js\" integrity=\"sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo=\" crossorigin=\"anonymous\"></script><!-- Bootstrap --><link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.4.1/css/bootstrap.min.css\" integrity=\"sha256-bZLfwXAP04zRMK2BjiO8iu9pf4FbLqX6zitd+tIvLhE=\" crossorigin=\"anonymous\"><script src=\"https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.4.1/js/bootstrap.min.js\" integrity=\"sha256-nuL8/2cJ5NDSSwnKD8VqreErSWHtnEP9E7AySL+1ev4=\" crossorigin=\"anonymous\"></script><!-- bootstrap-toc --><link rel=\"stylesheet\" href=\"../bootstrap-toc.css\"><script src=\"../bootstrap-toc.js\"></script><!-- Font Awesome icons --><link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/all.min.css\" integrity=\"sha256-mmgLkCYLUQbXn0B1SRqzHar6dCnv9oZFPEC1g1cwlkk=\" crossorigin=\"anonymous\"><link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/v4-shims.min.css\" integrity=\"sha256-wZjR52fzng1pJHwx4aV2AO3yyTOXrcDW7jBpJtTwVxw=\" crossorigin=\"anonymous\"><!-- clipboard.js --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.6/clipboard.min.js\" integrity=\"sha256-inc5kl9MA1hkeYUt+EC3BhlIgyp/2jDIyBLS6k3UxPI=\" crossorigin=\"anonymous\"></script><!-- headroom.js --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/headroom.min.js\" integrity=\"sha256-AsUX4SJE1+yuDu5+mAVzJbuYNPHj/WroHuZ8Ir/CkE0=\" crossorigin=\"anonymous\"></script><script src=\"https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/jQuery.headroom.min.js\" integrity=\"sha256-ZX/yNShbjqsohH1k95liqY9Gd8uOiE1S4vZc+9KQ1K4=\" crossorigin=\"anonymous\"></script><!-- pkgdown --><link href=\"../pkgdown.css\" rel=\"stylesheet\"><script src=\"../pkgdown.js\"></script><meta property=\"og:title\" content=\"Shim Dependency for React in RStudio Viewer — html_dependency_corejs\"><meta property=\"og:description\" content=\"Add this first for 'React' to work in RStudio Viewer.\"><!-- mathjax --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js\" integrity=\"sha256-nvJJv9wWKEm88qvoQl9ekL2J+k/RWIsaSScxxlsrv8k=\" crossorigin=\"anonymous\"></script><script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/config/TeX-AMS-MML_HTMLorMML.js\" integrity=\"sha256-84DKXVJXs0/F8OTMzX4UR909+jtl4G7SPypPavF+GfA=\" crossorigin=\"anonymous\"></script><!--[if lt IE 9]>\n<script src=\"https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js\"></script>\n<script src=\"https://oss.maxcdn.com/respond/1.4.2/respond.min.js\"></script>\n<![endif]--></head><body data-spy=\"scroll\" data-target=\"#toc\">\n    \n\n    <div class=\"container template-reference-topic\">\n      <header><div class=\"navbar navbar-default navbar-fixed-top\" role=\"navigation\">\n  <div class=\"container\">\n    <div class=\"navbar-header\">\n      <button type=\"button\" class=\"navbar-toggle collapsed\" data-toggle=\"collapse\" data-target=\"#navbar\" aria-expanded=\"false\">\n        <span class=\"sr-only\">Toggle navigation</span>\n        <span class=\"icon-bar\"></span>\n        <span class=\"icon-bar\"></span>\n        <span class=\"icon-bar\"></span>\n      </button>\n      <span class=\"navbar-brand\">\n        <a class=\"navbar-link\" href=\"../index.html\">reactR</a>\n        <span class=\"version label label-default\" data-toggle=\"tooltip\" data-placement=\"bottom\" title=\"\">0.6.1</span>\n      </span>\n    </div>\n\n    <div id=\"navbar\" class=\"navbar-collapse collapse\">\n      <ul class=\"nav navbar-nav\"><li>\n  <a href=\"../reference/index.html\">Reference</a>\n</li>\n<li class=\"dropdown\">\n  <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\" role=\"button\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\n    Articles\n     \n    <span class=\"caret\"></span>\n  </a>\n  <ul class=\"dropdown-menu\" role=\"menu\"><li>\n      <a href=\"../articles/intro_htmlwidgets.html\">Authoring htmlwidgets powered by React with reactR</a>\n    </li>\n    <li>\n      <a href=\"../articles/intro_inputs.html\">Authoring inputs powered by React with reactR</a>\n    </li>\n    <li>\n      <a href=\"../articles/intro_reactR.html\">Intro to reactR</a>\n    </li>\n  </ul></li>\n<li>\n  <a href=\"../news/index.html\">Changelog</a>\n</li>\n      </ul><ul class=\"nav navbar-nav navbar-right\"><li>\n  <a href=\"https://github.com/react-R/reactR/\" class=\"external-link\">\n    <span class=\"fab fa-github fa-lg\"></span>\n     \n  </a>\n</li>\n      </ul></div><!--/.nav-collapse -->\n  </div><!--/.container -->\n</div><!--/.navbar -->\n\n      \n\n      </header><div class=\"row\">\n  <div class=\"col-md-9 contents\">\n    <div class=\"page-header\">\n    <h1>Shim Dependency for React in RStudio Viewer</h1>\n    <small class=\"dont-index\">Source: <a href=\"https://github.com/react-R/reactR/blob/HEAD/R/dependencies.R\" class=\"external-link\"><code>R/dependencies.R</code></a></small>\n    <div class=\"hidden name\"><code>html_dependency_corejs.Rd</code></div>\n    </div>\n\n    <div class=\"ref-description\">\n    <p>Add this first for 'React' to work in RStudio Viewer.</p>\n    </div>\n\n    <div id=\"ref-usage\">\n    <div class=\"sourceCode\"><pre class=\"sourceCode r\"><code><span><span class=\"fu\">html_dependency_corejs</span><span class=\"op\">(</span><span class=\"op\">)</span></span></code></pre></div>\n    </div>\n\n    <div id=\"value\">\n    <h2>Value</h2>\n    \n\n<p><code><a href=\"https://rstudio.github.io/htmltools/reference/htmlDependency.html\" class=\"external-link\">htmlDependency</a></code></p>\n\n\n    </div>\n\n  </div>\n  <div class=\"col-md-3 hidden-xs hidden-sm\" id=\"pkgdown-sidebar\">\n    <nav id=\"toc\" data-toggle=\"toc\" class=\"sticky-top\"><h2 data-toc-skip>Contents</h2>\n    </nav></div>\n</div>\n\n\n      <footer><div class=\"copyright\">\n  <p></p><p>Developed by Facebook Inc, Michel Weststrate, Kent Russell, Alan Dipert, Greg Lin.</p>\n</div>\n\n<div class=\"pkgdown\">\n  <p></p><p>Site built with <a href=\"https://pkgdown.r-lib.org/\" class=\"external-link\">pkgdown</a> 2.0.7.</p>\n</div>\n\n      </footer></div>\n\n  \n\n\n  \n\n  </body></html>\n\n"
  },
  {
    "path": "docs/reference/html_dependency_mobx.html",
    "content": "<!DOCTYPE html>\n<!-- Generated by pkgdown: do not edit by hand --><html lang=\"en\"><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"><meta charset=\"utf-8\"><meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\"><meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"><title>Dependencies for 'mobx' — html_dependency_mobx • reactR</title><!-- favicons --><link rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"../favicon-16x16.png\"><link rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"../favicon-32x32.png\"><link rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"../apple-touch-icon.png\"><link rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"120x120\" href=\"../apple-touch-icon-120x120.png\"><link rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"76x76\" href=\"../apple-touch-icon-76x76.png\"><link rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"60x60\" href=\"../apple-touch-icon-60x60.png\"><!-- jquery --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js\" integrity=\"sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo=\" crossorigin=\"anonymous\"></script><!-- Bootstrap --><link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.4.1/css/bootstrap.min.css\" integrity=\"sha256-bZLfwXAP04zRMK2BjiO8iu9pf4FbLqX6zitd+tIvLhE=\" crossorigin=\"anonymous\"><script src=\"https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.4.1/js/bootstrap.min.js\" integrity=\"sha256-nuL8/2cJ5NDSSwnKD8VqreErSWHtnEP9E7AySL+1ev4=\" crossorigin=\"anonymous\"></script><!-- bootstrap-toc --><link rel=\"stylesheet\" href=\"../bootstrap-toc.css\"><script src=\"../bootstrap-toc.js\"></script><!-- Font Awesome icons --><link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/all.min.css\" integrity=\"sha256-mmgLkCYLUQbXn0B1SRqzHar6dCnv9oZFPEC1g1cwlkk=\" crossorigin=\"anonymous\"><link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/v4-shims.min.css\" integrity=\"sha256-wZjR52fzng1pJHwx4aV2AO3yyTOXrcDW7jBpJtTwVxw=\" crossorigin=\"anonymous\"><!-- clipboard.js --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.6/clipboard.min.js\" integrity=\"sha256-inc5kl9MA1hkeYUt+EC3BhlIgyp/2jDIyBLS6k3UxPI=\" crossorigin=\"anonymous\"></script><!-- headroom.js --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/headroom.min.js\" integrity=\"sha256-AsUX4SJE1+yuDu5+mAVzJbuYNPHj/WroHuZ8Ir/CkE0=\" crossorigin=\"anonymous\"></script><script src=\"https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/jQuery.headroom.min.js\" integrity=\"sha256-ZX/yNShbjqsohH1k95liqY9Gd8uOiE1S4vZc+9KQ1K4=\" crossorigin=\"anonymous\"></script><!-- pkgdown --><link href=\"../pkgdown.css\" rel=\"stylesheet\"><script src=\"../pkgdown.js\"></script><meta property=\"og:title\" content=\"Dependencies for 'mobx' — html_dependency_mobx\"><meta property=\"og:description\" content=\"Add JavaScript 'mobx' and 'mobx-react' dependency.  When using with 'react', the order\nof the dependencies is important, so please add html_dependency_react() before\nhtml_dependency_mobx().\"><!-- mathjax --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js\" integrity=\"sha256-nvJJv9wWKEm88qvoQl9ekL2J+k/RWIsaSScxxlsrv8k=\" crossorigin=\"anonymous\"></script><script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/config/TeX-AMS-MML_HTMLorMML.js\" integrity=\"sha256-84DKXVJXs0/F8OTMzX4UR909+jtl4G7SPypPavF+GfA=\" crossorigin=\"anonymous\"></script><!--[if lt IE 9]>\n<script src=\"https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js\"></script>\n<script src=\"https://oss.maxcdn.com/respond/1.4.2/respond.min.js\"></script>\n<![endif]--></head><body data-spy=\"scroll\" data-target=\"#toc\">\n    \n\n    <div class=\"container template-reference-topic\">\n      <header><div class=\"navbar navbar-default navbar-fixed-top\" role=\"navigation\">\n  <div class=\"container\">\n    <div class=\"navbar-header\">\n      <button type=\"button\" class=\"navbar-toggle collapsed\" data-toggle=\"collapse\" data-target=\"#navbar\" aria-expanded=\"false\">\n        <span class=\"sr-only\">Toggle navigation</span>\n        <span class=\"icon-bar\"></span>\n        <span class=\"icon-bar\"></span>\n        <span class=\"icon-bar\"></span>\n      </button>\n      <span class=\"navbar-brand\">\n        <a class=\"navbar-link\" href=\"../index.html\">reactR</a>\n        <span class=\"version label label-default\" data-toggle=\"tooltip\" data-placement=\"bottom\" title=\"\">0.6.1</span>\n      </span>\n    </div>\n\n    <div id=\"navbar\" class=\"navbar-collapse collapse\">\n      <ul class=\"nav navbar-nav\"><li>\n  <a href=\"../reference/index.html\">Reference</a>\n</li>\n<li class=\"dropdown\">\n  <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\" role=\"button\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\n    Articles\n     \n    <span class=\"caret\"></span>\n  </a>\n  <ul class=\"dropdown-menu\" role=\"menu\"><li>\n      <a href=\"../articles/intro_htmlwidgets.html\">Authoring htmlwidgets powered by React with reactR</a>\n    </li>\n    <li>\n      <a href=\"../articles/intro_inputs.html\">Authoring inputs powered by React with reactR</a>\n    </li>\n    <li>\n      <a href=\"../articles/intro_reactR.html\">Intro to reactR</a>\n    </li>\n  </ul></li>\n<li>\n  <a href=\"../news/index.html\">Changelog</a>\n</li>\n      </ul><ul class=\"nav navbar-nav navbar-right\"><li>\n  <a href=\"https://github.com/react-R/reactR/\" class=\"external-link\">\n    <span class=\"fab fa-github fa-lg\"></span>\n     \n  </a>\n</li>\n      </ul></div><!--/.nav-collapse -->\n  </div><!--/.container -->\n</div><!--/.navbar -->\n\n      \n\n      </header><div class=\"row\">\n  <div class=\"col-md-9 contents\">\n    <div class=\"page-header\">\n    <h1>Dependencies for 'mobx'</h1>\n    <small class=\"dont-index\">Source: <a href=\"https://github.com/react-R/reactR/blob/HEAD/R/dependencies.R\" class=\"external-link\"><code>R/dependencies.R</code></a></small>\n    <div class=\"hidden name\"><code>html_dependency_mobx.Rd</code></div>\n    </div>\n\n    <div class=\"ref-description\">\n    <p>Add JavaScript 'mobx' and 'mobx-react' dependency.  When using with 'react', the order\nof the dependencies is important, so please add <code><a href=\"html_dependency_react.html\">html_dependency_react()</a></code> before\n<code>html_dependency_mobx()</code>.</p>\n    </div>\n\n    <div id=\"ref-usage\">\n    <div class=\"sourceCode\"><pre class=\"sourceCode r\"><code><span><span class=\"fu\">html_dependency_mobx</span><span class=\"op\">(</span>react <span class=\"op\">=</span> <span class=\"cn\">TRUE</span><span class=\"op\">)</span></span></code></pre></div>\n    </div>\n\n    <div id=\"arguments\">\n    <h2>Arguments</h2>\n    <dl><dt>react</dt>\n<dd><p><code>logical</code> to add react 'mobx' dependencies.</p></dd>\n\n</dl></div>\n    <div id=\"value\">\n    <h2>Value</h2>\n    \n\n<p><code><a href=\"https://rstudio.github.io/htmltools/reference/htmlDependency.html\" class=\"external-link\">htmlDependency</a></code></p>\n\n\n    </div>\n\n    <div id=\"ref-examples\">\n    <h2>Examples</h2>\n    <div class=\"sourceCode\"><pre class=\"sourceCode r\"><code><span class=\"r-in\"><span><span class=\"kw\">if</span><span class=\"op\">(</span><span class=\"fu\"><a href=\"https://rdrr.io/r/base/interactive.html\" class=\"external-link\">interactive</a></span><span class=\"op\">(</span><span class=\"op\">)</span><span class=\"op\">)</span> <span class=\"op\">{</span></span></span>\n<span class=\"r-in\"><span></span></span>\n<span class=\"r-in\"><span><span class=\"kw\"><a href=\"https://rdrr.io/r/base/library.html\" class=\"external-link\">library</a></span><span class=\"op\">(</span><span class=\"va\"><a href=\"https://github.com/rstudio/htmltools\" class=\"external-link\">htmltools</a></span><span class=\"op\">)</span></span></span>\n<span class=\"r-in\"><span><span class=\"kw\"><a href=\"https://rdrr.io/r/base/library.html\" class=\"external-link\">library</a></span><span class=\"op\">(</span><span class=\"va\"><a href=\"https://github.com/react-R/reactR\" class=\"external-link\">reactR</a></span><span class=\"op\">)</span></span></span>\n<span class=\"r-in\"><span></span></span>\n<span class=\"r-in\"><span><span class=\"fu\"><a href=\"https://rstudio.github.io/htmltools/reference/browsable.html\" class=\"external-link\">browsable</a></span><span class=\"op\">(</span></span></span>\n<span class=\"r-in\"><span>  <span class=\"fu\"><a href=\"https://rstudio.github.io/htmltools/reference/tagList.html\" class=\"external-link\">tagList</a></span><span class=\"op\">(</span></span></span>\n<span class=\"r-in\"><span>    <span class=\"fu\">html_dependency_mobx</span><span class=\"op\">(</span>react <span class=\"op\">=</span> <span class=\"cn\">FALSE</span><span class=\"op\">)</span>,</span></span>\n<span class=\"r-in\"><span>    <span class=\"fu\"><a href=\"https://rstudio.github.io/htmltools/reference/builder.html\" class=\"external-link\">div</a></span><span class=\"op\">(</span>id<span class=\"op\">=</span><span class=\"st\">\"test\"</span><span class=\"op\">)</span>,</span></span>\n<span class=\"r-in\"><span>    <span class=\"va\">tags</span><span class=\"op\">$</span><span class=\"fu\">script</span><span class=\"op\">(</span><span class=\"fu\"><a href=\"https://rstudio.github.io/htmltools/reference/HTML.html\" class=\"external-link\">HTML</a></span><span class=\"op\">(</span></span></span>\n<span class=\"r-in\"><span><span class=\"st\">\"</span></span></span>\n<span class=\"r-in\"><span><span class=\"st\">  var obs = mobx.observable({val: null})</span></span></span>\n<span class=\"r-in\"><span><span class=\"st\">  mobx.autorun(function() {</span></span></span>\n<span class=\"r-in\"><span><span class=\"st\">    document.querySelector('#test').innerText = obs.val</span></span></span>\n<span class=\"r-in\"><span><span class=\"st\">  })</span></span></span>\n<span class=\"r-in\"><span><span class=\"st\">  setInterval(</span></span></span>\n<span class=\"r-in\"><span><span class=\"st\">    function() {obs.val++},</span></span></span>\n<span class=\"r-in\"><span><span class=\"st\">    1000</span></span></span>\n<span class=\"r-in\"><span><span class=\"st\">  )</span></span></span>\n<span class=\"r-in\"><span><span class=\"st\">\"</span></span></span>\n<span class=\"r-in\"><span>    <span class=\"op\">)</span><span class=\"op\">)</span></span></span>\n<span class=\"r-in\"><span>  <span class=\"op\">)</span></span></span>\n<span class=\"r-in\"><span><span class=\"op\">)</span></span></span>\n<span class=\"r-in\"><span><span class=\"op\">}</span></span></span>\n<span class=\"r-in\"><span></span></span>\n<span class=\"r-in\"><span><span class=\"kw\">if</span> <span class=\"op\">(</span><span class=\"cn\">FALSE</span><span class=\"op\">)</span> <span class=\"op\">{</span></span></span>\n<span class=\"r-in\"><span><span class=\"co\"># use with react</span></span></span>\n<span class=\"r-in\"><span><span class=\"kw\"><a href=\"https://rdrr.io/r/base/library.html\" class=\"external-link\">library</a></span><span class=\"op\">(</span><span class=\"va\"><a href=\"https://github.com/rstudio/htmltools\" class=\"external-link\">htmltools</a></span><span class=\"op\">)</span></span></span>\n<span class=\"r-in\"><span><span class=\"kw\"><a href=\"https://rdrr.io/r/base/library.html\" class=\"external-link\">library</a></span><span class=\"op\">(</span><span class=\"va\"><a href=\"https://github.com/react-R/reactR\" class=\"external-link\">reactR</a></span><span class=\"op\">)</span></span></span>\n<span class=\"r-in\"><span></span></span>\n<span class=\"r-in\"><span><span class=\"fu\"><a href=\"https://rstudio.github.io/htmltools/reference/browsable.html\" class=\"external-link\">browsable</a></span><span class=\"op\">(</span></span></span>\n<span class=\"r-in\"><span>  <span class=\"fu\"><a href=\"https://rstudio.github.io/htmltools/reference/tagList.html\" class=\"external-link\">tagList</a></span><span class=\"op\">(</span></span></span>\n<span class=\"r-in\"><span>    <span class=\"fu\"><a href=\"html_dependency_react.html\">html_dependency_react</a></span><span class=\"op\">(</span><span class=\"op\">)</span>,</span></span>\n<span class=\"r-in\"><span>    <span class=\"fu\">html_dependency_mobx</span><span class=\"op\">(</span><span class=\"op\">)</span>,</span></span>\n<span class=\"r-in\"><span>    <span class=\"fu\"><a href=\"https://rstudio.github.io/htmltools/reference/builder.html\" class=\"external-link\">div</a></span><span class=\"op\">(</span>id<span class=\"op\">=</span><span class=\"st\">\"test\"</span><span class=\"op\">)</span>,</span></span>\n<span class=\"r-in\"><span>    <span class=\"va\">tags</span><span class=\"op\">$</span><span class=\"fu\">script</span><span class=\"op\">(</span><span class=\"fu\"><a href=\"https://rstudio.github.io/htmltools/reference/HTML.html\" class=\"external-link\">HTML</a></span><span class=\"op\">(</span><span class=\"fu\"><a href=\"babel_transform.html\">babel_transform</a></span><span class=\"op\">(</span></span></span>\n<span class=\"r-in\"><span><span class=\"st\">\"</span></span></span>\n<span class=\"r-in\"><span><span class=\"st\">  var obs = mobx.observable({val: null})</span></span></span>\n<span class=\"r-in\"><span><span class=\"st\">  var App = mobxReact.observer((props) =&gt; &lt;div&gt;{props.obs.val}&lt;/div&gt;)</span></span></span>\n<span class=\"r-in\"><span><span class=\"st\"></span></span></span>\n<span class=\"r-in\"><span><span class=\"st\">  ReactDOM.render(&lt;App obs = {obs}/&gt;, document.querySelector('#test'))</span></span></span>\n<span class=\"r-in\"><span><span class=\"st\"></span></span></span>\n<span class=\"r-in\"><span><span class=\"st\">  setInterval(</span></span></span>\n<span class=\"r-in\"><span><span class=\"st\">    function() {obs.val++},</span></span></span>\n<span class=\"r-in\"><span><span class=\"st\">    1000</span></span></span>\n<span class=\"r-in\"><span><span class=\"st\">  )</span></span></span>\n<span class=\"r-in\"><span><span class=\"st\">\"</span></span></span>\n<span class=\"r-in\"><span>    <span class=\"op\">)</span><span class=\"op\">)</span><span class=\"op\">)</span></span></span>\n<span class=\"r-in\"><span>  <span class=\"op\">)</span></span></span>\n<span class=\"r-in\"><span><span class=\"op\">)</span></span></span>\n<span class=\"r-in\"><span><span class=\"op\">}</span></span></span>\n</code></pre></div>\n    </div>\n  </div>\n  <div class=\"col-md-3 hidden-xs hidden-sm\" id=\"pkgdown-sidebar\">\n    <nav id=\"toc\" data-toggle=\"toc\" class=\"sticky-top\"><h2 data-toc-skip>Contents</h2>\n    </nav></div>\n</div>\n\n\n      <footer><div class=\"copyright\">\n  <p></p><p>Developed by Facebook Inc, Michel Weststrate, Kent Russell, Alan Dipert, Greg Lin.</p>\n</div>\n\n<div class=\"pkgdown\">\n  <p></p><p>Site built with <a href=\"https://pkgdown.r-lib.org/\" class=\"external-link\">pkgdown</a> 2.0.7.</p>\n</div>\n\n      </footer></div>\n\n  \n\n\n  \n\n  </body></html>\n\n"
  },
  {
    "path": "docs/reference/html_dependency_react.html",
    "content": "<!DOCTYPE html>\n<!-- Generated by pkgdown: do not edit by hand --><html lang=\"en\"><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"><meta charset=\"utf-8\"><meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\"><meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"><title>Dependencies for React — html_dependency_react • reactR</title><!-- favicons --><link rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"../favicon-16x16.png\"><link rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"../favicon-32x32.png\"><link rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"../apple-touch-icon.png\"><link rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"120x120\" href=\"../apple-touch-icon-120x120.png\"><link rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"76x76\" href=\"../apple-touch-icon-76x76.png\"><link rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"60x60\" href=\"../apple-touch-icon-60x60.png\"><!-- jquery --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js\" integrity=\"sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo=\" crossorigin=\"anonymous\"></script><!-- Bootstrap --><link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.4.1/css/bootstrap.min.css\" integrity=\"sha256-bZLfwXAP04zRMK2BjiO8iu9pf4FbLqX6zitd+tIvLhE=\" crossorigin=\"anonymous\"><script src=\"https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.4.1/js/bootstrap.min.js\" integrity=\"sha256-nuL8/2cJ5NDSSwnKD8VqreErSWHtnEP9E7AySL+1ev4=\" crossorigin=\"anonymous\"></script><!-- bootstrap-toc --><link rel=\"stylesheet\" href=\"../bootstrap-toc.css\"><script src=\"../bootstrap-toc.js\"></script><!-- Font Awesome icons --><link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/all.min.css\" integrity=\"sha256-mmgLkCYLUQbXn0B1SRqzHar6dCnv9oZFPEC1g1cwlkk=\" crossorigin=\"anonymous\"><link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/v4-shims.min.css\" integrity=\"sha256-wZjR52fzng1pJHwx4aV2AO3yyTOXrcDW7jBpJtTwVxw=\" crossorigin=\"anonymous\"><!-- clipboard.js --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.6/clipboard.min.js\" integrity=\"sha256-inc5kl9MA1hkeYUt+EC3BhlIgyp/2jDIyBLS6k3UxPI=\" crossorigin=\"anonymous\"></script><!-- headroom.js --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/headroom.min.js\" integrity=\"sha256-AsUX4SJE1+yuDu5+mAVzJbuYNPHj/WroHuZ8Ir/CkE0=\" crossorigin=\"anonymous\"></script><script src=\"https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/jQuery.headroom.min.js\" integrity=\"sha256-ZX/yNShbjqsohH1k95liqY9Gd8uOiE1S4vZc+9KQ1K4=\" crossorigin=\"anonymous\"></script><!-- pkgdown --><link href=\"../pkgdown.css\" rel=\"stylesheet\"><script src=\"../pkgdown.js\"></script><meta property=\"og:title\" content=\"Dependencies for React — html_dependency_react\"><meta property=\"og:description\" content=\"Add JavaScript 'React' dependency.  For this to work in RStudio Viewer, also include\nhtml_dependency_corejs.\"><!-- mathjax --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js\" integrity=\"sha256-nvJJv9wWKEm88qvoQl9ekL2J+k/RWIsaSScxxlsrv8k=\" crossorigin=\"anonymous\"></script><script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/config/TeX-AMS-MML_HTMLorMML.js\" integrity=\"sha256-84DKXVJXs0/F8OTMzX4UR909+jtl4G7SPypPavF+GfA=\" crossorigin=\"anonymous\"></script><!--[if lt IE 9]>\n<script src=\"https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js\"></script>\n<script src=\"https://oss.maxcdn.com/respond/1.4.2/respond.min.js\"></script>\n<![endif]--></head><body data-spy=\"scroll\" data-target=\"#toc\">\n    \n\n    <div class=\"container template-reference-topic\">\n      <header><div class=\"navbar navbar-default navbar-fixed-top\" role=\"navigation\">\n  <div class=\"container\">\n    <div class=\"navbar-header\">\n      <button type=\"button\" class=\"navbar-toggle collapsed\" data-toggle=\"collapse\" data-target=\"#navbar\" aria-expanded=\"false\">\n        <span class=\"sr-only\">Toggle navigation</span>\n        <span class=\"icon-bar\"></span>\n        <span class=\"icon-bar\"></span>\n        <span class=\"icon-bar\"></span>\n      </button>\n      <span class=\"navbar-brand\">\n        <a class=\"navbar-link\" href=\"../index.html\">reactR</a>\n        <span class=\"version label label-default\" data-toggle=\"tooltip\" data-placement=\"bottom\" title=\"\">0.6.1</span>\n      </span>\n    </div>\n\n    <div id=\"navbar\" class=\"navbar-collapse collapse\">\n      <ul class=\"nav navbar-nav\"><li>\n  <a href=\"../reference/index.html\">Reference</a>\n</li>\n<li class=\"dropdown\">\n  <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\" role=\"button\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\n    Articles\n     \n    <span class=\"caret\"></span>\n  </a>\n  <ul class=\"dropdown-menu\" role=\"menu\"><li>\n      <a href=\"../articles/intro_htmlwidgets.html\">Authoring htmlwidgets powered by React with reactR</a>\n    </li>\n    <li>\n      <a href=\"../articles/intro_inputs.html\">Authoring inputs powered by React with reactR</a>\n    </li>\n    <li>\n      <a href=\"../articles/intro_reactR.html\">Intro to reactR</a>\n    </li>\n  </ul></li>\n<li>\n  <a href=\"../news/index.html\">Changelog</a>\n</li>\n      </ul><ul class=\"nav navbar-nav navbar-right\"><li>\n  <a href=\"https://github.com/react-R/reactR/\" class=\"external-link\">\n    <span class=\"fab fa-github fa-lg\"></span>\n     \n  </a>\n</li>\n      </ul></div><!--/.nav-collapse -->\n  </div><!--/.container -->\n</div><!--/.navbar -->\n\n      \n\n      </header><div class=\"row\">\n  <div class=\"col-md-9 contents\">\n    <div class=\"page-header\">\n    <h1>Dependencies for React</h1>\n    <small class=\"dont-index\">Source: <a href=\"https://github.com/react-R/reactR/blob/HEAD/R/dependencies.R\" class=\"external-link\"><code>R/dependencies.R</code></a></small>\n    <div class=\"hidden name\"><code>html_dependency_react.Rd</code></div>\n    </div>\n\n    <div class=\"ref-description\">\n    <p>Add JavaScript 'React' dependency.  For this to work in RStudio Viewer, also include\n<code><a href=\"html_dependency_corejs.html\">html_dependency_corejs</a></code>.</p>\n    </div>\n\n    <div id=\"ref-usage\">\n    <div class=\"sourceCode\"><pre class=\"sourceCode r\"><code><span><span class=\"fu\">html_dependency_react</span><span class=\"op\">(</span>offline <span class=\"op\">=</span> <span class=\"cn\">TRUE</span><span class=\"op\">)</span></span></code></pre></div>\n    </div>\n\n    <div id=\"arguments\">\n    <h2>Arguments</h2>\n    <dl><dt>offline</dt>\n<dd><p><code>logical</code> to use local file dependencies.  If <code>FALSE</code>,\nthen the dependencies use the Facebook cdn as its <code>src</code>.\nTo use with <code>JSX</code> see <code><a href=\"babel_transform.html\">babel_transform</a></code>.</p></dd>\n\n</dl></div>\n    <div id=\"value\">\n    <h2>Value</h2>\n    \n\n<p><code><a href=\"https://rstudio.github.io/htmltools/reference/htmlDependency.html\" class=\"external-link\">htmlDependency</a></code></p>\n\n\n    </div>\n\n    <div id=\"ref-examples\">\n    <h2>Examples</h2>\n    <div class=\"sourceCode\"><pre class=\"sourceCode r\"><code><span class=\"r-in\"><span><span class=\"kw\"><a href=\"https://rdrr.io/r/base/library.html\" class=\"external-link\">library</a></span><span class=\"op\">(</span><span class=\"va\"><a href=\"https://github.com/react-R/reactR\" class=\"external-link\">reactR</a></span><span class=\"op\">)</span></span></span>\n<span class=\"r-in\"><span><span class=\"kw\"><a href=\"https://rdrr.io/r/base/library.html\" class=\"external-link\">library</a></span><span class=\"op\">(</span><span class=\"va\"><a href=\"https://github.com/rstudio/htmltools\" class=\"external-link\">htmltools</a></span><span class=\"op\">)</span></span></span>\n<span class=\"r-wrn co\"><span class=\"r-pr\">#&gt;</span> <span class=\"warning\">Warning: </span>package 'htmltools' was built under R version 4.3.3</span>\n<span class=\"r-in\"><span></span></span>\n<span class=\"r-in\"><span><span class=\"fu\"><a href=\"https://rstudio.github.io/htmltools/reference/tagList.html\" class=\"external-link\">tagList</a></span><span class=\"op\">(</span></span></span>\n<span class=\"r-in\"><span>  <span class=\"va\">tags</span><span class=\"op\">$</span><span class=\"fu\">script</span><span class=\"op\">(</span></span></span>\n<span class=\"r-in\"><span>  <span class=\"st\">\"</span></span></span>\n<span class=\"r-in\"><span><span class=\"st\">    ReactDOM.render(</span></span></span>\n<span class=\"r-in\"><span><span class=\"st\">      React.createElement(</span></span></span>\n<span class=\"r-in\"><span><span class=\"st\">        'h1',</span></span></span>\n<span class=\"r-in\"><span><span class=\"st\">        null,</span></span></span>\n<span class=\"r-in\"><span><span class=\"st\">        'Powered by React'</span></span></span>\n<span class=\"r-in\"><span><span class=\"st\">      ),</span></span></span>\n<span class=\"r-in\"><span><span class=\"st\">      document.body</span></span></span>\n<span class=\"r-in\"><span><span class=\"st\">    )</span></span></span>\n<span class=\"r-in\"><span><span class=\"st\">  \"</span></span></span>\n<span class=\"r-in\"><span>  <span class=\"op\">)</span>,</span></span>\n<span class=\"r-in\"><span>   <span class=\"co\">#add core-js first to work in RStudio Viewer</span></span></span>\n<span class=\"r-in\"><span>  <span class=\"fu\"><a href=\"html_dependency_corejs.html\">html_dependency_corejs</a></span><span class=\"op\">(</span><span class=\"op\">)</span>,</span></span>\n<span class=\"r-in\"><span>  <span class=\"fu\">html_dependency_react</span><span class=\"op\">(</span><span class=\"op\">)</span> <span class=\"co\">#offline=FALSE for CDN</span></span></span>\n<span class=\"r-in\"><span><span class=\"op\">)</span></span></span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> &lt;script&gt;</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span>     ReactDOM.render(</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span>       React.createElement(</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span>         'h1',</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span>         null,</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span>         'Powered by React'</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span>       ),</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span>       document.body</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span>     )</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span>   &lt;/script&gt;</span>\n</code></pre></div>\n    </div>\n  </div>\n  <div class=\"col-md-3 hidden-xs hidden-sm\" id=\"pkgdown-sidebar\">\n    <nav id=\"toc\" data-toggle=\"toc\" class=\"sticky-top\"><h2 data-toc-skip>Contents</h2>\n    </nav></div>\n</div>\n\n\n      <footer><div class=\"copyright\">\n  <p></p><p>Developed by Facebook Inc, Michel Weststrate, Kent Russell, Alan Dipert, Greg Lin.</p>\n</div>\n\n<div class=\"pkgdown\">\n  <p></p><p>Site built with <a href=\"https://pkgdown.r-lib.org/\" class=\"external-link\">pkgdown</a> 2.0.7.</p>\n</div>\n\n      </footer></div>\n\n  \n\n\n  \n\n  </body></html>\n\n"
  },
  {
    "path": "docs/reference/html_dependency_reacttools.html",
    "content": "<!DOCTYPE html>\n<!-- Generated by pkgdown: do not edit by hand --><html lang=\"en\"><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"><meta charset=\"utf-8\"><meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\"><meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"><title>Adds window.reactR.exposeComponents and window.reactR.hydrate — html_dependency_reacttools • reactR</title><!-- favicons --><link rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"../favicon-16x16.png\"><link rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"../favicon-32x32.png\"><link rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"../apple-touch-icon.png\"><link rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"120x120\" href=\"../apple-touch-icon-120x120.png\"><link rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"76x76\" href=\"../apple-touch-icon-76x76.png\"><link rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"60x60\" href=\"../apple-touch-icon-60x60.png\"><!-- jquery --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js\" integrity=\"sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo=\" crossorigin=\"anonymous\"></script><!-- Bootstrap --><link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.4.1/css/bootstrap.min.css\" integrity=\"sha256-bZLfwXAP04zRMK2BjiO8iu9pf4FbLqX6zitd+tIvLhE=\" crossorigin=\"anonymous\"><script src=\"https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.4.1/js/bootstrap.min.js\" integrity=\"sha256-nuL8/2cJ5NDSSwnKD8VqreErSWHtnEP9E7AySL+1ev4=\" crossorigin=\"anonymous\"></script><!-- bootstrap-toc --><link rel=\"stylesheet\" href=\"../bootstrap-toc.css\"><script src=\"../bootstrap-toc.js\"></script><!-- Font Awesome icons --><link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/all.min.css\" integrity=\"sha256-mmgLkCYLUQbXn0B1SRqzHar6dCnv9oZFPEC1g1cwlkk=\" crossorigin=\"anonymous\"><link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/v4-shims.min.css\" integrity=\"sha256-wZjR52fzng1pJHwx4aV2AO3yyTOXrcDW7jBpJtTwVxw=\" crossorigin=\"anonymous\"><!-- clipboard.js --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.6/clipboard.min.js\" integrity=\"sha256-inc5kl9MA1hkeYUt+EC3BhlIgyp/2jDIyBLS6k3UxPI=\" crossorigin=\"anonymous\"></script><!-- headroom.js --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/headroom.min.js\" integrity=\"sha256-AsUX4SJE1+yuDu5+mAVzJbuYNPHj/WroHuZ8Ir/CkE0=\" crossorigin=\"anonymous\"></script><script src=\"https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/jQuery.headroom.min.js\" integrity=\"sha256-ZX/yNShbjqsohH1k95liqY9Gd8uOiE1S4vZc+9KQ1K4=\" crossorigin=\"anonymous\"></script><!-- pkgdown --><link href=\"../pkgdown.css\" rel=\"stylesheet\"><script src=\"../pkgdown.js\"></script><meta property=\"og:title\" content=\"Adds window.reactR.exposeComponents and window.reactR.hydrate — html_dependency_reacttools\"><meta property=\"og:description\" content=\"Adds window.reactR.exposeComponents and window.reactR.hydrate\"><!-- mathjax --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js\" integrity=\"sha256-nvJJv9wWKEm88qvoQl9ekL2J+k/RWIsaSScxxlsrv8k=\" crossorigin=\"anonymous\"></script><script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/config/TeX-AMS-MML_HTMLorMML.js\" integrity=\"sha256-84DKXVJXs0/F8OTMzX4UR909+jtl4G7SPypPavF+GfA=\" crossorigin=\"anonymous\"></script><!--[if lt IE 9]>\n<script src=\"https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js\"></script>\n<script src=\"https://oss.maxcdn.com/respond/1.4.2/respond.min.js\"></script>\n<![endif]--></head><body data-spy=\"scroll\" data-target=\"#toc\">\n    \n\n    <div class=\"container template-reference-topic\">\n      <header><div class=\"navbar navbar-default navbar-fixed-top\" role=\"navigation\">\n  <div class=\"container\">\n    <div class=\"navbar-header\">\n      <button type=\"button\" class=\"navbar-toggle collapsed\" data-toggle=\"collapse\" data-target=\"#navbar\" aria-expanded=\"false\">\n        <span class=\"sr-only\">Toggle navigation</span>\n        <span class=\"icon-bar\"></span>\n        <span class=\"icon-bar\"></span>\n        <span class=\"icon-bar\"></span>\n      </button>\n      <span class=\"navbar-brand\">\n        <a class=\"navbar-link\" href=\"../index.html\">reactR</a>\n        <span class=\"version label label-default\" data-toggle=\"tooltip\" data-placement=\"bottom\" title=\"\">0.6.1</span>\n      </span>\n    </div>\n\n    <div id=\"navbar\" class=\"navbar-collapse collapse\">\n      <ul class=\"nav navbar-nav\"><li>\n  <a href=\"../reference/index.html\">Reference</a>\n</li>\n<li class=\"dropdown\">\n  <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\" role=\"button\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\n    Articles\n     \n    <span class=\"caret\"></span>\n  </a>\n  <ul class=\"dropdown-menu\" role=\"menu\"><li>\n      <a href=\"../articles/intro_htmlwidgets.html\">Authoring htmlwidgets powered by React with reactR</a>\n    </li>\n    <li>\n      <a href=\"../articles/intro_inputs.html\">Authoring inputs powered by React with reactR</a>\n    </li>\n    <li>\n      <a href=\"../articles/intro_reactR.html\">Intro to reactR</a>\n    </li>\n  </ul></li>\n<li>\n  <a href=\"../news/index.html\">Changelog</a>\n</li>\n      </ul><ul class=\"nav navbar-nav navbar-right\"><li>\n  <a href=\"https://github.com/react-R/reactR/\" class=\"external-link\">\n    <span class=\"fab fa-github fa-lg\"></span>\n     \n  </a>\n</li>\n      </ul></div><!--/.nav-collapse -->\n  </div><!--/.container -->\n</div><!--/.navbar -->\n\n      \n\n      </header><div class=\"row\">\n  <div class=\"col-md-9 contents\">\n    <div class=\"page-header\">\n    <h1>Adds window.reactR.exposeComponents and window.reactR.hydrate</h1>\n    <small class=\"dont-index\">Source: <a href=\"https://github.com/react-R/reactR/blob/HEAD/R/dependencies.R\" class=\"external-link\"><code>R/dependencies.R</code></a></small>\n    <div class=\"hidden name\"><code>html_dependency_reacttools.Rd</code></div>\n    </div>\n\n    <div class=\"ref-description\">\n    <p>Adds window.reactR.exposeComponents and window.reactR.hydrate</p>\n    </div>\n\n    <div id=\"ref-usage\">\n    <div class=\"sourceCode\"><pre class=\"sourceCode r\"><code><span><span class=\"fu\">html_dependency_reacttools</span><span class=\"op\">(</span><span class=\"op\">)</span></span></code></pre></div>\n    </div>\n\n    <div id=\"value\">\n    <h2>Value</h2>\n    \n\n<p><code><a href=\"https://rstudio.github.io/htmltools/reference/htmlDependency.html\" class=\"external-link\">htmlDependency</a></code></p>\n\n\n    </div>\n\n  </div>\n  <div class=\"col-md-3 hidden-xs hidden-sm\" id=\"pkgdown-sidebar\">\n    <nav id=\"toc\" data-toggle=\"toc\" class=\"sticky-top\"><h2 data-toc-skip>Contents</h2>\n    </nav></div>\n</div>\n\n\n      <footer><div class=\"copyright\">\n  <p></p><p>Developed by Facebook Inc, Michel Weststrate, Kent Russell, Alan Dipert, Greg Lin.</p>\n</div>\n\n<div class=\"pkgdown\">\n  <p></p><p>Site built with <a href=\"https://pkgdown.r-lib.org/\" class=\"external-link\">pkgdown</a> 2.0.7.</p>\n</div>\n\n      </footer></div>\n\n  \n\n\n  \n\n  </body></html>\n\n"
  },
  {
    "path": "docs/reference/index.html",
    "content": "<!DOCTYPE html>\n<!-- Generated by pkgdown: do not edit by hand --><html lang=\"en\"><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"><meta charset=\"utf-8\"><meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\"><meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"><title>Function reference • reactR</title><!-- favicons --><link rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"../favicon-16x16.png\"><link rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"../favicon-32x32.png\"><link rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"../apple-touch-icon.png\"><link rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"120x120\" href=\"../apple-touch-icon-120x120.png\"><link rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"76x76\" href=\"../apple-touch-icon-76x76.png\"><link rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"60x60\" href=\"../apple-touch-icon-60x60.png\"><!-- jquery --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js\" integrity=\"sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo=\" crossorigin=\"anonymous\"></script><!-- Bootstrap --><link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.4.1/css/bootstrap.min.css\" integrity=\"sha256-bZLfwXAP04zRMK2BjiO8iu9pf4FbLqX6zitd+tIvLhE=\" crossorigin=\"anonymous\"><script src=\"https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.4.1/js/bootstrap.min.js\" integrity=\"sha256-nuL8/2cJ5NDSSwnKD8VqreErSWHtnEP9E7AySL+1ev4=\" crossorigin=\"anonymous\"></script><!-- bootstrap-toc --><link rel=\"stylesheet\" href=\"../bootstrap-toc.css\"><script src=\"../bootstrap-toc.js\"></script><!-- Font Awesome icons --><link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/all.min.css\" integrity=\"sha256-mmgLkCYLUQbXn0B1SRqzHar6dCnv9oZFPEC1g1cwlkk=\" crossorigin=\"anonymous\"><link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/v4-shims.min.css\" integrity=\"sha256-wZjR52fzng1pJHwx4aV2AO3yyTOXrcDW7jBpJtTwVxw=\" crossorigin=\"anonymous\"><!-- clipboard.js --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.6/clipboard.min.js\" integrity=\"sha256-inc5kl9MA1hkeYUt+EC3BhlIgyp/2jDIyBLS6k3UxPI=\" crossorigin=\"anonymous\"></script><!-- headroom.js --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/headroom.min.js\" integrity=\"sha256-AsUX4SJE1+yuDu5+mAVzJbuYNPHj/WroHuZ8Ir/CkE0=\" crossorigin=\"anonymous\"></script><script src=\"https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/jQuery.headroom.min.js\" integrity=\"sha256-ZX/yNShbjqsohH1k95liqY9Gd8uOiE1S4vZc+9KQ1K4=\" crossorigin=\"anonymous\"></script><!-- pkgdown --><link href=\"../pkgdown.css\" rel=\"stylesheet\"><script src=\"../pkgdown.js\"></script><meta property=\"og:title\" content=\"Function reference\"><!-- mathjax --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js\" integrity=\"sha256-nvJJv9wWKEm88qvoQl9ekL2J+k/RWIsaSScxxlsrv8k=\" crossorigin=\"anonymous\"></script><script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/config/TeX-AMS-MML_HTMLorMML.js\" integrity=\"sha256-84DKXVJXs0/F8OTMzX4UR909+jtl4G7SPypPavF+GfA=\" crossorigin=\"anonymous\"></script><!--[if lt IE 9]>\n<script src=\"https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js\"></script>\n<script src=\"https://oss.maxcdn.com/respond/1.4.2/respond.min.js\"></script>\n<![endif]--></head><body data-spy=\"scroll\" data-target=\"#toc\">\n    \n\n    <div class=\"container template-reference-index\">\n      <header><div class=\"navbar navbar-default navbar-fixed-top\" role=\"navigation\">\n  <div class=\"container\">\n    <div class=\"navbar-header\">\n      <button type=\"button\" class=\"navbar-toggle collapsed\" data-toggle=\"collapse\" data-target=\"#navbar\" aria-expanded=\"false\">\n        <span class=\"sr-only\">Toggle navigation</span>\n        <span class=\"icon-bar\"></span>\n        <span class=\"icon-bar\"></span>\n        <span class=\"icon-bar\"></span>\n      </button>\n      <span class=\"navbar-brand\">\n        <a class=\"navbar-link\" href=\"../index.html\">reactR</a>\n        <span class=\"version label label-default\" data-toggle=\"tooltip\" data-placement=\"bottom\" title=\"\">0.6.1</span>\n      </span>\n    </div>\n\n    <div id=\"navbar\" class=\"navbar-collapse collapse\">\n      <ul class=\"nav navbar-nav\"><li>\n  <a href=\"../reference/index.html\">Reference</a>\n</li>\n<li class=\"dropdown\">\n  <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\" role=\"button\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\n    Articles\n     \n    <span class=\"caret\"></span>\n  </a>\n  <ul class=\"dropdown-menu\" role=\"menu\"><li>\n      <a href=\"../articles/intro_htmlwidgets.html\">Authoring htmlwidgets powered by React with reactR</a>\n    </li>\n    <li>\n      <a href=\"../articles/intro_inputs.html\">Authoring inputs powered by React with reactR</a>\n    </li>\n    <li>\n      <a href=\"../articles/intro_reactR.html\">Intro to reactR</a>\n    </li>\n  </ul></li>\n<li>\n  <a href=\"../news/index.html\">Changelog</a>\n</li>\n      </ul><ul class=\"nav navbar-nav navbar-right\"><li>\n  <a href=\"https://github.com/react-R/reactR/\" class=\"external-link\">\n    <span class=\"fab fa-github fa-lg\"></span>\n     \n  </a>\n</li>\n      </ul></div><!--/.nav-collapse -->\n  </div><!--/.container -->\n</div><!--/.navbar -->\n\n      \n\n      </header><div class=\"row\">\n  <div class=\"contents col-md-9\">\n    <div class=\"page-header\">\n      <h1>Reference</h1>\n    </div>\n\n    <table class=\"ref-index\"><colgroup><col class=\"alias\"><col class=\"title\"></colgroup><tbody><tr><th colspan=\"2\">\n          <h2 id=\"all-functions\">All functions <a href=\"#all-functions\" class=\"anchor\" aria-hidden=\"true\"></a></h2>\n          <p class=\"section-desc\"></p>\n        </th>\n      </tr></tbody><tbody><tr><td>\n          <p><code><a href=\"babel_transform.html\">babel_transform()</a></code> </p>\n        </td>\n        <td><p>Transform Code with Babel</p></td>\n      </tr><tr><td>\n          <p><code><a href=\"component.html\">component()</a></code> </p>\n        </td>\n        <td><p>Create a React component</p></td>\n      </tr><tr><td>\n          <p><code><a href=\"createReactShinyInput.html\">createReactShinyInput()</a></code> </p>\n        </td>\n        <td><p>Create a React-based input</p></td>\n      </tr><tr><td>\n          <p><code><a href=\"html_dependency_corejs.html\">html_dependency_corejs()</a></code> </p>\n        </td>\n        <td><p>Shim Dependency for React in RStudio Viewer</p></td>\n      </tr><tr><td>\n          <p><code><a href=\"html_dependency_mobx.html\">html_dependency_mobx()</a></code> </p>\n        </td>\n        <td><p>Dependencies for 'mobx'</p></td>\n      </tr><tr><td>\n          <p><code><a href=\"html_dependency_react.html\">html_dependency_react()</a></code> </p>\n        </td>\n        <td><p>Dependencies for React</p></td>\n      </tr><tr><td>\n          <p><code><a href=\"html_dependency_reacttools.html\">html_dependency_reacttools()</a></code> </p>\n        </td>\n        <td><p>Adds window.reactR.exposeComponents and window.reactR.hydrate</p></td>\n      </tr><tr><td>\n          <p><code><a href=\"React.html\">React</a></code> </p>\n        </td>\n        <td><p>React component builder.</p></td>\n      </tr><tr><td>\n          <p><code><a href=\"reactMarkup.html\">reactMarkup()</a></code> </p>\n        </td>\n        <td><p>Prepare data that represents a single-element character vector, a React\ncomponent, or an htmltools tag for sending to the client.</p></td>\n      </tr><tr><td>\n          <p><code><a href=\"scaffoldReactShinyInput.html\">scaffoldReactShinyInput()</a></code> </p>\n        </td>\n        <td><p>Create implementation scaffolding for a React.js-based Shiny input.</p></td>\n      </tr><tr><td>\n          <p><code><a href=\"scaffoldReactWidget.html\">scaffoldReactWidget()</a></code> </p>\n        </td>\n        <td><p>Create implementation scaffolding for a React.js-based HTML widget</p></td>\n      </tr></tbody></table></div>\n\n  <div class=\"col-md-3 hidden-xs hidden-sm\" id=\"pkgdown-sidebar\">\n    <nav id=\"toc\" data-toggle=\"toc\" class=\"sticky-top\"><h2 data-toc-skip>Contents</h2>\n    </nav></div>\n</div>\n\n\n      <footer><div class=\"copyright\">\n  <p></p><p>Developed by Facebook Inc, Michel Weststrate, Kent Russell, Alan Dipert, Greg Lin.</p>\n</div>\n\n<div class=\"pkgdown\">\n  <p></p><p>Site built with <a href=\"https://pkgdown.r-lib.org/\" class=\"external-link\">pkgdown</a> 2.0.7.</p>\n</div>\n\n      </footer></div>\n\n  \n\n\n  \n\n  </body></html>\n\n"
  },
  {
    "path": "docs/reference/reactMarkup.html",
    "content": "<!DOCTYPE html>\n<!-- Generated by pkgdown: do not edit by hand --><html lang=\"en\"><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"><meta charset=\"utf-8\"><meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\"><meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"><title>Prepare data that represents a single-element character vector, a React\ncomponent, or an htmltools tag for sending to the client. — reactMarkup • reactR</title><!-- favicons --><link rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"../favicon-16x16.png\"><link rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"../favicon-32x32.png\"><link rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"../apple-touch-icon.png\"><link rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"120x120\" href=\"../apple-touch-icon-120x120.png\"><link rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"76x76\" href=\"../apple-touch-icon-76x76.png\"><link rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"60x60\" href=\"../apple-touch-icon-60x60.png\"><!-- jquery --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js\" integrity=\"sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo=\" crossorigin=\"anonymous\"></script><!-- Bootstrap --><link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.4.1/css/bootstrap.min.css\" integrity=\"sha256-bZLfwXAP04zRMK2BjiO8iu9pf4FbLqX6zitd+tIvLhE=\" crossorigin=\"anonymous\"><script src=\"https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.4.1/js/bootstrap.min.js\" integrity=\"sha256-nuL8/2cJ5NDSSwnKD8VqreErSWHtnEP9E7AySL+1ev4=\" crossorigin=\"anonymous\"></script><!-- bootstrap-toc --><link rel=\"stylesheet\" href=\"../bootstrap-toc.css\"><script src=\"../bootstrap-toc.js\"></script><!-- Font Awesome icons --><link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/all.min.css\" integrity=\"sha256-mmgLkCYLUQbXn0B1SRqzHar6dCnv9oZFPEC1g1cwlkk=\" crossorigin=\"anonymous\"><link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/v4-shims.min.css\" integrity=\"sha256-wZjR52fzng1pJHwx4aV2AO3yyTOXrcDW7jBpJtTwVxw=\" crossorigin=\"anonymous\"><!-- clipboard.js --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.6/clipboard.min.js\" integrity=\"sha256-inc5kl9MA1hkeYUt+EC3BhlIgyp/2jDIyBLS6k3UxPI=\" crossorigin=\"anonymous\"></script><!-- headroom.js --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/headroom.min.js\" integrity=\"sha256-AsUX4SJE1+yuDu5+mAVzJbuYNPHj/WroHuZ8Ir/CkE0=\" crossorigin=\"anonymous\"></script><script src=\"https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/jQuery.headroom.min.js\" integrity=\"sha256-ZX/yNShbjqsohH1k95liqY9Gd8uOiE1S4vZc+9KQ1K4=\" crossorigin=\"anonymous\"></script><!-- pkgdown --><link href=\"../pkgdown.css\" rel=\"stylesheet\"><script src=\"../pkgdown.js\"></script><meta property=\"og:title\" content=\"Prepare data that represents a single-element character vector, a React\ncomponent, or an htmltools tag for sending to the client. — reactMarkup\"><meta property=\"og:description\" content=\"Tag lists as returned by htmltools tagList are not currently\nsupported.\"><!-- mathjax --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js\" integrity=\"sha256-nvJJv9wWKEm88qvoQl9ekL2J+k/RWIsaSScxxlsrv8k=\" crossorigin=\"anonymous\"></script><script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/config/TeX-AMS-MML_HTMLorMML.js\" integrity=\"sha256-84DKXVJXs0/F8OTMzX4UR909+jtl4G7SPypPavF+GfA=\" crossorigin=\"anonymous\"></script><!--[if lt IE 9]>\n<script src=\"https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js\"></script>\n<script src=\"https://oss.maxcdn.com/respond/1.4.2/respond.min.js\"></script>\n<![endif]--></head><body data-spy=\"scroll\" data-target=\"#toc\">\n    \n\n    <div class=\"container template-reference-topic\">\n      <header><div class=\"navbar navbar-default navbar-fixed-top\" role=\"navigation\">\n  <div class=\"container\">\n    <div class=\"navbar-header\">\n      <button type=\"button\" class=\"navbar-toggle collapsed\" data-toggle=\"collapse\" data-target=\"#navbar\" aria-expanded=\"false\">\n        <span class=\"sr-only\">Toggle navigation</span>\n        <span class=\"icon-bar\"></span>\n        <span class=\"icon-bar\"></span>\n        <span class=\"icon-bar\"></span>\n      </button>\n      <span class=\"navbar-brand\">\n        <a class=\"navbar-link\" href=\"../index.html\">reactR</a>\n        <span class=\"version label label-default\" data-toggle=\"tooltip\" data-placement=\"bottom\" title=\"\">0.6.1</span>\n      </span>\n    </div>\n\n    <div id=\"navbar\" class=\"navbar-collapse collapse\">\n      <ul class=\"nav navbar-nav\"><li>\n  <a href=\"../reference/index.html\">Reference</a>\n</li>\n<li class=\"dropdown\">\n  <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\" role=\"button\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\n    Articles\n     \n    <span class=\"caret\"></span>\n  </a>\n  <ul class=\"dropdown-menu\" role=\"menu\"><li>\n      <a href=\"../articles/intro_htmlwidgets.html\">Authoring htmlwidgets powered by React with reactR</a>\n    </li>\n    <li>\n      <a href=\"../articles/intro_inputs.html\">Authoring inputs powered by React with reactR</a>\n    </li>\n    <li>\n      <a href=\"../articles/intro_reactR.html\">Intro to reactR</a>\n    </li>\n  </ul></li>\n<li>\n  <a href=\"../news/index.html\">Changelog</a>\n</li>\n      </ul><ul class=\"nav navbar-nav navbar-right\"><li>\n  <a href=\"https://github.com/react-R/reactR/\" class=\"external-link\">\n    <span class=\"fab fa-github fa-lg\"></span>\n     \n  </a>\n</li>\n      </ul></div><!--/.nav-collapse -->\n  </div><!--/.container -->\n</div><!--/.navbar -->\n\n      \n\n      </header><div class=\"row\">\n  <div class=\"col-md-9 contents\">\n    <div class=\"page-header\">\n    <h1>Prepare data that represents a single-element character vector, a React\ncomponent, or an htmltools tag for sending to the client.</h1>\n    <small class=\"dont-index\">Source: <a href=\"https://github.com/react-R/reactR/blob/HEAD/R/reacttools.R\" class=\"external-link\"><code>R/reacttools.R</code></a></small>\n    <div class=\"hidden name\"><code>reactMarkup.Rd</code></div>\n    </div>\n\n    <div class=\"ref-description\">\n    <p>Tag lists as returned by <code>htmltools tagList</code> are not currently\nsupported.</p>\n    </div>\n\n    <div id=\"ref-usage\">\n    <div class=\"sourceCode\"><pre class=\"sourceCode r\"><code><span><span class=\"fu\">reactMarkup</span><span class=\"op\">(</span><span class=\"va\">tag</span><span class=\"op\">)</span></span></code></pre></div>\n    </div>\n\n    <div id=\"arguments\">\n    <h2>Arguments</h2>\n    <dl><dt>tag</dt>\n<dd><p>character vector or React component or\n<code><a href=\"https://rstudio.github.io/htmltools/reference/builder.html\" class=\"external-link\">tag</a></code></p></dd>\n\n</dl></div>\n    <div id=\"value\">\n    <h2>Value</h2>\n    \n\n<p>A reactR markup object suitable for being passed to</p>\n<p></p>\n<p><code><a href=\"https://rdrr.io/pkg/htmlwidgets/man/createWidget.html\" class=\"external-link\">createWidget</a></code> as widget instance data.</p>\n    </div>\n\n  </div>\n  <div class=\"col-md-3 hidden-xs hidden-sm\" id=\"pkgdown-sidebar\">\n    <nav id=\"toc\" data-toggle=\"toc\" class=\"sticky-top\"><h2 data-toc-skip>Contents</h2>\n    </nav></div>\n</div>\n\n\n      <footer><div class=\"copyright\">\n  <p></p><p>Developed by Facebook Inc, Michel Weststrate, Kent Russell, Alan Dipert, Greg Lin.</p>\n</div>\n\n<div class=\"pkgdown\">\n  <p></p><p>Site built with <a href=\"https://pkgdown.r-lib.org/\" class=\"external-link\">pkgdown</a> 2.0.7.</p>\n</div>\n\n      </footer></div>\n\n  \n\n\n  \n\n  </body></html>\n\n"
  },
  {
    "path": "docs/reference/scaffoldReactShinyInput.html",
    "content": "<!DOCTYPE html>\n<!-- Generated by pkgdown: do not edit by hand --><html lang=\"en\"><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"><meta charset=\"utf-8\"><meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\"><meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"><title>Create implementation scaffolding for a React.js-based Shiny input. — scaffoldReactShinyInput • reactR</title><!-- favicons --><link rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"../favicon-16x16.png\"><link rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"../favicon-32x32.png\"><link rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"../apple-touch-icon.png\"><link rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"120x120\" href=\"../apple-touch-icon-120x120.png\"><link rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"76x76\" href=\"../apple-touch-icon-76x76.png\"><link rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"60x60\" href=\"../apple-touch-icon-60x60.png\"><!-- jquery --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js\" integrity=\"sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo=\" crossorigin=\"anonymous\"></script><!-- Bootstrap --><link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.4.1/css/bootstrap.min.css\" integrity=\"sha256-bZLfwXAP04zRMK2BjiO8iu9pf4FbLqX6zitd+tIvLhE=\" crossorigin=\"anonymous\"><script src=\"https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.4.1/js/bootstrap.min.js\" integrity=\"sha256-nuL8/2cJ5NDSSwnKD8VqreErSWHtnEP9E7AySL+1ev4=\" crossorigin=\"anonymous\"></script><!-- bootstrap-toc --><link rel=\"stylesheet\" href=\"../bootstrap-toc.css\"><script src=\"../bootstrap-toc.js\"></script><!-- Font Awesome icons --><link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/all.min.css\" integrity=\"sha256-mmgLkCYLUQbXn0B1SRqzHar6dCnv9oZFPEC1g1cwlkk=\" crossorigin=\"anonymous\"><link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/v4-shims.min.css\" integrity=\"sha256-wZjR52fzng1pJHwx4aV2AO3yyTOXrcDW7jBpJtTwVxw=\" crossorigin=\"anonymous\"><!-- clipboard.js --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.6/clipboard.min.js\" integrity=\"sha256-inc5kl9MA1hkeYUt+EC3BhlIgyp/2jDIyBLS6k3UxPI=\" crossorigin=\"anonymous\"></script><!-- headroom.js --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/headroom.min.js\" integrity=\"sha256-AsUX4SJE1+yuDu5+mAVzJbuYNPHj/WroHuZ8Ir/CkE0=\" crossorigin=\"anonymous\"></script><script src=\"https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/jQuery.headroom.min.js\" integrity=\"sha256-ZX/yNShbjqsohH1k95liqY9Gd8uOiE1S4vZc+9KQ1K4=\" crossorigin=\"anonymous\"></script><!-- pkgdown --><link href=\"../pkgdown.css\" rel=\"stylesheet\"><script src=\"../pkgdown.js\"></script><meta property=\"og:title\" content=\"Create implementation scaffolding for a React.js-based Shiny input. — scaffoldReactShinyInput\"><meta property=\"og:description\" content=\"Add the minimal code required to implement a React.js-based Shiny input to an\nR package.\"><!-- mathjax --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js\" integrity=\"sha256-nvJJv9wWKEm88qvoQl9ekL2J+k/RWIsaSScxxlsrv8k=\" crossorigin=\"anonymous\"></script><script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/config/TeX-AMS-MML_HTMLorMML.js\" integrity=\"sha256-84DKXVJXs0/F8OTMzX4UR909+jtl4G7SPypPavF+GfA=\" crossorigin=\"anonymous\"></script><!--[if lt IE 9]>\n<script src=\"https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js\"></script>\n<script src=\"https://oss.maxcdn.com/respond/1.4.2/respond.min.js\"></script>\n<![endif]--></head><body data-spy=\"scroll\" data-target=\"#toc\">\n    \n\n    <div class=\"container template-reference-topic\">\n      <header><div class=\"navbar navbar-default navbar-fixed-top\" role=\"navigation\">\n  <div class=\"container\">\n    <div class=\"navbar-header\">\n      <button type=\"button\" class=\"navbar-toggle collapsed\" data-toggle=\"collapse\" data-target=\"#navbar\" aria-expanded=\"false\">\n        <span class=\"sr-only\">Toggle navigation</span>\n        <span class=\"icon-bar\"></span>\n        <span class=\"icon-bar\"></span>\n        <span class=\"icon-bar\"></span>\n      </button>\n      <span class=\"navbar-brand\">\n        <a class=\"navbar-link\" href=\"../index.html\">reactR</a>\n        <span class=\"version label label-default\" data-toggle=\"tooltip\" data-placement=\"bottom\" title=\"\">0.6.1</span>\n      </span>\n    </div>\n\n    <div id=\"navbar\" class=\"navbar-collapse collapse\">\n      <ul class=\"nav navbar-nav\"><li>\n  <a href=\"../reference/index.html\">Reference</a>\n</li>\n<li class=\"dropdown\">\n  <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\" role=\"button\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\n    Articles\n     \n    <span class=\"caret\"></span>\n  </a>\n  <ul class=\"dropdown-menu\" role=\"menu\"><li>\n      <a href=\"../articles/intro_htmlwidgets.html\">Authoring htmlwidgets powered by React with reactR</a>\n    </li>\n    <li>\n      <a href=\"../articles/intro_inputs.html\">Authoring inputs powered by React with reactR</a>\n    </li>\n    <li>\n      <a href=\"../articles/intro_reactR.html\">Intro to reactR</a>\n    </li>\n  </ul></li>\n<li>\n  <a href=\"../news/index.html\">Changelog</a>\n</li>\n      </ul><ul class=\"nav navbar-nav navbar-right\"><li>\n  <a href=\"https://github.com/react-R/reactR/\" class=\"external-link\">\n    <span class=\"fab fa-github fa-lg\"></span>\n     \n  </a>\n</li>\n      </ul></div><!--/.nav-collapse -->\n  </div><!--/.container -->\n</div><!--/.navbar -->\n\n      \n\n      </header><div class=\"row\">\n  <div class=\"col-md-9 contents\">\n    <div class=\"page-header\">\n    <h1>Create implementation scaffolding for a React.js-based Shiny input.</h1>\n    <small class=\"dont-index\">Source: <a href=\"https://github.com/react-R/reactR/blob/HEAD/R/scaffold_input.R\" class=\"external-link\"><code>R/scaffold_input.R</code></a></small>\n    <div class=\"hidden name\"><code>scaffoldReactShinyInput.Rd</code></div>\n    </div>\n\n    <div class=\"ref-description\">\n    <p>Add the minimal code required to implement a React.js-based Shiny input to an\nR package.</p>\n    </div>\n\n    <div id=\"ref-usage\">\n    <div class=\"sourceCode\"><pre class=\"sourceCode r\"><code><span><span class=\"fu\">scaffoldReactShinyInput</span><span class=\"op\">(</span><span class=\"va\">name</span>, npmPkgs <span class=\"op\">=</span> <span class=\"cn\">NULL</span>, edit <span class=\"op\">=</span> <span class=\"fu\"><a href=\"https://rdrr.io/r/base/interactive.html\" class=\"external-link\">interactive</a></span><span class=\"op\">(</span><span class=\"op\">)</span><span class=\"op\">)</span></span></code></pre></div>\n    </div>\n\n    <div id=\"arguments\">\n    <h2>Arguments</h2>\n    <dl><dt>name</dt>\n<dd><p>Name of input</p></dd>\n\n\n<dt>npmPkgs</dt>\n<dd><p>Optional <a href=\"https://www.npmjs.com/\" class=\"external-link\">NPM</a> packages upon which\nthis input is based which will be used to populate <code>package.json</code>.\nShould be a named list of names to\n<a href=\"https://docs.npmjs.com/files/package.json/\" class=\"external-link\">versions</a>.</p></dd>\n\n\n<dt>edit</dt>\n<dd><p>Automatically open the input's source files after creating the\nscaffolding.</p></dd>\n\n</dl></div>\n    <div id=\"note\">\n    <h2>Note</h2>\n    <p>This function must be executed from the root directory of the package\n  you wish to add the input to.</p>\n    </div>\n\n  </div>\n  <div class=\"col-md-3 hidden-xs hidden-sm\" id=\"pkgdown-sidebar\">\n    <nav id=\"toc\" data-toggle=\"toc\" class=\"sticky-top\"><h2 data-toc-skip>Contents</h2>\n    </nav></div>\n</div>\n\n\n      <footer><div class=\"copyright\">\n  <p></p><p>Developed by Facebook Inc, Michel Weststrate, Kent Russell, Alan Dipert, Greg Lin.</p>\n</div>\n\n<div class=\"pkgdown\">\n  <p></p><p>Site built with <a href=\"https://pkgdown.r-lib.org/\" class=\"external-link\">pkgdown</a> 2.0.7.</p>\n</div>\n\n      </footer></div>\n\n  \n\n\n  \n\n  </body></html>\n\n"
  },
  {
    "path": "docs/reference/scaffoldReactWidget.html",
    "content": "<!DOCTYPE html>\n<!-- Generated by pkgdown: do not edit by hand --><html lang=\"en\"><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"><meta charset=\"utf-8\"><meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\"><meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"><title>Create implementation scaffolding for a React.js-based HTML widget — scaffoldReactWidget • reactR</title><!-- favicons --><link rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"../favicon-16x16.png\"><link rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"../favicon-32x32.png\"><link rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"../apple-touch-icon.png\"><link rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"120x120\" href=\"../apple-touch-icon-120x120.png\"><link rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"76x76\" href=\"../apple-touch-icon-76x76.png\"><link rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"60x60\" href=\"../apple-touch-icon-60x60.png\"><!-- jquery --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js\" integrity=\"sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo=\" crossorigin=\"anonymous\"></script><!-- Bootstrap --><link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.4.1/css/bootstrap.min.css\" integrity=\"sha256-bZLfwXAP04zRMK2BjiO8iu9pf4FbLqX6zitd+tIvLhE=\" crossorigin=\"anonymous\"><script src=\"https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.4.1/js/bootstrap.min.js\" integrity=\"sha256-nuL8/2cJ5NDSSwnKD8VqreErSWHtnEP9E7AySL+1ev4=\" crossorigin=\"anonymous\"></script><!-- bootstrap-toc --><link rel=\"stylesheet\" href=\"../bootstrap-toc.css\"><script src=\"../bootstrap-toc.js\"></script><!-- Font Awesome icons --><link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/all.min.css\" integrity=\"sha256-mmgLkCYLUQbXn0B1SRqzHar6dCnv9oZFPEC1g1cwlkk=\" crossorigin=\"anonymous\"><link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/v4-shims.min.css\" integrity=\"sha256-wZjR52fzng1pJHwx4aV2AO3yyTOXrcDW7jBpJtTwVxw=\" crossorigin=\"anonymous\"><!-- clipboard.js --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.6/clipboard.min.js\" integrity=\"sha256-inc5kl9MA1hkeYUt+EC3BhlIgyp/2jDIyBLS6k3UxPI=\" crossorigin=\"anonymous\"></script><!-- headroom.js --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/headroom.min.js\" integrity=\"sha256-AsUX4SJE1+yuDu5+mAVzJbuYNPHj/WroHuZ8Ir/CkE0=\" crossorigin=\"anonymous\"></script><script src=\"https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/jQuery.headroom.min.js\" integrity=\"sha256-ZX/yNShbjqsohH1k95liqY9Gd8uOiE1S4vZc+9KQ1K4=\" crossorigin=\"anonymous\"></script><!-- pkgdown --><link href=\"../pkgdown.css\" rel=\"stylesheet\"><script src=\"../pkgdown.js\"></script><meta property=\"og:title\" content=\"Create implementation scaffolding for a React.js-based HTML widget — scaffoldReactWidget\"><meta property=\"og:description\" content=\"Add the minimal code required to implement a React.js-based HTML widget to an\nR package.\"><!-- mathjax --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js\" integrity=\"sha256-nvJJv9wWKEm88qvoQl9ekL2J+k/RWIsaSScxxlsrv8k=\" crossorigin=\"anonymous\"></script><script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/config/TeX-AMS-MML_HTMLorMML.js\" integrity=\"sha256-84DKXVJXs0/F8OTMzX4UR909+jtl4G7SPypPavF+GfA=\" crossorigin=\"anonymous\"></script><!--[if lt IE 9]>\n<script src=\"https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js\"></script>\n<script src=\"https://oss.maxcdn.com/respond/1.4.2/respond.min.js\"></script>\n<![endif]--></head><body data-spy=\"scroll\" data-target=\"#toc\">\n    \n\n    <div class=\"container template-reference-topic\">\n      <header><div class=\"navbar navbar-default navbar-fixed-top\" role=\"navigation\">\n  <div class=\"container\">\n    <div class=\"navbar-header\">\n      <button type=\"button\" class=\"navbar-toggle collapsed\" data-toggle=\"collapse\" data-target=\"#navbar\" aria-expanded=\"false\">\n        <span class=\"sr-only\">Toggle navigation</span>\n        <span class=\"icon-bar\"></span>\n        <span class=\"icon-bar\"></span>\n        <span class=\"icon-bar\"></span>\n      </button>\n      <span class=\"navbar-brand\">\n        <a class=\"navbar-link\" href=\"../index.html\">reactR</a>\n        <span class=\"version label label-default\" data-toggle=\"tooltip\" data-placement=\"bottom\" title=\"\">0.6.1</span>\n      </span>\n    </div>\n\n    <div id=\"navbar\" class=\"navbar-collapse collapse\">\n      <ul class=\"nav navbar-nav\"><li>\n  <a href=\"../reference/index.html\">Reference</a>\n</li>\n<li class=\"dropdown\">\n  <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\" role=\"button\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\n    Articles\n     \n    <span class=\"caret\"></span>\n  </a>\n  <ul class=\"dropdown-menu\" role=\"menu\"><li>\n      <a href=\"../articles/intro_htmlwidgets.html\">Authoring htmlwidgets powered by React with reactR</a>\n    </li>\n    <li>\n      <a href=\"../articles/intro_inputs.html\">Authoring inputs powered by React with reactR</a>\n    </li>\n    <li>\n      <a href=\"../articles/intro_reactR.html\">Intro to reactR</a>\n    </li>\n  </ul></li>\n<li>\n  <a href=\"../news/index.html\">Changelog</a>\n</li>\n      </ul><ul class=\"nav navbar-nav navbar-right\"><li>\n  <a href=\"https://github.com/react-R/reactR/\" class=\"external-link\">\n    <span class=\"fab fa-github fa-lg\"></span>\n     \n  </a>\n</li>\n      </ul></div><!--/.nav-collapse -->\n  </div><!--/.container -->\n</div><!--/.navbar -->\n\n      \n\n      </header><div class=\"row\">\n  <div class=\"col-md-9 contents\">\n    <div class=\"page-header\">\n    <h1>Create implementation scaffolding for a React.js-based HTML widget</h1>\n    <small class=\"dont-index\">Source: <a href=\"https://github.com/react-R/reactR/blob/HEAD/R/scaffold_widget.R\" class=\"external-link\"><code>R/scaffold_widget.R</code></a></small>\n    <div class=\"hidden name\"><code>scaffoldReactWidget.Rd</code></div>\n    </div>\n\n    <div class=\"ref-description\">\n    <p>Add the minimal code required to implement a React.js-based HTML widget to an\nR package.</p>\n    </div>\n\n    <div id=\"ref-usage\">\n    <div class=\"sourceCode\"><pre class=\"sourceCode r\"><code><span><span class=\"fu\">scaffoldReactWidget</span><span class=\"op\">(</span><span class=\"va\">name</span>, npmPkgs <span class=\"op\">=</span> <span class=\"cn\">NULL</span>, edit <span class=\"op\">=</span> <span class=\"fu\"><a href=\"https://rdrr.io/r/base/interactive.html\" class=\"external-link\">interactive</a></span><span class=\"op\">(</span><span class=\"op\">)</span><span class=\"op\">)</span></span></code></pre></div>\n    </div>\n\n    <div id=\"arguments\">\n    <h2>Arguments</h2>\n    <dl><dt>name</dt>\n<dd><p>Name of widget</p></dd>\n\n\n<dt>npmPkgs</dt>\n<dd><p>Optional <a href=\"https://www.npmjs.com/\" class=\"external-link\">NPM</a> packages upon which\nthis widget is based which will be used to populate <code>package.json</code>.\nShould be a named list of names to\n<a href=\"https://docs.npmjs.com/files/package.json/\" class=\"external-link\">versions</a>.</p></dd>\n\n\n<dt>edit</dt>\n<dd><p>Automatically open the widget's JavaScript source file after\ncreating the scaffolding.</p></dd>\n\n</dl></div>\n    <div id=\"note\">\n    <h2>Note</h2>\n    <p>This function must be executed from the root directory of the package\n  you wish to add the widget to.</p>\n    </div>\n\n  </div>\n  <div class=\"col-md-3 hidden-xs hidden-sm\" id=\"pkgdown-sidebar\">\n    <nav id=\"toc\" data-toggle=\"toc\" class=\"sticky-top\"><h2 data-toc-skip>Contents</h2>\n    </nav></div>\n</div>\n\n\n      <footer><div class=\"copyright\">\n  <p></p><p>Developed by Facebook Inc, Michel Weststrate, Kent Russell, Alan Dipert, Greg Lin.</p>\n</div>\n\n<div class=\"pkgdown\">\n  <p></p><p>Site built with <a href=\"https://pkgdown.r-lib.org/\" class=\"external-link\">pkgdown</a> 2.0.7.</p>\n</div>\n\n      </footer></div>\n\n  \n\n\n  \n\n  </body></html>\n\n"
  },
  {
    "path": "docs/sitemap.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<urlset xmlns=\"http://www.sitemaps.org/schemas/sitemap/0.9\">\n  <url>\n    <loc>/404.html</loc>\n  </url>\n  <url>\n    <loc>/articles/index.html</loc>\n  </url>\n  <url>\n    <loc>/articles/intro_htmlwidgets.html</loc>\n  </url>\n  <url>\n    <loc>/articles/intro_inputs.html</loc>\n  </url>\n  <url>\n    <loc>/articles/intro_reactR.html</loc>\n  </url>\n  <url>\n    <loc>/authors.html</loc>\n  </url>\n  <url>\n    <loc>/CONDUCT.html</loc>\n  </url>\n  <url>\n    <loc>/index.html</loc>\n  </url>\n  <url>\n    <loc>/LICENSE-text.html</loc>\n  </url>\n  <url>\n    <loc>/news/index.html</loc>\n  </url>\n  <url>\n    <loc>/reference/babel_transform.html</loc>\n  </url>\n  <url>\n    <loc>/reference/component.html</loc>\n  </url>\n  <url>\n    <loc>/reference/createReactShinyInput.html</loc>\n  </url>\n  <url>\n    <loc>/reference/html_dependency_corejs.html</loc>\n  </url>\n  <url>\n    <loc>/reference/html_dependency_mobx.html</loc>\n  </url>\n  <url>\n    <loc>/reference/html_dependency_react.html</loc>\n  </url>\n  <url>\n    <loc>/reference/html_dependency_reacttools.html</loc>\n  </url>\n  <url>\n    <loc>/reference/index.html</loc>\n  </url>\n  <url>\n    <loc>/reference/React.html</loc>\n  </url>\n  <url>\n    <loc>/reference/reactMarkup.html</loc>\n  </url>\n  <url>\n    <loc>/reference/scaffoldReactShinyInput.html</loc>\n  </url>\n  <url>\n    <loc>/reference/scaffoldReactWidget.html</loc>\n  </url>\n</urlset>\n"
  },
  {
    "path": "inst/examples/antd.R",
    "content": "library(htmltools)\nlibrary(reactR)\nlibrary(pipeR)\n\nantd <- htmlDependency(\n  name = \"antd\",\n  version = \"2.13.10\",\n  src = c(href=\"https://unpkg.com/antd@2.13.10/dist\"),\n  script = \"antd.min.js\",\n  stylesheet = \"antd.min.css\"\n)\n\n\n### menu ####\ntl <- tagList(\n  tags$div(id=\"app\",style=\"width:25%;\"),\n  tags$script(HTML(babel_transform('\n  var menu = <antd.Menu mode=\"horizontal\">\n     <antd.Menu.Item key=\"mail\">\n      <antd.Icon type=\"mail\" />Navigation One\n     </antd.Menu.Item>\n      <antd.Menu.Item key=\"app\" disabled>\n        <antd.Icon type=\"appstore\" />Navigation Two\n     </antd.Menu.Item>\n  </antd.Menu>\n\n  ReactDOM.render(menu, document.querySelector(\"#app\"))\n  ')))\n)\n\nbrowsable(\n  tagList(\n    tl,\n    html_dependency_react(),\n    antd\n  )\n)\n\n\n### steps ####\nsteps <- tag(\n  \"antd.Steps\",\n  list(\n    current=noquote(\"{1}\"),\n    tag(\"antd.Steps.Step\", list(title=\"Finished\", description=\"This is a description.\" )),\n    tag(\"antd.Steps.Step\", list(title=\"In Progress\",description=\"This is a description.\" )),\n    tag(\"antd.Steps.Step\", list(title=\"Waiting\", description=\"This is a description.\" ))\n  )\n)\n\ntagList(\n  tags$div(id=\"stepapp\"),\n  steps %>>%\n  {\n    sprintf(\n\"\nconst steps = %s;\nReactDOM.render(steps, document.querySelector('#stepapp'));\n\",\n      .\n\n    )\n  } %>>%\n    babel_transform() %>>%\n    HTML %>>%\n    tags$script()\n) %>>%\n  attachDependencies(\n    list(\n      html_dependency_react(),\n      antd\n    )\n  ) %>>%\n  browsable()\n\n\n### steps with button ####\nsteps_button <- list(\n  list(\n    title= 'Data',\n    content= 'Raw Data'\n  ),\n  list(\n    title= 'Model',\n    content= 'Code for Model'\n  ),\n  list(\n    title= 'Plot',\n    content= 'Beautiful Plot'\n  )\n) %>>% jsonlite::toJSON(auto_unbox=TRUE)\n\ncontent_data <- tags$pre(\n  HTML(paste0(\n    capture.output(str(iris,max.level=1)),\n    collapse=\"<br/>\"\n  ))\n)\n\ncontent_model <- tags$pre(\"lm(Petal.Width~Petal.Length, data=iris)\")\n\ncontent_plot <- HTML(\n  svglite::htmlSVG({plot(lm(Petal.Length~Petal.Width,data=iris),which=1)},standalone=FALSE)\n)\n\ntagList(\n  tags$div(id=\"stepapp\", style=\"width:30%;\"),\n  steps_button %>>%\n    {\n      sprintf(\n'\nconst steps = %s;\n\nsteps[0].content = %s;\nsteps[1].content = %s;\nsteps[2].content = <img src=\"%s\" />\n\nclass App extends React.Component {\n  constructor(props) {\n    super(props);\n    this.state = {\n      current: 0,\n    };\n  }\n  next() {\n    const current = this.state.current + 1;\n    this.setState({ current });\n  }\n  prev() {\n    const current = this.state.current - 1;\n    this.setState({ current });\n  }\n  render() {\n    const { current } = this.state;\n    return (\n      <div>\n        <antd.Steps current={current} size=\"small\">\n          {steps.map(item => <antd.Steps.Step key={item.title} title={item.title} />)}\n        </antd.Steps>\n      <div className=\"steps-content\" style={{minHeight: \"600px\", display: \"flex\", alignItems: \"center\"}}>\n        {steps[this.state.current].content}\n      </div>\n      <div className=\"steps-action\">\n        {\n          this.state.current < steps.length - 1\n          &&\n          <antd.Button type=\"primary\" onClick={() => this.next()}>Next</antd.Button>\n        }\n        {\n          this.state.current === steps.length - 1\n          &&\n          <antd.Button type=\"primary\" onClick={() => message.success(\"Processing complete!\")}>Done</antd.Button>\n        }\n        {\n          this.state.current > 0\n          &&\n          <antd.Button style={{ marginLeft: 8 }} type=\"ghost\" onClick={() => this.prev()}>\n            Previous\n          </antd.Button>\n        }\n        </div>\n      </div>\n    );\n  }\n}\n\nReactDOM.render(<App />, document.querySelector(\"#stepapp\"));\n      ',\n      .,\n      content_data,\n      content_model,\n      base64enc::dataURI(rsvg::rsvg_png(charToRaw(content_plot)),mime=\"image/png\")\n    )\n  } %>>%\n    babel_transform() %>>%\n    HTML %>>%\n    tags$script()\n) %>>%\n  attachDependencies(\n    list(\n      html_dependency_react(offline=FALSE),\n      antd\n    )\n  ) %>>%\n  browsable()\n"
  },
  {
    "path": "inst/examples/office-fabric.R",
    "content": "library(htmltools)\nlibrary(reactR)\n\nfabric <- htmlDependency(\n  name = \"office-fabric-ui-react\",\n  version = \"7.121.12\",\n  src = c(href=\"https://unpkg.com/office-ui-fabric-react@7.121.12/dist/\"),\n  script = \"office-ui-fabric-react.min.js\",\n  stylesheet = \"css/fabric.min.css\"\n)\n\nbrowsable(\n  tagList(\n    html_dependency_react(),\n    fabric\n  )\n)\n\nbrowsable(\n  tagList(\n    html_dependency_react(),\n    fabric,\n    tags$div(id = \"app-button\"),\n    tags$script(HTML(babel_transform(\n\"\nlet btn = <div className='ms-BasicButtonsExample'>\n  <Fabric.Label>Command button</Fabric.Label>\n  <Fabric.CommandButton\n    data-automation-id='test'\n    icon='AddFriend'\n  >\n    Create account\n  </Fabric.CommandButton>\n</div>\n\nReactDOM.render(btn, document.querySelector('#app-button'));\n\"\n    )))\n  )\n)\n\n\nbrowsable(\n  tagList(\n    html_dependency_react(),\n    fabric,\n    tags$div(id=\"pivot-example\"),\n    tags$script(HTML(babel_transform(\n\"\nclass PivotBasicExample extends React.Component {\n  render() {\n    return (\n      <div>\n        <Fabric.Pivot>\n          <Fabric.PivotItem linkText='My Files'>\n            <Fabric.Label>Pivot #1</Fabric.Label>\n          </Fabric.PivotItem>\n          <Fabric.PivotItem linkText='Recent'>\n            <Fabric.Label>Pivot #2</Fabric.Label>\n          </Fabric.PivotItem>\n          <Fabric.PivotItem linkText='Shared with me'>\n            <Fabric.Label>Pivot #3</Fabric.Label>\n          </Fabric.PivotItem>\n        </Fabric.Pivot>\n      </div>\n    );\n  }\n}\nReactDOM.render(<PivotBasicExample />, document.querySelector('#pivot-example'));\n\"\n    )))\n  )\n)\n"
  },
  {
    "path": "inst/templates/input_app.R.txt",
    "content": "library(shiny)\nlibrary(${package})\n\nui <- fluidPage(\n  titlePanel(\"reactR Input Example\"),\n  ${name}Input(\"textInput\"),\n  textOutput(\"textOutput\")\n)\n\nserver <- function(input, output, session) {\n  output$textOutput <- renderText({\n    sprintf(\"You entered: %s\", input$textInput)\n  })\n}\n\nshinyApp(ui, server)\n"
  },
  {
    "path": "inst/templates/input_js.txt",
    "content": "import { reactShinyInput } from 'reactR';\n\nconst TextInput = ({ configuration, value, setValue }) => {\n  return <input type='text' value={value} onChange={e => setValue(e.target.value)}/>;\n};\n\nreactShinyInput('.${name}', '${package}.${name}', TextInput);\n"
  },
  {
    "path": "inst/templates/input_r.txt",
    "content": "#' <Add Title>\n#'\n#' <Add Description>\n#'\n#' @importFrom reactR createReactShinyInput\n#' @importFrom htmltools htmlDependency tags\n#'\n#' @export\n${name}Input <- function(inputId, default = \"\") {\n  reactR::createReactShinyInput(\n    inputId,\n    \"${name}\",\n    htmltools::htmlDependency(\n      name = \"${name}-input\",\n      version = \"1.0.0\",\n      src = \"www/${package}/${name}\",\n      package = \"${package}\",\n      script = \"${name}.js\"\n    ),\n    default,\n    list(),\n    htmltools::tags$span\n  )\n}\n\n#' <Add Title>\n#'\n#' <Add Description>\n#'\n#' @export\nupdate${capName}Input <- function(session, inputId, value, configuration = NULL) {\n  message <- list(value = value)\n  if (!is.null(configuration)) message$configuration <- configuration\n  session$sendInputMessage(inputId, message);\n}\n"
  },
  {
    "path": "inst/templates/package.json.txt",
    "content": "{\n  \"private\": true,\n  \"dependencies\": {\n    ${npmPkgs}\n  },\n  \"devDependencies\": {\n    \"webpack\": \"^4.27.1\",\n    \"webpack-cli\": \"^3.1.2\",\n    \"@babel/core\": \"^7.2.0\",\n    \"babel-loader\": \"^8.0.4\",\n    \"@babel/preset-env\": \"^7.2.0\",\n    \"@babel/preset-react\": \"^7.0.0\",\n    \"css-loader\": \"^5.0.1\",\n    \"style-loader\": \"^2.0.0\"\n  },\n  \"scripts\": {\n    \"watch\": \"webpack --watch\",\n    \"build\": \"webpack\"\n  }\n}\n"
  },
  {
    "path": "inst/templates/webpack.config.js.txt",
    "content": "var path = require('path');\n\nmodule.exports = {\n    entry: path.join(__dirname, 'srcjs', '${name}.jsx'),\n    output: {\n        path: path.join(__dirname, '${outputPath}'),\n        filename: '${name}.js'\n    },\n    module: {\n        rules: [\n            {\n                test: /\\.jsx?$/,\n                loader: 'babel-loader',\n                options: {\n                    presets: ['@babel/preset-env', '@babel/preset-react']\n                }\n            },\n            // For CSS so that import \"path/style.css\"; works\n            {\n                test: /\\.css$/,\n                use: ['style-loader', 'css-loader']\n            }\n        ]\n    },\n    externals: {\n        'react': 'window.React',\n        'react-dom': 'window.ReactDOM',\n        'reactR': 'window.reactR'\n    },\n    stats: {\n        colors: true\n    },\n    devtool: 'source-map'\n};\n"
  },
  {
    "path": "inst/templates/widget_app.R.txt",
    "content": "library(shiny)\nlibrary(${name})\n\nui <- fluidPage(\n  titlePanel(\"reactR HTMLWidget Example\"),\n  ${name}Output('widgetOutput')\n)\n\nserver <- function(input, output, session) {\n  output$widgetOutput <- render${capName}(\n    ${name}(\"Hello world!\")\n  )\n}\n\nshinyApp(ui, server)\n"
  },
  {
    "path": "inst/templates/widget_js.txt",
    "content": "import { reactWidget } from 'reactR';\n\nreactWidget('${name}', 'output', {}, {});\n"
  },
  {
    "path": "inst/templates/widget_r.txt",
    "content": "#' <Add Title>\n#'\n#' <Add Description>\n#'\n#' @import htmlwidgets\n#'\n#' @export\n${name} <- function(message, width = NULL, height = NULL, elementId = NULL) {\n\n  # describe a React component to send to the browser for rendering.\n  component <- reactR::reactMarkup(htmltools::tag(\"div\", list(message)))\n\n  # create widget\n  htmlwidgets::createWidget(\n    name = '${name}',\n    component,\n    width = width,\n    height = height,\n    package = '${package}',\n    elementId = elementId\n  )\n}\n\n#' Called by HTMLWidgets to produce the widget's root element.\n#' @noRd\nwidget_html.${name} <- function(id, style, class, ...) {\n  htmltools::tagList(\n    # Necessary for RStudio viewer version < 1.2\n    reactR::html_dependency_corejs(),\n    reactR::html_dependency_react(),\n    reactR::html_dependency_reacttools(),\n    htmltools::tags$div(id = id, class = class, style = style)\n  )\n}\n\n#' Shiny bindings for ${name}\n#'\n#' Output and render functions for using ${name} within Shiny\n#' applications and interactive Rmd documents.\n#'\n#' @param outputId output variable to read from\n#' @param width,height Must be a valid CSS unit (like \\code{'100\\%'},\n#'   \\code{'400px'}, \\code{'auto'}) or a number, which will be coerced to a\n#'   string and have \\code{'px'} appended.\n#' @param expr An expression that generates a ${name}\n#' @param env The environment in which to evaluate \\code{expr}.\n#' @param quoted Is \\code{expr} a quoted expression (with \\code{quote()})? This\n#'   is useful if you want to save an expression in a variable.\n#'\n#' @name ${name}-shiny\n#'\n#' @export\n${name}Output <- function(outputId, width = '100%', height = '400px'){\n  htmlwidgets::shinyWidgetOutput(outputId, '${name}', width, height, package = '${package}')\n}\n\n#' @rdname ${name}-shiny\n#' @export\nrender${capName} <- function(expr, env = parent.frame(), quoted = FALSE) {\n  if (!quoted) { expr <- substitute(expr) } # force quoted\n  htmlwidgets::shinyRenderWidget(expr, ${name}Output, env, quoted = TRUE)\n}\n"
  },
  {
    "path": "inst/templates/widget_yaml.txt",
    "content": "# (uncomment to add a dependency)\n# dependencies:\n#  - name:\n#    version:\n#    src:\n#    script:\n#    stylesheet:\n\n"
  },
  {
    "path": "inst/www/core-js/LICENSE",
    "content": "Copyright (c) 2014-2017 Denis Pushkarev\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n"
  },
  {
    "path": "inst/www/core-js/package.json",
    "content": "{\n  \"devDependencies\": {\n    \"@babel/cli\": \"^7.7.7\",\n    \"@babel/core\": \"^7.7.7\",\n    \"@babel/plugin-proposal-nullish-coalescing-operator\": \"^7.7.4\",\n    \"@babel/plugin-proposal-optional-catch-binding\": \"^7.7.4\",\n    \"@babel/plugin-proposal-optional-chaining\": \"^7.7.5\",\n    \"@babel/plugin-transform-arrow-functions\": \"^7.7.4\",\n    \"@babel/plugin-transform-block-scoped-functions\": \"^7.7.4\",\n    \"@babel/plugin-transform-block-scoping\": \"^7.7.4\",\n    \"@babel/plugin-transform-classes\": \"^7.7.4\",\n    \"@babel/plugin-transform-computed-properties\": \"^7.7.4\",\n    \"@babel/plugin-transform-destructuring\": \"^7.7.4\",\n    \"@babel/plugin-transform-exponentiation-operator\": \"^7.7.4\",\n    \"@babel/plugin-transform-literals\": \"^7.7.4\",\n    \"@babel/plugin-transform-member-expression-literals\": \"^7.7.4\",\n    \"@babel/plugin-transform-parameters\": \"^7.7.7\",\n    \"@babel/plugin-transform-property-literals\": \"^7.7.4\",\n    \"@babel/plugin-transform-shorthand-properties\": \"^7.7.4\",\n    \"@babel/plugin-transform-spread\": \"^7.7.4\",\n    \"@babel/plugin-transform-template-literals\": \"^7.7.4\",\n    \"babel-loader\": \"^8.0.6\",\n    \"babel-plugin-transform-es2015-modules-simple-commonjs\": \"~0.3.0\",\n    \"babel-plugin-transform-for-of-as-array\": \"^1.1.1\",\n    \"es-observable\": \"git+https://github.com/tc39/proposal-observable.git#bf4d87144b6189e793593868e3c022eb51a7d292\",\n    \"eslint\": \"^6.8.0\",\n    \"eslint-import-resolver-webpack\": \"^0.12.0\",\n    \"eslint-plugin-import\": \"^2.19.1\",\n    \"eslint-plugin-node\": \"^10.0.0\",\n    \"eslint-plugin-optimize-regex\": \"^1.1.7\",\n    \"eslint-plugin-qunit\": \"^4.0.0\",\n    \"eslint-plugin-sonarjs\": \"^0.5.0\",\n    \"eslint-plugin-unicorn\": \"^15.0.0\",\n    \"grunt\": \"^1.0.4\",\n    \"grunt-cli\": \"^1.3.2\",\n    \"grunt-contrib-clean\": \"^2.0.0\",\n    \"grunt-contrib-copy\": \"^1.0.0\",\n    \"grunt-contrib-uglify\": \"^4.0.1\",\n    \"grunt-karma\": \"^3.0.2\",\n    \"grunt-webpack\": \"^3.1.3\",\n    \"karma\": \"^4.4.1\",\n    \"karma-chrome-launcher\": \"^3.1.0\",\n    \"karma-phantomjs-launcher\": \"~1.0.4\",\n    \"karma-qunit\": \"^4.0.0\",\n    \"lerna\": \"^3.19.0\",\n    \"moon-unit\": \"^0.2.2\",\n    \"phantomjs-prebuilt\": \"~2.1.16\",\n    \"promises-aplus-tests\": \"^2.1.2\",\n    \"puppeteer\": \"~2.0.0\",\n    \"qunit\": \"~2.9.3\",\n    \"webpack\": \"^4.41.4\"\n  },\n  \"license\": \"MIT\",\n  \"repository\": {\n    \"type\": \"git\",\n    \"url\": \"https://github.com/zloirock/core-js.git\"\n  },\n  \"scripts\": {\n    \"bootstrap\": \"lerna bootstrap --no-ci\",\n    \"build\": \"grunt clean copy && npm run bootstrap && npm run build-compat && grunt bundle uglify\",\n    \"build-compat\": \"npm run build-compat-data && npm run build-compat-entries && npm run build-compat-modules-by-versions\",\n    \"build-compat-data\": \"node packages/core-js-compat/src/build-data\",\n    \"build-compat-entries\": \"node packages/core-js-compat/src/build-entries\",\n    \"build-compat-modules-by-versions\": \"node packages/core-js-compat/src/build-modules-by-versions\",\n    \"lint\": \"grunt clean copy && npm run bootstrap && npm run build-compat && eslint ./\",\n    \"unit-tests\": \"grunt clean copy && npm run bootstrap && npm run build-compat && grunt bundle webpack:helpers webpack:tests karma:tests\",\n    \"unit-tests-pure\": \"grunt clean copy && npm run build-compat && grunt webpack:helpers webpack:pure karma:pure\",\n    \"bundle-promises-tests\": \"grunt webpack:promises-aplus-tests\",\n    \"promises-tests\": \"promises-aplus-tests tests/promises-aplus/adapter --timeout 1000\",\n    \"observables-tests\": \"babel node_modules/es-observable/test/ -d tests/bundles/observables-tests/ && node tests/observables/adapter && node tests/observables/adapter-pure\",\n    \"commonjs-tests\": \"node tests/commonjs\",\n    \"commonjs-entries-content\": \"node tests/commonjs-entries-content\",\n    \"targets-parser-tests\": \"node tests/targets-parser\",\n    \"test\": \"grunt clean copy && npm run bootstrap && npm run build-compat && eslint ./ && grunt webpack:helpers webpack:tests bundle uglify karma:tests webpack:helpers webpack:pure karma:pure && npm run promises-tests && npm run observables-tests && npm run commonjs-tests && npm run commonjs-entries-content && npm run targets-parser-tests\"\n  },\n  \"engines\": {\n    \"node\": \">=8.9.0\"\n  }\n}\n"
  },
  {
    "path": "inst/www/mobx/LICENSE",
    "content": "The MIT License (MIT)\n\nCopyright (c) 2015 Michel Weststrate\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"
  },
  {
    "path": "inst/www/mobx/mobx-react-lite.js",
    "content": "(function (global, factory) {\n    typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('mobx'), require('react')) :\n    typeof define === 'function' && define.amd ? define(['exports', 'mobx', 'react'], factory) :\n    (global = global || self, factory(global.mobxReactLite = {}, global.mobx, global.React));\n}(this, function (exports, mobx, React) { 'use strict';\n\n    var React__default = 'default' in React ? React['default'] : React;\n\n    if (!React.useState) {\n        throw new Error(\"mobx-react-lite requires React with Hooks support\");\n    }\n    if (!mobx.spy) {\n        throw new Error(\"mobx-react-lite requires mobx at least version 4 to be available\");\n    }\n\n    function useObservable(initialValue) {\n        var observableRef = React.useRef(null);\n        if (!observableRef.current) {\n            observableRef.current = mobx.observable(initialValue);\n        }\n        return observableRef.current;\n    }\n\n    function useComputed(func, inputs) {\n        if (inputs === void 0) { inputs = []; }\n        var computed = React.useMemo(function () { return mobx.computed(func); }, inputs);\n        return computed.get();\n    }\n\n    var doNothingDisposer = function () {\n        // empty\n    };\n    /**\n     * Adds an observable effect (reaction, autorun, or anything else that returns a disposer) that will be registered upon component creation and disposed upon unmounting.\n     * Returns the generated disposer for early disposal.\n     *\n     * @export\n     * @template D\n     * @param {() => D} disposerGenerator A function that returns the disposer of the wanted effect.\n     * @param {ReadonlyArray<any>} [inputs=[]] If you want the effect to be automatically re-created when some variable(s) are changed then pass them in this array.\n     * @returns {D}\n     */\n    function useDisposable(disposerGenerator, inputs) {\n        if (inputs === void 0) { inputs = []; }\n        var disposerRef = React.useRef(null);\n        var earlyDisposedRef = React.useRef(false);\n        React.useEffect(function () {\n            return lazyCreateDisposer(false);\n        }, inputs);\n        function lazyCreateDisposer(earlyDisposal) {\n            // ensure that we won't create a new disposer if it was early disposed\n            if (earlyDisposedRef.current) {\n                return doNothingDisposer;\n            }\n            if (!disposerRef.current) {\n                var newDisposer = disposerGenerator();\n                if (typeof newDisposer !== \"function\") {\n                    var error = new Error(\"generated disposer must be a function\");\n                    {\n                        // tslint:disable-next-line:no-console\n                        console.error(error);\n                        return doNothingDisposer;\n                    }\n                }\n                disposerRef.current = newDisposer;\n            }\n            return function () {\n                if (disposerRef.current) {\n                    disposerRef.current();\n                    disposerRef.current = null;\n                }\n                if (earlyDisposal) {\n                    earlyDisposedRef.current = true;\n                }\n            };\n        }\n        return lazyCreateDisposer(true);\n    }\n\n    var globalIsUsingStaticRendering = false;\n    function useStaticRendering(enable) {\n        globalIsUsingStaticRendering = enable;\n    }\n    function isUsingStaticRendering() {\n        return globalIsUsingStaticRendering;\n    }\n\n    /*! *****************************************************************************\n    Copyright (c) Microsoft Corporation. All rights reserved.\n    Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use\n    this file except in compliance with the License. You may obtain a copy of the\n    License at http://www.apache.org/licenses/LICENSE-2.0\n\n    THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n    KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\n    WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\n    MERCHANTABLITY OR NON-INFRINGEMENT.\n\n    See the Apache Version 2.0 License for specific language governing permissions\n    and limitations under the License.\n    ***************************************************************************** */\n\n    var __assign = function() {\n        __assign = Object.assign || function __assign(t) {\n            for (var s, i = 1, n = arguments.length; i < n; i++) {\n                s = arguments[i];\n                for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n            }\n            return t;\n        };\n        return __assign.apply(this, arguments);\n    };\n\n    function __read(o, n) {\n        var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n        if (!m) return o;\n        var i = m.call(o), r, ar = [], e;\n        try {\n            while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n        }\n        catch (error) { e = { error: error }; }\n        finally {\n            try {\n                if (r && !r.done && (m = i[\"return\"])) m.call(i);\n            }\n            finally { if (e) throw e.error; }\n        }\n        return ar;\n    }\n\n    function printDebugValue(v) {\n        if (!v.current) {\n            return \"<unknown>\";\n        }\n        return mobx.getDependencyTree(v.current);\n    }\n\n    var EMPTY_ARRAY = [];\n    function useUnmount(fn) {\n        React.useEffect(function () { return fn; }, EMPTY_ARRAY);\n    }\n    function useForceUpdate() {\n        var _a = __read(React.useState(0), 2), setTick = _a[1];\n        var update = React.useCallback(function () {\n            setTick(function (tick) { return tick + 1; });\n        }, []);\n        return update;\n    }\n    function isPlainObject(value) {\n        if (!value || typeof value !== \"object\") {\n            return false;\n        }\n        var proto = Object.getPrototypeOf(value);\n        return !proto || proto === Object.prototype;\n    }\n\n    var EMPTY_OBJECT = {};\n    function useObserver(fn, baseComponentName, options) {\n        if (baseComponentName === void 0) { baseComponentName = \"observed\"; }\n        if (options === void 0) { options = EMPTY_OBJECT; }\n        if (isUsingStaticRendering()) {\n            return fn();\n        }\n        var wantedForceUpdateHook = options.useForceUpdate || useForceUpdate;\n        var forceUpdate = wantedForceUpdateHook();\n        var reaction = React.useRef(null);\n        if (!reaction.current) {\n            reaction.current = new mobx.Reaction(\"observer(\" + baseComponentName + \")\", function () {\n                forceUpdate();\n            });\n        }\n        var dispose = function () {\n            if (reaction.current && !reaction.current.isDisposed) {\n                reaction.current.dispose();\n            }\n        };\n        React.useDebugValue(reaction, printDebugValue);\n        useUnmount(function () {\n            dispose();\n        });\n        // render the original component, but have the\n        // reaction track the observables, so that rendering\n        // can be invalidated (see above) once a dependency changes\n        var rendering;\n        var exception;\n        reaction.current.track(function () {\n            try {\n                rendering = fn();\n            }\n            catch (e) {\n                exception = e;\n            }\n        });\n        if (exception) {\n            dispose();\n            throw exception; // re-throw any exceptions catched during rendering\n        }\n        return rendering;\n    }\n\n    // n.b. base case is not used for actual typings or exported in the typing files\n    function observer(baseComponent, options) {\n        // The working of observer is explained step by step in this talk: https://www.youtube.com/watch?v=cPF4iBedoF0&feature=youtu.be&t=1307\n        if (isUsingStaticRendering()) {\n            return baseComponent;\n        }\n        var realOptions = __assign({ forwardRef: false }, options);\n        var baseComponentName = baseComponent.displayName || baseComponent.name;\n        var wrappedComponent = function (props, ref) {\n            return useObserver(function () { return baseComponent(props, ref); }, baseComponentName);\n        };\n        wrappedComponent.displayName = baseComponentName;\n        // memo; we are not intested in deep updates\n        // in props; we assume that if deep objects are changed,\n        // this is in observables, which would have been tracked anyway\n        var memoComponent;\n        if (realOptions.forwardRef) {\n            // we have to use forwardRef here because:\n            // 1. it cannot go before memo, only after it\n            // 2. forwardRef converts the function into an actual component, so we can't let the baseComponent do it\n            //    since it wouldn't be a callable function anymore\n            memoComponent = React.memo(React.forwardRef(wrappedComponent));\n        }\n        else {\n            memoComponent = React.memo(wrappedComponent);\n        }\n        copyStaticProperties(baseComponent, memoComponent);\n        memoComponent.displayName = baseComponentName;\n        return memoComponent;\n    }\n    // based on https://github.com/mridgway/hoist-non-react-statics/blob/master/src/index.js\n    var hoistBlackList = {\n        $$typeof: true,\n        render: true,\n        compare: true,\n        type: true\n    };\n    function copyStaticProperties(base, target) {\n        Object.keys(base).forEach(function (key) {\n            if (base.hasOwnProperty(key) && !hoistBlackList[key]) {\n                Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(base, key));\n            }\n        });\n    }\n\n    function ObserverComponent(_a) {\n        var children = _a.children, render = _a.render;\n        var component = children || render;\n        if (typeof component !== \"function\") {\n            return null;\n        }\n        return useObserver(component);\n    }\n    ObserverComponent.propTypes = {\n        children: ObserverPropsCheck,\n        render: ObserverPropsCheck\n    };\n    ObserverComponent.displayName = \"Observer\";\n    function ObserverPropsCheck(props, key, componentName, location, propFullName) {\n        var extraKey = key === \"children\" ? \"render\" : \"children\";\n        var hasProp = typeof props[key] === \"function\";\n        var hasExtraProp = typeof props[extraKey] === \"function\";\n        if (hasProp && hasExtraProp) {\n            return new Error(\"MobX Observer: Do not use children and render in the same time in`\" + componentName);\n        }\n        if (hasProp || hasExtraProp) {\n            return null;\n        }\n        return new Error(\"Invalid prop `\" +\n            propFullName +\n            \"` of type `\" +\n            typeof props[key] +\n            \"` supplied to\" +\n            \" `\" +\n            componentName +\n            \"`, expected `function`.\");\n    }\n\n    function useAsObservableSourceInternal(current, usedByLocalStore) {\n        if (usedByLocalStore && current === undefined) {\n            return undefined;\n        }\n        var _a = __read(React__default.useState(function () { return mobx.observable(current, {}, { deep: false }); }), 1), res = _a[0];\n        mobx.runInAction(function () {\n            Object.assign(res, current);\n        });\n        return res;\n    }\n    function useAsObservableSource(current) {\n        return useAsObservableSourceInternal(current, false);\n    }\n\n    function useLocalStore(initializer, current) {\n        var source = useAsObservableSourceInternal(current, true);\n        return React__default.useState(function () {\n            var local = mobx.observable(initializer(source));\n            if (isPlainObject(local)) {\n                mobx.runInAction(function () {\n                    Object.keys(local).forEach(function (key) {\n                        var value = local[key];\n                        if (typeof value === \"function\") {\n                            local[key] = wrapInTransaction(value, local);\n                        }\n                    });\n                });\n            }\n            return local;\n        })[0];\n    }\n    // tslint:disable-next-line: ban-types\n    function wrapInTransaction(fn, context) {\n        return function () {\n            var args = [];\n            for (var _i = 0; _i < arguments.length; _i++) {\n                args[_i] = arguments[_i];\n            }\n            return mobx.transaction(function () { return fn.apply(context, args); });\n        };\n    }\n\n    exports.Observer = ObserverComponent;\n    exports.isUsingStaticRendering = isUsingStaticRendering;\n    exports.observer = observer;\n    exports.useAsObservableSource = useAsObservableSource;\n    exports.useComputed = useComputed;\n    exports.useDisposable = useDisposable;\n    exports.useForceUpdate = useForceUpdate;\n    exports.useLocalStore = useLocalStore;\n    exports.useObservable = useObservable;\n    exports.useObserver = useObserver;\n    exports.useStaticRendering = useStaticRendering;\n\n    Object.defineProperty(exports, '__esModule', { value: true });\n\n}));\n"
  },
  {
    "path": "inst/www/mobx/mobx-react.umd.js",
    "content": "!function(e,r){\"object\"==typeof exports&&\"undefined\"!=typeof module?r(exports,require(\"react-dom\"),require(\"mobx-react-lite\"),require(\"react\"),require(\"mobx\")):\"function\"==typeof define&&define.amd?define([\"exports\",\"react-dom\",\"mobx-react-lite\",\"react\",\"mobx\"],r):r(e.mobxReact={},e.ReactDOM,e.mobxReactLite,e.React,e.mobx)}(this,function(e,r,t,n,o){var i=\"default\"in n?n.default:n,a=0,c={};function s(e){return c[e]||(c[e]=function(e){if(\"function\"==typeof Symbol)return Symbol(e);var r=\"__$mobx-react \"+e+\" (\"+a+\")\";return a++,r}(e)),c[e]}function u(e,r){if(f(e,r))return!0;if(\"object\"!=typeof e||null===e||\"object\"!=typeof r||null===r)return!1;var t=Object.keys(e),n=Object.keys(r);if(t.length!==n.length)return!1;for(var o=0;o<t.length;o++)if(!hasOwnProperty.call(r,t[o])||!f(e[t[o]],r[t[o]]))return!1;return!0}function f(e,r){return e===r?0!==e||1/e==1/r:e!=e&&r!=r}var p={$$typeof:1,render:1,compare:1,type:1,childContextTypes:1,contextType:1,contextTypes:1,defaultProps:1,getDefaultProps:1,getDerivedStateFromError:1,getDerivedStateFromProps:1,mixins:1,propTypes:1};function l(e,r,t){Object.hasOwnProperty.call(e,r)?e[r]=t:Object.defineProperty(e,r,{enumerable:!1,configurable:!0,writable:!0,value:t})}var d=s(\"patchMixins\"),b=s(\"patchedDefinition\");function y(e,r){for(var t=this,n=[],o=arguments.length-2;o-- >0;)n[o]=arguments[o+2];r.locks++;try{var i;return null!=e&&(i=e.apply(this,n)),i}finally{r.locks--,0===r.locks&&r.methods.forEach(function(e){e.apply(t,n)})}}function h(e,r){return function(){for(var t=[],n=arguments.length;n--;)t[n]=arguments[n];y.call.apply(y,[this,e,r].concat(t))}}function v(e,r,t){var n=function(e,r){var t=e[d]=e[d]||{},n=t[r]=t[r]||{};return n.locks=n.locks||0,n.methods=n.methods||[],n}(e,r);n.methods.indexOf(t)<0&&n.methods.push(t);var o=Object.getOwnPropertyDescriptor(e,r);if(!o||!o[b]){var i=function e(r,t,n,o,i){var a,c=h(i,o);return(a={})[b]=!0,a.get=function(){return c},a.set=function(i){if(this===r)c=h(i,o);else{var a=e(this,t,n,o,i);Object.defineProperty(this,t,a)}},a.configurable=!0,a.enumerable=n,a}(e,r,o?o.enumerable:void 0,n,e[r]);Object.defineProperty(e,r,i)}}var m=o.$mobx||\"$mobx\",g=s(\"isUnmounted\"),O=s(\"skipRender\"),w=s(\"isForcingUpdate\");function j(e,r){return t.isUsingStaticRendering()&&console.warn(\"[mobx-react] It seems that a re-rendering of a React component is triggered while in static (server-side) mode. Please make sure components are rendered only once server-side.\"),this.state!==r||!u(this.props,e)}function x(e,r){var t=s(\"reactProp_\"+r+\"_valueHolder\"),n=s(\"reactProp_\"+r+\"_atomHolder\");function i(){return this[n]||l(this,n,o.createAtom(\"reactive \"+r)),this[n]}Object.defineProperty(e,r,{configurable:!0,enumerable:!0,get:function(){return i.call(this).reportObserved(),this[t]},set:function(e){this[w]||u(this[t],e)?l(this,t,e):(l(this,t,e),l(this,O,!0),i.call(this).reportChanged(),l(this,O,!1))}})}var P=\"function\"==typeof n.forwardRef&&n.forwardRef(function(e,r){}).$$typeof;function R(e){if(!0===e.isMobxInjector&&console.warn(\"Mobx observer: You are trying to use 'observer' on a component that already has 'inject'. Please apply 'observer' before applying 'inject'\"),P&&e.$$typeof===P){var r=e.render;if(\"function\"!=typeof r)throw new Error(\"render property of ForwardRef was not a function\");return n.forwardRef(function(){var e=arguments;return i.createElement(t.Observer,null,function(){return r.apply(void 0,e)})})}return\"function\"!=typeof e||e.prototype&&e.prototype.render||e.isReactClass||n.Component.isPrototypeOf(e)?function(e){var r=e.prototype;if(r.componentWillReact)throw new Error(\"The componentWillReact life-cycle event is no longer supported\");if(e.__proto__!==n.PureComponent)if(r.shouldComponentUpdate){if(r.shouldComponentUpdate!==j)throw new Error(\"It is not allowed to use shouldComponentUpdate in observer based components.\")}else r.shouldComponentUpdate=j;x(r,\"props\"),x(r,\"state\");var i=r.render;return r.render=function(){return function(e){var r=this;if(!0===t.isUsingStaticRendering())return e.call(this);l(this,O,!1),l(this,w,!1);var i=this.displayName||this.name||this.constructor&&(this.constructor.displayName||this.constructor.name)||\"<component>\",a=e.bind(this),c=!1,s=new o.Reaction(i+\".render()\",function(){if(!c&&(c=!0,!0!==r[g])){var e=!0;try{l(r,w,!0),r[O]||n.Component.prototype.forceUpdate.call(r),e=!1}finally{l(r,w,!1),e&&s.dispose()}}});function u(){c=!1;var e=void 0,r=void 0;if(s.track(function(){try{r=o._allowStateChanges(!1,a)}catch(r){e=r}}),e)throw e;return r}return s.reactComponent=this,u[m]=s,this.render=u,u.call(this)}.call(this,i)},v(r,\"componentWillUnmount\",function(){!0!==t.isUsingStaticRendering()&&(this.render[m]&&this.render[m].dispose(),this[g]=!0)}),e}(e):t.observer(e)}var C={children:!0,key:!0,ref:!0},E=n.createContext({}),S=function(e){function r(r,t){e.call(this,r,t),this.state=Object.assign({},t,U(r))}return e&&(r.__proto__=e),(r.prototype=Object.create(e&&e.prototype)).constructor=r,r.prototype.render=function(){return n.createElement(E.Provider,{value:this.state},n.Children.only(this.props.children))},r.getDerivedStateFromProps=function(e,r){if(\"production\"!==process.env.NODE_ENV&&!u(r,Object.assign({},r,U(e))))throw new Error(\"MobX Provider: The set of provided stores has changed. Please avoid changing stores as the change might not propagate to all children\");return r},r}(n.Component);function U(e){var r={};if(!e)return r;for(var t in e)_(t)&&(r[t]=e[t]);return r}function _(e){return!C[e]&&\"suppressChangedStoreWarning\"!==e}function k(e,r,t,o){var a=function(e,r){var t=e.displayName||e.name||e.constructor&&e.constructor.name||\"Component\";return r?\"inject-with-\"+r+\"(\"+t+\")\":\"inject(\"+t+\")\"}(r,t),c=function(t){function o(){t.apply(this,arguments)}return t&&(o.__proto__=t),(o.prototype=Object.create(t&&t.prototype)).constructor=o,o.prototype.render=function(){var t=this.props,o=t.forwardRef,i=function(e,r){var t={};for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&-1===r.indexOf(n)&&(t[n]=e[n]);return t}(t,[\"forwardRef\"]);return Object.assign(i,e(this.context||{},i)||{}),o&&!function(e){return!(e.prototype&&e.prototype.render)}(r)&&(i.ref=this.props.forwardRef),n.createElement(r,i)},o}(n.Component);c.contextType=E,o&&(c=R(c)),c.isMobxInjector=!0;var s,u,f,l=i.forwardRef(function(e,r){return i.createElement(c,Object.assign({},e,{forwardRef:r}))});return s=r,u=l,f=Object.getOwnPropertyNames(Object.getPrototypeOf(s)),Object.getOwnPropertyNames(s).forEach(function(e){p[e]||-1!==f.indexOf(e)||Object.defineProperty(u,e,Object.getOwnPropertyDescriptor(s,e))}),l.wrappedComponent=r,l.displayName=a,l}S.contextType=E;var A=s(\"disposeOnUnmountProto\"),M=s(\"disposeOnUnmountInst\");function T(){var e=this;(this[A]||[]).concat(this[M]||[]).forEach(function(r){var t=\"string\"==typeof r?e[r]:r;null!=t&&(Array.isArray(t)?t.map(function(e){return e()}):t())})}function D(e){function r(r,t,n,i,a,c){for(var s=[],u=arguments.length-6;u-- >0;)s[u]=arguments[u+6];return o.untracked(function(){return i=i||\"<<anonymous>>\",c=c||n,null==t[n]?r?new Error(\"The \"+a+\" `\"+c+\"` is marked as required in `\"+i+\"`, but its value is `\"+(null===t[n]?\"null\":\"undefined\")+\"`.\"):null:e.apply(void 0,[t,n,i,a,c].concat(s))})}var t=r.bind(null,!1);return t.isRequired=r.bind(null,!0),t}function $(e){var r=typeof e;return Array.isArray(e)?\"array\":e instanceof RegExp?\"object\":function(e,r){return\"symbol\"===e||\"Symbol\"===r[\"@@toStringTag\"]||\"function\"==typeof Symbol&&r instanceof Symbol}(r,e)?\"symbol\":r}function q(e,r){return D(function(t,n,i,a,c){return o.untracked(function(){if(e&&$(t[n])===r.toLowerCase())return null;var a;switch(r){case\"Array\":a=o.isObservableArray;break;case\"Object\":a=o.isObservableObject;break;case\"Map\":a=o.isObservableMap;break;default:throw new Error(\"Unexpected mobxType: \"+r)}var s=t[n];if(!a(s)){var u=function(e){var r=$(e);if(\"object\"===r){if(e instanceof Date)return\"date\";if(e instanceof RegExp)return\"regexp\"}return r}(s),f=e?\" or javascript `\"+r.toLowerCase()+\"`\":\"\";return new Error(\"Invalid prop `\"+c+\"` of type `\"+u+\"` supplied to `\"+i+\"`, expected `mobx.Observable\"+r+\"`\"+f+\".\")}return null})})}function N(e,r){return D(function(t,n,i,a,c){for(var s=[],u=arguments.length-5;u-- >0;)s[u]=arguments[u+5];return o.untracked(function(){if(\"function\"!=typeof r)return new Error(\"Property `\"+c+\"` of component `\"+i+\"` has invalid PropType notation.\");var o=q(e,\"Array\")(t,n,i);if(o instanceof Error)return o;for(var u=t[n],f=0;f<u.length;f++)if((o=r.apply(void 0,[u,f,i,a,c+\"[\"+f+\"]\"].concat(s)))instanceof Error)return o;return null})})}var I={observableArray:q(!1,\"Array\"),observableArrayOf:N.bind(null,!1),observableMap:q(!1,\"Map\"),observableObject:q(!1,\"Object\"),arrayOrObservableArray:q(!0,\"Array\"),arrayOrObservableArrayOf:N.bind(null,!0),objectOrObservableObject:q(!0,\"Object\")};if(!n.Component)throw new Error(\"mobx-react requires React to be available\");if(!o.observable)throw new Error(\"mobx-react requires mobx to be available\");\"function\"==typeof r.unstable_batchedUpdates&&o.configure({reactionScheduler:r.unstable_batchedUpdates}),e.Observer=t.Observer,e.useAsObservableSource=t.useAsObservableSource,e.useLocalStore=t.useLocalStore,e.isUsingStaticRendering=t.isUsingStaticRendering,e.useStaticRendering=t.useStaticRendering,e.observer=R,e.Provider=S,e.MobXProviderContext=E,e.inject=function(){for(var e,r=[],t=arguments.length;t--;)r[t]=arguments[t];return\"function\"==typeof arguments[0]?(e=arguments[0],function(r){return k(e,r,e.name,!0)}):function(e){return k(function(e){return function(r,t){return e.forEach(function(e){if(!(e in t)){if(!(e in r))throw new Error(\"MobX injector: Store '\"+e+\"' is not available! Make sure it is provided by some Provider\");t[e]=r[e]}}),t}}(r),e,r.join(\"-\"),!1)}},e.disposeOnUnmount=function e(r,t){if(Array.isArray(t))return t.map(function(t){return e(r,t)});var o=Object.getPrototypeOf(r).constructor||Object.getPrototypeOf(r.constructor),i=Object.getPrototypeOf(r.constructor);if(o!==n.Component&&o!==n.PureComponent&&i!==n.Component&&i!==n.PureComponent)throw new Error(\"[mobx-react] disposeOnUnmount only supports direct subclasses of React.Component or React.PureComponent.\");if(\"string\"!=typeof t&&\"function\"!=typeof t&&!Array.isArray(t))throw new Error(\"[mobx-react] disposeOnUnmount only works if the parameter is either a property key or a function.\");var a=!!r[A]||!!r[M];return(\"string\"==typeof t?r[A]||(r[A]=[]):r[M]||(r[M]=[])).push(t),a||v(r,\"componentWillUnmount\",T),\"string\"!=typeof t?t:void 0},e.PropTypes=I});\n//# sourceMappingURL=mobx-react.umd.js.map\n"
  },
  {
    "path": "inst/www/mobx/package.json",
    "content": "{\n  \"name\": \"mobx\",\n  \"version\": \"5.10.1\",\n  \"description\": \"Simple, scalable state management.\",\n  \"main\": \"lib/mobx.js\",\n  \"umd:main\": \"lib/mobx.umd.js\",\n  \"module\": \"lib/mobx.module.js\",\n  \"browser\": {\n    \"./lib/mobx.js\": \"./lib/mobx.js\",\n    \"./lib/mobx.module.js\": \"./lib/mobx.module.js\"\n  },\n  \"unpkg\": \"lib/mobx.umd.min.js\",\n  \"jsnext:main\": \"lib/mobx.module.js\",\n  \"react-native\": \"lib/mobx.module.js\",\n  \"typings\": \"lib/mobx.d.ts\",\n  \"scripts\": {\n    \"test\": \"jest\",\n    \"watch\": \"jest --watch\",\n    \"test:mixed-versions\": \"jest --testRegex mixed-versions\",\n    \"test:all\": \"yarn lint && yarn small-build && yarn jest -i && yarn test:flow && yarn test:mixed-versions\",\n    \"test:webpack\": \"node scripts/webpack-regression-tests.js\",\n    \"test:flow\": \"node_modules/.bin/flow check\",\n    \"test:performance\": \"npm run small-build && PERSIST=true time node --expose-gc test/perf/index.js\",\n    \"test:travis\": \"yarn test:all && yarn test:performance && yarn test -i --coverage && yarn test:webpack && yarn size\",\n    \"prettier\": \"prettier \\\"**/*.js\\\" \\\"**/*.jsx\\\" \\\"**/*.tsx\\\" \\\"**/*.ts\\\"\",\n    \"_prepublish\": \"npm run small-build\",\n    \"quick-build\": \"tsc --pretty\",\n    \"small-build\": \"node scripts/build.js\",\n    \"lint\": \"eslint src/**/*.ts\",\n    \"size\": \"size-limit\",\n    \"publish-script\": \"node scripts/publish.js\"\n  },\n  \"repository\": {\n    \"type\": \"git\",\n    \"url\": \"https://github.com/mobxjs/mobx.git\"\n  },\n  \"author\": \"Michel Weststrate\",\n  \"license\": \"MIT\",\n  \"bugs\": {\n    \"url\": \"https://github.com/mobxjs/mobx/issues\"\n  },\n  \"files\": [\n    \"lib\",\n    \"LICENSE\"\n  ],\n  \"homepage\": \"https://mobx.js.org/\",\n  \"devDependencies\": {\n    \"@babel/core\": \"^7.3.4\",\n    \"@babel/plugin-proposal-class-properties\": \"^7.3.4\",\n    \"@babel/plugin-proposal-decorators\": \"^7.3.0\",\n    \"@babel/plugin-transform-runtime\": \"^7.3.4\",\n    \"@babel/preset-env\": \"^7.3.4\",\n    \"@babel/runtime\": \"^7.3.4\",\n    \"@types/jest\": \"^24.0.11\",\n    \"@types/node\": \"^11.11.3\",\n    \"@typescript-eslint/eslint-plugin\": \"^1.4.2\",\n    \"babel-jest\": \"^24.5.0\",\n    \"chalk\": \"^1.1.3\",\n    \"coveralls\": \"^3.0.3\",\n    \"eslint\": \"^5.15.2\",\n    \"flow-bin\": \"^0.59.0\",\n    \"fs-extra\": \"^7.0.1\",\n    \"husky\": \"^1.3.1\",\n    \"iterall\": \"^1.2.2\",\n    \"jest\": \"^24.5.0\",\n    \"lint-staged\": \"^8.1.5\",\n    \"prettier\": \"^1.16.4\",\n    \"rollup\": \"^1.6.0\",\n    \"rollup-plugin-filesize\": \"^6.0.1\",\n    \"rollup-plugin-node-resolve\": \"^4.0.1\",\n    \"rollup-plugin-replace\": \"^2.1.0\",\n    \"rollup-plugin-terser\": \"^4.0.4\",\n    \"serializr\": \"^1.5.1\",\n    \"shelljs\": \"^0.8.3\",\n    \"size-limit\": \"^1.3.3\",\n    \"tape\": \"^4.10.1\",\n    \"ts-jest\": \"^24.0.0\",\n    \"tslib\": \"^1.9.3\",\n    \"typescript\": \"^3.3.3333\"\n  },\n  \"dependencies\": {},\n  \"keywords\": [\n    \"mobx\",\n    \"mobservable\",\n    \"observable\",\n    \"react-component\",\n    \"react\",\n    \"reactjs\",\n    \"reactive\",\n    \"model\",\n    \"frp\",\n    \"functional-reactive-programming\",\n    \"state management\",\n    \"data flow\"\n  ],\n  \"lint-staged\": {\n    \"*.{ts,tsx,js,jsx}\": [\n      \"prettier --write\",\n      \"git add\"\n    ]\n  },\n  \"jest\": {\n    \"globals\": {\n      \"ts-jest\": {\n        \"tsConfig\": \"tsconfig.test.json\"\n      }\n    },\n    \"transform\": {\n      \"^.+\\\\.tsx?$\": \"ts-jest\",\n      \"^.+\\\\.jsx?$\": \"babel-jest\"\n    },\n    \"testRegex\": \"test/base/.*\\\\.(t|j)sx?$\",\n    \"moduleFileExtensions\": [\n      \"ts\",\n      \"tsx\",\n      \"js\",\n      \"jsx\",\n      \"json\"\n    ],\n    \"testPathIgnorePatterns\": [\n      \"/node_modules/\",\n      \"/\\\\./\"\n    ],\n    \"watchPathIgnorePatterns\": [\n      \"<rootDir>/node_modules/\"\n    ]\n  },\n  \"husky\": {\n    \"hooks\": {\n      \"pre-commit\": \"lint-staged\"\n    }\n  }\n}"
  },
  {
    "path": "inst/www/react/AUTHORS",
    "content": "39 <8398a7@gmail.com>\nAaron Franks <aaron.franks@gmail.com>\nAaron Gelter <aaron.gelter@harman.com>\nAdam Bloomston <adam@glitterfram.es>\nAdam Krebs <amk528@cs.nyu.edu>\nAdam Mark <adammark75@gmail.com>\nAdam Solove <asolove@gmail.com>\nAdam Timberlake <adam.timberlake@gmail.com>\nAdam Zapletal <adamzap@gmail.com>\nAhmad Wali Sidiqi <wali-s@users.noreply.github.com>\nAlan Plum <me@pluma.io>\nAlan Souza <alansouzati@gmail.com>\nAlan deLevie <adelevie@gmail.com>\nAlastair Hole <afhole@gmail.com>\nAlex <ultrafez@users.noreply.github.com>\nAlex Boatwright <drdelambre@gmail.com>\nAlex Boyd <alex@opengroove.org>\nAlex Dajani <xelad1@gmail.com>\nAlex Lopatin <alex@alexlopatin.com>\nAlex Mykyta <dancingwithcows@gmail.com>\nAlex Pien <alexpien@gmail.com>\nAlex Smith <iqwz@ya.ru>\nAlex Zelenskiy <azelenskiy@fb.com>\nAlexander Shtuchkin <ashtuchkin@gmail.com>\nAlexander Solovyov <alexander@solovyov.net>\nAlexander Tseung <alextsg@gmail.com>\nAlexandre Gaudencio <shahor@shahor.fr>\nAlexey Raspopov <avenger7x13@gmail.com>\nAlexey Shamrin <shamrin@gmail.com>\nAli Ukani <ali.ukani@gmail.com>\nAndre Z Sanchez <andrezacsanchez@gmail.com>\nAndreas Savvides <asavvides@twitter.com>\nAndreas Svensson <andreas@syranide.com>\nAndres Kalle <mjomble@gmail.com>\nAndres Suarez <zertosh@gmail.com>\nAndrew Clark <acdlite@me.com>\nAndrew Cobby <cobbweb@users.noreply.github.com>\nAndrew Davey <andrew@equin.co.uk>\nAndrew Henderson <andrew.m.henderson@gmail.com>\nAndrew Kulakov <avk@8xx8.ru>\nAndrew Rasmussen <andras@fb.com>\nAndrew Sokolov <asokolov@atlassian.com>\nAndrew Zich <azich@fb.com>\nAndrey Popp <8mayday@gmail.com>\nAnthony van der Hoorn <anthony.vanderhoorn@gmail.com>\nAnto Aravinth <anto.aravinth.cse@gmail.com>\nAntonio Ruberto <anto.ruberto@gmail.com>\nAntti Ahti <antti.ahti@gmail.com>\nAnuj Tomar <ankuto@gmail.com>\nAoDev <AoDev@users.noreply.github.com>\nApril Arcus <april.arcus@gmail.com>\nAreeb Malik <areeb.malik91@gmail.com>\nAria Buckles <aria@khanacademy.org>\nAria Stewart <aredridel@dinhe.net>\nArian Faurtosh <arian@icloud.com>\nArtem Nezvigin <artem@artnez.com>\nAustin Wright <aaa@bzfx.net>\nAyman Osman <aymano.osman@gmail.com>\nBaraa Hamodi <bhamodi@uwaterloo.ca>\nBartosz Kaszubowski <gosimek@gmail.com>\nBasarat Ali Syed <basaratali@gmail.com>\nBattaile Fauber <battaile@gmail.com>\nBeau Smith <beau@beausmith.com>\nBen Alpert <ben@benalpert.com>\nBen Anderson <banderson@constantcontact.com>\nBen Brooks <ben@benbrooks.net>\nBen Foxall <benfoxall@gmail.com>\nBen Halpern <bendhalpern@gmail.com>\nBen Jaffe <jaffe.ben@gmail.com>\nBen Moss <ben@mossity.com>\nBen Newman <bn@cs.stanford.edu>\nBen Ripkens <bripkens.dev@gmail.com>\nBenjamin Keen <ben.keen@gmail.com>\nBenjamin Leiken <benleiken@gmail.com>\nBenjamin Woodruff <github@benjam.info>\nBenjy Cui <benjytrys@gmail.com>\nBill Blanchard <bill@plumbdev.com>\nBill Fisher <fisherwebdev@gmail.com>\nBlaine Hatab <jbhatab@gmail.com>\nBlaine Kasten <blainekasten@gmail.com>\nBob Eagan <bob@synapsestudios.com>\nBob Ralian <bob.ralian@gmail.com>\nBob Renwick <bob.renwick@gmail.com>\nBobby <puppybytes@gmail.com>\nBojan Mihelac <bmihelac@mihelac.org>\nBradley Spaulding <brad.spaulding@gmail.com>\nBrandon Bloom <brandon@brandonbloom.name>\nBrandon Tilley <brandon@brandontilley.com>\nBrenard Cubacub <bcbcb@users.noreply.github.com>\nBrian Cooke <bri@bricooke.com>\nBrian Holt <btholt@gmail.com>\nBrian Hsu <brianhsu@Brians-MacBook-Pro.local>\nBrian Kim <briankimpossible@gmail.com>\nBrian Kung <brian@callmekung.com>\nBrian Reavis <brian@thirdroute.com>\nBrian Rue <brian@rollbar.com>\nBruno Škvorc <bruno@skvorc.me>\nCam Song <neosoyn@gmail.com>\nCam Spiers <camspiers@gmail.com>\nCameron Chamberlain <git@camjc.com>\nCameron Matheson <cameron@instructure.com>\nCarter Chung <carterchung@users.noreply.github.com>\nCassus Adam Banko <banko.adam@gmail.com>\nCat Chen <catchen@fb.com>\nCedric Sohrauer <cedric.sohrauer@infopark.de>\nCesar William Alvarenga <cesarwbr@gmail.com>\nChangsoon Bok <winmain@gmail.com>\nCharles Marsh <charlie@khanacademy.org>\nChase Adams <realchaseadams@gmail.com>\nCheng Lou <chenglou92@gmail.com>\nChitharanjan Das <das.chitharanjan@gmail.com>\nChris Bolin <bolin.chris@gmail.com>\nChris Grovers <chrisgrovers@users.noreply.github.com>\nChris Ha <chriskevinha@gmail.com>\nChris Rebert <github@rebertia.com>\nChris Sciolla <csciolla1@gmail.com>\nChristian Alfoni <christianalfoni@gmail.com>\nChristian Oliff <christianoliff@yahoo.com>\nChristian Roman <chroman16@gmail.com>\nChristoffer Sawicki <christoffer.sawicki@gmail.com>\nChristoph Pojer <christoph.pojer@gmail.com>\nChristopher Monsanto <chris@monsan.to>\nClay Allsopp <clay.allsopp@gmail.com>\nConnor McSheffrey <c@conr.me>\nConor Hastings <hastings.conorm@gmail.com>\nCory House <housecor@gmail.com>\nCotton Hou <himcotton@gmail.com>\nCraig Akimoto <strawbrary@users.noreply.github.com>\nCristovao Verstraeten <cristovao@apleasantview.com>\nDamien Pellier <dpellier@leadformance.com>\nDan Abramov <dan.abramov@gmail.com>\nDan Fox <iamdanfox@gmail.com>\nDan Schafer <dschafer@fb.com>\nDaniel Carlsson <daniel.carlsson.1987@gmail.com>\nDaniel Cousens <dcousens@users.noreply.github.com>\nDaniel Friesen <daniel@nadir-seen-fire.com>\nDaniel Gasienica <daniel@gasienica.ch>\nDaniel Hejl <daniel.hejl@hotmail.com>\nDaniel Hejl <hejldaniel@gmail.com>\nDaniel Lo Nigro <daniel@dan.cx>\nDaniel Mané <danmane@gmail.com>\nDaniel Miladinov <dmiladinov@wingspan.com>\nDaniel Rodgers-Pryor <djrodgerspryor@gmail.com>\nDaniel Schonfeld <daniel@schonfeld.org>\nDanny Ben-David <dannybd@fb.com>\nDarcy <smadad@me.com>\nDaryl Lau <daryl@weak.io>\nDarío Javier Cravero <dario@uxtemple.com>\nDave Galbraith <dave@jut.io>\nDavid Baker <djbaker2@gmail.com>\nDavid Ed Mellum <david@edmellum.com>\nDavid Goldberg <gberg1@users.noreply.github.com>\nDavid Granado <davidjgranado@gmail.com>\nDavid Greenspan <dgreenspan@alum.mit.edu>\nDavid Hellsing <david@aino.se>\nDavid Hu <davidhu91@gmail.com>\nDavid Khourshid <davidkpiano@gmail.com>\nDavid Mininger <dmininger@gmail.com>\nDavid Neubauer <davidneub@gmail.com>\nDavid Percy <davetp425@gmail.com>\nDean Shi <dnshi@users.noreply.github.com>\nDenis Sokolov <denis@sokolov.cc>\nDeniss Jacenko <deniss.jacenko+github@gmail.com>\nDennis Johnson <djohnson@rallydev.com>\nDevon Blandin <dblandin@gmail.com>\nDevon Harvey <devonharvey@gmail.com>\nDmitrii Abramov <dmitrii@rheia.us>\nDmitriy Rozhkov <dmitriy.rozhkov@xing.com>\nDmitry Blues <dmitri.blyus@gmail.com>\nDmitry Mazuro <dmitry.mazuro@icloud.com>\nDomenico Matteo <matteo.domenico@gmail.com>\nDon Abrams <donabrams@gmail.com>\nDongsheng Liu <bellanchor@gmail.com>\nDustan Kasten <dustan.kasten@gmail.com>\nDustin Getz <dgetz@wingspan.com>\nDylan Harrington <dylanharrington@gmail.com>\nEduardo Garcia <emumaniacx@gmail.com>\nEdvin Erikson <edvin@rocketblast.com>\nElaine Fang <elainefang@Elaines-MacBook-Pro.local>\nEnguerran <engcolson@gmail.com>\nEric Clemmons <eric@smarterspam.com>\nEric Eastwood <contact@ericeastwood.com>\nEric Florenzano <floguy@gmail.com>\nEric O'Connell <eric.oconnell@idealist.org>\nEric Schoffstall <contra@wearefractal.com>\nErik Harper <eharper@mixpo.com>\nEspen Hovlandsdal <rexxars@gmail.com>\nEvan Coonrod <evan@paloalto.com>\nEvan Vosberg <evanvosberg@urban.to>\nFabio M. Costa <fabiomcosta@gmail.com>\nFederico Rampazzo <frampone@gmail.com>\nFelipe Oliveira Carvalho <felipekde@gmail.com>\nFelix Gnass <fgnass@gmail.com>\nFelix Kling <felix.kling@gmx.net>\nFernando Correia <fernando@servicero.com>\nFrankie Bagnardi <f.bagnardi@gmail.com>\nFrançois-Xavier Bois <fxbois@gmail.com>\nFred Zhao <fredz@fb.com>\nFreddy Rangel <frederick.rangel@gmail.com>\nFyodor Ivanishchev <cbrwizard@gmail.com>\nG Scott Olson <gscottolson@gmail.com>\nG. Kay Lee <balancetraveller+github@gmail.com>\nGabe Levi <gabelevi@gmail.com>\nGajus Kuizinas <g.kuizinas@anuary.com>\nGareth Nicholson <gareth.nic@gmail.com>\nGarren Smith <garren.smith@gmail.com>\nGavin McQuistin <gavin@kickfiredesign.com>\nGeert Pasteels <geert.pasteels@gmail.com>\nGeert-Jan Brits <gbrits@gmail.com>\nGeorge A Sisco III <george.sisco@gmail.com>\nGeorgii Dolzhykov <thorn.mailbox@gmail.com>\nGilbert <gilbertbgarza@gmail.com>\nGlen Mailer <glenjamin@gmail.com>\nGrant Timmerman <granttimmerman@gmail.com>\nGreg Hurrell <glh@fb.com>\nGreg Perkins <gregrperkins@fb.com>\nGreg Roodt <groodt@gmail.com>\nGregory <g.marcilhacy@gmail.com>\nGuangqiang Dong <gqdong@fb.com>\nGuido Bouman <m@guido.vc>\nHarry Hull <harry.hull1@gmail.com>\nHarry Marr <harry.marr@gmail.com>\nHarry Moreno <morenoh149@gmail.com>\nHarshad Sabne <harshadsabne@users.noreply.github.com>\nHekar Khani <hekark@gmail.com>\nHendrik Swanepoel <hendrik.swanepoel@gmail.com>\nHenrik Nyh <henrik@nyh.se>\nHenry Wong <henryw4k@gmail.com>\nHenry Zhu <hi@henryzoo.com>\nHideo Matsumoto <hideo-m@pekeq.com>\nHou Chia <kchia87@gmail.com>\nHuang-Wei Chang <chang.huangwei.01@gmail.com>\nHugo Agbonon <hugo@agbonon.fr>\nHugo Jobling <me@thisishugo.com>\nHyeock Kwon <doublus@gmail.com>\nHéliton Nordt <hnordt@hnordt.com>\nIan Obermiller <ian@obermillers.com>\nIgnacio Carbajo <icarbajop@gmail.com>\nIgor Scekic <igorscekic2@gmail.com>\nIlia Pavlenkov <dortonway@gmail.com>\nIlya Shuklin <ilya.shuklin@gmail.com>\nIlyá Belsky <gelias.gbelsky@gmail.com>\nIngvar Stepanyan <me@rreverser.com>\nIrae Carvalho <irae@irae.pro.br>\nIsaac Salier-Hellendag <isaac@fb.com>\nIurii Kucherov <yuyokk@gmail.com>\nIvan Kozik <ivan@ludios.org>\nIvan Krechetov <ikr@ikr.su>\nIvan Vergiliev <ivan.vergiliev@gmail.com>\nJ. Andrew Brassington <jabbrass@zoho.com>\nJ. Renée Beach <splendidnoise@gmail.com>\nJD Isaacks <jd@jisaacks.com>\nJJ Weber <jj.weber@gmail.com>\nJW <JW00000@gmail.com>\nJack Zhang <jzhang31191@gmail.com>\nJackie Wung <jacquelinewung@gmail.com>\nJacob Gable <jacob.gable@gmail.com>\nJacob Greenleaf <jake@imgur.com>\nJae Hun Ro <jhr24@duke.edu>\nJaeho Lee <me@jaeholee.org>\nJaime Mingo <j.mingov@3boll.com>\nJake Worth <jakeworth82@gmail.com>\nJakub Malinowski <jakubmal@gmail.com>\nJames <james@mystrata.com>\nJames Brantly <james@jbrantly.com>\nJames Burnett <jtburnett@tribune.com>\nJames Friend <james@jsdf.co>\nJames Ide <ide@fb.com>\nJames Long <longster@gmail.com>\nJames Pearce <jpearce@fb.com>\nJames Seppi <james.seppi@gmail.com>\nJames South <james_south@hotmail.com>\nJames Wen <jrw2175@columbia.edu>\nJamie Wong <jamie.lf.wong@gmail.com>\nJamis Charles <jacharles@paypal.com>\nJamison Dance <jergason@gmail.com>\nJan Hancic <jan.hancic@gmail.com>\nJan Kassens <jan@kassens.net>\nJan Raasch <jan@janraasch.com>\nJared Forsyth <jared@jaredforsyth.com>\nJason <usaman2010us@gmail.com>\nJason Bonta <jbonta@gmail.com>\nJason Ly <jason.ly@gmail.com>\nJason Miller <aidenn0@geocities.com>\nJason Quense <monastic.panic@gmail.com>\nJason Trill <jason@jasontrill.com>\nJason Webster <jason@metalabdesign.com>\nJay Jaeho Lee <jay@spoqa.com>\nJean Lauliac <lauliacj@gmail.com>\nJed Watson <jed.watson@me.com>\nJeff Barczewski <jeff.barczewski@gmail.com>\nJeff Carpenter <gcarpenterv@gmail.com>\nJeff Chan <jefftchan@gmail.com>\nJeff Hicken <jhicken@gmail.com>\nJeff Kolesky <github@kolesky.com>\nJeff Morrison <jeff@anafx.com>\nJeff Welch <whatthejeff@gmail.com>\nJeffrey Lin <lin.jeffrey@gmail.com>\nJeremy Fairbank <elpapapollo@gmail.com>\nJesse Skinner <jesse@thefutureoftheweb.com>\nJignesh Kakadiya <jigneshhk1992@gmail.com>\nJim OBrien <jimobrien930@gmail.com>\nJim Sproch <jsproch@fb.com>\nJimmy Jea <jimjea@gmail.com>\nJing Chen <jingc@fb.com>\nJinwoo Oh <arkist@gmail.com>\nJinxiu Lee <lee.jinxiu@gmail.com>\nJiyeon Seo <zzzeons@gmail.com>\nJody McIntyre <scjody@modernduck.com>\nJoe Critchley <joecritch@gmail.com>\nJoe Stein <joeaarons@gmail.com>\nJoel Auterson <joel.auterson@googlemail.com>\nJohannes Baiter <johannes.baiter@gmail.com>\nJohannes Emerich <johannes@emerich.de>\nJohannes Lumpe <johannes@johanneslumpe.de>\nJohn Heroy <johnheroy@users.noreply.github.com>\nJohn Ryan <tjfryan@fb.com>\nJohn Watson <jwatson@fb.com>\nJohn-David Dalton <john.david.dalton@gmail.com>\nJon Beebe <jon.beebe@daveramsey.com>\nJon Chester <jonchester@fb.com>\nJon Hester <jon.d.hester@gmail.com>\nJon Madison <jon@tfftech.com>\nJon Scott Clark <jonscottclark@gmail.com>\nJon Tewksbury <jontewks@gmail.com>\nJonas Enlund <jonas.enlund@gmail.com>\nJonas Gebhardt <jonas@instagram.com>\nJonathan Hsu <jhiswin@gmail.com>\nJonathan Persson <persson.jonathan@gmail.com>\nJordan Harband <ljharb@gmail.com>\nJordan Walke <jordojw@gmail.com>\nJorrit Schippers <jorrit@ncode.nl>\nJoseph Nudell <joenudell@gmail.com>\nJoseph Savona <joesavona@fb.com>\nJosh Bassett <josh.bassett@gmail.com>\nJosh Duck <josh@fb.com>\nJosh Perez <josh.perez@airbnb.com>\nJosh Yudaken <yud@instagram.com>\nJoshua Evans <joshua.evans@quantified.co>\nJoshua Go <joshuago@gmail.com>\nJoshua Goldberg <jsgoldberg90@gmail.com>\nJoshua Ma <me@joshma.com>\nJoão Valente <filipevalente@gmail.com>\nJuan Serrano <germ13@users.noreply.github.com>\nJulen Ruiz Aizpuru <julenx@gmail.com>\nJulian Viereck <julian.viereck@gmail.com>\nJulien Bordellier <git@julienbordellier.com>\nJulio Lopez <ljuliom@gmail.com>\nJun Wu <quark@lihdd.net>\nJuraj Dudak <jdudak@fb.com>\nJustas Brazauskas <brazauskasjustas@gmail.com>\nJustin Jaffray <justinjaffray@khanacademy.org>\nJustin Robison <jrobison151@gmail.com>\nJustin Woo <moomoowoo@gmail.com>\nKale <krydrogen@gmail.com>\nKamron Batman <kamronbatman@users.noreply.github.com>\nKarl Mikkelsen <karl@kingkarl.com>\nKarpich Dmitry <karpich@gollard.ru>\nKeito Uchiyama <projects@keito.me>\nKen Powers <ken@kenpowers.net>\nKent C. Dodds <kent@doddsfamily.us>\nKevin Cheng <09chengk@gmail.com>\nKevin Coughlin <kevintcoughlin@gmail.com>\nKevin Huang <huang.kev@gmail.com>\nKevin Lau <thekevlau@gmail.com>\nKevin Old <kevin@kevinold.com>\nKevin Robinson <krobinson@twitter.com>\nKewei Jiang <jkewei328@hotmail.com>\nKier Borromeo <seraphipod@gmail.com>\nKimCoding <jeokrang@hanmail.net>\nKirk Steven Hansen <hanski07@kirk-hansens-macbook.local>\nKit Randel <kit@nocturne.net.nz>\nKohei TAKATA <kt.koheitakata@gmail.com>\nKoo Youngmin <youngmin@youngminz.kr>\nKrystian Karczewski <karcz.k@gmail.com>\nKunal Mehta <k.mehta@berkeley.edu>\nKurt Ruppel <me@kurtruppel.com>\nKyle Kelley <rgbkrk@gmail.com>\nKyle Mathews <mathews.kyle@gmail.com>\nLaurence Rowe <l@lrowe.co.uk>\nLaurent Etiemble <laurent.etiemble@monobjc.net>\nLee Byron <lee@leebyron.com>\nLee Jaeyoung <jaeyoung@monodiary.net>\nLei <tendant@gmail.com>\nLeland Richardson <leland.m.richardson@gmail.com>\nLeon Fedotov <LeonFedotov@users.noreply.github.com>\nLeon Yip <lyip1992@users.noreply.github.com>\nLeonardo YongUk Kim <dalinaum@gmail.com>\nLevi Buzolic <levibuzolic@gmail.com>\nLevi McCallum <levi@levimccallum.com>\nLily <qvang.j@gmail.com>\nLogan Allen <loganfynne@gmail.com>\nLovisa Svallingson <lovisasvallingson@gmail.com>\nLudovico Fischer <livrerie@gmail.com>\nLuigy Leon <luichi.19@gmail.com>\nLuke Horvat <lukehorvat@gmail.com>\nMIKAMI Yoshiyuki <yoshuki@saikyoline.jp>\nMaher Beg <maherbeg@gmail.com>\nManas <prometheansacrifice@gmail.com>\nMarcin K. <katzoo@github.mail>\nMarcin Kwiatkowski <marcin.kwiatkowski@hotmail.com>\nMarcin Szczepanski <marcins@gmail.com>\nMariano Desanze <protronm@gmail.com>\nMarjan <marjan.georgiev@gmail.com>\nMark Anderson <undernewmanagement@users.noreply.github.com>\nMark Funk <mfunk86@gmail.com>\nMark Hintz <markohintz@gmail.com>\nMark IJbema <markijbema@gmail.com>\nMark Murphy <murphy.mark@live.ca>\nMark Richardson <echo@fb.com>\nMark Rushakoff <mark@influxdb.com>\nMark Sun <sunmark14@gmail.com>\nMarlon Landaverde <milanlandaverde@gmail.com>\nMarshall Roch <mroch@fb.com>\nMartin Andert <mandert@gmail.com>\nMartin Hujer <mhujer@gmail.com>\nMartin Jul <martin@mjul.com>\nMartin Konicek <mkonicek@fb.com>\nMartin Mihaylov <martomi@users.noreply.github.com>\nMasaki KOBAYASHI <makky.4d6b.3f5@gmail.com>\nMathieu M-Gosselin <mathieumg@gmail.com>\nMathieu Savy <savy.mathieu@gmail.com>\nMatias Singers <mail@matiassingers.com>\nMatsunoki <himkt@klis.tsukuba.ac.jp>\nMatt Brookes <matt@brookes.net>\nMatt Dunn-Rankin <mdunnrankin@gmail.com>\nMatt Harrison <mt.harrison86@gmail.com>\nMatt Huggins <matt.huggins@gmail.com>\nMatt Stow <matt.stow@foxsports.com.au>\nMatt Zabriskie <mzabriskie@gmail.com>\nMatthew Dapena-Tretter <m@tthewwithanm.com>\nMatthew Herbst <mherbst@chegg.com>\nMatthew Hodgson <matthew@matrix.org>\nMatthew Johnston <matthewjohnston4@outlook.com>\nMatthew King <mking@users.noreply.github.com>\nMatthew Looi <looi.matthew@gmail.com>\nMatthew Miner <matthew@matthewminer.com>\nMatthias Le Brun <mlbli@me.com>\nMatti Nelimarkka <matti.nelimarkka@hiit.fi>\nMattijs Kneppers <mattijs@arttech.nl>\nMax F. Albrecht <1@178.is>\nMax Heiber <max.heiber@gmail.com>\nMax Stoiber <contact@mstoiber.com>\nMaxi Ferreira <charca@gmail.com>\nMaxim Abramchuk <MaximAbramchuck@gmail.com>\nMerrick Christensen <merrick.christensen@gmail.com>\nMert Kahyaoğlu <mertkahyaoglu93@gmail.com>\nMichael Chan <mijoch@gmail.com>\nMichael McDermott <michael@mgmcdermott.com>\nMichael Randers-Pehrson <michael.rp@gmail.com>\nMichael Ridgway <mridgway@yahoo-inc.com>\nMichael Warner <MichaelJWarner@hotmail.com>\nMichael Wiencek <mwtuea@gmail.com>\nMichael Ziwisky <mikezx@gmail.com>\nMichal Srb <xixixao@seznam.cz>\nMichelle Todd <himichelletodd@gmail.com>\nMihai Parparita <mihai.parparita@gmail.com>\nMike D Pilsbury <mike.pilsbury@gmail.com>\nMike Groseclose <mike.groseclose@gmail.com>\nMike Nordick <mnordick>\nMikolaj Dadela <mikolaj.dadela@hgv-online.de>\nMiles Johnson <mileswjohnson@gmail.com>\nMinwe LUO <minwe@yunshipei.com>\nMiorel Palii <miorel@fb.com>\nMorhaus <alexandre.kirszenberg@gmail.com>\nMoshe Kolodny <kolodny.github@gmail.com>\nMouad Debbar <mdebbar@fb.com>\nMurad <rogozhnikoff@users.noreply.github.com>\nMurray M. Moss <murray@mmoss.name>\nNadeesha Cabral <nadeesha.cabral@gmail.com>\nNaman Goel <naman34@gmail.com>\nNate Hunzaker <nate.hunzaker@gmail.com>\nNate Lee <nathaniel.jy.lee88@gmail.com>\nNathan Smith <NogsMPLS@users.noreply.github.com>\nNathan White <nw@nwhite.net>\nNee <944316342@qq.com>\nNeri Marschik <marschik_neri@cyberagent.co.jp>\nNguyen Truong Duy <truongduy134@yahoo.com>\nNicholas Bergson-Shilcock <me@nicholasbs.net>\nNicholas Clawson <nickclaw@users.noreply.github.com>\nNick Balestra <nickbalestra@users.noreply.github.com>\nNick Fitzgerald <fitzgen@gmail.com>\nNick Gavalas <njg57@cornell.edu>\nNick Merwin <nick@lemurheavy.com>\nNick Presta <nick@nickpresta.ca>\nNick Raienko <enaqxx@gmail.com>\nNick Thompson <ncthom91@gmail.com>\nNick Williams <WickyNilliams@users.noreply.github.com>\nNiklas Boström <nbostrom@gmail.com>\nNing Xia <ning-github@users.noreply.github.com>\nNiole Nelson <niolenelson@gmail.com>\nOiva Eskola <oiva.eskola@gmail.com>\nOleg <o.yanchinskiy@gmail.com>\nOleksii Markhovskyi <olexiy.markhovsky@gmail.com>\nOliver Zeigermann <oliver.zeigermann@gmail.com>\nOlivier Tassinari <Olivier.tassinari@gmail.com>\nOwen Coutts <owenc@fb.com>\nPablo Lacerda de Miranda <pablolm@yahoo-inc.com>\nPaolo Moretti <moretti@users.noreply.github.com>\nPascal Hartig <passy@twitter.com>\nPatrick <info@telepark.de>\nPatrick Laughlin <patrick@laughl.info>\nPatrick Stapleton <github@gdi2290.com>\nPaul Benigeri <me@benigeri.com>\nPaul Harper <benekastah@gmail.com>\nPaul O’Shannessy <paul@oshannessy.com>\nPaul Seiffert <paul.seiffert@gmail.com>\nPaul Shen <paul@mnml0.com>\nPedro Nauck <pedronauck@gmail.com>\nPete Hunt <floydophone@gmail.com>\nPeter Blazejewicz <peter.blazejewicz@gmail.com>\nPeter Cottle <pcottle@fb.com>\nPeter Jaros <peter.a.jaros@gmail.com>\nPeter Newnham <peter.newnham@appsbroker.com>\nPetri Lehtinen <petri@digip.org>\nPetri Lievonen <plievone@cc.hut.fi>\nPieter Vanderwerff <me@pieter.io>\nPouja Nikray <poujanik@gmail.com>\nPrathamesh Sonpatki <csonpatki@gmail.com>\nPrayag Verma <prayag.verma@gmail.com>\nPreston Parry <ClimbsRocks@users.noreply.github.com>\nRafael <rafael.garcia@clever.com>\nRafal Dittwald <rafal.dittwald@gmail.com>\nRainer Oviir <roviir@gmail.com>\nRajat Sehgal <rajatsehgal1988@gmail.com>\nRajiv Tirumalareddy <rajivtreddy@gmail.com>\nRam Kaniyur <quadrupleslap@users.noreply.github.com>\nRandall Randall <randall@randallsquared.com>\nRay <ray@tomo.im>\nRaymond Ha <raymond@shraymonks.com>\nReed Loden <reed@reedloden.com>\nRemko Tronçon <git@el-tramo.be>\nRichard D. Worth <rdworth@gmail.com>\nRichard Feldman <richard.t.feldman@gmail.com>\nRichard Kho <hello@richardkho.com>\nRichard Littauer <richard.littauer@gmail.com>\nRichard Livesey <Livesey7@hotmail.co.uk>\nRichard Wood <rwoodnz@gmail.com>\nRick Beerendonk <rick@beerendonk.com>\nRick Ford <rickfordrick@gmail.com>\nRiley Tomasek <riley.tomasek@gmail.com>\nRob Arnold <robarnold@cs.cmu.edu>\nRobert Binna <rbinna@gmail.com>\nRobert Knight <robert.knight@mendeley.com>\nRobert Sedovsek <robert.sedovsek@gmail.com>\nRobin Berjon <robin@berjon.com>\nRobin Frischmann <robin@rofrischmann.de>\nRoman Pominov <rpominov+github@gmail.com>\nRoman Vanesyan <roman.vanesyan@gmail.com>\nRuss <russwirtz@gmail.com>\nRyan Seddon <seddon.ryan@gmail.com>\nSahat Yalkabov <sakhat@gmail.com>\nSaif Hakim <saif@benchling.com>\nSaiichi Hashimoto <saiichihashimoto@gmail.com>\nSam Beveridge <sbeveridge@saltstack.com>\nSam Saccone <samccone@gmail.com>\nSam Selikoff <sam.selikoff@gmail.com>\nSamy Al Zahrani <samy@sadeem.net>\nSander Spies <sandermail@gmail.com>\nScott Burch <scott@bulldoginfo.com>\nScott Feeney <scott@oceanbase.org>\nSean Kinsey <oyvind@fb.com>\nSebastian Markbåge <sebastian@calyptus.eu>\nSebastian McKenzie <sebmck@gmail.com>\nSeoh Char <devthewild@gmail.com>\nSercan Eraslan <sercan.eraslan@sahibinden.com>\nSerg <undrdog@yandex.ru>\nSergey Generalov <sergey@genbit.ru>\nSergey Rubanov <chi187@gmail.com>\nSeyi Adebajo <hello@seyinanigans.com>\nShane O'Sullivan <shaneosullivan1@gmail.com>\nShaun Trennery <shaun.trennery@gmail.com>\nShihChi Huang <hhuang@netflix.com>\nShim Won <marocchino@gmail.com>\nShinnosuke Watanabe <snnskwtnb@gmail.com>\nShogun Sea <shogunsea08@gmail.com>\nShota Kubota <kubosho@users.noreply.github.com>\nShripad K <assortmentofsorts@gmail.com>\nSibi <psibi2000@gmail.com>\nSimen Bekkhus <sbekkhus91@gmail.com>\nSimon Højberg <r.hackr@gmail.com>\nSimon Welsh <simon@simon.geek.nz>\nSimone Vittori <hello@simonewebdesign.it>\nSoichiro Kawamura <mail@w-st.com>\nSophia Westwood <sophia@quip.com>\nSota Ohara <ohrst.18@gmail.com>\nSpencer Handley <spencerhandley@gmail.com>\nStefan Dombrowski <sdo451@gmail.com>\nStephen Murphy <smurphy3@apple.com>\nSterling Cobb <sterlingcobb@gmail.com>\nSteve Baker <_steve_@outlook.com>\nSteven Luscher <react@steveluscher.com>\nSteven Vachon <contact@svachon.com>\nStoyan Stefanov <ssttoo@ymail.com>\nSundeep Malladi <sundeep.malladi@gmail.com>\nSunny Juneja <me@sunnyjuneja.com>\nSven Helmberger <fforw@gmx.de>\nSverre Johansen <sverre.johansen@gmail.com>\nSébastien Lorber <lorber.sebastien@gmail.com>\nSławomir Laskowski <laskowski.box@gmail.com>\nTaeho Kim <dittos@gmail.com>\nTay Yang Shun <tay.yang.shun@gmail.com>\nTed Kim <ted@vcnc.co.kr>\nTengfei Guo <terryr3rd@yeah.net>\nTeodor Szente <teodor98sz@gmail.com>\nThomas Aylott <oblivious@subtlegradient.com>\nThomas Boyt <thomas.boyt@venmo.com>\nThomas Broadley <buriedunderbooks@hotmail.com>\nThomas Reggi <socialtr@gmail.com>\nThomas Röggla <t.roggla@cwi.nl>\nThomas Shaddox <thomas@heyzap.com>\nThomas Shafer <thomasjshafer@gmail.com>\nThomasCrvsr <crevoisier.thomas@gmail.com>\nTienchai Wirojsaksaree <tienchai@fb.com>\nTim Routowicz <troutowicz@gmail.com>\nTim Schaub <tschaub@users.noreply.github.com>\nTimothy Yung <yungsters@gmail.com>\nTimur Carpeev <timuric@users.noreply.github.com>\nTobias Reiss <tag+github@basecode.de>\nTom Duncalf <tom@tomduncalf.com>\nTom Haggie <thaggie@gmail.com>\nTom Hauburger <thauburger@gmail.com>\nTom MacWright <tom@macwright.org>\nTom Occhino <tomocchino@gmail.com>\nTomasz Kołodziejski <tkolodziejski@gmail.com>\nTomoya Suzuki <tmysz.dev@gmail.com>\nTony Spiro <tspiro@tonyspiro.com>\nToru Kobayashi <koba0004@gmail.com>\nTrinh Hoang Nhu <trinhhoangnhu@gmail.com>\nTsung Hung <thung@me.com>\nTyler Brock <tyler.brock@gmail.com>\nUstin Zarubin <ustin.zarubin@campusbellhops.com>\nVadim Chernysh <chernysh.vadim@gmail.com>\nVarun Rau <varunrau@gmail.com>\nVasiliy Loginevskiy <Yeti.or@gmail.com>\nVictor Alvarez <v.alvarez312@gmail.com>\nVictor Homyakov <vkhomyackov@gmail.com>\nVictor Koenders <victor.koenders@gmail.com>\nVille Immonen <ville.immonen@iki.fi>\nVincent Riemer <vincentriemer@gmail.com>\nVincent Siao <vincent@asana.com>\nVipul A M <vipulnsward@gmail.com>\nVitaly Kramskikh <vkramskikh@gmail.com>\nVitor Balocco <vitorbal@gmail.com>\nVjeux <vjeuxx@gmail.com>\nVolkan Unsal <spocksplanet@gmail.com>\nWander Wang <wander.wang@ismole.com>\nWayne Larsen <wayne@larsen.st>\nWickyNilliams <WickyNilliams@MBA>\nWincent Colaiuta <win@wincent.com>\nWout Mertens <Wout.Mertens@gmail.com>\nXavier Morel <xmo-odoo@users.noreply.github.com>\nXuefengWu <benewu@gmail.com>\nYakov Dalinchuk <murashki@users.noreply.github.com>\nYasar icli <hello@yasaricli.com>\nYouBao Nong <noyobo@gmail.com>\nYuichi Hagio <yhagio87@gmail.com>\nYuriy Dybskiy <yuriy@dybskiy.com>\nYutaka Nakajima <nakazye@gmail.com>\nYuval Dekel <thedekel@fb.com>\nZach Bruggeman <mail@bruggie.com>\nZach Ramaekers <zramaekers@gmail.com>\nZacharias <zachasme@users.noreply.github.com>\nZeke Sikelianos <zeke@sikelianos.com>\nZhangjd <zhang.jd@qq.com>\nadraeth <jerzy.mirecki@gmail.com>\narush <arush@ilovebrands.net>\nbrafdlog <brafdlog@gmail.com>\nchen <kikyous@163.com>\nclariroid <clarinette.uranus@gmail.com>\nclaudiopro <claudio.procida@gmail.com>\ncutbko <kutsenko.eugene@hotmail.com>\ndavidxi <davidgraycn@gmail.com>\ndongmeng.ldm <dongmeng.ldm@alibaba-inc.com>\niamchenxin <iamchenxin@gmail.com>\niamdoron <doronpagot@gmail.com>\niawia002 <z2d@jifangcheng.com>\nimagentleman <imagentlemail@gmail.com>\nkoh-taka <koh-taka@users.noreply.github.com>\nkohashi85 <hako584@gmail.com>\nlaiso <laiso@lai.so>\nleeyoungalias <leeyoungalias@qq.com>\nli.li <li.li@ele.me>\nmaxprafferty <maxprafferty@gmail.com>\nrgarifullin <ringarifullin@gmail.com>\nsongawee <dennis@songawee.com>\nsugarshin <shinsugar@gmail.com>\nwali-s <ahmad3y2k@hotmail.com>\nyiminghe <yiminghe@gmail.com>\nyoumoo <youmoolee@gmail.com>\nzhangjg <jinguozhang@qq.com>\nzwhitchcox <zwhitchcox@gmail.com>\nÁrni Hermann Reynisson <arnihr@gmail.com>\n元彦 <yuanyan@users.noreply.github.com>\n凌恒 <jiakun.dujk@alibaba-inc.com>\n张敏 <cookfront@gmail.com>\n"
  },
  {
    "path": "inst/www/react/LICENSE.txt",
    "content": "MIT License\n\nCopyright (c) 2013-present, Facebook, Inc.\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"
  },
  {
    "path": "inst/www/react-tools/react-tools.js",
    "content": "(function(s,u){typeof exports==\"object\"&&typeof module<\"u\"?u(exports):typeof define==\"function\"&&define.amd?define([\"exports\"],u):(s=typeof globalThis<\"u\"?globalThis:s||self,u(s.reactR={}))})(this,function(s){\"use strict\";function u(n,t){if(typeof t==\"string\")return t;if(t.name[0]===t.name[0].toUpperCase()&&!n.hasOwnProperty(t.name))throw new Error(\"Unknown component: \"+t.name);for(let i in t.attribs)g(t.attribs[i])&&(t.attribs[i]=u(n,t.attribs[i]));for(var a=n.hasOwnProperty(t.name)?n[t.name]:t.name,r=[a,t.attribs],e=0;e<t.children.length;e++)r.push(u(n,t.children[e]));return React.createElement.apply(React,r)}const d={widthProperty:\"width\",heightProperty:\"height\",appendPx:!1,renderOnResize:!1};function y(n){var t={};for(var a in d)t[a]=d[a];for(var a in n){if(!d.hasOwnProperty(a))throw new Error(\"Unrecognized option: \"+a);t[a]=n[a]}return t}function o(n,t){if(!t.appendPx)return n}function g(n){return typeof n==\"object\"&&n.hasOwnProperty(\"name\")&&n.hasOwnProperty(\"attribs\")&&n.hasOwnProperty(\"children\")}function b(n,t,a,r){var e=y(r);window.HTMLWidgets.widget({name:n,type:t,factory:function(i,c,l){var p,P={},h=function(f){e.renderOnResize&&(typeof f.tag==\"object\"&&(f.tag.attribs[e.widthProperty]=o(c),f.tag.attribs[e.heightProperty]=o(l)),p=f),this.instance.component=ReactDOM.render(u(a,f.tag),i)};return{instance:P,renderValue:h,resize:function(f,V){e.renderOnResize&&(c=f,l=V,h(p))}}}})}function O(n,{configuration:t,value:a}){let r=!1;t!==void 0&&(this.setInputConfiguration(n,t),r=!0),a!==void 0&&(this.setInputValue(n,a),r=!0),r&&(this.getCallback(n)(),this.render(n))}const m={receiveMessage:O,type:!1,ratePolicy:null};function w(n,t,a,r){r=Object.assign({},m,r),Shiny.inputBindings.register(new class extends Shiny.InputBinding{find(e){return $(e).find(n)}getValue(e){return this.getInputValue(e)}setValue(e,i,c=!1){$(e).data(\"callback\")!==void 0&&(this.setInputValue(e,i),this.getCallback(e)(c),this.render(e))}initialize(e){$(e).data(\"value\",JSON.parse($(e).next().text())),$(e).data(\"configuration\",JSON.parse($(e).next().next().text()))}subscribe(e,i){$(e).data(\"callback\",i),this.render(e)}unsubscribe(e){ReactDOM.render(null,e)}receiveMessage(e,i){r.receiveMessage.call(this,e,i)}getType(e){if(typeof r.type==\"function\")return r.type.call(this,e);if(r.type===!1||typeof r.type==\"string\")return r.type;throw new Error(\"options.type must be false, a string, or a function\")}getRatePolicy(){return r.ratePolicy}getInputValue(e){return $(e).data(\"value\")}setInputValue(e,i){$(e).data(\"value\",i)}getInputConfiguration(e){return $(e).data(\"configuration\")}setInputConfiguration(e,i){$(e).data(\"configuration\",i)}getCallback(e){return $(e).data(\"callback\")}render(e){const i=React.createElement(a,{configuration:this.getInputConfiguration(e),value:this.getValue(e),setValue:this.setValue.bind(this,e),el:e});ReactDOM.render(i,e)}},t)}s.hydrate=u,s.reactShinyInput=w,s.reactWidget=b,Object.defineProperty(s,Symbol.toStringTag,{value:\"Module\"})});\n"
  },
  {
    "path": "js-tests/react-tools.test.jsx",
    "content": "import { assert, describe, it } from 'vitest'\nimport React from 'react'\nimport ReactDOM from 'react'\nimport { renderToString } from 'react-dom/server'\nimport { parseXml } from '@rgrove/parse-xml'\nimport parse from 'html-react-parser'\nimport { hydrate } from '../srcjs/react-tools'\n\n/**\n * Needed by react-tools.js\n * In normal operation, these are added to the page as htmlDependencies.\n */\nglobal.React = React;\nglobal.ReactDOM = ReactDOM;\n\nclass Shout extends React.Component {\n    render() {\n        return <span>{this.props.message.toUpperCase()}</span>;\n    }\n}\n\nconst FunctionalShout = ({ message }) => {\n    return <span>{message.toUpperCase()}</span>;\n}\n\nclass TodoList extends React.Component {\n    render() {\n        return <ol>\n            {this.props.children.map((child, i) => {\n                return <li key={i}>{child}</li>;\n            })}\n        </ol>\n    }\n}\n\n// Converts a parse-xml style tree to an htmltools::tag style tree of JSON.\nfunction objectToTag(obj) {\n    return {\n        name: obj.name,\n        attribs: obj.attributes,\n        children: obj.children.map(child => {\n            if (child.type === 'text') {\n                return child.text;\n            } else {\n                return objectToTag(child);\n            }\n        })\n    }\n}\n\n// Converts a string of markup to an htmltools::tag style tree of JSON.\nfunction stringToTag(str) {\n    return objectToTag(parseXml(str).children[0]);\n}\n\n// Compares two parse-xml style trees for \"deep\" equality\nfunction xmlEqual(x1, x2) {\n    if (x1.type === 'text'\n        && x2.type === 'text'\n        && x1.text === x2.text)\n        return true;\n    return x1.name === x2.name\n        // Test attributes for equality\n        && Object.keys(x1).length === Object.keys(x2).length\n        && Object.keys(x1).every(k => x1[k] === x2[k])\n        // Test children for equality\n        && x1.children.length === x2.children.length\n        && x1.children.every((child, i) => xmlEqual(child, x2.children[i]))\n}\n\ndescribe('window.reactR', () => {\n    describe('#hydrate() with HTML', () => {\n        it('hydrates an HTML5 component with a text child', () => {\n            const markup = '<h1>Hello</h1>';\n            assert.equal(\n                renderToString(parse(markup)),\n                renderToString(hydrate({}, stringToTag(markup)))\n            )\n        })\n        it('hydrates nested HTML5 components', () => {\n            const markup = '<div><h1>Hello</h1><p>Oh, hello.</p></div>'\n            assert.equal(\n                renderToString(parse(markup)),\n                renderToString(hydrate({}, stringToTag(markup)))\n            )\n        })\n    });\n    describe('#hydrate() with Components', () => {\n        it('should throw an exception with an unknown component', () => {\n            assert.throws(() => {\n                hydrate({ Shout: Shout }, stringToTag('<Bar/>'))\n            }, Error, /Unknown component/);\n        });\n    })\n});\n"
  },
  {
    "path": "man/React.Rd",
    "content": "% Generated by roxygen2: do not edit by hand\n% Please edit documentation in R/reacttools.R\n\\docType{data}\n\\name{React}\n\\alias{React}\n\\title{React component builder.}\n\\format{\nAn object of class \\code{react_component_builder} of length 0.\n}\n\\usage{\nReact\n}\n\\description{\n\\code{React} is a syntactically-convenient way to create instances of React\ncomponents that can be sent to the browser for display. It is a list for\nwhich \\link[=InternalMethods]{extract methods} are defined, allowing\nobject creation syntax like \\code{React$MyComponent(x = 1)} where\n\\code{MyComponent} is a React component you have exposed to Shiny in\nJavaScript.\n}\n\\details{\nInternally, the \\code{\\link{component}} function is used to create the\ncomponent instance.\n}\n\\examples{\n# Create an instance of ParentComponent with two children,\n# ChildComponent and OtherChildComponent.\nReact$ParentComponent(\n  x = 1,\n  y = 2,\n  React$ChildComponent(),\n  React$OtherChildComponent()\n)\n}\n\\keyword{datasets}\n"
  },
  {
    "path": "man/babel_transform.Rd",
    "content": "% Generated by roxygen2: do not edit by hand\n% Please edit documentation in R/babel.R\n\\name{babel_transform}\n\\alias{babel_transform}\n\\title{Transform Code with Babel}\n\\usage{\nbabel_transform(code = \"\")\n}\n\\arguments{\n\\item{code}{\\code{character}}\n}\n\\value{\ntransformed \\code{character}\n}\n\\description{\nHelper function to use \\code{V8} with \\code{Babel} so we can\navoid a JSX transformer with using \\code{reactR}.\n}\n\\examples{\n\\dontrun{\nlibrary(reactR)\nbabel_transform('<div>react div</div>')\n}\n}\n"
  },
  {
    "path": "man/component.Rd",
    "content": "% Generated by roxygen2: do not edit by hand\n% Please edit documentation in R/reacttools.R\n\\name{component}\n\\alias{component}\n\\title{Create a React component}\n\\usage{\ncomponent(name, varArgs = list())\n}\n\\arguments{\n\\item{name}{Name of the React component, which must start with an upper-case\ncharacter.}\n\n\\item{varArgs}{Attributes and children of the element to pass along to\n\\code{\\link[htmltools]{tag}} as \\code{varArgs}.}\n}\n\\value{\nAn htmltools \\code{\\link[htmltools]{tag}} object\n}\n\\description{\nCreate a React component\n}\n\\examples{\ncomponent(\"ParentComponent\",\n  list(\n    x = 1,\n    y = 2,\n    component(\"ChildComponent\"),\n    component(\"OtherChildComponent\")\n  )\n)\n}\n"
  },
  {
    "path": "man/createReactShinyInput.Rd",
    "content": "% Generated by roxygen2: do not edit by hand\n% Please edit documentation in R/reacttools.R\n\\name{createReactShinyInput}\n\\alias{createReactShinyInput}\n\\title{Create a React-based input}\n\\usage{\ncreateReactShinyInput(\n  inputId,\n  class,\n  dependencies,\n  default = NULL,\n  configuration = list(),\n  container = htmltools::tags$div\n)\n}\n\\arguments{\n\\item{inputId}{The \\code{input} slot that will be used to access the value.}\n\n\\item{class}{Space-delimited list of CSS class names that should identify\nthis input type in the browser.}\n\n\\item{dependencies}{HTML dependencies to include in addition to those\nsupporting React. Must contain at least one dependency, that of the input's\nimplementation.}\n\n\\item{default}{Initial value.}\n\n\\item{configuration}{Static configuration data.}\n\n\\item{container}{Function to generate an HTML element to contain the input.}\n}\n\\value{\nShiny input suitable for inclusion in a UI.\n}\n\\description{\nCreate a React-based input\n}\n\\examples{\nmyInput <- function(inputId, default = \"\") {\n  # The value of createReactShinyInput should be returned from input constructor functions.\n  createReactShinyInput(\n    inputId,\n    \"myinput\",\n    # At least one htmlDependency must be provided -- the JavaScript implementation of the input.\n    htmlDependency(\n      name = \"my-input\",\n      version = \"1.0.0\",\n      src = \"www/mypackage/myinput\",\n      package = \"mypackage\",\n      script = \"myinput.js\"\n    ),\n    default\n  )\n}\n}\n"
  },
  {
    "path": "man/html_dependency_corejs.Rd",
    "content": "% Generated by roxygen2: do not edit by hand\n% Please edit documentation in R/dependencies.R\n\\name{html_dependency_corejs}\n\\alias{html_dependency_corejs}\n\\title{Shim Dependency for React in RStudio Viewer}\n\\usage{\nhtml_dependency_corejs()\n}\n\\value{\n\\code{\\link[htmltools]{htmlDependency}}\n}\n\\description{\nAdd this first for 'React' to work in RStudio Viewer.\n}\n"
  },
  {
    "path": "man/html_dependency_mobx.Rd",
    "content": "% Generated by roxygen2: do not edit by hand\n% Please edit documentation in R/dependencies.R\n\\name{html_dependency_mobx}\n\\alias{html_dependency_mobx}\n\\title{Dependencies for 'mobx'}\n\\usage{\nhtml_dependency_mobx(react = TRUE)\n}\n\\arguments{\n\\item{react}{\\code{logical} to add react 'mobx' dependencies.}\n}\n\\value{\n\\code{\\link[htmltools]{htmlDependency}}\n}\n\\description{\nAdd JavaScript 'mobx' and 'mobx-react' dependency.  When using with 'react', the order\nof the dependencies is important, so please add \\code{html_dependency_react()} before\n\\code{html_dependency_mobx()}.\n}\n\\examples{\nif(interactive()) {\n\nlibrary(htmltools)\nlibrary(reactR)\n\nbrowsable(\n  tagList(\n    html_dependency_mobx(react = FALSE),\n    div(id=\"test\"),\n    tags$script(HTML(\n\"\n  var obs = mobx.observable({val: null})\n  mobx.autorun(function() {\n    document.querySelector('#test').innerText = obs.val\n  })\n  setInterval(\n    function() {obs.val++},\n    1000\n  )\n\"\n    ))\n  )\n)\n}\n\n\\dontrun{\n# use with react\nlibrary(htmltools)\nlibrary(reactR)\n\nbrowsable(\n  tagList(\n    html_dependency_react(),\n    html_dependency_mobx(),\n    div(id=\"test\"),\n    tags$script(HTML(babel_transform(\n\"\n  var obs = mobx.observable({val: null})\n  var App = mobxReact.observer((props) => <div>{props.obs.val}</div>)\n\n  ReactDOM.render(<App obs = {obs}/>, document.querySelector('#test'))\n\n  setInterval(\n    function() {obs.val++},\n    1000\n  )\n\"\n    )))\n  )\n)\n}\n}\n"
  },
  {
    "path": "man/html_dependency_react.Rd",
    "content": "% Generated by roxygen2: do not edit by hand\n% Please edit documentation in R/dependencies.R\n\\name{html_dependency_react}\n\\alias{html_dependency_react}\n\\title{Dependencies for React}\n\\usage{\nhtml_dependency_react(offline = TRUE)\n}\n\\arguments{\n\\item{offline}{\\code{logical} to use local file dependencies.  If \\code{FALSE},\nthen the dependencies use the Facebook cdn as its \\code{src}.\nTo use with \\code{JSX} see \\code{\\link{babel_transform}}.}\n}\n\\value{\n\\code{\\link[htmltools]{htmlDependency}}\n}\n\\description{\nAdd JavaScript 'React' dependency.  For this to work in RStudio Viewer, also include\n\\code{\\link{html_dependency_corejs}}.\n}\n\\examples{\nlibrary(reactR)\nlibrary(htmltools)\n\ntagList(\n  tags$script(\n  \"\n    ReactDOM.render(\n      React.createElement(\n        'h1',\n        null,\n        'Powered by React'\n      ),\n      document.body\n    )\n  \"\n  ),\n   #add core-js first to work in RStudio Viewer\n  html_dependency_corejs(),\n  html_dependency_react() #offline=FALSE for CDN\n)\n}\n"
  },
  {
    "path": "man/html_dependency_reacttools.Rd",
    "content": "% Generated by roxygen2: do not edit by hand\n% Please edit documentation in R/dependencies.R\n\\name{html_dependency_reacttools}\n\\alias{html_dependency_reacttools}\n\\title{Adds window.reactR.exposeComponents and window.reactR.hydrate}\n\\usage{\nhtml_dependency_reacttools()\n}\n\\value{\n\\code{\\link[htmltools]{htmlDependency}}\n}\n\\description{\nAdds window.reactR.exposeComponents and window.reactR.hydrate\n}\n"
  },
  {
    "path": "man/reactMarkup.Rd",
    "content": "% Generated by roxygen2: do not edit by hand\n% Please edit documentation in R/reacttools.R\n\\name{reactMarkup}\n\\alias{reactMarkup}\n\\title{Prepare data that represents a single-element character vector, a React\ncomponent, or an htmltools tag for sending to the client.}\n\\usage{\nreactMarkup(tag)\n}\n\\arguments{\n\\item{tag}{character vector or React component or\n\\code{\\link[htmltools]{tag}}}\n}\n\\value{\nA reactR markup object suitable for being passed to\n  \\code{\\link[htmlwidgets]{createWidget}} as widget instance data.\n}\n\\description{\nTag lists as returned by \\code{htmltools tagList} are not currently\nsupported.\n}\n"
  },
  {
    "path": "man/scaffoldReactShinyInput.Rd",
    "content": "% Generated by roxygen2: do not edit by hand\n% Please edit documentation in R/scaffold_input.R\n\\name{scaffoldReactShinyInput}\n\\alias{scaffoldReactShinyInput}\n\\title{Create implementation scaffolding for a React.js-based Shiny input.}\n\\usage{\nscaffoldReactShinyInput(name, npmPkgs = NULL, edit = interactive())\n}\n\\arguments{\n\\item{name}{Name of input}\n\n\\item{npmPkgs}{Optional \\href{https://www.npmjs.com/}{NPM} packages upon which\nthis input is based which will be used to populate \\code{package.json}.\nShould be a named list of names to\n\\href{https://docs.npmjs.com/files/package.json/}{versions}.}\n\n\\item{edit}{Automatically open the input's source files after creating the\nscaffolding.}\n}\n\\description{\nAdd the minimal code required to implement a React.js-based Shiny input to an\nR package.\n}\n\\note{\nThis function must be executed from the root directory of the package\n  you wish to add the input to.\n}\n"
  },
  {
    "path": "man/scaffoldReactWidget.Rd",
    "content": "% Generated by roxygen2: do not edit by hand\n% Please edit documentation in R/scaffold_widget.R\n\\name{scaffoldReactWidget}\n\\alias{scaffoldReactWidget}\n\\title{Create implementation scaffolding for a React.js-based HTML widget}\n\\usage{\nscaffoldReactWidget(name, npmPkgs = NULL, edit = interactive())\n}\n\\arguments{\n\\item{name}{Name of widget}\n\n\\item{npmPkgs}{Optional \\href{https://www.npmjs.com/}{NPM} packages upon which\nthis widget is based which will be used to populate \\code{package.json}.\nShould be a named list of names to\n\\href{https://docs.npmjs.com/files/package.json/}{versions}.}\n\n\\item{edit}{Automatically open the widget's JavaScript source file after\ncreating the scaffolding.}\n}\n\\description{\nAdd the minimal code required to implement a React.js-based HTML widget to an\nR package.\n}\n\\note{\nThis function must be executed from the root directory of the package\n  you wish to add the widget to.\n}\n"
  },
  {
    "path": "package.json",
    "content": "{\n    \"name\": \"react-tools\",\n    \"private\": true,\n    \"type\": \"module\",\n    \"scripts\": {\n        \"build\": \"vite build\",\n        \"test\": \"vitest run\"\n    },\n    \"devDependencies\": {\n        \"@rgrove/parse-xml\": \"^4.1.0\",\n        \"html-react-parser\": \"^5.1.1\",\n        \"react\": \"^18.2.0\",\n        \"react-dom\": \"^18.2.0\",\n        \"vite\": \"^5.0.11\",\n        \"vitest\": \"^1.2.1\"\n    }\n}\n"
  },
  {
    "path": "reactR.Rproj",
    "content": "Version: 1.0\n\nRestoreWorkspace: Default\nSaveWorkspace: Default\nAlwaysSaveHistory: Default\n\nEnableCodeIndexing: Yes\nUseSpacesForTab: Yes\nNumSpacesForTab: 2\nEncoding: UTF-8\n\nRnwWeave: Sweave\nLaTeX: XeLaTeX\n\nAutoAppendNewline: Yes\nStripTrailingWhitespace: Yes\n\nBuildType: Package\nPackageUseDevtools: Yes\nPackageInstallArgs: --no-multiarch --with-keep.source\nPackageRoxygenize: rd,collate,namespace\n"
  },
  {
    "path": "srcjs/input.js",
    "content": "/*\n * This default receiveMessage implementation expects data to contain whole\n * configuration and value properties. If either is present, it will be set and\n * the component will be re-rendered. Because receiveMessage is typically used\n * by input authors to perform incremental updates, this default implementation\n * can be overriden by the user with the receiveMessage arguments to\n * reactShinyInput.\n */\nfunction defaultReceiveMessage(el, { configuration, value }) {\n  let dirty = false;\n  if (configuration !== undefined) {\n    this.setInputConfiguration(el, configuration);\n    dirty = true;\n  }\n  if (value !== undefined) {\n    this.setInputValue(el, value);\n    dirty = true;\n  }\n  if (dirty) {\n    this.getCallback(el)();\n    this.render(el);\n  }\n}\n\nconst defaultOptions = {\n  receiveMessage: defaultReceiveMessage,\n  type: false,\n  ratePolicy: null\n};\n\n/**\n * Installs a new Shiny input binding based on a React component.\n *\n * @param {string} selector - jQuery selector that should identify the set of\n * container elements within the scope argument of Shiny.InputBinding.find.\n * @param {string} name - A name such as 'acme.FooInput' that should uniquely\n * identify the component.\n * @param {Object} component - React Component, either class or function.\n * @param {Object} options - Additional configuration options. Supported\n * options are:\n * - receiveMessage: Implementation of Shiny.InputBinding to use in place of\n *   the default. Typically overridden as an optimization to perform\n *   incremental value updates.\n * - type: `false`, a string, or a function.\n *     - `false` (the default): denotes that the value produced by this input\n *       should not be intercepted by any handlers registered in R on the\n *       server using shiny::registerInputHandler().\n *     - string: denotes the input's *type* and should correspond to the\n *       type parameter of shiny::registerInputHandler().\n *     - function: A function called with `this` bound to the InputBinding\n *       instance and passed a single argument, the input's containing DOM\n *       element. The function should return either `false` or a string\n *       corresponding to the type parameter of shiny::registerInputHandler().\n * - ratePolicy: A rate policy object as defined in the documentation for\n *     getRatePolicy(): https://shiny.rstudio.com/articles/building-inputs.html\n *     A rate policy object has two members:\n *     - `policy`: Valid values are the strings \"direct\", \"debounce\", and\n *       \"throttle\". \"direct\" means that all events are sent immediately.\n *     - `delay`: Number indicating the number of milliseconds that should be\n *       used when debouncing or throttling. Has no effect if the policy is\n *       direct.\n *     The specified rate policy is only applied when `true` is passed as the\n *     second argument to the `setValue` function passed as a prop to the\n *     input component.\n *\n */\nexport function reactShinyInput(selector,\n                           name,\n                           component,\n                           options) {\n  options = Object.assign({}, defaultOptions, options);\n  Shiny.inputBindings.register(new class extends Shiny.InputBinding {\n\n    /*\n     * Methods override those in Shiny.InputBinding\n     */\n\n    find(scope) {\n      return $(scope).find(selector);\n    }\n    getValue(el) {\n      return this.getInputValue(el);\n    }\n    setValue(el, value, rateLimited = false) {\n      /*\n       * We have to check whether $(el).data('callback') is undefined here\n       * in case shiny::renderUI() is involved. If an input is contained in a\n       * shiny::uiOutput(), the following strange thing happens occasionally:\n       *\n       *   1. setValue() is bound to an el in this.render(), below\n       *   2. An event that will call setValue() is enqueued\n       *   3. While the event is still enqueued, el is unbound and removed\n       *      from the DOM by the JS code associated with shiny::uiOutput()\n       *      - That code uses jQuery .html() in output_binding_html.js\n       *      - .html() removes el from the DOM and clears ist data and events\n       *   4. By the time the setValue() bound to the original el is invoked,\n       *      el has been unbound and its data cleared.\n       *\n       *  Since the original input is gone along with its callback, it\n       *  seems to make the most sense to do nothing.\n       */\n      if ($(el).data('callback') !== undefined) {\n        this.setInputValue(el, value);\n        this.getCallback(el)(rateLimited);\n        this.render(el);\n      }\n    }\n    initialize(el) {\n      $(el).data('value', JSON.parse($(el).next().text()));\n      $(el).data('configuration', JSON.parse($(el).next().next().text()));\n    }\n    subscribe(el, callback) {\n      $(el).data('callback', callback);\n      this.render(el);\n    }\n    unsubscribe(el) {\n      ReactDOM.render(null, el);\n    }\n    receiveMessage(el, data) {\n      options.receiveMessage.call(this, el, data);\n    }\n    getType(el) {\n      if (typeof options.type === 'function') {\n        return options.type.call(this, el);\n      } else if (options.type === false || typeof options.type === 'string') {\n        return options.type;\n      } else {\n        throw new Error('options.type must be false, a string, or a function');\n      }\n    }\n    getRatePolicy() {\n      return options.ratePolicy;\n    }\n\n    /*\n     * Methods not present in Shiny.InputBinding but accessible to users\n     * through `this` in receiveMessage\n     */\n\n    getInputValue(el) {\n      return $(el).data('value');\n    }\n    setInputValue(el, value) {\n      $(el).data('value', value);\n    }\n    getInputConfiguration(el) {\n      return $(el).data('configuration');\n    }\n    setInputConfiguration(el, configuration) {\n      $(el).data('configuration', configuration);\n    }\n    getCallback(el) {\n      return $(el).data('callback');\n    }\n    render(el) {\n      const element = React.createElement(component, {\n        configuration: this.getInputConfiguration(el),\n        value: this.getValue(el),\n        setValue: this.setValue.bind(this, el),\n        el: el\n      });\n      ReactDOM.render(element, el);\n    }\n  }, name);\n}\n\n"
  },
  {
    "path": "srcjs/react-tools.js",
    "content": "import { reactWidget, hydrate } from './widget';\nimport { reactShinyInput } from './input';\n\nexport {\n  reactShinyInput,\n  reactWidget,\n  hydrate\n};\n"
  },
  {
    "path": "srcjs/widget.js",
    "content": "/**\n * Recursively transforms tag, a JSON representation of an instance of a\n * React component and its children, into a React element suitable for\n * passing to ReactDOM.render.\n * @param {Object} components\n * @param {Object} tag\n */\nexport function hydrate(components, tag) {\n    if (typeof tag === 'string') return tag;\n    if (tag.name[0] === tag.name[0].toUpperCase()\n        && !components.hasOwnProperty(tag.name)) {\n        throw new Error(\"Unknown component: \" + tag.name);\n    }\n    // thanks https://github.com/stla\n    //   https://github.com/react-R/reactR/issues/61\n    //   attribs that are slots will likely contain tags that also need hydration\n    //   convert any attribs that contain object that matches tag structure\n    for(let attrib in tag.attribs) {\n        if(isTag(tag.attribs[attrib])) {\n          tag.attribs[attrib] = hydrate(components, tag.attribs[attrib]);\n        }\n      }\n    var elem = components.hasOwnProperty(tag.name) ? components[tag.name] : tag.name,\n        args = [elem, tag.attribs];\n    for (var i = 0; i < tag.children.length; i++) {\n        args.push(hydrate(components, tag.children[i]));\n    }\n    return React.createElement.apply(React, args);\n}\n\nexport const defaultOptions = {\n    // The name of the property on the root tag to use for the width, if\n    // it's updated.\n    widthProperty: \"width\",\n    // The name of the property on the root tag to use for the height, if\n    // it's updated.\n    heightProperty: \"height\",\n    // Whether or not to append the string 'px' to the width and height\n    // properties when they change.\n    appendPx: false,\n    // Whether or not to dynamically update the width and height properties\n    // of the last known tag when the computed width and height change in\n    // the browser.\n    renderOnResize: false\n};\n\nexport function mergeOptions(options) {\n    var merged = {};\n    for (var k in defaultOptions) {\n        merged[k] = defaultOptions[k];\n    }\n    for (var k in options) {\n        if (!defaultOptions.hasOwnProperty(k)) {\n            throw new Error(\"Unrecognized option: \" + k);\n        }\n        merged[k] = options[k];\n    }\n    return merged;\n}\n\nexport function formatDimension(dim, options) {\n    if (options.appendPx) {\n        return dim + 'px';\n    } else {\n        return dim;\n    }\n}\n\nexport function isTag(value) {\n    return (typeof value === 'object')\n        && value.hasOwnProperty('name')\n        && value.hasOwnProperty('attribs')\n        && value.hasOwnProperty('children');\n}\n\n/**\n * Creates an HTMLWidget that is updated by rendering a React component.\n * React component constructors are made available by specifying them by\n * name in the components object.\n * @param {string} name\n * @param {string} type\n * @param {Object} components\n * @param {Object} options\n */\nexport function reactWidget(name, type, components, options) {\n    var actualOptions = mergeOptions(options);\n    window.HTMLWidgets.widget({\n        name: name,\n        type: type,\n        factory: function (el, width, height) {\n            var lastValue,\n                instance = {},\n                renderValue = (function (value) {\n                    if (actualOptions.renderOnResize) {\n                        // value.tag might be a primitive string, in which\n                        // case there is no attribs property.\n                        if (typeof value.tag === 'object') {\n                            value.tag.attribs[actualOptions[\"widthProperty\"]] = formatDimension(width);\n                            value.tag.attribs[actualOptions[\"heightProperty\"]] = formatDimension(height);\n                        }\n                        lastValue = value;\n                    }\n                    // with functional stateless components this will be null\n                    // see https://reactjs.org/docs/react-dom.html#render for more details\n                    this.instance.component = ReactDOM.render(hydrate(components, value.tag), el);\n                });\n            return {\n                instance: instance,\n                renderValue: renderValue,\n                resize: function (newWidth, newHeight) {\n                    if (actualOptions.renderOnResize) {\n                        width = newWidth;\n                        height = newHeight;\n                        renderValue(lastValue);\n                    }\n                }\n            };\n        }\n    })\n}\n\n"
  },
  {
    "path": "vignettes/intro_htmlwidgets.Rmd",
    "content": "---\ntitle: \"Authoring htmlwidgets powered by React with reactR\"\nauthor:\n  - Alan Dipert\n  - Carson Sievert\ndate: \"`r Sys.Date()`\"\noutput: rmarkdown::html_vignette\nvignette: >\n  %\\VignetteIndexEntry{htmlwidgets with reactR}\n  %\\VignetteEngine{knitr::rmarkdown}\n  %\\VignetteEncoding{UTF-8}\n---\n  \n```{r, echo=FALSE, include=FALSE}\nknitr::opts_chunk$set(eval = FALSE)\n```\n\nThe [htmlwidgets](https://www.htmlwidgets.org) package provides a framework for creating R bindings to JavaScript libraries. Using the **htmlwidgets** package alone, it's not necessarily straight-forward to create an R binding to a [React](https://reactjs.org/)-powered JavaScript library. The **reactR** package builds on the **htmlwidgets** framework to make it much easier to author **htmlwidgets** that are powered by React. This vignette will show you how to effectively leverage **reactR** to build an **htmlwidgets** package that interfaces with [react-sparklines](https://github.com/borisyankov/react-sparklines) React JavaScript library.\n\n## Software pre-requisites\n\nIn order to develop a **reactR** widget, you'll need to install R and optionally RStudio. If you're on Windows, you should also install [Rtools](https://cran.r-project.org/bin/windows/Rtools/).\n\n> For an excellent general introduction to R package concepts, check out the [R packages](https://r-pkgs.org/) online book.\n\nIn addition, you'll need to install the following JavaScript tools on your machine:\n\n* [Node.js](https://nodejs.org): JavaScript engine and runtime for development outside of browsers. Provides the `node` and `npm` commands.\n* [Yarn](https://classic.yarnpkg.com/en/): Command-line dependency management tool, provides the `yarn` command.\n\nTo follow along in this vignette, you'll also need the following R packages:\n\n```{r}\ninstall.packages(c(\"shiny\", \"devtools\", \"usethis\", \"htmlwidgets\", \"reactR\"))\n```\n\n## Scaffolding\n\nTo create a new widget you can call `scaffoldReactWidget` to generate the basic structure and build configuration. This function will:\n\n* Create the .R, .js, .yaml, and .json files required by your widget;\n* If provided, take an [npm](https://www.npmjs.com/) package name and version as a named list with `name` and `version` elements. For example, the npm package `foo` at version `^1.2.0` would be expressed as `list(name = \"foo\", version = \"^1.2.0\")`. The package, if provided, will be added to the new widget's `package.json` as a build dependency.\n\nThe following R code will create an R package named **sparklines**, then provide the templating for creating an htmlwidget powered by the `react-sparklines` npm package:\n\n```{r}\n# Create the R package\nusethis::create_package(\"~/sparklines\")\n# Inject the widget templating\nwithr::with_dir(\n  \"~/sparklines\", \n  reactR::scaffoldReactWidget(\"sparklines\", list(\"react-sparklines\" = \"^1.7.0\"), edit = FALSE)\n)\n```\n\n## Building and installing\n\n### Building the JavaScript\n\nThe next step is to navigate to the newly-created `sparklines` project and run the following R commands:\n\n```{r}\nsystem(\"yarn install\")\nsystem(\"yarn run webpack\")\n```\n\n* `yarn install` downloads all of the dependencies listed in `package.json` and creates a new file, `yarn.lock`. You should add this file to revision control. It will be updated whenever you change dependencies and run `yarn install`. **Note: you only need to run it after modifying package.json**. For further documentation on `yarn install`, see the [yarn documentation](https://classic.yarnpkg.com/en/docs/cli/install/).\n\n* `yarn run webpack` compiles the [ES2015](https://babeljs.io/docs/en/learn/) JavaScript source file at `srcjs/sparklines.js` into `inst/htmlwidgets/sparklines.js`. The later file is one actually used by the R package and includes all the relevant JavaScript dependencies in a version of JavaScript that most browsers understand. Note that, if you add `--mode=development` to the end of this command, it will include a [source map](https://firefox-source-docs.mozilla.org/devtools-user/debugger/how_to/use_a_source_map/index.html) is included with the compiled JavaScript, which makes JavaScript debugging much easier, but hopefully you won't need to do much of any JavaScript debugging.\n\n`yarn run webpack` is not strictly a `yarn` command. In fact, `yarn run` simply delegates to the [webpack](https://webpack.js.org/) program.  Webpack's configuration is generated by `scaffoldReactWidget` in the file `webpack.config.js`, but you can always change this configuration and/or modify the `yarn run webpack` command to suit your needs.\n\n### Installing the R package\n\nNow that the widget's JavaScript is compiled, go ahead and install the R package:\n\n```{r}\ndevtools::document()\ndevtools::install(quick = TRUE)\n```\n\nAlternatively, in RStudio, you can use the keyboard shortcuts `Ctrl+Shift+D` and `Ctrl-Shift-B` to document and build the package. (On macOS, the shortcuts are `Cmd+Shift+D` and `Cmd+Shift+B`)\n\n## Run the included demo\n\nNow that the widget's JavaScript is compiled, and the R package is installed, run `app.R` to see a demo in action:\n\n```{r}\nshiny::runApp()\n```\n\nAlternatively, in RStudio, you can open `app.R` and press `Ctrl-Shift-Enter` (`Cmd-Shift-Enter` on macOS). You should see something like the following appear in the Viewer pane:\n\n![](./widget_app.jpg)\n\n## Authoring a React binding\n\nAt this point, we've built some scaffolding for an htmlwidget powered by React. Let's  modify it to create an interface to the `react-sparklines` library. Authoring the interface requires some changes on both the JavaScript and R side, but most of the hard thinking will be in figuring how best to design your interface. To give you an example of how this could work, let's build an interface to the `Sparklines` component of the react-sparklines library.\n\n### First, outline an interface\n\n> Note that the examples in this section are just to demonstrate API possibilities and need not be pasted into any file.\n\nConsider the following example taken from the [react-sparklines documentation](http://borisyankov.github.io/react-sparklines/).\n\n```js\nimport React from 'react';\nimport { Sparklines } from 'react-sparklines';\n\n<Sparklines data={sampleData}>\n  <SparklinesLine color=\"#56b45d\" />\n  <SparklinesSpots style={{ fill: \"#56b45d\" }} />\n</Sparklines>\n```\n\nYou have some choice in terms of how to design an R interface to this sort of React library, but usually it makes sense to have one function per component and have the arguments to that function feed into the properties of that React component. In other words, our goal is to create an R function that allows users of our package to recreate this example with the following code:\n\n```r\nlibrary(sparklines)\nsparklines(\n  data = sampleData,\n  sparklinesLine(color = \"#56b45d\"),\n  sparklinesSpots(style = list(fill = \"#56b45d\"))\n)\n```\n\nThe following sections show how to implement this R interface from our scaffolded widget.\n\n### R implementation\n\nConsider the template that `reactR::scaffoldReactWidget()` provided for us:\n\n```{r}\nsparklines <- function(message, width = NULL, height = NULL, elementId = NULL) {\n  \n  # describe a React component to send to the browser for rendering.\n  content <- htmltools::tag(\"div\", list(message))\n  \n  # create widget\n  htmlwidgets::createWidget(\n    name = 'sparklines',\n    reactR::reactMarkup(content),\n    width = width,\n    height = height,\n    package = 'sparklines',\n    elementId = elementId\n  )\n}\n```\n\nThis function is designed to simply display a message within an HTML div using **reactR** and **htmlwidgets**. The critical piece here that makes it all work is `reactR::reactMarkup()`. This function can prepare a payload containing a mix of HTML tags (constructed via `htmltools::tag()`), React components (constructed via `reactR::component()`), or character vectors in a such way that the **reactR** and **htmlwidgets** toolchain will understand and know how to render in the browser (assuming we've imported our React component appropriately, as we cover later). Thus, to send a `<Sparklines>` react component instead of an HTML `<div>`, we could simply change:\n\n```r\ncontent <- htmltools::tag(\"div\", list(message))\n```\n\nto\n\n```r\nreactR::component(\"Sparklines\", list(message))\n```\n\nRemember, though, that we'd like `<Sparklines>` to consume a `data` property and also accept other valid components (e.g., `<SparklinesLine>`, `<SparklinesSpot>`, etc) from this library as children. So, we could change the body and signature of `sparklines()` in the following way:\n\n```{r}\nsparklines <- function(data, ..., width = NULL, height = NULL) {\n  \n  # describe a React component to send to the browser for rendering.\n  content <- reactR::component(\n    \"Sparklines\",\n    list(data = data, ...)\n  )\n  \n  # create widget\n  htmlwidgets::createWidget(\n    name = 'sparklines',\n    reactR::reactMarkup(content),\n    width = width,\n    height = height,\n    package = 'sparklines'\n  )\n}\n```\n\nAt this point, we define functions that make it easy for the user to create the other components by adding these to  `R/sparklines.R`\n\n```{r}\n#' @export\nsparklinesLine <- function(...) {\n  reactR::React$SparklinesLine(...)\n}\n\n#' @export\nsparklinesSpots <- function(...) {\n  reactR::React$SparklinesSpots(...)\n}\n```\n\n### JavaScript changes\n\nIn order for the **reactR** toolchain to know how to render components from the 'react-sparklines' library, we need to register the React components on the JavaScript side. This can be done in the `srcjs/sparklines.js` file which currently looks like this:\n\n```{js}\nimport { reactWidget } from 'reactR';\n\nreactWidget('sparklines', 'output', {});\n```\n\nFirst, `reactWidget` is [imported](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/import) from the `'reactR'` JavaScript module. This function will register the React components we want within the **reactR** and **htmlwidgets** toolchain. Note that the `'reactR'` JavaScript is an html dependency, but webpack is configured in `webpack.config.js` to consider it a module, so it's available to us here via `import` syntax.\n\nThen, there's a call to `reactWidget`, and we pass it three arguments:\n\n1. The name of the widget (`'sparklines'`)\n1. The type of the widget (`'output'`)\n1. The React components that should be exposed to the widget. In this template, we didn't have to include any because it's just rendering an HTML div. \n\nInstead of passing an empty object (`{}`) as the React components, we provide an object with all the components we need from the 'react-sparklines' module:\n\n```{js}\nimport { Sparklines, SparklinesLine, SparklinesSpots } from 'react-sparklines';\nimport { reactWidget } from 'reactR';\n\nreactWidget('sparklines', 'output', {\n  Sparklines: Sparklines,\n  SparklinesLine: SparklinesLine,\n  SparklinesSpots: SparklinesSpots\n});\n```\n\n### Go for a spin\n\nNow that we've made the necessary changes to the JavaScript and R source code, it's time to compile the JavaScript and install the R package:\n\n```{r}\nsystem(\"yarn install\")\nsystem(\"yarn run webpack\")\ndevtools::document()\ndevtools::install()\nlibrary(sparklines)\nsparklines(rnorm(10), sparklinesLine())\n```\n\nThis should open up the `sparklines()` widget in your browser. If it does, congratulations, you created a React-based htmlwidget!\n\n### Shiny integration\n\nThe scaffolding template already provides the glue you need to get your **reactR** widget to render in **Shiny**. The two relevant functions are `renderSparklines()` and `sparklinesOutput()`. You shouldn't need to modify these functions — they should work out of the box. You will, however, want to modify the example **Shiny** app in the `app.R` file:\n\n```{r}\nlibrary(shiny)\nlibrary(sparklines)\n\nui <- fluidPage(\n  titlePanel(\"Sparklines library\"),\n  sliderInput(\"n\", label = \"Number of samples\", min = 2, max = 1000, value = 100),\n  sparklinesOutput(\"myWidget\")\n)\n\nserver <- function(input, output, session) {\n    output$myWidget <- renderSparklines({\n        sparklines(\n            rnorm(input$n),\n            sparklinesLine()\n        )\n    })\n}\n\nshinyApp(ui, server)\n```\n\nNow, when you run `shiny::runApp()`, you should see your react-based htmlwidget rendering in **shiny** app!\n\n![](./widget_app_improved.jpg)\n\n## Further learning\n\nThis tutorial walked you through the steps taken you create an R interface to the react-sparklines library. The full example package is accessible at <https://github.com/react-R/sparklines-example>. Our intention is keep creating example packages under the <https://github.com/react-R> organization, so head there if you'd like to see other examples of interfacing with React.\n"
  },
  {
    "path": "vignettes/intro_inputs.Rmd",
    "content": "---\ntitle: \"Authoring inputs powered by React with reactR\"\nauthor:\n  - Alan Dipert and Carson Sievert\ndate: \"`r Sys.Date()`\"\noutput: rmarkdown::html_vignette\nvignette: >\n  %\\VignetteIndexEntry{Shiny inputs with reactR}\n  %\\VignetteEngine{knitr::rmarkdown}\n  %\\VignetteEncoding{UTF-8}\n---\n\n```{r, echo=FALSE, include=FALSE}\nknitr::opts_chunk$set(eval = FALSE)\n```\n\n[Shiny](https://shiny.posit.co/) comes with a large library of input\n[widgets](https://shiny.posit.co/r/gallery/widgets/widget-gallery/) for collecting\ninput from the user and conveying input data to R.\n\nIf you want a kind of input *not* provided by Shiny &mdash; like a color picker,\nor a different kind of slider &mdash; you've always been able to build your own.\nShiny's input system is\n[extensible](https://shiny.rstudio.com/articles/building-inputs.html). All\nthat's required is an understanding of certain conventions and a little custom\nJavaScript.\n\nreactR provides additional tools to ease the creation of new Shiny inputs\nimplemented using React. In the following tutorial, we will demonstrate these\ntools by implementing a new Shiny color picker input that wraps the\n[react-color](https://github.com/casesandberg/react-color) library.\n\n## Software pre-requisites\n\nIn order to develop a **reactR** Shiny input, you'll need to install R and\noptionally RStudio. If you're on Windows, you should also install\n[Rtools](https://cran.r-project.org/bin/windows/Rtools/).\n\n> For an excellent general introduction to R package concepts, check out the [R\n> packages](https://r-pkgs.org/) online book.\n\nIn addition, you'll need to install the following JavaScript tools on your\nmachine:\n\n* [Node.js](https://nodejs.org): JavaScript engine and runtime for development\n  outside of browsers. Provides the `node` and `npm` commands.\n* [Yarn](https://classic.yarnpkg.com/en/): Command-line dependency management tool,\n  provides the `yarn` command.\n\nTo follow along in this vignette, you'll also need the following R packages:\n\n```{r}\ninstall.packages(c(\"shiny\", \"devtools\", \"usethis\", \"reactR\"))\n```\n\n## Scaffolding\n\nTo create a new widget you can call `scaffoldReactShinyInput` to generate the basic\nstructure and build configuration. This function will:\n\n* Create the .R, .js, and .json files required by your input;\n* If provided, take an [npm](https://www.npmjs.com/) package name and version as\n  a named list with `name` and `version` elements. For example, the npm package\n  `foo` at version `^1.2.0` would be expressed as `list(name = \"foo\", version =\n  \"^1.2.0\")`. The package, if provided, will be added to the new widget's\n  `package.json` as a build dependency.\n\nThe following R code will create an R package named **colorpicker**, then\nprovide the templating for creating an input powered by the\n`react-color` library on npm:\n\n```{r}\n# Create the R package (rstudio=TRUE is recommended if you're not already comfortable with your terminal)\nusethis::create_package(\"~/colorpicker\", rstudio = TRUE)\n# Scaffold initial input implementation files\nwithr::with_dir(\n  \"~/colorpicker\",\n  reactR::scaffoldReactShinyInput(\"colorpicker\", list(\"react-color\" = \"^2.17.0\"), edit = FALSE)\n)\n```\n\n\n## Building and installing\n\n### Building the JavaScript\n\nThe next step is to navigate to the newly-created `colorpicker` project and run\nthe following commands in the terminal. If you're new the terminal, we recommend opening your newly created RStudio  `~/colorpicker/colorpicker.Rproj` project file, then running the following in the RStudio terminal tab:\n\n```\nyarn install\nyarn run webpack\n```\n\n* `yarn install` downloads all of the dependencies listed in `package.json` and\n  creates a new file, `yarn.lock`. You should add this file to revision control.\n  It will be updated whenever you change dependencies and run `yarn install`.\n  **Note: you only need to run it after modifying package.json**. For further\n  documentation on `yarn install`, see the [yarn\n  documentation](https://classic.yarnpkg.com/en/docs/cli/install/).\n\n* `yarn run webpack` compiles the [modern JavaScript](https://babeljs.io/docs/en/babel-preset-env) \n  with [JSX](https://babeljs.io/docs/en/babel-preset-react) source file at `srcjs/colorpicker.jsx` into\n  `www/colorpicker/colorpicker/colorpicker.js`. The latter file is the one\n  actually used by the R package and includes all the relevant JavaScript\n  dependencies in a dialect of JavaScript that most browsers understand.\n\n`yarn run webpack` is not strictly a `yarn` command. In fact, `yarn run` simply\ndelegates to the [webpack](https://webpack.js.org/) program.  Webpack's\nconfiguration is generated by `scaffoldReactShinyInput` in the file\n`webpack.config.js`, but you can always change this configuration and/or modify\nthe `yarn run webpack` command to suit your needs.\n\n### Installing the R package\n\nNow that the input's JavaScript is compiled, go ahead and install the R\npackage:\n\n```{r}\ndevtools::document()\ndevtools::install(quick = TRUE)\n```\n\nIn RStudio, you can use the keyboard shortcuts `Ctrl-Shift-D` and\n`Ctrl-Shift-B` to document and build the package. (On macOS, the shortcuts are\n`Cmd-Shift-D` and `Cmd-Shift-B`)\n\n## Run the included demo\n\nNow that the input's JavaScript is compiled, and the R package is installed,\nrun `app.R` to see a demo in action:\n\n```{r}\nshiny::runApp()\n```\n\nIn RStudio, you can open `app.R` and press `Ctrl-Shift-Enter`\n(`Cmd-Shift-Enter` on macOS). You should see something like the following appear\nin the Viewer pane:\n\n![](./input_app.jpg)\n\n## Authoring a React input\n\nAt this point, we have a working (if simple) React-powered text input.\nLet's modify it to create an interface to the `react-color` library.\n\n### Connecting Shiny with React\n\nConsider the following example taken from the [react-color\ndocumentation](http://casesandberg.github.io/react-color/).\n\n```js\nimport React from 'react';\nimport { SketchPicker } from 'react-color';\n\nclass Component extends React.Component {\n\n  render() {\n    return <SketchPicker />;\n  }\n}\n```\n\nThat JavaScript code produces a `SketchPicker`-type interface that looks like\nthis:\n\n![](./input_sketchpicker.jpg)\n\nHowever, that example doesn't demonstrate a way to default to a particular\ncolor, or a way to cause something to happen when the color changes. To\naccomplish these, `react-color` components can [optionally\ntake](http://casesandberg.github.io/react-color/#api) the following\n[props](https://reactjs.org/docs/components-and-props.html):\n\n* [`color`](http://casesandberg.github.io/react-color/#api-color): accepts a \n  string of a hex color like `'#333'`\n* [`onChangeComplete`](http://casesandberg.github.io/react-color/#api-onChangeComplete): \n  accepts a JavaScript function taking a single argument, the new `color`, that \n  will be called when the new color is selected\n\nSince this React component calls a configurable function (i.e., `onChangeComplete`) when the input (i.e., color) value changes, we can supply a function to inform Shiny about these changes. You could, in theory, do this by writing your own custom Shiny input wrapper around this component, but `reactR` provides some conventions to make it much easier. These conventions have two main parts (R and JavaScript):\n\n1. Use `reactR::createReactShinyInput()` to construct the user-facing R input and route any user-supplied options (e.g., the `default` input value and other `configuration`) to the React component. This part was already done for us in the `R/colorpicker.R` file of our colorpicker project:\n\n```r\ncolorpickerInput <- function(inputId, default = \"\") {\n  reactR::createReactShinyInput(\n    inputId = inputId,\n    class = \"colorpicker\",\n    dependencies = htmltools::htmlDependency(\n      name = \"colorpicker-input\",\n      version = \"1.0.0\",\n      src = \"www/colorpicker/colorpicker\",\n      package = \"colorpicker\",\n      script = \"colorpicker.js\"\n    ),\n    default = default,\n    configuration = list(),\n    container = htmltools::tags$span\n  )\n}\n```\n\n2. Design an *intermediate* React component that routes information from `colorpickerInput()` to the `<SketchPicker>` component and also inform Shiny when a new color is chosen. This intermediate component should be a [functional component](https://reactjs.org/docs/components-and-props.html#function-and-class-components) with three arguments:\n\n* `configuration`: The JSON equivalent of the `configuration` argument from `reactR::createReactShinyInput()`. In this particular example, `configuration` isn't used.\n* `value`: The input's values over time, beginning with the `default` supplied from `reactR::createReactShinyInput()`.\n* `setValue`: A JavaScript function to call with the input's new value when one is created. This function is not user supplied, but rather an internal hook for informing Shiny about changes to the component's current state (i.e. value). \n\nConsider the following intermediate component, `PickerInput`. Note how this intermediate component allows one to set the default `value` from R and also calls `setValue()` inside `onChangeComplete` in order to inform Shiny about new color values. Finally, `reactR.reactShinyInput()` registers this intermediate component as a custom Shiny input binding named `colorpicker`.\n\n```js\nimport { reactShinyInput } from 'reactR';\nimport { SketchPicker } from 'react-color';\n\nconst PickerInput = ({ configuration, value, setValue }) => {\n  return (\n    <SketchPicker\n      color={ value }\n      onChangeComplete={ color => setValue(color.hex) }\n    />\n  );\n};\n\n// Note the first argument here should match the `class` \n// argument of the reactR::createReactShinyInput() from step 1\nreactShinyInput('.colorpicker', 'colorpicker', PickerInput);\n```\n\nOpen the `srcjs/colorpicker.jsx` file in your colorpicker project and paste this code into it. After saving the file, run `yarn run webpack` in the terminal, re-install the\npackage, then run `shiny::runApp()` again\n\n<video autoplay muted>\n  <source src=\"./input_sketchpicker.mp4\"/>\n</video>\n\nWhen you select new colors, you should see the `textOutput` update accordingly.\n\nYou might have noticed that the input showed up initially without a color\nselected. That's because in `app.R` we didn't supply a `default` argument to the\n`colorpickerInput` function inside our `ui`.\n\nTry replacing the call to `colorpickerInput` with this:\n`colorpickerInput(\"textInput\", default = \"#a76161\")`\n\nNow when you run the app, the color should start as a shade of red.\n\n## Further learning\n\nThis tutorial walked you through the steps taken to wrap the `react-color`\nlibrary in a Shiny input. The full example package is accessible at\n<https://github.com/react-R/colorpicker-example>. Our intention is keep creating\nexample packages under the <https://github.com/react-R> organization, so head\nthere if you'd like to see other examples of interfacing with React.\n"
  },
  {
    "path": "vignettes/intro_reactR.Rmd",
    "content": "---\ntitle: \"Intro to reactR\"\nauthor: \"Kent Russell\"\ndate: \"`r Sys.Date()`\"\noutput: rmarkdown::html_vignette\nvignette: >\n  %\\VignetteIndexEntry{Intro to reactR}\n  %\\VignetteEngine{knitr::rmarkdown}\n  %\\VignetteEncoding{UTF-8}\n---\n\n## Why reactR?\n\n[`react`](https://reactjs.org/) has become incredibly popular, and the ecosystem around `react` is robust.  `reactR` aims to allow `R` users to more easily incorporate `react` and `JSX`.\n\n## Install\n\n```\ninstall.packages(\"reactR\")\n\n# for the latest development version\n#  install from Github\n# devtools::install_github(\"timelyportfolio/reactR\")\n```\n\n## Quick Example\n\nLet's use `react` to render a simple `h1` HTML element below.\n\n<div id=\"react-heading-here\"></div>\n\n```{r}\nlibrary(reactR)\nlibrary(htmltools)\n\nattachDependencies(\n  tags$script(\n  \"\n    ReactDOM.render(\n      React.createElement(\n        'h1',\n        null,\n        'Powered by React'\n      ),\n      document.getElementById('react-heading-here')\n    )\n  \"\n  ),\n  html_dependency_react()\n)\n```\n\n## Blog Post\n\nFor more on how we can use R and React, see the blog post [React in R](https://www.jsinr.me/2017/11/19/react-in-r/).  Also, there are many more examples in the Github repo at [inst/examples](https://github.com/react-R/reactR/tree/master/inst/examples).\n\n## Using JSX\n\n[`JSX`](https://reactjs.org/docs/jsx-in-depth.html) helps ease some of the burden caused by `React.createElement`.  `reactR` provides a `babel_transform()` function to use `JSX`.  Hopefully, in the future, we can convince RStudio to modify `htmltools` to work directly with `JSX` (see [issue](https://github.com/rstudio/htmltools/pull/72)).\n"
  },
  {
    "path": "vite.config.js",
    "content": "import { resolve, join } from 'path';\nimport { defineConfig } from 'vite';\n\nexport default defineConfig({\n  define: { 'process.env.NODE_ENV': '\"production\"' },\n  build: {\n    outDir: join(__dirname, \"inst/www/react-tools/\"),\n    lib: {\n      // Could also be a dictionary or array of multiple entry points\n      entry: resolve(__dirname, 'srcjs/react-tools.js'),\n      name: 'reactR',\n      fileName: () => 'react-tools.js',\n      formats: ['umd'],\n    },\n    rollupOptions: {\n      external: ['react', 'react-dom', 'jquery', 'shiny'],\n      output: {\n        globals: {\n          'react': 'React',\n          'react-dom': 'ReactDOM',\n          'jquery': '$',\n          'shiny': 'Shiny'\n        },\n      },\n    },\n  },\n});\n"
  }
]