diff --git a/.Rbuildignore b/.Rbuildignore index bc905639..c96266c5 100644 --- a/.Rbuildignore +++ b/.Rbuildignore @@ -2,6 +2,22 @@ ^\.Rproj\.user$ Makefile +CHANGELOG.md announcement\.Rmd todo\.txt +gulpfile.js +package-lock.json +package.json + + .github +.eslintrc +.prettierrc +.circleci +.pytest_cache +build/.dockerignore +tests/integration +tests/circleci +gulp-assets +node_modules +scripts diff --git a/.circleci/config.yml b/.circleci/config.yml index 677d90bf..fdecb487 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -1,12 +1,13 @@ version: 2 jobs: - - "test": &test-template working_directory: ~/dashr docker: - image: plotly/dashr:ci + auth: + username: dashautomation + password: $DASH_PAT_DOCKERHUB environment: PERCY_PARALLEL_TOTAL: '-1' PUPPETEER_SKIP_CHROMIUM_DOWNLOAD: 'True' @@ -24,25 +25,24 @@ jobs: echo "RUNNING JOB: ${CIRCLE_JOB}" echo "JOB PARALLELISM: ${CIRCLE_NODE_TOTAL}" echo "CIRCLE_REPOSITORY_URL: ${CIRCLE_REPOSITORY_URL}" - export PERCY_ENABLE=0 echo $CIRCLE_JOB > circlejob.txt git rev-parse HEAD | tr -d '\n' > commit.txt - run: name: 🚧 install R dependencies command: | - sudo Rscript -e 'commit_hash <- readChar("commit.txt", file.info("commit.txt")$size); message("Preparing to install plotly/dashR ", commit_hash, " ..."); install.packages("remotes"); remotes::install_github("plotly/dashR", upgrade=TRUE, ref=commit_hash, force=TRUE)' + sudo Rscript -e 'commit_hash <- readChar("commit.txt", file.info("commit.txt")$size); message("Preparing to install plotly/dashR ", commit_hash, " ..."); install.packages("remotes"); remotes::install_github("plotly/dashR", upgrade=TRUE, ref=commit_hash, dependencies=TRUE, force=TRUE)' - run: name: ⚙️ Integration tests command: | python -m venv venv . venv/bin/activate + pip install --upgrade pip git clone --depth 1 https://github.com/plotly/dash.git dash-main cd dash-main && pip install -e .[dev,testing] --progress-bar off && cd .. cd dash-main/\@plotly/dash-generator-test-component-nested && npm ci && npm run build && sudo R CMD INSTALL . && cd ../../.. cd dash-main/\@plotly/dash-generator-test-component-standard && npm ci && npm run build && sudo R CMD INSTALL . && cd ../../.. - export PATH=$PATH:/home/circleci/.local/bin/ pytest --nopercyfinalize --junitxml=test-reports/dashr.xml tests/integration/ - store_artifacts: path: test-reports diff --git a/.eslintrc b/.eslintrc new file mode 100644 index 00000000..b790e292 --- /dev/null +++ b/.eslintrc @@ -0,0 +1,126 @@ +{ + "extends": ["eslint:recommended", "prettier"], + "parser": "babel-eslint", + "parserOptions": { + "ecmaVersion": 6, + "sourceType": "module", + "ecmaFeatures": { + "arrowFunctions": true, + "blockBindings": true, + "classes": true, + "defaultParams": true, + "destructuring": true, + "forOf": true, + "generators": true, + "modules": true, + "templateStrings": true, + "jsx": true + } + }, + "env": { + "browser": true, + "es6": true, + "jasmine": true, + "jest": true, + "node": true + }, + "globals": { + "jest": true + }, + "plugins": [ + "react", + "import" + ], + "rules": { + "accessor-pairs": ["error"], + "block-scoped-var": ["error"], + "consistent-return": ["error"], + "curly": ["error", "all"], + "default-case": ["error"], + "dot-location": ["off"], + "dot-notation": ["error"], + "eqeqeq": ["error"], + "guard-for-in": ["off"], + "import/export": "error", + "import/named": ["off"], + "import/namespace": ["off"], + "import/no-duplicates": ["error"], + "import/no-named-as-default": ["error"], + "import/no-unresolved": ["off"], + "new-cap": ["error", { + "capIsNewExceptionPattern": "Immutable\\.*" + }], + "no-alert": ["off"], + "no-caller": ["error"], + "no-case-declarations": ["error"], + "no-console": ["error"], + "no-div-regex": ["error"], + "no-dupe-keys": ["error"], + "no-else-return": ["error"], + "no-empty-pattern": ["error"], + "no-eq-null": ["error"], + "no-eval": ["error"], + "no-extend-native": ["error"], + "no-extra-bind": ["error"], + "no-extra-boolean-cast": ["error"], + "no-inline-comments": ["off"], + "no-implicit-coercion": ["error"], + "no-implied-eval": ["error"], + "no-inner-declarations": ["off"], + "no-invalid-this": ["error"], + "no-iterator": ["error"], + "no-labels": ["error"], + "no-lone-blocks": ["error"], + "no-loop-func": ["error"], + "no-multi-str": ["error"], + "no-native-reassign": ["error"], + "no-new": ["error"], + "no-new-func": ["error"], + "no-new-wrappers": ["error"], + "no-param-reassign": ["off"], + "no-process-env": ["warn"], + "no-proto": ["error"], + "no-redeclare": ["error"], + "no-return-assign": ["error"], + "no-script-url": ["error"], + "no-self-compare": ["error"], + "no-sequences": ["error"], + "no-shadow": ["off"], + "no-throw-literal": ["error"], + "no-unused-expressions": ["error"], + "no-use-before-define": ["error", "nofunc"], + "no-useless-call": ["error"], + "no-useless-concat": ["error"], + "no-with": ["error"], + "prefer-const": ["error"], + "radix": ["error"], + "react/jsx-no-duplicate-props": ["error"], + "react/jsx-no-undef": ["error"], + "react/jsx-uses-react": ["error"], + "react/jsx-uses-vars": ["error"], + "react/no-did-update-set-state": ["error"], + "react/no-direct-mutation-state": ["error"], + "react/no-is-mounted": ["error"], + "react/no-unknown-property": ["error"], + "react/prefer-es6-class": ["error", "always"], + "react/prop-types": "error", + "valid-jsdoc": ["off"], + "yoda": ["error"], + "spaced-comment": ["error", "always", { + "block": { + "exceptions": ["*"] + } + }], + "no-unused-vars": ["error", { + "args": "after-used", + "argsIgnorePattern": "^_", + "caughtErrorsIgnorePattern": "^e$" + }], + "no-magic-numbers": ["error", { + "ignoreArrayIndexes": true, + "ignore": [-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 100, 10, 16, 0.5, 25] + }], + "no-underscore-dangle": ["off"], + "no-useless-escape": ["off"] + } +} diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index 2993a2c4..cb0b7be0 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -1,3 +1,3 @@ # These owners will be the default owners for everything in # the repo. Unless a later match takes precedence -@alexcjohnson @Marc-Andre-Rivet @rpkyle \ No newline at end of file +* @HammadTheOne diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml index c834fa22..0712cd67 100644 --- a/.github/FUNDING.yml +++ b/.github/FUNDING.yml @@ -1 +1,2 @@ +github: plotly custom: https://plotly.com/products/consulting-and-oem/ diff --git a/.gitignore b/.gitignore index e6c7bbd5..2e2e58fc 100644 --- a/.gitignore +++ b/.gitignore @@ -3,7 +3,14 @@ .RData .DS_Store +gulp-assets/dash-core-components/ +gulp-assets/dash-html-components/ +gulp-assets/dash-bootstrap-components/ +gulp-assets/dash-table/ +gulp-assets/dash/ node_modules/ python/ +__pycache__/ todo.txt r-finance* +build/ diff --git a/.prettierrc b/.prettierrc new file mode 100644 index 00000000..eb81a49a --- /dev/null +++ b/.prettierrc @@ -0,0 +1,6 @@ +{ + "tabWidth": 4, + "singleQuote": true, + "bracketSpacing": false, + "trailingComma": "es5" +} diff --git a/CHANGELOG.md b/CHANGELOG.md index 31345491..f4102f2f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,102 @@ # Change Log for Dash for R -All notable changes to this project will be documented in this file. +All notable changes to `dash` will be documented in this file. +This project adheres to [Semantic Versioning](http://semver.org/). + +## [0.9.3] - 2021-11-17 + +- Minor release to update and match the semantic versioning spec with the CRAN release of DashR. + +## [0.9.2] - 2021-10-31 + +### Changed +- Removed source-mapping from the `master` branch on Github and CRAN release of Dash R. Source-mapping is still available in the `dev` branch for contributors. [#282](https://github.com/plotly/dashR/pull/282) + +## [0.9.1] - 2021-10-13 +### Added +- Dash layout wrapper functions are included, which simplify the layout syntax for writing Dash apps. This includes the ability to pipe in the `app` object to layout and meta functions, as well as tags which simplify `html` component arguments and children. [#265](https://github.com/plotly/dashR/pull/265) + +- Added simplified and flexible callbacks with the `add_callback` helper function. Included in this change are multiple additional helper functions to simplify Dash app configuration and tag usage. [#270](https://github.com/plotly/dashR/pull/270) + +### Changed +- Unified the core Dash packages (dash, dashCoreComponents, dashHtmlComponents, dashTable) for streamlined maintenance and accessibility. The namespaces of these packages will be combined under the `dash` namespace, and all artifacts from the ancillary dash packages will be included with Dash for R. [#243](https://github.com/plotly/dashr/pull/243) +- Removed source-mapping from the `master` branch on Github and CRAN release of Dash R. Source-mapping is still available in the `dev` branch for contributors. [#282](https://github.com/plotly/dashR/pull/282) + +### Fixed +- Minor fix for favicon issue continued from [#240](https://github.com/plotly/dashr/pull/240) (for more details, see [#243](https://github.com/plotly/dashR/pull/243#issuecomment-842813526)). +- Minor fix to enable `suppress_callback_exceptions` configuration option when creating a Dash app. [#268](https://github.com/plotly/dashr/pull/268) + +- A regression which prevented favicons from displaying properly has been resolved, and a default Dash favicon is now supplied when none is provided in the `assets` directory. [#240](https://github.com/plotly/dashr/pull/240) + +## [0.9.0] - 2020-10-31 +### Fixed +- Fixes a minor bug in `setCallbackContext` (described in [#236](https://github.com/plotly/dashR/issues/236)) which prevented pattern-matching callbacks from working properly if one or more `input` statements did not include a selector. [#237](https://github.com/plotly/dashR/pull/237) + +### Changed + +- Dash for R now depends on v1.1.1 of `dashHtmlComponents` +- Dash for R now depends on v1.13.0 of `dashCoreComponents` +- Dash for R now depends on v4.11.0 of `dashTable` +- `dash-renderer` version is now v1.8.3 + +## [0.8.0] - 2020-10-27 +### Fixed +- Usage of `glue` has been corrected to address [#232](https://github.com/plotly/dashR/issues/232) via [#233](https://github.com/plotly/dashR/pull/233). + +### Added +- Pattern-matching IDs and callbacks. Component IDs can be lists, and callbacks can reference patterns of components, using three different wildcards: `ALL`, `MATCH`, and `ALLSMALLER`. This lets you create components on demand, and have callbacks respond to any and all of them. To help with this, `app$callback_context` gets three new entries: `outputs_list`, `inputs_list`, and `states_list`, which contain all the ids, properties, and except for the outputs, the property values from all matched components. [#228](https://github.com/plotly/dashR/pull/228) +- New and improved callback graph in the debug menu. Now based on Cytoscape for much more interactivity, plus callback profiling including number of calls, fine-grained time information, bytes sent and received, and more. You can even add custom timing information on the server with `callback_context.record_timing(name, duration, description)` [#224](https://github.com/plotly/dashR/pull/224) +- Support for setting attributes on `external_scripts` and `external_stylesheets`, and validation for the parameters passed (attributes are verified, and elements that are lists themselves must be named). [#226](https://github.com/plotly/dashR/pull/226) +- Dash for R now supports user-defined routes and redirects via the `app$server_route` and `app$redirect` methods. [#225](https://github.com/plotly/dashR/pull/225) + +### Changed +- `dash-renderer` updated to v1.8.2 + +## [0.7.1] - 2020-07-30 +### Fixed +- Fixes a minor bug in debug mode that prevented display of user-defined error messages when induced by invoking the `stop` function. [#220](https://github.com/plotly/dashR/pull/220). +- URLs for unpkg.com for dash-renderer were outdated, and now fetch v1.6.0 also; `dash-renderer` v1.5.1 has been removed from `inst/lib`. + +## [0.7.0] - 2020-07-28 +### Added +- Dash for R now supports an `update_title` parameter, as in Dash for Python. [#218](https://github.com/plotly/dashR/pull/218) + +### Changed +- `dash-renderer` updated to v1.6.0 +- Dash for R now depends on v4.9.0 of `dashTable` (provides several fixes from [#806](https://github.com/plotly/dash-table/pull/806), [#808](https://github.com/plotly/dash-table/pull/808) and [#809](https://github.com/plotly/dash-table/pull/809)) and v1.10.2 of `dashCoreComponents` (which updates Plotly.js to 1.54.7 via [#835](https://github.com/plotly/dash-core-components/pull/835)). + +### Removed +- Dash for R no longer produces a warning when callbacks with no IDs are declared; see [#216](https://github.com/plotly/dashR/pull/216). + +## [0.6.3] - 2020-06-25 +### Changed +- `dash-renderer` updated to v1.5.1 + +### Fixed +- Resolves a regression that prevented multiple loading states from displaying concurrently when a callback updates multiple outputs (for more details, see [#1310](https://github.com/plotly/dash/pull/1310)). + +## [0.6.2] - 2020-06-19 +### Fixed +- Dash for R now depends on v4.8.1 of `dashTable`, which fixes a bug where headers are unaligned with columns following an update (for more details, see [#797](https://github.com/plotly/dash-table/issues/797)). + +## [0.6.1] - 2020-06-17 +### Fixed +- Dash for R now depends on v1.10.1 of `dashCoreComponents`, which provides v1.54 of Plotly.js (for more details, see [CHANGELOG.md](https://github.com/plotly/plotly.js/blob/master/CHANGELOG.md)). + +## [0.6.0] - 2020-06-17 +### Changed +- Dash for R now depends on v4.8.0 of `dashTable`, which incorporates changes and bug fixes summarized in , , and . + +## [0.5.0] - 2020-05-28 +### Added +- Dash for R now depends on the `brotli` package explicitly; previously it was loaded when importing `reqres`. [#204](https://github.com/plotly/dashR/pull/204) + +### Changed +- Dash for R no longer wraps the layout in an `htmlDiv` internally, for parity with Dash for Python. Starting in v0.5.0, the `layout` method only accepts a single argument, and that argument must be a Dash component or a function that returns a Dash component. [#121](https://github.com/plotly/dashR/pull/121) +- Package documentation has been significantly refactored to use new features of `roxygen2` when documenting R6 classes +- The `title` method now specifies `Dash` as the default application title instead of `dash`. [#200](https://github.com/plotly/dashR/pull/200) + +### Fixed +- A minor bug in `validate_keys` which prevented `interpolate_index` from working as intended has been resolved ## [0.4.1] - 2020-05-08 ### Fixed @@ -63,7 +160,6 @@ All notable changes to this project will be documented in this file. - Fixes for hot reloading interval handling and refreshing apps within viewer pane [#148](https://github.com/plotly/dashR/pull/148) - `get_asset_url` checks `getAppPath()` as well as `DASH_APP_ROOT_PATH` environment variable when invoked [#161](https://github.com/plotly/dashR/pull/161) - ## [0.1.0] - 2019-07-10 ### Added - Initial release @@ -86,17 +182,14 @@ All notable changes to this project will be documented in this file. ### Fixed - CSS dependencies are now properly loaded [#94](https://github.com/plotly/dashR/pull/94) - ## [0.0.7] - 2019-04-09 ### Removed - `dependencies_set`, `dependencies_get`, and `dependencies_get_internal` methods removed from package - ### [0.0.6] - 2019-04-08 ### Added - Local asset serving implemented [#64](https://github.com/plotly/dashR/pull/64) - ### [0.0.5] - 2019-04-01 ### Added - Support for direct import of `plot_ly` and `ggplotly` figures [#71](https://github.com/plotly/dashR/pull/71) @@ -104,7 +197,6 @@ All notable changes to this project will be documented in this file. ### Changed - `layout_set` method renamed to `layout` for parity with Dash for Python - ### [0.0.4] - 2019-03-14 ### Added - Support for externally hosted CSS via `external_stylesheets` @@ -120,7 +212,6 @@ All notable changes to this project will be documented in this file. - Bug preventing remotely hosted JS resolved - Local serving of dependencies fixed when `href` attributes also present - ### [0.0.3] - 2019-03-08 ### Added - `assert_valid_callbacks` to validate callback handler definitions and ordering of `input` and `state` using @@ -131,6 +222,5 @@ All notable changes to this project will be documented in this file. - Handler function for callbacks now passed via `func` argument to `app$callback()` - `dash_renderer` updated to v0.18.0 - ### [0.0.0.9000] - 2018-07-25 - Initial development version diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md new file mode 100644 index 00000000..bc837152 --- /dev/null +++ b/CODE_OF_CONDUCT.md @@ -0,0 +1,43 @@ +# Contributor Covenant Code of Conduct + +## Our Pledge + +In the interest of fostering an open and welcoming environment, we as contributors and maintainers pledge to making participation in our project and our community a harassment-free experience for everyone, regardless of age, body size, disability, ethnicity, gender identity and expression, level of experience, nationality, personal appearance, race, religion, or sexual identity and orientation. + +## Our Standards + +Examples of behavior that contributes to creating a positive environment include: + +* Using welcoming and inclusive language +* Being respectful of differing viewpoints and experiences +* Gracefully accepting constructive criticism +* Focusing on what is best for the community +* Showing empathy towards other community members + +Examples of unacceptable behavior by participants include: + +* The use of sexualized language or imagery and unwelcome sexual attention or advances +* Trolling, insulting/derogatory comments, and personal or political attacks +* Public or private harassment +* Publishing others' private information, such as a physical or electronic address, without explicit permission +* Other conduct which could reasonably be considered inappropriate in a professional setting + +## Our Responsibilities + +Project maintainers are responsible for clarifying the standards of acceptable behavior and are expected to take appropriate and fair corrective action in response to any instances of unacceptable behavior. + +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, or to ban temporarily or permanently any contributor for other behaviors that they deem inappropriate, threatening, offensive, or harmful. + +## Scope + +This Code of Conduct applies both within project spaces and in public spaces when an individual is representing the project or its community. Examples of representing a project or community include using an official project e-mail address, posting via an official social media account, or acting as an appointed representative at an online or offline event. Representation of a project may be further defined and clarified by project maintainers. + +## Enforcement + +Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the project team at accounts@plot.ly. All complaints will be reviewed and investigated and will result in a response that is deemed necessary and appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident. Further details of specific enforcement policies may be posted separately. + +Project maintainers who do not follow or enforce the Code of Conduct in good faith may face temporary or permanent repercussions as determined by other members of the project's leadership. + +## Attribution + +This Code of Conduct is adapted from the [Contributor Covenant](http://contributor-covenant.org), version 1.4, available at [http://contributor-covenant.org/version/1/4](http://contributor-covenant.org/version/1/4/), and may also be found online at . diff --git a/DESCRIPTION b/DESCRIPTION index 27448c9e..1bd8e770 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -1,14 +1,11 @@ Package: dash Title: An Interface to the Dash Ecosystem for Authoring Reactive Web Applications -Version: 0.4.1 -Authors@R: c(person("Chris", "Parmer", role = c("aut"), email = "chris@plotly.com"), person("Ryan Patrick", "Kyle", role = c("aut", "cre"), comment = c(ORCID = "0000-0001-5829-9867"), email = "ryan@plotly.com"), person("Carson", "Sievert", role = c("aut"), comment = c(ORCID = "0000-0002-4958-2844")), person("Hammad", "Khan", role = c("aut"), email = "hammadkhan@plotly.com"), person(family = "Plotly Technologies", role = "cph")) +Version: 0.9.3 +Authors@R: c(person("Chris", "Parmer", role = c("aut"), email = "chris@plotly.com"), person("Ryan Patrick", "Kyle", role = c("aut"), comment = c(ORCID = "0000-0001-5829-9867"), email = "ryan@plotly.com"), person("Carson", "Sievert", role = c("aut"), comment = c(ORCID = "0000-0002-4958-2844")), person("Hammad", "Khan", role = c("aut", "cre"), comment = c(ORCID = "0000-0003-2479-9841"), email = "hammadkhan@plotly.com"), person(family = "Plotly Technologies", role = "cph")) Description: A framework for building analytical web applications, Dash offers a pleasant and productive development experience. No JavaScript required. Depends: R (>= 3.0.2) Imports: - dashHtmlComponents (== 1.0.3), - dashCoreComponents (== 1.10.0), - dashTable (== 4.7.0), R6, fiery (> 1.0.0), routr (> 0.2.0), @@ -20,25 +17,21 @@ Imports: digest, base64enc, mime, - crayon + crayon, + brotli, + glue, + magrittr, + methods, + rlang, + utils Suggests: - testthat -Collate: - 'utils.R' - 'dependencies.R' - 'dash-package.R' - 'dash.R' - 'imports.R' - 'print.R' - 'internal.R' -Remotes: plotly/dash-html-components@e63acfa, - plotly/dash-core-components@e322758, - plotly/dash-table@f5620fd + testthat (>= 3.0.0), + rstudioapi License: MIT + file LICENSE Encoding: UTF-8 LazyData: true KeepSource: true -RoxygenNote: 6.1.1 +RoxygenNote: 7.1.1 Roxygen: list(markdown = TRUE) URL: https://github.com/plotly/dashR BugReports: https://github.com/plotly/dashR/issues diff --git a/LICENSE b/LICENSE index f8dd2456..2c4d2c31 100644 --- a/LICENSE +++ b/LICENSE @@ -1,6 +1,6 @@ MIT License -Copyright (c) 2019 Plotly +Copyright (c) 2015-2024 Plotly Technologies Inc. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal @@ -9,13 +9,13 @@ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/NAMESPACE b/NAMESPACE index e5c7d9ec..8ef0db4e 100644 --- a/NAMESPACE +++ b/NAMESPACE @@ -1,26 +1,151 @@ # Generated by roxygen2: do not edit by hand +S3method(print,Dash) S3method(print,dash_component) +export("%>%") +export(ALL) +export(ALLSMALLER) export(Dash) +export(MATCH) +export(a) +export(add_callback) +export(add_meta) +export(add_script) +export(add_stylesheet) +export(br) +export(button) +export(callback_context) export(clientsideFunction) +export(dashDataTable) export(dashNoUpdate) +export(dash_app) +export(dash_tag) +export(dbcAccordion) +export(dbcAccordionItem) +export(dbcAlert) +export(dbcBadge) +export(dbcBreadcrumb) +export(dbcButton) +export(dbcButtonGroup) +export(dbcCard) +export(dbcCardBody) +export(dbcCardFooter) +export(dbcCardGroup) +export(dbcCardHeader) +export(dbcCardImg) +export(dbcCardImgOverlay) +export(dbcCardLink) +export(dbcCarousel) +export(dbcCheckbox) +export(dbcChecklist) +export(dbcCol) +export(dbcCollapse) +export(dbcContainer) +export(dbcDropdownMenu) +export(dbcDropdownMenuItem) +export(dbcFade) +export(dbcForm) +export(dbcFormFeedback) +export(dbcFormFloating) +export(dbcFormText) +export(dbcIcons) +export(dbcInput) +export(dbcInputGroup) +export(dbcInputGroupText) +export(dbcLabel) +export(dbcListGroup) +export(dbcListGroupItem) +export(dbcModal) +export(dbcModalBody) +export(dbcModalFooter) +export(dbcModalHeader) +export(dbcModalTitle) +export(dbcNav) +export(dbcNavItem) +export(dbcNavLink) +export(dbcNavbar) +export(dbcNavbarBrand) +export(dbcNavbarSimple) +export(dbcNavbarToggler) +export(dbcOffcanvas) +export(dbcPagination) +export(dbcPopover) +export(dbcPopoverBody) +export(dbcPopoverHeader) +export(dbcProgress) +export(dbcRadioButton) +export(dbcRadioItems) +export(dbcRow) +export(dbcSelect) +export(dbcSpinner) +export(dbcSwitch) +export(dbcTab) +export(dbcTable) +export(dbcTabs) +export(dbcTextarea) +export(dbcThemes) +export(dbcToast) +export(dbcTooltip) +export(dccChecklist) +export(dccClipboard) +export(dccConfirmDialog) +export(dccConfirmDialogProvider) +export(dccDatePickerRange) +export(dccDatePickerSingle) +export(dccDownload) +export(dccDropdown) +export(dccGraph) +export(dccInput) +export(dccInterval) +export(dccLink) +export(dccLoading) +export(dccLocation) +export(dccLogoutButton) +export(dccMarkdown) +export(dccRadioItems) +export(dccRangeSlider) +export(dccSlider) +export(dccStore) +export(dccTab) +export(dccTabs) +export(dccTextarea) +export(dccTooltip) +export(dccUpload) +export(df_to_list) +export(div) +export(h1) +export(h2) +export(h3) +export(h4) +export(html) +export(img) export(input) +export(install_snippet) export(output) +export(p) +export(prevent_update) +export(run_app) +export(set_layout) +export(simple_table) +export(span) export(state) -import(dashCoreComponents) -import(dashHtmlComponents) +export(strong) importFrom(R6,R6Class) importFrom(assertthat,assert_that) importFrom(base64enc,base64encode) +importFrom(brotli,brotli_compress) importFrom(digest,sha1) importFrom(fiery,Fire) importFrom(fiery,combined_log_format) importFrom(fiery,logger_console) +importFrom(glue,glue) +importFrom(glue,glue_collapse) importFrom(htmltools,attachDependencies) importFrom(htmltools,htmlDependencies) importFrom(htmltools,htmlDependency) importFrom(htmltools,renderDependencies) importFrom(jsonlite,toJSON) +importFrom(magrittr,"%>%") importFrom(reqres,default_parsers) importFrom(routr,Route) importFrom(routr,RouteStack) @@ -28,3 +153,4 @@ importFrom(routr,ressource_route) importFrom(stats,setNames) importFrom(tools,file_ext) importFrom(utils,getFromNamespace) +importFrom(utils,tail) diff --git a/R/all_tags.R b/R/all_tags.R new file mode 100644 index 00000000..9878fa05 --- /dev/null +++ b/R/all_tags.R @@ -0,0 +1,129 @@ +## Generated by `scripts/generate_tags.R`; do not edit by hand +all_tags <- c( + "a", + "abbr", + "acronym", + "address", + "area", + "article", + "aside", + "audio", + "b", + "base", + "basefont", + "bdi", + "bdo", + "big", + "blink", + "blockquote", + "br", + "button", + "canvas", + "caption", + "center", + "cite", + "code", + "col", + "colgroup", + "content", + "data", + "datalist", + "dd", + "del", + "details", + "dfn", + "dialog", + "div", + "dl", + "dt", + "em", + "embed", + "fieldset", + "figcaption", + "figure", + "font", + "footer", + "form", + "frame", + "frameset", + "h1", + "h2", + "h3", + "h4", + "h5", + "h6", + "header", + "hgroup", + "hr", + "i", + "iframe", + "img", + "ins", + "kbd", + "keygen", + "label", + "legend", + "li", + "link", + "main", + "map", + "mark", + "marquee", + "meta", + "meter", + "nav", + "nobr", + "noscript", + "object", + "ol", + "optgroup", + "option", + "output", + "p", + "param", + "picture", + "plaintext", + "pre", + "progress", + "q", + "rb", + "rp", + "rt", + "rtc", + "ruby", + "s", + "samp", + "script", + "section", + "select", + "shadow", + "slot", + "small", + "source", + "spacer", + "span", + "strike", + "strong", + "sub", + "summary", + "sup", + "table", + "tbody", + "td", + "template", + "textarea", + "tfoot", + "th", + "thead", + "time", + "title", + "tr", + "track", + "u", + "ul", + "var", + "video", + "wbr", + "xmp" +) +names(all_tags) <- all_tags diff --git a/R/callbacks-advanced.R b/R/callbacks-advanced.R new file mode 100644 index 00000000..e36b1bf2 --- /dev/null +++ b/R/callbacks-advanced.R @@ -0,0 +1,212 @@ +#' Add a callback to a Dash app +#' +#' @param app A dash application created with [`dash_app()`]. +#' @param outputs Unnamed list. The `output` argument provides the component `id` +#' and `property` which will be updated by the callback; a callback can +#' target one or more outputs (i.e. multiple outputs). +#' @param params Unnamed list; provides [input] and [state] statements, each +#' with its own defined `id` and `property`. For pattern-matching callbacks, +#' the `id` field of a component is written in JSON-like syntax and provides +#' fields that are arbitrary keys which describe the targets of the callback. +#' See \link{selectors} for more details. +#' @param callback Function; must return [output] provided [input] or [state] +#' arguments. `callback` may be any valid R function, or a character string +#' containing valid JavaScript, or a call to [clientsideFunction], +#' including `namespace` and `function_name` arguments for a locally served +#' JavaScript function. +#' @export +add_callback <- function(app, outputs, params, callback) { + if (inherits(params, "dash_dependency")) { + params <- list(params) + } + + params_flat <- flatten(params) + + # determine if the callback arguments match the first level of parameters + cb_args <- methods::formalArgs(callback) + if (length(cb_args) != length(params)) { + stop("add_callback: Number of params does not match the number of arguments in the callback function", call. = FALSE) + } + if (!is.null(names(params))) { + if (!setequal(cb_args, names(params))) { + stop("add_callback: Arguments in callback do not match the names of the params", + call. = FALSE) + } + } + + cb <- function(...) { + callback_params <- eval(substitute(alist(...))) + + # the callback moves states to the end after inputs, so we need to fix the positions + state_idx <- which(unlist(lapply(params_flat, function(x) inherits(x, "state")))) + num_states <- length(state_idx) + if (num_states > 0) { + num_inputs <- length(callback_params) - num_states + for (i in seq_len(num_states)) { + idx <- num_inputs + i + callback_params <- append(callback_params, list(callback_params[[idx]]), state_idx[i] - 1) + callback_params <- callback_params[-(idx + 1)] + } + } + + callback_params <- params_to_keys(callback_params, params) + do.call(callback, callback_params) + } + + app$callback( + output = outputs, + params = params_flat, + func = cb + ) + invisible(app) +} + +# test <- list( +# ab = list( +# input("a", "value"), +# state("b", "value") +# ), +# cdef = list( +# cde = list( +# input("c", "value"), +# state("d", "value"), +# input("e", "value") +# ), +# f = input("f", "value") +# ), +# g = input("g", "value") +# ) +# str(flatten(test)) +flatten <- function(x) { + if (!inherits(x, "list")) return(list(x)) + + key_names <- rlang::names2(x) + key_names_exist <- nzchar(key_names) + if (all(key_names_exist)) { + if (any(duplicated(key_names))) { + stop("Named params must have unique names", call. = FALSE) + } + x <- unname(x) + } else if (any(key_names_exist)) { + stop("Cannot mix named and unnamed params", call. = FALSE) + } + + unlist(lapply(x, flatten), recursive = FALSE) +} + +# test <- list( +# ab = list( +# input("a", "value"), +# state("b", "value") +# ), +# cdef = list( +# cde = list( +# input("c", "value"), +# state("d", "value"), +# input("e", "value") +# ), +# f = input("f", "value") +# ), +# g = input("g", "value") +# ) +# str(params_to_keys(as.list(LETTERS[1:7]), test)) +# str(params_to_keys(c(as.list(LETTERS[1:6]), list(NULL)), test)) +params_to_keys <- function(params, keys) { + params_to_key_helper <- function(keys) { + for (item_idx in seq_along(keys)) { + if (inherits(keys[[item_idx]], "dash_dependency")) { + if (is.null(params[[1]])) { + keys[item_idx] <- list(NULL) + } else { + keys[[item_idx]] <- params[[1]] + } + params <<- params[-1] + } else { + keys[[item_idx]] <- params_to_key_helper(keys[[item_idx]]) + } + } + keys + } + params_to_key_helper(keys) +} + +#' In addition to event properties like n_clicks that change whenever an event +#' happens there is a global variable dash$callback_context, available only +#' inside a callback. It has properties: +#' +#' `triggered`: list of changed properties. This will be empty on initial load, +#' unless an input prop got its value from another initial callback. After a user +#' action it is a length-1 list, unless two properties of a single component +#' update simultaneously, such as a value and a timestamp or event counter. +#' +#' `inputs` and `states`: allow you to access the callback params by id and prop +#' instead of through the function arguments. +#' +#' @examples +#' if (interactive()) { +#' dash_app() %>% +#' set_layout( +#' button('Button 1', id='btn1'), +#' button('Button 2', id='btn2'), +#' button('Button 3', id='btn3'), +#' div(id='container') +#' ) %>% +#' add_callback( +#' output("container", "children"), +#' list( +#' input("btn1", "n_clicks"), +#' input("btn2", "n_clicks"), +#' input("btn3", "n_clicks") +#' ), +#' function(btn1, btn2, btn3) { +#' ctx <- callback_context() +#' prevent_update(is.null(ctx)) +#' sprintf("Triggered: %s, btn1: %s, btn2: %s, btn3: %s", +#' ctx$triggered$prop_id, btn1, btn2, btn3) +#' } +#' ) %>% +#' run_app() +#' } +#' @export +callback_context <- function() { + get("app", envir = parent.frame(2))$callback_context() +} + +#' Prevent a callback from updating its output +#' +#' When used inside Dash callbacks, if any of the arguments evaluate to `TRUE`, +#' then the callback's outputs do not update. +#' +#' @param ... Values to check +#' @examples +#' if (interactive()) { +#' app <- dash_app() +#' +#' app %>% set_layout( +#' button('Click here', id = 'btn'), +#' p('The number of times the button was clicked does not +#' update when the number is divisible by 5'), +#' div(id = 'body-div') +#' ) +#' app %>% add_callback( +#' output(id='body-div', property='children'), +#' list( +#' input(id='btn', property='n_clicks') +#' ), +#' function(n_clicks) { +#' prevent_update(is.null(n_clicks[[1]]), n_clicks[[1]] %% 5 == 0) +#' paste(n_clicks[[1]], "clicks") +#' } +#' ) +#' +#' app %>% run_app() +#' } +#' @export +prevent_update <- function(...) { + checks <- unlist(list(...)) + if (any(checks)) { + rlang::eval_bare(rlang::expr(invisible(return(structure(list(NULL), class = "no_update")))) , env = parent.frame()) + } else { + return() + } +} diff --git a/R/dash.R b/R/dash.R index 3f293ee9..d9d0f21c 100644 --- a/R/dash.R +++ b/R/dash.R @@ -1,279 +1,74 @@ -#' Create and configure a Dash app object -#' -#' A framework for building analytical web applications, Dash offers a pleasant and productive development experience. No JavaScript required. -#' -#' @usage Dash -#' -#' @section Constructor: Dash$new( -#' name = NULL, -#' server = fiery::Fire$new(), -#' assets_folder = 'assets', -#' assets_url_path = '/assets', -#' eager_loading = FALSE, -#' assets_ignore = '', -#' serve_locally = TRUE, -#' meta_tags = NULL, -#' url_base_pathname = '/', -#' routes_pathname_prefix = NULL, -#' requests_pathname_prefix = NULL, -#' external_scripts = NULL, -#' external_stylesheets = NULL, -#' suppress_callback_exceptions = FALSE, -#' show_undo_redo = FALSE -#' ) -#' -#' @section Arguments: -#' \tabular{lll}{ -#' `name` \tab \tab Character. The name of the Dash application (placed in the title -#' of the HTML page). DEPRECATED; please use `index_string()` or `interpolate_index()` instead.\cr -#' `server` \tab \tab The web server used to power the application. -#' Must be a [fiery::Fire] object.\cr -#' `assets_folder` \tab \tab Character. A path, relative to the current working directory, -#' for extra files to be used in the browser. Default is "assets". All .js and -#' .css files will be loaded immediately unless excluded by `assets_ignore`, -#' and other files such as images will be served if requested. Default is `assets`. \cr -#' `assets_url_path` \tab \tab Character. Specify the URL path for asset serving. Default is `assets`. \cr -#' `eager_loading` \tab \tab Logical. Controls whether asynchronous resources are prefetched (if `TRUE`) or loaded on-demand (if `FALSE`). \cr -#' `assets_ignore` \tab \tab Character. A regular expression, to match assets to omit from -#' immediate loading. Ignored files will still be served if specifically requested. You -#' cannot use this to prevent access to sensitive files. \cr -#' `serve_locally` \tab \tab Logical. Whether to serve HTML dependencies locally or -#' remotely (via URL).\cr -#' `compress` \tab \tab Logical. Whether to try to compress files and data served by Fiery. -#' By default, `brotli` is attempted first, then `gzip`, then the `deflate` algorithm, before falling -#' back to `identity`.\cr -#' `meta_tags` \tab \tab List of lists. HTML ``tags to be added to the index page. -#' Each list element should have the attributes and values for one tag, eg: -#' `list(name = 'description', content = 'My App')`.\cr -#' `url_base_pathname` \tab \tab Character. A local URL prefix to use app-wide. Default is -#' `/`. Both `requests_pathname_prefix` and `routes_pathname_prefix` default to `url_base_pathname`. -#' Environment variable is `DASH_URL_BASE_PATHNAME`.\cr -#' `routes_pathname_prefix` \tab \tab Character. A prefix applied to the backend routes. -#' Environment variable is `DASH_ROUTES_PATHNAME_PREFIX`.\cr -#' `requests_pathname_prefix` \tab \tab Character. A prefix applied to request endpoints -#' made by Dash's front-end. Environment variable is `DASH_REQUESTS_PATHNAME_PREFIX`.\cr -#' `external_scripts` \tab \tab List. An optional list of valid URLs from which -#' to serve JavaScript source for rendered pages.\cr -#' `external_stylesheets` \tab \tab List. An optional list of valid URLs from which -#' to serve CSS for rendered pages.\cr -#' `suppress_callback_exceptions` \tab \tab Logical. Whether to relay warnings about -#' possible layout mis-specifications when registering a callback.\cr -#' `show_undo_redo` \tab \tab Logical. Set to `TRUE` to enable undo and redo buttons for -#' stepping through the history of the app state. -#' } -#' -#' @section Fields: -#' \describe{ -#' \item{`server`}{ -#' A cloned (and modified) version of the [fiery::Fire] object -#' provided to the `server` argument (various routes will be added which enable -#' Dash functionality). -#' } -#' \item{`config`}{ -#' A list of configuration options passed along to dash-renderer. -#' Users shouldn't need to alter any of these options unless they are -#' constructing their own authorization front-end or otherwise need to know -#' where the application is making API calls. -#' } -#' } -#' -#' @section Methods: -#' \describe{ -#' \item{`layout(...)`}{ -#' Set the layout (i.e., user interface). The layout should be either a -#' collection of Dash components (e.g., [dccSlider], [htmlDiv], etc) or -#' a function which returns a collection of components. -#' } -#' \item{`layout_get(render = TRUE)`}{ -#' Retrieves the layout. If render is `TRUE`, and the layout is a function, -#' the result of the function (rather than the function itself) is returned. -#' } -#' \item{`callback(output, params, func)`}{ -#' The `callback` method has three formal arguments: -#' \describe{ -#' \item{output}{a named list including a component `id` and `property`} -#' \item{params}{an unnamed list of [input] and [state] statements, each with defined `id` and `property`} -#' \item{func}{any valid R function which generates [output] provided [input] and/or [state] arguments, -#' a character string containing valid JavaScript, or a call to [clientsideFunction] including `namespace` -#' and `function_name` arguments for a locally served JavaScript function} -#' } -#' The `output` argument defines which layout component property should -#' receive the results (via the [output] object). The events that -#' trigger the callback are then described by the [input] (and/or [state]) -#' object(s) (which should reference layout components), which become -#' argument values for R callback handlers defined in `func`. Here `func` may -#' either be an anonymous R function, a JavaScript function provided as a -#' character string, or a call to `clientsideFunction()`, which describes a -#' locally served JavaScript function instead. The latter two methods define -#' a "clientside callback", which updates components without passing data to and -#' from the Dash backend. The latter may offer improved performance relative -#' to callbacks written purely in R. -#' } -#' \item{`title("dash")`}{ -#' The title of the app. If no title is supplied, Dash for R will use 'dash'. -#' } -#' \item{`title("dash")`}{ -#' The title of the app. If no title is supplied, Dash for R will use 'dash'. -#' } -#' \item{`callback_context()`}{ -#' The `callback_context` method permits retrieving the inputs which triggered -#' the firing of a given callback, and allows introspection of the input/state -#' values given their names. It is only available from within a callback; -#' attempting to use this method outside of a callback will result in a warning. -#' } -#' \item{`get_asset_url(asset_path, prefix)`}{ -#' The `get_asset_url` method permits retrieval of an asset's URL given its filename. -#' For example, `app$get_asset_url('style.css')` should return `/assets/style.css` when -#' `assets_folder = 'assets'`. By default, the prefix is the value of `requests_pathname_prefix`, -#' but this is configurable via the `prefix` parameter. Note: this method will -#' present a warning and return `NULL` if the Dash app was not loaded via `source()` -#' if the `DASH_APP_PATH` environment variable is undefined. -#' } -#' \item{`get_relative_path(path, requests_pathname_prefix)`}{ -#' The `get_relative_path` method simplifies the handling of URLs and pathnames for apps -#' running locally and on a deployment server such as Dash Enterprise. It handles the prefix -#' for requesting assets similar to the `get_asset_url` method, but can also be used for URL handling -#' in components such as `dccLink` or `dccLocation`. For example, `app$get_relative_url("/page/")` -#' would return `/app/page/` for an app running on a deployment server. The path must be prefixed with -#' a `/`. -#' \describe{ -#' \item{path}{Character. A path string prefixed with a leading `/` which directs at a path or asset directory.} -#' \item{requests_pathname_prefix}{Character. The pathname prefix for the app on a deployed application. Defaults to the environment variable set by the server, or `""` if run locally.} -#' } -#' } -#' \item{`strip_relative_path(path, requests_pathname_prefix)`}{ -#' The `strip_relative_path` method simplifies the handling of URLs and pathnames for apps -#' running locally and on a deployment server such as Dash Enterprise. It acts almost opposite the `get_relative_path` -#' method, by taking a `relative path` as an input, and returning the `path` stripped of the `requests_pathname_prefix`, -#' and any leading or trailing `/`. For example, a path string `/app/homepage/`, would be returned as -#' `homepage`. This is particularly useful for `dccLocation` URL routing. -#' \describe{ -#' \item{path}{Character. A path string prefixed with a leading `/` and `requests_pathname_prefix` which directs at a path or asset directory.} -#' \item{requests_pathname_prefix}{Character. The pathname prefix for the app on a deployed application. Defaults to the environment variable set by the server, or `""` if run locally.} -#' } -#' } -#' \item{`index_string(string)`}{ -#' The `index_string` method allows the specification of a custom index by changing -#' the default `HTML` template that is generated by the Dash UI. Meta tags, CSS, Javascript, -#' are some examples of features that can be modified. -#' This method will present a warning if your HTML template is missing any necessary elements -#' and return an error if a valid index is not defined. The following interpolation keys are -#' currently supported: -#' \describe{ -#' \item{`{%metas%}`}{Optional - The registered meta tags.} -#' \item{`{%favicon%}`}{Optional - A favicon link tag if found in assets.} -#' \item{`{%css%}`}{Optional - Link tags to css resources.} -#' \item{`{%config%}`}{Required - Config generated by dash for the renderer.} -#' \item{`{%app_entry%}`}{Required - The container where dash react components are rendered.} -#' \item{`{%scripts%}`}{Required - Collected dependencies scripts tags.} -#' } -#' \describe{ -#' \item{Example of a basic HTML index string:}{ -#' \preformatted{ -#' " -#' -#' -#' \{\%meta_tags\%\} -#' \{\{%css\%\}\} -#' \{\%favicon\%\} -#' \{\%css_tags\%\} -#' -#' -#' \{\%app_entry\%\} -#'
-#' \{\%config\%\} -#' \{\%scripts\%\} -#'
-#' -#' " -#' } -#' } -#' } -#' } -#' \item{`interpolate_index(template_index, ...)`}{ -#' With the `interpolate_index` method, we can pass a custom index with template string -#' variables that are already evaluated. We can directly pass arguments to the `template_index` -#' by assigning them to variables present in the template. This is similar to the `index_string` method -#' but offers the ability to change the default components of the Dash index as seen in the example below: -#' \preformatted{ -#' app$interpolate_index( -#' template_index, -#' metas = "", -#' renderer = renderer, -#' config = config) -#' } -#' \describe{ -#' \item{template_index}{Character. A formatted string with the HTML index string. Defaults to the initial template} -#' \item{...}{Named List. The unnamed arguments can be passed as individual named lists corresponding to the components -#' of the Dash html index. These include the same arguments as those found in the `index_string()` template.} -#' } -#' } -#' \item{`run_server(host = Sys.getenv('HOST', "127.0.0.1"), -#' port = Sys.getenv('PORT', 8050), block = TRUE, showcase = FALSE, ...)`}{ -#' The `run_server` method has 13 formal arguments, several of which are optional: -#' \describe{ -#' \item{host}{Character. A string specifying a valid IPv4 address for the Fiery server, or `0.0.0.0` to listen on all addresses. Default is `127.0.0.1` Environment variable: `HOST`.} -#' \item{port}{Integer. Specifies the port number on which the server should listen (default is `8050`). Environment variable: `PORT`.} -#' \item{block}{Logical. Start the server while blocking console input? Default is `TRUE`.} -#' \item{showcase}{Logical. Load the Dash application into the default web browser when server starts? Default is `FALSE`.} -#' \item{use_viewer}{Logical. Load the Dash application into RStudio's viewer pane? Requires that `host` is either `127.0.0.1` or `localhost`, and that Dash application is started within RStudio; if `use_viewer = TRUE` and these conditions are not satisfied, the user is warned and the app opens in the default browser instead. Default is `FALSE`.} -#' \item{debug}{Logical. Enable/disable all the dev tools unless overridden by the arguments or environment variables. Default is `FALSE` when called via `run_server`. Environment variable: `DASH_DEBUG`.} -#' \item{dev_tools_ui}{Logical. Show Dash's dev tools UI? Default is `TRUE` if `debug == TRUE`, `FALSE` otherwise. Environment variable: `DASH_UI`.} -#' \item{dev_tools_hot_reload}{Logical. Activate hot reloading when app, assets, and component files change? Default is `TRUE` if `debug == TRUE`, `FALSE` otherwise. Requires that the Dash application is loaded using `source()`, so that `srcref` attributes are available for executed code. Environment variable: `DASH_HOT_RELOAD`.} -#' \item{dev_tools_hot_reload_interval}{Numeric. Interval in seconds for the client to request the reload hash. Default is `3`. Environment variable: `DASH_HOT_RELOAD_INTERVAL`.} -#' \item{dev_tools_hot_reload_watch_interval}{Numeric. Interval in seconds for the server to check asset and component folders for changes. Default `0.5`. Environment variable: `DASH_HOT_RELOAD_WATCH_INTERVAL`.} -#' \item{dev_tools_hot_reload_max_retry}{Integer. Maximum number of failed reload hash requests before failing and displaying a pop up. Default `0.5`. Environment variable: `DASH_HOT_RELOAD_MAX_RETRY`.} -#' \item{dev_tools_props_check}{Logical. Validate the types and values of Dash component properties? Default is `TRUE` if `debug == TRUE`, `FALSE` otherwise. Environment variable: `DASH_PROPS_CHECK`.} -#' \item{dev_tools_prune_errors}{Logical. Reduce tracebacks to just user code, stripping out Fiery and Dash pieces? Only available with debugging. `TRUE` by default, set to `FALSE` to see the complete traceback. Environment variable: `DASH_PRUNE_ERRORS`.} -#' \item{dev_tools_silence_routes_logging}{Logical. Replace Fiery's default logger with `dashLogger` instead (will remove all routes logging)? Enabled with debugging by default because hot reload hash checks generate a lot of requests.} -#' } -#' Starts the Fiery server in local mode. If a parameter can be set by an environment variable, that is listed too. Values provided here take precedence over environment variables. -#' Launch the application. If provided, `host`/`port` set the `host`/`port` fields of the underlying [fiery::Fire] web server. The `block`/`showcase`/`...` arguments are passed along -#' to the `ignite()` method of the [fiery::Fire] server. -#' } -#' } -#' -#' @examples -#' \dontrun{ -#' library(dashCoreComponents) -#' library(dashHtmlComponents) -#' library(dash) - -#' app <- Dash$new() -#' app$layout( -#' dccInput(id = "inputID", value = "initial value", type = "text"), -#' htmlDiv(id = "outputID") -#' ) -#' -#' app$callback(output = list(id="outputID", property="children"), -#' params = list(input(id="inputID", property="value"), -#' state(id="inputID", property="type")), -#' function(x, y) -#' sprintf("You've entered: '%s' into a '%s' input control", x, y) -#' ) -#' -#' app$run_server(showcase = TRUE) -#' } +#' R6 class representing a Dash application #' #' @export #' @docType class #' @format An [R6::R6Class] generator object -#' - +#' @description +#' A framework for building analytical web applications, Dash offers a pleasant and productive development experience. No JavaScript required. Dash <- R6::R6Class( 'Dash', public = list( - # user-facing fields + #' @field server + #' A cloned (and modified) version of the [fiery::Fire] object + #' provided to the `server` argument (various routes will be added which enable + #' Dash functionality). server = NULL, + #' @field config + #' A list of configuration options passed along to dash-renderer. + #' Users shouldn't need to alter any of these options unless they are + #' constructing their own authorization front-end or otherwise need to know + #' where the application is making API calls. config = list(), - # i.e., the Dash$new() method - initialize = function(name = NULL, - server = fiery::Fire$new(), - assets_folder = 'assets', - assets_url_path = '/assets', + #' @description + #' Create and configure a Dash application. + #' @param server [fiery::Fire] object. The web server used to power the application. + #' @param assets_folder Character. A path, relative to the current working directory, + #' for extra files to be used in the browser. All .js and + #' .css files will be loaded immediately unless excluded by `assets_ignore`, + #' and other files such as images will be served if requested. Default is `assets`. + #' @param assets_url_path Character. Specify the URL path for asset serving. Default is `assets`. + #' @param eager_loading Logical. Controls whether asynchronous resources are prefetched (if `TRUE`) or loaded on-demand (if `FALSE`). + #' @param assets_ignore Character. A regular expression, to match assets to omit from + #' immediate loading. Ignored files will still be served if specifically requested. You + #' cannot use this to prevent access to sensitive files. + #' @param serve_locally Logical. Whether to serve HTML dependencies locally or + #' remotely (via URL). + #' @param meta_tags List of lists. HTML `` tags to be added to the index page. + #' Each list element should have the attributes and values for one tag, eg: + #' `list(name = 'description', content = 'My App')`. + #' @param url_base_pathname Character. A local URL prefix to use app-wide. Default is + #' `/`. Both `requests_pathname_prefix` and `routes_pathname_prefix` default to `url_base_pathname`. + #' Environment variable is `DASH_URL_BASE_PATHNAME`. + #' @param routes_pathname_prefix Character. A prefix applied to the backend routes. + #' Environment variable is `DASH_ROUTES_PATHNAME_PREFIX`. + #' @param requests_pathname_prefix Character. A prefix applied to request endpoints + #' made by Dash's front-end. Environment variable is `DASH_REQUESTS_PATHNAME_PREFIX`. + #' @param external_scripts List. An optional list of valid URLs from which + #' to serve JavaScript source for rendered pages. Each entry can be a string (the URL) + #' or a named list with `src` (the URL) and optionally other `", + #' jsonlite::toJSON(app$config, auto_unbox=TRUE)) + #' + #' app$interpolate_index( + #' sample_template, + #' metas = "", + #' app_entry = "
Loading...
", + #' config = config, + #' scripts = "") interpolate_index = function(template_index = private$template_index[[1]], ...) { - template = template_index + assertthat::assert_that(is.character(template_index)) + template <- template_index kwargs <- list(...) - + for (name in names(kwargs)) { key = paste0('\\{\\%', name, '\\%\\}') template = sub(key, kwargs[[name]], template) - } - - invisible(validate_keys(names(kwargs))) - + } + + invisible(validate_keys(names(kwargs), is_template=FALSE)) + private$template_index <- template }, - + # ------------------------------------------------------------------------ # specify a custom title # ------------------------------------------------------------------------ - title = function(string = "dash") { + #' @description + #' Set the title of the Dash app + #' @details + #' If no title is supplied, Dash for R will use 'Dash'. + #' @param string Character. A string representation of the name of the Dash application. + title = function(string = "Dash") { assertthat::assert_that(is.character(string)) private$name <- string }, - + # ------------------------------------------------------------------------ # convenient fiery wrappers # ------------------------------------------------------------------------ + #' @description + #' Start the Fiery HTTP server and run a Dash application. + #' @details + #' Starts the Fiery server in local mode and launches the Dash application. If a parameter can be set by an environment variable, that is listed too. Values provided here take precedence over environment variables. + #' . If provided, `host`/`port` set the `host`/`port` fields of the underlying [fiery::Fire] web server. The `block`/`showcase`/`...` arguments are passed along + #' to the `ignite()` method of the [fiery::Fire] server. + #' @param host Character. A string specifying a valid IPv4 address for the Fiery server, or `0.0.0.0` to listen on all addresses. Default is `127.0.0.1` Environment variable: `HOST`. + #' @param port Integer. Specifies the port number on which the server should listen (default is `8050`). Environment variable: `PORT`. + #' @param block Logical. Start the server while blocking console input? Default is `TRUE`. + #' @param showcase Logical. Load the Dash application into the default web browser when server starts? Default is `FALSE`. + #' @param use_viewer Logical. Load the Dash application into RStudio's viewer pane? Requires that `host` is either `127.0.0.1` or `localhost`, and that Dash application is started within RStudio; if `use_viewer = TRUE` and these conditions are not satisfied, the user is warned and the app opens in the default browser instead. Default is `FALSE`. + #' @param debug Logical. Enable/disable all the Dash developer tools (and the within-browser user interface for the callback graph visualizer and stack traces) unless overridden by the arguments or environment variables. Default is `FALSE` when called via `run_server`. For more information, please visit \url{https://dash.plotly.com/r/devtools}. Environment variable: `DASH_DEBUG`. + #' @param dev_tools_ui Logical. Show Dash's developer tools UI? Default is `TRUE` if `debug == TRUE`, `FALSE` otherwise. Environment variable: `DASH_UI`. + #' @param dev_tools_hot_reload Logical. Activate hot reloading when app, assets, and component files change? Default is `TRUE` if `debug == TRUE`, `FALSE` otherwise. Requires that the Dash application is loaded using `source()`, so that `srcref` attributes are available for executed code. Environment variable: `DASH_HOT_RELOAD`. + #' @param dev_tools_hot_reload_interval Numeric. Interval in seconds for the client to request the reload hash. Default is `3`. Environment variable: `DASH_HOT_RELOAD_INTERVAL`. + #' @param dev_tools_hot_reload_watch_interval Numeric. Interval in seconds for the server to check asset and component folders for changes. Default `0.5`. Environment variable: `DASH_HOT_RELOAD_WATCH_INTERVAL`. + #' @param dev_tools_hot_reload_max_retry Integer. Maximum number of failed reload hash requests before failing and displaying a pop up. Default `0.5`. Environment variable: `DASH_HOT_RELOAD_MAX_RETRY`. + #' @param dev_tools_props_check Logical. Validate the types and values of Dash component properties? Default is `TRUE` if `debug == TRUE`, `FALSE` otherwise. Environment variable: `DASH_PROPS_CHECK`. + #' @param dev_tools_prune_errors Logical. Reduce tracebacks such that only lines relevant to user code remain, stripping out Fiery and Dash references? Only available with debugging. `TRUE` by default, set to `FALSE` to see the complete traceback. Environment variable: `DASH_PRUNE_ERRORS`. + #' @param dev_tools_silence_routes_logging Logical. Replace Fiery's default logger with `dashLogger` instead (will remove all routes logging)? Enabled with debugging by default because hot reload hash checks generate a lot of requests. + #' @param ... Additional arguments to pass to the `start` handler; see the [fiery] documentation for relevant examples. + #' @examples + #' if (interactive() ) { + #' library(dash) + #' + #' app <- Dash$new() + #' app$layout(htmlDiv( + #' list( + #' dccInput(id = "inputID", value = "initial value", type = "text"), + #' htmlDiv(id = "outputID") + #' ) + #' ) + #' ) + #' + #' app$callback(output = list(id="outputID", property="children"), + #' params = list(input(id="inputID", property="value"), + #' state(id="inputID", property="type")), + #' function(x, y) + #' sprintf("You've entered: '%s' into a '%s' input control", x, y) + #' ) + #' + #' app$run_server(showcase = TRUE) + #' } run_server = function(host = Sys.getenv('HOST', "127.0.0.1"), port = Sys.getenv('PORT', 8050), block = TRUE, @@ -994,6 +1232,39 @@ Dash <- R6::R6Class( private$prune_errors <- getServerParam(dev_tools_prune_errors, "logical", TRUE) + # attach user-defined routes, if they exist + if (length(self$server$get_data("user-routes")) > 0) { + + plugin <- list( + on_attach = function(server) { + user_routes <- server$get_data("user-routes") + + # adding an additional route will fail if the + # route already exists, so remove user-routes + # if present and reload; user_routes will still + # have all the relevant routes in place anyhow + if (server$plugins$request_routr$has_route("user-routes")) + server$plugins$request_routr$remove_route("user-routes") + + router <- server$plugins$request_routr + + route <- routr::Route$new() + + for (routing in user_routes) { + route$add_handler(method=routing$methods, + path=routing$path, + handler=routing$handler) + } + + router$add_route(route, "user-routes") + }, + name = "user_routes", + require = "request_routr" + ) + + self$server$attach(plugin, force = TRUE) + } + if(getAppPath() != FALSE) { source_dir <- dirname(getAppPath()) private$app_root_modtime <- modtimeFromPath(source_dir, recursive = TRUE, asset_path = private$assets_folder) @@ -1021,6 +1292,42 @@ Dash <- R6::R6Class( self$config$silence_routes_logging <- dev_tools_silence_routes_logging self$config$props_check <- dev_tools_props_check + if (private$debug && self$config$ui) { + self$server$on('before-request', function(server, ...) { + self$server$set_data("timing-information", list( + "__dash_server" = list( + "dur" = as.numeric(Sys.time()), + "desc" = NULL + ) + )) + }) + + self$server$on('request', function(server, request, ...) { + timing_information <- self$server$get_data('timing-information') + dash_total <- timing_information[['__dash_server']] + timing_information[['__dash_server']][['dur']] <- round((as.numeric(Sys.time()) - dash_total[['dur']]) * 1000) + + header_as_string <- list() + + for (item in seq_along(timing_information)) { + header_content <- names(timing_information[item]) + + if (!is.null(timing_information[[item]]$desc)) { + header_content <- paste0(header_content, ';desc="', timing_information[[item]]$desc, '"') + } + + if (!is.null(timing_information[[item]]$dur)) { + header_content <- paste0(header_content, ';dur=', timing_information[[item]]$dur) + } + + header_as_string[[item]] <- header_content + } + + request$response$append_header('Server-Timing', + paste0(unlist(header_as_string), collapse=", ")) + }) + } + if (hot_reload == TRUE & !(is.null(source_dir))) { self$server$on('cycle-end', function(server, ...) { # handle case where assets are not present, since we can still hot reload the app itself @@ -1127,10 +1434,24 @@ Dash <- R6::R6Class( # reset the timestamp so we're able to determine when the last cycle end occurred private$last_cycle <- as.integer(Sys.time()) + + # flush the context to prepare for the next request cycle + self$server$set_data("timing-information", list()) }) } else if (hot_reload == TRUE & is.null(source_dir)) { message("\U{26A0} No source directory information available; hot reloading has been disabled.\nPlease ensure that you are loading your Dash for R application using source().\n") + } else if (hot_reload == FALSE && private$debug && self$config$ui) { + self$server$on("cycle-end", function(server, ...) { + # flush the context to prepare for the next request cycle + self$server$set_data("timing-information", list()) + }) } + + attached_packages = .packages() + if (any(c("dashCoreComponents", "dashHtmlComponents", "dashTable") %in% attached_packages)) { + message(strwrap(prefix = "\n", initial = "", "\U{26A0} Note: As of version 1.0, the following packages are deprecated and should no longer be installed or loaded when using Dash for R: `dashHtmlComponents`, `dashCoreComponents`, `dashTable`. These components are now bundled within the `dash` package.")) + } + self$server$ignite(block = block, showcase = showcase, ...) } ), @@ -1186,19 +1507,10 @@ Dash <- R6::R6Class( layout_ = NULL, layout_ids = NULL, layout_render = function() { - # assuming private$layout is either a function or a list of components... layout_ <- if (is.function(private$layout_)) private$layout_() else private$layout_ - # accommodate functions that return a single component - if (is.component(layout_)) layout_ <- list(layout_) - - # make sure we are working with a list of components - layout_ <- lapply(layout_, private$componentify) - - # Put the list of components into a container div. I'm pretty sure dash - # requires the layout to be one component, but R folks are used to - # being able to supply "components" to ... - layout_ <- dashHtmlComponents::htmlDiv(children = layout_, id = layout_container_id()) + # ensure that the layout is a component, or a collection of components + layout_ <- private$componentify(layout_) # store the layout as a (flattened) vector form since we query the # vector names several times to verify ID naming (among other things) @@ -1207,27 +1519,25 @@ Dash <- R6::R6Class( # verify that layout ids are unique idx <- grep("props\\.id$", layout_nms) - if (!length(idx)) { - warning( - "No ids were found in the layout. ", - "Component ids are critical for targetting callbacks in your application", - call. = FALSE - ) - } - private$layout_ids <- as.character(layout_flat[idx]) - duped <- anyDuplicated(private$layout_ids) + + layout_ids <- as.character(layout_flat[idx]) + duped <- anyDuplicated(layout_ids) > 0 + if (duped) { + duped_ids <- paste(layout_ids[duplicated(layout_ids)], collapse = ", ") + stop( - sprintf("layout ids must be unique -- the following id was duplicated: '%s'", private$layout_ids[duped]), + sprintf("layout ids must be unique -- please check the following list of duplicated ids: '%s'", duped_ids), call. = FALSE ) } + private$layout_ids <- layout_ids # load package-level HTML dependencies from attached pkgs metadataFns <- lapply(.packages(), getDashMetadata) metadataFns <- metadataFns[lengths(metadataFns) != 0] - deps_layout <- lapply(metadataFns, function(dep) { + deps_layout <- lapply(unlist(metadataFns), function(dep) { # the objective is to identify JS dependencies # without requiring that a proprietary R format # file is loaded at object initialization to @@ -1252,7 +1562,6 @@ Dash <- R6::R6Class( if (mode(fn_summary$obj[[1]]) == "function") { # function is available dep_list <- do.call(fn_summary$obj[[1]], list()) - return(dep_list) } else { return(NULL) @@ -1554,7 +1863,7 @@ Dash <- R6::R6Class( # collect CSS assets from dependencies if (!(is.null(private$asset_map$css))) { - css_assets <- generate_css_dist_html(href = paste0(private$assets_url_path, names(private$asset_map$css)), + css_assets <- generate_css_dist_html(tagdata = paste0(private$assets_url_path, names(private$asset_map$css)), local = TRUE, local_path = private$asset_map$css, prefix = self$config$requests_pathname_prefix) @@ -1572,7 +1881,7 @@ Dash <- R6::R6Class( # collect JS assets from dependencies # if (!(is.null(private$asset_map$scripts))) { - scripts_assets <- generate_js_dist_html(href = paste0(private$assets_url_path, names(private$asset_map$scripts)), + scripts_assets <- generate_js_dist_html(tagdata = paste0(private$assets_url_path, names(private$asset_map$scripts)), local = TRUE, local_path = private$asset_map$scripts, prefix = self$config$requests_pathname_prefix) @@ -1588,9 +1897,11 @@ Dash <- R6::R6Class( # create tag for favicon, if present # other_files_map[names(other_files_map) %in% "/favicon.ico"] if ("/favicon.ico" %in% names(private$asset_map$other)) { - favicon <- sprintf("") + favicon_url <- sprintf('\"%s_favicon.ico\"', self$config$requests_pathname_prefix) + favicon <- sprintf("", favicon_url) } else { - favicon <- "" + favicon_url <- sprintf('\"%s_favicon.ico\"', self$config$requests_pathname_prefix) + favicon <- sprintf("", favicon_url) } # set script tag to invoke a new dash_renderer @@ -1598,7 +1909,6 @@ Dash <- R6::R6Class( "_dash-renderer", "application/javascript", "var renderer = new DashRenderer();") - # add inline tags scripts_inline <- private$inline_scripts @@ -1639,24 +1949,6 @@ Dash <- R6::R6Class( # insert meta tags if present meta_tags <- all_tags[["meta_tags"]] - - # define the react-entry-point - app_entry <- "
Loading...
" - # define the dash default config key - config <- sprintf("", to_JSON(self$config)) - - if (is.null(private$name)) - private$name <- 'dash' - - if (!is.null(private$custom_index)) { - string_index <- glue::glue(private$custom_index, .open = "{%", .close = "%}") - - private$.index <- string_index - } - - else if (length(private$template_index) == 1) { - private$.index <- private$template_index - } # define the react-entry-point app_entry <- "
Loading...
" @@ -1664,7 +1956,7 @@ Dash <- R6::R6Class( config <- sprintf("", to_JSON(self$config)) if (is.null(private$name)) - private$name <- 'dash' + private$name <- 'Dash' if (!is.null(private$custom_index)) { string_index <- glue::glue(private$custom_index, .open = "{%", .close = "%}") @@ -1707,23 +1999,3 @@ Dash <- R6::R6Class( } ) ) - -validate_dependency <- function(layout_, dependency) { - if (!is.layout(layout_)) stop("`layout` must be a dash layout object", call. = FALSE) - if (!is.dependency(dependency)) stop("`dependency` must be a dash dependency object", call. = FALSE) - - valid_props <- component_props_given_id(layout_, dependency$id) - - if (!isTRUE(dependency$property %in% valid_props)) { - warning( - sprintf( - "'%s' is not a valid property for the component with id '%s'. Try one of the following: '%s'", - dependency$property, dependency$id, paste(valid_props, collapse = "', '") - ), - call. = FALSE - ) - return(FALSE) - } - - TRUE -} diff --git a/R/dashBootstrapComponents.R b/R/dashBootstrapComponents.R new file mode 100644 index 00000000..272d2b29 --- /dev/null +++ b/R/dashBootstrapComponents.R @@ -0,0 +1,1327 @@ +# AUTO GENERATED FILE - DO NOT EDIT + +#' @export +dbcAccordion <- function(children=NULL, id=NULL, style=NULL, class_name=NULL, className=NULL, key=NULL, flush=NULL, active_item=NULL, start_collapsed=NULL, loading_state=NULL, persistence=NULL, persisted_props=NULL, persistence_type=NULL) { + + props <- list(children=children, id=id, style=style, class_name=class_name, className=className, key=key, flush=flush, active_item=active_item, start_collapsed=start_collapsed, loading_state=loading_state, persistence=persistence, persisted_props=persisted_props, persistence_type=persistence_type) + if (length(props) > 0) { + props <- props[!vapply(props, is.null, logical(1))] + } + component <- list( + props = props, + type = 'Accordion', + namespace = 'dash_bootstrap_components', + propNames = c('children', 'id', 'style', 'class_name', 'className', 'key', 'flush', 'active_item', 'start_collapsed', 'loading_state', 'persistence', 'persisted_props', 'persistence_type'), + package = 'dashBootstrapComponents' + ) + + structure(component, class = c('dash_component', 'list')) +} + +# AUTO GENERATED FILE - DO NOT EDIT + +#' @export +dbcAccordionItem <- function(children=NULL, id=NULL, style=NULL, class_name=NULL, className=NULL, title=NULL, item_id=NULL, loading_state=NULL) { + + props <- list(children=children, id=id, style=style, class_name=class_name, className=className, title=title, item_id=item_id, loading_state=loading_state) + if (length(props) > 0) { + props <- props[!vapply(props, is.null, logical(1))] + } + component <- list( + props = props, + type = 'AccordionItem', + namespace = 'dash_bootstrap_components', + propNames = c('children', 'id', 'style', 'class_name', 'className', 'title', 'item_id', 'loading_state'), + package = 'dashBootstrapComponents' + ) + + structure(component, class = c('dash_component', 'list')) +} + +# AUTO GENERATED FILE - DO NOT EDIT + +#' @export +dbcAlert <- function(children=NULL, id=NULL, style=NULL, class_name=NULL, className=NULL, key=NULL, color=NULL, is_open=NULL, fade=NULL, dismissable=NULL, duration=NULL, loading_state=NULL) { + + props <- list(children=children, id=id, style=style, class_name=class_name, className=className, key=key, color=color, is_open=is_open, fade=fade, dismissable=dismissable, duration=duration, loading_state=loading_state) + if (length(props) > 0) { + props <- props[!vapply(props, is.null, logical(1))] + } + component <- list( + props = props, + type = 'Alert', + namespace = 'dash_bootstrap_components', + propNames = c('children', 'id', 'style', 'class_name', 'className', 'key', 'color', 'is_open', 'fade', 'dismissable', 'duration', 'loading_state'), + package = 'dashBootstrapComponents' + ) + + structure(component, class = c('dash_component', 'list')) +} + +# AUTO GENERATED FILE - DO NOT EDIT + +#' @export +dbcBadge <- function(children=NULL, id=NULL, style=NULL, class_name=NULL, className=NULL, key=NULL, color=NULL, text_color=NULL, pill=NULL, href=NULL, tag=NULL, loading_state=NULL, external_link=NULL, n_clicks=NULL, n_clicks_timestamp=NULL, target=NULL, title=NULL) { + + props <- list(children=children, id=id, style=style, class_name=class_name, className=className, key=key, color=color, text_color=text_color, pill=pill, href=href, tag=tag, loading_state=loading_state, external_link=external_link, n_clicks=n_clicks, n_clicks_timestamp=n_clicks_timestamp, target=target, title=title) + if (length(props) > 0) { + props <- props[!vapply(props, is.null, logical(1))] + } + component <- list( + props = props, + type = 'Badge', + namespace = 'dash_bootstrap_components', + propNames = c('children', 'id', 'style', 'class_name', 'className', 'key', 'color', 'text_color', 'pill', 'href', 'tag', 'loading_state', 'external_link', 'n_clicks', 'n_clicks_timestamp', 'target', 'title'), + package = 'dashBootstrapComponents' + ) + + structure(component, class = c('dash_component', 'list')) +} + +# AUTO GENERATED FILE - DO NOT EDIT + +#' @export +dbcBreadcrumb <- function(id=NULL, items=NULL, style=NULL, item_style=NULL, class_name=NULL, className=NULL, item_class_name=NULL, itemClassName=NULL, key=NULL, tag=NULL, loading_state=NULL) { + + props <- list(id=id, items=items, style=style, item_style=item_style, class_name=class_name, className=className, item_class_name=item_class_name, itemClassName=itemClassName, key=key, tag=tag, loading_state=loading_state) + if (length(props) > 0) { + props <- props[!vapply(props, is.null, logical(1))] + } + component <- list( + props = props, + type = 'Breadcrumb', + namespace = 'dash_bootstrap_components', + propNames = c('id', 'items', 'style', 'item_style', 'class_name', 'className', 'item_class_name', 'itemClassName', 'key', 'tag', 'loading_state'), + package = 'dashBootstrapComponents' + ) + + structure(component, class = c('dash_component', 'list')) +} + +# AUTO GENERATED FILE - DO NOT EDIT + +#' @export +dbcButton <- function(children=NULL, id=NULL, class_name=NULL, className=NULL, style=NULL, key=NULL, href=NULL, external_link=NULL, n_clicks=NULL, n_clicks_timestamp=NULL, active=NULL, color=NULL, disabled=NULL, size=NULL, title=NULL, outline=NULL, loading_state=NULL, target=NULL, type=NULL, download=NULL, name=NULL, value=NULL) { + + props <- list(children=children, id=id, class_name=class_name, className=className, style=style, key=key, href=href, external_link=external_link, n_clicks=n_clicks, n_clicks_timestamp=n_clicks_timestamp, active=active, color=color, disabled=disabled, size=size, title=title, outline=outline, loading_state=loading_state, target=target, type=type, download=download, name=name, value=value) + if (length(props) > 0) { + props <- props[!vapply(props, is.null, logical(1))] + } + component <- list( + props = props, + type = 'Button', + namespace = 'dash_bootstrap_components', + propNames = c('children', 'id', 'class_name', 'className', 'style', 'key', 'href', 'external_link', 'n_clicks', 'n_clicks_timestamp', 'active', 'color', 'disabled', 'size', 'title', 'outline', 'loading_state', 'target', 'type', 'download', 'name', 'value'), + package = 'dashBootstrapComponents' + ) + + structure(component, class = c('dash_component', 'list')) +} + +# AUTO GENERATED FILE - DO NOT EDIT + +#' @export +dbcButtonGroup <- function(children=NULL, id=NULL, style=NULL, class_name=NULL, className=NULL, key=NULL, vertical=NULL, size=NULL, loading_state=NULL) { + + props <- list(children=children, id=id, style=style, class_name=class_name, className=className, key=key, vertical=vertical, size=size, loading_state=loading_state) + if (length(props) > 0) { + props <- props[!vapply(props, is.null, logical(1))] + } + component <- list( + props = props, + type = 'ButtonGroup', + namespace = 'dash_bootstrap_components', + propNames = c('children', 'id', 'style', 'class_name', 'className', 'key', 'vertical', 'size', 'loading_state'), + package = 'dashBootstrapComponents' + ) + + structure(component, class = c('dash_component', 'list')) +} + +# AUTO GENERATED FILE - DO NOT EDIT + +#' @export +dbcCard <- function(children=NULL, id=NULL, style=NULL, class_name=NULL, className=NULL, key=NULL, color=NULL, body=NULL, outline=NULL, inverse=NULL, loading_state=NULL) { + + props <- list(children=children, id=id, style=style, class_name=class_name, className=className, key=key, color=color, body=body, outline=outline, inverse=inverse, loading_state=loading_state) + if (length(props) > 0) { + props <- props[!vapply(props, is.null, logical(1))] + } + component <- list( + props = props, + type = 'Card', + namespace = 'dash_bootstrap_components', + propNames = c('children', 'id', 'style', 'class_name', 'className', 'key', 'color', 'body', 'outline', 'inverse', 'loading_state'), + package = 'dashBootstrapComponents' + ) + + structure(component, class = c('dash_component', 'list')) +} + +# AUTO GENERATED FILE - DO NOT EDIT + +#' @export +dbcCardBody <- function(children=NULL, id=NULL, style=NULL, class_name=NULL, className=NULL, key=NULL, tag=NULL, loading_state=NULL) { + + props <- list(children=children, id=id, style=style, class_name=class_name, className=className, key=key, tag=tag, loading_state=loading_state) + if (length(props) > 0) { + props <- props[!vapply(props, is.null, logical(1))] + } + component <- list( + props = props, + type = 'CardBody', + namespace = 'dash_bootstrap_components', + propNames = c('children', 'id', 'style', 'class_name', 'className', 'key', 'tag', 'loading_state'), + package = 'dashBootstrapComponents' + ) + + structure(component, class = c('dash_component', 'list')) +} + +# AUTO GENERATED FILE - DO NOT EDIT + +#' @export +dbcCardFooter <- function(children=NULL, id=NULL, style=NULL, class_name=NULL, className=NULL, key=NULL, tag=NULL, loading_state=NULL) { + + props <- list(children=children, id=id, style=style, class_name=class_name, className=className, key=key, tag=tag, loading_state=loading_state) + if (length(props) > 0) { + props <- props[!vapply(props, is.null, logical(1))] + } + component <- list( + props = props, + type = 'CardFooter', + namespace = 'dash_bootstrap_components', + propNames = c('children', 'id', 'style', 'class_name', 'className', 'key', 'tag', 'loading_state'), + package = 'dashBootstrapComponents' + ) + + structure(component, class = c('dash_component', 'list')) +} + +# AUTO GENERATED FILE - DO NOT EDIT + +#' @export +dbcCardGroup <- function(children=NULL, id=NULL, style=NULL, class_name=NULL, className=NULL, key=NULL, tag=NULL, loading_state=NULL) { + + props <- list(children=children, id=id, style=style, class_name=class_name, className=className, key=key, tag=tag, loading_state=loading_state) + if (length(props) > 0) { + props <- props[!vapply(props, is.null, logical(1))] + } + component <- list( + props = props, + type = 'CardGroup', + namespace = 'dash_bootstrap_components', + propNames = c('children', 'id', 'style', 'class_name', 'className', 'key', 'tag', 'loading_state'), + package = 'dashBootstrapComponents' + ) + + structure(component, class = c('dash_component', 'list')) +} + +# AUTO GENERATED FILE - DO NOT EDIT + +#' @export +dbcCardHeader <- function(children=NULL, id=NULL, style=NULL, class_name=NULL, className=NULL, key=NULL, tag=NULL, loading_state=NULL) { + + props <- list(children=children, id=id, style=style, class_name=class_name, className=className, key=key, tag=tag, loading_state=loading_state) + if (length(props) > 0) { + props <- props[!vapply(props, is.null, logical(1))] + } + component <- list( + props = props, + type = 'CardHeader', + namespace = 'dash_bootstrap_components', + propNames = c('children', 'id', 'style', 'class_name', 'className', 'key', 'tag', 'loading_state'), + package = 'dashBootstrapComponents' + ) + + structure(component, class = c('dash_component', 'list')) +} + +# AUTO GENERATED FILE - DO NOT EDIT + +#' @export +dbcCardImg <- function(children=NULL, id=NULL, style=NULL, class_name=NULL, className=NULL, key=NULL, tag=NULL, top=NULL, bottom=NULL, src=NULL, alt=NULL, title=NULL, loading_state=NULL) { + + props <- list(children=children, id=id, style=style, class_name=class_name, className=className, key=key, tag=tag, top=top, bottom=bottom, src=src, alt=alt, title=title, loading_state=loading_state) + if (length(props) > 0) { + props <- props[!vapply(props, is.null, logical(1))] + } + component <- list( + props = props, + type = 'CardImg', + namespace = 'dash_bootstrap_components', + propNames = c('children', 'id', 'style', 'class_name', 'className', 'key', 'tag', 'top', 'bottom', 'src', 'alt', 'title', 'loading_state'), + package = 'dashBootstrapComponents' + ) + + structure(component, class = c('dash_component', 'list')) +} + +# AUTO GENERATED FILE - DO NOT EDIT + +#' @export +dbcCardImgOverlay <- function(children=NULL, id=NULL, style=NULL, class_name=NULL, className=NULL, key=NULL, tag=NULL, loading_state=NULL) { + + props <- list(children=children, id=id, style=style, class_name=class_name, className=className, key=key, tag=tag, loading_state=loading_state) + if (length(props) > 0) { + props <- props[!vapply(props, is.null, logical(1))] + } + component <- list( + props = props, + type = 'CardImgOverlay', + namespace = 'dash_bootstrap_components', + propNames = c('children', 'id', 'style', 'class_name', 'className', 'key', 'tag', 'loading_state'), + package = 'dashBootstrapComponents' + ) + + structure(component, class = c('dash_component', 'list')) +} + +# AUTO GENERATED FILE - DO NOT EDIT + +#' @export +dbcCardLink <- function(children=NULL, id=NULL, style=NULL, class_name=NULL, className=NULL, key=NULL, href=NULL, external_link=NULL, n_clicks=NULL, n_clicks_timestamp=NULL, loading_state=NULL, target=NULL) { + + props <- list(children=children, id=id, style=style, class_name=class_name, className=className, key=key, href=href, external_link=external_link, n_clicks=n_clicks, n_clicks_timestamp=n_clicks_timestamp, loading_state=loading_state, target=target) + if (length(props) > 0) { + props <- props[!vapply(props, is.null, logical(1))] + } + component <- list( + props = props, + type = 'CardLink', + namespace = 'dash_bootstrap_components', + propNames = c('children', 'id', 'style', 'class_name', 'className', 'key', 'href', 'external_link', 'n_clicks', 'n_clicks_timestamp', 'loading_state', 'target'), + package = 'dashBootstrapComponents' + ) + + structure(component, class = c('dash_component', 'list')) +} + +# AUTO GENERATED FILE - DO NOT EDIT + +#' @export +dbcCarousel <- function(id=NULL, style=NULL, class_name=NULL, className=NULL, items=NULL, active_index=NULL, controls=NULL, indicators=NULL, ride=NULL, slide=NULL, variant=NULL, interval=NULL, loading_state=NULL) { + + props <- list(id=id, style=style, class_name=class_name, className=className, items=items, active_index=active_index, controls=controls, indicators=indicators, ride=ride, slide=slide, variant=variant, interval=interval, loading_state=loading_state) + if (length(props) > 0) { + props <- props[!vapply(props, is.null, logical(1))] + } + component <- list( + props = props, + type = 'Carousel', + namespace = 'dash_bootstrap_components', + propNames = c('id', 'style', 'class_name', 'className', 'items', 'active_index', 'controls', 'indicators', 'ride', 'slide', 'variant', 'interval', 'loading_state'), + package = 'dashBootstrapComponents' + ) + + structure(component, class = c('dash_component', 'list')) +} + +# AUTO GENERATED FILE - DO NOT EDIT + +#' @export +dbcCheckbox <- function(id=NULL, class_name=NULL, className=NULL, style=NULL, input_style=NULL, inputStyle=NULL, input_class_name=NULL, inputClassName=NULL, label=NULL, label_id=NULL, label_style=NULL, labelStyle=NULL, label_class_name=NULL, labelClassName=NULL, name=NULL, disabled=NULL, value=NULL, loading_state=NULL, persistence=NULL, persisted_props=NULL, persistence_type=NULL) { + + props <- list(id=id, class_name=class_name, className=className, style=style, input_style=input_style, inputStyle=inputStyle, input_class_name=input_class_name, inputClassName=inputClassName, label=label, label_id=label_id, label_style=label_style, labelStyle=labelStyle, label_class_name=label_class_name, labelClassName=labelClassName, name=name, disabled=disabled, value=value, loading_state=loading_state, persistence=persistence, persisted_props=persisted_props, persistence_type=persistence_type) + if (length(props) > 0) { + props <- props[!vapply(props, is.null, logical(1))] + } + component <- list( + props = props, + type = 'Checkbox', + namespace = 'dash_bootstrap_components', + propNames = c('id', 'class_name', 'className', 'style', 'input_style', 'inputStyle', 'input_class_name', 'inputClassName', 'label', 'label_id', 'label_style', 'labelStyle', 'label_class_name', 'labelClassName', 'name', 'disabled', 'value', 'loading_state', 'persistence', 'persisted_props', 'persistence_type'), + package = 'dashBootstrapComponents' + ) + + structure(component, class = c('dash_component', 'list')) +} + +# AUTO GENERATED FILE - DO NOT EDIT + +#' @export +dbcChecklist <- function(id=NULL, options=NULL, value=NULL, class_name=NULL, className=NULL, style=NULL, key=NULL, input_style=NULL, inputStyle=NULL, input_checked_style=NULL, inputCheckedStyle=NULL, input_class_name=NULL, inputClassName=NULL, input_checked_class_name=NULL, inputCheckedClassName=NULL, label_style=NULL, labelStyle=NULL, label_checked_style=NULL, labelCheckedStyle=NULL, label_class_name=NULL, labelClassName=NULL, label_checked_class_name=NULL, labelCheckedClassName=NULL, inline=NULL, switch=NULL, loading_state=NULL, persistence=NULL, persisted_props=NULL, persistence_type=NULL, name=NULL) { + + props <- list(id=id, options=options, value=value, class_name=class_name, className=className, style=style, key=key, input_style=input_style, inputStyle=inputStyle, input_checked_style=input_checked_style, inputCheckedStyle=inputCheckedStyle, input_class_name=input_class_name, inputClassName=inputClassName, input_checked_class_name=input_checked_class_name, inputCheckedClassName=inputCheckedClassName, label_style=label_style, labelStyle=labelStyle, label_checked_style=label_checked_style, labelCheckedStyle=labelCheckedStyle, label_class_name=label_class_name, labelClassName=labelClassName, label_checked_class_name=label_checked_class_name, labelCheckedClassName=labelCheckedClassName, inline=inline, switch=switch, loading_state=loading_state, persistence=persistence, persisted_props=persisted_props, persistence_type=persistence_type, name=name) + if (length(props) > 0) { + props <- props[!vapply(props, is.null, logical(1))] + } + component <- list( + props = props, + type = 'Checklist', + namespace = 'dash_bootstrap_components', + propNames = c('id', 'options', 'value', 'class_name', 'className', 'style', 'key', 'input_style', 'inputStyle', 'input_checked_style', 'inputCheckedStyle', 'input_class_name', 'inputClassName', 'input_checked_class_name', 'inputCheckedClassName', 'label_style', 'labelStyle', 'label_checked_style', 'labelCheckedStyle', 'label_class_name', 'labelClassName', 'label_checked_class_name', 'labelCheckedClassName', 'inline', 'switch', 'loading_state', 'persistence', 'persisted_props', 'persistence_type', 'name'), + package = 'dashBootstrapComponents' + ) + + structure(component, class = c('dash_component', 'list')) +} + +# AUTO GENERATED FILE - DO NOT EDIT + +#' @export +dbcCol <- function(children=NULL, id=NULL, style=NULL, class_name=NULL, className=NULL, key=NULL, width=NULL, xs=NULL, sm=NULL, md=NULL, lg=NULL, xl=NULL, xxl=NULL, align=NULL, loading_state=NULL) { + + props <- list(children=children, id=id, style=style, class_name=class_name, className=className, key=key, width=width, xs=xs, sm=sm, md=md, lg=lg, xl=xl, xxl=xxl, align=align, loading_state=loading_state) + if (length(props) > 0) { + props <- props[!vapply(props, is.null, logical(1))] + } + component <- list( + props = props, + type = 'Col', + namespace = 'dash_bootstrap_components', + propNames = c('children', 'id', 'style', 'class_name', 'className', 'key', 'width', 'xs', 'sm', 'md', 'lg', 'xl', 'xxl', 'align', 'loading_state'), + package = 'dashBootstrapComponents' + ) + + structure(component, class = c('dash_component', 'list')) +} + +# AUTO GENERATED FILE - DO NOT EDIT + +#' @export +dbcCollapse <- function(children=NULL, id=NULL, style=NULL, class_name=NULL, className=NULL, key=NULL, is_open=NULL, navbar=NULL, loading_state=NULL) { + + props <- list(children=children, id=id, style=style, class_name=class_name, className=className, key=key, is_open=is_open, navbar=navbar, loading_state=loading_state) + if (length(props) > 0) { + props <- props[!vapply(props, is.null, logical(1))] + } + component <- list( + props = props, + type = 'Collapse', + namespace = 'dash_bootstrap_components', + propNames = c('children', 'id', 'style', 'class_name', 'className', 'key', 'is_open', 'navbar', 'loading_state'), + package = 'dashBootstrapComponents' + ) + + structure(component, class = c('dash_component', 'list')) +} + +# AUTO GENERATED FILE - DO NOT EDIT + +#' @export +dbcContainer <- function(children=NULL, id=NULL, style=NULL, class_name=NULL, className=NULL, key=NULL, fluid=NULL, tag=NULL, loading_state=NULL) { + + props <- list(children=children, id=id, style=style, class_name=class_name, className=className, key=key, fluid=fluid, tag=tag, loading_state=loading_state) + if (length(props) > 0) { + props <- props[!vapply(props, is.null, logical(1))] + } + component <- list( + props = props, + type = 'Container', + namespace = 'dash_bootstrap_components', + propNames = c('children', 'id', 'style', 'class_name', 'className', 'key', 'fluid', 'tag', 'loading_state'), + package = 'dashBootstrapComponents' + ) + + structure(component, class = c('dash_component', 'list')) +} + +# AUTO GENERATED FILE - DO NOT EDIT + +#' @export +dbcDropdownMenu <- function(children=NULL, id=NULL, style=NULL, class_name=NULL, className=NULL, key=NULL, label=NULL, direction=NULL, align_end=NULL, right=NULL, in_navbar=NULL, addon_type=NULL, disabled=NULL, nav=NULL, caret=NULL, color=NULL, menu_variant=NULL, toggle_style=NULL, toggle_class_name=NULL, toggleClassName=NULL, size=NULL, loading_state=NULL, group=NULL) { + + props <- list(children=children, id=id, style=style, class_name=class_name, className=className, key=key, label=label, direction=direction, align_end=align_end, right=right, in_navbar=in_navbar, addon_type=addon_type, disabled=disabled, nav=nav, caret=caret, color=color, menu_variant=menu_variant, toggle_style=toggle_style, toggle_class_name=toggle_class_name, toggleClassName=toggleClassName, size=size, loading_state=loading_state, group=group) + if (length(props) > 0) { + props <- props[!vapply(props, is.null, logical(1))] + } + component <- list( + props = props, + type = 'DropdownMenu', + namespace = 'dash_bootstrap_components', + propNames = c('children', 'id', 'style', 'class_name', 'className', 'key', 'label', 'direction', 'align_end', 'right', 'in_navbar', 'addon_type', 'disabled', 'nav', 'caret', 'color', 'menu_variant', 'toggle_style', 'toggle_class_name', 'toggleClassName', 'size', 'loading_state', 'group'), + package = 'dashBootstrapComponents' + ) + + structure(component, class = c('dash_component', 'list')) +} + +# AUTO GENERATED FILE - DO NOT EDIT + +#' @export +dbcDropdownMenuItem <- function(children=NULL, id=NULL, style=NULL, class_name=NULL, className=NULL, key=NULL, active=NULL, disabled=NULL, divider=NULL, header=NULL, href=NULL, toggle=NULL, external_link=NULL, n_clicks=NULL, n_clicks_timestamp=NULL, loading_state=NULL, target=NULL) { + + props <- list(children=children, id=id, style=style, class_name=class_name, className=className, key=key, active=active, disabled=disabled, divider=divider, header=header, href=href, toggle=toggle, external_link=external_link, n_clicks=n_clicks, n_clicks_timestamp=n_clicks_timestamp, loading_state=loading_state, target=target) + if (length(props) > 0) { + props <- props[!vapply(props, is.null, logical(1))] + } + component <- list( + props = props, + type = 'DropdownMenuItem', + namespace = 'dash_bootstrap_components', + propNames = c('children', 'id', 'style', 'class_name', 'className', 'key', 'active', 'disabled', 'divider', 'header', 'href', 'toggle', 'external_link', 'n_clicks', 'n_clicks_timestamp', 'loading_state', 'target'), + package = 'dashBootstrapComponents' + ) + + structure(component, class = c('dash_component', 'list')) +} + +# AUTO GENERATED FILE - DO NOT EDIT + +#' @export +dbcFade <- function(children=NULL, id=NULL, style=NULL, class_name=NULL, className=NULL, key=NULL, is_in=NULL, timeout=NULL, appear=NULL, enter=NULL, exit=NULL, tag=NULL, loading_state=NULL) { + + props <- list(children=children, id=id, style=style, class_name=class_name, className=className, key=key, is_in=is_in, timeout=timeout, appear=appear, enter=enter, exit=exit, tag=tag, loading_state=loading_state) + if (length(props) > 0) { + props <- props[!vapply(props, is.null, logical(1))] + } + component <- list( + props = props, + type = 'Fade', + namespace = 'dash_bootstrap_components', + propNames = c('children', 'id', 'style', 'class_name', 'className', 'key', 'is_in', 'timeout', 'appear', 'enter', 'exit', 'tag', 'loading_state'), + package = 'dashBootstrapComponents' + ) + + structure(component, class = c('dash_component', 'list')) +} + +# AUTO GENERATED FILE - DO NOT EDIT + +#' @export +dbcForm <- function(children=NULL, id=NULL, style=NULL, class_name=NULL, className=NULL, key=NULL, action=NULL, method=NULL, n_submit=NULL, n_submit_timestamp=NULL, prevent_default_on_submit=NULL, loading_state=NULL) { + + props <- list(children=children, id=id, style=style, class_name=class_name, className=className, key=key, action=action, method=method, n_submit=n_submit, n_submit_timestamp=n_submit_timestamp, prevent_default_on_submit=prevent_default_on_submit, loading_state=loading_state) + if (length(props) > 0) { + props <- props[!vapply(props, is.null, logical(1))] + } + component <- list( + props = props, + type = 'Form', + namespace = 'dash_bootstrap_components', + propNames = c('children', 'id', 'style', 'class_name', 'className', 'key', 'action', 'method', 'n_submit', 'n_submit_timestamp', 'prevent_default_on_submit', 'loading_state'), + package = 'dashBootstrapComponents' + ) + + structure(component, class = c('dash_component', 'list')) +} + +# AUTO GENERATED FILE - DO NOT EDIT + +#' @export +dbcFormFeedback <- function(children=NULL, id=NULL, style=NULL, class_name=NULL, className=NULL, key=NULL, type=NULL, tooltip=NULL, loading_state=NULL) { + + props <- list(children=children, id=id, style=style, class_name=class_name, className=className, key=key, type=type, tooltip=tooltip, loading_state=loading_state) + if (length(props) > 0) { + props <- props[!vapply(props, is.null, logical(1))] + } + component <- list( + props = props, + type = 'FormFeedback', + namespace = 'dash_bootstrap_components', + propNames = c('children', 'id', 'style', 'class_name', 'className', 'key', 'type', 'tooltip', 'loading_state'), + package = 'dashBootstrapComponents' + ) + + structure(component, class = c('dash_component', 'list')) +} + +# AUTO GENERATED FILE - DO NOT EDIT + +#' @export +dbcFormFloating <- function(children=NULL, id=NULL, style=NULL, class_name=NULL, className=NULL, key=NULL, html_for=NULL, loading_state=NULL) { + + props <- list(children=children, id=id, style=style, class_name=class_name, className=className, key=key, html_for=html_for, loading_state=loading_state) + if (length(props) > 0) { + props <- props[!vapply(props, is.null, logical(1))] + } + component <- list( + props = props, + type = 'FormFloating', + namespace = 'dash_bootstrap_components', + propNames = c('children', 'id', 'style', 'class_name', 'className', 'key', 'html_for', 'loading_state'), + package = 'dashBootstrapComponents' + ) + + structure(component, class = c('dash_component', 'list')) +} + +# AUTO GENERATED FILE - DO NOT EDIT + +#' @export +dbcFormText <- function(children=NULL, id=NULL, style=NULL, class_name=NULL, className=NULL, key=NULL, color=NULL, loading_state=NULL) { + + props <- list(children=children, id=id, style=style, class_name=class_name, className=className, key=key, color=color, loading_state=loading_state) + if (length(props) > 0) { + props <- props[!vapply(props, is.null, logical(1))] + } + component <- list( + props = props, + type = 'FormText', + namespace = 'dash_bootstrap_components', + propNames = c('children', 'id', 'style', 'class_name', 'className', 'key', 'color', 'loading_state'), + package = 'dashBootstrapComponents' + ) + + structure(component, class = c('dash_component', 'list')) +} + +# AUTO GENERATED FILE - DO NOT EDIT + +#' @export +dbcInput <- function(id=NULL, style=NULL, class_name=NULL, className=NULL, key=NULL, type=NULL, value=NULL, disabled=NULL, autocomplete=NULL, autoComplete=NULL, autofocus=NULL, autoFocus=NULL, inputmode=NULL, inputMode=NULL, list=NULL, max=NULL, maxlength=NULL, maxLength=NULL, min=NULL, minlength=NULL, minLength=NULL, step=NULL, html_size=NULL, size=NULL, valid=NULL, invalid=NULL, required=NULL, plaintext=NULL, placeholder=NULL, name=NULL, pattern=NULL, n_submit=NULL, n_submit_timestamp=NULL, n_blur=NULL, n_blur_timestamp=NULL, debounce=NULL, loading_state=NULL, persistence=NULL, persisted_props=NULL, persistence_type=NULL, tabindex=NULL, tabIndex=NULL) { + + props <- list(id=id, style=style, class_name=class_name, className=className, key=key, type=type, value=value, disabled=disabled, autocomplete=autocomplete, autoComplete=autoComplete, autofocus=autofocus, autoFocus=autoFocus, inputmode=inputmode, inputMode=inputMode, list=list, max=max, maxlength=maxlength, maxLength=maxLength, min=min, minlength=minlength, minLength=minLength, step=step, html_size=html_size, size=size, valid=valid, invalid=invalid, required=required, plaintext=plaintext, placeholder=placeholder, name=name, pattern=pattern, n_submit=n_submit, n_submit_timestamp=n_submit_timestamp, n_blur=n_blur, n_blur_timestamp=n_blur_timestamp, debounce=debounce, loading_state=loading_state, persistence=persistence, persisted_props=persisted_props, persistence_type=persistence_type, tabindex=tabindex, tabIndex=tabIndex) + if (length(props) > 0) { + props <- props[!vapply(props, is.null, logical(1))] + } + component <- list( + props = props, + type = 'Input', + namespace = 'dash_bootstrap_components', + propNames = c('id', 'style', 'class_name', 'className', 'key', 'type', 'value', 'disabled', 'autocomplete', 'autoComplete', 'autofocus', 'autoFocus', 'inputmode', 'inputMode', 'list', 'max', 'maxlength', 'maxLength', 'min', 'minlength', 'minLength', 'step', 'html_size', 'size', 'valid', 'invalid', 'required', 'plaintext', 'placeholder', 'name', 'pattern', 'n_submit', 'n_submit_timestamp', 'n_blur', 'n_blur_timestamp', 'debounce', 'loading_state', 'persistence', 'persisted_props', 'persistence_type', 'tabindex', 'tabIndex'), + package = 'dashBootstrapComponents' + ) + + structure(component, class = c('dash_component', 'list')) +} + +# AUTO GENERATED FILE - DO NOT EDIT + +#' @export +dbcInputGroup <- function(children=NULL, id=NULL, style=NULL, class_name=NULL, className=NULL, key=NULL, size=NULL, loading_state=NULL) { + + props <- list(children=children, id=id, style=style, class_name=class_name, className=className, key=key, size=size, loading_state=loading_state) + if (length(props) > 0) { + props <- props[!vapply(props, is.null, logical(1))] + } + component <- list( + props = props, + type = 'InputGroup', + namespace = 'dash_bootstrap_components', + propNames = c('children', 'id', 'style', 'class_name', 'className', 'key', 'size', 'loading_state'), + package = 'dashBootstrapComponents' + ) + + structure(component, class = c('dash_component', 'list')) +} + +# AUTO GENERATED FILE - DO NOT EDIT + +#' @export +dbcInputGroupText <- function(children=NULL, id=NULL, style=NULL, key=NULL, class_name=NULL, className=NULL, loading_state=NULL) { + + props <- list(children=children, id=id, style=style, key=key, class_name=class_name, className=className, loading_state=loading_state) + if (length(props) > 0) { + props <- props[!vapply(props, is.null, logical(1))] + } + component <- list( + props = props, + type = 'InputGroupText', + namespace = 'dash_bootstrap_components', + propNames = c('children', 'id', 'style', 'key', 'class_name', 'className', 'loading_state'), + package = 'dashBootstrapComponents' + ) + + structure(component, class = c('dash_component', 'list')) +} + +# AUTO GENERATED FILE - DO NOT EDIT + +#' @export +dbcLabel <- function(children=NULL, id=NULL, style=NULL, class_name=NULL, className=NULL, key=NULL, hidden=NULL, size=NULL, html_for=NULL, check=NULL, width=NULL, xs=NULL, sm=NULL, md=NULL, lg=NULL, xl=NULL, align=NULL, color=NULL, loading_state=NULL) { + + props <- list(children=children, id=id, style=style, class_name=class_name, className=className, key=key, hidden=hidden, size=size, html_for=html_for, check=check, width=width, xs=xs, sm=sm, md=md, lg=lg, xl=xl, align=align, color=color, loading_state=loading_state) + if (length(props) > 0) { + props <- props[!vapply(props, is.null, logical(1))] + } + component <- list( + props = props, + type = 'Label', + namespace = 'dash_bootstrap_components', + propNames = c('children', 'id', 'style', 'class_name', 'className', 'key', 'hidden', 'size', 'html_for', 'check', 'width', 'xs', 'sm', 'md', 'lg', 'xl', 'align', 'color', 'loading_state'), + package = 'dashBootstrapComponents' + ) + + structure(component, class = c('dash_component', 'list')) +} + +# AUTO GENERATED FILE - DO NOT EDIT + +#' @export +dbcListGroup <- function(children=NULL, id=NULL, style=NULL, class_name=NULL, className=NULL, key=NULL, tag=NULL, flush=NULL, loading_state=NULL, horizontal=NULL) { + + props <- list(children=children, id=id, style=style, class_name=class_name, className=className, key=key, tag=tag, flush=flush, loading_state=loading_state, horizontal=horizontal) + if (length(props) > 0) { + props <- props[!vapply(props, is.null, logical(1))] + } + component <- list( + props = props, + type = 'ListGroup', + namespace = 'dash_bootstrap_components', + propNames = c('children', 'id', 'style', 'class_name', 'className', 'key', 'tag', 'flush', 'loading_state', 'horizontal'), + package = 'dashBootstrapComponents' + ) + + structure(component, class = c('dash_component', 'list')) +} + +# AUTO GENERATED FILE - DO NOT EDIT + +#' @export +dbcListGroupItem <- function(children=NULL, id=NULL, style=NULL, class_name=NULL, className=NULL, key=NULL, tag=NULL, active=NULL, disabled=NULL, color=NULL, action=NULL, href=NULL, external_link=NULL, n_clicks=NULL, n_clicks_timestamp=NULL, loading_state=NULL, target=NULL) { + + props <- list(children=children, id=id, style=style, class_name=class_name, className=className, key=key, tag=tag, active=active, disabled=disabled, color=color, action=action, href=href, external_link=external_link, n_clicks=n_clicks, n_clicks_timestamp=n_clicks_timestamp, loading_state=loading_state, target=target) + if (length(props) > 0) { + props <- props[!vapply(props, is.null, logical(1))] + } + component <- list( + props = props, + type = 'ListGroupItem', + namespace = 'dash_bootstrap_components', + propNames = c('children', 'id', 'style', 'class_name', 'className', 'key', 'tag', 'active', 'disabled', 'color', 'action', 'href', 'external_link', 'n_clicks', 'n_clicks_timestamp', 'loading_state', 'target'), + package = 'dashBootstrapComponents' + ) + + structure(component, class = c('dash_component', 'list')) +} + +# AUTO GENERATED FILE - DO NOT EDIT + +#' @export +dbcModal <- function(children=NULL, id=NULL, style=NULL, class_name=NULL, className=NULL, tag=NULL, is_open=NULL, centered=NULL, scrollable=NULL, autofocus=NULL, autoFocus=NULL, size=NULL, role=NULL, labelledby=NULL, labelledBy=NULL, keyboard=NULL, backdrop=NULL, modal_class_name=NULL, modalClassName=NULL, backdrop_class_name=NULL, backdropClassName=NULL, content_class_name=NULL, contentClassName=NULL, fade=NULL, fullscreen=NULL, zindex=NULL, zIndex=NULL) { + + props <- list(children=children, id=id, style=style, class_name=class_name, className=className, tag=tag, is_open=is_open, centered=centered, scrollable=scrollable, autofocus=autofocus, autoFocus=autoFocus, size=size, role=role, labelledby=labelledby, labelledBy=labelledBy, keyboard=keyboard, backdrop=backdrop, modal_class_name=modal_class_name, modalClassName=modalClassName, backdrop_class_name=backdrop_class_name, backdropClassName=backdropClassName, content_class_name=content_class_name, contentClassName=contentClassName, fade=fade, fullscreen=fullscreen, zindex=zindex, zIndex=zIndex) + if (length(props) > 0) { + props <- props[!vapply(props, is.null, logical(1))] + } + component <- list( + props = props, + type = 'Modal', + namespace = 'dash_bootstrap_components', + propNames = c('children', 'id', 'style', 'class_name', 'className', 'tag', 'is_open', 'centered', 'scrollable', 'autofocus', 'autoFocus', 'size', 'role', 'labelledby', 'labelledBy', 'keyboard', 'backdrop', 'modal_class_name', 'modalClassName', 'backdrop_class_name', 'backdropClassName', 'content_class_name', 'contentClassName', 'fade', 'fullscreen', 'zindex', 'zIndex'), + package = 'dashBootstrapComponents' + ) + + structure(component, class = c('dash_component', 'list')) +} + +# AUTO GENERATED FILE - DO NOT EDIT + +#' @export +dbcModalBody <- function(children=NULL, id=NULL, style=NULL, class_name=NULL, className=NULL, tag=NULL, loading_state=NULL) { + + props <- list(children=children, id=id, style=style, class_name=class_name, className=className, tag=tag, loading_state=loading_state) + if (length(props) > 0) { + props <- props[!vapply(props, is.null, logical(1))] + } + component <- list( + props = props, + type = 'ModalBody', + namespace = 'dash_bootstrap_components', + propNames = c('children', 'id', 'style', 'class_name', 'className', 'tag', 'loading_state'), + package = 'dashBootstrapComponents' + ) + + structure(component, class = c('dash_component', 'list')) +} + +# AUTO GENERATED FILE - DO NOT EDIT + +#' @export +dbcModalFooter <- function(children=NULL, id=NULL, style=NULL, class_name=NULL, className=NULL, tag=NULL, loading_state=NULL) { + + props <- list(children=children, id=id, style=style, class_name=class_name, className=className, tag=tag, loading_state=loading_state) + if (length(props) > 0) { + props <- props[!vapply(props, is.null, logical(1))] + } + component <- list( + props = props, + type = 'ModalFooter', + namespace = 'dash_bootstrap_components', + propNames = c('children', 'id', 'style', 'class_name', 'className', 'tag', 'loading_state'), + package = 'dashBootstrapComponents' + ) + + structure(component, class = c('dash_component', 'list')) +} + +# AUTO GENERATED FILE - DO NOT EDIT + +#' @export +dbcModalHeader <- function(children=NULL, id=NULL, style=NULL, class_name=NULL, className=NULL, close_button=NULL, tag=NULL, loading_state=NULL) { + + props <- list(children=children, id=id, style=style, class_name=class_name, className=className, close_button=close_button, tag=tag, loading_state=loading_state) + if (length(props) > 0) { + props <- props[!vapply(props, is.null, logical(1))] + } + component <- list( + props = props, + type = 'ModalHeader', + namespace = 'dash_bootstrap_components', + propNames = c('children', 'id', 'style', 'class_name', 'className', 'close_button', 'tag', 'loading_state'), + package = 'dashBootstrapComponents' + ) + + structure(component, class = c('dash_component', 'list')) +} + +# AUTO GENERATED FILE - DO NOT EDIT + +#' @export +dbcModalTitle <- function(children=NULL, id=NULL, style=NULL, class_name=NULL, className=NULL, tag=NULL, loading_state=NULL) { + + props <- list(children=children, id=id, style=style, class_name=class_name, className=className, tag=tag, loading_state=loading_state) + if (length(props) > 0) { + props <- props[!vapply(props, is.null, logical(1))] + } + component <- list( + props = props, + type = 'ModalTitle', + namespace = 'dash_bootstrap_components', + propNames = c('children', 'id', 'style', 'class_name', 'className', 'tag', 'loading_state'), + package = 'dashBootstrapComponents' + ) + + structure(component, class = c('dash_component', 'list')) +} + +# AUTO GENERATED FILE - DO NOT EDIT + +#' @export +dbcNav <- function(children=NULL, id=NULL, style=NULL, class_name=NULL, className=NULL, key=NULL, pills=NULL, card=NULL, fill=NULL, justified=NULL, vertical=NULL, horizontal=NULL, navbar=NULL, navbar_scroll=NULL, loading_state=NULL) { + + props <- list(children=children, id=id, style=style, class_name=class_name, className=className, key=key, pills=pills, card=card, fill=fill, justified=justified, vertical=vertical, horizontal=horizontal, navbar=navbar, navbar_scroll=navbar_scroll, loading_state=loading_state) + if (length(props) > 0) { + props <- props[!vapply(props, is.null, logical(1))] + } + component <- list( + props = props, + type = 'Nav', + namespace = 'dash_bootstrap_components', + propNames = c('children', 'id', 'style', 'class_name', 'className', 'key', 'pills', 'card', 'fill', 'justified', 'vertical', 'horizontal', 'navbar', 'navbar_scroll', 'loading_state'), + package = 'dashBootstrapComponents' + ) + + structure(component, class = c('dash_component', 'list')) +} + +# AUTO GENERATED FILE - DO NOT EDIT + +#' @export +dbcNavItem <- function(children=NULL, id=NULL, style=NULL, class_name=NULL, className=NULL, key=NULL, loading_state=NULL) { + + props <- list(children=children, id=id, style=style, class_name=class_name, className=className, key=key, loading_state=loading_state) + if (length(props) > 0) { + props <- props[!vapply(props, is.null, logical(1))] + } + component <- list( + props = props, + type = 'NavItem', + namespace = 'dash_bootstrap_components', + propNames = c('children', 'id', 'style', 'class_name', 'className', 'key', 'loading_state'), + package = 'dashBootstrapComponents' + ) + + structure(component, class = c('dash_component', 'list')) +} + +# AUTO GENERATED FILE - DO NOT EDIT + +#' @export +dbcNavLink <- function(children=NULL, id=NULL, style=NULL, class_name=NULL, className=NULL, key=NULL, href=NULL, active=NULL, disabled=NULL, external_link=NULL, n_clicks=NULL, n_clicks_timestamp=NULL, loading_state=NULL, target=NULL) { + + props <- list(children=children, id=id, style=style, class_name=class_name, className=className, key=key, href=href, active=active, disabled=disabled, external_link=external_link, n_clicks=n_clicks, n_clicks_timestamp=n_clicks_timestamp, loading_state=loading_state, target=target) + if (length(props) > 0) { + props <- props[!vapply(props, is.null, logical(1))] + } + component <- list( + props = props, + type = 'NavLink', + namespace = 'dash_bootstrap_components', + propNames = c('children', 'id', 'style', 'class_name', 'className', 'key', 'href', 'active', 'disabled', 'external_link', 'n_clicks', 'n_clicks_timestamp', 'loading_state', 'target'), + package = 'dashBootstrapComponents' + ) + + structure(component, class = c('dash_component', 'list')) +} + +# AUTO GENERATED FILE - DO NOT EDIT + +#' @export +dbcNavbar <- function(children=NULL, id=NULL, style=NULL, class_name=NULL, className=NULL, key=NULL, light=NULL, dark=NULL, fixed=NULL, sticky=NULL, color=NULL, role=NULL, tag=NULL, expand=NULL, loading_state=NULL) { + + props <- list(children=children, id=id, style=style, class_name=class_name, className=className, key=key, light=light, dark=dark, fixed=fixed, sticky=sticky, color=color, role=role, tag=tag, expand=expand, loading_state=loading_state) + if (length(props) > 0) { + props <- props[!vapply(props, is.null, logical(1))] + } + component <- list( + props = props, + type = 'Navbar', + namespace = 'dash_bootstrap_components', + propNames = c('children', 'id', 'style', 'class_name', 'className', 'key', 'light', 'dark', 'fixed', 'sticky', 'color', 'role', 'tag', 'expand', 'loading_state'), + package = 'dashBootstrapComponents' + ) + + structure(component, class = c('dash_component', 'list')) +} + +# AUTO GENERATED FILE - DO NOT EDIT + +#' @export +dbcNavbarBrand <- function(children=NULL, id=NULL, style=NULL, class_name=NULL, className=NULL, key=NULL, external_link=NULL, href=NULL, loading_state=NULL) { + + props <- list(children=children, id=id, style=style, class_name=class_name, className=className, key=key, external_link=external_link, href=href, loading_state=loading_state) + if (length(props) > 0) { + props <- props[!vapply(props, is.null, logical(1))] + } + component <- list( + props = props, + type = 'NavbarBrand', + namespace = 'dash_bootstrap_components', + propNames = c('children', 'id', 'style', 'class_name', 'className', 'key', 'external_link', 'href', 'loading_state'), + package = 'dashBootstrapComponents' + ) + + structure(component, class = c('dash_component', 'list')) +} + +# AUTO GENERATED FILE - DO NOT EDIT + +#' @export +dbcNavbarSimple <- function(children=NULL, id=NULL, style=NULL, class_name=NULL, className=NULL, key=NULL, brand=NULL, brand_href=NULL, brand_style=NULL, brand_external_link=NULL, fluid=NULL, links_left=NULL, light=NULL, dark=NULL, fixed=NULL, sticky=NULL, color=NULL, expand=NULL, loading_state=NULL) { + + props <- list(children=children, id=id, style=style, class_name=class_name, className=className, key=key, brand=brand, brand_href=brand_href, brand_style=brand_style, brand_external_link=brand_external_link, fluid=fluid, links_left=links_left, light=light, dark=dark, fixed=fixed, sticky=sticky, color=color, expand=expand, loading_state=loading_state) + if (length(props) > 0) { + props <- props[!vapply(props, is.null, logical(1))] + } + component <- list( + props = props, + type = 'NavbarSimple', + namespace = 'dash_bootstrap_components', + propNames = c('children', 'id', 'style', 'class_name', 'className', 'key', 'brand', 'brand_href', 'brand_style', 'brand_external_link', 'fluid', 'links_left', 'light', 'dark', 'fixed', 'sticky', 'color', 'expand', 'loading_state'), + package = 'dashBootstrapComponents' + ) + + structure(component, class = c('dash_component', 'list')) +} + +# AUTO GENERATED FILE - DO NOT EDIT + +#' @export +dbcNavbarToggler <- function(children=NULL, id=NULL, style=NULL, class_name=NULL, className=NULL, key=NULL, type=NULL, n_clicks=NULL, n_clicks_timestamp=NULL, loading_state=NULL) { + + props <- list(children=children, id=id, style=style, class_name=class_name, className=className, key=key, type=type, n_clicks=n_clicks, n_clicks_timestamp=n_clicks_timestamp, loading_state=loading_state) + if (length(props) > 0) { + props <- props[!vapply(props, is.null, logical(1))] + } + component <- list( + props = props, + type = 'NavbarToggler', + namespace = 'dash_bootstrap_components', + propNames = c('children', 'id', 'style', 'class_name', 'className', 'key', 'type', 'n_clicks', 'n_clicks_timestamp', 'loading_state'), + package = 'dashBootstrapComponents' + ) + + structure(component, class = c('dash_component', 'list')) +} + +# AUTO GENERATED FILE - DO NOT EDIT + +#' @export +dbcOffcanvas <- function(children=NULL, id=NULL, style=NULL, class_name=NULL, className=NULL, labelledby=NULL, labelledBy=NULL, backdrop=NULL, backdrop_class_name=NULL, backdropClassName=NULL, keyboard=NULL, is_open=NULL, placement=NULL, scrollable=NULL, autofocus=NULL, autoFocus=NULL, title=NULL, close_button=NULL, loading_state=NULL) { + + props <- list(children=children, id=id, style=style, class_name=class_name, className=className, labelledby=labelledby, labelledBy=labelledBy, backdrop=backdrop, backdrop_class_name=backdrop_class_name, backdropClassName=backdropClassName, keyboard=keyboard, is_open=is_open, placement=placement, scrollable=scrollable, autofocus=autofocus, autoFocus=autoFocus, title=title, close_button=close_button, loading_state=loading_state) + if (length(props) > 0) { + props <- props[!vapply(props, is.null, logical(1))] + } + component <- list( + props = props, + type = 'Offcanvas', + namespace = 'dash_bootstrap_components', + propNames = c('children', 'id', 'style', 'class_name', 'className', 'labelledby', 'labelledBy', 'backdrop', 'backdrop_class_name', 'backdropClassName', 'keyboard', 'is_open', 'placement', 'scrollable', 'autofocus', 'autoFocus', 'title', 'close_button', 'loading_state'), + package = 'dashBootstrapComponents' + ) + + structure(component, class = c('dash_component', 'list')) +} + +# AUTO GENERATED FILE - DO NOT EDIT + +#' @export +dbcPagination <- function(id=NULL, class_name=NULL, className=NULL, style=NULL, size=NULL, min_value=NULL, max_value=NULL, step=NULL, active_page=NULL, fully_expanded=NULL, previous_next=NULL, first_last=NULL, loading_state=NULL) { + + props <- list(id=id, class_name=class_name, className=className, style=style, size=size, min_value=min_value, max_value=max_value, step=step, active_page=active_page, fully_expanded=fully_expanded, previous_next=previous_next, first_last=first_last, loading_state=loading_state) + if (length(props) > 0) { + props <- props[!vapply(props, is.null, logical(1))] + } + component <- list( + props = props, + type = 'Pagination', + namespace = 'dash_bootstrap_components', + propNames = c('id', 'class_name', 'className', 'style', 'size', 'min_value', 'max_value', 'step', 'active_page', 'fully_expanded', 'previous_next', 'first_last', 'loading_state'), + package = 'dashBootstrapComponents' + ) + + structure(component, class = c('dash_component', 'list')) +} + +# AUTO GENERATED FILE - DO NOT EDIT + +#' @export +dbcPopover <- function(children=NULL, id=NULL, style=NULL, class_name=NULL, className=NULL, key=NULL, placement=NULL, target=NULL, trigger=NULL, is_open=NULL, hide_arrow=NULL, inner_class_name=NULL, innerClassName=NULL, delay=NULL, offset=NULL, flip=NULL, loading_state=NULL) { + + props <- list(children=children, id=id, style=style, class_name=class_name, className=className, key=key, placement=placement, target=target, trigger=trigger, is_open=is_open, hide_arrow=hide_arrow, inner_class_name=inner_class_name, innerClassName=innerClassName, delay=delay, offset=offset, flip=flip, loading_state=loading_state) + if (length(props) > 0) { + props <- props[!vapply(props, is.null, logical(1))] + } + component <- list( + props = props, + type = 'Popover', + namespace = 'dash_bootstrap_components', + propNames = c('children', 'id', 'style', 'class_name', 'className', 'key', 'placement', 'target', 'trigger', 'is_open', 'hide_arrow', 'inner_class_name', 'innerClassName', 'delay', 'offset', 'flip', 'loading_state'), + package = 'dashBootstrapComponents' + ) + + structure(component, class = c('dash_component', 'list')) +} + +# AUTO GENERATED FILE - DO NOT EDIT + +#' @export +dbcPopoverBody <- function(children=NULL, id=NULL, style=NULL, class_name=NULL, className=NULL, key=NULL, tag=NULL, loading_state=NULL) { + + props <- list(children=children, id=id, style=style, class_name=class_name, className=className, key=key, tag=tag, loading_state=loading_state) + if (length(props) > 0) { + props <- props[!vapply(props, is.null, logical(1))] + } + component <- list( + props = props, + type = 'PopoverBody', + namespace = 'dash_bootstrap_components', + propNames = c('children', 'id', 'style', 'class_name', 'className', 'key', 'tag', 'loading_state'), + package = 'dashBootstrapComponents' + ) + + structure(component, class = c('dash_component', 'list')) +} + +# AUTO GENERATED FILE - DO NOT EDIT + +#' @export +dbcPopoverHeader <- function(children=NULL, id=NULL, style=NULL, class_name=NULL, className=NULL, key=NULL, tag=NULL, loading_state=NULL) { + + props <- list(children=children, id=id, style=style, class_name=class_name, className=className, key=key, tag=tag, loading_state=loading_state) + if (length(props) > 0) { + props <- props[!vapply(props, is.null, logical(1))] + } + component <- list( + props = props, + type = 'PopoverHeader', + namespace = 'dash_bootstrap_components', + propNames = c('children', 'id', 'style', 'class_name', 'className', 'key', 'tag', 'loading_state'), + package = 'dashBootstrapComponents' + ) + + structure(component, class = c('dash_component', 'list')) +} + +# AUTO GENERATED FILE - DO NOT EDIT + +#' @export +dbcProgress <- function(children=NULL, id=NULL, style=NULL, class_name=NULL, className=NULL, key=NULL, bar=NULL, min=NULL, max=NULL, value=NULL, label=NULL, hide_label=NULL, animated=NULL, striped=NULL, color=NULL, loading_state=NULL) { + + props <- list(children=children, id=id, style=style, class_name=class_name, className=className, key=key, bar=bar, min=min, max=max, value=value, label=label, hide_label=hide_label, animated=animated, striped=striped, color=color, loading_state=loading_state) + if (length(props) > 0) { + props <- props[!vapply(props, is.null, logical(1))] + } + component <- list( + props = props, + type = 'Progress', + namespace = 'dash_bootstrap_components', + propNames = c('children', 'id', 'style', 'class_name', 'className', 'key', 'bar', 'min', 'max', 'value', 'label', 'hide_label', 'animated', 'striped', 'color', 'loading_state'), + package = 'dashBootstrapComponents' + ) + + structure(component, class = c('dash_component', 'list')) +} + +# AUTO GENERATED FILE - DO NOT EDIT + +#' @export +dbcRadioButton <- function(id=NULL, class_name=NULL, className=NULL, style=NULL, input_style=NULL, inputStyle=NULL, input_class_name=NULL, inputClassName=NULL, label=NULL, label_id=NULL, label_style=NULL, labelStyle=NULL, label_class_name=NULL, labelClassName=NULL, name=NULL, value=NULL, disabled=NULL, loading_state=NULL, persistence=NULL, persisted_props=NULL, persistence_type=NULL) { + + props <- list(id=id, class_name=class_name, className=className, style=style, input_style=input_style, inputStyle=inputStyle, input_class_name=input_class_name, inputClassName=inputClassName, label=label, label_id=label_id, label_style=label_style, labelStyle=labelStyle, label_class_name=label_class_name, labelClassName=labelClassName, name=name, value=value, disabled=disabled, loading_state=loading_state, persistence=persistence, persisted_props=persisted_props, persistence_type=persistence_type) + if (length(props) > 0) { + props <- props[!vapply(props, is.null, logical(1))] + } + component <- list( + props = props, + type = 'RadioButton', + namespace = 'dash_bootstrap_components', + propNames = c('id', 'class_name', 'className', 'style', 'input_style', 'inputStyle', 'input_class_name', 'inputClassName', 'label', 'label_id', 'label_style', 'labelStyle', 'label_class_name', 'labelClassName', 'name', 'value', 'disabled', 'loading_state', 'persistence', 'persisted_props', 'persistence_type'), + package = 'dashBootstrapComponents' + ) + + structure(component, class = c('dash_component', 'list')) +} + +# AUTO GENERATED FILE - DO NOT EDIT + +#' @export +dbcRadioItems <- function(id=NULL, key=NULL, options=NULL, value=NULL, style=NULL, class_name=NULL, className=NULL, input_style=NULL, inputStyle=NULL, input_checked_style=NULL, inputCheckedStyle=NULL, input_class_name=NULL, inputClassName=NULL, input_checked_class_name=NULL, inputCheckedClassName=NULL, label_style=NULL, labelStyle=NULL, label_checked_style=NULL, labelCheckedStyle=NULL, label_class_name=NULL, labelClassName=NULL, label_checked_class_name=NULL, labelCheckedClassName=NULL, inline=NULL, switch=NULL, loading_state=NULL, persistence=NULL, persisted_props=NULL, persistence_type=NULL, name=NULL) { + + props <- list(id=id, key=key, options=options, value=value, style=style, class_name=class_name, className=className, input_style=input_style, inputStyle=inputStyle, input_checked_style=input_checked_style, inputCheckedStyle=inputCheckedStyle, input_class_name=input_class_name, inputClassName=inputClassName, input_checked_class_name=input_checked_class_name, inputCheckedClassName=inputCheckedClassName, label_style=label_style, labelStyle=labelStyle, label_checked_style=label_checked_style, labelCheckedStyle=labelCheckedStyle, label_class_name=label_class_name, labelClassName=labelClassName, label_checked_class_name=label_checked_class_name, labelCheckedClassName=labelCheckedClassName, inline=inline, switch=switch, loading_state=loading_state, persistence=persistence, persisted_props=persisted_props, persistence_type=persistence_type, name=name) + if (length(props) > 0) { + props <- props[!vapply(props, is.null, logical(1))] + } + component <- list( + props = props, + type = 'RadioItems', + namespace = 'dash_bootstrap_components', + propNames = c('id', 'key', 'options', 'value', 'style', 'class_name', 'className', 'input_style', 'inputStyle', 'input_checked_style', 'inputCheckedStyle', 'input_class_name', 'inputClassName', 'input_checked_class_name', 'inputCheckedClassName', 'label_style', 'labelStyle', 'label_checked_style', 'labelCheckedStyle', 'label_class_name', 'labelClassName', 'label_checked_class_name', 'labelCheckedClassName', 'inline', 'switch', 'loading_state', 'persistence', 'persisted_props', 'persistence_type', 'name'), + package = 'dashBootstrapComponents' + ) + + structure(component, class = c('dash_component', 'list')) +} + +# AUTO GENERATED FILE - DO NOT EDIT + +#' @export +dbcRow <- function(children=NULL, id=NULL, style=NULL, class_name=NULL, className=NULL, key=NULL, align=NULL, justify=NULL, loading_state=NULL) { + + props <- list(children=children, id=id, style=style, class_name=class_name, className=className, key=key, align=align, justify=justify, loading_state=loading_state) + if (length(props) > 0) { + props <- props[!vapply(props, is.null, logical(1))] + } + component <- list( + props = props, + type = 'Row', + namespace = 'dash_bootstrap_components', + propNames = c('children', 'id', 'style', 'class_name', 'className', 'key', 'align', 'justify', 'loading_state'), + package = 'dashBootstrapComponents' + ) + + structure(component, class = c('dash_component', 'list')) +} + +# AUTO GENERATED FILE - DO NOT EDIT + +#' @export +dbcSelect <- function(id=NULL, style=NULL, class_name=NULL, className=NULL, key=NULL, placeholder=NULL, value=NULL, options=NULL, disabled=NULL, required=NULL, valid=NULL, invalid=NULL, size=NULL, html_size=NULL, persistence=NULL, persisted_props=NULL, persistence_type=NULL, name=NULL) { + + props <- list(id=id, style=style, class_name=class_name, className=className, key=key, placeholder=placeholder, value=value, options=options, disabled=disabled, required=required, valid=valid, invalid=invalid, size=size, html_size=html_size, persistence=persistence, persisted_props=persisted_props, persistence_type=persistence_type, name=name) + if (length(props) > 0) { + props <- props[!vapply(props, is.null, logical(1))] + } + component <- list( + props = props, + type = 'Select', + namespace = 'dash_bootstrap_components', + propNames = c('id', 'style', 'class_name', 'className', 'key', 'placeholder', 'value', 'options', 'disabled', 'required', 'valid', 'invalid', 'size', 'html_size', 'persistence', 'persisted_props', 'persistence_type', 'name'), + package = 'dashBootstrapComponents' + ) + + structure(component, class = c('dash_component', 'list')) +} + +# AUTO GENERATED FILE - DO NOT EDIT + +#' @export +dbcSpinner <- function(children=NULL, id=NULL, fullscreen_style=NULL, spinner_style=NULL, fullscreen_class_name=NULL, fullscreenClassName=NULL, spinner_class_name=NULL, spinnerClassName=NULL, color=NULL, type=NULL, size=NULL, fullscreen=NULL, delay_hide=NULL, delay_show=NULL, show_initially=NULL) { + + props <- list(children=children, id=id, fullscreen_style=fullscreen_style, spinner_style=spinner_style, fullscreen_class_name=fullscreen_class_name, fullscreenClassName=fullscreenClassName, spinner_class_name=spinner_class_name, spinnerClassName=spinnerClassName, color=color, type=type, size=size, fullscreen=fullscreen, delay_hide=delay_hide, delay_show=delay_show, show_initially=show_initially) + if (length(props) > 0) { + props <- props[!vapply(props, is.null, logical(1))] + } + component <- list( + props = props, + type = 'Spinner', + namespace = 'dash_bootstrap_components', + propNames = c('children', 'id', 'fullscreen_style', 'spinner_style', 'fullscreen_class_name', 'fullscreenClassName', 'spinner_class_name', 'spinnerClassName', 'color', 'type', 'size', 'fullscreen', 'delay_hide', 'delay_show', 'show_initially'), + package = 'dashBootstrapComponents' + ) + + structure(component, class = c('dash_component', 'list')) +} + +# AUTO GENERATED FILE - DO NOT EDIT + +#' @export +dbcSwitch <- function(id=NULL, class_name=NULL, className=NULL, style=NULL, input_style=NULL, inputStyle=NULL, input_class_name=NULL, inputClassName=NULL, label=NULL, label_id=NULL, label_style=NULL, labelStyle=NULL, label_class_name=NULL, labelClassName=NULL, name=NULL, value=NULL, disabled=NULL, loading_state=NULL, persistence=NULL, persisted_props=NULL, persistence_type=NULL) { + + props <- list(id=id, class_name=class_name, className=className, style=style, input_style=input_style, inputStyle=inputStyle, input_class_name=input_class_name, inputClassName=inputClassName, label=label, label_id=label_id, label_style=label_style, labelStyle=labelStyle, label_class_name=label_class_name, labelClassName=labelClassName, name=name, value=value, disabled=disabled, loading_state=loading_state, persistence=persistence, persisted_props=persisted_props, persistence_type=persistence_type) + if (length(props) > 0) { + props <- props[!vapply(props, is.null, logical(1))] + } + component <- list( + props = props, + type = 'Switch', + namespace = 'dash_bootstrap_components', + propNames = c('id', 'class_name', 'className', 'style', 'input_style', 'inputStyle', 'input_class_name', 'inputClassName', 'label', 'label_id', 'label_style', 'labelStyle', 'label_class_name', 'labelClassName', 'name', 'value', 'disabled', 'loading_state', 'persistence', 'persisted_props', 'persistence_type'), + package = 'dashBootstrapComponents' + ) + + structure(component, class = c('dash_component', 'list')) +} + +# AUTO GENERATED FILE - DO NOT EDIT + +#' @export +dbcTab <- function(children=NULL, id=NULL, style=NULL, tab_style=NULL, active_tab_style=NULL, label_style=NULL, active_label_style=NULL, class_name=NULL, className=NULL, tab_class_name=NULL, tabClassName=NULL, active_tab_class_name=NULL, activeTabClassName=NULL, label_class_name=NULL, labelClassName=NULL, active_label_class_name=NULL, activeLabelClassName=NULL, key=NULL, label=NULL, tab_id=NULL, disabled=NULL, loading_state=NULL) { + + props <- list(children=children, id=id, style=style, tab_style=tab_style, active_tab_style=active_tab_style, label_style=label_style, active_label_style=active_label_style, class_name=class_name, className=className, tab_class_name=tab_class_name, tabClassName=tabClassName, active_tab_class_name=active_tab_class_name, activeTabClassName=activeTabClassName, label_class_name=label_class_name, labelClassName=labelClassName, active_label_class_name=active_label_class_name, activeLabelClassName=activeLabelClassName, key=key, label=label, tab_id=tab_id, disabled=disabled, loading_state=loading_state) + if (length(props) > 0) { + props <- props[!vapply(props, is.null, logical(1))] + } + component <- list( + props = props, + type = 'Tab', + namespace = 'dash_bootstrap_components', + propNames = c('children', 'id', 'style', 'tab_style', 'active_tab_style', 'label_style', 'active_label_style', 'class_name', 'className', 'tab_class_name', 'tabClassName', 'active_tab_class_name', 'activeTabClassName', 'label_class_name', 'labelClassName', 'active_label_class_name', 'activeLabelClassName', 'key', 'label', 'tab_id', 'disabled', 'loading_state'), + package = 'dashBootstrapComponents' + ) + + structure(component, class = c('dash_component', 'list')) +} + +# AUTO GENERATED FILE - DO NOT EDIT + +#' @export +dbcTable <- function(children=NULL, id=NULL, style=NULL, class_name=NULL, className=NULL, key=NULL, size=NULL, bordered=NULL, borderless=NULL, striped=NULL, color=NULL, dark=NULL, hover=NULL, responsive=NULL, loading_state=NULL) { + + props <- list(children=children, id=id, style=style, class_name=class_name, className=className, key=key, size=size, bordered=bordered, borderless=borderless, striped=striped, color=color, dark=dark, hover=hover, responsive=responsive, loading_state=loading_state) + if (length(props) > 0) { + props <- props[!vapply(props, is.null, logical(1))] + } + component <- list( + props = props, + type = 'Table', + namespace = 'dash_bootstrap_components', + propNames = c('children', 'id', 'style', 'class_name', 'className', 'key', 'size', 'bordered', 'borderless', 'striped', 'color', 'dark', 'hover', 'responsive', 'loading_state'), + package = 'dashBootstrapComponents' + ) + + structure(component, class = c('dash_component', 'list')) +} + +# AUTO GENERATED FILE - DO NOT EDIT + +#' @export +dbcTabs <- function(children=NULL, id=NULL, style=NULL, class_name=NULL, className=NULL, key=NULL, active_tab=NULL, loading_state=NULL, persistence=NULL, persisted_props=NULL, persistence_type=NULL) { + + props <- list(children=children, id=id, style=style, class_name=class_name, className=className, key=key, active_tab=active_tab, loading_state=loading_state, persistence=persistence, persisted_props=persisted_props, persistence_type=persistence_type) + if (length(props) > 0) { + props <- props[!vapply(props, is.null, logical(1))] + } + component <- list( + props = props, + type = 'Tabs', + namespace = 'dash_bootstrap_components', + propNames = c('children', 'id', 'style', 'class_name', 'className', 'key', 'active_tab', 'loading_state', 'persistence', 'persisted_props', 'persistence_type'), + package = 'dashBootstrapComponents' + ) + + structure(component, class = c('dash_component', 'list')) +} + +# AUTO GENERATED FILE - DO NOT EDIT + +#' @export +dbcTextarea <- function(id=NULL, key=NULL, value=NULL, autofocus=NULL, autoFocus=NULL, cols=NULL, disabled=NULL, form=NULL, maxlength=NULL, maxLength=NULL, minlength=NULL, minLength=NULL, name=NULL, placeholder=NULL, readonly=NULL, readOnly=NULL, required=NULL, rows=NULL, wrap=NULL, accesskey=NULL, accessKey=NULL, class_name=NULL, className=NULL, contenteditable=NULL, contentEditable=NULL, contextmenu=NULL, contextMenu=NULL, dir=NULL, draggable=NULL, hidden=NULL, lang=NULL, spellcheck=NULL, spellCheck=NULL, style=NULL, tabindex=NULL, tabIndex=NULL, title=NULL, size=NULL, valid=NULL, invalid=NULL, n_blur=NULL, n_blur_timestamp=NULL, n_submit=NULL, n_submit_timestamp=NULL, n_clicks=NULL, n_clicks_timestamp=NULL, debounce=NULL, loading_state=NULL, persistence=NULL, persisted_props=NULL, persistence_type=NULL) { + + props <- list(id=id, key=key, value=value, autofocus=autofocus, autoFocus=autoFocus, cols=cols, disabled=disabled, form=form, maxlength=maxlength, maxLength=maxLength, minlength=minlength, minLength=minLength, name=name, placeholder=placeholder, readonly=readonly, readOnly=readOnly, required=required, rows=rows, wrap=wrap, accesskey=accesskey, accessKey=accessKey, class_name=class_name, className=className, contenteditable=contenteditable, contentEditable=contentEditable, contextmenu=contextmenu, contextMenu=contextMenu, dir=dir, draggable=draggable, hidden=hidden, lang=lang, spellcheck=spellcheck, spellCheck=spellCheck, style=style, tabindex=tabindex, tabIndex=tabIndex, title=title, size=size, valid=valid, invalid=invalid, n_blur=n_blur, n_blur_timestamp=n_blur_timestamp, n_submit=n_submit, n_submit_timestamp=n_submit_timestamp, n_clicks=n_clicks, n_clicks_timestamp=n_clicks_timestamp, debounce=debounce, loading_state=loading_state, persistence=persistence, persisted_props=persisted_props, persistence_type=persistence_type) + if (length(props) > 0) { + props <- props[!vapply(props, is.null, logical(1))] + } + component <- list( + props = props, + type = 'Textarea', + namespace = 'dash_bootstrap_components', + propNames = c('id', 'key', 'value', 'autofocus', 'autoFocus', 'cols', 'disabled', 'form', 'maxlength', 'maxLength', 'minlength', 'minLength', 'name', 'placeholder', 'readonly', 'readOnly', 'required', 'rows', 'wrap', 'accesskey', 'accessKey', 'class_name', 'className', 'contenteditable', 'contentEditable', 'contextmenu', 'contextMenu', 'dir', 'draggable', 'hidden', 'lang', 'spellcheck', 'spellCheck', 'style', 'tabindex', 'tabIndex', 'title', 'size', 'valid', 'invalid', 'n_blur', 'n_blur_timestamp', 'n_submit', 'n_submit_timestamp', 'n_clicks', 'n_clicks_timestamp', 'debounce', 'loading_state', 'persistence', 'persisted_props', 'persistence_type'), + package = 'dashBootstrapComponents' + ) + + structure(component, class = c('dash_component', 'list')) +} + +# AUTO GENERATED FILE - DO NOT EDIT + +#' @export +dbcToast <- function(children=NULL, id=NULL, style=NULL, class_name=NULL, className=NULL, header_style=NULL, header_class_name=NULL, headerClassName=NULL, body_style=NULL, body_class_name=NULL, bodyClassName=NULL, tag=NULL, is_open=NULL, key=NULL, header=NULL, dismissable=NULL, duration=NULL, n_dismiss=NULL, n_dismiss_timestamp=NULL, icon=NULL, color=NULL, loading_state=NULL) { + + props <- list(children=children, id=id, style=style, class_name=class_name, className=className, header_style=header_style, header_class_name=header_class_name, headerClassName=headerClassName, body_style=body_style, body_class_name=body_class_name, bodyClassName=bodyClassName, tag=tag, is_open=is_open, key=key, header=header, dismissable=dismissable, duration=duration, n_dismiss=n_dismiss, n_dismiss_timestamp=n_dismiss_timestamp, icon=icon, color=color, loading_state=loading_state) + if (length(props) > 0) { + props <- props[!vapply(props, is.null, logical(1))] + } + component <- list( + props = props, + type = 'Toast', + namespace = 'dash_bootstrap_components', + propNames = c('children', 'id', 'style', 'class_name', 'className', 'header_style', 'header_class_name', 'headerClassName', 'body_style', 'body_class_name', 'bodyClassName', 'tag', 'is_open', 'key', 'header', 'dismissable', 'duration', 'n_dismiss', 'n_dismiss_timestamp', 'icon', 'color', 'loading_state'), + package = 'dashBootstrapComponents' + ) + + structure(component, class = c('dash_component', 'list')) +} + +# AUTO GENERATED FILE - DO NOT EDIT + +#' @export +dbcTooltip <- function(children=NULL, id=NULL, style=NULL, class_name=NULL, className=NULL, key=NULL, target=NULL, placement=NULL, flip=NULL, delay=NULL, loading_state=NULL) { + + props <- list(children=children, id=id, style=style, class_name=class_name, className=className, key=key, target=target, placement=placement, flip=flip, delay=delay, loading_state=loading_state) + if (length(props) > 0) { + props <- props[!vapply(props, is.null, logical(1))] + } + component <- list( + props = props, + type = 'Tooltip', + namespace = 'dash_bootstrap_components', + propNames = c('children', 'id', 'style', 'class_name', 'className', 'key', 'target', 'placement', 'flip', 'delay', 'loading_state'), + package = 'dashBootstrapComponents' + ) + + structure(component, class = c('dash_component', 'list')) +} + +#' dbcIcons +#' @description +#' A list of contextually colored icon styles that can be added to Dash Bootstrap Components. +#' @export +dbcIcons <- list( + BOOTSTRAP = "https://cdn.jsdelivr.net/npm/bootstrap-icons@1.5.0/font/bootstrap-icons.css", + FONT_AWESOME = "https://use.fontawesome.com/releases/v5.15.4/css/all.css" +) + +.prependBootswatch <- function(suffix) { + BOOTSWATCH_BASE <- "https://cdn.jsdelivr.net/npm/bootswatch@5.1.0/dist/" + return(paste(BOOTSWATCH_BASE, suffix, sep="")) +} + +#' dbcThemes +#' @description +#' Externally hosted themes that can be passed to the Dash app with `app %>% add_stylesheet()`. +#' @export +dbcThemes <- list( + BOOTSTRAP = "https://cdn.jsdelivr.net/npm/bootstrap@5.1.0/dist/css/bootstrap.min.css", + GRID = "https://cdn.jsdelivr.net/npm/bootstrap@5.1.0/dist/css/bootstrap-grid.min.css", + CERULEAN = .prependBootswatch("cerulean/bootstrap.min.css"), + COSMO = .prependBootswatch("cosmo/bootstrap.min.css"), + CYBORG = .prependBootswatch("cyborg/bootstrap.min.css"), + DARKLY = .prependBootswatch("darkly/bootstrap.min.css"), + FLATLY = .prependBootswatch("flatly/bootstrap.min.css"), + JOURNAL = .prependBootswatch("journal/bootstrap.min.css"), + LITERA = .prependBootswatch("litera/bootstrap.min.css"), + LUMEN = .prependBootswatch("lumen/bootstrap.min.css"), + LUX = .prependBootswatch("lux/bootstrap.min.css"), + MATERIA = .prependBootswatch("materia/bootstrap.min.css"), + MINTY = .prependBootswatch("minty/bootstrap.min.css"), + MORPH = .prependBootswatch("morph/bootstrap.min.css"), + PULSE = .prependBootswatch("pulse/bootstrap.min.css"), + QUARTZ = .prependBootswatch("quartz/bootstrap.min.css"), + SANDSTONE = .prependBootswatch("sandstone/bootstrap.min.css"), + SIMPLEX = .prependBootswatch("simplex/bootstrap.min.css"), + SKETCHY = .prependBootswatch("sketchy/bootstrap.min.css"), + SLATE = .prependBootswatch("slate/bootstrap.min.css"), + SOLAR = .prependBootswatch("solar/bootstrap.min.css"), + SPACELAB = .prependBootswatch("spacelab/bootstrap.min.css"), + SUPERHERO = .prependBootswatch("superhero/bootstrap.min.css"), + UNITED = .prependBootswatch("united/bootstrap.min.css"), + VAPOR = .prependBootswatch("vapor/bootstrap.min.css"), + YETI = .prependBootswatch("yeti/bootstrap.min.css"), + ZEPHYR = .prependBootswatch("zephyr/bootstrap.min.css") +) diff --git a/R/dashCoreComponents.R b/R/dashCoreComponents.R new file mode 100644 index 00000000..298cf62a --- /dev/null +++ b/R/dashCoreComponents.R @@ -0,0 +1,499 @@ +# AUTO GENERATED FILE - DO NOT EDIT + +#' @export +dccChecklist <- function(id=NULL, options=NULL, value=NULL, className=NULL, style=NULL, inputStyle=NULL, inputClassName=NULL, labelStyle=NULL, labelClassName=NULL, loading_state=NULL, persistence=NULL, persisted_props=NULL, persistence_type=NULL, inline=NULL) { + + props <- list(id=id, options=options, value=value, className=className, style=style, inputStyle=inputStyle, inputClassName=inputClassName, labelStyle=labelStyle, labelClassName=labelClassName, loading_state=loading_state, persistence=persistence, persisted_props=persisted_props, persistence_type=persistence_type, inline=inline) + if (length(props) > 0) { + props <- props[!vapply(props, is.null, logical(1))] + } + component <- list( + props = props, + type = 'Checklist', + namespace = 'dash_core_components', + propNames = c('id', 'options', 'value', 'className', 'style', 'inputStyle', 'inputClassName', 'labelStyle', 'labelClassName', 'loading_state', 'persistence', 'persisted_props', 'persistence_type', 'inline'), + package = 'dashCoreComponents' + ) + + structure(component, class = c('dash_component', 'list')) +} + +# AUTO GENERATED FILE - DO NOT EDIT + +#' @export +dccClipboard <- function(id=NULL, target_id=NULL, content=NULL, n_clicks=NULL, title=NULL, style=NULL, className=NULL, loading_state=NULL) { + + props <- list(id=id, target_id=target_id, content=content, n_clicks=n_clicks, title=title, style=style, className=className, loading_state=loading_state) + if (length(props) > 0) { + props <- props[!vapply(props, is.null, logical(1))] + } + component <- list( + props = props, + type = 'Clipboard', + namespace = 'dash_core_components', + propNames = c('id', 'target_id', 'content', 'n_clicks', 'title', 'style', 'className', 'loading_state'), + package = 'dashCoreComponents' + ) + + structure(component, class = c('dash_component', 'list')) +} + +# AUTO GENERATED FILE - DO NOT EDIT + +#' @export +dccConfirmDialog <- function(id=NULL, message=NULL, submit_n_clicks=NULL, submit_n_clicks_timestamp=NULL, cancel_n_clicks=NULL, cancel_n_clicks_timestamp=NULL, displayed=NULL) { + + props <- list(id=id, message=message, submit_n_clicks=submit_n_clicks, submit_n_clicks_timestamp=submit_n_clicks_timestamp, cancel_n_clicks=cancel_n_clicks, cancel_n_clicks_timestamp=cancel_n_clicks_timestamp, displayed=displayed) + if (length(props) > 0) { + props <- props[!vapply(props, is.null, logical(1))] + } + component <- list( + props = props, + type = 'ConfirmDialog', + namespace = 'dash_core_components', + propNames = c('id', 'message', 'submit_n_clicks', 'submit_n_clicks_timestamp', 'cancel_n_clicks', 'cancel_n_clicks_timestamp', 'displayed'), + package = 'dashCoreComponents' + ) + + structure(component, class = c('dash_component', 'list')) +} + +# AUTO GENERATED FILE - DO NOT EDIT + +#' @export +dccConfirmDialogProvider <- function(children=NULL, id=NULL, message=NULL, submit_n_clicks=NULL, submit_n_clicks_timestamp=NULL, cancel_n_clicks=NULL, cancel_n_clicks_timestamp=NULL, displayed=NULL, loading_state=NULL) { + + props <- list(children=children, id=id, message=message, submit_n_clicks=submit_n_clicks, submit_n_clicks_timestamp=submit_n_clicks_timestamp, cancel_n_clicks=cancel_n_clicks, cancel_n_clicks_timestamp=cancel_n_clicks_timestamp, displayed=displayed, loading_state=loading_state) + if (length(props) > 0) { + props <- props[!vapply(props, is.null, logical(1))] + } + component <- list( + props = props, + type = 'ConfirmDialogProvider', + namespace = 'dash_core_components', + propNames = c('children', 'id', 'message', 'submit_n_clicks', 'submit_n_clicks_timestamp', 'cancel_n_clicks', 'cancel_n_clicks_timestamp', 'displayed', 'loading_state'), + package = 'dashCoreComponents' + ) + + structure(component, class = c('dash_component', 'list')) +} + +# AUTO GENERATED FILE - DO NOT EDIT + +#' @export +dccDatePickerRange <- function(id=NULL, start_date=NULL, start_date_id=NULL, end_date_id=NULL, end_date=NULL, min_date_allowed=NULL, max_date_allowed=NULL, disabled_days=NULL, initial_visible_month=NULL, start_date_placeholder_text=NULL, end_date_placeholder_text=NULL, day_size=NULL, calendar_orientation=NULL, is_RTL=NULL, reopen_calendar_on_clear=NULL, number_of_months_shown=NULL, with_portal=NULL, with_full_screen_portal=NULL, first_day_of_week=NULL, minimum_nights=NULL, stay_open_on_select=NULL, show_outside_days=NULL, month_format=NULL, display_format=NULL, disabled=NULL, clearable=NULL, style=NULL, className=NULL, updatemode=NULL, loading_state=NULL, persistence=NULL, persisted_props=NULL, persistence_type=NULL) { + + props <- list(id=id, start_date=start_date, start_date_id=start_date_id, end_date_id=end_date_id, end_date=end_date, min_date_allowed=min_date_allowed, max_date_allowed=max_date_allowed, disabled_days=disabled_days, initial_visible_month=initial_visible_month, start_date_placeholder_text=start_date_placeholder_text, end_date_placeholder_text=end_date_placeholder_text, day_size=day_size, calendar_orientation=calendar_orientation, is_RTL=is_RTL, reopen_calendar_on_clear=reopen_calendar_on_clear, number_of_months_shown=number_of_months_shown, with_portal=with_portal, with_full_screen_portal=with_full_screen_portal, first_day_of_week=first_day_of_week, minimum_nights=minimum_nights, stay_open_on_select=stay_open_on_select, show_outside_days=show_outside_days, month_format=month_format, display_format=display_format, disabled=disabled, clearable=clearable, style=style, className=className, updatemode=updatemode, loading_state=loading_state, persistence=persistence, persisted_props=persisted_props, persistence_type=persistence_type) + if (length(props) > 0) { + props <- props[!vapply(props, is.null, logical(1))] + } + component <- list( + props = props, + type = 'DatePickerRange', + namespace = 'dash_core_components', + propNames = c('id', 'start_date', 'start_date_id', 'end_date_id', 'end_date', 'min_date_allowed', 'max_date_allowed', 'disabled_days', 'initial_visible_month', 'start_date_placeholder_text', 'end_date_placeholder_text', 'day_size', 'calendar_orientation', 'is_RTL', 'reopen_calendar_on_clear', 'number_of_months_shown', 'with_portal', 'with_full_screen_portal', 'first_day_of_week', 'minimum_nights', 'stay_open_on_select', 'show_outside_days', 'month_format', 'display_format', 'disabled', 'clearable', 'style', 'className', 'updatemode', 'loading_state', 'persistence', 'persisted_props', 'persistence_type'), + package = 'dashCoreComponents' + ) + + structure(component, class = c('dash_component', 'list')) +} + +# AUTO GENERATED FILE - DO NOT EDIT + +#' @export +dccDatePickerSingle <- function(id=NULL, date=NULL, min_date_allowed=NULL, max_date_allowed=NULL, disabled_days=NULL, initial_visible_month=NULL, day_size=NULL, calendar_orientation=NULL, is_RTL=NULL, placeholder=NULL, reopen_calendar_on_clear=NULL, number_of_months_shown=NULL, with_portal=NULL, with_full_screen_portal=NULL, first_day_of_week=NULL, stay_open_on_select=NULL, show_outside_days=NULL, month_format=NULL, display_format=NULL, disabled=NULL, clearable=NULL, style=NULL, className=NULL, loading_state=NULL, persistence=NULL, persisted_props=NULL, persistence_type=NULL) { + + props <- list(id=id, date=date, min_date_allowed=min_date_allowed, max_date_allowed=max_date_allowed, disabled_days=disabled_days, initial_visible_month=initial_visible_month, day_size=day_size, calendar_orientation=calendar_orientation, is_RTL=is_RTL, placeholder=placeholder, reopen_calendar_on_clear=reopen_calendar_on_clear, number_of_months_shown=number_of_months_shown, with_portal=with_portal, with_full_screen_portal=with_full_screen_portal, first_day_of_week=first_day_of_week, stay_open_on_select=stay_open_on_select, show_outside_days=show_outside_days, month_format=month_format, display_format=display_format, disabled=disabled, clearable=clearable, style=style, className=className, loading_state=loading_state, persistence=persistence, persisted_props=persisted_props, persistence_type=persistence_type) + if (length(props) > 0) { + props <- props[!vapply(props, is.null, logical(1))] + } + component <- list( + props = props, + type = 'DatePickerSingle', + namespace = 'dash_core_components', + propNames = c('id', 'date', 'min_date_allowed', 'max_date_allowed', 'disabled_days', 'initial_visible_month', 'day_size', 'calendar_orientation', 'is_RTL', 'placeholder', 'reopen_calendar_on_clear', 'number_of_months_shown', 'with_portal', 'with_full_screen_portal', 'first_day_of_week', 'stay_open_on_select', 'show_outside_days', 'month_format', 'display_format', 'disabled', 'clearable', 'style', 'className', 'loading_state', 'persistence', 'persisted_props', 'persistence_type'), + package = 'dashCoreComponents' + ) + + structure(component, class = c('dash_component', 'list')) +} + +# AUTO GENERATED FILE - DO NOT EDIT + +#' @export +dccDownload <- function(id=NULL, data=NULL, base64=NULL, type=NULL) { + + props <- list(id=id, data=data, base64=base64, type=type) + if (length(props) > 0) { + props <- props[!vapply(props, is.null, logical(1))] + } + component <- list( + props = props, + type = 'Download', + namespace = 'dash_core_components', + propNames = c('id', 'data', 'base64', 'type'), + package = 'dashCoreComponents' + ) + + structure(component, class = c('dash_component', 'list')) +} + +# AUTO GENERATED FILE - DO NOT EDIT + +#' @export +dccDropdown <- function(id=NULL, options=NULL, value=NULL, optionHeight=NULL, className=NULL, clearable=NULL, disabled=NULL, multi=NULL, placeholder=NULL, searchable=NULL, search_value=NULL, style=NULL, loading_state=NULL, persistence=NULL, persisted_props=NULL, persistence_type=NULL) { + + props <- list(id=id, options=options, value=value, optionHeight=optionHeight, className=className, clearable=clearable, disabled=disabled, multi=multi, placeholder=placeholder, searchable=searchable, search_value=search_value, style=style, loading_state=loading_state, persistence=persistence, persisted_props=persisted_props, persistence_type=persistence_type) + if (length(props) > 0) { + props <- props[!vapply(props, is.null, logical(1))] + } + component <- list( + props = props, + type = 'Dropdown', + namespace = 'dash_core_components', + propNames = c('id', 'options', 'value', 'optionHeight', 'className', 'clearable', 'disabled', 'multi', 'placeholder', 'searchable', 'search_value', 'style', 'loading_state', 'persistence', 'persisted_props', 'persistence_type'), + package = 'dashCoreComponents' + ) + + structure(component, class = c('dash_component', 'list')) +} + +# AUTO GENERATED FILE - DO NOT EDIT + +#' @export +dccGraph <- function(id=NULL, responsive=NULL, clickData=NULL, clickAnnotationData=NULL, hoverData=NULL, clear_on_unhover=NULL, selectedData=NULL, relayoutData=NULL, extendData=NULL, prependData=NULL, restyleData=NULL, figure=NULL, style=NULL, className=NULL, animate=NULL, animation_options=NULL, config=NULL, loading_state=NULL) { + + props <- list(id=id, responsive=responsive, clickData=clickData, clickAnnotationData=clickAnnotationData, hoverData=hoverData, clear_on_unhover=clear_on_unhover, selectedData=selectedData, relayoutData=relayoutData, extendData=extendData, prependData=prependData, restyleData=restyleData, figure=figure, style=style, className=className, animate=animate, animation_options=animation_options, config=config, loading_state=loading_state) + if (length(props) > 0) { + props <- props[!vapply(props, is.null, logical(1))] + } + component <- list( + props = props, + type = 'Graph', + namespace = 'dash_core_components', + propNames = c('id', 'responsive', 'clickData', 'clickAnnotationData', 'hoverData', 'clear_on_unhover', 'selectedData', 'relayoutData', 'extendData', 'prependData', 'restyleData', 'figure', 'style', 'className', 'animate', 'animation_options', 'config', 'loading_state'), + package = 'dashCoreComponents' + ) + + structure(component, class = c('dash_component', 'list')) +} + +# AUTO GENERATED FILE - DO NOT EDIT + +#' @export +dccInput <- function(id=NULL, value=NULL, style=NULL, className=NULL, debounce=NULL, type=NULL, autoComplete=NULL, autoFocus=NULL, disabled=NULL, inputMode=NULL, list=NULL, max=NULL, maxLength=NULL, min=NULL, minLength=NULL, multiple=NULL, name=NULL, pattern=NULL, placeholder=NULL, readOnly=NULL, required=NULL, selectionDirection=NULL, selectionEnd=NULL, selectionStart=NULL, size=NULL, spellCheck=NULL, step=NULL, n_submit=NULL, n_submit_timestamp=NULL, n_blur=NULL, n_blur_timestamp=NULL, loading_state=NULL, persistence=NULL, persisted_props=NULL, persistence_type=NULL) { + + props <- list(id=id, value=value, style=style, className=className, debounce=debounce, type=type, autoComplete=autoComplete, autoFocus=autoFocus, disabled=disabled, inputMode=inputMode, list=list, max=max, maxLength=maxLength, min=min, minLength=minLength, multiple=multiple, name=name, pattern=pattern, placeholder=placeholder, readOnly=readOnly, required=required, selectionDirection=selectionDirection, selectionEnd=selectionEnd, selectionStart=selectionStart, size=size, spellCheck=spellCheck, step=step, n_submit=n_submit, n_submit_timestamp=n_submit_timestamp, n_blur=n_blur, n_blur_timestamp=n_blur_timestamp, loading_state=loading_state, persistence=persistence, persisted_props=persisted_props, persistence_type=persistence_type) + if (length(props) > 0) { + props <- props[!vapply(props, is.null, logical(1))] + } + component <- list( + props = props, + type = 'Input', + namespace = 'dash_core_components', + propNames = c('id', 'value', 'style', 'className', 'debounce', 'type', 'autoComplete', 'autoFocus', 'disabled', 'inputMode', 'list', 'max', 'maxLength', 'min', 'minLength', 'multiple', 'name', 'pattern', 'placeholder', 'readOnly', 'required', 'selectionDirection', 'selectionEnd', 'selectionStart', 'size', 'spellCheck', 'step', 'n_submit', 'n_submit_timestamp', 'n_blur', 'n_blur_timestamp', 'loading_state', 'persistence', 'persisted_props', 'persistence_type'), + package = 'dashCoreComponents' + ) + + structure(component, class = c('dash_component', 'list')) +} + +# AUTO GENERATED FILE - DO NOT EDIT + +#' @export +dccInterval <- function(id=NULL, interval=NULL, disabled=NULL, n_intervals=NULL, max_intervals=NULL) { + + props <- list(id=id, interval=interval, disabled=disabled, n_intervals=n_intervals, max_intervals=max_intervals) + if (length(props) > 0) { + props <- props[!vapply(props, is.null, logical(1))] + } + component <- list( + props = props, + type = 'Interval', + namespace = 'dash_core_components', + propNames = c('id', 'interval', 'disabled', 'n_intervals', 'max_intervals'), + package = 'dashCoreComponents' + ) + + structure(component, class = c('dash_component', 'list')) +} + +# AUTO GENERATED FILE - DO NOT EDIT + +#' @export +dccLink <- function(children=NULL, id=NULL, href=NULL, refresh=NULL, className=NULL, style=NULL, title=NULL, target=NULL, loading_state=NULL) { + + props <- list(children=children, id=id, href=href, refresh=refresh, className=className, style=style, title=title, target=target, loading_state=loading_state) + if (length(props) > 0) { + props <- props[!vapply(props, is.null, logical(1))] + } + component <- list( + props = props, + type = 'Link', + namespace = 'dash_core_components', + propNames = c('children', 'id', 'href', 'refresh', 'className', 'style', 'title', 'target', 'loading_state'), + package = 'dashCoreComponents' + ) + + structure(component, class = c('dash_component', 'list')) +} + +# AUTO GENERATED FILE - DO NOT EDIT + +#' @export +dccLoading <- function(children=NULL, id=NULL, type=NULL, fullscreen=NULL, debug=NULL, className=NULL, parent_className=NULL, style=NULL, parent_style=NULL, color=NULL, loading_state=NULL) { + + props <- list(children=children, id=id, type=type, fullscreen=fullscreen, debug=debug, className=className, parent_className=parent_className, style=style, parent_style=parent_style, color=color, loading_state=loading_state) + if (length(props) > 0) { + props <- props[!vapply(props, is.null, logical(1))] + } + component <- list( + props = props, + type = 'Loading', + namespace = 'dash_core_components', + propNames = c('children', 'id', 'type', 'fullscreen', 'debug', 'className', 'parent_className', 'style', 'parent_style', 'color', 'loading_state'), + package = 'dashCoreComponents' + ) + + structure(component, class = c('dash_component', 'list')) +} + +# AUTO GENERATED FILE - DO NOT EDIT + +#' @export +dccLocation <- function(id=NULL, pathname=NULL, search=NULL, hash=NULL, href=NULL, refresh=NULL) { + + props <- list(id=id, pathname=pathname, search=search, hash=hash, href=href, refresh=refresh) + if (length(props) > 0) { + props <- props[!vapply(props, is.null, logical(1))] + } + component <- list( + props = props, + type = 'Location', + namespace = 'dash_core_components', + propNames = c('id', 'pathname', 'search', 'hash', 'href', 'refresh'), + package = 'dashCoreComponents' + ) + + structure(component, class = c('dash_component', 'list')) +} + +# AUTO GENERATED FILE - DO NOT EDIT + +#' @export +dccLogoutButton <- function(id=NULL, label=NULL, logout_url=NULL, style=NULL, method=NULL, className=NULL, loading_state=NULL) { + + props <- list(id=id, label=label, logout_url=logout_url, style=style, method=method, className=className, loading_state=loading_state) + if (length(props) > 0) { + props <- props[!vapply(props, is.null, logical(1))] + } + component <- list( + props = props, + type = 'LogoutButton', + namespace = 'dash_core_components', + propNames = c('id', 'label', 'logout_url', 'style', 'method', 'className', 'loading_state'), + package = 'dashCoreComponents' + ) + + structure(component, class = c('dash_component', 'list')) +} + +# AUTO GENERATED FILE - DO NOT EDIT + +#' @export +dccMarkdown <- function(children=NULL, id=NULL, className=NULL, dangerously_allow_html=NULL, dedent=NULL, highlight_config=NULL, loading_state=NULL, style=NULL) { + + props <- list(children=children, id=id, className=className, dangerously_allow_html=dangerously_allow_html, dedent=dedent, highlight_config=highlight_config, loading_state=loading_state, style=style) + if (length(props) > 0) { + props <- props[!vapply(props, is.null, logical(1))] + } + component <- list( + props = props, + type = 'Markdown', + namespace = 'dash_core_components', + propNames = c('children', 'id', 'className', 'dangerously_allow_html', 'dedent', 'highlight_config', 'loading_state', 'style'), + package = 'dashCoreComponents' + ) + + structure(component, class = c('dash_component', 'list')) +} + +# AUTO GENERATED FILE - DO NOT EDIT + +#' @export +dccRadioItems <- function(id=NULL, options=NULL, value=NULL, style=NULL, className=NULL, inputStyle=NULL, inputClassName=NULL, labelStyle=NULL, labelClassName=NULL, loading_state=NULL, persistence=NULL, persisted_props=NULL, persistence_type=NULL, inline=NULL) { + + props <- list(id=id, options=options, value=value, style=style, className=className, inputStyle=inputStyle, inputClassName=inputClassName, labelStyle=labelStyle, labelClassName=labelClassName, loading_state=loading_state, persistence=persistence, persisted_props=persisted_props, persistence_type=persistence_type, inline=inline) + if (length(props) > 0) { + props <- props[!vapply(props, is.null, logical(1))] + } + component <- list( + props = props, + type = 'RadioItems', + namespace = 'dash_core_components', + propNames = c('id', 'options', 'value', 'style', 'className', 'inputStyle', 'inputClassName', 'labelStyle', 'labelClassName', 'loading_state', 'persistence', 'persisted_props', 'persistence_type', 'inline'), + package = 'dashCoreComponents' + ) + + structure(component, class = c('dash_component', 'list')) +} + +# AUTO GENERATED FILE - DO NOT EDIT + +#' @export +dccRangeSlider <- function(id=NULL, min=NULL, max=NULL, step=NULL, marks=NULL, value=NULL, drag_value=NULL, allowCross=NULL, className=NULL, count=NULL, disabled=NULL, dots=NULL, included=NULL, pushable=NULL, tooltip=NULL, vertical=NULL, verticalHeight=NULL, updatemode=NULL, loading_state=NULL, persistence=NULL, persisted_props=NULL, persistence_type=NULL) { + + props <- list(id=id, min=min, max=max, step=step, marks=marks, value=value, drag_value=drag_value, allowCross=allowCross, className=className, count=count, disabled=disabled, dots=dots, included=included, pushable=pushable, tooltip=tooltip, vertical=vertical, verticalHeight=verticalHeight, updatemode=updatemode, loading_state=loading_state, persistence=persistence, persisted_props=persisted_props, persistence_type=persistence_type) + if (length(props) > 0) { + props <- props[!vapply(props, is.null, logical(1))] + } + component <- list( + props = props, + type = 'RangeSlider', + namespace = 'dash_core_components', + propNames = c('id', 'min', 'max', 'step', 'marks', 'value', 'drag_value', 'allowCross', 'className', 'count', 'disabled', 'dots', 'included', 'pushable', 'tooltip', 'vertical', 'verticalHeight', 'updatemode', 'loading_state', 'persistence', 'persisted_props', 'persistence_type'), + package = 'dashCoreComponents' + ) + + structure(component, class = c('dash_component', 'list')) +} + +# AUTO GENERATED FILE - DO NOT EDIT + +#' @export +dccSlider <- function(id=NULL, min=NULL, max=NULL, step=NULL, marks=NULL, value=NULL, drag_value=NULL, className=NULL, disabled=NULL, dots=NULL, included=NULL, tooltip=NULL, vertical=NULL, verticalHeight=NULL, updatemode=NULL, loading_state=NULL, persistence=NULL, persisted_props=NULL, persistence_type=NULL) { + + props <- list(id=id, min=min, max=max, step=step, marks=marks, value=value, drag_value=drag_value, className=className, disabled=disabled, dots=dots, included=included, tooltip=tooltip, vertical=vertical, verticalHeight=verticalHeight, updatemode=updatemode, loading_state=loading_state, persistence=persistence, persisted_props=persisted_props, persistence_type=persistence_type) + if (length(props) > 0) { + props <- props[!vapply(props, is.null, logical(1))] + } + component <- list( + props = props, + type = 'Slider', + namespace = 'dash_core_components', + propNames = c('id', 'min', 'max', 'step', 'marks', 'value', 'drag_value', 'className', 'disabled', 'dots', 'included', 'tooltip', 'vertical', 'verticalHeight', 'updatemode', 'loading_state', 'persistence', 'persisted_props', 'persistence_type'), + package = 'dashCoreComponents' + ) + + structure(component, class = c('dash_component', 'list')) +} + +# AUTO GENERATED FILE - DO NOT EDIT + +#' @export +dccStore <- function(id=NULL, storage_type=NULL, data=NULL, clear_data=NULL, modified_timestamp=NULL) { + + props <- list(id=id, storage_type=storage_type, data=data, clear_data=clear_data, modified_timestamp=modified_timestamp) + if (length(props) > 0) { + props <- props[!vapply(props, is.null, logical(1))] + } + component <- list( + props = props, + type = 'Store', + namespace = 'dash_core_components', + propNames = c('id', 'storage_type', 'data', 'clear_data', 'modified_timestamp'), + package = 'dashCoreComponents' + ) + + structure(component, class = c('dash_component', 'list')) +} + +# AUTO GENERATED FILE - DO NOT EDIT + +#' @export +dccTab <- function(children=NULL, id=NULL, label=NULL, value=NULL, disabled=NULL, disabled_style=NULL, disabled_className=NULL, className=NULL, selected_className=NULL, style=NULL, selected_style=NULL, loading_state=NULL) { + + props <- list(children=children, id=id, label=label, value=value, disabled=disabled, disabled_style=disabled_style, disabled_className=disabled_className, className=className, selected_className=selected_className, style=style, selected_style=selected_style, loading_state=loading_state) + if (length(props) > 0) { + props <- props[!vapply(props, is.null, logical(1))] + } + component <- list( + props = props, + type = 'Tab', + namespace = 'dash_core_components', + propNames = c('children', 'id', 'label', 'value', 'disabled', 'disabled_style', 'disabled_className', 'className', 'selected_className', 'style', 'selected_style', 'loading_state'), + package = 'dashCoreComponents' + ) + + structure(component, class = c('dash_component', 'list')) +} + +# AUTO GENERATED FILE - DO NOT EDIT + +#' @export +dccTabs <- function(children=NULL, id=NULL, value=NULL, className=NULL, content_className=NULL, parent_className=NULL, style=NULL, parent_style=NULL, content_style=NULL, vertical=NULL, mobile_breakpoint=NULL, colors=NULL, loading_state=NULL, persistence=NULL, persisted_props=NULL, persistence_type=NULL) { + + props <- list(children=children, id=id, value=value, className=className, content_className=content_className, parent_className=parent_className, style=style, parent_style=parent_style, content_style=content_style, vertical=vertical, mobile_breakpoint=mobile_breakpoint, colors=colors, loading_state=loading_state, persistence=persistence, persisted_props=persisted_props, persistence_type=persistence_type) + if (length(props) > 0) { + props <- props[!vapply(props, is.null, logical(1))] + } + component <- list( + props = props, + type = 'Tabs', + namespace = 'dash_core_components', + propNames = c('children', 'id', 'value', 'className', 'content_className', 'parent_className', 'style', 'parent_style', 'content_style', 'vertical', 'mobile_breakpoint', 'colors', 'loading_state', 'persistence', 'persisted_props', 'persistence_type'), + package = 'dashCoreComponents' + ) + + structure(component, class = c('dash_component', 'list')) +} + +# AUTO GENERATED FILE - DO NOT EDIT + +#' @export +dccTextarea <- function(id=NULL, value=NULL, autoFocus=NULL, cols=NULL, disabled=NULL, form=NULL, maxLength=NULL, minLength=NULL, name=NULL, placeholder=NULL, readOnly=NULL, required=NULL, rows=NULL, wrap=NULL, accessKey=NULL, className=NULL, contentEditable=NULL, contextMenu=NULL, dir=NULL, draggable=NULL, hidden=NULL, lang=NULL, spellCheck=NULL, style=NULL, tabIndex=NULL, title=NULL, n_blur=NULL, n_blur_timestamp=NULL, n_clicks=NULL, n_clicks_timestamp=NULL, loading_state=NULL, persistence=NULL, persisted_props=NULL, persistence_type=NULL) { + + props <- list(id=id, value=value, autoFocus=autoFocus, cols=cols, disabled=disabled, form=form, maxLength=maxLength, minLength=minLength, name=name, placeholder=placeholder, readOnly=readOnly, required=required, rows=rows, wrap=wrap, accessKey=accessKey, className=className, contentEditable=contentEditable, contextMenu=contextMenu, dir=dir, draggable=draggable, hidden=hidden, lang=lang, spellCheck=spellCheck, style=style, tabIndex=tabIndex, title=title, n_blur=n_blur, n_blur_timestamp=n_blur_timestamp, n_clicks=n_clicks, n_clicks_timestamp=n_clicks_timestamp, loading_state=loading_state, persistence=persistence, persisted_props=persisted_props, persistence_type=persistence_type) + if (length(props) > 0) { + props <- props[!vapply(props, is.null, logical(1))] + } + component <- list( + props = props, + type = 'Textarea', + namespace = 'dash_core_components', + propNames = c('id', 'value', 'autoFocus', 'cols', 'disabled', 'form', 'maxLength', 'minLength', 'name', 'placeholder', 'readOnly', 'required', 'rows', 'wrap', 'accessKey', 'className', 'contentEditable', 'contextMenu', 'dir', 'draggable', 'hidden', 'lang', 'spellCheck', 'style', 'tabIndex', 'title', 'n_blur', 'n_blur_timestamp', 'n_clicks', 'n_clicks_timestamp', 'loading_state', 'persistence', 'persisted_props', 'persistence_type'), + package = 'dashCoreComponents' + ) + + structure(component, class = c('dash_component', 'list')) +} + +# AUTO GENERATED FILE - DO NOT EDIT + +#' @export +dccTooltip <- function(children=NULL, id=NULL, className=NULL, style=NULL, bbox=NULL, show=NULL, direction=NULL, border_color=NULL, background_color=NULL, loading_text=NULL, zindex=NULL, targetable=NULL, loading_state=NULL) { + + props <- list(children=children, id=id, className=className, style=style, bbox=bbox, show=show, direction=direction, border_color=border_color, background_color=background_color, loading_text=loading_text, zindex=zindex, targetable=targetable, loading_state=loading_state) + if (length(props) > 0) { + props <- props[!vapply(props, is.null, logical(1))] + } + component <- list( + props = props, + type = 'Tooltip', + namespace = 'dash_core_components', + propNames = c('children', 'id', 'className', 'style', 'bbox', 'show', 'direction', 'border_color', 'background_color', 'loading_text', 'zindex', 'targetable', 'loading_state'), + package = 'dashCoreComponents' + ) + + structure(component, class = c('dash_component', 'list')) +} + +# AUTO GENERATED FILE - DO NOT EDIT + +#' @export +dccUpload <- function(children=NULL, id=NULL, contents=NULL, filename=NULL, last_modified=NULL, accept=NULL, disabled=NULL, disable_click=NULL, max_size=NULL, min_size=NULL, multiple=NULL, className=NULL, className_active=NULL, className_reject=NULL, className_disabled=NULL, style=NULL, style_active=NULL, style_reject=NULL, style_disabled=NULL, loading_state=NULL) { + + props <- list(children=children, id=id, contents=contents, filename=filename, last_modified=last_modified, accept=accept, disabled=disabled, disable_click=disable_click, max_size=max_size, min_size=min_size, multiple=multiple, className=className, className_active=className_active, className_reject=className_reject, className_disabled=className_disabled, style=style, style_active=style_active, style_reject=style_reject, style_disabled=style_disabled, loading_state=loading_state) + if (length(props) > 0) { + props <- props[!vapply(props, is.null, logical(1))] + } + component <- list( + props = props, + type = 'Upload', + namespace = 'dash_core_components', + propNames = c('children', 'id', 'contents', 'filename', 'last_modified', 'accept', 'disabled', 'disable_click', 'max_size', 'min_size', 'multiple', 'className', 'className_active', 'className_reject', 'className_disabled', 'style', 'style_active', 'style_reject', 'style_disabled', 'loading_state'), + package = 'dashCoreComponents' + ) + + structure(component, class = c('dash_component', 'list')) +} diff --git a/R/dashHtmlComponents.R b/R/dashHtmlComponents.R new file mode 100644 index 00000000..cddfc4d7 --- /dev/null +++ b/R/dashHtmlComponents.R @@ -0,0 +1,2749 @@ +# AUTO GENERATED FILE - DO NOT EDIT + + +htmlA <- function(children=NULL, id=NULL, n_clicks=NULL, n_clicks_timestamp=NULL, key=NULL, role=NULL, download=NULL, href=NULL, hrefLang=NULL, media=NULL, referrerPolicy=NULL, rel=NULL, shape=NULL, target=NULL, accessKey=NULL, className=NULL, contentEditable=NULL, contextMenu=NULL, dir=NULL, draggable=NULL, hidden=NULL, lang=NULL, spellCheck=NULL, style=NULL, tabIndex=NULL, title=NULL, loading_state=NULL, ...) { + + wildcard_names = names(dash_assert_valid_wildcards(attrib = list('data', 'aria'), ...)) + + props <- list(children=children, id=id, n_clicks=n_clicks, n_clicks_timestamp=n_clicks_timestamp, key=key, role=role, download=download, href=href, hrefLang=hrefLang, media=media, referrerPolicy=referrerPolicy, rel=rel, shape=shape, target=target, accessKey=accessKey, className=className, contentEditable=contentEditable, contextMenu=contextMenu, dir=dir, draggable=draggable, hidden=hidden, lang=lang, spellCheck=spellCheck, style=style, tabIndex=tabIndex, title=title, loading_state=loading_state, ...) + if (length(props) > 0) { + props <- props[!vapply(props, is.null, logical(1))] + } + component <- list( + props = props, + type = 'A', + namespace = 'dash_html_components', + propNames = c('children', 'id', 'n_clicks', 'n_clicks_timestamp', 'key', 'role', 'download', 'href', 'hrefLang', 'media', 'referrerPolicy', 'rel', 'shape', 'target', 'accessKey', 'className', 'contentEditable', 'contextMenu', 'dir', 'draggable', 'hidden', 'lang', 'spellCheck', 'style', 'tabIndex', 'title', 'loading_state', wildcard_names), + package = 'dashHtmlComponents' + ) + + structure(component, class = c('dash_component', 'list')) +} + +# AUTO GENERATED FILE - DO NOT EDIT + + +htmlAbbr <- function(children=NULL, id=NULL, n_clicks=NULL, n_clicks_timestamp=NULL, key=NULL, role=NULL, accessKey=NULL, className=NULL, contentEditable=NULL, contextMenu=NULL, dir=NULL, draggable=NULL, hidden=NULL, lang=NULL, spellCheck=NULL, style=NULL, tabIndex=NULL, title=NULL, loading_state=NULL, ...) { + + wildcard_names = names(dash_assert_valid_wildcards(attrib = list('data', 'aria'), ...)) + + props <- list(children=children, id=id, n_clicks=n_clicks, n_clicks_timestamp=n_clicks_timestamp, key=key, role=role, accessKey=accessKey, className=className, contentEditable=contentEditable, contextMenu=contextMenu, dir=dir, draggable=draggable, hidden=hidden, lang=lang, spellCheck=spellCheck, style=style, tabIndex=tabIndex, title=title, loading_state=loading_state, ...) + if (length(props) > 0) { + props <- props[!vapply(props, is.null, logical(1))] + } + component <- list( + props = props, + type = 'Abbr', + namespace = 'dash_html_components', + propNames = c('children', 'id', 'n_clicks', 'n_clicks_timestamp', 'key', 'role', 'accessKey', 'className', 'contentEditable', 'contextMenu', 'dir', 'draggable', 'hidden', 'lang', 'spellCheck', 'style', 'tabIndex', 'title', 'loading_state', wildcard_names), + package = 'dashHtmlComponents' + ) + + structure(component, class = c('dash_component', 'list')) +} + +# AUTO GENERATED FILE - DO NOT EDIT + + +htmlAcronym <- function(children=NULL, id=NULL, n_clicks=NULL, n_clicks_timestamp=NULL, key=NULL, role=NULL, accessKey=NULL, className=NULL, contentEditable=NULL, contextMenu=NULL, dir=NULL, draggable=NULL, hidden=NULL, lang=NULL, spellCheck=NULL, style=NULL, tabIndex=NULL, title=NULL, loading_state=NULL, ...) { + + wildcard_names = names(dash_assert_valid_wildcards(attrib = list('data', 'aria'), ...)) + + props <- list(children=children, id=id, n_clicks=n_clicks, n_clicks_timestamp=n_clicks_timestamp, key=key, role=role, accessKey=accessKey, className=className, contentEditable=contentEditable, contextMenu=contextMenu, dir=dir, draggable=draggable, hidden=hidden, lang=lang, spellCheck=spellCheck, style=style, tabIndex=tabIndex, title=title, loading_state=loading_state, ...) + if (length(props) > 0) { + props <- props[!vapply(props, is.null, logical(1))] + } + component <- list( + props = props, + type = 'Acronym', + namespace = 'dash_html_components', + propNames = c('children', 'id', 'n_clicks', 'n_clicks_timestamp', 'key', 'role', 'accessKey', 'className', 'contentEditable', 'contextMenu', 'dir', 'draggable', 'hidden', 'lang', 'spellCheck', 'style', 'tabIndex', 'title', 'loading_state', wildcard_names), + package = 'dashHtmlComponents' + ) + + structure(component, class = c('dash_component', 'list')) +} + +# AUTO GENERATED FILE - DO NOT EDIT + + +htmlAddress <- function(children=NULL, id=NULL, n_clicks=NULL, n_clicks_timestamp=NULL, key=NULL, role=NULL, accessKey=NULL, className=NULL, contentEditable=NULL, contextMenu=NULL, dir=NULL, draggable=NULL, hidden=NULL, lang=NULL, spellCheck=NULL, style=NULL, tabIndex=NULL, title=NULL, loading_state=NULL, ...) { + + wildcard_names = names(dash_assert_valid_wildcards(attrib = list('data', 'aria'), ...)) + + props <- list(children=children, id=id, n_clicks=n_clicks, n_clicks_timestamp=n_clicks_timestamp, key=key, role=role, accessKey=accessKey, className=className, contentEditable=contentEditable, contextMenu=contextMenu, dir=dir, draggable=draggable, hidden=hidden, lang=lang, spellCheck=spellCheck, style=style, tabIndex=tabIndex, title=title, loading_state=loading_state, ...) + if (length(props) > 0) { + props <- props[!vapply(props, is.null, logical(1))] + } + component <- list( + props = props, + type = 'Address', + namespace = 'dash_html_components', + propNames = c('children', 'id', 'n_clicks', 'n_clicks_timestamp', 'key', 'role', 'accessKey', 'className', 'contentEditable', 'contextMenu', 'dir', 'draggable', 'hidden', 'lang', 'spellCheck', 'style', 'tabIndex', 'title', 'loading_state', wildcard_names), + package = 'dashHtmlComponents' + ) + + structure(component, class = c('dash_component', 'list')) +} + +# AUTO GENERATED FILE - DO NOT EDIT + + +htmlArea <- function(children=NULL, id=NULL, n_clicks=NULL, n_clicks_timestamp=NULL, key=NULL, role=NULL, alt=NULL, coords=NULL, download=NULL, href=NULL, hrefLang=NULL, media=NULL, referrerPolicy=NULL, rel=NULL, shape=NULL, target=NULL, accessKey=NULL, className=NULL, contentEditable=NULL, contextMenu=NULL, dir=NULL, draggable=NULL, hidden=NULL, lang=NULL, spellCheck=NULL, style=NULL, tabIndex=NULL, title=NULL, loading_state=NULL, ...) { + + wildcard_names = names(dash_assert_valid_wildcards(attrib = list('data', 'aria'), ...)) + + props <- list(children=children, id=id, n_clicks=n_clicks, n_clicks_timestamp=n_clicks_timestamp, key=key, role=role, alt=alt, coords=coords, download=download, href=href, hrefLang=hrefLang, media=media, referrerPolicy=referrerPolicy, rel=rel, shape=shape, target=target, accessKey=accessKey, className=className, contentEditable=contentEditable, contextMenu=contextMenu, dir=dir, draggable=draggable, hidden=hidden, lang=lang, spellCheck=spellCheck, style=style, tabIndex=tabIndex, title=title, loading_state=loading_state, ...) + if (length(props) > 0) { + props <- props[!vapply(props, is.null, logical(1))] + } + component <- list( + props = props, + type = 'Area', + namespace = 'dash_html_components', + propNames = c('children', 'id', 'n_clicks', 'n_clicks_timestamp', 'key', 'role', 'alt', 'coords', 'download', 'href', 'hrefLang', 'media', 'referrerPolicy', 'rel', 'shape', 'target', 'accessKey', 'className', 'contentEditable', 'contextMenu', 'dir', 'draggable', 'hidden', 'lang', 'spellCheck', 'style', 'tabIndex', 'title', 'loading_state', wildcard_names), + package = 'dashHtmlComponents' + ) + + structure(component, class = c('dash_component', 'list')) +} + +# AUTO GENERATED FILE - DO NOT EDIT + + +htmlArticle <- function(children=NULL, id=NULL, n_clicks=NULL, n_clicks_timestamp=NULL, key=NULL, role=NULL, accessKey=NULL, className=NULL, contentEditable=NULL, contextMenu=NULL, dir=NULL, draggable=NULL, hidden=NULL, lang=NULL, spellCheck=NULL, style=NULL, tabIndex=NULL, title=NULL, loading_state=NULL, ...) { + + wildcard_names = names(dash_assert_valid_wildcards(attrib = list('data', 'aria'), ...)) + + props <- list(children=children, id=id, n_clicks=n_clicks, n_clicks_timestamp=n_clicks_timestamp, key=key, role=role, accessKey=accessKey, className=className, contentEditable=contentEditable, contextMenu=contextMenu, dir=dir, draggable=draggable, hidden=hidden, lang=lang, spellCheck=spellCheck, style=style, tabIndex=tabIndex, title=title, loading_state=loading_state, ...) + if (length(props) > 0) { + props <- props[!vapply(props, is.null, logical(1))] + } + component <- list( + props = props, + type = 'Article', + namespace = 'dash_html_components', + propNames = c('children', 'id', 'n_clicks', 'n_clicks_timestamp', 'key', 'role', 'accessKey', 'className', 'contentEditable', 'contextMenu', 'dir', 'draggable', 'hidden', 'lang', 'spellCheck', 'style', 'tabIndex', 'title', 'loading_state', wildcard_names), + package = 'dashHtmlComponents' + ) + + structure(component, class = c('dash_component', 'list')) +} + +# AUTO GENERATED FILE - DO NOT EDIT + + +htmlAside <- function(children=NULL, id=NULL, n_clicks=NULL, n_clicks_timestamp=NULL, key=NULL, role=NULL, accessKey=NULL, className=NULL, contentEditable=NULL, contextMenu=NULL, dir=NULL, draggable=NULL, hidden=NULL, lang=NULL, spellCheck=NULL, style=NULL, tabIndex=NULL, title=NULL, loading_state=NULL, ...) { + + wildcard_names = names(dash_assert_valid_wildcards(attrib = list('data', 'aria'), ...)) + + props <- list(children=children, id=id, n_clicks=n_clicks, n_clicks_timestamp=n_clicks_timestamp, key=key, role=role, accessKey=accessKey, className=className, contentEditable=contentEditable, contextMenu=contextMenu, dir=dir, draggable=draggable, hidden=hidden, lang=lang, spellCheck=spellCheck, style=style, tabIndex=tabIndex, title=title, loading_state=loading_state, ...) + if (length(props) > 0) { + props <- props[!vapply(props, is.null, logical(1))] + } + component <- list( + props = props, + type = 'Aside', + namespace = 'dash_html_components', + propNames = c('children', 'id', 'n_clicks', 'n_clicks_timestamp', 'key', 'role', 'accessKey', 'className', 'contentEditable', 'contextMenu', 'dir', 'draggable', 'hidden', 'lang', 'spellCheck', 'style', 'tabIndex', 'title', 'loading_state', wildcard_names), + package = 'dashHtmlComponents' + ) + + structure(component, class = c('dash_component', 'list')) +} + +# AUTO GENERATED FILE - DO NOT EDIT + + +htmlAudio <- function(children=NULL, id=NULL, n_clicks=NULL, n_clicks_timestamp=NULL, key=NULL, role=NULL, autoPlay=NULL, controls=NULL, crossOrigin=NULL, loop=NULL, muted=NULL, preload=NULL, src=NULL, accessKey=NULL, className=NULL, contentEditable=NULL, contextMenu=NULL, dir=NULL, draggable=NULL, hidden=NULL, lang=NULL, spellCheck=NULL, style=NULL, tabIndex=NULL, title=NULL, loading_state=NULL, ...) { + + wildcard_names = names(dash_assert_valid_wildcards(attrib = list('data', 'aria'), ...)) + + props <- list(children=children, id=id, n_clicks=n_clicks, n_clicks_timestamp=n_clicks_timestamp, key=key, role=role, autoPlay=autoPlay, controls=controls, crossOrigin=crossOrigin, loop=loop, muted=muted, preload=preload, src=src, accessKey=accessKey, className=className, contentEditable=contentEditable, contextMenu=contextMenu, dir=dir, draggable=draggable, hidden=hidden, lang=lang, spellCheck=spellCheck, style=style, tabIndex=tabIndex, title=title, loading_state=loading_state, ...) + if (length(props) > 0) { + props <- props[!vapply(props, is.null, logical(1))] + } + component <- list( + props = props, + type = 'Audio', + namespace = 'dash_html_components', + propNames = c('children', 'id', 'n_clicks', 'n_clicks_timestamp', 'key', 'role', 'autoPlay', 'controls', 'crossOrigin', 'loop', 'muted', 'preload', 'src', 'accessKey', 'className', 'contentEditable', 'contextMenu', 'dir', 'draggable', 'hidden', 'lang', 'spellCheck', 'style', 'tabIndex', 'title', 'loading_state', wildcard_names), + package = 'dashHtmlComponents' + ) + + structure(component, class = c('dash_component', 'list')) +} + +# AUTO GENERATED FILE - DO NOT EDIT + + +htmlB <- function(children=NULL, id=NULL, n_clicks=NULL, n_clicks_timestamp=NULL, key=NULL, role=NULL, accessKey=NULL, className=NULL, contentEditable=NULL, contextMenu=NULL, dir=NULL, draggable=NULL, hidden=NULL, lang=NULL, spellCheck=NULL, style=NULL, tabIndex=NULL, title=NULL, loading_state=NULL, ...) { + + wildcard_names = names(dash_assert_valid_wildcards(attrib = list('data', 'aria'), ...)) + + props <- list(children=children, id=id, n_clicks=n_clicks, n_clicks_timestamp=n_clicks_timestamp, key=key, role=role, accessKey=accessKey, className=className, contentEditable=contentEditable, contextMenu=contextMenu, dir=dir, draggable=draggable, hidden=hidden, lang=lang, spellCheck=spellCheck, style=style, tabIndex=tabIndex, title=title, loading_state=loading_state, ...) + if (length(props) > 0) { + props <- props[!vapply(props, is.null, logical(1))] + } + component <- list( + props = props, + type = 'B', + namespace = 'dash_html_components', + propNames = c('children', 'id', 'n_clicks', 'n_clicks_timestamp', 'key', 'role', 'accessKey', 'className', 'contentEditable', 'contextMenu', 'dir', 'draggable', 'hidden', 'lang', 'spellCheck', 'style', 'tabIndex', 'title', 'loading_state', wildcard_names), + package = 'dashHtmlComponents' + ) + + structure(component, class = c('dash_component', 'list')) +} + +# AUTO GENERATED FILE - DO NOT EDIT + + +htmlBase <- function(children=NULL, id=NULL, n_clicks=NULL, n_clicks_timestamp=NULL, key=NULL, role=NULL, href=NULL, target=NULL, accessKey=NULL, className=NULL, contentEditable=NULL, contextMenu=NULL, dir=NULL, draggable=NULL, hidden=NULL, lang=NULL, spellCheck=NULL, style=NULL, tabIndex=NULL, title=NULL, loading_state=NULL, ...) { + + wildcard_names = names(dash_assert_valid_wildcards(attrib = list('data', 'aria'), ...)) + + props <- list(children=children, id=id, n_clicks=n_clicks, n_clicks_timestamp=n_clicks_timestamp, key=key, role=role, href=href, target=target, accessKey=accessKey, className=className, contentEditable=contentEditable, contextMenu=contextMenu, dir=dir, draggable=draggable, hidden=hidden, lang=lang, spellCheck=spellCheck, style=style, tabIndex=tabIndex, title=title, loading_state=loading_state, ...) + if (length(props) > 0) { + props <- props[!vapply(props, is.null, logical(1))] + } + component <- list( + props = props, + type = 'Base', + namespace = 'dash_html_components', + propNames = c('children', 'id', 'n_clicks', 'n_clicks_timestamp', 'key', 'role', 'href', 'target', 'accessKey', 'className', 'contentEditable', 'contextMenu', 'dir', 'draggable', 'hidden', 'lang', 'spellCheck', 'style', 'tabIndex', 'title', 'loading_state', wildcard_names), + package = 'dashHtmlComponents' + ) + + structure(component, class = c('dash_component', 'list')) +} + +# AUTO GENERATED FILE - DO NOT EDIT + + +htmlBasefont <- function(children=NULL, id=NULL, n_clicks=NULL, n_clicks_timestamp=NULL, key=NULL, role=NULL, accessKey=NULL, className=NULL, contentEditable=NULL, contextMenu=NULL, dir=NULL, draggable=NULL, hidden=NULL, lang=NULL, spellCheck=NULL, style=NULL, tabIndex=NULL, title=NULL, loading_state=NULL, ...) { + + wildcard_names = names(dash_assert_valid_wildcards(attrib = list('data', 'aria'), ...)) + + props <- list(children=children, id=id, n_clicks=n_clicks, n_clicks_timestamp=n_clicks_timestamp, key=key, role=role, accessKey=accessKey, className=className, contentEditable=contentEditable, contextMenu=contextMenu, dir=dir, draggable=draggable, hidden=hidden, lang=lang, spellCheck=spellCheck, style=style, tabIndex=tabIndex, title=title, loading_state=loading_state, ...) + if (length(props) > 0) { + props <- props[!vapply(props, is.null, logical(1))] + } + component <- list( + props = props, + type = 'Basefont', + namespace = 'dash_html_components', + propNames = c('children', 'id', 'n_clicks', 'n_clicks_timestamp', 'key', 'role', 'accessKey', 'className', 'contentEditable', 'contextMenu', 'dir', 'draggable', 'hidden', 'lang', 'spellCheck', 'style', 'tabIndex', 'title', 'loading_state', wildcard_names), + package = 'dashHtmlComponents' + ) + + structure(component, class = c('dash_component', 'list')) +} + +# AUTO GENERATED FILE - DO NOT EDIT + + +htmlBdi <- function(children=NULL, id=NULL, n_clicks=NULL, n_clicks_timestamp=NULL, key=NULL, role=NULL, accessKey=NULL, className=NULL, contentEditable=NULL, contextMenu=NULL, dir=NULL, draggable=NULL, hidden=NULL, lang=NULL, spellCheck=NULL, style=NULL, tabIndex=NULL, title=NULL, loading_state=NULL, ...) { + + wildcard_names = names(dash_assert_valid_wildcards(attrib = list('data', 'aria'), ...)) + + props <- list(children=children, id=id, n_clicks=n_clicks, n_clicks_timestamp=n_clicks_timestamp, key=key, role=role, accessKey=accessKey, className=className, contentEditable=contentEditable, contextMenu=contextMenu, dir=dir, draggable=draggable, hidden=hidden, lang=lang, spellCheck=spellCheck, style=style, tabIndex=tabIndex, title=title, loading_state=loading_state, ...) + if (length(props) > 0) { + props <- props[!vapply(props, is.null, logical(1))] + } + component <- list( + props = props, + type = 'Bdi', + namespace = 'dash_html_components', + propNames = c('children', 'id', 'n_clicks', 'n_clicks_timestamp', 'key', 'role', 'accessKey', 'className', 'contentEditable', 'contextMenu', 'dir', 'draggable', 'hidden', 'lang', 'spellCheck', 'style', 'tabIndex', 'title', 'loading_state', wildcard_names), + package = 'dashHtmlComponents' + ) + + structure(component, class = c('dash_component', 'list')) +} + +# AUTO GENERATED FILE - DO NOT EDIT + + +htmlBdo <- function(children=NULL, id=NULL, n_clicks=NULL, n_clicks_timestamp=NULL, key=NULL, role=NULL, accessKey=NULL, className=NULL, contentEditable=NULL, contextMenu=NULL, dir=NULL, draggable=NULL, hidden=NULL, lang=NULL, spellCheck=NULL, style=NULL, tabIndex=NULL, title=NULL, loading_state=NULL, ...) { + + wildcard_names = names(dash_assert_valid_wildcards(attrib = list('data', 'aria'), ...)) + + props <- list(children=children, id=id, n_clicks=n_clicks, n_clicks_timestamp=n_clicks_timestamp, key=key, role=role, accessKey=accessKey, className=className, contentEditable=contentEditable, contextMenu=contextMenu, dir=dir, draggable=draggable, hidden=hidden, lang=lang, spellCheck=spellCheck, style=style, tabIndex=tabIndex, title=title, loading_state=loading_state, ...) + if (length(props) > 0) { + props <- props[!vapply(props, is.null, logical(1))] + } + component <- list( + props = props, + type = 'Bdo', + namespace = 'dash_html_components', + propNames = c('children', 'id', 'n_clicks', 'n_clicks_timestamp', 'key', 'role', 'accessKey', 'className', 'contentEditable', 'contextMenu', 'dir', 'draggable', 'hidden', 'lang', 'spellCheck', 'style', 'tabIndex', 'title', 'loading_state', wildcard_names), + package = 'dashHtmlComponents' + ) + + structure(component, class = c('dash_component', 'list')) +} + +# AUTO GENERATED FILE - DO NOT EDIT + + +htmlBig <- function(children=NULL, id=NULL, n_clicks=NULL, n_clicks_timestamp=NULL, key=NULL, role=NULL, accessKey=NULL, className=NULL, contentEditable=NULL, contextMenu=NULL, dir=NULL, draggable=NULL, hidden=NULL, lang=NULL, spellCheck=NULL, style=NULL, tabIndex=NULL, title=NULL, loading_state=NULL, ...) { + + wildcard_names = names(dash_assert_valid_wildcards(attrib = list('data', 'aria'), ...)) + + props <- list(children=children, id=id, n_clicks=n_clicks, n_clicks_timestamp=n_clicks_timestamp, key=key, role=role, accessKey=accessKey, className=className, contentEditable=contentEditable, contextMenu=contextMenu, dir=dir, draggable=draggable, hidden=hidden, lang=lang, spellCheck=spellCheck, style=style, tabIndex=tabIndex, title=title, loading_state=loading_state, ...) + if (length(props) > 0) { + props <- props[!vapply(props, is.null, logical(1))] + } + component <- list( + props = props, + type = 'Big', + namespace = 'dash_html_components', + propNames = c('children', 'id', 'n_clicks', 'n_clicks_timestamp', 'key', 'role', 'accessKey', 'className', 'contentEditable', 'contextMenu', 'dir', 'draggable', 'hidden', 'lang', 'spellCheck', 'style', 'tabIndex', 'title', 'loading_state', wildcard_names), + package = 'dashHtmlComponents' + ) + + structure(component, class = c('dash_component', 'list')) +} + +# AUTO GENERATED FILE - DO NOT EDIT + + +htmlBlink <- function(children=NULL, id=NULL, n_clicks=NULL, n_clicks_timestamp=NULL, key=NULL, role=NULL, accessKey=NULL, className=NULL, contentEditable=NULL, contextMenu=NULL, dir=NULL, draggable=NULL, hidden=NULL, lang=NULL, spellCheck=NULL, style=NULL, tabIndex=NULL, title=NULL, loading_state=NULL, ...) { + + wildcard_names = names(dash_assert_valid_wildcards(attrib = list('data', 'aria'), ...)) + + props <- list(children=children, id=id, n_clicks=n_clicks, n_clicks_timestamp=n_clicks_timestamp, key=key, role=role, accessKey=accessKey, className=className, contentEditable=contentEditable, contextMenu=contextMenu, dir=dir, draggable=draggable, hidden=hidden, lang=lang, spellCheck=spellCheck, style=style, tabIndex=tabIndex, title=title, loading_state=loading_state, ...) + if (length(props) > 0) { + props <- props[!vapply(props, is.null, logical(1))] + } + component <- list( + props = props, + type = 'Blink', + namespace = 'dash_html_components', + propNames = c('children', 'id', 'n_clicks', 'n_clicks_timestamp', 'key', 'role', 'accessKey', 'className', 'contentEditable', 'contextMenu', 'dir', 'draggable', 'hidden', 'lang', 'spellCheck', 'style', 'tabIndex', 'title', 'loading_state', wildcard_names), + package = 'dashHtmlComponents' + ) + + structure(component, class = c('dash_component', 'list')) +} + +# AUTO GENERATED FILE - DO NOT EDIT + + +htmlBlockquote <- function(children=NULL, id=NULL, n_clicks=NULL, n_clicks_timestamp=NULL, key=NULL, role=NULL, cite=NULL, accessKey=NULL, className=NULL, contentEditable=NULL, contextMenu=NULL, dir=NULL, draggable=NULL, hidden=NULL, lang=NULL, spellCheck=NULL, style=NULL, tabIndex=NULL, title=NULL, loading_state=NULL, ...) { + + wildcard_names = names(dash_assert_valid_wildcards(attrib = list('data', 'aria'), ...)) + + props <- list(children=children, id=id, n_clicks=n_clicks, n_clicks_timestamp=n_clicks_timestamp, key=key, role=role, cite=cite, accessKey=accessKey, className=className, contentEditable=contentEditable, contextMenu=contextMenu, dir=dir, draggable=draggable, hidden=hidden, lang=lang, spellCheck=spellCheck, style=style, tabIndex=tabIndex, title=title, loading_state=loading_state, ...) + if (length(props) > 0) { + props <- props[!vapply(props, is.null, logical(1))] + } + component <- list( + props = props, + type = 'Blockquote', + namespace = 'dash_html_components', + propNames = c('children', 'id', 'n_clicks', 'n_clicks_timestamp', 'key', 'role', 'cite', 'accessKey', 'className', 'contentEditable', 'contextMenu', 'dir', 'draggable', 'hidden', 'lang', 'spellCheck', 'style', 'tabIndex', 'title', 'loading_state', wildcard_names), + package = 'dashHtmlComponents' + ) + + structure(component, class = c('dash_component', 'list')) +} + +# AUTO GENERATED FILE - DO NOT EDIT + + +htmlBr <- function(children=NULL, id=NULL, n_clicks=NULL, n_clicks_timestamp=NULL, key=NULL, role=NULL, accessKey=NULL, className=NULL, contentEditable=NULL, contextMenu=NULL, dir=NULL, draggable=NULL, hidden=NULL, lang=NULL, spellCheck=NULL, style=NULL, tabIndex=NULL, title=NULL, loading_state=NULL, ...) { + + wildcard_names = names(dash_assert_valid_wildcards(attrib = list('data', 'aria'), ...)) + + props <- list(children=children, id=id, n_clicks=n_clicks, n_clicks_timestamp=n_clicks_timestamp, key=key, role=role, accessKey=accessKey, className=className, contentEditable=contentEditable, contextMenu=contextMenu, dir=dir, draggable=draggable, hidden=hidden, lang=lang, spellCheck=spellCheck, style=style, tabIndex=tabIndex, title=title, loading_state=loading_state, ...) + if (length(props) > 0) { + props <- props[!vapply(props, is.null, logical(1))] + } + component <- list( + props = props, + type = 'Br', + namespace = 'dash_html_components', + propNames = c('children', 'id', 'n_clicks', 'n_clicks_timestamp', 'key', 'role', 'accessKey', 'className', 'contentEditable', 'contextMenu', 'dir', 'draggable', 'hidden', 'lang', 'spellCheck', 'style', 'tabIndex', 'title', 'loading_state', wildcard_names), + package = 'dashHtmlComponents' + ) + + structure(component, class = c('dash_component', 'list')) +} + +# AUTO GENERATED FILE - DO NOT EDIT + + +htmlButton <- function(children=NULL, id=NULL, n_clicks=NULL, n_clicks_timestamp=NULL, key=NULL, role=NULL, autoFocus=NULL, disabled=NULL, form=NULL, formAction=NULL, formEncType=NULL, formMethod=NULL, formNoValidate=NULL, formTarget=NULL, name=NULL, type=NULL, value=NULL, accessKey=NULL, className=NULL, contentEditable=NULL, contextMenu=NULL, dir=NULL, draggable=NULL, hidden=NULL, lang=NULL, spellCheck=NULL, style=NULL, tabIndex=NULL, title=NULL, loading_state=NULL, ...) { + + wildcard_names = names(dash_assert_valid_wildcards(attrib = list('data', 'aria'), ...)) + + props <- list(children=children, id=id, n_clicks=n_clicks, n_clicks_timestamp=n_clicks_timestamp, key=key, role=role, autoFocus=autoFocus, disabled=disabled, form=form, formAction=formAction, formEncType=formEncType, formMethod=formMethod, formNoValidate=formNoValidate, formTarget=formTarget, name=name, type=type, value=value, accessKey=accessKey, className=className, contentEditable=contentEditable, contextMenu=contextMenu, dir=dir, draggable=draggable, hidden=hidden, lang=lang, spellCheck=spellCheck, style=style, tabIndex=tabIndex, title=title, loading_state=loading_state, ...) + if (length(props) > 0) { + props <- props[!vapply(props, is.null, logical(1))] + } + component <- list( + props = props, + type = 'Button', + namespace = 'dash_html_components', + propNames = c('children', 'id', 'n_clicks', 'n_clicks_timestamp', 'key', 'role', 'autoFocus', 'disabled', 'form', 'formAction', 'formEncType', 'formMethod', 'formNoValidate', 'formTarget', 'name', 'type', 'value', 'accessKey', 'className', 'contentEditable', 'contextMenu', 'dir', 'draggable', 'hidden', 'lang', 'spellCheck', 'style', 'tabIndex', 'title', 'loading_state', wildcard_names), + package = 'dashHtmlComponents' + ) + + structure(component, class = c('dash_component', 'list')) +} + +# AUTO GENERATED FILE - DO NOT EDIT + + +htmlCanvas <- function(children=NULL, id=NULL, n_clicks=NULL, n_clicks_timestamp=NULL, key=NULL, role=NULL, height=NULL, width=NULL, accessKey=NULL, className=NULL, contentEditable=NULL, contextMenu=NULL, dir=NULL, draggable=NULL, hidden=NULL, lang=NULL, spellCheck=NULL, style=NULL, tabIndex=NULL, title=NULL, loading_state=NULL, ...) { + + wildcard_names = names(dash_assert_valid_wildcards(attrib = list('data', 'aria'), ...)) + + props <- list(children=children, id=id, n_clicks=n_clicks, n_clicks_timestamp=n_clicks_timestamp, key=key, role=role, height=height, width=width, accessKey=accessKey, className=className, contentEditable=contentEditable, contextMenu=contextMenu, dir=dir, draggable=draggable, hidden=hidden, lang=lang, spellCheck=spellCheck, style=style, tabIndex=tabIndex, title=title, loading_state=loading_state, ...) + if (length(props) > 0) { + props <- props[!vapply(props, is.null, logical(1))] + } + component <- list( + props = props, + type = 'Canvas', + namespace = 'dash_html_components', + propNames = c('children', 'id', 'n_clicks', 'n_clicks_timestamp', 'key', 'role', 'height', 'width', 'accessKey', 'className', 'contentEditable', 'contextMenu', 'dir', 'draggable', 'hidden', 'lang', 'spellCheck', 'style', 'tabIndex', 'title', 'loading_state', wildcard_names), + package = 'dashHtmlComponents' + ) + + structure(component, class = c('dash_component', 'list')) +} + +# AUTO GENERATED FILE - DO NOT EDIT + + +htmlCaption <- function(children=NULL, id=NULL, n_clicks=NULL, n_clicks_timestamp=NULL, key=NULL, role=NULL, accessKey=NULL, className=NULL, contentEditable=NULL, contextMenu=NULL, dir=NULL, draggable=NULL, hidden=NULL, lang=NULL, spellCheck=NULL, style=NULL, tabIndex=NULL, title=NULL, loading_state=NULL, ...) { + + wildcard_names = names(dash_assert_valid_wildcards(attrib = list('data', 'aria'), ...)) + + props <- list(children=children, id=id, n_clicks=n_clicks, n_clicks_timestamp=n_clicks_timestamp, key=key, role=role, accessKey=accessKey, className=className, contentEditable=contentEditable, contextMenu=contextMenu, dir=dir, draggable=draggable, hidden=hidden, lang=lang, spellCheck=spellCheck, style=style, tabIndex=tabIndex, title=title, loading_state=loading_state, ...) + if (length(props) > 0) { + props <- props[!vapply(props, is.null, logical(1))] + } + component <- list( + props = props, + type = 'Caption', + namespace = 'dash_html_components', + propNames = c('children', 'id', 'n_clicks', 'n_clicks_timestamp', 'key', 'role', 'accessKey', 'className', 'contentEditable', 'contextMenu', 'dir', 'draggable', 'hidden', 'lang', 'spellCheck', 'style', 'tabIndex', 'title', 'loading_state', wildcard_names), + package = 'dashHtmlComponents' + ) + + structure(component, class = c('dash_component', 'list')) +} + +# AUTO GENERATED FILE - DO NOT EDIT + + +htmlCenter <- function(children=NULL, id=NULL, n_clicks=NULL, n_clicks_timestamp=NULL, key=NULL, role=NULL, accessKey=NULL, className=NULL, contentEditable=NULL, contextMenu=NULL, dir=NULL, draggable=NULL, hidden=NULL, lang=NULL, spellCheck=NULL, style=NULL, tabIndex=NULL, title=NULL, loading_state=NULL, ...) { + + wildcard_names = names(dash_assert_valid_wildcards(attrib = list('data', 'aria'), ...)) + + props <- list(children=children, id=id, n_clicks=n_clicks, n_clicks_timestamp=n_clicks_timestamp, key=key, role=role, accessKey=accessKey, className=className, contentEditable=contentEditable, contextMenu=contextMenu, dir=dir, draggable=draggable, hidden=hidden, lang=lang, spellCheck=spellCheck, style=style, tabIndex=tabIndex, title=title, loading_state=loading_state, ...) + if (length(props) > 0) { + props <- props[!vapply(props, is.null, logical(1))] + } + component <- list( + props = props, + type = 'Center', + namespace = 'dash_html_components', + propNames = c('children', 'id', 'n_clicks', 'n_clicks_timestamp', 'key', 'role', 'accessKey', 'className', 'contentEditable', 'contextMenu', 'dir', 'draggable', 'hidden', 'lang', 'spellCheck', 'style', 'tabIndex', 'title', 'loading_state', wildcard_names), + package = 'dashHtmlComponents' + ) + + structure(component, class = c('dash_component', 'list')) +} + +# AUTO GENERATED FILE - DO NOT EDIT + + +htmlCite <- function(children=NULL, id=NULL, n_clicks=NULL, n_clicks_timestamp=NULL, key=NULL, role=NULL, accessKey=NULL, className=NULL, contentEditable=NULL, contextMenu=NULL, dir=NULL, draggable=NULL, hidden=NULL, lang=NULL, spellCheck=NULL, style=NULL, tabIndex=NULL, title=NULL, loading_state=NULL, ...) { + + wildcard_names = names(dash_assert_valid_wildcards(attrib = list('data', 'aria'), ...)) + + props <- list(children=children, id=id, n_clicks=n_clicks, n_clicks_timestamp=n_clicks_timestamp, key=key, role=role, accessKey=accessKey, className=className, contentEditable=contentEditable, contextMenu=contextMenu, dir=dir, draggable=draggable, hidden=hidden, lang=lang, spellCheck=spellCheck, style=style, tabIndex=tabIndex, title=title, loading_state=loading_state, ...) + if (length(props) > 0) { + props <- props[!vapply(props, is.null, logical(1))] + } + component <- list( + props = props, + type = 'Cite', + namespace = 'dash_html_components', + propNames = c('children', 'id', 'n_clicks', 'n_clicks_timestamp', 'key', 'role', 'accessKey', 'className', 'contentEditable', 'contextMenu', 'dir', 'draggable', 'hidden', 'lang', 'spellCheck', 'style', 'tabIndex', 'title', 'loading_state', wildcard_names), + package = 'dashHtmlComponents' + ) + + structure(component, class = c('dash_component', 'list')) +} + +# AUTO GENERATED FILE - DO NOT EDIT + + +htmlCode <- function(children=NULL, id=NULL, n_clicks=NULL, n_clicks_timestamp=NULL, key=NULL, role=NULL, accessKey=NULL, className=NULL, contentEditable=NULL, contextMenu=NULL, dir=NULL, draggable=NULL, hidden=NULL, lang=NULL, spellCheck=NULL, style=NULL, tabIndex=NULL, title=NULL, loading_state=NULL, ...) { + + wildcard_names = names(dash_assert_valid_wildcards(attrib = list('data', 'aria'), ...)) + + props <- list(children=children, id=id, n_clicks=n_clicks, n_clicks_timestamp=n_clicks_timestamp, key=key, role=role, accessKey=accessKey, className=className, contentEditable=contentEditable, contextMenu=contextMenu, dir=dir, draggable=draggable, hidden=hidden, lang=lang, spellCheck=spellCheck, style=style, tabIndex=tabIndex, title=title, loading_state=loading_state, ...) + if (length(props) > 0) { + props <- props[!vapply(props, is.null, logical(1))] + } + component <- list( + props = props, + type = 'Code', + namespace = 'dash_html_components', + propNames = c('children', 'id', 'n_clicks', 'n_clicks_timestamp', 'key', 'role', 'accessKey', 'className', 'contentEditable', 'contextMenu', 'dir', 'draggable', 'hidden', 'lang', 'spellCheck', 'style', 'tabIndex', 'title', 'loading_state', wildcard_names), + package = 'dashHtmlComponents' + ) + + structure(component, class = c('dash_component', 'list')) +} + +# AUTO GENERATED FILE - DO NOT EDIT + + +htmlCol <- function(children=NULL, id=NULL, n_clicks=NULL, n_clicks_timestamp=NULL, key=NULL, role=NULL, span=NULL, accessKey=NULL, className=NULL, contentEditable=NULL, contextMenu=NULL, dir=NULL, draggable=NULL, hidden=NULL, lang=NULL, spellCheck=NULL, style=NULL, tabIndex=NULL, title=NULL, loading_state=NULL, ...) { + + wildcard_names = names(dash_assert_valid_wildcards(attrib = list('data', 'aria'), ...)) + + props <- list(children=children, id=id, n_clicks=n_clicks, n_clicks_timestamp=n_clicks_timestamp, key=key, role=role, span=span, accessKey=accessKey, className=className, contentEditable=contentEditable, contextMenu=contextMenu, dir=dir, draggable=draggable, hidden=hidden, lang=lang, spellCheck=spellCheck, style=style, tabIndex=tabIndex, title=title, loading_state=loading_state, ...) + if (length(props) > 0) { + props <- props[!vapply(props, is.null, logical(1))] + } + component <- list( + props = props, + type = 'Col', + namespace = 'dash_html_components', + propNames = c('children', 'id', 'n_clicks', 'n_clicks_timestamp', 'key', 'role', 'span', 'accessKey', 'className', 'contentEditable', 'contextMenu', 'dir', 'draggable', 'hidden', 'lang', 'spellCheck', 'style', 'tabIndex', 'title', 'loading_state', wildcard_names), + package = 'dashHtmlComponents' + ) + + structure(component, class = c('dash_component', 'list')) +} + +# AUTO GENERATED FILE - DO NOT EDIT + + +htmlColgroup <- function(children=NULL, id=NULL, n_clicks=NULL, n_clicks_timestamp=NULL, key=NULL, role=NULL, span=NULL, accessKey=NULL, className=NULL, contentEditable=NULL, contextMenu=NULL, dir=NULL, draggable=NULL, hidden=NULL, lang=NULL, spellCheck=NULL, style=NULL, tabIndex=NULL, title=NULL, loading_state=NULL, ...) { + + wildcard_names = names(dash_assert_valid_wildcards(attrib = list('data', 'aria'), ...)) + + props <- list(children=children, id=id, n_clicks=n_clicks, n_clicks_timestamp=n_clicks_timestamp, key=key, role=role, span=span, accessKey=accessKey, className=className, contentEditable=contentEditable, contextMenu=contextMenu, dir=dir, draggable=draggable, hidden=hidden, lang=lang, spellCheck=spellCheck, style=style, tabIndex=tabIndex, title=title, loading_state=loading_state, ...) + if (length(props) > 0) { + props <- props[!vapply(props, is.null, logical(1))] + } + component <- list( + props = props, + type = 'Colgroup', + namespace = 'dash_html_components', + propNames = c('children', 'id', 'n_clicks', 'n_clicks_timestamp', 'key', 'role', 'span', 'accessKey', 'className', 'contentEditable', 'contextMenu', 'dir', 'draggable', 'hidden', 'lang', 'spellCheck', 'style', 'tabIndex', 'title', 'loading_state', wildcard_names), + package = 'dashHtmlComponents' + ) + + structure(component, class = c('dash_component', 'list')) +} + +# AUTO GENERATED FILE - DO NOT EDIT + + +htmlContent <- function(children=NULL, id=NULL, n_clicks=NULL, n_clicks_timestamp=NULL, key=NULL, role=NULL, accessKey=NULL, className=NULL, contentEditable=NULL, contextMenu=NULL, dir=NULL, draggable=NULL, hidden=NULL, lang=NULL, spellCheck=NULL, style=NULL, tabIndex=NULL, title=NULL, loading_state=NULL, ...) { + + wildcard_names = names(dash_assert_valid_wildcards(attrib = list('data', 'aria'), ...)) + + props <- list(children=children, id=id, n_clicks=n_clicks, n_clicks_timestamp=n_clicks_timestamp, key=key, role=role, accessKey=accessKey, className=className, contentEditable=contentEditable, contextMenu=contextMenu, dir=dir, draggable=draggable, hidden=hidden, lang=lang, spellCheck=spellCheck, style=style, tabIndex=tabIndex, title=title, loading_state=loading_state, ...) + if (length(props) > 0) { + props <- props[!vapply(props, is.null, logical(1))] + } + component <- list( + props = props, + type = 'Content', + namespace = 'dash_html_components', + propNames = c('children', 'id', 'n_clicks', 'n_clicks_timestamp', 'key', 'role', 'accessKey', 'className', 'contentEditable', 'contextMenu', 'dir', 'draggable', 'hidden', 'lang', 'spellCheck', 'style', 'tabIndex', 'title', 'loading_state', wildcard_names), + package = 'dashHtmlComponents' + ) + + structure(component, class = c('dash_component', 'list')) +} + +# AUTO GENERATED FILE - DO NOT EDIT + + +htmlData <- function(children=NULL, id=NULL, n_clicks=NULL, n_clicks_timestamp=NULL, key=NULL, role=NULL, value=NULL, accessKey=NULL, className=NULL, contentEditable=NULL, contextMenu=NULL, dir=NULL, draggable=NULL, hidden=NULL, lang=NULL, spellCheck=NULL, style=NULL, tabIndex=NULL, title=NULL, loading_state=NULL, ...) { + + wildcard_names = names(dash_assert_valid_wildcards(attrib = list('data', 'aria'), ...)) + + props <- list(children=children, id=id, n_clicks=n_clicks, n_clicks_timestamp=n_clicks_timestamp, key=key, role=role, value=value, accessKey=accessKey, className=className, contentEditable=contentEditable, contextMenu=contextMenu, dir=dir, draggable=draggable, hidden=hidden, lang=lang, spellCheck=spellCheck, style=style, tabIndex=tabIndex, title=title, loading_state=loading_state, ...) + if (length(props) > 0) { + props <- props[!vapply(props, is.null, logical(1))] + } + component <- list( + props = props, + type = 'Data', + namespace = 'dash_html_components', + propNames = c('children', 'id', 'n_clicks', 'n_clicks_timestamp', 'key', 'role', 'value', 'accessKey', 'className', 'contentEditable', 'contextMenu', 'dir', 'draggable', 'hidden', 'lang', 'spellCheck', 'style', 'tabIndex', 'title', 'loading_state', wildcard_names), + package = 'dashHtmlComponents' + ) + + structure(component, class = c('dash_component', 'list')) +} + +# AUTO GENERATED FILE - DO NOT EDIT + + +htmlDatalist <- function(children=NULL, id=NULL, n_clicks=NULL, n_clicks_timestamp=NULL, key=NULL, role=NULL, accessKey=NULL, className=NULL, contentEditable=NULL, contextMenu=NULL, dir=NULL, draggable=NULL, hidden=NULL, lang=NULL, spellCheck=NULL, style=NULL, tabIndex=NULL, title=NULL, loading_state=NULL, ...) { + + wildcard_names = names(dash_assert_valid_wildcards(attrib = list('data', 'aria'), ...)) + + props <- list(children=children, id=id, n_clicks=n_clicks, n_clicks_timestamp=n_clicks_timestamp, key=key, role=role, accessKey=accessKey, className=className, contentEditable=contentEditable, contextMenu=contextMenu, dir=dir, draggable=draggable, hidden=hidden, lang=lang, spellCheck=spellCheck, style=style, tabIndex=tabIndex, title=title, loading_state=loading_state, ...) + if (length(props) > 0) { + props <- props[!vapply(props, is.null, logical(1))] + } + component <- list( + props = props, + type = 'Datalist', + namespace = 'dash_html_components', + propNames = c('children', 'id', 'n_clicks', 'n_clicks_timestamp', 'key', 'role', 'accessKey', 'className', 'contentEditable', 'contextMenu', 'dir', 'draggable', 'hidden', 'lang', 'spellCheck', 'style', 'tabIndex', 'title', 'loading_state', wildcard_names), + package = 'dashHtmlComponents' + ) + + structure(component, class = c('dash_component', 'list')) +} + +# AUTO GENERATED FILE - DO NOT EDIT + + +htmlDd <- function(children=NULL, id=NULL, n_clicks=NULL, n_clicks_timestamp=NULL, key=NULL, role=NULL, accessKey=NULL, className=NULL, contentEditable=NULL, contextMenu=NULL, dir=NULL, draggable=NULL, hidden=NULL, lang=NULL, spellCheck=NULL, style=NULL, tabIndex=NULL, title=NULL, loading_state=NULL, ...) { + + wildcard_names = names(dash_assert_valid_wildcards(attrib = list('data', 'aria'), ...)) + + props <- list(children=children, id=id, n_clicks=n_clicks, n_clicks_timestamp=n_clicks_timestamp, key=key, role=role, accessKey=accessKey, className=className, contentEditable=contentEditable, contextMenu=contextMenu, dir=dir, draggable=draggable, hidden=hidden, lang=lang, spellCheck=spellCheck, style=style, tabIndex=tabIndex, title=title, loading_state=loading_state, ...) + if (length(props) > 0) { + props <- props[!vapply(props, is.null, logical(1))] + } + component <- list( + props = props, + type = 'Dd', + namespace = 'dash_html_components', + propNames = c('children', 'id', 'n_clicks', 'n_clicks_timestamp', 'key', 'role', 'accessKey', 'className', 'contentEditable', 'contextMenu', 'dir', 'draggable', 'hidden', 'lang', 'spellCheck', 'style', 'tabIndex', 'title', 'loading_state', wildcard_names), + package = 'dashHtmlComponents' + ) + + structure(component, class = c('dash_component', 'list')) +} + +# AUTO GENERATED FILE - DO NOT EDIT + + +htmlDel <- function(children=NULL, id=NULL, n_clicks=NULL, n_clicks_timestamp=NULL, key=NULL, role=NULL, cite=NULL, dateTime=NULL, accessKey=NULL, className=NULL, contentEditable=NULL, contextMenu=NULL, dir=NULL, draggable=NULL, hidden=NULL, lang=NULL, spellCheck=NULL, style=NULL, tabIndex=NULL, title=NULL, loading_state=NULL, ...) { + + wildcard_names = names(dash_assert_valid_wildcards(attrib = list('data', 'aria'), ...)) + + props <- list(children=children, id=id, n_clicks=n_clicks, n_clicks_timestamp=n_clicks_timestamp, key=key, role=role, cite=cite, dateTime=dateTime, accessKey=accessKey, className=className, contentEditable=contentEditable, contextMenu=contextMenu, dir=dir, draggable=draggable, hidden=hidden, lang=lang, spellCheck=spellCheck, style=style, tabIndex=tabIndex, title=title, loading_state=loading_state, ...) + if (length(props) > 0) { + props <- props[!vapply(props, is.null, logical(1))] + } + component <- list( + props = props, + type = 'Del', + namespace = 'dash_html_components', + propNames = c('children', 'id', 'n_clicks', 'n_clicks_timestamp', 'key', 'role', 'cite', 'dateTime', 'accessKey', 'className', 'contentEditable', 'contextMenu', 'dir', 'draggable', 'hidden', 'lang', 'spellCheck', 'style', 'tabIndex', 'title', 'loading_state', wildcard_names), + package = 'dashHtmlComponents' + ) + + structure(component, class = c('dash_component', 'list')) +} + +# AUTO GENERATED FILE - DO NOT EDIT + + +htmlDetails <- function(children=NULL, id=NULL, n_clicks=NULL, n_clicks_timestamp=NULL, key=NULL, role=NULL, open=NULL, accessKey=NULL, className=NULL, contentEditable=NULL, contextMenu=NULL, dir=NULL, draggable=NULL, hidden=NULL, lang=NULL, spellCheck=NULL, style=NULL, tabIndex=NULL, title=NULL, loading_state=NULL, ...) { + + wildcard_names = names(dash_assert_valid_wildcards(attrib = list('data', 'aria'), ...)) + + props <- list(children=children, id=id, n_clicks=n_clicks, n_clicks_timestamp=n_clicks_timestamp, key=key, role=role, open=open, accessKey=accessKey, className=className, contentEditable=contentEditable, contextMenu=contextMenu, dir=dir, draggable=draggable, hidden=hidden, lang=lang, spellCheck=spellCheck, style=style, tabIndex=tabIndex, title=title, loading_state=loading_state, ...) + if (length(props) > 0) { + props <- props[!vapply(props, is.null, logical(1))] + } + component <- list( + props = props, + type = 'Details', + namespace = 'dash_html_components', + propNames = c('children', 'id', 'n_clicks', 'n_clicks_timestamp', 'key', 'role', 'open', 'accessKey', 'className', 'contentEditable', 'contextMenu', 'dir', 'draggable', 'hidden', 'lang', 'spellCheck', 'style', 'tabIndex', 'title', 'loading_state', wildcard_names), + package = 'dashHtmlComponents' + ) + + structure(component, class = c('dash_component', 'list')) +} + +# AUTO GENERATED FILE - DO NOT EDIT + + +htmlDfn <- function(children=NULL, id=NULL, n_clicks=NULL, n_clicks_timestamp=NULL, key=NULL, role=NULL, accessKey=NULL, className=NULL, contentEditable=NULL, contextMenu=NULL, dir=NULL, draggable=NULL, hidden=NULL, lang=NULL, spellCheck=NULL, style=NULL, tabIndex=NULL, title=NULL, loading_state=NULL, ...) { + + wildcard_names = names(dash_assert_valid_wildcards(attrib = list('data', 'aria'), ...)) + + props <- list(children=children, id=id, n_clicks=n_clicks, n_clicks_timestamp=n_clicks_timestamp, key=key, role=role, accessKey=accessKey, className=className, contentEditable=contentEditable, contextMenu=contextMenu, dir=dir, draggable=draggable, hidden=hidden, lang=lang, spellCheck=spellCheck, style=style, tabIndex=tabIndex, title=title, loading_state=loading_state, ...) + if (length(props) > 0) { + props <- props[!vapply(props, is.null, logical(1))] + } + component <- list( + props = props, + type = 'Dfn', + namespace = 'dash_html_components', + propNames = c('children', 'id', 'n_clicks', 'n_clicks_timestamp', 'key', 'role', 'accessKey', 'className', 'contentEditable', 'contextMenu', 'dir', 'draggable', 'hidden', 'lang', 'spellCheck', 'style', 'tabIndex', 'title', 'loading_state', wildcard_names), + package = 'dashHtmlComponents' + ) + + structure(component, class = c('dash_component', 'list')) +} + +# AUTO GENERATED FILE - DO NOT EDIT + + +htmlDialog <- function(children=NULL, id=NULL, n_clicks=NULL, n_clicks_timestamp=NULL, key=NULL, role=NULL, open=NULL, accessKey=NULL, className=NULL, contentEditable=NULL, contextMenu=NULL, dir=NULL, draggable=NULL, hidden=NULL, lang=NULL, spellCheck=NULL, style=NULL, tabIndex=NULL, title=NULL, loading_state=NULL, ...) { + + wildcard_names = names(dash_assert_valid_wildcards(attrib = list('data', 'aria'), ...)) + + props <- list(children=children, id=id, n_clicks=n_clicks, n_clicks_timestamp=n_clicks_timestamp, key=key, role=role, open=open, accessKey=accessKey, className=className, contentEditable=contentEditable, contextMenu=contextMenu, dir=dir, draggable=draggable, hidden=hidden, lang=lang, spellCheck=spellCheck, style=style, tabIndex=tabIndex, title=title, loading_state=loading_state, ...) + if (length(props) > 0) { + props <- props[!vapply(props, is.null, logical(1))] + } + component <- list( + props = props, + type = 'Dialog', + namespace = 'dash_html_components', + propNames = c('children', 'id', 'n_clicks', 'n_clicks_timestamp', 'key', 'role', 'open', 'accessKey', 'className', 'contentEditable', 'contextMenu', 'dir', 'draggable', 'hidden', 'lang', 'spellCheck', 'style', 'tabIndex', 'title', 'loading_state', wildcard_names), + package = 'dashHtmlComponents' + ) + + structure(component, class = c('dash_component', 'list')) +} + +# AUTO GENERATED FILE - DO NOT EDIT + + +htmlDiv <- function(children=NULL, id=NULL, n_clicks=NULL, n_clicks_timestamp=NULL, key=NULL, role=NULL, accessKey=NULL, className=NULL, contentEditable=NULL, contextMenu=NULL, dir=NULL, draggable=NULL, hidden=NULL, lang=NULL, spellCheck=NULL, style=NULL, tabIndex=NULL, title=NULL, loading_state=NULL, ...) { + + wildcard_names = names(dash_assert_valid_wildcards(attrib = list('data', 'aria'), ...)) + + props <- list(children=children, id=id, n_clicks=n_clicks, n_clicks_timestamp=n_clicks_timestamp, key=key, role=role, accessKey=accessKey, className=className, contentEditable=contentEditable, contextMenu=contextMenu, dir=dir, draggable=draggable, hidden=hidden, lang=lang, spellCheck=spellCheck, style=style, tabIndex=tabIndex, title=title, loading_state=loading_state, ...) + if (length(props) > 0) { + props <- props[!vapply(props, is.null, logical(1))] + } + component <- list( + props = props, + type = 'Div', + namespace = 'dash_html_components', + propNames = c('children', 'id', 'n_clicks', 'n_clicks_timestamp', 'key', 'role', 'accessKey', 'className', 'contentEditable', 'contextMenu', 'dir', 'draggable', 'hidden', 'lang', 'spellCheck', 'style', 'tabIndex', 'title', 'loading_state', wildcard_names), + package = 'dashHtmlComponents' + ) + + structure(component, class = c('dash_component', 'list')) +} + +# AUTO GENERATED FILE - DO NOT EDIT + + +htmlDl <- function(children=NULL, id=NULL, n_clicks=NULL, n_clicks_timestamp=NULL, key=NULL, role=NULL, accessKey=NULL, className=NULL, contentEditable=NULL, contextMenu=NULL, dir=NULL, draggable=NULL, hidden=NULL, lang=NULL, spellCheck=NULL, style=NULL, tabIndex=NULL, title=NULL, loading_state=NULL, ...) { + + wildcard_names = names(dash_assert_valid_wildcards(attrib = list('data', 'aria'), ...)) + + props <- list(children=children, id=id, n_clicks=n_clicks, n_clicks_timestamp=n_clicks_timestamp, key=key, role=role, accessKey=accessKey, className=className, contentEditable=contentEditable, contextMenu=contextMenu, dir=dir, draggable=draggable, hidden=hidden, lang=lang, spellCheck=spellCheck, style=style, tabIndex=tabIndex, title=title, loading_state=loading_state, ...) + if (length(props) > 0) { + props <- props[!vapply(props, is.null, logical(1))] + } + component <- list( + props = props, + type = 'Dl', + namespace = 'dash_html_components', + propNames = c('children', 'id', 'n_clicks', 'n_clicks_timestamp', 'key', 'role', 'accessKey', 'className', 'contentEditable', 'contextMenu', 'dir', 'draggable', 'hidden', 'lang', 'spellCheck', 'style', 'tabIndex', 'title', 'loading_state', wildcard_names), + package = 'dashHtmlComponents' + ) + + structure(component, class = c('dash_component', 'list')) +} + +# AUTO GENERATED FILE - DO NOT EDIT + + +htmlDt <- function(children=NULL, id=NULL, n_clicks=NULL, n_clicks_timestamp=NULL, key=NULL, role=NULL, accessKey=NULL, className=NULL, contentEditable=NULL, contextMenu=NULL, dir=NULL, draggable=NULL, hidden=NULL, lang=NULL, spellCheck=NULL, style=NULL, tabIndex=NULL, title=NULL, loading_state=NULL, ...) { + + wildcard_names = names(dash_assert_valid_wildcards(attrib = list('data', 'aria'), ...)) + + props <- list(children=children, id=id, n_clicks=n_clicks, n_clicks_timestamp=n_clicks_timestamp, key=key, role=role, accessKey=accessKey, className=className, contentEditable=contentEditable, contextMenu=contextMenu, dir=dir, draggable=draggable, hidden=hidden, lang=lang, spellCheck=spellCheck, style=style, tabIndex=tabIndex, title=title, loading_state=loading_state, ...) + if (length(props) > 0) { + props <- props[!vapply(props, is.null, logical(1))] + } + component <- list( + props = props, + type = 'Dt', + namespace = 'dash_html_components', + propNames = c('children', 'id', 'n_clicks', 'n_clicks_timestamp', 'key', 'role', 'accessKey', 'className', 'contentEditable', 'contextMenu', 'dir', 'draggable', 'hidden', 'lang', 'spellCheck', 'style', 'tabIndex', 'title', 'loading_state', wildcard_names), + package = 'dashHtmlComponents' + ) + + structure(component, class = c('dash_component', 'list')) +} + +# AUTO GENERATED FILE - DO NOT EDIT + + +htmlEm <- function(children=NULL, id=NULL, n_clicks=NULL, n_clicks_timestamp=NULL, key=NULL, role=NULL, accessKey=NULL, className=NULL, contentEditable=NULL, contextMenu=NULL, dir=NULL, draggable=NULL, hidden=NULL, lang=NULL, spellCheck=NULL, style=NULL, tabIndex=NULL, title=NULL, loading_state=NULL, ...) { + + wildcard_names = names(dash_assert_valid_wildcards(attrib = list('data', 'aria'), ...)) + + props <- list(children=children, id=id, n_clicks=n_clicks, n_clicks_timestamp=n_clicks_timestamp, key=key, role=role, accessKey=accessKey, className=className, contentEditable=contentEditable, contextMenu=contextMenu, dir=dir, draggable=draggable, hidden=hidden, lang=lang, spellCheck=spellCheck, style=style, tabIndex=tabIndex, title=title, loading_state=loading_state, ...) + if (length(props) > 0) { + props <- props[!vapply(props, is.null, logical(1))] + } + component <- list( + props = props, + type = 'Em', + namespace = 'dash_html_components', + propNames = c('children', 'id', 'n_clicks', 'n_clicks_timestamp', 'key', 'role', 'accessKey', 'className', 'contentEditable', 'contextMenu', 'dir', 'draggable', 'hidden', 'lang', 'spellCheck', 'style', 'tabIndex', 'title', 'loading_state', wildcard_names), + package = 'dashHtmlComponents' + ) + + structure(component, class = c('dash_component', 'list')) +} + +# AUTO GENERATED FILE - DO NOT EDIT + + +htmlEmbed <- function(children=NULL, id=NULL, n_clicks=NULL, n_clicks_timestamp=NULL, key=NULL, role=NULL, height=NULL, src=NULL, type=NULL, width=NULL, accessKey=NULL, className=NULL, contentEditable=NULL, contextMenu=NULL, dir=NULL, draggable=NULL, hidden=NULL, lang=NULL, spellCheck=NULL, style=NULL, tabIndex=NULL, title=NULL, loading_state=NULL, ...) { + + wildcard_names = names(dash_assert_valid_wildcards(attrib = list('data', 'aria'), ...)) + + props <- list(children=children, id=id, n_clicks=n_clicks, n_clicks_timestamp=n_clicks_timestamp, key=key, role=role, height=height, src=src, type=type, width=width, accessKey=accessKey, className=className, contentEditable=contentEditable, contextMenu=contextMenu, dir=dir, draggable=draggable, hidden=hidden, lang=lang, spellCheck=spellCheck, style=style, tabIndex=tabIndex, title=title, loading_state=loading_state, ...) + if (length(props) > 0) { + props <- props[!vapply(props, is.null, logical(1))] + } + component <- list( + props = props, + type = 'Embed', + namespace = 'dash_html_components', + propNames = c('children', 'id', 'n_clicks', 'n_clicks_timestamp', 'key', 'role', 'height', 'src', 'type', 'width', 'accessKey', 'className', 'contentEditable', 'contextMenu', 'dir', 'draggable', 'hidden', 'lang', 'spellCheck', 'style', 'tabIndex', 'title', 'loading_state', wildcard_names), + package = 'dashHtmlComponents' + ) + + structure(component, class = c('dash_component', 'list')) +} + +# AUTO GENERATED FILE - DO NOT EDIT + + +htmlFieldset <- function(children=NULL, id=NULL, n_clicks=NULL, n_clicks_timestamp=NULL, key=NULL, role=NULL, disabled=NULL, form=NULL, name=NULL, accessKey=NULL, className=NULL, contentEditable=NULL, contextMenu=NULL, dir=NULL, draggable=NULL, hidden=NULL, lang=NULL, spellCheck=NULL, style=NULL, tabIndex=NULL, title=NULL, loading_state=NULL, ...) { + + wildcard_names = names(dash_assert_valid_wildcards(attrib = list('data', 'aria'), ...)) + + props <- list(children=children, id=id, n_clicks=n_clicks, n_clicks_timestamp=n_clicks_timestamp, key=key, role=role, disabled=disabled, form=form, name=name, accessKey=accessKey, className=className, contentEditable=contentEditable, contextMenu=contextMenu, dir=dir, draggable=draggable, hidden=hidden, lang=lang, spellCheck=spellCheck, style=style, tabIndex=tabIndex, title=title, loading_state=loading_state, ...) + if (length(props) > 0) { + props <- props[!vapply(props, is.null, logical(1))] + } + component <- list( + props = props, + type = 'Fieldset', + namespace = 'dash_html_components', + propNames = c('children', 'id', 'n_clicks', 'n_clicks_timestamp', 'key', 'role', 'disabled', 'form', 'name', 'accessKey', 'className', 'contentEditable', 'contextMenu', 'dir', 'draggable', 'hidden', 'lang', 'spellCheck', 'style', 'tabIndex', 'title', 'loading_state', wildcard_names), + package = 'dashHtmlComponents' + ) + + structure(component, class = c('dash_component', 'list')) +} + +# AUTO GENERATED FILE - DO NOT EDIT + + +htmlFigcaption <- function(children=NULL, id=NULL, n_clicks=NULL, n_clicks_timestamp=NULL, key=NULL, role=NULL, accessKey=NULL, className=NULL, contentEditable=NULL, contextMenu=NULL, dir=NULL, draggable=NULL, hidden=NULL, lang=NULL, spellCheck=NULL, style=NULL, tabIndex=NULL, title=NULL, loading_state=NULL, ...) { + + wildcard_names = names(dash_assert_valid_wildcards(attrib = list('data', 'aria'), ...)) + + props <- list(children=children, id=id, n_clicks=n_clicks, n_clicks_timestamp=n_clicks_timestamp, key=key, role=role, accessKey=accessKey, className=className, contentEditable=contentEditable, contextMenu=contextMenu, dir=dir, draggable=draggable, hidden=hidden, lang=lang, spellCheck=spellCheck, style=style, tabIndex=tabIndex, title=title, loading_state=loading_state, ...) + if (length(props) > 0) { + props <- props[!vapply(props, is.null, logical(1))] + } + component <- list( + props = props, + type = 'Figcaption', + namespace = 'dash_html_components', + propNames = c('children', 'id', 'n_clicks', 'n_clicks_timestamp', 'key', 'role', 'accessKey', 'className', 'contentEditable', 'contextMenu', 'dir', 'draggable', 'hidden', 'lang', 'spellCheck', 'style', 'tabIndex', 'title', 'loading_state', wildcard_names), + package = 'dashHtmlComponents' + ) + + structure(component, class = c('dash_component', 'list')) +} + +# AUTO GENERATED FILE - DO NOT EDIT + + +htmlFigure <- function(children=NULL, id=NULL, n_clicks=NULL, n_clicks_timestamp=NULL, key=NULL, role=NULL, accessKey=NULL, className=NULL, contentEditable=NULL, contextMenu=NULL, dir=NULL, draggable=NULL, hidden=NULL, lang=NULL, spellCheck=NULL, style=NULL, tabIndex=NULL, title=NULL, loading_state=NULL, ...) { + + wildcard_names = names(dash_assert_valid_wildcards(attrib = list('data', 'aria'), ...)) + + props <- list(children=children, id=id, n_clicks=n_clicks, n_clicks_timestamp=n_clicks_timestamp, key=key, role=role, accessKey=accessKey, className=className, contentEditable=contentEditable, contextMenu=contextMenu, dir=dir, draggable=draggable, hidden=hidden, lang=lang, spellCheck=spellCheck, style=style, tabIndex=tabIndex, title=title, loading_state=loading_state, ...) + if (length(props) > 0) { + props <- props[!vapply(props, is.null, logical(1))] + } + component <- list( + props = props, + type = 'Figure', + namespace = 'dash_html_components', + propNames = c('children', 'id', 'n_clicks', 'n_clicks_timestamp', 'key', 'role', 'accessKey', 'className', 'contentEditable', 'contextMenu', 'dir', 'draggable', 'hidden', 'lang', 'spellCheck', 'style', 'tabIndex', 'title', 'loading_state', wildcard_names), + package = 'dashHtmlComponents' + ) + + structure(component, class = c('dash_component', 'list')) +} + +# AUTO GENERATED FILE - DO NOT EDIT + + +htmlFont <- function(children=NULL, id=NULL, n_clicks=NULL, n_clicks_timestamp=NULL, key=NULL, role=NULL, accessKey=NULL, className=NULL, contentEditable=NULL, contextMenu=NULL, dir=NULL, draggable=NULL, hidden=NULL, lang=NULL, spellCheck=NULL, style=NULL, tabIndex=NULL, title=NULL, loading_state=NULL, ...) { + + wildcard_names = names(dash_assert_valid_wildcards(attrib = list('data', 'aria'), ...)) + + props <- list(children=children, id=id, n_clicks=n_clicks, n_clicks_timestamp=n_clicks_timestamp, key=key, role=role, accessKey=accessKey, className=className, contentEditable=contentEditable, contextMenu=contextMenu, dir=dir, draggable=draggable, hidden=hidden, lang=lang, spellCheck=spellCheck, style=style, tabIndex=tabIndex, title=title, loading_state=loading_state, ...) + if (length(props) > 0) { + props <- props[!vapply(props, is.null, logical(1))] + } + component <- list( + props = props, + type = 'Font', + namespace = 'dash_html_components', + propNames = c('children', 'id', 'n_clicks', 'n_clicks_timestamp', 'key', 'role', 'accessKey', 'className', 'contentEditable', 'contextMenu', 'dir', 'draggable', 'hidden', 'lang', 'spellCheck', 'style', 'tabIndex', 'title', 'loading_state', wildcard_names), + package = 'dashHtmlComponents' + ) + + structure(component, class = c('dash_component', 'list')) +} + +# AUTO GENERATED FILE - DO NOT EDIT + + +htmlFooter <- function(children=NULL, id=NULL, n_clicks=NULL, n_clicks_timestamp=NULL, key=NULL, role=NULL, accessKey=NULL, className=NULL, contentEditable=NULL, contextMenu=NULL, dir=NULL, draggable=NULL, hidden=NULL, lang=NULL, spellCheck=NULL, style=NULL, tabIndex=NULL, title=NULL, loading_state=NULL, ...) { + + wildcard_names = names(dash_assert_valid_wildcards(attrib = list('data', 'aria'), ...)) + + props <- list(children=children, id=id, n_clicks=n_clicks, n_clicks_timestamp=n_clicks_timestamp, key=key, role=role, accessKey=accessKey, className=className, contentEditable=contentEditable, contextMenu=contextMenu, dir=dir, draggable=draggable, hidden=hidden, lang=lang, spellCheck=spellCheck, style=style, tabIndex=tabIndex, title=title, loading_state=loading_state, ...) + if (length(props) > 0) { + props <- props[!vapply(props, is.null, logical(1))] + } + component <- list( + props = props, + type = 'Footer', + namespace = 'dash_html_components', + propNames = c('children', 'id', 'n_clicks', 'n_clicks_timestamp', 'key', 'role', 'accessKey', 'className', 'contentEditable', 'contextMenu', 'dir', 'draggable', 'hidden', 'lang', 'spellCheck', 'style', 'tabIndex', 'title', 'loading_state', wildcard_names), + package = 'dashHtmlComponents' + ) + + structure(component, class = c('dash_component', 'list')) +} + +# AUTO GENERATED FILE - DO NOT EDIT + + +htmlForm <- function(children=NULL, id=NULL, n_clicks=NULL, n_clicks_timestamp=NULL, key=NULL, role=NULL, accept=NULL, acceptCharset=NULL, action=NULL, autoComplete=NULL, encType=NULL, method=NULL, name=NULL, noValidate=NULL, target=NULL, accessKey=NULL, className=NULL, contentEditable=NULL, contextMenu=NULL, dir=NULL, draggable=NULL, hidden=NULL, lang=NULL, spellCheck=NULL, style=NULL, tabIndex=NULL, title=NULL, loading_state=NULL, ...) { + + wildcard_names = names(dash_assert_valid_wildcards(attrib = list('data', 'aria'), ...)) + + props <- list(children=children, id=id, n_clicks=n_clicks, n_clicks_timestamp=n_clicks_timestamp, key=key, role=role, accept=accept, acceptCharset=acceptCharset, action=action, autoComplete=autoComplete, encType=encType, method=method, name=name, noValidate=noValidate, target=target, accessKey=accessKey, className=className, contentEditable=contentEditable, contextMenu=contextMenu, dir=dir, draggable=draggable, hidden=hidden, lang=lang, spellCheck=spellCheck, style=style, tabIndex=tabIndex, title=title, loading_state=loading_state, ...) + if (length(props) > 0) { + props <- props[!vapply(props, is.null, logical(1))] + } + component <- list( + props = props, + type = 'Form', + namespace = 'dash_html_components', + propNames = c('children', 'id', 'n_clicks', 'n_clicks_timestamp', 'key', 'role', 'accept', 'acceptCharset', 'action', 'autoComplete', 'encType', 'method', 'name', 'noValidate', 'target', 'accessKey', 'className', 'contentEditable', 'contextMenu', 'dir', 'draggable', 'hidden', 'lang', 'spellCheck', 'style', 'tabIndex', 'title', 'loading_state', wildcard_names), + package = 'dashHtmlComponents' + ) + + structure(component, class = c('dash_component', 'list')) +} + +# AUTO GENERATED FILE - DO NOT EDIT + + +htmlFrame <- function(children=NULL, id=NULL, n_clicks=NULL, n_clicks_timestamp=NULL, key=NULL, role=NULL, accessKey=NULL, className=NULL, contentEditable=NULL, contextMenu=NULL, dir=NULL, draggable=NULL, hidden=NULL, lang=NULL, spellCheck=NULL, style=NULL, tabIndex=NULL, title=NULL, loading_state=NULL, ...) { + + wildcard_names = names(dash_assert_valid_wildcards(attrib = list('data', 'aria'), ...)) + + props <- list(children=children, id=id, n_clicks=n_clicks, n_clicks_timestamp=n_clicks_timestamp, key=key, role=role, accessKey=accessKey, className=className, contentEditable=contentEditable, contextMenu=contextMenu, dir=dir, draggable=draggable, hidden=hidden, lang=lang, spellCheck=spellCheck, style=style, tabIndex=tabIndex, title=title, loading_state=loading_state, ...) + if (length(props) > 0) { + props <- props[!vapply(props, is.null, logical(1))] + } + component <- list( + props = props, + type = 'Frame', + namespace = 'dash_html_components', + propNames = c('children', 'id', 'n_clicks', 'n_clicks_timestamp', 'key', 'role', 'accessKey', 'className', 'contentEditable', 'contextMenu', 'dir', 'draggable', 'hidden', 'lang', 'spellCheck', 'style', 'tabIndex', 'title', 'loading_state', wildcard_names), + package = 'dashHtmlComponents' + ) + + structure(component, class = c('dash_component', 'list')) +} + +# AUTO GENERATED FILE - DO NOT EDIT + + +htmlFrameset <- function(children=NULL, id=NULL, n_clicks=NULL, n_clicks_timestamp=NULL, key=NULL, role=NULL, accessKey=NULL, className=NULL, contentEditable=NULL, contextMenu=NULL, dir=NULL, draggable=NULL, hidden=NULL, lang=NULL, spellCheck=NULL, style=NULL, tabIndex=NULL, title=NULL, loading_state=NULL, ...) { + + wildcard_names = names(dash_assert_valid_wildcards(attrib = list('data', 'aria'), ...)) + + props <- list(children=children, id=id, n_clicks=n_clicks, n_clicks_timestamp=n_clicks_timestamp, key=key, role=role, accessKey=accessKey, className=className, contentEditable=contentEditable, contextMenu=contextMenu, dir=dir, draggable=draggable, hidden=hidden, lang=lang, spellCheck=spellCheck, style=style, tabIndex=tabIndex, title=title, loading_state=loading_state, ...) + if (length(props) > 0) { + props <- props[!vapply(props, is.null, logical(1))] + } + component <- list( + props = props, + type = 'Frameset', + namespace = 'dash_html_components', + propNames = c('children', 'id', 'n_clicks', 'n_clicks_timestamp', 'key', 'role', 'accessKey', 'className', 'contentEditable', 'contextMenu', 'dir', 'draggable', 'hidden', 'lang', 'spellCheck', 'style', 'tabIndex', 'title', 'loading_state', wildcard_names), + package = 'dashHtmlComponents' + ) + + structure(component, class = c('dash_component', 'list')) +} + +# AUTO GENERATED FILE - DO NOT EDIT + + +htmlH1 <- function(children=NULL, id=NULL, n_clicks=NULL, n_clicks_timestamp=NULL, key=NULL, role=NULL, accessKey=NULL, className=NULL, contentEditable=NULL, contextMenu=NULL, dir=NULL, draggable=NULL, hidden=NULL, lang=NULL, spellCheck=NULL, style=NULL, tabIndex=NULL, title=NULL, loading_state=NULL, ...) { + + wildcard_names = names(dash_assert_valid_wildcards(attrib = list('data', 'aria'), ...)) + + props <- list(children=children, id=id, n_clicks=n_clicks, n_clicks_timestamp=n_clicks_timestamp, key=key, role=role, accessKey=accessKey, className=className, contentEditable=contentEditable, contextMenu=contextMenu, dir=dir, draggable=draggable, hidden=hidden, lang=lang, spellCheck=spellCheck, style=style, tabIndex=tabIndex, title=title, loading_state=loading_state, ...) + if (length(props) > 0) { + props <- props[!vapply(props, is.null, logical(1))] + } + component <- list( + props = props, + type = 'H1', + namespace = 'dash_html_components', + propNames = c('children', 'id', 'n_clicks', 'n_clicks_timestamp', 'key', 'role', 'accessKey', 'className', 'contentEditable', 'contextMenu', 'dir', 'draggable', 'hidden', 'lang', 'spellCheck', 'style', 'tabIndex', 'title', 'loading_state', wildcard_names), + package = 'dashHtmlComponents' + ) + + structure(component, class = c('dash_component', 'list')) +} + +# AUTO GENERATED FILE - DO NOT EDIT + + +htmlH2 <- function(children=NULL, id=NULL, n_clicks=NULL, n_clicks_timestamp=NULL, key=NULL, role=NULL, accessKey=NULL, className=NULL, contentEditable=NULL, contextMenu=NULL, dir=NULL, draggable=NULL, hidden=NULL, lang=NULL, spellCheck=NULL, style=NULL, tabIndex=NULL, title=NULL, loading_state=NULL, ...) { + + wildcard_names = names(dash_assert_valid_wildcards(attrib = list('data', 'aria'), ...)) + + props <- list(children=children, id=id, n_clicks=n_clicks, n_clicks_timestamp=n_clicks_timestamp, key=key, role=role, accessKey=accessKey, className=className, contentEditable=contentEditable, contextMenu=contextMenu, dir=dir, draggable=draggable, hidden=hidden, lang=lang, spellCheck=spellCheck, style=style, tabIndex=tabIndex, title=title, loading_state=loading_state, ...) + if (length(props) > 0) { + props <- props[!vapply(props, is.null, logical(1))] + } + component <- list( + props = props, + type = 'H2', + namespace = 'dash_html_components', + propNames = c('children', 'id', 'n_clicks', 'n_clicks_timestamp', 'key', 'role', 'accessKey', 'className', 'contentEditable', 'contextMenu', 'dir', 'draggable', 'hidden', 'lang', 'spellCheck', 'style', 'tabIndex', 'title', 'loading_state', wildcard_names), + package = 'dashHtmlComponents' + ) + + structure(component, class = c('dash_component', 'list')) +} + +# AUTO GENERATED FILE - DO NOT EDIT + + +htmlH3 <- function(children=NULL, id=NULL, n_clicks=NULL, n_clicks_timestamp=NULL, key=NULL, role=NULL, accessKey=NULL, className=NULL, contentEditable=NULL, contextMenu=NULL, dir=NULL, draggable=NULL, hidden=NULL, lang=NULL, spellCheck=NULL, style=NULL, tabIndex=NULL, title=NULL, loading_state=NULL, ...) { + + wildcard_names = names(dash_assert_valid_wildcards(attrib = list('data', 'aria'), ...)) + + props <- list(children=children, id=id, n_clicks=n_clicks, n_clicks_timestamp=n_clicks_timestamp, key=key, role=role, accessKey=accessKey, className=className, contentEditable=contentEditable, contextMenu=contextMenu, dir=dir, draggable=draggable, hidden=hidden, lang=lang, spellCheck=spellCheck, style=style, tabIndex=tabIndex, title=title, loading_state=loading_state, ...) + if (length(props) > 0) { + props <- props[!vapply(props, is.null, logical(1))] + } + component <- list( + props = props, + type = 'H3', + namespace = 'dash_html_components', + propNames = c('children', 'id', 'n_clicks', 'n_clicks_timestamp', 'key', 'role', 'accessKey', 'className', 'contentEditable', 'contextMenu', 'dir', 'draggable', 'hidden', 'lang', 'spellCheck', 'style', 'tabIndex', 'title', 'loading_state', wildcard_names), + package = 'dashHtmlComponents' + ) + + structure(component, class = c('dash_component', 'list')) +} + +# AUTO GENERATED FILE - DO NOT EDIT + + +htmlH4 <- function(children=NULL, id=NULL, n_clicks=NULL, n_clicks_timestamp=NULL, key=NULL, role=NULL, accessKey=NULL, className=NULL, contentEditable=NULL, contextMenu=NULL, dir=NULL, draggable=NULL, hidden=NULL, lang=NULL, spellCheck=NULL, style=NULL, tabIndex=NULL, title=NULL, loading_state=NULL, ...) { + + wildcard_names = names(dash_assert_valid_wildcards(attrib = list('data', 'aria'), ...)) + + props <- list(children=children, id=id, n_clicks=n_clicks, n_clicks_timestamp=n_clicks_timestamp, key=key, role=role, accessKey=accessKey, className=className, contentEditable=contentEditable, contextMenu=contextMenu, dir=dir, draggable=draggable, hidden=hidden, lang=lang, spellCheck=spellCheck, style=style, tabIndex=tabIndex, title=title, loading_state=loading_state, ...) + if (length(props) > 0) { + props <- props[!vapply(props, is.null, logical(1))] + } + component <- list( + props = props, + type = 'H4', + namespace = 'dash_html_components', + propNames = c('children', 'id', 'n_clicks', 'n_clicks_timestamp', 'key', 'role', 'accessKey', 'className', 'contentEditable', 'contextMenu', 'dir', 'draggable', 'hidden', 'lang', 'spellCheck', 'style', 'tabIndex', 'title', 'loading_state', wildcard_names), + package = 'dashHtmlComponents' + ) + + structure(component, class = c('dash_component', 'list')) +} + +# AUTO GENERATED FILE - DO NOT EDIT + + +htmlH5 <- function(children=NULL, id=NULL, n_clicks=NULL, n_clicks_timestamp=NULL, key=NULL, role=NULL, accessKey=NULL, className=NULL, contentEditable=NULL, contextMenu=NULL, dir=NULL, draggable=NULL, hidden=NULL, lang=NULL, spellCheck=NULL, style=NULL, tabIndex=NULL, title=NULL, loading_state=NULL, ...) { + + wildcard_names = names(dash_assert_valid_wildcards(attrib = list('data', 'aria'), ...)) + + props <- list(children=children, id=id, n_clicks=n_clicks, n_clicks_timestamp=n_clicks_timestamp, key=key, role=role, accessKey=accessKey, className=className, contentEditable=contentEditable, contextMenu=contextMenu, dir=dir, draggable=draggable, hidden=hidden, lang=lang, spellCheck=spellCheck, style=style, tabIndex=tabIndex, title=title, loading_state=loading_state, ...) + if (length(props) > 0) { + props <- props[!vapply(props, is.null, logical(1))] + } + component <- list( + props = props, + type = 'H5', + namespace = 'dash_html_components', + propNames = c('children', 'id', 'n_clicks', 'n_clicks_timestamp', 'key', 'role', 'accessKey', 'className', 'contentEditable', 'contextMenu', 'dir', 'draggable', 'hidden', 'lang', 'spellCheck', 'style', 'tabIndex', 'title', 'loading_state', wildcard_names), + package = 'dashHtmlComponents' + ) + + structure(component, class = c('dash_component', 'list')) +} + +# AUTO GENERATED FILE - DO NOT EDIT + + +htmlH6 <- function(children=NULL, id=NULL, n_clicks=NULL, n_clicks_timestamp=NULL, key=NULL, role=NULL, accessKey=NULL, className=NULL, contentEditable=NULL, contextMenu=NULL, dir=NULL, draggable=NULL, hidden=NULL, lang=NULL, spellCheck=NULL, style=NULL, tabIndex=NULL, title=NULL, loading_state=NULL, ...) { + + wildcard_names = names(dash_assert_valid_wildcards(attrib = list('data', 'aria'), ...)) + + props <- list(children=children, id=id, n_clicks=n_clicks, n_clicks_timestamp=n_clicks_timestamp, key=key, role=role, accessKey=accessKey, className=className, contentEditable=contentEditable, contextMenu=contextMenu, dir=dir, draggable=draggable, hidden=hidden, lang=lang, spellCheck=spellCheck, style=style, tabIndex=tabIndex, title=title, loading_state=loading_state, ...) + if (length(props) > 0) { + props <- props[!vapply(props, is.null, logical(1))] + } + component <- list( + props = props, + type = 'H6', + namespace = 'dash_html_components', + propNames = c('children', 'id', 'n_clicks', 'n_clicks_timestamp', 'key', 'role', 'accessKey', 'className', 'contentEditable', 'contextMenu', 'dir', 'draggable', 'hidden', 'lang', 'spellCheck', 'style', 'tabIndex', 'title', 'loading_state', wildcard_names), + package = 'dashHtmlComponents' + ) + + structure(component, class = c('dash_component', 'list')) +} + +# AUTO GENERATED FILE - DO NOT EDIT + + +htmlHeader <- function(children=NULL, id=NULL, n_clicks=NULL, n_clicks_timestamp=NULL, key=NULL, role=NULL, accessKey=NULL, className=NULL, contentEditable=NULL, contextMenu=NULL, dir=NULL, draggable=NULL, hidden=NULL, lang=NULL, spellCheck=NULL, style=NULL, tabIndex=NULL, title=NULL, loading_state=NULL, ...) { + + wildcard_names = names(dash_assert_valid_wildcards(attrib = list('data', 'aria'), ...)) + + props <- list(children=children, id=id, n_clicks=n_clicks, n_clicks_timestamp=n_clicks_timestamp, key=key, role=role, accessKey=accessKey, className=className, contentEditable=contentEditable, contextMenu=contextMenu, dir=dir, draggable=draggable, hidden=hidden, lang=lang, spellCheck=spellCheck, style=style, tabIndex=tabIndex, title=title, loading_state=loading_state, ...) + if (length(props) > 0) { + props <- props[!vapply(props, is.null, logical(1))] + } + component <- list( + props = props, + type = 'Header', + namespace = 'dash_html_components', + propNames = c('children', 'id', 'n_clicks', 'n_clicks_timestamp', 'key', 'role', 'accessKey', 'className', 'contentEditable', 'contextMenu', 'dir', 'draggable', 'hidden', 'lang', 'spellCheck', 'style', 'tabIndex', 'title', 'loading_state', wildcard_names), + package = 'dashHtmlComponents' + ) + + structure(component, class = c('dash_component', 'list')) +} + +# AUTO GENERATED FILE - DO NOT EDIT + + +htmlHgroup <- function(children=NULL, id=NULL, n_clicks=NULL, n_clicks_timestamp=NULL, key=NULL, role=NULL, accessKey=NULL, className=NULL, contentEditable=NULL, contextMenu=NULL, dir=NULL, draggable=NULL, hidden=NULL, lang=NULL, spellCheck=NULL, style=NULL, tabIndex=NULL, title=NULL, loading_state=NULL, ...) { + + wildcard_names = names(dash_assert_valid_wildcards(attrib = list('data', 'aria'), ...)) + + props <- list(children=children, id=id, n_clicks=n_clicks, n_clicks_timestamp=n_clicks_timestamp, key=key, role=role, accessKey=accessKey, className=className, contentEditable=contentEditable, contextMenu=contextMenu, dir=dir, draggable=draggable, hidden=hidden, lang=lang, spellCheck=spellCheck, style=style, tabIndex=tabIndex, title=title, loading_state=loading_state, ...) + if (length(props) > 0) { + props <- props[!vapply(props, is.null, logical(1))] + } + component <- list( + props = props, + type = 'Hgroup', + namespace = 'dash_html_components', + propNames = c('children', 'id', 'n_clicks', 'n_clicks_timestamp', 'key', 'role', 'accessKey', 'className', 'contentEditable', 'contextMenu', 'dir', 'draggable', 'hidden', 'lang', 'spellCheck', 'style', 'tabIndex', 'title', 'loading_state', wildcard_names), + package = 'dashHtmlComponents' + ) + + structure(component, class = c('dash_component', 'list')) +} + +# AUTO GENERATED FILE - DO NOT EDIT + + +htmlHr <- function(children=NULL, id=NULL, n_clicks=NULL, n_clicks_timestamp=NULL, key=NULL, role=NULL, accessKey=NULL, className=NULL, contentEditable=NULL, contextMenu=NULL, dir=NULL, draggable=NULL, hidden=NULL, lang=NULL, spellCheck=NULL, style=NULL, tabIndex=NULL, title=NULL, loading_state=NULL, ...) { + + wildcard_names = names(dash_assert_valid_wildcards(attrib = list('data', 'aria'), ...)) + + props <- list(children=children, id=id, n_clicks=n_clicks, n_clicks_timestamp=n_clicks_timestamp, key=key, role=role, accessKey=accessKey, className=className, contentEditable=contentEditable, contextMenu=contextMenu, dir=dir, draggable=draggable, hidden=hidden, lang=lang, spellCheck=spellCheck, style=style, tabIndex=tabIndex, title=title, loading_state=loading_state, ...) + if (length(props) > 0) { + props <- props[!vapply(props, is.null, logical(1))] + } + component <- list( + props = props, + type = 'Hr', + namespace = 'dash_html_components', + propNames = c('children', 'id', 'n_clicks', 'n_clicks_timestamp', 'key', 'role', 'accessKey', 'className', 'contentEditable', 'contextMenu', 'dir', 'draggable', 'hidden', 'lang', 'spellCheck', 'style', 'tabIndex', 'title', 'loading_state', wildcard_names), + package = 'dashHtmlComponents' + ) + + structure(component, class = c('dash_component', 'list')) +} + +# AUTO GENERATED FILE - DO NOT EDIT + + +htmlI <- function(children=NULL, id=NULL, n_clicks=NULL, n_clicks_timestamp=NULL, key=NULL, role=NULL, accessKey=NULL, className=NULL, contentEditable=NULL, contextMenu=NULL, dir=NULL, draggable=NULL, hidden=NULL, lang=NULL, spellCheck=NULL, style=NULL, tabIndex=NULL, title=NULL, loading_state=NULL, ...) { + + wildcard_names = names(dash_assert_valid_wildcards(attrib = list('data', 'aria'), ...)) + + props <- list(children=children, id=id, n_clicks=n_clicks, n_clicks_timestamp=n_clicks_timestamp, key=key, role=role, accessKey=accessKey, className=className, contentEditable=contentEditable, contextMenu=contextMenu, dir=dir, draggable=draggable, hidden=hidden, lang=lang, spellCheck=spellCheck, style=style, tabIndex=tabIndex, title=title, loading_state=loading_state, ...) + if (length(props) > 0) { + props <- props[!vapply(props, is.null, logical(1))] + } + component <- list( + props = props, + type = 'I', + namespace = 'dash_html_components', + propNames = c('children', 'id', 'n_clicks', 'n_clicks_timestamp', 'key', 'role', 'accessKey', 'className', 'contentEditable', 'contextMenu', 'dir', 'draggable', 'hidden', 'lang', 'spellCheck', 'style', 'tabIndex', 'title', 'loading_state', wildcard_names), + package = 'dashHtmlComponents' + ) + + structure(component, class = c('dash_component', 'list')) +} + +# AUTO GENERATED FILE - DO NOT EDIT + + +htmlIframe <- function(children=NULL, id=NULL, n_clicks=NULL, n_clicks_timestamp=NULL, key=NULL, role=NULL, allow=NULL, height=NULL, name=NULL, referrerPolicy=NULL, sandbox=NULL, src=NULL, srcDoc=NULL, width=NULL, accessKey=NULL, className=NULL, contentEditable=NULL, contextMenu=NULL, dir=NULL, draggable=NULL, hidden=NULL, lang=NULL, spellCheck=NULL, style=NULL, tabIndex=NULL, title=NULL, loading_state=NULL, ...) { + + wildcard_names = names(dash_assert_valid_wildcards(attrib = list('data', 'aria'), ...)) + + props <- list(children=children, id=id, n_clicks=n_clicks, n_clicks_timestamp=n_clicks_timestamp, key=key, role=role, allow=allow, height=height, name=name, referrerPolicy=referrerPolicy, sandbox=sandbox, src=src, srcDoc=srcDoc, width=width, accessKey=accessKey, className=className, contentEditable=contentEditable, contextMenu=contextMenu, dir=dir, draggable=draggable, hidden=hidden, lang=lang, spellCheck=spellCheck, style=style, tabIndex=tabIndex, title=title, loading_state=loading_state, ...) + if (length(props) > 0) { + props <- props[!vapply(props, is.null, logical(1))] + } + component <- list( + props = props, + type = 'Iframe', + namespace = 'dash_html_components', + propNames = c('children', 'id', 'n_clicks', 'n_clicks_timestamp', 'key', 'role', 'allow', 'height', 'name', 'referrerPolicy', 'sandbox', 'src', 'srcDoc', 'width', 'accessKey', 'className', 'contentEditable', 'contextMenu', 'dir', 'draggable', 'hidden', 'lang', 'spellCheck', 'style', 'tabIndex', 'title', 'loading_state', wildcard_names), + package = 'dashHtmlComponents' + ) + + structure(component, class = c('dash_component', 'list')) +} + +# AUTO GENERATED FILE - DO NOT EDIT + + +htmlImg <- function(children=NULL, id=NULL, n_clicks=NULL, n_clicks_timestamp=NULL, key=NULL, role=NULL, alt=NULL, crossOrigin=NULL, height=NULL, referrerPolicy=NULL, sizes=NULL, src=NULL, srcSet=NULL, useMap=NULL, width=NULL, accessKey=NULL, className=NULL, contentEditable=NULL, contextMenu=NULL, dir=NULL, draggable=NULL, hidden=NULL, lang=NULL, spellCheck=NULL, style=NULL, tabIndex=NULL, title=NULL, loading_state=NULL, ...) { + + wildcard_names = names(dash_assert_valid_wildcards(attrib = list('data', 'aria'), ...)) + + props <- list(children=children, id=id, n_clicks=n_clicks, n_clicks_timestamp=n_clicks_timestamp, key=key, role=role, alt=alt, crossOrigin=crossOrigin, height=height, referrerPolicy=referrerPolicy, sizes=sizes, src=src, srcSet=srcSet, useMap=useMap, width=width, accessKey=accessKey, className=className, contentEditable=contentEditable, contextMenu=contextMenu, dir=dir, draggable=draggable, hidden=hidden, lang=lang, spellCheck=spellCheck, style=style, tabIndex=tabIndex, title=title, loading_state=loading_state, ...) + if (length(props) > 0) { + props <- props[!vapply(props, is.null, logical(1))] + } + component <- list( + props = props, + type = 'Img', + namespace = 'dash_html_components', + propNames = c('children', 'id', 'n_clicks', 'n_clicks_timestamp', 'key', 'role', 'alt', 'crossOrigin', 'height', 'referrerPolicy', 'sizes', 'src', 'srcSet', 'useMap', 'width', 'accessKey', 'className', 'contentEditable', 'contextMenu', 'dir', 'draggable', 'hidden', 'lang', 'spellCheck', 'style', 'tabIndex', 'title', 'loading_state', wildcard_names), + package = 'dashHtmlComponents' + ) + + structure(component, class = c('dash_component', 'list')) +} + +# AUTO GENERATED FILE - DO NOT EDIT + + +htmlIns <- function(children=NULL, id=NULL, n_clicks=NULL, n_clicks_timestamp=NULL, key=NULL, role=NULL, cite=NULL, dateTime=NULL, accessKey=NULL, className=NULL, contentEditable=NULL, contextMenu=NULL, dir=NULL, draggable=NULL, hidden=NULL, lang=NULL, spellCheck=NULL, style=NULL, tabIndex=NULL, title=NULL, loading_state=NULL, ...) { + + wildcard_names = names(dash_assert_valid_wildcards(attrib = list('data', 'aria'), ...)) + + props <- list(children=children, id=id, n_clicks=n_clicks, n_clicks_timestamp=n_clicks_timestamp, key=key, role=role, cite=cite, dateTime=dateTime, accessKey=accessKey, className=className, contentEditable=contentEditable, contextMenu=contextMenu, dir=dir, draggable=draggable, hidden=hidden, lang=lang, spellCheck=spellCheck, style=style, tabIndex=tabIndex, title=title, loading_state=loading_state, ...) + if (length(props) > 0) { + props <- props[!vapply(props, is.null, logical(1))] + } + component <- list( + props = props, + type = 'Ins', + namespace = 'dash_html_components', + propNames = c('children', 'id', 'n_clicks', 'n_clicks_timestamp', 'key', 'role', 'cite', 'dateTime', 'accessKey', 'className', 'contentEditable', 'contextMenu', 'dir', 'draggable', 'hidden', 'lang', 'spellCheck', 'style', 'tabIndex', 'title', 'loading_state', wildcard_names), + package = 'dashHtmlComponents' + ) + + structure(component, class = c('dash_component', 'list')) +} + +# AUTO GENERATED FILE - DO NOT EDIT + + +htmlKbd <- function(children=NULL, id=NULL, n_clicks=NULL, n_clicks_timestamp=NULL, key=NULL, role=NULL, accessKey=NULL, className=NULL, contentEditable=NULL, contextMenu=NULL, dir=NULL, draggable=NULL, hidden=NULL, lang=NULL, spellCheck=NULL, style=NULL, tabIndex=NULL, title=NULL, loading_state=NULL, ...) { + + wildcard_names = names(dash_assert_valid_wildcards(attrib = list('data', 'aria'), ...)) + + props <- list(children=children, id=id, n_clicks=n_clicks, n_clicks_timestamp=n_clicks_timestamp, key=key, role=role, accessKey=accessKey, className=className, contentEditable=contentEditable, contextMenu=contextMenu, dir=dir, draggable=draggable, hidden=hidden, lang=lang, spellCheck=spellCheck, style=style, tabIndex=tabIndex, title=title, loading_state=loading_state, ...) + if (length(props) > 0) { + props <- props[!vapply(props, is.null, logical(1))] + } + component <- list( + props = props, + type = 'Kbd', + namespace = 'dash_html_components', + propNames = c('children', 'id', 'n_clicks', 'n_clicks_timestamp', 'key', 'role', 'accessKey', 'className', 'contentEditable', 'contextMenu', 'dir', 'draggable', 'hidden', 'lang', 'spellCheck', 'style', 'tabIndex', 'title', 'loading_state', wildcard_names), + package = 'dashHtmlComponents' + ) + + structure(component, class = c('dash_component', 'list')) +} + +# AUTO GENERATED FILE - DO NOT EDIT + + +htmlKeygen <- function(children=NULL, id=NULL, n_clicks=NULL, n_clicks_timestamp=NULL, key=NULL, role=NULL, autoFocus=NULL, challenge=NULL, disabled=NULL, form=NULL, keyType=NULL, name=NULL, accessKey=NULL, className=NULL, contentEditable=NULL, contextMenu=NULL, dir=NULL, draggable=NULL, hidden=NULL, lang=NULL, spellCheck=NULL, style=NULL, tabIndex=NULL, title=NULL, loading_state=NULL, ...) { + + wildcard_names = names(dash_assert_valid_wildcards(attrib = list('data', 'aria'), ...)) + + props <- list(children=children, id=id, n_clicks=n_clicks, n_clicks_timestamp=n_clicks_timestamp, key=key, role=role, autoFocus=autoFocus, challenge=challenge, disabled=disabled, form=form, keyType=keyType, name=name, accessKey=accessKey, className=className, contentEditable=contentEditable, contextMenu=contextMenu, dir=dir, draggable=draggable, hidden=hidden, lang=lang, spellCheck=spellCheck, style=style, tabIndex=tabIndex, title=title, loading_state=loading_state, ...) + if (length(props) > 0) { + props <- props[!vapply(props, is.null, logical(1))] + } + component <- list( + props = props, + type = 'Keygen', + namespace = 'dash_html_components', + propNames = c('children', 'id', 'n_clicks', 'n_clicks_timestamp', 'key', 'role', 'autoFocus', 'challenge', 'disabled', 'form', 'keyType', 'name', 'accessKey', 'className', 'contentEditable', 'contextMenu', 'dir', 'draggable', 'hidden', 'lang', 'spellCheck', 'style', 'tabIndex', 'title', 'loading_state', wildcard_names), + package = 'dashHtmlComponents' + ) + + structure(component, class = c('dash_component', 'list')) +} + +# AUTO GENERATED FILE - DO NOT EDIT + + +htmlLabel <- function(children=NULL, id=NULL, n_clicks=NULL, n_clicks_timestamp=NULL, key=NULL, role=NULL, htmlFor=NULL, form=NULL, accessKey=NULL, className=NULL, contentEditable=NULL, contextMenu=NULL, dir=NULL, draggable=NULL, hidden=NULL, lang=NULL, spellCheck=NULL, style=NULL, tabIndex=NULL, title=NULL, loading_state=NULL, ...) { + + wildcard_names = names(dash_assert_valid_wildcards(attrib = list('data', 'aria'), ...)) + + props <- list(children=children, id=id, n_clicks=n_clicks, n_clicks_timestamp=n_clicks_timestamp, key=key, role=role, htmlFor=htmlFor, form=form, accessKey=accessKey, className=className, contentEditable=contentEditable, contextMenu=contextMenu, dir=dir, draggable=draggable, hidden=hidden, lang=lang, spellCheck=spellCheck, style=style, tabIndex=tabIndex, title=title, loading_state=loading_state, ...) + if (length(props) > 0) { + props <- props[!vapply(props, is.null, logical(1))] + } + component <- list( + props = props, + type = 'Label', + namespace = 'dash_html_components', + propNames = c('children', 'id', 'n_clicks', 'n_clicks_timestamp', 'key', 'role', 'htmlFor', 'form', 'accessKey', 'className', 'contentEditable', 'contextMenu', 'dir', 'draggable', 'hidden', 'lang', 'spellCheck', 'style', 'tabIndex', 'title', 'loading_state', wildcard_names), + package = 'dashHtmlComponents' + ) + + structure(component, class = c('dash_component', 'list')) +} + +# AUTO GENERATED FILE - DO NOT EDIT + + +htmlLegend <- function(children=NULL, id=NULL, n_clicks=NULL, n_clicks_timestamp=NULL, key=NULL, role=NULL, accessKey=NULL, className=NULL, contentEditable=NULL, contextMenu=NULL, dir=NULL, draggable=NULL, hidden=NULL, lang=NULL, spellCheck=NULL, style=NULL, tabIndex=NULL, title=NULL, loading_state=NULL, ...) { + + wildcard_names = names(dash_assert_valid_wildcards(attrib = list('data', 'aria'), ...)) + + props <- list(children=children, id=id, n_clicks=n_clicks, n_clicks_timestamp=n_clicks_timestamp, key=key, role=role, accessKey=accessKey, className=className, contentEditable=contentEditable, contextMenu=contextMenu, dir=dir, draggable=draggable, hidden=hidden, lang=lang, spellCheck=spellCheck, style=style, tabIndex=tabIndex, title=title, loading_state=loading_state, ...) + if (length(props) > 0) { + props <- props[!vapply(props, is.null, logical(1))] + } + component <- list( + props = props, + type = 'Legend', + namespace = 'dash_html_components', + propNames = c('children', 'id', 'n_clicks', 'n_clicks_timestamp', 'key', 'role', 'accessKey', 'className', 'contentEditable', 'contextMenu', 'dir', 'draggable', 'hidden', 'lang', 'spellCheck', 'style', 'tabIndex', 'title', 'loading_state', wildcard_names), + package = 'dashHtmlComponents' + ) + + structure(component, class = c('dash_component', 'list')) +} + +# AUTO GENERATED FILE - DO NOT EDIT + + +htmlLi <- function(children=NULL, id=NULL, n_clicks=NULL, n_clicks_timestamp=NULL, key=NULL, role=NULL, value=NULL, accessKey=NULL, className=NULL, contentEditable=NULL, contextMenu=NULL, dir=NULL, draggable=NULL, hidden=NULL, lang=NULL, spellCheck=NULL, style=NULL, tabIndex=NULL, title=NULL, loading_state=NULL, ...) { + + wildcard_names = names(dash_assert_valid_wildcards(attrib = list('data', 'aria'), ...)) + + props <- list(children=children, id=id, n_clicks=n_clicks, n_clicks_timestamp=n_clicks_timestamp, key=key, role=role, value=value, accessKey=accessKey, className=className, contentEditable=contentEditable, contextMenu=contextMenu, dir=dir, draggable=draggable, hidden=hidden, lang=lang, spellCheck=spellCheck, style=style, tabIndex=tabIndex, title=title, loading_state=loading_state, ...) + if (length(props) > 0) { + props <- props[!vapply(props, is.null, logical(1))] + } + component <- list( + props = props, + type = 'Li', + namespace = 'dash_html_components', + propNames = c('children', 'id', 'n_clicks', 'n_clicks_timestamp', 'key', 'role', 'value', 'accessKey', 'className', 'contentEditable', 'contextMenu', 'dir', 'draggable', 'hidden', 'lang', 'spellCheck', 'style', 'tabIndex', 'title', 'loading_state', wildcard_names), + package = 'dashHtmlComponents' + ) + + structure(component, class = c('dash_component', 'list')) +} + +# AUTO GENERATED FILE - DO NOT EDIT + + +htmlLink <- function(children=NULL, id=NULL, n_clicks=NULL, n_clicks_timestamp=NULL, key=NULL, role=NULL, crossOrigin=NULL, href=NULL, hrefLang=NULL, integrity=NULL, media=NULL, referrerPolicy=NULL, rel=NULL, sizes=NULL, type=NULL, accessKey=NULL, className=NULL, contentEditable=NULL, contextMenu=NULL, dir=NULL, draggable=NULL, hidden=NULL, lang=NULL, spellCheck=NULL, style=NULL, tabIndex=NULL, title=NULL, loading_state=NULL, ...) { + + wildcard_names = names(dash_assert_valid_wildcards(attrib = list('data', 'aria'), ...)) + + props <- list(children=children, id=id, n_clicks=n_clicks, n_clicks_timestamp=n_clicks_timestamp, key=key, role=role, crossOrigin=crossOrigin, href=href, hrefLang=hrefLang, integrity=integrity, media=media, referrerPolicy=referrerPolicy, rel=rel, sizes=sizes, type=type, accessKey=accessKey, className=className, contentEditable=contentEditable, contextMenu=contextMenu, dir=dir, draggable=draggable, hidden=hidden, lang=lang, spellCheck=spellCheck, style=style, tabIndex=tabIndex, title=title, loading_state=loading_state, ...) + if (length(props) > 0) { + props <- props[!vapply(props, is.null, logical(1))] + } + component <- list( + props = props, + type = 'Link', + namespace = 'dash_html_components', + propNames = c('children', 'id', 'n_clicks', 'n_clicks_timestamp', 'key', 'role', 'crossOrigin', 'href', 'hrefLang', 'integrity', 'media', 'referrerPolicy', 'rel', 'sizes', 'type', 'accessKey', 'className', 'contentEditable', 'contextMenu', 'dir', 'draggable', 'hidden', 'lang', 'spellCheck', 'style', 'tabIndex', 'title', 'loading_state', wildcard_names), + package = 'dashHtmlComponents' + ) + + structure(component, class = c('dash_component', 'list')) +} + +# AUTO GENERATED FILE - DO NOT EDIT + + +htmlMain <- function(children=NULL, id=NULL, n_clicks=NULL, n_clicks_timestamp=NULL, key=NULL, role=NULL, accessKey=NULL, className=NULL, contentEditable=NULL, contextMenu=NULL, dir=NULL, draggable=NULL, hidden=NULL, lang=NULL, spellCheck=NULL, style=NULL, tabIndex=NULL, title=NULL, loading_state=NULL, ...) { + + wildcard_names = names(dash_assert_valid_wildcards(attrib = list('data', 'aria'), ...)) + + props <- list(children=children, id=id, n_clicks=n_clicks, n_clicks_timestamp=n_clicks_timestamp, key=key, role=role, accessKey=accessKey, className=className, contentEditable=contentEditable, contextMenu=contextMenu, dir=dir, draggable=draggable, hidden=hidden, lang=lang, spellCheck=spellCheck, style=style, tabIndex=tabIndex, title=title, loading_state=loading_state, ...) + if (length(props) > 0) { + props <- props[!vapply(props, is.null, logical(1))] + } + component <- list( + props = props, + type = 'Main', + namespace = 'dash_html_components', + propNames = c('children', 'id', 'n_clicks', 'n_clicks_timestamp', 'key', 'role', 'accessKey', 'className', 'contentEditable', 'contextMenu', 'dir', 'draggable', 'hidden', 'lang', 'spellCheck', 'style', 'tabIndex', 'title', 'loading_state', wildcard_names), + package = 'dashHtmlComponents' + ) + + structure(component, class = c('dash_component', 'list')) +} + +# AUTO GENERATED FILE - DO NOT EDIT + + +htmlMapEl <- function(children=NULL, id=NULL, n_clicks=NULL, n_clicks_timestamp=NULL, key=NULL, role=NULL, name=NULL, accessKey=NULL, className=NULL, contentEditable=NULL, contextMenu=NULL, dir=NULL, draggable=NULL, hidden=NULL, lang=NULL, spellCheck=NULL, style=NULL, tabIndex=NULL, title=NULL, loading_state=NULL, ...) { + + wildcard_names = names(dash_assert_valid_wildcards(attrib = list('data', 'aria'), ...)) + + props <- list(children=children, id=id, n_clicks=n_clicks, n_clicks_timestamp=n_clicks_timestamp, key=key, role=role, name=name, accessKey=accessKey, className=className, contentEditable=contentEditable, contextMenu=contextMenu, dir=dir, draggable=draggable, hidden=hidden, lang=lang, spellCheck=spellCheck, style=style, tabIndex=tabIndex, title=title, loading_state=loading_state, ...) + if (length(props) > 0) { + props <- props[!vapply(props, is.null, logical(1))] + } + component <- list( + props = props, + type = 'MapEl', + namespace = 'dash_html_components', + propNames = c('children', 'id', 'n_clicks', 'n_clicks_timestamp', 'key', 'role', 'name', 'accessKey', 'className', 'contentEditable', 'contextMenu', 'dir', 'draggable', 'hidden', 'lang', 'spellCheck', 'style', 'tabIndex', 'title', 'loading_state', wildcard_names), + package = 'dashHtmlComponents' + ) + + structure(component, class = c('dash_component', 'list')) +} + +# AUTO GENERATED FILE - DO NOT EDIT + + +htmlMark <- function(children=NULL, id=NULL, n_clicks=NULL, n_clicks_timestamp=NULL, key=NULL, role=NULL, accessKey=NULL, className=NULL, contentEditable=NULL, contextMenu=NULL, dir=NULL, draggable=NULL, hidden=NULL, lang=NULL, spellCheck=NULL, style=NULL, tabIndex=NULL, title=NULL, loading_state=NULL, ...) { + + wildcard_names = names(dash_assert_valid_wildcards(attrib = list('data', 'aria'), ...)) + + props <- list(children=children, id=id, n_clicks=n_clicks, n_clicks_timestamp=n_clicks_timestamp, key=key, role=role, accessKey=accessKey, className=className, contentEditable=contentEditable, contextMenu=contextMenu, dir=dir, draggable=draggable, hidden=hidden, lang=lang, spellCheck=spellCheck, style=style, tabIndex=tabIndex, title=title, loading_state=loading_state, ...) + if (length(props) > 0) { + props <- props[!vapply(props, is.null, logical(1))] + } + component <- list( + props = props, + type = 'Mark', + namespace = 'dash_html_components', + propNames = c('children', 'id', 'n_clicks', 'n_clicks_timestamp', 'key', 'role', 'accessKey', 'className', 'contentEditable', 'contextMenu', 'dir', 'draggable', 'hidden', 'lang', 'spellCheck', 'style', 'tabIndex', 'title', 'loading_state', wildcard_names), + package = 'dashHtmlComponents' + ) + + structure(component, class = c('dash_component', 'list')) +} + +# AUTO GENERATED FILE - DO NOT EDIT + + +htmlMarquee <- function(children=NULL, id=NULL, n_clicks=NULL, n_clicks_timestamp=NULL, key=NULL, role=NULL, loop=NULL, accessKey=NULL, className=NULL, contentEditable=NULL, contextMenu=NULL, dir=NULL, draggable=NULL, hidden=NULL, lang=NULL, spellCheck=NULL, style=NULL, tabIndex=NULL, title=NULL, loading_state=NULL, ...) { + + wildcard_names = names(dash_assert_valid_wildcards(attrib = list('data', 'aria'), ...)) + + props <- list(children=children, id=id, n_clicks=n_clicks, n_clicks_timestamp=n_clicks_timestamp, key=key, role=role, loop=loop, accessKey=accessKey, className=className, contentEditable=contentEditable, contextMenu=contextMenu, dir=dir, draggable=draggable, hidden=hidden, lang=lang, spellCheck=spellCheck, style=style, tabIndex=tabIndex, title=title, loading_state=loading_state, ...) + if (length(props) > 0) { + props <- props[!vapply(props, is.null, logical(1))] + } + component <- list( + props = props, + type = 'Marquee', + namespace = 'dash_html_components', + propNames = c('children', 'id', 'n_clicks', 'n_clicks_timestamp', 'key', 'role', 'loop', 'accessKey', 'className', 'contentEditable', 'contextMenu', 'dir', 'draggable', 'hidden', 'lang', 'spellCheck', 'style', 'tabIndex', 'title', 'loading_state', wildcard_names), + package = 'dashHtmlComponents' + ) + + structure(component, class = c('dash_component', 'list')) +} + +# AUTO GENERATED FILE - DO NOT EDIT + + +htmlMeta <- function(children=NULL, id=NULL, n_clicks=NULL, n_clicks_timestamp=NULL, key=NULL, role=NULL, charSet=NULL, content=NULL, httpEquiv=NULL, name=NULL, accessKey=NULL, className=NULL, contentEditable=NULL, contextMenu=NULL, dir=NULL, draggable=NULL, hidden=NULL, lang=NULL, spellCheck=NULL, style=NULL, tabIndex=NULL, title=NULL, loading_state=NULL, ...) { + + wildcard_names = names(dash_assert_valid_wildcards(attrib = list('data', 'aria'), ...)) + + props <- list(children=children, id=id, n_clicks=n_clicks, n_clicks_timestamp=n_clicks_timestamp, key=key, role=role, charSet=charSet, content=content, httpEquiv=httpEquiv, name=name, accessKey=accessKey, className=className, contentEditable=contentEditable, contextMenu=contextMenu, dir=dir, draggable=draggable, hidden=hidden, lang=lang, spellCheck=spellCheck, style=style, tabIndex=tabIndex, title=title, loading_state=loading_state, ...) + if (length(props) > 0) { + props <- props[!vapply(props, is.null, logical(1))] + } + component <- list( + props = props, + type = 'Meta', + namespace = 'dash_html_components', + propNames = c('children', 'id', 'n_clicks', 'n_clicks_timestamp', 'key', 'role', 'charSet', 'content', 'httpEquiv', 'name', 'accessKey', 'className', 'contentEditable', 'contextMenu', 'dir', 'draggable', 'hidden', 'lang', 'spellCheck', 'style', 'tabIndex', 'title', 'loading_state', wildcard_names), + package = 'dashHtmlComponents' + ) + + structure(component, class = c('dash_component', 'list')) +} + +# AUTO GENERATED FILE - DO NOT EDIT + + +htmlMeter <- function(children=NULL, id=NULL, n_clicks=NULL, n_clicks_timestamp=NULL, key=NULL, role=NULL, form=NULL, high=NULL, low=NULL, max=NULL, min=NULL, optimum=NULL, value=NULL, accessKey=NULL, className=NULL, contentEditable=NULL, contextMenu=NULL, dir=NULL, draggable=NULL, hidden=NULL, lang=NULL, spellCheck=NULL, style=NULL, tabIndex=NULL, title=NULL, loading_state=NULL, ...) { + + wildcard_names = names(dash_assert_valid_wildcards(attrib = list('data', 'aria'), ...)) + + props <- list(children=children, id=id, n_clicks=n_clicks, n_clicks_timestamp=n_clicks_timestamp, key=key, role=role, form=form, high=high, low=low, max=max, min=min, optimum=optimum, value=value, accessKey=accessKey, className=className, contentEditable=contentEditable, contextMenu=contextMenu, dir=dir, draggable=draggable, hidden=hidden, lang=lang, spellCheck=spellCheck, style=style, tabIndex=tabIndex, title=title, loading_state=loading_state, ...) + if (length(props) > 0) { + props <- props[!vapply(props, is.null, logical(1))] + } + component <- list( + props = props, + type = 'Meter', + namespace = 'dash_html_components', + propNames = c('children', 'id', 'n_clicks', 'n_clicks_timestamp', 'key', 'role', 'form', 'high', 'low', 'max', 'min', 'optimum', 'value', 'accessKey', 'className', 'contentEditable', 'contextMenu', 'dir', 'draggable', 'hidden', 'lang', 'spellCheck', 'style', 'tabIndex', 'title', 'loading_state', wildcard_names), + package = 'dashHtmlComponents' + ) + + structure(component, class = c('dash_component', 'list')) +} + +# AUTO GENERATED FILE - DO NOT EDIT + + +htmlNav <- function(children=NULL, id=NULL, n_clicks=NULL, n_clicks_timestamp=NULL, key=NULL, role=NULL, accessKey=NULL, className=NULL, contentEditable=NULL, contextMenu=NULL, dir=NULL, draggable=NULL, hidden=NULL, lang=NULL, spellCheck=NULL, style=NULL, tabIndex=NULL, title=NULL, loading_state=NULL, ...) { + + wildcard_names = names(dash_assert_valid_wildcards(attrib = list('data', 'aria'), ...)) + + props <- list(children=children, id=id, n_clicks=n_clicks, n_clicks_timestamp=n_clicks_timestamp, key=key, role=role, accessKey=accessKey, className=className, contentEditable=contentEditable, contextMenu=contextMenu, dir=dir, draggable=draggable, hidden=hidden, lang=lang, spellCheck=spellCheck, style=style, tabIndex=tabIndex, title=title, loading_state=loading_state, ...) + if (length(props) > 0) { + props <- props[!vapply(props, is.null, logical(1))] + } + component <- list( + props = props, + type = 'Nav', + namespace = 'dash_html_components', + propNames = c('children', 'id', 'n_clicks', 'n_clicks_timestamp', 'key', 'role', 'accessKey', 'className', 'contentEditable', 'contextMenu', 'dir', 'draggable', 'hidden', 'lang', 'spellCheck', 'style', 'tabIndex', 'title', 'loading_state', wildcard_names), + package = 'dashHtmlComponents' + ) + + structure(component, class = c('dash_component', 'list')) +} + +# AUTO GENERATED FILE - DO NOT EDIT + + +htmlNobr <- function(children=NULL, id=NULL, n_clicks=NULL, n_clicks_timestamp=NULL, key=NULL, role=NULL, accessKey=NULL, className=NULL, contentEditable=NULL, contextMenu=NULL, dir=NULL, draggable=NULL, hidden=NULL, lang=NULL, spellCheck=NULL, style=NULL, tabIndex=NULL, title=NULL, loading_state=NULL, ...) { + + wildcard_names = names(dash_assert_valid_wildcards(attrib = list('data', 'aria'), ...)) + + props <- list(children=children, id=id, n_clicks=n_clicks, n_clicks_timestamp=n_clicks_timestamp, key=key, role=role, accessKey=accessKey, className=className, contentEditable=contentEditable, contextMenu=contextMenu, dir=dir, draggable=draggable, hidden=hidden, lang=lang, spellCheck=spellCheck, style=style, tabIndex=tabIndex, title=title, loading_state=loading_state, ...) + if (length(props) > 0) { + props <- props[!vapply(props, is.null, logical(1))] + } + component <- list( + props = props, + type = 'Nobr', + namespace = 'dash_html_components', + propNames = c('children', 'id', 'n_clicks', 'n_clicks_timestamp', 'key', 'role', 'accessKey', 'className', 'contentEditable', 'contextMenu', 'dir', 'draggable', 'hidden', 'lang', 'spellCheck', 'style', 'tabIndex', 'title', 'loading_state', wildcard_names), + package = 'dashHtmlComponents' + ) + + structure(component, class = c('dash_component', 'list')) +} + +# AUTO GENERATED FILE - DO NOT EDIT + + +htmlNoscript <- function(children=NULL, id=NULL, n_clicks=NULL, n_clicks_timestamp=NULL, key=NULL, role=NULL, accessKey=NULL, className=NULL, contentEditable=NULL, contextMenu=NULL, dir=NULL, draggable=NULL, hidden=NULL, lang=NULL, spellCheck=NULL, style=NULL, tabIndex=NULL, title=NULL, loading_state=NULL, ...) { + + wildcard_names = names(dash_assert_valid_wildcards(attrib = list('data', 'aria'), ...)) + + props <- list(children=children, id=id, n_clicks=n_clicks, n_clicks_timestamp=n_clicks_timestamp, key=key, role=role, accessKey=accessKey, className=className, contentEditable=contentEditable, contextMenu=contextMenu, dir=dir, draggable=draggable, hidden=hidden, lang=lang, spellCheck=spellCheck, style=style, tabIndex=tabIndex, title=title, loading_state=loading_state, ...) + if (length(props) > 0) { + props <- props[!vapply(props, is.null, logical(1))] + } + component <- list( + props = props, + type = 'Noscript', + namespace = 'dash_html_components', + propNames = c('children', 'id', 'n_clicks', 'n_clicks_timestamp', 'key', 'role', 'accessKey', 'className', 'contentEditable', 'contextMenu', 'dir', 'draggable', 'hidden', 'lang', 'spellCheck', 'style', 'tabIndex', 'title', 'loading_state', wildcard_names), + package = 'dashHtmlComponents' + ) + + structure(component, class = c('dash_component', 'list')) +} + +# AUTO GENERATED FILE - DO NOT EDIT + + +htmlObjectEl <- function(children=NULL, id=NULL, n_clicks=NULL, n_clicks_timestamp=NULL, key=NULL, role=NULL, data=NULL, form=NULL, height=NULL, name=NULL, type=NULL, useMap=NULL, width=NULL, accessKey=NULL, className=NULL, contentEditable=NULL, contextMenu=NULL, dir=NULL, draggable=NULL, hidden=NULL, lang=NULL, spellCheck=NULL, style=NULL, tabIndex=NULL, title=NULL, loading_state=NULL, ...) { + + wildcard_names = names(dash_assert_valid_wildcards(attrib = list('data', 'aria'), ...)) + + props <- list(children=children, id=id, n_clicks=n_clicks, n_clicks_timestamp=n_clicks_timestamp, key=key, role=role, data=data, form=form, height=height, name=name, type=type, useMap=useMap, width=width, accessKey=accessKey, className=className, contentEditable=contentEditable, contextMenu=contextMenu, dir=dir, draggable=draggable, hidden=hidden, lang=lang, spellCheck=spellCheck, style=style, tabIndex=tabIndex, title=title, loading_state=loading_state, ...) + if (length(props) > 0) { + props <- props[!vapply(props, is.null, logical(1))] + } + component <- list( + props = props, + type = 'ObjectEl', + namespace = 'dash_html_components', + propNames = c('children', 'id', 'n_clicks', 'n_clicks_timestamp', 'key', 'role', 'data', 'form', 'height', 'name', 'type', 'useMap', 'width', 'accessKey', 'className', 'contentEditable', 'contextMenu', 'dir', 'draggable', 'hidden', 'lang', 'spellCheck', 'style', 'tabIndex', 'title', 'loading_state', wildcard_names), + package = 'dashHtmlComponents' + ) + + structure(component, class = c('dash_component', 'list')) +} + +# AUTO GENERATED FILE - DO NOT EDIT + + +htmlOl <- function(children=NULL, id=NULL, n_clicks=NULL, n_clicks_timestamp=NULL, key=NULL, role=NULL, reversed=NULL, start=NULL, accessKey=NULL, className=NULL, contentEditable=NULL, contextMenu=NULL, dir=NULL, draggable=NULL, hidden=NULL, lang=NULL, spellCheck=NULL, style=NULL, tabIndex=NULL, title=NULL, loading_state=NULL, ...) { + + wildcard_names = names(dash_assert_valid_wildcards(attrib = list('data', 'aria'), ...)) + + props <- list(children=children, id=id, n_clicks=n_clicks, n_clicks_timestamp=n_clicks_timestamp, key=key, role=role, reversed=reversed, start=start, accessKey=accessKey, className=className, contentEditable=contentEditable, contextMenu=contextMenu, dir=dir, draggable=draggable, hidden=hidden, lang=lang, spellCheck=spellCheck, style=style, tabIndex=tabIndex, title=title, loading_state=loading_state, ...) + if (length(props) > 0) { + props <- props[!vapply(props, is.null, logical(1))] + } + component <- list( + props = props, + type = 'Ol', + namespace = 'dash_html_components', + propNames = c('children', 'id', 'n_clicks', 'n_clicks_timestamp', 'key', 'role', 'reversed', 'start', 'accessKey', 'className', 'contentEditable', 'contextMenu', 'dir', 'draggable', 'hidden', 'lang', 'spellCheck', 'style', 'tabIndex', 'title', 'loading_state', wildcard_names), + package = 'dashHtmlComponents' + ) + + structure(component, class = c('dash_component', 'list')) +} + +# AUTO GENERATED FILE - DO NOT EDIT + + +htmlOptgroup <- function(children=NULL, id=NULL, n_clicks=NULL, n_clicks_timestamp=NULL, key=NULL, role=NULL, disabled=NULL, label=NULL, accessKey=NULL, className=NULL, contentEditable=NULL, contextMenu=NULL, dir=NULL, draggable=NULL, hidden=NULL, lang=NULL, spellCheck=NULL, style=NULL, tabIndex=NULL, title=NULL, loading_state=NULL, ...) { + + wildcard_names = names(dash_assert_valid_wildcards(attrib = list('data', 'aria'), ...)) + + props <- list(children=children, id=id, n_clicks=n_clicks, n_clicks_timestamp=n_clicks_timestamp, key=key, role=role, disabled=disabled, label=label, accessKey=accessKey, className=className, contentEditable=contentEditable, contextMenu=contextMenu, dir=dir, draggable=draggable, hidden=hidden, lang=lang, spellCheck=spellCheck, style=style, tabIndex=tabIndex, title=title, loading_state=loading_state, ...) + if (length(props) > 0) { + props <- props[!vapply(props, is.null, logical(1))] + } + component <- list( + props = props, + type = 'Optgroup', + namespace = 'dash_html_components', + propNames = c('children', 'id', 'n_clicks', 'n_clicks_timestamp', 'key', 'role', 'disabled', 'label', 'accessKey', 'className', 'contentEditable', 'contextMenu', 'dir', 'draggable', 'hidden', 'lang', 'spellCheck', 'style', 'tabIndex', 'title', 'loading_state', wildcard_names), + package = 'dashHtmlComponents' + ) + + structure(component, class = c('dash_component', 'list')) +} + +# AUTO GENERATED FILE - DO NOT EDIT + + +htmlOption <- function(children=NULL, id=NULL, n_clicks=NULL, n_clicks_timestamp=NULL, key=NULL, role=NULL, disabled=NULL, label=NULL, selected=NULL, value=NULL, accessKey=NULL, className=NULL, contentEditable=NULL, contextMenu=NULL, dir=NULL, draggable=NULL, hidden=NULL, lang=NULL, spellCheck=NULL, style=NULL, tabIndex=NULL, title=NULL, loading_state=NULL, ...) { + + wildcard_names = names(dash_assert_valid_wildcards(attrib = list('data', 'aria'), ...)) + + props <- list(children=children, id=id, n_clicks=n_clicks, n_clicks_timestamp=n_clicks_timestamp, key=key, role=role, disabled=disabled, label=label, selected=selected, value=value, accessKey=accessKey, className=className, contentEditable=contentEditable, contextMenu=contextMenu, dir=dir, draggable=draggable, hidden=hidden, lang=lang, spellCheck=spellCheck, style=style, tabIndex=tabIndex, title=title, loading_state=loading_state, ...) + if (length(props) > 0) { + props <- props[!vapply(props, is.null, logical(1))] + } + component <- list( + props = props, + type = 'Option', + namespace = 'dash_html_components', + propNames = c('children', 'id', 'n_clicks', 'n_clicks_timestamp', 'key', 'role', 'disabled', 'label', 'selected', 'value', 'accessKey', 'className', 'contentEditable', 'contextMenu', 'dir', 'draggable', 'hidden', 'lang', 'spellCheck', 'style', 'tabIndex', 'title', 'loading_state', wildcard_names), + package = 'dashHtmlComponents' + ) + + structure(component, class = c('dash_component', 'list')) +} + +# AUTO GENERATED FILE - DO NOT EDIT + + +htmlOutput <- function(children=NULL, id=NULL, n_clicks=NULL, n_clicks_timestamp=NULL, key=NULL, role=NULL, htmlFor=NULL, form=NULL, name=NULL, accessKey=NULL, className=NULL, contentEditable=NULL, contextMenu=NULL, dir=NULL, draggable=NULL, hidden=NULL, lang=NULL, spellCheck=NULL, style=NULL, tabIndex=NULL, title=NULL, loading_state=NULL, ...) { + + wildcard_names = names(dash_assert_valid_wildcards(attrib = list('data', 'aria'), ...)) + + props <- list(children=children, id=id, n_clicks=n_clicks, n_clicks_timestamp=n_clicks_timestamp, key=key, role=role, htmlFor=htmlFor, form=form, name=name, accessKey=accessKey, className=className, contentEditable=contentEditable, contextMenu=contextMenu, dir=dir, draggable=draggable, hidden=hidden, lang=lang, spellCheck=spellCheck, style=style, tabIndex=tabIndex, title=title, loading_state=loading_state, ...) + if (length(props) > 0) { + props <- props[!vapply(props, is.null, logical(1))] + } + component <- list( + props = props, + type = 'Output', + namespace = 'dash_html_components', + propNames = c('children', 'id', 'n_clicks', 'n_clicks_timestamp', 'key', 'role', 'htmlFor', 'form', 'name', 'accessKey', 'className', 'contentEditable', 'contextMenu', 'dir', 'draggable', 'hidden', 'lang', 'spellCheck', 'style', 'tabIndex', 'title', 'loading_state', wildcard_names), + package = 'dashHtmlComponents' + ) + + structure(component, class = c('dash_component', 'list')) +} + +# AUTO GENERATED FILE - DO NOT EDIT + + +htmlP <- function(children=NULL, id=NULL, n_clicks=NULL, n_clicks_timestamp=NULL, key=NULL, role=NULL, accessKey=NULL, className=NULL, contentEditable=NULL, contextMenu=NULL, dir=NULL, draggable=NULL, hidden=NULL, lang=NULL, spellCheck=NULL, style=NULL, tabIndex=NULL, title=NULL, loading_state=NULL, ...) { + + wildcard_names = names(dash_assert_valid_wildcards(attrib = list('data', 'aria'), ...)) + + props <- list(children=children, id=id, n_clicks=n_clicks, n_clicks_timestamp=n_clicks_timestamp, key=key, role=role, accessKey=accessKey, className=className, contentEditable=contentEditable, contextMenu=contextMenu, dir=dir, draggable=draggable, hidden=hidden, lang=lang, spellCheck=spellCheck, style=style, tabIndex=tabIndex, title=title, loading_state=loading_state, ...) + if (length(props) > 0) { + props <- props[!vapply(props, is.null, logical(1))] + } + component <- list( + props = props, + type = 'P', + namespace = 'dash_html_components', + propNames = c('children', 'id', 'n_clicks', 'n_clicks_timestamp', 'key', 'role', 'accessKey', 'className', 'contentEditable', 'contextMenu', 'dir', 'draggable', 'hidden', 'lang', 'spellCheck', 'style', 'tabIndex', 'title', 'loading_state', wildcard_names), + package = 'dashHtmlComponents' + ) + + structure(component, class = c('dash_component', 'list')) +} + +# AUTO GENERATED FILE - DO NOT EDIT + + +htmlParam <- function(children=NULL, id=NULL, n_clicks=NULL, n_clicks_timestamp=NULL, key=NULL, role=NULL, name=NULL, value=NULL, accessKey=NULL, className=NULL, contentEditable=NULL, contextMenu=NULL, dir=NULL, draggable=NULL, hidden=NULL, lang=NULL, spellCheck=NULL, style=NULL, tabIndex=NULL, title=NULL, loading_state=NULL, ...) { + + wildcard_names = names(dash_assert_valid_wildcards(attrib = list('data', 'aria'), ...)) + + props <- list(children=children, id=id, n_clicks=n_clicks, n_clicks_timestamp=n_clicks_timestamp, key=key, role=role, name=name, value=value, accessKey=accessKey, className=className, contentEditable=contentEditable, contextMenu=contextMenu, dir=dir, draggable=draggable, hidden=hidden, lang=lang, spellCheck=spellCheck, style=style, tabIndex=tabIndex, title=title, loading_state=loading_state, ...) + if (length(props) > 0) { + props <- props[!vapply(props, is.null, logical(1))] + } + component <- list( + props = props, + type = 'Param', + namespace = 'dash_html_components', + propNames = c('children', 'id', 'n_clicks', 'n_clicks_timestamp', 'key', 'role', 'name', 'value', 'accessKey', 'className', 'contentEditable', 'contextMenu', 'dir', 'draggable', 'hidden', 'lang', 'spellCheck', 'style', 'tabIndex', 'title', 'loading_state', wildcard_names), + package = 'dashHtmlComponents' + ) + + structure(component, class = c('dash_component', 'list')) +} + +# AUTO GENERATED FILE - DO NOT EDIT + + +htmlPicture <- function(children=NULL, id=NULL, n_clicks=NULL, n_clicks_timestamp=NULL, key=NULL, role=NULL, accessKey=NULL, className=NULL, contentEditable=NULL, contextMenu=NULL, dir=NULL, draggable=NULL, hidden=NULL, lang=NULL, spellCheck=NULL, style=NULL, tabIndex=NULL, title=NULL, loading_state=NULL, ...) { + + wildcard_names = names(dash_assert_valid_wildcards(attrib = list('data', 'aria'), ...)) + + props <- list(children=children, id=id, n_clicks=n_clicks, n_clicks_timestamp=n_clicks_timestamp, key=key, role=role, accessKey=accessKey, className=className, contentEditable=contentEditable, contextMenu=contextMenu, dir=dir, draggable=draggable, hidden=hidden, lang=lang, spellCheck=spellCheck, style=style, tabIndex=tabIndex, title=title, loading_state=loading_state, ...) + if (length(props) > 0) { + props <- props[!vapply(props, is.null, logical(1))] + } + component <- list( + props = props, + type = 'Picture', + namespace = 'dash_html_components', + propNames = c('children', 'id', 'n_clicks', 'n_clicks_timestamp', 'key', 'role', 'accessKey', 'className', 'contentEditable', 'contextMenu', 'dir', 'draggable', 'hidden', 'lang', 'spellCheck', 'style', 'tabIndex', 'title', 'loading_state', wildcard_names), + package = 'dashHtmlComponents' + ) + + structure(component, class = c('dash_component', 'list')) +} + +# AUTO GENERATED FILE - DO NOT EDIT + + +htmlPlaintext <- function(children=NULL, id=NULL, n_clicks=NULL, n_clicks_timestamp=NULL, key=NULL, role=NULL, accessKey=NULL, className=NULL, contentEditable=NULL, contextMenu=NULL, dir=NULL, draggable=NULL, hidden=NULL, lang=NULL, spellCheck=NULL, style=NULL, tabIndex=NULL, title=NULL, loading_state=NULL, ...) { + + wildcard_names = names(dash_assert_valid_wildcards(attrib = list('data', 'aria'), ...)) + + props <- list(children=children, id=id, n_clicks=n_clicks, n_clicks_timestamp=n_clicks_timestamp, key=key, role=role, accessKey=accessKey, className=className, contentEditable=contentEditable, contextMenu=contextMenu, dir=dir, draggable=draggable, hidden=hidden, lang=lang, spellCheck=spellCheck, style=style, tabIndex=tabIndex, title=title, loading_state=loading_state, ...) + if (length(props) > 0) { + props <- props[!vapply(props, is.null, logical(1))] + } + component <- list( + props = props, + type = 'Plaintext', + namespace = 'dash_html_components', + propNames = c('children', 'id', 'n_clicks', 'n_clicks_timestamp', 'key', 'role', 'accessKey', 'className', 'contentEditable', 'contextMenu', 'dir', 'draggable', 'hidden', 'lang', 'spellCheck', 'style', 'tabIndex', 'title', 'loading_state', wildcard_names), + package = 'dashHtmlComponents' + ) + + structure(component, class = c('dash_component', 'list')) +} + +# AUTO GENERATED FILE - DO NOT EDIT + + +htmlPre <- function(children=NULL, id=NULL, n_clicks=NULL, n_clicks_timestamp=NULL, key=NULL, role=NULL, accessKey=NULL, className=NULL, contentEditable=NULL, contextMenu=NULL, dir=NULL, draggable=NULL, hidden=NULL, lang=NULL, spellCheck=NULL, style=NULL, tabIndex=NULL, title=NULL, loading_state=NULL, ...) { + + wildcard_names = names(dash_assert_valid_wildcards(attrib = list('data', 'aria'), ...)) + + props <- list(children=children, id=id, n_clicks=n_clicks, n_clicks_timestamp=n_clicks_timestamp, key=key, role=role, accessKey=accessKey, className=className, contentEditable=contentEditable, contextMenu=contextMenu, dir=dir, draggable=draggable, hidden=hidden, lang=lang, spellCheck=spellCheck, style=style, tabIndex=tabIndex, title=title, loading_state=loading_state, ...) + if (length(props) > 0) { + props <- props[!vapply(props, is.null, logical(1))] + } + component <- list( + props = props, + type = 'Pre', + namespace = 'dash_html_components', + propNames = c('children', 'id', 'n_clicks', 'n_clicks_timestamp', 'key', 'role', 'accessKey', 'className', 'contentEditable', 'contextMenu', 'dir', 'draggable', 'hidden', 'lang', 'spellCheck', 'style', 'tabIndex', 'title', 'loading_state', wildcard_names), + package = 'dashHtmlComponents' + ) + + structure(component, class = c('dash_component', 'list')) +} + +# AUTO GENERATED FILE - DO NOT EDIT + + +htmlProgress <- function(children=NULL, id=NULL, n_clicks=NULL, n_clicks_timestamp=NULL, key=NULL, role=NULL, form=NULL, max=NULL, value=NULL, accessKey=NULL, className=NULL, contentEditable=NULL, contextMenu=NULL, dir=NULL, draggable=NULL, hidden=NULL, lang=NULL, spellCheck=NULL, style=NULL, tabIndex=NULL, title=NULL, loading_state=NULL, ...) { + + wildcard_names = names(dash_assert_valid_wildcards(attrib = list('data', 'aria'), ...)) + + props <- list(children=children, id=id, n_clicks=n_clicks, n_clicks_timestamp=n_clicks_timestamp, key=key, role=role, form=form, max=max, value=value, accessKey=accessKey, className=className, contentEditable=contentEditable, contextMenu=contextMenu, dir=dir, draggable=draggable, hidden=hidden, lang=lang, spellCheck=spellCheck, style=style, tabIndex=tabIndex, title=title, loading_state=loading_state, ...) + if (length(props) > 0) { + props <- props[!vapply(props, is.null, logical(1))] + } + component <- list( + props = props, + type = 'Progress', + namespace = 'dash_html_components', + propNames = c('children', 'id', 'n_clicks', 'n_clicks_timestamp', 'key', 'role', 'form', 'max', 'value', 'accessKey', 'className', 'contentEditable', 'contextMenu', 'dir', 'draggable', 'hidden', 'lang', 'spellCheck', 'style', 'tabIndex', 'title', 'loading_state', wildcard_names), + package = 'dashHtmlComponents' + ) + + structure(component, class = c('dash_component', 'list')) +} + +# AUTO GENERATED FILE - DO NOT EDIT + + +htmlQ <- function(children=NULL, id=NULL, n_clicks=NULL, n_clicks_timestamp=NULL, key=NULL, role=NULL, cite=NULL, accessKey=NULL, className=NULL, contentEditable=NULL, contextMenu=NULL, dir=NULL, draggable=NULL, hidden=NULL, lang=NULL, spellCheck=NULL, style=NULL, tabIndex=NULL, title=NULL, loading_state=NULL, ...) { + + wildcard_names = names(dash_assert_valid_wildcards(attrib = list('data', 'aria'), ...)) + + props <- list(children=children, id=id, n_clicks=n_clicks, n_clicks_timestamp=n_clicks_timestamp, key=key, role=role, cite=cite, accessKey=accessKey, className=className, contentEditable=contentEditable, contextMenu=contextMenu, dir=dir, draggable=draggable, hidden=hidden, lang=lang, spellCheck=spellCheck, style=style, tabIndex=tabIndex, title=title, loading_state=loading_state, ...) + if (length(props) > 0) { + props <- props[!vapply(props, is.null, logical(1))] + } + component <- list( + props = props, + type = 'Q', + namespace = 'dash_html_components', + propNames = c('children', 'id', 'n_clicks', 'n_clicks_timestamp', 'key', 'role', 'cite', 'accessKey', 'className', 'contentEditable', 'contextMenu', 'dir', 'draggable', 'hidden', 'lang', 'spellCheck', 'style', 'tabIndex', 'title', 'loading_state', wildcard_names), + package = 'dashHtmlComponents' + ) + + structure(component, class = c('dash_component', 'list')) +} + +# AUTO GENERATED FILE - DO NOT EDIT + + +htmlRb <- function(children=NULL, id=NULL, n_clicks=NULL, n_clicks_timestamp=NULL, key=NULL, role=NULL, accessKey=NULL, className=NULL, contentEditable=NULL, contextMenu=NULL, dir=NULL, draggable=NULL, hidden=NULL, lang=NULL, spellCheck=NULL, style=NULL, tabIndex=NULL, title=NULL, loading_state=NULL, ...) { + + wildcard_names = names(dash_assert_valid_wildcards(attrib = list('data', 'aria'), ...)) + + props <- list(children=children, id=id, n_clicks=n_clicks, n_clicks_timestamp=n_clicks_timestamp, key=key, role=role, accessKey=accessKey, className=className, contentEditable=contentEditable, contextMenu=contextMenu, dir=dir, draggable=draggable, hidden=hidden, lang=lang, spellCheck=spellCheck, style=style, tabIndex=tabIndex, title=title, loading_state=loading_state, ...) + if (length(props) > 0) { + props <- props[!vapply(props, is.null, logical(1))] + } + component <- list( + props = props, + type = 'Rb', + namespace = 'dash_html_components', + propNames = c('children', 'id', 'n_clicks', 'n_clicks_timestamp', 'key', 'role', 'accessKey', 'className', 'contentEditable', 'contextMenu', 'dir', 'draggable', 'hidden', 'lang', 'spellCheck', 'style', 'tabIndex', 'title', 'loading_state', wildcard_names), + package = 'dashHtmlComponents' + ) + + structure(component, class = c('dash_component', 'list')) +} + +# AUTO GENERATED FILE - DO NOT EDIT + + +htmlRp <- function(children=NULL, id=NULL, n_clicks=NULL, n_clicks_timestamp=NULL, key=NULL, role=NULL, accessKey=NULL, className=NULL, contentEditable=NULL, contextMenu=NULL, dir=NULL, draggable=NULL, hidden=NULL, lang=NULL, spellCheck=NULL, style=NULL, tabIndex=NULL, title=NULL, loading_state=NULL, ...) { + + wildcard_names = names(dash_assert_valid_wildcards(attrib = list('data', 'aria'), ...)) + + props <- list(children=children, id=id, n_clicks=n_clicks, n_clicks_timestamp=n_clicks_timestamp, key=key, role=role, accessKey=accessKey, className=className, contentEditable=contentEditable, contextMenu=contextMenu, dir=dir, draggable=draggable, hidden=hidden, lang=lang, spellCheck=spellCheck, style=style, tabIndex=tabIndex, title=title, loading_state=loading_state, ...) + if (length(props) > 0) { + props <- props[!vapply(props, is.null, logical(1))] + } + component <- list( + props = props, + type = 'Rp', + namespace = 'dash_html_components', + propNames = c('children', 'id', 'n_clicks', 'n_clicks_timestamp', 'key', 'role', 'accessKey', 'className', 'contentEditable', 'contextMenu', 'dir', 'draggable', 'hidden', 'lang', 'spellCheck', 'style', 'tabIndex', 'title', 'loading_state', wildcard_names), + package = 'dashHtmlComponents' + ) + + structure(component, class = c('dash_component', 'list')) +} + +# AUTO GENERATED FILE - DO NOT EDIT + + +htmlRt <- function(children=NULL, id=NULL, n_clicks=NULL, n_clicks_timestamp=NULL, key=NULL, role=NULL, accessKey=NULL, className=NULL, contentEditable=NULL, contextMenu=NULL, dir=NULL, draggable=NULL, hidden=NULL, lang=NULL, spellCheck=NULL, style=NULL, tabIndex=NULL, title=NULL, loading_state=NULL, ...) { + + wildcard_names = names(dash_assert_valid_wildcards(attrib = list('data', 'aria'), ...)) + + props <- list(children=children, id=id, n_clicks=n_clicks, n_clicks_timestamp=n_clicks_timestamp, key=key, role=role, accessKey=accessKey, className=className, contentEditable=contentEditable, contextMenu=contextMenu, dir=dir, draggable=draggable, hidden=hidden, lang=lang, spellCheck=spellCheck, style=style, tabIndex=tabIndex, title=title, loading_state=loading_state, ...) + if (length(props) > 0) { + props <- props[!vapply(props, is.null, logical(1))] + } + component <- list( + props = props, + type = 'Rt', + namespace = 'dash_html_components', + propNames = c('children', 'id', 'n_clicks', 'n_clicks_timestamp', 'key', 'role', 'accessKey', 'className', 'contentEditable', 'contextMenu', 'dir', 'draggable', 'hidden', 'lang', 'spellCheck', 'style', 'tabIndex', 'title', 'loading_state', wildcard_names), + package = 'dashHtmlComponents' + ) + + structure(component, class = c('dash_component', 'list')) +} + +# AUTO GENERATED FILE - DO NOT EDIT + + +htmlRtc <- function(children=NULL, id=NULL, n_clicks=NULL, n_clicks_timestamp=NULL, key=NULL, role=NULL, accessKey=NULL, className=NULL, contentEditable=NULL, contextMenu=NULL, dir=NULL, draggable=NULL, hidden=NULL, lang=NULL, spellCheck=NULL, style=NULL, tabIndex=NULL, title=NULL, loading_state=NULL, ...) { + + wildcard_names = names(dash_assert_valid_wildcards(attrib = list('data', 'aria'), ...)) + + props <- list(children=children, id=id, n_clicks=n_clicks, n_clicks_timestamp=n_clicks_timestamp, key=key, role=role, accessKey=accessKey, className=className, contentEditable=contentEditable, contextMenu=contextMenu, dir=dir, draggable=draggable, hidden=hidden, lang=lang, spellCheck=spellCheck, style=style, tabIndex=tabIndex, title=title, loading_state=loading_state, ...) + if (length(props) > 0) { + props <- props[!vapply(props, is.null, logical(1))] + } + component <- list( + props = props, + type = 'Rtc', + namespace = 'dash_html_components', + propNames = c('children', 'id', 'n_clicks', 'n_clicks_timestamp', 'key', 'role', 'accessKey', 'className', 'contentEditable', 'contextMenu', 'dir', 'draggable', 'hidden', 'lang', 'spellCheck', 'style', 'tabIndex', 'title', 'loading_state', wildcard_names), + package = 'dashHtmlComponents' + ) + + structure(component, class = c('dash_component', 'list')) +} + +# AUTO GENERATED FILE - DO NOT EDIT + + +htmlRuby <- function(children=NULL, id=NULL, n_clicks=NULL, n_clicks_timestamp=NULL, key=NULL, role=NULL, accessKey=NULL, className=NULL, contentEditable=NULL, contextMenu=NULL, dir=NULL, draggable=NULL, hidden=NULL, lang=NULL, spellCheck=NULL, style=NULL, tabIndex=NULL, title=NULL, loading_state=NULL, ...) { + + wildcard_names = names(dash_assert_valid_wildcards(attrib = list('data', 'aria'), ...)) + + props <- list(children=children, id=id, n_clicks=n_clicks, n_clicks_timestamp=n_clicks_timestamp, key=key, role=role, accessKey=accessKey, className=className, contentEditable=contentEditable, contextMenu=contextMenu, dir=dir, draggable=draggable, hidden=hidden, lang=lang, spellCheck=spellCheck, style=style, tabIndex=tabIndex, title=title, loading_state=loading_state, ...) + if (length(props) > 0) { + props <- props[!vapply(props, is.null, logical(1))] + } + component <- list( + props = props, + type = 'Ruby', + namespace = 'dash_html_components', + propNames = c('children', 'id', 'n_clicks', 'n_clicks_timestamp', 'key', 'role', 'accessKey', 'className', 'contentEditable', 'contextMenu', 'dir', 'draggable', 'hidden', 'lang', 'spellCheck', 'style', 'tabIndex', 'title', 'loading_state', wildcard_names), + package = 'dashHtmlComponents' + ) + + structure(component, class = c('dash_component', 'list')) +} + +# AUTO GENERATED FILE - DO NOT EDIT + + +htmlS <- function(children=NULL, id=NULL, n_clicks=NULL, n_clicks_timestamp=NULL, key=NULL, role=NULL, accessKey=NULL, className=NULL, contentEditable=NULL, contextMenu=NULL, dir=NULL, draggable=NULL, hidden=NULL, lang=NULL, spellCheck=NULL, style=NULL, tabIndex=NULL, title=NULL, loading_state=NULL, ...) { + + wildcard_names = names(dash_assert_valid_wildcards(attrib = list('data', 'aria'), ...)) + + props <- list(children=children, id=id, n_clicks=n_clicks, n_clicks_timestamp=n_clicks_timestamp, key=key, role=role, accessKey=accessKey, className=className, contentEditable=contentEditable, contextMenu=contextMenu, dir=dir, draggable=draggable, hidden=hidden, lang=lang, spellCheck=spellCheck, style=style, tabIndex=tabIndex, title=title, loading_state=loading_state, ...) + if (length(props) > 0) { + props <- props[!vapply(props, is.null, logical(1))] + } + component <- list( + props = props, + type = 'S', + namespace = 'dash_html_components', + propNames = c('children', 'id', 'n_clicks', 'n_clicks_timestamp', 'key', 'role', 'accessKey', 'className', 'contentEditable', 'contextMenu', 'dir', 'draggable', 'hidden', 'lang', 'spellCheck', 'style', 'tabIndex', 'title', 'loading_state', wildcard_names), + package = 'dashHtmlComponents' + ) + + structure(component, class = c('dash_component', 'list')) +} + +# AUTO GENERATED FILE - DO NOT EDIT + + +htmlSamp <- function(children=NULL, id=NULL, n_clicks=NULL, n_clicks_timestamp=NULL, key=NULL, role=NULL, accessKey=NULL, className=NULL, contentEditable=NULL, contextMenu=NULL, dir=NULL, draggable=NULL, hidden=NULL, lang=NULL, spellCheck=NULL, style=NULL, tabIndex=NULL, title=NULL, loading_state=NULL, ...) { + + wildcard_names = names(dash_assert_valid_wildcards(attrib = list('data', 'aria'), ...)) + + props <- list(children=children, id=id, n_clicks=n_clicks, n_clicks_timestamp=n_clicks_timestamp, key=key, role=role, accessKey=accessKey, className=className, contentEditable=contentEditable, contextMenu=contextMenu, dir=dir, draggable=draggable, hidden=hidden, lang=lang, spellCheck=spellCheck, style=style, tabIndex=tabIndex, title=title, loading_state=loading_state, ...) + if (length(props) > 0) { + props <- props[!vapply(props, is.null, logical(1))] + } + component <- list( + props = props, + type = 'Samp', + namespace = 'dash_html_components', + propNames = c('children', 'id', 'n_clicks', 'n_clicks_timestamp', 'key', 'role', 'accessKey', 'className', 'contentEditable', 'contextMenu', 'dir', 'draggable', 'hidden', 'lang', 'spellCheck', 'style', 'tabIndex', 'title', 'loading_state', wildcard_names), + package = 'dashHtmlComponents' + ) + + structure(component, class = c('dash_component', 'list')) +} + +# AUTO GENERATED FILE - DO NOT EDIT + + +htmlScript <- function(children=NULL, id=NULL, n_clicks=NULL, n_clicks_timestamp=NULL, key=NULL, role=NULL, async=NULL, charSet=NULL, crossOrigin=NULL, defer=NULL, integrity=NULL, referrerPolicy=NULL, src=NULL, type=NULL, accessKey=NULL, className=NULL, contentEditable=NULL, contextMenu=NULL, dir=NULL, draggable=NULL, hidden=NULL, lang=NULL, spellCheck=NULL, style=NULL, tabIndex=NULL, title=NULL, loading_state=NULL, ...) { + + wildcard_names = names(dash_assert_valid_wildcards(attrib = list('data', 'aria'), ...)) + + props <- list(children=children, id=id, n_clicks=n_clicks, n_clicks_timestamp=n_clicks_timestamp, key=key, role=role, async=async, charSet=charSet, crossOrigin=crossOrigin, defer=defer, integrity=integrity, referrerPolicy=referrerPolicy, src=src, type=type, accessKey=accessKey, className=className, contentEditable=contentEditable, contextMenu=contextMenu, dir=dir, draggable=draggable, hidden=hidden, lang=lang, spellCheck=spellCheck, style=style, tabIndex=tabIndex, title=title, loading_state=loading_state, ...) + if (length(props) > 0) { + props <- props[!vapply(props, is.null, logical(1))] + } + component <- list( + props = props, + type = 'Script', + namespace = 'dash_html_components', + propNames = c('children', 'id', 'n_clicks', 'n_clicks_timestamp', 'key', 'role', 'async', 'charSet', 'crossOrigin', 'defer', 'integrity', 'referrerPolicy', 'src', 'type', 'accessKey', 'className', 'contentEditable', 'contextMenu', 'dir', 'draggable', 'hidden', 'lang', 'spellCheck', 'style', 'tabIndex', 'title', 'loading_state', wildcard_names), + package = 'dashHtmlComponents' + ) + + structure(component, class = c('dash_component', 'list')) +} + +# AUTO GENERATED FILE - DO NOT EDIT + + +htmlSection <- function(children=NULL, id=NULL, n_clicks=NULL, n_clicks_timestamp=NULL, key=NULL, role=NULL, accessKey=NULL, className=NULL, contentEditable=NULL, contextMenu=NULL, dir=NULL, draggable=NULL, hidden=NULL, lang=NULL, spellCheck=NULL, style=NULL, tabIndex=NULL, title=NULL, loading_state=NULL, ...) { + + wildcard_names = names(dash_assert_valid_wildcards(attrib = list('data', 'aria'), ...)) + + props <- list(children=children, id=id, n_clicks=n_clicks, n_clicks_timestamp=n_clicks_timestamp, key=key, role=role, accessKey=accessKey, className=className, contentEditable=contentEditable, contextMenu=contextMenu, dir=dir, draggable=draggable, hidden=hidden, lang=lang, spellCheck=spellCheck, style=style, tabIndex=tabIndex, title=title, loading_state=loading_state, ...) + if (length(props) > 0) { + props <- props[!vapply(props, is.null, logical(1))] + } + component <- list( + props = props, + type = 'Section', + namespace = 'dash_html_components', + propNames = c('children', 'id', 'n_clicks', 'n_clicks_timestamp', 'key', 'role', 'accessKey', 'className', 'contentEditable', 'contextMenu', 'dir', 'draggable', 'hidden', 'lang', 'spellCheck', 'style', 'tabIndex', 'title', 'loading_state', wildcard_names), + package = 'dashHtmlComponents' + ) + + structure(component, class = c('dash_component', 'list')) +} + +# AUTO GENERATED FILE - DO NOT EDIT + + +htmlSelect <- function(children=NULL, id=NULL, n_clicks=NULL, n_clicks_timestamp=NULL, key=NULL, role=NULL, autoComplete=NULL, autoFocus=NULL, disabled=NULL, form=NULL, multiple=NULL, name=NULL, required=NULL, size=NULL, accessKey=NULL, className=NULL, contentEditable=NULL, contextMenu=NULL, dir=NULL, draggable=NULL, hidden=NULL, lang=NULL, spellCheck=NULL, style=NULL, tabIndex=NULL, title=NULL, loading_state=NULL, ...) { + + wildcard_names = names(dash_assert_valid_wildcards(attrib = list('data', 'aria'), ...)) + + props <- list(children=children, id=id, n_clicks=n_clicks, n_clicks_timestamp=n_clicks_timestamp, key=key, role=role, autoComplete=autoComplete, autoFocus=autoFocus, disabled=disabled, form=form, multiple=multiple, name=name, required=required, size=size, accessKey=accessKey, className=className, contentEditable=contentEditable, contextMenu=contextMenu, dir=dir, draggable=draggable, hidden=hidden, lang=lang, spellCheck=spellCheck, style=style, tabIndex=tabIndex, title=title, loading_state=loading_state, ...) + if (length(props) > 0) { + props <- props[!vapply(props, is.null, logical(1))] + } + component <- list( + props = props, + type = 'Select', + namespace = 'dash_html_components', + propNames = c('children', 'id', 'n_clicks', 'n_clicks_timestamp', 'key', 'role', 'autoComplete', 'autoFocus', 'disabled', 'form', 'multiple', 'name', 'required', 'size', 'accessKey', 'className', 'contentEditable', 'contextMenu', 'dir', 'draggable', 'hidden', 'lang', 'spellCheck', 'style', 'tabIndex', 'title', 'loading_state', wildcard_names), + package = 'dashHtmlComponents' + ) + + structure(component, class = c('dash_component', 'list')) +} + +# AUTO GENERATED FILE - DO NOT EDIT + + +htmlShadow <- function(children=NULL, id=NULL, n_clicks=NULL, n_clicks_timestamp=NULL, key=NULL, role=NULL, accessKey=NULL, className=NULL, contentEditable=NULL, contextMenu=NULL, dir=NULL, draggable=NULL, hidden=NULL, lang=NULL, spellCheck=NULL, style=NULL, tabIndex=NULL, title=NULL, loading_state=NULL, ...) { + + wildcard_names = names(dash_assert_valid_wildcards(attrib = list('data', 'aria'), ...)) + + props <- list(children=children, id=id, n_clicks=n_clicks, n_clicks_timestamp=n_clicks_timestamp, key=key, role=role, accessKey=accessKey, className=className, contentEditable=contentEditable, contextMenu=contextMenu, dir=dir, draggable=draggable, hidden=hidden, lang=lang, spellCheck=spellCheck, style=style, tabIndex=tabIndex, title=title, loading_state=loading_state, ...) + if (length(props) > 0) { + props <- props[!vapply(props, is.null, logical(1))] + } + component <- list( + props = props, + type = 'Shadow', + namespace = 'dash_html_components', + propNames = c('children', 'id', 'n_clicks', 'n_clicks_timestamp', 'key', 'role', 'accessKey', 'className', 'contentEditable', 'contextMenu', 'dir', 'draggable', 'hidden', 'lang', 'spellCheck', 'style', 'tabIndex', 'title', 'loading_state', wildcard_names), + package = 'dashHtmlComponents' + ) + + structure(component, class = c('dash_component', 'list')) +} + +# AUTO GENERATED FILE - DO NOT EDIT + + +htmlSlot <- function(children=NULL, id=NULL, n_clicks=NULL, n_clicks_timestamp=NULL, key=NULL, role=NULL, accessKey=NULL, className=NULL, contentEditable=NULL, contextMenu=NULL, dir=NULL, draggable=NULL, hidden=NULL, lang=NULL, spellCheck=NULL, style=NULL, tabIndex=NULL, title=NULL, loading_state=NULL, ...) { + + wildcard_names = names(dash_assert_valid_wildcards(attrib = list('data', 'aria'), ...)) + + props <- list(children=children, id=id, n_clicks=n_clicks, n_clicks_timestamp=n_clicks_timestamp, key=key, role=role, accessKey=accessKey, className=className, contentEditable=contentEditable, contextMenu=contextMenu, dir=dir, draggable=draggable, hidden=hidden, lang=lang, spellCheck=spellCheck, style=style, tabIndex=tabIndex, title=title, loading_state=loading_state, ...) + if (length(props) > 0) { + props <- props[!vapply(props, is.null, logical(1))] + } + component <- list( + props = props, + type = 'Slot', + namespace = 'dash_html_components', + propNames = c('children', 'id', 'n_clicks', 'n_clicks_timestamp', 'key', 'role', 'accessKey', 'className', 'contentEditable', 'contextMenu', 'dir', 'draggable', 'hidden', 'lang', 'spellCheck', 'style', 'tabIndex', 'title', 'loading_state', wildcard_names), + package = 'dashHtmlComponents' + ) + + structure(component, class = c('dash_component', 'list')) +} + +# AUTO GENERATED FILE - DO NOT EDIT + + +htmlSmall <- function(children=NULL, id=NULL, n_clicks=NULL, n_clicks_timestamp=NULL, key=NULL, role=NULL, accessKey=NULL, className=NULL, contentEditable=NULL, contextMenu=NULL, dir=NULL, draggable=NULL, hidden=NULL, lang=NULL, spellCheck=NULL, style=NULL, tabIndex=NULL, title=NULL, loading_state=NULL, ...) { + + wildcard_names = names(dash_assert_valid_wildcards(attrib = list('data', 'aria'), ...)) + + props <- list(children=children, id=id, n_clicks=n_clicks, n_clicks_timestamp=n_clicks_timestamp, key=key, role=role, accessKey=accessKey, className=className, contentEditable=contentEditable, contextMenu=contextMenu, dir=dir, draggable=draggable, hidden=hidden, lang=lang, spellCheck=spellCheck, style=style, tabIndex=tabIndex, title=title, loading_state=loading_state, ...) + if (length(props) > 0) { + props <- props[!vapply(props, is.null, logical(1))] + } + component <- list( + props = props, + type = 'Small', + namespace = 'dash_html_components', + propNames = c('children', 'id', 'n_clicks', 'n_clicks_timestamp', 'key', 'role', 'accessKey', 'className', 'contentEditable', 'contextMenu', 'dir', 'draggable', 'hidden', 'lang', 'spellCheck', 'style', 'tabIndex', 'title', 'loading_state', wildcard_names), + package = 'dashHtmlComponents' + ) + + structure(component, class = c('dash_component', 'list')) +} + +# AUTO GENERATED FILE - DO NOT EDIT + + +htmlSource <- function(children=NULL, id=NULL, n_clicks=NULL, n_clicks_timestamp=NULL, key=NULL, role=NULL, media=NULL, sizes=NULL, src=NULL, srcSet=NULL, type=NULL, accessKey=NULL, className=NULL, contentEditable=NULL, contextMenu=NULL, dir=NULL, draggable=NULL, hidden=NULL, lang=NULL, spellCheck=NULL, style=NULL, tabIndex=NULL, title=NULL, loading_state=NULL, ...) { + + wildcard_names = names(dash_assert_valid_wildcards(attrib = list('data', 'aria'), ...)) + + props <- list(children=children, id=id, n_clicks=n_clicks, n_clicks_timestamp=n_clicks_timestamp, key=key, role=role, media=media, sizes=sizes, src=src, srcSet=srcSet, type=type, accessKey=accessKey, className=className, contentEditable=contentEditable, contextMenu=contextMenu, dir=dir, draggable=draggable, hidden=hidden, lang=lang, spellCheck=spellCheck, style=style, tabIndex=tabIndex, title=title, loading_state=loading_state, ...) + if (length(props) > 0) { + props <- props[!vapply(props, is.null, logical(1))] + } + component <- list( + props = props, + type = 'Source', + namespace = 'dash_html_components', + propNames = c('children', 'id', 'n_clicks', 'n_clicks_timestamp', 'key', 'role', 'media', 'sizes', 'src', 'srcSet', 'type', 'accessKey', 'className', 'contentEditable', 'contextMenu', 'dir', 'draggable', 'hidden', 'lang', 'spellCheck', 'style', 'tabIndex', 'title', 'loading_state', wildcard_names), + package = 'dashHtmlComponents' + ) + + structure(component, class = c('dash_component', 'list')) +} + +# AUTO GENERATED FILE - DO NOT EDIT + + +htmlSpacer <- function(children=NULL, id=NULL, n_clicks=NULL, n_clicks_timestamp=NULL, key=NULL, role=NULL, accessKey=NULL, className=NULL, contentEditable=NULL, contextMenu=NULL, dir=NULL, draggable=NULL, hidden=NULL, lang=NULL, spellCheck=NULL, style=NULL, tabIndex=NULL, title=NULL, loading_state=NULL, ...) { + + wildcard_names = names(dash_assert_valid_wildcards(attrib = list('data', 'aria'), ...)) + + props <- list(children=children, id=id, n_clicks=n_clicks, n_clicks_timestamp=n_clicks_timestamp, key=key, role=role, accessKey=accessKey, className=className, contentEditable=contentEditable, contextMenu=contextMenu, dir=dir, draggable=draggable, hidden=hidden, lang=lang, spellCheck=spellCheck, style=style, tabIndex=tabIndex, title=title, loading_state=loading_state, ...) + if (length(props) > 0) { + props <- props[!vapply(props, is.null, logical(1))] + } + component <- list( + props = props, + type = 'Spacer', + namespace = 'dash_html_components', + propNames = c('children', 'id', 'n_clicks', 'n_clicks_timestamp', 'key', 'role', 'accessKey', 'className', 'contentEditable', 'contextMenu', 'dir', 'draggable', 'hidden', 'lang', 'spellCheck', 'style', 'tabIndex', 'title', 'loading_state', wildcard_names), + package = 'dashHtmlComponents' + ) + + structure(component, class = c('dash_component', 'list')) +} + +# AUTO GENERATED FILE - DO NOT EDIT + + +htmlSpan <- function(children=NULL, id=NULL, n_clicks=NULL, n_clicks_timestamp=NULL, key=NULL, role=NULL, accessKey=NULL, className=NULL, contentEditable=NULL, contextMenu=NULL, dir=NULL, draggable=NULL, hidden=NULL, lang=NULL, spellCheck=NULL, style=NULL, tabIndex=NULL, title=NULL, loading_state=NULL, ...) { + + wildcard_names = names(dash_assert_valid_wildcards(attrib = list('data', 'aria'), ...)) + + props <- list(children=children, id=id, n_clicks=n_clicks, n_clicks_timestamp=n_clicks_timestamp, key=key, role=role, accessKey=accessKey, className=className, contentEditable=contentEditable, contextMenu=contextMenu, dir=dir, draggable=draggable, hidden=hidden, lang=lang, spellCheck=spellCheck, style=style, tabIndex=tabIndex, title=title, loading_state=loading_state, ...) + if (length(props) > 0) { + props <- props[!vapply(props, is.null, logical(1))] + } + component <- list( + props = props, + type = 'Span', + namespace = 'dash_html_components', + propNames = c('children', 'id', 'n_clicks', 'n_clicks_timestamp', 'key', 'role', 'accessKey', 'className', 'contentEditable', 'contextMenu', 'dir', 'draggable', 'hidden', 'lang', 'spellCheck', 'style', 'tabIndex', 'title', 'loading_state', wildcard_names), + package = 'dashHtmlComponents' + ) + + structure(component, class = c('dash_component', 'list')) +} + +# AUTO GENERATED FILE - DO NOT EDIT + + +htmlStrike <- function(children=NULL, id=NULL, n_clicks=NULL, n_clicks_timestamp=NULL, key=NULL, role=NULL, accessKey=NULL, className=NULL, contentEditable=NULL, contextMenu=NULL, dir=NULL, draggable=NULL, hidden=NULL, lang=NULL, spellCheck=NULL, style=NULL, tabIndex=NULL, title=NULL, loading_state=NULL, ...) { + + wildcard_names = names(dash_assert_valid_wildcards(attrib = list('data', 'aria'), ...)) + + props <- list(children=children, id=id, n_clicks=n_clicks, n_clicks_timestamp=n_clicks_timestamp, key=key, role=role, accessKey=accessKey, className=className, contentEditable=contentEditable, contextMenu=contextMenu, dir=dir, draggable=draggable, hidden=hidden, lang=lang, spellCheck=spellCheck, style=style, tabIndex=tabIndex, title=title, loading_state=loading_state, ...) + if (length(props) > 0) { + props <- props[!vapply(props, is.null, logical(1))] + } + component <- list( + props = props, + type = 'Strike', + namespace = 'dash_html_components', + propNames = c('children', 'id', 'n_clicks', 'n_clicks_timestamp', 'key', 'role', 'accessKey', 'className', 'contentEditable', 'contextMenu', 'dir', 'draggable', 'hidden', 'lang', 'spellCheck', 'style', 'tabIndex', 'title', 'loading_state', wildcard_names), + package = 'dashHtmlComponents' + ) + + structure(component, class = c('dash_component', 'list')) +} + +# AUTO GENERATED FILE - DO NOT EDIT + + +htmlStrong <- function(children=NULL, id=NULL, n_clicks=NULL, n_clicks_timestamp=NULL, key=NULL, role=NULL, accessKey=NULL, className=NULL, contentEditable=NULL, contextMenu=NULL, dir=NULL, draggable=NULL, hidden=NULL, lang=NULL, spellCheck=NULL, style=NULL, tabIndex=NULL, title=NULL, loading_state=NULL, ...) { + + wildcard_names = names(dash_assert_valid_wildcards(attrib = list('data', 'aria'), ...)) + + props <- list(children=children, id=id, n_clicks=n_clicks, n_clicks_timestamp=n_clicks_timestamp, key=key, role=role, accessKey=accessKey, className=className, contentEditable=contentEditable, contextMenu=contextMenu, dir=dir, draggable=draggable, hidden=hidden, lang=lang, spellCheck=spellCheck, style=style, tabIndex=tabIndex, title=title, loading_state=loading_state, ...) + if (length(props) > 0) { + props <- props[!vapply(props, is.null, logical(1))] + } + component <- list( + props = props, + type = 'Strong', + namespace = 'dash_html_components', + propNames = c('children', 'id', 'n_clicks', 'n_clicks_timestamp', 'key', 'role', 'accessKey', 'className', 'contentEditable', 'contextMenu', 'dir', 'draggable', 'hidden', 'lang', 'spellCheck', 'style', 'tabIndex', 'title', 'loading_state', wildcard_names), + package = 'dashHtmlComponents' + ) + + structure(component, class = c('dash_component', 'list')) +} + +# AUTO GENERATED FILE - DO NOT EDIT + + +htmlSub <- function(children=NULL, id=NULL, n_clicks=NULL, n_clicks_timestamp=NULL, key=NULL, role=NULL, accessKey=NULL, className=NULL, contentEditable=NULL, contextMenu=NULL, dir=NULL, draggable=NULL, hidden=NULL, lang=NULL, spellCheck=NULL, style=NULL, tabIndex=NULL, title=NULL, loading_state=NULL, ...) { + + wildcard_names = names(dash_assert_valid_wildcards(attrib = list('data', 'aria'), ...)) + + props <- list(children=children, id=id, n_clicks=n_clicks, n_clicks_timestamp=n_clicks_timestamp, key=key, role=role, accessKey=accessKey, className=className, contentEditable=contentEditable, contextMenu=contextMenu, dir=dir, draggable=draggable, hidden=hidden, lang=lang, spellCheck=spellCheck, style=style, tabIndex=tabIndex, title=title, loading_state=loading_state, ...) + if (length(props) > 0) { + props <- props[!vapply(props, is.null, logical(1))] + } + component <- list( + props = props, + type = 'Sub', + namespace = 'dash_html_components', + propNames = c('children', 'id', 'n_clicks', 'n_clicks_timestamp', 'key', 'role', 'accessKey', 'className', 'contentEditable', 'contextMenu', 'dir', 'draggable', 'hidden', 'lang', 'spellCheck', 'style', 'tabIndex', 'title', 'loading_state', wildcard_names), + package = 'dashHtmlComponents' + ) + + structure(component, class = c('dash_component', 'list')) +} + +# AUTO GENERATED FILE - DO NOT EDIT + + +htmlSummary <- function(children=NULL, id=NULL, n_clicks=NULL, n_clicks_timestamp=NULL, key=NULL, role=NULL, accessKey=NULL, className=NULL, contentEditable=NULL, contextMenu=NULL, dir=NULL, draggable=NULL, hidden=NULL, lang=NULL, spellCheck=NULL, style=NULL, tabIndex=NULL, title=NULL, loading_state=NULL, ...) { + + wildcard_names = names(dash_assert_valid_wildcards(attrib = list('data', 'aria'), ...)) + + props <- list(children=children, id=id, n_clicks=n_clicks, n_clicks_timestamp=n_clicks_timestamp, key=key, role=role, accessKey=accessKey, className=className, contentEditable=contentEditable, contextMenu=contextMenu, dir=dir, draggable=draggable, hidden=hidden, lang=lang, spellCheck=spellCheck, style=style, tabIndex=tabIndex, title=title, loading_state=loading_state, ...) + if (length(props) > 0) { + props <- props[!vapply(props, is.null, logical(1))] + } + component <- list( + props = props, + type = 'Summary', + namespace = 'dash_html_components', + propNames = c('children', 'id', 'n_clicks', 'n_clicks_timestamp', 'key', 'role', 'accessKey', 'className', 'contentEditable', 'contextMenu', 'dir', 'draggable', 'hidden', 'lang', 'spellCheck', 'style', 'tabIndex', 'title', 'loading_state', wildcard_names), + package = 'dashHtmlComponents' + ) + + structure(component, class = c('dash_component', 'list')) +} + +# AUTO GENERATED FILE - DO NOT EDIT + + +htmlSup <- function(children=NULL, id=NULL, n_clicks=NULL, n_clicks_timestamp=NULL, key=NULL, role=NULL, accessKey=NULL, className=NULL, contentEditable=NULL, contextMenu=NULL, dir=NULL, draggable=NULL, hidden=NULL, lang=NULL, spellCheck=NULL, style=NULL, tabIndex=NULL, title=NULL, loading_state=NULL, ...) { + + wildcard_names = names(dash_assert_valid_wildcards(attrib = list('data', 'aria'), ...)) + + props <- list(children=children, id=id, n_clicks=n_clicks, n_clicks_timestamp=n_clicks_timestamp, key=key, role=role, accessKey=accessKey, className=className, contentEditable=contentEditable, contextMenu=contextMenu, dir=dir, draggable=draggable, hidden=hidden, lang=lang, spellCheck=spellCheck, style=style, tabIndex=tabIndex, title=title, loading_state=loading_state, ...) + if (length(props) > 0) { + props <- props[!vapply(props, is.null, logical(1))] + } + component <- list( + props = props, + type = 'Sup', + namespace = 'dash_html_components', + propNames = c('children', 'id', 'n_clicks', 'n_clicks_timestamp', 'key', 'role', 'accessKey', 'className', 'contentEditable', 'contextMenu', 'dir', 'draggable', 'hidden', 'lang', 'spellCheck', 'style', 'tabIndex', 'title', 'loading_state', wildcard_names), + package = 'dashHtmlComponents' + ) + + structure(component, class = c('dash_component', 'list')) +} + +# AUTO GENERATED FILE - DO NOT EDIT + + +htmlTable <- function(children=NULL, id=NULL, n_clicks=NULL, n_clicks_timestamp=NULL, key=NULL, role=NULL, summary=NULL, accessKey=NULL, className=NULL, contentEditable=NULL, contextMenu=NULL, dir=NULL, draggable=NULL, hidden=NULL, lang=NULL, spellCheck=NULL, style=NULL, tabIndex=NULL, title=NULL, loading_state=NULL, ...) { + + wildcard_names = names(dash_assert_valid_wildcards(attrib = list('data', 'aria'), ...)) + + props <- list(children=children, id=id, n_clicks=n_clicks, n_clicks_timestamp=n_clicks_timestamp, key=key, role=role, summary=summary, accessKey=accessKey, className=className, contentEditable=contentEditable, contextMenu=contextMenu, dir=dir, draggable=draggable, hidden=hidden, lang=lang, spellCheck=spellCheck, style=style, tabIndex=tabIndex, title=title, loading_state=loading_state, ...) + if (length(props) > 0) { + props <- props[!vapply(props, is.null, logical(1))] + } + component <- list( + props = props, + type = 'Table', + namespace = 'dash_html_components', + propNames = c('children', 'id', 'n_clicks', 'n_clicks_timestamp', 'key', 'role', 'summary', 'accessKey', 'className', 'contentEditable', 'contextMenu', 'dir', 'draggable', 'hidden', 'lang', 'spellCheck', 'style', 'tabIndex', 'title', 'loading_state', wildcard_names), + package = 'dashHtmlComponents' + ) + + structure(component, class = c('dash_component', 'list')) +} + +# AUTO GENERATED FILE - DO NOT EDIT + + +htmlTbody <- function(children=NULL, id=NULL, n_clicks=NULL, n_clicks_timestamp=NULL, key=NULL, role=NULL, accessKey=NULL, className=NULL, contentEditable=NULL, contextMenu=NULL, dir=NULL, draggable=NULL, hidden=NULL, lang=NULL, spellCheck=NULL, style=NULL, tabIndex=NULL, title=NULL, loading_state=NULL, ...) { + + wildcard_names = names(dash_assert_valid_wildcards(attrib = list('data', 'aria'), ...)) + + props <- list(children=children, id=id, n_clicks=n_clicks, n_clicks_timestamp=n_clicks_timestamp, key=key, role=role, accessKey=accessKey, className=className, contentEditable=contentEditable, contextMenu=contextMenu, dir=dir, draggable=draggable, hidden=hidden, lang=lang, spellCheck=spellCheck, style=style, tabIndex=tabIndex, title=title, loading_state=loading_state, ...) + if (length(props) > 0) { + props <- props[!vapply(props, is.null, logical(1))] + } + component <- list( + props = props, + type = 'Tbody', + namespace = 'dash_html_components', + propNames = c('children', 'id', 'n_clicks', 'n_clicks_timestamp', 'key', 'role', 'accessKey', 'className', 'contentEditable', 'contextMenu', 'dir', 'draggable', 'hidden', 'lang', 'spellCheck', 'style', 'tabIndex', 'title', 'loading_state', wildcard_names), + package = 'dashHtmlComponents' + ) + + structure(component, class = c('dash_component', 'list')) +} + +# AUTO GENERATED FILE - DO NOT EDIT + + +htmlTd <- function(children=NULL, id=NULL, n_clicks=NULL, n_clicks_timestamp=NULL, key=NULL, role=NULL, colSpan=NULL, headers=NULL, rowSpan=NULL, accessKey=NULL, className=NULL, contentEditable=NULL, contextMenu=NULL, dir=NULL, draggable=NULL, hidden=NULL, lang=NULL, spellCheck=NULL, style=NULL, tabIndex=NULL, title=NULL, loading_state=NULL, ...) { + + wildcard_names = names(dash_assert_valid_wildcards(attrib = list('data', 'aria'), ...)) + + props <- list(children=children, id=id, n_clicks=n_clicks, n_clicks_timestamp=n_clicks_timestamp, key=key, role=role, colSpan=colSpan, headers=headers, rowSpan=rowSpan, accessKey=accessKey, className=className, contentEditable=contentEditable, contextMenu=contextMenu, dir=dir, draggable=draggable, hidden=hidden, lang=lang, spellCheck=spellCheck, style=style, tabIndex=tabIndex, title=title, loading_state=loading_state, ...) + if (length(props) > 0) { + props <- props[!vapply(props, is.null, logical(1))] + } + component <- list( + props = props, + type = 'Td', + namespace = 'dash_html_components', + propNames = c('children', 'id', 'n_clicks', 'n_clicks_timestamp', 'key', 'role', 'colSpan', 'headers', 'rowSpan', 'accessKey', 'className', 'contentEditable', 'contextMenu', 'dir', 'draggable', 'hidden', 'lang', 'spellCheck', 'style', 'tabIndex', 'title', 'loading_state', wildcard_names), + package = 'dashHtmlComponents' + ) + + structure(component, class = c('dash_component', 'list')) +} + +# AUTO GENERATED FILE - DO NOT EDIT + + +htmlTemplate <- function(children=NULL, id=NULL, n_clicks=NULL, n_clicks_timestamp=NULL, key=NULL, role=NULL, accessKey=NULL, className=NULL, contentEditable=NULL, contextMenu=NULL, dir=NULL, draggable=NULL, hidden=NULL, lang=NULL, spellCheck=NULL, style=NULL, tabIndex=NULL, title=NULL, loading_state=NULL, ...) { + + wildcard_names = names(dash_assert_valid_wildcards(attrib = list('data', 'aria'), ...)) + + props <- list(children=children, id=id, n_clicks=n_clicks, n_clicks_timestamp=n_clicks_timestamp, key=key, role=role, accessKey=accessKey, className=className, contentEditable=contentEditable, contextMenu=contextMenu, dir=dir, draggable=draggable, hidden=hidden, lang=lang, spellCheck=spellCheck, style=style, tabIndex=tabIndex, title=title, loading_state=loading_state, ...) + if (length(props) > 0) { + props <- props[!vapply(props, is.null, logical(1))] + } + component <- list( + props = props, + type = 'Template', + namespace = 'dash_html_components', + propNames = c('children', 'id', 'n_clicks', 'n_clicks_timestamp', 'key', 'role', 'accessKey', 'className', 'contentEditable', 'contextMenu', 'dir', 'draggable', 'hidden', 'lang', 'spellCheck', 'style', 'tabIndex', 'title', 'loading_state', wildcard_names), + package = 'dashHtmlComponents' + ) + + structure(component, class = c('dash_component', 'list')) +} + +# AUTO GENERATED FILE - DO NOT EDIT + + +htmlTextarea <- function(children=NULL, id=NULL, n_clicks=NULL, n_clicks_timestamp=NULL, key=NULL, role=NULL, autoComplete=NULL, autoFocus=NULL, cols=NULL, disabled=NULL, form=NULL, inputMode=NULL, maxLength=NULL, minLength=NULL, name=NULL, placeholder=NULL, readOnly=NULL, required=NULL, rows=NULL, wrap=NULL, accessKey=NULL, className=NULL, contentEditable=NULL, contextMenu=NULL, dir=NULL, draggable=NULL, hidden=NULL, lang=NULL, spellCheck=NULL, style=NULL, tabIndex=NULL, title=NULL, loading_state=NULL, ...) { + + wildcard_names = names(dash_assert_valid_wildcards(attrib = list('data', 'aria'), ...)) + + props <- list(children=children, id=id, n_clicks=n_clicks, n_clicks_timestamp=n_clicks_timestamp, key=key, role=role, autoComplete=autoComplete, autoFocus=autoFocus, cols=cols, disabled=disabled, form=form, inputMode=inputMode, maxLength=maxLength, minLength=minLength, name=name, placeholder=placeholder, readOnly=readOnly, required=required, rows=rows, wrap=wrap, accessKey=accessKey, className=className, contentEditable=contentEditable, contextMenu=contextMenu, dir=dir, draggable=draggable, hidden=hidden, lang=lang, spellCheck=spellCheck, style=style, tabIndex=tabIndex, title=title, loading_state=loading_state, ...) + if (length(props) > 0) { + props <- props[!vapply(props, is.null, logical(1))] + } + component <- list( + props = props, + type = 'Textarea', + namespace = 'dash_html_components', + propNames = c('children', 'id', 'n_clicks', 'n_clicks_timestamp', 'key', 'role', 'autoComplete', 'autoFocus', 'cols', 'disabled', 'form', 'inputMode', 'maxLength', 'minLength', 'name', 'placeholder', 'readOnly', 'required', 'rows', 'wrap', 'accessKey', 'className', 'contentEditable', 'contextMenu', 'dir', 'draggable', 'hidden', 'lang', 'spellCheck', 'style', 'tabIndex', 'title', 'loading_state', wildcard_names), + package = 'dashHtmlComponents' + ) + + structure(component, class = c('dash_component', 'list')) +} + +# AUTO GENERATED FILE - DO NOT EDIT + + +htmlTfoot <- function(children=NULL, id=NULL, n_clicks=NULL, n_clicks_timestamp=NULL, key=NULL, role=NULL, accessKey=NULL, className=NULL, contentEditable=NULL, contextMenu=NULL, dir=NULL, draggable=NULL, hidden=NULL, lang=NULL, spellCheck=NULL, style=NULL, tabIndex=NULL, title=NULL, loading_state=NULL, ...) { + + wildcard_names = names(dash_assert_valid_wildcards(attrib = list('data', 'aria'), ...)) + + props <- list(children=children, id=id, n_clicks=n_clicks, n_clicks_timestamp=n_clicks_timestamp, key=key, role=role, accessKey=accessKey, className=className, contentEditable=contentEditable, contextMenu=contextMenu, dir=dir, draggable=draggable, hidden=hidden, lang=lang, spellCheck=spellCheck, style=style, tabIndex=tabIndex, title=title, loading_state=loading_state, ...) + if (length(props) > 0) { + props <- props[!vapply(props, is.null, logical(1))] + } + component <- list( + props = props, + type = 'Tfoot', + namespace = 'dash_html_components', + propNames = c('children', 'id', 'n_clicks', 'n_clicks_timestamp', 'key', 'role', 'accessKey', 'className', 'contentEditable', 'contextMenu', 'dir', 'draggable', 'hidden', 'lang', 'spellCheck', 'style', 'tabIndex', 'title', 'loading_state', wildcard_names), + package = 'dashHtmlComponents' + ) + + structure(component, class = c('dash_component', 'list')) +} + +# AUTO GENERATED FILE - DO NOT EDIT + + +htmlTh <- function(children=NULL, id=NULL, n_clicks=NULL, n_clicks_timestamp=NULL, key=NULL, role=NULL, colSpan=NULL, headers=NULL, rowSpan=NULL, scope=NULL, accessKey=NULL, className=NULL, contentEditable=NULL, contextMenu=NULL, dir=NULL, draggable=NULL, hidden=NULL, lang=NULL, spellCheck=NULL, style=NULL, tabIndex=NULL, title=NULL, loading_state=NULL, ...) { + + wildcard_names = names(dash_assert_valid_wildcards(attrib = list('data', 'aria'), ...)) + + props <- list(children=children, id=id, n_clicks=n_clicks, n_clicks_timestamp=n_clicks_timestamp, key=key, role=role, colSpan=colSpan, headers=headers, rowSpan=rowSpan, scope=scope, accessKey=accessKey, className=className, contentEditable=contentEditable, contextMenu=contextMenu, dir=dir, draggable=draggable, hidden=hidden, lang=lang, spellCheck=spellCheck, style=style, tabIndex=tabIndex, title=title, loading_state=loading_state, ...) + if (length(props) > 0) { + props <- props[!vapply(props, is.null, logical(1))] + } + component <- list( + props = props, + type = 'Th', + namespace = 'dash_html_components', + propNames = c('children', 'id', 'n_clicks', 'n_clicks_timestamp', 'key', 'role', 'colSpan', 'headers', 'rowSpan', 'scope', 'accessKey', 'className', 'contentEditable', 'contextMenu', 'dir', 'draggable', 'hidden', 'lang', 'spellCheck', 'style', 'tabIndex', 'title', 'loading_state', wildcard_names), + package = 'dashHtmlComponents' + ) + + structure(component, class = c('dash_component', 'list')) +} + +# AUTO GENERATED FILE - DO NOT EDIT + + +htmlThead <- function(children=NULL, id=NULL, n_clicks=NULL, n_clicks_timestamp=NULL, key=NULL, role=NULL, accessKey=NULL, className=NULL, contentEditable=NULL, contextMenu=NULL, dir=NULL, draggable=NULL, hidden=NULL, lang=NULL, spellCheck=NULL, style=NULL, tabIndex=NULL, title=NULL, loading_state=NULL, ...) { + + wildcard_names = names(dash_assert_valid_wildcards(attrib = list('data', 'aria'), ...)) + + props <- list(children=children, id=id, n_clicks=n_clicks, n_clicks_timestamp=n_clicks_timestamp, key=key, role=role, accessKey=accessKey, className=className, contentEditable=contentEditable, contextMenu=contextMenu, dir=dir, draggable=draggable, hidden=hidden, lang=lang, spellCheck=spellCheck, style=style, tabIndex=tabIndex, title=title, loading_state=loading_state, ...) + if (length(props) > 0) { + props <- props[!vapply(props, is.null, logical(1))] + } + component <- list( + props = props, + type = 'Thead', + namespace = 'dash_html_components', + propNames = c('children', 'id', 'n_clicks', 'n_clicks_timestamp', 'key', 'role', 'accessKey', 'className', 'contentEditable', 'contextMenu', 'dir', 'draggable', 'hidden', 'lang', 'spellCheck', 'style', 'tabIndex', 'title', 'loading_state', wildcard_names), + package = 'dashHtmlComponents' + ) + + structure(component, class = c('dash_component', 'list')) +} + +# AUTO GENERATED FILE - DO NOT EDIT + + +htmlTime <- function(children=NULL, id=NULL, n_clicks=NULL, n_clicks_timestamp=NULL, key=NULL, role=NULL, dateTime=NULL, accessKey=NULL, className=NULL, contentEditable=NULL, contextMenu=NULL, dir=NULL, draggable=NULL, hidden=NULL, lang=NULL, spellCheck=NULL, style=NULL, tabIndex=NULL, title=NULL, loading_state=NULL, ...) { + + wildcard_names = names(dash_assert_valid_wildcards(attrib = list('data', 'aria'), ...)) + + props <- list(children=children, id=id, n_clicks=n_clicks, n_clicks_timestamp=n_clicks_timestamp, key=key, role=role, dateTime=dateTime, accessKey=accessKey, className=className, contentEditable=contentEditable, contextMenu=contextMenu, dir=dir, draggable=draggable, hidden=hidden, lang=lang, spellCheck=spellCheck, style=style, tabIndex=tabIndex, title=title, loading_state=loading_state, ...) + if (length(props) > 0) { + props <- props[!vapply(props, is.null, logical(1))] + } + component <- list( + props = props, + type = 'Time', + namespace = 'dash_html_components', + propNames = c('children', 'id', 'n_clicks', 'n_clicks_timestamp', 'key', 'role', 'dateTime', 'accessKey', 'className', 'contentEditable', 'contextMenu', 'dir', 'draggable', 'hidden', 'lang', 'spellCheck', 'style', 'tabIndex', 'title', 'loading_state', wildcard_names), + package = 'dashHtmlComponents' + ) + + structure(component, class = c('dash_component', 'list')) +} + +# AUTO GENERATED FILE - DO NOT EDIT + + +htmlTitle <- function(children=NULL, id=NULL, n_clicks=NULL, n_clicks_timestamp=NULL, key=NULL, role=NULL, accessKey=NULL, className=NULL, contentEditable=NULL, contextMenu=NULL, dir=NULL, draggable=NULL, hidden=NULL, lang=NULL, spellCheck=NULL, style=NULL, tabIndex=NULL, title=NULL, loading_state=NULL, ...) { + + wildcard_names = names(dash_assert_valid_wildcards(attrib = list('data', 'aria'), ...)) + + props <- list(children=children, id=id, n_clicks=n_clicks, n_clicks_timestamp=n_clicks_timestamp, key=key, role=role, accessKey=accessKey, className=className, contentEditable=contentEditable, contextMenu=contextMenu, dir=dir, draggable=draggable, hidden=hidden, lang=lang, spellCheck=spellCheck, style=style, tabIndex=tabIndex, title=title, loading_state=loading_state, ...) + if (length(props) > 0) { + props <- props[!vapply(props, is.null, logical(1))] + } + component <- list( + props = props, + type = 'Title', + namespace = 'dash_html_components', + propNames = c('children', 'id', 'n_clicks', 'n_clicks_timestamp', 'key', 'role', 'accessKey', 'className', 'contentEditable', 'contextMenu', 'dir', 'draggable', 'hidden', 'lang', 'spellCheck', 'style', 'tabIndex', 'title', 'loading_state', wildcard_names), + package = 'dashHtmlComponents' + ) + + structure(component, class = c('dash_component', 'list')) +} + +# AUTO GENERATED FILE - DO NOT EDIT + + +htmlTr <- function(children=NULL, id=NULL, n_clicks=NULL, n_clicks_timestamp=NULL, key=NULL, role=NULL, accessKey=NULL, className=NULL, contentEditable=NULL, contextMenu=NULL, dir=NULL, draggable=NULL, hidden=NULL, lang=NULL, spellCheck=NULL, style=NULL, tabIndex=NULL, title=NULL, loading_state=NULL, ...) { + + wildcard_names = names(dash_assert_valid_wildcards(attrib = list('data', 'aria'), ...)) + + props <- list(children=children, id=id, n_clicks=n_clicks, n_clicks_timestamp=n_clicks_timestamp, key=key, role=role, accessKey=accessKey, className=className, contentEditable=contentEditable, contextMenu=contextMenu, dir=dir, draggable=draggable, hidden=hidden, lang=lang, spellCheck=spellCheck, style=style, tabIndex=tabIndex, title=title, loading_state=loading_state, ...) + if (length(props) > 0) { + props <- props[!vapply(props, is.null, logical(1))] + } + component <- list( + props = props, + type = 'Tr', + namespace = 'dash_html_components', + propNames = c('children', 'id', 'n_clicks', 'n_clicks_timestamp', 'key', 'role', 'accessKey', 'className', 'contentEditable', 'contextMenu', 'dir', 'draggable', 'hidden', 'lang', 'spellCheck', 'style', 'tabIndex', 'title', 'loading_state', wildcard_names), + package = 'dashHtmlComponents' + ) + + structure(component, class = c('dash_component', 'list')) +} + +# AUTO GENERATED FILE - DO NOT EDIT + + +htmlTrack <- function(children=NULL, id=NULL, n_clicks=NULL, n_clicks_timestamp=NULL, key=NULL, role=NULL, default=NULL, kind=NULL, label=NULL, src=NULL, srcLang=NULL, accessKey=NULL, className=NULL, contentEditable=NULL, contextMenu=NULL, dir=NULL, draggable=NULL, hidden=NULL, lang=NULL, spellCheck=NULL, style=NULL, tabIndex=NULL, title=NULL, loading_state=NULL, ...) { + + wildcard_names = names(dash_assert_valid_wildcards(attrib = list('data', 'aria'), ...)) + + props <- list(children=children, id=id, n_clicks=n_clicks, n_clicks_timestamp=n_clicks_timestamp, key=key, role=role, default=default, kind=kind, label=label, src=src, srcLang=srcLang, accessKey=accessKey, className=className, contentEditable=contentEditable, contextMenu=contextMenu, dir=dir, draggable=draggable, hidden=hidden, lang=lang, spellCheck=spellCheck, style=style, tabIndex=tabIndex, title=title, loading_state=loading_state, ...) + if (length(props) > 0) { + props <- props[!vapply(props, is.null, logical(1))] + } + component <- list( + props = props, + type = 'Track', + namespace = 'dash_html_components', + propNames = c('children', 'id', 'n_clicks', 'n_clicks_timestamp', 'key', 'role', 'default', 'kind', 'label', 'src', 'srcLang', 'accessKey', 'className', 'contentEditable', 'contextMenu', 'dir', 'draggable', 'hidden', 'lang', 'spellCheck', 'style', 'tabIndex', 'title', 'loading_state', wildcard_names), + package = 'dashHtmlComponents' + ) + + structure(component, class = c('dash_component', 'list')) +} + +# AUTO GENERATED FILE - DO NOT EDIT + + +htmlU <- function(children=NULL, id=NULL, n_clicks=NULL, n_clicks_timestamp=NULL, key=NULL, role=NULL, accessKey=NULL, className=NULL, contentEditable=NULL, contextMenu=NULL, dir=NULL, draggable=NULL, hidden=NULL, lang=NULL, spellCheck=NULL, style=NULL, tabIndex=NULL, title=NULL, loading_state=NULL, ...) { + + wildcard_names = names(dash_assert_valid_wildcards(attrib = list('data', 'aria'), ...)) + + props <- list(children=children, id=id, n_clicks=n_clicks, n_clicks_timestamp=n_clicks_timestamp, key=key, role=role, accessKey=accessKey, className=className, contentEditable=contentEditable, contextMenu=contextMenu, dir=dir, draggable=draggable, hidden=hidden, lang=lang, spellCheck=spellCheck, style=style, tabIndex=tabIndex, title=title, loading_state=loading_state, ...) + if (length(props) > 0) { + props <- props[!vapply(props, is.null, logical(1))] + } + component <- list( + props = props, + type = 'U', + namespace = 'dash_html_components', + propNames = c('children', 'id', 'n_clicks', 'n_clicks_timestamp', 'key', 'role', 'accessKey', 'className', 'contentEditable', 'contextMenu', 'dir', 'draggable', 'hidden', 'lang', 'spellCheck', 'style', 'tabIndex', 'title', 'loading_state', wildcard_names), + package = 'dashHtmlComponents' + ) + + structure(component, class = c('dash_component', 'list')) +} + +# AUTO GENERATED FILE - DO NOT EDIT + + +htmlUl <- function(children=NULL, id=NULL, n_clicks=NULL, n_clicks_timestamp=NULL, key=NULL, role=NULL, accessKey=NULL, className=NULL, contentEditable=NULL, contextMenu=NULL, dir=NULL, draggable=NULL, hidden=NULL, lang=NULL, spellCheck=NULL, style=NULL, tabIndex=NULL, title=NULL, loading_state=NULL, ...) { + + wildcard_names = names(dash_assert_valid_wildcards(attrib = list('data', 'aria'), ...)) + + props <- list(children=children, id=id, n_clicks=n_clicks, n_clicks_timestamp=n_clicks_timestamp, key=key, role=role, accessKey=accessKey, className=className, contentEditable=contentEditable, contextMenu=contextMenu, dir=dir, draggable=draggable, hidden=hidden, lang=lang, spellCheck=spellCheck, style=style, tabIndex=tabIndex, title=title, loading_state=loading_state, ...) + if (length(props) > 0) { + props <- props[!vapply(props, is.null, logical(1))] + } + component <- list( + props = props, + type = 'Ul', + namespace = 'dash_html_components', + propNames = c('children', 'id', 'n_clicks', 'n_clicks_timestamp', 'key', 'role', 'accessKey', 'className', 'contentEditable', 'contextMenu', 'dir', 'draggable', 'hidden', 'lang', 'spellCheck', 'style', 'tabIndex', 'title', 'loading_state', wildcard_names), + package = 'dashHtmlComponents' + ) + + structure(component, class = c('dash_component', 'list')) +} + +# AUTO GENERATED FILE - DO NOT EDIT + + +htmlVar <- function(children=NULL, id=NULL, n_clicks=NULL, n_clicks_timestamp=NULL, key=NULL, role=NULL, accessKey=NULL, className=NULL, contentEditable=NULL, contextMenu=NULL, dir=NULL, draggable=NULL, hidden=NULL, lang=NULL, spellCheck=NULL, style=NULL, tabIndex=NULL, title=NULL, loading_state=NULL, ...) { + + wildcard_names = names(dash_assert_valid_wildcards(attrib = list('data', 'aria'), ...)) + + props <- list(children=children, id=id, n_clicks=n_clicks, n_clicks_timestamp=n_clicks_timestamp, key=key, role=role, accessKey=accessKey, className=className, contentEditable=contentEditable, contextMenu=contextMenu, dir=dir, draggable=draggable, hidden=hidden, lang=lang, spellCheck=spellCheck, style=style, tabIndex=tabIndex, title=title, loading_state=loading_state, ...) + if (length(props) > 0) { + props <- props[!vapply(props, is.null, logical(1))] + } + component <- list( + props = props, + type = 'Var', + namespace = 'dash_html_components', + propNames = c('children', 'id', 'n_clicks', 'n_clicks_timestamp', 'key', 'role', 'accessKey', 'className', 'contentEditable', 'contextMenu', 'dir', 'draggable', 'hidden', 'lang', 'spellCheck', 'style', 'tabIndex', 'title', 'loading_state', wildcard_names), + package = 'dashHtmlComponents' + ) + + structure(component, class = c('dash_component', 'list')) +} + +# AUTO GENERATED FILE - DO NOT EDIT + + +htmlVideo <- function(children=NULL, id=NULL, n_clicks=NULL, n_clicks_timestamp=NULL, key=NULL, role=NULL, autoPlay=NULL, controls=NULL, crossOrigin=NULL, height=NULL, loop=NULL, muted=NULL, poster=NULL, preload=NULL, src=NULL, width=NULL, accessKey=NULL, className=NULL, contentEditable=NULL, contextMenu=NULL, dir=NULL, draggable=NULL, hidden=NULL, lang=NULL, spellCheck=NULL, style=NULL, tabIndex=NULL, title=NULL, loading_state=NULL, ...) { + + wildcard_names = names(dash_assert_valid_wildcards(attrib = list('data', 'aria'), ...)) + + props <- list(children=children, id=id, n_clicks=n_clicks, n_clicks_timestamp=n_clicks_timestamp, key=key, role=role, autoPlay=autoPlay, controls=controls, crossOrigin=crossOrigin, height=height, loop=loop, muted=muted, poster=poster, preload=preload, src=src, width=width, accessKey=accessKey, className=className, contentEditable=contentEditable, contextMenu=contextMenu, dir=dir, draggable=draggable, hidden=hidden, lang=lang, spellCheck=spellCheck, style=style, tabIndex=tabIndex, title=title, loading_state=loading_state, ...) + if (length(props) > 0) { + props <- props[!vapply(props, is.null, logical(1))] + } + component <- list( + props = props, + type = 'Video', + namespace = 'dash_html_components', + propNames = c('children', 'id', 'n_clicks', 'n_clicks_timestamp', 'key', 'role', 'autoPlay', 'controls', 'crossOrigin', 'height', 'loop', 'muted', 'poster', 'preload', 'src', 'width', 'accessKey', 'className', 'contentEditable', 'contextMenu', 'dir', 'draggable', 'hidden', 'lang', 'spellCheck', 'style', 'tabIndex', 'title', 'loading_state', wildcard_names), + package = 'dashHtmlComponents' + ) + + structure(component, class = c('dash_component', 'list')) +} + +# AUTO GENERATED FILE - DO NOT EDIT + + +htmlWbr <- function(children=NULL, id=NULL, n_clicks=NULL, n_clicks_timestamp=NULL, key=NULL, role=NULL, accessKey=NULL, className=NULL, contentEditable=NULL, contextMenu=NULL, dir=NULL, draggable=NULL, hidden=NULL, lang=NULL, spellCheck=NULL, style=NULL, tabIndex=NULL, title=NULL, loading_state=NULL, ...) { + + wildcard_names = names(dash_assert_valid_wildcards(attrib = list('data', 'aria'), ...)) + + props <- list(children=children, id=id, n_clicks=n_clicks, n_clicks_timestamp=n_clicks_timestamp, key=key, role=role, accessKey=accessKey, className=className, contentEditable=contentEditable, contextMenu=contextMenu, dir=dir, draggable=draggable, hidden=hidden, lang=lang, spellCheck=spellCheck, style=style, tabIndex=tabIndex, title=title, loading_state=loading_state, ...) + if (length(props) > 0) { + props <- props[!vapply(props, is.null, logical(1))] + } + component <- list( + props = props, + type = 'Wbr', + namespace = 'dash_html_components', + propNames = c('children', 'id', 'n_clicks', 'n_clicks_timestamp', 'key', 'role', 'accessKey', 'className', 'contentEditable', 'contextMenu', 'dir', 'draggable', 'hidden', 'lang', 'spellCheck', 'style', 'tabIndex', 'title', 'loading_state', wildcard_names), + package = 'dashHtmlComponents' + ) + + structure(component, class = c('dash_component', 'list')) +} + +# AUTO GENERATED FILE - DO NOT EDIT + + +htmlXmp <- function(children=NULL, id=NULL, n_clicks=NULL, n_clicks_timestamp=NULL, key=NULL, role=NULL, accessKey=NULL, className=NULL, contentEditable=NULL, contextMenu=NULL, dir=NULL, draggable=NULL, hidden=NULL, lang=NULL, spellCheck=NULL, style=NULL, tabIndex=NULL, title=NULL, loading_state=NULL, ...) { + + wildcard_names = names(dash_assert_valid_wildcards(attrib = list('data', 'aria'), ...)) + + props <- list(children=children, id=id, n_clicks=n_clicks, n_clicks_timestamp=n_clicks_timestamp, key=key, role=role, accessKey=accessKey, className=className, contentEditable=contentEditable, contextMenu=contextMenu, dir=dir, draggable=draggable, hidden=hidden, lang=lang, spellCheck=spellCheck, style=style, tabIndex=tabIndex, title=title, loading_state=loading_state, ...) + if (length(props) > 0) { + props <- props[!vapply(props, is.null, logical(1))] + } + component <- list( + props = props, + type = 'Xmp', + namespace = 'dash_html_components', + propNames = c('children', 'id', 'n_clicks', 'n_clicks_timestamp', 'key', 'role', 'accessKey', 'className', 'contentEditable', 'contextMenu', 'dir', 'draggable', 'hidden', 'lang', 'spellCheck', 'style', 'tabIndex', 'title', 'loading_state', wildcard_names), + package = 'dashHtmlComponents' + ) + + structure(component, class = c('dash_component', 'list')) +} diff --git a/R/dashTable.R b/R/dashTable.R new file mode 100644 index 00000000..5da418df --- /dev/null +++ b/R/dashTable.R @@ -0,0 +1,19 @@ +# AUTO GENERATED FILE - DO NOT EDIT + +#' @export +dashDataTable <- function(id=NULL, data=NULL, columns=NULL, active_cell=NULL, include_headers_on_copy_paste=NULL, locale_format=NULL, markdown_options=NULL, css=NULL, data_previous=NULL, data_timestamp=NULL, editable=NULL, end_cell=NULL, export_columns=NULL, export_format=NULL, export_headers=NULL, fill_width=NULL, hidden_columns=NULL, is_focused=NULL, merge_duplicate_headers=NULL, fixed_columns=NULL, fixed_rows=NULL, column_selectable=NULL, row_deletable=NULL, cell_selectable=NULL, row_selectable=NULL, selected_cells=NULL, selected_rows=NULL, selected_columns=NULL, selected_row_ids=NULL, start_cell=NULL, style_as_list_view=NULL, page_action=NULL, page_current=NULL, page_count=NULL, page_size=NULL, dropdown=NULL, dropdown_conditional=NULL, dropdown_data=NULL, tooltip=NULL, tooltip_conditional=NULL, tooltip_data=NULL, tooltip_header=NULL, tooltip_delay=NULL, tooltip_duration=NULL, filter_query=NULL, filter_action=NULL, filter_options=NULL, sort_action=NULL, sort_mode=NULL, sort_by=NULL, sort_as_null=NULL, style_table=NULL, style_cell=NULL, style_data=NULL, style_filter=NULL, style_header=NULL, style_cell_conditional=NULL, style_data_conditional=NULL, style_filter_conditional=NULL, style_header_conditional=NULL, virtualization=NULL, derived_filter_query_structure=NULL, derived_viewport_data=NULL, derived_viewport_indices=NULL, derived_viewport_row_ids=NULL, derived_viewport_selected_columns=NULL, derived_viewport_selected_rows=NULL, derived_viewport_selected_row_ids=NULL, derived_virtual_data=NULL, derived_virtual_indices=NULL, derived_virtual_row_ids=NULL, derived_virtual_selected_rows=NULL, derived_virtual_selected_row_ids=NULL, loading_state=NULL, persistence=NULL, persisted_props=NULL, persistence_type=NULL) { + + props <- list(id=id, data=data, columns=columns, active_cell=active_cell, include_headers_on_copy_paste=include_headers_on_copy_paste, locale_format=locale_format, markdown_options=markdown_options, css=css, data_previous=data_previous, data_timestamp=data_timestamp, editable=editable, end_cell=end_cell, export_columns=export_columns, export_format=export_format, export_headers=export_headers, fill_width=fill_width, hidden_columns=hidden_columns, is_focused=is_focused, merge_duplicate_headers=merge_duplicate_headers, fixed_columns=fixed_columns, fixed_rows=fixed_rows, column_selectable=column_selectable, row_deletable=row_deletable, cell_selectable=cell_selectable, row_selectable=row_selectable, selected_cells=selected_cells, selected_rows=selected_rows, selected_columns=selected_columns, selected_row_ids=selected_row_ids, start_cell=start_cell, style_as_list_view=style_as_list_view, page_action=page_action, page_current=page_current, page_count=page_count, page_size=page_size, dropdown=dropdown, dropdown_conditional=dropdown_conditional, dropdown_data=dropdown_data, tooltip=tooltip, tooltip_conditional=tooltip_conditional, tooltip_data=tooltip_data, tooltip_header=tooltip_header, tooltip_delay=tooltip_delay, tooltip_duration=tooltip_duration, filter_query=filter_query, filter_action=filter_action, filter_options=filter_options, sort_action=sort_action, sort_mode=sort_mode, sort_by=sort_by, sort_as_null=sort_as_null, style_table=style_table, style_cell=style_cell, style_data=style_data, style_filter=style_filter, style_header=style_header, style_cell_conditional=style_cell_conditional, style_data_conditional=style_data_conditional, style_filter_conditional=style_filter_conditional, style_header_conditional=style_header_conditional, virtualization=virtualization, derived_filter_query_structure=derived_filter_query_structure, derived_viewport_data=derived_viewport_data, derived_viewport_indices=derived_viewport_indices, derived_viewport_row_ids=derived_viewport_row_ids, derived_viewport_selected_columns=derived_viewport_selected_columns, derived_viewport_selected_rows=derived_viewport_selected_rows, derived_viewport_selected_row_ids=derived_viewport_selected_row_ids, derived_virtual_data=derived_virtual_data, derived_virtual_indices=derived_virtual_indices, derived_virtual_row_ids=derived_virtual_row_ids, derived_virtual_selected_rows=derived_virtual_selected_rows, derived_virtual_selected_row_ids=derived_virtual_selected_row_ids, loading_state=loading_state, persistence=persistence, persisted_props=persisted_props, persistence_type=persistence_type) + if (length(props) > 0) { + props <- props[!vapply(props, is.null, logical(1))] + } + component <- list( + props = props, + type = 'DataTable', + namespace = 'dash_table', + propNames = c('id', 'data', 'columns', 'active_cell', 'include_headers_on_copy_paste', 'locale_format', 'markdown_options', 'css', 'data_previous', 'data_timestamp', 'editable', 'end_cell', 'export_columns', 'export_format', 'export_headers', 'fill_width', 'hidden_columns', 'is_focused', 'merge_duplicate_headers', 'fixed_columns', 'fixed_rows', 'column_selectable', 'row_deletable', 'cell_selectable', 'row_selectable', 'selected_cells', 'selected_rows', 'selected_columns', 'selected_row_ids', 'start_cell', 'style_as_list_view', 'page_action', 'page_current', 'page_count', 'page_size', 'dropdown', 'dropdown_conditional', 'dropdown_data', 'tooltip', 'tooltip_conditional', 'tooltip_data', 'tooltip_header', 'tooltip_delay', 'tooltip_duration', 'filter_query', 'filter_action', 'filter_options', 'sort_action', 'sort_mode', 'sort_by', 'sort_as_null', 'style_table', 'style_cell', 'style_data', 'style_filter', 'style_header', 'style_cell_conditional', 'style_data_conditional', 'style_filter_conditional', 'style_header_conditional', 'virtualization', 'derived_filter_query_structure', 'derived_viewport_data', 'derived_viewport_indices', 'derived_viewport_row_ids', 'derived_viewport_selected_columns', 'derived_viewport_selected_rows', 'derived_viewport_selected_row_ids', 'derived_virtual_data', 'derived_virtual_indices', 'derived_virtual_row_ids', 'derived_virtual_selected_rows', 'derived_virtual_selected_row_ids', 'loading_state', 'persistence', 'persisted_props', 'persistence_type'), + package = 'dashTable' + ) + + structure(component, class = c('dash_component', 'list')) +} diff --git a/R/dependencies.R b/R/dependencies.R index 77ec8b77..121f0769 100644 --- a/R/dependencies.R +++ b/R/dependencies.R @@ -1,20 +1,34 @@ # akin to https://github.com/plotly/dash/blob/d2ebc837/dash/dependencies.py +# Helper functions for handling dependency ids or props +setWildcardId <- function(id) { + # Sort the keys of a wildcard id + id <- id[order(names(id))] + all_selectors <- vapply(id, function(x) {is.symbol(x)}, logical(1)) + id[all_selectors] <- as.character(id[all_selectors]) + id[!all_selectors] <- lapply(id[!all_selectors], function(x) {jsonlite::unbox(x)}) + return(as.character(jsonlite::toJSON(id, auto_unbox = FALSE))) +} + #' Input/Output/State definitions #' -#' Use in conjunction with the `callback()` method from the [dash::Dash] class +#' Use in conjunction with the `callback()` method from the [Dash] class #' to define the update logic in your application. #' #' The `dashNoUpdate()` function permits application developers to prevent a #' single output from updating the layout. It has no formal arguments. -#' +#' #' @name dependencies #' @param id a component id #' @param property the component property to use #' @rdname dependencies #' @export + output <- function(id, property) { + if (is.list(id)) { + id = setWildcardId(id) + } structure( dependency(id, property), class = c("dash_dependency", "output") @@ -24,6 +38,9 @@ output <- function(id, property) { #' @rdname dependencies #' @export input <- function(id, property) { + if (is.list(id)) { + id = setWildcardId(id) + } structure( dependency(id, property), class = c("dash_dependency", "input") @@ -33,6 +50,9 @@ input <- function(id, property) { #' @rdname dependencies #' @export state <- function(id, property) { + if (is.list(id)) { + id = setWildcardId(id) + } structure( dependency(id, property), class = c("dash_dependency", "state") @@ -41,6 +61,9 @@ state <- function(id, property) { dependency <- function(id = NULL, property = NULL) { if (is.null(id)) stop("Must specify an id", call. = FALSE) + if (is.list(id)) { + id = setWildcardId(id) + } list( id = id, property = property @@ -54,3 +77,233 @@ dashNoUpdate <- function() { class(x) <- "no_update" return(x) } + +#' Pattern-Matching Callback Selectors +#' @description +#' Symbols which reference pattern-matching callback selectors with the same names +#' @details +#' `ALL`, `ALLSMALLER` and `MATCH` are symbols corresponding to the +#' pattern-matching callback selectors with the same names. These allow you +#' to write callbacks that respond to or update an arbitrary or dynamic +#' number of components. Because they are symbols (see \link{name}) rather than +#' functions, each has no arguments. For more information, see the `callback` +#' section in \link{Dash}. +#' +#' For pattern-matching callbacks, the `id` field of a component is written +#' in JSON-like syntax. The resulting `id` is then transformed into a dictionary +#' object when serialized for use by the Dash renderer within the web browser. +#' The fields are arbitrary keys, which describe the targets of the callback. +#' +#' For example, when we write `input(id=list("foo" = ALL, "bar" = "dropdown")`, +#' Dash interprets this as "match any input that has an ID list where 'foo' +#' is 'ALL' and 'bar' is anything." If any of the dropdown +#' `value` properties change, all of their values are returned to the callback. +#' +#' However, for readability, we recommend using keys like type, index, or id. +#' `type` can be used to refer to the class or set of dynamic components and +#' `index` or `id` could be used to refer to the component you are matching +#' within that set. While your application may have a single set of dynamic +#' components, it's possible to specify multiple sets of dynamic components +#' in more complex apps or if you are using `MATCH`. +#' +#' Like `ALL`, `MATCH` will fire the callback when any of the component's properties +#' change. However, instead of passing all of the values into the callback, `MATCH` +#' will pass just a single value into the callback. Instead of updating a single +#' output, it will update the dynamic output that is "matched" with. +#' +#' `ALLSMALLER` is used to pass in the values of all of the targeted components +#' on the page that have an index smaller than the index corresponding to the div. +#' For example, `ALLSMALLER` makes it possible to filter results that are +#' increasingly specific as the user applies each additional selection. +#' +#' `ALLSMALLER` can only be used in `input` and `state` items, and must be used +#' on a key that has `MATCH` in the `output` item(s). `ALLSMALLER` it isn't always +#' necessary (you can usually use `ALL` and filter out the indices in your callback), +#' but it will make your logic simpler. +#' @name selectors +#' @rdname selectors +#' @export +#' @examples +#' if (interactive() ) { +#' library(dash) +#' +#' # Simple example illustrating use of ALL selector +#' app <- Dash$new() +#' +#' app$layout(htmlDiv(list( +#' htmlButton("Add Filter", id="add-filter", n_clicks=0), +#' htmlDiv(id="dropdown-container", children=list()), +#' htmlDiv(id="dropdown-container-output") +#' ))) +#' +#' +#' app$callback( +#' output(id="dropdown-container", property = "children"), +#' params = list( +#' input(id = "add-filter", property = "n_clicks"), +#' state(id = "dropdown-container", property = "children") +#' ), +#' display_dropdowns <- function(n_clicks, children){ +#' new_dropdown = dccDropdown( +#' id=list( +#' "index" = n_clicks, +#' "type" = "filter-dropdown" +#' ), +#' options = lapply(c("NYC", "MTL", "LA", "TOKYO"), function(x){ +#' list("label" = x, "value" = x) +#' }) +#' ) +#' children[[n_clicks + 1]] <- new_dropdown +#' return(children) +#' } +#' ) +#' +#' app$callback( +#' output(id="dropdown-container-output", property="children"), +#' params = list( +#' input(id=list("index" = ALL, "type" = "filter-dropdown"), property= "value") +#' ), +#' display_output <- function(test){ +#' ctx <- app$callback_context() +#' return(htmlDiv( +#' lapply(seq_along(test), function(x){ +#' return(htmlDiv(sprintf("Dropdown %s = %s", x, test[[x]]))) +#' }) +#' )) +#' } +#' ) +#' +#' app$run_server() +#' +#' # Simple example illustrating use of ALLSMALLER selector +#' library(dash) +#' +#' df <- read.csv('https://raw.githubusercontent.com/plotly/datasets/master/gapminder2007.csv', +#' stringsAsFactors = FALSE) +#' +#' app <- Dash$new() +#' +#' app$layout(htmlDiv(list( +#' htmlButton("Add Filter", id = "add-filter-ex3", n_clicks = 0), +#' htmlDiv(id = "container-ex3", children = list()) +#' ))) +#' +#' app$callback( +#' output('container-ex3', 'children'), +#' params = list( +#' input('add-filter-ex3', 'n_clicks'), +#' state('container-ex3', 'children') +#' ), +#' display_dropdowns <- function(n_clicks, existing_children){ +#' new_children <- htmlDiv(list( +#' dccDropdown( +#' id = list("index" = n_clicks, "type" = "filter-dropdown-ex3"), +#' options = lapply(unique(df$country), function(x){ +#' list("label" = x, "value" = x) +#' }), +#' value = unique(df$country)[n_clicks + 1] +#' ), +#' htmlDiv(id = list("index" = n_clicks, "type" = "output-ex3"), +#' children = list(unique(df$country)[n_clicks + 1])) +#' )) +#' +#' existing_children <- c(existing_children, list(new_children)) +#' } +#' ) +#' +#' app$callback( +#' output(id = list("type" = "output-ex3", "index" = MATCH), property = "children"), +#' params = list( +#' input(id = list("type" = "filter-dropdown-ex3", "index" = MATCH), property = "value"), +#' input(id = list("type" = "filter-dropdown-ex3", "index" = ALLSMALLER), property = "value") +#' ), +#' display_output <- function(matching_value, previous_values){ +#' previous_values_in_reversed_order = rev(previous_values) +#' all_values = c(matching_value, previous_values_in_reversed_order) +#' all_values = unlist(all_values) +#' +#' dff = df[df$country %in% all_values,] +#' avgLifeExp = round(mean(dff$lifeExp), digits = 2) +#' +#' if (length(all_values) == 1) { +#' return( +#' htmlDiv(sprintf("%s is the life expectancy of %s.", +#' avgLifeExp, +#' matching_value)) +#' ) +#' } else if (length(all_values) == 2) { +#' return( +#' htmlDiv(sprintf("%s is the life expectancy of %s.", +#' avgLifeExp, +#' paste(all_values, collapse = " and "))) +#' ) +#' } else { +#' return( +#' htmlDiv(sprintf("%s is the life expectancy of %s, and %s.", +#' avgLifeExp, +#' paste(all_values[-length(all_values)], collapse = " , "), +#' paste(all_values[length(all_values)]))) +#' ) +#' } +#' } +#' ) +#' +#' app$run_server() +#' +#' # Simple example illustrating use of MATCH selector +#' library(dash) +#' +#' app <- Dash$new() +#' +#' app$layout(htmlDiv(list( +#' htmlButton("Add Filter", id="dynamic-add-filter", n_clicks=0), +#' htmlDiv(id="dynamic-dropdown-container", children = list()) +#' ))) +#' +#' app$callback( +#' output(id="dynamic-dropdown-container", "children"), +#' params = list( +#' input("dynamic-add-filter", "n_clicks"), +#' state("dynamic-dropdown-container", "children") +#' ), +#' display_dropdown <- function(n_clicks, children){ +#' new_element = htmlDiv(list( +#' dccDropdown( +#' id = list("index" = n_clicks, "type" = "dynamic-dropdown"), +#' options = lapply(c("NYC", "MTL", "LA", "TOKYO"), function(x){ +#' list("label" = x, "value" = x) +#' }) +#' ), +#' htmlDiv( +#' id = list("index" = n_clicks, "type" = "dynamic-output"), +#' children = list() +#' ) +#' )) +#' +#' children <- c(children, list(new_element)) +#' return(children) +#' } +#' ) +#' +#' app$callback( +#' output(id = list("index" = MATCH, "type" = "dynamic-output"), property= "children"), +#' params = list( +#' input(id=list("index" = MATCH, "type" = "dynamic-dropdown"), property= "value"), +#' state(id=list("index" = MATCH, "type" = "dynamic-dropdown"), property= "id") +#' ), +#' display_output <- function(value, id){ +#' return(htmlDiv(sprintf("Dropdown %s = %s", id$index, value))) +#' } +#' ) +#' +#' app$run_server() +#'} +ALL <- as.symbol("ALL") + +#' @rdname selectors +#' @export +ALLSMALLER <- as.symbol("ALLSMALLER") + +#' @rdname selectors +#' @export +MATCH <- as.symbol("MATCH") diff --git a/R/df_to_list.R b/R/df_to_list.R new file mode 100644 index 00000000..3d8fe633 --- /dev/null +++ b/R/df_to_list.R @@ -0,0 +1,13 @@ +#' df_to_list +#' @description +#' Helper function to convert a dataframe into the nested list format required for input into Dash DataTable. +#' @param df A data frame object to be coerced into a list of lists for DataTable. +#' @export +df_to_list <- function(df) { + if(!(is.data.frame(df))) + stop("df_to_list requires a data.frame object; please verify that df is of the correct type.") + stats::setNames(lapply(split(df, seq(nrow(df))), + FUN = function (x) { + as.list(x) + }), NULL) +} diff --git a/R/imports.R b/R/imports.R index 8e2e8b68..6aeea889 100644 --- a/R/imports.R +++ b/R/imports.R @@ -1,4 +1,3 @@ -#' @import dashHtmlComponents dashCoreComponents #' @importFrom R6 R6Class #' @importFrom fiery Fire combined_log_format logger_console #' @importFrom routr Route RouteStack ressource_route @@ -11,4 +10,7 @@ #' @importFrom utils getFromNamespace #' @importFrom stats setNames #' @importFrom tools file_ext +#' @importFrom brotli brotli_compress +#' @importFrom glue glue +#' @importFrom glue glue_collapse NULL diff --git a/R/install_snippet.R b/R/install_snippet.R new file mode 100644 index 00000000..d6896ece --- /dev/null +++ b/R/install_snippet.R @@ -0,0 +1,147 @@ +#' Install Dash RStudio snippet +#' +#' Install the Dash code snippet for RStudio, for quickly creating a new Dash +#' app. +#' +#' @return boolean Whether or not the snippet was installed +#' @importFrom utils tail +#' @export +install_snippet <- function() { + # Modified code from https://stackoverflow.com/a/62223103/3943160 (user 'dario') + + added <- FALSE + + # if not on RStudio or RStudioServer exit + if (!nzchar(Sys.getenv("RSTUDIO_USER_IDENTITY"))) { + return(NULL) + } + + # Name of files containing snippet code to copy + # + pckgSnippetsFiles <- "snippet.txt" + + # Name of files to copy into. Order has to be the same + # as in 'pckgSnippetsFiles' + # + rstudioSnippetsFiles <- "r.snippets" + + # Path to directory for RStudios user files depends on OS + # + if (rstudioapi::getVersion() < "1.3") { + rstudioSnippetsPathBase <- file.path(path.expand('~'),".R", "snippets") + } else { + if (.Platform$OS.type == "windows") { + rstudioSnippetsPathBase <- file.path(Sys.getenv("APPDATA"), "RStudio", "snippets") + } else { + rstudioSnippetsPathBase <- file.path(path.expand('~'), ".config/rstudio", "snippets") + } + } + + # Read each file in pckgSnippetsFiles and add its contents + # + for (i in seq_along(pckgSnippetsFiles)) { + + # Try to get template, if template is not found skip it + # + pckgSnippetsFilesPath <- system.file("rstudio", pckgSnippetsFiles[i], package = "dash") + if (pckgSnippetsFilesPath == "") { + next() + } + + # load package snippets definitions + # + pckgSnippetsFileContent <- readLines(pckgSnippetsFilesPath, warn = FALSE) + + # Extract names of package snippets + # + pckgSnippetsFileDefinitions <- pckgSnippetsFileContent[grepl("^snippet (.*)", pckgSnippetsFileContent)] + + + # Construct path for destination file + # + rstudioSnippetsFilePath <- file.path(rstudioSnippetsPathBase, rstudioSnippetsFiles[i]) + + # If targeted RStudios user file does not exist, raise error (otherwise we would 'remove') + # the default snippets from the 'user file' + # + if (!file.exists(rstudioSnippetsFilePath)) { + stop(paste0( "'", rstudioSnippetsFilePath, "' does not exist yet\n.", + "Use RStudio -> Tools -> Global Options -> Code -> Edit Snippets\n", + "To initalize user defined snippets file by adding dummy snippet\n")) + } + + # Extract 'names' of already existing snitppets + # + rstudioSnippetsFileContent <- readLines(rstudioSnippetsFilePath, warn = FALSE) + rstudioSnippetDefinitions <- rstudioSnippetsFileContent[grepl("^snippet (.*)", rstudioSnippetsFileContent)] + + # replace two spaces with tab, ONLY at beginning of string + # + pckgSnippetsFileContentSanitized <- gsub("(?:^ {2})|\\G {2}|\\G\t", "\t", pckgSnippetsFileContent, perl = TRUE) + + # find defintions appearing in packageSnippets but not in rstudioSnippets + # if no snippets are missing go to next file + # + snippetsToCopy <- setdiff(trimws(pckgSnippetsFileDefinitions), trimws(rstudioSnippetDefinitions)) + snippetsNotToCopy <- intersect(trimws(pckgSnippetsFileDefinitions), trimws(rstudioSnippetDefinitions)) + if (length(snippetsToCopy) == 0) { + # cat(paste0("(\nFollowing snippets will NOT be added because there is already a snippet with that name: ", + # paste0(snippetsNotToCopy, collapse=", ") ,")")) + next() + } + + # Inform user about changes, ask to confirm action + # + if (interactive()) { + cat(paste0("You are about to add the following ", length(snippetsToCopy), + " snippets to '", rstudioSnippetsFilePath, "':\n", + paste0(paste0("-", snippetsToCopy), collapse="\n"))) + if (length(snippetsNotToCopy) > 0) { + cat(paste0("\n(The following snippets will NOT be added because there is already a snippet with that name:\n", + paste0(snippetsNotToCopy, collapse=", ") ,")")) + } + answer <- readline(prompt="Do you want to proceed (y/n): ") + if (substr(answer, 1, 1) == "n") { + next() + } + } + + # Create list of line numbers where snippet definitons start + # This list is used to determine the end of each definition block + # + allPckgSnippetDefinitonStarts <- grep("^snippet .*", pckgSnippetsFileContentSanitized) + + for (s in snippetsToCopy) { + startLine <- grep(paste0("^", s, ".*"), pckgSnippetsFileContentSanitized) + + # Find last line of snippet definition: + # First find start of next defintion and return + # previous line number or lastline if already in last definiton + # + endLine <- allPckgSnippetDefinitonStarts[allPckgSnippetDefinitonStarts > startLine][1] -1 + if (is.na(endLine)) { + endLine <- length(pckgSnippetsFileContentSanitized) + } + + snippetText <- paste0(pckgSnippetsFileContentSanitized[startLine:endLine], collapse = "\n") + + # Make sure there is at least one empty line between entries + # + if (tail(readLines(rstudioSnippetsFilePath, warn = FALSE), n=1) != "") { + snippetText <- paste0("\n", snippetText) + } + + # Append snippet block, print message + # + cat(paste0(snippetText, "\n"), file = rstudioSnippetsFilePath, append = TRUE) + cat(paste0("* Added '", s, "' to '", rstudioSnippetsFilePath, "'\n")) + added <- TRUE + } + } + + if (added) { + cat("Restart RStudio to use new snippets") + } + + invisible(added) +} diff --git a/R/internal.R b/R/internal.R index 326336ad..4df2a624 100644 --- a/R/internal.R +++ b/R/internal.R @@ -36,9 +36,9 @@ all_files = FALSE), class = "html_dependency"), `dash-renderer-dev` = structure(list(name = "dash-renderer", - version = "1.4.1", - src = list(href = "https://unpkg.com/dash-renderer@1.4.1", - file = "lib/dash-renderer@1.4.1"), + version = "1.8.3", + src = list(href = "https://unpkg.com/dash-renderer@1.8.3", + file = "lib/dash-renderer@1.8.3"), meta = NULL, script = "dash-renderer/dash_renderer.dev.js", stylesheet = NULL, @@ -47,22 +47,10 @@ package = "dash", all_files = FALSE), class = "html_dependency"), - `dash-renderer-map-dev` = structure(list(name = "dash-renderer", - version = "1.4.1", - src = list(href = "https://unpkg.com/dash-renderer@1.4.1", - file = "lib/dash-renderer@1.4.1"), - meta = NULL, - script = "dash-renderer/dash_renderer.dev.js.map", - stylesheet = NULL, - head = NULL, - attachment = NULL, - package = "dash", - all_files = FALSE), - class = "html_dependency"), `dash-renderer-prod` = structure(list(name = "dash-renderer", - version = "1.4.1", - src = list(href = "https://unpkg.com/dash-renderer@1.4.1", - file = "lib/dash-renderer@1.4.1"), + version = "1.8.3", + src = list(href = "https://unpkg.com/dash-renderer@1.8.3", + file = "lib/dash-renderer@1.8.3"), meta = NULL, script = "dash-renderer/dash_renderer.min.js", stylesheet = NULL, @@ -71,18 +59,6 @@ package = "dash", all_files = FALSE), class = "html_dependency"), - `dash-renderer-map-prod` = structure(list(name = "dash-renderer", - version = "1.4.1", - src = list(href = "https://unpkg.com/dash-renderer@1.4.1", - file = "lib/dash-renderer@1.4.1"), - meta = NULL, - script = "dash-renderer/dash_renderer.min.js.map", - stylesheet = NULL, - head = NULL, - attachment = NULL, - package = "dash", - all_files = FALSE), - class = "html_dependency"), `prop-types-dev` = structure(list(name = "prop-types", version = "15.7.2", src = list(href = "https://unpkg.com/prop-types@15.7.2", @@ -110,3 +86,142 @@ ) return(deps_metadata) } + +.dashCoreComponents_js_metadata <- function() { +deps_metadata <- list(`dash_core_components` = structure(list(name = "dash_core_components", +version = "2.0.0", src = list(href = NULL, +file = "deps"), meta = NULL, +script = 'dcc/async-datepicker.js', +stylesheet = NULL, head = NULL, attachment = NULL, package = "dash", +all_files = FALSE, async = TRUE), class = "html_dependency"), +`dash_core_components` = structure(list(name = "dash_core_components", +version = "2.0.0", src = list(href = NULL, +file = "deps"), meta = NULL, +script = 'dcc/async-dropdown.js', +stylesheet = NULL, head = NULL, attachment = NULL, package = "dash", +all_files = FALSE, async = TRUE), class = "html_dependency"), +`dash_core_components` = structure(list(name = "dash_core_components", +version = "2.0.0", src = list(href = NULL, +file = "deps"), meta = NULL, +script = 'dcc/async-graph.js', +stylesheet = NULL, head = NULL, attachment = NULL, package = "dash", +all_files = FALSE, async = TRUE), class = "html_dependency"), +`dash_core_components` = structure(list(name = "dash_core_components", +version = "2.0.0", src = list(href = NULL, +file = "deps"), meta = NULL, +script = 'dcc/async-highlight.js', +stylesheet = NULL, head = NULL, attachment = NULL, package = "dash", +all_files = FALSE, async = TRUE), class = "html_dependency"), +`dash_core_components` = structure(list(name = "dash_core_components", +version = "2.0.0", src = list(href = NULL, +file = "deps"), meta = NULL, +script = 'dcc/async-markdown.js', +stylesheet = NULL, head = NULL, attachment = NULL, package = "dash", +all_files = FALSE, async = TRUE), class = "html_dependency"), +`dash_core_components` = structure(list(name = "dash_core_components", +version = "2.0.0", src = list(href = NULL, +file = "deps"), meta = NULL, +script = 'dcc/async-slider.js', +stylesheet = NULL, head = NULL, attachment = NULL, package = "dash", +all_files = FALSE, async = TRUE), class = "html_dependency"), +`dash_core_components` = structure(list(name = "dash_core_components", +version = "2.0.0", src = list(href = NULL, +file = "deps"), meta = NULL, +script = 'dcc/async-upload.js', +stylesheet = NULL, head = NULL, attachment = NULL, package = "dash", +all_files = FALSE, async = TRUE), class = "html_dependency"), +`dash_core_components` = structure(list(name = "dash_core_components", +version = "2.0.0", src = list(href = NULL, +file = "deps"), meta = NULL, +script = 'dcc/dash_core_components.js', +stylesheet = NULL, head = NULL, attachment = NULL, package = "dash", +all_files = FALSE), class = "html_dependency"), +`dash_core_components` = structure(list(name = "dash_core_components", +version = "2.0.0", src = list(href = NULL, +file = "deps"), meta = NULL, +script = 'dcc/dash_core_components-shared.js', +stylesheet = NULL, head = NULL, attachment = NULL, package = "dash", +all_files = FALSE), class = "html_dependency"), +`dash_core_components` = structure(list(name = "dash_core_components", +version = "2.0.0", src = list(href = NULL, +file = "deps"), meta = NULL, +script = 'dcc/plotly.min.js', +stylesheet = NULL, head = NULL, attachment = NULL, package = "dash", +all_files = FALSE, async = 'eager'), class = "html_dependency"), +`dash_core_components` = structure(list(name = "dash_core_components", +version = "2.0.0", src = list(href = NULL, +file = "deps"), meta = NULL, +script = 'dcc/async-plotlyjs.js', +stylesheet = NULL, head = NULL, attachment = NULL, package = "dash", +all_files = FALSE, async = 'lazy'), class = "html_dependency")) +return(deps_metadata) +} + + +.dashHtmlComponents_js_metadata <- function() { +deps_metadata <- list(`dash_html_components` = structure(list(name = "dash_html_components", +version = "2.0.0", src = list(href = NULL, +file = "deps"), meta = NULL, +script = 'html/dash_html_components.min.js', +stylesheet = NULL, head = NULL, attachment = NULL, package = "dash", +all_files = FALSE), class = "html_dependency")) +return(deps_metadata) +} + +dash_assert_valid_wildcards <- function (attrib = list("data", "aria"), ...) +{ + args <- list(...) + validation_results <- lapply(names(args), function(x) { + grepl(paste0("^(", paste0(attrib, collapse="|"), ")-[a-zA-Z0-9_-]+$"), + x) + }) + if (FALSE %in% validation_results) { + stop(sprintf("The following props are not valid in this component: '%s'", + paste(names(args)[grepl(FALSE, unlist(validation_results))], + collapse = ", ")), call. = FALSE) + } + else { + return(args) + } +} + + +.dashTable_js_metadata <- function() { +deps_metadata <- list(`dash_table` = structure(list(name = "dash_table", +version = "5.0.0", src = list(href = NULL, +file = "deps"), meta = NULL, +script = 'dash_table/async-export.js', +stylesheet = NULL, head = NULL, attachment = NULL, package = "dash", +all_files = FALSE, async = TRUE), class = "html_dependency"), +`dash_table` = structure(list(name = "dash_table", +version = "5.0.0", src = list(href = NULL, +file = "deps"), meta = NULL, +script = 'dash_table/async-table.js', +stylesheet = NULL, head = NULL, attachment = NULL, package = "dash", +all_files = FALSE, async = TRUE), class = "html_dependency"), +`dash_table` = structure(list(name = "dash_table", +version = "5.0.0", src = list(href = NULL, +file = "deps"), meta = NULL, +script = 'dash_table/async-highlight.js', +stylesheet = NULL, head = NULL, attachment = NULL, package = "dash", +all_files = FALSE, async = TRUE), class = "html_dependency"), +`dash_table` = structure(list(name = "dash_table", +version = "5.0.0", src = list(href = NULL, +file = "deps"), meta = NULL, +script = 'dash_table/bundle.js', +stylesheet = NULL, head = NULL, attachment = NULL, package = "dash", +all_files = FALSE), class = "html_dependency")) +return(deps_metadata) +} + + +.dashBootstrapComponents_js_metadata <- function() { +deps_metadata <- list(`dash_bootstrap_components` = structure(list(name = "dash_bootstrap_components", +version = "1.0.0-dev", src = list(href = NULL, +file = "deps"), meta = NULL, +script = '_components/dash_bootstrap_components.min.js', +stylesheet = NULL, head = NULL, attachment = NULL, package = "dash", +all_files = FALSE), class = "html_dependency")) +return(deps_metadata) +} + diff --git a/R/simple_table.R b/R/simple_table.R new file mode 100644 index 00000000..da146738 --- /dev/null +++ b/R/simple_table.R @@ -0,0 +1,58 @@ +#' Simple HTML table +#' +#' @param data A data.frame +#' @param colnames _(logical)_ Whether or not to show the column names (a header row) +#' @param rownames _(logical)_ Whether or not to show the row names +#' @examples +#' if (interactive()) { +#' app <- dash_app() %>% +#' set_layout( +#' dccChecklist( +#' id = "table_params", +#' labelStyle = list(display = "block"), +#' options = list( +#' list(label = "Header", value = "colnames"), +#' list(label = "Row names", value = "rownames") +#' ) +#' ), +#' br(), +#' div(id = "table") +#' ) +#' +#' app %>% add_callback( +#' output(id = 'table', property = 'children'), +#' input(id = 'table_params', property = 'value'), +#' function(val) { +#' simple_table(mtcars, colnames = "colnames" %in% val, rownames = "rownames" %in% val) +#' } +#' ) +#' +#' app %>% run_app() +#' } +#' @export +simple_table <- function(data, colnames = TRUE, rownames = FALSE) { + if (!is.data.frame(data)) { + stop("simple_table: `data` must be a data.frame", call. = FALSE) + } + if (ncol(data) == 0) { + return(NULL) + } + + header <- NULL + if (isTRUE(colnames) && !is.null(colnames(data))) { + header <- lapply(colnames(data), html$th) + if (isTRUE(rownames)) { + header <- c(list(html$th("")), header) + } + header <- html$tr(header) + } + + rows <- lapply(seq(nrow(data)), function(rownum) { + row <- lapply(as.character(data[rownum, ]), html$td) + if (isTRUE(rownames)) { + row <- c(list(html$td(rownames(data[rownum, ]))), row) + } + html$tr(row) + }) + html$table(c(list(header), rows)) +} diff --git a/R/tags.R b/R/tags.R new file mode 100644 index 00000000..97298dd6 --- /dev/null +++ b/R/tags.R @@ -0,0 +1,140 @@ +#' Create HTML tags +#' +#' Create an HTML tag to place in a Dash app layout. All tags are available +#' in the `html` list, and some common tags have shortcuts as functions for +#' convenience (e.g. `h1()` produces `

` and is equivalent to `html$h1()`). +#' +#' @name tags +#' @param ... Any named arguments become tag attributes, and any unnamed +#' arguments become children. A named argument with a value of `NULL` will +#' be removed, and a named argument with a value of `NA` will be rendered +#' as a boolean argument. See 'Special attributes' below for more information. +#' @param tag_name The name of the HTML tag. +#' @param content List of attributes and children. +#' +#' @section Special attributes: +#' There are a few HTML attributes that are treated in a special way: +#' - To add a `class` attribute, use the `className` parameter +#' - To add a `for` attribute, use the `htmlFor` parameter +#' - The `style` attribute is not provided as a string. Instead, it's provided +#' as a named list, where the name and value of each element correspond to the +#' CSS property and value. Each CSS property should be written in camelCase. +#' - A special property `n_clicks` is automatically added to every HTML tag. +#' This property represents the number of times that this element has been +#' clicked on. If not explicitly initialized to a certain integer, its default +#' value is `NULL` initially. +#' +#' @examples +#' if (interactive()) { +#' app <- dash_app() +#' app %>% set_layout( +#' html$div( +#' h1( +#' "title", +#' style = list( +#' "color" = "red", +#' "backgroundColor" = "blue" +#' ) +#' ), +#' "some text", +#' button( +#' "can't click me", +#' disabled = NA, +#' className = "mybtn" +#' ) +#' ) +#' ) +#' app %>% run_app() +#'} +NULL + +#' @rdname tags +#' @format NULL +#' @export +html <- lapply(all_tags, function(tag_name) { + rlang::new_function( + args = alist(... = ), + body = rlang::expr({ + dash_tag(!!tag_name, list(...)) + }), + env = asNamespace("dash") + ) +}) + +#' @rdname tags +#' @export +h1 <- html$h1 + +#' @rdname tags +#' @export +h2 <- html$h2 + +#' @rdname tags +#' @export +h3 <- html$h3 + +#' @rdname tags +#' @export +h4 <- html$h4 + +#' @rdname tags +#' @export +div <- html$div + +#' @rdname tags +#' @export +span <- html$span + +#' @rdname tags +#' @export +p <- html$p + +#' @rdname tags +#' @export +strong <- html$strong + +#' @rdname tags +#' @export +br <- html$br + +#' @rdname tags +#' @export +button <- html$button + +#' @rdname tags +#' @export +a <- html$a + +#' @rdname tags +#' @export +img <- html$img + +#' @rdname tags +#' @export +dash_tag <- function(tag_name, content = list()) { + content_names <- rlang::names2(content) + content_named_idx <- nzchar(content_names) + attributes <- remove_empty(content[content_named_idx]) + children <- unname(content[!content_named_idx]) + + # Try to match the exact level of nesting of children as original {dash} + if (length(children) == 0) { + children <- NULL + } else if (length(children) == 1) { + children <- children[[1]] + } + + # Support boolean attributes + attributes[is.na(attributes)] <- names(attributes[is.na(attributes)]) + attributes[attributes == ""] <- names(attributes[attributes == ""]) + + tag_params <- attributes + tag_params[["children"]] <- children + + dash_html_fx <- paste0("html", toupper(substring(tag_name, 1, 1)), substring(tag_name, 2)) + if (tag_name %in% c("map", "object")) { + dash_html_fx <- paste0(dash_html_fx, "El") + } + + do.call(dash_html_fx, tag_params) +} diff --git a/R/utils-pipe.R b/R/utils-pipe.R new file mode 100644 index 00000000..fd0b1d13 --- /dev/null +++ b/R/utils-pipe.R @@ -0,0 +1,14 @@ +#' Pipe operator +#' +#' See \code{magrittr::\link[magrittr:pipe]{\%>\%}} for details. +#' +#' @name %>% +#' @rdname pipe +#' @keywords internal +#' @export +#' @importFrom magrittr %>% +#' @usage lhs \%>\% rhs +#' @param lhs A value or the magrittr placeholder. +#' @param rhs A function call using the magrittr semantics. +#' @return The result of calling `rhs(lhs)`. +NULL diff --git a/R/utils.R b/R/utils.R index 71e7baf3..d7eea0e5 100644 --- a/R/utils.R +++ b/R/utils.R @@ -15,15 +15,6 @@ is.event <- function(x) is.dependency(x) && inherits(x, "event") # components (TODO: this should be exported by dashRtranspile!) is.component <- function(x) inherits(x, "dash_component") -# layout is really a special type of component -is.layout <- function(x) { - is.component(x) && identical(x[["props"]][["id"]], layout_container_id()) -} - -layout_container_id <- function() { - "_dashR-layout-container" -} - # retrieve the arguments of a callback function that are dash inputs callback_inputs <- function(func) { compact(lapply(formals(func), function(x) { @@ -166,7 +157,7 @@ render_dependencies <- function(dependencies, local = TRUE, prefix=NULL) { # as in Dash for Python if ("script" %in% names(dep) && tools::file_ext(dep[["script"]]) != "map") { if (!(is_local) & !(is.null(dep$src$href))) { - html <- generate_js_dist_html(href = dep$src$href) + html <- generate_js_dist_html(tagdata = dep$src$href) } else { script_mtime <- file.mtime(getDependencyPath(dep)) modtime <- as.integer(script_mtime) @@ -181,10 +172,10 @@ render_dependencies <- function(dependencies, local = TRUE, prefix=NULL) { "&m=", modified) - html <- generate_js_dist_html(href = dep[["script"]], as_is = TRUE) + html <- generate_js_dist_html(tagdata = dep[["script"]], as_is = TRUE) } } else if (!(is_local) & "stylesheet" %in% names(dep) & src == "href") { - html <- generate_css_dist_html(href = paste(dep[["src"]][["href"]], + html <- generate_css_dist_html(tagdata = paste(dep[["src"]][["href"]], dep[["stylesheet"]], sep="/"), local = FALSE) @@ -201,20 +192,20 @@ render_dependencies <- function(dependencies, local = TRUE, prefix=NULL) { "?v=", dep$version) - html <- generate_css_dist_html(href = sheetpath, as_is = TRUE) + html <- generate_css_dist_html(tagdata = sheetpath, as_is = TRUE) } else { sheetpath <- paste0(dep[["src"]][["file"]], dep[["stylesheet"]], "?v=", dep$version) - html <- generate_css_dist_html(href = sheetpath, as_is = TRUE) + html <- generate_css_dist_html(tagdata = sheetpath, as_is = TRUE) } } else { sheetpath <- paste0(dep[["src"]][["file"]], dep[["stylesheet"]]) - html <- generate_css_dist_html(href = sheetpath, as_is = TRUE) + html <- generate_css_dist_html(tagdata = sheetpath, as_is = TRUE) } } }) @@ -299,6 +290,22 @@ assert_no_names <- function (x) paste(nms, collapse = "', '")), call. = FALSE) } +assertValidWildcards <- function(dependency) { + if (is.symbol(dependency$id)) { + result <- (jsonlite::validate(as.character(dependency$id)) && grepl("{", dependency$id)) + } else { + result <- TRUE + } + if (!result) { + dependencyType <- class(dependency) + stop(sprintf("A callback %s ID contains restricted pattern matching callback selectors ALL, MATCH or ALLSMALLER. Please verify that it is formatted as a pattern matching callback list ID, or choose a different component ID.", + dependencyType[dependencyType %in% c("input", "output", "state")]), + call. = FALSE) + } else { + return(result) + } +} + # the following function attempts to prune remote CSS # or local CSS/JS dependencies that either should not # be resolved to local R package paths, or which have @@ -331,15 +338,29 @@ clean_dependencies <- function(deps) { } insertIntoCallbackMap <- function(map, inputs, output, state, func, clientside_function) { - map[[createCallbackId(output)]] <- list(inputs=inputs, - output=output, - state=state, - func=func, - clientside_function=clientside_function - ) + output_id <- createCallbackId(output) + + if (output_id %in% names(map)) { + stop( + sprintf( + "One or more of the following outputs are duplicated across callbacks: %s. Please ensure that all ID and property combinations are unique.", + output_id + ), + call. = FALSE + ) + } + + map[[output_id]] <- list( + inputs = inputs, + output = output, + state = state, + func = func, + clientside_function = clientside_function + ) + if (length(map) >= 2) { - ids <- lapply(names(map), function(x) dash:::getIdProps(x)$ids) - props <- lapply(names(map), function(x) dash:::getIdProps(x)$props) + ids <- lapply(names(map), function(x) getIdProps(x)$ids) + props <- lapply(names(map), function(x) getIdProps(x)$props) outputs_as_list <- mapply(paste, ids, props, sep=".", SIMPLIFY = FALSE) @@ -358,6 +379,11 @@ assert_valid_callbacks <- function(output, params, func) { !any(c('input', 'state') %in% attr(x, "class")) }, FUN.VALUE=logical(1)) + if (!is.list(output[[1]])) listed_output <- list(output) else listed_output <- output + invalid_outputs <- vapply(listed_output, function(x) { + !any(c('output') %in% attr(x, "class")) + }, FUN.VALUE=logical(1)) + # Verify that no outputs are duplicated if (length(output) != length(unique(output))) { stop(sprintf("One or more callback outputs have been duplicated; please confirm that all outputs are unique."), call. = FALSE) @@ -368,11 +394,12 @@ assert_valid_callbacks <- function(output, params, func) { stop(sprintf("Callback parameters must be inputs or states. Please verify formatting of callback parameters."), call. = FALSE) } - # Verify that 'input' parameters always precede 'state', if present - if (!(valid_seq(params))) { - stop(sprintf("Strict ordering of callback handler parameters is required. Please ensure that input parameters precede all state parameters."), call. = FALSE) + # Verify that output contains no elements that are not a member of the 'output' class. + if (any(invalid_outputs)) { + stop(sprintf("Callback outputs must be output function calls. Please verify formatting of callback outputs."), call. = FALSE) } + # Assert that the component ID as passed is a string. # This function inspects the output object to see if its ID # is a valid string. @@ -412,6 +439,27 @@ assert_valid_callbacks <- function(output, params, func) { stop(sprintf("The callback method requires that one or more properly formatted inputs are passed."), call. = FALSE) } + # Verify that 'input', 'state' and 'output' parameters only contain 'Wildcard' keywords if they are JSON formatted ids for pattern matching callbacks + valid_wildcard_inputs <- sapply(inputs, function(x) { + assertValidWildcards(x) + }) + + + valid_wildcard_state <- sapply(state, function(x) { + assertValidWildcards(x) + }) + + if(any(sapply(output, is.list))) { + valid_wildcard_output <- sapply(output, function(x) { + assertValidWildcards(x) + }) + } else { + valid_wildcard_output <- sapply(list(output), function(x) { + assertValidWildcards(x) + }) + } + + # Check that outputs are not inputs # https://github.com/plotly/dash/issues/323 @@ -545,54 +593,157 @@ get_mimetype <- function(filename) { empty = "application/octet-stream")) } -generate_css_dist_html <- function(href, +generate_css_dist_html <- function(tagdata, local = FALSE, local_path = NULL, prefix = NULL, as_is = FALSE) { + attribs <- names(tagdata) if (!(local)) { - if (grepl("^(?:http(s)?:\\/\\/)?[\\w.-]+(?:\\.[\\w\\.-]+)+[\\w\\-\\._~:/?#[\\]@!\\$&'\\(\\)\\*\\+,;=.]+$", - href, - perl=TRUE) || as_is) { - sprintf("", href) + if (any(grepl("^(?:http(s)?:\\/\\/)?[\\w.-]+(?:\\.[\\w\\.-]+)+[\\w\\-\\._~:/?#[\\]@!\\$&'\\(\\)\\*\\+,;=.]+$", + tagdata, + perl=TRUE)) || as_is) { + if (is.list(tagdata)) + glue::glue('') + else { + interpolated_link <- glue::glue('href="{tagdata}"') + glue::glue('') + } } else stop(sprintf("Invalid URL supplied in external_stylesheets. Please check the syntax used for this parameter."), call. = FALSE) } else { - # strip leading slash from href if present - href <- sub("^/", "", href) modified <- as.integer(file.mtime(local_path)) - sprintf("", - prefix, - href, - modified) + # strip leading slash from href if present + if (is.list(tagdata)) { + tagdata$href <- paste0(prefix, sub("^/", "", tagdata$href)) + glue::glue('') + } + else { + tagdata <- sub("^/", "", tagdata) + interpolated_link <- glue::glue('href="{prefix}{tagdata}?m={modified}"') + glue::glue('') + } } } -generate_js_dist_html <- function(href, + +generate_js_dist_html <- function(tagdata, local = FALSE, local_path = NULL, prefix = NULL, as_is = FALSE) { + attribs <- names(tagdata) if (!(local)) { - if (grepl("^(?:http(s)?:\\/\\/)?[\\w.-]+(?:\\.[\\w\\.-]+)+[\\w\\-\\._~:/?#[\\]@!\\$&'\\(\\)\\*\\+,;=.]+$", - href, - perl=TRUE) || as_is) { - sprintf("", href) - } + if (any(grepl("^(?:http(s)?:\\/\\/)?[\\w.-]+(?:\\.[\\w\\.-]+)+[\\w\\-\\._~:/?#[\\]@!\\$&'\\(\\)\\*\\+,;=.]+$", + tagdata, + perl=TRUE)) || as_is) { + if (is.list(tagdata)) + glue::glue('') + else { + interpolated_link <- glue::glue('src="{tagdata}"') + glue::glue('') + } + } else stop(sprintf("Invalid URL supplied. Please check the syntax used for this parameter."), call. = FALSE) } else { - # strip leading slash from href if present - href <- sub("^/", "", href) modified <- as.integer(file.mtime(local_path)) - sprintf("", - prefix, - href, - modified) + # strip leading slash from href if present + if (is.list(tagdata)) { + tagdata$src <- paste0(prefix, sub("^/", "", tagdata$src)) + glue::glue('') + } + else { + tagdata <- sub("^/", "", tagdata) + interpolated_link <- glue::glue('src="{prefix}{tagdata}?m={modified}"') + glue::glue('') + } } } +assertValidExternals <- function(scripts, stylesheets) { + allowed_js_attribs <- c("async", + "crossorigin", + "defer", + "integrity", + "nomodule", + "nonce", + "referrerpolicy", + "src", + "type", + "charset", + "language") + + allowed_css_attribs <- c("as", + "crossorigin", + "disabled", + "href", + "hreflang", + "importance", + "integrity", + "media", + "referrerpolicy", + "rel", + "sizes", + "title", + "type", + "methods", + "prefetch", + "target", + "charset", + "rev") + script_attributes <- character() + stylesheet_attributes <- character() + + for (item in scripts) { + if (is.list(item)) { + if (!"src" %in% names(item) || !(any(grepl("^(?:http(s)?:\\/\\/)?[\\w.-]+(?:\\.[\\w\\.-]+)+[\\w\\-\\._~:/?#[\\]@!\\$&'\\(\\)\\*\\+,;=.]+$", + item, + perl=TRUE)))) + stop("A valid URL must be included with every entry in external_scripts. Please sure no 'src' entries are missing or malformed.", call. = FALSE) + if (any(names(item) == "")) + stop("Please verify that all attributes are named elements when specifying URLs for scripts and stylesheets.", call. = FALSE) + script_attributes <- c(script_attributes, names(item)) + } + else { + if (!grepl("^(?:http(s)?:\\/\\/)?[\\w.-]+(?:\\.[\\w\\.-]+)+[\\w\\-\\._~:/?#[\\]@!\\$&'\\(\\)\\*\\+,;=.]+$", + item, + perl=TRUE)) + stop("A valid URL must be included with every entry in external_scripts. Please sure no 'src' entries are missing or malformed.", call. = FALSE) + script_attributes <- c(script_attributes, character(0)) + } + } + + for (item in stylesheets) { + if (is.list(item)) { + if (!"href" %in% names(item) || !(any(grepl("^(?:http(s)?:\\/\\/)?[\\w.-]+(?:\\.[\\w\\.-]+)+[\\w\\-\\._~:/?#[\\]@!\\$&'\\(\\)\\*\\+,;=.]+$", + item, + perl=TRUE)))) + stop("A valid URL must be included with every entry in external_stylesheets. Please sure no 'href' entries are missing or malformed.", call. = FALSE) + if (any(names(item) == "")) + stop("Please verify that all attributes are named elements when specifying URLs for scripts and stylesheets.", call. = FALSE) + stylesheet_attributes <- c(stylesheet_attributes, names(item)) + } + else { + if (!grepl("^(?:http(s)?:\\/\\/)?[\\w.-]+(?:\\.[\\w\\.-]+)+[\\w\\-\\._~:/?#[\\]@!\\$&'\\(\\)\\*\\+,;=.]+$", + item, + perl=TRUE)) + stop("A valid URL must be included with every entry in external_stylesheets. Please sure no 'href' entries are missing or malformed.", call. = FALSE) + stylesheet_attributes <- c(stylesheet_attributes, character(0)) + } + } + + invalid_script_attributes <- setdiff(script_attributes, allowed_js_attribs) + invalid_stylesheet_attributes <- setdiff(stylesheet_attributes, allowed_css_attribs) + + if (length(invalid_script_attributes) > 0 || length(invalid_stylesheet_attributes) > 0) { + stop(sprintf("The following script or stylesheet attributes are invalid: %s.", + paste0(c(invalid_script_attributes, invalid_stylesheet_attributes), collapse=", ")), call. = FALSE) + } + invisible(TRUE) + } + generate_meta_tags <- function(metas) { has_ie_compat <- any(vapply(metas, function(x) x$name == "http-equiv" && x$content == "X-UA-Compatible", @@ -756,7 +907,7 @@ stackTraceToHTML <- function(call_stack, # stack will be "pruned" of error handling functions # for greater readability. getStackTrace <- function(expr, debug = FALSE, prune_errors = TRUE) { - if(debug) { + if (debug) { tryCatch(withCallingHandlers( expr, error = function(e) { @@ -822,22 +973,18 @@ getStackTrace <- function(expr, debug = FALSE, prune_errors = TRUE) { } else if (currentCall[[1]] == "stop") { # handle case where function developer deliberately invokes a stop # condition and halts function execution - identical(deparse(errorCall), deparse(currentCall)) - } - else { + TRUE + } else { FALSE } - - } - ) - ) + })) # the position to stop at is one less than the difference # between the total number of calls and the index of the # call throwing the error stopIndex <- length(calls) - indexFromLast + 1 startIndex <- match(TRUE, lapply(functionsAsList, function(fn) fn == "getStackTrace")) - functionsAsList <- functionsAsList[startIndex:stopIndex] + functionsAsList <- functionsAsList[seq(startIndex, stopIndex)] functionsAsList <- removeHandlers(functionsAsList) } @@ -903,9 +1050,23 @@ removeHandlers <- function(fnList) { } setCallbackContext <- function(callback_elements) { - states <- lapply(callback_elements$states, function(x) { - setNames(x$value, paste(x$id, x$property, sep=".")) - }) + # Set state elements for this callback + + if (length(callback_elements$state[[1]]) == 0) { + states <- sapply(callback_elements$state, function(x) { + setNames(list(x$value), paste(x$id, x$property, sep=".")) + }) + } else if (is.character(callback_elements$state[[1]][[1]])) { + states <- sapply(callback_elements$state, function(x) { + setNames(list(x$value), paste(x$id, x$property, sep=".")) + }) + } else { + states <- sapply(callback_elements$state, function(x) { + states_vector <- unlist(x) + setNames(list(states_vector[grepl("value|value.", names(states_vector))]), + paste(as.character(jsonlite::toJSON(x[[1]])), x$property, sep=".")) + }) + } splitIdProp <- function(x) unlist(strsplit(x, split = "[.]")) @@ -914,18 +1075,57 @@ setCallbackContext <- function(callback_elements) { input_id <- splitIdProp(x)[1] prop <- splitIdProp(x)[2] - id_match <- vapply(callback_elements$inputs, function(x) x$id %in% input_id, logical(1)) - prop_match <- vapply(callback_elements$inputs, function(x) x$property %in% prop, logical(1)) - - value <- sapply(callback_elements$inputs[id_match & prop_match], `[[`, "value") - - list(`prop_id` = x, `value` = value) + # The following conditionals check whether the callback is a pattern-matching callback and if it has been triggered. + if (startsWith(input_id, "{")){ + id_match <- vapply(callback_elements$inputs, function(x) { + x <- unlist(x) + any(x[grepl("id.", names(x))] %in% jsonlite::fromJSON(input_id)[[1]]) + }, logical(1))[[1]] + } else { + id_match <- vapply(callback_elements$inputs, function(x) { + unlist(x) + any(x$id %in% input_id)}, logical(1)) + } + + if (startsWith(input_id, "{")){ + prop_match <- vapply(callback_elements$inputs, function(x) { + x <- unlist(x) + any(x[names(x) == "property"] %in% prop) + }, logical(1))[[1]] + } else { + prop_match <- vapply(callback_elements$inputs, function(x) { + unlist(x) + any(x$property %in% prop)}, logical(1)) + } + + if (startsWith(input_id, "{")){ + if (length(callback_elements$inputs) == 1 || !is.null(unlist(callback_elements$inputs, recursive = F)$value)) { + value <- sapply(callback_elements$inputs[id_match & prop_match], `[[`, "value") + } else { + value <- sapply(callback_elements$inputs[id_match & prop_match][[1]], `[[`, "value") + } + } else { + value <- sapply(callback_elements$inputs[id_match & prop_match], `[[`, "value") + } + + return(list(`prop_id` = x, `value` = value)) } - ) - - inputs <- sapply(callback_elements$inputs, function(x) { - setNames(list(x$value), paste(x$id, x$property, sep=".")) - }) + ) + if (length(callback_elements$inputs[[1]]) == 0 || is.character(callback_elements$inputs[[1]][[1]])) { + inputs <- sapply(callback_elements$inputs, function(x) { + setNames(list(x$value), paste(x$id, x$property, sep=".")) + }) + } else if (length(callback_elements$inputs[[1]]) > 1) { + inputs <- sapply(callback_elements$inputs, function(x) { + inputs_vector <- unlist(x) + setNames(list(inputs_vector[grepl("value|value.", names(inputs_vector))]), paste(as.character(jsonlite::toJSON(x$id)), x$property, sep=".")) + }) + } else { + inputs <- sapply(callback_elements$inputs, function(x) { + inputs_vector <- unlist(x) + setNames(list(inputs_vector[grepl("value|value.", names(inputs_vector))]), paste(as.character(jsonlite::toJSON(x[[1]]$id)), x[[1]]$property, sep=".")) + }) + } return(list(states=states, triggered=unlist(triggered, recursive=FALSE), @@ -953,7 +1153,7 @@ createCallbackId <- function(output) { } getIdProps <- function(output) { - output_ids <- strsplit(substr(output, 3, nchar(output)-2), '...', fixed=TRUE) + output_ids <- strsplit(gsub("^\\.{2}|\\.{2}$", "", output), '...', fixed=TRUE) idprops <- lapply(output_ids, strsplit, '.', fixed=TRUE) ids <- vapply(unlist(idprops, recursive=FALSE), '[', character(1), 1) props <- vapply(unlist(idprops, recursive=FALSE), '[', character(1), 2) @@ -1341,10 +1541,13 @@ interpolate_str <- function(index_template, ...) { return(template) } -validate_keys <- function(string) { +validate_keys <- function(string, is_template) { required_keys <- c("app_entry", "config", "scripts") - keys_present <- vapply(required_keys, function(x) grepl(x, string), logical(1)) + if (is_template) + keys_present <- vapply(required_keys, function(x) grepl(x, string), logical(1)) + else + keys_present <- vapply(required_keys, function(x) x %in% string, logical(1)) if (!all(keys_present)) { stop(sprintf("Did you forget to include %s in your index string?", @@ -1353,3 +1556,39 @@ validate_keys <- function(string) { return(string) } } + +# Dash Layout Helper Functions + +#' Is the given object a Dash app? +#' @param x Any object. +is_dash_app <- function(x) { + inherits(x, "Dash") +} + +assert_dash <- function(x) { + if (!is_dash_app(x)) { + stop("You must provide a Dash app object (created with `Dash$new()` or `dash_app()`)", call. = FALSE) + } + invisible(TRUE) +} + +componentify <- function(x) { + if (asNamespace("dash")$is.component(x)) { + x + } else if (inherits(x, "shiny.tag") || inherits(x, "shiny.tag.list")) { + stop("dash: layout cannot include Shiny tags (you might have loaded the {shiny} package after loading {dash})", call. = FALSE) + } else if (is.list(x)) { + x <- remove_empty(x) + htmlDiv(children = lapply(x, componentify)) + } else if (length(x) == 1) { + htmlSpan(children = x) + } else if (is.null(x)) { + return(NULL) + } else { + stop("dash: layout must be a dash component or list of dash components", call. = FALSE) + } +} + +remove_empty <- function(x) { + Filter(Negate(is.null), x) +} diff --git a/R/wrappers.R b/R/wrappers.R new file mode 100644 index 00000000..1da51bfb --- /dev/null +++ b/R/wrappers.R @@ -0,0 +1,275 @@ +# Dash 1.0 Layout Wrapper Functions (adapted from https://github.com/daattali/dash2) + +#' Create a Dash application +#' +#' This is a convenience function that returns a [`Dash`] R6 object. +#' For advanced usage, you can use the object as an R6 object directly instead +#' of the functions provided by the `{dash}` package. +#' +#' @param title _(character)_ The browser window title. +#' @param update_title _(character)_ The browser window title while a callback +#' is being processed. Set to `NULL` or `""` if you don't want Dash to +#' automatically update the window title. +#' @param assets_folder _(character)_ Path (relative to the current working +#' directory) containing extra files to be served by the browser. All files +#' with ".js" or ".css" extensions will automatically be included on the page, +#' unless excluded with `assets_ignore`. Any other files, such as images, will +#' only be served if explicitly requested. +#' @param assets_url_path _(character)_ URL path for serving assets. For +#' example, a value of "www" means that any request path that begins with +#' "/www" will be mapped to the `assets_folder`. If your assets are hosted +#' online, you can provide a CDN URL, such as "http://your-assets-website". +#' @param assets_ignore _(character)_ Regular expression for ".js" and ".css" +#' files that should not be automatically included. Ignored files will still +#' be served if explicitly requested. Note that you cannot use this to +#' prevent access to sensitive files since ignored files are accessible +#' by users. +#' @param eager_loading _(logical)_ Whether asynchronous resources are +#' prefetched (`TRUE`) or loaded on-demand (`FALSE`). +#' @param serve_locally _(logical)_ Whether to serve HTML dependencies locally +#' or remotely (via URL). +#' @param pathname_url_base _(character)_ Local URL prefix to use app-wide. +#' @param pathname_routes_prefix _(character)_ Prefix applied to the backend +#' routes. Defaults to `pathname_url_base`. +#' @param pathname_requests_prefix _(character)_ Prefix applied to request +#' endpoints made by Dash's front-end. Defaults to `pathname_url_base`. +#' @param compress _(logical)_ Whether to try to compress files and data. If +#' `TRUE`, then `brotli` compression is attempted first, then `gzip`, then the +#' `deflate` algorithm, before falling back to identity. +#' @param suppress_callback_exceptions _(logical)_ Whether to relay warnings +#' about possible layout mis-specifications when registering a callback. +#' @param show_undo_redo _(logical)_ If `TRUE`, the app will have undo and redo +#' buttons for stepping through the history of the app state. +#' @seealso [`run_app()`] +#' @export +dash_app <- function(title = NULL, + update_title = "Updating...", + assets_folder = "assets", + assets_url_path = "/assets", + assets_ignore = NULL, + eager_loading = FALSE, + serve_locally = TRUE, + pathname_url_base = "/", + pathname_routes_prefix = NULL, + pathname_requests_prefix = NULL, + compress = TRUE, + suppress_callback_exceptions = FALSE, + show_undo_redo = FALSE) { + + if (is.null(assets_ignore)) { + assets_ignore <- "" + } + + app <- Dash$new( + assets_folder = assets_folder, + assets_url_path = assets_url_path, + assets_ignore = assets_ignore, + eager_loading = eager_loading, + serve_locally = serve_locally, + url_base_pathname = pathname_url_base, + routes_pathname_prefix = pathname_routes_prefix, + requests_pathname_prefix = pathname_requests_prefix, + compress = compress, + suppress_callback_exceptions = suppress_callback_exceptions, + show_undo_redo = show_undo_redo, + update_title = update_title + ) + + if (!is.null(title)) { + app$title(title) + } + + invisible(app) +} + + +#' Add `` tags to a Dash app +#' +#' @param app A dash application created with [`dash_app()`]. +#' @param meta A single meta tag or a list of meta tags. Each meta tag is a +#' named list with two elements representing a meta tag. See examples below. +#' @examples +#' app <- dash_app() +#' +#' # Add a single meta tag +#' app %>% add_meta(list(name = "description", content = "My App")) +#' +#' # Add multiple meta tags +#' app %>% add_meta(list( +#' list(name = "keywords", content = "dash, analysis, graphs"), +#' list(name = "viewport", content = "width=device-width, initial-scale=1.0") +#' )) +#' @export +add_meta <- function(app, meta) { + assert_dash(app) + if (!is.list(meta[[1]])) { + meta <- list(meta) + } + app$.__enclos_env__$private$meta_tags <- c(app$.__enclos_env__$private$meta_tags, meta) + invisible(app) +} + + +#' Add external (CSS) stylesheets to a Dash app +#' +#' @param app A dash application created with [`dash_app()`]. +#' @param stylesheet A single stylesheet or a list of stylesheets. Each +#' stylesheet is either a string (the URL), or a named list with `href` (the +#' URL) and any other valid `` tag attributes. See examples below. +#' Note that this is only used to add **external** stylesheets, not local. +#' @examples +#' app <- dash_app() +#' +#' # Add a single stylesheet with URL +#' app %>% add_stylesheet("https://cdn.jsdelivr.net/npm/bootstrap@5.0.1/dist/css/bootstrap.min.css") +#' +#' # Add multiple stylesheets with URL +#' app %>% add_stylesheet(list( +#' "https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css", +#' "https://code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css" +#' )) +#' +#' # Add a single stylesheet with a list +#' app %>% add_stylesheet( +#' list( +#' href = "https://cdn.jsdelivr.net/npm/bootstrap@5.0.1/dist/css/bootstrap.min.css", +#' integrity = "sha384-+0n0xVW2eSR5OomGNYDnhzAbDsOXxcvSN1TPprVMTNDbiYZCxYbOOl7+AMvyTG2x" +#' ) +#' ) +#' +#' # Add multiple stylesheets with both URL and list +#' app %>% add_stylesheet( +#' list( +#' "https://code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css", +#' "https://fonts.googleapis.com/css?family=Lora", +#' list( +#' href = "https://cdn.jsdelivr.net/npm/bootstrap@5.0.1/dist/css/bootstrap.min.css", +#' integrity = "sha384-+0n0xVW2eSR5OomGNYDnhzAbDsOXxcvSN1TPprVMTNDbiYZCxYbOOl7+AMvyTG2x" +#' ) +#' ) +#' ) +#' @export +add_stylesheet <- function(app, stylesheet) { + assert_dash(app) + if (!is.list(stylesheet) || !is.null(names(stylesheet))) { + stylesheet <- list(stylesheet) + } + app$.__enclos_env__$self$config$external_stylesheets <- c(app$.__enclos_env__$self$config$external_stylesheets, stylesheet) + invisible(app) +} + + +#' Add external (JavaScript) scripts to a Dash app +#' +#' @param app A dash application created with [`dash_app()`] +#' @param script A single script or a list of scripts. Each script is either +#' a string (the URL), or a named list with `src` (the URL) and any other valid +#' `", + jsonlite::toJSON(app$config, auto_unbox=TRUE)) + +app$interpolate_index( + sample_template, + metas = "", + app_entry = "
Loading...
", + config = config, + scripts = "") + +## ------------------------------------------------ +## Method `Dash$run_server` +## ------------------------------------------------ + +if (interactive() ) { + library(dash) + + app <- Dash$new() + app$layout(htmlDiv( + list( + dccInput(id = "inputID", value = "initial value", type = "text"), + htmlDiv(id = "outputID") + ) + ) + ) + + app$callback(output = list(id="outputID", property="children"), + params = list(input(id="inputID", property="value"), + state(id="inputID", property="type")), + function(x, y) + sprintf("You've entered: '\%s' into a '\%s' input control", x, y) + ) + + app$run_server(showcase = TRUE) +} +} +\section{Public fields}{ +\if{html}{\out{
}} +\describe{ +\item{\code{server}}{A cloned (and modified) version of the \link[fiery:Fire]{fiery::Fire} object +provided to the \code{server} argument (various routes will be added which enable +Dash functionality).} + +\item{\code{config}}{A list of configuration options passed along to dash-renderer. +Users shouldn't need to alter any of these options unless they are +constructing their own authorization front-end or otherwise need to know +where the application is making API calls.} +} +\if{html}{\out{
}} +} +\section{Methods}{ +\subsection{Public methods}{ +\itemize{ +\item \href{#method-new}{\code{Dash$new()}} +\item \href{#method-server_route}{\code{Dash$server_route()}} +\item \href{#method-redirect}{\code{Dash$redirect()}} +\item \href{#method-layout_get}{\code{Dash$layout_get()}} +\item \href{#method-layout}{\code{Dash$layout()}} +\item \href{#method-react_version_set}{\code{Dash$react_version_set()}} +\item \href{#method-callback}{\code{Dash$callback()}} +\item \href{#method-callback_context}{\code{Dash$callback_context()}} +\item \href{#method-callback_context.record_timing}{\code{Dash$callback_context.record_timing()}} +\item \href{#method-get_asset_url}{\code{Dash$get_asset_url()}} +\item \href{#method-get_relative_path}{\code{Dash$get_relative_path()}} +\item \href{#method-strip_relative_path}{\code{Dash$strip_relative_path()}} +\item \href{#method-index_string}{\code{Dash$index_string()}} +\item \href{#method-interpolate_index}{\code{Dash$interpolate_index()}} +\item \href{#method-title}{\code{Dash$title()}} +\item \href{#method-run_server}{\code{Dash$run_server()}} +\item \href{#method-clone}{\code{Dash$clone()}} +} +} +\if{html}{\out{
}} +\if{html}{\out{}} +\if{latex}{\out{\hypertarget{method-new}{}}} +\subsection{Method \code{new()}}{ +Create and configure a Dash application. +\subsection{Usage}{ +\if{html}{\out{
}}\preformatted{Dash$new( + server = fiery::Fire$new(), + assets_folder = "assets", + assets_url_path = "/assets", + eager_loading = FALSE, + assets_ignore = "", + serve_locally = TRUE, + meta_tags = NULL, + url_base_pathname = "/", + routes_pathname_prefix = NULL, + requests_pathname_prefix = NULL, + external_scripts = NULL, + external_stylesheets = NULL, + compress = TRUE, + suppress_callback_exceptions = FALSE, + show_undo_redo = FALSE, + update_title = "Updating..." +)}\if{html}{\out{
}} +} + +\subsection{Arguments}{ +\if{html}{\out{
}} +\describe{ +\item{\code{server}}{\link[fiery:Fire]{fiery::Fire} object. The web server used to power the application.} + +\item{\code{assets_folder}}{Character. A path, relative to the current working directory, +for extra files to be used in the browser. All .js and .css files will be loaded immediately unless excluded by \code{assets_ignore}, -and other files such as images will be served if requested. Default is \code{assets}. \cr -\code{assets_url_path} \tab \tab Character. Specify the URL path for asset serving. Default is \code{assets}. \cr -\code{eager_loading} \tab \tab Logical. Controls whether asynchronous resources are prefetched (if \code{TRUE}) or loaded on-demand (if \code{FALSE}). \cr -\code{assets_ignore} \tab \tab Character. A regular expression, to match assets to omit from +and other files such as images will be served if requested. Default is \code{assets}.} + +\item{\code{assets_url_path}}{Character. Specify the URL path for asset serving. Default is \code{assets}.} + +\item{\code{eager_loading}}{Logical. Controls whether asynchronous resources are prefetched (if \code{TRUE}) or loaded on-demand (if \code{FALSE}).} + +\item{\code{assets_ignore}}{Character. A regular expression, to match assets to omit from immediate loading. Ignored files will still be served if specifically requested. You -cannot use this to prevent access to sensitive files. \cr -\code{serve_locally} \tab \tab Logical. Whether to serve HTML dependencies locally or -remotely (via URL).\cr -\code{compress} \tab \tab Logical. Whether to try to compress files and data served by Fiery. -By default, \code{brotli} is attempted first, then \code{gzip}, then the \code{deflate} algorithm, before falling -back to \code{identity}.\cr -\code{meta_tags} \tab \tab List of lists. HTML \code{}tags to be added to the index page. +cannot use this to prevent access to sensitive files.} + +\item{\code{serve_locally}}{Logical. Whether to serve HTML dependencies locally or +remotely (via URL).} + +\item{\code{meta_tags}}{List of lists. HTML \verb{} tags to be added to the index page. Each list element should have the attributes and values for one tag, eg: -\code{list(name = 'description', content = 'My App')}.\cr -\code{url_base_pathname} \tab \tab Character. A local URL prefix to use app-wide. Default is +\code{list(name = 'description', content = 'My App')}.} + +\item{\code{url_base_pathname}}{Character. A local URL prefix to use app-wide. Default is \code{/}. Both \code{requests_pathname_prefix} and \code{routes_pathname_prefix} default to \code{url_base_pathname}. -Environment variable is \code{DASH_URL_BASE_PATHNAME}.\cr -\code{routes_pathname_prefix} \tab \tab Character. A prefix applied to the backend routes. -Environment variable is \code{DASH_ROUTES_PATHNAME_PREFIX}.\cr -\code{requests_pathname_prefix} \tab \tab Character. A prefix applied to request endpoints -made by Dash's front-end. Environment variable is \code{DASH_REQUESTS_PATHNAME_PREFIX}.\cr -\code{external_scripts} \tab \tab List. An optional list of valid URLs from which -to serve JavaScript source for rendered pages.\cr -\code{external_stylesheets} \tab \tab List. An optional list of valid URLs from which -to serve CSS for rendered pages.\cr -\code{suppress_callback_exceptions} \tab \tab Logical. Whether to relay warnings about -possible layout mis-specifications when registering a callback.\cr -\code{show_undo_redo} \tab \tab Logical. Set to \code{TRUE} to enable undo and redo buttons for -stepping through the history of the app state. +Environment variable is \code{DASH_URL_BASE_PATHNAME}.} + +\item{\code{routes_pathname_prefix}}{Character. A prefix applied to the backend routes. +Environment variable is \code{DASH_ROUTES_PATHNAME_PREFIX}.} + +\item{\code{requests_pathname_prefix}}{Character. A prefix applied to request endpoints +made by Dash's front-end. Environment variable is \code{DASH_REQUESTS_PATHNAME_PREFIX}.} + +\item{\code{external_scripts}}{List. An optional list of valid URLs from which +to serve JavaScript source for rendered pages. Each entry can be a string (the URL) +or a named list with \code{src} (the URL) and optionally other \verb{", + jsonlite::toJSON(app$config, auto_unbox=TRUE)) + +app$interpolate_index( + sample_template, + metas = "", + app_entry = "
Loading...
", + config = config, + scripts = "") +} +\if{html}{\out{
}} + +} + +} +\if{html}{\out{
}} +\if{html}{\out{}} +\if{latex}{\out{\hypertarget{method-title}{}}} +\subsection{Method \code{title()}}{ +Set the title of the Dash app +\subsection{Usage}{ +\if{html}{\out{
}}\preformatted{Dash$title(string = "Dash")}\if{html}{\out{
}} +} + +\subsection{Arguments}{ +\if{html}{\out{
}} +\describe{ +\item{\code{string}}{Character. A string representation of the name of the Dash application.} +} +\if{html}{\out{
}} +} +\subsection{Details}{ +If no title is supplied, Dash for R will use 'Dash'. +} + +} +\if{html}{\out{
}} +\if{html}{\out{}} +\if{latex}{\out{\hypertarget{method-run_server}{}}} +\subsection{Method \code{run_server()}}{ +Start the Fiery HTTP server and run a Dash application. +\subsection{Usage}{ +\if{html}{\out{
}}\preformatted{Dash$run_server( + host = Sys.getenv("HOST", "127.0.0.1"), + port = Sys.getenv("PORT", 8050), + block = TRUE, + showcase = FALSE, + use_viewer = FALSE, + dev_tools_prune_errors = TRUE, + debug = Sys.getenv("DASH_DEBUG"), + dev_tools_ui = Sys.getenv("DASH_UI"), + dev_tools_props_check = Sys.getenv("DASH_PROPS_CHECK"), + dev_tools_hot_reload = Sys.getenv("DASH_HOT_RELOAD"), + dev_tools_hot_reload_interval = Sys.getenv("DASH_HOT_RELOAD_INTERVAL"), + dev_tools_hot_reload_watch_interval = Sys.getenv("DASH_HOT_RELOAD_WATCH_INTERVAL)"), + dev_tools_hot_reload_max_retry = Sys.getenv("DASH_HOT_RELOAD_MAX_RETRY"), + dev_tools_silence_routes_logging = NULL, + ... +)}\if{html}{\out{
}} +} + +\subsection{Arguments}{ +\if{html}{\out{
}} +\describe{ +\item{\code{host}}{Character. A string specifying a valid IPv4 address for the Fiery server, or \verb{0.0.0.0} to listen on all addresses. Default is \verb{127.0.0.1} Environment variable: \code{HOST}.} + +\item{\code{port}}{Integer. Specifies the port number on which the server should listen (default is \code{8050}). Environment variable: \code{PORT}.} + +\item{\code{block}}{Logical. Start the server while blocking console input? Default is \code{TRUE}.} + +\item{\code{showcase}}{Logical. Load the Dash application into the default web browser when server starts? Default is \code{FALSE}.} + +\item{\code{use_viewer}}{Logical. Load the Dash application into RStudio's viewer pane? Requires that \code{host} is either \verb{127.0.0.1} or \code{localhost}, and that Dash application is started within RStudio; if \code{use_viewer = TRUE} and these conditions are not satisfied, the user is warned and the app opens in the default browser instead. Default is \code{FALSE}.} -app$run_server(showcase = TRUE) +\item{\code{dev_tools_prune_errors}}{Logical. Reduce tracebacks such that only lines relevant to user code remain, stripping out Fiery and Dash references? Only available with debugging. \code{TRUE} by default, set to \code{FALSE} to see the complete traceback. Environment variable: \code{DASH_PRUNE_ERRORS}.} + +\item{\code{debug}}{Logical. Enable/disable all the Dash developer tools (and the within-browser user interface for the callback graph visualizer and stack traces) unless overridden by the arguments or environment variables. Default is \code{FALSE} when called via \code{run_server}. For more information, please visit \url{https://dash.plotly.com/r/devtools}. Environment variable: \code{DASH_DEBUG}.} + +\item{\code{dev_tools_ui}}{Logical. Show Dash's developer tools UI? Default is \code{TRUE} if \code{debug == TRUE}, \code{FALSE} otherwise. Environment variable: \code{DASH_UI}.} + +\item{\code{dev_tools_props_check}}{Logical. Validate the types and values of Dash component properties? Default is \code{TRUE} if \code{debug == TRUE}, \code{FALSE} otherwise. Environment variable: \code{DASH_PROPS_CHECK}.} + +\item{\code{dev_tools_hot_reload}}{Logical. Activate hot reloading when app, assets, and component files change? Default is \code{TRUE} if \code{debug == TRUE}, \code{FALSE} otherwise. Requires that the Dash application is loaded using \code{source()}, so that \code{srcref} attributes are available for executed code. Environment variable: \code{DASH_HOT_RELOAD}.} + +\item{\code{dev_tools_hot_reload_interval}}{Numeric. Interval in seconds for the client to request the reload hash. Default is \code{3}. Environment variable: \code{DASH_HOT_RELOAD_INTERVAL}.} + +\item{\code{dev_tools_hot_reload_watch_interval}}{Numeric. Interval in seconds for the server to check asset and component folders for changes. Default \code{0.5}. Environment variable: \code{DASH_HOT_RELOAD_WATCH_INTERVAL}.} + +\item{\code{dev_tools_hot_reload_max_retry}}{Integer. Maximum number of failed reload hash requests before failing and displaying a pop up. Default \code{0.5}. Environment variable: \code{DASH_HOT_RELOAD_MAX_RETRY}.} + +\item{\code{dev_tools_silence_routes_logging}}{Logical. Replace Fiery's default logger with \code{dashLogger} instead (will remove all routes logging)? Enabled with debugging by default because hot reload hash checks generate a lot of requests.} + +\item{\code{...}}{Additional arguments to pass to the \code{start} handler; see the \link{fiery} documentation for relevant examples.} } +\if{html}{\out{
}} +} +\subsection{Details}{ +Starts the Fiery server in local mode and launches the Dash application. If a parameter can be set by an environment variable, that is listed too. Values provided here take precedence over environment variables. +. If provided, \code{host}/\code{port} set the \code{host}/\code{port} fields of the underlying \link[fiery:Fire]{fiery::Fire} web server. The \code{block}/\code{showcase}/\code{...} arguments are passed along +to the \code{ignite()} method of the \link[fiery:Fire]{fiery::Fire} server. +} + +\subsection{Examples}{ +\if{html}{\out{
}} +\preformatted{if (interactive() ) { + library(dash) + + app <- Dash$new() + app$layout(htmlDiv( + list( + dccInput(id = "inputID", value = "initial value", type = "text"), + htmlDiv(id = "outputID") + ) + ) + ) + app$callback(output = list(id="outputID", property="children"), + params = list(input(id="inputID", property="value"), + state(id="inputID", property="type")), + function(x, y) + sprintf("You've entered: '\%s' into a '\%s' input control", x, y) + ) + + app$run_server(showcase = TRUE) +} +} +\if{html}{\out{
}} + +} + +} +\if{html}{\out{
}} +\if{html}{\out{}} +\if{latex}{\out{\hypertarget{method-clone}{}}} +\subsection{Method \code{clone()}}{ +The objects of this class are cloneable with this method. +\subsection{Usage}{ +\if{html}{\out{
}}\preformatted{Dash$clone(deep = FALSE)}\if{html}{\out{
}} +} + +\subsection{Arguments}{ +\if{html}{\out{
}} +\describe{ +\item{\code{deep}}{Whether to make a deep clone.} +} +\if{html}{\out{
}} +} +} } -\keyword{datasets} diff --git a/man/add_callback.Rd b/man/add_callback.Rd new file mode 100644 index 00000000..9123e47c --- /dev/null +++ b/man/add_callback.Rd @@ -0,0 +1,30 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/callbacks-advanced.R +\name{add_callback} +\alias{add_callback} +\title{Add a callback to a Dash app} +\usage{ +add_callback(app, outputs, params, callback) +} +\arguments{ +\item{app}{A dash application created with \code{\link[=dash_app]{dash_app()}}.} + +\item{outputs}{Unnamed list. The \code{output} argument provides the component \code{id} +and \code{property} which will be updated by the callback; a callback can +target one or more outputs (i.e. multiple outputs).} + +\item{params}{Unnamed list; provides \link{input} and \link{state} statements, each +with its own defined \code{id} and \code{property}. For pattern-matching callbacks, +the \code{id} field of a component is written in JSON-like syntax and provides +fields that are arbitrary keys which describe the targets of the callback. +See \link{selectors} for more details.} + +\item{callback}{Function; must return \link{output} provided \link{input} or \link{state} +arguments. \code{callback} may be any valid R function, or a character string +containing valid JavaScript, or a call to \link{clientsideFunction}, +including \code{namespace} and \code{function_name} arguments for a locally served +JavaScript function.} +} +\description{ +Add a callback to a Dash app +} diff --git a/man/add_meta.Rd b/man/add_meta.Rd new file mode 100644 index 00000000..9491cb01 --- /dev/null +++ b/man/add_meta.Rd @@ -0,0 +1,29 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/wrappers.R +\name{add_meta} +\alias{add_meta} +\title{Add \verb{} tags to a Dash app} +\usage{ +add_meta(app, meta) +} +\arguments{ +\item{app}{A dash application created with \code{\link[=dash_app]{dash_app()}}.} + +\item{meta}{A single meta tag or a list of meta tags. Each meta tag is a +named list with two elements representing a meta tag. See examples below.} +} +\description{ +Add \verb{} tags to a Dash app +} +\examples{ +app <- dash_app() + +# Add a single meta tag +app \%>\% add_meta(list(name = "description", content = "My App")) + +# Add multiple meta tags +app \%>\% add_meta(list( + list(name = "keywords", content = "dash, analysis, graphs"), + list(name = "viewport", content = "width=device-width, initial-scale=1.0") +)) +} diff --git a/man/add_script.Rd b/man/add_script.Rd new file mode 100644 index 00000000..19385123 --- /dev/null +++ b/man/add_script.Rd @@ -0,0 +1,51 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/wrappers.R +\name{add_script} +\alias{add_script} +\title{Add external (JavaScript) scripts to a Dash app} +\usage{ +add_script(app, script) +} +\arguments{ +\item{app}{A dash application created with \code{\link[=dash_app]{dash_app()}}} + +\item{script}{A single script or a list of scripts. Each script is either +a string (the URL), or a named list with \code{src} (the URL) and any other valid +\verb{", + "", + "" + ) + ) + + app <- Dash$new(serve_locally=FALSE, external_stylesheets = list( + list( + href="https://codepen.io/chriddyp/pen/bWLwgP.css", + hreflang="en-us") + ), + external_scripts = list( + src="https://www.google-analytics.com/analytics.js", + list( + src = "https://cdn.polyfill.io/v2/polyfill.min.js" + ), + list( + src = "https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.10/lodash.core.js", + integrity = "sha256-Qqd/EfdABZUcAxjOkMi8eGEivtdTkh3b65xCZL4qAQA=", + crossorigin = "anonymous" + ) + ) + ) + + app$layout(html$div( + "Hello world!" + ) + ) + + request_with_attributes <- fiery::fake_request( + "http://127.0.0.1:8050" + ) + + # start up Dash briefly to generate the index + app$run_server(block=FALSE) + app$server$stop() + + response_with_attributes <- app$server$test_request(request_with_attributes) + + tags_by_line <- lapply(strsplit(response_with_attributes$body, "\n "), function(x) trimws(x))[[1]] + stylesheet_hrefs <- grep(stylesheet_pattern, tags_by_line, value = TRUE) + script_hrefs <- grep(script_pattern, tags_by_line, value = TRUE) + + # construct the script tags as they should be generated within + # Dash for R this way the mod times and version numbers will + # always be in sync with those used by the backend + internal_hrefs <- vapply(.dash_js_metadata(), function(x) x$src$href, character(1)) + + dcc <- .dashCoreComponents_js_metadata() + dhc <- .dashHtmlComponents_js_metadata() + dt <- .dashTable_js_metadata() + dbc <- .dashBootstrapComponents_js_metadata() + + dcc_min <- dcc[which(sapply(dcc, "[[", "script") == "dcc/dash_core_components.js")][[1]] + dcc_shared <- dcc[which(sapply(dcc, "[[", "script") == "dcc/dash_core_components-shared.js")][[1]] + dhc_min <- dhc[which(sapply(dhc, "[[", "script") == "html/dash_html_components.min.js")][[1]] + dt_bundle <- dt[which(sapply(dt, "[[", "script") == "dash_table/bundle.js")][[1]] + dbc_min <- dbc[which(sapply(dbc, "[[", "script") == "_components/dash_bootstrap_components.min.js")][[1]] + + dcc_min_path <- getDependencyPath(dcc_min) + dcc_min_modtime <- as.integer(file.mtime(dcc_min_path)) + dcc_min_filename <- basename(buildFingerprint(dcc_min$script, dcc_min$version, dcc_min_modtime)) + + dcc_shared_path <- getDependencyPath(dcc_shared) + dcc_shared_modtime <- as.integer(file.mtime(dcc_shared_path)) + dcc_shared_filename <- basename(buildFingerprint(dcc_shared$script, dcc_shared$version, dcc_shared_modtime)) + + dhc_min_path <- getDependencyPath(dhc_min) + dhc_min_modtime <- as.integer(file.mtime(dhc_min_path)) + dhc_min_filename <- basename(buildFingerprint(dhc_min$script, dhc_min$version, dhc_min_modtime)) + + dt_bundle_path <- getDependencyPath(dt_bundle) + dt_bundle_modtime <- as.integer(file.mtime(dt_bundle_path)) + dt_bundle_filename <- basename(buildFingerprint(dt_bundle$script, dt_bundle$version, dt_bundle_modtime)) + + dbc_min_path <- getDependencyPath(dbc_min) + dbc_min_modtime <- as.integer(file.mtime(dbc_min_path)) + dbc_min_filename <- basename(buildFingerprint(dbc_min$script, dbc_min$version, dbc_min_modtime)) + + dcc_min_ref <- paste0("/", + "_dash-component-suites/", + dcc_min$name, + "/", + dcc_min_filename, + "?v=", + dcc_min$version, + "&m=", + dcc_min_modtime) + dcc_shared_ref <- paste0("/", + "_dash-component-suites/", + dcc_shared$name, + "/", + dcc_shared_filename, + "?v=", + dcc_shared$version, + "&m=", + dcc_shared_modtime) + dhc_ref <- paste0("/", + "_dash-component-suites/", + dhc_min$name, + "/", + dhc_min_filename, + "?v=", + dhc_min$version, + "&m=", + dhc_min_modtime) + dt_ref <- paste0("/", + "_dash-component-suites/", + dt_bundle$name, + "/", + dt_bundle_filename, + "?v=", + dt_bundle$version, + "&m=", + dt_bundle_modtime) + dbc_ref <- paste0("/", + "_dash-component-suites/", + dbc_min$name, + "/", + dbc_min_filename, + "?v=", + dbc_min$version, + "&m=", + dbc_min_modtime) + all_tags <- glue::glue("\n") + + expect_equal( + stylesheet_hrefs, + "" + ) + + expect_equal( + script_hrefs, + c(glue::glue_collapse(all_tags, sep="\n"), + "", + "", + "" + ) + ) + +}) + +test_that("invalid attributes trigger an error", { + external_stylesheets <- list( + list( + href="https://codepen.io/chriddyp/pen/bWLwgP.css", + foo="somedata", + bar="moredata" + ) + ) + + external_scripts <- list( + "https://www.google-analytics.com/analytics.js", + list( + src = "https://cdn.polyfill.io/v2/polyfill.min.js" + ), + list( + src = "https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.10/lodash.core.js", + integrity = "sha256-Qqd/EfdABZUcAxjOkMi8eGEivtdTkh3b65xCZL4qAQA=", + baz = "anonymous" + ) + ) + + expect_error(assertValidExternals(external_scripts, external_stylesheets), + "The following script or stylesheet attributes are invalid: baz, foo, bar.") +}) + +test_that("not passing named attributes triggers an error", { + external_stylesheets <- list( + list( + href="https://codepen.io/chriddyp/pen/bWLwgP.css", + foo="somedata", + "moredata" + ) + ) + + external_scripts <- list() + + expect_error(assertValidExternals(external_scripts, external_stylesheets), + "Please verify that all attributes are named elements when specifying URLs for scripts and stylesheets.") +}) + +test_that("stylesheet can be passed as a simple list", { + stylesheet_pattern <- '^.*.*$' + script_pattern <- '^.*