From df910d1ed2917890ad7bd61c2b42cc4ba240690d Mon Sep 17 00:00:00 2001 From: Simon Vieille Date: Mon, 29 Mar 2021 19:40:55 +0200 Subject: [PATCH] add js modules --- .gitignore | 1 + Makefile | 3 + assets/css/app.scss | 5 ++ assets/js/app.js | 25 ++++++ assets/js/app/app.js | 4 +- assets/js/app/code.js | 30 ++++++- assets/js/app/form-pwn.js | 27 +++--- assets/js/app/knmc.js | 2 +- assets/js/app/lazy-load.js | 4 +- assets/js/app/particles.js | 4 +- assets/js/app/post.js | 2 +- assets/js/app/quick-post.js | 2 +- assets/js/app/routing.js | 8 ++ assets/js/app/stats.js | 2 +- assets/js/app/video-ratio.js | 2 +- composer.json | 1 + config/bundles.php | 1 + config/packages/app.yaml | 4 + config/routes/fos_js_routing.yaml | 2 + package.json | 3 + public/js/fos_js_routes.json | 1 + public/js/particles.classic.json | 101 +++++++++++++++++++++ public/js/particles.flocons.json | 110 +++++++++++++++++++++++ public/js/particles.json | 101 +++++++++++++++++++++ symfony.lock | 15 ++++ templates/module/_navigation.html.twig | 1 - templates/page/contact/default.html.twig | 2 +- webpack.config.js | 2 +- yarn.lock | 48 ++++++++++ 29 files changed, 487 insertions(+), 26 deletions(-) create mode 100644 assets/js/app/routing.js create mode 100644 config/routes/fos_js_routing.yaml create mode 100644 public/js/fos_js_routes.json create mode 100644 public/js/particles.classic.json create mode 100644 public/js/particles.flocons.json create mode 100644 public/js/particles.json diff --git a/.gitignore b/.gitignore index dc07d31..db570a8 100644 --- a/.gitignore +++ b/.gitignore @@ -25,3 +25,4 @@ yarn-error.log /public/uploads/ !/public/uploads/.gitkeep +/data diff --git a/Makefile b/Makefile index ea624af..3fe9916 100644 --- a/Makefile +++ b/Makefile @@ -19,6 +19,9 @@ asset: $(YARN) $(WEBPACK) +jsroute: + $(PHP) bin/console fos:js-routing:dump --format=json --target=public/js/fos_js_routes.json + clean: rm -fr var/cache/dev/* rm -fr var/cache/prod/* diff --git a/assets/css/app.scss b/assets/css/app.scss index 82e01d9..d44b40f 100644 --- a/assets/css/app.scss +++ b/assets/css/app.scss @@ -384,6 +384,11 @@ a:focus .logo-svg * { border-top-right-radius: 0; border-top-left-radius: 0; } + + &[class*="language-"] { + padding-bottom: 10px; + border: 1px solid #3c3c3c; + } } } diff --git a/assets/js/app.js b/assets/js/app.js index 3d92424..08fcad8 100644 --- a/assets/js/app.js +++ b/assets/js/app.js @@ -1,3 +1,28 @@ import '../css/app.scss'; +const App = require('./app/app') +const FormPnw = require('./app/form-pwn') +const Post = require('./app/post') +const LazyLoad = require('./app/lazy-load') +const QuickPost = require('./app/quick-post') +const Code = require('./app/code') +const Knmc = require('./app/knmc') +const VideoRatio = require('./app/video-ratio') +const Stats = require('./app/stats') +const Particles = require('./app/particles') +const app = new App([ + new FormPnw(window), + new Post(window), + new LazyLoad(window), + new QuickPost(window), + new Code(window), + new Knmc(window), + new VideoRatio(window), + new Stats(), + new Particles(window), +]); + +window.addEventListener('load', function() { + app.init(); +}, false); diff --git a/assets/js/app/app.js b/assets/js/app/app.js index 66c8c34..6b3cfa2 100644 --- a/assets/js/app/app.js +++ b/assets/js/app/app.js @@ -1,4 +1,4 @@ -var App = function(components) { +const App = function(components) { this.components = components || []; } @@ -13,3 +13,5 @@ App.prototype.init = function() { this.components[u].init(); } } + +module.exports = App diff --git a/assets/js/app/code.js b/assets/js/app/code.js index 189ee6f..defb40c 100644 --- a/assets/js/app/code.js +++ b/assets/js/app/code.js @@ -1,11 +1,33 @@ -var Code = function(w) { +const Prism = require('prismjs'); + +require('prismjs/plugins/line-numbers/prism-line-numbers.css'); +require('prismjs/themes/prism-twilight.css'); + +require('prismjs/components/prism-scss'); +require('prismjs/components/prism-markup'); +require('prismjs/components/prism-markup-templating'); +require('prismjs/components/prism-css'); +require('prismjs/components/prism-clike'); +require('prismjs/components/prism-javascript'); +require('prismjs/components/prism-bash'); +require('prismjs/components/prism-markdown'); +require('prismjs/components/prism-nginx'); +require('prismjs/components/prism-php'); +require('prismjs/components/prism-python'); +require('prismjs/components/prism-sql'); +require('prismjs/components/prism-yaml'); + +require('prismjs/plugins/keep-markup/prism-keep-markup'); +require('prismjs/plugins/line-highlight/prism-line-highlight'); +require('prismjs/plugins/line-numbers/prism-line-numbers'); + +const Code = function(w) { this.window = w; } Code.prototype.init = function() { - Prism.highlightAllUnder(document); - - var elements = this.window.document.querySelectorAll('code[data-title], div[data-title]'); + Prism.highlightAllUnder(document) + var elements = this.window.document.querySelectorAll('code[data-title], div[data-title]') for (var i = 0, len = elements.length; i < len; i++) { var element = elements[i]; diff --git a/assets/js/app/form-pwn.js b/assets/js/app/form-pwn.js index b39b632..966c68e 100644 --- a/assets/js/app/form-pwn.js +++ b/assets/js/app/form-pwn.js @@ -1,23 +1,28 @@ -var FormPnw = function(w) { - this.window = w; +const Routing = require('./routing') + +const FormPnw = function(w) { + this.window = w } FormPnw.prototype.init = function() { - var doc = this.window.document; + var doc = this.window.document doc.addEventListener('mousemove', function() { - var forms = doc.querySelectorAll('form[data-form-bot]'); + var forms = doc.querySelectorAll('form[data-form-bot]') for (var i = 0, len = forms.length; i < len; i++) { - var form = forms[i]; - var action = form.getAttribute('action'); - action = action.replace(Routing.generate('form_without_javascript') + '?page=', ''); - action = decodeURIComponent(action); + var form = forms[i] + var action = form.getAttribute('action') - form.setAttribute('action', action); - form.removeAttribute('data-form-bot'); + console.log([action, Routing.generate('blog_tech_form_without_javascript', [], true)]) + + action = action.replace(Routing.generate('blog_tech_form_without_javascript', [], false) + '?page=', '') + action = decodeURIComponent(action) + + form.setAttribute('action', action) + form.removeAttribute('data-form-bot') } - }); + }) } module.exports = FormPnw diff --git a/assets/js/app/knmc.js b/assets/js/app/knmc.js index 69a58a6..c20c9c3 100644 --- a/assets/js/app/knmc.js +++ b/assets/js/app/knmc.js @@ -1,4 +1,4 @@ -var Knmc = function(w) { +const Knmc = function(w) { this.window = w; } diff --git a/assets/js/app/lazy-load.js b/assets/js/app/lazy-load.js index dae8bfe..cf680d9 100644 --- a/assets/js/app/lazy-load.js +++ b/assets/js/app/lazy-load.js @@ -1,4 +1,6 @@ -var LazyLoad = function() { +const lozad = require('lozad') + +const LazyLoad = function() { } LazyLoad.prototype.init = function() { diff --git a/assets/js/app/particles.js b/assets/js/app/particles.js index 44107d0..a695fea 100644 --- a/assets/js/app/particles.js +++ b/assets/js/app/particles.js @@ -1,4 +1,6 @@ -var Particles = function(w) { +require('particles.js'); + +const Particles = function(w) { this.window = w; } diff --git a/assets/js/app/post.js b/assets/js/app/post.js index 690fe3a..6bdf49d 100644 --- a/assets/js/app/post.js +++ b/assets/js/app/post.js @@ -1,4 +1,4 @@ -var Post = function(w) { +const Post = function(w) { this.window = w; } diff --git a/assets/js/app/quick-post.js b/assets/js/app/quick-post.js index 3e0becb..f6de7c4 100644 --- a/assets/js/app/quick-post.js +++ b/assets/js/app/quick-post.js @@ -1,4 +1,4 @@ -var QuickPost = function(w) { +const QuickPost = function(w) { this.window = w; } diff --git a/assets/js/app/routing.js b/assets/js/app/routing.js new file mode 100644 index 0000000..746b1dc --- /dev/null +++ b/assets/js/app/routing.js @@ -0,0 +1,8 @@ +const routes = require('../../../public/js/fos_js_routes.json'); +const Routing = require('./../../../vendor/friendsofsymfony/jsrouting-bundle/Resources/public/js/router.js'); + +Routing.setRoutingData(routes); +Routing.setScheme(location.protocol.replace(':', '')) + +module.exports = Routing + diff --git a/assets/js/app/stats.js b/assets/js/app/stats.js index 79f5764..91fbdc1 100644 --- a/assets/js/app/stats.js +++ b/assets/js/app/stats.js @@ -1,4 +1,4 @@ -var Stats = function() { +const Stats = function() { } Stats.prototype.init = function() { diff --git a/assets/js/app/video-ratio.js b/assets/js/app/video-ratio.js index afdc2b4..500461c 100644 --- a/assets/js/app/video-ratio.js +++ b/assets/js/app/video-ratio.js @@ -1,4 +1,4 @@ -var VideoRatio = function(w) { +const VideoRatio = function(w) { this.window = w; } diff --git a/composer.json b/composer.json index ce721b7..66f8e75 100644 --- a/composer.json +++ b/composer.json @@ -14,6 +14,7 @@ "doctrine/doctrine-bundle": "^2.2", "doctrine/doctrine-migrations-bundle": "^3.0", "doctrine/orm": "^2.8", + "friendsofsymfony/jsrouting-bundle": "^2.7", "knplabs/knp-markdown-bundle": "^1.9", "knplabs/knp-menu-bundle": "^3.1", "knplabs/knp-paginator-bundle": "^5.4", diff --git a/config/bundles.php b/config/bundles.php index 33bdb5d..9aad270 100644 --- a/config/bundles.php +++ b/config/bundles.php @@ -21,4 +21,5 @@ return [ App\Bundle\AppBundle::class => ['all' => true], Knp\Bundle\MarkdownBundle\KnpMarkdownBundle::class => ['all' => true], Knp\Bundle\MenuBundle\KnpMenuBundle::class => ['all' => true], + FOS\JsRoutingBundle\FOSJsRoutingBundle::class => ['all' => true], ]; diff --git a/config/packages/app.yaml b/config/packages/app.yaml index d32abb5..757dd10 100644 --- a/config/packages/app.yaml +++ b/config/packages/app.yaml @@ -19,3 +19,7 @@ core: name: 'Page titrée' templates: - {name: "Par défaut", file: "page/titled/default.html.twig"} + +fos_js_routing: + routes_to_expose: + - blog_tech_form_without_javascript diff --git a/config/routes/fos_js_routing.yaml b/config/routes/fos_js_routing.yaml new file mode 100644 index 0000000..79d25e2 --- /dev/null +++ b/config/routes/fos_js_routing.yaml @@ -0,0 +1,2 @@ +fos_js_routing: + resource: "@FOSJsRoutingBundle/Resources/config/routing/routing-sf4.xml" diff --git a/package.json b/package.json index 1b9bd66..346f3b2 100644 --- a/package.json +++ b/package.json @@ -23,8 +23,11 @@ "bootstrap": "^4.3.1", "choices.js": "^9.0.1", "jquery": "^3.6.0", + "lozad": "^1.16.0", "particles.js": "^2.0.0", + "particlesjs": "^2.2.3", "popper.js": "^1.16.0", + "prismjs": "^1.23.0", "qrcodejs": "^1.0.0", "simplemde": "^1.11.2", "tinymce": "^5.7.1", diff --git a/public/js/fos_js_routes.json b/public/js/fos_js_routes.json new file mode 100644 index 0000000..1003fe6 --- /dev/null +++ b/public/js/fos_js_routes.json @@ -0,0 +1 @@ +{"base_url":"","routes":{"blog_tech_form_without_javascript":{"tokens":[["text","\/nojs"]],"defaults":[],"requirements":[],"hosttokens":[["text","local.deblan"]],"methods":[],"schemes":[]}},"prefix":"","host":"localhost","port":"","scheme":"http","locale":[]} \ No newline at end of file diff --git a/public/js/particles.classic.json b/public/js/particles.classic.json new file mode 100644 index 0000000..274ea00 --- /dev/null +++ b/public/js/particles.classic.json @@ -0,0 +1,101 @@ +{ + "particles": { + "number": { + "value": 90, + "density": { + "enable": true, + "value_area": 900 + } + }, + "color": { + "value": "#ffffff" + }, + "opacity": { + "value": 0.5, + "random": false, + "anim": { + "enable": false, + "speed": 1, + "opacity_min": 0.1, + "sync": false + } + }, + "size": { + "value": 5, + "random": true, + "anim": { + "enable": false, + "speed": 1, + "size_min": 0.1, + "sync": false + } + }, + "line_linked": { + "enable": true, + "distance": 150, + "color": "#ffffff", + "opacity": 0.4, + "width": 1 + }, + "move": { + "enable": true, + "speed": 6, + "direction": "none", + "random": false, + "straight": false, + "out_mode": "out", + "attract": { + "enable": false, + "rotateX": 600, + "rotateY": 1200 + } + } + }, + "interactivity": { + "detect_on": "canvas", + "events": { + "onhover": { + "enable": false, + "mode": "repulse" + }, + "onclick": { + "enable": true, + "mode": "push" + }, + "resize": true + }, + "modes": { + "grab": { + "distance": 400, + "line_linked": { + "opacity": 1 + } + }, + "bubble": { + "distance": 400, + "size": 40, + "duration": 2, + "opacity": 8, + "speed": 3 + }, + "repulse": { + "distance": 200 + }, + "push": { + "particles_nb": 4 + }, + "remove": { + "particles_nb": 2 + } + } + }, + "retina_detect": true, + "config_demo": { + "hide_card": false, + "background_color": "#b61924", + "background_image": "", + "background_position": "50% 50%", + "background_repeat": "no-repeat", + "background_size": "cover" + } +} diff --git a/public/js/particles.flocons.json b/public/js/particles.flocons.json new file mode 100644 index 0000000..9172a71 --- /dev/null +++ b/public/js/particles.flocons.json @@ -0,0 +1,110 @@ +{ + "particles": { + "number": { + "value": 100, + "density": { + "enable": false, + "value_area": 800 + } + }, + "color": { + "value": "#fff" + }, + "shape": { + "type": "circle", + "stroke": { + "width": 0, + "color": "#000000" + }, + "polygon": { + "nb_sides": 5 + }, + "image": { + "src": "img/github.svg", + "width": 100, + "height": 100 + } + }, + "opacity": { + "value": 0.5, + "random": true, + "anim": { + "enable": false, + "speed": 1, + "opacity_min": 0.1, + "sync": false + } + }, + "size": { + "value": 10, + "random": true, + "anim": { + "enable": false, + "speed": 40, + "size_min": 0.1, + "sync": false + } + }, + "line_linked": { + "enable": false, + "distance": 500, + "color": "#ffffff", + "opacity": 0.4, + "width": 2 + }, + "move": { + "enable": true, + "speed": 3, + "direction": "bottom", + "random": false, + "straight": false, + "out_mode": "out", + "bounce": false, + "attract": { + "enable": false, + "rotateX": 600, + "rotateY": 1200 + } + } + }, + "interactivity": { + "detect_on": "canvas", + "events": { + "onhover": { + "enable": false, + "mode": "repulse" + }, + "onclick": { + "enable": true, + "mode": "push" + }, + "resize": true + }, + "modes": { + "grab": { + "distance": 400, + "line_linked": { + "opacity": 0.5 + } + }, + "bubble": { + "distance": 400, + "size": 4, + "duration": 0.3, + "opacity": 1, + "speed": 3 + }, + "repulse": { + "distance": 200, + "duration": 0.7 + }, + "push": { + "particles_nb": 4 + }, + "remove": { + "particles_nb": 2 + } + } + }, + "retina_detect": false +} diff --git a/public/js/particles.json b/public/js/particles.json new file mode 100644 index 0000000..274ea00 --- /dev/null +++ b/public/js/particles.json @@ -0,0 +1,101 @@ +{ + "particles": { + "number": { + "value": 90, + "density": { + "enable": true, + "value_area": 900 + } + }, + "color": { + "value": "#ffffff" + }, + "opacity": { + "value": 0.5, + "random": false, + "anim": { + "enable": false, + "speed": 1, + "opacity_min": 0.1, + "sync": false + } + }, + "size": { + "value": 5, + "random": true, + "anim": { + "enable": false, + "speed": 1, + "size_min": 0.1, + "sync": false + } + }, + "line_linked": { + "enable": true, + "distance": 150, + "color": "#ffffff", + "opacity": 0.4, + "width": 1 + }, + "move": { + "enable": true, + "speed": 6, + "direction": "none", + "random": false, + "straight": false, + "out_mode": "out", + "attract": { + "enable": false, + "rotateX": 600, + "rotateY": 1200 + } + } + }, + "interactivity": { + "detect_on": "canvas", + "events": { + "onhover": { + "enable": false, + "mode": "repulse" + }, + "onclick": { + "enable": true, + "mode": "push" + }, + "resize": true + }, + "modes": { + "grab": { + "distance": 400, + "line_linked": { + "opacity": 1 + } + }, + "bubble": { + "distance": 400, + "size": 40, + "duration": 2, + "opacity": 8, + "speed": 3 + }, + "repulse": { + "distance": 200 + }, + "push": { + "particles_nb": 4 + }, + "remove": { + "particles_nb": 2 + } + } + }, + "retina_detect": true, + "config_demo": { + "hide_card": false, + "background_color": "#b61924", + "background_image": "", + "background_position": "50% 50%", + "background_repeat": "no-repeat", + "background_size": "cover" + } +} diff --git a/symfony.lock b/symfony.lock index 5d9ad95..46bac53 100644 --- a/symfony.lock +++ b/symfony.lock @@ -105,6 +105,18 @@ "friendsofphp/proxy-manager-lts": { "version": "v1.0.3" }, + "friendsofsymfony/jsrouting-bundle": { + "version": "2.3", + "recipe": { + "repo": "github.com/symfony/recipes-contrib", + "branch": "master", + "version": "2.3", + "ref": "a9f2e49180f75cdc71ae279a929c4b2e0638de84" + }, + "files": [ + "config/routes/fos_js_routing.yaml" + ] + }, "gedmo/doctrine-extensions": { "version": "v3.0.3" }, @@ -652,5 +664,8 @@ }, "webmozart/assert": { "version": "1.10.0" + }, + "willdurand/jsonp-callback-validator": { + "version": "v1.1.0" } } diff --git a/templates/module/_navigation.html.twig b/templates/module/_navigation.html.twig index 30c345a..7ad2ed8 100644 --- a/templates/module/_navigation.html.twig +++ b/templates/module/_navigation.html.twig @@ -53,7 +53,6 @@
  • - {{- item.label -}}
  • {% endfor %} diff --git a/templates/page/contact/default.html.twig b/templates/page/contact/default.html.twig index 511f7ab..23e6419 100644 --- a/templates/page/contact/default.html.twig +++ b/templates/page/contact/default.html.twig @@ -21,7 +21,7 @@ {% if showForm %}
    -
    +
    {{ form_label(form.name) }} diff --git a/webpack.config.js b/webpack.config.js index 839a70e..1cb544d 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -24,7 +24,7 @@ Encore .addEntry('app', './assets/js/app.js') // When enabled, Webpack "splits" your files into smaller pieces for greater optimization. - .splitEntryChunks() + // .splitEntryChunks() // will require an extra script tag for runtime.js // but, you probably want this, unless you're building a single-page app diff --git a/yarn.lock b/yarn.lock index 379d698..62ffdde 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1743,6 +1743,15 @@ clean-webpack-plugin@^3.0.0: "@types/webpack" "^4.4.31" del "^4.1.1" +clipboard@^2.0.0: + version "2.0.8" + resolved "https://registry.yarnpkg.com/clipboard/-/clipboard-2.0.8.tgz#ffc6c103dd2967a83005f3f61976aa4655a4cdba" + integrity sha512-Y6WO0unAIQp5bLmk1zdThRhgJt/x3ks6f30s3oE3H1mgIEU33XyQjEf8gsf6DxC7NPX8Y1SsNWjUjL/ywLnnbQ== + dependencies: + good-listener "^1.2.2" + select "^1.1.2" + tiny-emitter "^2.0.0" + cliui@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/cliui/-/cliui-5.0.0.tgz#deefcfdb2e800784aa34f46fa08e06851c7bbbc5" @@ -2263,6 +2272,11 @@ delayed-stream@~1.0.0: resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk= +delegate@^3.1.2: + version "3.2.0" + resolved "https://registry.yarnpkg.com/delegate/-/delegate-3.2.0.tgz#b66b71c3158522e8ab5744f720d8ca0c2af59166" + integrity sha512-IofjkYBZaZivn0V8nnsMJGBr4jVLxHDheKSW88PyxS5QC4Vo9ZbZVvhzlSxY87fVq3STR6r+4cGepyHkcWOQSw== + delegates@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" @@ -2963,6 +2977,13 @@ globule@^1.0.0: lodash "~4.17.10" minimatch "~3.0.2" +good-listener@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/good-listener/-/good-listener-1.2.2.tgz#d53b30cdf9313dffb7dc9a0d477096aa6d145c50" + integrity sha1-1TswzfkxPf+33JoNR3CWqm0UXFA= + dependencies: + delegate "^3.1.2" + graceful-fs@^4.1.2, graceful-fs@^4.2.4: version "4.2.6" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.6.tgz#ff040b2b0853b23c3d31027523706f1885d76bee" @@ -3737,6 +3758,11 @@ loud-rejection@^1.0.0: currently-unhandled "^0.4.1" signal-exit "^3.0.0" +lozad@^1.16.0: + version "1.16.0" + resolved "https://registry.yarnpkg.com/lozad/-/lozad-1.16.0.tgz#86ce732c64c69926ccdebb81c8c90bb3735948b4" + integrity sha512-JBr9WjvEFeKoyim3svo/gsQPTkgG/mOHJmDctZ/+U9H3ymUuvEkqpn8bdQMFsvTMcyRJrdJkLv0bXqGm0sP72w== + lru-cache@^4.0.1: version "4.1.5" resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.5.tgz#8bbe50ea85bed59bc9e33dcab8235ee9bcf443cd" @@ -4351,6 +4377,11 @@ particles.js@^2.0.0: resolved "https://registry.yarnpkg.com/particles.js/-/particles.js-2.0.0.tgz#21386c4328d6c7f96780a201e96eedfc09c736f6" integrity sha1-IThsQyjWx/lngKIB6W7t/AnHNvY= +particlesjs@^2.2.3: + version "2.2.3" + resolved "https://registry.yarnpkg.com/particlesjs/-/particlesjs-2.2.3.tgz#4d213ca740679fc1ccc772e8d864b884a091f37e" + integrity sha512-f0rL80Agqdsrnv/uhlLewv+LMdiXHu9MYPzMv0ZLPM06nLx3zmAXMH882fxqO6Uzb91csli8WlWaYd2XPN0d/Q== + path-exists@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-2.1.0.tgz#0feb6c64f0fc518d9a754dd5efb62c7022761f4b" @@ -4806,6 +4837,13 @@ pretty-error@^3.0.3: lodash "^4.17.20" renderkid "^2.0.5" +prismjs@^1.23.0: + version "1.23.0" + resolved "https://registry.yarnpkg.com/prismjs/-/prismjs-1.23.0.tgz#d3b3967f7d72440690497652a9d40ff046067f33" + integrity sha512-c29LVsqOaLbBHuIbsTxaKENh1N2EQBOHaWv7gkHN4dgRbxSREqDnDbtFJYdpPauS4YCplMSNCABQ6Eeor69bAA== + optionalDependencies: + clipboard "^2.0.0" + process-nextick-args@~2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" @@ -5259,6 +5297,11 @@ select-hose@^2.0.0: resolved "https://registry.yarnpkg.com/select-hose/-/select-hose-2.0.0.tgz#625d8658f865af43ec962bfc376a37359a4994ca" integrity sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo= +select@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/select/-/select-1.1.2.tgz#0e7350acdec80b1108528786ec1d4418d11b396d" + integrity sha1-DnNQrN7ICxEIUoeG7B1EGNEbOW0= + selfsigned@^1.10.8: version "1.10.8" resolved "https://registry.yarnpkg.com/selfsigned/-/selfsigned-1.10.8.tgz#0d17208b7d12c33f8eac85c41835f27fc3d81a30" @@ -5812,6 +5855,11 @@ timsort@^0.3.0: resolved "https://registry.yarnpkg.com/timsort/-/timsort-0.3.0.tgz#405411a8e7e6339fe64db9a234de11dc31e02bd4" integrity sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q= +tiny-emitter@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/tiny-emitter/-/tiny-emitter-2.1.0.tgz#1d1a56edfc51c43e863cbb5382a72330e3555423" + integrity sha512-NB6Dk1A9xgQPMoGqC5CVXn123gWyte215ONT5Pp5a0yt4nlEoO1ZWeCwpncaekPHXO60i47ihFnZPiRPjRMq4Q== + tinymce@^5.7.1: version "5.7.1" resolved "https://registry.yarnpkg.com/tinymce/-/tinymce-5.7.1.tgz#658a6fb4c7d53a8496cc00f8da33f4b8290da06d"