{
  "_id": "6a4d365e088975274b3ce707",
  "Package": "ggpaintr",
  "Type": "Package",
  "Title": "Build Formula-Driven 'shiny' Apps for 'ggplot2'",
  "Version": "0.11.1",
  "Authors@R": "c(\nperson(\ngiven = \"Wangqian\",\nfamily = \"Ju\",\nemail = \"wju@iastate.edu\",\nrole = c(\"aut\", \"cre\"),\ncomment = c(ORCID = \"0000-0002-9977-377X\")\n),\nperson(\ngiven = \"Jinji\",\nfamily = \"Pang\",\nemail = \"pjj0702@iastate.edu\",\nrole = \"aut\",\ncomment = c(ORCID = \"0000-0002-2267-2313\")\n),\nperson(\ngiven = \"Zhili\",\nfamily = \"Qiao\",\nemail = \"zlqiao@iastate.edu\",\nrole = \"aut\",\ncomment = c(ORCID = \"0000-0002-8154-0898\")\n)\n)",
  "Description": "Turns a single 'ggplot2'-style formula string into a small\n'shiny' application. Placeholder tokens in the formula become\ninput widgets automatically; the package completes the\nexpression with the current input values, renders the plot,\nshows the generated code, and supports uploaded datasets in\ndifferent formats.",
  "License": "GPL-3",
  "URL": "https://willju-wangqian.github.io/ggpaintr/,\nhttps://github.com/willju-wangqian/ggpaintr",
  "BugReports": "https://github.com/willju-wangqian/ggpaintr/issues",
  "VignetteBuilder": "knitr",
  "Encoding": "UTF-8",
  "RoxygenNote": "7.3.3",
  "Config/testthat/edition": "3",
  "Config/testthat/start-first": "e2e-vignette-examples-shinytest2,\nj12-spec-and-renderui-emission-journey,\nshared-source-panel-multi-instance,\nadr0024-companion-entry-point, prologue-reader-fn-mirror,\nj2-prologue-csv-upload-journey, j11-app-basic-journey,\ndefault-seeding-with-source-upstream, adr15-consumer-binding",
  "NeedsCompilation": "no",
  "Packaged": {
    "Date": "2026-07-07 17:19:50 UTC",
    "User": "root"
  },
  "Author": "Wangqian Ju [aut, cre] (ORCID:\n<https://orcid.org/0000-0002-9977-377X>), Jinji Pang [aut]\n(ORCID: <https://orcid.org/0000-0002-2267-2313>), Zhili Qiao\n[aut] (ORCID: <https://orcid.org/0000-0002-8154-0898>)",
  "Maintainer": "Wangqian Ju <wju@iastate.edu>",
  "Repository": "https://cran.r-universe.dev",
  "Date/Publication": "2026-07-07 10:10:02 UTC",
  "RemoteUrl": "https://github.com/cran/ggpaintr",
  "RemoteRef": "HEAD",
  "RemoteSha": "c3da678a1cf08ade55547e1b023438ab1d58c085",
  "_user": "cran",
  "_type": "src",
  "_file": "ggpaintr_0.11.1.tar.gz",
  "_fileid": "https://r2.ropensci.org/ae6d6dce72efe335b73613e6a76d980464a613c145ca78cd676c5e1ad36318df",
  "_filesize": 1697641,
  "_sha256": "ae6d6dce72efe335b73613e6a76d980464a613c145ca78cd676c5e1ad36318df",
  "_expires": "2026-10-15T17:24:44.000Z",
  "_created": "2026-07-07T17:19:50.000Z",
  "_published": "2026-07-07T17:24:46.192Z",
  "_jobs": [
    {
      "job": 85683727917,
      "time": 240,
      "config": "linux-devel-x86_64",
      "r": "4.7.0",
      "check": "OK",
      "artifact": "8145932739"
    },
    {
      "job": 85683727913,
      "time": 221,
      "config": "linux-release-x86_64",
      "r": "4.6.1",
      "check": "OK",
      "artifact": "8145924661"
    },
    {
      "job": 85682912246,
      "time": 234,
      "config": "source",
      "r": "4.6.1",
      "check": "OK",
      "artifact": "8145829508"
    },
    {
      "job": 85683728160,
      "time": 133,
      "config": "wasm-release",
      "r": "4.6.0",
      "check": "OK",
      "artifact": "8145887156"
    }
  ],
  "_host": "GitHub-Actions",
  "_buildurl": "https://github.com/r-universe/cran/actions/runs/28885014705",
  "_status": "success",
  "_upstream": "https://github.com/cran/ggpaintr",
  "_commit": {
    "id": "c3da678a1cf08ade55547e1b023438ab1d58c085",
    "author": "Wangqian Ju <wju@iastate.edu>",
    "committer": "cran-robot <csardi.gabor+cran@gmail.com>",
    "message": "version 0.11.1\n",
    "time": 1783419002
  },
  "_maintainer": {
    "name": "Wangqian Ju",
    "email": "wju@iastate.edu",
    "login": "willju-wangqian",
    "description": "",
    "uuid": 54684730,
    "orcid": "0000-0002-9977-377X"
  },
  "_distro": "resolute",
  "_registered": true,
  "_dependencies": [
    {
      "package": "R",
      "version": ">= 4.1.0",
      "role": "Depends"
    },
    {
      "package": "ggplot2",
      "version": ">= 3.3.0",
      "role": "Depends"
    },
    {
      "package": "assertthat",
      "version": ">= 0.2.0",
      "role": "Imports"
    },
    {
      "package": "cli",
      "version": ">= 2.2.0",
      "role": "Imports"
    },
    {
      "package": "htmltools",
      "role": "Imports"
    },
    {
      "package": "rlang",
      "version": ">= 1.0.0",
      "role": "Imports"
    },
    {
      "package": "shiny",
      "version": ">= 1.6.0",
      "role": "Imports"
    },
    {
      "package": "shinyWidgets",
      "version": ">= 0.6.4",
      "role": "Imports"
    },
    {
      "package": "bslib",
      "version": ">= 0.5.0",
      "role": "Suggests"
    },
    {
      "package": "dplyr",
      "role": "Suggests"
    },
    {
      "package": "ellmer",
      "role": "Suggests"
    },
    {
      "package": "jsonlite",
      "role": "Suggests"
    },
    {
      "package": "knitr",
      "role": "Suggests"
    },
    {
      "package": "miniUI",
      "role": "Suggests"
    },
    {
      "package": "pkgdown",
      "role": "Suggests"
    },
    {
      "package": "plotly",
      "role": "Suggests"
    },
    {
      "package": "purrr",
      "role": "Suggests"
    },
    {
      "package": "readxl",
      "role": "Suggests"
    },
    {
      "package": "rmarkdown",
      "role": "Suggests"
    },
    {
      "package": "rstudioapi",
      "role": "Suggests"
    },
    {
      "package": "shinytest2",
      "role": "Suggests"
    },
    {
      "package": "testthat",
      "version": ">= 3.1.7",
      "role": "Suggests"
    },
    {
      "package": "withr",
      "role": "Suggests"
    },
    {
      "package": "writexl",
      "role": "Suggests"
    },
    {
      "package": "xaringanExtra",
      "role": "Suggests"
    }
  ],
  "_owner": "cran",
  "_selfowned": false,
  "_usedby": 0,
  "_updates": [
    {
      "week": "2026-28",
      "n": 1
    }
  ],
  "_tags": [
    {
      "name": "0.11.1",
      "date": "2026-07-07"
    }
  ],
  "_stars": 0,
  "_contributors": [
    {
      "user": "willju-wangqian",
      "count": 1,
      "uuid": 54684730
    }
  ],
  "_userbio": {
    "uuid": 6899542,
    "type": "organization",
    "name": "cran",
    "followers": 617,
    "description": "Unofficial read-only mirror of all CRAN R packages"
  },
  "_downloads": {
    "count": 0,
    "source": "https://cranlogs.r-pkg.org/downloads/total/last-month/ggpaintr"
  },
  "_devurl": "https://github.com/willju-wangqian/ggpaintr",
  "_pkgdown": "https://willju-wangqian.github.io/ggpaintr/",
  "_searchresults": 59,
  "_rbuild": "4.6.1",
  "_assets": [
    "extra/citation.cff",
    "extra/citation.html",
    "extra/citation.json",
    "extra/citation.txt",
    "extra/contents.json",
    "extra/ggpaintr.html",
    "extra/NEWS.html",
    "extra/NEWS.txt",
    "manual.pdf"
  ],
  "_cranurl": false,
  "_releases": [
    {
      "version": "0.11.1",
      "date": "2026-07-07"
    }
  ],
  "_exports": [
    "embellish_identity",
    "embellish_symbol_to_string",
    "ppExpr",
    "ppLayerOff",
    "ppNum",
    "ppText",
    "ppUpload",
    "ppVar",
    "ppVerbSwitch",
    "ptr_app",
    "ptr_arg_expression",
    "ptr_arg_numeric",
    "ptr_arg_string",
    "ptr_arg_symbol",
    "ptr_arg_symbol_or_string",
    "ptr_clear_constant_fold",
    "ptr_clear_placeholder",
    "ptr_constant_fold_keywords",
    "ptr_define_placeholder_consumer",
    "ptr_define_placeholder_source",
    "ptr_define_placeholder_value",
    "ptr_extract_code",
    "ptr_extract_error",
    "ptr_extract_plot",
    "ptr_gg_extra",
    "ptr_ggplotly",
    "ptr_id_table",
    "ptr_init_state",
    "ptr_llm_primer",
    "ptr_llm_register",
    "ptr_llm_topic",
    "ptr_llm_topics",
    "ptr_normalize_column_names",
    "ptr_options",
    "ptr_plotly_selection",
    "ptr_register_constant_fold",
    "ptr_resolve_ui_text",
    "ptr_server",
    "ptr_shared",
    "ptr_shared_panel",
    "ptr_shared_server",
    "ptr_signal_partial",
    "ptr_ui",
    "ptr_ui_assets",
    "ptr_ui_code",
    "ptr_ui_controls",
    "ptr_ui_error",
    "ptr_ui_header",
    "ptr_ui_inline_error",
    "ptr_ui_page",
    "ptr_ui_plot",
    "ptr_ui_shared_panel",
    "ptr_ui_text",
    "ptr_ui_toggle_code",
    "ptr_wrap_placeholder_addin"
  ],
  "_help": [
    {
      "page": "embellish_helpers",
      "title": "Built-in helpers for a placeholder's plain-R evaluation slot",
      "topics": [
        "embellish_helpers",
        "embellish_identity",
        "embellish_symbol_to_string"
      ]
    },
    {
      "page": "ppLayerOff",
      "title": "Off-by-default layer wrapper",
      "topics": [
        "ppLayerOff"
      ]
    },
    {
      "page": "ppVar",
      "title": "Placeholder Identity Helpers",
      "topics": [
        "ppExpr",
        "ppNum",
        "ppText",
        "ppUpload",
        "ppVar",
        "pp_placeholders"
      ]
    },
    {
      "page": "ppVerbSwitch",
      "title": "Switchable pipeline-stage wrapper",
      "topics": [
        "ppVerbSwitch"
      ]
    },
    {
      "page": "ptr_app",
      "title": "Build a Shiny App from a 'ggpaintr' Formula",
      "topics": [
        "ptr_app"
      ]
    },
    {
      "page": "ptr_arg_validators",
      "title": "Argument validators for placeholder definitions (ptr_arg_*)",
      "topics": [
        "ptr_arg_expression",
        "ptr_arg_numeric",
        "ptr_arg_string",
        "ptr_arg_symbol",
        "ptr_arg_symbol_or_string",
        "ptr_arg_validators"
      ]
    },
    {
      "page": "ptr_clear_placeholder",
      "title": "Remove user-registered placeholders",
      "topics": [
        "ptr_clear_placeholder"
      ]
    },
    {
      "page": "ptr_constant_fold_registry",
      "title": "Constant-fold allowlist registry",
      "topics": [
        "ptr_clear_constant_fold",
        "ptr_constant_fold_keywords",
        "ptr_constant_fold_registry",
        "ptr_register_constant_fold"
      ]
    },
    {
      "page": "ptr_define_placeholder_consumer",
      "title": "Define a data-consumer placeholder (e.g. column picker)",
      "topics": [
        "ptr_define_placeholder_consumer"
      ]
    },
    {
      "page": "ptr_define_placeholder_source",
      "title": "Define a data-source placeholder (e.g. upload, database table)",
      "topics": [
        "ptr_define_placeholder_source"
      ]
    },
    {
      "page": "ptr_define_placeholder_value",
      "title": "Define a value placeholder",
      "topics": [
        "ptr_define_placeholder_value"
      ]
    },
    {
      "page": "ptr_extract",
      "title": "Extract Runtime Outputs From a 'ptr_state'",
      "topics": [
        "ptr_extract",
        "ptr_extract_code",
        "ptr_extract_error",
        "ptr_extract_plot"
      ]
    },
    {
      "page": "ptr_gg_extra",
      "title": "Add 'ggplot2' Layers Programmatically",
      "topics": [
        "ptr_gg_extra"
      ]
    },
    {
      "page": "ptr_ggplotly",
      "title": "Build a plotly Widget From a 'ggpaintr' Instance, Wired for Linked Selection",
      "topics": [
        "ptr_ggplotly"
      ]
    },
    {
      "page": "ptr_id_table",
      "title": "Enumerate every Shiny id a ggpaintr formula produces",
      "topics": [
        "ptr_id_table"
      ]
    },
    {
      "page": "ptr_init_state",
      "title": "Construct the ggpaintr runtime state container",
      "topics": [
        "ptr_init_state"
      ]
    },
    {
      "page": "ptr_llm_primer",
      "title": "Get the ggpaintr LLM system-prompt primer",
      "topics": [
        "ptr_llm_primer"
      ]
    },
    {
      "page": "ptr_llm_register",
      "title": "Register ggpaintr with an ellmer chat session",
      "topics": [
        "ptr_llm_register"
      ]
    },
    {
      "page": "ptr_llm_topic",
      "title": "Fetch a ggpaintr LLM topic",
      "topics": [
        "ptr_llm_topic"
      ]
    },
    {
      "page": "ptr_llm_topics",
      "title": "List available ggpaintr LLM topic names",
      "topics": [
        "ptr_llm_topics"
      ]
    },
    {
      "page": "ptr_normalize_column_names",
      "title": "Normalize Dataset Column Names for 'ggpaintr'",
      "topics": [
        "ptr_normalize_column_names"
      ]
    },
    {
      "page": "ptr_options",
      "title": "Get or Set ggpaintr Package Options",
      "topics": [
        "ptr_options"
      ]
    },
    {
      "page": "ptr_plotly_selection",
      "title": "Read a 'ptr_ggplotly()' Linked Selection As Rows or a Flag Column",
      "topics": [
        "ptr_plotly_selection"
      ]
    },
    {
      "page": "ptr_resolve_ui_text",
      "title": "Resolve copy for one ggpaintr control or app element",
      "topics": [
        "ptr_resolve_ui_text"
      ]
    },
    {
      "page": "ptr_server",
      "title": "Server for a 'ggpaintr' Formula",
      "topics": [
        "ptr_server"
      ]
    },
    {
      "page": "ptr_shared",
      "title": "Build the Shared Coordinator for a Multi-Instance Embedding",
      "topics": [
        "ptr_shared"
      ]
    },
    {
      "page": "ptr_shared_panel",
      "title": "Render the Standalone Shared Panel (L2, Self-Contained)",
      "topics": [
        "ptr_shared_panel"
      ]
    },
    {
      "page": "ptr_shared_server",
      "title": "Server-Side Counterpart to the Shared Coordinator",
      "topics": [
        "ptr_shared_server"
      ]
    },
    {
      "page": "ptr_signal_partial",
      "title": "Signal a transient \"partial input\" failure from a placeholder hook",
      "topics": [
        "ptr_signal_partial"
      ]
    },
    {
      "page": "ptr_ui",
      "title": "Self-contained UI for a 'ggpaintr' Formula",
      "topics": [
        "ptr_ui"
      ]
    },
    {
      "page": "ptr_ui_assets",
      "title": "Bundled CSS / JS Assets Piece for 'ggpaintr'",
      "topics": [
        "ptr_ui_assets"
      ]
    },
    {
      "page": "ptr_ui_code",
      "title": "Generated-Code Pane Piece for a 'ggpaintr' Formula",
      "topics": [
        "ptr_ui_code"
      ]
    },
    {
      "page": "ptr_ui_controls",
      "title": "Controls Piece for a 'ggpaintr' Formula",
      "topics": [
        "ptr_ui_controls"
      ]
    },
    {
      "page": "ptr_ui_error",
      "title": "Inline Error Pane Piece for a 'ggpaintr' Formula",
      "topics": [
        "ptr_ui_error"
      ]
    },
    {
      "page": "ptr_ui_header",
      "title": "App Header Piece for 'ggpaintr'",
      "topics": [
        "ptr_ui_header"
      ]
    },
    {
      "page": "ptr_ui_inline_error",
      "title": "Nest an Inline Error Slot in a Plot Piece",
      "topics": [
        "ptr_ui_inline_error"
      ]
    },
    {
      "page": "ptr_ui_page",
      "title": "Page shell for hand-composed ggpaintr UIs",
      "topics": [
        "ptr_ui_page"
      ]
    },
    {
      "page": "ptr_ui_plot",
      "title": "Plot Pane Piece for a 'ggpaintr' Formula",
      "topics": [
        "ptr_ui_plot"
      ]
    },
    {
      "page": "ptr_ui_shared_panel",
      "title": "Render the Standalone Shared Panel (L3, Bare)",
      "topics": [
        "ptr_ui_shared_panel"
      ]
    },
    {
      "page": "ptr_ui_text",
      "title": "Inspect, validate, and pre-merge ggpaintr UI copy",
      "topics": [
        "ptr_ui_text"
      ]
    },
    {
      "page": "ptr_ui_toggle_code",
      "title": "Wire a Plot-ish Piece to a Slide-Out Code Window via the </> Toggle",
      "topics": [
        "ptr_ui_toggle_code"
      ]
    },
    {
      "page": "ptr_wrap_placeholder_addin",
      "title": "RStudio addin: wrap a selection in a ggpaintr placeholder",
      "topics": [
        "ptr_wrap_placeholder_addin"
      ]
    }
  ],
  "_pkglogo": "https://github.com/cran/ggpaintr/raw/HEAD/man/figures/logo.png",
  "_rundeps": [
    "assertthat",
    "base64enc",
    "bslib",
    "cachem",
    "cli",
    "commonmark",
    "cpp11",
    "digest",
    "farver",
    "fastmap",
    "fontawesome",
    "fs",
    "ggplot2",
    "glue",
    "gtable",
    "htmltools",
    "httpuv",
    "isoband",
    "jquerylib",
    "jsonlite",
    "labeling",
    "later",
    "lifecycle",
    "magrittr",
    "memoise",
    "mime",
    "otel",
    "promises",
    "R6",
    "rappdirs",
    "RColorBrewer",
    "Rcpp",
    "rlang",
    "S7",
    "sass",
    "scales",
    "shiny",
    "shinyWidgets",
    "sourcetools",
    "vctrs",
    "viridisLite",
    "withr",
    "xtable"
  ],
  "_vignettes": [
    {
      "source": "ggpaintr-tutorial.Rmd",
      "filename": "ggpaintr-tutorial.html",
      "title": "Tutorial",
      "engine": "knitr::rmarkdown",
      "headings": [
        "1. Basics",
        "The five built-in placeholders",
        "Seeding the widgets",
        "Nothing renders until you click Update",
        "2. Defining your own placeholders",
        "2.1 A value placeholder — every argument",
        "keyword",
        "build_ui — and why its signature looks the way it does",
        "resolve_expr",
        "validate_session_input",
        "parse_positional_arg",
        "parse_named_args",
        "embellish_eval",
        "ui_text_defaults",
        "2.2 A consumer placeholder — the delta",
        "2.3 A source placeholder — the delta",
        "3. Multiple plots, and writing your own Shiny app",
        "One plot inside your own app",
        "Sharing one control across several plots"
      ],
      "created": "2026-07-07 10:10:02",
      "modified": "2026-07-07 10:10:02",
      "commits": 1
    }
  ],
  "_score": 2.7708520116421442,
  "_indexed": true,
  "_nocasepkg": "ggpaintr",
  "_universes": [
    "cran",
    "willju-wangqian"
  ],
  "_binaries": [
    {
      "r": "4.7.0",
      "os": "linux",
      "version": "0.11.1",
      "date": "2026-07-07T17:22:50.000Z",
      "distro": "resolute",
      "commit": "c3da678a1cf08ade55547e1b023438ab1d58c085",
      "fileid": "https://r2.ropensci.org/e2327c7c2cc982a1061d6af3433fa8c78c9b2f3bb3d47c861821a3e5d18ac2ff",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/cran/actions/runs/28885014705"
    },
    {
      "r": "4.6.1",
      "os": "linux",
      "version": "0.11.1",
      "date": "2026-07-07T17:22:34.000Z",
      "distro": "resolute",
      "commit": "c3da678a1cf08ade55547e1b023438ab1d58c085",
      "fileid": "https://r2.ropensci.org/878e184c4604391c2e52f600da47e3137ead63929c4b75a3e445d73750931798",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/cran/actions/runs/28885014705"
    },
    {
      "r": "4.6.0",
      "os": "wasm",
      "version": "0.11.1",
      "date": "2026-07-07T17:22:33.000Z",
      "commit": "c3da678a1cf08ade55547e1b023438ab1d58c085",
      "fileid": "https://r2.ropensci.org/899d99983314b158cc3830adc62b3b3ee1015fe2458ed76993487fa114213147",
      "status": "success",
      "buildurl": "https://github.com/r-universe/cran/actions/runs/28885014705"
    }
  ]
}