diff --git a/.Rbuildignore b/.Rbuildignore index 5f714c915..0bb1753af 100644 --- a/.Rbuildignore +++ b/.Rbuildignore @@ -20,7 +20,7 @@ demo/.*\.js demo/.*\.html demo/.*\.css -# ignore python files/folders +# ignore Python files/folders setup.py usage.py setup.py diff --git a/R/themes.R b/R/themes.R new file mode 100644 index 000000000..f895a556a --- /dev/null +++ b/R/themes.R @@ -0,0 +1,31 @@ +.prependBootswatch <- function(suffix) { + BOOTSWATCH_BASE <- "https://stackpath.bootstrapcdn.com/bootswatch/4.5.0/" + return(paste(BOOTSWATCH_BASE, suffix, sep="")) +} + +#' @export' +dbcThemes <- list( + BOOTSTRAP = "https://stackpath.bootstrapcdn.com/bootstrap/4.5.0/css/bootstrap.min.css", + GRID = "https://stackpath.bootstrapcdn.com/bootstrap/4.5.0/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"), + PULSE = .prependBootswatch("pulse/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"), + YETI = .prependBootswatch("yeti/bootstrap.min.css") +) diff --git a/R/zzz.R b/R/zzz.R deleted file mode 100644 index 707d5ae31..000000000 --- a/R/zzz.R +++ /dev/null @@ -1,33 +0,0 @@ -.prependBootswatch <- function(suffix) { - BOOTSWATCH_BASE <- "https://stackpath.bootstrapcdn.com/bootswatch/4.5.0/" - return(paste(BOOTSWATCH_BASE, suffix, sep="")) -} - -.onLoad <- function(libname, pkgname) { - dbcThemes <- list( - BOOTSTRAP = "https://stackpath.bootstrapcdn.com/bootstrap/4.5.0/css/bootstrap.min.css", - GRID = "https://stackpath.bootstrapcdn.com/bootstrap/4.5.0/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"), - PULSE = .prependBootswatch("pulse/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"), - YETI = .prependBootswatch("yeti/bootstrap.min.css") - ) - assign("dbcThemes", dbcThemes, envir=.GlobalEnv) -} diff --git a/gulpfile.js b/gulpfile.js index e0c174b6f..065636078 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -2,6 +2,7 @@ const {dest, parallel, series, src} = require('gulp'); const del = require('del'); const mkdirp = require('mkdirp'); const rename = require('gulp-rename'); +const footer = require('gulp-footer'); function cleanLib() { mkdirp.sync('lib'); @@ -42,5 +43,16 @@ function copyGeneratedFiles() { .pipe(dest('dash_bootstrap_components/_components')); } -exports.default = series(copyGeneratedFiles, cleanGeneratedFiles); +function addThemesToRNamespace() { + return src('NAMESPACE') + .pipe(footer('export(dbcThemes)')) + .pipe(dest('.', {overwrite: true})); +} + +exports.postPyBuild = series(copyGeneratedFiles, cleanGeneratedFiles); exports.clean = parallel(cleanGeneratedFiles, cleanComponents, cleanLib); +exports.postRBuild = series( + copyGeneratedFiles, + cleanGeneratedFiles, + addThemesToRNamespace +); diff --git a/package-lock.json b/package-lock.json index 6d11c99d4..58c00f3c7 100644 --- a/package-lock.json +++ b/package-lock.json @@ -5780,6 +5780,19 @@ } } }, + "gulp-footer": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/gulp-footer/-/gulp-footer-2.0.2.tgz", + "integrity": "sha512-HsG5VOgKHFRqZXnHGI6oGhPDg70p9pobM+dYOnjBZVLMQUHzLG6bfaPNRJ7XG707E+vWO3TfN0CND9UrYhk94g==", + "dev": true, + "requires": { + "lodash._reescape": "^3.0.0", + "lodash._reevaluate": "^3.0.0", + "lodash._reinterpolate": "^3.0.0", + "lodash.template": "^3.6.2", + "map-stream": "0.0.7" + } + }, "gulp-rename": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/gulp-rename/-/gulp-rename-2.0.0.tgz", @@ -8349,12 +8362,131 @@ "integrity": "sha512-JNvd8XER9GQX0v2qJgsaN/mzFCNA5BRe/j8JN9d+tWyGLSodKQHKFicdwNYzWwI3wjRnaKPsGj1XkBjx/F96DQ==", "dev": true }, + "lodash._basecopy": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz", + "integrity": "sha1-jaDmqHbPNEwK2KVIghEd08XHyjY=", + "dev": true + }, + "lodash._basetostring": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/lodash._basetostring/-/lodash._basetostring-3.0.1.tgz", + "integrity": "sha1-0YYdh3+CSlL2aYMtyvPuFVZqB9U=", + "dev": true + }, + "lodash._basevalues": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lodash._basevalues/-/lodash._basevalues-3.0.0.tgz", + "integrity": "sha1-W3dXYoAr3j0yl1A+JjAIIP32Ybc=", + "dev": true + }, + "lodash._getnative": { + "version": "3.9.1", + "resolved": "https://registry.npmjs.org/lodash._getnative/-/lodash._getnative-3.9.1.tgz", + "integrity": "sha1-VwvH3t5G1hzc3mh9ZdPuy6o6r/U=", + "dev": true + }, + "lodash._isiterateecall": { + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/lodash._isiterateecall/-/lodash._isiterateecall-3.0.9.tgz", + "integrity": "sha1-UgOte6Ql+uhCRg5pbbnPPmqsBXw=", + "dev": true + }, + "lodash._reescape": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lodash._reescape/-/lodash._reescape-3.0.0.tgz", + "integrity": "sha1-Kx1vXf4HyKNVdT5fJ/rH8c3hYWo=", + "dev": true + }, + "lodash._reevaluate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lodash._reevaluate/-/lodash._reevaluate-3.0.0.tgz", + "integrity": "sha1-WLx0xAZklTrgsSTYBpltrKQx4u0=", + "dev": true + }, + "lodash._reinterpolate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz", + "integrity": "sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0=", + "dev": true + }, + "lodash._root": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/lodash._root/-/lodash._root-3.0.1.tgz", + "integrity": "sha1-+6HEUkwZ7ppfgTa0YJ8BfPTe1pI=", + "dev": true + }, + "lodash.escape": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/lodash.escape/-/lodash.escape-3.2.0.tgz", + "integrity": "sha1-mV7g3BjBtIzJLv+ucaEKq1tIdpg=", + "dev": true, + "requires": { + "lodash._root": "^3.0.0" + } + }, + "lodash.isarguments": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz", + "integrity": "sha1-L1c9hcaiQon/AGY7SRwdM4/zRYo=", + "dev": true + }, + "lodash.isarray": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/lodash.isarray/-/lodash.isarray-3.0.4.tgz", + "integrity": "sha1-eeTriMNqgSKvhvhEqpvNhRtfu1U=", + "dev": true + }, + "lodash.keys": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/lodash.keys/-/lodash.keys-3.1.2.tgz", + "integrity": "sha1-TbwEcrFWvlCgsoaFXRvQsMZWCYo=", + "dev": true, + "requires": { + "lodash._getnative": "^3.0.0", + "lodash.isarguments": "^3.0.0", + "lodash.isarray": "^3.0.0" + } + }, + "lodash.restparam": { + "version": "3.6.1", + "resolved": "https://registry.npmjs.org/lodash.restparam/-/lodash.restparam-3.6.1.tgz", + "integrity": "sha1-k2pOMJ7zMKdkXtQUWYbIWuWyCAU=", + "dev": true + }, "lodash.sortby": { "version": "4.7.0", "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", "integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=", "dev": true }, + "lodash.template": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/lodash.template/-/lodash.template-3.6.2.tgz", + "integrity": "sha1-+M3sxhaaJVvpCYrosMU9N4kx0U8=", + "dev": true, + "requires": { + "lodash._basecopy": "^3.0.0", + "lodash._basetostring": "^3.0.0", + "lodash._basevalues": "^3.0.0", + "lodash._isiterateecall": "^3.0.0", + "lodash._reinterpolate": "^3.0.0", + "lodash.escape": "^3.0.0", + "lodash.keys": "^3.0.0", + "lodash.restparam": "^3.0.0", + "lodash.templatesettings": "^3.0.0" + } + }, + "lodash.templatesettings": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/lodash.templatesettings/-/lodash.templatesettings-3.1.1.tgz", + "integrity": "sha1-+zB4RHU7Zrnxr6VOJix0UwfbqOU=", + "dev": true, + "requires": { + "lodash._reinterpolate": "^3.0.0", + "lodash.escape": "^3.0.0" + } + }, "loglevel": { "version": "1.6.8", "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.6.8.tgz", @@ -8429,6 +8561,12 @@ "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", "dev": true }, + "map-stream": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/map-stream/-/map-stream-0.0.7.tgz", + "integrity": "sha1-ih8HiW2CsQkmvTdEokIACfiJdKg=", + "dev": true + }, "map-visit": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", diff --git a/package.json b/package.json index 6dedc6e02..941c2cb00 100644 --- a/package.json +++ b/package.json @@ -8,8 +8,8 @@ "build": "run-s clean build:js build:py build:r", "build:lib": "webpack --config=webpack/config.lib.js", "build:js": "NODE_ENV=production webpack --config=webpack/config.dist.js", - "build:py": "dash-generate-components ./src/components dash_bootstrap_components && gulp", - "build:r": "dash-generate-components ./src/components dash_bootstrap_components --r-prefix 'dbc' && gulp", + "build:py": "dash-generate-components ./src/components dash_bootstrap_components && gulp postPyBuild", + "build:r": "dash-generate-components ./src/components dash_bootstrap_components --r-prefix 'dbc' && gulp postRBuild", "clean": "gulp clean", "demo": "webpack-dev-server --hot --inline --port=8888 --config=webpack/config.demo.js", "format": "prettier src/**/*.js --write", @@ -46,6 +46,7 @@ "css-loader": "^1.0.1", "del": "^5.1.0", "gulp": "^4.0.2", + "gulp-footer": "^2.0.2", "gulp-rename": "^2.0.0", "jest": "^24.9.0", "mkdirp": "^0.5.4",