From c1d5145f4662917410564eb2a921f226221ff04a Mon Sep 17 00:00:00 2001
From: Brian Canini <canini.16@osu.edu>
Date: Thu, 9 Jul 2020 15:43:03 -0400
Subject: [PATCH] Updating drupal/webform (5.18.0 => 5.19.0)

---
 composer.json                                 |   2 +-
 composer.lock                                 |  16 +-
 vendor/composer/installed.json                |  16 +-
 .../webform/css/webform.element.rating.css    |  14 -
 web/modules/webform/css/webform.form.css      |  14 +
 .../webform/js/webform.element.rating.js      |   9 +-
 .../webform/js/webform.form.submit_once.js    |   2 +-
 .../webform_access/webform_access.info.yml    |   6 +-
 .../webform_attachment_test.info.yml          |   6 +-
 .../webform_attachment.info.yml               |   6 +-
 .../webform_bootstrap_test_module.info.yml    |   6 +-
 .../webform_bootstrap_test_theme.info.yml     |   6 +-
 .../webform_bootstrap.info.yml                |   6 +-
 .../webform_cards_test.info.yml               |   6 +-
 .../webform_cards/webform_cards.info.yml      |   6 +-
 ...ebform_clientside_validation_test.info.yml |   6 +-
 .../webform_clientside_validation.info.yml    |   6 +-
 ...bform_demo_application_evaluation.info.yml |   6 +-
 .../webform_demo_event_registration.info.yml  |   6 +-
 .../webform_demo_group.info.yml               |   6 +-
 .../webform_demo_region_contact.info.yml      |   6 +-
 .../webform_devel/webform_devel.info.yml      |   6 +-
 .../webform_editorial.info.yml                |   6 +-
 ...bformEntityPrintWebformExporterDeriver.php |   2 +-
 .../webform_entity_print_test.info.yml        |   6 +-
 .../webform_entity_print.info.yml             |   6 +-
 ...form_entity_print_attachment_test.info.yml |   6 +-
 .../webform_entity_print_attachment.info.yml  |   6 +-
 .../webform_example_composite.info.yml        |   6 +-
 .../webform_example_custom_form.info.yml      |   6 +-
 .../webform_example_element.info.yml          |   6 +-
 ...ebform_example_element_properties.info.yml |   6 +-
 .../webform_example_handler.info.yml          |   6 +-
 .../webform_example_remote_post.info.yml      |   6 +-
 .../webform_example_variant.info.yml          |   6 +-
 .../webform_examples.info.yml                 |   6 +-
 .../webform_examples_accessibility.info.yml   |   6 +-
 .../webform_group_test.info.yml               |   6 +-
 .../webform_group/webform_group.info.yml      |   6 +-
 .../webform_icheck_test.info.yml              |   6 +-
 .../webform_icheck/webform_icheck.info.yml    |   6 +-
 .../WebformImageSelectImagesDeleteForm.php    |   2 +-
 .../webform_image_select_test.info.yml        |   6 +-
 .../webform_image_select.info.yml             |   6 +-
 .../webform_jqueryui_buttons_test.info.yml    |   6 +-
 .../webform_jqueryui_buttons.info.yml         |   6 +-
 ...webform_location_geocomplete_test.info.yml |   6 +-
 .../webform_location_geocomplete.info.yml     |   6 +-
 .../webform_node_test_multiple.info.yml       |   6 +-
 .../webform_node_test_translation.info.yml    |   6 +-
 .../webform_node/webform_node.info.yml        |   6 +-
 ...ebform_options_custom_entity_test.info.yml |   6 +-
 .../webform_options_custom_test.info.yml      |   6 +-
 .../webform_options_custom.info.yml           |   6 +-
 .../webform_options_limit_test.info.yml       |   6 +-
 .../webform_options_limit.info.yml            |   6 +-
 .../webform_scheduled_email_test.info.yml     |   6 +-
 ..._scheduled_email_test_translation.info.yml |   6 +-
 .../webform_scheduled_email.info.yml          |   6 +-
 .../webform_share/webform_share.info.yml      |   6 +-
 .../webform_shortcuts.info.yml                |   6 +-
 ...orm_submission_export_import_test.info.yml |   6 +-
 .../webform_submission_export_import.info.yml |   6 +-
 .../webform_submission_log.info.yml           |   6 +-
 .../webform_templates.info.yml                |   6 +-
 .../webform_toggles_test.info.yml             |   6 +-
 .../webform_toggles/webform_toggles.info.yml  |   6 +-
 .../src/Form/WebformUiElementFormBase.php     |   2 +-
 .../modules/webform_ui/webform_ui.info.yml    |   6 +-
 .../webform/src/Element/WebformRating.php     |   3 +
 .../WebformSubmissionDevelGenerate.php        | 480 +----------------
 ...bformSubmissionDevelGenerateDeprecated.php |  28 +
 .../WebformSubmissionDevelGenerateTrait.php   | 496 ++++++++++++++++++
 .../WebformVariant/BrokenWebformVariant.php   |   4 +-
 .../webform/src/WebformAddonsManager.php      |  32 ++
 .../webform/src/WebformHelpManager.php        |   6 +
 .../webform/src/WebformOptionsListBuilder.php |   2 +-
 .../webform_test/webform_test.info.yml        |   6 +-
 .../webform_test_ajax.info.yml                |   6 +-
 .../webform_test_alter_hooks.info.yml         |   6 +-
 .../webform_test_block_context.info.yml       |   6 +-
 .../webform_test_block_custom.info.yml        |   6 +-
 ...bform_test_block_submission_limit.info.yml |   6 +-
 .../webform_test_config_performance.info.yml  |   6 +-
 .../webform_test_element.info.yml             |   6 +-
 .../webform_test_element_input_masks.info.yml |   6 +-
 ...bform_test_entity_reference_views.info.yml |   6 +-
 .../webform_test_exporter.info.yml            |   6 +-
 .../webform_test_handler.info.yml             |   6 +-
 ...webform_test_handler_invoke_alter.info.yml |   6 +-
 .../webform_test_handler_remote_post.info.yml |   6 +-
 .../webform_test_markup.info.yml              |   6 +-
 .../webform_test_message_custom.info.yml      |   6 +-
 .../webform_test_options.info.yml             |   6 +-
 .../webform_test_paragraphs.info.yml          |   6 +-
 .../webform_test_rest.info.yml                |   6 +-
 .../webform_test_submissions.info.yml         |   6 +-
 ...webform_test_third_party_settings.info.yml |   6 +-
 .../webform_test_translation.info.yml         |   6 +-
 ...webform_test_translation_lingotek.info.yml |   6 +-
 .../webform_test_validate.info.yml            |   6 +-
 .../webform_test_variant.info.yml             |   6 +-
 .../webform_test_views.info.yml               |   6 +-
 .../webform_test_wizard_custom.info.yml       |   6 +-
 .../Element/WebformElementRatingTest.php      |   6 +-
 .../webform_test_bartik.info.yml              |   6 +-
 web/modules/webform/webform.info.yml          |   6 +-
 web/modules/webform/webform.module            |  41 +-
 108 files changed, 914 insertions(+), 791 deletions(-)
 create mode 100644 web/modules/webform/src/Plugin/DevelGenerate/WebformSubmissionDevelGenerateDeprecated.php
 create mode 100644 web/modules/webform/src/Plugin/DevelGenerate/WebformSubmissionDevelGenerateTrait.php

diff --git a/composer.json b/composer.json
index b5126d0e57..4f4e66c40d 100644
--- a/composer.json
+++ b/composer.json
@@ -182,7 +182,7 @@
         "drupal/views_fieldsets": "3.3",
         "drupal/views_infinite_scroll": "1.7",
         "drupal/views_slideshow": "4.4",
-        "drupal/webform": "5.18",
+        "drupal/webform": "5.19",
         "drupal/webform_views": "5.0-alpha2",
         "drush-ops/behat-drush-endpoint": "0.0.5",
         "drush/drush": "9.7.1",
diff --git a/composer.lock b/composer.lock
index f236c21012..5542ece1b6 100644
--- a/composer.lock
+++ b/composer.lock
@@ -4,7 +4,7 @@
         "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
         "This file is @generated automatically"
     ],
-    "content-hash": "b2b8534ed98ce807918cdc6dee798bb7",
+    "content-hash": "7d04d999ffb2799cb603e1ebbf72a5cb",
     "packages": [
         {
             "name": "alchemy/zippy",
@@ -8700,17 +8700,17 @@
         },
         {
             "name": "drupal/webform",
-            "version": "5.18.0",
+            "version": "5.19.0",
             "source": {
                 "type": "git",
                 "url": "https://git.drupalcode.org/project/webform.git",
-                "reference": "8.x-5.18"
+                "reference": "8.x-5.19"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://ftp.drupal.org/files/projects/webform-8.x-5.18.zip",
-                "reference": "8.x-5.18",
-                "shasum": "539d0ba5bacc402cf6ea2a3419ae164703a09aa0"
+                "url": "https://ftp.drupal.org/files/projects/webform-8.x-5.19.zip",
+                "reference": "8.x-5.19",
+                "shasum": "90a2084c2647bca791cc8b18a7e2a3b49f3da7ea"
             },
             "require": {
                 "drupal/core": "^8.8"
@@ -8749,8 +8749,8 @@
             "type": "drupal-module",
             "extra": {
                 "drupal": {
-                    "version": "8.x-5.18",
-                    "datestamp": "1593034084",
+                    "version": "8.x-5.19",
+                    "datestamp": "1593681136",
                     "security-coverage": {
                         "status": "covered",
                         "message": "Covered by Drupal's security advisory policy"
diff --git a/vendor/composer/installed.json b/vendor/composer/installed.json
index b7ea18a483..f5f7de4731 100644
--- a/vendor/composer/installed.json
+++ b/vendor/composer/installed.json
@@ -8973,18 +8973,18 @@
     },
     {
         "name": "drupal/webform",
-        "version": "5.18.0",
-        "version_normalized": "5.18.0.0",
+        "version": "5.19.0",
+        "version_normalized": "5.19.0.0",
         "source": {
             "type": "git",
             "url": "https://git.drupalcode.org/project/webform.git",
-            "reference": "8.x-5.18"
+            "reference": "8.x-5.19"
         },
         "dist": {
             "type": "zip",
-            "url": "https://ftp.drupal.org/files/projects/webform-8.x-5.18.zip",
-            "reference": "8.x-5.18",
-            "shasum": "539d0ba5bacc402cf6ea2a3419ae164703a09aa0"
+            "url": "https://ftp.drupal.org/files/projects/webform-8.x-5.19.zip",
+            "reference": "8.x-5.19",
+            "shasum": "90a2084c2647bca791cc8b18a7e2a3b49f3da7ea"
         },
         "require": {
             "drupal/core": "^8.8"
@@ -9023,8 +9023,8 @@
         "type": "drupal-module",
         "extra": {
             "drupal": {
-                "version": "8.x-5.18",
-                "datestamp": "1593034084",
+                "version": "8.x-5.19",
+                "datestamp": "1593681136",
                 "security-coverage": {
                     "status": "covered",
                     "message": "Covered by Drupal's security advisory policy"
diff --git a/web/modules/webform/css/webform.element.rating.css b/web/modules/webform/css/webform.element.rating.css
index 49720d0b95..f338c6b212 100644
--- a/web/modules/webform/css/webform.element.rating.css
+++ b/web/modules/webform/css/webform.element.rating.css
@@ -3,20 +3,6 @@
  * Rating element styles.
  */
 
-/**
- * Visually hide the rating input.
- */
-html.js .form-webform-rating,
-html.js .form-webform-rating[style*="display: none"] {
-  display: inline !important;
-  position: absolute !important;
-  overflow: hidden;
-  clip: rect(1px, 1px, 1px, 1px);
-  width: 1px;
-  height: 1px;
-  word-wrap: normal;
-}
-
 div.svg div.rateit-range {
   background: url(../images/rating/star-normal.svg);
 }
diff --git a/web/modules/webform/css/webform.form.css b/web/modules/webform/css/webform.form.css
index 10a27400e5..201bf548f5 100644
--- a/web/modules/webform/css/webform.form.css
+++ b/web/modules/webform/css/webform.form.css
@@ -3,6 +3,20 @@
  * Webform form styles.
  */
 
+/**
+ * This allows components to be hidden when a JS plugin provides the UI.
+ */
+html.js .js-webform-visually-hidden,
+html.js .js-webform-visually-hidden[style*="display: none"] {
+  display: inline !important;
+  position: absolute !important;
+  overflow: hidden;
+  clip: rect(1px, 1px, 1px, 1px);
+  width: 1px;
+  height: 1px;
+  word-wrap: normal;
+}
+
 /**
  * Element states.
  * @see \Drupal\webform\WebformSubmissionConditionsValidator::buildForm
diff --git a/web/modules/webform/js/webform.element.rating.js b/web/modules/webform/js/webform.element.rating.js
index 52a16fcbbb..820e6705e3 100644
--- a/web/modules/webform/js/webform.element.rating.js
+++ b/web/modules/webform/js/webform.element.rating.js
@@ -17,16 +17,17 @@
    */
   Drupal.behaviors.webformRating = {
     attach: function (context) {
-      if (!$.fn.rateit) {
-        return;
-      }
-
       $(context)
         .find('[data-rateit-backingfld]')
         .once('webform-rating')
         .each(function () {
           var $rateit = $(this);
           var $input = $($rateit.attr('data-rateit-backingfld'));
+          if (!$.fn.rateit) {
+            $rateit.remove();
+            $input.removeClass('js-webform-visually-hidden');
+            return;
+          }
 
           // Rateit only initialize inputs on load.
           if (document.readyState === 'complete') {
diff --git a/web/modules/webform/js/webform.form.submit_once.js b/web/modules/webform/js/webform.form.submit_once.js
index cd0a2ccccd..6c2f440718 100644
--- a/web/modules/webform/js/webform.form.submit_once.js
+++ b/web/modules/webform/js/webform.form.submit_once.js
@@ -17,7 +17,7 @@
    */
   Drupal.behaviors.webformSubmitOnce = {
     attach: function (context) {
-      $('.js-webform-submit-once', context).each(function () {
+      $('.js-webform-submit-once', context).once('webform-submit-once').each(function () {
         var $form = $(this);
         // Remove data-webform-submitted.
         $form.removeData('webform-submitted');
diff --git a/web/modules/webform/modules/webform_access/webform_access.info.yml b/web/modules/webform/modules/webform_access/webform_access.info.yml
index 3ba8af7239..9bafe54c88 100644
--- a/web/modules/webform/modules/webform_access/webform_access.info.yml
+++ b/web/modules/webform/modules/webform_access/webform_access.info.yml
@@ -7,7 +7,7 @@ dependencies:
   - 'webform:webform'
   - 'webform:webform_node'
 
-# Information added by Drupal.org packaging script on 2020-06-24
-version: '8.x-5.18'
+# Information added by Drupal.org packaging script on 2020-07-02
+version: '8.x-5.19'
 project: 'webform'
-datestamp: 1593034091
+datestamp: 1593681142
diff --git a/web/modules/webform/modules/webform_attachment/tests/modules/webform_attachment_test/webform_attachment_test.info.yml b/web/modules/webform/modules/webform_attachment/tests/modules/webform_attachment_test/webform_attachment_test.info.yml
index f5efbf1c89..9fc10a2760 100644
--- a/web/modules/webform/modules/webform_attachment/tests/modules/webform_attachment_test/webform_attachment_test.info.yml
+++ b/web/modules/webform/modules/webform_attachment/tests/modules/webform_attachment_test/webform_attachment_test.info.yml
@@ -6,7 +6,7 @@ core_version_requirement: ^8.8
 dependencies:
   - 'webform:webform_attachment'
 
-# Information added by Drupal.org packaging script on 2020-06-24
-version: '8.x-5.18'
+# Information added by Drupal.org packaging script on 2020-07-02
+version: '8.x-5.19'
 project: 'webform'
-datestamp: 1593034091
+datestamp: 1593681142
diff --git a/web/modules/webform/modules/webform_attachment/webform_attachment.info.yml b/web/modules/webform/modules/webform_attachment/webform_attachment.info.yml
index 5670dca5d2..41db4f6beb 100644
--- a/web/modules/webform/modules/webform_attachment/webform_attachment.info.yml
+++ b/web/modules/webform/modules/webform_attachment/webform_attachment.info.yml
@@ -6,7 +6,7 @@ core_version_requirement: ^8.8
 dependencies:
   - 'webform:webform'
 
-# Information added by Drupal.org packaging script on 2020-06-24
-version: '8.x-5.18'
+# Information added by Drupal.org packaging script on 2020-07-02
+version: '8.x-5.19'
 project: 'webform'
-datestamp: 1593034091
+datestamp: 1593681142
diff --git a/web/modules/webform/modules/webform_bootstrap/tests/modules/webform_bootstrap_test_module/webform_bootstrap_test_module.info.yml b/web/modules/webform/modules/webform_bootstrap/tests/modules/webform_bootstrap_test_module/webform_bootstrap_test_module.info.yml
index 2168aee54e..8cf9b1528d 100644
--- a/web/modules/webform/modules/webform_bootstrap/tests/modules/webform_bootstrap_test_module/webform_bootstrap_test_module.info.yml
+++ b/web/modules/webform/modules/webform_bootstrap/tests/modules/webform_bootstrap_test_module/webform_bootstrap_test_module.info.yml
@@ -8,7 +8,7 @@ dependencies:
   - 'webform:webform'
   - 'webform:webform_bootstrap'
 
-# Information added by Drupal.org packaging script on 2020-06-24
-version: '8.x-5.18'
+# Information added by Drupal.org packaging script on 2020-07-02
+version: '8.x-5.19'
 project: 'webform'
-datestamp: 1593034091
+datestamp: 1593681142
diff --git a/web/modules/webform/modules/webform_bootstrap/tests/themes/webform_bootstrap_test_theme/webform_bootstrap_test_theme.info.yml b/web/modules/webform/modules/webform_bootstrap/tests/themes/webform_bootstrap_test_theme/webform_bootstrap_test_theme.info.yml
index 3e312777d2..21ec6199b2 100644
--- a/web/modules/webform/modules/webform_bootstrap/tests/themes/webform_bootstrap_test_theme/webform_bootstrap_test_theme.info.yml
+++ b/web/modules/webform/modules/webform_bootstrap/tests/themes/webform_bootstrap_test_theme/webform_bootstrap_test_theme.info.yml
@@ -22,7 +22,7 @@ regions:
 libraries:
   - 'webform_bootstrap_test_theme/global-styling'
 
-# Information added by Drupal.org packaging script on 2020-06-24
-version: '8.x-5.18'
+# Information added by Drupal.org packaging script on 2020-07-02
+version: '8.x-5.19'
 project: 'webform'
-datestamp: 1593034091
+datestamp: 1593681142
diff --git a/web/modules/webform/modules/webform_bootstrap/webform_bootstrap.info.yml b/web/modules/webform/modules/webform_bootstrap/webform_bootstrap.info.yml
index eec1a7c4c1..ba4951a7e0 100644
--- a/web/modules/webform/modules/webform_bootstrap/webform_bootstrap.info.yml
+++ b/web/modules/webform/modules/webform_bootstrap/webform_bootstrap.info.yml
@@ -6,7 +6,7 @@ core_version_requirement: ^8.8
 dependencies:
   - 'webform:webform'
 
-# Information added by Drupal.org packaging script on 2020-06-24
-version: '8.x-5.18'
+# Information added by Drupal.org packaging script on 2020-07-02
+version: '8.x-5.19'
 project: 'webform'
-datestamp: 1593034091
+datestamp: 1593681142
diff --git a/web/modules/webform/modules/webform_cards/tests/modules/webform_cards_test/webform_cards_test.info.yml b/web/modules/webform/modules/webform_cards/tests/modules/webform_cards_test/webform_cards_test.info.yml
index 4ed74b0701..fb9091ebc6 100644
--- a/web/modules/webform/modules/webform_cards/tests/modules/webform_cards_test/webform_cards_test.info.yml
+++ b/web/modules/webform/modules/webform_cards/tests/modules/webform_cards_test/webform_cards_test.info.yml
@@ -6,7 +6,7 @@ core_version_requirement: ^8.8
 dependencies:
   - 'webform:webform_cards'
 
-# Information added by Drupal.org packaging script on 2020-06-24
-version: '8.x-5.18'
+# Information added by Drupal.org packaging script on 2020-07-02
+version: '8.x-5.19'
 project: 'webform'
-datestamp: 1593034091
+datestamp: 1593681142
diff --git a/web/modules/webform/modules/webform_cards/webform_cards.info.yml b/web/modules/webform/modules/webform_cards/webform_cards.info.yml
index 1b9b3c80c3..9c14051876 100644
--- a/web/modules/webform/modules/webform_cards/webform_cards.info.yml
+++ b/web/modules/webform/modules/webform_cards/webform_cards.info.yml
@@ -9,7 +9,7 @@ dependencies:
   - 'webform:webform_clientside_validation'
   - 'drupal:inline_form_errors'
 
-# Information added by Drupal.org packaging script on 2020-06-24
-version: '8.x-5.18'
+# Information added by Drupal.org packaging script on 2020-07-02
+version: '8.x-5.19'
 project: 'webform'
-datestamp: 1593034091
+datestamp: 1593681142
diff --git a/web/modules/webform/modules/webform_clientside_validation/tests/modules/webform_clientside_validation_test/webform_clientside_validation_test.info.yml b/web/modules/webform/modules/webform_clientside_validation/tests/modules/webform_clientside_validation_test/webform_clientside_validation_test.info.yml
index 9646ddaf72..baed14609d 100644
--- a/web/modules/webform/modules/webform_clientside_validation/tests/modules/webform_clientside_validation_test/webform_clientside_validation_test.info.yml
+++ b/web/modules/webform/modules/webform_clientside_validation/tests/modules/webform_clientside_validation_test/webform_clientside_validation_test.info.yml
@@ -6,7 +6,7 @@ core_version_requirement: ^8.8
 dependencies:
   - 'webform:webform_clientside_validation'
 
-# Information added by Drupal.org packaging script on 2020-06-24
-version: '8.x-5.18'
+# Information added by Drupal.org packaging script on 2020-07-02
+version: '8.x-5.19'
 project: 'webform'
-datestamp: 1593034091
+datestamp: 1593681142
diff --git a/web/modules/webform/modules/webform_clientside_validation/webform_clientside_validation.info.yml b/web/modules/webform/modules/webform_clientside_validation/webform_clientside_validation.info.yml
index 09b6674fe4..982ae1b637 100644
--- a/web/modules/webform/modules/webform_clientside_validation/webform_clientside_validation.info.yml
+++ b/web/modules/webform/modules/webform_clientside_validation/webform_clientside_validation.info.yml
@@ -8,7 +8,7 @@ dependencies:
   - 'clientside_validation:clientside_validation'
   - 'clientside_validation:clientside_validation_jquery'
 
-# Information added by Drupal.org packaging script on 2020-06-24
-version: '8.x-5.18'
+# Information added by Drupal.org packaging script on 2020-07-02
+version: '8.x-5.19'
 project: 'webform'
-datestamp: 1593034091
+datestamp: 1593681142
diff --git a/web/modules/webform/modules/webform_demo/webform_demo_application_evaluation/webform_demo_application_evaluation.info.yml b/web/modules/webform/modules/webform_demo/webform_demo_application_evaluation/webform_demo_application_evaluation.info.yml
index 7f0e69cdff..04cf0903ee 100644
--- a/web/modules/webform/modules/webform_demo/webform_demo_application_evaluation/webform_demo_application_evaluation.info.yml
+++ b/web/modules/webform/modules/webform_demo/webform_demo_application_evaluation/webform_demo_application_evaluation.info.yml
@@ -9,7 +9,7 @@ dependencies:
   - 'webform:webform'
   - 'webform:webform_node'
 
-# Information added by Drupal.org packaging script on 2020-06-24
-version: '8.x-5.18'
+# Information added by Drupal.org packaging script on 2020-07-02
+version: '8.x-5.19'
 project: 'webform'
-datestamp: 1593034091
+datestamp: 1593681142
diff --git a/web/modules/webform/modules/webform_demo/webform_demo_event_registration/webform_demo_event_registration.info.yml b/web/modules/webform/modules/webform_demo/webform_demo_event_registration/webform_demo_event_registration.info.yml
index 9bfdd6c732..9d9f566248 100644
--- a/web/modules/webform/modules/webform_demo/webform_demo_event_registration/webform_demo_event_registration.info.yml
+++ b/web/modules/webform/modules/webform_demo/webform_demo_event_registration/webform_demo_event_registration.info.yml
@@ -13,7 +13,7 @@ dependencies:
   - 'webform:webform_scheduled_email'
   - 'webform:webform_share'
 
-# Information added by Drupal.org packaging script on 2020-06-24
-version: '8.x-5.18'
+# Information added by Drupal.org packaging script on 2020-07-02
+version: '8.x-5.19'
 project: 'webform'
-datestamp: 1593034091
+datestamp: 1593681142
diff --git a/web/modules/webform/modules/webform_demo/webform_demo_group/webform_demo_group.info.yml b/web/modules/webform/modules/webform_demo/webform_demo_group/webform_demo_group.info.yml
index dba2ae599a..a2bef7eb9b 100644
--- a/web/modules/webform/modules/webform_demo/webform_demo_group/webform_demo_group.info.yml
+++ b/web/modules/webform/modules/webform_demo/webform_demo_group/webform_demo_group.info.yml
@@ -11,7 +11,7 @@ dependencies:
   - 'webform:webform_node'
   - 'webform:webform_group'
 
-# Information added by Drupal.org packaging script on 2020-06-24
-version: '8.x-5.18'
+# Information added by Drupal.org packaging script on 2020-07-02
+version: '8.x-5.19'
 project: 'webform'
-datestamp: 1593034091
+datestamp: 1593681142
diff --git a/web/modules/webform/modules/webform_demo/webform_demo_region_contact/webform_demo_region_contact.info.yml b/web/modules/webform/modules/webform_demo/webform_demo_region_contact/webform_demo_region_contact.info.yml
index 5ce458166e..0d19bda837 100644
--- a/web/modules/webform/modules/webform_demo/webform_demo_region_contact/webform_demo_region_contact.info.yml
+++ b/web/modules/webform/modules/webform_demo/webform_demo_region_contact/webform_demo_region_contact.info.yml
@@ -10,7 +10,7 @@ dependencies:
   - 'webform:webform_node'
   - 'webform:webform_access'
 
-# Information added by Drupal.org packaging script on 2020-06-24
-version: '8.x-5.18'
+# Information added by Drupal.org packaging script on 2020-07-02
+version: '8.x-5.19'
 project: 'webform'
-datestamp: 1593034091
+datestamp: 1593681142
diff --git a/web/modules/webform/modules/webform_devel/webform_devel.info.yml b/web/modules/webform/modules/webform_devel/webform_devel.info.yml
index 92c48f8c45..e906910031 100644
--- a/web/modules/webform/modules/webform_devel/webform_devel.info.yml
+++ b/web/modules/webform/modules/webform_devel/webform_devel.info.yml
@@ -7,7 +7,7 @@ dependencies:
   - 'devel:devel'
   - 'webform:webform'
 
-# Information added by Drupal.org packaging script on 2020-06-24
-version: '8.x-5.18'
+# Information added by Drupal.org packaging script on 2020-07-02
+version: '8.x-5.19'
 project: 'webform'
-datestamp: 1593034091
+datestamp: 1593681142
diff --git a/web/modules/webform/modules/webform_editorial/webform_editorial.info.yml b/web/modules/webform/modules/webform_editorial/webform_editorial.info.yml
index d2fcb654ab..6233d63e71 100644
--- a/web/modules/webform/modules/webform_editorial/webform_editorial.info.yml
+++ b/web/modules/webform/modules/webform_editorial/webform_editorial.info.yml
@@ -8,7 +8,7 @@ hidden: true
 dependencies:
   - 'webform:webform'
 
-# Information added by Drupal.org packaging script on 2020-06-24
-version: '8.x-5.18'
+# Information added by Drupal.org packaging script on 2020-07-02
+version: '8.x-5.19'
 project: 'webform'
-datestamp: 1593034091
+datestamp: 1593681142
diff --git a/web/modules/webform/modules/webform_entity_print/src/Plugin/Derivative/WebformEntityPrintWebformExporterDeriver.php b/web/modules/webform/modules/webform_entity_print/src/Plugin/Derivative/WebformEntityPrintWebformExporterDeriver.php
index 48fe7b8f21..a42128396d 100644
--- a/web/modules/webform/modules/webform_entity_print/src/Plugin/Derivative/WebformEntityPrintWebformExporterDeriver.php
+++ b/web/modules/webform/modules/webform_entity_print/src/Plugin/Derivative/WebformEntityPrintWebformExporterDeriver.php
@@ -19,7 +19,7 @@ public function getDerivativeDefinitions($base_plugin_definition) {
       $this->derivatives[$id] = $base_plugin_definition;
       $this->derivatives[$id]['id'] = $id;
       $this->derivatives[$id]['label'] = $this->t('@label documents', $t_args);
-      $this->derivatives[$id]['description'] = $this->t('Exports results as @label documents');
+      $this->derivatives[$id]['description'] = $this->t('Exports results as @label documents', $t_args);
     }
     return $this->derivatives;
   }
diff --git a/web/modules/webform/modules/webform_entity_print/tests/modules/webform_entity_print_test/webform_entity_print_test.info.yml b/web/modules/webform/modules/webform_entity_print/tests/modules/webform_entity_print_test/webform_entity_print_test.info.yml
index 77aed7df4d..785507fd10 100644
--- a/web/modules/webform/modules/webform_entity_print/tests/modules/webform_entity_print_test/webform_entity_print_test.info.yml
+++ b/web/modules/webform/modules/webform_entity_print/tests/modules/webform_entity_print_test/webform_entity_print_test.info.yml
@@ -6,7 +6,7 @@ core_version_requirement: ^8.8
 dependencies:
   - 'webform:webform_entity_print'
 
-# Information added by Drupal.org packaging script on 2020-06-24
-version: '8.x-5.18'
+# Information added by Drupal.org packaging script on 2020-07-02
+version: '8.x-5.19'
 project: 'webform'
-datestamp: 1593034091
+datestamp: 1593681142
diff --git a/web/modules/webform/modules/webform_entity_print/webform_entity_print.info.yml b/web/modules/webform/modules/webform_entity_print/webform_entity_print.info.yml
index d9781f6f5f..e8a0a66e1c 100644
--- a/web/modules/webform/modules/webform_entity_print/webform_entity_print.info.yml
+++ b/web/modules/webform/modules/webform_entity_print/webform_entity_print.info.yml
@@ -7,7 +7,7 @@ dependencies:
   - 'webform:webform'
   - 'entity_print:entity_print'
 
-# Information added by Drupal.org packaging script on 2020-06-24
-version: '8.x-5.18'
+# Information added by Drupal.org packaging script on 2020-07-02
+version: '8.x-5.19'
 project: 'webform'
-datestamp: 1593034091
+datestamp: 1593681142
diff --git a/web/modules/webform/modules/webform_entity_print_attachment/tests/modules/webform_entity_print_attachment_test/webform_entity_print_attachment_test.info.yml b/web/modules/webform/modules/webform_entity_print_attachment/tests/modules/webform_entity_print_attachment_test/webform_entity_print_attachment_test.info.yml
index 1e12511a41..1c0a21f61b 100644
--- a/web/modules/webform/modules/webform_entity_print_attachment/tests/modules/webform_entity_print_attachment_test/webform_entity_print_attachment_test.info.yml
+++ b/web/modules/webform/modules/webform_entity_print_attachment/tests/modules/webform_entity_print_attachment_test/webform_entity_print_attachment_test.info.yml
@@ -6,7 +6,7 @@ core_version_requirement: ^8.8
 dependencies:
   - 'webform:webform_entity_print_attachment'
 
-# Information added by Drupal.org packaging script on 2020-06-24
-version: '8.x-5.18'
+# Information added by Drupal.org packaging script on 2020-07-02
+version: '8.x-5.19'
 project: 'webform'
-datestamp: 1593034091
+datestamp: 1593681142
diff --git a/web/modules/webform/modules/webform_entity_print_attachment/webform_entity_print_attachment.info.yml b/web/modules/webform/modules/webform_entity_print_attachment/webform_entity_print_attachment.info.yml
index ff5392e305..d7f5a99f83 100644
--- a/web/modules/webform/modules/webform_entity_print_attachment/webform_entity_print_attachment.info.yml
+++ b/web/modules/webform/modules/webform_entity_print_attachment/webform_entity_print_attachment.info.yml
@@ -7,7 +7,7 @@ dependencies:
   - 'webform:webform_attachment'
   - 'webform:webform_entity_print'
 
-# Information added by Drupal.org packaging script on 2020-06-24
-version: '8.x-5.18'
+# Information added by Drupal.org packaging script on 2020-07-02
+version: '8.x-5.19'
 project: 'webform'
-datestamp: 1593034091
+datestamp: 1593681142
diff --git a/web/modules/webform/modules/webform_example_composite/webform_example_composite.info.yml b/web/modules/webform/modules/webform_example_composite/webform_example_composite.info.yml
index ca2fe0518b..4f765fc8c7 100644
--- a/web/modules/webform/modules/webform_example_composite/webform_example_composite.info.yml
+++ b/web/modules/webform/modules/webform_example_composite/webform_example_composite.info.yml
@@ -6,7 +6,7 @@ core_version_requirement: ^8.8
 dependencies:
   - 'webform:webform'
 
-# Information added by Drupal.org packaging script on 2020-06-24
-version: '8.x-5.18'
+# Information added by Drupal.org packaging script on 2020-07-02
+version: '8.x-5.19'
 project: 'webform'
-datestamp: 1593034091
+datestamp: 1593681142
diff --git a/web/modules/webform/modules/webform_example_custom_form/webform_example_custom_form.info.yml b/web/modules/webform/modules/webform_example_custom_form/webform_example_custom_form.info.yml
index 7622b25699..969668b4ea 100644
--- a/web/modules/webform/modules/webform_example_custom_form/webform_example_custom_form.info.yml
+++ b/web/modules/webform/modules/webform_example_custom_form/webform_example_custom_form.info.yml
@@ -8,7 +8,7 @@ dependencies:
   - 'webform:webform'
   - 'webform:webform_devel'
 
-# Information added by Drupal.org packaging script on 2020-06-24
-version: '8.x-5.18'
+# Information added by Drupal.org packaging script on 2020-07-02
+version: '8.x-5.19'
 project: 'webform'
-datestamp: 1593034091
+datestamp: 1593681142
diff --git a/web/modules/webform/modules/webform_example_element/webform_example_element.info.yml b/web/modules/webform/modules/webform_example_element/webform_example_element.info.yml
index a48c6cc317..21d296d8dc 100644
--- a/web/modules/webform/modules/webform_example_element/webform_example_element.info.yml
+++ b/web/modules/webform/modules/webform_example_element/webform_example_element.info.yml
@@ -6,7 +6,7 @@ core_version_requirement: ^8.8
 dependencies:
   - 'webform:webform'
 
-# Information added by Drupal.org packaging script on 2020-06-24
-version: '8.x-5.18'
+# Information added by Drupal.org packaging script on 2020-07-02
+version: '8.x-5.19'
 project: 'webform'
-datestamp: 1593034091
+datestamp: 1593681142
diff --git a/web/modules/webform/modules/webform_example_element_properties/webform_example_element_properties.info.yml b/web/modules/webform/modules/webform_example_element_properties/webform_example_element_properties.info.yml
index c53e13a9f9..c406002014 100644
--- a/web/modules/webform/modules/webform_example_element_properties/webform_example_element_properties.info.yml
+++ b/web/modules/webform/modules/webform_example_element_properties/webform_example_element_properties.info.yml
@@ -7,7 +7,7 @@ dependencies:
   - 'webform:webform'
   - 'webform:webform_ui'
 
-# Information added by Drupal.org packaging script on 2020-06-24
-version: '8.x-5.18'
+# Information added by Drupal.org packaging script on 2020-07-02
+version: '8.x-5.19'
 project: 'webform'
-datestamp: 1593034091
+datestamp: 1593681142
diff --git a/web/modules/webform/modules/webform_example_handler/webform_example_handler.info.yml b/web/modules/webform/modules/webform_example_handler/webform_example_handler.info.yml
index 32f04e71be..740dbd9eb7 100644
--- a/web/modules/webform/modules/webform_example_handler/webform_example_handler.info.yml
+++ b/web/modules/webform/modules/webform_example_handler/webform_example_handler.info.yml
@@ -6,7 +6,7 @@ core_version_requirement: ^8.8
 dependencies:
   - 'webform:webform'
 
-# Information added by Drupal.org packaging script on 2020-06-24
-version: '8.x-5.18'
+# Information added by Drupal.org packaging script on 2020-07-02
+version: '8.x-5.19'
 project: 'webform'
-datestamp: 1593034091
+datestamp: 1593681142
diff --git a/web/modules/webform/modules/webform_example_remote_post/webform_example_remote_post.info.yml b/web/modules/webform/modules/webform_example_remote_post/webform_example_remote_post.info.yml
index abb68e9e7d..fef24e31d0 100644
--- a/web/modules/webform/modules/webform_example_remote_post/webform_example_remote_post.info.yml
+++ b/web/modules/webform/modules/webform_example_remote_post/webform_example_remote_post.info.yml
@@ -7,7 +7,7 @@ dependencies:
   - 'token:token'
   - 'webform:webform'
 
-# Information added by Drupal.org packaging script on 2020-06-24
-version: '8.x-5.18'
+# Information added by Drupal.org packaging script on 2020-07-02
+version: '8.x-5.19'
 project: 'webform'
-datestamp: 1593034091
+datestamp: 1593681142
diff --git a/web/modules/webform/modules/webform_example_variant/webform_example_variant.info.yml b/web/modules/webform/modules/webform_example_variant/webform_example_variant.info.yml
index 27a12d9e06..0786a91d18 100644
--- a/web/modules/webform/modules/webform_example_variant/webform_example_variant.info.yml
+++ b/web/modules/webform/modules/webform_example_variant/webform_example_variant.info.yml
@@ -6,7 +6,7 @@ core_version_requirement: ^8.8
 dependencies:
   - 'webform:webform'
 
-# Information added by Drupal.org packaging script on 2020-06-24
-version: '8.x-5.18'
+# Information added by Drupal.org packaging script on 2020-07-02
+version: '8.x-5.19'
 project: 'webform'
-datestamp: 1593034091
+datestamp: 1593681142
diff --git a/web/modules/webform/modules/webform_examples/webform_examples.info.yml b/web/modules/webform/modules/webform_examples/webform_examples.info.yml
index f8ab38b146..6a7a041c0f 100644
--- a/web/modules/webform/modules/webform_examples/webform_examples.info.yml
+++ b/web/modules/webform/modules/webform_examples/webform_examples.info.yml
@@ -6,7 +6,7 @@ core_version_requirement: ^8.8
 dependencies:
   - 'webform:webform'
 
-# Information added by Drupal.org packaging script on 2020-06-24
-version: '8.x-5.18'
+# Information added by Drupal.org packaging script on 2020-07-02
+version: '8.x-5.19'
 project: 'webform'
-datestamp: 1593034091
+datestamp: 1593681142
diff --git a/web/modules/webform/modules/webform_examples_accessibility/webform_examples_accessibility.info.yml b/web/modules/webform/modules/webform_examples_accessibility/webform_examples_accessibility.info.yml
index 273125a1cc..d396c7eb47 100644
--- a/web/modules/webform/modules/webform_examples_accessibility/webform_examples_accessibility.info.yml
+++ b/web/modules/webform/modules/webform_examples_accessibility/webform_examples_accessibility.info.yml
@@ -6,7 +6,7 @@ core_version_requirement: ^8.8
 dependencies:
   - 'drupal:webform'
 
-# Information added by Drupal.org packaging script on 2020-06-24
-version: '8.x-5.18'
+# Information added by Drupal.org packaging script on 2020-07-02
+version: '8.x-5.19'
 project: 'webform'
-datestamp: 1593034091
+datestamp: 1593681142
diff --git a/web/modules/webform/modules/webform_group/tests/modules/webform_group_test/webform_group_test.info.yml b/web/modules/webform/modules/webform_group/tests/modules/webform_group_test/webform_group_test.info.yml
index 79ef40a2ef..69f9fa407b 100644
--- a/web/modules/webform/modules/webform_group/tests/modules/webform_group_test/webform_group_test.info.yml
+++ b/web/modules/webform/modules/webform_group/tests/modules/webform_group_test/webform_group_test.info.yml
@@ -7,7 +7,7 @@ dependencies:
   - 'webform:webform_group'
   - 'group:group_test_config'
 
-# Information added by Drupal.org packaging script on 2020-06-24
-version: '8.x-5.18'
+# Information added by Drupal.org packaging script on 2020-07-02
+version: '8.x-5.19'
 project: 'webform'
-datestamp: 1593034091
+datestamp: 1593681142
diff --git a/web/modules/webform/modules/webform_group/webform_group.info.yml b/web/modules/webform/modules/webform_group/webform_group.info.yml
index 58b7c78395..9770e984e0 100644
--- a/web/modules/webform/modules/webform_group/webform_group.info.yml
+++ b/web/modules/webform/modules/webform_group/webform_group.info.yml
@@ -10,7 +10,7 @@ dependencies:
   - 'group:group'
   - 'group:gnode'
 
-# Information added by Drupal.org packaging script on 2020-06-24
-version: '8.x-5.18'
+# Information added by Drupal.org packaging script on 2020-07-02
+version: '8.x-5.19'
 project: 'webform'
-datestamp: 1593034091
+datestamp: 1593681142
diff --git a/web/modules/webform/modules/webform_icheck/tests/modules/webform_icheck_test/webform_icheck_test.info.yml b/web/modules/webform/modules/webform_icheck/tests/modules/webform_icheck_test/webform_icheck_test.info.yml
index 566a524e82..3ceaf1dbce 100644
--- a/web/modules/webform/modules/webform_icheck/tests/modules/webform_icheck_test/webform_icheck_test.info.yml
+++ b/web/modules/webform/modules/webform_icheck/tests/modules/webform_icheck_test/webform_icheck_test.info.yml
@@ -6,7 +6,7 @@ core_version_requirement: ^8.8
 dependencies:
   - 'webform:webform_icheck'
 
-# Information added by Drupal.org packaging script on 2020-06-24
-version: '8.x-5.18'
+# Information added by Drupal.org packaging script on 2020-07-02
+version: '8.x-5.19'
 project: 'webform'
-datestamp: 1593034091
+datestamp: 1593681142
diff --git a/web/modules/webform/modules/webform_icheck/webform_icheck.info.yml b/web/modules/webform/modules/webform_icheck/webform_icheck.info.yml
index 6c4bea67fc..cb872068d3 100644
--- a/web/modules/webform/modules/webform_icheck/webform_icheck.info.yml
+++ b/web/modules/webform/modules/webform_icheck/webform_icheck.info.yml
@@ -6,7 +6,7 @@ core_version_requirement: ^8.8
 dependencies:
   - 'webform:webform'
 
-# Information added by Drupal.org packaging script on 2020-06-24
-version: '8.x-5.18'
+# Information added by Drupal.org packaging script on 2020-07-02
+version: '8.x-5.19'
 project: 'webform'
-datestamp: 1593034091
+datestamp: 1593681142
diff --git a/web/modules/webform/modules/webform_image_select/src/WebformImageSelectImagesDeleteForm.php b/web/modules/webform/modules/webform_image_select/src/WebformImageSelectImagesDeleteForm.php
index 58c52cf6c4..14b54e1687 100644
--- a/web/modules/webform/modules/webform_image_select/src/WebformImageSelectImagesDeleteForm.php
+++ b/web/modules/webform/modules/webform_image_select/src/WebformImageSelectImagesDeleteForm.php
@@ -39,7 +39,7 @@ public function getDetails() {
 
     $t_args = [
       '%label' => $this->getEntity()->label(),
-      '@entity-type' => $this->getEntity()->getEntityType()->getLowercaseLabel(),
+      '@entity-type' => $this->getEntity()->getEntityType()->getSingularLabel(),
     ];
 
     $details = [];
diff --git a/web/modules/webform/modules/webform_image_select/tests/modules/webform_image_select_test/webform_image_select_test.info.yml b/web/modules/webform/modules/webform_image_select/tests/modules/webform_image_select_test/webform_image_select_test.info.yml
index 6ac50dc105..66cea1d101 100644
--- a/web/modules/webform/modules/webform_image_select/tests/modules/webform_image_select_test/webform_image_select_test.info.yml
+++ b/web/modules/webform/modules/webform_image_select/tests/modules/webform_image_select_test/webform_image_select_test.info.yml
@@ -6,7 +6,7 @@ core_version_requirement: ^8.8
 dependencies:
   - 'webform:webform_image_select'
 
-# Information added by Drupal.org packaging script on 2020-06-24
-version: '8.x-5.18'
+# Information added by Drupal.org packaging script on 2020-07-02
+version: '8.x-5.19'
 project: 'webform'
-datestamp: 1593034091
+datestamp: 1593681142
diff --git a/web/modules/webform/modules/webform_image_select/webform_image_select.info.yml b/web/modules/webform/modules/webform_image_select/webform_image_select.info.yml
index ebe60bc11b..b536d9d211 100644
--- a/web/modules/webform/modules/webform_image_select/webform_image_select.info.yml
+++ b/web/modules/webform/modules/webform_image_select/webform_image_select.info.yml
@@ -6,7 +6,7 @@ core_version_requirement: ^8.8
 dependencies:
   - 'webform:webform'
 
-# Information added by Drupal.org packaging script on 2020-06-24
-version: '8.x-5.18'
+# Information added by Drupal.org packaging script on 2020-07-02
+version: '8.x-5.19'
 project: 'webform'
-datestamp: 1593034091
+datestamp: 1593681142
diff --git a/web/modules/webform/modules/webform_jqueryui_buttons/tests/modules/webform_jqueryui_buttons_test/webform_jqueryui_buttons_test.info.yml b/web/modules/webform/modules/webform_jqueryui_buttons/tests/modules/webform_jqueryui_buttons_test/webform_jqueryui_buttons_test.info.yml
index 20871efcea..2d2a1998df 100644
--- a/web/modules/webform/modules/webform_jqueryui_buttons/tests/modules/webform_jqueryui_buttons_test/webform_jqueryui_buttons_test.info.yml
+++ b/web/modules/webform/modules/webform_jqueryui_buttons/tests/modules/webform_jqueryui_buttons_test/webform_jqueryui_buttons_test.info.yml
@@ -6,7 +6,7 @@ core_version_requirement: ^8.8
 dependencies:
   - 'webform:webform_jqueryui_buttons'
 
-# Information added by Drupal.org packaging script on 2020-06-24
-version: '8.x-5.18'
+# Information added by Drupal.org packaging script on 2020-07-02
+version: '8.x-5.19'
 project: 'webform'
-datestamp: 1593034091
+datestamp: 1593681142
diff --git a/web/modules/webform/modules/webform_jqueryui_buttons/webform_jqueryui_buttons.info.yml b/web/modules/webform/modules/webform_jqueryui_buttons/webform_jqueryui_buttons.info.yml
index 15017bc972..8e8006cb86 100644
--- a/web/modules/webform/modules/webform_jqueryui_buttons/webform_jqueryui_buttons.info.yml
+++ b/web/modules/webform/modules/webform_jqueryui_buttons/webform_jqueryui_buttons.info.yml
@@ -6,7 +6,7 @@ core_version_requirement: ^8.8
 dependencies:
   - 'webform:webform'
 
-# Information added by Drupal.org packaging script on 2020-06-24
-version: '8.x-5.18'
+# Information added by Drupal.org packaging script on 2020-07-02
+version: '8.x-5.19'
 project: 'webform'
-datestamp: 1593034091
+datestamp: 1593681142
diff --git a/web/modules/webform/modules/webform_location_geocomplete/tests/modules/webform_location_geocomplete_test/webform_location_geocomplete_test.info.yml b/web/modules/webform/modules/webform_location_geocomplete/tests/modules/webform_location_geocomplete_test/webform_location_geocomplete_test.info.yml
index 80ae7bfa34..105f3f81da 100644
--- a/web/modules/webform/modules/webform_location_geocomplete/tests/modules/webform_location_geocomplete_test/webform_location_geocomplete_test.info.yml
+++ b/web/modules/webform/modules/webform_location_geocomplete/tests/modules/webform_location_geocomplete_test/webform_location_geocomplete_test.info.yml
@@ -6,7 +6,7 @@ core_version_requirement: ^8.8
 dependencies:
   - 'webform:webform_location_geocomplete'
 
-# Information added by Drupal.org packaging script on 2020-06-24
-version: '8.x-5.18'
+# Information added by Drupal.org packaging script on 2020-07-02
+version: '8.x-5.19'
 project: 'webform'
-datestamp: 1593034091
+datestamp: 1593681142
diff --git a/web/modules/webform/modules/webform_location_geocomplete/webform_location_geocomplete.info.yml b/web/modules/webform/modules/webform_location_geocomplete/webform_location_geocomplete.info.yml
index 58e4330a79..6b98829bec 100644
--- a/web/modules/webform/modules/webform_location_geocomplete/webform_location_geocomplete.info.yml
+++ b/web/modules/webform/modules/webform_location_geocomplete/webform_location_geocomplete.info.yml
@@ -6,7 +6,7 @@ core_version_requirement: ^8.8
 dependencies:
   - 'webform:webform'
 
-# Information added by Drupal.org packaging script on 2020-06-24
-version: '8.x-5.18'
+# Information added by Drupal.org packaging script on 2020-07-02
+version: '8.x-5.19'
 project: 'webform'
-datestamp: 1593034091
+datestamp: 1593681142
diff --git a/web/modules/webform/modules/webform_node/tests/modules/webform_node_test_multiple/webform_node_test_multiple.info.yml b/web/modules/webform/modules/webform_node/tests/modules/webform_node_test_multiple/webform_node_test_multiple.info.yml
index f3e733f401..48f1d65ae4 100644
--- a/web/modules/webform/modules/webform_node/tests/modules/webform_node_test_multiple/webform_node_test_multiple.info.yml
+++ b/web/modules/webform/modules/webform_node/tests/modules/webform_node_test_multiple/webform_node_test_multiple.info.yml
@@ -13,7 +13,7 @@ dependencies:
   - 'webform:webform'
   - 'webform:webform_node'
 
-# Information added by Drupal.org packaging script on 2020-06-24
-version: '8.x-5.18'
+# Information added by Drupal.org packaging script on 2020-07-02
+version: '8.x-5.19'
 project: 'webform'
-datestamp: 1593034091
+datestamp: 1593681142
diff --git a/web/modules/webform/modules/webform_node/tests/modules/webform_node_test_translation/webform_node_test_translation.info.yml b/web/modules/webform/modules/webform_node/tests/modules/webform_node_test_translation/webform_node_test_translation.info.yml
index a248b67830..9a50c8893f 100644
--- a/web/modules/webform/modules/webform_node/tests/modules/webform_node_test_translation/webform_node_test_translation.info.yml
+++ b/web/modules/webform/modules/webform_node/tests/modules/webform_node_test_translation/webform_node_test_translation.info.yml
@@ -9,7 +9,7 @@ dependencies:
   - 'webform:webform_test_translation'
   - 'drupal:content_translation'
 
-# Information added by Drupal.org packaging script on 2020-06-24
-version: '8.x-5.18'
+# Information added by Drupal.org packaging script on 2020-07-02
+version: '8.x-5.19'
 project: 'webform'
-datestamp: 1593034091
+datestamp: 1593681142
diff --git a/web/modules/webform/modules/webform_node/webform_node.info.yml b/web/modules/webform/modules/webform_node/webform_node.info.yml
index ea7e1856b1..cbd79e58e1 100644
--- a/web/modules/webform/modules/webform_node/webform_node.info.yml
+++ b/web/modules/webform/modules/webform_node/webform_node.info.yml
@@ -11,7 +11,7 @@ dependencies:
   - 'drupal:user'
   - 'webform:webform'
 
-# Information added by Drupal.org packaging script on 2020-06-24
-version: '8.x-5.18'
+# Information added by Drupal.org packaging script on 2020-07-02
+version: '8.x-5.19'
 project: 'webform'
-datestamp: 1593034091
+datestamp: 1593681142
diff --git a/web/modules/webform/modules/webform_options_custom/tests/modules/webform_options_custom_entity_test/webform_options_custom_entity_test.info.yml b/web/modules/webform/modules/webform_options_custom/tests/modules/webform_options_custom_entity_test/webform_options_custom_entity_test.info.yml
index 4eff688f62..e15027cc33 100644
--- a/web/modules/webform/modules/webform_options_custom/tests/modules/webform_options_custom_entity_test/webform_options_custom_entity_test.info.yml
+++ b/web/modules/webform/modules/webform_options_custom/tests/modules/webform_options_custom_entity_test/webform_options_custom_entity_test.info.yml
@@ -8,7 +8,7 @@ dependencies:
   - 'webform:webform_options_limit'
   - 'webform:webform_options_custom'
 
-# Information added by Drupal.org packaging script on 2020-06-24
-version: '8.x-5.18'
+# Information added by Drupal.org packaging script on 2020-07-02
+version: '8.x-5.19'
 project: 'webform'
-datestamp: 1593034091
+datestamp: 1593681142
diff --git a/web/modules/webform/modules/webform_options_custom/tests/modules/webform_options_custom_test/webform_options_custom_test.info.yml b/web/modules/webform/modules/webform_options_custom/tests/modules/webform_options_custom_test/webform_options_custom_test.info.yml
index 6da05c4e2e..1135576ac8 100644
--- a/web/modules/webform/modules/webform_options_custom/tests/modules/webform_options_custom_test/webform_options_custom_test.info.yml
+++ b/web/modules/webform/modules/webform_options_custom/tests/modules/webform_options_custom_test/webform_options_custom_test.info.yml
@@ -6,7 +6,7 @@ core_version_requirement: ^8.8
 dependencies:
   - 'webform:webform_options_custom'
 
-# Information added by Drupal.org packaging script on 2020-06-24
-version: '8.x-5.18'
+# Information added by Drupal.org packaging script on 2020-07-02
+version: '8.x-5.19'
 project: 'webform'
-datestamp: 1593034091
+datestamp: 1593681142
diff --git a/web/modules/webform/modules/webform_options_custom/webform_options_custom.info.yml b/web/modules/webform/modules/webform_options_custom/webform_options_custom.info.yml
index 5b47f0b413..6d934332fd 100644
--- a/web/modules/webform/modules/webform_options_custom/webform_options_custom.info.yml
+++ b/web/modules/webform/modules/webform_options_custom/webform_options_custom.info.yml
@@ -6,7 +6,7 @@ core_version_requirement: ^8.8
 dependencies:
   - 'webform:webform'
 
-# Information added by Drupal.org packaging script on 2020-06-24
-version: '8.x-5.18'
+# Information added by Drupal.org packaging script on 2020-07-02
+version: '8.x-5.19'
 project: 'webform'
-datestamp: 1593034091
+datestamp: 1593681142
diff --git a/web/modules/webform/modules/webform_options_limit/tests/modules/webform_options_limit_test/webform_options_limit_test.info.yml b/web/modules/webform/modules/webform_options_limit/tests/modules/webform_options_limit_test/webform_options_limit_test.info.yml
index e61d85ece4..0cb0e82b50 100644
--- a/web/modules/webform/modules/webform_options_limit/tests/modules/webform_options_limit_test/webform_options_limit_test.info.yml
+++ b/web/modules/webform/modules/webform_options_limit/tests/modules/webform_options_limit_test/webform_options_limit_test.info.yml
@@ -7,7 +7,7 @@ dependencies:
   - 'webform:webform'
   - 'webform:webform_options_limit'
 
-# Information added by Drupal.org packaging script on 2020-06-24
-version: '8.x-5.18'
+# Information added by Drupal.org packaging script on 2020-07-02
+version: '8.x-5.19'
 project: 'webform'
-datestamp: 1593034091
+datestamp: 1593681142
diff --git a/web/modules/webform/modules/webform_options_limit/webform_options_limit.info.yml b/web/modules/webform/modules/webform_options_limit/webform_options_limit.info.yml
index b93c788080..fb8b7a011c 100644
--- a/web/modules/webform/modules/webform_options_limit/webform_options_limit.info.yml
+++ b/web/modules/webform/modules/webform_options_limit/webform_options_limit.info.yml
@@ -6,7 +6,7 @@ core_version_requirement: ^8.8
 dependencies:
   - 'webform:webform'
 
-# Information added by Drupal.org packaging script on 2020-06-24
-version: '8.x-5.18'
+# Information added by Drupal.org packaging script on 2020-07-02
+version: '8.x-5.19'
 project: 'webform'
-datestamp: 1593034091
+datestamp: 1593681142
diff --git a/web/modules/webform/modules/webform_scheduled_email/tests/modules/webform_scheduled_email_test/webform_scheduled_email_test.info.yml b/web/modules/webform/modules/webform_scheduled_email/tests/modules/webform_scheduled_email_test/webform_scheduled_email_test.info.yml
index 6391cbd3c7..fd9e9ec37c 100644
--- a/web/modules/webform/modules/webform_scheduled_email/tests/modules/webform_scheduled_email_test/webform_scheduled_email_test.info.yml
+++ b/web/modules/webform/modules/webform_scheduled_email/tests/modules/webform_scheduled_email_test/webform_scheduled_email_test.info.yml
@@ -7,7 +7,7 @@ dependencies:
   - 'webform:webform'
   - 'webform:webform_scheduled_email'
 
-# Information added by Drupal.org packaging script on 2020-06-24
-version: '8.x-5.18'
+# Information added by Drupal.org packaging script on 2020-07-02
+version: '8.x-5.19'
 project: 'webform'
-datestamp: 1593034091
+datestamp: 1593681142
diff --git a/web/modules/webform/modules/webform_scheduled_email/tests/modules/webform_scheduled_email_test_translation/webform_scheduled_email_test_translation.info.yml b/web/modules/webform/modules/webform_scheduled_email/tests/modules/webform_scheduled_email_test_translation/webform_scheduled_email_test_translation.info.yml
index c31398584f..60cce0a1c7 100644
--- a/web/modules/webform/modules/webform_scheduled_email/tests/modules/webform_scheduled_email_test_translation/webform_scheduled_email_test_translation.info.yml
+++ b/web/modules/webform/modules/webform_scheduled_email/tests/modules/webform_scheduled_email_test_translation/webform_scheduled_email_test_translation.info.yml
@@ -10,7 +10,7 @@ dependencies:
   - 'webform:webform'
   - 'webform:webform_scheduled_email'
 
-# Information added by Drupal.org packaging script on 2020-06-24
-version: '8.x-5.18'
+# Information added by Drupal.org packaging script on 2020-07-02
+version: '8.x-5.19'
 project: 'webform'
-datestamp: 1593034091
+datestamp: 1593681142
diff --git a/web/modules/webform/modules/webform_scheduled_email/webform_scheduled_email.info.yml b/web/modules/webform/modules/webform_scheduled_email/webform_scheduled_email.info.yml
index 6319809853..6484ae453b 100644
--- a/web/modules/webform/modules/webform_scheduled_email/webform_scheduled_email.info.yml
+++ b/web/modules/webform/modules/webform_scheduled_email/webform_scheduled_email.info.yml
@@ -6,7 +6,7 @@ core_version_requirement: ^8.8
 dependencies:
   - 'webform:webform'
 
-# Information added by Drupal.org packaging script on 2020-06-24
-version: '8.x-5.18'
+# Information added by Drupal.org packaging script on 2020-07-02
+version: '8.x-5.19'
 project: 'webform'
-datestamp: 1593034091
+datestamp: 1593681142
diff --git a/web/modules/webform/modules/webform_share/webform_share.info.yml b/web/modules/webform/modules/webform_share/webform_share.info.yml
index 20348a2ed3..f307f51ee1 100644
--- a/web/modules/webform/modules/webform_share/webform_share.info.yml
+++ b/web/modules/webform/modules/webform_share/webform_share.info.yml
@@ -7,7 +7,7 @@ core_version_requirement: ^8.8
 dependencies:
   - 'webform:webform'
 
-# Information added by Drupal.org packaging script on 2020-06-24
-version: '8.x-5.18'
+# Information added by Drupal.org packaging script on 2020-07-02
+version: '8.x-5.19'
 project: 'webform'
-datestamp: 1593034091
+datestamp: 1593681142
diff --git a/web/modules/webform/modules/webform_shortcuts/webform_shortcuts.info.yml b/web/modules/webform/modules/webform_shortcuts/webform_shortcuts.info.yml
index c476bb64d1..78905deb32 100644
--- a/web/modules/webform/modules/webform_shortcuts/webform_shortcuts.info.yml
+++ b/web/modules/webform/modules/webform_shortcuts/webform_shortcuts.info.yml
@@ -7,7 +7,7 @@ dependencies:
   - 'webform:webform'
   - 'webform:webform_ui'
 
-# Information added by Drupal.org packaging script on 2020-06-24
-version: '8.x-5.18'
+# Information added by Drupal.org packaging script on 2020-07-02
+version: '8.x-5.19'
 project: 'webform'
-datestamp: 1593034091
+datestamp: 1593681142
diff --git a/web/modules/webform/modules/webform_submission_export_import/tests/modules/webform_submission_export_import_test/webform_submission_export_import_test.info.yml b/web/modules/webform/modules/webform_submission_export_import/tests/modules/webform_submission_export_import_test/webform_submission_export_import_test.info.yml
index 216f551af0..88ae2014ad 100644
--- a/web/modules/webform/modules/webform_submission_export_import/tests/modules/webform_submission_export_import_test/webform_submission_export_import_test.info.yml
+++ b/web/modules/webform/modules/webform_submission_export_import/tests/modules/webform_submission_export_import_test/webform_submission_export_import_test.info.yml
@@ -7,7 +7,7 @@ dependencies:
   - 'webform:webform_submission_export_import'
   - 'webform:webform_image_select'
 
-# Information added by Drupal.org packaging script on 2020-06-24
-version: '8.x-5.18'
+# Information added by Drupal.org packaging script on 2020-07-02
+version: '8.x-5.19'
 project: 'webform'
-datestamp: 1593034091
+datestamp: 1593681142
diff --git a/web/modules/webform/modules/webform_submission_export_import/webform_submission_export_import.info.yml b/web/modules/webform/modules/webform_submission_export_import/webform_submission_export_import.info.yml
index e92841e688..f3c6c2ebb1 100644
--- a/web/modules/webform/modules/webform_submission_export_import/webform_submission_export_import.info.yml
+++ b/web/modules/webform/modules/webform_submission_export_import/webform_submission_export_import.info.yml
@@ -6,7 +6,7 @@ core_version_requirement: ^8.8
 dependencies:
   - 'webform:webform'
 
-# Information added by Drupal.org packaging script on 2020-06-24
-version: '8.x-5.18'
+# Information added by Drupal.org packaging script on 2020-07-02
+version: '8.x-5.19'
 project: 'webform'
-datestamp: 1593034091
+datestamp: 1593681142
diff --git a/web/modules/webform/modules/webform_submission_log/webform_submission_log.info.yml b/web/modules/webform/modules/webform_submission_log/webform_submission_log.info.yml
index a100eca2ce..9382471d6c 100644
--- a/web/modules/webform/modules/webform_submission_log/webform_submission_log.info.yml
+++ b/web/modules/webform/modules/webform_submission_log/webform_submission_log.info.yml
@@ -6,7 +6,7 @@ core_version_requirement: ^8.8
 dependencies:
   - 'webform:webform'
 
-# Information added by Drupal.org packaging script on 2020-06-24
-version: '8.x-5.18'
+# Information added by Drupal.org packaging script on 2020-07-02
+version: '8.x-5.19'
 project: 'webform'
-datestamp: 1593034091
+datestamp: 1593681142
diff --git a/web/modules/webform/modules/webform_templates/webform_templates.info.yml b/web/modules/webform/modules/webform_templates/webform_templates.info.yml
index c49ca87ffb..5ee0597285 100644
--- a/web/modules/webform/modules/webform_templates/webform_templates.info.yml
+++ b/web/modules/webform/modules/webform_templates/webform_templates.info.yml
@@ -6,7 +6,7 @@ core_version_requirement: ^8.8
 dependencies:
   - 'webform:webform'
 
-# Information added by Drupal.org packaging script on 2020-06-24
-version: '8.x-5.18'
+# Information added by Drupal.org packaging script on 2020-07-02
+version: '8.x-5.19'
 project: 'webform'
-datestamp: 1593034091
+datestamp: 1593681142
diff --git a/web/modules/webform/modules/webform_toggles/tests/modules/webform_toggles_test/webform_toggles_test.info.yml b/web/modules/webform/modules/webform_toggles/tests/modules/webform_toggles_test/webform_toggles_test.info.yml
index 1bf80787b1..00a9a0bdac 100644
--- a/web/modules/webform/modules/webform_toggles/tests/modules/webform_toggles_test/webform_toggles_test.info.yml
+++ b/web/modules/webform/modules/webform_toggles/tests/modules/webform_toggles_test/webform_toggles_test.info.yml
@@ -6,7 +6,7 @@ core_version_requirement: ^8.8
 dependencies:
   - 'webform:webform_toggles'
 
-# Information added by Drupal.org packaging script on 2020-06-24
-version: '8.x-5.18'
+# Information added by Drupal.org packaging script on 2020-07-02
+version: '8.x-5.19'
 project: 'webform'
-datestamp: 1593034091
+datestamp: 1593681142
diff --git a/web/modules/webform/modules/webform_toggles/webform_toggles.info.yml b/web/modules/webform/modules/webform_toggles/webform_toggles.info.yml
index 114a8a6189..e036250a31 100644
--- a/web/modules/webform/modules/webform_toggles/webform_toggles.info.yml
+++ b/web/modules/webform/modules/webform_toggles/webform_toggles.info.yml
@@ -6,7 +6,7 @@ core_version_requirement: ^8.8
 dependencies:
   - 'webform:webform'
 
-# Information added by Drupal.org packaging script on 2020-06-24
-version: '8.x-5.18'
+# Information added by Drupal.org packaging script on 2020-07-02
+version: '8.x-5.19'
 project: 'webform'
-datestamp: 1593034091
+datestamp: 1593681142
diff --git a/web/modules/webform/modules/webform_ui/src/Form/WebformUiElementFormBase.php b/web/modules/webform/modules/webform_ui/src/Form/WebformUiElementFormBase.php
index e5f0773ba5..09be9680a0 100644
--- a/web/modules/webform/modules/webform_ui/src/Form/WebformUiElementFormBase.php
+++ b/web/modules/webform/modules/webform_ui/src/Form/WebformUiElementFormBase.php
@@ -451,7 +451,7 @@ public function submitForm(array &$form, FormStateInterface $form_state) {
     $this->messenger()->addStatus($this->t('%title has been @action.', $t_args));
 
     // Determine add element parent key.
-    $save_and_add_element = ($op === (string) $this->t('Save + Add element')) ? TRUE : FALSE;
+    $save_and_add_element = ((string) $op === (string) $this->t('Save + Add element')) ? TRUE : FALSE;
     $add_element = ($element_plugin->isContainer($this->getElement())) ? $key : $parent_key;
     $add_element = $add_element ? Html::getClass($add_element) : '_root_';
 
diff --git a/web/modules/webform/modules/webform_ui/webform_ui.info.yml b/web/modules/webform/modules/webform_ui/webform_ui.info.yml
index 30a6d1462c..28f783ef89 100644
--- a/web/modules/webform/modules/webform_ui/webform_ui.info.yml
+++ b/web/modules/webform/modules/webform_ui/webform_ui.info.yml
@@ -6,7 +6,7 @@ core_version_requirement: ^8.8
 dependencies:
   - 'webform:webform'
 
-# Information added by Drupal.org packaging script on 2020-06-24
-version: '8.x-5.18'
+# Information added by Drupal.org packaging script on 2020-07-02
+version: '8.x-5.19'
 project: 'webform'
-datestamp: 1593034091
+datestamp: 1593681142
diff --git a/web/modules/webform/src/Element/WebformRating.php b/web/modules/webform/src/Element/WebformRating.php
index 2d87b83c02..5ff2dd33cd 100644
--- a/web/modules/webform/src/Element/WebformRating.php
+++ b/web/modules/webform/src/Element/WebformRating.php
@@ -57,6 +57,9 @@ public static function processWebformRating(&$element, FormStateInterface $form_
    */
   public static function preRenderWebformRating(array $element) {
     $element['#attributes']['type'] = 'range';
+
+    $element['#attributes']['class'][] = 'js-webform-visually-hidden';
+
     Element::setAttributes($element, ['id', 'name', 'value', 'step', 'min', 'max']);
     static::setAttributes($element, ['form-webform-rating']);
 
diff --git a/web/modules/webform/src/Plugin/DevelGenerate/WebformSubmissionDevelGenerate.php b/web/modules/webform/src/Plugin/DevelGenerate/WebformSubmissionDevelGenerate.php
index 9174c0485a..9ddb6112a6 100644
--- a/web/modules/webform/src/Plugin/DevelGenerate/WebformSubmissionDevelGenerate.php
+++ b/web/modules/webform/src/Plugin/DevelGenerate/WebformSubmissionDevelGenerate.php
@@ -2,18 +2,8 @@
 
 namespace Drupal\webform\Plugin\DevelGenerate;
 
-use Drupal\Core\Database\Connection;
-use Drupal\Core\Entity\EntityTypeManagerInterface;
-use Drupal\Core\Form\FormStateInterface;
-use Drupal\Core\Messenger\MessengerInterface;
 use Drupal\Core\Plugin\ContainerFactoryPluginInterface;
-use Drupal\Core\Serialization\Yaml;
 use Drupal\devel_generate\DevelGenerateBase;
-use Drupal\webform\Utility\WebformArrayHelper;
-use Drupal\webform\WebformEntityReferenceManagerInterface;
-use Drupal\webform\WebformSubmissionGenerateInterface;
-use Symfony\Component\DependencyInjection\ContainerInterface;
-use Symfony\Component\HttpFoundation\RequestStack;
 
 /**
  * Provides a WebformSubmissionDevelGenerate plugin.
@@ -34,477 +24,13 @@
  */
 class WebformSubmissionDevelGenerate extends DevelGenerateBase implements ContainerFactoryPluginInterface {
 
-  /**
-   * Track in webform submission are being generated.
-   *
-   * @var bool
-   */
-  protected static $generatingSubmissions = FALSE;
-
-  /**
-   * The current request.
-   *
-   * @var null|\Symfony\Component\HttpFoundation\Request
-   */
-  protected $request;
-
-  /**
-   * The database object.
-   *
-   * @var object
-   */
-  protected $database;
-
-  /**
-   * The entity type manager.
-   *
-   * @var \Drupal\Core\Entity\EntityTypeManagerInterface
-   */
-  protected $entityTypeManager;
-
-  /**
-   * The webform storage.
-   *
-   * @var \Drupal\Core\Entity\EntityStorageInterface
-   */
-  protected $webformStorage;
-
-  /**
-   * The webform submission storage.
-   *
-   * @var \Drupal\Core\Entity\EntityStorageInterface
-   */
-  protected $webformSubmissionStorage;
-
-  /**
-   * The webform submission generation service.
-   *
-   * @var \Drupal\webform\WebformSubmissionGenerateInterface
-   */
-  protected $webformSubmissionGenerate;
-
-  /**
-   * The webform entity reference manager.
-   *
-   * @var \Drupal\webform\WebformEntityReferenceManagerInterface
-   */
-  protected $webformEntityReferenceManager;
-
-  /**
-   * The messenger.
-   *
-   * @var \Drupal\Core\Messenger\MessengerInterface
-   */
-  protected $messenger;
-
-  /**
-   * Constructs a WebformSubmissionDevelGenerate object.
-   *
-   * @param array $configuration
-   *   A configuration array containing information about the plugin instance.
-   * @param string $plugin_id
-   *   The plugin_id for the plugin instance.
-   * @param mixed $plugin_definition
-   *   The plugin implementation definition.
-   * @param \Symfony\Component\HttpFoundation\RequestStack $request_stack
-   *   The request stack.
-   * @param \Drupal\Core\Database\Connection $database
-   *   The database.
-   * @param \Drupal\Core\Entity\EntityTypeManagerInterface $entity_type_manager
-   *   The entity type manager.
-   * @param \Drupal\Core\Messenger\MessengerInterface $messenger
-   *   The messenger.
-   * @param \Drupal\webform\WebformSubmissionGenerateInterface $webform_submission_generate
-   *   The webform submission generator.
-   * @param \Drupal\webform\WebformEntityReferenceManagerInterface $webform_entity_reference_manager
-   *   The webform entity reference manager.
-   */
-  public function __construct(array $configuration, $plugin_id, $plugin_definition, RequestStack $request_stack, Connection $database, EntityTypeManagerInterface $entity_type_manager, MessengerInterface $messenger, WebformSubmissionGenerateInterface $webform_submission_generate, WebformEntityReferenceManagerInterface $webform_entity_reference_manager) {
-    parent::__construct($configuration, $plugin_id, $plugin_definition);
-
-    $this->request = $request_stack->getCurrentRequest();
-    $this->database = $database;
-    $this->entityTypeManager = $entity_type_manager;
-    $this->messenger = $messenger;
-    $this->webformSubmissionGenerate = $webform_submission_generate;
-    $this->webformEntityReferenceManager = $webform_entity_reference_manager;
-    $this->webformStorage = $entity_type_manager->getStorage('webform');
-    $this->webformSubmissionStorage = $entity_type_manager->getStorage('webform_submission');
-  }
-
-  /**
-   * {@inheritdoc}
-   */
-  public static function create(ContainerInterface $container, array $configuration, $plugin_id, $plugin_definition) {
-    return new static(
-      $configuration,
-      $plugin_id,
-      $plugin_definition,
-      $container->get('request_stack'),
-      $container->get('database'),
-      $container->get('entity_type.manager'),
-      $container->get('messenger'),
-      $container->get('webform_submission.generate'),
-      $container->get('webform.entity_reference_manager')
-    );
-  }
-
-  /**
-   * {@inheritdoc}
-   */
-  public function settingsForm(array $form, FormStateInterface $form_state) {
-    $form['message'] = [
-      '#type' => 'webform_message',
-      '#message_message' => $this->t('Please note that no emails will be sent while generating webform submissions.'),
-      '#message_type' => 'warning',
-    ];
-
-    $options = [];
-    foreach ($this->webformStorage->loadMultiple() as $webform) {
-      $options[$webform->id()] = $webform->label();
-    }
-
-    $webform_id = $this->request->get('webform_id');
-    $source_entity_type = $this->request->get('entity_type');
-    $source_entity_id = $this->request->get('entity_id');
-    $source_entity = ($source_entity_type && $source_entity_id) ? \Drupal::entityTypeManager()->getStorage($source_entity_type)->load($source_entity_id) : NULL;
-
-    if ($webform_id && isset($options[$webform_id])) {
-      $form['webform_ids'] = [
-        '#type' => 'value',
-        '#value' => [$webform_id => $webform_id],
-      ];
-      $form['webform'] = [
-        '#type' => 'item',
-        '#title' => $this->t('Webform'),
-        '#markup' => $options[$webform_id],
-      ];
-    }
-    else {
-      $form['webform_ids'] = [
-        '#type' => 'checkboxes',
-        '#title' => $this->t('Webform'),
-        '#description' => $this->t('Restrict submissions to these webforms.'),
-        '#required' => TRUE,
-        '#options' => $options,
-      ];
-    }
-
-    if ($source_entity) {
-      $form['submitted'] = [
-        '#type' => 'item',
-        '#title' => $this->t('Submitted to'),
-        '#markup' => $source_entity->toLink()->toString(),
-      ];
-      $form['entity-type'] = ['#type' => 'value', '#value' => $source_entity_type];
-      $form['entity-id'] = ['#type' => 'value', '#value' => $source_entity_id];
-    }
-    elseif ($webform_id && isset($options[$webform_id])) {
-      $form['entity-type'] = ['#type' => 'value', '#value' => ''];
-      $form['entity-id'] = ['#type' => 'value', '#value' => ''];
-    }
-    else {
-      $entity_types = \Drupal::service('entity_type.repository')->getEntityTypeLabels(TRUE);
-      $form['submitted'] = [
-        '#type' => 'item',
-        '#title' => $this->t('Submitted to'),
-      ];
-      $form['submitted']['container'] = [
-        '#prefix' => '<div class="container-inline">',
-        '#suffix' => '</div>',
-      ];
-      $form['submitted']['container']['entity-type'] = [
-        '#type' => 'select',
-        '#title' => $this->t('Entity type'),
-        '#title_display' => 'invisible',
-        '#empty_option' => $this->t('- None -'),
-        '#options' => $entity_types,
-        '#default_value' => $this->getSetting('entity-type'),
-      ];
-      $form['submitted']['container']['entity-id'] = [
-        '#type' => 'number',
-        '#title' => $this->t('Entity id'),
-        '#title_display' => 'invisible',
-        '#default_value' => $this->getSetting('entity-id'),
-        '#min' => 1,
-        '#size' => 10,
-        '#states' => [
-          'invisible' => [
-            ':input[name="entity-type"]' => ['value' => ''],
-          ],
-        ],
-      ];
-    }
-
-    $form['num'] = [
-      '#type' => 'number',
-      '#title' => $this->t('Number of submissions?'),
-      '#min' => 1,
-      '#required' => TRUE,
-      '#default_value' => $this->getSetting('num'),
-    ];
-
-    $form['kill'] = [
-      '#type' => 'checkbox',
-      '#title' => $this->t('Delete existing submissions in specified webform before generating new submissions'),
-      '#default_value' => $this->getSetting('kill'),
-    ];
-
-    $form['#validate'] = [[$this, 'validateForm']];
-    return $form;
-  }
-
-  /**
-   * Custom validation handler.
-   */
-  public function validateForm(array $form, FormStateInterface $form_state) {
-    $webform_ids = array_filter($form_state->getValue('webform_ids'));
-
-    // Let default webform validation handle requiring webform ids.
-    if (empty($webform_ids)) {
-      return;
-    }
-
-    $entity_type = $form_state->getValue('entity-type');
-    $entity_id = $form_state->getValue('entity-id');
-    if ($entity_type) {
-      if ($error = $this->validateEntity($webform_ids, $entity_type, $entity_id)) {
-        $form_state->setErrorByName('entity_type', $error);
-      }
-    }
-  }
-
-  /**
-   * {@inheritdoc}
-   */
-  public function generateElements(array $values) {
-    $this->generateSubmissions($values);
-  }
-
-  /**
-   * Generates submissions for a list of given webforms.
-   *
-   * @param array $values
-   *   The element values from the settings webform.
-   */
-  protected function generateSubmissions(array $values) {
-    static::$generatingSubmissions = TRUE;
-    if (!empty($values['kill'])) {
-      $this->deleteWebformSubmissions($values['webform_ids'], $values['entity-type'], $values['entity-id']);
-      $this->setMessage($this->t('Deleted existing submissions.'));
-    }
-    if (!empty($values['webform_ids'])) {
-      $this->initializeGenerate($values);
-      $start = time();
-      for ($i = 1; $i <= $values['num']; $i++) {
-        $this->generateSubmission($values);
-        if (function_exists('drush_log') && $i % drush_get_option('feedback', 1000) === 0) {
-          $now = time();
-          $dt_args = [
-            '@feedback' => drush_get_option('feedback', 1000),
-            '@rate' => (drush_get_option('feedback', 1000) * 60) / ($now - $start),
-          ];
-          drush_log(dt('Completed @feedback submissions (@rate submissions/min)', $dt_args), 'ok');
-          $start = $now;
-        }
-      }
-    }
-    $this->setMessage($this->formatPlural($values['num'], '1 submissions created.', 'Finished creating @count submissions'));
-    static::$generatingSubmissions = FALSE;
-  }
-
-  /**
-   * Deletes all submissions of given webforms.
-   *
-   * @param array $webform_ids
-   *   Array of webform ids.
-   * @param string|null $entity_type
-   *   A webform source entity type.
-   * @param int|null $entity_id
-   *   A webform source entity id.
-   */
-  protected function deleteWebformSubmissions(array $webform_ids, $entity_type = NULL, $entity_id = NULL) {
-    $webforms = $this->webformStorage->loadMultiple($webform_ids);
-    $entity = ($entity_type && $entity_id) ? $this->entityTypeManager->getStorage($entity_type)->load($entity_id) : NULL;
-    foreach ($webforms as $webform) {
-      $this->webformSubmissionStorage->deleteAll($webform, $entity);
-    }
-  }
-
-  /**
-   * Add 'users' that contains a list of uids.
-   *
-   * @param array $values
-   *   The element values from the settings webform.
-   */
-  protected function initializeGenerate(array &$values) {
-    // Set user id.$devel_generate_manager = \Drupal::service('plugin.manager.develgenerate')
-    $users = $this->getUsers();
-    $users = array_merge($users, ['0']);
-    $values['users'] = $users;
-
-    // Set created min and max.
-    $values['created_min'] = strtotime('-1 month');
-    $values['created_max'] = time();
-
-    // Set entity type and id default value.
-    $values += [
-      'num' => 50,
-      'entity-type' => '',
-      'entity-id' => '',
-    ];
-  }
-
-  /**
-   * Create one node. Used by both batch and non-batch code branches.
-   */
-  protected function generateSubmission(&$results) {
-    $webform_id = array_rand(array_filter($results['webform_ids']));
-    /** @var \Drupal\webform\WebformInterface $webform */
-    $webform = $this->webformStorage->load($webform_id);
-
-    $users = $results['users'];
-    $uid = $users[array_rand($users)];
-    $entity_type = $results['entity-type'];
-    $entity_id = $results['entity-id'];
-
-    // Get submission URL from source entity or webform.
-    $url = $webform->toUrl();
-    if ($entity_type && $entity_id) {
-      $source_entity = \Drupal::entityTypeManager()->getStorage($entity_type)->load($entity_id);
-      if ($source_entity->hasLinkTemplate('canonical')) {
-        $url = $source_entity->toUrl();
-      }
-    }
-
-    $timestamp = rand($results['created_min'], $results['created_max']);
-    $this->webformSubmissionStorage->create([
-      'webform_id' => $webform_id,
-      'entity_type' => $entity_type,
-      'entity_id' => $entity_id,
-      'uid' => $uid,
-      'remote_addr' => mt_rand(0, 255) . '.' . mt_rand(0, 255) . '.' . mt_rand(0, 255) . '.' . mt_rand(0, 255),
-      'uri' => preg_replace('#^' . base_path() . '#', '/', $url->toString()),
-      'data' => Yaml::encode($this->webformSubmissionGenerate->getData($webform)),
-      'created' => $timestamp,
-      'changed' => $timestamp,
-    ])->save();
-  }
+  use WebformSubmissionDevelGenerateTrait;
 
   /**
    * {@inheritdoc}
    */
-  public function validateDrushParams($args) {
-    $webform_id = array_shift($args);
-    $webform_ids = [$webform_id => $webform_id];
-    $values = [
-      'webform_ids' => $webform_ids,
-      'num' => array_shift($args) ?: 50,
-      'kill' => drush_get_option('kill') ?: FALSE,
-    ];
-
-    if (empty($webform_id)) {
-      return drush_set_error('DEVEL_GENERATE_INVALID_INPUT', dt('Webform id required'));
-    }
-
-    if (!$this->webformStorage->load($webform_id)) {
-      return drush_set_error('DEVEL_GENERATE_INVALID_INPUT', dt('Invalid webform name: @name', ['@name' => $webform_id]));
-    }
-
-    if ($this->isNumber($values['num']) === FALSE) {
-      return drush_set_error('DEVEL_GENERATE_INVALID_INPUT', dt('Invalid number of submissions: @num', ['@num' => $values['num']]));
-    }
-
-    $entity_type = drush_get_option('entity-type');
-    $entity_id = drush_get_option('entity-id');
-    if ($entity_type || $entity_id) {
-      if ($error = $this->validateEntity($webform_ids, $entity_type, $entity_id)) {
-        return drush_set_error('DEVEL_GENERATE_INVALID_INPUT', $error);
-      }
-      else {
-        $values['entity-type'] = $entity_type;
-        $values['entity-id'] = $entity_id;
-      }
-    }
-
-    return $values;
-  }
-
-  /**
-   * Retrieve 50 uids from the database.
-   *
-   * @return array
-   *   An array of uids.
-   */
-  protected function getUsers() {
-    $users = [];
-    $result = $this->database->queryRange('SELECT uid FROM {users}', 0, 50);
-    foreach ($result as $record) {
-      $users[] = $record->uid;
-    }
-    return $users;
-  }
-
-  /**
-   * Track if webform submissions are being generated.
-   *
-   * Used to block emails from being sent while using devel generate.
-   *
-   * @return bool
-   *   TRUE if webform submissions are being generated.
-   */
-  public static function isGeneratingSubmissions() {
-    return static::$generatingSubmissions;
-  }
-
-  /**
-   * Validate webform source entity type and id.
-   *
-   * @param array $webform_ids
-   *   An array webform ids.
-   * @param string $entity_type
-   *   An entity type.
-   * @param int $entity_id
-   *   An entity id.
-   *
-   * @return string
-   *   An error message or NULL if there are no validation errors.
-   */
-  protected function validateEntity(array $webform_ids, $entity_type, $entity_id) {
-    $t = function_exists('dt') ? 'dt' : 't';
-
-    if (!$entity_type) {
-      return $t('Entity type is required');
-    }
-
-    if (!$entity_id) {
-      return $t('Entity id is required');
-    }
-
-    $dt_args = ['@entity_type' => $entity_type, '@entity_id' => $entity_id];
-
-    $source_entity = $this->entityTypeManager->getStorage($entity_type)->load($entity_id);
-    if (!$source_entity) {
-      return $t('Unable to load @entity_type:@entity_id', $dt_args);
-    }
-
-    $dt_args['@title'] = $source_entity->label();
-
-    $webform_field_name = $this->webformEntityReferenceManager->getFieldName($source_entity);
-    if (!$webform_field_name) {
-      return $t("'@title' (@entity_type:@entity_id) does not have a 'webform' field.", $dt_args);
-    }
-
-    if (count($webform_ids) > 1) {
-      return $t("'@title' (@entity_type:@entity_id) can only be associated with a single webform.", $dt_args);
-    }
-
-    $dt_args['@webform_ids'] = WebformArrayHelper::toString($webform_ids, $t('or'));
-    if (!in_array($source_entity->webform->target_id, $webform_ids)) {
-      return $t("'@title' (@entity_type:@entity_id) does not have a '@webform_ids' webform associated with it.", $dt_args);
-    }
-
-    return NULL;
+  public function validateDrushParams(array $args, array $options = []) {
+    return $this->_validateDrushParams($args);
   }
 
 }
diff --git a/web/modules/webform/src/Plugin/DevelGenerate/WebformSubmissionDevelGenerateDeprecated.php b/web/modules/webform/src/Plugin/DevelGenerate/WebformSubmissionDevelGenerateDeprecated.php
new file mode 100644
index 0000000000..1fc0c4d58a
--- /dev/null
+++ b/web/modules/webform/src/Plugin/DevelGenerate/WebformSubmissionDevelGenerateDeprecated.php
@@ -0,0 +1,28 @@
+<?php
+
+namespace Drupal\webform\Plugin\DevelGenerate;
+
+use Drupal\Core\Plugin\ContainerFactoryPluginInterface;
+use Drupal\devel_generate\DevelGenerateBase;
+
+/**
+ * Provides a WebformSubmissionDevelGenerate deprecated plugin.
+ *
+ * Use deprecated generator because the devel_generate.module changed the
+ * DevelGenerateBaseInterface.
+ *
+ * @see https://www.drupal.org/project/webform/issues/3155654
+ * @see https://gitlab.com/drupalspoons/devel/-/issues/324
+ */
+class WebformSubmissionDevelGenerateDeprecated extends DevelGenerateBase implements ContainerFactoryPluginInterface {
+
+  use WebformSubmissionDevelGenerateTrait;
+
+  /**
+   * {@inheritdoc}
+   */
+  public function validateDrushParams($args) {
+    return $this->_validateDrushParams($args);
+  }
+
+}
diff --git a/web/modules/webform/src/Plugin/DevelGenerate/WebformSubmissionDevelGenerateTrait.php b/web/modules/webform/src/Plugin/DevelGenerate/WebformSubmissionDevelGenerateTrait.php
new file mode 100644
index 0000000000..978bada6e9
--- /dev/null
+++ b/web/modules/webform/src/Plugin/DevelGenerate/WebformSubmissionDevelGenerateTrait.php
@@ -0,0 +1,496 @@
+<?php
+
+namespace Drupal\webform\Plugin\DevelGenerate;
+
+use Drupal\Core\Database\Connection;
+use Drupal\Core\Entity\EntityTypeManagerInterface;
+use Drupal\Core\Form\FormStateInterface;
+use Drupal\Core\Messenger\MessengerInterface;
+use Drupal\Core\Serialization\Yaml;
+use Drupal\webform\Utility\WebformArrayHelper;
+use Drupal\webform\WebformEntityReferenceManagerInterface;
+use Drupal\webform\WebformSubmissionGenerateInterface;
+use Symfony\Component\DependencyInjection\ContainerInterface;
+use Symfony\Component\HttpFoundation\RequestStack;
+
+/**
+ * Provides a WebformSubmissionDevelGenerate trait.
+ *
+ * @see webform_devel_generate_info_alter()
+ */
+trait WebformSubmissionDevelGenerateTrait {
+
+  /**
+   * Track in webform submission are being generated.
+   *
+   * @var bool
+   */
+  protected static $generatingSubmissions = FALSE;
+
+  /**
+   * The current request.
+   *
+   * @var null|\Symfony\Component\HttpFoundation\Request
+   */
+  protected $request;
+
+  /**
+   * The database object.
+   *
+   * @var object
+   */
+  protected $database;
+
+  /**
+   * The entity type manager.
+   *
+   * @var \Drupal\Core\Entity\EntityTypeManagerInterface
+   */
+  protected $entityTypeManager;
+
+  /**
+   * The webform storage.
+   *
+   * @var \Drupal\Core\Entity\EntityStorageInterface
+   */
+  protected $webformStorage;
+
+  /**
+   * The webform submission storage.
+   *
+   * @var \Drupal\Core\Entity\EntityStorageInterface
+   */
+  protected $webformSubmissionStorage;
+
+  /**
+   * The webform submission generation service.
+   *
+   * @var \Drupal\webform\WebformSubmissionGenerateInterface
+   */
+  protected $webformSubmissionGenerate;
+
+  /**
+   * The webform entity reference manager.
+   *
+   * @var \Drupal\webform\WebformEntityReferenceManagerInterface
+   */
+  protected $webformEntityReferenceManager;
+
+  /**
+   * The messenger.
+   *
+   * @var \Drupal\Core\Messenger\MessengerInterface
+   */
+  protected $messenger;
+
+  /**
+   * Constructs a WebformSubmissionDevelGenerate object.
+   *
+   * @param array $configuration
+   *   A configuration array containing information about the plugin instance.
+   * @param string $plugin_id
+   *   The plugin_id for the plugin instance.
+   * @param mixed $plugin_definition
+   *   The plugin implementation definition.
+   * @param \Symfony\Component\HttpFoundation\RequestStack $request_stack
+   *   The request stack.
+   * @param \Drupal\Core\Database\Connection $database
+   *   The database.
+   * @param \Drupal\Core\Entity\EntityTypeManagerInterface $entity_type_manager
+   *   The entity type manager.
+   * @param \Drupal\Core\Messenger\MessengerInterface $messenger
+   *   The messenger.
+   * @param \Drupal\webform\WebformSubmissionGenerateInterface $webform_submission_generate
+   *   The webform submission generator.
+   * @param \Drupal\webform\WebformEntityReferenceManagerInterface $webform_entity_reference_manager
+   *   The webform entity reference manager.
+   */
+  public function __construct(array $configuration, $plugin_id, $plugin_definition, RequestStack $request_stack, Connection $database, EntityTypeManagerInterface $entity_type_manager, MessengerInterface $messenger, WebformSubmissionGenerateInterface $webform_submission_generate, WebformEntityReferenceManagerInterface $webform_entity_reference_manager) {
+    parent::__construct($configuration, $plugin_id, $plugin_definition);
+
+    $this->request = $request_stack->getCurrentRequest();
+    $this->database = $database;
+    $this->entityTypeManager = $entity_type_manager;
+    $this->messenger = $messenger;
+    $this->webformSubmissionGenerate = $webform_submission_generate;
+    $this->webformEntityReferenceManager = $webform_entity_reference_manager;
+    $this->webformStorage = $entity_type_manager->getStorage('webform');
+    $this->webformSubmissionStorage = $entity_type_manager->getStorage('webform_submission');
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public static function create(ContainerInterface $container, array $configuration, $plugin_id, $plugin_definition) {
+    return new static(
+      $configuration,
+      $plugin_id,
+      $plugin_definition,
+      $container->get('request_stack'),
+      $container->get('database'),
+      $container->get('entity_type.manager'),
+      $container->get('messenger'),
+      $container->get('webform_submission.generate'),
+      $container->get('webform.entity_reference_manager')
+    );
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function settingsForm(array $form, FormStateInterface $form_state) {
+    $form['message'] = [
+      '#type' => 'webform_message',
+      '#message_message' => $this->t('Please note that no emails will be sent while generating webform submissions.'),
+      '#message_type' => 'warning',
+    ];
+
+    $options = [];
+    foreach ($this->webformStorage->loadMultiple() as $webform) {
+      $options[$webform->id()] = $webform->label();
+    }
+
+    $webform_id = $this->request->get('webform_id');
+    $source_entity_type = $this->request->get('entity_type');
+    $source_entity_id = $this->request->get('entity_id');
+    $source_entity = ($source_entity_type && $source_entity_id) ? \Drupal::entityTypeManager()->getStorage($source_entity_type)->load($source_entity_id) : NULL;
+
+    if ($webform_id && isset($options[$webform_id])) {
+      $form['webform_ids'] = [
+        '#type' => 'value',
+        '#value' => [$webform_id => $webform_id],
+      ];
+      $form['webform'] = [
+        '#type' => 'item',
+        '#title' => $this->t('Webform'),
+        '#markup' => $options[$webform_id],
+      ];
+    }
+    else {
+      $form['webform_ids'] = [
+        '#type' => 'checkboxes',
+        '#title' => $this->t('Webform'),
+        '#description' => $this->t('Restrict submissions to these webforms.'),
+        '#required' => TRUE,
+        '#options' => $options,
+      ];
+    }
+
+    if ($source_entity) {
+      $form['submitted'] = [
+        '#type' => 'item',
+        '#title' => $this->t('Submitted to'),
+        '#markup' => $source_entity->toLink()->toString(),
+      ];
+      $form['entity-type'] = ['#type' => 'value', '#value' => $source_entity_type];
+      $form['entity-id'] = ['#type' => 'value', '#value' => $source_entity_id];
+    }
+    elseif ($webform_id && isset($options[$webform_id])) {
+      $form['entity-type'] = ['#type' => 'value', '#value' => ''];
+      $form['entity-id'] = ['#type' => 'value', '#value' => ''];
+    }
+    else {
+      $entity_types = \Drupal::service('entity_type.repository')->getEntityTypeLabels(TRUE);
+      $form['submitted'] = [
+        '#type' => 'item',
+        '#title' => $this->t('Submitted to'),
+      ];
+      $form['submitted']['container'] = [
+        '#prefix' => '<div class="container-inline">',
+        '#suffix' => '</div>',
+      ];
+      $form['submitted']['container']['entity-type'] = [
+        '#type' => 'select',
+        '#title' => $this->t('Entity type'),
+        '#title_display' => 'invisible',
+        '#empty_option' => $this->t('- None -'),
+        '#options' => $entity_types,
+        '#default_value' => $this->getSetting('entity-type'),
+      ];
+      $form['submitted']['container']['entity-id'] = [
+        '#type' => 'number',
+        '#title' => $this->t('Entity id'),
+        '#title_display' => 'invisible',
+        '#default_value' => $this->getSetting('entity-id'),
+        '#min' => 1,
+        '#size' => 10,
+        '#states' => [
+          'invisible' => [
+            ':input[name="entity-type"]' => ['value' => ''],
+          ],
+        ],
+      ];
+    }
+
+    $form['num'] = [
+      '#type' => 'number',
+      '#title' => $this->t('Number of submissions?'),
+      '#min' => 1,
+      '#required' => TRUE,
+      '#default_value' => $this->getSetting('num'),
+    ];
+
+    $form['kill'] = [
+      '#type' => 'checkbox',
+      '#title' => $this->t('Delete existing submissions in specified webform before generating new submissions'),
+      '#default_value' => $this->getSetting('kill'),
+    ];
+
+    $form['#validate'] = [[$this, 'validateForm']];
+    return $form;
+  }
+
+  /**
+   * Custom validation handler.
+   */
+  public function validateForm(array $form, FormStateInterface $form_state) {
+    $webform_ids = array_filter($form_state->getValue('webform_ids'));
+
+    // Let default webform validation handle requiring webform ids.
+    if (empty($webform_ids)) {
+      return;
+    }
+
+    $entity_type = $form_state->getValue('entity-type');
+    $entity_id = $form_state->getValue('entity-id');
+    if ($entity_type) {
+      if ($error = $this->validateEntity($webform_ids, $entity_type, $entity_id)) {
+        $form_state->setErrorByName('entity_type', $error);
+      }
+    }
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function generateElements(array $values) {
+    $this->generateSubmissions($values);
+  }
+
+  /**
+   * Generates submissions for a list of given webforms.
+   *
+   * @param array $values
+   *   The element values from the settings webform.
+   */
+  protected function generateSubmissions(array $values) {
+    static::$generatingSubmissions = TRUE;
+    if (!empty($values['kill'])) {
+      $this->deleteWebformSubmissions($values['webform_ids'], $values['entity-type'], $values['entity-id']);
+      $this->setMessage($this->t('Deleted existing submissions.'));
+    }
+    if (!empty($values['webform_ids'])) {
+      $this->initializeGenerate($values);
+      $start = time();
+      for ($i = 1; $i <= $values['num']; $i++) {
+        $this->generateSubmission($values);
+        if (function_exists('drush_log') && $i % drush_get_option('feedback', 1000) === 0) {
+          $now = time();
+          $dt_args = [
+            '@feedback' => drush_get_option('feedback', 1000),
+            '@rate' => (drush_get_option('feedback', 1000) * 60) / ($now - $start),
+          ];
+          drush_log(dt('Completed @feedback submissions (@rate submissions/min)', $dt_args), 'ok');
+          $start = $now;
+        }
+      }
+    }
+    $this->setMessage($this->formatPlural($values['num'], '1 submissions created.', 'Finished creating @count submissions'));
+    static::$generatingSubmissions = FALSE;
+  }
+
+  /**
+   * Deletes all submissions of given webforms.
+   *
+   * @param array $webform_ids
+   *   Array of webform ids.
+   * @param string|null $entity_type
+   *   A webform source entity type.
+   * @param int|null $entity_id
+   *   A webform source entity id.
+   */
+  protected function deleteWebformSubmissions(array $webform_ids, $entity_type = NULL, $entity_id = NULL) {
+    $webforms = $this->webformStorage->loadMultiple($webform_ids);
+    $entity = ($entity_type && $entity_id) ? $this->entityTypeManager->getStorage($entity_type)->load($entity_id) : NULL;
+    foreach ($webforms as $webform) {
+      $this->webformSubmissionStorage->deleteAll($webform, $entity);
+    }
+  }
+
+  /**
+   * Add 'users' that contains a list of uids.
+   *
+   * @param array $values
+   *   The element values from the settings webform.
+   */
+  protected function initializeGenerate(array &$values) {
+    // Set user id.$devel_generate_manager = \Drupal::service('plugin.manager.develgenerate')
+    $users = $this->getUsers();
+    $users = array_merge($users, ['0']);
+    $values['users'] = $users;
+
+    // Set created min and max.
+    $values['created_min'] = strtotime('-1 month');
+    $values['created_max'] = time();
+
+    // Set entity type and id default value.
+    $values += [
+      'num' => 50,
+      'entity-type' => '',
+      'entity-id' => '',
+    ];
+  }
+
+  /**
+   * Create one node. Used by both batch and non-batch code branches.
+   */
+  protected function generateSubmission(&$results) {
+    $webform_id = array_rand(array_filter($results['webform_ids']));
+    /** @var \Drupal\webform\WebformInterface $webform */
+    $webform = $this->webformStorage->load($webform_id);
+
+    $users = $results['users'];
+    $uid = $users[array_rand($users)];
+    $entity_type = $results['entity-type'];
+    $entity_id = $results['entity-id'];
+
+    // Get submission URL from source entity or webform.
+    $url = $webform->toUrl();
+    if ($entity_type && $entity_id) {
+      $source_entity = \Drupal::entityTypeManager()->getStorage($entity_type)->load($entity_id);
+      if ($source_entity->hasLinkTemplate('canonical')) {
+        $url = $source_entity->toUrl();
+      }
+    }
+
+    $timestamp = rand($results['created_min'], $results['created_max']);
+    $this->webformSubmissionStorage->create([
+      'webform_id' => $webform_id,
+      'entity_type' => $entity_type,
+      'entity_id' => $entity_id,
+      'uid' => $uid,
+      'remote_addr' => mt_rand(0, 255) . '.' . mt_rand(0, 255) . '.' . mt_rand(0, 255) . '.' . mt_rand(0, 255),
+      'uri' => preg_replace('#^' . base_path() . '#', '/', $url->toString()),
+      'data' => Yaml::encode($this->webformSubmissionGenerate->getData($webform)),
+      'created' => $timestamp,
+      'changed' => $timestamp,
+    ])->save();
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function _validateDrushParams($args) {
+    $webform_id = array_shift($args);
+    $webform_ids = [$webform_id => $webform_id];
+    $values = [
+      'webform_ids' => $webform_ids,
+      'num' => array_shift($args) ?: 50,
+      'kill' => drush_get_option('kill') ?: FALSE,
+    ];
+
+    if (empty($webform_id)) {
+      return drush_set_error('DEVEL_GENERATE_INVALID_INPUT', dt('Webform id required'));
+    }
+
+    if (!$this->webformStorage->load($webform_id)) {
+      return drush_set_error('DEVEL_GENERATE_INVALID_INPUT', dt('Invalid webform name: @name', ['@name' => $webform_id]));
+    }
+
+    if ($this->isNumber($values['num']) === FALSE) {
+      return drush_set_error('DEVEL_GENERATE_INVALID_INPUT', dt('Invalid number of submissions: @num', ['@num' => $values['num']]));
+    }
+
+    $entity_type = drush_get_option('entity-type');
+    $entity_id = drush_get_option('entity-id');
+    if ($entity_type || $entity_id) {
+      if ($error = $this->validateEntity($webform_ids, $entity_type, $entity_id)) {
+        return drush_set_error('DEVEL_GENERATE_INVALID_INPUT', $error);
+      }
+      else {
+        $values['entity-type'] = $entity_type;
+        $values['entity-id'] = $entity_id;
+      }
+    }
+
+    return $values;
+  }
+
+  /**
+   * Retrieve 50 uids from the database.
+   *
+   * @return array
+   *   An array of uids.
+   */
+  protected function getUsers() {
+    $users = [];
+    $result = $this->database->queryRange('SELECT uid FROM {users}', 0, 50);
+    foreach ($result as $record) {
+      $users[] = $record->uid;
+    }
+    return $users;
+  }
+
+  /**
+   * Track if webform submissions are being generated.
+   *
+   * Used to block emails from being sent while using devel generate.
+   *
+   * @return bool
+   *   TRUE if webform submissions are being generated.
+   */
+  public static function isGeneratingSubmissions() {
+    return static::$generatingSubmissions;
+  }
+
+  /**
+   * Validate webform source entity type and id.
+   *
+   * @param array $webform_ids
+   *   An array webform ids.
+   * @param string $entity_type
+   *   An entity type.
+   * @param int $entity_id
+   *   An entity id.
+   *
+   * @return string
+   *   An error message or NULL if there are no validation errors.
+   */
+  protected function validateEntity(array $webform_ids, $entity_type, $entity_id) {
+    $t = function_exists('dt') ? 'dt' : 't';
+
+    if (!$entity_type) {
+      return $t('Entity type is required');
+    }
+
+    if (!$entity_id) {
+      return $t('Entity id is required');
+    }
+
+    $dt_args = ['@entity_type' => $entity_type, '@entity_id' => $entity_id];
+
+    $source_entity = $this->entityTypeManager->getStorage($entity_type)->load($entity_id);
+    if (!$source_entity) {
+      return $t('Unable to load @entity_type:@entity_id', $dt_args);
+    }
+
+    $dt_args['@title'] = $source_entity->label();
+
+    $webform_field_name = $this->webformEntityReferenceManager->getFieldName($source_entity);
+    if (!$webform_field_name) {
+      return $t("'@title' (@entity_type:@entity_id) does not have a 'webform' field.", $dt_args);
+    }
+
+    if (count($webform_ids) > 1) {
+      return $t("'@title' (@entity_type:@entity_id) can only be associated with a single webform.", $dt_args);
+    }
+
+    $dt_args['@webform_ids'] = WebformArrayHelper::toString($webform_ids, $t('or'));
+    if (!in_array($source_entity->webform->target_id, $webform_ids)) {
+      return $t("'@title' (@entity_type:@entity_id) does not have a '@webform_ids' webform associated with it.", $dt_args);
+    }
+
+    return NULL;
+  }
+
+}
diff --git a/web/modules/webform/src/Plugin/WebformVariant/BrokenWebformVariant.php b/web/modules/webform/src/Plugin/WebformVariant/BrokenWebformVariant.php
index 43d74832c5..508e8fa77d 100644
--- a/web/modules/webform/src/Plugin/WebformVariant/BrokenWebformVariant.php
+++ b/web/modules/webform/src/Plugin/WebformVariant/BrokenWebformVariant.php
@@ -5,13 +5,13 @@
 use Drupal\webform\Plugin\WebformVariantBase;
 
 /**
- * Defines a fallback plugin for missing webform handler plugins.
+ * Defines a fallback plugin for missing webform variant plugins.
  *
  * @WebformVariant(
  *   id = "broken",
  *   label = @Translation("Broken/Missing"),
  *   category = @Translation("Broken"),
- *   description = @Translation("Broken/missing webform handler plugin.")
+ *   description = @Translation("Broken/missing webform variant plugin.")
  * )
  */
 class BrokenWebformVariant extends WebformVariantBase {
diff --git a/web/modules/webform/src/WebformAddonsManager.php b/web/modules/webform/src/WebformAddonsManager.php
index 6a1d8a67f7..f94c6bd81a 100644
--- a/web/modules/webform/src/WebformAddonsManager.php
+++ b/web/modules/webform/src/WebformAddonsManager.php
@@ -370,6 +370,14 @@ protected function initProjects() {
       'category' => 'enhancement',
     ];
 
+    // Enhancement: Webform IP Geo.
+    $projects['webform_ip_geo'] = [
+      'title' => $this->t('Webform IP Geo'),
+      'description' => $this->t('Provides a simple way to extract geo data from the IP of a webform submission.'),
+      'url' => Url::fromUri('https://www.drupal.org/project/webform_ip_geo'),
+      'category' => 'enhancement',
+    ];
+
     // Enhancement: Webform Navigation.
     $projects['webformnavigation'] = [
       'title' => $this->t('Webform Navigation'),
@@ -701,6 +709,14 @@ protected function initProjects() {
       'category' => 'integration',
     ];
 
+    // Integrations: Webform Hubspot Integration
+    $projects['hubspot_api_integration'] = [
+      'title' => $this->t('Webform Hubspot Integration'),
+      'description' => $this->t('Provides a Webform handler that integrates with Hubspot.'),
+      'url' => Url::fromUri('https://www.drupal.org/project/hubspot_api_integration'),
+      'category' => 'integration',
+    ];
+
     // Integration: Webform Jira Integration.
     $projects['webform_jira'] = [
       'title' => $this->t('Webform Jira Integration'),
@@ -709,6 +725,14 @@ protected function initProjects() {
       'category' => 'integration',
     ];
 
+    // Integrations: Lightweight Webform Mailchimp.
+    $projects['lwm'] = [
+      'title' => $this->t('Lightweight Webform Mailchimp'),
+      'description' => $this->t('Manage and processing a Mailchimp lightweight connection from a Drupal webform.'),
+      'url' => Url::fromUri('https://www.drupal.org/project/lwm'),
+      'category' => 'integration',
+    ];
+
     // Integrations: Webform MailChimp.
     $projects['webform_mailchimp'] = [
       'title' => $this->t('Webform MailChimp'),
@@ -765,6 +789,14 @@ protected function initProjects() {
       'category' => 'integration',
     ];
 
+    // Integrations: Webform SendGrid.
+    $projects['webform_sendgrid'] = [
+      'title' => $this->t('Webform SendGrid'),
+      'description' => $this->t('Provide a webform handler for sending submission data to SendGrids Contact/Marketing/Lists API.'),
+      'url' => Url::fromUri('https://www.drupal.org/project/webform_sendgrid'),
+      'category' => 'integration',
+    ];
+
     // Integrations: Webform Simplenews Handler.
     $projects['webform_simplenews_handler'] = [
       'title' => $this->t('Webform Simplenews Handler'),
diff --git a/web/modules/webform/src/WebformHelpManager.php b/web/modules/webform/src/WebformHelpManager.php
index 6c9e3157c8..5802ffe9e6 100644
--- a/web/modules/webform/src/WebformHelpManager.php
+++ b/web/modules/webform/src/WebformHelpManager.php
@@ -1364,6 +1364,12 @@ protected function initVideos() {
         'youtube_id' => 'WQG6163r9Rs',
         'presentation_id' => '1Mn7qlSR_njTZcGAM3PNQZR8Tvg7qtPhZFQja7Mj5uzI',
       ],
+      'everyone' => [
+        'title' => $this->t('Webforms for Everyone'),
+        'content' => $this->t('This presentation explores how site owners, site builders, and developers can leverage the Webform module for Drupal 8 to build complex and robust forms for their end-users.'),
+        'youtube_id' => 'zvilAbrczGM',
+        'presentation_id' => '1APpt-55Ht_WLZc656KfQUXUoIAb-PTOmbMwSYSAw6G4',
+      ],
     ];
 
     // WebWash (www.webwash.net/).
diff --git a/web/modules/webform/src/WebformOptionsListBuilder.php b/web/modules/webform/src/WebformOptionsListBuilder.php
index 769effb90c..d24ca4cdef 100644
--- a/web/modules/webform/src/WebformOptionsListBuilder.php
+++ b/web/modules/webform/src/WebformOptionsListBuilder.php
@@ -139,7 +139,7 @@ public function buildHeader() {
       'class' => [RESPONSIVE_PRIORITY_LOW],
     ];
     $header['used_by'] = [
-      'data' => $this->t('Used by Webforms / Composites'),
+      'data' => $this->t('Used by'),
       'class' => [RESPONSIVE_PRIORITY_LOW],
     ];
     return $header + parent::buildHeader();
diff --git a/web/modules/webform/tests/modules/webform_test/webform_test.info.yml b/web/modules/webform/tests/modules/webform_test/webform_test.info.yml
index 6e188a75bc..192c85b7ba 100644
--- a/web/modules/webform/tests/modules/webform_test/webform_test.info.yml
+++ b/web/modules/webform/tests/modules/webform_test/webform_test.info.yml
@@ -6,7 +6,7 @@ core_version_requirement: ^8.8
 dependencies:
   - 'webform:webform'
 
-# Information added by Drupal.org packaging script on 2020-06-24
-version: '8.x-5.18'
+# Information added by Drupal.org packaging script on 2020-07-02
+version: '8.x-5.19'
 project: 'webform'
-datestamp: 1593034091
+datestamp: 1593681142
diff --git a/web/modules/webform/tests/modules/webform_test_ajax/webform_test_ajax.info.yml b/web/modules/webform/tests/modules/webform_test_ajax/webform_test_ajax.info.yml
index cda4272d92..6ca3ee5ae9 100644
--- a/web/modules/webform/tests/modules/webform_test_ajax/webform_test_ajax.info.yml
+++ b/web/modules/webform/tests/modules/webform_test_ajax/webform_test_ajax.info.yml
@@ -7,7 +7,7 @@ dependencies:
   - 'drupal:block'
   - 'webform:webform'
 
-# Information added by Drupal.org packaging script on 2020-06-24
-version: '8.x-5.18'
+# Information added by Drupal.org packaging script on 2020-07-02
+version: '8.x-5.19'
 project: 'webform'
-datestamp: 1593034091
+datestamp: 1593681142
diff --git a/web/modules/webform/tests/modules/webform_test_alter_hooks/webform_test_alter_hooks.info.yml b/web/modules/webform/tests/modules/webform_test_alter_hooks/webform_test_alter_hooks.info.yml
index 68e15b3c16..344d5ab9e3 100644
--- a/web/modules/webform/tests/modules/webform_test_alter_hooks/webform_test_alter_hooks.info.yml
+++ b/web/modules/webform/tests/modules/webform_test_alter_hooks/webform_test_alter_hooks.info.yml
@@ -6,7 +6,7 @@ core_version_requirement: ^8.8
 dependencies:
   - 'webform:webform'
 
-# Information added by Drupal.org packaging script on 2020-06-24
-version: '8.x-5.18'
+# Information added by Drupal.org packaging script on 2020-07-02
+version: '8.x-5.19'
 project: 'webform'
-datestamp: 1593034091
+datestamp: 1593681142
diff --git a/web/modules/webform/tests/modules/webform_test_block_context/webform_test_block_context.info.yml b/web/modules/webform/tests/modules/webform_test_block_context/webform_test_block_context.info.yml
index 42df2e152f..0c01852553 100644
--- a/web/modules/webform/tests/modules/webform_test_block_context/webform_test_block_context.info.yml
+++ b/web/modules/webform/tests/modules/webform_test_block_context/webform_test_block_context.info.yml
@@ -7,7 +7,7 @@ dependencies:
   - 'drupal:block'
   - 'webform:webform'
 
-# Information added by Drupal.org packaging script on 2020-06-24
-version: '8.x-5.18'
+# Information added by Drupal.org packaging script on 2020-07-02
+version: '8.x-5.19'
 project: 'webform'
-datestamp: 1593034091
+datestamp: 1593681142
diff --git a/web/modules/webform/tests/modules/webform_test_block_custom/webform_test_block_custom.info.yml b/web/modules/webform/tests/modules/webform_test_block_custom/webform_test_block_custom.info.yml
index 9d499785bd..1b6e95c2bf 100644
--- a/web/modules/webform/tests/modules/webform_test_block_custom/webform_test_block_custom.info.yml
+++ b/web/modules/webform/tests/modules/webform_test_block_custom/webform_test_block_custom.info.yml
@@ -8,7 +8,7 @@ dependencies:
   - 'drupal:block_content'
   - 'webform:webform'
 
-# Information added by Drupal.org packaging script on 2020-06-24
-version: '8.x-5.18'
+# Information added by Drupal.org packaging script on 2020-07-02
+version: '8.x-5.19'
 project: 'webform'
-datestamp: 1593034091
+datestamp: 1593681142
diff --git a/web/modules/webform/tests/modules/webform_test_block_submission_limit/webform_test_block_submission_limit.info.yml b/web/modules/webform/tests/modules/webform_test_block_submission_limit/webform_test_block_submission_limit.info.yml
index 06517d7fb9..4dfe0da374 100644
--- a/web/modules/webform/tests/modules/webform_test_block_submission_limit/webform_test_block_submission_limit.info.yml
+++ b/web/modules/webform/tests/modules/webform_test_block_submission_limit/webform_test_block_submission_limit.info.yml
@@ -7,7 +7,7 @@ dependencies:
   - 'drupal:block'
   - 'webform:webform'
 
-# Information added by Drupal.org packaging script on 2020-06-24
-version: '8.x-5.18'
+# Information added by Drupal.org packaging script on 2020-07-02
+version: '8.x-5.19'
 project: 'webform'
-datestamp: 1593034091
+datestamp: 1593681142
diff --git a/web/modules/webform/tests/modules/webform_test_config_performance/webform_test_config_performance.info.yml b/web/modules/webform/tests/modules/webform_test_config_performance/webform_test_config_performance.info.yml
index 0bb77e50ec..b340fea19c 100644
--- a/web/modules/webform/tests/modules/webform_test_config_performance/webform_test_config_performance.info.yml
+++ b/web/modules/webform/tests/modules/webform_test_config_performance/webform_test_config_performance.info.yml
@@ -6,7 +6,7 @@ core_version_requirement: ^8.8
 dependencies:
   - 'webform:webform'
 
-# Information added by Drupal.org packaging script on 2020-06-24
-version: '8.x-5.18'
+# Information added by Drupal.org packaging script on 2020-07-02
+version: '8.x-5.19'
 project: 'webform'
-datestamp: 1593034091
+datestamp: 1593681142
diff --git a/web/modules/webform/tests/modules/webform_test_element/webform_test_element.info.yml b/web/modules/webform/tests/modules/webform_test_element/webform_test_element.info.yml
index d579311da5..edb2a67f28 100644
--- a/web/modules/webform/tests/modules/webform_test_element/webform_test_element.info.yml
+++ b/web/modules/webform/tests/modules/webform_test_element/webform_test_element.info.yml
@@ -6,7 +6,7 @@ core_version_requirement: ^8.8
 dependencies:
   - 'webform:webform'
 
-# Information added by Drupal.org packaging script on 2020-06-24
-version: '8.x-5.18'
+# Information added by Drupal.org packaging script on 2020-07-02
+version: '8.x-5.19'
 project: 'webform'
-datestamp: 1593034091
+datestamp: 1593681142
diff --git a/web/modules/webform/tests/modules/webform_test_element_input_masks/webform_test_element_input_masks.info.yml b/web/modules/webform/tests/modules/webform_test_element_input_masks/webform_test_element_input_masks.info.yml
index efc88f5185..1b66f8e1fa 100644
--- a/web/modules/webform/tests/modules/webform_test_element_input_masks/webform_test_element_input_masks.info.yml
+++ b/web/modules/webform/tests/modules/webform_test_element_input_masks/webform_test_element_input_masks.info.yml
@@ -6,7 +6,7 @@ core_version_requirement: ^8.8
 dependencies:
   - 'webform:webform'
 
-# Information added by Drupal.org packaging script on 2020-06-24
-version: '8.x-5.18'
+# Information added by Drupal.org packaging script on 2020-07-02
+version: '8.x-5.19'
 project: 'webform'
-datestamp: 1593034091
+datestamp: 1593681142
diff --git a/web/modules/webform/tests/modules/webform_test_entity_reference/webform_test_entity_reference_views.info.yml b/web/modules/webform/tests/modules/webform_test_entity_reference/webform_test_entity_reference_views.info.yml
index 805fd597b1..7fde616281 100644
--- a/web/modules/webform/tests/modules/webform_test_entity_reference/webform_test_entity_reference_views.info.yml
+++ b/web/modules/webform/tests/modules/webform_test_entity_reference/webform_test_entity_reference_views.info.yml
@@ -9,7 +9,7 @@ dependencies:
   - 'drupal:views'
   - 'webform:webform'
 
-# Information added by Drupal.org packaging script on 2020-06-24
-version: '8.x-5.18'
+# Information added by Drupal.org packaging script on 2020-07-02
+version: '8.x-5.19'
 project: 'webform'
-datestamp: 1593034091
+datestamp: 1593681142
diff --git a/web/modules/webform/tests/modules/webform_test_exporter/webform_test_exporter.info.yml b/web/modules/webform/tests/modules/webform_test_exporter/webform_test_exporter.info.yml
index b8c1c10af9..11871bb086 100644
--- a/web/modules/webform/tests/modules/webform_test_exporter/webform_test_exporter.info.yml
+++ b/web/modules/webform/tests/modules/webform_test_exporter/webform_test_exporter.info.yml
@@ -6,7 +6,7 @@ core_version_requirement: ^8.8
 dependencies:
   - 'webform:webform'
 
-# Information added by Drupal.org packaging script on 2020-06-24
-version: '8.x-5.18'
+# Information added by Drupal.org packaging script on 2020-07-02
+version: '8.x-5.19'
 project: 'webform'
-datestamp: 1593034091
+datestamp: 1593681142
diff --git a/web/modules/webform/tests/modules/webform_test_handler/webform_test_handler.info.yml b/web/modules/webform/tests/modules/webform_test_handler/webform_test_handler.info.yml
index 46f8bd120c..989457e2f8 100644
--- a/web/modules/webform/tests/modules/webform_test_handler/webform_test_handler.info.yml
+++ b/web/modules/webform/tests/modules/webform_test_handler/webform_test_handler.info.yml
@@ -6,7 +6,7 @@ core_version_requirement: ^8.8
 dependencies:
   - 'webform:webform'
 
-# Information added by Drupal.org packaging script on 2020-06-24
-version: '8.x-5.18'
+# Information added by Drupal.org packaging script on 2020-07-02
+version: '8.x-5.19'
 project: 'webform'
-datestamp: 1593034091
+datestamp: 1593681142
diff --git a/web/modules/webform/tests/modules/webform_test_handler_invoke_alter/webform_test_handler_invoke_alter.info.yml b/web/modules/webform/tests/modules/webform_test_handler_invoke_alter/webform_test_handler_invoke_alter.info.yml
index e60902c262..19bde0d1a5 100644
--- a/web/modules/webform/tests/modules/webform_test_handler_invoke_alter/webform_test_handler_invoke_alter.info.yml
+++ b/web/modules/webform/tests/modules/webform_test_handler_invoke_alter/webform_test_handler_invoke_alter.info.yml
@@ -6,7 +6,7 @@ core_version_requirement: ^8.8
 dependencies:
   - 'webform:webform'
 
-# Information added by Drupal.org packaging script on 2020-06-24
-version: '8.x-5.18'
+# Information added by Drupal.org packaging script on 2020-07-02
+version: '8.x-5.19'
 project: 'webform'
-datestamp: 1593034091
+datestamp: 1593681142
diff --git a/web/modules/webform/tests/modules/webform_test_handler_remote_post/webform_test_handler_remote_post.info.yml b/web/modules/webform/tests/modules/webform_test_handler_remote_post/webform_test_handler_remote_post.info.yml
index e25e8ee746..ccb1e766cc 100644
--- a/web/modules/webform/tests/modules/webform_test_handler_remote_post/webform_test_handler_remote_post.info.yml
+++ b/web/modules/webform/tests/modules/webform_test_handler_remote_post/webform_test_handler_remote_post.info.yml
@@ -6,7 +6,7 @@ core_version_requirement: ^8.8
 dependencies:
   - 'webform:webform'
 
-# Information added by Drupal.org packaging script on 2020-06-24
-version: '8.x-5.18'
+# Information added by Drupal.org packaging script on 2020-07-02
+version: '8.x-5.19'
 project: 'webform'
-datestamp: 1593034091
+datestamp: 1593681142
diff --git a/web/modules/webform/tests/modules/webform_test_markup/webform_test_markup.info.yml b/web/modules/webform/tests/modules/webform_test_markup/webform_test_markup.info.yml
index f817da315d..7fd811b733 100644
--- a/web/modules/webform/tests/modules/webform_test_markup/webform_test_markup.info.yml
+++ b/web/modules/webform/tests/modules/webform_test_markup/webform_test_markup.info.yml
@@ -6,7 +6,7 @@ core_version_requirement: ^8.8
 dependencies:
   - 'webform:webform'
 
-# Information added by Drupal.org packaging script on 2020-06-24
-version: '8.x-5.18'
+# Information added by Drupal.org packaging script on 2020-07-02
+version: '8.x-5.19'
 project: 'webform'
-datestamp: 1593034091
+datestamp: 1593681142
diff --git a/web/modules/webform/tests/modules/webform_test_message_custom/webform_test_message_custom.info.yml b/web/modules/webform/tests/modules/webform_test_message_custom/webform_test_message_custom.info.yml
index 9a74fddabf..d5735d5154 100644
--- a/web/modules/webform/tests/modules/webform_test_message_custom/webform_test_message_custom.info.yml
+++ b/web/modules/webform/tests/modules/webform_test_message_custom/webform_test_message_custom.info.yml
@@ -6,7 +6,7 @@ core_version_requirement: ^8.8
 dependencies:
   - 'webform:webform'
 
-# Information added by Drupal.org packaging script on 2020-06-24
-version: '8.x-5.18'
+# Information added by Drupal.org packaging script on 2020-07-02
+version: '8.x-5.19'
 project: 'webform'
-datestamp: 1593034091
+datestamp: 1593681142
diff --git a/web/modules/webform/tests/modules/webform_test_options/webform_test_options.info.yml b/web/modules/webform/tests/modules/webform_test_options/webform_test_options.info.yml
index 468721f67c..624a03a553 100644
--- a/web/modules/webform/tests/modules/webform_test_options/webform_test_options.info.yml
+++ b/web/modules/webform/tests/modules/webform_test_options/webform_test_options.info.yml
@@ -6,7 +6,7 @@ core_version_requirement: ^8.8
 dependencies:
   - 'webform:webform'
 
-# Information added by Drupal.org packaging script on 2020-06-24
-version: '8.x-5.18'
+# Information added by Drupal.org packaging script on 2020-07-02
+version: '8.x-5.19'
 project: 'webform'
-datestamp: 1593034091
+datestamp: 1593681142
diff --git a/web/modules/webform/tests/modules/webform_test_paragraphs/webform_test_paragraphs.info.yml b/web/modules/webform/tests/modules/webform_test_paragraphs/webform_test_paragraphs.info.yml
index 775273166b..04c3013ed0 100644
--- a/web/modules/webform/tests/modules/webform_test_paragraphs/webform_test_paragraphs.info.yml
+++ b/web/modules/webform/tests/modules/webform_test_paragraphs/webform_test_paragraphs.info.yml
@@ -7,7 +7,7 @@ dependencies:
   - 'paragraphs:paragraphs'
   - 'webform:webform'
 
-# Information added by Drupal.org packaging script on 2020-06-24
-version: '8.x-5.18'
+# Information added by Drupal.org packaging script on 2020-07-02
+version: '8.x-5.19'
 project: 'webform'
-datestamp: 1593034091
+datestamp: 1593681142
diff --git a/web/modules/webform/tests/modules/webform_test_rest/webform_test_rest.info.yml b/web/modules/webform/tests/modules/webform_test_rest/webform_test_rest.info.yml
index 7bed75d798..354f73abdc 100644
--- a/web/modules/webform/tests/modules/webform_test_rest/webform_test_rest.info.yml
+++ b/web/modules/webform/tests/modules/webform_test_rest/webform_test_rest.info.yml
@@ -9,7 +9,7 @@ dependencies:
   - 'drupal:serialization'
   - 'webform:webform'
 
-# Information added by Drupal.org packaging script on 2020-06-24
-version: '8.x-5.18'
+# Information added by Drupal.org packaging script on 2020-07-02
+version: '8.x-5.19'
 project: 'webform'
-datestamp: 1593034091
+datestamp: 1593681142
diff --git a/web/modules/webform/tests/modules/webform_test_submissions/webform_test_submissions.info.yml b/web/modules/webform/tests/modules/webform_test_submissions/webform_test_submissions.info.yml
index 196ff4f0bd..2aa6a70b91 100644
--- a/web/modules/webform/tests/modules/webform_test_submissions/webform_test_submissions.info.yml
+++ b/web/modules/webform/tests/modules/webform_test_submissions/webform_test_submissions.info.yml
@@ -7,7 +7,7 @@ dependencies:
   - 'drupal:node'
   - 'webform:webform'
 
-# Information added by Drupal.org packaging script on 2020-06-24
-version: '8.x-5.18'
+# Information added by Drupal.org packaging script on 2020-07-02
+version: '8.x-5.19'
 project: 'webform'
-datestamp: 1593034091
+datestamp: 1593681142
diff --git a/web/modules/webform/tests/modules/webform_test_third_party_settings/webform_test_third_party_settings.info.yml b/web/modules/webform/tests/modules/webform_test_third_party_settings/webform_test_third_party_settings.info.yml
index b8c6e91ac2..ea814cf0b7 100644
--- a/web/modules/webform/tests/modules/webform_test_third_party_settings/webform_test_third_party_settings.info.yml
+++ b/web/modules/webform/tests/modules/webform_test_third_party_settings/webform_test_third_party_settings.info.yml
@@ -6,7 +6,7 @@ core_version_requirement: ^8.8
 dependencies:
   - 'webform:webform'
 
-# Information added by Drupal.org packaging script on 2020-06-24
-version: '8.x-5.18'
+# Information added by Drupal.org packaging script on 2020-07-02
+version: '8.x-5.19'
 project: 'webform'
-datestamp: 1593034091
+datestamp: 1593681142
diff --git a/web/modules/webform/tests/modules/webform_test_translation/webform_test_translation.info.yml b/web/modules/webform/tests/modules/webform_test_translation/webform_test_translation.info.yml
index 5b3f63935f..44f5e96d74 100644
--- a/web/modules/webform/tests/modules/webform_test_translation/webform_test_translation.info.yml
+++ b/web/modules/webform/tests/modules/webform_test_translation/webform_test_translation.info.yml
@@ -9,7 +9,7 @@ dependencies:
   - 'drupal:locale'
   - 'webform:webform'
 
-# Information added by Drupal.org packaging script on 2020-06-24
-version: '8.x-5.18'
+# Information added by Drupal.org packaging script on 2020-07-02
+version: '8.x-5.19'
 project: 'webform'
-datestamp: 1593034091
+datestamp: 1593681142
diff --git a/web/modules/webform/tests/modules/webform_test_translation_lingotek/webform_test_translation_lingotek.info.yml b/web/modules/webform/tests/modules/webform_test_translation_lingotek/webform_test_translation_lingotek.info.yml
index 3f0613b655..16c8a62a84 100644
--- a/web/modules/webform/tests/modules/webform_test_translation_lingotek/webform_test_translation_lingotek.info.yml
+++ b/web/modules/webform/tests/modules/webform_test_translation_lingotek/webform_test_translation_lingotek.info.yml
@@ -10,7 +10,7 @@ dependencies:
   - 'lingotek:lingotek'
   - 'webform:webform'
 
-# Information added by Drupal.org packaging script on 2020-06-24
-version: '8.x-5.18'
+# Information added by Drupal.org packaging script on 2020-07-02
+version: '8.x-5.19'
 project: 'webform'
-datestamp: 1593034091
+datestamp: 1593681142
diff --git a/web/modules/webform/tests/modules/webform_test_validate/webform_test_validate.info.yml b/web/modules/webform/tests/modules/webform_test_validate/webform_test_validate.info.yml
index 514dbc79d7..f3a8a87407 100644
--- a/web/modules/webform/tests/modules/webform_test_validate/webform_test_validate.info.yml
+++ b/web/modules/webform/tests/modules/webform_test_validate/webform_test_validate.info.yml
@@ -6,7 +6,7 @@ core_version_requirement: ^8.8
 dependencies:
   - 'webform:webform'
 
-# Information added by Drupal.org packaging script on 2020-06-24
-version: '8.x-5.18'
+# Information added by Drupal.org packaging script on 2020-07-02
+version: '8.x-5.19'
 project: 'webform'
-datestamp: 1593034091
+datestamp: 1593681142
diff --git a/web/modules/webform/tests/modules/webform_test_variant/webform_test_variant.info.yml b/web/modules/webform/tests/modules/webform_test_variant/webform_test_variant.info.yml
index 719a4ec99b..4c339563ff 100644
--- a/web/modules/webform/tests/modules/webform_test_variant/webform_test_variant.info.yml
+++ b/web/modules/webform/tests/modules/webform_test_variant/webform_test_variant.info.yml
@@ -6,7 +6,7 @@ core_version_requirement: ^8.8
 dependencies:
   - 'webform:webform'
 
-# Information added by Drupal.org packaging script on 2020-06-24
-version: '8.x-5.18'
+# Information added by Drupal.org packaging script on 2020-07-02
+version: '8.x-5.19'
 project: 'webform'
-datestamp: 1593034091
+datestamp: 1593681142
diff --git a/web/modules/webform/tests/modules/webform_test_views/webform_test_views.info.yml b/web/modules/webform/tests/modules/webform_test_views/webform_test_views.info.yml
index a64713aea5..ed0990b8b6 100644
--- a/web/modules/webform/tests/modules/webform_test_views/webform_test_views.info.yml
+++ b/web/modules/webform/tests/modules/webform_test_views/webform_test_views.info.yml
@@ -9,7 +9,7 @@ dependencies:
   - 'drupal:views'
   - 'webform:webform'
 
-# Information added by Drupal.org packaging script on 2020-06-24
-version: '8.x-5.18'
+# Information added by Drupal.org packaging script on 2020-07-02
+version: '8.x-5.19'
 project: 'webform'
-datestamp: 1593034091
+datestamp: 1593681142
diff --git a/web/modules/webform/tests/modules/webform_test_wizard_custom/webform_test_wizard_custom.info.yml b/web/modules/webform/tests/modules/webform_test_wizard_custom/webform_test_wizard_custom.info.yml
index de9678e5ff..c932c6b275 100644
--- a/web/modules/webform/tests/modules/webform_test_wizard_custom/webform_test_wizard_custom.info.yml
+++ b/web/modules/webform/tests/modules/webform_test_wizard_custom/webform_test_wizard_custom.info.yml
@@ -6,7 +6,7 @@ core_version_requirement: ^8.8
 dependencies:
   - 'webform:webform'
 
-# Information added by Drupal.org packaging script on 2020-06-24
-version: '8.x-5.18'
+# Information added by Drupal.org packaging script on 2020-07-02
+version: '8.x-5.19'
 project: 'webform'
-datestamp: 1593034091
+datestamp: 1593681142
diff --git a/web/modules/webform/tests/src/Functional/Element/WebformElementRatingTest.php b/web/modules/webform/tests/src/Functional/Element/WebformElementRatingTest.php
index d005dc6775..b2528674fd 100644
--- a/web/modules/webform/tests/src/Functional/Element/WebformElementRatingTest.php
+++ b/web/modules/webform/tests/src/Functional/Element/WebformElementRatingTest.php
@@ -24,17 +24,17 @@ public function testRating() {
 
     // Check basic rating display.
     $this->assertRaw('<label for="edit-rating-basic">rating_basic</label>');
-    $this->assertRaw('<input data-drupal-selector="edit-rating-basic" type="range" id="edit-rating-basic" name="rating_basic" value="0" step="1" min="0" max="5" class="form-webform-rating" />');
+    $this->assertRaw('<input data-drupal-selector="edit-rating-basic" type="range" class="js-webform-visually-hidden form-webform-rating" id="edit-rating-basic" name="rating_basic" value="0" step="1" min="0" max="5" />');
     $this->assertRaw('<div class="rateit svg rateit-medium" data-rateit-min="0" data-rateit-max="5" data-rateit-step="1" data-rateit-resetable="false" data-rateit-readonly="false" data-rateit-backingfld="[data-drupal-selector=&quot;edit-rating-basic&quot;]" data-rateit-value="" data-rateit-starheight="24" data-rateit-starwidth="24">');
 
     // Check advanced rating display.
     $this->assertRaw('<label for="edit-rating-advanced">rating_advanced</label>');
-    $this->assertRaw('<input data-drupal-selector="edit-rating-advanced" type="range" id="edit-rating-advanced" name="rating_advanced" value="0" step="0.1" min="0" max="10" class="form-webform-rating" />');
+    $this->assertRaw('<input data-drupal-selector="edit-rating-advanced" type="range" class="js-webform-visually-hidden form-webform-rating" id="edit-rating-advanced" name="rating_advanced" value="0" step="0.1" min="0" max="10" />');
     $this->assertRaw('<div class="rateit svg rateit-large" data-rateit-min="0" data-rateit-max="10" data-rateit-step="0.1" data-rateit-resetable="true" data-rateit-readonly="false" data-rateit-backingfld="[data-drupal-selector=&quot;edit-rating-advanced&quot;]" data-rateit-value="" data-rateit-starheight="32" data-rateit-starwidth="32">');
 
     // Check required rating display.
     $this->assertRaw('<label for="edit-rating-required" class="js-form-required form-required">rating_required</label>');
-    $this->assertRaw('<input data-drupal-selector="edit-rating-required" type="range" id="edit-rating-required" name="rating_required" value="0" step="1" min="0" max="5" class="form-webform-rating required" required="required" aria-required="true" />');
+    $this->assertRaw('<input data-drupal-selector="edit-rating-required" type="range" class="js-webform-visually-hidden form-webform-rating required" id="edit-rating-required" name="rating_required" value="0" step="1" min="0" max="5" required="required" aria-required="true" />');
     $this->assertRaw('<div class="rateit svg rateit-medium" data-rateit-min="0" data-rateit-max="5" data-rateit-step="1" data-rateit-resetable="false" data-rateit-readonly="false" data-rateit-backingfld="[data-drupal-selector=&quot;edit-rating-required&quot;]" data-rateit-value="" data-rateit-starheight="24" data-rateit-starwidth="24"></div>');
 
     // Check processing.
diff --git a/web/modules/webform/tests/themes/webform_test_bartik/webform_test_bartik.info.yml b/web/modules/webform/tests/themes/webform_test_bartik/webform_test_bartik.info.yml
index e71d2497a7..69a6a04857 100644
--- a/web/modules/webform/tests/themes/webform_test_bartik/webform_test_bartik.info.yml
+++ b/web/modules/webform/tests/themes/webform_test_bartik/webform_test_bartik.info.yml
@@ -5,7 +5,7 @@ name: 'Webform Bartik test'
 description: 'Support theme for webform Bartik integration testing.'
 package: 'Webform Testing'
 
-# Information added by Drupal.org packaging script on 2020-06-24
-version: '8.x-5.18'
+# Information added by Drupal.org packaging script on 2020-07-02
+version: '8.x-5.19'
 project: 'webform'
-datestamp: 1593034091
+datestamp: 1593681142
diff --git a/web/modules/webform/webform.info.yml b/web/modules/webform/webform.info.yml
index b8b2b2e8ad..5b5fe1012d 100644
--- a/web/modules/webform/webform.info.yml
+++ b/web/modules/webform/webform.info.yml
@@ -8,7 +8,7 @@ dependencies:
   - 'drupal:field'
   - 'drupal:user'
 
-# Information added by Drupal.org packaging script on 2020-06-24
-version: '8.x-5.18'
+# Information added by Drupal.org packaging script on 2020-07-02
+version: '8.x-5.19'
 project: 'webform'
-datestamp: 1593034091
+datestamp: 1593681142
diff --git a/web/modules/webform/webform.module b/web/modules/webform/webform.module
index 3f17cedf03..d6d9163b69 100644
--- a/web/modules/webform/webform.module
+++ b/web/modules/webform/webform.module
@@ -386,11 +386,18 @@ function _webform_clear_webform_submission_list_cache_tag(EntityInterface $entit
  * Implements hook_mail().
  */
 function webform_mail($key, &$message, $params) {
-  // Never send emails when using devel generate to create 1000's of
-  // submissions.
-  if (\Drupal::moduleHandler()->moduleExists('devel_generate')
-    && \Drupal\webform\Plugin\DevelGenerate\WebformSubmissionDevelGenerate::isGeneratingSubmissions()) {
-    $message['send'] = FALSE;
+  // Never send emails when using devel generate to create
+  // 1000's of submissions.
+  if (\Drupal::moduleHandler()->moduleExists('devel_generate')) {
+    /** @var \Drupal\devel_generate\DevelGeneratePluginManager $devel_generate */
+    $devel_generate = \Drupal::service('plugin.manager.develgenerate');
+    $definition = $devel_generate->getDefinition('webform_submission', FALSE);
+    if ($definition) {
+      $class = $definition['class'];
+      if ($class::isGeneratingSubmissions()) {
+        $message['send'] = FALSE;
+      }
+    }
   }
 
   // Set default parameters.
@@ -747,6 +754,30 @@ function webform_process_states(array &$elements, $key = '#attributes') {
   WebformFormHelper::processStates($elements, $key);
 }
 
+/******************************************************************************/
+// Devel generate info hooks.
+/******************************************************************************/
+
+/**
+ * Implements hook_devel_generate_info_alter()
+ */
+function webform_devel_generate_info_alter(array &$generators) {
+  if (!isset($generators['webform_submission'])) {
+    return;
+  }
+
+  // Use deprecated generator because the devel_generate.module changed the
+  // DevelGenerateBaseInterface.
+  //
+  // @see \Drupal\webform\Plugin\DevelGenerate\WebformSubmissionDevelGenerateDeprecated
+  // @see https://www.drupal.org/project/webform/issues/3155654
+  // @see https://gitlab.com/drupalspoons/devel/-/issues/324
+  $info = \Drupal::service('extension.list.module')->getExtensionInfo('devel_generate');
+  if (!empty($info['version']) && strpos($info['version'], '8.x-') === 0) {
+    $generators['webform_submission']['class'] = 'Drupal\webform\Plugin\DevelGenerate\WebformSubmissionDevelGenerateDeprecated';
+  }
+}
+
 /******************************************************************************/
 // Element info hooks.
 /******************************************************************************/
-- 
GitLab