{
  "_id": "6a10646bacfb0bcc41ca87e6",
  "Package": "shinyEvents",
  "Type": "Package",
  "Title": "Shiny wrapper with event handlers instead of reactivity",
  "Version": "2.3",
  "Date": "2018-02-28",
  "Author": "Sebastian Kranz",
  "Maintainer": "Sebastian Kranz <sebastian.kranz@uni-ulm.de>",
  "Description": "Shiny is a great package. Yet, for more complex projects,\nwith much dynamic UI, I find it hard to write clean code with\nits reactivity paradigm. This package wraps shiny into a more\ntraditional programming approach: - event handlers for input\nchanges and button clicks - explicit update functions to change\noutputs - no explicit server function",
  "License": "GPL >= 2.0",
  "RoxygenNote": "5.0.0",
  "Config/pak/sysreqs": "cmake make libuv1-dev zlib1g-dev",
  "Repository": "https://skranz.r-universe.dev",
  "Date/Publication": "2022-12-16 14:28:05 UTC",
  "RemoteUrl": "https://github.com/skranz/shinyEvents",
  "RemoteRef": "master",
  "RemoteSha": "092ea663d7d23b731e26eeb3b865afbde6c513f0",
  "NeedsCompilation": "no",
  "Packaged": {
    "Date": "2026-05-08 06:54:30 UTC",
    "User": "root"
  },
  "MD5sum": "d89cda7312c1d354ee16493022da6056",
  "_user": "skranz",
  "_type": "src",
  "_file": "shinyEvents_2.3.tar.gz",
  "_fileid": "06116f006fc97c7164c27d19ee816bd65ebb9a9fde3474254dbcb84cb5d610b8",
  "_filesize": 161453,
  "_sha256": "06116f006fc97c7164c27d19ee816bd65ebb9a9fde3474254dbcb84cb5d610b8",
  "_created": "2026-05-08T06:54:30.000Z",
  "_published": "2026-05-22T14:12:59.778Z",
  "_distro": "noble",
  "_jobs": [
    {
      "job": 77397055087,
      "time": 151,
      "config": "linux-devel-x86_64",
      "r": "4.7.0",
      "check": "WARNING",
      "artifact": "6873625497"
    },
    {
      "job": 77397055147,
      "time": 108,
      "config": "linux-release-x86_64",
      "r": "4.6.0",
      "check": "WARNING",
      "artifact": "6873614911"
    },
    {
      "job": 77397055217,
      "time": 91,
      "config": "macos-oldrel-arm64",
      "r": "4.5.3",
      "check": "WARNING",
      "artifact": "6873610444"
    },
    {
      "job": 77397054970,
      "time": 112,
      "config": "macos-release-arm64",
      "r": "4.6.0",
      "check": "WARNING",
      "artifact": "6873615713"
    },
    {
      "job": 77397053888,
      "time": 177,
      "config": "source",
      "r": "4.6.0",
      "check": "OK",
      "artifact": "6873586935"
    },
    {
      "job": 77397054249,
      "time": 133,
      "config": "wasm-release",
      "r": "4.6.0",
      "check": "OK",
      "artifact": "7162616901"
    },
    {
      "job": 77397054481,
      "time": 87,
      "config": "windows-devel",
      "r": "4.7.0",
      "check": "WARNING",
      "artifact": "6873609622"
    },
    {
      "job": 77397055189,
      "time": 77,
      "config": "windows-oldrel",
      "r": "4.5.3",
      "check": "WARNING",
      "artifact": "6873606963"
    },
    {
      "job": 77397055010,
      "time": 78,
      "config": "windows-release",
      "r": "4.6.0",
      "check": "WARNING",
      "artifact": "6873607516"
    }
  ],
  "_buildurl": "https://github.com/r-universe/skranz/actions/runs/25541590353",
  "_status": "success",
  "_host": "GitHub-Actions",
  "_upstream": "https://github.com/skranz/shinyEvents",
  "_commit": {
    "id": "092ea663d7d23b731e26eeb3b865afbde6c513f0",
    "author": "Sebastian Kranz <sebkranz@gmail.com>",
    "committer": "GitHub <noreply@github.com>",
    "message": "Merge pull request #5 from sandeepmishratech/patch-1\n\nAdded a new resource",
    "time": 1671200885
  },
  "_maintainer": {
    "name": "Sebastian Kranz",
    "email": "sebastian.kranz@uni-ulm.de",
    "login": "skranz",
    "bluesky": "@sebkranz.bsky.social",
    "uuid": 1413022
  },
  "_registered": true,
  "_dependencies": [
    {
      "package": "shiny",
      "role": "Depends"
    },
    {
      "package": "restorepoint",
      "role": "Depends"
    }
  ],
  "_owner": "skranz",
  "_selfowned": true,
  "_usedby": 7,
  "_updates": [],
  "_tags": [],
  "_topics": [
    "shiny"
  ],
  "_stars": 36,
  "_contributors": [
    {
      "user": "skranz",
      "count": 81,
      "uuid": 1413022
    }
  ],
  "_userbio": {
    "uuid": 1413022,
    "type": "user",
    "name": "Sebastian Kranz"
  },
  "_downloads": {
    "count": 0,
    "source": "https://cranlogs.r-pkg.org/downloads/total/last-month/shinyEvents"
  },
  "_devurl": "https://github.com/skranz/shinyevents",
  "_searchresults": 26,
  "_rbuild": "4.6.0",
  "_assets": [
    "extra/citation.cff",
    "extra/citation.html",
    "extra/citation.json",
    "extra/citation.txt",
    "extra/contents.json",
    "extra/readme.html",
    "extra/readme.md",
    "extra/shinyEvents.html",
    "manual.pdf"
  ],
  "_cranurl": false,
  "_exports": [
    "aceHotkeyHandler",
    "addCssClass",
    "addEventHandlerToApp",
    "addEventsAppExtraTags",
    "addEventsToSession",
    "addHandlersToSession",
    "addShinyEventsRessourcePath",
    "appendToHTML",
    "appInitHandler",
    "appReadyToRun",
    "autcomp.function.args",
    "autocomp.cols",
    "autocomp.find.current.function",
    "autocomp.js",
    "autocomp.vars",
    "bottomScript",
    "buttonHandler",
    "buttonHandlerJS",
    "callJS",
    "changeHandler",
    "checkboxChangeHandler",
    "classEventHandler",
    "customEventHandler",
    "destroyHandlerObserver",
    "display",
    "documentClickHandler",
    "documentClickHandlerJS",
    "dsetUI",
    "evalJS",
    "eventHandler",
    "eventsApp",
    "examples.click",
    "examples.form.widgets",
    "examples.to.style",
    "examples.widgets",
    "find.varname.at.end.of.string",
    "fun.arg.names",
    "getApp",
    "getAppEvent",
    "getAppSession",
    "getCurrentSession",
    "getDefaultAppEvents",
    "getInputValue",
    "hasUpdater",
    "hasWidgetValueChanged",
    "idEventHandler",
    "ids2sel",
    "imageClickHandler",
    "initHandlerCallEnv",
    "initialQueryDispatch",
    "js.event.triggered",
    "makeEventsId",
    "moveBottomScripts",
    "open.url.from.app",
    "prependToHTML",
    "random.string",
    "registerEvent",
    "removeCssClass",
    "removeEventHandler",
    "runEventsApp",
    "sc",
    "selectChangeHandler",
    "selectChangeHandlerJS",
    "set.autocomplete.list",
    "setApp",
    "setAppHasBottomScript",
    "setAppIsAuthenticated",
    "setAppSession",
    "setAppUI",
    "setDataTable",
    "setDownloadHandler",
    "setHtmlAttribute",
    "setHtmlCSS",
    "setHtmlHide",
    "setHtmlShow",
    "setImage",
    "setInnerHTML",
    "setPlot",
    "setPrint",
    "setRHandsontable",
    "setTable",
    "setText",
    "setUI",
    "setWidgetValues",
    "simpleButton",
    "simpleCheckbox",
    "singletonBottomScript",
    "slimCollapsePanel",
    "smallButton",
    "svgClickHandler",
    "swapCssClass",
    "test.event.authentication",
    "timerHandler",
    "to.style",
    "updateDataTable",
    "updateDownloadHandler",
    "updateImage",
    "updatePlot",
    "updatePrint",
    "updateRHandsontable",
    "updateTable",
    "updateText",
    "updateUI",
    "viewApp",
    "wasAceHotkeyPressed"
  ],
  "_help": [
    {
      "page": "aceHotkeyHandler",
      "title": "Add an handler to a hotkey in an aceEditor component",
      "topics": [
        "aceHotkeyHandler"
      ]
    },
    {
      "page": "appendToHTML",
      "title": "Append HTML code to a DOM element",
      "topics": [
        "appendToHTML"
      ]
    },
    {
      "page": "appInitHandler",
      "title": "Set a function that will be called when a new session of an app is initialized.",
      "topics": [
        "appInitHandler"
      ]
    },
    {
      "page": "appReadyToRun",
      "title": "set the app ready to run",
      "topics": [
        "appReadyToRun"
      ]
    },
    {
      "page": "bottomScript",
      "title": "If app is not running, mark script to be added at the bottom and return NULL If app is already running return script directly",
      "topics": [
        "bottomScript"
      ]
    },
    {
      "page": "buttonHandler",
      "title": "A more efficient version of button handler via global eventId handler",
      "topics": [
        "buttonHandler"
      ]
    },
    {
      "page": "callJS",
      "title": "Call a javascript function or method with R arguments",
      "topics": [
        "callJS"
      ]
    },
    {
      "page": "changeHandler",
      "title": "Add an handler to an input that is called when the input value changes",
      "topics": [
        "changeHandler"
      ]
    },
    {
      "page": "classEventHandler",
      "title": "An event handler for objects with given class",
      "topics": [
        "classEventHandler"
      ]
    },
    {
      "page": "customEventHandler",
      "title": "A custom event handler. Need to write correct css.locator",
      "topics": [
        "customEventHandler"
      ]
    },
    {
      "page": "dsetUI",
      "title": "Directly setUI , also works for hidden UI",
      "topics": [
        "dsetUI"
      ]
    },
    {
      "page": "evalJS",
      "title": "Evaluate arbitrary java script code in the client's web browser",
      "topics": [
        "evalJS"
      ]
    },
    {
      "page": "eventsApp",
      "title": "Generate an empty shiny events app",
      "topics": [
        "eventsApp"
      ]
    },
    {
      "page": "getApp",
      "title": "get the current app object",
      "topics": [
        "getApp"
      ]
    },
    {
      "page": "getAppSession",
      "title": "Get the session associated with the app object",
      "topics": [
        "getAppSession"
      ]
    },
    {
      "page": "getCurrentSession",
      "title": "Get the current session object",
      "topics": [
        "getCurrentSession"
      ]
    },
    {
      "page": "getInputValue",
      "title": "Get an input value from the current session",
      "topics": [
        "getInputValue"
      ]
    },
    {
      "page": "hasWidgetValueChanged",
      "title": "Checks whether the value of an input item has been changed (internal function)",
      "topics": [
        "hasWidgetValueChanged"
      ]
    },
    {
      "page": "idEventHandler",
      "title": "An event handler for an object with given id",
      "topics": [
        "idEventHandler"
      ]
    },
    {
      "page": "ids2sel",
      "title": "Transform a vector of ids to a jQuery selector string",
      "topics": [
        "ids2sel"
      ]
    },
    {
      "page": "imageClickHandler",
      "title": "Handler for an image click",
      "topics": [
        "imageClickHandler"
      ]
    },
    {
      "page": "initialQueryDispatch",
      "title": "Can be called inside initApp handler fun is a function that gets an argument query and can do some initial dispatch depending on the query. For some reason we need to use the observer trick to get access to the query object. This means dispatch takes place after other commands in the initApp handler.",
      "topics": [
        "initialQueryDispatch"
      ]
    },
    {
      "page": "moveBottomScripts",
      "title": "Given a tag object, extract out any children of tags$head and return them separate from the body.",
      "topics": [
        "moveBottomScripts"
      ]
    },
    {
      "page": "prependToHTML",
      "title": "Prpend HTML code to a DOM element",
      "topics": [
        "prependToHTML"
      ]
    },
    {
      "page": "runEventsApp",
      "title": "run shiny events app",
      "topics": [
        "runEventsApp"
      ]
    },
    {
      "page": "selectChangeHandler",
      "title": "Add an handler to an input or select that is called when the input value changes",
      "topics": [
        "selectChangeHandler"
      ]
    },
    {
      "page": "setApp",
      "title": "set the current app",
      "topics": [
        "setApp"
      ]
    },
    {
      "page": "setAppUI",
      "title": "set the main ui object for the app",
      "topics": [
        "setAppUI"
      ]
    },
    {
      "page": "setDataTable",
      "title": "Update an dataTableOutput object.",
      "topics": [
        "setDataTable"
      ]
    },
    {
      "page": "setDownloadHandler",
      "title": "Shiny events version of downloadHandler",
      "topics": [
        "setDownloadHandler"
      ]
    },
    {
      "page": "setHtmlAttribute",
      "title": "Set attributes of HTML elements",
      "topics": [
        "setHtmlAttribute"
      ]
    },
    {
      "page": "setHtmlCSS",
      "title": "Set css style of HTML elements",
      "topics": [
        "setHtmlCSS"
      ]
    },
    {
      "page": "setHtmlHide",
      "title": "Hide HTML elements",
      "topics": [
        "setHtmlHide"
      ]
    },
    {
      "page": "setHtmlShow",
      "title": "Show HTML elements",
      "topics": [
        "setHtmlShow"
      ]
    },
    {
      "page": "setImage",
      "title": "Update an output object. Can be used instead of renderImage",
      "topics": [
        "setImage"
      ]
    },
    {
      "page": "setPlot",
      "title": "update an plotOutput object. Can be used instead of renderPlot.",
      "topics": [
        "setPlot"
      ]
    },
    {
      "page": "setPrint",
      "title": "Update an textOutput object. Can be used instead of renderPrint",
      "topics": [
        "setPrint"
      ]
    },
    {
      "page": "setRHandsontable",
      "title": "Update an RHandsontable object. Can be used instead of renderRHandsontable",
      "topics": [
        "setRHandsontable"
      ]
    },
    {
      "page": "setTable",
      "title": "Update an tableOutput object. Can be used instead of renderTable",
      "topics": [
        "setTable"
      ]
    },
    {
      "page": "setText",
      "title": "Update an textOutput object. Can be used instead of renderText",
      "topics": [
        "setText"
      ]
    },
    {
      "page": "setUI",
      "title": "Update an uiOutput object. Can be used instead of renderUI",
      "topics": [
        "setUI"
      ]
    },
    {
      "page": "singletonBottomScript",
      "title": "If app is not running, mark script to be added at the bottom and return NULL If app is already running return script directly",
      "topics": [
        "singletonBottomScript"
      ]
    },
    {
      "page": "svgClickHandler",
      "title": "Handler for an image click",
      "topics": [
        "svgClickHandler"
      ]
    },
    {
      "page": "timerHandler",
      "title": "Add an handler that triggers every intervalMs milliseconds",
      "topics": [
        "timerHandler"
      ]
    },
    {
      "page": "updateDataTable",
      "title": "Update an dataTableOutput object. Can be used instead of renderDataTable",
      "topics": [
        "updateDataTable"
      ]
    },
    {
      "page": "updateDownloadHandler",
      "title": "Shiny events version of downloadHandler",
      "topics": [
        "updateDownloadHandler"
      ]
    },
    {
      "page": "updateImage",
      "title": "Update an output object. Can be used instead of renderImage",
      "topics": [
        "updateImage"
      ]
    },
    {
      "page": "updatePlot",
      "title": "update an plotOutput object. Can be used instead of renderPlot.",
      "topics": [
        "updatePlot"
      ]
    },
    {
      "page": "updatePrint",
      "title": "Update an textOutput object. Can be used instead of renderPrint",
      "topics": [
        "updatePrint"
      ]
    },
    {
      "page": "updateRHandsontable",
      "title": "Update an RHandsontable object. Can be used instead of renderRHandsontable",
      "topics": [
        "updateRHandsontable"
      ]
    },
    {
      "page": "updateTable",
      "title": "Update an tableOutput object. Can be used instead of renderTable",
      "topics": [
        "updateTable"
      ]
    },
    {
      "page": "updateText",
      "title": "Update an textOutput object. Can be used instead of renderText",
      "topics": [
        "updateText"
      ]
    },
    {
      "page": "updateUI",
      "title": "Update an uiOutput object. Can be used instead of renderUI",
      "topics": [
        "updateUI"
      ]
    },
    {
      "page": "viewApp",
      "title": "view shiny events app in RStudio viewer",
      "topics": [
        "viewApp"
      ]
    },
    {
      "page": "wasAceHotkeyPressed",
      "title": "Checks whether a button has been pressed again (internal function)",
      "topics": [
        "wasAceHotkeyPressed"
      ]
    }
  ],
  "_readme": "https://github.com/skranz/shinyEvents/raw/master/README.md",
  "_rundeps": [
    "base64enc",
    "bslib",
    "cachem",
    "cli",
    "commonmark",
    "digest",
    "fastmap",
    "fontawesome",
    "fs",
    "glue",
    "htmltools",
    "httpuv",
    "jquerylib",
    "jsonlite",
    "later",
    "lifecycle",
    "magrittr",
    "memoise",
    "mime",
    "otel",
    "promises",
    "R6",
    "rappdirs",
    "Rcpp",
    "restorepoint",
    "rlang",
    "sass",
    "shiny",
    "sourcetools",
    "withr",
    "xtable"
  ],
  "_score": 4.992465147808043,
  "_indexed": true,
  "_nocasepkg": "shinyevents",
  "_universes": [
    "skranz"
  ],
  "_binaries": [
    {
      "r": "4.7.0",
      "os": "linux",
      "version": "2.3",
      "date": "2026-05-08T06:57:01.000Z",
      "distro": "noble",
      "commit": "092ea663d7d23b731e26eeb3b865afbde6c513f0",
      "fileid": "f89554070afe677976ece227c6bed5b7a1640fe64a5febe7892f013f762bb963",
      "status": "success",
      "check": "WARNING",
      "buildurl": "https://github.com/r-universe/skranz/actions/runs/25541590353"
    },
    {
      "r": "4.6.0",
      "os": "linux",
      "version": "2.3",
      "date": "2026-05-08T06:56:20.000Z",
      "distro": "noble",
      "commit": "092ea663d7d23b731e26eeb3b865afbde6c513f0",
      "fileid": "6229828ba0ffa21f405203fcd78ee0c5b527aa477d14d928fe80f73350104468",
      "status": "success",
      "check": "WARNING",
      "buildurl": "https://github.com/r-universe/skranz/actions/runs/25541590353"
    },
    {
      "r": "4.5.3",
      "os": "mac",
      "version": "2.3",
      "date": "2026-05-08T06:56:06.000Z",
      "commit": "092ea663d7d23b731e26eeb3b865afbde6c513f0",
      "fileid": "663fad0dda40eba2161aee13fcc449c07cdc54410ff063dd31ffa0e175158be4",
      "status": "success",
      "check": "WARNING",
      "buildurl": "https://github.com/r-universe/skranz/actions/runs/25541590353"
    },
    {
      "r": "4.6.0",
      "os": "mac",
      "version": "2.3",
      "date": "2026-05-08T06:56:19.000Z",
      "commit": "092ea663d7d23b731e26eeb3b865afbde6c513f0",
      "fileid": "57565dc5c7785bff50ca85f376875a67d33c92c5624d3fcf53eabf0c3b389615",
      "status": "success",
      "check": "WARNING",
      "buildurl": "https://github.com/r-universe/skranz/actions/runs/25541590353"
    },
    {
      "r": "4.7.0",
      "os": "win",
      "version": "2.3",
      "date": "2026-05-08T06:55:52.000Z",
      "commit": "092ea663d7d23b731e26eeb3b865afbde6c513f0",
      "fileid": "251579551879fb4a49042b4bd307e9b8e8ca72648eba2e7dfe0e954a5d22c9d6",
      "status": "success",
      "check": "WARNING",
      "buildurl": "https://github.com/r-universe/skranz/actions/runs/25541590353"
    },
    {
      "r": "4.5.3",
      "os": "win",
      "version": "2.3",
      "date": "2026-05-08T06:55:42.000Z",
      "commit": "092ea663d7d23b731e26eeb3b865afbde6c513f0",
      "fileid": "c5bbdd5b0268582eb60271b89c6ea179cea1fbe6fa4095a47904ed40016bc62d",
      "status": "success",
      "check": "WARNING",
      "buildurl": "https://github.com/r-universe/skranz/actions/runs/25541590353"
    },
    {
      "r": "4.6.0",
      "os": "win",
      "version": "2.3",
      "date": "2026-05-08T06:55:46.000Z",
      "commit": "092ea663d7d23b731e26eeb3b865afbde6c513f0",
      "fileid": "0992abbc1186c52e15985cc597d262307d3ac7d9cdc91f25553712921d162351",
      "status": "success",
      "check": "WARNING",
      "buildurl": "https://github.com/r-universe/skranz/actions/runs/25541590353"
    },
    {
      "r": "4.6.0",
      "os": "wasm",
      "version": "2.3",
      "date": "2026-05-22T14:12:41.000Z",
      "commit": "092ea663d7d23b731e26eeb3b865afbde6c513f0",
      "fileid": "e4528c299e3640153c13bde9b202c56dd67b44c6ac614dd14575fcbf469ac9a3",
      "status": "success",
      "buildurl": "https://github.com/r-universe/skranz/actions/runs/25541590353"
    }
  ]
}